From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2886760418784839935==" MIME-Version: 1.0 From: Petr Gotthard Subject: [tpm2] Re: CMP error: cannot duplicate context:2306 tpm:warn(2.0): out of memory for object contexts Date: Wed, 06 Oct 2021 11:49:44 +0200 Message-ID: <20211006114944.AA674241@centrum.cz> In-Reply-To: a7406955-776c-3328-1712-be10faeab867@mode51.software List-ID: To: tpm2@lists.01.org --===============2886760418784839935== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Chris, =C2=A0 that's great to hear. Thanks for all the testing! =C2=A0 In general I am interested in feedback (both bugs and improvement suggestio= ns) from testing of real-life scenarios, so if you did test all you need an= d everything worked as you want it to work then I am happy and don't need a= nything else. =C2=A0 =C2=A0 Thanks again, Petr =C2=A0 ______________________________________________________________ > Od: "Chris Newman" > Komu: "Petr Gotthard" , tpm2(a)lists.01.org > Datum: 06.10.2021 01:08 > P=C5=99edm=C4=9Bt: [tpm2] Re: CMP error: cannot duplicate context:2306 tp= m:warn(2.0): out of memory for object contexts > Hi Petr, I've tried abrmd and it works fine for the ir: openssl cmp -config /opt/sdk/openssl/current/ssl/openssl.cnf -provider tpm2= -provider default -propquery ?provider=3Dtpm2 -cmd ir -server https://demo= .one.digicert.com/iot/api/v1/cmp/IOT_1234 -ref 1234 -secret pass:1234 -recipient "/CN=3Dmode51= .software" -key handle:0x81010002 -subject "/CN=3DTestTest" -cacertsout ./c= apubs.pem -certout ./cl_cert.pem -tls_used -verbosity 8 Also works with the cr: /opt/sdk/openssl/current/bin/openssl cmp -config /opt/sdk/openssl/current/s= sl/openssl.cnf -provider tpm2 -provider default -propquery ?provider=3Dtpm2= -cmd cr -server https://demo.one.digicert.com/iot/api/v1/cmp/IOT_1234 -ref 1234 -key handle:0= x81010002 -certout ./cl_cert2.pem -cert ./cl_cert.pem -tls_used -verbosity = 8 -trusted ./capubs.pem -unprotected_errors Is there anything you want me to test with the DigiCert CMPv2 responder? Many thanks for the really great software. =C2=A0 On 04/10/2021 09:18, Chris Newman wrote:Thanks Petr, I'm using in-kernel. I'll try abrmd and report back. On 04/10/2021 08:31, Petr Gotthard wrote:Hello, =C2=A0 this sounds like a known limitation of the openssl provider: https://github= .com/tpm2-software/tpm2-openssl/issues/4 =C2=A0 Some applications (like CMP) are too greedy and consume more resources than= the TPM has. The resource managers (to my best knowledge) cannot swap reso= urces from the same user. =C2=A0 Are you using the tpm2-abrmd resource manager, or the in-kernel manager? Th= e tpm2-abrmd behaves much better. =C2=A0 =C2=A0 Petr =C2=A0 ______________________________________________________________ > Od: "Chris Newman" > Komu: tpm2(a)lists.01.org > Datum: 04.10.2021 01:41 > P=C5=99edm=C4=9Bt: [tpm2] CMP error: cannot duplicate context:2306 tpm:w= arn(2.0): out of memory for object contexts > Hi, I create an EK and AK using tpm2_createek, tpm2_createak and tpm2_evictcont= rol to persist the AK in 0x81010002. The I use the following command with D= igiCert's CMPv2 server: openssl cmp -config /opt/sdk/openssl/current/ssl/openssl.cnf -provider tpm2= -provider default -propquery ?provider=3Dtpm2,tpm2.digest!=3Dyes -cmd ir -= server https://demo.one.digicert.com/iot/api/v1/cmp/IOT_1234 -ref 1234 -secret pass:1234 -reci= pient "/CN=3Dmode51.software" -key handle:0x81010002 -subject "/CN=3DTestTe= st" -cacertsout ./capubs.pem -certout ./cl_cert.pem -tls_used -verbosity 8 I get the following error: DIGEST NEW DIGEST INIT DIGEST UPDATE DIGEST DUP DIGEST FINAL DIGEST FREE DIGEST NEW DIGEST INIT DIGEST UPDATE DIGEST NEW DIGEST INIT DIGEST UPDATE DIGEST DUP WARNING:esys:src/tss2-esys/api/Esys_ContextLoad.c:279:Esys_ContextLoad_Fin= ish() Received TPM Error ERROR:esys:src/tss2-esys/api/Esys_ContextLoad.c:93:Esys_ContextLoad() Esys= Finish ErrorCode (0x00000902) DIGEST FREE DIGEST FREE DIGEST FREE CMP DEBUG: disconnected from CMP server CMP error: cannot duplicate context:2306 tpm:warn(2.0): out of memory for = object contexts CMP error: not able to copy ctx CMP error: internal error CMP error: error sending CMP error: shutdown while in init CMP error: transfer error:request sent: IR, expected response: IP RSA FREE RAND FREE RAND FREE RAND FREE PROVIDER TEARDOWN =C2=A0 I've tried tpm2_flushcontext -t. I recompiled tpm2-openssl with the following option and that appears to hav= e worked around the issue: --disable-op-digest Is this what "?provider=3Dtpm2,tpm2.digest!=3Dyes" should effectively do? =C2=A0 -- = = Chris Newman = https://mode51.software = @mode51software =20 --===============2886760418784839935== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" PHAgc3R5bGU9InBhZGRpbmc6MCAwIDAgMDsgbWFyZ2luOjAgMCAwIDA7Ij5IaSBDaHJpcyw8L3A+ Cgo8cCBzdHlsZT0icGFkZGluZzowIDAgMCAwOyBtYXJnaW46MCAwIDAgMDsiPiZuYnNwOzwvcD4K CjxwIHN0eWxlPSJwYWRkaW5nOjAgMCAwIDA7IG1hcmdpbjowIDAgMCAwOyI+dGhhdCdzIGdyZWF0 IHRvIGhlYXIuIFRoYW5rcyBmb3IgYWxsIHRoZSB0ZXN0aW5nITwvcD4KCjxwIHN0eWxlPSJwYWRk aW5nOjAgMCAwIDA7IG1hcmdpbjowIDAgMCAwOyI+Jm5ic3A7PC9wPgoKPHAgc3R5bGU9InBhZGRp bmc6MCAwIDAgMDsgbWFyZ2luOjAgMCAwIDA7Ij5JbiBnZW5lcmFsIEkgYW0gaW50ZXJlc3RlZCBp biBmZWVkYmFjayAoYm90aCBidWdzIGFuZCBpbXByb3ZlbWVudCBzdWdnZXN0aW9ucykgZnJvbSB0 ZXN0aW5nIG9mIHJlYWwtbGlmZSBzY2VuYXJpb3MsIHNvIGlmIHlvdSBkaWQgdGVzdCBhbGwgeW91 IG5lZWQgYW5kIGV2ZXJ5dGhpbmcgd29ya2VkIGFzIHlvdSB3YW50IGl0IHRvIHdvcmsgdGhlbiBJ IGFtIGhhcHB5IGFuZCBkb24ndCBuZWVkIGFueXRoaW5nIGVsc2UuPC9wPgoKPHAgc3R5bGU9InBh ZGRpbmc6MCAwIDAgMDsgbWFyZ2luOjAgMCAwIDA7Ij4mbmJzcDs8L3A+Cgo8cCBzdHlsZT0icGFk ZGluZzowIDAgMCAwOyBtYXJnaW46MCAwIDAgMDsiPiZuYnNwOzwvcD4KCjxwIHN0eWxlPSJwYWRk aW5nOjAgMCAwIDA7IG1hcmdpbjowIDAgMCAwOyI+VGhhbmtzIGFnYWluLDwvcD4KCjxwIHN0eWxl PSJwYWRkaW5nOjAgMCAwIDA7IG1hcmdpbjowIDAgMCAwOyI+UGV0cjwvcD4KCjxwIHN0eWxlPSJw YWRkaW5nOjAgMCAwIDA7IG1hcmdpbjowIDAgMCAwOyI+Jm5ic3A7PC9wPgoKPHAgc3R5bGU9InBh ZGRpbmc6MCAwIDAgMDsgbWFyZ2luOjAgMCAwIDA7Ij5fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxiciAvPgomZ3Q7IE9kOiAiQ2hy aXMgTmV3bWFuIiAmbHQ7Y2hyaXNAbW9kZTUxLnNvZnR3YXJlJmd0OzxiciAvPgomZ3Q7IEtvbXU6 ICJQZXRyIEdvdHRoYXJkIiAmbHQ7cGV0ci5nb3R0aGFyZEBjZW50cnVtLmN6Jmd0OywgdHBtMkBs aXN0cy4wMS5vcmc8YnIgLz4KJmd0OyBEYXR1bTogMDYuMTAuMjAyMSAwMTowODxiciAvPgomZ3Q7 IFDFmWVkbcSbdDogW3RwbTJdIFJlOiBDTVAgZXJyb3I6IGNhbm5vdCBkdXBsaWNhdGUgY29udGV4 dDoyMzA2IHRwbTp3YXJuKDIuMCk6IG91dCBvZiBtZW1vcnkgZm9yIG9iamVjdCBjb250ZXh0czxi ciAvPgomZ3Q7PC9wPgoKPHAgc3R5bGU9InBhZGRpbmc6MCAwIDAgMDsgbWFyZ2luOjAgMCAwIDA7 Ij5IaSBQZXRyLDwvcD4KCjxwIHN0eWxlPSJwYWRkaW5nOjAgMCAwIDA7IG1hcmdpbjowIDAgMCAw OyI+SSd2ZSB0cmllZCBhYnJtZCBhbmQgaXQgd29ya3MgZmluZSBmb3IgdGhlIGlyOjwvcD4KCjxw IHN0eWxlPSJwYWRkaW5nOjAgMCAwIDA7IG1hcmdpbjowIDAgMCAwOyI+b3BlbnNzbCBjbXAgLWNv bmZpZyAvb3B0L3Nkay9vcGVuc3NsL2N1cnJlbnQvc3NsL29wZW5zc2wuY25mIC1wcm92aWRlciB0 cG0yIC1wcm92aWRlciBkZWZhdWx0IC1wcm9wcXVlcnkgP3Byb3ZpZGVyPXRwbTIgLWNtZCBpciAt c2VydmVyIDxhIGhyZWY9Imh0dHBzOi8vZGVtby5vbmUuZGlnaWNlcnQuY29tL2lvdC9hcGkvdjEv Y21wL0lPVF8xMjM0Ij5odHRwczovL2RlbW8ub25lLmRpZ2ljZXJ0LmNvbS9pb3QvYXBpL3YxL2Nt cC9JT1RfMTIzNDwvYT4gLXJlZiAxMjM0IC1zZWNyZXQgcGFzczoxMjM0IC1yZWNpcGllbnQgIi9D Tj1tb2RlNTEuc29mdHdhcmUiIC1rZXkgaGFuZGxlOjB4ODEwMTAwMDIgLXN1YmplY3QgIi9DTj1U ZXN0VGVzdCIgLWNhY2VydHNvdXQgLi9jYXB1YnMucGVtIC1jZXJ0b3V0IC4vY2xfY2VydC5wZW0g LXRsc191c2VkIC12ZXJib3NpdHkgODwvcD4KCjxwIHN0eWxlPSJwYWRkaW5nOjAgMCAwIDA7IG1h cmdpbjowIDAgMCAwOyI+QWxzbyB3b3JrcyB3aXRoIHRoZSBjcjo8L3A+Cgo8cCBzdHlsZT0icGFk ZGluZzowIDAgMCAwOyBtYXJnaW46MCAwIDAgMDsiPi9vcHQvc2RrL29wZW5zc2wvY3VycmVudC9i aW4vb3BlbnNzbCBjbXAgLWNvbmZpZyAvb3B0L3Nkay9vcGVuc3NsL2N1cnJlbnQvc3NsL29wZW5z c2wuY25mIC1wcm92aWRlciB0cG0yIC1wcm92aWRlciBkZWZhdWx0IC1wcm9wcXVlcnkgP3Byb3Zp ZGVyPXRwbTIgLWNtZCBjciAtc2VydmVyIDxhIGhyZWY9Imh0dHBzOi8vZGVtby5vbmUuZGlnaWNl cnQuY29tL2lvdC9hcGkvdjEvY21wL0lPVF8xMjM0Ij5odHRwczovL2RlbW8ub25lLmRpZ2ljZXJ0 LmNvbS9pb3QvYXBpL3YxL2NtcC9JT1RfMTIzNDwvYT4gLXJlZiAxMjM0IC1rZXkgaGFuZGxlOjB4 ODEwMTAwMDIgLWNlcnRvdXQgLi9jbF9jZXJ0Mi5wZW0gLWNlcnQgLi9jbF9jZXJ0LnBlbSAtdGxz X3VzZWQgLXZlcmJvc2l0eSA4IC10cnVzdGVkIC4vY2FwdWJzLnBlbSAtdW5wcm90ZWN0ZWRfZXJy b3JzPC9wPgoKPHAgc3R5bGU9InBhZGRpbmc6MCAwIDAgMDsgbWFyZ2luOjAgMCAwIDA7Ij5JcyB0 aGVyZSBhbnl0aGluZyB5b3Ugd2FudCBtZSB0byB0ZXN0IHdpdGggdGhlIERpZ2lDZXJ0IENNUHYy IHJlc3BvbmRlcj88L3A+Cgo8cCBzdHlsZT0icGFkZGluZzowIDAgMCAwOyBtYXJnaW46MCAwIDAg MDsiPk1hbnkgdGhhbmtzIGZvciB0aGUgcmVhbGx5IGdyZWF0IHNvZnR3YXJlLjwvcD4KCjxwIHN0 eWxlPSJwYWRkaW5nOjAgMCAwIDA7IG1hcmdpbjowIDAgMCAwOyI+Jm5ic3A7PC9wPgoKPGRpdiBj bGFzcz0ibW96LWNpdGUtcHJlZml4Ij5PbiAwNC8xMC8yMDIxIDA5OjE4LCBDaHJpcyBOZXdtYW4g d3JvdGU6PC9kaXY+CjxibG9ja3F1b3RlIGNpdGU9Im1pZDphOGY3ZDI2MS1jMzAxLTE0NjctZjJi Yi04NWUyMjJkZGYzNzRAbW9kZTUxLnNvZnR3YXJlIj4KPHAgc3R5bGU9InBhZGRpbmc6MCAwIDAg MDsgbWFyZ2luOjAgMCAwIDA7Ij5UaGFua3MgUGV0ciw8L3A+Cgo8cCBzdHlsZT0icGFkZGluZzow IDAgMCAwOyBtYXJnaW46MCAwIDAgMDsiPkknbSB1c2luZyBpbi1rZXJuZWwuIEknbGwgdHJ5IGFi cm1kIGFuZCByZXBvcnQgYmFjay48L3A+Cgo8YnIgLz4KCjxkaXYgY2xhc3M9Im1vei1jaXRlLXBy ZWZpeCI+T24gMDQvMTAvMjAyMSAwODozMSwgUGV0ciBHb3R0aGFyZCB3cm90ZTo8L2Rpdj4KPGJs b2NrcXVvdGUgY2l0ZT0ibWlkOjIwMjExMDA0MDkzMTA5LjEwRjNFRkZCQGNlbnRydW0uY3oiPgo8 cCBzdHlsZT0icGFkZGluZzogMCAwIDAgMDsgbWFyZ2luOiAwIDAgMCAwOyI+SGVsbG8sPC9wPgoK PHAgc3R5bGU9InBhZGRpbmc6IDAgMCAwIDA7IG1hcmdpbjogMCAwIDAgMDsiPiZuYnNwOzwvcD4K CjxwIHN0eWxlPSJwYWRkaW5nOiAwIDAgMCAwOyBtYXJnaW46IDAgMCAwIDA7Ij50aGlzIHNvdW5k cyBsaWtlIGEga25vd24gbGltaXRhdGlvbiBvZiB0aGUgb3BlbnNzbCBwcm92aWRlcjogPGEgaHJl Zj0iaHR0cHM6Ly9naXRodWIuY29tL3RwbTItc29mdHdhcmUvdHBtMi1vcGVuc3NsL2lzc3Vlcy80 Ij5odHRwczovL2dpdGh1Yi5jb20vdHBtMi1zb2Z0d2FyZS90cG0yLW9wZW5zc2wvaXNzdWVzLzQ8 L2E+PC9wPgoKPHAgc3R5bGU9InBhZGRpbmc6IDAgMCAwIDA7IG1hcmdpbjogMCAwIDAgMDsiPiZu YnNwOzwvcD4KCjxwIHN0eWxlPSJwYWRkaW5nOiAwIDAgMCAwOyBtYXJnaW46IDAgMCAwIDA7Ij5T b21lIGFwcGxpY2F0aW9ucyAobGlrZSBDTVApIGFyZSB0b28gZ3JlZWR5IGFuZCBjb25zdW1lIG1v cmUgcmVzb3VyY2VzIHRoYW4gdGhlIFRQTSBoYXMuIFRoZSByZXNvdXJjZSBtYW5hZ2VycyAodG8g bXkgYmVzdCBrbm93bGVkZ2UpIGNhbm5vdCBzd2FwIHJlc291cmNlcyBmcm9tIHRoZSBzYW1lIHVz ZXIuPC9wPgoKPHAgc3R5bGU9InBhZGRpbmc6IDAgMCAwIDA7IG1hcmdpbjogMCAwIDAgMDsiPiZu YnNwOzwvcD4KCjxwIHN0eWxlPSJwYWRkaW5nOiAwIDAgMCAwOyBtYXJnaW46IDAgMCAwIDA7Ij5B cmUgeW91IHVzaW5nIHRoZSB0cG0yLWFicm1kIHJlc291cmNlIG1hbmFnZXIsIG9yIHRoZSBpbi1r ZXJuZWwgbWFuYWdlcj8gVGhlIHRwbTItYWJybWQgYmVoYXZlcyBtdWNoIGJldHRlci48L3A+Cgo8 cCBzdHlsZT0icGFkZGluZzogMCAwIDAgMDsgbWFyZ2luOiAwIDAgMCAwOyI+Jm5ic3A7PC9wPgoK PHAgc3R5bGU9InBhZGRpbmc6IDAgMCAwIDA7IG1hcmdpbjogMCAwIDAgMDsiPiZuYnNwOzwvcD4K CjxwIHN0eWxlPSJwYWRkaW5nOiAwIDAgMCAwOyBtYXJnaW46IDAgMCAwIDA7Ij5QZXRyPC9wPgoK PHAgc3R5bGU9InBhZGRpbmc6IDAgMCAwIDA7IG1hcmdpbjogMCAwIDAgMDsiPiZuYnNwOzwvcD4K CjxwIHN0eWxlPSJwYWRkaW5nOiAwIDAgMCAwOyBtYXJnaW46IDAgMCAwIDA7Ij5fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxiciAv PgogJmd0OyBPZDogIkNocmlzIE5ld21hbiIgPGEgaHJlZj0ibWFpbHRvOmNocmlzQG1vZGU1MS5z b2Z0d2FyZSI+Jmx0O2NocmlzQG1vZGU1MS5zb2Z0d2FyZSZndDs8L2E+PGJyIC8+CiAmZ3Q7IEtv bXU6IDxhIGhyZWY9Im1haWx0bzp0cG0yQGxpc3RzLjAxLm9yZyI+dHBtMkBsaXN0cy4wMS5vcmc8 L2E+PGJyIC8+CiAmZ3Q7IERhdHVtOiAwNC4xMC4yMDIxIDAxOjQxPGJyIC8+CiAmZ3Q7IFDFmWVk bcSbdDogW3RwbTJdIENNUCBlcnJvcjogY2Fubm90IGR1cGxpY2F0ZSBjb250ZXh0OjIzMDYgdHBt Ondhcm4oMi4wKTogb3V0IG9mIG1lbW9yeSBmb3Igb2JqZWN0IGNvbnRleHRzPGJyIC8+CiAmZ3Q7 PC9wPgoKPHAgc3R5bGU9InBhZGRpbmc6IDAgMCAwIDA7IG1hcmdpbjogMCAwIDAgMDsiPkhpLDwv cD4KCjxwIHN0eWxlPSJwYWRkaW5nOiAwIDAgMCAwOyBtYXJnaW46IDAgMCAwIDA7Ij5JIGNyZWF0 ZSBhbiBFSyBhbmQgQUsgdXNpbmcgdHBtMl9jcmVhdGVlaywgdHBtMl9jcmVhdGVhayBhbmQgdHBt Ml9ldmljdGNvbnRyb2wgdG8gcGVyc2lzdCB0aGUgQUsgaW4gMHg4MTAxMDAwMi4gVGhlIEkgdXNl IHRoZSBmb2xsb3dpbmcgY29tbWFuZCB3aXRoIERpZ2lDZXJ0J3MgQ01QdjIgc2VydmVyOjwvcD4K CjxwIHN0eWxlPSJwYWRkaW5nOiAwIDAgMCAwOyBtYXJnaW46IDAgMCAwIDA7Ij5vcGVuc3NsIGNt cCAtY29uZmlnIC9vcHQvc2RrL29wZW5zc2wvY3VycmVudC9zc2wvb3BlbnNzbC5jbmYgLXByb3Zp ZGVyIHRwbTIgLXByb3ZpZGVyIGRlZmF1bHQgLXByb3BxdWVyeSA/cHJvdmlkZXI9dHBtMix0cG0y LmRpZ2VzdCE9eWVzIC1jbWQgaXIgLXNlcnZlciA8YSBocmVmPSJodHRwczovL2RlbW8ub25lLmRp Z2ljZXJ0LmNvbS9pb3QvYXBpL3YxL2NtcC9JT1RfMTIzNCI+aHR0cHM6Ly9kZW1vLm9uZS5kaWdp Y2VydC5jb20vaW90L2FwaS92MS9jbXAvSU9UXzEyMzQ8L2E+IC1yZWYgMTIzNCAtc2VjcmV0IHBh c3M6MTIzNCAtcmVjaXBpZW50ICIvQ049bW9kZTUxLnNvZnR3YXJlIiAta2V5IGhhbmRsZToweDgx MDEwMDAyIC1zdWJqZWN0ICIvQ049VGVzdFRlc3QiIC1jYWNlcnRzb3V0IC4vY2FwdWJzLnBlbSAt Y2VydG91dCAuL2NsX2NlcnQucGVtIC10bHNfdXNlZCAtdmVyYm9zaXR5IDg8L3A+Cgo8cCBzdHls ZT0icGFkZGluZzogMCAwIDAgMDsgbWFyZ2luOiAwIDAgMCAwOyI+SSBnZXQgdGhlIGZvbGxvd2lu ZyBlcnJvcjo8L3A+Cgo8cCBzdHlsZT0icGFkZGluZzogMCAwIDAgMDsgbWFyZ2luOiAwIDAgMCAw OyI+RElHRVNUIE5FVzxiciAvPgogRElHRVNUIElOSVQ8YnIgLz4KIERJR0VTVCBVUERBVEU8YnIg Lz4KIERJR0VTVCBEVVA8YnIgLz4KIERJR0VTVCBGSU5BTDxiciAvPgogRElHRVNUIEZSRUU8YnIg Lz4KIERJR0VTVCBORVc8YnIgLz4KIERJR0VTVCBJTklUPGJyIC8+CiBESUdFU1QgVVBEQVRFPGJy IC8+CiBESUdFU1QgTkVXPGJyIC8+CiBESUdFU1QgSU5JVDxiciAvPgogRElHRVNUIFVQREFURTxi ciAvPgogRElHRVNUIERVUDxiciAvPgogV0FSTklORzplc3lzOnNyYy90c3MyLWVzeXMvYXBpL0Vz eXNfQ29udGV4dExvYWQuYzoyNzk6RXN5c19Db250ZXh0TG9hZF9GaW5pc2goKSBSZWNlaXZlZCBU UE0gRXJyb3I8YnIgLz4KIEVSUk9SOmVzeXM6c3JjL3RzczItZXN5cy9hcGkvRXN5c19Db250ZXh0 TG9hZC5jOjkzOkVzeXNfQ29udGV4dExvYWQoKSBFc3lzIEZpbmlzaCBFcnJvckNvZGUgKDB4MDAw MDA5MDIpPGJyIC8+CiBESUdFU1QgRlJFRTxiciAvPgogRElHRVNUIEZSRUU8YnIgLz4KIERJR0VT VCBGUkVFPGJyIC8+CiBDTVAgREVCVUc6IGRpc2Nvbm5lY3RlZCBmcm9tIENNUCBzZXJ2ZXI8YnIg Lz4KIDxzdHJvbmc+Q01QIGVycm9yOiBjYW5ub3QgZHVwbGljYXRlIGNvbnRleHQ6MjMwNiB0cG06 d2FybigyLjApOiBvdXQgb2YgbWVtb3J5IGZvciBvYmplY3QgY29udGV4dHM8L3N0cm9uZz48YnIg Lz4KIENNUCBlcnJvcjogbm90IGFibGUgdG8gY29weSBjdHg8YnIgLz4KIENNUCBlcnJvcjogaW50 ZXJuYWwgZXJyb3I8YnIgLz4KIENNUCBlcnJvcjogZXJyb3Igc2VuZGluZzxiciAvPgogQ01QIGVy cm9yOiBzaHV0ZG93biB3aGlsZSBpbiBpbml0PGJyIC8+CiBDTVAgZXJyb3I6IHRyYW5zZmVyIGVy cm9yOnJlcXVlc3Qgc2VudDogSVIsIGV4cGVjdGVkIHJlc3BvbnNlOiBJUDxiciAvPgogUlNBIEZS RUU8YnIgLz4KIFJBTkQgRlJFRTxiciAvPgogUkFORCBGUkVFPGJyIC8+CiBSQU5EIEZSRUU8YnIg Lz4KIFBST1ZJREVSIFRFQVJET1dOPC9wPgoKPHAgc3R5bGU9InBhZGRpbmc6IDAgMCAwIDA7IG1h cmdpbjogMCAwIDAgMDsiPiZuYnNwOzwvcD4KCjxwIHN0eWxlPSJwYWRkaW5nOiAwIDAgMCAwOyBt YXJnaW46IDAgMCAwIDA7Ij5JJ3ZlIHRyaWVkIHRwbTJfZmx1c2hjb250ZXh0IC10LjwvcD4KCjxw IHN0eWxlPSJwYWRkaW5nOiAwIDAgMCAwOyBtYXJnaW46IDAgMCAwIDA7Ij5JIHJlY29tcGlsZWQg dHBtMi1vcGVuc3NsIHdpdGggdGhlIGZvbGxvd2luZyBvcHRpb24gYW5kIHRoYXQgYXBwZWFycyB0 byBoYXZlIHdvcmtlZCBhcm91bmQgdGhlIGlzc3VlOjwvcD4KCjxwIHN0eWxlPSJwYWRkaW5nOiAw IDAgMCAwOyBtYXJnaW46IDAgMCAwIDA7Ij4tLWRpc2FibGUtb3AtZGlnZXN0PC9wPgoKPHAgc3R5 bGU9InBhZGRpbmc6IDAgMCAwIDA7IG1hcmdpbjogMCAwIDAgMDsiPklzIHRoaXMgd2hhdCAiP3By b3ZpZGVyPXRwbTIsdHBtMi5kaWdlc3QhPXllcyIgc2hvdWxkIGVmZmVjdGl2ZWx5IGRvPzwvcD4K CjxwIHN0eWxlPSJwYWRkaW5nOiAwIDAgMCAwOyBtYXJnaW46IDAgMCAwIDA7Ij4mbmJzcDs8L3A+ Cgo8ZGl2IGNsYXNzPSJtb3otc2lnbmF0dXJlIj4tLSA8YnIgLz4KIDxiciAvPgogQ2hyaXMgTmV3 bWFuIDxiciAvPgogPGEgaHJlZj0iaHR0cHM6Ly9tb2RlNTEuc29mdHdhcmUiPmh0dHBzOi8vbW9k ZTUxLnNvZnR3YXJlPC9hPiA8YnIgLz4KIDxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vbW9k ZTUxc29mdHdhcmUiPkBtb2RlNTFzb2Z0d2FyZTwvYT4gPC9kaXY+CjwvYmxvY2txdW90ZT4KPC9i bG9ja3F1b3RlPgo= --===============2886760418784839935==--