From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 4943 invoked from network); 24 May 2021 14:36:51 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 24 May 2021 14:36:51 -0000 Content-Type: multipart/mixed; boundary="===============4272499695349482556==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_Portaudio_19=2E7=2E0?= To: ml@inbox.vuxu.org From: prez Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Mon, 24 May 2021 16:36:51 +0200 List-Id: Message-ID: <20210524143651.4KtlymF2s-3b4orr8Sdpb0dKs3Ei5qQklvJia_SzYww@z> GitHub notification mails are now in MIME to allow UTF8. --===============4272499695349482556== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgcHJleiBhZ2FpbnN0IG1hc3RlciBv biB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vcHJlei92 b2lkLXBhY2thZ2VzIHBvcnRhdWRpbwpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lk LXBhY2thZ2VzL3B1bGwvMzAxMDgKClBvcnRhdWRpbyAxOS43LjAKPCEtLSBNYXJrIGl0ZW1zIHdp dGggW3hdIHdoZXJlIGFwcGxpY2FibGUgLS0+DQoNCiMjIyMgR2VuZXJhbA0KLSBbIF0gVGhpcyBp cyBhIG5ldyBwYWNrYWdlIGFuZCBpdCBjb25mb3JtcyB0byB0aGUgW3F1YWxpdHkgcmVxdWlyZW1l bnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Jsb2IvbWFz dGVyL01hbnVhbC5tZCNxdWFsaXR5LXJlcXVpcmVtZW50cykNCg0KIyMjIyBIYXZlIHRoZSByZXN1 bHRzIG9mIHRoZSBwcm9wb3NlZCBjaGFuZ2VzIGJlZW4gdGVzdGVkPw0KLSBbIF0gSSB1c2UgdGhl IHBhY2thZ2VzIGFmZmVjdGVkIGJ5IHRoZSBwcm9wb3NlZCBjaGFuZ2VzIG9uIGEgcmVndWxhciBi YXNpcyBhbmQgY29uZmlybSB0aGlzIFBSIHdvcmtzIGZvciBtZQ0KLSBbeF0gSSBnZW5lcmFsbHkg ZG9uJ3QgdXNlIHRoZSBhZmZlY3RlZCBwYWNrYWdlcyBidXQgYnJpZWZseSB0ZXN0ZWQgdGhpcyBQ Ug0KDQo8IS0tDQpJZiBHaXRIdWIgQ0kgY2Fubm90IGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIGJ1 aWxkIHJlc3VsdCAoZm9yIGV4YW1wbGUsIGlmIHRoZQ0KYnVpbGQgaXMgbGlrZWx5IHRvIHRha2Ug c2V2ZXJhbCBob3VycyksIG1ha2Ugc3VyZSB0bw0KW3NraXAgQ0ldKGh0dHBzOi8vZ2l0aHViLmNv bS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kI2Nv bnRpbnVvdXMtaW50ZWdyYXRpb24pLg0KV2hlbiBza2lwcGluZyBDSSwgdW5jb21tZW50IGFuZCBm aWxsIG91dCB0aGUgZm9sbG93aW5nIHNlY3Rpb24uDQpOb3RlOiBmb3IgYnVpbGRzIHRoYXQgYXJl IGxpa2VseSB0byBjb21wbGV0ZSBpbiBsZXNzIHRoYW4gMiBob3VycywgaXQgaXMgbm90DQphY2Nl cHRhYmxlIHRvIHNraXAgQ0kuDQotLT4NCjwhLS0gDQojIyMjIERvZXMgaXQgYnVpbGQgYW5kIHJ1 biBzdWNjZXNzZnVsbHk/IA0KKFBsZWFzZSBjaG9vc2UgYXQgbGVhc3Qgb25lIG5hdGl2ZSBidWls ZCBhbmQsIGlmIHN1cHBvcnRlZCwgYXQgbGVhc3Qgb25lIGNyb3NzIGJ1aWxkLiBNb3JlIGFyZSBi ZXR0ZXIuKQ0KLSBbeF0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNo aXRlY3R1cmUsICh4ODZfNjQtbXVzbCkNCi0gWyBdIEkgYnVpbHQgdGhpcyBQUiBsb2NhbGx5IGZv ciB0aGVzZSBhcmNoaXRlY3R1cmVzIChpZiBzdXBwb3J0ZWQuIG1hcmsgY3Jvc3NidWlsZHMpOg0K ICAtIFsgXSBhYXJjaDY0LW11c2wNCiAgLSBbIF0gYXJtdjdsDQogIC0gWyBdIGFybXY2bC1tdXNs DQotLT4NCg0KRWRpdDogcmVtb3ZlZCB0aGUgYXVkYWNpdHkgYW5kIHNuZGlvIHBhdGNoZXMgYXMg dGhleSAocG90ZW50aWFsbHkpIG5lZWQgdG8gYmUgdXBkYXRlZC4KCkEgcGF0Y2ggZmlsZSBmcm9t IGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8zMDEwOC5w YXRjaCBpcyBhdHRhY2hlZA== --===============4272499695349482556== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-portaudio-30108.patch" RnJvbSBlNGFmNTBmYThiNjNmODRmZmVmMzk2NjczMjI4MmNiMDU4MjVmYzM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5j eT4KRGF0ZTogRnJpLCA5IEFwciAyMDIxIDExOjIzOjA1ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g cG9ydGF1ZGlvOiB1cGRhdGUgdG8gMTkuNy4wLgoKLS0tCiBjb21tb24vc2hsaWJzICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9wb3J0YXVkaW8vcGF0Y2hlcy9h dWRhY2l0eS1jb21wYXQucGF0Y2ggICB8IDM0NCAtLS0tLS0tCiBzcmNwa2dzL3BvcnRhdWRpby9w YXRjaGVzL3NuZGlvLnBhdGNoICAgICAgICAgfCA4ODMgLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmNw a2dzL3BvcnRhdWRpby90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KIDQgZmls ZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxMjM0IGRlbGV0aW9ucygtKQogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcG9ydGF1ZGlvL3BhdGNoZXMvYXVkYWNpdHktY29tcGF0LnBhdGNo CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9wb3J0YXVkaW8vcGF0Y2hlcy9zbmRpby5wYXRj aAoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IGE1ODRm YjQ2MGUyMS4uMWY3NmM1NzRlMjEwIDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2Nv bW1vbi9zaGxpYnMKQEAgLTE3MjEsOCArMTcyMSw4IEBAIGxpYnhtbHNlYzEtZ2NyeXB0LnNvLjEg eG1sc2VjMS0xLjIuMzFfMgogbGlieG1sc2VjMS1nbnV0bHMuc28uMSB4bWxzZWMxLTEuMi4zMV8y CiBsaWJlZml2YXIuc28uMSBsaWJlZml2YXItMzFfMQogbGliZWZpYm9vdC5zby4xIGxpYmVmaXZh ci0zMV8xCi1saWJwb3J0YXVkaW8uc28uMiBwb3J0YXVkaW8tMTkuMjAxNDAxMzBfMQotbGlicG9y dGF1ZGlvY3BwLnNvLjAgcG9ydGF1ZGlvLWNwcC0xOS4yMDE0MDEzMF8xCitsaWJwb3J0YXVkaW8u c28uMiBwb3J0YXVkaW8tMTkuNy4wXzEKK2xpYnBvcnRhdWRpb2NwcC5zby4wIHBvcnRhdWRpby1j cHAtMTkuNy4wXzEKIGxpYmRhci5zby42MDAwIGxpYmRhci0yLjYuNl8xCiBsaWJkYXI2NC5zby42 MDAwIGxpYmRhci0yLjYuNl8xCiBsaWJweXRob24zLnNvIHB5dGhvbjMtMy45LjJfMgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9wb3J0YXVkaW8vcGF0Y2hlcy9hdWRhY2l0eS1jb21wYXQucGF0Y2ggYi9z cmNwa2dzL3BvcnRhdWRpby9wYXRjaGVzL2F1ZGFjaXR5LWNvbXBhdC5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggZWYzYjdhNDgyNDE5Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3Jj cGtncy9wb3J0YXVkaW8vcGF0Y2hlcy9hdWRhY2l0eS1jb21wYXQucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwzNDQgKzAsMCBAQAotU291cmNlOiBodHRwczovL2dpdC5zYXZhbm5haC5nbnUub3Jn L2NnaXQvZ3VpeC5naXQvdHJlZS9nbnUvcGFja2FnZXMvcGF0Y2hlcy9wb3J0YXVkaW8tYXVkYWNp dHktY29tcGF0LnBhdGNoCi1VcHN0cmVhbTogTm8KLVJlYXNvbjogQXVkYWNpdHkgbmVlZHMgUGFf R2V0U3RyZWFtSG9zdEFwaVR5cGUgdG8gdXNlIHN5c3RlbSB3aWRlIHBvcnRhdWRpbwotCi0KLWRp ZmYgLS1naXQgY29uZmlndXJlLmluIGNvbmZpZ3VyZS5pbgotaW5kZXggMTM4MTZmYi4uODNjMjM5 YSAxMDA2NDQKLS0tLSBjb25maWd1cmUuaW4KLSsrKyBjb25maWd1cmUuaW4KLUBAIC00MjAsNiAr NDIwLDcgQEAgY2FzZSAiJHtob3N0X29zfSIgaW4KLSAgICAgICAgICAgICAgICAgICAgRExMX0xJ QlM9IiRETExfTElCUyAtbG9zc2F1ZGlvIgotICAgICAgICAgICAgICAgICAgICBMSUJTPSIkTElC UyAtbG9zc2F1ZGlvIgotICAgICAgICAgICAgZmkKLSsgICAgICAgICAgIElOQ0xVREVTPSIkSU5D TFVERVMgcGFfdW5peF9vc3MuaCIKLSAgICAgICAgICAgIEFDX0RFRklORShQQV9VU0VfT1NTLDEp Ci0gICAgICAgICBmaQotIAotZGlmZiAtLWdpdCBpbmNsdWRlL3BhX3VuaXhfb3NzLmggaW5jbHVk ZS9wYV91bml4X29zcy5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjRl MDRjYgotLS0tIC9kZXYvbnVsbAotKysrIGluY2x1ZGUvcGFfdW5peF9vc3MuaAotQEAgLTAsMCAr MSwxMDQgQEAKLSsjaWZuZGVmIFBBX1VOSVhfT1NTX0gKLSsjZGVmaW5lIFBBX1VOSVhfT1NTX0gK LSsKLSsvKgotKyAqICRJZDogcG9ydGF1ZGlvLnBhdGNoLHYgMS4xMCAyMDA5LTA2LTMwIDA0OjUy OjU5IGxsdWNpdXMgRXhwICQKLSsgKiBQb3J0QXVkaW8gUG9ydGFibGUgUmVhbC1UaW1lIEF1ZGlv IExpYnJhcnkKLSsgKiBPU1Mtc3BlY2lmaWMgZXh0ZW5zaW9ucwotKyAqCi0rICogQ29weXJpZ2h0 IChjKSAxOTk5LTIwMDAgUm9zcyBCZW5jaW5hIGFuZCBQaGlsIEJ1cmsKLSsgKgotKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZwotKyAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMKLSsgKiAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLAotKyAqIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsCi0rICogcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwKLSsgKiBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLAotKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z OgotKyAqCi0rICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv biBub3RpY2Ugc2hhbGwgYmUKLSsgKiBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSsgKgotKyAqIEFueSBwZXJzb24gd2lzaGlu ZyB0byBkaXN0cmlidXRlIG1vZGlmaWNhdGlvbnMgdG8gdGhlIFNvZnR3YXJlIGlzCi0rICogcmVx dWVzdGVkIHRvIHNlbmQgdGhlIG1vZGlmaWNhdGlvbnMgdG8gdGhlIG9yaWdpbmFsIGRldmVsb3Bl ciBzbyB0aGF0Ci0rICogdGhleSBjYW4gYmUgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGNhbm9uaWNh bCB2ZXJzaW9uLgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0rICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0rICogTUVSQ0hBTlRB QklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULgotKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IKLSsgKiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRgotKyAqIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgotKyAqIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgot KyAqCi0rICovCi0rCi0rLyoqIEBmaWxlCi0rICogT1NTLXNwZWNpZmljIFBvcnRBdWRpbyBBUEkg ZXh0ZW5zaW9uIGhlYWRlciBmaWxlLgotKyAqLwotKwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4 dGVybiAiQyIgewotKyNlbmRpZgotKwotK2NvbnN0IGNoYXIgKlBhT1NTX0dldFN0cmVhbUlucHV0 RGV2aWNlKCBQYVN0cmVhbSAqcyApOwotKwotK2NvbnN0IGNoYXIgKlBhT1NTX0dldFN0cmVhbU91 dHB1dERldmljZSggUGFTdHJlYW0gKnMgKTsKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0r I2VuZGlmCi0rCi0rI2VuZGlmCi0rI2lmbmRlZiBQQV9VTklYX09TU19ICi0rI2RlZmluZSBQQV9V TklYX09TU19ICi0rCi0rLyoKLSsgKiAkSWQ6IHBvcnRhdWRpby5wYXRjaCx2IDEuMTAgMjAwOS0w Ni0zMCAwNDo1Mjo1OSBsbHVjaXVzIEV4cCAkCi0rICogUG9ydEF1ZGlvIFBvcnRhYmxlIFJlYWwt VGltZSBBdWRpbyBMaWJyYXJ5Ci0rICogT1NTLXNwZWNpZmljIGV4dGVuc2lvbnMKLSsgKgotKyAq IENvcHlyaWdodCAoYykgMTk5OS0yMDAwIFJvc3MgQmVuY2luYSBhbmQgUGhpbCBCdXJrCi0rICoK LSsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbiBvYnRhaW5pbmcKLSsgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzCi0rICogKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwKLSsgKiBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLAotKyAq IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsCi0rICogYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywKLSsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKLSsgKgotKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCi0rICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rICoKLSsgKiBBbnkgcGVy c29uIHdpc2hpbmcgdG8gZGlzdHJpYnV0ZSBtb2RpZmljYXRpb25zIHRvIHRoZSBTb2Z0d2FyZSBp cwotKyAqIHJlcXVlc3RlZCB0byBzZW5kIHRoZSBtb2RpZmljYXRpb25zIHRvIHRoZSBvcmlnaW5h bCBkZXZlbG9wZXIgc28gdGhhdAotKyAqIHRoZXkgY2FuIGJlIGluY29ycG9yYXRlZCBpbnRvIHRo ZSBjYW5vbmljYWwgdmVyc2lvbi4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotKyAqIEVYUFJFU1MgT1IgSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotKyAq IE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4KLSsgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZ UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SCi0rICogQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U SEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YKLSsgKiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLSsg KiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KLSsgKgotKyAqLwotKwotKy8qKiBAZmlsZQotKyAqIE9TUy1zcGVjaWZpYyBQb3J0 QXVkaW8gQVBJIGV4dGVuc2lvbiBoZWFkZXIgZmlsZS4KLSsgKi8KLSsKLSsjaWZkZWYgX19jcGx1 c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSsKLStjb25zdCBjaGFyICpQYU9TU19HZXRT dHJlYW1JbnB1dERldmljZSggUGFTdHJlYW0gKnMgKTsKLSsKLStjb25zdCBjaGFyICpQYU9TU19H ZXRTdHJlYW1PdXRwdXREZXZpY2UoIFBhU3RyZWFtICpzICk7Ci0rCi0rI2lmZGVmIF9fY3BsdXNw bHVzCi0rfQotKyNlbmRpZgotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBpbmNsdWRlL3BhX3dpbl9k cy5oIGluY2x1ZGUvcGFfd2luX2RzLmgKLWluZGV4IDVkMzg2NDEuLmJhMWMyNDUgMTAwNjQ0Ci0t LS0gaW5jbHVkZS9wYV93aW5fZHMuaAotKysrIGluY2x1ZGUvcGFfd2luX2RzLmgKLUBAIC04Niw2 ICs4NiwyMSBAQCB0eXBlZGVmIHN0cnVjdCBQYVdpbkRpcmVjdFNvdW5kU3RyZWFtSW5mb3sKLSAK LSB9UGFXaW5EaXJlY3RTb3VuZFN0cmVhbUluZm87Ci0gCi0rLyoqIFJldHJpZXZlIHRoZSBHVUlE IG9mIHRoZSBpbnB1dCBkZXZpY2UuCi0rCi0rIEBwYXJhbSBzdHJlYW0gVGhlIHN0cmVhbSB0byBx dWVyeS4KLSsKLSsgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIEdVSUQsIG9yIE5VTEwgaWYgbm9u ZS4KLSsqLwotK0xQR1VJRCBQYVdpbkRTX0dldFN0cmVhbUlucHV0R1VJRCggUGFTdHJlYW0qIHMg KTsKLSsKLSsvKiogUmV0cmlldmUgdGhlIEdVSUQgb2YgdGhlIG91dHB1dCBkZXZpY2UuCi0rCi0r IEBwYXJhbSBzdHJlYW0gVGhlIHN0cmVhbSB0byBxdWVyeS4KLSsKLSsgQHJldHVybiBBIHBvaW50 ZXIgdG8gdGhlIEdVSUQsIG9yIE5VTEwgaWYgbm9uZS4KLSsqLwotK0xQR1VJRCBQYVdpbkRTX0dl dFN0cmVhbU91dHB1dEdVSUQoIFBhU3RyZWFtKiBzICk7Ci0gCi0gCi0gI2lmZGVmIF9fY3BsdXNw bHVzCi1kaWZmIC0tZ2l0IGluY2x1ZGUvcG9ydGF1ZGlvLmggaW5jbHVkZS9wb3J0YXVkaW8uaAot aW5kZXggOGE5NGFhZi4uOWM4YTI5NSAxMDA2NDQKLS0tLSBpbmNsdWRlL3BvcnRhdWRpby5oCi0r KysgaW5jbHVkZS9wb3J0YXVkaW8uaAotQEAgLTExOTcsNiArMTE5NywxNSBAQCBzaWduZWQgbG9u ZyBQYV9HZXRTdHJlYW1SZWFkQXZhaWxhYmxlKCBQYVN0cmVhbSogc3RyZWFtICk7Ci0gc2lnbmVk IGxvbmcgUGFfR2V0U3RyZWFtV3JpdGVBdmFpbGFibGUoIFBhU3RyZWFtKiBzdHJlYW0gKTsKLSAK LSAKLSsvKiogUmV0cmlldmUgdGhlIGhvc3QgdHlwZSBoYW5kbGluZyBhbiBvcGVuIHN0cmVhbS4K LSsKLSsgQHJldHVybiBSZXR1cm5zIGEgbm9uLW5lZ2F0aXZlIHZhbHVlIHJlcHJlc2VudGluZyB0 aGUgaG9zdCBBUEkgdHlwZQotKyBoYW5kbGluZyBhbiBvcGVuIHN0cmVhbSBvciwgYSBQYUVycm9y Q29kZSAod2hpY2ggYXJlIGFsd2F5cyBuZWdhdGl2ZSkKLSsgaWYgUG9ydEF1ZGlvIGlzIG5vdCBp bml0aWFsaXplZCBvciBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZC4KLSsqLwotK1BhSG9zdEFwaVR5 cGVJZCBQYV9HZXRTdHJlYW1Ib3N0QXBpVHlwZSggUGFTdHJlYW0qIHN0cmVhbSApOwotKwotKwot IC8qIE1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzICovCi0gCi0gCi1kaWZmIC0tZ2l0IHNyYy9jb21t b24vcGFfZnJvbnQuYyBzcmMvY29tbW9uL3BhX2Zyb250LmMKLWluZGV4IDE4OGNlZTkuLjUyZjQ0 YTYgMTAwNjQ0Ci0tLS0gc3JjL2NvbW1vbi9wYV9mcm9udC5jCi0rKysgc3JjL2NvbW1vbi9wYV9m cm9udC5jCi1AQCAtMTI1Nyw4ICsxMjU3LDEwIEBAIFBhRXJyb3IgUGFfT3BlblN0cmVhbSggUGFT dHJlYW0qKiBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RB cGlJbnB1dFBhcmFtZXRlcnNQdHIsIGhvc3RBcGlPdXRwdXRQYXJhbWV0ZXJzUHRyLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLCBmcmFtZXNQZXJCdWZmZXIs IHN0cmVhbUZsYWdzLCBzdHJlYW1DYWxsYmFjaywgdXNlckRhdGEgKTsKLSAKLS0gICAgaWYoIHJl c3VsdCA9PSBwYU5vRXJyb3IgKQotKyAgICBpZiggcmVzdWx0ID09IHBhTm9FcnJvciApIHsKLSAg ICAgICAgIEFkZE9wZW5TdHJlYW0oICpzdHJlYW0gKTsKLSsgICAgICAgIFBBX1NUUkVBTV9SRVAo KnN0cmVhbSktPmhvc3RBcGlUeXBlID0gaG9zdEFwaS0+aW5mby50eXBlOwotKyAgICB9Ci0gCi0g Ci0gICAgIFBBX0xPR0FQSSgoIlBhX09wZW5TdHJlYW0gcmV0dXJuZWQ6XG4iICkpOwotQEAgLTE3 NzAsNiArMTc3MiwzMiBAQCBzaWduZWQgbG9uZyBQYV9HZXRTdHJlYW1Xcml0ZUF2YWlsYWJsZSgg UGFTdHJlYW0qIHN0cmVhbSApCi0gICAgIHJldHVybiByZXN1bHQ7Ci0gfQotIAotK1BhSG9zdEFw aVR5cGVJZCBQYV9HZXRTdHJlYW1Ib3N0QXBpVHlwZSggUGFTdHJlYW0qIHN0cmVhbSApCi0rewot KyAgICBQYUVycm9yIGVycm9yID0gUGFVdGlsX1ZhbGlkYXRlU3RyZWFtUG9pbnRlciggc3RyZWFt ICk7Ci0rICAgIFBhSG9zdEFwaVR5cGVJZCByZXN1bHQ7Ci0rCi0rI2lmZGVmIFBBX0xPR19BUElf Q0FMTFMKLSsgICAgUGFVdGlsX0RlYnVnUHJpbnQoIlBhX0dldFN0cmVhbUhvc3RBcGlUeXBlIGNh bGxlZDpcbiIgKTsKLSsgICAgUGFVdGlsX0RlYnVnUHJpbnQoIlx0UGFTdHJlYW0qIHN0cmVhbTog MHglcFxuIiwgc3RyZWFtICk7Ci0rI2VuZGlmCi0rCi0rICAgIGlmKCBlcnJvciA9PSBwYU5vRXJy b3IgKQotKyAgICB7Ci0rICAgICAgICByZXN1bHQgPSBQQV9TVFJFQU1fUkVQKHN0cmVhbSktPmhv c3RBcGlUeXBlOwotKyAgICB9Ci0rICAgIGVsc2UKLSsgICAgewotKyAgICAgICAgcmVzdWx0ID0g KFBhSG9zdEFwaVR5cGVJZCkgZXJyb3I7Ci0rICAgIH0KLSsKLSsjaWZkZWYgUEFfTE9HX0FQSV9D QUxMUwotKyAgICBQYVV0aWxfRGVidWdQcmludCgiUGFfR2V0U3RyZWFtSG9zdEFwaVR5cGUgcmV0 dXJuZWQ6XG4iICk7Ci0rICAgIFBhVXRpbF9EZWJ1Z1ByaW50KCJcdFBhRXJyb3I6ICVkICggJXMg KVxuXG4iLCByZXN1bHQsIFBhX0dldEVycm9yVGV4dCggcmVzdWx0ICkgKTsKLSsjZW5kaWYKLSsK LSsgICAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0gCi0gUGFFcnJvciBQYV9HZXRTYW1wbGVTaXplKCBQ YVNhbXBsZUZvcm1hdCBmb3JtYXQgKQotIHsKLWRpZmYgLS1naXQgc3JjL2NvbW1vbi9wYV9zdHJl YW0uYyBzcmMvY29tbW9uL3BhX3N0cmVhbS5jCi1pbmRleCAwM2EwZWU2Li5jNDM3NmY5IDEwMDY0 NAotLS0tIHNyYy9jb21tb24vcGFfc3RyZWFtLmMKLSsrKyBzcmMvY29tbW9uL3BhX3N0cmVhbS5j Ci1AQCAtOTMsNiArOTMsOCBAQCB2b2lkIFBhVXRpbF9Jbml0aWFsaXplU3RyZWFtUmVwcmVzZW50 YXRpb24oIFBhVXRpbFN0cmVhbVJlcHJlc2VudGF0aW9uICpzdHJlYW1SZQotICAgICBzdHJlYW1S ZXByZXNlbnRhdGlvbi0+c3RyZWFtSW5mby5pbnB1dExhdGVuY3kgPSAwLjsKLSAgICAgc3RyZWFt UmVwcmVzZW50YXRpb24tPnN0cmVhbUluZm8ub3V0cHV0TGF0ZW5jeSA9IDAuOwotICAgICBzdHJl YW1SZXByZXNlbnRhdGlvbi0+c3RyZWFtSW5mby5zYW1wbGVSYXRlID0gMC47Ci0rCi0rICAgIHN0 cmVhbVJlcHJlc2VudGF0aW9uLT5ob3N0QXBpVHlwZSA9IDA7Ci0gfQotIAotIAotZGlmZiAtLWdp dCBzcmMvY29tbW9uL3BhX3N0cmVhbS5oIHNyYy9jb21tb24vcGFfc3RyZWFtLmgKLWluZGV4IDY3 OGUyYWQuLjcwNTcyYzcgMTAwNjQ0Ci0tLS0gc3JjL2NvbW1vbi9wYV9zdHJlYW0uaAotKysrIHNy Yy9jb21tb24vcGFfc3RyZWFtLmgKLUBAIC0xNTIsNiArMTUyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UGFVdGlsU3RyZWFtUmVwcmVzZW50YXRpb24gewotICAgICBQYVN0cmVhbUZpbmlzaGVkQ2FsbGJh Y2sgKnN0cmVhbUZpbmlzaGVkQ2FsbGJhY2s7Ci0gICAgIHZvaWQgKnVzZXJEYXRhOwotICAgICBQ YVN0cmVhbUluZm8gc3RyZWFtSW5mbzsKLSsgICAgUGFIb3N0QXBpVHlwZUlkIGhvc3RBcGlUeXBl OwotIH0gUGFVdGlsU3RyZWFtUmVwcmVzZW50YXRpb247Ci0gCi0gCi1kaWZmIC0tZ2l0IHNyYy9o b3N0YXBpL2Fsc2EvcGFfbGludXhfYWxzYS5jIHNyYy9ob3N0YXBpL2Fsc2EvcGFfbGludXhfYWxz YS5jCi1pbmRleCA1ODRjZGU4Li41NThmYjNkIDEwMDY0NAotLS0tIHNyYy9ob3N0YXBpL2Fsc2Ev cGFfbGludXhfYWxzYS5jCi0rKysgc3JjL2hvc3RhcGkvYWxzYS9wYV9saW51eF9hbHNhLmMKLUBA IC02MjEsNiArNjIxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKLSAgICAgU3RyZWFtRGlyZWN0aW9uIHN0 cmVhbURpcjsKLSAKLSAgICAgc25kX3BjbV9jaGFubmVsX2FyZWFfdCAqY2hhbm5lbEFyZWFzOyAg LyogTmVlZGVkIGZvciBjaGFubmVsIGFkYXB0aW9uICovCi0rICAgIGludCBjYXJkOwotIH0gUGFB bHNhU3RyZWFtQ29tcG9uZW50OwotIAotIC8qIEltcGxlbWVudGF0aW9uIHNwZWNpZmljIHN0cmVh bSBzdHJ1Y3R1cmUgKi8KLUBAIC0xODczLDYgKzE4NzQsNyBAQCBzdGF0aWMgUGFFcnJvciBQYUFs c2FTdHJlYW1Db21wb25lbnRfSW5pdGlhbGl6ZSggUGFBbHNhU3RyZWFtQ29tcG9uZW50ICpzZWxm LCBQYQotIHsKLSAgICAgUGFFcnJvciByZXN1bHQgPSBwYU5vRXJyb3I7Ci0gICAgIFBhU2FtcGxl Rm9ybWF0IHVzZXJTYW1wbGVGb3JtYXQgPSBwYXJhbXMtPnNhbXBsZUZvcm1hdCwgaG9zdFNhbXBs ZUZvcm1hdCA9IHBhTm9FcnJvcjsKLSsgICAgc25kX3BjbV9pbmZvX3QqIHBjbUluZm87Ci0gICAg IGFzc2VydCggcGFyYW1zLT5jaGFubmVsQ291bnQgPiAwICk7Ci0gCi0gICAgIC8qIE1ha2Ugc3Vy ZSB0aGluZ3MgaGF2ZSBhbiBpbml0aWFsIHZhbHVlICovCi1AQCAtMTkwMCw2ICsxOTAyLDkgQEAg c3RhdGljIFBhRXJyb3IgUGFBbHNhU3RyZWFtQ29tcG9uZW50X0luaXRpYWxpemUoIFBhQWxzYVN0 cmVhbUNvbXBvbmVudCAqc2VsZiwgUGEKLSAgICAgc2VsZi0+ZGV2aWNlID0gcGFyYW1zLT5kZXZp Y2U7Ci0gCi0gICAgIFBBX0VOU1VSRSggQWxzYU9wZW4oICZhbHNhQXBpLT5iYXNlSG9zdEFwaVJl cCwgcGFyYW1zLCBzdHJlYW1EaXIsICZzZWxmLT5wY20gKSApOwotKwotKyAgICBzbmRfcGNtX2lu Zm9fYWxsb2NhKCAmcGNtSW5mbyApOwotKyAgICBzZWxmLT5jYXJkID0gc25kX3BjbV9pbmZvX2dl dF9jYXJkKCBwY21JbmZvICk7Ci0gICAgIHNlbGYtPm5mZHMgPSBhbHNhX3NuZF9wY21fcG9sbF9k ZXNjcmlwdG9yc19jb3VudCggc2VsZi0+cGNtICk7Ci0gCi0gICAgIFBBX0VOU1VSRSggaG9zdFNh bXBsZUZvcm1hdCA9IFBhVXRpbF9TZWxlY3RDbG9zZXN0QXZhaWxhYmxlRm9ybWF0KCBHZXRBdmFp bGFibGVGb3JtYXRzKCBzZWxmLT5wY20gKSwgdXNlclNhbXBsZUZvcm1hdCApICk7Ci1AQCAtNDYw NSw5ICs0NjEwLDcgQEAgUGFFcnJvciBQYUFsc2FfR2V0U3RyZWFtSW5wdXRDYXJkKCBQYVN0cmVh bSogcywgaW50KiBjYXJkICkKLSAgICAgLyogWFhYOiBNb3JlIGRlc2NyaXB0aXZlIGVycm9yPyAq LwotICAgICBQQV9VTkxFU1MoIHN0cmVhbS0+Y2FwdHVyZS5wY20sIHBhRGV2aWNlVW5hdmFpbGFi bGUgKTsKLSAKLS0gICAgYWxzYV9zbmRfcGNtX2luZm9fYWxsb2NhKCAmcGNtSW5mbyApOwotLSAg ICBQQV9FTlNVUkUoIGFsc2Ffc25kX3BjbV9pbmZvKCBzdHJlYW0tPmNhcHR1cmUucGNtLCBwY21J bmZvICkgKTsKLS0gICAgKmNhcmQgPSBhbHNhX3NuZF9wY21faW5mb19nZXRfY2FyZCggcGNtSW5m byApOwotKyAgICAqY2FyZCA9IHN0cmVhbS0+Y2FwdHVyZS5jYXJkOwotIAotIGVycm9yOgotICAg ICByZXR1cm4gcmVzdWx0OwotQEAgLTQ2MjQsOSArNDYyNyw3IEBAIFBhRXJyb3IgUGFBbHNhX0dl dFN0cmVhbU91dHB1dENhcmQoIFBhU3RyZWFtKiBzLCBpbnQqIGNhcmQgKQotICAgICAvKiBYWFg6 IE1vcmUgZGVzY3JpcHRpdmUgZXJyb3I/ICovCi0gICAgIFBBX1VOTEVTUyggc3RyZWFtLT5wbGF5 YmFjay5wY20sIHBhRGV2aWNlVW5hdmFpbGFibGUgKTsKLSAKLS0gICAgYWxzYV9zbmRfcGNtX2lu Zm9fYWxsb2NhKCAmcGNtSW5mbyApOwotLSAgICBQQV9FTlNVUkUoIGFsc2Ffc25kX3BjbV9pbmZv KCBzdHJlYW0tPnBsYXliYWNrLnBjbSwgcGNtSW5mbyApICk7Ci0tICAgICpjYXJkID0gYWxzYV9z bmRfcGNtX2luZm9fZ2V0X2NhcmQoIHBjbUluZm8gKTsKLSsgICAgKmNhcmQgPSBzdHJlYW0tPnBs YXliYWNrLmNhcmQ7Ci0gCi0gZXJyb3I6Ci0gICAgIHJldHVybiByZXN1bHQ7Ci1kaWZmIC0tZ2l0 IHNyYy9ob3N0YXBpL2NvcmVhdWRpby9wYV9tYWNfY29yZV9ibG9ja2luZy5jIHNyYy9ob3N0YXBp L2NvcmVhdWRpby9wYV9tYWNfY29yZV9ibG9ja2luZy5jCi1pbmRleCA2NzljNmJhLi5hNjllMDg1 IDEwMDY0NAotLS0tIHNyYy9ob3N0YXBpL2NvcmVhdWRpby9wYV9tYWNfY29yZV9ibG9ja2luZy5j Ci0rKysgc3JjL2hvc3RhcGkvY29yZWF1ZGlvL3BhX21hY19jb3JlX2Jsb2NraW5nLmMKLUBAIC02 Niw2ICs2Niw5IEBACi0gI2lmZGVmIE1PU1hfVVNFX05PTl9BVE9NSUNfRkxBR19CSVRTCi0gIyBk ZWZpbmUgT1NBdG9taWNPcjMyKCBhLCBiICkgKCAoKihiKSkgfD0gKGEpICkKLSAjIGRlZmluZSBP U0F0b21pY0FuZDMyKCBhLCBiICkgKCAoKihiKSkgJj0gKGEpICkKLSsjZWxpZiBNQUNfT1NfWF9W RVJTSU9OX01BWF9BTExPV0VEIDw9IE1BQ19PU19YX1ZFUlNJT05fMTBfMwotKyMgZGVmaW5lIE9T QXRvbWljT3IzMiggYSwgYiApIEJpdE9yQXRvbWljKCBhLCAoVUludDMyICopIGIgKQotKyMgZGVm aW5lIE9TQXRvbWljQW5kMzIoIGEsIGIgKSBCaXRBbmRBdG9taWMoIGEsIChVSW50MzIgKikgYiAp Ci0gI2Vsc2UKLSAjIGluY2x1ZGUgPGxpYmtlcm4vT1NBdG9taWMuaD4KLSAjZW5kaWYKLWRpZmYg LS1naXQgc3JjL2hvc3RhcGkvb3NzL3BhX3VuaXhfb3NzLmMgc3JjL2hvc3RhcGkvb3NzL3BhX3Vu aXhfb3NzLmMKLWluZGV4IDUxZTk2MzAuLmYyNTdkODAgMTAwNjQ0Ci0tLS0gc3JjL2hvc3RhcGkv b3NzL3BhX3VuaXhfb3NzLmMKLSsrKyBzcmMvaG9zdGFwaS9vc3MvcGFfdW5peF9vc3MuYwotQEAg LTIwNDMsMyArMjA0MywyNiBAQCBlcnJvcjoKLSAjZW5kaWYKLSB9Ci0gCi0rY29uc3QgY2hhciAq UGFPU1NfR2V0U3RyZWFtSW5wdXREZXZpY2UoIFBhU3RyZWFtKiBzICkKLSt7Ci0rICAgIFBhT3Nz U3RyZWFtICpzdHJlYW0gPSAoUGFPc3NTdHJlYW0qKXM7Ci0rCi0rICAgIGlmKCBzdHJlYW0tPmNh cHR1cmUgKQotKyAgICB7Ci0rICAgICAgcmV0dXJuIHN0cmVhbS0+Y2FwdHVyZS0+ZGV2TmFtZTsK LSsgICAgfQotKwotKyAgIHJldHVybiBOVUxMOwotK30KLSsKLStjb25zdCBjaGFyICpQYU9TU19H ZXRTdHJlYW1PdXRwdXREZXZpY2UoIFBhU3RyZWFtKiBzICkKLSt7Ci0rICAgIFBhT3NzU3RyZWFt ICpzdHJlYW0gPSAoUGFPc3NTdHJlYW0qKXM7Ci0rCi0rICAgIGlmKCBzdHJlYW0tPnBsYXliYWNr ICkKLSsgICAgewotKyAgICAgIHJldHVybiBzdHJlYW0tPnBsYXliYWNrLT5kZXZOYW1lOwotKyAg ICB9Ci0rCi0rICAgcmV0dXJuIE5VTEw7Ci0rfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wb3J0YXVk aW8vcGF0Y2hlcy9zbmRpby5wYXRjaCBiL3NyY3BrZ3MvcG9ydGF1ZGlvL3BhdGNoZXMvc25kaW8u cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNDNlM2ZjZWRkMy4uMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvcG9ydGF1ZGlvL3BhdGNoZXMvc25kaW8ucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw4ODMgKzAsMCBAQAotZGlmZiAtLWdpdCBNYWtlZmlsZS5pbiBNYWtlZmls ZS5pbgotaW5kZXggNWUxYTc2NC4uMjc0N2Y3MyAxMDA2NDQKLS0tLSBNYWtlZmlsZS5pbgotKysr IE1ha2VmaWxlLmluCi1AQCAtNDQsNyArNDQsNyBAQCBQQUxJQiA9IGxpYnBvcnRhdWRpby5sYQot IFBBSU5DID0gaW5jbHVkZS9wb3J0YXVkaW8uaAotIAotIFBBX0xERkxBR1MgPSAkKExERkxBR1Mp ICQoU0hBUkVEX0ZMQUdTKSAtcnBhdGggJChsaWJkaXIpIC1uby11bmRlZmluZWQgXAotLQkgICAg IC1leHBvcnQtc3ltYm9scy1yZWdleCAiKFBhfFBhTWFjQ29yZXxQYUphY2t8UGFBbHNhfFBhQXNp b3xQYU9TUylfLioiIFwKLSsJICAgICAtZXhwb3J0LXN5bWJvbHMtcmVnZXggIihQYXxQYU1hY0Nv cmV8UGFKYWNrfFBhQWxzYXxQYUFzaW98UGFPU1N8UGFTbmRpbylfLioiIFwKLSAJICAgICAtdmVy c2lvbi1pbmZvICQoTFRfQ1VSUkVOVCk6JChMVF9SRVZJU0lPTik6JChMVF9BR0UpCi0gCi0gQ09N TU9OX09CSlMgPSBcCi1AQCAtMTQ2LDYgKzE0Niw3IEBAIFNSQ19ESVJTID0gXAotIAlzcmMvaG9z dGFwaS9kc291bmQgXAotIAlzcmMvaG9zdGFwaS9qYWNrIFwKLSAJc3JjL2hvc3RhcGkvb3NzIFwK LSsJc3JjL2hvc3RhcGkvc25kaW8gXAotIAlzcmMvaG9zdGFwaS93YXNhcGkgXAotIAlzcmMvaG9z dGFwaS93ZG1rcyBcCi0gCXNyYy9ob3N0YXBpL3dtbWUgXAotZGlmZiAtLWdpdCBjb25maWd1cmUu aW4gY29uZmlndXJlLmluCi1pbmRleCA4M2MyMzlhLi5kYjExZDY1IDEwMDY0NAotLS0tIGNvbmZp Z3VyZS5pbgotKysrIGNvbmZpZ3VyZS5pbgotQEAgLTI0LDYgKzI0LDEwIEBAIEFDX0FSR19XSVRI KGFsc2EsCi0gICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hbHNhXSwgW0VuYWJs ZSBzdXBwb3J0IGZvciBBTFNBIEA8OkBhdXRvZGV0ZWN0QDo+QF0pLAotICAgICAgICAgICAgIFt3 aXRoX2Fsc2E9JHdpdGh2YWxdKQotIAotK0FDX0FSR19XSVRIKHNuZGlvLAotKyAgICAgICAgICAg IEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc25kaW9dLCBbRW5hYmxlIHN1cHBvcnQgZm9yIHNuZGlv IEA8OkBhdXRvZGV0ZWN0QDo+QF0pLAotKyAgICAgICAgICAgIFt3aXRoX3NuZGlvPSR3aXRodmFs XSkKLSsKLSBBQ19BUkdfV0lUSChqYWNrLAotICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFst LXdpdGgtamFja10sIFtFbmFibGUgc3VwcG9ydCBmb3IgSkFDSyBAPDpAYXV0b2RldGVjdEA6PkBd KSwKLSAgICAgICAgICAgICBbd2l0aF9qYWNrPSR3aXRodmFsXSkKLUBAIC0xMjAsNiArMTI0LDEw IEBAIGhhdmVfYWxzYT1ubwotIGlmIHRlc3QgIngkd2l0aF9hbHNhIiAhPSAieG5vIjsgdGhlbgot ICAgICBBQ19DSEVDS19MSUIoYXNvdW5kLCBzbmRfcGNtX29wZW4sIGhhdmVfYWxzYT15ZXMsIGhh dmVfYWxzYT1ubykKLSBmaQotK2hhdmVfc25kaW89bm8KLStpZiB0ZXN0ICJ4JHdpdGhfc25kaW8i ICE9ICJ4bm8iOyB0aGVuCi0rICAgIEFDX0NIRUNLX0xJQihzbmRpbywgc2lvX29wZW4sIGhhdmVf c25kaW89eWVzLCBoYXZlX3NuZGlvPW5vKQotK2ZpCi0gaGF2ZV9hc2locGk9bm8KLSBpZiB0ZXN0 ICJ4JHdpdGhfYXNpaHBpIiAhPSAieG5vIjsgdGhlbgotICAgICBBQ19DSEVDS19MSUIoaHBpLCBI UElfU3ViU3lzQ3JlYXRlLCBoYXZlX2FzaWhwaT15ZXMsIGhhdmVfYXNpaHBpPW5vLCAtbG0pCi1A QCAtNDA2LDYgKzQxNCwxMyBAQCBjYXNlICIke2hvc3Rfb3N9IiBpbgotICAgICAgICAgICAgQUNf REVGSU5FKFBBX1VTRV9BTFNBLDEpCi0gICAgICAgICBmaQotIAotKyAgICAgICAgaWYgW1sgIiRo YXZlX3NuZGlvIiA9ICJ5ZXMiIC1hICIkd2l0aF9zbmRpbyIgIT0gIm5vIiBdXSA7IHRoZW4KLSsg ICAgICAgICAgICBETExfTElCUz0iJERMTF9MSUJTIC1sc25kaW8iCi0rICAgICAgICAgICAgTElC Uz0iJExJQlMgLWxzbmRpbyIKLSsgICAgICAgICAgICBPVEhFUl9PQkpTPSIkT1RIRVJfT0JKUyBz cmMvaG9zdGFwaS9zbmRpby9wYV9zbmRpby5vIgotKyAgICAgICAgICAgIEFDX0RFRklORShQQV9V U0VfU05ESU8sMSkKLSsgICAgICAgIGZpCi0rCi0gICAgICAgICBpZiBbWyAiJGhhdmVfamFjayIg PSAieWVzIiBdICYmIFsgIiR3aXRoX2phY2siICE9ICJubyIgXV0gOyB0aGVuCi0gICAgICAgICAg ICBETExfTElCUz0iJERMTF9MSUJTICRKQUNLX0xJQlMiCi0gICAgICAgICAgICBDRkxBR1M9IiRD RkxBR1MgJEpBQ0tfQ0ZMQUdTIgotQEAgLTUxMCw2ICs1MjUsNyBAQCBjYXNlICIkdGFyZ2V0X29z IiBpbgotICAgICAgICAgOzsKLSAgICAgICopCi0gCUFDX01TR19SRVNVTFQoWwotKyAgU25kaW8g Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gJGhhdmVfc25kaW8KLSAgIE9TUyAuLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uICRoYXZlX29zcwotICAgSkFDSyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4g JGhhdmVfamFjawotIF0pCi1kaWZmIC0tZ2l0IGluY2x1ZGUvcG9ydGF1ZGlvLmggaW5jbHVkZS9w b3J0YXVkaW8uaAotaW5kZXggOWM4YTI5NS4uZTUzNWEwMiAxMDA2NDQKLS0tLSBpbmNsdWRlL3Bv cnRhdWRpby5oCi0rKysgaW5jbHVkZS9wb3J0YXVkaW8uaAotQEAgLTI4Nyw3ICsyODcsOCBAQCB0 eXBlZGVmIGVudW0gUGFIb3N0QXBpVHlwZUlkCi0gICAgIHBhV0RNS1M9MTEsCi0gICAgIHBhSkFD Sz0xMiwKLSAgICAgcGFXQVNBUEk9MTMsCi0tICAgIHBhQXVkaW9TY2llbmNlSFBJPTE0Ci0rICAg IHBhQXVkaW9TY2llbmNlSFBJPTE0LAotKyAgICBwYVNuZGlvPTE1Ci0gfSBQYUhvc3RBcGlUeXBl SWQ7Ci0gCi0gCi1kaWZmIC0tZ2l0IHNyYy9ob3N0YXBpL3NuZGlvL3BhX3NuZGlvLmMgc3JjL2hv c3RhcGkvc25kaW8vcGFfc25kaW8uYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLjcyNWVmNDcKLS0tLSAvZGV2L251bGwKLSsrKyBzcmMvaG9zdGFwaS9zbmRpby9wYV9zbmRp by5jCi1AQCAtMCwwICsxLDc2OCBAQAotKy8qCi0rICogQ29weXJpZ2h0IChjKSAyMDA5IEFsZXhh bmRyZSBSYXRjaG92IDxhbGV4QGNhb3VhLm9yZz4KLSsgKgotKyAqIFBlcm1pc3Npb24gdG8gdXNl LCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQotKyAq IHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQg dGhhdCB0aGUgYWJvdmUKLSsgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTCi0r ICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FS UkFOVElFUyBPRgotKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQg U0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SCi0rICogQU5ZIFNQRUNJQUwsIERJUkVDVCwg SU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUwotKyAqIFdI QVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hF VEhFUiBJTiBBTgotKyAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBU T1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GCi0rICogT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLSsgKi8KLSsjaW5jbHVk ZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSsjaW5jbHVkZSA8cG9sbC5o PgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8 c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHNuZGlvLmg+Ci0rCi0r I2luY2x1ZGUgInBhX3V0aWwuaCIKLSsjaW5jbHVkZSAicGFfaG9zdGFwaS5oIgotKyNpbmNsdWRl ICJwYV9zdHJlYW0uaCIKLSsjaW5jbHVkZSAicGFfcHJvY2Vzcy5oIgotKyNpbmNsdWRlICJwYV9h bGxvY2F0aW9uLmgiCi0rCi0rI2lmIDAKLSsjZGVmaW5lIERQUiguLi4pIGRvIHsgZnByaW50Zihz dGRlcnIsIF9fVkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKLSsjZWxzZQotKyNkZWZpbmUgRFBSKC4u LikgZG8ge30gd2hpbGUgKDApCi0rI2VuZGlmCi0rCi0rLyoKLSsgKiBwZXItc3RyZWFtIGRhdGEK LSsgKi8KLSt0eXBlZGVmIHN0cnVjdCBQYVNuZGlvU3RyZWFtCi0rewotKwlQYVV0aWxTdHJlYW1S ZXByZXNlbnRhdGlvbiBiYXNlOwotKwlQYVV0aWxCdWZmZXJQcm9jZXNzb3IgYnVmcHJvYzsJLyog Zm9ybWF0IGNvbnZlcnNpb24gKi8KLSsJc3RydWN0IHNpb19oZGwgKmhkbDsJCS8qIGhhbmRsZSBm b3IgZGV2aWNlIGkvbyAqLwotKwlzdHJ1Y3Qgc2lvX3BhciBwYXI7CQkvKiBjdXJyZW50IGRldmlj ZSBwYXJhbWV0ZXJzICovCQotKwl1bnNpZ25lZCBtb2RlOwkJCS8qIFNJT19QTEFZLCBTSU9fUkVD IG9yIGJvdGggKi8KLSsJaW50IHN0b3BwZWQ7CQkJLyogc3RvcCByZXF1ZXN0ZWQgb3Igbm90IHN0 YXJ0ZWQgKi8KLSsJaW50IGFjdGl2ZTsJCQkvKiB0aHJlYWQgaXMgcnVubmluZyAqLwotKwl1bnNp Z25lZCBsb25nIGxvbmcgcmVhbHBvczsJLyogZnJhbWUgbnVtYmVyIGgvdyBpcyBwcm9jZXNzaW5n ICovCi0rCWNoYXIgKnJidWYsICp3YnVmOwkJLyogYm91bmNlIGJ1ZmZlcnMgZm9yIGNvbnZlcnNp b25zICovCi0rCXVuc2lnbmVkIGxvbmcgbG9uZyBycG9zLCB3cG9zOwkvKiBieXRlcyByZWFkL3dy aXR0ZW4gKi8KLSsJcHRocmVhZF90IHRocmVhZDsJCS8qIHRocmVhZCBvZiB0aGUgY2FsbGJhY2sg aW50ZXJmYWNlICovCi0rfSBQYVNuZGlvU3RyZWFtOwotKwotKy8qCi0rICogYXBpICJjbGFzcyIg ZGF0YSwgY29tbW9uIHRvIGFsbCBzdHJlYW1zCi0rICovCi0rdHlwZWRlZiBzdHJ1Y3QgUGFTbmRp b0hvc3RBcGlSZXByZXNlbnRhdGlvbgotK3sKLSsJUGFVdGlsSG9zdEFwaVJlcHJlc2VudGF0aW9u IGJhc2U7Ci0rCVBhVXRpbFN0cmVhbUludGVyZmFjZSBjYWxsYmFjazsKLSsJUGFVdGlsU3RyZWFt SW50ZXJmYWNlIGJsb2NraW5nOwotKwkvKgotKwkgKiBzbmRpbyBoYXMgbm8gZGV2aWNlIGRpc2Nv dmVyeSBtZWNoYW5pc20gYW5kIFBvcnRBdWRpbyBoYXMKLSsJICogbm8gd2F5IG9mIGFjY2VwdGlu ZyByYXcgZGV2aWNlIHN0cmluZ3MgZnJvbSB1c2Vycy4KLSsJICogTm9ybWFsbHkgd2UganVzdCBl eHBvc2UgdGhlIGRlZmF1bHQgZGV2aWNlLCB3aGljaCBjYW4gYmUKLSsJICogY2hhbmdlZCB2aWEg dGhlIEFVRElPREVWSUNFIGVudmlyb25tZW50IHZhcmlhYmxlLCBidXQgd2UKLSsJICogYWxzbyBh bGxvdyBzcGVjaWZ5aW5nIGEgbGlzdCBvZiB1cCB0byAxNiBkZXZpY2VzIHZpYSB0aGUKLSsJICog UEFfU05ESU9fQVVESU9ERVZJQ0VTIGVudmlyb25tZW50IHZhcmlhYmxlLgotKwkgKgotKwkgKiBF eGFtcGxlOgotKwkgKiBQQV9TTkRJT19BVURJT0RFVklDRVM9ZGVmYXVsdDpzbmQvMC5tb25pdG9y OnNuZEByZW1vdGUvMAotKwkgKi8KLSsjZGVmaW5lIFBBX1NORElPX0FVRElPREVWSUNFU19NQVgJ MTYKLSsJUGFEZXZpY2VJbmZvIGRldmljZV9pbmZvW1BBX1NORElPX0FVRElPREVWSUNFU19NQVhd OwotKwlQYURldmljZUluZm8gKmluZm9zW1BBX1NORElPX0FVRElPREVWSUNFU19NQVhdOwotKwlj aGFyICphdWRpb2RldmljZXM7Ci0rfSBQYVNuZGlvSG9zdEFwaVJlcHJlc2VudGF0aW9uOwotKwot Ky8qCi0rICogY2FsbGJhY2sgaW52b2tlZCB3aGVuIGJsb2NrcyBhcmUgcHJvY2Vzc2VkIGJ5IHRo ZSBoYXJkd2FyZQotKyAqLwotK3N0YXRpYyB2b2lkCi0rc25kaW9Pbk1vdmUodm9pZCAqYWRkciwg aW50IGRlbHRhKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAqcyA9IChQYVNuZGlvU3RyZWFtICopYWRk cjsKLSsKLSsJcy0+cmVhbHBvcyArPSBkZWx0YTsKLSt9Ci0rCi0rLyoKLSsgKiBjb252ZXJ0IFBB IGVuY29kaW5nIHRvIHNuZGlvIGVuY29kaW5nLCByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzCi0rICov Ci0rc3RhdGljIGludAotK3NuZGlvU2V0Rm10KHN0cnVjdCBzaW9fcGFyICpzaW8sIFBhU2FtcGxl Rm9ybWF0IGZtdCkKLSt7Ci0rCXN3aXRjaCAoZm10ICYgfnBhTm9uSW50ZXJsZWF2ZWQpIHsKLSsJ Y2FzZSBwYUludDMyOgotKwkJc2lvLT5zaWcgPSAxOwotKwkJc2lvLT5iaXRzID0gMzI7Ci0rCQli cmVhazsKLSsJY2FzZSBwYUludDI0OgotKwkJc2lvLT5zaWcgPSAxOwotKwkJc2lvLT5iaXRzID0g MjQ7Ci0rCQlzaW8tPmJwcyA9IDM7CS8qIHBhSW50MjQgaXMgcGFja2VkIGZvcm1hdCAqLwotKwkJ YnJlYWs7Ci0rCWNhc2UgcGFJbnQxNjoKLSsJY2FzZSBwYUZsb2F0MzI6Ci0rCQlzaW8tPnNpZyA9 IDE7Ci0rCQlzaW8tPmJpdHMgPSAxNjsKLSsJCWJyZWFrOwotKwljYXNlIHBhSW50ODoKLSsJCXNp by0+c2lnID0gMTsKLSsJCXNpby0+Yml0cyA9IDg7Ci0rCQlicmVhazsKLSsJY2FzZSBwYVVJbnQ4 OgotKwkJc2lvLT5zaWcgPSAwOwotKwkJc2lvLT5iaXRzID0gODsKLSsJCWJyZWFrOwotKwlkZWZh dWx0OgotKwkJRFBSKCJzbmRpb1NldEZtdDogJXg6IHVuc3VwcG9ydGVkXG4iLCBmbXQpOwotKwkJ cmV0dXJuIDA7Ci0rCX0KLSsJc2lvLT5sZSA9IFNJT19MRV9OQVRJVkU7Ci0rCXJldHVybiAxOwot K30KLSsKLSsvKgotKyAqIGNvbnZlcnQgc25kaW8gZW5jb2RpbmcgdG8gUEEgZW5jb2RpbmcsIHJl dHVybiB0cnVlIG9uIHN1Y2Nlc3MKLSsgKi8KLStzdGF0aWMgaW50Ci0rc25kaW9HZXRGbXQoc3Ry dWN0IHNpb19wYXIgKnNpbywgUGFTYW1wbGVGb3JtYXQgKmZtdCkKLSt7Ci0rCWlmICgoc2lvLT5i cHMgKiA4ICE9IHNpby0+Yml0cyAmJiAhc2lvLT5tc2IpIHx8Ci0rCSAgICAoc2lvLT5icHMgPiAx ICYmIHNpby0+bGUgIT0gU0lPX0xFX05BVElWRSkpIHsKLSsJCURQUigic25kaW9HZXRGbXQ6IGJp dHMgPSAldSwgbGUgPSAldSwgbXNiID0gJXUsIGJwcyA9ICV1XG4iLAotKwkJICAgIHNpby0+Yml0 cywgc2lvLT5sZSwgc2lvLT5tc2IsIHNpby0+YnBzKTsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0r CXN3aXRjaCAoc2lvLT5iaXRzKSB7Ci0rCWNhc2UgMzI6Ci0rCQlpZiAoIXNpby0+c2lnKQotKwkJ CXJldHVybiAwOwotKwkJKmZtdCA9IHBhSW50MzI7Ci0rCQlicmVhazsKLSsJY2FzZSAyNDoKLSsJ CWlmICghc2lvLT5zaWcpCi0rCQkJcmV0dXJuIDA7Ci0rCQkqZm10ID0gKHNpby0+YnBzID09IDMp ID8gcGFJbnQyNCA6IHBhSW50MzI7Ci0rCQlicmVhazsKLSsJY2FzZSAxNjoKLSsJCWlmICghc2lv LT5zaWcpCi0rCQkJcmV0dXJuIDA7Ci0rCQkqZm10ID0gcGFJbnQxNjsKLSsJCWJyZWFrOwotKwlj YXNlIDg6Ci0rCQkqZm10ID0gc2lvLT5zaWcgPyBwYUludDggOiBwYVVJbnQ4OwotKwkJYnJlYWs7 Ci0rCWRlZmF1bHQ6Ci0rCQlEUFIoInNuZGlvR2V0Rm10OiAldTogdW5zdXBwb3J0ZWRcbiIsIHNp by0+Yml0cyk7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwlyZXR1cm4gMTsKLSt9Ci0rCi0rLyoKLSsg KiBJL08gbG9vcCBmb3IgY2FsbGJhY2sgaW50ZXJmYWNlCi0rICovCi0rc3RhdGljIHZvaWQgKgot K3NuZGlvVGhyZWFkKHZvaWQgKmFyZykKLSt7Ci0rCVBhU25kaW9TdHJlYW0gKnMgPSAoUGFTbmRp b1N0cmVhbSAqKWFyZzsKLSsJUGFTdHJlYW1DYWxsYmFja1RpbWVJbmZvIHRpOwotKwl1bnNpZ25l ZCBjaGFyICpkYXRhOwotKwl1bnNpZ25lZCB0b2RvLCByYmxrc3osIHdibGtzejsKLSsJaW50IG4s IHJlc3VsdDsKLSsJCi0rCXJibGtzeiA9IHMtPnBhci5yb3VuZCAqIHMtPnBhci5yY2hhbiAqIHMt PnBhci5icHM7Ci0rCXdibGtzeiA9IHMtPnBhci5yb3VuZCAqIHMtPnBhci5wY2hhbiAqIHMtPnBh ci5icHM7Ci0rCQotKwlEUFIoInNuZGlvVGhyZWFkOiBtb2RlID0gJXgsIHJvdW5kID0gJXUsIHJi bGtzeiA9ICV1LCB3Ymxrc3ogPSAldVxuIiwKLSsJICAgIHMtPm1vZGUsIHMtPnBhci5yb3VuZCwg cmJsa3N6LCB3Ymxrc3opOwotKwkKLSsJd2hpbGUgKCFzLT5zdG9wcGVkKSB7Ci0rCQlpZiAocy0+ bW9kZSAmIFNJT19SRUMpIHsKLSsJCQl0b2RvID0gcmJsa3N6OwotKwkJCWRhdGEgPSBzLT5yYnVm OwotKwkJCXdoaWxlICh0b2RvID4gMCkgewotKwkJCQluID0gc2lvX3JlYWQocy0+aGRsLCBkYXRh LCB0b2RvKTsKLSsJCQkJaWYgKG4gPT0gMCkgewotKwkJCQkJRFBSKCJzbmRpb1RocmVhZDogc2lv X3JlYWQgZmFpbGVkXG4iKTsKLSsJCQkJCWdvdG8gZmFpbGVkOwotKwkJCQl9Ci0rCQkJCXRvZG8g LT0gbjsKLSsJCQkJZGF0YSArPSBuOwotKwkJCX0KLSsJCQlzLT5ycG9zICs9IHMtPnBhci5yb3Vu ZDsKLSsJCQl0aS5pbnB1dEJ1ZmZlckFkY1RpbWUgPSAKLSsJCQkgICAgKGRvdWJsZSlzLT5yZWFs cG9zIC8gcy0+cGFyLnJhdGU7Ci0rCQl9Ci0rCQlpZiAocy0+bW9kZSAmIFNJT19QTEFZKSB7Ci0r CQkJdGkub3V0cHV0QnVmZmVyRGFjVGltZSA9Ci0rCQkJICAgIChkb3VibGUpKHMtPnJlYWxwb3Mg KyBzLT5wYXIuYnVmc3opIC8gcy0+cGFyLnJhdGU7Ci0rCQl9Ci0rCQl0aS5jdXJyZW50VGltZSA9 IHMtPnJlYWxwb3MgLyAoZG91YmxlKXMtPnBhci5yYXRlOwotKwkJUGFVdGlsX0JlZ2luQnVmZmVy UHJvY2Vzc2luZygmcy0+YnVmcHJvYywgJnRpLCAwKTsKLSsJCWlmIChzLT5tb2RlICYgU0lPX1BM QVkpIHsKLSsJCQlQYVV0aWxfU2V0T3V0cHV0RnJhbWVDb3VudCgmcy0+YnVmcHJvYywgcy0+cGFy LnJvdW5kKTsKLSsJCQlQYVV0aWxfU2V0SW50ZXJsZWF2ZWRPdXRwdXRDaGFubmVscygmcy0+YnVm cHJvYywKLSsJCQkgICAgMCwgcy0+d2J1Ziwgcy0+cGFyLnBjaGFuKTsKLSsJCX0KLSsJCWlmIChz LT5tb2RlICYgU0lPX1JFQykgewotKwkJCVBhVXRpbF9TZXRJbnB1dEZyYW1lQ291bnQoJnMtPmJ1 ZnByb2MsIHMtPnBhci5yb3VuZCk7Ci0rCQkJUGFVdGlsX1NldEludGVybGVhdmVkSW5wdXRDaGFu bmVscygmcy0+YnVmcHJvYywKLSsJCQkgICAgMCwgcy0+cmJ1Ziwgcy0+cGFyLnJjaGFuKTsKLSsJ CX0KLSsJCXJlc3VsdCA9IHBhQ29udGludWU7Ci0rCQluID0gUGFVdGlsX0VuZEJ1ZmZlclByb2Nl c3NpbmcoJnMtPmJ1ZnByb2MsICZyZXN1bHQpOwotKwkJaWYgKG4gIT0gcy0+cGFyLnJvdW5kKSB7 Ci0rCQkJRFBSKCJzbmRpb1RocmVhZDogJWQgPCAldSBmcmFtZXMsIHJlc3VsdCA9ICVkXG4iLAot KwkJCSAgICBuLCBzLT5wYXIucm91bmQsIHJlc3VsdCk7Ci0rCQl9Ci0rCQlpZiAocmVzdWx0ICE9 IHBhQ29udGludWUpIHsKLSsJCQlicmVhazsKLSsJCX0KLSsJCWlmIChzLT5tb2RlICYgU0lPX1BM QVkpIHsKLSsJCQluID0gc2lvX3dyaXRlKHMtPmhkbCwgcy0+d2J1Ziwgd2Jsa3N6KTsKLSsJCQlp ZiAobiA8IHdibGtzeikgewotKwkJCQlEUFIoInNuZGlvVGhyZWFkOiBzaW9fd3JpdGUgZmFpbGVk XG4iKTsKLSsJCQkJZ290byBmYWlsZWQ7Ci0rCQkJfQotKwkJCXMtPndwb3MgKz0gcy0+cGFyLnJv dW5kOwotKwkJfQotKwl9Ci0rIGZhaWxlZDoKLSsJcy0+YWN0aXZlID0gMDsKLSsJRFBSKCJzbmRp b1RocmVhZDogZG9uZVxuIik7Ci0rfQotKwotK3N0YXRpYyBQYUVycm9yCi0rT3BlblN0cmVhbShz dHJ1Y3QgUGFVdGlsSG9zdEFwaVJlcHJlc2VudGF0aW9uICpob3N0QXBpLAotKyAgICBQYVN0cmVh bSAqKnN0cmVhbSwKLSsgICAgY29uc3QgUGFTdHJlYW1QYXJhbWV0ZXJzICppbnB1dFBhciwKLSsg ICAgY29uc3QgUGFTdHJlYW1QYXJhbWV0ZXJzICpvdXRwdXRQYXIsCi0rICAgIGRvdWJsZSBzYW1w bGVSYXRlLAotKyAgICB1bnNpZ25lZCBsb25nIGZyYW1lc1BlckJ1ZmZlciwKLSsgICAgUGFTdHJl YW1GbGFncyBzdHJlYW1GbGFncywKLSsgICAgUGFTdHJlYW1DYWxsYmFjayAqc3RyZWFtQ2FsbGJh Y2ssCi0rICAgIHZvaWQgKnVzZXJEYXRhKQotK3sKLSsJUGFTbmRpb0hvc3RBcGlSZXByZXNlbnRh dGlvbiAqc25kaW9Ib3N0QXBpID0gKFBhU25kaW9Ib3N0QXBpUmVwcmVzZW50YXRpb24gKilob3N0 QXBpOwotKwlQYVNuZGlvU3RyZWFtICpzOwotKwlQYUVycm9yIGVycjsKLSsJc3RydWN0IHNpb19o ZGwgKmhkbDsKLSsJc3RydWN0IHNpb19wYXIgcGFyOwotKwl1bnNpZ25lZCBtb2RlOwotKwlpbnQg aW5jaCwgb25jaDsKLSsJUGFTYW1wbGVGb3JtYXQgaWZtdCwgb2ZtdCwgc2lvZm10OwotKwljb25z dCBjaGFyICpkZXY7Ci0rCi0rCURQUigiT3BlblN0cmVhbTpcbiIpOwotKwotKwltb2RlID0gMDsK LSsJaW5jaCA9IG9uY2ggPSAwOwotKwlpZm10ID0gb2ZtdCA9IDA7Ci0rCXNpb19pbml0cGFyKCZw YXIpOwotKwotKwlpZiAob3V0cHV0UGFyICYmIG91dHB1dFBhci0+Y2hhbm5lbENvdW50ID4gMCkg ewotKwkJaWYgKG91dHB1dFBhci0+ZGV2aWNlID49IHNuZGlvSG9zdEFwaS0+YmFzZS5pbmZvLmRl dmljZUNvdW50KSB7Ci0rCQkJRFBSKCJPcGVuU3RyZWFtOiAlZDogYmFkIG91dHB1dCBkZXZpY2Vc biIsIG91dHB1dFBhci0+ZGV2aWNlKTsKLSsJCQlyZXR1cm4gcGFJbnZhbGlkRGV2aWNlOwotKwkJ fQotKwkJaWYgKG91dHB1dFBhci0+aG9zdEFwaVNwZWNpZmljU3RyZWFtSW5mbykgewotKwkJCURQ UigiT3BlblN0cmVhbTogb3V0cHV0IHNwZWNpZmljIGluZm9cbiIpOwotKwkJCXJldHVybiBwYUlu Y29tcGF0aWJsZUhvc3RBcGlTcGVjaWZpY1N0cmVhbUluZm87Ci0rCQl9Ci0rCQlpZiAoIXNuZGlv U2V0Rm10KCZwYXIsIG91dHB1dFBhci0+c2FtcGxlRm9ybWF0KSkgewotKwkJCXJldHVybiBwYVNh bXBsZUZvcm1hdE5vdFN1cHBvcnRlZDsKLSsJCX0KLSsJCW9mbXQgPSBvdXRwdXRQYXItPnNhbXBs ZUZvcm1hdDsKLSsJCW9uY2ggPSBwYXIucGNoYW4gPSBvdXRwdXRQYXItPmNoYW5uZWxDb3VudDsK LSsJCW1vZGUgfD0gU0lPX1BMQVk7Ci0rCX0KLSsJaWYgKGlucHV0UGFyICYmIGlucHV0UGFyLT5j aGFubmVsQ291bnQgPiAwKSB7Ci0rCQlpZiAoaW5wdXRQYXItPmRldmljZSA+PSBzbmRpb0hvc3RB cGktPmJhc2UuaW5mby5kZXZpY2VDb3VudCkgewotKwkJCURQUigiT3BlblN0cmVhbTogJWQ6IGJh ZCBpbnB1dCBkZXZpY2VcbiIsIGlucHV0UGFyLT5kZXZpY2UpOwotKwkJCXJldHVybiBwYUludmFs aWREZXZpY2U7Ci0rCQl9Ci0rCQlpZiAoaW5wdXRQYXItPmhvc3RBcGlTcGVjaWZpY1N0cmVhbUlu Zm8pIHsKLSsJCQlEUFIoIk9wZW5TdHJlYW06IGlucHV0IHNwZWNpZmljIGluZm9cbiIpOwotKwkJ CXJldHVybiBwYUluY29tcGF0aWJsZUhvc3RBcGlTcGVjaWZpY1N0cmVhbUluZm87Ci0rCQl9Ci0r CQlpZiAoIXNuZGlvU2V0Rm10KCZwYXIsIGlucHV0UGFyLT5zYW1wbGVGb3JtYXQpKSB7Ci0rCQkJ cmV0dXJuIHBhU2FtcGxlRm9ybWF0Tm90U3VwcG9ydGVkOwotKwkJfQotKwkJaWZtdCA9IGlucHV0 UGFyLT5zYW1wbGVGb3JtYXQ7Ci0rCQlpbmNoID0gcGFyLnJjaGFuID0gaW5wdXRQYXItPmNoYW5u ZWxDb3VudDsKLSsJCW1vZGUgfD0gU0lPX1JFQzsKLSsJfQotKwlwYXIucmF0ZSA9IHNhbXBsZVJh dGU7Ci0rCWlmIChmcmFtZXNQZXJCdWZmZXIgIT0gcGFGcmFtZXNQZXJCdWZmZXJVbnNwZWNpZmll ZCkKLSsJCXBhci5yb3VuZCA9IGZyYW1lc1BlckJ1ZmZlcjsKLSsKLSsJRFBSKCJPcGVuU3RyZWFt OiBtb2RlID0gJXgsIHRyeWluZyByYXRlID0gJXVcbiIsIG1vZGUsIHBhci5yYXRlKTsKLSsKLSsJ aWYgKG91dHB1dFBhcikgewotKwkJZGV2ID0gc25kaW9Ib3N0QXBpLT5kZXZpY2VfaW5mb1tvdXRw dXRQYXItPmRldmljZV0ubmFtZTsKLSsJfSBlbHNlIGlmIChpbnB1dFBhcikgewotKwkJZGV2ID0g c25kaW9Ib3N0QXBpLT5kZXZpY2VfaW5mb1tpbnB1dFBhci0+ZGV2aWNlXS5uYW1lOwotKwl9IGVs c2UgewotKwkJcmV0dXJuIHBhVW5hbnRpY2lwYXRlZEhvc3RFcnJvcjsKLSsJfQotKwloZGwgPSBz aW9fb3BlbihkZXYsIG1vZGUsIDApOwotKwlpZiAoaGRsID09IE5VTEwpCi0rCQlyZXR1cm4gcGFV bmFudGljaXBhdGVkSG9zdEVycm9yOwotKwlpZiAoIXNpb19zZXRwYXIoaGRsLCAmcGFyKSkgewot KwkJc2lvX2Nsb3NlKGhkbCk7Ci0rCQlyZXR1cm4gcGFVbmFudGljaXBhdGVkSG9zdEVycm9yOwot Kwl9Ci0rCWlmICghc2lvX2dldHBhcihoZGwsICZwYXIpKSB7Ci0rCQlzaW9fY2xvc2UoaGRsKTsK LSsJCXJldHVybiBwYVVuYW50aWNpcGF0ZWRIb3N0RXJyb3I7Ci0rCX0KLSsJaWYgKCFzbmRpb0dl dEZtdCgmcGFyLCAmc2lvZm10KSkgewotKwkJc2lvX2Nsb3NlKGhkbCk7Ci0rCQlyZXR1cm4gcGFT YW1wbGVGb3JtYXROb3RTdXBwb3J0ZWQ7Ci0rCX0KLSsJaWYgKChtb2RlICYgU0lPX1JFQykgJiYg cGFyLnJjaGFuICE9IGlucHV0UGFyLT5jaGFubmVsQ291bnQpIHsKLSsJCURQUigiT3BlblN0cmVh bTogcmNoYW4oJXUpICE9ICVkXG4iLCBwYXIucmNoYW4sIGlucHV0UGFyLT5jaGFubmVsQ291bnQp OwotKwkJc2lvX2Nsb3NlKGhkbCk7Ci0rCQlyZXR1cm4gcGFJbnZhbGlkQ2hhbm5lbENvdW50Owot Kwl9Ci0rCWlmICgobW9kZSAmIFNJT19QTEFZKSAmJiBwYXIucGNoYW4gIT0gb3V0cHV0UGFyLT5j aGFubmVsQ291bnQpIHsKLSsJCURQUigiT3BlblN0cmVhbTogcGNoYW4oJXUpICE9ICVkXG4iLCBw YXIucGNoYW4sIG91dHB1dFBhci0+Y2hhbm5lbENvdW50KTsKLSsJCXNpb19jbG9zZShoZGwpOwot KwkJcmV0dXJuIHBhSW52YWxpZENoYW5uZWxDb3VudDsKLSsJfQotKwlpZiAoKGRvdWJsZSlwYXIu cmF0ZSA8IHNhbXBsZVJhdGUgKiAwLjk5NSB8fAotKwkgICAgKGRvdWJsZSlwYXIucmF0ZSA+IHNh bXBsZVJhdGUgKiAxLjAwNSkgewotKwkJRFBSKCJPcGVuU3RyZWFtOiByYXRlKCV1KSAhPSAlZ1xu IiwgcGFyLnJhdGUsIHNhbXBsZVJhdGUpOwotKwkJc2lvX2Nsb3NlKGhkbCk7Ci0rCQlyZXR1cm4g cGFJbnZhbGlkU2FtcGxlUmF0ZTsKLSsJfQotKwkKLSsJcyA9IChQYVNuZGlvU3RyZWFtICopUGFV dGlsX0FsbG9jYXRlTWVtb3J5KHNpemVvZihQYVNuZGlvU3RyZWFtKSk7Ci0rCWlmIChzID09IE5V TEwpIHsKLSsJCXNpb19jbG9zZShoZGwpOwotKwkJcmV0dXJuIHBhSW5zdWZmaWNpZW50TWVtb3J5 OwotKwl9Ci0rCVBhVXRpbF9Jbml0aWFsaXplU3RyZWFtUmVwcmVzZW50YXRpb24oJnMtPmJhc2Us IAotKwkgICAgc3RyZWFtQ2FsbGJhY2sgPyAmc25kaW9Ib3N0QXBpLT5jYWxsYmFjayA6ICZzbmRp b0hvc3RBcGktPmJsb2NraW5nLAotKwkgICAgc3RyZWFtQ2FsbGJhY2ssIHVzZXJEYXRhKTsKLSsJ RFBSKCJpbmNoID0gJWQsIG9uY2ggPSAlZCwgaWZtdCA9ICV4LCBvZm10ID0gJXhcbiIsIAotKwkg ICAgaW5jaCwgb25jaCwgaWZtdCwgb2ZtdCk7Ci0rCWVyciA9IFBhVXRpbF9Jbml0aWFsaXplQnVm ZmVyUHJvY2Vzc29yKCZzLT5idWZwcm9jLAotKwkgICAgaW5jaCwgaWZtdCwgc2lvZm10LAotKwkg ICAgb25jaCwgb2ZtdCwgc2lvZm10LAotKwkgICAgc2FtcGxlUmF0ZSwKLSsJICAgIHN0cmVhbUZs YWdzLAotKwkgICAgZnJhbWVzUGVyQnVmZmVyLAotKwkgICAgcGFyLnJvdW5kLAotKwkgICAgcGFV dGlsRml4ZWRIb3N0QnVmZmVyU2l6ZSwgCi0rCSAgICBzdHJlYW1DYWxsYmFjaywgdXNlckRhdGEp OwotKwlpZiAoZXJyKSB7Ci0rCQlEUFIoIk9wZW5TdHJlYW06IFBhVXRpbF9Jbml0aWFsaXplQnVm ZmVyUHJvY2Vzc29yIGZhaWxlZFxuIik7Ci0rCQlQYVV0aWxfRnJlZU1lbW9yeShzKTsKLSsJCXNp b19jbG9zZShoZGwpOwotKwkJcmV0dXJuIGVycjsKLSsJfQotKwlpZiAobW9kZSAmIFNJT19SRUMp IHsKLSsJCXMtPnJidWYgPSBtYWxsb2MocGFyLnJvdW5kICogcGFyLnJjaGFuICogcGFyLmJwcyk7 Ci0rCQlpZiAocy0+cmJ1ZiA9PSBOVUxMKSB7Ci0rCQkJRFBSKCJPcGVuU3RyZWFtOiBmYWlsZWQg dG8gYWxsb2NhdGUgcmJ1ZlxuIik7Ci0rCQkJUGFVdGlsX0ZyZWVNZW1vcnkocyk7Ci0rCQkJc2lv X2Nsb3NlKGhkbCk7Ci0rCQkJcmV0dXJuIHBhSW5zdWZmaWNpZW50TWVtb3J5OwotKwkJfQotKwl9 Ci0rCWlmIChtb2RlICYgU0lPX1BMQVkpIHsKLSsJCXMtPndidWYgPSBtYWxsb2MocGFyLnJvdW5k ICogcGFyLnBjaGFuICogcGFyLmJwcyk7Ci0rCQlpZiAocy0+d2J1ZiA9PSBOVUxMKSB7Ci0rCQkJ RFBSKCJPcGVuU3RyZWFtOiBmYWlsZWQgdG8gYWxsb2NhdGUgd2J1ZlxuIik7Ci0rCQkJZnJlZShz LT5yYnVmKTsKLSsJCQlQYVV0aWxfRnJlZU1lbW9yeShzKTsKLSsJCQlzaW9fY2xvc2UoaGRsKTsK LSsJCQlyZXR1cm4gcGFJbnN1ZmZpY2llbnRNZW1vcnk7Ci0rCQl9Ci0rCX0JCi0rCXMtPmJhc2Uu c3RyZWFtSW5mby5pbnB1dExhdGVuY3kgPSAwOwotKwlzLT5iYXNlLnN0cmVhbUluZm8ub3V0cHV0 TGF0ZW5jeSA9IChtb2RlICYgU0lPX1BMQVkpID8KLSsJICAgIChkb3VibGUpKHBhci5idWZzeiAr IFBhVXRpbF9HZXRCdWZmZXJQcm9jZXNzb3JPdXRwdXRMYXRlbmN5RnJhbWVzKCZzLT5idWZwcm9j KSkgLyAoZG91YmxlKXBhci5yYXRlIDogMDsKLSsJcy0+YmFzZS5zdHJlYW1JbmZvLnNhbXBsZVJh dGUgPSBwYXIucmF0ZTsKLSsJcy0+YWN0aXZlID0gMDsKLSsJcy0+c3RvcHBlZCA9IDE7Ci0rCXMt Pm1vZGUgPSBtb2RlOwotKwlzLT5oZGwgPSBoZGw7Ci0rCXMtPnBhciA9IHBhcjsKLSsJKnN0cmVh bSA9IHM7CQotKwlEUFIoIk9wZW5TdHJlYW06IGRvbmVcbiIpOwotKwlyZXR1cm4gcGFOb0Vycm9y OwotK30KLSsKLStzdGF0aWMgUGFFcnJvcgotK0Jsb2NraW5nUmVhZFN0cmVhbShQYVN0cmVhbSAq c3RyZWFtLCB2b2lkICpkYXRhLCB1bnNpZ25lZCBsb25nIG51bUZyYW1lcykKLSt7Ci0rCVBhU25k aW9TdHJlYW0gKnMgPSAoUGFTbmRpb1N0cmVhbSAqKXN0cmVhbTsKLSsJdW5zaWduZWQgbiwgcmVz LCB0b2RvOwotKwl2b2lkICpidWY7Ci0rCQotKwl3aGlsZSAobnVtRnJhbWVzID4gMCkgewotKwkJ biA9IHMtPnBhci5yb3VuZDsKLSsJCWlmIChuID4gbnVtRnJhbWVzKQotKwkJCW4gPSBudW1GcmFt ZXM7Ci0rCQlidWYgPSBzLT5yYnVmOwotKwkJdG9kbyA9IG4gKiBzLT5wYXIucmNoYW4gKiBzLT5w YXIuYnBzOwotKwkJd2hpbGUgKHRvZG8gPiAwKSB7Ci0rCQkJcmVzID0gc2lvX3JlYWQocy0+aGRs LCBidWYsIHRvZG8pOwotKwkJCWlmIChyZXMgPT0gMCkKLSsJCQkJcmV0dXJuIHBhVW5hbnRpY2lw YXRlZEhvc3RFcnJvcjsKLSsJCQlidWYgPSAoY2hhciAqKWJ1ZiArIHJlczsKLSsJCQl0b2RvIC09 IHJlczsKLSsJCX0KLSsJCXMtPnJwb3MgKz0gbjsKLSsJCVBhVXRpbF9TZXRJbnB1dEZyYW1lQ291 bnQoJnMtPmJ1ZnByb2MsIG4pOwotKwkJUGFVdGlsX1NldEludGVybGVhdmVkSW5wdXRDaGFubmVs cygmcy0+YnVmcHJvYywgMCwgcy0+cmJ1Ziwgcy0+cGFyLnJjaGFuKTsKLSsJCXJlcyA9IFBhVXRp bF9Db3B5SW5wdXQoJnMtPmJ1ZnByb2MsICZkYXRhLCBuKTsKLSsJCWlmIChyZXMgIT0gbikgewot KwkJCURQUigiQmxvY2tpbmdSZWFkU3RyZWFtOiBjb3B5SW5wdXQ6ICV1ICE9ICV1XG4iKTsKLSsJ CQlyZXR1cm4gcGFVbmFudGljaXBhdGVkSG9zdEVycm9yOwotKwkJfQotKwkJbnVtRnJhbWVzIC09 IG47Ci0rCX0KLSsJcmV0dXJuIHBhTm9FcnJvcjsKLSt9Ci0rCi0rc3RhdGljIFBhRXJyb3IKLStC bG9ja2luZ1dyaXRlU3RyZWFtKFBhU3RyZWFtKiBzdHJlYW0sIGNvbnN0IHZvaWQgKmRhdGEsIHVu c2lnbmVkIGxvbmcgbnVtRnJhbWVzKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAqcyA9IChQYVNuZGlv U3RyZWFtICopc3RyZWFtOwotKwl1bnNpZ25lZCBuLCByZXM7Ci0rCi0rCXdoaWxlIChudW1GcmFt ZXMgPiAwKSB7Ci0rCQluID0gcy0+cGFyLnJvdW5kOwotKwkJaWYgKG4gPiBudW1GcmFtZXMpCi0r CQkJbiA9IG51bUZyYW1lczsKLSsJCVBhVXRpbF9TZXRPdXRwdXRGcmFtZUNvdW50KCZzLT5idWZw cm9jLCBuKTsKLSsJCVBhVXRpbF9TZXRJbnRlcmxlYXZlZE91dHB1dENoYW5uZWxzKCZzLT5idWZw cm9jLCAwLCBzLT53YnVmLCBzLT5wYXIucGNoYW4pOwotKwkJcmVzID0gUGFVdGlsX0NvcHlPdXRw dXQoJnMtPmJ1ZnByb2MsICZkYXRhLCBuKTsKLSsJCWlmIChyZXMgIT0gbikgewotKwkJCURQUigi QmxvY2tpbmdXcml0ZVN0cmVhbTogY29weU91dHB1dDogJXUgIT0gJXVcbiIpOwotKwkJCXJldHVy biBwYVVuYW50aWNpcGF0ZWRIb3N0RXJyb3I7Ci0rCQl9Ci0rCQlyZXMgPSBzaW9fd3JpdGUocy0+ aGRsLCBzLT53YnVmLCBuICogcy0+cGFyLnBjaGFuICogcy0+cGFyLmJwcyk7Ci0rCQlpZiAocmVz ID09IDApCi0rCQkJcmV0dXJuIHBhVW5hbnRpY2lwYXRlZEhvc3RFcnJvcjsJCQotKwkJcy0+d3Bv cyArPSBuOwotKwkJbnVtRnJhbWVzIC09IG47Ci0rCX0KLSsJcmV0dXJuIHBhTm9FcnJvcjsKLSt9 Ci0rCi0rc3RhdGljIHNpZ25lZCBsb25nCi0rQmxvY2tpbmdHZXRTdHJlYW1SZWFkQXZhaWxhYmxl KFBhU3RyZWFtICpzdHJlYW0pCi0rewotKwlQYVNuZGlvU3RyZWFtICpzID0gKFBhU25kaW9TdHJl YW0gKilzdHJlYW07Ci0rCXN0cnVjdCBwb2xsZmQgcGZkOwotKwlpbnQgbiwgZXZlbnRzOwotKwot KwluID0gc2lvX3BvbGxmZChzLT5oZGwsICZwZmQsIFBPTExJTik7Ci0rCXdoaWxlIChwb2xsKCZw ZmQsIG4sIDApIDwgMCkgewotKwkJaWYgKGVycm5vID09IEVJTlRSKQotKwkJCWNvbnRpbnVlOwot KwkJcGVycm9yKCJwb2xsIik7Ci0rCQlhYm9ydCgpOwotKwl9Ci0rCWV2ZW50cyA9IHNpb19yZXZl bnRzKHMtPmhkbCwgJnBmZCk7Ci0rCWlmICghKGV2ZW50cyAmIFBPTExJTikpCi0rCQlyZXR1cm4g MDsKLSsKLSsJcmV0dXJuIHMtPnJlYWxwb3MgLSBzLT5ycG9zOwotK30KLSsKLStzdGF0aWMgc2ln bmVkIGxvbmcKLStCbG9ja2luZ0dldFN0cmVhbVdyaXRlQXZhaWxhYmxlKFBhU3RyZWFtICpzdHJl YW0pCi0rewotKwlQYVNuZGlvU3RyZWFtICpzID0gKFBhU25kaW9TdHJlYW0gKilzdHJlYW07Ci0r CXN0cnVjdCBwb2xsZmQgcGZkOwotKwlpbnQgbiwgZXZlbnRzOwotKwotKwluID0gc2lvX3BvbGxm ZChzLT5oZGwsICZwZmQsIFBPTExPVVQpOwotKwl3aGlsZSAocG9sbCgmcGZkLCBuLCAwKSA8IDAp IHsKLSsJCWlmIChlcnJubyA9PSBFSU5UUikKLSsJCQljb250aW51ZTsKLSsJCXBlcnJvcigicG9s bCIpOwotKwkJYWJvcnQoKTsKLSsJfQotKwlldmVudHMgPSBzaW9fcmV2ZW50cyhzLT5oZGwsICZw ZmQpOwotKwlpZiAoIShldmVudHMgJiBQT0xMT1VUKSkKLSsJCXJldHVybiAwOwotKwotKwlyZXR1 cm4gcy0+cGFyLmJ1ZnN6IC0gKHMtPndwb3MgLSBzLT5yZWFscG9zKTsKLSt9Ci0rCi0rc3RhdGlj IFBhRXJyb3IKLStCbG9ja2luZ1dhaXRFbXB0eSggUGFTdHJlYW0gKnN0cmVhbSApCi0rewotKwlQ YVNuZGlvU3RyZWFtICpzID0gKFBhU25kaW9TdHJlYW0gKilzdHJlYW07Ci0rCi0rCS8qCi0rCSAq IGRyYWluIHBsYXliYWNrIGJ1ZmZlcnM7IHNuZGlvIGFsd2F5cyBkb2VzIGl0IGluIGJhY2tncm91 bmQKLSsJICogYW5kIHRoZXJlIGlzIG5vIHdheSB0byB3YWl0IGZvciBjb21wbGV0aW9uCi0rCSAq LwotKwlEUFIoIkJsb2NraW5nV2FpdEVtcHR5OiBzPSVkLCBhPSVkXG4iLCBzLT5zdG9wcGVkLCBz LT5hY3RpdmUpOwotKwotKwlyZXR1cm4gcGFOb0Vycm9yOwotK30KLSsKLStzdGF0aWMgUGFFcnJv cgotK1N0YXJ0U3RyZWFtKFBhU3RyZWFtICpzdHJlYW0pCi0rewotKwlQYVNuZGlvU3RyZWFtICpz ID0gKFBhU25kaW9TdHJlYW0gKilzdHJlYW07Ci0rCXVuc2lnbmVkIHByaW1lcywgd2Jsa3N6Owot KwlpbnQgZXJyOwotKwotKwlEUFIoIlN0YXJ0U3RyZWFtOiBzPSVkLCBhPSVkXG4iLCBzLT5zdG9w cGVkLCBzLT5hY3RpdmUpOwotKwotKwlpZiAoIXMtPnN0b3BwZWQpIHsKLSsJCURQUigiU3RhcnRT dHJlYW06IGFscmVhZHkgc3RhcnRlZFxuIik7Ci0rCQlyZXR1cm4gcGFOb0Vycm9yOwotKwl9Ci0r CXMtPnN0b3BwZWQgPSAwOwotKwlzLT5hY3RpdmUgPSAxOwotKwlzLT5yZWFscG9zID0gMDsKLSsJ cy0+d3BvcyA9IDA7Ci0rCXMtPnJwb3MgPSAwOwotKwlQYVV0aWxfUmVzZXRCdWZmZXJQcm9jZXNz b3IoJnMtPmJ1ZnByb2MpOwotKwlpZiAoIXNpb19zdGFydChzLT5oZGwpKQotKwkJcmV0dXJuIHBh VW5hbnRpY2lwYXRlZEhvc3RFcnJvcjsKLSsKLSsJLyoKLSsJICogc2VuZCBhIGNvbXBsZXRlIGJ1 ZmZlciBvZiBzaWxlbmNlCi0rCSAqLwotKwlpZiAocy0+bW9kZSAmIFNJT19QTEFZKSB7Ci0rCQl3 Ymxrc3ogPSBzLT5wYXIucm91bmQgKiBzLT5wYXIucGNoYW4gKiBzLT5wYXIuYnBzOwotKwkJbWVt c2V0KHMtPndidWYsIDAsIHdibGtzeik7Ci0rCQlmb3IgKHByaW1lcyA9IHMtPnBhci5idWZzeiAv IHMtPnBhci5yb3VuZDsgcHJpbWVzID4gMDsgcHJpbWVzLS0pCi0rCQkJcy0+d3BvcyArPSBzaW9f d3JpdGUocy0+aGRsLCBzLT53YnVmLCB3Ymxrc3opOwotKwl9Ci0rCWlmIChzLT5iYXNlLnN0cmVh bUNhbGxiYWNrKSB7Ci0rCQllcnIgPSBwdGhyZWFkX2NyZWF0ZSgmcy0+dGhyZWFkLCBOVUxMLCBz bmRpb1RocmVhZCwgcyk7Ci0rCQlpZiAoZXJyKSB7Ci0rCQkJRFBSKCJTbmRpb1N0YXJ0U3RyZWFt OiBjb3VsZG4ndCBjcmVhdGUgdGhyZWFkXG4iKTsKLSsJCQlyZXR1cm4gcGFVbmFudGljaXBhdGVk SG9zdEVycm9yOwotKwkJfQotKwkJRFBSKCJTdGFydFN0cmVhbTogc3RhcnRlZC4uLlxuIik7Ci0r CX0KLSsJcmV0dXJuIHBhTm9FcnJvcjsKLSt9Ci0rCi0rc3RhdGljIFBhRXJyb3IKLStTdG9wU3Ry ZWFtKFBhU3RyZWFtICpzdHJlYW0pCi0rewotKwlQYVNuZGlvU3RyZWFtICpzID0gKFBhU25kaW9T dHJlYW0gKilzdHJlYW07Ci0rCXZvaWQgKnJldDsKLSsJaW50IGVycjsKLSsKLSsJRFBSKCJTdG9w U3RyZWFtOiBzPSVkLCBhPSVkXG4iLCBzLT5zdG9wcGVkLCBzLT5hY3RpdmUpOwotKwotKwlpZiAo cy0+c3RvcHBlZCkgewotKwkJRFBSKCJTdGFydFN0cmVhbTogYWxyZWFkeSBzdGFydGVkXG4iKTsK LSsJCXJldHVybiBwYU5vRXJyb3I7Ci0rCX0KLSsJcy0+c3RvcHBlZCA9IDE7Ci0rCWlmIChzLT5i YXNlLnN0cmVhbUNhbGxiYWNrKSB7Ci0rCQllcnIgPSBwdGhyZWFkX2pvaW4ocy0+dGhyZWFkLCAm cmV0KTsKLSsJCWlmIChlcnIpIHsKLSsJCQlEUFIoIlNuZGlvU3RvcDogY291bGRuJ3Qgam9pbiB0 aHJlYWRcbiIpOwotKwkJCXJldHVybiBwYVVuYW50aWNpcGF0ZWRIb3N0RXJyb3I7Ci0rCQl9Ci0r CX0KLSsJaWYgKCFzaW9fc3RvcChzLT5oZGwpKQotKwkJcmV0dXJuIHBhVW5hbnRpY2lwYXRlZEhv c3RFcnJvcjsKLSsJcmV0dXJuIHBhTm9FcnJvcjsKLSt9Ci0rCi0rc3RhdGljIFBhRXJyb3IKLStD bG9zZVN0cmVhbShQYVN0cmVhbSAqc3RyZWFtKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAqcyA9IChQ YVNuZGlvU3RyZWFtICopc3RyZWFtOwotKwotKwlEUFIoIkNsb3NlU3RyZWFtOlxuIik7Ci0rCi0r CWlmICghcy0+c3RvcHBlZCkKLSsJCVN0b3BTdHJlYW0oc3RyZWFtKTsKLSsKLSsJaWYgKHMtPm1v ZGUgJiBTSU9fUkVDKQotKwkJZnJlZShzLT5yYnVmKTsKLSsJaWYgKHMtPm1vZGUgJiBTSU9fUExB WSkKLSsJCWZyZWUocy0+d2J1Zik7Ci0rCXNpb19jbG9zZShzLT5oZGwpOwotKyAgICAgICAgUGFV dGlsX1Rlcm1pbmF0ZVN0cmVhbVJlcHJlc2VudGF0aW9uKCZzLT5iYXNlKTsKLSsJUGFVdGlsX1Rl cm1pbmF0ZUJ1ZmZlclByb2Nlc3Nvcigmcy0+YnVmcHJvYyk7Ci0rCVBhVXRpbF9GcmVlTWVtb3J5 KHMpOwotKwlyZXR1cm4gcGFOb0Vycm9yOwotK30KLSsKLStzdGF0aWMgUGFFcnJvcgotK0Fib3J0 U3RyZWFtKFBhU3RyZWFtICpzdHJlYW0pCi0rewotKwlEUFIoIkFib3J0U3RyZWFtOlxuIik7Ci0r Ci0rCXJldHVybiBTdG9wU3RyZWFtKHN0cmVhbSk7Ci0rfQotKwotK3N0YXRpYyBQYUVycm9yCi0r SXNTdHJlYW1TdG9wcGVkKFBhU3RyZWFtICpzdHJlYW0pCi0rewotKwlQYVNuZGlvU3RyZWFtICpz ID0gKFBhU25kaW9TdHJlYW0gKilzdHJlYW07Ci0rCi0rCS8vRFBSKCJJc1N0cmVhbVN0b3BwZWQ6 IHM9JWQsIGE9JWRcbiIsIHMtPnN0b3BwZWQsIHMtPmFjdGl2ZSk7Ci0rCi0rCXJldHVybiBzLT5z dG9wcGVkOwotK30KLSsKLStzdGF0aWMgUGFFcnJvcgotK0lzU3RyZWFtQWN0aXZlKFBhU3RyZWFt ICpzdHJlYW0pCi0rewotKwlQYVNuZGlvU3RyZWFtICpzID0gKFBhU25kaW9TdHJlYW0gKilzdHJl YW07Ci0rCi0rCS8vRFBSKCJJc1N0cmVhbUFjdGl2ZTogcz0lZCwgYT0lZFxuIiwgcy0+c3RvcHBl ZCwgcy0+YWN0aXZlKTsKLSsKLSsJcmV0dXJuIHMtPmFjdGl2ZTsKLSt9Ci0rCi0rc3RhdGljIFBh VGltZQotK0dldFN0cmVhbVRpbWUoUGFTdHJlYW0gKnN0cmVhbSkKLSt7Ci0rCVBhU25kaW9TdHJl YW0gKnMgPSAoUGFTbmRpb1N0cmVhbSAqKXN0cmVhbTsKLSsKLSsJcmV0dXJuIChkb3VibGUpcy0+ cmVhbHBvcyAvIHMtPmJhc2Uuc3RyZWFtSW5mby5zYW1wbGVSYXRlOwotK30KLSsKLStzdGF0aWMg UGFFcnJvcgotK0lzRm9ybWF0U3VwcG9ydGVkKHN0cnVjdCBQYVV0aWxIb3N0QXBpUmVwcmVzZW50 YXRpb24gKmhvc3RBcGksCi0rICAgIGNvbnN0IFBhU3RyZWFtUGFyYW1ldGVycyAqaW5wdXRQYXIs Ci0rICAgIGNvbnN0IFBhU3RyZWFtUGFyYW1ldGVycyAqb3V0cHV0UGFyLAotKyAgICBkb3VibGUg c2FtcGxlUmF0ZSkKLSt7Ci0rCXJldHVybiBwYUZvcm1hdElzU3VwcG9ydGVkOwotK30KLSsKLStz dGF0aWMgdm9pZAotK1Rlcm1pbmF0ZShzdHJ1Y3QgUGFVdGlsSG9zdEFwaVJlcHJlc2VudGF0aW9u ICpob3N0QXBpKQotK3sKLSsJUGFTbmRpb0hvc3RBcGlSZXByZXNlbnRhdGlvbiAqc25kaW9Ib3N0 QXBpOwotKwlzbmRpb0hvc3RBcGkgPSAoUGFTbmRpb0hvc3RBcGlSZXByZXNlbnRhdGlvbiAqKWhv c3RBcGk7Ci0rCWZyZWUoc25kaW9Ib3N0QXBpLT5hdWRpb2RldmljZXMpOwotKwlQYVV0aWxfRnJl ZU1lbW9yeShob3N0QXBpKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStJbml0RGV2aWNlSW5mbyhQ YURldmljZUluZm8gKmluZm8sIFBhSG9zdEFwaUluZGV4IGhvc3RBcGlJbmRleCwgY29uc3QgY2hh ciAqbmFtZSkKLSt7Ci0rCWluZm8tPnN0cnVjdFZlcnNpb24gPSAyOwotKwlpbmZvLT5uYW1lID0g bmFtZTsKLSsJaW5mby0+aG9zdEFwaSA9IGhvc3RBcGlJbmRleDsKLSsJaW5mby0+bWF4SW5wdXRD aGFubmVscyA9IDEyODsKLSsJaW5mby0+bWF4T3V0cHV0Q2hhbm5lbHMgPSAxMjg7Ci0rCWluZm8t PmRlZmF1bHRMb3dJbnB1dExhdGVuY3kgPSAwLjAxOwotKwlpbmZvLT5kZWZhdWx0TG93T3V0cHV0 TGF0ZW5jeSA9IDAuMDE7Ci0rCWluZm8tPmRlZmF1bHRIaWdoSW5wdXRMYXRlbmN5ID0gMC41Owot KwlpbmZvLT5kZWZhdWx0SGlnaE91dHB1dExhdGVuY3kgPSAwLjU7Ci0rCWluZm8tPmRlZmF1bHRT YW1wbGVSYXRlID0gNDgwMDA7Ci0rfQotKwotK1BhRXJyb3IKLStQYVNuZGlvX0luaXRpYWxpemUo UGFVdGlsSG9zdEFwaVJlcHJlc2VudGF0aW9uICoqaG9zdEFwaSwgUGFIb3N0QXBpSW5kZXggaG9z dEFwaUluZGV4KQotK3sKLSsJUGFTbmRpb0hvc3RBcGlSZXByZXNlbnRhdGlvbiAqc25kaW9Ib3N0 QXBpOwotKwlQYURldmljZUluZm8gKmluZm87Ci0rCXN0cnVjdCBzaW9faGRsICpoZGw7Ci0rCWNo YXIgKmF1ZGlvZGV2aWNlczsKLSsJY2hhciAqZGV2aWNlOwotKwlzaXplX3QgZGV2aWNlQ291bnQ7 Ci0rCi0rCURQUigiUGFTbmRpb19Jbml0aWFsaXplOiBpbml0aWFsaXppbmcuLi5cbiIpOwotKwot KwlpZiAoKGhkbD1zaW9fb3BlbihTSU9fREVWQU5ZLCBTSU9fUExBWSwgMSkpID09IE5VTEwpCi0r CQlyZXR1cm4gcGFOb0Vycm9yOwotKwlzaW9fY2xvc2UoaGRsKTsKLSsJLyogdW51c2FibGUgQVBJ cyBzaG91bGQgcmV0dXJuIHBhTm9FcnJvciBhbmQgYSBOVUxMIGhvc3RBcGkgKi8KLSsJKmhvc3RB cGkgPSBOVUxMOwotKwotKwlzbmRpb0hvc3RBcGkgPSBQYVV0aWxfQWxsb2NhdGVNZW1vcnkoc2l6 ZW9mKFBhU25kaW9Ib3N0QXBpUmVwcmVzZW50YXRpb24pKTsKLSsJaWYgKHNuZGlvSG9zdEFwaSA9 PSBOVUxMKQotKwkJcmV0dXJuIHBhTm9FcnJvcjsKLSsKLSsJLy8gQWRkIGRlZmF1bHQgZGV2aWNl Ci0rCWluZm8gPSAmc25kaW9Ib3N0QXBpLT5kZXZpY2VfaW5mb1swXTsKLSsJSW5pdERldmljZUlu Zm8oaW5mbywgaG9zdEFwaUluZGV4LCBTSU9fREVWQU5ZKTsKLSsJc25kaW9Ib3N0QXBpLT5pbmZv c1swXSA9IGluZm87Ci0rCWRldmljZUNvdW50ID0gMTsKLSsKLSsJLy8gQWRkIGFkZGl0aW9uYWwg ZGV2aWNlcyBhcyBzcGVjaWZpZWQgaW4gdGhlIFBBX1NORElPX0FVRElPREVWSUNFUwotKwkvLyBl bnZpcm9ubWVudCB2YXJpYWJsZSBhcyBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0Ci0rCXNuZGlvSG9z dEFwaS0+YXVkaW9kZXZpY2VzID0gTlVMTDsKLSsJYXVkaW9kZXZpY2VzID0gZ2V0ZW52KCJQQV9T TkRJT19BVURJT0RFVklDRVMiKTsKLSsJaWYgKGF1ZGlvZGV2aWNlcyAhPSBOVUxMKSB7Ci0rCQlz bmRpb0hvc3RBcGktPmF1ZGlvZGV2aWNlcyA9IHN0cmR1cChhdWRpb2RldmljZXMpOwotKwkJaWYg KHNuZGlvSG9zdEFwaS0+YXVkaW9kZXZpY2VzID09IE5VTEwpCi0rCQkJcmV0dXJuIHBhTm9FcnJv cjsKLSsKLSsJCWF1ZGlvZGV2aWNlcyA9IHNuZGlvSG9zdEFwaS0+YXVkaW9kZXZpY2VzOwotKwkJ d2hpbGUgKChkZXZpY2UgPSBzdHJzZXAoJmF1ZGlvZGV2aWNlcywgIjoiKSkgIT0gTlVMTCAmJgot KwkJCWRldmljZUNvdW50IDwgUEFfU05ESU9fQVVESU9ERVZJQ0VTX01BWCkgewotKwkJCWlmICgq ZGV2aWNlID09ICdcMCcpCi0rCQkJCWNvbnRpbnVlOwotKwkJCWluZm8gPSAmc25kaW9Ib3N0QXBp LT5kZXZpY2VfaW5mb1tkZXZpY2VDb3VudF07Ci0rCQkJSW5pdERldmljZUluZm8oaW5mbywgaG9z dEFwaUluZGV4LCBkZXZpY2UpOwotKwkJCXNuZGlvSG9zdEFwaS0+aW5mb3NbZGV2aWNlQ291bnRd ID0gaW5mbzsKLSsJCQlkZXZpY2VDb3VudCsrOwotKwkJfQotKwl9Ci0rCi0rCSpob3N0QXBpID0g JnNuZGlvSG9zdEFwaS0+YmFzZTsKLSsJKCpob3N0QXBpKS0+aW5mby5zdHJ1Y3RWZXJzaW9uID0g MTsKLSsJKCpob3N0QXBpKS0+aW5mby50eXBlID0gcGFTbmRpbzsKLSsJKCpob3N0QXBpKS0+aW5m by5uYW1lID0gInNuZGlvIjsKLSsJKCpob3N0QXBpKS0+aW5mby5kZXZpY2VDb3VudCA9IGRldmlj ZUNvdW50OwotKwkoKmhvc3RBcGkpLT5pbmZvLmRlZmF1bHRJbnB1dERldmljZSA9IDA7Ci0rCSgq aG9zdEFwaSktPmluZm8uZGVmYXVsdE91dHB1dERldmljZSA9IDA7Ci0rCSgqaG9zdEFwaSktPmRl dmljZUluZm9zID0gc25kaW9Ib3N0QXBpLT5pbmZvczsKLSsJKCpob3N0QXBpKS0+VGVybWluYXRl ID0gVGVybWluYXRlOwotKwkoKmhvc3RBcGkpLT5PcGVuU3RyZWFtID0gT3BlblN0cmVhbTsKLSsJ KCpob3N0QXBpKS0+SXNGb3JtYXRTdXBwb3J0ZWQgPSBJc0Zvcm1hdFN1cHBvcnRlZDsKLSsJCi0r CVBhVXRpbF9Jbml0aWFsaXplU3RyZWFtSW50ZXJmYWNlKCZzbmRpb0hvc3RBcGktPmJsb2NraW5n LAotKwkgICAgQ2xvc2VTdHJlYW0sCi0rCSAgICBTdGFydFN0cmVhbSwKLSsJICAgIFN0b3BTdHJl YW0sCi0rCSAgICBBYm9ydFN0cmVhbSwKLSsJICAgIElzU3RyZWFtU3RvcHBlZCwKLSsJICAgIElz U3RyZWFtQWN0aXZlLAotKwkgICAgR2V0U3RyZWFtVGltZSwKLSsJICAgIFBhVXRpbF9EdW1teUdl dENwdUxvYWQsCi0rCSAgICBCbG9ja2luZ1JlYWRTdHJlYW0sCi0rCSAgICBCbG9ja2luZ1dyaXRl U3RyZWFtLAotKwkgICAgQmxvY2tpbmdHZXRTdHJlYW1SZWFkQXZhaWxhYmxlLAotKwkgICAgQmxv Y2tpbmdHZXRTdHJlYW1Xcml0ZUF2YWlsYWJsZSk7Ci0rCi0rCVBhVXRpbF9Jbml0aWFsaXplU3Ry ZWFtSW50ZXJmYWNlKCZzbmRpb0hvc3RBcGktPmNhbGxiYWNrLAotKwkgICAgQ2xvc2VTdHJlYW0s Ci0rCSAgICBTdGFydFN0cmVhbSwKLSsJICAgIFN0b3BTdHJlYW0sCi0rCSAgICBBYm9ydFN0cmVh bSwKLSsJICAgIElzU3RyZWFtU3RvcHBlZCwKLSsJICAgIElzU3RyZWFtQWN0aXZlLAotKwkgICAg R2V0U3RyZWFtVGltZSwKLSsJICAgIFBhVXRpbF9EdW1teUdldENwdUxvYWQsCi0rCSAgICBQYVV0 aWxfRHVtbXlSZWFkLAotKwkgICAgUGFVdGlsX0R1bW15V3JpdGUsCi0rCSAgICBQYVV0aWxfRHVt bXlHZXRSZWFkQXZhaWxhYmxlLAotKwkgICAgUGFVdGlsX0R1bW15R2V0V3JpdGVBdmFpbGFibGUp OwotKwotKwlEUFIoIlBhU25kaW9fSW5pdGlhbGl6ZTogZG9uZVxuIik7Ci0rCXJldHVybiBwYU5v RXJyb3I7Ci0rfQotZGlmZiAtLWdpdCBzcmMvb3MvdW5peC9wYV91bml4X2hvc3RhcGlzLmMgc3Jj L29zL3VuaXgvcGFfdW5peF9ob3N0YXBpcy5jCi1pbmRleCBhOWI0YTA1Li5mMTBjZWQxIDEwMDY0 NAotLS0tIHNyYy9vcy91bml4L3BhX3VuaXhfaG9zdGFwaXMuYwotKysrIHNyYy9vcy91bml4L3Bh X3VuaXhfaG9zdGFwaXMuYwotQEAgLTQ0LDYgKzQ0LDcgQEAKLSAKLSBQYUVycm9yIFBhSmFja19J bml0aWFsaXplKCBQYVV0aWxIb3N0QXBpUmVwcmVzZW50YXRpb24gKipob3N0QXBpLCBQYUhvc3RB cGlJbmRleCBpbmRleCApOwotIFBhRXJyb3IgUGFBbHNhX0luaXRpYWxpemUoIFBhVXRpbEhvc3RB cGlSZXByZXNlbnRhdGlvbiAqKmhvc3RBcGksIFBhSG9zdEFwaUluZGV4IGluZGV4ICk7Ci0rUGFF cnJvciBQYVNuZGlvX0luaXRpYWxpemUoIFBhVXRpbEhvc3RBcGlSZXByZXNlbnRhdGlvbiAqKmhv c3RBcGksIFBhSG9zdEFwaUluZGV4IGluZGV4ICk7Ci0gUGFFcnJvciBQYU9TU19Jbml0aWFsaXpl KCBQYVV0aWxIb3N0QXBpUmVwcmVzZW50YXRpb24gKipob3N0QXBpLCBQYUhvc3RBcGlJbmRleCBp bmRleCApOwotIC8qIEFkZGVkIGZvciBJUklYLCBQaWV0ZXIsIG9jdCAyLCAyMDAzOiAqLwotIFBh RXJyb3IgUGFTR0lfSW5pdGlhbGl6ZSggUGFVdGlsSG9zdEFwaVJlcHJlc2VudGF0aW9uICoqaG9z dEFwaSwgUGFIb3N0QXBpSW5kZXggaW5kZXggKTsKLUBAIC01Nyw2ICs1OCwxMCBAQCBQYUVycm9y IFBhU2tlbGV0b25fSW5pdGlhbGl6ZSggUGFVdGlsSG9zdEFwaVJlcHJlc2VudGF0aW9uICoqaG9z dEFwaSwgUGFIb3N0QXBpSQotIAotIFBhVXRpbEhvc3RBcGlJbml0aWFsaXplciAqcGFIb3N0QXBp SW5pdGlhbGl6ZXJzW10gPQotICAgICB7Ci0rI2lmZGVmIFBBX1VTRV9TTkRJTwotKwkgICAgUGFT bmRpb19Jbml0aWFsaXplLAotKyNlbmRpZgotKwotICNpZmRlZiBfX2xpbnV4X18KLSAKLSAjaWYg UEFfVVNFX0FMU0EKLS0tIAotMi4yNy4wCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcG9ydGF1ZGlv L3RlbXBsYXRlIGIvc3JjcGtncy9wb3J0YXVkaW8vdGVtcGxhdGUKaW5kZXggNzAzMmY4ZGE5ZDQx Li5iZGFhYjYwMzA0NTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcG9ydGF1ZGlvL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvcG9ydGF1ZGlvL3RlbXBsYXRlCkBAIC0xLDggKzEsOCBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAncG9ydGF1ZGlvJwogcGtnbmFtZT1wb3J0YXVkaW8KLXZlcnNpb249MTkwNjAw LjIwMTYxMDMwCi1yZXZpc2lvbj02Ci13cmtzcmM9cG9ydGF1ZGlvCityZXZlcnRzPSIxOTA2MDAu MjAxNjEwMzBfMSAxOTA2MDAuMjAxNjEwMzBfMiAxOTA2MDAuMjAxNjEwMzBfMyAxOTA2MDAuMjAx NjEwMzBfNCAxOTA2MDAuMjAxNjEwMzBfNSAxOTA2MDAuMjAxNjEwMzBfNiIKK3ZlcnNpb249MTku Ny4wCityZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJn cz0iLS1lbmFibGUtY3h4IC0td2l0aC1qYWNrICQodm9wdF9lbmFibGUgc25kaW8pIgogaG9zdG1h a2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIHBrZy1jb25maWciCkBAIC0xMSw4ICsxMSw4IEBA IHNob3J0X2Rlc2M9IlBvcnRhYmxlIGNyb3NzLXBsYXRmb3JtIGF1ZGlvIEkvTyBsaWJyYXJ5Igog bWFpbnRhaW5lcj0iw4lyaWNvIE5vZ3VlaXJhIDxlcmljb25yQGRpc3Jvb3Qub3JnPiIKIGxpY2Vu c2U9Ik1JVCIKIGhvbWVwYWdlPSJodHRwOi8vd3d3LnBvcnRhdWRpby5jb20iCi1kaXN0ZmlsZXM9 Imh0dHA6Ly93d3cuJHtwa2duYW1lfS5jb20vYXJjaGl2ZXMvcGFfc3RhYmxlX3Yke3ZlcnNpb24l Lip9XyR7dmVyc2lvbiMqLn0udGd6IgotY2hlY2tzdW09ZjVhMjFkN2RjZDZlZTg0Mzk3NDQ2ZmEx ZmExYTA2NzViYjJlOGE0YTZkY2ViNDMwNWE4NDA0Njk4ZDhkMTUxMworZGlzdGZpbGVzPSJodHRw czovL2dpdGh1Yi5jb20vUG9ydEF1ZGlvL3BvcnRhdWRpby9hcmNoaXZlL3Yke3ZlcnNpb259LnRh ci5neiIKK2NoZWNrc3VtPTVhZjI5YmE1OGJiZGJiN2JiY2VmYWFlY2M3N2VjOGZjNDEzZjBkYjZm NGM0ZTI4NmM0MGMzZTFiODMxNzRmYTAKIGRpc2FibGVfcGFyYWxsZWxfYnVpbGQ9eWVzCiAKICMg c25kaW8gZGlzYWJsZWQgYnkgZGVmYXVsdDogbm9uLXVwc3RyZWFtIHBhdGNoCg== --===============4272499695349482556==--