From 34c8bc9859006e86f0442048d3aedd14c588c447 Mon Sep 17 00:00:00 2001 From: Ravi Hegde Date: Tue, 26 May 2026 16:06:42 +0530 Subject: [PATCH] feat(sdk-coin-canton): added allocation allocate parsing Ticket: CHALO-498 --- modules/sdk-coin-canton/src/canton.ts | 22 +++++----- .../src/lib/transaction/transaction.ts | 1 + modules/sdk-coin-canton/src/lib/utils.ts | 43 +++++++++++++++++++ modules/sdk-coin-canton/test/resources.ts | 28 ++++++++++++ .../allocationAllocateBuilder.ts | 41 ++++++++++++++++++ modules/sdk-coin-canton/test/unit/utils.ts | 19 ++++++++ 6 files changed, 144 insertions(+), 10 deletions(-) diff --git a/modules/sdk-coin-canton/src/canton.ts b/modules/sdk-coin-canton/src/canton.ts index 8c8df0e870..a23ffc6e75 100644 --- a/modules/sdk-coin-canton/src/canton.ts +++ b/modules/sdk-coin-canton/src/canton.ts @@ -1,31 +1,31 @@ import { AuditDecryptedKeyParams, BaseCoin, + BaseTransaction, BitGoBase, CantonCommand, CantonCommandParams, CantonCreateCommand, CantonExerciseCommand, + EDDSAMethods, + extractCommonKeychain, + InvalidAddressError, KeyPair, MPCAlgorithm, MultisigType, multisigTypes, ParsedTransaction, ParseTransactionOptions, + PopulatedIntent, + PrebuildTransactionWithIntentOptions, SignedTransaction, SignTransactionOptions, + TokenEnablementConfig, + TransactionExplanation as BaseTransactionExplanation, TransactionParams, TransactionType, - VerifyTransactionOptions, - TransactionExplanation as BaseTransactionExplanation, - BaseTransaction, - PopulatedIntent, - PrebuildTransactionWithIntentOptions, TssVerifyAddressOptions, - InvalidAddressError, - extractCommonKeychain, - EDDSAMethods, - TokenEnablementConfig, + VerifyTransactionOptions, } from '@bitgo/sdk-core'; import { auditEddsaPrivateKey } from '@bitgo/sdk-lib-mpc'; import { BaseCoin as StaticsBaseCoin, coins } from '@bitgo/statics'; @@ -126,7 +126,9 @@ export class Canton extends BaseCoin { case TransactionType.TransferOfferWithdrawn: case TransactionType.CosignDelegationAccept: case TransactionType.CosignDelegationProposal: - // There is no input for these type of transactions, so always return true. + case TransactionType.AllocationAllocate: + case TransactionType.AllocationRequest: + // There is no recipient info to verify for these transaction types, so always return true. return true; case TransactionType.CantonCommand: return this.verifyCantonCommandTransaction( diff --git a/modules/sdk-coin-canton/src/lib/transaction/transaction.ts b/modules/sdk-coin-canton/src/lib/transaction/transaction.ts index 69753aa1a9..0a188deb16 100644 --- a/modules/sdk-coin-canton/src/lib/transaction/transaction.ts +++ b/modules/sdk-coin-canton/src/lib/transaction/transaction.ts @@ -349,6 +349,7 @@ export class Transaction extends BaseTransaction { inputAmount = txData.amount; break; } + case TransactionType.AllocationAllocate: case TransactionType.Send: { const txData = this.toJson(); const output: ITransactionRecipient = { diff --git a/modules/sdk-coin-canton/src/lib/utils.ts b/modules/sdk-coin-canton/src/lib/utils.ts index b190c94222..c5d94cf8bb 100644 --- a/modules/sdk-coin-canton/src/lib/utils.ts +++ b/modules/sdk-coin-canton/src/lib/utils.ts @@ -308,6 +308,49 @@ export class Utils implements BaseUtils { break; } + case TransactionType.AllocationAllocate: { + // DvpLegAllocation create node → allocation.transferLeg contains the full settlement transfer details: + // sender, receiver (the actual settlement counterparty), amount, and instrumentId + const dvpFields = findCreateNodeFields('DvpLegAllocation'); + if (dvpFields) { + const allocationField = getField(dvpFields, 'allocation'); + if (allocationField?.oneofKind === 'record') { + const allocationFields = allocationField.record?.fields ?? []; + const transferLegField = getField(allocationFields, 'transferLeg'); + if (transferLegField?.oneofKind === 'record') { + const transferLegFields = transferLegField.record?.fields ?? []; + const senderData = getField(transferLegFields, 'sender'); + if (senderData?.oneofKind === 'party') sender = senderData.party ?? ''; + const receiverData = getField(transferLegFields, 'receiver'); + if (receiverData?.oneofKind === 'party') receiver = receiverData.party ?? ''; + const amountData = getField(transferLegFields, 'amount'); + if (amountData?.oneofKind === 'numeric') amount = amountData.numeric ?? ''; + const instrumentIdField = getField(transferLegFields, 'instrumentId'); + if (instrumentIdField?.oneofKind === 'record') { + const instrumentIdFields = instrumentIdField.record?.fields ?? []; + const adminData = getField(instrumentIdFields, 'admin'); + if (adminData?.oneofKind === 'party') instrumentAdmin = adminData.party ?? ''; + const idData = getField(instrumentIdFields, 'id'); + if (idData?.oneofKind === 'text') instrumentId = idData.text ?? ''; + } + } + } + } + // Fallback: if DvpLegAllocation is absent, use the operator as receiver + if (!receiver) { + const allocateFields = findExerciseNodeFields('AllocationFactory_Allocate'); + if (allocateFields) { + const adminData = getField(allocateFields, 'expectedAdmin'); + if (adminData?.oneofKind === 'party') receiver = adminData.party ?? ''; + } + } + if (!sender) { + const senderParty = findExerciseActingParty('AllocationFactory_Allocate'); + if (senderParty) sender = senderParty; + } + break; + } + case TransactionType.CosignDelegationAccept: { // exercise CosignDelegationProposal_Accept → actingParties[0] = signer (sender) const signerParty = findExerciseActingParty('CosignDelegationProposal_Accept'); diff --git a/modules/sdk-coin-canton/test/resources.ts b/modules/sdk-coin-canton/test/resources.ts index 1e9ae4c5f5..dc8718040f 100644 --- a/modules/sdk-coin-canton/test/resources.ts +++ b/modules/sdk-coin-canton/test/resources.ts @@ -298,6 +298,34 @@ export const TrasferPrepareResponse = { hashingDetails: null, }; +export const CantonAllocationAllocatePrepareResponse = { + preparedTransaction: + 'CpSXAQoDMi4xEgEwGvQGCgEzwj7tBhLqBgoDMi4xEooBMDBiYjEzY2VmYzg5OWY3ZGU5NmUwMGJhZTE4NDVjYWI4YmYzNTZlZGUyZTQ2YTQ5MWI0Njc3NDk0OWQwMDQ0N2ExY2ExMjEyMjA3NThiMTI0NmY3ZGI1YmQyOWNiZjc0NTgxMDJiNDM2ZTUzYWJhMGExODA5OWQ5YmUyMzRmMjFlOThhNGFhYjQyGht1dGlsaXR5LXJlZ2lzdHJ5LWhvbGRpbmctdjAicApAODEwNzg5OWFjNDcyM2NlOTg2YmY3ZDI3NDE2NTM0ZTU3NmU1NGI5MjE2MWU0NjE1MGE1OTVmYjc4ZmYzZDNhMRIjVXRpbGl0eS5SZWdpc3RyeS5Ib2xkaW5nLlYwLkhvbGRpbmcaB0hvbGRpbmcqaGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5KldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDIyaGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5MldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDI6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5OldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDIahigKATHCPv8nGvwnCgMyLjESigEwMGQ5MmQwNTM5YjFkNjI4NWIzMjY5MGQ5MzIyZGY4MWIxNTk5Mzk4M2YyZTNmYWRkZWJiNDM0ODg5NjkxYjI5OWRjYTExMTIyMDgxNzM1ZDJlZDVjM2YzNzc0YjkwODQ4N2RkOTBmNzJiZGM2ZTU2Y2M2MGZhYjVjOGNkZDIyODI1OTg1ZTMwYzcaF3V0aWxpdHktcmVnaXN0cnktYXBwLXYwIogBCkA3YTc1ZWY2ZTY5ZjY5Mzk1YTRlNjA5MTllMjI4NTI4YmI4ZjM4ODExNTBjY2ZkZTNmMzFiY2M3Mzg2NGIxOGFiEjFVdGlsaXR5LlJlZ2lzdHJ5LkFwcC5WMC5TZXJ2aWNlLkFsbG9jYXRpb25GYWN0b3J5GhFBbGxvY2F0aW9uRmFjdG9yeSpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkyaGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5OmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQySiJBbGxvY2F0aW9uRmFjdG9yeV9BbGxvY2F0ZUludGVybmFsUrUacrIaCpkBCkA3YTc1ZWY2ZTY5ZjY5Mzk1YTRlNjA5MTllMjI4NTI4YmI4ZjM4ODExNTBjY2ZkZTNmMzFiY2M3Mzg2NGIxOGFiEjFVdGlsaXR5LlJlZ2lzdHJ5LkFwcC5WMC5TZXJ2aWNlLkFsbG9jYXRpb25GYWN0b3J5GiJBbGxvY2F0aW9uRmFjdG9yeV9BbGxvY2F0ZUludGVybmFsEpMZCgdwYXlsb2FkEocZcoQZCogBCkAyNzUwNjRhYWNmZTk5Y2VhNzJlZTBjODA1NjM5MzYxMjk1NjM3NzZmNjc0MTVlZjlmMTNlNDI5N2VlY2JjNTIwEihTcGxpY2UuQXBpLlRva2VuLkFsbG9jYXRpb25JbnN0cnVjdGlvblYxGhpBbGxvY2F0aW9uRmFjdG9yeV9BbGxvY2F0ZRJ7Cg1leHBlY3RlZEFkbWluEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EqkOCgphbGxvY2F0aW9uEpoOcpcOCnoKQDkzYzk0MmFlMmI0YzJiYTY3NGZiMTUyZmUzODQ3M2M1MDdiZGE0ZTgyYjRlNGM1ZGE1NWE1NTJhOWQ4Y2NlMWQSHVNwbGljZS5BcGkuVG9rZW4uQWxsb2NhdGlvblYxGhdBbGxvY2F0aW9uU3BlY2lmaWNhdGlvbhLmBgoKc2V0dGxlbWVudBLXBnLUBgpxCkA5M2M5NDJhZTJiNGMyYmE2NzRmYjE1MmZlMzg0NzNjNTA3YmRhNGU4MmI0ZTRjNWRhNTVhNTUyYTlkOGNjZTFkEh1TcGxpY2UuQXBpLlRva2VuLkFsbG9jYXRpb25WMRoOU2V0dGxlbWVudEluZm8SYgoIZXhlY3V0b3ISVjpUcmF2aS1uZXctcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyErgCCg1zZXR0bGVtZW50UmVmEqYCcqMCCmwKQDkzYzk0MmFlMmI0YzJiYTY3NGZiMTUyZmUzODQ3M2M1MDdiZGE0ZTgyYjRlNGM1ZGE1NWE1NTJhOWQ4Y2NlMWQSHVNwbGljZS5BcGkuVG9rZW4uQWxsb2NhdGlvblYxGglSZWZlcmVuY2USFQoCaWQSD0INQ0FTSC0yN0JERUY2NBKbAQoDY2lkEpMBUpABCo0BSooBMDAyMDEwOGI3YWVlMGUwMjE1NTM4NjY4YTdlYmIwMGU3ZTgxMTEzNWZmMmViZjIzMTM3NzYwMDU2ZTA3N2I5MzQ3Y2ExMjEyMjBkZmEyNWNkOTA1Y2FiYTAxMzQ1YjUxNWQxMDAyYWY5NGIwYmEyYTljMmU5YTY3NTFjMDdlZDI4Nzk1NDU0YTllEhgKC3JlcXVlc3RlZEF0EgkpALNldrNSBgASGwoOYWxsb2NhdGVCZWZvcmUSCSnogZe/s1IGABIZCgxzZXR0bGVCZWZvcmUSCSnoU+EqtFIGABLtAQoEbWV0YRLkAXLhAQppCkA0ZGVkNmI2NjhjYjNiNjRmN2E4OGEzMDg3NGNkNDFjNzU4MjlmNWUwNjRiM2ZiYmFkZjQxZWM3ZTgzNjMzNTRmEhtTcGxpY2UuQXBpLlRva2VuLk1ldGFkYXRhVjEaCE1ldGFkYXRhEnQKBnZhbHVlcxJqYmgKJgoTY29tLmJpdGdvL3RyYWRlLXJlZhIPQg1DQVNILTI3QkRFRjY0Cj4KJnNwbGljZS5sZmRlY2VudHJhbGl6ZWR0cnVzdC5vcmcvcmVhc29uEhRCEkNhc2hEdnAgYWxsb2NhdGlvbhItCg10cmFuc2ZlckxlZ0lkEhxCGkNBU0gtMjdCREVGNjQtc2VjdXJpdHktbGVnEoAGCgt0cmFuc2ZlckxlZxLwBXLtBQpuCkA5M2M5NDJhZTJiNGMyYmE2NzRmYjE1MmZlMzg0NzNjNTA3YmRhNGU4MmI0ZTRjNWRhNTVhNTUyYTlkOGNjZTFkEh1TcGxpY2UuQXBpLlRva2VuLkFsbG9jYXRpb25WMRoLVHJhbnNmZXJMZWcSYwoGc2VuZGVyElk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhJpCghyZWNlaXZlchJdOltyYXZpLTItc3RlcC1wYXJ0eS1uZXc6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyEhgKBmFtb3VudBIOMgw1LjAwMDAwMDAwMDASigIKDGluc3RydW1lbnRJZBL5AXL2AQpsCkA3MThhMGY3N2U1MDVhOGRlMjJmMTg4YmQ0Yzg3ZmU3NDEwMTI3NGU5ZDRjYjFiZmFjN2QwOWFlYzcxNThkMzViEhpTcGxpY2UuQXBpLlRva2VuLkhvbGRpbmdWMRoMSW5zdHJ1bWVudElkEnMKBWFkbWluEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EhEKAmlkEgtCCVRlc3RUb2tlbhKDAQoEbWV0YRJ7cnkKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghNZXRhZGF0YRIMCgZ2YWx1ZXMSAmIAEhgKC3JlcXVlc3RlZEF0EgkpALNldrNSBgASqAEKEGlucHV0SG9sZGluZ0NpZHMSkwFakAEKjQFKigEwMGJiMTNjZWZjODk5ZjdkZTk2ZTAwYmFlMTg0NWNhYjhiZjM1NmVkZTJlNDZhNDkxYjQ2Nzc0OTQ5ZDAwNDQ3YTFjYTEyMTIyMDc1OGIxMjQ2ZjdkYjViZDI5Y2JmNzQ1ODEwMmI0MzZlNTNhYmEwYTE4MDk5ZDliZTIzNGYyMWU5OGE0YWFiNDISiAcKCWV4dHJhQXJncxL6BnL3BgpqCkA0ZGVkNmI2NjhjYjNiNjRmN2E4OGEzMDg3NGNkNDFjNzU4MjlmNWUwNjRiM2ZiYmFkZjQxZWM3ZTgzNjMzNTRmEhtTcGxpY2UuQXBpLlRva2VuLk1ldGFkYXRhVjEaCUV4dHJhQXJncxKCBQoHY29udGV4dBL2BHLzBApuCkA0ZGVkNmI2NjhjYjNiNjRmN2E4OGEzMDg3NGNkNDFjNzU4MjlmNWUwNjRiM2ZiYmFkZjQxZWM3ZTgzNjMzNTRmEhtTcGxpY2UuQXBpLlRva2VuLk1ldGFkYXRhVjEaDUNob2ljZUNvbnRleHQSgAQKBnZhbHVlcxL1A2LyAwrDAgoxdXRpbGl0eS5kaWdpdGFsYXNzZXQuY29tL2luc3RydW1lbnQtY29uZmlndXJhdGlvbhKNAnqKAgppCkA0ZGVkNmI2NjhjYjNiNjRmN2E4OGEzMDg3NGNkNDFjNzU4MjlmNWUwNjRiM2ZiYmFkZjQxZWM3ZTgzNjMzNTRmEhtTcGxpY2UuQXBpLlRva2VuLk1ldGFkYXRhVjEaCEFueVZhbHVlEg1BVl9Db250cmFjdElkGo0BSooBMDBhNzRmY2M0YWRjMTBmZmZlYzA2ZmQzNDU4MTUxNWE2MzZlZWQ5ZjA3MjExMTE4MmJlNjE4OWNjMThhZTg1YzgzY2ExMTEyMjAyODEwNGIzNjRlNDk4MjA0NmFhMTJlNTI5NDUxNDhlM2RlZjNkMjE5ODkxZjY4N2FjMzEyZTkxODY1MzZjYzhiCqkBCit1dGlsaXR5LmRpZ2l0YWxhc3NldC5jb20vc2VuZGVyLWNyZWRlbnRpYWxzEnp6eAppCkA0ZGVkNmI2NjhjYjNiNjRmN2E4OGEzMDg3NGNkNDFjNzU4MjlmNWUwNjRiM2ZiYmFkZjQxZWM3ZTgzNjMzNTRmEhtTcGxpY2UuQXBpLlRva2VuLk1ldGFkYXRhVjEaCEFueVZhbHVlEgdBVl9MaXN0GgJaABKDAQoEbWV0YRJ7cnkKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghNZXRhZGF0YRIMCgZ2YWx1ZXMSAmIAYgEyYgEzYgE0YgE1YgE2YgE3atQGctEGCokBCkAyNzUwNjRhYWNmZTk5Y2VhNzJlZTBjODA1NjM5MzYxMjk1NjM3NzZmNjc0MTVlZjlmMTNlNDI5N2VlY2JjNTIwEihTcGxpY2UuQXBpLlRva2VuLkFsbG9jYXRpb25JbnN0cnVjdGlvblYxGhtBbGxvY2F0aW9uSW5zdHJ1Y3Rpb25SZXN1bHQS3gMKBm91dHB1dBLTA3rQAwqQAQpAMjc1MDY0YWFjZmU5OWNlYTcyZWUwYzgwNTYzOTM2MTI5NTYzNzc2ZjY3NDE1ZWY5ZjEzZTQyOTdlZWNiYzUyMBIoU3BsaWNlLkFwaS5Ub2tlbi5BbGxvY2F0aW9uSW5zdHJ1Y3Rpb25WMRoiQWxsb2NhdGlvbkluc3RydWN0aW9uUmVzdWx0X091dHB1dBIlQWxsb2NhdGlvbkluc3RydWN0aW9uUmVzdWx0X0NvbXBsZXRlZBqTAnKQAgq2AQpAMjc1MDY0YWFjZmU5OWNlYTcyZWUwYzgwNTYzOTM2MTI5NTYzNzc2ZjY3NDE1ZWY5ZjEzZTQyOTdlZWNiYzUyMBIoU3BsaWNlLkFwaS5Ub2tlbi5BbGxvY2F0aW9uSW5zdHJ1Y3Rpb25WMRpIQWxsb2NhdGlvbkluc3RydWN0aW9uUmVzdWx0X091dHB1dC5BbGxvY2F0aW9uSW5zdHJ1Y3Rpb25SZXN1bHRfQ29tcGxldGVkElUKDWFsbG9jYXRpb25DaWQSREpCMDA1OGU2ODgyZjk5ODljM2VjYTk3NzAzNmVmM2JhOWEwMDNlY2MwYWZjZjJhYjQ3ZTFiZDg5N2QyMWZjNzUwYTMzElwKEHNlbmRlckNoYW5nZUNpZHMSSFpGCkRKQjAwYTA4NmE5MzZkZGRkMDI1OGRmZjFmZjc1MWVmZDk2ZDNmZWMxZWM4ZjNmOGJjNDU5ODA4MDAwNzczYWZlNWM2MxKDAQoEbWV0YRJ7cnkKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghNZXRhZGF0YRIMCgZ2YWx1ZXMSAmIAcmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORrqBwoBNMI+4wca4AcKAzIuMRKKATAwYmIxM2NlZmM4OTlmN2RlOTZlMDBiYWUxODQ1Y2FiOGJmMzU2ZWRlMmU0NmE0OTFiNDY3NzQ5NDlkMDA0NDdhMWNhMTIxMjIwNzU4YjEyNDZmN2RiNWJkMjljYmY3NDU4MTAyYjQzNmU1M2FiYTBhMTgwOTlkOWJlMjM0ZjIxZTk4YTRhYWI0MhobdXRpbGl0eS1yZWdpc3RyeS1ob2xkaW5nLXYwInAKQDgxMDc4OTlhYzQ3MjNjZTk4NmJmN2QyNzQxNjUzNGU1NzZlNTRiOTIxNjFlNDYxNTBhNTk1ZmI3OGZmM2QzYTESI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGgdIb2xkaW5nKmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOSpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyMmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTJXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQySgdBcmNoaXZlUmVyYwphCkA5ZTcwYThiMzUxMGQ2MTdmOGExMzYyMTNmMzNkNmE5MDNhMTBjYTBlZWVjNzZiYjA2YmE1NWQxZWQ5NjgwZjY5EhREQS5JbnRlcm5hbC5UZW1wbGF0ZRoHQXJjaGl2ZVgBagIKABqWDAoBNsI+jwwKjAwKAzIuMRJCMDBhMDg2YTkzNmRkZGQwMjU4ZGZmMWZmNzUxZWZkOTZkM2ZlYzFlYzhmM2Y4YmM0NTk4MDgwMDA3NzNhZmU1YzYzGht1dGlsaXR5LXJlZ2lzdHJ5LWhvbGRpbmctdjAicApAODEwNzg5OWFjNDcyM2NlOTg2YmY3ZDI3NDE2NTM0ZTU3NmU1NGI5MjE2MWU0NjE1MGE1OTVmYjc4ZmYzZDNhMRIjVXRpbGl0eS5SZWdpc3RyeS5Ib2xkaW5nLlYwLkhvbGRpbmcaB0hvbGRpbmcqqwdyqAcKcApAODEwNzg5OWFjNDcyM2NlOTg2YmY3ZDI3NDE2NTM0ZTU3NmU1NGI5MjE2MWU0NjE1MGE1OTVmYjc4ZmYzZDNhMRIjVXRpbGl0eS5SZWdpc3RyeS5Ib2xkaW5nLlYwLkhvbGRpbmcaB0hvbGRpbmcSdgoIb3BlcmF0b3ISajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSdgoIcHJvdmlkZXISajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSdwoJcmVnaXN0cmFyEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EmIKBW93bmVyElk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhK9AgoKaW5zdHJ1bWVudBKuAnKrAgp7CkA4MTA3ODk5YWM0NzIzY2U5ODZiZjdkMjc0MTY1MzRlNTc2ZTU0YjkyMTYxZTQ2MTUwYTU5NWZiNzhmZjNkM2ExEiFVdGlsaXR5LlJlZ2lzdHJ5LkhvbGRpbmcuVjAuVHlwZXMaFEluc3RydW1lbnRJZGVudGlmaWVyEnQKBnNvdXJjZRJqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORIRCgJpZBILQglUZXN0VG9rZW4SIwoGc2NoZW1lEhlCF1JlZ2lzdHJhckludGVybmFsU2NoZW1lEgsKBWxhYmVsEgJCABIaCgZhbW91bnQSEDIOMzg1LjAwMDAwMDAwMDAyaGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5MldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDI6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5OldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDIa+wQKATLCPvQEEvEECgMyLjESigEwMGE3NGZjYzRhZGMxMGZmZmVjMDZmZDM0NTgxNTE1YTYzNmVlZDlmMDcyMTExMTgyYmU2MTg5Y2MxOGFlODVjODNjYTExMTIyMDI4MTA0YjM2NGU0OTgyMDQ2YWExMmU1Mjk0NTE0OGUzZGVmM2QyMTk4OTFmNjg3YWMzMTJlOTE4NjUzNmNjOGIaE3V0aWxpdHktcmVnaXN0cnktdjAiiQEKQGEyMzZlOGUyMmEzYjVmMTk5ZTM3ZDU1NTRlODJiYWZkMmRmNjg4ZjkwMWRlMDJiMDBiZTM5NjRiZGZhOGMxYWISLFV0aWxpdHkuUmVnaXN0cnkuVjAuQ29uZmlndXJhdGlvbi5JbnN0cnVtZW50GhdJbnN0cnVtZW50Q29uZmlndXJhdGlvbipoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkyaGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5OmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORrAFwoBN8I+uRcKthcKAzIuMRJCMDA1OGU2ODgyZjk5ODljM2VjYTk3NzAzNmVmM2JhOWEwMDNlY2MwYWZjZjJhYjQ3ZTFiZDg5N2QyMWZjNzUwYTMzGhN1dGlsaXR5LXJlZ2lzdHJ5LXYwInwKQGEyMzZlOGUyMmEzYjVmMTk5ZTM3ZDU1NTRlODJiYWZkMmRmNjg4ZjkwMWRlMDJiMDBiZTM5NjRiZGZhOGMxYWISJlV0aWxpdHkuUmVnaXN0cnkuVjAuSG9sZGluZy5BbGxvY2F0aW9uGhBEdnBMZWdBbGxvY2F0aW9uKvsRcvgRCnwKQGEyMzZlOGUyMmEzYjVmMTk5ZTM3ZDU1NTRlODJiYWZkMmRmNjg4ZjkwMWRlMDJiMDBiZTM5NjRiZGZhOGMxYWISJlV0aWxpdHkuUmVnaXN0cnkuVjAuSG9sZGluZy5BbGxvY2F0aW9uGhBEdnBMZWdBbGxvY2F0aW9uEqkOCgphbGxvY2F0aW9uEpoOcpcOCnoKQDkzYzk0MmFlMmI0YzJiYTY3NGZiMTUyZmUzODQ3M2M1MDdiZGE0ZTgyYjRlNGM1ZGE1NWE1NTJhOWQ4Y2NlMWQSHVNwbGljZS5BcGkuVG9rZW4uQWxsb2NhdGlvblYxGhdBbGxvY2F0aW9uU3BlY2lmaWNhdGlvbhLmBgoKc2V0dGxlbWVudBLXBnLUBgpxCkA5M2M5NDJhZTJiNGMyYmE2NzRmYjE1MmZlMzg0NzNjNTA3YmRhNGU4MmI0ZTRjNWRhNTVhNTUyYTlkOGNjZTFkEh1TcGxpY2UuQXBpLlRva2VuLkFsbG9jYXRpb25WMRoOU2V0dGxlbWVudEluZm8SYgoIZXhlY3V0b3ISVjpUcmF2aS1uZXctcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyErgCCg1zZXR0bGVtZW50UmVmEqYCcqMCCmwKQDkzYzk0MmFlMmI0YzJiYTY3NGZiMTUyZmUzODQ3M2M1MDdiZGE0ZTgyYjRlNGM1ZGE1NWE1NTJhOWQ4Y2NlMWQSHVNwbGljZS5BcGkuVG9rZW4uQWxsb2NhdGlvblYxGglSZWZlcmVuY2USFQoCaWQSD0INQ0FTSC0yN0JERUY2NBKbAQoDY2lkEpMBUpABCo0BSooBMDAyMDEwOGI3YWVlMGUwMjE1NTM4NjY4YTdlYmIwMGU3ZTgxMTEzNWZmMmViZjIzMTM3NzYwMDU2ZTA3N2I5MzQ3Y2ExMjEyMjBkZmEyNWNkOTA1Y2FiYTAxMzQ1YjUxNWQxMDAyYWY5NGIwYmEyYTljMmU5YTY3NTFjMDdlZDI4Nzk1NDU0YTllEhgKC3JlcXVlc3RlZEF0EgkpALNldrNSBgASGwoOYWxsb2NhdGVCZWZvcmUSCSnogZe/s1IGABIZCgxzZXR0bGVCZWZvcmUSCSnoU+EqtFIGABLtAQoEbWV0YRLkAXLhAQppCkA0ZGVkNmI2NjhjYjNiNjRmN2E4OGEzMDg3NGNkNDFjNzU4MjlmNWUwNjRiM2ZiYmFkZjQxZWM3ZTgzNjMzNTRmEhtTcGxpY2UuQXBpLlRva2VuLk1ldGFkYXRhVjEaCE1ldGFkYXRhEnQKBnZhbHVlcxJqYmgKJgoTY29tLmJpdGdvL3RyYWRlLXJlZhIPQg1DQVNILTI3QkRFRjY0Cj4KJnNwbGljZS5sZmRlY2VudHJhbGl6ZWR0cnVzdC5vcmcvcmVhc29uEhRCEkNhc2hEdnAgYWxsb2NhdGlvbhItCg10cmFuc2ZlckxlZ0lkEhxCGkNBU0gtMjdCREVGNjQtc2VjdXJpdHktbGVnEoAGCgt0cmFuc2ZlckxlZxLwBXLtBQpuCkA5M2M5NDJhZTJiNGMyYmE2NzRmYjE1MmZlMzg0NzNjNTA3YmRhNGU4MmI0ZTRjNWRhNTVhNTUyYTlkOGNjZTFkEh1TcGxpY2UuQXBpLlRva2VuLkFsbG9jYXRpb25WMRoLVHJhbnNmZXJMZWcSYwoGc2VuZGVyElk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhJpCghyZWNlaXZlchJdOltyYXZpLTItc3RlcC1wYXJ0eS1uZXc6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyEhgKBmFtb3VudBIOMgw1LjAwMDAwMDAwMDASigIKDGluc3RydW1lbnRJZBL5AXL2AQpsCkA3MThhMGY3N2U1MDVhOGRlMjJmMTg4YmQ0Yzg3ZmU3NDEwMTI3NGU5ZDRjYjFiZmFjN2QwOWFlYzcxNThkMzViEhpTcGxpY2UuQXBpLlRva2VuLkhvbGRpbmdWMRoMSW5zdHJ1bWVudElkEnMKBWFkbWluEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EhEKAmlkEgtCCVRlc3RUb2tlbhKDAQoEbWV0YRJ7cnkKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghNZXRhZGF0YRIMCgZ2YWx1ZXMSAmIAElgKEGxvY2tlZEhvbGRpbmdDaWQSREpCMDA3Nzg2OWM2NTM2ODRmN2ZiNDNmMmFiNzkyZDNmZGExNWJhNmNkMzFlNWFjN2Q1ZmUwMzJhN2M3ODgzNDRjZDE1EnYKCG9wZXJhdG9yEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EnoKCHByb3ZpZGVyEm5SbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTJoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkyV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4Zjk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpUcmF2aS1uZXctcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyGu4lCgEwwj7nJRrkJQoDMi4xEooBMDBkOTJkMDUzOWIxZDYyODViMzI2OTBkOTMyMmRmODFiMTU5OTM5ODNmMmUzZmFkZGViYjQzNDg4OTY5MWIyOTlkY2ExMTEyMjA4MTczNWQyZWQ1YzNmMzc3NGI5MDg0ODdkZDkwZjcyYmRjNmU1NmNjNjBmYWI1YzhjZGQyMjgyNTk4NWUzMGM3Ghd1dGlsaXR5LXJlZ2lzdHJ5LWFwcC12MCKIAQpAN2E3NWVmNmU2OWY2OTM5NWE0ZTYwOTE5ZTIyODUyOGJiOGYzODgxMTUwY2NmZGUzZjMxYmNjNzM4NjRiMThhYhIxVXRpbGl0eS5SZWdpc3RyeS5BcHAuVjAuU2VydmljZS5BbGxvY2F0aW9uRmFjdG9yeRoRQWxsb2NhdGlvbkZhY3RvcnkqaGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5MmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyQn8KQDI3NTA2NGFhY2ZlOTljZWE3MmVlMGM4MDU2MzkzNjEyOTU2Mzc3NmY2NzQxNWVmOWYxM2U0Mjk3ZWVjYmM1MjASKFNwbGljZS5BcGkuVG9rZW4uQWxsb2NhdGlvbkluc3RydWN0aW9uVjEaEUFsbG9jYXRpb25GYWN0b3J5ShpBbGxvY2F0aW9uRmFjdG9yeV9BbGxvY2F0ZVKHGXKEGQqIAQpAMjc1MDY0YWFjZmU5OWNlYTcyZWUwYzgwNTYzOTM2MTI5NTYzNzc2ZjY3NDE1ZWY5ZjEzZTQyOTdlZWNiYzUyMBIoU3BsaWNlLkFwaS5Ub2tlbi5BbGxvY2F0aW9uSW5zdHJ1Y3Rpb25WMRoaQWxsb2NhdGlvbkZhY3RvcnlfQWxsb2NhdGUSewoNZXhwZWN0ZWRBZG1pbhJqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORKpDgoKYWxsb2NhdGlvbhKaDnKXDgp6CkA5M2M5NDJhZTJiNGMyYmE2NzRmYjE1MmZlMzg0NzNjNTA3YmRhNGU4MmI0ZTRjNWRhNTVhNTUyYTlkOGNjZTFkEh1TcGxpY2UuQXBpLlRva2VuLkFsbG9jYXRpb25WMRoXQWxsb2NhdGlvblNwZWNpZmljYXRpb24S5gYKCnNldHRsZW1lbnQS1wZy1AYKcQpAOTNjOTQyYWUyYjRjMmJhNjc0ZmIxNTJmZTM4NDczYzUwN2JkYTRlODJiNGU0YzVkYTU1YTU1MmE5ZDhjY2UxZBIdU3BsaWNlLkFwaS5Ub2tlbi5BbGxvY2F0aW9uVjEaDlNldHRsZW1lbnRJbmZvEmIKCGV4ZWN1dG9yElY6VHJhdmktbmV3LXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhK4AgoNc2V0dGxlbWVudFJlZhKmAnKjAgpsCkA5M2M5NDJhZTJiNGMyYmE2NzRmYjE1MmZlMzg0NzNjNTA3YmRhNGU4MmI0ZTRjNWRhNTVhNTUyYTlkOGNjZTFkEh1TcGxpY2UuQXBpLlRva2VuLkFsbG9jYXRpb25WMRoJUmVmZXJlbmNlEhUKAmlkEg9CDUNBU0gtMjdCREVGNjQSmwEKA2NpZBKTAVKQAQqNAUqKATAwMjAxMDhiN2FlZTBlMDIxNTUzODY2OGE3ZWJiMDBlN2U4MTExMzVmZjJlYmYyMzEzNzc2MDA1NmUwNzdiOTM0N2NhMTIxMjIwZGZhMjVjZDkwNWNhYmEwMTM0NWI1MTVkMTAwMmFmOTRiMGJhMmE5YzJlOWE2NzUxYzA3ZWQyODc5NTQ1NGE5ZRIYCgtyZXF1ZXN0ZWRBdBIJKQCzZXazUgYAEhsKDmFsbG9jYXRlQmVmb3JlEgkp6IGXv7NSBgASGQoMc2V0dGxlQmVmb3JlEgkp6FPhKrRSBgAS7QEKBG1ldGES5AFy4QEKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghNZXRhZGF0YRJ0CgZ2YWx1ZXMSamJoCiYKE2NvbS5iaXRnby90cmFkZS1yZWYSD0INQ0FTSC0yN0JERUY2NAo+CiZzcGxpY2UubGZkZWNlbnRyYWxpemVkdHJ1c3Qub3JnL3JlYXNvbhIUQhJDYXNoRHZwIGFsbG9jYXRpb24SLQoNdHJhbnNmZXJMZWdJZBIcQhpDQVNILTI3QkRFRjY0LXNlY3VyaXR5LWxlZxKABgoLdHJhbnNmZXJMZWcS8AVy7QUKbgpAOTNjOTQyYWUyYjRjMmJhNjc0ZmIxNTJmZTM4NDczYzUwN2JkYTRlODJiNGU0YzVkYTU1YTU1MmE5ZDhjY2UxZBIdU3BsaWNlLkFwaS5Ub2tlbi5BbGxvY2F0aW9uVjEaC1RyYW5zZmVyTGVnEmMKBnNlbmRlchJZOldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDISaQoIcmVjZWl2ZXISXTpbcmF2aS0yLXN0ZXAtcGFydHktbmV3OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhIYCgZhbW91bnQSDjIMNS4wMDAwMDAwMDAwEooCCgxpbnN0cnVtZW50SWQS+QFy9gEKbApANzE4YTBmNzdlNTA1YThkZTIyZjE4OGJkNGM4N2ZlNzQxMDEyNzRlOWQ0Y2IxYmZhYzdkMDlhZWM3MTU4ZDM1YhIaU3BsaWNlLkFwaS5Ub2tlbi5Ib2xkaW5nVjEaDEluc3RydW1lbnRJZBJzCgVhZG1pbhJqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORIRCgJpZBILQglUZXN0VG9rZW4SgwEKBG1ldGESe3J5CmkKQDRkZWQ2YjY2OGNiM2I2NGY3YTg4YTMwODc0Y2Q0MWM3NTgyOWY1ZTA2NGIzZmJiYWRmNDFlYzdlODM2MzM1NGYSG1NwbGljZS5BcGkuVG9rZW4uTWV0YWRhdGFWMRoITWV0YWRhdGESDAoGdmFsdWVzEgJiABIYCgtyZXF1ZXN0ZWRBdBIJKQCzZXazUgYAEqgBChBpbnB1dEhvbGRpbmdDaWRzEpMBWpABCo0BSooBMDBiYjEzY2VmYzg5OWY3ZGU5NmUwMGJhZTE4NDVjYWI4YmYzNTZlZGUyZTQ2YTQ5MWI0Njc3NDk0OWQwMDQ0N2ExY2ExMjEyMjA3NThiMTI0NmY3ZGI1YmQyOWNiZjc0NTgxMDJiNDM2ZTUzYWJhMGExODA5OWQ5YmUyMzRmMjFlOThhNGFhYjQyEogHCglleHRyYUFyZ3MS+gZy9wYKagpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGglFeHRyYUFyZ3MSggUKB2NvbnRleHQS9gRy8wQKbgpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGg1DaG9pY2VDb250ZXh0EoAECgZ2YWx1ZXMS9QNi8gMKwwIKMXV0aWxpdHkuZGlnaXRhbGFzc2V0LmNvbS9pbnN0cnVtZW50LWNvbmZpZ3VyYXRpb24SjQJ6igIKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghBbnlWYWx1ZRINQVZfQ29udHJhY3RJZBqNAUqKATAwYTc0ZmNjNGFkYzEwZmZmZWMwNmZkMzQ1ODE1MTVhNjM2ZWVkOWYwNzIxMTExODJiZTYxODljYzE4YWU4NWM4M2NhMTExMjIwMjgxMDRiMzY0ZTQ5ODIwNDZhYTEyZTUyOTQ1MTQ4ZTNkZWYzZDIxOTg5MWY2ODdhYzMxMmU5MTg2NTM2Y2M4YgqpAQordXRpbGl0eS5kaWdpdGFsYXNzZXQuY29tL3NlbmRlci1jcmVkZW50aWFscxJ6engKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghBbnlWYWx1ZRIHQVZfTGlzdBoCWgASgwEKBG1ldGESe3J5CmkKQDRkZWQ2YjY2OGNiM2I2NGY3YTg4YTMwODc0Y2Q0MWM3NTgyOWY1ZTA2NGIzZmJiYWRmNDFlYzdlODM2MzM1NGYSG1NwbGljZS5BcGkuVG9rZW4uTWV0YWRhdGFWMRoITWV0YWRhdGESDAoGdmFsdWVzEgJiAGIBMWrUBnLRBgqJAQpAMjc1MDY0YWFjZmU5OWNlYTcyZWUwYzgwNTYzOTM2MTI5NTYzNzc2ZjY3NDE1ZWY5ZjEzZTQyOTdlZWNiYzUyMBIoU3BsaWNlLkFwaS5Ub2tlbi5BbGxvY2F0aW9uSW5zdHJ1Y3Rpb25WMRobQWxsb2NhdGlvbkluc3RydWN0aW9uUmVzdWx0Et4DCgZvdXRwdXQS0wN60AMKkAEKQDI3NTA2NGFhY2ZlOTljZWE3MmVlMGM4MDU2MzkzNjEyOTU2Mzc3NmY2NzQxNWVmOWYxM2U0Mjk3ZWVjYmM1MjASKFNwbGljZS5BcGkuVG9rZW4uQWxsb2NhdGlvbkluc3RydWN0aW9uVjEaIkFsbG9jYXRpb25JbnN0cnVjdGlvblJlc3VsdF9PdXRwdXQSJUFsbG9jYXRpb25JbnN0cnVjdGlvblJlc3VsdF9Db21wbGV0ZWQakwJykAIKtgEKQDI3NTA2NGFhY2ZlOTljZWE3MmVlMGM4MDU2MzkzNjEyOTU2Mzc3NmY2NzQxNWVmOWYxM2U0Mjk3ZWVjYmM1MjASKFNwbGljZS5BcGkuVG9rZW4uQWxsb2NhdGlvbkluc3RydWN0aW9uVjEaSEFsbG9jYXRpb25JbnN0cnVjdGlvblJlc3VsdF9PdXRwdXQuQWxsb2NhdGlvbkluc3RydWN0aW9uUmVzdWx0X0NvbXBsZXRlZBJVCg1hbGxvY2F0aW9uQ2lkEkRKQjAwNThlNjg4MmY5OTg5YzNlY2E5NzcwMzZlZjNiYTlhMDAzZWNjMGFmY2YyYWI0N2UxYmQ4OTdkMjFmYzc1MGEzMxJcChBzZW5kZXJDaGFuZ2VDaWRzEkhaRgpESkIwMGEwODZhOTM2ZGRkZDAyNThkZmYxZmY3NTFlZmQ5NmQzZmVjMWVjOGYzZjhiYzQ1OTgwODAwMDc3M2FmZTVjNjMSgwEKBG1ldGESe3J5CmkKQDRkZWQ2YjY2OGNiM2I2NGY3YTg4YTMwODc0Y2Q0MWM3NTgyOWY1ZTA2NGIzZmJiYWRmNDFlYzdlODM2MzM1NGYSG1NwbGljZS5BcGkuVG9rZW4uTWV0YWRhdGFWMRoITWV0YWRhdGESDAoGdmFsdWVzEgJiABrvDwoBNcI+6A8K5Q8KAzIuMRJCMDA3Nzg2OWM2NTM2ODRmN2ZiNDNmMmFiNzkyZDNmZGExNWJhNmNkMzFlNWFjN2Q1ZmUwMzJhN2M3ODgzNDRjZDE1Ght1dGlsaXR5LXJlZ2lzdHJ5LWhvbGRpbmctdjAicApAODEwNzg5OWFjNDcyM2NlOTg2YmY3ZDI3NDE2NTM0ZTU3NmU1NGI5MjE2MWU0NjE1MGE1OTVmYjc4ZmYzZDNhMRIjVXRpbGl0eS5SZWdpc3RyeS5Ib2xkaW5nLlYwLkhvbGRpbmcaB0hvbGRpbmcqhAtygQsKcApAODEwNzg5OWFjNDcyM2NlOTg2YmY3ZDI3NDE2NTM0ZTU3NmU1NGI5MjE2MWU0NjE1MGE1OTVmYjc4ZmYzZDNhMRIjVXRpbGl0eS5SZWdpc3RyeS5Ib2xkaW5nLlYwLkhvbGRpbmcaB0hvbGRpbmcSdgoIb3BlcmF0b3ISajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSdgoIcHJvdmlkZXISajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSdwoJcmVnaXN0cmFyEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EmIKBW93bmVyElk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhK9AgoKaW5zdHJ1bWVudBKuAnKrAgp7CkA4MTA3ODk5YWM0NzIzY2U5ODZiZjdkMjc0MTY1MzRlNTc2ZTU0YjkyMTYxZTQ2MTUwYTU5NWZiNzhmZjNkM2ExEiFVdGlsaXR5LlJlZ2lzdHJ5LkhvbGRpbmcuVjAuVHlwZXMaFEluc3RydW1lbnRJZGVudGlmaWVyEnQKBnNvdXJjZRJqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORIRCgJpZBILQglUZXN0VG9rZW4SIwoGc2NoZW1lEhlCF1JlZ2lzdHJhckludGVybmFsU2NoZW1lEgsKBWxhYmVsEgJCABIYCgZhbW91bnQSDjIMNS4wMDAwMDAwMDAwEtgDCgRsb2NrEs8DUswDCskDcsYDCm0KQDgxMDc4OTlhYzQ3MjNjZTk4NmJmN2QyNzQxNjUzNGU1NzZlNTRiOTIxNjFlNDYxNTBhNTk1ZmI3OGZmM2QzYTESI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGgRMb2NrEuMBCgdsb2NrZXJzEtcBctQBClUKQGMzYmIwYzVkMDQ3OTliM2YxMWJhZDdjM2MxMDI5NjNlMTE1Y2Y1M2RhM2U0YWZjYmNmZDlmMDZlYmQ4MmI0ZmYSDERBLlNldC5UeXBlcxoDU2V0EnsKA21hcBJ0anIKcApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORICCgASbwoHY29udGV4dBJkQmJBbGxvY2F0aW9uIFJlZmVyZW5jZSB7aWQgPSAiQ0FTSC0yN0JERUY2NCIsIGNpZCA9IFNvbWUgPGNvbnRyYWN0LWlkPn07IkNBU0gtMjdCREVGNjQtc2VjdXJpdHktbGVnIjJoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkyV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4Zjk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMiIiEiBF1WFZWRr+tgZLRZqIuRBEpbrDXajmN8d5WgmqdPWRpSIkCAESIOlSzzfwYEsgF8juhj/VVcW8uNcpN16n2tR5B5rb+sNQIiQIBBIg2z23dx7bB9Z51DWaSv6LKwFS4p3bL2xz8Jt4EP15e0UiJAgFEiAH1fTuJBKfgHl5l/gw1Rp6TfhQ5FOdKhjTLuYWNHHxsiIkCAYSIAH3kRjs5NVMHgN6BPXrvxRA9lDqNnQDnDqoqJIHcWb6IiQIBxIgwFVrb7j00wKdzn32A2t70T0lTkLnvaHDr2KFa7bCYi8S9zcSfwpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyEiQxNjVlMGQ4NS1mZGI0LTQxNGItOTM4My0yYmM1NjBmNDAwMzEaU2dsb2JhbC1kb21haW46OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhKiQyYzA3ZjU4Zi1mM2FhLTRlM2ItOWMxOC0zOWU1YmQyMmY1MWMwmbXRs7fWlAM6wxIKmgsKAzIuMRKKATAwYTc0ZmNjNGFkYzEwZmZmZWMwNmZkMzQ1ODE1MTVhNjM2ZWVkOWYwNzIxMTExODJiZTYxODljYzE4YWU4NWM4M2NhMTExMjIwMjgxMDRiMzY0ZTQ5ODIwNDZhYTEyZTUyOTQ1MTQ4ZTNkZWYzZDIxOTg5MWY2ODdhYzMxMmU5MTg2NTM2Y2M4YhoTdXRpbGl0eS1yZWdpc3RyeS12MCKJAQpAZWQ3M2Q1YjlhYjcxNzMzM2YzZGJkMTIyZGU3YmUzMTU2ZjhiZjI2MTRhNjczNjBjM2RkNjFmYzAxMzUxMzNmYRIsVXRpbGl0eS5SZWdpc3RyeS5WMC5Db25maWd1cmF0aW9uLkluc3RydW1lbnQaF0luc3RydW1lbnRDb25maWd1cmF0aW9uKpAHco0HCokBCkBhMjM2ZThlMjJhM2I1ZjE5OWUzN2Q1NTU0ZTgyYmFmZDJkZjY4OGY5MDFkZTAyYjAwYmUzOTY0YmRmYThjMWFiEixVdGlsaXR5LlJlZ2lzdHJ5LlYwLkNvbmZpZ3VyYXRpb24uSW5zdHJ1bWVudBoXSW5zdHJ1bWVudENvbmZpZ3VyYXRpb24SdgoIb3BlcmF0b3ISajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSdgoIcHJvdmlkZXISajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSdwoJcmVnaXN0cmFyEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EsQCChFkZWZhdWx0SWRlbnRpZmllchKuAnKrAgp7CkA4MTA3ODk5YWM0NzIzY2U5ODZiZjdkMjc0MTY1MzRlNTc2ZTU0YjkyMTYxZTQ2MTUwYTU5NWZiNzhmZjNkM2ExEiFVdGlsaXR5LlJlZ2lzdHJ5LkhvbGRpbmcuVjAuVHlwZXMaFEluc3RydW1lbnRJZGVudGlmaWVyEnQKBnNvdXJjZRJqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORIRCgJpZBILQglUZXN0VG9rZW4SIwoGc2NoZW1lEhlCF1JlZ2lzdHJhckludGVybmFsU2NoZW1lEhsKFWFkZGl0aW9uYWxJZGVudGlmaWVycxICWgASGAoSaXNzdWVyUmVxdWlyZW1lbnRzEgJaABIYChJob2xkZXJSZXF1aXJlbWVudHMSAloAMmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjnAPtWXk+D225AD0j6YBwoDMi4xEpAHCkUAp0/MStwQ//7Ab9NFgVFaY27tnwchERgr5hicwYroXIPKERIgKBBLNk5JggRqoS5SlFFI497z0hmJH2h6wxLpGGU2zIsSE3V0aWxpdHktcmVnaXN0cnktdjAajQEKQGVkNzNkNWI5YWI3MTczMzNmM2RiZDEyMmRlN2JlMzE1NmY4YmYyNjE0YTY3MzYwYzNkZDYxZmMwMTM1MTMzZmESB1V0aWxpdHkSCFJlZ2lzdHJ5EgJWMBINQ29uZmlndXJhdGlvbhIKSW5zdHJ1bWVudBoXSW5zdHJ1bWVudENvbmZpZ3VyYXRpb24iggRq/wMKbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOQpsCmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5CmwKajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkKoAEKnQFqmgEKbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOQoNCgtCCVRlc3RUb2tlbgobChlCF1JlZ2lzdHJhckludGVybmFsU2NoZW1lCgQKAloACgQKAloACgQKAloAKmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTnVywRs30IGAEIqCiYKJAgBEiCf+FCRUBOHN58FWn0z/G977tnozUQ5FhZpRB3ohrZpThAeOqoVCtUMCgMyLjESigEwMGJiMTNjZWZjODk5ZjdkZTk2ZTAwYmFlMTg0NWNhYjhiZjM1NmVkZTJlNDZhNDkxYjQ2Nzc0OTQ5ZDAwNDQ3YTFjYTEyMTIyMDc1OGIxMjQ2ZjdkYjViZDI5Y2JmNzQ1ODEwMmI0MzZlNTNhYmEwYTE4MDk5ZDliZTIzNGYyMWU5OGE0YWFiNDIaG3V0aWxpdHktcmVnaXN0cnktaG9sZGluZy12MCJwCkA4MTA3ODk5YWM0NzIzY2U5ODZiZjdkMjc0MTY1MzRlNTc2ZTU0YjkyMTYxZTQ2MTUwYTU5NWZiNzhmZjNkM2ExEiNVdGlsaXR5LlJlZ2lzdHJ5LkhvbGRpbmcuVjAuSG9sZGluZxoHSG9sZGluZyqrB3KoBwpwCkA4MTA3ODk5YWM0NzIzY2U5ODZiZjdkMjc0MTY1MzRlNTc2ZTU0YjkyMTYxZTQ2MTUwYTU5NWZiNzhmZjNkM2ExEiNVdGlsaXR5LlJlZ2lzdHJ5LkhvbGRpbmcuVjAuSG9sZGluZxoHSG9sZGluZxJ2CghvcGVyYXRvchJqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORJ2Cghwcm92aWRlchJqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORJ3CglyZWdpc3RyYXISajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSYgoFb3duZXISWTpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyEr0CCgppbnN0cnVtZW50Eq4CcqsCCnsKQDgxMDc4OTlhYzQ3MjNjZTk4NmJmN2QyNzQxNjUzNGU1NzZlNTRiOTIxNjFlNDYxNTBhNTk1ZmI3OGZmM2QzYTESIVV0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5UeXBlcxoUSW5zdHJ1bWVudElkZW50aWZpZXISdAoGc291cmNlEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EhEKAmlkEgtCCVRlc3RUb2tlbhIjCgZzY2hlbWUSGUIXUmVnaXN0cmFySW50ZXJuYWxTY2hlbWUSCwoFbGFiZWwSAkIAEhoKBmFtb3VudBIQMg4zOTAuMDAwMDAwMDAwMDJoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkyV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4Zjk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMsA+ysDa/eD7kwPSPsQICgMyLjESvAgKRQC7E878iZ996W4AuuGEXKuL81bt4uRqSRtGd0lJ0ARHocoSEiB1ixJG99tb0py/dFgQK0NuU6ugoYCZ2b4jTyHpikqrQhIbdXRpbGl0eS1yZWdpc3RyeS1ob2xkaW5nLXYwGnQKQDgxMDc4OTlhYzQ3MjNjZTk4NmJmN2QyNzQxNjUzNGU1NzZlNTRiOTIxNjFlNDYxNTBhNTk1ZmI3OGZmM2QzYTESB1V0aWxpdHkSCFJlZ2lzdHJ5EgdIb2xkaW5nEgJWMBIHSG9sZGluZxoHSG9sZGluZyLnBGrkBApsCmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5CmwKajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkKbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOQpbClk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMgqgAQqdAWqaAQpsCmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5Cg0KC0IJVGVzdFRva2VuChsKGUIXUmVnaXN0cmFySW50ZXJuYWxTY2hlbWUKBAoCQgAKEgoQMg4zOTAuMDAwMDAwMDAwMCpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkqV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjlKoLYP3k8GAEIqCiYKJAgBEiDB3SK4TriGZTNRqiGdHonEliEYsSCMH9P9S9MoMM5WoRAeOvwNCoQICgMyLjESigEwMGQ5MmQwNTM5YjFkNjI4NWIzMjY5MGQ5MzIyZGY4MWIxNTk5Mzk4M2YyZTNmYWRkZWJiNDM0ODg5NjkxYjI5OWRjYTExMTIyMDgxNzM1ZDJlZDVjM2YzNzc0YjkwODQ4N2RkOTBmNzJiZGM2ZTU2Y2M2MGZhYjVjOGNkZDIyODI1OTg1ZTMwYzcaF3V0aWxpdHktcmVnaXN0cnktYXBwLXYwIogBCkA4Mjc5OGRmMDE4MzAxODUyNzA0ZjIxMGI5N2FkYWFiZjc2ZDNlY2QzN2Q4ODllMWJmOTZiNWYzMWEyMGVlYTM0EjFVdGlsaXR5LlJlZ2lzdHJ5LkFwcC5WMC5TZXJ2aWNlLkFsbG9jYXRpb25GYWN0b3J5GhFBbGxvY2F0aW9uRmFjdG9yeSr3A3L0AwqIAQpAN2E3NWVmNmU2OWY2OTM5NWE0ZTYwOTE5ZTIyODUyOGJiOGYzODgxMTUwY2NmZGUzZjMxYmNjNzM4NjRiMThhYhIxVXRpbGl0eS5SZWdpc3RyeS5BcHAuVjAuU2VydmljZS5BbGxvY2F0aW9uRmFjdG9yeRoRQWxsb2NhdGlvbkZhY3RvcnkSdgoIcHJvdmlkZXISajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSdwoJcmVnaXN0cmFyEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EnYKCG9wZXJhdG9yEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5MmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjnAPrea3ITqno4D0j7nBQoDMi4xEt8FCkUA2S0FObHWKFsyaQ2TIt+BsVmTmD8uP63eu0NIiWkbKZ3KERIggXNdLtXD83dLkISH3ZD3K9xuVsxg+rXIzdIoJZheMMcSF3V0aWxpdHktcmVnaXN0cnktYXBwLXYwGo0BCkA4Mjc5OGRmMDE4MzAxODUyNzA0ZjIxMGI5N2FkYWFiZjc2ZDNlY2QzN2Q4ODllMWJmOTZiNWYzMWEyMGVlYTM0EgdVdGlsaXR5EghSZWdpc3RyeRIDQXBwEgJWMBIHU2VydmljZRIRQWxsb2NhdGlvbkZhY3RvcnkaEUFsbG9jYXRpb25GYWN0b3J5Is0CasoCCmwKajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkKbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOQpsCmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5KmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTk3DZeg9jgGAEIqCiYKJAgBEiC/JGvp1qXzTaq8A4k6XctiXoG55gZyMwAs2zVyZ8pCUhAe', + preparedTransactionHash: 'swwwJqk8IFAGyvCdB+b3YQ5JB7X72ciNPrKlvrybUgU=', + hashingSchemeVersion: 'HASHING_SCHEME_VERSION_V2', + hashingDetails: null, + costEstimation: { + estimationTimestamp: '2026-05-26T07:29:45.691832Z', + confirmationRequestTrafficCostEstimation: 5519, + confirmationResponseTrafficCostEstimation: 0, + totalTrafficCostEstimation: 5519, + }, +}; + +export const CantonAllocationWithdrawPrepareResponse = { + preparedTransaction: + 'CsgmCgMyLjESATAalAwKATLCPo0MCooMCgMyLjESQjAwOWQwNzhmNTZjYzUzMWMzMmFmNzU3OTlkMzViMmFjYzVlM2U2NWExZjhkNTdjZmMwY2E2ZDJkNGY0MDQwMTA0YxobdXRpbGl0eS1yZWdpc3RyeS1ob2xkaW5nLXYwInAKQDgxMDc4OTlhYzQ3MjNjZTk4NmJmN2QyNzQxNjUzNGU1NzZlNTRiOTIxNjFlNDYxNTBhNTk1ZmI3OGZmM2QzYTESI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGgdIb2xkaW5nKqkHcqYHCnAKQDgxMDc4OTlhYzQ3MjNjZTk4NmJmN2QyNzQxNjUzNGU1NzZlNTRiOTIxNjFlNDYxNTBhNTk1ZmI3OGZmM2QzYTESI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGgdIb2xkaW5nEnYKCG9wZXJhdG9yEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EnYKCHByb3ZpZGVyEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EncKCXJlZ2lzdHJhchJqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORJiCgVvd25lchJZOldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDISvQIKCmluc3RydW1lbnQSrgJyqwIKewpAODEwNzg5OWFjNDcyM2NlOTg2YmY3ZDI3NDE2NTM0ZTU3NmU1NGI5MjE2MWU0NjE1MGE1OTVmYjc4ZmYzZDNhMRIhVXRpbGl0eS5SZWdpc3RyeS5Ib2xkaW5nLlYwLlR5cGVzGhRJbnN0cnVtZW50SWRlbnRpZmllchJ0CgZzb3VyY2USajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSEQoCaWQSC0IJVGVzdFRva2VuEiMKBnNjaGVtZRIZQhdSZWdpc3RyYXJJbnRlcm5hbFNjaGVtZRILCgVsYWJlbBICQgASGAoGYW1vdW50Eg4yDDUuMDAwMDAwMDAwMDJoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkyV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4Zjk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhrKCgoBMcI+wwoawAoKAzIuMRKKATAwNzc4NjljNjUzNjg0ZjdmYjQzZjJhYjc5MmQzZmRhMTViYTZjZDMxZTVhYzdkNWZlMDMyYTdjNzg4MzQ0Y2QxNWNhMTIxMjIwYTk0MmU1YzczNDI5YmZkNjRmMzExMWQ3NjcxODllN2RjNjNhOWI5ZDFhN2UyODhlMzkxYzMwYzhkMGNkYmZjMxobdXRpbGl0eS1yZWdpc3RyeS1ob2xkaW5nLXYwInAKQDgxMDc4OTlhYzQ3MjNjZTk4NmJmN2QyNzQxNjUzNGU1NzZlNTRiOTIxNjFlNDYxNTBhNTk1ZmI3OGZmM2QzYTESI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGgdIb2xkaW5nKmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOSpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyMmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTJXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOUoOSG9sZGluZ19VbmxvY2tSe3J5CncKQDgxMDc4OTlhYzQ3MjNjZTk4NmJmN2QyNzQxNjUzNGU1NzZlNTRiOTIxNjFlNDYxNTBhNTk1ZmI3OGZmM2QzYTESI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGg5Ib2xkaW5nX1VubG9ja1gBYgEyapoDcpcDCn4KQDgxMDc4OTlhYzQ3MjNjZTk4NmJmN2QyNzQxNjUzNGU1NzZlNTRiOTIxNjFlNDYxNTBhNTk1ZmI3OGZmM2QzYTESI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGhVIb2xkaW5nX1VubG9ja19SZXN1bHQSUgoKaG9sZGluZ0NpZBJESkIwMDlkMDc4ZjU2Y2M1MzFjMzJhZjc1Nzk5ZDM1YjJhY2M1ZTNlNjVhMWY4ZDU3Y2ZjMGNhNmQyZDRmNDA0MDEwNGMSwAEKBG1ldGEStwFStAEKsQFyrgEKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghNZXRhZGF0YRJBCgZ2YWx1ZXMSN2I1CjMKJ3NwbGljZS5sZmRlY2VudHJhbGl6ZWR0cnVzdC5vcmcvdHgta2luZBIIQgZ1bmxvY2sa6Q4KATDCPuIOGt8OCgMyLjESigEwMDU4ZTY4ODJmOTk4OWMzZWNhOTc3MDM2ZWYzYmE5YTAwM2VjYzBhZmNmMmFiNDdlMWJkODk3ZDIxZmM3NTBhMzNjYTEyMTIyMGNjMzk5ZjRiYWQxOTllMmI3MmU2ZGU4YTZiZWFhMjY1OWEwNzc0MzcyZTQxNDczNDI1MzFlNWZiYjNjYzI1NzYaE3V0aWxpdHktcmVnaXN0cnktdjAifApAYTIzNmU4ZTIyYTNiNWYxOTllMzdkNTU1NGU4MmJhZmQyZGY2ODhmOTAxZGUwMmIwMGJlMzk2NGJkZmE4YzFhYhImVXRpbGl0eS5SZWdpc3RyeS5WMC5Ib2xkaW5nLkFsbG9jYXRpb24aEER2cExlZ0FsbG9jYXRpb24qaGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5KldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDIyaGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5MldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDIyVHJhdmktbmV3LXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyQm0KQDkzYzk0MmFlMmI0YzJiYTY3NGZiMTUyZmUzODQ3M2M1MDdiZGE0ZTgyYjRlNGM1ZGE1NWE1NTJhOWQ4Y2NlMWQSHVNwbGljZS5BcGkuVG9rZW4uQWxsb2NhdGlvblYxGgpBbGxvY2F0aW9uShNBbGxvY2F0aW9uX1dpdGhkcmF3UpAEco0ECnYKQDkzYzk0MmFlMmI0YzJiYTY3NGZiMTUyZmUzODQ3M2M1MDdiZGE0ZTgyYjRlNGM1ZGE1NWE1NTJhOWQ4Y2NlMWQSHVNwbGljZS5BcGkuVG9rZW4uQWxsb2NhdGlvblYxGhNBbGxvY2F0aW9uX1dpdGhkcmF3EpIDCglleHRyYUFyZ3MShANygQMKagpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGglFeHRyYUFyZ3MSjAEKB2NvbnRleHQSgAFyfgpuCkA0ZGVkNmI2NjhjYjNiNjRmN2E4OGEzMDg3NGNkNDFjNzU4MjlmNWUwNjRiM2ZiYmFkZjQxZWM3ZTgzNjMzNTRmEhtTcGxpY2UuQXBpLlRva2VuLk1ldGFkYXRhVjEaDUNob2ljZUNvbnRleHQSDAoGdmFsdWVzEgJiABKDAQoEbWV0YRJ7cnkKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghNZXRhZGF0YRIMCgZ2YWx1ZXMSAmIAWAFiATFq5gJy4wIKfApAOTNjOTQyYWUyYjRjMmJhNjc0ZmIxNTJmZTM4NDczYzUwN2JkYTRlODJiNGU0YzVkYTU1YTU1MmE5ZDhjY2UxZBIdU3BsaWNlLkFwaS5Ub2tlbi5BbGxvY2F0aW9uVjEaGUFsbG9jYXRpb25fV2l0aGRyYXdSZXN1bHQSXQoRc2VuZGVySG9sZGluZ0NpZHMSSFpGCkRKQjAwOWQwNzhmNTZjYzUzMWMzMmFmNzU3OTlkMzViMmFjYzVlM2U2NWExZjhkNTdjZmMwY2E2ZDJkNGY0MDQwMTA0YxKDAQoEbWV0YRJ7cnkKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghNZXRhZGF0YRIMCgZ2YWx1ZXMSAmIAIiISIFDXBkCsHISv6TSR61NjuH1sRlGw8kmierVx8gd7PE8OIiQIARIgqOxVK34xLjQNK6LRQ7EpZ4uhGxAXPWcOlbQXq3W7MZ4iJAgCEiDYQjAInUHjw62Pd2y6yLhAeUy75pElVXdCGNxx6kWO2xK8QhJ/CldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDISJDQwYjQ4NWFhLWQ1NzktNDVmZC1iMjJiLWRiNWU4YjBiODJkZBpTZ2xvYmFsLWRvbWFpbjo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWEqJGYyZmJhOGUzLTkwMmMtNDg1OS1iODBiLWE4YzZiMTE3ZWRjMDCBp9uZvdaUAzq7JQrKGAoDMi4xEooBMDA1OGU2ODgyZjk5ODljM2VjYTk3NzAzNmVmM2JhOWEwMDNlY2MwYWZjZjJhYjQ3ZTFiZDg5N2QyMWZjNzUwYTMzY2ExMjEyMjBjYzM5OWY0YmFkMTk5ZTJiNzJlNmRlOGE2YmVhYTI2NTlhMDc3NDM3MmU0MTQ3MzQyNTMxZTVmYmIzY2MyNTc2GhN1dGlsaXR5LXJlZ2lzdHJ5LXYwInwKQGEyMzZlOGUyMmEzYjVmMTk5ZTM3ZDU1NTRlODJiYWZkMmRmNjg4ZjkwMWRlMDJiMDBiZTM5NjRiZGZhOGMxYWISJlV0aWxpdHkuUmVnaXN0cnkuVjAuSG9sZGluZy5BbGxvY2F0aW9uGhBEdnBMZWdBbGxvY2F0aW9uKsYScsMSCnwKQGEyMzZlOGUyMmEzYjVmMTk5ZTM3ZDU1NTRlODJiYWZkMmRmNjg4ZjkwMWRlMDJiMDBiZTM5NjRiZGZhOGMxYWISJlV0aWxpdHkuUmVnaXN0cnkuVjAuSG9sZGluZy5BbGxvY2F0aW9uGhBEdnBMZWdBbGxvY2F0aW9uEqkOCgphbGxvY2F0aW9uEpoOcpcOCnoKQDkzYzk0MmFlMmI0YzJiYTY3NGZiMTUyZmUzODQ3M2M1MDdiZGE0ZTgyYjRlNGM1ZGE1NWE1NTJhOWQ4Y2NlMWQSHVNwbGljZS5BcGkuVG9rZW4uQWxsb2NhdGlvblYxGhdBbGxvY2F0aW9uU3BlY2lmaWNhdGlvbhLmBgoKc2V0dGxlbWVudBLXBnLUBgpxCkA5M2M5NDJhZTJiNGMyYmE2NzRmYjE1MmZlMzg0NzNjNTA3YmRhNGU4MmI0ZTRjNWRhNTVhNTUyYTlkOGNjZTFkEh1TcGxpY2UuQXBpLlRva2VuLkFsbG9jYXRpb25WMRoOU2V0dGxlbWVudEluZm8SYgoIZXhlY3V0b3ISVjpUcmF2aS1uZXctcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyErgCCg1zZXR0bGVtZW50UmVmEqYCcqMCCmwKQDkzYzk0MmFlMmI0YzJiYTY3NGZiMTUyZmUzODQ3M2M1MDdiZGE0ZTgyYjRlNGM1ZGE1NWE1NTJhOWQ4Y2NlMWQSHVNwbGljZS5BcGkuVG9rZW4uQWxsb2NhdGlvblYxGglSZWZlcmVuY2USFQoCaWQSD0INQ0FTSC0yN0JERUY2NBKbAQoDY2lkEpMBUpABCo0BSooBMDAyMDEwOGI3YWVlMGUwMjE1NTM4NjY4YTdlYmIwMGU3ZTgxMTEzNWZmMmViZjIzMTM3NzYwMDU2ZTA3N2I5MzQ3Y2ExMjEyMjBkZmEyNWNkOTA1Y2FiYTAxMzQ1YjUxNWQxMDAyYWY5NGIwYmEyYTljMmU5YTY3NTFjMDdlZDI4Nzk1NDU0YTllEhgKC3JlcXVlc3RlZEF0EgkpALNldrNSBgASGwoOYWxsb2NhdGVCZWZvcmUSCSnogZe/s1IGABIZCgxzZXR0bGVCZWZvcmUSCSnoU+EqtFIGABLtAQoEbWV0YRLkAXLhAQppCkA0ZGVkNmI2NjhjYjNiNjRmN2E4OGEzMDg3NGNkNDFjNzU4MjlmNWUwNjRiM2ZiYmFkZjQxZWM3ZTgzNjMzNTRmEhtTcGxpY2UuQXBpLlRva2VuLk1ldGFkYXRhVjEaCE1ldGFkYXRhEnQKBnZhbHVlcxJqYmgKJgoTY29tLmJpdGdvL3RyYWRlLXJlZhIPQg1DQVNILTI3QkRFRjY0Cj4KJnNwbGljZS5sZmRlY2VudHJhbGl6ZWR0cnVzdC5vcmcvcmVhc29uEhRCEkNhc2hEdnAgYWxsb2NhdGlvbhItCg10cmFuc2ZlckxlZ0lkEhxCGkNBU0gtMjdCREVGNjQtc2VjdXJpdHktbGVnEoAGCgt0cmFuc2ZlckxlZxLwBXLtBQpuCkA5M2M5NDJhZTJiNGMyYmE2NzRmYjE1MmZlMzg0NzNjNTA3YmRhNGU4MmI0ZTRjNWRhNTVhNTUyYTlkOGNjZTFkEh1TcGxpY2UuQXBpLlRva2VuLkFsbG9jYXRpb25WMRoLVHJhbnNmZXJMZWcSYwoGc2VuZGVyElk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhJpCghyZWNlaXZlchJdOltyYXZpLTItc3RlcC1wYXJ0eS1uZXc6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyEhgKBmFtb3VudBIOMgw1LjAwMDAwMDAwMDASigIKDGluc3RydW1lbnRJZBL5AXL2AQpsCkA3MThhMGY3N2U1MDVhOGRlMjJmMTg4YmQ0Yzg3ZmU3NDEwMTI3NGU5ZDRjYjFiZmFjN2QwOWFlYzcxNThkMzViEhpTcGxpY2UuQXBpLlRva2VuLkhvbGRpbmdWMRoMSW5zdHJ1bWVudElkEnMKBWFkbWluEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EhEKAmlkEgtCCVRlc3RUb2tlbhKDAQoEbWV0YRJ7cnkKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghNZXRhZGF0YRIMCgZ2YWx1ZXMSAmIAEqIBChBsb2NrZWRIb2xkaW5nQ2lkEo0BSooBMDA3Nzg2OWM2NTM2ODRmN2ZiNDNmMmFiNzkyZDNmZGExNWJhNmNkMzFlNWFjN2Q1ZmUwMzJhN2M3ODgzNDRjZDE1Y2ExMjEyMjBhOTQyZTVjNzM0MjliZmQ2NGYzMTExZDc2NzE4OWU3ZGM2M2E5YjlkMWE3ZTI4OGUzOTFjMzBjOGQwY2RiZmMzEnYKCG9wZXJhdG9yEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EnoKCHByb3ZpZGVyEm5SbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTJoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkyV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4Zjk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpUcmF2aS1uZXctcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQywD6nq7D1t9aUA9I+4AwKAzIuMRLYDApFAFjmiC+ZicPsqXcDbvO6mgA+zAr88qtH4b2JfSH8dQozyhISIMw5n0utGZ4rcubeimvqomWaB3Q3LkFHNCUx5fuzzCV2EhN1dGlsaXR5LXJlZ2lzdHJ5LXYwGoABCkBhMjM2ZThlMjJhM2I1ZjE5OWUzN2Q1NTU0ZTgyYmFmZDJkZjY4OGY5MDFkZTAyYjAwYmUzOTY0YmRmYThjMWFiEgdVdGlsaXR5EghSZWdpc3RyeRICVjASB0hvbGRpbmcSCkFsbG9jYXRpb24aEER2cExlZ0FsbG9jYXRpb24iqAhqpQgK9wUK9AVq8QUK5AIK4QJq3gIKWApWOlRyYXZpLW5ldy1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDIKZgpkamIKEQoPQg1DQVNILTI3QkRFRjY0Ck0KS1JJCkdKRQAgEIt67g4CFVOGaKfrsA5+gRE1/y6/IxN3YAVuB3uTR8oSEiDfolzZBcq6ATRbUV0QAq+UsLoqnC6aZ1HAftKHlUVKngoLCgkpALNldrNSBgAKCwoJKeiBl7+zUgYACgsKCSnoU+EqtFIGAApzCnFqbwptCmuCAWgKJgoTY29tLmJpdGdvL3RyYWRlLXJlZhIPQg1DQVNILTI3QkRFRjY0Cj4KJnNwbGljZS5sZmRlY2VudHJhbGl6ZWR0cnVzdC5vcmcvcmVhc29uEhRCEkNhc2hEdnAgYWxsb2NhdGlvbgoeChxCGkNBU0gtMjdCREVGNjQtc2VjdXJpdHktbGVnCucCCuQCauECClsKWTpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyCl8KXTpbcmF2aS0yLXN0ZXAtcGFydHktbmV3OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMgoQCg4yDDUuMDAwMDAwMDAwMAqBAQp/an0KbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOQoNCgtCCVRlc3RUb2tlbgoLCglqBwoFCgOCAQAKSQpHSkUAd4acZTaE9/tD8qt5LT/aFbps0x5ax9X+Ayp8eINEzRXKEhIgqULlxzQpv9ZPMRHXZxiefcY6m50afiiOORwwyNDNv8MKbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOQpwCm5SbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOSpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkqV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjJUcmF2aS1uZXctcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyOacVrH6zUgYAQioKJgokCAESIDPiBjJV0ksK5Z32T00SN1kfSU4PHzfrg0UmIWe75M5dEB469hoKrhAKAzIuMRKKATAwNzc4NjljNjUzNjg0ZjdmYjQzZjJhYjc5MmQzZmRhMTViYTZjZDMxZTVhYzdkNWZlMDMyYTdjNzg4MzQ0Y2QxNWNhMTIxMjIwYTk0MmU1YzczNDI5YmZkNjRmMzExMWQ3NjcxODllN2RjNjNhOWI5ZDFhN2UyODhlMzkxYzMwYzhkMGNkYmZjMxobdXRpbGl0eS1yZWdpc3RyeS1ob2xkaW5nLXYwInAKQDgxMDc4OTlhYzQ3MjNjZTk4NmJmN2QyNzQxNjUzNGU1NzZlNTRiOTIxNjFlNDYxNTBhNTk1ZmI3OGZmM2QzYTESI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGgdIb2xkaW5nKoQLcoELCnAKQDgxMDc4OTlhYzQ3MjNjZTk4NmJmN2QyNzQxNjUzNGU1NzZlNTRiOTIxNjFlNDYxNTBhNTk1ZmI3OGZmM2QzYTESI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGgdIb2xkaW5nEnYKCG9wZXJhdG9yEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EnYKCHByb3ZpZGVyEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EncKCXJlZ2lzdHJhchJqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORJiCgVvd25lchJZOldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDISvQIKCmluc3RydW1lbnQSrgJyqwIKewpAODEwNzg5OWFjNDcyM2NlOTg2YmY3ZDI3NDE2NTM0ZTU3NmU1NGI5MjE2MWU0NjE1MGE1OTVmYjc4ZmYzZDNhMRIhVXRpbGl0eS5SZWdpc3RyeS5Ib2xkaW5nLlYwLlR5cGVzGhRJbnN0cnVtZW50SWRlbnRpZmllchJ0CgZzb3VyY2USajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSEQoCaWQSC0IJVGVzdFRva2VuEiMKBnNjaGVtZRIZQhdSZWdpc3RyYXJJbnRlcm5hbFNjaGVtZRILCgVsYWJlbBICQgASGAoGYW1vdW50Eg4yDDUuMDAwMDAwMDAwMBLYAwoEbG9jaxLPA1LMAwrJA3LGAwptCkA4MTA3ODk5YWM0NzIzY2U5ODZiZjdkMjc0MTY1MzRlNTc2ZTU0YjkyMTYxZTQ2MTUwYTU5NWZiNzhmZjNkM2ExEiNVdGlsaXR5LlJlZ2lzdHJ5LkhvbGRpbmcuVjAuSG9sZGluZxoETG9jaxLjAQoHbG9ja2VycxLXAXLUAQpVCkBjM2JiMGM1ZDA0Nzk5YjNmMTFiYWQ3YzNjMTAyOTYzZTExNWNmNTNkYTNlNGFmY2JjZmQ5ZjA2ZWJkODJiNGZmEgxEQS5TZXQuVHlwZXMaA1NldBJ7CgNtYXASdGpyCnAKajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSAgoAEm8KB2NvbnRleHQSZEJiQWxsb2NhdGlvbiBSZWZlcmVuY2Uge2lkID0gIkNBU0gtMjdCREVGNjQiLCBjaWQgPSBTb21lIDxjb250cmFjdC1pZD59OyJDQVNILTI3QkRFRjY0LXNlY3VyaXR5LWxlZyIyaGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5MldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDI6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5OldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDLAPqersPW31pQD0j63CgoDMi4xEq8KCkUAd4acZTaE9/tD8qt5LT/aFbps0x5ax9X+Ayp8eINEzRXKEhIgqULlxzQpv9ZPMRHXZxiefcY6m50afiiOORwwyNDNv8MSG3V0aWxpdHktcmVnaXN0cnktaG9sZGluZy12MBp0CkA4MTA3ODk5YWM0NzIzY2U5ODZiZjdkMjc0MTY1MzRlNTc2ZTU0YjkyMTYxZTQ2MTUwYTU5NWZiNzhmZjNkM2ExEgdVdGlsaXR5EghSZWdpc3RyeRIHSG9sZGluZxICVjASB0hvbGRpbmcaB0hvbGRpbmci2gZq1wYKbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOQpsCmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5CmwKajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkKWwpZOldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDIKoAEKnQFqmgEKbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOQoNCgtCCVRlc3RUb2tlbgobChlCF1JlZ2lzdHJhckludGVybmFsU2NoZW1lCgQKAkIAChAKDjIMNS4wMDAwMDAwMDAwCvIBCu8BUuwBCukBauYBCnwKemp4CnYKdGJyCnAKajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSAgoACmYKZEJiQWxsb2NhdGlvbiBSZWZlcmVuY2Uge2lkID0gIkNBU0gtMjdCREVGNjQiLCBjaWQgPSBTb21lIDxjb250cmFjdC1pZD59OyJDQVNILTI3QkRFRjY0LXNlY3VyaXR5LWxlZyIqaGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5KldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDI5pxWsfrNSBgBCKgomCiQIARIgBFNlzJyKvRF6uO0zEHo4MOvIHhahTB2E/7iYfH1X01cQHg==', + preparedTransactionHash: 'IWSkTvEip7szKY5Z4jKgCbiZuXfpQGG19P7sXe10d1k=', + hashingSchemeVersion: 'HASHING_SCHEME_VERSION_V2', + hashingDetails: null, + costEstimation: { + estimationTimestamp: '2026-05-26T07:55:32.440155Z', + confirmationRequestTrafficCostEstimation: 4707, + confirmationResponseTrafficCostEstimation: 0, + totalTrafficCostEstimation: 4707, + }, +}; + export const TransferObj = { commandId: '9d4fbb39-9bf0-4864-a209-66c53b429828', senderPartyId: 'ravi-test-party-1::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2', diff --git a/modules/sdk-coin-canton/test/unit/builder/allocationAllocate/allocationAllocateBuilder.ts b/modules/sdk-coin-canton/test/unit/builder/allocationAllocate/allocationAllocateBuilder.ts index 587fa3e35c..beca0c6039 100644 --- a/modules/sdk-coin-canton/test/unit/builder/allocationAllocate/allocationAllocateBuilder.ts +++ b/modules/sdk-coin-canton/test/unit/builder/allocationAllocate/allocationAllocateBuilder.ts @@ -5,6 +5,7 @@ import { coins } from '@bitgo/statics'; import { AllocationAllocateBuilder, Transaction } from '../../../../src'; import { CantonAllocationAllocateRequest } from '../../../../src/lib/iface'; +import { CantonAllocationAllocatePrepareResponse } from '../../../resources'; const commandId = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'; const amount = 100; @@ -330,4 +331,44 @@ describe('AllocationAllocate Builder', () => { txBuilder.setTransaction(prepareCommandResponse); assert.deepEqual(tx.prepareCommand, prepareCommandResponse); }); + + describe('Prepared transaction parsing', () => { + it('should parse the allocation allocate prepared transaction', function () { + const txBuilder = new AllocationAllocateBuilder(coins.get('tcanton')); + const tx = new Transaction(coins.get('tcanton')); + txBuilder.initBuilder(tx); + txBuilder.commandId(commandId); + txBuilder.setTransaction(CantonAllocationAllocatePrepareResponse); + const txData = txBuilder.transaction.toJson(); + should.exist(txData); + assert.equal( + txData.sender, + 'ravi-2-step-party::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2' + ); + // receiver = transferLeg.receiver from DvpLegAllocation — the actual settlement counterparty + assert.equal( + txData.receiver, + 'ravi-2-step-party-new::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2' + ); + assert.equal(txData.amount, '50000000000'); + }); + + it('should validate the raw allocation allocate transaction', async function () { + const txBuilder = new AllocationAllocateBuilder(coins.get('tcanton')); + const tx = new Transaction(coins.get('tcanton')); + txBuilder.initBuilder(tx); + txBuilder.commandId(commandId); + txBuilder.setTransaction(CantonAllocationAllocatePrepareResponse); + await txBuilder.validateRawTransaction(CantonAllocationAllocatePrepareResponse.preparedTransaction); + }); + + it('should validate the allocation allocate transaction', async function () { + const txBuilder = new AllocationAllocateBuilder(coins.get('tcanton')); + const tx = new Transaction(coins.get('tcanton')); + tx.prepareCommand = CantonAllocationAllocatePrepareResponse; + txBuilder.initBuilder(tx); + txBuilder.setTransaction(CantonAllocationAllocatePrepareResponse); + await txBuilder.validateTransaction(tx); + }); + }); }); diff --git a/modules/sdk-coin-canton/test/unit/utils.ts b/modules/sdk-coin-canton/test/unit/utils.ts index e90f7824ff..4cb21adcc1 100644 --- a/modules/sdk-coin-canton/test/unit/utils.ts +++ b/modules/sdk-coin-canton/test/unit/utils.ts @@ -8,6 +8,7 @@ import { Value } from '../../src/lib/resourcesInterface'; import { CANTON_ADDRESSES, CANTON_BLOCK_HEIGHT, + CantonAllocationAllocatePrepareResponse, CantonExerciseCommandPrepareResponse, GenerateTopologyResponse, OneStepPreApprovalPrepareResponse, @@ -99,6 +100,24 @@ describe('Canton Util', function () { ); assert.equal(parsedData.amount, '0'); }); + + it('should parse the allocation allocate prepared transaction', () => { + const parsedData = utils.parseRawCantonTransactionData( + CantonAllocationAllocatePrepareResponse.preparedTransaction, + TransactionType.AllocationAllocate + ); + should.exist(parsedData); + assert.equal( + parsedData.sender, + 'ravi-2-step-party::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2' + ); + // receiver = transferLeg.receiver from DvpLegAllocation — the actual settlement counterparty + assert.equal( + parsedData.receiver, + 'ravi-2-step-party-new::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2' + ); + assert.equal(parsedData.amount, '50000000000'); + }); }); describe('Wallet init transaction', function () {