From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7]) by metis.ext.pengutronix.de with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1bzKoM-0004Cq-Jm for ptxdist@pengutronix.de; Wed, 26 Oct 2016 11:47:54 +0200 Received: from jbe by dude.hi.pengutronix.de with local (Exim 4.87) (envelope-from ) id 1bzKoM-0004rh-CP for ptxdist@pengutronix.de; Wed, 26 Oct 2016 11:47:54 +0200 From: Juergen Borleis Date: Wed, 26 Oct 2016 11:47:49 +0200 Message-Id: <20161026094749.11560-2-jbe@pengutronix.de> In-Reply-To: <20161026094749.11560-1-jbe@pengutronix.de> References: <20161026094749.11560-1-jbe@pengutronix.de> Subject: [ptxdist] [PATCH] valgrind: version bump to 3.12.0 List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ptxdist-bounces@pengutronix.de Sender: "ptxdist" To: ptxdist@pengutronix.de RHVlIHRvIHVzaW5nIHRoaXMgbmV3IHJlbGVhc2Ugd2UgY2FuIGRyb3AgdHdvIGJhY2twb3J0ZWQg cGF0Y2hlcy4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gQm9ybGVpcyA8amJlQHBlbmd1dHJvbml4 LmRlPgotLS0KIC4uLlNldHRpbmctUkxJTUlUX0RBVEEtdG8temVyby1icmVha3Mtd2l0aC1sLnBh dGNoIHwgIDE0MSAtLQogLi4uLzAwMDQtYWRkLWNvbXByZXNzZWQtZGVidWdpbmZvLXN1cHBvcnQu cGF0Y2ggICAgfCAyMDI0IC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4uYWMtYWxsb3ctYWxsLWFy bS1kb24tdC1yZXN0cmljdC10by1hcm12Ny5wYXRjaCB8ICAgIDIgKy0KIC4uLi1rZXJuZWwtdmVy c2lvbi1hLWF1dG9jb25mLWNhY2hlLXZhcmlhYmxlLnBhdGNoIHwgICAgMiArLQogLi4uL2F1dG9n ZW4uc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAwCiAuLi4ve3Zh bGdyaW5kLTMuMTEuMCA9PiB2YWxncmluZC0zLjEyLjB9L3NlcmllcyAgICB8ICAgIDQgKy0KIHJ1 bGVzL3ZhbGdyaW5kLm1ha2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCAr LQogNyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIxNzIgZGVsZXRpb25zKC0pCiBk ZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy92YWxncmluZC0zLjExLjAvMDAwMy1CdWctMzU3ODMz LVNldHRpbmctUkxJTUlUX0RBVEEtdG8temVyby1icmVha3Mtd2l0aC1sLnBhdGNoCiBkZWxldGUg bW9kZSAxMDA2NDQgcGF0Y2hlcy92YWxncmluZC0zLjExLjAvMDAwNC1hZGQtY29tcHJlc3NlZC1k ZWJ1Z2luZm8tc3VwcG9ydC5wYXRjaAogcmVuYW1lIHBhdGNoZXMve3ZhbGdyaW5kLTMuMTEuMCA9 PiB2YWxncmluZC0zLjEyLjB9LzAwMDEtY29uZmlndXJlLmFjLWFsbG93LWFsbC1hcm0tZG9uLXQt cmVzdHJpY3QtdG8tYXJtdjcucGF0Y2ggKDkzJSkKIHJlbmFtZSBwYXRjaGVzL3t2YWxncmluZC0z LjExLjAgPT4gdmFsZ3JpbmQtMy4xMi4wfS8wMDAyLW1ha2Uta2VybmVsLXZlcnNpb24tYS1hdXRv Y29uZi1jYWNoZS12YXJpYWJsZS5wYXRjaCAoOTYlKQogcmVuYW1lIHBhdGNoZXMve3ZhbGdyaW5k LTMuMTEuMCA9PiB2YWxncmluZC0zLjEyLjB9L2F1dG9nZW4uc2ggKDEwMCUpCiByZW5hbWUgcGF0 Y2hlcy97dmFsZ3JpbmQtMy4xMS4wID0+IHZhbGdyaW5kLTMuMTIuMH0vc2VyaWVzICg1MSUpCgpk aWZmIC0tZ2l0IGEvcGF0Y2hlcy92YWxncmluZC0zLjExLjAvMDAwMy1CdWctMzU3ODMzLVNldHRp bmctUkxJTUlUX0RBVEEtdG8temVyby1icmVha3Mtd2l0aC1sLnBhdGNoIGIvcGF0Y2hlcy92YWxn cmluZC0zLjExLjAvMDAwMy1CdWctMzU3ODMzLVNldHRpbmctUkxJTUlUX0RBVEEtdG8temVyby1i cmVha3Mtd2l0aC1sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDI0NmY2 Li4wMDAwMDAwCi0tLSBhL3BhdGNoZXMvdmFsZ3JpbmQtMy4xMS4wLzAwMDMtQnVnLTM1NzgzMy1T ZXR0aW5nLVJMSU1JVF9EQVRBLXRvLXplcm8tYnJlYWtzLXdpdGgtbC5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDE0MSArMCwwIEBACi1Gcm9tOiBtancgPG1qd0BhNTAxOTczNS00MGU5LTAzMTAt ODYzYy05MWFlN2I5ZDFjZjk+Ci1EYXRlOiBUaHUsIDIxIEphbiAyMDE2IDExOjM3OjQzICswMDAw Ci1TdWJqZWN0OiBbUEFUQ0hdIEJ1ZyAjMzU3ODMzIFNldHRpbmcgUkxJTUlUX0RBVEEgdG8gemVy byBicmVha3Mgd2l0aCBsaW51eAotIDQuNSsKLQotV2UgdXNlZCB0byBzZXQgdGhlIHByb2Nlc3Mg ZGF0YXNpemUgcmxpbWl0IHRvIHplcm8gdG8gcHJldmVudAotYW55IGludGVybmFsIHVzZSBvZiBi cmsoKSBmcm9tIGhhdmluZyBhbnkgZWZmZWN0LiBCdXQgbGF0ZXIKLWxpbnV4IGtlcm5lbHMgcmVk ZWZpbmUgUkxJTUlUX0RBVEEgYXMgdGhlIHNpemUgb2YgYW55IGRhdGEKLWFyZWFzLCBpbmNsdWRp bmcgc29tZSBkeW5hbWljIG1tYXAgbWVtb3J5IGFsbG9jYXRpb25zLgotCi1TZWUgYnVnICMzNTc4 MzMgZm9yIHRoZSBjb21taXQgdGhhdCB3ZW50IGludG8gbGludXggNC41Ci1jaGFuZ2luZyB0aGUg ZGVmaW5pdGlvbiBvZiBSTElNSVRfREFUQS4gU28gZG9uJ3QgbWVzcyB3aXRoCi1STElNSVRfREFU QSBhbnltb3JlLiBKdXN0IHJlbWVtYmVyIGl0IGZvciB1c2UgaW4gdGhlIHN5c2NhbGwKLXdyYXBw ZXJzLgotCi1UaGlzIGFsc28gY2xlYW5zIHVwIHNvbWUgaGFja3MgYXJvdW5kIHRoZSBleGVjdiBh bmQgc3Bhd24gd3JhcHBlcnMuCi0KLWdpdC1zdm4taWQ6IHN2bjovL3N2bi52YWxncmluZC5vcmcv dmFsZ3JpbmQvdHJ1bmtAMTU3NjYgYTUwMTk3MzUtNDBlOS0wMzEwLTg2M2MtOTFhZTdiOWQxY2Y5 Ci0tLS0KLSBjb3JlZ3JpbmQvbV9saWJjcHJvYy5jICAgICAgICAgICAgICAgIHwgMTEgLS0tLS0t LS0tLS0KLSBjb3JlZ3JpbmQvbV9tYWluLmMgICAgICAgICAgICAgICAgICAgIHwgMTUgKysrKysr KystLS0tLS0tCi0gY29yZWdyaW5kL21fc3lzd3JhcC9zeXN3cmFwLWdlbmVyaWMuYyB8ICAzIC0t LQotIGNvcmVncmluZC9tX3N5c3dyYXAvc3lzd3JhcC1zb2xhcmlzLmMgfCAxMiAtLS0tLS0tLS0t LS0KLSA0IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCi0K LWRpZmYgLS1naXQgYS9jb3JlZ3JpbmQvbV9saWJjcHJvYy5jIGIvY29yZWdyaW5kL21fbGliY3By b2MuYwotaW5kZXggZjMxNGI1NWVlYTg4Li5hMzBmN2RjOGYwYzUgMTAwNjQ0Ci0tLS0gYS9jb3Jl Z3JpbmQvbV9saWJjcHJvYy5jCi0rKysgYi9jb3JlZ3JpbmQvbV9saWJjcHJvYy5jCi1AQCAtNDUw LDkgKzQ1MCw2IEBAIHZvaWQgVkdfKGV4ZWN2KSAoIGNvbnN0IEhDaGFyKiBmaWxlbmFtZSwgY29u c3QgSENoYXIqKiBhcmd2ICkKLSAgICBIQ2hhcioqIGVudnA7Ci0gICAgU3lzUmVzIHJlczsKLSAK LS0gICAvKiByZXN0b3JlIHRoZSBEQVRBIHJsaW1pdCBmb3IgdGhlIGNoaWxkICovCi0tICAgVkdf KHNldHJsaW1pdCkoVktJX1JMSU1JVF9EQVRBLCAmVkdfKGNsaWVudF9ybGltaXRfZGF0YSkpOwot LQotICAgIGVudnAgPSBWR18oZW52X2Nsb25lKShWR18oY2xpZW50X2VudnApKTsKLSAgICBWR18o ZW52X3JlbW92ZV92YWxncmluZF9lbnZfc3R1ZmYpKCBlbnZwLCBUcnVlIC8qcm9fc3RyaW5ncyov LCBOVUxMICk7Ci0gCi1AQCAtNTExLDE3ICs1MDgsOSBAQCBJbnQgVkdfKHNwYXduKSAoIGNvbnN0 IEhDaGFyICpmaWxlbmFtZSwgY29uc3QgSENoYXIgKiphcmd2ICkKLSAjICB1bmRlZiBDT1BZX0NI QVJfVE9fQVJHRU5WCi0gIyAgdW5kZWYgQ09QWV9TVFJJTkdfVE9BUkdFTlYKLSAKLS0gICAvKiBI QUNLOiBUZW1wb3JhcmlseSByZXN0b3JlIHRoZSBEQVRBIHJsaW1pdCBmb3Igc3Bhd25lZCBjaGls ZC4gKi8KLS0gICBWR18oc2V0cmxpbWl0KShWS0lfUkxJTUlUX0RBVEEsICZWR18oY2xpZW50X3Js aW1pdF9kYXRhKSk7Ci0tCi0gICAgU3lzUmVzIHJlcyA9IFZHXyhkb19zeXNjYWxsNSkoX19OUl9z cGF3biwgKFVXb3JkKSBmaWxlbmFtZSwgKFVXb3JkKSBOVUxMLCAwLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChVV29yZCkgYXJnZW52LCBhcmdlbnZfc2l6ZSk7Ci0gCi0tICAg LyogUmVzdG9yZSBEQVRBIHJsaW1pdCBiYWNrIHRvIGl0cyBwcmV2aW91cyB2YWx1ZSBzZXQgaW4g bV9tYWluLmMuICovCi0tICAgc3RydWN0IHZraV9ybGltaXQgemVybyA9IHsgMCwgMCB9OwotLSAg IHplcm8ucmxpbV9tYXggPSBWR18oY2xpZW50X3JsaW1pdF9kYXRhKS5ybGltX21heDsKLS0gICBW R18oc2V0cmxpbWl0KShWS0lfUkxJTUlUX0RBVEEsICZ6ZXJvKTsKLS0KLSAgICBWR18oZnJlZSko YXJnZW52KTsKLSAgICBmb3IgKEhDaGFyICoqcCA9IGVudnA7ICpwICE9IE5VTEw7IHArKykgewot ICAgICAgIFZHXyhmcmVlKSgqcCk7Ci1kaWZmIC0tZ2l0IGEvY29yZWdyaW5kL21fbWFpbi5jIGIv Y29yZWdyaW5kL21fbWFpbi5jCi1pbmRleCAxODIxYzk0MTJmYTcuLjliNjU5YWU1NjRiNSAxMDA2 NDQKLS0tLSBhL2NvcmVncmluZC9tX21haW4uYwotKysrIGIvY29yZWdyaW5kL21fbWFpbi5jCi1A QCAtMTYyNyw3ICsxNjI3LDYgQEAgSW50IHZhbGdyaW5kX21haW4gKCBJbnQgYXJnYywgSENoYXIg Kiphcmd2LCBIQ2hhciAqKmVudnAgKQotICAgIEJvb2wgICAgbG9nZ2luZ190b19mZCAgICAgID0g RmFsc2U7Ci0gICAgY29uc3QgSENoYXIqIHhtbF9mbmFtZV91bmV4cGFuZGVkID0gTlVMTDsKLSAg ICBJbnQgICAgIGxvZ2xldmVsLCBpOwotLSAgIHN0cnVjdCB2a2lfcmxpbWl0IHplcm8gPSB7IDAs IDAgfTsKLSAgICBYQXJyYXkqIGFkZHIyZGloYW5kbGUgPSBOVUxMOwotIAotICAgIC8vPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1A QCAtMTgwMCwxMyArMTc5OSwxNSBAQCBJbnQgdmFsZ3JpbmRfbWFpbiAoIEludCBhcmdjLCBIQ2hh ciAqKmFyZ3YsIEhDaGFyICoqZW52cCApCi0gICAgVkdfKGRlYnVnTG9nKSgxLCAibWFpbiIsICIu Li4gJXNcbiIsIFZHXyhuYW1lX29mX2xhdW5jaGVyKSk7Ci0gCi0gICAgLy8tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgIC8v IEdldCB0aGUgY3VycmVudCBwcm9jZXNzIGRhdGFzaXplIHJsaW1pdCwgYW5kIHNldCBpdCB0byB6 ZXJvLgotLSAgIC8vIFRoaXMgcHJldmVudHMgYW55IGludGVybmFsIHVzZXMgb2YgYnJrKCkgZnJv bSBoYXZpbmcgYW55IGVmZmVjdC4KLS0gICAvLyBXZSByZW1lbWJlciB0aGUgb2xkIHZhbHVlIHNv IHdlIGNhbiByZXN0b3JlIGl0IG9uIGV4ZWMsIHNvIHRoYXQKLS0gICAvLyBjaGlsZCBwcm9jZXNz ZXMgd2lsbCBoYXZlIGEgcmVhc29uYWJsZSBicmsgdmFsdWUuCi0rICAgLy8gV2UgdXNlZCB0byBz ZXQgdGhlIHByb2Nlc3MgZGF0YXNpemUgcmxpbWl0IHRvIHplcm8gdG8gcHJldmVudAotKyAgIC8v IGFueSBpbnRlcm5hbCB1c2Ugb2YgYnJrKCkgZnJvbSBoYXZpbmcgYW55IGVmZmVjdC4gQnV0IGxh dGVyCi0rICAgLy8gbGludXgga2VybmVscyByZWRlZmluZSBSTElNSVRfREFUQSBhcyB0aGUgc2l6 ZSBvZiBhbnkgZGF0YQotKyAgIC8vIGFyZWFzLCBpbmNsdWRpbmcgc29tZSBkeW5hbWljIG1tYXAg bWVtb3J5IGFsbG9jYXRpb25zLgotKyAgIC8vIFNlZSBidWcgIzM1NzgzMyBmb3IgdGhlIGNvbW1p dCB0aGF0IHdlbnQgaW50byBsaW51eCA0LjUKLSsgICAvLyBjaGFuZ2luZyB0aGUgZGVmaW5pdGlv biBvZiBSTElNSVRfREFUQS4gU28gZG9uJ3QgbWVzcyB3aXRoCi0rICAgLy8gUkxJTUlUX0RBVEEg aGVyZSBub3cgYW55bW9yZS4gSnVzdCByZW1lbWJlciBpdCBmb3IgdXNlIGluCi0rICAgLy8gdGhl IHN5c2NhbGwgd3JhcHBlcnMuCi0gICAgVkdfKGdldHJsaW1pdCkoVktJX1JMSU1JVF9EQVRBLCAm VkdfKGNsaWVudF9ybGltaXRfZGF0YSkpOwotLSAgIHplcm8ucmxpbV9tYXggPSBWR18oY2xpZW50 X3JsaW1pdF9kYXRhKS5ybGltX21heDsKLS0gICBWR18oc2V0cmxpbWl0KShWS0lfUkxJTUlUX0RB VEEsICZ6ZXJvKTsKLSAKLSAgICAvLyBHZXQgdGhlIGN1cnJlbnQgcHJvY2VzcyBzdGFjayBybGlt aXQuCi0gICAgVkdfKGdldHJsaW1pdCkoVktJX1JMSU1JVF9TVEFDSywgJlZHXyhjbGllbnRfcmxp bWl0X3N0YWNrKSk7Ci1kaWZmIC0tZ2l0IGEvY29yZWdyaW5kL21fc3lzd3JhcC9zeXN3cmFwLWdl bmVyaWMuYyBiL2NvcmVncmluZC9tX3N5c3dyYXAvc3lzd3JhcC1nZW5lcmljLmMKLWluZGV4IGFh NjBkNjc1MjE4ZS4uMDYxYzFlMTQzNmI4IDEwMDY0NAotLS0tIGEvY29yZWdyaW5kL21fc3lzd3Jh cC9zeXN3cmFwLWdlbmVyaWMuYwotKysrIGIvY29yZWdyaW5kL21fc3lzd3JhcC9zeXN3cmFwLWdl bmVyaWMuYwotQEAgLTMwMTQsOSArMzAxNCw2IEBAIFBSRShzeXNfZXhlY3ZlKQotICAgICAgIHZn X2Fzc2VydChqID09IHRvdF9hcmdzKzEpOwotICAgIH0KLSAKLS0gICAvKiByZXN0b3JlIHRoZSBE QVRBIHJsaW1pdCBmb3IgdGhlIGNoaWxkICovCi0tICAgVkdfKHNldHJsaW1pdCkoVktJX1JMSU1J VF9EQVRBLCAmVkdfKGNsaWVudF9ybGltaXRfZGF0YSkpOwotLQotICAgIC8qCi0gICAgICAgU2V0 IHRoZSBzaWduYWwgc3RhdGUgdXAgZm9yIGV4ZWMuCi0gCi1kaWZmIC0tZ2l0IGEvY29yZWdyaW5k L21fc3lzd3JhcC9zeXN3cmFwLXNvbGFyaXMuYyBiL2NvcmVncmluZC9tX3N5c3dyYXAvc3lzd3Jh cC1zb2xhcmlzLmMKLWluZGV4IDI1MDI5ZDRkMWQyMC4uNzZkZjQ2OTJkMWIzIDEwMDY0NAotLS0t IGEvY29yZWdyaW5kL21fc3lzd3JhcC9zeXN3cmFwLXNvbGFyaXMuYwotKysrIGIvY29yZWdyaW5k L21fc3lzd3JhcC9zeXN3cmFwLXNvbGFyaXMuYwotQEAgLTE1MzksMjEgKzE1MzksMTIgQEAgUFJF KHN5c19zcGF3bikKLSAjdW5kZWYgQ09QWV9DSEFSX1RPX0FSR0VOVgotICN1bmRlZiBDT1BZX1NU UklOR19UT0FSR0VOVgotIAotLSAgIC8qIEhBQ0s6IFRlbXBvcmFyaWx5IHJlc3RvcmUgdGhlIERB VEEgcmxpbWl0IGZvciBzcGF3bmVkIGNoaWxkLgotLSAgICAgIFRoaXMgaXMgYSB0ZXJyaWJsZSBo YWNrIHRvIHByb3ZpZGUgc2Vuc2libGUgYnJrIGxpbWl0IGZvciBjaGlsZC4gKi8KLS0gICBWR18o c2V0cmxpbWl0KShWS0lfUkxJTUlUX0RBVEEsICZWR18oY2xpZW50X3JsaW1pdF9kYXRhKSk7Ci0t Ci0gICAgLyogQWN0dWFsIHNwYXduKCkgc3lzY2FsbC4gKi8KLSAgICBTeXNSZXMgcmVzID0gVkdf KGRvX3N5c2NhbGw1KShfX05SX3NwYXduLCAoVVdvcmQpIHBhdGgsIChVV29yZCkgYXR0cnMsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnNfc2l6ZSwgKFVXb3JkKSBhcmdl bnYsIGFyZ2Vudl9zaXplKTsKLSAgICBTRVRfU1RBVFVTX2Zyb21fU3lzUmVzKHJlcyk7Ci0gICAg VkdfKGZyZWUpKGFyZ2Vudik7Ci0gCi0tICAgLyogUmVzdG9yZSBEQVRBIHJsaW1pdCBiYWNrIHRv IGl0cyBwcmV2aW91cyB2YWx1ZSBzZXQgaW4gbV9tYWluLmMuICovCi0tICAgc3RydWN0IHZraV9y bGltaXQgemVybyA9IHsgMCwgMCB9OwotLSAgIHplcm8ucmxpbV9tYXggPSBWR18oY2xpZW50X3Js aW1pdF9kYXRhKS5ybGltX21heDsKLS0gICBWR18oc2V0cmxpbWl0KShWS0lfUkxJTUlUX0RBVEEs ICZ6ZXJvKTsKLS0KLSAgICBpZiAoU1VDQ0VTUykgewotICAgICAgIFBSSU5UKCIgICBzcGF3bjog cHJvY2VzcyAlZCBzcGF3bmVkIGNoaWxkICVsZFxuIiwgVkdfKGdldHBpZCkoKSwgUkVTKTsKLSAg ICB9Ci1AQCAtMzYxOSw5ICszNjEwLDYgQEAgUFJFKHN5c19leGVjdmUpCi0gICAgICAgVkdfKHNp Z3Byb2NtYXNrKShWS0lfU0lHX1NFVE1BU0ssICZ0c3QtPnNpZ19tYXNrLCBOVUxMKTsKLSAgICB9 Ci0gCi0tICAgLyogUmVzdG9yZSB0aGUgREFUQSBybGltaXQgZm9yIHRoZSBjaGlsZC4gKi8KLS0g ICBWR18oc2V0cmxpbWl0KShWS0lfUkxJTUlUX0RBVEEsICZWR18oY2xpZW50X3JsaW1pdF9kYXRh KSk7Ci0tCi0gICAgLyogRGVidWctb25seSBwcmludGluZy4gKi8KLSAgICBpZiAoMCkgewotICAg ICAgIEhDaGFyICoqY3BwOwpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy92YWxncmluZC0zLjExLjAvMDAw NC1hZGQtY29tcHJlc3NlZC1kZWJ1Z2luZm8tc3VwcG9ydC5wYXRjaCBiL3BhdGNoZXMvdmFsZ3Jp bmQtMy4xMS4wLzAwMDQtYWRkLWNvbXByZXNzZWQtZGVidWdpbmZvLXN1cHBvcnQucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYmU5YjcuLjAwMDAwMDAKLS0tIGEvcGF0Y2hl cy92YWxncmluZC0zLjExLjAvMDAwNC1hZGQtY29tcHJlc3NlZC1kZWJ1Z2luZm8tc3VwcG9ydC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwMjQgKzAsMCBAQAotRnJvbTogQWxla3NhbmRhciBS aWthbG8gPGFsZWtzYW5kYXIucmlrYWxvQGltZ3RlYy5jb20+Ci1EYXRlOiBUdWUsIDE4IE9jdCAy MDE2IDE1OjI1OjM2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFkZCBjb21wcmVzc2VkIGRlYnVn aW5mbyBzdXBwb3J0Ci0KLVZhbGdyaW5kIGlzIGFibGUgdG8gcmVhZCBjb21wcmVzc2VkIGRlYnVn aW5mbyBzZWN0aW9ucyBpbiB0d28gZm9ybWF0czoKLSAgLSB6bGliIEVMRiBnQUJJIGZvcm1hdCB3 aXRoIFNIRl9DT01QUkVTU0VEIGZsYWcgKGdjYyBvcHRpb24gLWd6PXpsaWIpCi0gIC0gemxpYiBH TlUgZm9ybWF0IHdpdGggLnpkZWJ1ZyBzZWN0aW9ucyAoZ2NjIG9wdGlvbiAtZ3o9emxpYi1nbnUp Ci0KLVRoaXMgaXMgYSBiYWNrcG9ydCBmcm9tIHRoZWlyIFNWTiByZXZpc2lvbiByMTU4NjggKDIw MTYtMDQtMjMpIGFuZCBjYW4gYmUKLXJlbW92ZWQgd2l0aCB0aGUgbmV4dCByZWxlYXNlLgotLS0t Ci0gTkVXUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArCi0gY29uZmlndXJl LmFjICAgICAgICAgICAgICAgICAgICAgICB8ICA0NyArKysKLSBjb3JlZ3JpbmQvTWFrZWZpbGUu YW0gICAgICAgICAgICAgIHwgICAxICsKLSBjb3JlZ3JpbmQvbV9kZWJ1Z2luZm8vaW1hZ2UuYyAg ICAgIHwgMTc5ICsrKysrKysrLS0tCi0gY29yZWdyaW5kL21fZGVidWdpbmZvL3ByaXZfaW1hZ2Uu aCB8ICAxMSArLQotIGNvcmVncmluZC9tX2RlYnVnaW5mby9yZWFkZWxmLmMgICAgfCAzNzkgKysr KysrKysrKysrKysrLS0tLS0tLS0KLSBjb3JlZ3JpbmQvbV9kZWJ1Z2luZm8vdGluZmwuYyAgICAg IHwgNTk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSA3IGZpbGVzIGNo YW5nZWQsIDEwNjUgaW5zZXJ0aW9ucygrKSwgMTUzIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2Rl IDEwMDY0NCBjb3JlZ3JpbmQvbV9kZWJ1Z2luZm8vdGluZmwuYwotCi1kaWZmIC0tZ2l0IGEvTkVX UyBiL05FV1MKLWluZGV4IDc5ZjMxNGYwZTE2Ni4uODI2NmI1MWZlMmFiIDEwMDY0NAotLS0tIGEv TkVXUwotKysrIGIvTkVXUwotQEAgLTM2LDYgKzM2LDEwIEBAIFg4Ni9NYWNPU1ggMTAuMTEsIEFN RDY0L01hY09TWCAxMC4xMSBhbmQgVElMRUdYL0xpbnV4LgotICogSW50ZWwgQVZYMiBzdXBwb3J0 IGlzIG1vcmUgY29tcGxldGUgKDY0IGJpdCB0YXJnZXRzIG9ubHkpLiAgT24gQVZYMgotICAgY2Fw YWJsZSBob3N0cywgdGhlIHNpbXVsYXRlZCBDUFVJRCB3aWxsIG5vdyBpbmRpY2F0ZSBBVlgyIHN1 cHBvcnQuCi0gCi0rKiBWYWxncmluZCBpcyBhYmxlIHRvIHJlYWQgY29tcHJlc3NlZCBkZWJ1Z2lu Zm8gc2VjdGlvbnMgaW4gdHdvIGZvcm1hdHM6Ci0rICAtIHpsaWIgRUxGIGdBQkkgZm9ybWF0IHdp dGggU0hGX0NPTVBSRVNTRUQgZmxhZyAoZ2NjIG9wdGlvbiAtZ3o9emxpYikKLSsgIC0gemxpYiBH TlUgZm9ybWF0IHdpdGggLnpkZWJ1ZyBzZWN0aW9ucyAoZ2NjIG9wdGlvbiAtZ3o9emxpYi1nbnUp Ci0rCi0gKiA9PT09PT09PT09PT09PT09PT09PSBUT09MIENIQU5HRVMgPT09PT09PT09PT09PT09 PT09PT0KLSAKLSAqIE1lbWNoZWNrOgotQEAgLTE5Nyw2ICsyMDEsNyBAQCB3aGVyZSBYWFhYWFgg aXMgdGhlIGJ1ZyBudW1iZXIgYXMgbGlzdGVkIGJlbG93LgotIDI2OTM2MCAgczM5MHg6IEZpeCBh ZGRyZXNzaW5nIG1vZGUgc2VsZWN0aW9uIGZvciBjb21wYXJlLWFuZC1zd2FwCi0gMzAyNjMwICBN ZW1jaGVjazogQXNzZXJ0aW9uIGZhaWxlZDogJ3NpemVvZihVV29yZCkgPT0gc2l6ZW9mKFVJbnQp JwotICAgICAgICAgPT0gMzI2Nzk3Ci0rMzAzODc3ICB2YWxncmluZCBkb2Vzbid0IHN1cHBvcnQg Y29tcHJlc3NlZCBkZWJ1Z2luZm8gc2VjdGlvbnMKLSAzMTI5ODkgIGlvY3RsIGhhbmRsaW5nIG5l ZWRzIHRvIGRvIFBPU1QgaGFuZGxpbmcgb24gZ2VuZXJpYyBpb2N0bHMgYW5kIFsuLl0KLSAzMTky NzQgIEZpeCB1bmhhbmRsZWQgc3lzY2FsbDogdW5peDo0MTAgKHNpZ3N1c3BlbmRfbm9jYW5jZWwp IG9uIE9TIFgKLSAzMjQxODEgIG1tYXAgZG9lcyBub3QgaGFuZGxlIE1BUF8zMkJJVCAoaGFuZGxl IGl0IG5vdywgcmF0aGVyIHRoYW4gZmFpbCBpdCkKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMg Yi9jb25maWd1cmUuYWMKLWluZGV4IDkzMTE3MThiYTE5YS4uNmZmYmMwYWE1ZjlmIDEwMDY0NAot LS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMjI5LDYgKzEyMjks MTEgQEAgQUNfTVNHX1JFU1VMVChbbm9dKQotIF0pCi0gCi0gCi0rIyBDaGVjayBmb3IgRUxGMzIv NjRfQ0hEUgotKwotK0FDX0NIRUNLX1RZUEVTKFtFbGYzMl9DaGRyLCBFbGY2NF9DaGRyXSwgW10s IFtdLCBbWyNpbmNsdWRlIDxlbGYuaD5dXSkKLSsKLSsKLSAjIENoZWNrIGZvciBQVEhSRUFEX1JX TE9DS19UCi0gCi0gQUNfTVNHX0NIRUNLSU5HKFtmb3IgcHRocmVhZF9yd2xvY2tfdF0pCi1AQCAt MjEwMyw2ICsyMTA4LDQ1IEBAIEFNX0NPTkRJVElPTkFMKERXQVJGNCwgdGVzdCB4JGFjX2hhdmVf ZHdhcmY0ID0geHllcykKLSBDRkxBR1M9JHNhZmVfQ0ZMQUdTCi0gCi0gCi0rIyBkb2VzIHRoaXMg Y29tcGlsZXIgc3VwcG9ydCAtZyAtZ3o9emxpYiA/Ci0rCi0rQUNfTVNHX0NIRUNLSU5HKFtpZiBn Y2MgYWNjZXB0cyAtZyAtZ3o9emxpYl0pCi0rCi0rc2FmZV9DRkxBR1M9JENGTEFHUwotK0NGTEFH Uz0iLWcgLWd6PXpsaWIiCi0rCi0rQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShb WyBdXSwgW1sKLSsgIHJldHVybiAwOwotK11dKV0sIFsKLSthY19oYXZlX2d6X3psaWI9eWVzCi0r QUNfTVNHX1JFU1VMVChbeWVzXSkKLStdLCBbCi0rYWNfaGF2ZV9nel96bGliPW5vCi0rQUNfTVNH X1JFU1VMVChbbm9dKQotK10pCi0rQU1fQ09ORElUSU9OQUwoR1pfWkxJQiwgdGVzdCB4JGFjX2hh dmVfZ3pfemxpYiA9IHh5ZXMpCi0rQ0ZMQUdTPSRzYWZlX0NGTEFHUwotKwotKwotKyMgZG9lcyB0 aGlzIGNvbXBpbGVyIHN1cHBvcnQgLWcgLWd6PXpsaWItZ251ID8KLSsKLStBQ19NU0dfQ0hFQ0tJ TkcoW2lmIGdjYyBhY2NlcHRzIC1nIC1nej16bGliLWdudV0pCi0rCi0rc2FmZV9DRkxBR1M9JENG TEFHUwotK0NGTEFHUz0iLWcgLWd6PXpsaWItZ251IgotKwotK0FDX0NPTVBJTEVfSUZFTFNFKFtB Q19MQU5HX1BST0dSQU0oW1sgXV0sIFtbCi0rICByZXR1cm4gMDsKLStdXSldLCBbCi0rYWNfaGF2 ZV9nel96bGliX2dudT15ZXMKLStBQ19NU0dfUkVTVUxUKFt5ZXNdKQotK10sIFsKLSthY19oYXZl X2d6X3psaWJfZ251PW5vCi0rQUNfTVNHX1JFU1VMVChbbm9dKQotK10pCi0rQU1fQ09ORElUSU9O QUwoR1pfWkxJQl9HTlUsIHRlc3QgeCRhY19oYXZlX2d6X3psaWJfZ251ID0geHllcykKLStDRkxB R1M9JHNhZmVfQ0ZMQUdTCi0rCi0gIyBkb2VzIHRoaXMgY29tcGlsZXIgc3VwcG9ydCBuZXN0ZWQg ZnVuY3Rpb25zID8KLSAKLSBBQ19NU0dfQ0hFQ0tJTkcoW2lmIGdjYyBhY2NlcHRzIG5lc3RlZCBm dW5jdGlvbnNdKQotQEAgLTM0MTMsNiArMzQ1Nyw5IEBAIEFDX01TR19SRVNVTFQoW25vXSkKLSBd KQotIEFNX0NPTkRJVElPTkFMKFNPTEFSSVNfUkVTRVJWRV9TWVNTVEFUX1pPTkVfQUREUiwgdGVz dCB4JHNvbGFyaXNfcmVzZXJ2ZV9zeXNzdGF0X3pvbmVfYWRkciA9IHh5ZXMpCi0gCi0rQUNfQ0hF Q0tfVFlQRVMoW0VsZjMyX0NoZHIsIEVsZjY0X0NoZHJdLCBbXSwgW10sIFtbI2luY2x1ZGUgPGVs Zi5oPl1dKQotKwotKwotIGVsc2UKLSBBTV9DT05ESVRJT05BTChTT0xBUklTX1NVTl9TVFVESU9f QVMsIGZhbHNlKQotIEFNX0NPTkRJVElPTkFMKFNPTEFSSVNfWFBHX1NZTUJPTFNfUFJFU0VOVCwg ZmFsc2UpCi1kaWZmIC0tZ2l0IGEvY29yZWdyaW5kL01ha2VmaWxlLmFtIGIvY29yZWdyaW5kL01h a2VmaWxlLmFtCi1pbmRleCA3ZjI1ZjQ4OWRmNjEuLjE5OWRlOWJiZmU1MCAxMDA2NDQKLS0tLSBh L2NvcmVncmluZC9NYWtlZmlsZS5hbQotKysrIGIvY29yZWdyaW5kL01ha2VmaWxlLmFtCi1AQCAt MzQ4LDYgKzM0OCw3IEBAIENPUkVHUklORF9TT1VSQ0VTX0NPTU1PTiA9IFwKLSAJbV9kZWJ1Z2lu Zm8vcmVhZG1hY2hvLmMgXAotIAltX2RlYnVnaW5mby9yZWFkcGRiLmMgXAotIAltX2RlYnVnaW5m by9zdG9yYWdlLmMgXAotKwltX2RlYnVnaW5mby90aW5mbC5jIFwKLSAJbV9kZWJ1Z2luZm8vdHl0 eXBlcy5jIFwKLSAJbV9kZW1hbmdsZS9jcC1kZW1hbmdsZS5jIFwKLSAJbV9kZW1hbmdsZS9jcGx1 cy1kZW0uYyBcCi1kaWZmIC0tZ2l0IGEvY29yZWdyaW5kL21fZGVidWdpbmZvL2ltYWdlLmMgYi9j b3JlZ3JpbmQvbV9kZWJ1Z2luZm8vaW1hZ2UuYwotaW5kZXggMTczNWNlNmEzNjA4Li5iNmU2YmRi NmEzMjcgMTAwNjQ0Ci0tLS0gYS9jb3JlZ3JpbmQvbV9kZWJ1Z2luZm8vaW1hZ2UuYwotKysrIGIv Y29yZWdyaW5kL21fZGVidWdpbmZvL2ltYWdlLmMKLUBAIC00NSw2ICs0NSw4IEBACi0gI2luY2x1 ZGUgInByaXZfaW1hZ2UuaCIgICAgICAgICAgICAvKiBzZWxmICovCi0gCi0gI2luY2x1ZGUgIm1p bmlsem8uaCIKLSsjZGVmaW5lIFRJTkZMX0hFQURFUl9GSUxFX09OTFkKLSsjaW5jbHVkZSAidGlu ZmwuYyIKLSAKLSAvKiBUaGVzZSB2YWx1ZXMgKDEwMjQgZW50cmllcyBvZiA4MTkyIGJ5dGVzIGVh Y2gpIGdpdmVzIGEgY2FjaGUKLSAgICBzaXplIG9mIDhNQi4gKi8KLUBAIC01MywxNSArNTUsMjkg QEAKLSAKLSAjZGVmaW5lIENBQ0hFX0VOVFJZX1NJWkUgICAgICAoMSA8PCBDQUNIRV9FTlRSWV9T SVpFX0JJVFMpCi0gCi0rI2RlZmluZSBDT01NUFJFU1NFRF9TTElDRV9BUlJBWV9HUk9XX1NJWkUg NjQKLSsKLSAvKiBBbiBlbnRyeSBpbiB0aGUgY2FjaGUuICovCi0gdHlwZWRlZgotICAgIHN0cnVj dCB7Ci0tICAgICAgRGlPZmZUIG9mZjsgLy8gZmlsZSBvZmZzZXQgZm9yIGRhdGFbMF0KLS0gICAg ICBTaXplVCAgdXNlZDsgLy8gMSAuLiBzaXplb2YoZGF0YSksIG9yIDAgdG8gZGVub3RlIG5vdC1p bi11c2UKLS0gICAgICBVQ2hhciAgZGF0YVtDQUNIRV9FTlRSWV9TSVpFXTsKLSsgICAgICBEaU9m ZlQgb2ZmOyAgICAvLyBmaWxlIG9mZnNldCBmb3IgZGF0YVswXQotKyAgICAgIFNpemVUICBzaXpl OyAgIC8vIHNpemVvZihkYXRhKQotKyAgICAgIFNpemVUICB1c2VkOyAgIC8vIDEgLi4gc2l6ZW9m KGRhdGEpLCBvciAwIHRvIGRlbm90ZSBub3QtaW4tdXNlCi0rICAgICAgVUNoYXIgIGRhdGFbXTsK LSAgICB9Ci0gICAgQ0VudDsKLSAKLSsvKiBDb21wcmVzc2VkIHNsaWNlICovCi0rdHlwZWRlZgot KyAgIHN0cnVjdCB7Ci0rICAgICAgRGlPZmZUIG9mZkQ7ICAvLyBvZmZzZXQgb2YgZGVjb21wcmVz c2VkIGRhdGEKLSsgICAgICBTaXplVCAgc3pEOyAgIC8vIHNpemUgb2YgZGVjb21wcmVzc2VkIGRh dGEKLSsgICAgICBEaU9mZlQgb2ZmQzsgIC8vIG9mZnNldCBvZiBjb21wcmVzc2VkIGRhdGEKLSsg ICAgICBTaXplVCAgc3pDOyAgIC8vIHNpemUgb2YgY29tcHJlc3NlZCBkYXRhCi0rICAgfQotKyAg IENTbGM7Ci0rCi0rCi0gLyogU291cmNlIGZvciBmaWxlcyAqLwotIHR5cGVkZWYKLSAgICBzdHJ1 Y3QgewotQEAgLTgyLDggKzk4LDEwIEBAIHR5cGVkZWYKLSBzdHJ1Y3QgX0RpSW1hZ2UgewotICAg IC8vIFRoZSBzb3VyY2UgLS0gaG93IHRvIGdldCBob2xkIG9mIHRoZSBmaWxlIHdlIGFyZSByZWFk aW5nCi0gICAgU291cmNlIHNvdXJjZTsKLS0gICAvLyBUb3RhbCBzaXplIG9mIHRoZSBpbWFnZS4K LSsgICAvLyBWaXJ0dWFsIHNpemUgb2YgdGhlIGltYWdlID0gcmVhbCBzaXplICsgc2l6ZSBvZiB1 bmNvbXByZXNzZWQgZGF0YQotICAgIFNpemVUIHNpemU7Ci0rICAgLy8gUmVhbCBzaXplIG9mIGlt YWdlCi0rICAgU2l6ZVQgcmVhbF9zaXplOwotICAgIC8vIFRoZSBudW1iZXIgb2YgZW50cmllcyB1 c2VkLiAgMCAuLiBDQUNIRV9OX0VOVFJJRVMKLSAgICBVSW50ICBjZXNfdXNlZDsKLSAgICAvLyBQ b2ludGVycyB0byB0aGUgZW50cmllcy4gIGNlc1swIC4uIGNlc191c2VkLTFdIGFyZSBub24tTlVM TC4KLUBAIC05MSw2ICsxMDksMTIgQEAgc3RydWN0IF9EaUltYWdlIHsKLSAgICAvLyBUaGUgbm9u LU5VTEwgZW50cmllcyBtYXkgYmUgYXJyYW5nZWQgYXJiaXRyYXJpbHkuICBXZSBleHBlY3QgdG8g dXNlCi0gICAgLy8gYSBwc2V1ZG8tTFJVIHNjaGVtZSB0aG91Z2guCi0gICAgQ0VudCogY2VzW0NB Q0hFX05fRU5UUklFU107Ci0rICAgLy8gQXJyYXkgb2YgY29tcHJlc3NlZCBzbGljZXMKLSsgICBD U2xjKiBjc2xjOwotKyAgIC8vIE51bWJlciBvZiBjb21wcmVzc2VkIHNsaWNlcyB1c2VkCi0rICAg VUludCAgY3NsY191c2VkOwotKyAgIC8vIFNpemUgb2YgY3NsYyBhcnJheQotKyAgIFVJbnQgIGNz bGNfc2l6ZTsKLSB9OwotIAotIC8qIEEgZnJhbWUuICBUaGUgZmlyc3QgNCBieXRlcyBvZiB8ZGF0 YXwgZ2l2ZSB0aGUga2luZCBvZiB0aGUgZnJhbWUsCi1AQCAtMzY3LDcgKzM5MSw3IEBAIHN0YXRp YyBCb29sIHBhcnNlX0ZyYW1lX2FzY2lpeiAoIGNvbnN0IEZyYW1lKiBmciwgY29uc3QgSENoYXIq IHRhZywKLSBzdGF0aWMgQm9vbCBwYXJzZV9GcmFtZV9sZTY0X2xlNjRfbGU2NF9ieXRlcyAoCi0g ICAgICAgICAgICAgICAgY29uc3QgRnJhbWUqIGZyLCBjb25zdCBIQ2hhciogdGFnLAotICAgICAg ICAgICAgICAgIC8qT1VUKi9VTG9uZyogbjEsIC8qT1VUKi9VTG9uZyogbjIsIC8qT1VUKi9VTG9u ZyogbjMsCi0tICAgICAgICAgICAgICAgLypPVVQqL1VDaGFyKiogZGF0YSwgLypPVVQqL1VMb25n KiBuX2RhdGEgCi0rICAgICAgICAgICAgICAgLypPVVQqL1VDaGFyKiogZGF0YSwgLypPVVQqL1VM b25nKiBuX2RhdGEKLSAgICAgICAgICAgICApCi0gewotICAgIHZnX2Fzc2VydChWR18oc3RybGVu KSh0YWcpID09IDQpOwotQEAgLTM5NSw3ICs0MTksNyBAQCBzdGF0aWMgaW5saW5lIEJvb2wgaXNf aW5fQ0VudCAoIGNvbnN0IENFbnQqIGNlbnQsIERpT2ZmVCBvZmYgKQotICAgIC8qIFRoaXMgYXNz ZXJ0aW9uIGlzIGNoZWNrZWQgYnkgc2V0X0NFbnQsIHNvIGNoZWNraW5nIGl0IGhlcmUgaGFzCi0g ICAgICAgbm8gYmVuZWZpdCwgd2hlcmVhcyBza2lwcGluZyBpdCBkb2VzIHJlbW92ZSBpdCBmcm9t IHRoZSBob3R0ZXN0Ci0gICAgICAgcGF0aC4gKi8KLS0gICAvKiB2Z19hc3NlcnQoY2VudC0+dXNl ZCA+IDAgJiYgY2VudC0+dXNlZCA8PSBDQUNIRV9FTlRSWV9TSVpFKTsgKi8KLSsgICAvKiB2Z19h c3NlcnQoY2VudC0+dXNlZCA+IDAgJiYgY2VudC0+dXNlZCA8PSBjZW50LT5zaXplKTsgKi8KLSAg ICAvKiBXaGF0IHdlIHdhbnQgdG8gcmV0dXJuIGlzOgotICAgICAgICAgY2VudC0+b2ZmIDw9IG9m ZiAmJiBvZmYgPCBjZW50LT5vZmYgKyBjZW50LT51c2VkOwotICAgICAgIFRoaXMgaXMgaG93ZXZl ciBhIHZlcnkgaG90IHBhdGgsIHNvIGhlcmUncyBhbHRlcm5hdGl2ZSB0aGF0IHVzZXMKLUBAIC00 MTUsMTggKzQzOSw0MSBAQCBzdGF0aWMgaW5saW5lIEJvb2wgaXNfaW5fQ0VudCAoIGNvbnN0IENF bnQqIGNlbnQsIERpT2ZmVCBvZmYgKQotICAgIHJldHVybiBvZmYgLSBjZW50LT5vZmYgPCBjZW50 LT51c2VkOwotIH0KLSAKLSsvKiBSZXR1cm5zIHBvaW50ZXIgdG8gQ1NsYyBvciBOVUxMICovCi0r c3RhdGljIGlubGluZSBDU2xjKiBmaW5kX2NzbGMgKCBEaUltYWdlKiBpbWcsIERpT2ZmVCBvZmYg KQotK3sKLSsgICBmb3IgKFVJbnQgaSA9IDA7IGkgPCBpbWctPmNzbGNfdXNlZDsgaSsrKSB7Ci0r ICAgICAgaWYgKCAoaW1nLT5jc2xjW2ldLm9mZkQgPD0gb2ZmKQotKyAgICAgICAgICAgJiYgKGlt Zy0+Y3NsY1tpXS5vZmZEICsgaW1nLT5jc2xjW2ldLnN6RCA+IG9mZikKLSsgICAgICAgICApCi0r ICAgICAgICAgcmV0dXJuICZpbWctPmNzbGNbaV07Ci0rICAgfQotKyAgIHJldHVybiBOVUxMOwot K30KLSsKLSAvKiBBbGxvY2F0ZSBhIG5ldyBDRW50LCBjb25uZWN0IGl0IHRvIHxpbWd8LCBhbmQg cmV0dXJuIGl0cyBpbmRleC4gKi8KLS1zdGF0aWMgVUludCBhbGxvY19DRW50ICggRGlJbWFnZSog aW1nICkKLStzdGF0aWMgVUludCBhbGxvY19DRW50ICggRGlJbWFnZSogaW1nLCBTaXplVCBzekIg KQotIHsKLS0gICB2Z19hc3NlcnQoaW1nKTsKLSsgICB2Z19hc3NlcnQoaW1nICE9IE5VTEwpOwot ICAgIHZnX2Fzc2VydChpbWctPmNlc191c2VkIDwgQ0FDSEVfTl9FTlRSSUVTKTsKLSsgICB2Z19h c3NlcnQoc3pCID49IENBQ0hFX0VOVFJZX1NJWkUpOwotICAgIFVJbnQgZW50Tm8gPSBpbWctPmNl c191c2VkOwotICAgIGltZy0+Y2VzX3VzZWQrKzsKLSAgICB2Z19hc3NlcnQoaW1nLT5jZXNbZW50 Tm9dID09IE5VTEwpOwotLSAgIGltZy0+Y2VzW2VudE5vXSA9IE1MXyhkaW5mb196YWxsb2MpKCJk aS5hbGxvY19DRW50LjEiLCBzaXplb2YoQ0VudCkpOwotKyAgIGltZy0+Y2VzW2VudE5vXSA9IE1M XyhkaW5mb196YWxsb2MpKCJkaS5hbGxvY19DRW50LjEiLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKENFbnQsIGRhdGEpICsgc3pCKTsKLSsgICBpbWct PmNlc1tlbnROb10tPnNpemUgPSBzekI7Ci0gICAgcmV0dXJuIGVudE5vOwotIH0KLSAKLStzdGF0 aWMgdm9pZCByZWFsbG9jX0NFbnQgKCBEaUltYWdlKiBpbWcsIFVJbnQgZW50Tm8sIFNpemVUIHN6 QiApIHsKLSsgICB2Z19hc3NlcnQoaW1nICE9IE5VTEwpOwotKyAgIHZnX2Fzc2VydChzekIgPj0g Q0FDSEVfRU5UUllfU0laRSk7Ci0rICAgaW1nLT5jZXNbZW50Tm9dID0gTUxfKGRpbmZvX3JlYWxs b2MpKCJkaS5yZWFsbG9jX0NFbnQuMSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGltZy0+Y2VzW2VudE5vXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb2Zmc2V0b2YoQ0VudCwgZGF0YSkgKyBzekIpOwotK30KLSsKLSAvKiBNb3Zl IHRoZSBnaXZlbiBlbnRyeSB0byB0aGUgdG9wIGFuZCBzbGlkZSB0aG9zZSBhYm92ZSBpdCBkb3du IGJ5IDEsCi0gICAgdG8gbWFrZSBzcGFjZS4gKi8KLSBzdGF0aWMgdm9pZCBtb3ZlX0NFbnRfdG9f dG9wICggRGlJbWFnZSogaW1nLCBVSW50IGVudE5vICkKLUBAIC00NDksMjMgKzQ5NiwyNCBAQCBz dGF0aWMgdm9pZCBzZXRfQ0VudCAoIGNvbnN0IERpSW1hZ2UqIGltZywgVUludCBlbnRObywgRGlP ZmZUIG9mZiApCi0gewotICAgIFNpemVUIGxlbjsKLSAgICBEaU9mZlQgb2ZmX29yaWcgPSBvZmY7 Ci0tICAgdmdfYXNzZXJ0KGltZyk7Ci0rICAgdmdfYXNzZXJ0KGltZyAhPSBOVUxMKTsKLSAgICB2 Z19hc3NlcnQoaW1nLT5jZXNfdXNlZCA8PSBDQUNIRV9OX0VOVFJJRVMpOwotICAgIHZnX2Fzc2Vy dChlbnRObyA+PSAwICYmIGVudE5vIDwgaW1nLT5jZXNfdXNlZCk7Ci0tICAgdmdfYXNzZXJ0KG9m ZiA8IGltZy0+c2l6ZSk7Ci0tICAgdmdfYXNzZXJ0KGltZy0+Y2VzW2VudE5vXSAhPSBOVUxMKTsK LSsgICB2Z19hc3NlcnQob2ZmIDwgaW1nLT5yZWFsX3NpemUpOwotKyAgIENFbnQqIGNlID0gaW1n LT5jZXNbZW50Tm9dOwotKyAgIHZnX2Fzc2VydChjZSAhPSBOVUxMKTsKLSAgICAvKiBDb21wdXRl IFtvZmYsICtsZW4pIGFzIHRoZSBzbGljZSB3ZSBhcmUgZ29pbmcgdG8gcmVhZC4gKi8KLSAgICBv ZmYgPSBibG9ja19yb3VuZF9kb3duKG9mZik7Ci0tICAgbGVuID0gaW1nLT5zaXplIC0gb2ZmOwot LSAgIGlmIChsZW4gPiBDQUNIRV9FTlRSWV9TSVpFKSBsZW4gPSBDQUNIRV9FTlRSWV9TSVpFOwot KyAgIGxlbiA9IGltZy0+cmVhbF9zaXplIC0gb2ZmOwotKyAgIGlmIChsZW4gPiBjZS0+c2l6ZSkK LSsgICAgICBsZW4gPSBjZS0+c2l6ZTsKLSAgICAvKiBJdCBpcyBjb25jZWl2YWJsZSB0aGF0IHRo ZSAnbGVuID4gMCcgYml0IGNvdWxkIGZhaWwgaWYgd2UgbWFrZQotICAgICAgIGFuIGltYWdlIHdp dGggYSB6ZXJvIHNpemVkIGZpbGUuICBCdXQgdGhlbiBubyAnZ2V0JyByZXF1ZXN0IG9uCi0gICAg ICAgdGhhdCBpbWFnZSB3b3VsZCBiZSB2YWxpZC4gKi8KLS0gICB2Z19hc3NlcnQobGVuID4gMCAm JiBsZW4gPD0gQ0FDSEVfRU5UUllfU0laRSk7Ci0tICAgdmdfYXNzZXJ0KG9mZiArIGxlbiA8PSBp bWctPnNpemUpOwotKyAgIHZnX2Fzc2VydChsZW4gPiAwICYmIGxlbiA8PSBjZS0+c2l6ZSk7Ci0r ICAgdmdfYXNzZXJ0KG9mZiArIGxlbiA8PSBpbWctPnJlYWxfc2l6ZSk7Ci0gICAgdmdfYXNzZXJ0 KG9mZiA8PSBvZmZfb3JpZyAmJiBvZmZfb3JpZyA8IG9mZitsZW4pOwotICAgIC8qIFNvLCByZWFk ICBvZmYgLi4gb2ZmK2xlbi0xICBpbnRvIHRoZSBlbnRyeS4gKi8KLS0gICBDRW50KiBjZSA9IGlt Zy0+Y2VzW2VudE5vXTsKLSAKLSAgICBpZiAoMCkgewotICAgICAgIHN0YXRpYyBVSW50IHRfbGFz dCA9IDA7Ci1AQCAtNDc0LDcgKzUyMiw3IEBAIHN0YXRpYyB2b2lkIHNldF9DRW50ICggY29uc3Qg RGlJbWFnZSogaW1nLCBVSW50IGVudE5vLCBEaU9mZlQgb2ZmICkKLSAgICAgICBVSW50IGRlbGF5 ID0gbm93IC0gdF9sYXN0OwotICAgICAgIHRfbGFzdCA9IG5vdzsKLSAgICAgICBucmVhZCArPSBs ZW47Ci0tICAgICAgVkdfKHByaW50ZikoIlhYWFhYWFhYICh0b3QgJSdsbHUpICByZWFkICUnbHUg IG9mZnNldCAlJ2xsdSAgZGVsYXkgJSd1XG4iLCAKLSsgICAgICBWR18ocHJpbnRmKSgiWFhYWFhY WFggKHRvdCAlJ2xsdSkgIHJlYWQgJSdsdSAgb2Zmc2V0ICUnbGx1ICBkZWxheSAlJ3VcbiIsCi0g ICAgICAgICAgICAgICAgICAgbnJlYWQsIGxlbiwgb2ZmLCBkZWxheSk7Ci0gICAgfQotIAotQEAg LTU0MywxMCArNTkxLDEwIEBAIHN0YXRpYyB2b2lkIHNldF9DRW50ICggY29uc3QgRGlJbWFnZSog aW1nLCBVSW50IGVudE5vLCBEaU9mZlQgb2ZmICkKLSAgICAgIGVuZF9vZl9lbHNlX2NsYXVzZToK LSAgICAgICB7fQotICAgIH0KLS0gICAKLSsKLSAgICBjZS0+b2ZmICA9IG9mZjsKLSAgICBjZS0+ dXNlZCA9IGxlbjsKLS0gICB2Z19hc3NlcnQoY2UtPnVzZWQgPiAwICYmIGNlLT51c2VkIDw9IENB Q0hFX0VOVFJZX1NJWkUpOwotKyAgIHZnX2Fzc2VydChjZS0+dXNlZCA+IDAgJiYgY2UtPnVzZWQg PD0gY2UtPnNpemUpOwotIH0KLSAKLSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCi1AQCAtNTY3 LDE2ICs2MTUsNDUgQEAgc3RhdGljIFVDaGFyIGdldF9zbG93Y2FzZSAoIERpSW1hZ2UqIGltZywg RGlPZmZUIG9mZiApCi0gICAgaWYgKGkgPT0gaW1nLT5jZXNfdXNlZCkgewotICAgICAgIC8qIEl0 J3Mgbm90IGluIGFueSBlbnRyeS4gIEVpdGhlciBhbGxvY2F0ZSBhIG5ldyBlbnRyeSBvcgotICAg ICAgICAgIHJlY3ljbGUgdGhlIExSVSBvbmUuICovCi0rCi0rICAgICAgQ1NsYyogY3NsYyA9IGZp bmRfY3NsYyhpbWcsIG9mZik7Ci0rICAgICAgVUNoYXIqIGJ1ZiA9IE5VTEw7Ci0rICAgICAgaWYg KGNzbGMgIT0gTlVMTCkgewotKyAgICAgICAgIFNpemVUIGxlbiA9IDA7Ci0rICAgICAgICAgYnVm ID0gTUxfKGRpbmZvX3phbGxvYykoImRpLmltYWdlLmdldF9zbG93Y2FzZS4xIiwgY3NsYy0+c3pD KTsKLSsgICAgICAgICAvLyBnZXQgY29tcHJlc3NlZCBkYXRhCi0rICAgICAgICAgd2hpbGUgKGxl biA8IGNzbGMtPnN6QykKLSsgICAgICAgICAgICBsZW4gKz0gTUxfKGltZ19nZXRfc29tZSkoYnVm ICsgbGVuLCBpbWcsIGNzbGMtPm9mZkMgKyBsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNzbGMtPnN6QyAtIGxlbik7Ci0rICAgICAgfQotKwotICAgICAgIGlmIChp bWctPmNlc191c2VkID09IENBQ0hFX05fRU5UUklFUykgewotICAgICAgICAgIC8qIEFsbCBlbnRy aWVzIGluIHVzZS4gIFJlY3ljbGUgdGhlIChvc3RlbnNpYmx5KSBMUlUgb25lLiAqLwotLSAgICAg ICAgIHNldF9DRW50KGltZywgQ0FDSEVfTl9FTlRSSUVTLTEsIG9mZik7Ci0gICAgICAgICAgaSA9 IENBQ0hFX05fRU5UUklFUy0xOwotKyAgICAgICAgIGlmICgoY3NsYyAhPSBOVUxMKSAmJiAoY3Ns Yy0+c3pEID4gaW1nLT5jZXNbaV0tPnNpemUpKQotKyAgICAgICAgICAgIHJlYWxsb2NfQ0VudChp bWcsIGksIGNzbGMtPnN6RCk7Ci0gICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAvKiBBbGxvY2F0 ZSBhIG5ldyBvbmUsIGFuZCBmaWxsIGl0IGluLiAqLwotLSAgICAgICAgIFVJbnQgZW50Tm8gPSBh bGxvY19DRW50KGltZyk7Ci0tICAgICAgICAgc2V0X0NFbnQoaW1nLCBlbnRObywgb2ZmKTsKLS0g ICAgICAgICBpID0gZW50Tm87Ci0rICAgICAgICAgU2l6ZVQgc2l6ZSA9IENBQ0hFX0VOVFJZX1NJ WkU7Ci0rICAgICAgICAgaWYgKChjc2xjICE9IE5VTEwpICYmIChjc2xjLT5zekQgPiBDQUNIRV9F TlRSWV9TSVpFKSkKLSsgICAgICAgICAgICBzaXplID0gY3NsYy0+c3pEOwotKyAgICAgICAgIGkg PSBhbGxvY19DRW50KGltZywgc2l6ZSk7Ci0rICAgICAgfQotKwotKyAgICAgIGlmIChjc2xjICE9 IE5VTEwpIHsKLSsgICAgICAgICBTaXplVCBsZW4gPSB0aW5mbF9kZWNvbXByZXNzX21lbV90b19t ZW0oCi0rICAgICAgICAgICAgICAgICAgICAgICAgaW1nLT5jZXNbaV0tPmRhdGEsIGNzbGMtPnN6 RCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGNzbGMtPnN6QywKLSsgICAgICAgICAg ICAgICAgICAgICAgICBUSU5GTF9GTEFHX1VTSU5HX05PTl9XUkFQUElOR19PVVRQVVRfQlVGCi0r ICAgICAgICAgICAgICAgICAgICAgICAgfCBUSU5GTF9GTEFHX1BBUlNFX1pMSUJfSEVBREVSKTsK LSsgICAgICAgICB2Z19hc3NlcnQobGVuID09IGNzbGMtPnN6RCk7Ci0rICAgICAgICAgaW1nLT5j ZXNbaV0tPnVzZWQgPSBjc2xjLT5zekQ7Ci0rICAgICAgICAgaW1nLT5jZXNbaV0tPm9mZiA9IGNz bGMtPm9mZkQ7Ci0rICAgICAgICAgTUxfKGRpbmZvX2ZyZWUpKGJ1Zik7Ci0rICAgICAgfSBlbHNl IHsKLSsgICAgICAgICBzZXRfQ0VudChpbWcsIGksIG9mZik7Ci0gICAgICAgfQotKwotICAgIH0g ZWxzZSB7Ci0gICAgICAgLyogV2UgZm91bmQgaXQgYXQgcG9zaXRpb24gJ2knLiAqLwotICAgICAg IHZnX2Fzc2VydChpID4gMCk7Ci1AQCAtNjI2LDE1ICs3MDMsMTkgQEAgRGlJbWFnZSogTUxfKGlt Z19mcm9tX2xvY2FsX2ZpbGUpKGNvbnN0IEhDaGFyKiBmdWxscGF0aCkKLSAgICAgICAgfHwgLyog c2l6ZSBpcyB1bnJlcHJlc2VudGFibGUgYXMgYSBTaXplVCAqLwotICAgICAgICAgICBzaXplICE9 IChEaU9mZlQpKFNpemVUKShzaXplKSkgewotICAgICAgIFZHXyhjbG9zZSkoc3JfUmVzKGZkKSk7 Ci0tICAgICAgcmV0dXJuIE5VTEw7IAotKyAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAKLSAg ICBEaUltYWdlKiBpbWcgPSBNTF8oZGluZm9femFsbG9jKSgiZGkuaW1hZ2UuTUxfaWZsZi4xIiwg c2l6ZW9mKERpSW1hZ2UpKTsKLSAgICBpbWctPnNvdXJjZS5pc19sb2NhbCA9IFRydWU7Ci0gICAg aW1nLT5zb3VyY2UuZmQgICAgICAgPSBzcl9SZXMoZmQpOwotICAgIGltZy0+c2l6ZSAgICAgICAg ICAgID0gc2l6ZTsKLSsgICBpbWctPnJlYWxfc2l6ZSAgICAgICA9IHNpemU7Ci0gICAgaW1nLT5j ZXNfdXNlZCAgICAgICAgPSAwOwotICAgIGltZy0+c291cmNlLm5hbWUgICAgID0gTUxfKGRpbmZv X3N0cmR1cCkoImRpLmltYWdlLk1MX2lmbGYuMiIsIGZ1bGxwYXRoKTsKLSsgICBpbWctPmNzbGMg ICAgICAgICAgICA9IE5VTEw7Ci0rICAgaW1nLT5jc2xjX3NpemUgICAgICAgPSAwOwotKyAgIGlt Zy0+Y3NsY191c2VkICAgICAgID0gMDsKLSAgICAvKiBpbWctPmNlcyBpcyBhbHJlYWR5IHplcm9l ZCBvdXQgKi8KLSAgICB2Z19hc3NlcnQoaW1nLT5zb3VyY2UuZmQgPj0gMCk7Ci0gCi1AQCAtNjQz LDcgKzcyNCw3IEBAIERpSW1hZ2UqIE1MXyhpbWdfZnJvbV9sb2NhbF9maWxlKShjb25zdCBIQ2hh ciogZnVsbHBhdGgpCi0gICAgICAgbG9hZGluZyBpdCBhdCB0aGlzIHBvaW50IGZvcmNpbmcgaW1n LT5jZW50WzBdIHRvIGFsd2F5cyBiZQotICAgICAgIG5vbi1lbXB0eSwgdGhlcmVieSBzYXZpbmcg dXMgYW4gaXMtaXQtZW1wdHkgY2hlY2sgb24gdGhlIGZhc3QKLSAgICAgICBwYXRoIGluIGdldCgp LiAqLwotLSAgIFVJbnQgZW50Tm8gPSBhbGxvY19DRW50KGltZyk7Ci0rICAgVUludCBlbnRObyA9 IGFsbG9jX0NFbnQoaW1nLCBDQUNIRV9FTlRSWV9TSVpFKTsKLSAgICB2Z19hc3NlcnQoZW50Tm8g PT0gMCk7Ci0gICAgc2V0X0NFbnQoaW1nLCAwLCAwKTsKLSAKLUBAIC02NzUsNyArNzU2LDcgQEAg RGlJbWFnZSogTUxfKGltZ19mcm9tX2RpX3NlcnZlcikoY29uc3QgSENoYXIqIGZpbGVuYW1lLAot ICAgIGlmICghc2V0X2Jsb2NraW5nKHNkKSkKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICBJbnQg b25lID0gMTsKLS0gICBJbnQgc3IgPSBWR18oc2V0c29ja29wdCkoc2QsIFZLSV9JUFBST1RPX1RD UCwgVktJX1RDUF9OT0RFTEFZLCAKLSsgICBJbnQgc3IgPSBWR18oc2V0c29ja29wdCkoc2QsIFZL SV9JUFBST1RPX1RDUCwgVktJX1RDUF9OT0RFTEFZLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmb25lLCBzaXplb2Yob25lKSk7Ci0gICAgdmdfYXNzZXJ0KHNyID09IDApOwotIAotQEAg LTczMCw3ICs4MTEsNyBAQCBEaUltYWdlKiBNTF8oaW1nX2Zyb21fZGlfc2VydmVyKShjb25zdCBI Q2hhciogZmlsZW5hbWUsCi0gCi0gICAgLyogU2VlIGNvbW1lbnQgb24gZXF1aXZhbGVudCBiaXQg aW4gTUxfKGltZ19mcm9tX2xvY2FsX2ZpbGUpIGZvcgotICAgICAgIHJhdGlvbmFsZS4gKi8KLS0g ICBVSW50IGVudE5vID0gYWxsb2NfQ0VudChpbWcpOwotKyAgIFVJbnQgZW50Tm8gPSBhbGxvY19D RW50KGltZywgQ0FDSEVfRU5UUllfU0laRSk7Ci0gICAgdmdfYXNzZXJ0KGVudE5vID09IDApOwot ICAgIHNldF9DRW50KGltZywgMCwgMCk7Ci0gCi1AQCAtNzU2LDkgKzgzNywzMiBAQCBEaUltYWdl KiBNTF8oaW1nX2Zyb21fZGlfc2VydmVyKShjb25zdCBIQ2hhciogZmlsZW5hbWUsCi0gICAgcmV0 dXJuIE5VTEw7Ci0gfQotIAotK0RpT2ZmVCBNTF8oaW1nX21hcmtfY29tcHJlc3NlZF9wYXJ0KShE aUltYWdlKiBpbWcsIERpT2ZmVCBvZmZzZXQsIFNpemVUIHN6QywKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU2l6ZVQgc3pEKQotK3sKLSsgICBEaU9mZlQgcmV0OwotKyAg IHZnX2Fzc2VydChpbWcgIT0gTlVMTCk7Ci0rICAgdmdfYXNzZXJ0KG9mZnNldCArIHN6QyA8PSBp bWctPnNpemUpOwotKwotKyAgIGlmIChpbWctPmNzbGNfdXNlZCA9PSBpbWctPmNzbGNfc2l6ZSkg ewotKyAgICAgIGltZy0+Y3NsY19zaXplICs9IENPTU1QUkVTU0VEX1NMSUNFX0FSUkFZX0dST1df U0laRTsKLSsgICAgICBpbWctPmNzbGMgPSBNTF8oZGluZm9fcmVhbGxvYykoImRpLmltYWdlLk1M X2ltZ19tYXJrX2NvbXByZXNzZWRfcGFydC4xIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW1nLT5jc2xjLCBpbWctPmNzbGNfc2l6ZSAqIHNpemVvZihDU2xjKSk7Ci0r ICAgfQotKwotKyAgIHJldCA9IGltZy0+c2l6ZTsKLSsgICBpbWctPmNzbGNbaW1nLT5jc2xjX3Vz ZWRdLm9mZkMgPSBvZmZzZXQ7Ci0rICAgaW1nLT5jc2xjW2ltZy0+Y3NsY191c2VkXS5zekMgPSBz ekM7Ci0rICAgaW1nLT5jc2xjW2ltZy0+Y3NsY191c2VkXS5vZmZEID0gaW1nLT5zaXplOwotKyAg IGltZy0+Y3NsY1tpbWctPmNzbGNfdXNlZF0uc3pEID0gc3pEOwotKyAgIGltZy0+c2l6ZSArPSBz ekQ7Ci0rICAgaW1nLT5jc2xjX3VzZWQrKzsKLSsgICByZXR1cm4gcmV0OwotK30KLSsKLSB2b2lk IE1MXyhpbWdfZG9uZSkoRGlJbWFnZSogaW1nKQotIHsKLS0gICB2Z19hc3NlcnQoaW1nKTsKLSsg ICB2Z19hc3NlcnQoaW1nICE9IE5VTEwpOwotICAgIGlmIChpbWctPnNvdXJjZS5pc19sb2NhbCkg ewotICAgICAgIC8qIENsb3NlIHRoZSBmaWxlOyBub3RoaW5nIGVsc2UgdG8gZG8uICovCi0gICAg ICAgdmdfYXNzZXJ0KGltZy0+c291cmNlLnNlc3Npb25faWQgPT0gMCk7Ci1AQCAtNzgyLDE4ICs4 ODYsMjUgQEAgdm9pZCBNTF8oaW1nX2RvbmUpKERpSW1hZ2UqIGltZykKLSAgICAgICB2Z19hc3Nl cnQoaW1nLT5jZXNbaV0gPT0gTlVMTCk7Ci0gICAgfQotICAgIE1MXyhkaW5mb19mcmVlKShpbWct PnNvdXJjZS5uYW1lKTsKLSsgICBNTF8oZGluZm9fZnJlZSkoaW1nLT5jc2xjKTsKLSAgICBNTF8o ZGluZm9fZnJlZSkoaW1nKTsKLSB9Ci0gCi0gRGlPZmZUIE1MXyhpbWdfc2l6ZSkoY29uc3QgRGlJ bWFnZSogaW1nKQotIHsKLS0gICB2Z19hc3NlcnQoaW1nKTsKLSsgICB2Z19hc3NlcnQoaW1nICE9 IE5VTEwpOwotICAgIHJldHVybiBpbWctPnNpemU7Ci0gfQotIAotK0RpT2ZmVCBNTF8oaW1nX3Jl YWxfc2l6ZSkoY29uc3QgRGlJbWFnZSogaW1nKQotK3sKLSsgICB2Z19hc3NlcnQoaW1nICE9IE5V TEwpOwotKyAgIHJldHVybiBpbWctPnJlYWxfc2l6ZTsKLSt9Ci0rCi0gaW5saW5lIEJvb2wgTUxf KGltZ192YWxpZCkoY29uc3QgRGlJbWFnZSogaW1nLCBEaU9mZlQgb2Zmc2V0LCBTaXplVCBzaXpl KQotIHsKLS0gICB2Z19hc3NlcnQoaW1nKTsKLSsgICB2Z19hc3NlcnQoaW1nICE9IE5VTEwpOwot ICAgIHZnX2Fzc2VydChvZmZzZXQgIT0gRGlPZmZUX0lOVkFMSUQpOwotICAgIHJldHVybiBpbWct PnNpemUgPiAwICYmIG9mZnNldCArIHNpemUgPD0gKERpT2ZmVClpbWctPnNpemU7Ci0gfQotQEAg LTgzMCw3ICs5NDEsNyBAQCBzdGF0aWMgdm9pZCBlbnN1cmVfdmFsaWQoY29uc3QgRGlJbWFnZSog aW1nLCBEaU9mZlQgb2Zmc2V0LCBTaXplVCBzaXplLAotIHZvaWQgTUxfKGltZ19nZXQpKC8qT1VU Ki92b2lkKiBkc3QsCi0gICAgICAgICAgICAgICAgICAgRGlJbWFnZSogaW1nLCBEaU9mZlQgb2Zm c2V0LCBTaXplVCBzaXplKQotIHsKLS0gICB2Z19hc3NlcnQoaW1nKTsKLSsgICB2Z19hc3NlcnQo aW1nICE9IE5VTEwpOwotICAgIHZnX2Fzc2VydChzaXplID4gMCk7Ci0gICAgZW5zdXJlX3ZhbGlk KGltZywgb2Zmc2V0LCBzaXplLCAiTUxfKGltZ19nZXQpIik7Ci0gICAgU2l6ZVQgaTsKLUBAIC04 NDIsNyArOTUzLDcgQEAgdm9pZCBNTF8oaW1nX2dldCkoLypPVVQqL3ZvaWQqIGRzdCwKLSBTaXpl VCBNTF8oaW1nX2dldF9zb21lKSgvKk9VVCovdm9pZCogZHN0LAotICAgICAgICAgICAgICAgICAg ICAgICAgIERpSW1hZ2UqIGltZywgRGlPZmZUIG9mZnNldCwgU2l6ZVQgc2l6ZSkKLSB7Ci0tICAg dmdfYXNzZXJ0KGltZyk7Ci0rICAgdmdfYXNzZXJ0KGltZyAhPSBOVUxMKTsKLSAgICB2Z19hc3Nl cnQoc2l6ZSA+IDApOwotICAgIGVuc3VyZV92YWxpZChpbWcsIG9mZnNldCwgc2l6ZSwgIk1MXyhp bWdfZ2V0X3NvbWUpIik7Ci0gICAgVUNoYXIqIGRzdFUgPSAoVUNoYXIqKWRzdDsKLUBAIC0xMDAy LDcgKzExMTMsNyBAQCBVSW50IE1MXyhpbWdfY2FsY19nbnVfZGVidWdsaW5rX2NyYzMyKShEaUlt YWdlKiBpbWcpCi0gICAgICAgMHgyZDAyZWY4ZAotICAgICB9OwotIAotLSAgIHZnX2Fzc2VydChp bWcpOwotKyAgIHZnX2Fzc2VydChpbWcgIT0gTlVMTCk7Ci0gCi0gICAgLyogSWYgdGhlIGltYWdl IGlzIGxvY2FsLCBjYWxjdWxhdGUgdGhlIENSQyBoZXJlIGRpcmVjdGx5LiAgSWYgaXQncwotICAg ICAgIHJlbW90ZSwgZm9yd2FyZCB0aGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLiAqLwotZGlmZiAt LWdpdCBhL2NvcmVncmluZC9tX2RlYnVnaW5mby9wcml2X2ltYWdlLmggYi9jb3JlZ3JpbmQvbV9k ZWJ1Z2luZm8vcHJpdl9pbWFnZS5oCi1pbmRleCA5NTIzZjQ4YjY5NzAuLjEyZjAyZDNhYjAxYSAx MDA2NDQKLS0tLSBhL2NvcmVncmluZC9tX2RlYnVnaW5mby9wcml2X2ltYWdlLmgKLSsrKyBiL2Nv cmVncmluZC9tX2RlYnVnaW5mby9wcml2X2ltYWdlLmgKLUBAIC03NCw5ICs3NCwxMiBAQCBEaUlt YWdlKiBNTF8oaW1nX2Zyb21fZGlfc2VydmVyKShjb25zdCBIQ2hhciogZmlsZW5hbWUsCi0gLyog RGVzdHJveSBhbiBleGlzdGluZyBpbWFnZS4gKi8KLSB2b2lkIE1MXyhpbWdfZG9uZSkoRGlJbWFn ZSopOwotIAotLS8qIEhvdyBiaWcgaXMgdGhlIGltYWdlPyAqLwotKy8qIFZpcnR1YWwgc2l6ZSBv ZiB0aGUgaW1hZ2UuICovCi0gRGlPZmZUIE1MXyhpbWdfc2l6ZSkoY29uc3QgRGlJbWFnZSogaW1n KTsKLSAKLSsvKiBSZWFsIHNpemUgb2YgdGhlIGltYWdlLiAqLwotK0RpT2ZmVCBNTF8oaW1nX3Jl YWxfc2l6ZSkoY29uc3QgRGlJbWFnZSogaW1nKTsKLSsKLSAvKiBEb2VzIHRoZSBzZWN0aW9uIFtv ZmZzZXQsICtzaXplKSBleGlzdCBpbiB0aGUgaW1hZ2U/ICovCi0gQm9vbCBNTF8oaW1nX3ZhbGlk KShjb25zdCBEaUltYWdlKiBpbWcsIERpT2ZmVCBvZmZzZXQsIFNpemVUIHNpemUpOwotIAotQEAg LTEyNyw2ICsxMzAsMTIgQEAgVUxvbmcgIE1MXyhpbWdfZ2V0X1VMb25nKSAoRGlJbWFnZSogaW1n LCBEaU9mZlQgb2Zmc2V0KTsKLSAgICBjb25uZWN0aW9uLCBtYWtpbmcgdGhlIGNsaWVudC9zZXJ2 ZXIgc3BsaXQgcG9pbnRsZXNzLiAqLwotIFVJbnQgTUxfKGltZ19jYWxjX2dudV9kZWJ1Z2xpbmtf Y3JjMzIpKERpSW1hZ2UqIGltZyk7Ci0gCi0rLyogTWFyayBjb21wcmVzc2VkIHBhcnQgb2YgaW1h Z2UgZGVmaW5lZCB3aXRoIChvZmZzZXQsIHN6QykuCi0rICAgc3pEIGlzIGxlbmd0aCBvZiB1bmNv bXByZXNzZWQgZGF0YSAoc2hvdWxkIGJlIGtub3duIGJlZm9yZSBkZWNvbXByZXNzaW9uKS4KLSsg ICBSZXR1cm5zICh2aXJ0dWFsKSBwb3NpdGlvbiBpbiBpbWFnZSBmcm9tIHdoaWNoIGRlY29tcHJl c3NlZCBkYXRhIGNhbiBiZQotKyAgIHJlYWQuICovCi0rRGlPZmZUIE1MXyhpbWdfbWFya19jb21w cmVzc2VkX3BhcnQpKERpSW1hZ2UqIGltZywgRGlPZmZUIG9mZnNldCwgU2l6ZVQgc3pDLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplVCBzekQpOwotIAotIC8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ki8KLSAvKi0tLSBEaUN1cnNvciAtLSBjdXJzb3JzIGZvciByZWFkaW5nIGltYWdlcyAgICAgICAg ICAgICAgIC0tLSovCi1kaWZmIC0tZ2l0IGEvY29yZWdyaW5kL21fZGVidWdpbmZvL3JlYWRlbGYu YyBiL2NvcmVncmluZC9tX2RlYnVnaW5mby9yZWFkZWxmLmMKLWluZGV4IDllMjM5YjBmMjAyNS4u ZDQwZGM1YmUwYWFjIDEwMDY0NAotLS0tIGEvY29yZWdyaW5kL21fZGVidWdpbmZvL3JlYWRlbGYu YwotKysrIGIvY29yZWdyaW5kL21fZGVidWdpbmZvL3JlYWRlbGYuYwotQEAgLTgsNyArOCw3IEBA Ci0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgVmFsZ3JpbmQsIGEgZHluYW1pYyBiaW5hcnkgaW5z dHJ1bWVudGF0aW9uCi0gICAgZnJhbWV3b3JrLgotIAotLSAgIENvcHlyaWdodCAoQykgMjAwMC0y MDE1IEp1bGlhbiBTZXdhcmQgCi0rICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMTUgSnVsaWFuIFNl d2FyZAotICAgICAgIGpzZXdhcmRAYWNtLm9yZwotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLUBAIC01MSw2ICs1MSw3 IEBACi0gI2luY2x1ZGUgInByaXZfcmVhZGR3YXJmLmgiICAgICAgICAvKiAnY29zIEVMRiBjb250 YWlucyBEV0FSRiAqLwotICNpbmNsdWRlICJwcml2X3JlYWRkd2FyZjMuaCIKLSAjaW5jbHVkZSAi cHJpdl9yZWFkZXhpZHguaCIKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0gLyogLS0tICEhISAt LS0gRVhURVJOQUwgSEVBREVSUyBzdGFydCAtLS0gISEhIC0tLSAqLwotICNpbmNsdWRlIDxlbGYu aD4KLUBAIC01OSw2ICs2MCwzMyBAQAotICNlbmRpZgotIC8qIC0tLSAhISEgLS0tIEVYVEVSTkFM IEhFQURFUlMgZW5kIC0tLSAhISEgLS0tICovCi0gCi0rI2lmICFkZWZpbmVkKEhBVkVfRUxGMzJf Q0hEUikKLSsgICB0eXBlZGVmIHN0cnVjdCB7Ci0rICAgICAgRWxmMzJfV29yZCAgY2hfdHlwZTsK LSsgICAgICBFbGYzMl9Xb3JkICBjaF9zaXplOwotKyAgICAgIEVsZjMyX1dvcmQgIGNoX2FkZHJh bGlnbjsKLSsgICB9IEVsZjMyX0NoZHI7Ci0rI2VuZGlmCi0rCi0rI2lmICFkZWZpbmVkKEhBVkVf RUxGNjRfQ0hEUikKLSsgICB0eXBlZGVmIHN0cnVjdCB7Ci0rICAgICAgRWxmNjRfV29yZCAgY2hf dHlwZTsKLSsgICAgICBFbGY2NF9Xb3JkICBjaF9yZXNlcnZlZDsKLSsgICAgICBFbGY2NF9Yd29y ZCBjaF9zaXplOwotKyAgICAgIEVsZjY0X1h3b3JkIGNoX2FkZHJhbGlnbjsKLSsgICB9IEVsZjY0 X0NoZHI7Ci0rI2VuZGlmCi0rCi0rI2lmICFkZWZpbmVkKFNIRl9DT01QUkVTU0VEKQotKyAgICNk ZWZpbmUgU0hGX0NPTVBSRVNTRUQgKDEgPDwgMTEpCi0rI2VuZGlmCi0rCi0rI2lmICFkZWZpbmVk KEVMRkNPTVBSRVNTX1pMSUIpCi0rICAgI2RlZmluZSBFTEZDT01QUkVTU19aTElCIDEKLSsjZW5k aWYKLSsKLSsjZGVmaW5lIFNJWkVfT0ZfWkxJQl9IRUFERVIgMTIKLSsKLSAvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0gLyot LS0gMzIvNjQtYml0IHBhcmFtZXRlcmlzYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAt LS0qLwotIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKi8KLUBAIC02Niw3ICs5NCw3IEBACi0gLyogRm9yIGFsbCB0aGUgRUxGIG1h Y3JvcyBhbmQgdHlwZXMgd2hpY2ggc3BlY2lmeSAnMzInIG9yICc2NCcsCi0gICAgc2VsZWN0IHRo ZSBjb3JyZWN0IHZhcmlhbnQgZm9yIHRoaXMgcGxhdGZvcm0gYW5kIGdpdmUgaXQKLSAgICBhbiAn WFgnIG5hbWUuICBUaGVuIHVzZSB0aGUgJ1hYJyB2YXJpYW50IGNvbnNpc3RlbnRseSBpbgotLSAg IHRoZSByZXN0IG9mIHRoaXMgZmlsZS4gCi0rICAgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlLgotICov Ci0gI2lmIFZHX1dPUkRTSVpFID09IDQKLSAjICBkZWZpbmUgIEVsZlhYX0VoZHIgICAgIEVsZjMy X0VoZHIKLUBAIC04MCw2ICsxMDgsNyBAQAotICMgIGRlZmluZSAgRWxmWFhfRHluICAgICAgRWxm MzJfRHluCi0gIyAgZGVmaW5lICBFTEZYWF9TVF9CSU5EICBFTEYzMl9TVF9CSU5ECi0gIyAgZGVm aW5lICBFTEZYWF9TVF9UWVBFICBFTEYzMl9TVF9UWVBFCi0rIyAgZGVmaW5lICBFbGZYWF9DaGRy ICAgICBFbGYzMl9DaGRyCi0gCi0gI2VsaWYgVkdfV09SRFNJWkUgPT0gOAotICMgIGRlZmluZSAg RWxmWFhfRWhkciAgICAgRWxmNjRfRWhkcgotQEAgLTkzLDYgKzEyMiw3IEBACi0gIyAgZGVmaW5l ICBFbGZYWF9EeW4gICAgICBFbGY2NF9EeW4KLSAjICBkZWZpbmUgIEVMRlhYX1NUX0JJTkQgIEVM RjY0X1NUX0JJTkQKLSAjICBkZWZpbmUgIEVMRlhYX1NUX1RZUEUgIEVMRjY0X1NUX1RZUEUKLSsj ICBkZWZpbmUgIEVsZlhYX0NoZHIgICAgIEVsZjY0X0NoZHIKLSAKLSAjZWxzZQotICMgZXJyb3Ig IlZHX1dPUkRTSVpFIHNob3VsZCBiZSA0IG9yIDgiCi1AQCAtMTYwLDcgKzE5MCw3IEBAIHN0YXRp YyBCb29sIGlzX2VsZl9vYmplY3RfZmlsZV9ieV9EaUltYWdlKCBEaUltYWdlKiBpbWcsIEJvb2wg cmVsX29rICkKLSAKLSBzdGF0aWMKLSB2b2lkIHNob3dfcmF3X2VsZl9zeW1ib2wgKCBEaUltYWdl KiBzdHJ0YWJfaW1nLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEludCBpLCAKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbnQgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBFbGZYWF9TeW0qIHN5bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaU9m ZlQgc3ltX25hbWVfaW9mZiwgQWRkciBzeW1fc3ZtYSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCb29sIHBwYzY0X2xpbnV4X2Zvcm1hdCApCi1AQCAtMTkwLDcgKzIyMCw3IEBAIHZvaWQg c2hvd19yYXdfZWxmX3N5bWJvbCAoIERpSW1hZ2UqIHN0cnRhYl9pbWcsCi0gICAgICAgc3ltX25h bWUgPSBNTF8oaW1nX3N0cmR1cCkoc3RydGFiX2ltZywgImRpLnNyZXMuMSIsIHN5bV9uYW1lX2lv ZmYpOwotICAgIFZHXyhwcmludGYpKCI6IHN2bWEgJSMwMTBseCwgJXNzeiAlNGxsdSAgJXNcbiIs Ci0gICAgICAgICAgICAgICAgc3ltX3N2bWEsIHNwYWNlLCAoVUxvbmcpKHN5bS0+c3Rfc2l6ZSAr IDBVTCksCi0tICAgICAgICAgICAgICAgKHN5bV9uYW1lID8gc3ltX25hbWUgOiAiTk9OQU1FIikg KTsgCi0rICAgICAgICAgICAgICAgKHN5bV9uYW1lID8gc3ltX25hbWUgOiAiTk9OQU1FIikgKTsK LSAgICBpZiAoc3ltX25hbWUpCi0gICAgICAgTUxfKGRpbmZvX2ZyZWUpKHN5bV9uYW1lKTsKLSB9 Ci1AQCAtMjIzLDggKzI1Myw4IEBAIHZvaWQgc2hvd19yYXdfZWxmX3N5bWJvbCAoIERpSW1hZ2Uq IHN0cnRhYl9pbWcsCi0gICAgdG8gcGllY2UgdG9nZXRoZXIgdGhlIHJlYWwgc2l6ZSwgYWRkcmVz cywgbmFtZSBvZiB0aGUgc3ltYm9sIGZyb20KLSAgICBtdWx0aXBsZSBjYWxscyB0byB0aGlzIGZ1 bmN0aW9uLiAgVWdseSBhbmQgY29uZnVzaW5nLgotICovCi0tc3RhdGljIAotLUJvb2wgZ2V0X2Vs Zl9zeW1ib2xfaW5mbyAoIAotK3N0YXRpYwotK0Jvb2wgZ2V0X2VsZl9zeW1ib2xfaW5mbyAoCi0g ICAgICAgICAvKiBJTlBVVFMgKi8KLSAgICAgICAgIHN0cnVjdCBfRGVidWdJbmZvKiBkaSwgLyog Y29udGFpbmluZyBEZWJ1Z0luZm8gKi8KLSAgICAgICAgIGNvbnN0IEVsZlhYX1N5bSogc3ltLCAg ICAgICAgLyogRUxGIHN5bWJvbCAqLwotQEAgLTI3NiwxMyArMzA2LDEzIEBAIEJvb2wgZ2V0X2Vs Zl9zeW1ib2xfaW5mbyAoCi0gCi0gICAgLyogRmlndXJlIG91dCBpZiB3ZSdyZSBpbnRlcmVzdGVk IGluIHRoZSBzeW1ib2wuICBGaXJzdGx5LCBpcyBpdCBvZgotICAgICAgIHRoZSByaWdodCBmbGF2 b3VyPyAgKi8KLS0gICBwbGF1c2libGUgCi0tICAgICAgPSAoRUxGWFhfU1RfQklORChzeW0tPnN0 X2luZm8pID09IFNUQl9HTE9CQUwgCi0tICAgICAgICAgfHwgRUxGWFhfU1RfQklORChzeW0tPnN0 X2luZm8pID09IFNUQl9MT0NBTCAKLSsgICBwbGF1c2libGUKLSsgICAgICA9IChFTEZYWF9TVF9C SU5EKHN5bS0+c3RfaW5mbykgPT0gU1RCX0dMT0JBTAotKyAgICAgICAgIHx8IEVMRlhYX1NUX0JJ TkQoc3ltLT5zdF9pbmZvKSA9PSBTVEJfTE9DQUwKLSAgICAgICAgICB8fCBFTEZYWF9TVF9CSU5E KHN5bS0+c3RfaW5mbykgPT0gU1RCX1dFQUsKLSAgICAgICAgICkKLSAgICAgICAgICYmCi0tICAg ICAgICAoRUxGWFhfU1RfVFlQRShzeW0tPnN0X2luZm8pID09IFNUVF9GVU5DIAotKyAgICAgICAg KEVMRlhYX1NUX1RZUEUoc3ltLT5zdF9pbmZvKSA9PSBTVFRfRlVOQwotICAgICAgICAgIHx8IEVM RlhYX1NUX1RZUEUoc3ltLT5zdF9pbmZvKSA9PSBTVFRfT0JKRUNUCi0gIyAgICAgICAgaWZkZWYg U1RUX0dOVV9JRlVOQwotICAgICAgICAgIHx8IEVMRlhYX1NUX1RZUEUoc3ltLT5zdF9pbmZvKSA9 PSBTVFRfR05VX0lGVU5DCi1AQCAtMzI0LDQyICszNTQsNDIgQEAgQm9vbCBnZXRfZWxmX3N5bWJv bF9pbmZvICgKLSAgICAgICB0aGUgcHJldmlvdXNseSBkZWR1Y2VkIHNlY3Rpb24gc3ZtYSBhZGRy ZXNzIHJhbmdlcyBhcmUgd3JvbmcuICovCi0gICAgaWYgKGRpLT50ZXh0X3ByZXNlbnQKLSAgICAg ICAgJiYgZGktPnRleHRfc2l6ZSA+IDAKLS0gICAgICAgJiYgc3ltX3N2bWEgPj0gdGV4dF9zdm1h IAotKyAgICAgICAmJiBzeW1fc3ZtYSA+PSB0ZXh0X3N2bWEKLSAgICAgICAgJiYgc3ltX3N2bWEg PCB0ZXh0X3N2bWEgKyBkaS0+dGV4dF9zaXplKSB7Ci0gICAgICAgKmlzX3RleHRfb3V0ID0gVHJ1 ZTsKLSAgICAgICAoKnN5bV9hdm1hc19vdXQpLm1haW4gKz0gdGV4dF9iaWFzOwotICAgIH0gZWxz ZQotICAgIGlmIChkaS0+ZGF0YV9wcmVzZW50Ci0gICAgICAgICYmIGRpLT5kYXRhX3NpemUgPiAw Ci0tICAgICAgICYmIHN5bV9zdm1hID49IGRhdGFfc3ZtYSAKLSsgICAgICAgJiYgc3ltX3N2bWEg Pj0gZGF0YV9zdm1hCi0gICAgICAgICYmIHN5bV9zdm1hIDwgZGF0YV9zdm1hICsgZGktPmRhdGFf c2l6ZSkgewotICAgICAgICppc190ZXh0X291dCA9IEZhbHNlOwotICAgICAgICgqc3ltX2F2bWFz X291dCkubWFpbiArPSBkYXRhX2JpYXM7Ci0gICAgfSBlbHNlCi0gICAgaWYgKGRpLT5zZGF0YV9w cmVzZW50Ci0gICAgICAgICYmIGRpLT5zZGF0YV9zaXplID4gMAotLSAgICAgICAmJiBzeW1fc3Zt YSA+PSBzZGF0YV9zdm1hIAotKyAgICAgICAmJiBzeW1fc3ZtYSA+PSBzZGF0YV9zdm1hCi0gICAg ICAgICYmIHN5bV9zdm1hIDwgc2RhdGFfc3ZtYSArIGRpLT5zZGF0YV9zaXplKSB7Ci0gICAgICAg KmlzX3RleHRfb3V0ID0gRmFsc2U7Ci0gICAgICAgKCpzeW1fYXZtYXNfb3V0KS5tYWluICs9IHNk YXRhX2JpYXM7Ci0gICAgfSBlbHNlCi0gICAgaWYgKGRpLT5yb2RhdGFfcHJlc2VudAotICAgICAg ICAmJiBkaS0+cm9kYXRhX3NpemUgPiAwCi0tICAgICAgICYmIHN5bV9zdm1hID49IHJvZGF0YV9z dm1hIAotKyAgICAgICAmJiBzeW1fc3ZtYSA+PSByb2RhdGFfc3ZtYQotICAgICAgICAmJiBzeW1f c3ZtYSA8IHJvZGF0YV9zdm1hICsgZGktPnJvZGF0YV9zaXplKSB7Ci0gICAgICAgKmlzX3RleHRf b3V0ID0gRmFsc2U7Ci0gICAgICAgKCpzeW1fYXZtYXNfb3V0KS5tYWluICs9IHJvZGF0YV9iaWFz OwotICAgIH0gZWxzZQotICAgIGlmIChkaS0+YnNzX3ByZXNlbnQKLSAgICAgICAgJiYgZGktPmJz c19zaXplID4gMAotLSAgICAgICAmJiBzeW1fc3ZtYSA+PSBic3Nfc3ZtYSAKLSsgICAgICAgJiYg c3ltX3N2bWEgPj0gYnNzX3N2bWEKLSAgICAgICAgJiYgc3ltX3N2bWEgPCBic3Nfc3ZtYSArIGRp LT5ic3Nfc2l6ZSkgewotICAgICAgICppc190ZXh0X291dCA9IEZhbHNlOwotICAgICAgICgqc3lt X2F2bWFzX291dCkubWFpbiArPSBic3NfYmlhczsKLSAgICB9IGVsc2UKLSAgICBpZiAoZGktPnNi c3NfcHJlc2VudAotICAgICAgICAmJiBkaS0+c2Jzc19zaXplID4gMAotLSAgICAgICAmJiBzeW1f c3ZtYSA+PSBzYnNzX3N2bWEgCi0rICAgICAgICYmIHN5bV9zdm1hID49IHNic3Nfc3ZtYQotICAg ICAgICAmJiBzeW1fc3ZtYSA8IHNic3Nfc3ZtYSArIGRpLT5zYnNzX3NpemUpIHsKLSAgICAgICAq aXNfdGV4dF9vdXQgPSBGYWxzZTsKLSAgICAgICAoKnN5bV9hdm1hc19vdXQpLm1haW4gKz0gc2Jz c19iaWFzOwotQEAgLTQ1Niw3ICs0ODYsNyBAQCBCb29sIGdldF9lbGZfc3ltYm9sX2luZm8gKAot ICAgICAgIHN5bWJvbCBkZWZpbmVkIGVsc2V3aGVyZSwgc28gaWdub3JlIGl0LiAqLwotICAgIGlm IChkaS0+Z290X3ByZXNlbnQKLSAgICAgICAgJiYgZGktPmdvdF9zaXplID4gMAotLSAgICAgICAm JiAoKnN5bV9hdm1hc19vdXQpLm1haW4gPj0gZGktPmdvdF9hdm1hIAotKyAgICAgICAmJiAoKnN5 bV9hdm1hc19vdXQpLm1haW4gPj0gZGktPmdvdF9hdm1hCi0gICAgICAgICYmICgqc3ltX2F2bWFz X291dCkubWFpbiA8ICBkaS0+Z290X2F2bWEgKyBkaS0+Z290X3NpemUpIHsKLSAgICAgICBpZiAo VFJBQ0VfU1lNVEFCX0VOQUJMRUQpIHsKLSAgICAgICAgICBIQ2hhciogc3ltX25hbWUgPSBNTF8o aW1nX3N0cmR1cCkoZXNjbl9zdHJ0YWItPmltZywKLUBAIC01MDksNyArNTM5LDcgQEAgQm9vbCBn ZXRfZWxmX3N5bWJvbF9pbmZvICgKLSAgICAgICBCb29sICAgZGV0YWlscyA9IDF8fEZhbHNlOwot IAotICAgICAgIGlmIChkZXRhaWxzKQotLSAgICAgICAgIFRSQUNFX1NZTVRBQigib3BkWFhYOiBv cGRfYmlhcyAlcCwgc3ltX3N2bWFfb3V0ICVwXG4iLCAKLSsgICAgICAgICBUUkFDRV9TWU1UQUIo Im9wZFhYWDogb3BkX2JpYXMgJXAsIHN5bV9zdm1hX291dCAlcFxuIiwKLSAgICAgICAgICAgICAg ICAgICAgICAgKHZvaWQqKShvcGRfYmlhcyksICh2b2lkKikoKnN5bV9hdm1hc19vdXQpLm1haW4p OwotIAotICAgICAgIGlmICghVkdfSVNfOF9BTElHTkVEKCgqc3ltX2F2bWFzX291dCkubWFpbikp IHsKLUBAIC01NjIsMTAgKzU5MiwxMCBAQCBCb29sIGdldF9lbGZfc3ltYm9sX2luZm8gKAotICAg ICAgIE1MXyhpbWdfZ2V0KSgmZm5fZGVzY3JbMF0sIGVzY25fb3BkLT5pbWcsCi0gICAgICAgICAg ICAgICAgICAgIGVzY25fb3BkLT5pb2ZmICsgb2Zmc2V0X2luX29wZCwgc2l6ZW9mKGZuX2Rlc2Ny KSk7Ci0gCi0tICAgICAgaWYgKGRldGFpbHMpIAotLSAgICAgICAgIFRSQUNFX1NZTVRBQigib3Bk WFhZOiBvZmZzZXQgJWQsICBmbl9kZXNjciAlcFxuIiwgCi0rICAgICAgaWYgKGRldGFpbHMpCi0r ICAgICAgICAgVFJBQ0VfU1lNVEFCKCJvcGRYWFk6IG9mZnNldCAlZCwgIGZuX2Rlc2NyICVwXG4i LAotICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRfaW5fb3BkLCBmbl9kZXNjcik7Ci0tICAg ICAgaWYgKGRldGFpbHMpIAotKyAgICAgIGlmIChkZXRhaWxzKQotICAgICAgICAgIFRSQUNFX1NZ TVRBQigib3BkWFhaOiAqZm5fZGVzY3IgJXBcbiIsICh2b2lkKikoZm5fZGVzY3JbMF0pKTsKLSAK LSAgICAgICAvKiBvcGRfYmlhcyBpcyB0aGUgd2hhdCB3ZSBoYXZlIHRvIGFkZCB0byBTVk1BcyBm b3VuZCBpbiAub3BkIHRvCi1AQCAtNjAzLDM4ICs2MzMsMzggQEAgQm9vbCBnZXRfZWxmX3N5bWJv bF9pbmZvICgKLSAKLSAgICAvKiBJZiBubyBwYXJ0IG9mIHRoZSBzeW1ib2wgZmFsbHMgd2l0aGlu IHRoZSBtYXBwZWQgcmFuZ2UsCi0gICAgICAgaWdub3JlIGl0LiAqLwotLSAgIAotLSAgIGluX3Rl eHQgCi0rCi0rICAgaW5fdGV4dAotICAgICAgID0gZGktPnRleHRfcHJlc2VudAotICAgICAgICAg JiYgZGktPnRleHRfc2l6ZSA+IDAKLSAgICAgICAgICYmICEoKCpzeW1fYXZtYXNfb3V0KS5tYWlu ICsgKnN5bV9zaXplX291dCA8PSBkaS0+dGV4dF9hdm1hCi0gICAgICAgICAgICAgIHx8ICgqc3lt X2F2bWFzX291dCkubWFpbiA+PSBkaS0+dGV4dF9hdm1hICsgZGktPnRleHRfc2l6ZSk7Ci0gCi0t ICAgaW5fZGF0YSAKLSsgICBpbl9kYXRhCi0gICAgICAgPSBkaS0+ZGF0YV9wcmVzZW50Ci0gICAg ICAgICAmJiBkaS0+ZGF0YV9zaXplID4gMAotICAgICAgICAgJiYgISgoKnN5bV9hdm1hc19vdXQp Lm1haW4gKyAqc3ltX3NpemVfb3V0IDw9IGRpLT5kYXRhX2F2bWEKLSAgICAgICAgICAgICAgfHwg KCpzeW1fYXZtYXNfb3V0KS5tYWluID49IGRpLT5kYXRhX2F2bWEgKyBkaS0+ZGF0YV9zaXplKTsK LSAKLS0gICBpbl9zZGF0YSAKLSsgICBpbl9zZGF0YQotICAgICAgID0gZGktPnNkYXRhX3ByZXNl bnQKLSAgICAgICAgICYmIGRpLT5zZGF0YV9zaXplID4gMAotICAgICAgICAgJiYgISgoKnN5bV9h dm1hc19vdXQpLm1haW4gKyAqc3ltX3NpemVfb3V0IDw9IGRpLT5zZGF0YV9hdm1hCi0gICAgICAg ICAgICAgIHx8ICgqc3ltX2F2bWFzX291dCkubWFpbiA+PSBkaS0+c2RhdGFfYXZtYSArIGRpLT5z ZGF0YV9zaXplKTsKLSAKLS0gICBpbl9yb2RhdGEgCi0rICAgaW5fcm9kYXRhCi0gICAgICAgPSBk aS0+cm9kYXRhX3ByZXNlbnQKLSAgICAgICAgICYmIGRpLT5yb2RhdGFfc2l6ZSA+IDAKLSAgICAg ICAgICYmICEoKCpzeW1fYXZtYXNfb3V0KS5tYWluICsgKnN5bV9zaXplX291dCA8PSBkaS0+cm9k YXRhX2F2bWEKLSAgICAgICAgICAgICAgfHwgKCpzeW1fYXZtYXNfb3V0KS5tYWluID49IGRpLT5y b2RhdGFfYXZtYSArIGRpLT5yb2RhdGFfc2l6ZSk7Ci0gCi0tICAgaW5fYnNzIAotKyAgIGluX2Jz cwotICAgICAgID0gZGktPmJzc19wcmVzZW50Ci0gICAgICAgICAmJiBkaS0+YnNzX3NpemUgPiAw Ci0gICAgICAgICAmJiAhKCgqc3ltX2F2bWFzX291dCkubWFpbiArICpzeW1fc2l6ZV9vdXQgPD0g ZGktPmJzc19hdm1hCi0gICAgICAgICAgICAgIHx8ICgqc3ltX2F2bWFzX291dCkubWFpbiA+PSBk aS0+YnNzX2F2bWEgKyBkaS0+YnNzX3NpemUpOwotIAotLSAgIGluX3Nic3MgCi0rICAgaW5fc2Jz cwotICAgICAgID0gZGktPnNic3NfcHJlc2VudAotICAgICAgICAgJiYgZGktPnNic3Nfc2l6ZSA+ IDAKLSAgICAgICAgICYmICEoKCpzeW1fYXZtYXNfb3V0KS5tYWluICsgKnN5bV9zaXplX291dCA8 PSBkaS0+c2Jzc19hdm1hCi1AQCAtNzQyLDcgKzc3Miw3IEBAIEJvb2wgZ2V0X2VsZl9zeW1ib2xf aW5mbyAoCi0gICAgIm5vcm1hbCIgY2FzZSAoe3g4NixhbWQ2NCxwcGMzMixhcm0sbWlwczMyLG1p cHM2NCwgcHBjNjRsZX0tbGludXgpLiAqLwotIHN0YXRpYwotIF9fYXR0cmlidXRlX18oKHVudXNl ZCkpIC8qIG5vdCByZWZlcnJlZCB0byBvbiBhbGwgdGFyZ2V0cyAqLwotLXZvaWQgcmVhZF9lbGZf c3ltdGFiX19ub3JtYWwoIAotK3ZvaWQgcmVhZF9lbGZfc3ltdGFiX19ub3JtYWwoCi0gICAgICAg ICBzdHJ1Y3QgX0RlYnVnSW5mbyogZGksIGNvbnN0IEhDaGFyKiB0YWJfbmFtZSwKLSAgICAgICAg IERpU2xpY2UqICAgZXNjbl9zeW10YWIsCi0gICAgICAgICBEaVNsaWNlKiAgIGVzY25fc3RydGFi LAotQEAgLTc4MSwxMCArODExLDEwIEBAIHZvaWQgcmVhZF9lbGZfc3ltdGFiX19ub3JtYWwoCi0g ICAgICAgc3ltX2F2bWFzX3JlYWxseS5tYWluID0gMDsKLSAgICAgICBTRVRfVE9DUFRSX0FWTUEo c3ltX2F2bWFzX3JlYWxseSwgMCk7Ci0gICAgICAgU0VUX0xPQ0FMX0VQX0FWTUEoc3ltX2F2bWFz X3JlYWxseSwgMCk7Ci0tICAgICAgaWYgKGdldF9lbGZfc3ltYm9sX2luZm8oZGksICZzeW0sIHN5 bV9uYW1lLCBlc2NuX3N0cnRhYiwgCi0rICAgICAgaWYgKGdldF9lbGZfc3ltYm9sX2luZm8oZGks ICZzeW0sIHN5bV9uYW1lLCBlc2NuX3N0cnRhYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzeW1fc3ZtYSwgc3ltdGFiX2luX2RlYnVnLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVzY25fb3BkLCBkaS0+dGV4dF9iaWFzLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZzeW1fbmFtZV9yZWFsbHksIAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZzeW1fbmFtZV9yZWFsbHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN5bV9h dm1hc19yZWFsbHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN5bV9zaXplLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmcm9tX29wZCwgJmlzX3RleHQsICZpc19p ZnVuYykpIHsKLUBAIC04MjksNyArODU5LDcgQEAgdm9pZCByZWFkX2VsZl9zeW10YWJfX25vcm1h bCgKLSAgICBwcGM2NGJlLWxpbnV4LCB3aGljaCByZXF1aXJlcyBzcGVjaWFsIHRyZWF0bWVudC4g Ki8KLSAKLSB0eXBlZGVmCi0tICAgc3RydWN0IHsgCi0rICAgc3RydWN0IHsKLSAgICAgICBBZGRy ICAgYWRkcjsKLSAgICAgICBEaU9mZlQgbmFtZTsKLSAgICAgICAvKiBXZSBoYXZlIHRvIHN0b3Jl IGFsc28gdGhlIERpSW1hZ2UqIHNvIGFzIHRvIGdpdmUgY29udGV4dCBmb3IKLUBAIC04NjgsNyAr ODk4LDcgQEAgdm9pZCByZWFkX2VsZl9zeW10YWJfX3BwYzY0YmVfbGludXgoCi0gICAgICAgICBz dHJ1Y3QgX0RlYnVnSW5mbyogZGksIGNvbnN0IEhDaGFyKiB0YWJfbmFtZSwKLSAgICAgICAgIERp U2xpY2UqICAgZXNjbl9zeW10YWIsCi0gICAgICAgICBEaVNsaWNlKiAgIGVzY25fc3RydGFiLAot LSAgICAgICAgRGlTbGljZSogICBlc2NuX29wZCwgLyogcHBjNjRiZS1saW51eCBvbmx5ICovIAot KyAgICAgICAgRGlTbGljZSogICBlc2NuX29wZCwgLyogcHBjNjRiZS1saW51eCBvbmx5ICovCi0g ICAgICAgICBCb29sICAgICAgIHN5bXRhYl9pbl9kZWJ1ZwotICAgICAgKQotIHsKLUBAIC04OTAs OCArOTIwLDggQEAgdm9pZCByZWFkX2VsZl9zeW10YWJfX3BwYzY0YmVfbGludXgoCi0gICAgVFJB Q0VfU1lNVEFCKCJcbi0tLSBSZWFkaW5nIChFTEYsIHBwYzY0YmUtbGludXgpICVzICglbGx1IGVu dHJpZXMpIC0tLVxuIiwKLSAgICAgICAgICAgICAgICAgdGFiX25hbWUsIGVzY25fc3ltdGFiLT5z ekIvc2l6ZW9mKEVsZlhYX1N5bSkgKTsKLSAKLS0gICBvc2V0ID0gVkdfKE9TZXRHZW5fQ3JlYXRl KSggb2Zmc2V0b2YoVGVtcFN5bSxrZXkpLCAKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKE9TZXRDbXBfdCljbXBfVGVtcFN5bUtleSwgCi0rICAgb3NldCA9IFZHXyhPU2V0R2VuX0Ny ZWF0ZSkoIG9mZnNldG9mKFRlbXBTeW0sa2V5KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKE9TZXRDbXBfdCljbXBfVGVtcFN5bUtleSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTUxfKGRpbmZvX3phbGxvYyksICJkaS5yZXNwbC4xIiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTUxfKGRpbmZvX2ZyZWUpICk7Ci0gCi1AQCAtOTIwLDcgKzk1MCw3 IEBAIHZvaWQgcmVhZF9lbGZfc3ltdGFiX19wcGM2NGJlX2xpbnV4KAotICAgICAgIGlmIChnZXRf ZWxmX3N5bWJvbF9pbmZvKGRpLCAmc3ltLCBzeW1fbmFtZSwgZXNjbl9zdHJ0YWIsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3ltX3N2bWEsIHN5bXRhYl9pbl9kZWJ1ZywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlc2NuX29wZCwgZGktPnRleHRfYmlhcywKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmc3ltX25hbWVfcmVhbGx5LCAKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmc3ltX25hbWVfcmVhbGx5LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZzeW1fYXZtYXNfcmVhbGx5LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZzeW1fc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJvbV9v cGQsICZpc190ZXh0LCAmaXNfaWZ1bmMpKSB7Ci1AQCAtOTM4LDcgKzk2OCw3IEBAIHZvaWQgcmVh ZF9lbGZfc3ltdGFiX19wcGM2NGJlX2xpbnV4KAotICAgICAgICAgICAgIG1vZGlmeV90b2NwdHIg PSBGYWxzZTsKLSAgICAgICAgICAgICBvbGRfc2l6ZSAgID0gMDsKLSAKLS0gICAgICAgICAgICBp ZiAocHJldi0+ZnJvbV9vcGQgJiYgIWZyb21fb3BkIAotKyAgICAgICAgICAgIGlmIChwcmV2LT5m cm9tX29wZCAmJiAhZnJvbV9vcGQKLSAgICAgICAgICAgICAgICAgJiYgKHByZXYtPnNpemUgPT0g MjQgfHwgcHJldi0+c2l6ZSA9PSAxNikKLSAgICAgICAgICAgICAgICAgJiYgc3ltX3NpemUgIT0g cHJldi0+c2l6ZSkgewotICAgICAgICAgICAgICAgIC8qIEV4aXN0aW5nIG9uZSBpcyBhbiBvcGQt cmVkaXJlY3QsIHdpdGggYSBib2d1cyBzaXplLAotQEAgLTk3Miw3ICsxMDAyLDcgQEAgdm9pZCBy ZWFkX2VsZl9zeW10YWJfX3BwYzY0YmVfbGludXgoCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgb2xkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldi0+a2V5LmFkZHIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldi0+dG9jcHRyLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByZXYtPnNpemUsIAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHByZXYtPnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldi0+a2V5Lm5hbWUK LSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgIH0KLUBAIC0xMDk1LDcgKzExMjUsNyBA QCBIQ2hhciogZmluZF9idWlsZGlkKERpSW1hZ2UqIGltZywgQm9vbCByZWxfb2ssIEJvb2wgc2Vh cmNoX3NoZHJzKQotICAgICAgICAgICAgICAgICAgIFdvcmQgajsKLSAgICAgICAgICAgICAgICAg ICBmb3IgKGogPSAwOyBqIDwgbm90ZS5uX2Rlc2NzejsgaisrKSB7Ci0gICAgICAgICAgICAgICAg ICAgICAgVUNoYXIgZGVzY19qID0gTUxfKGltZ19nZXRfVUNoYXIpKGltZywgZGVzY19pb2ZmICsg aik7Ci0tICAgICAgICAgICAgICAgICAgICAgVkdfKHNwcmludGYpKGJ1aWxkaWQgKyBWR18oc3Ry bGVuKShidWlsZGlkKSwgCi0rICAgICAgICAgICAgICAgICAgICAgVkdfKHNwcmludGYpKGJ1aWxk aWQgKyBWR18oc3RybGVuKShidWlsZGlkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiUwMngiLCAoVUludClkZXNjX2opOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgICAgICB9Ci1AQCAtMTEwMyw3ICsxMTMzLDcgQEAgSENoYXIqIGZpbmRfYnVpbGRpZChE aUltYWdlKiBpbWcsIEJvb2wgcmVsX29rLCBCb29sIHNlYXJjaF9zaGRycykKLSAgICAgICAgICAg ICAgICBub3RlX2lvZmYgPSBub3RlX2lvZmYgKyBzaXplb2YoRWxmWFhfTmhkcikKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoKG5vdGUubl9uYW1lc3ogKyAzKSAmIH4z KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICgobm90ZS5uX2Rlc2Nz eiArIDMpICYgfjMpOwotLSAgICAgICAgICAgIH0gICAgICAgICAgICAKLSsgICAgICAgICAgICB9 Ci0gICAgICAgICAgfQotICAgICAgIH0KLSAKLUBAIC0xMTM1LDcgKzExNjUsNyBAQCBIQ2hhciog ZmluZF9idWlsZGlkKERpSW1hZ2UqIGltZywgQm9vbCByZWxfb2ssIEJvb2wgc2VhcmNoX3NoZHJz KQotICAgICAgICAgICAgICAgICAgIFdvcmQgajsKLSAgICAgICAgICAgICAgICAgICBmb3IgKGog PSAwOyBqIDwgbm90ZS5uX2Rlc2NzejsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgVUNo YXIgZGVzY19qID0gTUxfKGltZ19nZXRfVUNoYXIpKGltZywgZGVzY19pb2ZmICsgaik7Ci0tICAg ICAgICAgICAgICAgICAgICAgVkdfKHNwcmludGYpKGJ1aWxkaWQgKyBWR18oc3RybGVuKShidWls ZGlkKSwgCi0rICAgICAgICAgICAgICAgICAgICAgVkdfKHNwcmludGYpKGJ1aWxkaWQgKyBWR18o c3RybGVuKShidWlsZGlkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUw MngiLCAoVUludClkZXNjX2opOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg ICB9Ci1AQCAtMTE0Myw3ICsxMTczLDcgQEAgSENoYXIqIGZpbmRfYnVpbGRpZChEaUltYWdlKiBp bWcsIEJvb2wgcmVsX29rLCBCb29sIHNlYXJjaF9zaGRycykKLSAgICAgICAgICAgICAgICBub3Rl X2lvZmYgPSBub3RlX2lvZmYgKyBzaXplb2YoRWxmWFhfTmhkcikKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKyAoKG5vdGUubl9uYW1lc3ogKyAzKSAmIH4zKQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICgobm90ZS5uX2Rlc2NzeiArIDMpICYg fjMpOwotLSAgICAgICAgICAgIH0gICAgICAgICAgICAKLSsgICAgICAgICAgICB9Ci0gICAgICAg ICAgfQotICAgICAgIH0KLSAgICB9Ci1AQCAtMTE2Nyw3ICsxMTk3LDcgQEAgc3RhdGljCi0gRGlJ bWFnZSogb3Blbl9kZWJ1Z19maWxlKCBjb25zdCBIQ2hhciogbmFtZSwgY29uc3QgSENoYXIqIGJ1 aWxkaWQsIFVJbnQgY3JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbCByZWxfb2ss IGNvbnN0IEhDaGFyKiBzZXJ2ZXJBZGRyICkKLSB7Ci0tICAgRGlJbWFnZSogZGltZyAKLSsgICBE aUltYWdlKiBkaW1nCi0gICAgICA9IHNlcnZlckFkZHIgPyBNTF8oaW1nX2Zyb21fZGlfc2VydmVy KShuYW1lLCBzZXJ2ZXJBZGRyKQotICAgICAgICAgICAgICAgICAgIDogTUxfKGltZ19mcm9tX2xv Y2FsX2ZpbGUpKG5hbWUpOwotICAgIGlmIChkaW1nID09IE5VTEwpCi1AQCAtMTE5MSw4ICsxMjIx LDggQEAgRGlJbWFnZSogb3Blbl9kZWJ1Z19maWxlKCBjb25zdCBIQ2hhciogbmFtZSwgY29uc3Qg SENoYXIqIGJ1aWxkaWQsIFVJbnQgY3JjLAotICAgICAgIGlmIChkZWJ1Z19idWlsZGlkID09IE5V TEwgfHwgVkdfKHN0cmNtcCkoYnVpbGRpZCwgZGVidWdfYnVpbGRpZCkgIT0gMCkgewotICAgICAg ICAgIE1MXyhpbWdfZG9uZSkoZGltZyk7Ci0gICAgICAgICAgaWYgKFZHXyhjbG9fdmVyYm9zaXR5 KSA+IDEpCi0tICAgICAgICAgICAgVkdfKG1lc3NhZ2UpKFZnX0RlYnVnTXNnLCAKLS0gICAgICAg ICAgICAgICAiICAuLiBidWlsZC1pZCBtaXNtYXRjaCAoZm91bmQgJXMgd2FudGVkICVzKVxuIiwg Ci0rICAgICAgICAgICAgVkdfKG1lc3NhZ2UpKFZnX0RlYnVnTXNnLAotKyAgICAgICAgICAgICAg ICIgIC4uIGJ1aWxkLWlkIG1pc21hdGNoIChmb3VuZCAlcyB3YW50ZWQgJXMpXG4iLAotICAgICAg ICAgICAgICAgIGRlYnVnX2J1aWxkaWQsIGJ1aWxkaWQpOwotICAgICAgICAgIE1MXyhkaW5mb19m cmVlKShkZWJ1Z19idWlsZGlkKTsKLSAgICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0xMjA1LDcg KzEyMzUsNyBAQCBEaUltYWdlKiBvcGVuX2RlYnVnX2ZpbGUoIGNvbnN0IEhDaGFyKiBuYW1lLCBj b25zdCBIQ2hhciogYnVpbGRpZCwgVUludCBjcmMsCi0gICAgICAgaWYgKGNhbGNjcmMgIT0gY3Jj KSB7Ci0gICAgICAgICAgTUxfKGltZ19kb25lKShkaW1nKTsKLSAgICAgICAgICBpZiAoVkdfKGNs b192ZXJib3NpdHkpID4gMSkKLS0gICAgICAgICAgICBWR18obWVzc2FnZSkoVmdfRGVidWdNc2cs IAotKyAgICAgICAgICAgIFZHXyhtZXNzYWdlKShWZ19EZWJ1Z01zZywKLSAgICAgICAgICAgICAg ICAiICAuLiBDUkMgbWlzbWF0Y2ggKGNvbXB1dGVkICUwOHggd2FudGVkICUwOHgpXG4iLCBjYWxj Y3JjLCBjcmMpOwotICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgIH0KLUBAIC0xMjEzLDcg KzEyNDMsNyBAQCBEaUltYWdlKiBvcGVuX2RlYnVnX2ZpbGUoIGNvbnN0IEhDaGFyKiBuYW1lLCBj b25zdCBIQ2hhciogYnVpbGRpZCwgVUludCBjcmMsCi0gICAgICAgaWYgKFZHXyhjbG9fdmVyYm9z aXR5KSA+IDEpCi0gICAgICAgICAgVkdfKG1lc3NhZ2UpKFZnX0RlYnVnTXNnLCAiICAuLiBDUkMg aXMgdmFsaWRcbiIpOwotICAgIH0KLS0gICAKLSsKLSAgICByZXR1cm4gZGltZzsKLSB9Ci0gCi1A QCAtMTI3MCw3ICsxMzAwLDcgQEAgRGlJbWFnZSogZmluZF9kZWJ1Z19maWxlKCBzdHJ1Y3QgX0Rl YnVnSW5mbyogZGksCi0gICAgICAgVkdfKHNwcmludGYpKGRlYnVncGF0aCwgIiVzLy5kZWJ1Zy8l cyIsIG9iamRpciwgZGVidWduYW1lKTsKLSAgICAgICBkaW1nID0gb3Blbl9kZWJ1Z19maWxlKGRl YnVncGF0aCwgYnVpbGRpZCwgY3JjLCByZWxfb2ssIE5VTEwpOwotICAgICAgIGlmIChkaW1nICE9 IE5VTEwpIGdvdG8gZGltZ19vazsKLS0gICAgICAKLSsKLSAgICAgICBWR18oc3ByaW50ZikoZGVi dWdwYXRoLCAiL3Vzci9saWIvZGVidWclcy8lcyIsIG9iamRpciwgZGVidWduYW1lKTsKLSAgICAg ICBkaW1nID0gb3Blbl9kZWJ1Z19maWxlKGRlYnVncGF0aCwgYnVpbGRpZCwgY3JjLCByZWxfb2ss IE5VTEwpOwotICAgICAgIGlmIChkaW1nICE9IE5VTEwpIGdvdG8gZGltZ19vazsKLUBAIC0xNDIy LDYgKzE0NTIsNTAgQEAgV29yZCBmaWxlX29mZnNldF9mcm9tX3N2bWEgKCAvKk9VVCovQm9vbCog b2ssCi0gICAgcmV0dXJuIDA7Ci0gfQotIAotKy8qIENoZWNrIGlmIHNlY3Rpb24gaXMgY29tcHJl c3NlZCBhbmQgbW9kaWZ5IERpU2xpY2UgaWYgaXQgaXMuCi0rICAgUmV0dXJucyBGYWxzZSBpbiBj YXNlIG9mIHVuc3VwcG9ydGVkIGNvbXByZXNzaW9uIHR5cGUuCi0rKi8KLStzdGF0aWMgQm9vbCBj aGVja19jb21wcmVzc2lvbihFbGZYWF9TaGRyKiBoLCBEaVNsaWNlKiBzKSB7Ci0rICAgaWYgKGgt PnNoX2ZsYWdzICYgU0hGX0NPTVBSRVNTRUQpIHsKLSsgICAgICBFbGZYWF9DaGRyIGNoZHI7Ci0r ICAgICAgTUxfKGltZ19nZXQpKCZjaGRyLCBzLT5pbWcsIHMtPmlvZmYsIHNpemVvZihFbGZYWF9D aGRyKSk7Ci0rICAgICAgaWYgKGNoZHIuY2hfdHlwZSAhPSBFTEZDT01QUkVTU19aTElCKQotKyAg ICAgICAgIHJldHVybiBGYWxzZTsKLSsgICAgICBzLT5pb2ZmID0gTUxfKGltZ19tYXJrX2NvbXBy ZXNzZWRfcGFydCkocy0+aW1nLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzLT5pb2ZmICsgc2l6ZW9mKEVsZlhYX0NoZHIpLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5zekIgLSBzaXplb2YoRWxmWFhfQ2hk ciksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaXpl VCljaGRyLmNoX3NpemUpOwotKyAgICAgIHMtPnN6QiA9IGNoZHIuY2hfc2l6ZTsKLSsgICAgfSBl bHNlIGlmIChoLT5zaF9zaXplID4gU0laRV9PRl9aTElCX0hFQURFUikgewotKyAgICAgICAvKiBS ZWFkIHRoZSB6bGliIGhlYWRlci4gIEluIHRoaXMgY2FzZSwgaXQgc2hvdWxkIGJlICJaTElCIgot KyAgICAgICBmb2xsb3dlZCBieSB0aGUgdW5jb21wcmVzc2VkIHNlY3Rpb24gc2l6ZSwgOCBieXRl cyBpbiBCRSBvcmRlci4gKi8KLSsgICAgICAgVUNoYXIgdG1wW1NJWkVfT0ZfWkxJQl9IRUFERVJd OwotKyAgICAgICBNTF8oaW1nX2dldCkodG1wLCBzLT5pbWcsIHMtPmlvZmYsIFNJWkVfT0ZfWkxJ Ql9IRUFERVIpOwotKyAgICAgICBpZiAoVkdfKG1lbWNtcCkodG1wLCAiWkxJQiIsIDQpID09IDAp IHsKLSsgICAgICAgICAgU2l6ZVQgc2l6ZTsKLSsjICAgICAgICAgaWYgKFZHX1dPUkRTSVpFID09 IDgpCi0rICAgICAgICAgICAgIHNpemUgPSB0bXBbNF07IHNpemUgPDw9IDg7Ci0rICAgICAgICAg ICAgIHNpemUgKz0gdG1wWzVdOyBzaXplIDw8PSA4OwotKyAgICAgICAgICAgICBzaXplICs9IHRt cFs2XTsgc2l6ZSA8PD0gODsKLSsgICAgICAgICAgICAgc2l6ZSArPSB0bXBbN107IHNpemUgPDw9 IDg7Ci0rIyAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgdmdfYXNzZXJ0KCh0bXBbNF0gPT0g MCkgJiYgKHRtcFs1XSA9PSAwKSAmJiAodG1wWzZdID09IDApCi0rICAgICAgICAgICAgICAgICAg ICAgICAmJiAodG1wWzddID09IDApKTsKLSsgICAgICAgICAgICAgc2l6ZSA9IDA7Ci0rIyAgICAg ICAgIGVuZGlmCi0rICAgICAgICAgIHNpemUgKz0gdG1wWzhdOyBzaXplIDw8PSA4OwotKyAgICAg ICAgICBzaXplICs9IHRtcFs5XTsgc2l6ZSA8PD0gODsKLSsgICAgICAgICAgc2l6ZSArPSB0bXBb MTBdOyBzaXplIDw8PSA4OwotKyAgICAgICAgICBzaXplICs9IHRtcFsxMV07Ci0rICAgICAgICAg IHMtPmlvZmYgPSBNTF8oaW1nX21hcmtfY29tcHJlc3NlZF9wYXJ0KShzLT5pbWcsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5pb2ZmICsgU0la RV9PRl9aTElCX0hFQURFUiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHMtPnN6QiAtIFNJWkVfT0ZfWkxJQl9IRUFERVIsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplKTsKLSsgICAgICAgICAg cy0+c3pCID0gc2l6ZTsKLSsgICAgICAgfQotKyAgICB9Ci0rICAgIHJldHVybiBUcnVlOwotK30K LSAKLSAvKiBUaGUgY2VudHJhbCBmdW5jdGlvbiBmb3IgcmVhZGluZyBFTEYgZGVidWcgaW5mby4g IEZvciB0aGUKLSAgICBvYmplY3QvZXhlIHNwZWNpZmllZCBieSB0aGUgRGVidWdJbmZvLCBmaW5k IEVMRiBzZWN0aW9ucywgdGhlbiByZWFkCi1AQCAtMTYzOSw3ICsxNzEzLDcgQEAgQm9vbCBNTF8o cmVhZF9lbGZfZGVidWdfaW5mbykgKCBzdHJ1Y3QgX0RlYnVnSW5mbyogZGkgKQotICAgICAgc2hk cl9zdHJ0YWJfbWlvZmYKLSAgICAgICAgID0gZWhkcl9taW9mZiAvKiBpc24ndCB0aGlzIGFsd2F5 cyB6ZXJvPyAqLyArIGFfc2hkci5zaF9vZmZzZXQ7Ci0gCi0tICAgICBpZiAoIU1MXyhpbWdfdmFs aWQpKG1pbWcsIHNoZHJfc3RydGFiX21pb2ZmLCAKLSsgICAgIGlmICghTUxfKGltZ192YWxpZCko bWltZywgc2hkcl9zdHJ0YWJfbWlvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDEvKmJv Z3VzLCBidXQgd2UgZG9uJ3Qga25vdyB0aGUgcmVhbCBzaXplKi8gKSkgewotICAgICAgICAgTUxf KHN5bWVycikoZGksIFRydWUsICJJbnZhbGlkIEVMRiBTZWN0aW9uIEhlYWRlciBTdHJpbmcgVGFi bGUiKTsKLSAgICAgICAgIGdvdG8gb3V0OwotQEAgLTE2OTcsNyArMTc3MSw3IEBAIEJvb2wgTUxf KHJlYWRfZWxmX2RlYnVnX2luZm8pICggc3RydWN0IF9EZWJ1Z0luZm8qIGRpICkKLSAgICAgICAg ICAgICAgICAgICAgICAgJiYgbWFwLT5zaXplID4gMCAvKiBzdGF5IHNhbmUgKi8KLSAgICAgICAg ICAgICAgICAgICAgICAgJiYgYV9waGRyLnBfb2Zmc2V0ID49IG1hcC0+Zm9mZgotICAgICAgICAg ICAgICAgICAgICAgICAmJiBhX3BoZHIucF9vZmZzZXQgPCAgbWFwLT5mb2ZmICsgbWFwLT5zaXpl Ci0tICAgICAgICAgICAgICAgICAgICAgICYmIGFfcGhkci5wX29mZnNldCArIGFfcGhkci5wX2Zp bGVzeiAKLSsgICAgICAgICAgICAgICAgICAgICAgJiYgYV9waGRyLnBfb2Zmc2V0ICsgYV9waGRy LnBfZmlsZXN6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDw9IG1hcC0+Zm9mZiArIG1hcC0+ c2l6ZSkgewotICAgICAgICAgICAgICAgICAgICAgIFJhbmdlQW5kQmlhcyBpdGVtOwotICAgICAg ICAgICAgICAgICAgICAgIGl0ZW0uc3ZtYV9iYXNlICA9IGFfcGhkci5wX3ZhZGRyOwotQEAgLTE3 OTYsNyArMTg3MCw3IEBAIEJvb2wgTUxfKHJlYWRfZWxmX2RlYnVnX2luZm8pICggc3RydWN0IF9E ZWJ1Z0luZm8qIGRpICkKLSAKLSAgICAvKiBUT1BMRVZFTCAqLwotIAotLSAgIC8qIElmLCBhZnRl ciBsb29raW5nIGF0IGFsbCB0aGUgcHJvZ3JhbSBoZWFkZXJzLCB3ZSBzdGlsbCBkaWRuJ3QgCi0r ICAgLyogSWYsIGFmdGVyIGxvb2tpbmcgYXQgYWxsIHRoZSBwcm9ncmFtIGhlYWRlcnMsIHdlIHN0 aWxsIGRpZG4ndAotICAgICAgIGZpbmQgYSBzb25hbWUsIGFkZCBhIGZha2Ugb25lLiAqLwotICAg IGlmIChkaS0+c29uYW1lID09IE5VTEwpIHsKLSAgICAgICBUUkFDRV9TWU1UQUIoIk5vIHNvbmFt ZSBmb3VuZDsgdXNpbmcgKGZha2UpIFwiTk9ORVwiXG4iKTsKLUBAIC0xODY4LDcgKzE5NDIsNyBA QCBCb29sIE1MXyhyZWFkX2VsZl9kZWJ1Z19pbmZvKSAoIHN0cnVjdCBfRGVidWdJbmZvKiBkaSAp Ci0gICAgICAgfQotIAotICAgICAgIFRSQUNFX1NZTVRBQigiIFtzZWMgJTJsZF0gICVzICVzICBh bCUydSAgZm9mZiAlNmxkIC4uICU2bHUgICIKLS0gICAgICAgICAgICAgICAgICAgIiAgc3ZtYSAl cCAgbmFtZSBcIiVzXCJcbiIsIAotKyAgICAgICAgICAgICAgICAgICAiICBzdm1hICVwICBuYW1l IFwiJXNcIlxuIiwKLSAgICAgICAgICAgICAgICAgICAgaSwgaW5yeCA/ICJyeCIgOiAiICAiLCBp bnJ3ID8gInJ3IiA6ICIgICIsIGFseW4sCi0gICAgICAgICAgICAgICAgICAgIGZvZmYsIGZvZmYr c2l6ZS0xLCAodm9pZCopc3ZtYSwgbmFtZSk7Ci0gCi1AQCAtMTkxOSwxMCArMTk5MywxMCBAQCBC b29sIE1MXyhyZWFkX2VsZl9kZWJ1Z19pbmZvKSAoIHN0cnVjdCBfRGVidWdJbmZvKiBkaSApCi0g ICAgICAgICAgICAgZGktPnRleHRfZGVidWdfc3ZtYSA9IHN2bWE7Ci0gICAgICAgICAgICAgZGkt PnRleHRfZGVidWdfYmlhcyA9IGlucngtPmJpYXM7Ci0gICAgICAgICAgICAgVFJBQ0VfU1lNVEFC KCJhY3F1aXJpbmcgLnRleHQgc3ZtYSA9ICUjbHggLi4gJSNseFxuIiwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgZGktPnRleHRfc3ZtYSwgCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGRp LT50ZXh0X3N2bWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpLT50ZXh0X3N2bWEgKyBk aS0+dGV4dF9zaXplIC0gMSk7Ci0gICAgICAgICAgICAgVFJBQ0VfU1lNVEFCKCJhY3F1aXJpbmcg LnRleHQgYXZtYSA9ICUjbHggLi4gJSNseFxuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ZGktPnRleHRfYXZtYSwgCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGRpLT50ZXh0X2F2bWEs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpLT50ZXh0X2F2bWEgKyBkaS0+dGV4dF9zaXpl IC0gMSk7Ci0gICAgICAgICAgICAgVFJBQ0VfU1lNVEFCKCJhY3F1aXJpbmcgLnRleHQgYmlhcyA9 ICUjbHhcbiIsIChVV29yZClkaS0+dGV4dF9iaWFzKTsKLSAgICAgICAgICB9IGVsc2UgewotQEAg LTIwNjksNyArMjE0Myw3IEBAIEJvb2wgTUxfKHJlYWRfZWxmX2RlYnVnX2luZm8pICggc3RydWN0 IF9EZWJ1Z0luZm8qIGRpICkKLSAgICAgICAgICAgICAgICBWR18obWVzc2FnZSkoVmdfVXNlck1z ZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldhcm5pbmc6IHRoZSBmb2xsb3dpbmcg ZmlsZSdzIC5ic3MgaXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWFwcGVkIHIt eCBvbmx5IC0gaWdub3JpbmcgLmJzcyBzeW1zXG4iKTsKLS0gICAgICAgICAgICAgICBWR18obWVz c2FnZSkoVmdfVXNlck1zZywgICAiICVzXG4iLCBkaS0+ZnNtLmZpbGVuYW1lIAotKyAgICAgICAg ICAgICAgIFZHXyhtZXNzYWdlKShWZ19Vc2VyTXNnLCAgICIgJXNcbiIsIGRpLT5mc20uZmlsZW5h bWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA/IGRpLT5mc20uZmlsZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6ICIobnVsbD8hKSIgKTsKLSAgICAgICAgICAgICB9Ci1AQCAt MjIwMyw3ICsyMjc3LDcgQEAgQm9vbCBNTF8ocmVhZF9lbGZfZGVidWdfaW5mbykgKCBzdHJ1Y3Qg X0RlYnVnSW5mbyogZGkgKQotICAgICAgICAgICAgIGRpLT5wbHRfYXZtYSA9IHN2bWEgKyBpbnJ3 LT5iaWFzOwotICAgICAgICAgICAgIGRpLT5wbHRfc2l6ZSA9IHNpemU7Ci0gICAgICAgICAgICAg VFJBQ0VfU1lNVEFCKCJhY3F1aXJpbmcgLnBsdCBhdm1hID0gJSNseFxuIiwgZGktPnBsdF9hdm1h KTsKLS0gICAgICAgICB9IGVsc2UgCi0rICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgaWYgKCgh aW5ydykgJiYgKCFpbnJ4KSAmJiBzaXplID4gMCAmJiAhZGktPnBsdF9wcmVzZW50KSB7Ci0gICAg ICAgICAgICAgLyogRmlsZSBjb250YWlucyBhIC5wbHQsIGJ1dCBpdCBkaWRuJ3QgZ2V0IG1hcHBl ZC4KLSAgICAgICAgICAgICAgICBQcmVzdW1hYmx5IGl0IGlzIG5vdCByZXF1aXJlZCBvbiB0aGlz IHBsYXRmb3JtLiAgQXQKLUBAIC0yMjY1LDEwICsyMzM5LDEwIEBAIEJvb2wgTUxfKHJlYWRfZWxm X2RlYnVnX2luZm8pICggc3RydWN0IF9EZWJ1Z0luZm8qIGRpICkKLSAgICAgICAgICAgICBkaS0+ ZXhpZHhfc2l6ZSA9IHNpemU7Ci0gICAgICAgICAgICAgZGktPmV4aWR4X2JpYXMgPSBpbnJ4LT5i aWFzOwotICAgICAgICAgICAgIFRSQUNFX1NZTVRBQigiYWNxdWlyaW5nIC5leGlkeCBzdm1hID0g JSNseCAuLiAlI2x4XG4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBkaS0+ZXhpZHhfc3Zt YSwgCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGRpLT5leGlkeF9zdm1hLAotICAgICAgICAg ICAgICAgICAgICAgICAgICBkaS0+ZXhpZHhfc3ZtYSArIGRpLT5leGlkeF9zaXplIC0gMSk7Ci0g ICAgICAgICAgICAgVFJBQ0VfU1lNVEFCKCJhY3F1aXJpbmcgLmV4aWR4IGF2bWEgPSAlI2x4IC4u ICUjbHhcbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIGRpLT5leGlkeF9hdm1hLCAKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgZGktPmV4aWR4X2F2bWEsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgIGRpLT5leGlkeF9hdm1hICsgZGktPmV4aWR4X3NpemUgLSAxKTsKLSAgICAgICAg ICAgICBUUkFDRV9TWU1UQUIoImFjcXVpcmluZyAuZXhpZHggYmlhcyA9ICUjbHhcbiIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIChVV29yZClkaS0+ZXhpZHhfYmlhcyk7Ci1AQCAtMjI4OCwx MCArMjM2MiwxMCBAQCBCb29sIE1MXyhyZWFkX2VsZl9kZWJ1Z19pbmZvKSAoIHN0cnVjdCBfRGVi dWdJbmZvKiBkaSApCi0gICAgICAgICAgICAgZGktPmV4dGFiX3NpemUgPSBzaXplOwotICAgICAg ICAgICAgIGRpLT5leHRhYl9iaWFzID0gaW5yeC0+YmlhczsKLSAgICAgICAgICAgICBUUkFDRV9T WU1UQUIoImFjcXVpcmluZyAuZXh0YWIgc3ZtYSA9ICUjbHggLi4gJSNseFxuIiwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgZGktPmV4dGFiX3N2bWEsIAotKyAgICAgICAgICAgICAgICAgICAg ICAgICBkaS0+ZXh0YWJfc3ZtYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGktPmV4dGFi X3N2bWEgKyBkaS0+ZXh0YWJfc2l6ZSAtIDEpOwotICAgICAgICAgICAgIFRSQUNFX1NZTVRBQigi YWNxdWlyaW5nIC5leHRhYiBhdm1hID0gJSNseCAuLiAlI2x4XG4iLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICBkaS0+ZXh0YWJfYXZtYSwgCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGRp LT5leHRhYl9hdm1hLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkaS0+ZXh0YWJfYXZtYSAr IGRpLT5leHRhYl9zaXplIC0gMSk7Ci0gICAgICAgICAgICAgVFJBQ0VfU1lNVEFCKCJhY3F1aXJp bmcgLmV4dGFiIGJpYXMgPSAlI2x4XG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoVVdv cmQpZGktPmV4dGFiX2JpYXMpOwotQEAgLTIzNTQsNyArMjQyOCw3IEBAIEJvb2wgTUxfKHJlYWRf ZWxmX2RlYnVnX2luZm8pICggc3RydWN0IF9EZWJ1Z0luZm8qIGRpICkKLSAgICAgICBEaVNsaWNl IGRlYnVnX3N0cl9hbHRfZXNjbiAgPSBEaVNsaWNlX0lOVkFMSUQ7IC8vIC5kZWJ1Z19zdHIgICAg KGFsdCkKLSAgICAgICBEaVNsaWNlIGR3YXJmMWRfZXNjbiAgICAgICAgPSBEaVNsaWNlX0lOVkFM SUQ7IC8vIC5kZWJ1ZyAgICAgICAgKGR3YXJmMSkKLSAgICAgICBEaVNsaWNlIGR3YXJmMWxfZXNj biAgICAgICAgPSBEaVNsaWNlX0lOVkFMSUQ7IC8vIC5saW5lICAgICAgICAgKGR3YXJmMSkKLS0g ICAgICBEaVNsaWNlIG9wZF9lc2NuICAgICAgICAgICAgPSBEaVNsaWNlX0lOVkFMSUQ7IC8vIC5v cGQgKGR3YXJmMiwgCi0rICAgICAgRGlTbGljZSBvcGRfZXNjbiAgICAgICAgICAgID0gRGlTbGlj ZV9JTlZBTElEOyAvLyAub3BkIChkd2FyZjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICBwcGM2NGJlLWxpbnV4KQotICAgICAg IERpU2xpY2UgZWhmcmFtZV9lc2NuW05fRUhGUkFNRV9TRUNUU107ICAgICAgICAgLy8gLmVoX2Zy YW1lIChkd2FyZjIpCi0gCi1AQCAtMjM5MywxNSArMjQ2NywyMCBAQCBCb29sIE1MXyhyZWFkX2Vs Zl9kZWJ1Z19pbmZvKSAoIHN0cnVjdCBfRGVidWdJbmZvKiBkaSApCi0gICAgICAgICAgICAgICAg X3NlY19lc2NuLmltZyAgPSBtaW1nOyBcCi0gICAgICAgICAgICAgICAgX3NlY19lc2NuLmlvZmYg PSAoRGlPZmZUKWFfc2hkci5zaF9vZmZzZXQ7IFwKLSAgICAgICAgICAgICAgICBfc2VjX2VzY24u c3pCICA9IGFfc2hkci5zaF9zaXplOyBcCi0rICAgICAgICAgICAgICAgaWYgKCFjaGVja19jb21w cmVzc2lvbigmYV9zaGRyLCAmX3NlY19lc2NuKSkgeyBcCi0rICAgICAgICAgICAgICAgICAgTUxf KHN5bWVycikoZGksIFRydWUsICIgICBDb21wcmVzc2lvbiB0eXBlIGlzIHVuc3VwcG9ydGVkIik7 IFwKLSsgICAgICAgICAgICAgICAgICBnb3RvIG91dDsgXAotKyAgICAgICAgICAgICAgIH0gXAot ICAgICAgICAgICAgICAgIG5vYml0cyAgICAgICAgID0gYV9zaGRyLnNoX3R5cGUgPT0gU0hUX05P QklUUzsgXAotICAgICAgICAgICAgICAgIHZnX2Fzc2VydChfc2VjX2VzY24uaW1nICAhPSBOVUxM KTsgXAotICAgICAgICAgICAgICAgIHZnX2Fzc2VydChfc2VjX2VzY24uaW9mZiAhPSBEaU9mZlRf SU5WQUxJRCk7IFwKLSAgICAgICAgICAgICAgICBUUkFDRV9TWU1UQUIoICIlLTE4czogIGlvZmYg JWxsdSAuLiAlbGx1XG4iLCBcCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VjX25h bWUsIChVTG9uZylfc2VjX2VzY24uaW9mZiwgXAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKChVTG9uZylfc2VjX2VzY24uaW9mZikgKyBfc2VjX2VzY24uc3pCIC0gMSk7IFwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWNfbmFtZSwgKFVMb25nKWFfc2hkci5zaF9vZmZz ZXQsIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVUxvbmcpYV9zaGRyLnNoX29m ZnNldCkgKyBhX3NoZHIuc2hfc2l6ZSAtIDEpOyBcCi0gICAgICAgICAgICAgICAgLyogU0hUX05P QklUUyBzZWN0aW9ucyBoYXZlIHplcm8gc2l6ZSBpbiB0aGUgZmlsZS4gKi8gXAotICAgICAgICAg ICAgICAgIGlmICghbm9iaXRzICYmIFwKLS0gICAgICAgICAgICAgICAgICAgYV9zaGRyLnNoX29m ZnNldCArIF9zZWNfZXNjbi5zekIgPiBNTF8oaW1nX3NpemUpKG1pbWcpICkgeyBcCi0rICAgICAg ICAgICAgICAgICAgIGFfc2hkci5zaF9vZmZzZXQgKyBcCi0rICAgICAgICAgICAgICAgICAgICAg IGFfc2hkci5zaF9zaXplID4gTUxfKGltZ19yZWFsX3NpemUpKG1pbWcpKSB7IFwKLSAgICAgICAg ICAgICAgICAgICBNTF8oc3ltZXJyKShkaSwgVHJ1ZSwgXAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICIgICBzZWN0aW9uIGJleW9uZCBpbWFnZSBlbmQ/ISIpOyBcCi0gICAgICAgICAg ICAgICAgICAgZ290byBvdXQ7IFwKLUBAIC0yNDE0LDMzICsyNDkzLDU2IEBAIEJvb2wgTUxfKHJl YWRfZWxmX2RlYnVnX2luZm8pICggc3RydWN0IF9EZWJ1Z0luZm8qIGRpICkKLSAjICAgICAgICBk ZWZpbmUgRklORChfc2VjX25hbWUsIF9zZWNfZXNjbikgXAotICAgICAgICAgICAgIEZJTkRYKF9z ZWNfbmFtZSwgX3NlY19lc2NuLCAvKiovKQotIAotLSAgICAgICAgIC8qICAgTkFNRSAgICAgICAg ICAgICAgICAgIEVsZlNlYyAqLwotLSAgICAgICAgIEZJTkQoIi5keW5zeW0iLCAgICAgICAgICAg IGR5bnN5bV9lc2NuKQotLSAgICAgICAgIEZJTkQoIi5keW5zdHIiLCAgICAgICAgICAgIGR5bnN0 cl9lc2NuKQotLSAgICAgICAgIEZJTkQoIi5zeW10YWIiLCAgICAgICAgICAgIHN5bXRhYl9lc2Nu KQotLSAgICAgICAgIEZJTkQoIi5zdHJ0YWIiLCAgICAgICAgICAgIHN0cnRhYl9lc2NuKQotKyAg ICAgICAgIC8qICAgICAgTkFNRSAgICAgICAgICAgICAgICAgIEVsZlNlYyAqLwotKyAgICAgICAg IEZJTkQoICAgIi5keW5zeW0iLCAgICAgICAgICAgIGR5bnN5bV9lc2NuKQotKyAgICAgICAgIEZJ TkQoICAgIi5keW5zdHIiLCAgICAgICAgICAgIGR5bnN0cl9lc2NuKQotKyAgICAgICAgIEZJTkQo ICAgIi5zeW10YWIiLCAgICAgICAgICAgIHN5bXRhYl9lc2NuKQotKyAgICAgICAgIEZJTkQoICAg Ii5zdHJ0YWIiLCAgICAgICAgICAgIHN0cnRhYl9lc2NuKQotICMgICAgICAgIGlmIGRlZmluZWQo VkdPX3NvbGFyaXMpCi0tICAgICAgICAgRklORCgiLlNVTldfbGR5bnN5bSIsICAgICAgbGR5bnN5 bV9lc2NuKQotKyAgICAgICAgIEZJTkQoICAgIi5TVU5XX2xkeW5zeW0iLCAgICAgIGxkeW5zeW1f ZXNjbikKLSAjICAgICAgICBlbmRpZgotIAotLSAgICAgICAgIEZJTkQoIi5nbnVfZGVidWdsaW5r IiwgICAgIGRlYnVnbGlua19lc2NuKQotLSAgICAgICAgIEZJTkQoIi5nbnVfZGVidWdhbHRsaW5r IiwgIGRlYnVnYWx0bGlua19lc2NuKQotKyAgICAgICAgIEZJTkQoICAgIi5nbnVfZGVidWdsaW5r IiwgICAgIGRlYnVnbGlua19lc2NuKQotKyAgICAgICAgIEZJTkQoICAgIi5nbnVfZGVidWdhbHRs aW5rIiwgIGRlYnVnYWx0bGlua19lc2NuKQotKwotKyAgICAgICAgIEZJTkQoICAgIi5kZWJ1Z19s aW5lIiwgICAgICAgIGRlYnVnX2xpbmVfZXNjbikKLSsgICAgICAgICBpZiAoIU1MXyhzbGlfaXNf dmFsaWQpKGRlYnVnX2xpbmVfZXNjbikpCi0rICAgICAgICAgICAgRklORCgiLnpkZWJ1Z19saW5l IiwgICAgICAgZGVidWdfbGluZV9lc2NuKQotKwotKyAgICAgICAgIEZJTkQoICAgIi5kZWJ1Z19p bmZvIiwgICAgICAgIGRlYnVnX2luZm9fZXNjbikKLSsgICAgICAgICBpZiAoIU1MXyhzbGlfaXNf dmFsaWQpKGRlYnVnX2luZm9fZXNjbikpCi0rICAgICAgICAgICAgRklORCgiLnpkZWJ1Z19pbmZv IiwgICAgICAgZGVidWdfaW5mb19lc2NuKQotIAotLSAgICAgICAgIEZJTkQoIi5kZWJ1Z19saW5l IiwgICAgICAgIGRlYnVnX2xpbmVfZXNjbikKLS0gICAgICAgICBGSU5EKCIuZGVidWdfaW5mbyIs ICAgICAgICBkZWJ1Z19pbmZvX2VzY24pCi0tICAgICAgICAgRklORCgiLmRlYnVnX3R5cGVzIiwg ICAgICAgZGVidWdfdHlwZXNfZXNjbikKLS0gICAgICAgICBGSU5EKCIuZGVidWdfYWJicmV2Iiwg ICAgICBkZWJ1Z19hYmJ2X2VzY24pCi0tICAgICAgICAgRklORCgiLmRlYnVnX3N0ciIsICAgICAg ICAgZGVidWdfc3RyX2VzY24pCi0tICAgICAgICAgRklORCgiLmRlYnVnX3JhbmdlcyIsICAgICAg ZGVidWdfcmFuZ2VzX2VzY24pCi0tICAgICAgICAgRklORCgiLmRlYnVnX2xvYyIsICAgICAgICAg ZGVidWdfbG9jX2VzY24pCi0tICAgICAgICAgRklORCgiLmRlYnVnX2ZyYW1lIiwgICAgICAgZGVi dWdfZnJhbWVfZXNjbikKLSsgICAgICAgICBGSU5EKCAgICIuZGVidWdfdHlwZXMiLCAgICAgICBk ZWJ1Z190eXBlc19lc2NuKQotKyAgICAgICAgIGlmICghTUxfKHNsaV9pc192YWxpZCkoZGVidWdf dHlwZXNfZXNjbikpCi0rICAgICAgICAgICAgRklORCgiLnpkZWJ1Z190eXBlcyIsICAgICAgZGVi dWdfdHlwZXNfZXNjbikKLSAKLS0gICAgICAgICBGSU5EKCIuZGVidWciLCAgICAgICAgICAgICBk d2FyZjFkX2VzY24pCi0tICAgICAgICAgRklORCgiLmxpbmUiLCAgICAgICAgICAgICAgZHdhcmYx bF9lc2NuKQotKyAgICAgICAgIEZJTkQoICAgIi5kZWJ1Z19hYmJyZXYiLCAgICAgIGRlYnVnX2Fi YnZfZXNjbikKLSsgICAgICAgICBpZiAoIU1MXyhzbGlfaXNfdmFsaWQpKGRlYnVnX2FiYnZfZXNj bikpCi0rICAgICAgICAgICAgRklORCgiLnpkZWJ1Z19hYmJyZXYiLCAgICAgZGVidWdfYWJidl9l c2NuKQotIAotLSAgICAgICAgIEZJTkQoIi5vcGQiLCAgICAgICAgICAgICAgIG9wZF9lc2NuKQot KyAgICAgICAgIEZJTkQoICAgIi5kZWJ1Z19zdHIiLCAgICAgICAgIGRlYnVnX3N0cl9lc2NuKQot KyAgICAgICAgIGlmICghTUxfKHNsaV9pc192YWxpZCkoZGVidWdfc3RyX2VzY24pKQotKyAgICAg ICAgICAgIEZJTkQoIi56ZGVidWdfc3RyIiwgICAgICAgIGRlYnVnX3N0cl9lc2NuKQotIAotLSAg ICAgICAgIEZJTkRYKCIuZWhfZnJhbWUiLCAgICAgICAgIGVoZnJhbWVfZXNjbltlaGZyYW1lX21p eF0sCi0rICAgICAgICAgRklORCggICAiLmRlYnVnX3JhbmdlcyIsICAgICAgZGVidWdfcmFuZ2Vz X2VzY24pCi0rICAgICAgICAgaWYgKCFNTF8oc2xpX2lzX3ZhbGlkKShkZWJ1Z19yYW5nZXNfZXNj bikpCi0rICAgICAgICAgICAgRklORCgiLnpkZWJ1Z19yYW5nZXMiLCAgICAgZGVidWdfcmFuZ2Vz X2VzY24pCi0rCi0rICAgICAgICAgRklORCggICAiLmRlYnVnX2xvYyIsICAgICAgICAgZGVidWdf bG9jX2VzY24pCi0rICAgICAgICAgaWYgKCFNTF8oc2xpX2lzX3ZhbGlkKShkZWJ1Z19sb2NfZXNj bikpCi0rICAgICAgICAgICAgRklORCgiLnpkZWJ1Z19sb2MiLCAgICBkZWJ1Z19sb2NfZXNjbikK LSsKLSsgICAgICAgICBGSU5EKCAgICIuZGVidWdfZnJhbWUiLCAgICAgICBkZWJ1Z19mcmFtZV9l c2NuKQotKyAgICAgICAgIGlmICghTUxfKHNsaV9pc192YWxpZCkoZGVidWdfZnJhbWVfZXNjbikp Ci0rICAgICAgICAgICAgRklORCgiLnpkZWJ1Z19mcmFtZSIsICAgICAgZGVidWdfZnJhbWVfZXNj bikKLSsKLSsgICAgICAgICBGSU5EKCAgICIuZGVidWciLCAgICAgICAgICAgICBkd2FyZjFkX2Vz Y24pCi0rICAgICAgICAgRklORCggICAiLmxpbmUiLCAgICAgICAgICAgICAgZHdhcmYxbF9lc2Nu KQotKwotKyAgICAgICAgIEZJTkQoICAgIi5vcGQiLCAgICAgICAgICAgICAgIG9wZF9lc2NuKQot KwotKyAgICAgICAgIEZJTkRYKCAgIi5laF9mcmFtZSIsICAgICAgICAgIGVoZnJhbWVfZXNjbltl aGZyYW1lX21peF0sCi0gICAgICAgICAgICAgICAgZG8geyBlaGZyYW1lX21peCsrOyB2Z19hc3Nl cnQoZWhmcmFtZV9taXggPD0gTl9FSEZSQU1FX1NFQ1RTKTsKLSAgICAgICAgICAgICAgICB9IHdo aWxlICgwKQotICAgICAgICAgICkKLUBAIC0yNDc2LDcgKzI1NzgsNyBAQCBCb29sIE1MXyhyZWFk X2VsZl9kZWJ1Z19pbmZvKSAoIHN0cnVjdCBfRGVidWdJbmZvKiBkaSApCi0gICAgICAgaWYgKGJ1 aWxkaWQgIT0gTlVMTCB8fCBkZWJ1Z2xpbmtfZXNjbi5pbWcgIT0gTlVMTCkgewotICAgICAgICAg IC8qIERvIGhhdmUgYSBkZWJ1Z2xpbmsgc2VjdGlvbj8gKi8KLSAgICAgICAgICBpZiAoZGVidWds aW5rX2VzY24uaW1nICE9IE5VTEwpIHsKLS0gICAgICAgICAgICBVSW50IGNyY19vZmZzZXQgCi0r ICAgICAgICAgICAgVUludCBjcmNfb2Zmc2V0Ci0gICAgICAgICAgICAgICAgPSBWR19ST1VORFVQ KE1MXyhpbWdfc3RybGVuKShkZWJ1Z2xpbmtfZXNjbi5pbWcsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2xpbmtfZXNjbi5pb2ZmKSsxLCA0KTsKLSAg ICAgICAgICAgICB2Z19hc3NlcnQoY3JjX29mZnNldCArIHNpemVvZihVSW50KSA8PSBkZWJ1Z2xp bmtfZXNjbi5zekIpOwotQEAgLTI1ODIsNyArMjY4NCw3IEBAIEJvb2wgTUxfKHJlYWRfZWxmX2Rl YnVnX2luZm8pICggc3RydWN0IF9EZWJ1Z0luZm8qIGRpICkKLSAgICAgICAgICAgIHNoZHJfc3Ry dGFiX2Rpb2ZmID0gYV9zaGRyLnNoX29mZnNldDsKLSAgICAgICAgICAgIGlmICghTUxfKGltZ192 YWxpZCkoZGltZywgc2hkcl9zdHJ0YWJfZGlvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDEvKmJvZ3VzLCBidXQgd2UgZG9uJ3Qga25vdyB0aGUgcmVhbCBzaXplKi8pKSB7Ci0t ICAgICAgICAgICAgICBNTF8oc3ltZXJyKShkaSwgVHJ1ZSwgCi0rICAgICAgICAgICAgICBNTF8o c3ltZXJyKShkaSwgVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIEVM RiBTZWN0aW9uIEhlYWRlciBTdHJpbmcgVGFibGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAiIChkZWJ1Z2luZm8gZmlsZSkiKTsKLSAgICAgICAgICAgICAgIGdvdG8gb3V0OwotQEAgLTI1 OTIsNyArMjY5NCw3IEBAIEJvb2wgTUxfKHJlYWRfZWxmX2RlYnVnX2luZm8pICggc3RydWN0IF9E ZWJ1Z0luZm8qIGRpICkKLSAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZWhkcl9kaW1nLmVfcGhu dW07IGkrKykgewotICAgICAgICAgICAgIEVsZlhYX1BoZHIgYV9waGRyOwotICAgICAgICAgICAg IE1MXyhpbWdfZ2V0KSgmYV9waGRyLCBkaW1nLCBJTkRFWF9CSVMoZWhkcl9kaW1nLmVfcGhvZmYs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBw aGRyX2RlbnRfc3pCKSwgCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpLCBwaGRyX2RlbnRfc3pCKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YoYV9waGRyKSk7Ci0gICAgICAgICAgICAgaWYgKGFfcGhkci5wX3R5cGUgPT0gUFRf TE9BRCkgewotICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBWR18oc2l6ZVhBKShkaS0+ ZnNtLm1hcHMpOyBqKyspIHsKLUBAIC0yNjI1LDcgKzI3MjcsNyBAQCBCb29sIE1MXyhyZWFkX2Vs Zl9kZWJ1Z19pbmZvKSAoIHN0cnVjdCBfRGVidWdJbmZvKiBkaSApCi0gICAgICAgICAgZm9yIChp ID0gMDsgaSA8IGVoZHJfZGltZy5lX3NobnVtOyBpKyspIHsKLSAKLSAgICAgICAgICAgICAvKiBG aW5kIGRlYnVnIHN2bWEgYW5kIGJpYXMgaW5mb3JtYXRpb24gZm9yIHNlY3Rpb25zCi0tICAgICAg ICAgICAgICAgd2UgZm91bmQgaW4gdGhlIG1haW4gZmlsZS4gKi8gCi0rICAgICAgICAgICAgICAg d2UgZm91bmQgaW4gdGhlIG1haW4gZmlsZS4gKi8KLSAKLSAjICAgICAgICAgICBkZWZpbmUgRklO RChfc2VjLCBfc2VnKSBcCi0gICAgICAgICAgICAgZG8geyBcCi1AQCAtMjY5MCwxNiArMjc5Miwy MCBAQCBCb29sIE1MXyhyZWFkX2VsZl9kZWJ1Z19pbmZvKSAoIHN0cnVjdCBfRGVidWdJbmZvKiBk aSApCi0gICAgICAgICAgICAgICAgICAgX3NlY19lc2NuLmltZyAgPSBkaW1nOyBcCi0gICAgICAg ICAgICAgICAgICAgX3NlY19lc2NuLmlvZmYgPSAoRGlPZmZUKWFfc2hkci5zaF9vZmZzZXQ7ICBc Ci0gICAgICAgICAgICAgICAgICAgX3NlY19lc2NuLnN6QiAgPSBhX3NoZHIuc2hfc2l6ZTsgXAot KyAgICAgICAgICAgICAgICAgIGlmICghY2hlY2tfY29tcHJlc3Npb24oJmFfc2hkciwgJl9zZWNf ZXNjbikpIHsgXAotKyAgICAgICAgICAgICAgICAgICAgIE1MXyhzeW1lcnIpKGRpLCBUcnVlLCAi ICAgQ29tcHJlc3Npb24gdHlwZSBpcyB1bnN1cHBvcnRlZCIpOyBcCi0rICAgICAgICAgICAgICAg ICAgICAgZ290byBvdXQ7IFwKLSsgICAgICAgICAgICAgICAgICB9IFwKLSAgICAgICAgICAgICAg ICAgICBub2JpdHMgICAgICAgICA9IGFfc2hkci5zaF90eXBlID09IFNIVF9OT0JJVFM7IFwKLSAg ICAgICAgICAgICAgICAgICB2Z19hc3NlcnQoX3NlY19lc2NuLmltZyAgIT0gTlVMTCk7IFwKLSAg ICAgICAgICAgICAgICAgICB2Z19hc3NlcnQoX3NlY19lc2NuLmlvZmYgIT0gRGlPZmZUX0lOVkFM SUQpOyBcCi0gICAgICAgICAgICAgICAgICAgVFJBQ0VfU1lNVEFCKCAiJS0xOHM6IGRpb2ZmICVs bHUgLi4gJWxsdVxuIiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlY19u YW1lLCBcCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUxvbmcpX3NlY19lc2Nu LmlvZmYsIFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVUxvbmcpX3NlY19l c2NuLmlvZmYpICsgX3NlY19lc2NuLnN6QiAtIDEpOyBcCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoVUxvbmcpYV9zaGRyLnNoX29mZnNldCwgXAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChVTG9uZylhX3NoZHIuc2hfb2Zmc2V0KSArIGFfc2hkci5zaF9zaXpl IC0gMSk7IFwKLSAgICAgICAgICAgICAgICAgICAvKiBTSFRfTk9CSVRTIHNlY3Rpb25zIGhhdmUg emVybyBzaXplIGluIHRoZSBmaWxlLiAqLyBcCi0gICAgICAgICAgICAgICAgICAgaWYgKCFub2Jp dHMgJiYgYV9zaGRyLnNoX29mZnNldCBcCi0tICAgICAgICAgICAgICAgICAgICAgICsgX3NlY19l c2NuLnN6QiA+IE1MXyhpbWdfc2l6ZSkoZGltZykpIHsgXAotKyAgICAgICAgICAgICAgICAgICAg ICArIGFfc2hkci5zaF9zaXplID4gTUxfKGltZ19yZWFsX3NpemUpKF9zZWNfZXNjbi5pbWcpKSB7 IFwKLSAgICAgICAgICAgICAgICAgICAgICBNTF8oc3ltZXJyKShkaSwgVHJ1ZSwgXAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBzZWN0aW9uIGJleW9uZCBpbWFnZSBlbmQ/ ISIpOyBcCi0gICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7IFwKLUBAIC0yNzA3LDI0ICsy ODEzLDQ1IEBAIEJvb2wgTUxfKHJlYWRfZWxmX2RlYnVnX2luZm8pICggc3RydWN0IF9EZWJ1Z0lu Zm8qIGRpICkKLSAgICAgICAgICAgICAgICB9IFwKLSAgICAgICAgICAgICB9IHdoaWxlICgwKTsK LSAKLS0gICAgICAgICAgICAvKiBORUVERUQ/ICAgICAgICBOQU1FICAgICAgICAgICAgIEVsZlNl YyAqLwotLSAgICAgICAgICAgIEZJTkQobmVlZF9zeW10YWIsICIuc3ltdGFiIiwgICAgICAgc3lt dGFiX2VzY24pCi0tICAgICAgICAgICAgRklORChuZWVkX3N5bXRhYiwgIi5zdHJ0YWIiLCAgICAg ICBzdHJ0YWJfZXNjbikKLS0gICAgICAgICAgICBGSU5EKG5lZWRfZHdhcmYyLCAiLmRlYnVnX2xp bmUiLCAgIGRlYnVnX2xpbmVfZXNjbikKLS0gICAgICAgICAgICBGSU5EKG5lZWRfZHdhcmYyLCAi LmRlYnVnX2luZm8iLCAgIGRlYnVnX2luZm9fZXNjbikKLS0gICAgICAgICAgICBGSU5EKG5lZWRf ZHdhcmYyLCAiLmRlYnVnX3R5cGVzIiwgIGRlYnVnX3R5cGVzX2VzY24pCi0rICAgICAgICAgICAg LyogTkVFREVEPyAgICAgICAgICAgICAgIE5BTUUgICAgICAgICAgICAgICAgIEVsZlNlYyAqLwot KyAgICAgICAgICAgIEZJTkQoICAgbmVlZF9zeW10YWIsICAgICAiLnN5bXRhYiIsICAgICAgICAg ICBzeW10YWJfZXNjbikKLSsgICAgICAgICAgICBGSU5EKCAgIG5lZWRfc3ltdGFiLCAgICAgIi5z dHJ0YWIiLCAgICAgICAgICAgc3RydGFiX2VzY24pCi0rICAgICAgICAgICAgRklORCggICBuZWVk X2R3YXJmMiwgICAgICIuZGVidWdfbGluZSIsICAgICAgIGRlYnVnX2xpbmVfZXNjbikKLSsgICAg ICAgICAgICBpZiAoIU1MXyhzbGlfaXNfdmFsaWQpKGRlYnVnX2xpbmVfZXNjbikpCi0rICAgICAg ICAgICAgICAgRklORChuZWVkX2R3YXJmMiwgICAgICIuemRlYnVnX2xpbmUiLCAgICAgIGRlYnVn X2xpbmVfZXNjbikKLSsKLSsgICAgICAgICAgICBGSU5EKCAgIG5lZWRfZHdhcmYyLCAgICAgIi5k ZWJ1Z19pbmZvIiwgICAgICAgZGVidWdfaW5mb19lc2NuKQotKyAgICAgICAgICAgIGlmICghTUxf KHNsaV9pc192YWxpZCkoZGVidWdfaW5mb19lc2NuKSkKLSsgICAgICAgICAgICAgICBGSU5EKG5l ZWRfZHdhcmYyLCAgICAgIi56ZGVidWdfaW5mbyIsICAgICAgZGVidWdfaW5mb19lc2NuKQotKwot KyAgICAgICAgICAgIEZJTkQoICAgbmVlZF9kd2FyZjIsICAgICAiLmRlYnVnX3R5cGVzIiwgICAg ICBkZWJ1Z190eXBlc19lc2NuKQotKyAgICAgICAgICAgIGlmICghTUxfKHNsaV9pc192YWxpZCko ZGVidWdfdHlwZXNfZXNjbikpCi0rICAgICAgICAgICAgICAgRklORChuZWVkX2R3YXJmMiwgICAg ICIuemRlYnVnX3R5cGVzIiwgICAgIGRlYnVnX3R5cGVzX2VzY24pCi0rCi0rICAgICAgICAgICAg RklORCggICBuZWVkX2R3YXJmMiwgICAgICIuZGVidWdfYWJicmV2IiwgICAgIGRlYnVnX2FiYnZf ZXNjbikKLSsgICAgICAgICAgICBpZiAoIU1MXyhzbGlfaXNfdmFsaWQpKGRlYnVnX2FiYnZfZXNj bikpCi0rICAgICAgICAgICAgICAgRklORChuZWVkX2R3YXJmMiwgICAgICIuemRlYnVnX2FiYnJl diIsICAgIGRlYnVnX2FiYnZfZXNjbikKLSsKLSsgICAgICAgICAgICBGSU5EKCAgIG5lZWRfZHdh cmYyLCAgICAgIi5kZWJ1Z19zdHIiLCAgICAgICAgZGVidWdfc3RyX2VzY24pCi0rICAgICAgICAg ICAgaWYgKCFNTF8oc2xpX2lzX3ZhbGlkKShkZWJ1Z19zdHJfZXNjbikpCi0rICAgICAgICAgICAg ICAgRklORChuZWVkX2R3YXJmMiwgICAgICIuemRlYnVnX3N0ciIsICAgICAgIGRlYnVnX3N0cl9l c2NuKQotKwotKyAgICAgICAgICAgIEZJTkQoICAgbmVlZF9kd2FyZjIsICAgICAiLmRlYnVnX3Jh bmdlcyIsICAgICBkZWJ1Z19yYW5nZXNfZXNjbikKLSsgICAgICAgICAgICBpZiAoIU1MXyhzbGlf aXNfdmFsaWQpKGRlYnVnX3Jhbmdlc19lc2NuKSkKLSsgICAgICAgICAgICAgICBGSU5EKG5lZWRf ZHdhcmYyLCAgICAgIi56ZGVidWdfcmFuZ2VzIiwgICAgZGVidWdfcmFuZ2VzX2VzY24pCi0gCi0t ICAgICAgICAgICAgRklORChuZWVkX2R3YXJmMiwgIi5kZWJ1Z19hYmJyZXYiLCBkZWJ1Z19hYmJ2 X2VzY24pCi0tICAgICAgICAgICAgRklORChuZWVkX2R3YXJmMiwgIi5kZWJ1Z19zdHIiLCAgICBk ZWJ1Z19zdHJfZXNjbikKLS0gICAgICAgICAgICBGSU5EKG5lZWRfZHdhcmYyLCAiLmRlYnVnX3Jh bmdlcyIsIGRlYnVnX3Jhbmdlc19lc2NuKQotKyAgICAgICAgICAgIEZJTkQoICAgbmVlZF9kd2Fy ZjIsICAgICAiLmRlYnVnX2xvYyIsICAgICAgICBkZWJ1Z19sb2NfZXNjbikKLSsgICAgICAgICAg ICBpZiAoIU1MXyhzbGlfaXNfdmFsaWQpKGRlYnVnX2xvY19lc2NuKSkKLSsgICAgICAgICAgICAg ICBGSU5EKG5lZWRfZHdhcmYyLCAgICAgIi56ZGVidWdfbG9jIiwgICAgICAgZGVidWdfbG9jX2Vz Y24pCi0gCi0tICAgICAgICAgICAgRklORChuZWVkX2R3YXJmMiwgIi5kZWJ1Z19sb2MiLCAgICBk ZWJ1Z19sb2NfZXNjbikKLS0gICAgICAgICAgICBGSU5EKG5lZWRfZHdhcmYyLCAiLmRlYnVnX2Zy YW1lIiwgIGRlYnVnX2ZyYW1lX2VzY24pCi0rICAgICAgICAgICAgRklORCggICBuZWVkX2R3YXJm MiwgICAgICIuZGVidWdfZnJhbWUiLCAgICAgIGRlYnVnX2ZyYW1lX2VzY24pCi0rICAgICAgICAg ICAgaWYgKCFNTF8oc2xpX2lzX3ZhbGlkKShkZWJ1Z19mcmFtZV9lc2NuKSkKLSsgICAgICAgICAg ICAgICBGSU5EKG5lZWRfZHdhcmYyLCAgICAgIi56ZGVidWdfZnJhbWUiLCAgICAgZGVidWdfZnJh bWVfZXNjbikKLSAKLS0gICAgICAgICAgICBGSU5EKG5lZWRfZHdhcmYyLCAiLmdudV9kZWJ1Z2Fs dGxpbmsiLCBkZWJ1Z2FsdGxpbmtfZXNjbikKLSsgICAgICAgICAgICBGSU5EKCAgIG5lZWRfZHdh cmYyLCAgICAgIi5nbnVfZGVidWdhbHRsaW5rIiwgZGVidWdhbHRsaW5rX2VzY24pCi0gCi0tICAg ICAgICAgICAgRklORChuZWVkX2R3YXJmMSwgIi5kZWJ1ZyIsICAgICAgICBkd2FyZjFkX2VzY24p Ci0tICAgICAgICAgICAgRklORChuZWVkX2R3YXJmMSwgIi5saW5lIiwgICAgICAgICBkd2FyZjFs X2VzY24pCi0rICAgICAgICAgICAgRklORCggICBuZWVkX2R3YXJmMSwgICAgICIuZGVidWciLCAg ICAgICAgICAgIGR3YXJmMWRfZXNjbikKLSsgICAgICAgICAgICBGSU5EKCAgIG5lZWRfZHdhcmYx LCAgICAgIi5saW5lIiwgICAgICAgICAgICAgZHdhcmYxbF9lc2NuKQotIAotICMgICAgICAgICAg IHVuZGVmIEZJTkQKLSAgICAgICAgICB9IC8qIEZpbmQgYWxsIGludGVyZXN0aW5nIHNlY3Rpb25z ICovCi1AQCAtMjc1Niw3ICsyODgzLDcgQEAgQm9vbCBNTF8ocmVhZF9lbGZfZGVidWdfaW5mbykg KCBzdHJ1Y3QgX0RlYnVnSW5mbyogZGkgKQotICAgICAgICAgICAgIFZHXyhzcHJpbnRmKSgKLSAg ICAgICAgICAgICAgICBhbHRidWlsZGlkICsgMiAqIGosICIlMDJ4IiwKLSAgICAgICAgICAgICAg ICAoVUludClNTF8oaW1nX2dldF9VQ2hhcikoZGVidWdhbHRsaW5rX2VzY24uaW1nLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2FsdGxpbmtfZXNjbi5pb2Zm IAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2FsdGxpbmtf ZXNjbi5pb2ZmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYnVp bGRpZF9vZmZzZXQgKyBqKSk7Ci0gCi0gICAgICAgICAgLyogU2VlIGlmIHdlIGNhbiBmaW5kIGEg bWF0Y2hpbmcgZGVidWcgZmlsZSAqLwotQEAgLTI4MDcsNyArMjkzNCw3IEBAIEJvb2wgTUxfKHJl YWRfZWxmX2RlYnVnX2luZm8pICggc3RydWN0IF9EZWJ1Z0luZm8qIGRpICkKLSAgICAgICAgICAg IHNoZHJfc3RydGFiX2Fpb2ZmID0gYV9zaGRyLnNoX29mZnNldDsKLSAgICAgICAgICAgIGlmICgh TUxfKGltZ192YWxpZCkoYWltZywgc2hkcl9zdHJ0YWJfYWlvZmYsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDEvKmJvZ3VzLCBidXQgd2UgZG9uJ3Qga25vdyB0aGUgcmVhbCBzaXpl Ki8pKSB7Ci0tICAgICAgICAgICAgICBNTF8oc3ltZXJyKShkaSwgVHJ1ZSwgCi0rICAgICAgICAg ICAgICBNTF8oc3ltZXJyKShkaSwgVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJJ bnZhbGlkIEVMRiBTZWN0aW9uIEhlYWRlciBTdHJpbmcgVGFibGUiCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAiIChhbHRlcm5hdGUgZGVidWdpbmZvIGZpbGUpIik7Ci0gICAgICAgICAgICAg ICBnb3RvIG91dDsKLUBAIC0yODM0LDIwICsyOTYxLDM2IEBAIEJvb2wgTUxfKHJlYWRfZWxmX2Rl YnVnX2luZm8pICggc3RydWN0IF9EZWJ1Z0luZm8qIGRpICkKLSAgICAgICAgICAgICAgICAgICBf c2VjX2VzY24uaW1nICA9IGFpbWc7IFwKLSAgICAgICAgICAgICAgICAgICBfc2VjX2VzY24uaW9m ZiA9IChEaU9mZlQpYV9zaGRyLnNoX29mZnNldDsgXAotICAgICAgICAgICAgICAgICAgIF9zZWNf ZXNjbi5zekIgID0gYV9zaGRyLnNoX3NpemU7IFwKLSsgICAgICAgICAgICAgICAgICBpZiAoIWNo ZWNrX2NvbXByZXNzaW9uKCZhX3NoZHIsICZfc2VjX2VzY24pKSB7IFwKLSsgICAgICAgICAgICAg ICAgICAgICBNTF8oc3ltZXJyKShkaSwgVHJ1ZSwgIiAgIENvbXByZXNzaW9uIHR5cGUgaXMgIiBc Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRl ZCIpOyBcCi0rICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7IFwKLSsgICAgICAgICAgICAg ICAgICB9IFwKLSAgICAgICAgICAgICAgICAgICB2Z19hc3NlcnQoX3NlY19lc2NuLmltZyAgIT0g TlVMTCk7IFwKLSAgICAgICAgICAgICAgICAgICB2Z19hc3NlcnQoX3NlY19lc2NuLmlvZmYgIT0g RGlPZmZUX0lOVkFMSUQpOyBcCi0gICAgICAgICAgICAgICAgICAgVFJBQ0VfU1lNVEFCKCAiJS0x OHM6IGFpb2ZmICVsbHUgLi4gJWxsdVxuIiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX3NlY19uYW1lLCBcCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUxv bmcpX3NlY19lc2NuLmlvZmYsIFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgo VUxvbmcpX3NlY19lc2NuLmlvZmYpICsgX3NlY19lc2NuLnN6QiAtIDEpOyBcCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoVUxvbmcpYV9zaGRyLnNoX29mZnNldCwgXAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKChVTG9uZylhX3NoZHIuc2hfb2Zmc2V0KSArIGFf c2hkci5zaF9zaXplIC0gMSk7IFwKLSAgICAgICAgICAgICAgICB9IFwKLSAgICAgICAgICAgICB9 IHdoaWxlICgwKTsKLSAKLS0gICAgICAgICAgICAvKiAgIE5BTUUgICAgICAgICAgICAgRWxmU2Vj ICovCi0tICAgICAgICAgICAgRklORCgiLmRlYnVnX2xpbmUiLCAgIGRlYnVnX2xpbmVfYWx0X2Vz Y24pCi0tICAgICAgICAgICAgRklORCgiLmRlYnVnX2luZm8iLCAgIGRlYnVnX2luZm9fYWx0X2Vz Y24pCi0tICAgICAgICAgICAgRklORCgiLmRlYnVnX2FiYnJldiIsIGRlYnVnX2FiYnZfYWx0X2Vz Y24pCi0tICAgICAgICAgICAgRklORCgiLmRlYnVnX3N0ciIsICAgIGRlYnVnX3N0cl9hbHRfZXNj bikKLSsgICAgICAgICAgICAvKiAgIE5BTUUgICAgICAgICAgICAgICAgIEVsZlNlYyAqLwotKyAg ICAgICAgICAgIEZJTkQoIi5kZWJ1Z19saW5lIiwgICAgICAgZGVidWdfbGluZV9hbHRfZXNjbikK LSsgICAgICAgICAgICBpZiAoIU1MXyhzbGlfaXNfdmFsaWQpKGRlYnVnX2xpbmVfYWx0X2VzY24p KQotKyAgICAgICAgICAgICAgIEZJTkQoIi56ZGVidWdfbGluZSIsICAgZGVidWdfbGluZV9hbHRf ZXNjbikKLSsKLSsgICAgICAgICAgICBGSU5EKCIuZGVidWdfaW5mbyIsICAgICAgIGRlYnVnX2lu Zm9fYWx0X2VzY24pCi0rICAgICAgICAgICAgaWYgKCFNTF8oc2xpX2lzX3ZhbGlkKShkZWJ1Z19p bmZvX2FsdF9lc2NuKSkKLSsgICAgICAgICAgICAgICBGSU5EKCIuemRlYnVnX2luZm8iLCAgIGRl YnVnX2luZm9fYWx0X2VzY24pCi0rCi0rICAgICAgICAgICAgRklORCgiLmRlYnVnX2FiYnJldiIs ICAgICBkZWJ1Z19hYmJ2X2FsdF9lc2NuKQotKyAgICAgICAgICAgIGlmICghTUxfKHNsaV9pc192 YWxpZCkoZGVidWdfYWJidl9hbHRfZXNjbikpCi0rICAgICAgICAgICAgICAgRklORCgiLnpkZWJ1 Z19hYmJyZXYiLCBkZWJ1Z19hYmJ2X2FsdF9lc2NuKQotKwotKyAgICAgICAgICAgIEZJTkQoIi5k ZWJ1Z19zdHIiLCAgICAgICAgZGVidWdfc3RyX2FsdF9lc2NuKQotKyAgICAgICAgICAgIGlmICgh TUxfKHNsaV9pc192YWxpZCkoZGVidWdfc3RyX2FsdF9lc2NuKSkKLSsgICAgICAgICAgICAgICBG SU5EKCIuemRlYnVnX3N0ciIsICAgIGRlYnVnX3N0cl9hbHRfZXNjbikKLSAKLSAjICAgICAgICAg ICB1bmRlZiBGSU5ECi0gICAgICAgICAgfSAvKiBGaW5kIGFsbCBpbnRlcmVzdGluZyBzZWN0aW9u cyAqLwotQEAgLTI5MTQsNyArMzA1Nyw3IEBAIEJvb2wgTUxfKHJlYWRfZWxmX2RlYnVnX2luZm8p ICggc3RydWN0IF9EZWJ1Z0luZm8qIGRpICkKLSAgICAgICAgICBkZWJ1Z2luZm8gcmVhZGluZyBm b3IgdGhhdCByZWFzb24sIGJ1dCwgaW4KLSAgICAgICAgICByZWFkX3VuaXRpbmZvX2R3YXJmMiwg ZG8gY2hlY2sgdGhhdCBkZWJ1Z3N0ciBpcyBub24tTlVMTAotICAgICAgICAgIGJlZm9yZSB1c2lu ZyBpdC4gKi8KLS0gICAgICBpZiAoTUxfKHNsaV9pc192YWxpZCkoZGVidWdfaW5mb19lc2NuKSAK LSsgICAgICBpZiAoTUxfKHNsaV9pc192YWxpZCkoZGVidWdfaW5mb19lc2NuKQotICAgICAgICAg ICAmJiBNTF8oc2xpX2lzX3ZhbGlkKShkZWJ1Z19hYmJ2X2VzY24pCi0gICAgICAgICAgICYmIE1M XyhzbGlfaXNfdmFsaWQpKGRlYnVnX2xpbmVfZXNjbikpIHsKLSAgICAgICAgICAvKiBUaGUgb2xk IHJlYWRlcjogbGluZSBudW1iZXJzIGFuZCB1bndpbmQgaW5mbyBvbmx5ICovCi1AQCAtMjk0Niw3 ICszMDg5LDcgQEAgQm9vbCBNTF8ocmVhZF9lbGZfZGVidWdfaW5mbykgKCBzdHJ1Y3QgX0RlYnVn SW5mbyogZGkgKQotICAgICAgIC8vIEpSUyAzMSBKdWx5IDIwMTQ6IGR3YXJmLTEgcmVhZGluZyBp cyBjdXJyZW50bHkgYnJva2VuIGFuZAotICAgICAgIC8vIHRoZXJlZm9yZSBkZWFjdGl2YXRlZC4K LSAgICAgICAvL2lmIChkd2FyZjFkX2ltZyAmJiBkd2FyZjFsX2ltZykgewotLSAgICAgIC8vICAg TUxfKHJlYWRfZGVidWdpbmZvX2R3YXJmMSkgKCBkaSwgZHdhcmYxZF9pbWcsIGR3YXJmMWRfc3os IAotKyAgICAgIC8vICAgTUxfKHJlYWRfZGVidWdpbmZvX2R3YXJmMSkgKCBkaSwgZHdhcmYxZF9p bWcsIGR3YXJmMWRfc3osCi0gICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkd2FyZjFsX2ltZywgZHdhcmYxbF9zeiApOwotICAgICAgIC8vfQotIAotQEAgLTMwMjEs NyArMzE2NCw3IEBAIEJvb2wgTUxfKHJlYWRfZWxmX2RlYnVnX2luZm8pICggc3RydWN0IF9EZWJ1 Z0luZm8qIGRpICkKLSAgICB9Ci0gICAgLyogVE9QTEVWRUwgKi8KLSAKLS0gIG91dDogCi0rICBv dXQ6Ci0gICAgewotICAgICAgIC8qIExhc3QsIGJ1dCBub3QgbGVhc3QsIGRldGFjaCBmcm9tIHRo ZSBpbWFnZShzKS4gKi8KLSAgICAgICBpZiAobWltZykgTUxfKGltZ19kb25lKShtaW1nKTsKLUBA IC0zMDMxLDcgKzMxNzQsNyBAQCBCb29sIE1MXyhyZWFkX2VsZl9kZWJ1Z19pbmZvKSAoIHN0cnVj dCBfRGVidWdJbmZvKiBkaSApCi0gICAgICAgaWYgKHN2bWFfcmFuZ2VzKSBWR18oZGVsZXRlWEEp KHN2bWFfcmFuZ2VzKTsKLSAKLSAgICAgICByZXR1cm4gcmVzOwotLSAgIH0gLyogb3V0OiAqLyAK LSsgICB9IC8qIG91dDogKi8KLSAKLSAgICAvKiBOT1RSRUFDSEVEICovCi0gfQotZGlmZiAtLWdp dCBhL2NvcmVncmluZC9tX2RlYnVnaW5mby90aW5mbC5jIGIvY29yZWdyaW5kL21fZGVidWdpbmZv L3RpbmZsLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAuLjMwZTBk YzdlNDM2NgotLS0tIC9kZXYvbnVsbAotKysrIGIvY29yZWdyaW5kL21fZGVidWdpbmZvL3RpbmZs LmMKLUBAIC0wLDAgKzEsNTk2IEBACi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0rLyotLS0gVGlueSB6bGli IGRlY29tcHJlc3NvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW5mbC5jIC0tLSov Ci0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSovCi0rCi0rLyogdGluZmwuYyB2MS4xMSAtIHB1YmxpYyBkb21haW4g aW5mbGF0ZSB3aXRoIHpsaWIgaGVhZGVyIHBhcnNpbmcvYWRsZXIzMgotKyAgIGNoZWNraW5nIChp bmZsYXRlLW9ubHkgc3Vic2V0IG9mIG1pbml6LmMpCi0rCi0rICAgUmljaCBHZWxkcmVpY2ggPHJp Y2hnZWw5OUBnbWFpbC5jb20+LCBsYXN0IHVwZGF0ZWQgTWF5IDIwLCAyMDExCi0rCi0rICAgSW1w bGVtZW50cyBSRkMgMTk1MDogaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMTk1MC50eHQKLSsg ICBhbmQgUkZDIDE5NTE6IGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzE5NTEudHh0Ci0rCi0r ICAgVGhlIG9yaWdpbmFsIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQgaW4gb3JkZXIgdG8gYmUgYSBw YXJ0IG9mIFZhbGdyaW5kCi0rICAgcHJvamVjdCwgYSBkeW5hbWljIGJpbmFyeSBpbnN0cnVtZW50 YXRpb24gZnJhbWV3b3JrLgotKyAgIFJULVJLIEluc3RpdHV0ZSBmb3IgQ29tcHV0ZXIgQmFzZWQg U3lzdGVtcywgMjAxNiAobWlwcy12YWxncmluZEBydC1yay5jb20pCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAg IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzCi0rICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlCi0rICAgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICAgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V Ci0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcsIFVTQS4KLSsKLSsgICBUaGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgY29udGFpbmVkIGluIHRoZSBmaWxlIENPUFlJTkcu Ci0rKi8KLSsKLSsjaWZuZGVmIFRJTkZMX0hFQURFUl9JTkNMVURFRAotKyNkZWZpbmUgVElORkxf SEVBREVSX0lOQ0xVREVECi0rCi0rLyogVGhlIGVudGlyZSBkZWNvbXByZXNzb3IgY29yb3V0aW5l IGlzIGltcGxlbWVudGVkIGluIHRpbmZsX2RlY29tcHJlc3MoKS4KLSsgICBUaGUgb3RoZXIgZnVu Y3Rpb25zIGFyZSBvcHRpb25hbCBoaWdoLWxldmVsIGhlbHBlcnMuICovCi0rCi0rI2luY2x1ZGUg InB1Yl9jb3JlX2Jhc2ljcy5oIgotKwotK3R5cGVkZWYgVUNoYXIgIG16X3VpbnQ4OwotK3R5cGVk ZWYgU2hvcnQgIG16X2ludDE2OwotK3R5cGVkZWYgVVNob3J0IG16X3VpbnQxNjsKLSt0eXBlZGVm IFVJbnQgICBtel91aW50MzI7Ci0rdHlwZWRlZiBVSW50ICAgbXpfdWludDsKLSt0eXBlZGVmIFVM b25nICBtel91aW50NjQ7Ci0rCi0rI2lmIGRlZmluZWQoVkdBX3g4NikgfHwgZGVmaW5lZChWR0Ff YW1kNjQpCi0rLy8gU2V0IE1JTklaX1VTRV9VTkFMSUdORURfTE9BRFNfQU5EX1NUT1JFUyB0byAx IGlmIGludGVnZXIgbG9hZHMgYW5kIHN0b3JlcyB0bwotKy8vIHVuYWxpZ25lZCBhZGRyZXNzZXMg YXJlIGFjY2VwdGFibGUgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSAoc2xpZ2h0bHkgZmFzdGVyKS4K LSsjZGVmaW5lIE1JTklaX1VTRV9VTkFMSUdORURfTE9BRFNfQU5EX1NUT1JFUyAxCi0rI2VuZGlm Ci0rCi0rI2RlZmluZSBNSU5JWl9MSVRUTEVfRU5ESUFOICAgICAgICggZGVmaW5lZChWR19MSVRU TEVFTkRJQU4pICkKLSsjZGVmaW5lIE1JTklaX0hBU182NEJJVF9SRUdJU1RFUlMgKCBWR19XT1JE U0laRSA9PSA4ICkKLSsKLSsvLyBXb3JrcyBhcm91bmQgTVNWQydzIHNwYW1teSAid2FybmluZyBD NDEyNzogY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcwotKy8vIGNvbnN0YW50IiBtZXNzYWdlLgot KyNpZmRlZiBfTVNDX1ZFUgotKyAgI2RlZmluZSBNWl9NQUNST19FTkQgd2hpbGUgKDAsIDApCi0r I2Vsc2UKLSsgICNkZWZpbmUgTVpfTUFDUk9fRU5EIHdoaWxlICgwKQotKyNlbmRpZgotKwotKy8q IERlY29tcHJlc3Npb24gZmxhZ3MgdXNlZCBieSB0aW5mbF9kZWNvbXByZXNzKCkuCi0rCi0rICAg VElORkxfRkxBR19QQVJTRV9aTElCX0hFQURFUjogSWYgc2V0LCB0aGUgaW5wdXQgaGFzIGEgdmFs aWQgemxpYiBoZWFkZXIgYW5kCi0rICAgZW5kcyB3aXRoIGFuIGFkbGVyMzIgY2hlY2tzdW0gKGl0 J3MgYSB2YWxpZCB6bGliIHN0cmVhbSkuIE90aGVyd2lzZSwgdGhlCi0rICAgaW5wdXQgaXMgYSBy YXcgZGVmbGF0ZSBzdHJlYW0uCi0rCi0rICAgVElORkxfRkxBR19IQVNfTU9SRV9JTlBVVDogSWYg c2V0LCB0aGVyZSBhcmUgbW9yZSBpbnB1dCBieXRlcyBhdmFpbGFibGUKLSsgICBiZXlvbmQgdGhl IGVuZCBvZiB0aGUgc3VwcGxpZWQgaW5wdXQgYnVmZmVyLiBJZiBjbGVhciwgdGhlIGlucHV0IGJ1 ZmZlcgotKyAgIGNvbnRhaW5zIGFsbCByZW1haW5pbmcgaW5wdXQuCi0rCi0rICAgVElORkxfRkxB R19VU0lOR19OT05fV1JBUFBJTkdfT1VUUFVUX0JVRjogSWYgc2V0LCB0aGUgb3V0cHV0IGJ1ZmZl ciBpcyBsYXJnZQotKyAgIGVub3VnaCB0byBob2xkIHRoZSBlbnRpcmUgZGVjb21wcmVzc2VkIHN0 cmVhbS4gSWYgY2xlYXIsIHRoZSBvdXRwdXQgYnVmZmVyCi0rICAgaXMgYXQgbGVhc3QgdGhlIHNp emUgb2YgdGhlIGRpY3Rpb25hcnkgKHR5cGljYWxseSAzMktCKS4KLSsKLSsgICBUSU5GTF9GTEFH X0NPTVBVVEVfQURMRVIzMjogRm9yY2UgYWRsZXItMzIgY2hlY2tzdW0gY29tcHV0YXRpb24gb2Yg dGhlCi0rICAgZGVjb21wcmVzc2VkIGJ5dGVzLgotKyovCi0rCi0rZW51bQotK3sKLSsgIFRJTkZM X0ZMQUdfUEFSU0VfWkxJQl9IRUFERVIgPSAxLAotKyAgVElORkxfRkxBR19IQVNfTU9SRV9JTlBV VCA9IDIsCi0rICBUSU5GTF9GTEFHX1VTSU5HX05PTl9XUkFQUElOR19PVVRQVVRfQlVGID0gNCwK LSsgIFRJTkZMX0ZMQUdfQ09NUFVURV9BRExFUjMyID0gOAotK307Ci0rCi0rLy8gSGlnaCBsZXZl bCBkZWNvbXByZXNzaW9uIGZ1bmN0aW9uczoKLSsvLyB0aW5mbF9kZWNvbXByZXNzX21lbV90b19o ZWFwKCkgZGVjb21wcmVzc2VzIGEgYmxvY2sgaW4gbWVtb3J5IHRvIGEgaGVhcCBibG9jayBhbGxv Y2F0ZWQgdmlhIG1hbGxvYygpLgotKy8vIE9uIGVudHJ5OgotKy8vICBwU3JjX2J1Ziwgc3JjX2J1 Zl9sZW46IFBvaW50ZXIgYW5kIHNpemUgb2YgdGhlIERlZmxhdGUgb3IgemxpYiBzb3VyY2UgZGF0 YSB0byBkZWNvbXByZXNzLgotKy8vIE9uIHJldHVybjoKLSsvLyAgRnVuY3Rpb24gcmV0dXJucyBh IHBvaW50ZXIgdG8gdGhlIGRlY29tcHJlc3NlZCBkYXRhLCBvciBOVUxMIG9uIGZhaWx1cmUuCi0r Ly8gICpwT3V0X2xlbiB3aWxsIGJlIHNldCB0byB0aGUgZGVjb21wcmVzc2VkIGRhdGEncyBzaXpl LCB3aGljaCBjb3VsZCBiZSBsYXJnZXIgdGhhbiBzcmNfYnVmX2xlbiBvbiB1bmNvbXByZXNzaWJs ZSBkYXRhLgotKy8vICBUaGUgY2FsbGVyIG11c3QgZnJlZSgpIHRoZSByZXR1cm5lZCBibG9jayB3 aGVuIGl0J3Mgbm8gbG9uZ2VyIG5lZWRlZC4KLSt2b2lkICp0aW5mbF9kZWNvbXByZXNzX21lbV90 b19oZWFwKGNvbnN0IHZvaWQgKnBTcmNfYnVmLCBTaXplVCBzcmNfYnVmX2xlbiwgU2l6ZVQgKnBP dXRfbGVuLCBpbnQgZmxhZ3MpOwotKwotKy8vIHRpbmZsX2RlY29tcHJlc3NfbWVtX3RvX21lbSgp IGRlY29tcHJlc3NlcyBhIGJsb2NrIGluIG1lbW9yeSB0byBhbm90aGVyIGJsb2NrIGluIG1lbW9y eS4KLSsvLyBSZXR1cm5zIFRJTkZMX0RFQ09NUFJFU1NfTUVNX1RPX01FTV9GQUlMRUQgb24gZmFp bHVyZSwgb3IgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIG9uIHN1Y2Nlc3MuCi0rI2RlZmlu ZSBUSU5GTF9ERUNPTVBSRVNTX01FTV9UT19NRU1fRkFJTEVEICgoU2l6ZVQpKC0xKSkKLStTaXpl VCB0aW5mbF9kZWNvbXByZXNzX21lbV90b19tZW0odm9pZCAqcE91dF9idWYsIFNpemVUIG91dF9i dWZfbGVuLCBjb25zdCB2b2lkICpwU3JjX2J1ZiwgU2l6ZVQgc3JjX2J1Zl9sZW4sIGludCBmbGFn cyk7Ci0rCi0rLy8gdGluZmxfZGVjb21wcmVzc19tZW1fdG9fY2FsbGJhY2soKSBkZWNvbXByZXNz ZXMgYSBibG9jayBpbiBtZW1vcnkgdG8gYW4gaW50ZXJuYWwgMzJLQiBidWZmZXIsIGFuZCBhIHVz ZXIgcHJvdmlkZWQgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgdG8gZmx1c2ggdGhl IGJ1ZmZlci4KLSsvLyBSZXR1cm5zIDEgb24gc3VjY2VzcyBvciAwIG9uIGZhaWx1cmUuCi0rdHlw ZWRlZiBpbnQgKCp0aW5mbF9wdXRfYnVmX2Z1bmNfcHRyKShjb25zdCB2b2lkKiBwQnVmLCBpbnQg bGVuLCB2b2lkICpwVXNlcik7Ci0raW50IHRpbmZsX2RlY29tcHJlc3NfbWVtX3RvX2NhbGxiYWNr KGNvbnN0IHZvaWQgKnBJbl9idWYsIFNpemVUICpwSW5fYnVmX3NpemUsIHRpbmZsX3B1dF9idWZf ZnVuY19wdHIgcFB1dF9idWZfZnVuYywgdm9pZCAqcFB1dF9idWZfdXNlciwgaW50IGZsYWdzKTsK LSsKLStzdHJ1Y3QgdGluZmxfZGVjb21wcmVzc29yX3RhZzsgdHlwZWRlZiBzdHJ1Y3QgdGluZmxf ZGVjb21wcmVzc29yX3RhZyB0aW5mbF9kZWNvbXByZXNzb3I7Ci0rCi0rLy8gTWF4IHNpemUgb2Yg TFogZGljdGlvbmFyeS4KLSsjZGVmaW5lIFRJTkZMX0xaX0RJQ1RfU0laRSAzMjc2OAotKwotKy8v IFJldHVybiBzdGF0dXMuCi0rdHlwZWRlZiBlbnVtCi0rewotKyAgVElORkxfU1RBVFVTX0JBRF9Q QVJBTSA9IC0zLAotKyAgVElORkxfU1RBVFVTX0FETEVSMzJfTUlTTUFUQ0ggPSAtMiwKLSsgIFRJ TkZMX1NUQVRVU19GQUlMRUQgPSAtMSwKLSsgIFRJTkZMX1NUQVRVU19ET05FID0gMCwKLSsgIFRJ TkZMX1NUQVRVU19ORUVEU19NT1JFX0lOUFVUID0gMSwKLSsgIFRJTkZMX1NUQVRVU19IQVNfTU9S RV9PVVRQVVQgPSAyCi0rfSB0aW5mbF9zdGF0dXM7Ci0rCi0rLy8gSW5pdGlhbGl6ZXMgdGhlIGRl Y29tcHJlc3NvciB0byBpdHMgaW5pdGlhbCBzdGF0ZS4KLSsjZGVmaW5lIHRpbmZsX2luaXQocikg ZG8geyAociktPm1fc3RhdGUgPSAwOyB9IE1aX01BQ1JPX0VORAotKyNkZWZpbmUgdGluZmxfZ2V0 X2FkbGVyMzIocikgKHIpLT5tX2NoZWNrX2FkbGVyMzIKLSsKLSsvLyBNYWluIGxvdy1sZXZlbCBk ZWNvbXByZXNzb3IgY29yb3V0aW5lIGZ1bmN0aW9uLiBUaGlzIGlzIHRoZSBvbmx5IGZ1bmN0aW9u IGFjdHVhbGx5IG5lZWRlZCBmb3IgZGVjb21wcmVzc2lvbi4gQWxsIHRoZSBvdGhlciBmdW5jdGlv bnMgYXJlIGp1c3QgaGlnaC1sZXZlbCBoZWxwZXJzIGZvciBpbXByb3ZlZCB1c2FiaWxpdHkuCi0r Ly8gVGhpcyBpcyBhIHVuaXZlcnNhbCBBUEksIGkuZS4gaXQgY2FuIGJlIHVzZWQgYXMgYSBidWls ZGluZyBibG9jayB0byBidWlsZCBhbnkgZGVzaXJlZCBoaWdoZXIgbGV2ZWwgZGVjb21wcmVzc2lv biBBUEkuIEluIHRoZSBsaW1pdCBjYXNlLCBpdCBjYW4gYmUgY2FsbGVkIG9uY2UgcGVyIGV2ZXJ5 IGJ5dGUgaW5wdXQgb3Igb3V0cHV0LgotK3RpbmZsX3N0YXR1cyB0aW5mbF9kZWNvbXByZXNzKHRp bmZsX2RlY29tcHJlc3NvciAqciwgY29uc3QgbXpfdWludDggKnBJbl9idWZfbmV4dCwgU2l6ZVQg KnBJbl9idWZfc2l6ZSwgbXpfdWludDggKnBPdXRfYnVmX3N0YXJ0LCBtel91aW50OCAqcE91dF9i dWZfbmV4dCwgU2l6ZVQgKnBPdXRfYnVmX3NpemUsIGNvbnN0IG16X3VpbnQzMiBkZWNvbXBfZmxh Z3MpOwotKwotKy8vIEludGVybmFsL3ByaXZhdGUgYml0cyBmb2xsb3cuCi0rZW51bQotK3sKLSsg IFRJTkZMX01BWF9IVUZGX1RBQkxFUyA9IDMsIFRJTkZMX01BWF9IVUZGX1NZTUJPTFNfMCA9IDI4 OCwgVElORkxfTUFYX0hVRkZfU1lNQk9MU18xID0gMzIsIFRJTkZMX01BWF9IVUZGX1NZTUJPTFNf MiA9IDE5LAotKyAgVElORkxfRkFTVF9MT09LVVBfQklUUyA9IDEwLCBUSU5GTF9GQVNUX0xPT0tV UF9TSVpFID0gMSA8PCBUSU5GTF9GQVNUX0xPT0tVUF9CSVRTCi0rfTsKLSsKLSt0eXBlZGVmIHN0 cnVjdAotK3sKLSsgIG16X3VpbnQ4IG1fY29kZV9zaXplW1RJTkZMX01BWF9IVUZGX1NZTUJPTFNf MF07Ci0rICBtel9pbnQxNiBtX2xvb2tfdXBbVElORkxfRkFTVF9MT09LVVBfU0laRV0sIG1fdHJl ZVtUSU5GTF9NQVhfSFVGRl9TWU1CT0xTXzAgKiAyXTsKLSt9IHRpbmZsX2h1ZmZfdGFibGU7Ci0r Ci0rI2lmIE1JTklaX0hBU182NEJJVF9SRUdJU1RFUlMKLSsgICNkZWZpbmUgVElORkxfVVNFXzY0 QklUX0JJVEJVRiAxCi0rI2VuZGlmCi0rCi0rI2lmIFRJTkZMX1VTRV82NEJJVF9CSVRCVUYKLSsg IHR5cGVkZWYgbXpfdWludDY0IHRpbmZsX2JpdF9idWZfdDsKLSsgICNkZWZpbmUgVElORkxfQklU QlVGX1NJWkUgKDY0KQotKyNlbHNlCi0rICB0eXBlZGVmIG16X3VpbnQzMiB0aW5mbF9iaXRfYnVm X3Q7Ci0rICAjZGVmaW5lIFRJTkZMX0JJVEJVRl9TSVpFICgzMikKLSsjZW5kaWYKLSsKLStzdHJ1 Y3QgdGluZmxfZGVjb21wcmVzc29yX3RhZwotK3sKLSsgIG16X3VpbnQzMiBtX3N0YXRlLCBtX251 bV9iaXRzLCBtX3poZHIwLCBtX3poZHIxLCBtX3pfYWRsZXIzMiwgbV9maW5hbCwgbV90eXBlLCBt X2NoZWNrX2FkbGVyMzIsIG1fZGlzdCwgbV9jb3VudGVyLCBtX251bV9leHRyYSwgbV90YWJsZV9z aXplc1tUSU5GTF9NQVhfSFVGRl9UQUJMRVNdOwotKyAgdGluZmxfYml0X2J1Zl90IG1fYml0X2J1 ZjsKLSsgIFNpemVUIG1fZGlzdF9mcm9tX291dF9idWZfc3RhcnQ7Ci0rICB0aW5mbF9odWZmX3Rh YmxlIG1fdGFibGVzW1RJTkZMX01BWF9IVUZGX1RBQkxFU107Ci0rICBtel91aW50OCBtX3Jhd19o ZWFkZXJbNF0sIG1fbGVuX2NvZGVzW1RJTkZMX01BWF9IVUZGX1NZTUJPTFNfMCArIFRJTkZMX01B WF9IVUZGX1NZTUJPTFNfMSArIDEzN107Ci0rfTsKLSsKLSsjZW5kaWYgLy8gI2lmZGVmIFRJTkZM X0hFQURFUl9JTkNMVURFRAotKwotKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gRW5kIG9mIEhlYWRl cjogSW1wbGVtZW50YXRpb24gZm9sbG93cy4gKElmIHlvdSBvbmx5IHdhbnQgdGhlIGhlYWRlciwg ZGVmaW5lIE1JTklaX0hFQURFUl9GSUxFX09OTFkuKQotKwotKyNpZm5kZWYgVElORkxfSEVBREVS X0ZJTEVfT05MWQotKwotKyNpbmNsdWRlICJwdWJfY29yZV9tYWxsb2NmcmVlLmgiCi0rI2luY2x1 ZGUgInB1Yl9jb3JlX2xpYmNiYXNlLmgiCi0rCi0rI2RlZmluZSBNWl9NQVgoYSxiKSAoKChhKT4o YikpPyhhKTooYikpCi0rI2RlZmluZSBNWl9NSU4oYSxiKSAoKChhKTwoYikpPyhhKTooYikpCi0r I2RlZmluZSBNWl9DTEVBUl9PQkoob2JqKSBWR18obWVtc2V0KSgmKG9iaiksIDAsIHNpemVvZihv YmopKQotKwotKyNpZiBNSU5JWl9VU0VfVU5BTElHTkVEX0xPQURTX0FORF9TVE9SRVMgJiYgTUlO SVpfTElUVExFX0VORElBTgotKyAgI2RlZmluZSBNWl9SRUFEX0xFMTYocCkgKigoY29uc3QgbXpf dWludDE2ICopKHApKQotKyAgI2RlZmluZSBNWl9SRUFEX0xFMzIocCkgKigoY29uc3QgbXpfdWlu dDMyICopKHApKQotKyNlbHNlCi0rICAjZGVmaW5lIE1aX1JFQURfTEUxNihwKSAoKG16X3VpbnQz MikoKChjb25zdCBtel91aW50OCAqKShwKSlbMF0pIHwgKChtel91aW50MzIpKCgoY29uc3QgbXpf dWludDggKikocCkpWzFdKSA8PCA4VSkpCi0rICAjZGVmaW5lIE1aX1JFQURfTEUzMihwKSAoKG16 X3VpbnQzMikoKChjb25zdCBtel91aW50OCAqKShwKSlbMF0pIHwgKChtel91aW50MzIpKCgoY29u c3QgbXpfdWludDggKikocCkpWzFdKSA8PCA4VSkgfCAoKG16X3VpbnQzMikoKChjb25zdCBtel91 aW50OCAqKShwKSlbMl0pIDw8IDE2VSkgfCAoKG16X3VpbnQzMikoKChjb25zdCBtel91aW50OCAq KShwKSlbM10pIDw8IDI0VSkpCi0rI2VuZGlmCi0rCi0rI2RlZmluZSBUSU5GTF9NRU1DUFkoZCwg cywgbCkgVkdfKG1lbWNweSkoZCwgcywgbCkKLSsjZGVmaW5lIFRJTkZMX01FTVNFVChwLCBjLCBs KSBWR18obWVtc2V0KShwLCBjLCBsKQotKwotKyNkZWZpbmUgVElORkxfQ1JfQkVHSU4gc3dpdGNo KHItPm1fc3RhdGUpIHsgY2FzZSAwOgotKyNkZWZpbmUgVElORkxfQ1JfUkVUVVJOKHN0YXRlX2lu ZGV4LCByZXN1bHQpIGRvIHsgc3RhdHVzID0gcmVzdWx0OyByLT5tX3N0YXRlID0gc3RhdGVfaW5k ZXg7IGdvdG8gY29tbW9uX2V4aXQ7IGNhc2Ugc3RhdGVfaW5kZXg6OyB9IE1aX01BQ1JPX0VORAot KyNkZWZpbmUgVElORkxfQ1JfUkVUVVJOX0ZPUkVWRVIoc3RhdGVfaW5kZXgsIHJlc3VsdCkgZG8g eyBmb3IgKCA7IDsgKSB7IFRJTkZMX0NSX1JFVFVSTihzdGF0ZV9pbmRleCwgcmVzdWx0KTsgfSB9 IE1aX01BQ1JPX0VORAotKyNkZWZpbmUgVElORkxfQ1JfRklOSVNIIH0KLSsKLSsvLyBUT0RPOiBJ ZiB0aGUgY2FsbGVyIGhhcyBpbmRpY2F0ZWQgdGhhdCB0aGVyZSdzIG5vIG1vcmUgaW5wdXQsIGFu ZCB3ZSBhdHRlbXB0IHRvIHJlYWQgYmV5b25kIHRoZSBpbnB1dCBidWYsIHRoZW4gc29tZXRoaW5n IGlzIHdyb25nIHdpdGggdGhlIGlucHV0IGJlY2F1c2UgdGhlIGluZmxhdG9yIG5ldmVyCi0rLy8g cmVhZHMgYWhlYWQgbW9yZSB0aGFuIGl0IG5lZWRzIHRvLiBDdXJyZW50bHkgVElORkxfR0VUX0JZ VEUoKSBwYWRzIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoIDAncyBpbiB0aGlzIHNjZW5hcmlv LgotKyNkZWZpbmUgVElORkxfR0VUX0JZVEUoc3RhdGVfaW5kZXgsIGMpIGRvIHsgXAotKyAgaWYg KHBJbl9idWZfY3VyID49IHBJbl9idWZfZW5kKSB7IFwKLSsgICAgZm9yICggOyA7ICkgeyBcCi0r ICAgICAgaWYgKGRlY29tcF9mbGFncyAmIFRJTkZMX0ZMQUdfSEFTX01PUkVfSU5QVVQpIHsgXAot KyAgICAgICAgVElORkxfQ1JfUkVUVVJOKHN0YXRlX2luZGV4LCBUSU5GTF9TVEFUVVNfTkVFRFNf TU9SRV9JTlBVVCk7IFwKLSsgICAgICAgIGlmIChwSW5fYnVmX2N1ciA8IHBJbl9idWZfZW5kKSB7 IFwKLSsgICAgICAgICAgYyA9ICpwSW5fYnVmX2N1cisrOyBcCi0rICAgICAgICAgIGJyZWFrOyBc Ci0rICAgICAgICB9IFwKLSsgICAgICB9IGVsc2UgeyBcCi0rICAgICAgICBjID0gMDsgXAotKyAg ICAgICAgYnJlYWs7IFwKLSsgICAgICB9IFwKLSsgICAgfSBcCi0rICB9IGVsc2UgYyA9ICpwSW5f YnVmX2N1cisrOyB9IE1aX01BQ1JPX0VORAotKwotKyNkZWZpbmUgVElORkxfTkVFRF9CSVRTKHN0 YXRlX2luZGV4LCBuKSBkbyB7IG16X3VpbnQgYzsgVElORkxfR0VUX0JZVEUoc3RhdGVfaW5kZXgs IGMpOyBiaXRfYnVmIHw9ICgoKHRpbmZsX2JpdF9idWZfdCljKSA8PCBudW1fYml0cyk7IG51bV9i aXRzICs9IDg7IH0gd2hpbGUgKG51bV9iaXRzIDwgKG16X3VpbnQpKG4pKQotKyNkZWZpbmUgVElO RkxfU0tJUF9CSVRTKHN0YXRlX2luZGV4LCBuKSBkbyB7IGlmIChudW1fYml0cyA8IChtel91aW50 KShuKSkgeyBUSU5GTF9ORUVEX0JJVFMoc3RhdGVfaW5kZXgsIG4pOyB9IGJpdF9idWYgPj49IChu KTsgbnVtX2JpdHMgLT0gKG4pOyB9IE1aX01BQ1JPX0VORAotKyNkZWZpbmUgVElORkxfR0VUX0JJ VFMoc3RhdGVfaW5kZXgsIGIsIG4pIGRvIHsgaWYgKG51bV9iaXRzIDwgKG16X3VpbnQpKG4pKSB7 IFRJTkZMX05FRURfQklUUyhzdGF0ZV9pbmRleCwgbik7IH0gYiA9IGJpdF9idWYgJiAoKDEgPDwg KG4pKSAtIDEpOyBiaXRfYnVmID4+PSAobik7IG51bV9iaXRzIC09IChuKTsgfSBNWl9NQUNST19F TkQKLSsKLSsvLyBUSU5GTF9IVUZGX0JJVEJVRl9GSUxMKCkgaXMgb25seSB1c2VkIHJhcmVseSwg d2hlbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlbWFpbmluZyBpbiB0aGUgaW5wdXQgYnVmZmVyIGZh bGxzIGJlbG93IDIuCi0rLy8gSXQgcmVhZHMganVzdCBlbm91Z2ggYnl0ZXMgZnJvbSB0aGUgaW5w dXQgc3RyZWFtIHRoYXQgYXJlIG5lZWRlZCB0byBkZWNvZGUgdGhlIG5leHQgSHVmZm1hbiBjb2Rl IChhbmQgYWJzb2x1dGVseSBubyBtb3JlKS4gSXQgd29ya3MgYnkgdHJ5aW5nIHRvIGZ1bGx5IGRl Y29kZSBhCi0rLy8gSHVmZm1hbiBjb2RlIGJ5IHVzaW5nIHdoYXRldmVyIGJpdHMgYXJlIGN1cnJl bnRseSBwcmVzZW50IGluIHRoZSBiaXQgYnVmZmVyLiBJZiB0aGlzIGZhaWxzLCBpdCByZWFkcyBh bm90aGVyIGJ5dGUsIGFuZCB0cmllcyBhZ2FpbiB1bnRpbCBpdCBzdWNjZWVkcyBvciB1bnRpbCB0 aGUKLSsvLyBiaXQgYnVmZmVyIGNvbnRhaW5zID49MTUgYml0cyAoZGVmbGF0ZSdzIG1heC4gSHVm Zm1hbiBjb2RlIHNpemUpLgotKyNkZWZpbmUgVElORkxfSFVGRl9CSVRCVUZfRklMTChzdGF0ZV9p bmRleCwgcEh1ZmYpIFwKLSsgIGRvIHsgXAotKyAgICB0ZW1wID0gKHBIdWZmKS0+bV9sb29rX3Vw W2JpdF9idWYgJiAoVElORkxfRkFTVF9MT09LVVBfU0laRSAtIDEpXTsgXAotKyAgICBpZiAodGVt cCA+PSAwKSB7IFwKLSsgICAgICBjb2RlX2xlbiA9IHRlbXAgPj4gOTsgXAotKyAgICAgIGlmICgo Y29kZV9sZW4pICYmIChudW1fYml0cyA+PSBjb2RlX2xlbikpIFwKLSsgICAgICBicmVhazsgXAot KyAgICB9IGVsc2UgaWYgKG51bV9iaXRzID4gVElORkxfRkFTVF9MT09LVVBfQklUUykgeyBcCi0r ICAgICAgIGNvZGVfbGVuID0gVElORkxfRkFTVF9MT09LVVBfQklUUzsgXAotKyAgICAgICBkbyB7 IFwKLSsgICAgICAgICAgdGVtcCA9IChwSHVmZiktPm1fdHJlZVt+dGVtcCArICgoYml0X2J1ZiA+ PiBjb2RlX2xlbisrKSAmIDEpXTsgXAotKyAgICAgICB9IHdoaWxlICgodGVtcCA8IDApICYmIChu dW1fYml0cyA+PSAoY29kZV9sZW4gKyAxKSkpOyBpZiAodGVtcCA+PSAwKSBicmVhazsgXAotKyAg ICB9IFRJTkZMX0dFVF9CWVRFKHN0YXRlX2luZGV4LCBjKTsgYml0X2J1ZiB8PSAoKCh0aW5mbF9i aXRfYnVmX3QpYykgPDwgbnVtX2JpdHMpOyBudW1fYml0cyArPSA4OyBcCi0rICB9IHdoaWxlIChu dW1fYml0cyA8IDE1KTsKLSsKLSsvLyBUSU5GTF9IVUZGX0RFQ09ERSgpIGRlY29kZXMgdGhlIG5l eHQgSHVmZm1hbiBjb2RlZCBzeW1ib2wuIEl0J3MgbW9yZSBjb21wbGV4IHRoYW4geW91IHdvdWxk IGluaXRpYWxseSBleHBlY3QgYmVjYXVzZSB0aGUgemxpYiBBUEkgZXhwZWN0cyB0aGUgZGVjb21w cmVzc29yIHRvIG5ldmVyIHJlYWQKLSsvLyBiZXlvbmQgdGhlIGZpbmFsIGJ5dGUgb2YgdGhlIGRl ZmxhdGUgc3RyZWFtLiAoSW4gb3RoZXIgd29yZHMsIHdoZW4gdGhpcyBtYWNybyB3YW50cyB0byBy ZWFkIGFub3RoZXIgYnl0ZSBmcm9tIHRoZSBpbnB1dCwgaXQgUkVBTExZIG5lZWRzIGFub3RoZXIg Ynl0ZSBpbiBvcmRlciB0byBmdWxseQotKy8vIGRlY29kZSB0aGUgbmV4dCBIdWZmbWFuIGNvZGUu KSBIYW5kbGluZyB0aGlzIHByb3Blcmx5IGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgb24gcmF3 IGRlZmxhdGUgKG5vbi16bGliKSBzdHJlYW1zLCB3aGljaCBhcmVuJ3QgZm9sbG93ZWQgYnkgYSBi eXRlIGFsaWduZWQgYWRsZXItMzIuCi0rLy8gVGhlIHNsb3cgcGF0aCBpcyBvbmx5IGV4ZWN1dGVk IGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgaW5wdXQgYnVmZmVyLgotKyNkZWZpbmUgVElORkxfSFVG Rl9ERUNPREUoc3RhdGVfaW5kZXgsIHN5bSwgcEh1ZmYpIGRvIHsgXAotKyAgaW50IHRlbXA7IG16 X3VpbnQgY29kZV9sZW4sIGM7IFwKLSsgIGlmIChudW1fYml0cyA8IDE1KSB7IFwKLSsgICAgaWYg KChwSW5fYnVmX2VuZCAtIHBJbl9idWZfY3VyKSA8IDIpIHsgXAotKyAgICAgICBUSU5GTF9IVUZG X0JJVEJVRl9GSUxMKHN0YXRlX2luZGV4LCBwSHVmZik7IFwKLSsgICAgfSBlbHNlIHsgXAotKyAg ICAgICBiaXRfYnVmIHw9ICgoKHRpbmZsX2JpdF9idWZfdClwSW5fYnVmX2N1clswXSkgPDwgbnVt X2JpdHMpIHwgKCgodGluZmxfYml0X2J1Zl90KXBJbl9idWZfY3VyWzFdKSA8PCAobnVtX2JpdHMg KyA4KSk7IHBJbl9idWZfY3VyICs9IDI7IG51bV9iaXRzICs9IDE2OyBcCi0rICAgIH0gXAotKyAg fSBcCi0rICBpZiAoKHRlbXAgPSAocEh1ZmYpLT5tX2xvb2tfdXBbYml0X2J1ZiAmIChUSU5GTF9G QVNUX0xPT0tVUF9TSVpFIC0gMSldKSA+PSAwKSBcCi0rICAgIGNvZGVfbGVuID0gdGVtcCA+PiA5 LCB0ZW1wICY9IDUxMTsgXAotKyAgZWxzZSB7IFwKLSsgICAgY29kZV9sZW4gPSBUSU5GTF9GQVNU X0xPT0tVUF9CSVRTOyBkbyB7IHRlbXAgPSAocEh1ZmYpLT5tX3RyZWVbfnRlbXAgKyAoKGJpdF9i dWYgPj4gY29kZV9sZW4rKykgJiAxKV07IH0gd2hpbGUgKHRlbXAgPCAwKTsgXAotKyAgfSBzeW0g PSB0ZW1wOyBiaXRfYnVmID4+PSBjb2RlX2xlbjsgbnVtX2JpdHMgLT0gY29kZV9sZW47IH0gTVpf TUFDUk9fRU5ECi0rCi0rdGluZmxfc3RhdHVzIHRpbmZsX2RlY29tcHJlc3ModGluZmxfZGVjb21w cmVzc29yICpyLCBjb25zdCBtel91aW50OCAqcEluX2J1Zl9uZXh0LCBTaXplVCAqcEluX2J1Zl9z aXplLCBtel91aW50OCAqcE91dF9idWZfc3RhcnQsIG16X3VpbnQ4ICpwT3V0X2J1Zl9uZXh0LCBT aXplVCAqcE91dF9idWZfc2l6ZSwgY29uc3QgbXpfdWludDMyIGRlY29tcF9mbGFncykKLSt7Ci0r ICBzdGF0aWMgY29uc3QgaW50IHNfbGVuZ3RoX2Jhc2VbMzFdID0geyAzLDQsNSw2LDcsOCw5LDEw LDExLDEzLCAxNSwxNywxOSwyMywyNywzMSwzNSw0Myw1MSw1OSwgNjcsODMsOTksMTE1LDEzMSwx NjMsMTk1LDIyNywyNTgsMCwwIH07Ci0rICBzdGF0aWMgY29uc3QgaW50IHNfbGVuZ3RoX2V4dHJh WzMxXT0geyAwLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1 LDUsNSw1LDAsMCwwIH07Ci0rICBzdGF0aWMgY29uc3QgaW50IHNfZGlzdF9iYXNlWzMyXSA9IHsg MSwyLDMsNCw1LDcsOSwxMywxNywyNSwzMyw0OSw2NSw5NywxMjksMTkzLCAyNTcsMzg1LDUxMyw3 NjksMTAyNSwxNTM3LDIwNDksMzA3Myw0MDk3LDYxNDUsODE5MywxMjI4OSwxNjM4NSwyNDU3Nyww LDB9OwotKyAgc3RhdGljIGNvbnN0IGludCBzX2Rpc3RfZXh0cmFbMzJdID0geyAwLDAsMCwwLDEs MSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEz fTsKLSsgIHN0YXRpYyBjb25zdCBtel91aW50OCBzX2xlbmd0aF9kZXppZ3phZ1sxOV0gPSB7IDE2 LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTUgfTsKLSsgIHN0YXRp YyBjb25zdCBpbnQgc19taW5fdGFibGVfc2l6ZXNbM10gPSB7IDI1NywgMSwgNCB9OwotKwotKyAg dGluZmxfc3RhdHVzIHN0YXR1cyA9IFRJTkZMX1NUQVRVU19GQUlMRUQ7IG16X3VpbnQzMiBudW1f Yml0cywgZGlzdCwgY291bnRlciwgbnVtX2V4dHJhOyB0aW5mbF9iaXRfYnVmX3QgYml0X2J1ZjsK LSsgIGNvbnN0IG16X3VpbnQ4ICpwSW5fYnVmX2N1ciA9IHBJbl9idWZfbmV4dCwgKmNvbnN0IHBJ bl9idWZfZW5kID0gcEluX2J1Zl9uZXh0ICsgKnBJbl9idWZfc2l6ZTsKLSsgIG16X3VpbnQ4ICpw T3V0X2J1Zl9jdXIgPSBwT3V0X2J1Zl9uZXh0LCAqY29uc3QgcE91dF9idWZfZW5kID0gcE91dF9i dWZfbmV4dCArICpwT3V0X2J1Zl9zaXplOwotKyAgU2l6ZVQgb3V0X2J1Zl9zaXplX21hc2sgPSAo ZGVjb21wX2ZsYWdzICYgVElORkxfRkxBR19VU0lOR19OT05fV1JBUFBJTkdfT1VUUFVUX0JVRikg PyAoU2l6ZVQpLTEgOiAoKHBPdXRfYnVmX25leHQgLSBwT3V0X2J1Zl9zdGFydCkgKyAqcE91dF9i dWZfc2l6ZSkgLSAxLCBkaXN0X2Zyb21fb3V0X2J1Zl9zdGFydDsKLSsKLSsgIC8vIEVuc3VyZSB0 aGUgb3V0cHV0IGJ1ZmZlcidzIHNpemUgaXMgYSBwb3dlciBvZiAyLCB1bmxlc3MgdGhlIG91dHB1 dCBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlIGVudGlyZSBvdXRwdXQgZmlsZSAo aW4gd2hpY2ggY2FzZSBpdCBkb2Vzbid0IG1hdHRlcikuCi0rICBpZiAoKChvdXRfYnVmX3NpemVf bWFzayArIDEpICYgb3V0X2J1Zl9zaXplX21hc2spIHx8IChwT3V0X2J1Zl9uZXh0IDwgcE91dF9i dWZfc3RhcnQpKSB7ICpwSW5fYnVmX3NpemUgPSAqcE91dF9idWZfc2l6ZSA9IDA7IHJldHVybiBU SU5GTF9TVEFUVVNfQkFEX1BBUkFNOyB9Ci0rCi0rICBudW1fYml0cyA9IHItPm1fbnVtX2JpdHM7 IGJpdF9idWYgPSByLT5tX2JpdF9idWY7IGRpc3QgPSByLT5tX2Rpc3Q7IGNvdW50ZXIgPSByLT5t X2NvdW50ZXI7IG51bV9leHRyYSA9IHItPm1fbnVtX2V4dHJhOyBkaXN0X2Zyb21fb3V0X2J1Zl9z dGFydCA9IHItPm1fZGlzdF9mcm9tX291dF9idWZfc3RhcnQ7Ci0rICBUSU5GTF9DUl9CRUdJTgot KwotKyAgYml0X2J1ZiA9IG51bV9iaXRzID0gZGlzdCA9IGNvdW50ZXIgPSBudW1fZXh0cmEgPSBy LT5tX3poZHIwID0gci0+bV96aGRyMSA9IDA7IHItPm1fel9hZGxlcjMyID0gci0+bV9jaGVja19h ZGxlcjMyID0gMTsKLSsgIGlmIChkZWNvbXBfZmxhZ3MgJiBUSU5GTF9GTEFHX1BBUlNFX1pMSUJf SEVBREVSKQotKyAgewotKyAgICBUSU5GTF9HRVRfQllURSgxLCByLT5tX3poZHIwKTsgVElORkxf R0VUX0JZVEUoMiwgci0+bV96aGRyMSk7Ci0rICAgIGNvdW50ZXIgPSAoKChyLT5tX3poZHIwICog MjU2ICsgci0+bV96aGRyMSkgJSAzMSAhPSAwKSB8fCAoci0+bV96aGRyMSAmIDMyKSB8fCAoKHIt Pm1femhkcjAgJiAxNSkgIT0gOCkpOwotKyAgICBpZiAoIShkZWNvbXBfZmxhZ3MgJiBUSU5GTF9G TEFHX1VTSU5HX05PTl9XUkFQUElOR19PVVRQVVRfQlVGKSkgY291bnRlciB8PSAoKCgxVSA8PCAo OFUgKyAoci0+bV96aGRyMCA+PiA0KSkpID4gMzI3NjhVKSB8fCAoKG91dF9idWZfc2l6ZV9tYXNr ICsgMSkgPCAoU2l6ZVQpKDFVIDw8ICg4VSArIChyLT5tX3poZHIwID4+IDQpKSkpKTsKLSsgICAg aWYgKGNvdW50ZXIpIHsgVElORkxfQ1JfUkVUVVJOX0ZPUkVWRVIoMzYsIFRJTkZMX1NUQVRVU19G QUlMRUQpOyB9Ci0rICB9Ci0rCi0rICBkbwotKyAgewotKyAgICBUSU5GTF9HRVRfQklUUygzLCBy LT5tX2ZpbmFsLCAzKTsgci0+bV90eXBlID0gci0+bV9maW5hbCA+PiAxOwotKyAgICBpZiAoci0+ bV90eXBlID09IDApCi0rICAgIHsKLSsgICAgICBUSU5GTF9TS0lQX0JJVFMoNSwgbnVtX2JpdHMg JiA3KTsKLSsgICAgICBmb3IgKGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgNDsgKytjb3VudGVyKSB7 IGlmIChudW1fYml0cykgVElORkxfR0VUX0JJVFMoNiwgci0+bV9yYXdfaGVhZGVyW2NvdW50ZXJd LCA4KTsgZWxzZSBUSU5GTF9HRVRfQllURSg3LCByLT5tX3Jhd19oZWFkZXJbY291bnRlcl0pOyB9 Ci0rICAgICAgaWYgKChjb3VudGVyID0gKHItPm1fcmF3X2hlYWRlclswXSB8IChyLT5tX3Jhd19o ZWFkZXJbMV0gPDwgOCkpKSAhPSAobXpfdWludCkoMHhGRkZGIF4gKHItPm1fcmF3X2hlYWRlclsy XSB8IChyLT5tX3Jhd19oZWFkZXJbM10gPDwgOCkpKSkgeyBUSU5GTF9DUl9SRVRVUk5fRk9SRVZF UigzOSwgVElORkxfU1RBVFVTX0ZBSUxFRCk7IH0KLSsgICAgICB3aGlsZSAoKGNvdW50ZXIpICYm IChudW1fYml0cykpCi0rICAgICAgewotKyAgICAgICAgVElORkxfR0VUX0JJVFMoNTEsIGRpc3Qs IDgpOwotKyAgICAgICAgd2hpbGUgKHBPdXRfYnVmX2N1ciA+PSBwT3V0X2J1Zl9lbmQpIHsgVElO RkxfQ1JfUkVUVVJOKDUyLCBUSU5GTF9TVEFUVVNfSEFTX01PUkVfT1VUUFVUKTsgfQotKyAgICAg ICAgKnBPdXRfYnVmX2N1cisrID0gKG16X3VpbnQ4KWRpc3Q7Ci0rICAgICAgICBjb3VudGVyLS07 Ci0rICAgICAgfQotKyAgICAgIHdoaWxlIChjb3VudGVyKQotKyAgICAgIHsKLSsgICAgICAgIFNp emVUIG47IHdoaWxlIChwT3V0X2J1Zl9jdXIgPj0gcE91dF9idWZfZW5kKSB7IFRJTkZMX0NSX1JF VFVSTig5LCBUSU5GTF9TVEFUVVNfSEFTX01PUkVfT1VUUFVUKTsgfQotKyAgICAgICAgd2hpbGUg KHBJbl9idWZfY3VyID49IHBJbl9idWZfZW5kKQotKyAgICAgICAgewotKyAgICAgICAgICBpZiAo ZGVjb21wX2ZsYWdzICYgVElORkxfRkxBR19IQVNfTU9SRV9JTlBVVCkKLSsgICAgICAgICAgewot KyAgICAgICAgICAgIFRJTkZMX0NSX1JFVFVSTigzOCwgVElORkxfU1RBVFVTX05FRURTX01PUkVf SU5QVVQpOwotKyAgICAgICAgICB9Ci0rICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgewotKyAg ICAgICAgICAgIFRJTkZMX0NSX1JFVFVSTl9GT1JFVkVSKDQwLCBUSU5GTF9TVEFUVVNfRkFJTEVE KTsKLSsgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICAgICAgbiA9IE1aX01JTihNWl9NSU4o KFNpemVUKShwT3V0X2J1Zl9lbmQgLSBwT3V0X2J1Zl9jdXIpLCAoU2l6ZVQpKHBJbl9idWZfZW5k IC0gcEluX2J1Zl9jdXIpKSwgY291bnRlcik7Ci0rICAgICAgICBUSU5GTF9NRU1DUFkocE91dF9i dWZfY3VyLCBwSW5fYnVmX2N1ciwgbik7IHBJbl9idWZfY3VyICs9IG47IHBPdXRfYnVmX2N1ciAr PSBuOyBjb3VudGVyIC09IChtel91aW50KW47Ci0rICAgICAgfQotKyAgICB9Ci0rICAgIGVsc2Ug aWYgKHItPm1fdHlwZSA9PSAzKQotKyAgICB7Ci0rICAgICAgVElORkxfQ1JfUkVUVVJOX0ZPUkVW RVIoMTAsIFRJTkZMX1NUQVRVU19GQUlMRUQpOwotKyAgICB9Ci0rICAgIGVsc2UKLSsgICAgewot KyAgICAgIGlmIChyLT5tX3R5cGUgPT0gMSkKLSsgICAgICB7Ci0rICAgICAgICBtel91aW50OCAq cCA9IHItPm1fdGFibGVzWzBdLm1fY29kZV9zaXplOyBtel91aW50IGk7Ci0rICAgICAgICByLT5t X3RhYmxlX3NpemVzWzBdID0gMjg4OyByLT5tX3RhYmxlX3NpemVzWzFdID0gMzI7IFRJTkZMX01F TVNFVChyLT5tX3RhYmxlc1sxXS5tX2NvZGVfc2l6ZSwgNSwgMzIpOwotKyAgICAgICAgZm9yICgg aSA9IDA7IGkgPD0gMTQzOyArK2kpICpwKysgPSA4OyBmb3IgKCA7IGkgPD0gMjU1OyArK2kpICpw KysgPSA5OyBmb3IgKCA7IGkgPD0gMjc5OyArK2kpICpwKysgPSA3OyBmb3IgKCA7IGkgPD0gMjg3 OyArK2kpICpwKysgPSA4OwotKyAgICAgIH0KLSsgICAgICBlbHNlCi0rICAgICAgewotKyAgICAg ICAgZm9yIChjb3VudGVyID0gMDsgY291bnRlciA8IDM7IGNvdW50ZXIrKykgeyBUSU5GTF9HRVRf QklUUygxMSwgci0+bV90YWJsZV9zaXplc1tjb3VudGVyXSwgIlwwNVwwNVwwNCJbY291bnRlcl0p OyByLT5tX3RhYmxlX3NpemVzW2NvdW50ZXJdICs9IHNfbWluX3RhYmxlX3NpemVzW2NvdW50ZXJd OyB9Ci0rICAgICAgICBNWl9DTEVBUl9PQkooci0+bV90YWJsZXNbMl0ubV9jb2RlX3NpemUpOyBm b3IgKGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgci0+bV90YWJsZV9zaXplc1syXTsgY291bnRlcisr KSB7IG16X3VpbnQgczsgVElORkxfR0VUX0JJVFMoMTQsIHMsIDMpOyByLT5tX3RhYmxlc1syXS5t X2NvZGVfc2l6ZVtzX2xlbmd0aF9kZXppZ3phZ1tjb3VudGVyXV0gPSAobXpfdWludDgpczsgfQot KyAgICAgICAgci0+bV90YWJsZV9zaXplc1syXSA9IDE5OwotKyAgICAgIH0KLSsgICAgICBmb3Ig KCA7IChpbnQpci0+bV90eXBlID49IDA7IHItPm1fdHlwZS0tKQotKyAgICAgIHsKLSsgICAgICAg IGludCB0cmVlX25leHQsIHRyZWVfY3VyOyB0aW5mbF9odWZmX3RhYmxlICpwVGFibGU7Ci0rICAg ICAgICBtel91aW50IGksIGosIHVzZWRfc3ltcywgdG90YWwsIHN5bV9pbmRleCwgbmV4dF9jb2Rl WzE3XSwgdG90YWxfc3ltc1sxNl07IHBUYWJsZSA9ICZyLT5tX3RhYmxlc1tyLT5tX3R5cGVdOyBN Wl9DTEVBUl9PQkoodG90YWxfc3ltcyk7IE1aX0NMRUFSX09CSihwVGFibGUtPm1fbG9va191cCk7 IE1aX0NMRUFSX09CSihwVGFibGUtPm1fdHJlZSk7Ci0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwg ci0+bV90YWJsZV9zaXplc1tyLT5tX3R5cGVdOyArK2kpIHRvdGFsX3N5bXNbcFRhYmxlLT5tX2Nv ZGVfc2l6ZVtpXV0rKzsKLSsgICAgICAgIHVzZWRfc3ltcyA9IDAsIHRvdGFsID0gMDsgbmV4dF9j b2RlWzBdID0gbmV4dF9jb2RlWzFdID0gMDsKLSsgICAgICAgIGZvciAoaSA9IDE7IGkgPD0gMTU7 ICsraSkgeyB1c2VkX3N5bXMgKz0gdG90YWxfc3ltc1tpXTsgbmV4dF9jb2RlW2kgKyAxXSA9ICh0 b3RhbCA9ICgodG90YWwgKyB0b3RhbF9zeW1zW2ldKSA8PCAxKSk7IH0KLSsgICAgICAgIGlmICgo NjU1MzYgIT0gdG90YWwpICYmICh1c2VkX3N5bXMgPiAxKSkKLSsgICAgICAgIHsKLSsgICAgICAg ICAgVElORkxfQ1JfUkVUVVJOX0ZPUkVWRVIoMzUsIFRJTkZMX1NUQVRVU19GQUlMRUQpOwotKyAg ICAgICAgfQotKyAgICAgICAgZm9yICh0cmVlX25leHQgPSAtMSwgc3ltX2luZGV4ID0gMDsgc3lt X2luZGV4IDwgci0+bV90YWJsZV9zaXplc1tyLT5tX3R5cGVdOyArK3N5bV9pbmRleCkKLSsgICAg ICAgIHsKLSsgICAgICAgICAgbXpfdWludCByZXZfY29kZSA9IDAsIGwsIGN1cl9jb2RlLCBjb2Rl X3NpemUgPSBwVGFibGUtPm1fY29kZV9zaXplW3N5bV9pbmRleF07IGlmICghY29kZV9zaXplKSBj b250aW51ZTsKLSsgICAgICAgICAgY3VyX2NvZGUgPSBuZXh0X2NvZGVbY29kZV9zaXplXSsrOyBm b3IgKGwgPSBjb2RlX3NpemU7IGwgPiAwOyBsLS0sIGN1cl9jb2RlID4+PSAxKSByZXZfY29kZSA9 IChyZXZfY29kZSA8PCAxKSB8IChjdXJfY29kZSAmIDEpOwotKyAgICAgICAgICBpZiAoY29kZV9z aXplIDw9IFRJTkZMX0ZBU1RfTE9PS1VQX0JJVFMpIHsgbXpfaW50MTYgayA9IChtel9pbnQxNiko KGNvZGVfc2l6ZSA8PCA5KSB8IHN5bV9pbmRleCk7IHdoaWxlIChyZXZfY29kZSA8IFRJTkZMX0ZB U1RfTE9PS1VQX1NJWkUpIHsgcFRhYmxlLT5tX2xvb2tfdXBbcmV2X2NvZGVdID0gazsgcmV2X2Nv ZGUgKz0gKDEgPDwgY29kZV9zaXplKTsgfSBjb250aW51ZTsgfQotKyAgICAgICAgICBpZiAoMCA9 PSAodHJlZV9jdXIgPSBwVGFibGUtPm1fbG9va191cFtyZXZfY29kZSAmIChUSU5GTF9GQVNUX0xP T0tVUF9TSVpFIC0gMSldKSkgeyBwVGFibGUtPm1fbG9va191cFtyZXZfY29kZSAmIChUSU5GTF9G QVNUX0xPT0tVUF9TSVpFIC0gMSldID0gKG16X2ludDE2KXRyZWVfbmV4dDsgdHJlZV9jdXIgPSB0 cmVlX25leHQ7IHRyZWVfbmV4dCAtPSAyOyB9Ci0rICAgICAgICAgIHJldl9jb2RlID4+PSAoVElO RkxfRkFTVF9MT09LVVBfQklUUyAtIDEpOwotKyAgICAgICAgICBmb3IgKGogPSBjb2RlX3NpemU7 IGogPiAoVElORkxfRkFTVF9MT09LVVBfQklUUyArIDEpOyBqLS0pCi0rICAgICAgICAgIHsKLSsg ICAgICAgICAgICB0cmVlX2N1ciAtPSAoKHJldl9jb2RlID4+PSAxKSAmIDEpOwotKyAgICAgICAg ICAgIGlmICghcFRhYmxlLT5tX3RyZWVbLXRyZWVfY3VyIC0gMV0pIHsgcFRhYmxlLT5tX3RyZWVb LXRyZWVfY3VyIC0gMV0gPSAobXpfaW50MTYpdHJlZV9uZXh0OyB0cmVlX2N1ciA9IHRyZWVfbmV4 dDsgdHJlZV9uZXh0IC09IDI7IH0gZWxzZSB0cmVlX2N1ciA9IHBUYWJsZS0+bV90cmVlWy10cmVl X2N1ciAtIDFdOwotKyAgICAgICAgICB9Ci0rICAgICAgICAgIHRyZWVfY3VyIC09ICgocmV2X2Nv ZGUgPj49IDEpICYgMSk7IHBUYWJsZS0+bV90cmVlWy10cmVlX2N1ciAtIDFdID0gKG16X2ludDE2 KXN5bV9pbmRleDsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChyLT5tX3R5cGUgPT0gMikKLSsg ICAgICAgIHsKLSsgICAgICAgICAgZm9yIChjb3VudGVyID0gMDsgY291bnRlciA8IChyLT5tX3Rh YmxlX3NpemVzWzBdICsgci0+bV90YWJsZV9zaXplc1sxXSk7ICkKLSsgICAgICAgICAgewotKyAg ICAgICAgICAgIG16X3VpbnQgczsgVElORkxfSFVGRl9ERUNPREUoMTYsIGRpc3QsICZyLT5tX3Rh Ymxlc1syXSk7IGlmIChkaXN0IDwgMTYpIHsgci0+bV9sZW5fY29kZXNbY291bnRlcisrXSA9ICht el91aW50OClkaXN0OyBjb250aW51ZTsgfQotKyAgICAgICAgICAgIGlmICgoZGlzdCA9PSAxNikg JiYgKCFjb3VudGVyKSkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBUSU5GTF9DUl9S RVRVUk5fRk9SRVZFUigxNywgVElORkxfU1RBVFVTX0ZBSUxFRCk7Ci0rICAgICAgICAgICAgfQot KyAgICAgICAgICAgIG51bV9leHRyYSA9ICJcMDJcMDNcMDciW2Rpc3QgLSAxNl07IFRJTkZMX0dF VF9CSVRTKDE4LCBzLCBudW1fZXh0cmEpOyBzICs9ICJcMDNcMDNcMDEzIltkaXN0IC0gMTZdOwot KyAgICAgICAgICAgIFRJTkZMX01FTVNFVChyLT5tX2xlbl9jb2RlcyArIGNvdW50ZXIsIChkaXN0 ID09IDE2KSA/IHItPm1fbGVuX2NvZGVzW2NvdW50ZXIgLSAxXSA6IDAsIHMpOyBjb3VudGVyICs9 IHM7Ci0rICAgICAgICAgIH0KLSsgICAgICAgICAgaWYgKChyLT5tX3RhYmxlX3NpemVzWzBdICsg ci0+bV90YWJsZV9zaXplc1sxXSkgIT0gY291bnRlcikKLSsgICAgICAgICAgewotKyAgICAgICAg ICAgIFRJTkZMX0NSX1JFVFVSTl9GT1JFVkVSKDIxLCBUSU5GTF9TVEFUVVNfRkFJTEVEKTsKLSsg ICAgICAgICAgfQotKyAgICAgICAgICBUSU5GTF9NRU1DUFkoci0+bV90YWJsZXNbMF0ubV9jb2Rl X3NpemUsIHItPm1fbGVuX2NvZGVzLCByLT5tX3RhYmxlX3NpemVzWzBdKTsgVElORkxfTUVNQ1BZ KHItPm1fdGFibGVzWzFdLm1fY29kZV9zaXplLCByLT5tX2xlbl9jb2RlcyArIHItPm1fdGFibGVf c2l6ZXNbMF0sIHItPm1fdGFibGVfc2l6ZXNbMV0pOwotKyAgICAgICAgfQotKyAgICAgIH0KLSsg ICAgICBmb3IgKCA7IDsgKQotKyAgICAgIHsKLSsgICAgICAgIG16X3VpbnQ4ICpwU3JjOwotKyAg ICAgICAgZm9yICggOyA7ICkKLSsgICAgICAgIHsKLSsgICAgICAgICAgaWYgKCgocEluX2J1Zl9l bmQgLSBwSW5fYnVmX2N1cikgPCA0KSB8fCAoKHBPdXRfYnVmX2VuZCAtIHBPdXRfYnVmX2N1cikg PCAyKSkKLSsgICAgICAgICAgewotKyAgICAgICAgICAgIFRJTkZMX0hVRkZfREVDT0RFKDIzLCBj b3VudGVyLCAmci0+bV90YWJsZXNbMF0pOwotKyAgICAgICAgICAgIGlmIChjb3VudGVyID49IDI1 NikKLSsgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIHdoaWxlIChwT3V0X2J1Zl9j dXIgPj0gcE91dF9idWZfZW5kKSB7IFRJTkZMX0NSX1JFVFVSTigyNCwgVElORkxfU1RBVFVTX0hB U19NT1JFX09VVFBVVCk7IH0KLSsgICAgICAgICAgICAqcE91dF9idWZfY3VyKysgPSAobXpfdWlu dDgpY291bnRlcjsKLSsgICAgICAgICAgfQotKyAgICAgICAgICBlbHNlCi0rICAgICAgICAgIHsK LSsgICAgICAgICAgICBpbnQgc3ltMjsgbXpfdWludCBjb2RlX2xlbjsKLSsjaWYgVElORkxfVVNF XzY0QklUX0JJVEJVRgotKyAgICAgICAgICAgIGlmIChudW1fYml0cyA8IDMwKSB7IGJpdF9idWYg fD0gKCgodGluZmxfYml0X2J1Zl90KU1aX1JFQURfTEUzMihwSW5fYnVmX2N1cikpIDw8IG51bV9i aXRzKTsgcEluX2J1Zl9jdXIgKz0gNDsgbnVtX2JpdHMgKz0gMzI7IH0KLSsjZWxzZQotKyAgICAg ICAgICAgIGlmIChudW1fYml0cyA8IDE1KSB7IGJpdF9idWYgfD0gKCgodGluZmxfYml0X2J1Zl90 KU1aX1JFQURfTEUxNihwSW5fYnVmX2N1cikpIDw8IG51bV9iaXRzKTsgcEluX2J1Zl9jdXIgKz0g MjsgbnVtX2JpdHMgKz0gMTY7IH0KLSsjZW5kaWYKLSsgICAgICAgICAgICBpZiAoKHN5bTIgPSBy LT5tX3RhYmxlc1swXS5tX2xvb2tfdXBbYml0X2J1ZiAmIChUSU5GTF9GQVNUX0xPT0tVUF9TSVpF IC0gMSldKSA+PSAwKQotKyAgICAgICAgICAgICAgY29kZV9sZW4gPSBzeW0yID4+IDk7Ci0rICAg ICAgICAgICAgZWxzZQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIGNvZGVfbGVuID0g VElORkxfRkFTVF9MT09LVVBfQklUUzsgZG8geyBzeW0yID0gci0+bV90YWJsZXNbMF0ubV90cmVl W35zeW0yICsgKChiaXRfYnVmID4+IGNvZGVfbGVuKyspICYgMSldOyB9IHdoaWxlIChzeW0yIDwg MCk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGNvdW50ZXIgPSBzeW0yOyBiaXRfYnVm ID4+PSBjb2RlX2xlbjsgbnVtX2JpdHMgLT0gY29kZV9sZW47Ci0rICAgICAgICAgICAgaWYgKGNv dW50ZXIgJiAyNTYpCi0rICAgICAgICAgICAgICBicmVhazsKLSsKLSsjaWYgIVRJTkZMX1VTRV82 NEJJVF9CSVRCVUYKLSsgICAgICAgICAgICBpZiAobnVtX2JpdHMgPCAxNSkgeyBiaXRfYnVmIHw9 ICgoKHRpbmZsX2JpdF9idWZfdClNWl9SRUFEX0xFMTYocEluX2J1Zl9jdXIpKSA8PCBudW1fYml0 cyk7IHBJbl9idWZfY3VyICs9IDI7IG51bV9iaXRzICs9IDE2OyB9Ci0rI2VuZGlmCi0rICAgICAg ICAgICAgaWYgKChzeW0yID0gci0+bV90YWJsZXNbMF0ubV9sb29rX3VwW2JpdF9idWYgJiAoVElO RkxfRkFTVF9MT09LVVBfU0laRSAtIDEpXSkgPj0gMCkKLSsgICAgICAgICAgICAgIGNvZGVfbGVu ID0gc3ltMiA+PiA5OwotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICB7Ci0rICAgICAg ICAgICAgICBjb2RlX2xlbiA9IFRJTkZMX0ZBU1RfTE9PS1VQX0JJVFM7IGRvIHsgc3ltMiA9IHIt Pm1fdGFibGVzWzBdLm1fdHJlZVt+c3ltMiArICgoYml0X2J1ZiA+PiBjb2RlX2xlbisrKSAmIDEp XTsgfSB3aGlsZSAoc3ltMiA8IDApOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBiaXRf YnVmID4+PSBjb2RlX2xlbjsgbnVtX2JpdHMgLT0gY29kZV9sZW47Ci0rCi0rICAgICAgICAgICAg cE91dF9idWZfY3VyWzBdID0gKG16X3VpbnQ4KWNvdW50ZXI7Ci0rICAgICAgICAgICAgaWYgKHN5 bTIgJiAyNTYpCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgcE91dF9idWZfY3VyKys7 Ci0rICAgICAgICAgICAgICBjb3VudGVyID0gc3ltMjsKLSsgICAgICAgICAgICAgIGJyZWFrOwot KyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBwT3V0X2J1Zl9jdXJbMV0gPSAobXpfdWludDgp c3ltMjsKLSsgICAgICAgICAgICBwT3V0X2J1Zl9jdXIgKz0gMjsKLSsgICAgICAgICAgfQotKyAg ICAgICAgfQotKyAgICAgICAgaWYgKChjb3VudGVyICY9IDUxMSkgPT0gMjU2KSBicmVhazsKLSsK LSsgICAgICAgIG51bV9leHRyYSA9IHNfbGVuZ3RoX2V4dHJhW2NvdW50ZXIgLSAyNTddOyBjb3Vu dGVyID0gc19sZW5ndGhfYmFzZVtjb3VudGVyIC0gMjU3XTsKLSsgICAgICAgIGlmIChudW1fZXh0 cmEpIHsgbXpfdWludCBleHRyYV9iaXRzOyBUSU5GTF9HRVRfQklUUygyNSwgZXh0cmFfYml0cywg bnVtX2V4dHJhKTsgY291bnRlciArPSBleHRyYV9iaXRzOyB9Ci0rCi0rICAgICAgICBUSU5GTF9I VUZGX0RFQ09ERSgyNiwgZGlzdCwgJnItPm1fdGFibGVzWzFdKTsKLSsgICAgICAgIG51bV9leHRy YSA9IHNfZGlzdF9leHRyYVtkaXN0XTsgZGlzdCA9IHNfZGlzdF9iYXNlW2Rpc3RdOwotKyAgICAg ICAgaWYgKG51bV9leHRyYSkgeyBtel91aW50IGV4dHJhX2JpdHM7IFRJTkZMX0dFVF9CSVRTKDI3 LCBleHRyYV9iaXRzLCBudW1fZXh0cmEpOyBkaXN0ICs9IGV4dHJhX2JpdHM7IH0KLSsKLSsgICAg ICAgIGRpc3RfZnJvbV9vdXRfYnVmX3N0YXJ0ID0gcE91dF9idWZfY3VyIC0gcE91dF9idWZfc3Rh cnQ7Ci0rICAgICAgICBpZiAoKGRpc3QgPiBkaXN0X2Zyb21fb3V0X2J1Zl9zdGFydCkgJiYgKGRl Y29tcF9mbGFncyAmIFRJTkZMX0ZMQUdfVVNJTkdfTk9OX1dSQVBQSU5HX09VVFBVVF9CVUYpKQot KyAgICAgICAgewotKyAgICAgICAgICBUSU5GTF9DUl9SRVRVUk5fRk9SRVZFUigzNywgVElORkxf U1RBVFVTX0ZBSUxFRCk7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBwU3JjID0gcE91dF9idWZf c3RhcnQgKyAoKGRpc3RfZnJvbV9vdXRfYnVmX3N0YXJ0IC0gZGlzdCkgJiBvdXRfYnVmX3NpemVf bWFzayk7Ci0rCi0rICAgICAgICBpZiAoKE1aX01BWChwT3V0X2J1Zl9jdXIsIHBTcmMpICsgY291 bnRlcikgPiBwT3V0X2J1Zl9lbmQpCi0rICAgICAgICB7Ci0rICAgICAgICAgIHdoaWxlIChjb3Vu dGVyLS0pCi0rICAgICAgICAgIHsKLSsgICAgICAgICAgICB3aGlsZSAocE91dF9idWZfY3VyID49 IHBPdXRfYnVmX2VuZCkgeyBUSU5GTF9DUl9SRVRVUk4oNTMsIFRJTkZMX1NUQVRVU19IQVNfTU9S RV9PVVRQVVQpOyB9Ci0rICAgICAgICAgICAgKnBPdXRfYnVmX2N1cisrID0gcE91dF9idWZfc3Rh cnRbKGRpc3RfZnJvbV9vdXRfYnVmX3N0YXJ0KysgLSBkaXN0KSAmIG91dF9idWZfc2l6ZV9tYXNr XTsKLSsgICAgICAgICAgfQotKyAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIH0KLSsjaWYg TUlOSVpfVVNFX1VOQUxJR05FRF9MT0FEU19BTkRfU1RPUkVTCi0rICAgICAgICBlbHNlIGlmICgo Y291bnRlciA+PSA5KSAmJiAoY291bnRlciA8PSBkaXN0KSkKLSsgICAgICAgIHsKLSsgICAgICAg ICAgY29uc3QgbXpfdWludDggKnBTcmNfZW5kID0gcFNyYyArIChjb3VudGVyICYgfjcpOwotKyAg ICAgICAgICBkbwotKyAgICAgICAgICB7Ci0rICAgICAgICAgICAgKChtel91aW50MzIgKilwT3V0 X2J1Zl9jdXIpWzBdID0gKChjb25zdCBtel91aW50MzIgKilwU3JjKVswXTsKLSsgICAgICAgICAg ICAoKG16X3VpbnQzMiAqKXBPdXRfYnVmX2N1cilbMV0gPSAoKGNvbnN0IG16X3VpbnQzMiAqKXBT cmMpWzFdOwotKyAgICAgICAgICAgIHBPdXRfYnVmX2N1ciArPSA4OwotKyAgICAgICAgICB9IHdo aWxlICgocFNyYyArPSA4KSA8IHBTcmNfZW5kKTsKLSsgICAgICAgICAgaWYgKChjb3VudGVyICY9 IDcpIDwgMykKLSsgICAgICAgICAgewotKyAgICAgICAgICAgIGlmIChjb3VudGVyKQotKyAgICAg ICAgICAgIHsKLSsgICAgICAgICAgICAgIHBPdXRfYnVmX2N1clswXSA9IHBTcmNbMF07Ci0rICAg ICAgICAgICAgICBpZiAoY291bnRlciA+IDEpCi0rICAgICAgICAgICAgICAgIHBPdXRfYnVmX2N1 clsxXSA9IHBTcmNbMV07Ci0rICAgICAgICAgICAgICBwT3V0X2J1Zl9jdXIgKz0gY291bnRlcjsK LSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgIH0KLSsg ICAgICAgIH0KLSsjZW5kaWYKLSsgICAgICAgIGRvCi0rICAgICAgICB7Ci0rICAgICAgICAgIHBP dXRfYnVmX2N1clswXSA9IHBTcmNbMF07Ci0rICAgICAgICAgIHBPdXRfYnVmX2N1clsxXSA9IHBT cmNbMV07Ci0rICAgICAgICAgIHBPdXRfYnVmX2N1clsyXSA9IHBTcmNbMl07Ci0rICAgICAgICAg IHBPdXRfYnVmX2N1ciArPSAzOyBwU3JjICs9IDM7Ci0rICAgICAgICB9IHdoaWxlICgoaW50KShj b3VudGVyIC09IDMpID4gMik7Ci0rICAgICAgICBpZiAoKGludCljb3VudGVyID4gMCkKLSsgICAg ICAgIHsKLSsgICAgICAgICAgcE91dF9idWZfY3VyWzBdID0gcFNyY1swXTsKLSsgICAgICAgICAg aWYgKChpbnQpY291bnRlciA+IDEpCi0rICAgICAgICAgICAgcE91dF9idWZfY3VyWzFdID0gcFNy Y1sxXTsKLSsgICAgICAgICAgcE91dF9idWZfY3VyICs9IGNvdW50ZXI7Ci0rICAgICAgICB9Ci0r ICAgICAgfQotKyAgICB9Ci0rICB9IHdoaWxlICghKHItPm1fZmluYWwgJiAxKSk7Ci0rICBpZiAo ZGVjb21wX2ZsYWdzICYgVElORkxfRkxBR19QQVJTRV9aTElCX0hFQURFUikKLSsgIHsKLSsgICAg VElORkxfU0tJUF9CSVRTKDMyLCBudW1fYml0cyAmIDcpOyBmb3IgKGNvdW50ZXIgPSAwOyBjb3Vu dGVyIDwgNDsgKytjb3VudGVyKSB7IG16X3VpbnQgczsgaWYgKG51bV9iaXRzKSBUSU5GTF9HRVRf QklUUyg0MSwgcywgOCk7IGVsc2UgVElORkxfR0VUX0JZVEUoNDIsIHMpOyByLT5tX3pfYWRsZXIz MiA9IChyLT5tX3pfYWRsZXIzMiA8PCA4KSB8IHM7IH0KLSsgIH0KLSsgIFRJTkZMX0NSX1JFVFVS Tl9GT1JFVkVSKDM0LCBUSU5GTF9TVEFUVVNfRE9ORSk7Ci0rICBUSU5GTF9DUl9GSU5JU0gKLSsK LStjb21tb25fZXhpdDoKLSsgIHItPm1fbnVtX2JpdHMgPSBudW1fYml0czsgci0+bV9iaXRfYnVm ID0gYml0X2J1Zjsgci0+bV9kaXN0ID0gZGlzdDsgci0+bV9jb3VudGVyID0gY291bnRlcjsgci0+ bV9udW1fZXh0cmEgPSBudW1fZXh0cmE7IHItPm1fZGlzdF9mcm9tX291dF9idWZfc3RhcnQgPSBk aXN0X2Zyb21fb3V0X2J1Zl9zdGFydDsKLSsgICpwSW5fYnVmX3NpemUgPSBwSW5fYnVmX2N1ciAt IHBJbl9idWZfbmV4dDsgKnBPdXRfYnVmX3NpemUgPSBwT3V0X2J1Zl9jdXIgLSBwT3V0X2J1Zl9u ZXh0OwotKyAgaWYgKChkZWNvbXBfZmxhZ3MgJiAoVElORkxfRkxBR19QQVJTRV9aTElCX0hFQURF UiB8IFRJTkZMX0ZMQUdfQ09NUFVURV9BRExFUjMyKSkgJiYgKHN0YXR1cyA+PSAwKSkKLSsgIHsK LSsgICAgY29uc3QgbXpfdWludDggKnB0ciA9IHBPdXRfYnVmX25leHQ7IFNpemVUIGJ1Zl9sZW4g PSAqcE91dF9idWZfc2l6ZTsKLSsgICAgbXpfdWludDMyIGksIHMxID0gci0+bV9jaGVja19hZGxl cjMyICYgMHhmZmZmLCBzMiA9IHItPm1fY2hlY2tfYWRsZXIzMiA+PiAxNjsgU2l6ZVQgYmxvY2tf bGVuID0gYnVmX2xlbiAlIDU1NTI7Ci0rICAgIHdoaWxlIChidWZfbGVuKQotKyAgICB7Ci0rICAg ICAgZm9yIChpID0gMDsgaSArIDcgPCBibG9ja19sZW47IGkgKz0gOCwgcHRyICs9IDgpCi0rICAg ICAgewotKyAgICAgICAgczEgKz0gcHRyWzBdLCBzMiArPSBzMTsgczEgKz0gcHRyWzFdLCBzMiAr PSBzMTsgczEgKz0gcHRyWzJdLCBzMiArPSBzMTsgczEgKz0gcHRyWzNdLCBzMiArPSBzMTsKLSsg ICAgICAgIHMxICs9IHB0cls0XSwgczIgKz0gczE7IHMxICs9IHB0cls1XSwgczIgKz0gczE7IHMx ICs9IHB0cls2XSwgczIgKz0gczE7IHMxICs9IHB0cls3XSwgczIgKz0gczE7Ci0rICAgICAgfQot KyAgICAgIGZvciAoIDsgaSA8IGJsb2NrX2xlbjsgKytpKSBzMSArPSAqcHRyKyssIHMyICs9IHMx OwotKyAgICAgIHMxICU9IDY1NTIxVSwgczIgJT0gNjU1MjFVOyBidWZfbGVuIC09IGJsb2NrX2xl bjsgYmxvY2tfbGVuID0gNTU1MjsKLSsgICAgfQotKyAgICByLT5tX2NoZWNrX2FkbGVyMzIgPSAo czIgPDwgMTYpICsgczE7IGlmICgoc3RhdHVzID09IFRJTkZMX1NUQVRVU19ET05FKSAmJiAoZGVj b21wX2ZsYWdzICYgVElORkxfRkxBR19QQVJTRV9aTElCX0hFQURFUikgJiYgKHItPm1fY2hlY2tf YWRsZXIzMiAhPSByLT5tX3pfYWRsZXIzMikpIHN0YXR1cyA9IFRJTkZMX1NUQVRVU19BRExFUjMy X01JU01BVENIOwotKyAgfQotKyAgcmV0dXJuIHN0YXR1czsKLSt9Ci0rCi0rLy8gSGlnaGVyIGxl dmVsIGhlbHBlciBmdW5jdGlvbnMuCi0rdm9pZCAqdGluZmxfZGVjb21wcmVzc19tZW1fdG9faGVh cChjb25zdCB2b2lkICpwU3JjX2J1ZiwgU2l6ZVQgc3JjX2J1Zl9sZW4sIFNpemVUICpwT3V0X2xl biwgaW50IGZsYWdzKQotK3sKLSsgIHRpbmZsX2RlY29tcHJlc3NvciBkZWNvbXA7IHZvaWQgKnBC dWYgPSBOVUxMLCAqcE5ld19idWY7IFNpemVUIHNyY19idWZfb2ZzID0gMCwgb3V0X2J1Zl9jYXBh Y2l0eSA9IDA7Ci0rICAqcE91dF9sZW4gPSAwOwotKyAgdGluZmxfaW5pdCgmZGVjb21wKTsKLSsg IGZvciAoIDsgOyApCi0rICB7Ci0rICAgIFNpemVUIHNyY19idWZfc2l6ZSA9IHNyY19idWZfbGVu IC0gc3JjX2J1Zl9vZnMsIGRzdF9idWZfc2l6ZSA9IG91dF9idWZfY2FwYWNpdHkgLSAqcE91dF9s ZW4sIG5ld19vdXRfYnVmX2NhcGFjaXR5OwotKyAgICB0aW5mbF9zdGF0dXMgc3RhdHVzID0gdGlu ZmxfZGVjb21wcmVzcygmZGVjb21wLCAoY29uc3QgbXpfdWludDgqKXBTcmNfYnVmICsgc3JjX2J1 Zl9vZnMsICZzcmNfYnVmX3NpemUsIChtel91aW50OCopcEJ1ZiwgcEJ1ZiA/IChtel91aW50OCop cEJ1ZiArICpwT3V0X2xlbiA6IE5VTEwsICZkc3RfYnVmX3NpemUsCi0rICAgICAgKGZsYWdzICYg flRJTkZMX0ZMQUdfSEFTX01PUkVfSU5QVVQpIHwgVElORkxfRkxBR19VU0lOR19OT05fV1JBUFBJ TkdfT1VUUFVUX0JVRik7Ci0rICAgIGlmICgoc3RhdHVzIDwgMCkgfHwgKHN0YXR1cyA9PSBUSU5G TF9TVEFUVVNfTkVFRFNfTU9SRV9JTlBVVCkpCi0rICAgIHsKLSsgICAgICBWR18oZnJlZSkocEJ1 Zik7ICpwT3V0X2xlbiA9IDA7IHJldHVybiBOVUxMOwotKyAgICB9Ci0rICAgIHNyY19idWZfb2Zz ICs9IHNyY19idWZfc2l6ZTsKLSsgICAgKnBPdXRfbGVuICs9IGRzdF9idWZfc2l6ZTsKLSsgICAg aWYgKHN0YXR1cyA9PSBUSU5GTF9TVEFUVVNfRE9ORSkgYnJlYWs7Ci0rICAgIG5ld19vdXRfYnVm X2NhcGFjaXR5ID0gb3V0X2J1Zl9jYXBhY2l0eSAqIDI7IGlmIChuZXdfb3V0X2J1Zl9jYXBhY2l0 eSA8IDEyOCkgbmV3X291dF9idWZfY2FwYWNpdHkgPSAxMjg7Ci0rICAgIHBOZXdfYnVmID0gVkdf KHJlYWxsb2MpKCJ0aW5mbC50aW5mbF9kZWNvbXByZXNzX21lbV90b19oZWFwLjEiLCBwQnVmLCBu ZXdfb3V0X2J1Zl9jYXBhY2l0eSk7Ci0rICAgIGlmICghcE5ld19idWYpCi0rICAgIHsKLSsgICAg ICBWR18oZnJlZSkocEJ1Zik7ICpwT3V0X2xlbiA9IDA7IHJldHVybiBOVUxMOwotKyAgICB9Ci0r ICAgIHBCdWYgPSBwTmV3X2J1Zjsgb3V0X2J1Zl9jYXBhY2l0eSA9IG5ld19vdXRfYnVmX2NhcGFj aXR5OwotKyAgfQotKyAgcmV0dXJuIHBCdWY7Ci0rfQotKwotK1NpemVUIHRpbmZsX2RlY29tcHJl c3NfbWVtX3RvX21lbSh2b2lkICpwT3V0X2J1ZiwgU2l6ZVQgb3V0X2J1Zl9sZW4sIGNvbnN0IHZv aWQgKnBTcmNfYnVmLCBTaXplVCBzcmNfYnVmX2xlbiwgaW50IGZsYWdzKQotK3sKLSsgIHRpbmZs X2RlY29tcHJlc3NvciBkZWNvbXA7IHRpbmZsX3N0YXR1cyBzdGF0dXM7IHRpbmZsX2luaXQoJmRl Y29tcCk7Ci0rICBzdGF0dXMgPSB0aW5mbF9kZWNvbXByZXNzKCZkZWNvbXAsIChjb25zdCBtel91 aW50OCopcFNyY19idWYsICZzcmNfYnVmX2xlbiwgKG16X3VpbnQ4KilwT3V0X2J1ZiwgKG16X3Vp bnQ4KilwT3V0X2J1ZiwgJm91dF9idWZfbGVuLCAoZmxhZ3MgJiB+VElORkxfRkxBR19IQVNfTU9S RV9JTlBVVCkgfCBUSU5GTF9GTEFHX1VTSU5HX05PTl9XUkFQUElOR19PVVRQVVRfQlVGKTsKLSsg IHJldHVybiAoc3RhdHVzICE9IFRJTkZMX1NUQVRVU19ET05FKSA/IFRJTkZMX0RFQ09NUFJFU1Nf TUVNX1RPX01FTV9GQUlMRUQgOiBvdXRfYnVmX2xlbjsKLSt9Ci0rCi0raW50IHRpbmZsX2RlY29t cHJlc3NfbWVtX3RvX2NhbGxiYWNrKGNvbnN0IHZvaWQgKnBJbl9idWYsIFNpemVUICpwSW5fYnVm X3NpemUsIHRpbmZsX3B1dF9idWZfZnVuY19wdHIgcFB1dF9idWZfZnVuYywgdm9pZCAqcFB1dF9i dWZfdXNlciwgaW50IGZsYWdzKQotK3sKLSsgIGludCByZXN1bHQgPSAwOwotKyAgdGluZmxfZGVj b21wcmVzc29yIGRlY29tcDsKLSsgIG16X3VpbnQ4ICpwRGljdCA9IChtel91aW50OCopVkdfKG1h bGxvYykoInRpbmZsLnRpbmZsX2RlY29tcHJlc3NfbWVtX3RvX2NhbGxiYWNrLjEiLCBUSU5GTF9M Wl9ESUNUX1NJWkUpOyBTaXplVCBpbl9idWZfb2ZzID0gMCwgZGljdF9vZnMgPSAwOwotKyAgaWYg KCFwRGljdCkKLSsgICAgcmV0dXJuIFRJTkZMX1NUQVRVU19GQUlMRUQ7Ci0rICB0aW5mbF9pbml0 KCZkZWNvbXApOwotKyAgZm9yICggOyA7ICkKLSsgIHsKLSsgICAgU2l6ZVQgaW5fYnVmX3NpemUg PSAqcEluX2J1Zl9zaXplIC0gaW5fYnVmX29mcywgZHN0X2J1Zl9zaXplID0gVElORkxfTFpfRElD VF9TSVpFIC0gZGljdF9vZnM7Ci0rICAgIHRpbmZsX3N0YXR1cyBzdGF0dXMgPSB0aW5mbF9kZWNv bXByZXNzKCZkZWNvbXAsIChjb25zdCBtel91aW50OCopcEluX2J1ZiArIGluX2J1Zl9vZnMsICZp bl9idWZfc2l6ZSwgcERpY3QsIHBEaWN0ICsgZGljdF9vZnMsICZkc3RfYnVmX3NpemUsCi0rICAg ICAgKGZsYWdzICYgfihUSU5GTF9GTEFHX0hBU19NT1JFX0lOUFVUIHwgVElORkxfRkxBR19VU0lO R19OT05fV1JBUFBJTkdfT1VUUFVUX0JVRikpKTsKLSsgICAgaW5fYnVmX29mcyArPSBpbl9idWZf c2l6ZTsKLSsgICAgaWYgKChkc3RfYnVmX3NpemUpICYmICghKCpwUHV0X2J1Zl9mdW5jKShwRGlj dCArIGRpY3Rfb2ZzLCAoaW50KWRzdF9idWZfc2l6ZSwgcFB1dF9idWZfdXNlcikpKQotKyAgICAg IGJyZWFrOwotKyAgICBpZiAoc3RhdHVzICE9IFRJTkZMX1NUQVRVU19IQVNfTU9SRV9PVVRQVVQp Ci0rICAgIHsKLSsgICAgICByZXN1bHQgPSAoc3RhdHVzID09IFRJTkZMX1NUQVRVU19ET05FKTsK LSsgICAgICBicmVhazsKLSsgICAgfQotKyAgICBkaWN0X29mcyA9IChkaWN0X29mcyArIGRzdF9i dWZfc2l6ZSkgJiAoVElORkxfTFpfRElDVF9TSVpFIC0gMSk7Ci0rICB9Ci0rICBWR18oZnJlZSko cERpY3QpOwotKyAgKnBJbl9idWZfc2l6ZSA9IGluX2J1Zl9vZnM7Ci0rICByZXR1cm4gcmVzdWx0 OwotK30KLSsKLSsjZW5kaWYgLy8gI2lmbmRlZiBUSU5GTF9IRUFERVJfRklMRV9PTkxZCmRpZmYg LS1naXQgYS9wYXRjaGVzL3ZhbGdyaW5kLTMuMTEuMC8wMDAxLWNvbmZpZ3VyZS5hYy1hbGxvdy1h bGwtYXJtLWRvbi10LXJlc3RyaWN0LXRvLWFybXY3LnBhdGNoIGIvcGF0Y2hlcy92YWxncmluZC0z LjEyLjAvMDAwMS1jb25maWd1cmUuYWMtYWxsb3ctYWxsLWFybS1kb24tdC1yZXN0cmljdC10by1h cm12Ny5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBwYXRjaGVzL3ZhbGdy aW5kLTMuMTEuMC8wMDAxLWNvbmZpZ3VyZS5hYy1hbGxvdy1hbGwtYXJtLWRvbi10LXJlc3RyaWN0 LXRvLWFybXY3LnBhdGNoCnJlbmFtZSB0byBwYXRjaGVzL3ZhbGdyaW5kLTMuMTIuMC8wMDAxLWNv bmZpZ3VyZS5hYy1hbGxvdy1hbGwtYXJtLWRvbi10LXJlc3RyaWN0LXRvLWFybXY3LnBhdGNoCmlu ZGV4IGFiNTE0NGIuLmU2YTU3ZjYgMTAwNjQ0Ci0tLSBhL3BhdGNoZXMvdmFsZ3JpbmQtMy4xMS4w LzAwMDEtY29uZmlndXJlLmFjLWFsbG93LWFsbC1hcm0tZG9uLXQtcmVzdHJpY3QtdG8tYXJtdjcu cGF0Y2gKKysrIGIvcGF0Y2hlcy92YWxncmluZC0zLjEyLjAvMDAwMS1jb25maWd1cmUuYWMtYWxs b3ctYWxsLWFybS1kb24tdC1yZXN0cmljdC10by1hcm12Ny5wYXRjaApAQCAtMTAsNyArMTAsNyBA QCBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5k ZT4KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlm ZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOGFiN2Y5YjY4Y2Q1 Li5jYzcwZWQyODAxOTIgMTAwNjQ0CitpbmRleCAzNzI4NzFiODdkYzQuLjY2Mzc1YWRjY2MyYyAx MDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtMjM0LDcg KzIzNCw3IEBAIGNhc2UgIiR7aG9zdF9jcHV9IiBpbgpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy92YWxn cmluZC0zLjExLjAvMDAwMi1tYWtlLWtlcm5lbC12ZXJzaW9uLWEtYXV0b2NvbmYtY2FjaGUtdmFy aWFibGUucGF0Y2ggYi9wYXRjaGVzL3ZhbGdyaW5kLTMuMTIuMC8wMDAyLW1ha2Uta2VybmVsLXZl cnNpb24tYS1hdXRvY29uZi1jYWNoZS12YXJpYWJsZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDk2 JQpyZW5hbWUgZnJvbSBwYXRjaGVzL3ZhbGdyaW5kLTMuMTEuMC8wMDAyLW1ha2Uta2VybmVsLXZl cnNpb24tYS1hdXRvY29uZi1jYWNoZS12YXJpYWJsZS5wYXRjaApyZW5hbWUgdG8gcGF0Y2hlcy92 YWxncmluZC0zLjEyLjAvMDAwMi1tYWtlLWtlcm5lbC12ZXJzaW9uLWEtYXV0b2NvbmYtY2FjaGUt dmFyaWFibGUucGF0Y2gKaW5kZXggY2I5NmQ3Yy4uNzYzNWUzYiAxMDA2NDQKLS0tIGEvcGF0Y2hl cy92YWxncmluZC0zLjExLjAvMDAwMi1tYWtlLWtlcm5lbC12ZXJzaW9uLWEtYXV0b2NvbmYtY2Fj aGUtdmFyaWFibGUucGF0Y2gKKysrIGIvcGF0Y2hlcy92YWxncmluZC0zLjEyLjAvMDAwMi1tYWtl LWtlcm5lbC12ZXJzaW9uLWEtYXV0b2NvbmYtY2FjaGUtdmFyaWFibGUucGF0Y2gKQEAgLTgsNyAr OCw3IEBAIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJv bml4LmRlPgogIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0p CiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGNjNzBl ZDI4MDE5Mi4uOTMxMTcxOGJhMTlhIDEwMDY0NAoraW5kZXggNjYzNzVhZGNjYzJjLi5mMDBjZjIw ZmVjYWIgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwogQEAg LTMyOCwxNiArMzI4LDE3IEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCmRpZmYgLS1naXQgYS9wYXRj aGVzL3ZhbGdyaW5kLTMuMTEuMC9hdXRvZ2VuLnNoIGIvcGF0Y2hlcy92YWxncmluZC0zLjEyLjAv YXV0b2dlbi5zaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcGF0Y2hlcy92YWxn cmluZC0zLjExLjAvYXV0b2dlbi5zaApyZW5hbWUgdG8gcGF0Y2hlcy92YWxncmluZC0zLjEyLjAv YXV0b2dlbi5zaApkaWZmIC0tZ2l0IGEvcGF0Y2hlcy92YWxncmluZC0zLjExLjAvc2VyaWVzIGIv cGF0Y2hlcy92YWxncmluZC0zLjEyLjAvc2VyaWVzCnNpbWlsYXJpdHkgaW5kZXggNTElCnJlbmFt ZSBmcm9tIHBhdGNoZXMvdmFsZ3JpbmQtMy4xMS4wL3NlcmllcwpyZW5hbWUgdG8gcGF0Y2hlcy92 YWxncmluZC0zLjEyLjAvc2VyaWVzCmluZGV4IGU5ODNlNWEuLmNlMjJmY2EgMTAwNjQ0Ci0tLSBh L3BhdGNoZXMvdmFsZ3JpbmQtMy4xMS4wL3NlcmllcworKysgYi9wYXRjaGVzL3ZhbGdyaW5kLTMu MTIuMC9zZXJpZXMKQEAgLTIsNiArMiw0IEBACiAjdGFnOmJhc2UgLS1zdGFydC1udW1iZXIgMQog MDAwMS1jb25maWd1cmUuYWMtYWxsb3ctYWxsLWFybS1kb24tdC1yZXN0cmljdC10by1hcm12Ny5w YXRjaAogMDAwMi1tYWtlLWtlcm5lbC12ZXJzaW9uLWEtYXV0b2NvbmYtY2FjaGUtdmFyaWFibGUu cGF0Y2gKLTAwMDMtQnVnLTM1NzgzMy1TZXR0aW5nLVJMSU1JVF9EQVRBLXRvLXplcm8tYnJlYWtz LXdpdGgtbC5wYXRjaAotMDAwNC1hZGQtY29tcHJlc3NlZC1kZWJ1Z2luZm8tc3VwcG9ydC5wYXRj aAotIyA5ZjY1ZjUxN2M0ZGYzMzIyNDI1OWEzYTE3YjNlZDA5NSAgLSBnaXQtcHR4LXBhdGNoZXMg bWFnaWMKKyMgNzQwYWQ1ZmNlNDFiNTg4NjRjYjdjMThiZmVmZDM4NWEgIC0gZ2l0LXB0eC1wYXRj aGVzIG1hZ2ljCmRpZmYgLS1naXQgYS9ydWxlcy92YWxncmluZC5tYWtlIGIvcnVsZXMvdmFsZ3Jp bmQubWFrZQppbmRleCA5Y2UxOTMzLi5jNzVjOTU5IDEwMDY0NAotLS0gYS9ydWxlcy92YWxncmlu ZC5tYWtlCisrKyBiL3J1bGVzL3ZhbGdyaW5kLm1ha2UKQEAgLTE5LDggKzE5LDggQEAgUEFDS0FH RVMtJChQVFhDT05GX0FSQ0hfQVJNKS0kKFBUWENPTkZfVkFMR1JJTkQpICs9IHZhbGdyaW5kCiAj CiAjIFBhdGhzIGFuZCBuYW1lcwogIwotVkFMR1JJTkRfVkVSU0lPTgk6PSAzLjExLjAKLVZBTEdS SU5EX01ENQkJOj0gNGVhNjIwNzRkYTczYWU4MmUwMTYyZDY1NTBkM2YxMjkKK1ZBTEdSSU5EX1ZF UlNJT04JOj0gMy4xMi4wCitWQUxHUklORF9NRDUJCTo9IDZlYjAzYzBjMTBlYTkxNzAxM2E3NjIy ZTQ4M2Q2MWJiCiBWQUxHUklORAkJOj0gdmFsZ3JpbmQtJChWQUxHUklORF9WRVJTSU9OKQogVkFM R1JJTkRfU1VGRklYCQk6PSB0YXIuYnoyCiBWQUxHUklORF9VUkwJCTo9IGh0dHA6Ly92YWxncmlu ZC5vcmcvZG93bmxvYWRzLyQoVkFMR1JJTkQpLiQoVkFMR1JJTkRfU1VGRklYKQotLSAKMi45LjMK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwdHhkaXN0 IG1haWxpbmcgbGlzdApwdHhkaXN0QHBlbmd1dHJvbml4LmRl