Received: (at 33827) by debbugs.gnu.org; 13 Jan 2019 22:53:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 13 17:53:23 2019 Received: from localhost ([127.0.0.1]:58172 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1giod8-0001R0-Sw for submit <at> debbugs.gnu.org; Sun, 13 Jan 2019 17:53:22 -0500 Received: from mail-io1-f50.google.com ([209.85.166.50]:44985) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jessymilare@HIDDEN>) id 1giod7-0001Qk-LK for 33827 <at> debbugs.gnu.org; Sun, 13 Jan 2019 17:53:21 -0500 Received: by mail-io1-f50.google.com with SMTP id r200so16277477iod.11 for <33827 <at> debbugs.gnu.org>; Sun, 13 Jan 2019 14:53:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=ppW40DuBYi1PajJYqIFTFHzz1IAKNFo7l4UxOoFzRAA=; b=WuLToive7jlEjL5jFP4Czg139VV1DlbZiTBo/OvP7ddOJdFfZzZyfVSuglbvsFxMdZ 0HmNiJBw4yqvsTTgUAASfoqOsYrxJfddS6QL1tP+ycT3vDV5Hsk6vupTVkyvammWp0AH n8Bp4r0vEuIPTZ+0nQbo3x953SQb99IDdzhxHovyq82RJo+yy9L7/9j2lpYurAXXYmQA b6LMzttH89ttL/OL4WyX57aUrimKI7InGAOM5SBfrzQltu0Wj2m3SPg8lxpkmjvQWRnl u0DhjYlqGtNO/v3MNZsBubfup2XpMPxXDdEYnIgg79W8nJwrXicRP05SLhqTFYUp/xfP Y/fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=ppW40DuBYi1PajJYqIFTFHzz1IAKNFo7l4UxOoFzRAA=; b=p6Nfi9ylI5lC0ZdmNoQPQjj6JQZlaNrQgDvIYwhI5TCK3uP6NnOcYcXZosFPI/kx3w /RK7B3kwjZRSl/+VgS9fm8gobtih+s8Ufyz0j1vGz5olVs2wSKlhLPeBXXIkd4GkwSSm KY0bc2j/CuLPXwsPT095MAE/fVMfw9aIDAnIgvUbcJgKxIqSL2CxPLoABLV1JRr6Yif9 kfoCyphi59UQFqRrCvVQv5d/aG6kezFQvlbRLd0pek4JtC6o1Rfb6O3nGSZGF/nDTPhT ojma6pcQvQ0jry1cZKg8+PlAZu3DHuWUGKS9Amqi+vqnW+vAvMT0HXoKc/DqQUW9LKM/ rzyg== X-Gm-Message-State: AJcUukd3JDvB7xyax7NTCeJl90xafvOAFmot9pEAmI/IroW9lNhVRht3 gainhvOIFoA2YyhWgLDn0+zeAqhSlgXSPSZie9fSQA== X-Google-Smtp-Source: ALg8bN49jHFKwSPPwjknUpVPk+Rj1SArVRfgb0ivnfi5J7x4f3dwWZZ4JvBW0OTvj/V4H41syX4eGZ2Z4PbXocBFosU= X-Received: by 2002:a6b:156:: with SMTP id 83mr14409641iob.63.1547419995521; Sun, 13 Jan 2019 14:53:15 -0800 (PST) MIME-Version: 1.0 References: <CAGBcF1Z5WmXij2vX+EhxQHvWkmmOkeL-hV+Y-SUSpByH0tZQHw@HIDDEN> <CAGBcF1aZrZhBjEk=tvsJHLJnMDc1ERt-ZaCiwOzqMksnfZsP_Q@HIDDEN> In-Reply-To: <CAGBcF1aZrZhBjEk=tvsJHLJnMDc1ERt-ZaCiwOzqMksnfZsP_Q@HIDDEN> From: =?UTF-8?B?SsOpc3NpY2EgTWlsYXLDqQ==?= <jessymilare@HIDDEN> Date: Sun, 13 Jan 2019 20:53:04 -0200 Message-ID: <CAGBcF1a70RQVCgRZA8cYm7mdREz0yT0NsrHn_6e9rnuK3QaZdA@HIDDEN> Subject: Re: Patches To: 33827 <at> debbugs.gnu.org Content-Type: multipart/mixed; boundary="00000000000027132d057f5ecbea" X-Debbugs-Envelope-To: 33827 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> --00000000000027132d057f5ecbea Content-Type: multipart/alternative; boundary="000000000000271327057f5ecbe8" --000000000000271327057f5ecbe8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable The rest of the patches are here, implementing SRFI 128 and SRFI 125. Em ter, 8 de jan de 2019 =C3=A0s 22:21, J=C3=A9ssica Milar=C3=A9 <jessymila= re@HIDDEN> escreveu: > Patch 0001 fixes SRFI-69 bugs as specified. Patches 0002 to 0005 implemen= t > the module (ice-9 generic-hash-tables) and then reimplement SRFI-69 and > (rnrs hashtables) and add an implementation of SRFI 126, all of them usin= g > generic-hash-tables (and therefore compatible to each other). > > I've called `make check' after each commit and all tests PASS: or XFAIL:, > except the four tests in linker.test, as reported in Bug 33991[1]. > > [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D33991 > --000000000000271327057f5ecbe8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">The rest of the patches are here, implementing SRFI 128 an= d SRFI 125.</div><br><div class=3D"gmail_quote"><div dir=3D"ltr">Em ter, 8 = de jan de 2019 =C3=A0s 22:21, J=C3=A9ssica Milar=C3=A9 <<a href=3D"mailt= o:jessymilare@HIDDEN">jessymilare@HIDDEN</a>> escreveu:<br></div><= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir= =3D"ltr"><div dir=3D"ltr">Patch 0001 fixes SRFI-69 bugs as specified. Patch= es 0002 to 0005 implement the module (ice-9 generic-hash-tables) and then r= eimplement SRFI-69 and (rnrs hashtables) and add an implementation of SRFI = 126, all of them using generic-hash-tables (and therefore compatible to eac= h other).<div><br></div><div>I've called `make check' after each co= mmit and all tests PASS: or XFAIL:, except the four tests in linker.test, a= s reported in Bug=C2=A033991[1].</div><div><br></div><div>[1]=C2=A0<a href= =3D"https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D33991" target=3D"_blank= ">https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D33991</a></div></div></di= v></div> </blockquote></div> --000000000000271327057f5ecbe8-- --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="US-ASCII"; name="0006-Fix-wrong-year-in-copyright-notices.patch" Content-Disposition: attachment; filename="0006-Fix-wrong-year-in-copyright-notices.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqvhvngx0> X-Attachment-Id: f_jqvhvngx0 RnJvbSBhMDJmZDA5MTE3MDEzMTU0YzAxMTA3NGI1YTc1ODNhMWJlZDVlY2E0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBGcmksIDExIEphbiAyMDE5IDE3OjQwOjM4 IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAwNi8xMF0gRml4IHdyb25nIHllYXIgaW4gY29weXJpZ2h0 IG5vdGljZXMuCgotLS0KIG1vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVzLnNjbSAgICAg IHwgMiArLQogbW9kdWxlL3NyZmkvc3JmaS0xMjYuc2NtICAgICAgICAgICAgICAgICAgfCA0ICsr LS0KIG1vZHVsZS9zcmZpL3NyZmktNjkuc2NtICAgICAgICAgICAgICAgICAgIHwgMiArLQogdGVz dC1zdWl0ZS90ZXN0cy9nZW5lcmljLWhhc2gtdGFibGVzLnRlc3QgfCA0ICsrLS0KIHRlc3Qtc3Vp dGUvdGVzdHMvc3JmaS0xMjYudGVzdCAgICAgICAgICAgIHwgNCArKy0tCiB0ZXN0LXN1aXRlL3Rl c3RzL3NyZmktNjkudGVzdCAgICAgICAgICAgICB8IDIgKy0KIDYgZmlsZXMgY2hhbmdlZCwgOSBp bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL21vZHVsZS9pY2UtOS9n ZW5lcmljLWhhc2gtdGFibGVzLnNjbSBiL21vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVz LnNjbQppbmRleCAwMzNjM2VjZGEuLjMxZGVhZDk3YSAxMDA2NDQKLS0tIGEvbW9kdWxlL2ljZS05 L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtCisrKyBiL21vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gt dGFibGVzLnNjbQpAQCAtMSw2ICsxLDYgQEAKIDs7OyBnZW5lcmljLWhhc2gtdGFibGVzLnNjbSAt LS0gSW50ZXJtZWRpYXRlIGhhc2ggdGFibGVzCiAKLTs7IAlDb3B5cmlnaHQgKEMpIDIwMDcgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OyAgICBDb3B5cmlnaHQgKEMpIDIwMDcsMjAx OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIDs7CiA7OyBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiA7OyBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCmRpZmYg LS1naXQgYS9tb2R1bGUvc3JmaS9zcmZpLTEyNi5zY20gYi9tb2R1bGUvc3JmaS9zcmZpLTEyNi5z Y20KaW5kZXggN2E2NTk0NDM0Li5lN2ZlZTM1ZDMgMTAwNjQ0Ci0tLSBhL21vZHVsZS9zcmZpL3Ny ZmktMTI2LnNjbQorKysgYi9tb2R1bGUvc3JmaS9zcmZpLTEyNi5zY20KQEAgLTEsNiArMSw2IEBA Ci07Ozsgc3JmaS02OS5zY20gLS0tIEJhc2ljIGhhc2ggdGFibGVzCis7Ozsgc3JmaS0xMjYuc2Nt IC0tLSBSNlJTIGhhc2ggdGFibGVzCiAKLTs7IAlDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OyAgICBDb3B5cmlnaHQgKEMpIDIwMTkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA7OwogOzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogOzsgbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpkaWZmIC0tZ2l0IGEvbW9k dWxlL3NyZmkvc3JmaS02OS5zY20gYi9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbQppbmRleCBhZTVi YzdmMDYuLjEzNGJjZDY5NCAxMDA2NDQKLS0tIGEvbW9kdWxlL3NyZmkvc3JmaS02OS5zY20KKysr IGIvbW9kdWxlL3NyZmkvc3JmaS02OS5zY20KQEAgLTEsNiArMSw2IEBACiA7Ozsgc3JmaS02OS5z Y20gLS0tIEJhc2ljIGhhc2ggdGFibGVzCiAKLTs7IAlDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OyAgICBDb3B5cmlnaHQgKEMpIDIwMDcsMjAxOCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIDs7CiA7OyBUaGlzIGxpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiA7OyBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCmRpZmYgLS1n aXQgYS90ZXN0LXN1aXRlL3Rlc3RzL2dlbmVyaWMtaGFzaC10YWJsZXMudGVzdCBiL3Rlc3Qtc3Vp dGUvdGVzdHMvZ2VuZXJpYy1oYXNoLXRhYmxlcy50ZXN0CmluZGV4IDQ5NGNiZjcwYS4uZDFlYjJh YzJkIDEwMDY0NAotLS0gYS90ZXN0LXN1aXRlL3Rlc3RzL2dlbmVyaWMtaGFzaC10YWJsZXMudGVz dAorKysgYi90ZXN0LXN1aXRlL3Rlc3RzL2dlbmVyaWMtaGFzaC10YWJsZXMudGVzdApAQCAtMSw2 ICsxLDYgQEAKLTs7Ozsgc3JmaS02OS50ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBTUkZJIDY5IC0q LSBzY2hlbWUgLSotCis7Ozs7IGdlbmVyaWMtaGFzaC10YWJsZXMudGVzdCAtLS0gVGVzdCBzdWl0 ZSBmb3IgR0VORVJJQy1IQVNILVRBQkxFUyAtKi0gc2NoZW1lIC0qLQogOzs7OwotOzs7OyAJQ29w eXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorOzs7OyAgICBD b3B5cmlnaHQgKEMpIDIwMDcsMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIDs7 OzsKIDs7OzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgogOzs7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCmRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmkt MTI2LnRlc3QgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTI2LnRlc3QKaW5kZXggZTZhNGU2NmE5 Li45NzA3NzBhNmUgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjYudGVzdAor KysgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTI2LnRlc3QKQEAgLTEsNiArMSw2IEBACi07Ozs7 IHNyZmktNjkudGVzdCAtLS0gVGVzdCBzdWl0ZSBmb3IgU1JGSSA2OSAtKi0gc2NoZW1lIC0qLQor Ozs7OyBzcmZpLTEyNi50ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBTUkZJIDEyNiAtKi0gc2NoZW1l IC0qLQogOzs7OwotOzs7OyAJQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorOzs7OyBDb3B5cmlnaHQgKEMpIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiA7Ozs7CiA7Ozs7IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKIDs7OzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpkaWZmIC0tZ2l0IGEvdGVzdC1zdWl0 ZS90ZXN0cy9zcmZpLTY5LnRlc3QgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdAppbmRl eCBlMTU3OWY3M2EuLjk3NDkxYmE4MyAxMDA2NDQKLS0tIGEvdGVzdC1zdWl0ZS90ZXN0cy9zcmZp LTY5LnRlc3QKKysrIGIvdGVzdC1zdWl0ZS90ZXN0cy9zcmZpLTY5LnRlc3QKQEAgLTEsNiArMSw2 IEBACiA7Ozs7IHNyZmktNjkudGVzdCAtLS0gVGVzdCBzdWl0ZSBmb3IgU1JGSSA2OSAtKi0gc2No ZW1lIC0qLQogOzs7OwotOzs7OyAJQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorOzs7OyAgICBDb3B5cmlnaHQgKEMpIDIwMDcsMjAxOCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KIDs7OzsKIDs7OzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogOzs7OyBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0tIAoyLjE5LjEK Cg== --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="UTF-8"; name="0009-Implemented-SRFI-125.patch" Content-Disposition: attachment; filename="0009-Implemented-SRFI-125.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqvhvnoy3> X-Attachment-Id: f_jqvhvnoy3 RnJvbSAxOGNlMTAyYzI3MGJhYjNjZjUyNDBlN2FjOTMxMjllMTA3YzMzNWRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDEzIEphbiAyMDE5IDEyOjAxOjA4 IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAwOS8xMF0gSW1wbGVtZW50ZWQgU1JGSS0xMjUKCi0tLQog bW9kdWxlL01ha2VmaWxlLmFtICAgICAgICAgICAgIHwgICAxICsKIG1vZHVsZS9zcmZpL3NyZmkt MTI1LnNjbSAgICAgICB8IDQ3OSArKysrKysrKysrKysrKysrKysKIHRlc3Qtc3VpdGUvTWFrZWZp bGUuYW0gICAgICAgICB8ICAgMSArCiB0ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTI1LnRlc3QgfCA4 NjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDEz NDEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IG1vZHVsZS9zcmZpL3NyZmktMTI1 LnNjbQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjUudGVzdAoK ZGlmZiAtLWdpdCBhL21vZHVsZS9NYWtlZmlsZS5hbSBiL21vZHVsZS9NYWtlZmlsZS5hbQppbmRl eCA1ZmMzMDEwYzEuLjQxYzFjMjgyNiAxMDA2NDQKLS0tIGEvbW9kdWxlL01ha2VmaWxlLmFtCisr KyBiL21vZHVsZS9NYWtlZmlsZS5hbQpAQCAtMjk0LDYgKzI5NCw3IEBAIFNPVVJDRVMgPQkJCQkJ XAogICBzcmZpL3NyZmktODguc2NtCQkJCVwKICAgc3JmaS9zcmZpLTk4LnNjbQkJCQlcCiAgIHNy Zmkvc3JmaS0xMTEuc2NtCQkJCVwKKyAgc3JmaS9zcmZpLTEyNS5zY20JCQkJXAogICBzcmZpL3Ny ZmktMTI2LnNjbQkJCQlcCiAgIHNyZmkvc3JmaS0xMjgvZ251LnNjbQkJCQlcCiAgIHNyZmkvc3Jm aS0xMjguc2NtCQkJCVwKZGlmZiAtLWdpdCBhL21vZHVsZS9zcmZpL3NyZmktMTI1LnNjbSBiL21v ZHVsZS9zcmZpL3NyZmktMTI1LnNjbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAuLmYwYTFkZmIwMgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS9zcmZpL3NyZmktMTI1LnNj bQpAQCAtMCwwICsxLDQ3OSBAQAorOzs7IHNyZmktMTI1LnNjbSAtLS0gSW50ZXJtZWRpYXRlIGhh c2ggdGFibGVzCisKKzs7ICAgIENvcHlyaWdodCAoQykgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKzs7Cis7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCis7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKzs7IHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7Cis7 OyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorOzsgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7Cis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFs b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl Cis7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC b3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisKKzs7IFRoaXMgZmlsZSBjb250YWlucyBjb2RlIGZy b20gU1JGSSAxMjggcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLCBieQorOzsgV2lsbGlhbSBEIENs aW5nZXIKKworOzs7IENvcHlyaWdodCAyMDE1IFdpbGxpYW0gRCBDbGluZ2VyLgorOzs7Cis7Ozsg UGVybWlzc2lvbiB0byBjb3B5IHRoaXMgc29mdHdhcmUsIGluIHdob2xlIG9yIGluIHBhcnQsIHRv IHVzZSB0aGlzCis7Ozsgc29mdHdhcmUgZm9yIGFueSBsYXdmdWwgcHVycG9zZSwgYW5kIHRvIHJl ZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCis7OzsgaXMgZ3JhbnRlZCBzdWJqZWN0IHRvIHRoZSBy ZXN0cmljdGlvbiB0aGF0IGFsbCBjb3BpZXMgbWFkZSBvZiB0aGlzCis7Ozsgc29mdHdhcmUgbXVz dCBpbmNsdWRlIHRoaXMgY29weXJpZ2h0IGFuZCBwZXJtaXNzaW9uIG5vdGljZSBpbiBmdWxsLgor Ozs7Cis7OzsgSSBhbHNvIHJlcXVlc3QgdGhhdCB5b3Ugc2VuZCBtZSBhIGNvcHkgb2YgYW55IGlt cHJvdmVtZW50cyB0aGF0IHlvdQorOzs7IG1ha2UgdG8gdGhpcyBzb2Z0d2FyZSBzbyB0aGF0IHRo ZXkgbWF5IGJlIGluY29ycG9yYXRlZCB3aXRoaW4gaXQgdG8KKzs7OyB0aGUgYmVuZWZpdCBvZiB0 aGUgU2NoZW1lIGNvbW11bml0eS4KKwwKKworKGRlZmluZS1tb2R1bGUgKHNyZmkgc3JmaS0xMjUp CisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZp LTEyOCkKKyAgIzp1c2UtbW9kdWxlICgocm5ycyBiYXNlKSAjOnNlbGVjdCAoc3ltYm9sPT8pKQor ICAjOnVzZS1tb2R1bGUgKChpY2UtOSBnZW5lcmljLWhhc2gtdGFibGVzKSAjOnByZWZpeCBnZW46 KQorICAjOmV4cG9ydCAoOzsgVHlwZSBjb25zdHJ1Y3RvcnMgYW5kIHByZWRpY2F0ZQorICAgICAg ICAgICAgbWFrZS1oYXNoLXRhYmxlCisgICAgICAgICAgICBoYXNoLXRhYmxlIGhhc2gtdGFibGUt dW5mb2xkIGFsaXN0LT5oYXNoLXRhYmxlCisgICAgICAgICAgICA7OyBQcmVkaWNhdGVzCisgICAg ICAgICAgICBoYXNoLXRhYmxlPyBoYXNoLXRhYmxlLWNvbnRhaW5zPyBoYXNoLXRhYmxlLWVtcHR5 PyBoYXNoLXRhYmxlPT8KKyAgICAgICAgICAgIGhhc2gtdGFibGUtbXV0YWJsZT8KKyAgICAgICAg ICAgIDs7IEFjY2Vzc29ycworICAgICAgICAgICAgaGFzaC10YWJsZS1yZWYgaGFzaC10YWJsZS1y ZWYvZGVmYXVsdAorICAgICAgICAgICAgOzsgTXV0YXRvcnMKKyAgICAgICAgICAgIGhhc2gtdGFi bGUtc2V0ISBoYXNoLXRhYmxlLWRlbGV0ZSEgaGFzaC10YWJsZS1pbnRlcm4hIGhhc2gtdGFibGUt dXBkYXRlIQorICAgICAgICAgICAgaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1bHQgaGFzaC10YWJs ZS1wb3AhIGhhc2gtdGFibGUtY2xlYXIhCisgICAgICAgICAgICA7OyBUaGUgd2hvbGUgaGFzaCB0 YWJsZQorICAgICAgICAgICAgaGFzaC10YWJsZS1zaXplIGhhc2gtdGFibGUta2V5cyBoYXNoLXRh YmxlLXZhbHVlcyBoYXNoLXRhYmxlLWVudHJpZXMKKyAgICAgICAgICAgIGhhc2gtdGFibGUtZmlu ZCBoYXNoLXRhYmxlLWNvdW50CisgICAgICAgICAgICA7OyBNYXBwaW5nIGFuZCBmb2xkaW5nCisg ICAgICAgICAgICBoYXNoLXRhYmxlLW1hcCBoYXNoLXRhYmxlLWZvci1lYWNoIGhhc2gtdGFibGUt bWFwISBoYXNoLXRhYmxlLW1hcC0+bGlzdAorICAgICAgICAgICAgaGFzaC10YWJsZS1mb2xkIGhh c2gtdGFibGUtcHJ1bmUhCisgICAgICAgICAgICA7OyBDb3B5aW5nCisgICAgICAgICAgICBoYXNo LXRhYmxlLWNvcHkgaGFzaC10YWJsZS1lbXB0eS1jb3B5CisgICAgICAgICAgICA7OyBDb252ZXJz aW9uCisgICAgICAgICAgICBoYXNoLXRhYmxlLT5hbGlzdAorICAgICAgICAgICAgOzsgSGFzaCB0 YWJsZXMgYXMgc2V0cworICAgICAgICAgICAgaGFzaC10YWJsZS11bmlvbiEgaGFzaC10YWJsZS1p bnRlcnNlY3Rpb24hIGhhc2gtdGFibGUtZGlmZmVyZW5jZSEKKyAgICAgICAgICAgIGhhc2gtdGFi bGUteG9yIQorICAgICAgICAgICAgOzsgVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIGFyZSBkZXBy ZWNhdGVkIGJ5IFNSRkkgMTI1OgorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6aGFzaC10YWJsZS1l eGlzdHM/IC4gaGFzaC10YWJsZS1leGlzdHM/KQorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6aGFz aC10YWJsZS13YWxrIC4gaGFzaC10YWJsZS13YWxrKQorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6 aGFzaC10YWJsZS1tZXJnZSEgLiBoYXNoLXRhYmxlLW1lcmdlISkKKyAgICAgICAgICAgIDs7IEZp eG1lOiBzaG91bGQgd2UgcmVhbGx5IGRlcHJlY2F0ZSB0aGVzZSBpbiBHdWlsZT8KKyAgICAgICAg ICAgIChkZXByZWNhdGVkOmhhc2ggLiBoYXNoKQorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6c3Ry aW5nLWhhc2ggLiBzdHJpbmctaGFzaCkKKyAgICAgICAgICAgIChkZXByZWNhdGVkOnN0cmluZy1j aS1oYXNoIC4gc3RyaW5nLWNpLWhhc2gpCisgICAgICAgICAgICAoZGVwcmVjYXRlZDpoYXNoLWJ5 LWlkZW50aXR5IC4gaGFzaC1ieS1pZGVudGl0eSkKKyAgICAgICAgICAgIChkZXByZWNhdGVkOmhh c2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gLiBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1 bmN0aW9uKQorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6aGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9u IC4gaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uKSkKKyAgIzpyZXBsYWNlIChtYWtlLWhhc2gtdGFi bGUgaGFzaC10YWJsZT8pKQorCisoY29uZC1leHBhbmQtcHJvdmlkZSAoY3VycmVudC1tb2R1bGUp ICcoc3JmaS0xMjUpKQorCisMCis7OzsgUHJpdmF0ZSBzdHVmZiwgbm90IGV4cG9ydGVkLgorCis7 OyBUZW4gb2YgdGhlIFNSRkkgMTI1IHByb2NlZHVyZXMgYXJlIGRlcHJlY2F0ZWQsIGFuZCBhbm90 aGVyCis7OyB0d28gYWxsb3cgYWx0ZXJuYXRpdmUgYXJndW1lbnRzIHRoYXQgYXJlIGRlcHJlY2F0 ZWQuCisKKyhkZWZpbmUgKGlzc3VlLWRlcHJlY2F0ZWQtd2FybmluZ3M/KSAjdCkKKworKGRlZmlu ZSAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVkIG5hbWUtb2YtZGVwcmVjYXRlZC1taXNmZWF0dXJl KQorICAoaWYgKG5vdCAobWVtcSBuYW1lLW9mLWRlcHJlY2F0ZWQtbWlzZmVhdHVyZSBhbHJlYWR5 LXdhcm5lZCkpCisgICAgICAoYmVnaW4KKyAgICAgICAgKHNldCEgYWxyZWFkeS13YXJuZWQKKyAg ICAgICAgICAoY29ucyBuYW1lLW9mLWRlcHJlY2F0ZWQtbWlzZmVhdHVyZSBhbHJlYWR5LXdhcm5l ZCkpCisgICAgICAgIChpZiAoaXNzdWUtZGVwcmVjYXRlZC13YXJuaW5ncz8pCisgICAgICAgICAg ICAobGV0ICgob3V0IChjdXJyZW50LWVycm9yLXBvcnQpKSkKKyAgICAgICAgICAgICAgKGRpc3Bs YXkgIldBUk5JTkc6ICIgb3V0KQorICAgICAgICAgICAgICAoZGlzcGxheSBuYW1lLW9mLWRlcHJl Y2F0ZWQtbWlzZmVhdHVyZSBvdXQpCisgICAgICAgICAgICAgIChuZXdsaW5lIG91dCkKKyAgICAg ICAgICAgICAgKGRpc3BsYXkgIiAgICBpcyBkZXByZWNhdGVkIGJ5IFNSRkkgMTI1LiAgU2VlIiBv dXQpCisgICAgICAgICAgICAgIChuZXdsaW5lIG91dCkKKyAgICAgICAgICAgICAgKGRpc3BsYXkg IiAgICAiIG91dCkKKyAgICAgICAgICAgICAgKGRpc3BsYXkgdXJsOmRlcHJlY2F0ZWQgb3V0KQor ICAgICAgICAgICAgICAobmV3bGluZSBvdXQpKSkpKSkKKworKGRlZmluZSB1cmw6ZGVwcmVjYXRl ZAorICAiaHR0cDovL3NyZmkuc2NoZW1lcnMub3JnL3NyZmktMTI1L3NyZmktMTI1Lmh0bWwiKQor Cis7OyBMaXN0IG9mIGRlcHJlY2F0ZWQgZmVhdHVyZXMgZm9yIHdoaWNoIGEgd2FybmluZyBoYXMg YWxyZWFkeQorOzsgYmVlbiBpc3N1ZWQuCisKKyhkZWZpbmUgYWxyZWFkeS13YXJuZWQgJygpKQor Cis7OzsgQ29tZW50YXJ5IGZyb20gU1JGSSAxMjUgc3RhbmRhcmQgaW1wbGVtZW50YXRpb24KKzs7 OworOzs7IENvbXBhcmF0b3JzIGNvbnRhaW4gYSB0eXBlIHRlc3QgcHJlZGljYXRlLCB3aGljaCBp bXBsZW1lbnRhdGlvbnMKKzs7OyBvZiB0aGUgaGFzaC10YWJsZS1zZXQhIHByb2NlZHVyZSBjYW4g dXNlIHRvIHJlamVjdCBpbnZhbGlkIGtleXMuCis7OzsgVGhhdCdzIGhhcmQgdG8gZG8gd2l0aG91 dCBzYWNyaWZpY2luZyBpbnRlcm9wZXJhYmlsaXR5IHdpdGggUjZSUworOzs7IGFuZC9vciBTUkZJ IDY5IGFuZC9vciBTUkZJIDEyNiBoYXNoIHRhYmxlcy4KKzs7OworOzs7IEZ1bGwgaW50ZXJvcGVy YWJpbGl0eSBtZWFucyB0aGUgaGFzaCB0YWJsZXMgaW1wbGVtZW50ZWQgaGVyZSBhcmUKKzs7OyBp bnRlcmNoYW5nZWFibGUgd2l0aCB0aGUgU1JGSSAxMjYgaGFzaHRhYmxlcyB1c2VkIHRvIGltcGxl bWVudCB0aGVtLgorOzs7IFNSRkkgNjkgYW5kIFI2UlMgYW5kIFNSRkkgMTI2IGhhc2h0YWJsZXMg ZG9uJ3QgY29udGFpbiBjb21wYXJhdG9ycywKKzs7OyBzbyBhbnkgYXNzb2NpYXRpb24gYmV0d2Vl biBhIGhhc2ggdGFibGUgYW5kIGl0cyBjb21wYXJhdG9yIHdvdWxkIGhhdmUKKzs7OyB0byBiZSBt YWludGFpbmVkIG91dHNpZGUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIGhhc2ggdGFibGVzIHRoZW1z ZWx2ZXMsCis7Ozsgd2hpY2ggaXMgcHJvYmxlbWF0aWMgdW5sZXNzIHdlYWsgcG9pbnRlcnMgYXJl IGF2YWlsYWJsZS4KKzs7OworOzs7IE5vdCBhbGwgb2YgdGhlIGhhc2ggdGFibGVzIGltcGxlbWVu dGVkIGhlcmUgd2lsbCBoYXZlIGNvbXBhcmF0b3JzCis7OzsgYXNzb2NpYXRlZCB3aXRoIHRoZW0g YW55d2F5LCBiZWNhdXNlIGFuIGVxdWl2YWxlbmNlIHByb2NlZHVyZQorOzs7IGFuZCBoYXNoIGZ1 bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIGhhc2ggdGFibGUgaW5zdGVhZCBvZgorOzs7 IGEgY29tcGFyYXRvciAoYWx0aG91Z2ggdGhhdCB1c2FnZSBpcyBkZXByZWNhdGVkIGJ5IFNSRkkg MTI1KS4KKzs7OworOzs7IE9uZSB3YXkgdG8gcHJlc2VydmUgaW50ZXJvcGVyYWJpbGl0eSB3aGls ZSBlbmZvcmNpbmcgYSBjb21wYXJhdG9yJ3MKKzs7OyB0eXBlIHRlc3QgaXMgdG8gaW5jb3Jwb3Jh dGUgdGhhdCB0ZXN0IGludG8gYSBoYXNoIHRhYmxlJ3MgaGFzaAorOzs7IGZ1bmN0aW9uLiAgVGhl IGFkdmFudGFnZSBvZiBkb2luZyB0aGF0IHNob3VsZCBiZSB3ZWlnaGVkIGFnYWluc3QKKzs7OyB0 aGVzZSBkaXNhZHZhbnRhZ2VzOgorOzs7Cis7OzsgICAgIElmIHRoZSB0eXBlIHRlc3QgaXMgc2xv dywgdGhlbiBoYXNoaW5nIHdvdWxkIGFsc28gYmUgc2xvd2VyLgorOzs7Cis7OzsgICAgIFRoZSBS NlJTLCBTUkZJIDY5LCBhbmQgU1JGSSAxMjYgQVBJcyBhbGxvdyBleHRyYWN0aW9uIG9mCis7Ozsg ICAgIGEgaGFzaCBmdW5jdGlvbiBmcm9tIHNvbWUgaGFzaCB0YWJsZXMuCis7OzsgICAgIFNvbWUg cHJvZ3JhbW1lcnMgbWlnaHQgZXhwZWN0IHRoYXQgaGFzaCBmdW5jdGlvbiB0byBiZSB0aGUKKzs7 OyAgICAgaGFzaCBmdW5jdGlvbiBlbmNhcHN1bGF0ZWQgYnkgdGhlIGNvbXBhcmF0b3IgKGluIHRo ZSBzZW5zZQorOzs7ICAgICBvZiBlcT8sIHBlcmhhcHMpIGV2ZW4gdGhvdWdoIHRoaXMgQVBJIG1h a2VzIG5vIHN1Y2ggZ3VhcmFudGVlCis7OzsgICAgIChhbmQgZXh0cmFjdGlvbiBvZiB0aGF0IGhh c2ggZnVuY3Rpb24gZnJvbSBhbiBleGlzdGluZyBoYXNoCis7OzsgICAgIHRhYmxlIGNhbiBvbmx5 IGJlIGRvbmUgYnkgY2FsbGluZyBhIGRlcHJlY2F0ZWQgcHJvY2VkdXJlKS4KKworOzsgSWYgJWVu Zm9yY2UtY29tcGFyYXRvci10eXBlLXRlc3RzIGlzIHRydWUsIHRoZW4gbWFrZS1oYXNoLXRhYmxl LAorOzsgd2hlbiBwYXNzZWQgYSBjb21wYXJhdG9yLCB3aWxsIHVzZSBhIGhhc2ggZnVuY3Rpb24g dGhhdCBlbmZvcmNlcworOzsgdGhlIGNvbXBhcmF0b3IncyB0eXBlIHRlc3QuCisKKyhkZWZpbmUg JWVuZm9yY2UtY29tcGFyYXRvci10eXBlLXRlc3RzICN0KQorCis7OzsgRG9uJ3QgdXNlIEhBU0gt RlVOQ1RJT04gaWYgRVFVSVYgaXMgYSAoa25vd24pIHJlZmluZW1lbnQgb2YgRVFVQUw/CisoZGVm aW5lICglZ2V0LWhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbiBlcXVpdiBoYXNoLWZ1bmN0aW9uKQor ICAoaWYgKG9yIChlcT8gZXE/IGVxdWl2KQorICAgICAgICAgIChlcT8gZXF2PyBlcXVpdikKKyAg ICAgICAgICAoZXE/IGVxdWFsPyBlcXVpdikKKyAgICAgICAgICAoZXE/IHN0cmluZz0/IGVxdWl2 KSkKKyAgICAgIDs7IExldCBHRU5FUklDLUhBU0gtVEFCTEVTIGRlY2lkZSBhIGJldHRlciBIQVNI LUZVTkNUSU9OCisgICAgICAjZgorICAgICAgOzsgTm90IHJlcXVpcmVkIGJ5IHNwZWNpZmljYXRp b24sIGJ1dCBpbXBsZW1lbnRlZCBieSBzdGFuZGFyZAorICAgICAgOzsgaW1wbGVtZW50YXRpb24K KyAgICAgIChpZiAoZXE/IHN5bWJvbD0/IGVxdWl2KQorICAgICAgICAgIHN5bWJvbC1oYXNoCisg ICAgICAgICAgaGFzaC1mdW5jdGlvbikpKQorCis7OzsgR2l2ZW4gYSBjb21wYXJhdG9yLCByZXR1 cm4gaXRzIGhhc2ggZnVuY3Rpb24sIHBvc3NpYmx5IGF1Z21lbnRlZAorOzs7IGJ5IHRoZSBjb21w YXJhdG9yJ3MgdHlwZSB0ZXN0LgorKGRlZmluZSAoJWNvbXBhcmF0b3ItaGFzaC1mdW5jdGlvbiBj b21wYXJhdG9yKQorICAobGV0ICgob2theT8gKGNvbXBhcmF0b3ItdHlwZS10ZXN0LXByZWRpY2F0 ZSBjb21wYXJhdG9yKSkKKyAgICAgICAgKGhhc2gtZnVuY3Rpb24gKCVnZXQtaGFzaC10YWJsZS1o YXNoLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoY29tcGFyYXRvci1lcXVhbGl0 eS1wcmVkaWNhdGUgY29tcGFyYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb21wYXJh dG9yLWhhc2gtZnVuY3Rpb24gY29tcGFyYXRvcikpKSkKKyAgICAoYW5kIGhhc2gtZnVuY3Rpb24K KyAgICAgICAgIChpZiAoYW5kICVlbmZvcmNlLWNvbXBhcmF0b3ItdHlwZS10ZXN0cworICAgICAg ICAgICAgICAgICAgOzsgVGhlc2UgcHJvY2VkdXJlcyBhbHJlYWR5IHRlc3QgdHlwZQorICAgICAg ICAgICAgICAgICAgKG5vdCAob3IgKGVxPyBoYXNoLWZ1bmN0aW9uIHN5bWJvbC1oYXNoKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGVxPyBoYXNoLWZ1bmN0aW9uIHN0cmluZy1jaS1oYXNo KSkpKQorICAgICAgICAgICAgIChsYW1iZGEgKHgpCisgICAgICAgICAgICAgICAoY29uZCAoKG5v dCAob2theT8geCkpCisgICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJLZXkgcmVqZWN0ZWQg YnkgaGFzaC10YWJsZSBjb21wYXJhdG9yIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmF0b3IpKQorICAgICAgICAgICAg ICAgICAgICAgKGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAoaGFzaC1mdW5jdGlvbiB4KSkp KQorICAgICAgICAgICAgIGhhc2gtZnVuY3Rpb24pKSkpCisKKzs7OyBXZSBsZXQgR0VORVJJQy1I QVNILVRBQkxFUyBkZWNpZGUgd2hpY2ggd2Vha25lc3NlcyBhcmUgc3VwcG9ydGVkCisoZGVmaW5l ICglY2hlY2stb3B0aW9uYWwtYXJndW1lbnRzIHByb2NuYW1lIGFyZ3MpCisgIChpZiAobWVtcSAn dGhyZWFkLXNhZmUgYXJncykKKyAgICAgIChlcnJvciAoc3RyaW5nLWFwcGVuZCAoc3ltYm9sLT5z dHJpbmcgcHJvY25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogdW5zdXBwb3J0 ZWQgb3B0aW9uYWwgYXJndW1lbnQocykiKQorICAgICAgICAgICAgIGFyZ3MpKSkKKworKGRlZmlu ZSAoJWdldC1oYXNoLXRhYmxlLXdlYWtuZXNzIGFyZ3MpCisgIChjb25kCisgICAoKG1lbXEgJ2Vw aGVtZXJhbC12YWx1ZXMgYXJncykKKyAgICAoaWYgKG9yIChtZW1xICdlcGhlbWVyYWwta2V5cyBh cmdzKQorICAgICAgICAgICAgKG1lbXEgJ3dlYWsta2V5cyBhcmdzKSkKKyAgICAgICAgJ2VwaGVt ZXJhbC1rZXktYW5kLXZhbHVlCisgICAgICAgICdlcGhlbWVyYWwtdmFsdWUpKQorICAgKChtZW1x ICdlcGhlbWVyYWwta2V5cyBhcmdzKQorICAgIChpZiAobWVtcSAnd2Vhay12YWx1ZXMgYXJncykK KyAgICAgICAgJ2VwaGVtZXJhbC1rZXktYW5kLXZhbHVlCisgICAgICAgICdlcGhlbWVyYWwta2V5 KSkKKyAgICgobWVtcSAnd2Vhay1rZXlzIGFyZ3MpCisgICAgKGlmIChtZW1xICd3ZWFrLXZhbHVl cyBhcmdzKQorICAgICAgICAnd2Vhay1rZXktYW5kLXZhbHVlCisgICAgICAgICd3ZWFrLWtleSkp CisgICAoKG1lbXEgJ3dlYWstdmFsdWVzIGFyZ3MpCisgICAgJ3dlYWstdmFsdWUpCisgICAoZWxz ZSAjZikpKQorCisoZGVmaW5lICglZ2V0LWhhc2gtdGFibGUtY2FwYWNpdHkgYXJncykKKyAgKG9y IChmaW5kIGludGVnZXI/IGFyZ3MpIDEpKQorCisMCis7OzsgQ29uc3RydWN0b3JzLgorCis7Ozsg Q29tZW50YXJ5IGZyb20gU1JGSSAxMjUgc3RhbmRhcmQgaW1wbGVtZW50YXRpb24KKzs7OworOzs7 IFRoZSBmaXJzdCBhcmd1bWVudCBjYW4gYmUgYSBjb21wYXJhdG9yIG9yIGFuIGVxdWFsaXR5IHBy ZWRpY2F0ZS4KKzs7OworOzs7IElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIGNvbXBhcmF0b3Is IGFueSByZW1haW5pbmcgYXJndW1lbnRzCis7OzsgYXJlIGltcGxlbWVudGF0aW9uLWRlcGVuZGVu dCwgYnV0IGEgbm9uLW5lZ2F0aXZlIGV4YWN0IGludGVnZXIKKzs7OyBzaG91bGQgYmUgaW50ZXJw cmV0ZWQgYXMgYW4gaW5pdGlhbCBjYXBhY2l0eSBhbmQgdGhlIHN5bWJvbHMKKzs7OyB0aHJlYWQt c2FmZSwgd2Vhay1rZXlzLCBlcGhlbWVyYWwta2V5cywgd2Vhay12YWx1ZXMsIGFuZAorOzs7IGVt cGhlbWVyYWwtdmFsdWVzIHNob3VsZCBiZSBpbnRlcnByZXRlZCBzcGVjaWFsbHkuICAoVGhlc2UK Kzs7OyBzcGVjaWFsIHN5bWJvbHMgYXJlIGRpc3RpbmN0IGZyb20gdGhlIGFuYWxvZ291cyBzcGVj aWFsIHN5bWJvbHMKKzs7OyBpbiBTUkZJIDEyNi4pCis7OzsKKzs7OyBJZiB0aGUgZmlyc3QgYXJn dW1lbnQgaXMgbm90IGEgY29tcGFyYXRvciwgdGhlbiBpdCBoYWQgYmV0dGVyCis7OzsgYmUgYW4g ZXF1YWxpdHkgcHJlZGljYXRlICh3aGljaCBpcyBkZXByZWNhdGVkIGJ5IFNSRkkgMTI1KS4KKzs7 OyBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50IGFuZCBpcyBhIHByb2NlZHVyZSwgdGhl biBpdCdzCis7OzsgYSBoYXNoIGZ1bmN0aW9uICh3aGljaCBpcyBhbGxvd2VkIG9ubHkgZm9yIHRo ZSBkZXByZWNhdGVkIGNhc2UKKzs7OyBpbiB3aGljaCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYW4g ZXF1YWxpdHkgcHJlZGljYXRlKS4gIElmIGEKKzs7OyBzZWNvbmQgYXJndW1lbnQgaXMgbm90IGEg cHJvY2VkdXJlLCB0aGVuIGl0J3Mgc29tZSBraW5kIG9mCis7OzsgaW1wbGVtZW50YXRpb24tZGVw ZW5kZW50IG9wdGlvbmFsIGFyZ3VtZW50LCBhcyBhcmUgYWxsIGFyZ3VtZW50cworOzs7IGJleW9u ZCB0aGUgc2Vjb25kLgorOzs7Cis7OzsgU1JGSSAxMjggZGVmaW5lcyBtYWtlLWVxLWNvbXBhcmF0 b3IsIG1ha2UtZXF2LWNvbXBhcmF0b3IsIGFuZAorOzs7IG1ha2UtZXF1YWwtY29tcGFyYXRvciBw cm9jZWR1cmVzIHdob3NlIGhhc2ggZnVuY3Rpb24gaXMgdGhlCis7OzsgZGVmYXVsdC1oYXNoIHBy b2NlZHVyZSBvZiBTUkZJIDEyOCwgd2hpY2ggaXMgaW5hcHByb3ByaWF0ZQorOzs7IGZvciB1c2Ug d2l0aCBlcT8gYW5kIGVxdj8gdW5sZXNzIHRoZSBvYmplY3QgYmVpbmcgaGFzaGVkIGlzCis7Ozsg bmV2ZXIgbXV0YXRlZC4gIE5laXRoZXIgU1JGSSAxMjUgbm9yIDEyOCBwcm92aWRlIGFueSB3YXkg dG8KKzs7OyBkZWZpbmUgYSBjb21wYXJhdG9yIHdob3NlIGhhc2ggZnVuY3Rpb24gaXMgdHJ1bHkg Y29tcGF0aWJsZQorOzs7IHdpdGggdGhlIHVzZSBvZiBlcT8gb3IgZXF2PyBhcyBhbiBlcXVhbGl0 eSBwcmVkaWNhdGUuCis7OzsKKzs7OyBUaGF0IHdvdWxkIG1ha2UgU1JGSSAxMjUgYWxtb3N0IGFz IGJhZCBhcyBTUkZJIDY5IGlmIG5vdCBmb3IKKzs7OyB0aGUgZm9sbG93aW5nIHBhcmFncmFwaCBv ZiBTUkZJIDEyNToKKzs7OworOzs7ICAgICBJbXBsZW1lbnRhdGlvbnMgYXJlIHBlcm1pdHRlZCB0 byBpZ25vcmUgdXNlci1zcGVjaWZpZWQKKzs7OyAgICAgaGFzaCBmdW5jdGlvbnMgaW4gY2VydGFp biBjaXJjdW1zdGFuY2VzLiBTcGVjaWZpY2FsbHksCis7OzsgICAgIGlmIHRoZSBlcXVhbGl0eSBw cmVkaWNhdGUsIHdoZXRoZXIgcGFzc2VkIGFzIHBhcnQgb2YgYQorOzs7ICAgICBjb21wYXJhdG9y IG9yIGV4cGxpY2l0bHksIGlzIG1vcmUgZmluZS1ncmFpbmVkIChpbiB0aGUKKzs7OyAgICAgc2Vu c2Ugb2YgUjdSUy1zbWFsbCBzZWN0aW9uIDYuMSkgdGhhbiBlcXVhbD8sIHRoZQorOzs7ICAgICBp bXBsZW1lbnRhdGlvbiBpcyBmcmVlIOKAlCBpbmRlZWQsIGlzIGVuY291cmFnZWQg4oCUIHRvCis7 OzsgICAgIGlnbm9yZSB0aGUgdXNlci1zcGVjaWZpZWQgaGFzaCBmdW5jdGlvbiBhbmQgdXNlIHNv bWV0aGluZworOzs7ICAgICBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFRoaXMgYWxsb3dzIHRo ZSB1c2Ugb2YgYWRkcmVzc2VzCis7OzsgICAgIGFzIGhhc2hlcywgaW4gd2hpY2ggY2FzZSB0aGUg a2V5cyBtdXN0IGJlIHJlaGFzaGVkIGlmCis7OzsgICAgIHRoZXkgYXJlIG1vdmVkIGJ5IHRoZSBn YXJiYWdlIGNvbGxlY3Rvci4gU3VjaCBhIGhhc2gKKzs7OyAgICAgZnVuY3Rpb24gaXMgdW5zYWZl IHRvIHVzZSBvdXRzaWRlIHRoZSBjb250ZXh0IG9mCis7OzsgICAgIGltcGxlbWVudGF0aW9uLXBy b3ZpZGVkIGhhc2ggdGFibGVzLiBJdCBjYW4gb2YgY291cnNlIGJlCis7OzsgICAgIGV4cG9zZWQg YnkgYW4gaW1wbGVtZW50YXRpb24gYXMgYW4gZXh0ZW5zaW9uLCB3aXRoCis7OzsgICAgIHN1aXRh YmxlIHdhcm5pbmdzIGFnYWluc3QgaW5hcHByb3ByaWF0ZSB1c2VzLgorOzs7Cis7OzsgVGhhdCBn aXZlcyBpbXBsZW1lbnRhdGlvbnMgcGVybWlzc2lvbiB0byBkbyBzb21ldGhpbmcgbW9yZQorOzs7 IHVzZWZ1bCwgYnV0IHdoZW4gc2hvdWxkIGltcGxlbWVudGF0aW9ucyB0YWtlIGFkdmFudGFnZSBv ZgorOzs7IHRoYXQgcGVybWlzc2lvbj8gIFRoaXMgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgc3Vw ZXJpb3IKKzs7OyBzb2x1dGlvbiBwcm92aWRlZCBieSBTUkZJIDEyNiB3aGVuZXZlcjoKKzs7Owor Ozs7ICAgICBBIGNvbXBhcmF0b3IgaXMgcGFzc2VkIGFzIGZpcnN0IGFyZ3VtZW50IGFuZCBpdHMg ZXF1YWxpdHkKKzs7OyAgICAgcHJlZGljYXRlIGlzIGVxPyBvciBlcXY/LgorOzs7Cis7OzsgICAg IFRoZSBlcT8gb3IgZXF2PyBwcm9jZWR1cmUgaXMgcGFzc2VkIGFzIGZpcnN0IGFyZ3VtZW50Cis7 OzsgICAgICh3aGljaCBpcyBhIGRlcHJlY2F0ZWQgdXNhZ2UpLgorCisoZGVmaW5lIChtYWtlLWhh c2gtdGFibGUgY29tcGFyYXRvci9lcXVpdiAuIHJlc3QpCisgIChpZiAoY29tcGFyYXRvcj8gY29t cGFyYXRvci9lcXVpdikKKyAgICAgIChsZXQgKChlcXVpdiAoY29tcGFyYXRvci1lcXVhbGl0eS1w cmVkaWNhdGUgY29tcGFyYXRvci9lcXVpdikpCisgICAgICAgICAgICAoaGFzaC1mdW5jdGlvbiAo JWNvbXBhcmF0b3ItaGFzaC1mdW5jdGlvbiBjb21wYXJhdG9yL2VxdWl2KSkpCisgICAgICAgICgl bWFrZS1oYXNoLXRhYmxlIGVxdWl2IGhhc2gtZnVuY3Rpb24gcmVzdCkpCisgICAgICAobGV0KiAo KGVxdWl2IGNvbXBhcmF0b3IvZXF1aXYpCisgICAgICAgICAgICAgKGhhc2gtZnVuY3Rpb24gKGlm IChhbmQgKG5vdCAobnVsbD8gcmVzdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHByb2NlZHVyZT8gKGNhciByZXN0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjYXIgcmVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2YpKQor ICAgICAgICAgICAgIChyZXN0IChpZiBoYXNoLWZ1bmN0aW9uIChjZHIgcmVzdCkgcmVzdCkpKQor ICAgICAgICAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVkICdzcmZpLTY5LXN0eWxlOm1ha2UtaGFz aC10YWJsZSkKKyAgICAgICAgKCVtYWtlLWhhc2gtdGFibGUgZXF1aXYgKCVnZXQtaGFzaC10YWJs ZS1oYXNoLWZ1bmN0aW9uIGVxdWl2IGhhc2gtZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc3QpKSkpCisKKyhkZWZpbmUgKCVtYWtlLWhhc2gtdGFibGUgZXF1aXYgaGFzaC1m dW5jdGlvbiBvcHRzKQorICAoJWNoZWNrLW9wdGlvbmFsLWFyZ3VtZW50cyAnbWFrZS1oYXNoLXRh YmxlIG9wdHMpCisgIChsZXQgKCh3ZWFrbmVzcyAoJWdldC1oYXNoLXRhYmxlLXdlYWtuZXNzIG9w dHMpKQorICAgICAgICAoY2FwYWNpdHkgKCVnZXQtaGFzaC10YWJsZS1jYXBhY2l0eSBvcHRzKSkp CisgICAgKGdlbjptYWtlLWhhc2gtdGFibGUgZXF1aXYgaGFzaC1mdW5jdGlvbgorICAgICAgICAg ICAgICAgICAgICAgICAgICM6Y2FwYWNpdHkgY2FwYWNpdHkgIzp3ZWFrbmVzcyB3ZWFrbmVzcykp KQorCisoZGVmaW5lIChoYXNoLXRhYmxlIGNvbXBhcmF0b3IgLiBhcmdzKQorICAobGV0ICgoZXF1 aXYgKGNvbXBhcmF0b3ItZXF1YWxpdHktcHJlZGljYXRlIGNvbXBhcmF0b3IpKQorICAgICAgICAo aGFzaC1mdW5jdGlvbiAoJWNvbXBhcmF0b3ItaGFzaC1mdW5jdGlvbiBjb21wYXJhdG9yKSkpCisg ICAgKGFwcGx5IGdlbjpoYXNoLXRhYmxlIChpZiBoYXNoLWZ1bmN0aW9uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobGlzdCBlcXVpdiBoYXNoLWZ1bmN0aW9uKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXF1aXYpCisgICAgICAgICAgIGFyZ3MpKSkKKworKGRlZmluZSAo aGFzaC10YWJsZS11bmZvbGQgc3RvcD8gbWFwcGVyIHN1Y2Nlc3NvciBzZWVkIGNvbXBhcmF0b3Ig LiByZXN0KQorICAobGV0ICgoZXF1aXYgKGNvbXBhcmF0b3ItZXF1YWxpdHktcHJlZGljYXRlIGNv bXBhcmF0b3IpKQorICAgICAgICAoaGFzaC1mdW5jdGlvbiAoJWNvbXBhcmF0b3ItaGFzaC1mdW5j dGlvbiBjb21wYXJhdG9yKSkKKyAgICAgICAgKHdlYWtuZXNzICglZ2V0LWhhc2gtdGFibGUtd2Vh a25lc3MgcmVzdCkpCisgICAgICAgIChjYXBhY2l0eSAoJWdldC1oYXNoLXRhYmxlLWNhcGFjaXR5 IHJlc3QpKSkKKyAgICAoZ2VuOmhhc2gtdGFibGUtdW5mb2xkIHN0b3A/IG1hcHBlciBzdWNjZXNz b3Igc2VlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXYgaGFzaC1mdW5jdGlvbiAj OndlYWtuZXNzIHdlYWtuZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNhcGFjaXR5 IGNhcGFjaXR5KSkpCisKKyhkZWZpbmUgKGFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0IGNvbXBhcmF0 b3IvZXF1aXYgLiByZXN0KQorICAoaWYgKHByb2NlZHVyZT8gY29tcGFyYXRvci9lcXVpdikKKyAg ICAgIChsZXQqICgoZXF1aXYgY29tcGFyYXRvci9lcXVpdikKKyAgICAgICAgICAgICAoaGFzaC1m dW5jdGlvbiAoYW5kIChwYWlyPyByZXN0KSAocHJvY2VkdXJlPyAoY2FyIHJlc3QpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciByZXN0KSkpCisgICAgICAgICAgICAgKHJl c3QgKGlmIGhhc2gtZnVuY3Rpb24gKGNkciByZXN0KSByZXN0KSkKKyAgICAgICAgICAgICAoaGFz aC1mdW5jdGlvbiAoJWdldC1oYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24gZXF1aXYgaGFzaC1mdW5j dGlvbikpCisgICAgICAgICAgICAgKHdlYWtuZXNzICglZ2V0LWhhc2gtdGFibGUtd2Vha25lc3Mg cmVzdCkpCisgICAgICAgICAgICAgKGNhcGFjaXR5ICglZ2V0LWhhc2gtdGFibGUtY2FwYWNpdHkg cmVzdCkpKQorICAgICAgICAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVkICdzcmZpLTY5LXN0eWxl OmFsaXN0LT5oYXNoLXRhYmxlKQorICAgICAgICAoZ2VuOmFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0 IGVxdWl2IGhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNh cGFjaXR5IGNhcGFjaXR5ICM6d2Vha25lc3Mgd2Vha25lc3MpKQorICAgICAgKGxldCogKChlcXVp diAoY29tcGFyYXRvci1lcXVhbGl0eS1wcmVkaWNhdGUgY29tcGFyYXRvci9lcXVpdikpCisgICAg ICAgICAgICAgKGhhc2gtZnVuY3Rpb24gKCVjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gY29tcGFy YXRvci9lcXVpdikpCisgICAgICAgICAgICAgKHdlYWtuZXNzICglZ2V0LWhhc2gtdGFibGUtd2Vh a25lc3MgcmVzdCkpCisgICAgICAgICAgICAgKGNhcGFjaXR5ICglZ2V0LWhhc2gtdGFibGUtY2Fw YWNpdHkgcmVzdCkpKQorICAgICAgICAoZ2VuOmFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0IGVxdWl2 IGhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNhcGFjaXR5 IGNhcGFjaXR5ICM6d2Vha25lc3Mgd2Vha25lc3MpKSkpCisKKwwKKzs7OzsgQWNjZXNzaW5nIHRh YmxlIGl0ZW1zCisKKyhkZWZpbmUgaGFzaC10YWJsZS1yZWYgZ2VuOmhhc2gtdGFibGUtcmVmKQor KGRlZmluZSBoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGdlbjpoYXNoLXRhYmxlLXJlZi9kZWZhdWx0 KQorCisMCis7OzsgUHJlZGljYXRlcy4KKworKGRlZmluZSBoYXNoLXRhYmxlPyBnZW46aGFzaC10 YWJsZT8pCisoZGVmaW5lIGhhc2gtdGFibGUtZW1wdHk/IGdlbjpoYXNoLXRhYmxlLWVtcHR5PykK KyhkZWZpbmUgaGFzaC10YWJsZS1jb250YWlucz8gZ2VuOmhhc2gtdGFibGUtY29udGFpbnM/KQor KGRlZmluZSBoYXNoLXRhYmxlLW11dGFibGU/IGdlbjpoYXNoLXRhYmxlLW11dGFibGU/KQorCiso ZGVmaW5lIChoYXNoLXRhYmxlPT8gdmFsdWUtY29tcGFyYXRvciBodDEgaHQyKQorICAoZ2VuOmhh c2gtdGFibGU9PyAoY29tcGFyYXRvci1lcXVhbGl0eS1wcmVkaWNhdGUgdmFsdWUtY29tcGFyYXRv cikKKyAgICAgICAgICAgICAgICAgICAgaHQxIGh0MikpCisKKwwKKzs7OyBNdXRhdG9ycy4KKwor KGRlZmluZSBoYXNoLXRhYmxlLXNldCEgZ2VuOmhhc2gtdGFibGUtc2V0ISkKKyhkZWZpbmUgaGFz aC10YWJsZS1kZWxldGUhIGdlbjpoYXNoLXRhYmxlLWRlbGV0ZSEpCisoZGVmaW5lIGhhc2gtdGFi bGUtaW50ZXJuISBnZW46aGFzaC10YWJsZS1pbnRlcm4hKQorKGRlZmluZSBoYXNoLXRhYmxlLXVw ZGF0ZSEgZ2VuOmhhc2gtdGFibGUtdXBkYXRlISkKKyhkZWZpbmUgaGFzaC10YWJsZS11cGRhdGUh L2RlZmF1bHQgZ2VuOmhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0KQorKGRlZmluZSBoYXNoLXRh YmxlLXBvcCEgZ2VuOmhhc2gtdGFibGUtcG9wISkKKyhkZWZpbmUgKGhhc2gtdGFibGUtY2xlYXIh IGh0KSAoZ2VuOmhhc2gtdGFibGUtY2xlYXIhIGh0KSkKKworDAorOzsgVGhlIHdob2xlIGhhc2gg dGFibGUuCisKKyhkZWZpbmUgaGFzaC10YWJsZS1zaXplIGdlbjpoYXNoLXRhYmxlLXNpemUpCiso ZGVmaW5lIGhhc2gtdGFibGUta2V5cyBnZW46aGFzaC10YWJsZS1rZXlzKQorKGRlZmluZSBoYXNo LXRhYmxlLXZhbHVlcyBnZW46aGFzaC10YWJsZS12YWx1ZXMpCisoZGVmaW5lIGhhc2gtdGFibGUt ZW50cmllcyBnZW46aGFzaC10YWJsZS1lbnRyaWVzKQorKGRlZmluZSBoYXNoLXRhYmxlLWZpbmQg Z2VuOmhhc2gtdGFibGUtZmluZCkKKyhkZWZpbmUgaGFzaC10YWJsZS1jb3VudCBnZW46aGFzaC10 YWJsZS1jb3VudCkKKworDAorOzs7IE1hcHBpbmcgYW5kIGZvbGRpbmcuCisKKyhkZWZpbmUgaGFz aC10YWJsZS1tYXAtPmxpc3QgZ2VuOmhhc2gtdGFibGUtbWFwLT5saXN0KQorKGRlZmluZSBoYXNo LXRhYmxlLWZvci1lYWNoIGdlbjpoYXNoLXRhYmxlLWZvci1lYWNoKQorKGRlZmluZSBoYXNoLXRh YmxlLXBydW5lISBnZW46aGFzaC10YWJsZS1wcnVuZSEpCisoZGVmaW5lIGhhc2gtdGFibGUtbWFw ISBnZW46aGFzaC10YWJsZS1tYXAhKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLW1hcCBwcm9jIGNv bXBhcmF0b3IgaHQpCisgIChsZXQgKChlcXVpdiAoY29tcGFyYXRvci1lcXVhbGl0eS1wcmVkaWNh dGUgY29tcGFyYXRvcikpCisgICAgICAgIChoYXNoLWZ1bmN0aW9uICglY29tcGFyYXRvci1oYXNo LWZ1bmN0aW9uIGNvbXBhcmF0b3IpKSkKKyAgICAoZ2VuOmhhc2gtdGFibGUtbWFwIHByb2MgaHQg ZXF1aXYgaGFzaC1mdW5jdGlvbikpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWZvbGQgcHJvYyBp bml0IGh0KQorICAoaWYgKGhhc2gtdGFibGU/IHByb2MpCisgICAgICAoYmVnaW4gKGlzc3VlLXdh cm5pbmctZGVwcmVjYXRlZCAnc3JmaS02OS1zdHlsZTpoYXNoLXRhYmxlLWZvbGQpCisgICAgICAg ICAgICAgKGhhc2gtdGFibGUtZm9sZCBpbml0IGh0IHByb2MpKQorICAgICAgKGdlbjpoYXNoLXRh YmxlLWZvbGQgcHJvYyBpbml0IGh0KSkpCisKKworDAorOzs7IENvcHlpbmcgYW5kIGNvbnZlcnNp b24uCisKKyhkZWZpbmUgaGFzaC10YWJsZS0+YWxpc3QgZ2VuOmhhc2gtdGFibGUtPmFsaXN0KQor CisoZGVmaW5lKiAoaGFzaC10YWJsZS1jb3B5IGh0ICM6b3B0aW9uYWwgbXV0YWJsZSkKKyAgKGdl bjpoYXNoLXRhYmxlLWNvcHkgaHQgIzptdXRhYmxlIG11dGFibGUpKQorCisoZGVmaW5lIChoYXNo LXRhYmxlLWVtcHR5LWNvcHkgaHQpCisgIChnZW46aGFzaC10YWJsZS1lbXB0eS1jb3B5IGh0KSkK KworDAorOzs7IEhhc2ggdGFibGVzIGFzIHNldHMuCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtdW5p b24hIGh0MSBodDIpCisgICh1bmxlc3MgKGVxPyAoZ2VuOmhhc2gtdGFibGUtZXF1aXZhbGVuY2Ut ZnVuY3Rpb24gaHQxKQorICAgICAgICAgICAgICAgKGdlbjpoYXNoLXRhYmxlLWVxdWl2YWxlbmNl LWZ1bmN0aW9uIGh0MikpCisgICAgKGVycm9yICJIYXNoIHRhYmxlcyBoYXZlIGRpZmZlcmVudCBl cXVpdmFsZW5jZSBmdW5jdGlvbnMiIGh0MSBodDIpKQorICAoZ2VuOmhhc2gtdGFibGUtdW5pb24h IGh0MSBodDIpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWludGVyc2VjdGlvbiEgaHQxIGh0MikK KyAgKHVubGVzcyAoZXE/IChnZW46aGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBodDEp CisgICAgICAgICAgICAgICAoZ2VuOmhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQy KSkKKyAgICAoZXJyb3IgIkhhc2ggdGFibGVzIGhhdmUgZGlmZmVyZW50IGVxdWl2YWxlbmNlIGZ1 bmN0aW9ucyIgaHQxIGh0MikpCisgIChnZW46aGFzaC10YWJsZS1pbnRlcnNlY3Rpb24hIGh0MSBo dDIpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWRpZmZlcmVuY2UhIGh0MSBodDIpCisgICh1bmxl c3MgKGVxPyAoZ2VuOmhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQxKQorICAgICAg ICAgICAgICAgKGdlbjpoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0MikpCisgICAg KGVycm9yICJIYXNoIHRhYmxlcyBoYXZlIGRpZmZlcmVudCBlcXVpdmFsZW5jZSBmdW5jdGlvbnMi IGh0MSBodDIpKQorICAoZ2VuOmhhc2gtdGFibGUtZGlmZmVyZW5jZSEgaHQxIGh0MikpCisKKyhk ZWZpbmUgKGhhc2gtdGFibGUteG9yISBodDEgaHQyKQorICAodW5sZXNzIChlcT8gKGdlbjpoYXNo LXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0MSkKKyAgICAgICAgICAgICAgIChnZW46aGFz aC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBodDIpKQorICAgIChlcnJvciAiSGFzaCB0YWJs ZXMgaGF2ZSBkaWZmZXJlbnQgZXF1aXZhbGVuY2UgZnVuY3Rpb25zIiBodDEgaHQyKSkKKyAgKGdl bjpoYXNoLXRhYmxlLXhvciEgaHQxIGh0MikpCisKKworOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworOzs7Cis7OzsgVGhlIGZv bGxvd2luZyBwcm9jZWR1cmVzIGFyZSBkZXByZWNhdGVkIGJ5IFNSRkkgMTI1LCBidXQgbXVzdAor Ozs7IGJlIGV4cG9ydGVkIG5vbmV0aGVsZXNzLgorOzs7Cis7OzsgUHJvZ3JhbXMgdGhhdCBpbXBv cnQgdGhlIChzcmZpIDEyNSkgbGlicmFyeSBtdXN0IHJlbmFtZSB0aGUKKzs7OyBkZXByZWNhdGVk IHN0cmluZy1oYXNoIGFuZCBzdHJpbmctY2ktaGFzaCBwcm9jZWR1cmVzIHRvIGF2b2lkCis7Ozsg Y29uZmxpY3Qgd2l0aCB0aGUgc3RyaW5nLWhhc2ggYW5kIHN0cmluZy1jaS1oYXNoIHByb2NlZHVy ZXMKKzs7OyBleHBvcnRlZCBieSBTUkZJIDEyNiBhbmQgU1JGSSAxMjguCis7OzsKKzs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsK KworKGRlZmluZSAoZGVwcmVjYXRlZDpoYXNoIG9iaiAuIHJlc3QpCisgIChpc3N1ZS13YXJuaW5n LWRlcHJlY2F0ZWQgJ2hhc2gpCisgIChhcHBseSBnZW46aGFzaCBvYmogcmVzdCkpCisKKyhkZWZp bmUgKGRlcHJlY2F0ZWQ6c3RyaW5nLWhhc2ggb2JqIC4gcmVzdCkKKyAgKGlzc3VlLXdhcm5pbmct ZGVwcmVjYXRlZCAnc3JmaS0xMjU6c3RyaW5nLWhhc2gpCisgIChhcHBseSBzdHJpbmctaGFzaCBv YmogcmVzdCkpCisKKyhkZWZpbmUgKGRlcHJlY2F0ZWQ6c3RyaW5nLWNpLWhhc2ggb2JqIC4gcmVz dCkKKyAgKGlzc3VlLXdhcm5pbmctZGVwcmVjYXRlZCAnc3JmaS0xMjU6c3RyaW5nLWNpLWhhc2gp CisgIChhcHBseSBzdHJpbmctY2ktaGFzaCBvYmogcmVzdCkpCisKKyhkZWZpbmUgKGRlcHJlY2F0 ZWQ6aGFzaC1ieS1pZGVudGl0eSBvYmogLiByZXN0KQorICAoaXNzdWUtd2FybmluZy1kZXByZWNh dGVkICdoYXNoLWJ5LWlkZW50aXR5KQorICAoYXBwbHkgZ2VuOmhhc2gtYnktaWRlbnRpdHkgb2Jq IHJlc3QpKQorCisoZGVmaW5lIChkZXByZWNhdGVkOmhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVu Y3Rpb24gaHQpCisgIChpc3N1ZS13YXJuaW5nLWRlcHJlY2F0ZWQgJ2hhc2gtdGFibGUtZXF1aXZh bGVuY2UtZnVuY3Rpb24pCisgIChnZW46aGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBo dCkpCisKKyhkZWZpbmUgKGRlcHJlY2F0ZWQ6aGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uIGh0KQor ICAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVkICdoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24pCisg IChnZW46aGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uIGh0KSkKKworKGRlZmluZSAoZGVwcmVjYXRl ZDpoYXNoLXRhYmxlLWV4aXN0cz8gaHQga2V5KQorICAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVk ICdoYXNoLXRhYmxlLWV4aXN0cz8pCisgIChnZW46aGFzaC10YWJsZS1jb250YWlucz8gaHQga2V5 KSkKKworKGRlZmluZSAoZGVwcmVjYXRlZDpoYXNoLXRhYmxlLXdhbGsgaHQgcHJvYykKKyAgKGlz c3VlLXdhcm5pbmctZGVwcmVjYXRlZCAnaGFzaC10YWJsZS13YWxrKQorICAoZ2VuOmhhc2gtdGFi bGUtZm9yLWVhY2ggcHJvYyBodCkpCisKKyhkZWZpbmUgKGRlcHJlY2F0ZWQ6aGFzaC10YWJsZS1t ZXJnZSEgaHQxIGh0MikKKyAgKGlzc3VlLXdhcm5pbmctZGVwcmVjYXRlZCAnaGFzaC10YWJsZS1t ZXJnZSEpCisgIChnZW46aGFzaC10YWJsZS11bmlvbiEgaHQxIGh0MikpCisKKzs7IGVvZgpkaWZm IC0tZ2l0IGEvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbSBiL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0K aW5kZXggYTJmNzNiMzI5Li4zODUzN2FhYWMgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvTWFrZWZp bGUuYW0KKysrIGIvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQpAQCAtMTYyLDYgKzE2Miw3IEBAIFND TV9URVNUUyA9IHRlc3RzLzAwLWluaXRpYWwtZW52LnRlc3QJCVwKIAkgICAgdGVzdHMvc3JmaS05 OC50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZpLTEwNS50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZp LTExMS50ZXN0CQkJXAorCSAgICB0ZXN0cy9zcmZpLTEyNS50ZXN0CQkJXAogCSAgICB0ZXN0cy9z cmZpLTEyNi50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZpLTEyOC50ZXN0CQkJXAogCSAgICB0ZXN0 cy9zcmZpLTQudGVzdAkJCVwKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjUu dGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjUudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAuLmU1YmE5NWVkMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qtc3Vp dGUvdGVzdHMvc3JmaS0xMjUudGVzdApAQCAtMCwwICsxLDg2MCBAQAorOzs7OyBzcmZpLTEyNS50 ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBTUkZJIDEyNSAtKi0gc2NoZW1lIC0qLQorOzs7OworOzs7 OyAJQ29weXJpZ2h0IChDKSAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorOzs7 OworOzs7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCis7Ozs7IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7OzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7Ozs7IHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OzsKKzs7Ozsg VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCis7Ozs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCis7Ozs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCis7Ozs7IExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7Ozs7Cis7Ozs7IFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7Ozsg TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorOzs7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisKKzs7OyBUaGUgZm9sbG93aW5n IHRlc3RzIGFyZSB0aGUgdGVzdHMgZnJvbSBTUkZJLTEyNSByZWZlcmVuY2UKKzs7OyBpbXBsZW1l bnRhdGlvbiBwb3J0ZWQgdG8gR3VpbGUgdGVzdCBzdWl0ZS4KKworOzs7IENvcHlyaWdodCAoQykg V2lsbGlhbSBEIENsaW5nZXIgMjAxNS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKzs7OworOzs7IFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u Cis7Ozsgb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24KKzs7OyBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLAorOzs7IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsCis7OzsgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwKKzs7OyBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLAorOzs7IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorOzs7Cis7OzsgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2Ugc2hhbGwgYmUKKzs7OyBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKzs7OworOzs7IFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorOzs7IEVY UFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRgorOzs7IE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKzs7OyBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorOzs7IENMQUlNLCBE QU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsCis7OzsgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUKKzs7OyBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4KKworOzs7IENvbWVudGFyeSBmcm9tIHN0YW5kYXJkIFNSRkkg MTI1IHRlc3RzOgorOzs7Cis7OzsgVGhpcyBpcyBhIHZlcnkgc2hhbGxvdyBzYW5pdHkgdGVzdCBm b3IgaGFzaCB0YWJsZXMuCis7OzsKKzs7OyBUZXN0cyBtYXJrZWQgYnkgYSAiRklYTUU6IGdsYXNz LWJveCIgY29tbWVudCB0ZXN0IGJlaGF2aW9yIG9mIHRoZQorOzs7IHJlZmVyZW5jZSBpbXBsZW1l bnRhdGlvbiB0aGF0IGlzIG5vdCByZXF1aXJlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi4KKworKGRl ZmluZS1tb2R1bGUgKHRlc3Qtc3JmaS0xMjUpCisgICM6ZHVwbGljYXRlcyAobGFzdCkKKyAgIzp1 c2UtbW9kdWxlICh0ZXN0LXN1aXRlIGxpYikKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTI4 KQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMjUpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBz cmZpLTEpCisgICM6dXNlLW1vZHVsZSAocm5ycyBieXRldmVjdG9ycykKKyAgIzp1c2UtbW9kdWxl ICgocm5ycyBiYXNlKSAjOnNlbGVjdCAoc3ltYm9sPT8pKQorICAjOnVzZS1tb2R1bGUgKChybnJz KSAjOnNlbGVjdCAobGlzdC1zb3J0IGd1YXJkKSkpCisKKyhkZWZpbmUgKGJ5dGV2ZWN0b3IgLiBh cmdzKQorICAodTgtbGlzdC0+Ynl0ZXZlY3RvciBhcmdzKSkKKworKGRlZmluZSBkZWZhdWx0LWNv bXBhcmF0b3IgKG1ha2UtZGVmYXVsdC1jb21wYXJhdG9yKSkKKworKGRlZmluZSBudW1iZXItY29t cGFyYXRvcgorICAobWFrZS1jb21wYXJhdG9yIHJlYWw/ID0gPCAobGFtYmRhICh4KSAoaW5leGFj dC0+ZXhhY3QgKGFicyAocm91bmQgeCkpKSkpKQorCisoZGVmaW5lIHN0cmluZy1jb21wYXJhdG9y CisgIChtYWtlLWNvbXBhcmF0b3Igc3RyaW5nPyBzdHJpbmc9PyBzdHJpbmc8PyBzdHJpbmctaGFz aCkpCisKKyhkZWZpbmUgc3RyaW5nLWNpLWNvbXBhcmF0b3IKKyAgKG1ha2UtY29tcGFyYXRvciBz dHJpbmc/IHN0cmluZy1jaT0/IHN0cmluZy1jaTw/IHN0cmluZy1jaS1oYXNoKSkKKworKGRlZmlu ZSBlcS1jb21wYXJhdG9yIChtYWtlLWVxLWNvbXBhcmF0b3IpKQorCisoZGVmaW5lIGVxdi1jb21w YXJhdG9yIChtYWtlLWVxdi1jb21wYXJhdG9yKSkKKworOzs7IFJldHVybnMgYW4gaW1tdXRhYmxl IGhhc2ggdGFibGUuCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtdGFidWxhdGUgY29tcGFyYXRvciBu IHByb2MpCisgIChsZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIGNvbXBhcmF0b3IpKSkKKyAgICAo ZG8gKChpIDAgKCsgaSAxKSkpCisgICAgICAgICgoPSBpIG4pCisgICAgICAgICAoaGFzaC10YWJs ZS1jb3B5IGh0KSkKKyAgICAgIChjYWxsLXdpdGgtdmFsdWVzCisgICAgICAgICAgKGxhbWJkYSAo KQorICAgICAgICAgICAgKHByb2MgaSkpCisgICAgICAgIChsYW1iZGEgKGtleSB2YWwpCisgICAg ICAgICAgKGhhc2gtdGFibGUtc2V0ISBodCBrZXkgdmFsKSkpKSkpCisKKzs7OyBDb25zdHJ1Y3Rv cnMuCisKKyhkZWZpbmUgaHQtZGVmYXVsdCAobWFrZS1oYXNoLXRhYmxlIGRlZmF1bHQtY29tcGFy YXRvcikpCisKKyhkZWZpbmUgaHQtZXEgKG1ha2UtaGFzaC10YWJsZSBlcS1jb21wYXJhdG9yICdy YW5kb20tYXJndW1lbnQgImFub3RoZXIiKSkKKworKGRlZmluZSBodC1lcXYgKG1ha2UtaGFzaC10 YWJsZSBlcXYtY29tcGFyYXRvcikpCisKKyhkZWZpbmUgaHQtZXEyIChtYWtlLWhhc2gtdGFibGUg ZXE/KSkKKworKGRlZmluZSBodC1lcXYyIChtYWtlLWhhc2gtdGFibGUgZXF2PykpCisKKyhkZWZp bmUgaHQtZXF1YWwgKG1ha2UtaGFzaC10YWJsZSBlcXVhbD8pKQorCisoZGVmaW5lIGh0LXN0cmlu ZyAobWFrZS1oYXNoLXRhYmxlIHN0cmluZz0/KSkKKworKGRlZmluZSBodC1zdHJpbmctY2kgKG1h a2UtaGFzaC10YWJsZSBzdHJpbmctY2k9PykpCisKKyhkZWZpbmUgaHQtc3ltYm9sIChtYWtlLWhh c2gtdGFibGUgc3ltYm9sPT8pKSAgICA7IEZJWE1FOiBnbGFzcy1ib3gKKworKGRlZmluZSBodC1m aXhudW0gKG1ha2UtaGFzaC10YWJsZSA9IGFicykpCisKKzs7IFNwZWMgc2F5cyBIQVNILVRBQkxF IHJldHVybnMgYW4gaW1tdXRhYmxlIGhhc2ggdGFibGUsIHNvIHdlIHB1dCBhCis7OyBIQVNILVRB QkxFLUNPUFkgaGVyZQorKGRlZmluZSBodC1kZWZhdWx0MgorICAoaGFzaC10YWJsZS1jb3B5Cisg ICAoaGFzaC10YWJsZSBkZWZhdWx0LWNvbXBhcmF0b3IgJ2ZvbyAnYmFyIDEwMS4zICJmZXZlciIg Jyh4IHkgeikgJyMoKSkKKyAgICN0KSkKKworKGRlZmluZSBodC1maXhudW0yCisgIChoYXNoLXRh YmxlLXRhYnVsYXRlIG51bWJlci1jb21wYXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgIDEw CisgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGkpICh2YWx1ZXMgKCogaSBpKSBpKSkp KQorCisoZGVmaW5lIGh0LXN0cmluZzIKKyAgKGhhc2gtdGFibGUtdW5mb2xkIChsYW1iZGEgKHMp ICg9IDAgKHN0cmluZy1sZW5ndGggcykpKQorICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAo cykgKHZhbHVlcyBzIChzdHJpbmctbGVuZ3RoIHMpKSkKKyAgICAgICAgICAgICAgICAgICAgIChs YW1iZGEgKHMpIChzdWJzdHJpbmcgcyAwICgtIChzdHJpbmctbGVuZ3RoIHMpIDEpKSkKKyAgICAg ICAgICAgICAgICAgICAgICJwcmVmaXhlcyIKKyAgICAgICAgICAgICAgICAgICAgIHN0cmluZy1j b21wYXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAnaWdub3JlZDEgJ2lnbm9yZWQyICJpZ25v cmVkMyIgJyMoaWdub3JlZCA0IDUpKSkKKworKGRlZmluZSBodC1zdHJpbmctY2kyCisgIChhbGlz dC0+aGFzaC10YWJsZSAnKCgiIiAuIDApICgiTWFyeSIgLiA0KSAoIlBhdWwiIC4gNCkgKCJQZXRl ciIgLiA1KSkKKyAgICAgICAgICAgICAgICAgICAgIHN0cmluZy1jaS1jb21wYXJhdG9yCisgICAg ICAgICAgICAgICAgICAgICAiaWdub3JlZDEiICdpZ25vcmVkMikpCisKKyhkZWZpbmUgaHQtc3lt Ym9sMgorICAoYWxpc3QtPmhhc2gtdGFibGUgJygobWFyeSAuIHRyYXZlcnMpIChub2VsIC4gc3Rv b2tleSkgKHBldGVyIC4geWFycm93KSkKKyAgICAgICAgICAgICAgICAgICAgIGVxPykpCisKKyhk ZWZpbmUgaHQtZXF1YWwyCisgIChhbGlzdC0+aGFzaC10YWJsZSAnKCgoZWR3YXJkKSAuIGFiYmV5 KQorICAgICAgICAgICAgICAgICAgICAgICAoKGRhc2hpZWxsKSAuIGhhbW1ldHQpCisgICAgICAg ICAgICAgICAgICAgICAgICgoZWR3YXJkKSAuIHRlYWNoKQorICAgICAgICAgICAgICAgICAgICAg ICAoKG1hcmspIC4gdHdhaW4pKQorICAgICAgICAgICAgICAgICAgICAgZXF1YWw/CisgICAgICAg ICAgICAgICAgICAgICAoY29tcGFyYXRvci1oYXNoLWZ1bmN0aW9uIGRlZmF1bHQtY29tcGFyYXRv cikpKQorCisoZGVmaW5lIHRlc3QtdGFibGVzCisgIChsaXN0IGh0LWRlZmF1bHQgICBodC1kZWZh dWx0MiAgIDsgaW5pdGlhbCBrZXlzOiBmb28sIDEwMS4zLCAoeCB5IHopCisgICAgICAgIGh0LWVx ICAgICAgICBodC1lcTIgICAgICAgIDsgaW5pdGlhbGx5IGVtcHR5CisgICAgICAgIGh0LWVxdiAg ICAgICBodC1lcXYyICAgICAgIDsgaW5pdGlhbGx5IGVtcHR5CisgICAgICAgIGh0LWVxdWFsICAg ICBodC1lcXVhbDIgICAgIDsgaW5pdGlhbCBrZXlzOiAoZWR3YXJkKSwgKGRhc2hpZWxsKSwgKG1h cmspCisgICAgICAgIGh0LXN0cmluZyAgICBodC1zdHJpbmcyICAgIDsgaW5pdGlhbCBrZXlzOiAi cCwgInByIiwgLi4uLCAicHJlZml4ZXMiCisgICAgICAgIGh0LXN0cmluZy1jaSBodC1zdHJpbmct Y2kyIDsgaW5pdGlhbCBrZXlzOiAiIiwgIk1hcnkiLCAiUGF1bCIsICJQZXRlciIKKyAgICAgICAg aHQtc3ltYm9sICAgIGh0LXN5bWJvbDIgICAgOyBpbml0aWFsIGtleXM6IG1hcnksIG5vZWwsIHBl dGVyCisgICAgICAgIGh0LWZpeG51bSAgICBodC1maXhudW0yKSkgIDsgaW5pdGlhbCBrZXlzOiAw LCAxLCA0LCA5LCAuLi4sIDgxCisKKworKHdpdGgtdGVzdC1wcmVmaXggIlNSRkktMTI1IgorCisg ICh3aXRoLXRlc3QtcHJlZml4ICJwcmVkaWNhdGVzIgorCisgICAgKHBhc3MtaWYtZXF1YWwgImhh c2gtdGFibGU/IGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgKGFwcGVuZCAnKCNmICNmKSAo bWFwIChsYW1iZGEgKHgpICN0KSB0ZXN0LXRhYmxlcykpCisgICAgICAobWFwIGhhc2gtdGFibGU/ CisgICAgICAgICAgIChjb25zICcjKCkKKyAgICAgICAgICAgICAgICAgKGNvbnMgZGVmYXVsdC1j b21wYXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgIHRlc3QtdGFibGVzKSkpKQorCisgICAg KHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtY29udGFpbnM/IGZ1bmN0aW9ucyBwcm9wZXJseSIK KyAgICAgICAgJygjZiAjdCAjZiAjZiAjZiAjZiAjZiAjdCAjZiAjdCAjZiAjdCAjZiAjdCAjZiAj dCkKKyAgICAgIChtYXAgaGFzaC10YWJsZS1jb250YWlucz8KKyAgICAgICAgICAgdGVzdC10YWJs ZXMKKyAgICAgICAgICAgJyhmb28gMTAxLjMKKyAgICAgICAgICAgICAgICAgeCAieSIKKyAgICAg ICAgICAgICAgICAgKDE0IDE1KSAjXG5ld2xpbmUKKyAgICAgICAgICAgICAgICAgKGVkd2FyZCkg KG1hcmspCisgICAgICAgICAgICAgICAgICJwIiAicHJlZiIKKyAgICAgICAgICAgICAgICAgIm1p a2UiICJQQVVMIgorICAgICAgICAgICAgICAgICBqYW5lIG5vZWwKKyAgICAgICAgICAgICAgICAg MCA0KSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1jb250YWlucz8gZnVuY3Rp b25zIHByb3Blcmx5IgorICAgICAgICAobWFwIChsYW1iZGEgKHgpICNmKSB0ZXN0LXRhYmxlcykK KyAgICAgIChtYXAgaGFzaC10YWJsZS1jb250YWlucz8KKyAgICAgICAgICAgdGVzdC10YWJsZXMK KyAgICAgICAgICAgYCgsKGJ5dGV2ZWN0b3IpIDQ3LjkKKyAgICAgICAgICAgICAnIygpICcoKQor ICAgICAgICAgICAgIGZvbyBiYXIKKyAgICAgICAgICAgICAxOSAoaGVucnkpCisgICAgICAgICAg ICAgInAiICJwZXJwIgorICAgICAgICAgICAgICJtaWtlIiAiTm9lbCIKKyAgICAgICAgICAgICBq YW5lIHBhdWwKKyAgICAgICAgICAgICAwIDUpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNo LXRhYmxlLWVtcHR5PyBmdW5jdGlvbnMgcHJvcGVybHkiCisgICAgICAgICcoI3QgI2YgI3QgI3Qg I3QgI3QgI3QgI2YgI3QgI2YgI3QgI2YgI3QgI2YgI3QgI2YpCisgICAgICAobWFwIGhhc2gtdGFi bGUtZW1wdHk/IHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxl PT8gaXMgcmVmbGVjdGl2ZSIKKyAgICAgICAgKG1hcCAobGFtYmRhICh4KSAjdCkgdGVzdC10YWJs ZXMpCisgICAgICAobWFwIChsYW1iZGEgKGh0MSBodDIpIChoYXNoLXRhYmxlPT8gZGVmYXVsdC1j b21wYXJhdG9yIGh0MSBodDIpKQorICAgICAgICAgICB0ZXN0LXRhYmxlcworICAgICAgICAgICB0 ZXN0LXRhYmxlcykpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZT0/IGZ1bmN0aW9u cyBwcm9wZXJseSIKKyAgICAgICAgJygjZiAjZiAjdCAjdCAjdCAjdCAjZiAjZiAjZiAjZiAjZiAj ZiAjZiAjZiAjZiAjZikKKyAgICAgIChtYXAgKGxhbWJkYSAoaHQxIGh0MikgKGhhc2gtdGFibGU9 PyBkZWZhdWx0LWNvbXBhcmF0b3IgaHQxIGh0MikpCisgICAgICAgICAgIHRlc3QtdGFibGVzCisg ICAgICAgICAgIChkbyAoKHRhYmxlcyAocmV2ZXJzZSB0ZXN0LXRhYmxlcykgKGNkZHIgdGFibGVz KSkKKyAgICAgICAgICAgICAgICAocmV2ICcoKSAoY29ucyAoY2FyIHRhYmxlcykgKGNvbnMgKGNh ZHIgdGFibGVzKSByZXYpKSkpCisgICAgICAgICAgICAgICAoKG51bGw/IHRhYmxlcykKKyAgICAg ICAgICAgICAgICByZXYpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1tdXRh YmxlPyBmdW5jdGlvbnMgcHJvcGVybHkgb24gbXV0YWJsZSBoYXNoIHRhYmxlcyAxIgorICAgICAg ICAnKCN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICNmKQorICAg ICAgKG1hcCBoYXNoLXRhYmxlLW11dGFibGU/IHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlm LWVxdWFsICJoYXNoLXRhYmxlLW11dGFibGU/IGZ1bmN0aW9ucyBwcm9wZXJseSBvbiBpbW11dGFi bGUgaGFzaCB0YWJsZXMiCisgICAgICAgIChtYXAgKGxhbWJkYSAoeCkgI2YpIHRlc3QtdGFibGVz KQorICAgICAgKG1hcCBoYXNoLXRhYmxlLW11dGFibGU/IChtYXAgaGFzaC10YWJsZS1jb3B5IHRl c3QtdGFibGVzKSkpCisKKyAgICAocGFzcy1pZiAiaGFzaC10YWJsZS1tdXRhYmxlPyBmdW5jdGlv bnMgcHJvcGVybHkgb24gbXV0YWJsZSBoYXNoIHRhYmxlcyAyIgorICAgICAgKGhhc2gtdGFibGUt bXV0YWJsZT8gKGhhc2gtdGFibGUtY29weSBodC1maXhudW0yICN0KSkpKQorCisgICh3aXRoLXRl c3QtcHJlZml4ICJhY2Nlc3NvcnMiCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1y ZWYgd2hlbiBrZXkgaXMgbm90IGluIHRhYmxlIDEiCisgICAgICAgIChtYXAgKGxhbWJkYSAoaHQp ICdlcnIpIHRlc3QtdGFibGVzKQorICAgICAgKG1hcCAobGFtYmRhIChodCkKKyAgICAgICAgICAg ICAoZ3VhcmQgKGV4bgorICAgICAgICAgICAgICAgICAgICAgKGVsc2UgJ2VycikpCisgICAgICAg ICAgICAgICAoaGFzaC10YWJsZS1yZWYgaHQgJ25vdC1hLWtleSkpKQorICAgICAgICAgICB0ZXN0 LXRhYmxlcykpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1yZWYgd2hlbiBrZXkg aXMgbm90IGluIHRhYmxlIDIiCisgICAgICAgIChtYXAgKGxhbWJkYSAoaHQpICdlcnIpIHRlc3Qt dGFibGVzKQorICAgICAgKG1hcCAobGFtYmRhIChodCkKKyAgICAgICAgICAgICAoZ3VhcmQgKGV4 bgorICAgICAgICAgICAgICAgICAgICAgKGVsc2UgJ2VycikpCisgICAgICAgICAgICAgICAoaGFz aC10YWJsZS1yZWYgaHQgJ25vdC1hLWtleSAobGFtYmRhICgpICdlcnIpKSkpCisgICAgICAgICAg IHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXJlZiB3aGVu IGtleSBpcyBub3QgaW4gdGFibGUgMyIKKyAgICAgICAgKG1hcCAobGFtYmRhIChodCkgJ2Vycikg dGVzdC10YWJsZXMpCisgICAgICAobWFwIChsYW1iZGEgKGh0KQorICAgICAgICAgICAgIChndWFy ZCAoZXhuCisgICAgICAgICAgICAgICAgICAgICAoZWxzZSAnZXJyKSkKKyAgICAgICAgICAgICAg IChoYXNoLXRhYmxlLXJlZiBodCAnbm90LWEta2V5IChsYW1iZGEgKCkgJ2VycikgdmFsdWVzKSkp CisgICAgICAgICAgIHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRh YmxlLXJlZiBmdW5jdGlvbnMgcHJvcGVybHkiCisgICAgICAgICcoZXJyICJmZXZlciIgZXJyIGVy ciBlcnIgZXJyIGVyciB0d2FpbiBlcnIgNCBlcnIgNCBlcnIgc3Rvb2tleSBlcnIgMikKKyAgICAg IChtYXAgKGxhbWJkYSAoaHQga2V5KQorICAgICAgICAgICAgIChndWFyZCAoZXhuCisgICAgICAg ICAgICAgICAgICAgICAoZWxzZSAnZXJyKSkKKyAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLXJl ZiBodCBrZXkpKSkKKyAgICAgICAgICAgdGVzdC10YWJsZXMKKyAgICAgICAgICAgJyhmb28gMTAx LjMKKyAgICAgICAgICAgICAgICAgeCAieSIKKyAgICAgICAgICAgICAgICAgKDE0IDE1KSAjXG5l d2xpbmUKKyAgICAgICAgICAgICAgICAgKGVkd2FyZCkgKG1hcmspCisgICAgICAgICAgICAgICAg ICJwIiAicHJlZiIKKyAgICAgICAgICAgICAgICAgIm1pa2UiICJQQVVMIgorICAgICAgICAgICAg ICAgICBqYW5lIG5vZWwKKyAgICAgICAgICAgICAgICAgMCA0KSkpCisKKyAgICAocGFzcy1pZi1l cXVhbCAiaGFzaC10YWJsZS1yZWYgYWNjZXB0cyBGQUlMVVJFIGFuZCBmdW5jdGlvbnMgcHJvcGVy bHkiCisgICAgICAgICcoZWggImZldmVyIiBlaCBlaCBlaCBlaCBlaCB0d2FpbiBlaCA0IGVoIDQg ZWggc3Rvb2tleSBlaCAyKQorICAgICAgKG1hcCAobGFtYmRhIChodCBrZXkpCisgICAgICAgICAg ICAgKGhhc2gtdGFibGUtcmVmIGh0IGtleSAobGFtYmRhICgpICdlaCkpKQorICAgICAgICAgICB0 ZXN0LXRhYmxlcworICAgICAgICAgICAnKGZvbyAxMDEuMworICAgICAgICAgICAgICAgICB4ICJ5 IgorICAgICAgICAgICAgICAgICAoMTQgMTUpICNcbmV3bGluZQorICAgICAgICAgICAgICAgICAo ZWR3YXJkKSAobWFyaykKKyAgICAgICAgICAgICAgICAgInAiICJwcmVmIgorICAgICAgICAgICAg ICAgICAibWlrZSIgIlBBVUwiCisgICAgICAgICAgICAgICAgIGphbmUgbm9lbAorICAgICAgICAg ICAgICAgICAwIDQpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXJlZiBhY2Nl cHRzIEZBSUxVUkUgYW5kIFNVQ0NFU1MgYW5kIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAg JyhlaCAoImZldmVyIikgZWggZWggZWggZWggZWggKHR3YWluKSBlaCAoNCkgZWggKDQpIGVoIChz dG9va2V5KSBlaCAoMikpCisgICAgICAobWFwIChsYW1iZGEgKGh0IGtleSkKKyAgICAgICAgICAg ICAoZ3VhcmQgKGV4bgorICAgICAgICAgICAgICAgICAgICAgKGVsc2UgJ2VycikpCisgICAgICAg ICAgICAgICAoaGFzaC10YWJsZS1yZWYgaHQga2V5IChsYW1iZGEgKCkgJ2VoKSBsaXN0KSkpCisg ICAgICAgICAgIHRlc3QtdGFibGVzCisgICAgICAgICAgICcoZm9vIDEwMS4zCisgICAgICAgICAg ICAgICAgIHggInkiCisgICAgICAgICAgICAgICAgICgxNCAxNSkgI1xuZXdsaW5lCisgICAgICAg ICAgICAgICAgIChlZHdhcmQpIChtYXJrKQorICAgICAgICAgICAgICAgICAicCIgInByZWYiCisg ICAgICAgICAgICAgICAgICJtaWtlIiAiUEFVTCIKKyAgICAgICAgICAgICAgICAgamFuZSBub2Vs CisgICAgICAgICAgICAgICAgIDAgNCkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFi bGUtcmVmL2RlZmF1bHQgdXNlcyBERUZBVUxUIgorICAgICAgICAobWFwIChsYW1iZGEgKGh0KSAn ZWgpIHRlc3QtdGFibGVzKQorICAgICAgKG1hcCAobGFtYmRhIChodCkKKyAgICAgICAgICAgICAo Z3VhcmQgKGV4bgorICAgICAgICAgICAgICAgICAgICAgKGVsc2UgJ2VoKSkKKyAgICAgICAgICAg ICAgIChoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGh0ICdub3QtYS1rZXkgJ2VoKSkpCisgICAgICAg ICAgIHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXJlZi9k ZWZhdWx0IGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgJyhlaCAiZmV2ZXIiIGVoIGVoIGVo IGVoIGVoIHR3YWluIGVoIDQgZWggNCBlaCBzdG9va2V5IGVoIDIpCisgICAgICAobWFwIChsYW1i ZGEgKGh0IGtleSkKKyAgICAgICAgICAgICAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBodCBrZXkg J2VoKSkKKyAgICAgICAgICAgdGVzdC10YWJsZXMKKyAgICAgICAgICAgJyhmb28gMTAxLjMKKyAg ICAgICAgICAgICAgICAgeCAieSIKKyAgICAgICAgICAgICAgICAgKDE0IDE1KSAjXG5ld2xpbmUK KyAgICAgICAgICAgICAgICAgKGVkd2FyZCkgKG1hcmspCisgICAgICAgICAgICAgICAgICJwIiAi cHJlZiIKKyAgICAgICAgICAgICAgICAgIm1pa2UiICJQQVVMIgorICAgICAgICAgICAgICAgICBq YW5lIG5vZWwKKyAgICAgICAgICAgICAgICAgMCA0KSkpKQorCisgICh3aXRoLXRlc3QtcHJlZml4 ICJtdXRhdG9ycyIKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXNldCEgd2l0aCBu byBrZXktdmFsdWUgcGFpcnMgZG9lcyBub3RoaW5nIgorICAgICAgICAnKCkKKyAgICAgIChiZWdp biAoaGFzaC10YWJsZS1zZXQhIGh0LWZpeG51bSkKKyAgICAgICAgICAgICAobGlzdC1zb3J0IDwg KGhhc2gtdGFibGUta2V5cyBodC1maXhudW0pKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFz aC10YWJsZS1zZXQhIGZ1bmN0aW9ucyBwcm9wZXJseSAxIgorICAgICAgICAnKDEyMSAxNDQgMTY5 KQorICAgICAgKGJlZ2luIChoYXNoLXRhYmxlLXNldCEgaHQtZml4bnVtIDEyMSAxMSAxNDQgMTIg MTY5IDEzKQorICAgICAgICAgICAgIChsaXN0LXNvcnQgPCAoaGFzaC10YWJsZS1rZXlzIGh0LWZp eG51bSkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXNldCEgZnVuY3Rpb25z IHByb3Blcmx5IDIiCisgICAgICAgICcoMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSAxMjEgMTQ0 IDE2OSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1zZXQhIGh0LWZpeG51bQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMCAwIDEgMSA0IDIgOSAzIDE2IDQgMjUgNSAzNiA2IDQ5IDcg NjQgOCA4MSA5KQorICAgICAgICAgICAgIChsaXN0LXNvcnQgPCAoaGFzaC10YWJsZS1rZXlzIGh0 LWZpeG51bSkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXNldCEgZnVuY3Rp b25zIHByb3Blcmx5IDMiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgNiA3IDggOSkK KyAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVt IGkgJ2Vycm9yKSkKKyAgICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5IDE2IDI1IDM2IDQ5 IDY0IDgxKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1kZWxldGUhIHdpdGgg bm8ga2V5cyBkb2VzIG5vdGhpbmciCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgNiA3 IDggOSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1kZWxldGUhIGh0LWZpeG51bSkKKyAgICAg ICAgICAgICAobWFwIChsYW1iZGEgKGkpIChoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGh0LWZpeG51 bSBpICdlcnJvcikpCisgICAgICAgICAgICAgICAgICAnKDE2OSAxNDQgMTIxIDAgMSA0IDkgMTYg MjUgMzYgNDkgNjQgODEpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1kZWxl dGUhIGZ1bmN0aW9ucyBwcm9wZXJseSAxIgorICAgICAgICAnKC0xIDEyIC0xIDAgLTEgMiAtMSA0 IC0xIDYgLTEgOCAtMSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1kZWxldGUhIGh0LWZpeG51 bSAxIDkgMjUgNDkgODEgMjAwIDEyMSAxNjkgODEgMSkKKyAgICAgICAgICAgICAobWFwIChsYW1i ZGEgKGkpIChoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGh0LWZpeG51bSBpIC0xKSkKKyAgICAgICAg ICAgICAgICAgICcoMTY5IDE0NCAxMjEgMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSkpKSkKKwor ICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLWRlbGV0ZSEgZnVuY3Rpb25zIHByb3Blcmx5 IDIiCisgICAgICAgICcoLTEgMTIgLTEgLTEgLTEgMiAtMSA0IC0xIC0xIC0xIDggLTEpCisgICAg ICAoYmVnaW4gKGhhc2gtdGFibGUtZGVsZXRlISBodC1maXhudW0gMjAwIDEwMCAwIDgxIDM2KQor ICAgICAgICAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQt Zml4bnVtIGkgLTEpKQorICAgICAgICAgICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5IDE2 IDI1IDM2IDQ5IDY0IDgxKSkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtaW50 ZXJuISBmdW5jdGlvbnMgcHJvcGVybHkgMSIKKyAgICAgICAgJygxMyAxMiAxMSAwIDEgMiAtMSA0 IC0xIC0xIC0xIDggLTEpCisgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtaW50ZXJuISBodC1maXhu dW0gMTY5IChsYW1iZGEgKCkgMTMpKQorICAgICAgICAgICAgIChoYXNoLXRhYmxlLWludGVybiEg aHQtZml4bnVtIDEyMSAobGFtYmRhICgpIDExKSkKKyAgICAgICAgICAgICAoaGFzaC10YWJsZS1p bnRlcm4hIGh0LWZpeG51bSAgIDAgKGxhbWJkYSAoKSAgMCkpCisgICAgICAgICAgICAgKGhhc2gt dGFibGUtaW50ZXJuISBodC1maXhudW0gICAxIChsYW1iZGEgKCkgIDEpKQorICAgICAgICAgICAg IChoYXNoLXRhYmxlLWludGVybiEgaHQtZml4bnVtICAgMSAobGFtYmRhICgpIDk5KSkKKyAgICAg ICAgICAgICAoaGFzaC10YWJsZS1pbnRlcm4hIGh0LWZpeG51bSAxMjEgKGxhbWJkYSAoKSA2Nikp CisgICAgICAgICAgICAgKG1hcCAobGFtYmRhIChpKSAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBo dC1maXhudW0gaSAtMSkpCisgICAgICAgICAgICAgICAgICAnKDE2OSAxNDQgMTIxIDAgMSA0IDkg MTYgMjUgMzYgNDkgNjQgODEpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1t YXAtPmxpc3QgZnVuY3Rpb25zIHByb3Blcmx5IDEiCisgICAgICAgICcoIygwIDApICMoMSAxKSAj KDQgMikgIygxNiA0KSAjKDY0IDgpICMoMTIxIDExKSAjKDE0NCAxMikgIygxNjkgMTMpKQorICAg ICAgKGxpc3Qtc29ydCAobGFtYmRhICh2MSB2MikgKDwgKHZlY3Rvci1yZWYgdjEgMCkgKHZlY3Rv ci1yZWYgdjIgMCkpKQorICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1tYXAtPmxpc3QgdmVj dG9yIGh0LWZpeG51bSkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtcHJ1bmUh IGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgJygoMCAwKSAoMSAxKSAoNCAyKSAoMTYgNCkg KDY0IDgpICM7KDEyMSAxMSkgKDE0NCAxMikgIzsoMTY5IDEzKSkKKyAgICAgIChiZWdpbiAoaGFz aC10YWJsZS1wcnVuZSEgKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYW5kIChvZGQ/IGtleSkgKD4gdmFsIDEwKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGh0LWZpeG51bSkKKyAgICAgICAgICAgICAobGlzdC1zb3J0IChsYW1i ZGEgKGwxIGwyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoPCAoY2FyIGwxKSAoY2FyIGwy KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1tYXAtPmxpc3QgbGlzdCBo dC1maXhudW0pKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1pbnRlcm4hIGZ1 bmN0aW9ucyBwcm9wZXJseSAyIgorICAgICAgICAnKCgwIDApICgxIDEpICg0IDIpICgxNiA0KSAo NjQgOCkgKDEyMSAxMSkgKDE0NCAxMikgKDE2OSAxMykpCisgICAgICAoYmVnaW4gKGhhc2gtdGFi bGUtaW50ZXJuISBodC1maXhudW0gMTY5IChsYW1iZGEgKCkgMTMpKQorICAgICAgICAgICAgICho YXNoLXRhYmxlLWludGVybiEgaHQtZml4bnVtIDE0NCAobGFtYmRhICgpIDk5OTkpKQorICAgICAg ICAgICAgIChoYXNoLXRhYmxlLWludGVybiEgaHQtZml4bnVtIDEyMSAobGFtYmRhICgpIDExKSkK KyAgICAgICAgICAgICAobGlzdC1zb3J0IChsYW1iZGEgKGwxIGwyKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAoPCAoY2FyIGwxKSAoY2FyIGwyKSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAoaGFzaC10YWJsZS1tYXAtPmxpc3QgbGlzdCBodC1maXhudW0pKSkpCisKKyAgICAocGFzcy1p Zi1lcXVhbCAiaGFzaC10YWJsZS11cGRhdGUhIHdpdGggRkFJTFVSRSBmdW5jdGlvbnMgcHJvcGVy bHkgMSIKKyAgICAgICAgJygxMyAxMiAxMSAwIDEgMiAzIDQgLTEgLTEgLTEgOCAtMSkKKyAgICAg IChiZWdpbiAoaGFzaC10YWJsZS11cGRhdGUhIGh0LWZpeG51bSA5IGxlbmd0aCAobGFtYmRhICgp ICcoYSBiIGMpKSkKKyAgICAgICAgICAgICAobWFwIChsYW1iZGEgKGkpIChoYXNoLXRhYmxlLXJl Zi9kZWZhdWx0IGh0LWZpeG51bSBpIC0xKSkKKyAgICAgICAgICAgICAgICAgICcoMTY5IDE0NCAx MjEgMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJo YXNoLXRhYmxlLXVwZGF0ZSEgZnVuY3Rpb25zIHByb3Blcmx5IgorICAgICAgICAnKDEzIDEyIDEx IDAgMSAyIDMgLTQgLTEgLTEgLTEgOCAtMSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS11cGRh dGUhIGh0LWZpeG51bSAxNiAtKQorICAgICAgICAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gt dGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVtIGkgLTEpKQorICAgICAgICAgICAgICAgICAgJygx NjkgMTQ0IDEyMSAwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0IDgxKSkpKQorCisgICAgKHBhc3MtaWYt ZXF1YWwgImhhc2gtdGFibGUtdXBkYXRlISB3aXRoIEZBSUxVUkUgZnVuY3Rpb25zIHByb3Blcmx5 IDIiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IC0xIC0xIC0xIDggLTEpCisgICAgICAo YmVnaW4gKGhhc2gtdGFibGUtdXBkYXRlISBodC1maXhudW0gMTYgLSBhYnMpCisgICAgICAgICAg ICAgKG1hcCAobGFtYmRhIChpKSAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBodC1maXhudW0gaSAt MSkpCisgICAgICAgICAgICAgICAgICAnKDE2OSAxNDQgMTIxIDAgMSA0IDkgMTYgMjUgMzYgNDkg NjQgODEpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1 bHQgZnVuY3Rpb25zIHByb3Blcmx5IDEiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IC01 IC0xIC0xIDggLTEpCisgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0IGh0 LWZpeG51bSAyNSAtIDUpCisgICAgICAgICAgICAgKG1hcCAobGFtYmRhIChpKSAoaGFzaC10YWJs ZS1yZWYvZGVmYXVsdCBodC1maXhudW0gaSAtMSkpCisgICAgICAgICAgICAgICAgICAnKDE2OSAx NDQgMTIxIDAgMSA0IDkgMTYgMjUgMzYgNDkgNjQgODEpKSkpCisKKyAgICAocGFzcy1pZi1lcXVh bCAiaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1bHQgZnVuY3Rpb25zIHByb3Blcmx5IDIiCisgICAg ICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgLTEgLTEgOCAtMSkKKyAgICAgIChiZWdpbiAoaGFz aC10YWJsZS11cGRhdGUhL2RlZmF1bHQgaHQtZml4bnVtIDI1IC0gOTk5KQorICAgICAgICAgICAg IChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVtIGkgLTEp KQorICAgICAgICAgICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0 IDgxKSkpKQorCisgICAgKHBhc3MtaWYgImhhc2gtdGFibGUtcG9wISBmdW5jdGlvbnMgcHJvcGVy bHkiCisgICAgICAobGV0KiAoKG4wIChoYXNoLXRhYmxlLXNpemUgaHQtZml4bnVtKSkKKyAgICAg ICAgICAgICAoaHQgKGhhc2gtdGFibGUtY29weSBodC1maXhudW0gI3QpKSkKKyAgICAgICAgKGNh bGwtd2l0aC12YWx1ZXMKKyAgICAgICAgICAgIChsYW1iZGEgKCkgKGhhc2gtdGFibGUtcG9wISBo dCkpCisgICAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAgICAgIChhbmQgKD0ga2V5 ICgqIHZhbCB2YWwpKQorICAgICAgICAgICAgICAgICAoPSAoLSBuMCAxKSAoaGFzaC10YWJsZS1z aXplIGh0KSkpKSkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtZGVsZXRlISBm dW5jdGlvbnMgcHJvcGVybHkgMiIKKyAgICAgICAgJygxMyAxMiAxMSAwIDEgMiAzIDQgNSAtMSAt MSA4IC0xIC0xKQorICAgICAgKGJlZ2luIChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQtZml4bnVtIDc1 KQorICAgICAgICAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQg aHQtZml4bnVtIGkgLTEpKQorICAgICAgICAgICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5 IDE2IDI1IDM2IDQ5IDY0IDc1IDgxKSkpKQorCisgICAgOzsgU3BlYyBzYXlzIEhBU0gtVEFCTEUg cmV0dXJucyBhbiBpbW11dGFibGUgaGFzaCB0YWJsZSwgc28gd2UgcHV0IGEKKyAgICA7OyBIQVNI LVRBQkxFLUNPUFkgaGVyZQorICAgIChsZXQgKChodC1lZyAoaGFzaC10YWJsZS1jb3B5CisgICAg ICAgICAgICAgICAgICAoaGFzaC10YWJsZSBudW1iZXItY29tcGFyYXRvciAxIDEgNCAyIDkgMyAx NiA0IDI1IDUgNjQgOCkKKyAgICAgICAgICAgICAgICAgICN0KSkpCisgICAgICAocGFzcy1pZi1l cXVhbCAiaGFzaC10YWJsZS1kZWxldGUhIGZ1bmN0aW9ucyBwcm9wZXJseSAzIgorICAgICAgICAg IDAKKyAgICAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodC1lZykpCisgICAgICAocGFzcy1pZi1l cXVhbCAiaGFzaC10YWJsZS1kZWxldGUhIGZ1bmN0aW9ucyBwcm9wZXJseSA0IgorICAgICAgICAg IDAKKyAgICAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodC1lZyAyIDcgMjAwMCkpCisgICAgICAo cGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1kZWxldGUhIGZ1bmN0aW9ucyBwcm9wZXJseSA1Igor ICAgICAgICAgIDMKKyAgICAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodC1lZyAxIDIgNCA3IDY0 IDIwMDApKQorICAgICAgKHBhc3MtaWYgImhhc2gtdGFibGUtZGVsZXRlISBmdW5jdGlvbnMgcHJv cGVybHkgNiIKKyAgICAgICAgKD0gMyAobGVuZ3RoIChoYXNoLXRhYmxlLWtleXMgaHQtZWcpKSkp KQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtcmVmL2RlZmF1bHQgZnVuY3Rpb25z IHByb3Blcmx5IDIiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgLTEgLTEgOCAtMSkK KyAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVt IGkgLTEpKQorICAgICAgICAgICAnKDE2OSAxNDQgMTIxIDAgMSA0IDkgMTYgMjUgMzYgNDkgNjQg ODEpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXNldCEgZnVuY3Rpb25zIHBy b3Blcmx5IDQiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgNiAtMSA4IDkpCisgICAg ICAoYmVnaW4gKGhhc2gtdGFibGUtc2V0ISBodC1maXhudW0gMzYgNikKKyAgICAgICAgICAgICAo aGFzaC10YWJsZS1zZXQhIGh0LWZpeG51bSA4MSA5KQorICAgICAgICAgICAgIChtYXAgKGxhbWJk YSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVtIGkgLTEpKQorICAgICAgICAg ICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0IDgxKSkpKQorCisg ICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtY2xlYXIhIGNsZWFycyBoYXNoIHRhYmxlIgor ICAgICAgICAwCisgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtY2xlYXIhIGh0LWVxKQorICAgICAg ICAgICAgIChoYXNoLXRhYmxlLXNpemUgaHQtZXEpKSkpCisKKyAgKHdpdGgtdGVzdC1wcmVmaXgg InRoZSB3aG9sZSBoYXNoIHRhYmxlIgorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUt c2l6ZSByZXR1cm5zIGNvcnJlY3QgdGFibGUgc2l6ZSIKKyAgICAgICAgMworICAgICAgKGJlZ2lu IChoYXNoLXRhYmxlLXNldCEgaHQtZXEgJ2ZvbyAxMyAnYmFyIDE0ICdiYXogMTgpCisgICAgICAg ICAgICAgKGhhc2gtdGFibGUtc2l6ZSBodC1lcSkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhh c2gtdGFibGUtc2l6ZSByZXR1cm5zIGNvcnJlY3QgdGFibGUgc2l6ZSAyIgorICAgICAgICAnKDAg MyAjdCkKKyAgICAgIChsZXQqICgoaHQgKGhhc2gtdGFibGUtZW1wdHktY29weSBodC1lcSkpCisg ICAgICAgICAgICAgKG4wIChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgIChpZ25v cmVkIChoYXNoLXRhYmxlLXNldCEgaHQgJ2ZvbyAxMyAnYmFyIDE0ICdiYXogMTgpKQorICAgICAg ICAgICAgIChuMSAoaGFzaC10YWJsZS1zaXplIGh0KSkpCisgICAgICAgIChsaXN0IG4wIG4xICho YXNoLXRhYmxlPT8gZGVmYXVsdC1jb21wYXJhdG9yIGh0IGh0LWVxKSkpKQorCisgICAgKHBhc3Mt aWYtZXF1YWwgImhhc2gtdGFibGUtc2l6ZSByZXR1cm5zIDAgd2l0aCBlbXB0eSBoYXNoIHRhYmxl IgorICAgICAgICAwCisgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtY2xlYXIhIGh0LWVxKQorICAg ICAgICAgICAgIChoYXNoLXRhYmxlLXNpemUgaHQtZXEpKSkKKworICAgIChwYXNzLWlmLWVxdWFs ICJoYXNoLXRhYmxlLWZpbmQgZnVuY3Rpb25zIHByb3Blcmx5IDEiCisgICAgICAgICcoMTQ0IDEy KQorICAgICAgKGhhc2gtdGFibGUtZmluZCAobGFtYmRhIChrZXkgdmFsKQorICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAoPSAxNDQga2V5ICgqIHZhbCB2YWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGlzdCBrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjZikpCisgICAgICAgICAgICAgICAgICAgICAgIGh0LWZpeG51bQorICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhICgpIDk5KSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJs ZS1maW5kIGZ1bmN0aW9ucyBwcm9wZXJseSAyIgorICAgICAgICA5OQorICAgICAgKGhhc2gtdGFi bGUtZmluZCAobGFtYmRhIChrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAo PSAxNDQga2V5IHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3Qga2V5IHZh bCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2YpKQorICAgICAgICAgICAgICAgICAg ICAgICBodC1maXhudW0KKyAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKSA5OSkpKQor CisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtY291bnQgZnVuY3Rpb25zIHByb3Blcmx5 IgorICAgICAgICAyCisgICAgICAoaGFzaC10YWJsZS1jb3VudCA8PSBodC1maXhudW0pKSkKKwor ICAod2l0aC10ZXN0LXByZWZpeCAibWFwcGluZyBhbmQgZm9sZGluZyIKKworICAgIChwYXNzLWlm LWVxdWFsICJoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGZ1bmN0aW9ucyBwcm9wZXJseSAzIgorICAg ICAgICAnKDAgMSAyIDMgNCA1IDYgLTEgOCA5IC0xIDExIDEyIDEzIC0xKQorICAgICAgKG1hcCAo bGFtYmRhIChpKSAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBodC1maXhudW0gaSAtMSkpCisgICAg ICAgICAgICcoMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSAxMDAgMTIxIDE0NCAxNjkgMTk2KSkp CisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1tYXAgZnVuY3Rpb25zIHByb3Blcmx5 IgorICAgICAgICAnKDAgMSA0IDkgMTYgMjUgMzYgLTEgNjQgODEgLTEgMTIxIDE0NCAxNjkgLTEp CisgICAgICAobGV0ICgoaHQgKGhhc2gtdGFibGUtbWFwIChsYW1iZGEgKHZhbCkgKCogdmFsIHZh bCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdi1jb21wYXJhdG9yCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LWZpeG51bSkpKQorICAgICAgICAobWFwIChs YW1iZGEgKGkpIChoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGh0IGkgLTEpKQorICAgICAgICAgICAg ICcoMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSAxMDAgMTIxIDE0NCAxNjkgMTk2KSkpKQorCisg ICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtZm9yLWVhY2ggZnVuY3Rpb25zIHByb3Blcmx5 IgorICAgICAgICAnKCMoMCAxIDQgOSAxNiAyNSAzNiAtMSA2NCA4MSAtMSAxMjEgMTQ0IDE2OSAt MSkKKyAgICAgICAgICAjKDAgMSAyIDMgIDQgIDUgIDYgLTEgIDggIDkgLTEgIDExICAxMiAgMTMg LTEpKQorICAgICAgKGxldCAoKGtleXMgKG1ha2UtdmVjdG9yIDE1IC0xKSkKKyAgICAgICAgICAg ICh2YWxzIChtYWtlLXZlY3RvciAxNSAtMSkpKQorICAgICAgICAoaGFzaC10YWJsZS1mb3ItZWFj aCAobGFtYmRhIChrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0 b3Itc2V0ISBrZXlzIHZhbCBrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZl Y3Rvci1zZXQhIHZhbHMgdmFsIHZhbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0 LWZpeG51bSkKKyAgICAgICAgKGxpc3Qga2V5cyB2YWxzKSkpCisKKyAgICAocGFzcy1pZi1lcXVh bCAiaGFzaC10YWJsZS1tYXAhIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgJygwIDEgMiAz IC00IC01IC02IC0xIC04IC05IC0xIC0xMSAtMTIgLTEzIC0xKQorICAgICAgKGJlZ2luIChoYXNo LXRhYmxlLW1hcCEgKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGlmICg8PSAxMCBrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoLSB2YWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaHQtZml4bnVtKQorICAgICAgICAgICAgIChtYXAg KGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVtIGkgLTEpKQorICAg ICAgICAgICAgICAgICAgJygwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0IDgxIDEwMCAxMjEgMTQ0IDE2 OSAxOTYpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1mb2xkIGZ1bmN0aW9u cyBwcm9wZXJseSAxIgorICAgICAgICAxMworICAgICAgKGhhc2gtdGFibGUtZm9sZCAobGFtYmRh IChrZXkgdmFsIGFjYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKyB2YWwgYWNjKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgICAgICAgICAgICAgICBodC1zdHJpbmct Y2kyKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLWZvbGQgZnVuY3Rpb25zIHBy b3Blcmx5IDIiCisgICAgICAgICcoMCAxIDQgOSAxNiAyNSAzNiA2NCA4MSAxMjEgMTQ0IDE2OSkK KyAgICAgIChsaXN0LXNvcnQgPCAoaGFzaC10YWJsZS1mb2xkIChsYW1iZGEgKGtleSB2YWwgYWNj KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyBrZXkgYWNjKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaHQtZml4bnVtKSkpKQorCisgICh3aXRoLXRlc3QtcHJlZml4 ICJjb3B5aW5nIGFuZCBjb252ZXJzaW9uIgorCisgICAgKHBhc3MtaWYgImhhc2gtdGFibGUtY29w eSBmdW5jdGlvbnMgcHJvcGVybHkgMSIKKyAgICAgIChoYXNoLXRhYmxlPT8gbnVtYmVyLWNvbXBh cmF0b3IgaHQtZml4bnVtIChoYXNoLXRhYmxlLWNvcHkgaHQtZml4bnVtKSkpCisKKyAgICAocGFz cy1pZiAiaGFzaC10YWJsZS1jb3B5IGZ1bmN0aW9ucyBwcm9wZXJseSAyIgorICAgICAgKGhhc2gt dGFibGU9PyBudW1iZXItY29tcGFyYXRvciBodC1maXhudW0gKGhhc2gtdGFibGUtY29weSBodC1m aXhudW0gI2YpKSkKKworICAgIChwYXNzLWlmICJoYXNoLXRhYmxlLWNvcHkgZnVuY3Rpb25zIHBy b3Blcmx5IDMiCisgICAgICAoaGFzaC10YWJsZT0/IG51bWJlci1jb21wYXJhdG9yIGh0LWZpeG51 bSAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bSAjdCkpKQorCisgICAgKHBhc3MtaWYgImhhc2gt dGFibGUtY29weSBmdW5jdGlvbnMgcHJvcGVybHkgNCIKKyAgICAgIChub3QgKGhhc2gtdGFibGUt bXV0YWJsZT8gKGhhc2gtdGFibGUtY29weSBodC1maXhudW0pKSkpCisKKyAgICAocGFzcy1pZiAi aGFzaC10YWJsZS1jb3B5IGZ1bmN0aW9ucyBwcm9wZXJseSA1IgorICAgICAgKG5vdCAoaGFzaC10 YWJsZS1tdXRhYmxlPyAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bSAjZikpKSkKKworICAgIChw YXNzLWlmICJoYXNoLXRhYmxlLWNvcHkgZnVuY3Rpb25zIHByb3Blcmx5IDYiCisgICAgICAoaGFz aC10YWJsZS1tdXRhYmxlPyAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bSAjdCkpKQorCisgICAg KHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtPmFsaXN0IGZ1bmN0aW9ucyBwcm9wZXJseSAxIgor ICAgICAgICAnKCkKKyAgICAgIChoYXNoLXRhYmxlLT5hbGlzdCBodC1lcSkpCisKKyAgICAocGFz cy1pZi1lcXVhbCAiaGFzaC10YWJsZS0+YWxpc3QgZnVuY3Rpb25zIHByb3Blcmx5IDIiCisgICAg ICAgICcoKDAgLiAwKQorICAgICAgICAgICgxIC4gMSkKKyAgICAgICAgICAoNCAuIDIpCisgICAg ICAgICAgKDkgLiAzKQorICAgICAgICAgICgxNiAuIC00KQorICAgICAgICAgICgyNSAuIC01KQor ICAgICAgICAgICgzNiAuIC02KQorICAgICAgICAgICg2NCAuIC04KQorICAgICAgICAgICg4MSAu IC05KQorICAgICAgICAgICgxMjEgLiAtMTEpCisgICAgICAgICAgKDE0NCAuIC0xMikKKyAgICAg ICAgICAoMTY5IC4gLTEzKSkKKyAgICAgIChsaXN0LXNvcnQgKGxhbWJkYSAoeCB5KSAoPCAoY2Fy IHgpIChjYXIgeSkpKQorICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS0+YWxpc3QgaHQtZml4 bnVtKSkpKQorCisgICh3aXRoLXRlc3QtcHJlZml4ICJoYXNoIHRhYmxlcyBhcyBzZXRzIgorCisg ICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtdW5pb24hIGZ1bmN0aW9ucyBwcm9wZXJseSAx IgorICAgICAgICAnKCgwIC4gMCkKKyAgICAgICAgICAoMSAuIDEpCisgICAgICAgICAgKDQgLiAy KQorICAgICAgICAgICg5IC4gMykKKyAgICAgICAgICAoMTYgLiAtNCkKKyAgICAgICAgICAoMjUg LiAtNSkKKyAgICAgICAgICAoMzYgLiAtNikKKyAgICAgICAgICAoNDkgLiA3KQorICAgICAgICAg ICg2NCAuIC04KQorICAgICAgICAgICg4MSAuIC05KQorICAgICAgICAgICgxMjEgLiAtMTEpCisg ICAgICAgICAgKDE0NCAuIC0xMikKKyAgICAgICAgICAoMTY5IC4gLTEzKSkKKyAgICAgIChiZWdp biAoaGFzaC10YWJsZS11bmlvbiEgaHQtZml4bnVtIGh0LWZpeG51bTIpCisgICAgICAgICAgICAg KGxpc3Qtc29ydCAobGFtYmRhICh4IHkpICg8IChjYXIgeCkgKGNhciB5KSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAoaGFzaC10YWJsZS0+YWxpc3QgaHQtZml4bnVtKSkpKQorCisgICAgKHBh c3MtaWYtZXF1YWwgImhhc2gtdGFibGUtdW5pb24hIGZ1bmN0aW9ucyBwcm9wZXJseSAyIgorICAg ICAgICAnKCgwIC4gMCkKKyAgICAgICAgICAoMSAuIDEpCisgICAgICAgICAgKDQgLiAyKQorICAg ICAgICAgICg5IC4gMykKKyAgICAgICAgICAoMTYgLiA0KQorICAgICAgICAgICgyNSAuIDUpCisg ICAgICAgICAgKDM2IC4gNikKKyAgICAgICAgICAoNDkgLiA3KQorICAgICAgICAgICg2NCAuIDgp CisgICAgICAgICAgKDgxIC4gOSkKKyAgICAgICAgICAoMTIxIC4gLTExKQorICAgICAgICAgICgx NDQgLiAtMTIpCisgICAgICAgICAgKDE2OSAuIC0xMykpCisgICAgICAobGV0ICgoaHQgKGhhc2gt dGFibGUtY29weSBodC1maXhudW0yICN0KSkpCisgICAgICAgIChoYXNoLXRhYmxlLXVuaW9uISBo dCBodC1maXhudW0pCisgICAgICAgIChsaXN0LXNvcnQgKGxhbWJkYSAoeCB5KSAoPCAoY2FyIHgp IChjYXIgeSkpKQorICAgICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkK KworICAgIDs7IFNwZWMgaW4gU3BlY2lmaWNhdGlvbiBzZWN0aW9uIHNheXMgIkl0IGlzIGFuIGVy cm9yIHRvIHBhc3MgdHdvCisgICAgOzsgaGFzaCB0YWJsZXMgdGhhdCBoYXZlIGRpZmZlcmVudCBj b21wYXJhdG9ycyBvciBlcXVhbGl0eQorICAgIDs7IHByZWRpY2F0ZXMgdG8gYW55IG9mIHRoZSBw cm9jZWR1cmVzIG9mIHRoaXMgU1JGSS4iCisgICAgOzsKKyAgICA7OyBTbyB3ZSBjcmVhdGUgYSBu ZXcgaGFzaCB0YWJsZSB3aXRoIG51bWJlci1jb21wYXJhdG9yIHdpdGggdGhlCisgICAgOzsgY29u dGVudHMgb2YgaHQtZXF2MgorCisgICAgKGxldCAoKGh0LWZpeG51bTMgKGhhc2gtdGFibGUtbWFw IGlkZW50aXR5IG51bWJlci1jb21wYXJhdG9yIGh0LWVxdjIpKSkKKyAgICAgIChwYXNzLWlmICJo YXNoLXRhYmxlLXVuaW9uISBmdW5jdGlvbnMgcHJvcGVybHkgMyIKKyAgICAgICAgKGJlZ2luICho YXNoLXRhYmxlLXVuaW9uISBodC1maXhudW0zIGh0LWZpeG51bSkKKyAgICAgICAgICAgICAgICho YXNoLXRhYmxlPT8gbnVtYmVyLWNvbXBhcmF0b3IgaHQtZml4bnVtIGh0LWZpeG51bTMpKSkKKwor ICAgICAgKHBhc3MtaWYgImhhc2gtdGFibGUtaW50ZXJzZWN0aW9uISBmdW5jdGlvbnMgcHJvcGVy bHkgMSIKKyAgICAgICAgKGJlZ2luIChoYXNoLXRhYmxlLWludGVyc2VjdGlvbiEgaHQtZml4bnVt MyBodC1maXhudW0pCisgICAgICAgICAgICAgICAoaGFzaC10YWJsZT0/IG51bWJlci1jb21wYXJh dG9yIGh0LWZpeG51bSBodC1maXhudW0zKSkpKQorCisgICAgKHBhc3MtaWYgImhhc2gtdGFibGUt aW50ZXJzZWN0aW9uISBmdW5jdGlvbnMgcHJvcGVybHkgMiIKKyAgICAgIChiZWdpbiAoaGFzaC10 YWJsZS1pbnRlcnNlY3Rpb24hIGh0LWVxdjIgaHQtZXF2KQorICAgICAgICAgICAgIChoYXNoLXRh YmxlLWVtcHR5PyBodC1lcXYyKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1p bnRlcnNlY3Rpb24hIGZ1bmN0aW9ucyBwcm9wZXJseSAzIgorICAgICAgICAnKCgwIC4gMCkKKyAg ICAgICAgICAoMSAuIDEpCisgICAgICAgICAgKDQgLiAyKQorICAgICAgICAgICg5IC4gMykKKyAg ICAgICAgICAoMTYgLiAtNCkKKyAgICAgICAgICAoMjUgLiAtNSkKKyAgICAgICAgICAoMzYgLiAt NikKKyAgICAgICAgICAoNDkgLiA3KQorICAgICAgICAgICg2NCAuIC04KQorICAgICAgICAgICg4 MSAuIC05KSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1pbnRlcnNlY3Rpb24hIGh0LWZpeG51 bSBodC1maXhudW0yKQorICAgICAgICAgICAgIChsaXN0LXNvcnQgKGxhbWJkYSAoeCB5KSAoPCAo Y2FyIHgpIChjYXIgeSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2gtdGFibGUtPmFs aXN0IGh0LWZpeG51bSkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLWludGVy c2VjdGlvbiEgZnVuY3Rpb25zIHByb3Blcmx5IDQiCisgICAgICAgICcoKDQgLiAyKQorICAgICAg ICAgICgyNSAuIC01KSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1pbnRlcnNlY3Rpb24hCisg ICAgICAgICAgICAgIGh0LWZpeG51bQorICAgICAgICAgICAgICAoYWxpc3QtPmhhc2gtdGFibGUg JygoLTEgLiAtMSkgKDQgLiAyMDIpICgyNSAuIDIwNSkgKDEwMCAuIDEwKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG51bWJlci1jb21wYXJhdG9yKSkKKyAgICAgICAgICAgICAo bGlzdC1zb3J0IChsYW1iZGEgKHggeSkgKDwgKGNhciB4KSAoY2FyIHkpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIChoYXNoLXRhYmxlLT5hbGlzdCBodC1maXhudW0pKSkpCisKKyAgICAocGFz cy1pZi1lcXVhbCAiaGFzaC10YWJsZS1kaWZmZXJlbmNlISBmdW5jdGlvbnMgcHJvcGVybHkiCisg ICAgICAgICcoKDAgLiAwKQorICAgICAgICAgICgxIC4gMSkKKyAgICAgICAgICAoOSAuIDMpCisg ICAgICAgICAgKDE2IC4gNCkKKyAgICAgICAgICAoMzYgLiA2KQorICAgICAgICAgICg0OSAuIDcp CisgICAgICAgICAgKDY0IC4gOCkKKyAgICAgICAgICAoODEgLiA5KSkKKyAgICAgIChsZXQgKCho dCAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bTIgI3QpKSkKKyAgICAgICAgKGhhc2gtdGFibGUt ZGlmZmVyZW5jZSEKKyAgICAgICAgIGh0CisgICAgICAgICAoYWxpc3QtPmhhc2gtdGFibGUgJygo LTEgLiAtMSkgKDQgLiAyMDIpICgyNSAuIDIwNSkgKDEwMCAuIDEwKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBudW1iZXItY29tcGFyYXRvcikpCisgICAgICAgIChsaXN0LXNvcnQgKGxh bWJkYSAoeCB5KSAoPCAoY2FyIHgpIChjYXIgeSkpKQorICAgICAgICAgICAgICAgICAgIChoYXNo LXRhYmxlLT5hbGlzdCBodCkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXhv ciEgZnVuY3Rpb25zIHByb3Blcmx5IgorICAgICAgICAnKCgtMSAuIC0xKQorICAgICAgICAgICgw IC4gMCkKKyAgICAgICAgICAoMSAuIDEpCisgICAgICAgICAgKDkgLiAzKQorICAgICAgICAgICgx NiAuIDQpCisgICAgICAgICAgKDM2IC4gNikKKyAgICAgICAgICAoNDkgLiA3KQorICAgICAgICAg ICg2NCAuIDgpCisgICAgICAgICAgKDgxIC4gOSkKKyAgICAgICAgICAoMTAwIC4gMTApKQorICAg ICAgKGxldCAoKGh0IChoYXNoLXRhYmxlLWNvcHkgaHQtZml4bnVtMiAjdCkpKQorICAgICAgICAo aGFzaC10YWJsZS14b3IhCisgICAgICAgICBodAorICAgICAgICAgKGFsaXN0LT5oYXNoLXRhYmxl ICcoKC0xIC4gLTEpICg0IC4gMjAyKSAoMjUgLiAyMDUpICgxMDAgLiAxMCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbnVtYmVyLWNvbXBhcmF0b3IpKQorICAgICAgICAobGlzdC1zb3J0 IChsYW1iZGEgKHggeSkgKDwgKGNhciB4KSAoY2FyIHkpKSkKKyAgICAgICAgICAgICAgICAgICAo aGFzaC10YWJsZS0+YWxpc3QgaHQpKSkpCisKKyAgICAocGFzcy1pZi1leGNlcHRpb24gImhhc2gt dGFibGUtcmVmIHNpZ25hbHMgJ2tleSBub3QgZm91bmQnIGVycm9yIChhZ2FpbikiCisgICAgICAg ICcobWlzYy1lcnJvciAuICJeS2V5IG5vdCBpbiB0YWJsZSIpCisgICAgICAoaGFzaC10YWJsZS1y ZWYgaHQtZGVmYXVsdCAidGhpcyBrZXkgd29uJ3QgYmUgcHJlc2VudCIpKSkKKworICAod2l0aC10 ZXN0LXByZWZpeCAiZGVwcmVjYXRlZCIKKworICAgIChwYXNzLWlmICJoYXNoIHJldHVybnMgZXhh Y3QgaW50ZWdlcnMiCisgICAgICAobGV0KiAoKHggKGxpc3QgMSAyIDMpKQorICAgICAgICAgICAg ICh5IChjb25zIDEgKGNkciB4KSkpCisgICAgICAgICAgICAgKGgxIChoYXNoIHgpKQorICAgICAg ICAgICAgIChoMiAoaGFzaCB5KSkpCisgICAgICAgIChhbmQgKGV4YWN0LWludGVnZXI/IGgxKQor ICAgICAgICAgICAgIChleGFjdC1pbnRlZ2VyPyBoMikKKyAgICAgICAgICAgICAoPSBoMSBoMikp KSkKKworICAgIChwYXNzLWlmICJzdHJpbmctaGFzaCByZXR1cm5zIGV4YWN0IGludGVnZXJzIgor ICAgICAgKGxldCogKCh4ICJhYmNkIikKKyAgICAgICAgICAgICAoeSAoc3RyaW5nLWFwcGVuZCAi YWIiICJjZCIpKQorICAgICAgICAgICAgIChoMSAoc3RyaW5nLWhhc2ggeCkpCisgICAgICAgICAg ICAgKGgyIChzdHJpbmctaGFzaCB5KSkpCisgICAgICAgIChhbmQgKGV4YWN0LWludGVnZXI/IGgx KQorICAgICAgICAgICAgIChleGFjdC1pbnRlZ2VyPyBoMikKKyAgICAgICAgICAgICAoPSBoMSBo MikpKSkKKworICAgIChwYXNzLWlmICJzdHJpbmctY2ktaGFzaCByZXR1cm5zIGV4YWN0IGludGVn ZXJzIgorICAgICAgKGxldCogKCh4ICJIZWxsbyBUaGVyZSEiKQorICAgICAgICAgICAgICh5ICJo ZWxsbyBUSEVSRSEiKQorICAgICAgICAgICAgIChoMSAoc3RyaW5nLWNpLWhhc2ggeCkpCisgICAg ICAgICAgICAgKGgyIChzdHJpbmctY2ktaGFzaCB5KSkpCisgICAgICAgIChhbmQgKGV4YWN0LWlu dGVnZXI/IGgxKQorICAgICAgICAgICAgIChleGFjdC1pbnRlZ2VyPyBoMikKKyAgICAgICAgICAg ICAoPSBoMSBoMikpKSkKKworICAgIChwYXNzLWlmICJoYXNoLWJ5LWlkZW50aXR5IHJldHVybnMg ZXhhY3QgaW50ZWdlcnMiCisgICAgICAobGV0KiAoKHggKHZlY3RvciAnYSAiYmNEIiAjXGMgJyhk IDIuNzE4KSAtNDIgKGJ5dGV2ZWN0b3IpICcjKCkgKGJ5dGV2ZWN0b3IgOSAyMCkpKQorICAgICAg ICAgICAgICh5IHgpCisgICAgICAgICAgICAgKGgxIChoYXNoLWJ5LWlkZW50aXR5IHgpKQorICAg ICAgICAgICAgIChoMiAoaGFzaC1ieS1pZGVudGl0eSB5KSkpCisgICAgICAgIChhbmQgKGV4YWN0 LWludGVnZXI/IGgxKQorICAgICAgICAgICAgIChleGFjdC1pbnRlZ2VyPyBoMikKKyAgICAgICAg ICAgICAoPSBoMSBoMikpKSkKKworICAgIChwYXNzLWlmICJoYXNoIHJldHVybnMgZXhhY3QgaW50 ZWdlcnMgMiIKKyAgICAgIChsZXQqICgoeCAobGlzdCAxIDIgMykpCisgICAgICAgICAgICAgKHkg KGNvbnMgMSAoY2RyIHgpKSkKKyAgICAgICAgICAgICAoaDEgKGhhc2ggeCA2MCkpCisgICAgICAg ICAgICAgKGgyIChoYXNoIHkgNjApKSkKKyAgICAgICAgKGFuZCAoZXhhY3QtaW50ZWdlcj8gaDEp CisgICAgICAgICAgICAgKGV4YWN0LWludGVnZXI/IGgyKQorICAgICAgICAgICAgICg9IGgxIGgy KSkpKQorCisgICAgKHBhc3MtaWYgInN0cmluZy1oYXNoIHJldHVybnMgZXhhY3QgaW50ZWdlcnMg MiIKKyAgICAgIChsZXQqICgoeCAiYWJjZCIpCisgICAgICAgICAgICAgKHkgKHN0cmluZy1hcHBl bmQgImFiIiAiY2QiKSkKKyAgICAgICAgICAgICAoaDEgKHN0cmluZy1oYXNoIHggOTcpKQorICAg ICAgICAgICAgIChoMiAoc3RyaW5nLWhhc2ggeSA5NykpKQorICAgICAgICAoYW5kIChleGFjdC1p bnRlZ2VyPyBoMSkKKyAgICAgICAgICAgICAoZXhhY3QtaW50ZWdlcj8gaDIpCisgICAgICAgICAg ICAgKD0gaDEgaDIpKSkpCisKKyAgICAocGFzcy1pZiAic3RyaW5nLWNpLWhhc2ggcmV0dXJucyBl eGFjdCBpbnRlZ2VycyAyIgorICAgICAgKGxldCogKCh4ICJIZWxsbyBUaGVyZSEiKQorICAgICAg ICAgICAgICh5ICJoZWxsbyBUSEVSRSEiKQorICAgICAgICAgICAgIChoMSAoc3RyaW5nLWNpLWhh c2ggeCAxMDEpKQorICAgICAgICAgICAgIChoMiAoc3RyaW5nLWNpLWhhc2ggeSAxMDEpKSkKKyAg ICAgICAgKGFuZCAoZXhhY3QtaW50ZWdlcj8gaDEpCisgICAgICAgICAgICAgKGV4YWN0LWludGVn ZXI/IGgyKQorICAgICAgICAgICAgICg9IGgxIGgyKSkpKQorCisgICAgKHBhc3MtaWYgImhhc2gt YnktaWRlbnRpdHkgcmV0dXJucyBleGFjdCBpbnRlZ2VycyAyIgorICAgICAgKGxldCogKCh4ICh2 ZWN0b3IgJ2EgImJjRCIgI1xjICcoZCAyLjcxOCkgLTQyIChieXRldmVjdG9yKSAnIygpIChieXRl dmVjdG9yIDE5IDIwKSkpCisgICAgICAgICAgICAgKHkgeCkKKyAgICAgICAgICAgICAoaDEgKGhh c2gtYnktaWRlbnRpdHkgeCAxMDIpKQorICAgICAgICAgICAgIChoMiAoaGFzaC1ieS1pZGVudGl0 eSB5IDEwMikpKQorICAgICAgICAoYW5kIChleGFjdC1pbnRlZ2VyPyBoMSkKKyAgICAgICAgICAg ICAoZXhhY3QtaW50ZWdlcj8gaDIpCisgICAgICAgICAgICAgKD0gaDEgaDIpKSkpCisKKyAgICAo cGFzcy1pZiAiaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBmdW5jdGlvbnMgcHJvcGVy bHkiCisgICAgICAobGV0ICgoZiAoaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBodC1m aXhudW0pKSkKKyAgICAgICAgKGlmIChwcm9jZWR1cmU/IGYpCisgICAgICAgICAgICAoZiAzNCAz NCkKKyAgICAgICAgICAgICN0KSkpCisKKyAgICAocGFzcy1pZiAiaGFzaC10YWJsZS1oYXNoLWZ1 bmN0aW9uIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgIChsZXQgKChmIChoYXNoLXRhYmxlLWhh c2gtZnVuY3Rpb24gaHQtZml4bnVtKSkpCisgICAgICAgIChpZiAocHJvY2VkdXJlPyBmKQorICAg ICAgICAgICAgKD0gKGYgMzQpIChmIDM0KSkKKyAgICAgICAgICAgICN0KSkpCisKKyAgICAocGFz cy1pZi1lcXVhbCAiaGFzaC10YWJsZS1leGlzdHM/IGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAg ICAgJygjdCAjdCAjZiAjZiAjdCAjZiAjZiAjZiAjZiAjdCAjZikKKyAgICAgIChtYXAgKGxhbWJk YSAoa2V5KSAoaGFzaC10YWJsZS1leGlzdHM/IGh0LWZpeG51bTIga2V5KSkKKyAgICAgICAgICAg JygwIDEgMiAzIDQgNSA2IDcgOCA5IDEwKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10 YWJsZS13YWxrIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgKGFwcGx5ICsKKyAgICAgICAg ICAgICAgIChtYXAgKGxhbWJkYSAoeCkgKCogeCB4KSkKKyAgICAgICAgICAgICAgICAgICAgJygw IDEgMiAzIDQgNSA2IDcgOCA5KSkpCisgICAgICAobGV0ICgobiAwKSkKKyAgICAgICAgKGhhc2gt dGFibGUtd2FsayBodC1maXhudW0yCisgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAo a2V5IHZhbCkgKHNldCEgbiAoKyBuIGtleSkpKSkKKyAgICAgICAgbikpCisKKyAgICAocGFzcy1p Zi1lcXVhbCAiaGFzaC10YWJsZS1mb2xkIHdpdGggcmV2ZXJzZWQgYXJndW1lbnRzIGZ1bmN0aW9u cyBwcm9wZXJseSIKKyAgICAgICAgJygwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0IDgxKQorICAgICAg KGxpc3Qtc29ydCA8IChoYXNoLXRhYmxlLWZvbGQgaHQtZml4bnVtMgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCBhY2MpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIGtleSBhY2MpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJygpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10 YWJsZS1tZXJnZSEgZnVuY3Rpb25zIHByb3Blcmx5IgorICAgICAgICAnKCgwIC4gMCkKKyAgICAg ICAgICAoLjI1IC4gLjUpCisgICAgICAgICAgKDEgLiAxKQorICAgICAgICAgICg0IC4gMikKKyAg ICAgICAgICAoOSAuIDMpCisgICAgICAgICAgKDE2IC4gNCkKKyAgICAgICAgICAoMjUgLiA1KQor ICAgICAgICAgICgzNiAuIDYpCisgICAgICAgICAgKDQ5IC4gNykKKyAgICAgICAgICAoNjQgLiA4 KQorICAgICAgICAgICg4MSAuIDkpCisgICAgICAgICAgKDEyMSAuIC0xMSkKKyAgICAgICAgICAo MTQ0IC4gLTEyKSkKKyAgICAgIChsZXQgKChodCAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bTIg I3QpKQorICAgICAgICAgICAgKGh0MiAoaGFzaC10YWJsZSBudW1iZXItY29tcGFyYXRvcgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAuMjUgLjUgNjQgOTk5OSA4MSA5OTk4IDEyMSAtMTEg MTQ0IC0xMikpKQorICAgICAgICAoaGFzaC10YWJsZS1tZXJnZSEgaHQgaHQyKQorICAgICAgICAo bGlzdC1zb3J0IChsYW1iZGEgKHggeSkgKDwgKGNhciB4KSAoY2FyIHkpKSkKKyAgICAgICAgICAg ICAgICAgICAoaGFzaC10YWJsZS0+YWxpc3QgaHQpKSkpKSkKKworOzsgZW9mCi0tIAoyLjE5LjEK Cg== --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="US-ASCII"; name="0008-Fix-bugs-in-GENERIC-HASH-TABLES.patch" Content-Disposition: attachment; filename="0008-Fix-bugs-in-GENERIC-HASH-TABLES.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqvhvnow2> X-Attachment-Id: f_jqvhvnow2 RnJvbSA1NTRiNDQwYzQ4OGE5MGM4ZjZiZDJkOWJmMGFlZTI0MjVkYWI2N2ZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDEyIEphbiAyMDE5IDE4OjE1OjQ0 IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAwOC8xMF0gRml4IGJ1Z3MgaW4gR0VORVJJQy1IQVNILVRB QkxFUwoKSEFTSC1UQUJMRS1QUlVORSEgZGlkbid0IHVwZGF0ZSBzaXplIGFmdGVyIHJlbW92aW5n IGtleXMuCkhBU0gtVEFCTEUtREVMRVRFISBhY2Nlc3NlZCBoYXNoIGZ1bmN0aW9uIGFuZCBhc3Nv Y2lhdG9yCiAgb25jZSBwZXIga2V5LCBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBvbmx5IG9uY2UgcGVy CiAgcHJvY2VkdXJlIGNhbGwuCgoqIG1vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVzLnNj bSAoaGFzaC10YWJsZS1wcnVuZSEpOgogIE5vdyB1cGRhdGVzIHNpemUgYWZ0ZXIgcmVtb3Zpbmcg a2V5cyAoYnVnKS4KKiAoaGFzaC10YWJsZS1kZWxldGUhKTogdXNlIFdJVEgtSEFTSFgtVkFMVUVT IG91dHNpZGUgb2YgbG9vcCwKICBzbyB0aGF0IGhhc2ggZnVuY3Rpb24gYW5kIGFzc29jaWF0b3Ig YXJlIGFjY2Vzc2VkIG9ubHkgb25jZS4KLS0tCiBtb2R1bGUvaWNlLTkvZ2VuZXJpYy1oYXNoLXRh Ymxlcy5zY20gfCAyNSArKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MTQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbW9kdWxlL2lj ZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtIGIvbW9kdWxlL2ljZS05L2dlbmVyaWMtaGFzaC10 YWJsZXMuc2NtCmluZGV4IDMxZGVhZDk3YS4uNjJmZDViYjEzIDEwMDY0NAotLS0gYS9tb2R1bGUv aWNlLTkvZ2VuZXJpYy1oYXNoLXRhYmxlcy5zY20KKysrIGIvbW9kdWxlL2ljZS05L2dlbmVyaWMt aGFzaC10YWJsZXMuc2NtCkBAIC01MTcsMTkgKzUxNywyMCBAQCBudW1iZXIgb2Yga2V5cyB0aGF0 IGhhZCBhc3NvY2lhdGlvbnMuIgogICAgICAgICAgIChpZiAoaGFzaC10YWJsZS1kZWxldGUtc2lu Z2xlISBodCBrZXkxKSAxIDApKQogICAgICAgKGJlZ2luCiAgICAgICAgIChhc3NlcnQtbXV0YWJs ZSBodCkKLSAgICAgICAgKGxldCogKChjb3VudCAwKQotICAgICAgICAgICAgICAgKGRlbGV0ZS1v bmUhIChsYW1iZGEgKGtleSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aXRoLWhh c2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFibGUpIGh0CisgICAgICAgICh3aXRoLWhhc2h4LXZhbHVl cyAoaCBhIHJlYWwtdGFibGUpIGh0CisgICAgICAgICAgKGxldCogKChjb3VudCAwKQorICAgICAg ICAgICAgICAgICAoc2l6ZSAoaHQtc2l6ZSBodCkpCisgICAgICAgICAgICAgICAgIChkZWxldGUt b25lISAobGFtYmRhIChrZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVu IChub3QgKGVxPyBodC11bnNwZWNpZmllZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGhhc2h4LXJlZiBoIGEgcmVhbC10YWJsZSBrZXkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHQtdW5z cGVjaWZpZWQpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ISBjb3Vu dCAoKyAxIGNvdW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgt cmVtb3ZlISBoIGEgcmVhbC10YWJsZSBrZXkpKSkpKSkKLSAgICAgICAgICAoZGVsZXRlLW9uZSEg a2V5MSkKLSAgICAgICAgICAoZm9yLWVhY2ggZGVsZXRlLW9uZSEga2V5cykKLSAgICAgICAgICAo dW5sZXNzIChvciAoaHQtd2Vha25lc3MgaHQpICh6ZXJvPyBjb3VudCkpCi0gICAgICAgICAgICAo aHQtc2l6ZSEgaHQgKC0gKGh0LXNpemUgaHQpIGNvdW50KSkpCi0gICAgICAgICAgY291bnQpKSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJl YWwtdGFibGUga2V5KSkpKSkKKyAgICAgICAgICAgIChkZWxldGUtb25lISBrZXkxKQorICAgICAg ICAgICAgKGZvci1lYWNoIGRlbGV0ZS1vbmUhIGtleXMpCisgICAgICAgICAgICAodW5sZXNzIChv ciAoaHQtd2Vha25lc3MgaHQpICh6ZXJvPyBjb3VudCkpCisgICAgICAgICAgICAgIChodC1zaXpl ISBodCAoLSBzaXplIGNvdW50KSkpCisgICAgICAgICAgICBjb3VudCkpKSkpCiAKIChkZWZpbmUg KGhhc2gtdGFibGUtaW50ZXJuISBodCBrZXkgZmFpbHVyZSkKICAgIkVmZmVjdGl2ZWx5IGludm9r ZXMgSEFTSC1UQUJMRS1SRUYgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFuZApAQCAtODIwLDgg KzgyMSwxMCBAQCBQUk9DIHJldHVybnMgdHJ1ZS4gUmV0dXJucyBhbiB1bnNwZWNpZmllZCB2YWx1 ZS4iCiAgIChhc3NlcnQtbXV0YWJsZSBodCkKICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVh bC10YWJsZSkgaHQKICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKQotICAgICAg ICAgICAgICAgICAgICAgKGlmIChwcm9jIGtleSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJlYWwtdGFibGUga2V5KSkpCisgICAgICAgICAgICAgICAg ICAgICAod2hlbiAocHJvYyBrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAodW5sZXNz IChodC13ZWFrbmVzcyBodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaHQtc2l6ZSEgaHQg KC0gKGh0LXNpemUgaHQpIDEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXJlbW92 ZSEgaCBhIHJlYWwtdGFibGUga2V5KSkpCiAgICAgICAgICAgICAgICAgICAgcmVhbC10YWJsZSkp KQogCiAMCi0tIAoyLjE5LjEKCg== --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="US-ASCII"; name="0010-Created-a-procedure-that-returns-the-size-of-a-hash-.patch" Content-Disposition: attachment; filename="0010-Created-a-procedure-that-returns-the-size-of-a-hash-.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqvhvnp14> X-Attachment-Id: f_jqvhvnp14 RnJvbSBlMjc0NTI3NWU4ZWVlYWI1ZDdiOTE3NDZlOTJjMWMwZTc4ZmZjOTNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDEzIEphbiAyMDE5IDIwOjQ0OjE4 IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAxMC8xMF0gQ3JlYXRlZCBhIHByb2NlZHVyZSB0aGF0IHJl dHVybnMgdGhlIHNpemUgb2YgYSBoYXNoCiB0YWJsZQoKVGhlIG1vZHVsZSAoSUNFLTkgR0VORVJJ Qy1IQVNILVRBQkxFUykgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGhhc2ggdGFibGUKc2l6ZSBieSBp dHNlbGYuIE5vdywgYSBwcm9jZWR1cmUgSEFTSC1OLUlURU1TIHdhcyBpbXBsZW1lbnRlZCBpbgon bGliZ3VpbGUvaGFzaHRhYi5jJyB0byBhY2Nlc3MgdGhlIG5faXRlbXMgZmllbGQgb2YgR3VpbGUg aGFzaCB0YWJsZQpzdHJ1Y3R1cmUuCgoqIGxpYmd1aWxlL2hhc2h0YWIuYyAoc2NtX2hhc2hfbl9p dGVtcyk6IGNyZWF0ZWQsIGl0IHJldHVybnMgdGhlIG51bWJlcgogIG9mIGl0ZW1zIHRoYXQgdGhl IGdpdmVuIGhhc2ggdGFibGUgaGFzLiBJdCB3b3JrcyBmb3Igbm9ybWFsIGFuZCB3ZWFrCiAgaGFz aCB0YWJsZXMuCiogbW9kdWxlL2ljZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtOiByZW1vdmVk ICdzaXplJyBmaWVsZCBvZgogIDxnZW5lcmljLWhhc2gtdGFibGU+IHJlY29yZCB0eXBlLiBObyBw cm9jZWR1cmVzIG5lZWQgdG8gdXBkYXRlIGl0CiAgYW55bW9yZS4KKGhhc2gtdGFibGUtc2l6ZSk6 IG5vdyBhY2Nlc3NlcyB0aGUgc2l6ZSB1c2luZyBIQVNILU4tSVRFTVMuIFRoYXQKICBndWFyYW50 ZWVzIE8oMSkgcHJvY2VkdXJlIHRpbWUuCi0tLQogbGliZ3VpbGUvaGFzaHRhYi5jICAgICAgICAg ICAgICAgICAgIHwgIDE5ICsrLQogbGliZ3VpbGUvaGFzaHRhYi5oICAgICAgICAgICAgICAgICAg IHwgICAxICsKIGxpYmd1aWxlL3dlYWstdGFibGUuYyAgICAgICAgICAgICAgICB8ICAxNCArKwog bGliZ3VpbGUvd2Vhay10YWJsZS5oICAgICAgICAgICAgICAgIHwgICAzICstCiBtb2R1bGUvaWNl LTkvZ2VuZXJpYy1oYXNoLXRhYmxlcy5zY20gfCAyMzAgKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tCiA1IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCAxNTAgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvaGFzaHRhYi5jIGIvbGliZ3VpbGUvaGFzaHRhYi5jCmlu ZGV4IGI0ZjAwNGMxZC4uZGQwNjU5ZjdjIDEwMDY0NAotLS0gYS9saWJndWlsZS9oYXNodGFiLmMK KysrIGIvbGliZ3VpbGUvaGFzaHRhYi5jCkBAIC0yMTAsNiArMjEwLDIyIEBAIFNDTV9ERUZJTkUg KHNjbV9oYXNoX3RhYmxlX3AsICJoYXNoLXRhYmxlPyIsIDEsIDAsIDAsCiB9CiAjdW5kZWYgRlVO Q19OQU1FCiAKK1NDTV9ERUZJTkUgKHNjbV9oYXNoX25faXRlbXMsICJoYXNoLW4taXRlbXMiLCAx LCAwLCAwLAorICAgICAgICAgICAgKFNDTSB0YWJsZSksCisgICAgICAgICAgICAiUmV0dXJuIHRo ZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGdpdmVuIGhhc2ggVEFCTEUuIikKKyNkZWZpbmUg RlVOQ19OQU1FIHNfc2NtX2hhc2hfbl9pdGVtcworeworICBpZiAoU0NNX1dFQUtfVEFCTEVfUCAo dGFibGUpKQorICAgIHsKKyAgICAgIHJldHVybiBzY21fd2Vha190YWJsZV9uX2l0ZW1zICh0YWJs ZSk7CisgICAgfQorCisgIFNDTV9WQUxJREFURV9IQVNIVEFCTEUgKDEsIHRhYmxlKTsKKworICBy ZXR1cm4gc2NtX2Zyb21fdWxvbmcgKFNDTV9IQVNIVEFCTEVfTl9JVEVNUyAodGFibGUpKTsKK30K KyN1bmRlZiBGVU5DX05BTUUKKwogCiAMCiAvKiBBY2Nlc3NpbmcgaGFzaCB0YWJsZSBlbnRyaWVz LiAgKi8KQEAgLTk4Niw4ICsxMDAyLDcgQEAgY291bnRfcHJvYyAodm9pZCAqcHJlZCwgU0NNIGtl eSwgU0NNIGRhdGEsIFNDTSB2YWx1ZSkKIFNDTV9ERUZJTkUgKHNjbV9oYXNoX2NvdW50LCAiaGFz aC1jb3VudCIsIDIsIDAsIDAsCiAgICAgICAgICAgICAoU0NNIHByZWQsIFNDTSB0YWJsZSksCiAg ICAgICAgICAgICAiUmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGdpdmVuIGhh c2ggVEFCTEUgdGhhdFxuIgotICAgICAgICAgICAgImNhdXNlIGAoUFJFRCBLRVkgVkFMVUUpJyB0 byByZXR1cm4gdHJ1ZS4gIFRvIHF1aWNrbHkgZGV0ZXJtaW5lXG4iCi0gICAgICAgICAgICAidGhl IHRvdGFsIG51bWJlciBvZiBlbGVtZW50cywgdXNlIGAoY29uc3QgI3QpJyBmb3IgUFJFRC4iKQor ICAgICAgICAgICAgImNhdXNlIGAoUFJFRCBLRVkgVkFMVUUpJyB0byByZXR1cm4gdHJ1ZS4iKQog I2RlZmluZSBGVU5DX05BTUUgc19zY21faGFzaF9jb3VudAogewogICBTQ00gaW5pdDsKZGlmZiAt LWdpdCBhL2xpYmd1aWxlL2hhc2h0YWIuaCBiL2xpYmd1aWxlL2hhc2h0YWIuaAppbmRleCA2MWU4 MWIzNDEuLjcwZTlkYWFiYiAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvaGFzaHRhYi5oCisrKyBiL2xp Ymd1aWxlL2hhc2h0YWIuaApAQCAtNzgsNiArNzgsNyBAQCBTQ01fQVBJIFNDTSBzY21fY19tYWtl X2hhc2hfdGFibGUgKHVuc2lnbmVkIGxvbmcgayk7CiBTQ01fQVBJIFNDTSBzY21fbWFrZV9oYXNo X3RhYmxlIChTQ00gbik7CiAKIFNDTV9BUEkgU0NNIHNjbV9oYXNoX3RhYmxlX3AgKFNDTSBoKTsK K1NDTV9BUEkgU0NNIHNjbV9oYXNoX25faXRlbXMgKFNDTSBoYXNoKTsKIAogU0NNX0lOVEVSTkFM IHZvaWQgc2NtX2lfcmVoYXNoIChTQ00gdGFibGUsIHNjbV90X2hhc2hfZm4gaGFzaF9mbiwKIAkJ CQl2b2lkICpjbG9zdXJlLCBjb25zdCBjaGFyICpmdW5jX25hbWUpOwpkaWZmIC0tZ2l0IGEvbGli Z3VpbGUvd2Vhay10YWJsZS5jIGIvbGliZ3VpbGUvd2Vhay10YWJsZS5jCmluZGV4IDFlNGQ4ZDMw Mi4uM2Y5NGI0ZmQ5IDEwMDY0NAotLS0gYS9saWJndWlsZS93ZWFrLXRhYmxlLmMKKysrIGIvbGli Z3VpbGUvd2Vhay10YWJsZS5jCkBAIC01MTUsNiArNTE1LDIwIEBAIHNjbV93ZWFrX3RhYmxlX3Ag KFNDTSBvYmopCiAgIHJldHVybiBzY21fZnJvbV9ib29sIChTQ01fV0VBS19UQUJMRV9QIChvYmop KTsKIH0KIAorU0NNCitzY21fd2Vha190YWJsZV9uX2l0ZW1zIChTQ00gdGFibGUpCisjZGVmaW5l IEZVTkNfTkFNRSAid2Vhay10YWJsZS1uLWl0ZW1zIgoreworICBzY21fdF93ZWFrX3RhYmxlICp0 OworCisgIFNDTV9WQUxJREFURV9XRUFLX1RBQkxFICgxLCB0YWJsZSk7CisKKyAgdCA9IFNDTV9X RUFLX1RBQkxFICh0YWJsZSk7CisKKyAgcmV0dXJuIHNjbV9mcm9tX3Vsb25nICh0LT5uX2l0ZW1z KTsKK30KKyN1bmRlZiBGVU5DX05BTUUKKwogU0NNCiBzY21fY193ZWFrX3RhYmxlX3JlZiAoU0NN IHRhYmxlLCB1bnNpZ25lZCBsb25nIHJhd19oYXNoLAogICAgICAgICAgICAgICAgICAgICAgIHNj bV90X3RhYmxlX3ByZWRpY2F0ZV9mbiBwcmVkLApkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvd2Vhay10 YWJsZS5oIGIvbGliZ3VpbGUvd2Vhay10YWJsZS5oCmluZGV4IGJjYmM5NGUzZi4uYjMwOWIxMWY5 IDEwMDY0NAotLS0gYS9saWJndWlsZS93ZWFrLXRhYmxlLmgKKysrIGIvbGliZ3VpbGUvd2Vhay10 YWJsZS5oCkBAIC00NSw2ICs0NSw3IEBAIHR5cGVkZWYgU0NNICgqc2NtX3RfdGFibGVfZm9sZF9m bikgKHZvaWQgKmNsb3N1cmUsIFNDTSBrLCBTQ00gdiwgU0NNIHJlc3VsdCk7CiBTQ01fSU5URVJO QUwgU0NNIHNjbV9jX21ha2Vfd2Vha190YWJsZSAodW5zaWduZWQgbG9uZyBrLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjbV90X3dlYWtfdGFibGVfa2luZCBraW5k KTsKIFNDTV9JTlRFUk5BTCBTQ00gc2NtX3dlYWtfdGFibGVfcCAoU0NNIGgpOworU0NNX0lOVEVS TkFMIFNDTSBzY21fd2Vha190YWJsZV9uX2l0ZW1zIChTQ00gdGFibGUpOwogCiBTQ01fSU5URVJO QUwgU0NNIHNjbV9jX3dlYWtfdGFibGVfcmVmIChTQ00gdGFibGUsIHVuc2lnbmVkIGxvbmcgcmF3 X2hhc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY21fdF90YWJs ZV9wcmVkaWNhdGVfZm4gcHJlZCwKQEAgLTYzLDcgKzY0LDcgQEAgU0NNX0lOVEVSTkFMIHZvaWQg c2NtX3dlYWtfdGFibGVfcmVtcV94IChTQ00gdGFibGUsIFNDTSBrZXkpOwogU0NNX0lOVEVSTkFM IHZvaWQgc2NtX3dlYWtfdGFibGVfY2xlYXJfeCAoU0NNIHRhYmxlKTsKIAogU0NNX0lOVEVSTkFM IFNDTSBzY21fY193ZWFrX3RhYmxlX2ZvbGQgKHNjbV90X3RhYmxlX2ZvbGRfZm4gcHJvYywgdm9p ZCAqY2xvc3VyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NNIGlu aXQsIFNDTSB0YWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U0NNIGluaXQsIFNDTSB0YWJsZSk7CiBTQ01fSU5URVJOQUwgU0NNIHNjbV93ZWFrX3RhYmxlX2Zv bGQgKFNDTSBwcm9jLCBTQ00gaW5pdCwgU0NNIHRhYmxlKTsKIFNDTV9JTlRFUk5BTCB2b2lkIHNj bV93ZWFrX3RhYmxlX2Zvcl9lYWNoIChTQ00gcHJvYywgU0NNIHRhYmxlKTsKIFNDTV9JTlRFUk5B TCBTQ00gc2NtX3dlYWtfdGFibGVfbWFwX3RvX2xpc3QgKFNDTSBwcm9jLCBTQ00gdGFibGUpOwpk aWZmIC0tZ2l0IGEvbW9kdWxlL2ljZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtIGIvbW9kdWxl L2ljZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtCmluZGV4IDYyZmQ1YmIxMy4uNDVjZDEzNjRh IDEwMDY0NAotLS0gYS9tb2R1bGUvaWNlLTkvZ2VuZXJpYy1oYXNoLXRhYmxlcy5zY20KKysrIGIv bW9kdWxlL2ljZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtCkBAIC0xODcsMTkgKzE4NywxNiBA QCBhbGlzdCBrZXlzIHdpdGggRVFVSVYtRlVOQ1RJT04uIgogCiAoZGVmaW5lLXJlY29yZC10eXBl IGdlbmVyaWMtaGFzaC10YWJsZQogICAobWFrZS1nZW5lcmljLWhhc2gtdGFibGUgcmVhbC10YWJs ZSBoYXNoLWZ1bmN0aW9uIGFzc29jaWF0b3Igd2Vha25lc3MKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIG11dGFibGU/IHNpemUgZXF1aXZhbGVuY2UtZnVuY3Rpb24gb3JpZ2luYWwtaGFzaC1m dW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGFibGU/IGVxdWl2YWxlbmNl LWZ1bmN0aW9uIG9yaWdpbmFsLWhhc2gtZnVuY3Rpb24pCiAgIGhhc2gtdGFibGU/CiAgIDs7IFRo ZXNlIHRocmVlIGFyZSB0aGUgbW9zdCBhY2Nlc3NlZCBmaWVsZHMuCiAgIChyZWFsLXRhYmxlIGh0 LXJlYWwtdGFibGUgaHQtcmVhbC10YWJsZSEpCiAgIChoYXNoLWZ1bmN0aW9uIGh0LWhhc2gtZnVu Y3Rpb24pCiAgIChhc3NvY2lhdG9yIGh0LWFzc29jaWF0b3IpCi0gIDs7IFdlYWsgaGFzaCB0YWJs ZXMgZG9uJ3QgdXNlIGhhbmRsZXMgYW5kIGRvbid0IHVwZGF0ZSBodC1zaXplLgorICA7OyBXZWFr IGhhc2ggdGFibGVzIGRvbid0IHVzZSBoYW5kbGVzLgogICAod2Vha25lc3MgaHQtd2Vha25lc3Mp CiAgIDs7IFN1cHBvcnRzIGltbXV0YWJpbGl0eS4KICAgKG11dGFibGU/IGhhc2gtdGFibGUtbXV0 YWJsZT8pCi0gIDs7IFNpemUgb2YgaGFzaC10YWJsZSwgYWxsb3dpbmcgTygxKSBoYXNoLXRhYmxl LXNpemUgZm9yCi0gIDs7IG5vbi13ZWFrIGhhc2ggdGFibGVzLgotICAoc2l6ZSBodC1zaXplIGh0 LXNpemUhKQogICA7OyBUaGVzZSBhcmUgbW9zdGx5IG5lZWRlZCBmb3IgcmVmbGVjdGl2ZSBxdWVy aWVzCiAgIChlcXVpdmFsZW5jZS1mdW5jdGlvbiBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0 aW9uKQogICAob3JpZ2luYWwtaGFzaC1mdW5jdGlvbiBoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24p KQpAQCAtMjM5LDEwICsyMzYsMTAgQEAgYWxpc3Qga2V5cyB3aXRoIEVRVUlWLUZVTkNUSU9OLiIK ICAgICAgIChnZXQtaGFzaC1mdW5jdGlvbnMgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlvbikK ICAgICAobGV0ICgocmVhbC10YWJsZSAoKGd1aWxlLWh0LWN0b3Igd2Vha25lc3MpIGNhcGFjaXR5 KSkpCiAgICAgICA7OyBBcmd1bWVudHM6IHJlYWwtdGFibGUgaGFzaC1mdW5jdGlvbiBhc3NvY2lh dG9yCi0gICAgICA7OyAgICAgICAgICAgIHdlYWtuZXNzIG11dGFibGU/IHNpemUgZXF1aXZhbGVu Y2UtZnVuY3Rpb24gb3JpZy1oYXNoLWZ1bmN0aW9uCisgICAgICA7OyAgICAgICAgICAgIHdlYWtu ZXNzIG11dGFibGU/IGVxdWl2YWxlbmNlLWZ1bmN0aW9uIG9yaWctaGFzaC1mdW5jdGlvbgogICAg ICAgKG1ha2UtZ2VuZXJpYy1oYXNoLXRhYmxlIHJlYWwtdGFibGUgaW50ZXJuYWwtaGFzaC1mdW5j dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVpdmFsZW5jZS1wcm9jLT5h c3NvY2lhdG9yIGVxdWl2LWZ1bmN0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdlYWtuZXNzIChhbmQgbXV0YWJsZSAjdCkgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdlYWtuZXNzIChhbmQgbXV0YWJsZSAjdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlcXVpdi1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uKSkpKQogCiA7OyBJZiB0aGUgbGlzdCBv ZiBhcmd1bWVudHMgaXMgdXBkYXRlZCwgSEFTSC1UQUJMRSwgQUxJU1QtPkhBU0gtVEFCTEUsCkBA IC0zMjUsOCArMzIyLDcgQEAgaXMgc2lnbmFsZWQuIgogICAgICAgICAgICAgICAgICAgICAgICAg IChlcnJvciAiVHdvIGVxdWl2YWxlbnQga2V5cyB3ZXJlIHByb3ZpZGVkIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY2FyIGhhbmRsZSkgKGNhciBrdnMpKSkKICAgICAgICAgICAg ICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAoY2FkciBrdnMpKSkKLSAgICAgICAgICAgICAg ICAgICAgIChsb29wIChjZGRyIGt2cykpKSkKLSAgICAgICAgICAgICAgKGh0LXNpemUhIGh0IGNh cGFjaXR5KSkpKQorICAgICAgICAgICAgICAgICAgICAgKGxvb3AgKGNkZHIga3ZzKSkpKSkpKQog ICAgICAgaHQpKSkKIAogKGRlZmluZSogKGhhc2gtdGFibGUtdW5mb2xkIHN0b3A/IG1hcHBlciBz dWNjZXNzb3Igc2VlZApAQCAtMzQxLDI1ICszMzcsMTIgQEAgdGhlIHByb2NlZHVyZSBTVUNDRVNT T1IgdG8gU0VFRCwgYW5kIHJlcGVhdCB0aGlzIGFsZ29yaXRobS4iCiAgIChsZXQgKChyZXN1bHQg KCVtYWtlLWhhc2gtdGFibGUgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlvbgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG11dGFibGUgY2FwYWNpdHkgd2Vha25lc3MpKSkKICAg ICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSByZXN1bHQKLSAgICAgIChpZiAo aHQtd2Vha25lc3MgcmVzdWx0KQotICAgICAgICAgIChsZXQgbG9vcCAoKHNlZWQgc2VlZCkpCi0g ICAgICAgICAgICAoaWYgKHN0b3A/IHNlZWQpCi0gICAgICAgICAgICAgICAgcmVzdWx0Ci0gICAg ICAgICAgICAgICAgKHJlY2VpdmUgKGtleSB2YWwpIChtYXBwZXIgc2VlZCkKLSAgICAgICAgICAg ICAgICAgIChoYXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpCi0gICAgICAgICAgICAg ICAgICAobG9vcCAoc3VjY2Vzc29yIHNlZWQpKSkpKQotICAgICAgICAgIChsZXQgKChzaXplICho dC1zaXplIHJlc3VsdCkpKQotICAgICAgICAgICAgKGxldCBsb29wICgoc2VlZCBzZWVkKSkKLSAg ICAgICAgICAgICAgKGlmIChzdG9wPyBzZWVkKQotICAgICAgICAgICAgICAgICAgcmVzdWx0Ci0g ICAgICAgICAgICAgICAgICAocmVjZWl2ZSAoa2V5IHZhbCkgKG1hcHBlciBzZWVkKQotICAgICAg ICAgICAgICAgICAgICAobGV0ICgoaGFuZGxlIChoYXNoeC1jcmVhdGUtaGFuZGxlISBoIGEgcmVh bC10YWJsZSBrZXkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaHQtdW5zcGVjaWZpZWQpKSkKLSAgICAgICAgICAgICAgICAgICAgICAoaWYg KGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgIChzZXQhIHNpemUgKCsgMSBzaXplKSkpCi0gICAgICAgICAgICAgICAgICAgICAgKHNldC1j ZHIhIGhhbmRsZSB2YWwpKQotICAgICAgICAgICAgICAgICAgICAobG9vcCAoc3VjY2Vzc29yIHNl ZWQpKSkpKQotICAgICAgICAgICAgKGh0LXNpemUhIHJlc3VsdCBzaXplKSkpKQorICAgICAgKGxl dCBsb29wICgoc2VlZCBzZWVkKSkKKyAgICAgICAgKGlmIChzdG9wPyBzZWVkKQorICAgICAgICAg ICAgcmVzdWx0CisgICAgICAgICAgICAocmVjZWl2ZSAoa2V5IHZhbCkgKG1hcHBlciBzZWVkKQor ICAgICAgICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSBrZXkgdmFsKQorICAgICAg ICAgICAgICAobG9vcCAoc3VjY2Vzc29yIHNlZWQpKSkpKSkKICAgICByZXN1bHQpKQogCiAoZGVm aW5lKiAoYWxpc3QtPmhhc2gtdGFibGUgYWxpc3QgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlv bgpAQCAtMzcyLDE5ICszNTUsOSBAQCBjb21lIGxhdGVyLiIKICAgKGxldCAoKHJlc3VsdCAoJW1h a2UtaGFzaC10YWJsZSBlcXVpdi1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbXV0YWJsZSBjYXBhY2l0eSB3ZWFrbmVzcykpKQogICAgICh3 aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFibGUpIHJlc3VsdAotICAgICAgKGlmIChodC13 ZWFrbmVzcyByZXN1bHQpCi0gICAgICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHBhaXIpCi0gICAg ICAgICAgICAgICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFibGUgKGNhciBwYWlyKSAo Y2RyIHBhaXIpKSkKLSAgICAgICAgICAgICAgICAgICAgKHJldmVyc2UgYWxpc3QpKQotICAgICAg ICAgIChsZXQgKChzaXplIChodC1zaXplIHJlc3VsdCkpKQotICAgICAgICAgICAgKGZvci1lYWNo IChsYW1iZGEgKHBhaXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoaGFuZGxlICho YXNoeC1jcmVhdGUtaGFuZGxlIQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaCBhIHJlYWwtdGFibGUgKGNhciBwYWlyKSBodC11bnNwZWNpZmllZCkpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAod2hlbiAoZXE/IGh0LXVuc3BlY2lmaWVkIChjZHIgaGFuZGxlKSkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ISBzaXplICgrIDEgc2l6ZSkpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAoY2RyIHBhaXIpKSkpKQot ICAgICAgICAgICAgICAgICAgICAgIGFsaXN0KQotICAgICAgICAgICAgKGh0LXNpemUhIHJlc3Vs dCBzaXplKSkpKQorICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHBhaXIpCisgICAgICAgICAgICAg ICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSAoY2FyIHBhaXIpIChjZHIgcGFpcikpKQor ICAgICAgICAgICAgICAgIChyZXZlcnNlIGFsaXN0KSkpCiAgICAgcmVzdWx0KSkKIAogDApAQCAt NDE1LDEyICszODgsNyBAQCBLRVkgaXNuJ3QgcHJlc2VudC4iCiAKIChkZWZpbmUgKGhhc2gtdGFi bGUtZW1wdHk/IGh0KQogICAiUmV0dXJucyB3aGV0aGVyIEtFWSBpcyBlbXB0eS4iCi0gIChpZiAo aHQtd2Vha25lc3MgaHQpCi0gICAgICAoY2FsbC9jYyAobGFtYmRhIChleGl0KQotICAgICAgICAg ICAgICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKSAoZXhpdCAjZikpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChodC1yZWFsLXRhYmxlIGh0KSkKLSAgICAgICAg ICAgICAgICAgI3QpKQotICAgICAgKHplcm8/IChodC1zaXplIGh0KSkpKQorICAoemVybz8gKGhh c2gtbi1pdGVtcyAoaHQtcmVhbC10YWJsZSBodCkpKSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1j b250YWlucz8gaHQga2V5KQogICAiUmV0dXJuIHdoZXRoZXIgS0VZIGlzIGEga2V5IGluIEhULiIK QEAgLTQ1MCwxNCArNDE4LDggQEAgYXNzb2NpYXRpb24gaXMgY3JlYXRlZCBiZXR3ZWVuIEtFWSBh bmQgVkFMLiBJZiB0aGVyZSBpcyBhIHByZXZpb3VzCiBhc3NvY2lhdGlvbiBmb3IgS0VZLCBpdCBp cyBkZWxldGVkLiIKICAgKGFzc2VydC1tdXRhYmxlIGh0KQogICAod2l0aC1oYXNoeC12YWx1ZXMg KGggYSByZWFsLXRhYmxlKSBodAotICAgIChpZiAoaHQtd2Vha25lc3MgaHQpCi0gICAgICAgICho YXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpCi0gICAgICAgIChsZXQgKChoYW5kbGUg KGhhc2h4LWNyZWF0ZS1oYW5kbGUhCi0gICAgICAgICAgICAgICAgICAgICAgIGggYSByZWFsLXRh YmxlIGtleQotICAgICAgICAgICAgICAgICAgICAgICBodC11bnNwZWNpZmllZCkpKQotICAgICAg ICAgIChpZiAoZXE/IGh0LXVuc3BlY2lmaWVkIChjZHIgaGFuZGxlKSkKLSAgICAgICAgICAgICAg KGh0LXNpemUhIGh0ICgrIDEgKGh0LXNpemUgaHQpKSkpCi0gICAgICAgICAgKHNldC1jZHIhIGhh bmRsZSB2YWwpKSkpKQorICAgIChoYXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpKQor ICAqdW5zcGVjaWZpZWQqKQogCiAoZGVmaW5lKiAoaGFzaC10YWJsZS1zZXQhIGh0ICM6b3B0aW9u YWwgKGtleTEgaHQtdW5zcGVjaWZpZWQpICh2YWwxIGh0LXVuc3BlY2lmaWVkKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAjOnJlc3QgYXJncykKQEAgLTQ3NywyNSArNDM5LDE1IEBAIGRlbGV0 ZWQuIgogICAgICAgKGJlZ2luCiAgICAgICAgIChhc3NlcnQtbXV0YWJsZSBodCkKICAgICAgICAg KHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgaHQKLSAgICAgICAgICAobGV0ICgo c2V0LW9uZSEgKGlmIChodC13ZWFrbmVzcyBodCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsYW1iZGEgKGtleSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICho YXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRlLWhhbmRsZSEKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCBhIHJlYWwtdGFibGUga2V5Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LXVuc3BlY2lmaWVkKSkp Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZp ZWQgKGNkciBoYW5kbGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo aHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKSkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlIHZhbCkpKSkpKQotICAgICAgICAgICAgKHNldC1v bmUhIGtleTEgdmFsMSkKLSAgICAgICAgICAgIChsZXQgbG9vcCAoKGt2cyBhcmdzKSkKLSAgICAg ICAgICAgICAgKGNvbmQKLSAgICAgICAgICAgICAgICgobnVsbD8ga3ZzKSAqdW5zcGVjaWZpZWQq KQotICAgICAgICAgICAgICAgKChudWxsPyAoY2RyIGt2cykpCi0gICAgICAgICAgICAgICAgKGVy cm9yICJPZGQgbnVtYmVyIG9mIGtleS12YWx1ZSBwYWlycyIKLSAgICAgICAgICAgICAgICAgICAg ICAgKGNvbnMqIGtleTEgdmFsMSBhcmdzKSkpCi0gICAgICAgICAgICAgICAoZWxzZSAoc2V0LW9u ZSEgKGNhciBrdnMpIChjYWRyIGt2cykpCi0gICAgICAgICAgICAgICAgICAgICAobG9vcCAoY2Rk ciBrdnMpKSkpKSkpKSkpCisgICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFibGUga2V5 MSB2YWwxKQorICAgICAgICAgIChsZXQgbG9vcCAoKGt2cyBhcmdzKSkKKyAgICAgICAgICAgIChj b25kCisgICAgICAgICAgICAgKChudWxsPyBrdnMpICp1bnNwZWNpZmllZCopCisgICAgICAgICAg ICAgKChudWxsPyAoY2RyIGt2cykpCisgICAgICAgICAgICAgIChlcnJvciAiT2RkIG51bWJlciBv ZiBrZXktdmFsdWUgcGFpcnMiCisgICAgICAgICAgICAgICAgICAgICAoY29ucyoga2V5MSB2YWwx IGFyZ3MpKSkKKyAgICAgICAgICAgICAoZWxzZSAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSAo Y2FyIGt2cykgKGNhZHIga3ZzKSkKKyAgICAgICAgICAgICAgICAgICAobG9vcCAoY2RkciBrdnMp KSkpKSkpKSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1kZWxldGUtc2luZ2xlISBodCBrZXkpCiAg ICJEZWxldGVzIEtFWSBhbmQgYXNzb2NpYXRlZCB2YWx1ZSBpbiBoYXNoIHRhYmxlIEhULiBSZXR1 cm5zICN0IGlmIEtFWQpAQCAtNTA1LDcgKzQ1Nyw2IEBAIGhhZCBhbiBhc3NvY2lhdGlvbiBhbmQg I2Ygb3RoZXJ3aXNlLiIKICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAoaGFzaHgtcmVmIGgg YSByZWFsLXRhYmxlIGtleSBodC11bnNwZWNpZmllZCkpCiAgICAgICAgICNmCiAgICAgICAgIChi ZWdpbiAoaGFzaHgtcmVtb3ZlISBoIGEgcmVhbC10YWJsZSBrZXkpCi0gICAgICAgICAgICAgICAo aHQtc2l6ZSEgaHQgKC0gKGh0LXNpemUgaHQpIDEpKQogICAgICAgICAgICAgICAgI3QpKSkpCiAK IChkZWZpbmUqIChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQgIzpvcHRpb25hbCAoa2V5MSBodC11bnNw ZWNpZmllZCkgIzpyZXN0IGtleXMpCkBAIC01MTksNyArNDcwLDYgQEAgbnVtYmVyIG9mIGtleXMg dGhhdCBoYWQgYXNzb2NpYXRpb25zLiIKICAgICAgICAgKGFzc2VydC1tdXRhYmxlIGh0KQogICAg ICAgICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSBodAogICAgICAgICAgIChs ZXQqICgoY291bnQgMCkKLSAgICAgICAgICAgICAgICAgKHNpemUgKGh0LXNpemUgaHQpKQogICAg ICAgICAgICAgICAgICAoZGVsZXRlLW9uZSEgKGxhbWJkYSAoa2V5KQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAod2hlbiAobm90IChlcT8gaHQtdW5zcGVjaWZpZWQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoeC1yZWYgaCBhIHJl YWwtdGFibGUga2V5CkBAIC01MjgsOCArNDc4LDYgQEAgbnVtYmVyIG9mIGtleXMgdGhhdCBoYWQg YXNzb2NpYXRpb25zLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgt cmVtb3ZlISBoIGEgcmVhbC10YWJsZSBrZXkpKSkpKQogICAgICAgICAgICAgKGRlbGV0ZS1vbmUh IGtleTEpCiAgICAgICAgICAgICAoZm9yLWVhY2ggZGVsZXRlLW9uZSEga2V5cykKLSAgICAgICAg ICAgICh1bmxlc3MgKG9yIChodC13ZWFrbmVzcyBodCkgKHplcm8/IGNvdW50KSkKLSAgICAgICAg ICAgICAgKGh0LXNpemUhIGh0ICgtIHNpemUgY291bnQpKSkKICAgICAgICAgICAgIGNvdW50KSkp KSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1pbnRlcm4hIGh0IGtleSBmYWlsdXJlKQpAQCAtNTQ2 LDExICs0OTQsOSBAQCBpcyBzZXQgdG8gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIEZBSUxVUkUgYW5k IHRoZSBuZXcgdmFsdWUgaXMgcmV0dXJuZWQuIgogICAgICAgICAgICAgICAgICAgIChoYXNoeC1z ZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICB2YWx1ZSkp CiAgICAgICAgICAgICAgICAgKGVsc2UgdmFsdWUpKSkKLSAgICAgICAgKGxldCAoKGhhbmRsZQot ICAgICAgICAgICAgICAgKGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGggYSByZWFsLXRhYmxlIGtleSBo dC11bnNwZWNpZmllZCkpKQorICAgICAgICAobGV0ICgoaGFuZGxlIChoYXNoeC1jcmVhdGUtaGFu ZGxlISBoIGEgcmVhbC10YWJsZSBrZXkgaHQtdW5zcGVjaWZpZWQpKSkKICAgICAgICAgICAoaWYg KGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkpCi0gICAgICAgICAgICAgIChiZWdpbiAo aHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKQotICAgICAgICAgICAgICAgICAgICAgKHNl dC1jZHIhIGhhbmRsZSAoZmFpbHVyZSkpKSkKKyAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRs ZSAoZmFpbHVyZSkpKQogICAgICAgICAgIChjZHIgaGFuZGxlKSkpKSkKIAogKGRlZmluZSAoaGFz aC10YWJsZS1pbnRlcm4hL2RlZmF1bHQgaHQga2V5IGRlZmF1bHQpCkBAIC01NjYsMTEgKzUxMiw3 IEBAIGlzIHNldCB0byBERUZBVUxUIGFuZCBERUZBVUxUIGlzIHJldHVybmVkLiIKICAgICAgICAg ICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFibGUga2V5IGRlZmF1bHQpCiAgICAgICAg ICAgICAgICAgIGRlZmF1bHQpCiAgICAgICAgICAgICAgICAgKGVsc2UgdmFsdWUpKSkKLSAgICAg ICAgKGxldCAoKGhhbmRsZQotICAgICAgICAgICAgICAgKGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGgg YSByZWFsLXRhYmxlIGtleSBodC11bnNwZWNpZmllZCkpKQotICAgICAgICAgIChpZiAoZXE/IGh0 LXVuc3BlY2lmaWVkIChjZHIgaGFuZGxlKSkKLSAgICAgICAgICAgICAgKGJlZ2luIChodC1zaXpl ISBodCAoKyAxIChodC1zaXplIGh0KSkpCi0gICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEg aGFuZGxlIGRlZmF1bHQpKSkKKyAgICAgICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRlLWhh bmRsZSEgaCBhIHJlYWwtdGFibGUga2V5IGRlZmF1bHQpKSkKICAgICAgICAgICAoY2RyIGhhbmRs ZSkpKSkpCiAKIChkZWZpbmUqIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQga2V5IHVwZGF0ZXIgIzpv cHRpb25hbApAQCAtNjAxLDcgKzU0Myw2IEBAIHByb3ZpZGVkLCBvciBzaWduYWxzIGFuIGVycm9y IG90aGVyd2lzZS4iCiAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSBuZXcpKSkK ICAgICAgICAgICAgICAgICAoZWxzZQogICAgICAgICAgICAgICAgICAobGV0ICgobmV3ICh1cGRh dGVyIChmYWlsdXJlKSkpKQotICAgICAgICAgICAgICAgICAgIChodC1zaXplISBodCAoKyAxICho dC1zaXplIGh0KSkpCiAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFi bGUga2V5IG5ldykpKSkpKSkKICAgKnVuc3BlY2lmaWVkKikKIApAQCAtNjE5LDEyICs1NjAsOCBA QCBVUERBVEVSLCBhbmQgc2V0dGluZyBpdCB0byB0aGUgcmVzdWx0IHRoZXJlb2YuIgogICAgICAg ICA7OyBKLk0uIHNlcGFyYXRlIHRoZSBjYXNlIHdoZXJlIGh0IGlzIHdlYWsgLSBkb24ndCB1c2Ug aGFuZGxlCiAgICAgICAgIChsZXQqICgob2xkIChoYXNoeC1yZWYgaCBhIHJlYWwtdGFibGUga2V5 IGRlZmF1bHQpKSkKICAgICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSBrZXkgKHVw ZGF0ZXIgb2xkKSkpCi0gICAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWNyZWF0ZS1oYW5kbGUh IGggYSByZWFsLXRhYmxlIGtleQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBodC11bnNwZWNpZmllZCkpKQotICAgICAgICAgIChpZiAoZXE/IGh0LXVuc3BlY2lm aWVkIChjZHIgaGFuZGxlKSkKLSAgICAgICAgICAgICAgKGJlZ2luIChodC1zaXplISBodCAoKyAx IChodC1zaXplIGh0KSkpCi0gICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlICh1 cGRhdGVyIGRlZmF1bHQpKSkKLSAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAodXBkYXRl ciAoY2RyIGhhbmRsZSkpKSkpKSkKKyAgICAgICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRl LWhhbmRsZSEgaCBhIHJlYWwtdGFibGUga2V5IGRlZmF1bHQpKSkKKyAgICAgICAgICAoc2V0LWNk ciEgaGFuZGxlICh1cGRhdGVyIChjZHIgaGFuZGxlKSkpKSkpCiAgICp1bnNwZWNpZmllZCopCiAK IChkZWZpbmUgKGhhc2gtdGFibGUtcG9wISBodCkKQEAgLTYzNyw4ICs1NzQsNiBAQCBhbmQgdmFs dWUgYXMgdHdvIHZhbHVlcy4iCiAgICAgICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFi bGUpIGh0CiAgICAgICAgKGhhc2gtZm9yLWVhY2ggKGxhbWJkYSAoa2V5IHZhbHVlKQogICAgICAg ICAgICAgICAgICAgICAgICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJlYWwtdGFibGUga2V5KQotICAg ICAgICAgICAgICAgICAgICAgICAgKHVubGVzcyAoaHQtd2Vha25lc3MgaHQpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgIChodC1zaXplISBodCAoLSAoaHQtc2l6ZSBodCkgMSkpKQogICAgICAg ICAgICAgICAgICAgICAgICAgKHJldHVybiBrZXkgdmFsdWUpKQogICAgICAgICAgICAgICAgICAg ICAgIHJlYWwtdGFibGUpKQogICAgICAoZXJyb3IgIkhhc2ggdGFibGUgaXMgZW1wdHkiIGh0KSkp KQpAQCAtNjQ5LDcgKzU4NCw2IEBAIGFuZCB2YWx1ZSBhcyB0d28gdmFsdWVzLiIKICAgKGlmIGNh cGFjaXR5CiAgICAgICAoaHQtcmVhbC10YWJsZSEgaHQgKChndWlsZS1odC1jdG9yIChodC13ZWFr bmVzcyBodCkpIGNhcGFjaXR5KSkKICAgICAgIChoYXNoLWNsZWFyISAoaHQtcmVhbC10YWJsZSBo dCkpKQotICAoaHQtc2l6ZSEgaHQgMCkKICAgKnVuc3BlY2lmaWVkKikKIAogDApAQCAtNjU4LDEw ICs1OTIsNyBAQCBhbmQgdmFsdWUgYXMgdHdvIHZhbHVlcy4iCiAoZGVmaW5lIChoYXNoLXRhYmxl LXNpemUgaHQpCiAgICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYXNzb2NpYXRpb25zIGluIEhULiBU aGlzIGlzIGd1YXJhbnRlZWQgTygxKSBmb3IKIHRhYmxlcyB3aGVyZSAjOldFQUtORVNTIGlzICNm LiIKLSAgKGlmIChodC13ZWFrbmVzcyBodCkKLSAgICAgIChoYXNoLWZvbGQgKGxhbWJkYSAoa2V5 IHZhbCBhbnMpICgrIDEgYW5zKSkKLSAgICAgICAgICAgICAgICAgMCAoaHQtcmVhbC10YWJsZSBo dCkpCi0gICAgICAoaHQtc2l6ZSBodCkpKQorICAoaGFzaC1uLWl0ZW1zIChodC1yZWFsLXRhYmxl IGh0KSkpCiAKIChkZWZpbmUgKGhhc2gtdGFibGUta2V5cyBodCkKICAgIlJldHVybnMgYSBsaXN0 IG9mIHRoZSBrZXlzIGluIEhULiIKQEAgLTY4Myw0OCArNjE0LDYwIEBAIHZhbHVlcyBpbiB0aGUg Y29ycmVzcG9uZGluZyBvcmRlci4iCiAgICAgICAgICAgICAgICAgICAgKGh0LXJlYWwtdGFibGUg aHQpKQogICAgICh2YWx1ZXMga2V5cyB2YWxzKSkpCiAKLTs7OyBJbiBhIG5vbi13ZWFrIGhhc2gg dGFibGUsIHdlIGtub3cgdGhlIHNpemUgdGhhdCB0aGUga2V5L3ZhbHVlIHZlY3RvcgotOzs7IHdp bGwgaGF2ZS4gSW4gYSB3ZWFrIGhhc2ggdGFibGUsIHdlIGhhdmUgdG8gaXRlcmF0ZSB0aHJvdwot Ozs7IGFzc29jaWF0aW9ucyBvZiB0aGUgaGFzaCB0YWJsZSB0byBjb21wdXRlIGl0cyBzaXplLCBz byBpdCBpcyBlYXNpZXIKLTs7OyB0byBzaW1wbHkgY2FsbCBIQVNILVRBQkxFLUtFWVMvSEFTSC1U QUJMRS1WQUxVRVMuCiAoZGVmaW5lIChoYXNoLXRhYmxlLWtleS12ZWN0b3IgaHQpCiAgICJSZXR1 cm5zIGEgdmVjdG9yIG9mIHRoZSBrZXlzIGluIEhULiIKLSAgKGlmIChodC13ZWFrbmVzcyBodCkK LSAgICAgIChsaXN0LT52ZWN0b3IgKGhhc2gtdGFibGUta2V5cyBodCkpCi0gICAgICAobGV0KiAo KGxlbiAoaHQtc2l6ZSBodCkpCi0gICAgICAgICAgICAgKGtleXMgKG1ha2UtdmVjdG9yIGxlbikp KQotICAgICAgICAoaGFzaC1mb2xkIChsYW1iZGEgKGtleSB2YWwgaSkKLSAgICAgICAgICAgICAg ICAgICAgICh2ZWN0b3Itc2V0ISBrZXlzIGkga2V5KQotICAgICAgICAgICAgICAgICAgICAgKCsg aSAxKSkKLSAgICAgICAgICAgICAgICAgICAwIChodC1yZWFsLXRhYmxlIGh0KSkKKyAgKGxldCog KChsZW4gKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAoa2V5cyAobWFrZS12ZWN0b3Ig bGVuKSkKKyAgICAgICAgIDs7IEluIGEgd2VhayBoYXNoIHRhYmxlLCBzb21lIHZhbHVlcyBtaWdo dCBnZXQgZ2FyZ2FiZQorICAgICAgICAgOzsgY29sbGVjdGVkIHdoaWxlIHRoZSBwcm9jZWR1cmUg aXMgcnVubmluZywgc28gd2UgZG91YmxlLWNoZWNrCisgICAgICAgICA7OyBpZiB3ZSBjb2xsZWN0 ZWQgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBrZXlzLgorICAgICAgICAgKG5ldy1sZW4gKGhhc2gt Zm9sZCAobGFtYmRhIChrZXkgdmFsIGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHZlY3Rvci1zZXQhIGtleXMgaSBrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCsgaSAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAoaHQtcmVhbC10YWJsZSBo dCkpKSkKKyAgICAoaWYgKDwgbmV3LWxlbiBsZW4pCisgICAgICAgIChsZXQgKChuZXcta2V5cyAo bWFrZS12ZWN0b3IgbmV3LWxlbikpKQorICAgICAgICAgICh2ZWN0b3ItbW92ZS1sZWZ0ISBrZXlz IDAgbmV3LWxlbiBuZXcta2V5cyAwKQorICAgICAgICAgIG5ldy1rZXlzKQogICAgICAgICBrZXlz KSkpCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtdmFsdWUtdmVjdG9yIGh0KQogICAiUmV0dXJucyBh IHZlY3RvciBvZiB0aGUgdmFsdWVzIGluIEhULiIKLSAgKGlmIChodC13ZWFrbmVzcyBodCkKLSAg ICAgIChsaXN0LT52ZWN0b3IgKGhhc2gtdGFibGUtdmFsdWVzIGh0KSkKLSAgICAgIChsZXQqICgo bGVuIChodC1zaXplIGh0KSkKLSAgICAgICAgICAgICAodmFscyAobWFrZS12ZWN0b3IgbGVuKSkp Ci0gICAgICAgIChoYXNoLWZvbGQgKGxhbWJkYSAoa2V5IHZhbCBpKQotICAgICAgICAgICAgICAg ICAgICAgKHZlY3Rvci1zZXQhIHZhbHMgaSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAoKyBp IDEpKQotICAgICAgICAgICAgICAgICAgIDAgKGh0LXJlYWwtdGFibGUgaHQpKQorICAobGV0KiAo KGxlbiAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgICh2YWxzIChtYWtlLXZlY3RvciBs ZW4pKQorICAgICAgICAgOzsgSW4gYSB3ZWFrIGhhc2ggdGFibGUsIHNvbWUgdmFsdWVzIG1pZ2h0 IGdldCBnYXJnYWJlCisgICAgICAgICA7OyBjb2xsZWN0ZWQgd2hpbGUgdGhlIHByb2NlZHVyZSBp cyBydW5uaW5nLCBzbyB3ZSBkb3VibGUtY2hlY2sKKyAgICAgICAgIDs7IGlmIHdlIGNvbGxlY3Rl ZCB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGtleXMuCisgICAgICAgICAobmV3LWxlbiAoaGFzaC1m b2xkIChsYW1iZGEgKGtleSB2YWwgaSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dmVjdG9yLXNldCEgdmFscyBpIHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KyBpIDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIChodC1yZWFsLXRhYmxlIGh0 KSkpKQorICAgIChpZiAoPCBuZXctbGVuIGxlbikKKyAgICAgICAgKGxldCAoKG5ldy12YWxzICht YWtlLXZlY3RvciBuZXctbGVuKSkpCisgICAgICAgICAgKHZlY3Rvci1tb3ZlLWxlZnQhIHZhbHMg MCBuZXctbGVuIG5ldy12YWxzIDApCisgICAgICAgICAgbmV3LXZhbHMpCiAgICAgICAgIHZhbHMp KSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1lbnRyeS12ZWN0b3JzIGh0KQogICAiUmV0dXJucyB0 d28gdmFsdWVzOiBhIHZlY3RvciBvZiB0aGUga2V5cyBhbmQgYSB2ZWN0b3Igb2YgdGhlCiBhc3Nv Y2lhdGVkIHZhbHVlcyBpbiB0aGUgY29ycmVzcG9uZGluZyBvcmRlci4iCi0gIChpZiAoaHQtd2Vh a25lc3MgaHQpCi0gICAgICAocmVjZWl2ZSAoa2V5cyB2YWxzKSAoaGFzaC10YWJsZS1lbnRyaWVz IGh0KQotICAgICAgICAodmFsdWVzIChsaXN0LT52ZWN0b3Iga2V5cykgKGxpc3QtPnZlY3RvciB2 YWxzKSkpCi0gICAgICAobGV0KiAoKGxlbiAoaHQtc2l6ZSBodCkpCi0gICAgICAgICAgICAgKGtl eXMgKG1ha2UtdmVjdG9yIGxlbikpCi0gICAgICAgICAgICAgKHZhbHMgKG1ha2UtdmVjdG9yIGxl bikpKQotICAgICAgICAoaGFzaC1mb2xkIChsYW1iZGEgKGtleSB2YWwgaSkKLSAgICAgICAgICAg ICAgICAgICAgICh2ZWN0b3Itc2V0ISBrZXlzIGkga2V5KQotICAgICAgICAgICAgICAgICAgICAg KHZlY3Rvci1zZXQhIHZhbHMgaSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAoKyBpIDEpKQot ICAgICAgICAgICAgICAgICAgIDAgKGh0LXJlYWwtdGFibGUgaHQpKQorICAobGV0KiAoKGxlbiAo aGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgIChrZXlzIChtYWtlLXZlY3RvciBsZW4pKQor ICAgICAgICAgKHZhbHMgKG1ha2UtdmVjdG9yIGxlbikpCisgICAgICAgICA7OyBJbiBhIHdlYWsg aGFzaCB0YWJsZSwgc29tZSB2YWx1ZXMgbWlnaHQgZ2V0IGdhcmdhYmUKKyAgICAgICAgIDs7IGNv bGxlY3RlZCB3aGlsZSB0aGUgcHJvY2VkdXJlIGlzIHJ1bm5pbmcsIHNvIHdlIGRvdWJsZS1jaGVj aworICAgICAgICAgOzsgaWYgd2UgY29sbGVjdGVkIHRoZSBleHBlY3RlZCBudW1iZXIgb2Yga2V5 cy4KKyAgICAgICAgIChuZXctbGVuIChoYXNoLWZvbGQgKGxhbWJkYSAoa2V5IHZhbCBpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Itc2V0ISBrZXlzIGkga2V5KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Itc2V0ISB2YWxzIGkgdmFsKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGkgMSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDAgKGh0LXJlYWwtdGFibGUgaHQpKSkpCisgICAgKGlmICg8IG5ldy1sZW4gbGVu KQorICAgICAgICAobGV0ICgobmV3LWtleXMgKG1ha2UtdmVjdG9yIG5ldy1sZW4pKQorICAgICAg ICAgICAgICAobmV3LXZhbHMgKG1ha2UtdmVjdG9yIG5ldy1sZW4pKSkKKyAgICAgICAgICAodmVj dG9yLW1vdmUtbGVmdCEga2V5cyAwIG5ldy1sZW4gbmV3LWtleXMgMCkKKyAgICAgICAgICAodmVj dG9yLW1vdmUtbGVmdCEgdmFscyAwIG5ldy1sZW4gbmV3LXZhbHMgMCkKKyAgICAgICAgICAodmFs dWVzIG5ldy1rZXlzIG5ldy12YWxzKSkKICAgICAgICAgKHZhbHVlcyBrZXlzIHZhbHMpKSkpCiAK IChkZWZpbmUgKGhhc2gtdGFibGUtZmluZCBwcm9jIGh0IGZhaWx1cmUpCkBAIC03NTksMTUgKzcw MiwxMiBAQCBhc3NvY2lhdGlvbiBpbiBoYXNoLXRhYmxlIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBh c3NvY2lhdGlvbi4gVGhlIGtleSBvZgogdGhlIGFzc29jaWF0aW9uIGFuZCB0aGUgcmVzdWx0IG9m IGludm9raW5nIFBST0MgYXJlIGVudGVyZWQgaW50byB0aGUgbmV3CiBoYXNoIHRhYmxlLCB3aGlj aCBpcyB0aGVuIHJldHVybmVkLiIKICAgKGxldCAoKHJlc3VsdCAoJW1ha2UtaGFzaC10YWJsZSBl cXVpdi1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbXV0YWJsZSBjYXBhY2l0eSB3ZWFrbmVzcykpCi0gICAgICAgIChzaXplIDApKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGFibGUgY2FwYWNpdHkgd2Vha25lc3Mp KSkKICAgICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSByZXN1bHQKICAgICAg IChoYXNoLWZvci1lYWNoCiAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCkKLSAgICAgICAgIChoYXNo eC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSAocHJvYyB2YWwpKQotICAgICAgICAgKHNldCEgc2l6 ZSAoKyAxIHNpemUpKSkKKyAgICAgICAgIChoYXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSAo cHJvYyB2YWwpKSkKICAgICAgICAoaHQtcmVhbC10YWJsZSBodCkpKQotICAgIChodC1zaXplISBy ZXN1bHQgc2l6ZSkKICAgICByZXN1bHQpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxlLW1hcC0+bGlz dCBwcm9jIGh0KQpAQCAtODIyLDggKzc2Miw2IEBAIFBST0MgcmV0dXJucyB0cnVlLiBSZXR1cm5z IGFuIHVuc3BlY2lmaWVkIHZhbHVlLiIKICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10 YWJsZSkgaHQKICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKQogICAgICAgICAg ICAgICAgICAgICAgKHdoZW4gKHByb2Mga2V5IHZhbCkKLSAgICAgICAgICAgICAgICAgICAgICAg KHVubGVzcyAoaHQtd2Vha25lc3MgaHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGh0LXNp emUhIGh0ICgtIChodC1zaXplIGh0KSAxKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIChoYXNo eC1yZW1vdmUhIGggYSByZWFsLXRhYmxlIGtleSkpKQogICAgICAgICAgICAgICAgICAgIHJlYWwt dGFibGUpKSkKIApAQCAtODM4LDE1ICs3NzYsMTMgQEAgcHJvcGVydGllcyBhcyBnaXZlbiBieSBr ZXl3b3JkIGFyZ3VtZW50cywgd2hpY2ggZGVmYXVsdCB0byBIVAogcHJvcGVydGllcy4gSWYgTVVU QUJMRSBpcyB0cnVlLCB0aGUgbmV3IGhhc2ggdGFibGUgaXMgbXV0YWJsZSwKIG90aGVyd2lzZSwg aXQgaXMgaW1tdXRhYmxlLiIKICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkg aHQKLSAgICAobGV0ICgobmV3LXJlYWwtdGFibGUgKChndWlsZS1odC1jdG9yIHdlYWtuZXNzKSBj YXBhY2l0eSkpCi0gICAgICAgICAgKHNpemUgMCkpCisgICAgKGxldCAoKG5ldy1yZWFsLXRhYmxl ICgoZ3VpbGUtaHQtY3RvciB3ZWFrbmVzcykgY2FwYWNpdHkpKSkKICAgICAgIChoYXNoLWZvci1l YWNoIChsYW1iZGEgKGtleSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQh IGggYSBuZXctcmVhbC10YWJsZSBrZXkgdmFsKQotICAgICAgICAgICAgICAgICAgICAgICAoc2V0 ISBzaXplICgrIDEgc2l6ZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgtc2V0ISBo IGEgbmV3LXJlYWwtdGFibGUga2V5IHZhbCkpCiAgICAgICAgICAgICAgICAgICAgICByZWFsLXRh YmxlKQogICAgICAgOzsgQXJndW1lbnRzOiByZWFsLXRhYmxlIGhhc2gtZnVuY3Rpb24gYXNzb2Np YXRvcgotICAgICAgOzsgICAgICAgICAgICB3ZWFrbmVzcyBtdXRhYmxlPyBzaXplIGVxdWl2YWxl bmNlLWZ1bmN0aW9uIG9yaWctaGFzaC1mdW5jdGlvbgotICAgICAgKG1ha2UtZ2VuZXJpYy1oYXNo LXRhYmxlIG5ldy1yZWFsLXRhYmxlIGggYSB3ZWFrbmVzcyAoYW5kIG11dGFibGUgI3QpIHNpemUK KyAgICAgIDs7ICAgICAgICAgICAgd2Vha25lc3MgbXV0YWJsZT8gZXF1aXZhbGVuY2UtZnVuY3Rp b24gb3JpZy1oYXNoLWZ1bmN0aW9uCisgICAgICAobWFrZS1nZW5lcmljLWhhc2gtdGFibGUgbmV3 LXJlYWwtdGFibGUgaCBhIHdlYWtuZXNzIChhbmQgbXV0YWJsZSAjdCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBodCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uIGh0 KSkpKSkKIApAQCAtODU4LDggKzc5NCw4IEBAIGFzIEhULCBidXQgd2l0aCBubyBhc3NvY2lhdGlv bnMuIgogICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSBodAogICAgIChsZXQg KChuZXctcmVhbC10YWJsZSAoKGd1aWxlLWh0LWN0b3Igd2Vha25lc3MpIGNhcGFjaXR5KSkpCiAg ICAgICA7OyBBcmd1bWVudHM6IHJlYWwtdGFibGUgaGFzaC1mdW5jdGlvbiBhc3NvY2lhdG9yCi0g ICAgICA7OyAgICAgICAgICAgIHdlYWtuZXNzIG11dGFibGU/IHNpemUgZXF1aXZhbGVuY2UtZnVu Y3Rpb24gb3JpZy1oYXNoLWZ1bmN0aW9uCi0gICAgICAobWFrZS1nZW5lcmljLWhhc2gtdGFibGUg bmV3LXJlYWwtdGFibGUgaCBhIHdlYWtuZXNzIChhbmQgbXV0YWJsZSAjdCkgMAorICAgICAgOzsg ICAgICAgICAgICB3ZWFrbmVzcyBtdXRhYmxlPyBlcXVpdmFsZW5jZS1mdW5jdGlvbiBvcmlnLWhh c2gtZnVuY3Rpb24KKyAgICAgIChtYWtlLWdlbmVyaWMtaGFzaC10YWJsZSBuZXctcmVhbC10YWJs ZSBoIGEgd2Vha25lc3MgKGFuZCBtdXRhYmxlICN0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24gaHQpKSkpKQogCi0t IAoyLjE5LjEKCg== --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="US-ASCII"; name="0007-Implemented-SRFI-128.patch" Content-Disposition: attachment; filename="0007-Implemented-SRFI-128.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqvhvnos1> X-Attachment-Id: f_jqvhvnos1 RnJvbSAwNTBiNzA1MGUzOGRlYzNiODMwMTM1NjA1MzU4MjUwNWY2Njc3YWZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBGcmksIDExIEphbiAyMDE5IDE5OjQxOjIw IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAwNy8xMF0gSW1wbGVtZW50ZWQgU1JGSS0xMjgKCi0tLQog bW9kdWxlL01ha2VmaWxlLmFtICAgICAgICAgICAgIHwgICAyICsKIG1vZHVsZS9zcmZpL3NyZmkt MTI4LnNjbSAgICAgICB8IDU3NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIG1v ZHVsZS9zcmZpL3NyZmktMTI4L2dudS5zY20gICB8ICAzOCArKysKIHRlc3Qtc3VpdGUvTWFrZWZp bGUuYW0gICAgICAgICB8ICAgMSArCiB0ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTI4LnRlc3QgfCAz NDggKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgOTY2IGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBtb2R1bGUvc3JmaS9zcmZpLTEyOC5zY20KIGNyZWF0ZSBt b2RlIDEwMDY0NCBtb2R1bGUvc3JmaS9zcmZpLTEyOC9nbnUuc2NtCiBjcmVhdGUgbW9kZSAxMDA2 NDQgdGVzdC1zdWl0ZS90ZXN0cy9zcmZpLTEyOC50ZXN0CgpkaWZmIC0tZ2l0IGEvbW9kdWxlL01h a2VmaWxlLmFtIGIvbW9kdWxlL01ha2VmaWxlLmFtCmluZGV4IDZlNzM5ZmVkMC4uNWZjMzAxMGMx IDEwMDY0NAotLS0gYS9tb2R1bGUvTWFrZWZpbGUuYW0KKysrIGIvbW9kdWxlL01ha2VmaWxlLmFt CkBAIC0yOTUsNiArMjk1LDggQEAgU09VUkNFUyA9CQkJCQlcCiAgIHNyZmkvc3JmaS05OC5zY20J CQkJXAogICBzcmZpL3NyZmktMTExLnNjbQkJCQlcCiAgIHNyZmkvc3JmaS0xMjYuc2NtCQkJCVwK KyAgc3JmaS9zcmZpLTEyOC9nbnUuc2NtCQkJCVwKKyAgc3JmaS9zcmZpLTEyOC5zY20JCQkJXAog CQkJCQkJXAogICBzdGF0cHJvZi5zY20JCQkJCVwKIAkJCQkJCVwKZGlmZiAtLWdpdCBhL21vZHVs ZS9zcmZpL3NyZmktMTI4LnNjbSBiL21vZHVsZS9zcmZpL3NyZmktMTI4LnNjbQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmJkYWNmYjNjMAotLS0gL2Rldi9udWxsCisrKyBi L21vZHVsZS9zcmZpL3NyZmktMTI4LnNjbQpAQCAtMCwwICsxLDU3NyBAQAorOzs7IHNyZmktMTI4 LnNjbSAtLS0gQ29tcGFyYXRvcnMKKworOzsgICAgQ29weXJpZ2h0IChDKSAyMDE5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorOzsKKzs7IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKzs7IG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7IExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorOzsgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorOzsKKzs7IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCis7OyBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzsKKzs7IFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7 IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKKzs7IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKworOzsgVGhpcyBmaWxlIGNvbnRh aW5zIGNvZGUgZnJvbSBTUkZJIDEyOCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24sIGJ5Cis7OyBK b2huIENvd2FuCisKKzs7OyBDb3B5cmlnaHQgKEMpIEpvaG4gQ293YW4gKDIwMTUpLiBBbGwgUmln aHRzIFJlc2VydmVkLgorOzs7Cis7OzsgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KKzs7OyBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorOzs7IGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKzs7OyByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwKKzs7OyBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv b3IKKzs7OyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQorOzs7IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nCis7OzsgY29uZGl0aW9uczoKKzs7OworOzs7IFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCis7Ozsg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m dHdhcmUuCis7OzsKKzs7OyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKzs7OyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMKKzs7OyBPRiBNRVJDSEFOVEFCSUxJ VFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorOzs7IE5PTklORlJJTkdF TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCis7OzsgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFks Cis7OzsgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCis7OzsgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUgorOzs7IE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K KwwKKworKGRlZmluZS1tb2R1bGUgKHNyZmkgc3JmaS0xMjgpCisgICM6dXNlLW1vZHVsZSAoc3Jm aSBzcmZpLTkpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTQzKQorICA7OyBIQVNILUJPVU5E LCBIQVNILVNBTFQgYW5kIFdJVEgtSEFTSC1TQUxUIGFyZSBkZWZpbmVkIGhlcmUgYmVjYXVzZQor ICA7OyB0aGUgbGF0dGVyIGlzIG5vdCBzdGFuZGFyZAorICAjOnVzZS1tb2R1bGUgKChzcmZpIHNy ZmktMTI4IGdudSkgIzpzZWxlY3QgKGhhc2gtYm91bmQgaGFzaC1zYWx0KSkKKyAgIzp1c2UtbW9k dWxlICgocm5ycyB1bmljb2RlKSAjOnNlbGVjdCAoY2hhci1mb2xkY2FzZSkpCisgICM6dXNlLW1v ZHVsZSAocm5ycyBieXRldmVjdG9ycykKKyAgIzp1c2UtbW9kdWxlICgoaWNlLTkgZ2VuZXJpYy1o YXNoLXRhYmxlcykKKyAgICAgICAgICAgICAgICAjOnNlbGVjdCAoKGhhc2ggLiBlcXVhbC1oYXNo KQorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmctY2ktaGFzaCBoYXNoLWJ5LWlkZW50 aXR5IGhhc2gtYnktdmFsdWUpKQorICAjOmV4cG9ydCAoY29tcGFyYXRvcj8KKyAgICAgICAgICAg IG1ha2UtY29tcGFyYXRvcgorICAgICAgICAgICAgY29tcGFyYXRvci10eXBlLXRlc3QtcHJlZGlj YXRlIGNvbXBhcmF0b3ItZXF1YWxpdHktcHJlZGljYXRlCisgICAgICAgICAgICBjb21wYXJhdG9y LW9yZGVyaW5nLXByZWRpY2F0ZSBjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAg IGNvbXBhcmF0b3Itb3JkZXJlZD8gY29tcGFyYXRvci1oYXNoYWJsZT8KKyAgICAgICAgICAgIGNv bXBhcmF0b3ItdGVzdC10eXBlIGNvbXBhcmF0b3ItY2hlY2stdHlwZQorICAgICAgICAgICAgY29t cGFyYXRvci1oYXNoCisgICAgICAgICAgICBtYWtlLXBhaXItY29tcGFyYXRvciBtYWtlLWxpc3Qt Y29tcGFyYXRvciBtYWtlLXZlY3Rvci1jb21wYXJhdG9yCisgICAgICAgICAgICBtYWtlLWVxLWNv bXBhcmF0b3IgbWFrZS1lcXYtY29tcGFyYXRvciBtYWtlLWVxdWFsLWNvbXBhcmF0b3IKKyAgICAg ICAgICAgIGJvb2xlYW4taGFzaCBjaGFyLWhhc2ggY2hhci1jaS1oYXNoIG51bWJlci1oYXNoCisg ICAgICAgICAgICBtYWtlLWRlZmF1bHQtY29tcGFyYXRvciBkZWZhdWx0LWhhc2gKKyAgICAgICAg ICAgIGNvbXBhcmF0b3ItcmVnaXN0ZXItZGVmYXVsdCEKKyAgICAgICAgICAgID0/IDw/ID4/IDw9 PyA+PT8KKyAgICAgICAgICAgIGNvbXBhcmF0b3ItaWY8PT4pCisgICM6cmUtZXhwb3J0IChzdHJp bmctaGFzaCBzdHJpbmctY2ktaGFzaCBzeW1ib2wtaGFzaCBoYXNoLWJvdW5kIGhhc2gtc2FsdCkp CisKKyhjb25kLWV4cGFuZC1wcm92aWRlIChjdXJyZW50LW1vZHVsZSkgJyhzcmZpLTEyOCkpCisK KwwKKzs7IEFyaXRobWV0aWMgaWYKKyhkZWZpbmUtc3ludGF4IGNvbXBhcmF0b3ItaWY8PT4KKyAg KHN5bnRheC1ydWxlcyAoKQorICAgICgoaWY8PT4gYSBiIGxlc3MgZXF1YWwgZ3JlYXRlcikKKyAg ICAgKGNvbXBhcmF0b3ItaWY8PT4gZGVmYXVsdC1jb21wYXJhdG9yIGEgYiBsZXNzIGVxdWFsIGdy ZWF0ZXIpKQorICAgICgoY29tcGFyYXRvci1pZjw9PiBjb21wYXJhdG9yIGEgYiBsZXNzIGVxdWFs IGdyZWF0ZXIpCisgICAgIChjb25kCisgICAgICAoKDw/IGNvbXBhcmF0b3IgYSBiKSBsZXNzKQor ICAgICAgKCg9PyBjb21wYXJhdG9yIGEgYikgZXF1YWwpCisgICAgICAoZWxzZSBncmVhdGVyKSkp KSkKKworDAorOzs7IERlZmluaXRpb24gb2YgY29tcGFyYXRvciByZWNvcmRzIHdpdGggYWNjZXNz b3JzIGFuZCBiYXNpYyBjb21wYXJhdG9yCisKKyhkZWZpbmUtcmVjb3JkLXR5cGUgY29tcGFyYXRv cgorICAobWFrZS1yYXctY29tcGFyYXRvciB0eXBlLXRlc3QgZXF1YWxpdHkgb3JkZXJpbmcgaGFz aCBvcmRlcmluZz8gaGFzaD8pCisgIGNvbXBhcmF0b3I/CisgICh0eXBlLXRlc3QgY29tcGFyYXRv ci10eXBlLXRlc3QtcHJlZGljYXRlKQorICAoZXF1YWxpdHkgY29tcGFyYXRvci1lcXVhbGl0eS1w cmVkaWNhdGUpCisgIChvcmRlcmluZyBjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0ZSkKKyAg KGhhc2ggY29tcGFyYXRvci1oYXNoLWZ1bmN0aW9uKQorICAob3JkZXJpbmc/IGNvbXBhcmF0b3It b3JkZXJlZD8pCisgIChoYXNoPyBjb21wYXJhdG9yLWhhc2hhYmxlPykpCisKKyhkZWZpbmUgKGFs d2F5cy10cnVlIG9iaikgI3QpCisKKzs7IFB1YmxpYyBjb25zdHJ1Y3RvcgorKGRlZmluZSAobWFr ZS1jb21wYXJhdG9yIHR5cGUtdGVzdCBlcXVhbGl0eSBvcmRlcmluZyBoYXNoKQorICAobWFrZS1y YXctY29tcGFyYXRvcgorICAgKGlmIChlcT8gdHlwZS10ZXN0ICN0KSBhbHdheXMtdHJ1ZSB0eXBl LXRlc3QpCisgICAoaWYgKGVxPyBlcXVhbGl0eSAjdCkgKGxhbWJkYSAoeCB5KSAoZXF2PyAob3Jk ZXJpbmcgeCB5KSAwKSkgZXF1YWxpdHkpCisgICAoaWYgb3JkZXJpbmcgb3JkZXJpbmcgKGxhbWJk YSAoeCB5KSAoZXJyb3IgIm9yZGVyaW5nIG5vdCBzdXBwb3J0ZWQiKSkpCisgICAoaWYgaGFzaCBo YXNoIChsYW1iZGEgKHggeSkgKGVycm9yICJoYXNoaW5nIG5vdCBzdXBwb3J0ZWQiKSkpCisgICAo aWYgb3JkZXJpbmcgI3QgI2YpCisgICAoaWYgaGFzaCAjdCAjZikpKQorCisMCis7OzsgSW52b2tl cnMKKworOzsgSW52b2tlIHRoZSB0ZXN0IHR5cGUKKyhkZWZpbmUgKGNvbXBhcmF0b3ItdGVzdC10 eXBlIGNvbXBhcmF0b3Igb2JqKQorICAoKGNvbXBhcmF0b3ItdHlwZS10ZXN0LXByZWRpY2F0ZSBj b21wYXJhdG9yKSBvYmopKQorCis7OyBJbnZva2UgdGhlIHRlc3QgdHlwZSBhbmQgdGhyb3cgYW4g ZXJyb3IgaWYgaXQgZmFpbHMKKyhkZWZpbmUgKGNvbXBhcmF0b3ItY2hlY2stdHlwZSBjb21wYXJh dG9yIG9iaikKKyAgKGlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBjb21wYXJhdG9yIG9iaikKKyAg ICAgICN0CisgICAgICAoZXJyb3IgIkNvbXBhcmF0b3IgdHlwZSBjaGVjayBmYWlsZWQiIGNvbXBh cmF0b3Igb2JqKSkpCisKKzs7IEludm9rZSB0aGUgaGFzaCBmdW5jdGlvbgorKGRlZmluZSAoY29t cGFyYXRvci1oYXNoIGNvbXBhcmF0b3Igb2JqKQorICAoKGNvbXBhcmF0b3ItaGFzaC1mdW5jdGlv biBjb21wYXJhdG9yKSBvYmopKQorCisMCis7OzsgQ29tcGFyaXNvbiBwcmVkaWNhdGVzCisKKzs7 IEJpbmFyeSB2ZXJzaW9ucyBmb3IgaW50ZXJuYWwgdXNlCisKKyhkZWZpbmUgKGJpbmFyeT0/IGNv bXBhcmF0b3IgYSBiKQorICAoKGNvbXBhcmF0b3ItZXF1YWxpdHktcHJlZGljYXRlIGNvbXBhcmF0 b3IpIGEgYikpCisKKyhkZWZpbmUgKGJpbmFyeTw/IGNvbXBhcmF0b3IgYSBiKQorICAoKGNvbXBh cmF0b3Itb3JkZXJpbmctcHJlZGljYXRlIGNvbXBhcmF0b3IpIGEgYikpCisKKyhkZWZpbmUgKGJp bmFyeT4/IGNvbXBhcmF0b3IgYSBiKQorICAoYmluYXJ5PD8gY29tcGFyYXRvciBiIGEpKQorCiso ZGVmaW5lIChiaW5hcnk8PT8gY29tcGFyYXRvciBhIGIpCisgIChub3QgKGJpbmFyeT4/IGNvbXBh cmF0b3IgYSBiKSkpCisKKyhkZWZpbmUgKGJpbmFyeT49PyBjb21wYXJhdG9yIGEgYikKKyAgKG5v dCAoYmluYXJ5PD8gY29tcGFyYXRvciBhIGIpKSkKKworOzsgR2VuZXJhbCB2ZXJzaW9ucyBmb3Ig ZXhwb3J0CisKKyhkZWZpbmUgKD0/IGNvbXBhcmF0b3IgYSBiIC4gb2JqcykKKyAgKGxldCBsb29w ICgoYSBhKSAoYiBiKSAob2JqcyBvYmpzKSkKKyAgICAoYW5kIChiaW5hcnk9PyBjb21wYXJhdG9y IGEgYikKKwkgKGlmIChudWxsPyBvYmpzKSAjdCAobG9vcCBiIChjYXIgb2JqcykgKGNkciBvYmpz KSkpKSkpCisKKyhkZWZpbmUgKDw/IGNvbXBhcmF0b3IgYSBiIC4gb2JqcykKKyAgKGxldCBsb29w ICgoYSBhKSAoYiBiKSAob2JqcyBvYmpzKSkKKyAgICAoYW5kIChiaW5hcnk8PyBjb21wYXJhdG9y IGEgYikKKwkgKGlmIChudWxsPyBvYmpzKSAjdCAobG9vcCBiIChjYXIgb2JqcykgKGNkciBvYmpz KSkpKSkpCisKKyhkZWZpbmUgKD4/IGNvbXBhcmF0b3IgYSBiIC4gb2JqcykKKyAgKGxldCBsb29w ICgoYSBhKSAoYiBiKSAob2JqcyBvYmpzKSkKKyAgICAoYW5kIChiaW5hcnk+PyBjb21wYXJhdG9y IGEgYikKKwkgKGlmIChudWxsPyBvYmpzKSAjdCAobG9vcCBiIChjYXIgb2JqcykgKGNkciBvYmpz KSkpKSkpCisKKyhkZWZpbmUgKDw9PyBjb21wYXJhdG9yIGEgYiAuIG9ianMpCisgIChsZXQgbG9v cCAoKGEgYSkgKGIgYikgKG9ianMgb2JqcykpCisgICAgKGFuZCAoYmluYXJ5PD0/IGNvbXBhcmF0 b3IgYSBiKQorCSAoaWYgKG51bGw/IG9ianMpICN0IChsb29wIGIgKGNhciBvYmpzKSAoY2RyIG9i anMpKSkpKSkKKworKGRlZmluZSAoPj0/IGNvbXBhcmF0b3IgYSBiIC4gb2JqcykKKyAgKGxldCBs b29wICgoYSBhKSAoYiBiKSAob2JqcyBvYmpzKSkKKyAgICAoYW5kIChiaW5hcnk+PT8gY29tcGFy YXRvciBhIGIpCisJIChpZiAobnVsbD8gb2JqcykgI3QgKGxvb3AgYiAoY2FyIG9ianMpIChjZHIg b2JqcykpKSkpKQorCisMCis7OzsgU2ltcGxlIG9yZGVyaW5nIGFuZCBoYXNoIGZ1bmN0aW9ucwor CisoZGVmaW5lIGJvb2xlYW4taGFzaCBoYXNoLWJ5LWlkZW50aXR5KQorKGRlZmluZSBjaGFyLWhh c2ggICAgaGFzaC1ieS1pZGVudGl0eSkKKyhkZWZpbmUgbnVtYmVyLWhhc2ggIGhhc2gtYnktdmFs dWUpCisKKyhkZWZpbmUqIChjaGFyLWNpLWhhc2ggYyAjOm9wdGlvbmFsIChzaXplIG1vc3QtcG9z aXRpdmUtZml4bnVtKSkKKyAgKGhhc2hxIChjaGFyLWZvbGRjYXNlIGMpIHNpemUpKQorCis7OyBM ZXhpY29ncmFwaGljIG9yZGVyaW5nIG9mIGNvbXBsZXggbnVtYmVycworKGRlZmluZSAoY29tcGxl eDw/IGEgYikKKyAgKG9yICg8IChyZWFsLXBhcnQgYSkgKHJlYWwtcGFydCBiKSkKKyAgICAgIChh bmQgKD0gKHJlYWwtcGFydCBhKSAocmVhbC1wYXJ0IGIpKQorICAgICAgICAgICAoPCAoaW1hZy1w YXJ0IGEpIChpbWFnLXBhcnQgYikpKSkpCisKKyhkZWZpbmUgKHN5bWJvbDw/IGEgYikKKyAgOzsg VmFsaWQgYWNjb3JkaW5nIHRvIHNwZWMuCisgIDs7IEl0J3MgZmFzdGVyIHRvIGhhc2ggdGhhbiB0 byBjb21wYXJlIHN0cmluZ3MuCisgIChsZXQgKChoYSAoaGFzaHEgYSAoaGFzaC1ib3VuZCkpKQor ICAgICAgICAoaGIgKGhhc2hxIGIgKGhhc2gtYm91bmQpKSkpCisgICAgKG9yICg8IGhhIGhiKQor ICAgICAgICAoYW5kICg9IGhhIGhiKQorICAgICAgICAgICAgIChub3QgKGVxPyBhIGIpKQorICAg ICAgICAgICAgIChzdHJpbmc8PyAoc3ltYm9sLT5zdHJpbmcgYSkgKHN5bWJvbC0+c3RyaW5nIGIp KSkpKSkKKworOzsgU3RpY2sgdG8gZml4bnVtcworKGRlZmluZSBsb3dlci1tYXNrIChhc2ggKGhh c2gtYm91bmQpIC01KSkgOyAoLyAoaGFzaC1ib3VuZCkgMzIpCisKKzs7IEhhc2ggaGVscGVyCiso ZGVmaW5lIChtaXggaDEgaDIpCisgIChsb2d4b3IgKCogKGxvZ2FuZCBoMSBsb3dlci1tYXNrKSAz MSkgaDIpKQorCisKKwwKKzs7OyBQYWlyIGNvbXBhcmF0b3IKKyhkZWZpbmUgKG1ha2UtcGFpci1j b21wYXJhdG9yIGNhci1jb21wYXJhdG9yIGNkci1jb21wYXJhdG9yKQorICAobWFrZS1jb21wYXJh dG9yCisgICAobWFrZS1wYWlyLXR5cGUtdGVzdCBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRv cikKKyAgIChtYWtlLXBhaXI9PyBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRvcikKKyAgICht YWtlLXBhaXI8PyBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRvcikKKyAgIChtYWtlLXBhaXIt aGFzaCBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRvcikpKQorCisoZGVmaW5lIChtYWtlLXBh aXItdHlwZS10ZXN0IGNhci1jb21wYXJhdG9yIGNkci1jb21wYXJhdG9yKQorICAobGV0ICgoY2Fy LXRlc3QgKGNvbXBhcmF0b3ItdHlwZS10ZXN0LXByZWRpY2F0ZSBjYXItY29tcGFyYXRvcikpCisg ICAgICAgIChjZHItdGVzdCAoY29tcGFyYXRvci10eXBlLXRlc3QtcHJlZGljYXRlIGNkci1jb21w YXJhdG9yKSkpCisgICAgKGlmIChlcT8gYWx3YXlzLXRydWUgY2FyLXRlc3QgY2RyLXRlc3QpCisg ICAgICAgIHBhaXI/CisgICAgICAgIChsYW1iZGEgKG9iaikKKyAgICAgICAgICAoYW5kIChwYWly PyBvYmopCisgICAgICAgICAgICAgICAoY2FyLXRlc3QgKGNhciBvYmopKQorICAgICAgICAgICAg ICAgKGNkci10ZXN0IChjZHIgb2JqKSkpKSkpKQorCisoZGVmaW5lIChtYWtlLXBhaXI9PyBjYXIt Y29tcGFyYXRvciBjZHItY29tcGFyYXRvcikKKyAgKGxldCAoKGNhci1lcXVpdiAoY29tcGFyYXRv ci1lcXVhbGl0eS1wcmVkaWNhdGUgY2FyLWNvbXBhcmF0b3IpKQorICAgICAgICAoY2RyLWVxdWl2 IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBjZHItY29tcGFyYXRvcikpKQorICAgIChp ZiAoZXE/IGVxdWFsPyBjYXItZXF1aXYgY2RyLWVxdWl2KQorICAgICAgICBlcXVhbD8KKyAgICAg ICAgKGxhbWJkYSAoYSBiKQorICAgICAgICAgIChhbmQgKGNhci1lcXVpdiAoY2FyIGEpIChjYXIg YikpCisgICAgICAgICAgICAgICAoY2RyLWVxdWl2IChjZHIgYSkgKGNkciBiKSkpKSkpKQorCiso ZGVmaW5lIChtYWtlLXBhaXI8PyBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRvcikKKyAgKGxl dCAoKGNhci1lcXVpdiAoY29tcGFyYXRvci1lcXVhbGl0eS1wcmVkaWNhdGUgY2FyLWNvbXBhcmF0 b3IpKQorICAgICAgICAoY2FyPD8gKGNvbXBhcmF0b3Itb3JkZXJpbmctcHJlZGljYXRlIGNhci1j b21wYXJhdG9yKSkKKyAgICAgICAgKGNkcjw/IChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0 ZSBjZHItY29tcGFyYXRvcikpKQorICAgIChsYW1iZGEgKGEgYikKKyAgICAgIChvciAoY2FyPD8g KGNhciBhKSAoY2FyIGIpKQorICAgICAgICAgIChhbmQgKGNhci1lcXVpdiAoY2FyIGEpIChjYXIg YikpCisgICAgICAgICAgICAgICAoY2RyPD8gKGNkciBhKSAoY2RyIGIpKSkpKSkpCisKKyhkZWZp bmUgcGFpci1oYXNoLXNhbHQgKG1peCAoc3ltYm9sLWhhc2ggJ3BhaXIpIChoYXNoLXNhbHQpKSkK KworKGRlZmluZSAobWFrZS1wYWlyLWhhc2ggY2FyLWNvbXBhcmF0b3IgY2RyLWNvbXBhcmF0b3Ip CisgIChsZXQgKChjYXItaGFzaCAoY29tcGFyYXRvci1oYXNoLWZ1bmN0aW9uIGNhci1jb21wYXJh dG9yKSkKKyAgICAgICAgKGNkci1oYXNoIChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gY2RyLWNv bXBhcmF0b3IpKSkKKyAgICAoaWYgKGVxPyBlcXVhbC1oYXNoIGNhci1oYXNoIGNkci1oYXNoKQor ICAgICAgICBlcXVhbC1oYXNoCisgICAgICAgIChsYW1iZGEgKG9iaikKKyAgICAgICAgICAobWl4 IChtaXggcGFpci1oYXNoLXNhbHQgKGNhci1oYXNoIChjYXIgb2JqKSkpCisgICAgICAgICAgICAg ICAoY2RyLWhhc2ggKGNkciBvYmopKSkpKSkpCisKKwwKKzs7OyBMaXN0IGNvbXBhcmF0b3IKKwor KGRlZmluZSAobWFrZS1saXN0LWNvbXBhcmF0b3IgZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVz dCBlbXB0eT8gaGVhZCB0YWlsKQorICAobWFrZS1jb21wYXJhdG9yCisgICAobWFrZS1saXN0LXR5 cGUtdGVzdCBlbGVtZW50LWNvbXBhcmF0b3IgdHlwZS10ZXN0IGVtcHR5PyBoZWFkIHRhaWwpCisg ICAobWFrZS1saXN0PT8gZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVzdCBlbXB0eT8gaGVhZCB0 YWlsKQorICAgKG1ha2UtbGlzdDw/IGVsZW1lbnQtY29tcGFyYXRvciB0eXBlLXRlc3QgZW1wdHk/ IGhlYWQgdGFpbCkKKyAgIChtYWtlLWxpc3QtaGFzaCBlbGVtZW50LWNvbXBhcmF0b3IgdHlwZS10 ZXN0IGVtcHR5PyBoZWFkIHRhaWwpKSkKKworKGRlZmluZSAobWFrZS1saXN0LXR5cGUtdGVzdCBl bGVtZW50LWNvbXBhcmF0b3IgdHlwZS10ZXN0IGVtcHR5PyBoZWFkIHRhaWwpCisgIChsZXQgKChl bGVtLXR5cGUtdGVzdCAoY29tcGFyYXRvci10eXBlLXRlc3QtcHJlZGljYXRlIGVsZW1lbnQtY29t cGFyYXRvcikpKQorICAgIChsYW1iZGEgKG9iaikKKyAgICAgIChhbmQKKyAgICAgICAodHlwZS10 ZXN0IG9iaikKKyAgICAgICAobGV0IGxvb3AgKChvYmogb2JqKSkKKyAgICAgICAgIChjb25kCisg ICAgICAgICAgKChlbXB0eT8gb2JqKSAjdCkKKyAgICAgICAgICAoKG5vdCAoZWxlbS10eXBlLXRl c3QgKGhlYWQgb2JqKSkpICNmKQorICAgICAgICAgIChlbHNlIChsb29wICh0YWlsIG9iaikpKSkp KSkpKQorCisoZGVmaW5lIChtYWtlLWxpc3Q9PyBlbGVtZW50LWNvbXBhcmF0b3IgdHlwZS10ZXN0 IGVtcHR5PyBoZWFkIHRhaWwpCisgIChsZXQgKChlbGVtPT8gKGNvbXBhcmF0b3ItZXF1YWxpdHkt cHJlZGljYXRlIGVsZW1lbnQtY29tcGFyYXRvcikpKQorICAgIChsYW1iZGEgKGEgYikKKyAgICAg IChsZXQgbG9vcCAoKGEgYSkgKGIgYikpCisgICAgICAgIChjb25kCisgICAgICAgICAoKGVtcHR5 PyBhKSAoZW1wdHk/IGIpKQorICAgICAgICAgKChlbXB0eT8gYikgI2YpCisgICAgICAgICAoKGVs ZW09PyAoaGVhZCBhKSAoaGVhZCBiKSkgKGxvb3AgKHRhaWwgYSkgKHRhaWwgYikpKQorICAgICAg ICAgKGVsc2UgI2YpKSkpKSkKKworKGRlZmluZSAobWFrZS1saXN0PD8gZWxlbWVudC1jb21wYXJh dG9yIHR5cGUtdGVzdCBlbXB0eT8gaGVhZCB0YWlsKQorICAobGV0ICgoZWxlbT0/IChjb21wYXJh dG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBlbGVtZW50LWNvbXBhcmF0b3IpKQorICAgICAgICAoZWxl bTw/IChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0ZSBlbGVtZW50LWNvbXBhcmF0b3IpKSkK KyAgICAobGFtYmRhIChhIGIpCisgICAgICAobGV0IGxvb3AgKChhIGEpIChiIGIpKQorICAgICAg ICAoY29uZAorICAgICAgICAgKChlbXB0eT8gYSkgKG5vdCAoZW1wdHk/IGIpKSkKKyAgICAgICAg ICgoZW1wdHk/IGIpICNmKQorICAgICAgICAgKChlbGVtPD8gKGhlYWQgYSkgKGhlYWQgYikpICN0 KQorICAgICAgICAgKChlbGVtPT8gKGhlYWQgYSkgKGhlYWQgYikpIChsb29wICh0YWlsIGEpICh0 YWlsIGIpKSkKKyAgICAgICAgIChlbHNlICNmKSkpKSkpCisKKyhkZWZpbmUgbGlzdC1oYXNoLXNh bHQgKG1peCAoc3ltYm9sLWhhc2ggJ2xpc3QpIChoYXNoLXNhbHQpKSkKKworKGRlZmluZSAobWFr ZS1saXN0LWhhc2ggZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVzdCBlbXB0eT8gaGVhZCB0YWls KQorICAobGV0ICgoZWxlbS1oYXNoIChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gZWxlbWVudC1j b21wYXJhdG9yKSkpCisgICAgKGxhbWJkYSAob2JqKQorICAgICAgKGxldCBsb29wICgob2JqIG9i aikKKyAgICAgICAgICAgICAgICAgKHJlc3VsdCBsaXN0LWhhc2gtc2FsdCkpCisgICAgICAgIChj b25kCisgICAgICAgICAoKGVtcHR5PyBvYmopIHJlc3VsdCkKKyAgICAgICAgIChlbHNlIChsb29w ICh0YWlsIG9iaikgKG1peCByZXN1bHQgKGVsZW0taGFzaCAoaGVhZCBvYmopKSkpKSkpKSkpCisK KwwKKzs7OyBWZWN0b3IgY29tcGFyYXRvcgorCisoZGVmaW5lIChtYWtlLXZlY3Rvci1jb21wYXJh dG9yIGVsZW1lbnQtY29tcGFyYXRvciB0eXBlLXRlc3QgbGVuZ3RoIHJlZikKKyAgKG1ha2UtY29t cGFyYXRvcgorICAgKG1ha2UtdmVjdG9yLXR5cGUtdGVzdCBlbGVtZW50LWNvbXBhcmF0b3IgdHlw ZS10ZXN0IGxlbmd0aCByZWYpCisgICAobWFrZS12ZWN0b3I9PyBlbGVtZW50LWNvbXBhcmF0b3Ig dHlwZS10ZXN0IGxlbmd0aCByZWYpCisgICAobWFrZS12ZWN0b3I8PyBlbGVtZW50LWNvbXBhcmF0 b3IgdHlwZS10ZXN0IGxlbmd0aCByZWYpCisgICAobWFrZS12ZWN0b3ItaGFzaCBlbGVtZW50LWNv bXBhcmF0b3IgdHlwZS10ZXN0IGxlbmd0aCByZWYpKSkKKworKGRlZmluZSAobWFrZS12ZWN0b3It dHlwZS10ZXN0IGVsZW1lbnQtY29tcGFyYXRvciB0eXBlLXRlc3QgbGVuZ3RoIHJlZikKKyAgKGxl dCAoKGVsZW0tdHlwZS10ZXN0IChjb21wYXJhdG9yLXR5cGUtdGVzdC1wcmVkaWNhdGUgZWxlbWVu dC1jb21wYXJhdG9yKSkpCisgICAgKGxhbWJkYSAob2JqKQorICAgICAgKGFuZAorICAgICAgICh0 eXBlLXRlc3Qgb2JqKQorICAgICAgIChsZXQgKChsZW4gKGxlbmd0aCBvYmopKSkKKyAgICAgICAg IChsZXQgbG9vcCAoKG4gMCkpCisgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAoKD0gbiBs ZW4pICN0KQorICAgICAgICAgICAgKChub3QgKGVsZW0tdHlwZS10ZXN0IChyZWYgb2JqIG4pKSkg I2YpCisgICAgICAgICAgICAoZWxzZSAobG9vcCAoKyBuIDEpKSkpKSkpKSkpCisKKyhkZWZpbmUg KG1ha2UtdmVjdG9yPT8gZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVzdCBsZW5ndGggcmVmKQor ICAobGV0ICgoZWxlbT0/IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBlbGVtZW50LWNv bXBhcmF0b3IpKSkKKyAgICAobGFtYmRhIChhIGIpCisgICAgICAobGV0ICgobGVuIChsZW5ndGgg YikpKQorICAgICAgICAoYW5kCisgICAgICAgICAoPSAobGVuZ3RoIGEpIGxlbikKKyAgICAgICAg IChsZXQgbG9vcCAoKG4gMCkpCisgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAoKD0gbiBs ZW4pICN0KQorICAgICAgICAgICAgKChlbGVtPT8gKHJlZiBhIG4pIChyZWYgYiBuKSkgKGxvb3Ag KCsgbiAxKSkpCisgICAgICAgICAgICAoZWxzZSAjZikpKSkpKSkpCisKKyhkZWZpbmUgKG1ha2Ut dmVjdG9yPD8gZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVzdCBsZW5ndGggcmVmKQorICAobGV0 ICgoZWxlbT0/IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBlbGVtZW50LWNvbXBhcmF0 b3IpKQorICAgICAgICAoZWxlbTw/IChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0ZSBlbGVt ZW50LWNvbXBhcmF0b3IpKSkKKyAgICAobGFtYmRhIChhIGIpCisgICAgICAobGV0ICgobGVuYSAo bGVuZ3RoIGEpKQorICAgICAgICAgICAgKGxlbmIgKGxlbmd0aCBiKSkpCisgICAgICAgIChjb25k CisgICAgICAgICAoKDwgbGVuYSBsZW5iKSAjdCkKKyAgICAgICAgICgoPiBsZW5hIGxlbmIpICNm KQorICAgICAgICAgKGVsc2UKKyAgICAgICAgICAobGV0IGxvb3AgKChuIDApKQorICAgICAgICAg ICAgKGNvbmQKKyAgICAgICAgICAgICAoKD0gbiBsZW5hKSAjZikKKyAgICAgICAgICAgICAoKGVs ZW08PyAocmVmIGEgbikgKHJlZiBiIG4pKSAjdCkKKyAgICAgICAgICAgICAoKGVsZW09PyAocmVm IGEgbikgKHJlZiBiIG4pKSAobG9vcCAoKyBuIDEpKSkKKyAgICAgICAgICAgICAoZWxzZSAjZikp KSkpKSkpKQorCisoZGVmaW5lIHZlY3Rvci1oYXNoLXNhbHQgKG1peCAoc3ltYm9sLWhhc2ggJ3Zl Y3RvcikgKGhhc2gtc2FsdCkpKQorCisoZGVmaW5lIChtYWtlLXZlY3Rvci1oYXNoIGVsZW1lbnQt Y29tcGFyYXRvciB0eXBlLXRlc3QgbGVuZ3RoIHJlZikKKyAgKGxldCAoKGVsZW0taGFzaCAoY29t cGFyYXRvci1oYXNoLWZ1bmN0aW9uIGVsZW1lbnQtY29tcGFyYXRvcikpKQorICAgIChsYW1iZGEg KG9iaikKKyAgICAgIChsZXQgKChsZW4gKGxlbmd0aCBvYmopKSkKKyAgICAgICAgKGxldCBsb29w ICgobiAwKSAocmVzdWx0IHZlY3Rvci1oYXNoLXNhbHQpKQorICAgICAgICAgIChjb25kCisgICAg ICAgICAgICgoPSBuIGxlbikgcmVzdWx0KQorICAgICAgICAgICAoZWxzZSAobG9vcCAoKyBuIDEp IChtaXggcmVzdWx0IChlbGVtLWhhc2ggKHJlZiBvYmogbikpKSkpKSkpKSkpCisKKwwKKzs7OyBU aGUgZGVmYXVsdCBjb21wYXJhdG9yCisKKzs7OyBTdGFuZGFyZCBjb21wYXJhdG9ycyBhbmQgdGhl aXIgZnVuY3Rpb25zCisKKzs7IFRoZSB1bmtub3duLW9iamVjdCBjb21wYXJhdG9yLCB1c2VkIGFz IGEgZmFsbGJhY2sgdG8gZXZlcnl0aGluZyBlbHNlCis7OyBFdmVyeXRoaW5nIGNvbXBhcmVzIGV4 YWN0bHkgdGhlIHNhbWUgYW5kIGhhc2hlcyB0byAwCisoZGVmaW5lIHVua25vd24tb2JqZWN0LWNv bXBhcmF0b3IKKyAgKG1ha2UtY29tcGFyYXRvcgorICAgYWx3YXlzLXRydWUKKyAgIChsYW1iZGEg KGEgYikgI3QpCisgICAobGFtYmRhIChhIGIpICNmKQorICAgKGxhbWJkYSAob2JqKSAwKSkpCisK Kzs7IE5leHQgaW5kZXggZm9yIGFkZGVkIGNvbXBhcmF0b3IKKworKGRlZmluZSAqbmV4dC1jb21w YXJhdG9yLWluZGV4KiAwKQorKGRlZmluZSAqcmVnaXN0ZXJlZC1jb21wYXJhdG9ycyogKG1ha2Ut dmVjdG9yIDggdW5rbm93bi1vYmplY3QtY29tcGFyYXRvcikpCisKKzs7IFJlZ2lzdGVyIGEgbmV3 IGNvbXBhcmF0b3IgZm9yIHVzZSBieSB0aGUgZGVmYXVsdCBjb21wYXJhdG9yLgorKGRlZmluZSAo Y29tcGFyYXRvci1yZWdpc3Rlci1kZWZhdWx0ISBjb21wYXJhdG9yKQorICAobGV0ICgobGVuICh2 ZWN0b3ItbGVuZ3RoICpyZWdpc3RlcmVkLWNvbXBhcmF0b3JzKikpKQorICAgIChpZiAoPSAqbmV4 dC1jb21wYXJhdG9yLWluZGV4KiAoLSBsZW4gMSkpCisgICAgICAgIChzZXQhICpyZWdpc3RlcmVk LWNvbXBhcmF0b3JzKgorICAgICAgICAgICh2ZWN0b3ItY29weSAqcmVnaXN0ZXJlZC1jb21wYXJh dG9ycyogMCAoKiAyIGxlbikgdW5rbm93bi1vYmplY3QtY29tcGFyYXRvcikpKSkKKyAgKHZlY3Rv ci1zZXQhICpyZWdpc3RlcmVkLWNvbXBhcmF0b3JzKiAqbmV4dC1jb21wYXJhdG9yLWluZGV4KiBj b21wYXJhdG9yKQorICAoc2V0ISAqbmV4dC1jb21wYXJhdG9yLWluZGV4KiAoKyAxICpuZXh0LWNv bXBhcmF0b3ItaW5kZXgqKSkpCisKKzs7IFJldHVybiBvcmRpbmFsIGZvciBvYmplY3QgdHlwZXM6 IG51bGwgc29ydHMgYmVmb3JlIGJvb2xlYW5zLCB3aGljaCBzb3J0Cis7OyBiZWZvcmUgbnVtYmVy cywgZXRjLiAgSW1wbGVtZW50YXRpb25zIGNhbiBleHRlbmQgdGhpcy4KKzs7IFBlb3BsZSB3aG8g Y2FsbCBjb21wYXJhdG9yLXJlZ2lzdGVyLWRlZmF1bHQhIGVmZmVjdGl2ZWx5IGRvIGV4dGVuZCBp dC4KKyhkZWZpbmUgKGludGVybmFsLW9iamVjdC10eXBlIG9iaikKKyAgKGNvbmQKKyAgICgobnVs bD8gb2JqKSAwKQorICAgKChib29sZWFuPyBvYmopIDEpCisgICAoKG51bWJlcj8gb2JqKSAyKQor ICAgKChjaGFyPyBvYmopIDMpCisgICAoKHN0cmluZz8gb2JqKSA0KQorICAgKChzeW1ib2w/IG9i aikgNSkKKyAgICgoYnl0ZXZlY3Rvcj8gb2JqKSA2KQorICAgKCh2ZWN0b3I/IG9iaikgNykKKyAg ICgocGFpcj8gb2JqKSA4KQorICAgKCh1bnNwZWNpZmllZD8gb2JqKSA5KQorICAgKChlb2Ytb2Jq ZWN0PyBvYmopIDEwKQorICAgOzsgQWRkIG1vcmUgaGVyZSBpZiB5b3Ugd2FudAorICAgKGVsc2Ug I2YpKSkKKworKGRlZmluZSAoZXh0ZXJuYWwtb2JqZWN0LXR5cGUgb2JqKQorICAocmVnaXN0ZXJl ZC1pbmRleCBvYmopKQorCis7OyBSZXR1cm4gdGhlIGluZGV4IGZvciB0aGUgcmVnaXN0ZXJlZCB0 eXBlIG9mIG9iai4KKyhkZWZpbmUgKHJlZ2lzdGVyZWQtaW5kZXggb2JqKQorICAodmVjdG9yLWlu ZGV4IChsYW1iZGEgKGNvbXBhcmF0b3IpCisgICAgICAgICAgICAgICAgICAoY29tcGFyYXRvci10 ZXN0LXR5cGUgY29tcGFyYXRvciBvYmopKQorICAgICAgICAgICAgICAgICpyZWdpc3RlcmVkLWNv bXBhcmF0b3JzKikpCisKKyhkZWZpbmUgKGV4dGVybmFsLW9iamVjdC1jb21wYXJhdG9yIG9iaikK KyAgKHZlY3Rvci1hbnkgKGxhbWJkYSAoY29tcGFyYXRvcikKKyAgICAgICAgICAgICAgICAoYW5k IChjb21wYXJhdG9yLXRlc3QtdHlwZSBjb21wYXJhdG9yIG9iaikKKyAgICAgICAgICAgICAgICAg ICAgIGNvbXBhcmF0b3IpKQorICAgICAgICAgICAgICAqcmVnaXN0ZXJlZC1jb21wYXJhdG9ycyop KQorCis7OyBHaXZlbiBhbiBpbmRleCwgcmV0cmlldmUgYSByZWdpc3RlcmVkIGNvbmR1Y3Rvci4K KyhkZWZpbmUgKHJlZ2lzdGVyZWQtY29tcGFyYXRvciBpKQorICAodmVjdG9yLXJlZiAqcmVnaXN0 ZXJlZC1jb21wYXJhdG9ycyogaSkpCisKKyhkZWZpbmUgKGludGVybmFsLWRpc3BhdGNoLWVxdWFs aXR5IHR5cGUgYSBiKQorICA7OyBFUVVBTD8gYWxyZWFkeSByZXR1cm5zICN0IGZvciBtYW55IGlu dGVybmFsIHR5cGVzCisgIChjYXNlIHR5cGUKKyAgICA7OyAoKDApICN0KSA7IEFsbCBlbXB0eSBs aXN0cyBhcmUgZXF1YWwKKyAgICA7OyAoKDEpIChpZiBhIChhbmQgYiAjdCkgKG5vdCBiKSkpCisg ICAgOzsgKCgyKSAoPSBhIGIpKQorICAgIDs7ICgoMykgKGNoYXI9PyBhIGIpKQorICAgIDs7ICgo NCkgKHN0cmluZz0/IGEgYikpCisgICAgOzsgKCg1KSAoZXE/IGEgYikpCisgICAgOzsgKCg2KSAo ZGVmYXVsdC1ieXRldmVjdG9yPT8gYSBiKSkKKyAgICAoKDcpIChkZWZhdWx0LXZlY3Rvcj0/IGEg YikpCisgICAgKCg4KSAoZGVmYXVsdC1wYWlyPT8gYSBiKSkKKyAgICA7OyAoKDkgMTApICN0KQor ICAgIDs7IEFkZCBtb3JlIGhlcmUKKyAgICAoZWxzZSAjZikpKQorCisoZGVmaW5lIChleHRlcm5h bC1kaXNwYXRjaC1lcXVhbGl0eSB0eXBlIGEgYikKKyAgKGJpbmFyeT0/IChyZWdpc3RlcmVkLWNv bXBhcmF0b3IgdHlwZSkgYSBiKSkKKworKGRlZmluZSAoaW50ZXJuYWwtZGlzcGF0Y2gtb3JkZXJp bmcgdHlwZSBhIGIpCisgIDs7IEVRVUFMPyBhbHJlYWR5IGVsaW1pbmF0ZXMgc29tZSBpbnRlcm5h bCB0eXBlcworICAoY2FzZSB0eXBlCisgICAgOzsgKCgwKSAjZikgOyBBbGwgZW1wdHkgbGlzdHMg YXJlIGVxdWFsCisgICAgKCgxKSAoYW5kIChub3QgYSkgYikpIDsgI2YgPCAjdCBidXQgbm90IG90 aGVyd2lzZQorICAgICgoMikgKGNvbXBsZXg8PyBhIGIpKQorICAgICgoMykgKGNoYXI8PyBhIGIp KQorICAgICgoNCkgKHN0cmluZzw/IGEgYikpCisgICAgKCg1KSAoc3ltYm9sPD8gYSBiKSkKKyAg ICAoKDYpIChkZWZhdWx0LWJ5dGV2ZWN0b3I8PyBhIGIpKQorICAgICgoNykgKGRlZmF1bHQtdmVj dG9yPD8gYSBiKSkKKyAgICAoKDgpIChkZWZhdWx0LXBhaXI8PyBhIGIpKQorICAgIDs7ICgoOSAx MCkgI2YpCisgICAgOzsgQWRkIG1vcmUgaGVyZQorICAgICkpCisKKyhkZWZpbmUgKGV4dGVybmFs LWRpc3BhdGNoLW9yZGVyaW5nIHR5cGUgYSBiKQorICAoYmluYXJ5PD8gKHJlZ2lzdGVyZWQtY29t cGFyYXRvciB0eXBlKSBhIGIpKQorCis7OyBFUVVBTC1IQVNIIHJldHVybnMgdGhlIHNhbWUgYXMg SEFTSC1CWS1WQUxVRSBvbiBudW1iZXJzIGFuZAorOzsgSEFTSC1CWS1JREVOVElUWSBvbiBib29s ZWFucywgY2hhcnMgYW5kIHN5bWJvbHMuCisKKyhkZWZpbmUgKGRlZmF1bHQtaGFzaCBvYmopCisg IChsZXQgKCh0eXBlIChpbnRlcm5hbC1vYmplY3QtdHlwZSBvYmopKSkKKyAgICAoaWYgdHlwZQor ICAgICAgICAoaWYgKG9yICg8PSB0eXBlIDYpICg+PSB0eXBlIDkpKQorICAgICAgICAgICAgKGVx dWFsLWhhc2ggb2JqKQorICAgICAgICAgICAgKGNhc2UgdHlwZQorICAgICAgICAgICAgICAoKDcp IChkZWZhdWx0LXZlY3Rvci1oYXNoIG9iaikpCisgICAgICAgICAgICAgICgoOCkgKGRlZmF1bHQt cGFpci1oYXNoIG9iaikpCisgICAgICAgICAgICAgIDs7IEFkZCBtb3JlIGhlcmUKKyAgICAgICAg ICAgICAgKSkKKyAgICAgICAgKGxldCAoKGNvbXBhcmF0b3IgKGV4dGVybmFsLW9iamVjdC1jb21w YXJhdG9yIG9iaikpKQorICAgICAgICAgIChjb21wYXJhdG9yLWhhc2ggY29tcGFyYXRvciBvYmop KSkpKQorCisoZGVmaW5lIChkZWZhdWx0LW9yZGVyaW5nIGEgYikKKyAgKGFuZCAobm90IChlcXVh bD8gYSBiKSkgOyBzaG91bGQgYmUgbXVjaCBmYXN0ZXIgdGhhbiB0aGlzIHByb2NlZHVyZQorICAg ICAgIChsZXQgKChhLWl0eXBlIChpbnRlcm5hbC1vYmplY3QtdHlwZSBhKSkKKyAgICAgICAgICAg ICAoYi1pdHlwZSAoaW50ZXJuYWwtb2JqZWN0LXR5cGUgYikpKQorICAgICAgICAgKGNvbmQKKyAg ICAgICAgICAoKG5vdCBiLWl0eXBlKQorICAgICAgICAgICAob3IgYS1pdHlwZQorICAgICAgICAg ICAgICAgOzsgTmVpdGhlciBhIG5vciBiIGFyZSBvZiBpbnRlcm5hbCB0eXBlOgorICAgICAgICAg ICAgICAgOzsgZGlzcGF0Y2ggb3JkZXJpbmcgb24gZXh0ZXJuYWwgdHlwZQorICAgICAgICAgICAg ICAgKGxldCAoKGEtZXR5cGUgKGV4dGVybmFsLW9iamVjdC10eXBlIGEpKQorICAgICAgICAgICAg ICAgICAgICAgKGItZXR5cGUgKGV4dGVybmFsLW9iamVjdC10eXBlIGIpKSkKKyAgICAgICAgICAg ICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICgoPCBhLWV0eXBlIGItZXR5cGUpICN0KQor ICAgICAgICAgICAgICAgICAgKCg+IGEtZXR5cGUgYi1ldHlwZSkgI2YpCisgICAgICAgICAgICAg ICAgICAoZWxzZSAoZXh0ZXJuYWwtZGlzcGF0Y2gtb3JkZXJpbmcgYS1ldHlwZSBhIGIpKSkpKSkK KyAgICAgICAgICAoKG5vdCBhLWl0eXBlKSAjZikKKyAgICAgICAgICA7OyBCb3RoIGEgYW5kIGIg YXJlIG9mIGludGVybmFsIHR5cGUKKyAgICAgICAgICAoKDwgYS1pdHlwZSBiLWl0eXBlKSAjdCkK KyAgICAgICAgICAoKD4gYS1pdHlwZSBiLWl0eXBlKSAjZikKKyAgICAgICAgICAoZWxzZSAoaW50 ZXJuYWwtZGlzcGF0Y2gtb3JkZXJpbmcgYS1pdHlwZSBhIGIpKSkpKSkKKworKGRlZmluZSAoZGVm YXVsdC1lcXVhbGl0eSBhIGIpCisgIChvciAoZXF1YWw/IGEgYikgOyBzaG91bGQgYmUgbXVjaCBm YXN0ZXIgdGhhbiB0aGlzIHByb2NlZHVyZQorICAgICAgKGxldCAoKGEtaXR5cGUgKGludGVybmFs LW9iamVjdC10eXBlIGEpKQorICAgICAgICAgICAgKGItaXR5cGUgKGludGVybmFsLW9iamVjdC10 eXBlIGIpKSkKKyAgICAgICAgKGFuZCAoZXF2PyBhLWl0eXBlIGItaXR5cGUpCisgICAgICAgICAg ICAgKGlmIGEtaXR5cGUKKyAgICAgICAgICAgICAgICAgKGludGVybmFsLWRpc3BhdGNoLWVxdWFs aXR5IGEtaXR5cGUgYSBiKQorICAgICAgICAgICAgICAgICAobGV0ICgoYS1jb21wIChleHRlcm5h bC1vYmplY3QtY29tcGFyYXRvciBhKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGItY29tcCAo ZXh0ZXJuYWwtb2JqZWN0LWNvbXBhcmF0b3IgYikpKQorICAgICAgICAgICAgICAgICAgIChhbmQg KGVxPyBhLWNvbXAgYi1jb21wKSAoYmluYXJ5PT8gYS1jb21wIGEgYikpKSkpKSkpCisKKzs7IE5v dGU6IGNvbXBhcmF0b3JzIGFyZSBpbW11dGFibGUsIG5vIHJlYXNvbiB0byBhbGxvY2F0ZSBhIG5l dyBvbmUKKyhkZWZpbmUgZGVmYXVsdC1jb21wYXJhdG9yIChtYWtlLWNvbXBhcmF0b3IgYWx3YXlz LXRydWUgZGVmYXVsdC1lcXVhbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZWZhdWx0LW9yZGVyaW5nIGRlZmF1bHQtaGFzaCkpCisKKyhkZWZpbmUgKG1h a2UtZGVmYXVsdC1jb21wYXJhdG9yKSBkZWZhdWx0LWNvbXBhcmF0b3IpCisKKyhkZWZpbmUgZGVm YXVsdC1wYWlyLWNvbXBhcmF0b3IKKyAgKG1ha2UtcGFpci1jb21wYXJhdG9yIGRlZmF1bHQtY29t cGFyYXRvciBkZWZhdWx0LWNvbXBhcmF0b3IpKQorCisoZGVmaW5lIGRlZmF1bHQtcGFpcj0/Cisg IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBkZWZhdWx0LXBhaXItY29tcGFyYXRvcikp CisoZGVmaW5lIGRlZmF1bHQtcGFpcjw/CisgIChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0 ZSBkZWZhdWx0LXBhaXItY29tcGFyYXRvcikpCisoZGVmaW5lIGRlZmF1bHQtcGFpci1oYXNoCisg IChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gZGVmYXVsdC1wYWlyLWNvbXBhcmF0b3IpKQorCiso ZGVmaW5lIGRlZmF1bHQtdmVjdG9yLWNvbXBhcmF0b3IKKyAgKG1ha2UtdmVjdG9yLWNvbXBhcmF0 b3IgZGVmYXVsdC1jb21wYXJhdG9yIHZlY3Rvcj8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg dmVjdG9yLWxlbmd0aCB2ZWN0b3ItcmVmKSkKKworKGRlZmluZSBkZWZhdWx0LXZlY3Rvcj0/Cisg IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBkZWZhdWx0LXZlY3Rvci1jb21wYXJhdG9y KSkKKyhkZWZpbmUgZGVmYXVsdC12ZWN0b3I8PworICAoY29tcGFyYXRvci1vcmRlcmluZy1wcmVk aWNhdGUgZGVmYXVsdC12ZWN0b3ItY29tcGFyYXRvcikpCisoZGVmaW5lIGRlZmF1bHQtdmVjdG9y LWhhc2gKKyAgKGNvbXBhcmF0b3ItaGFzaC1mdW5jdGlvbiBkZWZhdWx0LXZlY3Rvci1jb21wYXJh dG9yKSkKKworKGRlZmluZSBkZWZhdWx0LWJ5dGV2ZWN0b3ItY29tcGFyYXRvcgorICAobWFrZS12 ZWN0b3ItY29tcGFyYXRvciBkZWZhdWx0LWNvbXBhcmF0b3IgYnl0ZXZlY3Rvcj8KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgYnl0ZXZlY3Rvci1sZW5ndGggYnl0ZXZlY3Rvci11OC1yZWYpKQor CisoZGVmaW5lIGRlZmF1bHQtYnl0ZXZlY3Rvcj0/CisgIChjb21wYXJhdG9yLWVxdWFsaXR5LXBy ZWRpY2F0ZSBkZWZhdWx0LWJ5dGV2ZWN0b3ItY29tcGFyYXRvcikpCisoZGVmaW5lIGRlZmF1bHQt Ynl0ZXZlY3Rvcjw/CisgIChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0ZSBkZWZhdWx0LWJ5 dGV2ZWN0b3ItY29tcGFyYXRvcikpCisoZGVmaW5lIGRlZmF1bHQtYnl0ZXZlY3Rvci1oYXNoCisg IChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gZGVmYXVsdC1ieXRldmVjdG9yLWNvbXBhcmF0b3Ip KQorCis7OzsgV3JhcHBlZCBlcXVhbGl0eSBwcmVkaWNhdGVzCis7OzsgVGhlc2UgY29tcGFyYXRv cnMgZG9uJ3QgaGF2ZSBvcmRlcmluZyBmdW5jdGlvbnMuCisKKzs7IE5vdGU6IGNvbXBhcmF0b3Jz IGFyZSBpbW11dGFibGUsIG5vIHJlYXNvbiB0byBhbGxvY2F0ZSBhIG5ldyBvbmUKKyhkZWZpbmUg ZXEtY29tcGFyYXRvciAobWFrZS1jb21wYXJhdG9yICN0IGVxPyAjZiBkZWZhdWx0LWhhc2gpKQor KGRlZmluZSAobWFrZS1lcS1jb21wYXJhdG9yKSBlcS1jb21wYXJhdG9yKQorCisoZGVmaW5lIGVx di1jb21wYXJhdG9yIChtYWtlLWNvbXBhcmF0b3IgI3QgZXF2PyAjZiBkZWZhdWx0LWhhc2gpKQor KGRlZmluZSAobWFrZS1lcXYtY29tcGFyYXRvcikgZXF2LWNvbXBhcmF0b3IpCisKKyhkZWZpbmUg ZXF1YWwtY29tcGFyYXRvciAobWFrZS1jb21wYXJhdG9yICN0IGVxdWFsPyAjZiBkZWZhdWx0LWhh c2gpKQorKGRlZmluZSAobWFrZS1lcXVhbC1jb21wYXJhdG9yKSBlcXVhbC1jb21wYXJhdG9yKQor Cis7OyBlb2YKZGlmZiAtLWdpdCBhL21vZHVsZS9zcmZpL3NyZmktMTI4L2dudS5zY20gYi9tb2R1 bGUvc3JmaS9zcmZpLTEyOC9nbnUuc2NtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMC4uODlmZDQzNGFhCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlL3NyZmkvc3JmaS0xMjgv Z251LnNjbQpAQCAtMCwwICsxLDM4IEBACis7OzsgRXh0ZW5zaW9ucyB0byBTUkZJLTEyOAorCis7 OyAgICBDb3B5cmlnaHQgKEMpIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7 OworOzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorOzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworOzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7OyB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7OworOzsgVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKKzs7IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCis7OworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworOzsgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorOzsgRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQQorCisoZGVmaW5lLW1vZHVsZSAoc3JmaSBzcmZpLTEyOCBnbnUpCisgICM6ZXhw b3J0IChoYXNoLWJvdW5kIGhhc2gtc2FsdCB3aXRoLWhhc2gtc2FsdCkpCisKKyhkZWZpbmUtc3lu dGF4IGhhc2gtYm91bmQKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoaGFzaC1ib3VuZCkgbW9z dC1wb3NpdGl2ZS1maXhudW0pKSkKKworKGRlZmluZSAlc2FsdCUgKG1ha2UtcGFyYW1ldGVyIChy YW5kb20gKGhhc2gtYm91bmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2VlZC0+cmFuZG9tLXN0YXRlIChjdXJyZW50LXRpbWUpKSkpKQorCisoZGVmaW5lLXN5bnRh eCBoYXNoLXNhbHQKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoaGFzaC1zYWx0KSAoJXNhbHQl KSkpKQorCisoZGVmaW5lLXN5bnRheCB3aXRoLWhhc2gtc2FsdAorICAoc3ludGF4LXJ1bGVzICgp CisgICAgKCh3aXRoLWhhc2gtc2FsdCBuZXctc2FsdCBoYXNoLWZ1bmMgb2JqKQorICAgICAocGFy YW1ldGVyaXplICgoJXNhbHQlIG5ldy1zYWx0KSkgKGhhc2gtZnVuYyBvYmopKSkpKQorCis7OyBl b2YKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0gYi90ZXN0LXN1aXRlL01ha2Vm aWxlLmFtCmluZGV4IGYwYWQ4YmI5MS4uYTJmNzNiMzI5IDEwMDY0NAotLS0gYS90ZXN0LXN1aXRl L01ha2VmaWxlLmFtCisrKyBiL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0KQEAgLTE2Myw2ICsxNjMs NyBAQCBTQ01fVEVTVFMgPSB0ZXN0cy8wMC1pbml0aWFsLWVudi50ZXN0CQlcCiAJICAgIHRlc3Rz L3NyZmktMTA1LnRlc3QJCQlcCiAJICAgIHRlc3RzL3NyZmktMTExLnRlc3QJCQlcCiAJICAgIHRl c3RzL3NyZmktMTI2LnRlc3QJCQlcCisJICAgIHRlc3RzL3NyZmktMTI4LnRlc3QJCQlcCiAJICAg IHRlc3RzL3NyZmktNC50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZpLTkudGVzdAkJCVwKIAkgICAg dGVzdHMvc3RhdHByb2YudGVzdAkJCVwKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3Jm aS0xMjgudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjgudGVzdApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjAyYTUzOGUyMgotLS0gL2Rldi9udWxsCisrKyBiL3Rl c3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjgudGVzdApAQCAtMCwwICsxLDM0OCBAQAorOzs7OyBzcmZp LTEyOC50ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBTUkZJIDEyOCAtKi0gc2NoZW1lIC0qLQorOzs7 OworOzs7OyAJQ29weXJpZ2h0IChDKSAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorOzs7OworOzs7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCis7Ozs7IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7OzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7Ozs7IHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OzsK Kzs7OzsgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCis7Ozs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7Ozs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCis7Ozs7IExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7Ozs7Cis7Ozs7IFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK Kzs7OzsgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorOzs7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisKKzs7OyBUaGUgZm9s bG93aW5nIHRlc3RzIGFyZSB0aGUgdGVzdHMgZnJvbSBTUkZJLTEyNiByZWZlcmVuY2UKKzs7OyBp bXBsZW1lbnRhdGlvbiBwb3J0ZWQgdG8gR3VpbGUgdGVzdCBzdWl0ZS4KKworOzsgVGhpcyBmaWxl IGNvbnRhaW5zIGNvZGUgZnJvbSBTUkZJIDEyOCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24sIGJ5 Cis7OyBKb2huIENvd2FuCisKKzs7OyBDb3B5cmlnaHQgKEMpIEpvaG4gQ293YW4gKDIwMTUpLiBB bGwgUmlnaHRzIFJlc2VydmVkLgorOzs7Cis7OzsgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KKzs7OyBvYnRhaW5pbmcgYSBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorOzs7IGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKzs7OyByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwK Kzs7OyBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LCBhbmQvb3IKKzs7OyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorOzs7IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nCis7OzsgY29uZGl0aW9uczoKKzs7OworOzs7IFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl Cis7OzsgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUgU29mdHdhcmUuCis7OzsKKzs7OyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKzs7OyBFWFBSRVNTIE9SIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMKKzs7OyBPRiBNRVJDSEFO VEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorOzs7IE5PTklO RlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCis7 OzsgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFC SUxJVFksCis7OzsgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HCis7OzsgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorOzs7IE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZU V0FSRS4KKworKGRlZmluZS1tb2R1bGUgKHRlc3Qtc3JmaS0xMjgpCisgICM6dXNlLW1vZHVsZSAo dGVzdC1zdWl0ZSBsaWIpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEyOCkKKyAgIzp1c2Ut bW9kdWxlIChzcmZpIHNyZmktMSkKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMikKKyAgIzp1 c2UtbW9kdWxlIChzcmZpIHNyZmktOCkKKyAgIzp1c2UtbW9kdWxlIChybnJzIGJ5dGV2ZWN0b3Jz KSkKKworKGRlZmluZSAodmVjdG9yLWNkciB2ZWMpCisgIChsZXQqICgobGVuICh2ZWN0b3ItbGVu Z3RoIHZlYykpCisgICAgICAgICAocmVzdWx0IChtYWtlLXZlY3RvciAoLSBsZW4gMSkpKSkKKyAg ICAobGV0IGxvb3AgKChuIDEpKQorICAgICAgKGNvbmQKKyAgICAgICAoKD0gbiBsZW4pIHJlc3Vs dCkKKyAgICAgICAoZWxzZSAodmVjdG9yLXNldCEgcmVzdWx0ICgtIG4gMSkgKHZlY3Rvci1yZWYg dmVjIG4pKQorICAgICAgICAgICAgIChsb29wICgrIG4gMSkpKSkpKSkKKworKGRlZmluZSBkZWZh dWx0LWNvbXBhcmF0b3IgKG1ha2UtZGVmYXVsdC1jb21wYXJhdG9yKSkKKworKGRlZmluZSByZWFs LWNvbXBhcmF0b3IgKG1ha2UtY29tcGFyYXRvciByZWFsPyA9IDwgbnVtYmVyLWhhc2gpKQorCiso ZGVmaW5lIGRlZ2VuZXJhdGUtY29tcGFyYXRvciAobWFrZS1jb21wYXJhdG9yIChsYW1iZGEgKHgp ICN0KSBlcXVhbD8gI2YgI2YpKQorCisoZGVmaW5lIGJvb2xlYW4tY29tcGFyYXRvcgorICAobWFr ZS1jb21wYXJhdG9yIGJvb2xlYW4/IGVxPyAobGFtYmRhICh4IHkpIChhbmQgKG5vdCB4KSB5KSkg Ym9vbGVhbi1oYXNoKSkKKworKGRlZmluZSBib29sLXBhaXItY29tcGFyYXRvcgorICAobWFrZS1w YWlyLWNvbXBhcmF0b3IgYm9vbGVhbi1jb21wYXJhdG9yIGJvb2xlYW4tY29tcGFyYXRvcikpCisK KyhkZWZpbmUgbnVtLWxpc3QtY29tcGFyYXRvcgorICAobWFrZS1saXN0LWNvbXBhcmF0b3IgcmVh bC1jb21wYXJhdG9yIGxpc3Q/IG51bGw/IGNhciBjZHIpKQorCisoZGVmaW5lIG51bS12ZWN0b3It Y29tcGFyYXRvcgorICAobWFrZS12ZWN0b3ItY29tcGFyYXRvciByZWFsLWNvbXBhcmF0b3IgdmVj dG9yPyB2ZWN0b3ItbGVuZ3RoIHZlY3Rvci1yZWYpKQorCisoZGVmaW5lIHZlY3Rvci1xdWEtbGlz dC1jb21wYXJhdG9yCisgIChtYWtlLWxpc3QtY29tcGFyYXRvcgorICAgcmVhbC1jb21wYXJhdG9y CisgICB2ZWN0b3I/CisgICAobGFtYmRhICh2ZWMpICg9IDAgKHZlY3Rvci1sZW5ndGggdmVjKSkp CisgICAobGFtYmRhICh2ZWMpICh2ZWN0b3ItcmVmIHZlYyAwKSkKKyAgIHZlY3Rvci1jZHIpKQor CisoZGVmaW5lIGxpc3QtcXVhLXZlY3Rvci1jb21wYXJhdG9yCisgIChtYWtlLXZlY3Rvci1jb21w YXJhdG9yIGRlZmF1bHQtY29tcGFyYXRvciBsaXN0PyBsZW5ndGggbGlzdC1yZWYpKQorCisoZGVm aW5lIGVxLWNvbXBhcmF0b3IgKG1ha2UtZXEtY29tcGFyYXRvcikpCisKKyhkZWZpbmUgZXF2LWNv bXBhcmF0b3IgKG1ha2UtZXF2LWNvbXBhcmF0b3IpKQorCisoZGVmaW5lIGVxdWFsLWNvbXBhcmF0 b3IgKG1ha2UtZXF1YWwtY29tcGFyYXRvcikpCisKKyhkZWZpbmUgc3ltYm9sLWNvbXBhcmF0b3IK KyAgKG1ha2UtY29tcGFyYXRvcgorICAgc3ltYm9sPworICAgZXE/CisgICAobGFtYmRhIChhIGIp IChzdHJpbmc8PyAoc3ltYm9sLT5zdHJpbmcgYSkgKHN5bWJvbC0+c3RyaW5nIGIpKSkKKyAgIHN5 bWJvbC1oYXNoKSkKKworCisod2l0aC10ZXN0LXByZWZpeCAiU1JGSS0xMjgiCisKKyAgKHBhc3Mt aWYtZXF1YWwgJyMoMiAzIDQpICh2ZWN0b3ItY2RyICcjKDEgMiAzIDQpKSkKKyAgKHBhc3MtaWYt ZXF1YWwgJyMoKSAodmVjdG9yLWNkciAnIygxKSkpCisKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNv bXBhcmF0b3JzL3ByZWRpY2F0ZXMiCisgICAgKHBhc3MtaWYgKGNvbXBhcmF0b3I/IHJlYWwtY29t cGFyYXRvcikpCisgICAgKHBhc3MtaWYgKG5vdCAoY29tcGFyYXRvcj8gPSkpKQorICAgIChwYXNz LWlmIChjb21wYXJhdG9yLW9yZGVyZWQ/IHJlYWwtY29tcGFyYXRvcikpCisgICAgKHBhc3MtaWYg KGNvbXBhcmF0b3ItaGFzaGFibGU/IHJlYWwtY29tcGFyYXRvcikpCisgICAgKHBhc3MtaWYgKG5v dCAoY29tcGFyYXRvci1vcmRlcmVkPyBkZWdlbmVyYXRlLWNvbXBhcmF0b3IpKSkKKyAgICAocGFz cy1pZiAobm90IChjb21wYXJhdG9yLWhhc2hhYmxlPyBkZWdlbmVyYXRlLWNvbXBhcmF0b3IpKSkK KyAgICApIDsgZW5kIGNvbXBhcmF0b3JzL3ByZWRpY2F0ZXMKKworICAod2l0aC10ZXN0LXByZWZp eCAiY29tcGFyYXRvcnMvY29uc3RydWN0b3JzIgorICAgIChwYXNzLWlmICg9PyBib29sZWFuLWNv bXBhcmF0b3IgI3QgI3QpKQorICAgIChwYXNzLWlmIChub3QgKD0/IGJvb2xlYW4tY29tcGFyYXRv ciAjdCAjZikpKQorICAgIChwYXNzLWlmICg8PyBib29sZWFuLWNvbXBhcmF0b3IgI2YgI3QpKQor ICAgIChwYXNzLWlmIChub3QgKDw/IGJvb2xlYW4tY29tcGFyYXRvciAjdCAjdCkpKQorICAgIChw YXNzLWlmIChub3QgKDw/IGJvb2xlYW4tY29tcGFyYXRvciAjdCAjZikpKQorCisgICAgKHBhc3Mt aWYgKGNvbXBhcmF0b3ItdGVzdC10eXBlIGJvb2wtcGFpci1jb21wYXJhdG9yICcoI3QgLiAjZikp KQorICAgIChwYXNzLWlmIChub3QgKGNvbXBhcmF0b3ItdGVzdC10eXBlIGJvb2wtcGFpci1jb21w YXJhdG9yIDMyKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoY29tcGFyYXRvci10ZXN0LXR5cGUgYm9v bC1wYWlyLWNvbXBhcmF0b3IgJygzMiAuICNmKSkpKQorICAgIChwYXNzLWlmIChub3QgKGNvbXBh cmF0b3ItdGVzdC10eXBlIGJvb2wtcGFpci1jb21wYXJhdG9yICcoI3QgLiAzMikpKSkKKyAgICAo cGFzcy1pZiAobm90IChjb21wYXJhdG9yLXRlc3QtdHlwZSBib29sLXBhaXItY29tcGFyYXRvciAn KDMyIC4gMzQpKSkpCisgICAgKHBhc3MtaWYgKD0/IGJvb2wtcGFpci1jb21wYXJhdG9yICcoI3Qg LiAjdCkgJygjdCAuICN0KSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gYm9vbC1wYWlyLWNvbXBh cmF0b3IgJygjdCAuICN0KSAnKCNmIC4gI3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gYm9v bC1wYWlyLWNvbXBhcmF0b3IgJygjdCAuICN0KSAnKCN0IC4gI2YpKSkpCisgICAgKHBhc3MtaWYg KDw/IGJvb2wtcGFpci1jb21wYXJhdG9yICcoI2YgLiAjdCkgJygjdCAuICN0KSkpCisgICAgKHBh c3MtaWYgKDw/IGJvb2wtcGFpci1jb21wYXJhdG9yICcoI3QgLiAjZikgJygjdCAuICN0KSkpCisg ICAgKHBhc3MtaWYgKG5vdCAoPD8gYm9vbC1wYWlyLWNvbXBhcmF0b3IgJygjdCAuICN0KSAnKCN0 IC4gI3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gYm9vbC1wYWlyLWNvbXBhcmF0b3IgJygj dCAuICN0KSAnKCNmIC4gI3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gYm9vbC1wYWlyLWNv bXBhcmF0b3IgJygjZiAuICN0KSAnKCNmIC4gI2YpKSkpCisKKyAgICAocGFzcy1pZiAoY29tcGFy YXRvci10ZXN0LXR5cGUgbnVtLXZlY3Rvci1jb21wYXJhdG9yICcjKDEgMiAzKSkpCisgICAgKHBh c3MtaWYgKGNvbXBhcmF0b3ItdGVzdC10eXBlIG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygpKSkK KyAgICAocGFzcy1pZiAobm90IChjb21wYXJhdG9yLXRlc3QtdHlwZSBudW0tdmVjdG9yLWNvbXBh cmF0b3IgMSkpKQorICAgIChwYXNzLWlmIChub3QgKGNvbXBhcmF0b3ItdGVzdC10eXBlIG51bS12 ZWN0b3ItY29tcGFyYXRvciAnIyhhIDIgMykpKSkKKyAgICAocGFzcy1pZiAobm90IChjb21wYXJh dG9yLXRlc3QtdHlwZSBudW0tdmVjdG9yLWNvbXBhcmF0b3IgJyMoMSBiIDMpKSkpCisgICAgKHBh c3MtaWYgKG5vdCAoY29tcGFyYXRvci10ZXN0LXR5cGUgbnVtLXZlY3Rvci1jb21wYXJhdG9yICcj KDEgMiBjKSkpKQorICAgIChwYXNzLWlmICg9PyBudW0tdmVjdG9yLWNvbXBhcmF0b3IgJyMoMSAy IDMpICcjKDEgMiAzKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gbnVtLXZlY3Rvci1jb21wYXJh dG9yICcjKDEgMiAzKSAnIyg0IDUgNikpKSkKKyAgICAocGFzcy1pZiAobm90ICg9PyBudW0tdmVj dG9yLWNvbXBhcmF0b3IgJyMoMSAyIDMpICcjKDEgNSA2KSkpKQorICAgIChwYXNzLWlmIChub3Qg KD0/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygxIDIgMykgJyMoMSAyIDYpKSkpCisgICAgKHBh c3MtaWYgKDw/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygxIDIpICcjKDEgMiAzKSkpCisgICAg KHBhc3MtaWYgKDw/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygxIDIgMykgJyMoMiAzIDQpKSkK KyAgICAocGFzcy1pZiAoPD8gbnVtLXZlY3Rvci1jb21wYXJhdG9yICcjKDEgMiAzKSAnIygxIDMg NCkpKQorICAgIChwYXNzLWlmICg8PyBudW0tdmVjdG9yLWNvbXBhcmF0b3IgJyMoMSAyIDMpICcj KDEgMiA0KSkpCisgICAgKHBhc3MtaWYgKDw/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygzIDQp ICcjKDEgMiAzKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gbnVtLXZlY3Rvci1jb21wYXJhdG9y ICcjKDEgMiAzKSAnIygxIDIgMykpKSkKKyAgICAocGFzcy1pZiAobm90ICg8PyBudW0tdmVjdG9y LWNvbXBhcmF0b3IgJyMoMSAyIDMpICcjKDEgMikpKSkKKyAgICAocGFzcy1pZiAobm90ICg8PyBu dW0tdmVjdG9yLWNvbXBhcmF0b3IgJyMoMSAyIDMpICcjKDAgMiAzKSkpKQorICAgIChwYXNzLWlm IChub3QgKDw/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygxIDIgMykgJyMoMSAxIDMpKSkpCisK KyAgICAocGFzcy1pZiAobm90ICg8PyB2ZWN0b3ItcXVhLWxpc3QtY29tcGFyYXRvciAnIygzIDQp ICcjKDEgMiAzKSkpKQorICAgIChwYXNzLWlmICg8PyBsaXN0LXF1YS12ZWN0b3ItY29tcGFyYXRv ciAnKDMgNCkgJygxIDIgMykpKQorCisgICAgKGxldCAoKGJvb2wtcGFpciAoY29ucyAjdCAjZikp CisgICAgICAgICAgKGJvb2wtcGFpci0yIChjb25zICN0ICNmKSkKKyAgICAgICAgICAocmV2ZXJz ZS1ib29sLXBhaXIgKGNvbnMgI2YgI3QpKSkKKyAgICAgIChwYXNzLWlmICg9PyBlcS1jb21wYXJh dG9yICN0ICN0KSkKKyAgICAgIChwYXNzLWlmIChub3QgKD0/IGVxLWNvbXBhcmF0b3IgI2YgI3Qp KSkKKyAgICAgIChwYXNzLWlmICg9PyBlcXYtY29tcGFyYXRvciBib29sLXBhaXIgYm9vbC1wYWly KSkKKyAgICAgIChwYXNzLWlmIChub3QgKD0/IGVxdi1jb21wYXJhdG9yIGJvb2wtcGFpciBib29s LXBhaXItMikpKQorICAgICAgKHBhc3MtaWYgKD0/IGVxdWFsLWNvbXBhcmF0b3IgYm9vbC1wYWly IGJvb2wtcGFpci0yKSkKKyAgICAgIChwYXNzLWlmIChub3QgKD0/IGVxdWFsLWNvbXBhcmF0b3Ig Ym9vbC1wYWlyIHJldmVyc2UtYm9vbC1wYWlyKSkpKQorICAgICkgOyBlbmQgY29tcGFyYXRvcnMv Y29uc3RydWN0b3JzCisKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNvbXBhcmF0b3JzL2hhc2giCisg ICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChib29sZWFuLWhhc2ggI2YpKSkKKyAgICAocGFz cy1pZiAobm90IChuZWdhdGl2ZT8gKGJvb2xlYW4taGFzaCAjdCkpKSkKKyAgICAocGFzcy1pZiAo ZXhhY3QtaW50ZWdlcj8gKGNoYXItaGFzaCAjXGEpKSkKKyAgICAocGFzcy1pZiAobm90IChuZWdh dGl2ZT8gKGNoYXItaGFzaCAjXGIpKSkpCisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChj aGFyLWNpLWhhc2ggI1xhKSkpCisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRpdmU/IChjaGFyLWNp LWhhc2ggI1xiKSkpKQorICAgIChwYXNzLWlmICg9IChjaGFyLWNpLWhhc2ggI1xhKSAoY2hhci1j aS1oYXNoICNcQSkpKQorICAgIChwYXNzLWlmIChleGFjdC1pbnRlZ2VyPyAoc3RyaW5nLWhhc2gg ImYiKSkpCisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRpdmU/IChzdHJpbmctaGFzaCAiZyIpKSkp CisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChzdHJpbmctY2ktaGFzaCAiZiIpKSkKKyAg ICAocGFzcy1pZiAobm90IChuZWdhdGl2ZT8gKHN0cmluZy1jaS1oYXNoICJnIikpKSkKKyAgICAo cGFzcy1pZiAoPSAoc3RyaW5nLWNpLWhhc2ggImYiKSAoc3RyaW5nLWNpLWhhc2ggIkYiKSkpCisg ICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChzeW1ib2wtaGFzaCAnZikpKQorICAgIChwYXNz LWlmIChub3QgKG5lZ2F0aXZlPyAoc3ltYm9sLWhhc2ggJ3QpKSkpCisgICAgKHBhc3MtaWYgKGV4 YWN0LWludGVnZXI/IChudW1iZXItaGFzaCAzKSkpCisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRp dmU/IChudW1iZXItaGFzaCAzKSkpKQorICAgIChwYXNzLWlmIChleGFjdC1pbnRlZ2VyPyAobnVt YmVyLWhhc2ggLTMpKSkKKyAgICAocGFzcy1pZiAobm90IChuZWdhdGl2ZT8gKG51bWJlci1oYXNo IC0zKSkpKQorICAgIChwYXNzLWlmIChleGFjdC1pbnRlZ2VyPyAobnVtYmVyLWhhc2ggMy4wKSkp CisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRpdmU/IChudW1iZXItaGFzaCAzLjApKSkpCisgICAg KHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChudW1iZXItaGFzaCAzLjQ3KSkpCisgICAgKHBhc3Mt aWYgKG5vdCAobmVnYXRpdmU/IChudW1iZXItaGFzaCAzLjQ3KSkpKQorICAgIChwYXNzLWlmIChl eGFjdC1pbnRlZ2VyPyAoZGVmYXVsdC1oYXNoICcoKSkpKQorICAgIChwYXNzLWlmIChub3QgKG5l Z2F0aXZlPyAoZGVmYXVsdC1oYXNoICcoKSkpKSkKKyAgICAocGFzcy1pZiAoZXhhY3QtaW50ZWdl cj8gKGRlZmF1bHQtaGFzaCAnKGEgImIiICNcYyAjKGRlZSkgMi43MTgpKSkpCisgICAgKHBhc3Mt aWYgKG5vdCAobmVnYXRpdmU/IChkZWZhdWx0LWhhc2ggJyhhICJiIiAjXGMgIyhkZWUpIDIuNzE4 KSkpKSkKKyAgICAocGFzcy1pZiAoZXhhY3QtaW50ZWdlcj8gKGRlZmF1bHQtaGFzaCAnI3U4KCkp KSkKKyAgICAocGFzcy1pZiAobm90IChuZWdhdGl2ZT8gKGRlZmF1bHQtaGFzaCAnI3U4KCkpKSkp CisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChkZWZhdWx0LWhhc2ggJyN1OCg4IDYgMykp KSkKKyAgICAocGFzcy1pZiAobm90IChuZWdhdGl2ZT8gKGRlZmF1bHQtaGFzaCAnI3U4KDggNiAz KSkpKSkKKyAgICAocGFzcy1pZiAoZXhhY3QtaW50ZWdlcj8gKGRlZmF1bHQtaGFzaCAnIygpKSkp CisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRpdmU/IChkZWZhdWx0LWhhc2ggJyMoKSkpKSkKKyAg ICAocGFzcy1pZiAoZXhhY3QtaW50ZWdlcj8gKGRlZmF1bHQtaGFzaCAnIyhhICJiIiAjXGMgIyhk ZWUpIDIuNzE4KSkpKQorICAgIChwYXNzLWlmIChub3QgKG5lZ2F0aXZlPyAoZGVmYXVsdC1oYXNo ICcjKGEgImIiICNcYyAjKGRlZSkgMi43MTgpKSkpKQorCisgICAgKSA7IGVuZCBjb21wYXJhdG9y cy9oYXNoCisKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNvbXBhcmF0b3JzL2RlZmF1bHQiCisgICAg KHBhc3MtaWYgKDw/IGRlZmF1bHQtY29tcGFyYXRvciAnKCkgJyhhKSkpCisgICAgKHBhc3MtaWYg KG5vdCAoPT8gZGVmYXVsdC1jb21wYXJhdG9yICcoKSAnKGEpKSkpCisgICAgKHBhc3MtaWYgKD0/ IGRlZmF1bHQtY29tcGFyYXRvciAjdCAjdCkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gZGVmYXVs dC1jb21wYXJhdG9yICN0ICNmKSkpCisgICAgKHBhc3MtaWYgKDw/IGRlZmF1bHQtY29tcGFyYXRv ciAjZiAjdCkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gZGVmYXVsdC1jb21wYXJhdG9yICN0ICN0 KSkpCisgICAgKHBhc3MtaWYgKD0/IGRlZmF1bHQtY29tcGFyYXRvciAjXGEgI1xhKSkKKyAgICAo cGFzcy1pZiAoPD8gZGVmYXVsdC1jb21wYXJhdG9yICNcYSAjXGIpKQorCisgICAgKHBhc3MtaWYg KGNvbXBhcmF0b3ItdGVzdC10eXBlIGRlZmF1bHQtY29tcGFyYXRvciAnKCkpKQorICAgIChwYXNz LWlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgI3QpKQorICAgIChw YXNzLWlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgI1x0KSkKKyAg ICAocGFzcy1pZiAoY29tcGFyYXRvci10ZXN0LXR5cGUgZGVmYXVsdC1jb21wYXJhdG9yICcoYSkp KQorICAgIChwYXNzLWlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3Ig J2EpKQorICAgIChwYXNzLWlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0 b3IgKG1ha2UtYnl0ZXZlY3RvciAxMCkpKQorICAgIChwYXNzLWlmIChjb21wYXJhdG9yLXRlc3Qt dHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgMTApKQorICAgIChwYXNzLWlmIChjb21wYXJhdG9yLXRl c3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgMTAuMCkpCisgICAgKHBhc3MtaWYgKGNvbXBhcmF0 b3ItdGVzdC10eXBlIGRlZmF1bHQtY29tcGFyYXRvciAiMTAuMCIpKQorICAgIChwYXNzLWlmIChj b21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgJyMoMTApKSkKKworICAgIChw YXNzLWlmICg9PyBkZWZhdWx0LWNvbXBhcmF0b3IgJygjdCAuICN0KSAnKCN0IC4gI3QpKSkKKyAg ICAocGFzcy1pZiAobm90ICg9PyBkZWZhdWx0LWNvbXBhcmF0b3IgJygjdCAuICN0KSAnKCNmIC4g I3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gZGVmYXVsdC1jb21wYXJhdG9yICcoI3QgLiAj dCkgJygjdCAuICNmKSkpKQorICAgIChwYXNzLWlmICg8PyBkZWZhdWx0LWNvbXBhcmF0b3IgJygj ZiAuICN0KSAnKCN0IC4gI3QpKSkKKyAgICAocGFzcy1pZiAoPD8gZGVmYXVsdC1jb21wYXJhdG9y ICcoI3QgLiAjZikgJygjdCAuICN0KSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gZGVmYXVsdC1j b21wYXJhdG9yICcoI3QgLiAjdCkgJygjdCAuICN0KSkpKQorICAgIChwYXNzLWlmIChub3QgKDw/ IGRlZmF1bHQtY29tcGFyYXRvciAnKCN0IC4gI3QpICcoI2YgLiAjdCkpKSkKKyAgICAocGFzcy1p ZiAobm90ICg8PyBkZWZhdWx0LWNvbXBhcmF0b3IgJyMoI2YgI3QpICcjKCNmICNmKSkpKQorCisg ICAgKHBhc3MtaWYgKD0/IGRlZmF1bHQtY29tcGFyYXRvciAnIygjdCAjdCkgJyMoI3QgI3QpKSkK KyAgICAocGFzcy1pZiAobm90ICg9PyBkZWZhdWx0LWNvbXBhcmF0b3IgJyMoI3QgI3QpICcjKCNm ICN0KSkpKQorICAgIChwYXNzLWlmIChub3QgKD0/IGRlZmF1bHQtY29tcGFyYXRvciAnIygjdCAj dCkgJyMoI3QgI2YpKSkpCisgICAgKHBhc3MtaWYgKDw/IGRlZmF1bHQtY29tcGFyYXRvciAnIygj ZiAjdCkgJyMoI3QgI3QpKSkKKyAgICAocGFzcy1pZiAoPD8gZGVmYXVsdC1jb21wYXJhdG9yICcj KCN0ICNmKSAnIygjdCAjdCkpKQorICAgIChwYXNzLWlmIChub3QgKDw/IGRlZmF1bHQtY29tcGFy YXRvciAnIygjdCAjdCkgJyMoI3QgI3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gZGVmYXVs dC1jb21wYXJhdG9yICcjKCN0ICN0KSAnIygjZiAjdCkpKSkKKyAgICAocGFzcy1pZiAobm90ICg8 PyBkZWZhdWx0LWNvbXBhcmF0b3IgJyMoI2YgI3QpICcjKCNmICNmKSkpKQorCisgICAgKHBhc3Mt aWYgKD0gKGNvbXBhcmF0b3ItaGFzaCBkZWZhdWx0LWNvbXBhcmF0b3IgI3QpIChib29sZWFuLWhh c2ggI3QpKSkKKyAgICAocGFzcy1pZiAoPSAoY29tcGFyYXRvci1oYXNoIGRlZmF1bHQtY29tcGFy YXRvciAjXHQpIChjaGFyLWhhc2ggI1x0KSkpCisgICAgKHBhc3MtaWYgKD0gKGNvbXBhcmF0b3It aGFzaCBkZWZhdWx0LWNvbXBhcmF0b3IgInQiKSAoc3RyaW5nLWhhc2ggInQiKSkpCisgICAgKHBh c3MtaWYgKD0gKGNvbXBhcmF0b3ItaGFzaCBkZWZhdWx0LWNvbXBhcmF0b3IgJ3QpIChzeW1ib2wt aGFzaCAndCkpKQorICAgIChwYXNzLWlmICg9IChjb21wYXJhdG9yLWhhc2ggZGVmYXVsdC1jb21w YXJhdG9yIDEwKSAobnVtYmVyLWhhc2ggMTApKSkKKyAgICAocGFzcy1pZiAoPSAoY29tcGFyYXRv ci1oYXNoIGRlZmF1bHQtY29tcGFyYXRvciAxMC4wKSAobnVtYmVyLWhhc2ggMTAuMCkpKQorCisg ICAgKGNvbXBhcmF0b3ItcmVnaXN0ZXItZGVmYXVsdCEKKyAgICAgKG1ha2UtY29tcGFyYXRvciBw cm9jZWR1cmU/IChsYW1iZGEgKGEgYikgI3QpIChsYW1iZGEgKGEgYikgI2YpIChsYW1iZGEgKG9i aikgMjAwKSkpCisgICAgKHBhc3MtaWYgKD0/IGRlZmF1bHQtY29tcGFyYXRvciAobGFtYmRhICgp ICN0KSAobGFtYmRhICgpICNmKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gZGVmYXVsdC1jb21w YXJhdG9yIChsYW1iZGEgKCkgI3QpIChsYW1iZGEgKCkgI2YpKSkpCisgICAgKHBhc3MtaWYtZXF1 YWwgMjAwIChjb21wYXJhdG9yLWhhc2ggZGVmYXVsdC1jb21wYXJhdG9yIChsYW1iZGEgKCkgI3Qp KSkKKworICAgICkgOyBlbmQgY29tcGFyYXRvcnMvZGVmYXVsdAorCisgIDs7IFNSRkkgMTI4IGRv ZXMgbm90IGFjdHVhbGx5IHJlcXVpcmUgYSBjb21wYXJhdG9yJ3MgZm91ciBwcm9jZWR1cmVzCisg IDs7IHRvIGJlIGVxPyB0byB0aGUgcHJvY2VkdXJlcyBvcmlnaW5hbGx5IHBhc3NlZCB0byBtYWtl LWNvbXBhcmF0b3IuCisgIDs7IEZvciBpbnRlcm9wZXJhYmlsaXR5L2ludGVyY2hhbmdlYWJpbGl0 eSBiZXR3ZWVuIHRoZSBjb21wYXJhdG9ycworICA7OyBvZiBTUkZJIDExNCBhbmQgU1JGSSAxMjgs IHNvbWUgb2YgdGhlIHByb2NlZHVyZXMgcGFzc2VkIHRvCisgIDs7IG1ha2UtY29tcGFyYXRvciBt YXkgbmVlZCB0byBiZSB3cmFwcGVkIGluc2lkZSBhbm90aGVyIGxhbWJkYQorICA7OyBleHByZXNz aW9uIGJlZm9yZSB0aGV5J3JlIHJldHVybmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGFjY2Vzc29y LgorICA7OworICA7OyBTbyB0aGlzIG5leHQgZ3JvdXAgb2YgdGVzdHMgaXMgaW5jb3JyZWN0LCBo ZW5jZSBjb21tZW50ZWQgb3V0CisgIDs7IGFuZCByZXBsYWNlZCBieSBhIHNsaWdodGx5IGxlc3Mg bmFpdmUgZ3JvdXAgb2YgdGVzdHMuCisKKyAgIzsKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNvbXBh cmF0b3JzL2FjY2Vzc29ycyIKKyAgKGRlZmluZSB0dHAgKGxhbWJkYSAoeCkgI3QpKQorICAoZGVm aW5lIGVxcCAobGFtYmRhICh4IHkpICN0KSkKKyAgKGRlZmluZSBvcnAgKGxhbWJkYSAoeCB5KSAj dCkpCisgIChkZWZpbmUgaGYgKGxhbWJkYSAoeCkgMCkpCisgIChkZWZpbmUgY29tcCAobWFrZS1j b21wYXJhdG9yIHR0cCBlcXAgb3JwIGhmKSkKKyAgKHBhc3MtaWYtZXF1YWwgdHRwIChjb21wYXJh dG9yLXR5cGUtdGVzdC1wcmVkaWNhdGUgY29tcCkpCisgIChwYXNzLWlmLWVxdWFsIGVxcCAoY29t cGFyYXRvci1lcXVhbGl0eS1wcmVkaWNhdGUgY29tcCkpCisgIChwYXNzLWlmLWVxdWFsIG9ycCAo Y29tcGFyYXRvci1vcmRlcmluZy1wcmVkaWNhdGUgY29tcCkpCisgIChwYXNzLWlmLWVxdWFsIGhm IChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gY29tcCkpCisgICkgOyBlbmQgY29tcGFyYXRvcnMv YWNjZXNzb3JzCisKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNvbXBhcmF0b3JzL2FjY2Vzc29ycyIK KyAgICAobGV0KiAoKHgxIDApCisgICAgICAgICAgICh4MiAwKQorICAgICAgICAgICAoeDMgMCkK KyAgICAgICAgICAgKHg0IDApCisgICAgICAgICAgICh0dHAgKGxhbWJkYSAoeCkgKHNldCEgeDEg MTExKSAjdCkpCisgICAgICAgICAgIChlcXAgKGxhbWJkYSAoeCB5KSAoc2V0ISB4MiAyMjIpICN0 KSkKKyAgICAgICAgICAgKG9ycCAobGFtYmRhICh4IHkpIChzZXQhIHgzIDMzMykgI3QpKQorICAg ICAgICAgICAoaGYgKGxhbWJkYSAoeCkgKHNldCEgeDQgNDQ0KSAwKSkKKyAgICAgICAgICAgKGNv bXAgKG1ha2UtY29tcGFyYXRvciB0dHAgZXFwIG9ycCBoZikpKQorICAgICAgKHBhc3MtaWYtZXF1 YWwgI3QgKGFuZCAoKGNvbXBhcmF0b3ItdHlwZS10ZXN0LXByZWRpY2F0ZSBjb21wKSB4MSkgICAo PSB4MSAxMTEpKSkKKyAgICAgIChwYXNzLWlmLWVxdWFsICN0IChhbmQgKChjb21wYXJhdG9yLWVx dWFsaXR5LXByZWRpY2F0ZSBjb21wKSB4MSB4MikgKD0geDIgMjIyKSkpCisgICAgICAocGFzcy1p Zi1lcXVhbCAjdCAoYW5kICgoY29tcGFyYXRvci1vcmRlcmluZy1wcmVkaWNhdGUgY29tcCkgeDEg eDMpICg9IHgzIDMzMykpKQorICAgICAgKHBhc3MtaWYtZXF1YWwgI3QgKGFuZCAoemVybz8gKChj b21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gY29tcCkgeDEpKSAoPSB4NCA0NDQpKSkpCisgICAgKSA7 IGVuZCBjb21wYXJhdG9ycy9hY2Nlc3NvcnMKKworICAod2l0aC10ZXN0LXByZWZpeCAiY29tcGFy YXRvcnMvaW52b2tlcnMiCisgICAgKHBhc3MtaWYgKGNvbXBhcmF0b3ItdGVzdC10eXBlIHJlYWwt Y29tcGFyYXRvciAzKSkKKyAgICAocGFzcy1pZiAoY29tcGFyYXRvci10ZXN0LXR5cGUgcmVhbC1j b21wYXJhdG9yIDMuMCkpCisgICAgKHBhc3MtaWYgKG5vdCAoY29tcGFyYXRvci10ZXN0LXR5cGUg cmVhbC1jb21wYXJhdG9yICIzLjAiKSkpCisgICAgKHBhc3MtaWYgKGNvbXBhcmF0b3ItY2hlY2st dHlwZSBib29sZWFuLWNvbXBhcmF0b3IgI3QpKQorICAgIChwYXNzLWlmLWV4Y2VwdGlvbiAiY2hl Y2stdHlwZSIKKyAgICAgICAgJyhtaXNjLWVycm9yIC4gIl5Db21wYXJhdG9yIHR5cGUgY2hlY2sg ZmFpbGVkIikKKyAgICAgIChjb21wYXJhdG9yLWNoZWNrLXR5cGUgYm9vbGVhbi1jb21wYXJhdG9y ICd0KSkKKyAgICApIDsgZW5kIGNvbXBhcmF0b3JzL2ludm9rZXJzCisKKyAgKHdpdGgtdGVzdC1w cmVmaXggImNvbXBhcmF0b3JzL2NvbXBhcmlzb24iCisgICAgKHBhc3MtaWYgKD0/IHJlYWwtY29t cGFyYXRvciAyIDIuMCAyKSkKKyAgICAocGFzcy1pZiAoPD8gcmVhbC1jb21wYXJhdG9yIDIgMy4w IDQpKQorICAgIChwYXNzLWlmICg+PyByZWFsLWNvbXBhcmF0b3IgNC4wIDMuMCAyKSkKKyAgICAo cGFzcy1pZiAoPD0/IHJlYWwtY29tcGFyYXRvciAyLjAgMiAzLjApKQorICAgIChwYXNzLWlmICg+ PT8gcmVhbC1jb21wYXJhdG9yIDMgMy4wIDIpKQorICAgIChwYXNzLWlmIChub3QgKD0/IHJlYWwt Y29tcGFyYXRvciAxIDIgMykpKQorICAgIChwYXNzLWlmIChub3QgKDw/IHJlYWwtY29tcGFyYXRv ciAzIDEgMikpKQorICAgIChwYXNzLWlmIChub3QgKD4/IHJlYWwtY29tcGFyYXRvciAxIDIgMykp KQorICAgIChwYXNzLWlmIChub3QgKDw9PyByZWFsLWNvbXBhcmF0b3IgNCAzIDMpKSkKKyAgICAo cGFzcy1pZiAobm90ICg+PT8gcmVhbC1jb21wYXJhdG9yIDMgNCA0LjApKSkKKworICAgICkgOyBl bmQgY29tcGFyYXRvcnMvY29tcGFyaXNvbgorCisgICh3aXRoLXRlc3QtcHJlZml4ICJjb21wYXJh dG9ycy9zeW50YXgiCisgICAgKHBhc3MtaWYtZXF1YWwgJ2xlc3MgKGNvbXBhcmF0b3ItaWY8PT4g cmVhbC1jb21wYXJhdG9yIDEgMiAnbGVzcyAnZXF1YWwgJ2dyZWF0ZXIpKQorICAgIChwYXNzLWlm LWVxdWFsICdlcXVhbCAoY29tcGFyYXRvci1pZjw9PiByZWFsLWNvbXBhcmF0b3IgMSAxICdsZXNz ICdlcXVhbCAnZ3JlYXRlcikpCisgICAgKHBhc3MtaWYtZXF1YWwgJ2dyZWF0ZXIgKGNvbXBhcmF0 b3ItaWY8PT4gcmVhbC1jb21wYXJhdG9yIDIgMSAnbGVzcyAnZXF1YWwgJ2dyZWF0ZXIpKQorICAg IChwYXNzLWlmLWVxdWFsICdsZXNzIChjb21wYXJhdG9yLWlmPD0+ICIxIiAiMiIgJ2xlc3MgJ2Vx dWFsICdncmVhdGVyKSkKKyAgICAocGFzcy1pZi1lcXVhbCAnZXF1YWwgKGNvbXBhcmF0b3ItaWY8 PT4gIjEiICIxIiAnbGVzcyAnZXF1YWwgJ2dyZWF0ZXIpKQorICAgIChwYXNzLWlmLWVxdWFsICdn cmVhdGVyIChjb21wYXJhdG9yLWlmPD0+ICIyIiAiMSIgJ2xlc3MgJ2VxdWFsICdncmVhdGVyKSkK KworICAgICkgOyBlbmQgY29tcGFyYXRvcnMvc3ludGF4CisKKyAgKHdpdGgtdGVzdC1wcmVmaXgg ImNvbXBhcmF0b3JzL2JvdW5kLXNhbHQiCisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/ICho YXNoLWJvdW5kKSkpCisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChoYXNoLXNhbHQpKSkK KyAgICAocGFzcy1pZiAoPCAoaGFzaC1zYWx0KSAoaGFzaC1ib3VuZCkpKQorICAgICM7ICAocGFz cy1pZi1lcXVhbCAoaGFzaC1zYWx0KSAoZmFrZS1zYWx0LWhhc2ggI3QpKSAgOyBubyBzdWNoIHRo aW5nIGFzIGZha2Utc2FsdC1oYXNoCisgICAgKSA7IGVuZCBjb21wYXJhdG9ycy9ib3VuZC1zYWx0 CisgICkKLS0gCjIuMTkuMQoK --00000000000027132d057f5ecbea--
bug-guile@HIDDEN
:bug#33827
; Package guile
.
Full text available.Received: (at 33827) by debbugs.gnu.org; 9 Jan 2019 00:21:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 08 19:21:24 2019 Received: from localhost ([127.0.0.1]:50659 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1gh1ca-0001BC-BX for submit <at> debbugs.gnu.org; Tue, 08 Jan 2019 19:21:24 -0500 Received: from mail-io1-f46.google.com ([209.85.166.46]:36210) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jessymilare@HIDDEN>) id 1gh1cY-0001Az-Cy for 33827 <at> debbugs.gnu.org; Tue, 08 Jan 2019 19:21:22 -0500 Received: by mail-io1-f46.google.com with SMTP id m19so4670880ioh.3 for <33827 <at> debbugs.gnu.org>; Tue, 08 Jan 2019 16:21:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=hPKnBztstyAL426C2WIwSz5LV+xsm3dsuY3t6JHnAso=; b=NL//hpDbAMiwhkko4+/sp7eVvq+ZuLD1HS3eVVjUQk4mXi+r9VBcpiACXOiE1vtWuR +kiHfV4hbR9oezSucw0xAIFtPNHG5Fhay+htKSCe534wJop6Ix1fUcrRkvYP5eQX3/me njAww2Nej9vjwmJdfVU1ct7q0vMUHdOgZKubnCu05MwuJYB+PXtKWzV2ZIM7G5b8p3Xn nQV8wNX/5+hh1u7aRTNNdIuJV0RMohpCJKArQdQNcHjUs7wqUA2pRFHB9Bh8bPMiEN0B noS/wjmAo3HgOvSxAJ4Lvpw0XnW/fVBJSTORX50y5xO76VI+wRQmifzyUF2KxVKETsJf Dp6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=hPKnBztstyAL426C2WIwSz5LV+xsm3dsuY3t6JHnAso=; b=WuSM/7LfpqbS2/xVH23XBDqdpnSZmnANCDjD7TtPtR3c9iWP2De82trH7P9T8coczd wCHpzBrxdEnl9zMJgBoXLNFX7jspZeglUw6N/bB1KUgnacpwXS4Eelprn+se9KpCouih hsIwSwrmLmXBhESxn+72gGZ5tdSe8IG//RyyIEyttmAxdV585Dd0Cl805wLxIqN580Tj vaNQRXa2HPkHikzymjS1ATQAHmE+WZ9oowylPQcT4W6DGWyzibfukg0exmYomGGurckd QivgLSYMU1vkREdfokp2xaeEZnwv6gSwKYveLUllrlyde4yQ1BgUJz4Lt66m0UQjpIuN +W2Q== X-Gm-Message-State: AJcUukfYEzRdp43BotxlwFlXMw1NKeNR3dmPpjNLQYxyAv7fgcNAJsak EfXevIEWAh3aOGYu4DMRoq9PdLhl9oOkNFe2p60yCgkX X-Google-Smtp-Source: ALg8bN7ihvv9V9CukS3mjcnYDlYQNnloZO8y7cVJUx5tVqNpRf2Owzl7Psni3r7GUdNZyUAZJFttf0UVQQ96GsGbqr0= X-Received: by 2002:a6b:da10:: with SMTP id x16mr2494069iob.101.1546993276398; Tue, 08 Jan 2019 16:21:16 -0800 (PST) MIME-Version: 1.0 References: <CAGBcF1Z5WmXij2vX+EhxQHvWkmmOkeL-hV+Y-SUSpByH0tZQHw@HIDDEN> In-Reply-To: <CAGBcF1Z5WmXij2vX+EhxQHvWkmmOkeL-hV+Y-SUSpByH0tZQHw@HIDDEN> From: =?UTF-8?B?SsOpc3NpY2EgTWlsYXLDqQ==?= <jessymilare@HIDDEN> Date: Tue, 8 Jan 2019 22:21:04 -0200 Message-ID: <CAGBcF1aZrZhBjEk=tvsJHLJnMDc1ERt-ZaCiwOzqMksnfZsP_Q@HIDDEN> Subject: Patches To: 33827 <at> debbugs.gnu.org Content-Type: multipart/mixed; boundary="000000000000b6a39d057efb700b" X-Debbugs-Envelope-To: 33827 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> --000000000000b6a39d057efb700b Content-Type: multipart/alternative; boundary="000000000000b6a39a057efb7009" --000000000000b6a39a057efb7009 Content-Type: text/plain; charset="UTF-8" Patch 0001 fixes SRFI-69 bugs as specified. Patches 0002 to 0005 implement the module (ice-9 generic-hash-tables) and then reimplement SRFI-69 and (rnrs hashtables) and add an implementation of SRFI 126, all of them using generic-hash-tables (and therefore compatible to each other). I've called `make check' after each commit and all tests PASS: or XFAIL:, except the four tests in linker.test, as reported in Bug 33991[1]. [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=33991 --000000000000b6a39a057efb7009 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">Patch 0001 fixes SRFI-69= bugs as specified. Patches 0002 to 0005 implement the module (ice-9 generi= c-hash-tables) and then reimplement SRFI-69 and (rnrs hashtables) and add a= n implementation of SRFI 126, all of them using generic-hash-tables (and th= erefore compatible to each other).<div><br></div><div>I've called `make= check' after each commit and all tests PASS: or XFAIL:, except the fou= r tests in linker.test, as reported in Bug=C2=A033991[1].</div><div><br></d= iv><div>[1]=C2=A0<a href=3D"https://debbugs.gnu.org/cgi/bugreport.cgi?bug= =3D33991">https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D33991</a></div></= div></div></div> --000000000000b6a39a057efb7009-- --000000000000b6a39d057efb700b Content-Type: text/x-patch; charset="US-ASCII"; name="0003-Reimplemented-SRFI-69-using-GENERIC-HASH-TABLES.patch" Content-Disposition: attachment; filename="0003-Reimplemented-SRFI-69-using-GENERIC-HASH-TABLES.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqofmio12> X-Attachment-Id: f_jqofmio12 RnJvbSBhODM5NDZmMGNkOGFiYjY0YjliODkwNjY4OTM4Njc1OTU1ODE1OTE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDggSmFuIDIwMTkgMjI6MDI6MjUg LTAyMDAKU3ViamVjdDogW1BBVENIIDMvNV0gUmVpbXBsZW1lbnRlZCBTUkZJLTY5IHVzaW5nIEdF TkVSSUMtSEFTSC1UQUJMRVMKCi0tLQogbW9kdWxlL3JucnMvaGFzaHRhYmxlcy5zY20gICAgfCAg MjkgKystLQogbW9kdWxlL3NyZmkvc3JmaS02OS5zY20gICAgICAgfCAzMTggKysrKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdGVzdC1zdWl0ZS90ZXN0cy9zcmZpLTY5LnRlc3QgfCAg IDMgKy0KIDMgZmlsZXMgY2hhbmdlZCwgOTMgaW5zZXJ0aW9ucygrKSwgMjU3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL21vZHVsZS9ybnJzL2hhc2h0YWJsZXMuc2NtIGIvbW9kdWxlL3JucnMv aGFzaHRhYmxlcy5zY20KaW5kZXggMjJiYWU3ZjA5Li40ODY0NTJhMmEgMTAwNjQ0Ci0tLSBhL21v ZHVsZS9ybnJzL2hhc2h0YWJsZXMuc2NtCisrKyBiL21vZHVsZS9ybnJzL2hhc2h0YWJsZXMuc2Nt CkBAIC02Nyw2ICs2Nyw3IEBACiAJCQkJICAgaGFzaC10YWJsZS1mb2xkKQogCQkgIChoYXNoIGVx dWFsLWhhc2gpCiAJCSAgKGhhc2gtYnktaWRlbnRpdHkgc3ltYm9sLWhhc2gpKQorICAgICAgICAg IChvbmx5IChpY2UtOSBnZW5lcmljLWhhc2gtdGFibGVzKSBoYXNoLWJ5LXZhbHVlKQogCSAgKHJu cnMgYmFzZSAoNikpCiAJICAocm5ycyByZWNvcmRzIHByb2NlZHVyYWwgKDYpKSkKICAgCkBAIC05 MCw5ICs5MSw5IEBACiAKICAgKGRlZmluZSBoYXNodGFibGUtbXV0YWJsZT8gcjZyczpoYXNodGFi bGUtbXV0YWJsZT8pCiAKLSAgKGRlZmluZSBoYXNoLWJ5LXZhbHVlICgoQEAgKHNyZmkgc3JmaS02 OSkgY2FsbGVyLXdpdGgtZGVmYXVsdC1zaXplKSBoYXNodikpCi0gIChkZWZpbmUgKHdyYXAtaGFz aC1mdW5jdGlvbiBwcm9jKSAKLSAgICAobGFtYmRhIChrZXkgY2FwYWNpdHkpIChtb2R1bG8gKHBy b2Mga2V5KSBjYXBhY2l0eSkpKQorICA7OyAoZGVmaW5lIGhhc2gtYnktdmFsdWUgKChAQCAoc3Jm aSBzcmZpLTY5KSBjYWxsZXItd2l0aC1kZWZhdWx0LXNpemUpIGhhc2h2KSkKKyAgOzsgKGRlZmlu ZSAod3JhcC1oYXNoLWZ1bmN0aW9uIHByb2MpCisgIDs7ICAgKGxhbWJkYSAoa2V5IGNhcGFjaXR5 KSAobW9kdWxvIChwcm9jIGtleSkgY2FwYWNpdHkpKSkKIAogICAoZGVmaW5lKiAobWFrZS1lcS1o YXNodGFibGUgIzpvcHRpb25hbCBrKQogICAgIChtYWtlLXI2cnMtaGFzaHRhYmxlIApAQCAtMTA5 LDE0ICsxMTAsMTMgQEAKICAgICAgJ2VxdikpCiAKICAgKGRlZmluZSogKG1ha2UtaGFzaHRhYmxl IGhhc2gtZnVuY3Rpb24gZXF1aXYgIzpvcHRpb25hbCBrKQotICAgIChsZXQgKCh3cmFwcGVkLWhh c2gtZnVuY3Rpb24gKHdyYXAtaGFzaC1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uKSkpCi0gICAgICAo bWFrZS1yNnJzLWhhc2h0YWJsZQotICAgICAgIChpZiBrIAotCSAgIChtYWtlLWhhc2gtdGFibGUg ZXF1aXYgd3JhcHBlZC1oYXNoLWZ1bmN0aW9uIGspCi0JICAgKG1ha2UtaGFzaC10YWJsZSBlcXVp diB3cmFwcGVkLWhhc2gtZnVuY3Rpb24pKQotICAgICAgIGhhc2gtZnVuY3Rpb24KLSAgICAgICAj dAotICAgICAgICdjdXN0b20pKSkKKyAgICAobWFrZS1yNnJzLWhhc2h0YWJsZQorICAgICAoaWYg aworICAgICAgICAgKG1ha2UtaGFzaC10YWJsZSBlcXVpdiBoYXNoLWZ1bmN0aW9uIGspCisgICAg ICAgICAobWFrZS1oYXNoLXRhYmxlIGVxdWl2IGhhc2gtZnVuY3Rpb24pKQorICAgICBoYXNoLWZ1 bmN0aW9uCisgICAgICN0CisgICAgICdjdXN0b20pKQogIAogICAoZGVmaW5lIChoYXNodGFibGUt c2l6ZSBoYXNodGFibGUpCiAgICAgKGhhc2gtdGFibGUtc2l6ZSAocjZyczpoYXNodGFibGUtd3Jh cHBlZC10YWJsZSBoYXNodGFibGUpKSkKQEAgLTE1NiwxMyArMTU2LDEyIEBACiAgICAgKGlmIChy NnJzOmhhc2h0YWJsZS1tdXRhYmxlPyBoYXNodGFibGUpCiAJKGxldCogKChodCAocjZyczpoYXNo dGFibGUtd3JhcHBlZC10YWJsZSBoYXNodGFibGUpKQogCSAgICAgICAoZXF1aXYgKGhhc2gtdGFi bGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQpKQotCSAgICAgICAoaGFzaC1mdW5jdGlvbiAocjZy czpoYXNodGFibGUtb3JpZy1oYXNoLWZ1bmN0aW9uIGhhc2h0YWJsZSkpCi0JICAgICAgICh3cmFw cGVkLWhhc2gtZnVuY3Rpb24gKHdyYXAtaGFzaC1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uKSkpCisJ ICAgICAgIChoYXNoLWZ1bmN0aW9uIChyNnJzOmhhc2h0YWJsZS1vcmlnLWhhc2gtZnVuY3Rpb24g aGFzaHRhYmxlKSkpCiAJICAocjZyczpoYXNodGFibGUtc2V0LXdyYXBwZWQtdGFibGUhCiAJICAg aGFzaHRhYmxlCiAJICAgKGlmIGsgCi0JICAgICAgIChtYWtlLWhhc2gtdGFibGUgZXF1aXYgd3Jh cHBlZC1oYXNoLWZ1bmN0aW9uIGspCi0JICAgICAgIChtYWtlLWhhc2gtdGFibGUgZXF1aXYgd3Jh cHBlZC1oYXNoLWZ1bmN0aW9uKSkpKSkKKwkgICAgICAgKG1ha2UtaGFzaC10YWJsZSBlcXVpdiBo YXNoLWZ1bmN0aW9uIGspCisJICAgICAgIChtYWtlLWhhc2gtdGFibGUgZXF1aXYgaGFzaC1mdW5j dGlvbikpKSkpCiAgICAgKnVuc3BlY2lmaWVkKikKIAogICAoZGVmaW5lIChoYXNodGFibGUta2V5 cyBoYXNodGFibGUpCmRpZmYgLS1naXQgYS9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbSBiL21vZHVs ZS9zcmZpL3NyZmktNjkuc2NtCmluZGV4IDJiN2ZiOWE3Zi4uYWU1YmM3ZjA2IDEwMDY0NAotLS0g YS9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbQorKysgYi9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbQpA QCAtMTYsNyArMTYsOCBAQAogOzsgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogOzsgRm91bmRhdGlvbiwgSW5jLiwgNTEg RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQog DAotOzs7OyBDb21tZW50YXJ5OgorCis7Ozs7IE9yaWdpbmFsIChzdGFsZSkgU1JGSS02OSBjb21t ZW50YXJ5OgogCiA7OyBNeSBgaGFzaCcgaXMgY29tcGF0aWJsZSB3aXRoIGNvcmUgYGhhc2gnLCBz byBJIHJlcGxhY2UgaXQuCiA7OyBIb3dldmVyLCBteSBgaGFzaC10YWJsZT8nIGFuZCBgbWFrZS1o YXNoLXRhYmxlJyBhcmUgZGlmZmVyZW50LCBzbwpAQCAtNjUsOCArNjYsNyBAQAogCiA7Ozs7IENv bW1lbnRhcnkgYnkgSmVzc2ljYSBNaWxhcmUgMjAxOAogCi07OyBNYWtlIGJ1ZyBmaXhlcyBmb3Ig d2VhayBoYXNoLXRhYmxlcywgc2luY2UgaGFuZGxlcyBkb24ndCB3b3JrIGFueW1vcmUsCi07OyBh bmQgYWxzbyBzb21lIG9wdGltaXphdGlvbnMuCis7OyBOb3cgaW1wbGVtZW50ZWQgdXNpbmcgbW9k dWxlIChpY2UtOSBnZW5lcmljLWhhc2gtdGFibGVzKQogOzsKIDs7IE15IHBlcnNvbmFsIGNvbW1l bnRzIGFyZSBtYXJrZWQgYnkgSi5NLgogCkBAIC03NSwzMDAgKzc1LDEzNiBAQAogOzs7OyBNb2R1 bGUgZGVmaW5pdGlvbiAmIGV4cG9ydHMKIAogKGRlZmluZS1tb2R1bGUgKHNyZmkgc3JmaS02OSkK LSAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkJO2FsaXN0LWNvbnMsc2Vjb25kJmMsYXNzb2MK LSAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktOSkKLSAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmkt MTMpCTtzdHJpbmctaGFzaCxzdHJpbmctaGFzaC1jaQotICAjOnVzZS1tb2R1bGUgKGljZS05IG9w dGFyZ3MpCi0gICM6ZXhwb3J0ICg7OyBUeXBlIGNvbnN0cnVjdG9ycyAmIHByZWRpY2F0ZQotCSAg ICBtYWtlLWhhc2gtdGFibGUgaGFzaC10YWJsZT8gYWxpc3QtPmhhc2gtdGFibGUKKyAgIzp1c2Ut bW9kdWxlIChzcmZpIHNyZmktMSkKKyAgIzp1c2UtbW9kdWxlICgoaWNlLTkgZ2VuZXJpYy1oYXNo LXRhYmxlcykgIzpwcmVmaXggZ2VuOikKKyAgIzpyZXBsYWNlIChtYWtlLWhhc2gtdGFibGUgaGFz aC10YWJsZT8gaGFzaCkKKyAgIzpleHBvcnQgKDs7IFR5cGUgY29uc3RydWN0b3JzCisgICAgICAg ICAgICBtYWtlLWhhc2gtdGFibGUKKyAgICAgICAgICAgIGhhc2gtdGFibGU/IGFsaXN0LT5oYXNo LXRhYmxlCiAgICAgICAgICAgICA7OyBSZWZsZWN0aXZlIHF1ZXJpZXMKICAgICAgICAgICAgIGhh c2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uCiAg ICAgICAgICAgICA7OyBEZWFsaW5nIHdpdGggc2luZ2xlIGVsZW1lbnRzCiAgICAgICAgICAgICBo YXNoLXRhYmxlLXJlZiBoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGhhc2gtdGFibGUtc2V0IQotICAg ICAgICAgICAgaGFzaC10YWJsZS1kZWxldGUhIGhhc2gtdGFibGUtZXhpc3RzPyBoYXNoLXRhYmxl LXVwZGF0ZSEKKyAgICAgICAgICAgIGhhc2gtdGFibGUtZGVsZXRlISBoYXNoLXRhYmxlLXVwZGF0 ZSEKICAgICAgICAgICAgIGhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0CisgICAgICAgICAgICBo YXNoLXRhYmxlLWV4aXN0cz8KICAgICAgICAgICAgIDs7IERlYWxpbmcgd2l0aCB0aGUgd2hvbGUg Y29udGVudHMKICAgICAgICAgICAgIGhhc2gtdGFibGUtc2l6ZSBoYXNoLXRhYmxlLWtleXMgaGFz aC10YWJsZS12YWx1ZXMKLSAgICAgICAgICAgIGhhc2gtdGFibGUtd2FsayBoYXNoLXRhYmxlLWZv bGQgaGFzaC10YWJsZS0+YWxpc3QKLSAgICAgICAgICAgIGhhc2gtdGFibGUtY29weSBoYXNoLXRh YmxlLW1lcmdlIQorICAgICAgICAgICAgaGFzaC10YWJsZS0+YWxpc3QgaGFzaC10YWJsZS1mb2xk CisgICAgICAgICAgICBoYXNoLXRhYmxlLXdhbGsgaGFzaC10YWJsZS1tZXJnZSEKKyAgICAgICAg ICAgIGhhc2gtdGFibGUtY29weQogICAgICAgICAgICAgOzsgSGFzaGluZwotICAgICAgICAgICAg c3RyaW5nLWNpLWhhc2ggaGFzaC1ieS1pZGVudGl0eSkKLSAgIzpyZS1leHBvcnQgKHN0cmluZy1o YXNoKQotICAjOnJlcGxhY2UgKGhhc2ggbWFrZS1oYXNoLXRhYmxlIGhhc2gtdGFibGU/KSkKKyAg ICAgICAgICAgIHN0cmluZy1jaS1oYXNoIGhhc2gtYnktaWRlbnRpdHkgaGFzaCkKKyAgIzpyZS1l eHBvcnQgKHN0cmluZy1oYXNoKSkKIAogKGNvbmQtZXhwYW5kLXByb3ZpZGUgKGN1cnJlbnQtbW9k dWxlKSAnKHNyZmktNjkpKQotDAotOzs7OyBJbnRlcm5hbCBoZWxwZXIgbWFjcm9zCi0KLTs7IERl ZmluZSB0aGVzZSBmaXJzdCwgc28gdGhlIGNvbXBpbGVyIHdpbGwgcGljayB0aGVtIHVwLgotCi07 OyBJIGFtIGEgbWFjcm8gb25seSBmb3IgZWZmaWNpZW5jeSwgdG8gYXZvaWQgdmFyYXJncy9hcHBs eS4KLShkZWZpbmUtbWFjcm8gKGhhc2h4LWludm9rZSBoYXNoeC1wcm9jIGh0LXZhciAuIGFyZ3Mp Ci0gICJJbnZva2UgSEFTSFgtUFJPQywgYSBgaGFzaHgtKicgcHJvY2VkdXJlIHRha2luZyBhIGhh c2gtZnVuY3Rpb24sCi1hc3NvYy1mdW5jdGlvbiwgYW5kIHRoZSBoYXNoLXRhYmxlIGFzIGZpcnN0 IGFyZ3MuIgotICBgKCxoYXNoeC1wcm9jIChoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24gLGh0LXZh cikKLQkJKGh0LWFzc29jaWF0b3IgLGh0LXZhcikKLQkJKGh0LXJlYWwtdGFibGUgLGh0LXZhcikK LQkJLiAsYXJncykpCiAKLShkZWZpbmUtbWFjcm8gKHdpdGgtaGFzaHgtdmFsdWVzIGJpbmRpbmdz IGh0LXZhciAuIGJvZHktZm9ybXMpCi0gICJCaW5kIEJJTkRJTkdTIHRvIHRoZSBoYXNoLWZ1bmN0 aW9uLCBhc3NvY2lhdG9yLCBhbmQgcmVhbC10YWJsZSBvZgotSFQtVkFSLCB3aGlsZSBldmFsdWF0 aW5nIEJPRFktRk9STVMuIgotICBgKGxldCAoKCwoZmlyc3QgYmluZGluZ3MpIChoYXNoLXRhYmxl LWhhc2gtZnVuY3Rpb24gLGh0LXZhcikpCi0JICgsKHNlY29uZCBiaW5kaW5ncykgKGh0LWFzc29j aWF0b3IgLGh0LXZhcikpCi0JICgsKHRoaXJkIGJpbmRpbmdzKSAoaHQtcmVhbC10YWJsZSAsaHQt dmFyKSkpCi0gICAgIC4gLGJvZHktZm9ybXMpKQotCi0MCiA7Ozs7IEhhc2hpbmcKLQotOzs7IFRo ZSBsYXJnZXN0IGZpeG51bSBpcyBpbiBgbW9zdC1wb3NpdGl2ZS1maXhudW0nIGluIG1vZHVsZSAo Z3VpbGUpLAotOzs7IHRob3VnaCBub3QgZG9jdW1lbnRlZCBhbnl3aGVyZSBidXQgbGliZ3VpbGUv bnVtYmVycy5jLgotCi0oZGVmaW5lIChjYWxsZXItd2l0aC1kZWZhdWx0LXNpemUgaGFzaC1mbikK LSAgIkFuc3dlciBhIGZ1bmN0aW9uIHRoYXQgbWFrZXMgYG1vc3QtcG9zaXRpdmUtZml4bnVtJyB0 aGUgZGVmYXVsdAotc2Vjb25kIGFyZ3VtZW50IHRvIEhBU0gtRk4sIGEgMi1hcmcgcHJvY2VkdXJl LiIKLSAgKGxhbWJkYSogKG9iaiAjOm9wdGlvbmFsIChzaXplIG1vc3QtcG9zaXRpdmUtZml4bnVt KSkKLSAgICAoaGFzaC1mbiBvYmogc2l6ZSkpKQotCi0oZGVmaW5lIGhhc2ggKGNhbGxlci13aXRo LWRlZmF1bHQtc2l6ZSAoQCAoZ3VpbGUpIGhhc2gpKSkKLQogKGRlZmluZSBzdHJpbmctY2ktaGFz aCBzdHJpbmctaGFzaC1jaSkKKyhkZWZpbmUgaGFzaCBnZW46aGFzaCkKKyhkZWZpbmUgaGFzaC1i eS1pZGVudGl0eSBnZW46aGFzaC1ieS1pZGVudGl0eSkKIAotKGRlZmluZSBoYXNoLWJ5LWlkZW50 aXR5IChjYWxsZXItd2l0aC1kZWZhdWx0LXNpemUgaGFzaHEpKQogDAogOzs7OyBSZWZsZWN0aXZl IHF1ZXJpZXMsIGNvbnN0cnVjdGlvbiwgcHJlZGljYXRlCiAKLShkZWZpbmUtcmVjb3JkLXR5cGUg c3JmaS02OTpoYXNoLXRhYmxlCi0gIChtYWtlLXNyZmktNjktaGFzaC10YWJsZSByZWFsLXRhYmxl IGFzc29jaWF0b3Igc2l6ZSB3ZWFrbmVzcwotCQkJICAgZXF1aXZhbGVuY2UtZnVuY3Rpb24gaGFz aC1mdW5jdGlvbikKLSAgaGFzaC10YWJsZT8KLSAgKHJlYWwtdGFibGUgaHQtcmVhbC10YWJsZSkK LSAgKGFzc29jaWF0b3IgaHQtYXNzb2NpYXRvcikKLSAgOzsgcmVxdWlyZWQgZm9yIE8oMSkgYnkg U1JGSS02OS4gIEl0IHJlYWxseSBtYWtlcyBhIG1lc3Mgb2YgdGhpbmdzLAotICA7OyBhbmQgSSdk IGxpa2UgdG8gY29tcHV0ZSBpdCBpbiBPKG4pIGFuZCBtZW1vaXplIGl0IGJlY2F1c2UgaXQKLSAg OzsgZG9lc24ndCBzZWVtIHRlcnJpYmx5IHVzZWZ1bCwgYnV0IFNSRkktNjkgaXMgZmluYWwuCi0g IChzaXplIGh0LXNpemUgaHQtc2l6ZSEpCi0gIDs7IHJlcXVpcmVkIGZvciBgaGFzaC10YWJsZS1j b3B5JwotICAod2Vha25lc3MgaHQtd2Vha25lc3MpCi0gIDs7IHVzZWQgb25seSB0byBpbXBsZW1l bnQgaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbjsgSSBkb24ndAotICA7OyB1c2UgaXQg aW50ZXJuYWxseSBvdGhlciB0aGFuIGZvciBgaHQtYXNzb2NpYXRvcicuCi0gIChlcXVpdmFsZW5j ZS1mdW5jdGlvbiBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uKQotICAoaGFzaC1mdW5j dGlvbiBoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24pKQorKGRlZmluZSBoYXNoLXRhYmxlPyBnZW46 aGFzaC10YWJsZT8pCiAKIChkZWZpbmUgKGd1ZXNzLWhhc2gtZnVuY3Rpb24gZXF1YWwtcHJvYykK ICAgIkd1ZXNzIGEgaGFzaCBmdW5jdGlvbiBmb3IgRVFVQUwtUFJPQywgZmFsbGluZyBiYWNrIG9u IGBoYXNoJywgYXMKIHNwZWNpZmllZCBpbiBTUkZJLTY5IGZvciBgbWFrZS1oYXNoLXRhYmxlJy4i Ci0gIChjb25kICgoZXE/IGVxdWFsPyBlcXVhbC1wcm9jKSAoQCAoZ3VpbGUpIGhhc2gpKSA7c2hv cnRjdXQgbW9zdCBjb21tb24gY2FzZQotCSgoZXE/IGVxPyBlcXVhbC1wcm9jKSBoYXNocSkKLQko KGVxPyBlcXY/IGVxdWFsLXByb2MpIGhhc2h2KQotCSgoZXE/IHN0cmluZz0/IGVxdWFsLXByb2Mp IHN0cmluZy1oYXNoKQotCSgoZXE/IHN0cmluZy1jaT0/IGVxdWFsLXByb2MpIHN0cmluZy1jaS1o YXNoKQotCShlbHNlIChAIChndWlsZSkgaGFzaCkpKSkKLQotKGRlZmluZSAod2l0aG91dC1rZXl3 b3JkLWFyZ3MgcmVzdC1saXN0KQotICAiQW5zd2VyIFJFU1QtTElTVCB3aXRoIGFsbCBrZXl3b3Jk cyByZW1vdmVkIGFsb25nIHdpdGggaXRlbXMgdGhhdAotZm9sbG93IHRoZW0uIgotICAobGV0IGxw ICgoYWNjICcoKSkgKHJlc3QtbGlzdCByZXN0LWxpc3QpKQotICAgIChjb25kICgobnVsbD8gcmVz dC1saXN0KSAocmV2ZXJzZSEgYWNjKSkKLQkgICgoa2V5d29yZD8gKGZpcnN0IHJlc3QtbGlzdCkp Ci0JICAgKGxwIGFjYyAoY2RkciByZXN0LWxpc3QpKSkKLQkgIChlbHNlIChscCAoY29ucyAoZmly c3QgcmVzdC1saXN0KSBhY2MpIChjZHIgcmVzdC1saXN0KSkpKSkpCi0KLShkZWZpbmUgKGd1aWxl LWh0LWN0b3Igd2Vha25lc3MpCi0gICJBbnN3ZXIgdGhlIEd1aWxlIEhUIGNvbnN0cnVjdG9yIGZv ciB0aGUgZ2l2ZW4gV0VBS05FU1MuIgotICAoY2FzZSB3ZWFrbmVzcwotICAgICgoI2YpIChAIChn dWlsZSkgbWFrZS1oYXNoLXRhYmxlKSkKLSAgICAoKGtleSkgbWFrZS13ZWFrLWtleS1oYXNoLXRh YmxlKQotICAgICgodmFsdWUpIG1ha2Utd2Vhay12YWx1ZS1oYXNoLXRhYmxlKQotICAgICgoa2V5 LW9yLXZhbHVlKSBtYWtlLWRvdWJseS13ZWFrLWhhc2gtdGFibGUpCi0gICAgKGVsc2UgKGVycm9y ICJJbnZhbGlkIHdlYWsgaGFzaCB0YWJsZSB0eXBlIiB3ZWFrbmVzcykpKSkKLQotKGRlZmluZSAo ZXF1aXZhbGVuY2UtcHJvYy0+YXNzb2NpYXRvciBlcXVhbC1wcm9jKQotICAiQW5zd2VyIGFuIGBh c3NvYyctbGlrZSBwcm9jZWR1cmUgdGhhdCBjb21wYXJlcyB0aGUgYXJndW1lbnQga2V5IHRvCi1h bGlzdCBrZXlzIHdpdGggRVFVQUwtUFJPQy4iCi0gIChjb25kICgob3IgKGVxPyBlcXVhbD8gZXF1 YWwtcHJvYykKLQkgICAgIChlcT8gc3RyaW5nPT8gZXF1YWwtcHJvYykpIChAIChndWlsZSkgYXNz b2MpKQotCSgoZXE/IGVxPyBlcXVhbC1wcm9jKSBhc3NxKQotCSgoZXE/IGVxdj8gZXF1YWwtcHJv YykgYXNzdikKLQkoZWxzZSAobGFtYmRhIChpdGVtIGFsaXN0KQotCQkoYXNzb2MgaXRlbSBhbGlz dCBlcXVhbC1wcm9jKSkpKSkKLQotKGRlZmluZSogKG1ha2UtaGFzaC10YWJsZQotCSAgIzpvcHRp b25hbCAoZXF1YWwtcHJvYyBlcXVhbD8pCi0JICAoaGFzaC1wcm9jIChndWVzcy1oYXNoLWZ1bmN0 aW9uIGVxdWFsLXByb2MpKQotCSAgIzprZXkgKHdlYWsgI2YpICM6cmVzdCBndWlsZS1vcHRzKQor ICAoY29uZCAoKGVxPyBlcXVhbD8gZXF1YWwtcHJvYykgZ2VuOmhhc2gpIDtzaG9ydGN1dCBtb3N0 IGNvbW1vbiBjYXNlCisJKChlcT8gZXE/IGVxdWFsLXByb2MpIGdlbjpoYXNoLWJ5LWlkZW50aXR5 KQorCSgoZXE/IGVxdj8gZXF1YWwtcHJvYykgZ2VuOmhhc2gtYnktdmFsdWUpCisJKChlcT8gc3Ry aW5nPT8gZXF1YWwtcHJvYykgZ2VuOnN0cmluZy1oYXNoKQorCSgoZXE/IHN0cmluZy1jaT0/IGVx dWFsLXByb2MpIGdlbjpzdHJpbmctY2ktaGFzaCkKKwkoZWxzZSBnZW46aGFzaCkpKQorCisoZGVm aW5lIChub3JtYWxpemUtd2Vha25lc3Mgd2VhaykKKyAgIk5vcm1hbGl6ZXMgU1JGSS02OSBzdGFu ZGFyZCAjOndlYWsgdG8gU1JGSS0xMjYgd2Vha25lc3MgYXJndW1lbnQuIgorICAoY2FzZSB3ZWFr CisgICAgKCgjZikgI2YpCisgICAgKChrZXkpICd3ZWFrLWtleSkKKyAgICAoKHZhbHVlKSAnd2Vh ay12YWx1ZSkKKyAgICAoKGtleS1vci12YWx1ZSkgJ3dlYWsta2V5LWFuZC12YWx1ZSkKKyAgICAo ZWxzZSAoZXJyb3IgIkludmFsaWQgd2VhayBoYXNoIHRhYmxlIHR5cGUiIHdlYWspKSkpCisKKyhk ZWZpbmUqIChtYWtlLWhhc2gtdGFibGUgIzpvcHRpb25hbCAoZXF1YWwtcHJvYyBlcXVhbD8pCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoLXByb2MgKGd1ZXNzLWhhc2gtZnVuY3Rpb24g ZXF1YWwtcHJvYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICM6a2V5ICh3ZWFrICNmKSAj OnJlc3QgYXJncykKICAgIkFuc3dlciBhIG5ldyBoYXNoIHRhYmxlIHVzaW5nIEVRVUFMLVBST0Mg YXMgdGhlIGNvbXBhcmlzb24KIGZ1bmN0aW9uLCBhbmQgSEFTSC1QUk9DIGFzIHRoZSBoYXNoIGZ1 bmN0aW9uLiAgU2VlIHRoZSByZWZlcmVuY2UKIG1hbnVhbCBmb3Igc3BlY2lmaWNzLCBvZiB3aGlj aCB0aGVyZSBhcmUgbWFueS4iCi0gIChtYWtlLXNyZmktNjktaGFzaC10YWJsZQotICAgKGFwcGx5 IChndWlsZS1odC1jdG9yIHdlYWspICh3aXRob3V0LWtleXdvcmQtYXJncyBndWlsZS1vcHRzKSkK LSAgIChlcXVpdmFsZW5jZS1wcm9jLT5hc3NvY2lhdG9yIGVxdWFsLXByb2MpCi0gICAwIHdlYWsg ZXF1YWwtcHJvYyBoYXNoLXByb2MpKQorICAobGV0ICgoY2FwYWNpdHkgKGZpbmQgaW50ZWdlcj8g YXJncykpKQorICAgIChnZW46bWFrZS1oYXNoLXRhYmxlIGVxdWFsLXByb2MgaGFzaC1wcm9jCisg ICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrbmVzcyAobm9ybWFsaXplLXdlYWtuZXNzIHdl YWspCisgICAgICAgICAgICAgICAgICAgICAgICAgIzpjYXBhY2l0eSAob3IgY2FwYWNpdHkgMSkp KSkKKworKGRlZmluZSBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGdlbjpoYXNoLXRh YmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uKQorKGRlZmluZSBoYXNoLXRhYmxlLWhhc2gtZnVuY3Rp b24gZ2VuOmhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbikKKyhkZWZpbmUqIChhbGlzdC0+aGFzaC10 YWJsZSBhbGlzdCAjOm9wdGlvbmFsIChlcXVhbC1wcm9jIGVxdWFsPykKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoaGFzaC1wcm9jIChndWVzcy1oYXNoLWZ1bmN0aW9uIGVxdWFsLXByb2Mp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6a2V5ICh3ZWFrICNmKSAjOnJlc3QgYXJn cykKKyAgKGxldCAoKGNhcGFjaXR5IChmaW5kIGludGVnZXI/IGFyZ3MpKSkKKyAgICAoZ2VuOmFs aXN0LT5oYXNoLXRhYmxlIGFsaXN0IGVxdWFsLXByb2MgaGFzaC1wcm9jCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAjOndlYWtuZXNzIChub3JtYWxpemUtd2Vha25lc3Mgd2VhaykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICM6Y2FwYWNpdHkgKG9yIGNhcGFjaXR5IDEpKSkpCiAKLShk ZWZpbmUgKGFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0IC4gbWh0LWFyZ3MpCi0gICJDb252ZXJ0IEFM SVNUIHRvIGEgaGFzaCB0YWJsZSBjcmVhdGVkIHdpdGggTUhULUFSR1MuIgotICAobGV0KiAoKHJl c3VsdCAoYXBwbHkgbWFrZS1oYXNoLXRhYmxlIG1odC1hcmdzKSkKLQkgKHNpemUgKGh0LXNpemUg cmVzdWx0KSkpCi0gICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoYXNoLXByb2MgYXNzb2NpYXRvciBy ZWFsLXRhYmxlKSByZXN1bHQKLSAgICAgIChmb3ItZWFjaCAobGFtYmRhIChwYWlyKQotICAgICAg ICAgICAgICAgICAgKGxldCAoKHZhbHVlIChoYXNoeC1yZWYgaGFzaC1wcm9jIGFzc29jaWF0b3IK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWwtdGFibGUgKGNh ciBwYWlyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHQtdW5z cGVjaWZpZWQpKSkKLSAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChlcT8gaHQtdW5zcGVjaWZp ZWQgdmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ISBzaXplICgxKyBzaXpl KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQhIGhhc2gtcHJvYyBhc3Nv Y2lhdG9yIHJlYWwtdGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChjYXIgcGFpcikgKGNkciBwYWlyKSkpKSkpCi0gICAgICAgICAgICAgICAgYWxpc3QpKQotICAg IChodC1zaXplISByZXN1bHQgc2l6ZSkKLSAgICByZXN1bHQpKQogDAotOzs7OyBBY2Nlc3Npbmcg dGFibGUgaXRlbXMKLQotOzsgV2UgdXNlIHRoaXMgdG8gZGVub3RlIG1pc3Npbmcgb3IgdW5zcGVj aWZpZWQgdmFsdWVzIHRvIGF2b2lkCi0KLTs7IHBvc3NpYmxlIGNvbGxpc2lvbiB3aXRoICp1bnNw ZWNpZmllZCouCi0oZGVmaW5lIGh0LXVuc3BlY2lmaWVkIChjb25zICp1bnNwZWNpZmllZCogImh0 LXZhbHVlIikpCis7OyBEZWFsaW5nIHdpdGggc2luZ2xlIGVsZW1lbnRzCiAKLShkZWZpbmUqICho YXNoLXRhYmxlLXJlZiBodCBrZXkgICM6b3B0aW9uYWwgKGRlZmF1bHQtdGh1bmsgaHQtdW5zcGVj aWZpZWQpKQorKGRlZmluZSogKGhhc2gtdGFibGUtcmVmIGh0IGtleSAjOm9wdGlvbmFsIGZhaWx1 cmUpCiAgICJMb29rdXAgS0VZIGluIEhUIGFuZCBhbnN3ZXIgdGhlIHZhbHVlLCBpbnZva2UgREVG QVVMVC1USFVOSyBpZiBLRVkKIGlzbid0IHByZXNlbnQsIG9yIHNpZ25hbCBhbiBlcnJvciBpZiBE RUZBVUxULVRIVU5LIGlzbid0IHByb3ZpZGVkLiIKLSAgKGxldCAoKHJlc3VsdCAoaGFzaHgtaW52 b2tlIGhhc2h4LXJlZiBodCBrZXkgaHQtdW5zcGVjaWZpZWQpKSkKLSAgICAoaWYgKGVxPyBodC11 bnNwZWNpZmllZCByZXN1bHQpCi0JKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgZGVmYXVsdC10aHVu aykKLQkgICAgKGVycm9yICJLZXkgbm90IGluIHRhYmxlIiBrZXkgaHQpCi0JICAgIChkZWZhdWx0 LXRodW5rKSkKLQlyZXN1bHQpKSkKLQotKGRlZmluZSAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBo dCBrZXkgZGVmYXVsdCkKLSAgIkxvb2t1cCBLRVkgaW4gSFQgYW5kIGFuc3dlciB0aGUgdmFsdWUu ICBBbnN3ZXIgREVGQVVMVCBpZiBLRVkgaXNuJ3QKLXByZXNlbnQuIgotICAoaGFzaHgtaW52b2tl IGhhc2h4LXJlZiBodCBrZXkgZGVmYXVsdCkpCi0KLShkZWZpbmUgKGhhc2gtdGFibGUtc2V0ISBo dCBrZXkgbmV3LXZhbHVlKQotICAiU2V0IEtFWSB0byBORVctVkFMVUUgaW4gSFQuIgotICAoaWYg KGh0LXdlYWtuZXNzIGh0KQotICAgICAgOzsgSi5NLiBzZXBhcmF0ZSB0aGUgY2FzZSB3aGVyZSBo dCBpcyB3ZWFrIC0gZG9uJ3QgdXNlIGhhbmRsZQotICAgICAgOzsgSi5NLiBkb24ndCBuZWVkIHRv IHVwZGF0ZSBzaXplIGZvciB3ZWFrIGhhc2gtdGFibGVzCi0gICAgICAoaGFzaHgtaW52b2tlIGhh c2h4LXNldCEgaHQga2V5IG5ldy12YWx1ZSkKLSAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWlu dm9rZSBoYXNoeC1jcmVhdGUtaGFuZGxlISBodCBrZXkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBodC11bnNwZWNpZmllZCkpKQotICAgICAgICAoaWYgKGVxPyBodC11bnNwZWNp ZmllZCAoY2RyIGhhbmRsZSkpCi0gICAgICAgICAgICAoaHQtc2l6ZSEgaHQgKDErIChodC1zaXpl IGh0KSkpKQotICAgICAgICAoc2V0LWNkciEgaGFuZGxlIG5ldy12YWx1ZSkpKQotICAqdW5zcGVj aWZpZWQqKQorICAoaWYgZmFpbHVyZQorICAgICAgKGdlbjpoYXNoLXRhYmxlLXJlZiBodCBrZXkg ZmFpbHVyZSkKKyAgICAgIChnZW46aGFzaC10YWJsZS1yZWYgaHQga2V5KSkpCiAKKyhkZWZpbmUg aGFzaC10YWJsZS1yZWYvZGVmYXVsdCBnZW46aGFzaC10YWJsZS1yZWYvZGVmYXVsdCkKKyhkZWZp bmUgaGFzaC10YWJsZS1leGlzdHM/IGdlbjpoYXNoLXRhYmxlLWNvbnRhaW5zPykKKyhkZWZpbmUg aGFzaC10YWJsZS1zZXQhIGdlbjpoYXNoLXRhYmxlLXNldC1zaW5nbGUhKQogKGRlZmluZSAoaGFz aC10YWJsZS1kZWxldGUhIGh0IGtleSkKLSAgIlJlbW92ZSBLRVkncyBhc3NvY2lhdGlvbiBpbiBI VC4iCi0gICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtaHQpIGh0Ci0gICAgKGlmIChub3Qg KGVxPyBodC11bnNwZWNpZmllZCAoaGFzaHgtcmVmIGggYSByZWFsLWh0IGtleSBodC11bnNwZWNp ZmllZCkpKQotICAgICAgICAoYmVnaW4KLSAgICAgICAgICAoaHQtc2l6ZSEgaHQgKDEtIChodC1z aXplIGh0KSkpCi0gICAgICAgICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJlYWwtaHQga2V5KSkpKQor ICAoZ2VuOmhhc2gtdGFibGUtZGVsZXRlLXNpbmdsZSEgaHQga2V5KQogICAqdW5zcGVjaWZpZWQq KQogCi0oZGVmaW5lIChoYXNoLXRhYmxlLWV4aXN0cz8gaHQga2V5KQotICAiUmV0dXJuIHdoZXRo ZXIgS0VZIGlzIGEga2V5IGluIEhULiIKLSAgKG5vdCAoZXE/IGh0LXVuc3BlY2lmaWVkIChoYXNo eC1pbnZva2UgaGFzaHgtcmVmIGh0IGtleSBodC11bnNwZWNpZmllZCkpKSkKLQotOzs7IGBoYXNo LXRhYmxlLXVwZGF0ZSEnIG5vbi1sb2NhbGx5LgotKGRlZmluZSogKGhhc2gtdGFibGUtdXBkYXRl ISBodCBrZXkgbW9kaWZpZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpvcHRpb25h bCAoZGVmYXVsdC10aHVuayBodC11bnNwZWNpZmllZCkpCisoZGVmaW5lKiAoaGFzaC10YWJsZS11 cGRhdGUhIGh0IGtleSBtb2RpZmllciAjOm9wdGlvbmFsIGRlZmF1bHQtdGh1bmspCiAgICJNb2Rp ZnkgSFQncyB2YWx1ZSBhdCBLRVkgYnkgcGFzc2luZyBpdHMgdmFsdWUgdG8gTU9ESUZJRVIgYW5k CiBzZXR0aW5nIGl0IHRvIHRoZSByZXN1bHQgdGhlcmVvZi4gIEludm9rZSBERUZBVUxULVRIVU5L IGZvciB0aGUgb2xkCiB2YWx1ZSBpZiBLRVkgaXNuJ3QgaW4gSFQsIG9yIHNpZ25hbCBhbiBlcnJv ciBpZiBERUZBVUxULVRIVU5LIGlzIG5vdAogcHJvdmlkZWQuIgotICAod2l0aC1oYXNoeC12YWx1 ZXMgKGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUpIGh0Ci0gICAgKGlmIChodC13ZWFr bmVzcyBodCkKLSAgICAgICAgOzsgSi5NLiBzZXBhcmF0ZSB0aGUgY2FzZSB3aGVyZSBodCBpcyB3 ZWFrIC0gZG9uJ3QgdXNlIGhhbmRsZQotICAgICAgICAobGV0KiAoKG9sZCAoaGFzaHgtcmVmIGhh c2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUga2V5Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaHQtdW5zcGVjaWZpZWQpKSkKLSAgICAgICAgICAoY29uZCAoKGVxPyBodC11bnNw ZWNpZmllZCBvbGQpCi0gICAgICAgICAgICAgICAgIChpZiAoZXE/IGh0LXVuc3BlY2lmaWVkIGRl ZmF1bHQtdGh1bmspCi0gICAgICAgICAgICAgICAgICAgICAoZXJyb3IgIktleSBub3QgaW4gdGFi bGUiIGtleSBodCkKLSAgICAgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQhIGhhc2gtcHJvYyBh c3NvY2lhdG9yIHJlYWwtdGFibGUga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobW9kaWZpZXIgKGRlZmF1bHQtdGh1bmspKSkpKQotICAgICAgICAgICAgICAgIChlbHNlCi0g ICAgICAgICAgICAgICAgIChoYXNoeC1zZXQhIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFi bGUga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RpZmllciBvbGQpKSkpKQot ICAgICAgICAobGV0ICgoaGFuZGxlIChoYXNoeC1nZXQtaGFuZGxlIGhhc2gtcHJvYyBhc3NvY2lh dG9yIHJlYWwtdGFibGUga2V5KSkpCi0gICAgICAgICAgKGNvbmQgKGhhbmRsZSAoaWYgKGVxPyBo dC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg KGJlZ2luIChodC1zaXplISBodCAoMSsgKGh0LXNpemUgaHQpKSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAobW9kaWZpZXIgKGRlZmF1bHQtdGh1 bmspKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAobW9k aWZpZXIgKGNkciBoYW5kbGUpKSkpKQotICAgICAgICAgICAgICAgIChlbHNlIChpZiAoZXE/IGh0 LXVuc3BlY2lmaWVkIGRlZmF1bHQtdGh1bmspCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChl cnJvciAiS2V5IG5vdCBpbiB0YWJsZSIga2V5IGh0KQotICAgICAgICAgICAgICAgICAgICAgICAg ICAobGV0ICgoZGVmYXVsdCAoZGVmYXVsdC10aHVuaykpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChodC1zaXplISBodCAoMSsgKGh0LXNpemUgaHQpKSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaGFzaHgtc2V0ISBoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRhYmxlIGtl eQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RpZmllciBkZWZh dWx0KSkpKSkpKSkpCi0gICp1bnNwZWNpZmllZCopCisgIChpZiBkZWZhdWx0LXRodW5rCisgICAg ICAoZ2VuOmhhc2gtdGFibGUtdXBkYXRlISBodCBrZXkgbW9kaWZpZXIgZGVmYXVsdC10aHVuaykK KyAgICAgIChnZW46aGFzaC10YWJsZS11cGRhdGUhIGh0IGtleSBtb2RpZmllcikpKQorCisoZGVm aW5lIGhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0IGdlbjpoYXNoLXRhYmxlLXVwZGF0ZSEvZGVm YXVsdCkKIAotOzs7IEouTS4gQ3VzdG9tIGltcGxlbWVudGF0aW9uIGluc3RlYWQgb2YgdXNpbmcg aGFzaC10YWJsZS11cGRhdGUhCi0oZGVmaW5lIChoYXNoLXRhYmxlLXVwZGF0ZSEvZGVmYXVsdCBo dCBrZXkgbW9kaWZpZXIgZGVmYXVsdCkKLSAgIk1vZGlmeSBIVCdzIHZhbHVlIGF0IEtFWSBieSBw YXNzaW5nIGl0cyBvbGQgdmFsdWUsIG9yIERFRkFVTFQgaWYgaXQKLWRvZXNuJ3QgaGF2ZSBvbmUs IHRvIE1PRElGSUVSLCBhbmQgc2V0dGluZyBpdCB0byB0aGUgcmVzdWx0IHRoZXJlb2YuIgotICAo d2l0aC1oYXNoeC12YWx1ZXMgKGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUpIGh0Ci0g ICAgKGlmIChodC13ZWFrbmVzcyBodCkKLSAgICAgICAgOzsgSi5NLiBzZXBhcmF0ZSB0aGUgY2Fz ZSB3aGVyZSBodCBpcyB3ZWFrIC0gZG9uJ3QgdXNlIGhhbmRsZQotICAgICAgICAobGV0KiAoKG9s ZCAoaGFzaHgtcmVmIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUga2V5IGRlZmF1bHQp KSkKLSAgICAgICAgICAoaGFzaHgtc2V0ISBoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRhYmxl IGtleSAobW9kaWZpZXIgb2xkKSkpCi0gICAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWNyZWF0 ZS1oYW5kbGUhIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUga2V5Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LXVuc3BlY2lmaWVkKSkpCi0gICAg ICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgKGNkciBoYW5kbGUpKQotICAgICAgICAgICAg ICAoYmVnaW4gKGh0LXNpemUhIGh0ICgxKyAoaHQtc2l6ZSBodCkpKQotICAgICAgICAgICAgICAg ICAgICAgKHNldC1jZHIhIGhhbmRsZSAobW9kaWZpZXIgZGVmYXVsdCkpKQotICAgICAgICAgICAg ICAoc2V0LWNkciEgaGFuZGxlIChtb2RpZmllciAoY2RyIGhhbmRsZSkpKSkpKSkpCiAMCiA7Ozs7 IEFjY2Vzc2luZyB3aG9sZSB0YWJsZXMKIAotKGRlZmluZSAoaGFzaC10YWJsZS1zaXplIGh0KQot ICAiUmV0dXJuIHRoZSBudW1iZXIgb2YgYXNzb2NpYXRpb25zIGluIEhULiAgVGhpcyBpcyBndWFy YW50ZWVkIE8oMSkKLWZvciB0YWJsZXMgd2hlcmUgIzp3ZWFrIHdhcyAjZiBvciBub3Qgc3BlY2lm aWVkIGF0IGNyZWF0aW9uIHRpbWUuIgotICAoaWYgKGh0LXdlYWtuZXNzIGh0KQotICAgICAgKGxl dCAoKHNpemUgKGhhc2gtdGFibGUtZm9sZCBodCAobGFtYmRhIChrIHYgYW5zKSAoMSsgYW5zKSkg MCkpKQotICAgICAgICAoaHQtc2l6ZSEgaHQgc2l6ZSkKLSAgICAgICAgc2l6ZSkKLSAgICAgICho dC1zaXplIGh0KSkpCi0KLShkZWZpbmUgKGhhc2gtdGFibGUta2V5cyBodCkKLSAgIlJldHVybiBh IGxpc3Qgb2YgdGhlIGtleXMgaW4gSFQuIgotICAoaGFzaC10YWJsZS1mb2xkIGh0IChsYW1iZGEg KGsgdiBsc3QpIChjb25zIGsgbHN0KSkgJygpKSkKLQotKGRlZmluZSAoaGFzaC10YWJsZS12YWx1 ZXMgaHQpCi0gICJSZXR1cm4gYSBsaXN0IG9mIHRoZSB2YWx1ZXMgaW4gSFQuIgotICAoaGFzaC10 YWJsZS1mb2xkIGh0IChsYW1iZGEgKGsgdiBsc3QpIChjb25zIHYgbHN0KSkgJygpKSkKKyhkZWZp bmUgaGFzaC10YWJsZS1zaXplIGdlbjpoYXNoLXRhYmxlLXNpemUpCisoZGVmaW5lIGhhc2gtdGFi bGUta2V5cyBnZW46aGFzaC10YWJsZS1rZXlzKQorKGRlZmluZSBoYXNoLXRhYmxlLXZhbHVlcyBn ZW46aGFzaC10YWJsZS12YWx1ZXMpCisoZGVmaW5lIGhhc2gtdGFibGUtPmFsaXN0IGdlbjpoYXNo LXRhYmxlLT5hbGlzdCkKIAogKGRlZmluZSAoaGFzaC10YWJsZS13YWxrIGh0IHByb2MpCiAgICJD YWxsIFBST0Mgd2l0aCBlYWNoIGtleSBhbmQgdmFsdWUgYXMgdHdvIGFyZ3VtZW50cy4iCi0gICho YXNoLWZvci1lYWNoIHByb2MgKGh0LXJlYWwtdGFibGUgaHQpKSkKKyAgKGdlbjpoYXNoLXRhYmxl LWZvci1lYWNoIHByb2MgaHQpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxlLWZvbGQgaHQgZiBrbmls KQogICAiSW52b2tlIChGIEtFWSBWQUwgUFJFVikgZm9yIGVhY2ggS0VZIGFuZCBWQUwgaW4gSFQs IHdoZXJlIFBSRVYgaXMKIHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIGludm9jYXRpb24sIHVz aW5nIEtOSUwgYXMgdGhlIGZpcnN0IFBSRVYuCiBBbnN3ZXIgdGhlIGZpbmFsIEYgcmVzdWx0LiIK LSAgKGhhc2gtZm9sZCBmIGtuaWwgKGh0LXJlYWwtdGFibGUgaHQpKSkKLQotKGRlZmluZSAoaGFz aC10YWJsZS0+YWxpc3QgaHQpCi0gICJSZXR1cm4gYW4gYWxpc3QgZm9yIEhULiIKLSAgKGhhc2gt bWFwLT5saXN0IGNvbnMgKGh0LXJlYWwtdGFibGUgaHQpKSkKKyAgKGdlbjpoYXNoLXRhYmxlLWZv bGQgZiBrbmlsIGh0KSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1jb3B5IGh0KQogICAiQW5zd2Vy IGEgY29weSBvZiBIVC4iCi0gICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtaHQpIGh0Ci0g ICAgKGxldCogKChzaXplIChoYXNoLXRhYmxlLXNpemUgaHQpKSAod2VhayAoaHQtd2Vha25lc3Mg aHQpKQotCSAgIChuZXctcmVhbC1odCAoKGd1aWxlLWh0LWN0b3Igd2Vhaykgc2l6ZSkpKQotICAg ICAgKGhhc2gtZm9yLWVhY2ggKGxhbWJkYSAoayB2KSAoaGFzaHgtc2V0ISBoIGEgbmV3LXJlYWwt aHQgayB2KSkKLSAgICAgICAgICAgICAgICAgICAgIHJlYWwtaHQpCi0gICAgICAobWFrZS1zcmZp LTY5LWhhc2gtdGFibGUJCTtyZWFsLGFzc29jLHNpemUsd2VhayxlcXVpdixoCi0gICAgICAgbmV3 LXJlYWwtaHQgYSBzaXplIHdlYWsKLSAgICAgICAoaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5j dGlvbiBodCkgaCkpKSkKKyAgKGdlbjpoYXNoLXRhYmxlLWNvcHkgaHQpKQogCiAoZGVmaW5lICho YXNoLXRhYmxlLW1lcmdlISBodCBvdGhlci1odCkKICAgIkFkZCBhbGwga2V5L3ZhbHVlIHBhaXJz IGZyb20gT1RIRVItSFQgdG8gSFQsIG92ZXJyaWRpbmcgSFQncwogbWFwcGluZ3Mgd2hlcmUgcHJl c2VudC4gIFJldHVybiBIVC4iCi0gIChoYXNoLWZvci1lYWNoIChsYW1iZGEgKGsgdikgKGhhc2gt dGFibGUtc2V0ISBodCBrIHYpKQotICAgICAgICAgICAgICAgICAoaHQtcmVhbC10YWJsZSBvdGhl ci1odCkpCisgIDs7IEhBU0gtVEFCTEUtU0VUISB0ZXN0cyBpZiBIVCBpcyBtdXRhYmxlLgorICAo Z2VuOmhhc2gtdGFibGUtZm9yLWVhY2ggKGxhbWJkYSAoayB2KSAoaGFzaC10YWJsZS1zZXQhIGh0 IGsgdikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci1odCkKICAgaHQpCiAKIDs7 OyBzcmZpLTY5LnNjbSBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3Jm aS02OS50ZXN0IGIvdGVzdC1zdWl0ZS90ZXN0cy9zcmZpLTY5LnRlc3QKaW5kZXggYzJhNTU0ZGIz Li5lMTU3OWY3M2EgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS02OS50ZXN0Cisr KyBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS02OS50ZXN0CkBAIC0xNDEsNiArMTQxLDcgQEAgY2Fz ZS1pbnNlbnNpdGl2ZSBzdHJpbmdzIHRvIGBlcXVhbD8nLXRlc3RlZCB2YWx1ZXMuIgogICAgICAg ICAgICAgIChsc2V0PSBlcXVhbD8gJygoYiAuIDMpIChjIC4gNCkpIChoYXNoLXRhYmxlLT5hbGlz dCBodDIpKSkpKSkKIAogICAocGFzcy1pZiAiY2FuIHVzZSBhbGwgYXJndW1lbnRzLCBpbmNsdWRp bmcgc2l6ZSIKLSAgICAoaGFzaC10YWJsZT8gKG1ha2UtaGFzaC10YWJsZSBlcXVhbD8gaGFzaCAj OndlYWsgJ2tleSAzMSkpKQorICAgIChsZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIGVxdWFsPyBo YXNoICM6d2VhayAna2V5IDMxKSkpCisgICAgICAoaGFzaC10YWJsZT8gaHQpKSkKIAogICApCi0t IAoyLjE5LjEKCg== --000000000000b6a39d057efb700b Content-Type: text/x-patch; charset="UTF-8"; name="0001-Fix-SRFI-69-don-t-use-handles-with-weak-tables.patch" Content-Disposition: attachment; filename="0001-Fix-SRFI-69-don-t-use-handles-with-weak-tables.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqofminb0> X-Attachment-Id: f_jqofminb0 RnJvbSBjZTEwOTk0ZmQ3Y2Q3NTQ2Yjc3MDdhNDA3MTJlYzk2MDNlNzQwMTA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDggSmFuIDIwMTkgMjE6NTU6NDAg LTAyMDAKU3ViamVjdDogW1BBVENIIDEvNV0gRml4OiBTUkZJLTY5IGRvbid0IHVzZSBoYW5kbGVz IHdpdGggd2VhayB0YWJsZXMgIGFueW1vcmUuCgpNYW55IHByb2NlZHVyZXMgdXNlZCBoYXNoeC1n ZXQtaGFuZGxlIGFuZCBoYXNoeC1jcmVhdGUtaGFuZGxlISB3aXRob3V0CmNoZWNraW5nIHdoZXRo ZXIgcmVhbC1oYXNoLXRhYmxlIHdhcyB3ZWFrLiBOb3cgdGhhdCBpc24ndCB0aGUgY2FzZQphbnlt b3JlIChCdWcgMzM4MjcpLiBBIGJ1ZyB3YXMgZml4ZWQgaW4gaGFzaC10YWJsZS1tZXJnZSEgYW5k IGEgdGVzdCBjYXNlCndhcyBhZGRlZC4gQSBmZXcgb3RoZXIgb3B0aW1pemF0aW9ucyB3ZXJlIG1h ZGUuCgoqIG1vZHVsZS9zcmZpL3NyZmktNjkuc2NtIChhbGlzdC0+aGFzaC10YWJsZSk6CihoYXNo LXRhYmxlLWRlbGV0ZSEpOgooaGFzaC10YWJsZS1leGlzdHM/KToKKGhhc2gtdGFibGUtcmVmKTog RG9uJ3QgdXNlIGhhc2h4LWdldC1oYW5kbGUuCihoYXNoLXRhYmxlLXNldCEpOiBJZiB3ZWFrbmVz cyBpcyBzZXQsIGRvbid0IHVzZSBoYXNoeC1jcmVhdGUtaGFuZGxlIQphbmQgZG9uJ3QgdXBkYXRl IHNpemUuCihoYXNoLXRhYmxlLXVwZGF0ZSEpOiBJZiB3ZWFrbmVzcyBpcyBzZXQsIGRvbid0IHVz ZSBoYXNoeC1nZXQtaGFuZGxlCmFuZCBkb24ndCB1cGRhdGUgc2l6ZS4KKGhhc2gtdGFibGUtdXBk YXRlIS9kZWZhdWx0KTogQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBkb2Vzbid0IGNhbGwK aGFzaC10YWJsZS11cGRhdGUhLCBhdm9pZGluZyBhbGxvY2F0aW5nIGEgcHJvY2VkdXJlLgooaGFz aC10YWJsZS1zaXplKTogU2V0IGh0LXNpemUgZm9yIHdlYWsgaGFzaC10YWJsZXMuCihoYXNoLXRh YmxlLXdhbGspOgooaGFzaC10YWJsZS1jb3B5KTogVXNlIG5hdGl2ZSBoYXNoLWZvci1lYWNoIGlu c3RlYWQgb2YgaGFzaC10YWJsZS1mb2xkLgooaGFzaC10YWJsZS0+YWxpc3QpOiBVc2UgbmF0aXZl IGhhc2gtbWFwLT5saXN0IGluc3RlYWQgb2YgaGFzaC10YWJsZS1mb2xkLgooaGFzaC10YWJsZS1t ZXJnZSEpOiBVc2UgbmF0aXZlIGhhc2gtZm9yLWVhY2ggaW5zdGVhZCBvZiBoYXNoLXRhYmxlLWZv bGQuCldhbGtzIG92ZXIgb3RoZXItaHQgcmF0aGVyIHRoYW4gd2Fsa2luZyBodCAoYW5kIGRvaW5n IG5vdGhpbmcpLgoqIHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS02OS50ZXN0OiBhbGwgYXBwcm9wcmlh dGUgdGVzdCBhcmUgcmVwbGljYXRlZCBmb3IKYWxsIHBvc3NpYmxlICM6d2VhayBhcmd1bWVudHMu IEFkZGVkIGEgdGVzdCBmb3IgaGFzaC10YWJsZS1tZXJnZSEuCi0tLQogVEhBTktTICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogbW9kdWxlL3NyZmkvc3JmaS02OS5zY20gICAgICAgfCAx NDggKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS02 OS50ZXN0IHwgMTczICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDMgZmlsZXMg Y2hhbmdlZCwgMjAwIGluc2VydGlvbnMoKyksIDEyMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9USEFOS1MgYi9USEFOS1MKaW5kZXggNjE2ZDNiMDRiLi45MDU2YTc5NWMgMTAwNjQ0Ci0tLSBh L1RIQU5LUworKysgYi9USEFOS1MKQEAgLTIwLDYgKzIwLDcgQEAgQ29udHJpYnV0b3JzIHNpbmNl IHRoZSBsYXN0IHJlbGVhc2U6CiAgICAgICAgICAgIE5vYWggTGF2aW5lCiAgICAgICAgICBEYW5p ZWwgTGxvcmVucwogICAgICAgICBHcmVnb3J5IE1hcnRvbgorICAgICAgICBKw6lzc2ljYSBNaWxh csOpCiAgICAgICBUaGllbi1UaGkgTmd1eWVuCiAgICAgICAgIEhhbi1XZW4gTmllbmh1eXMKICAg ICAgICAgICAgIEphbiBOaWV1d2VuaHVpemVuCmRpZmYgLS1naXQgYS9tb2R1bGUvc3JmaS9zcmZp LTY5LnNjbSBiL21vZHVsZS9zcmZpL3NyZmktNjkuc2NtCmluZGV4IGI5NDg2YzQ2NS4uMmI3ZmI5 YTdmIDEwMDY0NAotLS0gYS9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbQorKysgYi9tb2R1bGUvc3Jm aS9zcmZpLTY5LnNjbQpAQCAtNjIsNiArNjIsMTQgQEAKIDs7IGltcGxlbWVudGF0aW9uLCBib3Ro IGFuc3dlciAoInhZIikuICBIb3dldmVyLCBJIGRvbid0IGd1YXJhbnRlZSB0aGF0CiA7OyB0aGlz IHdvbid0IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgogCisKKzs7OzsgQ29tbWVudGFyeSBieSBKZXNz aWNhIE1pbGFyZSAyMDE4CisKKzs7IE1ha2UgYnVnIGZpeGVzIGZvciB3ZWFrIGhhc2gtdGFibGVz LCBzaW5jZSBoYW5kbGVzIGRvbid0IHdvcmsgYW55bW9yZSwKKzs7IGFuZCBhbHNvIHNvbWUgb3B0 aW1pemF0aW9ucy4KKzs7Cis7OyBNeSBwZXJzb25hbCBjb21tZW50cyBhcmUgbWFya2VkIGJ5IEou TS4KKwogOzs7IENvZGU6CiAMCiA7Ozs7IE1vZHVsZSBkZWZpbml0aW9uICYgZXhwb3J0cwpAQCAt NzMsMTggKzgxLDE4IEBACiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgb3B0YXJncykKICAgIzpleHBv cnQgKDs7IFR5cGUgY29uc3RydWN0b3JzICYgcHJlZGljYXRlCiAJICAgIG1ha2UtaGFzaC10YWJs ZSBoYXNoLXRhYmxlPyBhbGlzdC0+aGFzaC10YWJsZQotCSAgICA7OyBSZWZsZWN0aXZlIHF1ZXJp ZXMKLQkgICAgaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBoYXNoLXRhYmxlLWhhc2gt ZnVuY3Rpb24KLQkgICAgOzsgRGVhbGluZyB3aXRoIHNpbmdsZSBlbGVtZW50cwotCSAgICBoYXNo LXRhYmxlLXJlZiBoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGhhc2gtdGFibGUtc2V0IQotCSAgICBo YXNoLXRhYmxlLWRlbGV0ZSEgaGFzaC10YWJsZS1leGlzdHM/IGhhc2gtdGFibGUtdXBkYXRlIQot CSAgICBoYXNoLXRhYmxlLXVwZGF0ZSEvZGVmYXVsdAotCSAgICA7OyBEZWFsaW5nIHdpdGggdGhl IHdob2xlIGNvbnRlbnRzCi0JICAgIGhhc2gtdGFibGUtc2l6ZSBoYXNoLXRhYmxlLWtleXMgaGFz aC10YWJsZS12YWx1ZXMKLQkgICAgaGFzaC10YWJsZS13YWxrIGhhc2gtdGFibGUtZm9sZCBoYXNo LXRhYmxlLT5hbGlzdAotCSAgICBoYXNoLXRhYmxlLWNvcHkgaGFzaC10YWJsZS1tZXJnZSEKLQkg ICAgOzsgSGFzaGluZwotCSAgICBzdHJpbmctY2ktaGFzaCBoYXNoLWJ5LWlkZW50aXR5KQorICAg ICAgICAgICAgOzsgUmVmbGVjdGl2ZSBxdWVyaWVzCisgICAgICAgICAgICBoYXNoLXRhYmxlLWVx dWl2YWxlbmNlLWZ1bmN0aW9uIGhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbgorICAgICAgICAgICAg OzsgRGVhbGluZyB3aXRoIHNpbmdsZSBlbGVtZW50cworICAgICAgICAgICAgaGFzaC10YWJsZS1y ZWYgaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBoYXNoLXRhYmxlLXNldCEKKyAgICAgICAgICAgIGhh c2gtdGFibGUtZGVsZXRlISBoYXNoLXRhYmxlLWV4aXN0cz8gaGFzaC10YWJsZS11cGRhdGUhCisg ICAgICAgICAgICBoYXNoLXRhYmxlLXVwZGF0ZSEvZGVmYXVsdAorICAgICAgICAgICAgOzsgRGVh bGluZyB3aXRoIHRoZSB3aG9sZSBjb250ZW50cworICAgICAgICAgICAgaGFzaC10YWJsZS1zaXpl IGhhc2gtdGFibGUta2V5cyBoYXNoLXRhYmxlLXZhbHVlcworICAgICAgICAgICAgaGFzaC10YWJs ZS13YWxrIGhhc2gtdGFibGUtZm9sZCBoYXNoLXRhYmxlLT5hbGlzdAorICAgICAgICAgICAgaGFz aC10YWJsZS1jb3B5IGhhc2gtdGFibGUtbWVyZ2UhCisgICAgICAgICAgICA7OyBIYXNoaW5nCisg ICAgICAgICAgICBzdHJpbmctY2ktaGFzaCBoYXNoLWJ5LWlkZW50aXR5KQogICAjOnJlLWV4cG9y dCAoc3RyaW5nLWhhc2gpCiAgICM6cmVwbGFjZSAoaGFzaCBtYWtlLWhhc2gtdGFibGUgaGFzaC10 YWJsZT8pKQogCkBAIC0yMDQsMzAgKzIxMiwzMiBAQCBtYW51YWwgZm9yIHNwZWNpZmljcywgb2Yg d2hpY2ggdGhlcmUgYXJlIG1hbnkuIgogCSAoc2l6ZSAoaHQtc2l6ZSByZXN1bHQpKSkKICAgICAo d2l0aC1oYXNoeC12YWx1ZXMgKGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUpIHJlc3Vs dAogICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHBhaXIpCi0JCSAgKGxldCAoKGhhbmRsZSAoaGFz aHgtZ2V0LWhhbmRsZSBoYXNoLXByb2MgYXNzb2NpYXRvcgotCQkJCQkJICByZWFsLXRhYmxlIChj YXIgcGFpcikpKSkKLQkJICAgIChjb25kICgobm90IGhhbmRsZSkKLQkJCSAgIChzZXQhIHNpemUg KDErIHNpemUpKQotCQkJICAgKGhhc2h4LXNldCEgaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVhbC10 YWJsZQotCQkJCSAgICAgICAoY2FyIHBhaXIpIChjZHIgcGFpcikpKSkpKQotCQlhbGlzdCkpCisg ICAgICAgICAgICAgICAgICAobGV0ICgodmFsdWUgKGhhc2h4LXJlZiBoYXNoLXByb2MgYXNzb2Np YXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbC10YWJs ZSAoY2FyIHBhaXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo dC11bnNwZWNpZmllZCkpKQorICAgICAgICAgICAgICAgICAgICAoY29uZCAoKGVxPyBodC11bnNw ZWNpZmllZCB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQhIHNpemUgKDEr IHNpemUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXNldCEgaGFzaC1wcm9j IGFzc29jaWF0b3IgcmVhbC10YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNhciBwYWlyKSAoY2RyIHBhaXIpKSkpKSkKKyAgICAgICAgICAgICAgICBhbGlzdCkp CiAgICAgKGh0LXNpemUhIHJlc3VsdCBzaXplKQogICAgIHJlc3VsdCkpCiAMCiA7Ozs7IEFjY2Vz c2luZyB0YWJsZSBpdGVtcwogCiA7OyBXZSB1c2UgdGhpcyB0byBkZW5vdGUgbWlzc2luZyBvciB1 bnNwZWNpZmllZCB2YWx1ZXMgdG8gYXZvaWQKKwogOzsgcG9zc2libGUgY29sbGlzaW9uIHdpdGgg KnVuc3BlY2lmaWVkKi4KIChkZWZpbmUgaHQtdW5zcGVjaWZpZWQgKGNvbnMgKnVuc3BlY2lmaWVk KiAiaHQtdmFsdWUiKSkKIAotKGRlZmluZSAoaGFzaC10YWJsZS1yZWYgaHQga2V5IC4gZGVmYXVs dC10aHVuay1sc3QpCisoZGVmaW5lKiAoaGFzaC10YWJsZS1yZWYgaHQga2V5ICAjOm9wdGlvbmFs IChkZWZhdWx0LXRodW5rIGh0LXVuc3BlY2lmaWVkKSkKICAgIkxvb2t1cCBLRVkgaW4gSFQgYW5k IGFuc3dlciB0aGUgdmFsdWUsIGludm9rZSBERUZBVUxULVRIVU5LIGlmIEtFWQogaXNuJ3QgcHJl c2VudCwgb3Igc2lnbmFsIGFuIGVycm9yIGlmIERFRkFVTFQtVEhVTksgaXNuJ3QgcHJvdmlkZWQu IgogICAobGV0ICgocmVzdWx0IChoYXNoeC1pbnZva2UgaGFzaHgtcmVmIGh0IGtleSBodC11bnNw ZWNpZmllZCkpKQogICAgIChpZiAoZXE/IGh0LXVuc3BlY2lmaWVkIHJlc3VsdCkKLQkoaWYgKHBh aXI/IGRlZmF1bHQtdGh1bmstbHN0KQotCSAgICAoKGZpcnN0IGRlZmF1bHQtdGh1bmstbHN0KSkK LQkgICAgKGVycm9yICJLZXkgbm90IGluIHRhYmxlIiBrZXkgaHQpKQorCShpZiAoZXE/IGh0LXVu c3BlY2lmaWVkIGRlZmF1bHQtdGh1bmspCisJICAgIChlcnJvciAiS2V5IG5vdCBpbiB0YWJsZSIg a2V5IGh0KQorCSAgICAoZGVmYXVsdC10aHVuaykpCiAJcmVzdWx0KSkpCiAKIChkZWZpbmUgKGhh c2gtdGFibGUtcmVmL2RlZmF1bHQgaHQga2V5IGRlZmF1bHQpCkBAIC0yMzcsNDkgKzI0Nyw3OCBA QCBwcmVzZW50LiIKIAogKGRlZmluZSAoaGFzaC10YWJsZS1zZXQhIGh0IGtleSBuZXctdmFsdWUp CiAgICJTZXQgS0VZIHRvIE5FVy1WQUxVRSBpbiBIVC4iCi0gIChsZXQgKChoYW5kbGUgKGhhc2h4 LWludm9rZSBoYXNoeC1jcmVhdGUtaGFuZGxlISBodCBrZXkgaHQtdW5zcGVjaWZpZWQpKSkKLSAg ICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkpCi0JKGh0LXNpemUhIGh0ICgx KyAoaHQtc2l6ZSBodCkpKSkKLSAgICAoc2V0LWNkciEgaGFuZGxlIG5ldy12YWx1ZSkpCisgIChp ZiAoaHQtd2Vha25lc3MgaHQpCisgICAgICA7OyBKLk0uIHNlcGFyYXRlIHRoZSBjYXNlIHdoZXJl IGh0IGlzIHdlYWsgLSBkb24ndCB1c2UgaGFuZGxlCisgICAgICA7OyBKLk0uIGRvbid0IG5lZWQg dG8gdXBkYXRlIHNpemUgZm9yIHdlYWsgaGFzaC10YWJsZXMKKyAgICAgIChoYXNoeC1pbnZva2Ug aGFzaHgtc2V0ISBodCBrZXkgbmV3LXZhbHVlKQorICAgICAgKGxldCAoKGhhbmRsZSAoaGFzaHgt aW52b2tlIGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGh0IGtleQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGh0LXVuc3BlY2lmaWVkKSkpCisgICAgICAgIChpZiAoZXE/IGh0LXVuc3Bl Y2lmaWVkIChjZHIgaGFuZGxlKSkKKyAgICAgICAgICAgIChodC1zaXplISBodCAoMSsgKGh0LXNp emUgaHQpKSkpCisgICAgICAgIChzZXQtY2RyISBoYW5kbGUgbmV3LXZhbHVlKSkpCiAgICp1bnNw ZWNpZmllZCopCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtZGVsZXRlISBodCBrZXkpCiAgICJSZW1v dmUgS0VZJ3MgYXNzb2NpYXRpb24gaW4gSFQuIgogICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSBy ZWFsLWh0KSBodAotICAgIChpZiAoaGFzaHgtZ2V0LWhhbmRsZSBoIGEgcmVhbC1odCBrZXkpCi0J KGJlZ2luCi0JICAoaHQtc2l6ZSEgaHQgKDEtIChodC1zaXplIGh0KSkpCi0JICAoaGFzaHgtcmVt b3ZlISBoIGEgcmVhbC1odCBrZXkpKSkpCisgICAgKGlmIChub3QgKGVxPyBodC11bnNwZWNpZmll ZCAoaGFzaHgtcmVmIGggYSByZWFsLWh0IGtleSBodC11bnNwZWNpZmllZCkpKQorICAgICAgICAo YmVnaW4KKyAgICAgICAgICAoaHQtc2l6ZSEgaHQgKDEtIChodC1zaXplIGh0KSkpCisgICAgICAg ICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJlYWwtaHQga2V5KSkpKQogICAqdW5zcGVjaWZpZWQqKQog CiAoZGVmaW5lIChoYXNoLXRhYmxlLWV4aXN0cz8gaHQga2V5KQogICAiUmV0dXJuIHdoZXRoZXIg S0VZIGlzIGEga2V5IGluIEhULiIKLSAgKGFuZCAoaGFzaHgtaW52b2tlIGhhc2h4LWdldC1oYW5k bGUgaHQga2V5KSAjdCkpCisgIChub3QgKGVxPyBodC11bnNwZWNpZmllZCAoaGFzaHgtaW52b2tl IGhhc2h4LXJlZiBodCBrZXkgaHQtdW5zcGVjaWZpZWQpKSkpCiAKLTs7OyBgaGFzaHgtc2V0IScg ZHVwbGljYXRlcyB0aGUgaGFzaCBsb29rdXAsIGJ1dCB3ZSB1c2UgaXQgYW55d2F5IHRvCi07Ozsg YXZvaWQgY3JlYXRpbmcgYSBoYW5kbGUgaW4gY2FzZSBERUZBVUxULVRIVU5LIGV4aXRzCiA7Ozsg YGhhc2gtdGFibGUtdXBkYXRlIScgbm9uLWxvY2FsbHkuCi0oZGVmaW5lIChoYXNoLXRhYmxlLXVw ZGF0ZSEgaHQga2V5IG1vZGlmaWVyIC4gZGVmYXVsdC10aHVuay1sc3QpCisoZGVmaW5lKiAoaGFz aC10YWJsZS11cGRhdGUhIGh0IGtleSBtb2RpZmllcgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjOm9wdGlvbmFsIChkZWZhdWx0LXRodW5rIGh0LXVuc3BlY2lmaWVkKSkKICAgIk1vZGlm eSBIVCdzIHZhbHVlIGF0IEtFWSBieSBwYXNzaW5nIGl0cyB2YWx1ZSB0byBNT0RJRklFUiBhbmQK IHNldHRpbmcgaXQgdG8gdGhlIHJlc3VsdCB0aGVyZW9mLiAgSW52b2tlIERFRkFVTFQtVEhVTksg Zm9yIHRoZSBvbGQKIHZhbHVlIGlmIEtFWSBpc24ndCBpbiBIVCwgb3Igc2lnbmFsIGFuIGVycm9y IGlmIERFRkFVTFQtVEhVTksgaXMgbm90CiBwcm92aWRlZC4iCiAgICh3aXRoLWhhc2h4LXZhbHVl cyAoaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVhbC10YWJsZSkgaHQKLSAgICAobGV0ICgoaGFuZGxl IChoYXNoeC1nZXQtaGFuZGxlIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUga2V5KSkp Ci0gICAgICAoY29uZCAoaGFuZGxlCi0JICAgICAoc2V0LWNkciEgaGFuZGxlIChtb2RpZmllciAo Y2RyIGhhbmRsZSkpKSkKLQkgICAgKGVsc2UKLQkgICAgIChoYXNoeC1zZXQhIGhhc2gtcHJvYyBh c3NvY2lhdG9yIHJlYWwtdGFibGUga2V5Ci0JCQkgKGlmIChwYWlyPyBkZWZhdWx0LXRodW5rLWxz dCkKLQkJCSAgICAgKG1vZGlmaWVyICgoY2FyIGRlZmF1bHQtdGh1bmstbHN0KSkpCi0JCQkgICAg IChlcnJvciAiS2V5IG5vdCBpbiB0YWJsZSIga2V5IGh0KSkpCi0JICAgICAoaHQtc2l6ZSEgaHQg KDErIChodC1zaXplIGh0KSkpKSkpKQorICAgIChpZiAoaHQtd2Vha25lc3MgaHQpCisgICAgICAg IDs7IEouTS4gc2VwYXJhdGUgdGhlIGNhc2Ugd2hlcmUgaHQgaXMgd2VhayAtIGRvbid0IHVzZSBo YW5kbGUKKyAgICAgICAgKGxldCogKChvbGQgKGhhc2h4LXJlZiBoYXNoLXByb2MgYXNzb2NpYXRv ciByZWFsLXRhYmxlIGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LXVuc3Bl Y2lmaWVkKSkpCisgICAgICAgICAgKGNvbmQgKChlcT8gaHQtdW5zcGVjaWZpZWQgb2xkKQorICAg ICAgICAgICAgICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCBkZWZhdWx0LXRodW5rKQorICAg ICAgICAgICAgICAgICAgICAgKGVycm9yICJLZXkgbm90IGluIHRhYmxlIiBrZXkgaHQpCisgICAg ICAgICAgICAgICAgICAgICAoaGFzaHgtc2V0ISBoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRh YmxlIGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGlmaWVyIChkZWZh dWx0LXRodW5rKSkpKSkKKyAgICAgICAgICAgICAgICAoZWxzZQorICAgICAgICAgICAgICAgICAo aGFzaHgtc2V0ISBoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRhYmxlIGtleQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobW9kaWZpZXIgb2xkKSkpKSkKKyAgICAgICAgKGxldCAoKGhh bmRsZSAoaGFzaHgtZ2V0LWhhbmRsZSBoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRhYmxlIGtl eSkpKQorICAgICAgICAgIChjb25kIChoYW5kbGUgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgKGNk ciBoYW5kbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbiAoaHQtc2l6ZSEg aHQgKDErIChodC1zaXplIGh0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzZXQtY2RyISBoYW5kbGUgKG1vZGlmaWVyIChkZWZhdWx0LXRodW5rKSkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzZXQtY2RyISBoYW5kbGUgKG1vZGlmaWVyIChjZHIgaGFuZGxl KSkpKSkKKyAgICAgICAgICAgICAgICAoZWxzZSAoaWYgKGVxPyBodC11bnNwZWNpZmllZCBkZWZh dWx0LXRodW5rKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IgIktleSBub3QgaW4g dGFibGUiIGtleSBodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGRlZmF1bHQg KGRlZmF1bHQtdGh1bmspKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaHQtc2l6ZSEg aHQgKDErIChodC1zaXplIGh0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2h4 LXNldCEgaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVhbC10YWJsZSBrZXkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kaWZpZXIgZGVmYXVsdCkpKSkpKSkpKQogICAq dW5zcGVjaWZpZWQqKQogCis7OzsgSi5NLiBDdXN0b20gaW1wbGVtZW50YXRpb24gaW5zdGVhZCBv ZiB1c2luZyBoYXNoLXRhYmxlLXVwZGF0ZSEKIChkZWZpbmUgKGhhc2gtdGFibGUtdXBkYXRlIS9k ZWZhdWx0IGh0IGtleSBtb2RpZmllciBkZWZhdWx0KQogICAiTW9kaWZ5IEhUJ3MgdmFsdWUgYXQg S0VZIGJ5IHBhc3NpbmcgaXRzIG9sZCB2YWx1ZSwgb3IgREVGQVVMVCBpZiBpdAogZG9lc24ndCBo YXZlIG9uZSwgdG8gTU9ESUZJRVIsIGFuZCBzZXR0aW5nIGl0IHRvIHRoZSByZXN1bHQgdGhlcmVv Zi4iCi0gIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQga2V5IG1vZGlmaWVyIChsYW1iZGEgKCkgZGVm YXVsdCkpKQorICAod2l0aC1oYXNoeC12YWx1ZXMgKGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwt dGFibGUpIGh0CisgICAgKGlmIChodC13ZWFrbmVzcyBodCkKKyAgICAgICAgOzsgSi5NLiBzZXBh cmF0ZSB0aGUgY2FzZSB3aGVyZSBodCBpcyB3ZWFrIC0gZG9uJ3QgdXNlIGhhbmRsZQorICAgICAg ICAobGV0KiAoKG9sZCAoaGFzaHgtcmVmIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUg a2V5IGRlZmF1bHQpKSkKKyAgICAgICAgICAoaGFzaHgtc2V0ISBoYXNoLXByb2MgYXNzb2NpYXRv ciByZWFsLXRhYmxlIGtleSAobW9kaWZpZXIgb2xkKSkpCisgICAgICAgIChsZXQgKChoYW5kbGUg KGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUga2V5 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LXVuc3BlY2lm aWVkKSkpCisgICAgICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgKGNkciBoYW5kbGUpKQor ICAgICAgICAgICAgICAoYmVnaW4gKGh0LXNpemUhIGh0ICgxKyAoaHQtc2l6ZSBodCkpKQorICAg ICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAobW9kaWZpZXIgZGVmYXVsdCkpKQor ICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlIChtb2RpZmllciAoY2RyIGhhbmRsZSkpKSkp KSkpCiAMCiA7Ozs7IEFjY2Vzc2luZyB3aG9sZSB0YWJsZXMKIApAQCAtMjg3LDcgKzMyNiw5IEBA IGRvZXNuJ3QgaGF2ZSBvbmUsIHRvIE1PRElGSUVSLCBhbmQgc2V0dGluZyBpdCB0byB0aGUgcmVz dWx0IHRoZXJlb2YuIgogICAiUmV0dXJuIHRoZSBudW1iZXIgb2YgYXNzb2NpYXRpb25zIGluIEhU LiAgVGhpcyBpcyBndWFyYW50ZWVkIE8oMSkKIGZvciB0YWJsZXMgd2hlcmUgIzp3ZWFrIHdhcyAj ZiBvciBub3Qgc3BlY2lmaWVkIGF0IGNyZWF0aW9uIHRpbWUuIgogICAoaWYgKGh0LXdlYWtuZXNz IGh0KQotICAgICAgKGhhc2gtdGFibGUtZm9sZCBodCAobGFtYmRhIChrIHYgYW5zKSAoMSsgYW5z KSkgMCkKKyAgICAgIChsZXQgKChzaXplIChoYXNoLXRhYmxlLWZvbGQgaHQgKGxhbWJkYSAoayB2 IGFucykgKDErIGFucykpIDApKSkKKyAgICAgICAgKGh0LXNpemUhIGh0IHNpemUpCisgICAgICAg IHNpemUpCiAgICAgICAoaHQtc2l6ZSBodCkpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxlLWtleXMg aHQpCkBAIC0zMDAsMTAgKzM0MSw3IEBAIGZvciB0YWJsZXMgd2hlcmUgIzp3ZWFrIHdhcyAjZiBv ciBub3Qgc3BlY2lmaWVkIGF0IGNyZWF0aW9uIHRpbWUuIgogCiAoZGVmaW5lIChoYXNoLXRhYmxl LXdhbGsgaHQgcHJvYykKICAgIkNhbGwgUFJPQyB3aXRoIGVhY2gga2V5IGFuZCB2YWx1ZSBhcyB0 d28gYXJndW1lbnRzLiIKLSAgKGhhc2gtdGFibGUtZm9sZCBodCAobGFtYmRhIChrIHYgdW5zcGVj KQotICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0aC12YWx1ZXMgKGxhbWJkYSAoKSAo cHJvYyBrIHYpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIHZhbHMgdW5zcGVj KSkpCi0JCSAgICp1bnNwZWNpZmllZCopKQorICAoaGFzaC1mb3ItZWFjaCBwcm9jIChodC1yZWFs LXRhYmxlIGh0KSkpCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtZm9sZCBodCBmIGtuaWwpCiAgICJJ bnZva2UgKEYgS0VZIFZBTCBQUkVWKSBmb3IgZWFjaCBLRVkgYW5kIFZBTCBpbiBIVCwgd2hlcmUg UFJFViBpcwpAQCAtMzEzLDE1ICszNTEsMTUgQEAgQW5zd2VyIHRoZSBmaW5hbCBGIHJlc3VsdC4i CiAKIChkZWZpbmUgKGhhc2gtdGFibGUtPmFsaXN0IGh0KQogICAiUmV0dXJuIGFuIGFsaXN0IGZv ciBIVC4iCi0gIChoYXNoLXRhYmxlLWZvbGQgaHQgYWxpc3QtY29ucyAnKCkpKQorICAoaGFzaC1t YXAtPmxpc3QgY29ucyAoaHQtcmVhbC10YWJsZSBodCkpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxl LWNvcHkgaHQpCiAgICJBbnN3ZXIgYSBjb3B5IG9mIEhULiIKICAgKHdpdGgtaGFzaHgtdmFsdWVz IChoIGEgcmVhbC1odCkgaHQKICAgICAobGV0KiAoKHNpemUgKGhhc2gtdGFibGUtc2l6ZSBodCkp ICh3ZWFrIChodC13ZWFrbmVzcyBodCkpCiAJICAgKG5ldy1yZWFsLWh0ICgoZ3VpbGUtaHQtY3Rv ciB3ZWFrKSBzaXplKSkpCi0gICAgICAoaGFzaC1mb2xkIChsYW1iZGEgKGsgdiBpZ24pIChoYXNo eC1zZXQhIGggYSBuZXctcmVhbC1odCBrIHYpKQotCQkgI2YgcmVhbC1odCkKKyAgICAgIChoYXNo LWZvci1lYWNoIChsYW1iZGEgKGsgdikgKGhhc2h4LXNldCEgaCBhIG5ldy1yZWFsLWh0IGsgdikp CisgICAgICAgICAgICAgICAgICAgICByZWFsLWh0KQogICAgICAgKG1ha2Utc3JmaS02OS1oYXNo LXRhYmxlCQk7cmVhbCxhc3NvYyxzaXplLHdlYWssZXF1aXYsaAogICAgICAgIG5ldy1yZWFsLWh0 IGEgc2l6ZSB3ZWFrCiAgICAgICAgKGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQp IGgpKSkpCkBAIC0zMjksOCArMzY3LDggQEAgQW5zd2VyIHRoZSBmaW5hbCBGIHJlc3VsdC4iCiAo ZGVmaW5lIChoYXNoLXRhYmxlLW1lcmdlISBodCBvdGhlci1odCkKICAgIkFkZCBhbGwga2V5L3Zh bHVlIHBhaXJzIGZyb20gT1RIRVItSFQgdG8gSFQsIG92ZXJyaWRpbmcgSFQncwogbWFwcGluZ3Mg d2hlcmUgcHJlc2VudC4gIFJldHVybiBIVC4iCi0gIChoYXNoLXRhYmxlLWZvbGQKLSAgIGh0IChs YW1iZGEgKGsgdiBpZ24pIChoYXNoLXRhYmxlLXNldCEgaHQgayB2KSkgI2YpCisgIChoYXNoLWZv ci1lYWNoIChsYW1iZGEgKGsgdikgKGhhc2gtdGFibGUtc2V0ISBodCBrIHYpKQorICAgICAgICAg ICAgICAgICAoaHQtcmVhbC10YWJsZSBvdGhlci1odCkpCiAgIGh0KQogCiA7Ozsgc3JmaS02OS5z Y20gZW5kcyBoZXJlCmRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdCBi L3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS02OS50ZXN0CmluZGV4IGU5OWI3NmM2ZC4uYzJhNTU0ZGIz IDEwMDY0NAotLS0gYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdAorKysgYi90ZXN0LXN1 aXRlL3Rlc3RzL3NyZmktNjkudGVzdApAQCAtMjgsODAgKzI4LDExOSBAQCBjYXNlLWluc2Vuc2l0 aXZlIHN0cmluZ3MgdG8gYGVxdWFsPyctdGVzdGVkIHZhbHVlcy4iCiAgIChhbmQgKHN0cmluZy1j aT0/IChjYXIgbGVmdCkgKGNhciByaWdodCkpCiAgICAgICAgKGVxdWFsPyAoY2RyIGxlZnQpIChj ZHIgcmlnaHQpKSkpCiAKKyhkZWZpbmUtc3ludGF4IHdpdGgtd2Vha25lc3MtbGlzdAorICAoc3lu dGF4LXJ1bGVzICgpCisgICAgKCh3aXRoLXdlYWtuZXNzLWxpc3Qgd2Vha25lc3Mgd2Vha25lc3Mt bGlzdCBleHByIC4uLikKKyAgICAgKGxldCBsb29wICgod2Vha25lc3MtbGlzdCogd2Vha25lc3Mt bGlzdCkpCisgICAgICAgKG9yIChudWxsPyB3ZWFrbmVzcy1saXN0KikKKyAgICAgICAgICAgKGFu ZCAobGV0ICgod2Vha25lc3MgKGNhciB3ZWFrbmVzcy1saXN0KikpKQorICAgICAgICAgICAgICAg ICAgZXhwciAuLi4pCisgICAgICAgICAgICAgICAgKGxvb3AgKGNkciB3ZWFrbmVzcy1saXN0Kikp KSkpKSkpCisKKyhkZWZpbmUgKHRlc3Qtc3RyLXdlYWtuZXNzIHN0ciB3ZWFrbmVzcykKKyAgKGlm IChub3Qgd2Vha25lc3MpIHN0ciAoZm9ybWF0ICNmICJ+YSAod2VhazogfmEpIiBzdHIgd2Vha25l c3MpKSkKKwogKHdpdGgtdGVzdC1wcmVmaXggIlNSRkktNjkiCiAKLSAgKHBhc3MtaWYgInNtYWxs IGFsaXN0PC0+aGFzaCB0YWJsZXMgcm91bmQtdHJpcCIKLSAgICAobGV0KiAoKHN0YXJ0LWFsaXN0 ICcoKGEgLiAxKSAoYiAuIDIpIChjIC4gMykgKGEgLiA0MikpKQotCSAgIChodCAoYWxpc3QtPmhh c2gtdGFibGUgc3RhcnQtYWxpc3QgZXE/KSkKLQkgICAoZW5kLWFsaXN0IChoYXNoLXRhYmxlLT5h bGlzdCBodCkpKQotICAgICAgKGFuZCAoPSAzIChoYXNoLXRhYmxlLXNpemUgaHQpKQotCSAgIChs c2V0PSBlcXVhbD8gZW5kLWFsaXN0ICh0YWtlIHN0YXJ0LWFsaXN0IDMpKQotCSAgICg9IDEgKGhh c2gtdGFibGUtcmVmIGh0ICdhKSkKLQkgICAoPSAyIChoYXNoLXRhYmxlLXJlZiBodCAnYikpCi0J ICAgKD0gMyAoaGFzaC10YWJsZS1yZWYgaHQgJ2MpKSkpKQotCi0gIChwYXNzLWlmICJzdHJpbmct Y2k9PyB0YWJsZXMgd29yayBieSBkZWZhdWx0IgotICAgIChsZXQgKChodCAoYWxpc3QtPmhhc2gt dGFibGUgJygoInhZIiAuIDIpICgiYWJjIiAuIDU0KSkgc3RyaW5nLWNpPT8pKSkKLSAgICAgICho YXNoLXRhYmxlLXNldCEgaHQgIlhZIiA0MikKLSAgICAgIChoYXNoLXRhYmxlLXNldCEgaHQgInFx cSIgMTAwKQotICAgICAgKGFuZCAoPSA1NCAoaGFzaC10YWJsZS1yZWYgaHQgIkFCYyIpKQotCSAg ICg9IDQyIChoYXNoLXRhYmxlLXJlZiBodCAieHkiKSkKLQkgICAoPSAzIChoYXNoLXRhYmxlLXNp emUgaHQpKQotCSAgIChsc2V0PSBzdHJpbmctY2ktYXNzb2MtZXF1YWw/Ci0JCSAgJygoInh5IiAu IDQyKSAoImFiYyIgLiA1NCkgKCJxcXEiIC4gMTAwKSkKLQkJICAoaGFzaC10YWJsZS0+YWxpc3Qg aHQpKSkpKQorICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChsaXN0ICNmICdrZXkgJ3Zh bHVlICdrZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJzbWFs bCBhbGlzdDwtPmhhc2ggdGFibGVzIHJvdW5kLXRyaXAiIHdlYWtuZXNzKQorICAgICAgKGxldCog KChzdGFydC1hbGlzdCAnKChhIC4gMSkgKGIgLiAyKSAoYyAuIDMpIChhIC4gNDIpKSkKKyAgICAg ICAgICAgICAoaHQgKGFsaXN0LT5oYXNoLXRhYmxlIHN0YXJ0LWFsaXN0IGVxPyAjOndlYWsgd2Vh a25lc3MpKQorICAgICAgICAgICAgIChlbmQtYWxpc3QgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkp CisgICAgICAgIChhbmQgKD0gMyAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgICAgICAo bHNldD0gZXF1YWw/IGVuZC1hbGlzdCAodGFrZSBzdGFydC1hbGlzdCAzKSkKKyAgICAgICAgICAg ICAoPSAxIChoYXNoLXRhYmxlLXJlZiBodCAnYSkpCisgICAgICAgICAgICAgKD0gMiAoaGFzaC10 YWJsZS1yZWYgaHQgJ2IpKQorICAgICAgICAgICAgICg9IDMgKGhhc2gtdGFibGUtcmVmIGh0ICdj KSkpKSkpCisKKyAgKHdpdGgtd2Vha25lc3MtbGlzdCB3ZWFrbmVzcyAobGlzdCAjZiAna2V5ICd2 YWx1ZSAna2V5LW9yLXZhbHVlKQorICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAic3Ry aW5nLWNpPT8gdGFibGVzIHdvcmsgYnkgZGVmYXVsdCIgd2Vha25lc3MpCisgICAgICAobGV0ICgo aHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKCJ4WSIgLiAyKSAoImFiYyIgLiA1NCkpIHN0cmluZy1j aT0/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6d2VhayB3ZWFrbmVzcykp KQorICAgICAgICAoaGFzaC10YWJsZS1zZXQhIGh0ICJYWSIgNDIpCisgICAgICAgIChoYXNoLXRh YmxlLXNldCEgaHQgInFxcSIgMTAwKQorICAgICAgICAoYW5kICg9IDU0IChoYXNoLXRhYmxlLXJl ZiBodCAiQUJjIikpCisgICAgICAgICAgICAgKD0gNDIgKGhhc2gtdGFibGUtcmVmIGh0ICJ4eSIp KQorICAgICAgICAgICAgICg9IDMgKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAgICAg KGxzZXQ9IHN0cmluZy1jaS1hc3NvYy1lcXVhbD8KKyAgICAgICAgICAgICAgICAgICAgJygoInh5 IiAuIDQyKSAoImFiYyIgLiA1NCkgKCJxcXEiIC4gMTAwKSkKKyAgICAgICAgICAgICAgICAgICAg KGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkpCiAKICAgKHBhc3MtaWYtZXhjZXB0aW9uICJCYWQg d2Vha25lc3MgYXJnIHRvIG1odCBzaWduYWxzIGFuIGVycm9yIgotCQkgICAgICcobWlzYy1lcnJv ciAuICJeSW52YWxpZCB3ZWFrIGhhc2ggdGFibGUgdHlwZSIpCisgICAgICAnKG1pc2MtZXJyb3Ig LiAiXkludmFsaWQgd2VhayBoYXNoIHRhYmxlIHR5cGUiKQogICAgIChtYWtlLWhhc2gtdGFibGUg ZXF1YWw/IGhhc2ggIzp3ZWFrICdrZXktYW5kLXZhbHVlKSkKIAotICAocGFzcy1pZiAiZW1wdHkg aGFzaCB0YWJsZXMgYXJlIGVtcHR5IgotICAgIChudWxsPyAoaGFzaC10YWJsZS0+YWxpc3QgKG1h a2UtaGFzaC10YWJsZSBlcT8pKSkpCi0KLSAgKHBhc3MtaWYgImhhc2gtdGFibGUtcmVmIHVzZXMg ZGVmYXVsdCIKLSAgICAoZXF1YWw/ICcoNCkKLQkgICAgKGhhc2gtdGFibGUtcmVmIChhbGlzdC0+ aGFzaC10YWJsZSAnKChhIC4gMSkpIGVxPykKLQkJCSAgICAnYiAoY3V0IGxpc3QgKCsgMiAyKSkp KSkKLQotICAocGFzcy1pZiAiaGFzaC10YWJsZS1kZWxldGUhIGRlbGV0ZXMgcHJlc2VudCBhc3Nv Y3MsIGlnbm9yZXMgb3RoZXJzIgotICAgIChsZXQgKChodCAoYWxpc3QtPmhhc2gtdGFibGUgJygo YSAuIDEpIChiIC4gMikpIGVxPykpKQotICAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodCAnYykK LSAgICAgIChhbmQgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0KSkKLQkgICAoYmVnaW4KLQkgICAg IChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQgJ2EpCi0JICAgICAoPSAxIChoYXNoLXRhYmxlLXNpemUg aHQpKSkKLQkgICAobHNldD0gZXF1YWw/ICcoKGIgLiAyKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0 KSkpKSkKLQotICAocGFzcy1pZiAiYWxpc3QtPmhhc2gtdGFibGUgZG9lcyBub3QgcmVxdWlyZSBs aW5lYXIgc3RhY2sgc3BhY2UiCi0gICAgKGVxdj8gOTk5OTkKLQkgIChoYXNoLXRhYmxlLXJlZiAo YWxpc3QtPmhhc2gtdGFibGUKLQkJCSAgICh1bmZvbGQtcmlnaHQgKGN1dCA+PSA8PiAxMDAwMDAp Ci0JCQkJCSAobGFtYmRhIChzKSBgKHggLiAscykpIDErIDApCi0JCQkgICBlcT8pCi0JCQkgICd4 KSkpCi0KLSAgKHBhc3MtaWYgImhhc2gtdGFibGUtd2FsayBpZ25vcmVzIHJldHVybiB2YWx1ZXMi Ci0gICAgKGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSAoYyAu IDMpKSBlcT8pKSkKLSAgICAgIChmb3ItZWFjaCAoY3V0IGhhc2gtdGFibGUtd2FsayBodCA8PikK LQkJKGxpc3QgKGxhbWJkYSAoayB2KSAodmFsdWVzKSkKLQkJICAgICAgKGxhbWJkYSAoayB2KSAo dmFsdWVzIDEgMiAzKSkpKQotICAgICAgI3QpKQotCi0gIChwYXNzLWlmICJoYXNoLXRhYmxlLXVw ZGF0ZSEgbW9kaWZpZXMgZXhpc3RpbmcgYmluZGluZyIKLSAgICAobGV0ICgoaHQgKGFsaXN0LT5o YXNoLXRhYmxlICcoKGEgLiAxKSkgZXE/KSkpCi0gICAgICAoaGFzaC10YWJsZS11cGRhdGUhIGh0 ICdhIDErKQotICAgICAgKGhhc2gtdGFibGUtdXBkYXRlISBodCAnYSAoY3V0ICsgNCA8PikgKGxh bWJkYSAoKSA0MikpCi0gICAgICAoYW5kICg9IDEgKGhhc2gtdGFibGUtc2l6ZSBodCkpCi0JICAg KGxzZXQ9IGVxdWFsPyAnKChhIC4gNikpIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkpCi0KLSAg KHBhc3MtaWYgImhhc2gtdGFibGUtdXBkYXRlISBjcmVhdGVzIG5ldyBiaW5kaW5nIHdoZW4gYXBw cm9wcmlhdGUiCi0gICAgKGxldCAoKGh0IChtYWtlLWhhc2gtdGFibGUgZXE/KSkpCi0gICAgICAo aGFzaC10YWJsZS11cGRhdGUhIGh0ICdiIDErIChsYW1iZGEgKCkgNDIpKQotICAgICAgKGhhc2gt dGFibGUtdXBkYXRlISBodCAnYiAoY3V0ICsgMTAgPD4pKQotICAgICAgKGFuZCAoPSAxIChoYXNo LXRhYmxlLXNpemUgaHQpKQotCSAgIChsc2V0PSBlcXVhbD8gJygoYiAuIDUzKSkgKGhhc2gtdGFi bGUtPmFsaXN0IGh0KSkpKSkKKyAgKHdpdGgtd2Vha25lc3MtbGlzdCB3ZWFrbmVzcyAobGlzdCAj ZiAna2V5ICd2YWx1ZSAna2V5LW9yLXZhbHVlKQorICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFr bmVzcyAiZW1wdHkgaGFzaCB0YWJsZXMgYXJlIGVtcHR5IiB3ZWFrbmVzcykKKyAgICAgIChudWxs PyAoaGFzaC10YWJsZS0+YWxpc3QgKG1ha2UtaGFzaC10YWJsZSBlcT8gIzp3ZWFrIHdlYWtuZXNz KSkpKSkKKworICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChsaXN0ICNmICdrZXkgJ3Zh bHVlICdrZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNo LXRhYmxlLXJlZiB1c2VzIGRlZmF1bHQiIHdlYWtuZXNzKQorICAgICAgKGVxdWFsPyAnKDQpCisg ICAgICAgICAgICAgIChoYXNoLXRhYmxlLXJlZiAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAuIDEp KSBlcT8gIzp3ZWFrIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Ig KGN1dCBsaXN0ICgrIDIgMikpKSkpKQorCisgICh3aXRoLXdlYWtuZXNzLWxpc3Qgd2Vha25lc3Mg KGxpc3QgI2YgJ2tleSAndmFsdWUgJ2tleS1vci12YWx1ZSkKKyAgICAocGFzcy1pZiAodGVzdC1z dHItd2Vha25lc3MgImhhc2gtdGFibGUtZGVsZXRlISBkZWxldGVzIHByZXNlbnQgYXNzb2NzLCBp Z25vcmVzIG90aGVycyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha25lc3Mp CisgICAgICAobGV0ICgoaHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAoYiAuIDIpKSBl cT8gIzp3ZWFrIHdlYWtuZXNzKSkpCisgICAgICAgIChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQgJ2Mp CisgICAgICAgIChhbmQgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgICAgICAo YmVnaW4KKyAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQgJ2EpCisgICAgICAg ICAgICAgICAoPSAxIChoYXNoLXRhYmxlLXNpemUgaHQpKSkKKyAgICAgICAgICAgICAobHNldD0g ZXF1YWw/ICcoKGIgLiAyKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkpCisKKyAgKHdpdGgt d2Vha25lc3MtbGlzdCB3ZWFrbmVzcyAobGlzdCAjZiAna2V5ICd2YWx1ZSAna2V5LW9yLXZhbHVl KQorICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiYWxpc3QtPmhhc2gtdGFibGUgZG9l cyBub3QgcmVxdWlyZSBsaW5lYXIgc3RhY2sgc3BhY2UiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHdlYWtuZXNzKQorICAgICAgKGVxdj8gOTk5OTkKKyAgICAgICAgICAgIChoYXNo LXRhYmxlLXJlZiAoYWxpc3QtPmhhc2gtdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHVuZm9sZC1yaWdodCAoY3V0ID49IDw+IDEwMDAwMCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChzKSBgKHggLiAscykpIDErIDApCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVxPworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjOndlYWsgd2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gpKSkpCisK KyAgKHdpdGgtd2Vha25lc3MtbGlzdCB3ZWFrbmVzcyAobGlzdCAjZiAna2V5ICd2YWx1ZSAna2V5 LW9yLXZhbHVlKQorICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS13 YWxrIGlnbm9yZXMgcmV0dXJuIHZhbHVlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgd2Vha25lc3MpCisgICAgICAobGV0ICgoaHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAx KSAoYiAuIDIpIChjIC4gMykpIGVxPykpKQorICAgICAgICAoZm9yLWVhY2ggKGN1dCBoYXNoLXRh YmxlLXdhbGsgaHQgPD4pCisgICAgICAgICAgICAgICAgICAobGlzdCAobGFtYmRhIChrIHYpICh2 YWx1ZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoayB2KSAodmFsdWVzIDEg MiAzKSkpKQorICAgICAgICAjdCkpKQorCisgICh3aXRoLXdlYWtuZXNzLWxpc3Qgd2Vha25lc3Mg KGxpc3QgI2YgJ2tleSAndmFsdWUgJ2tleS1vci12YWx1ZSkKKyAgICAocGFzcy1pZiAodGVzdC1z dHItd2Vha25lc3MgImhhc2gtdGFibGUtdXBkYXRlISBtb2RpZmllcyBleGlzdGluZyBiaW5kaW5n IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrbmVzcykKKyAgICAgIChsZXQg KChodCAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAuIDEpKSBlcT8gIzp3ZWFrIHdlYWtuZXNzKSkp CisgICAgICAgIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQgJ2EgMSspCisgICAgICAgIChoYXNoLXRh YmxlLXVwZGF0ZSEgaHQgJ2EgKGN1dCArIDQgPD4pIChsYW1iZGEgKCkgNDIpKQorICAgICAgICAo YW5kICg9IDEgKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFs PyAnKChhIC4gNikpIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkpKQorCisgICh3aXRoLXdlYWtu ZXNzLWxpc3Qgd2Vha25lc3MgKGxpc3QgI2YgJ2tleSAndmFsdWUgJ2tleS1vci12YWx1ZSkKKyAg ICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtdXBkYXRlISBjcmVhdGVz IG5ldyBiaW5kaW5nIHdoZW4gYXBwcm9wcmlhdGUiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0IChtYWtlLWhhc2gtdGFibGUgZXE/ICM6 d2VhayB3ZWFrbmVzcykpKQorICAgICAgICAoaGFzaC10YWJsZS11cGRhdGUhIGh0ICdiIDErIChs YW1iZGEgKCkgNDIpKQorICAgICAgICAoaGFzaC10YWJsZS11cGRhdGUhIGh0ICdiIChjdXQgKyAx MCA8PikpCisgICAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAg ICAgICAobHNldD0gZXF1YWw/ICcoKGIgLiA1MykpIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkp KQorCisgICh3aXRoLXdlYWtuZXNzLWxpc3Qgd2Vha25lc3MgKGxpc3QgI2YgJ2tleSAndmFsdWUg J2tleS1vci12YWx1ZSkKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFi bGUtbWVyZ2UhIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2Vha25lc3MpCisgICAgICAobGV0KiAoKGh0MSAoYWxpc3QtPmhhc2gtdGFibGUgJygo YSAuIDEpIChiIC4gMikpIGVxPyAjOndlYWsgd2Vha25lc3MpKQorICAgICAgICAgICAgIChodDIg KGFsaXN0LT5oYXNoLXRhYmxlICcoKGIgLiAzKSAoYyAuIDQpKSBlcT8gIzp3ZWFrIHdlYWtuZXNz KSkpCisgICAgICAgIChzZXQhIGh0MSAoaGFzaC10YWJsZS1tZXJnZSEgaHQxIGh0MikpCisgICAg ICAgIChhbmQgKD0gMyAoaGFzaC10YWJsZS1zaXplIGh0MSkpCisgICAgICAgICAgICAgKD0gMiAo aGFzaC10YWJsZS1zaXplIGh0MikpCisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFsPyAnKChhIC4g MSkgKGIgLiAzKSAoYyAuIDQpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQxKSkKKyAgICAgICAgICAg ICAobHNldD0gZXF1YWw/ICcoKGIgLiAzKSAoYyAuIDQpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQy KSkpKSkpCiAKICAgKHBhc3MtaWYgImNhbiB1c2UgYWxsIGFyZ3VtZW50cywgaW5jbHVkaW5nIHNp emUiCiAgICAgKGhhc2gtdGFibGU/IChtYWtlLWhhc2gtdGFibGUgZXF1YWw/IGhhc2ggIzp3ZWFr ICdrZXkgMzEpKSkKIAotKQorICApCi0tIAoyLjE5LjEKCg== --000000000000b6a39d057efb700b Content-Type: text/x-patch; charset="US-ASCII"; name="0004-Reimplemented-RNRS-HASHTABLES-using-GENERIC-HASH-TAB.patch" Content-Disposition: attachment; filename="0004-Reimplemented-RNRS-HASHTABLES-using-GENERIC-HASH-TAB.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqofmioc3> X-Attachment-Id: f_jqofmioc3 RnJvbSBiOWU0ZWJmZWViOGQ5YjE2YTExZWZmYmU0OWY0YTdlODI2ODQ0ZGI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDggSmFuIDIwMTkgMjI6MDY6MTAg LTAyMDAKU3ViamVjdDogW1BBVENIIDQvNV0gUmVpbXBsZW1lbnRlZCAoUk5SUyBIQVNIVEFCTEVT KSB1c2luZyBHRU5FUklDLUhBU0gtVEFCTEVTCgotLS0KIG1vZHVsZS9ybnJzL2hhc2h0YWJsZXMu c2NtIHwgMjEyICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCAxMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bW9kdWxlL3JucnMvaGFzaHRhYmxlcy5zY20gYi9tb2R1bGUvcm5ycy9oYXNodGFibGVzLnNjbQpp bmRleCA0ODY0NTJhMmEuLmZkMjdjNTRjNiAxMDA2NDQKLS0tIGEvbW9kdWxlL3JucnMvaGFzaHRh Ymxlcy5zY20KKysrIGIvbW9kdWxlL3JucnMvaGFzaHRhYmxlcy5zY20KQEAgLTQzLDE0NyArNDMs ODUgQEAKIAkgIHN0cmluZy1jaS1oYXNoCiAJICBzeW1ib2wtaGFzaCkKICAgKGltcG9ydCAocmVu YW1lIChvbmx5IChndWlsZSkgc3RyaW5nLWhhc2gtY2kgCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cmluZy1oYXNoIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo YXNocSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHYKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbW9kdWxvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICp1bnNwZWNpZmllZCoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQEApCisg ICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmctaGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgaGFzaHEKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h2CisgICAgICAgICAgICAgICAg ICAgICAgICBtb2R1bG8KKyAgICAgICAgICAgICAgICAgICAgICAgICp1bnNwZWNpZmllZCopCiAJ CSAgKHN0cmluZy1oYXNoLWNpIHN0cmluZy1jaS1oYXNoKSkKIAkgIChvbmx5IChpY2UtOSBvcHRh cmdzKSBkZWZpbmUqKQotCSAgKHJlbmFtZSAob25seSAoc3JmaSA6NjkpIG1ha2UtaGFzaC10YWJs ZQotCQkJICAgICAgICAgICBoYXNoCi0JCQkJICAgaGFzaC1ieS1pZGVudGl0eQotCQkJICAgICAg ICAgICBoYXNoLXRhYmxlLXNpemUKLQkJCQkgICBoYXNoLXRhYmxlLXJlZi9kZWZhdWx0Ci0JCQkJ ICAgaGFzaC10YWJsZS1zZXQhCi0JCQkJICAgaGFzaC10YWJsZS1kZWxldGUhCi0JCQkJICAgaGFz aC10YWJsZS1leGlzdHM/Ci0JCQkJICAgaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1bHQKLQkJCQkg ICBoYXNoLXRhYmxlLWNvcHkKLQkJCQkgICBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9u Ci0JCQkJICAgaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uCi0JCQkJICAgaGFzaC10YWJsZS1rZXlz Ci0JCQkJICAgaGFzaC10YWJsZS1mb2xkKQotCQkgIChoYXNoIGVxdWFsLWhhc2gpCi0JCSAgKGhh c2gtYnktaWRlbnRpdHkgc3ltYm9sLWhhc2gpKQotICAgICAgICAgIChvbmx5IChpY2UtOSBnZW5l cmljLWhhc2gtdGFibGVzKSBoYXNoLWJ5LXZhbHVlKQorCSAgKHJlbmFtZSAob25seSAoaWNlLTkg Z2VuZXJpYy1oYXNoLXRhYmxlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2UtaGFzaC10 YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC10YWJsZT8KKyAgICAgICAgICAgICAg ICAgICAgICAgIGhhc2gtdGFibGUtbXV0YWJsZT8KKyAgICAgICAgICAgICAgICAgICAgICAgIGhh c2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2gtYnktaWRlbnRpdHkKKyAgICAgICAgICAg ICAgICAgICAgICAgIGhhc2gtYnktdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2gt dGFibGUtc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC10YWJsZS1yZWYvZGVmYXVs dAorICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC10YWJsZS1zZXQtc2luZ2xlIQorICAgICAg ICAgICAgICAgICAgICAgICAgaGFzaC10YWJsZS1kZWxldGUtc2luZ2xlIQorICAgICAgICAgICAg ICAgICAgICAgICAgaGFzaC10YWJsZS1jb250YWlucz8KKyAgICAgICAgICAgICAgICAgICAgICAg IGhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICBoYXNo LXRhYmxlLWNsZWFyIQorICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC10YWJsZS1jb3B5Cisg ICAgICAgICAgICAgICAgICAgICAgICBoYXNoLXRhYmxlLWVudHJ5LXZlY3RvcnMKKyAgICAgICAg ICAgICAgICAgICAgICAgIGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgIGhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbgorICAgICAgICAgICAgICAg ICAgICAgICAgaGFzaC10YWJsZS1rZXktdmVjdG9yKQorICAgICAgICAgICAgICAgICAgKG1ha2Ut aGFzaC10YWJsZSBnZW46bWFrZS1oYXNoLXRhYmxlKQorCQkgIChoYXNoIGVxdWFsLWhhc2gpKQor ICAgICAgICAgIChvbmx5IChzcmZpIHNyZmktNjkpIGhhc2gtdGFibGUtc2V0ISBoYXNoLXRhYmxl LWRlbGV0ZSEpCiAJICAocm5ycyBiYXNlICg2KSkKIAkgIChybnJzIHJlY29yZHMgcHJvY2VkdXJh bCAoNikpKQorCisgIChkZWZpbmUgaGFzaHRhYmxlPyBoYXNoLXRhYmxlPykKKworICAoZGVmaW5l IGhhc2h0YWJsZS1tdXRhYmxlPyBoYXNoLXRhYmxlLW11dGFibGU/KQorCisgIChkZWZpbmUgc3lt Ym9sLWhhc2ggaGFzaC1ieS1pZGVudGl0eSkKKworICAoZGVmaW5lKiAobWFrZS1lcS1oYXNodGFi bGUgIzpvcHRpb25hbCBjYXBhY2l0eSkKKyAgICAoaWYgY2FwYWNpdHkKKyAgICAgICAgKGdlbjpt YWtlLWhhc2gtdGFibGUgZXE/ICNmICM6Y2FwYWNpdHkgY2FwYWNpdHkpCisgICAgICAgIChnZW46 bWFrZS1oYXNoLXRhYmxlIGVxPyAjZikpKQorCisgIChkZWZpbmUqIChtYWtlLWVxdi1oYXNodGFi bGUgIzpvcHRpb25hbCBjYXBhY2l0eSkKKyAgICAoaWYgY2FwYWNpdHkKKyAgICAgICAgKGdlbjpt YWtlLWhhc2gtdGFibGUgZXF2PyAjZiAjOmNhcGFjaXR5IGNhcGFjaXR5KQorICAgICAgICAoZ2Vu Om1ha2UtaGFzaC10YWJsZSBlcXY/ICNmKSkpCisKKyAgKGRlZmluZSogKG1ha2UtaGFzaHRhYmxl IGhhc2gtZnVuY3Rpb24gZXF1aXYgIzpvcHRpb25hbCBjYXBhY2l0eSkKKyAgICAoaWYgY2FwYWNp dHkKKyAgICAgICAgKGdlbjptYWtlLWhhc2gtdGFibGUgZXF1aXYgaGFzaC1mdW5jdGlvbiAjOmNh cGFjaXR5IGNhcGFjaXR5KQorICAgICAgICAoZ2VuOm1ha2UtaGFzaC10YWJsZSBlcXVpdiBoYXNo LWZ1bmN0aW9uKSkpCiAgIAotICAoZGVmaW5lIHI2cnM6aGFzaHRhYmxlIAotICAgIChtYWtlLXJl Y29yZC10eXBlLWRlc2NyaXB0b3IgCi0gICAgICdyNnJzOmhhc2h0YWJsZSAjZiAjZiAjdCAjdCAK LSAgICAgJyMoKG11dGFibGUgd3JhcHBlZC10YWJsZSkKLSAgICAgICAgKGltbXV0YWJsZSBvcmln LWhhc2gtZnVuY3Rpb24pCi0gICAgICAgIChpbW11dGFibGUgbXV0YWJsZSkKLSAgICAgICAgKGlt bXV0YWJsZSB0eXBlKSkpKQotCi0gIChkZWZpbmUgaGFzaHRhYmxlPyAocmVjb3JkLXByZWRpY2F0 ZSByNnJzOmhhc2h0YWJsZSkpCi0gIChkZWZpbmUgbWFrZS1yNnJzLWhhc2h0YWJsZSAKLSAgICAo cmVjb3JkLWNvbnN0cnVjdG9yIChtYWtlLXJlY29yZC1jb25zdHJ1Y3Rvci1kZXNjcmlwdG9yIAot CQkJIHI2cnM6aGFzaHRhYmxlICNmICNmKSkpCi0gIChkZWZpbmUgcjZyczpoYXNodGFibGUtd3Jh cHBlZC10YWJsZSAocmVjb3JkLWFjY2Vzc29yIHI2cnM6aGFzaHRhYmxlIDApKQotICAoZGVmaW5l IHI2cnM6aGFzaHRhYmxlLXNldC13cmFwcGVkLXRhYmxlISAocmVjb3JkLW11dGF0b3IgcjZyczpo YXNodGFibGUgMCkpCi0gIChkZWZpbmUgcjZyczpoYXNodGFibGUtb3JpZy1oYXNoLWZ1bmN0aW9u IChyZWNvcmQtYWNjZXNzb3IgcjZyczpoYXNodGFibGUgMSkpCi0gIChkZWZpbmUgcjZyczpoYXNo dGFibGUtbXV0YWJsZT8gKHJlY29yZC1hY2Nlc3NvciByNnJzOmhhc2h0YWJsZSAyKSkKLSAgKGRl ZmluZSByNnJzOmhhc2h0YWJsZS10eXBlIChyZWNvcmQtYWNjZXNzb3IgcjZyczpoYXNodGFibGUg MykpCi0KLSAgKGRlZmluZSBoYXNodGFibGUtbXV0YWJsZT8gcjZyczpoYXNodGFibGUtbXV0YWJs ZT8pCi0KLSAgOzsgKGRlZmluZSBoYXNoLWJ5LXZhbHVlICgoQEAgKHNyZmkgc3JmaS02OSkgY2Fs bGVyLXdpdGgtZGVmYXVsdC1zaXplKSBoYXNodikpCi0gIDs7IChkZWZpbmUgKHdyYXAtaGFzaC1m dW5jdGlvbiBwcm9jKQotICA7OyAgIChsYW1iZGEgKGtleSBjYXBhY2l0eSkgKG1vZHVsbyAocHJv YyBrZXkpIGNhcGFjaXR5KSkpCi0KLSAgKGRlZmluZSogKG1ha2UtZXEtaGFzaHRhYmxlICM6b3B0 aW9uYWwgaykKLSAgICAobWFrZS1yNnJzLWhhc2h0YWJsZSAKLSAgICAgKGlmIGsgKG1ha2UtaGFz aC10YWJsZSBlcT8gaGFzaHEgaykgKG1ha2UtaGFzaC10YWJsZSBlcT8gc3ltYm9sLWhhc2gpKQot ICAgICBzeW1ib2wtaGFzaAotICAgICAjdAotICAgICAnZXEpKQotCi0gIChkZWZpbmUqIChtYWtl LWVxdi1oYXNodGFibGUgIzpvcHRpb25hbCBrKQotICAgIChtYWtlLXI2cnMtaGFzaHRhYmxlIAot ICAgICAoaWYgayAobWFrZS1oYXNoLXRhYmxlIGVxdj8gaGFzaHYgaykgKG1ha2UtaGFzaC10YWJs ZSBlcXY/IGhhc2gtYnktdmFsdWUpKQotICAgICBoYXNoLWJ5LXZhbHVlCi0gICAgICN0Ci0gICAg ICdlcXYpKQotCi0gIChkZWZpbmUqIChtYWtlLWhhc2h0YWJsZSBoYXNoLWZ1bmN0aW9uIGVxdWl2 ICM6b3B0aW9uYWwgaykKLSAgICAobWFrZS1yNnJzLWhhc2h0YWJsZQotICAgICAoaWYgawotICAg ICAgICAgKG1ha2UtaGFzaC10YWJsZSBlcXVpdiBoYXNoLWZ1bmN0aW9uIGspCi0gICAgICAgICAo bWFrZS1oYXNoLXRhYmxlIGVxdWl2IGhhc2gtZnVuY3Rpb24pKQotICAgICBoYXNoLWZ1bmN0aW9u Ci0gICAgICN0Ci0gICAgICdjdXN0b20pKQotIAotICAoZGVmaW5lIChoYXNodGFibGUtc2l6ZSBo YXNodGFibGUpCi0gICAgKGhhc2gtdGFibGUtc2l6ZSAocjZyczpoYXNodGFibGUtd3JhcHBlZC10 YWJsZSBoYXNodGFibGUpKSkKLQotICAoZGVmaW5lIChoYXNodGFibGUtcmVmIGhhc2h0YWJsZSBr ZXkgZGVmYXVsdCkKLSAgICAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCAKLSAgICAgKHI2cnM6aGFz aHRhYmxlLXdyYXBwZWQtdGFibGUgaGFzaHRhYmxlKSBrZXkgZGVmYXVsdCkpCi0KLSAgKGRlZmlu ZSAoaGFzaHRhYmxlLXNldCEgaGFzaHRhYmxlIGtleSBvYmopCi0gICAgKGlmIChyNnJzOmhhc2h0 YWJsZS1tdXRhYmxlPyBoYXNodGFibGUpCi0gICAgICAgIChoYXNoLXRhYmxlLXNldCEgKHI2cnM6 aGFzaHRhYmxlLXdyYXBwZWQtdGFibGUgaGFzaHRhYmxlKSBrZXkgb2JqKQotICAgICAgICAoYXNz ZXJ0aW9uLXZpb2xhdGlvbgotICAgICAgICAgJ2hhc2h0YWJsZS1zZXQhICJIYXNodGFibGUgaXMg aW1tdXRhYmxlLiIgaGFzaHRhYmxlKSkpCi0KLSAgKGRlZmluZSAoaGFzaHRhYmxlLWRlbGV0ZSEg aGFzaHRhYmxlIGtleSkKLSAgICAoaWYgKHI2cnM6aGFzaHRhYmxlLW11dGFibGU/IGhhc2h0YWJs ZSkKLQkoaGFzaC10YWJsZS1kZWxldGUhIChyNnJzOmhhc2h0YWJsZS13cmFwcGVkLXRhYmxlIGhh c2h0YWJsZSkga2V5KSkKLSAgICAqdW5zcGVjaWZpZWQqKQotCi0gIChkZWZpbmUgKGhhc2h0YWJs ZS1jb250YWlucz8gaGFzaHRhYmxlIGtleSkKLSAgICAoaGFzaC10YWJsZS1leGlzdHM/IChyNnJz Omhhc2h0YWJsZS13cmFwcGVkLXRhYmxlIGhhc2h0YWJsZSkga2V5KSkKLQotICAoZGVmaW5lICho YXNodGFibGUtdXBkYXRlISBoYXNodGFibGUga2V5IHByb2MgZGVmYXVsdCkKLSAgICAoaWYgKHI2 cnM6aGFzaHRhYmxlLW11dGFibGU/IGhhc2h0YWJsZSkKLQkoaGFzaC10YWJsZS11cGRhdGUhL2Rl ZmF1bHQgCi0JIChyNnJzOmhhc2h0YWJsZS13cmFwcGVkLXRhYmxlIGhhc2h0YWJsZSkga2V5IHBy b2MgZGVmYXVsdCkpCi0gICAgKnVuc3BlY2lmaWVkKikKLQotICAoZGVmaW5lKiAoaGFzaHRhYmxl LWNvcHkgaGFzaHRhYmxlICM6b3B0aW9uYWwgbXV0YWJsZSkKLSAgICAobWFrZS1yNnJzLWhhc2h0 YWJsZSAKLSAgICAgKGhhc2gtdGFibGUtY29weSAocjZyczpoYXNodGFibGUtd3JhcHBlZC10YWJs ZSBoYXNodGFibGUpKQotICAgICAocjZyczpoYXNodGFibGUtb3JpZy1oYXNoLWZ1bmN0aW9uIGhh c2h0YWJsZSkKLSAgICAgKGFuZCBtdXRhYmxlICN0KQotICAgICAocjZyczpoYXNodGFibGUtdHlw ZSBoYXNodGFibGUpKSkKLQotICAoZGVmaW5lKiAoaGFzaHRhYmxlLWNsZWFyISBoYXNodGFibGUg IzpvcHRpb25hbCBrKQotICAgIChpZiAocjZyczpoYXNodGFibGUtbXV0YWJsZT8gaGFzaHRhYmxl KQotCShsZXQqICgoaHQgKHI2cnM6aGFzaHRhYmxlLXdyYXBwZWQtdGFibGUgaGFzaHRhYmxlKSkK LQkgICAgICAgKGVxdWl2IChoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0KSkKLQkg ICAgICAgKGhhc2gtZnVuY3Rpb24gKHI2cnM6aGFzaHRhYmxlLW9yaWctaGFzaC1mdW5jdGlvbiBo YXNodGFibGUpKSkKLQkgIChyNnJzOmhhc2h0YWJsZS1zZXQtd3JhcHBlZC10YWJsZSEKLQkgICBo YXNodGFibGUKLQkgICAoaWYgayAKLQkgICAgICAgKG1ha2UtaGFzaC10YWJsZSBlcXVpdiBoYXNo LWZ1bmN0aW9uIGspCi0JICAgICAgIChtYWtlLWhhc2gtdGFibGUgZXF1aXYgaGFzaC1mdW5jdGlv bikpKSkpCi0gICAgKnVuc3BlY2lmaWVkKikKLQotICAoZGVmaW5lIChoYXNodGFibGUta2V5cyBo YXNodGFibGUpCi0gICAgKGxpc3QtPnZlY3RvciAoaGFzaC10YWJsZS1rZXlzIChyNnJzOmhhc2h0 YWJsZS13cmFwcGVkLXRhYmxlIGhhc2h0YWJsZSkpKSkKLQotICAoZGVmaW5lIChoYXNodGFibGUt ZW50cmllcyBoYXNodGFibGUpCi0gICAgKGxldCogKChodCAocjZyczpoYXNodGFibGUtd3JhcHBl ZC10YWJsZSBoYXNodGFibGUpKQotCSAgIChzaXplIChoYXNoLXRhYmxlLXNpemUgaHQpKQotCSAg IChrZXlzIChtYWtlLXZlY3RvciBzaXplKSkKLQkgICAodmFscyAobWFrZS12ZWN0b3Igc2l6ZSkp KQotICAgICAgKGhhc2gtdGFibGUtZm9sZCAocjZyczpoYXNodGFibGUtd3JhcHBlZC10YWJsZSBo YXNodGFibGUpCi0JCSAgICAgICAobGFtYmRhIChrIHYgaSkKLQkJCSAodmVjdG9yLXNldCEga2V5 cyBpIGspCi0JCQkgKHZlY3Rvci1zZXQhIHZhbHMgaSB2KQotCQkJICgrIGkgMSkpCi0JCSAgICAg ICAwKQotICAgICAgKHZhbHVlcyBrZXlzIHZhbHMpKSkKLQotICAoZGVmaW5lIChoYXNodGFibGUt ZXF1aXZhbGVuY2UtZnVuY3Rpb24gaGFzaHRhYmxlKQotICAgIChoYXNoLXRhYmxlLWVxdWl2YWxl bmNlLWZ1bmN0aW9uIChyNnJzOmhhc2h0YWJsZS13cmFwcGVkLXRhYmxlIGhhc2h0YWJsZSkpKQor ICAoZGVmaW5lIGhhc2h0YWJsZS1zaXplIGhhc2gtdGFibGUtc2l6ZSkKKworICAoZGVmaW5lIGhh c2h0YWJsZS1yZWYgaGFzaC10YWJsZS1yZWYvZGVmYXVsdCkKKworICAoZGVmaW5lIGhhc2h0YWJs ZS1zZXQhIGhhc2gtdGFibGUtc2V0ISkKKworICAoZGVmaW5lIGhhc2h0YWJsZS1kZWxldGUhIGhh c2gtdGFibGUtZGVsZXRlISkKKworICAoZGVmaW5lIGhhc2h0YWJsZS1jb250YWlucz8gaGFzaC10 YWJsZS1jb250YWlucz8pCisKKyAgKGRlZmluZSBoYXNodGFibGUtdXBkYXRlISBoYXNoLXRhYmxl LXVwZGF0ZSEvZGVmYXVsdCkKKworICAoZGVmaW5lKiAoaGFzaHRhYmxlLWNvcHkgaHQgIzpvcHRp b25hbCBtdXRhYmxlKQorICAgIChoYXNoLXRhYmxlLWNvcHkgaHQgIzptdXRhYmxlIG11dGFibGUp KQorCisgIChkZWZpbmUgaGFzaHRhYmxlLWNsZWFyISBoYXNoLXRhYmxlLWNsZWFyISkKKworICAo ZGVmaW5lIGhhc2h0YWJsZS1rZXlzIGhhc2gtdGFibGUta2V5LXZlY3RvcikKKworICAoZGVmaW5l IGhhc2h0YWJsZS1lbnRyaWVzIGhhc2gtdGFibGUtZW50cnktdmVjdG9ycykKKworICAoZGVmaW5l IGhhc2h0YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1 bmN0aW9uKQogCiAgIChkZWZpbmUgKGhhc2h0YWJsZS1oYXNoLWZ1bmN0aW9uIGhhc2h0YWJsZSkK LSAgICAoY2FzZSAocjZyczpoYXNodGFibGUtdHlwZSBoYXNodGFibGUpCi0gICAgICAoKGVxIGVx dikgI2YpCi0gICAgICAoZWxzZSAocjZyczpoYXNodGFibGUtb3JpZy1oYXNoLWZ1bmN0aW9uIGhh c2h0YWJsZSkpKSkpCisgICAgKGxldCAoKGhhc2gtZnVuY3Rpb24gKGhhc2gtdGFibGUtaGFzaC1m dW5jdGlvbiBoYXNodGFibGUpKSkKKyAgICAgIChjb25kICgob3IgKGVxPyBoYXNoLWJ5LWlkZW50 aXR5IGhhc2gtZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgIChlcT8gaGFzaC1ieS12YWx1ZSAg ICBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAjZikKKyAgICAgICAgICAgIChlbHNlIGhh c2gtZnVuY3Rpb24pKSkpKQotLSAKMi4xOS4xCgo= --000000000000b6a39d057efb700b Content-Type: text/x-patch; charset="US-ASCII"; name="0005-Implemented-SRFI-126-using-GENERIC-HASH-TABLES.patch" Content-Disposition: attachment; filename="0005-Implemented-SRFI-126-using-GENERIC-HASH-TABLES.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqofmiol4> X-Attachment-Id: f_jqofmiol4 RnJvbSA1NzVhMzMxNjkxNmZkZGRiYzMwYTQwNGYxOTAyNzdlMWI1YzBlNzFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDggSmFuIDIwMTkgMjI6MDc6MDIg LTAyMDAKU3ViamVjdDogW1BBVENIIDUvNV0gSW1wbGVtZW50ZWQgU1JGSS0xMjYgdXNpbmcgR0VO RVJJQy1IQVNILVRBQkxFUwoKLS0tCiBtb2R1bGUvTWFrZWZpbGUuYW0gICAgICAgICAgICAgfCAg IDEgKwogbW9kdWxlL3NyZmkvc3JmaS0xMjYuc2NtICAgICAgIHwgMjE1ICsrKysrKysrKysrKysr KysrKysrKwogdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbSAgICAgICAgIHwgICAxICsKIHRlc3Qtc3Vp dGUvdGVzdHMvc3JmaS0xMjYudGVzdCB8IDM0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNTYxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBtb2R1bGUvc3JmaS9zcmZpLTEyNi5zY20KIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0LXN1 aXRlL3Rlc3RzL3NyZmktMTI2LnRlc3QKCmRpZmYgLS1naXQgYS9tb2R1bGUvTWFrZWZpbGUuYW0g Yi9tb2R1bGUvTWFrZWZpbGUuYW0KaW5kZXggNmRiYTg3Y2U4Li42ZTczOWZlZDAgMTAwNjQ0Ci0t LSBhL21vZHVsZS9NYWtlZmlsZS5hbQorKysgYi9tb2R1bGUvTWFrZWZpbGUuYW0KQEAgLTI5NCw2 ICsyOTQsNyBAQCBTT1VSQ0VTID0JCQkJCVwKICAgc3JmaS9zcmZpLTg4LnNjbQkJCQlcCiAgIHNy Zmkvc3JmaS05OC5zY20JCQkJXAogICBzcmZpL3NyZmktMTExLnNjbQkJCQlcCisgIHNyZmkvc3Jm aS0xMjYuc2NtCQkJCVwKIAkJCQkJCVwKICAgc3RhdHByb2Yuc2NtCQkJCQlcCiAJCQkJCQlcCmRp ZmYgLS1naXQgYS9tb2R1bGUvc3JmaS9zcmZpLTEyNi5zY20gYi9tb2R1bGUvc3JmaS9zcmZpLTEy Ni5zY20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi43YTY1OTQ0MzQKLS0t IC9kZXYvbnVsbAorKysgYi9tb2R1bGUvc3JmaS9zcmZpLTEyNi5zY20KQEAgLTAsMCArMSwyMTUg QEAKKzs7OyBzcmZpLTY5LnNjbSAtLS0gQmFzaWMgaGFzaCB0YWJsZXMKKworOzsgCUNvcHlyaWdo dCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKzs7Cis7OyBUaGlzIGxp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCis7 OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCis7OyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIKKzs7IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7Cis7OyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQorOzsgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K Kzs7Cis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCis7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisM CisKKyhkZWZpbmUtbW9kdWxlIChzcmZpIHNyZmktMTI2KQorICAjOnVzZS1tb2R1bGUgKHNyZmkg c3JmaS0xKQorICAjOnVzZS1tb2R1bGUgKChpY2UtOSBnZW5lcmljLWhhc2gtdGFibGVzKSAjOnBy ZWZpeCBnZW46KQorICAjOnVzZS1tb2R1bGUgKChybnJzIGhhc2h0YWJsZXMpCisgICAgICAgICAg ICAgICAgIzpzZWxlY3QgKGhhc2h0YWJsZT8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGFz aHRhYmxlLWNvbnRhaW5zPyBoYXNodGFibGUtbXV0YWJsZT8KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgaGFzaHRhYmxlLXNldCEgaGFzaHRhYmxlLWRlbGV0ZSEgaGFzaHRhYmxlLWNsZWFyIQor ICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGUtc2l6ZQorICAgICAgICAgICAgICAg ICAgICAgICAgICBoYXNodGFibGUta2V5cyBoYXNodGFibGUtZW50cmllcworICAgICAgICAgICAg ICAgICAgICAgICAgICBoYXNodGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgaGFzaHRhYmxlLWhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgZXF1YWwtaGFzaCBzeW1ib2wtaGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJpbmctaGFzaCBzdHJpbmctY2ktaGFzaCkpCisgICM6cmUtZXhwb3J0IChoYXNodGFibGU/ CisgICAgICAgICAgICAgICBoYXNodGFibGUtY29udGFpbnM/IGhhc2h0YWJsZS1tdXRhYmxlPwor ICAgICAgICAgICAgICAgaGFzaHRhYmxlLXNldCEgaGFzaHRhYmxlLWRlbGV0ZSEgaGFzaHRhYmxl LWNsZWFyIQorICAgICAgICAgICAgICAgaGFzaHRhYmxlLXNpemUKKyAgICAgICAgICAgICAgIGhh c2h0YWJsZS1rZXlzIGhhc2h0YWJsZS1lbnRyaWVzCisgICAgICAgICAgICAgICBoYXNodGFibGUt ZXF1aXZhbGVuY2UtZnVuY3Rpb24KKyAgICAgICAgICAgICAgIGhhc2h0YWJsZS1oYXNoLWZ1bmN0 aW9uCisgICAgICAgICAgICAgICBlcXVhbC1oYXNoIHN5bWJvbC1oYXNoCisgICAgICAgICAgICAg ICBzdHJpbmctaGFzaCBzdHJpbmctY2ktaGFzaCkKKyAgIzpleHBvcnQgKG1ha2UtZXEtaGFzaHRh YmxlCisgICAgICAgICAgICBtYWtlLWVxdi1oYXNodGFibGUgbWFrZS1oYXNodGFibGUKKyAgICAg ICAgICAgIGFsaXN0LT5lcS1oYXNodGFibGUgYWxpc3QtPmVxdi1oYXNodGFibGUgYWxpc3QtPmhh c2h0YWJsZQorICAgICAgICAgICAgaGFzaHRhYmxlLXdlYWtuZXNzCisgICAgICAgICAgICBoYXNo dGFibGUtcmVmIGhhc2h0YWJsZS1sb29rdXAKKyAgICAgICAgICAgIGhhc2h0YWJsZS11cGRhdGUh IGhhc2h0YWJsZS1pbnRlcm4hCisgICAgICAgICAgICBoYXNodGFibGUtY29weSBoYXNodGFibGUt ZW1wdHktY29weQorICAgICAgICAgICAgaGFzaHRhYmxlLXZhbHVlcworICAgICAgICAgICAgaGFz aHRhYmxlLWtleS1saXN0IGhhc2h0YWJsZS12YWx1ZS1saXN0IGhhc2h0YWJsZS1lbnRyeS1saXN0 cworICAgICAgICAgICAgaGFzaHRhYmxlLXdhbGsgaGFzaHRhYmxlLXVwZGF0ZS1hbGwhCisgICAg ICAgICAgICBoYXNodGFibGUtcHJ1bmUhIGhhc2h0YWJsZS1tZXJnZSEgaGFzaHRhYmxlLXN1bQor ICAgICAgICAgICAgaGFzaHRhYmxlLW1hcC0+bHNldAorICAgICAgICAgICAgaGFzaHRhYmxlLWZp bmQgaGFzaHRhYmxlLWVtcHR5PworICAgICAgICAgICAgaGFzaHRhYmxlLXBvcCEKKyAgICAgICAg ICAgIGhhc2h0YWJsZS1pbmMhIGhhc2h0YWJsZS1kZWMhCisgICAgICAgICAgICBoYXNoLXNhbHQp KQorCisoY29uZC1leHBhbmQtcHJvdmlkZSAoY3VycmVudC1tb2R1bGUpICcoc3JmaS0xMjYpKQor CisoZGVmaW5lIGhhc2h0YWJsZT8gZ2VuOmhhc2gtdGFibGU/KQorCisoZGVmaW5lKiAobWFrZS1o YXNodGFibGUgaGFzaC1mdW5jdGlvbiBlcXVpdi1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAg ICAgICAgICM6b3B0aW9uYWwgY2FwYWNpdHkgd2Vha25lc3MpCisgICJDcmVhdGVzIGEgbmV3IGhh c2ggdGFibGUuIEVRVUlWLUZVTkNUSU9OIGlzIHVzZWQgYXMgdGhlIGNvbXBhcmlzb24KK2Z1bmN0 aW9uIGFuZCBIQVNILUZVTkNUSU9OLCBpZiBwcm92aWRlZCBhbmQgbm90IGZhbHNlLCBpcyB1c2Vk IGFzIHRoZQoraGFzaCBmdW5jdGlvbiwgb3RoZXJ3aXNlIGEgc3VpdGFibGUgaGFzaC1mdW5jdGlv biBmb3IgdGhlIGhhc2ggdGFibGUgaXMKK2d1ZXNzZWQgb3IsIGlmIG9uZSBjYW4ndCBiZSBndWVz c2VkLCBhbiBlcnJvciBpcyBzaWduYWxlZC4gV0VBS05FU1MKK3Nob3VsZCBiZSBlaXRoZXIgI2Ys IFdFQUstS0VZLCBXRUFLLVZBTFVFIG9yIFdFQUstS0VZLUFORC1WQUxVRS4KK0NBUEFDSVRZIGlz IHRoZSBtaW5pbWFsIG51bWJlciBvZiBidWNrZXRzIG9mIHRoZSBoYXNoIHRhYmxlLiIKKyAgKGdl bjptYWtlLWhhc2gtdGFibGUgZXF1aXYtZnVuY3Rpb24gKGlmIChwYWlyPyBoYXNoLWZ1bmN0aW9u KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBoYXNoLWZ1 bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC1m dW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIzpjYXBhY2l0eSAob3IgY2FwYWNpdHkg MSkKKyAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpCisKKyhkZWZp bmUqIChtYWtlLWVxLWhhc2h0YWJsZSAjOm9wdGlvbmFsIGNhcGFjaXR5IHdlYWtuZXNzKQorICAo Z2VuOm1ha2UtaGFzaC10YWJsZSBlcT8gZ2VuOmhhc2gtYnktaWRlbnRpdHkKKyAgICAgICAgICAg ICAgICAgICAgICAgIzpjYXBhY2l0eSAob3IgY2FwYWNpdHkgMSkKKyAgICAgICAgICAgICAgICAg ICAgICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpCisKKyhkZWZpbmUqIChtYWtlLWVxdi1oYXNodGFi bGUgIzpvcHRpb25hbCBjYXBhY2l0eSB3ZWFrbmVzcykKKyAgKGdlbjptYWtlLWhhc2gtdGFibGUg ZXF2PyBnZW46aGFzaC1ieS12YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAjOmNhcGFjaXR5 IChvciBjYXBhY2l0eSAxKQorICAgICAgICAgICAgICAgICAgICAgICAjOndlYWtuZXNzIHdlYWtu ZXNzKSkKKworKGRlZmluZSBhbGlzdC0+aGFzaHRhYmxlCisgIChjYXNlLWxhbWJkYQorICAgICgo aGFzaC1mdW5jdGlvbiBlcXVpdi1mdW5jdGlvbiBhbGlzdCkKKyAgICAgKGdlbjphbGlzdC0+aGFz aC10YWJsZSBhbGlzdCBlcXVpdi1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IChpZiAocGFpcj8gaGFzaC1mdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNhciBoYXNoLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo YXNoLWZ1bmN0aW9uKSkpCisgICAgKChoYXNoLWZ1bmN0aW9uIGVxdWl2LWZ1bmN0aW9uIGNhcGFj aXR5IGFsaXN0KQorICAgICAoZ2VuOmFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0IGVxdWl2LWZ1bmN0 aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChwYWlyPyBoYXNoLWZ1bmN0aW9u KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGhhc2gtZnVuY3Rpb24pCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2gtZnVuY3Rpb24pCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIzpjYXBhY2l0eSAob3IgY2FwYWNpdHkgMSkpKQorICAgICgoaGFz aC1mdW5jdGlvbiBlcXVpdi1mdW5jdGlvbiBjYXBhY2l0eSB3ZWFrbmVzcyBhbGlzdCkKKyAgICAg KGdlbjphbGlzdC0+aGFzaC10YWJsZSBhbGlzdCBlcXVpdi1mdW5jdGlvbgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChpZiAocGFpcj8gaGFzaC1mdW5jdGlvbikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNhciBoYXNoLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBoYXNoLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICM6Y2FwYWNpdHkgKG9yIGNhcGFjaXR5IDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg Izp3ZWFrbmVzcyB3ZWFrbmVzcykpKSkKKworKGRlZmluZSAoYWxpc3QtPmVxLWhhc2h0YWJsZSAu IGFyZ3MpCisgIChhcHBseSBhbGlzdC0+aGFzaHRhYmxlICNmIGVxPyBhcmdzKSkKKworKGRlZmlu ZSAoYWxpc3QtPmVxdi1oYXNodGFibGUgLiBhcmdzKQorICAoYXBwbHkgYWxpc3QtPmhhc2h0YWJs ZSAjZiBlcXY/IGFyZ3MpKQorCisoZGVmaW5lKiAoaGFzaHRhYmxlLXJlZiBodCBrZXkgIzpvcHRp b25hbCBkZWZhdWx0KQorICAoaWYgZGVmYXVsdAorICAgICAgKGdlbjpoYXNoLXRhYmxlLXJlZi9k ZWZhdWx0IGh0IGtleSBkZWZhdWx0KQorICAgICAgKGdlbjpoYXNoLXRhYmxlLXJlZiBodCBrZXkp KSkKKworOzsgKGRlZmluZSBoYXNodGFibGUtY29udGFpbnM/IHJucnM6aGFzaHRhYmxlLWNvbnRh aW5zPykKKzs7IChkZWZpbmUgaGFzaHRhYmxlLXNldCEgcm5yczpoYXNodGFibGUtc2V0ISkKKzs7 IChkZWZpbmUgaGFzaHRhYmxlLWRlbGV0ZSEgcm5yczpoYXNodGFibGUtZGVsZXRlISkKKworKGRl ZmluZSAoaGFzaHRhYmxlLWxvb2t1cCBoYXNodGFibGUga2V5KQorICAobGV0KiAoKGZvdW5kPyAj dCkKKyAgICAgICAgICh2YWx1ZSAoZ2VuOmhhc2gtdGFibGUtcmVmIGhhc2h0YWJsZSBrZXkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKHNldCEgZm91bmQ/ ICNmKSAjZikpKSkKKyAgICAodmFsdWVzIHZhbHVlIGZvdW5kPykpKQorCisoZGVmaW5lKiAoaGFz aHRhYmxlLXVwZGF0ZSEgaHQga2V5IG1vZGlmaWVyICM6b3B0aW9uYWwgZGVmYXVsdCkKKyAgKGlm IGRlZmF1bHQKKyAgICAgIChnZW46aGFzaC10YWJsZS11cGRhdGUhL2RlZmF1bHQgaHQga2V5IG1v ZGlmaWVyIGRlZmF1bHQpCisgICAgICAoZ2VuOmhhc2gtdGFibGUtdXBkYXRlISBodCBrZXkgbW9k aWZpZXIpKSkKKworKGRlZmluZSBoYXNodGFibGUtaW50ZXJuISBnZW46aGFzaC10YWJsZS1pbnRl cm4hKQorCisoZGVmaW5lKiAoaGFzaHRhYmxlLWNvcHkgaGFzaHRhYmxlICM6b3B0aW9uYWwgbXV0 YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICh3ZWFrbmVzcyAoaGFzaHRhYmxlLXdlYWtu ZXNzIGhhc2h0YWJsZSkpKQorICAoZ2VuOmhhc2gtdGFibGUtY29weSBoYXNodGFibGUgIzptdXRh YmxlIG11dGFibGUgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpCisKKzs7IChkZWZpbmUgaGFzaHRhYmxl LWNsZWFyISBybnJzOmhhc2h0YWJsZS1jbGVhciEpCisKKyhkZWZpbmUqIChoYXNodGFibGUtZW1w dHktY29weSBoYXNodGFibGUgIzpvcHRpb25hbCBjYXBhY2l0eQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh3ZWFrbmVzcyAoaGFzaHRhYmxlLXdlYWtuZXNzIGhhc2h0YWJsZSkpKQor ICAobGV0ICgoY2FwYWNpdHkgKGNhc2UgY2FwYWNpdHkKKyAgICAgICAgICAgICAgICAgICAgKCgj ZikgMSkKKyAgICAgICAgICAgICAgICAgICAgKCgjdCkgKGhhc2h0YWJsZS1zaXplIGhhc2h0YWJs ZSkpCisgICAgICAgICAgICAgICAgICAgIChlbHNlIGNhcGFjaXR5KSkpKQorICAgIChnZW46aGFz aC10YWJsZS1lbXB0eS1jb3B5IGhhc2h0YWJsZSAjOmNhcGFjaXR5IGNhcGFjaXR5ICM6d2Vha25l c3Mgd2Vha25lc3MpKSkKKworDAorOzs7OyBBY2Nlc3Npbmcgd2hvbGUgdGFibGVzCisKKzs7IChk ZWZpbmUgaGFzaHRhYmxlLXNpemUgcm5yczpoYXNodGFibGUtc2l6ZSkKKzs7IChkZWZpbmUgaGFz aHRhYmxlLWtleXMgZ2VuOmhhc2gtdGFibGUta2V5LXZlY3RvcikKKyhkZWZpbmUgaGFzaHRhYmxl LXZhbHVlcyBnZW46aGFzaC10YWJsZS12YWx1ZS12ZWN0b3IpCis7OyAoZGVmaW5lIGhhc2h0YWJs ZS1lbnRyaWVzIHJucnM6aGFzaHRhYmxlLWVudHJpZXMpCisoZGVmaW5lIGhhc2h0YWJsZS1rZXkt bGlzdCBnZW46aGFzaC10YWJsZS1rZXlzKQorKGRlZmluZSBoYXNodGFibGUtdmFsdWUtbGlzdCBn ZW46aGFzaC10YWJsZS12YWx1ZXMpCisoZGVmaW5lIGhhc2h0YWJsZS1lbnRyeS1saXN0cyBnZW46 aGFzaC10YWJsZS1lbnRyaWVzKQorKGRlZmluZSBoYXNodGFibGUtPmFsaXN0IGdlbjpoYXNoLXRh YmxlLT5hbGlzdCkKKworKGRlZmluZSAoaGFzaHRhYmxlLXdhbGsgaGFzaHRhYmxlIHByb2MpCisg IChnZW46aGFzaC10YWJsZS1mb3ItZWFjaCBwcm9jIGhhc2h0YWJsZSkpCisKKyhkZWZpbmUgKGhh c2h0YWJsZS11cGRhdGUtYWxsISBoYXNodGFibGUgcHJvYykKKyAgKGdlbjpoYXNoLXRhYmxlLW1h cCEgcHJvYyBoYXNodGFibGUpKQorCisoZGVmaW5lIChoYXNodGFibGUtcHJ1bmUhIGhhc2h0YWJs ZSBwcm9jKQorICAoZ2VuOmhhc2gtdGFibGUtcHJ1bmUhIHByb2MgaGFzaHRhYmxlKSkKKworKGRl ZmluZSAoaGFzaHRhYmxlLXN1bSBoYXNodGFibGUgaW5pdCBwcm9jKQorICAoZ2VuOmhhc2gtdGFi bGUtZm9sZCBwcm9jIGluaXQgaGFzaHRhYmxlKSkKKworKGRlZmluZSAoaGFzaHRhYmxlLW1lcmdl ISBodCBvdGhlci1odCkKKyAgKGdlbjpoYXNoLXRhYmxlLWZvci1lYWNoIChsYW1iZGEgKGsgdikg KGhhc2h0YWJsZS1zZXQhIGh0IGsgdikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhl ci1odCkKKyAgaHQpCisKKyhkZWZpbmUgKGhhc2h0YWJsZS1tYXAtPmxzZXQgaGFzaHRhYmxlIHBy b2MpCisgIChnZW46aGFzaC10YWJsZS1tYXAtPmxpc3QgcHJvYyBoYXNodGFibGUpKQorCisoZGVm aW5lIChoYXNodGFibGUtZmluZCBoYXNodGFibGUgcHJvYykKKyAgKGNhbGwvY2MgKGxhbWJkYSAo cmV0dXJuKQorICAgICAgICAgICAgIChnZW46aGFzaC10YWJsZS1mb3ItZWFjaCAobGFtYmRhIChr IHYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKHByb2Mg ayB2KSAocmV0dXJuIGsgdiAjdCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBoYXNodGFibGUpCisgICAgICAgICAgICAgKHZhbHVlcyAqdW5zcGVjaWZpZWQqICp1bnNw ZWNpZmllZCogI2YpKSkpCisKKyhkZWZpbmUgaGFzaHRhYmxlLWVtcHR5PyBnZW46aGFzaC10YWJs ZS1lbXB0eT8pCisoZGVmaW5lIGhhc2h0YWJsZS1wb3AhIGdlbjpoYXNoLXRhYmxlLXBvcCEpCisK KyhkZWZpbmUqIChoYXNodGFibGUtaW5jISBoYXNodGFibGUga2V5ICM6b3B0aW9uYWwgKG51bWJl ciAxKSkKKyAgKGhhc2h0YWJsZS11cGRhdGUhIGhhc2h0YWJsZSBrZXkgKGxhbWJkYSAodikgKCsg diBudW1iZXIpKSAwKSkKKworKGRlZmluZSogKGhhc2h0YWJsZS1kZWMhIGhhc2h0YWJsZSBrZXkg IzpvcHRpb25hbCAobnVtYmVyIDEpKQorICAoaGFzaHRhYmxlLXVwZGF0ZSEgaGFzaHRhYmxlIGtl eSAobGFtYmRhICh2KSAoLSB2IG51bWJlcikpIDApKQorCisoZGVmaW5lIGhhc2h0YWJsZS13ZWFr bmVzcyBnZW46aGFzaC10YWJsZS13ZWFrbmVzcykKKzs7IChkZWZpbmUgaGFzaHRhYmxlLW11dGFi bGU/IHJucnM6aGFzaHRhYmxlLW11dGFibGU/KQorOzsgKGRlZmluZSBoYXNodGFibGUtZXF1aXZh bGVuY2UtZnVuY3Rpb24gcm5yczpoYXNodGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24pCis7OyAo ZGVmaW5lIGhhc2h0YWJsZS1oYXNoLWZ1bmN0aW9uIHJucnM6aGFzaHRhYmxlLWhhc2gtZnVuY3Rp b24pCis7OyAoZGVmaW5lIGVxdWFsLWhhc2ggcm5yczplcXVhbC1oYXNoKQorOzsgKGRlZmluZSBz dHJpbmctaGFzaCBybnJzOnN0cmluZy1oYXNoKQorOzsgKGRlZmluZSBzdHJpbmctY2ktaGFzaCBy bnJzOnN0cmluZy1jaS1oYXNoKQorOzsgKGRlZmluZSBzeW1ib2wtaGFzaCBybnJzOnN5bWJvbC1o YXNoKQorCisoZGVmaW5lICpoYXNoLXNhbHQqCisgIChsZXQgKChzZWVkIChnZXRlbnYgIlNSRklf MTI2X0hBU0hfU0VFRCIpKSkKKyAgICAoaWYgKG9yIChub3Qgc2VlZCkgKHN0cmluZz0/IHNlZWQg IiIpKQorICAgICAgICAocmFuZG9tIG1vc3QtcG9zaXRpdmUtZml4bnVtKQorICAgICAgICAobW9k dWxvIChzdHJpbmctaGFzaCBzZWVkKSBtb3N0LXBvc2l0aXZlLWZpeG51bSkpKSkKKworKGRlZmlu ZSAoaGFzaC1zYWx0KSAqaGFzaC1zYWx0KikKKworOzsgZW9mCmRpZmYgLS1naXQgYS90ZXN0LXN1 aXRlL01ha2VmaWxlLmFtIGIvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQppbmRleCBlMTU0NjAyYTcu LmYwYWQ4YmI5MSAxMDA2NDQKLS0tIGEvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQorKysgYi90ZXN0 LXN1aXRlL01ha2VmaWxlLmFtCkBAIC0xNjIsNiArMTYyLDcgQEAgU0NNX1RFU1RTID0gdGVzdHMv MDAtaW5pdGlhbC1lbnYudGVzdAkJXAogCSAgICB0ZXN0cy9zcmZpLTk4LnRlc3QJCQlcCiAJICAg IHRlc3RzL3NyZmktMTA1LnRlc3QJCQlcCiAJICAgIHRlc3RzL3NyZmktMTExLnRlc3QJCQlcCisJ ICAgIHRlc3RzL3NyZmktMTI2LnRlc3QJCQlcCiAJICAgIHRlc3RzL3NyZmktNC50ZXN0CQkJXAog CSAgICB0ZXN0cy9zcmZpLTkudGVzdAkJCVwKIAkgICAgdGVzdHMvc3RhdHByb2YudGVzdAkJCVwK ZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjYudGVzdCBiL3Rlc3Qtc3VpdGUv dGVzdHMvc3JmaS0xMjYudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu LmU2YTRlNjZhOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjYu dGVzdApAQCAtMCwwICsxLDM0NCBAQAorOzs7OyBzcmZpLTY5LnRlc3QgLS0tIFRlc3Qgc3VpdGUg Zm9yIFNSRkkgNjkgLSotIHNjaGVtZSAtKi0KKzs7OzsKKzs7OzsgCUNvcHlyaWdodCAoQykgMjAw NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKzs7OzsKKzs7OzsgVGhpcyBsaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorOzs7OyBt b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj Cis7Ozs7IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlcgorOzs7OyB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7Ozs7Cis7Ozs7IFRoaXMgbGlicmFyeSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzs7OyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor Ozs7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQorOzs7OyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorOzs7OworOzs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7Ozs7IExpY2Vuc2UgYWxvbmcgd2l0aCB0 aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKzs7OzsgRm91 bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN QSAwMjExMC0xMzAxIFVTQQorCis7OzsgVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgdGhlIHRlc3Rz IGZyb20gU1JGSS0xMjYgcmVmZXJlbmNlCis7OzsgaW1wbGVtZW50YXRpb24gcG9ydGVkIHRvIEd1 aWxlIHRlc3Qgc3VpdGUuCisKKyhkZWZpbmUtbW9kdWxlICh0ZXN0LXNyZmktMTI2KQorICAjOnVz ZS1tb2R1bGUgKHRlc3Qtc3VpdGUgbGliKQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMjYp CisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZp LTIpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTgpKQorCisoZGVmaW5lLXN5bnRheCB3aXRo LWVsdC1pbi1saXN0CisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKHdpdGgtZWx0LWluLWxpc3Qg YXJnIGFyZy1saXN0IGV4cHIgLi4uKQorICAgICAobGV0IGxvb3AgKChhcmctbGlzdCogYXJnLWxp c3QpKQorICAgICAgIChvciAobnVsbD8gYXJnLWxpc3QqKQorICAgICAgICAgICAoYW5kIChsZXQg KChhcmcgKGNhciBhcmctbGlzdCopKSkKKyAgICAgICAgICAgICAgICAgIGV4cHIgLi4uKQorICAg ICAgICAgICAgICAgIChsb29wIChjZHIgYXJnLWxpc3QqKSkpKSkpKSkKKworKGRlZmluZSAoZXhh Y3QtaW50ZWdlcj8gb2JqKQorICAoYW5kIChpbnRlZ2VyPyBvYmopIChleGFjdD8gb2JqKSkpCisK KyhkZWZpbmUgKHRlc3Qtc3RyLXdlYWtuZXNzIHN0ciB3ZWFrbmVzcykKKyAgKGlmIChub3Qgd2Vh a25lc3MpIHN0ciAoZm9ybWF0ICNmICJ+YSAod2Vha25lc3M6IH5hKSIgc3RyIHdlYWtuZXNzKSkp CisKKworCisod2l0aC10ZXN0LXByZWZpeCAiU1JGSS0xMjYiCisKKyAgOzsgVGhlIGZvbGxvd2lu ZyB0ZXN0cyBhcmUgZG9uZSBvbmNlIHdpdGggZWFjaCBraW5kIG9mIHdlYWtuZXNzCisgICh3aXRo LWVsdC1pbi1saXN0IHdlYWtuZXNzIChsaXN0ICNmICd3ZWFrLWtleSAnd2Vhay12YWx1ZSAnd2Vh ay1rZXktYW5kLXZhbHVlKQorCisgICAgKHdpdGgtdGVzdC1wcmVmaXggImVxIgorICAgICAgKGxl dCAoKHRhYmxlcyAobGlzdCAoYW5kIChub3Qgd2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1ha2UtZXEtaGFzaHRhYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1ha2UtZXEtaGFzaHRhYmxlIDEwIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAobWFrZS1lcS1oYXNodGFibGUgI2Ygd2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYWtlLWhhc2h0YWJsZSAjZiBlcT8gI2Ygd2Vha25lc3MpCisgICAgICAgICAgICAg ICAgICAgICAgICAgIChhbmQgKG5vdCB3ZWFrbmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoYWxpc3QtPmVxLWhhc2h0YWJsZSAnKChhIC4gYikgKGMgLiBkKSkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAoYWxpc3QtPmVxLWhhc2h0YWJsZSAxMCB3ZWFrbmVzcyAnKChh IC4gYikgKGMgLiBkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC0+ZXEtaGFz aHRhYmxlICNmIHdlYWtuZXNzICcoKGEgLiBiKSAoYyAuIGQpKSkpKSkKKyAgICAgICAgKGRvICgo dGFibGVzIHRhYmxlcyAoY2RyIHRhYmxlcykpCisgICAgICAgICAgICAgKGkgMCAoKyBpIDEpKSkK KyAgICAgICAgICAgICgobnVsbD8gdGFibGVzKSkKKyAgICAgICAgICAoYW5kLWxldCogKCh0YWJs ZSAoY2FyIHRhYmxlcykpKQorICAgICAgICAgICAgKHdpdGgtdGVzdC1wcmVmaXggKHRlc3Qtc3Ry LXdlYWtuZXNzIChmb3JtYXQgI2YgInRhYmxlIH5hIiBpKSB3ZWFrbmVzcykKKyAgICAgICAgICAg ICAgKHBhc3MtaWYgKGhhc2h0YWJsZT8gdGFibGUpKQorICAgICAgICAgICAgICAocGFzcy1pZi1l cXVhbCAjZiAoaGFzaHRhYmxlLWhhc2gtZnVuY3Rpb24gdGFibGUpKQorICAgICAgICAgICAgICAo cGFzcy1pZi1lcXVhbCBlcT8gKGhhc2h0YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiB0YWJsZSkp CisgICAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsIHdlYWtuZXNzIChoYXNodGFibGUtd2Vha25l c3MgdGFibGUpKQorICAgICAgICAgICAgICAocGFzcy1pZiAoaGFzaHRhYmxlLW11dGFibGU/IHRh YmxlKSkpKSkpKQorCisgICAgKHdpdGgtdGVzdC1wcmVmaXggImVxdiIKKyAgICAgIChsZXQgKCh0 YWJsZXMgKGxpc3QgKGFuZCAobm90IHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYWtlLWVxdi1oYXNodGFibGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAo bWFrZS1lcXYtaGFzaHRhYmxlIDEwIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAobWFrZS1lcXYtaGFzaHRhYmxlICNmIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAobWFrZS1oYXNodGFibGUgI2YgZXF2PyAjZiB3ZWFrbmVzcykKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKGFuZCAobm90IHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChhbGlzdC0+ZXF2LWhhc2h0YWJsZSAnKChhIC4gYikgKGMgLiBkKSkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAoYWxpc3QtPmVxdi1oYXNodGFibGUgMTAgd2Vha25lc3MgJygo YSAuIGIpIChjIC4gZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxpc3QtPmVxdi1o YXNodGFibGUgI2Ygd2Vha25lc3MgJygoYSAuIGIpIChjIC4gZCkpKSkpKQorICAgICAgICAoZG8g KCh0YWJsZXMgdGFibGVzIChjZHIgdGFibGVzKSkKKyAgICAgICAgICAgICAoaSAwICgrIGkgMSkp KQorICAgICAgICAgICAgKChudWxsPyB0YWJsZXMpKQorICAgICAgICAgIChhbmQtbGV0KiAoKHRh YmxlIChjYXIgdGFibGVzKSkpCisgICAgICAgICAgICAod2l0aC10ZXN0LXByZWZpeCAodGVzdC1z dHItd2Vha25lc3MgKGZvcm1hdCAjZiAidGFibGUgfmEiIGkpIHdlYWtuZXNzKQorICAgICAgICAg ICAgICAocGFzcy1pZiAoaGFzaHRhYmxlPyB0YWJsZSkpCisgICAgICAgICAgICAgIChwYXNzLWlm LWVxdWFsICNmIChoYXNodGFibGUtaGFzaC1mdW5jdGlvbiB0YWJsZSkpCisgICAgICAgICAgICAg IChwYXNzLWlmLWVxdWFsIGVxdj8gKGhhc2h0YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiB0YWJs ZSkpCisgICAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsIHdlYWtuZXNzIChoYXNodGFibGUtd2Vh a25lc3MgdGFibGUpKQorICAgICAgICAgICAgICAocGFzcy1pZiAoaGFzaHRhYmxlLW11dGFibGU/ IHRhYmxlKSkpKSkpKQorCisgICAgKHdpdGgtdGVzdC1wcmVmaXggImVxdWFsIgorICAgICAgKGxl dCAoKHRhYmxlcyAobGlzdCAoYW5kIChub3Qgd2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1ha2UtaGFzaHRhYmxlIGVxdWFsLWhhc2ggZXF1YWw/KSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1ha2UtaGFzaHRhYmxlIGVxdWFsLWhhc2ggZXF1YWw/IDEwIHdl YWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1oYXNodGFibGUgZXF1YWwt aGFzaCBlcXVhbD8gI2Ygd2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQg KG5vdCB3ZWFrbmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxpc3QtPmhh c2h0YWJsZSBlcXVhbC1oYXNoIGVxdWFsPyAnKChhIC4gYikgKGMgLiBkKSkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAoYWxpc3QtPmhhc2h0YWJsZSBlcXVhbC1oYXNoIGVxdWFsPyAxMCB3 ZWFrbmVzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChh IC4gYikgKGMgLiBkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC0+aGFzaHRh YmxlIGVxdWFsLWhhc2ggZXF1YWw/ICNmIHdlYWtuZXNzCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICcoKGEgLiBiKSAoYyAuIGQpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKGFuZCAobm90IHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYWtlLWhhc2h0YWJsZSAoY29ucyBlcXVhbC1oYXNoIGVxdWFsLWhhc2gpIGVxdWFs PykpKSkpCisgICAgICAgIChkbyAoKHRhYmxlcyB0YWJsZXMgKGNkciB0YWJsZXMpKQorICAgICAg ICAgICAgIChpIDAgKCsgaSAxKSkpCisgICAgICAgICAgICAoKG51bGw/IHRhYmxlcykpCisgICAg ICAgICAgKGFuZC1sZXQqICgodGFibGUgKGNhciB0YWJsZXMpKSkKKyAgICAgICAgICAgICh3aXRo LXRlc3QtcHJlZml4ICh0ZXN0LXN0ci13ZWFrbmVzcyAoZm9ybWF0ICNmICJ0YWJsZSB+YSIgaSkg d2Vha25lc3MpCisgICAgICAgICAgICAgIChwYXNzLWlmIChoYXNodGFibGU/IHRhYmxlKSkKKyAg ICAgICAgICAgICAgKHBhc3MtaWYtZXF1YWwgZXF1YWwtaGFzaCAoaGFzaHRhYmxlLWhhc2gtZnVu Y3Rpb24gdGFibGUpKQorICAgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCBlcXVhbD8gKGhhc2h0 YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiB0YWJsZSkpCisgICAgICAgICAgICAgIChwYXNzLWlm LWVxdWFsIHdlYWtuZXNzIChoYXNodGFibGUtd2Vha25lc3MgdGFibGUpKQorICAgICAgICAgICAg ICAocGFzcy1pZiAoaGFzaHRhYmxlLW11dGFibGU/IHRhYmxlKSkpKSkpKQorCisgICAgKHdpdGgt dGVzdC1wcmVmaXggImFsaXN0IgorICAgICAgKGxldCAoKHRhYmxlcyAobGlzdCAoYW5kIChub3Qg d2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsaXN0LT5lcS1oYXNo dGFibGUgJygoYSAuIGIpIChhIC4gYykpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGFu ZCAobm90IHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC0+ ZXF2LWhhc2h0YWJsZSAnKChhIC4gYikgKGEgLiBjKSkpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAoYW5kIChub3Qgd2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGFsaXN0LT5oYXNodGFibGUgZXF1YWwtaGFzaCBlcXVhbD8KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChhIC4gYikgKGEgLiBjKSkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAoYWxpc3QtPmVxLWhhc2h0YWJsZSAjZiB3ZWFrbmVzcyAnKChh IC4gYikgKGEgLiBjKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC0+ZXF2LWhh c2h0YWJsZSAjZiB3ZWFrbmVzcyAnKChhIC4gYikgKGEgLiBjKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChhbGlzdC0+aGFzaHRhYmxlIGVxdWFsLWhhc2ggZXF1YWw/ICNmIHdlYWtuZXNz CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKGEgLiBiKSAo YSAuIGMpKSkpKSkKKyAgICAgICAgKGRvICgodGFibGVzIHRhYmxlcyAoY2RyIHRhYmxlcykpCisg ICAgICAgICAgICAgKGkgMCAoKyBpIDEpKSkKKyAgICAgICAgICAgICgobnVsbD8gdGFibGVzKSkK KyAgICAgICAgICAoYW5kLWxldCogKCh0YWJsZSAoY2FyIHRhYmxlcykpKQorICAgICAgICAgICAg KHdpdGgtdGVzdC1wcmVmaXggKHRlc3Qtc3RyLXdlYWtuZXNzIChmb3JtYXQgI2YgInRhYmxlIH5h IiBpKSB3ZWFrbmVzcykKKyAgICAgICAgICAgICAgKHBhc3MtaWYtZXF1YWwgJ2IgKGhhc2h0YWJs ZS1yZWYgdGFibGUgJ2EpKSkpKSkpCisKKyAgICAod2l0aC10ZXN0LXByZWZpeCAicHJvY2VkdXJl cyIKKyAgICAgICh3aXRoLXRlc3QtcHJlZml4ICJiYXNpY3MiCisgICAgICAgIChsZXQgKCh0YWJs ZSAobWFrZS1lcS1oYXNodGFibGUgI2Ygd2Vha25lc3MpKSkKKyAgICAgICAgICAod2l0aC10ZXN0 LXByZWZpeCAicmVmIgorICAgICAgICAgICAgKHBhc3MtaWYtZXhjZXB0aW9uICJrZXkgbm90IGZv dW5kIgorICAgICAgICAgICAgICAgICcobWlzYy1lcnJvciAuICJeS2V5IG5vdCBpbiB0YWJsZSIp CisgICAgICAgICAgICAgIChoYXNodGFibGUtcmVmIHRhYmxlICdhKSkKKyAgICAgICAgICAgIChw YXNzLWlmLWVxdWFsICdiIChoYXNodGFibGUtcmVmIHRhYmxlICdhICdiKSkKKyAgICAgICAgICAg IChwYXNzLWlmIChub3QgKGhhc2h0YWJsZS1jb250YWlucz8gdGFibGUgJ2EpKSkKKyAgICAgICAg ICAgIChwYXNzLWlmLWVxdWFsIDAgKGhhc2h0YWJsZS1zaXplIHRhYmxlKSkpCisgICAgICAgICAg KHdpdGgtdGVzdC1wcmVmaXggInNldCIKKyAgICAgICAgICAgIChoYXNodGFibGUtc2V0ISB0YWJs ZSAnYSAnYykKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsICdjIChoYXNodGFibGUtcmVmIHRh YmxlICdhKSkKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsICdjIChoYXNodGFibGUtcmVmIHRh YmxlICdhICdiKSkKKyAgICAgICAgICAgIChwYXNzLWlmIChoYXNodGFibGUtY29udGFpbnM/IHRh YmxlICdhKSkKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsIDEgKGhhc2h0YWJsZS1zaXplIHRh YmxlKSkpCisgICAgICAgICAgKHdpdGgtdGVzdC1wcmVmaXggImRlbGV0ZSIKKyAgICAgICAgICAg IChoYXNodGFibGUtZGVsZXRlISB0YWJsZSAnYSkKKyAgICAgICAgICAgIChwYXNzLWlmLWV4Y2Vw dGlvbiAia2V5IG5vdCBmb3VuZCIKKyAgICAgICAgICAgICAgICAnKG1pc2MtZXJyb3IgLiAiXktl eSBub3QgaW4gdGFibGUiKQorICAgICAgICAgICAgICAoaGFzaHRhYmxlLXJlZiB0YWJsZSAnYSkp CisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAnYiAoaGFzaHRhYmxlLXJlZiB0YWJsZSAnYSAn YikpCisgICAgICAgICAgICAocGFzcy1pZiAobm90IChoYXNodGFibGUtY29udGFpbnM/IHRhYmxl ICdhKSkpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAwIChoYXNodGFibGUtc2l6ZSB0YWJs ZSkpKSkpKQorCisgICAgKHdpdGgtdGVzdC1wcmVmaXggImFkdmFuY2VkIgorICAgICAgKGxldCAo KHRhYmxlIChtYWtlLWVxLWhhc2h0YWJsZSkpKQorICAgICAgICAod2l0aC10ZXN0LXByZWZpeCAi bG9va3VwIgorICAgICAgICAgIChyZWNlaXZlICh4IGZvdW5kPykgKGhhc2h0YWJsZS1sb29rdXAg dGFibGUgJ2EpCisgICAgICAgICAgICAocGFzcy1pZiAobm90IGZvdW5kPykpKSkKKyAgICAgICAg KHdpdGgtdGVzdC1wcmVmaXggInVwZGF0ZSIKKyAgICAgICAgICAocGFzcy1pZi1leGNlcHRpb24g ImtleSBub3QgZm91bmQiCisgICAgICAgICAgICAgICcobWlzYy1lcnJvciAuICJeS2V5IG5vdCBp biB0YWJsZSIpCisgICAgICAgICAgICAoaGFzaHRhYmxlLXVwZGF0ZSEgdGFibGUgJ2EgKGxhbWJk YSAoeCkgKCsgeCAxKSkpKQorICAgICAgICAgIChoYXNodGFibGUtdXBkYXRlISB0YWJsZSAnYSAo bGFtYmRhICh4KSAoKyB4IDEpKSAwKQorICAgICAgICAgIChyZWNlaXZlICh4IGZvdW5kPykgKGhh c2h0YWJsZS1sb29rdXAgdGFibGUgJ2EpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAxIHgp CisgICAgICAgICAgICAocGFzcy1pZiBmb3VuZD8pKQorICAgICAgICAgIChoYXNodGFibGUtdXBk YXRlISB0YWJsZSAnYSAobGFtYmRhICh4KSAoKyB4IDEpKSkKKyAgICAgICAgICAocmVjZWl2ZSAo eCBmb3VuZD8pIChoYXNodGFibGUtbG9va3VwIHRhYmxlICdhKQorICAgICAgICAgICAgKHBhc3Mt aWYtZXF1YWwgeCAyKQorICAgICAgICAgICAgKHBhc3MtaWYgZm91bmQ/KSkKKyAgICAgICAgICAo aGFzaHRhYmxlLXVwZGF0ZSEgdGFibGUgJ2EgKGxhbWJkYSAoeCkgKCsgeCAxKSkgMCkKKyAgICAg ICAgICAocmVjZWl2ZSAoeCBmb3VuZD8pIChoYXNodGFibGUtbG9va3VwIHRhYmxlICdhKQorICAg ICAgICAgICAgKHBhc3MtaWYtZXF1YWwgeCAzKQorICAgICAgICAgICAgKHBhc3MtaWYgZm91bmQ/ KSkpCisgICAgICAgICh3aXRoLXRlc3QtcHJlZml4ICJpbnRlcm4iCisgICAgICAgICAgKHBhc3Mt aWYtZXF1YWwgMCAoaGFzaHRhYmxlLWludGVybiEgdGFibGUgJ2IgKGxhbWJkYSAoKSAwKSkpCisg ICAgICAgICAgKHBhc3MtaWYtZXF1YWwgMCAoaGFzaHRhYmxlLWludGVybiEgdGFibGUgJ2IgKGxh bWJkYSAoKSAxKSkpKSkpCisKKyAgICAod2l0aC10ZXN0LXByZWZpeCAiY29weS9jbGVhciIKKyAg ICAgIChsZXQgKCh0YWJsZSAoYWxpc3QtPmhhc2h0YWJsZSBlcXVhbC1oYXNoIGVxdWFsPyAjZiB3 ZWFrbmVzcyAnKChhIC4gYikpKSkpCisgICAgICAgICh3aXRoLXRlc3QtcHJlZml4ICJjb3B5Igor ICAgICAgICAgIChsZXQgKCh0YWJsZTIgKGhhc2h0YWJsZS1jb3B5IHRhYmxlKSkpCisgICAgICAg ICAgICAocGFzcy1pZi1lcXVhbCBlcXVhbC1oYXNoIChoYXNodGFibGUtaGFzaC1mdW5jdGlvbiB0 YWJsZTIpKQorICAgICAgICAgICAgKHBhc3MtaWYtZXF1YWwgZXF1YWw/IChoYXNodGFibGUtZXF1 aXZhbGVuY2UtZnVuY3Rpb24gdGFibGUyKSkKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsICdi IChoYXNodGFibGUtcmVmIHRhYmxlMiAnYSkpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCB3 ZWFrbmVzcyAoaGFzaHRhYmxlLXdlYWtuZXNzIHRhYmxlMikpCisgICAgICAgICAgICAocGFzcy1p Zi1leGNlcHRpb24gInNldCEgaW1tdXRhYmxlIHRhYmxlIgorICAgICAgICAgICAgICAgICcobWlz Yy1lcnJvciAuICJeSGFzaCB0YWJsZSBpcyBub3QgbXV0YWJsZSIpCisgICAgICAgICAgICAgICho YXNodGFibGUtc2V0ISB0YWJsZTIgJ2EgJ2MpKSkKKyAgICAgICAgICAobGV0ICgodGFibGUyICho YXNodGFibGUtY29weSB0YWJsZSAjZikpKQorICAgICAgICAgICAgKHBhc3MtaWYtZXF1YWwgZXF1 YWwtaGFzaCAoaGFzaHRhYmxlLWhhc2gtZnVuY3Rpb24gdGFibGUyKSkKKyAgICAgICAgICAgIChw YXNzLWlmLWVxdWFsIGVxdWFsPyAoaGFzaHRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIHRhYmxl MikpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAnYiAoaGFzaHRhYmxlLXJlZiB0YWJsZTIg J2EpKQorICAgICAgICAgICAgKHBhc3MtaWYtZXF1YWwgd2Vha25lc3MgKGhhc2h0YWJsZS13ZWFr bmVzcyB0YWJsZTIpKQorICAgICAgICAgICAgKHBhc3MtaWYtZXhjZXB0aW9uICJzZXQhIGltbXV0 YWJsZSB0YWJsZSIKKyAgICAgICAgICAgICAgICAnKG1pc2MtZXJyb3IgLiAiXkhhc2ggdGFibGUg aXMgbm90IG11dGFibGUiKQorICAgICAgICAgICAgICAoaGFzaHRhYmxlLXNldCEgdGFibGUyICdh ICdjKSkpCisgICAgICAgICAgKGxldCAoKHRhYmxlMiAoaGFzaHRhYmxlLWNvcHkgdGFibGUgI3Qp KSkKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsIGVxdWFsLWhhc2ggKGhhc2h0YWJsZS1oYXNo LWZ1bmN0aW9uIHRhYmxlMikpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCBlcXVhbD8gKGhh c2h0YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiB0YWJsZTIpKQorICAgICAgICAgICAgKHBhc3Mt aWYtZXF1YWwgJ2IgKGhhc2h0YWJsZS1yZWYgdGFibGUyICdhKSkKKyAgICAgICAgICAgIChwYXNz LWlmLWVxdWFsIHdlYWtuZXNzIChoYXNodGFibGUtd2Vha25lc3MgdGFibGUyKSkKKyAgICAgICAg ICAgIChoYXNodGFibGUtc2V0ISB0YWJsZTIgJ2EgJ2MpCisgICAgICAgICAgICAocGFzcy1pZi1l cXVhbCAnYyAoaGFzaHRhYmxlLXJlZiB0YWJsZTIgJ2EpKSkKKyAgICAgICAgICAobGV0ICgodGFi bGUyIChoYXNodGFibGUtY29weSB0YWJsZSAjZiAjZikpKQorICAgICAgICAgICAgKHBhc3MtaWYt ZXF1YWwgZXF1YWwtaGFzaCAoaGFzaHRhYmxlLWhhc2gtZnVuY3Rpb24gdGFibGUyKSkKKyAgICAg ICAgICAgIChwYXNzLWlmLWVxdWFsIGVxdWFsPyAoaGFzaHRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0 aW9uIHRhYmxlMikpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAjZiAoaGFzaHRhYmxlLXdl YWtuZXNzIHRhYmxlMikpKSkKKworICAgICAgICAod2l0aC10ZXN0LXByZWZpeCAiY2xlYXIiCisg ICAgICAgICAgKGxldCAoKHRhYmxlMiAoaGFzaHRhYmxlLWNvcHkgdGFibGUgI3QpKSkKKyAgICAg ICAgICAgIChoYXNodGFibGUtY2xlYXIhIHRhYmxlMikKKyAgICAgICAgICAgIChwYXNzLWlmLWVx dWFsIDAgKGhhc2h0YWJsZS1zaXplIHRhYmxlMikpKQorICAgICAgICAgIChsZXQgKCh0YWJsZTIg KGhhc2h0YWJsZS1jb3B5IHRhYmxlICN0KSkpCisgICAgICAgICAgICAoaGFzaHRhYmxlLWNsZWFy ISB0YWJsZTIgMTApCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAwIChoYXNodGFibGUtc2l6 ZSB0YWJsZTIpKSkpCisKKyAgICAgICAgKHdpdGgtdGVzdC1wcmVmaXggImVtcHR5LWNvcHkiCisg ICAgICAgICAgKGxldCAoKHRhYmxlMiAoaGFzaHRhYmxlLWVtcHR5LWNvcHkgdGFibGUpKSkKKyAg ICAgICAgICAgIChwYXNzLWlmLWVxdWFsIGVxdWFsLWhhc2ggKGhhc2h0YWJsZS1oYXNoLWZ1bmN0 aW9uIHRhYmxlMikpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCBlcXVhbD8gKGhhc2h0YWJs ZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiB0YWJsZTIpKQorICAgICAgICAgICAgKHBhc3MtaWYtZXF1 YWwgMCAoaGFzaHRhYmxlLXNpemUgdGFibGUyKSkpCisgICAgICAgICAgKGxldCAoKHRhYmxlMiAo aGFzaHRhYmxlLWVtcHR5LWNvcHkgdGFibGUgMTApKSkKKyAgICAgICAgICAgIChwYXNzLWlmLWVx dWFsIGVxdWFsLWhhc2ggKGhhc2h0YWJsZS1oYXNoLWZ1bmN0aW9uIHRhYmxlMikpCisgICAgICAg ICAgICAocGFzcy1pZi1lcXVhbCBlcXVhbD8gKGhhc2h0YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlv biB0YWJsZTIpKQorICAgICAgICAgICAgKHBhc3MtaWYtZXF1YWwgMCAoaGFzaHRhYmxlLXNpemUg dGFibGUyKSkpKSkpCisKKyAgICAod2l0aC10ZXN0LXByZWZpeCAia2V5cy92YWx1ZXMiCisgICAg ICAobGV0ICgodGFibGUgKGFsaXN0LT5lcS1oYXNodGFibGUgJygoYSAuIGIpIChjIC4gZCkpKSkp CisgICAgICAgIChwYXNzLWlmIChsc2V0PSBlcT8gJyhhIGMpICh2ZWN0b3ItPmxpc3QgKGhhc2h0 YWJsZS1rZXlzIHRhYmxlKSkpKQorICAgICAgICAocGFzcy1pZiAobHNldD0gZXE/ICcoYiBkKSAo dmVjdG9yLT5saXN0IChoYXNodGFibGUtdmFsdWVzIHRhYmxlKSkpKQorICAgICAgICAocmVjZWl2 ZSAoa2V5cyB2YWx1ZXMpIChoYXNodGFibGUtZW50cmllcyB0YWJsZSkKKyAgICAgICAgICAocGFz cy1pZiAobHNldD0gZXE/ICcoYSBjKSAodmVjdG9yLT5saXN0IGtleXMpKSkKKyAgICAgICAgICAo cGFzcy1pZiAobHNldD0gZXE/ICcoYiBkKSAodmVjdG9yLT5saXN0IHZhbHVlcykpKSkKKyAgICAg ICAgKHBhc3MtaWYgKGxzZXQ9IGVxPyAnKGEgYykgKGhhc2h0YWJsZS1rZXktbGlzdCB0YWJsZSkp KQorICAgICAgICAocGFzcy1pZiAobHNldD0gZXE/ICcoYiBkKSAoaGFzaHRhYmxlLXZhbHVlLWxp c3QgdGFibGUpKSkKKyAgICAgICAgKHJlY2VpdmUgKGtleXMgdmFsdWVzKSAoaGFzaHRhYmxlLWVu dHJ5LWxpc3RzIHRhYmxlKQorICAgICAgICAgIChwYXNzLWlmIChsc2V0PSBlcT8gJyhhIGMpIGtl eXMpKQorICAgICAgICAgIChwYXNzLWlmIChsc2V0PSBlcT8gJyhiIGQpIHZhbHVlcykpKSkpCisK KyAgICAod2l0aC10ZXN0LXByZWZpeCAiaXRlcmF0aW9uIgorICAgICAgKHdpdGgtdGVzdC1wcmVm aXggIndhbGsiCisgICAgICAgIChsZXQgKChrZXlzICcoKSkKKyAgICAgICAgICAgICAgKHZhbHVl cyAnKCkpKQorICAgICAgICAgIChoYXNodGFibGUtd2FsayAoYWxpc3QtPmVxLWhhc2h0YWJsZSAn KChhIC4gYikgKGMgLiBkKSkpCisgICAgICAgICAgICAobGFtYmRhIChrIHYpCisgICAgICAgICAg ICAgIChzZXQhIGtleXMgKGNvbnMgayBrZXlzKSkKKyAgICAgICAgICAgICAgKHNldCEgdmFsdWVz IChjb25zIHYgdmFsdWVzKSkpKQorICAgICAgICAgIChwYXNzLWlmIChsc2V0PSBlcT8gJyhhIGMp IGtleXMpKQorICAgICAgICAgIChwYXNzLWlmIChsc2V0PSBlcT8gJyhiIGQpIHZhbHVlcykpKSkK KworICAgICAgKHdpdGgtdGVzdC1wcmVmaXggInVwZGF0ZS1hbGwiCisgICAgICAgIChsZXQgKCh0 YWJsZSAoYWxpc3QtPmVxLWhhc2h0YWJsZSAnKChhIC4gYikgKGMgLiBkKSkpKSkKKyAgICAgICAg ICAoaGFzaHRhYmxlLXVwZGF0ZS1hbGwhIHRhYmxlCisgICAgICAgICAgICAobGFtYmRhIChrIHYp CisgICAgICAgICAgICAgIChzdHJpbmctPnN5bWJvbCAoc3RyaW5nLWFwcGVuZCAoc3ltYm9sLT5z dHJpbmcgdikgIngiKSkpKQorICAgICAgICAgIChwYXNzLWlmIChsc2V0PSBlcT8gJyhhIGMpICho YXNodGFibGUta2V5LWxpc3QgdGFibGUpKSkKKyAgICAgICAgICAocGFzcy1pZiAobHNldD0gZXE/ ICcoYnggZHgpIChoYXNodGFibGUtdmFsdWUtbGlzdCB0YWJsZSkpKSkpCisKKyAgICAgICh3aXRo LXRlc3QtcHJlZml4ICJwcnVuZSIKKyAgICAgICAgKGxldCAoKHRhYmxlIChhbGlzdC0+ZXEtaGFz aHRhYmxlICcoKGEgLiBiKSAoYyAuIGQpKSkpKQorICAgICAgICAgIChoYXNodGFibGUtcHJ1bmUh IHRhYmxlIChsYW1iZGEgKGsgdikgKGVxPyBrICdhKSkpCisgICAgICAgICAgKHBhc3MtaWYgKG5v dCAoaGFzaHRhYmxlLWNvbnRhaW5zPyB0YWJsZSAnYSkpKQorICAgICAgICAgIChwYXNzLWlmICho YXNodGFibGUtY29udGFpbnM/IHRhYmxlICdjKSkpKQorCisgICAgICAod2l0aC10ZXN0LXByZWZp eCAibWVyZ2UiCisgICAgICAgIChsZXQgKCh0YWJsZSAoYWxpc3QtPmVxLWhhc2h0YWJsZSAnKChh IC4gYikgKGMgLiBkKSkpKQorICAgICAgICAgICAgICAodGFibGUyIChhbGlzdC0+ZXEtaGFzaHRh YmxlICcoKGEgLiB4KSAoZSAuIGYpKSkpKQorICAgICAgICAgIChoYXNodGFibGUtbWVyZ2UhIHRh YmxlIHRhYmxlMikKKyAgICAgICAgICAocGFzcy1pZiAobHNldD0gZXE/ICcoYSBjIGUpIChoYXNo dGFibGUta2V5LWxpc3QgdGFibGUpKSkKKyAgICAgICAgICAocGFzcy1pZiAobHNldD0gZXE/ICco eCBkIGYpIChoYXNodGFibGUtdmFsdWUtbGlzdCB0YWJsZSkpKSkpCisKKyAgICAgICh3aXRoLXRl c3QtcHJlZml4ICJzdW0iCisgICAgICAgIChsZXQgKCh0YWJsZSAoYWxpc3QtPmVxLWhhc2h0YWJs ZSAnKChhIC4gYikgKGMgLiBkKSkpKSkKKyAgICAgICAgICAocGFzcy1pZiAobHNldD0gZXE/ICco YSBiIGMgZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2h0YWJsZS1zdW0gdGFibGUg JygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoayB2IGFjYykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsc2V0LWFkam9pbiBlcT8gYWNjIGsgdikpKSkpKSkK KworICAgICAgKHdpdGgtdGVzdC1wcmVmaXggIm1hcC0+bHNldCIKKyAgICAgICAgKGxldCAoKHRh YmxlIChhbGlzdC0+ZXEtaGFzaHRhYmxlICcoKGEgLiBiKSAoYyAuIGQpKSkpKQorICAgICAgICAg IChwYXNzLWlmIChsc2V0PSBlcXVhbD8gJygoYSAuIGIpIChjIC4gZCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgIChoYXNodGFibGUtbWFwLT5sc2V0IHRhYmxlIGNvbnMpKSkpKQorCisgICAg ICAod2l0aC10ZXN0LXByZWZpeCAiZmluZCIKKyAgICAgICAgKGxldCAoKHRhYmxlIChhbGlzdC0+ ZXEtaGFzaHRhYmxlICcoKGEgLiBiKSAoYyAuIGQpKSkpKQorICAgICAgICAgIChyZWNlaXZlIChr IHYgZj8pIChoYXNodGFibGUtZmluZCB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxhbWJkYSAoayB2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXE/IGsg J2EpKSkKKyAgICAgICAgICAgIChwYXNzLWlmIChhbmQgZj8gKGVxPyBrICdhKSAoZXE/IHYgJ2Ip KSkpCisgICAgICAgICAgKHJlY2VpdmUgKGsgdiBmPykgKGhhc2h0YWJsZS1maW5kIHRhYmxlIChs YW1iZGEgKGsgdikgI2YpKQorICAgICAgICAgICAgKHBhc3MtaWYgKG5vdCBmPykpKSkpCisKKyAg ICAgICh3aXRoLXRlc3QtcHJlZml4ICJtaXNjIgorCisgICAgICAgICh3aXRoLXRlc3QtcHJlZml4 ICJlbXB0eT8iCisgICAgICAgICAgKHBhc3MtaWYgKGhhc2h0YWJsZS1lbXB0eT8gKGFsaXN0LT5l cS1oYXNodGFibGUgJygpKSkpCisgICAgICAgICAgKHBhc3MtaWYgKG5vdCAoaGFzaHRhYmxlLWVt cHR5PyAoYWxpc3QtPmVxLWhhc2h0YWJsZSAnKChhIC4gYikpKSkpKSkKKworICAgICAgICAod2l0 aC10ZXN0LXByZWZpeCAicG9wISIKKyAgICAgICAgICAocGFzcy1pZi1leGNlcHRpb24gIiIKKyAg ICAgICAgICAgICAgJyhtaXNjLWVycm9yIC4gIl5IYXNoIHRhYmxlIGlzIGVtcHR5IikKKyAgICAg ICAgICAgIChoYXNodGFibGUtcG9wISAobWFrZS1lcS1oYXNodGFibGUpKSkKKyAgICAgICAgICAo bGV0ICgodGFibGUgKGFsaXN0LT5lcS1oYXNodGFibGUgJygoYSAuIGIpKSkpKQorICAgICAgICAg ICAgKHJlY2VpdmUgKGsgdikgKGhhc2h0YWJsZS1wb3AhIHRhYmxlKQorICAgICAgICAgICAgICAo cGFzcy1pZi1lcXVhbCAnYSBrKQorICAgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAnYiB2KQor ICAgICAgICAgICAgICAocGFzcy1pZiAoaGFzaHRhYmxlLWVtcHR5PyB0YWJsZSkpKSkpCisKKyAg ICAgICAgKHdpdGgtdGVzdC1wcmVmaXggImluYyEiCisgICAgICAgICAgKGxldCAoKHRhYmxlIChh bGlzdC0+ZXEtaGFzaHRhYmxlICcoKGEgLiAwKSkpKSkKKyAgICAgICAgICAgIChoYXNodGFibGUt aW5jISB0YWJsZSAnYSkKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsIDEgKGhhc2h0YWJsZS1y ZWYgdGFibGUgJ2EpKQorICAgICAgICAgICAgKGhhc2h0YWJsZS1pbmMhIHRhYmxlICdhIDIpCisg ICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAzIChoYXNodGFibGUtcmVmIHRhYmxlICdhKSkpKQor CisgICAgICAgICh3aXRoLXRlc3QtcHJlZml4ICJkZWMhIgorICAgICAgICAgIChsZXQgKCh0YWJs ZSAoYWxpc3QtPmVxLWhhc2h0YWJsZSAnKChhIC4gMCkpKSkpCisgICAgICAgICAgICAoaGFzaHRh YmxlLWRlYyEgdGFibGUgJ2EpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAtMSAoaGFzaHRh YmxlLXJlZiB0YWJsZSAnYSkpCisgICAgICAgICAgICAoaGFzaHRhYmxlLWRlYyEgdGFibGUgJ2Eg MikKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsIC0zIChoYXNodGFibGUtcmVmIHRhYmxlICdh KSkpKSkpCisKKyAgICAod2l0aC10ZXN0LXByZWZpeCAiaGFzaGluZyIKKyAgICAgIChwYXNzLWlm IChleGFjdC1pbnRlZ2VyPyAoaGFzaC1zYWx0KSkpCisgICAgICAocGFzcy1pZiAobm90IChuZWdh dGl2ZT8gKGhhc2gtc2FsdCkpKSkKKyAgICAgIChwYXNzLWlmICg9IChoYXNoLXNhbHQpIChoYXNo LXNhbHQpKSkKKyAgICAgIChwYXNzLWlmICg9IChlcXVhbC1oYXNoIChsaXN0ICJmb28iICdiYXIg NDIpKQorICAgICAgICAgICAgICAgICAgKGVxdWFsLWhhc2ggKGxpc3QgImZvbyIgJ2JhciA0Mikp KSkKKyAgICAgIChwYXNzLWlmICg9IChzdHJpbmctaGFzaCAoc3RyaW5nLWNvcHkgImZvbyIpKQor ICAgICAgICAgICAgICAgICAgKHN0cmluZy1oYXNoIChzdHJpbmctY29weSAiZm9vIikpKSkKKyAg ICAgIChwYXNzLWlmICg9IChzdHJpbmctY2ktaGFzaCAoc3RyaW5nLWNvcHkgImZvbyIpKQorICAg ICAgICAgICAgICAgICAgKHN0cmluZy1jaS1oYXNoIChzdHJpbmctY29weSAiRk9PIikpKSkKKyAg ICAgIChwYXNzLWlmICg9IChzeW1ib2wtaGFzaCAoc3RyaW5nLT5zeW1ib2wgImZvbyIpKQorICAg ICAgICAgICAgICAgICAgKHN5bWJvbC1oYXNoIChzdHJpbmctPnN5bWJvbCAiZm9vIikpKSkpCisg ICAgKQorICApCi0tIAoyLjE5LjEKCg== --000000000000b6a39d057efb700b Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Implemented-GENERIC-HASH-TABLES-module.patch" Content-Disposition: attachment; filename="0002-Implemented-GENERIC-HASH-TABLES-module.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqofminu1> X-Attachment-Id: f_jqofminu1 RnJvbSA0NzI1NmMwY2JmZjliMWNhNmUyNjhkNWQ0NDA3NjcxODA3ZWRjMjAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDggSmFuIDIwMTkgMjE6NTg6Mzcg LTAyMDAKU3ViamVjdDogW1BBVENIIDIvNV0gSW1wbGVtZW50ZWQgR0VORVJJQy1IQVNILVRBQkxF UyBtb2R1bGUuCgpUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB0byBpbnRlcm1l ZGlhdGUgaGFzaCB0YWJsZXMgYW5kIGNhbgpiZSB1c2VkIHRvIGltcGxlbWVudCBTUkZJLTY5LCBT UkZJLTEyNSwgU1JGSS0xMjYgYW5kIFI2UlMgaGFzaCB0YWJsZQpsaWJyYXJpZXMuIFRoYXQgd2F5 LCB3ZSBhdm9pZCBkdXBsaWNhdGlvbiBvZiBjb2RlLCBtaXNzaW5nIGZlYXR1cmVzIGFuZAppbmNv bXBhdGliaWxpdGllcy4gSXQgcmV1c2VzIGN1cnJlbnQgU1JGSS02OSBjb2RlIGFuZCBpdHMgcHJv Y2VkdXJlcyBhcmUKbW9zdGx5IGJhc2VkIG9uIFNSRkktMTI1IHNwZWNpZmljYXRpb25zIHdpdGgg c29tZSBjaGFuZ2VzLiBJdCBkb2VzIG5vdApkZXBlbmQgb24gU1JGSS0xMjg6IGluc3RlYWQgb2Yg dXNpbmcgY29tcGFyYXRvcnMsIHRoZSBwcm9jZWR1cmVzIGFjY2VwdAp0aGUgc2FtZSBhcmd1bWVu dHMgdGhhdCBhcmUgYWNjZXB0ZWQgYnkgTUFLRS1IQVNILVRBQkxFLiBUaGUgd2Vha25lc3MKYXJn dW1lbnQgaXMgYXMgc3BlY2lmaWVkIGJ5IFNSRkkgMTI2LgotLS0KIG1vZHVsZS9NYWtlZmlsZS5h bSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIG1vZHVsZS9pY2UtOS9nZW5lcmljLWhh c2gtdGFibGVzLnNjbSAgICAgIHwgOTE1ICsrKysrKysrKysrKysrKysrKysrKysKIHRlc3Qtc3Vp dGUvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHRlc3Qtc3VpdGUvdGVz dHMvZ2VuZXJpYy1oYXNoLXRhYmxlcy50ZXN0IHwgNDE1ICsrKysrKysrKysKIDQgZmlsZXMgY2hh bmdlZCwgMTMzMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbW9kdWxlL2ljZS05 L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC1zdWl0ZS90 ZXN0cy9nZW5lcmljLWhhc2gtdGFibGVzLnRlc3QKCmRpZmYgLS1naXQgYS9tb2R1bGUvTWFrZWZp bGUuYW0gYi9tb2R1bGUvTWFrZWZpbGUuYW0KaW5kZXggYzcyZmI5MjI4Li42ZGJhODdjZTggMTAw NjQ0Ci0tLSBhL21vZHVsZS9NYWtlZmlsZS5hbQorKysgYi9tb2R1bGUvTWFrZWZpbGUuYW0KQEAg LTY2LDYgKzY2LDcgQEAgU09VUkNFUyA9CQkJCQlcCiAgIGljZS05L2Z1dHVyZXMuc2NtCQkJCVwK ICAgaWNlLTkvZ2FwLWJ1ZmZlci5zY20JCQkJXAogICBpY2UtOS9nZXRvcHQtbG9uZy5zY20JCQkJ XAorICBpY2UtOS9nZW5lcmljLWhhc2gtdGFibGVzLnNjbSAgICAgICAgICAgICAgICAgXAogICBp Y2UtOS9oYXNoLXRhYmxlLnNjbQkJCQlcCiAgIGljZS05L2hjb25zLnNjbQkJCQlcCiAgIGljZS05 L2hpc3Rvcnkuc2NtCQkJCVwKZGlmZiAtLWdpdCBhL21vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gt dGFibGVzLnNjbSBiL21vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVzLnNjbQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjAzM2MzZWNkYQotLS0gL2Rldi9udWxsCisr KyBiL21vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVzLnNjbQpAQCAtMCwwICsxLDkxNSBA QAorOzs7IGdlbmVyaWMtaGFzaC10YWJsZXMuc2NtIC0tLSBJbnRlcm1lZGlhdGUgaGFzaCB0YWJs ZXMKKworOzsgCUNvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKzs7Cis7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCis7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKzs7IHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7Cis7OyBUaGlzIGxp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK Kzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorOzsgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKzs7Cis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFsb25nIHdpdGgg dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCis7OyBGb3Vu ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLTEzMDEgVVNBCisMCisKKzs7OzsgQ29tbWVudGFyeSBieSBKZXNzaWNhIE1pbGFyZSAy MDE4CisKKzs7IFRoaXMgaW1wbGVtZW50YXRpb24gd2FzIGNyZWF0ZWQgb24gdG9wIG9mIFNSRkkt NjkgKG9sZCkgR3VpbGUgY29kZSwKKzs7IGV4dGVuZGluZyBpdCB0byBzdXBwb3J0IFNSRkktMTI1 IHNwZWNpZmljYXRpb25zIGFuZCBpbnRlbmRlZCB0byBiZQorOzsgdXNlZCBieSBTUkZJLTY5LCBT UkZJLTEyNSwgU1JGSS0xMjYgYW5kIFI2UlMuIE9uZSBzaW5nbGUgaGFzaCB0YWJsZXMKKzs7IGlt cGxlbWVudGF0aW9uIGNvdWxkIGJlIGV4cG9ydGVkIHRvIGFsbCBvZiB0aGVzZSBsaWJyYXJpZXMs IGF2b2lkaW5nCis7OyBkdXBsaWNhdGlvbiBvZiBjb2RlLCBtaXNzaW5nIGZlYXR1cmVzIGFuZCBp bmNvbXBhdGliaWxpdGllcy4KKzs7Cis7OyBIYXNoIHRhYmxlcyBoZXJlIGhhdmUgMiBoYXNoIGZ1 bmN0aW9ucywgb25lIGludGVybmFsICh0aGF0IGlzIHVzZWQgYnkKKzs7IEd1aWxlKSBhbmQgb25l IGV4dGVybmFsICh0aGF0IGlzIHJldHVybmVkIGJ5IGhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbiku Cis7OyBJbnRlcm5hbCBoYXNoIGZ1bmN0aW9ucyBhY2NlcHRzIHR3byBhcmd1bWVudHMsIHdoaWxl IGV4dGVybmFsIGZ1bmN0aW9ucworOzsgYWNjZXB0IG9uZSBhcmd1bWVudCAoYW5kIHBvc3NpYmx5 IG1vcmUgb3B0aW9uYWwgYXJndW1lbnRzKS4KKworOzs7IENvZGU6CisMCis7Ozs7IE1vZHVsZSBk ZWZpbml0aW9uICYgZXhwb3J0cworCisoZGVmaW5lLW1vZHVsZSAoaWNlLTkgZ2VuZXJpYy1oYXNo LXRhYmxlcykKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkJO2FsaXN0LWNvbnMsc2Vjb25k JmMsYXNzb2MKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktOCkgICAgO3JlY2VpdmUKKyAgIzp1 c2UtbW9kdWxlIChzcmZpIHNyZmktOSkKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktOSBnbnUp CisgICM6dXNlLW1vZHVsZSAoaWNlLTkgZm9ybWF0KQorICAjOmV4cG9ydCAoOzsgVHlwZSBjb25z dHJ1Y3RvcnMgJiBwcmVkaWNhdGUKKwkgICAgbWFrZS1oYXNoLXRhYmxlCisgICAgICAgICAgICBo YXNoLXRhYmxlPyBoYXNoLXRhYmxlIGhhc2gtdGFibGUtdW5mb2xkIGFsaXN0LT5oYXNoLXRhYmxl CisgICAgICAgICAgICA7OyBSZWZsZWN0aXZlIHF1ZXJpZXMKKyAgICAgICAgICAgIGhhc2gtdGFi bGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uCisgICAgICAg ICAgICBoYXNoLXRhYmxlLXdlYWtuZXNzIGhhc2gtdGFibGUta2V5LXdlYWtuZXNzIGhhc2gtdGFi bGUtdmFsdWUtd2Vha25lc3MKKyAgICAgICAgICAgIDs7IFByZWRpY2F0ZXMKKyAgICAgICAgICAg IGhhc2gtdGFibGUtbXV0YWJsZT8gaGFzaC10YWJsZS1jb250YWlucz8KKyAgICAgICAgICAgIGhh c2gtdGFibGUtZW1wdHk/IGhhc2gtdGFibGU9PworICAgICAgICAgICAgOzsgQWNjZXNzb3JzCisg ICAgICAgICAgICBoYXNoLXRhYmxlLXJlZiBoYXNoLXRhYmxlLXJlZi9kZWZhdWx0CisgICAgICAg ICAgICA7OyBNdXRhdG9ycworICAgICAgICAgICAgaGFzaC10YWJsZS1zZXQhIGhhc2gtdGFibGUt c2V0LXNpbmdsZSEKKyAgICAgICAgICAgIGhhc2gtdGFibGUtZGVsZXRlISBoYXNoLXRhYmxlLWRl bGV0ZS1zaW5nbGUhCisgICAgICAgICAgICBoYXNoLXRhYmxlLWludGVybiEgaGFzaC10YWJsZS1p bnRlcm4hL2RlZmF1bHQKKyAgICAgICAgICAgIGhhc2gtdGFibGUtdXBkYXRlISBoYXNoLXRhYmxl LXVwZGF0ZSEvZGVmYXVsdAorICAgICAgICAgICAgaGFzaC10YWJsZS1wb3AhIGhhc2gtdGFibGUt Y2xlYXIhCisgICAgICAgICAgICA7OyBUaGUgd2hvbGUgaGFzaCB0YWJsZQorICAgICAgICAgICAg aGFzaC10YWJsZS1zaXplIGhhc2gtdGFibGUtZmluZCBoYXNoLXRhYmxlLWNvdW50CisgICAgICAg ICAgICBoYXNoLXRhYmxlLWtleXMgaGFzaC10YWJsZS12YWx1ZXMgaGFzaC10YWJsZS1lbnRyaWVz CisgICAgICAgICAgICBoYXNoLXRhYmxlLWtleS12ZWN0b3IgaGFzaC10YWJsZS12YWx1ZS12ZWN0 b3IgaGFzaC10YWJsZS1lbnRyeS12ZWN0b3JzCisgICAgICAgICAgICA7OyBNYXBwaW5nIGFuZCBm b2xkaW5nCisgICAgICAgICAgICBoYXNoLXRhYmxlLW1hcCBoYXNoLXRhYmxlLWZvci1lYWNoIGhh c2gtdGFibGUtbWFwISBoYXNoLXRhYmxlLW1hcC0+bGlzdAorICAgICAgICAgICAgaGFzaC10YWJs ZS1mb2xkIGhhc2gtdGFibGUtcHJ1bmUhCisgICAgICAgICAgICA7OyBDb3B5aW5nCisgICAgICAg ICAgICBoYXNoLXRhYmxlLWNvcHkgaGFzaC10YWJsZS1lbXB0eS1jb3B5CisgICAgICAgICAgICA7 OyBDb252ZXJzaW9uCisgICAgICAgICAgICBoYXNoLXRhYmxlLT5hbGlzdAorICAgICAgICAgICAg OzsgSGFzaCB0YWJsZXMgYXMgc2V0cworICAgICAgICAgICAgaGFzaC10YWJsZS11bmlvbiEgaGFz aC10YWJsZS1pbnRlcnNlY3Rpb24hIGhhc2gtdGFibGUtZGlmZmVyZW5jZSEKKyAgICAgICAgICAg IGhhc2gtdGFibGUteG9yIQorICAgICAgICAgICAgOzsgSGFzaGluZworICAgICAgICAgICAgc3Ry aW5nLWNpLWhhc2ggaGFzaC1ieS1pZGVudGl0eSBoYXNoLWJ5LXZhbHVlIGhhc2gpCisgICM6cmUt ZXhwb3J0IChzdHJpbmctaGFzaCkKKyAgIzpyZXBsYWNlIChoYXNoIG1ha2UtaGFzaC10YWJsZSBo YXNoLXRhYmxlPykpCisKKwwKKzs7OzsgSW50ZXJuYWwgaGVscGVyIG1hY3JvcworCis7OyBEZWZp bmUgdGhlc2UgZmlyc3QsIHNvIHRoZSBjb21waWxlciB3aWxsIHBpY2sgdGhlbSB1cC4KKworOzsg SSBhbSBhIG1hY3JvIG9ubHkgZm9yIGVmZmljaWVuY3ksIHRvIGF2b2lkIHZhcmFyZ3MvYXBwbHku CisoZGVmaW5lLW1hY3JvIChoYXNoeC1pbnZva2UgaGFzaHgtcHJvYyBodC12YXIgLiBhcmdzKQor ICAiSW52b2tlIEhBU0hYLVBST0MsIGEgYGhhc2h4LSonIHByb2NlZHVyZSB0YWtpbmcgYSBoYXNo LWZ1bmN0aW9uLAorYXNzb2MtZnVuY3Rpb24sIGFuZCB0aGUgaGFzaC10YWJsZSBhcyBmaXJzdCBh cmdzLiIKKyAgYCgsaGFzaHgtcHJvYyAoaHQtaGFzaC1mdW5jdGlvbiAsaHQtdmFyKQorCQkoaHQt YXNzb2NpYXRvciAsaHQtdmFyKQorCQkoaHQtcmVhbC10YWJsZSAsaHQtdmFyKQorCQkuICxhcmdz KSkKKworKGRlZmluZS1tYWNybyAod2l0aC1oYXNoeC12YWx1ZXMgYmluZGluZ3MgaHQtdmFyIC4g Ym9keS1mb3JtcykKKyAgIkJpbmQgQklORElOR1MgdG8gdGhlIGhhc2gtZnVuY3Rpb24sIGFzc29j aWF0b3IsIGFuZCByZWFsLXRhYmxlIG9mCitIVC1WQVIsIHdoaWxlIGV2YWx1YXRpbmcgQk9EWS1G T1JNUy4iCisgIGAobGV0ICgoLCh0aGlyZCBiaW5kaW5ncykgKGh0LXJlYWwtdGFibGUgLGh0LXZh cikpCisgICAgICAgICAoLChmaXJzdCBiaW5kaW5ncykgKGh0LWhhc2gtZnVuY3Rpb24gLGh0LXZh cikpCisJICgsKHNlY29uZCBiaW5kaW5ncykgKGh0LWFzc29jaWF0b3IgLGh0LXZhcikpKQorICAg ICAuICxib2R5LWZvcm1zKSkKKworKGRlZmluZS1zeW50YXggYXNzZXJ0LW11dGFibGUKKyAgKHN5 bnRheC1ydWxlcyAoKQorICAgICgoYXNzZXJ0LW11dGFibGUgaHQpCisgICAgIChvciAoaGFzaC10 YWJsZS1tdXRhYmxlPyBodCkKKyAgICAgICAgIChlcnJvciAiSGFzaCB0YWJsZSBpcyBub3QgbXV0 YWJsZSIgaHQpKSkpKQorCisMCis7Ozs7IEhhc2hpbmcKKworOzs7IFNSRkktMTI1IGFuZCBSNlJT IGhhc2ggZnVuY3Rpb25zIGFyZSBzdXBwb3NlZCB0byBhY2NlcHQgb25seSBvbmUKKzs7OyBhcmd1 bWVudCwgYnV0IEd1aWxlIHN0YW5kYXJkIGhhc2ggdGFibGVzIG5lZWRzIHR3byBhcmdzLgorOzs7 IFRoZXJlZm9yZSwgdGhlIGhhc2ggZnVuY3Rpb25zIGluc2lkZSB0aGUgaGFzaCB0YWJsZSBhbHdh eXMgYWNjZXB0cworOzs7IG9uZSAocmVxdWlyZWQpIGFyZ3VtZW50IGFuZCBhdCBsZWFzdCBvbmUg cG9zc2libGUgYXJndW1lbnQsIHdoaWNoCis7OzsgbXVzdCBiZSBhIGZpeG51bS4KKworOzs7IFRo ZSBsYXJnZXN0IGZpeG51bSBpcyBpbiBgbW9zdC1wb3NpdGl2ZS1maXhudW0nIGluIG1vZHVsZSAo Z3VpbGUpLAorOzs7IHRob3VnaCBub3QgZG9jdW1lbnRlZCBhbnl3aGVyZSBidXQgbGliZ3VpbGUv bnVtYmVycy5jLgorCisoZGVmaW5lIChjYWxsZXItd2l0aC1kZWZhdWx0LXNpemUgaGFzaC1mbikK KyAgIkFuc3dlciBhIGZ1bmN0aW9uIHRoYXQgbWFrZXMgYG1vc3QtcG9zaXRpdmUtZml4bnVtJyB0 aGUgZGVmYXVsdAorc2Vjb25kIGFyZ3VtZW50IHRvIEhBU0gtRk4sIGEgMi1hcmcgcHJvY2VkdXJl LiIKKyAgKGxhbWJkYSogKG9iaiAjOm9wdGlvbmFsIChzaXplIG1vc3QtcG9zaXRpdmUtZml4bnVt KSkKKyAgICAoaGFzaC1mbiBvYmogc2l6ZSkpKQorCisoZGVmaW5lIGhhc2ggKGNhbGxlci13aXRo LWRlZmF1bHQtc2l6ZSAoQCAoZ3VpbGUpIGhhc2gpKSkKKworKGRlZmluZSBzdHJpbmctY2ktaGFz aCBzdHJpbmctaGFzaC1jaSkKKworKGRlZmluZSBoYXNoLWJ5LWlkZW50aXR5IChjYWxsZXItd2l0 aC1kZWZhdWx0LXNpemUgaGFzaHEpKQorKGRlZmluZSBoYXNoLWJ5LXZhbHVlICAgIChjYWxsZXIt d2l0aC1kZWZhdWx0LXNpemUgaGFzaHYpKQorCisoZGVmaW5lICh3cmFwLWhhc2gtZnVuY3Rpb24g aGFzaC1mdW5jdGlvbikKKyAgKGxhbWJkYSogKG9iaiBzaXplKQorICAgIChtb2R1bG8gKGhhc2gt ZnVuY3Rpb24gb2JqKSBzaXplKSkpCisKKwwKKzs7OzsgUmVmbGVjdGl2ZSBxdWVyaWVzLCBjb25z dHJ1Y3Rpb24sIHByZWRpY2F0ZQorCisoZGVmaW5lIChnZXQtaGFzaC1mdW5jdGlvbnMgZXF1aXYt ZnVuY3Rpb24gaGFzaC1mdW5jdGlvbikKKyAgIlJldHVybnMgYW4gaW50ZXJuYWwgYW5kIGFuIGV4 dGVybmFsIGhhc2ggZnVuY3Rpb24uIgorICAoY29uZAorICAgKGhhc2gtZnVuY3Rpb24gKGNvbmQK KyAgICAgICAgICAgICAgICAgICA7OyBTUkZJLTY5IHNob3VsZCBnaXZlIEhBU0ggYXMgZGVmYXVs dCBoYXNoLWZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICgob3IgKGVxPyAoQCAoZ3VpbGUp IGhhc2gpIGhhc2gtZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAoZXE/IGhhc2gg aGFzaC1mdW5jdGlvbikpCisgICAgICAgICAgICAgICAgICAgICh2YWx1ZXMgKEAgKGd1aWxlKSBo YXNoKSBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICA7OyBUaGVzZSBwcm9jZWR1 cmVzIGRvbid0IG5lZWQgdG8gYmUgd3JhcHBlZC4KKyAgICAgICAgICAgICAgICAgICAoKG9yIChl cT8gc3RyaW5nLWhhc2ggaGFzaC1mdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIChl cT8gc3RyaW5nLWNpLWhhc2ggaGFzaC1mdW5jdGlvbikpCisgICAgICAgICAgICAgICAgICAgICh2 YWx1ZXMgaGFzaC1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAo KG9yIChlcT8gaGFzaHEgaGFzaC1mdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIChl cT8gaGFzaC1ieS1pZGVudGl0eSBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAg KHZhbHVlcyBoYXNocSBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAoKG9yIChl cT8gaGFzaHYgaGFzaC1mdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIChlcT8gaGFz aC1ieS12YWx1ZSBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgKHZhbHVlcyBo YXNodiBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICA7OyBPdGhlcndpc2UsIHdy YXAgdGhlIGdpdmVuIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgIChlbHNlICh2YWx1ZXMg KHdyYXAtaGFzaC1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uKSBoYXNoLWZ1bmN0aW9uKSkpKQorICAg KChlcT8gZXF1YWw/IGVxdWl2LWZ1bmN0aW9uKSAodmFsdWVzIChAIChndWlsZSkgaGFzaCkgaGFz aCkpCisgICAoKGVxPyBlcT8gZXF1aXYtZnVuY3Rpb24pICh2YWx1ZXMgaGFzaHEgaGFzaC1ieS1p ZGVudGl0eSkpCisgICAoKGVxPyBlcXY/IGVxdWl2LWZ1bmN0aW9uKSAodmFsdWVzIGhhc2h2IGhh c2gtYnktdmFsdWUpKQorICAgKChlcT8gc3RyaW5nPT8gZXF1aXYtZnVuY3Rpb24pICh2YWx1ZXMg c3RyaW5nLWhhc2ggc3RyaW5nLWhhc2gpKQorICAgKChlcT8gc3RyaW5nLWNpPT8gZXF1aXYtZnVu Y3Rpb24pICh2YWx1ZXMgc3RyaW5nLWNpLWhhc2ggc3RyaW5nLWNpLWhhc2gpKQorICAgKGVsc2Ug KGVycm9yICJBIHN1aXRhYmxlIGhhc2ggZnVuY3Rpb24gY291bGQgbm90IGJlIGRldGVybWluZWQi IGVxdWl2LWZ1bmN0aW9uKSkpKQorCisoZGVmaW5lIChndWlsZS1odC1jdG9yIHdlYWtuZXNzKQor ICAiQW5zd2VyIHRoZSBHdWlsZSBIVCBjb25zdHJ1Y3RvciBmb3IgdGhlIGdpdmVuIFdFQUtORVNT LCB3aGVyZQorV0VBS05FU1MgaXMgYXMgc3BlY2lmaWVkIGJ5IFNSRkktMTI2LiIKKyAgKGNhc2Ug d2Vha25lc3MKKyAgICAoKCNmKSAoQCAoZ3VpbGUpIG1ha2UtaGFzaC10YWJsZSkpCisgICAgKCh3 ZWFrLWtleSkgbWFrZS13ZWFrLWtleS1oYXNoLXRhYmxlKQorICAgICgod2Vhay12YWx1ZSkgbWFr ZS13ZWFrLXZhbHVlLWhhc2gtdGFibGUpCisgICAgKCh3ZWFrLWtleS1hbmQtdmFsdWUpIG1ha2Ut ZG91Ymx5LXdlYWstaGFzaC10YWJsZSkKKyAgICAoKGVwaGVtZXJhbC1rZXkgZXBoZW1lcmFsLXZh bHVlIGVwaGVtZXJhbC1rZXktYW5kLXZhbHVlKQorICAgICAoZXJyb3IgIlVuc3VwcG9ydGVkIGhh c2ggdGFibGUgd2Vha25lc3MiIHdlYWtuZXNzKSkKKyAgICAoZWxzZSAoZXJyb3IgIkludmFsaWQg aGFzaCB0YWJsZSB3ZWFrbmVzcyIgd2Vha25lc3MpKSkpCisKKyhkZWZpbmUgKGVxdWl2YWxlbmNl LXByb2MtPmFzc29jaWF0b3IgZXF1aXYtZnVuY3Rpb24pCisgICJBbnN3ZXIgYW4gYGFzc29jJy1s aWtlIHByb2NlZHVyZSB0aGF0IGNvbXBhcmVzIHRoZSBhcmd1bWVudCBrZXkgdG8KK2FsaXN0IGtl eXMgd2l0aCBFUVVJVi1GVU5DVElPTi4iCisgIChjb25kICgob3IgKGVxPyBlcXVhbD8gZXF1aXYt ZnVuY3Rpb24pCisJICAgICAoZXE/IHN0cmluZz0/IGVxdWl2LWZ1bmN0aW9uKSkgKEAgKGd1aWxl KSBhc3NvYykpCisJKChlcT8gZXE/IGVxdWl2LWZ1bmN0aW9uKSBhc3NxKQorCSgoZXE/IGVxdj8g ZXF1aXYtZnVuY3Rpb24pIGFzc3YpCisJKGVsc2UgKGxhbWJkYSAoaXRlbSBhbGlzdCkKKwkJKGFz c29jIGl0ZW0gYWxpc3QgZXF1aXYtZnVuY3Rpb24pKSkpKQorCisoZGVmaW5lLXJlY29yZC10eXBl IGdlbmVyaWMtaGFzaC10YWJsZQorICAobWFrZS1nZW5lcmljLWhhc2gtdGFibGUgcmVhbC10YWJs ZSBoYXNoLWZ1bmN0aW9uIGFzc29jaWF0b3Igd2Vha25lc3MKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIG11dGFibGU/IHNpemUgZXF1aXZhbGVuY2UtZnVuY3Rpb24gb3JpZ2luYWwtaGFzaC1m dW5jdGlvbikKKyAgaGFzaC10YWJsZT8KKyAgOzsgVGhlc2UgdGhyZWUgYXJlIHRoZSBtb3N0IGFj Y2Vzc2VkIGZpZWxkcy4KKyAgKHJlYWwtdGFibGUgaHQtcmVhbC10YWJsZSBodC1yZWFsLXRhYmxl ISkKKyAgKGhhc2gtZnVuY3Rpb24gaHQtaGFzaC1mdW5jdGlvbikKKyAgKGFzc29jaWF0b3IgaHQt YXNzb2NpYXRvcikKKyAgOzsgV2VhayBoYXNoIHRhYmxlcyBkb24ndCB1c2UgaGFuZGxlcyBhbmQg ZG9uJ3QgdXBkYXRlIGh0LXNpemUuCisgICh3ZWFrbmVzcyBodC13ZWFrbmVzcykKKyAgOzsgU3Vw cG9ydHMgaW1tdXRhYmlsaXR5LgorICAobXV0YWJsZT8gaGFzaC10YWJsZS1tdXRhYmxlPykKKyAg OzsgU2l6ZSBvZiBoYXNoLXRhYmxlLCBhbGxvd2luZyBPKDEpIGhhc2gtdGFibGUtc2l6ZSBmb3IK KyAgOzsgbm9uLXdlYWsgaGFzaCB0YWJsZXMuCisgIChzaXplIGh0LXNpemUgaHQtc2l6ZSEpCisg IDs7IFRoZXNlIGFyZSBtb3N0bHkgbmVlZGVkIGZvciByZWZsZWN0aXZlIHF1ZXJpZXMKKyAgKGVx dWl2YWxlbmNlLWZ1bmN0aW9uIGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24pCisgIChv cmlnaW5hbC1oYXNoLWZ1bmN0aW9uIGhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbikpCisKKzs7IFNo b3cgc29tZSBpbmZvcm1hdGlvbnMuCisoZGVmaW5lIChwcmludC1oYXNoLXRhYmxlIGh0IHBvcnQp CisgIChsZXQgKChlcXVpdi1uYW1lIChwcm9jZWR1cmUtbmFtZSAoaGFzaC10YWJsZS1lcXVpdmFs ZW5jZS1mdW5jdGlvbiBodCkpKSkKKyAgICAoZm9ybWF0IHBvcnQgIiM8Z2VuZXJpYy1oYXNoLXRh YmxlIH5AW35hIH5dfkBbfmEgfl1zaXplOiB+YSBtdXRhYmxlPyB+YT4iCisgICAgICAgICAgICBl cXVpdi1uYW1lIChodC13ZWFrbmVzcyBodCkKKyAgICAgICAgICAgIChoYXNoLXRhYmxlLXNpemUg aHQpIChoYXNoLXRhYmxlLW11dGFibGU/IGh0KSkpKQorCisoc2V0LXJlY29yZC10eXBlLXByaW50 ZXIhIGdlbmVyaWMtaGFzaC10YWJsZSBwcmludC1oYXNoLXRhYmxlKQorCisoZGVmaW5lIChoYXNo LXRhYmxlLWtleS13ZWFrbmVzcyBodCkKKyAgIlJldHVybnMgV0VBSy1LRVlTIGlmIEhUIGhhcyB3 ZWFrIGtleXMsIG9yICNmIG90aGVyd2lzZS4iCisgIDs7IElmIEd1aWxlIGV2ZXIgc3VwcG9ydHMg ZXBoZW1lcmFsIGtleXMsIHRoaXMgcHJvY2VkdXJlIHNob3VsZAorICA7OyByZXR1cm4gRVBIRU1F UkFMLUtFWVMgaWYgdGhlIEhUIGtleXMgYXJlIGVwaGVtZXJhbC4KKyAgKGNhc2UgKGh0LXdlYWtu ZXNzIGh0KQorICAgICgoI2Ygd2Vhay12YWx1ZSkgI2YpCisgICAgKCh3ZWFrLWtleSB3ZWFrLWtl eS1hbmQtdmFsdWUpICd3ZWFrLWtleXMpKSkKKworKGRlZmluZSAoaGFzaC10YWJsZS12YWx1ZS13 ZWFrbmVzcyBodCkKKyAgIlJldHVybnMgV0VBSy1WQUxVRVMgaWYgSFQgaGFzIHdlYWsgdmFsdWVz LCBvciAjZiBvdGhlcndpc2UuIgorICA7OyBJZiBHdWlsZSBldmVyIHN1cHBvcnRzIGVwaGVtZXJh bCB2YWx1ZXMsIHRoaXMgcHJvY2VkdXJlIHNob3VsZAorICA7OyByZXR1cm4gRVBIRU1FUkFMLVZB TFVFUyBpZiB0aGUgSFQgdmFsdWVzIGFyZSBlcGhlbWVyYWwuCisgIChjYXNlIChodC13ZWFrbmVz cyBodCkKKyAgICAoKCNmIHdlYWsta2V5KSAjZikKKyAgICAoKHdlYWstdmFsdWUgd2Vhay1rZXkt YW5kLXZhbHVlKSAnd2Vhay12YWx1ZXMpKSkKKworKGRlZmluZSAoaGFzaC10YWJsZS13ZWFrbmVz cyBodCkKKyAgIlJldHVybiB0aGUgd2Vha25lc3Mgb2YgSFQgYWNjb3JkaW5nIHRvIFNSRkktMTI2 IHNwZWMuIgorICAoaHQtd2Vha25lc3MgaHQpKQorCis7OyBUaGlzIGludGVybmFsIGZ1bmN0aW9u IGFsbG93cyB1cyB0byBjcmVhdGUgaW1tdXRhYmxlIGhhc2ggdGFibGVzCisoZGVmaW5lICglbWFr ZS1oYXNoLXRhYmxlIGVxdWl2LWZ1bmN0aW9uIGhhc2gtZnVuY3Rpb24gbXV0YWJsZSBjYXBhY2l0 eSB3ZWFrbmVzcykKKyAgKHJlY2VpdmUgKGludGVybmFsLWhhc2gtZnVuY3Rpb24gaGFzaC1mdW5j dGlvbikKKyAgICAgIChnZXQtaGFzaC1mdW5jdGlvbnMgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5j dGlvbikKKyAgICAobGV0ICgocmVhbC10YWJsZSAoKGd1aWxlLWh0LWN0b3Igd2Vha25lc3MpIGNh cGFjaXR5KSkpCisgICAgICA7OyBBcmd1bWVudHM6IHJlYWwtdGFibGUgaGFzaC1mdW5jdGlvbiBh c3NvY2lhdG9yCisgICAgICA7OyAgICAgICAgICAgIHdlYWtuZXNzIG11dGFibGU/IHNpemUgZXF1 aXZhbGVuY2UtZnVuY3Rpb24gb3JpZy1oYXNoLWZ1bmN0aW9uCisgICAgICAobWFrZS1nZW5lcmlj LWhhc2gtdGFibGUgcmVhbC10YWJsZSBpbnRlcm5hbC1oYXNoLWZ1bmN0aW9uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGVxdWl2YWxlbmNlLXByb2MtPmFzc29jaWF0b3IgZXF1aXYt ZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha25lc3MgKGFuZCBt dXRhYmxlICN0KSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXYtZnVuY3Rp b24gaGFzaC1mdW5jdGlvbikpKSkKKworOzsgSWYgdGhlIGxpc3Qgb2YgYXJndW1lbnRzIGlzIHVw ZGF0ZWQsIEhBU0gtVEFCTEUsIEFMSVNULT5IQVNILVRBQkxFLAorOzsgSEFTSC1UQUJMRS1VTkZP TEQgYW5kIEhBU0gtVEFCTEUtTUFQIHNob3VsZCBiZSB1cGRhdGVkIGFzIHdlbGwuCisoZGVmaW5l KiAobWFrZS1oYXNoLXRhYmxlIGVxdWl2LWZ1bmN0aW9uIGhhc2gtZnVuY3Rpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIzprZXkgKGNhcGFjaXR5IDEpICh3ZWFrbmVzcyAjZikgIzpyZXN0 IGFyZ3MpCisgICJDcmVhdGVzIGEgbmV3IGhhc2ggdGFibGUuIEVRVUlWLUZVTkNUSU9OIGlzIHVz ZWQgYXMgdGhlIGNvbXBhcmlzb24KK2Z1bmN0aW9uIGFuZCBIQVNILUZVTkNUSU9OLCBpZiBub3Qg ZmFsc2UsIGlzIHVzZWQgYXMgdGhlIGhhc2ggZnVuY3Rpb24sCitvdGhlcndpc2UgYSBzdWl0YWJs ZSBoYXNoLWZ1bmN0aW9uIGZvciB0aGUgaGFzaCB0YWJsZSBpcyBndWVzc2VkIG9yLCBpZgorb25l IGNhbid0IGJlIGd1ZXNzZWQsIGFuIGVycm9yIGlzIHNpZ25hbGVkLiAjOldFQUtORVNTIHNob3Vs ZCBiZSBlaXRoZXIKKyNmLCBXRUFLLUtFWSwgV0VBSy1WQUxVRSBvciBXRUFLLUtFWS1BTkQtVkFM VUUsIGFzIHNwZWNpZmllZCBieQorU1JGSS0xMjYuICM6Q0FQQUNJVFkgaXMgdGhlIG1pbmltYWwg bnVtYmVyIG9mIGJ1Y2tldHMgb2YgdGhlIGhhc2ggdGFibGUuCisKK0FSR1MgaXMgaWdub3JlZCBh bmQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiIKKyAgKCVtYWtlLWhhc2gtdGFibGUg ZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlvbiAjdCBjYXBhY2l0eSB3ZWFrbmVzcykpCisKKzs7 IFdlIHVzZSB0aGlzIHRvIGRlbm90ZSBtaXNzaW5nIG9yIHVuc3BlY2lmaWVkIHZhbHVlcyB0byBh dm9pZAorOzsgcG9zc2libGUgY29sbGlzaW9uIHdpdGggKnVuc3BlY2lmaWVkKi4KKworKGRlZmlu ZSBodC11bnNwZWNpZmllZCAoY29ucyAqdW5zcGVjaWZpZWQqICJodC12YWx1ZSIpKQorCisoZGVm aW5lKiAoaGFzaC10YWJsZSBlcXVpdi1mdW5jdGlvbi1vci1taHQtYXJncyAuIGFyZ3MpCisgICJD cmVhdGVzIGEgbmV3IGltbXV0YWJsZSBoYXNoIHRhYmxlIHdpdGggdGhlIGFzc29jaWF0aW9ucyBn aXZlbiBieQorQVJHUy4gSWYgRVFVSVYtRlVOQ1RJT04tT1ItTUhULUFSR1MgaXMgYSBsaXN0LCB0 aGUgbmV3IGhhc2ggdGFibGUgaXMKK2NyZWF0ZWQgYnkgKEFQUExZIE1BS0UtSEFTSC1UQUJMRSBF UVVJVi1GVU5DVElPTi1PUi1NSFQtQVJHUyksIG90aGVyd2lzZQoraXQgaXMgY3JlYXRlZCBieSAo TUFLRS1IQVNILVRBQkxFIEVRVUlWLUZVTkNUSU9OLU9SLU1IVC1BUkdTKSB3aXRoIHRoZQoraW5p dGlhbCBjYXBhY2l0eSBzZXQgdG8gdGhlIG51bWJlciBvZiBhc3NvY2lhdGlvbnMgaW4gYXJncy4K KworVGhlIEFSR1MgYWx0ZXJuYXRlIGJldHdlZW4ga2V5cyBhbmQgdmFsdWVzLiBJZiB0aGUgc2Ft ZSBrZXkgKGluIHRoZQorc2Vuc2Ugb2YgdGhlIGVxdWFsaXR5IHByb2NlZHVyZSkgaXMgc3BlY2lm aWVkIG1vcmUgdGhlbiBvbmNlLCBhbiBlcnJvcgoraXMgc2lnbmFsZWQuIgorICAobGV0ICgobGVu IChsZW5ndGggYXJncykpKQorICAgICh1bmxlc3MgKGV2ZW4/IGxlbikKKyAgICAgIChlcnJvciAi T2RkIG51bWJlciBvZiBrZXktdmFsdWUgcGFpcnMiIGFyZ3MpKQorICAgIChsZXQqICgoY2FwYWNp dHkgKHF1b3RpZW50IGxlbiAyKSkKKyAgICAgICAgICAgKGh0IChpZiAocGFpcj8gZXF1aXYtZnVu Y3Rpb24tb3ItbWh0LWFyZ3MpCisgICAgICAgICAgICAgICAgICAgKGNvbmQgKChudWxsPyBlcXVp di1mdW5jdGlvbi1vci1taHQtYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgU1JG SS0xMjUgU3BlYyBzYXlzIHRoaXMgc2hvdWxkIHJldHVybiBhbiBpbW11dGFibGUgaGFzaCB0YWJs ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAoJW1ha2UtaGFzaC10YWJsZSBlcXVhbD8gI2Yg I2YgY2FwYWNpdHkgI2YpKQorICAgICAgICAgICAgICAgICAgICAgICAgICgobnVsbD8gKGNkciBl cXVpdi1mdW5jdGlvbi1vci1taHQtYXJncykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICgl bWFrZS1oYXNoLXRhYmxlIChjYXIgZXF1aXYtZnVuY3Rpb24tb3ItbWh0LWFyZ3MpICNmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmIGNhcGFjaXR5ICNmKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAoKG51bGw/IChjZGRyIGVxdWl2LWZ1bmN0aW9uLW9y LW1odC1hcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCVtYWtlLWhhc2gtdGFibGUg KGNhciBlcXVpdi1mdW5jdGlvbi1vci1taHQtYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNhZHIgZXF1aXYtZnVuY3Rpb24tb3ItbWh0LWFyZ3MpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmIGNhcGFjaXR5ICNm KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZWxzZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAoYXBwbHkgKGxhbWJkYSogKGVxdWl2LWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICM6a2V5IChtdXRhYmxlICNmKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXBhY2l0eSBjYXBhY2l0eSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2Vha25lc3MgI2YpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpyZXN0IGFyZ3MpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICglbWFrZS1oYXNoLXRhYmxlIGVxdWl2LWZ1 bmN0aW9uIGhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbXV0YWJsZSBjYXBhY2l0eSB3ZWFrbmVzcykpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGVxdWl2LWZ1bmN0aW9uLW9yLW1odC1hcmdzKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhZHIgZXF1aXYtZnVuY3Rpb24tb3It bWh0LWFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNhcGFjaXR5IGNh cGFjaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RkciBlcXVpdi1mdW5j dGlvbi1vci1taHQtYXJncykpKSkKKyAgICAgICAgICAgICAgICAgICAoJW1ha2UtaGFzaC10YWJs ZSBlcXVpdi1mdW5jdGlvbi1vci1taHQtYXJncyAjZiAjZiBjYXBhY2l0eSAjZikpKSkKKyAgICAg ICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFibGUpIGh0CisgICAgICAgIChpZiAoaHQt d2Vha25lc3MgaHQpCisgICAgICAgICAgICAobGV0IGxvb3AgKChrdnMgYXJncykpCisgICAgICAg ICAgICAgIChjb25kCisgICAgICAgICAgICAgICAoKG51bGw/IGt2cykgI2YpCisgICAgICAgICAg ICAgICAoKG5vdCAoZXE/IGh0LXVuc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgICAgICAg IChoYXNoeC1yZWYgaCBhIHJlYWwtdGFibGUgKGNhciBrdnMpIGh0LXVuc3BlY2lmaWVkKSkpCisg ICAgICAgICAgICAgICAgKGVycm9yICJUd28gZXF1aXZhbGVudCBrZXlzIHdlcmUgcHJvdmlkZWQi CisgICAgICAgICAgICAgICAgICAgICAgIChjYXIgKG1lbWJlciAoY2FyIGt2cykgKGhhc2gtdGFi bGUta2V5cyBodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoLXRh YmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0KSkpCisgICAgICAgICAgICAgICAgICAgICAgIChj YXIga3ZzKSkpCisgICAgICAgICAgICAgICAoZWxzZSAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJs ZSAoY2FyIGt2cykgKGNhZHIga3ZzKSkKKyAgICAgICAgICAgICAgICAgICAgIChsb29wIChjZGRy IGt2cykpKSkpCisgICAgICAgICAgICAobGV0IGxvb3AgKChrdnMgYXJncykpCisgICAgICAgICAg ICAgIChjb25kCisgICAgICAgICAgICAgICAoKG51bGw/IGt2cykgI2YpCisgICAgICAgICAgICAg ICAoZWxzZSAobGV0ICgoaGFuZGxlIChoYXNoeC1jcmVhdGUtaGFuZGxlISBoIGEgcmVhbC10YWJs ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNhciBrdnMpIGh0LXVuc3BlY2lmaWVkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICh1 bmxlc3MgKGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgKGVycm9yICJUd28gZXF1aXZhbGVudCBrZXlzIHdlcmUgcHJvdmlkZWQiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgaGFuZGxlKSAoY2FyIGt2cykpKQorICAg ICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlIChjYWRyIGt2cykpKQorICAgICAg ICAgICAgICAgICAgICAgKGxvb3AgKGNkZHIga3ZzKSkpKQorICAgICAgICAgICAgICAoaHQtc2l6 ZSEgaHQgY2FwYWNpdHkpKSkpCisgICAgICBodCkpKQorCisoZGVmaW5lKiAoaGFzaC10YWJsZS11 bmZvbGQgc3RvcD8gbWFwcGVyIHN1Y2Nlc3NvciBzZWVkCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICM6a2V5IChtdXRhYmxlICN0KSAod2Vha25lc3MgI2YpIChjYXBhY2l0eSAxKSAjOnJl c3QgYXJncykKKyAgIlJldHVybnMgYSBuZXcgaGFzaCB0YWJsZSBjcmVhdGVkIGJ5IE1BS0UtSEFT SC1UQUJMRSB3aXRoIHRoZSBnaXZlbgorYXJndW1lbnRzLiBJZiB0aGUgcmVzdWx0IG9mIGFwcGx5 aW5nIHRoZSBwcmVkaWNhdGUgU1RPUD8gdG8gU0VFRCBpcwordHJ1ZSwgcmV0dXJucyB0aGUgaGFz aCB0YWJsZS4gT3RoZXJ3aXNlLCBhcHBseSB0aGUgcHJvY2VkdXJlIE1BUFBFUiB0bworU0VFRC4g TUFQUEVSIHJldHVybnMgdHdvIHZhbHVlcywgd2hpY2ggYXJlIGluc2VydGVkIGludG8gdGhlIGhh c2ggdGFibGUKK2FzIHRoZSBrZXkgYW5kIHRoZSB2YWx1ZSByZXNwZWN0aXZlbHkuIFRoZW4gZ2V0 IGEgbmV3IHNlZWQgYnkgYXBwbHlpbmcKK3RoZSBwcm9jZWR1cmUgU1VDQ0VTU09SIHRvIFNFRUQs IGFuZCByZXBlYXQgdGhpcyBhbGdvcml0aG0uIgorICAobGV0ICgocmVzdWx0ICglbWFrZS1oYXNo LXRhYmxlIGVxdWl2LWZ1bmN0aW9uIGhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtdXRhYmxlIGNhcGFjaXR5IHdlYWtuZXNzKSkpCisgICAgKHdpdGgtaGFz aHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgcmVzdWx0CisgICAgICAoaWYgKGh0LXdlYWtuZXNz IHJlc3VsdCkKKyAgICAgICAgICAobGV0IGxvb3AgKChzZWVkIHNlZWQpKQorICAgICAgICAgICAg KGlmIChzdG9wPyBzZWVkKQorICAgICAgICAgICAgICAgIHJlc3VsdAorICAgICAgICAgICAgICAg IChyZWNlaXZlIChrZXkgdmFsKSAobWFwcGVyIHNlZWQpCisgICAgICAgICAgICAgICAgICAoaGFz aHgtc2V0ISBoIGEgcmVhbC10YWJsZSBrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgKGxvb3Ag KHN1Y2Nlc3NvciBzZWVkKSkpKSkKKyAgICAgICAgICAobGV0ICgoc2l6ZSAoaHQtc2l6ZSByZXN1 bHQpKSkKKyAgICAgICAgICAgIChsZXQgbG9vcCAoKHNlZWQgc2VlZCkpCisgICAgICAgICAgICAg IChpZiAoc3RvcD8gc2VlZCkKKyAgICAgICAgICAgICAgICAgIHJlc3VsdAorICAgICAgICAgICAg ICAgICAgKHJlY2VpdmUgKGtleSB2YWwpIChtYXBwZXIgc2VlZCkKKyAgICAgICAgICAgICAgICAg ICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRlLWhhbmRsZSEgaCBhIHJlYWwtdGFibGUga2V5 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGh0LXVuc3BlY2lmaWVkKSkpCisgICAgICAgICAgICAgICAgICAgICAgKGlmIChlcT8gaHQtdW5z cGVjaWZpZWQgKGNkciBoYW5kbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ISBz aXplICgrIDEgc2l6ZSkpKQorICAgICAgICAgICAgICAgICAgICAgIChzZXQtY2RyISBoYW5kbGUg dmFsKSkKKyAgICAgICAgICAgICAgICAgICAgKGxvb3AgKHN1Y2Nlc3NvciBzZWVkKSkpKSkKKyAg ICAgICAgICAgIChodC1zaXplISByZXN1bHQgc2l6ZSkpKSkKKyAgICByZXN1bHQpKQorCisoZGVm aW5lKiAoYWxpc3QtPmhhc2gtdGFibGUgYWxpc3QgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlv bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6a2V5IChtdXRhYmxlICN0KSAoY2FwYWNp dHkgKGxlbmd0aCBhbGlzdCkpICh3ZWFrbmVzcyAjZikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjOnJlc3QgYXJncykKKyAgIlJldHVybnMgYSBuZXcgaGFzaC10YWJsZSBjcmVhdGVkIGJ5 IE1BS0UtSEFTSC1UQUJMRSB3aXRoIHRoZSBnaXZlbgorYXJndW1lbnRzLiBJdCBpcyBpbml0aWFs aXplZCBmcm9tIHRoZSBhc3NvY2lhdGlvbnMgb2YgYWxpc3QuCitBc3NvY2lhdGlvbnMgZWFybGll ciBpbiB0aGUgbGlzdCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aG9zZSB0aGF0Citjb21lIGxhdGVy LiIKKyAgKGxldCAoKHJlc3VsdCAoJW1ha2UtaGFzaC10YWJsZSBlcXVpdi1mdW5jdGlvbiBoYXNo LWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YWJsZSBjYXBh Y2l0eSB3ZWFrbmVzcykpKQorICAgICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFibGUp IHJlc3VsdAorICAgICAgKGlmIChodC13ZWFrbmVzcyByZXN1bHQpCisgICAgICAgICAgKGZvci1l YWNoIChsYW1iZGEgKHBhaXIpCisgICAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXNldCEgaCBh IHJlYWwtdGFibGUgKGNhciBwYWlyKSAoY2RyIHBhaXIpKSkKKyAgICAgICAgICAgICAgICAgICAg KHJldmVyc2UgYWxpc3QpKQorICAgICAgICAgIChsZXQgKChzaXplIChodC1zaXplIHJlc3VsdCkp KQorICAgICAgICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHBhaXIpCisgICAgICAgICAgICAgICAg ICAgICAgICAobGV0ICgoaGFuZGxlIChoYXNoeC1jcmVhdGUtaGFuZGxlIQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaCBhIHJlYWwtdGFibGUgKGNhciBwYWlyKSBodC11 bnNwZWNpZmllZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoZXE/IGh0LXVu c3BlY2lmaWVkIChjZHIgaGFuZGxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 ISBzaXplICgrIDEgc2l6ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIh IGhhbmRsZSAoY2RyIHBhaXIpKSkpKQorICAgICAgICAgICAgICAgICAgICAgIGFsaXN0KQorICAg ICAgICAgICAgKGh0LXNpemUhIHJlc3VsdCBzaXplKSkpKQorICAgIHJlc3VsdCkpCisKKwwKKzs7 OzsgQWNjZXNzaW5nIHRhYmxlIGl0ZW1zCisKKyhkZWZpbmUqIChoYXNoLXRhYmxlLXJlZiBodCBr ZXkgIzpvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgIChmYWlsdXJlIChsYW1iZGEg KCkgKGVycm9yICJLZXkgbm90IGluIHRhYmxlIiBrZXkgaHQpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICBzdWNjZXNzKQorICAiRXh0cmFjdHMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgdG8gS0VZ IGluIEhULCBpbnZva2VzIHRoZSBwcm9jZWR1cmUKK1NVQ0NFU1Mgb24gaXQsIGFuZCByZXR1cm5z IGl0cyByZXN1bHQ7IGlmIFNVQ0NFU1MgaXMgbm90IHByb3ZpZGVkLCB0aGVuCit0aGUgdmFsdWUg aXRzZWxmIGlzIHJldHVybmVkLiBJZiBrZXkgaXMgbm90IGNvbnRhaW5lZCBpbiBoYXNoLXRhYmxl IGFuZAorRkFJTFVSRSBpcyBzdXBwbGllZCwgdGhlbiBGQUlMVVJFIGlzIGludm9rZWQgb24gbm8g YXJndW1lbnRzIGFuZCBpdHMKK3Jlc3VsdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCBhbiBlcnJv ciBpcyBzaWduYWxlZC4iCisgIChsZXQgKChyZXN1bHQgKGhhc2h4LWludm9rZSBoYXNoeC1yZWYg aHQga2V5IGh0LXVuc3BlY2lmaWVkKSkpCisgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgcmVz dWx0KQorICAgICAgICAoZmFpbHVyZSkKKyAgICAgICAgKGlmIHN1Y2Nlc3MgKHN1Y2Nlc3MgcmVz dWx0KSByZXN1bHQpKSkpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQga2V5 IGRlZmF1bHQpCisgICJMb29rdXBzIEtFWSBpbiBIVCBhbmQgcmV0dXJucyB0aGUgYXNzb2NpYXRl ZCB2YWx1ZS4gUmV0dXJucyBERUZBVUxUIGlmCitLRVkgaXNuJ3QgcHJlc2VudC4iCisgIChoYXNo eC1pbnZva2UgaGFzaHgtcmVmIGh0IGtleSBkZWZhdWx0KSkKKworDAorOzs7IFByZWRpY2F0ZXMu CisKKzs7IChkZWZpbmUgKGhhc2gtdGFibGU/IG9iaikpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUt ZW1wdHk/IGh0KQorICAiUmV0dXJucyB3aGV0aGVyIEtFWSBpcyBlbXB0eS4iCisgIChpZiAoaHQt d2Vha25lc3MgaHQpCisgICAgICAoY2FsbC9jYyAobGFtYmRhIChleGl0KQorICAgICAgICAgICAg ICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKSAoZXhpdCAjZikpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChodC1yZWFsLXRhYmxlIGh0KSkKKyAgICAgICAgICAg ICAgICAgI3QpKQorICAgICAgKHplcm8/IChodC1zaXplIGh0KSkpKQorCisoZGVmaW5lIChoYXNo LXRhYmxlLWNvbnRhaW5zPyBodCBrZXkpCisgICJSZXR1cm4gd2hldGhlciBLRVkgaXMgYSBrZXkg aW4gSFQuIgorICAobm90IChlcT8gaHQtdW5zcGVjaWZpZWQgKGhhc2h4LWludm9rZSBoYXNoeC1y ZWYgaHQga2V5IGh0LXVuc3BlY2lmaWVkKSkpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlPT8gdmFs PT8gaHQxIGh0MikKKyAgIlJldHVybnMgI3QgaWYgdGhlIGhhc2ggdGFibGVzIEhUMSBhbmQgSFQy IGhhdmUgdGhlIHNhbWUga2V5cyAoaW4gdGhlCitzZW5zZSBvZiB0aGVpciBjb21tb24gZXF1YWxp dHkgcHJlZGljYXRlKSBhbmQgZWFjaCBrZXkgaGFzIHRoZSBzYW1lCit2YWx1ZSAoaW4gdGhlIHNl bnNlIG9mIFZBTD0/KSwgYW5kICNmIG90aGVyd2lzZS4iCisgIChsZXQgKChuMSAoaGFzaC10YWJs ZS1zaXplIGh0MSkpCisgICAgICAgIChuMiAoaGFzaC10YWJsZS1zaXplIGh0MikpKQorICAgIChh bmQgKD0gbjEgbjIpCisgICAgICAgICAoZXE/IChoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0 aW9uIGh0MSkKKyAgICAgICAgICAgICAgKGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24g aHQyKSkKKyAgICAgICAgIChyZWNlaXZlIChrZXlzIHZhbHMpIChoYXNoLXRhYmxlLWVudHJpZXMg aHQxKQorICAgICAgICAgICAoZXZlcnkgKGxhbWJkYSAoa2V5IHZhbDEpCisgICAgICAgICAgICAg ICAgICAgIChhbmQgKGhhc2gtdGFibGUtY29udGFpbnM/IGh0MiBrZXkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKHZhbD0/IHZhbDEgKGhhc2gtdGFibGUtcmVmIGh0MiBrZXkpKSkpCisgICAg ICAgICAgICAgICAgICBrZXlzIHZhbHMpKSkpKQorCisMCis7OzsgTXV0YXRvcnMuCisKKyhkZWZp bmUgKGhhc2gtdGFibGUtc2V0LXNpbmdsZSEgaHQga2V5IHZhbCkKKyAgIklmIEhUIGlzIGltbXV0 YWJsZSwgYW4gZXJyb3IgaXMgc2lnbmFsZWQuIE90aGVyd2lzZSwgYSBuZXcKK2Fzc29jaWF0aW9u IGlzIGNyZWF0ZWQgYmV0d2VlbiBLRVkgYW5kIFZBTC4gSWYgdGhlcmUgaXMgYSBwcmV2aW91cwor YXNzb2NpYXRpb24gZm9yIEtFWSwgaXQgaXMgZGVsZXRlZC4iCisgIChhc3NlcnQtbXV0YWJsZSBo dCkKKyAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgaHQKKyAgICAoaWYgKGh0 LXdlYWtuZXNzIGh0KQorICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSBrZXkgdmFs KQorICAgICAgICAobGV0ICgoaGFuZGxlIChoYXNoeC1jcmVhdGUtaGFuZGxlIQorICAgICAgICAg ICAgICAgICAgICAgICBoIGEgcmVhbC10YWJsZSBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAg aHQtdW5zcGVjaWZpZWQpKSkKKyAgICAgICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAoY2Ry IGhhbmRsZSkpCisgICAgICAgICAgICAgIChodC1zaXplISBodCAoKyAxIChodC1zaXplIGh0KSkp KQorICAgICAgICAgIChzZXQtY2RyISBoYW5kbGUgdmFsKSkpKSkKKworKGRlZmluZSogKGhhc2gt dGFibGUtc2V0ISBodCAjOm9wdGlvbmFsIChrZXkxIGh0LXVuc3BlY2lmaWVkKSAodmFsMSBodC11 bnNwZWNpZmllZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIzpyZXN0IGFyZ3MpCisgICJJ ZiBIVCBpcyBpbW11dGFibGUsIGFuIGVycm9yIGlzIHNpZ25hbGVkLiBPdGhlcndpc2UsIHJlcGVh dGVkbHkKK211dGF0ZXMgdGhlIGhhc2ggdGFibGUgSFQsIGNyZWF0aW5nIG5ldyBhc3NvY2lhdGlv bnMgaW4gaXQgYnkgcHJvY2Vzc2luZwordGhlIGFyZ3VtZW50cyBmcm9tIGxlZnQgdG8gcmlnaHQu IFRoZSBBUkdTIGFsdGVybmF0ZSBiZXR3ZWVuIGtleXMgYW5kCit2YWx1ZXMuIFdoZW5ldmVyIHRo ZXJlIGlzIGEgcHJldmlvdXMgYXNzb2NpYXRpb24gZm9yIGEga2V5LCBpdCBpcworZGVsZXRlZC4i CisgIChpZiAobnVsbD8gYXJncykKKyAgICAgIChpZiAoZXE/IHZhbDEgaHQtdW5zcGVjaWZpZWQp CisgICAgICAgICAgKGlmIChlcT8ga2V5MSBodC11bnNwZWNpZmllZCkKKyAgICAgICAgICAgICAg OzsgSWYgb25lIGNhbGxzIChoYXNoLXRhYmxlLXNldCEgaHQpIHdpdGggYW4KKyAgICAgICAgICAg ICAgOzsgaW1tdXRhYmxlIGhhc2ggdGFibGUsIHNvbWV0aGluZyBpcyByZWFsbHkgd3JvbmcuCisg ICAgICAgICAgICAgIChhc3NlcnQtbXV0YWJsZSBodCkKKyAgICAgICAgICAgICAgKGVycm9yICJO byB2YWx1ZSBwcm92aWRlZCBmb3Iga2V5IiBrZXkxKSkKKyAgICAgICAgICAoaGFzaC10YWJsZS1z ZXQtc2luZ2xlISBodCBrZXkxIHZhbDEpKQorICAgICAgKGJlZ2luCisgICAgICAgIChhc3NlcnQt bXV0YWJsZSBodCkKKyAgICAgICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkg aHQKKyAgICAgICAgICAobGV0ICgoc2V0LW9uZSEgKGlmIChodC13ZWFrbmVzcyBodCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGtleSB2YWwpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRlLWhhbmRs ZSEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCBhIHJl YWwtdGFibGUga2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGh0LXVuc3BlY2lmaWVkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgKGNkciBoYW5kbGUpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoaHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlIHZhbCkpKSkp KQorICAgICAgICAgICAgKHNldC1vbmUhIGtleTEgdmFsMSkKKyAgICAgICAgICAgIChsZXQgbG9v cCAoKGt2cyBhcmdzKSkKKyAgICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICgobnVs bD8ga3ZzKSAqdW5zcGVjaWZpZWQqKQorICAgICAgICAgICAgICAgKChudWxsPyAoY2RyIGt2cykp CisgICAgICAgICAgICAgICAgKGVycm9yICJPZGQgbnVtYmVyIG9mIGtleS12YWx1ZSBwYWlycyIK KyAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMqIGtleTEgdmFsMSBhcmdzKSkpCisgICAgICAg ICAgICAgICAoZWxzZSAoc2V0LW9uZSEgKGNhciBrdnMpIChjYWRyIGt2cykpCisgICAgICAgICAg ICAgICAgICAgICAobG9vcCAoY2RkciBrdnMpKSkpKSkpKSkpCisKKyhkZWZpbmUgKGhhc2gtdGFi bGUtZGVsZXRlLXNpbmdsZSEgaHQga2V5KQorICAiRGVsZXRlcyBLRVkgYW5kIGFzc29jaWF0ZWQg dmFsdWUgaW4gaGFzaCB0YWJsZSBIVC4gUmV0dXJucyAjdCBpZiBLRVkKK2hhZCBhbiBhc3NvY2lh dGlvbiBhbmQgI2Ygb3RoZXJ3aXNlLiIKKyAgKGFzc2VydC1tdXRhYmxlIGh0KQorICAod2l0aC1o YXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSBodAorICAgIChpZiAoZXE/IGh0LXVuc3BlY2lm aWVkIChoYXNoeC1yZWYgaCBhIHJlYWwtdGFibGUga2V5IGh0LXVuc3BlY2lmaWVkKSkKKyAgICAg ICAgI2YKKyAgICAgICAgKGJlZ2luIChoYXNoeC1yZW1vdmUhIGggYSByZWFsLXRhYmxlIGtleSkK KyAgICAgICAgICAgICAgIChodC1zaXplISBodCAoLSAoaHQtc2l6ZSBodCkgMSkpCisgICAgICAg ICAgICAgICAjdCkpKSkKKworKGRlZmluZSogKGhhc2gtdGFibGUtZGVsZXRlISBodCAjOm9wdGlv bmFsIChrZXkxIGh0LXVuc3BlY2lmaWVkKSAjOnJlc3Qga2V5cykKKyAgIkRlbGV0ZXMgYW55IGFz c29jaWF0aW9uIHRvIGVhY2gga2V5IGluIGhhc2ggdGFibGUgSFQgYW5kIHJldHVybnMgdGhlCitu dW1iZXIgb2Yga2V5cyB0aGF0IGhhZCBhc3NvY2lhdGlvbnMuIgorICAoaWYgKG51bGw/IGtleXMp CisgICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCBrZXkxKQorICAgICAgICAgIChiZWdpbiAo YXNzZXJ0LW11dGFibGUgaHQpIDApCisgICAgICAgICAgKGlmIChoYXNoLXRhYmxlLWRlbGV0ZS1z aW5nbGUhIGh0IGtleTEpIDEgMCkpCisgICAgICAoYmVnaW4KKyAgICAgICAgKGFzc2VydC1tdXRh YmxlIGh0KQorICAgICAgICAobGV0KiAoKGNvdW50IDApCisgICAgICAgICAgICAgICAoZGVsZXRl LW9uZSEgKGxhbWJkYSAoa2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgt aGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgaHQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHdoZW4gKG5vdCAoZXE/IGh0LXVuc3BlY2lmaWVkCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgtcmVmIGggYSByZWFsLXRhYmxl IGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBodC11bnNwZWNpZmllZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzZXQhIGNvdW50ICgrIDEgY291bnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChoYXNoeC1yZW1vdmUhIGggYSByZWFsLXRhYmxlIGtleSkpKSkpKQorICAgICAgICAg IChkZWxldGUtb25lISBrZXkxKQorICAgICAgICAgIChmb3ItZWFjaCBkZWxldGUtb25lISBrZXlz KQorICAgICAgICAgICh1bmxlc3MgKG9yIChodC13ZWFrbmVzcyBodCkgKHplcm8/IGNvdW50KSkK KyAgICAgICAgICAgIChodC1zaXplISBodCAoLSAoaHQtc2l6ZSBodCkgY291bnQpKSkKKyAgICAg ICAgICBjb3VudCkpKSkKKworKGRlZmluZSAoaGFzaC10YWJsZS1pbnRlcm4hIGh0IGtleSBmYWls dXJlKQorICAiRWZmZWN0aXZlbHkgaW52b2tlcyBIQVNILVRBQkxFLVJFRiB3aXRoIHRoZSBnaXZl biBhcmd1bWVudHMgYW5kCityZXR1cm5zIHdoYXQgaXQgcmV0dXJucy4gSWYgS0VZIHdhcyBub3Qg Zm91bmQgaW4gaGFzaC10YWJsZSwgaXRzIHZhbHVlCitpcyBzZXQgdG8gdGhlIHJlc3VsdCBvZiBj YWxsaW5nIEZBSUxVUkUgYW5kIHRoZSBuZXcgdmFsdWUgaXMgcmV0dXJuZWQuIgorICAoYXNzZXJ0 LW11dGFibGUgaHQpCisgICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFibGUpIGh0Cisg ICAgKGlmIChodC13ZWFrbmVzcyBodCkKKyAgICAgICAgOzsgU2VwYXJhdGUgdGhlIGNhc2Ugd2hl cmUgaHQgaXMgd2VhayAtIGRvbid0IHVzZSBoYW5kbGUKKyAgICAgICAgKGxldCogKCh2YWx1ZSAo aGFzaHgtcmVmIGggYSByZWFsLXRhYmxlIGtleSBodC11bnNwZWNpZmllZCkpKQorICAgICAgICAg IChjb25kICgoZXE/IGh0LXVuc3BlY2lmaWVkIHZhbHVlKQorICAgICAgICAgICAgICAgICAobGV0 ICgodmFsdWUgKGZhaWx1cmUpKSkKKyAgICAgICAgICAgICAgICAgICAoaGFzaHgtc2V0ISBoIGEg cmVhbC10YWJsZSBrZXkgdmFsdWUpCisgICAgICAgICAgICAgICAgICAgdmFsdWUpKQorICAgICAg ICAgICAgICAgIChlbHNlIHZhbHVlKSkpCisgICAgICAgIChsZXQgKChoYW5kbGUKKyAgICAgICAg ICAgICAgIChoYXNoeC1jcmVhdGUtaGFuZGxlISBoIGEgcmVhbC10YWJsZSBrZXkgaHQtdW5zcGVj aWZpZWQpKSkKKyAgICAgICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkp CisgICAgICAgICAgICAgIChiZWdpbiAoaHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKQor ICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAoZmFpbHVyZSkpKSkKKyAgICAg ICAgICAoY2RyIGhhbmRsZSkpKSkpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtaW50ZXJuIS9kZWZh dWx0IGh0IGtleSBkZWZhdWx0KQorICAiRWZmZWN0aXZlbHkgaW52b2tlcyBIQVNILVRBQkxFLVJF RiB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMgYW5kCityZXR1cm5zIHdoYXQgaXQgcmV0dXJucy4g SWYgS0VZIHdhcyBub3QgZm91bmQgaW4gaGFzaC10YWJsZSwgaXRzIHZhbHVlCitpcyBzZXQgdG8g REVGQVVMVCBhbmQgREVGQVVMVCBpcyByZXR1cm5lZC4iCisgIChhc3NlcnQtbXV0YWJsZSBodCkK KyAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgaHQKKyAgICAoaWYgKGh0LXdl YWtuZXNzIGh0KQorICAgICAgICA7OyBTZXBhcmF0ZSB0aGUgY2FzZSB3aGVyZSBodCBpcyB3ZWFr IC0gZG9uJ3QgdXNlIGhhbmRsZQorICAgICAgICAobGV0KiAoKHZhbHVlIChoYXNoeC1yZWYgaCBh IHJlYWwtdGFibGUga2V5IGh0LXVuc3BlY2lmaWVkKSkpCisgICAgICAgICAgKGNvbmQgKChlcT8g aHQtdW5zcGVjaWZpZWQgdmFsdWUpCisgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQhIGggYSBy ZWFsLXRhYmxlIGtleSBkZWZhdWx0KQorICAgICAgICAgICAgICAgICBkZWZhdWx0KQorICAgICAg ICAgICAgICAgIChlbHNlIHZhbHVlKSkpCisgICAgICAgIChsZXQgKChoYW5kbGUKKyAgICAgICAg ICAgICAgIChoYXNoeC1jcmVhdGUtaGFuZGxlISBoIGEgcmVhbC10YWJsZSBrZXkgaHQtdW5zcGVj aWZpZWQpKSkKKyAgICAgICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkp CisgICAgICAgICAgICAgIChiZWdpbiAoaHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKQor ICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSBkZWZhdWx0KSkpCisgICAgICAg ICAgKGNkciBoYW5kbGUpKSkpKQorCisoZGVmaW5lKiAoaGFzaC10YWJsZS11cGRhdGUhIGh0IGtl eSB1cGRhdGVyICM6b3B0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWx1 cmUgKGxhbWJkYSAoKSAoZXJyb3IgIktleSBub3QgaW4gdGFibGUiIGtleSBodCkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKQorICAiU2VtYW50aWNhbGx5IGVxdWl2YWxl bnQgdG8sIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQgdGhhbiwgdGhlCisgZm9sbG93aW5nIGNv ZGU6CisgKEhBU0gtVEFCTEUtU0VUISBIVCBLRVkgKFVQREFURVIgKEhBU0gtVEFCTEUtUkVGIEhU IEtFWSBbRkFJTFVSRSBbU1VDQ0VTU11dKSkpCisKK1NpZ25hbHMgYW4gZXJyb3IgaWYgSFQgaXMg aW1tdXRhYmxlLiBPdGhlcndpc2UsIGlmIEtFWSBpcyBmb3VuZCBpbiBoYXNoCit0YWJsZSBIVCwg aXRzIGFzc29jaWF0ZWQgVkFMVUUgaXMgc2V0IHRvIChVUERBVEVSIChTVUNDRVNTIFZBTFVFKSks CitvciAoVVBEQVRFUiBWQUxVRSkgaWYgU1VDQ0VTUyBpc24ndCBwcm92aWRlZC4gSWYgS0VZIGlz IG5vdCBmb3VuZCwgc2V0cwordGhlIG5ldyB2YWx1ZSB0byB0aGUgcmVzdWx0IG9mIChVUERBVEVS IChGQUlMVVJFKSkgaWYgRkFJTFVSRSBpcworcHJvdmlkZWQsIG9yIHNpZ25hbHMgYW4gZXJyb3Ig b3RoZXJ3aXNlLiIKKyAgKGFzc2VydC1tdXRhYmxlIGh0KQorICAod2l0aC1oYXNoeC12YWx1ZXMg KGggYSByZWFsLXRhYmxlKSBodAorICAgIChpZiAoaHQtd2Vha25lc3MgaHQpCisgICAgICAgIDs7 IFNlcGFyYXRlIHRoZSBjYXNlIHdoZXJlIGh0IGlzIHdlYWsgLSBkb24ndCB1c2UgaGFuZGxlCisg ICAgICAgIChsZXQqICgob2xkIChoYXNoeC1yZWYgaCBhIHJlYWwtdGFibGUga2V5IGh0LXVuc3Bl Y2lmaWVkKSkKKyAgICAgICAgICAgICAgIChuZXcgKHVwZGF0ZXIgKGlmIChlcT8gb2xkIGh0LXVu c3BlY2lmaWVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWx1cmUpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgc3VjY2VzcyAoc3VjY2VzcyBvbGQp IG9sZCkpKSkpCisgICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFibGUga2V5IG5ldykp CisgICAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWdldC1oYW5kbGUgaCBhIHJlYWwtdGFibGUg a2V5KSkpCisgICAgICAgICAgKGNvbmQgKGhhbmRsZQorICAgICAgICAgICAgICAgICAobGV0KiAo KG9sZCAoY2RyIGhhbmRsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAobmV3ICh1cGRhdGVy IChpZiBzdWNjZXNzIChzdWNjZXNzIG9sZCkgb2xkKSkpKQorICAgICAgICAgICAgICAgICAgIChz ZXQtY2RyISBoYW5kbGUgbmV3KSkpCisgICAgICAgICAgICAgICAgKGVsc2UKKyAgICAgICAgICAg ICAgICAgKGxldCAoKG5ldyAodXBkYXRlciAoZmFpbHVyZSkpKSkKKyAgICAgICAgICAgICAgICAg ICAoaHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKQorICAgICAgICAgICAgICAgICAgICho YXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSBuZXcpKSkpKSkpCisgICp1bnNwZWNpZmllZCop CisKKyhkZWZpbmUgKGhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0IGh0IGtleSB1cGRhdGVyIGRl ZmF1bHQpCisgICJTZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bywgYnV0IG1heSBiZSBtb3JlIGVm ZmljaWVudCB0aGFuLCB0aGUKK2ZvbGxvd2luZyBjb2RlOgorIChIQVNILVRBQkxFLVNFVCEgSFQg S0VZIChVUERBVEVSIChIQVNILVRBQkxFLVJFRi9ERUZBVUxUIEhUIEtFWSBERUZBVUxUKSkpCisK K1NpZ25hbHMgYW4gZXJyb3IgaWYgSFQgaXMgaW1tdXRhYmxlLiBPdGhlcndpc2UsIG1vZGlmaWVz IEhUJ3MgdmFsdWUgYXQKK0tFWSBieSBwYXNzaW5nIGl0cyBvbGQgdmFsdWUsIG9yIERFRkFVTFQg aWYgaXQgZG9lc24ndCBoYXZlIG9uZSwgdG8KK1VQREFURVIsIGFuZCBzZXR0aW5nIGl0IHRvIHRo ZSByZXN1bHQgdGhlcmVvZi4iCisgIChhc3NlcnQtbXV0YWJsZSBodCkKKyAgKHdpdGgtaGFzaHgt dmFsdWVzIChoIGEgcmVhbC10YWJsZSkgaHQKKyAgICAoaWYgKGh0LXdlYWtuZXNzIGh0KQorICAg ICAgICA7OyBKLk0uIHNlcGFyYXRlIHRoZSBjYXNlIHdoZXJlIGh0IGlzIHdlYWsgLSBkb24ndCB1 c2UgaGFuZGxlCisgICAgICAgIChsZXQqICgob2xkIChoYXNoeC1yZWYgaCBhIHJlYWwtdGFibGUg a2V5IGRlZmF1bHQpKSkKKyAgICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSBrZXkg KHVwZGF0ZXIgb2xkKSkpCisgICAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWNyZWF0ZS1oYW5k bGUhIGggYSByZWFsLXRhYmxlIGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBodC11bnNwZWNpZmllZCkpKQorICAgICAgICAgIChpZiAoZXE/IGh0LXVuc3Bl Y2lmaWVkIChjZHIgaGFuZGxlKSkKKyAgICAgICAgICAgICAgKGJlZ2luIChodC1zaXplISBodCAo KyAxIChodC1zaXplIGh0KSkpCisgICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxl ICh1cGRhdGVyIGRlZmF1bHQpKSkKKyAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAodXBk YXRlciAoY2RyIGhhbmRsZSkpKSkpKSkKKyAgKnVuc3BlY2lmaWVkKikKKworKGRlZmluZSAoaGFz aC10YWJsZS1wb3AhIGh0KQorICAiU2lnbmFscyBhbiBlcnJvciBpZiBIVCBpcyBpbW11dGFibGUg b3IgZW1wdHkuIE90aGVyd2lzZSwgY2hvb3NlcyBhbgorYXJiaXRyYXJ5IGFzc29jaWF0aW9uIGZy b20gaGFzaC10YWJsZSBhbmQgcmVtb3ZlcyBpdCwgcmV0dXJuaW5nIHRoZSBrZXkKK2FuZCB2YWx1 ZSBhcyB0d28gdmFsdWVzLiIKKyAgKGFzc2VydC1tdXRhYmxlIGh0KQorICAoY2FsbC9jYworICAg KGxhbWJkYSAocmV0dXJuKQorICAgICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxl KSBodAorICAgICAgIChoYXNoLWZvci1lYWNoIChsYW1iZGEgKGtleSB2YWx1ZSkKKyAgICAgICAg ICAgICAgICAgICAgICAgIChoYXNoeC1yZW1vdmUhIGggYSByZWFsLXRhYmxlIGtleSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICh1bmxlc3MgKGh0LXdlYWtuZXNzIGh0KQorICAgICAgICAgICAg ICAgICAgICAgICAgICAoaHQtc2l6ZSEgaHQgKC0gKGh0LXNpemUgaHQpIDEpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgIChyZXR1cm4ga2V5IHZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAg ICByZWFsLXRhYmxlKSkKKyAgICAgKGVycm9yICJIYXNoIHRhYmxlIGlzIGVtcHR5IiBodCkpKSkK KworKGRlZmluZSogKGhhc2gtdGFibGUtY2xlYXIhIGh0ICM6b3B0aW9uYWwgY2FwYWNpdHkpCisg ICJEZWxldGVzIGFsbCBhc3NvY2lhdGlvbnMgZnJvbSBIVC4iCisgIChhc3NlcnQtbXV0YWJsZSBo dCkKKyAgKGlmIGNhcGFjaXR5CisgICAgICAoaHQtcmVhbC10YWJsZSEgaHQgKChndWlsZS1odC1j dG9yIChodC13ZWFrbmVzcyBodCkpIGNhcGFjaXR5KSkKKyAgICAgIChoYXNoLWNsZWFyISAoaHQt cmVhbC10YWJsZSBodCkpKQorICAoaHQtc2l6ZSEgaHQgMCkKKyAgKnVuc3BlY2lmaWVkKikKKwor DAorOzsgVGhlIHdob2xlIGhhc2ggdGFibGUuCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtc2l6ZSBo dCkKKyAgIlJldHVybnMgdGhlIG51bWJlciBvZiBhc3NvY2lhdGlvbnMgaW4gSFQuIFRoaXMgaXMg Z3VhcmFudGVlZCBPKDEpIGZvcgordGFibGVzIHdoZXJlICM6V0VBS05FU1MgaXMgI2YuIgorICAo aWYgKGh0LXdlYWtuZXNzIGh0KQorICAgICAgKGhhc2gtZm9sZCAobGFtYmRhIChrZXkgdmFsIGFu cykgKCsgMSBhbnMpKQorICAgICAgICAgICAgICAgICAwIChodC1yZWFsLXRhYmxlIGh0KSkKKyAg ICAgIChodC1zaXplIGh0KSkpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUta2V5cyBodCkKKyAgIlJl dHVybnMgYSBsaXN0IG9mIHRoZSBrZXlzIGluIEhULiIKKyAgKGhhc2gtZm9sZCAobGFtYmRhIChr ZXkgdmFsIGxzdCkgKGNvbnMga2V5IGxzdCkpCisgICAgICAgICAgICAgJygpIChodC1yZWFsLXRh YmxlIGh0KSkpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtdmFsdWVzIGh0KQorICAiUmV0dXJucyBh IGxpc3Qgb2YgdGhlIHZhbHVlcyBpbiBIVC4iCisgIChoYXNoLWZvbGQgKGxhbWJkYSAoa2V5IHZh bCBsc3QpIChjb25zIHZhbCBsc3QpKQorICAgICAgICAgICAgICcoKSAoaHQtcmVhbC10YWJsZSBo dCkpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWVudHJpZXMgaHQpCisgICJSZXR1cm5zIHR3byB2 YWx1ZXM6IGEgbGlzdCBvZiB0aGUga2V5cyBhbmQgYSBsaXN0IG9mIHRoZSBhc3NvY2lhdGVkCit2 YWx1ZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgb3JkZXIuIgorICAobGV0ICgoa2V5cyAnKCkpICh2 YWxzICcoKSkpCisgICAgKGhhc2gtZm9yLWVhY2ggKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAg ICAgICAgICAgICAgIChzZXQhIGtleXMgKGNvbnMga2V5IGtleXMpKQorICAgICAgICAgICAgICAg ICAgICAgKHNldCEgdmFscyAoY29ucyB2YWwgdmFscykpKQorICAgICAgICAgICAgICAgICAgICho dC1yZWFsLXRhYmxlIGh0KSkKKyAgICAodmFsdWVzIGtleXMgdmFscykpKQorCis7OzsgSW4gYSBu b24td2VhayBoYXNoIHRhYmxlLCB3ZSBrbm93IHRoZSBzaXplIHRoYXQgdGhlIGtleS92YWx1ZSB2 ZWN0b3IKKzs7OyB3aWxsIGhhdmUuIEluIGEgd2VhayBoYXNoIHRhYmxlLCB3ZSBoYXZlIHRvIGl0 ZXJhdGUgdGhyb3cKKzs7OyBhc3NvY2lhdGlvbnMgb2YgdGhlIGhhc2ggdGFibGUgdG8gY29tcHV0 ZSBpdHMgc2l6ZSwgc28gaXQgaXMgZWFzaWVyCis7OzsgdG8gc2ltcGx5IGNhbGwgSEFTSC1UQUJM RS1LRVlTL0hBU0gtVEFCTEUtVkFMVUVTLgorKGRlZmluZSAoaGFzaC10YWJsZS1rZXktdmVjdG9y IGh0KQorICAiUmV0dXJucyBhIHZlY3RvciBvZiB0aGUga2V5cyBpbiBIVC4iCisgIChpZiAoaHQt d2Vha25lc3MgaHQpCisgICAgICAobGlzdC0+dmVjdG9yIChoYXNoLXRhYmxlLWtleXMgaHQpKQor ICAgICAgKGxldCogKChsZW4gKGh0LXNpemUgaHQpKQorICAgICAgICAgICAgIChrZXlzIChtYWtl LXZlY3RvciBsZW4pKSkKKyAgICAgICAgKGhhc2gtZm9sZCAobGFtYmRhIChrZXkgdmFsIGkpCisg ICAgICAgICAgICAgICAgICAgICAodmVjdG9yLXNldCEga2V5cyBpIGtleSkKKyAgICAgICAgICAg ICAgICAgICAgICgrIGkgMSkpCisgICAgICAgICAgICAgICAgICAgMCAoaHQtcmVhbC10YWJsZSBo dCkpCisgICAgICAgIGtleXMpKSkKKworKGRlZmluZSAoaGFzaC10YWJsZS12YWx1ZS12ZWN0b3Ig aHQpCisgICJSZXR1cm5zIGEgdmVjdG9yIG9mIHRoZSB2YWx1ZXMgaW4gSFQuIgorICAoaWYgKGh0 LXdlYWtuZXNzIGh0KQorICAgICAgKGxpc3QtPnZlY3RvciAoaGFzaC10YWJsZS12YWx1ZXMgaHQp KQorICAgICAgKGxldCogKChsZW4gKGh0LXNpemUgaHQpKQorICAgICAgICAgICAgICh2YWxzICht YWtlLXZlY3RvciBsZW4pKSkKKyAgICAgICAgKGhhc2gtZm9sZCAobGFtYmRhIChrZXkgdmFsIGkp CisgICAgICAgICAgICAgICAgICAgICAodmVjdG9yLXNldCEgdmFscyBpIHZhbCkKKyAgICAgICAg ICAgICAgICAgICAgICgrIGkgMSkpCisgICAgICAgICAgICAgICAgICAgMCAoaHQtcmVhbC10YWJs ZSBodCkpCisgICAgICAgIHZhbHMpKSkKKworKGRlZmluZSAoaGFzaC10YWJsZS1lbnRyeS12ZWN0 b3JzIGh0KQorICAiUmV0dXJucyB0d28gdmFsdWVzOiBhIHZlY3RvciBvZiB0aGUga2V5cyBhbmQg YSB2ZWN0b3Igb2YgdGhlCithc3NvY2lhdGVkIHZhbHVlcyBpbiB0aGUgY29ycmVzcG9uZGluZyBv cmRlci4iCisgIChpZiAoaHQtd2Vha25lc3MgaHQpCisgICAgICAocmVjZWl2ZSAoa2V5cyB2YWxz KSAoaGFzaC10YWJsZS1lbnRyaWVzIGh0KQorICAgICAgICAodmFsdWVzIChsaXN0LT52ZWN0b3Ig a2V5cykgKGxpc3QtPnZlY3RvciB2YWxzKSkpCisgICAgICAobGV0KiAoKGxlbiAoaHQtc2l6ZSBo dCkpCisgICAgICAgICAgICAgKGtleXMgKG1ha2UtdmVjdG9yIGxlbikpCisgICAgICAgICAgICAg KHZhbHMgKG1ha2UtdmVjdG9yIGxlbikpKQorICAgICAgICAoaGFzaC1mb2xkIChsYW1iZGEgKGtl eSB2YWwgaSkKKyAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Itc2V0ISBrZXlzIGkga2V5KQor ICAgICAgICAgICAgICAgICAgICAgKHZlY3Rvci1zZXQhIHZhbHMgaSB2YWwpCisgICAgICAgICAg ICAgICAgICAgICAoKyBpIDEpKQorICAgICAgICAgICAgICAgICAgIDAgKGh0LXJlYWwtdGFibGUg aHQpKQorICAgICAgICAodmFsdWVzIGtleXMgdmFscykpKSkKKworKGRlZmluZSAoaGFzaC10YWJs ZS1maW5kIHByb2MgaHQgZmFpbHVyZSkKKyAgIkZvciBlYWNoIGFzc29jaWF0aW9uIG9mIHRoZSBo YXNoIHRhYmxlIEhULCBpbnZva2UgUFJPQyBvbiBpdHMga2V5IGFuZAordmFsdWUuIElmIFBST0Mg cmV0dXJucyB0cnVlLCB0aGVuIEhBU0gtVEFCTEUtRklORCByZXR1cm5zIHdoYXQgUFJPQworcmV0 dXJucy4gSWYgYWxsIHRoZSBjYWxscyB0byBQUk9DIHJldHVybiAjZiwgcmV0dXJucyB0aGUgcmVz dWx0IG9mCitpbnZva2luZyB0aGUgdGh1bmsgRkFJTFVSRS4iCisgIChjYWxsL2NjIChsYW1iZGEg KHJldHVybikKKyAgICAgICAgICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHggKHByb2Mga2V5IHZhbCkpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgeCAocmV0dXJuIHgpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGh0LXJlYWwtdGFibGUgaHQpKQorICAgICAgICAgICAg IChmYWlsdXJlKSkpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWNvdW50IHByZWQgaHQpCisgICJG b3IgZWFjaCBhc3NvY2lhdGlvbiBvZiBIVCwgaW52b2tlIFBSRUQgb24gaXRzIGtleSBhbmQgdmFs dWUuIFJldHVybgordGhlIG51bWJlciBvZiBjYWxscyB0byBQUkVEIHdoaWNoIHJldHVybmVkIHRy dWUuIgorICAoaGFzaC1mb2xkIChsYW1iZGEgKGtleSB2YWwgbikKKyAgICAgICAgICAgICAgIChp ZiAocHJlZCBrZXkgdmFsKSAoKyAxIG4pIG4pKQorICAgICAgICAgICAgIDAgKGh0LXJlYWwtdGFi bGUgaHQpKSkKKworDAorOzs7IE1hcHBpbmcgYW5kIGZvbGRpbmcuCisKKyhkZWZpbmUqIChoYXNo LXRhYmxlLW1hcCBwcm9jIGh0IGVxdWl2LWZ1bmN0aW9uIGhhc2gtZnVuY3Rpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgICAjOmtleSAobXV0YWJsZSAjdCkgKGNhcGFjaXR5IChoYXNoLXRhYmxl LXNpemUgaHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICh3ZWFrbmVzcyAjZikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAjOnJlc3QgYXJncykKKyAgIkNyZWF0ZXMgYSBuZXcgaGFzaCB0 YWJsZSBieSBjYWxsaW5nIE1BS0UtSEFTSC1UQUJMRSB3aXRoIHRoZSBnaXZlbgorYXJndW1lbnRz LiBBZnRlciBjcmVhdGlvbiwgSEFTSC1UQUJMRS1NQVAgY2FsbHMgUFJPQyBmb3IgZXZlcnkKK2Fz c29jaWF0aW9uIGluIGhhc2gtdGFibGUgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIGFzc29jaWF0aW9u LiBUaGUga2V5IG9mCit0aGUgYXNzb2NpYXRpb24gYW5kIHRoZSByZXN1bHQgb2YgaW52b2tpbmcg UFJPQyBhcmUgZW50ZXJlZCBpbnRvIHRoZSBuZXcKK2hhc2ggdGFibGUsIHdoaWNoIGlzIHRoZW4g cmV0dXJuZWQuIgorICAobGV0ICgocmVzdWx0ICglbWFrZS1oYXNoLXRhYmxlIGVxdWl2LWZ1bmN0 aW9uIGhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRh YmxlIGNhcGFjaXR5IHdlYWtuZXNzKSkKKyAgICAgICAgKHNpemUgMCkpCisgICAgKHdpdGgtaGFz aHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgcmVzdWx0CisgICAgICAoaGFzaC1mb3ItZWFjaAor ICAgICAgIChsYW1iZGEgKGtleSB2YWwpCisgICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10 YWJsZSBrZXkgKHByb2MgdmFsKSkKKyAgICAgICAgIChzZXQhIHNpemUgKCsgMSBzaXplKSkpCisg ICAgICAgKGh0LXJlYWwtdGFibGUgaHQpKSkKKyAgICAoaHQtc2l6ZSEgcmVzdWx0IHNpemUpCisg ICAgcmVzdWx0KSkKKworKGRlZmluZSAoaGFzaC10YWJsZS1tYXAtPmxpc3QgcHJvYyBodCkKKyAg IkNhbGxzIFBST0MgZm9yIGV2ZXJ5IGFzc29jaWF0aW9uIGluIEhUIHdpdGggdHdvIGFyZ3VtZW50 czoKK3RoZSBrZXkgb2YgdGhlIGFzc29jaWF0aW9uIGFuZCB0aGUgdmFsdWUgb2YgdGhlIGFzc29j aWF0aW9uLiBUaGUgdmFsdWVzCityZXR1cm5lZCBieSB0aGUgaW52b2NhdGlvbnMgb2YgUFJPQyBh cmUgYWNjdW11bGF0ZWQgaW50byBhIGxpc3QsIHdoaWNoCitpcyByZXR1cm5lZC4iCisgIChoYXNo LW1hcC0+bGlzdCBwcm9jIChodC1yZWFsLXRhYmxlIGh0KSkpCisKKzs7OyBXaXRoIHRoaXMgcGFy dGljdWxhciBpbXBsZW1lbnRhdGlvbiwgdGhlIHByb2MgY2FuIHNhZmVseSBtdXRhdGUgaHQuCis7 OzsgVGhhdCBwcm9wZXJ0eSBpcyBub3QgZ3VhcmFudGVlZCBieSB0aGUgc3BlY2lmaWNhdGlvbiwg YnV0IGNhbiBiZQorOzs7IHJlbGllZCB1cG9uIGJ5IHByb2NlZHVyZXMgZGVmaW5lZCBpbiB0aGlz IGZpbGUuCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtZm9yLWVhY2ggcHJvYyBodCkKKyAgIkNhbGxz IFBST0Mgd2l0aCBlYWNoIGtleSBhbmQgdmFsdWUgYXMgdHdvIGFyZ3VtZW50cy4gUmV0dXJucyBh bgordW5zcGVjaWZpZWQgdmFsdWUuIgorICAoaGFzaC1mb3ItZWFjaCBwcm9jIChodC1yZWFsLXRh YmxlIGh0KSkpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtbWFwISBwcm9jIGh0KQorICAiU2lnbmFs cyBhbiBlcnJvciBpZiBIVCBpcyBpbW11dGFibGUuIE90aGVyd2lzZSwgY2FsbHMgUFJPQyBmb3Ig ZXZlcnkKK2Fzc29jaWF0aW9uIGluIEhUIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIGtleSBvZiB0 aGUgYXNzb2NpYXRpb24gYW5kIHRoZQordmFsdWUgb2YgdGhlIGFzc29jaWF0aW9uLiBUaGUgdmFs dWUgcmV0dXJuZWQgYnkgUFJPQyBpcyB1c2VkIHRvIHVwZGF0ZQordGhlIHZhbHVlIG9mIHRoZSBh c3NvY2lhdGlvbi4gUmV0dXJuIGFuIHVuc3BlY2lmaWVkIHZhbHVlLiIKKyAgKGFzc2VydC1tdXRh YmxlIGh0KQorICAoaWYgKGh0LXdlYWtuZXNzIGh0KQorICAgICAgKHdpdGgtaGFzaHgtdmFsdWVz IChoIGEgcmVhbC10YWJsZSkgaHQKKyAgICAgICAgKGhhc2gtZm9yLWVhY2ggKGxhbWJkYSAoa2V5 IHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJs ZSBrZXkgKHByb2Mga2V5IHZhbCkpKQorICAgICAgICAgICAgICAgICAgICAgICByZWFsLXRhYmxl KSkKKyAgICAgIChsZXQgKChyZWFsLXRhYmxlIChodC1yZWFsLXRhYmxlIGh0KSkpCisgICAgICAg IChoYXNoLWZvci1lYWNoLWhhbmRsZSAobGFtYmRhIChoYW5kbGUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChsZXQgKChrZXkgKGNhciBoYW5kbGUpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodmFsIChjZHIgaGFuZGxlKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAocHJvYyBrZXkgdmFsKSkpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbC10YWJsZSkpKSkKKworKGRlZmluZSAo aGFzaC10YWJsZS1mb2xkIHByb2MgaW5pdCBodCkKKyAgIkNhbGxzIFBST0MgZm9yIGV2ZXJ5IGFz c29jaWF0aW9uIGluIEhUIHdpdGggdGhyZWUgYXJndW1lbnRzOiB0aGUga2V5CitvZiB0aGUgYXNz b2NpYXRpb24sIHRoZSB2YWx1ZSBvZiB0aGUgYXNzb2NpYXRpb24sIGFuZCBhbiBhY2N1bXVsYXRl ZAordmFsdWUgVkFMLiBWQUwgaXMgU0VFRCBmb3IgdGhlIGZpcnN0IGludm9jYXRpb24gb2YgcHJv Y2VkdXJlLCBhbmQgZm9yCitzdWJzZXF1ZW50IGludm9jYXRpb25zIG9mIFBST0MsIHRoZSByZXR1 cm5lZCB2YWx1ZSBvZiB0aGUgcHJldmlvdXMKK2ludm9jYXRpb24uIFRoZSB2YWx1ZSByZXR1cm5l ZCBieSBIQVNILVRBQkxFLUZPTEQgaXMgdGhlIHJldHVybiB2YWx1ZSBvZgordGhlIGxhc3QgaW52 b2NhdGlvbiBvZiBQUk9DLiIKKyAgKGhhc2gtZm9sZCBwcm9jIGluaXQgKGh0LXJlYWwtdGFibGUg aHQpKSkKKworKGRlZmluZSAoaGFzaC10YWJsZS1wcnVuZSEgcHJvYyBodCkKKyAgIklmIEhUIGlz IGltbXV0YWJsZSwgc2lnbmFscyBhbiBlcnJvci4gT3RoZXJ3aXNlLCBjYWxscyBQUk9DIGZvciBl dmVyeQorYXNzb2NpYXRpb24gaW4gaGFzaC10YWJsZSB3aXRoIHR3byBhcmd1bWVudHMsIHRoZSBr ZXkgYW5kIHRoZSB2YWx1ZSBvZgordGhlIGFzc29jaWF0aW9uLCBhbmQgcmVtb3ZlcyBhbGwgYXNz b2NpYXRpb25zIGZyb20gaGFzaC10YWJsZSBmb3Igd2hpY2gKK1BST0MgcmV0dXJucyB0cnVlLiBS ZXR1cm5zIGFuIHVuc3BlY2lmaWVkIHZhbHVlLiIKKyAgKGFzc2VydC1tdXRhYmxlIGh0KQorICAo d2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSBodAorICAgIChoYXNoLWZvci1lYWNo IChsYW1iZGEgKGtleSB2YWwpCisgICAgICAgICAgICAgICAgICAgICAoaWYgKHByb2Mga2V5IHZh bCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgtcmVtb3ZlISBoIGEgcmVhbC10YWJs ZSBrZXkpKSkKKyAgICAgICAgICAgICAgICAgICByZWFsLXRhYmxlKSkpCisKKwwKKzs7OyBDb3B5 aW5nIGFuZCBjb252ZXJzaW9uLgorCisoZGVmaW5lKiAoaGFzaC10YWJsZS1jb3B5IGh0ICM6a2V5 IChtdXRhYmxlIChoYXNoLXRhYmxlLW11dGFibGU/IGh0KSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNhcGFjaXR5IChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAod2Vha25lc3MgKGhhc2gtdGFibGUtd2Vha25lc3MgaHQpKSkKKyAgIlJldHVybnMg YSBuZXdseSBhbGxvY2F0ZWQgaGFzaCB0YWJsZSB3aXRoIHRoZSBhc3NvY2lhdGlvbnMgYXMgSFQg YW5kCitwcm9wZXJ0aWVzIGFzIGdpdmVuIGJ5IGtleXdvcmQgYXJndW1lbnRzLCB3aGljaCBkZWZh dWx0IHRvIEhUCitwcm9wZXJ0aWVzLiBJZiBNVVRBQkxFIGlzIHRydWUsIHRoZSBuZXcgaGFzaCB0 YWJsZSBpcyBtdXRhYmxlLAorb3RoZXJ3aXNlLCBpdCBpcyBpbW11dGFibGUuIgorICAod2l0aC1o YXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSBodAorICAgIChsZXQgKChuZXctcmVhbC10YWJs ZSAoKGd1aWxlLWh0LWN0b3Igd2Vha25lc3MpIGNhcGFjaXR5KSkKKyAgICAgICAgICAoc2l6ZSAw KSkKKyAgICAgIChoYXNoLWZvci1lYWNoIChsYW1iZGEgKGtleSB2YWwpCisgICAgICAgICAgICAg ICAgICAgICAgIChoYXNoeC1zZXQhIGggYSBuZXctcmVhbC10YWJsZSBrZXkgdmFsKQorICAgICAg ICAgICAgICAgICAgICAgICAoc2V0ISBzaXplICgrIDEgc2l6ZSkpKQorICAgICAgICAgICAgICAg ICAgICAgcmVhbC10YWJsZSkKKyAgICAgIDs7IEFyZ3VtZW50czogcmVhbC10YWJsZSBoYXNoLWZ1 bmN0aW9uIGFzc29jaWF0b3IKKyAgICAgIDs7ICAgICAgICAgICAgd2Vha25lc3MgbXV0YWJsZT8g c2l6ZSBlcXVpdmFsZW5jZS1mdW5jdGlvbiBvcmlnLWhhc2gtZnVuY3Rpb24KKyAgICAgIChtYWtl LWdlbmVyaWMtaGFzaC10YWJsZSBuZXctcmVhbC10YWJsZSBoIGEgd2Vha25lc3MgKGFuZCBtdXRh YmxlICN0KSBzaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2gtdGFibGUt ZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbiBodCkpKSkpCisKKyhkZWZpbmUqIChoYXNoLXRhYmxl LWVtcHR5LWNvcHkgaHQgIzprZXkgKG11dGFibGUgI3QpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjYXBhY2l0eSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo d2Vha25lc3MgKGhhc2gtdGFibGUtd2Vha25lc3MgaHQpKSkKKyAgIlJldHVybnMgYSBuZXdseSBh bGxvY2F0ZWQgbXV0YWJsZSBoYXNoIHRhYmxlIHdpdGggdGhlIHNhbWUgcHJvcGVydGllcworYXMg SFQsIGJ1dCB3aXRoIG5vIGFzc29jaWF0aW9ucy4iCisgICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBh IHJlYWwtdGFibGUpIGh0CisgICAgKGxldCAoKG5ldy1yZWFsLXRhYmxlICgoZ3VpbGUtaHQtY3Rv ciB3ZWFrbmVzcykgY2FwYWNpdHkpKSkKKyAgICAgIDs7IEFyZ3VtZW50czogcmVhbC10YWJsZSBo YXNoLWZ1bmN0aW9uIGFzc29jaWF0b3IKKyAgICAgIDs7ICAgICAgICAgICAgd2Vha25lc3MgbXV0 YWJsZT8gc2l6ZSBlcXVpdmFsZW5jZS1mdW5jdGlvbiBvcmlnLWhhc2gtZnVuY3Rpb24KKyAgICAg IChtYWtlLWdlbmVyaWMtaGFzaC10YWJsZSBuZXctcmVhbC10YWJsZSBoIGEgd2Vha25lc3MgKGFu ZCBtdXRhYmxlICN0KSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2gtdGFi bGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbiBodCkpKSkpCisKKyhkZWZpbmUgKGhhc2gtdGFi bGUtPmFsaXN0IGh0KQorICAiUmV0dXJucyBhbiBhbGlzdCB3aXRoIHRoZSBzYW1lIGFzc29jaWF0 aW9ucyBhcyBoYXNoLXRhYmxlIGluIGFuCit1bnNwZWNpZmllZCBvcmRlci4iCisgIChoYXNoLW1h cC0+bGlzdCBjb25zIChodC1yZWFsLXRhYmxlIGh0KSkpCisKKwwKKzs7OyBIYXNoIHRhYmxlcyBh cyBzZXRzLgorCisoZGVmaW5lIChoYXNoLXRhYmxlLXVuaW9uISBodDEgaHQyKQorICAiSWYgSFQx IGlzIGltbXV0YWJsZSwgc2lnbmFscyBhbiBlcnJvci4gT3RoZXJ3aXNlLCBhZGRzIHRoZSBhc3Nv Y2lhdGlvbnMKK29mIEhUMiB0byBIVDEgYW5kIHJldHVybiBIVDEuIElmIGEga2V5IGFwcGVhcnMg aW4gYm90aCBoYXNoIHRhYmxlcywgaXRzCit2YWx1ZSBpcyBzZXQgdG8gdGhlIHZhbHVlIGFwcGVh cmluZyBpbiBIVDEuIgorICAoYXNzZXJ0LW11dGFibGUgaHQxKQorICAoaGFzaC1mb3ItZWFjaCAo bGFtYmRhIChrZXkyIHZhbDIpCisgICAgICAgICAgICAgICAgICAgKGhhc2gtdGFibGUtaW50ZXJu IS9kZWZhdWx0IGh0MSBrZXkyIHZhbDIpKQorICAgICAgICAgICAgICAgICAoaHQtcmVhbC10YWJs ZSBodDIpKQorICBodDEpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtaW50ZXJzZWN0aW9uISBodDEg aHQyKQorICAiSWYgSFQxIGlzIGltbXV0YWJsZSwgc2lnbmFscyBhbiBlcnJvci4gT3RoZXJ3aXNl LCBkZWxldGVzIHRoZQorYXNzb2NpYXRpb25zIGZyb20gSFQgd2hvc2Uga2V5cyBkb24ndCBhbHNv IGFwcGVhciBpbiBIVDIgYW5kIHJldHVybnMKK0hUMS4iCisgIChhc3NlcnQtbXV0YWJsZSBodDEp CisgIChoYXNoLWZvci1lYWNoIChsYW1iZGEgKGtleTEgdmFsMSkKKyAgICAgICAgICAgICAgICAg ICAoaWYgKG5vdCAoaGFzaC10YWJsZS1jb250YWlucz8gaHQyIGtleTEpKQorICAgICAgICAgICAg ICAgICAgICAgICAoaGFzaC10YWJsZS1kZWxldGUhIGh0MSBrZXkxKSkpCisgICAgICAgICAgICAg ICAgIChodC1yZWFsLXRhYmxlIGh0MSkpCisgIGh0MSkKKworKGRlZmluZSAoaGFzaC10YWJsZS1k aWZmZXJlbmNlISBodDEgaHQyKQorICAiSWYgSFQxIGlzIGltbXV0YWJsZSwgc2lnbmFscyBhbiBl cnJvci4gT3RoZXJ3aXNlLCBkZWxldGVzIHRoZQorYXNzb2NpYXRpb25zIG9mIEhUMSB3aG9zZSBr ZXlzIGFyZSBhbHNvIHByZXNlbnQgaW4gSFQyIGFuZCByZXR1cm5zIEhUMS4iCisgIChhc3NlcnQt bXV0YWJsZSBodDEpCisgIChoYXNoLWZvci1lYWNoIChsYW1iZGEgKGtleTEgdmFsMSkKKyAgICAg ICAgICAgICAgICAgICAoaWYgKGhhc2gtdGFibGUtY29udGFpbnM/IGh0MiBrZXkxKQorICAgICAg ICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1kZWxldGUhIGh0MSBrZXkxKSkpCisgICAgICAg ICAgICAgICAgIChodC1yZWFsLXRhYmxlIGh0MSkpCisgIGh0MSkKKworKGRlZmluZSAoaGFzaC10 YWJsZS14b3IhIGh0MSBodDIpCisgICJJZiBIVDEgaXMgaW1tdXRhYmxlLCBzaWduYWxzIGFuIGVy cm9yLiBPdGhlcndpc2UsIGRlbGV0ZXMgdGhlCithc3NvY2lhdGlvbnMgb2YgSFQxIHdob3NlIGtl eXMgYXJlIGFsc28gcHJlc2VudCBpbiBIVDIsIGFuZCB0aGVuIGFkZHMKK3RoZSBhc3NvY2lhdGlv bnMgb2YgSFQyIHdob3NlIGtleXMgYXJlIG5vdCBwcmVzZW50IGluIEhUMSB0bworSFQxLiBSZXR1 cm5zIEhUMS4iCisgIChhc3NlcnQtbXV0YWJsZSBodDEpCisgIChoYXNoLWZvci1lYWNoIChsYW1i ZGEgKGtleTIgdmFsMikKKyAgICAgICAgICAgICAgICAgICAoaWYgKGhhc2gtdGFibGUtY29udGFp bnM/IGh0MSBrZXkyKQorICAgICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1kZWxldGUh IGh0MSBrZXkyKQorICAgICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1zZXQhIGh0MSBr ZXkyIHZhbDIpKSkKKyAgICAgICAgICAgICAgICAgKGh0LXJlYWwtdGFibGUgaHQyKSkKKyAgaHQx KQorCis7OyBlb2YKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0gYi90ZXN0LXN1 aXRlL01ha2VmaWxlLmFtCmluZGV4IDA5MzRkYmIzNC4uZTE1NDYwMmE3IDEwMDY0NAotLS0gYS90 ZXN0LXN1aXRlL01ha2VmaWxlLmFtCisrKyBiL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0KQEAgLTYz LDYgKzYzLDcgQEAgU0NNX1RFU1RTID0gdGVzdHMvMDAtaW5pdGlhbC1lbnYudGVzdAkJXAogCSAg ICB0ZXN0cy9mdHcudGVzdAkJCVwKIAkgICAgdGVzdHMvZnV0dXJlLnRlc3QJCQlcCiAJICAgIHRl c3RzL2djLnRlc3QJCQlcCisgICAgICAgICAgICB0ZXN0cy9nZW5lcmljLWhhc2gtdGFibGVzLnRl c3QgICAgICBcCiAJICAgIHRlc3RzL2dldG9wdC1sb25nLnRlc3QJCVwKIAkgICAgdGVzdHMvZ29v cHMudGVzdAkJCVwKIAkgICAgdGVzdHMvZ3VhcmRpYW5zLnRlc3QJCVwKZGlmZiAtLWdpdCBhL3Rl c3Qtc3VpdGUvdGVzdHMvZ2VuZXJpYy1oYXNoLXRhYmxlcy50ZXN0IGIvdGVzdC1zdWl0ZS90ZXN0 cy9nZW5lcmljLWhhc2gtdGFibGVzLnRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwLi40OTRjYmY3MGEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0LXN1aXRlL3Rlc3RzL2dl bmVyaWMtaGFzaC10YWJsZXMudGVzdApAQCAtMCwwICsxLDQxNSBAQAorOzs7OyBzcmZpLTY5LnRl c3QgLS0tIFRlc3Qgc3VpdGUgZm9yIFNSRkkgNjkgLSotIHNjaGVtZSAtKi0KKzs7OzsKKzs7Ozsg CUNvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKzs7OzsK Kzs7OzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorOzs7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCis7Ozs7IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorOzs7OyB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7Ozs7Cis7Ozs7IFRo aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorOzs7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorOzs7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorOzs7OyBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7OworOzs7OyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7Ozs7IExp Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKKzs7OzsgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorCisoZGVmaW5lLW1vZHVsZSAodGVz dC1nZW5lcmljLWhhc2gtdGFibGVzKQorICAjOnVzZS1tb2R1bGUgKHRlc3Qtc3VpdGUgbGliKQor ICAjOnVzZS1tb2R1bGUgKGljZS05IGdlbmVyaWMtaGFzaC10YWJsZXMpCisgICM6dXNlLW1vZHVs ZSAoc3JmaSBzcmZpLTEpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTgpCisgICM6dXNlLW1v ZHVsZSAoc3JmaSBzcmZpLTI2KSkKKworKGRlZmluZSAoc3RyaW5nLWNpLWFzc29jLWVxdWFsPyBs ZWZ0IHJpZ2h0KQorICAiQW5zd2VyIHdoZXRoZXIgTEVGVCBhbmQgUklHSFQgYXJlIGVxdWFsLCBi ZWluZyBhc3NvY2lhdGlvbnMgb2YKK2Nhc2UtaW5zZW5zaXRpdmUgc3RyaW5ncyB0byBgZXF1YWw/ Jy10ZXN0ZWQgdmFsdWVzLiIKKyAgKGFuZCAoc3RyaW5nLWNpPT8gKGNhciBsZWZ0KSAoY2FyIHJp Z2h0KSkKKyAgICAgICAoZXF1YWw/IChjZHIgbGVmdCkgKGNkciByaWdodCkpKSkKKworKGRlZmlu ZS1zeW50YXggd2l0aC1lbHQtaW4tbGlzdAorICAoc3ludGF4LXJ1bGVzICgpCisgICAgKCh3aXRo LWVsdC1pbi1saXN0IGFyZyBhcmctbGlzdCBleHByIC4uLikKKyAgICAgKGxldCBsb29wICgoYXJn LWxpc3QqIGFyZy1saXN0KSkKKyAgICAgICAob3IgKG51bGw/IGFyZy1saXN0KikKKyAgICAgICAg ICAgKGFuZCAobGV0ICgoYXJnIChjYXIgYXJnLWxpc3QqKSkpCisgICAgICAgICAgICAgICAgICBl eHByIC4uLikKKyAgICAgICAgICAgICAgICAobG9vcCAoY2RyIGFyZy1saXN0KikpKSkpKSkpCisK KyhkZWZpbmUgKHRlc3Qtc3RyLXdlYWtuZXNzIHN0ciB3ZWFrbmVzcykKKyAgKGlmIChub3Qgd2Vh a25lc3MpIHN0ciAoZm9ybWF0ICNmICJ+YSAod2Vha25lc3M6IH5hKSIgc3RyIHdlYWtuZXNzKSkp CisKKyh3aXRoLXRlc3QtcHJlZml4ICJnZW5lcmljLWhhc2gtdGFibGVzIgorCisgIChwYXNzLWlm LWV4Y2VwdGlvbiAiYmFkIHdlYWtuZXNzIGFyZyB0byBtaHQgc2lnbmFscyBhbiBlcnJvciIKKyAg ICAgICcobWlzYy1lcnJvciAuICJeSW52YWxpZCBoYXNoIHRhYmxlIHdlYWtuZXNzIikKKyAgICAo bWFrZS1oYXNoLXRhYmxlIGVxdWFsPyBoYXNoICM6d2Vha25lc3MgJ3dlYWsta2V5LW9yLXZhbHVl KSkKKworICAocGFzcy1pZi1leGNlcHRpb24gInVuc3VwcG9ydGVkIHdlYWtuZXNzIGFyZyB0byBt aHQgc2lnbmFscyBhbiBlcnJvciIKKyAgICAgICcobWlzYy1lcnJvciAuICJeVW5zdXBwb3J0ZWQg aGFzaCB0YWJsZSB3ZWFrbmVzcyIpCisgICAgKG1ha2UtaGFzaC10YWJsZSBlcXVhbD8gaGFzaCAj OndlYWtuZXNzICdlcGhlbWVyYWwta2V5KSkKKworICAocGFzcy1pZiAiY2FuIHVzZSBhbGwgYXJn dW1lbnRzLCBpbmNsdWRpbmcgc2l6ZSIKKyAgICAoaGFzaC10YWJsZT8gKG1ha2UtaGFzaC10YWJs ZSBlcXVhbD8gaGFzaCAjOndlYWtuZXNzICd3ZWFrLWtleSAzMSkpKQorCisgIDs7IFRoZSBmb2xs b3dpbmcgdGVzdHMgYXJlIGRvbmUgb25jZSB3aXRoIGVhY2gga2luZCBvZiB3ZWFrbmVzcworICAo d2l0aC1lbHQtaW4tbGlzdCB3ZWFrbmVzcyAobGlzdCAjZiAnd2Vhay1rZXkgJ3dlYWstdmFsdWUg J3dlYWsta2V5LWFuZC12YWx1ZSkKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgInJl ZmxlY3RpdmUgcXVlcmllcyBmdW5jdGlvbiBwcm9wZXJseSIgd2Vha25lc3MpCisgICAgICAobGV0 ICgoaHQgKG1ha2UtaGFzaC10YWJsZSBlcXY/ICNmICM6d2Vha25lc3Mgd2Vha25lc3MpKSkKKyAg ICAgICAgKGFuZCAoaGFzaC10YWJsZS1tdXRhYmxlPyBodCkKKyAgICAgICAgICAgICAoZXE/IGVx dj8gKGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQpKQorICAgICAgICAgICAgIChl cT8gaGFzaC1ieS12YWx1ZSAoaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uIGh0KSkKKyAgICAgICAg ICAgICAoZXE/IHdlYWtuZXNzIChoYXNoLXRhYmxlLXdlYWtuZXNzIGh0KSkKKyAgICAgICAgICAg ICAoZXF1YWw/IChsaXN0IChoYXNoLXRhYmxlLWtleS13ZWFrbmVzcyBodCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLXZhbHVlLXdlYWtuZXNzIGh0KSkKKyAgICAgICAg ICAgICAgICAgICAgIChjYXNlIHdlYWtuZXNzCisgICAgICAgICAgICAgICAgICAgICAgICgoI2Yp ICcoI2YgI2YpKQorICAgICAgICAgICAgICAgICAgICAgICAoKHdlYWsta2V5KSAnKHdlYWsta2V5 cyAjZikpCisgICAgICAgICAgICAgICAgICAgICAgICgod2Vhay12YWx1ZSkgJygjZiB3ZWFrLXZh bHVlcykpCisgICAgICAgICAgICAgICAgICAgICAgICgod2Vhay1rZXktYW5kLXZhbHVlKSAnKHdl YWsta2V5cyB3ZWFrLXZhbHVlcykpKSkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFr bmVzcyAiaGFzaC10YWJsZS1jb250YWlucz8gZnVuY3Rpb25zIHByb3Blcmx5IiB3ZWFrbmVzcykK KyAgICAgIChsZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtu ZXNzKSkpCisgICAgICAgIChoYXNoLXRhYmxlLXNldC1zaW5nbGUhIGh0ICdhIDEpCisgICAgICAg IChhbmQgKGhhc2gtdGFibGUtY29udGFpbnM/IGh0ICdhKQorICAgICAgICAgICAgIChub3QgKGhh c2gtdGFibGUtY29udGFpbnM/IGh0ICdiKSkKKyAgICAgICAgICAgICAoYmVnaW4gKGhhc2gtdGFi bGUtc2V0LXNpbmdsZSEgaHQgJ2IgMSkKKyAgICAgICAgICAgICAgICAgICAgKGhhc2gtdGFibGUt Y29udGFpbnM/IGh0ICdiKSkKKyAgICAgICAgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtZGVsZXRl LXNpbmdsZSEgaHQgJ2EpCisgICAgICAgICAgICAgICAgICAgIChub3QgKGhhc2gtdGFibGUtY29u dGFpbnM/IGh0ICdhKSkpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgInNt YWxsIGFsaXN0PC0+aGFzaCB0YWJsZXMgcm91bmQtdHJpcCIgd2Vha25lc3MpCisgICAgICAobGV0 KiAoKHN0YXJ0LWFsaXN0ICcoKGEgLiAxKSAoYiAuIDIpIChjIC4gMykgKGEgLiA0MikpKQorICAg ICAgICAgICAgIChodCAoYWxpc3QtPmhhc2gtdGFibGUgc3RhcnQtYWxpc3QgZXE/ICNmICM6d2Vh a25lc3Mgd2Vha25lc3MpKQorICAgICAgICAgICAgIChlbmQtYWxpc3QgKGhhc2gtdGFibGUtPmFs aXN0IGh0KSkpCisgICAgICAgIChhbmQgKD0gMyAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAg ICAgICAgICAobHNldD0gZXF1YWw/IGVuZC1hbGlzdCAodGFrZSBzdGFydC1hbGlzdCAzKSkKKyAg ICAgICAgICAgICAoPSAxIChoYXNoLXRhYmxlLXJlZiBodCAnYSkpCisgICAgICAgICAgICAgKD0g MiAoaGFzaC10YWJsZS1yZWYgaHQgJ2IpKQorICAgICAgICAgICAgICg9IDMgKGhhc2gtdGFibGUt cmVmIGh0ICdjKSkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAic3RyaW5n LWNpPT8gdGFibGVzIHdvcmsgYnkgZGVmYXVsdCIgd2Vha25lc3MpCisgICAgICAobGV0ICgoaHQg KGFsaXN0LT5oYXNoLXRhYmxlICcoKCJ4WSIgLiAyKSAoImFiYyIgLiA1NCkpIHN0cmluZy1jaT0/ ICNmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6d2Vha25lc3Mgd2Vha25l c3MpKSkKKyAgICAgICAgKGhhc2gtdGFibGUtc2V0ISBodCAiWFkiIDQyICJxcXEiIDEwMCkKKyAg ICAgICAgKGFuZCAoPSA1NCAoaGFzaC10YWJsZS1yZWYgaHQgIkFCYyIpKQorICAgICAgICAgICAg ICg9IDQyIChoYXNoLXRhYmxlLXJlZiBodCAieHkiKSkKKyAgICAgICAgICAgICAoPSAzIChoYXNo LXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgIChsc2V0PSBzdHJpbmctY2ktYXNzb2MtZXF1 YWw/CisgICAgICAgICAgICAgICAgICAgICcoKCJ4eSIgLiA0MikgKCJhYmMiIC4gNTQpICgicXFx IiAuIDEwMCkpCisgICAgICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkp CisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImVtcHR5IGhhc2ggdGFibGVzIGFy ZSBlbXB0eSIgd2Vha25lc3MpCisgICAgICAobGV0ICgoaHQgKG1ha2UtaGFzaC10YWJsZSBlcT8g I2YgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoYW5kICg9IDAgKGhhc2gtdGFibGUt c2l6ZSBodCkpCisgICAgICAgICAgICAgKGhhc2gtdGFibGUtZW1wdHk/IGh0KQorICAgICAgICAg ICAgIChudWxsPyAoaGFzaC10YWJsZS0+YWxpc3QgaHQpKSkpKQorCisgICAgKHBhc3MtaWYgKHRl c3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxlIGZ1bmN0aW9ucyBwcm9wZXJseSIgd2Vha25lc3Mp CisgICAgICAobGV0ICgoaHQgKGhhc2gtdGFibGUgKGxpc3QgZXE/ICNmICM6d2Vha25lc3Mgd2Vh a25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EgMSAnYiAyICdjIDMpKSkKKyAg ICAgICAgKGFuZCAoPSAzIChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgIChsc2V0 PSBlcXVhbD8gJygoYSAuIDEpIChiIC4gMikgKGMgLiAzKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0 KSkKKyAgICAgICAgICAgICAoZXE/IHdlYWtuZXNzIChoYXNoLXRhYmxlLXdlYWtuZXNzIGh0KSkK KyAgICAgICAgICAgICAobm90IChoYXNoLXRhYmxlLW11dGFibGU/IGh0KSkpKSkKKworICAgIChw YXNzLWlmLWV4Y2VwdGlvbgorICAgICAgICAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUg d2l0aCBlcXVpdmFsZW50IGtleXMgc2lnbmFscyBhbiBlcnJvciIgd2Vha25lc3MpCisgICAgICAg ICcobWlzYy1lcnJvciAuICJeVHdvIGVxdWl2YWxlbnQga2V5cyB3ZXJlIHByb3ZpZGVkIikKKyAg ICAgIChoYXNoLXRhYmxlIChsaXN0IHN0cmluZz0/ICNmICM6d2Vha25lc3Mgd2Vha25lc3MpCisg ICAgICAgICAgICAgICAgICAiYSIgMSAiYiIgMiAiYyIgMyAiYSIgNCkpCisKKyAgICAocGFzcy1p ZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtdW5mb2xkIGZ1bmN0aW9ucyBwcm9wZXJs eSIgd2Vha25lc3MpCisgICAgICAobGV0ICgoaHQgKGhhc2gtdGFibGUtdW5mb2xkIChsYW1iZGEg KGkpICg+PSBpIDUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRh IChpKSAodmFsdWVzIGkgKCogaSAxMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAxKyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdj8gI2YgIzp3 ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoYW5kICg9IDUgKGhhc2gtdGFibGUtc2l6ZSBo dCkpCisgICAgICAgICAgICAgKGVxPyB3ZWFrbmVzcyAoaGFzaC10YWJsZS13ZWFrbmVzcyBodCkp CisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFsPyAnKCgwIC4gMCkgKDEgLiAxMCkgKDIgLiAyMCkg KDMgLiAzMCkgKDQgLiA0MCkpCisgICAgICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLT5hbGlz dCBodCkpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGU9 PyBmdW5jdGlvbnMgcHJvcGVybHkiIHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0MSAoaGFzaC10 YWJsZS11bmZvbGQgKGxhbWJkYSAoaSkgKD49IGkgNSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGFtYmRhIChpKSAodmFsdWVzIGkgKCogaSAxMCkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMSsgMAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXF2PyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkKKyAgICAgICAgICAgICho dDIgKGFsaXN0LT5oYXNoLXRhYmxlICcoKDAgLiAwKSAoMSAuIDEwKSAoMiAuIDIwKSAoMyAuIDMw KSAoNCAuIDQwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdj8gI2Yg Izp3ZWFrbmVzcyB3ZWFrbmVzcykpCisgICAgICAgICAgICAoaHQzIChhbGlzdC0+aGFzaC10YWJs ZSAnKCgwIC4gMCkgKDEgLiAxMCkgKDIgLiAyMCkgKDMgLiAzMCkgKDQgLiA0MCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVhbD8gI2YgIzp3ZWFrbmVzcyB3ZWFrbmVz cykpCisgICAgICAgICAgICAoaHQ0IChhbGlzdC0+aGFzaC10YWJsZSAnKCgwIC4gMTApICgxIC4g MTApICgyIC4gMjApICgzIC4gMzApICg0IC4gNDApKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXF2PyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkpCisgICAgICAgIChhbmQg KGhhc2gtdGFibGU9PyBlcXY/IGh0MSBodDIpCisgICAgICAgICAgICAgKG5vdCAoaGFzaC10YWJs ZT0/IGVxdj8gaHQxIGh0MykpCisgICAgICAgICAgICAgKG5vdCAoaGFzaC10YWJsZT0/IGVxdj8g aHQxIGh0NCkpCisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFsPyAnKCgwIC4gMCkgKDEgLiAxMCkg KDIgLiAyMCkgKDMgLiAzMCkgKDQgLiA0MCkpCisgICAgICAgICAgICAgICAgICAgIChoYXNoLXRh YmxlLT5hbGlzdCBodDMpKSkpKQorCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJo YXNoLXRhYmxlLXJlZiB1c2VzIGRlZmF1bHQiIHdlYWtuZXNzKQorICAgICAgKGVxdWFsPyAnKDQp CisgICAgICAgICAgICAgIChoYXNoLXRhYmxlLXJlZiAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAu IDEpKSBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjOndlYWtuZXNzIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2IgKGN1dCBsaXN0ICgrIDIgMikpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25l c3MgImhhc2gtdGFibGUtcmVmL2RlZmF1bHQgdXNlcyBkZWZhdWx0IiB3ZWFrbmVzcykKKyAgICAg IChlcXVhbD8gJ2ZvbworICAgICAgICAgICAgICAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCAoYWxp c3QtPmhhc2gtdGFibGUgJygoYSAuIDEpKSBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6d2Vha25lc3Mgd2Vha25lc3MpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiICdmb28pKSkKKworICAgIChw YXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1kZWxldGUhIGRlbGV0ZXMgcHJl c2VudCBhc3NvY3MsIGlnbm9yZXMgb3RoZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAu IDEpIChiIC4gMikpIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkpCisgICAgICAgIChhbmQg KD0gMCAoaGFzaC10YWJsZS1kZWxldGUhIGh0ICdjKSkKKyAgICAgICAgICAgICAoPSAyIChoYXNo LXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgICg9IDEgKGhhc2gtdGFibGUtZGVsZXRlISBo dCAnYSkpCisgICAgICAgICAgICAgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAg ICAgICAobHNldD0gZXF1YWw/ICcoKGIgLiAyKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkK KworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1kZWxldGUhIGRl bGV0ZXMgc2V2ZXJhbCBrZXlzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFr bmVzcykKKyAgICAgIChsZXQgKChodCAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAuIDEpIChiIC4g MikgKGQgLiA0KSAoZSAuIDUpKSBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoYW5kICg9IDQgKGhhc2gtdGFi bGUtc2l6ZSBodCkpCisgICAgICAgICAgICAgKD0gMyAoaGFzaC10YWJsZS1kZWxldGUhIGh0ICdh ICdiICdjICdlKSkKKyAgICAgICAgICAgICAoPSAxIChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAg ICAgICAgICAgIChsc2V0PSBlcXVhbD8gJygoZCAuIDQpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQp KSkpKQorCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJhbGlzdC0+aGFzaC10YWJs ZSBkb2VzIG5vdCByZXF1aXJlIGxpbmVhciBzdGFjayBzcGFjZSIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgd2Vha25lc3MpCisgICAgICAoZXF2PyA5OTk5OQorICAgICAgICAgICAg KGhhc2gtdGFibGUtcmVmCisgICAgICAgICAgICAgKGFsaXN0LT5oYXNoLXRhYmxlICh1bmZvbGQt cmlnaHQgKGN1dCA+PSA8PiAxMDAwMDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxhbWJkYSAocykgYCh4IC4gLHMpKSAxKyAwKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykKKyAgICAgICAgICAgICAneCkpKQorCisgICAgKHBhc3Mt aWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxlLXVwZGF0ZSEgbW9kaWZpZXMgZXhpc3Rp bmcgYmluZGluZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha25lc3MpCisg ICAgICAobGV0ICgoaHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSkgZXE/ICNmICM6d2Vh a25lc3Mgd2Vha25lc3MpKSkKKyAgICAgICAgKGhhc2gtdGFibGUtdXBkYXRlISBodCAnYSAxKykK KyAgICAgICAgKGhhc2gtdGFibGUtdXBkYXRlISBodCAnYSAoY3V0ICsgNCA8PikgKGxhbWJkYSAo KSA0MikpCisgICAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAg ICAgICAobHNldD0gZXF1YWw/ICcoKGEgLiA2KSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkK KworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS11cGRhdGUhIGNy ZWF0ZXMgbmV3IGJpbmRpbmcgd2hlbiBhcHByb3ByaWF0ZSIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgd2Vha25lc3MpCisgICAgICAobGV0ICgoaHQgKG1ha2UtaGFzaC10YWJsZSBl cT8gI2YgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoaGFzaC10YWJsZS11cGRhdGUh IGh0ICdiIDErIChsYW1iZGEgKCkgNDIpKQorICAgICAgICAoaGFzaC10YWJsZS11cGRhdGUhIGh0 ICdiIChjdXQgKyAxMCA8PikpCisgICAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0 KSkKKyAgICAgICAgICAgICAobHNldD0gZXF1YWw/ICcoKGIgLiA1MykpIChoYXNoLXRhYmxlLT5h bGlzdCBodCkpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFi bGUtaW50ZXJuISBjcmVhdGVzIG5ldyBiaW5kaW5nIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIGVxPyAj ZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkpCisgICAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1p bnRlcm4hIGh0ICdiIChjb25zdCAxKSkpCisgICAgICAgICAgICAgKD0gMSAoaGFzaC10YWJsZS1z aXplIGh0KSkKKyAgICAgICAgICAgICAobHNldD0gZXF1YWw/ICcoKGIgLiAxKSkgKGhhc2gtdGFi bGUtPmFsaXN0IGh0KSkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFz aC10YWJsZS1pbnRlcm4hIGRvZXNuJ3QgbW9kaWZ5IGV4aXN0aW5nIGJpbmRpbmciCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0IChhbGlz dC0+aGFzaC10YWJsZSAnKChhIC4gMSkpIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkpCisg ICAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1pbnRlcm4hIGh0ICdhIChjb25zdCAyKSkpCisg ICAgICAgICAgICAgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgICAgICAobHNl dD0gZXF1YWw/ICcoKGEgLiAxKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkKKworICAgIChw YXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1wb3AhIGZ1bmN0aW9ucyBwcm9w ZXJseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha25lc3MpCisgICAgICAo bGV0KiAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSkgZXE/ICNmICM6 d2Vha25lc3Mgd2Vha25lc3MpKQorICAgICAgICAgICAgIChwb3BwZWQgKHJlY2VpdmUgKGtleSB2 YWwpIChoYXNoLXRhYmxlLXBvcCEgaHQpIChsaXN0IGtleSB2YWwpKSkpCisgICAgICAgIChvciAo YW5kIChlcXVhbD8gJyhhIDEpIHBvcHBlZCkKKyAgICAgICAgICAgICAgICAgKGVxdWFsPyAnKChi IC4gMikpIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKQorICAgICAgICAgICAgKGFuZCAoZXF1YWw/ ICcoYiAyKSBwb3BwZWQpCisgICAgICAgICAgICAgICAgIChlcXVhbD8gJygoYSAuIDEpKSAoaGFz aC10YWJsZS0+YWxpc3QgaHQpKSkpKSkKKworICAgIChwYXNzLWlmLWV4Y2VwdGlvbgorICAgICAg ICAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtcG9wISB3aXRoIGVtcHR5IGhhc2ggdGFi bGUgc2lnbmFscyBhbiBlcnJvciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtuZXNz KQorICAgICAgICAnKG1pc2MtZXJyb3IgLiAiXkhhc2ggdGFibGUgaXMgZW1wdHkiKQorICAgICAg KGhhc2gtdGFibGUtcG9wISAobWFrZS1oYXNoLXRhYmxlIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtu ZXNzKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtY2xl YXIhIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg d2Vha25lc3MpCisgICAgICAobGV0ICgoaHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAo YiAuIDIpKSBlcT8gI2YgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoaGFzaC10YWJs ZS1jbGVhciEgaHQpCisgICAgICAgIChhbmQgKD0gMCAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAg ICAgICAgICAgICAoaGFzaC10YWJsZS1lbXB0eT8gaHQpCisgICAgICAgICAgICAgKG51bGw/ICho YXNoLXRhYmxlLT5hbGlzdCBodCkpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25l c3MgImhhc2gtdGFibGUtZmluZCBmdW5jdGlvbnMgcHJvcGVybHkiIHdlYWtuZXNzKQorICAgICAg KGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSAoYyAuIDMpKSBl cT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrbmVzcyB3ZWFr bmVzcykpKQorICAgICAgICAoYW5kIChlcT8gJ2IgKGhhc2gtdGFibGUtZmluZCAobGFtYmRhIChr ZXkgdmFsKSAoYW5kIChldmVuPyB2YWwpIGtleSkpIGh0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgI2YpKSkKKyAgICAgICAgICAgICAobm90IChoYXNo LXRhYmxlLWZpbmQgKGxhbWJkYSAoa2V5IHZhbCkgKD0gdmFsIDQpKSBodAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgpICNmKSkpKSkpCisKKyAgICAocGFzcy1p ZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtY291bnQgZnVuY3Rpb25zIHByb3Blcmx5 IiB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAuIDEp IChiIC4gMikgKGMgLiAzKSAoZCAuIDQpKSBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoYW5kICg9IDIgKGhh c2gtdGFibGUtY291bnQgKGxhbWJkYSAoa2V5IHZhbCkgKGV2ZW4/IHZhbCkpIGh0KSkKKyAgICAg ICAgICAgICAoPSAxIChoYXNoLXRhYmxlLWNvdW50IChsYW1iZGEgKGtleSB2YWwpICg9IHZhbCA0 KSkgaHQpKQorICAgICAgICAgICAgICg9IDAgKGhhc2gtdGFibGUtY291bnQgKGxhbWJkYSAoa2V5 IHZhbCkgKD0gdmFsIDUpKSBodCkpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25l c3MgImhhc2ggdGFibGUga2V5cyBhbmQgdmFsdWVzIGFyZSBjb3JyZWN0IiB3ZWFrbmVzcykKKyAg ICAgIChsZXQgKChodCAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAuIDEpIChiIC4gMikgKGMgLiAz KSAoZCAuIDQpKSBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3 ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoYW5kIChsc2V0PSBlcT8gJyhhIGIgYyBkKSAo aGFzaC10YWJsZS1rZXlzIGh0KSkKKyAgICAgICAgICAgICAobHNldD0gPSAgICcoMSAyIDMgNCkg KGhhc2gtdGFibGUtdmFsdWVzIGh0KSkKKyAgICAgICAgICAgICAocmVjZWl2ZSAoa2V5cyB2YWxz KSAoaGFzaC10YWJsZS1lbnRyaWVzIGh0KQorICAgICAgICAgICAgICAgKGFuZCAobHNldD0gZXE/ ICcoYSBiIGMgZCkga2V5cykKKyAgICAgICAgICAgICAgICAgICAgKGxzZXQ9ID0gICAnKDEgMiAz IDQpIHZhbHMpKSkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaCB0 YWJsZSBrZXkgYW5kIHZhbHVlIHZlY3RvcnMgYXJlIGNvcnJlY3QiIHdlYWtuZXNzKQorICAgICAg KGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSAoYyAuIDMpIChk IC4gNCkpIGVxPyAjZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOndlYWtu ZXNzIHdlYWtuZXNzKSkpCisgICAgICAgIChhbmQgKGxzZXQ9IGVxPyAnKGEgYiBjIGQpICh2ZWN0 b3ItPmxpc3QgKGhhc2gtdGFibGUta2V5LXZlY3RvciBodCkpKQorICAgICAgICAgICAgIChsc2V0 PSA9ICAgJygxIDIgMyA0KSAodmVjdG9yLT5saXN0IChoYXNoLXRhYmxlLXZhbHVlLXZlY3RvciBo dCkpKQorICAgICAgICAgICAgIChyZWNlaXZlIChrZXlzIHZhbHMpIChoYXNoLXRhYmxlLWVudHJ5 LXZlY3RvcnMgaHQpCisgICAgICAgICAgICAgICAoYW5kIChsc2V0PSBlcT8gJyhhIGIgYyBkKSAo dmVjdG9yLT5saXN0IGtleXMpKQorICAgICAgICAgICAgICAgICAgICAobHNldD0gPSAgICcoMSAy IDMgNCkgKHZlY3Rvci0+bGlzdCB2YWxzKSkpKSkpKQorCisgICAgKHBhc3MtaWYgKHRlc3Qtc3Ry LXdlYWtuZXNzICJoYXNoLXRhYmxlLW1hcCBmdW5jdGlvbnMgcHJvcGVybHkiIHdlYWtuZXNzKQor ICAgICAgKGxldCogKChodDEgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAoYiAuIDIpKSBl cT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOndlYWtuZXNzIHdl YWtuZXNzKSkKKyAgICAgICAgICAgICAoaHQyIChoYXNoLXRhYmxlLW1hcCAxKyBodDEgZXE/ICNm KSkpCisgICAgICAgIChhbmQgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0MikpCisgICAgICAgICAg ICAgKGxzZXQ9IGVxdWFsPyAnKChhIC4gMikgKGIgLiAzKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0 MikpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtbWFw ISBmdW5jdGlvbnMgcHJvcGVybHkiIHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0IChhbGlzdC0+ aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSkgZXE/ICNmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICM6d2Vha25lc3Mgd2Vha25lc3MpKSkKKyAgICAgICAgKGhhc2gtdGFi bGUtbWFwISAobGFtYmRhIChrZXkgdmFsKSAoKyB2YWwgMSkpIGh0KQorICAgICAgICAoYW5kICg9 IDIgKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFsPyAnKChh IC4gMikgKGIgLiAzKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkKKworICAgIChwYXNzLWlm ICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1mb3ItZWFjaCBpZ25vcmVzIHJldHVybiB2 YWx1ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtuZXNzKQorICAgICAg KGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSAoYyAuIDMpKSBl cT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrbmVzcyB3ZWFr bmVzcykpKQorICAgICAgICAoZm9yLWVhY2ggKGN1dCBoYXNoLXRhYmxlLWZvci1lYWNoIDw+IGh0 KQorICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhbWJkYSAoayB2KSAodmFsdWVzKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGsgdikgKHZhbHVlcyAxIDIgMykpKSkKKyAgICAg ICAgI3QpKQorCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxlLW1h cC0+bGlzdCBmdW5jdGlvbnMgcHJvcGVybHkiIHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0IChh bGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSkgZXE/ICNmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICM6d2Vha25lc3Mgd2Vha25lc3MpKSkKKyAgICAgICAgKGFu ZCAobHNldD0gZXE/ICcoYSBiKSAoaGFzaC10YWJsZS1tYXAtPmxpc3QgKGxhbWJkYSAoa2V5IHZh bCkga2V5KSBodCkpCisgICAgICAgICAgICAgKGxzZXQ9ID0gJygxIDIpIChoYXNoLXRhYmxlLW1h cC0+bGlzdCAobGFtYmRhIChrZXkgdmFsKSB2YWwpIGh0KSkpKSkKKworICAgIChwYXNzLWlmICh0 ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1mb2xkIGZ1bmN0aW9ucyBwcm9wZXJseSIgd2Vh a25lc3MpCisgICAgICAobGV0ICgoaHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAoYiAu IDIpKSBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrbmVz cyB3ZWFrbmVzcykpKQorICAgICAgICAoPSAzIChoYXNoLXRhYmxlLWZvbGQgKGxhbWJkYSAoa2V5 IHZhbCBhY2MpICgrIHZhbCBhY2MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCBo dCkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1wcnVu ZSEgZnVuY3Rpb25zIHByb3Blcmx5IiB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAoYWxpc3Qt Pmhhc2gtdGFibGUgJygoYSAuIDEpIChiIC4gMikgKGMgLiAzKSAoZCAuIDQpKSBlcT8gI2YKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpKQor ICAgICAgICAoaGFzaC10YWJsZS1wcnVuZSEgKGxhbWJkYSAoa2V5IHZhbCkgKGV2ZW4/IHZhbCkp IGh0KQorICAgICAgICAobHNldD0gZXF1YWw/ICcoKGEgLiAxKSAoYyAuIDMpKSAoaGFzaC10YWJs ZS0+YWxpc3QgaHQpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gt dGFibGUtY29weSBmdW5jdGlvbnMgcHJvcGVybHkiIHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0 IChoYXNoLXRhYmxlLWNvcHkgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAoYiAuIDIpKSBl cT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjOndlYWtuZXNzIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IzptdXRhYmxlICN0KSkpCisgICAgICAgIChhbmQgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0KSkK KyAgICAgICAgICAgICAobHNldD0gZXF1YWw/ICcoKGEgLiAxKSAoYiAuIDIpKSAoaGFzaC10YWJs ZS0+YWxpc3QgaHQpKQorICAgICAgICAgICAgIChoYXNoLXRhYmxlLW11dGFibGU/IGh0KSkpKQor CisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxlLXVuaW9uISBmdW5j dGlvbnMgcHJvcGVybHkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtuZXNz KQorICAgICAgKGxldCogKChodDEgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAoYiAuIDIp KSBlcT8gI2YgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpCisgICAgICAgICAgICAgKGh0MiAoYWxpc3Qt Pmhhc2gtdGFibGUgJygoYiAuIDMpIChjIC4gNCkpIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtuZXNz KSkpCisgICAgICAgIChzZXQhIGh0MSAoaGFzaC10YWJsZS11bmlvbiEgaHQxIGh0MikpCisgICAg ICAgIChhbmQgKD0gMyAoaGFzaC10YWJsZS1zaXplIGh0MSkpCisgICAgICAgICAgICAgKD0gMiAo aGFzaC10YWJsZS1zaXplIGh0MikpCisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFsPyAnKChhIC4g MSkgKGIgLiAyKSAoYyAuIDQpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQxKSkKKyAgICAgICAgICAg ICAobHNldD0gZXF1YWw/ICcoKGIgLiAzKSAoYyAuIDQpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQy KSkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1pbnRl cnNlY3Rpb24hIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2Vha25lc3MpCisgICAgICAobGV0KiAoKGh0MSAoYWxpc3QtPmhhc2gtdGFibGUgJygo YSAuIDEpIChiIC4gMikpIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkKKyAgICAgICAgICAg ICAoaHQyIChhbGlzdC0+aGFzaC10YWJsZSAnKChiIC4gMykgKGMgLiA0KSkgZXE/ICNmICM6d2Vh a25lc3Mgd2Vha25lc3MpKSkKKyAgICAgICAgKHNldCEgaHQxIChoYXNoLXRhYmxlLWludGVyc2Vj dGlvbiEgaHQxIGh0MikpCisgICAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0MSkp CisgICAgICAgICAgICAgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0MikpCisgICAgICAgICAgICAg KGxzZXQ9IGVxdWFsPyAnKChiIC4gMikpIChoYXNoLXRhYmxlLT5hbGlzdCBodDEpKQorICAgICAg ICAgICAgIChsc2V0PSBlcXVhbD8gJygoYiAuIDMpIChjIC4gNCkpIChoYXNoLXRhYmxlLT5hbGlz dCBodDIpKSkpKQorCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxl LWRpZmZlcmVuY2UhIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgd2Vha25lc3MpCisgICAgICAobGV0KiAoKGh0MSAoYWxpc3QtPmhhc2gtdGFibGUg JygoYSAuIDEpIChiIC4gMikpIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkKKyAgICAgICAg ICAgICAoaHQyIChhbGlzdC0+aGFzaC10YWJsZSAnKChiIC4gMykgKGMgLiA0KSkgZXE/ICNmICM6 d2Vha25lc3Mgd2Vha25lc3MpKSkKKyAgICAgICAgKHNldCEgaHQxIChoYXNoLXRhYmxlLWRpZmZl cmVuY2UhIGh0MSBodDIpKQorICAgICAgICAoYW5kICg9IDEgKGhhc2gtdGFibGUtc2l6ZSBodDEp KQorICAgICAgICAgICAgICg9IDIgKGhhc2gtdGFibGUtc2l6ZSBodDIpKQorICAgICAgICAgICAg IChsc2V0PSBlcXVhbD8gJygoYSAuIDEpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQxKSkKKyAgICAg ICAgICAgICAobHNldD0gZXF1YWw/ICcoKGIgLiAzKSAoYyAuIDQpKSAoaGFzaC10YWJsZS0+YWxp c3QgaHQyKSkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJs ZS14b3IhIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgd2Vha25lc3MpCisgICAgICAobGV0KiAoKGh0MSAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAu IDEpIChiIC4gMikpIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkKKyAgICAgICAgICAgICAo aHQyIChhbGlzdC0+aGFzaC10YWJsZSAnKChiIC4gMykgKGMgLiA0KSkgZXE/ICNmICM6d2Vha25l c3Mgd2Vha25lc3MpKSkKKyAgICAgICAgKHNldCEgaHQxIChoYXNoLXRhYmxlLXhvciEgaHQxIGh0 MikpCisgICAgICAgIChhbmQgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0MSkpCisgICAgICAgICAg ICAgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0MikpCisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFs PyAnKChhIC4gMSkgKGMgLiA0KSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0MSkpCisgICAgICAgICAg ICAgKGxzZXQ9IGVxdWFsPyAnKChiIC4gMykgKGMgLiA0KSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0 MikpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImltbXV0YWJsZSBoYXNo IHRhYmxlcyBhcmUgaW1tdXRhYmxlIiB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAoaGFzaC10 YWJsZS1jb3B5IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSkgZXE/ICNmCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFr bmVzcyB3ZWFrbmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6bXV0YWJs ZSAjZikpKQorICAgICAgICAoYW5kICg9IDIgKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAg ICAgICAgKG5vdCAoaGFzaC10YWJsZS1tdXRhYmxlPyBodCkpKSkpCisKKyAgICA7OyBUZXN0cyB3 aGV0aGVyIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBwcm9jZWR1cmUgc2lnbmFscyBhbiBlcnJvciBv bgorICAgIDs7IGltbXV0YWJsZSBoYXNoIHRhYmxlcworICAgICh3aXRoLWVsdC1pbi1saXN0IHN5 bStwcm9jCisgICAgICAgIChsaXN0CisgICAgICAgICAoY29ucyAnaGFzaC10YWJsZS1zZXQhCisg ICAgICAgICAgICAgICAobGFtYmRhIChodCkgKGhhc2gtdGFibGUtc2V0ISBodCAnYSAyICdiIDMp KSkKKyAgICAgICAgIChjb25zICdoYXNoLXRhYmxlLXNldC1zaW5nbGUhCisgICAgICAgICAgICAg ICAobGFtYmRhIChodCkgKGhhc2gtdGFibGUtc2V0LXNpbmdsZSEgaHQgJ2EgMikpKQorICAgICAg ICAgKGNvbnMgJ2hhc2gtdGFibGUtZGVsZXRlIQorICAgICAgICAgICAgICAgKGxhbWJkYSAoaHQp IChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQgJ2EgJ2IpKSkKKyAgICAgICAgIChjb25zICdoYXNoLXRh YmxlLWRlbGV0ZS1zaW5nbGUhCisgICAgICAgICAgICAgICAobGFtYmRhIChodCkgKGhhc2gtdGFi bGUtZGVsZXRlLXNpbmdsZSEgaHQgJ2EpKSkKKyAgICAgICAgIChjb25zICdoYXNoLXRhYmxlLWlu dGVybiEKKyAgICAgICAgICAgICAgIChsYW1iZGEgKGh0KSAoaGFzaC10YWJsZS1pbnRlcm4hIGh0 ICdhIChjb25zdCAyKSkpKQorICAgICAgICAgKGNvbnMgJ2hhc2gtdGFibGUtdXBkYXRlIQorICAg ICAgICAgICAgICAgKGxhbWJkYSAoaHQpIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQgJ2EgMSspKSkK KyAgICAgICAgIChjb25zICdoYXNoLXRhYmxlLXVwZGF0ZSEvZGVmYXVsdAorICAgICAgICAgICAg ICAgKGxhbWJkYSAoaHQpIChoYXNoLXRhYmxlLXVwZGF0ZSEvZGVmYXVsdCBodCAnYSAxKyAwKSkp CisgICAgICAgICAoY29ucyAnaGFzaC10YWJsZS1wb3AhCisgICAgICAgICAgICAgICAobGFtYmRh IChodCkgKGhhc2gtdGFibGUtcG9wISBodCkpKQorICAgICAgICAgKGNvbnMgJ2hhc2gtdGFibGUt Y2xlYXIhCisgICAgICAgICAgICAgICAobGFtYmRhIChodCkgKGhhc2gtdGFibGUtY2xlYXIhIGh0 KSkpCisgICAgICAgICAoY29ucyAnaGFzaC10YWJsZS1wcnVuZSEKKyAgICAgICAgICAgICAgIChs YW1iZGEgKGh0KSAoaGFzaC10YWJsZS1wcnVuZSEgKGxhbWJkYSAoa2V5IHZhbCkgI3QpIGh0KSkp CisgICAgICAgICAoY29ucyAnaGFzaC10YWJsZS11bmlvbiEKKyAgICAgICAgICAgICAgIChsYW1i ZGEgKGh0KSAoaGFzaC10YWJsZS11bmlvbiEgaHQgaHQpKSkKKyAgICAgICAgIChjb25zICdoYXNo LXRhYmxlLWludGVyc2VjdGlvbiEKKyAgICAgICAgICAgICAgIChsYW1iZGEgKGh0KSAoaGFzaC10 YWJsZS1pbnRlcnNlY3Rpb24hIGh0IGh0KSkpCisgICAgICAgICAoY29ucyAnaGFzaC10YWJsZS1k aWZmZXJlbmNlIQorICAgICAgICAgICAgICAgKGxhbWJkYSAoaHQpIChoYXNoLXRhYmxlLWRpZmZl cmVuY2UhIGh0IGh0KSkpCisgICAgICAgICAoY29ucyAnaGFzaC10YWJsZS14b3IhCisgICAgICAg ICAgICAgICAobGFtYmRhIChodCkgKGhhc2gtdGFibGUteG9yISBodCBodCkpKSkKKyAgICAgIChw YXNzLWlmLWV4Y2VwdGlvbgorICAgICAgICAgICh0ZXN0LXN0ci13ZWFrbmVzcworICAgICAgICAg ICAoZm9ybWF0ICNmICJ+YSB3aXRoIGltbXV0YWJsZSBoYXNoIHRhYmxlIHNpZ25hbHMgYW4gZXJy b3IiIChjYXIgc3ltK3Byb2MpKQorICAgICAgICAgICB3ZWFrbmVzcykKKyAgICAgICAgICAnKG1p c2MtZXJyb3IgLiAiXkhhc2ggdGFibGUgaXMgbm90IG11dGFibGUiKQorICAgICAgICAobGV0ICgo aHQgKGhhc2gtdGFibGUtY29weSAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAuIDEpIChiIC4gMikp IGVxPyAjZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIzptdXRhYmxlICNmKSkpCisgICAgICAgICAgKChjZHIgc3ltK3Byb2MpIGh0KSkpKQor ICAgICkKKyAgKQotLSAKMi4xOS4xCgo= --000000000000b6a39d057efb700b--
bug-guile@HIDDEN
:bug#33827
; Package guile
.
Full text available.Received: (at 33827) by debbugs.gnu.org; 23 Dec 2018 17:09:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 23 12:09:42 2018 Received: from localhost ([127.0.0.1]:33966 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1gb7G1-0005th-Ia for submit <at> debbugs.gnu.org; Sun, 23 Dec 2018 12:09:42 -0500 Received: from mail-io1-f47.google.com ([209.85.166.47]:43217) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jessymilare@HIDDEN>) id 1gb7Fz-0005tU-A2 for 33827 <at> debbugs.gnu.org; Sun, 23 Dec 2018 12:09:40 -0500 Received: by mail-io1-f47.google.com with SMTP id q17so4151119ior.10 for <33827 <at> debbugs.gnu.org>; Sun, 23 Dec 2018 09:09:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=gPxRgx/PXSiUvuxxbLLlD7TRxE9/gR3n6MpbGVuzHGs=; b=nV6BldKApEzuHtIR+P9O0inLtyaK6Vs1JlBsr+1yvpLM7sH/YcqPE101MNDK2YFIHU 4V/AI2AoseP1nWXEgB900NHmJuyIQxbwrVzDXUxlgykZ+MSSkyHUTRcxt/go5NYM+cem 7eELVrvpoaFzdW+t7fVzEABeeTnfv5uBs7KXFE8g+kg5//7decjmYBIbPMPMKTj7/seQ qxya20PR9f7m3P/49T1Cknv5xZY4XVmHOAV81SyNA1pAy0uPzd2k1lEx6POepRC6bfSf rhAKelXPCRE5PqkKZzbWJzBezTZMt1EZ1jrYI4flxHNZ9mFBh+Honkc1r6iOkUzdUhhv w2dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=gPxRgx/PXSiUvuxxbLLlD7TRxE9/gR3n6MpbGVuzHGs=; b=k1OXwsdTmkJ0nSmrcvl0DlQiC8FK2AKE+Aaw8OGc56I+Hjz0IhE4Q8to3XHr/r7oQA KEibkUUmEMRgyOlKIPnp0Pj1QzGqPE821rvmKgX0U+isA2HobQWj2se1UziJ6wIW5e8A lQd7r71jtVpWdP7x1d9ycfVDUWsa0JDflQLUXMGBAFwcJ+iQlZAmx0BJcbseA1myT0Kw gHeomQv0tMyihFlD2gbH/imwuf9MTPshs7OhRYR+0qPXBljn4EAJXVRwbpONh7itWMuB yWF6Cv4dspkwzZdRZdqAqFhyLq1pnzII3dbaEi5OfAhTWGrk5fgCgjYGzzS2ayRKjkD4 cIjg== X-Gm-Message-State: AJcUukcA05edCyoh6/+sL7z1KlaxF+HIgRueI+8xJIG6jmPMYUaJ8GWz Fb2eAbn7Q3UFPAMy8Yl4wBaxFpUi9aEoD1sFc8awWQ== X-Google-Smtp-Source: ALg8bN5B1ZrQ3bVVjPhIcFf9A3pX4ejXKy/bsQY/r+Fb9Mp5HAI8VJw8wLDnx5tZobD0NXnBQP2C4Ow1DI0hRkcTmMU= X-Received: by 2002:a6b:600b:: with SMTP id r11mr7537125iog.259.1545584973273; Sun, 23 Dec 2018 09:09:33 -0800 (PST) MIME-Version: 1.0 From: =?UTF-8?B?SsOpc3NpY2EgTWlsYXLDqQ==?= <jessymilare@HIDDEN> Date: Sun, 23 Dec 2018 15:09:22 -0200 Message-ID: <CAGBcF1Z5WmXij2vX+EhxQHvWkmmOkeL-hV+Y-SUSpByH0tZQHw@HIDDEN> Subject: Patch To: 33827 <at> debbugs.gnu.org Content-Type: multipart/mixed; boundary="0000000000004d8042057db38bed" X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 33827 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.9 (/) --0000000000004d8042057db38bed Content-Type: multipart/alternative; boundary="0000000000004d8040057db38beb" --0000000000004d8040057db38beb Content-Type: text/plain; charset="UTF-8" --0000000000004d8040057db38beb Content-Type: text/html; charset="UTF-8" <div dir="ltr"><br></div> --0000000000004d8040057db38beb-- --0000000000004d8042057db38bed Content-Type: text/x-patch; charset="UTF-8"; name="0001-Fix-SRFI-69-don-t-use-handles-with-weak-tables-anymo.patch" Content-Disposition: attachment; filename="0001-Fix-SRFI-69-don-t-use-handles-with-weak-tables-anymo.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jq15dexw0> X-Attachment-Id: f_jq15dexw0 RnJvbSA4N2ZmNTE5YjkyODhkZWRjYzYyYTJmZDFiMmMwM2VjY2JmNjMxZTU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDIzIERlYyAyMDE4IDE1OjA3OjMy IC0wMjAwClN1YmplY3Q6IFtQQVRDSF0gRml4OiAoU1JGSSA6NjkpIGRvbid0IHVzZSBoYW5kbGVz IHdpdGggd2VhayB0YWJsZXMgYW55bW9yZS4KCk1hbnkgcHJvY2VkdXJlcyB1c2VkIGhhc2h4LWdl dC1oYW5kbGUgYW5kIGhhc2h4LWNyZWF0ZS1oYW5kbGUhIHdpdGhvdXQKY2hlY2tpbmcgd2hldGhl ciByZWFsLWhhc2gtdGFibGUgd2FzIHdlYWsuIE5vdyB0aGF0IGlzbid0IHRoZSBjYXNlCmFueW1v cmUgKEJ1ZyAzMzgyNykuIEEgYnVnIHdhcyBmaXhlZCBpbiBoYXNoLXRhYmxlLW1lcmdlISBhbmQg YSB0ZXN0IGNhc2UKd2FzIGFkZGVkLiBBIGZldyBvdGhlciBvcHRpbWl6YXRpb25zIHdlcmUgbWFk ZS4KCiogbW9kdWxlL3NyZmkvc3JmaS02OS5zY20gKGFsaXN0LT5oYXNoLXRhYmxlKToKKGhhc2gt dGFibGUtZGVsZXRlISk6CihoYXNoLXRhYmxlLWV4aXN0cz8pOgooaGFzaC10YWJsZS1yZWYpOiBE b24ndCB1c2UgaGFzaHgtZ2V0LWhhbmRsZS4KKGhhc2gtdGFibGUtc2V0ISk6IElmIHdlYWtuZXNz IGlzIHNldCwgZG9uJ3QgdXNlIGhhc2h4LWNyZWF0ZS1oYW5kbGUhCmFuZCBkb24ndCB1cGRhdGUg c2l6ZS4KKGhhc2gtdGFibGUtdXBkYXRlISk6IElmIHdlYWtuZXNzIGlzIHNldCwgZG9uJ3QgdXNl IGhhc2h4LWdldC1oYW5kbGUKYW5kIGRvbid0IHVwZGF0ZSBzaXplLiBPdGhlcndpc2UsIGNoZWNr IHdoZXRoZXIgZGVmYXVsdC10aHVuayBpcyBnaXZlbgphbmQsIGlmIHNvLCB1c2UgaGFzaHgtY3Jl YXRlLWhhbmRsZSEgdG8gYXZvaWQgZG91YmxlIGxvb2t1cC4KKGhhc2gtdGFibGUtdXBkYXRlIS9k ZWZhdWx0KTogQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBkb2Vzbid0IGNhbGwKaGFzaC10 YWJsZS11cGRhdGUhLCBhdm9pZGluZyBhbGxvY2F0aW5nIGEgcHJvY2VkdXJlLgooaGFzaC10YWJs ZS1zaXplKTogU2V0IGh0LXNpemUgZm9yIHdlYWsgaGFzaC10YWJsZXMuCihoYXNoLXRhYmxlLXdh bGspOgooaGFzaC10YWJsZS1jb3B5KTogVXNlIG5hdGl2ZSBoYXNoLWZvci1lYWNoIGluc3RlYWQg b2YgaGFzaC10YWJsZS1mb2xkLgooaGFzaC10YWJsZS0+YWxpc3QpOiBVc2UgbmF0aXZlIGhhc2gt bWFwLT5saXN0IGluc3RlYWQgb2YgaGFzaC10YWJsZS1mb2xkLgooaGFzaC10YWJsZS1tZXJnZSEp OiBVc2UgbmF0aXZlIGhhc2gtZm9yLWVhY2ggaW5zdGVhZCBvZiBoYXNoLXRhYmxlLWZvbGQuCldh bGtzIG92ZXIgb3RoZXItaHQgcmF0aGVyIHRoYW4gd2Fsa2luZyBodCAoYW5kIGRvaW5nIG5vdGhp bmcpLgoqIHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS02OS50ZXN0OiBhbGwgYXBwcm9wcmlhdGUgdGVz dCBhcmUgcmVwbGljYXRlZCBmb3IKYWxsIHBvc3NpYmxlIHdlYWs6IGFyZ3VtZW50cy4gQWRkZWQg YSB0ZXN0IGZvciBoYXNoLXRhYmxlLW1lcmdlIS4KLS0tCiBUSEFOS1MgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBtb2R1bGUvc3JmaS9zcmZpLTY5LnNjbSAgICAgICB8IDE0OSArKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tCiB0ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdCB8 IDE3NyArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQs IDIwNSBpbnNlcnRpb25zKCspLCAxMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvVEhBTktT IGIvVEhBTktTCmluZGV4IDYxNmQzYjA0Yi4uOTA1NmE3OTVjIDEwMDY0NAotLS0gYS9USEFOS1MK KysrIGIvVEhBTktTCkBAIC0yMCw2ICsyMCw3IEBAIENvbnRyaWJ1dG9ycyBzaW5jZSB0aGUgbGFz dCByZWxlYXNlOgogICAgICAgICAgICBOb2FoIExhdmluZQogICAgICAgICAgRGFuaWVsIExsb3Jl bnMKICAgICAgICAgR3JlZ29yeSBNYXJ0b24KKyAgICAgICAgSsOpc3NpY2EgTWlsYXLDqQogICAg ICAgVGhpZW4tVGhpIE5ndXllbgogICAgICAgICBIYW4tV2VuIE5pZW5odXlzCiAgICAgICAgICAg ICBKYW4gTmlldXdlbmh1aXplbgpkaWZmIC0tZ2l0IGEvbW9kdWxlL3NyZmkvc3JmaS02OS5zY20g Yi9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbQppbmRleCBiOTQ4NmM0NjUuLmEwNWVjNjFlYSAxMDA2 NDQKLS0tIGEvbW9kdWxlL3NyZmkvc3JmaS02OS5zY20KKysrIGIvbW9kdWxlL3NyZmkvc3JmaS02 OS5zY20KQEAgLTYyLDYgKzYyLDE0IEBACiA7OyBpbXBsZW1lbnRhdGlvbiwgYm90aCBhbnN3ZXIg KCJ4WSIpLiAgSG93ZXZlciwgSSBkb24ndCBndWFyYW50ZWUgdGhhdAogOzsgdGhpcyB3b24ndCBj aGFuZ2UgaW4gdGhlIGZ1dHVyZS4KIAorCis7Ozs7IENvbW1lbnRhcnkgYnkgSmVzc2ljYSBNaWxh cmUgMjAxOAorCis7OyBNYWtlIGJ1ZyBmaXhlcyBmb3Igd2VhayBoYXNoLXRhYmxlcywgc2luY2Ug aGFuZGxlcyBkb24ndCB3b3JrIGFueW1vcmUsCis7OyBhbmQgYWxzbyBzb21lIG9wdGltaXphdGlv bnMuCis7OworOzsgTXkgcGVyc29uYWwgY29tbWVudHMgYXJlIG1hcmtlZCBieSBKLk0uCisKIDs7 OyBDb2RlOgogDAogOzs7OyBNb2R1bGUgZGVmaW5pdGlvbiAmIGV4cG9ydHMKQEAgLTczLDE4ICs4 MSwxOCBAQAogICAjOnVzZS1tb2R1bGUgKGljZS05IG9wdGFyZ3MpCiAgICM6ZXhwb3J0ICg7OyBU eXBlIGNvbnN0cnVjdG9ycyAmIHByZWRpY2F0ZQogCSAgICBtYWtlLWhhc2gtdGFibGUgaGFzaC10 YWJsZT8gYWxpc3QtPmhhc2gtdGFibGUKLQkgICAgOzsgUmVmbGVjdGl2ZSBxdWVyaWVzCi0JICAg IGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9u Ci0JICAgIDs7IERlYWxpbmcgd2l0aCBzaW5nbGUgZWxlbWVudHMKLQkgICAgaGFzaC10YWJsZS1y ZWYgaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBoYXNoLXRhYmxlLXNldCEKLQkgICAgaGFzaC10YWJs ZS1kZWxldGUhIGhhc2gtdGFibGUtZXhpc3RzPyBoYXNoLXRhYmxlLXVwZGF0ZSEKLQkgICAgaGFz aC10YWJsZS11cGRhdGUhL2RlZmF1bHQKLQkgICAgOzsgRGVhbGluZyB3aXRoIHRoZSB3aG9sZSBj b250ZW50cwotCSAgICBoYXNoLXRhYmxlLXNpemUgaGFzaC10YWJsZS1rZXlzIGhhc2gtdGFibGUt dmFsdWVzCi0JICAgIGhhc2gtdGFibGUtd2FsayBoYXNoLXRhYmxlLWZvbGQgaGFzaC10YWJsZS0+ YWxpc3QKLQkgICAgaGFzaC10YWJsZS1jb3B5IGhhc2gtdGFibGUtbWVyZ2UhCi0JICAgIDs7IEhh c2hpbmcKLQkgICAgc3RyaW5nLWNpLWhhc2ggaGFzaC1ieS1pZGVudGl0eSkKKyAgICAgICAgICAg IDs7IFJlZmxlY3RpdmUgcXVlcmllcworICAgICAgICAgICAgaGFzaC10YWJsZS1lcXVpdmFsZW5j ZS1mdW5jdGlvbiBoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgIDs7IERlYWxp bmcgd2l0aCBzaW5nbGUgZWxlbWVudHMKKyAgICAgICAgICAgIGhhc2gtdGFibGUtcmVmIGhhc2gt dGFibGUtcmVmL2RlZmF1bHQgaGFzaC10YWJsZS1zZXQhCisgICAgICAgICAgICBoYXNoLXRhYmxl LWRlbGV0ZSEgaGFzaC10YWJsZS1leGlzdHM/IGhhc2gtdGFibGUtdXBkYXRlIQorICAgICAgICAg ICAgaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1bHQKKyAgICAgICAgICAgIDs7IERlYWxpbmcgd2l0 aCB0aGUgd2hvbGUgY29udGVudHMKKyAgICAgICAgICAgIGhhc2gtdGFibGUtc2l6ZSBoYXNoLXRh YmxlLWtleXMgaGFzaC10YWJsZS12YWx1ZXMKKyAgICAgICAgICAgIGhhc2gtdGFibGUtd2FsayBo YXNoLXRhYmxlLWZvbGQgaGFzaC10YWJsZS0+YWxpc3QKKyAgICAgICAgICAgIGhhc2gtdGFibGUt Y29weSBoYXNoLXRhYmxlLW1lcmdlIQorICAgICAgICAgICAgOzsgSGFzaGluZworICAgICAgICAg ICAgc3RyaW5nLWNpLWhhc2ggaGFzaC1ieS1pZGVudGl0eSkKICAgIzpyZS1leHBvcnQgKHN0cmlu Zy1oYXNoKQogICAjOnJlcGxhY2UgKGhhc2ggbWFrZS1oYXNoLXRhYmxlIGhhc2gtdGFibGU/KSkK IApAQCAtMjA0LDMwICsyMTIsMzIgQEAgbWFudWFsIGZvciBzcGVjaWZpY3MsIG9mIHdoaWNoIHRo ZXJlIGFyZSBtYW55LiIKIAkgKHNpemUgKGh0LXNpemUgcmVzdWx0KSkpCiAgICAgKHdpdGgtaGFz aHgtdmFsdWVzIChoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRhYmxlKSByZXN1bHQKICAgICAg IChmb3ItZWFjaCAobGFtYmRhIChwYWlyKQotCQkgIChsZXQgKChoYW5kbGUgKGhhc2h4LWdldC1o YW5kbGUgaGFzaC1wcm9jIGFzc29jaWF0b3IKLQkJCQkJCSAgcmVhbC10YWJsZSAoY2FyIHBhaXIp KSkpCi0JCSAgICAoY29uZCAoKG5vdCBoYW5kbGUpCi0JCQkgICAoc2V0ISBzaXplICgxKyBzaXpl KSkKLQkJCSAgIChoYXNoeC1zZXQhIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUKLQkJ CQkgICAgICAgKGNhciBwYWlyKSAoY2RyIHBhaXIpKSkpKSkKLQkJYWxpc3QpKQorICAgICAgICAg ICAgICAgICAgKGxldCAoKHZhbHVlIChoYXNoeC1yZWYgaGFzaC1wcm9jIGFzc29jaWF0b3IKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWwtdGFibGUgKGNhciBw YWlyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHQtdW5zcGVj aWZpZWQpKSkKKyAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChlcT8gaHQtdW5zcGVjaWZpZWQg dmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ISBzaXplICgxKyBzaXplKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQhIGhhc2gtcHJvYyBhc3NvY2lh dG9yIHJlYWwtdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj YXIgcGFpcikgKGNkciBwYWlyKSkpKSkpCisgICAgICAgICAgICAgICAgYWxpc3QpKQogICAgICho dC1zaXplISByZXN1bHQgc2l6ZSkKICAgICByZXN1bHQpKQogDAogOzs7OyBBY2Nlc3NpbmcgdGFi bGUgaXRlbXMKIAogOzsgV2UgdXNlIHRoaXMgdG8gZGVub3RlIG1pc3Npbmcgb3IgdW5zcGVjaWZp ZWQgdmFsdWVzIHRvIGF2b2lkCisKIDs7IHBvc3NpYmxlIGNvbGxpc2lvbiB3aXRoICp1bnNwZWNp ZmllZCouCiAoZGVmaW5lIGh0LXVuc3BlY2lmaWVkIChjb25zICp1bnNwZWNpZmllZCogImh0LXZh bHVlIikpCiAKLShkZWZpbmUgKGhhc2gtdGFibGUtcmVmIGh0IGtleSAuIGRlZmF1bHQtdGh1bmst bHN0KQorKGRlZmluZSogKGhhc2gtdGFibGUtcmVmIGh0IGtleSAgIzpvcHRpb25hbCAoZGVmYXVs dC10aHVuayBodC11bnNwZWNpZmllZCkpCiAgICJMb29rdXAgS0VZIGluIEhUIGFuZCBhbnN3ZXIg dGhlIHZhbHVlLCBpbnZva2UgREVGQVVMVC1USFVOSyBpZiBLRVkKIGlzbid0IHByZXNlbnQsIG9y IHNpZ25hbCBhbiBlcnJvciBpZiBERUZBVUxULVRIVU5LIGlzbid0IHByb3ZpZGVkLiIKICAgKGxl dCAoKHJlc3VsdCAoaGFzaHgtaW52b2tlIGhhc2h4LXJlZiBodCBrZXkgaHQtdW5zcGVjaWZpZWQp KSkKICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCByZXN1bHQpCi0JKGlmIChwYWlyPyBkZWZh dWx0LXRodW5rLWxzdCkKLQkgICAgKChmaXJzdCBkZWZhdWx0LXRodW5rLWxzdCkpCi0JICAgIChl cnJvciAiS2V5IG5vdCBpbiB0YWJsZSIga2V5IGh0KSkKKwkoaWYgKGVxPyBodC11bnNwZWNpZmll ZCBkZWZhdWx0LXRodW5rKQorCSAgICAoZXJyb3IgIktleSBub3QgaW4gdGFibGUiIGtleSBodCkK KwkgICAgKGRlZmF1bHQtdGh1bmspKQogCXJlc3VsdCkpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxl LXJlZi9kZWZhdWx0IGh0IGtleSBkZWZhdWx0KQpAQCAtMjM3LDQ5ICsyNDcsNzkgQEAgcHJlc2Vu dC4iCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtc2V0ISBodCBrZXkgbmV3LXZhbHVlKQogICAiU2V0 IEtFWSB0byBORVctVkFMVUUgaW4gSFQuIgotICAobGV0ICgoaGFuZGxlIChoYXNoeC1pbnZva2Ug aGFzaHgtY3JlYXRlLWhhbmRsZSEgaHQga2V5IGh0LXVuc3BlY2lmaWVkKSkpCi0gICAgKGlmIChl cT8gaHQtdW5zcGVjaWZpZWQgKGNkciBoYW5kbGUpKQotCShodC1zaXplISBodCAoMSsgKGh0LXNp emUgaHQpKSkpCi0gICAgKHNldC1jZHIhIGhhbmRsZSBuZXctdmFsdWUpKQorICAoaWYgKGh0LXdl YWtuZXNzIGh0KQorICAgICAgOzsgSi5NLiBzZXBhcmF0ZSB0aGUgY2FzZSB3aGVyZSBodCBpcyB3 ZWFrIC0gZG9uJ3QgdXNlIGhhbmRsZQorICAgICAgOzsgSi5NLiBkb24ndCBuZWVkIHRvIHVwZGF0 ZSBzaXplIGZvciB3ZWFrIGhhc2gtdGFibGVzCisgICAgICAoaGFzaHgtaW52b2tlIGhhc2h4LXNl dCEgaHQga2V5IG5ldy12YWx1ZSkKKyAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWludm9rZSBo YXNoeC1jcmVhdGUtaGFuZGxlISBodCBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBodC11bnNwZWNpZmllZCkpKQorICAgICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAo Y2RyIGhhbmRsZSkpCisgICAgICAgICAgICAoaHQtc2l6ZSEgaHQgKDErIChodC1zaXplIGh0KSkp KQorICAgICAgICAoc2V0LWNkciEgaGFuZGxlIG5ldy12YWx1ZSkpKQogICAqdW5zcGVjaWZpZWQq KQogCiAoZGVmaW5lIChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQga2V5KQogICAiUmVtb3ZlIEtFWSdz IGFzc29jaWF0aW9uIGluIEhULiIKICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC1odCkg aHQKLSAgICAoaWYgKGhhc2h4LWdldC1oYW5kbGUgaCBhIHJlYWwtaHQga2V5KQotCShiZWdpbgot CSAgKGh0LXNpemUhIGh0ICgxLSAoaHQtc2l6ZSBodCkpKQotCSAgKGhhc2h4LXJlbW92ZSEgaCBh IHJlYWwtaHQga2V5KSkpKQorICAgIChpZiAobm90IChlcT8gaHQtdW5zcGVjaWZpZWQgKGhhc2h4 LXJlZiBoIGEgcmVhbC1odCBrZXkgaHQtdW5zcGVjaWZpZWQpKSkKKyAgICAgICAgKGJlZ2luCisg ICAgICAgICAgKGh0LXNpemUhIGh0ICgxLSAoaHQtc2l6ZSBodCkpKQorICAgICAgICAgIChoYXNo eC1yZW1vdmUhIGggYSByZWFsLWh0IGtleSkpKSkKICAgKnVuc3BlY2lmaWVkKikKIAogKGRlZmlu ZSAoaGFzaC10YWJsZS1leGlzdHM/IGh0IGtleSkKICAgIlJldHVybiB3aGV0aGVyIEtFWSBpcyBh IGtleSBpbiBIVC4iCi0gIChhbmQgKGhhc2h4LWludm9rZSBoYXNoeC1nZXQtaGFuZGxlIGh0IGtl eSkgI3QpKQorICAobm90IChlcT8gaHQtdW5zcGVjaWZpZWQgKGhhc2h4LWludm9rZSBoYXNoeC1y ZWYgaHQga2V5IGh0LXVuc3BlY2lmaWVkKSkpKQogCi07OzsgYGhhc2h4LXNldCEnIGR1cGxpY2F0 ZXMgdGhlIGhhc2ggbG9va3VwLCBidXQgd2UgdXNlIGl0IGFueXdheSB0bwotOzs7IGF2b2lkIGNy ZWF0aW5nIGEgaGFuZGxlIGluIGNhc2UgREVGQVVMVC1USFVOSyBleGl0cwogOzs7IGBoYXNoLXRh YmxlLXVwZGF0ZSEnIG5vbi1sb2NhbGx5LgotKGRlZmluZSAoaGFzaC10YWJsZS11cGRhdGUhIGh0 IGtleSBtb2RpZmllciAuIGRlZmF1bHQtdGh1bmstbHN0KQorKGRlZmluZSogKGhhc2gtdGFibGUt dXBkYXRlISBodCBrZXkgbW9kaWZpZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpv cHRpb25hbCAoZGVmYXVsdC10aHVuayBodC11bnNwZWNpZmllZCkpCiAgICJNb2RpZnkgSFQncyB2 YWx1ZSBhdCBLRVkgYnkgcGFzc2luZyBpdHMgdmFsdWUgdG8gTU9ESUZJRVIgYW5kCiBzZXR0aW5n IGl0IHRvIHRoZSByZXN1bHQgdGhlcmVvZi4gIEludm9rZSBERUZBVUxULVRIVU5LIGZvciB0aGUg b2xkCiB2YWx1ZSBpZiBLRVkgaXNuJ3QgaW4gSFQsIG9yIHNpZ25hbCBhbiBlcnJvciBpZiBERUZB VUxULVRIVU5LIGlzIG5vdAogcHJvdmlkZWQuIgogICAod2l0aC1oYXNoeC12YWx1ZXMgKGhhc2gt cHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUpIGh0Ci0gICAgKGxldCAoKGhhbmRsZSAoaGFzaHgt Z2V0LWhhbmRsZSBoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRhYmxlIGtleSkpKQotICAgICAg KGNvbmQgKGhhbmRsZQotCSAgICAgKHNldC1jZHIhIGhhbmRsZSAobW9kaWZpZXIgKGNkciBoYW5k bGUpKSkpCi0JICAgIChlbHNlCi0JICAgICAoaGFzaHgtc2V0ISBoYXNoLXByb2MgYXNzb2NpYXRv ciByZWFsLXRhYmxlIGtleQotCQkJIChpZiAocGFpcj8gZGVmYXVsdC10aHVuay1sc3QpCi0JCQkg ICAgIChtb2RpZmllciAoKGNhciBkZWZhdWx0LXRodW5rLWxzdCkpKQotCQkJICAgICAoZXJyb3Ig IktleSBub3QgaW4gdGFibGUiIGtleSBodCkpKQotCSAgICAgKGh0LXNpemUhIGh0ICgxKyAoaHQt c2l6ZSBodCkpKSkpKSkKKyAgICAoaWYgKGh0LXdlYWtuZXNzIGh0KQorICAgICAgICA7OyBKLk0u IHNlcGFyYXRlIHRoZSBjYXNlIHdoZXJlIGh0IGlzIHdlYWsgLSBkb24ndCB1c2UgaGFuZGxlCisg ICAgICAgIChsZXQqICgob2xkIChoYXNoeC1yZWYgaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVhbC10 YWJsZSBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodC11bnNwZWNpZmllZCkp KQorICAgICAgICAgIChjb25kICgoZXE/IGh0LXVuc3BlY2lmaWVkIG9sZCkKKyAgICAgICAgICAg ICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgZGVmYXVsdC10aHVuaykKKyAgICAgICAgICAg ICAgICAgICAgIChlcnJvciAiS2V5IG5vdCBpbiB0YWJsZSIga2V5IGh0KQorICAgICAgICAgICAg ICAgICAgICAgKGhhc2h4LXNldCEgaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVhbC10YWJsZSBrZXkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RpZmllciAoZGVmYXVsdC10aHVu aykpKSkpCisgICAgICAgICAgICAgICAgKGVsc2UKKyAgICAgICAgICAgICAgICAgKGhhc2h4LXNl dCEgaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVhbC10YWJsZSBrZXkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1vZGlmaWVyIG9sZCkpKSkpCisgICAgICAgIChsZXQgKChoYW5kbGUKKyAg ICAgICAgICAgICAgIChpZiAoZXE/IGh0LXVuc3BlY2lmaWVkIGRlZmF1bHQtdGh1bmspCisgICAg ICAgICAgICAgICAgICAgKGhhc2h4LWdldC1oYW5kbGUgaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVh bC10YWJsZSBrZXkpCisgICAgICAgICAgICAgICAgICAgKGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGhh c2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUga2V5CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGh0LXVuc3BlY2lmaWVkKSkpKQorICAgICAgICAgIChjb25kICho YW5kbGUKKyAgICAgICAgICAgICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgKGNkciBoYW5k bGUpKQorICAgICAgICAgICAgICAgICAgICAgKGJlZ2luIChodC1zaXplISBodCAoMSsgKGh0LXNp emUgaHQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlICht b2RpZmllciAoZGVmYXVsdC10aHVuaykpKSkKKyAgICAgICAgICAgICAgICAgICAgIChzZXQtY2Ry ISBoYW5kbGUgKG1vZGlmaWVyIChjZHIgaGFuZGxlKSkpKSkKKyAgICAgICAgICAgICAgICAoZWxz ZQorICAgICAgICAgICAgICAgICAoZXJyb3IgIktleSBub3QgaW4gdGFibGUiIGtleSBodCkpKSkp KQogICAqdW5zcGVjaWZpZWQqKQogCis7OzsgSi5NLiBDdXN0b20gaW1wbGVtZW50YXRpb24gaW5z dGVhZCBvZiB1c2luZyBoYXNoLXRhYmxlLXVwZGF0ZSEKIChkZWZpbmUgKGhhc2gtdGFibGUtdXBk YXRlIS9kZWZhdWx0IGh0IGtleSBtb2RpZmllciBkZWZhdWx0KQogICAiTW9kaWZ5IEhUJ3MgdmFs dWUgYXQgS0VZIGJ5IHBhc3NpbmcgaXRzIG9sZCB2YWx1ZSwgb3IgREVGQVVMVCBpZiBpdAogZG9l c24ndCBoYXZlIG9uZSwgdG8gTU9ESUZJRVIsIGFuZCBzZXR0aW5nIGl0IHRvIHRoZSByZXN1bHQg dGhlcmVvZi4iCi0gIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQga2V5IG1vZGlmaWVyIChsYW1iZGEg KCkgZGVmYXVsdCkpKQorICAod2l0aC1oYXNoeC12YWx1ZXMgKGhhc2gtcHJvYyBhc3NvY2lhdG9y IHJlYWwtdGFibGUpIGh0CisgICAgKGlmIChodC13ZWFrbmVzcyBodCkKKyAgICAgICAgOzsgSi5N LiBzZXBhcmF0ZSB0aGUgY2FzZSB3aGVyZSBodCBpcyB3ZWFrIC0gZG9uJ3QgdXNlIGhhbmRsZQor ICAgICAgICAobGV0KiAoKG9sZCAoaGFzaHgtcmVmIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwt dGFibGUga2V5IGRlZmF1bHQpKSkKKyAgICAgICAgICAoaGFzaHgtc2V0ISBoYXNoLXByb2MgYXNz b2NpYXRvciByZWFsLXRhYmxlIGtleSAobW9kaWZpZXIgb2xkKSkpCisgICAgICAgIChsZXQgKCho YW5kbGUgKGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFi bGUga2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LXVu c3BlY2lmaWVkKSkpCisgICAgICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgKGNkciBoYW5k bGUpKQorICAgICAgICAgICAgICAoYmVnaW4gKGh0LXNpemUhIGh0ICgxKyAoaHQtc2l6ZSBodCkp KQorICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAobW9kaWZpZXIgZGVmYXVs dCkpKQorICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlIChtb2RpZmllciAoY2RyIGhhbmRs ZSkpKSkpKSkpCiAMCiA7Ozs7IEFjY2Vzc2luZyB3aG9sZSB0YWJsZXMKIApAQCAtMjg3LDcgKzMy Nyw5IEBAIGRvZXNuJ3QgaGF2ZSBvbmUsIHRvIE1PRElGSUVSLCBhbmQgc2V0dGluZyBpdCB0byB0 aGUgcmVzdWx0IHRoZXJlb2YuIgogICAiUmV0dXJuIHRoZSBudW1iZXIgb2YgYXNzb2NpYXRpb25z IGluIEhULiAgVGhpcyBpcyBndWFyYW50ZWVkIE8oMSkKIGZvciB0YWJsZXMgd2hlcmUgIzp3ZWFr IHdhcyAjZiBvciBub3Qgc3BlY2lmaWVkIGF0IGNyZWF0aW9uIHRpbWUuIgogICAoaWYgKGh0LXdl YWtuZXNzIGh0KQotICAgICAgKGhhc2gtdGFibGUtZm9sZCBodCAobGFtYmRhIChrIHYgYW5zKSAo MSsgYW5zKSkgMCkKKyAgICAgIChsZXQgKChzaXplIChoYXNoLXRhYmxlLWZvbGQgaHQgKGxhbWJk YSAoayB2IGFucykgKDErIGFucykpIDApKSkKKyAgICAgICAgKGh0LXNpemUhIGh0IHNpemUpCisg ICAgICAgIHNpemUpCiAgICAgICAoaHQtc2l6ZSBodCkpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxl LWtleXMgaHQpCkBAIC0zMDAsMTAgKzM0Miw3IEBAIGZvciB0YWJsZXMgd2hlcmUgIzp3ZWFrIHdh cyAjZiBvciBub3Qgc3BlY2lmaWVkIGF0IGNyZWF0aW9uIHRpbWUuIgogCiAoZGVmaW5lIChoYXNo LXRhYmxlLXdhbGsgaHQgcHJvYykKICAgIkNhbGwgUFJPQyB3aXRoIGVhY2gga2V5IGFuZCB2YWx1 ZSBhcyB0d28gYXJndW1lbnRzLiIKLSAgKGhhc2gtdGFibGUtZm9sZCBodCAobGFtYmRhIChrIHYg dW5zcGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0aC12YWx1ZXMgKGxhbWJk YSAoKSAocHJvYyBrIHYpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIHZhbHMg dW5zcGVjKSkpCi0JCSAgICp1bnNwZWNpZmllZCopKQorICAoaGFzaC1mb3ItZWFjaCBwcm9jICho dC1yZWFsLXRhYmxlIGh0KSkpCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtZm9sZCBodCBmIGtuaWwp CiAgICJJbnZva2UgKEYgS0VZIFZBTCBQUkVWKSBmb3IgZWFjaCBLRVkgYW5kIFZBTCBpbiBIVCwg d2hlcmUgUFJFViBpcwpAQCAtMzEzLDE1ICszNTIsMTUgQEAgQW5zd2VyIHRoZSBmaW5hbCBGIHJl c3VsdC4iCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtPmFsaXN0IGh0KQogICAiUmV0dXJuIGFuIGFs aXN0IGZvciBIVC4iCi0gIChoYXNoLXRhYmxlLWZvbGQgaHQgYWxpc3QtY29ucyAnKCkpKQorICAo aGFzaC1tYXAtPmxpc3QgY29ucyAoaHQtcmVhbC10YWJsZSBodCkpKQogCiAoZGVmaW5lIChoYXNo LXRhYmxlLWNvcHkgaHQpCiAgICJBbnN3ZXIgYSBjb3B5IG9mIEhULiIKICAgKHdpdGgtaGFzaHgt dmFsdWVzIChoIGEgcmVhbC1odCkgaHQKICAgICAobGV0KiAoKHNpemUgKGhhc2gtdGFibGUtc2l6 ZSBodCkpICh3ZWFrIChodC13ZWFrbmVzcyBodCkpCiAJICAgKG5ldy1yZWFsLWh0ICgoZ3VpbGUt aHQtY3RvciB3ZWFrKSBzaXplKSkpCi0gICAgICAoaGFzaC1mb2xkIChsYW1iZGEgKGsgdiBpZ24p IChoYXNoeC1zZXQhIGggYSBuZXctcmVhbC1odCBrIHYpKQotCQkgI2YgcmVhbC1odCkKKyAgICAg IChoYXNoLWZvci1lYWNoIChsYW1iZGEgKGsgdikgKGhhc2h4LXNldCEgaCBhIG5ldy1yZWFsLWh0 IGsgdikpCisgICAgICAgICAgICAgICAgICAgICByZWFsLWh0KQogICAgICAgKG1ha2Utc3JmaS02 OS1oYXNoLXRhYmxlCQk7cmVhbCxhc3NvYyxzaXplLHdlYWssZXF1aXYsaAogICAgICAgIG5ldy1y ZWFsLWh0IGEgc2l6ZSB3ZWFrCiAgICAgICAgKGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rp b24gaHQpIGgpKSkpCkBAIC0zMjksOCArMzY4LDggQEAgQW5zd2VyIHRoZSBmaW5hbCBGIHJlc3Vs dC4iCiAoZGVmaW5lIChoYXNoLXRhYmxlLW1lcmdlISBodCBvdGhlci1odCkKICAgIkFkZCBhbGwg a2V5L3ZhbHVlIHBhaXJzIGZyb20gT1RIRVItSFQgdG8gSFQsIG92ZXJyaWRpbmcgSFQncwogbWFw cGluZ3Mgd2hlcmUgcHJlc2VudC4gIFJldHVybiBIVC4iCi0gIChoYXNoLXRhYmxlLWZvbGQKLSAg IGh0IChsYW1iZGEgKGsgdiBpZ24pIChoYXNoLXRhYmxlLXNldCEgaHQgayB2KSkgI2YpCisgICho YXNoLWZvci1lYWNoIChsYW1iZGEgKGsgdikgKGhhc2gtdGFibGUtc2V0ISBodCBrIHYpKQorICAg ICAgICAgICAgICAgICAoaHQtcmVhbC10YWJsZSBvdGhlci1odCkpCiAgIGh0KQogCiA7Ozsgc3Jm aS02OS5zY20gZW5kcyBoZXJlCmRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjku dGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS02OS50ZXN0CmluZGV4IGU5OWI3NmM2ZC4uMTA1 YWUzNzU5IDEwMDY0NAotLS0gYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdAorKysgYi90 ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdApAQCAtMjgsODAgKzI4LDEyMyBAQCBjYXNlLWlu c2Vuc2l0aXZlIHN0cmluZ3MgdG8gYGVxdWFsPyctdGVzdGVkIHZhbHVlcy4iCiAgIChhbmQgKHN0 cmluZy1jaT0/IChjYXIgbGVmdCkgKGNhciByaWdodCkpCiAgICAgICAgKGVxdWFsPyAoY2RyIGxl ZnQpIChjZHIgcmlnaHQpKSkpCiAKKyhkZWZpbmUtc3ludGF4IHdpdGgtd2Vha25lc3MtbGlzdAor ICAoc3ludGF4LXJ1bGVzICgpCisgICAgKCh3aXRoLXdlYWtuZXNzLWxpc3Qgd2Vha25lc3Mgd2Vh a25lc3MtbGlzdCBleHByIC4uLikKKyAgICAgKGxldCBsb29wICgod2Vha25lc3MtbGlzdCogd2Vh a25lc3MtbGlzdCkpCisgICAgICAgKG9yIChudWxsPyB3ZWFrbmVzcy1saXN0KikKKyAgICAgICAg ICAgKGFuZCAobGV0ICgod2Vha25lc3MgKGNhciB3ZWFrbmVzcy1saXN0KikpKQorICAgICAgICAg ICAgICAgICAgZXhwciAuLi4pCisgICAgICAgICAgICAgICAgKGxvb3AgKGNkciB3ZWFrbmVzcy1s aXN0KikpKSkpKSkpCisKKyhkZWZpbmUgKHRlc3Qtc3RyLXdlYWtuZXNzIHN0ciB3ZWFrbmVzcykK KyAgKGlmIChub3Qgd2Vha25lc3MpIHN0ciAoZm9ybWF0ICNmICJ+YSAod2VhazogfmEpIiBzdHIg d2Vha25lc3MpKSkKKwogKHdpdGgtdGVzdC1wcmVmaXggIlNSRkktNjkiCiAKLSAgKHBhc3MtaWYg InNtYWxsIGFsaXN0PC0+aGFzaCB0YWJsZXMgcm91bmQtdHJpcCIKLSAgICAobGV0KiAoKHN0YXJ0 LWFsaXN0ICcoKGEgLiAxKSAoYiAuIDIpIChjIC4gMykgKGEgLiA0MikpKQotCSAgIChodCAoYWxp c3QtPmhhc2gtdGFibGUgc3RhcnQtYWxpc3QgZXE/KSkKLQkgICAoZW5kLWFsaXN0IChoYXNoLXRh YmxlLT5hbGlzdCBodCkpKQotICAgICAgKGFuZCAoPSAzIChoYXNoLXRhYmxlLXNpemUgaHQpKQot CSAgIChsc2V0PSBlcXVhbD8gZW5kLWFsaXN0ICh0YWtlIHN0YXJ0LWFsaXN0IDMpKQotCSAgICg9 IDEgKGhhc2gtdGFibGUtcmVmIGh0ICdhKSkKLQkgICAoPSAyIChoYXNoLXRhYmxlLXJlZiBodCAn YikpCi0JICAgKD0gMyAoaGFzaC10YWJsZS1yZWYgaHQgJ2MpKSkpKQotCi0gIChwYXNzLWlmICJz dHJpbmctY2k9PyB0YWJsZXMgd29yayBieSBkZWZhdWx0IgotICAgIChsZXQgKChodCAoYWxpc3Qt Pmhhc2gtdGFibGUgJygoInhZIiAuIDIpICgiYWJjIiAuIDU0KSkgc3RyaW5nLWNpPT8pKSkKLSAg ICAgIChoYXNoLXRhYmxlLXNldCEgaHQgIlhZIiA0MikKLSAgICAgIChoYXNoLXRhYmxlLXNldCEg aHQgInFxcSIgMTAwKQotICAgICAgKGFuZCAoPSA1NCAoaGFzaC10YWJsZS1yZWYgaHQgIkFCYyIp KQotCSAgICg9IDQyIChoYXNoLXRhYmxlLXJlZiBodCAieHkiKSkKLQkgICAoPSAzIChoYXNoLXRh YmxlLXNpemUgaHQpKQotCSAgIChsc2V0PSBzdHJpbmctY2ktYXNzb2MtZXF1YWw/Ci0JCSAgJygo Inh5IiAuIDQyKSAoImFiYyIgLiA1NCkgKCJxcXEiIC4gMTAwKSkKLQkJICAoaGFzaC10YWJsZS0+ YWxpc3QgaHQpKSkpKQorICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChsaXN0ICNmICdr ZXkgJ3ZhbHVlICdrZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNz ICJzbWFsbCBhbGlzdDwtPmhhc2ggdGFibGVzIHJvdW5kLXRyaXAiIHdlYWtuZXNzKQorICAgICAg KGxldCogKChzdGFydC1hbGlzdCAnKChhIC4gMSkgKGIgLiAyKSAoYyAuIDMpIChhIC4gNDIpKSkK KyAgICAgICAgICAgICAoaHQgKGFsaXN0LT5oYXNoLXRhYmxlIHN0YXJ0LWFsaXN0IGVxPykpCisg ICAgICAgICAgICAgKGVuZC1hbGlzdCAoaGFzaC10YWJsZS0+YWxpc3QgaHQpKSkKKyAgICAgICAg KGFuZCAoPSAzIChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgIChsc2V0PSBlcXVh bD8gZW5kLWFsaXN0ICh0YWtlIHN0YXJ0LWFsaXN0IDMpKQorICAgICAgICAgICAgICg9IDEgKGhh c2gtdGFibGUtcmVmIGh0ICdhKSkKKyAgICAgICAgICAgICAoPSAyIChoYXNoLXRhYmxlLXJlZiBo dCAnYikpCisgICAgICAgICAgICAgKD0gMyAoaGFzaC10YWJsZS1yZWYgaHQgJ2MpKSkpKSkKKwor ICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChsaXN0ICNmICdrZXkgJ3ZhbHVlICdrZXkt b3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJzdHJpbmctY2k9PyB0 YWJsZXMgd29yayBieSBkZWZhdWx0IiB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAoYWxpc3Qt Pmhhc2gtdGFibGUgJygoInhZIiAuIDIpICgiYWJjIiAuIDU0KSkgc3RyaW5nLWNpPT8KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrIHdlYWtuZXNzKSkpCisgICAgICAg IChoYXNoLXRhYmxlLXNldCEgaHQgIlhZIiA0MikKKyAgICAgICAgKGhhc2gtdGFibGUtc2V0ISBo dCAicXFxIiAxMDApCisgICAgICAgIChhbmQgKD0gNTQgKGhhc2gtdGFibGUtcmVmIGh0ICJBQmMi KSkKKyAgICAgICAgICAgICAoPSA0MiAoaGFzaC10YWJsZS1yZWYgaHQgInh5IikpCisgICAgICAg ICAgICAgKD0gMyAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgICAgICAobHNldD0gc3Ry aW5nLWNpLWFzc29jLWVxdWFsPworICAgICAgICAgICAgICAgICAgICAnKCgieHkiIC4gNDIpICgi YWJjIiAuIDU0KSAoInFxcSIgLiAxMDApKQorICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJs ZS0+YWxpc3QgaHQpKSkpKSkKIAogICAocGFzcy1pZi1leGNlcHRpb24gIkJhZCB3ZWFrbmVzcyBh cmcgdG8gbWh0IHNpZ25hbHMgYW4gZXJyb3IiCi0JCSAgICAgJyhtaXNjLWVycm9yIC4gIl5JbnZh bGlkIHdlYWsgaGFzaCB0YWJsZSB0eXBlIikKKyAgICAgICAgICAgICAgICAgICAgICcobWlzYy1l cnJvciAuICJeSW52YWxpZCB3ZWFrIGhhc2ggdGFibGUgdHlwZSIpCiAgICAgKG1ha2UtaGFzaC10 YWJsZSBlcXVhbD8gaGFzaCAjOndlYWsgJ2tleS1hbmQtdmFsdWUpKQogCi0gIChwYXNzLWlmICJl bXB0eSBoYXNoIHRhYmxlcyBhcmUgZW1wdHkiCi0gICAgKG51bGw/IChoYXNoLXRhYmxlLT5hbGlz dCAobWFrZS1oYXNoLXRhYmxlIGVxPykpKSkKLQotICAocGFzcy1pZiAiaGFzaC10YWJsZS1yZWYg dXNlcyBkZWZhdWx0IgotICAgIChlcXVhbD8gJyg0KQotCSAgICAoaGFzaC10YWJsZS1yZWYgKGFs aXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSkgZXE/KQotCQkJICAgICdiIChjdXQgbGlzdCAoKyAy IDIpKSkpKQotCi0gIChwYXNzLWlmICJoYXNoLXRhYmxlLWRlbGV0ZSEgZGVsZXRlcyBwcmVzZW50 IGFzc29jcywgaWdub3JlcyBvdGhlcnMiCi0gICAgKGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJs ZSAnKChhIC4gMSkgKGIgLiAyKSkgZXE/KSkpCi0gICAgICAoaGFzaC10YWJsZS1kZWxldGUhIGh0 ICdjKQotICAgICAgKGFuZCAoPSAyIChoYXNoLXRhYmxlLXNpemUgaHQpKQotCSAgIChiZWdpbgot CSAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodCAnYSkKLQkgICAgICg9IDEgKGhhc2gtdGFibGUt c2l6ZSBodCkpKQotCSAgIChsc2V0PSBlcXVhbD8gJygoYiAuIDIpKSAoaGFzaC10YWJsZS0+YWxp c3QgaHQpKSkpKQotCi0gIChwYXNzLWlmICJhbGlzdC0+aGFzaC10YWJsZSBkb2VzIG5vdCByZXF1 aXJlIGxpbmVhciBzdGFjayBzcGFjZSIKLSAgICAoZXF2PyA5OTk5OQotCSAgKGhhc2gtdGFibGUt cmVmIChhbGlzdC0+aGFzaC10YWJsZQotCQkJICAgKHVuZm9sZC1yaWdodCAoY3V0ID49IDw+IDEw MDAwMCkKLQkJCQkJIChsYW1iZGEgKHMpIGAoeCAuICxzKSkgMSsgMCkKLQkJCSAgIGVxPykKLQkJ CSAgJ3gpKSkKLQotICAocGFzcy1pZiAiaGFzaC10YWJsZS13YWxrIGlnbm9yZXMgcmV0dXJuIHZh bHVlcyIKLSAgICAobGV0ICgoaHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAoYiAuIDIp IChjIC4gMykpIGVxPykpKQotICAgICAgKGZvci1lYWNoIChjdXQgaGFzaC10YWJsZS13YWxrIGh0 IDw+KQotCQkobGlzdCAobGFtYmRhIChrIHYpICh2YWx1ZXMpKQotCQkgICAgICAobGFtYmRhIChr IHYpICh2YWx1ZXMgMSAyIDMpKSkpCi0gICAgICAjdCkpCi0KLSAgKHBhc3MtaWYgImhhc2gtdGFi bGUtdXBkYXRlISBtb2RpZmllcyBleGlzdGluZyBiaW5kaW5nIgotICAgIChsZXQgKChodCAoYWxp c3QtPmhhc2gtdGFibGUgJygoYSAuIDEpKSBlcT8pKSkKLSAgICAgIChoYXNoLXRhYmxlLXVwZGF0 ZSEgaHQgJ2EgMSspCi0gICAgICAoaGFzaC10YWJsZS11cGRhdGUhIGh0ICdhIChjdXQgKyA0IDw+ KSAobGFtYmRhICgpIDQyKSkKLSAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0KSkK LQkgICAobHNldD0gZXF1YWw/ICcoKGEgLiA2KSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkK LQotICAocGFzcy1pZiAiaGFzaC10YWJsZS11cGRhdGUhIGNyZWF0ZXMgbmV3IGJpbmRpbmcgd2hl biBhcHByb3ByaWF0ZSIKLSAgICAobGV0ICgoaHQgKG1ha2UtaGFzaC10YWJsZSBlcT8pKSkKLSAg ICAgIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQgJ2IgMSsgKGxhbWJkYSAoKSA0MikpCi0gICAgICAo aGFzaC10YWJsZS11cGRhdGUhIGh0ICdiIChjdXQgKyAxMCA8PikpCi0gICAgICAoYW5kICg9IDEg KGhhc2gtdGFibGUtc2l6ZSBodCkpCi0JICAgKGxzZXQ9IGVxdWFsPyAnKChiIC4gNTMpKSAoaGFz aC10YWJsZS0+YWxpc3QgaHQpKSkpKQorICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChs aXN0ICNmICdrZXkgJ3ZhbHVlICdrZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3Ry LXdlYWtuZXNzICJlbXB0eSBoYXNoIHRhYmxlcyBhcmUgZW1wdHkiIHdlYWtuZXNzKQorICAgICAg KGxldCBsb29wICgod2Vha25lc3MtbGlzdCAobGlzdCAjZiAna2V5ICd2YWx1ZSAna2V5LW9yLXZh bHVlKSkpCisgICAgICAgIChvciAobnVsbD8gd2Vha25lc3MtbGlzdCkKKyAgICAgICAgICAgIChs ZXQgKCh3ZWFrbmVzcyAoY2FyIHdlYWtuZXNzLWxpc3QpKSkKKyAgICAgICAgICAgICAgKGFuZCAo bnVsbD8gKGhhc2gtdGFibGUtPmFsaXN0IChtYWtlLWhhc2gtdGFibGUgZXE/ICM6d2VhayB3ZWFr bmVzcykpKQorICAgICAgICAgICAgICAgICAgIChsb29wIChjZHIgd2Vha25lc3MtbGlzdCkpKSkp KSkpCisKKyAgKHdpdGgtd2Vha25lc3MtbGlzdCB3ZWFrbmVzcyAobGlzdCAjZiAna2V5ICd2YWx1 ZSAna2V5LW9yLXZhbHVlKQorICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10 YWJsZS1yZWYgdXNlcyBkZWZhdWx0IiB3ZWFrbmVzcykKKyAgICAgIChlcXVhbD8gJyg0KQorICAg ICAgICAgICAgICAoaGFzaC10YWJsZS1yZWYgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSkg ZXE/ICM6d2VhayB3ZWFrbmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiIChj dXQgbGlzdCAoKyAyIDIpKSkpKSkKKworICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChs aXN0ICNmICdrZXkgJ3ZhbHVlICdrZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3Ry LXdlYWtuZXNzICJoYXNoLXRhYmxlLWRlbGV0ZSEgZGVsZXRlcyBwcmVzZW50IGFzc29jcywgaWdu b3JlcyBvdGhlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtuZXNzKQor ICAgICAgKGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSkgZXE/ ICM6d2VhayB3ZWFrbmVzcykpKQorICAgICAgICAoaGFzaC10YWJsZS1kZWxldGUhIGh0ICdjKQor ICAgICAgICAoYW5kICg9IDIgKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAgICAgKGJl Z2luCisgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1kZWxldGUhIGh0ICdhKQorICAgICAgICAg ICAgICAgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0KSkpCisgICAgICAgICAgICAgKGxzZXQ9IGVx dWFsPyAnKChiIC4gMikpIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkpKQorCisgICh3aXRoLXdl YWtuZXNzLWxpc3Qgd2Vha25lc3MgKGxpc3QgI2YgJ2tleSAndmFsdWUgJ2tleS1vci12YWx1ZSkK KyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImFsaXN0LT5oYXNoLXRhYmxlIGRvZXMg bm90IHJlcXVpcmUgbGluZWFyIHN0YWNrIHNwYWNlIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3ZWFrbmVzcykKKyAgICAgIChlcXY/IDk5OTk5CisgICAgICAgICAgICAoaGFzaC10 YWJsZS1yZWYgKGFsaXN0LT5oYXNoLXRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh1bmZvbGQtcmlnaHQgKGN1dCA+PSA8PiAxMDAwMDApCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAocykgYCh4IC4gLHMpKSAxKyAwKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlcT8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Izp3ZWFrIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4KSkpKQorCisg ICh3aXRoLXdlYWtuZXNzLWxpc3Qgd2Vha25lc3MgKGxpc3QgI2YgJ2tleSAndmFsdWUgJ2tleS1v ci12YWx1ZSkKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtd2Fs ayBpZ25vcmVzIHJldHVybiB2YWx1ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkg KGIgLiAyKSAoYyAuIDMpKSBlcT8pKSkKKyAgICAgICAgKGZvci1lYWNoIChjdXQgaGFzaC10YWJs ZS13YWxrIGh0IDw+KQorICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhbWJkYSAoayB2KSAodmFs dWVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGsgdikgKHZhbHVlcyAxIDIg MykpKSkKKyAgICAgICAgI3QpKSkKKworICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChs aXN0ICNmICdrZXkgJ3ZhbHVlICdrZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3Ry LXdlYWtuZXNzICJoYXNoLXRhYmxlLXVwZGF0ZSEgbW9kaWZpZXMgZXhpc3RpbmcgYmluZGluZyIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha25lc3MpCisgICAgICAobGV0ICgo aHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSkgZXE/ICM6d2VhayB3ZWFrbmVzcykpKQor ICAgICAgICAoaGFzaC10YWJsZS11cGRhdGUhIGh0ICdhIDErKQorICAgICAgICAoaGFzaC10YWJs ZS11cGRhdGUhIGh0ICdhIChjdXQgKyA0IDw+KSAobGFtYmRhICgpIDQyKSkKKyAgICAgICAgKGFu ZCAoPSAxIChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgIChsc2V0PSBlcXVhbD8g JygoYSAuIDYpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQpKSkpKSkKKworICAod2l0aC13ZWFrbmVz cy1saXN0IHdlYWtuZXNzIChsaXN0ICNmICdrZXkgJ3ZhbHVlICdrZXktb3ItdmFsdWUpCisgICAg KHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxlLXVwZGF0ZSEgY3JlYXRlcyBu ZXcgYmluZGluZyB3aGVuIGFwcHJvcHJpYXRlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIGVxPyAjOndl YWsgd2Vha25lc3MpKSkKKyAgICAgICAgKGhhc2gtdGFibGUtdXBkYXRlISBodCAnYiAxKyAobGFt YmRhICgpIDQyKSkKKyAgICAgICAgKGhhc2gtdGFibGUtdXBkYXRlISBodCAnYiAoY3V0ICsgMTAg PD4pKQorICAgICAgICAoYW5kICg9IDEgKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAg ICAgKGxzZXQ9IGVxdWFsPyAnKChiIC4gNTMpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQpKSkpKSkK KworICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChsaXN0ICNmICdrZXkgJ3ZhbHVlICdr ZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxl LW1lcmdlISBmdW5jdGlvbnMgcHJvcGVybHkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdlYWtuZXNzKQorICAgICAgKGxldCogKChodDEgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEg LiAxKSAoYiAuIDIpKSBlcT8gIzp3ZWFrIHdlYWtuZXNzKSkKKyAgICAgICAgICAgICAoaHQyIChh bGlzdC0+aGFzaC10YWJsZSAnKChiIC4gMykgKGMgLiA0KSkgZXE/ICM6d2VhayB3ZWFrbmVzcykp KQorICAgICAgICAoc2V0ISBodDEgKGhhc2gtdGFibGUtbWVyZ2UhIGh0MSBodDIpKQorICAgICAg ICAoYW5kICg9IDMgKGhhc2gtdGFibGUtc2l6ZSBodDEpKQorICAgICAgICAgICAgICg9IDIgKGhh c2gtdGFibGUtc2l6ZSBodDIpKQorICAgICAgICAgICAgIChsc2V0PSBlcXVhbD8gJygoYSAuIDEp IChiIC4gMykgKGMgLiA0KSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0MSkpCisgICAgICAgICAgICAg KGxzZXQ9IGVxdWFsPyAnKChiIC4gMykgKGMgLiA0KSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0Mikp KSkpKQogCiAgIChwYXNzLWlmICJjYW4gdXNlIGFsbCBhcmd1bWVudHMsIGluY2x1ZGluZyBzaXpl IgogICAgIChoYXNoLXRhYmxlPyAobWFrZS1oYXNoLXRhYmxlIGVxdWFsPyBoYXNoICM6d2VhayAn a2V5IDMxKSkpCiAKLSkKKyAgKQotLSAKMi4xOS4xCgo= --0000000000004d8042057db38bed--
bug-guile@HIDDEN
:bug#33827
; Package guile
.
Full text available.Received: (at 33827) by debbugs.gnu.org; 22 Dec 2018 17:45:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 22 12:45:04 2018 Received: from localhost ([127.0.0.1]:60201 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1galKh-0005LO-Nq for submit <at> debbugs.gnu.org; Sat, 22 Dec 2018 12:45:03 -0500 Received: from mail-io1-f51.google.com ([209.85.166.51]:46874) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jessymilare@HIDDEN>) id 1galKf-0005Kc-PL for 33827 <at> debbugs.gnu.org; Sat, 22 Dec 2018 12:45:02 -0500 Received: by mail-io1-f51.google.com with SMTP id v10so6216110ios.13 for <33827 <at> debbugs.gnu.org>; Sat, 22 Dec 2018 09:45:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=HoyMrOlzoXi0NvLyzRanSvWmKeA2kYKGV6cb+7sYV2Y=; b=MYPlJOHd0BgOEVu4uJ9OJDXzE2Xz0cPnR9v0zumEJI8d6hqK519PPsBu1/dw/3WHEf 8YKpEiayCGqqwIuxonZYg5gtYil2lhqFPZIq/MNa0i5A73SQwfa5PxcpKVu5PmkNh2AS nRR/0AQ6HXg7uObetMvWwPpxv3Dp3A63YVSXdS8A3FNN9PdQ5AbXCvwfBjp1x4wejkB0 u1iBNy7j9LjeqYtgRBdvBTF2JfhELi/MFWDj+Q4H1M5o8ymaMmXe+pZLZG8gxoWDBXUx 8BQyOhAjOn69+kMGCIVSgigFZBoJjdxbTSTvSChQMAkYT9pmjbgfmWXhnxWnWMudUcfv QiiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=HoyMrOlzoXi0NvLyzRanSvWmKeA2kYKGV6cb+7sYV2Y=; b=Ja/vZG8dHpF1nLuuYUVHMp2iKU0lGha/nTR3C3y/v/GrtZPQJ9HWTmIc4PGwBMayaR yaXs5oLXHLzjWQW52M6s0WQq9hmzVVY6pXuLePEdgLkKUzI6RQLG1NBEqe1zIfiGcSpn GTDZF6b+UtsMmrCl2DcQh5UiVttMUYHpKUl661TCgy58AF/YM5CE10WGGBhqzgp3l4Gv T8bVfZ6Lwq4kqQbN5Kqcb1uZ84yP4oRGkoI7GYoo/sChrNujbt613YIbcsIsRStSyxYq X2NIknW8jLBI5ztLqJijihw1qV2cJCrRqp1yK9Cfv8ybElMFq6y3lsmIUWvJPAUERDKU 4CGA== X-Gm-Message-State: AJcUukfi7o4c6mxny+/uXwq+SMYrsL/71SoaxgwGhXKCLKxdFyQYlQqo w2k1N3Y/BF/zjkRPG982FGvwWWoUc6PU4zR5LjxN4Q== X-Google-Smtp-Source: ALg8bN5a2KJ+XJsvyMBt2vIGwUOKcYw+HtGeobbYqQR8fHTJIHAwgE4xzNUPOUkg1zOFeR2wzCiEkSdLA8VhaIVdX94= X-Received: by 2002:a6b:156:: with SMTP id 83mr4743257iob.63.1545500695595; Sat, 22 Dec 2018 09:44:55 -0800 (PST) MIME-Version: 1.0 From: =?UTF-8?B?SsOpc3NpY2EgTWlsYXLDqQ==?= <jessymilare@HIDDEN> Date: Sat, 22 Dec 2018 15:44:44 -0200 Message-ID: <CAGBcF1YqKUqkNzSW_=hNVVE86WU2Hdh6RGBW3KD7AU7dj_iQRA@HIDDEN> Subject: Attempt to fix To: 33827 <at> debbugs.gnu.org Content-Type: multipart/alternative; boundary="000000000000f60eab057d9febc3" X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 33827 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.9 (/) --000000000000f60eab057d9febc3 Content-Type: text/plain; charset="UTF-8" I'll try to fix this bug and create some tests, then I send a format-patch here. I'll need to do that anyway. --000000000000f60eab057d9febc3 Content-Type: text/html; charset="UTF-8" <div dir="ltr">I'll try to fix this bug and create some tests, then I send a format-patch here. I'll need to do that anyway.</div> --000000000000f60eab057d9febc3--
bug-guile@HIDDEN
:bug#33827
; Package guile
.
Full text available.Received: (at submit) by debbugs.gnu.org; 21 Dec 2018 16:22:11 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 21 11:22:10 2018 Received: from localhost ([127.0.0.1]:58702 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1gaNYw-00085J-Mw for submit <at> debbugs.gnu.org; Fri, 21 Dec 2018 11:22:10 -0500 Received: from eggs.gnu.org ([208.118.235.92]:38466) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jessymilare@HIDDEN>) id 1gaIl3-0004l1-FX for submit <at> debbugs.gnu.org; Fri, 21 Dec 2018 06:14:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <jessymilare@HIDDEN>) id 1gaIkw-0002XP-2b for submit <at> debbugs.gnu.org; Fri, 21 Dec 2018 06:14:15 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=1.0 required=5.0 tests=BAYES_40,FREEMAIL_FROM, FROM_EXCESS_BASE64,HTML_MESSAGE autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:47113) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from <jessymilare@HIDDEN>) id 1gaIks-0002VH-Vj for submit <at> debbugs.gnu.org; Fri, 21 Dec 2018 06:14:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <jessymilare@HIDDEN>) id 1gaIks-0000H5-6C for bug-guile@HIDDEN; Fri, 21 Dec 2018 06:14:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <jessymilare@HIDDEN>) id 1gaIkq-0002TZ-7l for bug-guile@HIDDEN; Fri, 21 Dec 2018 06:14:10 -0500 Received: from mail-it1-x132.google.com ([2607:f8b0:4864:20::132]:50343) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from <jessymilare@HIDDEN>) id 1gaIko-0002O5-4I for bug-guile@HIDDEN; Fri, 21 Dec 2018 06:14:08 -0500 Received: by mail-it1-x132.google.com with SMTP id z7so6299507iti.0 for <bug-guile@HIDDEN>; Fri, 21 Dec 2018 03:14:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=tQuJtSolxmnboASWju1QdWd1dlujOQQsBsIbcgLjK3E=; b=IJ0Rh4Bmd2+63UsLz8WcNjzV2udlMK1UvNmEe2Ufgy3R/ds0mas8G9PrgzqbYL44QW 6geH1Jy7a9ZKz1UnZpmsIyieLlJtXy3ZFgELV5S5h+38cFy8CGus/G4KcZZEi9W7RNTf ID+GW/u7Q/3rQntS2xVAxK0ZC4vfXlRQiKXHmp+og6shl1Z++gQ2PUr3gCq2eQpXPIUK D/3+mj6SRswGTVbq94J/rnBVTX37dP0wdy4dS+18BTnAfofq1DxhWk+sQ5ugJWYrntkE PpbYcV7pCl8nqGHGbvu4UeOWV3FAMJjVL3B/4C9NZnu+GOpGkk0D6BDKogSay8kK0Ksv QAeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=tQuJtSolxmnboASWju1QdWd1dlujOQQsBsIbcgLjK3E=; b=aTLw4ayikTBGQqq5s6lh4LRHa4kms4aTbR92Tc37KsFwiVSwrydhU4C/0iBiaal2M4 Q/jF3l+53Rg5CDBsNXrwkYt7evU+WtLXMIrjrn2uqi9bDcs8f8N8JlJkq3P/HGlIAvTB J6ExWNGJsOa6zzDlEwqq/Xmgy3vSF5fDW1YPkPGWc71wUMyvXQFr27jH2iZITN4huhaK qXnwOSb1bk8F1MclJQXWobEobCtXUSCx9/O3Tx45GODZ7XqktKabBBJKx3cqzWwsVdMg djDf25r2wIpWdK9ygnfz5PtKsmkfMsRHvm2g5ml0k5KPc+sbTrMmN4ggq9M+Kjpe58jK nEow== X-Gm-Message-State: AA+aEWY6b2GbAnGFd9kLBHA7zshFhx5tI4gCRDRssHMUgyo1F8NfasAF LksYZywGFHVje1RQ2y9fQ0RdMyXQil/OsTya13UussCI X-Google-Smtp-Source: AFSGD/U5zkF7HlRvCRPqgsS4pyUGY9biT/Nn9KOO+Sh7IqoIyKVT9VBLyHrnO26oYWb5C3h/DBuKNaMDiADpU9GR8sg= X-Received: by 2002:a24:6c12:: with SMTP id w18mr1822384itb.14.1545390841804; Fri, 21 Dec 2018 03:14:01 -0800 (PST) MIME-Version: 1.0 From: =?UTF-8?B?SsOpc3NpY2EgTWlsYXLDqQ==?= <jessymilare@HIDDEN> Date: Fri, 21 Dec 2018 09:13:50 -0200 Message-ID: <CAGBcF1bqdT0nDnQZvc_tUJjhcu-RHAPsWNGUPGgYLf0mYVL_1w@HIDDEN> Subject: SRFI 69 weak hash-tables is broken To: bug-guile@HIDDEN Content-Type: multipart/alternative; boundary="0000000000002a3f90057d865886" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -3.9 (---) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Fri, 21 Dec 2018 11:22:09 -0500 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -4.9 (----) --0000000000002a3f90057d865886 Content-Type: text/plain; charset="UTF-8" The srfi-69 implementation that comes with Guile doesn't function properly when some non-false #:weak argument is provided. The problems seems to be that it tries to use handles, which are only available for non-weak hash-tables. scheme@(guile-user)> (import (srfi :69)) scheme@(guile-user)> (define ht (make-hash-table eq? hashq #:weak 'key)) scheme@(guile-user)> (hash-table-set! ht 10 10) ERROR: In procedure hashx-create-handle!: In procedure scm_hash_fn_create_handle_x: Wrong type argument in position 1 (expecting hash-table): #<weak-table 0/31> Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. scheme@(guile-user) [1]> Regards, Jessica --0000000000002a3f90057d865886 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">The srf= i-69 implementation that comes with Guile doesn't function properly whe= n some non-false #:weak argument is provided. The problems seems to be that= it tries to use handles, which are only available for non-weak hash-tables= .<div><br></div></div></div></div><blockquote style=3D"margin:0 0 0 40px;bo= rder:none;padding:0px"><div><div><div><div><div><font face=3D"monospace, mo= nospace">scheme@(guile-user)> (import (srfi :69))</font></div></div></di= v></div></div><div><div><div><div><div><font face=3D"monospace, monospace">= scheme@(guile-user)> (define ht (make-hash-table eq? hashq #:weak 'k= ey))</font></div></div></div></div></div><div><div><div><div><div><font fac= e=3D"monospace, monospace">scheme@(guile-user)> (hash-table-set! ht 10 1= 0)</font></div></div></div></div></div><div><div><div><div><div><font face= =3D"monospace, monospace">ERROR: In procedure hashx-create-handle!:</font><= /div></div></div></div></div><div><div><div><div><div><font face=3D"monospa= ce, monospace">In procedure scm_hash_fn_create_handle_x: Wrong type argumen= t in position 1 (expecting hash-table): #<weak-table 0/31></font></di= v></div></div></div></div><div><div><div><div><div><font face=3D"monospace,= monospace"><br></font></div></div></div></div></div><div><div><div><div><d= iv><font face=3D"monospace, monospace">Entering a new prompt.=C2=A0 Type `,= bt' for a backtrace or `,q' to continue.</font></div></div></div></= div></div><div><div><div><div><div><font face=3D"monospace, monospace">sche= me@(guile-user) [1]></font></div></div></div></div></div></blockquote><d= iv dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div><br></div><div>Regard= s,</div><div>Jessica</div></div></div></div></div> --0000000000002a3f90057d865886--
Jéssica Milaré <jessymilare@HIDDEN>
:bug-guile@HIDDEN
.
Full text available.bug-guile@HIDDEN
:bug#33827
; Package guile
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.