[Pqc] Re: [EXT] Re: [IPsec] Re: [EXTERNAL] P QC integration in IPsec/IKEv2 - implementation experience and int erop
Songbo Bu <[email protected]> Thu, 25 Jun 2026 09:54:39 +0800
| Newsgroups | gmane.ietf.pqc,gmane.ietf.ipsec |
|---|---|
| Message-ID | <CAK08nYYGpUTCuDWyJHNj1uOSjOX6q4=qGnKPnzGrBgavZn00bw@mail.gmail.com> |
--000000000000129b5706550a472a Content-Type: multipart/alternative; boundary="000000000000129b5406550a4728" --000000000000129b5406550a4728 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Nick, Paul, Uri, all, I took a first pass at the starter matrix I mentioned and attached it as Markdown. It is deliberately lightweight: not an interop claim, and not a standards-status statement. The goal is just to give implementers a common row format for recording what was actually tested, against which peer, and with what evidence. I also split KEM-based authentication into its own bucket after Uri=E2=80=99s note, rather than folding it into RFC 9370 or PQ= C signature authentication. The seed rows are only placeholders based on the public discussion so far. They should be replaced or corrected by the actual implementers if the group wants to use this around IETF 126 / hackathon coordination. Best, Songbo On Tue, 23 Jun 2026 02:27:19 +0000, =E2=80=9CBlumenthal, Uri - 0553 - MITLL= =E2=80=9D [email protected] wrote: Please add this draft to the list of mechanisms: https://datatracker.ietf.org/doc/draft-wang-ipsecme-kem-auth-ikev2/ =E2=80=93 V/R, Uri Blumenthal There are two ways to design a system. One is to make it so simple there are obviously no deficiencies. The other is to make it so complex there are no obvious deficiencies. - C. A. R. Hoare I was a shepherd to fools Causelessly bold or afraid. They would not abide by my rules. Yet they escaped. For I stayed. R. Kipling =E2=80=9CEpitaphs of the War. Convoy Escort=E2=80=9D From: Songbo Bu [email protected] Date: Monday, June 22, 2026 at 21:23 To: [email protected] [email protected]; [email protected] [email protected] Cc: [email protected] [email protected]; [email protected] [email protected] Subject: [EXT] [Pqc] Re: [IPsec] Re: [EXTERNAL] PQC integration in IPsec/IKEv2 - implementation experience and interop This Message Is From an External Sender This message came from outside the Laboratory. Hi Nick, Paul, all, This thread is useful. I agree with Paul that IPsec/IKEv2 interop probably does not need a QUIC-style continuous public test harness to be useful. A lower-friction artifact may be enough for the first pass: a public interop checklist and results matrix that records exactly what was tested, against which peer, and what evidence was observed. For PQC-in-IKEv2 I would split the first matrix along a few axes: - implementation and version; - peer implementation and version; - deployment shape: site-to-site, remote access, or point-to-point; - mechanism: RFC 8784 PPK, RFC 9867 PPK with IKE_INTERMEDIATE, RFC 9370 multiple key exchange, PQC authentication, reliable IKEv2 transport, downgrade prevention; - algorithm set: ML-KEM and ML-DSA parameter sets actually exercised; - path conditions: fragmentation, retransmission, NAT traversal, rekey/CREATE_CHILD_SA, and failure diagnostics; - result evidence: packet trace summary, logs, negotiated transforms, and failure reason where applicable. That would let vendors and open-source implementations participate at different disclosure levels while still producing useful compatibility data= . If there is interest, I can help turn this into a starter checklist or markdown matrix for the IETF 126 hackathon discussion. Best, Songbo On Mon, 22 Jun 2026 19:26:21 -0400 (EDT), Paul Wouters [email protected] wrote= : On Mon, 22 Jun 2026, Nick Grifka wrote: Also, I see in the past there have been PQC-related interop events (ex: https://github.com/IETF-Hackathon/pqc-certificates). Is there any appetite for an interop event for PQC in IPsec/IKEv2 amongst the community? I realize the nature of many IPsec/IKEv2 products might not be suitable for a robust and efficient interop framework (ex: https://github.com/quic-interop), so maybe that makes such an event less practical. Traditionally these were held in the past (called =E2=80=9Cbake offs=E2=80= =9D but then IPR got into the way of that name). But since IKEv2/IPsec has strong opensource releases (libreswan and strongswan), interop testing usually happens against those implementations (and recently elvis-plus) and doesn= =E2=80=99t require much gathering. Although if you will be at IETF-126, there will be *swan people and elvis-plus people who will gladly do some interop testing with you - especially during the hackathon days (Sat+Sun) Paul --000000000000129b5406550a4728 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><p>Hi Nick, Paul, Uri, all,</p> <p>I took a first pass at the starter matrix I mentioned and attached it as= Markdown.</p> <p>It is deliberately lightweight: not an interop claim, and not a standard= s-status statement. The goal is just to give implementers a common row form= at for recording what was actually tested, against which peer, and with wha= t evidence. I also split KEM-based authentication into its own bucket after= Uri=E2=80=99s note, rather than folding it into RFC 9370 or PQC signature = authentication.</p> <p>The seed rows are only placeholders based on the public discussion so fa= r. They should be replaced or corrected by the actual implementers if the g= roup wants to use this around IETF 126 / hackathon coordination.</p> <p>Best,<br> Songbo</p> <p>On Tue, 23 Jun 2026 02:27:19 +0000, =E2=80=9CBlumenthal, Uri - 0553 - MI= TLL=E2=80=9D <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]= .edu</a> wrote:</p> <blockquote> <p>Please add this draft to the list of mechanisms:</p> <p><a href=3D"https://datatracker.ietf.org/doc/draft-wang-ipsecme-kem-auth-= ikev2/" target=3D"_blank">https://datatracker.ietf.org/doc/draft-wang-ipsec= me-kem-auth-ikev2/</a></p> <p>=E2=80=93</p> <p>V/R,</p> <p>Uri Blumenthal</p> <p>There are two ways to design a system. One is to make it so simple there= are obviously no deficiencies.</p> <p>The other is to make it so complex there are no obvious deficiencies.</p= > <ul> <li>C. A. R. Hoare</li> </ul> <p>I was a shepherd to fools</p> <p>Causelessly bold or afraid.</p> <p>They would not abide by my rules.</p> <p>Yet they escaped. For I stayed.</p> <p>R. Kipling =E2=80=9CEpitaphs of the War. Convoy Escort=E2=80=9D</p> <p>From: Songbo Bu <a href=3D"mailto:[email protected]" target=3D"_blank= ">[email protected]</a><br> Date: Monday, June 22, 2026 at 21:23<br> To: <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a> = <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>; <a = href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a> <a href=3D"= mailto:[email protected]" target=3D"_blank">[email protected]</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">nigri@microsof= t.com</a> <a href=3D"mailto:[email protected]" target=3D"_blank">nigri@mi= crosoft.com</a>; <a href=3D"mailto:[email protected]" target=3D"_blank">paul@n= ohats.ca</a> <a href=3D"mailto:[email protected]" target=3D"_blank">paul@nohat= s.ca</a><br> Subject: [EXT] [Pqc] Re: [IPsec] Re: [EXTERNAL] PQC integration in IPsec/IK= Ev2 - implementation experience and interop</p> <p>This Message Is From an External Sender</p> <p>This message came from outside the Laboratory.</p> <p>Hi Nick, Paul, all,</p> <p>This thread is useful.</p> <p>I agree with Paul that IPsec/IKEv2 interop probably does not need a QUIC= -style continuous public test harness to be useful.</p> <p>A lower-friction artifact may be enough for the first pass: a public int= erop checklist and results matrix that records exactly what was tested, aga= inst which peer, and what evidence was observed.</p> <p>For PQC-in-IKEv2 I would split the first matrix along a few axes:</p> <ul> <li> <p>implementation and version;</p> </li> <li> <p>peer implementation and version;</p> </li> <li> <p>deployment shape: site-to-site, remote access, or point-to-point;</p> </li> <li> <p>mechanism: RFC 8784 PPK, RFC 9867 PPK with IKE_INTERMEDIATE, RFC 9370 mu= ltiple key exchange, PQC authentication, reliable IKEv2 transport, downgrad= e prevention;</p> </li> <li> <p>algorithm set: ML-KEM and ML-DSA parameter sets actually exercised;</p> </li> <li> <p>path conditions: fragmentation, retransmission, NAT traversal, rekey/CRE= ATE_CHILD_SA, and failure diagnostics;</p> </li> <li> <p>result evidence: packet trace summary, logs, negotiated transforms, and = failure reason where applicable.</p> </li> </ul> <p>That would let vendors and open-source implementations participate at di= fferent disclosure levels while still producing useful compatibility data.<= /p> <p>If there is interest, I can help turn this into a starter checklist or m= arkdown matrix for the IETF 126 hackathon discussion.</p> <p>Best,<br> Songbo</p> <p>On Mon, 22 Jun 2026 19:26:21 -0400 (EDT), Paul Wouters <a href=3D"mailto= :[email protected]" target=3D"_blank">[email protected]</a> wrote:</p> <p>On Mon, 22 Jun 2026, Nick Grifka wrote:</p> <p>Also, I see in the past there have been PQC-related interop events (ex: = <a href=3D"https://github.com/IETF-Hackathon/pqc-certificates" target=3D"_b= lank">https://github.com/IETF-Hackathon/pqc-certificates</a>). Is there any= appetite for an interop<br> event for PQC in IPsec/IKEv2 amongst the community? I realize the nature of= many IPsec/IKEv2 products might not be suitable for a robust and efficient= interop<br> framework (ex: <a href=3D"https://github.com/quic-interop" target=3D"_blank= ">https://github.com/quic-interop</a>), so maybe that makes such an event l= ess practical.</p> <p>Traditionally these were held in the past (called =E2=80=9Cbake offs=E2= =80=9D but then<br> IPR got into the way of that name). But since IKEv2/IPsec has strong<br> opensource releases (libreswan and strongswan), interop testing usually<br> happens against those implementations (and recently elvis-plus) and doesn= =E2=80=99t<br> require much gathering. Although if you will be at IETF-126, there will<br> be *swan people and elvis-plus people who will gladly do some interop<br> testing with you - especially during the hackathon days (Sat+Sun)</p> <p>Paul</p> </blockquote> </div> --000000000000129b5406550a4728-- --000000000000129b5706550a472a Content-Type: text/x-markdown; charset="US-ASCII"; name="ipsec-pqc-interop-starter-matrix.md" Content-Disposition: attachment; filename="ipsec-pqc-interop-starter-matrix.md" Content-Transfer-Encoding: base64 Content-ID: <> X-Attachment-Id: IyBJUHNlYy9JS0V2MiBQUUMgSW50ZXJvcCBTdGFydGVyIE1hdHJpeAoKRGF0ZTogMjAyNi0wNi0y MwoKQ29udGV4dDogZm9sbG93LXVwIHRvIHRoZSBJUHNlYy9QUUMgZGlzY3Vzc2lvbiBvbiB3aGV0 aGVyIGEgbG93LWZyaWN0aW9uIGludGVyb3AgYXJ0aWZhY3QgaXMgdXNlZnVsIGZvciBJRVRGIDEy NiBoYWNrYXRob24gYW5kIHZlbmRvci9vcGVuLXNvdXJjZSB0ZXN0aW5nLiBVcmkgQmx1bWVudGhh bCBhc2tlZCB0byBhZGQgYGRyYWZ0LXdhbmctaXBzZWNtZS1rZW0tYXV0aC1pa2V2MmAgdG8gdGhl IG1lY2hhbmlzbSBsaXN0LgoKIyMgTWVjaGFuaXNtIGJ1Y2tldHMKCnwgQnVja2V0IHwgTWVjaGFu aXNtL2RvY3VtZW50IHwgV2h5IGl0IGJlbG9uZ3MgaW4gdGhlIG1hdHJpeCB8IEZpcnN0IGV2aWRl bmNlIHRvIGNvbGxlY3QgfAp8IC0tLSB8IC0tLSB8IC0tLSB8IC0tLSB8CnwgUFNLIG1peGluZyB8 IFJGQyA4Nzg0IFBQSyB8IEV4aXN0aW5nIHBvc3QtcXVhbnR1bSBwcmVzaGFyZWQta2V5IHN0eWxl IG1pdGlnYXRpb24gfCBOZWdvdGlhdGVkIFBQSyB1c2UsIGZhaWx1cmUgcmVhc29uIHdoZW4gUFBL IGlzIHJlcXVpcmVkIGJ1dCB1bmF2YWlsYWJsZSB8CnwgUFNLIG1peGluZyB3aXRoIGludGVybWVk aWF0ZSBleGNoYW5nZSB8IFJGQyA5ODY3IFBQSyB3aXRoIGBJS0VfSU5URVJNRURJQVRFYCB8IFJl bGV2YW50IHRvIGxhcmdlciBQUUMgcGF5bG9hZCBwYXRocyBhbmQgaW50ZXJtZWRpYXRlIGV4Y2hh bmdlIGJlaGF2aW9yIHwgVHJhbnNjcmlwdCBzdW1tYXJ5LCBmcmFnbWVudGF0aW9uL3JldHJhbnNt aXNzaW9uIGJlaGF2aW9yLCBuZWdvdGlhdGVkIHRyYW5zZm9ybXMgfAp8IE11bHRpcGxlIGtleSBl eGNoYW5nZSB8IFJGQyA5MzcwIG11bHRpcGxlIGtleSBleGNoYW5nZSB8IENvcmUgaHlicmlkIGtl eS1lc3RhYmxpc2htZW50IHBhdGggZm9yIElLRXYyIHwgQURES0UgdHJhbnNmb3JtIHNldCwgc2Vs ZWN0ZWQgS0VNcywgcmVrZXkvQ1JFQVRFX0NISUxEX1NBIGJlaGF2aW9yIHwKfCBQUUMgYXV0aGVu dGljYXRpb24gYnkgc2lnbmF0dXJlcyB8IGBkcmFmdC1pZXRmLWlwc2VjbWUtaWtldjItcHFjLWF1 dGhgIHwgUFEgc2lnbmF0dXJlIGF1dGhlbnRpY2F0aW9uIHBhdGggZGlzdGluY3QgZnJvbSBLRU0g YXV0aCB8IE1MLURTQS9zaWduYXR1cmUgYWxnb3JpdGhtIHVzZWQsIGNlcnRpZmljYXRlIG9yIHJh dy1rZXkgcGF0aCwgZmFpbHVyZSBkaWFnbm9zdGljcyB8CnwgUFFDIGF1dGhlbnRpY2F0aW9uIGJ5 IEtFTSB8IGBkcmFmdC13YW5nLWlwc2VjbWUta2VtLWF1dGgtaWtldjJgIHwgVXJpJ3MgcmVxdWVz dGVkIGFkZGl0aW9uOyBkaXN0aW5jdCBLRU0tYmFzZWQgYXV0aGVudGljYXRpb24gbWVjaGFuaXNt IHwgS0VNLWF1dGggZXhjaGFuZ2UgcGF0aCwgcHVibGljLWtleSBiaW5kaW5nLCBjZXJ0aWZpY2F0 ZSBwcm90ZWN0aW9uIHBhdGgsIGRvd25ncmFkZS9lcnJvciBiZWhhdmlvciB8CnwgTXVsdGktYXV0 aGVudGljYXRpb24gfCBgZHJhZnQtd2FuZy1pcHNlY21lLW11bHRpLWF1dGgtaWtldjItcHFgIHwg UmVsYXRlZCBkZXNpZ24gc3VyZmFjZSBmb3IgY29tYmluaW5nIGF1dGhlbnRpY2F0aW9uIG1ldGhv ZHMgfCBOZWdvdGlhdGVkIGF1dGggbWV0aG9kcywgaW50ZXJhY3Rpb24gd2l0aCBSRkMgOTU5MyBh bm5vdW5jZW1lbnRzLCBzdHJpY3QgZmFpbHVyZSBiZWhhdmlvciB8CnwgVHJhbnNwb3J0IHJvYnVz dG5lc3MgfCByZWxpYWJsZSBJS0V2MiB0cmFuc3BvcnQgZHJhZnRzIHwgSW1wb3J0YW50IGZvciBs YXJnZSBQUUMgcGF5bG9hZHMsIHJldHJhbnNtaXNzaW9uLCBhbmQgZmFpbHVyZSByZWNvdmVyeSB8 IFRDUC9VRFAgYmVoYXZpb3IsIGZhbGxiYWNrLCBOQVQgdHJhdmVyc2FsLCBsb2dnaW5nIHwKfCBE b3duZ3JhZGUgcHJldmVudGlvbiB8IElQc2VjTUUgZG93bmdyYWRlLXByZXZlbnRpb24gd29yayB8 IENyb3NzLWN1dHRpbmcgc2VjdXJpdHkgcHJvcGVydHkgZm9yIGh5YnJpZC9QUUMgbmVnb3RpYXRp b24gfCBEb3duZ3JhZGUgZGV0ZWN0aW9uIHBhdGgsIGF1dGhlbnRpY2F0ZWQgZmFpbHVyZSwgbG9n cyBhbmQgcGVlciBkaWFnbm9zdGljcyB8CnwgRGVwbG95bWVudCBwcm9maWxlIHwgQ05TQSAyLjAv SVBzZWMgcHJvZmlsZSB3b3JrIHwgT3BlcmF0aW9uYWwgcHJvZmlsZSB0YXJnZXQgZm9yIHJlYWwg ZGVwbG95bWVudHMgfCBQYXJhbWV0ZXIgc2V0LCBjb21wbGlhbmNlIHByb2ZpbGUsIGltcGxlbWVu dGF0aW9uIHZlcnNpb25zIHwKCiMjIFJlc3VsdCBjb2x1bW5zIGZvciBhbiBpbnRlcm9wIHRhYmxl CgpSZWNvbW1lbmRlZCBtaW5pbWFsIGNvbHVtbnM6CgotIGltcGxlbWVudGF0aW9uIGFuZCB2ZXJz aW9uOwotIHBlZXIgaW1wbGVtZW50YXRpb24gYW5kIHZlcnNpb247Ci0gZGVwbG95bWVudCBzaGFw ZTogc2l0ZS10by1zaXRlLCByZW1vdGUgYWNjZXNzLCBwb2ludC10by1wb2ludCwgbGFiLW9ubHk7 Ci0gbWVjaGFuaXNtIGJ1Y2tldCBhbmQgZXhhY3QgZHJhZnQvUkZDIHJldmlzaW9uOwotIGFsZ29y aXRobSBzZXQgYWN0dWFsbHkgZXhlcmNpc2VkOwotIHBhdGggY29uZGl0aW9uczogZnJhZ21lbnRh dGlvbiwgcmV0cmFuc21pc3Npb24sIE5BVCB0cmF2ZXJzYWwsIHJla2V5L0NSRUFURV9DSElMRF9T QTsKLSBzdWNjZXNzL2ZhaWx1cmUgcmVzdWx0OwotIGV2aWRlbmNlIHR5cGU6IHBhY2tldCB0cmFj ZSBzdW1tYXJ5LCBuZWdvdGlhdGVkIHRyYW5zZm9ybXMsIGltcGxlbWVudGF0aW9uIGxvZ3MsIGZh aWx1cmUgY29kZTsKLSBkaXNjbG9zdXJlIGxldmVsOiBwdWJsaWMsIHJlZGFjdGVkIHZlbmRvci1w cml2YXRlLCBvciBjaGFpci1vbmx5IGlmIG5lZWRlZC4KCiMjIFN0YXJ0ZXIgdGFibGUKClRoaXMg dGFibGUgaXMgaW50ZW50aW9uYWxseSBzbWFsbC4gIEl0IGlzIG5vdCBhIGNsYWltIG9mIGludGVy b3BlcmFiaWxpdHk7IGl0IGlzCmEgcGxhY2UgdG8gY29sbGVjdCBjYW5kaWRhdGUgcm93cyBhbmQg dGhlbiByZXBsYWNlIGludGVudCB3aXRoIG9ic2VydmVkCmV2aWRlbmNlLgoKfCBTdGF0dXMgfCBJ bXBsZW1lbnRhdGlvbiAvIHBhcnR5IHwgUGVlciB8IERlcGxveW1lbnQgc2hhcGUgfCBNZWNoYW5p c20gYnVja2V0IHwgQWxnb3JpdGhtIHNldCB8IFBhdGggY29uZGl0aW9ucyB8IEV2aWRlbmNlIHRv IGF0dGFjaCB8IERpc2Nsb3N1cmUgbGV2ZWwgfAp8IC0tLSB8IC0tLSB8IC0tLSB8IC0tLSB8IC0t LSB8IC0tLSB8IC0tLSB8IC0tLSB8IC0tLSB8CnwgQ2FuZGlkYXRlIHwgTWljcm9zb2Z0IGltcGxl bWVudGF0aW9uIHwgVEJEIHwgSVBzZWMgLyBJUHNlYy1iYXNlZCBWUE4gfCBSRkMgOTM3MCwgUFFD IGF1dGgsIHJlbGlhYmxlIHRyYW5zcG9ydCwgZG93bmdyYWRlIHByZXZlbnRpb24gYXMgYXBwbGlj YWJsZSB8IFRCRCB8IFRCRCB8IG5lZ290aWF0ZWQgdHJhbnNmb3JtcywgbG9ncywgZmFpbHVyZSBk aWFnbm9zdGljcyB8IFRCRCB8CnwgQ2FuZGlkYXRlIHwgTkNQIFZQTiBjbGllbnQvc2VydmVyIHwg VEJEIHwgQ2xpZW50L3NlcnZlciBWUE4gfCBSRkMgOTM3MCwgUkZDIDQ3MzksIFBRIEtFTS9zaWdu YXR1cmUgYWxnb3JpdGhtcyBhdmFpbGFibGUgdGhyb3VnaCBPcGVuU1NMIHwgTklTVCBQUSBLRU0v c2lnbmF0dXJlIGFsZ29yaXRobXMsIGV4YWN0IHNldHMgVEJEIHwgUTMgcHJvdG90eXBlOyB0b3Bv bG9neSBUQkQgfCBpbXBsZW1lbnRhdGlvbiB2ZXJzaW9uLCBwZWVyIHZlcnNpb24sIG5lZ290aWF0 ZWQgdHJhbnNmb3JtcyB8IFB1YmxpYyBzdW1tYXJ5IG9yIHJlZGFjdGVkIHwKfCBDYW5kaWRhdGUg fCBsaWJyZXN3YW4gLyBzdHJvbmdTd2FuIC8gZWx2aXMtcGx1cyBjb21tdW5pdHkgdGVzdGluZyB8 IE1pY3Jvc29mdC9OQ1Avb3RoZXIgdmVuZG9ycyB8IEhhY2thdGhvbiBvciBiaWxhdGVyYWwgbGFi IHRlc3QgfCBNZWNoYW5pc20tc3BlY2lmaWMgfCBUQkQgfCBmcmFnbWVudGF0aW9uLCBOQVQgdHJh dmVyc2FsLCByZWtleSwgZmFpbHVyZSBiZWhhdmlvciB8IHRyYW5zY3JpcHQgc3VtbWFyeSBhbmQg aW1wbGVtZW50YXRpb24gbG9ncyB8IFB1YmxpYyBzdW1tYXJ5IHdoZXJlIHBvc3NpYmxlIHwKfCBD YW5kaWRhdGUgfCBQb3N0LVF1YW50dW0gY2xpZW50IHZpYSBOSVNUIE5DQ29FIGNvbnRleHQgfCBN aWNyb3NvZnQgb3Igb3RoZXIgY29uc29ydGl1bSBwYXJ0aWNpcGFudCB8IFJlbW90ZS1hY2Nlc3Mg VlBOIHwgTm9uLVBQSyBQUUMgZGVwbG95bWVudDsgZXhhY3QgbWVjaGFuaXNtIFRCRCB8IFRCRCB8 IFRCRCB8IE5DQ29FLWNvbXBhdGlibGUgdGVzdCBub3RlcyBpZiBhdmFpbGFibGUgfCBDb25zb3J0 aXVtL3B1YmxpYyBib3VuZGFyeSBUQkQgfAoKIyMgUm93LWZpbGxpbmcgZGlzY2lwbGluZQoKRWFj aCByb3cgc2hvdWxkIGlkZW50aWZ5IGV4YWN0bHkgb25lIG1lY2hhbmlzbSBidWNrZXQgb3Igb25l IGNsZWFybHkgbmFtZWQKcHJvZmlsZSBjb21iaW5hdGlvbi4gIElmIGEgdGVzdCBleGVyY2lzZXMg Ym90aCBrZXkgZXN0YWJsaXNobWVudCBhbmQKYXV0aGVudGljYXRpb24gY2hhbmdlcywgc3BsaXQg aXQgaW50byBzZXBhcmF0ZSByb3dzIHVubGVzcyB0aGUgcG9pbnQgb2YgdGhlIHRlc3QKaXMgdGhl IGludGVyYWN0aW9uIGJldHdlZW4gdGhlbS4KClVzZWZ1bCBldmlkZW5jZSBpcyBtb2Rlc3QgYnV0 IHNwZWNpZmljOgoKLSBuZWdvdGlhdGVkIElLRSB0cmFuc2Zvcm1zIGFuZCByZWxldmFudCBub3Rp ZnkgcGF5bG9hZHM7Ci0gaW1wbGVtZW50YXRpb24gYW5kIHBlZXIgdmVyc2lvbjsKLSB3aGV0aGVy IGZyYWdtZW50YXRpb24sIHJldHJhbnNtaXNzaW9uLCBOQVQgdHJhdmVyc2FsLCBhbmQgcmVrZXkg d2VyZSBleGVyY2lzZWQ7Ci0gcGFzcy9mYWlsIHJlc3VsdCBhbmQgdGhlIGZpcnN0IGRpYWdub3Nh YmxlIGZhaWx1cmUgcmVhc29uOwotIHdoZXRoZXIgcGFja2V0IGNhcHR1cmVzLCBsb2dzLCBvciBv bmx5IGEgcHVibGljIHN1bW1hcnkgY2FuIGJlIHNoYXJlZC4KCkF2b2lkIHVzaW5nIHRoZSB0YWJs ZSBhcyBhIHN0YW5kYXJkcy1zdGF0dXMgY2xhaW0uICBJdCBzaG91bGQgc2hvdyB3aGF0IHdhcwp0 ZXN0ZWQsIG5vdCBpbXBseSB0aGF0IGEgbWVjaGFuaXNtIGlzIGNvbXBsZXRlLCByZWNvbW1lbmRl ZCwgb3IgaW50ZXJvcGVyYWJsZSBpbgpnZW5lcmFsLgoKIyMgSW1tZWRpYXRlIHJlcGx5IHBvc2l0 aW9uCgpSZXBseSBuYXJyb3dseTogYWNjZXB0IFVyaSdzIGNvcnJlY3Rpb24sIGFkZCB0aGUgS0VN LWF1dGggZHJhZnQgYXMgYSBzZXBhcmF0ZSBhdXRoZW50aWNhdGlvbiBidWNrZXQsIGFuZCBhdm9p ZCBpbXBseWluZyB0aGF0IG9uZSBpbnRlcm9wIG1hdHJpeCBjYW4gdmFsaWRhdGUgYWxsIG1lY2hh bmlzbXMgYXQgb25jZS4gVGhlIHVzZWZ1bCBmaXJzdCBkZWxpdmVyYWJsZSBpcyBhIHN0YXJ0ZXIg dGFibGUgdGhhdCBsZXRzIGltcGxlbWVudGVycyBhZGQgcm93cyB3aXRob3V0IGV4cG9zaW5nIHNl bnNpdGl2ZSBkZXBsb3ltZW50IGRldGFpbHMuCg== --000000000000129b5706550a472a Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline LS0gClBxYyBtYWlsaW5nIGxpc3QgLS0gcHFjQGlldGYub3JnClRvIHVuc3Vic2NyaWJlIHNlbmQg YW4gZW1haWwgdG8gcHFjLWxlYXZlQGlldGYub3JnCg== --000000000000129b5706550a472a--