Re: Reporting Security Violations in Software Package
Paul Eggert <[email protected]> Thu, 13 Mar 2025 13:47:29 -0700
| Newsgroups | gmane.comp.parsers.bison.bugs |
|---|---|
| Organization | UCLA Computer Science Department |
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------uFjIZvzExWSiiDinsphmqzeO Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 3/12/25 13:50, Paul Eggert wrote: > However, the above-quoted message, like [1], says the code is "applying > non-zero offset 107820858999056" to the null pointer. That is a > different thing. Is Clang mis-reporting what's happening? The answer is "no". I reproduced the problem, and as Collin said it was due to an old Gnulib version. As far as I can see this isn't a real security violation on practical platforms. However, it does violate the C standard and some checking platforms will diagnose the violation. To fix the problem I installed the attached patches to Bison master. The first one should fix the bug. The rest fix all the problems I noticed when trying to build using Clang 19.1.7 on Fedora 41 using -fsanitize=undefined, or using GCC 14.2.1 with --enable-gcc-warnings. Thanks for reporting the problem. --------------uFjIZvzExWSiiDinsphmqzeO Content-Type: text/x-patch; charset=UTF-8; name="0001-build-update-gnulib-and-autoconf-submodules-to-lates.patch" Content-Disposition: attachment; filename*0="0001-build-update-gnulib-and-autoconf-submodules-to-lates.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4YjNkZjFhNDQzZGM3N2E2YjRkNGViMzcxNTU0MjI0NDEwMDcyYWIxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBXZWQsIDEyIE1hciAyMDI1IDE2OjU2OjQ2IC0wNzAwClN1YmplY3Q6IFtQQVRD SCAxLzZdIGJ1aWxkOiB1cGRhdGUgZ251bGliIGFuZCBhdXRvY29uZiBzdWJtb2R1bGVzIHRv IGxhdGVzdAoKLS0tCiBnbnVsaWIgICAgICAgICAgICAgIHwgMiArLQogc3VibW9kdWxlcy9h dXRvY29uZiB8IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dudWxpYiBiL2dudWxpYgppbmRleCA3MWI2MDM3 MC4uZWUyN2U5OTYgMTYwMDAwCi0tLSBhL2dudWxpYgorKysgYi9nbnVsaWIKQEAgLTEgKzEg QEAKLVN1YnByb2plY3QgY29tbWl0IDcxYjYwMzcwMmI4Y2Y3OTc3ZGVkZDVmNmI3MWVhMGZm YzE2Njk4OTQKK1N1YnByb2plY3QgY29tbWl0IGVlMjdlOTk2NDM1ZjBkYWYwZjhjZDk2MDI4 NWFiYjU4NTlmNTBhNGQKZGlmZiAtLWdpdCBhL3N1Ym1vZHVsZXMvYXV0b2NvbmYgYi9zdWJt b2R1bGVzL2F1dG9jb25mCmluZGV4IDY2ZmRhZWEzLi4yZjY0ZGNkMCAxNjAwMDAKLS0tIGEv c3VibW9kdWxlcy9hdXRvY29uZgorKysgYi9zdWJtb2R1bGVzL2F1dG9jb25mCkBAIC0xICsx IEBACi1TdWJwcm9qZWN0IGNvbW1pdCA2NmZkYWVhM2NmYjRlNzU4MjEyYzE4OTE5MTNlOWE1 OTQ0MWQ0OWFmCitTdWJwcm9qZWN0IGNvbW1pdCAyZjY0ZGNkMDQ4YjA4YmI5MGVjNDRiMjZm NGNkNmI3MjkxMTJhMjhlCi0tIAoyLjQ4LjEKCg== --------------uFjIZvzExWSiiDinsphmqzeO Content-Type: text/x-patch; charset=UTF-8; name="0002-maint-.-bootstrap.patch" Content-Disposition: attachment; filename="0002-maint-.-bootstrap.patch" Content-Transfer-Encoding: base64 RnJvbSA0MWE5MzllZWNlNzE3YWZiYWVkMjcwNGQyNDYzYjQ0NTIzY2VhYTY2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBXZWQsIDEyIE1hciAyMDI1IDE3OjA0OjQyIC0wNzAwClN1YmplY3Q6IFtQQVRD SCAyLzZdIG1haW50OiAuL2Jvb3RzdHJhcAoKLS0tCiBhdXRvZ2VuLnNoICAgICAgICAgICAg ICB8IDQ1MSArLS0tLS0tLS0tLS0tLS0tLS0tCiBhdXRvcHVsbC5zaCAgICAgICAgICAgICB8 IDI0MCArLS0tLS0tLS0tCiBib290c3RyYXAgICAgICAgICAgICAgICB8IDEyNiArKysrLS0K IGJvb3RzdHJhcC1mdW5jbGliLnNoICAgIHwgOTc0ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0KIGxpYi8uZ2l0aWdub3JlICAgICAgICAgIHwgIDM5ICstCiBs aWIvZ2x0aHJlYWQvLmdpdGlnbm9yZSB8ICAgMiArCiBsaWIvbWFsbG9jLy5naXRpZ25vcmUg ICB8ICAgMSAtCiBtNC8uZ2l0aWdub3JlICAgICAgICAgICB8ICAyOSArLQogOCBmaWxlcyBj aGFuZ2VkLCAxMDI2IGluc2VydGlvbnMoKyksIDgzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9hdXRvZ2VuLnNoIGIvYXV0b2dlbi5zaAppbmRleCAwMjAyOGYyNy4uMGYzZDgwOTIg MTAwNzU1Ci0tLSBhL2F1dG9nZW4uc2gKKysrIGIvYXV0b2dlbi5zaApAQCAtNCw3ICs0LDcg QEAKICMgYWxzbyByZWdlbmVyYXRlcyBhbGwgYWNsb2NhbC5tNCwgY29uZmlnLmguaW4sIE1h a2VmaWxlLmluLCBjb25maWd1cmUgZmlsZXMKICMgd2l0aCBuZXcgdmVyc2lvbnMgb2YgYXV0 b2NvbmYgb3IgYXV0b21ha2UuCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjIgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMy0yMDI1IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQpAQCAtMzAsNDU3ICszMCwxMCBAQAogIyBBbHRlcm5hdGl2ZWx5LCB5 b3UgY2FuIHVzZSBhbiBhdXRvZ2VuLnNoIHNjcmlwdCB0aGF0IGlzIHNwZWNpZmljCiAjIHRv IHlvdXIgcGFja2FnZS4KIAotc2NyaXB0dmVyc2lvbj0yMDIyLTA3LTI0LjE1OyAjIFVUQwot CiBtZT0iJDAiCiBtZWRpcj1gZGlybmFtZSAiJG1lImAKIAogIyBSZWFkIHRoZSBmdW5jdGlv biBsaWJyYXJ5IGFuZCB0aGUgY29uZmlndXJhdGlvbi4KIC4gIiRtZWRpciIvYm9vdHN0cmFw LWZ1bmNsaWIuc2gKIAotIyBFbnN1cmUgdGhhdCBDRFBBVEggaXMgbm90IHNldC4gIE90aGVy d2lzZSwgdGhlIG91dHB1dCBmcm9tIGNkCi0jIHdvdWxkIGNhdXNlIHRyb3VibGUgaW4gYXQg bGVhc3Qgb25lIHVzZSBiZWxvdy4KLSh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAm JiB1bnNldCBDRFBBVEgKLQotIyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBtYXkgYmUg c2V0IGJ5IHRoZSB1c2VyLgotOiAiJHtBVVRPUE9JTlQ9YXV0b3BvaW50fSIKLTogIiR7QVVU T1JFQ09ORj1hdXRvcmVjb25mfSIKLQotaWYgdGVzdCAiJHZjX2lnbm9yZSIgPSBhdXRvOyB0 aGVuCi0gIHZjX2lnbm9yZT0KLSAgdGVzdCAtZCAuZ2l0ICYmIHZjX2lnbm9yZT0uZ2l0aWdu b3JlCi0gIHRlc3QgLWQgQ1ZTICYmIHZjX2lnbm9yZT0iJHZjX2lnbm9yZSAuY3ZzaWdub3Jl IgotZmkKLQotdXNhZ2UoKSB7Ci0gIGNhdCA8PEVPRgotVXNhZ2U6ICRtZSBbT1BUSU9OXS4u LgotQm9vdHN0cmFwIHRoaXMgcGFja2FnZSBmcm9tIHRoZSBjaGVja2VkLW91dCBzb3VyY2Vz LgotCi1PcHRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Ci0gIEdOVUxJQl9TUkNESVIg ICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGxvY2FsIGRpcmVjdG9yeSB3aGVyZSBnbnVsaWIK LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMgcmVzaWRlLiAgVXNlIHRoaXMg aWYgeW91IGFscmVhZHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgZ251bGli IHNvdXJjZXMgb24geW91ciBtYWNoaW5lLCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHlvdSB3YW50IHRvIHVzZSB0aGVzZSBzb3VyY2VzLgotCi1PcHRpb25zOgotICAtLWNv cHkgICAgICAgICAgICAgICAgICAgY29weSBmaWxlcyBpbnN0ZWFkIG9mIGNyZWF0aW5nIHN5 bWJvbGljIGxpbmtzCi0gIC0tZm9yY2UgICAgICAgICAgICAgICAgICBhdHRlbXB0IHRvIGJv b3RzdHJhcCBldmVuIGlmIHRoZSBzb3VyY2VzIHNlZW0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5vdCB0byBoYXZlIGJlZW4gY2hlY2tlZCBvdXQKLUVPRgotICBib290c3RyYXBf cHJpbnRfb3B0aW9uX3VzYWdlX2hvb2sKLSAgY2F0IDw8RU9GCi1JZiB0aGUgZmlsZSBib290 c3RyYXAuY29uZiBleGlzdHMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoaXMgc2NyaXB0 LCBpdHMKLWNvbnRlbnRzIGFyZSByZWFkIGFzIHNoZWxsIHZhcmlhYmxlcyB0byBjb25maWd1 cmUgdGhlIGJvb3RzdHJhcC4KLQotRm9yIGJ1aWxkIHByZXJlcXVpc2l0ZXMsIGVudmlyb25t ZW50IHZhcmlhYmxlcyBsaWtlIFwkQVVUT0NPTkYgYW5kIFwkQU1UQVIKLWFyZSBob25vcmVk LgotCi1HbnVsaWIgc291cmNlcyBhcmUgYXNzdW1lZCB0byBiZSBwcmVzZW50OgotICAqIGlu IFwkR05VTElCX1NSQ0RJUiwgaWYgdGhhdCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQs Ci0gICogb3RoZXJ3aXNlLCBpbiB0aGUgJ2dudWxpYicgc3VibW9kdWxlLCBpZiBzdWNoIGEg c3VibW9kdWxlIGlzIGNvbmZpZ3VyZWQsCi0gICogb3RoZXJ3aXNlLCBpbiB0aGUgJ2dudWxp Yicgc3ViZGlyZWN0b3J5LgotCi1SdW5uaW5nIHdpdGhvdXQgYXJndW1lbnRzIHdpbGwgc3Vm ZmljZSBpbiBtb3N0IGNhc2VzLgotRU9GCi19Ci0KLSMgUGFyc2Ugb3B0aW9ucy4KLQotIyBX aGV0aGVyIHRvIHVzZSBjb3BpZXMgaW5zdGVhZCBvZiBzeW1saW5rcy4KLWNvcHk9ZmFsc2UK LQotZm9yIG9wdGlvbgotZG8KLSAgY2FzZSAkb3B0aW9uIGluCi0gIC0taGVscCkKLSAgICB1 c2FnZQotICAgIGV4aXQ7OwotICAtLXZlcnNpb24pCi0gICAgc2V0IC1lCi0gICAgZWNobyAi YXV0b2dlbi5zaCAkc2NyaXB0dmVyc2lvbiIKLSAgICBlY2hvICIkY29weXJpZ2h0IgotICAg IGV4aXQgMAotICAgIDs7Ci0gIC0tZm9yY2UpCi0gICAgY2hlY2tvdXRfb25seV9maWxlPTs7 Ci0gIC0tY29weSkKLSAgICBjb3B5PXRydWU7OwotICAqKQotICAgIGJvb3RzdHJhcF9vcHRp b25faG9vayAkb3B0aW9uIHx8IGRpZSAiJG9wdGlvbjogdW5rbm93biBvcHRpb24iOzsKLSAg ZXNhYwotZG9uZQotCi10ZXN0IC16ICIkR05VTElCX1NSQ0RJUiIgfHwgdGVzdCAtZCAiJEdO VUxJQl9TUkNESVIiIFwKLSAgfHwgZGllICJFcnJvcjogXCRHTlVMSUJfU1JDRElSIGVudmly b25tZW50IHZhcmlhYmxlIG9yIC0tZ251bGliLXNyY2RpciBvcHRpb24gaXMgc3BlY2lmaWVk LCBidXQgZG9lcyBub3QgZGVub3RlIGEgZGlyZWN0b3J5IgotCi1pZiB0ZXN0IC1uICIkY2hl Y2tvdXRfb25seV9maWxlIiAmJiB0ZXN0ICEgLXIgIiRjaGVja291dF9vbmx5X2ZpbGUiOyB0 aGVuCi0gIGRpZSAiUnVubmluZyB0aGlzIHNjcmlwdCBmcm9tIGEgbm9uLWNoZWNrZWQtb3V0 IGRpc3RyaWJ1dGlvbiBpcyByaXNreS4iCi1maQotCi1pZiAkdXNlX2dudWxpYjsgdGhlbgot ICBpZiB0ZXN0IC16ICIkR05VTElCX1NSQ0RJUiI7IHRoZW4KLSAgICBnbnVsaWJfcGF0aD0k KHRlc3QgLWYgLmdpdG1vZHVsZXMgJiYgZ2l0IGNvbmZpZyAtLWZpbGUgLmdpdG1vZHVsZXMg c3VibW9kdWxlLmdudWxpYi5wYXRoKQotICAgIHRlc3QgLXogIiRnbnVsaWJfcGF0aCIgJiYg Z251bGliX3BhdGg9Z251bGliCi0gICAgR05VTElCX1NSQ0RJUj0kZ251bGliX3BhdGgKLSAg ZmkKLWZpCi0KLXZlcnNpb25fY29udHJvbGxlZF9maWxlKCkgewotICBwYXJlbnQ9JDEKLSAg ZmlsZT0kMgotICBpZiB0ZXN0IC1kIC5naXQ7IHRoZW4KLSAgICBnaXQgcm0gLW4gIiRmaWxl IiA+IC9kZXYvbnVsbCAyPiYxCi0gIGVsaWYgdGVzdCAtZCAuc3ZuOyB0aGVuCi0gICAgc3Zu IGxvZyAtciBIRUFEICIkZmlsZSIgPiAvZGV2L251bGwgMj4mMQotICBlbGlmIHRlc3QgLWQg Q1ZTOyB0aGVuCi0gICAgZ3JlcCAtRiAiLyR7ZmlsZSMjKi99LyIgIiRwYXJlbnQvQ1ZTL0Vu dHJpZXMiIDI+L2Rldi9udWxsIHwKLSAgICAgICAgICAgICBncmVwICdeL1teL10qL1swLTld JyA+IC9kZXYvbnVsbAotICBlbHNlCi0gICAgd2Fybl8gIm5vIHZlcnNpb24gY29udHJvbCBm b3IgJGZpbGU/IgotICAgIGZhbHNlCi0gIGZpCi19Ci0KLSMgU3RyaXAgYmxhbmsgYW5kIGNv bW1lbnQgbGluZXMgdG8gbGVhdmUgc2lnbmlmaWNhbnQgZW50cmllcy4KLWdpdGlnbm9yZV9l bnRyaWVzKCkgewotICBzZWQgJy9eIy9kOyAvXiQvZCcgIiRAIgotfQotCi0jIElmICRTVFIg aXMgbm90IGFscmVhZHkgb24gYSBsaW5lIGJ5IGl0c2VsZiBpbiAkRklMRSwgaW5zZXJ0IGl0 IGF0IHRoZSBzdGFydC4KLSMgRW50cmllcyBhcmUgaW5zZXJ0ZWQgYXQgdGhlIHN0YXJ0IG9m IHRoZSBpZ25vcmUgbGlzdCB0byBlbnN1cmUgZXhpc3RpbmcKLSMgZW50cmllcyBzdGFydGlu ZyB3aXRoICEgYXJlIG5vdCBvdmVycmlkZGVuLiAgU3VjaCBlbnRyaWVzIHN1cHBvcnQKLSMg d2hpdGVsaXN0aW5nIGV4Y2VwdGlvbnMgYWZ0ZXIgYSBtb3JlIGdlbmVyaWMgYmxhY2tsaXN0 IHBhdHRlcm4uCi1pbnNlcnRfaWZfYWJzZW50KCkgewotICBmaWxlPSQxCi0gIHN0cj0kMgot ICB0ZXN0IC1mICRmaWxlIHx8IHRvdWNoICRmaWxlCi0gIHRlc3QgLXIgJGZpbGUgfHwgZGll ICJFcnJvcjogZmFpbGVkIHRvIHJlYWQgaWdub3JlIGZpbGU6ICRmaWxlIgotICBkdXBsaWNh dGVfZW50cmllcz0kKGdpdGlnbm9yZV9lbnRyaWVzICRmaWxlIHwgc29ydCB8IHVuaXEgLWQp Ci0gIGlmIFsgIiRkdXBsaWNhdGVfZW50cmllcyIgXSA7IHRoZW4KLSAgICBkaWUgIkVycm9y OiBEdXBsaWNhdGUgZW50cmllcyBpbiAkZmlsZTogIiAkZHVwbGljYXRlX2VudHJpZXMKLSAg ZmkKLSAgbGluZXNvbGQ9JChnaXRpZ25vcmVfZW50cmllcyAkZmlsZSB8IHdjIC1sKQotICBs aW5lc25ldz0kKCB7IGVjaG8gIiRzdHIiOyBjYXQgJGZpbGU7IH0gfCBnaXRpZ25vcmVfZW50 cmllcyB8IHNvcnQgLXUgfCB3YyAtbCkKLSAgaWYgWyAkbGluZXNvbGQgIT0gJGxpbmVzbmV3 IF0gOyB0aGVuCi0gICAgeyBlY2hvICIkc3RyIiB8IGNhdCAtICRmaWxlID4gJGZpbGUuYmFr ICYmIG12ICRmaWxlLmJhayAkZmlsZTsgfSBcCi0gICAgICB8fCBkaWUgImluc2VydF9pZl9h YnNlbnQgJGZpbGUgJHN0cjogZmFpbGVkIgotICBmaQotfQotCi0jIEFkanVzdCAkUEFUVEVS TiBmb3IgJFZDX0lHTk9SRV9GSUxFIGFuZCBpbnNlcnQgaXQgd2l0aAotIyBpbnNlcnRfaWZf YWJzZW50LgotaW5zZXJ0X3ZjX2lnbm9yZSgpIHsKLSAgdmNfaWdub3JlX2ZpbGU9IiQxIgot ICBwYXR0ZXJuPSIkMiIKLSAgY2FzZSAkdmNfaWdub3JlX2ZpbGUgaW4KLSAgKi5naXRpZ25v cmUpCi0gICAgIyBBIC5naXRpZ25vcmUgZW50cnkgdGhhdCBkb2VzIG5vdCBzdGFydCB3aXRo ICcvJyBhcHBsaWVzCi0gICAgIyByZWN1cnNpdmVseSB0byBzdWJkaXJlY3Rvcmllcywgc28g cHJlcGVuZCAnLycgdG8gZXZlcnkKLSAgICAjIC5naXRpZ25vcmUgZW50cnkuCi0gICAgcGF0 dGVybj0kKGVjaG8gIiRwYXR0ZXJuIiB8IHNlZCBzLF4sLywpOzsKLSAgZXNhYwotICBpbnNl cnRfaWZfYWJzZW50ICIkdmNfaWdub3JlX2ZpbGUiICIkcGF0dGVybiIKLX0KLQotc3ltbGlu a190b19kaXIoKQotewotICBzcmM9JDEvJDIKLSAgZHN0PSR7My0kMn0KLQotICB0ZXN0IC1m ICIkc3JjIiAmJiB7Ci0KLSAgICAjIElmIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgZG9l c24ndCBleGlzdCwgY3JlYXRlIGl0LgotICAgICMgVGhpcyBpcyByZXF1aXJlZCBhdCBsZWFz dCBmb3IgImxpYi91bml3aWR0aC9jamsuaCIuCi0gICAgZHN0X2Rpcj0kKGRpcm5hbWUgIiRk c3QiKQotICAgIGlmICEgdGVzdCAtZCAiJGRzdF9kaXIiOyB0aGVuCi0gICAgICBta2RpciAt cCAiJGRzdF9kaXIiCi0KLSAgICAgICMgSWYgd2UndmUganVzdCBjcmVhdGVkIGEgZGlyZWN0 b3J5IGxpa2UgbGliL3VuaXdpZHRoLAotICAgICAgIyB0ZWxsIHZlcnNpb24gY29udHJvbCBz eXN0ZW0ocykgaXQncyBpZ25vcmFibGUuCi0gICAgICAjIEZJWE1FOiBmb3Igbm93LCB0aGlz IGRvZXMgb25seSBvbmUgbGV2ZWwKLSAgICAgIHBhcmVudD0kKGRpcm5hbWUgIiRkc3RfZGly IikKLSAgICAgIGZvciBkb3RfaWcgaW4geCAkdmNfaWdub3JlOyBkbwotICAgICAgICB0ZXN0 ICRkb3RfaWcgPSB4ICYmIGNvbnRpbnVlCi0gICAgICAgIGlnPSRwYXJlbnQvJGRvdF9pZwot ICAgICAgICBpbnNlcnRfdmNfaWdub3JlICRpZyAiJHtkc3RfZGlyIyMqL30iCi0gICAgICBk b25lCi0gICAgZmkKLQotICAgIGlmICRjb3B5OyB0aGVuCi0gICAgICB7Ci0gICAgICAgIHRl c3QgISAtaCAiJGRzdCIgfHwgewotICAgICAgICAgIGVjaG8gIiRtZTogcm0gLWYgJGRzdCIg JiYKLSAgICAgICAgICBybSAtZiAiJGRzdCIKLSAgICAgICAgfQotICAgICAgfSAmJgotICAg ICAgdGVzdCAtZiAiJGRzdCIgJiYKLSAgICAgIGNtcCAtcyAiJHNyYyIgIiRkc3QiIHx8IHsK LSAgICAgICAgZWNobyAiJG1lOiBjcCAtZnAgJHNyYyAkZHN0IiAmJgotICAgICAgICBjcCAt ZnAgIiRzcmMiICIkZHN0IgotICAgICAgfQotICAgIGVsc2UKLSAgICAgICMgTGVhdmUgYW55 IGV4aXN0aW5nIHN5bWxpbmsgYWxvbmUsIGlmIGl0IGFscmVhZHkgcG9pbnRzIHRvIHRoZSBz b3VyY2UsCi0gICAgICAjIHNvIHRoYXQgYnJva2VuIGJ1aWxkIHRvb2xzIHRoYXQgY2FyZSBh Ym91dCBzeW1saW5rIHRpbWVzCi0gICAgICAjIGFyZW4ndCBjb25mdXNlZCBpbnRvIGRvaW5n IHVubmVjZXNzYXJ5IGJ1aWxkcy4gIENvbnZlcnNlbHksIGlmIHRoZQotICAgICAgIyBleGlz dGluZyBzeW1saW5rJ3MgdGltZXN0YW1wIGlzIG9sZGVyIHRoYW4gdGhlIHNvdXJjZSwgbWFr ZSBpdCBhZnJlc2gsCi0gICAgICAjIHNvIHRoYXQgYnJva2VuIHRvb2xzIGFyZW4ndCBjb25m dXNlZCBpbnRvIHNraXBwaW5nIG5lZWRlZCBidWlsZHMuICBTZWUKLSAgICAgICMgPGh0dHBz Oi8vbGlzdHMuZ251Lm9yZy9yL2J1Zy1nbnVsaWIvMjAxMS0wNS9tc2cwMDMyNi5odG1sPi4K LSAgICAgIHRlc3QgLWggIiRkc3QiICYmCi0gICAgICBzcmNfbHM9JChscyAtZGlMICIkc3Jj IiAyPi9kZXYvbnVsbCkgJiYgc2V0ICRzcmNfbHMgJiYgc3JjX2k9JDEgJiYKLSAgICAgIGRz dF9scz0kKGxzIC1kaUwgIiRkc3QiIDI+L2Rldi9udWxsKSAmJiBzZXQgJGRzdF9scyAmJiBk c3RfaT0kMSAmJgotICAgICAgdGVzdCAiJHNyY19pIiA9ICIkZHN0X2kiICYmCi0gICAgICBi b3RoX2xzPSQobHMgLWR0ICIkc3JjIiAiJGRzdCIpICYmCi0gICAgICB0ZXN0ICJYJGJvdGhf bHMiID0gIlgkZHN0JG5sJHNyYyIgfHwgewotICAgICAgICBkb3RfZG90cz0KLSAgICAgICAg Y2FzZSAkc3JjIGluCi0gICAgICAgIC8qKSA7OwotICAgICAgICAqKQotICAgICAgICAgIGNh c2UgLyRkc3QvIGluCi0gICAgICAgICAgKi8vKiB8ICovLi4vKiB8ICovLi8qIHwgLyovKi8q LyovKi8pCi0gICAgICAgICAgICAgZGllICJpbnZhbGlkIHN5bWxpbmsgY2FsY3VsYXRpb246 ICRzcmMgLT4gJGRzdCI7OwotICAgICAgICAgIC8qLyovKi8qLykgICAgZG90X2RvdHM9Li4v Li4vLi4vOzsKLSAgICAgICAgICAvKi8qLyovKSAgICAgIGRvdF9kb3RzPS4uLy4uLzs7Ci0g ICAgICAgICAgLyovKi8pICAgICAgICBkb3RfZG90cz0uLi87OwotICAgICAgICAgIGVzYWM7 OwotICAgICAgICBlc2FjCi0KLSAgICAgICAgZWNobyAiJG1lOiBsbiAtZnMgJGRvdF9kb3Rz JHNyYyAkZHN0IiAmJgotICAgICAgICBsbiAtZnMgIiRkb3RfZG90cyRzcmMiICIkZHN0Igot ICAgICAgfQotICAgIGZpCi0gIH0KLX0KLQotIyBEaWUgaWYgdGhlcmUgaXMgbm8gQUNfQ09O RklHX0FVWF9ESVIoJGJ1aWxkX2F1eCkgbGluZSBpbiBjb25maWd1cmUuYWMuCi1mb3VuZF9h dXhfZGlyPW5vCi1ncmVwICdeWwkgXSpBQ19DT05GSUdfQVVYX0RJUihcWyciJGJ1aWxkX2F1 eCInXSknIGNvbmZpZ3VyZS5hYyBcCi0gICAgPi9kZXYvbnVsbCAmJiBmb3VuZF9hdXhfZGly PXllcwotZ3JlcCAnXlsJIF0qQUNfQ09ORklHX0FVWF9ESVIoJyIkYnVpbGRfYXV4IicpJyBj b25maWd1cmUuYWMgXAotICAgID4vZGV2L251bGwgJiYgZm91bmRfYXV4X2Rpcj15ZXMKLXRl c3QgJGZvdW5kX2F1eF9kaXIgPSB5ZXMgXAotICB8fCBkaWUgImNvbmZpZ3VyZS5hYyBsYWNr cyAnQUNfQ09ORklHX0FVWF9ESVIoWyRidWlsZF9hdXhdKSc7IGFkZCBpdCIKLQotIyBJZiAk YnVpbGRfYXV4IGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBpdCBub3csIG90aGVyd2lzZSBzb21l IGJpdHMKLSMgYmVsb3cgd2lsbCBtYWxmdW5jdGlvbi4gIElmIGNyZWF0aW5nIGl0LCBhbHNv IG1hcmsgaXQgYXMgaWdub3JlZC4KLWlmIHRlc3QgISAtZCAkYnVpbGRfYXV4OyB0aGVuCi0g IG1rZGlyICRidWlsZF9hdXgKLSAgZm9yIGRvdF9pZyBpbiB4ICR2Y19pZ25vcmU7IGRvCi0g ICAgdGVzdCAkZG90X2lnID0geCAmJiBjb250aW51ZQotICAgIGluc2VydF92Y19pZ25vcmUg JGRvdF9pZyAkYnVpbGRfYXV4Ci0gIGRvbmUKLWZpCi0KLWNoZWNrX2J1aWxkX3ByZXJlcXVp c2l0ZXMgZmFsc2UKLQotdXNlX2xpYnRvb2w9MAotIyBXZSdkIGxpa2UgdG8gdXNlIGdyZXAg LUUsIHRvIHNlZSBpZiBhbnkgb2YgTFRfSU5JVCwKLSMgQUNfUFJPR19MSUJUT09MLCBBTV9Q Uk9HX0xJQlRPT0wgaXMgdXNlZCBpbiBjb25maWd1cmUuYWMsCi0jIGJ1dCB0aGF0J3Mgbm90 IHBvcnRhYmxlIGVub3VnaCAoZS5nLiwgZm9yIFNvbGFyaXMpLgotZ3JlcCAnXlsJIF0qQVtD TV1fUFJPR19MSUJUT09MJyBjb25maWd1cmUuYWMgPi9kZXYvbnVsbCBcCi0gICYmIHVzZV9s aWJ0b29sPTEKLWdyZXAgJ15bCSBdKkxUX0lOSVQnIGNvbmZpZ3VyZS5hYyA+L2Rldi9udWxs IFwKLSAgJiYgdXNlX2xpYnRvb2w9MQotaWYgdGVzdCAkdXNlX2xpYnRvb2wgPSAxOyB0aGVu Ci0gIGZpbmRfdG9vbCBMSUJUT09MSVpFIGdsaWJ0b29saXplIGxpYnRvb2xpemUKLWZpCi0K LWlmICR1c2VfZ251bGliOyB0aGVuCi0gIGdudWxpYl90b29sPSRHTlVMSUJfU1JDRElSL2du dWxpYi10b29sCi0gIDwkZ251bGliX3Rvb2wgfHwgZXhpdCAkPwotZmkKLQotIyBOT1RFOiB3 ZSBoYXZlIHRvIGJlIGNhcmVmdWwgdG8gcnVuIGJvdGggYXV0b3BvaW50IGFuZCBsaWJ0b29s aXplCi0jIGJlZm9yZSBnbnVsaWItdG9vbCwgc2luY2UgZ251bGliLXRvb2wgaXMgbGlrZWx5 IHRvIHByb3ZpZGUgbmV3ZXIKLSMgdmVyc2lvbnMgb2YgZmlsZXMgImluc3RhbGxlZCIgYnkg dGhlc2UgdHdvIHByb2dyYW1zLgotIyBUaGVuLCAqYWZ0ZXIqIGdudWxpYi10b29sIChzZWUg YmVsb3cpLCB3ZSBoYXZlIHRvIGJlIGNhcmVmdWwgdG8KLSMgcnVuIGF1dG9yZWNvbmYgaW4g c3VjaCBhIHdheSB0aGF0IGl0IGRvZXMgbm90IHJ1biBlaXRoZXIgb2YgdGhlc2UKLSMgdHdv IGp1c3QtcHJlLXJ1biBwcm9ncmFtcy4KLQotIyBJbXBvcnQgZnJvbSBnZXR0ZXh0Lgotd2l0 aF9nZXR0ZXh0PXllcwotZ3JlcCAnXlsJIF0qQU1fR05VX0dFVFRFWFRfVkVSU0lPTignIGNv bmZpZ3VyZS5hYyA+L2Rldi9udWxsIHx8IFwKLSAgICB3aXRoX2dldHRleHQ9bm8KLQotaWYg dGVzdCAkd2l0aF9nZXR0ZXh0ID0geWVzIHx8IHRlc3QgJHVzZV9saWJ0b29sID0gMTsgdGhl bgotCi0gIHRlbXBiYXNlPS5ib290c3RyYXAkJAotICB0cmFwICJybSAtZiAkdGVtcGJhc2Uu MCAkdGVtcGJhc2UuMSIgMSAyIDEzIDE1Ci0KLSAgPiAkdGVtcGJhc2UuMCA+ICR0ZW1wYmFz ZS4xICYmCi0gIGZpbmQgLiAhIC10eXBlIGQgLXByaW50IHwgc29ydCA+ICR0ZW1wYmFzZS4w IHx8IGV4aXQKLQotICBpZiB0ZXN0ICR3aXRoX2dldHRleHQgPSB5ZXM7IHRoZW4KLSAgICAj IFJlbGVhc2VkIGF1dG9wb2ludCBoYXMgdGhlIHRlbmRlbmN5IHRvIGluc3RhbGwgbWFjcm9z IHRoYXQgaGF2ZSBiZWVuCi0gICAgIyBvYnNvbGV0ZWQgaW4gY3VycmVudCBnbnVsaWIsIHNv IHJ1biB0aGlzIGJlZm9yZSBnbnVsaWItdG9vbC4KLSAgICBlY2hvICIkMDogJEFVVE9QT0lO VCAtLWZvcmNlIgotICAgICRBVVRPUE9JTlQgLS1mb3JjZSB8fCBleGl0Ci0gIGZpCi0KLSAg IyBBdXRvcmVjb25mIHJ1bnMgYWNsb2NhbCBiZWZvcmUgbGlidG9vbGl6ZSwgd2hpY2ggY2F1 c2VzIHNwdXJpb3VzCi0gICMgd2FybmluZ3MgaWYgdGhlIGluaXRpYWwgYWNsb2NhbCBpcyBj b25mdXNlZCBieSB0aGUgbGlidG9vbGl6ZWQKLSAgIyAob3Igd29yc2Ugb3V0LW9mLWRhdGUp IG1hY3JvIGRpcmVjdG9yeS4KLSAgIyBsaWJ0b29saXplIDEuOWIgYWRkZWQgdGhlIC0taW5z dGFsbCBvcHRpb247IGJ1dCB3ZSBzdXBwb3J0IGJhY2sKLSAgIyB0byBsaWJ0b29saXplIDEu NS4yMiwgd2hlcmUgdGhlIGluc3RhbGwgYWN0aW9uIHdhcyBkZWZhdWx0LgotICBpZiB0ZXN0 ICR1c2VfbGlidG9vbCA9IDE7IHRoZW4KLSAgICBpbnN0YWxsPQotICAgIGNhc2UgJCgkTElC VE9PTElaRSAtLWhlbHApIGluCi0gICAgICAqLS1pbnN0YWxsKikgaW5zdGFsbD0tLWluc3Rh bGwgOzsKLSAgICBlc2FjCi0gICAgZWNobyAicnVubmluZzogJExJQlRPT0xJWkUgJGluc3Rh bGwgLS1jb3B5IgotICAgICRMSUJUT09MSVpFICRpbnN0YWxsIC0tY29weQotICBmaQotCi0g IGZpbmQgLiAhIC10eXBlIGQgLXByaW50IHwgc29ydCA+JHRlbXBiYXNlLjEKLSAgb2xkX0lG Uz0kSUZTCi0gIElGUz0kbmwKLSAgZm9yIGZpbGUgaW4gJChjb21tIC0xMyAkdGVtcGJhc2Uu MCAkdGVtcGJhc2UuMSk7IGRvCi0gICAgSUZTPSRvbGRfSUZTCi0gICAgcGFyZW50PSR7Zmls ZSUvKn0KLSAgICB2ZXJzaW9uX2NvbnRyb2xsZWRfZmlsZSAiJHBhcmVudCIgIiRmaWxlIiB8 fCB7Ci0gICAgICBmb3IgZG90X2lnIGluIHggJHZjX2lnbm9yZTsgZG8KLSAgICAgICAgdGVz dCAkZG90X2lnID0geCAmJiBjb250aW51ZQotICAgICAgICBpZz0kcGFyZW50LyRkb3RfaWcK LSAgICAgICAgaW5zZXJ0X3ZjX2lnbm9yZSAiJGlnIiAiJHtmaWxlIyMqL30iCi0gICAgICBk b25lCi0gICAgfQotICBkb25lCi0gIElGUz0kb2xkX0lGUwotCi0gIHJtIC1mICR0ZW1wYmFz ZS4wICR0ZW1wYmFzZS4xCi0gIHRyYXAgLSAxIDIgMTMgMTUKLWZpCi0KLSMgSW1wb3J0IGZy b20gZ251bGliLgotCi1pZiAkdXNlX2dudWxpYjsgdGhlbgotICBnbnVsaWJfdG9vbF9vcHRp b25zPSJcCi0gICAtLW5vLWNoYW5nZWxvZ1wKLSAgIC0tYXV4LWRpcj0kYnVpbGRfYXV4XAot ICAgLS1kb2MtYmFzZT0kZG9jX2Jhc2VcCi0gICAtLWxpYj0kZ251bGliX25hbWVcCi0gICAt LW00LWJhc2U9JG00X2Jhc2UvXAotICAgLS1zb3VyY2UtYmFzZT0kc291cmNlX2Jhc2UvXAot ICAgLS10ZXN0cy1iYXNlPSR0ZXN0c19iYXNlXAotICAgLS1sb2NhbC1kaXI9JGxvY2FsX2ds X2RpclwKLSAgICRnbnVsaWJfdG9vbF9vcHRpb25fZXh0cmFzXAotICAiCi0gIGlmIHRlc3Qg JHVzZV9saWJ0b29sID0gMTsgdGhlbgotICAgIGNhc2UgIiRnbnVsaWJfdG9vbF9vcHRpb25z ICIgaW4KLSAgICAgIConIC0tbGlidG9vbCAnKikgOzsKLSAgICAgICopIGdudWxpYl90b29s X29wdGlvbnM9IiRnbnVsaWJfdG9vbF9vcHRpb25zIC0tbGlidG9vbCIgOzsKLSAgICBlc2Fj Ci0gIGZpCi0gIGVjaG8gIiQwOiAkZ251bGliX3Rvb2wgJGdudWxpYl90b29sX29wdGlvbnMg LS1pbXBvcnQgLi4uIgotICAkZ251bGliX3Rvb2wgJGdudWxpYl90b29sX29wdGlvbnMgLS1p bXBvcnQgJGdudWxpYl9tb2R1bGVzIFwKLSAgICB8fCBkaWUgImdudWxpYi10b29sIGZhaWxl ZCIKLQotICBmb3IgZmlsZSBpbiAkZ251bGliX2ZpbGVzOyBkbwotICAgIHN5bWxpbmtfdG9f ZGlyICIkR05VTElCX1NSQ0RJUiIgJGZpbGUgXAotICAgICAgfHwgZGllICJmYWlsZWQgdG8g c3ltbGluayAkZmlsZSIKLSAgZG9uZQotZmkKLQotYm9vdHN0cmFwX3Bvc3RfaW1wb3J0X2hv b2sgXAotICB8fCBkaWUgImJvb3RzdHJhcF9wb3N0X2ltcG9ydF9ob29rIGZhaWxlZCIKLQot IyBSZW1vdmUgYW55IGRhbmdsaW5nIHN5bWxpbmsgbWF0Y2hpbmcgIioubTQiIG9yICIqLltj aF0iIGluIHNvbWUKLSMgZ251bGliLXBvcHVsYXRlZCBkaXJlY3Rvcmllcy4gIFN1Y2ggLm00 IGZpbGVzIHdvdWxkIGNhdXNlIGFjbG9jYWwgdG8gZmFpbC4KLSMgVGhlIGZvbGxvd2luZyBy ZXF1aXJlcyBHTlUgZmluZCA0LjIuMyBvciBuZXdlci4gIENvbnNpZGVyaW5nIHRoZSB1c3Vh bAotIyBwb3J0YWJpbGl0eSBjb25zdHJhaW50cyBvZiB0aGlzIHNjcmlwdCwgdGhhdCBtYXkg c2VlbSBhIHZlcnkgZGVtYW5kaW5nCi0jIHJlcXVpcmVtZW50LCBidXQgaXQgc2hvdWxkIGJl IG9rLiAgSWdub3JlIGFueSBmYWlsdXJlLCB3aGljaCBpcyBmaW5lLAotIyBzaW5jZSB0aGlz IGlzIG9ubHkgYSBjb252ZW5pZW5jZSB0byBoZWxwIGRldmVsb3BlcnMgYXZvaWQgdGhlIHJl bGF0aXZlbHkKLSMgdW51c3VhbCBjYXNlIGluIHdoaWNoIGEgc3ltbGlua2VkLXRvIC5tNCBm aWxlIGlzIGdpdC1yZW1vdmVkIGZyb20gZ251bGliCi0jIGJldHdlZW4gc3VjY2Vzc2l2ZSBy dW5zIG9mIHRoaXMgc2NyaXB0LgotZmluZCAiJG00X2Jhc2UiICIkc291cmNlX2Jhc2UiIFwK LSAgLWRlcHRoIFwoIC1uYW1lICcqLm00JyAtbyAtbmFtZSAnKi5bY2hdJyBcKSBcCi0gIC10 eXBlIGwgLXh0eXBlIGwgLWRlbGV0ZSA+IC9kZXYvbnVsbCAyPiYxCi0KLSMgSW52b2tlIGF1 dG9yZWNvbmYgd2l0aCAtLWZvcmNlIC0taW5zdGFsbCB0byBlbnN1cmUgdXBncmFkZXMgb2Yg dG9vbHMKLSMgc3VjaCBhcyB5bHdyYXAuCi1BVVRPUkVDT05GRkxBR1M9Ii0tdmVyYm9zZSAt LWluc3RhbGwgLS1mb3JjZSAtSSAkbTRfYmFzZSAkQUNMT0NBTF9GTEFHUyIKLQotIyBTb21l IHN5c3RlbXMgKFJIRUwgNSkgYXJlIHVzaW5nIGFuY2llbnQgYXV0b3Rvb2xzLCBmb3Igd2hp Y2ggdGhlCi0jIC0tbm8tcmVjdXJzaXZlIG9wdGlvbiBoYWQgbm90IGJlZW4gaW52ZW50ZWQu ICBEZXRlY3QgdGhhdCBsYWNrIGFuZAotIyBvbWl0IHRoZSBvcHRpb24gd2hlbiBpdCdzIG5v dCBzdXBwb3J0ZWQuICBGSVhNRSBpbiAyMDE3OiByZW1vdmUgdGhpcwotIyBoYWNrIHdoZW4g UkhFTCA1IGF1dG90b29scyBhcmUgdXBkYXRlZCwgb3Igd2hlbiB0aGV5IGJlY29tZSBpcnJl bGV2YW50LgotY2FzZSAkKCRBVVRPUkVDT05GIC0taGVscCkgaW4KLSAgKi0tbm8tcmVjdXJz aXZlKikgQVVUT1JFQ09ORkZMQUdTPSIkQVVUT1JFQ09ORkZMQUdTIC0tbm8tcmVjdXJzaXZl Ijs7Ci1lc2FjCi0KLSMgVGVsbCBhdXRvcmVjb25mIG5vdCB0byBpbnZva2UgYXV0b3BvaW50 IG9yIGxpYnRvb2xpemU7IHRoZXkgd2VyZSBydW4gYWJvdmUuCi1lY2hvICJydW5uaW5nOiBB VVRPUE9JTlQ9dHJ1ZSBMSUJUT09MSVpFPXRydWUgJEFVVE9SRUNPTkYgJEFVVE9SRUNPTkZG TEFHUyIKLUFVVE9QT0lOVD10cnVlIExJQlRPT0xJWkU9dHJ1ZSAkQVVUT1JFQ09ORiAkQVVU T1JFQ09ORkZMQUdTIFwKLSAgfHwgZGllICJhdXRvcmVjb25mIGZhaWxlZCIKLQotIyBHZXQg c29tZSBleHRyYSBmaWxlcyBmcm9tIGdudWxpYiwgb3ZlcnJpZGluZyBleGlzdGluZyBmaWxl cy4KLWZvciBmaWxlIGluICRnbnVsaWJfZXh0cmFfZmlsZXM7IGRvCi0gIGNhc2UgJGZpbGUg aW4KLSAgICAqL0lOU1RBTEwpIGRzdD1JTlNUQUxMOzsKLSAgICBidWlsZC1hdXgvKikgZHN0 PSRidWlsZF9hdXgvJHtmaWxlI2J1aWxkLWF1eC99OzsKLSAgICAqKSBkc3Q9JGZpbGU7Owot ICBlc2FjCi0gIHN5bWxpbmtfdG9fZGlyICIkR05VTElCX1NSQ0RJUiIgJGZpbGUgJGRzdCBc Ci0gICAgfHwgZGllICJmYWlsZWQgdG8gc3ltbGluayAkZmlsZSIKLWRvbmUKLQotaWYgdGVz dCAkd2l0aF9nZXR0ZXh0ID0geWVzOyB0aGVuCi0gICMgQ3JlYXRlIGdldHRleHQgY29uZmln dXJhdGlvbi4KLSAgZWNobyAiJDA6IENyZWF0aW5nIHBvL01ha2V2YXJzIGZyb20gcG8vTWFr ZXZhcnMudGVtcGxhdGUgLi4uIgotICBybSAtZiBwby9NYWtldmFycwotICBzZWQgJwotICAg IC9eRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMgKj0vcy89LiovPSAnIiRFWFRSQV9MT0NBTEVf Q0FURUdPUklFUyInLwotICAgIC9eQ09QWVJJR0hUX0hPTERFUiAqPS9zLz0uKi89ICciJENP UFlSSUdIVF9IT0xERVIiJy8KLSAgICAvXk1TR0lEX0JVR1NfQUREUkVTUyAqPS9zfD0uKnw9 ICciJE1TR0lEX0JVR1NfQUREUkVTUyInfAotICAgIC9eWEdFVFRFWFRfT1BUSU9OUyAqPS97 Ci0gICAgICBzLyQvIFxcLwotICAgICAgYVwKLSAgICAgICAgICAnIiRYR0VUVEVYVF9PUFRJ T05TIicgJCR7ZW5kX29mX3hnZXR0ZXh0X29wdGlvbnMrfQotICAgIH0KLSAgJyBwby9NYWtl dmFycy50ZW1wbGF0ZSA+cG8vTWFrZXZhcnMgXAotICAgIHx8IGRpZSAnY2Fubm90IGdlbmVy YXRlIHBvL01ha2V2YXJzJwotCi0gICMgSWYgdGhlICdnZXR0ZXh0JyBtb2R1bGUgaXMgaW4g dXNlLCBncmFiIHRoZSBsYXRlc3QgTWFrZWZpbGUuaW4uaW4uCi0gICMgSWYgb25seSB0aGUg J2dldHRleHQtaCcgbW9kdWxlIGlzIGluIHVzZSwgYXNzdW1lIGF1dG9wb2ludCBhbHJlYWR5 Ci0gICMgcHV0IHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgdGhpcyBmaWxlIGludG8gcGxhY2Uu Ci0gIGNhc2UgJGdudWxpYl9tb2R1bGVzIGluCi0gICAgKmdldHRleHQtaCopIDs7Ci0gICAg KmdldHRleHQqKQotICAgICAgY3AgJEdOVUxJQl9TUkNESVIvYnVpbGQtYXV4L3BvL01ha2Vm aWxlLmluLmluIHBvL01ha2VmaWxlLmluLmluIFwKLSAgICAgICAgfHwgZGllICJjYW5ub3Qg Y3JlYXRlIHBvL01ha2VmaWxlLmluLmluIgotICAgICAgOzsKLSAgZXNhYwotCi0gIGlmIHRl c3QgLWQgcnVudGltZS1wbzsgdGhlbgotICAgICMgU2ltaWxhcmx5IGZvciBydW50aW1lLXBv L01ha2V2YXJzLCBidXQgbm90IHF1aXRlIHRoZSBzYW1lLgotICAgIHJtIC1mIHJ1bnRpbWUt cG8vTWFrZXZhcnMKLSAgICBzZWQgJwotICAgICAgL15ET01BSU4gKj0uKi9zLz0uKi89ICci JHBhY2thZ2UiJy1ydW50aW1lLwotICAgICAgL15zdWJkaXIgKj0uKi9zLz0uKi89IHJ1bnRp bWUtcG8vCi0gICAgICAvXk1TR0lEX0JVR1NfQUREUkVTUyAqPS9zLz0uKi89IGJ1Zy0nIiRw YWNrYWdlIidAZ251Lm9yZy8KLSAgICAgIC9eWEdFVFRFWFRfT1BUSU9OUyAqPS97Ci0gICAg ICAgIHMvJC8gXFwvCi0gICAgICAgIGFcCi0gICAgICAgICAgICAnIiRYR0VUVEVYVF9PUFRJ T05TX1JVTlRJTUUiJyAkJHtlbmRfb2ZfeGdldHRleHRfb3B0aW9ucyt9Ci0gICAgICB9Ci0g ICAgJyBwby9NYWtldmFycy50ZW1wbGF0ZSA+cnVudGltZS1wby9NYWtldmFycyBcCi0gICAg fHwgZGllICdjYW5ub3QgZ2VuZXJhdGUgcnVudGltZS1wby9NYWtldmFycycKLQotICAgICMg Q29weSBpZGVudGljYWwgZmlsZXMgZnJvbSBwbyB0byBydW50aW1lLXBvLgotICAgIChjZCBw byAmJiBjcCAtcCBNYWtlZmlsZS5pbi5pbiAqLXF1b3QgKi5oZWFkZXIgKi5zZWQgKi5zaW4g Li4vcnVudGltZS1wbykKLSAgZmkKLWZpCi0KLWJvb3RzdHJhcF9lcGlsb2d1ZQotCi1lY2hv ICIkMDogZG9uZS4gIE5vdyB5b3UgY2FuIHJ1biAnLi9jb25maWd1cmUnLiIKLQotIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgTG9jYWwgVmFyaWFibGVzOgotIyBldmFsOiAoYWRk LWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgJ3RpbWUtc3RhbXApCi0jIHRpbWUtc3RhbXAtc3Rh cnQ6ICJzY3JpcHR2ZXJzaW9uPSIKLSMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0l MDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDMCIKLSMgdGltZS1zdGFt cC1lbmQ6ICI7ICMgVVRDIgotIyBFbmQ6CithdXRvZ2VuICIkQCIKZGlmZiAtLWdpdCBhL2F1 dG9wdWxsLnNoIGIvYXV0b3B1bGwuc2gKaW5kZXggZmZiNGJhN2MuLjA0ZjYwNjM0IDEwMDc1 NQotLS0gYS9hdXRvcHVsbC5zaAorKysgYi9hdXRvcHVsbC5zaApAQCAtMiw3ICsyLDcgQEAK ICMgQ29udmVuaWVuY2Ugc2NyaXB0IGZvciBmZXRjaGluZyBhdXhpbGlhcnkgZmlsZXMgdGhh dCBhcmUgb21pdHRlZCBmcm9tCiAjIHRoZSB2ZXJzaW9uIGNvbnRyb2wgcmVwb3NpdG9yeSBv ZiB0aGlzIHBhY2thZ2UuCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMy0yMDI1IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQpAQCAtMjgsMjQ2ICsyOCwxMCBAQAogIyBBbHRlcm5hdGl2ZWx5LCB5b3Ug Y2FuIHVzZSBhbiBhdXRvcHVsbC5zaCBzY3JpcHQgdGhhdCBpcyBzcGVjaWZpYwogIyB0byB5 b3VyIHBhY2thZ2UuCiAKLXNjcmlwdHZlcnNpb249MjAyMi0wNy0yNC4xNTsgIyBVVEMKLQog bWU9IiQwIgogbWVkaXI9YGRpcm5hbWUgIiRtZSJgCiAKICMgUmVhZCB0aGUgZnVuY3Rpb24g bGlicmFyeSBhbmQgdGhlIGNvbmZpZ3VyYXRpb24uCiAuICIkbWVkaXIiL2Jvb3RzdHJhcC1m dW5jbGliLnNoCiAKLSMgRW5zdXJlIHRoYXQgQ0RQQVRIIGlzIG5vdCBzZXQuICBPdGhlcndp c2UsIHRoZSBvdXRwdXQgZnJvbSBjZAotIyB3b3VsZCBjYXVzZSB0cm91YmxlIGluIGF0IGxl YXN0IG9uZSB1c2UgYmVsb3cuCi0odW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYg dW5zZXQgQ0RQQVRICi0KLXVzYWdlKCkgewotICBjYXQgPDxFT0YKLVVzYWdlOiAkbWUgW09Q VElPTl0uLi4KLUJvb3RzdHJhcCB0aGlzIHBhY2thZ2UgZnJvbSB0aGUgY2hlY2tlZC1vdXQg c291cmNlcy4KLQotT3B0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICBHTlVMSUJf U1JDRElSICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsb2NhbCBkaXJlY3Rvcnkgd2hlcmUg Z251bGliCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzIHJlc2lkZS4gIFVz ZSB0aGlzIGlmIHlvdSBhbHJlYWR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZl IGdudWxpYiBzb3VyY2VzIG9uIHlvdXIgbWFjaGluZSwgYW5kCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICB5b3Ugd2FudCB0byB1c2UgdGhlc2Ugc291cmNlcy4KLSAgR05VTElCX1JF RkRJUiAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbG9jYWwgZGlyZWN0b3J5IHdoZXJlIGEg Z251bGliCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5ICh3aXRoIGEg LmdpdCBzdWJkaXJlY3RvcnkpIHJlc2lkZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICBVc2UgdGhpcyBpZiB5b3UgYWxyZWFkeSBoYXZlIGdudWxpYiBzb3VyY2VzCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICBhbmQgaGlzdG9yeSBvbiB5b3VyIG1hY2hpbmUsIGFuZCBk byBub3Qgd2FudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gd2FzdGUgeW91ciBi YW5kd2lkdGggZG93bmxvYWRpbmcgdGhlbSBhZ2Fpbi4KLSAgR05VTElCX1VSTCAgICAgICAg ICAgICAgIENsb25lYWJsZSBVUkwgb2YgdGhlIGdudWxpYiByZXBvc2l0b3J5LgotCi1PcHRp b25zOgotICAtLWJvb3RzdHJhcC1zeW5jICAgICAgICAgaWYgdGhpcyBib290c3RyYXAgc2Ny aXB0IGlzIG5vdCBpZGVudGljYWwgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo ZSB2ZXJzaW9uIGluIHRoZSBsb2NhbCBnbnVsaWIgc291cmNlcywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVwZGF0ZSB0aGlzIHNjcmlwdCwgYW5kIHRoZW4gcmVzdGFydCBpdCB3 aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAvYmluL3NoIG9yIHRoZSBzaGVsbCBc JENPTkZJR19TSEVMTAotICAtLW5vLWJvb3RzdHJhcC1zeW5jICAgICAgZG8gbm90IGNoZWNr IHdoZXRoZXIgYm9vdHN0cmFwIGlzIG91dCBvZiBzeW5jCi0gIC0tZm9yY2UgICAgICAgICAg ICAgICAgICBhdHRlbXB0IHRvIGJvb3RzdHJhcCBldmVuIGlmIHRoZSBzb3VyY2VzIHNlZW0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCB0byBoYXZlIGJlZW4gY2hlY2tlZCBv dXQKLSAgLS1uby1naXQgICAgICAgICAgICAgICAgIGRvIG5vdCB1c2UgZ2l0IHRvIHVwZGF0 ZSBnbnVsaWIuICBSZXF1aXJlcyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBc JEdOVUxJQl9TUkNESVIgb3IgdGhlIC0tZ251bGliLXNyY2RpciBvcHRpb24KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBvaW50cyB0byBhIGdudWxpYiByZXBvc2l0b3J5IHdpdGgg dGhlIGNvcnJlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uCi0gIC0t c2tpcC1wbyAgICAgICAgICAgICAgICBkbyBub3QgZG93bmxvYWQgcG8gZmlsZXMKLUVPRgot ICBib290c3RyYXBfcHJpbnRfb3B0aW9uX3VzYWdlX2hvb2sKLSAgY2F0IDw8RU9GCi1JZiB0 aGUgZmlsZSBib290c3RyYXAuY29uZiBleGlzdHMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFz IHRoaXMgc2NyaXB0LCBpdHMKLWNvbnRlbnRzIGFyZSByZWFkIGFzIHNoZWxsIHZhcmlhYmxl cyB0byBjb25maWd1cmUgdGhlIGJvb3RzdHJhcC4KLQotRm9yIGJ1aWxkIHByZXJlcXVpc2l0 ZXMsIGVudmlyb25tZW50IHZhcmlhYmxlcyBsaWtlIFwkQVVUT0NPTkYgYW5kIFwkQU1UQVIK LWFyZSBob25vcmVkLgotCi1HbnVsaWIgc291cmNlcyBjYW4gYmUgZmV0Y2hlZCBpbiB2YXJp b3VzIHdheXM6Ci0KLSAqIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBHTlVMSUJfU1JD RElSIGlzIHNldCAoZWl0aGVyIGFzIGFuCi0gICBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB2 aWEgdGhlIC0tZ251bGliLXNyY2RpciBvcHRpb24pLCB0aGVuIHNvdXJjZXMKLSAgIGFyZSBm ZXRjaGVkIGZyb20gdGhhdCBsb2NhbCBkaXJlY3RvcnkuICBJZiBpdCBpcyBhIGdpdCByZXBv c2l0b3J5IGFuZAotICAgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgR05VTElCX1JFVklT SU9OIGlzIHNldCBpbiBib290c3RyYXAuY29uZiwKLSAgIHRoZW4gdGhhdCByZXZpc2lvbiBp cyBjaGVja2VkIG91dC4KLQotICogT3RoZXJ3aXNlLCBpZiB0aGlzIHBhY2thZ2UgaXMgaW4g YSBnaXQgcmVwb3NpdG9yeSB3aXRoIGEgJ2dudWxpYicKLSAgIHN1Ym1vZHVsZSBjb25maWd1 cmVkLCB0aGVuIHRoYXQgc3VibW9kdWxlIGlzIGluaXRpYWxpemVkIGFuZCB1cGRhdGVkCi0g ICBhbmQgc291cmNlcyBhcmUgZmV0Y2hlZCBmcm9tIHRoZXJlLiAgSWYgR05VTElCX1JFRkRJ UiBpcyBzZXQgKGVpdGhlcgotICAgYXMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgb3Igdmlh IHRoZSAtLWdudWxpYi1yZWZkaXIgb3B0aW9uKSBhbmQgaXMKLSAgIGEgZ2l0IHJlcG9zaXRv cnksIHRoZW4gaXQgaXMgdXNlZCBhcyBhIHJlZmVyZW5jZS4KLQotICogT3RoZXJ3aXNlLCBp ZiB0aGUgJ2dudWxpYicgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0LCBHbnVsaWIgc291cmNl cwotICAgYXJlIGNsb25lZCBpbnRvIHRoYXQgZGlyZWN0b3J5IHVzaW5nIGdpdCBmcm9tIFwk R05VTElCX1VSTCwgZGVmYXVsdGluZwotICAgdG8gJGRlZmF1bHRfZ251bGliX3VybC4KLSAg IElmIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIEdOVUxJQl9SRVZJU0lPTiBpcyBzZXQg aW4gYm9vdHN0cmFwLmNvbmYsCi0gICB0aGVuIHRoYXQgcmV2aXNpb24gaXMgY2hlY2tlZCBv dXQuCi0KLSAqIE90aGVyd2lzZSwgdGhlIGV4aXN0aW5nIEdudWxpYiBzb3VyY2VzIGluIHRo ZSAnZ251bGliJyBkaXJlY3RvcnkgYXJlCi0gICB1c2VkLiAgSWYgaXQgaXMgYSBnaXQgcmVw b3NpdG9yeSBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUKLSAgIEdOVUxJQl9SRVZJ U0lPTiBpcyBzZXQgaW4gYm9vdHN0cmFwLmNvbmYsIHRoZW4gdGhhdCByZXZpc2lvbiBpcwot ICAgY2hlY2tlZCBvdXQuCi0KLUlmIHlvdSBtYWludGFpbiBhIHBhY2thZ2UgYW5kIHdhbnQg dG8gcGluIGEgcGFydGljdWxhciByZXZpc2lvbiBvZiB0aGUKLUdudWxpYiBzb3VyY2VzIHRo YXQgaGFzIGJlZW4gdGVzdGVkIHdpdGggeW91ciBwYWNrYWdlLCB0aGVuIHRoZXJlIGFyZQot dHdvIHBvc3NpYmxlIGFwcHJvYWNoZXM6IGVpdGhlciBjb25maWd1cmUgYSAnZ251bGliJyBz dWJtb2R1bGUgd2l0aCB0aGUKLWFwcHJvcHJpYXRlIHJldmlzaW9uLCBvciBzZXQgR05VTElC X1JFVklTSU9OIChhbmQgaWYgbmVjZXNzYXJ5Ci1HTlVMSUJfVVJMKSBpbiBib290c3RyYXAu Y29uZi4KLQotUnVubmluZyB3aXRob3V0IGFyZ3VtZW50cyB3aWxsIHN1ZmZpY2UgaW4gbW9z dCBjYXNlcy4KLUVPRgotfQotCi0jIFBhcnNlIG9wdGlvbnMuCi0KLSMgVXNlIGdpdCB0byB1 cGRhdGUgZ251bGliIHNvdXJjZXMKLXVzZV9naXQ9dHJ1ZQotCi1mb3Igb3B0aW9uCi1kbwot ICBjYXNlICRvcHRpb24gaW4KLSAgLS1oZWxwKQotICAgIHVzYWdlCi0gICAgZXhpdDs7Ci0g IC0tdmVyc2lvbikKLSAgICBzZXQgLWUKLSAgICBlY2hvICJhdXRvcHVsbC5zaCAkc2NyaXB0 dmVyc2lvbiIKLSAgICBlY2hvICIkY29weXJpZ2h0IgotICAgIGV4aXQgMAotICAgIDs7Ci0g IC0tc2tpcC1wbykKLSAgICBTS0lQX1BPPXQ7OwotICAtLWZvcmNlKQotICAgIGNoZWNrb3V0 X29ubHlfZmlsZT07OwotICAtLWJvb3RzdHJhcC1zeW5jKQotICAgIGJvb3RzdHJhcF9zeW5j PXRydWU7OwotICAtLW5vLWJvb3RzdHJhcC1zeW5jKQotICAgIGJvb3RzdHJhcF9zeW5jPWZh bHNlOzsKLSAgLS1uby1naXQpCi0gICAgdXNlX2dpdD1mYWxzZTs7Ci0gICopCi0gICAgYm9v dHN0cmFwX29wdGlvbl9ob29rICRvcHRpb24gfHwgZGllICIkb3B0aW9uOiB1bmtub3duIG9w dGlvbiI7OwotICBlc2FjCi1kb25lCi0KLSR1c2VfZ2l0IHx8IHRlc3QgLW4gIiRHTlVMSUJf U1JDRElSIiBcCi0gIHx8IGRpZSAiRXJyb3I6IC0tbm8tZ2l0IHJlcXVpcmVzIFwkR05VTElC X1NSQ0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciAtLWdudWxpYi1zcmNkaXIgb3B0aW9u IgotdGVzdCAteiAiJEdOVUxJQl9TUkNESVIiIHx8IHRlc3QgLWQgIiRHTlVMSUJfU1JDRElS IiBcCi0gIHx8IGRpZSAiRXJyb3I6IFwkR05VTElCX1NSQ0RJUiBlbnZpcm9ubWVudCB2YXJp YWJsZSBvciAtLWdudWxpYi1zcmNkaXIgb3B0aW9uIGlzIHNwZWNpZmllZCwgYnV0IGRvZXMg bm90IGRlbm90ZSBhIGRpcmVjdG9yeSIKLQotaWYgdGVzdCAtbiAiJGNoZWNrb3V0X29ubHlf ZmlsZSIgJiYgdGVzdCAhIC1yICIkY2hlY2tvdXRfb25seV9maWxlIjsgdGhlbgotICBkaWUg IlJ1bm5pbmcgdGhpcyBzY3JpcHQgZnJvbSBhIG5vbi1jaGVja2VkLW91dCBkaXN0cmlidXRp b24gaXMgcmlza3kuIgotZmkKLQotY2hlY2tfYnVpbGRfcHJlcmVxdWlzaXRlcyAkdXNlX2dp dAotCi1pZiAkdXNlX2dudWxpYiB8fCAkYm9vdHN0cmFwX3N5bmM7IHRoZW4KLSAgcHJlcGFy ZV9HTlVMSUJfU1JDRElSCi0gIGlmICRib290c3RyYXBfc3luYzsgdGhlbgotICAgIHVwZ3Jh ZGVfYm9vdHN0cmFwCi0gIGZpCi1maQotCi0jIEZpbmQgc2hhMXN1bSwgbmFtZWQgZ3NoYTFz dW0gb24gTWFjUG9ydHMsIHNoYXN1bSBvbiBNYWMgT1MgWCAxMC42LgotIyBBbHNvIGZpbmQg dGhlIGNvbXBhdGlibGUgc2hhMSB1dGlsaXR5IG9uIHRoZSBCU0RzCi1pZiB0ZXN0IHgiJFNL SVBfUE8iID0geDsgdGhlbgotICBmaW5kX3Rvb2wgU0hBMVNVTSBzaGExc3VtIGdzaGExc3Vt IHNoYXN1bSBzaGExCi1maQotCi0jIFNlZSBpZiB3ZSBjYW4gdXNlIGdudWxpYidzIGdpdC1t ZXJnZS1jaGFuZ2Vsb2cgbWVyZ2UgZHJpdmVyLgotaWYgJHVzZV9naXQgJiYgdGVzdCAtZCAu Z2l0ICYmIGNoZWNrX2V4aXN0cyBnaXQ7IHRoZW4KLSAgaWYgZ2l0IGNvbmZpZyBtZXJnZS5t ZXJnZS1jaGFuZ2Vsb2cuZHJpdmVyID4vZGV2L251bGwgOyB0aGVuCi0gICAgOgotICBlbGlm IGNoZWNrX2V4aXN0cyBnaXQtbWVyZ2UtY2hhbmdlbG9nOyB0aGVuCi0gICAgZWNobyAiJDA6 IGluaXRpYWxpemluZyBnaXQtbWVyZ2UtY2hhbmdlbG9nIGRyaXZlciIKLSAgICBnaXQgY29u ZmlnIG1lcmdlLm1lcmdlLWNoYW5nZWxvZy5uYW1lICdHTlUtc3R5bGUgQ2hhbmdlTG9nIG1l cmdlIGRyaXZlcicKLSAgICBnaXQgY29uZmlnIG1lcmdlLm1lcmdlLWNoYW5nZWxvZy5kcml2 ZXIgJ2dpdC1tZXJnZS1jaGFuZ2Vsb2cgJU8gJUEgJUInCi0gIGVsc2UKLSAgICBlY2hvICIk MDogY29uc2lkZXIgaW5zdGFsbGluZyBnaXQtbWVyZ2UtY2hhbmdlbG9nIGZyb20gZ251bGli IgotICBmaQotZmkKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHZXQgdHJh bnNsYXRpb25zLiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kb3dubG9hZF9w b19maWxlcygpIHsKLSAgc3ViZGlyPSQxCi0gIGRvbWFpbj0kMgotICBlY2hvICIkbWU6IGdl dHRpbmcgdHJhbnNsYXRpb25zIGludG8gJHN1YmRpciBmb3IgJGRvbWFpbi4uLiIKLSAgY21k PSQocHJpbnRmICIkcG9fZG93bmxvYWRfY29tbWFuZF9mb3JtYXQiICIkc3ViZGlyIiAiJGRv bWFpbiIpCi0gIGV2YWwgIiRjbWQiCi19Ci0KLSMgTWlycm9yIC5wbyBmaWxlcyB0byAkcG9f ZGlyLy5yZWZlcmVuY2UgYW5kIGNvcHkgb25seSB0aGUgbmV3Ci0jIG9yIG1vZGlmaWVkIG9u ZXMgaW50byAkcG9fZGlyLiAgQWxzbyB1cGRhdGUgJHBvX2Rpci9MSU5HVUFTLgotIyBOb3Rl IHBvIGZpbGVzIHRoYXQgZXhpc3QgbG9jYWxseSBvbmx5IGFyZSBsZWZ0IGluICRwb19kaXIg YnV0IHdpbGwKLSMgbm90IGJlIGluY2x1ZGVkIGluIExJTkdVQVMgYW5kIGhlbmNlIHdpbGwg bm90IGJlIGRpc3RyaWJ1dGVkLgotdXBkYXRlX3BvX2ZpbGVzKCkgewotICAjIERpcmVjdG9y eSBjb250YWluaW5nIHByaW1hcnkgLnBvIGZpbGVzLgotICAjIE92ZXJ3cml0ZSB0aGVtIG9u bHkgd2hlbiB3ZSdyZSBzdXJlIGEgLnBvIGZpbGUgaXMgbmV3LgotICBwb19kaXI9JDEKLSAg ZG9tYWluPSQyCi0KLSAgIyBNaXJyb3IgKi5wbyBmaWxlcyBpbnRvIHRoaXMgZGlyLgotICAj IFVzdWFsbHkgY29udGFpbnMgKi5zMSBjaGVja3N1bSBmaWxlcy4KLSAgcmVmX3BvX2Rpcj0i JHBvX2Rpci8ucmVmZXJlbmNlIgotCi0gIHRlc3QgLWQgJHJlZl9wb19kaXIgfHwgbWtkaXIg JHJlZl9wb19kaXIgfHwgcmV0dXJuCi0gIGRvd25sb2FkX3BvX2ZpbGVzICRyZWZfcG9fZGly ICRkb21haW4gXAotICAgICYmIGxzICIkcmVmX3BvX2RpciIvKi5wbyAyPi9kZXYvbnVsbCB8 Ci0gICAgICBzZWQgJ3N8LiovfHw7IHN8XC5wbyR8fCcgPiAiJHBvX2Rpci9MSU5HVUFTIiB8 fCByZXR1cm4KLQotICBsYW5ncz0kKGNkICRyZWZfcG9fZGlyICYmIGVjaG8gKi5wbyB8IHNl ZCAncy9cLnBvLy9nJykKLSAgdGVzdCAiJGxhbmdzIiA9ICcqJyAmJiBsYW5ncz14Ci0gIGZv ciBwbyBpbiAkbGFuZ3M7IGRvCi0gICAgY2FzZSAkcG8gaW4geCkgY29udGludWU7OyBlc2Fj Ci0gICAgbmV3X3BvPSIkcmVmX3BvX2Rpci8kcG8ucG8iCi0gICAgY2tzdW1fZmlsZT0iJHJl Zl9wb19kaXIvJHBvLnMxIgotICAgIGlmICEgdGVzdCAtZiAiJGNrc3VtX2ZpbGUiIHx8Ci0g ICAgICAgICEgdGVzdCAtZiAiJHBvX2Rpci8kcG8ucG8iIHx8Ci0gICAgICAgICEgJFNIQTFT VU0gLWMgIiRja3N1bV9maWxlIiA8ICIkbmV3X3BvIiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVu Ci0gICAgICBlY2hvICIkbWU6IHVwZGF0ZWQgJHBvX2Rpci8kcG8ucG8uLi4iCi0gICAgICBj cCAiJG5ld19wbyIgIiRwb19kaXIvJHBvLnBvIiBcCi0gICAgICAgICAgJiYgJFNIQTFTVU0g PCAiJG5ld19wbyIgPiAiJGNrc3VtX2ZpbGUiIHx8IHJldHVybgotICAgIGZpCi0gIGRvbmUK LX0KLQotY2FzZSAkU0tJUF9QTyBpbgotJycpCi0gIGlmIHRlc3QgLWQgcG87IHRoZW4KLSAg ICB1cGRhdGVfcG9fZmlsZXMgcG8gJHBhY2thZ2UgfHwgZXhpdAotICBmaQotCi0gIGlmIHRl c3QgLWQgcnVudGltZS1wbzsgdGhlbgotICAgIHVwZGF0ZV9wb19maWxlcyBydW50aW1lLXBv ICRwYWNrYWdlLXJ1bnRpbWUgfHwgZXhpdAotICBmaTs7Ci1lc2FjCi0KLSMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLQotYm9vdHN0cmFwX3Bvc3RfcHVsbF9ob29rIFwKLSAgfHwgZGll ICJib290c3RyYXBfcG9zdF9wdWxsX2hvb2sgZmFpbGVkIgotCi0jIERvbid0IHByb2NlZWQg aWYgdGhlcmUgYXJlIHVuaW5pdGlhbGl6ZWQgc3VibW9kdWxlcy4gIEluIHBhcnRpY3VsYXIs Ci0jIGF1dG9nZW4uc2ggd2lsbCByZW1vdmUgZGFuZ2xpbmcgbGlua3MsIHdoaWNoIG1pZ2h0 IGJlIGxpbmtzIGludG8KLSMgdW5pbml0aWFsaXplZCBzdWJtb2R1bGVzLgotIyBCdXQgaXQn cyBPSyBpZiB0aGUgJ2dudWxpYicgc3VibW9kdWxlIGlzIHVuaW5pdGlhbGl6ZWQsIGFzIGxv bmcgYXMKLSMgR05VTElCX1NSQ0RJUiBpcyBzZXQuCi1pZiAkdXNlX2dpdDsgdGhlbgotICAj IFVuaW5pdGlhbGl6ZWQgc3VibW9kdWxlcyBhcmUgbGlzdGVkIHdpdGggYW4gaW5pdGlhbCBk YXNoLgotICB1bmluaXRpYWxpemVkPWBnaXQgc3VibW9kdWxlIHwgZ3JlcCAnXi0nIHwgYXdr ICd7IHByaW50ICQyIH0nYAotICBpZiB0ZXN0IC1uICIkR05VTElCX1NSQ0RJUiI7IHRoZW4K LSAgICB1bmluaXRpYWxpemVkPWBlY2hvICIkdW5pbml0aWFsaXplZCIgfCBncmVwIC12ICde Z251bGliJCdgCi0gIGZpCi0gIGlmIHRlc3QgLW4gIiR1bmluaXRpYWxpemVkIjsgdGhlbgot ICAgIGRpZSAiU29tZSBnaXQgc3VibW9kdWxlcyBhcmUgbm90IGluaXRpYWxpemVkOiAiYGVj aG8gIiR1bmluaXRpYWxpemVkIiB8IHRyICdcbicgJywnIHwgc2VkIC1lICdzfCwkfC58J2Ai IEVpdGhlciB1c2Ugb3B0aW9uICctLW5vLWdpdCcsIG9yIHJ1biAnZ2l0IHN1Ym1vZHVsZSB1 cGRhdGUgLS1pbml0JyBhbmQgYm9vdHN0cmFwIGFnYWluLiIKLSAgZmkKLWZpCi0KLWVjaG8g IiQwOiBkb25lLiAgTm93IHlvdSBjYW4gcnVuICcuL2F1dG9nZW4uc2gnLiIKLQotIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgTG9jYWwgVmFyaWFibGVzOgotIyBldmFsOiAoYWRk LWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgJ3RpbWUtc3RhbXApCi0jIHRpbWUtc3RhbXAtc3Rh cnQ6ICJzY3JpcHR2ZXJzaW9uPSIKLSMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0l MDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDMCIKLSMgdGltZS1zdGFt cC1lbmQ6ICI7ICMgVVRDIgotIyBFbmQ6CithdXRvcHVsbCAiJEAiCmRpZmYgLS1naXQgYS9i b290c3RyYXAgYi9ib290c3RyYXAKaW5kZXggY2Y4ZDAwN2YuLjU3ODBhZTVhIDEwMDc1NQot LS0gYS9ib290c3RyYXAKKysrIGIvYm9vdHN0cmFwCkBAIC0xLDcgKzEsOSBAQAogIyEgL2Jp bi9zaAogIyBCb290c3RyYXAgdGhpcyBwYWNrYWdlIGZyb20gY2hlY2tlZC1vdXQgc291cmNl cy4KIAotIyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KK3NjcmlwdHZlcnNpb249MjAyNC0wNy0wNC4xMDsgIyBVVEMKKworIyBDb3B5 cmlnaHQgKEMpIDIwMDMtMjAyNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMK ICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTI2LDggKzI4LDYgQEAK IAogIyBQbGVhc2UgcmVwb3J0IGJ1Z3Mgb3IgcHJvcG9zZSBwYXRjaGVzIHRvIGJ1Zy1nbnVs aWJAZ251Lm9yZy4KIAotc2NyaXB0dmVyc2lvbj0yMDIyLTA3LTI5LjIzOyAjIFVUQwotCiBt ZT0iJDAiCiBtZWRpcj1gZGlybmFtZSAiJG1lImAKIApAQCAtNDMsMzUgKzQzLDU1IEBAIE9w dGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgR05VTElCX1NSQ0RJUiAgICAgICAg ICAgIFNwZWNpZmllcyB0aGUgbG9jYWwgZGlyZWN0b3J5IHdoZXJlIGdudWxpYgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgc291cmNlcyByZXNpZGUuICBVc2UgdGhpcyBpZiB5b3Ug YWxyZWFkeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBnbnVsaWIgc291cmNl cyBvbiB5b3VyIG1hY2hpbmUsIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8g bm90IHdhbnQgdG8gd2FzdGUgeW91ciBiYW5kd2lkdGggZG93bmxvYWRpbmcKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRoZW0gYWdhaW4uCi0gIEdOVUxJQl9VUkwgICAgICAgICAg ICAgICBDbG9uZWFibGUgVVJMIG9mIHRoZSBnbnVsaWIgcmVwb3NpdG9yeS4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IHRvIHVzZSB0aGVzZSBzb3VyY2VzLgorICBH TlVMSUJfUkVGRElSICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsb2NhbCBkaXJlY3Rvcnkg d2hlcmUgYSBnbnVsaWIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkg KHdpdGggYSAuZ2l0IHN1YmRpcmVjdG9yeSkgcmVzaWRlcy4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFVzZSB0aGlzIGlmIHlvdSBhbHJlYWR5IGhhdmUgZ251bGliIHNvdXJjZXMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBoaXN0b3J5IG9uIHlvdXIgbWFjaGlu ZSwgYW5kIGRvIG5vdCB3YW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB3YXN0 ZSB5b3VyIGJhbmR3aWR0aCBkb3dubG9hZGluZyB0aGVtIGFnYWluLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgT25seSB1c2VkIGZvciBwaGFzZSAxICgtLXB1bGwpLgorICBHTlVM SUJfVVJMICAgICAgICAgICAgICAgVVJMIG9mIHRoZSBnbnVsaWIgcmVwb3NpdG9yeS4gIFRo ZSBkZWZhdWx0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdF9nbnVs aWJfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgR251bGliJ3Mg dXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ubHkg dXNlZCBmb3IgcGhhc2UgMSAoLS1wdWxsKS4KIAogT3B0aW9uczoKLSAgLS1nbnVsaWItc3Jj ZGlyPURJUk5BTUUgIHNwZWNpZnkgdGhlIGxvY2FsIGRpcmVjdG9yeSB3aGVyZSBnbnVsaWIK KworICAtLXB1bGwgICAgICAgICAgICAgICAgICAgRG8gcGhhc2UgMTogUHVsbCBmaWxlcyBm cm9tIHRoZSBuZXR3b3JrLgorICAtLWdlbiAgICAgICAgICAgICAgICAgICAgRG8gcGhhc2Ug MjogR2VuZXJhdGUgZmlsZXMgZnJvbSBsb2NhbCBmaWxlcworICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG5vIG5ldHdvcmsgYWNjZXNzKS4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIChUaGUgZGVmYXVsdCBpcyB0byBkbyBib3RoIHBoYXNlcy4pCisKKyAgLS1nbnVsaWIt c3JjZGlyPURJUk5BTUUgIFNwZWNpZmllcyB0aGUgbG9jYWwgZGlyZWN0b3J5IHdoZXJlIGdu dWxpYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlcyByZXNpZGUuICBVc2Ug dGhpcyBpZiB5b3UgYWxyZWFkeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBn bnVsaWIgc291cmNlcyBvbiB5b3VyIG1hY2hpbmUsIGFuZAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgeW91IHdhbnQgdG8gdXNlIHRoZXNlIHNvdXJjZXMuICBEZWZhdWx0cwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgdG8gXCRHTlVMSUJfU1JDRElSCi0gIC0tZ251bGli LXJlZmRpcj1ESVJOQU1FICBzcGVjaWZ5IHRoZSBsb2NhbCBkaXJlY3Rvcnkgd2hlcmUgYSBn bnVsaWIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIFwkR05VTElCX1NSQ0RJUi4K KyAgLS1nbnVsaWItcmVmZGlyPURJUk5BTUUgIFNwZWNpZmllcyB0aGUgbG9jYWwgZGlyZWN0 b3J5IHdoZXJlIGEgZ251bGliCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0 b3J5ICh3aXRoIGEgLmdpdCBzdWJkaXJlY3RvcnkpIHJlc2lkZXMuCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBVc2UgdGhpcyBpZiB5b3UgYWxyZWFkeSBoYXZlIGdudWxpYiBzb3Vy Y2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaGlzdG9yeSBvbiB5b3VyIG1h Y2hpbmUsIGFuZCBkbyBub3Qgd2FudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8g d2FzdGUgeW91ciBiYW5kd2lkdGggZG93bmxvYWRpbmcgdGhlbSBhZ2Fpbi4KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIFwkR05VTElCX1JFRkRJUgotICAtLWJv b3RzdHJhcC1zeW5jICAgICAgICAgaWYgdGhpcyBib290c3RyYXAgc2NyaXB0IGlzIG5vdCBp ZGVudGljYWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIFwk R05VTElCX1JFRkRJUi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ubHkgdXNlZCBm b3IgcGhhc2UgMSAoLS1wdWxsKS4KKworICAtLWJvb3RzdHJhcC1zeW5jICAgICAgICAgSWYg dGhpcyBib290c3RyYXAgc2NyaXB0IGlzIG5vdCBpZGVudGljYWwgdG8KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoZSB2ZXJzaW9uIGluIHRoZSBsb2NhbCBnbnVsaWIgc291cmNl cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSB0aGlzIHNjcmlwdCwgYW5k IHRoZW4gcmVzdGFydCBpdCB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAvYmlu L3NoIG9yIHRoZSBzaGVsbCBcJENPTkZJR19TSEVMTAotICAtLW5vLWJvb3RzdHJhcC1zeW5j ICAgICAgZG8gbm90IGNoZWNrIHdoZXRoZXIgYm9vdHN0cmFwIGlzIG91dCBvZiBzeW5jCi0g IC0tY29weSAgICAgICAgICAgICAgICAgICBjb3B5IGZpbGVzIGluc3RlYWQgb2YgY3JlYXRp bmcgc3ltYm9saWMgbGlua3MKLSAgLS1mb3JjZSAgICAgICAgICAgICAgICAgIGF0dGVtcHQg dG8gYm9vdHN0cmFwIGV2ZW4gaWYgdGhlIHNvdXJjZXMgc2VlbQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgbm90IHRvIGhhdmUgYmVlbiBjaGVja2VkIG91dAotICAtLW5vLWdpdCAg ICAgICAgICAgICAgICAgZG8gbm90IHVzZSBnaXQgdG8gdXBkYXRlIGdudWxpYi4gIFJlcXVp cmVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC9iaW4vc2ggb3IgdGhlIHNo ZWxsIFwkQ09ORklHX1NIRUxMLgorICAtLW5vLWJvb3RzdHJhcC1zeW5jICAgICAgRG8gbm90 IGNoZWNrIHdoZXRoZXIgYm9vdHN0cmFwIGlzIG91dCBvZiBzeW5jLgorCisgIC0tY29weSAg ICAgICAgICAgICAgICAgICBDb3B5IGZpbGVzIGluc3RlYWQgb2YgY3JlYXRpbmcgc3ltYm9s aWMgbGlua3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IHVzZWQgZm9yIHBo YXNlIDIgKC0tZ2VuKS4KKyAgLS1mb3JjZSAgICAgICAgICAgICAgICAgIEF0dGVtcHQgdG8g Ym9vdHN0cmFwIGV2ZW4gaWYgdGhlIHNvdXJjZXMgc2VlbQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgbm90IHRvIGhhdmUgYmVlbiBjaGVja2VkIG91dC4KKyAgLS1uby1naXQgICAg ICAgICAgICAgICAgIERvIG5vdCB1c2UgZ2l0IHRvIHVwZGF0ZSBnbnVsaWIuICBSZXF1aXJl cyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcJEdOVUxJQl9TUkNESVIgb3Ig dGhlIC0tZ251bGliLXNyY2RpciBvcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBvaW50cyB0byBhIGdudWxpYiByZXBvc2l0b3J5IHdpdGggdGhlIGNvcnJlY3QKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uCi0gIC0tc2tpcC1wbyAgICAgICAgICAg ICAgICBkbyBub3QgZG93bmxvYWQgcG8gZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldmlzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT25seSB1c2VkIGZv ciBwaGFzZSAxICgtLXB1bGwpLgorICAtLXNraXAtcG8gICAgICAgICAgICAgICAgRG8gbm90 IGRvd25sb2FkICoucG8gZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5 IHVzZWQgZm9yIHBoYXNlIDEgKC0tcHVsbCkuCiBFT0YKICAgYm9vdHN0cmFwX3ByaW50X29w dGlvbl91c2FnZV9ob29rCiAgIGNhdCA8PEVPRgpAQCAtODMsMTEgKzEwMywxMSBAQCBhcmUg aG9ub3JlZC4KIAogR251bGliIHNvdXJjZXMgY2FuIGJlIGZldGNoZWQgaW4gdmFyaW91cyB3 YXlzOgogCi0gKiBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgR05VTElCX1NSQ0RJUiBp cyBzZXQgKGVpdGhlciBhcyBhbgotICAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdmlhIHRo ZSAtLWdudWxpYi1zcmNkaXIgb3B0aW9uKSwgdGhlbiBzb3VyY2VzCi0gICBhcmUgZmV0Y2hl ZCBmcm9tIHRoYXQgbG9jYWwgZGlyZWN0b3J5LiAgSWYgaXQgaXMgYSBnaXQgcmVwb3NpdG9y eSBhbmQKLSAgIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIEdOVUxJQl9SRVZJU0lPTiBp cyBzZXQgaW4gYm9vdHN0cmFwLmNvbmYsCi0gICB0aGVuIHRoYXQgcmV2aXNpb24gaXMgY2hl Y2tlZCBvdXQuCisgKiBJZiBHTlVMSUJfU1JDRElSIGlzIHNldCAoZWl0aGVyIGFzIGFuIGVu dmlyb25tZW50IHZhcmlhYmxlIG9yIHZpYSB0aGUKKyAgIC0tZ251bGliLXNyY2RpciBvcHRp b24pLCB0aGVuIHNvdXJjZXMgYXJlIGZldGNoZWQgZnJvbSB0aGF0IGxvY2FsCisgICBkaXJl Y3RvcnkuICBJZiBpdCBpcyBhIGdpdCByZXBvc2l0b3J5IGFuZCB0aGUgY29uZmlndXJhdGlv biB2YXJpYWJsZQorICAgR05VTElCX1JFVklTSU9OIGlzIHNldCBpbiBib290c3RyYXAuY29u ZiwgdGhlbiB0aGF0IHJldmlzaW9uIGlzCisgICBjaGVja2VkIG91dC4KIAogICogT3RoZXJ3 aXNlLCBpZiB0aGlzIHBhY2thZ2UgaXMgaW4gYSBnaXQgcmVwb3NpdG9yeSB3aXRoIGEgJ2du dWxpYicKICAgIHN1Ym1vZHVsZSBjb25maWd1cmVkLCB0aGVuIHRoYXQgc3VibW9kdWxlIGlz IGluaXRpYWxpemVkIGFuZCB1cGRhdGVkCkBAIC05Nyw3ICsxMTcsOCBAQCBHbnVsaWIgc291 cmNlcyBjYW4gYmUgZmV0Y2hlZCBpbiB2YXJpb3VzIHdheXM6CiAKICAqIE90aGVyd2lzZSwg aWYgdGhlICdnbnVsaWInIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCwgR251bGliIHNvdXJj ZXMKICAgIGFyZSBjbG9uZWQgaW50byB0aGF0IGRpcmVjdG9yeSB1c2luZyBnaXQgZnJvbSBc JEdOVUxJQl9VUkwsIGRlZmF1bHRpbmcKLSAgIHRvICRkZWZhdWx0X2dudWxpYl91cmwuCisg ICB0byAkZGVmYXVsdF9nbnVsaWJfdXJsOyBpZiBHTlVMSUJfUkVGRElSIGlzIHNldCBhbmQg aXMgYSBnaXQgcmVwb3NpdG9yeQorICAgaXRzIGNvbnRlbnRzIG1heSBiZSB1c2VkIHRvIGFj Y2VsZXJhdGUgdGhlIHByb2Nlc3MuCiAgICBJZiB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJs ZSBHTlVMSUJfUkVWSVNJT04gaXMgc2V0IGluIGJvb3RzdHJhcC5jb25mLAogICAgdGhlbiB0 aGF0IHJldmlzaW9uIGlzIGNoZWNrZWQgb3V0LgogCkBAIC0xMTgsNiArMTM5LDEwIEBAIEVP RgogCiAjIFBhcnNlIG9wdGlvbnMuCiAKKyMgV2hldGhlciB0byBwdWxsIGFuZCBnZW5lcmF0 ZS4KK3B1bGw9ZmFsc2UKK2dlbj1mYWxzZQorCiAjIFdoZXRoZXIgdG8gdXNlIGNvcGllcyBp bnN0ZWFkIG9mIHN5bWxpbmtzLgogY29weT1mYWxzZQogCkBAIC0xMzIsMTAgKzE1NywxNCBA QCBkbwogICAgIGV4aXQ7OwogICAtLXZlcnNpb24pCiAgICAgc2V0IC1lCi0gICAgZWNobyAi Ym9vdHN0cmFwICRzY3JpcHR2ZXJzaW9uIgorICAgIGVjaG8gImJvb3RzdHJhcCAkc2NyaXB0 dmVyc2lvbiBsaWIgJHNjcmlwdGxpYnZlcnNpb24iCiAgICAgZWNobyAiJGNvcHlyaWdodCIK ICAgICBleGl0IDAKICAgICA7OworICAtLXB1bGwpCisgICAgcHVsbD10cnVlOzsKKyAgLS1n ZW4pCisgICAgZ2VuPXRydWU7OwogICAtLWdudWxpYi1zcmNkaXI9KikKICAgICBHTlVMSUJf U1JDRElSPSR7b3B0aW9uIy0tZ251bGliLXNyY2Rpcj19OzsKICAgLS1nbnVsaWItcmVmZGly PSopCkBAIC0xNTcsMTAgKzE4NiwxNSBAQCBkbwogICBlc2FjCiBkb25lCiAKKyMgRGVmYXVs dCBpcyB0byBkbyBib3RoLgorJHB1bGwgfHwgJGdlbiB8fCBwdWxsPXRydWUgZ2VuPXRydWUK KwogJHVzZV9naXQgfHwgdGVzdCAtbiAiJEdOVUxJQl9TUkNESVIiIFwKLSAgfHwgZGllICJF cnJvcjogLS1uby1naXQgcmVxdWlyZXMgXCRHTlVMSUJfU1JDRElSIGVudmlyb25tZW50IHZh cmlhYmxlIG9yIC0tZ251bGliLXNyY2RpciBvcHRpb24iCisgIHx8IGRpZSAiRXJyb3I6IC0t bm8tZ2l0IHJlcXVpcmVzIFwkR05VTElCX1NSQ0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZSIg XAorICAgICAgICAgIm9yIC0tZ251bGliLXNyY2RpciBvcHRpb24iCiB0ZXN0IC16ICIkR05V TElCX1NSQ0RJUiIgfHwgdGVzdCAtZCAiJEdOVUxJQl9TUkNESVIiIFwKLSAgfHwgZGllICJF cnJvcjogXCRHTlVMSUJfU1JDRElSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIC0tZ251bGli LXNyY2RpciBvcHRpb24gaXMgc3BlY2lmaWVkLCBidXQgZG9lcyBub3QgZGVub3RlIGEgZGly ZWN0b3J5IgorICB8fCBkaWUgIkVycm9yOiBcJEdOVUxJQl9TUkNESVIgZW52aXJvbm1lbnQg dmFyaWFibGUgb3IgLS1nbnVsaWItc3JjZGlyIiBcCisgICAgICAgICAib3B0aW9uIGlzIHNw ZWNpZmllZCwgYnV0IGRvZXMgbm90IGRlbm90ZSBhIGRpcmVjdG9yeSIKIAogaWYgdGVzdCAt biAiJGNoZWNrb3V0X29ubHlfZmlsZSIgJiYgdGVzdCAhIC1yICIkY2hlY2tvdXRfb25seV9m aWxlIjsgdGhlbgogICBkaWUgIkJvb3RzdHJhcHBpbmcgZnJvbSBhIG5vbi1jaGVja2VkLW91 dCBkaXN0cmlidXRpb24gaXMgcmlza3kuIgpAQCAtMTY4LDQ1ICsyMDIsNDMgQEAgZmkKIAog Y2hlY2tfYnVpbGRfcHJlcmVxdWlzaXRlcyAkdXNlX2dpdAogCi1pZiAhIHRlc3QgLWYgIiRt ZWRpciIvYm9vdHN0cmFwLWZ1bmNsaWIuc2g7IHRoZW4KLSAgIyBXZSBoYXZlIG9ubHkgY29t cGxldGVkIHRoZSBmaXJzdCBwaGFzZSBvZiBhbiB1cGdyYWRlIGZyb20gYSBib290c3RyYXAK LSAgIyB2ZXJzaW9uIDwgMjAyMi0wNy0yNC4gTmVlZCB0byBkbyB0aGUgc2Vjb25kIHBoYXNl IG5vdy4KLSAgYm9vdHN0cmFwX3N5bmM9dHJ1ZQotZmkKLQogaWYgJGJvb3RzdHJhcF9zeW5j OyB0aGVuCiAgIHByZXBhcmVfR05VTElCX1NSQ0RJUgotICB1cGdyYWRlX2Jvb3RzdHJhcAor ICB1cGdyYWRlX2Jvb3RzdHJhcCAiJEAiCiAgICMgU2luY2Ugd2UgaGF2ZSBub3cgdXBncmFk ZWQgaWYgbmVlZGVkLCBubyBuZWVkIHRvIHRyeSBpdCBhIHNlY29uZCB0aW1lIGJlbG93Lgog ICBib290c3RyYXBfc3luYz1mYWxzZQogZmkKIAogZWNobyAiJDA6IEJvb3RzdHJhcHBpbmcg ZnJvbSBjaGVja2VkLW91dCAkcGFja2FnZSBzb3VyY2VzLi4uIgogCi0jIFBhc3MgR05VTElC X1NSQ0RJUiB0byBhdXRvcHVsbC5zaCBhbmQgYXV0b2dlbi5zaC4KKyMgUGFzcyBHTlVMSUJf U1JDRElSIGFuZCBHTlVMSUJfUkVGRElSIHRvIGFueSBzdWJzaWRpYXJ5IGNvbW1hbmRzIHRo YXQgY2FyZS4KIGV4cG9ydCBHTlVMSUJfU1JDRElSCi0KLSMgUGFzcyBHTlVMSUJfUkVGRElS IHRvIGF1dG9wdWxsLnNoLgogZXhwb3J0IEdOVUxJQl9SRUZESVIKIAotaWYgJHVzZV9naXQg fHwgdGVzdCAteiAiJFNLSVBfUE8iOyB0aGVuCi0gICIkbWVkaXIiL2F1dG9wdWxsLnNoIFwK LSAgICAgIGBpZiAkYm9vdHN0cmFwX3N5bmM7IHRoZW4gZWNobyAnIC0tYm9vdHN0cmFwLXN5 bmMnOyBlbHNlIGVjaG8gJyAtLW5vLWJvb3RzdHJhcC1zeW5jJzsgZmlgIFwKK2lmICRwdWxs ICYmIHsgJHVzZV9naXQgfHwgdGVzdCAteiAiJFNLSVBfUE8iOyB9OyB0aGVuCisgIGF1dG9w dWxsIFwKKyAgICAgIGBpZiAkYm9vdHN0cmFwX3N5bmM7IHRoZW4KKyAgICAgICAgIGVjaG8g JyAtLWJvb3RzdHJhcC1zeW5jJworICAgICAgIGVsc2UKKyAgICAgICAgIGVjaG8gJyAtLW5v LWJvb3RzdHJhcC1zeW5jJworICAgICAgIGZpYCBcCiAgICAgICBgaWYgdGVzdCAteiAiJGNo ZWNrb3V0X29ubHlfZmlsZSI7IHRoZW4gZWNobyAnIC0tZm9yY2UnOyBmaWAgXAogICAgICAg YGlmICEgJHVzZV9naXQ7IHRoZW4gZWNobyAnIC0tbm8tZ2l0JzsgZmlgIFwKICAgICAgIGBp ZiB0ZXN0IC1uICIkU0tJUF9QTyI7IHRoZW4gZWNobyAnIC0tc2tpcC1wbyc7IGZpYCBcCi0g ICAgfHwgZGllICJhdXRvcHVsbC5zaCBmYWlsZWQuIgorICAgIHx8IGRpZSAiY291bGQgbm90 IGZldGNoIGF1eGlsaWFyeSBmaWxlcyIKIGZpCiAKLSIkbWVkaXIiL2F1dG9nZW4uc2ggXAot ICAgIGBpZiAkY29weTsgdGhlbiBlY2hvICcgLS1jb3B5JzsgZmlgIFwKLSAgICBgaWYgdGVz dCAteiAiJGNoZWNrb3V0X29ubHlfZmlsZSI7IHRoZW4gZWNobyAnIC0tZm9yY2UnOyBmaWAg XAotICB8fCBkaWUgImF1dG9nZW4uc2ggZmFpbGVkLiIKK2lmICRnZW47IHRoZW4KKyAgYXV0 b2dlbiBcCisgICAgICBgaWYgJGNvcHk7IHRoZW4gZWNobyAnIC0tY29weSc7IGZpYCBcCisg ICAgICBgaWYgdGVzdCAteiAiJGNoZWNrb3V0X29ubHlfZmlsZSI7IHRoZW4gZWNobyAnIC0t Zm9yY2UnOyBmaWAgXAorICAgIHx8IGRpZSAiY291bGQgbm90IGdlbmVyYXRlIGF1eGlsaWFy eSBmaWxlcyIKK2ZpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAjIExvY2FsIFZh cmlhYmxlczoKLSMgZXZhbDogKGFkZC1ob29rICdiZWZvcmUtc2F2ZS1ob29rICd0aW1lLXN0 YW1wKQorIyBldmFsOiAoYWRkLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgJ3RpbWUtc3RhbXAg bmlsIHQpCiAjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKICMgdGltZS1z dGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCiAjIHRpbWUtc3RhbXAtdGltZS16 b25lOiAiVVRDMCIKZGlmZiAtLWdpdCBhL2Jvb3RzdHJhcC1mdW5jbGliLnNoIGIvYm9vdHN0 cmFwLWZ1bmNsaWIuc2gKaW5kZXggZjY2ZjMzOGMuLjQ3ZTAxNWJkIDEwMDY0NAotLS0gYS9i b290c3RyYXAtZnVuY2xpYi5zaAorKysgYi9ib290c3RyYXAtZnVuY2xpYi5zaApAQCAtMSw2 ICsxLDggQEAKICMgQSBsaWJyYXJ5IG9mIHNoZWxsIGZ1bmN0aW9ucyBmb3IgYXV0b3B1bGwu c2gsIGF1dG9nZW4uc2gsIGFuZCBib290c3RyYXAuCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAz LTIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitzY3JpcHRsaWJ2ZXJzaW9u PTIwMjUtMDItMTYuMTI7ICMgVVRDCisKKyMgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CkBAIC0yMyw4ICsyNSw2IEBACiAjIGZpbGUgYWxzbyBtYWludGFpbmVk IGluIHlvdXIgdmVyc2lvbiBjb250cm9sOyBnbnVsaWIgY29tZXMgd2l0aCBhCiAjIHRlbXBs YXRlIGJ1aWxkLWF1eC9ib290c3RyYXAuY29uZiB0byBnZXQgeW91IHN0YXJ0ZWQuCiAKLXNj cmlwdHZlcnNpb249MjAyMi0wNy0yNC4xNTsgIyBVVEMKLQogbmw9JwogJwogCkBAIC0zOCw3 ICszOCw3IEBAIFBFUkw9IiR7UEVSTC1wZXJsfSIKIGRlZmF1bHRfZ251bGliX3VybD1odHRw czovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdC9nbnVsaWIuZ2l0CiAKICMgQ29weXJpZ2h0 IHllYXIsIGZvciB0aGUgLS12ZXJzaW9uIG91dHB1dC4KLWNvcHlyaWdodF95ZWFyPWBlY2hv ICIkc2NyaXB0dmVyc2lvbiIgfCBzZWQgLWUgJ3MvW14wLTldLiovLydgCitjb3B5cmlnaHRf eWVhcj1gZWNobyAiJHNjcmlwdGxpYnZlcnNpb24iIHwgc2VkIC1lICdzL1teMC05XS4qLy8n YAogY29weXJpZ2h0PSJDb3B5cmlnaHQgKEMpICR7Y29weXJpZ2h0X3llYXJ9IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogTGljZW5zZSBHUEx2Mys6IEdOVSBHUEwgdmVyc2lv biAzIG9yIGxhdGVyIDxodHRwczovL2dudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWw+LgogVGhp cyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgYXJlIGZyZWUgdG8gY2hhbmdlIGFuZCByZWRpc3Ry aWJ1dGUgaXQuCkBAIC0xMTUsNyArMTE1LDggQEAgcG9fZG93bmxvYWRfY29tbWFuZF9mb3Jt YXQ9XAogIndnZXQgLS1taXJyb3IgLS1sZXZlbD0xIC1uZCAtbnYgLUEucG8gLVAgJyVzJyBc CiAgaHR0cHM6Ly90cmFuc2xhdGlvbnByb2plY3Qub3JnL2xhdGVzdC8lcy8iCiAKLSMgUHJl ZmVyIGEgbm9uLWVtcHR5IHRhcm5hbWUgKDR0aCBhcmd1bWVudCBvZiBBQ19JTklUIGlmIGdp dmVuKSwgZWxzZQorIyBXaGVuIGV4dHJhY3RpbmcgdGhlIHBhY2thZ2UgbmFtZSBmcm9tIGFu IEFDX0lOSVQgaW52b2NhdGlvbiwKKyMgcHJlZmVyIGEgbm9uLWVtcHR5IHRhcm5hbWUgKDR0 aCBhcmd1bWVudCBvZiBBQ19JTklUIGlmIGdpdmVuKSwgZWxzZQogIyBmYWxsIGJhY2sgdG8g dGhlIHBhY2thZ2UgbmFtZSAoMXN0IGFyZ3VtZW50IHdpdGggbXVuZ2luZykuCiBleHRyYWN0 X3BhY2thZ2VfbmFtZT0nCiAgIC9eQUNfSU5JVChcWyovewpAQCAtMTI3LDE3ICsxMjgsMjAg QEAgZXh0cmFjdF9wYWNrYWdlX25hbWU9JwogICAgICAgIHEKICAgICAgfQogICAgICBzL1td LCldLiovLwotICAgICBzL15HTlUgLy8KLSAgICAgeS9BQkNERUZHSElKS0xNTk9QUVJTVFVW V1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8KLSAgICAgcy9bXmFiY2RlZmdoaWpr bG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OV9dLy0vZwogICAgICBwCiAgIH0KICcKLXBhY2th Z2U9JCgke0FVVE9DT05GOi1hdXRvY29uZn0gLS10cmFjZSBBQ19JTklUOlwkNCBjb25maWd1 cmUuYWMgMj4vZGV2L251bGwpCitub3JtYWxpemVfcGFja2FnZV9uYW1lPScKKyAgcy9eR05V IC8vCisgIHkvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFy c3R1dnd4eXovCisgIHMvW15hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlf XS8tL2cKKycKK3BhY2thZ2U9JCgke0FVVE9DT05GOi1hdXRvY29uZn0gLS10cmFjZSAnQUNf SU5JVDokNCcgY29uZmlndXJlLmFjIDI+L2Rldi9udWxsKQogaWYgdGVzdCAteiAiJHBhY2th Z2UiOyB0aGVuCiAgIHBhY2thZ2U9JChzZWQgLW4gIiRleHRyYWN0X3BhY2thZ2VfbmFtZSIg Y29uZmlndXJlLmFjKSBcCiAgICAgICB8fCBkaWUgJ2Nhbm5vdCBmaW5kIHBhY2thZ2UgbmFt ZSBpbiBjb25maWd1cmUuYWMnCiBmaQorcGFja2FnZT0kKGVjaG8gIiRwYWNrYWdlIiB8IHNl ZCAiJG5vcm1hbGl6ZV9wYWNrYWdlX25hbWUiKQogZ251bGliX25hbWU9bGliJHBhY2thZ2UK IAogYnVpbGRfYXV4PWJ1aWxkLWF1eApAQCAtMzAzLDcgKzMwNyw3IEBAIGNoZWNrX3ZlcnNp b25zKCkgewogICAgICMgSGFuZGxlIHRoZSBzdGlsbC1leHBlcmltZW50YWwgQXV0b21ha2Ut TkcgcHJvZ3JhbXMgc3BlY2lhbGx5LgogICAgICMgVGhleSByZW1haW4gbmFtZWQgYXMgdGhl IG1haW5zdHJlYW0gQXV0b21ha2UgcHJvZ3JhbXMgKCJhdXRvbWFrZSIsCiAgICAgIyBhbmQg ImFjbG9jYWwiKSB0byBhdm9pZCBncmF0dWl0b3VzIGluY29tcGF0aWJpbGl0aWVzIHdpdGgK LSAgICAjIHByZS1leGlzdGluZyB1c2FnZXMgKGJ5LCBzYXksIGF1dG9yZWNvbmYsIG9yIGN1 c3RvbSBhdXRvZ2VuLnNoCisgICAgIyBwcmVleGlzdGluZyB1c2FnZXMgKGJ5LCBzYXksIGF1 dG9yZWNvbmYsIG9yIGN1c3RvbSBhdXRvZ2VuLnNoCiAgICAgIyBzY3JpcHRzKSwgYnV0IGNv cnJlY3RseSBpZGVudGlmeSB0aGVtc2VsdmVzIChhcyBiZWluZyBwYXJ0IG9mCiAgICAgIyAi R05VIGF1dG9tYWtlLW5nIikgd2hlbiBhc2tlZCB0aGVpciB2ZXJzaW9uLgogICAgIGNhc2Ug JGFwcCBpbgpAQCAtNDQxLDEwICs0NDUsOSBAQCBmaW5kX3Rvb2wgKCkKICMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tIFByZXBhcmluZyBHTlVMSUJfU1JDRElSIGZvciB1c2UuIC0tLS0tLS0t LS0tLS0tLS0tLS0tLQogIyBUaGlzIGlzIHBhcnQgb2YgYXV0b3B1bGwuc2gsIGJ1dCBib290 c3RyYXAgbmVlZHMgaXQgdG9vLCBmb3Igc2VsZi11cGdyYWRpbmcuCiAKKyMgY2xlYW51cF9n bnVsaWIgZmFpbHMsIHJlbW92aW5nIHRoZSBkaXJlY3RvcnkgJGdudWxpYl9wYXRoIGZpcnN0 LgogY2xlYW51cF9nbnVsaWIoKSB7CiAgIHN0YXR1cz0kPwotICAjIFhYWCBJdCdzIGEgYmFk IGlkZWEgdG8gZXJhc2UgdGhlIHN1Ym1vZHVsZSBkaXJlY3RvcnkgaWYgaXQgY29udGFpbnMg bG9jYWwKLSAgIyAgICAgbW9kaWZpY2F0aW9ucy4KICAgcm0gLWZyICIkZ251bGliX3BhdGgi CiAgIGV4aXQgJHN0YXR1cwogfQpAQCAtNDYwLDkyICs0NjMsMTU3IEBAIHByZXBhcmVfR05V TElCX1NSQ0RJUiAoKQogICAgICMgV2UgYWxyZWFkeSBjaGVja2VkIHRoYXQgJEdOVUxJQl9T UkNESVIgcmVmZXJlbmNlcyBhIGRpcmVjdG9yeS4KICAgICAjIFZlcmlmeSB0aGF0IGl0IGNv bnRhaW5zIGEgZ251bGliIGNoZWNrb3V0LgogICAgIHRlc3QgLWYgIiRHTlVMSUJfU1JDRElS L2dudWxpYi10b29sIiBcCi0gICAgICB8fCBkaWUgIkVycm9yOiAtLWdudWxpYi1zcmNkaXIg b3IgXCRHTlVMSUJfU1JDRElSIGlzIHNwZWNpZmllZCwgYnV0IGRvZXMgbm90IGNvbnRhaW4g Z251bGliLXRvb2wiCi0gIGVsaWYgJHVzZV9naXQ7IHRoZW4KKyAgICAgIHx8IGRpZSAiRXJy b3I6IC0tZ251bGliLXNyY2RpciBvciBcJEdOVUxJQl9TUkNESVIgaXMgc3BlY2lmaWVkLCIg XAorICAgICAgICAgICAgICJidXQgZG9lcyBub3QgY29udGFpbiBnbnVsaWItdG9vbCIKKyAg ICBpZiB0ZXN0IC1uICIkR05VTElCX1JFVklTSU9OIiAmJiAkdXNlX2dpdDsgdGhlbgorICAg ICAgIyBUaGUgJ2dpdCBjaGVja291dCAiJEdOVUxJQl9SRVZJU0lPTiInIGNvbW1hbmQgc3Vj Y2VlZHMgaWYgdGhlCisgICAgICAjIEdOVUxJQl9SRVZJU0lPTiBpcyBhIGNvbW1pdCBoYXNo IHRoYXQgZXhpc3RzIGxvY2FsbHksIG9yIGlmIGl0IGlzCisgICAgICAjIGJyYW5jaCBuYW1l IHRoYXQgY2FuIGJlIGZldGNoZWQgZnJvbSBvcmlnaW4uIEl0IGZhaWxzLCBob3dldmVyLAor ICAgICAgIyBpZiB0aGUgR05VTElCX1JFVklTSU9OIGlzIGEgY29tbWl0IGhhc2ggdGhhdCBv bmx5IGV4aXN0cyBpbgorICAgICAgIyBvcmlnaW4uIEluIHRoaXMgY2FzZSwgd2UgbmVlZCBh ICdnaXQgZmV0Y2gnIGFuZCB0aGVuIHJldHJ5CisgICAgICAjICdnaXQgY2hlY2tvdXQgIiRH TlVMSUJfUkVWSVNJT04iJy4KKyAgICAgIGdpdCAtQyAiJEdOVUxJQl9TUkNESVIiIGNoZWNr b3V0ICIkR05VTElCX1JFVklTSU9OIiAyPi9kZXYvbnVsbCBcCisgICAgICB8fCB7IGdpdCAt QyAiJEdOVUxJQl9TUkNESVIiIGZldGNoIG9yaWdpbiBcCisgICAgICAgICAgICYmIGdpdCAt QyAiJEdOVUxJQl9TUkNESVIiIGNoZWNrb3V0ICIkR05VTElCX1JFVklTSU9OIjsgfSBcCisg ICAgICB8fCBleGl0ICQ/CisgICAgZmkKKyAgZWxzZQorICAgIGlmICEgJHVzZV9naXQ7IHRo ZW4KKyAgICAgIGRpZSAiRXJyb3I6IC0tbm8tZ2l0IGlzIHNwZWNpZmllZCwiIFwKKyAgICAg ICAgICAiYnV0IG5laXRoZXIgLS1nbnVsaWItc3JjZGlyIG5vciBcJEdOVUxJQl9TUkNESVIg aXMgc3BlY2lmaWVkIgorICAgIGZpCisgICAgaWYgZ2l0IHN1Ym1vZHVsZSAtaCB8IGdyZXAg LS0gLS1yZWZlcmVuY2UgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgIDoKKyAgICBlbHNlCisg ICAgICBkaWUgImdpdCB2ZXJzaW9uIGlzIHRvbyBvbGQsIGdpdCA+PSAxLjYuNCBpcyByZXF1 aXJlZCIKKyAgICBmaQogICAgIGdudWxpYl9wYXRoPSQoZ2l0X21vZHVsZXNfY29uZmlnIHN1 Ym1vZHVsZS5nbnVsaWIucGF0aCkKLSAgICB0ZXN0IC16ICIkZ251bGliX3BhdGgiICYmIGdu dWxpYl9wYXRoPWdudWxpYgotCi0gICAgIyBHZXQgZ251bGliIGZpbGVzLiAgUG9wdWxhdGUg JGdudWxpYl9wYXRoLCBwb3NzaWJseSB1cGRhdGluZyBhCi0gICAgIyBzdWJtb2R1bGUsIGZv ciB1c2UgaW4gdGhlIHJlc3Qgb2YgdGhlIHNjcmlwdC4KLQotICAgIGlmIHRlc3QgLW4gIiRH TlVMSUJfUkVGRElSIiAmJiB0ZXN0IC1kICIkR05VTElCX1JFRkRJUiIvLmdpdCBcCi0gICAg ICAgJiYgZ2l0X21vZHVsZXNfY29uZmlnIHN1Ym1vZHVsZS5nbnVsaWIudXJsID4vZGV2L251 bGw7IHRoZW4KLSAgICAgICMgVXNlIEdOVUxJQl9SRUZESVIgYXMgYSByZWZlcmVuY2UuCi0g ICAgICBlY2hvICIkMDogZ2V0dGluZyBnbnVsaWIgZmlsZXMuLi4iCi0gICAgICBpZiBnaXQg c3VibW9kdWxlIC1ofGdyZXAgLS0gLS1yZWZlcmVuY2UgPiAvZGV2L251bGw7IHRoZW4KLSAg ICAgICAgIyBQcmVmZXIgdGhlIG9uZS1saW5lciBhdmFpbGFibGUgaW4gZ2l0IDEuNi40IG9y IG5ld2VyLgotICAgICAgICBnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgLS1yZWZlcmVu Y2UgIiRHTlVMSUJfUkVGRElSIiBcCi0gICAgICAgICAgIiRnbnVsaWJfcGF0aCIgfHwgZXhp dCAkPworICAgIGlmIHRlc3QgLW4gIiRnbnVsaWJfcGF0aCI7IHRoZW4KKyAgICAgICMgQSBz dWJtb2R1bGUgJ2dudWxpYicgaXMgY29uZmlndXJlZC4KKyAgICAgICMgR2V0IGdudWxpYiBm aWxlcy4gIFBvcHVsYXRlICRnbnVsaWJfcGF0aCwgdXBkYXRpbmcgdGhlIHN1Ym1vZHVsZS4K KyAgICAgIGlmIHRlc3QgLW4gIiRHTlVMSUJfUkVGRElSIiAmJiB0ZXN0IC1kICIkR05VTElC X1JFRkRJUiIvLmdpdDsgdGhlbgorICAgICAgICAjIFVzZSBHTlVMSUJfUkVGRElSIGFzIGEg cmVmZXJlbmNlLgorICAgICAgICBlY2hvICIkMDogZ2V0dGluZyBnbnVsaWIgZmlsZXMuLi4i CisgICAgICAgIGdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAtLXJlZmVyZW5jZSAiJEdO VUxJQl9SRUZESVIiICIkZ251bGliX3BhdGgiXAorICAgICAgICAgIHx8IGV4aXQgJD8KICAg ICAgIGVsc2UKLSAgICAgICAgIyBUaGlzIGZhbGxiYWNrIGFsbG93cyBhdCBsZWFzdCBnaXQg MS41LjUuCi0gICAgICAgIGlmIHRlc3QgLWYgIiRnbnVsaWJfcGF0aCIvZ251bGliLXRvb2w7 IHRoZW4KLSAgICAgICAgICAjIFNpbmNlIGZpbGUgYWxyZWFkeSBleGlzdHMsIGFzc3VtZSBz dWJtb2R1bGUgaW5pdCBhbHJlYWR5IGNvbXBsZXRlLgorICAgICAgICAjIEdOVUxJQl9SRUZE SVIgaXMgbm90IHNldCBvciBub3QgdXNhYmxlLiBJZ25vcmUgaXQuCisgICAgICAgIGlmIGdp dF9tb2R1bGVzX2NvbmZpZyBzdWJtb2R1bGUuZ251bGliLnVybCA+L2Rldi9udWxsOyB0aGVu CisgICAgICAgICAgZWNobyAiJDA6IGdldHRpbmcgZ251bGliIGZpbGVzLi4uIgorICAgICAg ICAgIGdpdCBzdWJtb2R1bGUgaW5pdCAtLSAiJGdudWxpYl9wYXRoIiB8fCBleGl0ICQ/CiAg ICAgICAgICAgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS0gIiRnbnVsaWJfcGF0aCIgfHwgZXhp dCAkPwogICAgICAgICBlbHNlCi0gICAgICAgICAgIyBPbGRlciBnaXQgY2FuJ3QgY2xvbmUg aW50byBhbiBlbXB0eSBkaXJlY3RvcnkuCi0gICAgICAgICAgcm1kaXIgIiRnbnVsaWJfcGF0 aCIgMj4vZGV2L251bGwKLSAgICAgICAgICBnaXQgY2xvbmUgLS1yZWZlcmVuY2UgIiRHTlVM SUJfUkVGRElSIiBcCi0gICAgICAgICAgICAiJChnaXRfbW9kdWxlc19jb25maWcgc3VibW9k dWxlLmdudWxpYi51cmwpIiAiJGdudWxpYl9wYXRoIiBcCi0gICAgICAgICAgICAmJiBnaXQg c3VibW9kdWxlIGluaXQgLS0gIiRnbnVsaWJfcGF0aCIgXAotICAgICAgICAgICAgJiYgZ2l0 IHN1Ym1vZHVsZSB1cGRhdGUgLS0gIiRnbnVsaWJfcGF0aCIgXAotICAgICAgICAgICAgfHwg ZXhpdCAkPworICAgICAgICAgIGRpZSAiRXJyb3I6IHN1Ym1vZHVsZSAnZ251bGliJyBoYXMg bm8gY29uZmlndXJlZCB1cmwiCiAgICAgICAgIGZpCiAgICAgICBmaQogICAgIGVsc2UKLSAg ICAgICMgR05VTElCX1JFRkRJUiBpcyBub3Qgc2V0IG9yIG5vdCB1c2FibGUuIElnbm9yZSBp dC4KLSAgICAgIGlmIGdpdF9tb2R1bGVzX2NvbmZpZyBzdWJtb2R1bGUuZ251bGliLnVybCA+ L2Rldi9udWxsOyB0aGVuCi0gICAgICAgIGVjaG8gIiQwOiBnZXR0aW5nIGdudWxpYiBmaWxl cy4uLiIKLSAgICAgICAgZ2l0IHN1Ym1vZHVsZSBpbml0IC0tICIkZ251bGliX3BhdGgiIHx8 IGV4aXQgJD8KLSAgICAgICAgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS0gIiRnbnVsaWJfcGF0 aCIgfHwgZXhpdCAkPwotCi0gICAgICBlbGlmIFsgISAtZCAiJGdudWxpYl9wYXRoIiBdOyB0 aGVuCisgICAgICBnbnVsaWJfcGF0aD0nZ251bGliJworICAgICAgaWYgdGVzdCAhIC1kICIk Z251bGliX3BhdGgiOyB0aGVuCisgICAgICAgICMgVGhlIHN1YmRpcmVjdG9yeSAnZ251bGli JyBkb2VzIG5vdCB5ZXQgZXhpc3QuIENsb25lIGludG8gaXQuCiAgICAgICAgIGVjaG8gIiQw OiBnZXR0aW5nIGdudWxpYiBmaWxlcy4uLiIKLQotICAgICAgICB0cmFwIGNsZWFudXBfZ251 bGliIDEgMiAxMyAxNQotCi0gICAgICAgIHNoYWxsb3c9Ci0gICAgICAgIGlmIHRlc3QgLXog IiRHTlVMSUJfUkVWSVNJT04iOyB0aGVuCi0gICAgICAgICAgaWYgZ2l0IGNsb25lIC1oIDI+ JjEgfCBncmVwIC0tIC0tZGVwdGggPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgIHNo YWxsb3c9Jy0tZGVwdGggMicKLSAgICAgICAgICBmaQotICAgICAgICAgIGdpdCBjbG9uZSAk c2hhbGxvdyAke0dOVUxJQl9VUkw6LSRkZWZhdWx0X2dudWxpYl91cmx9ICIkZ251bGliX3Bh dGgiIFwKLSAgICAgICAgICAgIHx8IGNsZWFudXBfZ251bGliCisgICAgICAgIHRyYXAgY2xl YW51cF9nbnVsaWIgSFVQIElOVCBQSVBFIFRFUk0KKyAgICAgICAgZ251bGliX3VybD0ke0dO VUxJQl9VUkw6LSRkZWZhdWx0X2dudWxpYl91cmx9CisgICAgICAgIGlmIHRlc3QgLW4gIiRH TlVMSUJfUkVGRElSIiAmJiB0ZXN0IC1kICIkR05VTElCX1JFRkRJUiIvLmdpdDsgdGhlbgor ICAgICAgICAgICMgVXNlIEdOVUxJQl9SRUZESVIgYXMgYSByZWZlcmVuY2UuCisgICAgICAg ICAgZ2l0IGNsb25lICIkR05VTElCX1JFRkRJUiIgIiRnbnVsaWJfcGF0aCIgXAorICAgICAg ICAgICYmIGdpdCAtQyAiJGdudWxpYl9wYXRoIiByZW1vdGUgc2V0LXVybCBvcmlnaW4gIiRn bnVsaWJfdXJsIiBcCisgICAgICAgICAgJiYgaWYgdGVzdCAteiAiJEdOVUxJQl9SRVZJU0lP TiI7IHRoZW4KKyAgICAgICAgICAgICAgIGdpdCAtQyAiJGdudWxpYl9wYXRoIiBwdWxsIG9y aWdpbiBcCisgICAgICAgICAgICAgICAmJiB7CisgICAgICAgICAgICAgICAgICMgV2Ugd2Fu dCB0aGUgZGVmYXVsdCBicmFuY2ggb2YgIiRnbnVsaWJfdXJsIiAoc2luY2UgdGhhdCdzCisg ICAgICAgICAgICAgICAgICMgdGhlIGJlaGF2aW91ciBpZiBHTlVMSUJfUkVGRElSIGlzIG5v dCBzcGVjaWZpZWQpLCBub3QgdGhlCisgICAgICAgICAgICAgICAgICMgY3VycmVudCBicmFu Y2ggb2YgIiRHTlVMSUJfUkVGRElSIi4KKyAgICAgICAgICAgICAgICAgZGVmYXVsdF9icmFu Y2g9YExDX0FMTD1DIGdpdCAtQyAiJGdudWxpYl9wYXRoIiBcCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlIHNob3cgb3JpZ2luIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1uIC1lICdzL14gKkhFQUQg YnJhbmNoOiAvL3AnYAorICAgICAgICAgICAgICAgICB0ZXN0IC1uICIkZGVmYXVsdF9icmFu Y2giIHx8IGRlZmF1bHRfYnJhbmNoPSdtYXN0ZXInCisgICAgICAgICAgICAgICAgIGdpdCAt QyAiJGdudWxpYl9wYXRoIiBjaGVja291dCAiJGRlZmF1bHRfYnJhbmNoIgorICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICMgVGhlICdnaXQg Y2hlY2tvdXQgIiRHTlVMSUJfUkVWSVNJT04iJyBjb21tYW5kIHN1Y2NlZWRzIGlmIHRoZQor ICAgICAgICAgICAgICAgIyBHTlVMSUJfUkVWSVNJT04gaXMgYSBjb21taXQgaGFzaCB0aGF0 IGV4aXN0cyBsb2NhbGx5LCBvciBpZiBpdAorICAgICAgICAgICAgICAgIyBpcyBhIGJyYW5j aCBuYW1lIHRoYXQgY2FuIGJlIGZldGNoZWQgZnJvbSBvcmlnaW4uIEl0IGZhaWxzLAorICAg ICAgICAgICAgICAgIyBob3dldmVyLCBpZiB0aGUgR05VTElCX1JFVklTSU9OIGlzIGEgY29t bWl0IGhhc2ggdGhhdCBvbmx5CisgICAgICAgICAgICAgICAjIGV4aXN0cyBpbiBvcmlnaW4u IEluIHRoaXMgY2FzZSwgd2UgbmVlZCBhICdnaXQgZmV0Y2gnIGFuZCB0aGVuCisgICAgICAg ICAgICAgICAjIHJldHJ5ICdnaXQgY2hlY2tvdXQgIiRHTlVMSUJfUkVWSVNJT04iJy4KKyAg ICAgICAgICAgICAgIGdpdCAtQyAiJGdudWxpYl9wYXRoIiBjaGVja291dCAiJEdOVUxJQl9S RVZJU0lPTiIgMj4vZGV2L251bGwgXAorICAgICAgICAgICAgICAgfHwgeyBnaXQgLUMgIiRn bnVsaWJfcGF0aCIgZmV0Y2ggb3JpZ2luIFwKKyAgICAgICAgICAgICAgICAgICAgJiYgZ2l0 IC1DICIkZ251bGliX3BhdGgiIGNoZWNrb3V0ICIkR05VTElCX1JFVklTSU9OIjsgfQorICAg ICAgICAgICAgIGZpIFwKKyAgICAgICAgICB8fCBjbGVhbnVwX2dudWxpYgogICAgICAgICBl bHNlCi0gICAgICAgICAgaWYgZ2l0IGZldGNoIC1oIDI+JjEgfCBncmVwIC0tIC0tZGVwdGgg PiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgIHNoYWxsb3c9Jy0tZGVwdGggMicKKyAg ICAgICAgICAjIEdOVUxJQl9SRUZESVIgaXMgbm90IHNldCBvciBub3QgdXNhYmxlLiBJZ25v cmUgaXQuCisgICAgICAgICAgc2hhbGxvdz0nLS1kZXB0aCAyJworICAgICAgICAgIGlmIHRl c3QgLXogIiRHTlVMSUJfUkVWSVNJT04iOyB0aGVuCisgICAgICAgICAgICBnaXQgY2xvbmUg JHNoYWxsb3cgIiRnbnVsaWJfdXJsIiAiJGdudWxpYl9wYXRoIiBcCisgICAgICAgICAgICAg IHx8IGNsZWFudXBfZ251bGliCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgIyBPbmx5 IHdhbnQgYSBzaGFsbG93IGNoZWNrb3V0IG9mICRHTlVMSUJfUkVWSVNJT04sIGJ1dCBnaXQg ZG9lcyBub3QKKyAgICAgICAgICAgICMgc3VwcG9ydCBjbG9uaW5nIGJ5IGNvbW1pdCBoYXNo LiBTbyBhdHRlbXB0IGEgc2hhbGxvdyBmZXRjaCBieQorICAgICAgICAgICAgIyBjb21taXQg aGFzaCB0byBtaW5pbWl6ZSB0aGUgYW1vdW50IG9mIGRhdGEgZG93bmxvYWRlZCBhbmQgY2hh bmdlcworICAgICAgICAgICAgIyBuZWVkZWQgdG8gYmUgcHJvY2Vzc2VkLCB3aGljaCBjYW4g ZHJhc3RpY2FsbHkgcmVkdWNlIGRvd25sb2FkIGFuZAorICAgICAgICAgICAgIyBwcm9jZXNz aW5nIHRpbWUgZm9yIGNoZWNrb3V0LiBJZiB0aGUgZmV0Y2ggYnkgY29tbWl0IGZhaWxzLCBh CisgICAgICAgICAgICAjIHNoYWxsb3cgZmV0Y2ggY2Fubm90IGJlIHBlcmZvcm1lZCBiZWNh dXNlIHdlIGRvIG5vdCBrbm93IHdoYXQgdGhlCisgICAgICAgICAgICAjIGRlcHRoIG9mIHRo ZSBjb21taXQgaXMgd2l0aG91dCBmZXRjaGluZyBhbGwgY29tbWl0cy4gU28gZmFsbCBiYWNr CisgICAgICAgICAgICAjIHRvIGZldGNoaW5nIGFsbCBjb21taXRzLgorICAgICAgICAgICAg IyAkR05VTElCX1JFVklTSU9OIGNhbiBiZSBhIGNvbW1pdCBpZCwgYSB0YWcgbmFtZSwgb3Ig YSBicmFuY2ggbmFtZS4KKyAgICAgICAgICAgIG1rZGlyIC1wICIkZ251bGliX3BhdGgiCisg ICAgICAgICAgICAjIFVzZSBhIC1jIG9wdGlvbiB0byBzaWxlbmNlIGFuIGFubm95aW5nIG1l c3NhZ2UKKyAgICAgICAgICAgICMgImhpbnQ6IFVzaW5nICdtYXN0ZXInIGFzIHRoZSBuYW1l IGZvciB0aGUgaW5pdGlhbCBicmFuY2guIgorICAgICAgICAgICAgIyAoY2YuIDxodHRwczov L3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82NTUyNDUxMi8+KS4KKyAgICAgICAgICAg IGdpdCAtQyAiJGdudWxpYl9wYXRoIiAtYyBpbml0LmRlZmF1bHRCcmFuY2g9bWFzdGVyIGlu aXQKKyAgICAgICAgICAgIGdpdCAtQyAiJGdudWxpYl9wYXRoIiByZW1vdGUgYWRkIG9yaWdp biAiJGdudWxpYl91cmwiCisgICAgICAgICAgICBpZiBnaXQgLUMgIiRnbnVsaWJfcGF0aCIg ZmV0Y2ggJHNoYWxsb3cgb3JpZ2luICIkR05VTElCX1JFVklTSU9OIgorICAgICAgICAgICAg dGhlbgorICAgICAgICAgICAgICAjICJnaXQgZmV0Y2giIG9mIHRoZSBzcGVjaWZpYyBjb21t aXQgc3VjY2VlZGVkLgorICAgICAgICAgICAgICBnaXQgLUMgIiRnbnVsaWJfcGF0aCIgcmVz ZXQgLS1oYXJkIEZFVENIX0hFQUQgXAorICAgICAgICAgICAgICAgIHx8IGNsZWFudXBfZ251 bGliCisgICAgICAgICAgICAgICMgImdpdCBmZXRjaCIgZG9lcyBub3QgZmV0Y2ggdGFncyAo YXQgbGVhc3QgaW4gZ2l0IHZlcnNpb24gMi40MykuCisgICAgICAgICAgICAgICMgSWYgJEdO VUxJQl9SRVZJU0lPTiBpcyBhIHRhZyAobm90IGEgY29tbWl0IGlkIG9yIGJyYW5jaCBuYW1l KSwKKyAgICAgICAgICAgICAgIyBhZGQgdGhlIHRhZyBleHBsaWNpdGx5LgorICAgICAgICAg ICAgICByZXZpc2lvbj1gZ2l0IC1DICIkZ251bGliX3BhdGgiIGxvZyAtMSAtLXByZXR0eT1m b3JtYXQ6JUhgCisgICAgICAgICAgICAgIGJyYW5jaD1gTENfQUxMPUMgZ2l0IC1DICIkZ251 bGliX3BhdGgiIHJlbW90ZSBzaG93IG9yaWdpbiBcCisgICAgICAgICAgICAgICAgICAgICAg fCBzZWQgLW4gLWUgJ3MvXiAgICBcKFteIF0qXCkgKiB0cmFja2VkJC9cMS9wJ2AKKyAgICAg ICAgICAgICAgdGVzdCAiJHJldmlzaW9uIiA9ICIkR05VTElCX1JFVklTSU9OIiBcCisgICAg ICAgICAgICAgICAgfHwgdGVzdCAiJGJyYW5jaCIgPSAiJEdOVUxJQl9SRVZJU0lPTiIgXAor ICAgICAgICAgICAgICAgIHx8IGdpdCAtQyAiJGdudWxpYl9wYXRoIiB0YWcgIiRHTlVMSUJf UkVWSVNJT04iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICMgRmV0Y2ggdGhl IGVudGlyZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICBnaXQgLUMgIiRnbnVsaWJfcGF0 aCIgZmV0Y2ggb3JpZ2luIFwKKyAgICAgICAgICAgICAgICB8fCBjbGVhbnVwX2dudWxpYgor ICAgICAgICAgICAgICBnaXQgLUMgIiRnbnVsaWJfcGF0aCIgY2hlY2tvdXQgIiRHTlVMSUJf UkVWSVNJT04iIFwKKyAgICAgICAgICAgICAgICB8fCBjbGVhbnVwX2dudWxpYgorICAgICAg ICAgICAgZmkKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgICB0cmFwIC0gSFVQ IElOVCBQSVBFIFRFUk0KKyAgICAgIGVsc2UKKyAgICAgICAgIyBUaGUgc3ViZGlyZWN0b3J5 ICdnbnVsaWInIGFscmVhZHkgZXhpc3RzLgorICAgICAgICBpZiB0ZXN0IC1uICIkR05VTElC X1JFVklTSU9OIjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgLWQgIiRnbnVsaWJfcGF0aC8u Z2l0IjsgdGhlbgorICAgICAgICAgICAgIyBUaGUgJ2dpdCBjaGVja291dCAiJEdOVUxJQl9S RVZJU0lPTiInIGNvbW1hbmQgc3VjY2VlZHMgaWYgdGhlCisgICAgICAgICAgICAjIEdOVUxJ Ql9SRVZJU0lPTiBpcyBhIGNvbW1pdCBoYXNoIHRoYXQgZXhpc3RzIGxvY2FsbHksIG9yIGlm IGl0CisgICAgICAgICAgICAjIGlzIGEgYnJhbmNoIG5hbWUgdGhhdCBjYW4gYmUgZmV0Y2hl ZCBmcm9tIG9yaWdpbi4gSXQgZmFpbHMsCisgICAgICAgICAgICAjIGhvd2V2ZXIsIGlmIHRo ZSBHTlVMSUJfUkVWSVNJT04gaXMgYSBjb21taXQgaGFzaCB0aGF0IG9ubHkKKyAgICAgICAg ICAgICMgZXhpc3RzIGluIG9yaWdpbi4gSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIGEgJ2dpdCBm ZXRjaCcgYW5kIHRoZW4KKyAgICAgICAgICAgICMgcmV0cnkgJ2dpdCBjaGVja291dCAiJEdO VUxJQl9SRVZJU0lPTiInLgorICAgICAgICAgICAgZ2l0IC1DICIkZ251bGliX3BhdGgiIGNo ZWNrb3V0ICIkR05VTElCX1JFVklTSU9OIiAyPi9kZXYvbnVsbCBcCisgICAgICAgICAgICB8 fCB7IGdpdCAtQyAiJGdudWxpYl9wYXRoIiBmZXRjaCBvcmlnaW4gXAorICAgICAgICAgICAg ICAgICAmJiBnaXQgLUMgIiRnbnVsaWJfcGF0aCIgY2hlY2tvdXQgIiRHTlVMSUJfUkVWSVNJ T04iOyB9IFwKKyAgICAgICAgICAgIHx8IGV4aXQgJD8KKyAgICAgICAgICBlbHNlCisgICAg ICAgICAgICBkaWUgIkVycm9yOiBHTlVMSUJfUkVWSVNJT04gaXMgc3BlY2lmaWVkIGluIGJv b3RzdHJhcC5jb25mLCIgXAorICAgICAgICAgICAgICAgICJidXQgJyRnbnVsaWJfcGF0aCcg Y29udGFpbnMgbm8gZ2l0IGhpc3RvcnkiCiAgICAgICAgICAgZmkKLSAgICAgICAgICBta2Rp ciAtcCAiJGdudWxpYl9wYXRoIgotICAgICAgICAgICMgT25seSB3YW50IGEgc2hhbGxvdyBj aGVja291dCBvZiAkR05VTElCX1JFVklTSU9OLCBidXQgZ2l0IGRvZXMgbm90Ci0gICAgICAg ICAgIyBzdXBwb3J0IGNsb25pbmcgYnkgY29tbWl0IGhhc2guIFNvIGF0dGVtcHQgYSBzaGFs bG93IGZldGNoIGJ5IGNvbW1pdAotICAgICAgICAgICMgaGFzaCB0byBtaW5pbWl6ZSB0aGUg YW1vdW50IG9mIGRhdGEgZG93bmxvYWRlZCBhbmQgY2hhbmdlcyBuZWVkZWQgdG8KLSAgICAg ICAgICAjIGJlIHByb2Nlc3NlZCwgd2hpY2ggY2FuIGRyYXN0aWNhbGx5IHJlZHVjZSBkb3du bG9hZCBhbmQgcHJvY2Vzc2luZwotICAgICAgICAgICMgdGltZSBmb3IgY2hlY2tvdXQuIElm IHRoZSBmZXRjaCBieSBjb21taXQgZmFpbHMsIGEgc2hhbGxvdyBmZXRjaCBjYW4KLSAgICAg ICAgICAjIG5vdCBiZSBwZXJmb3JtZWQgYmVjYXVzZSB3ZSBkbyBub3Qga25vdyB3aGF0IHRo ZSBkZXB0aCBvZiB0aGUgY29tbWl0Ci0gICAgICAgICAgIyBpcyB3aXRob3V0IGZldGNoaW5n IGFsbCBjb21taXRzLiBTbyBmYWxsYmFjayB0byBmZXRjaGluZyBhbGwgY29tbWl0cy4KLSAg ICAgICAgICBnaXQgLUMgIiRnbnVsaWJfcGF0aCIgaW5pdAotICAgICAgICAgIGdpdCAtQyAi JGdudWxpYl9wYXRoIiByZW1vdGUgYWRkIG9yaWdpbiBcCi0gICAgICAgICAgICAgICR7R05V TElCX1VSTDotJGRlZmF1bHRfZ251bGliX3VybH0KLSAgICAgICAgICBnaXQgLUMgIiRnbnVs aWJfcGF0aCIgZmV0Y2ggJHNoYWxsb3cgb3JpZ2luICIkR05VTElCX1JFVklTSU9OIiBcCi0g ICAgICAgICAgICB8fCBnaXQgLUMgIiRnbnVsaWJfcGF0aCIgZmV0Y2ggb3JpZ2luIFwKLSAg ICAgICAgICAgIHx8IGNsZWFudXBfZ251bGliCi0gICAgICAgICAgZ2l0IC1DICIkZ251bGli X3BhdGgiIHJlc2V0IC0taGFyZCBGRVRDSF9IRUFECiAgICAgICAgIGZpCi0KLSAgICAgICAg dHJhcCAtIDEgMiAxMyAxNQogICAgICAgZmkKICAgICBmaQotICAgIEdOVUxJQl9TUkNESVI9 JGdudWxpYl9wYXRoCi0gICAgIyBWZXJpZnkgdGhhdCB0aGUgc3VibW9kdWxlIGNvbnRhaW5z IGEgZ251bGliIGNoZWNrb3V0LgorICAgICMgVmVyaWZ5IHRoYXQgJGdudWxpYl9wYXRoIGNv bnRhaW5zIGEgZ251bGliIGNoZWNrb3V0LgogICAgIHRlc3QgLWYgIiRnbnVsaWJfcGF0aC9n bnVsaWItdG9vbCIgXAotICAgICAgfHwgZGllICJFcnJvcjogJGdudWxpYl9wYXRoIGlzIHN1 cHBvc2VkIHRvIGNvbnRhaW4gYSBnbnVsaWIgY2hlY2tvdXQsIGJ1dCBkb2VzIG5vdCBjb250 YWluIGdudWxpYi10b29sIgotICBmaQotCi0gICMgWFhYIFNob3VsZCB0aGlzIGJlIGRvbmUg aWYgJHVzZV9naXQgaXMgZmFsc2U/Ci0gIGlmIHRlc3QgLWQgIiRHTlVMSUJfU1JDRElSIi8u Z2l0ICYmIHRlc3QgLW4gIiRHTlVMSUJfUkVWSVNJT04iIFwKLSAgICAgJiYgISBnaXRfbW9k dWxlc19jb25maWcgc3VibW9kdWxlLmdudWxpYi51cmwgPi9kZXYvbnVsbDsgdGhlbgotICAg IChjZCAiJEdOVUxJQl9TUkNESVIiICYmIGdpdCBjaGVja291dCAiJEdOVUxJQl9SRVZJU0lP TiIpIHx8IGNsZWFudXBfZ251bGliCisgICAgICB8fCBkaWUgIkVycm9yOiAnJGdudWxpYl9w YXRoJyBpcyBzdXBwb3NlZCB0byBjb250YWluIGEgZ251bGliIGNoZWNrb3V0LCIgXAorICAg ICAgICAgICAgICJidXQgZG9lcyBub3QgY29udGFpbiBnbnVsaWItdG9vbCIKKyAgICBHTlVM SUJfU1JDRElSPSRnbnVsaWJfcGF0aAogICBmaQotCiAgICMgJEdOVUxJQl9TUkNESVIgbm93 IHBvaW50cyB0byB0aGUgdmVyc2lvbiBvZiBnbnVsaWIgdG8gdXNlLCBhbmQKICAgIyB3ZSBu byBsb25nZXIgbmVlZCB0byB1c2UgZ2l0IG9yICRnbnVsaWJfcGF0aCBiZWxvdyBoZXJlLgog fQpAQCAtNTU0LDIwICs2MjIsMzkgQEAgcHJlcGFyZV9HTlVMSUJfU1JDRElSICgpCiAKIHVw Z3JhZGVfYm9vdHN0cmFwICgpCiB7Ci0gIHsgY21wIC1zICIkbWVkaXIiL2Jvb3RzdHJhcCAi JEdOVUxJQl9TUkNESVIvdG9wL2Jvb3RzdHJhcCIgXAotICAgICYmIGNtcCAtcyAiJG1lZGly Ii9ib290c3RyYXAtZnVuY2xpYi5zaCAiJEdOVUxJQl9TUkNESVIvdG9wL2Jvb3RzdHJhcC1m dW5jbGliLnNoIiBcCi0gICAgJiYgY21wIC1zICIkbWVkaXIiL2F1dG9wdWxsLnNoICIkR05V TElCX1NSQ0RJUi90b3AvYXV0b3B1bGwuc2giIFwKLSAgICAmJiBjbXAgLXMgIiRtZWRpciIv YXV0b2dlbi5zaCAiJEdOVUxJQl9TUkNESVIvdG9wL2F1dG9nZW4uc2giOyBcCi0gIH0gfHwg ewotICAgIGVjaG8gIiQwOiB1cGRhdGluZyBib290c3RyYXAgJiBjb21wYW5pb25zIGFuZCBy ZXN0YXJ0aW5nLi4uIgorICBpZiB0ZXN0IC1mICIkbWVkaXIiL2Jvb3RzdHJhcC1mdW5jbGli LnNoOyB0aGVuCisgICAgdXBkYXRlX2xpYj10cnVlCisgICAgeyBjbXAgLXMgIiRtZWRpciIv Ym9vdHN0cmFwICIkR05VTElCX1NSQ0RJUi90b3AvYm9vdHN0cmFwIiBcCisgICAgICAmJiBj bXAgLXMgIiRtZWRpciIvYm9vdHN0cmFwLWZ1bmNsaWIuc2ggXAorICAgICAgICAgICAgICAg ICIkR05VTElCX1NSQ0RJUi90b3AvYm9vdHN0cmFwLWZ1bmNsaWIuc2giIFwKKyAgICAgICYm IGNtcCAtcyAiJG1lZGlyIi9hdXRvcHVsbC5zaCAiJEdOVUxJQl9TUkNESVIvdG9wL2F1dG9w dWxsLnNoIiBcCisgICAgICAmJiBjbXAgLXMgIiRtZWRpciIvYXV0b2dlbi5zaCAiJEdOVUxJ Ql9TUkNESVIvdG9wL2F1dG9nZW4uc2giOyBcCisgICAgfQorICBlbHNlCisgICAgdXBkYXRl X2xpYj1mYWxzZQorICAgIGNtcCAtcyAiJG1lZGlyIi9ib290c3RyYXAgIiRHTlVMSUJfU1JD RElSL2J1aWxkLWF1eC9ib290c3RyYXAiCisgIGZpIHx8IHsKKyAgICBpZiAkdXBkYXRlX2xp YjsgdGhlbgorICAgICAgZWNobyAiJDA6IHVwZGF0aW5nIGJvb3RzdHJhcCAmIGNvbXBhbmlv bnMgYW5kIHJlc3RhcnRpbmcuLi4iCisgICAgZWxzZQorICAgICAgZWNobyAiJDA6IHVwZGF0 aW5nIGJvb3RzdHJhcCBhbmQgcmVzdGFydGluZy4uLiIKKyAgICBmaQogICAgIGNhc2UgJChz aCAtYyAnZWNobyAiJDEiJyAtLSBhKSBpbgogICAgICAgYSkgaWdub3JlZD0tLTs7CiAgICAg ICAqKSBpZ25vcmVkPWlnbm9yZWQ7OwogICAgIGVzYWMKKyAgICB1PSR1cGRhdGVfbGliCiAg ICAgZXhlYyBzaCAtYyBcCi0gICAgICAneyBpZiB0ZXN0IC1mICIkMSI7IHRoZW4gY3AgIiQx IiAiJDMiOyBlbHNlIGNwICIkMiIgIiQzIjsgZmk7IH0gJiYgeyBpZiB0ZXN0IC1mICIkNCI7 IHRoZW4gY3AgIiQ0IiAiJDUiOyBlbHNlIHJtIC1mICIkNSI7IGZpOyB9ICYmIHsgaWYgdGVz dCAtZiAiJDYiOyB0aGVuIGNwICIkNiIgIiQ3IjsgZWxzZSBybSAtZiAiJDciOyBmaTsgfSAm JiB7IGlmIHRlc3QgLWYgIiQ4IjsgdGhlbiBjcCAiJDgiICIkOSI7IGVsc2Ugcm0gLWYgIiQ5 IjsgZmk7IH0gJiYgc2hpZnQgJiYgc2hpZnQgJiYgc2hpZnQgJiYgc2hpZnQgJiYgc2hpZnQg JiYgc2hpZnQgJiYgc2hpZnQgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZXhlYyAiJHtDT05GSUdf U0hFTEwtL2Jpbi9zaH0iICIkQCInIFwKKyAgICAgICd7IGlmICckdScgJiYgdGVzdCAtZiAi JDEiOyB0aGVuIGNwICIkMSIgIiQzIjsgZWxzZSBjcCAiJDIiICIkMyI7IGZpOyB9ICYmCisg ICAgICAgeyBpZiAnJHUnICYmIHRlc3QgLWYgIiQ0IjsgdGhlbiBjcCAiJDQiICIkNSI7IGVs c2Ugcm0gLWYgIiQ1IjsgZmk7IH0gJiYKKyAgICAgICB7IGlmICckdScgJiYgdGVzdCAtZiAi JDYiOyB0aGVuIGNwICIkNiIgIiQ3IjsgZWxzZSBybSAtZiAiJDciOyBmaTsgfSAmJgorICAg ICAgIHsgaWYgJyR1JyAmJiB0ZXN0IC1mICIkOCI7IHRoZW4gY3AgIiQ4IiAiJDkiOyBlbHNl IHJtIC1mICIkOSI7IGZpOyB9ICYmCisgICAgICAgc2hpZnQgJiYgc2hpZnQgJiYgc2hpZnQg JiYgc2hpZnQgJiYgc2hpZnQgJiYKKyAgICAgICBzaGlmdCAmJiBzaGlmdCAmJiBzaGlmdCAm JiBzaGlmdCAmJgorICAgICAgIGV4ZWMgIiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9IiAiJEAi JyBcCiAgICAgICAkaWdub3JlZCBcCi0gICAgICAiJEdOVUxJQl9TUkNESVIvdG9wL2Jvb3Rz dHJhcCIgIiRHTlVMSUJfU1JDRElSL2J1aWxkLWF1eC9ib290c3RyYXAiICIkbWVkaXIvYm9v dHN0cmFwIiBcCisgICAgICAiJEdOVUxJQl9TUkNESVIvdG9wL2Jvb3RzdHJhcCIgIiRHTlVM SUJfU1JDRElSL2J1aWxkLWF1eC9ib290c3RyYXAiIFwKKyAgICAgICIkbWVkaXIvYm9vdHN0 cmFwIiBcCiAgICAgICAiJEdOVUxJQl9TUkNESVIvdG9wL2Jvb3RzdHJhcC1mdW5jbGliLnNo IiAiJG1lZGlyL2Jvb3RzdHJhcC1mdW5jbGliLnNoIiBcCiAgICAgICAiJEdOVUxJQl9TUkNE SVIvdG9wL2F1dG9wdWxsLnNoIiAiJG1lZGlyL2F1dG9wdWxsLnNoIiBcCiAgICAgICAiJEdO VUxJQl9TUkNESVIvdG9wL2F1dG9nZW4uc2giICIkbWVkaXIvYXV0b2dlbi5zaCIgXApAQCAt NTgzLDExICs2NzAsNzEyIEBAIGVsc2UKICAgdXNlX2dudWxpYj10cnVlCiBmaQogCisjIC0t LS0tLS0tIEZldGNoIGF1eGlsaWFyeSBmaWxlcyBmcm9tIHRoZSBuZXR3b3JrLiAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYXV0b3B1bGxfdXNhZ2UoKSB7CisgIGNhdCA8PEVP RgorVXNhZ2U6ICRtZSBbT1BUSU9OXS4uLgorQm9vdHN0cmFwIHRoaXMgcGFja2FnZSBmcm9t IHRoZSBjaGVja2VkLW91dCBzb3VyY2VzLCBwaGFzZSAxOgorUHVsbCBmaWxlcyBmcm9tIHRo ZSBuZXR3b3JrLgorCitPcHRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CisgIEdOVUxJ Ql9TUkNESVIgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGxvY2FsIGRpcmVjdG9yeSB3aGVy ZSBnbnVsaWIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMgcmVzaWRlLiAg VXNlIHRoaXMgaWYgeW91IGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGhh dmUgZ251bGliIHNvdXJjZXMgb24geW91ciBtYWNoaW5lLCBhbmQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHlvdSB3YW50IHRvIHVzZSB0aGVzZSBzb3VyY2VzLgorICBHTlVMSUJf UkVGRElSICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsb2NhbCBkaXJlY3Rvcnkgd2hlcmUg YSBnbnVsaWIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgKHdpdGgg YSAuZ2l0IHN1YmRpcmVjdG9yeSkgcmVzaWRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIFVzZSB0aGlzIGlmIHlvdSBhbHJlYWR5IGhhdmUgZ251bGliIHNvdXJjZXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFuZCBoaXN0b3J5IG9uIHlvdXIgbWFjaGluZSwgYW5k IGRvIG5vdCB3YW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB3YXN0ZSB5b3Vy IGJhbmR3aWR0aCBkb3dubG9hZGluZyB0aGVtIGFnYWluLgorICBHTlVMSUJfVVJMICAgICAg ICAgICAgICAgVVJMIG9mIHRoZSBnbnVsaWIgcmVwb3NpdG9yeS4gIFRoZSBkZWZhdWx0IGlz CisgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdF9nbnVsaWJfdXJsLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgR251bGliJ3MgdXBzdHJlYW0gcmVw b3NpdG9yeS4KKworT3B0aW9uczoKKworICAtLWJvb3RzdHJhcC1zeW5jICAgICAgICAgSWYg dGhpcyBib290c3RyYXAgc2NyaXB0IGlzIG5vdCBpZGVudGljYWwgdG8KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoZSB2ZXJzaW9uIGluIHRoZSBsb2NhbCBnbnVsaWIgc291cmNl cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSB0aGlzIHNjcmlwdCwgYW5k IHRoZW4gcmVzdGFydCBpdCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAvYmlu L3NoIG9yIHRoZSBzaGVsbCBcJENPTkZJR19TSEVMTC4KKyAgLS1uby1ib290c3RyYXAtc3lu YyAgICAgIERvIG5vdCBjaGVjayB3aGV0aGVyIGJvb3RzdHJhcCBpcyBvdXQgb2Ygc3luYy4K KworICAtLWZvcmNlICAgICAgICAgICAgICAgICAgQXR0ZW1wdCB0byBib290c3RyYXAgZXZl biBpZiB0aGUgc291cmNlcyBzZWVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Qg dG8gaGF2ZSBiZWVuIGNoZWNrZWQgb3V0LgorICAtLW5vLWdpdCAgICAgICAgICAgICAgICAg RG8gbm90IHVzZSBnaXQgdG8gdXBkYXRlIGdudWxpYi4gIFJlcXVpcmVzIHRoYXQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwkR05VTElCX1NSQ0RJUiBwb2ludHMgdG8gYSBnbnVs aWIgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgY29y cmVjdCByZXZpc2lvbi4KKyAgLS1za2lwLXBvICAgICAgICAgICAgICAgIERvIG5vdCBkb3du bG9hZCAqLnBvIGZpbGVzLgorRU9GCisgIGJvb3RzdHJhcF9wcmludF9vcHRpb25fdXNhZ2Vf aG9vaworICBjYXQgPDxFT0YKK0lmIHRoZSBmaWxlIGJvb3RzdHJhcC5jb25mIGV4aXN0cyBp biB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhpcyBzY3JpcHQsIGl0cworY29udGVudHMgYXJl IHJlYWQgYXMgc2hlbGwgdmFyaWFibGVzIHRvIGNvbmZpZ3VyZSB0aGUgYm9vdHN0cmFwLgor CitGb3IgYnVpbGQgcHJlcmVxdWlzaXRlcywgZW52aXJvbm1lbnQgdmFyaWFibGVzIGxpa2Ug XCRBVVRPQ09ORiBhbmQgXCRBTVRBUgorYXJlIGhvbm9yZWQuCisKK0dudWxpYiBzb3VyY2Vz IGNhbiBiZSBmZXRjaGVkIGluIHZhcmlvdXMgd2F5czoKKworICogSWYgdGhlIGVudmlyb25t ZW50IHZhcmlhYmxlIEdOVUxJQl9TUkNESVIgaXMgc2V0LCB0aGVuIHNvdXJjZXMgYXJlCisg ICBmZXRjaGVkIGZyb20gdGhhdCBsb2NhbCBkaXJlY3RvcnkuICBJZiBpdCBpcyBhIGdpdCBy ZXBvc2l0b3J5IGFuZCB0aGUKKyAgIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgR05VTElCX1JF VklTSU9OIGlzIHNldCBpbiBib290c3RyYXAuY29uZiwgdGhlbgorICAgdGhhdCByZXZpc2lv biBpcyBjaGVja2VkIG91dC4KKworICogT3RoZXJ3aXNlLCBpZiB0aGlzIHBhY2thZ2UgaXMg aW4gYSBnaXQgcmVwb3NpdG9yeSB3aXRoIGEgJ2dudWxpYicKKyAgIHN1Ym1vZHVsZSBjb25m aWd1cmVkLCB0aGVuIHRoYXQgc3VibW9kdWxlIGlzIGluaXRpYWxpemVkIGFuZCB1cGRhdGVk CisgICBhbmQgc291cmNlcyBhcmUgZmV0Y2hlZCBmcm9tIHRoZXJlLiAgSWYgdGhlIGVudmly b25tZW50IHZhcmlhYmxlCisgICBHTlVMSUJfUkVGRElSIGlzIHNldCBhbmQgaXMgYSBnaXQg cmVwb3NpdG9yeSwgdGhlbiBpdCBpcyB1c2VkIGFzIGEKKyAgIHJlZmVyZW5jZS4KKworICog T3RoZXJ3aXNlLCBpZiB0aGUgJ2dudWxpYicgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0LCBH bnVsaWIgc291cmNlcworICAgYXJlIGNsb25lZCBpbnRvIHRoYXQgZGlyZWN0b3J5IHVzaW5n IGdpdCBmcm9tIFwkR05VTElCX1VSTCwgZGVmYXVsdGluZworICAgdG8gJGRlZmF1bHRfZ251 bGliX3VybDsgaWYgR05VTElCX1JFRkRJUiBpcyBzZXQgYW5kIGlzIGEgZ2l0IHJlcG9zaXRv cnkKKyAgIGl0cyBjb250ZW50cyBtYXkgYmUgdXNlZCB0byBhY2NlbGVyYXRlIHRoZSBwcm9j ZXNzLgorICAgSWYgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgR05VTElCX1JFVklTSU9O IGlzIHNldCBpbiBib290c3RyYXAuY29uZiwKKyAgIHRoZW4gdGhhdCByZXZpc2lvbiBpcyBj aGVja2VkIG91dC4KKworICogT3RoZXJ3aXNlLCB0aGUgZXhpc3RpbmcgR251bGliIHNvdXJj ZXMgaW4gdGhlICdnbnVsaWInIGRpcmVjdG9yeSBhcmUKKyAgIHVzZWQuICBJZiBpdCBpcyBh IGdpdCByZXBvc2l0b3J5IGFuZCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZQorICAgR05V TElCX1JFVklTSU9OIGlzIHNldCBpbiBib290c3RyYXAuY29uZiwgdGhlbiB0aGF0IHJldmlz aW9uIGlzCisgICBjaGVja2VkIG91dC4KKworSWYgeW91IG1haW50YWluIGEgcGFja2FnZSBh bmQgd2FudCB0byBwaW4gYSBwYXJ0aWN1bGFyIHJldmlzaW9uIG9mIHRoZQorR251bGliIHNv dXJjZXMgdGhhdCBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCB5b3VyIHBhY2thZ2UsIHRoZW4gdGhl cmUgYXJlCit0d28gcG9zc2libGUgYXBwcm9hY2hlczogZWl0aGVyIGNvbmZpZ3VyZSBhICdn bnVsaWInIHN1Ym1vZHVsZSB3aXRoIHRoZQorYXBwcm9wcmlhdGUgcmV2aXNpb24sIG9yIHNl dCBHTlVMSUJfUkVWSVNJT04gKGFuZCBpZiBuZWNlc3NhcnkKK0dOVUxJQl9VUkwpIGluIGJv b3RzdHJhcC5jb25mLgorCitSdW5uaW5nIHdpdGhvdXQgYXJndW1lbnRzIHdpbGwgc3VmZmlj ZSBpbiBtb3N0IGNhc2VzLgorRU9GCit9CisKKyMgRmV0Y2ggYXV4aWxpYXJ5IGZpbGVzIHRo YXQgYXJlIG9taXR0ZWQgZnJvbSB0aGUgdmVyc2lvbiBjb250cm9sCisjIHJlcG9zaXRvcnkg b2YgdGhpcyBwYWNrYWdlLgorYXV0b3B1bGwoKQoreworICAjIEVuc3VyZSB0aGF0IENEUEFU SCBpcyBub3Qgc2V0LiAgT3RoZXJ3aXNlLCB0aGUgb3V0cHV0IGZyb20gY2QKKyAgIyB3b3Vs ZCBjYXVzZSB0cm91YmxlIGluIGF0IGxlYXN0IG9uZSB1c2UgYmVsb3cuCisgICh1bnNldCBD RFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKKworICAjIFBhcnNlIG9w dGlvbnMuCisKKyAgIyBVc2UgZ2l0IHRvIHVwZGF0ZSBnbnVsaWIgc291cmNlcworICB1c2Vf Z2l0PXRydWUKKworICBmb3Igb3B0aW9uCisgIGRvCisgICAgY2FzZSAkb3B0aW9uIGluCisg ICAgLS1oZWxwKQorICAgICAgYXV0b3B1bGxfdXNhZ2UKKyAgICAgIHJldHVybjs7CisgICAg LS12ZXJzaW9uKQorICAgICAgc2V0IC1lCisgICAgICBlY2hvICJhdXRvcHVsbC5zaCAkc2Ny aXB0bGlidmVyc2lvbiIKKyAgICAgIGVjaG8gIiRjb3B5cmlnaHQiCisgICAgICByZXR1cm4g MAorICAgICAgOzsKKyAgICAtLXNraXAtcG8pCisgICAgICBTS0lQX1BPPXQ7OworICAgIC0t Zm9yY2UpCisgICAgICBjaGVja291dF9vbmx5X2ZpbGU9OzsKKyAgICAtLWJvb3RzdHJhcC1z eW5jKQorICAgICAgYm9vdHN0cmFwX3N5bmM9dHJ1ZTs7CisgICAgLS1uby1ib290c3RyYXAt c3luYykKKyAgICAgIGJvb3RzdHJhcF9zeW5jPWZhbHNlOzsKKyAgICAtLW5vLWdpdCkKKyAg ICAgIHVzZV9naXQ9ZmFsc2U7OworICAgICopCisgICAgICBib290c3RyYXBfb3B0aW9uX2hv b2sgJG9wdGlvbiB8fCBkaWUgIiRvcHRpb246IHVua25vd24gb3B0aW9uIjs7CisgICAgZXNh YworICBkb25lCisKKyAgJHVzZV9naXQgfHwgdGVzdCAtbiAiJEdOVUxJQl9TUkNESVIiIFwK KyAgICB8fCBkaWUgIkVycm9yOiAtLW5vLWdpdCByZXF1aXJlcyBcJEdOVUxJQl9TUkNESVIg ZW52aXJvbm1lbnQgdmFyaWFibGUiIFwKKyAgICAgICAgICAgIm9yIC0tZ251bGliLXNyY2Rp ciBvcHRpb24iCisgIHRlc3QgLXogIiRHTlVMSUJfU1JDRElSIiB8fCB0ZXN0IC1kICIkR05V TElCX1NSQ0RJUiIgXAorICAgIHx8IGRpZSAiRXJyb3I6IFwkR05VTElCX1NSQ0RJUiBlbnZp cm9ubWVudCB2YXJpYWJsZSIgXAorICAgICAgICAgICAib3IgLS1nbnVsaWItc3JjZGlyIG9w dGlvbiBpcyBzcGVjaWZpZWQsIiBcCisgICAgICAgICAgICJidXQgZG9lcyBub3QgZGVub3Rl IGEgZGlyZWN0b3J5IgorCisgIGlmIHRlc3QgLW4gIiRjaGVja291dF9vbmx5X2ZpbGUiICYm IHRlc3QgISAtciAiJGNoZWNrb3V0X29ubHlfZmlsZSI7IHRoZW4KKyAgICBkaWUgIlJ1bm5p bmcgdGhpcyBzY3JpcHQgZnJvbSBhIG5vbi1jaGVja2VkLW91dCBkaXN0cmlidXRpb24gaXMg cmlza3kuIgorICBmaQorCisgIGNoZWNrX2J1aWxkX3ByZXJlcXVpc2l0ZXMgJHVzZV9naXQK KworICBpZiAkdXNlX2dudWxpYiB8fCAkYm9vdHN0cmFwX3N5bmM7IHRoZW4KKyAgICBwcmVw YXJlX0dOVUxJQl9TUkNESVIKKyAgICBpZiAkYm9vdHN0cmFwX3N5bmM7IHRoZW4KKyAgICAg IHVwZ3JhZGVfYm9vdHN0cmFwICIkQCIKKyAgICBmaQorICBmaQorCisgICMgRmluZCBzaGEx c3VtLCBuYW1lZCBnc2hhMXN1bSBvbiBNYWNQb3J0cywgc2hhc3VtIG9uIE1hYyBPUyBYIDEw LjYuCisgICMgQWxzbyBmaW5kIHRoZSBjb21wYXRpYmxlIHNoYTEgdXRpbGl0eSBvbiB0aGUg QlNEcworICBpZiB0ZXN0IHgiJFNLSVBfUE8iID0geDsgdGhlbgorICAgIGZpbmRfdG9vbCBT SEExU1VNIHNoYTFzdW0gZ3NoYTFzdW0gc2hhc3VtIHNoYTEKKyAgZmkKKworICAjIFNlZSBp ZiB3ZSBjYW4gdXNlIGdudWxpYidzIGdpdC1tZXJnZS1jaGFuZ2Vsb2cgbWVyZ2UgZHJpdmVy LgorICBpZiAkdXNlX2dpdCAmJiB0ZXN0IC1kIC5naXQgJiYgY2hlY2tfZXhpc3RzIGdpdDsg dGhlbgorICAgIGlmIGdpdCBjb25maWcgbWVyZ2UubWVyZ2UtY2hhbmdlbG9nLmRyaXZlciA+ L2Rldi9udWxsIDsgdGhlbgorICAgICAgOgorICAgIGVsaWYgY2hlY2tfZXhpc3RzIGdpdC1t ZXJnZS1jaGFuZ2Vsb2c7IHRoZW4KKyAgICAgIGVjaG8gIiQwOiBpbml0aWFsaXppbmcgZ2l0 LW1lcmdlLWNoYW5nZWxvZyBkcml2ZXIiCisgICAgICBnaXQgY29uZmlnIG1lcmdlLm1lcmdl LWNoYW5nZWxvZy5uYW1lICdHTlUtc3R5bGUgQ2hhbmdlTG9nIG1lcmdlIGRyaXZlcicKKyAg ICAgIGdpdCBjb25maWcgbWVyZ2UubWVyZ2UtY2hhbmdlbG9nLmRyaXZlciAnZ2l0LW1lcmdl LWNoYW5nZWxvZyAlTyAlQSAlQicKKyAgICBlbHNlCisgICAgICBlY2hvICIkMDogY29uc2lk ZXIgaW5zdGFsbGluZyBnaXQtbWVyZ2UtY2hhbmdlbG9nIGZyb20gZ251bGliIgorICAgIGZp CisgIGZpCisKKyAgY2FzZSAkU0tJUF9QTyBpbgorICAnJykKKyAgICBpZiB0ZXN0IC1kIHBv OyB0aGVuCisgICAgICB1cGRhdGVfcG9fZmlsZXMgcG8gJHBhY2thZ2UgfHwgcmV0dXJuCisg ICAgZmkKKworICAgIGlmIHRlc3QgLWQgcnVudGltZS1wbzsgdGhlbgorICAgICAgdXBkYXRl X3BvX2ZpbGVzIHJ1bnRpbWUtcG8gJHBhY2thZ2UtcnVudGltZSB8fCByZXR1cm4KKyAgICBm aTs7CisgIGVzYWMKKworICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIGJvb3RzdHJh cF9wb3N0X3B1bGxfaG9vayBcCisgICAgfHwgZGllICJib290c3RyYXBfcG9zdF9wdWxsX2hv b2sgZmFpbGVkIgorCisgICMgRG9uJ3QgcHJvY2VlZCBpZiB0aGVyZSBhcmUgdW5pbml0aWFs aXplZCBzdWJtb2R1bGVzLiAgSW4gcGFydGljdWxhciwKKyAgIyBhdXRvZ2VuLnNoIHdpbGwg cmVtb3ZlIGRhbmdsaW5nIGxpbmtzLCB3aGljaCBtaWdodCBiZSBsaW5rcyBpbnRvCisgICMg dW5pbml0aWFsaXplZCBzdWJtb2R1bGVzLgorICAjIEJ1dCBpdCdzIE9LIGlmIHRoZSAnZ251 bGliJyBzdWJtb2R1bGUgaXMgdW5pbml0aWFsaXplZCwgYXMgbG9uZyBhcworICAjIEdOVUxJ Ql9TUkNESVIgaXMgc2V0LgorICBpZiAkdXNlX2dpdDsgdGhlbgorICAgICMgVW5pbml0aWFs aXplZCBzdWJtb2R1bGVzIGFyZSBsaXN0ZWQgd2l0aCBhbiBpbml0aWFsIGRhc2guCisgICAg dW5pbml0aWFsaXplZD1gZ2l0IHN1Ym1vZHVsZSB8IGdyZXAgJ14tJyB8IGF3ayAneyBwcmlu dCAkMiB9J2AKKyAgICBpZiB0ZXN0IC1uICIkR05VTElCX1NSQ0RJUiI7IHRoZW4KKyAgICAg IHVuaW5pdGlhbGl6ZWQ9YGVjaG8gIiR1bmluaXRpYWxpemVkIiB8IGdyZXAgLXYgJ15nbnVs aWIkJ2AKKyAgICBmaQorICAgIGlmIHRlc3QgLW4gIiR1bmluaXRpYWxpemVkIjsgdGhlbgor ICAgICAgdW5pbml0X2NvbW1hPWBlY2hvICIkdW5pbml0aWFsaXplZCIgfCB0ciAnXG4nICcs JyB8IHNlZCAtZSAnc3wsJHwufCdgCisgICAgICBkaWUgIlNvbWUgZ2l0IHN1Ym1vZHVsZXMg YXJlIG5vdCBpbml0aWFsaXplZDogIiR1bmluaXRfY29tbWEgXAorICAgICAgICAgICJFaXRo ZXIgdXNlIG9wdGlvbiAnLS1uby1naXQnLCIgXAorICAgICAgICAgICJvciBydW4gJ2dpdCBz dWJtb2R1bGUgdXBkYXRlIC0taW5pdCcgYW5kIGJvb3RzdHJhcCBhZ2Fpbi4iCisgICAgZmkK KyAgZmkKKworICBpZiB0ZXN0IC1mICIkbWVkaXIiL2F1dG9nZW4uc2g7IHRoZW4KKyAgICBl Y2hvICIkMDogZG9uZS4gIE5vdyB5b3UgY2FuIHJ1biAnJG1lZGlyL2F1dG9nZW4uc2gnLiIK KyAgZmkKK30KKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHZXQgdHJhbnNs YXRpb25zLiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitkb3dubG9hZF9wb19m aWxlcygpIHsKKyAgc3ViZGlyPSQxCisgIGRvbWFpbj0kMgorICBlY2hvICIkbWU6IGdldHRp bmcgdHJhbnNsYXRpb25zIGludG8gJHN1YmRpciBmb3IgJGRvbWFpbi4uLiIKKyAgY21kPSQo cHJpbnRmICIkcG9fZG93bmxvYWRfY29tbWFuZF9mb3JtYXQiICIkc3ViZGlyIiAiJGRvbWFp biIpCisgIGV2YWwgIiRjbWQiCit9CisKKyMgTWlycm9yIC5wbyBmaWxlcyB0byAkcG9fZGly Ly5yZWZlcmVuY2UgYW5kIGNvcHkgb25seSB0aGUgbmV3CisjIG9yIG1vZGlmaWVkIG9uZXMg aW50byAkcG9fZGlyLiAgQWxzbyB1cGRhdGUgJHBvX2Rpci9MSU5HVUFTLgorIyBOb3RlIHBv IGZpbGVzIHRoYXQgZXhpc3QgbG9jYWxseSBvbmx5IGFyZSBsZWZ0IGluICRwb19kaXIgYnV0 IHdpbGwKKyMgbm90IGJlIGluY2x1ZGVkIGluIExJTkdVQVMgYW5kIGhlbmNlIHdpbGwgbm90 IGJlIGRpc3RyaWJ1dGVkLgordXBkYXRlX3BvX2ZpbGVzKCkgeworICAjIERpcmVjdG9yeSBj b250YWluaW5nIHByaW1hcnkgLnBvIGZpbGVzLgorICAjIE92ZXJ3cml0ZSB0aGVtIG9ubHkg d2hlbiB3ZSdyZSBzdXJlIGEgLnBvIGZpbGUgaXMgbmV3LgorICBwb19kaXI9JDEKKyAgZG9t YWluPSQyCisKKyAgIyBNaXJyb3IgKi5wbyBmaWxlcyBpbnRvIHRoaXMgZGlyLgorICAjIFVz dWFsbHkgY29udGFpbnMgKi5zMSBjaGVja3N1bSBmaWxlcy4KKyAgcmVmX3BvX2Rpcj0iJHBv X2Rpci8ucmVmZXJlbmNlIgorCisgIHRlc3QgLWQgJHJlZl9wb19kaXIgfHwgbWtkaXIgJHJl Zl9wb19kaXIgfHwgcmV0dXJuCisgIGRvd25sb2FkX3BvX2ZpbGVzICRyZWZfcG9fZGlyICRk b21haW4gXAorICAgICYmIGxzICIkcmVmX3BvX2RpciIvKi5wbyAyPi9kZXYvbnVsbCB8Cisg ICAgICBzZWQgJ3N8LiovfHw7IHN8XC5wbyR8fCcgPiAiJHBvX2Rpci9MSU5HVUFTIiB8fCBy ZXR1cm4KKworICBmb3IgcG8gaW4geCAkKGxzICRyZWZfcG9fZGlyIHwgc2VkIC1uICdzL1wu cG8kLy9wJyk7IGRvCisgICAgY2FzZSAkcG8gaW4geCkgY29udGludWU7OyBlc2FjCisgICAg bmV3X3BvPSIkcmVmX3BvX2Rpci8kcG8ucG8iCisgICAgY2tzdW1fZmlsZT0iJHJlZl9wb19k aXIvJHBvLnMxIgorICAgIGlmICEgdGVzdCAtZiAiJGNrc3VtX2ZpbGUiIHx8CisgICAgICAg ICEgdGVzdCAtZiAiJHBvX2Rpci8kcG8ucG8iIHx8CisgICAgICAgICEgJFNIQTFTVU0gLWMg IiRja3N1bV9maWxlIiA8ICIkbmV3X3BvIiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAg ICBlY2hvICIkbWU6IHVwZGF0ZWQgJHBvX2Rpci8kcG8ucG8uLi4iCisgICAgICBjcCAiJG5l d19wbyIgIiRwb19kaXIvJHBvLnBvIiBcCisgICAgICAgICAgJiYgJFNIQTFTVU0gPCAiJG5l d19wbyIgPiAiJGNrc3VtX2ZpbGUiIHx8IHJldHVybgorICAgIGZpCisgIGRvbmUKK30KKwor IyAtLS0tLS0tLSBHZW5lcmF0ZSBmaWxlcyBhdXRvbWF0aWNhbGx5IGZyb20gZXhpc3Rpbmcg c291cmNlcy4gIC0tLS0tLS0tLS0tLS0tCisKK2F1dG9nZW5fdXNhZ2UoKSB7CisgIGNhdCA8 PEVPRgorVXNhZ2U6ICRtZSBbT1BUSU9OXS4uLgorQm9vdHN0cmFwIHRoaXMgcGFja2FnZSBm cm9tIHRoZSBjaGVja2VkLW91dCBzb3VyY2VzLCBwaGFzZSAyOgorR2VuZXJhdGUgZmlsZXMg ZnJvbSBsb2NhbCBmaWxlcyAobm8gbmV0d29yayBhY2Nlc3MpLgorCitPcHRpb25hbCBlbnZp cm9ubWVudCB2YXJpYWJsZXM6CisgIEdOVUxJQl9TUkNESVIgICAgICAgICAgICBTcGVjaWZp ZXMgdGhlIGxvY2FsIGRpcmVjdG9yeSB3aGVyZSBnbnVsaWIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNvdXJjZXMgcmVzaWRlLiAgVXNlIHRoaXMgaWYgeW91IGFscmVhZHkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgZ251bGliIHNvdXJjZXMgb24geW91ciBt YWNoaW5lLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IHRvIHVz ZSB0aGVzZSBzb3VyY2VzLgorCitPcHRpb25zOgorICAtLWNvcHkgICAgICAgICAgICAgICAg ICAgQ29weSBmaWxlcyBpbnN0ZWFkIG9mIGNyZWF0aW5nIHN5bWJvbGljIGxpbmtzLgorICAt LWZvcmNlICAgICAgICAgICAgICAgICAgQXR0ZW1wdCB0byBib290c3RyYXAgZXZlbiBpZiB0 aGUgc291cmNlcyBzZWVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgdG8gaGF2 ZSBiZWVuIGNoZWNrZWQgb3V0LgorRU9GCisgIGJvb3RzdHJhcF9wcmludF9vcHRpb25fdXNh Z2VfaG9vaworICBjYXQgPDxFT0YKK0lmIHRoZSBmaWxlIGJvb3RzdHJhcC5jb25mIGV4aXN0 cyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhpcyBzY3JpcHQsIGl0cworY29udGVudHMg YXJlIHJlYWQgYXMgc2hlbGwgdmFyaWFibGVzIHRvIGNvbmZpZ3VyZSB0aGUgYm9vdHN0cmFw LgorCitGb3IgYnVpbGQgcHJlcmVxdWlzaXRlcywgZW52aXJvbm1lbnQgdmFyaWFibGVzIGxp a2UgXCRBVVRPQ09ORiBhbmQgXCRBTVRBUgorYXJlIGhvbm9yZWQuCisKK0dudWxpYiBzb3Vy Y2VzIGFyZSBhc3N1bWVkIHRvIGJlIHByZXNlbnQ6CisgICogaW4gXCRHTlVMSUJfU1JDRElS LCBpZiB0aGF0IGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwKKyAgKiBvdGhlcndpc2Us IGluIHRoZSAnZ251bGliJyBzdWJtb2R1bGUsIGlmIHN1Y2ggYSBzdWJtb2R1bGUgaXMgY29u ZmlndXJlZCwKKyAgKiBvdGhlcndpc2UsIGluIHRoZSAnZ251bGliJyBzdWJkaXJlY3Rvcnku CisKK1J1bm5pbmcgd2l0aG91dCBhcmd1bWVudHMgd2lsbCBzdWZmaWNlIGluIG1vc3QgY2Fz ZXMuCitFT0YKK30KKworCit2ZXJzaW9uX2NvbnRyb2xsZWRfZmlsZSgpIHsKKyAgcGFyZW50 PSQxCisgIGZpbGU9JDIKKyAgaWYgdGVzdCAtZCAuZ2l0OyB0aGVuCisgICAgZ2l0IHJtIC1u ICIkZmlsZSIgPiAvZGV2L251bGwgMj4mMQorICBlbGlmIHRlc3QgLWQgLnN2bjsgdGhlbgor ICAgIHN2biBsb2cgLXIgSEVBRCAiJGZpbGUiID4gL2Rldi9udWxsIDI+JjEKKyAgZWxpZiB0 ZXN0IC1kIENWUzsgdGhlbgorICAgIGdyZXAgLUYgIi8ke2ZpbGUjIyovfS8iICIkcGFyZW50 L0NWUy9FbnRyaWVzIiAyPi9kZXYvbnVsbCB8CisgICAgICAgICAgICAgZ3JlcCAnXi9bXi9d Ki9bMC05XScgPiAvZGV2L251bGwKKyAgZWxzZQorICAgIHdhcm5fICJubyB2ZXJzaW9uIGNv bnRyb2wgZm9yICRmaWxlPyIKKyAgICBmYWxzZQorICBmaQorfQorCisjIFN0cmlwIGJsYW5r IGFuZCBjb21tZW50IGxpbmVzIHRvIGxlYXZlIHNpZ25pZmljYW50IGVudHJpZXMuCitnaXRp Z25vcmVfZW50cmllcygpIHsKKyAgc2VkICcvXiMvZDsgL14kL2QnICIkQCIKK30KKworIyBJ ZiAkU1RSIGlzIG5vdCBhbHJlYWR5IG9uIGEgbGluZSBieSBpdHNlbGYgaW4gJEZJTEUsIGlu c2VydCBpdCBhdCB0aGUgc3RhcnQuCisjIEVudHJpZXMgYXJlIGluc2VydGVkIGF0IHRoZSBz dGFydCBvZiB0aGUgaWdub3JlIGxpc3QgdG8gZW5zdXJlIGV4aXN0aW5nCisjIGVudHJpZXMg c3RhcnRpbmcgd2l0aCAhIGFyZSBub3Qgb3ZlcnJpZGRlbi4gIFN1Y2ggZW50cmllcyBzdXBw b3J0CisjIHdoaXRlbGlzdGluZyBleGNlcHRpb25zIGFmdGVyIGEgbW9yZSBnZW5lcmljIGJs YWNrbGlzdCBwYXR0ZXJuLgoraW5zZXJ0X2lmX2Fic2VudCgpIHsKKyAgZmlsZT0kMQorICBz dHI9JDIKKyAgdGVzdCAtZiAkZmlsZSB8fCB0b3VjaCAkZmlsZQorICB0ZXN0IC1yICRmaWxl IHx8IGRpZSAiRXJyb3I6IGZhaWxlZCB0byByZWFkIGlnbm9yZSBmaWxlOiAkZmlsZSIKKyAg ZHVwbGljYXRlX2VudHJpZXM9JChnaXRpZ25vcmVfZW50cmllcyAkZmlsZSB8IHNvcnQgfCB1 bmlxIC1kKQorICBpZiBbICIkZHVwbGljYXRlX2VudHJpZXMiIF0gOyB0aGVuCisgICAgZGll ICJFcnJvcjogRHVwbGljYXRlIGVudHJpZXMgaW4gJGZpbGU6ICIgJGR1cGxpY2F0ZV9lbnRy aWVzCisgIGZpCisgIGxpbmVzb2xkPSQoZ2l0aWdub3JlX2VudHJpZXMgJGZpbGUgfCB3YyAt bCkKKyAgbGluZXNuZXc9JCggeyBlY2hvICIkc3RyIjsgY2F0ICRmaWxlOyB9IHwgZ2l0aWdu b3JlX2VudHJpZXMgfCBzb3J0IC11IHwgd2MgLWwpCisgIGlmIFsgJGxpbmVzb2xkICE9ICRs aW5lc25ldyBdIDsgdGhlbgorICAgIHsgZWNobyAiJHN0ciIgfCBjYXQgLSAkZmlsZSA+ICRm aWxlLmJhayAmJiBtdiAkZmlsZS5iYWsgJGZpbGU7IH0gXAorICAgICAgfHwgZGllICJpbnNl cnRfaWZfYWJzZW50ICRmaWxlICRzdHI6IGZhaWxlZCIKKyAgZmkKK30KKworIyBBZGp1c3Qg JFBBVFRFUk4gZm9yICRWQ19JR05PUkVfRklMRSBhbmQgaW5zZXJ0IGl0IHdpdGgKKyMgaW5z ZXJ0X2lmX2Fic2VudC4KK2luc2VydF92Y19pZ25vcmUoKSB7CisgIHZjX2lnbm9yZV9maWxl PSIkMSIKKyAgcGF0dGVybj0iJDIiCisgIGNhc2UgJHZjX2lnbm9yZV9maWxlIGluCisgICou Z2l0aWdub3JlKQorICAgICMgQSAuZ2l0aWdub3JlIGVudHJ5IHRoYXQgZG9lcyBub3Qgc3Rh cnQgd2l0aCAnLycgYXBwbGllcworICAgICMgcmVjdXJzaXZlbHkgdG8gc3ViZGlyZWN0b3Jp ZXMsIHNvIHByZXBlbmQgJy8nIHRvIGV2ZXJ5CisgICAgIyAuZ2l0aWdub3JlIGVudHJ5Lgor ICAgIHBhdHRlcm49JChlY2hvICIkcGF0dGVybiIgfCBzZWQgcyxeLC8sKTs7CisgIGVzYWMK KyAgaW5zZXJ0X2lmX2Fic2VudCAiJHZjX2lnbm9yZV9maWxlIiAiJHBhdHRlcm4iCit9CisK K3N5bWxpbmtfdG9fZGlyKCkKK3sKKyAgc3JjPSQxLyQyCisgIGRzdD0kezMtJDJ9CisKKyAg dGVzdCAtZiAiJHNyYyIgJiYgeworCisgICAgIyBJZiB0aGUgZGVzdGluYXRpb24gZGlyZWN0 b3J5IGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBpdC4KKyAgICAjIFRoaXMgaXMgcmVxdWlyZWQg YXQgbGVhc3QgZm9yICJsaWIvdW5pd2lkdGgvY2prLmgiLgorICAgIGRzdF9kaXI9JChkaXJu YW1lICIkZHN0IikKKyAgICBpZiAhIHRlc3QgLWQgIiRkc3RfZGlyIjsgdGhlbgorICAgICAg bWtkaXIgLXAgIiRkc3RfZGlyIgorCisgICAgICAjIElmIHdlJ3ZlIGp1c3QgY3JlYXRlZCBh IGRpcmVjdG9yeSBsaWtlIGxpYi91bml3aWR0aCwKKyAgICAgICMgdGVsbCB2ZXJzaW9uIGNv bnRyb2wgc3lzdGVtKHMpIGl0J3MgaWdub3JhYmxlLgorICAgICAgIyBGSVhNRTogZm9yIG5v dywgdGhpcyBkb2VzIG9ubHkgb25lIGxldmVsCisgICAgICBwYXJlbnQ9JChkaXJuYW1lICIk ZHN0X2RpciIpCisgICAgICBmb3IgZG90X2lnIGluIHggJHZjX2lnbm9yZTsgZG8KKyAgICAg ICAgdGVzdCAkZG90X2lnID0geCAmJiBjb250aW51ZQorICAgICAgICBpZz0kcGFyZW50LyRk b3RfaWcKKyAgICAgICAgaW5zZXJ0X3ZjX2lnbm9yZSAkaWcgIiR7ZHN0X2RpciMjKi99LyIK KyAgICAgIGRvbmUKKyAgICBmaQorCisgICAgaWYgJGNvcHk7IHRoZW4KKyAgICAgIHsKKyAg ICAgICAgdGVzdCAhIC1oICIkZHN0IiB8fCB7CisgICAgICAgICAgZWNobyAiJG1lOiBybSAt ZiAkZHN0IiAmJgorICAgICAgICAgIHJtIC1mICIkZHN0IgorICAgICAgICB9CisgICAgICB9 ICYmCisgICAgICB0ZXN0IC1mICIkZHN0IiAmJgorICAgICAgY21wIC1zICIkc3JjIiAiJGRz dCIgfHwgeworICAgICAgICBlY2hvICIkbWU6IGNwIC1mcCAkc3JjICRkc3QiICYmCisgICAg ICAgIGNwIC1mcCAiJHNyYyIgIiRkc3QiCisgICAgICB9CisgICAgZWxzZQorICAgICAgIyBM ZWF2ZSBhbnkgZXhpc3Rpbmcgc3ltbGluayBhbG9uZSwgaWYgaXQgYWxyZWFkeSBwb2ludHMg dG8gdGhlIHNvdXJjZSwKKyAgICAgICMgc28gdGhhdCBicm9rZW4gYnVpbGQgdG9vbHMgdGhh dCBjYXJlIGFib3V0IHN5bWxpbmsgdGltZXMKKyAgICAgICMgYXJlbid0IGNvbmZ1c2VkIGlu dG8gZG9pbmcgdW5uZWNlc3NhcnkgYnVpbGRzLiAgQ29udmVyc2VseSwgaWYgdGhlCisgICAg ICAjIGV4aXN0aW5nIHN5bWxpbmsncyB0aW1lc3RhbXAgaXMgb2xkZXIgdGhhbiB0aGUgc291 cmNlLCBtYWtlIGl0IGFmcmVzaCwKKyAgICAgICMgc28gdGhhdCBicm9rZW4gdG9vbHMgYXJl bid0IGNvbmZ1c2VkIGludG8gc2tpcHBpbmcgbmVlZGVkIGJ1aWxkcy4gIFNlZQorICAgICAg IyA8aHR0cHM6Ly9saXN0cy5nbnUub3JnL3IvYnVnLWdudWxpYi8yMDExLTA1L21zZzAwMzI2 Lmh0bWw+LgorICAgICAgdGVzdCAtaCAiJGRzdCIgJiYKKyAgICAgIHNyY19scz0kKGxzIC1k aUwgIiRzcmMiIDI+L2Rldi9udWxsKSAmJiBzZXQgJHNyY19scyAmJiBzcmNfaT0kMSAmJgor ICAgICAgZHN0X2xzPSQobHMgLWRpTCAiJGRzdCIgMj4vZGV2L251bGwpICYmIHNldCAkZHN0 X2xzICYmIGRzdF9pPSQxICYmCisgICAgICB0ZXN0ICIkc3JjX2kiID0gIiRkc3RfaSIgJiYK KyAgICAgIGJvdGhfbHM9JChscyAtZHQgIiRzcmMiICIkZHN0IikgJiYKKyAgICAgIHRlc3Qg IlgkYm90aF9scyIgPSAiWCRkc3Qkbmwkc3JjIiB8fCB7CisgICAgICAgIGRvdF9kb3RzPQor ICAgICAgICBjYXNlICRzcmMgaW4KKyAgICAgICAgLyopIDs7CisgICAgICAgICopCisgICAg ICAgICAgY2FzZSAvJGRzdC8gaW4KKyAgICAgICAgICAqLy8qIHwgKi8uLi8qIHwgKi8uLyog fCAvKi8qLyovKi8qLykKKyAgICAgICAgICAgICBkaWUgImludmFsaWQgc3ltbGluayBjYWxj dWxhdGlvbjogJHNyYyAtPiAkZHN0Ijs7CisgICAgICAgICAgLyovKi8qLyovKSAgICBkb3Rf ZG90cz0uLi8uLi8uLi87OworICAgICAgICAgIC8qLyovKi8pICAgICAgZG90X2RvdHM9Li4v Li4vOzsKKyAgICAgICAgICAvKi8qLykgICAgICAgIGRvdF9kb3RzPS4uLzs7CisgICAgICAg ICAgZXNhYzs7CisgICAgICAgIGVzYWMKKworICAgICAgICBlY2hvICIkbWU6IGxuIC1mcyAk ZG90X2RvdHMkc3JjICRkc3QiICYmCisgICAgICAgIGxuIC1mcyAiJGRvdF9kb3RzJHNyYyIg IiRkc3QiCisgICAgICB9CisgICAgZmkKKyAgfQorfQorCisjIFJlZ2VuZXJhdGUgYWxsIGF1 dG9nZW5lcmF0YWJsZSBmaWxlcyB0aGF0IGFyZSBvbWl0dGVkIGZyb20gdGhlCisjIHZlcnNp b24gY29udHJvbCByZXBvc2l0b3J5LiAgSW4gcGFydGljdWxhciwgcmVnZW5lcmF0ZSBhbGwK KyMgYWNsb2NhbC5tNCwgY29uZmlnLmguaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUgZmls ZXMgd2l0aCBuZXcKKyMgdmVyc2lvbnMgb2YgYXV0b2NvbmYgb3IgYXV0b21ha2UuCithdXRv Z2VuKCkKK3sKKyAgIyBFbnN1cmUgdGhhdCBDRFBBVEggaXMgbm90IHNldC4gIE90aGVyd2lz ZSwgdGhlIG91dHB1dCBmcm9tIGNkCisgICMgd291bGQgY2F1c2UgdHJvdWJsZSBpbiBhdCBs ZWFzdCBvbmUgdXNlIGJlbG93LgorICAodW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEg JiYgdW5zZXQgQ0RQQVRICisKKyAgIyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBtYXkg YmUgc2V0IGJ5IHRoZSB1c2VyLgorICA6ICIke0FVVE9QT0lOVD1hdXRvcG9pbnR9IgorICA6 ICIke0FVVE9SRUNPTkY9YXV0b3JlY29uZn0iCisKKyAgaWYgdGVzdCAiJHZjX2lnbm9yZSIg PSBhdXRvOyB0aGVuCisgICAgdmNfaWdub3JlPQorICAgIHRlc3QgLWQgLmdpdCAmJiB2Y19p Z25vcmU9LmdpdGlnbm9yZQorICAgIHRlc3QgLWQgQ1ZTICYmIHZjX2lnbm9yZT0iJHZjX2ln bm9yZSAuY3ZzaWdub3JlIgorICBmaQorCisKKyAgIyBQYXJzZSBvcHRpb25zLgorCisgICMg V2hldGhlciB0byB1c2UgY29waWVzIGluc3RlYWQgb2Ygc3ltbGlua3MuCisgIGNvcHk9ZmFs c2UKKworICBmb3Igb3B0aW9uCisgIGRvCisgICAgY2FzZSAkb3B0aW9uIGluCisgICAgLS1o ZWxwKQorICAgICAgYXV0b2dlbl91c2FnZQorICAgICAgcmV0dXJuOzsKKyAgICAtLXZlcnNp b24pCisgICAgICBzZXQgLWUKKyAgICAgIGVjaG8gImF1dG9nZW4uc2ggJHNjcmlwdGxpYnZl cnNpb24iCisgICAgICBlY2hvICIkY29weXJpZ2h0IgorICAgICAgcmV0dXJuIDAKKyAgICAg IDs7CisgICAgLS1mb3JjZSkKKyAgICAgIGNoZWNrb3V0X29ubHlfZmlsZT07OworICAgIC0t Y29weSkKKyAgICAgIGNvcHk9dHJ1ZTs7CisgICAgKikKKyAgICAgIGJvb3RzdHJhcF9vcHRp b25faG9vayAkb3B0aW9uIHx8IGRpZSAiJG9wdGlvbjogdW5rbm93biBvcHRpb24iOzsKKyAg ICBlc2FjCisgIGRvbmUKKworICB0ZXN0IC16ICIkR05VTElCX1NSQ0RJUiIgfHwgdGVzdCAt ZCAiJEdOVUxJQl9TUkNESVIiIFwKKyAgICB8fCBkaWUgIkVycm9yOiBcJEdOVUxJQl9TUkNE SVIgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgLS1nbnVsaWItc3JjZGlyIiBcCisgICAgICAg ICAgICJvcHRpb24gaXMgc3BlY2lmaWVkLCBidXQgZG9lcyBub3QgZGVub3RlIGEgZGlyZWN0 b3J5IgorCisgIGlmIHRlc3QgLW4gIiRjaGVja291dF9vbmx5X2ZpbGUiICYmIHRlc3QgISAt ciAiJGNoZWNrb3V0X29ubHlfZmlsZSI7IHRoZW4KKyAgICBkaWUgIlJ1bm5pbmcgdGhpcyBz Y3JpcHQgZnJvbSBhIG5vbi1jaGVja2VkLW91dCBkaXN0cmlidXRpb24gaXMgcmlza3kuIgor ICBmaQorCisgIGlmICR1c2VfZ251bGliOyB0aGVuCisgICAgaWYgdGVzdCAteiAiJEdOVUxJ Ql9TUkNESVIiOyB0aGVuCisgICAgICBnbnVsaWJfcGF0aD0kKHRlc3QgLWYgLmdpdG1vZHVs ZXMgJiYKKyAgICAgICAgICAgICAgICAgICAgZ2l0IGNvbmZpZyAtLWZpbGUgLmdpdG1vZHVs ZXMgc3VibW9kdWxlLmdudWxpYi5wYXRoKQorICAgICAgdGVzdCAteiAiJGdudWxpYl9wYXRo IiAmJiBnbnVsaWJfcGF0aD1nbnVsaWIKKyAgICAgIEdOVUxJQl9TUkNESVI9JGdudWxpYl9w YXRoCisgICAgZmkKKyAgZmkKKworICAjIERpZSBpZiB0aGVyZSBpcyBubyBBQ19DT05GSUdf QVVYX0RJUigkYnVpbGRfYXV4KSBsaW5lIGluIGNvbmZpZ3VyZS5hYy4KKyAgZm91bmRfYXV4 X2Rpcj1ubworICBncmVwICdeWwkgXSpBQ19DT05GSUdfQVVYX0RJUihcWyciJGJ1aWxkX2F1 eCInXSknIGNvbmZpZ3VyZS5hYyBcCisgICAgICA+L2Rldi9udWxsICYmIGZvdW5kX2F1eF9k aXI9eWVzCisgIGdyZXAgJ15bCSBdKkFDX0NPTkZJR19BVVhfRElSKCciJGJ1aWxkX2F1eCIn KScgY29uZmlndXJlLmFjIFwKKyAgICAgID4vZGV2L251bGwgJiYgZm91bmRfYXV4X2Rpcj15 ZXMKKyAgdGVzdCAkZm91bmRfYXV4X2RpciA9IHllcyBcCisgICAgfHwgZGllICJjb25maWd1 cmUuYWMgbGFja3MgJ0FDX0NPTkZJR19BVVhfRElSKFskYnVpbGRfYXV4XSknOyBhZGQgaXQi CisKKyAgIyBJZiAkYnVpbGRfYXV4IGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBpdCBub3csIG90 aGVyd2lzZSBzb21lIGJpdHMKKyAgIyBiZWxvdyB3aWxsIG1hbGZ1bmN0aW9uLiAgSWYgY3Jl YXRpbmcgaXQsIGFsc28gbWFyayBpdCBhcyBpZ25vcmVkLgorICBpZiB0ZXN0ICEgLWQgJGJ1 aWxkX2F1eDsgdGhlbgorICAgIG1rZGlyICRidWlsZF9hdXgKKyAgICBmb3IgZG90X2lnIGlu IHggJHZjX2lnbm9yZTsgZG8KKyAgICAgIHRlc3QgJGRvdF9pZyA9IHggJiYgY29udGludWUK KyAgICAgIGluc2VydF92Y19pZ25vcmUgJGRvdF9pZyAkYnVpbGRfYXV4LworICAgIGRvbmUK KyAgZmkKKworICBjaGVja19idWlsZF9wcmVyZXF1aXNpdGVzIGZhbHNlCisKKyAgdXNlX2xp YnRvb2w9MAorICAjIFdlJ2QgbGlrZSB0byB1c2UgZ3JlcCAtRSwgdG8gc2VlIGlmIGFueSBv ZiBMVF9JTklULAorICAjIEFDX1BST0dfTElCVE9PTCwgQU1fUFJPR19MSUJUT09MIGlzIHVz ZWQgaW4gY29uZmlndXJlLmFjLAorICAjIGJ1dCB0aGF0J3Mgbm90IHBvcnRhYmxlIGVub3Vn aCAoZS5nLiwgZm9yIFNvbGFyaXMpLgorICBncmVwICdeWwkgXSpBW0NNXV9QUk9HX0xJQlRP T0wnIGNvbmZpZ3VyZS5hYyA+L2Rldi9udWxsIFwKKyAgICAmJiB1c2VfbGlidG9vbD0xCisg IGdyZXAgJ15bCSBdKkxUX0lOSVQnIGNvbmZpZ3VyZS5hYyA+L2Rldi9udWxsIFwKKyAgICAm JiB1c2VfbGlidG9vbD0xCisgIGlmIHRlc3QgJHVzZV9saWJ0b29sID0gMTsgdGhlbgorICAg IGZpbmRfdG9vbCBMSUJUT09MSVpFIGdsaWJ0b29saXplIGxpYnRvb2xpemUKKyAgZmkKKwor ICBpZiAkdXNlX2dudWxpYjsgdGhlbgorICAgIGdudWxpYl90b29sPSRHTlVMSUJfU1JDRElS L2dudWxpYi10b29sCisgICAgPCRnbnVsaWJfdG9vbCB8fCByZXR1cm4KKyAgZmkKKworICAj IE5PVEU6IHdlIGhhdmUgdG8gYmUgY2FyZWZ1bCB0byBydW4gYm90aCBhdXRvcG9pbnQgYW5k IGxpYnRvb2xpemUKKyAgIyBiZWZvcmUgZ251bGliLXRvb2wsIHNpbmNlIGdudWxpYi10b29s IGlzIGxpa2VseSB0byBwcm92aWRlIG5ld2VyCisgICMgdmVyc2lvbnMgb2YgZmlsZXMgImlu c3RhbGxlZCIgYnkgdGhlc2UgdHdvIHByb2dyYW1zLgorICAjIFRoZW4sICphZnRlciogZ251 bGliLXRvb2wgKHNlZSBiZWxvdyksIHdlIGhhdmUgdG8gYmUgY2FyZWZ1bCB0bworICAjIHJ1 biBhdXRvcmVjb25mIGluIHN1Y2ggYSB3YXkgdGhhdCBpdCBkb2VzIG5vdCBydW4gZWl0aGVy IG9mIHRoZXNlCisgICMgdHdvIGp1c3QtcHJlLXJ1biBwcm9ncmFtcy4KKworICAjIEltcG9y dCBmcm9tIGdldHRleHQuCisgIHdpdGhfZ2V0dGV4dD15ZXMKKyAgZ3JlcCAnXlsJIF0qQU1f R05VX0dFVFRFWFRfVkVSU0lPTignIGNvbmZpZ3VyZS5hYyA+L2Rldi9udWxsIHx8IFwKKyAg ICAgIHdpdGhfZ2V0dGV4dD1ubworCisgIGlmIHRlc3QgJHdpdGhfZ2V0dGV4dCA9IHllcyB8 fCB0ZXN0ICR1c2VfbGlidG9vbCA9IDE7IHRoZW4KKworICAgIHRlbXBiYXNlPS5ib290c3Ry YXAkJAorICAgIHRyYXAgInJtIC1mICR0ZW1wYmFzZS4wICR0ZW1wYmFzZS4xIiBIVVAgSU5U IFBJUEUgVEVSTQorCisgICAgPiAkdGVtcGJhc2UuMCA+ICR0ZW1wYmFzZS4xICYmCisgICAg ZmluZCAuICEgLXR5cGUgZCAtcHJpbnQgfCBzb3J0ID4gJHRlbXBiYXNlLjAgfHwgcmV0dXJu CisKKyAgICBpZiB0ZXN0ICR3aXRoX2dldHRleHQgPSB5ZXM7IHRoZW4KKyAgICAgICMgUmVs ZWFzZWQgYXV0b3BvaW50IGhhcyB0aGUgdGVuZGVuY3kgdG8gaW5zdGFsbCBtYWNyb3MgdGhh dCBoYXZlIGJlZW4KKyAgICAgICMgb2Jzb2xldGVkIGluIGN1cnJlbnQgZ251bGliLCBzbyBy dW4gdGhpcyBiZWZvcmUgZ251bGliLXRvb2wuCisgICAgICBlY2hvICIkMDogJEFVVE9QT0lO VCAtLWZvcmNlIgorICAgICAgJEFVVE9QT0lOVCAtLWZvcmNlIHx8IHJldHVybgorICAgIGZp CisKKyAgICAjIEF1dG9yZWNvbmYgcnVucyBhY2xvY2FsIGJlZm9yZSBsaWJ0b29saXplLCB3 aGljaCBjYXVzZXMgc3B1cmlvdXMKKyAgICAjIHdhcm5pbmdzIGlmIHRoZSBpbml0aWFsIGFj bG9jYWwgaXMgY29uZnVzZWQgYnkgdGhlIGxpYnRvb2xpemVkCisgICAgIyAob3Igd29yc2Ug b3V0LW9mLWRhdGUpIG1hY3JvIGRpcmVjdG9yeS4KKyAgICAjIGxpYnRvb2xpemUgMS45YiBh ZGRlZCB0aGUgLS1pbnN0YWxsIG9wdGlvbjsgYnV0IHdlIHN1cHBvcnQgYmFjaworICAgICMg dG8gbGlidG9vbGl6ZSAxLjUuMjIsIHdoZXJlIHRoZSBpbnN0YWxsIGFjdGlvbiB3YXMgZGVm YXVsdC4KKyAgICBpZiB0ZXN0ICR1c2VfbGlidG9vbCA9IDE7IHRoZW4KKyAgICAgIGluc3Rh bGw9CisgICAgICBjYXNlICQoJExJQlRPT0xJWkUgLS1oZWxwKSBpbgorICAgICAgICAqLS1p bnN0YWxsKikgaW5zdGFsbD0tLWluc3RhbGwgOzsKKyAgICAgIGVzYWMKKyAgICAgIGVjaG8g InJ1bm5pbmc6ICRMSUJUT09MSVpFICRpbnN0YWxsIC0tY29weSIKKyAgICAgICRMSUJUT09M SVpFICRpbnN0YWxsIC0tY29weQorICAgIGZpCisKKyAgICBmaW5kIC4gISAtdHlwZSBkIC1w cmludCB8IHNvcnQgPiR0ZW1wYmFzZS4xCisgICAgb2xkX0lGUz0kSUZTCisgICAgSUZTPSRu bAorICAgIGZvciBmaWxlIGluICQoY29tbSAtMTMgJHRlbXBiYXNlLjAgJHRlbXBiYXNlLjEp OyBkbworICAgICAgSUZTPSRvbGRfSUZTCisgICAgICBwYXJlbnQ9JHtmaWxlJS8qfQorICAg ICAgdmVyc2lvbl9jb250cm9sbGVkX2ZpbGUgIiRwYXJlbnQiICIkZmlsZSIgfHwgeworICAg ICAgICBmb3IgZG90X2lnIGluIHggJHZjX2lnbm9yZTsgZG8KKyAgICAgICAgICB0ZXN0ICRk b3RfaWcgPSB4ICYmIGNvbnRpbnVlCisgICAgICAgICAgaWc9JHBhcmVudC8kZG90X2lnCisg ICAgICAgICAgaW5zZXJ0X3ZjX2lnbm9yZSAiJGlnIiAiJHtmaWxlIyMqL30iCisgICAgICAg IGRvbmUKKyAgICAgIH0KKyAgICBkb25lCisgICAgSUZTPSRvbGRfSUZTCisKKyAgICBybSAt ZiAkdGVtcGJhc2UuMCAkdGVtcGJhc2UuMQorICAgIHRyYXAgLSBIVVAgSU5UIFBJUEUgVEVS TQorICBmaQorCisgICMgSW1wb3J0IGZyb20gZ251bGliLgorCisgIGlmICR1c2VfZ251bGli OyB0aGVuCisgICAgZ251bGliX3Rvb2xfb3B0aW9ucz0iXAorICAgICAtLW5vLWNoYW5nZWxv Z1wKKyAgICAgLS1hdXgtZGlyPSRidWlsZF9hdXhcCisgICAgIC0tZG9jLWJhc2U9JGRvY19i YXNlXAorICAgICAtLWxpYj0kZ251bGliX25hbWVcCisgICAgIC0tbTQtYmFzZT0kbTRfYmFz ZS9cCisgICAgIC0tc291cmNlLWJhc2U9JHNvdXJjZV9iYXNlL1wKKyAgICAgLS10ZXN0cy1i YXNlPSR0ZXN0c19iYXNlXAorICAgICAtLWxvY2FsLWRpcj0kbG9jYWxfZ2xfZGlyXAorICAg ICAkZ251bGliX3Rvb2xfb3B0aW9uX2V4dHJhc1wKKyAgICAiCisgICAgaWYgdGVzdCAkdXNl X2xpYnRvb2wgPSAxOyB0aGVuCisgICAgICBjYXNlICIkZ251bGliX3Rvb2xfb3B0aW9ucyAi IGluCisgICAgICAgIConIC0tbGlidG9vbCAnKikgOzsKKyAgICAgICAgKikgZ251bGliX3Rv b2xfb3B0aW9ucz0iJGdudWxpYl90b29sX29wdGlvbnMgLS1saWJ0b29sIiA7OworICAgICAg ZXNhYworICAgIGZpCisgICAgZWNobyAiJDA6ICRnbnVsaWJfdG9vbCAkZ251bGliX3Rvb2xf b3B0aW9ucyAtLWltcG9ydCAuLi4iCisgICAgJGdudWxpYl90b29sICRnbnVsaWJfdG9vbF9v cHRpb25zIC0taW1wb3J0ICRnbnVsaWJfbW9kdWxlcyBcCisgICAgICB8fCBkaWUgImdudWxp Yi10b29sIGZhaWxlZCIKKworICAgIGlmIHRlc3QgJHdpdGhfZ2V0dGV4dCA9IHllcyAmJiB0 ZXN0ICEgLWYgJG00X2Jhc2UvZ2V0dGV4dC5tNDsgdGhlbgorICAgICAgIyBUaGUgZ251bGli LXRvb2wgaW52b2NhdGlvbiBoYXMgcmVtb3ZlZCAkbTRfYmFzZS9nZXR0ZXh0Lm00LCB0aGF0 IHRoZQorICAgICAgIyBBVVRPUE9JTlQgaW52b2NhdGlvbiBoYWQgaW5zdGFsbGVkLiBUaGlz IGNhbiBvY2N1ciB3aGVuIHRoZSBnbnVsaWIKKyAgICAgICMgbW9kdWxlICdnZXR0ZXh0JyB3 YXMgcHJldmlvdXNseSBwcmVzZW50IGJ1dCBpcyBub3cgbm90IHByZXNlbnQgYW55IG1vcmUu CisgICAgICAjIFJlcGVhdCB0aGUgQVVUT1BPSU5UIGludm9jYXRpb24gYW5kIHRoZSBnbnVs aWItdG9vbCBpbnZvY2F0aW9uLgorCisgICAgICBlY2hvICIkMDogJEFVVE9QT0lOVCAtLWZv cmNlIgorICAgICAgJEFVVE9QT0lOVCAtLWZvcmNlIHx8IHJldHVybgorCisgICAgICBlY2hv ICIkMDogJGdudWxpYl90b29sICRnbnVsaWJfdG9vbF9vcHRpb25zIC0taW1wb3J0IC4uLiIK KyAgICAgICRnbnVsaWJfdG9vbCAkZ251bGliX3Rvb2xfb3B0aW9ucyAtLWltcG9ydCAkZ251 bGliX21vZHVsZXMgXAorICAgICAgICB8fCBkaWUgImdudWxpYi10b29sIGZhaWxlZCIKKyAg ICBmaQorCisgICAgZm9yIGZpbGUgaW4gJGdudWxpYl9maWxlczsgZG8KKyAgICAgIHN5bWxp bmtfdG9fZGlyICIkR05VTElCX1NSQ0RJUiIgJGZpbGUgXAorICAgICAgICB8fCBkaWUgImZh aWxlZCB0byBzeW1saW5rICRmaWxlIgorICAgIGRvbmUKKyAgZmkKKworICBib290c3RyYXBf cG9zdF9pbXBvcnRfaG9vayBcCisgICAgfHwgZGllICJib290c3RyYXBfcG9zdF9pbXBvcnRf aG9vayBmYWlsZWQiCisKKyAgIyBSZW1vdmUgYW55IGRhbmdsaW5nIHN5bWxpbmsgbWF0Y2hp bmcgIioubTQiIG9yICIqLltjaF0iIGluIHNvbWUKKyAgIyBnbnVsaWItcG9wdWxhdGVkIGRp cmVjdG9yaWVzLiAgU3VjaCAubTQgZmlsZXMgd291bGQgY2F1c2UgYWNsb2NhbCB0byBmYWls LgorICAjIFRoZSBmb2xsb3dpbmcgcmVxdWlyZXMgR05VIGZpbmQgNC4yLjMgb3IgbmV3ZXIu ICBDb25zaWRlcmluZyB0aGUgdXN1YWwKKyAgIyBwb3J0YWJpbGl0eSBjb25zdHJhaW50cyBv ZiB0aGlzIHNjcmlwdCwgdGhhdCBtYXkgc2VlbSBhIHZlcnkgZGVtYW5kaW5nCisgICMgcmVx dWlyZW1lbnQsIGJ1dCBpdCBzaG91bGQgYmUgb2suICBJZ25vcmUgYW55IGZhaWx1cmUsIHdo aWNoIGlzIGZpbmUsCisgICMgc2luY2UgdGhpcyBpcyBvbmx5IGEgY29udmVuaWVuY2UgdG8g aGVscCBkZXZlbG9wZXJzIGF2b2lkIHRoZSByZWxhdGl2ZWx5CisgICMgdW51c3VhbCBjYXNl IGluIHdoaWNoIGEgc3ltbGlua2VkLXRvIC5tNCBmaWxlIGlzIGdpdC1yZW1vdmVkIGZyb20g Z251bGliCisgICMgYmV0d2VlbiBzdWNjZXNzaXZlIHJ1bnMgb2YgdGhpcyBzY3JpcHQuCisg IGZpbmQgIiRtNF9iYXNlIiAiJHNvdXJjZV9iYXNlIiBcCisgICAgLWRlcHRoIFwoIC1uYW1l ICcqLm00JyAtbyAtbmFtZSAnKi5bY2hdJyBcKSBcCisgICAgLXR5cGUgbCAteHR5cGUgbCAt ZGVsZXRlID4gL2Rldi9udWxsIDI+JjEKKworICAjIEludm9rZSBhdXRvcmVjb25mIHdpdGgg LS1mb3JjZSAtLWluc3RhbGwgdG8gZW5zdXJlIHVwZ3JhZGVzIG9mIHRvb2xzCisgICMgc3Vj aCBhcyB5bHdyYXAuCisgIEFVVE9SRUNPTkZGTEFHUz0iLS12ZXJib3NlIC0taW5zdGFsbCAt LWZvcmNlIC1JICRtNF9iYXNlICRBQ0xPQ0FMX0ZMQUdTIgorICBBVVRPUkVDT05GRkxBR1M9 IiRBVVRPUkVDT05GRkxBR1MgLS1uby1yZWN1cnNpdmUiCisKKyAgIyBUZWxsIGF1dG9yZWNv bmYgbm90IHRvIGludm9rZSBhdXRvcG9pbnQgb3IgbGlidG9vbGl6ZTsgdGhleSB3ZXJlIHJ1 biBhYm92ZS4KKyAgZWNobyAicnVubmluZzogQVVUT1BPSU5UPXRydWUgTElCVE9PTElaRT10 cnVlICRBVVRPUkVDT05GICRBVVRPUkVDT05GRkxBR1MiCisgIEFVVE9QT0lOVD10cnVlIExJ QlRPT0xJWkU9dHJ1ZSAkQVVUT1JFQ09ORiAkQVVUT1JFQ09ORkZMQUdTIFwKKyAgICB8fCBk aWUgImF1dG9yZWNvbmYgZmFpbGVkIgorCisgICMgR2V0IHNvbWUgZXh0cmEgZmlsZXMgZnJv bSBnbnVsaWIsIG92ZXJyaWRpbmcgZXhpc3RpbmcgZmlsZXMuCisgIGZvciBmaWxlIGluICRn bnVsaWJfZXh0cmFfZmlsZXM7IGRvCisgICAgY2FzZSAkZmlsZSBpbgorICAgICAgKi9JTlNU QUxMKSBkc3Q9SU5TVEFMTDs7CisgICAgICBidWlsZC1hdXgvKikgZHN0PSRidWlsZF9hdXgv JHtmaWxlI2J1aWxkLWF1eC99OzsKKyAgICAgICopIGRzdD0kZmlsZTs7CisgICAgZXNhYwor ICAgIHN5bWxpbmtfdG9fZGlyICIkR05VTElCX1NSQ0RJUiIgJGZpbGUgJGRzdCBcCisgICAg ICB8fCBkaWUgImZhaWxlZCB0byBzeW1saW5rICRmaWxlIgorICBkb25lCisKKyAgaWYgdGVz dCAkd2l0aF9nZXR0ZXh0ID0geWVzOyB0aGVuCisgICAgIyBDcmVhdGUgZ2V0dGV4dCBjb25m aWd1cmF0aW9uLgorICAgIGVjaG8gIiQwOiBDcmVhdGluZyBwby9NYWtldmFycyBmcm9tIHBv L01ha2V2YXJzLnRlbXBsYXRlIC4uLiIKKyAgICBybSAtZiBwby9NYWtldmFycworICAgIHNl ZCAnCisgICAgICAvXkVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTICo9L3MvPS4qLz0gJyIkRVhU UkFfTE9DQUxFX0NBVEVHT1JJRVMiJy8KKyAgICAgIC9eQ09QWVJJR0hUX0hPTERFUiAqPS9z Lz0uKi89ICciJENPUFlSSUdIVF9IT0xERVIiJy8KKyAgICAgIC9eTVNHSURfQlVHU19BRERS RVNTICo9L3N8PS4qfD0gJyIkTVNHSURfQlVHU19BRERSRVNTIid8CisgICAgICAvXlhHRVRU RVhUX09QVElPTlMgKj0veworICAgICAgICBzLyQvIFxcLworICAgICAgICBhXAorICAgICAg ICAgICAgJyIkWEdFVFRFWFRfT1BUSU9OUyInICQke2VuZF9vZl94Z2V0dGV4dF9vcHRpb25z K30KKyAgICAgIH0KKyAgICAnIHBvL01ha2V2YXJzLnRlbXBsYXRlID5wby9NYWtldmFycyBc CisgICAgICB8fCBkaWUgJ2Nhbm5vdCBnZW5lcmF0ZSBwby9NYWtldmFycycKKworICAgICMg SWYgdGhlICdnZXR0ZXh0JyBtb2R1bGUgaXMgaW4gdXNlLCBncmFiIHRoZSBsYXRlc3QgTWFr ZWZpbGUuaW4uaW4uCisgICAgIyBJZiBvbmx5IHRoZSAnZ2V0dGV4dC1oJyBtb2R1bGUgaXMg aW4gdXNlLCBhc3N1bWUgYXV0b3BvaW50IGFscmVhZHkKKyAgICAjIHB1dCB0aGUgY29ycmVj dCB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBpbnRvIHBsYWNlLgorICAgIGNhc2UgJGdudWxpYl9t b2R1bGVzIGluCisgICAgICAqZ2V0dGV4dC1oKikgOzsKKyAgICAgICpnZXR0ZXh0KikKKyAg ICAgICAgY3AgJEdOVUxJQl9TUkNESVIvYnVpbGQtYXV4L3BvL01ha2VmaWxlLmluLmluIHBv L01ha2VmaWxlLmluLmluIFwKKyAgICAgICAgICB8fCBkaWUgImNhbm5vdCBjcmVhdGUgcG8v TWFrZWZpbGUuaW4uaW4iCisgICAgICAgIDs7CisgICAgZXNhYworCisgICAgaWYgdGVzdCAt ZCBydW50aW1lLXBvOyB0aGVuCisgICAgICAjIFNpbWlsYXJseSBmb3IgcnVudGltZS1wby9N YWtldmFycywgYnV0IG5vdCBxdWl0ZSB0aGUgc2FtZS4KKyAgICAgIHJtIC1mIHJ1bnRpbWUt cG8vTWFrZXZhcnMKKyAgICAgIHNlZCAnCisgICAgICAgIC9eRE9NQUlOICo9Liovcy89Liov PSAnIiRwYWNrYWdlIictcnVudGltZS8KKyAgICAgICAgL15zdWJkaXIgKj0uKi9zLz0uKi89 IHJ1bnRpbWUtcG8vCisgICAgICAgIC9eTVNHSURfQlVHU19BRERSRVNTICo9L3MvPS4qLz0g YnVnLSciJHBhY2thZ2UiJ0BnbnUub3JnLworICAgICAgICAvXlhHRVRURVhUX09QVElPTlMg Kj0veworICAgICAgICAgIHMvJC8gXFwvCisgICAgICAgICAgYVwKKyAgICAgICAgICAgICAg JyIkWEdFVFRFWFRfT1BUSU9OU19SVU5USU1FIicgJCR7ZW5kX29mX3hnZXR0ZXh0X29wdGlv bnMrfQorICAgICAgICB9CisgICAgICAnIHBvL01ha2V2YXJzLnRlbXBsYXRlID5ydW50aW1l LXBvL01ha2V2YXJzIFwKKyAgICAgIHx8IGRpZSAnY2Fubm90IGdlbmVyYXRlIHJ1bnRpbWUt cG8vTWFrZXZhcnMnCisKKyAgICAgICMgQ29weSBpZGVudGljYWwgZmlsZXMgZnJvbSBwbyB0 byBydW50aW1lLXBvLgorICAgICAgY3AgLXAgcG8vTWFrZWZpbGUuaW4uaW4gcG8vKi1xdW90 IHBvLyouaGVhZGVyIHBvLyouc2VkIHBvLyouc2luIHJ1bnRpbWUtcG8KKyAgICBmaQorICBm aQorCisgIGJvb3RzdHJhcF9lcGlsb2d1ZQorCisgIGVjaG8gIiQwOiBkb25lLiAgTm93IHlv dSBjYW4gcnVuICcuL2NvbmZpZ3VyZScuIgorfQorCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIAogIyBMb2NhbCBWYXJpYWJsZXM6Ci0jIGV2YWw6IChhZGQtaG9vayAnYmVmb3JlLXNh dmUtaG9vayAndGltZS1zdGFtcCkKLSMgdGltZS1zdGFtcC1zdGFydDogInNjcmlwdHZlcnNp b249IgorIyBldmFsOiAoYWRkLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgJ3RpbWUtc3RhbXAg bmlsIHQpCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHRsaWJ2ZXJzaW9uPSIKICMgdGlt ZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCiAjIHRpbWUtc3RhbXAtdGlt ZS16b25lOiAiVVRDMCIKICMgdGltZS1zdGFtcC1lbmQ6ICI7ICMgVVRDIgpkaWZmIC0tZ2l0 IGEvbGliLy5naXRpZ25vcmUgYi9saWIvLmdpdGlnbm9yZQppbmRleCA5ZjE1ODY4Zi4uNjQ3 MDI1YmMgMTAwNjQ0Ci0tLSBhL2xpYi8uZ2l0aWdub3JlCisrKyBiL2xpYi8uZ2l0aWdub3Jl CkBAIC0xOCw2ICsxOCw3IEBACiAvYXJnbWF0Y2guaAogL2FzbnByaW50Zi5jCiAvYXNwcmlu dGYuYworL2Fzc2VydC5pbi5oCiAvYXNzdXJlLmgKIC9hdC1mdW5jLmMKIC9hdHRyaWJ1dGUu aApAQCAtNDIsNiArNDMsMjIgQEAKIC9jLXN0cm5jYXNlY21wLmMKIC9jLXN0cnRvZC5jCiAv Yy1zdHJ0b2QuaAorL2MzMmlzLWltcGwuaAorL2MzMmlzYWxudW0uYworL2MzMmlzYWxwaGEu YworL2MzMmlzYmxhbmsuYworL2MzMmlzY250cmwuYworL2MzMmlzZGlnaXQuYworL2MzMmlz Z3JhcGguYworL2MzMmlzbG93ZXIuYworL2MzMmlzcHJpbnQuYworL2MzMmlzcHVuY3QuYwor L2MzMmlzc3BhY2UuYworL2MzMmlzdXBwZXIuYworL2MzMmlzeGRpZ2l0LmMKKy9jMzJ0by1p bXBsLmgKKy9jMzJ0b2xvd2VyLmMKKy9jMzJ3aWR0aC5jCiAvY2FsbG9jLmMKIC9jYW5vbmlj YWxpemUtbGdwbC5jCiAvY2Fub25pY2FsaXplLmMKQEAgLTgxLDYgKzk4LDcgQEAKIC9lcnJu by5pbi5oCiAvZXJyb3IuYwogL2Vycm9yLmgKKy9lcnJvci5pbi5oCiAvZXhlY3V0ZS5jCiAv ZXhlY3V0ZS5oCiAvZXhpdGZhaWwuYwpAQCAtMjI4LDEwICsyNDYsMTIgQEAKIC9pc25hbmwu YwogL2lzd2JsYW5rLmMKIC9pc3dkaWdpdC5jCisvaXN3cHVuY3QuYwogL2lzd3hkaWdpdC5j CiAvaXRvbGQuYwogL2xjLWNoYXJzZXQtZGlzcGF0Y2guYwogL2xjLWNoYXJzZXQtZGlzcGF0 Y2guaAorL2xkZXhwLmMKIC9sZGV4cGwuYwogL2xpYmMtY29uZmlnLmgKIC9saW1pdHMuaApA QCAtMjUxLDEyICsyNzEsMTQgQEAKIC9tYmNoYXIuaAogL21iZmlsZS5jCiAvbWJmaWxlLmgK Ky9tYnJ0b2MzMi5jCiAvbWJydG93Yy1pbXBsLXV0ZjguaAogL21icnRvd2MtaW1wbC5oCiAv bWJydG93Yy5jCiAvbWJzaW5pdC5jCiAvbWJzd2lkdGguYwogL21ic3dpZHRoLmgKKy9tYnN6 ZXJvLmMKIC9tYnRvd2MtbG9jay5jCiAvbWJ0b3djLWxvY2suaAogL21lbWNoci5jCkBAIC0y NzAsNiArMjkyLDcgQEAKIC9tc3ZjLW5vdGhyb3cuaAogL29ic3RhY2suYwogL29ic3RhY2su aAorL29ic3RhY2suaW4uaAogL29ic3RhY2tfcHJpbnRmLmMKIC9vcGVuLmMKIC9vcGVuYXQt ZGllLmMKQEAgLTI5OCw2ICszMjEsOCBAQAogL3Byb2duYW1lLmMKIC9wcm9nbmFtZS5oCiAv cHJvZ3JlbG9jLmMKKy9wdGhyZWFkLW9uY2UuYworL3B0aHJlYWQuaW4uaAogL3F1b3RlLmgK IC9xdW90ZWFyZy5jCiAvcXVvdGVhcmcuaApAQCAtMzE4LDYgKzM0Myw3IEBACiAvcmVuYW1l LmMKIC9yZXdpbmRkaXIuYwogL3JtZGlyLmMKKy9zYW1lLWlub2RlLmMKIC9zYW1lLWlub2Rl LmgKIC9zYXZlLWN3ZC5jCiAvc2F2ZS1jd2QuaApAQCAtMzI2LDYgKzM1Miw3IEBACiAvc2Ny YXRjaF9idWZmZXIuaAogL3NldGVudi5jCiAvc2V0bG9jYWxlLWxvY2suYworL3NldGxvY2Fs ZV9udWxsLXVubG9ja2VkLmMKIC9zZXRsb2NhbGVfbnVsbC5jCiAvc2V0bG9jYWxlX251bGwu aAogL3NpZy1oYW5kbGVyLmMKQEAgLTM2NSw5ICszOTIsNyBAQAogL3N0YXQtdzMyLmMKIC9z dGF0LXczMi5oCiAvc3RhdC5jCi0vc3RkYWxpZ24uaW4uaAogL3N0ZGJvb2wuaAotL3N0ZGJv b2wuaW4uaAogL3N0ZGNrZGludC5pbi5oCiAvc3RkZGVmLmgKIC9zdGRkZWYuaW4uaApAQCAt MzgwLDYgKzQwNSw3IEBACiAvc3RkaW8td3JpdGUuYwogL3N0ZGlvLmgKIC9zdGRpby5pbi5o Cisvc3RkbGliLmMKIC9zdGRsaWIuaAogL3N0ZGxpYi5pbi5oCiAvc3RwY3B5LmMKQEAgLTQy MSw5ICs0NDcsMTMgQEAKIC90aW1lc3BlYy5oCiAvdGltZXZhci5jCiAvdGltZXZhci5oCisv dWNoYXIuaW4uaAorL3VuaWNhc2UuaW4uaAogL3VuaWNvZGVpby5jCiAvdW5pY29kZWlvLmgK Ky91bmljdHlwZS5pbi5oCiAvdW5pY3R5cGUvCisvdW5pbm9ybS5pbi5oCiAvdW5pc3RkLS0u aAogL3VuaXN0ZC1zYWZlci5oCiAvdW5pc3RkLmMKQEAgLTQ0NSw4ICs0NzUsMTEgQEAKIC92 YXNwcmludGYuYwogL3ZlcmlmeS5oCiAvdmZwcmludGYuYworL3ZmenByaW50Zi5jCiAvdnNu cHJpbnRmLmMKKy92c256cHJpbnRmLmMKIC92c3ByaW50Zi5jCisvdnN6cHJpbnRmLmMKIC93 YWl0LXByb2Nlc3MuYwogL3dhaXQtcHJvY2Vzcy5oCiAvd2FpdHBpZC5jCkBAIC00NjIsNiAr NDk1LDggQEAKIC93aW5kb3dzLW11dGV4LmgKIC93aW5kb3dzLW9uY2UuYwogL3dpbmRvd3Mt b25jZS5oCisvd2luZG93cy1wYXRoLmMKKy93aW5kb3dzLXBhdGguaAogL3dpbmRvd3MtcmVj bXV0ZXguYwogL3dpbmRvd3MtcmVjbXV0ZXguaAogL3dpbmRvd3Mtcndsb2NrLmMKZGlmZiAt LWdpdCBhL2xpYi9nbHRocmVhZC8uZ2l0aWdub3JlIGIvbGliL2dsdGhyZWFkLy5naXRpZ25v cmUKaW5kZXggYjg1NDIxNGUuLjU1MTVkN2MxIDEwMDY0NAotLS0gYS9saWIvZ2x0aHJlYWQv LmdpdGlnbm9yZQorKysgYi9saWIvZ2x0aHJlYWQvLmdpdGlnbm9yZQpAQCAtMSw1ICsxLDcg QEAKIC9sb2NrLmMKIC9sb2NrLmgKKy9vbmNlLmMKKy9vbmNlLmgKIC90aHJlYWRsaWIuYwog L3Rscy5jCiAvdGxzLmgKZGlmZiAtLWdpdCBhL2xpYi9tYWxsb2MvLmdpdGlnbm9yZSBiL2xp Yi9tYWxsb2MvLmdpdGlnbm9yZQppbmRleCA1Zjg4NjZmOS4uN2Y0ZTAyMGYgMTAwNjQ0Ci0t LSBhL2xpYi9tYWxsb2MvLmdpdGlnbm9yZQorKysgYi9saWIvbWFsbG9jLy5naXRpZ25vcmUK QEAgLTEsNiArMSw1IEBACiAvc2NyYXRjaF9idWZmZXIuZ2wuaAogL3NjcmF0Y2hfYnVmZmVy LmgKLS9zY3JhdGNoX2J1ZmZlcl9kdXBmcmVlLmMKIC9zY3JhdGNoX2J1ZmZlcl9ncm93LmMK IC9zY3JhdGNoX2J1ZmZlcl9ncm93X3ByZXNlcnZlLmMKIC9zY3JhdGNoX2J1ZmZlcl9zZXRf YXJyYXlfc2l6ZS5jCmRpZmYgLS1naXQgYS9tNC8uZ2l0aWdub3JlIGIvbTQvLmdpdGlnbm9y ZQppbmRleCA0NzQ4YzZlMC4uNjI3Yzg0NWEgMTAwNjQ0Ci0tLSBhL200Ly5naXRpZ25vcmUK KysrIGIvbTQvLmdpdGlnbm9yZQpAQCAtNiw4ICs2LDEyIEBACiAvYWxsb2NhLm00CiAvYXNt LXVuZGVyc2NvcmUubTQKIC9hc3NlcnQubTQKKy9hc3NlcnRfaC5tNAorL2J1aWxkLXRvLWhv c3QubTQKIC9idWlsdGluLWV4cGVjdC5tNAorL2MtYm9vbC5tNAogL2Mtc3RydG9kLm00Cisv YzMycnRvbWIubTQKIC9jYWxsb2MubTQKIC9jYW5vbmljYWxpemUubTQKIC9jaGRpci1sb25n Lm00CkBAIC0yNCwyMyArMjgsMjYgQEAKIC9kdXAubTQKIC9kdXAyLm00CiAvZWFjY2Vzcy5t NAotL2VlYWxsb2MubTQKIC9lbnZpcm9uLm00CiAvZXJybm9faC5tNAogL2Vycm9yLm00Cisv ZXJyb3JfaC5tNAogL2V4ZWN1dGUubTQKIC9leHBvbmVudGQubTQKIC9leHBvbmVudGYubTQK IC9leHBvbmVudGwubTQKKy9leHRlbnNpb25zLWFpeC5tNAogL2V4dGVuc2lvbnMubTQKIC9l eHRlcm4taW5saW5lLm00CiAvZXh0ZXJuLWlubGluZS5tNH4KIC9mYXRhbC1zaWduYWwubTQK IC9mY2hkaXIubTQKKy9mY2xvc2UubTQKIC9mY250bC1vLm00CiAvZmNudGwubTQKIC9mY250 bF9oLm00CiAvZmRvcGVuZGlyLm00CisvZmZsdXNoLm00CiAvZmZzLm00CiAvZmZzbC5tNAog L2ZpbGVuYW1lY2F0Lm00CkBAIC02NSw3ICs3Miw2IEBACiAvZ2V0aHJ4dGltZS5tNAogL2dl dGxpbmUubTQKIC9nZXRvcHQubTQKLS9nZXRwYWdlc2l6ZS5tNAogL2dldHByb2duYW1lLm00 CiAvZ2V0cnVzYWdlLm00CiAvZ2V0dGV4dC5tNApAQCAtNzYsMTIgKzgyLDE0IEBACiAvZ251 bGliLWNhY2hlLm00CiAvZ251bGliLWNvbW1vbi5tNAogL2dudWxpYi1jb21wLm00CisvZ251 bGliLWkxOG4ubTQKIC9nbnVsaWItdG9vbC5tNAogL2hvc3QtY3B1LWMtYWJpLm00CiAvaWNv bnYubTQKIC9pY29udl9oLm00CiAvaWNvbnZfb3Blbi5tNAogL2luY2x1ZGVfbmV4dC5tNAor L2luaXQtcGFja2FnZS12ZXJzaW9uLm00CiAvaW5saW5lLm00CiAvaW50ZGl2MC5tNAogL2lu dGwtdGhyZWFkLWxvY2FsZS5tNApAQCAtOTksNiArMTA3LDcgQEAKIC9pc25hbmwubTQKIC9p c3dibGFuay5tNAogL2lzd2RpZ2l0Lm00CisvaXN3cHVuY3QubTQKIC9pc3d4ZGlnaXQubTQK IC9qYXZhY29tcC5tNAogL2phdmFleGVjLm00CkBAIC0xMTYsNiArMTI1LDcgQEAKIC9saWJ1 bmlzdHJpbmctYmFzZS5tNAogL2xpbWl0cy1oLm00CiAvbG9jYWxjaGFyc2V0Lm00CisvbG9j YWxlLWVuLm00CiAvbG9jYWxlLWZyLm00CiAvbG9jYWxlLWphLm00CiAvbG9jYWxlLXpoLm00 CkBAIC0xMjgsNiArMTM4LDcgQEAKIC9tYXRoX2gubTQKIC9tYmNoYXIubTQKIC9tYmZpbGUu bTQKKy9tYnJ0b2MzMi5tNAogL21icnRvd2MubTQKIC9tYnNpbml0Lm00CiAvbWJzdGF0ZV90 Lm00CkBAIC0xNDYsNyArMTU3LDkgQEAKIC9ub2NyYXNoLm00CiAvb2JzdGFjay1wcmludGYu bTQKIC9vYnN0YWNrLm00Cisvb2ZmNjRfdC5tNAogL29mZl90Lm00Cisvb25jZS5tNAogL29w ZW4tY2xvZXhlYy5tNAogL29wZW4tc2xhc2gubTQKIC9vcGVuLm00CkBAIC0xNjIsMTAgKzE3 NSwxMiBAQAogL3Bvc2l4X3NwYXduX2ZhY3Rpb25fYWRkY2hkaXIubTQKIC9wcmludGYtZnJl eHAubTQKIC9wcmludGYtZnJleHBsLm00Ci0vcHJpbnRmLXBvc2l4LXJwbC5tNAogL3ByaW50 Zi1wb3NpeC5tNAogL3ByaW50Zi5tNAogL3Byb2d0ZXN0Lm00CisvcHRocmVhZC1vbmNlLm00 CisvcHRocmVhZC1zcGluLm00CisvcHRocmVhZF9oLm00CiAvcHRocmVhZF9yd2xvY2tfcmRs b2NrLm00CiAvcXVvdGUubTQKIC9xdW90ZWFyZy5tNApAQCAtMjAyLDcgKzIxNyw2IEBACiAv c3RhdC5tNAogL3N0ZC1nbnUxMS5tNAogL3N0ZGFsaWduLm00Ci0vc3RkYm9vbC5tNAogL3N0 ZGRlZl9oLm00CiAvc3RkaW50Lm00CiAvc3RkaW50X2gubTQKQEAgLTIyMCw2ICsyMzQsNyBA QAogL3N0cm5sZW4ubTQKIC9zdHJ0b2QubTQKIC9zdHJ2ZXJzY21wLm00Cisvc3lzX2NkZWZz X2gubTQKIC9zeXNfaW9jdGxfaC5tNAogL3N5c19yZXNvdXJjZV9oLm00CiAvc3lzX3NvY2tl dF9oLm00CkBAIC0yMzMsOCArMjQ4LDEyIEBACiAvdGltZV9oLm00CiAvdGltZXNwZWMubTQK IC90bHMubTQKKy91Y2hhcl9oLm00CiAvdWludG1heF90Lm00CisvdW5pY2FzZV9oLm00CiAv dW5pY29kZWlvLm00CisvdW5pY3R5cGVfaC5tNAorL3VuaW5vcm1faC5tNAogL3VuaXN0ZC1z YWZlci5tNAogL3VuaXN0ZF9oLm00CiAvdW5saW5rLm00CkBAIC0yNTMsMTIgKzI3MiwxMCBA QAogL3dhcm4tb24tdXNlLm00CiAvd2FybmluZ3MubTQKIC93Y2hhcl9oLm00Ci0vd2NoYXJf dC5tNAogL3djdHlwZV9oLm00CiAvd2N3aWR0aC5tNAogL3dpbnRfdC5tNAogL3hhbGxvYy5t NAogL3hzaXplLm00CiAveHN0cm5kdXAubTQKLS95ZWFyMjAzOC5tNAogL3p6Z251bGliLm00 Ci0tIAoyLjQ4LjEKCg== --------------uFjIZvzExWSiiDinsphmqzeO Content-Type: text/x-patch; charset=UTF-8; name="0003-doc-pacify-texinfo-7.1.patch" Content-Disposition: attachment; filename="0003-doc-pacify-texinfo-7.1.patch" Content-Transfer-Encoding: base64 RnJvbSAzYWQzMWMyM2YxMDFkZWEyM2U5OGQxZTI3N2UyNGZmMzcxY2Y0ZjA5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBXZWQsIDEyIE1hciAyMDI1IDE3OjI4OjAzIC0wNzAwClN1YmplY3Q6IFtQQVRD SCAzLzZdIGRvYzogcGFjaWZ5IHRleGluZm8gNy4xCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVu Y29kaW5nOiA4Yml0CgoqIGRvYy9iaXNvbi50ZXhpOiBEb27igJl0IHB1dCBAYW5jaG9yIGlu c2lkZSBAaXRlbSwKYXMgdGV4aW5mbyA3LjEgY29tcGxhaW5zLgotLS0KIGRvYy9iaXNvbi50 ZXhpIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kb2MvYmlzb24udGV4aSBiL2RvYy9iaXNvbi50ZXhpCmluZGV4IDVmZmUyMWQw Li5hOGU0NzU4MCAxMDA2NDQKLS0tIGEvZG9jL2Jpc29uLnRleGkKKysrIGIvZG9jL2Jpc29u LnRleGkKQEAgLTExNjQ4LDIyICsxMTY0OCwyNiBAQCBEaWFnbm9zdGljcwogT3V0cHV0IHdh cm5pbmdzIGZhbGxpbmcgaW4gQHZhcntjYXRlZ29yeX0uICBAdmFye2NhdGVnb3J5fSBjYW4g YmUgb25lCiBvZjoKIEB0YWJsZSBAY29kZQotQGl0ZW0gQGFuY2hvcntXY29uZmxpY3RzLXNy fWNvbmZsaWN0cy1zcgotQGl0ZW14IEBhbmNob3J7V2NvbmZsaWN0cy1ycn1jb25mbGljdHMt cnIKK0BpdGVtIGNvbmZsaWN0cy1zcgorQGl0ZW14IGNvbmZsaWN0cy1ycgorQGFuY2hvcntX Y29uZmxpY3RzLXNyfQorQGFuY2hvcntXY29uZmxpY3RzLXJyfQogUy9SIGFuZCBSL1IgY29u ZmxpY3RzLiAgVGhlc2Ugd2FybmluZ3MgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gIEhvd2V2 ZXIsIGlmCiB0aGUgQGNvZGV7JWV4cGVjdH0gb3IgQGNvZGV7JWV4cGVjdC1ycn0gZGlyZWN0 aXZlIGlzIHNwZWNpZmllZCwgYW4KIHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNvbmZsaWN0cyBp cyBhbiBlcnJvciwgYW5kIGFuIGV4cGVjdGVkIG51bWJlciBvZgogY29uZmxpY3RzIGlzIG5v dCByZXBvcnRlZCwgc28gQG9wdGlvbnstV30gYW5kIEBvcHRpb257LS13YXJuaW5nfSB0aGVu IGhhdmUKIG5vIGVmZmVjdCBvbiB0aGUgY29uZmxpY3QgcmVwb3J0LgogCi1AaXRlbSBAYW5j aG9ye1djb3VudGVyZXhhbXBsZXN9Y291bnRlcmV4YW1wbGVzCitAaXRlbSBjb3VudGVyZXhh bXBsZXMKIEBpdGVteCBjZXgKK0BhbmNob3J7V2NvdW50ZXJleGFtcGxlc30KIFByb3ZpZGUg Y291bnRlcmV4YW1wbGVzIGZvciBjb25mbGljdHMuICBAeHJlZntDb3VudGVyZXhhbXBsZXN9 LgogQ291bnRlcmV4YW1wbGVzIHRha2UgdGltZSB0byBjb21wdXRlLiAgVGhlIG9wdGlvbiBA b3B0aW9uey1XY2V4fSBzaG91bGQgYmUKIHVzZWQgYnkgdGhlIGRldmVsb3BlciB3aGVuIHdv cmtpbmcgb24gdGhlIGdyYW1tYXI7IGl0IGhhcmRseSBtYWtlcyBzZW5zZSB0bwogdXNlIGl0 IGluIGEgQ0kuCiAKLUBpdGVtIEBhbmNob3J7V2RhbmdsaW5nLWFsaWFzfWRhbmdsaW5nLWFs aWFzCitAaXRlbSBkYW5nbGluZy1hbGlhcworQGFuY2hvcntXZGFuZ2xpbmctYWxpYXN9CiBS ZXBvcnQgc3RyaW5nIGxpdGVyYWxzIHRoYXQgYXJlIG5vdCBib3VuZCB0byBhIHRva2VuIHN5 bWJvbC4KIAogU3RyaW5nIGxpdGVyYWxzLCB3aGljaCBhbGxvdyBmb3IgYmV0dGVyIGVycm9y IG1lc3NhZ2VzLCBhcmUgKHRvbykgbGliZXJhbGx5CkBAIC0xMTcwOSwxNiArMTE3MTMsMTkg QEAgRGlhZ25vc3RpY3MKICAgICAgIHwgICAgICBAZHdhcm5pbmd7Xn5+fn59CiBAZW5kIGV4 YW1wbGUKIAotQGl0ZW0gQGFuY2hvcntXZGVwcmVjYXRlZH1kZXByZWNhdGVkCitAaXRlbSBk ZXByZWNhdGVkCitAYW5jaG9ye1dkZXByZWNhdGVkfQogRGVwcmVjYXRlZCBjb25zdHJ1Y3Rz IHdob3NlIHN1cHBvcnQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZgog Qmlzb24uCiAKLUBpdGVtIEBhbmNob3J7V2VtcHR5LXJ1bGV9ZW1wdHktcnVsZQorQGl0ZW0g ZW1wdHktcnVsZQorQGFuY2hvcntXZW1wdHktcnVsZX0KIEVtcHR5IHJ1bGVzIHdpdGhvdXQg QGNvZGV7JWVtcHR5fS4gIEB4cmVme0VtcHR5IFJ1bGVzfS4gIERpc2FibGVkIGJ5CiBkZWZh dWx0LCBidXQgZW5hYmxlZCBieSB1c2VzIG9mIEBjb2RleyVlbXB0eX0sIHVubGVzcwogQG9w dGlvbnstV25vLWVtcHR5LXJ1bGV9IHdhcyBzcGVjaWZpZWQuCiAKLUBpdGVtIEBhbmNob3J7 V21pZHJ1bGUtdmFsdWVzfW1pZHJ1bGUtdmFsdWVzCitAaXRlbSBtaWRydWxlLXZhbHVlcwor QGFuY2hvcntXbWlkcnVsZS12YWx1ZXN9CiBXYXJuIGFib3V0IG1pZHJ1bGUgdmFsdWVzIHRo YXQgYXJlIHNldCBidXQgbm90IHVzZWQgd2l0aGluIGFueSBvZiB0aGUgYWN0aW9ucwogb2Yg dGhlIHBhcmVudCBydWxlLgogRm9yIGV4YW1wbGUsIHdhcm4gYWJvdXQgdW51c2VkIEBjb2Rl eyQyfSBpbjoKQEAgLTExNzM4LDcgKzExNzQ1LDggQEAgRGlhZ25vc3RpY3MKIGJlIGZhbHNl IGFsYXJtcyBpbiBleGlzdGluZyBncmFtbWFycyBlbXBsb3lpbmcgdGhlIFlhY2MgY29uc3Ry dWN0cwogQGNvZGV7JDB9IG9yIEBjb2RleyQtQHZhcntufX0gKHdoZXJlIEB2YXJ7bn0gaXMg c29tZSBwb3NpdGl2ZSBpbnRlZ2VyKS4KIAotQGl0ZW0gQGFuY2hvcntXcHJlY2VkZW5jZX1w cmVjZWRlbmNlCitAaXRlbSBwcmVjZWRlbmNlCitAYW5jaG9ye1dwcmVjZWRlbmNlfQogVXNl bGVzcyBwcmVjZWRlbmNlIGFuZCBhc3NvY2lhdGl2aXR5IGRpcmVjdGl2ZXMuICBEaXNhYmxl ZCBieSBkZWZhdWx0LgogCiBDb25zaWRlciBmb3IgaW5zdGFuY2UgdGhlIGZvbGxvd2luZyBn cmFtbWFyOgpAQCAtMTE3OTksMjEgKzExODA3LDI0IEBAIERpYWdub3N0aWNzCiBAZW5kIGdy b3VwCiBAZW5kIGV4YW1wbGUKIAotQGl0ZW0gQGFuY2hvcntXeWFjY315YWNjCitAaXRlbSB5 YWNjCitAYW5jaG9ye1d5YWNjfQogSW5jb21wYXRpYmlsaXRpZXMgd2l0aCBQT1NJWCBZYWNj LgogCi1AaXRlbSBAYW5jaG9ye1dvdGhlcn1vdGhlcgorQGl0ZW0gb3RoZXIKK0BhbmNob3J7 V290aGVyfQogQWxsIHdhcm5pbmdzIG5vdCBjYXRlZ29yaXplZCBhYm92ZS4gIFRoZXNlIHdh cm5pbmdzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuCiAKIFRoaXMgY2F0ZWdvcnkgaXMgcHJv dmlkZWQgbWVyZWx5IGZvciB0aGUgc2FrZSBvZiBjb21wbGV0ZW5lc3MuICBGdXR1cmUKIHJl bGVhc2VzIG9mIEJpc29uIG1heSBtb3ZlIHdhcm5pbmdzIGZyb20gdGhpcyBjYXRlZ29yeSB0 byBuZXcsIG1vcmUgc3BlY2lmaWMKIGNhdGVnb3JpZXMuCiAKLUBpdGVtIEBhbmNob3J7V2Fs bH1hbGwKK0BpdGVtIGFsbAogQWxsIHRoZSB3YXJuaW5ncyBleGNlcHQgQGNvZGV7Y291bnRl cmV4YW1wbGVzfSwgQGNvZGV7ZGFuZ2xpbmctYWxpYXN9IGFuZAogQGNvZGV7eWFjY30uCiAK LUBpdGVtIEBhbmNob3J7V25vbmV9bm9uZQorQGl0ZW0gbm9uZQorQGFuY2hvcntXbm9uZX0K IFR1cm4gb2ZmIGFsbCB0aGUgd2FybmluZ3MuCiAKIEBpdGVtIGVycm9yCkBAIC0xMTgyNCw3 ICsxMTgzNSw4IEBAIERpYWdub3N0aWNzCiBpbnN0YW5jZSwgQG9wdGlvbnstV25vLXlhY2N9 IHdpbGwgaGlkZSB0aGUgd2FybmluZ3MgYWJvdXQKIFBPU0lYIFlhY2MgaW5jb21wYXRpYmls aXRpZXMuCiAKLUBpdGVtIEBhbmNob3J7V2Vycm9yfS1XZXJyb3IKK0BpdGVtIC1XZXJyb3IK K0BhbmNob3J7V2Vycm9yfQogVHVybiBlbmFibGVkIHdhcm5pbmdzIGZvciBldmVyeSBAdmFy e2NhdGVnb3J5fSBpbnRvIGVycm9ycywgdW5sZXNzIHRoZXkgYXJlCiBleHBsaWNpdGx5IGRp c2FibGVkIGJ5IEBvcHRpb257LVduby1lcnJvcj1AdmFye2NhdGVnb3J5fX0uCiAKQEAgLTEx OTcyLDcgKzExOTg0LDggQEAgVHVuaW5nIHRoZSBQYXJzZXIKIFByZXRlbmQgdGhhdCBAY29k ZXsldG9rZW4tdGFibGV9IHdhcyBzcGVjaWZpZWQuICBAeHJlZntEZWNsIFN1bW1hcnl9Lgog CiBAaXRlbSAteQotQGl0ZW14IEBhbmNob3J7b3B0aW9uLXlhY2N9IC0teWFjYworQGl0ZW14 ICAtLXlhY2MKK0BhbmNob3J7b3B0aW9uLXlhY2N9CiBBY3QgbW9yZSBsaWtlIHRoZSB0cmFk aXRpb25hbCBAY29tbWFuZHt5YWNjfSBjb21tYW5kOgogQGl0ZW1pemUKIEBpdGVtCi0tIAoy LjQ4LjEKCg== --------------uFjIZvzExWSiiDinsphmqzeO Content-Type: text/x-patch; charset=UTF-8; name="0004-maint-adjust-to-Gnulib-API-changes.patch" Content-Disposition: attachment; filename="0004-maint-adjust-to-Gnulib-API-changes.patch" Content-Transfer-Encoding: base64 RnJvbSBhYTBjOTZiZjE0ZDZmZjRlNmUwNWUyOGM0NDBlNDJjZWRmNzJkZDE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBXZWQsIDEyIE1hciAyMDI1IDE3OjI5OjQxIC0wNzAwClN1YmplY3Q6IFtQQVRD SCA0LzZdIG1haW50OiBhZGp1c3QgdG8gR251bGliIEFQSSBjaGFuZ2VzCgoqIHNyYy9vdXRw dXQuYyAob3V0cHV0X3NrZWxldG9uKToKKiBzcmMvcHJpbnQteG1sLmMgKHByaW50X2h0bWwp OgpBZGp1c3QgdG8gR251bGliIEFQSSBjaGFuZ2VzLgotLS0KIHNyYy9vdXRwdXQuYyAgICB8 IDEgKwogc3JjL3ByaW50LXhtbC5jIHwgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9vdXRwdXQuYyBiL3NyYy9vdXRwdXQuYwppbmRl eCA1ZTdlZjE1ZS4uY2QzMzJmMjYgMTAwNjQ0Ci0tLSBhL3NyYy9vdXRwdXQuYworKysgYi9z cmMvb3V0cHV0LmMKQEAgLTgwOCw2ICs4MDgsNyBAQCBvdXRwdXRfc2tlbGV0b24gKHZvaWQp CiAgICAgICB9CiAKICAgICBwaWQgPSBjcmVhdGVfcGlwZV9iaWRpICgibTQiLCBtNCwgYXJn diwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkbGxfZGlycyAqLyBOVUxMLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRpcmVjdG9yeSAqLyBOVUxMLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bGxfc3RkZXJyICovIGZhbHNlLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNsYXZlX3Byb2Nlc3MgKi8gdHJ1ZSwKZGlm ZiAtLWdpdCBhL3NyYy9wcmludC14bWwuYyBiL3NyYy9wcmludC14bWwuYwppbmRleCA3ZGIw ZjIxMy4uZTRmNzcxNDMgMTAwNjQ0Ci0tLSBhL3NyYy9wcmludC14bWwuYworKysgYi9zcmMv cHJpbnQteG1sLmMKQEAgLTU2NSw2ICs1NjUsNyBAQCBwcmludF9odG1sICh2b2lkKQogICBp bnQgc3RhdHVzCiAgICAgPSBleGVjdXRlIChhcmd2WzBdLAogICAgICAgICAgICAgICAgYXJn dlswXSwgYXJndiwKKyAgICAgICAgICAgICAgIC8qIGRsbF9kaXJzICovIE5VTEwsCiAgICAg ICAgICAgICAgICAvKiBkaXJlY3RvcnkgKi8gTlVMTCwKICAgICAgICAgICAgICAgIC8qIGln bm9yZV9zaWdwaXBlICovIGZhbHNlLAogICAgICAgICAgICAgICAgLyogbnVsbF9zdGRpbiwg bnVsbF9zdGRvdXQsIG51bGxfc3RkZXJyICovIHRydWUsIHRydWUsIHRydWUsCi0tIAoyLjQ4 LjEKCg== --------------uFjIZvzExWSiiDinsphmqzeO Content-Type: text/x-patch; charset=UTF-8; name="0005-maint-pacify-gcc-14.2-Wmaybe-uninitialized.patch" Content-Disposition: attachment; filename="0005-maint-pacify-gcc-14.2-Wmaybe-uninitialized.patch" Content-Transfer-Encoding: base64 RnJvbSA2YTRiMzI0MGNmYzAwNjUzMDRjOTQ1YWJiNzU1MTU3YWE0NGEzNzQ1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBXZWQsIDEyIE1hciAyMDI1IDIwOjQwOjI5IC0wNzAwClN1YmplY3Q6IFtQQVRD SCA1LzZdIG1haW50OiBwYWNpZnkgZ2NjIDE0LjIgLVdtYXliZS11bmluaXRpYWxpemVkCgoq IGRhdGEvc2tlbGV0b25zL2xhbHIxLmNjOgoqIGRhdGEvc2tlbGV0b25zL3lhY2MuYzoKQWRk IFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOIGFuZApZWV9JR05PUkVfTUFZ QkVfVU5JTklUSUFMSVpFRF9FTkQgdG8gcGFjaWZ5IEdDQyAxNCwKYXBwYXJlbnRseSBhZnRl ciBpbmxpbmluZy4KLS0tCiBkYXRhL3NrZWxldG9ucy9sYWxyMS5jYyB8IDIgKysKIGRhdGEv c2tlbGV0b25zL3lhY2MuYyAgIHwgNiArKysrLS0KIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RhdGEvc2tlbGV0b25z L2xhbHIxLmNjIGIvZGF0YS9za2VsZXRvbnMvbGFscjEuY2MKaW5kZXggNDI0MmI5OTIuLjQ2 NGEyM2I4IDEwMDY0NAotLS0gYS9kYXRhL3NrZWxldG9ucy9sYWxyMS5jYworKysgYi9kYXRh L3NrZWxldG9ucy9sYWxyMS5jYwpAQCAtOTg2LDYgKzk4Niw3IEBAIGI0X2RvbGxhcl9wb3Bk ZWZdKVtdZG5sCiAgIHl5cmVkdWNlOgogICAgIHl5bGVuID0geXlyMl9beXluXTsKICAgICB7 CisgICAgICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgogICAgICAgc3Rh Y2tfc3ltYm9sX3R5cGUgeXlsaHM7CiAgICAgICB5eWxocy5zdGF0ZSA9IHl5X2xyX2dvdG9f c3RhdGVfICh5eXN0YWNrX1t5eWxlbl0uc3RhdGUsIHl5cjFfW3l5bl0pO11iNF92YXJpYW50 X2lmKFtbCiAgICAgICAvKiBWYXJpYW50cyBhcmUgYWx3YXlzIGluaXRpYWxpemVkIHRvIGFu IGVtcHR5IGluc3RhbmNlIG9mIHRoZQpAQCAtMTAzOCw2ICsxMDM5LDcgQEAgYjRfZG9sbGFy X3BvcGRlZl0pW11kbmwKIAogICAgICAgLy8gU2hpZnQgdGhlIHJlc3VsdCBvZiB0aGUgcmVk dWN0aW9uLgogICAgICAgeXlwdXNoXyAoWVlfTlVMTFBUUiwgWVlfTU9WRSAoeXlsaHMpKTsK KyAgICAgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORAogICAgIH0KICAgICBn b3RvIHl5bmV3c3RhdGU7CiAKZGlmZiAtLWdpdCBhL2RhdGEvc2tlbGV0b25zL3lhY2MuYyBi L2RhdGEvc2tlbGV0b25zL3lhY2MuYwppbmRleCAwN2E1MjNiMC4uOGIzNzc0NzUgMTAwNjQ0 Ci0tLSBhL2RhdGEvc2tlbGV0b25zL3lhY2MuYworKysgYi9kYXRhL3NrZWxldG9ucy95YWNj LmMKQEAgLTE1MzEsOSArMTUzMSwxMSBAQCB5eXB1bGxfcGFyc2UgKHl5cHN0YXRlICp5eXBz XWI0X3VzZXJfZm9ybWFsc1spCiAgIFlZTFRZUEUgeXlsbG9jID0geXlsb2NfZGVmYXVsdDtd XSldKVsKICAgaW50IHl5c3RhdHVzOwogICBkbyB7Ci1dYjRfcHVyZV9pZihbWyAgICBZWVNU WVBFIHl5bHZhbDsKK11iNF9wdXJlX2lmKFtbICAgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJ QUxJWkVEX0JFR0lOCisgICAgWVlTVFlQRSB5eWx2YWw7CiAgICAgaW50IF1dKVt5eWNoYXIg PSBdYjRfeXlsZXhbOwotICAgIHl5c3RhdHVzID0geXlwdXNoX3BhcnNlICh5eXBzXWI0X3B1 cmVfaWYoW1ssIHl5Y2hhciwgJnl5bHZhbF1iNF9sb2NhdGlvbnNfaWYoW1ssICZ5eWxsb2Nd XSldKW00X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sIFssIGI0X2FyZ3MoYjRfcGFyc2VfcGFy YW0pXSlbKTsKKyAgICB5eXN0YXR1cyA9IHl5cHVzaF9wYXJzZSAoeXlwc11iNF9wdXJlX2lm KFtbLCB5eWNoYXIsICZ5eWx2YWxdYjRfbG9jYXRpb25zX2lmKFtbLCAmeXlsbG9jXV0pXSlt NF9pZnNldChbYjRfcGFyc2VfcGFyYW1dLCBbLCBiNF9hcmdzKGI0X3BhcnNlX3BhcmFtKV0p Wyk7XWI0X3B1cmVfaWYoW1sKKyAgICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9F TkRdXSlbCiAgIH0gd2hpbGUgKHl5c3RhdHVzID09IFlZUFVTSF9NT1JFKTsKICAgcmV0dXJu IHl5c3RhdHVzOwogfV1dKVsKLS0gCjIuNDguMQoK --------------uFjIZvzExWSiiDinsphmqzeO Content-Type: text/x-patch; charset=UTF-8; name="0006-maint-port-to-strict-C-function-type-checking.patch" Content-Disposition: attachment; filename="0006-maint-port-to-strict-C-function-type-checking.patch" Content-Transfer-Encoding: base64 RnJvbSBkNzUyNzA0OGE4MWVkNjk5N2U5Njc0N2NiOTNjNTkwZmY5MjhjMGUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBUaHUsIDEzIE1hciAyMDI1IDEzOjM4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRD SCA2LzZdIG1haW50OiBwb3J0IHRvIHN0cmljdCBDIGZ1bmN0aW9uIHR5cGUgY2hlY2tpbmcK ClZpb2xhdGlvbiBvZiBDIHN0YW5kYXJkIGRldGVjdGVkIGJ5IGNsYW5nIC1mc2FuaXRpemU9 dW5kZWZpbmVkCndpdGggY2xhbmcgMTkuMS43IG9uIEZlZG9yYSA0MSB4ODYtNjQuCiogc3Jj L2NvdW50ZXJleGFtcGxlLmMgKHNpX2Jmc19mcmVlKToKKiBzcmMvZmlsZXMuYyAocHJlZml4 X21hcF9mcmVlLCBhZGRfcHJlZml4X21hcCk6Ciogc3JjL2ZpeGl0cy5jIChmaXhpdF9jbXAs IGZpeGl0X2ZyZWUsIGZpeGl0c19yZWdpc3Rlcik6CihleHBhbmRfdG9fY29uZmxpY3QsIG5v bnVuaWZ5aW5nX3NoaWZ0X3BhdGgpCihzZWFyY2hfc3RhdGVfZnJlZV9jaGlsZHJlbiwgc2Vh cmNoX3N0YXRlX2ZyZWUsIHNzYl9mcmVlKQooc3NiX2hhc2hlciwgc3NiX2NvbXAsIHNzYl9l cXVhbHMsIHZpc2l0ZWRfaGFzaGVyKQoodmlzaXRlZF9jb21wYXJhdG9yLCBzc2JfYXBwZW5k LCB1bmlmeWluZ19leGFtcGxlKToKKiBzcmMvbHNzaS5jIChsc3NpX2ZyZWUsIGxzc2lfaGFz aGVyLCBsc3NpX2NvbXBhcmF0b3IpCihzaG9ydGVzdF9wYXRoX2Zyb21fc3RhcnQpOgoqIHNy Yy9wYXJzZS1zaW11bGF0aW9uLmMgKGZyZWVfcGFyc2Vfc3RhdGUpCihwYXJzZV9zdGF0ZV9s aXN0X25ldywgcGFyc2VyX3BvcCk6Ciogc3JjL3N0YXRlLWl0ZW0uYyAoaGFzaF9wYWlyX2hh c2hlciwgaGFzaF9wYWlyX2NvbXBhcmF0b3IpCihoYXNoX3BhaXJfZnJlZSwgaGFzaF9wYWly X3RhYmxlX2NyZWF0ZSk6CkF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBDLCB3aGljaCBk b2VzIG5vdCBhbGxvdyB5b3UgdG8gY2FzdCBhCmZ1bmN0aW9uIHBvaW50ZXIgdG8gc29tZSBv dGhlciBmdW5jdGlvbiB0eXBlIGFuZCB0aGVuIGNhbGwgaXQgdmlhCnRoYXQgb3RoZXIgdHlw ZS4gIEluc3RlYWQsIHVzZSBmdW5jdGlvbnMgd2l0aCBjb3JyZWN0IHR5cGVzCmFjY29yZGlu ZyB0byB0aGUgQyBzdGFuZGFyZCwgYW5kIGNhc3QgdGhlaXIgcGFyYW1ldGVycy4KKiBzcmMv Z2V0YXJncy5jICh4YXJnbWF0Y2hfZm4pOiBSZXR1cm4gaW50IGNvbnN0LCBub3QgaW50LCB0 bwptYXRjaCB3aGF0IEFSR01BVENIX0RFRklORV9HUk9VUCBkb2VzLiAgSW4gYWxsIHVzZXMg b2YKQVJHTUFUQ0hfREVGSU5FX0dST1VQLCBzYXkgdGhhdCB0aGV5IHJldHVybiBpbnQsIHRv IG1hdGNoCnhhcmdtYXRjaF9mbi4KKEZMQUdTX0FSR01BVENIKTogRG8gbm90IGNhc3QgZnVu Y3Rpb24gcG9pbnRlci4KKiBzcmMvcGFyc2Utc2ltdWxhdGlvbi5jICh2Y19kZXJpdmF0aW9u X2xpc3RfYXBwZW5kKTogTmV3IGZ1bmN0aW9uLgoqIHNyYy9zeXN0ZW0uaCAoZGVjb25zdCk6 IE5ldyBzdGF0aWMgZnVuY3Rpb24uCi0tLQogc3JjL2NvdW50ZXJleGFtcGxlLmMgICB8IDYy ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2ZpbGVz LmMgICAgICAgICAgICB8IDEwICsrKy0tLS0KIHNyYy9maXhpdHMuYyAgICAgICAgICAgfCAx NiArKysrKy0tLS0tLQogc3JjL2dldGFyZ3MuYyAgICAgICAgICB8IDEyICsrKystLS0tCiBz cmMvbHNzaS5jICAgICAgICAgICAgIHwgMTcgKysrKysrLS0tLS0tCiBzcmMvcGFyc2Utc2lt dWxhdGlvbi5jIHwgMTUgKysrKysrKy0tLQogc3JjL3BhcnNlLXNpbXVsYXRpb24uaCB8ICAy ICstCiBzcmMvc3RhdGUtaXRlbS5jICAgICAgIHwgMTcgKysrKysrLS0tLS0tCiBzcmMvc3lz dGVtLmggICAgICAgICAgIHwgIDkgKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDkwIGluc2Vy dGlvbnMoKyksIDcwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9jb3VudGVyZXhh bXBsZS5jIGIvc3JjL2NvdW50ZXJleGFtcGxlLmMKaW5kZXggODJlZTQzZGEuLjU5NDg0OWMx IDEwMDY0NAotLS0gYS9zcmMvY291bnRlcmV4YW1wbGUuYworKysgYi9zcmMvY291bnRlcmV4 YW1wbGUuYwpAQCAtMjA2LDggKzIwNiw5IEBAIHNpX2Jmc19jb250YWlucyAoY29uc3Qgc2lf YmZzX25vZGUgKm4sIHN0YXRlX2l0ZW1fbnVtYmVyIHNpbikKIH0KIAogc3RhdGljIHZvaWQK LXNpX2Jmc19mcmVlIChzaV9iZnNfbm9kZSAqbikKK3NpX2Jmc19mcmVlICh2b2lkIGNvbnN0 ICp2bikKIHsKKyAgc2lfYmZzX25vZGUgKm4gPSBkZWNvbnN0ICh2bik7CiAgIGlmIChuID09 IE5VTEwpCiAgICAgcmV0dXJuOwogICAtLW4tPnJlZmVyZW5jZV9jb3VudDsKQEAgLTIzMSwx MiArMjMyLDEwIEBAIHR5cGVkZWYgZ2xfbGlzdF90IHNpX2Jmc19ub2RlX2xpc3Q7CiBzdGF0 aWMgaW5saW5lIGRlcml2YXRpb25fbGlzdAogZXhwYW5kX3RvX2NvbmZsaWN0IChzdGF0ZV9p dGVtX251bWJlciBzdGFydCwgc3ltYm9sX251bWJlciBjb25mbGljdF9zeW0pCiB7Ci0gIHNp X2Jmc19ub2RlICppbml0ID0gc2lfYmZzX25ldyAoc3RhcnQsIE5VTEwpOwotCisgIHZvaWQg Y29uc3QgKmluaXQgPSBzaV9iZnNfbmV3IChzdGFydCwgTlVMTCk7CiAgIHNpX2Jmc19ub2Rl X2xpc3QgcXVldWUKICAgICA9IGdsX2xpc3RfY3JlYXRlIChHTF9MSU5LRURfTElTVCwgTlVM TCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAoZ2xfbGlzdGVsZW1lbnRfZGlzcG9z ZV9mbikgc2lfYmZzX2ZyZWUsCi0gICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgMSwgKGNv bnN0IHZvaWQgKiopICZpbml0KTsKKyAgICAgICAgICAgICAgICAgICAgICBzaV9iZnNfZnJl ZSwgdHJ1ZSwgMSwgJmluaXQpOwogICBzaV9iZnNfbm9kZSAqbm9kZSA9IE5VTEw7CiAgIC8v IGJyZWFkdGgtZmlyc3Qgc2VhcmNoIGZvciBhIHBhdGggb2YgcHJvZHVjdGlvbnMgdG8gdGhl IGNvbmZsaWN0IHN5bWJvbAogICB3aGlsZSAoZ2xfbGlzdF9zaXplIChxdWV1ZSkgPiAwKQpA QCAtNDcxLDExICs0NzAsMTAgQEAgbm9udW5pZnlpbmdfc2hpZnRfcGF0aCAoc3RhdGVfaXRl bV9saXN0IHJlZHVjZV9wYXRoLCBzdGF0ZV9pdGVtICpzaGlmdF9jb25mbGljdCkKICAgICAg ICAgY29udGludWU7CiAKICAgICAgIC8vIGJmcyB0byBmaW5kIGEgc2hpZnQgdG8gdGhlIHJp Z2h0IHN0YXRlCi0gICAgICBzaV9iZnNfbm9kZSAqaW5pdCA9IHNpX2Jmc19uZXcgKHNpIC0g c3RhdGVfaXRlbXMsIE5VTEwpOworICAgICAgdm9pZCBjb25zdCAqaW5pdCA9IHNpX2Jmc19u ZXcgKHNpIC0gc3RhdGVfaXRlbXMsIE5VTEwpOwogICAgICAgc2lfYmZzX25vZGVfbGlzdCBx dWV1ZQogICAgICAgICA9IGdsX2xpc3RfY3JlYXRlIChHTF9MSU5LRURfTElTVCwgTlVMTCwg TlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGdsX2xpc3RlbGVtZW50X2Rpc3Bv c2VfZm4pIHNpX2Jmc19mcmVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCAx LCAoY29uc3Qgdm9pZCAqKikgJmluaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICBz aV9iZnNfZnJlZSwgdHJ1ZSwgMSwgJmluaXQpOwogICAgICAgc2lfYmZzX25vZGUgKnNpcyA9 IE5VTEw7CiAgICAgICBzdGF0ZV9pdGVtICpwcmV2c2kgPSBOVUxMOwogICAgICAgd2hpbGUg KGdsX2xpc3Rfc2l6ZSAocXVldWUpID4gMCkKQEAgLTYwNCwxNSArNjAyLDE3IEBAIGNvcHlf c2VhcmNoX3N0YXRlIChzZWFyY2hfc3RhdGUgKnBhcmVudCkKIH0KIAogc3RhdGljIHZvaWQK LXNlYXJjaF9zdGF0ZV9mcmVlX2NoaWxkcmVuIChzZWFyY2hfc3RhdGUgKnNzKQorc2VhcmNo X3N0YXRlX2ZyZWVfY2hpbGRyZW4gKHZvaWQgY29uc3QgKnZzcykKIHsKKyAgc2VhcmNoX3N0 YXRlIGNvbnN0ICpzcyA9IHZzczsKICAgZnJlZV9wYXJzZV9zdGF0ZSAoc3MtPnN0YXRlc1sw XSk7CiAgIGZyZWVfcGFyc2Vfc3RhdGUgKHNzLT5zdGF0ZXNbMV0pOwogfQogCiBzdGF0aWMg dm9pZAotc2VhcmNoX3N0YXRlX2ZyZWUgKHNlYXJjaF9zdGF0ZSAqc3MpCitzZWFyY2hfc3Rh dGVfZnJlZSAodm9pZCAqdnNzKQogeworICBzZWFyY2hfc3RhdGUgKnNzID0gdnNzOwogICBp ZiAoc3MgPT0gTlVMTCkKICAgICByZXR1cm47CiAgIHNlYXJjaF9zdGF0ZV9mcmVlX2NoaWxk cmVuIChzcyk7CkBAIC02OTEsNDIgKzY5MSw1MSBAQCB0eXBlZGVmIHN0cnVjdAogfSBzZWFy Y2hfc3RhdGVfYnVuZGxlOwogCiBzdGF0aWMgdm9pZAotc3NiX2ZyZWUgKHNlYXJjaF9zdGF0 ZV9idW5kbGUgKnNzYikKK3NzYl9mcmVlICh2b2lkIGNvbnN0ICp2c3NiKQogeworICBzZWFy Y2hfc3RhdGVfYnVuZGxlICpzc2IgPSBkZWNvbnN0ICh2c3NiKTsKICAgZ2xfbGlzdF9mcmVl IChzc2ItPnN0YXRlcyk7CiAgIGZyZWUgKHNzYik7CiB9CiAKIHN0YXRpYyBzaXplX3QKLXNz Yl9oYXNoZXIgKHNlYXJjaF9zdGF0ZV9idW5kbGUgKnNzYikKK3NzYl9oYXNoZXIgKHZvaWQg Y29uc3QgKnZzc2IpCiB7CisgIHNlYXJjaF9zdGF0ZV9idW5kbGUgY29uc3QgKnNzYiA9IHZz c2I7CiAgIHJldHVybiBzc2ItPmNvbXBsZXhpdHk7CiB9CiAKIHN0YXRpYyBpbnQKLXNzYl9j b21wIChjb25zdCBzZWFyY2hfc3RhdGVfYnVuZGxlICpzMSwgY29uc3Qgc2VhcmNoX3N0YXRl X2J1bmRsZSAqczIpCitzc2JfY29tcCAodm9pZCBjb25zdCAqdnMxLCB2b2lkIGNvbnN0ICp2 czIpCiB7CisgIHNlYXJjaF9zdGF0ZV9idW5kbGUgY29uc3QgKnMxID0gdnMxOworICBzZWFy Y2hfc3RhdGVfYnVuZGxlIGNvbnN0ICpzMiA9IHZzMjsKICAgcmV0dXJuIHMxLT5jb21wbGV4 aXR5IC0gczItPmNvbXBsZXhpdHk7CiB9CiAKIHN0YXRpYyBib29sCi1zc2JfZXF1YWxzIChj b25zdCBzZWFyY2hfc3RhdGVfYnVuZGxlICpzMSwgY29uc3Qgc2VhcmNoX3N0YXRlX2J1bmRs ZSAqczIpCitzc2JfZXF1YWxzICh2b2lkIGNvbnN0ICp2czEsIHZvaWQgY29uc3QgKnZzMikK IHsKKyAgc2VhcmNoX3N0YXRlX2J1bmRsZSBjb25zdCAqczEgPSB2czE7CisgIHNlYXJjaF9z dGF0ZV9idW5kbGUgY29uc3QgKnMyID0gdnMyOwogICByZXR1cm4gczEtPmNvbXBsZXhpdHkg PT0gczItPmNvbXBsZXhpdHk7CiB9CiAKIHR5cGVkZWYgZ2xfbGlzdF90IHNzYl9saXN0Owog CiBzdGF0aWMgc2l6ZV90Ci12aXNpdGVkX2hhc2hlciAoY29uc3Qgc2VhcmNoX3N0YXRlICpz cywgc2l6ZV90IG1heCkKK3Zpc2l0ZWRfaGFzaGVyICh2b2lkIGNvbnN0ICp2c3MsIHNpemVf dCBtYXgpCiB7CisgIHNlYXJjaF9zdGF0ZSBjb25zdCAqc3MgPSB2c3M7CiAgIHJldHVybiAo cGFyc2Vfc3RhdGVfaGFzaGVyIChzcy0+c3RhdGVzWzBdLCBtYXgpCiAgICAgICAgICAgKyBw YXJzZV9zdGF0ZV9oYXNoZXIgKHNzLT5zdGF0ZXNbMV0sIG1heCkpICUgbWF4OwogfQogCiBz dGF0aWMgYm9vbAotdmlzaXRlZF9jb21wYXJhdG9yIChjb25zdCBzZWFyY2hfc3RhdGUgKnNz MSwgY29uc3Qgc2VhcmNoX3N0YXRlICpzczIpCit2aXNpdGVkX2NvbXBhcmF0b3IgKHZvaWQg Y29uc3QgKnZzczEsIHZvaWQgY29uc3QgKnZzczIpCiB7CisgIHNlYXJjaF9zdGF0ZSBjb25z dCAqc3MxID0gdnNzMTsKKyAgc2VhcmNoX3N0YXRlIGNvbnN0ICpzczIgPSB2c3MyOwogICBy ZXR1cm4gcGFyc2Vfc3RhdGVfY29tcGFyYXRvciAoc3MxLT5zdGF0ZXNbMF0sIHNzMi0+c3Rh dGVzWzBdKQogICAgICYmIHBhcnNlX3N0YXRlX2NvbXBhcmF0b3IgKHNzMS0+c3RhdGVzWzFd LCBzczItPnN0YXRlc1sxXSk7CiB9CkBAIC03NjIsOSArNzcxLDggQEAgc3NiX2FwcGVuZCAo c2VhcmNoX3N0YXRlICpzcykKICAgICB7CiAgICAgICBzc2ItPnN0YXRlcyA9CiAgICAgICAg IGdsX2xpc3RfY3JlYXRlX2VtcHR5IChHTF9MSU5LRURfTElTVCwgTlVMTCwgTlVMTCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnbF9saXN0ZWxlbWVudF9kaXNwb3NlX2Zu KXNlYXJjaF9zdGF0ZV9mcmVlX2NoaWxkcmVuLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdHJ1ZSk7Ci0gICAgICBnbF9zb3J0ZWRsaXN0X2FkZCAoc3NiX3F1ZXVlLCAoZ2xf bGlzdGVsZW1lbnRfY29tcGFyX2ZuKSBzc2JfY29tcCwgc3NiKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlYXJjaF9zdGF0ZV9mcmVlX2NoaWxkcmVuLCB0cnVlKTsKKyAg ICAgIGdsX3NvcnRlZGxpc3RfYWRkIChzc2JfcXVldWUsIHNzYl9jb21wLCBzc2IpOwogICAg IH0KICAgZWxzZQogICAgIHsKQEAgLTExMDksMTUgKzExMTcsMTIgQEAgdW5pZnlpbmdfZXhh bXBsZSAoc3RhdGVfaXRlbV9udW1iZXIgaXRtMSwKICAgc3RhdGVfaXRlbSAqY29uZmxpY3Qx ID0gJnN0YXRlX2l0ZW1zW2l0bTFdOwogICBzdGF0ZV9pdGVtICpjb25mbGljdDIgPSAmc3Rh dGVfaXRlbXNbaXRtMl07CiAgIHNlYXJjaF9zdGF0ZSAqaW5pdGlhbCA9IGluaXRpYWxfc2Vh cmNoX3N0YXRlIChjb25mbGljdDEsIGNvbmZsaWN0Mik7Ci0gIHNzYl9xdWV1ZSA9IGdsX2xp c3RfY3JlYXRlX2VtcHR5IChHTF9SQlRSRUVIQVNIX0xJU1QsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZ2xfbGlzdGVsZW1lbnRfZXF1YWxzX2ZuKSBzc2JfZXF1 YWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdsX2xpc3RlbGVt ZW50X2hhc2hjb2RlX2ZuKSBzc2JfaGFzaGVyLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGdsX2xpc3RlbGVtZW50X2Rpc3Bvc2VfZm4pIHNzYl9mcmVlLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOworICBzc2JfcXVldWUg PSBnbF9saXN0X2NyZWF0ZV9lbXB0eSAoR0xfUkJUUkVFSEFTSF9MSVNULCBzc2JfZXF1YWxz LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NiX2hhc2hlciwgc3Ni X2ZyZWUsIGZhbHNlKTsKICAgdmlzaXRlZCA9Ci0gICAgaGFzaF9pbml0aWFsaXplICgzMiwg TlVMTCwgKEhhc2hfaGFzaGVyKSB2aXNpdGVkX2hhc2hlciwKLSAgICAgICAgICAgICAgICAg ICAgIChIYXNoX2NvbXBhcmF0b3IpIHZpc2l0ZWRfY29tcGFyYXRvciwKLSAgICAgICAgICAg ICAgICAgICAgIChIYXNoX2RhdGFfZnJlZXIpIHNlYXJjaF9zdGF0ZV9mcmVlKTsKKyAgICBo YXNoX2luaXRpYWxpemUgKDMyLCBOVUxMLCB2aXNpdGVkX2hhc2hlciwKKyAgICAgICAgICAg ICAgICAgICAgIHZpc2l0ZWRfY29tcGFyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgIHNl YXJjaF9zdGF0ZV9mcmVlKTsKICAgc3NiX2FwcGVuZCAoaW5pdGlhbCk7CiAgIHh0aW1lX3Qg c3RhcnQgPSBnZXRocnh0aW1lICgpOwogICBib29sIGFzc3VyYW5jZV9wcmludGVkID0gZmFs c2U7CkBAIC0xMTgxLDggKzExODYsNyBAQCB1bmlmeWluZ19leGFtcGxlIChzdGF0ZV9pdGVt X251bWJlciBpdG0xLAogICAgICAgICAgICAgfQogICAgICAgICAgIGdlbmVyYXRlX25leHRf c3RhdGVzIChzcywgY29uZmxpY3QxLCBjb25mbGljdDIpOwogICAgICAgICB9Ci0gICAgICBn bF9zb3J0ZWRsaXN0X3JlbW92ZSAoc3NiX3F1ZXVlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChnbF9saXN0ZWxlbWVudF9jb21wYXJfZm4pIHNzYl9jb21wLCBzc2IpOworICAg ICAgZ2xfc29ydGVkbGlzdF9yZW1vdmUgKHNzYl9xdWV1ZSwgc3NiX2NvbXAsIHNzYik7CiAg ICAgfQogY2V4X3NlYXJjaF9lbmQ6OwogICBpZiAoIWNleCkKZGlmZiAtLWdpdCBhL3NyYy9m aWxlcy5jIGIvc3JjL2ZpbGVzLmMKaW5kZXggNTJmYjdiYzguLjMyZWE1ZTllIDEwMDY0NAot LS0gYS9zcmMvZmlsZXMuYworKysgYi9zcmMvZmlsZXMuYwpAQCAtMjYxLDggKzI2MSw5IEBA IG1hcF9maWxlX25hbWUgKGNoYXIgY29uc3QgKmZpbGVuYW1lKQogfQogCiBzdGF0aWMgdm9p ZAotcHJlZml4X21hcF9mcmVlIChzdHJ1Y3QgcHJlZml4X21hcCAqcCkKK3ByZWZpeF9tYXBf ZnJlZSAodm9pZCBjb25zdCAqdnApCiB7CisgIHN0cnVjdCBwcmVmaXhfbWFwICpwID0gZGVj b25zdCAodnApOwogICBmcmVlIChwLT5vbGRwcmVmaXgpOwogICBmcmVlIChwLT5uZXdwcmVm aXgpOwogICBmcmVlIChwKTsKQEAgLTI3MywxMSArMjc0LDggQEAgYWRkX3ByZWZpeF9tYXAg KGNoYXIgY29uc3QgKm9sZHByZWZpeCwgY2hhciBjb25zdCAqbmV3cHJlZml4KQogewogICBp ZiAoIXByZWZpeF9tYXBzKQogICAgIHByZWZpeF9tYXBzCi0gICAgICA9IGdsX2xpc3RfY3Jl YXRlX2VtcHR5IChHTF9BUlJBWV9MSVNULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogZXF1YWxzICovIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiBoYXNoY29kZSAqLyBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGds X2xpc3RlbGVtZW50X2Rpc3Bvc2VfZm4pIHByZWZpeF9tYXBfZnJlZSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRydWUpOworICAgICAgPSBnbF9saXN0X2NyZWF0ZV9lbXB0 eSAoR0xfQVJSQVlfTElTVCwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHByZWZpeF9tYXBfZnJlZSwgdHJ1ZSk7CiAKICAgc3RydWN0IHByZWZpeF9tYXAg KnAgPSB4bWFsbG9jIChzaXplb2YgKCpwKSk7CiAgIHAtPm9sZHByZWZpeCA9IHhzdHJkdXAg KG9sZHByZWZpeCk7CmRpZmYgLS1naXQgYS9zcmMvZml4aXRzLmMgYi9zcmMvZml4aXRzLmMK aW5kZXggMDYwNWRhNDEuLjBiNThiYjQzIDEwMDY0NAotLS0gYS9zcmMvZml4aXRzLmMKKysr IGIvc3JjL2ZpeGl0cy5jCkBAIC01MywxNCArNTMsMTcgQEAgZml4aXRfbmV3IChsb2NhdGlv biBjb25zdCAqbG9jLCBjaGFyIGNvbnN0KiBmaXgpCiB9CiAKIHN0YXRpYyBpbnQKLWZpeGl0 X2NtcCAoY29uc3QgIGZpeGl0ICphLCBjb25zdCBmaXhpdCAqYikKK2ZpeGl0X2NtcCAodm9p ZCBjb25zdCAqdmEsIHZvaWQgY29uc3QgKnZiKQogeworICBmaXhpdCBjb25zdCAqYSA9IHZh OworICBmaXhpdCBjb25zdCAqYiA9IHZiOwogICByZXR1cm4gbG9jYXRpb25fY21wIChhLT5s b2NhdGlvbiwgYi0+bG9jYXRpb24pOwogfQogCiBzdGF0aWMgdm9pZAotZml4aXRfZnJlZSAo Zml4aXQgKmYpCitmaXhpdF9mcmVlICh2b2lkIGNvbnN0ICp2ZikKIHsKKyAgZml4aXQgKmYg PSBkZWNvbnN0ICh2Zik7CiAgIGZyZWUgKGYtPmZpeCk7CiAgIGZyZWUgKGYpOwogfQpAQCAt ODQsMTMgKzg3LDEwIEBAIHZvaWQKIGZpeGl0c19yZWdpc3RlciAobG9jYXRpb24gY29uc3Qg KmxvYywgY2hhciBjb25zdCogZml4KQogewogICBpZiAoIWZpeGl0cykKLSAgICBmaXhpdHMg PSBnbF9saXN0X2NyZWF0ZV9lbXB0eSAoR0xfQVJSQVlfTElTVCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogZXF1YWxzICovIE5VTEwsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIGhhc2hjb2RlICovIE5VTEwsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChnbF9saXN0ZWxlbWVudF9kaXNwb3NlX2ZuKSBm aXhpdF9mcmVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsK KyAgICBmaXhpdHMgPSBnbF9saXN0X2NyZWF0ZV9lbXB0eSAoR0xfQVJSQVlfTElTVCwgTlVM TCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4aXRfZnJl ZSwgdHJ1ZSk7CiAgIGZpeGl0ICpmID0gZml4aXRfbmV3IChsb2MsIGZpeCk7Ci0gIGdsX3Nv cnRlZGxpc3RfYWRkIChmaXhpdHMsIChnbF9saXN0ZWxlbWVudF9jb21wYXJfZm4pIGZpeGl0 X2NtcCwgZik7CisgIGdsX3NvcnRlZGxpc3RfYWRkIChmaXhpdHMsIGZpeGl0X2NtcCwgZik7 CiAgIGlmIChmZWF0dXJlX2ZsYWcgJiBmZWF0dXJlX2ZpeGl0KQogICAgIGZpeGl0X3ByaW50 IChmLCBzdGRlcnIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2dldGFyZ3MuYyBiL3NyYy9nZXRh cmdzLmMKaW5kZXggYWQ5ZGVkOWMuLmRmZjU3ZmUxIDEwMDY0NAotLS0gYS9zcmMvZ2V0YXJn cy5jCisrKyBiL3NyYy9nZXRhcmdzLmMKQEAgLTY5LDcgKzY5LDcgQEAgY29uc3QgY2hhciAq c2tlbGV0b24gPSBOVUxMOwogaW50IGxhbmd1YWdlX3ByaW8gPSBkZWZhdWx0X3ByaW87CiBz dHJ1Y3QgYmlzb25fbGFuZ3VhZ2UgY29uc3QgKmxhbmd1YWdlID0gJnZhbGlkX2xhbmd1YWdl c1swXTsKIAotdHlwZWRlZiBpbnQqICh4YXJnbWF0Y2hfZm4pIChjb25zdCBjaGFyICpjb250 ZXh0LCBjb25zdCBjaGFyICphcmcpOwordHlwZWRlZiBpbnQgY29uc3QgKih4YXJnbWF0Y2hf Zm4pIChjaGFyIGNvbnN0ICpjb250ZXh0LCBjaGFyIGNvbnN0ICphcmcpOwogCiB2b2lkCiBz ZXRfeWFjYyAobG9jYXRpb24gbG9jKQpAQCAtMTY0LDcgKzE2NCw3IEBAIGZsYWdzX2FyZ21h dGNoIChjb25zdCBjaGFyICpvcHQsCiAgKi8KICNkZWZpbmUgRkxBR1NfQVJHTUFUQ0goRmxh Z05hbWUsIEFyZ3MsIEFsbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgZmxh Z3NfYXJnbWF0Y2ggKCItLSIgI0ZsYWdOYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICh4YXJnbWF0Y2hfZm4qKSBhcmdt YXRjaF8jIyBGbGFnTmFtZSAjIyBfdmFsdWUsICAgICAgIFwKKyAgICAgICAgICAgICAgICAg IGFyZ21hdGNoXyAjIyBGbGFnTmFtZSAjIyBfdmFsdWUsICAgICAgICAgICAgICAgICAgICAg IFwKICAgICAgICAgICAgICAgICAgIGFyZ21hdGNoXyAjIyBGbGFnTmFtZSAjIyBfdXNhZ2Us ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgIEFsbCwgJkZsYWdO YW1lICMjIF9mbGFnLCBBcmdzKQogCkBAIC0xNzksNyArMTc5LDcgQEAgZW51bSBjb2xvcgog ICAgIGNvbG9yX2F1dG8KICAgfTsKIAotQVJHTUFUQ0hfREVGSU5FX0dST1VQIChjb2xvciwg ZW51bSBjb2xvcikKK0FSR01BVENIX0RFRklORV9HUk9VUCAoY29sb3IsIGludCkKIAogc3Rh dGljIGNvbnN0IGFyZ21hdGNoX2NvbG9yX2RvYyBhcmdtYXRjaF9jb2xvcl9kb2NzW10gPQog ewpAQCAtMjE1LDcgKzIxNSw3IEBAIGNvbnN0IGFyZ21hdGNoX2NvbG9yX2dyb3VwX3R5cGUg YXJnbWF0Y2hfY29sb3JfZ3JvdXAgPQogfCAtLXJlcG9ydCdzIGhhbmRsaW5nLiAgfAogYC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi1BUkdNQVRDSF9ERUZJTkVfR1JPVVAgKHJlcG9y dCwgZW51bSByZXBvcnQpCitBUkdNQVRDSF9ERUZJTkVfR1JPVVAgKHJlcG9ydCwgaW50KQog CiBzdGF0aWMgY29uc3QgYXJnbWF0Y2hfcmVwb3J0X2RvYyBhcmdtYXRjaF9yZXBvcnRfZG9j c1tdID0KIHsKQEAgLTI1Niw3ICsyNTYsNyBAQCBjb25zdCBhcmdtYXRjaF9yZXBvcnRfZ3Jv dXBfdHlwZSBhcmdtYXRjaF9yZXBvcnRfZ3JvdXAgPQogfCAtLXRyYWNlJ3MgaGFuZGxpbmcu ICB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotQVJHTUFUQ0hfREVGSU5FX0dST1VQ ICh0cmFjZSwgZW51bSB0cmFjZSkKK0FSR01BVENIX0RFRklORV9HUk9VUCAodHJhY2UsIGlu dCkKIAogc3RhdGljIGNvbnN0IGFyZ21hdGNoX3RyYWNlX2RvYyBhcmdtYXRjaF90cmFjZV9k b2NzW10gPQogewpAQCAtMzE5LDcgKzMxOSw3IEBAIGNvbnN0IGFyZ21hdGNoX3RyYWNlX2dy b3VwX3R5cGUgYXJnbWF0Y2hfdHJhY2VfZ3JvdXAgPQogfCAtLWZlYXR1cmUncyBoYW5kbGlu Zy4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKLUFSR01BVENIX0RFRklORV9H Uk9VUCAoZmVhdHVyZSwgZW51bSBmZWF0dXJlKQorQVJHTUFUQ0hfREVGSU5FX0dST1VQIChm ZWF0dXJlLCBpbnQpCiAKIHN0YXRpYyBjb25zdCBhcmdtYXRjaF9mZWF0dXJlX2RvYyBhcmdt YXRjaF9mZWF0dXJlX2RvY3NbXSA9CiB7CmRpZmYgLS1naXQgYS9zcmMvbHNzaS5jIGIvc3Jj L2xzc2kuYwppbmRleCA3OWJiYmExOC4uMmYzNWM1M2MgMTAwNjQ0Ci0tLSBhL3NyYy9sc3Np LmMKKysrIGIvc3JjL2xzc2kuYwpAQCAtNTAsOCArNTAsOSBAQCBuZXdfbHNzaSAoc3RhdGVf aXRlbV9udW1iZXIgc2ksIGxzc2kgKnAsIGJpdHNldCBsLCBib29sIGZyZWVfbCkKIH0KIAog c3RhdGljIHZvaWQKLWxzc2lfZnJlZSAobHNzaSAqc24pCitsc3NpX2ZyZWUgKHZvaWQgKnZz bikKIHsKKyAgbHNzaSAqc24gPSB2c247CiAgIGlmIChzbiA9PSBOVUxMKQogICAgIHJldHVy bjsKICAgaWYgKHNuLT5mcmVlX2xvb2thaGVhZCkKQEAgLTYwLDggKzYxLDkgQEAgbHNzaV9m cmVlIChsc3NpICpzbikKIH0KIAogc3RhdGljIHNpemVfdAotbHNzaV9oYXNoZXIgKGxzc2kg KnNuLCBzaXplX3QgbWF4KQorbHNzaV9oYXNoZXIgKHZvaWQgY29uc3QgKnZzbiwgc2l6ZV90 IG1heCkKIHsKKyAgbHNzaSBjb25zdCAqc24gPSB2c247CiAgIHNpemVfdCBoYXNoID0gc24t PnNpOwogICBiaXRzZXRfaXRlcmF0b3IgYml0ZXI7CiAgIHN5bWJvbF9udW1iZXIgc3luOwpA QCAtNzEsOCArNzMsMTAgQEAgbHNzaV9oYXNoZXIgKGxzc2kgKnNuLCBzaXplX3QgbWF4KQog fQogCiBzdGF0aWMgYm9vbAotbHNzaV9jb21wYXJhdG9yIChsc3NpICpzMSwgbHNzaSAqczIp Citsc3NpX2NvbXBhcmF0b3IgKHZvaWQgY29uc3QgKnZzMSwgdm9pZCBjb25zdCAqdnMyKQog eworICBsc3NpIGNvbnN0ICpzMSA9IHZzMTsKKyAgbHNzaSBjb25zdCAqczIgPSB2czI7CiAg IGlmIChzMS0+c2kgPT0gczItPnNpKQogICAgIHsKICAgICAgIGlmIChzMS0+bG9va2FoZWFk ID09IHMyLT5sb29rYWhlYWQpCkBAIC0xNTQsMTEgKzE1OCw4IEBAIHN0YXRlX2l0ZW1fbGlz dAogc2hvcnRlc3RfcGF0aF9mcm9tX3N0YXJ0IChzdGF0ZV9pdGVtX251bWJlciB0YXJnZXQs IHN5bWJvbF9udW1iZXIgbmV4dF9zeW0pCiB7CiAgIGJpdHNldCBlbGlnaWJsZSA9IGVsaWdp YmxlX3N0YXRlX2l0ZW1zICgmc3RhdGVfaXRlbXNbdGFyZ2V0XSk7Ci0gIEhhc2hfdGFibGUg KnZpc2l0ZWQgPSBoYXNoX2luaXRpYWxpemUgKDMyLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoSGFzaF9oYXNoZXIpIGxzc2lfaGFzaGVyLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSGFzaF9jb21wYXJhdG9yKSBsc3NpX2Nv bXBhcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChI YXNoX2RhdGFfZnJlZXIpIGxzc2lfZnJlZSk7CisgIEhhc2hfdGFibGUgKnZpc2l0ZWQgPSBo YXNoX2luaXRpYWxpemUgKDMyLCBOVUxMLCBsc3NpX2hhc2hlciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbHNzaV9jb21wYXJhdG9yLCBsc3NpX2ZyZWUp OwogICBiaXRzZXQgaWwgPSBiaXRzZXRfY3JlYXRlIChuc3ltcywgQklUU0VUX0ZJWEVEKTsK ICAgYml0c2V0X3NldCAoaWwsIDApOwogICBsc3NpICppbml0ID0gbmV3X2xzc2kgKDAsIE5V TEwsIGlsLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9wYXJzZS1zaW11bGF0aW9uLmMgYi9z cmMvcGFyc2Utc2ltdWxhdGlvbi5jCmluZGV4IDllMWY2NmRmLi43YzlmZTM4MiAxMDA2NDQK LS0tIGEvc3JjL3BhcnNlLXNpbXVsYXRpb24uYworKysgYi9zcmMvcGFyc2Utc2ltdWxhdGlv bi5jCkBAIC0xOTQsOCArMTk0LDkgQEAgcGFyc2Vfc3RhdGVfZnJlZV9jb250ZW50c19lYXJs eSAocGFyc2Vfc3RhdGUgKnBzKQogfQogCiB2b2lkCi1mcmVlX3BhcnNlX3N0YXRlIChwYXJz ZV9zdGF0ZSAqb3JpZ2luYWxfcHMpCitmcmVlX3BhcnNlX3N0YXRlICh2b2lkIGNvbnN0ICp2 b3JpZ2luYWxfcHMpCiB7CisgIHBhcnNlX3N0YXRlICpvcmlnaW5hbF9wcyA9IGRlY29uc3Qg KHZvcmlnaW5hbF9wcyk7CiAgIGJvb2wgZnJlZV9jb250ZW50cyA9IHRydWU7CiAgIHBhcnNl X3N0YXRlICpwYXJlbnRfcHMgPSBOVUxMOwogICBmb3IgKHBhcnNlX3N0YXRlICpwcyA9IG9y aWdpbmFsX3BzOyBwcyAmJiBmcmVlX2NvbnRlbnRzOyBwcyA9IHBhcmVudF9wcykKQEAgLTMx MSw4ICszMTIsNyBAQCBzdGF0aWMgcGFyc2Vfc3RhdGVfbGlzdAogcGFyc2Vfc3RhdGVfbGlz dF9uZXcgKHZvaWQpCiB7CiAgIHJldHVybiBnbF9saXN0X2NyZWF0ZV9lbXB0eSAoR0xfTElO S0VEX0xJU1QsIE5VTEwsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdsX2xpc3RlbGVtZW50X2Rpc3Bvc2VfZm4pZnJlZV9wYXJzZV9zdGF0ZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmcmVlX3BhcnNlX3N0YXRlLCB0cnVlKTsKIH0KIAogc3RhdGljIHZvaWQKQEAg LTMyMiw2ICszMjIsMTMgQEAgcGFyc2Vfc3RhdGVfbGlzdF9hcHBlbmQgKHBhcnNlX3N0YXRl X2xpc3QgcGwsIHBhcnNlX3N0YXRlICpwcykKICAgZ2xfbGlzdF9hZGRfbGFzdCAocGwsIHBz KTsKIH0KIAorc3RhdGljIHZvaWQKK3ZjX2Rlcml2YXRpb25fbGlzdF9hcHBlbmQgKGRlcml2 YXRpb25fbGlzdCBkbCwgdm9pZCBjb25zdCAqdmNkKQoreworICBkZXJpdmF0aW9uICpkID0g ZGVjb25zdCAodmNkKTsKKyAgcmV0dXJuIGRlcml2YXRpb25fbGlzdF9hcHBlbmQgKGRsLCBk KTsKK30KKwogLy8gRW11bGF0ZXMgYSByZWR1Y3Rpb24gb24gYSBwYXJzZSBzdGF0ZSBieSBw b3BwaW5nIHNvbWUgYW1vdW50IG9mCiAvLyBkZXJpdmF0aW9ucyBhbmQgc3RhdGVfaXRlbXMg b2ZmIG9mIHRoZSBwYXJzZV9zdGF0ZSBhbmQgcmV0dXJuaW5nCiAvLyB0aGUgcmVzdWx0IGlu IHJldC4gUmV0dXJucyB0aGUgZGVyaXZhdGlvbiBvZiB3aGF0J3MgcG9wcGVkLgpAQCAtMzUx LDcgKzM1OCw3IEBAIHBhcnNlcl9wb3AgKHBhcnNlX3N0YXRlICpwcywgaW50IGRlcml2X2lu ZGV4LAogICBsaXN0X2ZsYXR0ZW5fYW5kX3NwbGl0IChjaHVua3MsIHJldF9jaHVua3MsIHNp X2luZGV4LCAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2FkZF9sYXN0KTsK ICAgbGlzdF9mbGF0dGVuX2FuZF9zcGxpdCAoY2h1bmtzICsgMiwgcmV0X2NodW5rcyArIDIs IGRlcml2X2luZGV4LCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoY2h1bmtfYXBw ZW5kX2ZuKWRlcml2YXRpb25fbGlzdF9hcHBlbmQpOworICAgICAgICAgICAgICAgICAgICAg ICAgICB2Y19kZXJpdmF0aW9uX2xpc3RfYXBwZW5kKTsKICAgc2l6ZV90IHNfc2l6ZSA9IGds X2xpc3Rfc2l6ZSAocmV0LT5zdGF0ZV9pdGVtcy5jb250ZW50cyk7CiAgIHJldC0+c3RhdGVf aXRlbXMudG90YWxfc2l6ZSA9IHNfc2l6ZTsKICAgaWYgKHNfc2l6ZSA+IDApCmRpZmYgLS1n aXQgYS9zcmMvcGFyc2Utc2ltdWxhdGlvbi5oIGIvc3JjL3BhcnNlLXNpbXVsYXRpb24uaApp bmRleCBhYzc0NmNkNi4uN2Q2NmJkOWIgMTAwNjQ0Ci0tLSBhL3NyYy9wYXJzZS1zaW11bGF0 aW9uLmgKKysrIGIvc3JjL3BhcnNlLXNpbXVsYXRpb24uaApAQCAtOTksNyArOTksNyBAQCB2 b2lkIHBhcnNlX3N0YXRlX3JldGFpbiAocGFyc2Vfc3RhdGUgKnBzKTsKICAqIHdoZW4gaXRz IHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIDEuIFRoaXMgaXMgdXNlZCB0bwogICogZnJlZSBt ZW1vcnkgd2hpbGUgdGhlIHBhcnNlIHN0YXRlIGlzIGluIGEgaGFzaCBzZXQuICovCiB2b2lk IHBhcnNlX3N0YXRlX2ZyZWVfY29udGVudHNfZWFybHkgKHBhcnNlX3N0YXRlICpwcyk7Ci12 b2lkIGZyZWVfcGFyc2Vfc3RhdGUgKHBhcnNlX3N0YXRlICpwcyk7Cit2b2lkIGZyZWVfcGFy c2Vfc3RhdGUgKHZvaWQgY29uc3QgKnBzKTsKIAogLyogY291bnRzIHRoZSBhbW91bnQgb2Yg c2hpZnQgYW5kIHByb2R1Y3Rpb24gc3RlcHMgaW4gdGhpcyBwYXJzZSBzdGF0ZSAqLwogdm9p ZCBwYXJzZV9zdGF0ZV9jb21wbGV0ZWRfc3RlcHMgKGNvbnN0IHBhcnNlX3N0YXRlICpwcywg aW50ICpzaGlmdHMsIGludCAqcHJvZHVjdGlvbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL3N0YXRl LWl0ZW0uYyBiL3NyYy9zdGF0ZS1pdGVtLmMKaW5kZXggY2MxNjAyY2MuLmFkZGY0ZGMzIDEw MDY0NAotLS0gYS9zcmMvc3RhdGUtaXRlbS5jCisrKyBiL3NyYy9zdGF0ZS1pdGVtLmMKQEAg LTQ0LDIwICs0NCwyNCBAQCB0eXBlZGVmIHN0cnVjdAogfSBoYXNoX3BhaXI7CiAKIHN0YXRp YyBzaXplX3QKLWhhc2hfcGFpcl9oYXNoZXIgKGNvbnN0IGhhc2hfcGFpciAqc2wsIHNpemVf dCBtYXgpCitoYXNoX3BhaXJfaGFzaGVyICh2b2lkIGNvbnN0ICp2c2wsIHNpemVfdCBtYXgp CiB7CisgIGhhc2hfcGFpciBjb25zdCAqc2wgPSB2c2w7CiAgIHJldHVybiBzbC0+a2V5ICUg bWF4OwogfQogCiBzdGF0aWMgYm9vbAotaGFzaF9wYWlyX2NvbXBhcmF0b3IgKGNvbnN0IGhh c2hfcGFpciAqbCwgY29uc3QgaGFzaF9wYWlyICpyKQoraGFzaF9wYWlyX2NvbXBhcmF0b3Ig KHZvaWQgY29uc3QgKnZsLCB2b2lkIGNvbnN0ICp2cikKIHsKKyAgaGFzaF9wYWlyIGNvbnN0 ICpsID0gdmw7CisgIGhhc2hfcGFpciBjb25zdCAqciA9IHZyOwogICByZXR1cm4gbC0+a2V5 ID09IHItPmtleTsKIH0KIAogc3RhdGljIHZvaWQKLWhhc2hfcGFpcl9mcmVlIChoYXNoX3Bh aXIgKmhwKQoraGFzaF9wYWlyX2ZyZWUgKHZvaWQgKnZocCkKIHsKKyAgaGFzaF9wYWlyICpo cCA9IHZocDsKICAgYml0c2V0X2ZyZWUgKGhwLT5sKTsKICAgZnJlZSAoaHApOwogfQpAQCAt NjUsMTEgKzY5LDggQEAgaGFzaF9wYWlyX2ZyZWUgKGhhc2hfcGFpciAqaHApCiBzdGF0aWMg SGFzaF90YWJsZSAqCiBoYXNoX3BhaXJfdGFibGVfY3JlYXRlIChpbnQgc2l6ZSkKIHsKLSAg cmV0dXJuIGhhc2hfeGluaXRpYWxpemUgKHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKEhhc2hfaGFzaGVyKSBo YXNoX3BhaXJfaGFzaGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKEhhc2hfY29t cGFyYXRvcikgaGFzaF9wYWlyX2NvbXBhcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAoSGFzaF9kYXRhX2ZyZWVyKSBoYXNoX3BhaXJfZnJlZSk7CisgIHJldHVybiBoYXNo X3hpbml0aWFsaXplIChzaXplLCBOVUxMLCBoYXNoX3BhaXJfaGFzaGVyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgaGFzaF9wYWlyX2NvbXBhcmF0b3IsIGhhc2hfcGFpcl9mcmVl KTsKIH0KIAogc3RhdGljIGJpdHNldApkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbS5oIGIvc3Jj L3N5c3RlbS5oCmluZGV4IGZkMzA5MjZiLi44ZmYxMGMxOSAxMDA2NDQKLS0tIGEvc3JjL3N5 c3RlbS5oCisrKyBiL3NyYy9zeXN0ZW0uaApAQCAtMzA4LDQgKzMwOCwxMyBAQCBvYnN0YWNr X2VzY2FwZSAoc3RydWN0IG9ic3RhY2sqIG9icywgY29uc3QgY2hhciAqY3ApCiAgICAgICB9 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIH0gd2hpbGUg KDApCiAKKy8qIEdudWxpYiBnZW5lcmljIGxpc3QgZnVuY3Rpb25zIHNvbWV0aW1lcyB3YW50 IGFyZ3MgdG8gYmUgdm9pZCBjb25zdCAqLgorICAgV2Ugc29tZXRpbWVzIHdhbnQgdm9pZCAq LCBmb3IgJ2ZyZWUnLCBvciBwb3NzaWJseSBiZWNhdXNlIHdlIHBsYW4KKyAgIHRvIGNoZWF0 IGFuZCBtb2RpZnkgdGhlIHN0b3JhZ2UuICBDYXN0IHRvIHNhdGlzZnkgQydzIHN0YXRpYyBj aGVja2luZy4gICovCitzdGF0aWMgaW5saW5lIHZvaWQgKgorZGVjb25zdCAodm9pZCBjb25z dCAqcCkKK3sKKyAgcmV0dXJuICh2b2lkICopIHA7Cit9CisKICNlbmRpZiAgLyogISBCSVNP Tl9TWVNURU1fSCAqLwotLSAKMi40OC4xCgo= --------------uFjIZvzExWSiiDinsphmqzeO--