From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194] helo=mx.sourceforge.net) by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1WNflp-0007sH-Rx for bitcoin-development@lists.sourceforge.net; Wed, 12 Mar 2014 09:48:17 +0000 Received-SPF: pass (sog-mx-4.v43.ch3.sourceforge.com: domain of gmail.com designates 74.125.82.44 as permitted sender) client-ip=74.125.82.44; envelope-from=mh.in.england@gmail.com; helo=mail-wg0-f44.google.com; Received: from mail-wg0-f44.google.com ([74.125.82.44]) by sog-mx-4.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.76) id 1WNflo-00086B-Nf for bitcoin-development@lists.sourceforge.net; Wed, 12 Mar 2014 09:48:17 +0000 Received: by mail-wg0-f44.google.com with SMTP id m15so8842664wgh.27 for ; Wed, 12 Mar 2014 02:48:10 -0700 (PDT) X-Received: by 10.194.5.5 with SMTP id o5mr285694wjo.16.1394617690638; Wed, 12 Mar 2014 02:48:10 -0700 (PDT) Received: from waterford.local (84-75-251-165.dclient.hispeed.ch. [84.75.251.165]) by mx.google.com with ESMTPSA id r3sm68317737wjw.0.2014.03.12.02.48.07 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 12 Mar 2014 02:48:08 -0700 (PDT) Sender: Mike Hearn Message-ID: <53202D51.8010008@plan99.net> Date: Wed, 12 Mar 2014 10:48:01 +0100 From: Mike Hearn User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: bitcoin-development@lists.sourceforge.net References: <531DFDF8.80008@gmail.com> <531E52FE.5090107@jerviss.org> <531E5454.1030601@gmail.com> <4fca6b510dd57d2f92affeb988d2ee5d.squirrel@fulvetta.riseup.net> <531FAA55.2020108@xeno-genesis.com> <531FC808.7060709@gmail.com> <9A6499BC-E546-45CC-A7EF-5182FC86052D@gmail.com> In-Reply-To: <9A6499BC-E546-45CC-A7EF-5182FC86052D@gmail.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms030003040501000006060801" X-Spam-Score: -0.5 (/) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for sender-domain 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (mh.in.england[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record 1.0 HTML_MESSAGE BODY: HTML included in message 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Headers-End: 1WNflo-00086B-Nf Subject: Re: [Bitcoin-development] Multisign payment protocol? X-BeenThere: bitcoin-development@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list Reply-To: mike@plan99.net List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Mar 2014 09:48:18 -0000 This is a cryptographically signed message in MIME format. --------------ms030003040501000006060801 Content-Type: multipart/alternative; boundary="------------080504090501060201080102" This is a multi-part message in MIME format. --------------080504090501060201080102 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Good to see so much activity! But please do remember, there's more to=20 "multisig" than just keys - you need the whole user experience to be=20 planned out and specced for fully interoperable implementations. For the "group account for an organisation" feature, you don't really=20 want to expose end users to the notion of a key. Historically this has=20 just led to confusion (and an ugly visual explosion of padlocks and=20 small metal objects :) It'd be much better for the UI to be designed in=20 terms of people, perhaps with a bit of social network integration to=20 avoid having to set up profiles, and then a "group spend" feature would=20 behind the scenes rendezvous with the others and swap signatures around, = etc. So for interop, you'd need to define all the rendezvous protocols=20 as well. > CoinVault is also using a partially signed transaction format whereby=20 > 0-length placeholders are used for missing signatures in the=20 > transaction scripts. I don't know how you are implementing this/what framework you're using,=20 but I suggest using placeholders that are the length of an actual=20 expected signature, at least when forming the transaction. This is what=20 bitcoinj will do because otherwise you could end up miscalculating the=20 fee, which is based on the final size. See TransactionSignature.dummy()=20 =20 in the API. --------------080504090501060201080102 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Good to see so much activity! But please do remember, there's more to "multisig" than just keys - you need the whole user experience to be planned out and specced for fully interoperable implementations.

