diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml
index cc924388..c7c1d650 100644
--- a/.github/workflows/dotnet.yml
+++ b/.github/workflows/dotnet.yml
@@ -24,28 +24,28 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
- dotnet-version: 8.0.x
+ dotnet-version: 9.x.x
- name: Restore dependencies
run: dotnet restore
- working-directory: ./src
+ working-directory: ./src/Chrysalis
- name: Build
run: dotnet build --no-restore
- working-directory: ./src
+ working-directory: ./src/Chrysalis
- name: Test
- run: dotnet test --no-build --verbosity normal
- working-directory: ./src
+ run: dotnet test --verbosity normal
+ working-directory: ./
- name: Publish
run: dotnet publish --no-restore
- working-directory: ./src
+ working-directory: ./src/Chrysalis
- name: Pack
run: dotnet pack --no-build -c Release -o out
- working-directory: ./src
+ working-directory: ./src/Chrysalis
- name: Push to NuGet
- run: dotnet nuget push ./src/out/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json
+ run: dotnet nuget push ./src/Chrysalis/out/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json
if: github.event_name == 'release'
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 99bf8c17..ca046922 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,4 +11,9 @@
**/obj/
**/bin-debug/
**/obj-debug/
-.DS_Store
\ No newline at end of file
+.DS_Store
+**/target
+
+out
+CLAUDE.md
+build
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 00000000..5d882494
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,45 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Attach to dotnet build",
+ "type": "coreclr",
+ "request": "attach",
+ "processId": "${command:pickProcess}"
+ },
+ {
+ "name": "Chrysalis.Network.Cli",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "build:network:cli",
+ "program": "${workspaceFolder}/src/Chrysalis.Network.Cli/bin/Debug/net9.0/Chrysalis.Network.Cli.dll",
+ "args": [],
+ "cwd": "${workspaceFolder}",
+ "stopAtEntry": false,
+ "console": "integratedTerminal"
+ },
+ {
+ // Use IntelliSense to find out which attributes exist for C# debugging
+ // Use hover for the description of the existing attributes
+ // For further information visit https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md
+ "name": ".NET Core Launch (console)",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "build",
+ // If you have changed target frameworks, make sure to update the program path.
+ "program": "${workspaceFolder}/src/Chrysalis.Test/bin/Debug/net8.0/Chrysalis.Test.dll",
+ "args": [],
+ "cwd": "${workspaceFolder}/src/Chrysalis.Test",
+ // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
+ "console": "integratedTerminal",
+ "stopAtEntry": false,
+ "justMyCode": true,
+ "suppressJITOptimizations": true
+ },
+ {
+ "name": ".NET Core Attach",
+ "type": "coreclr",
+ "request": "attach"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..6045a98b
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,6 @@
+{
+ "deno.enable": false,
+ "rust-analyzer.linkedProjects": [
+ "src/Chrysalis.Plutus/Dependencies/plutus-vm-dotnet-rs/Cargo.toml"
+ ]
+}
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 00000000..d55af1f5
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,53 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "build",
+ "command": "dotnet",
+ "type": "process",
+ "args": [
+ "build",
+ "${workspaceFolder}/Chrysalis.sln",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary;ForceNoAlign"
+ ],
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "build:network:cli",
+ "command": "dotnet",
+ "type": "process",
+ "args": [
+ "build",
+ "${workspaceFolder}/src/Chrysalis.Network.Cli/Chrysalis.Network.Cli.csproj",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary;ForceNoAlign"
+ ],
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "publish",
+ "command": "dotnet",
+ "type": "process",
+ "args": [
+ "publish",
+ "${workspaceFolder}/Chrysalis.sln",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary;ForceNoAlign"
+ ],
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "watch",
+ "command": "dotnet",
+ "type": "process",
+ "args": [
+ "watch",
+ "run",
+ "--project",
+ "${workspaceFolder}/Chrysalis.sln"
+ ],
+ "problemMatcher": "$msCompile"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/CborTypes.png b/CborTypes.png
new file mode 100644
index 00000000..5f5f9a78
Binary files /dev/null and b/CborTypes.png differ
diff --git a/Chrysalis.sln b/Chrysalis.sln
new file mode 100644
index 00000000..05c7da5d
--- /dev/null
+++ b/Chrysalis.sln
@@ -0,0 +1,79 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.5.2.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chrysalis.Cbor.Cli", "src\Chrysalis.Cbor.Cli\Chrysalis.Cbor.Cli.csproj", "{AAA5EC06-8030-067F-F416-55899E16F81D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chrysalis.Test", "src\Chrysalis.Cbor.Test\Chrysalis.Test.csproj", "{B6D86DA9-6597-0A6F-88F9-740F3B44DD6A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chrysalis", "src\Chrysalis\Chrysalis.csproj", "{50A6DD83-F98B-5B07-D208-21D95359EFDC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chrysalis.Cbor.Benchmark", "src\Chrysalis.Cbor.Benchmark\Chrysalis.Cbor.Benchmark.csproj", "{070067AA-3F9C-FB4F-0890-CD5D5C2098E1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chrysalis.Cbor", "src\Chrysalis.Cbor\Chrysalis.Cbor.csproj", "{75E9FD85-74D0-AEF7-712E-4AE33F9AF441}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chrysalis.Network", "src\Chrysalis.Network\Chrysalis.Network.csproj", "{5F419E1F-75D9-4F37-9709-1DD5F4969BF2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chrysalis.Network.Cli", "src\Chrysalis.Network.Cli\Chrysalis.Network.Cli.csproj", "{410C13F6-68D9-4CEC-A380-D402BC4FC3ED}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chrysalis.Cbor.CodeGen", "src\Chrysalis.Cbor.CodeGen\Chrysalis.Cbor.CodeGen.csproj", "{E130E4B0-1F15-489D-99D8-9D1D707A03E4}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {AAA5EC06-8030-067F-F416-55899E16F81D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AAA5EC06-8030-067F-F416-55899E16F81D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AAA5EC06-8030-067F-F416-55899E16F81D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AAA5EC06-8030-067F-F416-55899E16F81D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B6D86DA9-6597-0A6F-88F9-740F3B44DD6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B6D86DA9-6597-0A6F-88F9-740F3B44DD6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B6D86DA9-6597-0A6F-88F9-740F3B44DD6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B6D86DA9-6597-0A6F-88F9-740F3B44DD6A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {50A6DD83-F98B-5B07-D208-21D95359EFDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {50A6DD83-F98B-5B07-D208-21D95359EFDC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {50A6DD83-F98B-5B07-D208-21D95359EFDC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {50A6DD83-F98B-5B07-D208-21D95359EFDC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {070067AA-3F9C-FB4F-0890-CD5D5C2098E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {070067AA-3F9C-FB4F-0890-CD5D5C2098E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {070067AA-3F9C-FB4F-0890-CD5D5C2098E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {070067AA-3F9C-FB4F-0890-CD5D5C2098E1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {75E9FD85-74D0-AEF7-712E-4AE33F9AF441}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {75E9FD85-74D0-AEF7-712E-4AE33F9AF441}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {75E9FD85-74D0-AEF7-712E-4AE33F9AF441}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {75E9FD85-74D0-AEF7-712E-4AE33F9AF441}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5F419E1F-75D9-4F37-9709-1DD5F4969BF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5F419E1F-75D9-4F37-9709-1DD5F4969BF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5F419E1F-75D9-4F37-9709-1DD5F4969BF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5F419E1F-75D9-4F37-9709-1DD5F4969BF2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {410C13F6-68D9-4CEC-A380-D402BC4FC3ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {410C13F6-68D9-4CEC-A380-D402BC4FC3ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {410C13F6-68D9-4CEC-A380-D402BC4FC3ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {410C13F6-68D9-4CEC-A380-D402BC4FC3ED}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E130E4B0-1F15-489D-99D8-9D1D707A03E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E130E4B0-1F15-489D-99D8-9D1D707A03E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E130E4B0-1F15-489D-99D8-9D1D707A03E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E130E4B0-1F15-489D-99D8-9D1D707A03E4}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {AAA5EC06-8030-067F-F416-55899E16F81D} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {B6D86DA9-6597-0A6F-88F9-740F3B44DD6A} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {50A6DD83-F98B-5B07-D208-21D95359EFDC} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {070067AA-3F9C-FB4F-0890-CD5D5C2098E1} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {75E9FD85-74D0-AEF7-712E-4AE33F9AF441} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {5F419E1F-75D9-4F37-9709-1DD5F4969BF2} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {410C13F6-68D9-4CEC-A380-D402BC4FC3ED} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {E130E4B0-1F15-489D-99D8-9D1D707A03E4} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {728F4C1F-B8FC-42EF-9AE0-69EBD52A1957}
+ EndGlobalSection
+EndGlobal
diff --git a/ChrysalisCborTypes.png b/ChrysalisCborTypes.png
new file mode 100644
index 00000000..0702969d
Binary files /dev/null and b/ChrysalisCborTypes.png differ
diff --git a/ChrysalisCborTypes.png:Zone.Identifier b/ChrysalisCborTypes.png:Zone.Identifier
new file mode 100644
index 00000000..5119e22a
--- /dev/null
+++ b/ChrysalisCborTypes.png:Zone.Identifier
@@ -0,0 +1,4 @@
+[ZoneTransfer]
+ZoneId=3
+ReferrerUrl=https://www.canva.com/
+HostUrl=https://export-download.canva.com/EaTh8/DAGUYfEaTh8/48/0/0001-1205157529241833986.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJHKNGJLC2J7OGJ6Q%2F20241023%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20241023T013701Z&X-Amz-Expires=38868&X-Amz-Signature=754b4163814cff243d4cd2285983d726e1fc2673ed263ff071ef7557f595c5e7&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%2A%3DUTF-8%27%27Add%2520a%2520little%2520bit%2520of%2520body%2520text.png&response-expires=Wed%2C%2023%20Oct%202024%2012%3A24%3A49%20GMT
diff --git a/README.md b/README.md
index 39c76900..4b3f3712 100644
--- a/README.md
+++ b/README.md
@@ -1,53 +1,154 @@
-# Chrysalis: Cardano Serialization Library for .NET 🦋
+
+
Chrysalis: Cardano Serialization Library for .NET 🦋
+ A .NET Serialization Library for Cardano
+
-[](https://github.com/0xAccretion/Chrysalis/actions/workflows/dotnet.yml)
+
-Chrysalis is an open-source .NET library designed to facilitate the serialization and deserialization of Cardano blockchain data structures. With a strong focus on adhering to the Cardano standards and enhancing the .NET Cardano developer ecosystem, Chrysalis aims to provide developers with a reliable and consistent toolkit for working with Cardano.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Chrysalis is an open-source .NET library designed to help you create, build, and sign Cardano transactions. As a C# serialization library, Chrysalis facilitates the serialization and deserialization of Cardano blockchain data structures. With a strong focus on adhering to the Cardano standards and enhancing the .NET Cardano developer ecosystem, Chrysalis aims to provide developers with a reliable and consistent toolkit for working with Cardano.
🚧 **NOTE:** This library is currently a work in progress. Feedback and contributions are welcome!
-## Features
+## Features ✨
-- **Cardano Serialization**: Convert Cardano data structures to and from CBOR (Concise Binary Object Representation).
-- **Bech32 Address Encoding/Decoding**: Handle Cardano addresses seamlessly.
-- **Extensive Data Model Support**: Work with a wide range of Cardano data types, including Transactions, Assets, MultiAssets, and more.
-- **Smart Contract Interaction**: Interact with Cardano smart contracts.
-- **Cross-Platform Compatibility**: Use Chrysalis in any .NET project, including .NET Core, .NET Framework, Xamarin, and more.
+- **Cardano Serialization**: Convert Cardano blockchain data structures to and from CBOR (Concise Binary Object Representation), allowing seamless and efficient data exchanges while reducing manual handling.
+- **Utility functions**: Use provided functions to intuitively interact with the Cardano data types and serialization formats.
+ - **Bech32 Address Encoding/Decoding**: Simplifies the encoding and decoding of Cardano addresses, ensuring compatibility with widely used formats. This allows you to handle Cardano addresses seamlessly.
+- **Extension Functions**: Simplifies the retrieval of values from Cardano data types by providing functions to access various variables within the data structures.
+- **Extensive Data Model Support**: Use a wide range of pre-built Cardano data types, including Transactions, Assets, MultiAssets, and more.
+- **Smart Contract Interaction**: Utilize Chrysalis' Cbor types in Datum creation and interact with Cardano smart contracts.
+- **Cross-Platform Compatibility**: Use Chrysalis in any .NET project, including .NET Core, .NET Framework, Xamarin, and more. This not only allows you to assemble Cardano data through C# but other .NEt languages such as F# or VB.NET.
## Roadmap 🚀
-1. **(De)serialization Support**: Achieve complete serialization and deserialization for any Cardano data type described in CDDL https://github.com/input-output-hk/cardano-ledger/blob/master/eras/alonzo/test-suite/cddl-files/alonzo.cddl.
+1. **(De)serialization Support**: Achieve complete serialization and deserialization for any Cardano data type described in CDDL https://github.com/IntersectMBO/cardano-ledger/blob/master/eras/conway/impl/cddl-files/conway.cddl.
2. **Transaction Handling**: Introduce capabilities for building and signing Cardano transactions.
3. **Advanced Address Management**: Implement address generation, derivation, and other associated functionalities.
-## Getting Started
+## Getting Started 📦
To use Chrysalis in your .NET project:
-1. `dotnet add package Chrysalis`
-2. Example Usage
+1. You can install Chrysalis via NuGet:
+ `dotnet add package Chrysalis`
+
+2. Example Usage 🧑💻
CBOR (De)serialization
```csharp
- var originalTransaction = CborSerializerV2.FromHex(originalTransactionCborHex)!;
+ var serializedTransaction = CborSerializer.Serialize(originalTransaction);
+ var deserializedTransaction = CborSerializer.Deserialize(serializedTransaction);
+ ```
+
+ Block Deserialization and Serialization
+ ```csharp
+ byte[] serializedBlock = CborSerializer.Serialize(originalBlock);
+ BlockEntity deserializedBlock = CborSerializer.Deserialize(serializedBlock);
+ ```
+
+ Access Deserialized Transactions, Transaction Inputs, and Transaction Outputs from a Deserialized Block
+ ```csharp
+ IEnumerable transactions = originalBlock.TransactionBodies();
+ foreach (TransactionBody tx in transactions)
+ {
+ IEnumerable inputs = tx.Inputs();
+ IEnumerable outputs = tx.Outputs();
+ }
+ ```
- var serializedTransaction = CborSerializerV2.Serialize(originalTransaction);
+ Access a Transaction Input's Transaction Id and Index
+ ```csharp
+ foreach (TransactionInput input in tx.Inputs())
+ {
+ string id = input.TransacationId();
+ ulong index = input.Index();
+ }
+ ```
- var deserializedTransaction = CborSerializerV2.Deserialize(serializedTransaction);
+ Access a Transaction Output's Address and Balance
+ ```csharp
+ foreach (TransactionOutput output in tx.Outputs())
+ {
+ string addr = output.Address().Value.ToBech32();
+ Value balance = output.Amount();
+ ulong lovelace = balance.Lovelace();
+ MultiAssetOutput multiasset = balance.MultiAsset();
+ }
```
- Bech32 Address Encoding/Decoding
+ Serialize Transactions in a Block
```csharp
- var addressBech32 = "addr...";
- var addressObject = Address.FromBech32(addressBech32);
- var addressBech32Again = addressObject.ToBech32();
- var paymentKeyHash = addressObject.GetPaymentKeyHash();
- var stakeKeyHash = addressObject.GetStakeKeyHash();
+ for (uint x = 0; x < transactions.Count(); x++)
+ {
+ CborSerializer.Serialize(transactions.ElementAt((int)x))
+ }
```
+ Bech32 Address Encoding or Decoding
+ ```csharp
+ var addressBech32 = "addr...";
+ var addressObject = Address.FromBech32(addressBech32);
+ var addressBech32Again = addressObject.ToBech32();
+ var paymentKeyHash = addressObject.GetPaymentKeyHash();
+ var stakeKeyHash = addressObject.GetStakeKeyHash();
+ ```
-## How to Contribute
+## Smart Contract Datums 📝
+Cbor Types
+
+
+Datum Example
+```csharp
+ public record AssetClass(CborBytes[] Value) : CborIndefiniteList(Value);
+ public record AssetClassTuple(AssetClass[] Value) : CborIndefiniteList(Value);
+
+ [CborSerializable(CborType.Constr, Index = 0)]
+ public record SundaeSwapLiquidityPool(
+ [CborProperty(0)]
+ CborBytes Identifier,
+
+ [CborProperty(1)]
+ AssetClassTuple Assets,
+
+ [CborProperty(2)]
+ CborUlong CirculatingLp,
+
+ [CborProperty(3)]
+ CborUlong BidFeesPer10Thousand,
+
+ [CborProperty(4)]
+ CborUlong AskFeesPer10Thousand,
+
+ [CborProperty(5)]
+ Option FeeManager,
+
+ [CborProperty(6)]
+ CborUlong MarketOpen,
+
+ [CborProperty(7)]
+ CborUlong ProtocolFees
+ ) : RawCbor;
+```
+
+## How to Contribute 🤝
Interested in contributing to Chrysalis? Great! We appreciate any help, be it in the form of code contributions, documentation, or even bug reports.
@@ -56,19 +157,4 @@ Interested in contributing to Chrysalis? Great! We appreciate any help, be it in
- **Pull Request**: Submit a pull request once you're ready. Ensure you describe your changes clearly.
- **Feedback**: Wait for feedback and address any comments or suggestions.
-## License
-
-MIT License
-
-Copyright (c) 2023 0xAccretion
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
----
-
-Give your feedback, star the repository if you found it useful, and consider contributing to push the Cardano .NET ecosystem forward! 🌟
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/BuildPlots.R b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/BuildPlots.R
new file mode 100644
index 00000000..a1fed607
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/BuildPlots.R
@@ -0,0 +1,186 @@
+BenchmarkDotNetVersion <- "BenchmarkDotNet v0.14.0 "
+dir.create(Sys.getenv("R_LIBS_USER"), recursive = TRUE, showWarnings = FALSE)
+list.of.packages <- c("ggplot2", "dplyr", "gdata", "tidyr", "grid", "gridExtra", "Rcpp", "R.devices")
+new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
+if(length(new.packages)) install.packages(new.packages, lib = Sys.getenv("R_LIBS_USER"), repos = "https://cran.rstudio.com/")
+library(ggplot2)
+library(dplyr)
+library(gdata)
+library(tidyr)
+library(grid)
+library(gridExtra)
+library(R.devices)
+
+isEmpty <- function(val){
+ is.null(val) | val == ""
+}
+
+createPrefix <- function(params){
+ separator <- "-"
+ values <- params[!isEmpty(params)]
+ paste(replace(values, TRUE, paste0(separator, values)), collapse = "")
+}
+
+ends_with <- function(vars, match, ignore.case = TRUE) {
+ if (ignore.case)
+ match <- tolower(match)
+ n <- nchar(match)
+
+ if (ignore.case)
+ vars <- tolower(vars)
+ length <- nchar(vars)
+
+ substr(vars, pmax(1, length - n + 1), length) == match
+}
+std.error <- function(x) sqrt(var(x)/length(x))
+cummean <- function(x) cumsum(x)/(1:length(x))
+BenchmarkDotNetVersionGrob <- textGrob(BenchmarkDotNetVersion, gp = gpar(fontface=3, fontsize=10), hjust=1, x=1)
+nicePlot <- function(p) grid.arrange(p, bottom = BenchmarkDotNetVersionGrob)
+printNice <- function(p) {} # print(nicePlot(p))
+ggsaveNice <- function(fileName, p, ...) {
+ cat(paste0("*** Plot: ", fileName, " ***\n"))
+ # See https://stackoverflow.com/a/51655831/184842
+ suppressGraphics(ggsave(fileName, plot = nicePlot(p), ...))
+ cat("------------------------------\n")
+}
+
+args <- commandArgs(trailingOnly = TRUE)
+files <- if (length(args) > 0) args else list.files()[list.files() %>% ends_with("-measurements.csv")]
+for (file in files) {
+ title <- gsub("-measurements.csv", "", basename(file))
+ measurements <- read.csv(file, sep = ",")
+
+ result <- measurements %>% filter(Measurement_IterationStage == "Result")
+ if (nrow(result[is.na(result$Job_Id),]) > 0)
+ result[is.na(result$Job_Id),]$Job_Id <- ""
+ if (nrow(result[is.na(result$Params),]) > 0) {
+ result[is.na(result$Params),]$Params <- ""
+ } else {
+ result$Job_Id <- trim(paste(result$Job_Id, result$Params))
+ }
+ result$Job_Id <- factor(result$Job_Id, levels = unique(result$Job_Id))
+
+ timeUnit <- "ns"
+ if (min(result$Measurement_Value) > 1000) {
+ result$Measurement_Value <- result$Measurement_Value / 1000
+ timeUnit <- "us"
+ }
+ if (min(result$Measurement_Value) > 1000) {
+ result$Measurement_Value <- result$Measurement_Value / 1000
+ timeUnit <- "ms"
+ }
+ if (min(result$Measurement_Value) > 1000) {
+ result$Measurement_Value <- result$Measurement_Value / 1000
+ timeUnit <- "sec"
+ }
+
+ resultStats <- result %>%
+ group_by_(.dots = c("Target_Method", "Job_Id")) %>%
+ summarise(se = std.error(Measurement_Value), Value = mean(Measurement_Value))
+
+ benchmarkBoxplot <- ggplot(result, aes(x=Target_Method, y=Measurement_Value, fill=Job_Id)) +
+ guides(fill=guide_legend(title="Job")) +
+ xlab("Target") +
+ ylab(paste("Time,", timeUnit)) +
+ ggtitle(title) +
+ geom_boxplot()
+ benchmarkBarplot <- ggplot(resultStats, aes(x=Target_Method, y=Value, fill=Job_Id)) +
+ guides(fill=guide_legend(title="Job")) +
+ xlab("Target") +
+ ylab(paste("Time,", timeUnit)) +
+ ggtitle(title) +
+ geom_bar(position=position_dodge(), stat="identity")
+ #geom_errorbar(aes(ymin=Value-1.96*se, ymax=Value+1.96*se), width=.2, position=position_dodge(.9))
+
+ printNice(benchmarkBoxplot)
+ printNice(benchmarkBarplot)
+ ggsaveNice(gsub("-measurements.csv", "-boxplot.png", file), benchmarkBoxplot)
+ ggsaveNice(gsub("-measurements.csv", "-barplot.png", file), benchmarkBarplot)
+
+ for (target in unique(result$Target_Method)) {
+ df <- result %>% filter(Target_Method == target)
+ df$Launch <- factor(df$Measurement_LaunchIndex)
+ df <- df %>% group_by(Job_Id, Launch) %>% mutate(cm = cummean(Measurement_Value))
+
+ densityPlot <- ggplot(df, aes(x=Measurement_Value, fill=Job_Id)) +
+ ggtitle(paste(title, "/", target)) +
+ xlab(paste("Time,", timeUnit)) +
+ geom_density(alpha=.5, bw="SJ")
+ printNice(densityPlot)
+ ggsaveNice(gsub("-measurements.csv", paste0("-", target, "-density.png"), file), densityPlot)
+
+ facetDensityPlot <- densityPlot + facet_wrap(~Job_Id)
+ printNice(facetDensityPlot)
+ ggsaveNice(gsub("-measurements.csv", paste0("-", target, "-facetDensity.png"), file), facetDensityPlot)
+
+ for (params in unique(df$Params)) {
+ paramsDf <- df %>% filter(Params == params)
+ paramsDensityPlot <- ggplot(paramsDf, aes(x=Measurement_Value, fill=Job_Id)) +
+ ggtitle(paste(title, "/", target, "/", params)) +
+ xlab(paste("Time,", timeUnit)) +
+ geom_density(alpha=.5, bw="SJ")
+ printNice(paramsDensityPlot)
+ prefix <- createPrefix(c(target,params))
+ ggsaveNice(gsub("-measurements.csv", paste0(prefix, "-density.png"), file), paramsDensityPlot)
+
+ paramsFacetDensityPlot <- paramsDensityPlot + facet_wrap(~Job_Id)
+ printNice(paramsFacetDensityPlot)
+ ggsaveNice(gsub("-measurements.csv", paste0(prefix, "-facetDensity.png"), file), paramsFacetDensityPlot)
+ }
+
+ for (job in unique(df$Job_Id)) {
+ jobDf <- df %>% filter(Job_Id == job)
+ timelinePlot <- ggplot(jobDf, aes(x = Measurement_IterationIndex, y=Measurement_Value, group=Launch, color=Launch)) +
+ ggtitle(paste(title, "/", target, "/", job)) +
+ xlab("IterationIndex") +
+ ylab(paste("Time,", timeUnit)) +
+ geom_line() +
+ geom_point()
+ printNice(timelinePlot)
+ ggsaveNice(gsub("-measurements.csv", paste0("-", target, "-", job, "-timeline.png"), file), timelinePlot)
+ timelinePlotSmooth <- timelinePlot + geom_smooth()
+ printNice(timelinePlotSmooth)
+ ggsaveNice(gsub("-measurements.csv", paste0("-", target, "-", job, "-timelineSmooth.png"), file), timelinePlotSmooth)
+
+ cummeanPlot <- ggplot(jobDf, aes(x = Measurement_IterationIndex, y=cm, group=Launch, color=Launch)) +
+ ggtitle(paste(title, "/", target, "/", job)) +
+ xlab("IterationIndex") +
+ ylab(paste("Cumulative mean time,", timeUnit)) +
+ geom_line() +
+ geom_point()
+ printNice(cummeanPlot)
+ ggsaveNice(gsub("-measurements.csv", paste0("-", target, "-", job, "-cummean.png"), file), cummeanPlot)
+
+
+ densityPlotJob <- ggplot(jobDf, aes(x=Measurement_Value, fill="red")) +
+ ggtitle(paste(title, "/", target, "/", job)) +
+ xlab(paste("Time,", timeUnit)) +
+ geom_density(alpha=.5, bw="SJ")
+ printNice(densityPlotJob)
+ ggsaveNice(gsub("-measurements.csv", paste0("-", target, "-", job, "-density.png"), file), densityPlotJob)
+ }
+
+ timelinePlot <- ggplot(df, aes(x = Measurement_IterationIndex, y=Measurement_Value, group=Launch, color=Launch)) +
+ ggtitle(paste(title, "/", target)) +
+ xlab("IterationIndex") +
+ ylab(paste("Time,", timeUnit)) +
+ geom_line() +
+ geom_point() +
+ facet_wrap(~Job_Id)
+ printNice(timelinePlot)
+ ggsaveNice(gsub("-measurements.csv", paste0("-", target, "-facetTimeline.png"), file), timelinePlot)
+ timelinePlotSmooth <- timelinePlot + geom_smooth()
+ printNice(timelinePlotSmooth)
+ ggsaveNice(gsub("-measurements.csv", paste0("-", target, "-facetTimelineSmooth.png"), file), timelinePlotSmooth)
+
+ facetCummeanPlot <- ggplot(df, aes(x = Measurement_IterationIndex, y=cm, group=Launch, color=Launch)) +
+ ggtitle(paste(title, "/", target)) +
+ xlab("IterationIndex") +
+ ylab(paste("Cumulative mean time,", timeUnit)) +
+ geom_line() +
+ geom_point() +
+ facet_wrap(~Job_Id)
+ printNice(facetCummeanPlot)
+ ggsaveNice(gsub("-measurements.csv", paste0("-", target, "-cummean.png"), file), facetCummeanPlot)
+ }
+}
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-Job-BZGSBA-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-Job-BZGSBA-cummean.png
new file mode 100644
index 00000000..ec6363ca
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-Job-BZGSBA-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-Job-BZGSBA-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-Job-BZGSBA-density.png
new file mode 100644
index 00000000..b8b8e66c
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-Job-BZGSBA-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-Job-BZGSBA-timeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-Job-BZGSBA-timeline.png
new file mode 100644
index 00000000..b955bfa2
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-Job-BZGSBA-timeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-Job-BZGSBA-timelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-Job-BZGSBA-timelineSmooth.png
new file mode 100644
index 00000000..8b23293c
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-Job-BZGSBA-timelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-cummean.png
new file mode 100644
index 00000000..71c4893d
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-density.png
new file mode 100644
index 00000000..b8b8e66c
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-facetDensity.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-facetDensity.png
new file mode 100644
index 00000000..b470d247
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-facetDensity.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-facetTimeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-facetTimeline.png
new file mode 100644
index 00000000..f8fe3648
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-facetTimeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-facetTimelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-facetTimelineSmooth.png
new file mode 100644
index 00000000..71cddc9e
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-New-facetTimelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-Job-BZGSBA-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-Job-BZGSBA-cummean.png
new file mode 100644
index 00000000..af093387
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-Job-BZGSBA-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-Job-BZGSBA-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-Job-BZGSBA-density.png
new file mode 100644
index 00000000..b8b8e66c
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-Job-BZGSBA-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-Job-BZGSBA-timeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-Job-BZGSBA-timeline.png
new file mode 100644
index 00000000..78b63aea
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-Job-BZGSBA-timeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-Job-BZGSBA-timelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-Job-BZGSBA-timelineSmooth.png
new file mode 100644
index 00000000..dd74ec66
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-Job-BZGSBA-timelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-cummean.png
new file mode 100644
index 00000000..02c5cb40
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-density.png
new file mode 100644
index 00000000..b8b8e66c
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-facetDensity.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-facetDensity.png
new file mode 100644
index 00000000..b470d247
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-facetDensity.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-facetTimeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-facetTimeline.png
new file mode 100644
index 00000000..074577b1
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-facetTimeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-facetTimelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-facetTimelineSmooth.png
new file mode 100644
index 00000000..3c142430
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-Old-facetTimelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-asm.md b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-asm.md
new file mode 100644
index 00000000..10fa7296
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-asm.md
@@ -0,0 +1,180 @@
+## .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+```assembly
+; Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks.New()
+ push rbp
+ sub rsp,20
+ lea rbp,[rsp+20]
+ vxorps xmm8,xmm8,xmm8
+ vmovdqu ymmword ptr [rbp-20],ymm8
+ mov [rbp-20],rdi
+ mov dword ptr [rbp-18],0FFFFFFFF
+ lea rdi,[rbp-20]
+ call qword ptr [7F8F41704C18]
+ mov rax,[rbp-10]
+ test rax,rax
+ je short M00_L01
+M00_L00:
+ add rsp,20
+ pop rbp
+ ret
+M00_L01:
+ lea rdi,[rbp-10]
+ call qword ptr [7F8F418CE3B8]
+ jmp short M00_L00
+; Total bytes of code 68
+```
+```assembly
+; BenchmarkDotNet.Helpers.AwaitHelper.GetResult(System.Threading.Tasks.Task)
+ push rax
+ mov esi,[rdi+34]
+ and esi,11000000
+ cmp esi,1000000
+ jne short M01_L01
+M01_L00:
+ add rsp,8
+ ret
+M01_L01:
+ xor esi,esi
+ call qword ptr [7F8F41706D78]; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ jmp short M01_L00
+; Total bytes of code 33
+```
+```assembly
+; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ push rbp
+ push r15
+ push rbx
+ lea rbp,[rsp+10]
+ mov rbx,rdi
+ mov r15d,esi
+ test dword ptr [rbx+34],1600000
+ jne short M02_L00
+ mov rdi,rbx
+ xor edx,edx
+ mov esi,0FFFFFFFF
+ call qword ptr [7F8F41706D90]; System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken)
+M02_L00:
+ test dword ptr [rbx+34],10000000
+ jne short M02_L03
+M02_L01:
+ mov edi,[rbx+34]
+ and edi,1600000
+ cmp edi,1000000
+ jne short M02_L04
+M02_L02:
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+M02_L03:
+ mov rdi,rbx
+ mov rax,[rbx]
+ mov rax,[rax+40]
+ call qword ptr [rax+20]
+ test eax,eax
+ je short M02_L01
+ mov rdi,rbx
+ call qword ptr [7F8F418CDB30]
+ jmp short M02_L01
+M02_L04:
+ test r15b,2
+ jne short M02_L05
+ mov rdi,rbx
+ call qword ptr [7F8F418CE3D0]
+M02_L05:
+ mov rdi,rbx
+ call qword ptr [7F8F418CFFC0]
+ jmp short M02_L02
+; Total bytes of code 125
+```
+
+## .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+```assembly
+; Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks.Old()
+ push rbp
+ sub rsp,20
+ lea rbp,[rsp+20]
+ vxorps xmm8,xmm8,xmm8
+ vmovdqu ymmword ptr [rbp-20],ymm8
+ mov [rbp-20],rdi
+ mov dword ptr [rbp-18],0FFFFFFFF
+ lea rdi,[rbp-20]
+ call qword ptr [7FA2850D4B40]
+ mov rax,[rbp-10]
+ test rax,rax
+ je short M00_L01
+M00_L00:
+ add rsp,20
+ pop rbp
+ ret
+M00_L01:
+ lea rdi,[rbp-10]
+ call qword ptr [7FA286035290]
+ jmp short M00_L00
+; Total bytes of code 68
+```
+```assembly
+; BenchmarkDotNet.Helpers.AwaitHelper.GetResult(System.Threading.Tasks.Task)
+ push rax
+ mov esi,[rdi+34]
+ and esi,11000000
+ cmp esi,1000000
+ jne short M01_L01
+M01_L00:
+ add rsp,8
+ ret
+M01_L01:
+ xor esi,esi
+ call qword ptr [7FA2850D6AC0]; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ jmp short M01_L00
+; Total bytes of code 33
+```
+```assembly
+; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ push rbp
+ push r15
+ push rbx
+ lea rbp,[rsp+10]
+ mov rbx,rdi
+ mov r15d,esi
+ test dword ptr [rbx+34],1600000
+ jne short M02_L00
+ mov rdi,rbx
+ xor edx,edx
+ mov esi,0FFFFFFFF
+ call qword ptr [7FA2850D6AD8]; System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken)
+M02_L00:
+ test dword ptr [rbx+34],10000000
+ jne short M02_L03
+M02_L01:
+ mov edi,[rbx+34]
+ and edi,1600000
+ cmp edi,1000000
+ jne short M02_L04
+M02_L02:
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+M02_L03:
+ mov rdi,rbx
+ mov rax,[rbx]
+ mov rax,[rax+40]
+ call qword ptr [rax+20]
+ test eax,eax
+ je short M02_L01
+ mov rdi,rbx
+ call qword ptr [7FA286034B58]
+ jmp short M02_L01
+M02_L04:
+ test r15b,2
+ jne short M02_L05
+ mov rdi,rbx
+ call qword ptr [7FA2860352A8]
+M02_L05:
+ mov rdi,rbx
+ call qword ptr [7FA286035A40]
+ jmp short M02_L02
+; Total bytes of code 125
+```
+
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-barplot.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-barplot.png
new file mode 100644
index 00000000..754363fb
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-barplot.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-boxplot.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-boxplot.png
new file mode 100644
index 00000000..599a8e60
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-boxplot.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-measurements.csv b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-measurements.csv
new file mode 100644
index 00000000..42b2818e
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-measurements.csv
@@ -0,0 +1,135 @@
+Target,Target_Namespace,Target_Type,Target_Method,Job_Id,Job_AnalyzeLaunchVariance,Job_EvaluateOverhead,Job_MaxAbsoluteError,Job_MaxRelativeError,Job_MinInvokeCount,Job_MinIterationTime,Job_OutlierMode,Job_Affinity,Job_EnvironmentVariables,Job_Jit,Job_LargeAddressAware,Job_Platform,Job_PowerPlanMode,Job_Runtime,Job_AllowVeryLargeObjects,Job_Concurrent,Job_CpuGroups,Job_Force,Job_HeapAffinitizeMask,Job_HeapCount,Job_NoAffinitize,Job_RetainVm,Job_Server,Job_Arguments,Job_BuildConfiguration,Job_Clock,Job_EngineFactory,Job_NuGetReferences,Job_Toolchain,Job_IsMutator,Job_InvocationCount,Job_IterationCount,Job_IterationTime,Job_LaunchCount,Job_MaxIterationCount,Job_MaxWarmupIterationCount,Job_MemoryRandomization,Job_MinIterationCount,Job_MinWarmupIterationCount,Job_RunStrategy,Job_UnrollFactor,Job_WarmupCount,Job_Display,Params,Measurement_LaunchIndex,Measurement_IterationMode,Measurement_IterationStage,Measurement_IterationIndex,Measurement_Nanoseconds,Measurement_Operations,Measurement_Value,Gen_0,Gen_1,Gen_2,Allocated_Bytes
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Jitting,1,156508,1,156508,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Jitting,1,63976547,1,63976547,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,1,33132516,4,8283129,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,2,39602090,5,7920418,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,3,44343565,6,7390594.17,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,4,58318299,7,8331185.57,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,5,69576404,8,8697050.5,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,6,79835661,9,8870629,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,7,100019560,10,10001956,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,8,104685308,11,9516846.18,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,9,110805507,12,9233792.25,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,10,120530787,13,9271599,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,11,130644503,14,9331750.21,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,12,141701514,15,9446767.6,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,13,150587260,16,9411703.75,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,14,284936409,32,8904262.78,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,15,480325766,64,7505090.09,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,16,651648966,128,5091007.55,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,1,1935,128,15.12,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,2,567,128,4.43,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,3,684,128,5.34,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,4,558,128,4.36,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,5,567,128,4.43,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,6,576,128,4.5,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,7,585,128,4.57,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,8,585,128,4.57,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,1,576,128,4.5,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,2,603,128,4.71,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,3,585,128,4.57,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,4,567,128,4.43,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,5,684,128,5.34,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,6,558,128,4.36,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,7,576,128,4.5,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,8,558,128,4.36,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,9,1440,128,11.25,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,10,684,128,5.34,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,11,558,128,4.36,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,12,684,128,5.34,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,13,585,128,4.57,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,14,1143,128,8.93,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,15,630,128,4.92,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,16,576,128,4.5,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,17,540,128,4.22,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,18,585,128,4.57,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,19,567,128,4.43,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,20,558,128,4.36,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,1,522264613,128,4080192.29,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,2,501505905,128,3918014.88,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,3,503342311,128,3932361.8,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,1,502045956,128,3922234.03,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,2,517835885,128,4045592.85,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,3,544859177,128,4256712.32,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,4,524452883,128,4097288.15,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,5,528481187,128,4128759.27,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,6,523453632,128,4089481.5,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,7,531526231,128,4152548.68,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,8,520204007,128,4064093.8,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,9,525023991,128,4101749.93,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,10,528067805,128,4125529.73,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,1,502045375.5,128,3922229.5,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,2,517835304.5,128,4045588.32,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,3,524452302.5,128,4097283.61,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,4,528480606.5,128,4128754.74,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,5,523453051.5,128,4089476.96,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,6,531525650.5,128,4152544.14,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,7,520203426.5,128,4064089.27,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,8,525023410.5,128,4101745.39,37,15,0,4866608
+AlonzoBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,9,528067224.5,128,4125525.19,37,15,0,4866608
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Jitting,1,162274,1,162274,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Jitting,1,317857251,1,317857251,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,1,106183047,4,26545761.75,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,2,146936806,5,29387361.2,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,3,175365946,6,29227657.67,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,4,206443897,7,29491985.29,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,5,226671650,8,28333956.25,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,6,257814124,9,28646013.78,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,7,286598319,10,28659831.9,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,8,313721392,11,28520126.55,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,9,341489123,12,28457426.92,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,10,355006337,13,27308179.77,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,11,347697251,14,24835517.93,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,12,305266728,15,20351115.2,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,13,264018087,16,16501130.44,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,14,486990525,32,15218453.91,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,15,963550381,64,15055474.7,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,1,1403,64,21.92,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,2,650,64,10.16,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,3,669,64,10.45,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,4,697,64,10.89,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,5,556,64,8.69,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,6,565,64,8.83,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,7,499,64,7.8,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,1,668,64,10.44,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,2,706,64,11.03,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,3,725,64,11.33,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,4,621,64,9.7,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,5,594,64,9.28,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,6,565,64,8.83,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,7,621,64,9.7,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,8,2156,64,33.69,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,9,744,64,11.63,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,10,961,64,15.02,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,11,687,64,10.73,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,12,555,64,8.67,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,13,650,64,10.16,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,14,631,64,9.86,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,15,612,64,9.56,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,16,480,64,7.5,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,17,537,64,8.39,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,18,593,64,9.27,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,19,555,64,8.67,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,20,857,64,13.39,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,1,982348622,64,15349197.22,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,2,969743196,64,15152237.44,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,3,947818192,64,14809659.25,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,1,962975427,64,15046491.05,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,2,953979032,64,14905922.38,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,3,962249756,64,15035152.44,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,4,989814085,64,15465845.08,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,5,953274878,64,14894919.97,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,6,969491389,64,15148302.95,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,7,952848870,64,14888263.59,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,8,959780063,64,14996563.48,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,9,953514078,64,14898657.47,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,10,951547885,64,14867935.7,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,1,962974801,64,15046481.27,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,2,953978406,64,14905912.59,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,3,962249130,64,15035142.66,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,4,953274252,64,14894910.19,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,5,969490763,64,15148293.17,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,6,952848244,64,14888253.81,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,7,959779437,64,14996553.7,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,8,953513452,64,14898647.69,32,13,0,8429744
+AlonzoBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,9,951547259,64,14867925.92,32,13,0,8429744
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-report-github.md b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-report-github.md
new file mode 100644
index 00000000..c88ca538
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-report-github.md
@@ -0,0 +1,16 @@
+```
+
+BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat) WSL
+AMD Ryzen 9 5950X, 1 CPU, 32 logical and 16 physical cores
+.NET SDK 9.0.102
+ [Host] : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2 DEBUG
+ Job-ONJMYK : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+
+IterationCount=10 MaxIterationCount=20 UnrollFactor=1
+WarmupCount=3
+
+```
+| Method | Mean | Error | StdDev | Min | Max | Code Size | Gen0 | Gen1 | Allocated |
+|------- |----------:|----------:|----------:|----------:|----------:|----------:|---------:|---------:|----------:|
+| New | 4.081 ms | 0.1141 ms | 0.0679 ms | 3.922 ms | 4.153 ms | 226 B | 289.0625 | 117.1875 | 4.64 MB |
+| Old | 14.965 ms | 0.1619 ms | 0.0964 ms | 14.868 ms | 15.148 ms | 226 B | 500.0000 | 203.1250 | 8.04 MB |
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-report.csv b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-report.csv
new file mode 100644
index 00000000..10c5fc79
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-report.csv
@@ -0,0 +1,3 @@
+Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Min,Max,Code Size,Gen0,Gen1,Allocated
+New,Job-ONJMYK,False,Default,Default,Default,Default,Default,Default,11111111111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,4.081 ms,0.1141 ms,0.0679 ms,3.922 ms,4.153 ms,226 B,289.0625,117.1875,4.64 MB
+Old,Job-ONJMYK,False,Default,Default,Default,Default,Default,Default,11111111111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,14.965 ms,0.1619 ms,0.0964 ms,14.868 ms,15.148 ms,226 B,500.0000,203.1250,8.04 MB
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-report.html b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-report.html
new file mode 100644
index 00000000..9bfc05a6
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-report.html
@@ -0,0 +1,33 @@
+
+
+
+
+Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-20250220-033532
+
+
+
+
+
+BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat) WSL
+AMD Ryzen 9 5950X, 1 CPU, 32 logical and 16 physical cores
+.NET SDK 9.0.102
+ [Host] : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2 DEBUG
+ Job-ONJMYK : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+
+IterationCount=10 MaxIterationCount=20 UnrollFactor=1
+WarmupCount=3
+
+
+
+Method Mean Error StdDev Min Max Code Size Gen0 Gen1 Allocated
+
+New 4.081 ms 0.1141 ms 0.0679 ms 3.922 ms 4.153 ms 226 B 289.0625 117.1875 4.64 MB
+Old 14.965 ms 0.1619 ms 0.0964 ms 14.868 ms 15.148 ms 226 B 500.0000 203.1250 8.04 MB
+
+
+
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-report.txt b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-report.txt
new file mode 100644
index 00000000..cd341ed0
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoBenchmarks-report.txt
@@ -0,0 +1,323 @@
+*** AlonzoBenchmarks.New: Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3) ***
+* Raw *
+OverheadJitting 1: 1 op, 156508.00 ns, 156.5080 us/op
+WorkloadJitting 1: 1 op, 63976547.00 ns, 63.9765 ms/op
+WorkloadPilot 1: 4 op, 33132516.00 ns, 8.2831 ms/op
+WorkloadPilot 2: 5 op, 39602090.00 ns, 7.9204 ms/op
+WorkloadPilot 3: 6 op, 44343565.00 ns, 7.3906 ms/op
+WorkloadPilot 4: 7 op, 58318299.00 ns, 8.3312 ms/op
+WorkloadPilot 5: 8 op, 69576404.00 ns, 8.6971 ms/op
+WorkloadPilot 6: 9 op, 79835661.00 ns, 8.8706 ms/op
+WorkloadPilot 7: 10 op, 100019560.00 ns, 10.0020 ms/op
+WorkloadPilot 8: 11 op, 104685308.00 ns, 9.5168 ms/op
+WorkloadPilot 9: 12 op, 110805507.00 ns, 9.2338 ms/op
+WorkloadPilot 10: 13 op, 120530787.00 ns, 9.2716 ms/op
+WorkloadPilot 11: 14 op, 130644503.00 ns, 9.3318 ms/op
+WorkloadPilot 12: 15 op, 141701514.00 ns, 9.4468 ms/op
+WorkloadPilot 13: 16 op, 150587260.00 ns, 9.4117 ms/op
+WorkloadPilot 14: 32 op, 284936409.00 ns, 8.9043 ms/op
+WorkloadPilot 15: 64 op, 480325766.00 ns, 7.5051 ms/op
+WorkloadPilot 16: 128 op, 651648966.00 ns, 5.0910 ms/op
+OverheadWarmup 1: 128 op, 1935.00 ns, 15.1172 ns/op
+OverheadWarmup 2: 128 op, 567.00 ns, 4.4297 ns/op
+OverheadWarmup 3: 128 op, 684.00 ns, 5.3438 ns/op
+OverheadWarmup 4: 128 op, 558.00 ns, 4.3594 ns/op
+OverheadWarmup 5: 128 op, 567.00 ns, 4.4297 ns/op
+OverheadWarmup 6: 128 op, 576.00 ns, 4.5000 ns/op
+OverheadWarmup 7: 128 op, 585.00 ns, 4.5703 ns/op
+OverheadWarmup 8: 128 op, 585.00 ns, 4.5703 ns/op
+OverheadActual 1: 128 op, 576.00 ns, 4.5000 ns/op
+OverheadActual 2: 128 op, 603.00 ns, 4.7109 ns/op
+OverheadActual 3: 128 op, 585.00 ns, 4.5703 ns/op
+OverheadActual 4: 128 op, 567.00 ns, 4.4297 ns/op
+OverheadActual 5: 128 op, 684.00 ns, 5.3438 ns/op
+OverheadActual 6: 128 op, 558.00 ns, 4.3594 ns/op
+OverheadActual 7: 128 op, 576.00 ns, 4.5000 ns/op
+OverheadActual 8: 128 op, 558.00 ns, 4.3594 ns/op
+OverheadActual 9: 128 op, 1440.00 ns, 11.2500 ns/op
+OverheadActual 10: 128 op, 684.00 ns, 5.3438 ns/op
+OverheadActual 11: 128 op, 558.00 ns, 4.3594 ns/op
+OverheadActual 12: 128 op, 684.00 ns, 5.3438 ns/op
+OverheadActual 13: 128 op, 585.00 ns, 4.5703 ns/op
+OverheadActual 14: 128 op, 1143.00 ns, 8.9297 ns/op
+OverheadActual 15: 128 op, 630.00 ns, 4.9219 ns/op
+OverheadActual 16: 128 op, 576.00 ns, 4.5000 ns/op
+OverheadActual 17: 128 op, 540.00 ns, 4.2188 ns/op
+OverheadActual 18: 128 op, 585.00 ns, 4.5703 ns/op
+OverheadActual 19: 128 op, 567.00 ns, 4.4297 ns/op
+OverheadActual 20: 128 op, 558.00 ns, 4.3594 ns/op
+WorkloadWarmup 1: 128 op, 522264613.00 ns, 4.0802 ms/op
+WorkloadWarmup 2: 128 op, 501505905.00 ns, 3.9180 ms/op
+WorkloadWarmup 3: 128 op, 503342311.00 ns, 3.9324 ms/op
+WorkloadActual 1: 128 op, 502045956.00 ns, 3.9222 ms/op
+WorkloadActual 2: 128 op, 517835885.00 ns, 4.0456 ms/op
+WorkloadActual 3: 128 op, 544859177.00 ns, 4.2567 ms/op
+WorkloadActual 4: 128 op, 524452883.00 ns, 4.0973 ms/op
+WorkloadActual 5: 128 op, 528481187.00 ns, 4.1288 ms/op
+WorkloadActual 6: 128 op, 523453632.00 ns, 4.0895 ms/op
+WorkloadActual 7: 128 op, 531526231.00 ns, 4.1525 ms/op
+WorkloadActual 8: 128 op, 520204007.00 ns, 4.0641 ms/op
+WorkloadActual 9: 128 op, 525023991.00 ns, 4.1017 ms/op
+WorkloadActual 10: 128 op, 528067805.00 ns, 4.1255 ms/op
+WorkloadResult 1: 128 op, 502045375.50 ns, 3.9222 ms/op
+WorkloadResult 2: 128 op, 517835304.50 ns, 4.0456 ms/op
+WorkloadResult 3: 128 op, 524452302.50 ns, 4.0973 ms/op
+WorkloadResult 4: 128 op, 528480606.50 ns, 4.1288 ms/op
+WorkloadResult 5: 128 op, 523453051.50 ns, 4.0895 ms/op
+WorkloadResult 6: 128 op, 531525650.50 ns, 4.1525 ms/op
+WorkloadResult 7: 128 op, 520203426.50 ns, 4.0641 ms/op
+WorkloadResult 8: 128 op, 525023410.50 ns, 4.1017 ms/op
+WorkloadResult 9: 128 op, 528067224.50 ns, 4.1255 ms/op
+
+* Statistics for OverheadJitting
+Mean = 156.508 μs, StdErr = 0.000 μs (0.00%), N = 1, StdDev = 0.000 μs
+Min = 156.508 μs, Q1 = 156.508 μs, Median = 156.508 μs, Q3 = 156.508 μs, Max = 156.508 μs
+IQR = 0.000 μs, LowerFence = 156.508 μs, UpperFence = 156.508 μs
+ConfidenceInterval = [NaN μs; NaN μs] (CI 99.9%), Margin = NaN μs (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[156.507 μs ; 156.508 μs) | @
+---------------------------------------------------
+
+* Statistics for WorkloadJitting
+Mean = 63.977 ms, StdErr = 0.000 ms (0.00%), N = 1, StdDev = 0.000 ms
+Min = 63.977 ms, Q1 = 63.977 ms, Median = 63.977 ms, Q3 = 63.977 ms, Max = 63.977 ms
+IQR = 0.000 ms, LowerFence = 63.977 ms, UpperFence = 63.977 ms
+ConfidenceInterval = [NaN ms; NaN ms] (CI 99.9%), Margin = NaN ms (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[63.977 ms ; 63.977 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadPilot
+Mean = 8.575 ms, StdErr = 0.298 ms (3.48%), N = 16, StdDev = 1.193 ms
+Min = 5.091 ms, Q1 = 8.192 ms, Median = 8.887 ms, Q3 = 9.352 ms, Max = 10.002 ms
+IQR = 1.159 ms, LowerFence = 6.454 ms, UpperFence = 11.091 ms
+ConfidenceInterval = [7.361 ms; 9.790 ms] (CI 99.9%), Margin = 1.215 ms (14.16% of Mean)
+Skewness = -1.45, Kurtosis = 4.87, MValue = 2
+-------------------- Histogram --------------------
+[4.470 ms ; 5.712 ms) | @
+[5.712 ms ; 7.034 ms) |
+[7.034 ms ; 8.279 ms) | @@@
+[8.279 ms ; 9.521 ms) | @@@@@@@@@@@
+[9.521 ms ; 10.623 ms) | @
+---------------------------------------------------
+
+* Statistics for OverheadWarmup
+Mean = 5.915 ns, StdErr = 1.319 ns (22.30%), N = 8, StdDev = 3.731 ns
+Min = 4.359 ns, Q1 = 4.430 ns, Median = 4.535 ns, Q3 = 4.764 ns, Max = 15.117 ns
+IQR = 0.334 ns, LowerFence = 3.929 ns, UpperFence = 5.265 ns
+ConfidenceInterval = [-1.219 ns; 13.049 ns] (CI 99.9%), Margin = 7.134 ns (120.61% of Mean)
+Skewness = 1.83, Kurtosis = 4.64, MValue = 2
+-------------------- Histogram --------------------
+[ 2.403 ns ; 7.300 ns) | @@@@@@@
+[ 7.300 ns ; 12.668 ns) |
+[12.668 ns ; 17.566 ns) | @
+---------------------------------------------------
+
+* Statistics for OverheadActual
+Mean = 5.179 ns, StdErr = 0.392 ns (7.58%), N = 20, StdDev = 1.755 ns
+Min = 4.219 ns, Q1 = 4.412 ns, Median = 4.535 ns, Q3 = 5.027 ns, Max = 11.250 ns
+IQR = 0.615 ns, LowerFence = 3.489 ns, UpperFence = 5.950 ns
+ConfidenceInterval = [3.655 ns; 6.702 ns] (CI 99.9%), Margin = 1.524 ns (29.43% of Mean)
+Skewness = 2.51, Kurtosis = 8.23, MValue = 2.46
+-------------------- Histogram --------------------
+[ 3.933 ns ; 5.630 ns) | @@@@@@@@@@@@@@@@@@
+[ 5.630 ns ; 7.327 ns) |
+[ 7.327 ns ; 8.081 ns) |
+[ 8.081 ns ; 9.778 ns) | @
+[ 9.778 ns ; 10.401 ns) |
+[10.401 ns ; 12.099 ns) | @
+---------------------------------------------------
+
+* Statistics for WorkloadWarmup
+Mean = 3.977 ms, StdErr = 0.052 ms (1.30%), N = 3, StdDev = 0.090 ms
+Min = 3.918 ms, Q1 = 3.925 ms, Median = 3.932 ms, Q3 = 4.006 ms, Max = 4.080 ms
+IQR = 0.081 ms, LowerFence = 3.804 ms, UpperFence = 4.128 ms
+ConfidenceInterval = [2.339 ms; 5.615 ms] (CI 99.9%), Margin = 1.638 ms (41.19% of Mean)
+Skewness = 0.37, Kurtosis = 0.67, MValue = 2
+-------------------- Histogram --------------------
+[3.917 ms ; 4.081 ms) | @@@
+---------------------------------------------------
+
+* Statistics for WorkloadActual
+Mean = 4.098 ms, StdErr = 0.027 ms (0.65%), N = 10, StdDev = 0.085 ms
+Min = 3.922 ms, Q1 = 4.070 ms, Median = 4.100 ms, Q3 = 4.128 ms, Max = 4.257 ms
+IQR = 0.058 ms, LowerFence = 3.984 ms, UpperFence = 4.214 ms
+ConfidenceInterval = [3.970 ms; 4.227 ms] (CI 99.9%), Margin = 0.128 ms (3.13% of Mean)
+Skewness = -0.24, Kurtosis = 3.11, MValue = 2
+-------------------- Histogram --------------------
+[3.871 ms ; 3.974 ms) | @
+[3.974 ms ; 4.139 ms) | @@@@@@@
+[4.139 ms ; 4.308 ms) | @@
+---------------------------------------------------
+
+* Statistics for WorkloadResult
+Mean = 4.081 ms, StdErr = 0.023 ms (0.55%), N = 9, StdDev = 0.068 ms
+Min = 3.922 ms, Q1 = 4.064 ms, Median = 4.097 ms, Q3 = 4.126 ms, Max = 4.153 ms
+IQR = 0.061 ms, LowerFence = 3.972 ms, UpperFence = 4.218 ms
+ConfidenceInterval = [3.967 ms; 4.195 ms] (CI 99.9%), Margin = 0.114 ms (2.80% of Mean)
+Skewness = -1.22, Kurtosis = 3.5, MValue = 2
+-------------------- Histogram --------------------
+[3.879 ms ; 3.965 ms) | @
+[3.965 ms ; 4.044 ms) |
+[4.044 ms ; 4.195 ms) | @@@@@@@@
+---------------------------------------------------
+*** AlonzoBenchmarks.Old: Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3) ***
+* Raw *
+OverheadJitting 1: 1 op, 162274.00 ns, 162.2740 us/op
+WorkloadJitting 1: 1 op, 317857251.00 ns, 317.8573 ms/op
+WorkloadPilot 1: 4 op, 106183047.00 ns, 26.5458 ms/op
+WorkloadPilot 2: 5 op, 146936806.00 ns, 29.3874 ms/op
+WorkloadPilot 3: 6 op, 175365946.00 ns, 29.2277 ms/op
+WorkloadPilot 4: 7 op, 206443897.00 ns, 29.4920 ms/op
+WorkloadPilot 5: 8 op, 226671650.00 ns, 28.3340 ms/op
+WorkloadPilot 6: 9 op, 257814124.00 ns, 28.6460 ms/op
+WorkloadPilot 7: 10 op, 286598319.00 ns, 28.6598 ms/op
+WorkloadPilot 8: 11 op, 313721392.00 ns, 28.5201 ms/op
+WorkloadPilot 9: 12 op, 341489123.00 ns, 28.4574 ms/op
+WorkloadPilot 10: 13 op, 355006337.00 ns, 27.3082 ms/op
+WorkloadPilot 11: 14 op, 347697251.00 ns, 24.8355 ms/op
+WorkloadPilot 12: 15 op, 305266728.00 ns, 20.3511 ms/op
+WorkloadPilot 13: 16 op, 264018087.00 ns, 16.5011 ms/op
+WorkloadPilot 14: 32 op, 486990525.00 ns, 15.2185 ms/op
+WorkloadPilot 15: 64 op, 963550381.00 ns, 15.0555 ms/op
+OverheadWarmup 1: 64 op, 1403.00 ns, 21.9219 ns/op
+OverheadWarmup 2: 64 op, 650.00 ns, 10.1563 ns/op
+OverheadWarmup 3: 64 op, 669.00 ns, 10.4531 ns/op
+OverheadWarmup 4: 64 op, 697.00 ns, 10.8906 ns/op
+OverheadWarmup 5: 64 op, 556.00 ns, 8.6875 ns/op
+OverheadWarmup 6: 64 op, 565.00 ns, 8.8281 ns/op
+OverheadWarmup 7: 64 op, 499.00 ns, 7.7969 ns/op
+OverheadActual 1: 64 op, 668.00 ns, 10.4375 ns/op
+OverheadActual 2: 64 op, 706.00 ns, 11.0313 ns/op
+OverheadActual 3: 64 op, 725.00 ns, 11.3281 ns/op
+OverheadActual 4: 64 op, 621.00 ns, 9.7031 ns/op
+OverheadActual 5: 64 op, 594.00 ns, 9.2813 ns/op
+OverheadActual 6: 64 op, 565.00 ns, 8.8281 ns/op
+OverheadActual 7: 64 op, 621.00 ns, 9.7031 ns/op
+OverheadActual 8: 64 op, 2156.00 ns, 33.6875 ns/op
+OverheadActual 9: 64 op, 744.00 ns, 11.6250 ns/op
+OverheadActual 10: 64 op, 961.00 ns, 15.0156 ns/op
+OverheadActual 11: 64 op, 687.00 ns, 10.7344 ns/op
+OverheadActual 12: 64 op, 555.00 ns, 8.6719 ns/op
+OverheadActual 13: 64 op, 650.00 ns, 10.1563 ns/op
+OverheadActual 14: 64 op, 631.00 ns, 9.8594 ns/op
+OverheadActual 15: 64 op, 612.00 ns, 9.5625 ns/op
+OverheadActual 16: 64 op, 480.00 ns, 7.5000 ns/op
+OverheadActual 17: 64 op, 537.00 ns, 8.3906 ns/op
+OverheadActual 18: 64 op, 593.00 ns, 9.2656 ns/op
+OverheadActual 19: 64 op, 555.00 ns, 8.6719 ns/op
+OverheadActual 20: 64 op, 857.00 ns, 13.3906 ns/op
+WorkloadWarmup 1: 64 op, 982348622.00 ns, 15.3492 ms/op
+WorkloadWarmup 2: 64 op, 969743196.00 ns, 15.1522 ms/op
+WorkloadWarmup 3: 64 op, 947818192.00 ns, 14.8097 ms/op
+WorkloadActual 1: 64 op, 962975427.00 ns, 15.0465 ms/op
+WorkloadActual 2: 64 op, 953979032.00 ns, 14.9059 ms/op
+WorkloadActual 3: 64 op, 962249756.00 ns, 15.0352 ms/op
+WorkloadActual 4: 64 op, 989814085.00 ns, 15.4658 ms/op
+WorkloadActual 5: 64 op, 953274878.00 ns, 14.8949 ms/op
+WorkloadActual 6: 64 op, 969491389.00 ns, 15.1483 ms/op
+WorkloadActual 7: 64 op, 952848870.00 ns, 14.8883 ms/op
+WorkloadActual 8: 64 op, 959780063.00 ns, 14.9966 ms/op
+WorkloadActual 9: 64 op, 953514078.00 ns, 14.8987 ms/op
+WorkloadActual 10: 64 op, 951547885.00 ns, 14.8679 ms/op
+WorkloadResult 1: 64 op, 962974801.00 ns, 15.0465 ms/op
+WorkloadResult 2: 64 op, 953978406.00 ns, 14.9059 ms/op
+WorkloadResult 3: 64 op, 962249130.00 ns, 15.0351 ms/op
+WorkloadResult 4: 64 op, 953274252.00 ns, 14.8949 ms/op
+WorkloadResult 5: 64 op, 969490763.00 ns, 15.1483 ms/op
+WorkloadResult 6: 64 op, 952848244.00 ns, 14.8883 ms/op
+WorkloadResult 7: 64 op, 959779437.00 ns, 14.9966 ms/op
+WorkloadResult 8: 64 op, 953513452.00 ns, 14.8986 ms/op
+WorkloadResult 9: 64 op, 951547259.00 ns, 14.8679 ms/op
+
+* Statistics for OverheadJitting
+Mean = 162.274 μs, StdErr = 0.000 μs (0.00%), N = 1, StdDev = 0.000 μs
+Min = 162.274 μs, Q1 = 162.274 μs, Median = 162.274 μs, Q3 = 162.274 μs, Max = 162.274 μs
+IQR = 0.000 μs, LowerFence = 162.274 μs, UpperFence = 162.274 μs
+ConfidenceInterval = [NaN μs; NaN μs] (CI 99.9%), Margin = NaN μs (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[162.274 μs ; 162.274 μs) | @
+---------------------------------------------------
+
+* Statistics for WorkloadJitting
+Mean = 317.857 ms, StdErr = 0.000 ms (0.00%), N = 1, StdDev = 0.000 ms
+Min = 317.857 ms, Q1 = 317.857 ms, Median = 317.857 ms, Q3 = 317.857 ms, Max = 317.857 ms
+IQR = 0.000 ms, LowerFence = 317.857 ms, UpperFence = 317.857 ms
+ConfidenceInterval = [NaN ms; NaN ms] (CI 99.9%), Margin = NaN ms (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[317.857 ms ; 317.857 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadPilot
+Mean = 25.103 ms, StdErr = 1.407 ms (5.60%), N = 15, StdDev = 5.447 ms
+Min = 15.055 ms, Q1 = 22.593 ms, Median = 28.334 ms, Q3 = 28.653 ms, Max = 29.492 ms
+IQR = 6.060 ms, LowerFence = 13.504 ms, UpperFence = 37.742 ms
+ConfidenceInterval = [19.279 ms; 30.926 ms] (CI 99.9%), Margin = 5.824 ms (23.20% of Mean)
+Skewness = -0.94, Kurtosis = 2.08, MValue = 2.73
+-------------------- Histogram --------------------
+[14.804 ms ; 20.602 ms) | @@@@
+[20.602 ms ; 24.265 ms) |
+[24.265 ms ; 30.063 ms) | @@@@@@@@@@@
+---------------------------------------------------
+
+* Statistics for OverheadWarmup
+Mean = 11.248 ns, StdErr = 1.827 ns (16.24%), N = 7, StdDev = 4.834 ns
+Min = 7.797 ns, Q1 = 8.758 ns, Median = 10.156 ns, Q3 = 10.672 ns, Max = 21.922 ns
+IQR = 1.914 ns, LowerFence = 5.887 ns, UpperFence = 13.543 ns
+ConfidenceInterval = [0.361 ns; 22.135 ns] (CI 99.9%), Margin = 10.887 ns (96.79% of Mean)
+Skewness = 1.44, Kurtosis = 3.45, MValue = 2
+-------------------- Histogram --------------------
+[ 6.027 ns ; 12.661 ns) | @@@@@@
+[12.661 ns ; 18.605 ns) |
+[18.605 ns ; 25.239 ns) | @
+---------------------------------------------------
+
+* Statistics for OverheadActual
+Mean = 11.342 ns, StdErr = 1.239 ns (10.92%), N = 20, StdDev = 5.540 ns
+Min = 7.500 ns, Q1 = 9.156 ns, Median = 9.781 ns, Q3 = 11.105 ns, Max = 33.688 ns
+IQR = 1.949 ns, LowerFence = 6.232 ns, UpperFence = 14.029 ns
+ConfidenceInterval = [6.532 ns; 16.153 ns] (CI 99.9%), Margin = 4.811 ns (42.41% of Mean)
+Skewness = 3.25, Kurtosis = 13.27, MValue = 2
+-------------------- Histogram --------------------
+[ 6.884 ns ; 12.241 ns) | @@@@@@@@@@@@@@@@@
+[12.241 ns ; 16.882 ns) | @@
+[16.882 ns ; 22.239 ns) |
+[22.239 ns ; 27.597 ns) |
+[27.597 ns ; 31.009 ns) |
+[31.009 ns ; 36.366 ns) | @
+---------------------------------------------------
+
+* Statistics for WorkloadWarmup
+Mean = 15.104 ms, StdErr = 0.158 ms (1.04%), N = 3, StdDev = 0.273 ms
+Min = 14.810 ms, Q1 = 14.981 ms, Median = 15.152 ms, Q3 = 15.251 ms, Max = 15.349 ms
+IQR = 0.270 ms, LowerFence = 14.576 ms, UpperFence = 15.655 ms
+ConfidenceInterval = [10.123 ms; 20.085 ms] (CI 99.9%), Margin = 4.981 ms (32.98% of Mean)
+Skewness = -0.17, Kurtosis = 0.67, MValue = 2
+-------------------- Histogram --------------------
+[14.561 ms ; 15.002 ms) | @
+[15.002 ms ; 15.598 ms) | @@
+---------------------------------------------------
+
+* Statistics for WorkloadActual
+Mean = 15.015 ms, StdErr = 0.058 ms (0.38%), N = 10, StdDev = 0.183 ms
+Min = 14.868 ms, Q1 = 14.896 ms, Median = 14.951 ms, Q3 = 15.044 ms, Max = 15.466 ms
+IQR = 0.148 ms, LowerFence = 14.674 ms, UpperFence = 15.265 ms
+ConfidenceInterval = [14.739 ms; 15.291 ms] (CI 99.9%), Margin = 0.276 ms (1.84% of Mean)
+Skewness = 1.38, Kurtosis = 3.86, MValue = 2
+-------------------- Histogram --------------------
+[14.808 ms ; 15.577 ms) | @@@@@@@@@@
+---------------------------------------------------
+
+* Statistics for WorkloadResult
+Mean = 14.965 ms, StdErr = 0.032 ms (0.21%), N = 9, StdDev = 0.096 ms
+Min = 14.868 ms, Q1 = 14.895 ms, Median = 14.906 ms, Q3 = 15.035 ms, Max = 15.148 ms
+IQR = 0.140 ms, LowerFence = 14.685 ms, UpperFence = 15.245 ms
+ConfidenceInterval = [14.803 ms; 15.127 ms] (CI 99.9%), Margin = 0.162 ms (1.08% of Mean)
+Skewness = 0.61, Kurtosis = 1.78, MValue = 2
+-------------------- Histogram --------------------
+[14.807 ms ; 15.209 ms) | @@@@@@@@@
+---------------------------------------------------
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-Job-BZGSBA-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-Job-BZGSBA-cummean.png
new file mode 100644
index 00000000..99c4c4d4
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-Job-BZGSBA-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-Job-BZGSBA-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-Job-BZGSBA-density.png
new file mode 100644
index 00000000..caa25eab
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-Job-BZGSBA-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-Job-BZGSBA-timeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-Job-BZGSBA-timeline.png
new file mode 100644
index 00000000..58d501ad
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-Job-BZGSBA-timeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-Job-BZGSBA-timelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-Job-BZGSBA-timelineSmooth.png
new file mode 100644
index 00000000..5dbc4762
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-Job-BZGSBA-timelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-cummean.png
new file mode 100644
index 00000000..a4d35bbb
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-density.png
new file mode 100644
index 00000000..caa25eab
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-facetDensity.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-facetDensity.png
new file mode 100644
index 00000000..22914457
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-facetDensity.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-facetTimeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-facetTimeline.png
new file mode 100644
index 00000000..53e637e8
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-facetTimeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-facetTimelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-facetTimelineSmooth.png
new file mode 100644
index 00000000..2f17baaf
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-New-facetTimelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-Job-BZGSBA-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-Job-BZGSBA-cummean.png
new file mode 100644
index 00000000..abaa8675
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-Job-BZGSBA-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-Job-BZGSBA-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-Job-BZGSBA-density.png
new file mode 100644
index 00000000..caa25eab
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-Job-BZGSBA-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-Job-BZGSBA-timeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-Job-BZGSBA-timeline.png
new file mode 100644
index 00000000..47628c56
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-Job-BZGSBA-timeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-Job-BZGSBA-timelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-Job-BZGSBA-timelineSmooth.png
new file mode 100644
index 00000000..270e4974
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-Job-BZGSBA-timelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-cummean.png
new file mode 100644
index 00000000..2c771b4c
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-density.png
new file mode 100644
index 00000000..caa25eab
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-facetDensity.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-facetDensity.png
new file mode 100644
index 00000000..22914457
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-facetDensity.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-facetTimeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-facetTimeline.png
new file mode 100644
index 00000000..7e726c1b
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-facetTimeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-facetTimelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-facetTimelineSmooth.png
new file mode 100644
index 00000000..8ca4cc35
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-Old-facetTimelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-asm.md b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-asm.md
new file mode 100644
index 00000000..d4abdb07
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-asm.md
@@ -0,0 +1,180 @@
+## .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+```assembly
+; Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks.New()
+ push rbp
+ sub rsp,20
+ lea rbp,[rsp+20]
+ vxorps xmm8,xmm8,xmm8
+ vmovdqu ymmword ptr [rbp-20],ymm8
+ mov [rbp-20],rdi
+ mov dword ptr [rbp-18],0FFFFFFFF
+ lea rdi,[rbp-20]
+ call qword ptr [7F347BAF4B40]
+ mov rax,[rbp-10]
+ test rax,rax
+ je short M00_L01
+M00_L00:
+ add rsp,20
+ pop rbp
+ ret
+M00_L01:
+ lea rdi,[rbp-10]
+ call qword ptr [7F347BCAE280]
+ jmp short M00_L00
+; Total bytes of code 68
+```
+```assembly
+; BenchmarkDotNet.Helpers.AwaitHelper.GetResult(System.Threading.Tasks.Task)
+ push rax
+ mov esi,[rdi+34]
+ and esi,11000000
+ cmp esi,1000000
+ jne short M01_L01
+M01_L00:
+ add rsp,8
+ ret
+M01_L01:
+ xor esi,esi
+ call qword ptr [7F347BAF6BE0]; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ jmp short M01_L00
+; Total bytes of code 33
+```
+```assembly
+; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ push rbp
+ push r15
+ push rbx
+ lea rbp,[rsp+10]
+ mov rbx,rdi
+ mov r15d,esi
+ test dword ptr [rbx+34],1600000
+ jne short M02_L00
+ mov rdi,rbx
+ xor edx,edx
+ mov esi,0FFFFFFFF
+ call qword ptr [7F347BAF6C10]; System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken)
+M02_L00:
+ test dword ptr [rbx+34],10000000
+ jne short M02_L03
+M02_L01:
+ mov edi,[rbx+34]
+ and edi,1600000
+ cmp edi,1000000
+ jne short M02_L04
+M02_L02:
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+M02_L03:
+ mov rdi,rbx
+ mov rax,[rbx]
+ mov rax,[rax+40]
+ call qword ptr [rax+20]
+ test eax,eax
+ je short M02_L01
+ mov rdi,rbx
+ call qword ptr [7F347BCADA70]
+ jmp short M02_L01
+M02_L04:
+ test r15b,2
+ jne short M02_L05
+ mov rdi,rbx
+ call qword ptr [7F347BCAE298]
+M02_L05:
+ mov rdi,rbx
+ call qword ptr [7F347BCAE8E0]
+ jmp short M02_L02
+; Total bytes of code 125
+```
+
+## .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+```assembly
+; Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks.Old()
+ push rbp
+ sub rsp,20
+ lea rbp,[rsp+20]
+ vxorps xmm8,xmm8,xmm8
+ vmovdqu ymmword ptr [rbp-20],ymm8
+ mov [rbp-20],rdi
+ mov dword ptr [rbp-18],0FFFFFFFF
+ lea rdi,[rbp-20]
+ call qword ptr [7FC4D43C4C18]
+ mov rax,[rbp-10]
+ test rax,rax
+ je short M00_L01
+M00_L00:
+ add rsp,20
+ pop rbp
+ ret
+M00_L01:
+ lea rdi,[rbp-10]
+ call qword ptr [7FC4D53543F0]
+ jmp short M00_L00
+; Total bytes of code 68
+```
+```assembly
+; BenchmarkDotNet.Helpers.AwaitHelper.GetResult(System.Threading.Tasks.Task)
+ push rax
+ mov esi,[rdi+34]
+ and esi,11000000
+ cmp esi,1000000
+ jne short M01_L01
+M01_L00:
+ add rsp,8
+ ret
+M01_L01:
+ xor esi,esi
+ call qword ptr [7FC4D43C6DA8]; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ jmp short M01_L00
+; Total bytes of code 33
+```
+```assembly
+; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ push rbp
+ push r15
+ push rbx
+ lea rbp,[rsp+10]
+ mov rbx,rdi
+ mov r15d,esi
+ test dword ptr [rbx+34],1600000
+ jne short M02_L00
+ mov rdi,rbx
+ xor edx,edx
+ mov esi,0FFFFFFFF
+ call qword ptr [7FC4D43C6DC0]; System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken)
+M02_L00:
+ test dword ptr [rbx+34],10000000
+ jne short M02_L03
+M02_L01:
+ mov edi,[rbx+34]
+ and edi,1600000
+ cmp edi,1000000
+ jne short M02_L04
+M02_L02:
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+M02_L03:
+ mov rdi,rbx
+ mov rax,[rbx]
+ mov rax,[rax+40]
+ call qword ptr [rax+20]
+ test eax,eax
+ je short M02_L01
+ mov rdi,rbx
+ call qword ptr [7FC4D51CFC90]
+ jmp short M02_L01
+M02_L04:
+ test r15b,2
+ jne short M02_L05
+ mov rdi,rbx
+ call qword ptr [7FC4D5354408]
+M02_L05:
+ mov rdi,rbx
+ call qword ptr [7FC4D5354960]
+ jmp short M02_L02
+; Total bytes of code 125
+```
+
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-barplot.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-barplot.png
new file mode 100644
index 00000000..1d99008c
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-barplot.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-boxplot.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-boxplot.png
new file mode 100644
index 00000000..2881517f
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-boxplot.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-measurements.csv b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-measurements.csv
new file mode 100644
index 00000000..46e7119b
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-measurements.csv
@@ -0,0 +1,136 @@
+Target,Target_Namespace,Target_Type,Target_Method,Job_Id,Job_AnalyzeLaunchVariance,Job_EvaluateOverhead,Job_MaxAbsoluteError,Job_MaxRelativeError,Job_MinInvokeCount,Job_MinIterationTime,Job_OutlierMode,Job_Affinity,Job_EnvironmentVariables,Job_Jit,Job_LargeAddressAware,Job_Platform,Job_PowerPlanMode,Job_Runtime,Job_AllowVeryLargeObjects,Job_Concurrent,Job_CpuGroups,Job_Force,Job_HeapAffinitizeMask,Job_HeapCount,Job_NoAffinitize,Job_RetainVm,Job_Server,Job_Arguments,Job_BuildConfiguration,Job_Clock,Job_EngineFactory,Job_NuGetReferences,Job_Toolchain,Job_IsMutator,Job_InvocationCount,Job_IterationCount,Job_IterationTime,Job_LaunchCount,Job_MaxIterationCount,Job_MaxWarmupIterationCount,Job_MemoryRandomization,Job_MinIterationCount,Job_MinWarmupIterationCount,Job_RunStrategy,Job_UnrollFactor,Job_WarmupCount,Job_Display,Params,Measurement_LaunchIndex,Measurement_IterationMode,Measurement_IterationStage,Measurement_IterationIndex,Measurement_Nanoseconds,Measurement_Operations,Measurement_Value,Gen_0,Gen_1,Gen_2,Allocated_Bytes
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Jitting,1,163315,1,163315,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Jitting,1,75045589,1,75045589,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,1,73585733,4,18396433.25,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,2,90344490,5,18068898,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,3,122450206,6,20408367.67,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,4,143155833,7,20450833.29,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,5,160669090,8,20083636.25,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,6,186772516,9,20752501.78,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,7,203439100,10,20343910,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,8,229867851,11,20897077.36,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,9,235865663,12,19655471.92,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,10,248795833,13,19138141,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,11,240415137,14,17172509.79,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,12,240843032,15,16056202.13,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,13,213923108,16,13370194.25,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,14,370358431,32,11573700.97,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,15,715927878,64,11186373.09,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,1,1542,64,24.09,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,2,440,64,6.88,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,3,421,64,6.58,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,4,411,64,6.42,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,5,430,64,6.72,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,6,458,64,7.16,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,7,402,64,6.28,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,8,412,64,6.44,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,9,440,64,6.88,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,10,449,64,7.02,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,1,448,64,7,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,2,439,64,6.86,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,3,552,64,8.63,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,4,430,64,6.72,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,5,439,64,6.86,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,6,439,64,6.86,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,7,1412,64,22.06,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,8,588,64,9.19,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,9,411,64,6.42,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,10,402,64,6.28,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,11,392,64,6.13,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,12,458,64,7.16,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,13,402,64,6.28,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,14,420,64,6.56,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,15,449,64,7.02,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,16,439,64,6.86,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,17,420,64,6.56,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,18,421,64,6.58,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,1,728584510,64,11384132.97,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,2,720836671,64,11263072.98,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,3,729443886,64,11397560.72,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,1,717436956,64,11209952.44,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,2,722612266,64,11290816.66,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,3,724592926,64,11321764.47,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,4,720022193,64,11250346.77,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,5,716161544,64,11190024.13,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,6,717104520,64,11204758.13,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,7,718367247,64,11224488.23,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,8,715810029,64,11184531.7,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,9,716361194,64,11193143.66,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,10,720064789,64,11251012.33,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,1,717436517,64,11209945.58,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,2,722611827,64,11290809.8,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,3,724592487,64,11321757.61,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,4,720021754,64,11250339.91,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,5,716161105,64,11190017.27,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,6,717104081,64,11204751.27,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,7,718366808,64,11224481.38,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,8,715809590,64,11184524.84,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,9,716360755,64,11193136.8,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,10,720064350,64,11251005.47,34,16,0,8913528
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Jitting,1,163026,1,163026,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Jitting,1,344338888,1,344338888,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,1,178830641,4,44707660.25,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,2,229970002,5,45994000.4,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,3,300778387,6,50129731.17,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,4,330568003,7,47224000.43,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,5,377093580,8,47136697.5,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,6,415616243,9,46179582.56,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,7,454481132,10,45448113.2,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,8,444894899,11,40444990.82,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,9,405568943,12,33797411.92,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,10,413822005,13,31832461.92,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,11,435045945,14,31074710.36,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,12,458891076,15,30592738.4,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,13,487642766,16,30477672.88,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,14,993491175,32,31046599.22,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,1,2212,32,69.13,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,2,427,32,13.34,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,3,390,32,12.19,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,4,363,32,11.34,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,5,437,32,13.66,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,6,400,32,12.5,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,7,437,32,13.66,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,8,390,32,12.19,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,1,428,32,13.38,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,2,400,32,12.5,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,3,409,32,12.78,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,4,455,32,14.22,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,5,428,32,13.38,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,6,372,32,11.63,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,7,799,32,24.97,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,8,418,32,13.06,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,9,1841,32,57.53,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,10,613,32,19.16,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,11,325,32,10.16,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,12,381,32,11.91,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,13,418,32,13.06,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,14,437,32,13.66,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,15,353,32,11.03,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,16,419,32,13.09,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,17,353,32,11.03,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,18,419,32,13.09,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,19,381,32,11.91,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,20,456,32,14.25,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,1,996557844,32,31142432.63,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,2,992011391,32,31000355.97,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,3,989977628,32,30936800.88,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,1,981453849,32,30670432.78,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,2,994001899,32,31062559.34,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,3,976046384,32,30501449.5,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,4,981320301,32,30666259.41,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,5,983741536,32,30741923,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,6,983681285,32,30740040.16,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,7,985411541,32,30794110.66,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,8,982001227,32,30687538.34,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,9,1006290051,32,31446564.09,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,10,1002454841,32,31326713.78,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,1,981453430.5,32,30670419.7,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,2,994001480.5,32,31062546.27,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,3,976045965.5,32,30501436.42,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,4,981319882.5,32,30666246.33,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,5,983741117.5,32,30741909.92,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,6,983680866.5,32,30740027.08,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,7,985411122.5,32,30794097.58,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,8,982000808.5,32,30687525.27,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,9,1006289632.5,32,31446551.02,26,0,0,13627079
+AlonzoDuplicateKeyBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,AlonzoDuplicateKeyBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,10,1002454422.5,32,31326700.7,26,0,0,13627079
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-report-github.md b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-report-github.md
new file mode 100644
index 00000000..c76adfb4
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-report-github.md
@@ -0,0 +1,16 @@
+```
+
+BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat) WSL
+AMD Ryzen 9 5950X, 1 CPU, 32 logical and 16 physical cores
+.NET SDK 9.0.102
+ [Host] : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2 DEBUG
+ Job-ONJMYK : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+
+IterationCount=10 MaxIterationCount=20 UnrollFactor=1
+WarmupCount=3
+
+```
+| Method | Mean | Error | StdDev | Min | Max | Code Size | Gen0 | Gen1 | Allocated |
+|------- |---------:|---------:|---------:|---------:|---------:|----------:|---------:|---------:|----------:|
+| New | 11.23 ms | 0.070 ms | 0.046 ms | 11.18 ms | 11.32 ms | 226 B | 531.2500 | 250.0000 | 8.5 MB |
+| Old | 30.86 ms | 0.469 ms | 0.310 ms | 30.50 ms | 31.45 ms | 226 B | 812.5000 | - | 13 MB |
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-report.csv b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-report.csv
new file mode 100644
index 00000000..97781beb
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-report.csv
@@ -0,0 +1,3 @@
+Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Min,Max,Code Size,Gen0,Gen1,Allocated
+New,Job-ONJMYK,False,Default,Default,Default,Default,Default,Default,11111111111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,11.23 ms,0.070 ms,0.046 ms,11.18 ms,11.32 ms,226 B,531.2500,250.0000,8.5 MB
+Old,Job-ONJMYK,False,Default,Default,Default,Default,Default,Default,11111111111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,30.86 ms,0.469 ms,0.310 ms,30.50 ms,31.45 ms,226 B,812.5000,0.0000,13 MB
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-report.html b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-report.html
new file mode 100644
index 00000000..21a55fef
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-report.html
@@ -0,0 +1,33 @@
+
+
+
+
+Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-20250220-033611
+
+
+
+
+
+BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat) WSL
+AMD Ryzen 9 5950X, 1 CPU, 32 logical and 16 physical cores
+.NET SDK 9.0.102
+ [Host] : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2 DEBUG
+ Job-ONJMYK : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+
+IterationCount=10 MaxIterationCount=20 UnrollFactor=1
+WarmupCount=3
+
+
+
+Method Mean Error StdDev Min Max Code Size Gen0 Gen1 Allocated
+
+New 11.23 ms 0.070 ms 0.046 ms 11.18 ms 11.32 ms 226 B 531.2500 250.0000 8.5 MB
+Old 30.86 ms 0.469 ms 0.310 ms 30.50 ms 31.45 ms 226 B 812.5000 - 13 MB
+
+
+
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-report.txt b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-report.txt
new file mode 100644
index 00000000..209f3040
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.AlonzoDuplicateKeyBenchmarks-report.txt
@@ -0,0 +1,318 @@
+*** AlonzoDuplicateKeyBenchmarks.New: Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3) ***
+* Raw *
+OverheadJitting 1: 1 op, 163315.00 ns, 163.3150 us/op
+WorkloadJitting 1: 1 op, 75045589.00 ns, 75.0456 ms/op
+WorkloadPilot 1: 4 op, 73585733.00 ns, 18.3964 ms/op
+WorkloadPilot 2: 5 op, 90344490.00 ns, 18.0689 ms/op
+WorkloadPilot 3: 6 op, 122450206.00 ns, 20.4084 ms/op
+WorkloadPilot 4: 7 op, 143155833.00 ns, 20.4508 ms/op
+WorkloadPilot 5: 8 op, 160669090.00 ns, 20.0836 ms/op
+WorkloadPilot 6: 9 op, 186772516.00 ns, 20.7525 ms/op
+WorkloadPilot 7: 10 op, 203439100.00 ns, 20.3439 ms/op
+WorkloadPilot 8: 11 op, 229867851.00 ns, 20.8971 ms/op
+WorkloadPilot 9: 12 op, 235865663.00 ns, 19.6555 ms/op
+WorkloadPilot 10: 13 op, 248795833.00 ns, 19.1381 ms/op
+WorkloadPilot 11: 14 op, 240415137.00 ns, 17.1725 ms/op
+WorkloadPilot 12: 15 op, 240843032.00 ns, 16.0562 ms/op
+WorkloadPilot 13: 16 op, 213923108.00 ns, 13.3702 ms/op
+WorkloadPilot 14: 32 op, 370358431.00 ns, 11.5737 ms/op
+WorkloadPilot 15: 64 op, 715927878.00 ns, 11.1864 ms/op
+OverheadWarmup 1: 64 op, 1542.00 ns, 24.0938 ns/op
+OverheadWarmup 2: 64 op, 440.00 ns, 6.8750 ns/op
+OverheadWarmup 3: 64 op, 421.00 ns, 6.5781 ns/op
+OverheadWarmup 4: 64 op, 411.00 ns, 6.4219 ns/op
+OverheadWarmup 5: 64 op, 430.00 ns, 6.7188 ns/op
+OverheadWarmup 6: 64 op, 458.00 ns, 7.1563 ns/op
+OverheadWarmup 7: 64 op, 402.00 ns, 6.2813 ns/op
+OverheadWarmup 8: 64 op, 412.00 ns, 6.4375 ns/op
+OverheadWarmup 9: 64 op, 440.00 ns, 6.8750 ns/op
+OverheadWarmup 10: 64 op, 449.00 ns, 7.0156 ns/op
+OverheadActual 1: 64 op, 448.00 ns, 7.0000 ns/op
+OverheadActual 2: 64 op, 439.00 ns, 6.8594 ns/op
+OverheadActual 3: 64 op, 552.00 ns, 8.6250 ns/op
+OverheadActual 4: 64 op, 430.00 ns, 6.7188 ns/op
+OverheadActual 5: 64 op, 439.00 ns, 6.8594 ns/op
+OverheadActual 6: 64 op, 439.00 ns, 6.8594 ns/op
+OverheadActual 7: 64 op, 1412.00 ns, 22.0625 ns/op
+OverheadActual 8: 64 op, 588.00 ns, 9.1875 ns/op
+OverheadActual 9: 64 op, 411.00 ns, 6.4219 ns/op
+OverheadActual 10: 64 op, 402.00 ns, 6.2813 ns/op
+OverheadActual 11: 64 op, 392.00 ns, 6.1250 ns/op
+OverheadActual 12: 64 op, 458.00 ns, 7.1563 ns/op
+OverheadActual 13: 64 op, 402.00 ns, 6.2813 ns/op
+OverheadActual 14: 64 op, 420.00 ns, 6.5625 ns/op
+OverheadActual 15: 64 op, 449.00 ns, 7.0156 ns/op
+OverheadActual 16: 64 op, 439.00 ns, 6.8594 ns/op
+OverheadActual 17: 64 op, 420.00 ns, 6.5625 ns/op
+OverheadActual 18: 64 op, 421.00 ns, 6.5781 ns/op
+WorkloadWarmup 1: 64 op, 728584510.00 ns, 11.3841 ms/op
+WorkloadWarmup 2: 64 op, 720836671.00 ns, 11.2631 ms/op
+WorkloadWarmup 3: 64 op, 729443886.00 ns, 11.3976 ms/op
+WorkloadActual 1: 64 op, 717436956.00 ns, 11.2100 ms/op
+WorkloadActual 2: 64 op, 722612266.00 ns, 11.2908 ms/op
+WorkloadActual 3: 64 op, 724592926.00 ns, 11.3218 ms/op
+WorkloadActual 4: 64 op, 720022193.00 ns, 11.2503 ms/op
+WorkloadActual 5: 64 op, 716161544.00 ns, 11.1900 ms/op
+WorkloadActual 6: 64 op, 717104520.00 ns, 11.2048 ms/op
+WorkloadActual 7: 64 op, 718367247.00 ns, 11.2245 ms/op
+WorkloadActual 8: 64 op, 715810029.00 ns, 11.1845 ms/op
+WorkloadActual 9: 64 op, 716361194.00 ns, 11.1931 ms/op
+WorkloadActual 10: 64 op, 720064789.00 ns, 11.2510 ms/op
+WorkloadResult 1: 64 op, 717436517.00 ns, 11.2099 ms/op
+WorkloadResult 2: 64 op, 722611827.00 ns, 11.2908 ms/op
+WorkloadResult 3: 64 op, 724592487.00 ns, 11.3218 ms/op
+WorkloadResult 4: 64 op, 720021754.00 ns, 11.2503 ms/op
+WorkloadResult 5: 64 op, 716161105.00 ns, 11.1900 ms/op
+WorkloadResult 6: 64 op, 717104081.00 ns, 11.2048 ms/op
+WorkloadResult 7: 64 op, 718366808.00 ns, 11.2245 ms/op
+WorkloadResult 8: 64 op, 715809590.00 ns, 11.1845 ms/op
+WorkloadResult 9: 64 op, 716360755.00 ns, 11.1931 ms/op
+WorkloadResult 10: 64 op, 720064350.00 ns, 11.2510 ms/op
+
+* Statistics for OverheadJitting
+Mean = 163.315 μs, StdErr = 0.000 μs (0.00%), N = 1, StdDev = 0.000 μs
+Min = 163.315 μs, Q1 = 163.315 μs, Median = 163.315 μs, Q3 = 163.315 μs, Max = 163.315 μs
+IQR = 0.000 μs, LowerFence = 163.315 μs, UpperFence = 163.315 μs
+ConfidenceInterval = [NaN μs; NaN μs] (CI 99.9%), Margin = NaN μs (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[163.315 μs ; 163.315 μs) | @
+---------------------------------------------------
+
+* Statistics for WorkloadJitting
+Mean = 75.046 ms, StdErr = 0.000 ms (0.00%), N = 1, StdDev = 0.000 ms
+Min = 75.046 ms, Q1 = 75.046 ms, Median = 75.046 ms, Q3 = 75.046 ms, Max = 75.046 ms
+IQR = 0.000 ms, LowerFence = 75.046 ms, UpperFence = 75.046 ms
+ConfidenceInterval = [NaN ms; NaN ms] (CI 99.9%), Margin = NaN ms (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[75.046 ms ; 75.046 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadPilot
+Mean = 17.837 ms, StdErr = 0.859 ms (4.82%), N = 15, StdDev = 3.328 ms
+Min = 11.186 ms, Q1 = 16.614 ms, Median = 19.138 ms, Q3 = 20.376 ms, Max = 20.897 ms
+IQR = 3.762 ms, LowerFence = 10.972 ms, UpperFence = 26.019 ms
+ConfidenceInterval = [14.279 ms; 21.394 ms] (CI 99.9%), Margin = 3.558 ms (19.94% of Mean)
+Skewness = -0.92, Kurtosis = 2.3, MValue = 2.2
+-------------------- Histogram --------------------
+[10.507 ms ; 14.049 ms) | @@@
+[14.049 ms ; 17.712 ms) | @@
+[17.712 ms ; 21.254 ms) | @@@@@@@@@@
+---------------------------------------------------
+
+* Statistics for OverheadWarmup
+Mean = 8.445 ns, StdErr = 1.741 ns (20.61%), N = 10, StdDev = 5.505 ns
+Min = 6.281 ns, Q1 = 6.473 ns, Median = 6.797 ns, Q3 = 6.980 ns, Max = 24.094 ns
+IQR = 0.508 ns, LowerFence = 5.711 ns, UpperFence = 7.742 ns
+ConfidenceInterval = [0.122 ns; 16.769 ns] (CI 99.9%), Margin = 8.323 ns (98.56% of Mean)
+Skewness = 2.27, Kurtosis = 6.54, MValue = 3.5
+-------------------- Histogram --------------------
+[ 2.927 ns ; 10.073 ns) | @@@@@@@@@
+[10.073 ns ; 16.781 ns) |
+[16.781 ns ; 20.740 ns) |
+[20.740 ns ; 27.448 ns) | @
+---------------------------------------------------
+
+* Statistics for OverheadActual
+Mean = 7.779 ns, StdErr = 0.860 ns (11.05%), N = 18, StdDev = 3.648 ns
+Min = 6.125 ns, Q1 = 6.562 ns, Median = 6.859 ns, Q3 = 7.012 ns, Max = 22.062 ns
+IQR = 0.449 ns, LowerFence = 5.889 ns, UpperFence = 7.686 ns
+ConfidenceInterval = [4.369 ns; 11.188 ns] (CI 99.9%), Margin = 3.410 ns (43.83% of Mean)
+Skewness = 3.31, Kurtosis = 13.07, MValue = 2
+-------------------- Histogram --------------------
+[ 5.829 ns ; 9.483 ns) | @@@@@@@@@@@@@@@@@
+[ 9.483 ns ; 13.138 ns) |
+[13.138 ns ; 16.792 ns) |
+[16.792 ns ; 20.235 ns) |
+[20.235 ns ; 23.890 ns) | @
+---------------------------------------------------
+
+* Statistics for WorkloadWarmup
+Mean = 11.348 ms, StdErr = 0.043 ms (0.38%), N = 3, StdDev = 0.074 ms
+Min = 11.263 ms, Q1 = 11.324 ms, Median = 11.384 ms, Q3 = 11.391 ms, Max = 11.398 ms
+IQR = 0.067 ms, LowerFence = 11.223 ms, UpperFence = 11.492 ms
+ConfidenceInterval = [9.997 ms; 12.700 ms] (CI 99.9%), Margin = 1.351 ms (11.91% of Mean)
+Skewness = -0.37, Kurtosis = 0.67, MValue = 2
+-------------------- Histogram --------------------
+[11.263 ms ; 11.398 ms) | @@@
+---------------------------------------------------
+
+* Statistics for WorkloadActual
+Mean = 11.232 ms, StdErr = 0.015 ms (0.13%), N = 10, StdDev = 0.046 ms
+Min = 11.185 ms, Q1 = 11.196 ms, Median = 11.217 ms, Q3 = 11.251 ms, Max = 11.322 ms
+IQR = 0.055 ms, LowerFence = 11.114 ms, UpperFence = 11.333 ms
+ConfidenceInterval = [11.163 ms; 11.302 ms] (CI 99.9%), Margin = 0.070 ms (0.62% of Mean)
+Skewness = 0.68, Kurtosis = 1.97, MValue = 2
+-------------------- Histogram --------------------
+[11.157 ms ; 11.350 ms) | @@@@@@@@@@
+---------------------------------------------------
+
+* Statistics for WorkloadResult
+Mean = 11.232 ms, StdErr = 0.015 ms (0.13%), N = 10, StdDev = 0.046 ms
+Min = 11.185 ms, Q1 = 11.196 ms, Median = 11.217 ms, Q3 = 11.251 ms, Max = 11.322 ms
+IQR = 0.055 ms, LowerFence = 11.114 ms, UpperFence = 11.333 ms
+ConfidenceInterval = [11.163 ms; 11.302 ms] (CI 99.9%), Margin = 0.070 ms (0.62% of Mean)
+Skewness = 0.68, Kurtosis = 1.97, MValue = 2
+-------------------- Histogram --------------------
+[11.157 ms ; 11.350 ms) | @@@@@@@@@@
+---------------------------------------------------
+*** AlonzoDuplicateKeyBenchmarks.Old: Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3) ***
+* Raw *
+OverheadJitting 1: 1 op, 163026.00 ns, 163.0260 us/op
+WorkloadJitting 1: 1 op, 344338888.00 ns, 344.3389 ms/op
+WorkloadPilot 1: 4 op, 178830641.00 ns, 44.7077 ms/op
+WorkloadPilot 2: 5 op, 229970002.00 ns, 45.9940 ms/op
+WorkloadPilot 3: 6 op, 300778387.00 ns, 50.1297 ms/op
+WorkloadPilot 4: 7 op, 330568003.00 ns, 47.2240 ms/op
+WorkloadPilot 5: 8 op, 377093580.00 ns, 47.1367 ms/op
+WorkloadPilot 6: 9 op, 415616243.00 ns, 46.1796 ms/op
+WorkloadPilot 7: 10 op, 454481132.00 ns, 45.4481 ms/op
+WorkloadPilot 8: 11 op, 444894899.00 ns, 40.4450 ms/op
+WorkloadPilot 9: 12 op, 405568943.00 ns, 33.7974 ms/op
+WorkloadPilot 10: 13 op, 413822005.00 ns, 31.8325 ms/op
+WorkloadPilot 11: 14 op, 435045945.00 ns, 31.0747 ms/op
+WorkloadPilot 12: 15 op, 458891076.00 ns, 30.5927 ms/op
+WorkloadPilot 13: 16 op, 487642766.00 ns, 30.4777 ms/op
+WorkloadPilot 14: 32 op, 993491175.00 ns, 31.0466 ms/op
+OverheadWarmup 1: 32 op, 2212.00 ns, 69.1250 ns/op
+OverheadWarmup 2: 32 op, 427.00 ns, 13.3438 ns/op
+OverheadWarmup 3: 32 op, 390.00 ns, 12.1875 ns/op
+OverheadWarmup 4: 32 op, 363.00 ns, 11.3438 ns/op
+OverheadWarmup 5: 32 op, 437.00 ns, 13.6563 ns/op
+OverheadWarmup 6: 32 op, 400.00 ns, 12.5000 ns/op
+OverheadWarmup 7: 32 op, 437.00 ns, 13.6563 ns/op
+OverheadWarmup 8: 32 op, 390.00 ns, 12.1875 ns/op
+OverheadActual 1: 32 op, 428.00 ns, 13.3750 ns/op
+OverheadActual 2: 32 op, 400.00 ns, 12.5000 ns/op
+OverheadActual 3: 32 op, 409.00 ns, 12.7813 ns/op
+OverheadActual 4: 32 op, 455.00 ns, 14.2188 ns/op
+OverheadActual 5: 32 op, 428.00 ns, 13.3750 ns/op
+OverheadActual 6: 32 op, 372.00 ns, 11.6250 ns/op
+OverheadActual 7: 32 op, 799.00 ns, 24.9688 ns/op
+OverheadActual 8: 32 op, 418.00 ns, 13.0625 ns/op
+OverheadActual 9: 32 op, 1841.00 ns, 57.5313 ns/op
+OverheadActual 10: 32 op, 613.00 ns, 19.1563 ns/op
+OverheadActual 11: 32 op, 325.00 ns, 10.1563 ns/op
+OverheadActual 12: 32 op, 381.00 ns, 11.9063 ns/op
+OverheadActual 13: 32 op, 418.00 ns, 13.0625 ns/op
+OverheadActual 14: 32 op, 437.00 ns, 13.6563 ns/op
+OverheadActual 15: 32 op, 353.00 ns, 11.0313 ns/op
+OverheadActual 16: 32 op, 419.00 ns, 13.0938 ns/op
+OverheadActual 17: 32 op, 353.00 ns, 11.0313 ns/op
+OverheadActual 18: 32 op, 419.00 ns, 13.0938 ns/op
+OverheadActual 19: 32 op, 381.00 ns, 11.9063 ns/op
+OverheadActual 20: 32 op, 456.00 ns, 14.2500 ns/op
+WorkloadWarmup 1: 32 op, 996557844.00 ns, 31.1424 ms/op
+WorkloadWarmup 2: 32 op, 992011391.00 ns, 31.0004 ms/op
+WorkloadWarmup 3: 32 op, 989977628.00 ns, 30.9368 ms/op
+WorkloadActual 1: 32 op, 981453849.00 ns, 30.6704 ms/op
+WorkloadActual 2: 32 op, 994001899.00 ns, 31.0626 ms/op
+WorkloadActual 3: 32 op, 976046384.00 ns, 30.5014 ms/op
+WorkloadActual 4: 32 op, 981320301.00 ns, 30.6663 ms/op
+WorkloadActual 5: 32 op, 983741536.00 ns, 30.7419 ms/op
+WorkloadActual 6: 32 op, 983681285.00 ns, 30.7400 ms/op
+WorkloadActual 7: 32 op, 985411541.00 ns, 30.7941 ms/op
+WorkloadActual 8: 32 op, 982001227.00 ns, 30.6875 ms/op
+WorkloadActual 9: 32 op, 1006290051.00 ns, 31.4466 ms/op
+WorkloadActual 10: 32 op, 1002454841.00 ns, 31.3267 ms/op
+WorkloadResult 1: 32 op, 981453430.50 ns, 30.6704 ms/op
+WorkloadResult 2: 32 op, 994001480.50 ns, 31.0625 ms/op
+WorkloadResult 3: 32 op, 976045965.50 ns, 30.5014 ms/op
+WorkloadResult 4: 32 op, 981319882.50 ns, 30.6662 ms/op
+WorkloadResult 5: 32 op, 983741117.50 ns, 30.7419 ms/op
+WorkloadResult 6: 32 op, 983680866.50 ns, 30.7400 ms/op
+WorkloadResult 7: 32 op, 985411122.50 ns, 30.7941 ms/op
+WorkloadResult 8: 32 op, 982000808.50 ns, 30.6875 ms/op
+WorkloadResult 9: 32 op, 1006289632.50 ns, 31.4466 ms/op
+WorkloadResult 10: 32 op, 1002454422.50 ns, 31.3267 ms/op
+
+* Statistics for OverheadJitting
+Mean = 163.026 μs, StdErr = 0.000 μs (0.00%), N = 1, StdDev = 0.000 μs
+Min = 163.026 μs, Q1 = 163.026 μs, Median = 163.026 μs, Q3 = 163.026 μs, Max = 163.026 μs
+IQR = 0.000 μs, LowerFence = 163.026 μs, UpperFence = 163.026 μs
+ConfidenceInterval = [NaN μs; NaN μs] (CI 99.9%), Margin = NaN μs (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[163.025 μs ; 163.026 μs) | @
+---------------------------------------------------
+
+* Statistics for WorkloadJitting
+Mean = 344.339 ms, StdErr = 0.000 ms (0.00%), N = 1, StdDev = 0.000 ms
+Min = 344.339 ms, Q1 = 344.339 ms, Median = 344.339 ms, Q3 = 344.339 ms, Max = 344.339 ms
+IQR = 0.000 ms, LowerFence = 344.339 ms, UpperFence = 344.339 ms
+ConfidenceInterval = [NaN ms; NaN ms] (CI 99.9%), Margin = NaN ms (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[344.339 ms ; 344.339 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadPilot
+Mean = 39.720 ms, StdErr = 2.064 ms (5.20%), N = 14, StdDev = 7.721 ms
+Min = 30.478 ms, Q1 = 31.264 ms, Median = 42.576 ms, Q3 = 46.133 ms, Max = 50.130 ms
+IQR = 14.869 ms, LowerFence = 8.961 ms, UpperFence = 68.437 ms
+ConfidenceInterval = [31.011 ms; 48.430 ms] (CI 99.9%), Margin = 8.710 ms (21.93% of Mean)
+Skewness = -0.12, Kurtosis = 1.08, MValue = 3.43
+-------------------- Histogram --------------------
+[27.933 ms ; 36.342 ms) | @@@@@@
+[36.342 ms ; 43.214 ms) | @
+[43.214 ms ; 51.623 ms) | @@@@@@@
+---------------------------------------------------
+
+* Statistics for OverheadWarmup
+Mean = 19.750 ns, StdErr = 7.059 ns (35.74%), N = 8, StdDev = 19.967 ns
+Min = 11.344 ns, Q1 = 12.188 ns, Median = 12.922 ns, Q3 = 13.656 ns, Max = 69.125 ns
+IQR = 1.469 ns, LowerFence = 9.984 ns, UpperFence = 15.859 ns
+ConfidenceInterval = [-18.427 ns; 57.927 ns] (CI 99.9%), Margin = 38.177 ns (193.30% of Mean)
+Skewness = 1.85, Kurtosis = 4.69, MValue = 2
+-------------------- Histogram --------------------
+[-1.760 ns ; 25.603 ns) | @@@@@@@
+[25.603 ns ; 56.022 ns) |
+[56.022 ns ; 82.229 ns) | @
+---------------------------------------------------
+
+* Statistics for OverheadActual
+Mean = 15.789 ns, StdErr = 2.313 ns (14.65%), N = 20, StdDev = 10.344 ns
+Min = 10.156 ns, Q1 = 11.906 ns, Median = 13.078 ns, Q3 = 13.797 ns, Max = 57.531 ns
+IQR = 1.891 ns, LowerFence = 9.070 ns, UpperFence = 16.633 ns
+ConfidenceInterval = [6.807 ns; 24.771 ns] (CI 99.9%), Margin = 8.982 ns (56.89% of Mean)
+Skewness = 3.29, Kurtosis = 13.31, MValue = 3.11
+-------------------- Histogram --------------------
+[ 9.655 ns ; 19.658 ns) | @@@@@@@@@@@@@@@@@@
+[19.658 ns ; 29.970 ns) | @
+[29.970 ns ; 39.973 ns) |
+[39.973 ns ; 52.530 ns) |
+[52.530 ns ; 62.533 ns) | @
+---------------------------------------------------
+
+* Statistics for WorkloadWarmup
+Mean = 31.027 ms, StdErr = 0.061 ms (0.20%), N = 3, StdDev = 0.105 ms
+Min = 30.937 ms, Q1 = 30.969 ms, Median = 31.000 ms, Q3 = 31.071 ms, Max = 31.142 ms
+IQR = 0.103 ms, LowerFence = 30.814 ms, UpperFence = 31.226 ms
+ConfidenceInterval = [29.106 ms; 32.947 ms] (CI 99.9%), Margin = 1.921 ms (6.19% of Mean)
+Skewness = 0.23, Kurtosis = 0.67, MValue = 2
+-------------------- Histogram --------------------
+[30.841 ms ; 31.238 ms) | @@@
+---------------------------------------------------
+
+* Statistics for WorkloadActual
+Mean = 30.864 ms, StdErr = 0.098 ms (0.32%), N = 10, StdDev = 0.310 ms
+Min = 30.501 ms, Q1 = 30.675 ms, Median = 30.741 ms, Q3 = 30.995 ms, Max = 31.447 ms
+IQR = 0.321 ms, LowerFence = 30.194 ms, UpperFence = 31.477 ms
+ConfidenceInterval = [30.394 ms; 31.333 ms] (CI 99.9%), Margin = 0.469 ms (1.52% of Mean)
+Skewness = 0.78, Kurtosis = 1.99, MValue = 2
+-------------------- Histogram --------------------
+[30.312 ms ; 30.954 ms) | @@@@@@@
+[30.954 ms ; 31.636 ms) | @@@
+---------------------------------------------------
+
+* Statistics for WorkloadResult
+Mean = 30.864 ms, StdErr = 0.098 ms (0.32%), N = 10, StdDev = 0.310 ms
+Min = 30.501 ms, Q1 = 30.675 ms, Median = 30.741 ms, Q3 = 30.995 ms, Max = 31.447 ms
+IQR = 0.321 ms, LowerFence = 30.194 ms, UpperFence = 31.477 ms
+ConfidenceInterval = [30.394 ms; 31.333 ms] (CI 99.9%), Margin = 0.469 ms (1.52% of Mean)
+Skewness = 0.78, Kurtosis = 1.99, MValue = 2
+-------------------- Histogram --------------------
+[30.312 ms ; 30.954 ms) | @@@@@@@
+[30.954 ms ; 31.636 ms) | @@@
+---------------------------------------------------
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-Job-BZGSBA-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-Job-BZGSBA-cummean.png
new file mode 100644
index 00000000..d74eb2d4
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-Job-BZGSBA-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-Job-BZGSBA-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-Job-BZGSBA-density.png
new file mode 100644
index 00000000..eecadf67
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-Job-BZGSBA-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-Job-BZGSBA-timeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-Job-BZGSBA-timeline.png
new file mode 100644
index 00000000..031de9e9
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-Job-BZGSBA-timeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-Job-BZGSBA-timelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-Job-BZGSBA-timelineSmooth.png
new file mode 100644
index 00000000..ee847e93
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-Job-BZGSBA-timelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-cummean.png
new file mode 100644
index 00000000..3a5f2e45
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-density.png
new file mode 100644
index 00000000..eecadf67
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-facetDensity.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-facetDensity.png
new file mode 100644
index 00000000..1bb8284b
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-facetDensity.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-facetTimeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-facetTimeline.png
new file mode 100644
index 00000000..7c8e0b39
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-facetTimeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-facetTimelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-facetTimelineSmooth.png
new file mode 100644
index 00000000..a7555eac
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-New-facetTimelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-Job-BZGSBA-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-Job-BZGSBA-cummean.png
new file mode 100644
index 00000000..6f6f93d2
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-Job-BZGSBA-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-Job-BZGSBA-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-Job-BZGSBA-density.png
new file mode 100644
index 00000000..eecadf67
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-Job-BZGSBA-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-Job-BZGSBA-timeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-Job-BZGSBA-timeline.png
new file mode 100644
index 00000000..bc0e2507
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-Job-BZGSBA-timeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-Job-BZGSBA-timelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-Job-BZGSBA-timelineSmooth.png
new file mode 100644
index 00000000..b5a65442
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-Job-BZGSBA-timelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-cummean.png
new file mode 100644
index 00000000..36e692c7
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-density.png
new file mode 100644
index 00000000..eecadf67
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-facetDensity.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-facetDensity.png
new file mode 100644
index 00000000..1bb8284b
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-facetDensity.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-facetTimeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-facetTimeline.png
new file mode 100644
index 00000000..f6c86573
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-facetTimeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-facetTimelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-facetTimelineSmooth.png
new file mode 100644
index 00000000..53b3aa8b
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-Old-facetTimelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-asm.md b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-asm.md
new file mode 100644
index 00000000..07aaa24d
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-asm.md
@@ -0,0 +1,180 @@
+## .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+```assembly
+; Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks.New()
+ push rbp
+ sub rsp,20
+ lea rbp,[rsp+20]
+ vxorps xmm8,xmm8,xmm8
+ vmovdqu ymmword ptr [rbp-20],ymm8
+ mov [rbp-20],rdi
+ mov dword ptr [rbp-18],0FFFFFFFF
+ lea rdi,[rbp-20]
+ call qword ptr [7F8492EC4C18]
+ mov rax,[rbp-10]
+ test rax,rax
+ je short M00_L01
+M00_L00:
+ add rsp,20
+ pop rbp
+ ret
+M00_L01:
+ lea rdi,[rbp-10]
+ call qword ptr [7F849308E220]
+ jmp short M00_L00
+; Total bytes of code 68
+```
+```assembly
+; BenchmarkDotNet.Helpers.AwaitHelper.GetResult(System.Threading.Tasks.Task)
+ push rax
+ mov esi,[rdi+34]
+ and esi,11000000
+ cmp esi,1000000
+ jne short M01_L01
+M01_L00:
+ add rsp,8
+ ret
+M01_L01:
+ xor esi,esi
+ call qword ptr [7F8492EC6CE8]; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ jmp short M01_L00
+; Total bytes of code 33
+```
+```assembly
+; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ push rbp
+ push r15
+ push rbx
+ lea rbp,[rsp+10]
+ mov rbx,rdi
+ mov r15d,esi
+ test dword ptr [rbx+34],1600000
+ jne short M02_L00
+ mov rdi,rbx
+ xor edx,edx
+ mov esi,0FFFFFFFF
+ call qword ptr [7F8492EC6D00]; System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken)
+M02_L00:
+ test dword ptr [rbx+34],10000000
+ jne short M02_L03
+M02_L01:
+ mov edi,[rbx+34]
+ and edi,1600000
+ cmp edi,1000000
+ jne short M02_L04
+M02_L02:
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+M02_L03:
+ mov rdi,rbx
+ mov rax,[rbx]
+ mov rax,[rax+40]
+ call qword ptr [rax+20]
+ test eax,eax
+ je short M02_L01
+ mov rdi,rbx
+ call qword ptr [7F849308DA10]
+ jmp short M02_L01
+M02_L04:
+ test r15b,2
+ jne short M02_L05
+ mov rdi,rbx
+ call qword ptr [7F849308E238]
+M02_L05:
+ mov rdi,rbx
+ call qword ptr [7F849308FCF0]
+ jmp short M02_L02
+; Total bytes of code 125
+```
+
+## .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+```assembly
+; Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks.Old()
+ push rbp
+ sub rsp,20
+ lea rbp,[rsp+20]
+ vxorps xmm8,xmm8,xmm8
+ vmovdqu ymmword ptr [rbp-20],ymm8
+ mov [rbp-20],rdi
+ mov dword ptr [rbp-18],0FFFFFFFF
+ lea rdi,[rbp-20]
+ call qword ptr [7FE758104C18]
+ mov rax,[rbp-10]
+ test rax,rax
+ je short M00_L01
+M00_L00:
+ add rsp,20
+ pop rbp
+ ret
+M00_L01:
+ lea rdi,[rbp-10]
+ call qword ptr [7FE759074BD0]
+ jmp short M00_L00
+; Total bytes of code 68
+```
+```assembly
+; BenchmarkDotNet.Helpers.AwaitHelper.GetResult(System.Threading.Tasks.Task)
+ push rax
+ mov esi,[rdi+34]
+ and esi,11000000
+ cmp esi,1000000
+ jne short M01_L01
+M01_L00:
+ add rsp,8
+ ret
+M01_L01:
+ xor esi,esi
+ call qword ptr [7FE758106CA0]; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ jmp short M01_L00
+; Total bytes of code 33
+```
+```assembly
+; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ push rbp
+ push r15
+ push rbx
+ lea rbp,[rsp+10]
+ mov rbx,rdi
+ mov r15d,esi
+ test dword ptr [rbx+34],1600000
+ jne short M02_L00
+ mov rdi,rbx
+ xor edx,edx
+ mov esi,0FFFFFFFF
+ call qword ptr [7FE758106CB8]; System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken)
+M02_L00:
+ test dword ptr [rbx+34],10000000
+ jne short M02_L03
+M02_L01:
+ mov edi,[rbx+34]
+ and edi,1600000
+ cmp edi,1000000
+ jne short M02_L04
+M02_L02:
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+M02_L03:
+ mov rdi,rbx
+ mov rax,[rbx]
+ mov rax,[rax+40]
+ call qword ptr [rax+20]
+ test eax,eax
+ je short M02_L01
+ mov rdi,rbx
+ call qword ptr [7FE759074480]
+ jmp short M02_L01
+M02_L04:
+ test r15b,2
+ jne short M02_L05
+ mov rdi,rbx
+ call qword ptr [7FE759074BE8]
+M02_L05:
+ mov rdi,rbx
+ call qword ptr [7FE759075680]
+ jmp short M02_L02
+; Total bytes of code 125
+```
+
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-barplot.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-barplot.png
new file mode 100644
index 00000000..a6496ea1
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-barplot.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-boxplot.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-boxplot.png
new file mode 100644
index 00000000..749ed8cb
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-boxplot.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-measurements.csv b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-measurements.csv
new file mode 100644
index 00000000..33c16c4f
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-measurements.csv
@@ -0,0 +1,134 @@
+Target,Target_Namespace,Target_Type,Target_Method,Job_Id,Job_AnalyzeLaunchVariance,Job_EvaluateOverhead,Job_MaxAbsoluteError,Job_MaxRelativeError,Job_MinInvokeCount,Job_MinIterationTime,Job_OutlierMode,Job_Affinity,Job_EnvironmentVariables,Job_Jit,Job_LargeAddressAware,Job_Platform,Job_PowerPlanMode,Job_Runtime,Job_AllowVeryLargeObjects,Job_Concurrent,Job_CpuGroups,Job_Force,Job_HeapAffinitizeMask,Job_HeapCount,Job_NoAffinitize,Job_RetainVm,Job_Server,Job_Arguments,Job_BuildConfiguration,Job_Clock,Job_EngineFactory,Job_NuGetReferences,Job_Toolchain,Job_IsMutator,Job_InvocationCount,Job_IterationCount,Job_IterationTime,Job_LaunchCount,Job_MaxIterationCount,Job_MaxWarmupIterationCount,Job_MemoryRandomization,Job_MinIterationCount,Job_MinWarmupIterationCount,Job_RunStrategy,Job_UnrollFactor,Job_WarmupCount,Job_Display,Params,Measurement_LaunchIndex,Measurement_IterationMode,Measurement_IterationStage,Measurement_IterationIndex,Measurement_Nanoseconds,Measurement_Operations,Measurement_Value,Gen_0,Gen_1,Gen_2,Allocated_Bytes
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Jitting,1,160400,1,160400,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Jitting,1,62240217,1,62240217,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,1,30822217,4,7705554.25,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,2,37974962,5,7594992.4,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,3,41349835,6,6891639.17,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,4,49252102,7,7036014.57,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,5,63310721,8,7913840.13,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,6,72041652,9,8004628,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,7,81278997,10,8127899.7,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,8,88842822,11,8076620.18,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,9,97699895,12,8141657.92,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,10,114094586,13,8776506.62,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,11,117744659,14,8410332.79,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,12,117179429,15,7811961.93,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,13,131449129,16,8215570.56,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,14,258718193,32,8084943.53,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,15,459458383,64,7179037.23,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,16,697446632,128,5448801.81,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,1,2230,128,17.42,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,2,665,128,5.2,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,3,665,128,5.2,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,4,796,128,6.22,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,5,590,128,4.61,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,6,534,128,4.17,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,7,543,128,4.24,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,1,609,128,4.76,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,2,600,128,4.69,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,3,1050,128,8.2,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,4,712,128,5.56,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,5,777,128,6.07,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,6,834,128,6.52,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,7,703,128,5.49,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,8,591,128,4.62,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,9,590,128,4.61,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,10,1733,128,13.54,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,11,1068,128,8.34,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,12,525,128,4.1,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,13,562,128,4.39,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,14,580,128,4.53,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,15,590,128,4.61,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,16,544,128,4.25,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,17,525,128,4.1,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,18,609,128,4.76,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,19,619,128,4.84,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,20,562,128,4.39,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,1,545581940,128,4262358.91,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,2,508283561,128,3970965.32,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,3,492591560,128,3848371.56,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,1,498660850,128,3895787.89,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,2,495287030,128,3869429.92,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,3,494983971,128,3867062.27,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,4,495006714,128,3867239.95,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,5,486416041,128,3800125.32,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,6,479246052,128,3744109.78,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,7,481556748,128,3762162.09,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,8,481275959,128,3759968.43,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,9,487754134,128,3810579.17,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,10,483182293,128,3774861.66,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,1,498660245.5,128,3895783.17,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,2,495286425.5,128,3869425.2,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,3,494983366.5,128,3867057.55,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,4,495006109.5,128,3867235.23,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,5,486415436.5,128,3800120.6,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,6,479245447.5,128,3744105.06,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,7,481556143.5,128,3762157.37,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,8,481275354.5,128,3759963.71,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,9,487753529.5,128,3810574.45,29,12,0,3885761
+BabbageBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,10,483181688.5,128,3774856.94,29,12,0,3885761
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Jitting,1,159363,1,159363,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Jitting,1,315613630,1,315613630,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,1,68575845,4,17143961.25,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,2,82099040,5,16419808,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,3,97016511,6,16169418.5,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,4,121734035,7,17390576.43,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,5,139875461,8,17484432.63,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,6,163855444,9,18206160.44,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,7,187691465,10,18769146.5,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,8,202345046,11,18395004.18,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,9,209910158,12,17492513.17,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,10,227184652,13,17475742.46,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,11,250344529,14,17881752.07,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,12,262008660,15,17467244,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,13,273244943,16,17077808.94,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,14,499921776,32,15622555.5,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,15,732340157,64,11442814.95,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,1,2107,64,32.92,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,2,501,64,7.83,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,3,520,64,8.13,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,4,520,64,8.13,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,5,529,64,8.27,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,6,492,64,7.69,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,1,501,64,7.83,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,2,4651,64,72.67,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,3,538,64,8.41,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,4,493,64,7.7,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,5,538,64,8.41,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,6,493,64,7.7,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,7,492,64,7.69,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,8,493,64,7.7,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,9,492,64,7.69,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,10,584,64,9.13,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,11,511,64,7.98,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,12,1888,64,29.5,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,13,711,64,11.11,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,14,410,64,6.41,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,15,538,64,8.41,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,16,465,64,7.27,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,17,547,64,8.55,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,18,529,64,8.27,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,19,429,64,6.7,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,20,529,64,8.27,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,1,675739761,64,10558433.77,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,2,694373979,64,10849593.42,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,3,691134596,64,10798978.06,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,1,667042222,64,10422534.72,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,2,664000254,64,10375003.97,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,3,661484057,64,10335688.39,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,4,661337495,64,10333398.36,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,5,674290204,64,10535784.44,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,6,665684375,64,10401318.36,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,7,663970687,64,10374541.98,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,8,699625486,64,10931648.22,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,9,671771826,64,10496434.78,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,10,672044692,64,10500698.31,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,1,667041702,64,10422526.59,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,2,663999734,64,10374995.84,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,3,661483537,64,10335680.27,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,4,661336975,64,10333390.23,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,5,674289684,64,10535776.31,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,6,665683855,64,10401310.23,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,7,663970167,64,10374533.86,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,8,671771306,64,10496426.66,22,7,0,5903739
+BabbageBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,BabbageBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,9,672044172,64,10500690.19,22,7,0,5903739
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-report-github.md b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-report-github.md
new file mode 100644
index 00000000..0d4ca225
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-report-github.md
@@ -0,0 +1,16 @@
+```
+
+BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat) WSL
+AMD Ryzen 9 5950X, 1 CPU, 32 logical and 16 physical cores
+.NET SDK 9.0.102
+ [Host] : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2 DEBUG
+ Job-ONJMYK : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+
+IterationCount=10 MaxIterationCount=20 UnrollFactor=1
+WarmupCount=3
+
+```
+| Method | Mean | Error | StdDev | Min | Max | Code Size | Gen0 | Gen1 | Allocated |
+|------- |----------:|----------:|----------:|----------:|----------:|----------:|---------:|---------:|----------:|
+| New | 3.815 ms | 0.0838 ms | 0.0554 ms | 3.744 ms | 3.896 ms | 226 B | 226.5625 | 93.7500 | 3.71 MB |
+| Old | 10.419 ms | 0.1258 ms | 0.0748 ms | 10.333 ms | 10.536 ms | 226 B | 343.7500 | 109.3750 | 5.63 MB |
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-report.csv b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-report.csv
new file mode 100644
index 00000000..2ba472ba
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-report.csv
@@ -0,0 +1,3 @@
+Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Min,Max,Code Size,Gen0,Gen1,Allocated
+New,Job-ONJMYK,False,Default,Default,Default,Default,Default,Default,11111111111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,3.815 ms,0.0838 ms,0.0554 ms,3.744 ms,3.896 ms,226 B,226.5625,93.7500,3.71 MB
+Old,Job-ONJMYK,False,Default,Default,Default,Default,Default,Default,11111111111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,10.419 ms,0.1258 ms,0.0748 ms,10.333 ms,10.536 ms,226 B,343.7500,109.3750,5.63 MB
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-report.html b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-report.html
new file mode 100644
index 00000000..2fe1f9ff
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-report.html
@@ -0,0 +1,33 @@
+
+
+
+
+Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-20250220-033657
+
+
+
+
+
+BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat) WSL
+AMD Ryzen 9 5950X, 1 CPU, 32 logical and 16 physical cores
+.NET SDK 9.0.102
+ [Host] : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2 DEBUG
+ Job-ONJMYK : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+
+IterationCount=10 MaxIterationCount=20 UnrollFactor=1
+WarmupCount=3
+
+
+
+Method Mean Error StdDev Min Max Code Size Gen0 Gen1 Allocated
+
+New 3.815 ms 0.0838 ms 0.0554 ms 3.744 ms 3.896 ms 226 B 226.5625 93.7500 3.71 MB
+Old 10.419 ms 0.1258 ms 0.0748 ms 10.333 ms 10.536 ms 226 B 343.7500 109.3750 5.63 MB
+
+
+
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-report.txt b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-report.txt
new file mode 100644
index 00000000..19781e55
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.BabbageBenchmarks-report.txt
@@ -0,0 +1,321 @@
+*** BabbageBenchmarks.New: Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3) ***
+* Raw *
+OverheadJitting 1: 1 op, 160400.00 ns, 160.4000 us/op
+WorkloadJitting 1: 1 op, 62240217.00 ns, 62.2402 ms/op
+WorkloadPilot 1: 4 op, 30822217.00 ns, 7.7056 ms/op
+WorkloadPilot 2: 5 op, 37974962.00 ns, 7.5950 ms/op
+WorkloadPilot 3: 6 op, 41349835.00 ns, 6.8916 ms/op
+WorkloadPilot 4: 7 op, 49252102.00 ns, 7.0360 ms/op
+WorkloadPilot 5: 8 op, 63310721.00 ns, 7.9138 ms/op
+WorkloadPilot 6: 9 op, 72041652.00 ns, 8.0046 ms/op
+WorkloadPilot 7: 10 op, 81278997.00 ns, 8.1279 ms/op
+WorkloadPilot 8: 11 op, 88842822.00 ns, 8.0766 ms/op
+WorkloadPilot 9: 12 op, 97699895.00 ns, 8.1417 ms/op
+WorkloadPilot 10: 13 op, 114094586.00 ns, 8.7765 ms/op
+WorkloadPilot 11: 14 op, 117744659.00 ns, 8.4103 ms/op
+WorkloadPilot 12: 15 op, 117179429.00 ns, 7.8120 ms/op
+WorkloadPilot 13: 16 op, 131449129.00 ns, 8.2156 ms/op
+WorkloadPilot 14: 32 op, 258718193.00 ns, 8.0849 ms/op
+WorkloadPilot 15: 64 op, 459458383.00 ns, 7.1790 ms/op
+WorkloadPilot 16: 128 op, 697446632.00 ns, 5.4488 ms/op
+OverheadWarmup 1: 128 op, 2230.00 ns, 17.4219 ns/op
+OverheadWarmup 2: 128 op, 665.00 ns, 5.1953 ns/op
+OverheadWarmup 3: 128 op, 665.00 ns, 5.1953 ns/op
+OverheadWarmup 4: 128 op, 796.00 ns, 6.2188 ns/op
+OverheadWarmup 5: 128 op, 590.00 ns, 4.6094 ns/op
+OverheadWarmup 6: 128 op, 534.00 ns, 4.1719 ns/op
+OverheadWarmup 7: 128 op, 543.00 ns, 4.2422 ns/op
+OverheadActual 1: 128 op, 609.00 ns, 4.7578 ns/op
+OverheadActual 2: 128 op, 600.00 ns, 4.6875 ns/op
+OverheadActual 3: 128 op, 1050.00 ns, 8.2031 ns/op
+OverheadActual 4: 128 op, 712.00 ns, 5.5625 ns/op
+OverheadActual 5: 128 op, 777.00 ns, 6.0703 ns/op
+OverheadActual 6: 128 op, 834.00 ns, 6.5156 ns/op
+OverheadActual 7: 128 op, 703.00 ns, 5.4922 ns/op
+OverheadActual 8: 128 op, 591.00 ns, 4.6172 ns/op
+OverheadActual 9: 128 op, 590.00 ns, 4.6094 ns/op
+OverheadActual 10: 128 op, 1733.00 ns, 13.5391 ns/op
+OverheadActual 11: 128 op, 1068.00 ns, 8.3438 ns/op
+OverheadActual 12: 128 op, 525.00 ns, 4.1016 ns/op
+OverheadActual 13: 128 op, 562.00 ns, 4.3906 ns/op
+OverheadActual 14: 128 op, 580.00 ns, 4.5313 ns/op
+OverheadActual 15: 128 op, 590.00 ns, 4.6094 ns/op
+OverheadActual 16: 128 op, 544.00 ns, 4.2500 ns/op
+OverheadActual 17: 128 op, 525.00 ns, 4.1016 ns/op
+OverheadActual 18: 128 op, 609.00 ns, 4.7578 ns/op
+OverheadActual 19: 128 op, 619.00 ns, 4.8359 ns/op
+OverheadActual 20: 128 op, 562.00 ns, 4.3906 ns/op
+WorkloadWarmup 1: 128 op, 545581940.00 ns, 4.2624 ms/op
+WorkloadWarmup 2: 128 op, 508283561.00 ns, 3.9710 ms/op
+WorkloadWarmup 3: 128 op, 492591560.00 ns, 3.8484 ms/op
+WorkloadActual 1: 128 op, 498660850.00 ns, 3.8958 ms/op
+WorkloadActual 2: 128 op, 495287030.00 ns, 3.8694 ms/op
+WorkloadActual 3: 128 op, 494983971.00 ns, 3.8671 ms/op
+WorkloadActual 4: 128 op, 495006714.00 ns, 3.8672 ms/op
+WorkloadActual 5: 128 op, 486416041.00 ns, 3.8001 ms/op
+WorkloadActual 6: 128 op, 479246052.00 ns, 3.7441 ms/op
+WorkloadActual 7: 128 op, 481556748.00 ns, 3.7622 ms/op
+WorkloadActual 8: 128 op, 481275959.00 ns, 3.7600 ms/op
+WorkloadActual 9: 128 op, 487754134.00 ns, 3.8106 ms/op
+WorkloadActual 10: 128 op, 483182293.00 ns, 3.7749 ms/op
+WorkloadResult 1: 128 op, 498660245.50 ns, 3.8958 ms/op
+WorkloadResult 2: 128 op, 495286425.50 ns, 3.8694 ms/op
+WorkloadResult 3: 128 op, 494983366.50 ns, 3.8671 ms/op
+WorkloadResult 4: 128 op, 495006109.50 ns, 3.8672 ms/op
+WorkloadResult 5: 128 op, 486415436.50 ns, 3.8001 ms/op
+WorkloadResult 6: 128 op, 479245447.50 ns, 3.7441 ms/op
+WorkloadResult 7: 128 op, 481556143.50 ns, 3.7622 ms/op
+WorkloadResult 8: 128 op, 481275354.50 ns, 3.7600 ms/op
+WorkloadResult 9: 128 op, 487753529.50 ns, 3.8106 ms/op
+WorkloadResult 10: 128 op, 483181688.50 ns, 3.7749 ms/op
+
+* Statistics for OverheadJitting
+Mean = 160.400 μs, StdErr = 0.000 μs (0.00%), N = 1, StdDev = 0.000 μs
+Min = 160.400 μs, Q1 = 160.400 μs, Median = 160.400 μs, Q3 = 160.400 μs, Max = 160.400 μs
+IQR = 0.000 μs, LowerFence = 160.400 μs, UpperFence = 160.400 μs
+ConfidenceInterval = [NaN μs; NaN μs] (CI 99.9%), Margin = NaN μs (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[160.399 μs ; 160.400 μs) | @
+---------------------------------------------------
+
+* Statistics for WorkloadJitting
+Mean = 62.240 ms, StdErr = 0.000 ms (0.00%), N = 1, StdDev = 0.000 ms
+Min = 62.240 ms, Q1 = 62.240 ms, Median = 62.240 ms, Q3 = 62.240 ms, Max = 62.240 ms
+IQR = 0.000 ms, LowerFence = 62.240 ms, UpperFence = 62.240 ms
+ConfidenceInterval = [NaN ms; NaN ms] (CI 99.9%), Margin = NaN ms (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[62.240 ms ; 62.240 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadPilot
+Mean = 7.714 ms, StdErr = 0.196 ms (2.54%), N = 16, StdDev = 0.783 ms
+Min = 5.449 ms, Q1 = 7.491 ms, Median = 7.959 ms, Q3 = 8.131 ms, Max = 8.777 ms
+IQR = 0.640 ms, LowerFence = 6.531 ms, UpperFence = 9.092 ms
+ConfidenceInterval = [6.917 ms; 8.511 ms] (CI 99.9%), Margin = 0.797 ms (10.33% of Mean)
+Skewness = -1.39, Kurtosis = 4.79, MValue = 2.44
+-------------------- Histogram --------------------
+[5.041 ms ; 5.857 ms) | @
+[5.857 ms ; 6.628 ms) |
+[6.628 ms ; 7.595 ms) | @@@
+[7.595 ms ; 8.410 ms) | @@@@@@@@@@@
+[8.410 ms ; 9.184 ms) | @
+---------------------------------------------------
+
+* Statistics for OverheadWarmup
+Mean = 6.722 ns, StdErr = 1.803 ns (26.82%), N = 7, StdDev = 4.770 ns
+Min = 4.172 ns, Q1 = 4.426 ns, Median = 5.195 ns, Q3 = 5.707 ns, Max = 17.422 ns
+IQR = 1.281 ns, LowerFence = 2.504 ns, UpperFence = 7.629 ns
+ConfidenceInterval = [-4.021 ns; 17.465 ns] (CI 99.9%), Margin = 10.743 ns (159.82% of Mean)
+Skewness = 1.55, Kurtosis = 3.65, MValue = 2.4
+-------------------- Histogram --------------------
+[ 1.923 ns ; 8.468 ns) | @@@@@@
+[ 8.468 ns ; 14.149 ns) |
+[14.149 ns ; 20.695 ns) | @
+---------------------------------------------------
+
+* Statistics for OverheadActual
+Mean = 5.618 ns, StdErr = 0.499 ns (8.88%), N = 20, StdDev = 2.231 ns
+Min = 4.102 ns, Q1 = 4.496 ns, Median = 4.723 ns, Q3 = 5.689 ns, Max = 13.539 ns
+IQR = 1.193 ns, LowerFence = 2.706 ns, UpperFence = 7.479 ns
+ConfidenceInterval = [3.681 ns; 7.555 ns] (CI 99.9%), Margin = 1.937 ns (34.48% of Mean)
+Skewness = 2.32, Kurtosis = 8.2, MValue = 2.33
+-------------------- Histogram --------------------
+[ 4.007 ns ; 6.165 ns) | @@@@@@@@@@@@@@@@
+[ 6.165 ns ; 8.508 ns) | @@@
+[ 8.508 ns ; 10.666 ns) |
+[10.666 ns ; 12.460 ns) |
+[12.460 ns ; 14.618 ns) | @
+---------------------------------------------------
+
+* Statistics for WorkloadWarmup
+Mean = 4.027 ms, StdErr = 0.123 ms (3.05%), N = 3, StdDev = 0.213 ms
+Min = 3.848 ms, Q1 = 3.910 ms, Median = 3.971 ms, Q3 = 4.117 ms, Max = 4.262 ms
+IQR = 0.207 ms, LowerFence = 3.599 ms, UpperFence = 4.427 ms
+ConfidenceInterval = [0.148 ms; 7.907 ms] (CI 99.9%), Margin = 3.880 ms (96.33% of Mean)
+Skewness = 0.25, Kurtosis = 0.67, MValue = 2
+-------------------- Histogram --------------------
+[3.716 ms ; 4.103 ms) | @@
+[4.103 ms ; 4.456 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadActual
+Mean = 3.815 ms, StdErr = 0.018 ms (0.46%), N = 10, StdDev = 0.055 ms
+Min = 3.744 ms, Q1 = 3.765 ms, Median = 3.805 ms, Q3 = 3.867 ms, Max = 3.896 ms
+IQR = 0.102 ms, LowerFence = 3.613 ms, UpperFence = 4.020 ms
+ConfidenceInterval = [3.731 ms; 3.899 ms] (CI 99.9%), Margin = 0.084 ms (2.20% of Mean)
+Skewness = 0.13, Kurtosis = 1.18, MValue = 2
+-------------------- Histogram --------------------
+[3.740 ms ; 3.920 ms) | @@@@@@@@@@
+---------------------------------------------------
+
+* Statistics for WorkloadResult
+Mean = 3.815 ms, StdErr = 0.018 ms (0.46%), N = 10, StdDev = 0.055 ms
+Min = 3.744 ms, Q1 = 3.765 ms, Median = 3.805 ms, Q3 = 3.867 ms, Max = 3.896 ms
+IQR = 0.102 ms, LowerFence = 3.613 ms, UpperFence = 4.020 ms
+ConfidenceInterval = [3.731 ms; 3.899 ms] (CI 99.9%), Margin = 0.084 ms (2.20% of Mean)
+Skewness = 0.13, Kurtosis = 1.18, MValue = 2
+-------------------- Histogram --------------------
+[3.740 ms ; 3.920 ms) | @@@@@@@@@@
+---------------------------------------------------
+*** BabbageBenchmarks.Old: Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3) ***
+* Raw *
+OverheadJitting 1: 1 op, 159363.00 ns, 159.3630 us/op
+WorkloadJitting 1: 1 op, 315613630.00 ns, 315.6136 ms/op
+WorkloadPilot 1: 4 op, 68575845.00 ns, 17.1440 ms/op
+WorkloadPilot 2: 5 op, 82099040.00 ns, 16.4198 ms/op
+WorkloadPilot 3: 6 op, 97016511.00 ns, 16.1694 ms/op
+WorkloadPilot 4: 7 op, 121734035.00 ns, 17.3906 ms/op
+WorkloadPilot 5: 8 op, 139875461.00 ns, 17.4844 ms/op
+WorkloadPilot 6: 9 op, 163855444.00 ns, 18.2062 ms/op
+WorkloadPilot 7: 10 op, 187691465.00 ns, 18.7691 ms/op
+WorkloadPilot 8: 11 op, 202345046.00 ns, 18.3950 ms/op
+WorkloadPilot 9: 12 op, 209910158.00 ns, 17.4925 ms/op
+WorkloadPilot 10: 13 op, 227184652.00 ns, 17.4757 ms/op
+WorkloadPilot 11: 14 op, 250344529.00 ns, 17.8818 ms/op
+WorkloadPilot 12: 15 op, 262008660.00 ns, 17.4672 ms/op
+WorkloadPilot 13: 16 op, 273244943.00 ns, 17.0778 ms/op
+WorkloadPilot 14: 32 op, 499921776.00 ns, 15.6226 ms/op
+WorkloadPilot 15: 64 op, 732340157.00 ns, 11.4428 ms/op
+OverheadWarmup 1: 64 op, 2107.00 ns, 32.9219 ns/op
+OverheadWarmup 2: 64 op, 501.00 ns, 7.8281 ns/op
+OverheadWarmup 3: 64 op, 520.00 ns, 8.1250 ns/op
+OverheadWarmup 4: 64 op, 520.00 ns, 8.1250 ns/op
+OverheadWarmup 5: 64 op, 529.00 ns, 8.2656 ns/op
+OverheadWarmup 6: 64 op, 492.00 ns, 7.6875 ns/op
+OverheadActual 1: 64 op, 501.00 ns, 7.8281 ns/op
+OverheadActual 2: 64 op, 4651.00 ns, 72.6719 ns/op
+OverheadActual 3: 64 op, 538.00 ns, 8.4063 ns/op
+OverheadActual 4: 64 op, 493.00 ns, 7.7031 ns/op
+OverheadActual 5: 64 op, 538.00 ns, 8.4063 ns/op
+OverheadActual 6: 64 op, 493.00 ns, 7.7031 ns/op
+OverheadActual 7: 64 op, 492.00 ns, 7.6875 ns/op
+OverheadActual 8: 64 op, 493.00 ns, 7.7031 ns/op
+OverheadActual 9: 64 op, 492.00 ns, 7.6875 ns/op
+OverheadActual 10: 64 op, 584.00 ns, 9.1250 ns/op
+OverheadActual 11: 64 op, 511.00 ns, 7.9844 ns/op
+OverheadActual 12: 64 op, 1888.00 ns, 29.5000 ns/op
+OverheadActual 13: 64 op, 711.00 ns, 11.1094 ns/op
+OverheadActual 14: 64 op, 410.00 ns, 6.4063 ns/op
+OverheadActual 15: 64 op, 538.00 ns, 8.4063 ns/op
+OverheadActual 16: 64 op, 465.00 ns, 7.2656 ns/op
+OverheadActual 17: 64 op, 547.00 ns, 8.5469 ns/op
+OverheadActual 18: 64 op, 529.00 ns, 8.2656 ns/op
+OverheadActual 19: 64 op, 429.00 ns, 6.7031 ns/op
+OverheadActual 20: 64 op, 529.00 ns, 8.2656 ns/op
+WorkloadWarmup 1: 64 op, 675739761.00 ns, 10.5584 ms/op
+WorkloadWarmup 2: 64 op, 694373979.00 ns, 10.8496 ms/op
+WorkloadWarmup 3: 64 op, 691134596.00 ns, 10.7990 ms/op
+WorkloadActual 1: 64 op, 667042222.00 ns, 10.4225 ms/op
+WorkloadActual 2: 64 op, 664000254.00 ns, 10.3750 ms/op
+WorkloadActual 3: 64 op, 661484057.00 ns, 10.3357 ms/op
+WorkloadActual 4: 64 op, 661337495.00 ns, 10.3334 ms/op
+WorkloadActual 5: 64 op, 674290204.00 ns, 10.5358 ms/op
+WorkloadActual 6: 64 op, 665684375.00 ns, 10.4013 ms/op
+WorkloadActual 7: 64 op, 663970687.00 ns, 10.3745 ms/op
+WorkloadActual 8: 64 op, 699625486.00 ns, 10.9316 ms/op
+WorkloadActual 9: 64 op, 671771826.00 ns, 10.4964 ms/op
+WorkloadActual 10: 64 op, 672044692.00 ns, 10.5007 ms/op
+WorkloadResult 1: 64 op, 667041702.00 ns, 10.4225 ms/op
+WorkloadResult 2: 64 op, 663999734.00 ns, 10.3750 ms/op
+WorkloadResult 3: 64 op, 661483537.00 ns, 10.3357 ms/op
+WorkloadResult 4: 64 op, 661336975.00 ns, 10.3334 ms/op
+WorkloadResult 5: 64 op, 674289684.00 ns, 10.5358 ms/op
+WorkloadResult 6: 64 op, 665683855.00 ns, 10.4013 ms/op
+WorkloadResult 7: 64 op, 663970167.00 ns, 10.3745 ms/op
+WorkloadResult 8: 64 op, 671771306.00 ns, 10.4964 ms/op
+WorkloadResult 9: 64 op, 672044172.00 ns, 10.5007 ms/op
+
+* Statistics for OverheadJitting
+Mean = 159.363 μs, StdErr = 0.000 μs (0.00%), N = 1, StdDev = 0.000 μs
+Min = 159.363 μs, Q1 = 159.363 μs, Median = 159.363 μs, Q3 = 159.363 μs, Max = 159.363 μs
+IQR = 0.000 μs, LowerFence = 159.363 μs, UpperFence = 159.363 μs
+ConfidenceInterval = [NaN μs; NaN μs] (CI 99.9%), Margin = NaN μs (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[159.363 μs ; 159.363 μs) | @
+---------------------------------------------------
+
+* Statistics for WorkloadJitting
+Mean = 315.614 ms, StdErr = 0.000 ms (0.00%), N = 1, StdDev = 0.000 ms
+Min = 315.614 ms, Q1 = 315.614 ms, Median = 315.614 ms, Q3 = 315.614 ms, Max = 315.614 ms
+IQR = 0.000 ms, LowerFence = 315.614 ms, UpperFence = 315.614 ms
+ConfidenceInterval = [NaN ms; NaN ms] (CI 99.9%), Margin = NaN ms (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[315.614 ms ; 315.614 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadPilot
+Mean = 16.963 ms, StdErr = 0.448 ms (2.64%), N = 15, StdDev = 1.736 ms
+Min = 11.443 ms, Q1 = 16.749 ms, Median = 17.467 ms, Q3 = 17.687 ms, Max = 18.769 ms
+IQR = 0.938 ms, LowerFence = 15.341 ms, UpperFence = 19.095 ms
+ConfidenceInterval = [15.107 ms; 18.819 ms] (CI 99.9%), Margin = 1.856 ms (10.94% of Mean)
+Skewness = -2.03, Kurtosis = 6.97, MValue = 2.75
+-------------------- Histogram --------------------
+[10.519 ms ; 12.367 ms) | @
+[12.367 ms ; 14.215 ms) |
+[14.215 ms ; 15.097 ms) |
+[15.097 ms ; 17.000 ms) | @@@
+[17.000 ms ; 18.847 ms) | @@@@@@@@@@@
+---------------------------------------------------
+
+* Statistics for OverheadWarmup
+Mean = 12.159 ns, StdErr = 4.154 ns (34.16%), N = 6, StdDev = 10.174 ns
+Min = 7.688 ns, Q1 = 7.902 ns, Median = 8.125 ns, Q3 = 8.230 ns, Max = 32.922 ns
+IQR = 0.328 ns, LowerFence = 7.410 ns, UpperFence = 8.723 ns
+ConfidenceInterval = [-16.371 ns; 40.689 ns] (CI 99.9%), Margin = 28.530 ns (234.64% of Mean)
+Skewness = 1.36, Kurtosis = 2.91, MValue = 2
+-------------------- Histogram --------------------
+[ 0.339 ns ; 15.325 ns) | @@@@@
+[15.325 ns ; 25.573 ns) |
+[25.573 ns ; 40.271 ns) | @
+---------------------------------------------------
+
+* Statistics for OverheadActual
+Mean = 12.369 ns, StdErr = 3.356 ns (27.13%), N = 20, StdDev = 15.009 ns
+Min = 6.406 ns, Q1 = 7.699 ns, Median = 8.125 ns, Q3 = 8.441 ns, Max = 72.672 ns
+IQR = 0.742 ns, LowerFence = 6.586 ns, UpperFence = 9.555 ns
+ConfidenceInterval = [-0.664 ns; 25.402 ns] (CI 99.9%), Margin = 13.033 ns (105.37% of Mean)
+Skewness = 3.29, Kurtosis = 13.12, MValue = 2.44
+-------------------- Histogram --------------------
+[ 1.501 ns ; 16.015 ns) | @@@@@@@@@@@@@@@@@@
+[16.015 ns ; 22.243 ns) |
+[22.243 ns ; 36.757 ns) | @
+[36.757 ns ; 51.272 ns) |
+[51.272 ns ; 65.415 ns) |
+[65.415 ns ; 79.929 ns) | @
+---------------------------------------------------
+
+* Statistics for WorkloadWarmup
+Mean = 10.736 ms, StdErr = 0.090 ms (0.84%), N = 3, StdDev = 0.156 ms
+Min = 10.558 ms, Q1 = 10.679 ms, Median = 10.799 ms, Q3 = 10.824 ms, Max = 10.850 ms
+IQR = 0.146 ms, LowerFence = 10.460 ms, UpperFence = 11.043 ms
+ConfidenceInterval = [7.898 ms; 13.574 ms] (CI 99.9%), Margin = 2.838 ms (26.44% of Mean)
+Skewness = -0.34, Kurtosis = 0.67, MValue = 2
+-------------------- Histogram --------------------
+[10.417 ms ; 10.683 ms) | @
+[10.683 ms ; 10.991 ms) | @@
+---------------------------------------------------
+
+* Statistics for WorkloadActual
+Mean = 10.471 ms, StdErr = 0.056 ms (0.53%), N = 10, StdDev = 0.177 ms
+Min = 10.333 ms, Q1 = 10.375 ms, Median = 10.412 ms, Q3 = 10.500 ms, Max = 10.932 ms
+IQR = 0.125 ms, LowerFence = 10.187 ms, UpperFence = 10.687 ms
+ConfidenceInterval = [10.204 ms; 10.738 ms] (CI 99.9%), Margin = 0.267 ms (2.55% of Mean)
+Skewness = 1.65, Kurtosis = 4.73, MValue = 2
+-------------------- Histogram --------------------
+[10.327 ms ; 10.542 ms) | @@@@@@@@@
+[10.542 ms ; 11.039 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadResult
+Mean = 10.419 ms, StdErr = 0.025 ms (0.24%), N = 9, StdDev = 0.075 ms
+Min = 10.333 ms, Q1 = 10.375 ms, Median = 10.401 ms, Q3 = 10.496 ms, Max = 10.536 ms
+IQR = 0.122 ms, LowerFence = 10.192 ms, UpperFence = 10.679 ms
+ConfidenceInterval = [10.294 ms; 10.545 ms] (CI 99.9%), Margin = 0.126 ms (1.21% of Mean)
+Skewness = 0.31, Kurtosis = 1.32, MValue = 2
+-------------------- Histogram --------------------
+[10.286 ms ; 10.583 ms) | @@@@@@@@@
+---------------------------------------------------
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-Job-BZGSBA-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-Job-BZGSBA-cummean.png
new file mode 100644
index 00000000..b8080064
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-Job-BZGSBA-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-Job-BZGSBA-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-Job-BZGSBA-density.png
new file mode 100644
index 00000000..2a5d38dd
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-Job-BZGSBA-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-Job-BZGSBA-timeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-Job-BZGSBA-timeline.png
new file mode 100644
index 00000000..90d49980
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-Job-BZGSBA-timeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-Job-BZGSBA-timelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-Job-BZGSBA-timelineSmooth.png
new file mode 100644
index 00000000..ba7c4d36
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-Job-BZGSBA-timelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-cummean.png
new file mode 100644
index 00000000..07c4c2ee
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-density.png
new file mode 100644
index 00000000..2a5d38dd
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-facetDensity.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-facetDensity.png
new file mode 100644
index 00000000..4c7cede9
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-facetDensity.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-facetTimeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-facetTimeline.png
new file mode 100644
index 00000000..7e6de250
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-facetTimeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-facetTimelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-facetTimelineSmooth.png
new file mode 100644
index 00000000..fd566a38
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-New-facetTimelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-Job-BZGSBA-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-Job-BZGSBA-cummean.png
new file mode 100644
index 00000000..8c763ffe
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-Job-BZGSBA-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-Job-BZGSBA-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-Job-BZGSBA-density.png
new file mode 100644
index 00000000..2a5d38dd
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-Job-BZGSBA-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-Job-BZGSBA-timeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-Job-BZGSBA-timeline.png
new file mode 100644
index 00000000..230555d4
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-Job-BZGSBA-timeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-Job-BZGSBA-timelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-Job-BZGSBA-timelineSmooth.png
new file mode 100644
index 00000000..f8a0419e
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-Job-BZGSBA-timelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-cummean.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-cummean.png
new file mode 100644
index 00000000..05891341
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-cummean.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-density.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-density.png
new file mode 100644
index 00000000..2a5d38dd
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-density.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-facetDensity.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-facetDensity.png
new file mode 100644
index 00000000..4c7cede9
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-facetDensity.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-facetTimeline.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-facetTimeline.png
new file mode 100644
index 00000000..67d93cf0
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-facetTimeline.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-facetTimelineSmooth.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-facetTimelineSmooth.png
new file mode 100644
index 00000000..47579fcf
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-Old-facetTimelineSmooth.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-asm.md b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-asm.md
new file mode 100644
index 00000000..21165236
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-asm.md
@@ -0,0 +1,180 @@
+## .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+```assembly
+; Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks.New()
+ push rbp
+ sub rsp,20
+ lea rbp,[rsp+20]
+ vxorps xmm8,xmm8,xmm8
+ vmovdqu ymmword ptr [rbp-20],ymm8
+ mov [rbp-20],rdi
+ mov dword ptr [rbp-18],0FFFFFFFF
+ lea rdi,[rbp-20]
+ call qword ptr [7F329E224B40]
+ mov rax,[rbp-10]
+ test rax,rax
+ je short M00_L01
+M00_L00:
+ add rsp,20
+ pop rbp
+ ret
+M00_L01:
+ lea rdi,[rbp-10]
+ call qword ptr [7F329E3DDC68]
+ jmp short M00_L00
+; Total bytes of code 68
+```
+```assembly
+; BenchmarkDotNet.Helpers.AwaitHelper.GetResult(System.Threading.Tasks.Task)
+ push rax
+ mov esi,[rdi+34]
+ and esi,11000000
+ cmp esi,1000000
+ jne short M01_L01
+M01_L00:
+ add rsp,8
+ ret
+M01_L01:
+ xor esi,esi
+ call qword ptr [7F329E226AF0]; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ jmp short M01_L00
+; Total bytes of code 33
+```
+```assembly
+; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ push rbp
+ push r15
+ push rbx
+ lea rbp,[rsp+10]
+ mov rbx,rdi
+ mov r15d,esi
+ test dword ptr [rbx+34],1600000
+ jne short M02_L00
+ mov rdi,rbx
+ xor edx,edx
+ mov esi,0FFFFFFFF
+ call qword ptr [7F329E226B08]; System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken)
+M02_L00:
+ test dword ptr [rbx+34],10000000
+ jne short M02_L03
+M02_L01:
+ mov edi,[rbx+34]
+ and edi,1600000
+ cmp edi,1000000
+ jne short M02_L04
+M02_L02:
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+M02_L03:
+ mov rdi,rbx
+ mov rax,[rbx]
+ mov rax,[rax+40]
+ call qword ptr [rax+20]
+ test eax,eax
+ je short M02_L01
+ mov rdi,rbx
+ call qword ptr [7F329E3DD458]
+ jmp short M02_L01
+M02_L04:
+ test r15b,2
+ jne short M02_L05
+ mov rdi,rbx
+ call qword ptr [7F329E3DDC80]
+M02_L05:
+ mov rdi,rbx
+ call qword ptr [7F329E575338]
+ jmp short M02_L02
+; Total bytes of code 125
+```
+
+## .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+```assembly
+; Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks.Old()
+ push rbp
+ sub rsp,20
+ lea rbp,[rsp+20]
+ vxorps xmm8,xmm8,xmm8
+ vmovdqu ymmword ptr [rbp-20],ymm8
+ mov [rbp-20],rdi
+ mov dword ptr [rbp-18],0FFFFFFFF
+ lea rdi,[rbp-20]
+ call qword ptr [7F31022B4B40]
+ mov rax,[rbp-10]
+ test rax,rax
+ je short M00_L01
+M00_L00:
+ add rsp,20
+ pop rbp
+ ret
+M00_L01:
+ lea rdi,[rbp-10]
+ call qword ptr [7F31032051A0]
+ jmp short M00_L00
+; Total bytes of code 68
+```
+```assembly
+; BenchmarkDotNet.Helpers.AwaitHelper.GetResult(System.Threading.Tasks.Task)
+ push rax
+ mov esi,[rdi+34]
+ and esi,11000000
+ cmp esi,1000000
+ jne short M01_L01
+M01_L00:
+ add rsp,8
+ ret
+M01_L01:
+ xor esi,esi
+ call qword ptr [7F31022B6AC0]; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ jmp short M01_L00
+; Total bytes of code 33
+```
+```assembly
+; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
+ push rbp
+ push r15
+ push rbx
+ lea rbp,[rsp+10]
+ mov rbx,rdi
+ mov r15d,esi
+ test dword ptr [rbx+34],1600000
+ jne short M02_L00
+ mov rdi,rbx
+ xor edx,edx
+ mov esi,0FFFFFFFF
+ call qword ptr [7F31022B6AD8]; System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken)
+M02_L00:
+ test dword ptr [rbx+34],10000000
+ jne short M02_L03
+M02_L01:
+ mov edi,[rbx+34]
+ and edi,1600000
+ cmp edi,1000000
+ jne short M02_L04
+M02_L02:
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+M02_L03:
+ mov rdi,rbx
+ mov rax,[rbx]
+ mov rax,[rax+40]
+ call qword ptr [rax+20]
+ test eax,eax
+ je short M02_L01
+ mov rdi,rbx
+ call qword ptr [7F3103204A50]
+ jmp short M02_L01
+M02_L04:
+ test r15b,2
+ jne short M02_L05
+ mov rdi,rbx
+ call qword ptr [7F31032051B8]
+M02_L05:
+ mov rdi,rbx
+ call qword ptr [7F3103207E10]
+ jmp short M02_L02
+; Total bytes of code 125
+```
+
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-barplot.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-barplot.png
new file mode 100644
index 00000000..d7d28396
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-barplot.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-boxplot.png b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-boxplot.png
new file mode 100644
index 00000000..d90caa6b
Binary files /dev/null and b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-boxplot.png differ
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-measurements.csv b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-measurements.csv
new file mode 100644
index 00000000..3b9b5ed3
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-measurements.csv
@@ -0,0 +1,134 @@
+Target,Target_Namespace,Target_Type,Target_Method,Job_Id,Job_AnalyzeLaunchVariance,Job_EvaluateOverhead,Job_MaxAbsoluteError,Job_MaxRelativeError,Job_MinInvokeCount,Job_MinIterationTime,Job_OutlierMode,Job_Affinity,Job_EnvironmentVariables,Job_Jit,Job_LargeAddressAware,Job_Platform,Job_PowerPlanMode,Job_Runtime,Job_AllowVeryLargeObjects,Job_Concurrent,Job_CpuGroups,Job_Force,Job_HeapAffinitizeMask,Job_HeapCount,Job_NoAffinitize,Job_RetainVm,Job_Server,Job_Arguments,Job_BuildConfiguration,Job_Clock,Job_EngineFactory,Job_NuGetReferences,Job_Toolchain,Job_IsMutator,Job_InvocationCount,Job_IterationCount,Job_IterationTime,Job_LaunchCount,Job_MaxIterationCount,Job_MaxWarmupIterationCount,Job_MemoryRandomization,Job_MinIterationCount,Job_MinWarmupIterationCount,Job_RunStrategy,Job_UnrollFactor,Job_WarmupCount,Job_Display,Params,Measurement_LaunchIndex,Measurement_IterationMode,Measurement_IterationStage,Measurement_IterationIndex,Measurement_Nanoseconds,Measurement_Operations,Measurement_Value,Gen_0,Gen_1,Gen_2,Allocated_Bytes
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Jitting,1,167357,1,167357,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Jitting,1,57464575,1,57464575,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,1,8208729,4,2052182.25,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,2,9554098,5,1910819.6,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,3,11812061,6,1968676.83,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,4,14275719,7,2039388.43,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,5,15858773,8,1982346.63,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,6,17598518,9,1955390.89,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,7,19663861,10,1966386.1,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,8,20143168,11,1831197.09,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,9,25003739,12,2083644.92,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,10,30941047,13,2380080.54,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,11,33188553,14,2370610.93,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,12,33608905,15,2240593.67,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,13,36291053,16,2268190.81,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,14,71854151,32,2245442.22,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,15,146093766,64,2282715.09,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,16,285462772,128,2230177.91,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,17,561511878,256,2193405.77,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,1,1982,256,7.74,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,2,1019,256,3.98,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,3,812,256,3.17,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,4,812,256,3.17,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,5,858,256,3.35,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,6,840,256,3.28,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,7,859,256,3.36,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,1,849,256,3.32,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,2,849,256,3.32,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,3,859,256,3.36,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,4,840,256,3.28,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,5,840,256,3.28,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,6,849,256,3.32,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,7,1010,256,3.95,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,8,1227,256,4.79,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,9,840,256,3.28,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,10,840,256,3.28,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,11,840,256,3.28,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,12,802,256,3.13,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,13,831,256,3.25,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,14,1784,256,6.97,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,15,935,256,3.65,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,1,387166465,256,1512369,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,2,275883910,256,1077671.52,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,3,220388714,256,860893.41,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,1,219762761,256,858448.29,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,2,220526439,256,861431.4,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,3,225244031,256,879859.5,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,4,215933487,256,843490.18,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,5,215869084,256,843238.61,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,6,217833845,256,850913.46,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,7,218569092,256,853785.52,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,8,217577252,256,849911.14,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,9,213661535,256,834615.37,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,10,212298441,256,829290.79,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,1,219761912,256,858444.97,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,2,220525590,256,861428.09,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,3,215932638,256,843486.87,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,4,215868235,256,843235.29,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,5,217832996,256,850910.14,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,6,218568243,256,853782.2,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,7,217576403,256,849907.82,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,8,213660686,256,834612.05,17,2,0,1156598
+ConwayBenchmarks.New,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,New,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,9,212297592,256,829287.47,17,2,0,1156598
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Jitting,1,164129,1,164129,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Jitting,1,297768794,1,297768794,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,1,19516963,4,4879240.75,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,2,23312264,5,4662452.8,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,3,28386803,6,4731133.83,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,4,35046885,7,5006697.86,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,5,39167235,8,4895904.38,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,6,42042038,9,4671337.56,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,7,47554747,10,4755474.7,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,8,53469267,11,4860842.45,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,9,65118516,12,5426543,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,10,68017620,13,5232124.62,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,11,73407912,14,5243422.29,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,12,82903439,15,5526895.93,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,13,81385402,16,5086587.63,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,14,159684747,32,4990148.34,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,15,343571910,64,5368311.09,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Pilot,16,666093066,128,5203852.08,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,1,1917,128,14.98,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,2,764,128,5.97,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,3,720,128,5.63,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,4,684,128,5.34,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,5,549,128,4.29,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,6,531,128,4.15,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,7,567,128,4.43,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,8,765,128,5.98,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,9,621,128,4.85,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Warmup,10,792,128,6.19,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,1,702,128,5.48,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,2,675,128,5.27,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,3,756,128,5.91,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,4,621,128,4.85,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,5,666,128,5.2,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,6,549,128,4.29,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,7,567,128,4.43,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,8,522,128,4.08,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,9,1332,128,10.41,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,10,819,128,6.4,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,11,1764,128,13.78,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,12,882,128,6.89,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,13,648,128,5.06,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,14,630,128,4.92,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,15,675,128,5.27,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,16,684,128,5.34,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,17,702,128,5.48,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,18,639,128,4.99,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,19,657,128,5.13,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Overhead,Actual,20,639,128,4.99,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,1,602271724,128,4705247.84,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,2,467584958,128,3653007.48,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Warmup,3,360791232,128,2818681.5,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,1,315093565,128,2461668.48,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,2,313649312,128,2450385.25,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,3,307707877,128,2403967.79,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,4,307711293,128,2403994.48,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,5,305530645,128,2386958.16,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,6,357075928,128,2789655.69,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,7,313506850,128,2449272.27,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,8,310736091,128,2427625.71,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,9,316251047,128,2470711.3,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Actual,10,317039044,128,2476867.53,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,1,315092894.5,128,2461663.24,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,2,313648641.5,128,2450380.01,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,3,307707206.5,128,2403962.55,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,4,307710622.5,128,2403989.24,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,5,305529974.5,128,2386952.93,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,6,313506179.5,128,2449267.03,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,7,310735420.5,128,2427620.47,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,8,316250376.5,128,2470706.07,13,3,0,1743762
+ConwayBenchmarks.Old,Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers,ConwayBenchmarks,Old,Job-ONJMYK,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,"Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3)",,1,Workload,Result,9,317038373.5,128,2476862.29,13,3,0,1743762
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-report-github.md b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-report-github.md
new file mode 100644
index 00000000..4884293f
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-report-github.md
@@ -0,0 +1,16 @@
+```
+
+BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat) WSL
+AMD Ryzen 9 5950X, 1 CPU, 32 logical and 16 physical cores
+.NET SDK 9.0.102
+ [Host] : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2 DEBUG
+ Job-ONJMYK : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+
+IterationCount=10 MaxIterationCount=20 UnrollFactor=1
+WarmupCount=3
+
+```
+| Method | Mean | Error | StdDev | Min | Max | Code Size | Gen0 | Gen1 | Allocated |
+|------- |----------:|----------:|----------:|----------:|----------:|----------:|---------:|--------:|----------:|
+| New | 0.8472 ms | 0.0178 ms | 0.0106 ms | 0.8293 ms | 0.8614 ms | 226 B | 66.4063 | 7.8125 | 1.1 MB |
+| Old | 2.4368 ms | 0.0546 ms | 0.0325 ms | 2.3870 ms | 2.4769 ms | 226 B | 101.5625 | 23.4375 | 1.66 MB |
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-report.csv b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-report.csv
new file mode 100644
index 00000000..d51b7a24
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-report.csv
@@ -0,0 +1,3 @@
+Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Min,Max,Code Size,Gen0,Gen1,Allocated
+New,Job-ONJMYK,False,Default,Default,Default,Default,Default,Default,11111111111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,0.8472 ms,0.0178 ms,0.0106 ms,0.8293 ms,0.8614 ms,226 B,66.4063,7.8125,1.1 MB
+Old,Job-ONJMYK,False,Default,Default,Default,Default,Default,Default,11111111111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,Default,20,Default,Default,Default,Default,Default,1,3,2.4368 ms,0.0546 ms,0.0325 ms,2.3870 ms,2.4769 ms,226 B,101.5625,23.4375,1.66 MB
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-report.html b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-report.html
new file mode 100644
index 00000000..0480a9d6
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-report.html
@@ -0,0 +1,33 @@
+
+
+
+
+Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-20250220-033732
+
+
+
+
+
+BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat) WSL
+AMD Ryzen 9 5950X, 1 CPU, 32 logical and 16 physical cores
+.NET SDK 9.0.102
+ [Host] : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2 DEBUG
+ Job-ONJMYK : .NET 9.0.1 (9.0.124.61010), X64 RyuJIT AVX2
+
+IterationCount=10 MaxIterationCount=20 UnrollFactor=1
+WarmupCount=3
+
+
+
+Method Mean Error StdDev Min Max Code Size Gen0 Gen1 Allocated
+
+New 0.8472 ms 0.0178 ms 0.0106 ms 0.8293 ms 0.8614 ms 226 B 66.4063 7.8125 1.1 MB
+Old 2.4368 ms 0.0546 ms 0.0325 ms 2.3870 ms 2.4769 ms 226 B 101.5625 23.4375 1.66 MB
+
+
+
diff --git a/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-report.txt b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-report.txt
new file mode 100644
index 00000000..024da84b
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/BenchmarkDotNet.Artifacts/results/Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers.ConwayBenchmarks-report.txt
@@ -0,0 +1,323 @@
+*** ConwayBenchmarks.New: Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3) ***
+* Raw *
+OverheadJitting 1: 1 op, 167357.00 ns, 167.3570 us/op
+WorkloadJitting 1: 1 op, 57464575.00 ns, 57.4646 ms/op
+WorkloadPilot 1: 4 op, 8208729.00 ns, 2.0522 ms/op
+WorkloadPilot 2: 5 op, 9554098.00 ns, 1.9108 ms/op
+WorkloadPilot 3: 6 op, 11812061.00 ns, 1.9687 ms/op
+WorkloadPilot 4: 7 op, 14275719.00 ns, 2.0394 ms/op
+WorkloadPilot 5: 8 op, 15858773.00 ns, 1.9823 ms/op
+WorkloadPilot 6: 9 op, 17598518.00 ns, 1.9554 ms/op
+WorkloadPilot 7: 10 op, 19663861.00 ns, 1.9664 ms/op
+WorkloadPilot 8: 11 op, 20143168.00 ns, 1.8312 ms/op
+WorkloadPilot 9: 12 op, 25003739.00 ns, 2.0836 ms/op
+WorkloadPilot 10: 13 op, 30941047.00 ns, 2.3801 ms/op
+WorkloadPilot 11: 14 op, 33188553.00 ns, 2.3706 ms/op
+WorkloadPilot 12: 15 op, 33608905.00 ns, 2.2406 ms/op
+WorkloadPilot 13: 16 op, 36291053.00 ns, 2.2682 ms/op
+WorkloadPilot 14: 32 op, 71854151.00 ns, 2.2454 ms/op
+WorkloadPilot 15: 64 op, 146093766.00 ns, 2.2827 ms/op
+WorkloadPilot 16: 128 op, 285462772.00 ns, 2.2302 ms/op
+WorkloadPilot 17: 256 op, 561511878.00 ns, 2.1934 ms/op
+OverheadWarmup 1: 256 op, 1982.00 ns, 7.7422 ns/op
+OverheadWarmup 2: 256 op, 1019.00 ns, 3.9805 ns/op
+OverheadWarmup 3: 256 op, 812.00 ns, 3.1719 ns/op
+OverheadWarmup 4: 256 op, 812.00 ns, 3.1719 ns/op
+OverheadWarmup 5: 256 op, 858.00 ns, 3.3516 ns/op
+OverheadWarmup 6: 256 op, 840.00 ns, 3.2813 ns/op
+OverheadWarmup 7: 256 op, 859.00 ns, 3.3555 ns/op
+OverheadActual 1: 256 op, 849.00 ns, 3.3164 ns/op
+OverheadActual 2: 256 op, 849.00 ns, 3.3164 ns/op
+OverheadActual 3: 256 op, 859.00 ns, 3.3555 ns/op
+OverheadActual 4: 256 op, 840.00 ns, 3.2813 ns/op
+OverheadActual 5: 256 op, 840.00 ns, 3.2813 ns/op
+OverheadActual 6: 256 op, 849.00 ns, 3.3164 ns/op
+OverheadActual 7: 256 op, 1010.00 ns, 3.9453 ns/op
+OverheadActual 8: 256 op, 1227.00 ns, 4.7930 ns/op
+OverheadActual 9: 256 op, 840.00 ns, 3.2813 ns/op
+OverheadActual 10: 256 op, 840.00 ns, 3.2813 ns/op
+OverheadActual 11: 256 op, 840.00 ns, 3.2813 ns/op
+OverheadActual 12: 256 op, 802.00 ns, 3.1328 ns/op
+OverheadActual 13: 256 op, 831.00 ns, 3.2461 ns/op
+OverheadActual 14: 256 op, 1784.00 ns, 6.9688 ns/op
+OverheadActual 15: 256 op, 935.00 ns, 3.6523 ns/op
+WorkloadWarmup 1: 256 op, 387166465.00 ns, 1.5124 ms/op
+WorkloadWarmup 2: 256 op, 275883910.00 ns, 1.0777 ms/op
+WorkloadWarmup 3: 256 op, 220388714.00 ns, 860.8934 us/op
+WorkloadActual 1: 256 op, 219762761.00 ns, 858.4483 us/op
+WorkloadActual 2: 256 op, 220526439.00 ns, 861.4314 us/op
+WorkloadActual 3: 256 op, 225244031.00 ns, 879.8595 us/op
+WorkloadActual 4: 256 op, 215933487.00 ns, 843.4902 us/op
+WorkloadActual 5: 256 op, 215869084.00 ns, 843.2386 us/op
+WorkloadActual 6: 256 op, 217833845.00 ns, 850.9135 us/op
+WorkloadActual 7: 256 op, 218569092.00 ns, 853.7855 us/op
+WorkloadActual 8: 256 op, 217577252.00 ns, 849.9111 us/op
+WorkloadActual 9: 256 op, 213661535.00 ns, 834.6154 us/op
+WorkloadActual 10: 256 op, 212298441.00 ns, 829.2908 us/op
+WorkloadResult 1: 256 op, 219761912.00 ns, 858.4450 us/op
+WorkloadResult 2: 256 op, 220525590.00 ns, 861.4281 us/op
+WorkloadResult 3: 256 op, 215932638.00 ns, 843.4869 us/op
+WorkloadResult 4: 256 op, 215868235.00 ns, 843.2353 us/op
+WorkloadResult 5: 256 op, 217832996.00 ns, 850.9101 us/op
+WorkloadResult 6: 256 op, 218568243.00 ns, 853.7822 us/op
+WorkloadResult 7: 256 op, 217576403.00 ns, 849.9078 us/op
+WorkloadResult 8: 256 op, 213660686.00 ns, 834.6121 us/op
+WorkloadResult 9: 256 op, 212297592.00 ns, 829.2875 us/op
+
+* Statistics for OverheadJitting
+Mean = 167.357 μs, StdErr = 0.000 μs (0.00%), N = 1, StdDev = 0.000 μs
+Min = 167.357 μs, Q1 = 167.357 μs, Median = 167.357 μs, Q3 = 167.357 μs, Max = 167.357 μs
+IQR = 0.000 μs, LowerFence = 167.357 μs, UpperFence = 167.357 μs
+ConfidenceInterval = [NaN μs; NaN μs] (CI 99.9%), Margin = NaN μs (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[167.357 μs ; 167.357 μs) | @
+---------------------------------------------------
+
+* Statistics for WorkloadJitting
+Mean = 57.465 ms, StdErr = 0.000 ms (0.00%), N = 1, StdDev = 0.000 ms
+Min = 57.465 ms, Q1 = 57.465 ms, Median = 57.465 ms, Q3 = 57.465 ms, Max = 57.465 ms
+IQR = 0.000 ms, LowerFence = 57.465 ms, UpperFence = 57.465 ms
+ConfidenceInterval = [NaN ms; NaN ms] (CI 99.9%), Margin = NaN ms (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[57.465 ms ; 57.465 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadPilot
+Mean = 2.118 ms, StdErr = 0.041 ms (1.94%), N = 17, StdDev = 0.169 ms
+Min = 1.831 ms, Q1 = 1.969 ms, Median = 2.084 ms, Q3 = 2.245 ms, Max = 2.380 ms
+IQR = 0.277 ms, LowerFence = 1.554 ms, UpperFence = 2.661 ms
+ConfidenceInterval = [1.953 ms; 2.283 ms] (CI 99.9%), Margin = 0.165 ms (7.79% of Mean)
+Skewness = 0.01, Kurtosis = 1.53, MValue = 3.5
+-------------------- Histogram --------------------
+[1.745 ms ; 1.911 ms) | @
+[1.911 ms ; 2.084 ms) | @@@@@@@@
+[2.084 ms ; 2.219 ms) | @
+[2.219 ms ; 2.392 ms) | @@@@@@@
+---------------------------------------------------
+
+* Statistics for OverheadWarmup
+Mean = 4.008 ns, StdErr = 0.631 ns (15.75%), N = 7, StdDev = 1.670 ns
+Min = 3.172 ns, Q1 = 3.227 ns, Median = 3.352 ns, Q3 = 3.668 ns, Max = 7.742 ns
+IQR = 0.441 ns, LowerFence = 2.564 ns, UpperFence = 4.330 ns
+ConfidenceInterval = [0.247 ns; 7.768 ns] (CI 99.9%), Margin = 3.761 ns (93.83% of Mean)
+Skewness = 1.53, Kurtosis = 3.6, MValue = 2.4
+-------------------- Histogram --------------------
+[2.431 ns ; 4.722 ns) | @@@@@@
+[4.722 ns ; 6.597 ns) |
+[6.597 ns ; 8.888 ns) | @
+---------------------------------------------------
+
+* Statistics for OverheadActual
+Mean = 3.697 ns, StdErr = 0.257 ns (6.96%), N = 15, StdDev = 0.997 ns
+Min = 3.133 ns, Q1 = 3.281 ns, Median = 3.316 ns, Q3 = 3.504 ns, Max = 6.969 ns
+IQR = 0.223 ns, LowerFence = 2.947 ns, UpperFence = 3.838 ns
+ConfidenceInterval = [2.631 ns; 4.762 ns] (CI 99.9%), Margin = 1.065 ns (28.82% of Mean)
+Skewness = 2.39, Kurtosis = 7.87, MValue = 2.2
+-------------------- Histogram --------------------
+[3.009 ns ; 4.070 ns) | @@@@@@@@@@@@@
+[4.070 ns ; 5.323 ns) | @
+[5.323 ns ; 6.438 ns) |
+[6.438 ns ; 7.499 ns) | @
+---------------------------------------------------
+
+* Statistics for WorkloadWarmup
+Mean = 1.150 ms, StdErr = 0.192 ms (16.65%), N = 3, StdDev = 0.332 ms
+Min = 0.861 ms, Q1 = 0.969 ms, Median = 1.078 ms, Q3 = 1.295 ms, Max = 1.512 ms
+IQR = 0.326 ms, LowerFence = 0.481 ms, UpperFence = 1.784 ms
+ConfidenceInterval = [-4.902 ms; 7.203 ms] (CI 99.9%), Margin = 6.052 ms (526.16% of Mean)
+Skewness = 0.21, Kurtosis = 0.67, MValue = 2
+-------------------- Histogram --------------------
+[0.667 ms ; 1.271 ms) | @@
+[1.271 ms ; 1.814 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadActual
+Mean = 850.498 μs, StdErr = 4.546 μs (0.53%), N = 10, StdDev = 14.376 μs
+Min = 829.291 μs, Q1 = 843.302 μs, Median = 850.412 μs, Q3 = 857.283 μs, Max = 879.859 μs
+IQR = 13.981 μs, LowerFence = 822.330 μs, UpperFence = 878.254 μs
+ConfidenceInterval = [828.764 μs; 872.233 μs] (CI 99.9%), Margin = 21.734 μs (2.56% of Mean)
+Skewness = 0.43, Kurtosis = 2.42, MValue = 2
+-------------------- Histogram --------------------
+[823.195 μs ; 842.086 μs) | @@
+[842.086 μs ; 870.189 μs) | @@@@@@@
+[870.189 μs ; 888.617 μs) | @
+---------------------------------------------------
+
+* Statistics for WorkloadResult
+Mean = 847.233 μs, StdErr = 3.540 μs (0.42%), N = 9, StdDev = 10.619 μs
+Min = 829.287 μs, Q1 = 843.235 μs, Median = 849.908 μs, Q3 = 853.782 μs, Max = 861.428 μs
+IQR = 10.547 μs, LowerFence = 827.415 μs, UpperFence = 869.603 μs
+ConfidenceInterval = [829.388 μs; 865.077 μs] (CI 99.9%), Margin = 17.845 μs (2.11% of Mean)
+Skewness = -0.3, Kurtosis = 1.64, MValue = 2
+-------------------- Histogram --------------------
+[822.587 μs ; 840.024 μs) | @@
+[840.024 μs ; 868.129 μs) | @@@@@@@
+---------------------------------------------------
+*** ConwayBenchmarks.Old: Job-ONJMYK(IterationCount=10, MaxIterationCount=20, UnrollFactor=1, WarmupCount=3) ***
+* Raw *
+OverheadJitting 1: 1 op, 164129.00 ns, 164.1290 us/op
+WorkloadJitting 1: 1 op, 297768794.00 ns, 297.7688 ms/op
+WorkloadPilot 1: 4 op, 19516963.00 ns, 4.8792 ms/op
+WorkloadPilot 2: 5 op, 23312264.00 ns, 4.6625 ms/op
+WorkloadPilot 3: 6 op, 28386803.00 ns, 4.7311 ms/op
+WorkloadPilot 4: 7 op, 35046885.00 ns, 5.0067 ms/op
+WorkloadPilot 5: 8 op, 39167235.00 ns, 4.8959 ms/op
+WorkloadPilot 6: 9 op, 42042038.00 ns, 4.6713 ms/op
+WorkloadPilot 7: 10 op, 47554747.00 ns, 4.7555 ms/op
+WorkloadPilot 8: 11 op, 53469267.00 ns, 4.8608 ms/op
+WorkloadPilot 9: 12 op, 65118516.00 ns, 5.4265 ms/op
+WorkloadPilot 10: 13 op, 68017620.00 ns, 5.2321 ms/op
+WorkloadPilot 11: 14 op, 73407912.00 ns, 5.2434 ms/op
+WorkloadPilot 12: 15 op, 82903439.00 ns, 5.5269 ms/op
+WorkloadPilot 13: 16 op, 81385402.00 ns, 5.0866 ms/op
+WorkloadPilot 14: 32 op, 159684747.00 ns, 4.9901 ms/op
+WorkloadPilot 15: 64 op, 343571910.00 ns, 5.3683 ms/op
+WorkloadPilot 16: 128 op, 666093066.00 ns, 5.2039 ms/op
+OverheadWarmup 1: 128 op, 1917.00 ns, 14.9766 ns/op
+OverheadWarmup 2: 128 op, 764.00 ns, 5.9688 ns/op
+OverheadWarmup 3: 128 op, 720.00 ns, 5.6250 ns/op
+OverheadWarmup 4: 128 op, 684.00 ns, 5.3438 ns/op
+OverheadWarmup 5: 128 op, 549.00 ns, 4.2891 ns/op
+OverheadWarmup 6: 128 op, 531.00 ns, 4.1484 ns/op
+OverheadWarmup 7: 128 op, 567.00 ns, 4.4297 ns/op
+OverheadWarmup 8: 128 op, 765.00 ns, 5.9766 ns/op
+OverheadWarmup 9: 128 op, 621.00 ns, 4.8516 ns/op
+OverheadWarmup 10: 128 op, 792.00 ns, 6.1875 ns/op
+OverheadActual 1: 128 op, 702.00 ns, 5.4844 ns/op
+OverheadActual 2: 128 op, 675.00 ns, 5.2734 ns/op
+OverheadActual 3: 128 op, 756.00 ns, 5.9063 ns/op
+OverheadActual 4: 128 op, 621.00 ns, 4.8516 ns/op
+OverheadActual 5: 128 op, 666.00 ns, 5.2031 ns/op
+OverheadActual 6: 128 op, 549.00 ns, 4.2891 ns/op
+OverheadActual 7: 128 op, 567.00 ns, 4.4297 ns/op
+OverheadActual 8: 128 op, 522.00 ns, 4.0781 ns/op
+OverheadActual 9: 128 op, 1332.00 ns, 10.4063 ns/op
+OverheadActual 10: 128 op, 819.00 ns, 6.3984 ns/op
+OverheadActual 11: 128 op, 1764.00 ns, 13.7813 ns/op
+OverheadActual 12: 128 op, 882.00 ns, 6.8906 ns/op
+OverheadActual 13: 128 op, 648.00 ns, 5.0625 ns/op
+OverheadActual 14: 128 op, 630.00 ns, 4.9219 ns/op
+OverheadActual 15: 128 op, 675.00 ns, 5.2734 ns/op
+OverheadActual 16: 128 op, 684.00 ns, 5.3438 ns/op
+OverheadActual 17: 128 op, 702.00 ns, 5.4844 ns/op
+OverheadActual 18: 128 op, 639.00 ns, 4.9922 ns/op
+OverheadActual 19: 128 op, 657.00 ns, 5.1328 ns/op
+OverheadActual 20: 128 op, 639.00 ns, 4.9922 ns/op
+WorkloadWarmup 1: 128 op, 602271724.00 ns, 4.7052 ms/op
+WorkloadWarmup 2: 128 op, 467584958.00 ns, 3.6530 ms/op
+WorkloadWarmup 3: 128 op, 360791232.00 ns, 2.8187 ms/op
+WorkloadActual 1: 128 op, 315093565.00 ns, 2.4617 ms/op
+WorkloadActual 2: 128 op, 313649312.00 ns, 2.4504 ms/op
+WorkloadActual 3: 128 op, 307707877.00 ns, 2.4040 ms/op
+WorkloadActual 4: 128 op, 307711293.00 ns, 2.4040 ms/op
+WorkloadActual 5: 128 op, 305530645.00 ns, 2.3870 ms/op
+WorkloadActual 6: 128 op, 357075928.00 ns, 2.7897 ms/op
+WorkloadActual 7: 128 op, 313506850.00 ns, 2.4493 ms/op
+WorkloadActual 8: 128 op, 310736091.00 ns, 2.4276 ms/op
+WorkloadActual 9: 128 op, 316251047.00 ns, 2.4707 ms/op
+WorkloadActual 10: 128 op, 317039044.00 ns, 2.4769 ms/op
+WorkloadResult 1: 128 op, 315092894.50 ns, 2.4617 ms/op
+WorkloadResult 2: 128 op, 313648641.50 ns, 2.4504 ms/op
+WorkloadResult 3: 128 op, 307707206.50 ns, 2.4040 ms/op
+WorkloadResult 4: 128 op, 307710622.50 ns, 2.4040 ms/op
+WorkloadResult 5: 128 op, 305529974.50 ns, 2.3870 ms/op
+WorkloadResult 6: 128 op, 313506179.50 ns, 2.4493 ms/op
+WorkloadResult 7: 128 op, 310735420.50 ns, 2.4276 ms/op
+WorkloadResult 8: 128 op, 316250376.50 ns, 2.4707 ms/op
+WorkloadResult 9: 128 op, 317038373.50 ns, 2.4769 ms/op
+
+* Statistics for OverheadJitting
+Mean = 164.129 μs, StdErr = 0.000 μs (0.00%), N = 1, StdDev = 0.000 μs
+Min = 164.129 μs, Q1 = 164.129 μs, Median = 164.129 μs, Q3 = 164.129 μs, Max = 164.129 μs
+IQR = 0.000 μs, LowerFence = 164.129 μs, UpperFence = 164.129 μs
+ConfidenceInterval = [NaN μs; NaN μs] (CI 99.9%), Margin = NaN μs (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[164.129 μs ; 164.130 μs) | @
+---------------------------------------------------
+
+* Statistics for WorkloadJitting
+Mean = 297.769 ms, StdErr = 0.000 ms (0.00%), N = 1, StdDev = 0.000 ms
+Min = 297.769 ms, Q1 = 297.769 ms, Median = 297.769 ms, Q3 = 297.769 ms, Max = 297.769 ms
+IQR = 0.000 ms, LowerFence = 297.769 ms, UpperFence = 297.769 ms
+ConfidenceInterval = [NaN ms; NaN ms] (CI 99.9%), Margin = NaN ms (NaN% of Mean)
+Skewness = NaN, Kurtosis = NaN, MValue = 2
+-------------------- Histogram --------------------
+[297.769 ms ; 297.769 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadPilot
+Mean = 5.034 ms, StdErr = 0.069 ms (1.37%), N = 16, StdDev = 0.275 ms
+Min = 4.662 ms, Q1 = 4.835 ms, Median = 4.998 ms, Q3 = 5.235 ms, Max = 5.527 ms
+IQR = 0.400 ms, LowerFence = 4.234 ms, UpperFence = 5.836 ms
+ConfidenceInterval = [4.753 ms; 5.314 ms] (CI 99.9%), Margin = 0.280 ms (5.57% of Mean)
+Skewness = 0.24, Kurtosis = 1.65, MValue = 2
+-------------------- Histogram --------------------
+[4.636 ms ; 4.923 ms) | @@@@@@@
+[4.923 ms ; 5.260 ms) | @@@@@@
+[5.260 ms ; 5.591 ms) | @@@
+---------------------------------------------------
+
+* Statistics for OverheadWarmup
+Mean = 6.180 ns, StdErr = 1.006 ns (16.27%), N = 10, StdDev = 3.180 ns
+Min = 4.148 ns, Q1 = 4.535 ns, Median = 5.484 ns, Q3 = 5.975 ns, Max = 14.977 ns
+IQR = 1.439 ns, LowerFence = 2.376 ns, UpperFence = 8.134 ns
+ConfidenceInterval = [1.372 ns; 10.987 ns] (CI 99.9%), Margin = 4.808 ns (77.80% of Mean)
+Skewness = 2.04, Kurtosis = 5.9, MValue = 2
+-------------------- Histogram --------------------
+[ 3.231 ns ; 7.105 ns) | @@@@@@@@@
+[ 7.105 ns ; 10.980 ns) |
+[10.980 ns ; 13.039 ns) |
+[13.039 ns ; 16.914 ns) | @
+---------------------------------------------------
+
+* Statistics for OverheadActual
+Mean = 5.910 ns, StdErr = 0.510 ns (8.62%), N = 20, StdDev = 2.279 ns
+Min = 4.078 ns, Q1 = 4.975 ns, Median = 5.238 ns, Q3 = 5.590 ns, Max = 13.781 ns
+IQR = 0.615 ns, LowerFence = 4.052 ns, UpperFence = 6.513 ns
+ConfidenceInterval = [3.931 ns; 7.888 ns] (CI 99.9%), Margin = 1.979 ns (33.48% of Mean)
+Skewness = 2.37, Kurtosis = 7.93, MValue = 2.73
+-------------------- Histogram --------------------
+[ 3.890 ns ; 6.094 ns) | @@@@@@@@@@@@@@@@
+[ 6.094 ns ; 7.746 ns) | @@
+[ 7.746 ns ; 9.305 ns) |
+[ 9.305 ns ; 11.508 ns) | @
+[11.508 ns ; 12.680 ns) |
+[12.680 ns ; 14.883 ns) | @
+---------------------------------------------------
+
+* Statistics for WorkloadWarmup
+Mean = 3.726 ms, StdErr = 0.546 ms (14.65%), N = 3, StdDev = 0.945 ms
+Min = 2.819 ms, Q1 = 3.236 ms, Median = 3.653 ms, Q3 = 4.179 ms, Max = 4.705 ms
+IQR = 0.943 ms, LowerFence = 1.821 ms, UpperFence = 5.594 ms
+ConfidenceInterval = [-13.522 ms; 20.973 ms] (CI 99.9%), Margin = 17.247 ms (462.93% of Mean)
+Skewness = 0.08, Kurtosis = 0.67, MValue = 2
+-------------------- Histogram --------------------
+[2.376 ms ; 4.096 ms) | @@
+[4.096 ms ; 5.566 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadActual
+Mean = 2.472 ms, StdErr = 0.037 ms (1.48%), N = 10, StdDev = 0.116 ms
+Min = 2.387 ms, Q1 = 2.410 ms, Median = 2.450 ms, Q3 = 2.468 ms, Max = 2.790 ms
+IQR = 0.059 ms, LowerFence = 2.322 ms, UpperFence = 2.556 ms
+ConfidenceInterval = [2.297 ms; 2.647 ms] (CI 99.9%), Margin = 0.175 ms (7.08% of Mean)
+Skewness = 1.98, Kurtosis = 5.73, MValue = 2
+-------------------- Histogram --------------------
+[2.361 ms ; 2.502 ms) | @@@@@@@@@
+[2.502 ms ; 2.643 ms) |
+[2.643 ms ; 2.719 ms) |
+[2.719 ms ; 2.860 ms) | @
+---------------------------------------------------
+
+* Statistics for WorkloadResult
+Mean = 2.437 ms, StdErr = 0.011 ms (0.44%), N = 9, StdDev = 0.032 ms
+Min = 2.387 ms, Q1 = 2.404 ms, Median = 2.449 ms, Q3 = 2.462 ms, Max = 2.477 ms
+IQR = 0.058 ms, LowerFence = 2.317 ms, UpperFence = 2.548 ms
+ConfidenceInterval = [2.382 ms; 2.491 ms] (CI 99.9%), Margin = 0.055 ms (2.24% of Mean)
+Skewness = -0.24, Kurtosis = 1.28, MValue = 2
+-------------------- Histogram --------------------
+[2.383 ms ; 2.488 ms) | @@@@@@@@@
+---------------------------------------------------
diff --git a/src/Chrysalis.Cbor.Benchmark/Benchmarks/Deserializers/AlonzoBenchmarks.cs b/src/Chrysalis.Cbor.Benchmark/Benchmarks/Deserializers/AlonzoBenchmarks.cs
new file mode 100644
index 00000000..b0e182bc
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/Benchmarks/Deserializers/AlonzoBenchmarks.cs
@@ -0,0 +1,47 @@
+extern alias Old;
+extern alias New;
+
+using BenchmarkDotNet.Attributes;
+using NewSerializer = New::Chrysalis.Cbor.Serialization.CborSerializer;
+using OldSerializer = Old::Chrysalis.Cbor.Converters.CborSerializer;
+using NewBlock = New::Chrysalis.Cbor.Cardano.Types.Block.AlonzoCompatibleBlock;
+using OldBlock = Old::Chrysalis.Cardano.Core.Types.Block.AlonzoCompatibleBlock;
+
+namespace Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers;
+
+public class AlonzoBenchmarks
+{
+ private const int CONCURRENCY_LEVEL = 2;
+ private const int ITERATIONS_PER_TASK = 2;
+
+ private readonly string _block = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "data", "alonzo_block.cbor"));
+
+ [Benchmark]
+ public async Task New()
+ {
+ byte[] cborBytes = Convert.FromHexString(_block);
+
+
+ IEnumerable tasks = [.. Enumerable.Range(0, CONCURRENCY_LEVEL).Select(_ => Task.Run(() =>
+ {
+ for (int i = 0; i < ITERATIONS_PER_TASK; i++)
+ NewSerializer.Deserialize(cborBytes);
+ }))];
+
+ await Task.WhenAll(tasks);
+ }
+
+ [Benchmark]
+ public async Task Old()
+ {
+ byte[] cborBytes = Convert.FromHexString(_block);
+
+ IEnumerable tasks = [.. Enumerable.Range(0, CONCURRENCY_LEVEL).Select(_ => Task.Run(() =>
+ {
+ for (int i = 0; i < ITERATIONS_PER_TASK; i++)
+ OldSerializer.Deserialize(cborBytes);
+ }))];
+
+ await Task.WhenAll(tasks);
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.Benchmark/Benchmarks/Deserializers/AlonzoDuplicateKeyBenchmarks.cs b/src/Chrysalis.Cbor.Benchmark/Benchmarks/Deserializers/AlonzoDuplicateKeyBenchmarks.cs
new file mode 100644
index 00000000..8bcb16a1
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/Benchmarks/Deserializers/AlonzoDuplicateKeyBenchmarks.cs
@@ -0,0 +1,47 @@
+extern alias Old;
+extern alias New;
+
+using BenchmarkDotNet.Attributes;
+using NewSerializer = New::Chrysalis.Cbor.Serialization.CborSerializer;
+using OldSerializer = Old::Chrysalis.Cbor.Converters.CborSerializer;
+using NewBlock = New::Chrysalis.Cbor.Cardano.Types.Block.AlonzoCompatibleBlock;
+using OldBlock = Old::Chrysalis.Cardano.Core.Types.Block.AlonzoCompatibleBlock;
+
+namespace Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers;
+
+public class AlonzoDuplicateKeyBenchmarks
+{
+ private const int CONCURRENCY_LEVEL = 2;
+ private const int ITERATIONS_PER_TASK = 2;
+
+ private readonly string _block = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "data", "alonzo_with_duplicate_key_block.cbor"));
+
+ [Benchmark]
+ public async Task New()
+ {
+ byte[] cborBytes = Convert.FromHexString(_block);
+
+
+ IEnumerable tasks = [.. Enumerable.Range(0, CONCURRENCY_LEVEL).Select(_ => Task.Run(() =>
+ {
+ for (int i = 0; i < ITERATIONS_PER_TASK; i++)
+ NewSerializer.Deserialize(cborBytes);
+ }))];
+
+ await Task.WhenAll(tasks);
+ }
+
+ [Benchmark]
+ public async Task Old()
+ {
+ byte[] cborBytes = Convert.FromHexString(_block);
+
+ IEnumerable tasks = [.. Enumerable.Range(0, CONCURRENCY_LEVEL).Select(_ => Task.Run(() =>
+ {
+ for (int i = 0; i < ITERATIONS_PER_TASK; i++)
+ OldSerializer.Deserialize(cborBytes);
+ }))];
+
+ await Task.WhenAll(tasks);
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.Benchmark/Benchmarks/Deserializers/BabbageBenchmarks.cs b/src/Chrysalis.Cbor.Benchmark/Benchmarks/Deserializers/BabbageBenchmarks.cs
new file mode 100644
index 00000000..c31c20d8
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/Benchmarks/Deserializers/BabbageBenchmarks.cs
@@ -0,0 +1,47 @@
+extern alias Old;
+extern alias New;
+
+using BenchmarkDotNet.Attributes;
+using NewSerializer = New::Chrysalis.Cbor.Serialization.CborSerializer;
+using OldSerializer = Old::Chrysalis.Cbor.Converters.CborSerializer;
+using NewBlock = New::Chrysalis.Cbor.Cardano.Types.Block.BabbageBlock;
+using OldBlock = Old::Chrysalis.Cardano.Core.Types.Block.BabbageBlock;
+
+namespace Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers;
+
+public class BabbageBenchmarks
+{
+ private const int CONCURRENCY_LEVEL = 2;
+ private const int ITERATIONS_PER_TASK = 2;
+
+ private readonly string _block = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "data", "babbage_block.cbor"));
+
+ [Benchmark]
+ public async Task New()
+ {
+ byte[] cborBytes = Convert.FromHexString(_block);
+
+
+ IEnumerable tasks = [.. Enumerable.Range(0, CONCURRENCY_LEVEL).Select(_ => Task.Run(() =>
+ {
+ for (int i = 0; i < ITERATIONS_PER_TASK; i++)
+ NewSerializer.Deserialize(cborBytes);
+ }))];
+
+ await Task.WhenAll(tasks);
+ }
+
+ [Benchmark]
+ public async Task Old()
+ {
+ byte[] cborBytes = Convert.FromHexString(_block);
+
+ IEnumerable tasks = [.. Enumerable.Range(0, CONCURRENCY_LEVEL).Select(_ => Task.Run(() =>
+ {
+ for (int i = 0; i < ITERATIONS_PER_TASK; i++)
+ OldSerializer.Deserialize(cborBytes);
+ }))];
+
+ await Task.WhenAll(tasks);
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.Benchmark/Benchmarks/Deserializers/ConwayBenchmarks.cs b/src/Chrysalis.Cbor.Benchmark/Benchmarks/Deserializers/ConwayBenchmarks.cs
new file mode 100644
index 00000000..3f1cb912
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/Benchmarks/Deserializers/ConwayBenchmarks.cs
@@ -0,0 +1,47 @@
+extern alias Old;
+extern alias New;
+
+using BenchmarkDotNet.Attributes;
+using NewSerializer = New::Chrysalis.Cbor.Serialization.CborSerializer;
+using OldSerializer = Old::Chrysalis.Cbor.Converters.CborSerializer;
+using NewBlock = New::Chrysalis.Cbor.Cardano.Types.Block.ConwayBlock;
+using OldBlock = Old::Chrysalis.Cardano.Core.Types.Block.ConwayBlock;
+
+namespace Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers;
+
+public class ConwayBenchmarks
+{
+ private const int CONCURRENCY_LEVEL = 2;
+ private const int ITERATIONS_PER_TASK = 2;
+
+ private readonly string _block = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "data", "conway_block.cbor"));
+
+ [Benchmark]
+ public async Task New()
+ {
+ byte[] cborBytes = Convert.FromHexString(_block);
+
+
+ IEnumerable tasks = [.. Enumerable.Range(0, CONCURRENCY_LEVEL).Select(_ => Task.Run(() =>
+ {
+ for (int i = 0; i < ITERATIONS_PER_TASK; i++)
+ NewSerializer.Deserialize(cborBytes);
+ }))];
+
+ await Task.WhenAll(tasks);
+ }
+
+ [Benchmark]
+ public async Task Old()
+ {
+ byte[] cborBytes = Convert.FromHexString(_block);
+
+ IEnumerable tasks = [.. Enumerable.Range(0, CONCURRENCY_LEVEL).Select(_ => Task.Run(() =>
+ {
+ for (int i = 0; i < ITERATIONS_PER_TASK; i++)
+ OldSerializer.Deserialize(cborBytes);
+ }))];
+
+ await Task.WhenAll(tasks);
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.Benchmark/Chrysalis.Cbor.Benchmark.csproj b/src/Chrysalis.Cbor.Benchmark/Chrysalis.Cbor.Benchmark.csproj
new file mode 100644
index 00000000..e94af2ad
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/Chrysalis.Cbor.Benchmark.csproj
@@ -0,0 +1,25 @@
+
+
+
+ Exe
+ net9.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+
+
diff --git a/src/Chrysalis.Cbor.Benchmark/Program.cs b/src/Chrysalis.Cbor.Benchmark/Program.cs
new file mode 100644
index 00000000..6769b225
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/Program.cs
@@ -0,0 +1,30 @@
+using BenchmarkDotNet.Columns;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Diagnosers;
+using BenchmarkDotNet.Exporters;
+using BenchmarkDotNet.Jobs;
+using BenchmarkDotNet.Reports;
+using BenchmarkDotNet.Running;
+using Chrysalis.Cbor.Benchmark.Benchmarks.Deserializers;
+using Perfolizer.Horology;
+
+var config = DefaultConfig.Instance
+ .AddExporter(RPlotExporter.Default)
+ .AddExporter(PlainExporter.Default)
+ .AddColumn(StatisticColumn.Min)
+ .AddColumn(StatisticColumn.Max)
+ .WithSummaryStyle(SummaryStyle.Default.WithTimeUnit(TimeUnit.Millisecond))
+ .WithOptions(ConfigOptions.DisableOptimizationsValidator)
+ .AddDiagnoser(MemoryDiagnoser.Default) // For memory allocation measurements
+ .AddDiagnoser(new DisassemblyDiagnoser(new DisassemblyDiagnoserConfig()))
+ .AddJob(Job.Default
+ .WithWarmupCount(3)
+ .WithIterationCount(10)
+ .WithMaxIterationCount(20)
+ .WithUnrollFactor(1)
+ );
+
+BenchmarkRunner.Run(config);
+BenchmarkRunner.Run(config);
+BenchmarkRunner.Run(config);
+BenchmarkRunner.Run(config);
diff --git a/src/Chrysalis.Cbor.Benchmark/data/alonzo_block.cbor b/src/Chrysalis.Cbor.Benchmark/data/alonzo_block.cbor
new file mode 100644
index 00000000..c69748d9
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/data/alonzo_block.cbor
@@ -0,0 +1 @@
+84828f1a005904061a01e4f6a5582021c3111a9a7bc94c4473232472fc13cdc2d28ffdd23d9ed7b717eafcaf3cfebd58202f3cc6c3b7f0e0c9ded59042ed973ac7aa4031167f0943c36d33bdf9bce73df15820d31eef88456a81532b2e3542edc12efefb74ad83c60d60448b70f3b0c285b885825840d9921e2e598048e8af42cce072c6e74d22dc0064e94c1b32115ea494065135b167fef63ccb12c5940eae27c726a68dc92db5f473b26a446ca495e23a4d3105b058501273dd72bc5091c6b7c34563576d011a5f61033211ea2ff0cc1976df837898d2084ed7f6f0284bc368b304fccef948c87b536db46af1e47141070fba9ba4788cb9bcaa9726f685ca4a953379c5e4f80d8258400006925d0fcc5b11fcf3d6303510b705e704ef5c1cd71bee6feb58f0895b2feaae9c843966b5e769f74b7937154ae767986ca553110dcff8b69c05961095656058508bd080d854b522a284d558adbd4516909c9ad7bb105bacd150f15c35aa82e2139aa8260a93a0e80287579fe46dd1c16577195d0aa5c861f4af85bed4b69c423587b191346e9a684781555e34a7c91b091924a85820df0c914fe93ecc076b9fa077390a4cd3ecf0413e5f71b88801cdd4d292b169be58208e825442eb570280bbcd1b554cc293231a7872bb05b3cc6ed2d16db6204b14ae0618c75840e7694afdec5e9edd646e5f5bc78362c1b079d0d62ef2c20f94b861cb8792222a3d98ac0fa94152e40a4f78a7bdab89b9c338e2da837725f3f0e4e4b6d67d890b04005901c0cf880816e236766340725d07aa598ebc56b7999a5d2dff8be576bb8c06ff66a5027c1cfda2b0b1c8e32413edd5e592b9adc9e74fcfd2017afe2fe98d1455b4098a0c89711bd71afb2f5e10a1265768f2c84d98d6acd1cf052bcc616a0255e0b867766a7723e99955687dd389c7864394ae1400836d9c38ac1fd467db5e9c11bb1dc787e0eee92473b93b48b09eaaa6d3a160d869895e37c300c2583161878aad6b06c0fe46e0b0d28fa1028047874ff4e70d23c5f453e4687b658311c42640ab8e6a1bdd02719ae72feb428627fed163b58c33f8a7d56ad0945009abb8253beb5e5dff60cf9afc15c910962fe4c34480f06fb8950afdbdde8281b1140e5e3265aca7020a3e3fd0aeaacb75fc9f933737f233cde6c03a7eb92742e028bbecc40969e0b68f08e53bd39362cb9d4226014c2ad89d425c754c1abb11ea9a54480aa4bcfe57ad62b77903cd90eb8e3374f40a7a11beda3c76c9cda5bb05ac5f00f0f868f07eaf1b1a9f5dde8ea19284caeec8e0f4d3cb9e14a676cf1f79adb31428bc910468877a200bd233e78b367b5ee667c29c2a0caeaa3936955e997bb02637975b47b75a0fae0bbe874d16fea05dfaecd87c9870bfce0d4ce1dab6320fed49da8da600818258206384be115440a4398bee154a03b0660cde77866ee87d668213242d8e52f813b300018282581d61b09810bf167ee557da7955bc8135b0a9c9e51fad323acc4b6841abd31b0000000107828e7582583901f0ba8e195c38a3be42b81959060f5e6a9a0cd3d328d8195bbbd7b1990e49deba7d017723225dc1779de91e4d19038609d69c6ab6f684ed0b821a001e8480a1581cb7ef0cfb14f588740d02ce8a53879ff96ab03c7b21ec1c459ac2bddaa15048617368477561726469616e3137333201021a00031a21031a02dc6c00075820449031012be3ce0052199538f0c2db90726f8d36eb11b00db6b510a8c9243cd609a1581cb7ef0cfb14f588740d02ce8a53879ff96ab03c7b21ec1c459ac2bddaa15048617368477561726469616e3137333201a4008182582005f2aef69abfcf78a67779b6e6b0cbc5592724fc53ee6ea0b8f4649eb9bca73000018282583901d5645f643be8735fb35c85c220c5bf521411a310bda81b4208462c3357de49b84973da8064a5867c2ea82a60abb7a010ff88b9e59fadfc221a003d090082581d61d91ef01b73f3010bb173945cf5417257c00c002715a13052015ab54f1a5b4d3873021a00029cd5031a01e4f753a400818258208760b7bb6c2f9c5cc340cd2c62ec3ab27b40777cb079e1b7fe01fe6123dee58501018282581d615fc1436b582a50ff4c5fdbf7e20942bdd45eb3aeaa7abdf442a6a34a1a1dc1b06c82582b82d818582183581c05b073f36ee030589a31148838cd47e8d8c8f82fec9fe091c7d53cd8a0001a0c5f26b11b0000000b9eaf4d11021a00034059031a01e4f7dda400838258209d9c7d4ea2dfbc730fe955b7c0b684123ed86f0054b7dc943727ac7bc7c2c7d200825820190a4421872e886d45325b1c2bbef914d98f11522ea81ed92a8839a87ad9a4b80182582005ede2bc0420a37dec63e032603b03e4a365831e5671aaada2ba6344c0234a7d010182825839010421800176834399c971e71972d5c85d1b45ee9c71242b6fc25cb84dcb4023d8148d86a8072f39cdb21628f2691e7a89f38ed158aa5d27bd1a3b9aca0082581d616904e8b2c26f3dda6c4a5db4b3ec9e31d581c9960977cfe9c6917a431a1c5f0591021a0002e195031a01e4f753a60081825820bdb86187627fde6eee1601c88a792cb9f3a459f6cab26ab281362f9751f0ae4900018182581d61d80fe69ded1ff90f41e526d0332a2ff98ba8a0d85ceb8941b51784201a05f11c47021a0004c4b9031a01e63c82048182068200bf8200581c001ec42376196df0b85b6ad660e7419e77b51b16fda8b931d559562e1a01f9d2708200581c0122c6ccb1533c9992ff08a9029b7b5a016d5c08d31a4963cd027afc1a012661c28200581c01fad190adc72e0884adb77aa72ef9d95d3adb75f782bad63b53a5b71a02c7c0c48200581c0a57686dc0d73abbf6ba8d1310dcf6887b2daa4693d94bc170fc08551a00ecbf328200581c1176b053d803161ca3ac7295f5ea78171b91650dc558d852e4547b601a0008ab5e8200581c125fa8bc3a9acda7a2e3646d6ecfaea925758378ad18011ef7164f461a05bb79a68200581c153d28771d39b9852db013519d4ac5542f6e7ff61c5b5327a129d7681a001ac34e8200581c158cfda322ce2afdebefdf65f9cf1bc671472a470552ee2f55c8837a1a0091b6e68200581c199231d9529171c85390273df7dc21d787883ab3cde9f8ebae107a891a0124b99e8200581c2142e4997ca5f537199575019d277554c0aa14841af61d275978a4dc1a0004dda68200581c22f8366b4ec72f3c0be8b13a2f1360426229f44db187d0534e68c7141a002359898200581c24f1b3791037e55363815fc4b788b886cd1d82a2f2d39e17196cd1a41a001663a58200581c27f1b09428918e1454bf6e7c6cb88e3444f6e6a73f5d0ee644174d491a004b24038200581c350d09ffe65fec05b5cfea6672a16711ed3266ae608cdc6c4a75bae71a04c71cb38200581c3c775aaea2b5571a7f930c0375255d05f21deb42605ee66fd88ca3961a051bb2108200581c417e75dd8b721053008dc50169b08a8c5070db24718e6c1e8b83a0c81a0187281d8200581c42ad1acfc4e58c415d9c410de920c763c006392d7fa69b9a09986b101a2cb1e7d68200581c43a85f2839f1df18abfc04d12a55ec6eefb96f85d1c96236eba8159e19232b8200581c45aaea6b8f8056eb52b26c4115026452bfa4e4cf33a931b0eb85f9711a04ce773c8200581c45b6ff95bf046f3ed0a047e6968e1374d67aa39354965688952fd2171a079227888200581c460417506c1a3042e133cdef4a7dabdd02bda35c14eb43cce13516841903f98200581c46679d60511973cd756322e6fdd1b0d6224eebec681f065a704e753e1a0195a52d8200581c4697386c4e3dc2b43f49564e6361935280f1f751c80a6c9cadbfb33b1a0c85fe408200581c46a31eb43ac7d42255b74f24945badfc5da0014a2e37e6bcb69ce4d91a08b943518200581c4a8b1947b2cf3acdc443a89022a453683c783bf864f8b07a59d943671b000000012bad4bcd8200581c4e049d9d384b6795237264bb400d0174a4c6dc808bdfd70ee692ad2c1a0374aaf08200581c52662fdac99229b8f9682f47c2d3ba181f33e79b429a2a08d0f54d091a0064f8398200581c52f28ebdf268ae3eef783dcac001657502d8fccafa9d8158493f65331a0010daa88200581c59cc53d2aaed4384323b2358333fd607ed9928064b10459af4ec59771a07937e108200581c6877dcb866858b2a4941351c98cd67202262bfd82a016cbbaa0739271b0000011a95bafbed8200581c6cb47c86575faca5f0c555f30b5c45f291aa5d6eeb28d7eed82178491a0048d0198200581c6eab73f5febbfc54243d035bd3df1986a6b88149f6c8178b341dfbc01a00c1e5c38200581c73d2af07d180c46a40ea6f63a04a947588033a401706bc80f72037e51a09017b278200581c745f6af3a90cf0f2bb23f8ab3ae3978ced39a56b31cfacc6b746258b1a01749d798200581c785f7b5357d18f1a887f5b1e114b96071ccccbff253e4b6b01574ae91a0116eac48200581c7ff0ce382f9fc3f12bc0d23749a7d6690b5bca1521a1c83cb78b5e211a0311471d8200581c83b2f390520f69d98a374e391a48da191418e10be9e1f33583ab51771a00945ab98200581c8723dba003e8c3b8d31e20f92d1cab0952b67d4405f64b5957f790c01a00bb80bd8200581c876c8abaa636168c7d43623be103c6bfffcfb0337c05ffd1a7ea72e51b0000000150dda2428200581c98f137b818ec3c13cb9fa89e116af481bc6e80879de23450e714c0f21a00e21bcc8200581c9d6b6319e2e79b0ea46f3a6ed27414ca9563f2fdc1969fd12751ad941a0078fb848200581ca545012a07d0fe8a284fd159753857d3b7ca1f8bfd6a389b0086c73b1a0c64df948200581caaab46ce0889442fe83e74489970ef6337721fe8761478825ec7701e1a16dd0fe38200581cb3877745120a10b5e302cc27303e91fe2a387dcb189a74aacb6493d81a050db0c18200581cbc000424731d5cfdb41da8bbb2e8bfbdcf05becd055a3f831a0ccdfa1a0b46a4c98200581cbfb28b26bc5e5c844e8322889cdb801fbbf0d00a2bfebb67c05367b0192a688200581cc127f4d4d4d729b3a8ba129764c366c7a96c99080546d41f3b18a51b1b000000026b353c4a8200581ccd38f8c900b24bdb5b0d9808b3b781f2c63639ddfe56407291448ced1a009923c88200581cd72821377163a04744a937d9c883ad37f835d53d010377c405a3a76f1a00c6f0ed8200581cdb0de66e9113e8ddecc3642124a557fe0d7753d642162cc1ec85292c1a00b505898200581ce10b3c4fd7b13a5d3b03d0f8f5dac81823e7e25c521b9535eb99f8221a000df4958200581cefb8d63c37774aee85b731f53300e920d0cdfc2fb5e84f6a0ebe678f1969978200581cf1ad22aeae767f9fffccc3c14c271e893c5479bee5e59e673a5ecaed1978008200581cf469490ab5e6ec3f7889b29759e4a40b473c02da521547b1c3027e0f1a00157e568200581cf51bd635bddf367cf9ffc0726f0c492cde7a1b1640c1727d54a7446d1a02d80dda8200581cf8b0dada0c9d9ffeee95d7f536799a4034886e6d60a7367f81948a021a018065828200581cfc19a4302b9fe7b337e6f5a767efc5c875cd874768a19b0c535b9b8c1a000bc7f28200581cfe49dc3325b96a75c098406c0063e9560fc903df998d2b14736f9f2e1a00fb0f8d8200581cfef6bdfbf412da5de3c8d5aa4d9b1e30eef8c44be91b1eeb3afb279a1a0059dfbe8200581cff7893d54dfceeff87c5f298ed1bb1435878ce694a3884eb6619f2b71a013581d3ff07582099f2c2a11bb310d2fc48d394b0946f10eeb0c97614f29d4e23d26694d9212bc7a5008282582045cae0be92fc3798cd1ce05496bc1439728d42f9a8262cc34d7f543f7f5a8c8f01825820fbde6fe2ab20d17e7701a277e3f6f9c426278155ea9b66d58b8b1ad0c9e1bc261841018282583901f33a98483aa3f8e7968b444a5e3dc00e1adea6bcea66b57ed0e94094e512e0225710f61b5cc54df075c02d8b8a56a9a50ae78f5cff08672b1a000f4240825839018ea03c582adafe939362748a746af8cc5956265a1bd725e7a2de86d0e512e0225710f61b5cc54df075c02d8b8a56a9a50ae78f5cff08672b1ab2c6b355021a0002d115031a01e512b70758207bd96a772eadcede1be69dbf670e089a9c84d894b706f6af2e30e238b70bc3fda500818258207da8e470075fad15fdc1e6491c6243f227c8293b45d0bd851701f2ea452bcf9f010181825839015f55d092a48e116c8de09bb9f98b37e76ab59c7459d03d47f8fb60c1e638092504459177f7ca7d69ff356f28abf49805b99265f14aebaebf1a1fdcc802021a0002ab9d031a01e512a9075820f95046da8aee6914b6f42e6fd50a38c17730e8880cfaac5cee91347474280c6aa60081825820a01b9fe136e5703668c9c7776a76cc8541b84824635d237e270670a8ca56a39200018182581d61d80fe69ded1ff90f41e526d0332a2ff98ba8a0d85ceb8941b51784201a05739382021a000376c5031a01e63c82048582068200a48200581c0af10f4a5d365af01f0ca7651713a8a073263b61bbd1f69623097bd71a0fca5cf98200581c14bb4165052cb5bd0ca51869db388610c9ee92ca67e44a239759d0591a04c796e88200581c854139fc8987990fd89699beb1b59b09c047ace356870dcaadc93b221a0052a2268200581cd5b9ca34735343fcfc01d804180c8cfd20c45df317c44dec278ecdf61a0123a66f82008200581c0af10f4a5d365af01f0ca7651713a8a073263b61bbd1f69623097bd782008200581c14bb4165052cb5bd0ca51869db388610c9ee92ca67e44a239759d05982008200581c854139fc8987990fd89699beb1b59b09c047ace356870dcaadc93b2282008200581cd5b9ca34735343fcfc01d804180c8cfd20c45df317c44dec278ecdf607582099f2c2a11bb310d2fc48d394b0946f10eeb0c97614f29d4e23d26694d9212bc7a50081825820269fb6b97199568fd06b86c6dd8270f83150d7d40c215f2ba8f8e457d7bb245000018282583901c6c9a751f0eab448ae680c7606bf4b2384ae9a71295cfb08c17a64ec8603a5a749947b55e82c3ca023c427efed03380884e489835d5bed691a000f424082583901c070231d446324730fde9452e04796492b1929b9673145d01ca9d5458603a5a749947b55e82c3ca023c427efed03380884e489835d5bed691a60e37dc7021a0002b8d9031a01e512be07582070830ca599509b5c16e2ade57f1940041d44cb4261670d2e354199164d112e12a40081825820c0f8e704ffc3d13ba2e4d09a4919f32ae6fcee035b6fda43eb9e9ca17ccd8a4f010181825839012e38ef6f6dae9baa3fa9b2acd8fc2c4f107d7434e51525a00adf110e8a2cf13c17ac2bb9b259e319f57313cecf912ccc0a9e0c8e2f3b9a91821a001c1f69a2581c21514b6c51f0aaa0c9c337329ce93c52fad208cfd0b4ccd51074d9dca14e50494e4b44494e4f43344944353401581cd5e6bf0500378d4f0da4e8dde6becec7621cd8cbf5cbb9b87013d4cca14c53706163654275643137303201021a0002964d031a01e512aea4008182582071149f420d83e79cb197334a53498459bb212088f8ec2d173f5c87a83122dc9401018282582b82d818582183581cc0f1996bab57bd968f3cb5f6c52b0b7f3b37a937661d9a3440a7c517a0001ae951ab841b0000002e90edd00082582b82d818582183581cef15b91c9a8943935b925f188ae69d93b1fb3778287e0df8ebad82e8a0001ad69ba11a1b0000003ec066bc87021a0002a3b5031a01e5127ba40081825820697eb1e4e80920aa55dff603bf7e8df6d315e6fd621c99001a25862080a443f501018282583901fe196271973f89a9abb453c5f44581d3cab2ad3dae125f23c65b481caecbe3dc3fa606f16069de1d7013317100de7f2fee422c613712f3251a26def39782581d616904e8b2c26f3dda6c4a5db4b3ec9e31d581c9960977cfe9c6917a431a23b2abff021a00029cd5031a01e4f753a500818258204f00b22bf5e786cea6dcbed8740eda5a7dd26a88ee920674a01e032e56865d7a00018182583901f18d6a760e1b546680e78e4ec2b63c0f625f085b8925ff1ae40f5480973a4d96aa61a3b3af82dbdbfd15d5998f49fca582f4c617103b6fd71a8acad8f6021a0002b104031a01e5045d048183028200581c973a4d96aa61a3b3af82dbdbfd15d5998f49fca582f4c617103b6fd7581cafb33d38e92e03f9ce86f0175cc33e487b8def0ee25235f1e40183d18da2008282582014117c01278cbe88656a15738fa5e01ef899cf23c425ac3ace6c7042a48cf5b0584092bc3b8ba635ad72fb2cd1ef9b904d0651efe9adc5e8d4dda2063e4f9c8e780e3801524b7b047832db5875237751f51492fef8867dd9fa4ed5d9535713d41b008258207e80cc664e8e06f09351542237eba50a14083803f5d71e46d199046ab6d10ca858404854b2990692d016989742b78a0b51823671d7c09f36dc72f748613cca53f4d0b1084bb8ef4ec981bd063be93e1042038da84db130db8c1d41d257cdba27900001818201828200581c43475dd8f7ff3f4bffb1c0675d7e380b6fc4cd01fe4cc6ab6dc799fd82051a02dc6c00a10081825820991fc8c992024656460d6be0ac794b60050a66eeb8c1a673cb3f6cd476aea60958403171975fb103dea7995f85559fd74d4af4eedb58d4f602b62463052a75a541f952414e532562576893a797ee568e21a6ff5211a206313458491f6a18c94cf40ea10281845820f129f07bbfd87fd1d3ff5fb32e9a5566e02208f89518e9994048add22074f4335840faee03bae826b0b75f9b5ac383100098ade25e92b52c77804e9297321c564416efe7543a823d4fe14f4e94cc2f3f6351062775fb0ed002f04cc4825f24ba610f5820424e682a392581268c7544e34e9c54378a8820bdcf7dddce30490bbb2d363b4b41a0a1008282582073099bfb77940ff95733beca81b062d2355c5938e8c0931444b10af9facbf66f5840bab8e6f8412bea5e8ff61f5d0690043013dd4a14c582f0a23572dd444f797d271ed61017a5b5d7632fef01312c5251daa8dfd1bba2e0737808a18fe9d90ac109825820393b3d3cab6be0897cbc87143cc3a24825dc1d8249df4d37969502931cf856ff5840a96042cae910c15af4d7fdef81172665d5e9ebfbee7f965621859ff06128fe350b8d717fff9109fa9007208cc822ca34b42362d9f46f3e9e067779b2cd0c5309a1008882582061261a95b7613ee6bf2067dad77b70349729b0c50d57bc1cf30de0db4a1e73a85840ee884e65a0218cfedb1cd7fb33dd67c1a8483cde46e990a2b07cdf1b2a02429bcaa26705fb905dd0dc7d00f4b0aa76084de11d9142c0d51f623a39d6797609028258209180d818e69cd997e34663c418a648c076f2e19cd4194e486e159d8580bc6cda5840940aa59d5f5b42a414e8a498f3854c2a3dc358f20e5f13315f96ba54ac846394656bbb3cb29c8bac8fb85bc323a0eea55e42090f5169657974ecadc278b6c10b82582089c29f8c4af27b7accbe589747820134ebbaa1caf3ce949270a3d0c7dcfd541b5840507b4bb892b3412cc67ae4c1200111ab4a3092d36542f1c672eea555807da2e5a8f4788a7f696ac83a014c5d0adeae73c976611838a21490b7cd8930ffbef004825820f14f712dc600d793052d4842d50cefa4e65884ea6cf83707079eb8ce302efc855840f08279536d20eef4d5a1b8bc2b068c7c9901577541a62a5adb462596c8707f5efd16a193f9216fb95fcc307116a9d0f756a4cd1525139448aea2a7f828441b068258208b53207629f9a30e4b2015044f337c01735abe67243c19470c9dae8c7b732798584063bf278a2e77401c8fafaf2d53d7ecf6ba5dbfabfce432d56d9c189f1572507a5158a6aa01d33be4355388f7e850b00aff53dafef5fe0154491f688bdd639a038258205fddeedade2714d6db2f9e1104743d2d8d818ecddc306e176108db14caadd44158407d6b15a4ef09f819f9d2498a316cb3269842878200bedf5550b495772bb20880094950cd3cbb8669dbff863a32555401778df131103bb603b96a9f5b28606004825820cbc6b506e94fbefe442eecee376f3b3ebaf89415ef5cd2efb666e06ddae483935840fab6a4d5b9c19d32202ce689c82aed2a89c02a62ef780694937f4196e65656fd3e4ca0679ca8ca1a83025d1afe8fe2d8e3e6b0db6e9cdd491eaa2ec866604b08825820e8c03a03c0b2ddbea4195caf39f41e669f7d251ecf221fbb2f275c0a5d7e05d158404ddc3610fd5b52e310c52e52fbe8e873a831ab91e525b0733dfed21615b412d17ae77421e645b875bab25378c424c7c2471f674e45cfa1dd2b846b17cb7fe300a100828258204d5a7408218b85ba016167e1fcc5e8d0624ac8171de065b2842feaf4c051d5b9584086d8648acf6e8d3eb75fc56113aa29fc5814fc76fc8b06d583563724cd9c5c6cc097b335b2a2095dfa8c344066ca45d74511545c733e85d0fef5ab8e115de10282582071df0e0628e75eb9d6c891c8a4dc38f81ed8cf757ef424fb7ab651ab4cca2e6f5840083d3fb001c8e68b1cf9bec2d645bdf76636cd3bf3b7250597c09d26f2b0587be0eb69e279a8ad9d6f5e747fbce18a53c0da03e264f2fc794cad73be542a7704a10081825820e6fc61be738e242a1e21459b4e4847d739551dcee94b1f9b64fef42d19812887584068839e96ed4962ba56e0e0ad256d13f2980eb433d3879c9d32683034da65f6fa288b06e02e603741dc1f973ffcb8209da5b4cfd06885d9c78ddca1238f418d00a1008882582061261a95b7613ee6bf2067dad77b70349729b0c50d57bc1cf30de0db4a1e73a85840cfe660cdaff7bc3b24b64c80a3792884f56a84c9cbda089a81a6f01d5174598d1227639eb614ab36eb1fd217e212480acb8f7b109e7490e93bdecd4eb764a90f8258209180d818e69cd997e34663c418a648c076f2e19cd4194e486e159d8580bc6cda58403be9de37031ba2784bbfd08945d9cf8e02d30cde58a2feef5df12f901dca43d6b23bc294e7fd3d5cbcd4eef054dd872b48b477b601eec3e6d623c4cc9b97b10f82582089c29f8c4af27b7accbe589747820134ebbaa1caf3ce949270a3d0c7dcfd541b5840061b8f2c0771b3a7e281222bd11f1e26465e6441cef4957d961a1fafe5406fb5e21351a437177dafe2cb02e79c44466f63220eea6d0096763747469d179fe604825820f14f712dc600d793052d4842d50cefa4e65884ea6cf83707079eb8ce302efc8558400fa377081dd0adc26a806788ad60a71b82bf8057b6785c7b6c6307f03640469105f8f55b46e2c0cf4c5ebc8e8bbba2c5741442e30ece4842e875840a4705080c8258208b53207629f9a30e4b2015044f337c01735abe67243c19470c9dae8c7b7327985840ad8c64b2bb2985e5edf89625c70ffb3484104757675f2d8262ec6318cf9bd4716d3ab39d5a8f914ba1743ac69e16e142055620475dfcdd1389c50cb14c4e060c8258205fddeedade2714d6db2f9e1104743d2d8d818ecddc306e176108db14caadd4415840bb4c5cbd67d83698069c6bce1fc976f007abd15f792783c3e2a83135c6c082ce592e7a17ba5dcf70abaa6605a72d28e46d71ffa084984fc23b7e590578bf8e08825820cbc6b506e94fbefe442eecee376f3b3ebaf89415ef5cd2efb666e06ddae4839358405164f088b9005d1293d2dfc355ae8d64646aafe91d59cd5f5ea215ced68da3d47ef92e3185a3e6db2deeef99620a9df196dea1fc7a622cb6984d12840a3beb0d825820e8c03a03c0b2ddbea4195caf39f41e669f7d251ecf221fbb2f275c0a5d7e05d158407c10de828d07245f566237c8b3fc4fe0364480425ed4ee0439e94e57f87a526b2e581593c04b563bfe7fa423993c967fc8fc968fc1965eb51ca69368a2d7eb06a100818258200b68eb8e7438599681f732bda6eb942d32692cff2e0b43f9b944d67031bc493258405715f38cbdac7f18da841251f206b0d75df29f74269d2a6ed4a25884ad9c67fc15dead361482c4b16a51689de08efd54d9985df84fb49d1ca387070ac732e703a1008182582048d87ba1c9b6369754f9fddb76993befb16914f3b495078baff05fa0ad2ea934584021829192ecccffadb0ac65c33d142ef81627f5e7c9ccc6d40c87356390da85bbe0136b912c85102b9a38558eeaadddeecdbd9b677b6a68b90f6ae46583dac303a10281845820e87aefbe36826ed5f12341b167730b0b4cd6aa7cdd55709d9e675e684b15eadf5840ccc01472bb6017068a0c967b01813b0e4a489c390d4fdcc750eab073f806d82909e34ad7d920a679138e9edc2c5f9e44e5196281f8ab4b49c1f99819e8da520a582094a2c075ed1bf539b9972561edfac666d7c0669676bb98c21bed66a67bdd5bbe41a0a10081825820393b3d3cab6be0897cbc87143cc3a24825dc1d8249df4d37969502931cf856ff58407d647699068327b80e8881e1c93b7a5966863d12cb12e0bdf8261fb5f65f31534571cd0075a547c68057e4be9e72815a49ed08b3dad782c2b8f031deeca9a206a1008282582064bf0b03a9391aea875c6b5e258e26626e97e2279f53dbc9c8e853245f93d51b5840731721e1803e3eedf6866bec354e4122db21b404b89e3f34aa2076519e39262c6bcbec568fc3fafef66e79215497e7b7c461ff6f049e4fca9a4b4cb1b07622098258206951036ecb873cf248486656fafc2583350e2c173f5f3b6bcf1b199ab047179858402c213d314de43c42c6a687e7e088a2583989a7cb85e2c5aedf7baa86aa80cc983f2f92c50a362635cf26992e224bb6bf93530c3cf5a972d134a9b3beaf86f20fa60082a11902d1a178386237656630636662313466353838373430643032636538613533383739666639366162303363376232316563316334353961633262646461a17048617368477561726469616e31373332a96a6261636b67726f756e6464426c756563636964783b6261666b726569656973797734767766756e6d703264356b6263363279646e6333746e646737766433687335647537626b72343267686963323765626964782436613932346364642d346537362d346262362d613037312d31313863393562626462653065696d616765783b6261666b726569656973797734767766756e6d703264356b6263363279646e6333746e646737766433687335647537626b72343267686963323765646e616d657248617368477561726469616e202331373332666e756d6265721906c467737065636965736746616e74617379667472616974738a6657697a617264724c6f6e67626f77205370656369616c6973746e4368616d70696f6e2041726d6f726e476c6f72696f75732053776f7264684f6c642043617065654c65616b7968467269656e646c7967416e6e6f7965646642616e6469746e5769636b656420476c6173736573647479706568477561726469616e800482a100a165697373756578396769746875622e636f6d2f696e7075742d6f75747075742d686b2f63617264616e6f2d6c65646765722d73706563732f70756c6c2f32303130800582a219ef64a40158207c76d90d83e9989d67a520dbe6f3817dd8afa84f5932e622238008253479a66d0258202a85741ebd1076759c4a14649b30cddf1abd9014062b6616d3ca90d7b93aba5003581de1e512e0225710f61b5cc54df075c02d8b8a56a9a50ae78f5cff08672b041a01e4f69519ef65a1015840720ab14d84aaa87369eadaf68898b794c65580742263ba36cb1b757a3e4e6aaff0ced6bd8247fddc4950e9c1bcf8bcbf7e66e3f8008ab70aa2b4ff8f741046078006a219ef64a401582069179a00a3a6aefad3e6821df68ccd916a93dddae8947eebcfab929484f51082025820c2cc2477d19a048c3aceb048cb1b0cd81f80abc328fc2386fb8d87041965d53503581de1e638092504459177f7ca7d69ff356f28abf49805b99265f14aebaebf041a01e4f69019ef65a101584072eb8b90a33fdc9693df74470c6e9a1b0eb3a09ae10d8e9184113e43d1b6b93c2b9732147f3062ef61b997d46a3dc760c8618b4e8fbb4ace04b46f20ce77e70f0782a100a165697373756578396769746875622e636f6d2f696e7075742d6f75747075742d686b2f63617264616e6f2d6c65646765722d73706563732f70756c6c2f32303130800882a219ef64a4015820ba5706b0c36a61eb0ddaad50360d879f8283592475598303b288515a5cfcf49d0258207a995be7ad4ad8e1d6b3c50022d9d55777daaf4c3d6046f2bc74fe63ff70597d03581de18603a5a749947b55e82c3ca023c427efed03380884e489835d5bed69041a01e4f69b19ef65a1015840853aa89563db088d1a8411bd6bb30800ab130396f74c2f230297db31e7d3fe510e690578c775652b30b57a328cd8a8115182792dbfa8eb592e0a72cbeaca500480
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.Benchmark/data/alonzo_with_duplicate_key_block.cbor b/src/Chrysalis.Cbor.Benchmark/data/alonzo_with_duplicate_key_block.cbor
new file mode 100644
index 00000000..83d1ec64
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/data/alonzo_with_duplicate_key_block.cbor
@@ -0,0 +1 @@
+84828F1A0057D7E81A01CD568058205F484B951F012ED53FDB9E30DA0660902354C705F112745BF3B19EC31BC9BB005820E1806A6AF0EB0931EBDF8B766229CF9323F2252573AA6C6998DD1522FFDFBCC858204A20392BB23CEF3777DC1E9FA9B0719EC829B4B87C9E4295141DFB7C6783C3108258408C6059B6952E68EDCD6431F6EDB191705D29CDF82F8A9B855CEE856C8B33DF96B2F567107B4637F6E1FECA3585C9CB1066088BB8496DEA4260C344E2595C997B58508E39D072957817E7D89C19F78E2BB288553E215E81E435D88CE5B3869D10923982E8253112948035D7697762FBF555005D7682E3D5FDB09FE3EDBBDF65CE72514490882CBC89DD5F0A6CFB205EE52408825840000030ED0D10485C31937741CAB13B3D0C247BF9FF8155BF649C6FB314C40788C68F71E5064920C4964893225A77F8EFE65C19C0110DA27DAD4B72582880748F58500272D91E01C1C6C43C51FD1B1651ACD45ECB841BB2762C569C15E90B65D2515F669538C4F41C19CE20B01BB61D685A2B102124525D2F385A8B04283EEFF3C80017D430A075790DFAE7BA3BF1F3C1A90B192E515820A82D45674A1274786D8B9534F9F1F5887D4CB5103EF76E2D8E60ABBB9E2BE02D5820ED46BC0F963545DEBD5FDC3379D01C1EA7922685A4B823CB4DE51FFC63358B140418E0584052DE2D342719F78585E2B0A6959EB54E1D14385A0B04DAC45CA8AAE062094E7DFFD18AB533C0314779C91474A28D47A57FE085290EC2E422953860764CED0C0304005901C005B77FFDF89651681B6DFF5B1F54AE9824D589FE38DE8B9E0CFBA98B1002AC3013ED3B53EE39910C3AD7226A2D438F35D29B7BF4C8215DD379B9187E6622880A197DF65334198B5B195DC470550CD84D466F08E5B4ACA7B9F06CE4A748DB9C1DA29AF843ED989D7E814E2B778E3B713E5C6E7323531D1782AC3D01BE00B19EC65314E3015D71812389883C1B4C49064E20C3DFFF2745D028A7C336E21E4EEDBF73D048B86F7DF61B3DC2FA412F4BFA21C47CB4485DD1C432FDF562B31604DD3C4FD94F062C6269F74AC840A7A0F66539F84D0FA83520A78FD66779936B8B10C05FA29E3551D554696A95E6F62C240EDDD4CCDDD5E06E8C3876B100D94BA3217BD191B8D3BBD381DCD100E1BDF69D8F48CD3D9004FBC3B22E44546DAC068ACF85B04B6571155D469CEC8E9745D2E4A6F63E6982E65C4DB0F36B95CAF815FE535A45ABA199F9CDBD9A2BE400A49A0A4951EF4E8B423D920964BFB571B2C112F1FA66535424C4EA8CAF91791D4FDBEBA7309013826041C4EAA0FB8C958B0FE39B94353D81A6F788A90B9661770A168A713BF604EEAE769249E22298B86A6AFA27FA3104C1E27F1BBB914483A0686BBF24862F77A5E5B04E22F1D499A8883128FD6686A400818258204965D8B3C4824C86DD438840AC1A6C4D6FD2C1B6C0B58A2C14A845956D60FC4A01018282583901150E57FAE6104A97667E71EE10C3F55DF30ADD6B9C6D9B6189637681A51A1F56EB82FE568B7D57366BA2C8BA379889DD648220334812BCB61A0602410682583901E55D850D4DC5E611B740A5F61F836FB777E496A7A65ABDB3779D9017E28C1958BD7614D1C1A32FE155A47FF88CE2C0889A04E61983AF01831B00000015486ACC6C021A00029361031A01CD729DA40081825820F2CFE413FCC190C6A7424E542430572B0556AB71D16DEBDCA9A711AF1F0285F301018282584C82D818584283581CA74249849532514E2B1CECB943DF5CFA5919B0A8E2D7A1B9E0AB53C1A101581E581C12F1DAE7310D0837C2AD675B952BF5EA75B37FA7F258DEDA6C1301F6001AA4BC56581B000000012A059C1082582B82D818582183581C8E1238576C088D5088017715A77B8903B57EB282289B3F5D0A6C483AA0001A99CC1C161B000000043DAB7E7D021A0002A544031A01CD6451A4008282582095F34F20F95E4E97BB1695C0DE4FF9123FBAABF5BEA3199785DADAC4D40D4CE30182582038F022E851DC49640541D938383A5F63A5CD88B30DAECB651509953E70935CDD01018282582B82D818582183581C4CE47F03FFEA34A3D3316CDDC715ACCE37FEA271FD5079FDB5769543A0001AF669DF521A0119FA4C82581D616904E8B2C26F3DDA6C4A5DB4B3EC9E31D581C9960977CFE9C6917A431A001426BA021A0002BF35031A01CD5709A6008382582000E56B08DE6A647B6F6155EF64A1BC253C532735CBB54FF0F585AAC3A3CC17A0008258205B14E7ECFF7B6AAD407570397359EB4DA84E298285728267C475463A1B0345DD01825820F4D06B5DA11EC1BDF57A72CAA8C3A1DDD5DE3727F9011FB6924C44CD4BA2CC450101828258390148D9F60950CEC0B5F5BA4CA2A305F8D16F23BFB1D2B780FDB199B3F9CBE310A3070E37D57355E49F94E21A4F659C1AD8C9996DD410F4AE1C821A007270E0A1581C2F633081F8B95C9A0160FCAFC2FF18F2676634633CCC9DDD0A7CB25DBF494C464331306F66323501494C464331316F66323501494C464331326F66323501494C464331336F66323501494C464331346F66323501494C464331356F66323501494C464331366F66323501494C464331376F66323501494C464331386F66323501494C464331396F66323501484C4643316F66323501494C464332306F66323501494C464332316F66323501494C464332326F66323501494C464332336F66323501494C464332346F66323501494C464332356F66323501484C4643326F66323501484C4643336F66323501484C4643346F66323501484C4643356F66323501484C4643366F66323501484C4643376F66323501484C4643386F66323501484C4643396F66323501534C6F7665466F7243727970746F31306F66323501534C6F7665466F7243727970746F31316F66323501534C6F7665466F7243727970746F31326F66323501534C6F7665466F7243727970746F31336F66323501534C6F7665466F7243727970746F31346F66323501534C6F7665466F7243727970746F31356F66323501534C6F7665466F7243727970746F31366F66323501534C6F7665466F7243727970746F31376F66323501534C6F7665466F7243727970746F31386F66323501534C6F7665466F7243727970746F31396F66323501524C6F7665466F7243727970746F316F66323501534C6F7665466F7243727970746F32306F66323501534C6F7665466F7243727970746F32316F66323501534C6F7665466F7243727970746F32326F66323501534C6F7665466F7243727970746F32336F66323501534C6F7665466F7243727970746F32346F66323501534C6F7665466F7243727970746F32356F66323501524C6F7665466F7243727970746F326F66323501524C6F7665466F7243727970746F336F66323501524C6F7665466F7243727970746F346F66323501524C6F7665466F7243727970746F356F66323501524C6F7665466F7243727970746F366F66323501524C6F7665466F7243727970746F376F66323501524C6F7665466F7243727970746F386F66323501524C6F7665466F7243727970746F396F66323501FF82581D610CF2D472123546C1D59E974DA3DC0662B3233990EBC212EEA91F2EBE1A008192FB021A0009339D031A01CD56E1075820FA0A2DB8B6D6E5D62D2CBBE16C7D6BD3899138F769C10EBD671654910E8A27C909A1581C2F633081F8B95C9A0160FCAFC2FF18F2676634633CCC9DDD0A7CB25DBF494C464331306F66323501494C464331316F66323501494C464331326F66323501494C464331336F66323501494C464331346F66323501494C464331356F66323501494C464331366F66323501494C464331376F66323501494C464331386F66323501494C464331396F66323501484C4643316F66323501494C464332306F66323501494C464332316F66323501494C464332326F66323501494C464332336F66323501494C464332346F66323501494C464332356F66323501484C4643326F66323501484C4643336F66323501484C4643346F66323501484C4643356F66323501484C4643366F66323501484C4643376F66323501484C4643386F66323501484C4643396F66323501534C6F7665466F7243727970746F31306F66323501534C6F7665466F7243727970746F31316F66323501534C6F7665466F7243727970746F31326F66323501534C6F7665466F7243727970746F31336F66323501534C6F7665466F7243727970746F31346F66323501534C6F7665466F7243727970746F31356F66323501534C6F7665466F7243727970746F31366F66323501534C6F7665466F7243727970746F31376F66323501534C6F7665466F7243727970746F31386F66323501534C6F7665466F7243727970746F31396F66323501524C6F7665466F7243727970746F316F66323501534C6F7665466F7243727970746F32306F66323501534C6F7665466F7243727970746F32316F66323501534C6F7665466F7243727970746F32326F66323501534C6F7665466F7243727970746F32336F66323501534C6F7665466F7243727970746F32346F66323501534C6F7665466F7243727970746F32356F66323501524C6F7665466F7243727970746F326F66323501524C6F7665466F7243727970746F336F66323501524C6F7665466F7243727970746F346F66323501524C6F7665466F7243727970746F356F66323501524C6F7665466F7243727970746F366F66323501524C6F7665466F7243727970746F376F66323501524C6F7665466F7243727970746F386F66323501524C6F7665466F7243727970746F396F66323501FFA400838258206AFC8C499DA5C42C53EA442A8051B3081031F171EEEA4432991506381E2D8EB800825820D3AEFFEA2371A3EF2F195F40246FA89E20C6E349AB24B715E38E0F51D0E7E63601825820ECC73F986B568B27A052A4C0790B44582FDD584744D86F43DC6AAA5F9686AC3601018282583901D9ED3E385682557B35884980DC1721FF24BC2DEA1E22A311831AFB5CE38B3FBA9B40FED456199D3775F4AFDDF380B146336AE517925C554C1B000000015AC7129382584C82D818584283581CA1030E3B880D76789EC6B808E209AE56E827A4F57462B8FEC6802527A101581E581C2B0B011BA3683D173E253C2AC6D394B5300A9CB53F650EAA06FC6E19001A15BF798E1B00000001FB31CA1D021A0002F1BD031A01CD7297A40081825820C6C4EB1417FF576769B8F3FF6CBE2996D4A5CDC4E4B45EC30EB4E7577ED1EE2400018282581D61894D3315AF10374E5D1438C9B4108DE597245B7BC681BFE67C7204731A002DC6C082583901D5311050FC69536704CE36EFC076B515C1CCF8A13BAA820D30FCA8D04B4F2B1786E68840B7AA1C71827992FFB04D7D9C197D2E5B6847F82E1A0316E87F021A00028C81031A01CD728C86A10081825820FDAF2F6EF24890889F502DE09ECDEC7C9F676AB206E87613486F56F9799D605E5840CC1D70B7ACF2CE7281C21FBDB6559C8C1327499A1C4A6E8CEBB7072615EBFE0E51A4BFC2795BF692F9B4388831475FD7F1E9BDBF895EFC9FE83D87AD6E89FA0BA10281845820F4BCA00671176355C1DBE65F0AFBB2BAAC60D4F4762563C53014528F53D4984758409E078F6E746C8C25BF71E322C6AE15C67B28B2E2361AA3B2AE215525697746D592386443F6690D5556A5A550785B001E0F88DD86558D41172FC976DBE1CCB50A582061D1E3D6F0036146FA182D137EBD354A1DC7347829CF5308E166838AF163DCED41A0A10081825820393B3D3CAB6BE0897CBC87143CC3A24825DC1D8249DF4D37969502931CF856FF584063AAC1C764BBEA7851086BB765006D0209B36C15465547777881201140363E81153A18A7740C43A3E5377C111DF6C4FB773CAA30E8E36F45B05B6E15ADE34507A20081825820FD23AF269D1C2FD6BC66414B0AD239D3C6A843736FAE547A3EAC84BFCE301DAB5840DF212C60FD973B40094791B3258ABD26941852FC58FF5AE5D93EAA4027E7E94024CF0F1B792B81BCDB4475558D263E625D5564931610F3244ADC533CF9CAE60801818201828200581C0CF2D472123546C1D59E974DA3DC0662B3233990EBC212EEA91F2EBE82051A01CE9FB8A10283845820372A30B3C7A74189AD37BD55D35CB23722F5796693D983418FFB651E7F6164B158404499F9B35646E7F0844745F06B230305C474BB8E62ED91AE81C0D608F6D6ADDA7819BE1924BDC3BF4877DC912D13301E53CF51B614ECACC79F740379CB39300C582085551602903BC9BB1E393C8F797916EE01AE73272D5F43AD03E0AEB949EA69E55822A101581E581C2B0B011BA3683D5E4F72362A1243BCB5295CD8B1A82DF9E0DD758EE3845820C8354629E05665F031B2D1C4DC939C875D6A8166105A0D1452AD18AE2ED2231D5840459AF05A287FFABBF7D357D58F960292AFD89E4A303BDF1C45490D9853EB8F829C99677557D271712C5B52D5B5D63822F4592FC59D6D111587F827589A9F6E045820292B6546849392C190F00BE1161430AAD58A7281CCDCB491EAEF2818F66D99635822A101581E581C2B0B011BA3683D33AC3B7C2AF8C6AF7FF97376ABA498597192928ABF845820E49A56A62860A3689AFEA7E2E7D9CDF15D40F4958ACF0F5E9220A5063A36C8FB58401EF3F6F373D5B6E34A3C1DCFEDC67B436EFE46F2B363318731F51BCEE65013EF9CF2EBEC16D4A15DEB4C5FF4F882241987C660B00ABD03BA99EE7E1F162CF60158201DB2FA3F78A86ECB6E3ACB6237CA09E8BCC11D39EAE9E41A54F3217DC8578F2D5822A101581E581C2B0B011BA3683D1C06C49F2A0FE17210E840E52FD4BB52A5BFC5667BA100818258205B1F1B34E11EA7676A23D2773EE79A3446C3D2D488C0F50CAB2C41B6535D3D955840A5161E51190D98CF6DF88D70C2C7C4749FAB9822D92B1FD282B7B0857788E6EE1FB4756643375E726E99F2AAE0BC5CEDCF83540902F762C7A1D1A7DC646E6007A10382A11902D1A278383266363333303831663862393563396130313630666361666332666631386632363736363334363333636363396464643061376362323564B832684C4643316F663235A3646E616D656B4C46432031206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643326F663235A3646E616D656B4C46432032206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643336F663235A3646E616D656B4C46432033206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643346F663235A3646E616D656B4C46432034206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643356F663235A3646E616D656B4C46432035206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643366F663235A3646E616D656B4C46432036206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643376F663235A3646E616D656B4C46432037206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643386F663235A3646E616D656B4C46432038206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643396F663235A3646E616D656B4C46432039206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331306F663235A3646E616D656C4C4643203130206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331316F663235A3646E616D656C4C4643203131206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331326F663235A3646E616D656C4C4643203132206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331336F663235A3646E616D656C4C4643203133206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331346F663235A3646E616D656C4C4643203134206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331356F663235A3646E616D656C4C4643203135206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331366F663235A3646E616D656C4C4643203136206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331376F663235A3646E616D656C4C4643203137206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331386F663235A3646E616D656C4C4643203138206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331396F663235A3646E616D656C4C4643203139206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464332306F663235A3646E616D656C4C4643203230206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464332316F663235A3646E616D656C4C4643203231206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464332326F663235A3646E616D656C4C4643203232206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464332336F663235A3646E616D656C4C4643203233206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464332346F663235A3646E616D656C4C4643203234206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464332356F663235A3646E616D656C4C4643203235206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F724C6F7665466F7243727970746F316F663235A3646E616D65754C6F7665466F7243727970746F2031206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F326F663235A3646E616D65754C6F7665466F7243727970746F2032206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F336F663235A3646E616D65754C6F7665466F7243727970746F2033206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F346F663235A3646E616D65754C6F7665466F7243727970746F2034206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F356F663235A3646E616D65754C6F7665466F7243727970746F2035206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F366F663235A3646E616D65754C6F7665466F7243727970746F2036206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F376F663235A3646E616D65754C6F7665466F7243727970746F2037206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F386F663235A3646E616D65754C6F7665466F7243727970746F2038206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F396F663235A3646E616D65754C6F7665466F7243727970746F2039206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31306F663235A3646E616D65764C6F7665466F7243727970746F203130206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31316F663235A3646E616D65764C6F7665466F7243727970746F203131206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31326F663235A3646E616D65764C6F7665466F7243727970746F203132206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31336F663235A3646E616D65764C6F7665466F7243727970746F203133206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31346F663235A3646E616D65764C6F7665466F7243727970746F203134206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31356F663235A3646E616D65764C6F7665466F7243727970746F203135206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31366F663235A3646E616D65764C6F7665466F7243727970746F203136206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31376F663235A3646E616D65764C6F7665466F7243727970746F203137206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31386F663235A3646E616D65764C6F7665466F7243727970746F203138206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31396F663235A3646E616D65764C6F7665466F7243727970746F203139206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F32306F663235A3646E616D65764C6F7665466F7243727970746F203230206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F32316F663235A3646E616D65764C6F7665466F7243727970746F203231206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F32326F663235A3646E616D65764C6F7665466F7243727970746F203232206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F32336F663235A3646E616D65764C6F7665466F7243727970746F203233206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F32346F663235A3646E616D65764C6F7665466F7243727970746F203234206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F316F663235A3646E616D65764C6F7665466F7243727970746F203235206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A7175353638665677346A706F6C6963794C696E6B7835697066733A2F2F516D61774A655957577176675439515876754D476858394E76683552745933316E4C674A7646445A57314C74517780
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.Benchmark/data/babbage_block.cbor b/src/Chrysalis.Cbor.Benchmark/data/babbage_block.cbor
new file mode 100644
index 00000000..240680dc
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/data/babbage_block.cbor
@@ -0,0 +1 @@
+85828A1A00A0FAA91A07AF97F758208FD832B38F12F6E1572E9BE0D63465B66D3A9413E39F550DF43476B46C609BB558207194702C765EF7F9E333DAD00C7CA3C2065EAFF5288B177A726B65CFE79379D458201B60A27DF5CE4FC9BB19AF1643815652154CDFBF609D717D9693C07E795071A782584077D15CC438BD3CE4E3E2B17F1B20D85952F069A3EC3BA294FABE9418B296F028DB590F3DAF42A6400A7CAAB0D1A2E25278737326C47C068FA451ADB828044AA85850FBD7FAAA1B9D85F47CA75277FC1D6E987825562026137CDE28A7B5DC21D7FA4D828030F911B1A06C6D759A7747AC3DF362B5DB156B373AC7A9C380BC63F9C9072355484D935BA871C50FA8898432280519380B5820A6651F0265DC9DC19819C20DC2719D6C172037AC798D43312D594DA50442998C845820B095CCD982629951A205A35A81543B3C6F0EFFA999E376D02C1443D510A6F7F70F1903DE5840E4DCAACA8A990945BC5D8F9AD076638ECB5D39D1BA084EA5B27B93B14CE658BEDCB6D5FD1ED133A16769C19B77941890D0ECCAAE4E74F2502FA4E102590CDE038208005901C053409B7ECC3FE5C73FB288DD219CD00EA1ECAB1FE6A0AB877110AB3D2D887C3000F8A10EB2DFBC8BE936D860628C5688D322EDDBB060F70C3A3FA07E568B9A08D133872360CE3A176C4013B9236A90444561F705BB126DD3621B32D9A0EFB86BCF86C02BE0187A039A2AB426D47ADB5128891DD8629639DFA6282AFF8A25206D8F3225D5BC3EFD255897E0FF5728F24556B88F7967EC543376C61D4A186BBC63411A80D8F76680F048886110EED82EA1EF1AA52DDDA81B2DAE2CC9D0EDB59739DE87A4AADA86C41A80FE46DE204E65A9491057690768FFF9A2187356F003FB4A5CA9D816B6836967A9F1C24ABEEF7026CF60FEB48CCE2A5779B4442CF07053D285331D4A67BE56F2F4BB3F87A7D3DEB31DEC91849BE166261108B1B7CDEA0DCA2FFD41026D5B4AC3F246CC3213461A0B9F5C47DA887956CAC51CBA000820A944DB011B3C5A4B6A59A6C332F07C614FA1CC66DFDAC6744268065E4F0E936C6830E50CF83DC7824A2E9DC6E754A138FFBDF7626E485136A43712175462840664E7D5EDAB3606AC58A127B4745785C9B972212350AC0FDF08C4E1E81864D6131D64E9175B979222CD46D7FCBD300DA1774E00526E38AA67333FC835ACAD5242ADCC87A400818258208B1981199658095573859313ACE20F2C933D5AF1E81650733E36DF6E06E9101501018282581D6124D274BFD913B241A8CCA20C6977775718FDDB8F3763F1D365C854451A001E848082583901AE07890AF80E4658691A834F880B3F8142D35F08B7E0A574A787521FFA40984DFE75EA6085AE8D27F52934AF3D0A42A391C514E78A6CDD561A01053236021A00028CAD031A0CC63DF2AB008382582062FF26A140262D3EE197CD93FF234D49F88EAB3483E3BDCC5B69A582F8BB1952008258207942043B920908BAD5626DCFADA4A00D812B3789E3C1925D70355B6B16F52DFA0082582099908C1030BD4F72C4135BB86E6296CDAE04C906F091976E320C2F25A5200E2602018383583911E1317B152FAAC13426E6A83E06FF88A4D62CCE3C1634AB0A5EC1330952563C5410BFF6A0D43CCEBB7C37E1F69F5EB260552521ADFF33B9C2821B0000002ED1BAB9B3A4581C0BE55D262B29F564998FF81EFE21BDC0022621C12F15AF08D0F2DDB1A1582020B7729520955D7A53FF8A39082B8011159D6628113EF47C13149179869FE16D01581C13AA2ACCF2E1561723AA26871E071FDF32C867CFF7E7D50AD470D62FA1474D494E5357415001581CCE5B9E0F8A88255B65F2E4D065C6E716E9FA9A8A86DFB86423DD1AC0A14444494E471B00000D0E2C75F5FC581CE4214B7CCE62AC6FBBA385D164DF48E157EAE5863521B4B67CA71D86A1582020B7729520955D7A53FF8A39082B8011159D6628113EF47C13149179869FE16D1A130C6AA25820A7A63A0514F3BA288D15F577D34F3FAA5CA459A1A97D0BA33D270DC93BBF14BD82583901B6A399BB1A6598ADD297EB8724911C41FB720F6D17F6221636B458E3B84DC1F29279A96CD8D21B1F81A63B10D01103A9EB86FFC79D1AB1B21A191F421382583901BCB15EA0CCDE1A3E6BCA4472724E4017E173F94E97A60D3E682A6E9D52563C5410BFF6A0D43CCEBB7C37E1F69F5EB260552521ADFF33B9C2821AF6E2075BA1581C2F2E0404310C106E2A260E8EB5A7E43F00CFF42C667489D30E179816A14D3137323331303430303030303001021A000C04AD031A07AF9BCB0758205160F88B929BF8A6C57C285B889488F9137C0EF3CFD0BCF408A10020E69146D5081A07AF97E30B58207CB052FB69E3AD65E73A6A481850426288F5730FB8D8AE813A94A190A49D5B180D8182582099908C1030BD4F72C4135BB86E6296CDAE04C906F091976E320C2F25A5200E26020E81581CBCB15EA0CCDE1A3E6BCA4472724E4017E173F94E97A60D3E682A6E9D1082583901BCB15EA0CCDE1A3E6BCA4472724E4017E173F94E97A60D3E682A6E9D52563C5410BFF6A0D43CCEBB7C37E1F69F5EB260552521ADFF33B9C2821AF6833C48A1581C2F2E0404310C106E2A260E8EB5A7E43F00CFF42C667489D30E179816A14D3137323331303430303030303001111A004C4B40AB0086825820F3DDC3B1EA46C058A39A764068EF2CB7B72B42510857ABE5357EB7E7BC90B45C01825820C112E5947A7816881C274BB4824BA657EC5D9EC07BB4B4ED8123CC94832D4D43028258201C4FF06115A456C8CAE138B9ED57CB11289DB280DD606702A0708E87CE9F55B800825820E63473E75E61545BFC3CF491002C49F9BC0543C7D85C46BE6BC8636F8A9D5E2400825820216394E05B86EF918A6C4D369717182FA5DDF11428AFD5CB16DDA32A3AD1FCCF01825820072BFA83B11291C9F05347FEE5D3499B6362A9D32461DC6745E4859F625B034501018482583901252BF67C93ADE03D9DC874748CE1103EB0B9130968A5248D381C16705C4D87DBFE9794B8DD73D8F76CB5C683BE1DF38D632133CB61AB014C1A001E848083581D714DD522FB07D1F895EE63270B040E8B6434AA848A9C48EE16A7903AAD1A281959B058208407BD463FDB8AB3C15C3D51A0B80BF2A983357176C26FF8956F48FCA750139682583901252BF67C93ADE03D9DC874748CE1103EB0B9130968A5248D381C16705C4D87DBFE9794B8DD73D8F76CB5C683BE1DF38D632133CB61AB014C821A003C0B36A4581C279C909F348E533DA5808898F87F9A14BB2C3DFBBACCCD631D927A3FA144534E454B1A006ACFC0581C41223B3ECF502363DC465DCE5AD6671B83AC790E229D3F49E68C3353AE58201DCC6D7C286A2DE84347E820F0C7470EE782590A48716C0D374AF11BF84F91490158202B222B541F34CCC28E4E6E9A9CE1C4628481FE6FE51BC34A1E45E8DE48FDE30D0158202B5A0BB58596616D24DB29C56DE9FBDB2E142C260B8FDEA43F5AE2B5D05684510158202C568BDAA195DF9DF23A9DFB24FDB8F85CBF1BDD532D1B5E0766B9847A6FA2B10158203DABB0E2FD6E598AAC8A60710123C878764D266D335CB6A80219F47772D843D50158204181EF72768DE5384584403C5032FE0134F2C6379AB1B2CFB7DA964C70ABA99501582075DB7CB03250704474C0C723E11EAD164DF7B098BEE79ECBAC4006B3E5C02F990158209356CD737265040D36A951364BE3EF9C18A06B42B5F7F0187D3C165C36E86B690158209C5AF94E7172C88868A08139FF19D47C44C011F7A0820F338241D0FB3D057009015820A99E358C89AC6C4AF9A25DD0538480CD8B498A9CC14BB2C1FE213697DB9EEAF7015820B6CF6DC35253F74A7E28B9EEDB01FAFEA96E28EBE20EE1A75B260CD8366B3FF1015820E56F42B603C7D09944F0362409F5A25D572B8781C55F0385D1260BF95F339246015820EC603D34DC271F802B3B83C5544EE2A86DB0EA922FDF092A6E8226A5FF80058B015820EC793C9A4C1B8981EED97136E7618B231C544195ECF30D1EF78A5E22AE902F3501581C4523C5E21D409B81C95B45B0AEA275B8EA1406E6CAFEA5583B9F8A5FA44B000DE14042756431343334014B000DE14042756431383833014B000DE14042756432353034014B000DE1404275643237303001581CC881C20E49DBACA3FF6CEF365969354150983230C39520B917F5CF7CA1444E696B651A0001D4C082583901252BF67C93ADE03D9DC874748CE1103EB0B9130968A5248D381C16705C4D87DBFE9794B8DD73D8F76CB5C683BE1DF38D632133CB61AB014C1A07076A6B021A00094B8B031A07AF9BB5081A07AF976909A1581C41223B3ECF502363DC465DCE5AD6671B83AC790E229D3F49E68C3353A1582083835D62DE24C15056AB445A01E093F621ECD85675EFC2BE4E8257C98B59B9B3200B58204F2988C9AE22ADC58096AB9402ADD7C61BB98C8CC6F1915967C070FD22C0C5F70D81825820E63473E75E61545BFC3CF491002C49F9BC0543C7D85C46BE6BC8636F8A9D5E24001082583901252BF67C93ADE03D9DC874748CE1103EB0B9130968A5248D381C16705C4D87DBFE9794B8DD73D8F76CB5C683BE1DF38D632133CB61AB014C1A12A262B7111A000DF15112828258202E8E08B814BE2341084CC874194BC57E0D35E210954F5E57D2A1D41CB6025C84018258205A4BB987DAF15D6C09134E515D568DDE9FDE0074FFD2FA6BABC8C820DF04A49B01A40081825820DDCAB0065D35CEDF0F7B021B35732116DC79565348B718E5B29C10761F087463010182825839011B405CB6901055942AFC1F8C1EAAFCA00AFA8BD0081DE6E58B4435FD78060531E90533ABF6B0F443BEF89C71206D3FB49BFF0F1CEA076D911A05D75C80825839012E84C78697E056402A15B96833B523B07C493761D2DAE15449C8C99DA2EECF283E18BE26C0704304EF31D63A8EC1B6ECE4F3174B07A22CC21A0024422B021A000290A1031A07AFB404A400878258203149ED17E1577C562DE7EC7224AABE107A78F8A184FC796CDEA8EAC90B526497018258204FAAD68789B140095D8B09DF63D4BEC7B22D2F07CC90BBE4F724B9ED26AF72FB00825820A2AA21BF9C81A61E89BBA8A6F9C0BBF46CA812730912E3F336E0BAD60588BF4D00825820BED656C0E1B30EFB9FB8726C0416BFDE72EAEC2BEEB951199EF2AF96706637E701825820C35D2C9A1FD03429B88A43C773AABFCDC18B2E39CF50EDEF0C1F4AEF53ACB1B603825820CD6CD0844747901801A96275BB7DEEB4654916C514D440248A21DDD2F946F1FB00825820E0CAA29C1EDF4968000B42F35B71A9049369C0A0C38EE89E10099BC40465BEE101018282583901AE4A2F776C488D54616ED50D8BBE4F49A036A7E775AA89535C7BF984293C0F5098A0561F60A629E309F2B38E835EF4EF949EC3E427FDD2961B00000003F5476A0082583901AEDE1E35FF87D21A8297DBF3CED2C975E0556960348D8C5106B52A7E6948A5BEC1CBE3467F5A068DAADFF4F92DE03BD7CA263A370D04ED9A1A20B90FA5021A0002C8A9031A0CC63DF0A50083825820C298DC1865EB0436DC9C18AF92438A8DD5FE8FC220162A49AC2589719B81900000825820B9D8C11A597EBD824FDC5FCF7DBF49A98AE194108B38CB481D08992BDF7E4F29058258203934E5C09462754C0E81C944CDACC67995F8F1892FD6297869E1E94E57D68651010183825839019E415AB35AC812BB7EDFA7223BB1D6E89AC8C45CC010D0E8ECF5807396C7C0721CFA557649A36DCBF7F8AED5B434561235593C7FF1B86FB81A004C4B40825839019E415AB35AC812BB7EDFA7223BB1D6E89AC8C45CC010D0E8ECF5807396C7C0721CFA557649A36DCBF7F8AED5B434561235593C7FF1B86FB8821A00328200AB581C8DA763CE1D6ADB725A295A7F145C32808295B542DE5062D92EFA8370A24E000DE14046726967696433363531014E000DE1404672696769643435363101581CCE4D6F507A71B917DB0377D8F7309FE60DAD3C5397C730EA7F894BBBA24A54616E616B6830313035014A54616E616B683036353401581CD1F6CF1B73A74A154367269E759902739177D24B93286856EFE2B932A15045726D6F204F4720504153532023303701581CD5AB720E866E796D0212C61D36D5664819AB56437F2DF919FCAE5530A151436F6E737469747574696F6E555330323301581CD6EA64DD658ADC56FCB553AF88DB495A423D4573DDB3BD4803DF6AB5A14B323939393630313130353401581CD89775133F108329854694A2BDCB352D26C1D930739257D6CEB89BC3A1457247454E5301581CE1A212122B07460A739AF69751BD01CD03174791F778B2365CC0B8F6A14445524D4F19EEB3581CE304E709916948816B793C857C92EC765095E82653539B7928051ED5A14F53756E416C736F526973657336343801581CEFFF17A2E610E5C9F46E33FE964C39602399F95AA367B37F039C1EFCA15343617264616E6F466F725468654D617373657301581CF0FF48BBB7BBE9D59A40F1CE90E9E9D0FF5002EC48F232B49CA0FB9AA151000DE1406D61646D757369636D616B657201581CFA1A9FE50BA15C82F9FC18C8FDB25C745769061991C0C6C100CAD960A1545468655477656C7665436861707465727334333201825839019E415AB35AC812BB7EDFA7223BB1D6E89AC8C45CC010D0E8ECF5807396C7C0721CFA557649A36DCBF7F8AED5B434561235593C7FF1B86FB81A04276A59021A00031E41031A07AFB41105A1581DE196C7C0721CFA557649A36DCBF7F8AED5B434561235593C7FF1B86FB81A0013B0DDAB008382582011785188711F5B4BB104056865F724D542AFA256C4FB057A444331A273F1EBD602825820769ED9AC76C358169618F5EAABC6B0E37373866665BD4EA17607F4EC0612FEA600825820BEF529C7CF4FB5C33173E75795AA34C4D9EFA4931DD7D6B07E8A8900E0063FF5010183A300581D711869C28A5C1023A10C1DEB30D112226CF45130B800A22D9C2AFC1C9C01821A001E8480A1581C08C56C0FA73748A23C3BC1D9E6A60A4187416FC4FF8FE3475506990EA1484E6F64654665656401028201D818583CD87A9FD8799F581CE33BB9C5E634BC5BE187EABA0D94725EF71505D4A4CA6E0FED0B2E6DD8799FD8799F1A0005B9801B0000019096A7E9B2FFFFFFFF82581D61E33BB9C5E634BC5BE187EABA0D94725EF71505D4A4CA6E0FED0B2E6D1A0089544082581D61E33BB9C5E634BC5BE187EABA0D94725EF71505D4A4CA6E0FED0B2E6D1A006F7AEE021A00044EE3031A07AF985B081A07AF97E30B5820829DDE81A2958DAAEC321BCA75A193ED76D580503F89AC44F8A4F96109DF6F220D81825820769ED9AC76C358169618F5EAABC6B0E37373866665BD4EA17607F4EC0612FEA6020E81581CE33BB9C5E634BC5BE187EABA0D94725EF71505D4A4CA6E0FED0B2E6D1082581D61E33BB9C5E634BC5BE187EABA0D94725EF71505D4A4CA6E0FED0B2E6D1A0049A42D111A00370C3F128182582039435B3F8A6F3FAD8771E07B5B6790A940FECC4C20A7043E945E44FF427E41D30087A100818258206A29EF8CCBEC0A3C966443A3CBF142717338517A0418B40A8CCA20CFAAA5A65E5840A5A4E03B6A9ACEEBBE2A10E11030B19CDB48103D223DA34FB7D3532BA36E30FE4EC6B0498936D6356BFB7B65D27347BD7AAA668F6E11EC0A80E5D3480E56F80DA400818258200303157375F23161027902ABFF500A6268C00A69F45F7BFE5ADBC2F70F15DF9458400CD61DBA11FC23C54FD36E3710EECE5300CF8B573D7D89EB0B59BB74849A1704DBC26CAE0FA14184182CDC0511B94D1E2AE10FD7BF62127127B4A110AF839800038259014F59014C01000032323232323232322223232325333009300E30070021323233533300B3370E9000180480109118011BAE30100031225001232533300D3300E22533301300114A02A66601E66EBCC04800400C5288980118070009BAC3010300C300C300C300C300C300C300C007149858DD48008B18060009BAA300C300B3754601860166EA80184CCCCC0288894CCC04000440084C8C94CCC038CD4CCC038C04CC030008488C008DD718098018912800919B8F0014891CE1317B152FAAC13426E6A83E06FF88A4D62CCE3C1634AB0A5EC133090014A0266008444A00226600A446004602600A601A00626600A008601A006601E0026EA8C03CC038DD5180798071BAA300F300B300E3754601E00244A0026EB0C03000C92616300A001375400660106EA8C024C020DD5000AAB9D5744AE688C8C0088CC0080080048C0088CC00800800555CF2BA15573E6E1D200201591E1B591E1801000032323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232222323232533533355333573460CC0042646424446600200A0086EB4D5D09ABA25002375A6AE85400454CCD5CD1832801099091118010021BAD357426AAE7800C54CCD5CD1832001099190911198018028021BAD357426AE894008C0CCD5D0A80082E1119191A827911111A80391191111AA99A9824806108008B1119191A9A9A80103102D91191919191919191AA99A982A89119982D91299A99820A8071A80103409980200100088008008020B03C9111919191919191919191919191982A299A8050A99AA8100999AB9A3094013303A307908101330820106700B06706E0060063305433355307908101305C05A305953353502B2233500206E2071210011635014222222207A33054353501422208E0122350012322533355333500A2153335004215333500C2130054984C011261533350052130054984C0112603C04F15333500B2130044984C00D261533350042130044984C00D2603B153335003205003A04F153335003215333500B2130044984C00D261533350042130044984C00D2603B04E15333500A2130034984C009261533350032130034984C0092603A153350010700820108201070253335002215333500A21533350042133303A03B00200116161604E15333500921533350032133303903A00200116161604D04E33054330500153306F00B02733054330533306301602548008CC150CC14CCC18C02C0952002330543305333063001010002330543333084012222533500315335002135001222223305D3305C0053306C01402B3305D3305C0043306C01402A3305D3305C00300C3305D3305C0023306C0140193305C001304800D0910122153350041622153350071622153350081622133300C003001323232323232323533307D0050070272222225335330743305100248000CC1440052000161333335003235500B2222223501D222223501B22235051222223232323232323232323253353308B013308B013306E00848000CC1B802920003308B013306D00201E3308B0153353306E00A00315335330870100E07013308B013308A013309A010110703370066E0402800C060CC22804CC2680404411C0084CC22C04CC22804CC268040441C0060CC22C04CC22804CC2680404411C008CC22804CDC08050019984D008088070A99A998370041A802055008A99A99843808078380998458099845009984D0080883819B80337020106A008154020306611402661340202208E00426611602661140266134020220E003066116026611402661340202208E004661140266E04020D40102A804CC2680404403C4CC22C04CC22804CC2680404411C008CC22804CC268040441C0060CC22C04CC20C04048070CC2080404006C4C8C8C8CCCCC2C80400C008CDC019B800180050013370002E002A66A0082605466E0800C00840594CD400C4CCCC0A005406406005C520003370002E00866E0005CD40102A80458C27C04028D40082A404D40042A404D54CD54CCD5CD19B8900148000278044C94CCD5CD19B890014800027C044C94CCD5CD19B8900148000280044C28404CCC2EC0400C0080054CCD5CD19B8900400610041006350020AD0121001160B901350010B0015333573466E2400400C54CCD5CD19B880010031330A8010023370666E080080400444CC2A0040080104CC2A004CDC199B820040110100043370666E080040380414CD4CC1FC01C1A04CDC0998490081100399B80011010133092010220073370666E080040300354CD4CC1F40101984CDC0998480081000219B8000F00E133090010200042235500C2222223501E222223501C222350522222232323232323232323253353308B013306E00748000CC22C04CC1B4008074CC22C04CC22C04CC22804CC2680404011C008CC22804CC268040401C005CCC22C04CC20C0404406CCC2080403C0684C8C8C8C8CCCCC2CC0400C008CDC019B800180060013370002E002A66A00A2605666E0800C00840594CD40104CCCC0A405406406005C52000350020B301350010B60153353330690870100E01E1330AE013370002C00E02A26615C0202C66E0005401C58C27C04024CDC199B820010123370200400266604400600266E0CCDC0981219B803370400400466E08CDC119B82337049004241941E90680780200198600080199B824801120CA0F350050A70130BE01001350030A60153353308001001069133702661260204600266E000440404CC24C0408C004D400428804D54CD4CCC1801F80140544CCC2D0040140340304CCC2D004010030034888D400C88CCC2E40401401000C88D54030888888D407888888D4070888D414888888C8C8C8C94CD4CC21804CC1A4009200033086013306800101833086015335330820101906B13308501330950100B0193370000202426610C026610A026612A020160320026610A026612A020160D60246610C02660FC01802C660FA01402A2A66A6660C8104020120322666661540266E00044008CDC08080008078070068999998550099B810110013370002000401E01C01A2C66603E6A00614C026A00614A02002A66A66100020020D2266E04CC24C0408C004CDC0008808099849808118009A800851009AA99A99983003F00280A899985A00802806806099985A008020060069111A8019119985C80802802001911AA8061111111A80F111111A80E1111A82911111191919191919299A998440099835802240006611002660D80020086611002A66A66108020360DA266110026610E026612E0201A03666E00068050CC21C04CC25C04034014CDC08020008A99A99842008028368998440099843809984B8080680D80D19843809984B8080680299B8033702008002028266110026610E026612E0201A03603466110026610E026612E0201A00A66E04010004CC21C04CC25C040341B4050CC22004CC20004038060CC1FC03005C54CD4CCC1982100402C06C4CCCCC2B004CDC000980099B8101201A01101000F1333330AC013370202603466E0004800404404003C594CD54CCD5CD19B880190011309F013370066E0CCDC119B82002019483403CCDC119B81001019483283D200209E012100116350040A601350030A60153353308001001069133702661260204600266E000440404CC24C0408C004D400428804D54CD4CCC1801F80140544CCC2D0040140340304CCC2D004010030034888D400C88CCC2E40401401000C88D54030888888D407888888D4070888D414888888C8C8C8C94CD4CC21804CC1A4011200033086013308601330680030193306800201833086015335330820100906B133086013308501330950100B009337000060246610A026612A020160100042A66A66104020100D626610C026610A026612A0201601066E00008048CC21404CC2540402C02400C4CC21804CC21404CC2540402C02400CCC21804CC21404CC2540402C020008CC21404CC2540402C1AC048CC21804CC1F8030058CC1F40280544C8C8C8CCCCC2B40400800CCDC019B8101200700133700022002A66A0082604A66E0800800C40414CD400C4CCCC08C03C04C048044520003370202400866E0404000858C26804010CDC199B8200200E00D3370666E08004038030CC244040840F8888C8CDC199B820010033370066E0801120D00F0013370400290650791112999AB9A3371200890000A4000264A666AE68CDC48008028A4000264A666AE68CDC4800A400029000080099B833370400466E04004014CDC019B8200148028014C014CDC10018011192999AB9A33710004900004D808A999AB9A30A10100214800054CCD5CD1851008010A40042A666AE68C28C04008520021330010023370066E0C009200448008C254048894CCD5CD19B880010021330030013370666E00CDC1802000800A4008200426660F2002006046464A666AE68C27C04D55CE80089919191919191919191919191919091999998008050048040028018011BAD357426AE88008DD69ABA100135744010A666AE68C2B4040084C8C8488888CC01001C018DD69ABA135744A0046660F8EB9D71ABA15001153335734615802004264642444446600200E00C6EB4D5D09ABA25002375A6AE85400454CCD5CD18558080109909111118028031BAD357426AAE7801854CCD5CD18550080109919091111198010038031BAD357426AE894008CCC1F1D73AE35742A0022A666AE68C2A4040084C8C8488888CC00C01C018DD69ABA135744A0046660F8EB9D71ABA150010A101135573C00A6AAE74010CC1E1D71ABA100530743574200A60E66AE84014DD51ABA1001357440026AE88004D5D10009AAB9E0010970137540026A002104026A00810C0260C82446660D444A66A660B066606C0D46A004104026A03C1040266606C0A06A6A0040FC0EE05E266008004002200200202A60C82446660D444A66A660B066606C0A06A0040EE6A0200EE66606C0A06A0040EE05E2660080040022002002026666660F0660C602C044660C602C04203E660C602C02003C660A8660A0044607A008660A8660A0042607C008660A8024660A8A66A60C82446660D444A66A660A66AA03A104026A6A0040EE1040226600800400220020020260D6442A66A0020FE440DEA66A6660640A600490000998299981D183C840809984100833800A40042660A66607460F21020266104020CE0029000183800999B8100101D303D001333066059008010305333307F22322325333573466E1C010DC680488010A999AB9A308F0100415333573466E1D205A500313370290001980299B800044800800800400454CCD5CD19B885002481805854CCD5CD19B8950023370090302402426600866E0000D20023370066E08005201433702A00490300B099B8E0060014800120001533500400115335501A13335734611A026606860E60F6660F80C200A0C20D00022A66A0062A66AA0320022666AE68C23804CC0CCC1C81E8CC1EC18001018019C0044CCD5CD18460099819183883C9983D02F80182F833299A9983D91299A8008321109A80111299A9982B00101089834800898030019A9A99A983B03C00501083883610A99A8008B1109A80111299A8018A99A99827800A400420042C112022C666AE68CDC49982C800803240000C80BA6A0020D4A66A60B02446660BC44A66A66088A0226A0040D6266008004002200200200E2C0F8660CE02C6A00A0D460C2006A66A60A42446660B044A66A660826AA0160E06A6A6A0040D80CA0E026600800400220020020060B2442A66A0020DA440BA60BA0026A0280D4660B40020246A6A0080C80BE26A6A0020C20B4A66A609601C420022C2A66A660600040320BA266060002032603200E6068010464646A09C4444464646464646464660706606A00C0066607066068660A600C018660A6006018660706606E6608E6A6A66A60C60CA00401E0BC0B2660B601201090011981C1981F998188070009981C1981B9811800A40006607066068604201C60420026607066068604401C60440026606E604801C6048002660706606A60AA00A09666070A66A609024466609C44A66A60A26A6A0040C40B8266008004002200200200809E442A66A0020C6440A6A66A609024466609C44A66A60A26A0040B8266008004002200200260B000E09E442A66A0020C6440A666609A08000600860A40066A0020ACA66A608824466609444A66A660666A6A6A00E0BC0AE0C46A6A0040AE0C4266008004002200200260A80062C0D06A0100BA6A6A0020B00A6A66A608400C420022C603000C606600E4464646A09E44444A66A6A00E440A8426464646464646464646464646607E660700286660AA09000800C6607E66076014660B40060246607E6607E6607C6609C6A0040C00120106607E6606E6A0040BC6A01A0D26606C6A0040BE6A01A0CA6607E6607866AA60CE0D846A00244660CA00466AA60D40DE46A00244660D0004666A0026E012000700466E0000520000013304000B3500922330723306400233072330640010090540540033303F3303E3304E3535335306A06C0010160650603306200F00E48008CC0FCCC0F0C1700181494CD4C13C488CCC154894CD4C160D4D40081A418C4CC010008004400400400C1588854CD40041A888168C168014CD4C1A01A800C04CD40041754CD4C12C488CCC144894CD4CC0DCD4D4030194178D40081784CC010008004400400400C581BCC160004D403418CCCD4080178D4D4080188178004CC11800C004CC164020D4004170CC140004020D4D40041681554CD4C11001C8400458124C06401CC0D0020448004584D55CF0011AAB9D0013754004444A66A6600600400207809C46A0020B0246666666600204044A666AE68CDC38010008020A999AB9A3371200400203203044666AE68CDC400100081B01E802802001912999AB9A337120040022002200444A666AE68CDC4801000880108008881F11199AB9A3371000400207406644666AE68CDC480100081C81911199AB9A337120040020620706607C91100488100223333550023303F2233350050480010023500304222337000029001000A4000660784446006600400240026607666076E01200070246A0024444400A46A0020A246A0024407246A0024406C464A666AE68C140D55CE8008991919191981E2999AB9A305435573A00626464646464646464646464646464646464646464646424666666666600201A01801601401201000E00A00600460446AE84D5D10011980F1981DBAE2001357420026AE88008CC071D71ABA100135744016A666AE68C190D55CE804899191919827A999AB9A306735573A004264660A066038EB4D5D0800980D9ABA1357440026AAE7800817D4CCD5CD18339AAB9D001132330503301C75A6AE84004C06CD5D09ABA200135573C0020BE6EA8D5D09ABA200237546AE84004D55CF00482E1980C9981B019BAD35742014660300326AE84028CCC059D70029ABA100A33301575C0086AE84028CC054008D5D08051980A1192999AB9A306035573A0022646609260326AE84004C010D5D09ABA200135573C0020B06EA8004D5D08051192999AB9A305F35573A002264646660B060606AE84008CCC059D70029ABA10013303375C6AE84D5D10009ABA200135573C0020AE6EA8004CC045D73AD37546AE84004D5D10009ABA2001357440026AE88004D5D10009ABA200135573C006098A666AE68C15C0044C848888C010014C02CD5D09AAB9E00215333573460AC00226424444600400A60486AE84D55CF0010A999AB9A3055001132122223001005300C357426AAE7800854CCD5CD182A0008990911118018029BAE357426AAE78008130D55CE8009BAA357426AE88008DD51ABA100135573C0020906EA80048C94CCD5CD182800081E8A999AB9A304F00102B04735573A6EA800488C8C94CCD5CD18290008058A999AB9A3051001130193004357426AAE7800854CCD5CD18280008050241AAB9D00137540024464460046EAC004C10888CCCD55CF8009014119198239981C98031AAB9D001300535573C00260086AE8800CD5D0801020919118011BAC00130402233335573E002404C46608860086AE84008C00CD5D100101F91919192999AB9A305300211222203515333573460A4004220922A666AE68C1440084C8C848888888CC004024020DD69ABA135744A0046EB8D5D0A8008A999AB9A3050002132321222222233002009008375C6AE84D5D128011BAE35742A0022A666AE68C13C0084C8C848888888CC018024020DD71ABA135744A004603A6AE85400454CCD5CD1827001099091111111803804180E9ABA135573C0062A666AE68C1340084C848888888C014020C074D5D09AAB9E003045135573C0046AAE74004DD50009192999AB9A304A35573A0022646606660086AE84004DD69ABA1357440026AAE78004108DD50009192999AB9A304935573A00226EB8D5D09AAB9E0010413754002220582205444A66A00442A66A00442660240040020462A66A0024046068446A004446A006446666010008006004002446A004444446A00C44444A66A6601E01400A2A66A6601E0120082A666AE68CDC38040018A999AB9A3370E00E0042A66A00C42A66A004426A004446A004446A00A446A00444A66A666602E00C00A0040022A66A00E42A66A008426604800400206A2A66A006406A08C0680562A66A002405607805405405405444446466A00A466A0084A666AE68CDC78010008018121013919A802101392999AB9A3371E0040020060482A66A00642A66A0044266A004466A00446601200400244405444466A0084054444A666AE68CDC38030018A999AB9A3370E00A0042660220080020520520442A66A00240440664466A004466A00446601C0040024046466A004404646601C004002446A004446A00644A666AE68CDC780200109980780180081091199AA9815019180680191A80091199AA981681A980800311A80091199A800919805A40000020144660160029000000998030010009981280100A91199AB9A3370E00400202C03A44A66A00420020324466AA605205C46A002446604E004666A002466AA605A06446A0024466056004601800200244666010016004002466AA605A06446A0024466056004601600200266600600C004002444666AA605005C06466AA605205C46A002446604E0046010002666AA605005C446A00444A66A666AA6054064601A01646A002446601400400A00C200626606C00800602800266AA605205C46A002446604E0046606844A66A002260120064426A00444A66A6601800401022444660040140082600C00600800442444600200842444600600844666AE68CDC780100080800B9980E80080A11299A801012080091980E11199A8018128010009A80080F9192999AB9A303435573A00226464646466666042666016EB9D71ABA100433300B75CEB8D5D08019BAD357420046EB4D5D0800998051192999AB9A303A35573A0022646604660146AE84004CC035D71ABA1357440026AAE780040C8DD50009ABA1357440026AE88004D5D10009ABA200135573C0020586EA80048C94CCD5CD18199AAB9D0011323301C3005357420026600C0086AE84D5D10009AAB9E00102B375400246464A666AE68C0D00044C8C8C8C8C8488CCC00401801000CDD69ABA1357440046EB4D5D08009ABA2002375A6AE84004D55CF0010A999AB9A3033001130103004357426AAE780080ACD55CE8009BAA0012323253335734606600226424460020066EB8D5D09AAB9E00215333573460640022601E6EB8D5D09AAB9E00202A35573A0026EA800488C8C94CCD5CD18190008980798021ABA135573C0042A666AE68C0CC0040380A8D55CE8009BAA001222325333573460626AAE740044C8CC068C014D5D080098021ABA1357440026AAE780040A4DD5000911A8009119198131119A800A4000446A00444A666AE68CDC7801004898038008980300180298129119A800A4000446A00444A666AE68CDC7801003880089803001919A80081100211A800911A80111111111111999A805900B900B900B9199AA981101500B11A80091299A998090010020980C00180B805912999AB9A3371E6A0040346A0020342666AE68CDC39A80100B1A80080B001805003880B91180F11299A80088019109980300118020009299A800900B0019111A801111299A800909A8029111111111299AA99A999AA981001400A11A800912999AB9A3371E00401C2602C00602A0044260286A0020440244260240022C2C2006424460040066601444A66A0044200620020022018446602E44A66A00203C4426A00444A666AE68CDC78010038A99A8008111109A80111299A8018A999AB9A302D00113301400B0020262202813006003002235001222222222200A2350012201C23500122222222220092220032220012220023333300248811C0BE55D262B29F564998FF81EFE21BDC0022621C12F15AF08D0F2DDB10048811CE4214B7CCE62AC6FBBA385D164DF48E157EAE5863521B4B67CA71D8600330014891C13AA2ACCF2E1561723AA26871E071FDF32C867CFF7E7D50AD470D62F004881074D494E535741500048811C2F2E0404310C106E2A260E8EB5A7E43F00CFF42C667489D30E179816004881054F574E455200221233001003002222221233333001006005004003002300B22112225335001135003006221333500500C300400233355300700F0050040012200130092211222533500110022213300500233355300700D005004001300822112253350010052213300F30040023355300600B00400111001220023005221225333573466E20005200013005490103505436001533500213005491035054370022153335734602C0062004266A600C01000266E0400D2002253357380022C240026004444A66A00220044426A004446600E66601000400C00200660024444A66A00220044426A00444A666AE68C0500044CCC02001C01800C4CCC02001CCC028CCC02C01C00800401800C8C8C00400488CC00CC00800800488488CC00401000C88848CCC00401000C00854CD5CE2490350543100162215335001100200715335738921001622222222007220053704904D0F910B111110021B8748000DC3A40046E1D2004370E90031B8748020DC3A40146E1D200C01049FD8799FD8799FD8799F581CB6A399BB1A6598ADD297EB8724911C41FB720F6D17F6221636B458E3FFD8799FD8799FD8799F581CB84DC1F29279A96CD8D21B1F81A63B10D01103A9EB86FFC79D1AB1B2FFFFFFFFD8799FD8799F581CB6A399BB1A6598ADD297EB8724911C41FB720F6D17F6221636B458E3FFD8799FD8799FD8799F581CB84DC1F29279A96CD8D21B1F81A63B10D01103A9EB86FFC79D1AB1B2FFFFFFFFD87A80D8799FD8799F4040FF1A18E0E563FF1A001E84801A001E8480FFD8799FD8799F4040FFD8799F581CCE5B9E0F8A88255B65F2E4D065C6E716E9FA9A8A86DFB86423DD1AC04444494E47FF1B0000016902C758161B0000018B9265F3F5D8799FD8799FD8799FD8799F581CAAFB1196434CB837FD6F21323CA37B302DFF6387E8A84B3FA28FAF56FFD8799FD8799FD8799F581C52563C5410BFF6A0D43CCEBB7C37E1F69F5EB260552521ADFF33B9C2FFFFFFFFD87A80FFFFFFFF0582840001D879808219A44D1A00E33567840000D8799FD8799FD8799F581CBCB15EA0CCDE1A3E6BCA4472724E4017E173F94E97A60D3E682A6E9DFFD8799FD8799FD8799F581C52563C5410BFF6A0D43CCEBB7C37E1F69F5EB260552521ADFF33B9C2FFFFFFFF02FF821A00280F711A2EE1ABA7A30081825820F91F45CD2DC870AE7F65186C74C6A183A540898E61D51A3126A6F00BB950B27958402BBF458FCC9ADBBDB5990BA91606CEFABAEE1439BDCB498D1FCC2C9E936A6361A126BE17E9D2955276F5FF66D855C1AFB3FE7B8B1BE0B4CAA9D60ABE3F4D8E08049F80D8799F582083835D62DE24C15056AB445A01E093F621ECD85675EFC2BE4E8257C98B59B9B3D8799F4040FF1A26BE3680D8799F4040FF1A015B23309FD8799FD8799F581C4523C5E21D409B81C95B45B0AEA275B8EA1406E6CAFEA5583B9F8A5F4B000DE14042756431383833FF01FFFF1A48190800582083835D62DE24C15056AB445A01E093F621ECD85675EFC2BE4E8257C98B59B9B31B0000019051AF7A480100FFD8799F582083835D62DE24C15056AB445A01E093F621ECD85675EFC2BE4E8257C98B59B9B3D87A80FFFF058284000501821A00279C441A2F128CEB840100D8799FD8799F5820BAF4F9A24D72868698BDD2FCCCF1C00E3990252F239AFAA031FEA146B8E7942EFF01FF821A001F69F81A260DE8FAA1008182582006E05CFF0C72A3EF4E2853C351BD122FE7E5049A37737983394F012EAB37C8515840725086D5F44100A22705E0BC545C4B24F77266DC6C8154EB1B7FAE989C87566E7CDAECDB4AFB5EDDE2050AFFBA426E27457F2CDF1EC26C31B0AFD2AC61C6680BA1008282582004F3E99F60B98399C5420DBEC2BEECFE5F7E2DB477962BBDB1EAB4FB5C87BE3258402678886A86150F1314C65211E57639FB4B37E45A38E15CB894F27D3EA3B9AE23E32AF0FD551F89C6C13ED156A8CCAFDE94E7568BCE26CCFE7A0A8B40B2D243028258206BB92A20014AF583D1ECB932D8C6FC284274CB5DF043EC36546F0FC8B10C27DE58408A5CCCD412A974E67341364E431BB349C1138A8AE61BF7689E949D7A555A1E14B5CFBC006B66497C4B230F247E433D2F453115011081359258925218972AA50DA10082825820B2C6CA24ECEEAA1D8E3F4E7B7D08582EB988CFCA33ACE149D97D13292D79CEDF58401758913ADDC471E9E53570E72B5778B6E9C7D3D47A4EBB1E64B8959BC70847DA6E1A5B86061C772135C3C7B6BED6B10F4A6A192F59B7653A45FAA64F9B6463048258203A2680B177DBB362922FA79A4C944D79221AC55CA6C3A0C11B60AEC9898BBC1E5840920288EFF6A54E2FB20C25B4F040024926FF0708713E68ED7779582927A1CA4D9EB05D133CE92AADA7F4AD3BD5E704A85AC2F68809569762F25D09937AE42F01A2008182582045E7EE2749DD98AC23244FF99D31DF8C64CBBC17D246B02DE9612268740B7D3558402271B7EB17EBBCB5119D0E41A953FC1344AC69C7B690599404DEDED7193852C175A6C8D7912E8DCA3E3AA87512308C3CA430CE9B5488047282A8BD3105372B090581840001D87980821A0012C8941A15F9CDB0A101A11902A2A1636D736781774D696E737761703A204F7264657220457865637574656480
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.Benchmark/data/conway_block.cbor b/src/Chrysalis.Cbor.Benchmark/data/conway_block.cbor
new file mode 100644
index 00000000..a41f250d
--- /dev/null
+++ b/src/Chrysalis.Cbor.Benchmark/data/conway_block.cbor
@@ -0,0 +1 @@
+85828a1a00aab3351a087627515820e13008ed2878e76bec0a7d8b9cce09bf0954b1de7df25e529a9fbb727d00a8fe5820884bda542e411996a77aa9eae42bb7135bf318f21223272e0ba8f6531c8fc6f758207939de8b59dcc48dc96903763bc544cb145c72f57c1ff6aa2d954938e92c2182825840030d6c4da9a6d75239d89d7c4d393505ff6e46c5a8281b8fbfd35a373f3587959794ccd903831a82795cb894f2d104ce397ce0e6538062b01aee71521b8fe6de5850004131777b6bd82b9d65ebf3e586ba7ea193cfc16887724a56aeaddbcce3cffc40217595bfe78cbfb26b8f4521548f8073189e82b3fdeb0a0c1099e7787cb4b166fdc6cdf0ca7041aadab8cfed55530919093358208c420c878f10208c6ea8e219c9ccf10710b8323d00581028a5246bdc6f6eb893845820dbbafa8dd141507d22f03dcbb034f32a52233ab77560476239aac53d1a19be5a1619042d5840ef364b08ab30ca2d6731fb5edb2a86d520315cedddd724b2b7ef4646d1f60ef8ade88f32e79d4beb58cec04dfc214d4743ad2f9b232a2ebfbb0e8915a8a1e70d8209015901c0261b318072ac4bee9670513ea46b31cd45a8b9af8499ad79e9b42fb5a974cefd2338981b6dd8f126541cf2d3a6bb83aff9e062124c8cbe3b6d203ea5401c0b06cc401a42831e535ed2beb69199a11aa883c07a3e4ffe3365b3828cb97abb5be0f48ed8aaa8a0d998dd337d7c893d992e8e475e9db3639afbda80a87acc5f4ba215126835530f42f69481514721a8d91de863ef6dc51c053e4846081ff6984e9833faae8ea0f1fe1896cd687099807c6915c8eeddfef74c313499d7544d61f4d8790a23c4817d53fb5d1ca22e57d4958d6dd0443626ab4446debd98e21f070793f0051c2655eff26ca34a7c5ac7bb6b129af95b73ad3b071d0297fb3b422f3c6d20f35f2131d513811f40a861dc7ba8d2f4bdb2be2113b219a05f326d635709edf49c119cc929a3728c91886e3b781a241893103c8063c98203fc7139dfa119b4b66d2ff8d796f2c53c1ac91fb3bc1ad9f18b2d58c2360820ebf5e3f40514dd10f8d54413ef3c14d2825c6eef2ffebf6771653736e13685969751d3cd31f293944d85c6c025349262e479ef4aa9531d7de3bc57ce599afdc6ec4f452e7fc89f20b076f24ea3aac036c0bc0c163c262839b1d854556570316451b20e05feadb88d84a4008182582033c0049e3b1c8a47c9c0879aa595da1eedcedb99876baa9398138fe7e5cdaf86000182a300583911464eeee89f05aff787d40045af2a40a83fd96c513197d32fbc54ff02160445e0993401c21bfcc5958fe7523c582b4036be914ce854307df5011a0c136e40028201d818590102d8798c4100581c9607a38a73da1c6c104aba3edbad7bf6ae820816407539ecf540eaf7d8798240401a0bebc2001a000927c01a00802dc3d87982581c161e4f460b61d1a78248af3f8a181a6b476e4197d7f9def3453f536a4b5341442054484520434154d879821a1908f02f1b00000002540be4001a0007a120d87982d87981581c8d9913a5d5e98c6aab297d090dd0cb4e850cf238c534b6a9dd907213d87981d87981d87981581c160445e0993401c21bfcc5958fe7523c582b4036be914ce854307df5581c8d9913a5d5e98c6aab297d090dd0cb4e850cf238c534b6a9dd90721381581cedbf33f5d6e083970648e39175c49ec1c093df76b6e6a0f1473e4776825839018d9913a5d5e98c6aab297d090dd0cb4e850cf238c534b6a9dd907213160445e0993401c21bfcc5958fe7523c582b4036be914ce854307df51a0023394c021a0002d09107582010b3cd99c9eb9ddfb67964a72cea96cd80be25fe7c8b161f3c999dc1d3358378a70081825820f8e308859e29fc128d0b70188ff5747aa7abc7dd0d339839d499ec4a03aabda9000181825839015455a2fd7ea563dbcf4dacf267d9d2326b7b7ce2b82140f536a1b8883219ec303b9f9facd2c6f49ad14a4ed5982b6553da4e90e3196a1b881a11ed14b0021a0003d0900b5820a5b75a3d7bf7ebc7e003f09fd99add064f71cc0f45035e3d80ce02c9b02bd9100d818258209349ed1f38b09100a5eaac0f4ad42441af53e70ce06bf57b566395f74a2ec1cb000e81581c5455a2fd7ea563dbcf4dacf267d9d2326b7b7ce2b82140f536a1b88812818258205ec56338104fcbfe32288c649d9633f0d9060abce8b8608b156294f0a81d29e201a800828258208f6646b372d3232eecffb9ef2cfba7b1dff3247b5fdccda22bdc4ecd7bd8042500825820f1b5a90ad9e754577b51dd476de8fbfa0d951e82cdf693346cc30fb7503b159b000183a2005839018d9913a5d5e98c6aab297d090dd0cb4e850cf238c534b6a9dd907213160445e0993401c21bfcc5958fe7523c582b4036be914ce854307df501821a0016e360a1581c161e4f460b61d1a78248af3f8a181a6b476e4197d7f9def3453f536aa14b53414420544845204341541a01005b87a300583931905ab869961b094f1b8197278cfe15b45cbe49fa8f32c6b014f85a2db2f6abf60ccde92eae1a2f4fdf65f2eaf6208d872c6f0e597cc10b0701821a70fb3dd7a2581c161e4f460b61d1a78248af3f8a181a6b476e4197d7f9def3453f536aa14b53414420544845204341541a24c0e7cc581c63f947b8d9535bc4e4ce6919e3dc056547e8d30ada12f29aa5f826b8a15820e216425600a641a314c19a32fff56f751f5bff81740f2232693d607379f3bee401028201d81858e9d87989d87982581c63f947b8d9535bc4e4ce6919e3dc056547e8d30ada12f29aa5f826b85820e216425600a641a314c19a32fff56f751f5bff81740f2232693d607379f3bee4d879824040d87982581c161e4f460b61d1a78248af3f8a181a6b476e4197d7f9def3453f536a4b53414420544845204341541b0000001166b125ce1a001373c2581cedbf33f5d6e083970648e39175c49ec1c093df76b6e6a0f1473e47761b000000028f200558581c8807fbe6e36b1c35ad6f36f0993e2fc67ab6f2db06041cfa3a53c04a581c554daf3e27e50c8c779713be6ba70f95c35f23f0552a28e5a7a340148258390122aea2da15e494e01767145d48bda16b6d437f1c449823a044193daf299a82ef56311aa10adf04c0072d4870eb9f4d5ff315132434841b741a00297bc7021a0005d19905a1581df196f5c1bee23481335ff4aece32fe1dfa1aa40a944a66d2d6edc9a9a5000b58203a98f88216e5025db28f06e90c56b3def9f35e3ac2beef37aef7f09ace7a60c00d8182582006f24741c2cbc3f59096046de95fcd5d90a77e5378d95fd60f2ec261aa5c7981000e81581cedbf33f5d6e083970648e39175c49ec1c093df76b6e6a0f1473e47761283825820b91eda29d145ab6c0bc0d6b7093cb24b131440b7b015033205476f39c690a51f00825820c4a540ac2e06c217dd4fb3f39ca3863da394ba134677dafa9b98830ca71d584d03825820b91eda29d145ab6c0bc0d6b7093cb24b131440b7b015033205476f39c690a51f01a400818258203f43134f45bcadea987e8dccbb569a4526d764787a2adb4045da6543142c8fde01018182583901b610bfca05d92c04eb6a460c2570d6d467813052608c7390daf0017d3afa303ff7969d061294da7def04496d6a87a7c6dde3acbf78a81d131a418b90e9021a00028774031a087627f484a1008182582020c38545a0a4dc453f98da0390d2dd5236bb81a7c11a73415262396cac156eeb5840c5af8bd8a617e7a07a5ae9a1babf6ff10c8ebd63d24866421eb0d597cf680f99492b144b08592ec408c1d2cf87bbe0f095e5b2d1a59839a511791ea4b1d7bd09a200818258201e2fd4178008a65e0d7d67c5fe29886dc825c48dd6be93afa90152106b9a93115840e39d41754c543a562b2664326f12369b3ee7f1088460aae06aa24a0b51b4a8f77d399fdb16f8e25cc5462a3b4fa5cce2c9c263946ff5a93ba56f0f169e76e60d0581840000d87a808219c3501a00989680a2008182582014585da9857b30cf57edccac19d3012b602bb5650c7726a5f1504d9614d205225840811625a2dd2b98db4a8ab7679d6f0e96dc8221ed925699e5e137db3e98099f4512df97e2a593a20c4acbc259e686e6838723cfc8580aae7e8648596d7e4d66060583840000d87a80821a000186a01a01c9c380840001d879830101d87980821a000864701a0d1cef0084030080821a000668a01a09896800a100818258207c344966b70455b888ed29a70cae086e24fab05e53ada41706c91a2f4ba9202f5840e4926495d6fb2d57746ffd9cb183a48f92d2836bb064631407dd5728a3cf222947153eed9ce05e7fc15541e27bc463f97cd726a3d45fb2cd4c9cef614deea409a100a10782582084d7eaaeeaaba1163a821a8b2e65865f8255a7d8d70197bcaa90465ac0559bc658202cd2d799d8afed19fb68ae8aba25178d4cb2ab4efa6536bd60afabb30560560c80
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.Cli/Chrysalis.Cbor.Cli.csproj b/src/Chrysalis.Cbor.Cli/Chrysalis.Cbor.Cli.csproj
new file mode 100644
index 00000000..e54cf9f5
--- /dev/null
+++ b/src/Chrysalis.Cbor.Cli/Chrysalis.Cbor.Cli.csproj
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+ Exe
+ net9.0
+ enable
+ enable
+
+
+
diff --git a/src/Chrysalis.Cbor.Cli/Program.cs b/src/Chrysalis.Cbor.Cli/Program.cs
new file mode 100644
index 00000000..1f1dbd58
--- /dev/null
+++ b/src/Chrysalis.Cbor.Cli/Program.cs
@@ -0,0 +1,55 @@
+using Chrysalis.Cbor.Cardano.Extensions;
+using Chrysalis.Cbor.Cardano.Types.Block;
+using Chrysalis.Cbor.Serialization;
+
+if (Console.IsInputRedirected)
+{
+ Stream inputStream = Console.OpenStandardInput();
+ // Stream outputStream = Console.OpenStandardOutput();
+ byte[] buffer = new byte[1024];
+
+ while (true)
+ {
+ // Read the 4-byte length prefix
+ byte[] lengthBytes = new byte[4];
+ int bytesRead = inputStream.Read(lengthBytes, 0, 4);
+
+ // Check if we’ve reached the end of the stream or have an incomplete length
+ if (bytesRead < 4)
+ {
+ if (bytesRead > 0)
+ {
+ Console.Error.WriteLine("Incomplete length read. Exiting.");
+ }
+ break;
+ }
+
+ // Convert big-endian length to integer
+ int blockSize = BitConverter.ToInt32([.. lengthBytes.Reverse()], 0);
+
+ int totalBlockBytesRead = 0;
+ byte[] blockBuffer = new byte[blockSize];
+
+ // Read the block data in chunks
+ while (totalBlockBytesRead < blockSize)
+ {
+ int bytesToRead = Math.Min(buffer.Length, blockSize - totalBlockBytesRead);
+ bytesRead = inputStream.Read(buffer, 0, bytesToRead);
+
+ if (bytesRead == 0)
+ {
+ Console.Error.WriteLine("Unexpected end of stream while reading block.");
+ return;
+ }
+
+ // Copy the read bytes to the block buffer
+ Buffer.BlockCopy(buffer, 0, blockBuffer, totalBlockBytesRead, bytesRead);
+
+ totalBlockBytesRead += bytesRead;
+ }
+
+ //Console.Out.WriteLine(Convert.ToHexString(blockBuffer));
+ CborSerializer.Deserialize>(blockBuffer);
+ //Console.Out.WriteLine(block.Block.Slot());
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.Cli/rust/n2c-stdout/Cargo.lock b/src/Chrysalis.Cbor.Cli/rust/n2c-stdout/Cargo.lock
new file mode 100644
index 00000000..51498901
--- /dev/null
+++ b/src/Chrysalis.Cbor.Cli/rust/n2c-stdout/Cargo.lock
@@ -0,0 +1,2025 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "addr2line"
+version = "0.24.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler2"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.97"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
+
+[[package]]
+name = "async-trait"
+version = "0.1.87"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+
+[[package]]
+name = "backtrace"
+version = "0.3.74"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
+dependencies = [
+ "addr2line",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+ "windows-targets",
+]
+
+[[package]]
+name = "base58"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581"
+
+[[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "bech32"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445"
+
+[[package]]
+name = "bip39"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387"
+dependencies = [
+ "bitcoin_hashes",
+ "rand_core 0.6.4",
+ "serde",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "bitcoin-internals"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb"
+
+[[package]]
+name = "bitcoin_hashes"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b"
+dependencies = [
+ "bitcoin-internals",
+ "hex-conservative",
+]
+
+[[package]]
+name = "bitflags"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
+
+[[package]]
+name = "cc"
+version = "1.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c"
+dependencies = [
+ "shlex",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "serde",
+ "wasm-bindgen",
+ "windows-link",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc"
+version = "3.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636"
+dependencies = [
+ "crc-catalog",
+]
+
+[[package]]
+name = "crc-catalog"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
+
+[[package]]
+name = "crunchy"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "cryptoxide"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "382ce8820a5bb815055d3553a610e8cb542b2d767bbacea99038afda96cd760d"
+
+[[package]]
+name = "darling"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+ "serde",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "ed25519-bip32"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb588f93c0d91b2f668849fd6d030cddb0b2e31f105963be189da5acdf492a21"
+dependencies = [
+ "cryptoxide",
+]
+
+[[package]]
+name = "either"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
+[[package]]
+name = "errno"
+version = "0.3.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
+dependencies = [
+ "libc",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "fallible-iterator"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
+
+[[package]]
+name = "fastrand"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
+
+[[package]]
+name = "fixedbitset"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99"
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "futures-channel"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
+
+[[package]]
+name = "futures-task"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
+
+[[package]]
+name = "futures-util"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
+dependencies = [
+ "futures-core",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.13.3+wasi-0.2.2",
+ "windows-targets",
+]
+
+[[package]]
+name = "gimli"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
+
+[[package]]
+name = "half"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+dependencies = [
+ "cfg-if",
+ "crunchy",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "hashbrown"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "hex-conservative"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20"
+
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest",
+]
+
+[[package]]
+name = "http"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
+dependencies = [
+ "bytes",
+ "http",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
+dependencies = [
+ "bytes",
+ "futures-util",
+ "http",
+ "http-body",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.61"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
+name = "indexmap"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+dependencies = [
+ "autocfg",
+ "hashbrown 0.12.3",
+ "serde",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.15.2",
+ "serde",
+]
+
+[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.170"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9"
+
+[[package]]
+name = "lock_api"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
+
+[[package]]
+name = "md-5"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
+dependencies = [
+ "cfg-if",
+ "digest",
+]
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "minicbor"
+version = "0.25.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0452a60c1863c1f50b5f77cd295e8d2786849f35883f0b9e18e7e6e1b5691b0"
+dependencies = [
+ "half",
+ "minicbor-derive",
+]
+
+[[package]]
+name = "minicbor-derive"
+version = "0.15.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd2209fff77f705b00c737016a48e73733d7fbccb8b007194db148f03561fb70"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5"
+dependencies = [
+ "adler2",
+]
+
+[[package]]
+name = "mio"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
+dependencies = [
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "multimap"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
+
+[[package]]
+name = "n2c-stdout"
+version = "0.1.0"
+dependencies = [
+ "hex",
+ "pallas",
+ "tokio",
+ "tokio-postgres",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
+dependencies = [
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
+dependencies = [
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "object"
+version = "0.36.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
+
+[[package]]
+name = "pallas"
+version = "0.32.0"
+dependencies = [
+ "pallas-addresses",
+ "pallas-codec",
+ "pallas-configs",
+ "pallas-crypto",
+ "pallas-network",
+ "pallas-primitives",
+ "pallas-traverse",
+ "pallas-txbuilder",
+ "pallas-utxorpc",
+]
+
+[[package]]
+name = "pallas-addresses"
+version = "0.32.0"
+dependencies = [
+ "base58",
+ "bech32",
+ "crc",
+ "cryptoxide",
+ "hex",
+ "pallas-codec",
+ "pallas-crypto",
+ "thiserror",
+]
+
+[[package]]
+name = "pallas-applying"
+version = "0.32.0"
+dependencies = [
+ "chrono",
+ "hex",
+ "pallas-addresses",
+ "pallas-codec",
+ "pallas-crypto",
+ "pallas-primitives",
+ "pallas-traverse",
+ "rand 0.8.5",
+ "thiserror",
+]
+
+[[package]]
+name = "pallas-codec"
+version = "0.32.0"
+dependencies = [
+ "hex",
+ "minicbor",
+ "serde",
+ "thiserror",
+]
+
+[[package]]
+name = "pallas-configs"
+version = "0.32.0"
+dependencies = [
+ "base64 0.22.1",
+ "hex",
+ "num-rational",
+ "pallas-addresses",
+ "pallas-codec",
+ "pallas-crypto",
+ "pallas-primitives",
+ "serde",
+ "serde_json",
+ "serde_with",
+]
+
+[[package]]
+name = "pallas-crypto"
+version = "0.32.0"
+dependencies = [
+ "cryptoxide",
+ "hex",
+ "pallas-codec",
+ "rand_core 0.6.4",
+ "serde",
+ "thiserror",
+ "zeroize",
+]
+
+[[package]]
+name = "pallas-network"
+version = "0.32.0"
+dependencies = [
+ "byteorder",
+ "hex",
+ "itertools 0.13.0",
+ "pallas-codec",
+ "pallas-crypto",
+ "rand 0.8.5",
+ "socket2",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "pallas-primitives"
+version = "0.32.0"
+dependencies = [
+ "base58",
+ "bech32",
+ "hex",
+ "log",
+ "pallas-codec",
+ "pallas-crypto",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "pallas-traverse"
+version = "0.32.0"
+dependencies = [
+ "hex",
+ "itertools 0.13.0",
+ "pallas-addresses",
+ "pallas-codec",
+ "pallas-crypto",
+ "pallas-primitives",
+ "paste",
+ "serde",
+ "thiserror",
+]
+
+[[package]]
+name = "pallas-txbuilder"
+version = "0.32.0"
+dependencies = [
+ "hex",
+ "pallas-addresses",
+ "pallas-codec",
+ "pallas-crypto",
+ "pallas-primitives",
+ "pallas-traverse",
+ "pallas-wallet",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
+name = "pallas-utxorpc"
+version = "0.32.0"
+dependencies = [
+ "pallas-applying",
+ "pallas-codec",
+ "pallas-crypto",
+ "pallas-primitives",
+ "pallas-traverse",
+ "prost-types",
+ "utxorpc-spec",
+]
+
+[[package]]
+name = "pallas-wallet"
+version = "0.32.0"
+dependencies = [
+ "bech32",
+ "bip39",
+ "cryptoxide",
+ "ed25519-bip32",
+ "pallas-crypto",
+ "rand 0.8.5",
+ "thiserror",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-targets",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
+[[package]]
+name = "pbjson"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7e6349fa080353f4a597daffd05cb81572a9c031a6d4fff7e504947496fcc68"
+dependencies = [
+ "base64 0.21.7",
+ "serde",
+]
+
+[[package]]
+name = "pbjson-build"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6eea3058763d6e656105d1403cb04e0a41b7bbac6362d413e7c33be0c32279c9"
+dependencies = [
+ "heck",
+ "itertools 0.13.0",
+ "prost",
+ "prost-types",
+]
+
+[[package]]
+name = "pbjson-types"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e54e5e7bfb1652f95bc361d76f3c780d8e526b134b85417e774166ee941f0887"
+dependencies = [
+ "bytes",
+ "chrono",
+ "pbjson",
+ "pbjson-build",
+ "prost",
+ "prost-build",
+ "serde",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "petgraph"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772"
+dependencies = [
+ "fixedbitset",
+ "indexmap 2.7.1",
+]
+
+[[package]]
+name = "phf"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
+dependencies = [
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "pin-project"
+version = "1.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "postgres-protocol"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76ff0abab4a9b844b93ef7b81f1efc0a366062aaef2cd702c76256b5dc075c54"
+dependencies = [
+ "base64 0.22.1",
+ "byteorder",
+ "bytes",
+ "fallible-iterator",
+ "hmac",
+ "md-5",
+ "memchr",
+ "rand 0.9.0",
+ "sha2",
+ "stringprep",
+]
+
+[[package]]
+name = "postgres-types"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613283563cd90e1dfc3518d548caee47e0e725455ed619881f5cf21f36de4b48"
+dependencies = [
+ "bytes",
+ "fallible-iterator",
+ "postgres-protocol",
+]
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+dependencies = [
+ "zerocopy 0.7.35",
+]
+
+[[package]]
+name = "prettyplease"
+version = "0.2.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1ccf34da56fc294e7d4ccf69a85992b7dfb826b7cf57bac6a70bba3494cc08a"
+dependencies = [
+ "proc-macro2",
+ "syn",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.94"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "prost"
+version = "0.13.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5"
+dependencies = [
+ "bytes",
+ "prost-derive",
+]
+
+[[package]]
+name = "prost-build"
+version = "0.13.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf"
+dependencies = [
+ "heck",
+ "itertools 0.14.0",
+ "log",
+ "multimap",
+ "once_cell",
+ "petgraph",
+ "prettyplease",
+ "prost",
+ "prost-types",
+ "regex",
+ "syn",
+ "tempfile",
+]
+
+[[package]]
+name = "prost-derive"
+version = "0.13.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d"
+dependencies = [
+ "anyhow",
+ "itertools 0.14.0",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "prost-types"
+version = "0.13.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16"
+dependencies = [
+ "prost",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1f1914ce909e1658d9907913b4b91947430c7d9be598b15a1912935b8c04801"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
+dependencies = [
+ "rand_chacha 0.9.0",
+ "rand_core 0.9.3",
+ "zerocopy 0.8.23",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.9.3",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom 0.2.15",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
+dependencies = [
+ "getrandom 0.3.1",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "regex"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
+
+[[package]]
+name = "rustix"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17f8dcd64f141950290e45c99f7710ede1b600297c91818bb30b3667c0f45dc0"
+dependencies = [
+ "bitflags",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+
+[[package]]
+name = "ryu"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "serde"
+version = "1.0.218"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.218"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.140"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_with"
+version = "3.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa"
+dependencies = [
+ "base64 0.22.1",
+ "chrono",
+ "hex",
+ "indexmap 1.9.3",
+ "indexmap 2.7.1",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "serde_with_macros",
+ "time",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "3.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "siphasher"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
+
+[[package]]
+name = "slab"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
+
+[[package]]
+name = "socket2"
+version = "0.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "stringprep"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+ "unicode-properties",
+]
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
+[[package]]
+name = "syn"
+version = "2.0.99"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e02e925281e18ffd9d640e234264753c43edc62d64b2d4cf898f1bc5e75f3fc2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c317e0a526ee6120d8dabad239c8dadca62b24b6f168914bbbc8e2fb1f0e567"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "getrandom 0.3.1",
+ "once_cell",
+ "rustix",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "time"
+version = "0.3.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dad298b01a40a23aac4580b67e3dbedb7cc8402f3592d7f49469de2ea4aecdd8"
+dependencies = [
+ "deranged",
+ "itoa",
+ "num-conv",
+ "powerfmt",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "765c97a5b985b7c11d7bc27fa927dc4fe6af3a6dfb021d28deb60d3bf51e76ef"
+
+[[package]]
+name = "time-macros"
+version = "0.2.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8093bc3e81c3bc5f7879de09619d06c9a5a5e45ca44dfeeb7225bae38005c5c"
+dependencies = [
+ "num-conv",
+ "time-core",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "tokio"
+version = "1.43.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e"
+dependencies = [
+ "backtrace",
+ "bytes",
+ "libc",
+ "mio",
+ "parking_lot",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2",
+ "tokio-macros",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tokio-postgres"
+version = "0.7.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c95d533c83082bb6490e0189acaa0bbeef9084e60471b696ca6988cd0541fb0"
+dependencies = [
+ "async-trait",
+ "byteorder",
+ "bytes",
+ "fallible-iterator",
+ "futures-channel",
+ "futures-util",
+ "log",
+ "parking_lot",
+ "percent-encoding",
+ "phf",
+ "pin-project-lite",
+ "postgres-protocol",
+ "postgres-types",
+ "rand 0.9.0",
+ "socket2",
+ "tokio",
+ "tokio-util",
+ "whoami",
+]
+
+[[package]]
+name = "tokio-stream"
+version = "0.1.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "tonic"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52"
+dependencies = [
+ "async-trait",
+ "base64 0.22.1",
+ "bytes",
+ "http",
+ "http-body",
+ "http-body-util",
+ "percent-encoding",
+ "pin-project",
+ "prost",
+ "tokio-stream",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+
+[[package]]
+name = "tower-service"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
+
+[[package]]
+name = "tracing"
+version = "0.1.41"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
+dependencies = [
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "typenum"
+version = "1.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-properties"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0"
+
+[[package]]
+name = "utxorpc-spec"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7148c5cd211c397a41245cfbd8d4cb8371d748ed5e3cf131ebcd9cacfa794206"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "pbjson",
+ "pbjson-types",
+ "prost",
+ "prost-types",
+ "serde",
+ "tonic",
+]
+
+[[package]]
+name = "version_check"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasi"
+version = "0.13.3+wasi-0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
+dependencies = [
+ "wit-bindgen-rt",
+]
+
+[[package]]
+name = "wasite"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "whoami"
+version = "1.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d"
+dependencies = [
+ "redox_syscall",
+ "wasite",
+ "web-sys",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-link"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3"
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "wit-bindgen-rt"
+version = "0.33.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "byteorder",
+ "zerocopy-derive 0.7.35",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.8.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6"
+dependencies = [
+ "zerocopy-derive 0.8.23",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.8.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
diff --git a/src/Chrysalis.Cbor.Cli/rust/n2c-stdout/Cargo.toml b/src/Chrysalis.Cbor.Cli/rust/n2c-stdout/Cargo.toml
new file mode 100644
index 00000000..a6ada731
--- /dev/null
+++ b/src/Chrysalis.Cbor.Cli/rust/n2c-stdout/Cargo.toml
@@ -0,0 +1,9 @@
+[package]
+name = "n2c-stdout"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+hex = "0.4.3"
+pallas = { path = "../../pallas" }
+tokio = { version = "1.43.0", features = ["full"] }
diff --git a/src/Chrysalis.Cbor.Cli/rust/n2c-stdout/src/main.rs b/src/Chrysalis.Cbor.Cli/rust/n2c-stdout/src/main.rs
new file mode 100644
index 00000000..7a7ca83e
--- /dev/null
+++ b/src/Chrysalis.Cbor.Cli/rust/n2c-stdout/src/main.rs
@@ -0,0 +1,195 @@
+use pallas::{
+ ledger::traverse::{wellknown::PREVIEW_MAGIC, MultiEraBlock},
+ network::{
+ facades::NodeClient,
+ miniprotocols::{chainsync::NextResponse, Point},
+ },
+};
+use std::{
+ sync::{
+ atomic::{AtomicUsize, Ordering},
+ Arc,
+ },
+ time::Duration,
+};
+use tokio_postgres::{Client, NoTls};
+
+#[tokio::main]
+async fn main() {
+ // Initialize the database
+ let db_client = match initialize_db().await {
+ Ok(client) => Arc::new(client),
+ Err(e) => {
+ eprintln!("Failed to initialize database: {}", e);
+ return;
+ }
+ };
+ println!("Database initialized");
+
+ // Connect to the node
+ let socket_path = "/home/rjlacanlale/cardano/ipc/node.socket";
+ let mut client = match NodeClient::connect(socket_path, PREVIEW_MAGIC).await {
+ Ok(client) => client,
+ Err(e) => {
+ eprintln!("Failed to connect to node: {}", e);
+ return;
+ }
+ };
+ println!("Connected to node");
+
+ // Get the chainsync client
+ let chainsync_client = client.chainsync();
+
+ // Define the point
+ let point =
+ match hex::decode("20a81db38339bf6ee9b1d7e22b22c0ac4d887d332bbf4f3005db4848cd647743") {
+ Ok(bytes) => Point::Specific(57371845, bytes),
+ Err(e) => {
+ eprintln!("Failed to decode hex: {}", e);
+ return;
+ }
+ };
+
+ // Find intersection
+ println!("Finding Intersection...");
+ match chainsync_client.find_intersect(vec![point]).await {
+ Ok(_) => println!("Intersection found"),
+ Err(e) => {
+ eprintln!("Failed to find intersection: {}", e);
+ return;
+ }
+ }
+
+ // Use atomic counters for block counting and deserialization tracking
+ let block_count = Arc::new(AtomicUsize::new(0));
+ let deserialized_count = Arc::new(AtomicUsize::new(0));
+
+ // Create a task to periodically print block count and deserialization stats
+ let block_count_clone = Arc::clone(&block_count);
+ let deserialized_count_clone = Arc::clone(&deserialized_count);
+
+ tokio::spawn(async move {
+ loop {
+ let blocks = block_count_clone.load(Ordering::Relaxed);
+ let deserialized = deserialized_count_clone.load(Ordering::Relaxed);
+ println!(
+ "Block count: {}, Deserialized: {}, Success rate: {:.2}%",
+ blocks,
+ deserialized,
+ if blocks > 0 {
+ (deserialized as f64 / blocks as f64) * 100.0
+ } else {
+ 0.0
+ }
+ );
+ block_count_clone.store(0, Ordering::Relaxed);
+ deserialized_count_clone.store(0, Ordering::Relaxed);
+ tokio::time::sleep(Duration::from_secs(1)).await;
+ }
+ });
+
+ println!("Starting ChainSync...");
+
+ // Main loop for chain sync
+ loop {
+ // Request next message
+ match chainsync_client.request_next().await {
+ Ok(response) => {
+ match response {
+ // Handle RollForward
+ NextResponse::RollForward(content, _tip) => {
+ // Deserialize the block
+ match MultiEraBlock::decode(&content.0) {
+ Ok(block) => {
+ block_count.fetch_add(1, Ordering::Relaxed);
+ deserialized_count.fetch_add(1, Ordering::Relaxed);
+
+ // Extract block data
+ let block_number = block.number() as i64; // Using count as number for simplicity
+ let block_slot = block.slot() as i64;
+ let block_hash = hex::encode(block.hash());
+
+ // Insert into database and await completion
+ match insert_block(
+ &db_client,
+ block_number,
+ block_slot,
+ &block_hash,
+ )
+ .await
+ {
+ Ok(_) => {}
+ Err(e) => {
+ eprintln!("Failed to insert block: {}", e);
+ }
+ }
+ }
+ Err(e) => {
+ eprintln!("Failed to deserialize block: {}", e);
+ }
+ }
+ }
+ NextResponse::RollBackward(point, _) => {
+ println!("Rolling back to {}", point.slot_or_default());
+ }
+ NextResponse::Await => {
+ println!("Tip reached!");
+ }
+ }
+ }
+ Err(e) => {
+ eprintln!("Error in request_next: {}", e);
+ }
+ }
+ }
+}
+
+async fn initialize_db() -> Result {
+ // Connect to the database
+ let (client, connection) = tokio_postgres::connect(
+ "host=localhost dbname=chrysalis-rs user=postgres password=test1234 port=5432",
+ NoTls,
+ )
+ .await?;
+
+ // The connection object performs the actual communication with the database
+ tokio::spawn(async move {
+ if let Err(e) = connection.await {
+ eprintln!("connection error: {}", e);
+ }
+ });
+
+ // Drop the table if it exists
+ client.execute("DROP TABLE IF EXISTS blocks", &[]).await?;
+
+ // Create a fresh table with minimal columns
+ client
+ .execute(
+ "CREATE TABLE blocks (
+ block_number BIGINT NOT NULL,
+ block_slot BIGINT NOT NULL,
+ block_hash VARCHAR(64) NOT NULL,
+ timestamp TIMESTAMP NOT NULL DEFAULT NOW()
+ )",
+ &[],
+ )
+ .await?;
+
+ Ok(client)
+}
+
+async fn insert_block(
+ client: &Client,
+ block_number: i64,
+ block_slot: i64,
+ block_hash: &str,
+) -> Result<(), tokio_postgres::Error> {
+ client
+ .execute(
+ "INSERT INTO blocks (block_number, block_slot, block_hash) VALUES ($1, $2, $3)",
+ &[&block_number, &block_slot, &block_hash],
+ )
+ .await?;
+
+ Ok(())
+}
diff --git a/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.Emitter.cs b/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.Emitter.cs
new file mode 100644
index 00000000..803f45f8
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.Emitter.cs
@@ -0,0 +1,153 @@
+using System.Runtime.CompilerServices;
+using System.Text;
+using Microsoft.CodeAnalysis;
+
+namespace Chrysalis.Cbor.CodeGen;
+
+public sealed partial class CborSerializerCodeGen
+{
+ private interface ICborSerializerEmitter
+ {
+ StringBuilder EmitWriter(StringBuilder sb, SerializableTypeMetadata metadata);
+ StringBuilder EmitReader(StringBuilder sb, SerializableTypeMetadata metadata);
+ }
+
+ private static partial class Emitter
+ {
+ public const string GenericSerializationUtilFullname = "global::Chrysalis.Cbor.Serialization.Utils.GenericSerializationUtil";
+ public const string CborEncodeValueFullName = "global::Chrysalis.Cbor.Types.Primitives.CborEncodedValue";
+
+ public static void EmitSerializerAndMetadata(SourceProductionContext context, SerializableTypeMetadata metadata)
+ {
+ // Metadata emission
+ context.AddSource($"{metadata?.FullyQualifiedName.Replace("<", "`").Replace(">", "`")}.Metadata.g.cs", metadata?.ToString()!);
+
+ // Serializer emission
+ StringBuilder sb = new();
+ sb.AppendLine("// Automatically generated file");
+ sb.AppendLine("#pragma warning disable CS0109");
+ sb.AppendLine();
+ sb.AppendLine("using System.Formats.Cbor;");
+ sb.AppendLine();
+
+ if (metadata?.Namespace is not null)
+ {
+ sb.AppendLine($"namespace {metadata?.Namespace};");
+ }
+
+ sb.AppendLine($"public partial {metadata?.Keyword} {metadata?.Indentifier}");
+ sb.AppendLine("{");
+
+ // Type Mapping
+ if (metadata?.SerializationType is SerializationType.Map)
+ {
+ bool isIntKey = metadata.Properties[0].PropertyKeyInt is not null;
+ sb.AppendLine($"static Dictionary<{(isIntKey ? "int" : "string")}, Type> TypeMapping = new()");
+ sb.AppendLine("{");
+
+ List properties = [.. metadata.Properties];
+ for (int i = 0; i < properties.Count; i++)
+ {
+ SerializablePropertyMetadata prop = properties[i];
+ string? keyValue = isIntKey ? prop.PropertyKeyInt?.ToString() : prop.PropertyKeyString;
+
+ if (i == properties.Count - 1)
+ {
+ sb.AppendLine($" {{{keyValue}, typeof({prop.PropertyTypeFullName})}}");
+ }
+ else
+ {
+ sb.AppendLine($" {{{keyValue}, typeof({prop.PropertyTypeFullName})}},");
+ }
+ }
+
+ sb.AppendLine("};");
+ sb.AppendLine();
+ }
+
+ // Property Key Mapping
+ if (metadata?.SerializationType is SerializationType.Map)
+ {
+ bool isIntKey = metadata.Properties[0].PropertyKeyInt is not null;
+ sb.AppendLine($"static Dictionary KeyMapping = new()");
+ sb.AppendLine("{");
+
+ List properties = [.. metadata.Properties];
+ for (int i = 0; i < properties.Count; i++)
+ {
+ SerializablePropertyMetadata prop = properties[i];
+ string? keyValue = $"\"{prop.PropertyName}\"";
+ string? value = isIntKey ? prop.PropertyKeyInt?.ToString() : prop.PropertyKeyString;
+
+ if (i == properties.Count - 1)
+ {
+ sb.AppendLine($" {{{keyValue}, {value}}}");
+ }
+ else
+ {
+ sb.AppendLine($" {{{keyValue}, {value}}},");
+ }
+ }
+
+ sb.AppendLine("};");
+ sb.AppendLine();
+ }
+
+ EmitSerializableTypeReader(sb, metadata!);
+
+ sb.AppendLine();
+
+ EmitSerializableTypeWriter(sb, metadata!);
+
+ sb.AppendLine("}");
+ sb.AppendLine();
+ sb.AppendLine("#pragma warning restore CS0109");
+
+ context.AddSource($"{metadata?.FullyQualifiedName.Replace("<", "`").Replace(">", "`")}.Serializer.g.cs", sb.ToString());
+ }
+
+ private static ICborSerializerEmitter GetEmitter(SerializableTypeMetadata metadata)
+ {
+ return metadata.SerializationType switch
+ {
+ SerializationType.Constr => new ConstructorEmitter(),
+ SerializationType.Container => new ContainerEmitter(),
+ SerializationType.List => new ListEmitter(),
+ SerializationType.Map => new MapEmitter(),
+ SerializationType.Union => new UnionEmitter(),
+ _ => throw new NotSupportedException($"Serialization type {metadata.SerializationType} is not supported.")
+ };
+ }
+
+ public static int ResolveTag(int? index)
+ {
+ if (index is null || index < 0)
+ {
+ return -1;
+ }
+ else
+ {
+ int finalIndex = index > 6 ? 1280 - 7 : 121;
+ return finalIndex + (index ?? 0);
+ }
+ }
+
+ private static bool IsPrimitiveType(string type) => type.Replace("?", "") switch
+ {
+ "bool" => true,
+ "int" => true,
+ "long" => true,
+ "ulong" => true,
+ "uint" => true,
+ "float" => true,
+ "double" => true,
+ "decimal" => true,
+ "string" => true,
+ "byte[]" => true,
+ "CborEncodedValue" => true,
+ "Chrysalis.Cbor.Types.Primitives.CborEncodedValue" => true,
+ "global::Chrysalis.Cbor.Types.Primitives.CborEncodedValue" => true,
+ _ => false
+ };
+ }
+}
diff --git a/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.Metadata.cs b/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.Metadata.cs
new file mode 100644
index 00000000..932ce767
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.Metadata.cs
@@ -0,0 +1,156 @@
+using System.Data.Common;
+
+namespace Chrysalis.Cbor.CodeGen;
+
+public sealed partial class CborSerializerCodeGen
+{
+ private enum SerializationType
+ {
+ Container,
+ Map,
+ List,
+ Constr,
+ Union
+ }
+
+ private sealed class SerializableTypeMetadata(
+ string baseIdentifier,
+ string identifier,
+ string? @namespace,
+ string? typeParams,
+ string fullyQualifiedName,
+ string keyword,
+ int? cborTag,
+ int? cborIndex,
+ SerializationType serializationType,
+ string? validator,
+ bool shouldPreserveRaw
+ )
+ {
+ public string BaseIdentifier { get; } = baseIdentifier;
+ public string Indentifier { get; } = identifier;
+ public string? Namespace { get; } = @namespace;
+ public string? TypeParams { get; } = typeParams;
+ public string FullyQualifiedName { get; } = fullyQualifiedName;
+ public string Keyword { get; } = keyword;
+ public int? CborTag { get; } = cborTag;
+ public int? CborIndex { get; } = cborIndex;
+ public SerializationType SerializationType { get; } = serializationType;
+ public string? Validator { get; } = validator;
+ public bool ShouldPreserveRaw { get; } = shouldPreserveRaw;
+ public bool IsTypeNullable => Indentifier.Contains("?");
+
+ public List ChildTypes { get; } = [];
+ public List Properties { get; } = [];
+
+ public override string ToString()
+ {
+ // better formatted strring
+ return $$"""
+ // Keyword: {{Keyword}}
+ // Identifier: {{Indentifier}}
+ // Namespace: {{Namespace}}
+ // TypeParams: {{TypeParams}}
+ // FullyQualifiedName: {{FullyQualifiedName}}
+ // SerializationType: {{SerializationType}}
+ // CborTag: {{CborTag}}
+ // CborIndex: {{CborIndex}}
+ // ShouldPreserveRaw: {{ShouldPreserveRaw}}
+ // Validator: {{Validator}}
+ // Properties: {{string.Join(",", Properties.Select(p => p.ToString()))}}
+ // ChildTypes: {{string.Join(",", ChildTypes.Select(t => t.ToString()))}}
+ // IsTypeNullable: {{IsTypeNullable}}
+ """;
+ }
+ }
+
+ private sealed class SerializablePropertyMetadata(
+ string propertyName,
+ string propertyType,
+ string propertyTypeFullName,
+ string propertyTypeNamespace,
+ bool isList,
+ bool isMap,
+ string? listItemType,
+ string? listItemTypeFullName,
+ string? listItemTypeNamespace,
+ bool isListItemTypeOpenGeneric,
+ bool isMapKeyTypeOpenGeneric,
+ bool isMapValueTypeOpenGeneric,
+ string? mapKeyType,
+ string? mapValueType,
+ string? mapKeyTypeFullName,
+ string? mapValueTypeFullName,
+ string? mapKeyTypeNamespace,
+ string? mapValueTypeNamespace,
+ bool isNullable,
+ int? size,
+ bool isIndefinite,
+ int? order,
+ string? propertyKeyString,
+ int? propertyKeyInt,
+ bool isOpenGeneric
+ )
+ {
+ public string PropertyName { get; } = propertyName;
+ public string PropertyType { get; } = propertyType;
+ public string PropertyTypeFullName { get; } = propertyTypeFullName;
+ public string PropertyTypeNamespace { get; } = propertyTypeNamespace;
+ public bool IsList { get; } = isList;
+ public bool IsMap { get; } = isMap;
+
+ public string? ListItemType { get; } = listItemType;
+ public bool IsListItemTypeOpenGeneric { get; } = isListItemTypeOpenGeneric;
+ public string? ListItemTypeFullName { get; } = listItemTypeFullName;
+ public string? ListItemTypeNamespace { get; } = listItemTypeNamespace;
+ public string? MapKeyType { get; } = mapKeyType;
+ public bool IsMapKeyTypeOpenGeneric { get; } = isMapKeyTypeOpenGeneric;
+ public string? MapValueType { get; } = mapValueType;
+ public bool IsMapValueTypeOpenGeneric { get; } = isMapValueTypeOpenGeneric;
+ public string? MapKeyTypeFullName { get; } = mapKeyTypeFullName;
+ public string? MapValueTypeFullName { get; } = mapValueTypeFullName;
+ public string? MapKeyTypeNamespace { get; } = mapKeyTypeNamespace;
+ public string? MapValueTypeNamespace { get; } = mapValueTypeNamespace;
+
+ // Attributes
+ public bool IsNullable { get; } = isNullable;
+ public bool IsTypeNullable => PropertyType.Contains("?");
+ public int? Size { get; } = size;
+ public bool IsIndefinite { get; } = isIndefinite;
+ public int? Order { get; set; } = order;
+ public string? PropertyKeyString { get; } = propertyKeyString;
+ public int? PropertyKeyInt { get; } = propertyKeyInt;
+ public bool IsOpenGeneric { get; } = isOpenGeneric;
+
+ public override string ToString()
+ {
+ return $$"""
+ // PropertyName: {{PropertyName}}
+ // PropertyType: {{PropertyType}}
+ // PropertyTypeFullName: {{PropertyTypeFullName}}
+ // PropertyTypeNamespace: {{PropertyTypeNamespace}}
+ // IsNullable: {{IsNullable}}
+ // Size: {{Size}}
+ // IsIndefinite: {{IsIndefinite}}
+ // Order: {{Order}}
+ // PropertyKeyString: {{PropertyKeyString}}
+ // PropertyKeyInt: {{PropertyKeyInt}}
+ // IsList: {{IsList}}
+ // IsMap: {{IsMap}}
+ // ListItemType: {{ListItemType}}
+ // ListItemTypeFullName: {{ListItemTypeFullName}}
+ // IsListItemTypeOpenGeneric: {{IsListItemTypeOpenGeneric}}
+ // MapKeyType: {{MapKeyType}}
+ // MapValueType: {{MapValueType}}
+ // MapKeyTypeFullName: {{MapKeyTypeFullName}}
+ // MapValueTypeFullName: {{MapValueTypeFullName}}
+ // MapKeyTypeNamespace: {{MapKeyTypeNamespace}}
+ // MapValueTypeNamespace: {{MapValueTypeNamespace}}
+ // IsMapKeyTypeOpenGeneric: {{IsMapKeyTypeOpenGeneric}}
+ // IsMapValueTypeOpenGeneric: {{IsMapValueTypeOpenGeneric}}
+ // IsOpenGeneric: {{IsOpenGeneric}}
+ // IsTypeNullable: {{IsTypeNullable}}
+ """;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.Parser.cs b/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.Parser.cs
new file mode 100644
index 00000000..8ffb9e15
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.Parser.cs
@@ -0,0 +1,545 @@
+using Chrysalis.Cbor.CodeGen.Extensions;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+
+namespace Chrysalis.Cbor.CodeGen;
+
+
+public sealed partial class CborSerializerCodeGen
+{
+ private static class Parser
+ {
+ public static readonly Dictionary _cache = [];
+
+ public const string CborSerializable = "CborSerializable";
+ public const string CborMap = "CborMap";
+ public const string CborNullable = "CborNullable";
+ public const string CborList = "CborList";
+ public const string CborUnion = "CborUnion";
+ public const string CborConstr = "CborConstr";
+ public const string CborTag = "CborTag";
+ public const string CborOrder = "CborOrder";
+ public const string CborPropertyAttribute = "CborPropertyAttribute";
+ public const string CborProperty = "CborProperty";
+ public const string CborSize = "CborSize";
+ public const string CborIndefinite = "CborIndefinite";
+
+ // Interfaces
+ public const string ICborPreserveRawFullName = "Chrysalis.Cbor.Serialization.ICborPreserveRaw";
+ public const string ICborPreserveRaw = "ICborPreserveRaw";
+ public const string ICborValidatorFullName = "Chrysalis.Cbor.Serialization.ICborValidator`1";
+
+ public static SerializableTypeMetadata? ParseSerialazableType(TypeDeclarationSyntax tds, SemanticModel model)
+ {
+ IEnumerable attributes = tds.AttributeLists.SelectMany(a => a.Attributes);
+ AttributeSyntax? cborSerializableAttribute = attributes.FirstOrDefault(a => a.Name.ToString() == CborSerializable);
+
+ if (cborSerializableAttribute == null) return null;
+
+ string baseNamespace = GetBaseNamespace(tds, model);
+ (string path, string parentTypeParams) = GetFullNamespaceWithParentsAndTypeParams(tds, model);
+ string? keyword = tds.Keyword.ToFullString();
+ string? @namespace = baseNamespace;
+
+ string? typeParams = null;
+ if (tds is TypeDeclarationSyntax typeDecl && typeDecl.TypeParameterList != null)
+ {
+ typeParams = typeDecl.TypeParameterList.ToString();
+ }
+
+ typeParams ??= parentTypeParams;
+
+ string baseIdentifier = RemoveGenericPart(tds.Identifier.ToFullString());
+ string identifier = $"{baseIdentifier}{typeParams}";
+
+ string fullyQualifiedName = string.IsNullOrEmpty(path) ? baseIdentifier : $"{path}.{baseIdentifier}";
+
+ if (string.IsNullOrEmpty(parentTypeParams))
+ {
+ fullyQualifiedName = $"{fullyQualifiedName}{typeParams}";
+ }
+
+ AttributeSyntax? cborMapAttribute = attributes.FirstOrDefault(a => a.Name.ToString() == CborMap);
+ AttributeSyntax? cborListAttribute = attributes.FirstOrDefault(a => a.Name.ToString() == CborList);
+ AttributeSyntax? cborUnionAttribute = attributes.FirstOrDefault(a => a.Name.ToString() == CborUnion);
+ AttributeSyntax? cborConstrAttribute = attributes.FirstOrDefault(a => a.Name.ToString() == CborConstr);
+ AttributeSyntax? cborTagAttribute = attributes.FirstOrDefault(a => a.Name.ToString() == CborTag);
+
+ int? constrIndex = cborConstrAttribute?.ArgumentList?.Arguments.FirstOrDefault()?.GetFirstToken().Value as int?;
+ int? cborTag = cborTagAttribute?.ArgumentList?.Arguments.FirstOrDefault()?.GetFirstToken().Value as int?;
+ bool shouldPreserveRaw = ShouldPreserveRaw(tds, model);
+
+ SerializationType serializationType = GetSerializationType(cborMapAttribute, cborListAttribute, cborUnionAttribute, cborConstrAttribute);
+ string? validatorFullyQualifiedName = FindValidatorForType(tds, model, model.Compilation);
+
+ IEnumerable properties = GetPropertyMetadata(tds, model);
+ IEnumerable childTypes = [];
+
+ SerializableTypeMetadata typeMetadata = new(
+ baseIdentifier,
+ identifier,
+ @namespace,
+ typeParams,
+ fullyQualifiedName,
+ keyword,
+ cborTag,
+ constrIndex,
+ serializationType,
+ validatorFullyQualifiedName,
+ shouldPreserveRaw
+ );
+
+ if (serializationType == SerializationType.Union)
+ {
+ childTypes = GetChildTypes(tds, model);
+ }
+
+ typeMetadata.Properties.AddRange(properties);
+ typeMetadata.ChildTypes.AddRange(childTypes);
+
+ _cache[typeMetadata.FullyQualifiedName.Replace("global::", "")] = typeMetadata;
+
+ return typeMetadata;
+ }
+ }
+
+ public static bool ShouldPreserveRaw(TypeDeclarationSyntax tds, SemanticModel semanticModel)
+ {
+ if (semanticModel.GetDeclaredSymbol(tds) is not INamedTypeSymbol typeSymbol)
+ return false;
+
+ INamedTypeSymbol? interfaceSymbol = semanticModel.Compilation.GetTypeByMetadataName(Parser.ICborPreserveRaw);
+ if (interfaceSymbol != null)
+ return typeSymbol.AllInterfaces.Contains(interfaceSymbol);
+
+ return typeSymbol.AllInterfaces.Any(i =>
+ i.ToDisplayString() == Parser.ICborPreserveRaw ||
+ i.ToDisplayString() == Parser.ICborPreserveRawFullName ||
+ i.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat) == $"global::{Parser.ICborPreserveRawFullName}");
+ }
+
+ private static SerializationType GetSerializationType(AttributeSyntax? cborMapAttribute, AttributeSyntax? cborListAttribute, AttributeSyntax? cborUnionAttribute, AttributeSyntax? cborConstrAttribute)
+ {
+ if (cborMapAttribute != null) return SerializationType.Map;
+ if (cborListAttribute != null) return SerializationType.List;
+ if (cborUnionAttribute != null) return SerializationType.Union;
+ if (cborConstrAttribute != null) return SerializationType.Constr;
+
+ return SerializationType.Container;
+ }
+
+ private static string? FindValidatorForType(TypeDeclarationSyntax typeDecl, SemanticModel semanticModel, Compilation compilation)
+ {
+ if (semanticModel.GetDeclaredSymbol(typeDecl) is not INamedTypeSymbol typeSymbol) return null;
+
+ INamedTypeSymbol? openValidatorInterface = compilation.GetTypeByMetadataName(Parser.ICborValidatorFullName);
+ if (openValidatorInterface == null) return null;
+
+ INamedTypeSymbol closedValidatorInterface = openValidatorInterface.Construct(typeSymbol);
+ INamedTypeSymbol validator = compilation
+ .GetSymbolsWithName(_ => true, SymbolFilter.Type)
+ .OfType()
+ .FirstOrDefault(t => t.AllInterfaces.Any(i => SymbolEqualityComparer.Default.Equals(i, closedValidatorInterface)));
+
+ return validator?.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
+ }
+
+ private static IEnumerable GetPropertyMetadata(TypeDeclarationSyntax tds, SemanticModel model)
+ {
+ if (tds is ClassDeclarationSyntax classDecl)
+ {
+ return GetClassPropertyMetadata(classDecl, model);
+ }
+ else if (tds is RecordDeclarationSyntax recordDecl)
+ {
+ return GetRecordPropertyMetadata(recordDecl, model);
+ }
+
+ return [];
+ }
+
+ private static IEnumerable GetClassPropertyMetadata(ClassDeclarationSyntax classDecl, SemanticModel model)
+ {
+ IEnumerable attributes = classDecl.AttributeLists.SelectMany(a => a.Attributes);
+ IEnumerable properties = classDecl.DescendantNodes().OfType();
+
+ foreach (PropertyDeclarationSyntax property in properties)
+ {
+ string propertyName = property.Identifier.ToFullString();
+ string propertyType = property.Type.ToFullString();
+ string propertyTypeFullName = model.GetSymbolInfo(property.Type).Symbol?.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat) ?? string.Empty;
+ string propertyTypeNamespace = model.GetSymbolInfo(property.Type).Symbol?.ContainingNamespace.ToDisplayString() ?? string.Empty;
+ bool isNullable = attributes.FirstOrDefault(a => a.Name.ToString() == Parser.CborNullable) is not null;
+ bool isIndefinite = attributes.FirstOrDefault(a => a.Name.ToString() == Parser.CborIndefinite) is not null;
+ int? size = attributes.FirstOrDefault(a => a.Name.ToString() == Parser.CborSize)?.ArgumentList?.Arguments.FirstOrDefault()?.GetFirstToken().Value as int?;
+ int? order = attributes.FirstOrDefault(a => a.Name.ToString() == Parser.CborOrder)?.ArgumentList?.Arguments.FirstOrDefault()?.GetFirstToken().Value as int?;
+ GetCborPropertyKey(property, model, out string? stringKey, out int? intKey);
+
+
+ yield return new SerializablePropertyMetadata(
+ propertyName,
+ propertyType,
+ propertyTypeFullName,
+ propertyTypeNamespace,
+ false,
+ false,
+ null,
+ null,
+ null,
+ false,
+ false,
+ false,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ isNullable,
+ size,
+ isIndefinite,
+ order,
+ stringKey,
+ intKey,
+ false
+ );
+ }
+ }
+
+ private static IEnumerable GetRecordPropertyMetadata(RecordDeclarationSyntax recordDecl, SemanticModel model)
+ {
+ foreach (ParameterSyntax param in recordDecl.ParameterList?.Parameters ?? [])
+ {
+ IEnumerable paramAttributes = param.AttributeLists.SelectMany(a => a.Attributes);
+
+ string propertyName = param.Identifier.Text;
+ string propertyType = param.Type?.ToString() ?? throw new ArgumentNullException(nameof(param.Type));
+ string propertyTypeNamespace = string.Empty;
+ bool isOpenGeneric = false;
+ ISymbol? typeSymbol = model.GetSymbolInfo(param.Type).Symbol;
+ string propertyTypeFullName = "";
+
+ if (typeSymbol is ITypeSymbol its)
+ {
+ if (its.TypeKind is TypeKind.TypeParameter)
+ {
+ isOpenGeneric = true;
+ }
+
+ propertyTypeFullName = its.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
+ }
+
+ if (typeSymbol != null)
+ {
+ if (typeSymbol is INamedTypeSymbol namedType &&
+ namedType.ContainingNamespace != null &&
+ !namedType.ContainingNamespace.IsGlobalNamespace)
+ {
+ propertyTypeNamespace = namedType.ContainingNamespace.ToDisplayString();
+ }
+ else if (typeSymbol is IArrayTypeSymbol arrayType)
+ {
+ ITypeSymbol elementType = arrayType.ElementType;
+ if (elementType.ContainingNamespace != null &&
+ !elementType.ContainingNamespace.IsGlobalNamespace)
+ {
+ propertyTypeNamespace = elementType.ContainingNamespace.ToDisplayString();
+ }
+ }
+ }
+
+ bool isNullable = paramAttributes.Any(a => a.Name.ToString() == Parser.CborNullable);
+ bool isIndefinite = paramAttributes.Any(a => a.Name.ToString() == Parser.CborIndefinite);
+
+ int? size = null;
+ AttributeSyntax sizeAttr = paramAttributes.FirstOrDefault(a => a.Name.ToString() == Parser.CborSize);
+ if (sizeAttr?.ArgumentList?.Arguments.FirstOrDefault() is AttributeArgumentSyntax sizeArg)
+ {
+ Optional constValue = model.GetConstantValue(sizeArg.Expression);
+ if (constValue.HasValue && constValue.Value is int sizeVal)
+ size = sizeVal;
+ }
+
+ int? order = null;
+ AttributeSyntax orderAttr = paramAttributes.FirstOrDefault(a => a.Name.ToString() == Parser.CborOrder);
+ if (orderAttr?.ArgumentList?.Arguments.FirstOrDefault() is AttributeArgumentSyntax orderArg)
+ {
+ Optional constValue = model.GetConstantValue(orderArg.Expression);
+ if (constValue.HasValue && constValue.Value is int orderVal)
+ order = orderVal;
+ }
+
+ GetCborPropertyKey(param, model, out string? stringKey, out int? intKey);
+
+ bool isList = false;
+ bool isMap = false;
+
+ string? listItemType = null;
+ string? listItemTypeFullName = null;
+ string? listItemTypeNamespace = null;
+ bool isListItemTypeOpenGeneric = false;
+
+
+ bool isMapKeyTypeOpenGeneric = false;
+ bool isMapValueTypeOpenGeneric = false;
+ string? mapKeyType = null;
+ string? mapValueType = null;
+ string? mapKeyTypeFullName = null;
+ string? mapValueTypeFullName = null;
+ string? mapKeyTypeNamespace = null;
+ string? mapValueTypeNamespace = null;
+
+ if (typeSymbol is ITypeSymbol ts)
+ {
+
+ if (IsMapType(ts, out ITypeSymbol? keyTypeSymbol, out ITypeSymbol? valueTypeSymbol))
+ {
+ isMap = true;
+ mapKeyType = keyTypeSymbol?.Name;
+ mapKeyTypeFullName = keyTypeSymbol?.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
+ mapValueType = valueTypeSymbol?.Name;
+ mapValueTypeFullName = valueTypeSymbol?.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
+ mapKeyTypeNamespace = keyTypeSymbol?.ContainingNamespace?.IsGlobalNamespace == false ?
+ keyTypeSymbol.ContainingNamespace.ToDisplayString() : null;
+ mapValueTypeNamespace = valueTypeSymbol?.ContainingNamespace?.IsGlobalNamespace == false ?
+ valueTypeSymbol.ContainingNamespace.ToDisplayString() : null;
+
+ isMapKeyTypeOpenGeneric = (keyTypeSymbol?.TypeKind == TypeKind.TypeParameter) ||
+ (keyTypeSymbol is INamedTypeSymbol namedKeyType &&
+ namedKeyType.IsGenericType &&
+ namedKeyType.TypeArguments.Any(ta => ta.TypeKind == TypeKind.TypeParameter));
+
+ isMapValueTypeOpenGeneric = (valueTypeSymbol?.TypeKind == TypeKind.TypeParameter) ||
+ (valueTypeSymbol is INamedTypeSymbol namedValueType &&
+ namedValueType.IsGenericType &&
+ namedValueType.TypeArguments.Any(ta => ta.TypeKind == TypeKind.TypeParameter));
+
+ mapKeyTypeFullName = keyTypeSymbol?.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
+ mapValueTypeFullName = valueTypeSymbol?.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
+
+ }
+ else if (IsListType(ts, out ITypeSymbol? itemTypeSymbol))
+ {
+ isList = true;
+ listItemType = itemTypeSymbol?.Name;
+ listItemTypeFullName = itemTypeSymbol?.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
+ listItemTypeNamespace = itemTypeSymbol?.ContainingNamespace?.IsGlobalNamespace == false ?
+ itemTypeSymbol.ContainingNamespace.ToDisplayString() : null;
+ isListItemTypeOpenGeneric = (itemTypeSymbol?.TypeKind == TypeKind.TypeParameter) ||
+ (itemTypeSymbol is INamedTypeSymbol namedItemType &&
+ namedItemType.IsGenericType &&
+ namedItemType.TypeArguments.Any(ta => ta.TypeKind == TypeKind.TypeParameter));
+ }
+ }
+
+ yield return new SerializablePropertyMetadata(
+ propertyName,
+ propertyType,
+ propertyTypeFullName,
+ propertyTypeNamespace,
+ isList,
+ isMap,
+ listItemType,
+ listItemTypeFullName,
+ listItemTypeNamespace,
+ isListItemTypeOpenGeneric,
+ isMapKeyTypeOpenGeneric,
+ isMapValueTypeOpenGeneric,
+ mapKeyType,
+ mapValueType,
+ mapKeyTypeFullName,
+ mapValueTypeFullName,
+ mapKeyTypeNamespace,
+ mapValueTypeNamespace,
+ isNullable,
+ size,
+ isIndefinite,
+ order,
+ stringKey,
+ intKey,
+ isOpenGeneric
+ );
+ }
+ }
+
+ private static void GetCborPropertyKey(SyntaxNode node, SemanticModel semanticModel, out string? stringKey, out int? intKey)
+ {
+ stringKey = null;
+ intKey = null;
+
+ ISymbol? symbol = semanticModel.GetDeclaredSymbol(node);
+ AttributeData? attribute = symbol?.GetAttributes()
+ .FirstOrDefault(a => a.AttributeClass?.Name == Parser.CborProperty ||
+ a.AttributeClass?.Name == Parser.CborPropertyAttribute);
+
+ if (attribute?.ConstructorArguments.FirstOrDefault() is TypedConstant arg)
+ {
+ if (arg.Kind == TypedConstantKind.Primitive && arg.Value is int intValue)
+ {
+ intKey = intValue;
+ }
+ else if (arg.Kind == TypedConstantKind.Primitive && arg.Value is string stringValue)
+ {
+ stringKey = stringValue;
+ }
+ }
+ }
+
+ private static IEnumerable GetChildTypes(TypeDeclarationSyntax tds, SemanticModel model)
+ {
+ if (model.GetDeclaredSymbol(tds) is not INamedTypeSymbol typeSymbol) return [];
+
+ IEnumerable derivedTypes = FindDerivedTypes(typeSymbol, model.Compilation);
+ Dictionary resultDict = new();
+
+ // Process nested types
+ foreach (TypeDeclarationSyntax nestedType in tds.DescendantNodes().OfType())
+ {
+ if (Parser.ParseSerialazableType(nestedType, model) is SerializableTypeMetadata metadata)
+ {
+ if (!resultDict.ContainsKey(metadata.FullyQualifiedName))
+ resultDict[metadata.FullyQualifiedName] = metadata;
+ }
+ }
+
+ // Process derived types
+ foreach (INamedTypeSymbol derivedType in derivedTypes)
+ {
+ SyntaxReference? syntaxRef = derivedType.DeclaringSyntaxReferences.FirstOrDefault();
+ if (syntaxRef?.GetSyntax() is TypeDeclarationSyntax derivedTypeSyntax)
+ {
+ SemanticModel derivedTypeModel = model;
+ if (syntaxRef.SyntaxTree != model.SyntaxTree)
+ derivedTypeModel = model.Compilation.GetSemanticModel(syntaxRef.SyntaxTree);
+
+ if (Parser.ParseSerialazableType(derivedTypeSyntax, derivedTypeModel) is SerializableTypeMetadata metadata)
+ {
+ if (!resultDict.ContainsKey(metadata.FullyQualifiedName))
+ resultDict[metadata.FullyQualifiedName] = metadata;
+ }
+ }
+ }
+
+ return resultDict.Values;
+ }
+
+ private static IEnumerable FindDerivedTypes(INamedTypeSymbol baseType, Compilation compilation)
+ {
+ return compilation
+ .GetSymbolsWithName(name => true, SymbolFilter.Type)
+ .OfType()
+ .Where(type => !SymbolEqualityComparer.Default.Equals(type, baseType) && type.BaseType != null && ImplementsOrInheritsFrom(type, baseType)
+ );
+ }
+
+ private static bool ImplementsOrInheritsFrom(INamedTypeSymbol type, INamedTypeSymbol baseType)
+ {
+ if (baseType.TypeKind == TypeKind.Interface)
+ {
+ return type.AllInterfaces.Any(i =>
+ SymbolEqualityComparer.Default.Equals(i.OriginalDefinition, baseType.OriginalDefinition));
+ }
+ else
+ {
+ INamedTypeSymbol? currentType = type;
+ while (currentType != null)
+ {
+ if (SymbolEqualityComparer.Default.Equals(currentType.OriginalDefinition, baseType.OriginalDefinition))
+ return true;
+
+ currentType = currentType.BaseType;
+ }
+ }
+
+ return false;
+ }
+
+ private static bool IsListType(ITypeSymbol? typeSymbol, out ITypeSymbol? itemType)
+ {
+ itemType = null;
+
+ if (typeSymbol is IArrayTypeSymbol arrayType)
+ {
+ itemType = arrayType.ElementType;
+ return true;
+ }
+
+ if (typeSymbol is INamedTypeSymbol namedType && namedType.SpecialType != SpecialType.System_String)
+ {
+ foreach (INamedTypeSymbol iface in namedType.AllInterfaces)
+ {
+ if (iface.OriginalDefinition.ToDisplayString() == "System.Collections.Generic.IEnumerable")
+ {
+ itemType = iface.TypeArguments[0];
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ private static bool IsMapType(ITypeSymbol typeSymbol, out ITypeSymbol? keyType, out ITypeSymbol? valueType)
+ {
+ keyType = null;
+ valueType = null;
+
+ if (typeSymbol is INamedTypeSymbol namedType)
+ {
+ foreach (INamedTypeSymbol iface in namedType.AllInterfaces)
+ {
+ if (iface.OriginalDefinition.ToDisplayString() == "System.Collections.Generic.IDictionary")
+ {
+ keyType = iface.TypeArguments[0];
+ valueType = iface.TypeArguments[1];
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ private static (string path, string typeParams) GetFullNamespaceWithParentsAndTypeParams(TypeDeclarationSyntax typeDecl, SemanticModel model)
+ {
+ if (model.GetDeclaredSymbol(typeDecl) is INamedTypeSymbol symbol)
+ {
+ if (symbol.ContainingType != null)
+ {
+ string containerName = symbol.ContainingType.ToDisplayString();
+
+ string parentTypeParams = "";
+ if (symbol.ContainingType.TypeParameters.Length > 0)
+ {
+ parentTypeParams = "<" + string.Join(", ", symbol.ContainingType.TypeParameters.Select(tp => tp.Name)) + ">";
+ }
+
+ return (containerName, parentTypeParams);
+ }
+
+ return (symbol.ContainingNamespace.ToDisplayString(), "");
+ }
+
+ return (typeDecl.GetNamespace() ?? string.Empty, "");
+ }
+ private static string GetBaseNamespace(TypeDeclarationSyntax typeDecl, SemanticModel model)
+ {
+ if (model.GetDeclaredSymbol(typeDecl) is INamedTypeSymbol symbol)
+ {
+ return symbol.ContainingNamespace.ToDisplayString();
+ }
+
+ return typeDecl.GetNamespace() ?? string.Empty;
+ }
+
+ private static string RemoveGenericPart(string identifier)
+ {
+ int angleBracketIndex = identifier.IndexOf('<');
+ if (angleBracketIndex > 0)
+ {
+ return identifier.Substring(0, angleBracketIndex).Trim();
+ }
+ return identifier.Trim();
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.ReadEmitter.cs b/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.ReadEmitter.cs
new file mode 100644
index 00000000..d26852b2
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.ReadEmitter.cs
@@ -0,0 +1,353 @@
+using System.Text;
+
+namespace Chrysalis.Cbor.CodeGen;
+
+public sealed partial class CborSerializerCodeGen
+{
+ private static partial class Emitter
+ {
+ public static StringBuilder EmitSerializableTypeReader(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ sb.AppendLine($"public static new {metadata.FullyQualifiedName} Read(ReadOnlyMemory data)");
+ sb.AppendLine("{");
+ ICborSerializerEmitter emitter = GetEmitter(metadata);
+ emitter.EmitReader(sb, metadata);
+ sb.AppendLine("}");
+
+ return sb;
+ }
+
+ public static StringBuilder EmitSerializablePropertyReader(StringBuilder sb, SerializablePropertyMetadata metadata, string propertyName, bool isList = false)
+ {
+ sb.AppendLine($"{metadata.PropertyTypeFullName} {propertyName} = default{(metadata.PropertyType.Contains("?") ? "" : "!")};");
+
+ if (isList)
+ {
+ sb.AppendLine($"if (reader.PeekState() != CborReaderState.EndArray)");
+ sb.AppendLine("{");
+ }
+
+ if (metadata.IsNullable)
+ {
+ sb.AppendLine($"if (reader.PeekState() == CborReaderState.Null)");
+ sb.AppendLine("{");
+ sb.AppendLine($"reader.ReadNull();");
+ sb.AppendLine($"{propertyName} = null;");
+ sb.AppendLine("}");
+ sb.AppendLine($"else");
+ sb.AppendLine("{");
+ }
+
+ EmitPrimitiveOrObjectReader(sb, metadata, propertyName);
+
+ if (metadata.IsNullable) sb.AppendLine("}");
+ if (isList)
+ {
+ sb.AppendLine("}");
+ }
+
+ sb.AppendLine();
+
+ return sb;
+ }
+
+ public static StringBuilder EmitPrimitivePropertyReader(StringBuilder sb, string type, string propertyName)
+ {
+ type = type.Replace("?", "");
+ switch (type)
+ {
+ case "bool":
+ sb.AppendLine($"{propertyName} = reader.ReadBoolean();");
+ break;
+ case "int":
+ sb.AppendLine($"{propertyName} = reader.ReadInt32();");
+ break;
+ case "uint":
+ sb.AppendLine($"{propertyName} = reader.ReadUInt32();");
+ break;
+ case "long":
+ sb.AppendLine($"{propertyName} = reader.ReadInt64();");
+ break;
+ case "ulong":
+ sb.AppendLine($"{propertyName} = reader.ReadUInt64();");
+ break;
+ case "float":
+ sb.AppendLine($"{propertyName} = reader.ReadSingle();");
+ break;
+ case "double":
+ sb.AppendLine($"{propertyName} = reader.ReadDouble();");
+ break;
+ case "decimal":
+ sb.AppendLine($"{propertyName} = reader.ReadDecimal();");
+ break;
+ case "string":
+ sb.AppendLine($"{propertyName} = reader.ReadTextString();");
+ break;
+ case "byte[]?":
+ case "byte[]":
+ sb.AppendLine($"if (reader.PeekState() == CborReaderState.StartIndefiniteLengthByteString)");
+ sb.AppendLine("{");
+ sb.AppendLine(" reader.ReadStartIndefiniteLengthByteString();");
+ sb.AppendLine(" using (var stream = new MemoryStream())");
+ sb.AppendLine(" {");
+ sb.AppendLine(" while (reader.PeekState() != CborReaderState.EndIndefiniteLengthByteString)");
+ sb.AppendLine(" {");
+ sb.AppendLine(" byte[] chunk = reader.ReadByteString();");
+ sb.AppendLine(" stream.Write(chunk, 0, chunk.Length);");
+ sb.AppendLine(" }");
+ sb.AppendLine(" reader.ReadEndIndefiniteLengthByteString();");
+ sb.AppendLine($" {propertyName} = stream.ToArray();");
+ sb.AppendLine(" }");
+ sb.AppendLine("}");
+ sb.AppendLine("else");
+ sb.AppendLine("{");
+ sb.AppendLine($" {propertyName} = reader.ReadByteString();");
+ sb.AppendLine("}");
+
+ break;
+ case "CborEncodedValue":
+ case "Chrysalis.Cbor.Types.Primitives.CborEncodedValue":
+ case "global::Chrysalis.Cbor.Types.Primitives.CborEncodedValue":
+ sb.AppendLine($"{propertyName} = new {CborEncodeValueFullName}(reader.ReadEncodedValue(true).ToArray());");
+ break;
+ }
+
+ return sb;
+ }
+
+ public static StringBuilder EmitObjectPropertyReader(StringBuilder sb, SerializablePropertyMetadata metadata, string propertyName)
+ {
+ if (metadata.IsList)
+ {
+ if (metadata.ListItemTypeFullName is null || metadata.ListItemType is null)
+ {
+ throw new InvalidOperationException($"List item type is null for property {metadata.PropertyName}");
+ }
+
+ sb.AppendLine($"{metadata.ListItemTypeFullName} {propertyName}TempItem = default;");
+ sb.AppendLine($"List<{metadata.ListItemTypeFullName}> {propertyName}TempList = new();");
+ sb.AppendLine($"reader.ReadStartArray();");
+ sb.AppendLine($"while (reader.PeekState() != CborReaderState.EndArray)");
+ sb.AppendLine("{");
+
+ if (metadata.IsListItemTypeOpenGeneric)
+ {
+ EmitGenericWithTypeParamsReader(sb, metadata.ListItemType, $"{propertyName}TempItem");
+ }
+ else
+ {
+ if (IsPrimitiveType(metadata.ListItemTypeFullName))
+ {
+ EmitPrimitivePropertyReader(sb, metadata.ListItemTypeFullName, $"{propertyName}TempItem");
+ }
+ else
+ {
+ // @TODO: Handle nested lists/maps, right now we are assuming that the list item type is a class
+ sb.AppendLine($"{propertyName}TempItem = ({metadata.ListItemTypeFullName}){metadata.ListItemTypeFullName}.Read(reader.ReadEncodedValue(true));");
+ }
+ }
+
+ sb.AppendLine($"{propertyName}TempList.Add({propertyName}TempItem);");
+
+ sb.AppendLine("}");
+ sb.AppendLine($"reader.ReadEndArray();");
+ sb.AppendLine($"{propertyName} = {propertyName}TempList;");
+
+ return sb;
+ }
+
+ if (metadata.IsMap)
+ {
+ if (metadata.MapKeyTypeFullName is null || metadata.MapValueTypeFullName is null)
+ {
+ throw new InvalidOperationException($"Map key or value type is null for property {metadata.PropertyName}");
+ }
+
+ sb.AppendLine($"Dictionary<{metadata.MapKeyTypeFullName}, {metadata.MapValueTypeFullName}> {propertyName}TempMap = new();");
+ sb.AppendLine($"{metadata.MapKeyTypeFullName} {propertyName}TempKeyItem = default;");
+ sb.AppendLine($"{metadata.MapValueTypeFullName} {propertyName}TempValueItem = default;");
+ sb.AppendLine($"reader.ReadStartMap();");
+ sb.AppendLine($"while (reader.PeekState() != CborReaderState.EndMap)");
+ sb.AppendLine("{");
+
+ if (metadata.IsMapKeyTypeOpenGeneric)
+ {
+ EmitGenericWithTypeParamsReader(sb, metadata.MapKeyTypeFullName, $"{propertyName}TempKeyItem");
+ }
+ else
+ {
+ if (IsPrimitiveType(metadata.MapKeyTypeFullName))
+ {
+ EmitPrimitivePropertyReader(sb, metadata.MapKeyTypeFullName, $"{propertyName}TempKeyItem");
+ }
+ else
+ {
+ // @TODO: Handle nested lists/maps, right now we are assuming that the map key item type is a class
+ sb.AppendLine($"{propertyName}TempKeyItem = ({metadata.MapKeyTypeFullName}){metadata.MapKeyTypeFullName}.Read(reader.ReadEncodedValue(true));");
+ }
+ }
+
+ if (metadata.IsMapValueTypeOpenGeneric)
+ {
+ EmitGenericWithTypeParamsReader(sb, metadata.MapValueTypeFullName, $"{propertyName}TempValueItem");
+ }
+ else
+ {
+ if (IsPrimitiveType(metadata.MapValueTypeFullName))
+ {
+ EmitPrimitivePropertyReader(sb, metadata.MapValueTypeFullName, $"{propertyName}TempValueItem");
+ }
+ else
+ {
+ // @TODO: Handle nested lists/maps, right now we are assuming that the map value item type is a class
+ sb.AppendLine($"{propertyName}TempValueItem = ({metadata.MapValueTypeFullName}){metadata.MapValueTypeFullName}.Read(reader.ReadEncodedValue(true));");
+ }
+ }
+
+ sb.AppendLine($"if (!{propertyName}TempMap.ContainsKey({propertyName}TempKeyItem))");
+ sb.AppendLine("{");
+ sb.AppendLine($"{propertyName}TempMap.Add({propertyName}TempKeyItem, {propertyName}TempValueItem);");
+ sb.AppendLine("}");
+
+ sb.AppendLine("}");
+ sb.AppendLine($"reader.ReadEndMap();");
+ sb.AppendLine($"{propertyName} = {propertyName}TempMap;");
+
+ return sb;
+ }
+
+ if (metadata.IsOpenGeneric)
+ {
+ EmitGenericWithTypeParamsReader(sb, metadata.PropertyTypeFullName, propertyName);
+ }
+ else
+ {
+ sb.AppendLine($"{propertyName} = ({metadata.PropertyTypeFullName}){metadata.PropertyTypeFullName}.Read(reader.ReadEncodedValue(true));");
+ }
+ return sb;
+ }
+
+ public static StringBuilder EmitCborReaderInstance(StringBuilder sb, string dataName)
+ {
+ sb.AppendLine($"var reader = new CborReader({dataName}, CborConformanceMode.Lax);");
+ return sb;
+ }
+
+ public static StringBuilder EmitTagReader(StringBuilder sb, int? tag, string propertyName)
+ {
+ if (tag.HasValue)
+ {
+ if (tag.Value == -1)
+ {
+ sb.AppendLine("reader.ReadTag();");
+ }
+ else
+ {
+ sb.AppendLine($"var {propertyName} = (int)reader.ReadTag();");
+ sb.AppendLine($"if ({propertyName} != {tag}) throw new Exception(\"Invalid tag\");");
+ }
+ }
+
+ return sb;
+ }
+
+ public static StringBuilder EmitSerializableTypeValidatorReader(StringBuilder sb, SerializableTypeMetadata metadata, string propertyName)
+ {
+ if (metadata.Validator is not null)
+ {
+ sb.AppendLine($"{metadata.Validator} validator = new();");
+ sb.AppendLine($"if (!validator.Validate({propertyName})) throw new Exception(\"Validation failed\");");
+ }
+
+ return sb;
+ }
+
+ public static StringBuilder EmitGenericWithTypeParamsReader(StringBuilder sb, string type, string propertyName)
+ {
+ sb.AppendLine($"{propertyName} = {GenericSerializationUtilFullname}.Read<{type}>(reader);");
+ return sb;
+ }
+
+ public static StringBuilder EmitGenericReader(StringBuilder sb, string type, string propertyName)
+ {
+ sb.AppendLine($"{propertyName} = {GenericSerializationUtilFullname}.Read(reader, {type});");
+ return sb;
+ }
+
+ public static StringBuilder EmitPrimitiveOrObjectReader(StringBuilder sb, SerializablePropertyMetadata metadata, string propertyName)
+ {
+ string cleanPropertyType = metadata.PropertyType.Replace("?", "");
+ if (metadata.IsOpenGeneric)
+ {
+ EmitGenericWithTypeParamsReader(sb, metadata.PropertyType, propertyName);
+ }
+ else
+ {
+ if (IsPrimitiveType(cleanPropertyType))
+ {
+ EmitPrimitivePropertyReader(sb, metadata.PropertyType, propertyName);
+ }
+ else
+ {
+ EmitObjectPropertyReader(sb, metadata, propertyName);
+ }
+ }
+
+ return sb;
+ }
+
+ public static StringBuilder EmitCustomListReader(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ Dictionary propMapping = [];
+
+ if (!(metadata.SerializationType == SerializationType.Constr && (metadata.CborIndex is null || metadata.CborIndex < 0)))
+ {
+ sb.AppendLine("reader.ReadStartArray();");
+ }
+
+ foreach (SerializablePropertyMetadata prop in metadata.Properties)
+ {
+ string propName = $"{metadata.BaseIdentifier}{prop.PropertyName}";
+ propMapping.Add(prop.PropertyName, propName);
+ EmitSerializablePropertyReader(sb, prop, propName, true);
+ }
+
+ if (metadata.SerializationType == SerializationType.Constr && metadata.CborIndex is not null && metadata.CborIndex >= 0)
+ {
+ sb.AppendLine("reader.ReadEndArray();");
+ }
+
+ sb.AppendLine($"{metadata.FullyQualifiedName} result;");
+
+ if (metadata.Properties.Count == 0)
+ {
+ sb.AppendLine($"result = new {metadata.FullyQualifiedName}();");
+ }
+ else
+ {
+ sb.AppendLine($"result = new {metadata.FullyQualifiedName}(");
+ IOrderedEnumerable properties = metadata.Properties.OrderBy(p => p.Order);
+ IEnumerable propStrings = properties.Select(prop => propMapping[prop.PropertyName]);
+ sb.AppendLine(string.Join(",\n", propStrings));
+ sb.AppendLine(");");
+ }
+
+ EmitReaderValidationAndResult(sb, metadata, "result");
+
+ return sb;
+ }
+
+ public static StringBuilder EmitReaderValidationAndResult(StringBuilder sb, SerializableTypeMetadata metadata, string resultName)
+ {
+ EmitSerializableTypeValidatorReader(sb, metadata, resultName);
+
+ if (metadata.ShouldPreserveRaw)
+ {
+ sb.AppendLine($"{resultName}.Raw = data;");
+ }
+
+ sb.AppendLine($"return {resultName};");
+ return sb;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.WriteEmitter.cs b/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.WriteEmitter.cs
new file mode 100644
index 00000000..2341afbd
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.WriteEmitter.cs
@@ -0,0 +1,365 @@
+using System.Text;
+
+namespace Chrysalis.Cbor.CodeGen;
+
+public sealed partial class CborSerializerCodeGen
+{
+ private static partial class Emitter
+ {
+ public static StringBuilder EmitSerializableTypeWriter(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ sb.AppendLine($"public static new void Write(CborWriter writer, {metadata.FullyQualifiedName} data)");
+ sb.AppendLine("{");
+ ICborSerializerEmitter emitter = GetEmitter(metadata);
+ emitter.EmitWriter(sb, metadata);
+ sb.AppendLine("}");
+
+ return sb;
+ }
+
+ public static StringBuilder EmitSerializablePropertyWriter(StringBuilder sb, SerializablePropertyMetadata metadata)
+ {
+ string propertyName = $"data.{metadata.PropertyName}";
+ if (metadata.IsNullable)
+ {
+ sb.AppendLine($"if ({propertyName} is null)");
+ sb.AppendLine("{");
+ sb.AppendLine($"writer.WriteNull();");
+ sb.AppendLine("}");
+ sb.AppendLine($"else");
+ sb.AppendLine("{");
+ }
+
+ if (metadata.IsTypeNullable)
+ {
+ sb.AppendLine($"if ({propertyName} is not null)");
+ sb.AppendLine("{");
+ EmitPrimitiveOrObjectWriter(sb, metadata, propertyName);
+ sb.AppendLine("}");
+ }
+ else
+ {
+ EmitPrimitiveOrObjectWriter(sb, metadata, propertyName);
+ }
+
+ if (metadata.IsNullable) sb.AppendLine("}");
+
+ sb.AppendLine();
+
+ return sb;
+ }
+
+ public static StringBuilder EmitPrimitivePropertyWriter(StringBuilder sb, string type, string propertyName, int? size = null)
+ {
+ bool isNullable = type.Contains("?");
+ type = type.Replace("?", "");
+ switch (type)
+ {
+ case "bool":
+ sb.AppendLine(isNullable
+ ? $"writer.WriteBoolean({propertyName}.Value);"
+ : $"writer.WriteBoolean({propertyName});");
+ break;
+ case "int":
+ sb.AppendLine(isNullable
+ ? $"writer.WriteInt32({propertyName}.Value);"
+ : $"writer.WriteInt32({propertyName});");
+ break;
+ case "uint":
+ sb.AppendLine(isNullable
+ ? $"writer.WriteUInt32({propertyName}.Value);"
+ : $"writer.WriteUInt32({propertyName});");
+ break;
+ case "long":
+ sb.AppendLine(isNullable
+ ? $"writer.WriteInt64({propertyName}.Value);"
+ : $"writer.WriteInt64({propertyName});");
+ break;
+ case "ulong":
+ sb.AppendLine(isNullable
+ ? $"writer.WriteUInt64({propertyName}.Value);"
+ : $"writer.WriteUInt64({propertyName});");
+ break;
+ case "float":
+ sb.AppendLine(isNullable
+ ? $"writer.WriteSingle({propertyName}.Value);"
+ : $"writer.WriteSingle({propertyName});");
+ break;
+ case "double":
+ sb.AppendLine(isNullable
+ ? $"writer.WriteDouble({propertyName}.Value);"
+ : $"writer.WriteDouble({propertyName});");
+ break;
+ case "decimal":
+ sb.AppendLine(isNullable
+ ? $"writer.WriteDecimal({propertyName}.Value);"
+ : $"writer.WriteDecimal({propertyName});");
+ break;
+ case "string":
+ sb.AppendLine($"writer.WriteTextString({propertyName});");
+ break;
+ case "byte[]?":
+ case "byte[]":
+ if (size is not null)
+ {
+ sb.AppendLine($"if ({propertyName}.Length > {size})");
+ sb.AppendLine("{");
+ sb.AppendLine($"writer.WriteStartIndefiniteLengthByteString();");
+ sb.AppendLine($"var {propertyName.Replace(".", "")}Chunks = {propertyName}.Chunk({size});");
+ sb.AppendLine($"foreach (var chunk in {propertyName.Replace(".", "")}Chunks)");
+ sb.AppendLine("{");
+ sb.AppendLine($"writer.WriteByteString(chunk);");
+ sb.AppendLine("}");
+ sb.AppendLine($"writer.WriteEndIndefiniteLengthByteString();");
+ sb.AppendLine("}");
+ sb.AppendLine("else");
+ sb.AppendLine("{");
+ sb.AppendLine($"writer.WriteByteString({propertyName});");
+ sb.AppendLine("}");
+ }
+ else
+ {
+ sb.AppendLine($"writer.WriteByteString({propertyName});");
+ }
+
+ break;
+ case "CborEncodedValue":
+ case "Chrysalis.Cbor.Types.Primitives.CborEncodedValue":
+ case "global::Chrysalis.Cbor.Types.Primitives.CborEncodedValue":
+ sb.AppendLine("writer.WriteTag(CborTag.EncodedCborDataItem);");
+ sb.AppendLine($"writer.WriteByteString({propertyName}.Value);");
+ break;
+ }
+
+ return sb;
+ }
+
+ public static StringBuilder EmitObjectPropertyWriter(StringBuilder sb, SerializablePropertyMetadata metadata, string propertyName)
+ {
+ if (metadata.IsList)
+ {
+ if (metadata.ListItemTypeFullName is null || metadata.ListItemType is null)
+ {
+ throw new InvalidOperationException($"List item type is null for property {metadata.PropertyName}");
+ }
+
+ if (metadata.IsIndefinite)
+ {
+ sb.AppendLine($"writer.WriteStartArray(null);");
+ }
+ else
+ {
+ sb.AppendLine($"writer.WriteStartArray({propertyName}.Count());");
+ }
+
+ sb.AppendLine($"foreach (var item in {propertyName})");
+ sb.AppendLine("{");
+ if (metadata.IsListItemTypeOpenGeneric)
+ {
+ EmitGenericWithTypeParamsWriter(sb, metadata.ListItemType, $"item");
+ }
+ else
+ {
+ if (IsPrimitiveType(metadata.ListItemTypeFullName))
+ {
+ EmitPrimitivePropertyWriter(sb, metadata.ListItemTypeFullName, "item");
+ }
+ else
+ {
+ sb.AppendLine($"{metadata.ListItemTypeFullName}.Write(writer, item);");
+ }
+ }
+
+
+ sb.AppendLine("}");
+ sb.AppendLine($"writer.WriteEndArray();");
+
+ return sb;
+ }
+
+ if (metadata.IsMap)
+ {
+ if (metadata.MapKeyTypeFullName is null || metadata.MapValueTypeFullName is null)
+ {
+ throw new InvalidOperationException($"Map key or value type is null for property {metadata.PropertyName}");
+ }
+
+ if (metadata.IsIndefinite)
+ {
+ sb.AppendLine($"writer.WriteStartMap(null);");
+ }
+ else
+ {
+ sb.AppendLine($"writer.WriteStartMap({propertyName}.Count());");
+ }
+
+ sb.AppendLine($"foreach (var kvp in {propertyName})");
+ sb.AppendLine("{");
+
+ if (metadata.IsMapKeyTypeOpenGeneric)
+ {
+ EmitGenericWithTypeParamsWriter(sb, metadata.MapKeyTypeFullName, $"kvp.Key");
+ }
+ else
+ {
+ if (IsPrimitiveType(metadata.MapKeyTypeFullName))
+ {
+ EmitPrimitivePropertyWriter(sb, metadata.MapKeyTypeFullName, $"kvp.Key");
+ }
+ else
+ {
+ sb.AppendLine($"{metadata.MapKeyTypeFullName}.Write(writer, kvp.Key);");
+ }
+ }
+
+ if (metadata.IsMapValueTypeOpenGeneric)
+ {
+ EmitGenericWithTypeParamsWriter(sb, metadata.MapValueTypeFullName, $"kvp.Value");
+ }
+ else
+ {
+ if (IsPrimitiveType(metadata.MapValueTypeFullName))
+ {
+ EmitPrimitivePropertyWriter(sb, metadata.MapValueTypeFullName, $"kvp.Value");
+ }
+ else
+ {
+ sb.AppendLine($"{metadata.MapValueTypeFullName}.Write(writer, kvp.Value);");
+ }
+ }
+
+ sb.AppendLine("}");
+ sb.AppendLine($"writer.WriteEndMap();");
+ return sb;
+ }
+
+ if (metadata.IsOpenGeneric)
+ {
+ EmitGenericWithTypeParamsWriter(sb, metadata.PropertyTypeFullName, propertyName);
+ }
+ else
+ {
+ sb.AppendLine($"{metadata.PropertyTypeFullName}.Write(writer, {propertyName});");
+ }
+
+ return sb;
+ }
+
+ public static StringBuilder EmitTagWriter(StringBuilder sb, int? tag)
+ {
+ if (tag.HasValue && tag.Value >= 0)
+ {
+ sb.AppendLine($"writer.WriteTag((CborTag){tag});");
+ }
+
+ return sb;
+ }
+
+ public static StringBuilder EmitSerializableTypeValidatorWriter(StringBuilder sb, SerializableTypeMetadata metadata, string propertyName)
+ {
+ if (metadata.Validator is not null)
+ {
+ sb.AppendLine($"{metadata.Validator} validator = new();");
+ sb.AppendLine($"if (!validator.Validate({propertyName})) throw new Exception(\"Validation failed\");");
+ }
+
+ return sb;
+ }
+
+ public static StringBuilder EmitGenericWithTypeParamsWriter(StringBuilder sb, string type, string propertyName)
+ {
+ sb.AppendLine($"{GenericSerializationUtilFullname}.Write<{type}>(writer, {propertyName});");
+ return sb;
+ }
+
+ public static StringBuilder EmitGenericWriter(StringBuilder sb, string type, string propertyName)
+ {
+ sb.AppendLine($"{GenericSerializationUtilFullname}.Write(writer, {type});");
+ return sb;
+ }
+
+ public static StringBuilder EmitPrimitiveOrObjectWriter(StringBuilder sb, SerializablePropertyMetadata metadata, string propertyName)
+ {
+ if (metadata.IsOpenGeneric)
+ {
+ EmitGenericWithTypeParamsWriter(sb, metadata.PropertyType, propertyName);
+ }
+ else
+ {
+ if (IsPrimitiveType(metadata.PropertyType))
+ {
+ EmitPrimitivePropertyWriter(sb, metadata.PropertyType, propertyName, metadata.Size);
+ }
+ else
+ {
+ EmitObjectPropertyWriter(sb, metadata, propertyName);
+ }
+ }
+
+ return sb;
+ }
+
+ public static StringBuilder EmitCustomListWriter(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ EmitPropertyCountWriter(sb, metadata);
+ if (!(metadata.SerializationType == SerializationType.Constr && (metadata.CborIndex is null || metadata.CborIndex < 0)))
+ {
+ sb.AppendLine($"writer.WriteStartArray(propCount);");
+ }
+
+ foreach (SerializablePropertyMetadata prop in metadata.Properties)
+ {
+ EmitSerializablePropertyWriter(sb, prop);
+ }
+
+ if (!(metadata.SerializationType == SerializationType.Constr && (metadata.CborIndex is null || metadata.CborIndex < 0)))
+ {
+ sb.AppendLine($"writer.WriteEndArray();");
+ }
+
+ return sb;
+ }
+
+ public static StringBuilder EmitWriterValidation(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ if (metadata.Validator is not null)
+ {
+ sb.AppendLine($"{metadata.Validator} validator = new();");
+ sb.AppendLine($"if (!validator.Validate(data)) throw new Exception(\"Validation failed\");");
+ }
+
+ return sb;
+ }
+
+ public static StringBuilder EmitPreservedRawWriter(StringBuilder sb)
+ {
+ sb.AppendLine($"if (data.Raw is not null)");
+ sb.AppendLine("{");
+ sb.AppendLine($"writer.WriteByteString(data.Raw?.ToArray());");
+ sb.AppendLine("return;");
+ sb.AppendLine("}");
+ return sb;
+ }
+
+ public static StringBuilder EmitPropertyCountWriter(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ sb.AppendLine($"int propCount = 0;");
+
+ foreach (SerializablePropertyMetadata prop in metadata.Properties)
+ {
+ if (prop.IsNullable || !prop.IsTypeNullable)
+ {
+ sb.AppendLine("propCount++;");
+ }
+ else
+ {
+ sb.AppendLine($"if (data.{prop.PropertyName} is not null) propCount++;");
+ }
+ }
+
+ sb.AppendLine();
+
+ return sb;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.cs b/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.cs
new file mode 100644
index 00000000..40d46450
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/CborSerializerCodeGen.cs
@@ -0,0 +1,40 @@
+using System.Collections.Immutable;
+using System.Text;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+
+namespace Chrysalis.Cbor.CodeGen;
+
+[Generator]
+public sealed partial class CborSerializerCodeGen : IIncrementalGenerator
+{
+ public void Initialize(IncrementalGeneratorInitializationContext context)
+ {
+ IncrementalValueProvider> typeProvider = context.SyntaxProvider.CreateSyntaxProvider(
+ predicate: static (node, _) => node is TypeDeclarationSyntax tds && tds.AttributeLists.Count > 0,
+ transform: static (ctx, _) => (TypeDeclarationSyntax)ctx.Node
+ ).Collect();
+
+ IncrementalValueProvider<(Compilation, ImmutableArray)> combined = context.CompilationProvider.Combine(typeProvider);
+
+ context.RegisterSourceOutput(combined, EmitSerializersAndMetadata);
+ }
+
+ private static void EmitSerializersAndMetadata(SourceProductionContext context, (Compilation compilation, ImmutableArray types) source)
+ {
+ Compilation compilation = source.compilation;
+ ImmutableArray types = source.types;
+
+ foreach (TypeDeclarationSyntax type in types)
+ {
+ SemanticModel semanticModel = compilation.GetSemanticModel(type.SyntaxTree);
+ SerializableTypeMetadata? metadata = Parser.ParseSerialazableType(type, semanticModel);
+
+ if (metadata is not null)
+ {
+ Emitter.EmitSerializerAndMetadata(context, metadata);
+ }
+ }
+ }
+}
+
diff --git a/src/Chrysalis.Cbor.CodeGen/Chrysalis.Cbor.CodeGen.csproj b/src/Chrysalis.Cbor.CodeGen/Chrysalis.Cbor.CodeGen.csproj
new file mode 100644
index 00000000..a681508e
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/Chrysalis.Cbor.CodeGen.csproj
@@ -0,0 +1,25 @@
+
+
+
+ netstandard2.0
+ enable
+ enable
+ Latest
+ true
+
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Chrysalis.Cbor.CodeGen/Emitters/ConstructorEmitter.cs b/src/Chrysalis.Cbor.CodeGen/Emitters/ConstructorEmitter.cs
new file mode 100644
index 00000000..96553478
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/Emitters/ConstructorEmitter.cs
@@ -0,0 +1,40 @@
+using System.Text;
+
+namespace Chrysalis.Cbor.CodeGen;
+
+public sealed partial class CborSerializerCodeGen
+{
+ private class ConstructorEmitter : ICborSerializerEmitter
+ {
+ public StringBuilder EmitReader(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ int constrIndex = Emitter.ResolveTag(metadata.CborIndex);
+ Emitter.EmitCborReaderInstance(sb, "data");
+ Emitter.EmitTagReader(sb, metadata.CborTag, "tagIndex");
+ Emitter.EmitTagReader(sb, constrIndex, "constrIndex");
+ Emitter.EmitCustomListReader(sb, metadata);
+
+ return sb;
+ }
+
+ public StringBuilder EmitWriter(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ Emitter.EmitPreservedRawWriter(sb);
+ Emitter.EmitWriterValidation(sb, metadata);
+ Emitter.EmitTagWriter(sb, metadata.CborTag);
+
+ if (metadata.CborIndex is null || metadata.CborIndex < 0)
+ {
+ sb.AppendLine("writer.WriteTag((CborTag)data.ConstrIndex);");
+ }
+ else
+ {
+ sb.AppendLine($"writer.WriteTag((CborTag){Emitter.ResolveTag(metadata.CborIndex)});");
+ }
+
+ Emitter.EmitCustomListWriter(sb, metadata);
+
+ return sb;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.CodeGen/Emitters/ContainerEmitter.cs b/src/Chrysalis.Cbor.CodeGen/Emitters/ContainerEmitter.cs
new file mode 100644
index 00000000..03d78cfb
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/Emitters/ContainerEmitter.cs
@@ -0,0 +1,39 @@
+using System.Text;
+
+namespace Chrysalis.Cbor.CodeGen;
+
+public sealed partial class CborSerializerCodeGen
+{
+ private class ContainerEmitter : ICborSerializerEmitter
+ {
+ public StringBuilder EmitReader(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ if (metadata.Properties.Count > 1 || metadata.Properties.Count < 1)
+ throw new InvalidOperationException($"Container types must have exactly one property. {metadata.FullyQualifiedName}");
+
+ SerializablePropertyMetadata prop = metadata.Properties[0];
+ Emitter.EmitCborReaderInstance(sb, "data");
+ Emitter.EmitTagReader(sb, metadata.CborTag, "tagIndex");
+ string propName = $"{metadata.BaseIdentifier}{prop.PropertyName}";
+ Emitter.EmitSerializablePropertyReader(sb, prop, propName);
+ sb.AppendLine($"var result = new {metadata.FullyQualifiedName}({propName});");
+ Emitter.EmitReaderValidationAndResult(sb, metadata, "result");
+
+ return sb;
+ }
+
+ public StringBuilder EmitWriter(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ if (metadata.Properties.Count > 1 || metadata.Properties.Count < 1)
+ throw new InvalidOperationException($"Container types must have exactly one property. {metadata.FullyQualifiedName}");
+
+ Emitter.EmitPreservedRawWriter(sb);
+ Emitter.EmitWriterValidation(sb, metadata);
+ SerializablePropertyMetadata prop = metadata.Properties[0];
+ Emitter.EmitTagWriter(sb, metadata.CborTag);
+ Emitter.EmitSerializablePropertyWriter(sb, prop);
+
+ return sb;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.CodeGen/Emitters/ListEmitter.cs b/src/Chrysalis.Cbor.CodeGen/Emitters/ListEmitter.cs
new file mode 100644
index 00000000..e1279134
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/Emitters/ListEmitter.cs
@@ -0,0 +1,26 @@
+using System.Text;
+
+namespace Chrysalis.Cbor.CodeGen;
+
+public sealed partial class CborSerializerCodeGen
+{
+ private class ListEmitter : ICborSerializerEmitter
+ {
+ public StringBuilder EmitReader(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ Emitter.EmitCborReaderInstance(sb, "data");
+ Emitter.EmitTagReader(sb, metadata.CborTag, "tagIndex");
+ Emitter.EmitCustomListReader(sb, metadata);
+ return sb;
+ }
+
+ public StringBuilder EmitWriter(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ Emitter.EmitPreservedRawWriter(sb);
+ Emitter.EmitWriterValidation(sb, metadata);
+ Emitter.EmitTagWriter(sb, metadata.CborTag);
+ Emitter.EmitCustomListWriter(sb, metadata);
+ return sb;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.CodeGen/Emitters/MapEmitter.cs b/src/Chrysalis.Cbor.CodeGen/Emitters/MapEmitter.cs
new file mode 100644
index 00000000..d2cffa6f
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/Emitters/MapEmitter.cs
@@ -0,0 +1,91 @@
+using System.Text;
+
+namespace Chrysalis.Cbor.CodeGen;
+
+public sealed partial class CborSerializerCodeGen
+{
+ private class MapEmitter : ICborSerializerEmitter
+ {
+ public StringBuilder EmitReader(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ Emitter.EmitCborReaderInstance(sb, "data");
+ Emitter.EmitTagReader(sb, metadata.CborTag, "tagIndex");
+ bool isIntKey = metadata.Properties[0].PropertyKeyInt is not null;
+
+ sb.AppendLine($"Dictionary<{(isIntKey ? "int" : "string")}, object> resultMap = [];");
+ sb.AppendLine($"reader.ReadStartMap();");
+ sb.AppendLine("while (reader.PeekState() != CborReaderState.EndMap)");
+ sb.AppendLine("{");
+
+ if (isIntKey)
+ {
+ sb.AppendLine($"int key = reader.ReadInt32();");
+ }
+ else
+ {
+ sb.AppendLine($"string key = reader.ReadTextString();");
+ }
+
+ sb.AppendLine($"object value = null;");
+
+ Emitter.EmitGenericReader(sb, "TypeMapping[key]", "value");
+
+ sb.AppendLine($"resultMap.Add(key, value);");
+ sb.AppendLine("}");
+ sb.AppendLine($"reader.ReadEndMap();");
+ sb.AppendLine($"{metadata.FullyQualifiedName} result = new {metadata.FullyQualifiedName}(");
+
+ for (int i = 0; i < metadata.Properties.Count; i++)
+ {
+ SerializablePropertyMetadata prop = metadata.Properties[i];
+ string? key = isIntKey ? prop.PropertyKeyInt?.ToString() : prop.PropertyKeyString;
+
+ sb.Append($"resultMap.TryGetValue({key}, out var {prop.PropertyName}Value) ? ({prop.PropertyTypeFullName}){prop.PropertyName}Value : default");
+ sb.AppendLine($"{(i == metadata.Properties.Count - 1 ? "" : ",")}");
+ }
+
+ sb.AppendLine(");");
+
+ Emitter.EmitReaderValidationAndResult(sb, metadata, "result");
+ return sb;
+ }
+
+ public StringBuilder EmitWriter(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ Emitter.EmitPreservedRawWriter(sb);
+ Emitter.EmitWriterValidation(sb, metadata);
+ Emitter.EmitTagWriter(sb, metadata.CborTag);
+ Emitter.EmitPropertyCountWriter(sb, metadata);
+ bool isIntKey = metadata.Properties[0].PropertyKeyInt is not null;
+
+ sb.AppendLine($"writer.WriteStartMap(propCount);");
+ foreach (var prop in metadata.Properties)
+ {
+ if (prop.IsNullable)
+ {
+ sb.AppendLine($"{(isIntKey ? $"writer.WriteInt32(KeyMapping[\"{prop.PropertyName}\"])" : $"writer.WriteTextString(KeyMapping[\"{prop.PropertyName}\"])")};");
+ Emitter.EmitSerializablePropertyWriter(sb, prop);
+ }
+ else
+ {
+ if (prop.IsTypeNullable)
+ {
+ sb.AppendLine($"if (data.{prop.PropertyName} is not null)");
+ sb.AppendLine("{");
+ sb.AppendLine($"{(isIntKey ? $"writer.WriteInt32(KeyMapping[\"{prop.PropertyName}\"])" : $"writer.WriteTextString(KeyMapping[\"{prop.PropertyName}\"])")};");
+ Emitter.EmitSerializablePropertyWriter(sb, prop);
+ sb.AppendLine("}");
+ }
+ else
+ {
+ sb.AppendLine($"{(isIntKey ? $"writer.WriteInt32(KeyMapping[\"{prop.PropertyName}\"])" : $"writer.WriteTextString(KeyMapping[\"{prop.PropertyName}\"])")};");
+ Emitter.EmitSerializablePropertyWriter(sb, prop);
+ }
+ }
+ }
+ sb.AppendLine($"writer.WriteEndMap();");
+
+ return sb;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.CodeGen/Emitters/UnionEmitter.cs b/src/Chrysalis.Cbor.CodeGen/Emitters/UnionEmitter.cs
new file mode 100644
index 00000000..024b60ed
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/Emitters/UnionEmitter.cs
@@ -0,0 +1,45 @@
+using System.Text;
+
+namespace Chrysalis.Cbor.CodeGen;
+
+public sealed partial class CborSerializerCodeGen
+{
+ private class UnionEmitter : ICborSerializerEmitter
+ {
+ public StringBuilder EmitReader(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ sb.AppendLine($"List errors = [];");
+ foreach (var childType in metadata.ChildTypes)
+ {
+ sb.AppendLine($"try");
+ sb.AppendLine("{");
+ sb.AppendLine($"return ({metadata.FullyQualifiedName}){childType.FullyQualifiedName}.Read(data);");
+ sb.AppendLine("}");
+ sb.AppendLine($"catch (Exception ex)");
+ sb.AppendLine("{");
+ sb.AppendLine($"errors.Add(ex.Message);");
+ sb.AppendLine("}");
+ }
+
+ sb.AppendLine($"throw new Exception(\"Union deserialization failed. {metadata.FullyQualifiedName} \" + string.Join(\"\\n\", errors));");
+
+ return sb;
+ }
+
+ public StringBuilder EmitWriter(StringBuilder sb, SerializableTypeMetadata metadata)
+ {
+ sb.AppendLine("switch (data.CborTypeName)");
+ sb.AppendLine("{");
+ foreach (var childType in metadata.ChildTypes)
+ {
+ sb.AppendLine($"case \"{childType.FullyQualifiedName}\":");
+ sb.AppendLine($"{childType.FullyQualifiedName}.Write(writer, ({childType.FullyQualifiedName})data);");
+ sb.AppendLine($"break;");
+ }
+ sb.AppendLine($"default:");
+ sb.AppendLine($"throw new Exception(\"Union serialization failed. {metadata.FullyQualifiedName} \");");
+ sb.AppendLine("}");
+ return sb;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.CodeGen/Extensions/RoslynExtension.cs b/src/Chrysalis.Cbor.CodeGen/Extensions/RoslynExtension.cs
new file mode 100644
index 00000000..7b3a3dee
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/Extensions/RoslynExtension.cs
@@ -0,0 +1,22 @@
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+
+namespace Chrysalis.Cbor.CodeGen.Extensions;
+
+public static class RoslynExtension
+{
+ public static string? GetNamespace(this TypeDeclarationSyntax self)
+ {
+ if (self.Parent is NamespaceDeclarationSyntax namespaceDecl)
+ {
+ return namespaceDecl.Name.ToString();
+ }
+ // Check if the parent is a FileScopedNamespaceDeclarationSyntax (C# 10+)
+ else if (self.Parent is FileScopedNamespaceDeclarationSyntax fileScopedNamespaceDecl)
+ {
+ return fileScopedNamespaceDecl.Name.ToString();
+ }
+
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.CodeGen/README.md b/src/Chrysalis.Cbor.CodeGen/README.md
new file mode 100644
index 00000000..28f6b205
--- /dev/null
+++ b/src/Chrysalis.Cbor.CodeGen/README.md
@@ -0,0 +1,90 @@
+## Overview of Rules
+
+### Type Attributes
+[CborSerializable] - this attribute is used to tell the source generator that this type needs a cbor serializer
+[CborList] [CborMap] [CborConstr] [CborUnion] [CborTag] - a helper attribute to assist source gen in determining the code to generate
+
+### Property Attributes
+[CborOrder(int)] - used for properties within a [CborList] or [CborConstr] to preserve the ordering of properties
+[CborProperty(int/string)] - used for properties within a [CborMap] to specify the `key` to serialize/deserialize
+[CborSize(int)] - used to specify that the type has definite size. `byte[]` support will be initially supported
+[CborNullable] - used to specify if a property can be serialized into `null`
+[CborIndefinite] - by default, arrays and maps will be serialized into definite length, this tells the source generator to serialize into indefinite length
+
+### Special Types
+1. `CborEncodedValue` - a special type for serializing data with encoding tag
+2. Nested record for `Union` types
+3. Open generic types, for example `CborDefiniteList`
+
+### Primitive Types
+`int`
+`long`
+`ulong`
+`double`
+`decimal`
+`string`
+`byte[]` - with special handling since [CborSize(int)] can be used for this type
+
+### Collection Types
+#### in order to not complicate things, we will only support these 2 types for now
+`IEnumerable`
+`Dictionary`
+
+### Special Rules
+`ICborValidator` - is an interface with one function `Validate()` to tell generator that a type must be validated after deserialization or before serialization
+`ICborRaw` - is an interface with no function, this just helps the source gen to know if a validate function must be called or not
+`CborBase` - is base abstract type that contains the `Raw` property and `Name` which is a helper for union types. All custom types must inherit from CborBase in order for serialization to work properly
+
+## Development Checklist
+
+### Base Code
+ [] Create Chrysalis.Cbor.CodeGen dotnet project
+
+### Metadata Gathering
+ [] Create a file `CborSerializerCodeGen.Metadata.cs` which will contain the metadata types
+ [] Define a type to hold the metadata for the type `CborSerializableTypeMetadata` which includes `typeName`, `namespace`, `attributes`, `interfaces`
+ [] Create a file `CborSerializerCodeGen.Parser.cs` which will contain the logic on how to extract the metadata
+ [] Create `CborSerializerCodeGen.cs` class which will be the starting point of the generator
+ [] Emit a file per type that contains the metadata for debugging
+
+### Code Generation
+ [] Create a file `CborSerializerCodeGen.Emitter.cs` that contains the logic for generating code, depending on the rules, this will contain the emitters for primitive types and collection types
+ [CborList] [CborMap] [CborConstr] [CborUnion] will have their own reusable emitters. [CborTag] [CborNullable] [CborSize] [CborIndefinite] emitter helpers will be on the generic emitter file
+ [] Create a folder `Emitters` that has `ICborEmitter` interface that has 2 methods `GenerateSerializer` and `GenerateDeserializer`
+ [] Create primitive type emitter and make sure they work with test types
+ [] Create collection type (`IEnumerable`, `Dictionary`) emitters with support for closed generics and make sure it works with test types
+ [] Create [CborList] `ICborEmitter` and test with test types
+ [] Create [CborConstr] `ICborEmitter` and test with test types
+ [] Create [CborMap] `ICborEmitter` and test with test types
+ [] Create [CborUnion] `ICborEmitter` and test with test types
+ [] Open Generic handling for example `CborDefiniteList`
+
+ ### Testing and debugging
+ #### Basic
+ [] Primitive
+ [] List
+ [] Map
+ [] Nullable
+ [] Indefinite
+ [] Bounded Bytes
+ [] Cbor Tag
+
+ #### Complex Types
+ [] Container
+ [] Constr
+ [] Custom List
+ [] Custom Map
+ [] Union Type
+ [] Generic Type
+
+ #### Cardano Types
+ [] Block
+ [] Header
+ [] TransactionBody
+ [] WitnessSet
+ [] AuxDataSet
+ [] InvalidTransactions
+
+[] Alonzo Block
+[] Babbage Block
+[] Conway Block
diff --git a/src/Chrysalis.Cbor.Test/CborTests.cs b/src/Chrysalis.Cbor.Test/CborTests.cs
new file mode 100644
index 00000000..87c91e45
--- /dev/null
+++ b/src/Chrysalis.Cbor.Test/CborTests.cs
@@ -0,0 +1,184 @@
+using System.Formats.Cbor;
+using System.Reflection;
+using System.Text.Json;
+using Chrysalis.Cbor.Cardano.Types.Block;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Input;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Output;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Script;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.WitnessSet;
+using Chrysalis.Cbor.Serialization;
+using Chrysalis.Cbor.Types.Test;
+using Xunit;
+
+namespace Chrysalis.Test;
+
+
+record TestRecord(string p, int i);
+
+
+public class CborTests
+{
+ [Theory]
+ [InlineData("9FD8799FD8799F9FC24C0AFD35CBEC1F0EB61C6A5B4DC24C0CEFB03531E283A5DF051C66C24C067D7F114BF03905256C13A9C24C0E4A467359993326D19A78FBC24B76D585C1A093723F32404EC24D598DE7F123CC80BA2DBE2FBD40FF4455534462C24C204FCE5E3E25026110000000D8799FD8799FD87A9F1B00000191DAACEA81FFD87A80FFD8799FD87A9F1B00000191DAB17E61FFD87980FFFFFF58404F33E732ADCB80A24B323BD160054CE8CF33641E2DF1AFBA2BFCE109CB8C143745880CA239B1DFB6A0C86241DC36A3E0199071F11A53267FB7836AB0DEDEB103FFFF")]
+ public void TransactionInputTest(string cbor)
+ {
+ byte[] cborRaw = Convert.FromHexString(cbor);
+ PlutusList txBody = PlutusList.Read(cborRaw);
+
+ Assert.NotNull(txBody);
+ Assert.Equal(new TestRecord("test", 1), new TestRecord("test", 1));
+ }
+ // // [Theory]
+ // // [MemberData(nameof(BoolTestData.GetTestData), MemberType = typeof(BoolTestData))]
+ // // [MemberData(nameof(BytesTestData.GetTestData), MemberType = typeof(BytesTestData))]
+ // // [MemberData(nameof(IntTestData.GetTestData), MemberType = typeof(IntTestData))]
+ // // [MemberData(nameof(LongTestData.GetTestData), MemberType = typeof(LongTestData))]
+ // // [MemberData(nameof(UlongTestData.GetTestData), MemberType = typeof(UlongTestData))]
+ // // [MemberData(nameof(TextTestData.GetTestData), MemberType = typeof(TextTestData))]
+ // // public void Deserialize(TestData testData)
+ // // {
+ // // Assert.NotNull(testData);
+ // // Assert.NotNull(testData.Serialized);
+ // // Assert.NotNull(testData.Deserialized);
+
+ // // byte[] data = Convert.FromHexString(testData.Serialized);
+ // // Type actualType = testData.Deserialized.GetType();
+
+ // // // Act
+ // // MethodInfo deserializeMethod = typeof(CborSerializer)
+ // // .GetMethod(nameof(CborSerializer.Deserialize))!
+ // // .MakeGenericMethod(actualType);
+
+ // // object? actual = deserializeMethod.Invoke(null, [data]);
+
+ // // // Assert
+ // // Assert.NotNull(actual);
+ // // Assert.IsType(actualType, actual);
+ // // // Assert.Equivalent(testData.Deserialized, actual);
+ // // }
+
+ [Theory]
+ // Babbage
+ [InlineData("85828A1A00A0FAA91A07AF97F758208FD832B38F12F6E1572E9BE0D63465B66D3A9413E39F550DF43476B46C609BB558207194702C765EF7F9E333DAD00C7CA3C2065EAFF5288B177A726B65CFE79379D458201B60A27DF5CE4FC9BB19AF1643815652154CDFBF609D717D9693C07E795071A782584077D15CC438BD3CE4E3E2B17F1B20D85952F069A3EC3BA294FABE9418B296F028DB590F3DAF42A6400A7CAAB0D1A2E25278737326C47C068FA451ADB828044AA85850FBD7FAAA1B9D85F47CA75277FC1D6E987825562026137CDE28A7B5DC21D7FA4D828030F911B1A06C6D759A7747AC3DF362B5DB156B373AC7A9C380BC63F9C9072355484D935BA871C50FA8898432280519380B5820A6651F0265DC9DC19819C20DC2719D6C172037AC798D43312D594DA50442998C845820B095CCD982629951A205A35A81543B3C6F0EFFA999E376D02C1443D510A6F7F70F1903DE5840E4DCAACA8A990945BC5D8F9AD076638ECB5D39D1BA084EA5B27B93B14CE658BEDCB6D5FD1ED133A16769C19B77941890D0ECCAAE4E74F2502FA4E102590CDE038208005901C053409B7ECC3FE5C73FB288DD219CD00EA1ECAB1FE6A0AB877110AB3D2D887C3000F8A10EB2DFBC8BE936D860628C5688D322EDDBB060F70C3A3FA07E568B9A08D133872360CE3A176C4013B9236A90444561F705BB126DD3621B32D9A0EFB86BCF86C02BE0187A039A2AB426D47ADB5128891DD8629639DFA6282AFF8A25206D8F3225D5BC3EFD255897E0FF5728F24556B88F7967EC543376C61D4A186BBC63411A80D8F76680F048886110EED82EA1EF1AA52DDDA81B2DAE2CC9D0EDB59739DE87A4AADA86C41A80FE46DE204E65A9491057690768FFF9A2187356F003FB4A5CA9D816B6836967A9F1C24ABEEF7026CF60FEB48CCE2A5779B4442CF07053D285331D4A67BE56F2F4BB3F87A7D3DEB31DEC91849BE166261108B1B7CDEA0DCA2FFD41026D5B4AC3F246CC3213461A0B9F5C47DA887956CAC51CBA000820A944DB011B3C5A4B6A59A6C332F07C614FA1CC66DFDAC6744268065E4F0E936C6830E50CF83DC7824A2E9DC6E754A138FFBDF7626E485136A43712175462840664E7D5EDAB3606AC58A127B4745785C9B972212350AC0FDF08C4E1E81864D6131D64E9175B979222CD46D7FCBD300DA1774E00526E38AA67333FC835ACAD5242ADCC87A400818258208B1981199658095573859313ACE20F2C933D5AF1E81650733E36DF6E06E9101501018282581D6124D274BFD913B241A8CCA20C6977775718FDDB8F3763F1D365C854451A001E848082583901AE07890AF80E4658691A834F880B3F8142D35F08B7E0A574A787521FFA40984DFE75EA6085AE8D27F52934AF3D0A42A391C514E78A6CDD561A01053236021A00028CAD031A0CC63DF2AB008382582062FF26A140262D3EE197CD93FF234D49F88EAB3483E3BDCC5B69A582F8BB1952008258207942043B920908BAD5626DCFADA4A00D812B3789E3C1925D70355B6B16F52DFA0082582099908C1030BD4F72C4135BB86E6296CDAE04C906F091976E320C2F25A5200E2602018383583911E1317B152FAAC13426E6A83E06FF88A4D62CCE3C1634AB0A5EC1330952563C5410BFF6A0D43CCEBB7C37E1F69F5EB260552521ADFF33B9C2821B0000002ED1BAB9B3A4581C0BE55D262B29F564998FF81EFE21BDC0022621C12F15AF08D0F2DDB1A1582020B7729520955D7A53FF8A39082B8011159D6628113EF47C13149179869FE16D01581C13AA2ACCF2E1561723AA26871E071FDF32C867CFF7E7D50AD470D62FA1474D494E5357415001581CCE5B9E0F8A88255B65F2E4D065C6E716E9FA9A8A86DFB86423DD1AC0A14444494E471B00000D0E2C75F5FC581CE4214B7CCE62AC6FBBA385D164DF48E157EAE5863521B4B67CA71D86A1582020B7729520955D7A53FF8A39082B8011159D6628113EF47C13149179869FE16D1A130C6AA25820A7A63A0514F3BA288D15F577D34F3FAA5CA459A1A97D0BA33D270DC93BBF14BD82583901B6A399BB1A6598ADD297EB8724911C41FB720F6D17F6221636B458E3B84DC1F29279A96CD8D21B1F81A63B10D01103A9EB86FFC79D1AB1B21A191F421382583901BCB15EA0CCDE1A3E6BCA4472724E4017E173F94E97A60D3E682A6E9D52563C5410BFF6A0D43CCEBB7C37E1F69F5EB260552521ADFF33B9C2821AF6E2075BA1581C2F2E0404310C106E2A260E8EB5A7E43F00CFF42C667489D30E179816A14D3137323331303430303030303001021A000C04AD031A07AF9BCB0758205160F88B929BF8A6C57C285B889488F9137C0EF3CFD0BCF408A10020E69146D5081A07AF97E30B58207CB052FB69E3AD65E73A6A481850426288F5730FB8D8AE813A94A190A49D5B180D8182582099908C1030BD4F72C4135BB86E6296CDAE04C906F091976E320C2F25A5200E26020E81581CBCB15EA0CCDE1A3E6BCA4472724E4017E173F94E97A60D3E682A6E9D1082583901BCB15EA0CCDE1A3E6BCA4472724E4017E173F94E97A60D3E682A6E9D52563C5410BFF6A0D43CCEBB7C37E1F69F5EB260552521ADFF33B9C2821AF6833C48A1581C2F2E0404310C106E2A260E8EB5A7E43F00CFF42C667489D30E179816A14D3137323331303430303030303001111A004C4B40AB0086825820F3DDC3B1EA46C058A39A764068EF2CB7B72B42510857ABE5357EB7E7BC90B45C01825820C112E5947A7816881C274BB4824BA657EC5D9EC07BB4B4ED8123CC94832D4D43028258201C4FF06115A456C8CAE138B9ED57CB11289DB280DD606702A0708E87CE9F55B800825820E63473E75E61545BFC3CF491002C49F9BC0543C7D85C46BE6BC8636F8A9D5E2400825820216394E05B86EF918A6C4D369717182FA5DDF11428AFD5CB16DDA32A3AD1FCCF01825820072BFA83B11291C9F05347FEE5D3499B6362A9D32461DC6745E4859F625B034501018482583901252BF67C93ADE03D9DC874748CE1103EB0B9130968A5248D381C16705C4D87DBFE9794B8DD73D8F76CB5C683BE1DF38D632133CB61AB014C1A001E848083581D714DD522FB07D1F895EE63270B040E8B6434AA848A9C48EE16A7903AAD1A281959B058208407BD463FDB8AB3C15C3D51A0B80BF2A983357176C26FF8956F48FCA750139682583901252BF67C93ADE03D9DC874748CE1103EB0B9130968A5248D381C16705C4D87DBFE9794B8DD73D8F76CB5C683BE1DF38D632133CB61AB014C821A003C0B36A4581C279C909F348E533DA5808898F87F9A14BB2C3DFBBACCCD631D927A3FA144534E454B1A006ACFC0581C41223B3ECF502363DC465DCE5AD6671B83AC790E229D3F49E68C3353AE58201DCC6D7C286A2DE84347E820F0C7470EE782590A48716C0D374AF11BF84F91490158202B222B541F34CCC28E4E6E9A9CE1C4628481FE6FE51BC34A1E45E8DE48FDE30D0158202B5A0BB58596616D24DB29C56DE9FBDB2E142C260B8FDEA43F5AE2B5D05684510158202C568BDAA195DF9DF23A9DFB24FDB8F85CBF1BDD532D1B5E0766B9847A6FA2B10158203DABB0E2FD6E598AAC8A60710123C878764D266D335CB6A80219F47772D843D50158204181EF72768DE5384584403C5032FE0134F2C6379AB1B2CFB7DA964C70ABA99501582075DB7CB03250704474C0C723E11EAD164DF7B098BEE79ECBAC4006B3E5C02F990158209356CD737265040D36A951364BE3EF9C18A06B42B5F7F0187D3C165C36E86B690158209C5AF94E7172C88868A08139FF19D47C44C011F7A0820F338241D0FB3D057009015820A99E358C89AC6C4AF9A25DD0538480CD8B498A9CC14BB2C1FE213697DB9EEAF7015820B6CF6DC35253F74A7E28B9EEDB01FAFEA96E28EBE20EE1A75B260CD8366B3FF1015820E56F42B603C7D09944F0362409F5A25D572B8781C55F0385D1260BF95F339246015820EC603D34DC271F802B3B83C5544EE2A86DB0EA922FDF092A6E8226A5FF80058B015820EC793C9A4C1B8981EED97136E7618B231C544195ECF30D1EF78A5E22AE902F3501581C4523C5E21D409B81C95B45B0AEA275B8EA1406E6CAFEA5583B9F8A5FA44B000DE14042756431343334014B000DE14042756431383833014B000DE14042756432353034014B000DE1404275643237303001581CC881C20E49DBACA3FF6CEF365969354150983230C39520B917F5CF7CA1444E696B651A0001D4C082583901252BF67C93ADE03D9DC874748CE1103EB0B9130968A5248D381C16705C4D87DBFE9794B8DD73D8F76CB5C683BE1DF38D632133CB61AB014C1A07076A6B021A00094B8B031A07AF9BB5081A07AF976909A1581C41223B3ECF502363DC465DCE5AD6671B83AC790E229D3F49E68C3353A1582083835D62DE24C15056AB445A01E093F621ECD85675EFC2BE4E8257C98B59B9B3200B58204F2988C9AE22ADC58096AB9402ADD7C61BB98C8CC6F1915967C070FD22C0C5F70D81825820E63473E75E61545BFC3CF491002C49F9BC0543C7D85C46BE6BC8636F8A9D5E24001082583901252BF67C93ADE03D9DC874748CE1103EB0B9130968A5248D381C16705C4D87DBFE9794B8DD73D8F76CB5C683BE1DF38D632133CB61AB014C1A12A262B7111A000DF15112828258202E8E08B814BE2341084CC874194BC57E0D35E210954F5E57D2A1D41CB6025C84018258205A4BB987DAF15D6C09134E515D568DDE9FDE0074FFD2FA6BABC8C820DF04A49B01A40081825820DDCAB0065D35CEDF0F7B021B35732116DC79565348B718E5B29C10761F087463010182825839011B405CB6901055942AFC1F8C1EAAFCA00AFA8BD0081DE6E58B4435FD78060531E90533ABF6B0F443BEF89C71206D3FB49BFF0F1CEA076D911A05D75C80825839012E84C78697E056402A15B96833B523B07C493761D2DAE15449C8C99DA2EECF283E18BE26C0704304EF31D63A8EC1B6ECE4F3174B07A22CC21A0024422B021A000290A1031A07AFB404A400878258203149ED17E1577C562DE7EC7224AABE107A78F8A184FC796CDEA8EAC90B526497018258204FAAD68789B140095D8B09DF63D4BEC7B22D2F07CC90BBE4F724B9ED26AF72FB00825820A2AA21BF9C81A61E89BBA8A6F9C0BBF46CA812730912E3F336E0BAD60588BF4D00825820BED656C0E1B30EFB9FB8726C0416BFDE72EAEC2BEEB951199EF2AF96706637E701825820C35D2C9A1FD03429B88A43C773AABFCDC18B2E39CF50EDEF0C1F4AEF53ACB1B603825820CD6CD0844747901801A96275BB7DEEB4654916C514D440248A21DDD2F946F1FB00825820E0CAA29C1EDF4968000B42F35B71A9049369C0A0C38EE89E10099BC40465BEE101018282583901AE4A2F776C488D54616ED50D8BBE4F49A036A7E775AA89535C7BF984293C0F5098A0561F60A629E309F2B38E835EF4EF949EC3E427FDD2961B00000003F5476A0082583901AEDE1E35FF87D21A8297DBF3CED2C975E0556960348D8C5106B52A7E6948A5BEC1CBE3467F5A068DAADFF4F92DE03BD7CA263A370D04ED9A1A20B90FA5021A0002C8A9031A0CC63DF0A50083825820C298DC1865EB0436DC9C18AF92438A8DD5FE8FC220162A49AC2589719B81900000825820B9D8C11A597EBD824FDC5FCF7DBF49A98AE194108B38CB481D08992BDF7E4F29058258203934E5C09462754C0E81C944CDACC67995F8F1892FD6297869E1E94E57D68651010183825839019E415AB35AC812BB7EDFA7223BB1D6E89AC8C45CC010D0E8ECF5807396C7C0721CFA557649A36DCBF7F8AED5B434561235593C7FF1B86FB81A004C4B40825839019E415AB35AC812BB7EDFA7223BB1D6E89AC8C45CC010D0E8ECF5807396C7C0721CFA557649A36DCBF7F8AED5B434561235593C7FF1B86FB8821A00328200AB581C8DA763CE1D6ADB725A295A7F145C32808295B542DE5062D92EFA8370A24E000DE14046726967696433363531014E000DE1404672696769643435363101581CCE4D6F507A71B917DB0377D8F7309FE60DAD3C5397C730EA7F894BBBA24A54616E616B6830313035014A54616E616B683036353401581CD1F6CF1B73A74A154367269E759902739177D24B93286856EFE2B932A15045726D6F204F4720504153532023303701581CD5AB720E866E796D0212C61D36D5664819AB56437F2DF919FCAE5530A151436F6E737469747574696F6E555330323301581CD6EA64DD658ADC56FCB553AF88DB495A423D4573DDB3BD4803DF6AB5A14B323939393630313130353401581CD89775133F108329854694A2BDCB352D26C1D930739257D6CEB89BC3A1457247454E5301581CE1A212122B07460A739AF69751BD01CD03174791F778B2365CC0B8F6A14445524D4F19EEB3581CE304E709916948816B793C857C92EC765095E82653539B7928051ED5A14F53756E416C736F526973657336343801581CEFFF17A2E610E5C9F46E33FE964C39602399F95AA367B37F039C1EFCA15343617264616E6F466F725468654D617373657301581CF0FF48BBB7BBE9D59A40F1CE90E9E9D0FF5002EC48F232B49CA0FB9AA151000DE1406D61646D757369636D616B657201581CFA1A9FE50BA15C82F9FC18C8FDB25C745769061991C0C6C100CAD960A1545468655477656C7665436861707465727334333201825839019E415AB35AC812BB7EDFA7223BB1D6E89AC8C45CC010D0E8ECF5807396C7C0721CFA557649A36DCBF7F8AED5B434561235593C7FF1B86FB81A04276A59021A00031E41031A07AFB41105A1581DE196C7C0721CFA557649A36DCBF7F8AED5B434561235593C7FF1B86FB81A0013B0DDAB008382582011785188711F5B4BB104056865F724D542AFA256C4FB057A444331A273F1EBD602825820769ED9AC76C358169618F5EAABC6B0E37373866665BD4EA17607F4EC0612FEA600825820BEF529C7CF4FB5C33173E75795AA34C4D9EFA4931DD7D6B07E8A8900E0063FF5010183A300581D711869C28A5C1023A10C1DEB30D112226CF45130B800A22D9C2AFC1C9C01821A001E8480A1581C08C56C0FA73748A23C3BC1D9E6A60A4187416FC4FF8FE3475506990EA1484E6F64654665656401028201D818583CD87A9FD8799F581CE33BB9C5E634BC5BE187EABA0D94725EF71505D4A4CA6E0FED0B2E6DD8799FD8799F1A0005B9801B0000019096A7E9B2FFFFFFFF82581D61E33BB9C5E634BC5BE187EABA0D94725EF71505D4A4CA6E0FED0B2E6D1A0089544082581D61E33BB9C5E634BC5BE187EABA0D94725EF71505D4A4CA6E0FED0B2E6D1A006F7AEE021A00044EE3031A07AF985B081A07AF97E30B5820829DDE81A2958DAAEC321BCA75A193ED76D580503F89AC44F8A4F96109DF6F220D81825820769ED9AC76C358169618F5EAABC6B0E37373866665BD4EA17607F4EC0612FEA6020E81581CE33BB9C5E634BC5BE187EABA0D94725EF71505D4A4CA6E0FED0B2E6D1082581D61E33BB9C5E634BC5BE187EABA0D94725EF71505D4A4CA6E0FED0B2E6D1A0049A42D111A00370C3F128182582039435B3F8A6F3FAD8771E07B5B6790A940FECC4C20A7043E945E44FF427E41D30087A100818258206A29EF8CCBEC0A3C966443A3CBF142717338517A0418B40A8CCA20CFAAA5A65E5840A5A4E03B6A9ACEEBBE2A10E11030B19CDB48103D223DA34FB7D3532BA36E30FE4EC6B0498936D6356BFB7B65D27347BD7AAA668F6E11EC0A80E5D3480E56F80DA400818258200303157375F23161027902ABFF500A6268C00A69F45F7BFE5ADBC2F70F15DF9458400CD61DBA11FC23C54FD36E3710EECE5300CF8B573D7D89EB0B59BB74849A1704DBC26CAE0FA14184182CDC0511B94D1E2AE10FD7BF62127127B4A110AF839800038259014F59014C01000032323232323232322223232325333009300E30070021323233533300B3370E9000180480109118011BAE30100031225001232533300D3300E22533301300114A02A66601E66EBCC04800400C5288980118070009BAC3010300C300C300C300C300C300C300C007149858DD48008B18060009BAA300C300B3754601860166EA80184CCCCC0288894CCC04000440084C8C94CCC038CD4CCC038C04CC030008488C008DD718098018912800919B8F0014891CE1317B152FAAC13426E6A83E06FF88A4D62CCE3C1634AB0A5EC133090014A0266008444A00226600A446004602600A601A00626600A008601A006601E0026EA8C03CC038DD5180798071BAA300F300B300E3754601E00244A0026EB0C03000C92616300A001375400660106EA8C024C020DD5000AAB9D5744AE688C8C0088CC0080080048C0088CC00800800555CF2BA15573E6E1D200201591E1B591E1801000032323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232222323232533533355333573460CC0042646424446600200A0086EB4D5D09ABA25002375A6AE85400454CCD5CD1832801099091118010021BAD357426AAE7800C54CCD5CD1832001099190911198018028021BAD357426AE894008C0CCD5D0A80082E1119191A827911111A80391191111AA99A9824806108008B1119191A9A9A80103102D91191919191919191AA99A982A89119982D91299A99820A8071A80103409980200100088008008020B03C9111919191919191919191919191982A299A8050A99AA8100999AB9A3094013303A307908101330820106700B06706E0060063305433355307908101305C05A305953353502B2233500206E2071210011635014222222207A33054353501422208E0122350012322533355333500A2153335004215333500C2130054984C011261533350052130054984C0112603C04F15333500B2130044984C00D261533350042130044984C00D2603B153335003205003A04F153335003215333500B2130044984C00D261533350042130044984C00D2603B04E15333500A2130034984C009261533350032130034984C0092603A153350010700820108201070253335002215333500A21533350042133303A03B00200116161604E15333500921533350032133303903A00200116161604D04E33054330500153306F00B02733054330533306301602548008CC150CC14CCC18C02C0952002330543305333063001010002330543333084012222533500315335002135001222223305D3305C0053306C01402B3305D3305C0043306C01402A3305D3305C00300C3305D3305C0023306C0140193305C001304800D0910122153350041622153350071622153350081622133300C003001323232323232323533307D0050070272222225335330743305100248000CC1440052000161333335003235500B2222223501D222223501B22235051222223232323232323232323253353308B013308B013306E00848000CC1B802920003308B013306D00201E3308B0153353306E00A00315335330870100E07013308B013308A013309A010110703370066E0402800C060CC22804CC2680404411C0084CC22C04CC22804CC268040441C0060CC22C04CC22804CC2680404411C008CC22804CDC08050019984D008088070A99A998370041A802055008A99A99843808078380998458099845009984D0080883819B80337020106A008154020306611402661340202208E00426611602661140266134020220E003066116026611402661340202208E004661140266E04020D40102A804CC2680404403C4CC22C04CC22804CC2680404411C008CC22804CC268040441C0060CC22C04CC20C04048070CC2080404006C4C8C8C8CCCCC2C80400C008CDC019B800180050013370002E002A66A0082605466E0800C00840594CD400C4CCCC0A005406406005C520003370002E00866E0005CD40102A80458C27C04028D40082A404D40042A404D54CD54CCD5CD19B8900148000278044C94CCD5CD19B890014800027C044C94CCD5CD19B8900148000280044C28404CCC2EC0400C0080054CCD5CD19B8900400610041006350020AD0121001160B901350010B0015333573466E2400400C54CCD5CD19B880010031330A8010023370666E080080400444CC2A0040080104CC2A004CDC199B820040110100043370666E080040380414CD4CC1FC01C1A04CDC0998490081100399B80011010133092010220073370666E080040300354CD4CC1F40101984CDC0998480081000219B8000F00E133090010200042235500C2222223501E222223501C222350522222232323232323232323253353308B013306E00748000CC22C04CC1B4008074CC22C04CC22C04CC22804CC2680404011C008CC22804CC268040401C005CCC22C04CC20C0404406CCC2080403C0684C8C8C8C8CCCCC2CC0400C008CDC019B800180060013370002E002A66A00A2605666E0800C00840594CD40104CCCC0A405406406005C52000350020B301350010B60153353330690870100E01E1330AE013370002C00E02A26615C0202C66E0005401C58C27C04024CDC199B820010123370200400266604400600266E0CCDC0981219B803370400400466E08CDC119B82337049004241941E90680780200198600080199B824801120CA0F350050A70130BE01001350030A60153353308001001069133702661260204600266E000440404CC24C0408C004D400428804D54CD4CCC1801F80140544CCC2D0040140340304CCC2D004010030034888D400C88CCC2E40401401000C88D54030888888D407888888D4070888D414888888C8C8C8C94CD4CC21804CC1A4009200033086013306800101833086015335330820101906B13308501330950100B0193370000202426610C026610A026612A020160320026610A026612A020160D60246610C02660FC01802C660FA01402A2A66A6660C8104020120322666661540266E00044008CDC08080008078070068999998550099B810110013370002000401E01C01A2C66603E6A00614C026A00614A02002A66A66100020020D2266E04CC24C0408C004CDC0008808099849808118009A800851009AA99A99983003F00280A899985A00802806806099985A008020060069111A8019119985C80802802001911AA8061111111A80F111111A80E1111A82911111191919191919299A998440099835802240006611002660D80020086611002A66A66108020360DA266110026610E026612E0201A03666E00068050CC21C04CC25C04034014CDC08020008A99A99842008028368998440099843809984B8080680D80D19843809984B8080680299B8033702008002028266110026610E026612E0201A03603466110026610E026612E0201A00A66E04010004CC21C04CC25C040341B4050CC22004CC20004038060CC1FC03005C54CD4CCC1982100402C06C4CCCCC2B004CDC000980099B8101201A01101000F1333330AC013370202603466E0004800404404003C594CD54CCD5CD19B880190011309F013370066E0CCDC119B82002019483403CCDC119B81001019483283D200209E012100116350040A601350030A60153353308001001069133702661260204600266E000440404CC24C0408C004D400428804D54CD4CCC1801F80140544CCC2D0040140340304CCC2D004010030034888D400C88CCC2E40401401000C88D54030888888D407888888D4070888D414888888C8C8C8C94CD4CC21804CC1A4011200033086013308601330680030193306800201833086015335330820100906B133086013308501330950100B009337000060246610A026612A020160100042A66A66104020100D626610C026610A026612A0201601066E00008048CC21404CC2540402C02400C4CC21804CC21404CC2540402C02400CCC21804CC21404CC2540402C020008CC21404CC2540402C1AC048CC21804CC1F8030058CC1F40280544C8C8C8CCCCC2B40400800CCDC019B8101200700133700022002A66A0082604A66E0800800C40414CD400C4CCCC08C03C04C048044520003370202400866E0404000858C26804010CDC199B8200200E00D3370666E08004038030CC244040840F8888C8CDC199B820010033370066E0801120D00F0013370400290650791112999AB9A3371200890000A4000264A666AE68CDC48008028A4000264A666AE68CDC4800A400029000080099B833370400466E04004014CDC019B8200148028014C014CDC10018011192999AB9A33710004900004D808A999AB9A30A10100214800054CCD5CD1851008010A40042A666AE68C28C04008520021330010023370066E0C009200448008C254048894CCD5CD19B880010021330030013370666E00CDC1802000800A4008200426660F2002006046464A666AE68C27C04D55CE80089919191919191919191919191919091999998008050048040028018011BAD357426AE88008DD69ABA100135744010A666AE68C2B4040084C8C8488888CC01001C018DD69ABA135744A0046660F8EB9D71ABA15001153335734615802004264642444446600200E00C6EB4D5D09ABA25002375A6AE85400454CCD5CD18558080109909111118028031BAD357426AAE7801854CCD5CD18550080109919091111198010038031BAD357426AE894008CCC1F1D73AE35742A0022A666AE68C2A4040084C8C8488888CC00C01C018DD69ABA135744A0046660F8EB9D71ABA150010A101135573C00A6AAE74010CC1E1D71ABA100530743574200A60E66AE84014DD51ABA1001357440026AE88004D5D10009AAB9E0010970137540026A002104026A00810C0260C82446660D444A66A660B066606C0D46A004104026A03C1040266606C0A06A6A0040FC0EE05E266008004002200200202A60C82446660D444A66A660B066606C0A06A0040EE6A0200EE66606C0A06A0040EE05E2660080040022002002026666660F0660C602C044660C602C04203E660C602C02003C660A8660A0044607A008660A8660A0042607C008660A8024660A8A66A60C82446660D444A66A660A66AA03A104026A6A0040EE1040226600800400220020020260D6442A66A0020FE440DEA66A6660640A600490000998299981D183C840809984100833800A40042660A66607460F21020266104020CE0029000183800999B8100101D303D001333066059008010305333307F22322325333573466E1C010DC680488010A999AB9A308F0100415333573466E1D205A500313370290001980299B800044800800800400454CCD5CD19B885002481805854CCD5CD19B8950023370090302402426600866E0000D20023370066E08005201433702A00490300B099B8E0060014800120001533500400115335501A13335734611A026606860E60F6660F80C200A0C20D00022A66A0062A66AA0320022666AE68C23804CC0CCC1C81E8CC1EC18001018019C0044CCD5CD18460099819183883C9983D02F80182F833299A9983D91299A8008321109A80111299A9982B00101089834800898030019A9A99A983B03C00501083883610A99A8008B1109A80111299A8018A99A99827800A400420042C112022C666AE68CDC49982C800803240000C80BA6A0020D4A66A60B02446660BC44A66A66088A0226A0040D6266008004002200200200E2C0F8660CE02C6A00A0D460C2006A66A60A42446660B044A66A660826AA0160E06A6A6A0040D80CA0E026600800400220020020060B2442A66A0020DA440BA60BA0026A0280D4660B40020246A6A0080C80BE26A6A0020C20B4A66A609601C420022C2A66A660600040320BA266060002032603200E6068010464646A09C4444464646464646464660706606A00C0066607066068660A600C018660A6006018660706606E6608E6A6A66A60C60CA00401E0BC0B2660B601201090011981C1981F998188070009981C1981B9811800A40006607066068604201C60420026607066068604401C60440026606E604801C6048002660706606A60AA00A09666070A66A609024466609C44A66A60A26A6A0040C40B8266008004002200200200809E442A66A0020C6440A6A66A609024466609C44A66A60A26A0040B8266008004002200200260B000E09E442A66A0020C6440A666609A08000600860A40066A0020ACA66A608824466609444A66A660666A6A6A00E0BC0AE0C46A6A0040AE0C4266008004002200200260A80062C0D06A0100BA6A6A0020B00A6A66A608400C420022C603000C606600E4464646A09E44444A66A6A00E440A8426464646464646464646464646607E660700286660AA09000800C6607E66076014660B40060246607E6607E6607C6609C6A0040C00120106607E6606E6A0040BC6A01A0D26606C6A0040BE6A01A0CA6607E6607866AA60CE0D846A00244660CA00466AA60D40DE46A00244660D0004666A0026E012000700466E0000520000013304000B3500922330723306400233072330640010090540540033303F3303E3304E3535335306A06C0010160650603306200F00E48008CC0FCCC0F0C1700181494CD4C13C488CCC154894CD4C160D4D40081A418C4CC010008004400400400C1588854CD40041A888168C168014CD4C1A01A800C04CD40041754CD4C12C488CCC144894CD4CC0DCD4D4030194178D40081784CC010008004400400400C581BCC160004D403418CCCD4080178D4D4080188178004CC11800C004CC164020D4004170CC140004020D4D40041681554CD4C11001C8400458124C06401CC0D0020448004584D55CF0011AAB9D0013754004444A66A6600600400207809C46A0020B0246666666600204044A666AE68CDC38010008020A999AB9A3371200400203203044666AE68CDC400100081B01E802802001912999AB9A337120040022002200444A666AE68CDC4801000880108008881F11199AB9A3371000400207406644666AE68CDC480100081C81911199AB9A337120040020620706607C91100488100223333550023303F2233350050480010023500304222337000029001000A4000660784446006600400240026607666076E01200070246A0024444400A46A0020A246A0024407246A0024406C464A666AE68C140D55CE8008991919191981E2999AB9A305435573A00626464646464646464646464646464646464646464646424666666666600201A01801601401201000E00A00600460446AE84D5D10011980F1981DBAE2001357420026AE88008CC071D71ABA100135744016A666AE68C190D55CE804899191919827A999AB9A306735573A004264660A066038EB4D5D0800980D9ABA1357440026AAE7800817D4CCD5CD18339AAB9D001132330503301C75A6AE84004C06CD5D09ABA200135573C0020BE6EA8D5D09ABA200237546AE84004D55CF00482E1980C9981B019BAD35742014660300326AE84028CCC059D70029ABA100A33301575C0086AE84028CC054008D5D08051980A1192999AB9A306035573A0022646609260326AE84004C010D5D09ABA200135573C0020B06EA8004D5D08051192999AB9A305F35573A002264646660B060606AE84008CCC059D70029ABA10013303375C6AE84D5D10009ABA200135573C0020AE6EA8004CC045D73AD37546AE84004D5D10009ABA2001357440026AE88004D5D10009ABA200135573C006098A666AE68C15C0044C848888C010014C02CD5D09AAB9E00215333573460AC00226424444600400A60486AE84D55CF0010A999AB9A3055001132122223001005300C357426AAE7800854CCD5CD182A0008990911118018029BAE357426AAE78008130D55CE8009BAA357426AE88008DD51ABA100135573C0020906EA80048C94CCD5CD182800081E8A999AB9A304F00102B04735573A6EA800488C8C94CCD5CD18290008058A999AB9A3051001130193004357426AAE7800854CCD5CD18280008050241AAB9D00137540024464460046EAC004C10888CCCD55CF8009014119198239981C98031AAB9D001300535573C00260086AE8800CD5D0801020919118011BAC00130402233335573E002404C46608860086AE84008C00CD5D100101F91919192999AB9A305300211222203515333573460A4004220922A666AE68C1440084C8C848888888CC004024020DD69ABA135744A0046EB8D5D0A8008A999AB9A3050002132321222222233002009008375C6AE84D5D128011BAE35742A0022A666AE68C13C0084C8C848888888CC018024020DD71ABA135744A004603A6AE85400454CCD5CD1827001099091111111803804180E9ABA135573C0062A666AE68C1340084C848888888C014020C074D5D09AAB9E003045135573C0046AAE74004DD50009192999AB9A304A35573A0022646606660086AE84004DD69ABA1357440026AAE78004108DD50009192999AB9A304935573A00226EB8D5D09AAB9E0010413754002220582205444A66A00442A66A00442660240040020462A66A0024046068446A004446A006446666010008006004002446A004444446A00C44444A66A6601E01400A2A66A6601E0120082A666AE68CDC38040018A999AB9A3370E00E0042A66A00C42A66A004426A004446A004446A00A446A00444A66A666602E00C00A0040022A66A00E42A66A008426604800400206A2A66A006406A08C0680562A66A002405607805405405405444446466A00A466A0084A666AE68CDC78010008018121013919A802101392999AB9A3371E0040020060482A66A00642A66A0044266A004466A00446601200400244405444466A0084054444A666AE68CDC38030018A999AB9A3370E00A0042660220080020520520442A66A00240440664466A004466A00446601C0040024046466A004404646601C004002446A004446A00644A666AE68CDC780200109980780180081091199AA9815019180680191A80091199AA981681A980800311A80091199A800919805A40000020144660160029000000998030010009981280100A91199AB9A3370E00400202C03A44A66A00420020324466AA605205C46A002446604E004666A002466AA605A06446A0024466056004601800200244666010016004002466AA605A06446A0024466056004601600200266600600C004002444666AA605005C06466AA605205C46A002446604E0046010002666AA605005C446A00444A66A666AA6054064601A01646A002446601400400A00C200626606C00800602800266AA605205C46A002446604E0046606844A66A002260120064426A00444A66A6601800401022444660040140082600C00600800442444600200842444600600844666AE68CDC780100080800B9980E80080A11299A801012080091980E11199A8018128010009A80080F9192999AB9A303435573A00226464646466666042666016EB9D71ABA100433300B75CEB8D5D08019BAD357420046EB4D5D0800998051192999AB9A303A35573A0022646604660146AE84004CC035D71ABA1357440026AAE780040C8DD50009ABA1357440026AE88004D5D10009ABA200135573C0020586EA80048C94CCD5CD18199AAB9D0011323301C3005357420026600C0086AE84D5D10009AAB9E00102B375400246464A666AE68C0D00044C8C8C8C8C8488CCC00401801000CDD69ABA1357440046EB4D5D08009ABA2002375A6AE84004D55CF0010A999AB9A3033001130103004357426AAE780080ACD55CE8009BAA0012323253335734606600226424460020066EB8D5D09AAB9E00215333573460640022601E6EB8D5D09AAB9E00202A35573A0026EA800488C8C94CCD5CD18190008980798021ABA135573C0042A666AE68C0CC0040380A8D55CE8009BAA001222325333573460626AAE740044C8CC068C014D5D080098021ABA1357440026AAE780040A4DD5000911A8009119198131119A800A4000446A00444A666AE68CDC7801004898038008980300180298129119A800A4000446A00444A666AE68CDC7801003880089803001919A80081100211A800911A80111111111111999A805900B900B900B9199AA981101500B11A80091299A998090010020980C00180B805912999AB9A3371E6A0040346A0020342666AE68CDC39A80100B1A80080B001805003880B91180F11299A80088019109980300118020009299A800900B0019111A801111299A800909A8029111111111299AA99A999AA981001400A11A800912999AB9A3371E00401C2602C00602A0044260286A0020440244260240022C2C2006424460040066601444A66A0044200620020022018446602E44A66A00203C4426A00444A666AE68CDC78010038A99A8008111109A80111299A8018A999AB9A302D00113301400B0020262202813006003002235001222222222200A2350012201C23500122222222220092220032220012220023333300248811C0BE55D262B29F564998FF81EFE21BDC0022621C12F15AF08D0F2DDB10048811CE4214B7CCE62AC6FBBA385D164DF48E157EAE5863521B4B67CA71D8600330014891C13AA2ACCF2E1561723AA26871E071FDF32C867CFF7E7D50AD470D62F004881074D494E535741500048811C2F2E0404310C106E2A260E8EB5A7E43F00CFF42C667489D30E179816004881054F574E455200221233001003002222221233333001006005004003002300B22112225335001135003006221333500500C300400233355300700F0050040012200130092211222533500110022213300500233355300700D005004001300822112253350010052213300F30040023355300600B00400111001220023005221225333573466E20005200013005490103505436001533500213005491035054370022153335734602C0062004266A600C01000266E0400D2002253357380022C240026004444A66A00220044426A004446600E66601000400C00200660024444A66A00220044426A00444A666AE68C0500044CCC02001C01800C4CCC02001CCC028CCC02C01C00800401800C8C8C00400488CC00CC00800800488488CC00401000C88848CCC00401000C00854CD5CE2490350543100162215335001100200715335738921001622222222007220053704904D0F910B111110021B8748000DC3A40046E1D2004370E90031B8748020DC3A40146E1D200C01049FD8799FD8799FD8799F581CB6A399BB1A6598ADD297EB8724911C41FB720F6D17F6221636B458E3FFD8799FD8799FD8799F581CB84DC1F29279A96CD8D21B1F81A63B10D01103A9EB86FFC79D1AB1B2FFFFFFFFD8799FD8799F581CB6A399BB1A6598ADD297EB8724911C41FB720F6D17F6221636B458E3FFD8799FD8799FD8799F581CB84DC1F29279A96CD8D21B1F81A63B10D01103A9EB86FFC79D1AB1B2FFFFFFFFD87A80D8799FD8799F4040FF1A18E0E563FF1A001E84801A001E8480FFD8799FD8799F4040FFD8799F581CCE5B9E0F8A88255B65F2E4D065C6E716E9FA9A8A86DFB86423DD1AC04444494E47FF1B0000016902C758161B0000018B9265F3F5D8799FD8799FD8799FD8799F581CAAFB1196434CB837FD6F21323CA37B302DFF6387E8A84B3FA28FAF56FFD8799FD8799FD8799F581C52563C5410BFF6A0D43CCEBB7C37E1F69F5EB260552521ADFF33B9C2FFFFFFFFD87A80FFFFFFFF0582840001D879808219A44D1A00E33567840000D8799FD8799FD8799F581CBCB15EA0CCDE1A3E6BCA4472724E4017E173F94E97A60D3E682A6E9DFFD8799FD8799FD8799F581C52563C5410BFF6A0D43CCEBB7C37E1F69F5EB260552521ADFF33B9C2FFFFFFFF02FF821A00280F711A2EE1ABA7A30081825820F91F45CD2DC870AE7F65186C74C6A183A540898E61D51A3126A6F00BB950B27958402BBF458FCC9ADBBDB5990BA91606CEFABAEE1439BDCB498D1FCC2C9E936A6361A126BE17E9D2955276F5FF66D855C1AFB3FE7B8B1BE0B4CAA9D60ABE3F4D8E08049F80D8799F582083835D62DE24C15056AB445A01E093F621ECD85675EFC2BE4E8257C98B59B9B3D8799F4040FF1A26BE3680D8799F4040FF1A015B23309FD8799FD8799F581C4523C5E21D409B81C95B45B0AEA275B8EA1406E6CAFEA5583B9F8A5F4B000DE14042756431383833FF01FFFF1A48190800582083835D62DE24C15056AB445A01E093F621ECD85675EFC2BE4E8257C98B59B9B31B0000019051AF7A480100FFD8799F582083835D62DE24C15056AB445A01E093F621ECD85675EFC2BE4E8257C98B59B9B3D87A80FFFF058284000501821A00279C441A2F128CEB840100D8799FD8799F5820BAF4F9A24D72868698BDD2FCCCF1C00E3990252F239AFAA031FEA146B8E7942EFF01FF821A001F69F81A260DE8FAA1008182582006E05CFF0C72A3EF4E2853C351BD122FE7E5049A37737983394F012EAB37C8515840725086D5F44100A22705E0BC545C4B24F77266DC6C8154EB1B7FAE989C87566E7CDAECDB4AFB5EDDE2050AFFBA426E27457F2CDF1EC26C31B0AFD2AC61C6680BA1008282582004F3E99F60B98399C5420DBEC2BEECFE5F7E2DB477962BBDB1EAB4FB5C87BE3258402678886A86150F1314C65211E57639FB4B37E45A38E15CB894F27D3EA3B9AE23E32AF0FD551F89C6C13ED156A8CCAFDE94E7568BCE26CCFE7A0A8B40B2D243028258206BB92A20014AF583D1ECB932D8C6FC284274CB5DF043EC36546F0FC8B10C27DE58408A5CCCD412A974E67341364E431BB349C1138A8AE61BF7689E949D7A555A1E14B5CFBC006B66497C4B230F247E433D2F453115011081359258925218972AA50DA10082825820B2C6CA24ECEEAA1D8E3F4E7B7D08582EB988CFCA33ACE149D97D13292D79CEDF58401758913ADDC471E9E53570E72B5778B6E9C7D3D47A4EBB1E64B8959BC70847DA6E1A5B86061C772135C3C7B6BED6B10F4A6A192F59B7653A45FAA64F9B6463048258203A2680B177DBB362922FA79A4C944D79221AC55CA6C3A0C11B60AEC9898BBC1E5840920288EFF6A54E2FB20C25B4F040024926FF0708713E68ED7779582927A1CA4D9EB05D133CE92AADA7F4AD3BD5E704A85AC2F68809569762F25D09937AE42F01A2008182582045E7EE2749DD98AC23244FF99D31DF8C64CBBC17D246B02DE9612268740B7D3558402271B7EB17EBBCB5119D0E41A953FC1344AC69C7B690599404DEDED7193852C175A6C8D7912E8DCA3E3AA87512308C3CA430CE9B5488047282A8BD3105372B090581840001D87980821A0012C8941A15F9CDB0A101A11902A2A1636D736781774D696E737761703A204F7264657220457865637574656480")]
+ public async Task DeserializeBabbageBlock(string cbor)
+ {
+ byte[] cborRaw = Convert.FromHexString(cbor);
+
+ const int concurrencyLevel = 1;
+ const int iterationsPerTask = 1;
+
+ IEnumerable tasks = [.. Enumerable.Range(0, concurrencyLevel).Select(_ => Task.Run(() =>
+ {
+ for (int i = 0; i < iterationsPerTask; i++)
+ {
+ Block block = CborSerializer.Deserialize(cborRaw);
+ byte[] serialized = CborSerializer.Serialize(block);
+ string serializedHex = Convert.ToHexString(serialized);
+ Assert.NotNull(block);
+ }
+ }))];
+
+ // Await all tasks to complete; if any fail, the test will fail
+ await Task.WhenAll(tasks);
+ }
+
+ [Theory]
+ // Alonzo
+ [InlineData("84828f1a005904061a01e4f6a5582021c3111a9a7bc94c4473232472fc13cdc2d28ffdd23d9ed7b717eafcaf3cfebd58202f3cc6c3b7f0e0c9ded59042ed973ac7aa4031167f0943c36d33bdf9bce73df15820d31eef88456a81532b2e3542edc12efefb74ad83c60d60448b70f3b0c285b885825840d9921e2e598048e8af42cce072c6e74d22dc0064e94c1b32115ea494065135b167fef63ccb12c5940eae27c726a68dc92db5f473b26a446ca495e23a4d3105b058501273dd72bc5091c6b7c34563576d011a5f61033211ea2ff0cc1976df837898d2084ed7f6f0284bc368b304fccef948c87b536db46af1e47141070fba9ba4788cb9bcaa9726f685ca4a953379c5e4f80d8258400006925d0fcc5b11fcf3d6303510b705e704ef5c1cd71bee6feb58f0895b2feaae9c843966b5e769f74b7937154ae767986ca553110dcff8b69c05961095656058508bd080d854b522a284d558adbd4516909c9ad7bb105bacd150f15c35aa82e2139aa8260a93a0e80287579fe46dd1c16577195d0aa5c861f4af85bed4b69c423587b191346e9a684781555e34a7c91b091924a85820df0c914fe93ecc076b9fa077390a4cd3ecf0413e5f71b88801cdd4d292b169be58208e825442eb570280bbcd1b554cc293231a7872bb05b3cc6ed2d16db6204b14ae0618c75840e7694afdec5e9edd646e5f5bc78362c1b079d0d62ef2c20f94b861cb8792222a3d98ac0fa94152e40a4f78a7bdab89b9c338e2da837725f3f0e4e4b6d67d890b04005901c0cf880816e236766340725d07aa598ebc56b7999a5d2dff8be576bb8c06ff66a5027c1cfda2b0b1c8e32413edd5e592b9adc9e74fcfd2017afe2fe98d1455b4098a0c89711bd71afb2f5e10a1265768f2c84d98d6acd1cf052bcc616a0255e0b867766a7723e99955687dd389c7864394ae1400836d9c38ac1fd467db5e9c11bb1dc787e0eee92473b93b48b09eaaa6d3a160d869895e37c300c2583161878aad6b06c0fe46e0b0d28fa1028047874ff4e70d23c5f453e4687b658311c42640ab8e6a1bdd02719ae72feb428627fed163b58c33f8a7d56ad0945009abb8253beb5e5dff60cf9afc15c910962fe4c34480f06fb8950afdbdde8281b1140e5e3265aca7020a3e3fd0aeaacb75fc9f933737f233cde6c03a7eb92742e028bbecc40969e0b68f08e53bd39362cb9d4226014c2ad89d425c754c1abb11ea9a54480aa4bcfe57ad62b77903cd90eb8e3374f40a7a11beda3c76c9cda5bb05ac5f00f0f868f07eaf1b1a9f5dde8ea19284caeec8e0f4d3cb9e14a676cf1f79adb31428bc910468877a200bd233e78b367b5ee667c29c2a0caeaa3936955e997bb02637975b47b75a0fae0bbe874d16fea05dfaecd87c9870bfce0d4ce1dab6320fed49da8da600818258206384be115440a4398bee154a03b0660cde77866ee87d668213242d8e52f813b300018282581d61b09810bf167ee557da7955bc8135b0a9c9e51fad323acc4b6841abd31b0000000107828e7582583901f0ba8e195c38a3be42b81959060f5e6a9a0cd3d328d8195bbbd7b1990e49deba7d017723225dc1779de91e4d19038609d69c6ab6f684ed0b821a001e8480a1581cb7ef0cfb14f588740d02ce8a53879ff96ab03c7b21ec1c459ac2bddaa15048617368477561726469616e3137333201021a00031a21031a02dc6c00075820449031012be3ce0052199538f0c2db90726f8d36eb11b00db6b510a8c9243cd609a1581cb7ef0cfb14f588740d02ce8a53879ff96ab03c7b21ec1c459ac2bddaa15048617368477561726469616e3137333201a4008182582005f2aef69abfcf78a67779b6e6b0cbc5592724fc53ee6ea0b8f4649eb9bca73000018282583901d5645f643be8735fb35c85c220c5bf521411a310bda81b4208462c3357de49b84973da8064a5867c2ea82a60abb7a010ff88b9e59fadfc221a003d090082581d61d91ef01b73f3010bb173945cf5417257c00c002715a13052015ab54f1a5b4d3873021a00029cd5031a01e4f753a400818258208760b7bb6c2f9c5cc340cd2c62ec3ab27b40777cb079e1b7fe01fe6123dee58501018282581d615fc1436b582a50ff4c5fdbf7e20942bdd45eb3aeaa7abdf442a6a34a1a1dc1b06c82582b82d818582183581c05b073f36ee030589a31148838cd47e8d8c8f82fec9fe091c7d53cd8a0001a0c5f26b11b0000000b9eaf4d11021a00034059031a01e4f7dda400838258209d9c7d4ea2dfbc730fe955b7c0b684123ed86f0054b7dc943727ac7bc7c2c7d200825820190a4421872e886d45325b1c2bbef914d98f11522ea81ed92a8839a87ad9a4b80182582005ede2bc0420a37dec63e032603b03e4a365831e5671aaada2ba6344c0234a7d010182825839010421800176834399c971e71972d5c85d1b45ee9c71242b6fc25cb84dcb4023d8148d86a8072f39cdb21628f2691e7a89f38ed158aa5d27bd1a3b9aca0082581d616904e8b2c26f3dda6c4a5db4b3ec9e31d581c9960977cfe9c6917a431a1c5f0591021a0002e195031a01e4f753a60081825820bdb86187627fde6eee1601c88a792cb9f3a459f6cab26ab281362f9751f0ae4900018182581d61d80fe69ded1ff90f41e526d0332a2ff98ba8a0d85ceb8941b51784201a05f11c47021a0004c4b9031a01e63c82048182068200bf8200581c001ec42376196df0b85b6ad660e7419e77b51b16fda8b931d559562e1a01f9d2708200581c0122c6ccb1533c9992ff08a9029b7b5a016d5c08d31a4963cd027afc1a012661c28200581c01fad190adc72e0884adb77aa72ef9d95d3adb75f782bad63b53a5b71a02c7c0c48200581c0a57686dc0d73abbf6ba8d1310dcf6887b2daa4693d94bc170fc08551a00ecbf328200581c1176b053d803161ca3ac7295f5ea78171b91650dc558d852e4547b601a0008ab5e8200581c125fa8bc3a9acda7a2e3646d6ecfaea925758378ad18011ef7164f461a05bb79a68200581c153d28771d39b9852db013519d4ac5542f6e7ff61c5b5327a129d7681a001ac34e8200581c158cfda322ce2afdebefdf65f9cf1bc671472a470552ee2f55c8837a1a0091b6e68200581c199231d9529171c85390273df7dc21d787883ab3cde9f8ebae107a891a0124b99e8200581c2142e4997ca5f537199575019d277554c0aa14841af61d275978a4dc1a0004dda68200581c22f8366b4ec72f3c0be8b13a2f1360426229f44db187d0534e68c7141a002359898200581c24f1b3791037e55363815fc4b788b886cd1d82a2f2d39e17196cd1a41a001663a58200581c27f1b09428918e1454bf6e7c6cb88e3444f6e6a73f5d0ee644174d491a004b24038200581c350d09ffe65fec05b5cfea6672a16711ed3266ae608cdc6c4a75bae71a04c71cb38200581c3c775aaea2b5571a7f930c0375255d05f21deb42605ee66fd88ca3961a051bb2108200581c417e75dd8b721053008dc50169b08a8c5070db24718e6c1e8b83a0c81a0187281d8200581c42ad1acfc4e58c415d9c410de920c763c006392d7fa69b9a09986b101a2cb1e7d68200581c43a85f2839f1df18abfc04d12a55ec6eefb96f85d1c96236eba8159e19232b8200581c45aaea6b8f8056eb52b26c4115026452bfa4e4cf33a931b0eb85f9711a04ce773c8200581c45b6ff95bf046f3ed0a047e6968e1374d67aa39354965688952fd2171a079227888200581c460417506c1a3042e133cdef4a7dabdd02bda35c14eb43cce13516841903f98200581c46679d60511973cd756322e6fdd1b0d6224eebec681f065a704e753e1a0195a52d8200581c4697386c4e3dc2b43f49564e6361935280f1f751c80a6c9cadbfb33b1a0c85fe408200581c46a31eb43ac7d42255b74f24945badfc5da0014a2e37e6bcb69ce4d91a08b943518200581c4a8b1947b2cf3acdc443a89022a453683c783bf864f8b07a59d943671b000000012bad4bcd8200581c4e049d9d384b6795237264bb400d0174a4c6dc808bdfd70ee692ad2c1a0374aaf08200581c52662fdac99229b8f9682f47c2d3ba181f33e79b429a2a08d0f54d091a0064f8398200581c52f28ebdf268ae3eef783dcac001657502d8fccafa9d8158493f65331a0010daa88200581c59cc53d2aaed4384323b2358333fd607ed9928064b10459af4ec59771a07937e108200581c6877dcb866858b2a4941351c98cd67202262bfd82a016cbbaa0739271b0000011a95bafbed8200581c6cb47c86575faca5f0c555f30b5c45f291aa5d6eeb28d7eed82178491a0048d0198200581c6eab73f5febbfc54243d035bd3df1986a6b88149f6c8178b341dfbc01a00c1e5c38200581c73d2af07d180c46a40ea6f63a04a947588033a401706bc80f72037e51a09017b278200581c745f6af3a90cf0f2bb23f8ab3ae3978ced39a56b31cfacc6b746258b1a01749d798200581c785f7b5357d18f1a887f5b1e114b96071ccccbff253e4b6b01574ae91a0116eac48200581c7ff0ce382f9fc3f12bc0d23749a7d6690b5bca1521a1c83cb78b5e211a0311471d8200581c83b2f390520f69d98a374e391a48da191418e10be9e1f33583ab51771a00945ab98200581c8723dba003e8c3b8d31e20f92d1cab0952b67d4405f64b5957f790c01a00bb80bd8200581c876c8abaa636168c7d43623be103c6bfffcfb0337c05ffd1a7ea72e51b0000000150dda2428200581c98f137b818ec3c13cb9fa89e116af481bc6e80879de23450e714c0f21a00e21bcc8200581c9d6b6319e2e79b0ea46f3a6ed27414ca9563f2fdc1969fd12751ad941a0078fb848200581ca545012a07d0fe8a284fd159753857d3b7ca1f8bfd6a389b0086c73b1a0c64df948200581caaab46ce0889442fe83e74489970ef6337721fe8761478825ec7701e1a16dd0fe38200581cb3877745120a10b5e302cc27303e91fe2a387dcb189a74aacb6493d81a050db0c18200581cbc000424731d5cfdb41da8bbb2e8bfbdcf05becd055a3f831a0ccdfa1a0b46a4c98200581cbfb28b26bc5e5c844e8322889cdb801fbbf0d00a2bfebb67c05367b0192a688200581cc127f4d4d4d729b3a8ba129764c366c7a96c99080546d41f3b18a51b1b000000026b353c4a8200581ccd38f8c900b24bdb5b0d9808b3b781f2c63639ddfe56407291448ced1a009923c88200581cd72821377163a04744a937d9c883ad37f835d53d010377c405a3a76f1a00c6f0ed8200581cdb0de66e9113e8ddecc3642124a557fe0d7753d642162cc1ec85292c1a00b505898200581ce10b3c4fd7b13a5d3b03d0f8f5dac81823e7e25c521b9535eb99f8221a000df4958200581cefb8d63c37774aee85b731f53300e920d0cdfc2fb5e84f6a0ebe678f1969978200581cf1ad22aeae767f9fffccc3c14c271e893c5479bee5e59e673a5ecaed1978008200581cf469490ab5e6ec3f7889b29759e4a40b473c02da521547b1c3027e0f1a00157e568200581cf51bd635bddf367cf9ffc0726f0c492cde7a1b1640c1727d54a7446d1a02d80dda8200581cf8b0dada0c9d9ffeee95d7f536799a4034886e6d60a7367f81948a021a018065828200581cfc19a4302b9fe7b337e6f5a767efc5c875cd874768a19b0c535b9b8c1a000bc7f28200581cfe49dc3325b96a75c098406c0063e9560fc903df998d2b14736f9f2e1a00fb0f8d8200581cfef6bdfbf412da5de3c8d5aa4d9b1e30eef8c44be91b1eeb3afb279a1a0059dfbe8200581cff7893d54dfceeff87c5f298ed1bb1435878ce694a3884eb6619f2b71a013581d3ff07582099f2c2a11bb310d2fc48d394b0946f10eeb0c97614f29d4e23d26694d9212bc7a5008282582045cae0be92fc3798cd1ce05496bc1439728d42f9a8262cc34d7f543f7f5a8c8f01825820fbde6fe2ab20d17e7701a277e3f6f9c426278155ea9b66d58b8b1ad0c9e1bc261841018282583901f33a98483aa3f8e7968b444a5e3dc00e1adea6bcea66b57ed0e94094e512e0225710f61b5cc54df075c02d8b8a56a9a50ae78f5cff08672b1a000f4240825839018ea03c582adafe939362748a746af8cc5956265a1bd725e7a2de86d0e512e0225710f61b5cc54df075c02d8b8a56a9a50ae78f5cff08672b1ab2c6b355021a0002d115031a01e512b70758207bd96a772eadcede1be69dbf670e089a9c84d894b706f6af2e30e238b70bc3fda500818258207da8e470075fad15fdc1e6491c6243f227c8293b45d0bd851701f2ea452bcf9f010181825839015f55d092a48e116c8de09bb9f98b37e76ab59c7459d03d47f8fb60c1e638092504459177f7ca7d69ff356f28abf49805b99265f14aebaebf1a1fdcc802021a0002ab9d031a01e512a9075820f95046da8aee6914b6f42e6fd50a38c17730e8880cfaac5cee91347474280c6aa60081825820a01b9fe136e5703668c9c7776a76cc8541b84824635d237e270670a8ca56a39200018182581d61d80fe69ded1ff90f41e526d0332a2ff98ba8a0d85ceb8941b51784201a05739382021a000376c5031a01e63c82048582068200a48200581c0af10f4a5d365af01f0ca7651713a8a073263b61bbd1f69623097bd71a0fca5cf98200581c14bb4165052cb5bd0ca51869db388610c9ee92ca67e44a239759d0591a04c796e88200581c854139fc8987990fd89699beb1b59b09c047ace356870dcaadc93b221a0052a2268200581cd5b9ca34735343fcfc01d804180c8cfd20c45df317c44dec278ecdf61a0123a66f82008200581c0af10f4a5d365af01f0ca7651713a8a073263b61bbd1f69623097bd782008200581c14bb4165052cb5bd0ca51869db388610c9ee92ca67e44a239759d05982008200581c854139fc8987990fd89699beb1b59b09c047ace356870dcaadc93b2282008200581cd5b9ca34735343fcfc01d804180c8cfd20c45df317c44dec278ecdf607582099f2c2a11bb310d2fc48d394b0946f10eeb0c97614f29d4e23d26694d9212bc7a50081825820269fb6b97199568fd06b86c6dd8270f83150d7d40c215f2ba8f8e457d7bb245000018282583901c6c9a751f0eab448ae680c7606bf4b2384ae9a71295cfb08c17a64ec8603a5a749947b55e82c3ca023c427efed03380884e489835d5bed691a000f424082583901c070231d446324730fde9452e04796492b1929b9673145d01ca9d5458603a5a749947b55e82c3ca023c427efed03380884e489835d5bed691a60e37dc7021a0002b8d9031a01e512be07582070830ca599509b5c16e2ade57f1940041d44cb4261670d2e354199164d112e12a40081825820c0f8e704ffc3d13ba2e4d09a4919f32ae6fcee035b6fda43eb9e9ca17ccd8a4f010181825839012e38ef6f6dae9baa3fa9b2acd8fc2c4f107d7434e51525a00adf110e8a2cf13c17ac2bb9b259e319f57313cecf912ccc0a9e0c8e2f3b9a91821a001c1f69a2581c21514b6c51f0aaa0c9c337329ce93c52fad208cfd0b4ccd51074d9dca14e50494e4b44494e4f43344944353401581cd5e6bf0500378d4f0da4e8dde6becec7621cd8cbf5cbb9b87013d4cca14c53706163654275643137303201021a0002964d031a01e512aea4008182582071149f420d83e79cb197334a53498459bb212088f8ec2d173f5c87a83122dc9401018282582b82d818582183581cc0f1996bab57bd968f3cb5f6c52b0b7f3b37a937661d9a3440a7c517a0001ae951ab841b0000002e90edd00082582b82d818582183581cef15b91c9a8943935b925f188ae69d93b1fb3778287e0df8ebad82e8a0001ad69ba11a1b0000003ec066bc87021a0002a3b5031a01e5127ba40081825820697eb1e4e80920aa55dff603bf7e8df6d315e6fd621c99001a25862080a443f501018282583901fe196271973f89a9abb453c5f44581d3cab2ad3dae125f23c65b481caecbe3dc3fa606f16069de1d7013317100de7f2fee422c613712f3251a26def39782581d616904e8b2c26f3dda6c4a5db4b3ec9e31d581c9960977cfe9c6917a431a23b2abff021a00029cd5031a01e4f753a500818258204f00b22bf5e786cea6dcbed8740eda5a7dd26a88ee920674a01e032e56865d7a00018182583901f18d6a760e1b546680e78e4ec2b63c0f625f085b8925ff1ae40f5480973a4d96aa61a3b3af82dbdbfd15d5998f49fca582f4c617103b6fd71a8acad8f6021a0002b104031a01e5045d048183028200581c973a4d96aa61a3b3af82dbdbfd15d5998f49fca582f4c617103b6fd7581cafb33d38e92e03f9ce86f0175cc33e487b8def0ee25235f1e40183d18da2008282582014117c01278cbe88656a15738fa5e01ef899cf23c425ac3ace6c7042a48cf5b0584092bc3b8ba635ad72fb2cd1ef9b904d0651efe9adc5e8d4dda2063e4f9c8e780e3801524b7b047832db5875237751f51492fef8867dd9fa4ed5d9535713d41b008258207e80cc664e8e06f09351542237eba50a14083803f5d71e46d199046ab6d10ca858404854b2990692d016989742b78a0b51823671d7c09f36dc72f748613cca53f4d0b1084bb8ef4ec981bd063be93e1042038da84db130db8c1d41d257cdba27900001818201828200581c43475dd8f7ff3f4bffb1c0675d7e380b6fc4cd01fe4cc6ab6dc799fd82051a02dc6c00a10081825820991fc8c992024656460d6be0ac794b60050a66eeb8c1a673cb3f6cd476aea60958403171975fb103dea7995f85559fd74d4af4eedb58d4f602b62463052a75a541f952414e532562576893a797ee568e21a6ff5211a206313458491f6a18c94cf40ea10281845820f129f07bbfd87fd1d3ff5fb32e9a5566e02208f89518e9994048add22074f4335840faee03bae826b0b75f9b5ac383100098ade25e92b52c77804e9297321c564416efe7543a823d4fe14f4e94cc2f3f6351062775fb0ed002f04cc4825f24ba610f5820424e682a392581268c7544e34e9c54378a8820bdcf7dddce30490bbb2d363b4b41a0a1008282582073099bfb77940ff95733beca81b062d2355c5938e8c0931444b10af9facbf66f5840bab8e6f8412bea5e8ff61f5d0690043013dd4a14c582f0a23572dd444f797d271ed61017a5b5d7632fef01312c5251daa8dfd1bba2e0737808a18fe9d90ac109825820393b3d3cab6be0897cbc87143cc3a24825dc1d8249df4d37969502931cf856ff5840a96042cae910c15af4d7fdef81172665d5e9ebfbee7f965621859ff06128fe350b8d717fff9109fa9007208cc822ca34b42362d9f46f3e9e067779b2cd0c5309a1008882582061261a95b7613ee6bf2067dad77b70349729b0c50d57bc1cf30de0db4a1e73a85840ee884e65a0218cfedb1cd7fb33dd67c1a8483cde46e990a2b07cdf1b2a02429bcaa26705fb905dd0dc7d00f4b0aa76084de11d9142c0d51f623a39d6797609028258209180d818e69cd997e34663c418a648c076f2e19cd4194e486e159d8580bc6cda5840940aa59d5f5b42a414e8a498f3854c2a3dc358f20e5f13315f96ba54ac846394656bbb3cb29c8bac8fb85bc323a0eea55e42090f5169657974ecadc278b6c10b82582089c29f8c4af27b7accbe589747820134ebbaa1caf3ce949270a3d0c7dcfd541b5840507b4bb892b3412cc67ae4c1200111ab4a3092d36542f1c672eea555807da2e5a8f4788a7f696ac83a014c5d0adeae73c976611838a21490b7cd8930ffbef004825820f14f712dc600d793052d4842d50cefa4e65884ea6cf83707079eb8ce302efc855840f08279536d20eef4d5a1b8bc2b068c7c9901577541a62a5adb462596c8707f5efd16a193f9216fb95fcc307116a9d0f756a4cd1525139448aea2a7f828441b068258208b53207629f9a30e4b2015044f337c01735abe67243c19470c9dae8c7b732798584063bf278a2e77401c8fafaf2d53d7ecf6ba5dbfabfce432d56d9c189f1572507a5158a6aa01d33be4355388f7e850b00aff53dafef5fe0154491f688bdd639a038258205fddeedade2714d6db2f9e1104743d2d8d818ecddc306e176108db14caadd44158407d6b15a4ef09f819f9d2498a316cb3269842878200bedf5550b495772bb20880094950cd3cbb8669dbff863a32555401778df131103bb603b96a9f5b28606004825820cbc6b506e94fbefe442eecee376f3b3ebaf89415ef5cd2efb666e06ddae483935840fab6a4d5b9c19d32202ce689c82aed2a89c02a62ef780694937f4196e65656fd3e4ca0679ca8ca1a83025d1afe8fe2d8e3e6b0db6e9cdd491eaa2ec866604b08825820e8c03a03c0b2ddbea4195caf39f41e669f7d251ecf221fbb2f275c0a5d7e05d158404ddc3610fd5b52e310c52e52fbe8e873a831ab91e525b0733dfed21615b412d17ae77421e645b875bab25378c424c7c2471f674e45cfa1dd2b846b17cb7fe300a100828258204d5a7408218b85ba016167e1fcc5e8d0624ac8171de065b2842feaf4c051d5b9584086d8648acf6e8d3eb75fc56113aa29fc5814fc76fc8b06d583563724cd9c5c6cc097b335b2a2095dfa8c344066ca45d74511545c733e85d0fef5ab8e115de10282582071df0e0628e75eb9d6c891c8a4dc38f81ed8cf757ef424fb7ab651ab4cca2e6f5840083d3fb001c8e68b1cf9bec2d645bdf76636cd3bf3b7250597c09d26f2b0587be0eb69e279a8ad9d6f5e747fbce18a53c0da03e264f2fc794cad73be542a7704a10081825820e6fc61be738e242a1e21459b4e4847d739551dcee94b1f9b64fef42d19812887584068839e96ed4962ba56e0e0ad256d13f2980eb433d3879c9d32683034da65f6fa288b06e02e603741dc1f973ffcb8209da5b4cfd06885d9c78ddca1238f418d00a1008882582061261a95b7613ee6bf2067dad77b70349729b0c50d57bc1cf30de0db4a1e73a85840cfe660cdaff7bc3b24b64c80a3792884f56a84c9cbda089a81a6f01d5174598d1227639eb614ab36eb1fd217e212480acb8f7b109e7490e93bdecd4eb764a90f8258209180d818e69cd997e34663c418a648c076f2e19cd4194e486e159d8580bc6cda58403be9de37031ba2784bbfd08945d9cf8e02d30cde58a2feef5df12f901dca43d6b23bc294e7fd3d5cbcd4eef054dd872b48b477b601eec3e6d623c4cc9b97b10f82582089c29f8c4af27b7accbe589747820134ebbaa1caf3ce949270a3d0c7dcfd541b5840061b8f2c0771b3a7e281222bd11f1e26465e6441cef4957d961a1fafe5406fb5e21351a437177dafe2cb02e79c44466f63220eea6d0096763747469d179fe604825820f14f712dc600d793052d4842d50cefa4e65884ea6cf83707079eb8ce302efc8558400fa377081dd0adc26a806788ad60a71b82bf8057b6785c7b6c6307f03640469105f8f55b46e2c0cf4c5ebc8e8bbba2c5741442e30ece4842e875840a4705080c8258208b53207629f9a30e4b2015044f337c01735abe67243c19470c9dae8c7b7327985840ad8c64b2bb2985e5edf89625c70ffb3484104757675f2d8262ec6318cf9bd4716d3ab39d5a8f914ba1743ac69e16e142055620475dfcdd1389c50cb14c4e060c8258205fddeedade2714d6db2f9e1104743d2d8d818ecddc306e176108db14caadd4415840bb4c5cbd67d83698069c6bce1fc976f007abd15f792783c3e2a83135c6c082ce592e7a17ba5dcf70abaa6605a72d28e46d71ffa084984fc23b7e590578bf8e08825820cbc6b506e94fbefe442eecee376f3b3ebaf89415ef5cd2efb666e06ddae4839358405164f088b9005d1293d2dfc355ae8d64646aafe91d59cd5f5ea215ced68da3d47ef92e3185a3e6db2deeef99620a9df196dea1fc7a622cb6984d12840a3beb0d825820e8c03a03c0b2ddbea4195caf39f41e669f7d251ecf221fbb2f275c0a5d7e05d158407c10de828d07245f566237c8b3fc4fe0364480425ed4ee0439e94e57f87a526b2e581593c04b563bfe7fa423993c967fc8fc968fc1965eb51ca69368a2d7eb06a100818258200b68eb8e7438599681f732bda6eb942d32692cff2e0b43f9b944d67031bc493258405715f38cbdac7f18da841251f206b0d75df29f74269d2a6ed4a25884ad9c67fc15dead361482c4b16a51689de08efd54d9985df84fb49d1ca387070ac732e703a1008182582048d87ba1c9b6369754f9fddb76993befb16914f3b495078baff05fa0ad2ea934584021829192ecccffadb0ac65c33d142ef81627f5e7c9ccc6d40c87356390da85bbe0136b912c85102b9a38558eeaadddeecdbd9b677b6a68b90f6ae46583dac303a10281845820e87aefbe36826ed5f12341b167730b0b4cd6aa7cdd55709d9e675e684b15eadf5840ccc01472bb6017068a0c967b01813b0e4a489c390d4fdcc750eab073f806d82909e34ad7d920a679138e9edc2c5f9e44e5196281f8ab4b49c1f99819e8da520a582094a2c075ed1bf539b9972561edfac666d7c0669676bb98c21bed66a67bdd5bbe41a0a10081825820393b3d3cab6be0897cbc87143cc3a24825dc1d8249df4d37969502931cf856ff58407d647699068327b80e8881e1c93b7a5966863d12cb12e0bdf8261fb5f65f31534571cd0075a547c68057e4be9e72815a49ed08b3dad782c2b8f031deeca9a206a1008282582064bf0b03a9391aea875c6b5e258e26626e97e2279f53dbc9c8e853245f93d51b5840731721e1803e3eedf6866bec354e4122db21b404b89e3f34aa2076519e39262c6bcbec568fc3fafef66e79215497e7b7c461ff6f049e4fca9a4b4cb1b07622098258206951036ecb873cf248486656fafc2583350e2c173f5f3b6bcf1b199ab047179858402c213d314de43c42c6a687e7e088a2583989a7cb85e2c5aedf7baa86aa80cc983f2f92c50a362635cf26992e224bb6bf93530c3cf5a972d134a9b3beaf86f20fa60082a11902d1a178386237656630636662313466353838373430643032636538613533383739666639366162303363376232316563316334353961633262646461a17048617368477561726469616e31373332a96a6261636b67726f756e6464426c756563636964783b6261666b726569656973797734767766756e6d703264356b6263363279646e6333746e646737766433687335647537626b72343267686963323765626964782436613932346364642d346537362d346262362d613037312d31313863393562626462653065696d616765783b6261666b726569656973797734767766756e6d703264356b6263363279646e6333746e646737766433687335647537626b72343267686963323765646e616d657248617368477561726469616e202331373332666e756d6265721906c467737065636965736746616e74617379667472616974738a6657697a617264724c6f6e67626f77205370656369616c6973746e4368616d70696f6e2041726d6f726e476c6f72696f75732053776f7264684f6c642043617065654c65616b7968467269656e646c7967416e6e6f7965646642616e6469746e5769636b656420476c6173736573647479706568477561726469616e800482a100a165697373756578396769746875622e636f6d2f696e7075742d6f75747075742d686b2f63617264616e6f2d6c65646765722d73706563732f70756c6c2f32303130800582a219ef64a40158207c76d90d83e9989d67a520dbe6f3817dd8afa84f5932e622238008253479a66d0258202a85741ebd1076759c4a14649b30cddf1abd9014062b6616d3ca90d7b93aba5003581de1e512e0225710f61b5cc54df075c02d8b8a56a9a50ae78f5cff08672b041a01e4f69519ef65a1015840720ab14d84aaa87369eadaf68898b794c65580742263ba36cb1b757a3e4e6aaff0ced6bd8247fddc4950e9c1bcf8bcbf7e66e3f8008ab70aa2b4ff8f741046078006a219ef64a401582069179a00a3a6aefad3e6821df68ccd916a93dddae8947eebcfab929484f51082025820c2cc2477d19a048c3aceb048cb1b0cd81f80abc328fc2386fb8d87041965d53503581de1e638092504459177f7ca7d69ff356f28abf49805b99265f14aebaebf041a01e4f69019ef65a101584072eb8b90a33fdc9693df74470c6e9a1b0eb3a09ae10d8e9184113e43d1b6b93c2b9732147f3062ef61b997d46a3dc760c8618b4e8fbb4ace04b46f20ce77e70f0782a100a165697373756578396769746875622e636f6d2f696e7075742d6f75747075742d686b2f63617264616e6f2d6c65646765722d73706563732f70756c6c2f32303130800882a219ef64a4015820ba5706b0c36a61eb0ddaad50360d879f8283592475598303b288515a5cfcf49d0258207a995be7ad4ad8e1d6b3c50022d9d55777daaf4c3d6046f2bc74fe63ff70597d03581de18603a5a749947b55e82c3ca023c427efed03380884e489835d5bed69041a01e4f69b19ef65a1015840853aa89563db088d1a8411bd6bb30800ab130396f74c2f230297db31e7d3fe510e690578c775652b30b57a328cd8a8115182792dbfa8eb592e0a72cbeaca500480")]
+ public async Task DeserializeAlonzoBlock(string cbor)
+ {
+ byte[] cborRaw = Convert.FromHexString(cbor);
+
+ const int concurrencyLevel = 1; // Number of parallel tasks
+ const int iterationsPerTask = 1; // Number of deserializations per task
+
+ IEnumerable tasks = [.. Enumerable.Range(0, concurrencyLevel).Select(_ => Task.Run(() =>
+ {
+ for (int i = 0; i < iterationsPerTask; i++)
+ {
+ Block block = CborSerializer.Deserialize(cborRaw);
+ byte[] serialized = CborSerializer.Serialize(block);
+ string serializedHex = Convert.ToHexString(serialized);
+ Assert.NotNull(block);
+ }
+ }))];
+
+ // Await all tasks to complete; if any fail, the test will fail
+ await Task.WhenAll(tasks);
+ }
+
+ [Theory]
+ // Conway
+ [InlineData("85828A1A0025AE551A0388C42158205D36A2CC65C7CF514D8621C4AC913DCFEF9139F3A84BD2F4C9ED853F96AA617B5820545FC09BD41A04EFD719877044DDD763CDE3335260D742F8CA8E835824F31D1258204290CF8B693CD83B04905CA77D79501881B3378186C6BB903B02A89F02555A0D8258406755D74A87F79960D2E181DCB52D1B8DDBA9BF28F6E03E3A7F6A25963393F043DC67A48F031C5BEC8A820441340B34394F632C4E58BE842E8B6EFD7BB43AC6B25850BB794CA51C048D909A5A0F03CB0070F9720B85BA24475307F9217CC363C55753237D148250646E1D6784B0B4A5D4CBD11DDA955130FD62EA6E21E75BD69EC3EEBF5B391B5B18301BEE623722BF0579031909455820A14FE193CDBBCDC9FEDC8F7AAA7CD4611F874B9EED58A5A853B084762FDC3B1D845820A039801147356A3B00EC43BEC3F1682C03E5D89E4572F266CEDBF31A0D7E2F58071901AC584008C0BC13C61BBCB410C428E5DFF312C08D477A9928F4D367C8B1C146CE6A6DBF2C479E132D3B6E79A4CB879EB20F03644A2E646BF636FD7AC76BD4B853CC8A058209015901C0A71890FC274689E181319FF56CB3FDCF2385EF05101F1649ACA68BF145B53C0CD6F77C4357DE04825A46232AF9B274BA019F591B7A80DB8E32BA0B64F917D903DDCADFBEA4B927B6814440A6BC5617B2F9154844FE4CF70CBC227950C794FB6BBF1DB8CACE541CA2C8162E30C39E5327AB3C48C79ED7C9EBA010E7A26EC4E71789D2A7772B54090A3EC4AEBB450F2822DA9F054D6FDD5E10898FFA545C6574282D29660EF785A3EA814691B91FA48FEEB70FA60AAF3DB136CFDE0E4B4742EB1FC81EEEE31D65B57534553A05F7979E6F136F931C96CAD44476EF3147CA9564DFE9C52B5895D21864B21252A47F7BC2530F0C2F1095BF67E41E41A0566AB65945E2485186450660C78D6A734F410DCAFFC4DE2203122B2993F1B31B1640739B994106647C80ACB7D2BCE18E9C0D8F83AB93E243E568EAAB87D235DBD88F3DABA50C24B7335B64CC9C70341F324A0F403459DCC2A7EC05A39A84CC455631FE2C6C13ED54133AD332E3FC0900A71AD9F038FA9EE1E81344ADD9BA9931C795CDD4E53958E8A49E17FB639ECC00992425C2356BE13AFD176902151D0A59B6AA03D583A75E3B8280DB4B52C4851E35260DD5320BFAB5ADDD4F7B382D736E48A374A27682AC0086825820B10A2A5454D9F3DF0A0E8BCC8145F2BFC3D8647C169C63CD7DEACA756360D35F00825820B98B1E681CE1AC9F67E0396C15EB67EBCF9D7C267353599A048C0D385F72A21D00825820B98B1E681CE1AC9F67E0396C15EB67EBCF9D7C267353599A048C0D385F72A21D02825820B98B1E681CE1AC9F67E0396C15EB67EBCF9D7C267353599A048C0D385F72A21D03825820B98B1E681CE1AC9F67E0396C15EB67EBCF9D7C267353599A048C0D385F72A21D04825820B98B1E681CE1AC9F67E0396C15EB67EBCF9D7C267353599A048C0D385F72A21D050182A300581D7077898471D1A56F64CD6FD110E081C1F91B92CC1484F2480AFB48190A01821B000000DB284CF8C5A2581CAF829F4472C3728307007831FA000E450883CFCA4893D9EF535E8786A14004581CB6525F0993875DB27B0A1C780F0E0F1678ACED0DE6CAF0D241B61E87A14001028201D818479F0000000000FF82583900F97CCF4FE384174E63F2250A3C4A61F851112ED0B93CAEB6AA84308E95D8FECA512588E1A954EE5A8AE2BEFF32EA360590BE694B5065D8581B0000000940F2F7FA021A0006865D031A0388C500075820D36A2619A672494604E11BB447CBCF5231E9F2BA25C2169177EDC941BD50AD6C081A0388C3D40B5820CB52347F5003DD50D646124C48807B6BFD277A4ADA0E4A2F04CF24F1CF95193B0D81825820B10A2A5454D9F3DF0A0E8BCC8145F2BFC3D8647C169C63CD7DEACA756360D35F000F001082583900F97CCF4FE384174E63F2250A3C4A61F851112ED0B93CAEB6AA84308E95D8FECA512588E1A954EE5A8AE2BEFF32EA360590BE694B5065D8581B0000000940AD3317111A004C4B4012848258202C4D0BB6309E34F44FA28846CC89CEA762EAC9D2CBB2377E04A8CFF8EBE6319300825820B98B1E681CE1AC9F67E0396C15EB67EBCF9D7C267353599A048C0D385F72A21D01825820CCF53FDCEC75C228401EEC309DD877EA115736CCA7BFD99A6242B1E69BA2928F00825820DC5E36EA57DC042A990562A3A30E1A8AC1FDC86B775BB0A60E2321CBFEFA24CA00AD00818258201DD33FBBFA57094C6D110AF56C6AFF7FEA496DFDC4A07377FB378421BD34EF34010182A30058391008BDD73C5FA824860C0190F5165D04A54DEAC6A5ECA670A8D9BAA4800ACBF9E8A3E38520C208D2FA3A34AC0F25895BBF42C8FBFDEE25C76701821A11E1A300A1581CCCB3B38323F49A9CF26786910363ECB0ED2188BC366BA2FB19F3A2CBA14001028201D818583AD87A9FD8799F581CFE6C4B876CD886C5D745653A74693BAB1B88CB155660CD9E860E900340FF44555344621A001E84801B00000191DAACFE00FF82583900FE6C4B876CD886C5D745653A74693BAB1B88CB155660CD9E860E90030ACBF9E8A3E38520C208D2FA3A34AC0F25895BBF42C8FBFDEE25C767821AF85C37C4A1581CCCB3B38323F49A9CF26786910363ECB0ED2188BC366BA2FB19F3A2CBA144555344621A001E8480021A000F4240031A0388C4B005A3581DF069F53D2FD6162B13276616A5906D2171BA47D35A55E9F1ED43034D0B00581DF0B39623ECA85BB2DD04D6178002B4EA86E5155A7222BA3D4B0D473F2C00581DF0F80DDFD36F4BED1C4CD217ECC03B48B7F334BC677D37CD2AD4B2130C00081A0388C3C009A1581CCCB3B38323F49A9CF26786910363ECB0ED2188BC366BA2FB19F3A2CBA2400144555344621A001E84800B58209CF391C9990D9E6739E94417C0DD556CD1CEEC56DAA0C460A64F40147949EEB90D818258201DD33FBBFA57094C6D110AF56C6AFF7FEA496DFDC4A07377FB378421BD34EF34010E81581CFE6C4B876CD886C5D745653A74693BAB1B88CB155660CD9E860E90031082583900FE6C4B876CD886C5D745653A74693BAB1B88CB155660CD9E860E90030ACBF9E8A3E38520C208D2FA3A34AC0F25895BBF42C8FBFDEE25C7671B000000010A3639A4111A0016E36012868258201DD33FBBFA57094C6D110AF56C6AFF7FEA496DFDC4A07377FB378421BD34EF34008258206A6702530FD240D59C8C5C5A9D1C1B27EB97E8BB3306237C31EC872A9E7E44E800825820D4881363D26D9A2A4151F28DE2758AD2D178E21E7BDA08D5ACE2BED7A28E957800825820899827FF697464CDA2C4EC9E1728F55BA3E05EECCDA7B26468A58B981D47F4D8008258205211C14C17F004A208F339F8842D76259E4D22090961709057F166B0D3E65C380082582006B612A91EB2404E00B33887A9172A8DFBF4D65A68F62F3048705069BB1B047D0082A200828258206E290CA92C2484C00955ECF4F6C2E539E2223365872A2018BA1CF761AA3683C85840366702170926F94A51E449E4727A55670F47EADF39B7CDD7C977B894665DC5AD1FECD30FEA2AB439499A19C3164B9B501F40AD66AE409A1C9D05BCD4DDD1A008825820F682256DD3AC458ED70642847BC830DE8B7C4871A4DEE7D2AF1FE4EC72D5AC5E5840DD500D3D2B6AA3C00307230F9581E752709E7D69A7E0DA9E23157B55D426AEE7A9C094A9A8BAB9E1DD75FA8020C869D5602645ADAA1F74E77D60D9F9746317030585840001D87980821A000B47C41A10D440C5840003D87980821A0001754E1A01C2DB0D840002D87980821A0001754E1A01C2DB0D840004D87980821A0001754E1A01C2DB0D840005D87980821A0001754E1A01C2DB0DA20081825820CCD6976C1E7A98C6CEEA2770C5757F5F62BE558DF9170BD85AD31E911B563F145840FC09E6B32D896990C5E2EAF4DAE5FD070ECB2085EE96D544B9EA8C5B60405FC3A21FCD3221FB7C60A5BF0B9FE15AFA091AB4D2FCEDF75FF7DDCAF76421B0410F058484010000821960B61A0093804A8403019FD8799FD8799F9FC24C0AFD35CBEC1F0EB61C6A5B4DC24C0CEFB03531E283A5DF051C66C24C067D7F114BF03905256C13A9C24C0E4A467359993326D19A78FBC24B76D585C1A093723F32404EC24D598DE7F123CC80BA2DBE2FBD40FF4455534462C24C204FCE5E3E25026110000000D8799FD8799FD87A9F1B00000191DAACEA81FFD87A80FFD8799FD87A9F1B00000191DAB17E61FFD87980FFFFFF58404F33E732ADCB80A24B323BD160054CE8CF33641E2DF1AFBA2BFCE109CB8C143745880CA239B1DFB6A0C86241DC36A3E0199071F11A53267FB7836AB0DEDEB103FFFF8219B3281A09901770840300D8799FD8799F58206A6702530FD240D59C8C5C5A9D1C1B27EB97E8BB3306237C31EC872A9E7E44E8FF00FF821A00022BA21A03AE0FA6840302D8799F809F01FFFF821A0018D74E1A1D971D76A100A080")]
+ public async Task DeserializeConwayBlock(string cbor)
+ {
+ byte[] cborRaw = Convert.FromHexString(cbor);
+
+ const int concurrencyLevel = 1; // Number of parallel tasks
+ const int iterationsPerTask = 2; // Number of deserializations per task
+
+ IEnumerable tasks = [.. Enumerable.Range(0, concurrencyLevel).Select(_ => Task.Run(() =>
+ {
+ for (int i = 0; i < iterationsPerTask; i++)
+ {
+ Block block = ConwayBlock.Read(cborRaw);
+ byte[] serialized = CborSerializer.Serialize(block);
+ string serializedHex = Convert.ToHexString(serialized);
+ Assert.NotNull(block);
+ }
+ }))];
+
+ // Await all tasks to complete; if any fail, the test will fail
+ await Task.WhenAll(tasks);
+ }
+
+ [Theory]
+ // Conway
+ [InlineData("84828F1A0057D7E81A01CD568058205F484B951F012ED53FDB9E30DA0660902354C705F112745BF3B19EC31BC9BB005820E1806A6AF0EB0931EBDF8B766229CF9323F2252573AA6C6998DD1522FFDFBCC858204A20392BB23CEF3777DC1E9FA9B0719EC829B4B87C9E4295141DFB7C6783C3108258408C6059B6952E68EDCD6431F6EDB191705D29CDF82F8A9B855CEE856C8B33DF96B2F567107B4637F6E1FECA3585C9CB1066088BB8496DEA4260C344E2595C997B58508E39D072957817E7D89C19F78E2BB288553E215E81E435D88CE5B3869D10923982E8253112948035D7697762FBF555005D7682E3D5FDB09FE3EDBBDF65CE72514490882CBC89DD5F0A6CFB205EE52408825840000030ED0D10485C31937741CAB13B3D0C247BF9FF8155BF649C6FB314C40788C68F71E5064920C4964893225A77F8EFE65C19C0110DA27DAD4B72582880748F58500272D91E01C1C6C43C51FD1B1651ACD45ECB841BB2762C569C15E90B65D2515F669538C4F41C19CE20B01BB61D685A2B102124525D2F385A8B04283EEFF3C80017D430A075790DFAE7BA3BF1F3C1A90B192E515820A82D45674A1274786D8B9534F9F1F5887D4CB5103EF76E2D8E60ABBB9E2BE02D5820ED46BC0F963545DEBD5FDC3379D01C1EA7922685A4B823CB4DE51FFC63358B140418E0584052DE2D342719F78585E2B0A6959EB54E1D14385A0B04DAC45CA8AAE062094E7DFFD18AB533C0314779C91474A28D47A57FE085290EC2E422953860764CED0C0304005901C005B77FFDF89651681B6DFF5B1F54AE9824D589FE38DE8B9E0CFBA98B1002AC3013ED3B53EE39910C3AD7226A2D438F35D29B7BF4C8215DD379B9187E6622880A197DF65334198B5B195DC470550CD84D466F08E5B4ACA7B9F06CE4A748DB9C1DA29AF843ED989D7E814E2B778E3B713E5C6E7323531D1782AC3D01BE00B19EC65314E3015D71812389883C1B4C49064E20C3DFFF2745D028A7C336E21E4EEDBF73D048B86F7DF61B3DC2FA412F4BFA21C47CB4485DD1C432FDF562B31604DD3C4FD94F062C6269F74AC840A7A0F66539F84D0FA83520A78FD66779936B8B10C05FA29E3551D554696A95E6F62C240EDDD4CCDDD5E06E8C3876B100D94BA3217BD191B8D3BBD381DCD100E1BDF69D8F48CD3D9004FBC3B22E44546DAC068ACF85B04B6571155D469CEC8E9745D2E4A6F63E6982E65C4DB0F36B95CAF815FE535A45ABA199F9CDBD9A2BE400A49A0A4951EF4E8B423D920964BFB571B2C112F1FA66535424C4EA8CAF91791D4FDBEBA7309013826041C4EAA0FB8C958B0FE39B94353D81A6F788A90B9661770A168A713BF604EEAE769249E22298B86A6AFA27FA3104C1E27F1BBB914483A0686BBF24862F77A5E5B04E22F1D499A8883128FD6686A400818258204965D8B3C4824C86DD438840AC1A6C4D6FD2C1B6C0B58A2C14A845956D60FC4A01018282583901150E57FAE6104A97667E71EE10C3F55DF30ADD6B9C6D9B6189637681A51A1F56EB82FE568B7D57366BA2C8BA379889DD648220334812BCB61A0602410682583901E55D850D4DC5E611B740A5F61F836FB777E496A7A65ABDB3779D9017E28C1958BD7614D1C1A32FE155A47FF88CE2C0889A04E61983AF01831B00000015486ACC6C021A00029361031A01CD729DA40081825820F2CFE413FCC190C6A7424E542430572B0556AB71D16DEBDCA9A711AF1F0285F301018282584C82D818584283581CA74249849532514E2B1CECB943DF5CFA5919B0A8E2D7A1B9E0AB53C1A101581E581C12F1DAE7310D0837C2AD675B952BF5EA75B37FA7F258DEDA6C1301F6001AA4BC56581B000000012A059C1082582B82D818582183581C8E1238576C088D5088017715A77B8903B57EB282289B3F5D0A6C483AA0001A99CC1C161B000000043DAB7E7D021A0002A544031A01CD6451A4008282582095F34F20F95E4E97BB1695C0DE4FF9123FBAABF5BEA3199785DADAC4D40D4CE30182582038F022E851DC49640541D938383A5F63A5CD88B30DAECB651509953E70935CDD01018282582B82D818582183581C4CE47F03FFEA34A3D3316CDDC715ACCE37FEA271FD5079FDB5769543A0001AF669DF521A0119FA4C82581D616904E8B2C26F3DDA6C4A5DB4B3EC9E31D581C9960977CFE9C6917A431A001426BA021A0002BF35031A01CD5709A6008382582000E56B08DE6A647B6F6155EF64A1BC253C532735CBB54FF0F585AAC3A3CC17A0008258205B14E7ECFF7B6AAD407570397359EB4DA84E298285728267C475463A1B0345DD01825820F4D06B5DA11EC1BDF57A72CAA8C3A1DDD5DE3727F9011FB6924C44CD4BA2CC450101828258390148D9F60950CEC0B5F5BA4CA2A305F8D16F23BFB1D2B780FDB199B3F9CBE310A3070E37D57355E49F94E21A4F659C1AD8C9996DD410F4AE1C821A007270E0A1581C2F633081F8B95C9A0160FCAFC2FF18F2676634633CCC9DDD0A7CB25DBF494C464331306F66323501494C464331316F66323501494C464331326F66323501494C464331336F66323501494C464331346F66323501494C464331356F66323501494C464331366F66323501494C464331376F66323501494C464331386F66323501494C464331396F66323501484C4643316F66323501494C464332306F66323501494C464332316F66323501494C464332326F66323501494C464332336F66323501494C464332346F66323501494C464332356F66323501484C4643326F66323501484C4643336F66323501484C4643346F66323501484C4643356F66323501484C4643366F66323501484C4643376F66323501484C4643386F66323501484C4643396F66323501534C6F7665466F7243727970746F31306F66323501534C6F7665466F7243727970746F31316F66323501534C6F7665466F7243727970746F31326F66323501534C6F7665466F7243727970746F31336F66323501534C6F7665466F7243727970746F31346F66323501534C6F7665466F7243727970746F31356F66323501534C6F7665466F7243727970746F31366F66323501534C6F7665466F7243727970746F31376F66323501534C6F7665466F7243727970746F31386F66323501534C6F7665466F7243727970746F31396F66323501524C6F7665466F7243727970746F316F66323501534C6F7665466F7243727970746F32306F66323501534C6F7665466F7243727970746F32316F66323501534C6F7665466F7243727970746F32326F66323501534C6F7665466F7243727970746F32336F66323501534C6F7665466F7243727970746F32346F66323501534C6F7665466F7243727970746F32356F66323501524C6F7665466F7243727970746F326F66323501524C6F7665466F7243727970746F336F66323501524C6F7665466F7243727970746F346F66323501524C6F7665466F7243727970746F356F66323501524C6F7665466F7243727970746F366F66323501524C6F7665466F7243727970746F376F66323501524C6F7665466F7243727970746F386F66323501524C6F7665466F7243727970746F396F66323501FF82581D610CF2D472123546C1D59E974DA3DC0662B3233990EBC212EEA91F2EBE1A008192FB021A0009339D031A01CD56E1075820FA0A2DB8B6D6E5D62D2CBBE16C7D6BD3899138F769C10EBD671654910E8A27C909A1581C2F633081F8B95C9A0160FCAFC2FF18F2676634633CCC9DDD0A7CB25DBF494C464331306F66323501494C464331316F66323501494C464331326F66323501494C464331336F66323501494C464331346F66323501494C464331356F66323501494C464331366F66323501494C464331376F66323501494C464331386F66323501494C464331396F66323501484C4643316F66323501494C464332306F66323501494C464332316F66323501494C464332326F66323501494C464332336F66323501494C464332346F66323501494C464332356F66323501484C4643326F66323501484C4643336F66323501484C4643346F66323501484C4643356F66323501484C4643366F66323501484C4643376F66323501484C4643386F66323501484C4643396F66323501534C6F7665466F7243727970746F31306F66323501534C6F7665466F7243727970746F31316F66323501534C6F7665466F7243727970746F31326F66323501534C6F7665466F7243727970746F31336F66323501534C6F7665466F7243727970746F31346F66323501534C6F7665466F7243727970746F31356F66323501534C6F7665466F7243727970746F31366F66323501534C6F7665466F7243727970746F31376F66323501534C6F7665466F7243727970746F31386F66323501534C6F7665466F7243727970746F31396F66323501524C6F7665466F7243727970746F316F66323501534C6F7665466F7243727970746F32306F66323501534C6F7665466F7243727970746F32316F66323501534C6F7665466F7243727970746F32326F66323501534C6F7665466F7243727970746F32336F66323501534C6F7665466F7243727970746F32346F66323501534C6F7665466F7243727970746F32356F66323501524C6F7665466F7243727970746F326F66323501524C6F7665466F7243727970746F336F66323501524C6F7665466F7243727970746F346F66323501524C6F7665466F7243727970746F356F66323501524C6F7665466F7243727970746F366F66323501524C6F7665466F7243727970746F376F66323501524C6F7665466F7243727970746F386F66323501524C6F7665466F7243727970746F396F66323501FFA400838258206AFC8C499DA5C42C53EA442A8051B3081031F171EEEA4432991506381E2D8EB800825820D3AEFFEA2371A3EF2F195F40246FA89E20C6E349AB24B715E38E0F51D0E7E63601825820ECC73F986B568B27A052A4C0790B44582FDD584744D86F43DC6AAA5F9686AC3601018282583901D9ED3E385682557B35884980DC1721FF24BC2DEA1E22A311831AFB5CE38B3FBA9B40FED456199D3775F4AFDDF380B146336AE517925C554C1B000000015AC7129382584C82D818584283581CA1030E3B880D76789EC6B808E209AE56E827A4F57462B8FEC6802527A101581E581C2B0B011BA3683D173E253C2AC6D394B5300A9CB53F650EAA06FC6E19001A15BF798E1B00000001FB31CA1D021A0002F1BD031A01CD7297A40081825820C6C4EB1417FF576769B8F3FF6CBE2996D4A5CDC4E4B45EC30EB4E7577ED1EE2400018282581D61894D3315AF10374E5D1438C9B4108DE597245B7BC681BFE67C7204731A002DC6C082583901D5311050FC69536704CE36EFC076B515C1CCF8A13BAA820D30FCA8D04B4F2B1786E68840B7AA1C71827992FFB04D7D9C197D2E5B6847F82E1A0316E87F021A00028C81031A01CD728C86A10081825820FDAF2F6EF24890889F502DE09ECDEC7C9F676AB206E87613486F56F9799D605E5840CC1D70B7ACF2CE7281C21FBDB6559C8C1327499A1C4A6E8CEBB7072615EBFE0E51A4BFC2795BF692F9B4388831475FD7F1E9BDBF895EFC9FE83D87AD6E89FA0BA10281845820F4BCA00671176355C1DBE65F0AFBB2BAAC60D4F4762563C53014528F53D4984758409E078F6E746C8C25BF71E322C6AE15C67B28B2E2361AA3B2AE215525697746D592386443F6690D5556A5A550785B001E0F88DD86558D41172FC976DBE1CCB50A582061D1E3D6F0036146FA182D137EBD354A1DC7347829CF5308E166838AF163DCED41A0A10081825820393B3D3CAB6BE0897CBC87143CC3A24825DC1D8249DF4D37969502931CF856FF584063AAC1C764BBEA7851086BB765006D0209B36C15465547777881201140363E81153A18A7740C43A3E5377C111DF6C4FB773CAA30E8E36F45B05B6E15ADE34507A20081825820FD23AF269D1C2FD6BC66414B0AD239D3C6A843736FAE547A3EAC84BFCE301DAB5840DF212C60FD973B40094791B3258ABD26941852FC58FF5AE5D93EAA4027E7E94024CF0F1B792B81BCDB4475558D263E625D5564931610F3244ADC533CF9CAE60801818201828200581C0CF2D472123546C1D59E974DA3DC0662B3233990EBC212EEA91F2EBE82051A01CE9FB8A10283845820372A30B3C7A74189AD37BD55D35CB23722F5796693D983418FFB651E7F6164B158404499F9B35646E7F0844745F06B230305C474BB8E62ED91AE81C0D608F6D6ADDA7819BE1924BDC3BF4877DC912D13301E53CF51B614ECACC79F740379CB39300C582085551602903BC9BB1E393C8F797916EE01AE73272D5F43AD03E0AEB949EA69E55822A101581E581C2B0B011BA3683D5E4F72362A1243BCB5295CD8B1A82DF9E0DD758EE3845820C8354629E05665F031B2D1C4DC939C875D6A8166105A0D1452AD18AE2ED2231D5840459AF05A287FFABBF7D357D58F960292AFD89E4A303BDF1C45490D9853EB8F829C99677557D271712C5B52D5B5D63822F4592FC59D6D111587F827589A9F6E045820292B6546849392C190F00BE1161430AAD58A7281CCDCB491EAEF2818F66D99635822A101581E581C2B0B011BA3683D33AC3B7C2AF8C6AF7FF97376ABA498597192928ABF845820E49A56A62860A3689AFEA7E2E7D9CDF15D40F4958ACF0F5E9220A5063A36C8FB58401EF3F6F373D5B6E34A3C1DCFEDC67B436EFE46F2B363318731F51BCEE65013EF9CF2EBEC16D4A15DEB4C5FF4F882241987C660B00ABD03BA99EE7E1F162CF60158201DB2FA3F78A86ECB6E3ACB6237CA09E8BCC11D39EAE9E41A54F3217DC8578F2D5822A101581E581C2B0B011BA3683D1C06C49F2A0FE17210E840E52FD4BB52A5BFC5667BA100818258205B1F1B34E11EA7676A23D2773EE79A3446C3D2D488C0F50CAB2C41B6535D3D955840A5161E51190D98CF6DF88D70C2C7C4749FAB9822D92B1FD282B7B0857788E6EE1FB4756643375E726E99F2AAE0BC5CEDCF83540902F762C7A1D1A7DC646E6007A10382A11902D1A278383266363333303831663862393563396130313630666361666332666631386632363736363334363333636363396464643061376362323564B832684C4643316F663235A3646E616D656B4C46432031206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643326F663235A3646E616D656B4C46432032206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643336F663235A3646E616D656B4C46432033206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643346F663235A3646E616D656B4C46432034206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643356F663235A3646E616D656B4C46432035206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643366F663235A3646E616D656B4C46432036206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643376F663235A3646E616D656B4C46432037206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643386F663235A3646E616D656B4C46432038206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F684C4643396F663235A3646E616D656B4C46432039206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331306F663235A3646E616D656C4C4643203130206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331316F663235A3646E616D656C4C4643203131206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331326F663235A3646E616D656C4C4643203132206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331336F663235A3646E616D656C4C4643203133206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331346F663235A3646E616D656C4C4643203134206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331356F663235A3646E616D656C4C4643203135206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331366F663235A3646E616D656C4C4643203136206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331376F663235A3646E616D656C4C4643203137206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331386F663235A3646E616D656C4C4643203138206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464331396F663235A3646E616D656C4C4643203139206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464332306F663235A3646E616D656C4C4643203230206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464332316F663235A3646E616D656C4C4643203231206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464332326F663235A3646E616D656C4C4643203232206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464332336F663235A3646E616D656C4C4643203233206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464332346F663235A3646E616D656C4C4643203234206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F694C464332356F663235A3646E616D656C4C4643203235206F6620323565696D6167657835697066733A2F2F516D5A477A5A39793967576D53356D616D33324771694373475066473134436332357745464A477A59506F656A4569617277656176654964782B4C5530746D516758744843737A3778733661477432507A3768477A58774A70314739386B75515A6C72306F724C6F7665466F7243727970746F316F663235A3646E616D65754C6F7665466F7243727970746F2031206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F326F663235A3646E616D65754C6F7665466F7243727970746F2032206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F336F663235A3646E616D65754C6F7665466F7243727970746F2033206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F346F663235A3646E616D65754C6F7665466F7243727970746F2034206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F356F663235A3646E616D65754C6F7665466F7243727970746F2035206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F366F663235A3646E616D65754C6F7665466F7243727970746F2036206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F376F663235A3646E616D65754C6F7665466F7243727970746F2037206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F386F663235A3646E616D65754C6F7665466F7243727970746F2038206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F396F663235A3646E616D65754C6F7665466F7243727970746F2039206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31306F663235A3646E616D65764C6F7665466F7243727970746F203130206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31316F663235A3646E616D65764C6F7665466F7243727970746F203131206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31326F663235A3646E616D65764C6F7665466F7243727970746F203132206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31336F663235A3646E616D65764C6F7665466F7243727970746F203133206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31346F663235A3646E616D65764C6F7665466F7243727970746F203134206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31356F663235A3646E616D65764C6F7665466F7243727970746F203135206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31366F663235A3646E616D65764C6F7665466F7243727970746F203136206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31376F663235A3646E616D65764C6F7665466F7243727970746F203137206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31386F663235A3646E616D65764C6F7665466F7243727970746F203138206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F31396F663235A3646E616D65764C6F7665466F7243727970746F203139206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F32306F663235A3646E616D65764C6F7665466F7243727970746F203230206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F32316F663235A3646E616D65764C6F7665466F7243727970746F203231206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F32326F663235A3646E616D65764C6F7665466F7243727970746F203232206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F32336F663235A3646E616D65764C6F7665466F7243727970746F203233206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734734C6F7665466F7243727970746F32346F663235A3646E616D65764C6F7665466F7243727970746F203234206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A717535363866567734724C6F7665466F7243727970746F316F663235A3646E616D65764C6F7665466F7243727970746F203235206F6620323565696D6167657835697066733A2F2F516D57645A764872584366314A6B525566724E3569414B6A32674534627A58657171666D48436451356F424C376769617277656176654964782B72314E6849674A33623942683259663752747254314233383569744C5A487649357A7175353638665677346A706F6C6963794C696E6B7835697066733A2F2F516D61774A655957577176675439515876754D476858394E76683552745933316E4C674A7646445A57314C74517780")]
+ public async Task DeserializeAlonzoWithDuplicateKey(string cbor)
+ {
+ byte[] cborRaw = Convert.FromHexString(cbor);
+
+ const int concurrencyLevel = 1; // Number of parallel tasks
+ const int iterationsPerTask = 1; // Number of deserializations per task
+
+ IEnumerable tasks = [.. Enumerable.Range(0, concurrencyLevel).Select(_ => Task.Run(() =>
+ {
+ for (int i = 0; i < iterationsPerTask; i++)
+ {
+ Block block = CborSerializer.Deserialize(cborRaw);
+ byte[] serialized = CborSerializer.Serialize(block);
+ string serializedHex = Convert.ToHexString(serialized);
+ Assert.NotNull(block);
+ }
+ }))];
+
+ // Await all tasks to complete; if any fail, the test will fail
+ await Task.WhenAll(tasks);
+ }
+}
+
+// [Theory]
+// // Conway
+// [InlineData("820785828A1A002D34C71A04563448582025FAE387A21887B140E3E8F6D52116837E06E588640805088B15AB307AA3F85A5820BE5501BDA6376FBE9952E2E4AFAF3F7726C82D45FEBD3E359240F91D3558713E58205606C6FCF1CD2874FC7A7792CB20C50F60CB634821AC2BDE34E215527B7FC3518258407B734B5F5313EF6FA62F75519BF3FB4E8C1C7AABA74371F55C9C74047B2FDD5D258038C090E351422076C71674E594B889B6052D9F22AB62A0A5FA25364142355850647395C521E6549B810DA6F21DDB37392F0C65D1410A3F1CBF7F7A79A64821329C110D868DDC553708FA9146AD0BEBD81E3C83D8F9DE5081BF55A5290147B5A5E19624E95451BDD04217B748A5AAAE0604582029571D16F081709B3C48651860077BEBF9340ABB3FC7133443C54F1F5A5EDCF18458206639753EE5E1717AD8B41A0234B8CF87D6452FCABE2EF989A2442ED0A5CC4AA3061901FC5840C0FF15AABA20D8DDEFA00EEC010D12BE728EE9C11068F245BDA7B40D449E7E85E8E67D0D3B0D63071321BE3E551F3B9F414E2974E8A40B896F9AA04BFBDC4A0A820A025901C0BA463AA894438450B3DA9C5D3D1C54753E8B1D93A735AF7EAD983E3EB98626441BAE2BFF55F794596EC342302EEBC2026A4CDD6C76CC6C55BA735BF04F26B603CB80BED294C6F5EB707FA945628ECD175CADFA11586281307DE618ACD0661EE88623165FEE60C0FF6C9EA8321B1C2BDA6AA273689CC40BB52C2969A6D4C4F1BFBF36EEE18B0783863E61833B01F0A49BEF441087F895A53E6895B8AFD6F0BB2492C2D7ADC28DFACD0D802F33861E1A7174938CE3720325F5E192375BB5851D4253351AF5595B4FCB63F4D82115257C30FCA40CC0905AD063E98985CD70CD6FF896AC42D0F30349655028A5371709AF1EEF6248EDA6C7F034CB840092C79C2F50C00D9777CE1D2B43AAD1CD84FF8BE31BFA0D1B8026EAD61E1981B5D9D3395A57DC2F9D3668EDD9400EF774B9E620B0F64F7D566C210B912BBBB29E1F3978E4F550D491EA45C559C9E4BB8B6C2D44C67BC7714A55C9C72AEF04F3EED2BFF7581A013FD4D5AFD9A079450C83F77583E3DD5F383A5A28975F87EA50AF2A9655EF46BCF263C865094A66B7A33F1B0357734D5C31DA3C091484B8876850BB590DB3DFACF50B5E0F9380DCF1C186F975969CE82690BA3E8C862CB8148350B3A34667218080A080")]
+// public async Task DeserializeBlockWithEra(string cbor)
+// {
+// byte[] cborRaw = Convert.FromHexString(cbor);
+
+// const int concurrencyLevel = 1; // Number of parallel tasks
+// const int iterationsPerTask = 1; // Number of deserializations per task
+
+// IEnumerable tasks = [.. Enumerable.Range(0, concurrencyLevel).Select(_ => Task.Run(() =>
+// {
+// for (int i = 0; i < iterationsPerTask; i++)
+// {
+// BlockWithEra block = CborSerializer.Deserialize>(cborRaw);
+// Assert.NotNull(block);
+// }
+// }))];
+
+// // Await all tasks to complete; if any fail, the test will fail
+// await Task.WhenAll(tasks);
+// }
+// }
\ No newline at end of file
diff --git a/src/Chrysalis.Test/Chrysalis.Test.csproj b/src/Chrysalis.Cbor.Test/Chrysalis.Test.csproj
similarity index 50%
rename from src/Chrysalis.Test/Chrysalis.Test.csproj
rename to src/Chrysalis.Cbor.Test/Chrysalis.Test.csproj
index 3534efc1..6cd28db6 100644
--- a/src/Chrysalis.Test/Chrysalis.Test.csproj
+++ b/src/Chrysalis.Cbor.Test/Chrysalis.Test.csproj
@@ -1,29 +1,38 @@
-
-
-
- net8.0
- enable
- enable
-
- false
- true
-
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
-
+
+
+
+ net9.0
+ enable
+ enable
+
+ false
+ true
+
+
-
-
-
-
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor.Test/ModuleInitializer.cs b/src/Chrysalis.Cbor.Test/ModuleInitializer.cs
new file mode 100644
index 00000000..911f0d0c
--- /dev/null
+++ b/src/Chrysalis.Cbor.Test/ModuleInitializer.cs
@@ -0,0 +1,13 @@
+using System.Runtime.CompilerServices;
+using VerifyTests;
+
+namespace Chrysalis.Test;
+
+public static class ModuleInitializer
+{
+ [ModuleInitializer]
+ public static void Init()
+ {
+ VerifySourceGenerators.Initialize();
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/AuxiliaryDataSet.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/AuxiliaryDataSet.cs
new file mode 100644
index 00000000..0e68eb3e
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/AuxiliaryDataSet.cs
@@ -0,0 +1,8 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.WitnessSet;
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block;
+
+[CborSerializable]
+public partial record AuxiliaryDataSet(Dictionary Value) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Block.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Block.cs
new file mode 100644
index 00000000..233cb557
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Block.cs
@@ -0,0 +1,43 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Header;
+using Chrysalis.Cbor.Types.Custom;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.WitnessSet;
+using Chrysalis.Cbor.Serialization;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record Block : CborBase { }
+
+[CborSerializable]
+[CborList]
+public partial record AlonzoCompatibleBlock(
+[CborOrder(0)] BlockHeader Header,
+[CborOrder(1)] CborMaybeIndefList TransactionBodies,
+[CborOrder(2)] CborMaybeIndefList TransactionWitnessSets,
+[CborOrder(3)] AuxiliaryDataSet AuxiliaryDataSet,
+[CborOrder(4)] CborMaybeIndefList? InvalidTransactions
+) : Block, ICborPreserveRaw;
+
+[CborSerializable]
+[CborList]
+public partial record BabbageBlock(
+ [CborOrder(0)] BlockHeader Header,
+ [CborOrder(1)] CborMaybeIndefList TransactionBodies,
+ [CborOrder(2)] CborMaybeIndefList TransactionWitnessSets,
+ [CborOrder(3)] AuxiliaryDataSet AuxiliaryDataSet,
+ [CborOrder(4)] CborMaybeIndefList? InvalidTransactions
+) : Block, ICborPreserveRaw;
+
+[CborSerializable]
+[CborList]
+public partial record ConwayBlock(
+ [CborOrder(0)] BlockHeader Header,
+ [CborOrder(1)] CborMaybeIndefList TransactionBodies,
+ [CborOrder(2)] CborMaybeIndefList TransactionWitnessSets,
+ [CborOrder(3)] AuxiliaryDataSet AuxiliaryDataSet,
+ [CborOrder(4)] CborMaybeIndefList? InvalidTransactions
+) : Block, ICborPreserveRaw;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/BlockWithEra.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/BlockWithEra.cs
new file mode 100644
index 00000000..db0312f2
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/BlockWithEra.cs
@@ -0,0 +1,12 @@
+using Chrysalis.Cbor.Serialization;
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block;
+
+[CborSerializable]
+[CborList]
+public partial record BlockWithEra(
+ [CborOrder(0)] int EraNumber,
+ [CborOrder(1)] Block Block
+) : CborBase, ICborPreserveRaw;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Body/HeaderBody.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Body/HeaderBody.cs
new file mode 100644
index 00000000..e79c54e0
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Body/HeaderBody.cs
@@ -0,0 +1,47 @@
+using Chrysalis.Cbor.Serialization;
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Header.Body;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record BlockHeaderBody : CborBase, ICborPreserveRaw
+{
+}
+
+[CborSerializable]
+[CborList]
+public partial record AlonzoHeaderBody(
+ [CborOrder(0)] ulong BlockNumber,
+ [CborOrder(1)] ulong Slot,
+ [CborOrder(2)][CborNullable] byte[] PrevHash,
+ [CborOrder(3)] byte[] IssuerVKey,
+ [CborOrder(4)] byte[] VrfVKey,
+ [CborOrder(5)] VrfCert NonceVrf,
+ [CborOrder(6)] VrfCert LeaderVrf,
+ [CborOrder(7)] ulong BlockBodySize,
+ [CborOrder(8)] byte[] BlockBodyHash,
+ [CborOrder(9)] byte[] HotVKey,
+ [CborOrder(10)] ulong OperationalCertSequenceNumber,
+ [CborOrder(11)] ulong OperationalCertKesPeriod,
+ [CborOrder(12)] byte[] OperationalCertSigma,
+ [CborOrder(13)] ulong ProtocolMajor,
+ [CborOrder(14)] ulong ProtocolMinor
+ ) : BlockHeaderBody;
+
+[CborSerializable]
+[CborList]
+public partial record BabbageHeaderBody(
+ [CborOrder(0)] ulong BlockNumber,
+ [CborOrder(1)] ulong Slot,
+ [CborOrder(2)][CborNullable] byte[] PrevHash,
+ [CborOrder(3)] byte[] IssuerVKey,
+ [CborOrder(4)] byte[] VrfVKey,
+ [CborOrder(5)] VrfCert VrfResult,
+ [CborOrder(6)] ulong BlockBodySize,
+ [CborOrder(7)] byte[] BlockBodyHash,
+ [CborOrder(8)] OperationalCert OperationalCert,
+ [CborOrder(9)] ProtocolVersion ProtocolVersion
+) : BlockHeaderBody;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Body/OperationalCert.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Body/OperationalCert.cs
new file mode 100644
index 00000000..f3856f08
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Body/OperationalCert.cs
@@ -0,0 +1,14 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Header.Body;
+
+[CborSerializable]
+[CborList]
+public partial record OperationalCert(
+ [CborOrder(0)] byte[] HotVKey,
+ [CborOrder(1)] ulong SequenceNumber,
+ [CborOrder(2)] ulong KesPeriod,
+ [CborOrder(3)] byte[] Sigma
+) : CborBase;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Body/ProtocolVersion.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Body/ProtocolVersion.cs
new file mode 100644
index 00000000..fecd6f39
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Body/ProtocolVersion.cs
@@ -0,0 +1,11 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Header.Body;
+
+[CborSerializable]
+[CborList]
+public partial record ProtocolVersion(
+ [CborOrder(0)] int MajorProtocolVersion,
+ [CborOrder(1)] ulong SequenceNumber
+) : CborBase;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Body/VrfCert.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Body/VrfCert.cs
new file mode 100644
index 00000000..127cb1f8
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Body/VrfCert.cs
@@ -0,0 +1,11 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Header.Body;
+
+[CborSerializable]
+[CborList]
+public partial record VrfCert(
+ [CborOrder(0)] byte[] Proof,
+ [CborOrder(1)] byte[] Output
+) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Header.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Header.cs
new file mode 100644
index 00000000..4581df86
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Header/Header.cs
@@ -0,0 +1,13 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Header.Body;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Serialization;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Header;
+
+[CborSerializable]
+[CborList]
+public partial record BlockHeader(
+ [CborOrder(0)] BlockHeaderBody HeaderBody,
+ [CborOrder(1)] byte[] BodySignature
+) : CborBase, ICborPreserveRaw;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Anchor.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Anchor.cs
new file mode 100644
index 00000000..2f874e78
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Anchor.cs
@@ -0,0 +1,12 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction;
+
+[CborSerializable]
+[CborList]
+public partial record Anchor(
+ [CborOrder(0)] string AnchorUrl,
+ [CborOrder(1)] byte[] AnchorDataHash
+) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Certificates/Certificate.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Certificates/Certificate.cs
new file mode 100644
index 00000000..ff2a1c2f
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Certificates/Certificate.cs
@@ -0,0 +1,197 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body.ProposalProcedures;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+using Chrysalis.Cbor.Types.Custom;
+using Chrysalis.Cbor.Types.Primitives;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Serialization.Attributes;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body.Certificates;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record Certificate : CborBase
+{
+}
+
+[CborSerializable]
+[CborList]
+public partial record StakeRegistration(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential StakeCredential
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record StakeDeregistration(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential StakeCredential
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record StakeDelegation(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential StakeCredential,
+ [CborOrder(2)] byte[] PoolKeyHash
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record PoolRegistration(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] byte[] Operator,
+ [CborOrder(2)] byte[] VrfKeyHash,
+ [CborOrder(3)] ulong Pledge,
+ [CborOrder(4)] ulong Cost,
+ [CborOrder(5)] CborRationalNumber Margin,
+ [CborOrder(6)] RewardAccount RewardAccount,
+ [CborOrder(7)] CborMaybeIndefList PoolOwners,
+ [CborOrder(8)] CborMaybeIndefList Relay,
+ [CborOrder(9)][CborNullable] PoolMetadata? PoolMetadata
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record PoolRetirement(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] byte[] PoolKeyHash,
+ [CborOrder(2)] ulong EpochNo
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record RegCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential StakeCredential,
+ [CborOrder(2)] ulong Coin
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record UnRegCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential StakeCredential,
+ [CborOrder(2)] ulong Coin
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record VoteDelegCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential StakeCredential,
+ [CborOrder(2)] DRep DRep
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record StakeVoteDelegCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential StakeCredential,
+ [CborOrder(2)] byte[] PoolKeyHash,
+ [CborOrder(3)] DRep DRep
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record StakeRegDelegCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential StakeCredential,
+ [CborOrder(2)] byte[] PoolKeyHash,
+ [CborOrder(3)] ulong Coin
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record VoteRegDelegCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential StakeCredential,
+ [CborOrder(2)] DRep DRep,
+ [CborOrder(3)] ulong Coin
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record StakeVoteRegDelegCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential StakeCredential,
+ [CborOrder(2)] byte[] PoolKeyHash,
+ [CborOrder(3)] DRep Drep,
+ [CborOrder(4)] ulong Coin
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record AuthCommitteeHotCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential CommitteeColdCredential,
+ [CborOrder(2)] Credential CommitteeHotCredential
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record ResignCommitteeColdCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] byte[] CommitteeColdCredential,
+ [CborOrder(2)] Anchor? Anchor
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record RegDrepCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential DRepCredential,
+ [CborOrder(2)] ulong Coin,
+ [CborOrder(3)][CborNullable] Anchor? Anchor
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record UnRegDrepCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential DrepCredential,
+ [CborOrder(2)] ulong Coin
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record UpdateDrepCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] Credential DrepCredential,
+ [CborOrder(2)][CborNullable] Anchor? Anchor
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record GenesisKeyDelegation(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] byte[] GenesisHash,
+ [CborOrder(2)] byte[] GenesisDelegateHash,
+ [CborOrder(3)] byte[] VrfKeyHash
+) : Certificate;
+
+
+[CborSerializable]
+[CborList]
+public partial record MoveInstantaneousRewardsCert(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] MoveInstantaneousReward MoveInstantaneousReward
+) : Certificate;
+
+
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Certificates/MoveInstantaneousReward.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Certificates/MoveInstantaneousReward.cs
new file mode 100644
index 00000000..72a1f553
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Certificates/MoveInstantaneousReward.cs
@@ -0,0 +1,28 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body.Certificates;
+
+[CborSerializable]
+[CborList]
+public partial record MoveInstantaneousReward(
+ [CborOrder(0)] int InstantaneousRewardSource,
+ [CborOrder(1)] Target InstantaneousRewardTarget
+) : CborBase;
+
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record Target : CborBase
+{
+}
+
+[CborSerializable]
+public partial record StakeCredentials(Dictionary Value) : Target;
+
+
+[CborSerializable]
+public partial record OtherAccountingPot(ulong Value) : Target;
+
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Certificates/PoolMetadata.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Certificates/PoolMetadata.cs
new file mode 100644
index 00000000..72694d6f
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Certificates/PoolMetadata.cs
@@ -0,0 +1,12 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body.Certificates;
+
+[CborSerializable]
+[CborList]
+public partial record PoolMetadata(
+ [CborOrder(0)] string Url,
+ [CborOrder(1)] byte[] PoolMetadataHash
+) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Certificates/Relay.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Certificates/Relay.cs
new file mode 100644
index 00000000..c4a39afc
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Certificates/Relay.cs
@@ -0,0 +1,37 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body.Certificates;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record Relay : CborBase
+{
+}
+
+[CborSerializable]
+[CborList]
+public partial record SingleHostAddr(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)][CborNullable] ulong? Port,
+ [CborOrder(2)][CborNullable] byte[]? IPv4,
+ [CborOrder(3)][CborNullable] byte[] IPv6
+) : Relay;
+
+
+[CborSerializable]
+[CborList]
+public partial record SingleHostName(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)][CborNullable] ulong? Port,
+ [CborOrder(2)] string DNSName
+) : Relay;
+
+
+[CborSerializable]
+[CborList]
+public partial record MultiHostName(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] string DNSName
+) : Relay;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/ProposalProcedures/RewardAccount.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/ProposalProcedures/RewardAccount.cs
new file mode 100644
index 00000000..55320019
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/ProposalProcedures/RewardAccount.cs
@@ -0,0 +1,7 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body.ProposalProcedures;
+
+[CborSerializable]
+public partial record RewardAccount(byte[] Value) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/TransactionBody.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/TransactionBody.cs
new file mode 100644
index 00000000..ddf7735b
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/TransactionBody.cs
@@ -0,0 +1,82 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body.Certificates;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Input;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Output;
+using Chrysalis.Cbor.Types.Custom;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Serialization.Attributes;
+using static Chrysalis.Cbor.Cardano.Types.Block.Transaction.Output.TransactionOutput;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record TransactionBody : CborBase { }
+
+[CborSerializable]
+[CborMap]
+public partial record AlonzoTransactionBody(
+ [CborProperty(0)] CborMaybeIndefList Inputs,
+ [CborProperty(1)] CborMaybeIndefList Outputs,
+ [CborProperty(2)] ulong Fee,
+ [CborProperty(3)] ulong? TimeToLive,
+ [CborProperty(4)] CborMaybeIndefList? Certificates,
+ [CborProperty(5)] Withdrawals? Withdrawals,
+ [CborProperty(6)] Update? Update,
+ [CborProperty(7)] byte[]? AuxiliaryDataHash,
+ [CborProperty(8)] ulong? ValidityIntervalStart,
+ [CborProperty(9)] MultiAssetMint? Mint,
+ [CborProperty(11)] byte[]? ScriptDataHash,
+ [CborProperty(13)] CborMaybeIndefList? Collateral,
+ [CborProperty(14)] CborMaybeIndefList? RequiredSigners,
+ [CborProperty(15)] int? NetworkId
+ ) : TransactionBody;
+
+[CborSerializable]
+[CborMap]
+public partial record BabbageTransactionBody(
+ [CborProperty(0)] CborMaybeIndefList Inputs,
+ [CborProperty(1)] CborMaybeIndefList Outputs,
+ [CborProperty(2)] ulong Fee,
+ [CborProperty(3)] ulong? TimeToLive,
+ [CborProperty(4)] CborMaybeIndefList? Certificates,
+ [CborProperty(5)] Withdrawals? Withdrawals,
+ [CborProperty(6)] Update? Update,
+ [CborProperty(7)] byte[]? AuxiliaryDataHash,
+ [CborProperty(8)] ulong? ValidityIntervalStart,
+ [CborProperty(9)] MultiAssetMint? Mint,
+ [CborProperty(11)] byte[]? ScriptDataHash,
+ [CborProperty(13)] CborMaybeIndefList? Collateral,
+ [CborProperty(14)] CborMaybeIndefList? RequiredSigners,
+ [CborProperty(15)] byte[]? NetworkId,
+ [CborProperty(16)] TransactionOutput? CollateralReturn,
+ [CborProperty(17)] ulong? TotalCollateral,
+ [CborProperty(18)] CborMaybeIndefList? ReferenceInputs
+) : TransactionBody;
+
+
+[CborSerializable]
+[CborMap]
+public partial record ConwayTransactionBody(
+ [CborProperty(0)] CborMaybeIndefList Inputs,
+ [CborProperty(1)] CborMaybeIndefList Outputs,
+ [CborProperty(2)] ulong Fee,
+ [CborProperty(3)] ulong? TimeToLive,
+ [CborProperty(4)] CborMaybeIndefList? Certificates,
+ [CborProperty(5)] Withdrawals? Withdrawals,
+ [CborProperty(7)] byte[]? AuxiliaryDataHash,
+ [CborProperty(8)] ulong? ValidityIntervalStart,
+ [CborProperty(9)] MultiAssetMint? Mint,
+ [CborProperty(11)] byte[]? ScriptDataHash,
+ [CborProperty(13)] CborMaybeIndefList? Collateral,
+ [CborProperty(14)] CborMaybeIndefList? RequiredSigners,
+ [CborProperty(15)] int? NetworkId,
+ [CborProperty(16)] TransactionOutput? CollateralReturn,
+ [CborProperty(17)] ulong? TotalCollateral,
+ [CborProperty(18)] CborMaybeIndefList? ReferenceInputs,
+ [CborProperty(19)] VotingProcedures? VotingProcedures,
+ [CborProperty(20)] CborMaybeIndefList? ProposalProcedures,
+ [CborProperty(21)] ulong? TreasuryValue,
+ [CborProperty(22)] ulong? Donation
+) : TransactionBody;
+
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Update.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Update.cs
new file mode 100644
index 00000000..986cc422
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Update.cs
@@ -0,0 +1,12 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Protocol;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Serialization.Attributes;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body;
+
+[CborSerializable]
+[CborList]
+public partial record Update(
+ [CborOrder(0)] ProposedProtocolParameterUpdates ProposedProtocolParameterUpdates,
+ [CborOrder(1)] ulong Epoch
+) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Withdrawals.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Withdrawals.cs
new file mode 100644
index 00000000..27d2463f
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Body/Withdrawals.cs
@@ -0,0 +1,8 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body.ProposalProcedures;
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body;
+
+[CborSerializable]
+public partial record Withdrawals(Dictionary Value) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Credential.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Credential.cs
new file mode 100644
index 00000000..0a4cba04
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Credential.cs
@@ -0,0 +1,12 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction;
+
+[CborSerializable]
+[CborList]
+public partial record Credential(
+ [CborOrder(0)] int CredentialType,
+ [CborOrder(1)] byte[] Hash
+) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/Constituion.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/Constituion.cs
new file mode 100644
index 00000000..6985b181
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/Constituion.cs
@@ -0,0 +1,12 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+
+[CborSerializable]
+[CborList]
+public partial record Constitution(
+ [CborOrder(0)] Anchor Anchor,
+ [CborOrder(1)][CborNullable] byte[]? ScriptHash
+) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/DRep.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/DRep.cs
new file mode 100644
index 00000000..2bba4fc3
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/DRep.cs
@@ -0,0 +1,38 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record DRep : CborBase
+{
+}
+
+[CborSerializable]
+[CborList]
+public partial record DRepAddrKeyHash(
+[CborOrder(0)] int Tag,
+[CborOrder(1)] byte[] AddrKeyHash
+) : DRep;
+
+[CborSerializable]
+[CborList]
+public partial record DRepScriptHash(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] byte[] ScriptHash
+) : DRep;
+
+[CborSerializable]
+[CborList]
+public partial record Abstain(
+ [CborOrder(0)] int Tag
+) : DRep;
+
+[CborSerializable]
+[CborList]
+public partial record DRepNoConfidence(
+ [CborOrder(0)] int Tag
+) : DRep;
+
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/DRepVotingThresholds.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/DRepVotingThresholds.cs
new file mode 100644
index 00000000..6516c997
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/DRepVotingThresholds.cs
@@ -0,0 +1,20 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Types.Primitives;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+
+[CborSerializable]
+[CborList]
+public partial record DRepVotingThresholds(
+ [CborOrder(0)] CborRationalNumber MotionNoConfidence,
+ [CborOrder(1)] CborRationalNumber CommitteeNormal,
+ [CborOrder(2)] CborRationalNumber CommitteeNoConfidence,
+ [CborOrder(4)] CborRationalNumber UpdateConstitution,
+ [CborOrder(5)] CborRationalNumber HardForkInitiation,
+ [CborOrder(6)] CborRationalNumber PpNetworkGroup,
+ [CborOrder(7)] CborRationalNumber PpEconomicGroup,
+ [CborOrder(8)] CborRationalNumber PpTechnicalGroup,
+ [CborOrder(9)] CborRationalNumber PpGovernanceGroup,
+ [CborOrder(10)] CborRationalNumber TreasuryWithdrawal
+) : CborBase;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/GovAction.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/GovAction.cs
new file mode 100644
index 00000000..8931911a
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/GovAction.cs
@@ -0,0 +1,74 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Header.Body;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Protocol;
+using Chrysalis.Cbor.Types.Custom;
+using Chrysalis.Cbor.Types.Primitives;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Serialization.Attributes;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record GovAction : CborBase
+{
+}
+
+[CborSerializable]
+[CborList]
+public partial record ParameterChangeAction(
+ [CborOrder(0)] int ActionType,
+ [CborOrder(1)] GovActionId? GovActionId,
+ [CborOrder(2)] ProtocolParamUpdate ProtocolParamUpdate,
+ [CborOrder(3)] byte[]? PolicyHash
+) : GovAction;
+
+
+[CborSerializable]
+[CborList]
+public partial record HardForkInitiationAction(
+ [CborOrder(0)] int ActionType,
+ [CborOrder(1)] GovActionId? GovActionId,
+ [CborOrder(2)] ProtocolVersion ProtocolVersion
+ ) : GovAction;
+
+
+[CborSerializable]
+[CborList]
+public partial record TreasuryWithdrawalsAction(
+ [CborOrder(0)] int ActionType,
+ [CborOrder(1)] Withdrawals Withdrawals,
+ [CborOrder(2)] byte[]? PolicyHash
+ ) : GovAction;
+
+
+[CborSerializable]
+[CborList]
+public partial record NoConfidence(
+ [CborOrder(0)] int ActionType,
+ [CborOrder(1)] GovActionId? GovActionId
+) : GovAction;
+
+[CborSerializable]
+[CborList]
+public partial record UpdateCommittee(
+ [CborOrder(0)] int ActionType,
+ [CborOrder(1)] GovActionId? GovActionId,
+ [CborOrder(2)] CborMaybeIndefList NewMembers,
+ [CborOrder(3)] MemberTermLimits MemberTermLimits,
+ [CborOrder(4)] CborRationalNumber QuorumThreshold
+) : GovAction;
+
+[CborSerializable]
+[CborList]
+public partial record NewConstitution(
+ [CborOrder(0)] int ActionType,
+ [CborOrder(1)] GovActionId? GovActionId,
+ [CborOrder(2)] Constitution Constitution
+) : GovAction;
+
+[CborSerializable]
+[CborList]
+public partial record InfoAction(
+ [CborOrder(0)] int Value
+) : GovAction;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/GovActionId.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/GovActionId.cs
new file mode 100644
index 00000000..e13e1cd9
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/GovActionId.cs
@@ -0,0 +1,12 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+
+[CborSerializable]
+[CborList]
+public partial record GovActionId(
+ [CborOrder(0)] byte[] TransactionId,
+ [CborOrder(1)] int GovActionIndex
+) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/MemberTermLimits.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/MemberTermLimits.cs
new file mode 100644
index 00000000..68f94724
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/MemberTermLimits.cs
@@ -0,0 +1,7 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+
+[CborSerializable]
+public partial record MemberTermLimits(Dictionary Value) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/ProposalProcedure.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/ProposalProcedure.cs
new file mode 100644
index 00000000..7c543e30
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/ProposalProcedure.cs
@@ -0,0 +1,14 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body.ProposalProcedures;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Serialization.Attributes;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+
+[CborSerializable]
+[CborList]
+public partial record ProposalProcedure(
+ [CborOrder(0)] ulong Deposit,
+ [CborOrder(1)] RewardAccount RewardAccount,
+ [CborOrder(2)] GovAction GovAction,
+ [CborOrder(3)] Anchor Anchor
+) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/Voter.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/Voter.cs
new file mode 100644
index 00000000..951dddb4
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/Voter.cs
@@ -0,0 +1,12 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+
+[CborSerializable]
+[CborList]
+public partial record Voter(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] byte[] Hash
+) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/VotingProcedure.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/VotingProcedure.cs
new file mode 100644
index 00000000..c1569086
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/VotingProcedure.cs
@@ -0,0 +1,11 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+
+[CborSerializable]
+[CborList]
+public partial record VotingProcedure(
+ [CborOrder(0)] int Vote,
+ [CborOrder(1)][CborNullable] Anchor? Anchor
+) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/VotingProcedures.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/VotingProcedures.cs
new file mode 100644
index 00000000..2ef9bf95
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Governance/VotingProcedures.cs
@@ -0,0 +1,17 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+
+[CborSerializable]
+public partial record VotingProcedures(
+ Dictionary Value
+) : CborBase;
+
+[CborSerializable]
+public partial record GovActionIdVotingProcedure(Dictionary Value) : CborBase;
+
+[CborSerializable]
+public partial record VoterChoices(
+ Dictionary Value
+) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Input/TransactionInput.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Input/TransactionInput.cs
new file mode 100644
index 00000000..c118fba4
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Input/TransactionInput.cs
@@ -0,0 +1,12 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Input;
+
+[CborSerializable]
+[CborList]
+public partial record TransactionInput(
+ [CborOrder(0)] byte[] TransactionId,
+ [CborOrder(1)] ulong Index
+) : CborBase;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/Address.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/Address.cs
new file mode 100644
index 00000000..41641120
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/Address.cs
@@ -0,0 +1,8 @@
+using Chrysalis.Cbor.Serialization;
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Output;
+
+[CborSerializable]
+public partial record Address(byte[] Value) : CborBase, ICborPreserveRaw;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/DatumOption.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/DatumOption.cs
new file mode 100644
index 00000000..69eccd19
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/DatumOption.cs
@@ -0,0 +1,30 @@
+using Chrysalis.Cbor.Serialization;
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Types.Primitives;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Output;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record DatumOption : CborBase
+{
+
+}
+
+[CborSerializable]
+[CborList]
+public partial record DatumHashOption(
+ [CborOrder(0)] int Option,
+ [CborOrder(1)] byte[] DatumHash
+) : DatumOption, ICborPreserveRaw;
+
+
+[CborSerializable]
+[CborList]
+public partial record InlineDatumOption(
+ [CborOrder(0)] int Option,
+ [CborOrder(1)] CborEncodedValue Data
+) : DatumOption, ICborPreserveRaw;
+
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/MultiAsset.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/MultiAsset.cs
new file mode 100644
index 00000000..8a8df4d2
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/MultiAsset.cs
@@ -0,0 +1,22 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+using static Chrysalis.Cbor.Cardano.Types.Block.Transaction.Output.TokenBundle;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Output;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record MultiAsset : CborBase
+{
+}
+
+[CborSerializable]
+public partial record MultiAssetOutput(
+ Dictionary Value
+) : MultiAsset;
+
+
+[CborSerializable]
+public partial record MultiAssetMint(
+ Dictionary Value
+) : MultiAsset;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/TokenBundle.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/TokenBundle.cs
new file mode 100644
index 00000000..1c91547f
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/TokenBundle.cs
@@ -0,0 +1,17 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Output;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record TokenBundle : CborBase
+{
+}
+
+[CborSerializable]
+public partial record TokenBundleOutput(Dictionary Value) : TokenBundle;
+
+
+[CborSerializable]
+public partial record TokenBundleMint(Dictionary Value) : TokenBundle;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/TransactionOutput.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/TransactionOutput.cs
new file mode 100644
index 00000000..d60a656e
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/TransactionOutput.cs
@@ -0,0 +1,30 @@
+using Chrysalis.Cbor.Serialization;
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Types.Primitives;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Output;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record TransactionOutput : CborBase
+{
+}
+
+[CborSerializable]
+[CborList]
+public partial record AlonzoTransactionOutput(
+[CborOrder(0)] Address Address,
+[CborOrder(1)] Value Amount,
+[CborOrder(2)] byte[]? DatumHash
+) : TransactionOutput, ICborPreserveRaw;
+
+[CborSerializable]
+[CborMap]
+public partial record PostAlonzoTransactionOutput(
+ [CborProperty(0)] Address Address,
+ [CborProperty(1)] Value Amount,
+ [CborProperty(2)] DatumOption? Datum,
+ [CborProperty(3)] CborEncodedValue? ScriptRef
+) : TransactionOutput, ICborPreserveRaw;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/Value.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/Value.cs
new file mode 100644
index 00000000..917ca95f
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Output/Value.cs
@@ -0,0 +1,21 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+using static Chrysalis.Cbor.Cardano.Types.Block.Transaction.Output.MultiAsset;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Output;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record Value : CborBase
+{
+}
+
+[CborSerializable]
+public partial record Lovelace(ulong Value) : Value;
+
+[CborSerializable]
+[CborList]
+public partial record LovelaceWithMultiAsset(
+ [CborOrder(0)] Lovelace LovelaceValue,
+ [CborOrder(1)] MultiAssetOutput MultiAsset
+ ) : Value;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/CostMdls.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/CostMdls.cs
new file mode 100644
index 00000000..70a49121
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/CostMdls.cs
@@ -0,0 +1,8 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Types.Custom;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Protocol;
+
+[CborSerializable]
+public partial record CostMdls(Dictionary> Value) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/ExUnitPrices.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/ExUnitPrices.cs
new file mode 100644
index 00000000..60348032
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/ExUnitPrices.cs
@@ -0,0 +1,13 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Types.Primitives;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Protocol;
+
+[CborSerializable]
+[CborList]
+public partial record ExUnitPrices(
+ [CborOrder(0)] CborRationalNumber MemPrice,
+ [CborOrder(1)] CborRationalNumber StepPrice
+) : CborBase;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/ExUnits.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/ExUnits.cs
new file mode 100644
index 00000000..cf1902a7
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/ExUnits.cs
@@ -0,0 +1,12 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Protocol;
+
+[CborSerializable]
+[CborList]
+public partial record ExUnits(
+ [CborOrder(0)] ulong Mem,
+ [CborOrder(1)] ulong Steps
+) : CborBase;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/Nonce.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/Nonce.cs
new file mode 100644
index 00000000..e11bd342
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/Nonce.cs
@@ -0,0 +1,24 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Protocol;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record Nonce : CborBase
+{
+}
+
+[CborSerializable]
+[CborList]
+public partial record NonceWithHash(
+[CborOrder(0)] ulong Variant,
+[CborOrder(1)] byte[]? Hash
+) : Nonce;
+
+[CborSerializable]
+[CborList]
+public partial record NonceWithoutHash(
+ [CborOrder(0)] ulong Variant
+) : Nonce;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/PoolVotingThresholds.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/PoolVotingThresholds.cs
new file mode 100644
index 00000000..fac0d7a2
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/PoolVotingThresholds.cs
@@ -0,0 +1,16 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Types.Primitives;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Protocol;
+
+[CborSerializable]
+[CborList]
+public partial record PoolVotingThresholds(
+ [CborOrder(0)] CborRationalNumber MotionNoConfidence,
+ [CborOrder(1)] CborRationalNumber CommitteeNormal,
+ [CborOrder(2)] CborRationalNumber CommitteeNoConfidence,
+ [CborOrder(3)] CborRationalNumber HardForkInitiation,
+ [CborOrder(4)] CborRationalNumber SecurityVotingThreshold
+) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/ProtocolParamUpdate.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/ProtocolParamUpdate.cs
new file mode 100644
index 00000000..db496890
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Protocol/ProtocolParamUpdate.cs
@@ -0,0 +1,130 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Header.Body;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Governance;
+using Chrysalis.Cbor.Types.Primitives;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Serialization.Attributes;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Protocol;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record ProtocolParamUpdate : CborBase
+{
+}
+
+[CborSerializable]
+[CborList]
+public partial record ConwayProtocolParamUpdate(
+ [CborOrder(0)] ulong? MinFeeA,
+ [CborOrder(1)] ulong? MinFeeB,
+ [CborOrder(2)] ulong? MaxBlockBodySize,
+ [CborOrder(3)] ulong? MaxTransactionSize,
+ [CborOrder(4)] ulong? MaxBlockHeaderSize,
+ [CborOrder(5)] ulong? KeyDeposit,
+ [CborOrder(6)] ulong? PoolDeposit,
+ [CborOrder(7)] ulong? MaximumEpoch,
+ [CborOrder(8)] ulong? DesiredNumberOfStakePools,
+ [CborOrder(9)] CborRationalNumber? PoolPledgeInfluence,
+ [CborOrder(10)] CborRationalNumber? ExpansionRate,
+ [CborOrder(11)] CborRationalNumber? TreasuryGrowthRate,
+ [CborOrder(16)] ulong? MinPoolCost,
+ [CborOrder(17)] ulong? AdaPerUTxOByte,
+ [CborOrder(18)] CostMdls? CostModelsForScriptLanguage,
+ [CborOrder(19)] ExUnitPrices? ExecutionCosts,
+ [CborOrder(20)] ExUnits? MaxTxExUnits,
+ [CborOrder(21)] ExUnits? MaxBlockExUnits,
+ [CborOrder(22)] ulong? MaxValueSize,
+ [CborOrder(23)] ulong? CollateralPercentage,
+ [CborOrder(24)] ulong? MaxCollateralInputs,
+ [CborOrder(25)] PoolVotingThresholds? PoolVotingThresholds,
+ [CborOrder(26)] DRepVotingThresholds? DRepVotingThresholds,
+ [CborOrder(27)] ulong? MinCommitteeSize,
+ [CborOrder(28)] ulong? CommitteeTermLimit,
+ [CborOrder(29)] ulong? GovernanceActionValidityPeriod,
+ [CborOrder(30)] ulong? GovernanceActionDeposit,
+ [CborOrder(31)] ulong? DRepDeposit,
+ [CborOrder(32)] ulong? DRepInactivityPeriod,
+ [CborOrder(33)] CborRationalNumber? MinFeeRefScriptCostPerByte
+) : ProtocolParamUpdate;
+
+[CborSerializable]
+[CborMap]
+public partial record BabbageProtocolParamUpdate(
+ [CborProperty(0)] ulong? MinFeeA,
+ [CborProperty(1)] ulong? MinFeeB,
+ [CborProperty(2)] ulong? MaxBlockBodySize,
+ [CborProperty(3)] ulong? MaxTransactionSize,
+ [CborProperty(4)] ulong? MaxBlockHeaderSize,
+ [CborProperty(5)] ulong? KeyDeposit,
+ [CborProperty(6)] ulong? PoolDeposit,
+ [CborProperty(7)] ulong? MaximumEpoch,
+ [CborProperty(8)] ulong? DesiredNumberOfStakePools,
+ [CborProperty(9)] CborRationalNumber? PoolPledgeInfluence,
+ [CborProperty(10)] CborRationalNumber? ExpansionRate,
+ [CborProperty(11)] CborRationalNumber? TreasuryGrowthRate,
+ [CborProperty(14)] ProtocolVersion? ProtocolVersion,
+ [CborProperty(16)] ulong? MinPoolCost,
+ [CborProperty(17)] ulong? AdaPerUTxOByte,
+ [CborProperty(18)] CostMdls? CostModelsForScriptLanguage,
+ [CborProperty(19)] ExUnitPrices? ExecutionCosts,
+ [CborProperty(20)] ExUnits? MaxTxExUnits,
+ [CborProperty(21)] ExUnits? MaxBlockExUnits,
+ [CborProperty(22)] ulong? MaxValueSize,
+ [CborProperty(23)] ulong? CollateralPercentage,
+ [CborProperty(24)] ulong? MaxCollateralInputs
+) : ProtocolParamUpdate;
+
+[CborSerializable]
+[CborMap]
+public partial record AlonzoProtocolParamUpdate(
+ [CborProperty(0)] ulong? MinFeeA,
+ [CborProperty(1)] ulong? MinFeeB,
+ [CborProperty(2)] ulong? MaxBlockBodySize,
+ [CborProperty(3)] ulong? MaxTransactionSize,
+ [CborProperty(4)] ulong? MaxBlockHeaderSize,
+ [CborProperty(5)] ulong? KeyDeposit,
+ [CborProperty(6)] ulong? PoolDeposit,
+ [CborProperty(7)] ulong? MaximumEpoch,
+ [CborProperty(8)] ulong? DesiredNumberOfStakePools,
+ [CborProperty(9)] CborRationalNumber? PoolPledgeInfluence,
+ [CborProperty(10)] CborRationalNumber? ExpansionRate,
+ [CborProperty(11)] CborRationalNumber? TreasuryGrowthRate,
+ [CborProperty(12)] CborRationalNumber? DecentralizationConstant,
+ [CborProperty(13)] Nonce? ExtraEntropy,
+ [CborProperty(14)] ProtocolVersion? ProtocolVersion,
+ [CborProperty(16)] ulong? MinPoolCost,
+ [CborProperty(17)] ulong? AdaPerUTxOByte,
+ [CborProperty(18)] CostMdls? CostModelsForScriptLanguage,
+ [CborProperty(19)] ExUnitPrices? ExecutionCosts,
+ [CborProperty(20)] ExUnits? MaxTxExUnits,
+ [CborProperty(21)] ExUnits? MaxBlockExUnits,
+ [CborProperty(22)] ulong? MaxValueSize,
+ [CborProperty(23)] ulong? CollateralPercentage,
+ [CborProperty(24)] ulong? MaxCollateralInputs
+) : ProtocolParamUpdate;
+
+[CborSerializable]
+[CborMap]
+public partial record MaryProtocolParamUpdate(
+ [CborProperty(0)] ulong? MinFeeA,
+ [CborProperty(1)] ulong? MinFeeB,
+ [CborProperty(2)] ulong? MaxBlockBodySize,
+ [CborProperty(3)] ulong? MaxTransactionSize,
+ [CborProperty(4)] ulong? MaxBlockHeaderSize,
+ [CborProperty(5)] ulong? KeyDeposit,
+ [CborProperty(6)] ulong? PoolDeposit,
+ [CborProperty(7)] ulong? MaximumEpoch,
+ [CborProperty(8)] ulong? DesiredNumberOfStakePools,
+ [CborProperty(9)] CborRationalNumber? PoolPledgeInfluence,
+ [CborProperty(10)] CborRationalNumber? ExpansionRate,
+ [CborProperty(11)] CborRationalNumber? TreasuryGrowthRate,
+ [CborProperty(12)] CborRationalNumber? DecentralizationConstant,
+ [CborProperty(13)] Nonce? ExtraEntropy,
+ [CborProperty(14)] ProtocolVersion? ProtocolVersion,
+ [CborProperty(15)] ulong? Coin
+) : ProtocolParamUpdate;
+
+[CborSerializable]
+public partial record ProposedProtocolParameterUpdates(
+ Dictionary Value
+) : CborBase;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Script/NativeScript.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Script/NativeScript.cs
new file mode 100644
index 00000000..e130b69a
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Script/NativeScript.cs
@@ -0,0 +1,53 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Types.Custom;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Script;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record NativeScript : CborBase { }
+
+[CborSerializable]
+[CborList]
+public partial record ScriptPubKey(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] byte[] AddrKeyHash
+) : NativeScript;
+
+[CborSerializable]
+[CborList]
+public partial record ScriptAll(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] CborIndefList? Scripts
+) : NativeScript;
+
+[CborSerializable]
+[CborList]
+public partial record ScriptAny(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] CborDefList? Scripts
+) : NativeScript;
+
+[CborSerializable]
+[CborList]
+public partial record ScriptNOfK(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] int N,
+ [CborOrder(2)] CborDefList? Scripts
+) : NativeScript;
+
+[CborSerializable]
+[CborList]
+public partial record InvalidBefore(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] ulong Slot
+) : NativeScript;
+
+[CborSerializable]
+[CborList]
+public partial record InvalidHereafter(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] ulong Slot
+) : NativeScript;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Script/PlutusData.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Script/PlutusData.cs
new file mode 100644
index 00000000..ef0061f2
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Script/PlutusData.cs
@@ -0,0 +1,50 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.Script;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record PlutusData : CborBase
+{
+}
+
+[CborSerializable]
+[CborConstr]
+public partial record PlutusConstr(List PlutusData) : PlutusData;
+
+[CborSerializable]
+public partial record PlutusMap(Dictionary PlutusData) : PlutusData;
+
+[CborSerializable]
+public partial record PlutusList(List PlutusData) : PlutusData;
+
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record PlutusBigInt : PlutusData
+{
+}
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record PlutusInt : PlutusBigInt
+{
+}
+
+[CborSerializable]
+public partial record PlutusInt64(long Value) : PlutusInt;
+
+[CborSerializable]
+public partial record PlutusUint64(ulong Value) : PlutusInt;
+
+[CborSerializable]
+[CborTag(2)]
+public partial record PlutusBigUint([CborSize(64)] byte[] Value) : PlutusBigInt;
+
+[CborSerializable]
+[CborTag(3)]
+public partial record PlutusBigNint([CborSize(64)] byte[] Value) : PlutusBigInt;
+
+[CborSerializable]
+public partial record PlutusBoundedBytes([CborSize(64)] byte[] Value) : PlutusData;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Transaction.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Transaction.cs
new file mode 100644
index 00000000..39c448a4
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/Transaction.cs
@@ -0,0 +1,39 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Body;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.WitnessSet;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Serialization;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record Transaction : CborBase
+{
+}
+
+[CborSerializable]
+[CborList]
+public partial record ShelleyTransaction(
+ [CborOrder(0)] TransactionBody TransactionBody,
+ [CborOrder(1)] TransactionWitnessSet TransactionWitnessSet,
+ [CborOrder(2)][CborNullable] Metadata? TransactionMetadata
+) : Transaction, ICborPreserveRaw;
+
+[CborSerializable]
+[CborList]
+public partial record AllegraTransaction(
+ [CborOrder(0)] TransactionBody TransactionBody,
+ [CborOrder(1)] TransactionWitnessSet TransactionWitnessSet,
+ [CborOrder(2)][CborNullable] AuxiliaryData? AuxiliaryData
+) : Transaction, ICborPreserveRaw;
+
+[CborSerializable]
+[CborList]
+public partial record PostMaryTransaction(
+ [CborOrder(0)] TransactionBody TransactionBody,
+ [CborOrder(1)] TransactionWitnessSet TransactionWitnessSet,
+ [CborOrder(2)] bool IsValid,
+ [CborOrder(3)][CborNullable] AuxiliaryData? AuxiliaryData
+) : Transaction, ICborPreserveRaw;
+
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/TransactionMetadatum.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/TransactionMetadatum.cs
new file mode 100644
index 00000000..500646eb
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/TransactionMetadatum.cs
@@ -0,0 +1,44 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record TransactionMetadatum : CborBase
+{
+}
+
+[CborSerializable]
+public partial record MetadatumMap(
+ Dictionary Value
+) : TransactionMetadatum;
+
+[CborSerializable]
+public partial record MetadatumList(
+ List Value
+) : TransactionMetadatum;
+
+
+[CborSerializable]
+public partial record MetadatumBytes(byte[] Value) : TransactionMetadatum;
+
+
+[CborSerializable]
+public partial record MetadataText(string Value) : TransactionMetadatum;
+
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record MetadatumInt : TransactionMetadatum
+{
+}
+
+[CborSerializable]
+public partial record MetadatumIntLong(long Value) : MetadatumInt;
+
+
+[CborSerializable]
+public partial record MetadatumIntUlong(ulong Value) : MetadatumInt;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/AuxiliaryData.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/AuxiliaryData.cs
new file mode 100644
index 00000000..56a8129b
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/AuxiliaryData.cs
@@ -0,0 +1,36 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Script;
+using Chrysalis.Cbor.Types.Custom;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Serialization;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.WitnessSet;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record AuxiliaryData : CborBase
+{
+}
+
+[CborSerializable]
+[CborMap]
+[CborTag(259)]
+public partial record PostAlonzoAuxiliaryDataMap(
+ [CborProperty(0)] Metadata? MetadataValue,
+ [CborProperty(1)] CborDefList? NativeScriptSet,
+ [CborProperty(2)] CborDefList? PlutusV1ScriptSet,
+ [CborProperty(3)] CborDefList? PlutusV2ScriptSet,
+ [CborProperty(4)] CborDefList? PlutusV3ScriptSet
+) : AuxiliaryData, ICborPreserveRaw;
+
+
+[CborSerializable]
+public partial record Metadata(Dictionary Value) : AuxiliaryData;
+
+
+[CborSerializable]
+[CborList]
+public partial record ShellyMaAuxiliaryData(
+ [CborOrder(0)] Metadata TransactionMetadata,
+ [CborOrder(1)] CborDefList AuxiliaryScripts
+) : AuxiliaryData, ICborPreserveRaw;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/BootstrapWitness.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/BootstrapWitness.cs
new file mode 100644
index 00000000..7ba1db0a
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/BootstrapWitness.cs
@@ -0,0 +1,15 @@
+using Chrysalis.Cbor.Serialization;
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.WitnessSet;
+
+[CborSerializable]
+[CborList]
+public partial record BootstrapWitness(
+ [CborOrder(0)] byte[] PublicKey,
+ [CborOrder(1)] byte[] Signature,
+ [CborOrder(2)] byte[] ChainCode,
+ [CborOrder(3)] byte[] Attributes
+) : CborBase, ICborPreserveRaw;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/Redeemers.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/Redeemers.cs
new file mode 100644
index 00000000..eaa27ae0
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/Redeemers.cs
@@ -0,0 +1,42 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Protocol;
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Script;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Serialization;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.WitnessSet;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record Redeemers : CborBase
+{
+}
+
+[CborSerializable]
+public partial record RedeemerList(List Value) : Redeemers, ICborPreserveRaw;
+
+[CborSerializable]
+public partial record RedeemerMap(Dictionary Value) : Redeemers, ICborPreserveRaw;
+
+[CborSerializable]
+[CborList]
+public partial record RedeemerEntry(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] ulong Index,
+ [CborOrder(2)] PlutusData Data,
+ [CborOrder(3)] ExUnits ExUnits
+) : CborBase, ICborPreserveRaw;
+
+[CborSerializable]
+[CborList]
+public partial record RedeemerKey(
+ [CborOrder(0)] int Tag,
+ [CborOrder(1)] ulong Index
+) : CborBase, ICborPreserveRaw;
+
+[CborSerializable]
+[CborList]
+public partial record RedeemerValue(
+ [CborOrder(0)] PlutusData Data,
+ [CborOrder(1)] ExUnits ExUnits
+) : CborBase, ICborPreserveRaw;
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/TransactionWitnessSet.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/TransactionWitnessSet.cs
new file mode 100644
index 00000000..0ec76811
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/TransactionWitnessSet.cs
@@ -0,0 +1,37 @@
+using Chrysalis.Cbor.Cardano.Types.Block.Transaction.Script;
+using Chrysalis.Cbor.Types.Custom;
+using Chrysalis.Cbor.Types;
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Serialization;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.WitnessSet;
+
+[CborSerializable]
+[CborUnion]
+public abstract partial record TransactionWitnessSet : CborBase
+{
+}
+
+[CborSerializable]
+[CborMap]
+public partial record AlonzoTransactionWitnessSet(
+ [CborProperty(0)] CborMaybeIndefList? VKeyWitnessSet,
+ [CborProperty(1)] CborMaybeIndefList? NativeScriptSet,
+ [CborProperty(2)] CborMaybeIndefList? BootstrapWitnessSet,
+ [CborProperty(3)] CborMaybeIndefList? PlutusV1ScriptSet,
+ [CborProperty(4)] CborMaybeIndefList? PlutusDataSet,
+ [CborProperty(5)] Redeemers? Redeemers
+) : TransactionWitnessSet, ICborPreserveRaw;
+
+[CborSerializable]
+[CborMap]
+public partial record PostAlonzoTransactionWitnessSet(
+ [CborProperty(0)] CborMaybeIndefList? VKeyWitnessSet,
+ [CborProperty(1)] CborMaybeIndefList? NativeScriptSet,
+ [CborProperty(2)] CborMaybeIndefList? BootstrapWitnessSet,
+ [CborProperty(3)] CborMaybeIndefList? PlutusV1ScriptSet,
+ [CborProperty(4)] CborMaybeIndefList? PlutusDataSet,
+ [CborProperty(5)] Redeemers? Redeemers,
+ [CborProperty(6)] CborMaybeIndefList? PlutusV2ScriptSet,
+ [CborProperty(7)] CborMaybeIndefList? PlutusV3ScriptSet
+) : TransactionWitnessSet, ICborPreserveRaw;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/VKeyWitness.cs b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/VKeyWitness.cs
new file mode 100644
index 00000000..b072131f
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Block/Transaction/WitnessSet/VKeyWitness.cs
@@ -0,0 +1,13 @@
+using Chrysalis.Cbor.Serialization;
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Block.Transaction.WitnessSet;
+
+[CborSerializable]
+[CborList]
+public partial record VKeyWitness(
+ [CborOrder(0)] byte[] VKey,
+ [CborOrder(1)] byte[] Signature
+) : CborBase, ICborPreserveRaw;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Primitives/CborBoundedBytes.cs b/src/Chrysalis.Cbor/Cardano/Types/Primitives/CborBoundedBytes.cs
new file mode 100644
index 00000000..2b930050
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Primitives/CborBoundedBytes.cs
@@ -0,0 +1,8 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Primitives;
+
+[CborSerializable]
+public partial record CborBoundedBytes([CborSize(64)] byte[] Value) : CborBase;
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Cardano/Types/Primitives/PosixTime.cs b/src/Chrysalis.Cbor/Cardano/Types/Primitives/PosixTime.cs
new file mode 100644
index 00000000..ba22115b
--- /dev/null
+++ b/src/Chrysalis.Cbor/Cardano/Types/Primitives/PosixTime.cs
@@ -0,0 +1,7 @@
+using Chrysalis.Cbor.Serialization.Attributes;
+using Chrysalis.Cbor.Types;
+
+namespace Chrysalis.Cbor.Cardano.Types.Primitives;
+
+[CborSerializable]
+public partial record PosixTime(ulong Value) : CborBase;
diff --git a/src/Chrysalis.Cbor/Chrysalis.Cbor.csproj b/src/Chrysalis.Cbor/Chrysalis.Cbor.csproj
new file mode 100644
index 00000000..fc9584e0
--- /dev/null
+++ b/src/Chrysalis.Cbor/Chrysalis.Cbor.csproj
@@ -0,0 +1,34 @@
+
+
+ net9.0
+ enable
+ enable
+ 0.6.0
+ Chrysalis.Cbor
+ clark@saib.dev, rjlacanlale@saib.dev, kathea.mayol@saib.dev
+ SAIB Inc
+ README.md
+ LICENSE.md
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Extensions/TypeExtension.cs b/src/Chrysalis.Cbor/Extensions/TypeExtension.cs
new file mode 100644
index 00000000..0549ccc0
--- /dev/null
+++ b/src/Chrysalis.Cbor/Extensions/TypeExtension.cs
@@ -0,0 +1,10 @@
+using System.Runtime.CompilerServices;
+
+namespace Chrysalis.Cbor.Extensions;
+
+public static class TypeExtensions
+{
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static Type NormalizeType(this Type type) =>
+ type.IsGenericType ? type.GetGenericTypeDefinition() : type;
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Serialization/Attributes/SerializationAttributes.cs b/src/Chrysalis.Cbor/Serialization/Attributes/SerializationAttributes.cs
new file mode 100644
index 00000000..876fef01
--- /dev/null
+++ b/src/Chrysalis.Cbor/Serialization/Attributes/SerializationAttributes.cs
@@ -0,0 +1,125 @@
+
+
+namespace Chrysalis.Cbor.Serialization.Attributes;
+
+// Type-level attributes
+
+[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = false, AllowMultiple = false)]
+public sealed class CborSerializableAttribute : Attribute;
+
+[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = false, AllowMultiple = false)]
+public sealed class CborMapAttribute : Attribute
+{
+ public CborMapAttribute() { }
+}
+
+[AttributeUsage(AttributeTargets.Property | AttributeTargets.Parameter, Inherited = false, AllowMultiple = false)]
+public sealed class CborNullableAttribute : Attribute
+{
+ public CborNullableAttribute() { }
+}
+
+[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = false, AllowMultiple = false)]
+public sealed class CborListAttribute : Attribute
+{
+ public CborListAttribute() { }
+}
+
+[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface, Inherited = false, AllowMultiple = false)]
+public sealed class CborUnionAttribute : Attribute
+{
+ public CborUnionAttribute() { }
+}
+
+[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface, Inherited = false, AllowMultiple = false)]
+public sealed class CborConstrAttribute : Attribute
+{
+ // Default constructor - use -1 to mean "any index"
+ public CborConstrAttribute()
+ {
+ ConstructorIndex = -1;
+ }
+
+ // Constructor with index parameter
+ public CborConstrAttribute(int constructorIndex)
+ {
+ ConstructorIndex = constructorIndex;
+ }
+
+ public int ConstructorIndex { get; }
+
+ // Helper property to check if any index is allowed
+ public bool IsAnyIndexAllowed => ConstructorIndex == -1;
+}
+
+[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface, Inherited = false, AllowMultiple = false)]
+public sealed class CborTagAttribute(int tag) : Attribute
+{
+ public int Tag { get; } = tag;
+}
+
+// Property/parameter attributes
+
+[AttributeUsage(AttributeTargets.Property | AttributeTargets.Parameter, Inherited = false, AllowMultiple = false)]
+public sealed class CborOrderAttribute(int order) : Attribute
+{
+ public int Order { get; } = order;
+}
+
+[AttributeUsage(AttributeTargets.Property | AttributeTargets.Parameter, Inherited = false, AllowMultiple = false)]
+public sealed class CborPropertyAttribute : Attribute
+{
+ public string StringKey { get; }
+ public int? IntKey { get; }
+ public bool IsIntKey { get; }
+
+ // Constructor for string keys
+ public CborPropertyAttribute(string key)
+ {
+ StringKey = key;
+ IntKey = null;
+ IsIntKey = false;
+ }
+
+ // Constructor for integer keys
+ public CborPropertyAttribute(int key)
+ {
+ StringKey = key.ToString();
+ IntKey = key;
+ IsIntKey = true;
+ }
+}
+
+[AttributeUsage(AttributeTargets.Property | AttributeTargets.Parameter, Inherited = false, AllowMultiple = false)]
+public sealed class CborSizeAttribute(int size) : Attribute
+{
+ public int Size { get; } = size;
+}
+
+[AttributeUsage(AttributeTargets.Property | AttributeTargets.Parameter, Inherited = false, AllowMultiple = false)]
+public sealed class CborIndefiniteAttribute : Attribute
+{
+ public CborIndefiniteAttribute() { }
+}
+
+// Validation attributes
+
+[AttributeUsage(AttributeTargets.Property | AttributeTargets.Parameter, Inherited = false, AllowMultiple = false)]
+public sealed class CborValidateExactAttribute(object expectedValue) : Attribute
+{
+ public object ExpectedValue { get; } = expectedValue;
+}
+
+[AttributeUsage(AttributeTargets.Property | AttributeTargets.Parameter, Inherited = false, AllowMultiple = false)]
+public sealed class CborValidateRangeAttribute(double minimum, double maximum) : Attribute
+{
+ public double Minimum { get; } = minimum;
+ public double Maximum { get; } = maximum;
+}
+
+[AttributeUsage(AttributeTargets.Property | AttributeTargets.Parameter, Inherited = false, AllowMultiple = false)]
+public sealed class CborValidateAttribute(Type validatorType) : Attribute
+{
+ public Type ValidatorType { get; } = validatorType;
+}
+
diff --git a/src/Chrysalis.Cbor/Serialization/CborOptions.cs b/src/Chrysalis.Cbor/Serialization/CborOptions.cs
new file mode 100644
index 00000000..83b98cdd
--- /dev/null
+++ b/src/Chrysalis.Cbor/Serialization/CborOptions.cs
@@ -0,0 +1,49 @@
+using System.Reflection;
+
+namespace Chrysalis.Cbor.Serialization;
+
+public partial record CborOptions
+{
+ public static readonly CborOptions Default = new();
+
+ public int Index { get; init; } = -1;
+ public bool IsDefinite { get; init; } = false;
+ public int? Tag { get; init; } = -1;
+ public int? Size { get; init; } = -1;
+ public Type? ObjectType { get; }
+ public Type? NormalizedType { get; }
+ public Type? ConverterType { get; }
+ public Type? RuntimeType { get; set; }
+ public object? ExactValue { get; set; }
+ public ConstructorInfo? Constructor { get; set; }
+ public IReadOnlyDictionary? IndexPropertyMapping { get; }
+ public IReadOnlyDictionary? NamedPropertyMapping { get; }
+ public IReadOnlyCollection? UnionTypes { get; }
+
+ public CborOptions(
+ int index = -1,
+ bool isDefinite = false,
+ int tag = -1,
+ int size = -1,
+ Type? objectType = null,
+ Type? normalizedType = null,
+ Type? converterType = null,
+ IReadOnlyDictionary? indexPropertyMapping = null,
+ IReadOnlyDictionary? namedPropertyMapping = null,
+ IReadOnlyCollection? unionTypes = null,
+ ConstructorInfo? constructor = null
+ )
+ {
+ Index = index;
+ IsDefinite = isDefinite;
+ Tag = tag;
+ Size = size;
+ ObjectType = objectType;
+ NormalizedType = normalizedType;
+ ConverterType = converterType;
+ IndexPropertyMapping = indexPropertyMapping;
+ NamedPropertyMapping = namedPropertyMapping;
+ UnionTypes = unionTypes;
+ Constructor = constructor;
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Serialization/CborSerializer.cs b/src/Chrysalis.Cbor/Serialization/CborSerializer.cs
new file mode 100644
index 00000000..b923ad95
--- /dev/null
+++ b/src/Chrysalis.Cbor/Serialization/CborSerializer.cs
@@ -0,0 +1,67 @@
+using System.Formats.Cbor;
+using System.Runtime.CompilerServices;
+using Chrysalis.Cbor.Serialization.Utils;
+using Chrysalis.Cbor.Types;
+
+
+namespace Chrysalis.Cbor.Serialization;
+
+///
+/// Provides methods to serialize and deserialize objects to and from CBOR.
+///
+public static class CborSerializer
+{
+ ///
+ /// Serializes a CborBase-derived object to a Concise Binary Object Representation (CBOR) byte array.
+ ///
+ /// The type of object to serialize, which must inherit from CborBase.
+ /// The object instance to serialize. If this object already contains serialized data in its Raw property, that data will be returned directly.
+ /// A byte array containing the CBOR-encoded representation of the object.
+ ///
+ /// This method performs the following steps:
+ /// 1. Checks if the object already contains pre-serialized data (Raw property)
+ /// 2. If not, creates a new CborWriter with Lax conformance mode
+ /// 3. Retrieves type-specific serialization options from the CborRegistry
+ /// 4. Delegates to the appropriate serialization implementation
+ /// 5. Encodes and returns the final byte array
+ ///
+ /// Thrown when an error occurs during serialization.
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static byte[] Serialize(T value) where T : CborBase
+ {
+ if (value.Raw is not null)
+ {
+ return value.Raw.Value.ToArray();
+ }
+
+ CborWriter writer = new(CborConformanceMode.Lax);
+ GenericSerializationUtil.Write(writer, value);
+
+ return writer.Encode();
+ }
+
+ ///
+ /// Deserializes a CBOR byte array into an object of type T.
+ ///
+ /// The target type for deserialization, which must inherit from CborBase.
+ /// The CBOR-encoded byte array to deserialize.
+ /// A deserialized instance of type T with its Raw property set to the input data.
+ ///
+ /// This method performs the following steps:
+ /// 1. Creates a new CborReader with the provided data and Lax conformance mode
+ /// 2. Retrieves type-specific deserialization options from the CborRegistry
+ /// 3. Delegates to the appropriate deserialization implementation
+ /// 4. Casts the result to CborBase and validates it is non-null
+ /// 5. Stores the original byte array in the instance's Raw property
+ /// 6. Returns the typed instance
+ ///
+ /// Thrown when an error occurs during deserialization.
+ /// Thrown when the deserialized type does not match the expected type.
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static T Deserialize(ReadOnlyMemory data) where T : CborBase
+ {
+ CborReader reader = new(data, CborConformanceMode.Lax);
+ T? result = GenericSerializationUtil.Read(reader);
+ return result ?? throw new Exception("Deserialization failed: result is null.");
+ }
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Serialization/ICborConverter.cs b/src/Chrysalis.Cbor/Serialization/ICborConverter.cs
new file mode 100644
index 00000000..fcb4d773
--- /dev/null
+++ b/src/Chrysalis.Cbor/Serialization/ICborConverter.cs
@@ -0,0 +1,9 @@
+using System.Formats.Cbor;
+
+namespace Chrysalis.Cbor.Serialization;
+
+public interface ICborConverter
+{
+ void Write(CborWriter writer, List value, CborOptions options);
+ object? Read(CborReader reader, CborOptions options);
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Serialization/ICborPreserveRaw.cs b/src/Chrysalis.Cbor/Serialization/ICborPreserveRaw.cs
new file mode 100644
index 00000000..7e3cb566
--- /dev/null
+++ b/src/Chrysalis.Cbor/Serialization/ICborPreserveRaw.cs
@@ -0,0 +1,3 @@
+namespace Chrysalis.Cbor.Serialization;
+
+public interface ICborPreserveRaw { }
diff --git a/src/Chrysalis.Cbor/Serialization/ICborValidator.cs b/src/Chrysalis.Cbor/Serialization/ICborValidator.cs
new file mode 100644
index 00000000..3a7019d3
--- /dev/null
+++ b/src/Chrysalis.Cbor/Serialization/ICborValidator.cs
@@ -0,0 +1,6 @@
+namespace Chrysalis.Cbor.Serialization;
+
+public interface ICborValidator
+{
+ bool Validate(T input);
+}
\ No newline at end of file
diff --git a/src/Chrysalis.Cbor/Serialization/Utils/GenericSerializationUtil.cs b/src/Chrysalis.Cbor/Serialization/Utils/GenericSerializationUtil.cs
new file mode 100644
index 00000000..ee52d430
--- /dev/null
+++ b/src/Chrysalis.Cbor/Serialization/Utils/GenericSerializationUtil.cs
@@ -0,0 +1,745 @@
+
+using System.Collections.Concurrent;
+using System.Formats.Cbor;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using Chrysalis.Cbor.Types.Primitives;
+
+namespace Chrysalis.Cbor.Serialization.Utils;
+
+public delegate T ReadDelegate(ReadOnlyMemory data);
+public delegate void WriteDelegate(CborWriter writer, T value);
+
+public static class GenericSerializationUtil
+{
+ private static readonly ConcurrentDictionary ReadMethodCache = [];
+ private static readonly ConcurrentDictionary WriteMethodCache = [];
+
+ #region Read
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static T? Read(CborReader reader)
+ {
+ if (IsPrimitiveType(typeof(T)))
+ {
+ return ReadPrimitive(reader);
+ }
+ else
+ {
+ return ReadNonPrimitive(reader);
+ }
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static object? Read(CborReader reader, Type type)
+ {
+ if (IsPrimitiveType(type))
+ {
+ return ReadPrimitive(type, reader);
+ }
+ else
+ {
+ return ReadNonPrimitive(type, reader);
+ }
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static object? Read(CborReader reader, object? value)
+ {
+ Type? type = value?.GetType();
+
+ if (type == null)
+ {
+ return null;
+ }
+
+ if (IsPrimitiveType(type))
+ {
+ return ReadPrimitive(type, reader);
+ }
+ else
+ {
+ return ReadNonPrimitive(type, reader);
+ }
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static bool IsPrimitiveType(Type type)
+ {
+ if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
+ {
+ type = Nullable.GetUnderlyingType(type)!;
+ }
+
+ // Now check if the type is a primitive type or one of the supported types
+ return type == typeof(bool) ||
+ type == typeof(int) ||
+ type == typeof(uint) ||
+ type == typeof(long) ||
+ type == typeof(ulong) ||
+ type == typeof(float) ||
+ type == typeof(double) ||
+ type == typeof(decimal) ||
+ type == typeof(string) ||
+ type == typeof(byte[]) ||
+ type == typeof(CborEncodedValue);
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static T? ReadPrimitive(CborReader reader)
+ {
+ Type type = typeof(T);
+
+ // Handle nullable types by getting the underlying type
+ if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
+ {
+ // Get the underlying type of the nullable
+ type = Nullable.GetUnderlyingType(type)!;
+ }
+
+ // Handle primitive types (including nullable ones)
+ if (type == typeof(bool))
+ return (T)(object)reader.ReadBoolean();
+ if (type == typeof(int))
+ return (T)(object)reader.ReadInt32();
+ if (type == typeof(uint))
+ return (T)(object)reader.ReadUInt32();
+ if (type == typeof(long))
+ return (T)(object)reader.ReadInt64();
+ if (type == typeof(ulong))
+ return (T)(object)reader.ReadUInt64();
+ if (type == typeof(float))
+ return (T)(object)reader.ReadSingle();
+ if (type == typeof(double))
+ return (T)(object)reader.ReadDouble();
+ if (type == typeof(decimal))
+ return (T)(object)reader.ReadDecimal();
+ if (type == typeof(string))
+ return (T)(object)reader.ReadTextString();
+ if (type == typeof(byte[]))
+ return (T)(object)ReadByteArray(reader);
+ if (type == typeof(CborEncodedValue))
+ return (T)(object)new CborEncodedValue(reader.ReadEncodedValue().ToArray());
+
+ // Special handling for nullable types
+ if (Nullable.GetUnderlyingType(type) != null)
+ {
+ // Handle the nullable case (reading the underlying type)
+ object? value = ReadPrimitive(Nullable.GetUnderlyingType(type)!, reader); // Recursively call to read underlying type
+ return (T?)value; // Convert back to Nullable
+ }
+
+ throw new NotSupportedException($"Type {type} is not supported as a primitive type.");
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static object? ReadPrimitive(Type type, CborReader reader)
+ {
+ // Handle nullable types by checking the underlying type
+ if (Nullable.GetUnderlyingType(type) != null)
+ {
+ // Get the underlying type of the nullable
+ Type underlyingType = Nullable.GetUnderlyingType(type)!;
+
+ // Read the value for the underlying type (it could be null)
+ object? value = ReadPrimitive(underlyingType, reader);
+
+ // If value is null, return it as Nullable (null wrapped in nullable type)
+ if (value == null)
+ {
+ return null; // This will return a nullable type (e.g., ulong?)
+ }
+
+ // Convert the value to the nullable type (T?)
+ return value;
+ }
+
+ // Handle non-nullable types
+ if (type == typeof(bool))
+ return reader.ReadBoolean();
+ if (type == typeof(int))
+ return reader.ReadInt32();
+ if (type == typeof(uint))
+ return reader.ReadUInt32();
+ if (type == typeof(long))
+ return reader.ReadInt64();
+ if (type == typeof(ulong))
+ return reader.ReadUInt64();
+ if (type == typeof(float))
+ return reader.ReadSingle();
+ if (type == typeof(double))
+ return reader.ReadDouble();
+ if (type == typeof(decimal))
+ return reader.ReadDecimal();
+ if (type == typeof(string))
+ return reader.ReadTextString();
+ if (type == typeof(byte[]))
+ return ReadByteArray(reader);
+ if (type == typeof(CborEncodedValue))
+ return new CborEncodedValue(reader.ReadEncodedValue().ToArray());
+
+ throw new NotSupportedException($"Type {type} is not supported as a primitive type.");
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ private static byte[] ReadByteArray(CborReader reader)
+ {
+ if (reader.PeekState() == CborReaderState.StartIndefiniteLengthByteString)
+ {
+ reader.ReadStartIndefiniteLengthByteString();
+ using var stream = new MemoryStream();
+ while (reader.PeekState() != CborReaderState.EndIndefiniteLengthByteString)
+ {
+ byte[] chunk = reader.ReadByteString();
+ stream.Write(chunk, 0, chunk.Length);
+ }
+ reader.ReadEndIndefiniteLengthByteString();
+ return stream.ToArray();
+ }
+ else
+ {
+ return reader.ReadByteString();
+ }
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static T ReadNonPrimitive(CborReader reader)
+ {
+ // Read the encoded value
+ ReadOnlyMemory encodedValue = reader.ReadEncodedValue();
+
+ try
+ {
+ // Check if we have already cached the delegate for this type
+ if (!ReadMethodCache.TryGetValue(typeof(T), out var readDelegate))
+ {
+ // If not cached, use reflection to find the Read method and create a delegate
+ var readMethod = typeof(T).GetMethod("Read", BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy, null, new[] { typeof(ReadOnlyMemory) }, null) ?? throw new NotSupportedException($"Type {typeof(T).FullName} does not have a valid static Read method.");
+
+ // Create the delegate and cache it
+ readDelegate = (ReadDelegate)Delegate.CreateDelegate(typeof(ReadDelegate), readMethod);
+ ReadMethodCache[typeof(T)] = readDelegate;
+ }
+
+ // Invoke the cached delegate
+ return ((ReadDelegate)readDelegate)(encodedValue);
+ }
+ catch (Exception ex)
+ {
+ // Log and throw any errors that occur
+ throw new InvalidOperationException($"Failed to read type {typeof(T).FullName}: {ex.Message}", ex);
+ }
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static object? ReadNonPrimitive(Type type, CborReader reader)
+ {
+ // Read the encoded value
+ ReadOnlyMemory encodedValue = reader.ReadEncodedValue();
+
+ try
+ {
+ // Handle nullable types: check if type is Nullable
+ if (Nullable.GetUnderlyingType(type) != null)
+ {
+ // Get the underlying type (e.g., ulong for ulong?)
+ Type underlyingType = Nullable.GetUnderlyingType(type)!;
+
+ // Check if we have already cached the delegate for the underlying type
+ if (!ReadMethodCache.TryGetValue(underlyingType, out var readDelegate))
+ {
+ // If not cached, use reflection to find the Read method and create a delegate
+ var readMethod = underlyingType.GetMethod("Read", BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy, null, new[] { typeof(ReadOnlyMemory) }, null)
+ ?? throw new NotSupportedException($"Type {underlyingType.FullName} does not have a valid static Read method.");
+
+ // Create the delegate for the specific type
+ readDelegate = (Delegate)Delegate.CreateDelegate(typeof(ReadDelegate<>).MakeGenericType(underlyingType), readMethod);
+ ReadMethodCache[underlyingType] = readDelegate;
+ }
+
+ // Invoke the cached delegate for the underlying type and return the result wrapped as Nullable
+ object? result = readDelegate.DynamicInvoke(encodedValue);
+ return result == null ? null : Convert.ChangeType(result, type);
+ }
+
+ // Handle non-nullable types: Use delegates for non-nullable types as well
+ if (!ReadMethodCache.TryGetValue(type, out var readDelegateNonNullable))
+ {
+ // If not cached, use reflection to find the Read method and create a delegate
+ var readMethod = type.GetMethod("Read", BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy, null, new[] { typeof(ReadOnlyMemory) }, null)
+ ?? throw new NotSupportedException($"Type {type.FullName} does not have a valid static Read method.");
+
+ // Create the delegate for the specific type
+ readDelegateNonNullable = (Delegate)Delegate.CreateDelegate(typeof(ReadDelegate<>).MakeGenericType(type), readMethod);
+ ReadMethodCache[type] = readDelegateNonNullable;
+ }
+
+ // Invoke the cached delegate for the non-nullable type
+ return readDelegateNonNullable.DynamicInvoke(encodedValue);
+ }
+ catch (Exception ex) when (ex is not InvalidOperationException)
+ {
+ // Provide better diagnostics
+ throw new InvalidOperationException($"Failed to read type {type.FullName} via delegate invocation: {ex.Message}", ex);
+ }
+ }
+
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static List