For the "group account for an organisation" feature, you don't really want to expose end users to the notion of a key. Historically this has just led to confusion (and an ugly visual explosion of padlocks and small metal objects :) It'd be much better for the UI to be designed in terms of people, perhaps with a bit of social network integration to avoid having to set up profiles, and then a "group spend" feature would behind the scenes rendezvous with the others and swap signatures around, etc.  So for interop, you'd n= eed to define all the rendezvous protocols as well.
CoinVault is also using a partially signed transaction format whereby 0-length placeholders are used for missing signatures in the transaction scripts.
I don't know how you are implementing this/what framework you're using, but I suggest using placeholders that are the length of an actual expected signature, at least when forming the transaction. This is what bitcoinj will do because otherwise you could end up miscalculating the fee, which is based on the final size. See TransactionSignature.dummy() in the API.
--------------080504090501060201080102-- --------------ms030003040501000006060801 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIITYzCC BjYwggUeoAMCAQICAwZyHzANBgkqhkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNV BAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRl IFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlh dGUgQ2xpZW50IENBMB4XDTEzMDQyMTAxMTQ1NFoXDTE0MDQyMjEzMjIzM1owVTEZMBcGA1UE DRMQa2lMZ1R2Y1FkWWNCMkpXUDEYMBYGA1UEAwwPbWlrZUBwbGFuOTkubmV0MR4wHAYJKoZI hvcNAQkBFg9taWtlQHBsYW45OS5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQDS3hjsiRaqv4xER7PvF/wsHGfjUbPNFHWGTk25UGhOfphCyzQpy/ueRFsn63vM1FR13EXZ 2hhEwguUuXnZAcYw8W3zw+qPEeMyKGch6cYxXfo/fKwhLB1JL48oMNgCxqeb1d6QWi5mGt9t yeBPlQlesH6ULAWkIGXvcixOOIUXyddjm6cFSCa2qE6OnoV/vip/7SjIXuFkLj5uIAxxhUB8 4rCH/f9Nw5/ZESHqocY3yF0+qLIkD4XS4u+iI84tlGmx64xqYr4VkKGPoXS07j7AisN2fzKd iu5xozz7hyMkbIWz8rPRKXMf4fNVyRkwBam7MBycH7urXVdBqRTh8M6tAgMBAAGjggLVMIIC 0TAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH AwQwHQYDVR0OBBYEFMhHCWNyFstsl8xCvoc4e7TtfabFMB8GA1UdIwQYMBaAFFNy7ZKc4NrL AVx8fpY1TvLUuFGCMBoGA1UdEQQTMBGBD21pa2VAcGxhbjk5Lm5ldDCCAUwGA1UdIASCAUMw ggE/MIIBOwYLKwYBBAGBtTcBAgMwggEqMC4GCCsGAQUFBwIBFiJodHRwOi8vd3d3LnN0YXJ0 c3NsLmNvbS9wb2xpY3kucGRmMIH3BggrBgEFBQcCAjCB6jAnFiBTdGFydENvbSBDZXJ0aWZp Y2F0aW9uIEF1dGhvcml0eTADAgEBGoG+VGhpcyBjZXJ0aWZpY2F0ZSB3YXMgaXNzdWVkIGFj Y29yZGluZyB0byB0aGUgQ2xhc3MgMSBWYWxpZGF0aW9uIHJlcXVpcmVtZW50cyBvZiB0aGUg U3RhcnRDb20gQ0EgcG9saWN5LCByZWxpYW5jZSBvbmx5IGZvciB0aGUgaW50ZW5kZWQgcHVy cG9zZSBpbiBjb21wbGlhbmNlIG9mIHRoZSByZWx5aW5nIHBhcnR5IG9ibGlnYXRpb25zLjA2 BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0c3NsLmNvbS9jcnR1MS1jcmwuY3Js MIGOBggrBgEFBQcBAQSBgTB/MDkGCCsGAQUFBzABhi1odHRwOi8vb2NzcC5zdGFydHNzbC5j b20vc3ViL2NsYXNzMS9jbGllbnQvY2EwQgYIKwYBBQUHMAKGNmh0dHA6Ly9haWEuc3RhcnRz c2wuY29tL2NlcnRzL3N1Yi5jbGFzczEuY2xpZW50LmNhLmNydDAjBgNVHRIEHDAahhhodHRw Oi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJKoZIhvcNAQEFBQADggEBAHfbDXMYzU6gEMskQQrG mSgEClZU+8zeMKsPA035z+MF4esnIGssYORmuqsvOWorYr3zHMibjO6IwFlwYwQJSiBWC/nZ TwclhRVcWgLGA/64YSz9bfpxhywNOmC7c/qSaInDg7zqMsZT06euqnrv0zE/Fk2juUKXa9E5 9zCzzMCTewXsC54PM6caDlf7v8a5qZDFdj8JaU6J2y/VTVFmCNFbARv9DA4ixEMOq4OuvIDE StOmzPBqL8y1O4ts9kNLc9ZCnmChwJbgtTfOKqzt1fbZKaDQxTx5Rn3ZnZCQ2Xlu4BfffpAk Faq+aSGnW6dE5o+yrbcKLtY7kmv4mg4KDMgwggZvMIIEV6ADAgECAhAA1cuJwpMAm+29AUvc EJYCMA0GCSqGSIb3DQEBBQUAMEkxCzAJBgNVBAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24g QUcxIzAhBgNVBAMTGlN3aXNzU2lnbiBQbGF0aW51bSBDQSAtIEcyMB4XDTEwMDMwODE0MDUw NFoXDTI1MDMwNDE0MDUwNFowVzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBB RzExMC8GA1UEAxMoU3dpc3NTaWduIFN1aXNzZUlEIFBsYXRpbnVtIENBIDIwMTAgLSBHMjCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOHEhBFyMjQx3FmI90K1Tv+TgX6yFGiu GrvhRHEhXuDL0Pf8Fd6fQxkk3/L5Y3IBzTyGKOIh2IfMSVZ+xyuzxuskviZ6ELJeXPAyO1BO WVv5I3x4+OVvqw5soZ7UKhuxYz2UKD1nZQtpRpFdjRLXp1PlNI139jaUMNy4j7Rdwo5Yl6/A XbrCZL1JtCLX2iWmxePsoBWvagJvWCxmGjDXJNewqCrAlbQ3WhSowZtwqJWXgeRgBGU8HQcB ZxzafX175/kLjcIROcDGU+OqVVzWyZQq5xHW5ZolhIXovYwed/NYUrCmov8y2pXVUP2krtdF mIOSipFH0llVUnE/o+j7TNkCAwEAAaOCAkMwggI/MA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBTpRIaAkupOUHfJ55IIQtdfwMIlQjAfBgNVHSMEGDAW gBRQr8wHhxVHbzjFtGXR3pWq6d+czDCB/wYDVR0fBIH3MIH0MEegRaBDhkFodHRwOi8vY3Js LnN3aXNzc2lnbi5uZXQvNTBBRkNDMDc4NzE1NDc2RjM4QzVCNDY1RDFERTk1QUFFOURGOUND QzCBqKCBpaCBooaBn2xkYXA6Ly9kaXJlY3Rvcnkuc3dpc3NzaWduLm5ldC9DTj01MEFGQ0Mw Nzg3MTU0NzZGMzhDNUI0NjVEMURFOTVBQUU5REY5Q0NDJTJDTz1Td2lzc1NpZ24lMkNDPUNI P2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmli dXRpb25Qb2ludDBhBgNVHSAEWjBYMFYGBFUdIAAwTjBMBggrBgEFBQcCARZAaHR0cDovL3Jl cG9zaXRvcnkuc3dpc3NzaWduLmNvbS9Td2lzc1NpZ24tUGxhdGludW0tQ1AtQ1BTLVIzLnBk ZjB0BggrBgEFBQcBAQRoMGYwZAYIKwYBBQUHMAKGWGh0dHA6Ly9zd2lzc3NpZ24ubmV0L2Nn aS1iaW4vYXV0aG9yaXR5L2Rvd25sb2FkLzUwQUZDQzA3ODcxNTQ3NkYzOEM1QjQ2NUQxREU5 NUFBRTlERjlDQ0MwDQYJKoZIhvcNAQEFBQADggIBADqGPh/QJ5/UqalbBwXt+K97bdnKFZ+d /OhdFIh9SIWljTFWaKtP7Co17lqfpGa5DQKlsIb5OKoIZZcbZ4COw0huPtf/Uhp6XvA0754E R3rAM1ZGx3wqDapShgZ4wqeovnHZszm96KY9DAneZEJD5LMN2E5AVyQ4jWlON2EUV29bhAIE G4sypAYMWRqYw2uBUrOa8vmKtq13mlJT1pgkfcGUuZGdWp8n8MkUphUCv2zzIpAsPckntvA7 c/ZzDcGZhzRr4RmFBfhdEBzG/rHWxsekw+OuX6nWHuTO/2KRJUb0uoyjj0nKlGaKtMcawWpH OFz0IDTgqwkbtDyoETlnlBr982cPLmOV8uQyaHuxe2p8RCYE8PQONUtFg4e+SMI6/ZfdUvSM 3ohkd4Okuoa3pPfD1o3R5gHyKPRRxgkl2yRX2vefIfNkCp8nVMu/Xp18EXD275cNRaE5AVoH NLnHiMd41TJVOzchPtDwojCFjP2AW59AdCpk2G9oXXXvGAxqdjPqm1tsEL9YIwvb7ZtBJ7NW 3pjdxoHlkMUFzAGFwyVm/nRctbDiML4c6d9XotOseAtxLokFyDc5EHYDi/+2+Xua9tzOMVnS Er/SBB8D3OCLlydjQawfM5PUZmUXEDo3h3cAzO5/otxZT4y9v0rVdvKiLj4sM2I0Ic0DgUDP u8XeMIIGsjCCBZqgAwIBAgIPANx8/BLY69N8jqJlrxIhMA0GCSqGSIb3DQEBBQUAMFcxCzAJ BgNVBAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxMTAvBgNVBAMTKFN3aXNzU2lnbiBT dWlzc2VJRCBQbGF0aW51bSBDQSAyMDEwIC0gRzIwHhcNMTMxMTIxMTQyOTQ4WhcNMTQxMTIx MTQyOTQ4WjBnMScwJQYDVQQDEx5NaWNoYWVsIEhlYXJuIChBdXRoZW50aWNhdGlvbikxHjAc BgkqhkiG9w0BCQEWD21pa2VAcGxhbjk5Lm5ldDEcMBoGA1UEBRMTMTMwMC04MDE1LTE1ODYt OTExODCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIYAJCuTx/50SHEHAWWpkeD+ 45EveoPrnf06ot9mxJYEs7rlumlszhNJ/10eR1n+NJg8dXUY9FjN3bf+wpdSqJqEoXyLDcR8 XBuNtL6XqEDUHfK/E6JKIwl+mOZfk5QL0j3RoSMhDlxt6bq8juFwWTWB1ZGfX8IQu22rtbG5 +5nFNqm2v08JEQxiBUogppes/KwTIif3EiCNkHDYEvs4r/NlIc+IuBlTTzpnoG6B5BPKk/oK LhHlVjC4r1w2wMEBdXwWhO+c/1q/sNCumCbUu6AG4MCBCaXvP9fzkvByPOOvtNnjMU4Q/r6s J8XEKPhKYnL6KpjrI5yxK0BtXEwOeekCAwEAAaOCA2kwggNlME8GA1UdEQRIMEaBD21pa2VA cGxhbjk5Lm5ldKAzBgorBgEEAYI3FAIDoCUMIzEzMDAtODAxNS0xNTg2LTkxMThAdXBuLnN1 aXNzZWlkLmNoMA4GA1UdDwEB/wQEAwIHgDApBgNVHSUEIjAgBggrBgEFBQcDAgYIKwYBBQUH AwQGCisGAQQBgjcUAgIwHQYDVR0OBBYEFKfCRgaifaqSozZbYdew4UPqSABvMB8GA1UdIwQY MBaAFOlEhoCS6k5Qd8nnkghC11/AwiVCMIH/BgNVHR8EgfcwgfQwR6BFoEOGQWh0dHA6Ly9j cmwuc3dpc3NzaWduLm5ldC9FOTQ0ODY4MDkyRUE0RTUwNzdDOUU3OTIwODQyRDc1RkMwQzIy NTQyMIGooIGloIGihoGfbGRhcDovL2RpcmVjdG9yeS5zd2lzc3NpZ24ubmV0L0NOPUU5NDQ4 NjgwOTJFQTRFNTA3N0M5RTc5MjA4NDJENzVGQzBDMjI1NDIlMkNPPVN3aXNzU2lnbiUyQ0M9 Q0g/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3Ry aWJ1dGlvblBvaW50MIG2BgNVHSAEga4wgaswgZsGCGCFdAUaAQECMIGOMEwGCCsGAQUFBwIB FkBodHRwOi8vcmVwb3NpdG9yeS5zd2lzc3NpZ24uY29tL1N3aXNzU2lnbi1QbGF0aW51bS1D UC1DUFMtUjMucGRmMD4GCCsGAQUFBwICMDIaMFN1aXNzZUlEIGlkZW50aXR5IGFuZCBhdXRo ZW50aWNhdGlvbiBjZXJ0aWZpY2F0ZTALBglghXQBWQEBAQEwgdsGCCsGAQUFBwEBBIHOMIHL MGQGCCsGAQUFBzAChlhodHRwOi8vc3dpc3NzaWduLm5ldC9jZ2ktYmluL2F1dGhvcml0eS9k b3dubG9hZC9FOTQ0ODY4MDkyRUE0RTUwNzdDOUU3OTIwODQyRDc1RkMwQzIyNTQyMGMGCCsG AQUFBzABhldodHRwOi8vcGxhdGludW0tc3Vpc3NlaWQtZzIub2NzcC5zd2lzc3NpZ24ubmV0 L0U5NDQ4NjgwOTJFQTRFNTA3N0M5RTc5MjA4NDJENzVGQzBDMjI1NDIwDQYJKoZIhvcNAQEF BQADggEBAEBDcfYbGoZxqN7v/JLMudzsWZGkiEnunuF09Yv6NKmegynfZ6Gdi723JcsjaN0P VuE1NaT+Ncn+CXC9ubMdc+1P3vWXu702TfxmfoL9tIGgqpv3EFhdfT480z6mF7yYxiunrokM wAjfyBI8Xrs2oppdNo6RZx9Vazb4H4m/1kAi/ctXSumi8fZ6D9wlwp3dGVoWCHYdXuDWV3rU RSiCNc/4gJXrx5hHSwL9F4ChQOkZwXcQhXcOhO3M9k1Et5ufSJKxN8/97MBlfpYO0OtGTTAH rJINfs4TaWmPRcgXUQ15NiuNyLYBOTK/PiwnRsKCKH17mzBNdhJ+g7jp0N/JqhsxggOyMIID rgIBATBqMFcxCzAJBgNVBAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxMTAvBgNVBAMT KFN3aXNzU2lnbiBTdWlzc2VJRCBQbGF0aW51bSBDQSAyMDEwIC0gRzICDwDcfPwS2OvTfI6i Za8SITAJBgUrDgMCGgUAoIICHTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3 DQEJBTEPFw0xNDAzMTIwOTQ4MDVaMCMGCSqGSIb3DQEJBDEWBBRptSLCap5dy0nsKgRG7fNU 85zuRTBsBgkqhkiG9w0BCQ8xXzBdMAsGCWCGSAFlAwQBKjALBglghkgBZQMEAQIwCgYIKoZI hvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3 DQMCAgEoMIGlBgkrBgEEAYI3EAQxgZcwgZQwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1T dGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWdu aW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENs aWVudCBDQQIDBnIfMIGnBgsqhkiG9w0BCRACCzGBl6CBlDCBjDELMAkGA1UEBhMCSUwxFjAU BgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmlj YXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1l ZGlhdGUgQ2xpZW50IENBAgMGch8wDQYJKoZIhvcNAQEBBQAEggEAakvjJJkRTn9CH3iW51fu wDFxjoAqGkK17o1n6hANlMMWYYMg4p2u6R/TurevIHYjksEqbzDx8Gnn0ibTLaFqlBw4QdAL SFqFAeTdsCpKtqEXDgbBQ70f5A+kz4VV5C0kJuJ29E9a3A8/r44h7nHx8xkz6naam20zrjwj w0VZp1CVNHXYUrHBdjlUuNads38TZwkGcInSCXWhjzWSuenm8DXGf9ytE1I3MQEK+UgBq8De Zbjtl7Qj339w2vr9zuBoWY1yNHIMMQOrQi8xESsmzK11QcE5YJM5rrlRI8Q9dBYbwidfh7MJ ELVEEGygVY/IRrEpq1iLvllVVMPNH7g2CgAAAAAAAA== --------------ms030003040501000006060801--