From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from moutng.kundenserver.de ([212.227.126.187]) by metis.ext.pengutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1WVLtb-000487-Iq for ptxdist@pengutronix.de; Wed, 02 Apr 2014 16:12:13 +0200 From: Alexander Dahl Date: Wed, 2 Apr 2014 16:10:58 +0200 Message-Id: <1396447859-23430-1-git-send-email-post@lespocky.de> In-Reply-To: <20140324084153.GA10959@pengutronix.de> References: <20140324084153.GA10959@pengutronix.de> MIME-Version: 1.0 Subject: [ptxdist] [PATCH] libcgi: add some patches with fixes, partly queued upstream Reply-To: ptxdist@pengutronix.de List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: ptxdist-bounces@pengutronix.de Errors-To: ptxdist-bounces@pengutronix.de To: ptxdist@pengutronix.de VXBzdHJlYW0gbWlncmF0ZWQgdGhlIG9sZCBjb2RlIGJhc2UgdG8gZ2l0aHViIGluIDIwMTE6Cmh0 dHBzOi8vZ2l0aHViLmNvbS9yYWZhZWxzdGVpbC9saWJjZ2kg4oCTIEkgZ290IHRoZSBvbGQgcHR4 ZGlzdCBwYXRjaGVzCm1lcmdlZCBpbiAyMDEyIGFuZCB0d28gZml4ZXMgZm9yIG1lbSBsZWFrZXMg YXMgd2VsbC4gTWVhbndoaWxlIEkgbWFkZQpwdWxsIHJlcXVlc3RzIGZvciBNaWNoYWVsJ3MgcGF0 Y2ggZnJvbSBsYXN0IHllYXIgYW5kIGFub3RoZXIgZml4IG9mCm1pbmUuIEhvd2V2ZXIgSSBkb3Vi dCB0aGUgbWFpbnRhaW5lciB3aWxsIGRvIGFub3RoZXIgcmVsZWFzZSBzb29uIG9yCmV2ZW4gYXQg YWxsLCBzbyBJIGFkZCBteSBwYXRjaGVzIGhlcmUsIHRvby4gSSdtIHNvcnJ5LCBJIHNxdWVlemVk IHRoZQpwdHhkaXN0IHBhdGNoZXMgaW50byBvbmUgdXBzdHJlYW0sIHNvIFJvYmVydCBsb3N0IGhp cyBjcmVkaXQgdGhlcmUsIGJ1dAp0aGlzIGlzIG5vdCB0b3BpYyBvZiB0aGlzIHNlcmllcyBkaXNj dXNzaW9uLiA7LSkKClBhdGNoIHNlcmllcyBpcyByZW9yZ2FuaXplZCB3aXRoIHB0eCBtYWdpYyBh Y2NvcmRpbmcgdG8gTWljaGFlbCdzCnN1Z2dlc3Rpb25zLgoKU2lnbmVkLW9mZi1ieTogQWxleGFu ZGVyIERhaGwgPHBvc3RAbGVzcG9ja3kuZGU+Ci0tLQogLi4uYXRjaGVzLWZyb20tcHR4ZGlzdC05 LXBhdGNoZXMtaW4tMS1jb21taXQucGF0Y2ggfCAgMTQ0ICsrKwogLi4uLzAwMDEtaW5zdGFsbC1p bnRvLXNlcGFyYXRlLWRpcmVjdG9yeS5wYXRjaCAgICAgfCAgIDI0IC0KIC4uLjAwMi1jbGVhbnVw LWNvbXBpbGVyLWZsYWdzLWZvci1zaGFyZWQtbGliLnBhdGNoIHwgICA1NyAtCiAuLi5saW5nLXdo aXRlc3BhY2UtbXktZWRpdG9yLXdvdWxkLWRvLXRoaXMtYS5wYXRjaCB8IDEzMzQgKysrKysrKysr KysrKysrKysrKysKIHBhdGNoZXMvbGliY2dpLTEuMC8wMDAzLWRlc3RkaXItc3VwcG9ydC5wYXRj aCAgICAgIHwgICA1NyAtCiAuLi4tYWxsb2NhdGVkLWJ5LXVuZXNjYXBlX3NwZWNpYWxfY2hhcnMt YWZ0ZS5wYXRjaCB8ICAgNjQgKwogcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDQtY2xlYW51cC1idWls ZC1saW5lLnBhdGNoICAgfCAgIDI1IC0KIC4uLi1hbGxvY2F0ZWQtZm9yLXJlYWRpbmctYW5kLXBh cnNpbmctUE9TVC1kLnBhdGNoIHwgICAzMiArCiAuLi4vMDAwNS1GSUxFLXJlcXVpcmVzLWluY2x1 ZGluZy1zdGRpby5wYXRjaCAgICAgICB8ICAgMjEgKwogcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDUt Y2xlYW51cC1jbGVhbi10YXJnZXQucGF0Y2ggfCAgIDI2IC0KIC4uLi8wMDA2LWNvcHktcGFzdC1l cnJvci1pbi1oZXh0YWJsZS5wYXRjaCAgICAgICAgIHwgICAyNCAtCiBwYXRjaGVzL2xpYmNnaS0x LjAvMDAwNy13cm9uZy12YXJpYWJsZS5wYXRjaCAgICAgICB8ICAgMjQgLQogLi4uLzAwMDgtdXNl LWluc3RhbGwtaW5zdGVhZC1vZi1jcC5wYXRjaCAgICAgICAgICAgfCAgIDUxIC0KIC4uLi8wMDA5 LXVzZS1zdGFuZGFyZC1kaXJlY3RvcnktbmFtZXMucGF0Y2ggICAgICAgIHwgICA3OSAtLQogcGF0 Y2hlcy9saWJjZ2ktMS4wLzAyMDAtZml4LXR5cG8ucGF0Y2ggICAgICAgICAgICAgfCAgIDIxICsK IC4uLmtlLXRoZS1saWJyYXJ5LWZpbGVuYW1lLW1hdGNoLWl0cy1zb25hbWUucGF0Y2h9IHwgICAg MSArCiAuLi5wZS1ieS1vcHRpbWl6aW5nLWhleHRhYmxlLWluaXQtYW5kLWFjY2Vzcy5wYXRjaCB8 ICAgOTMgKysKIHBhdGNoZXMvbGliY2dpLTEuMC9zZXJpZXMgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAyMiArLQogMTggZmlsZXMgY2hhbmdlZCwgMTcyMSBpbnNlcnRpb25zKCspLCAzNzgg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDEt YXBwbHktcGF0Y2hlcy1mcm9tLXB0eGRpc3QtOS1wYXRjaGVzLWluLTEtY29tbWl0LnBhdGNoCiBk ZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDEtaW5zdGFsbC1pbnRvLXNl cGFyYXRlLWRpcmVjdG9yeS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvbGliY2dp LTEuMC8wMDAyLWNsZWFudXAtY29tcGlsZXItZmxhZ3MtZm9yLXNoYXJlZC1saWIucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL2xpYmNnaS0xLjAvMDAwMi1yZW1vdmUtdHJhaWxpbmct d2hpdGVzcGFjZS1teS1lZGl0b3Itd291bGQtZG8tdGhpcy1hLnBhdGNoCiBkZWxldGUgbW9kZSAx MDA2NDQgcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDMtZGVzdGRpci1zdXBwb3J0LnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDMtZnJlZS1tZW1vcnktYWxsb2Nh dGVkLWJ5LXVuZXNjYXBlX3NwZWNpYWxfY2hhcnMtYWZ0ZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAw NjQ0IHBhdGNoZXMvbGliY2dpLTEuMC8wMDA0LWNsZWFudXAtYnVpbGQtbGluZS5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvbGliY2dpLTEuMC8wMDA0LWZyZWUtbWVtb3J5LWFsbG9j YXRlZC1mb3ItcmVhZGluZy1hbmQtcGFyc2luZy1QT1NULWQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEw MDY0NCBwYXRjaGVzL2xpYmNnaS0xLjAvMDAwNS1GSUxFLXJlcXVpcmVzLWluY2x1ZGluZy1zdGRp by5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvbGliY2dpLTEuMC8wMDA1LWNsZWFu dXAtY2xlYW4tdGFyZ2V0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9saWJjZ2kt MS4wLzAwMDYtY29weS1wYXN0LWVycm9yLWluLWhleHRhYmxlLnBhdGNoCiBkZWxldGUgbW9kZSAx MDA2NDQgcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDctd3JvbmctdmFyaWFibGUucGF0Y2gKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL2xpYmNnaS0xLjAvMDAwOC11c2UtaW5zdGFsbC1pbnN0ZWFk LW9mLWNwLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDkt dXNlLXN0YW5kYXJkLWRpcmVjdG9yeS1uYW1lcy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHBh dGNoZXMvbGliY2dpLTEuMC8wMjAwLWZpeC10eXBvLnBhdGNoCiByZW5hbWUgcGF0Y2hlcy9saWJj Z2ktMS4wL3swMDEwLW1ha2UtdGhlLWxpYnJhcnktZmlsZW5hbWUtbWF0Y2gtaXRzLXNvbmFtZS5w YXRjaCA9PiAwMjAxLW1ha2UtdGhlLWxpYnJhcnktZmlsZW5hbWUtbWF0Y2gtaXRzLXNvbmFtZS5w YXRjaH0gKDk2JSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL2xpYmNnaS0xLjAvMDIwMi1m aXgtdW5lc2NhcGUtYnktb3B0aW1pemluZy1oZXh0YWJsZS1pbml0LWFuZC1hY2Nlc3MucGF0Y2gK CmRpZmYgLS1naXQgYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwMS1hcHBseS1wYXRjaGVzLWZyb20t cHR4ZGlzdC05LXBhdGNoZXMtaW4tMS1jb21taXQucGF0Y2ggYi9wYXRjaGVzL2xpYmNnaS0xLjAv MDAwMS1hcHBseS1wYXRjaGVzLWZyb20tcHR4ZGlzdC05LXBhdGNoZXMtaW4tMS1jb21taXQucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMxMWZhYgotLS0gL2Rldi9u dWxsCisrKyBiL3BhdGNoZXMvbGliY2dpLTEuMC8wMDAxLWFwcGx5LXBhdGNoZXMtZnJvbS1wdHhk aXN0LTktcGF0Y2hlcy1pbi0xLWNvbW1pdC5wYXRjaApAQCAtMCwwICsxLDE0NCBAQAorRnJvbTog QWxleGFuZGVyIERhaGwgPHBvc3RAbGVzcG9ja3kuZGU+CitEYXRlOiBXZWQsIDUgU2VwIDIwMTIg MTE6MDg6MTQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXBwbHkgcGF0Y2hlcyBmcm9tIHB0eGRp c3QgKDkgcGF0Y2hlcyBpbiAxIGNvbW1pdCkKKworLS0tCisgTWFrZWZpbGUuaW4gIHwgICA2NCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cisgc3JjL2NnaS5jICAgIHwgICAgMiArLQorIHNyYy9zdHJpbmcuYyB8ICAgIDIgKy0KKyAzIGZp bGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQorCitkaWZmIC0t Z2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggNjA1NmMwYy4uMjFlNGNlOSAx MDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTEsMjYgKzEs MzIgQEAKKy1JTlNUQUxMID0gQElOU1RBTExACistSU5TVEFMTF9QUk9HUkFNID0gQElOU1RBTExf UFJPR1JBTUAKKy1JTlNUQUxMX0RBVEEgPSBASU5TVEFMTF9EQVRBQAorK0lOU1RBTEwgPSBASU5T VEFMTEAgLUQKKytJTlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9QUk9HUkFNQCAtRAorK0lOU1RB TExfREFUQSA9IEBJTlNUQUxMX0RBVEFAIC1ECisgCisgcHJlZml4ID0gQHByZWZpeEAKKyBleGVj X3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKKyAKKy1TSEFSRURPUFQgPSAtc2hhcmVkCistTElCRElS ID0gJChwcmVmaXgpL2xpYgorLUlOQ0RJUiA9ICQocHJlZml4KS9pbmNsdWRlCistTUFORElSCT0g JChwcmVmaXgpL21hbi9tYW4zCisrU0hBUkVET1BUID0gLXNoYXJlZCAtc2hhcmVkIC1mUElDLC1X bCwtc29uYW1lLGxpYmNnaS5zby4wCisrbGliZGlyID0gJChwcmVmaXgpL2xpYgorK2luY2RpciA9 ICQocHJlZml4KS9pbmNsdWRlL2xpYmNnaQorK21hbmRpcgk9ICQocHJlZml4KS9tYW4vbWFuMwor IFNIRUxMID0gL2Jpbi9zaAorIEVYVFJBX0xJQlMgPSAKKyAKKyBJTkNTID0gIC1Jc3JjCistRkxB R1MgPSAtV2FsbCAtZnBpYworK0ZMQUdTID0gLVdhbGwgLURfUkVFTlRSQU5UCisgCisgT0JKUyA9 IHNyYy9lcnJvci5vIHNyYy9jZ2kubyBzcmMvc2Vzc2lvbi5vIHNyYy9iYXNlNjQubyBzcmMvbWQ1 Lm8gXAorIAlzcmMvc3RyaW5nLm8gc3JjL2dlbmVyYWwubyBzcmMvbGlzdC5vIHNyYy9jb29raWUu bworIAorLS5jLm86ICQoQ0MpICQoRkxBR1MpIC1jICQ8CisrU0hPQkpTID0gJChPQkpTOi5vPS5z aC5vKQorIAorLWFsbDogJChPQkpTKSBzcmMvbGliY2dpLnNvCisrJS5vOiAlLmMKKysJJChDQykg JChGTEFHUykgLWMgJCouYyAtbyAkQAorKworKyUuc2gubzogJS5jCisrCSQoQ0MpICQoRkxBR1Mp IC1mUElDIC1jICQqLmMgLW8gJEAKKysKKythbGw6IHNyYy9saWJjZ2kuc28gc3JjL2xpYmNnaS5h CisgCisgCUBlY2hvICIiCisgCUBlY2hvICIiCitAQCAtNDMsMjAgKzQ5LDE5IEBAIGFsbDogJChP QkpTKSBzcmMvbGliY2dpLnNvCisgCisgCisgc2hhcmVkOiBzcmMvbGliY2dpLnNvCistCWNwIHNy Yy9saWJjZ2kuc28gJChMSUJESVIpCisrCSQoSU5TVEFMTCkgLW0gMDY0NCBzcmMvbGliY2dpLnNv ICQoREVTVERJUikkKGxpYmRpcikKKyAKKyBzcmMvbGliY2dpLmE6ICQoT0JKUykKKyAJJChBUikg cmMgc3JjL2xpYmNnaS5hICQoT0JKUykKKyAKKy1zcmMvbGliY2dpLnNvOiBzcmMvbGliY2dpLmEK Ky0JJChDQykgJChTSEFSRURPUFQpIC1vIHNyYy9saWJjZ2kuc28gJChPQkpTKSAkKEVYVFJBX0xJ QlMpCisrc3JjL2xpYmNnaS5zbzogJChTSE9CSlMpCisrCSQoQ0MpICQoU0hBUkVET1BUKSAtbyBz cmMvbGliY2dpLnNvICQoU0hPQkpTKSAkKEVYVFJBX0xJQlMpCisgCisgaW5zdGFsbDoKKy0JY3Ag c3JjL2xpYmNnaS5hICQoTElCRElSKQorLQljcCBzcmMvbGliY2dpLnNvICQoTElCRElSKQorLQlj cCBzcmMvY2dpLmggJChJTkNESVIpCistCWNwIHNyYy9zZXNzaW9uLmggJChJTkNESVIpCistCisr CSQoSU5TVEFMTCkgLW0gMDY0NCBzcmMvbGliY2dpLmEgJChERVNURElSKS8kKGxpYmRpcikvbGli Y2dpLmEKKysJJChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9saWJjZ2kuc28gJChERVNURElSKS8kKGxp YmRpcikvbGliY2dpLnNvCisrCSQoSU5TVEFMTCkgLW0gMDY0NCBzcmMvY2dpLmggJChERVNURElS KS8kKGluY2RpcikvY2dpLmgKKysJJChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9zZXNzaW9uLmggJChE RVNURElSKS8kKGluY2Rpcikvc2Vzc2lvbi5oCisgCisgc3JjL2Vycm9yLm86IHNyYy9lcnJvci5j IHNyYy9lcnJvci5oCisgc3JjL2NnaS5vOiBzcmMvY2dpLmMgc3JjL2NnaS5oCitAQCAtNjksMjAg Kzc0LDIxIEBAIHNyYy9nZW5lcmFsLm86IHNyYy9nZW5lcmFsLmMKKyBzcmMvbGlzdC5vOiBzcmMv bGlzdC5jCisgCisgY2xlYW46CistCWZpbmQgc3JjLyAtbmFtZSAqLipvIC1leGVjIHJtIC1mIHt9 IFw7CisrCWZpbmQgc3JjLyAtbmFtZSAqLm8gLWV4ZWMgcm0gLWYge30gXDsKKyAJZmluZCBzcmMv IC1uYW1lICouYSAtZXhlYyBybSAtZiB7fSBcOworKwlmaW5kIHNyYy8gLW5hbWUgKi5zbyAtZXhl YyBybSAtZiB7fSBcOworIAorIHVuaW5zdGFsbDogY2xlYW4KKy0Jcm0gLWYgJChMSUJESVIpL2xp YmNnaS4qCistCXJtIC1mICQoSU5DRElSKS9jZ2kuaAorLQlybSAtZiAkKElOQ0RJUikvc2Vzc2lv bi5oCistCXJtIC1mICQoTUFORElSKS9saWJjZ2kqCisrCXJtIC1mICQobGliZGlyKS9saWJjZ2ku KgorKwlybSAtZiAkKGluY2RpcikvY2dpLmgKKysJcm0gLWYgJChpbmNkaXIpL3Nlc3Npb24uaAor KwlybSAtZiAkKG1hbmRpcikvbGliY2dpKgorIAorIGluc3RhbGxfbWFuOgorLQljcCBkb2MvbWFu L21hbjMvbGliY2dpX2Jhc2U2NC4zICQoTUFORElSKQorLQljcCBkb2MvbWFuL21hbjMvbGliY2dp X2NnaS4zICQoTUFORElSKQorLQljcCBkb2MvbWFuL21hbjMvbGliY2dpX2dlbmVyYWwuMyAkKE1B TkRJUikKKy0JY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9zdHJpbmcuMyAkKE1BTkRJUikKKy0JY3Ag ZG9jL21hbi9tYW4zL2xpYmNnaV9zZXNzaW9uLjMgJChNQU5ESVIpCistCWNwIGRvYy9tYW4vbWFu My9saWJjZ2lfY29va2llLjMgJChNQU5ESVIpCisrCWNwIGRvYy9tYW4vbWFuMy9saWJjZ2lfYmFz ZTY0LjMgJChERVNURElSKSQobWFuZGlyKQorKwljcCBkb2MvbWFuL21hbjMvbGliY2dpX2NnaS4z ICQoREVTVERJUikkKG1hbmRpcikKKysJY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9nZW5lcmFsLjMg JChERVNURElSKSQobWFuZGlyKQorKwljcCBkb2MvbWFuL21hbjMvbGliY2dpX3N0cmluZy4zICQo REVTVERJUikkKG1hbmRpcikKKysJY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9zZXNzaW9uLjMgJChE RVNURElSKSQobWFuZGlyKQorKwljcCBkb2MvbWFuL21hbjMvbGliY2dpX2Nvb2tpZS4zICQoREVT VERJUikkKG1hbmRpcikKKyAKK2RpZmYgLS1naXQgYS9zcmMvY2dpLmMgYi9zcmMvY2dpLmMKK2lu ZGV4IGZiMzc0NDUuLmVjYTlhYzIgMTAwNjQ0CistLS0gYS9zcmMvY2dpLmMKKysrKyBiL3NyYy9j Z2kuYworQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIGluaXRfaGV4X3RhYmxlKCkKKyAJaGV4dGFi bGVbJ2InXSA9IDExOworIAloZXh0YWJsZVsnYyddID0gMTI7CisgCWhleHRhYmxlWydkJ10gPSAx MzsKKy0JaGV4dGFibGVbJ2UnXSA9IDEzOworKwloZXh0YWJsZVsnZSddID0gMTQ7CisgCWhleHRh YmxlWydmJ10gPSAxNTsKKyAJaGV4dGFibGVbJ0EnXSA9IDEwOworIAloZXh0YWJsZVsnQiddID0g MTE7CitkaWZmIC0tZ2l0IGEvc3JjL3N0cmluZy5jIGIvc3JjL3N0cmluZy5jCitpbmRleCAyY2Zj YmUyLi4zZGM0MzdmIDEwMDY0NAorLS0tIGEvc3JjL3N0cmluZy5jCisrKysgYi9zcmMvc3RyaW5n LmMKK0BAIC01ODQsNyArNTg0LDcgQEAgY2hhciAqbWFrZV9zdHJpbmcoY2hhciAqcywgLi4uKQor IAorIAl2YV9zdGFydChwdHIsIHMpOworIAorLQl2YV9jb3B5KGJrcCwgc3RyKTsKKysJdmFfY29w eShia3AsIHB0cik7CisgCWxlbiA9IHN0cmxlbihzKTsKKyAKKyAJd2hpbGUgKCpzdHIpIHsKZGlm ZiAtLWdpdCBhL3BhdGNoZXMvbGliY2dpLTEuMC8wMDAxLWluc3RhbGwtaW50by1zZXBhcmF0ZS1k aXJlY3RvcnkucGF0Y2ggYi9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwMS1pbnN0YWxsLWludG8tc2Vw YXJhdGUtZGlyZWN0b3J5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmRl YTM0Li4wMDAwMDAwCi0tLSBhL3BhdGNoZXMvbGliY2dpLTEuMC8wMDAxLWluc3RhbGwtaW50by1z ZXBhcmF0ZS1kaXJlY3RvcnkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1G cm9tOiBSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOiBG cmksIDI2IE9jdCAyMDEyIDIxOjQ2OjIxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluc3RhbGwg aW50byBzZXBhcmF0ZSBkaXJlY3RvcnkKLQotVXN1YWxseSwgbGliY2dpIGhlYWRlciBmaWxlcyBh cmUgaW5zdGFsbGVkIGludG8gL3Vzci9pbmNsdWRlL2xpYmNnaS8uCi0KLVNpZ25lZC1vZmYtYnk6 IFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJlbEBwZW5ndXRyb25peC5kZT4KLS0tLQotIE1ha2Vm aWxlLmluIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXgg NjA1NmMwYy4uNzU5MWI0OCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmls ZS5pbgotQEAgLTcsNyArNyw3IEBAIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotIAotIFNI QVJFRE9QVCA9IC1zaGFyZWQKLSBMSUJESVIgPSAkKHByZWZpeCkvbGliCi0tSU5DRElSID0gJChw cmVmaXgpL2luY2x1ZGUKLStJTkNESVIgPSAkKHByZWZpeCkvaW5jbHVkZS9saWJjZ2kKLSBNQU5E SVIJPSAkKHByZWZpeCkvbWFuL21hbjMKLSBTSEVMTCA9IC9iaW4vc2gKLSBFWFRSQV9MSUJTID0g CmRpZmYgLS1naXQgYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwMi1jbGVhbnVwLWNvbXBpbGVyLWZs YWdzLWZvci1zaGFyZWQtbGliLnBhdGNoIGIvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDItY2xlYW51 cC1jb21waWxlci1mbGFncy1mb3Itc2hhcmVkLWxpYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggNjE2NzBjZS4uMDAwMDAwMAotLS0gYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAw Mi1jbGVhbnVwLWNvbXBpbGVyLWZsYWdzLWZvci1zaGFyZWQtbGliLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbTogUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBl bmd1dHJvbml4LmRlPgotRGF0ZTogRnJpLCAyNiBPY3QgMjAxMiAyMTo0NjoyMSArMDIwMAotU3Vi amVjdDogW1BBVENIXSBjbGVhbnVwIGNvbXBpbGVyIGZsYWdzIGZvciBzaGFyZWQgbGliCi0KLVNl cGFyYXRlIGJ1aWxkaW5nIG9mIHNoYXJlZCBhbmQgbm9uLXNoYXJlZCBvYmplY3RzLgotCi1TaWdu ZWQtb2ZmLWJ5OiBSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+Ci0t LS0KLSBNYWtlZmlsZS5pbiB8ICAgMTUgKysrKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQs IDEwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmls ZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCA3NTkxYjQ4Li5lMzhlNzc2IDEwMDY0NAotLS0tIGEv TWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNSw3ICs1LDcgQEAgSU5TVEFMTF9E QVRBID0gQElOU1RBTExfREFUQUAKLSBwcmVmaXggPSBAcHJlZml4QAotIGV4ZWNfcHJlZml4ID0g QGV4ZWNfcHJlZml4QAotIAotLVNIQVJFRE9QVCA9IC1zaGFyZWQKLStTSEFSRURPUFQgPSAtc2hh cmVkIC1zaGFyZWQgLWZQSUMgLVdsLC1zb25hbWUsbGliY2dpLnNvLjAKLSBMSUJESVIgPSAkKHBy ZWZpeCkvbGliCi0gSU5DRElSID0gJChwcmVmaXgpL2luY2x1ZGUvbGliY2dpCi0gTUFORElSCT0g JChwcmVmaXgpL21hbi9tYW4zCi1AQCAtMTMsMTQgKzEzLDE5IEBAIFNIRUxMID0gL2Jpbi9zaAot IEVYVFJBX0xJQlMgPSAKLSAKLSBJTkNTID0gIC1Jc3JjCi0tRkxBR1MgPSAtV2FsbCAtZnBpYwot K0ZMQUdTID0gLVdhbGwgLURfUkVFTlRSQU5UCi0gCi0gT0JKUyA9IHNyYy9lcnJvci5vIHNyYy9j Z2kubyBzcmMvc2Vzc2lvbi5vIHNyYy9iYXNlNjQubyBzcmMvbWQ1Lm8gXAotIAlzcmMvc3RyaW5n Lm8gc3JjL2dlbmVyYWwubyBzcmMvbGlzdC5vIHNyYy9jb29raWUubwotIAotK1NIT0JKUyA9ICQo T0JKUzoubz0uc2gubykKLSsKLSAuYy5vOiAkKENDKSAkKEZMQUdTKSAtYyAkPAotIAotLWFsbDog JChPQkpTKSBzcmMvbGliY2dpLnNvCi0rJS5zaC5vOiAlLmMKLSsJJChDQykgJChGTEFHUykgLWZQ SUMgLWMgJCouYyAtbyAkQAotKwotK2FsbDogc3JjL2xpYmNnaS5zbyBzcmMvbGliY2dpLmEKLSAK LSAJQGVjaG8gIiIKLSAJQGVjaG8gIiIKLUBAIC00OCw4ICs1Myw4IEBAIHNoYXJlZDogc3JjL2xp YmNnaS5zbwotIHNyYy9saWJjZ2kuYTogJChPQkpTKQotIAkkKEFSKSByYyBzcmMvbGliY2dpLmEg JChPQkpTKQotIAotLXNyYy9saWJjZ2kuc286IHNyYy9saWJjZ2kuYQotLQkkKENDKSAkKFNIQVJF RE9QVCkgLW8gc3JjL2xpYmNnaS5zbyAkKE9CSlMpICQoRVhUUkFfTElCUykKLStzcmMvbGliY2dp LnNvOiAkKFNIT0JKUykKLSsJJChDQykgJChTSEFSRURPUFQpIC1vIHNyYy9saWJjZ2kuc28gJChT SE9CSlMpICQoRVhUUkFfTElCUykKLSAKLSBpbnN0YWxsOgotIAljcCBzcmMvbGliY2dpLmEgJChM SUJESVIpCmRpZmYgLS1naXQgYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwMi1yZW1vdmUtdHJhaWxp bmctd2hpdGVzcGFjZS1teS1lZGl0b3Itd291bGQtZG8tdGhpcy1hLnBhdGNoIGIvcGF0Y2hlcy9s aWJjZ2ktMS4wLzAwMDItcmVtb3ZlLXRyYWlsaW5nLXdoaXRlc3BhY2UtbXktZWRpdG9yLXdvdWxk LWRvLXRoaXMtYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjAz ODNjCi0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDItcmVtb3ZlLXRy YWlsaW5nLXdoaXRlc3BhY2UtbXktZWRpdG9yLXdvdWxkLWRvLXRoaXMtYS5wYXRjaApAQCAtMCww ICsxLDEzMzQgQEAKK0Zyb206IEFsZXhhbmRlciBEYWhsIDxwb3N0QGxlc3BvY2t5LmRlPgorRGF0 ZTogV2VkLCAyNCBPY3QgMjAxMiAxMToyMDoyNCArMDIwMAorU3ViamVjdDogW1BBVENIXSByZW1v dmUgdHJhaWxpbmcgd2hpdGVzcGFjZSAobXkgZWRpdG9yIHdvdWxkIGRvIHRoaXMgYWxsIHRoZQor IHRpbWUpCisKKy0tLQorIHNyYy9iYXNlNjQuYyAgfCAgIDYwICsrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tCisgc3JjL2NnaS5jICAgICB8ICAgNjIgKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tCisgc3JjL2NnaS5oICAgICB8ICAgIDggKystLQorIHNyYy9jb29raWUuYyAgfCAgIDIw ICsrKysrLS0tLS0KKyBzcmMvZXJyb3IuYyAgIHwgICAgMiArLQorIHNyYy9nZW5lcmFsLmMgfCAg IDUwICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIHNyYy9saXN0LmMgICAgfCAgIDI0ICsrKysr Ky0tLS0tLQorIHNyYy9tZDUuYyAgICAgfCAgICA2ICstLQorIHNyYy9zZXNzaW9uLmMgfCAgMTE4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHNyYy9zdHJpbmcuYyAgfCAgIDc0ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLQorIDEwIGZpbGVzIGNoYW5nZWQsIDIxMiBpbnNlcnRpb25zKCspLCAyMTIgZGVsZXRpb25z KC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzZTY0LmMgYi9zcmMvYmFzZTY0LmMKK2luZGV4IGE2 ZTVkNWEuLjkyMzFmODQgMTAwNjQ0CistLS0gYS9zcmMvYmFzZTY0LmMKKysrKyBiL3NyYy9iYXNl NjQuYworQEAgLTEsNiArMSw2IEBACisgLyoKKyAJTGliQ0dJIGJhc2U2NCBtYW5pcHVsYXRpb24g ZnVuY3Rpb25zIGlzIGV4dHJlbWx5IGJhc2VkIG9uIHRoZSB3b3JrIG9mIEJvYiBUb3dlciwKKy0J ZnJvbSBpdHMgcHJvamVjIGh0dHA6Ly9iYXNlNjQuc291cmNlZm9yZ2UubmV0LiBUaGUgZnVuY3Rp b25zIHdlcmUgYSBiaXQgbW9kaWNhdGVkLiAKKysJZnJvbSBpdHMgcHJvamVjIGh0dHA6Ly9iYXNl NjQuc291cmNlZm9yZ2UubmV0LiBUaGUgZnVuY3Rpb25zIHdlcmUgYSBiaXQgbW9kaWNhdGVkLgor IAlBYm92ZSBpcyB0aGUgTUlUIGxpY2Vuc2UgZnJvbSBiNjQuYyBvcmlnaW5hbCBjb2RlOgorIAor IExJQ0VOQ0U6ICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDEgQm9iIFRyb3dlciwgVHJhbnRvciBT dGFuZGFyZCBTeXN0ZW1zIEluYy4KK0BAIC00NiwxOSArNDYsMTkgQEAgdm9pZCBlbmNvZGVibG9j ayggdW5zaWduZWQgY2hhciBpblszXSwgdW5zaWduZWQgY2hhciBvdXRbNF0sIGludCBsZW4gKQor IH0KKyAKKyB2b2lkIGRlY29kZWJsb2NrKCB1bnNpZ25lZCBjaGFyIGluWzRdLCB1bnNpZ25lZCBj aGFyIG91dFszXSApCisteyAgIAorK3sKKyAJb3V0WzBdID0gKHVuc2lnbmVkIGNoYXIgKSAoaW5b MF0gPDwgMiB8IGluWzFdID4+IDQpOworIAlvdXRbMV0gPSAodW5zaWduZWQgY2hhciApIChpblsx XSA8PCA0IHwgaW5bMl0gPj4gMik7CisgCW91dFsyXSA9ICh1bnNpZ25lZCBjaGFyICkgKCgoaW5b Ml0gPDwgNikgJiAweGMwKSB8IGluWzNdKTsKKyB9CisgCistLyoqIAorKy8qKgorICogQGluZ3Jv dXAgbGliY2dpX3N0cmluZworICovCisgCisgLyoqCisgKiBFbmNvZGVzIGEgZ2l2ZW4gdHJpbmcg dG8gaXRzIGJhc2U2NCBmb3JtLgorLSogCisrKgorICogQHBhcmFtICpzdHIgU3RyaW5nIHRvIGNv bnZlcnQKKyAqIEByZXR1cm4gQmFzZTY0IGVuY29kZWQgU3RyaW5nCisgKiBAc2VlIHN0cl9iYXNl NjRfZGVjb2RlCitAQCAtNjksODQgKzY5LDg0IEBAIGNoYXIgKnN0cl9iYXNlNjRfZW5jb2RlKGNo YXIgKnN0cikKKyAJdW5zaWduZWQgaW50IGksIGxlbiwgYmxvY2tzb3V0ID0gMCwgbGluZXNpemUg PSBzdHJsZW4oc3RyKTsKKyAJY2hhciAqdG1wID0gc3RyOworIAljaGFyICpyZXN1bHQgPSAoY2hh ciAqKW1hbGxvYygobGluZXNpemUgKyAzIC0gbGluZXNpemUgJSAzKSAqIDQgLyAzICsgMSk7Cist CQorKworIAlpZiAoIXJlc3VsdCkKKyAJCWxpYmNnaV9lcnJvcihFX01FTU9SWSwgIkZhaWxlZCB0 byBhbGxvYyBtZW1vcnkgYXQgYmFzZTY0LmMiKTsKKy0JCQorKworIAl3aGlsZSAoKnRtcCkgewor IAkJbGVuID0gMDsKKyAKKyAJCWZvciggaSA9IDA7IGkgPCAzOyBpKysgKSB7CisgCQkJaW5baV0g PSAodW5zaWduZWQgY2hhcikoKnRtcCk7CistCQkJCisrCisgCQkJaWYgKCp0bXApCisgCQkJCWxl bisrOworIAkJCWVsc2UKKyAJCQkJaW5baV0gPSAwOworLQkJCQorKworIAkJCXRtcCsrOworIAkJ fQorLQkJCisrCisgCQlpZiggbGVuICkgeworIAkJCWVuY29kZWJsb2NrKCBpbiwgb3V0LCBsZW4p OworLQkJCistCQkJZm9yKCBpID0gMDsgaSA8IDQ7IGkrKyApIAorKworKwkJCWZvciggaSA9IDA7 IGkgPCA0OyBpKysgKQorIAkJCQlyZXN1bHRbYmxvY2tzb3V0KytdID0gb3V0W2ldOworLQkJfQkJ CisrCQl9CisgCX0KKy0JCisrCisgCXJlc3VsdFtibG9ja3NvdXRdID0gJ1wwJzsKKyAJcmV0dXJu IHJlc3VsdDsKKyB9CisgCistLyoqIAorKy8qKgorICogQGluZ3JvdXAgbGliY2dpX3N0cmluZwor ICovCisgCisgLyoqCisgKiBEZWNvZGUgYSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcuCistKiAKKysq CisgKiBAcGFyYW0gKnN0ciBFbmNvZGVkIFN0cmluZyB0byBkZWNvZGUKKyAqIEByZXR1cm4gVGhl IGRlY29kZWQgc3RyaW5nCisgKiBAc2VlIHN0cl9iYXNlNjRfZW5jb2RlCisgKiovCisgY2hhciAq c3RyX2Jhc2U2NF9kZWNvZGUoY2hhciAqc3RyKQorLXsJCisreworIAl1bnNpZ25lZCBjaGFyIGlu WzRdLCBvdXRbM10sIHY7CisgCXVuc2lnbmVkIGludCBpLCBsZW4sIHBvcyA9IDA7CisgCWNoYXIg KnRtcCA9IHN0cjsKKy0JCisrCisgCWNoYXIgKnJlc3VsdCA9IChjaGFyICopbWFsbG9jKHN0cmxl bihzdHIpICsgMSk7CisgCWlmICghcmVzdWx0KQorIAkJbGliY2dpX2Vycm9yKEVfTUVNT1JZLCAi RmFpbGVkIHRvIGFsbG9jIG1lbW9yeSBhdCBiYXNlNjQuYyIpOworLQkJCisrCisgCXdoaWxlKCp0 bXApIHsKKyAJCWZvciggbGVuID0gMCwgaSA9IDA7IGkgPCA0ICYmICp0bXA7IGkrKyApIHsKKyAJ CQl2ID0gMDsKKy0JCQkKKy0JCQl3aGlsZSgqdG1wICYmIHYgPT0gMCApIHsJCQkKKy0JCQkJdiA9 ICh1bnNpZ25lZCBjaGFyKSgqdG1wKTsJCQkJCistCQkJCXYgPSAodW5zaWduZWQgY2hhcikgKCh2 IDwgNDMgfHwgdiA+IDEyMikgPyAwIDogY2Q2NFsgdiAtIDQzIF0pOwkJCQkKKy0JCQkJCisrCisr CQkJd2hpbGUoKnRtcCAmJiB2ID09IDAgKSB7CisrCQkJCXYgPSAodW5zaWduZWQgY2hhcikoKnRt cCk7CisrCQkJCXYgPSAodW5zaWduZWQgY2hhcikgKCh2IDwgNDMgfHwgdiA+IDEyMikgPyAwIDog Y2Q2NFsgdiAtIDQzIF0pOworKworIAkJCQlpZiggdiApCisgCQkJCQl2ID0gKHVuc2lnbmVkIGNo YXIpICgodiA9PSAnJCcpID8gMCA6IHYgLSA2MSk7CistCQkJCQkKKysKKyAJCQkJdG1wKys7Cisg CQkJfQorLQkJCQorKworIAkJCWlmKCp0bXApIHsKKyAJCQkJbGVuKys7CistCQkJCQorLQkJCQlp ZiggdiApIAorKworKwkJCQlpZiggdiApCisgCQkJCQlpbltpXSA9ICh1bnNpZ25lZCBjaGFyKSAo diAtIDEpOworIAkJCX0KKy0JCQllbHNlIAorKwkJCWVsc2UKKyAJCQkJaW5baV0gPSAwOworIAkJ fQorLQkJCisrCisgCQlpZihsZW4pIHsKKyAJCQlkZWNvZGVibG9jayggaW4sIG91dCApOworLQkJ CQorKworIAkJCWZvciggaSA9IDA7IGkgPCBsZW4gLSAxOyBpKysgKQorIAkJCQlyZXN1bHRbcG9z KytdID0gb3V0W2ldOworIAkJfQorZGlmZiAtLWdpdCBhL3NyYy9jZ2kuYyBiL3NyYy9jZ2kuYwor aW5kZXggZWNhOWFjMi4uZTlkNzZhZSAxMDA2NDQKKy0tLSBhL3NyYy9jZ2kuYworKysrIGIvc3Jj L2NnaS5jCitAQCAtMjcsNyArMjcsNyBAQAorICNpbmNsdWRlICJjZ2kuaCIKKyAjaW5jbHVkZSAi ZXJyb3IuaCIKKyAKKy0vLyBXaG93Li4uIGlmIGhleHRhYmxlIGFycmF5IGhhcyBhIGxlbmd0aCBs ZXNzIHRoYW4gMjU2LCAKKysvLyBXaG93Li4uIGlmIGhleHRhYmxlIGFycmF5IGhhcyBhIGxlbmd0 aCBsZXNzIHRoYW4gMjU2LAorIC8vIHRoZSBjZ2lfdW5lc2NhcGVfc3BlY2lhbF9jaGFycyBmdW5j dGlvbiB3aWxsIGZhaWwuICBBbmQgSSBkb24ndCBrbm93IHdoeQorIHN0YXRpYyBpbnQgaGV4dGFi bGVbMjU2XTsKKyAKK0BAIC02MSwxMyArNjEsMTMgQEAgZm9ybXZhcnMgKnByb2Nlc3NfZGF0YShj aGFyICpxdWVyeSwgZm9ybXZhcnMgKipzdGFydCwgZm9ybXZhcnMgKipsYXN0LCBjb25zdCBjaGEK KyAJYXV4ID0gcXVlcnk7CisgCXdoaWxlICgqcXVlcnkpIHsKKyAJCXBvc2l0aW9uID0gMDsKKy0J CQkJCisrCisgCQlkYXRhID0gKGZvcm12YXJzICopbWFsbG9jKHNpemVvZihmb3JtdmFycykpOwor IAkJaWYgKCFkYXRhKQorIAkJCWxpYmNnaV9lcnJvcihFX01FTU9SWSwgIiVzLCBsaW5lICVzIiwg X19GSUxFX18sIF9fTElORV9fKTsKKy0JCQkKKy0JCW1lbXNldChkYXRhLCAwLCBzaXplb2YoZm9y bXZhcnMpKTsJCQkJCQkJCistCQkKKysKKysJCW1lbXNldChkYXRhLCAwLCBzaXplb2YoZm9ybXZh cnMpKTsKKysKKyAJCS8vIFNjYW5zIHRoZSBzdHJpbmcgZm9yIHRoZSBuZXh0ICdkZWxpbScgY2hh cmFjdGVyCisgCQl3aGlsZSAoKmF1eCAmJiAoKmF1eCAhPSBkZWxpbSkpIHsKKyAJCQlwb3NpdGlv bisrOworQEAgLTg2LDcgKzg2LDcgQEAgZm9ybXZhcnMgKnByb2Nlc3NfZGF0YShjaGFyICpxdWVy eSwgZm9ybXZhcnMgKipzdGFydCwgZm9ybXZhcnMgKipsYXN0LCBjb25zdCBjaGEKKyAKKyAJCXN0 cm5jcHkoZGF0YS0+bmFtZSwgcXVlcnksIHBvc2l0aW9uKTsKKyAJCWRhdGEtPm5hbWVbcG9zaXRp b25dID0gJ1wwJzsKKy0JCQorKworIAkJcXVlcnkgPSBhdXg7CisgCQlwb3NpdGlvbiA9IDA7Cisg CQl3aGlsZSAoKmF1eCAmJiAoKmF1eCAhPSBzZXApKSB7CitAQCAtOTcsMjcgKzk3LDI3IEBAIGZv cm12YXJzICpwcm9jZXNzX2RhdGEoY2hhciAqcXVlcnksIGZvcm12YXJzICoqc3RhcnQsIGZvcm12 YXJzICoqbGFzdCwgY29uc3QgY2hhCisgCQkJCQlwb3NpdGlvbisrOworIAkJCQl9CisgCQkJfQor LQkJCWVsc2UJCQkKKysJCQllbHNlCisgCQkJCXBvc2l0aW9uKys7CistCQkJCQorKworIAkJCWF1 eCsrOworIAkJCWkrKzsKKyAJCX0KKy0JCQkJCisrCisgCQlpZiAoKmF1eCkgeworIAkJCWF1eCsr OworIAkJCWkrKzsKKyAJCX0KKy0JCQorKworIAkJZGF0YS0+dmFsdWUgPSAoY2hhciAqKW1hbGxv Yyhwb3NpdGlvbisxKTsKKyAJCWlmIChkYXRhLT52YWx1ZSA9PSBOVUxMKQorIAkJCWxpYmNnaV9l cnJvcihFX01FTU9SWSwgIiVzLCBsaW5lICVzIiwgX19GSUxFX18sIF9fTElORV9fKTsKKyAKKyAJ CXN0cm5jcHkoZGF0YS0+dmFsdWUsIGNnaV91bmVzY2FwZV9zcGVjaWFsX2NoYXJzKHF1ZXJ5KSwg cG9zaXRpb24pOworIAkJZGF0YS0+dmFsdWVbcG9zaXRpb25dID0gJ1wwJzsKKy0JCQorKworIAkJ c2xpc3RfYWRkKGRhdGEsIHN0YXJ0LCBsYXN0KTsKKy0JCQorKworIAkJcXVlcnkgPSBhdXg7Cisg CX0KKyAKK0BAIC0xMzQsOCArMTM0LDggQEAgZm9ybXZhcnMgKnByb2Nlc3NfZGF0YShjaGFyICpx dWVyeSwgZm9ybXZhcnMgKipzdGFydCwgZm9ybXZhcnMgKipsYXN0LCBjb25zdCBjaGEKKyAvKioK KyAqIFByb2Nlc3MgSFRNTCBmb3JtIG9yIFVSTCBkYXRhLgorICogVXNlZCB0byByZXRyaWV2ZSBH RVQgb3IgUE9TVCBkYXRhLiBJdCBoYW5kbGVzIGF1dG9tYXRpY2FseSB0aGUgY29ycmVjdCBSRVFV RVNUX01FVEhPRCwgc28geW91IGRvbid0IG5lZWQgdG8gYWZyYWlkIGFib3V0IGl0LgorLSogQHJl dHVybiBSZXR1cm5zIHRoZSBjb250ZW50cyBvZiBVUkwgb3IgRk9STSBpbnRvIGEgZm9ybXZhcnMg dmFyaWFibGUsIG9yIE5VTEwgaWYgRkFMU0UuIE1vc3Qgb2YgdGltZSwgeW91IAorLSogZG9uJ3Qg bmVlZCBhbnkgdmFyaWFibGUgdG8gc3RvcmUgdGhlIGZvcm0gZGF0YSwgYmVjYXVzZSBpcyB1c2Vk IGFuIGludGVybmFsIHZhcmlhYmxlIHRvIG1hbmlwdWxhdGUgdGhlIGNvbnRlbnRzLiAKKysqIEBy ZXR1cm4gUmV0dXJucyB0aGUgY29udGVudHMgb2YgVVJMIG9yIEZPUk0gaW50byBhIGZvcm12YXJz IHZhcmlhYmxlLCBvciBOVUxMIGlmIEZBTFNFLiBNb3N0IG9mIHRpbWUsIHlvdQorKyogZG9uJ3Qg bmVlZCBhbnkgdmFyaWFibGUgdG8gc3RvcmUgdGhlIGZvcm0gZGF0YSwgYmVjYXVzZSBpcyB1c2Vk IGFuIGludGVybmFsIHZhcmlhYmxlIHRvIG1hbmlwdWxhdGUgdGhlIGNvbnRlbnRzLgorICogQHNl ZSBjZ2lfaW5pdCwgY2dpX2luaXRfaGVhZGVycworICoqLworIGZvcm12YXJzICpjZ2lfcHJvY2Vz c19mb3JtKCkKK0BAIC0xNDYsNyArMTQ2LDcgQEAgZm9ybXZhcnMgKmNnaV9wcm9jZXNzX2Zvcm0o KQorIAorIAkvLyBXaGVuIE1FVEhPRCBoYXMgbm8gY29udGVudHMsIHRoZSBkZWZhdWx0IGFjdGlv biBpcyB0byBwcm9jZXNzIGl0IGFzIEdFVCBtZXRob2QKKyAJaWYgKG1ldGhvZCA9PSBOVUxMIHx8 ICFzdHJjYXNlY21wKCJHRVQiLCBtZXRob2QpKSB7CistCQljaGFyICpkYWRvczsgCisrCQljaGFy ICpkYWRvczsKKyAJCWRhZG9zID0JZ2V0ZW52KCJRVUVSWV9TVFJJTkciKTsKKyAKKyAJCS8vIFNv bWV0aW1lcywgR0VUIGNvbWVzIHdpdGggbm90IGFueSBkYXRhCitAQCAtMjIyLDcgKzIyMiw3IEBA IGludCBjZ2lfaW5jbHVkZShjb25zdCBjaGFyICpmaWxlbmFtZSkKKyAKKyAJCXJldHVybiAwOwor IAl9CistCQorKworICAJd2hpbGUgKGZnZXRzKGJ1ZmZlciwgMjU1LCBpbmMpKQorIAkJcHJpbnRm KCIlcyIsIGJ1ZmZlcik7CisgCitAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgY2dpX2luaXRfaGVh ZGVycygpCisgKiBAcGFyYW0gbmFtZSBGb3JtIHZhcmlhYmxlIG5hbWUKKyAqIEByZXR1cm4gRm9y bSB2YXJpYWJsZSBjb250ZW50cworICogQHNlZSBjZ2lfcGFyYW0KKy0qIAorKyoKKyAqIEV4YW1w bGU6CisgKiBGb3IgZXhhbXBsZSwgaWYgaW4geW91ciBIVE1MIHlvdSBoYXZlIHNvbWV0aGluZyBs aWtlPGJyPgorICogIDxicj4KK0BAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBjZ2lfaW5pdF9oZWFk ZXJzKCkKKyAqIDwvcHJlPgorICogICAgICAgPGJyPgorICogdGhlbiwgdG8gcmV0cmlldmUgYWxs IHZhbHVlcywgeW91IGNhbiBtYWtlIGEgY29kZSBsaWtlPGJyPjxicj4KKy0qIAorKyoKKyAqIFxj b2RlCisgKiAvLyAuLi4KKyAqIGNoYXIgKmRhdGE7CitAQCAtMjk2LDEzICsyOTYsMTMgQEAgY2hh ciAqY2dpX3BhcmFtX211bHRpcGxlKGNvbnN0IGNoYXIgKm5hbWUpCisgfQorIAorIC8qKgorLSog IFJlY2lyZWN0cyB0byB0aGUgc3BlY2lmaWVkIHVybC4gCisrKiAgUmVjaXJlY3RzIHRvIHRoZSBz cGVjaWZpZWQgdXJsLgorICogUmVtZW1iZXIgdGhhdCB5b3UgY2Fubm90IHNlbmQgYW55IGhlYWRl ciBiZWZvcmUgdGhpcyBmdW5jdGlvbiwgb3IgaXQgd2lsbCBub3Qgd29yay4KKyAqIDxiPk5vdGU6 PC9iPjxicj4KKyAqIExpYkNHSSBkb2VzIG5vdCBpbXBsZW1lbnQgUkZDIDIzOTYgdG8gbWFrZSB0 aGUgbGliIHNpbXBsZSBhbmQgcXVpY2suIFlvdSBzaG91bGQgYmUgc3VyZQorLSogdG8gcGFzcyBh IGNvcnJlY3QgVVJJIHRvIHRoaXMgZnVuY3Rpb24uIAorKyogdG8gcGFzcyBhIGNvcnJlY3QgVVJJ IHRvIHRoaXMgZnVuY3Rpb24uCisgKiBAcGFyYW0gdXJsIHVybCB0byByZWRpcmVjdCB0aGUgYnJv d3NlcgorLSogCisrKgorICogXGNvZGUKKyAqIGNnaV9yZWRpcmVjdCgiaHR0cDovL3d3d3cubGlu dXgub3JnIik7CisgKiBcZW5kY29kZQorQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIGluaXRfaGV4 X3RhYmxlKCkKKyB9CisgCisgLyoqCistKiAgTWFpbiBjZ2kgZnVuY3Rpb24uIAorKyogIE1haW4g Y2dpIGZ1bmN0aW9uLgorICogIENvbmZpZ3VyZXMgYWxsIChtb3N0Pykgd2UgbmVlZCB0byAgZ2V0 IGNnaSBsaWJyYXJ5IHdvcmtpbmcgY29ycmVjdGx5LiBJdCBNVVNUIGJlIGNhbGxlZCBiZWZvcmUK KyAqICBhbnkgb3RoZXIgY2dpIGZ1bmN0aW9uLgorICogIEBzZWUgY2dpX2VuZCwgY2dpX3Byb2Nl c3NfZm9ybSwgY2dpX2luaXRfaGVhZGVycworQEAgLTM2MCw3ICszNjAsNyBAQCBpbnQgY2dpX2lu aXQoKQorIAkvLyBjYXVzZSBwcm9ibGVtcyB3aXRoIHNlc3Npb24ncy4gTm90ZSB0aGF0LCB3aGVu IHlvdSB3YW50CisgCS8vIHRvIHVzZSBzZXNzaW9uIHdpdGhpbiB5b3VyIHByb2dyYW0sIHlvdSBu ZWVkICBjZ2lfZ2V0X2Nvb2tpZXMoKQorIAkvLyBiZWZvcmUgc2Vzc2lvbl9zdGFydCgpLCBvdGhl cndpc2Ugd2Ugd2lsbCBnZXQgc29tZSBwcm9ibGVtcy4uLiA6KQorLQkvLyBDYWxsaW5nIHRoaXMg ZnVuY3Rpb24gaGVyZSBpcyB0aGUgYmVzdCB3YXkuIFRydXN0IG1lIDopCQorKwkvLyBDYWxsaW5n IHRoaXMgZnVuY3Rpb24gaGVyZSBpcyB0aGUgYmVzdCB3YXkuIFRydXN0IG1lIDopCisgCWNnaV9n ZXRfY29va2llcygpOworIAorIAlyZXR1cm4gMTsKK0BAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBj Z2lfZW5kKCkKKyAKKyAJZm9ybXZhcnNfbGFzdCA9IE5VTEw7CisgCistCWlmIChzZXNzX2xpc3Rf c3RhcnQpIAorKwlpZiAoc2Vzc19saXN0X3N0YXJ0KQorIAkJc2xpc3RfZnJlZSgmc2Vzc19saXN0 X3N0YXJ0KTsKKyAKKyAJaWYgKGNvb2tpZXNfc3RhcnQpCitAQCAtNDE0LDcgKzQxNCw3IEBAIGNo YXIgKmNnaV91bmVzY2FwZV9zcGVjaWFsX2NoYXJzKGNoYXIgKnN0cikKKyAJCQl0bXBbcG9zXSA9 ICcgJzsKKyAJCWVsc2UKKyAJCQl0bXBbcG9zXSA9IHN0cltpXTsKKy0JCQorKworIAkJcG9zKys7 CisgCX0KKyAKK0BAIC00NjQsMjEgKzQ2NCwyMSBAQCBjaGFyICpjZ2lfZXNjYXBlX3NwZWNpYWxf Y2hhcnMoY2hhciAqc3RyKQorIAorIC8qKgorICogR2V0cyB0aGUgb2YgSFRNTCBvciBVUkwgdmFy aWFibGUgaW5kaWNhdGVkIGJ5ICduYW1lJworLSogQHBhcmFtIG5hbWUgRm9ybSBWYXJpYWJsZSBu YW1lIAorKyogQHBhcmFtIG5hbWUgRm9ybSBWYXJpYWJsZSBuYW1lCisgKiBAc2VlIGNnaV9wYXJh bV9tdWx0aXBsZSwgIGNnaV9wcm9jZXNzX2Zvcm0sIGNnaV9pbml0CistKiAKKysqCisgKiBcY29k ZQorICogLy8gLi4uCisgKiBjaGFyICpjb250ZW50czsKKy0qIAorKyoKKyAqIGNnaV9pbml0KCk7 CisgKiBjZ2lfcHJvY2Vzc19mb3JtKCk7CisgKiBjZ2lfaW5pdF9oZWFkZXJzKCk7CistKiAKKysq CisgKiBjb250ZW50cyA9IGNnaV9wYXJhbSgiZm9vIik7CistKiAKKysqCisgKiBwdXRzKGNvbnRl bnRzKTsKKy0qIAorKyoKKyAqIC8vIC4uLgorICogXGVuZGNvZGUKKyAqKi8KK2RpZmYgLS1naXQg YS9zcmMvY2dpLmggYi9zcmMvY2dpLmgKK2luZGV4IDk4MTJlN2EuLjczMTczNWQgMTAwNjQ0Cist LS0gYS9zcmMvY2dpLmgKKysrKyBiL3NyYy9jZ2kuaAorQEAgLTI4LDcgKzI4LDcgQEAgZXh0ZXJu ICJDIiB7CisgCisgLy8gZ2VuZXJhbCBwdXJwb3NlIGxpbmtlZCBsaXN0LiBBY3R1YWx5IGlzbid0 IHZlcnkgcG9ydGFibGUKKyAvLyBiZWNhdXNlIHVzZXMgb25seSAnbmFtZScgYW5kICd2YWx1ZScg dmFyaWFibGVzIHRvIHN0b3JlIGRhdGEuCistLy8gUHJvYmxhYmx5LCBpbiBhIGZ1dHVyZSByZWxl YXNlLCB0aGlzIHdpbGwgYmUgcmVwbGFjZWQgYnkgCisrLy8gUHJvYmxhYmx5LCBpbiBhIGZ1dHVy ZSByZWxlYXNlLCB0aGlzIHdpbGwgYmUgcmVwbGFjZWQgYnkKKyAvLyBhbm90aGVyIHR5cGUgb2Yg c3RydWN0CisgdHlwZWRlZiBzdHJ1Y3QgZm9ybXZhcnNBIHsKKyAgICAgICAgIGNoYXIgKm5hbWU7 CitAQCAtODYsNyArODYsNyBAQCBleHRlcm4gaW50IHNsaXN0X2RlbGV0ZShjaGFyICpuYW1lLCBm b3JtdmFycyAqKnN0YXJ0LCBmb3JtdmFycyAqKmxhc3QpOworIGV4dGVybiBjaGFyICpzbGlzdF9p dGVtKGNvbnN0IGNoYXIgKm5hbWUsIGZvcm12YXJzICpzdGFydCk7CisgCisgZXh0ZXJuIHZvaWQg c2xpc3RfZnJlZShmb3JtdmFycyAqKnN0YXJ0KTsKKy0gCisrCisgLy8gU2Vzc2lvbiBzdHVmZgor IC8vIFdlIGNhbiB1c2UgdGhpcyB2YXJpYWJsZSB0byBnZXQgdGhlIGVycm9yIG1lc3NhZ2UgZnJv bSBhICggcG9zc2libGUgKSBzZXNzaW9uIGVycm9yCisgLy8gVXNlIGl0IHRvZ2hldGVyIHdpdGgg c2Vzc2lvbl9sYXN0ZXJyb3IKK0BAIC05OCw3ICs5OCw3IEBAIGV4dGVybiBmb3JtdmFycyAqc2Vz c19saXN0X3N0YXJ0OworIAorIGV4dGVybiBjaGFyIFNFU1NJT05fU0FWRV9QQVRIWzI1NV07Cisg ZXh0ZXJuIGNoYXIgU0VTU0lPTl9DT09LSUVfTkFNRVs1MF07CistIAorKworIGV4dGVybiB2b2lk IGNnaV9zZXNzaW9uX3NldF9tYXhfaWRsZV90aW1lKHVuc2lnbmVkIGxvbmcgc2Vjb25kcyk7Cisg ZXh0ZXJuIGludCBjZ2lfc2Vzc2lvbl9kZXN0cm95KCk7CisgZXh0ZXJuIGludCBjZ2lfc2Vzc2lv bl9yZWdpc3Rlcl92YXIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOworQEAg LTEwOSw3ICsxMDksNyBAQCBleHRlcm4gaW50IGNnaV9zZXNzaW9uX3N0YXJ0KCk7CisgZXh0ZXJu IHZvaWQgY2dpX3Nlc3Npb25fY29va2llX25hbWUoY29uc3QgY2hhciAqY29va2llX25hbWUpOwor IGV4dGVybiBjaGFyICpjZ2lfc2Vzc2lvbl92YXIoY29uc3QgY2hhciAqbmFtZSk7CisgZXh0ZXJu IHZvaWQgY2dpX3Nlc3Npb25fc2F2ZV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpOworLSAKKysKKyAj aWZkZWYgX19jcGx1c3BsdXMKKyB9CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2Nvb2tpZS5j IGIvc3JjL2Nvb2tpZS5jCitpbmRleCBhMTE2NTAzLi5lOWRlZTllIDEwMDY0NAorLS0tIGEvc3Jj L2Nvb2tpZS5jCisrKysgYi9zcmMvY29va2llLmMKK0BAIC00MSwyNCArNDEsMjQgQEAgZXh0ZXJu IGludCBjZ2lfZGlzcGxheV9lcnJvcnM7CisgKi8KKyAKKyAvKioKKy0qIFNlbmQgYSBjb29raWUg dG8gdGhlIGNsaWVudC4gCisrKiBTZW5kIGEgY29va2llIHRvIHRoZSBjbGllbnQuCisgKiBAcGFy YW0gbmFtZSBDb29raWUgbmFtZQorICogQHBhcmFtIHZhbHVlIENvb2tpZSB2YWx1ZQorLSogQHBh cmFtIG1heF9hZ2UgIENvb2tpZSB0aW1lIGxpZmUsIGluIHNlY29uZHMuIEEgdmFsdWUgZXF1YWwg dG8gMCAoIHplcm8gKSBtZWFucyB0byBkaXNjYXJkIHRoZSBjb29raWUgd2hlbiB0aGUgc2Vzc2lv biBpcyBkb25lLiAKKysqIEBwYXJhbSBtYXhfYWdlICBDb29raWUgdGltZSBsaWZlLCBpbiBzZWNv bmRzLiBBIHZhbHVlIGVxdWFsIHRvIDAgKCB6ZXJvICkgbWVhbnMgdG8gZGlzY2FyZCB0aGUgY29v a2llIHdoZW4gdGhlIHNlc3Npb24gaXMgZG9uZS4KKyAqIEBwYXJhbSBwYXRoIENvb2tpZSBwYXRo IGF0IHRoZSBzZXJ2ZXIKKyAqIEBwYXJhbSBkb21haW4gRG9tYWluIHdoZXJlIGNvb2tpZSB3aWxs IHdvcmsgOikKKyAqIEBwYXJhbSBzZWN1cmUgU2VjdXJlIG9yIG5vdAorICogQHNlZSBjZ2lfY29v a2llX3ZhbHVlCistKiAKKysqCisgKiBcY29kZQorICogY2dpX2FkZF9jb29raWUoIm15Y29va2ll IiwgIm15Y29va2llIHZhbHVlIiwgMCwgMCwgMCwgMCk7CistKiBcZW5kY29kZSAgCisrKiBcZW5k Y29kZQorICoqLworLWludCBjZ2lfYWRkX2Nvb2tpZShjb25zdCBjaGFyICpuYW1lLCAKKy0JY29u c3QgY2hhciAqdmFsdWUsIAorK2ludCBjZ2lfYWRkX2Nvb2tpZShjb25zdCBjaGFyICpuYW1lLAor Kwljb25zdCBjaGFyICp2YWx1ZSwKKyAJY29uc3QgY2hhciAqbWF4X2FnZSwKKy0JY29uc3QgY2hh ciAqcGF0aCwgCistCWNvbnN0IGNoYXIgKmRvbWFpbiwgCisrCWNvbnN0IGNoYXIgKnBhdGgsCisr CWNvbnN0IGNoYXIgKmRvbWFpbiwKKyAJY29uc3QgaW50IHNlY3VyZSkKKyB7CisgCWlmIChoZWFk ZXJzX2luaXRpYWxpemVkKQorQEAgLTgxLDcgKzgxLDcgQEAgaW50IGNnaV9hZGRfY29va2llKGNv bnN0IGNoYXIgKm5hbWUsCisgCisgZm9ybXZhcnMgKmNnaV9nZXRfY29va2llcygpCisgeworLQly ZWdpc3RlciBmb3JtdmFycyAqZGF0YTsJCisrCXJlZ2lzdGVyIGZvcm12YXJzICpkYXRhOworIAly ZWdpc3RlciBzaXplX3QgcG9zaXRpb247CisgCWNoYXIgKmNvb2tpZXMsICphdXg7CisgCitAQCAt MTE3LDcgKzExNyw3IEBAIGZvcm12YXJzICpjZ2lfZ2V0X2Nvb2tpZXMoKQorIAkJCXBvc2l0aW9u ID0gc3RybGVuKGNvb2tpZXMpOworIAkJfQorIAkJZWxzZSB7CistCQkJd2hpbGUgKCphdXgrKyAh PSAnOycpIAorKwkJCXdoaWxlICgqYXV4KysgIT0gJzsnKQorIAkJCQlwb3NpdGlvbisrOworIAkJ CS8vIEVsaW1pbmF0ZSB0aGUgYmxhbmsgc3BhY2UgYWZ0ZXIgJzsnCisgCQkJYXV4Kys7CitkaWZm IC0tZ2l0IGEvc3JjL2Vycm9yLmMgYi9zcmMvZXJyb3IuYworaW5kZXggNWQyZGExMi4uMmY0OGIz YiAxMDA2NDQKKy0tLSBhL3NyYy9lcnJvci5jCisrKysgYi9zcmMvZXJyb3IuYworQEAgLTIxLDcg KzIxLDcgQEAgdm9pZCBsaWJjZ2lfZXJyb3IoaW50IGVycm9yX2NvZGUsIGNvbnN0IGNoYXIgKm1z ZywgLi4uKQorIAkJcmV0dXJuOworIAorIAljZ2lfaW5pdF9oZWFkZXJzKCk7CistCXZhX3N0YXJ0 KGFyZ3VtZW50cywgbXNnKTsJCisrCXZhX3N0YXJ0KGFyZ3VtZW50cywgbXNnKTsKKyAKKyAJcHJp bnRmKCI8Yj4lczwvYj46ICIsIGxpYmNnaV9lcnJvcl90eXBlW2Vycm9yX2NvZGVdKTsKKyAJdnBy aW50Zihtc2csIGFyZ3VtZW50cyk7CitkaWZmIC0tZ2l0IGEvc3JjL2dlbmVyYWwuYyBiL3NyYy9n ZW5lcmFsLmMKK2luZGV4IGFkMzQzNWMuLjk2NjJlY2UgMTAwNjQ0CistLS0gYS9zcmMvZ2VuZXJh bC5jCisrKysgYi9zcmMvZ2VuZXJhbC5jCitAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgaW50IG5j b2RlcyA9IHNpemVvZihoZSkgLyBzaXplb2Yoc3RydWN0IGlzbzg4NTlfMTUpOworIAorIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorIAkJCQkJCUdFTkVSQUwgR1JPVVAKKy0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCQorKyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAvKiogQGRlZmdy b3VwIGxpYmNnaV9nZW5lcmFsIEdlbmVyYWwgcHVycG9zZQorICogQHsKKyAqLworQEAgLTU5LDQy ICs1OSw0MiBAQCBzdGF0aWMgaW50IG5jb2RlcyA9IHNpemVvZihoZSkgLyBzaXplb2Yoc3RydWN0 IGlzbzg4NTlfMTUpOworICogbGlrZSAnJmx0JyBhbmQgJyZndCcKKyAqIEBwYXJhbSBzdHIgU3Ry aW5nIGNvbnRhaW5pbmcgY29kZSB0byBwYXJzZQorICogQHJldHVybiBUaGUgbmV3IHN0cmluZwor LSogQGF1dGhvciBSb2JlcnQgQ3NvayA8cmNzb2tAZ214LmRlPiAKKysqIEBhdXRob3IgUm9iZXJ0 IENzb2sgPHJjc29rQGdteC5kZT4KKyAqLworIC8vIFRoaXMgb25lIG5lZWRzIHRoZSBzdHJ1Y3Qg YW5kIG5jb2RlcyBhYm92ZS4KKy0vLyBuY29kZXMgaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBp biB0aGUgc3RydWN0LiAKKysvLyBuY29kZXMgaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0 aGUgc3RydWN0LgorIGNoYXIgKmh0bWxlbnRpdGllcyhjb25zdCBjaGFyICpzdHIpCisgeworIAlj aGFyICpidWY7CisgCWludCBzaXosIGxlbiwgaSA9IDAsIGo7CisgCisgCXNpeiA9IHN0cmxlbihz dHIpICsgMTsKKy0JCistCWJ1ZiA9IChjaGFyICopbWFsbG9jKHNpeik7CQorKworKwlidWYgPSAo Y2hhciAqKW1hbGxvYyhzaXopOworIAlpZiAoIWJ1ZikKKyAJCWxpYmNnaV9lcnJvcihFX01FTU9S WSwgIkZhaWxlZCB0byBhbGxvYyBtZW1vcnkgYXQgaHRtbGVudGl0aWVzLCBjZ2kuYyIpOworLQkK KysKKyAJZm9yICg7ICpzdHI7IHN0cisrLCBpKyspICB7CisgCQlmb3IgKGogPSAwOyBqIDwgbmNv ZGVzOyBqKyspIHsKKyAJCQlpZiAoKnN0ciA9PSBoZVtqXS5jb2RlKSB7CisgCQkJCWxlbiA9IHN0 cmxlbihoZVtqXS5odG1sKSAtIDE7CistCQkJCQorLQkJCQlidWYgPSByZWFsbG9jKGJ1Ziwgc2l6 ICs9IGxlbik7CQorKworKwkJCQlidWYgPSByZWFsbG9jKGJ1Ziwgc2l6ICs9IGxlbik7CisgCQkJ CWlmICghYnVmKQorIAkJCQkJbGliY2dpX2Vycm9yKEVfTUVNT1JZLCAiRmFpbGVkIHRvIGFsbG9j IG1lbW9yeSBhdCBodG1sZW50aXRpZXMsIGNnaS5jIik7CistCQkJCQorKworIAkJCQlzdHJjcHko YnVmICsgaSwgaGVbal0uaHRtbCk7CisgCQkJCWkgKz0gbGVuOworIAkJCQlicmVhazsKKyAJCQl9 CisgCQl9CistCQkJCistCQlpZiAoaiA9PSBuY29kZXMpIAorKworKwkJaWYgKGogPT0gbmNvZGVz KQorIAkJCWJ1ZltpXSA9ICpzdHI7CisgCX0KKy0JCisrCisgCWJ1ZltpXSA9ICdcMCc7CistCXJl dHVybiBidWY7CQorKwlyZXR1cm4gYnVmOworIH0KKyAKKyAvKioKK0BAIC0xMDIsMjMgKzEwMiwy MyBAQCBjaGFyICpodG1sZW50aXRpZXMoY29uc3QgY2hhciAqc3RyKQorICogQHBhcmFtIGZpbGVu YW1lIEZpbGVuYW1lIHRvIG9wZW4KKyAqIEBwYXJhbSB0b3RhbCBJbnRlZ2VyIHZhcmlhYmxlIHBh c3NlZCBhcyByZWZlcmVuY2UsIHdoaWNoIHdpbGwgc3RvcmUgdGhlIHRvdGFsIG9mIGl0ZW1zCisg KiBAcmV0dXJuIFJldHVybnMgdGhlIGZpbGUgaW4gYW4gYXJyYXkuIEVhY2ggZWxlbWVudCBvZiB0 aGUgYXJyYXkgY29ycmVzcG9uZHMgdG8gYSBsaW5lIGluIHRoZSBmaWxlLgorLSogCisrKgorICog XGNvZGUKKyAqIGNoYXIgKipsaW5lczsKKyAqIHVuc2lnbmVkIGludCB0b3RhbCwgaTsKKy0qICAK KysqCisgKiBsaW5lcyA9IGZpbGUoImZpbGVuYW1lLmV4dCIsICZ0b3RhbCk7CistKiAgICAKKysq CisgKiBwcmludGYoIlRvdGFsIG9mIGxpbmVzOiAldVxuIiwgdG90YWwpOworLSogICAgCisrKgor ICogZm9yIChpID0gMDsgaSA8IHRvdGFsOyBpKyspCisgKglwcmludGYoIlsldV0gJXNcbiIsIGks IGxpbmVzW2ldKTsKKy0qICAgICAKKysqCisgKiBmb3IgKGkgPSAwOyBpIDwgdG90YWw7IGkrKykg eworICogCWlmIChsaW5lc1tpXSkKKyAqCQkgZnJlZShsaW5lc1tpXSk7CisgKiB9CistKiBcZW5k Y29kZQkgIAorKyogXGVuZGNvZGUKKyAqLworIGNoYXIgKipmaWxlKGNvbnN0IGNoYXIgKmZpbGVu YW1lLCB1bnNpZ25lZCBpbnQgKnRvdGFsKQorIHsKK0BAIC0xMzgsNyArMTM4LDcgQEAgY2hhciAq KmZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUsIHVuc2lnbmVkIGludCAqdG90YWwpCisgCS8vIGlu aXRpYWwgbGluZSBsZW5ndGgKKyAJY29sdW1tcyA9IDEwMDsKKyAKKy0JLy8gSG93IG1hbnkgY2hh cmFjdGVyZXMgaW4gdGhlIGxpbmUgCisrCS8vIEhvdyBtYW55IGNoYXJhY3RlcmVzIGluIHRoZSBs aW5lCisgCWNoYXJfY291bnQgPSAxOworIAorIAlpID0gMDsKK0BAIC0xNDgsOSArMTQ4LDkgQEAg Y2hhciAqKmZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUsIHVuc2lnbmVkIGludCAqdG90YWwpCisg CWlmICghc3RyKQorIAkJbGliY2dpX2Vycm9yKEVfTUVNT1JZLCAiJXMsIGxpbmUgJXMiLCBfX0ZJ TEVfXywgX19MSU5FX18pOworIAorLQkvLyBBbGxvY2F0ZSBpbml0aWFsIG1lbW9yeSB0byBidWYg dmFyaWFibGUuIEl0IGlzIHRoZSBvbmUgCisrCS8vIEFsbG9jYXRlIGluaXRpYWwgbWVtb3J5IHRv IGJ1ZiB2YXJpYWJsZS4gSXQgaXMgdGhlIG9uZQorIAkvLyB0aGF0IHdpbGwgY29udGFpbiB0aGUg Y2hhcnMgb2YgdGhlIGxpbmVzCistCS8vIEJ5IGRlZmF1bHQsIHdlJ3JlIGFsbG9jYXRpbmcgODAg Y2hhcnMuLiBpZiBtb3JlIGlzIG5lZWRlZCwgCisrCS8vIEJ5IGRlZmF1bHQsIHdlJ3JlIGFsbG9j YXRpbmcgODAgY2hhcnMuLiBpZiBtb3JlIGlzIG5lZWRlZCwKKyAJLy8gdGhlbiB3ZSdsbCByZWFs bG9jKCkKKyAJYnVmID0gKGNoYXIgKiltYWxsb2MoY29sdW1tcyk7CisgCWlmIChidWYgPT0gTlVM TCkKK0BAIC0xNTgsOCArMTU4LDggQEAgY2hhciAqKmZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUs IHVuc2lnbmVkIGludCAqdG90YWwpCisgCisgCXdoaWxlICghZmVvZihmcCkpIHsKKyAJCWNoID0g ZmdldGMoZnApOworLQkJCistCQkvLyBUaGUgbmV4dCB3aGlsZSgpIGxvb3AgaXMgIHRvIGdldCBh bGwgY29udGVudHMgb2YgYWN0dWFsIGxpbmUgCisrCisrCQkvLyBUaGUgbmV4dCB3aGlsZSgpIGxv b3AgaXMgIHRvIGdldCBhbGwgY29udGVudHMgb2YgYWN0dWFsIGxpbmUKKyAJCXdoaWxlICgoY2gg IT0gJ1xuJykgJiYgKGNoICE9IEVPRikpIHsKKyAJCQkvLyBJbmNyZW1lbnRzIHRoZSBjaGFyYWN0 ZXIgY291bnRlcgorIAkJCWNoYXJfY291bnQrKzsKK0BAIC0yMDEsNyArMjAxLDcgQEAgY2hhciAq KmZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUsIHVuc2lnbmVkIGludCAqdG90YWwpCisgCWZjbG9z ZShmcCk7CisgCisgCSp0b3RhbCA9IGxpbmVzIC0gMTsKKy0JcmV0dXJuIHN0cjsJCisrCXJldHVy biBzdHI7CisgfQorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9saXN0LmMgYi9zcmMvbGlzdC5j CitpbmRleCA4YmQ2OGY3Li40MjNmMjhiIDEwMDY0NAorLS0tIGEvc3JjL2xpc3QuYworKysrIGIv c3JjL2xpc3QuYworQEAgLTI2LDE1ICsyNiwxNSBAQAorICNpbmNsdWRlICJlcnJvci5oIgorICNp bmNsdWRlICJjZ2kuaCIKKyAKKy0vLyBBZGQgYSBuZXcgaXRlbSB0byB0aGUgbGlzdCAKKysvLyBB ZGQgYSBuZXcgaXRlbSB0byB0aGUgbGlzdAorIHZvaWQgc2xpc3RfYWRkKGZvcm12YXJzICppdGVt LCBmb3JtdmFycyAqKnN0YXJ0LCBmb3JtdmFycyAqKmxhc3QpCisgeworIAkvLyBpZiAqc3RhcnQg aXMgZW1wdHksIHRoZW4gb3VyIGxpc3QgaXMgYWxzbyBlbXB0eS4gU28sIHRoZSBvbmx5CisgCS8v IHRhc2sgdG8gZG8gaXMgZmlsbCB0aGUgdmFyaWFibGVzICpzdGFydCBhbmQgKmxhc3Qgd2l0aCB0 aGUgZGF0YSBwb2ludGVkIGJ5IGl0ZW0KKy0JLy8gKnN0YXJ0IGNvbnRhaW5zIHRoZSBmaXJ0cyBp dGVtIGluIHRoZSBsaXN0LCBhbmQgd2UgbmVlZCAqbGFzdCB0byBrbm93IHRoZSAKKysJLy8gKnN0 YXJ0IGNvbnRhaW5zIHRoZSBmaXJ0cyBpdGVtIGluIHRoZSBsaXN0LCBhbmQgd2UgbmVlZCAqbGFz dCB0byBrbm93IHRoZQorIAkvLyBlbmQgb2YgdGhlIGxpc3QKKyAJaWYgKCEqc3RhcnQpIHsKKy0J CS8vIGl0ZW0tPm5leHQgbmVlZHMgdG8gYmUgTlVMTCwgb3RoZXJ3aXNlIHdlIG5ldmVyIHdpbGwg CisrCQkvLyBpdGVtLT5uZXh0IG5lZWRzIHRvIGJlIE5VTEwsIG90aGVyd2lzZSB3ZSBuZXZlciB3 aWxsCisgCQkvLyBmaW5kIHRoZSBlbmQgb2YgbGlzdAorIAkJaXRlbS0+bmV4dCA9IE5VTEw7Cisg CitAQCAtNTksOCArNTksOCBAQCB2b2lkIHNsaXN0X2FkZChmb3JtdmFycyAqaXRlbSwgZm9ybXZh cnMgKipzdGFydCwgZm9ybXZhcnMgKipsYXN0KQorIAorIC8vIERlbGV0ZSBmcm9tIGxpc3QgdGhl IGl0ZW0gcG9pbnRlZCBieSBuYW1lCisgCistLy8gVGhpcyBjb2RlIGlzIGEgYml0IGNvbXBsaWNh dGVkLCBhbmQgSSBuZWVkZWQgc29tZSAKKy0vLyBsb25nIGhvdXJzIHRvIHRlcm1pbmF0ZSBpdC4g SW4gYSBmdXR1cmUgcmVsZWFzZSwgCisrLy8gVGhpcyBjb2RlIGlzIGEgYml0IGNvbXBsaWNhdGVk LCBhbmQgSSBuZWVkZWQgc29tZQorKy8vIGxvbmcgaG91cnMgdG8gdGVybWluYXRlIGl0LiBJbiBh IGZ1dHVyZSByZWxlYXNlLAorIC8vIEkgd2lsbCBleHBsYWluIHRoZSBhbGdvcml0aG0gYmV0dGVy CisgaW50IHNsaXN0X2RlbGV0ZShjaGFyICpuYW1lLCBmb3JtdmFycyAqKnN0YXJ0LCBmb3JtdmFy cyAqKmxhc3QpCisgeworQEAgLTY4LDcgKzY4LDcgQEAgaW50IHNsaXN0X2RlbGV0ZShjaGFyICpu YW1lLCBmb3JtdmFycyAqKnN0YXJ0LCBmb3JtdmFycyAqKmxhc3QpCisgCS8vICpwcmlvciB3aWxs IHN0b3JlIHRoZSBwcmlvciBpdGVtIHJlbGFjdGVkIHRvIGFjdHVhbCBpbiB0aGUgbG9vcAorIAlm b3JtdmFycyAqYmVnaW4sICpwcmlvcjsKKyAKKy0JLy8gQmVmb3JlIG9mIGFsbCwgaXMgbW9yZSBz aW1wbGUgdG8gY2hlY2sgaWYgdGhlIGl0ZW0gCisrCS8vIEJlZm9yZSBvZiBhbGwsIGlzIG1vcmUg c2ltcGxlIHRvIGNoZWNrIGlmIHRoZSBpdGVtCisgCS8vIHRvIGRlbGV0ZSBpcyBpbiB0aGUgbmV4 dCBpdGVtLiBJZiB0cnVlLCB3ZSBkb24ndCBuZWVkCisgCS8vIHRvIGVudGVyIGluIHRoZSBsb29w CisgCWlmICghc3RyY2FzZWNtcCgoKnN0YXJ0KS0+bmFtZSwgbmFtZSkpIHsKK0BAIC03Niw4ICs3 Niw4IEBAIGludCBzbGlzdF9kZWxldGUoY2hhciAqbmFtZSwgZm9ybXZhcnMgKipzdGFydCwgZm9y bXZhcnMgKipsYXN0KQorIAkJKnN0YXJ0ID0gKCpzdGFydCktPm5leHQ7CisgCisgCQkvLyBpZiBz dGFydCBpcyBudWxsLCB0aGVuIHdlIGhhdmVuJ3QgbW9yZSBpdGVucworLQkJLy8gaW4gdGhlIGxp c3QuLiAKKy0JCWlmICghKnN0YXJ0KSAKKysJCS8vIGluIHRoZSBsaXN0Li4KKysJCWlmICghKnN0 YXJ0KQorIAkJCSpsYXN0ID0gTlVMTDsKKyAKKyAJCXJldHVybiAxIDsKK0BAIC04Niw3ICs4Niw3 IEBAIGludCBzbGlzdF9kZWxldGUoY2hhciAqbmFtZSwgZm9ybXZhcnMgKipzdGFydCwgZm9ybXZh cnMgKipsYXN0KQorIAkvLyBTdG9yZXMgdGhlIHN0YXJ0IG9mIHRoZSBsaXN0CisgCWJlZ2luID0g KnN0YXJ0OworIAorLQkvLyBTdGF5cyBpbiB0aGUgbG9vcCB3aGlsZSB0aGUgaXRlbSB0byBiZSBk ZWxldGVkIAorKwkvLyBTdGF5cyBpbiB0aGUgbG9vcCB3aGlsZSB0aGUgaXRlbSB0byBiZSBkZWxl dGVkCisgCS8vIGlzIG5vdCBmb3VuZAorIAl3aGlsZSAoKnN0YXJ0KSB7CisgCQkvLyBTdG9yZXMg dGhlIHByaW9yIGl0ZW0gb2YgdGhlIGxpc3QKK0BAIC05OCwxMyArOTgsMTMgQEAgaW50IHNsaXN0 X2RlbGV0ZShjaGFyICpuYW1lLCBmb3JtdmFycyAqKnN0YXJ0LCBmb3JtdmFycyAqKmxhc3QpCisg CQkvLyB0aGUgbmV4dCBpdGVtIGlzIHRoZSBvbmUgdG8gYmUgZGVsZXRlZD8/PworIAkJaWYgKCFz dHJjYXNlY21wKCgqc3RhcnQpLT5uZXh0LT5uYW1lLCBuYW1lKSkgeworIAkJCS8vIEJlZm9yZSwg Y2hlY2sgaWYgdGhlIGl0ZW0gdGhhdCB3aWxsIGJlIGRlbGV0ZWQKKy0JCQkvLyBpcyB0aGUgbGFz dC4uLiBpZiB0cnVlLCB0aGVuIHRoZSBuZXh0IGl0ZW0gbmVlZCB0byAKKysJCQkvLyBpcyB0aGUg bGFzdC4uLiBpZiB0cnVlLCB0aGVuIHRoZSBuZXh0IGl0ZW0gbmVlZCB0bworIAkJCS8vIGNvbnRh aW4gbnVsbCAoIHRoZSBlbmQgb2YgbGlzdCApLCBhbmQgdGhlIGFjdHVhbAorIAkJCS8vIHZhbHVl IGlzIGNoYW5nZWQgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIHByaW9yIHZhcmlhYmxlCisgCQkJaWYg KCgqc3RhcnQpLT5uZXh0ID09ICpsYXN0KSB7CisgCQkJCSgqc3RhcnQpLT5uZXh0ID0gTlVMTDsK KyAJCQkJKmxhc3QgPSBwcmlvcjsKKy0JCQl9CQkJCisrCQkJfQorIAkJCWVsc2UKKyAJCQkJLy8g b3RoZXJ3aXNlLi4uIHdlbGwKKyAJCQkJLy8gdGhlIGl0ZW0gdGhhdCB3aWxsIGJlIGRlbGV0ZWQg aXMgcG9pbnRlZAorQEAgLTE1Nyw3ICsxNTcsNyBAQCBjaGFyICpzbGlzdF9pdGVtKGNvbnN0IGNo YXIgKm5hbWUsIGZvcm12YXJzICpzdGFydCkKKyAJYmVnaW4gPSBzdGFydDsKKyAKKyAJd2hpbGUg KGJlZ2luKSB7CistCQlpZiAoIXN0cmNhc2VjbXAoYmVnaW4tPm5hbWUsIG5hbWUpKSAKKysJCWlm ICghc3RyY2FzZWNtcChiZWdpbi0+bmFtZSwgbmFtZSkpCisgCQkJcmV0dXJuICghYmVnaW4tPnZh bHVlWzBdID8gTlVMTCA6IGJlZ2luLT52YWx1ZSk7CisgCisgCQliZWdpbiA9IGJlZ2luLT5uZXh0 OworZGlmZiAtLWdpdCBhL3NyYy9tZDUuYyBiL3NyYy9tZDUuYworaW5kZXggNDRhMWRlMi4uNTZj ZjVjMCAxMDA2NDQKKy0tLSBhL3NyYy9tZDUuYworKysrIGIvc3JjL21kNS5jCitAQCAtNTksNyAr NTksNyBAQCB0eXBlZGVmIHN0cnVjdCBNRDVDb250ZXh0IE1ENV9DVFg7CisgCisgLyoqCisgKiBD b252ZXJ0cyBhIHN0cmluZyB0byBNRDUgZm9ybWF0LgorLSogCisrKgorICogQHBhcmFtIHN0ciBT dHJpbmcgdG8gY29udmVydCB0byBNRDUgaGFzaAorICogQHJldHVybiBNRDUgaGFzaCBjb2RlCisg KiovCitAQCAtODIsNyArODIsNyBAQCBjaGFyICptZDUoY29uc3QgY2hhciAqc3RyKQorIAorIAkv LyBmaW5hbGx5LCBoZXJlIGlzIGEgZmluYWwgc3RyaW5nIGVuY3J5cHRlZCBpbiBoZXggZmxvYXQg Zm9ybWF0CisgCU1ENUZpbmFsKG1kLCAmY29udGV4dCk7CistCQorKworIAkvLyBoZXJlLCB0aGUg bG9vcCBpcyBsZXNzIHRoYW4gMzIgYmVjYXVzZSBhIG1kNSBzdHJpbmcgY2FuIGNvbnRlbnQKKyAJ Ly8ganVzdCAzMiBieXRlcworIAlmb3IoaSA9IDA7IGkgPCAzMjsgaSsrKSB7CitAQCAtMjA2LDcg KzIwNiw3IEBAIE1ENVVwZGF0ZShzdHJ1Y3QgTUQ1Q29udGV4dCAqY3R4LCB1bnNpZ25lZCBjaGFy IGNvbnN0ICpidWYsIHVuc2lnbmVkIGxlbikKKyB9CisgCisgLyoKKy0gKiBGaW5hbCB3cmFwdXAg LSBwYWQgdG8gNjQtYnl0ZSBib3VuZGFyeSB3aXRoIHRoZSBiaXQgcGF0dGVybiAKKysgKiBGaW5h bCB3cmFwdXAgLSBwYWQgdG8gNjQtYnl0ZSBib3VuZGFyeSB3aXRoIHRoZSBiaXQgcGF0dGVybgor ICAqIDEgMCogKDY0LWJpdCBjb3VudCBvZiBiaXRzIHByb2Nlc3NlZCwgTVNCLWZpcnN0KQorICAq LworIHZvaWQKK2RpZmYgLS1naXQgYS9zcmMvc2Vzc2lvbi5jIGIvc3JjL3Nlc3Npb24uYworaW5k ZXggYTlkMmVmMS4uNGQ5NmMzZSAxMDA2NDQKKy0tLSBhL3NyYy9zZXNzaW9uLmMKKysrKyBiL3Ny Yy9zZXNzaW9uLmMKK0BAIC0yNiw3ICsyNiw3IEBACisgICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyAKKy0vKiogCisrLyoqCisgKiBA ZGVmZ3JvdXAgbGliY2dpX3Nlc3Npb24gU2Vzc2lvbiBIYW5kbGluZworICogICBPbmUgb2YgdGhl IG1vc3QgZGlmZXJlbmNpYWxzIG9mIExpYkNHSSBpcyBpdHMgc3VwcG9ydCB0byBzZXNzaW9ucywg YSBtZWNoYW5pc20gdGhhdCBwZXJtaXRzCisgKiAgIHRoZSBhcHBsaWNhdGlvbiB0byBrZWVwIHZh cmlhYmxlcyB0cm91Z2ggdGhlIHVzZXIncyBzZXNzaW9uLCB3aGVuIGhlIGlzIHZpc2l0aW5nIHlv dXIgd2Vic2l0ZS4KK0BAIC0zNSw5ICszNSw5IEBACisgKiA8dHI+CisgKiA8dGQ+CisgKiAJU2Vz c2lvbiBmdW5jdGlvbnMgYXJlIGVhc3kgdG8gdXNlIGFuZCB1bmRlcnN0YW5kLCBhbmQgcHJvYmFi bHkgeW91J2xsIHdhbnQgdG8gdGFrZSBhIGNsb3NlcgorLSogCWxvb2sgYXQgPGk+Y2dpX3Nlc3Np b25fc2F2ZV9wYXRoKCk8L2k+IGFuZCA8aT5jZ2lfc2Vzc2lvbl9jb29raWVfbmFtZSgpPC9pPiBm dW5jdGlvbnMuIFRoZXNlIGZ1bmN0aW9ucywgCisrKiAJbG9vayBhdCA8aT5jZ2lfc2Vzc2lvbl9z YXZlX3BhdGgoKTwvaT4gYW5kIDxpPmNnaV9zZXNzaW9uX2Nvb2tpZV9uYW1lKCk8L2k+IGZ1bmN0 aW9ucy4gVGhlc2UgZnVuY3Rpb25zLAorICogCWxldCB0aGUgcHJvZ3JhbW1lciB0byBzZXQgdGhl IGRpcmVjdG9yeSB3aGVyZSBzZXNzaW9uIGZpbGVzIHdpbGwKKy0qIAliZSBzYXZlZCBpbiB0aGUg aGFyZCBkaXNrIGFuZCB0aGUgY29va2llIG5hbWUgdG8gdGhlIHNlc3Npb24sIHJlc3BlY3RpdmVs eS4gCisrKiAJYmUgc2F2ZWQgaW4gdGhlIGhhcmQgZGlzayBhbmQgdGhlIGNvb2tpZSBuYW1lIHRv IHRoZSBzZXNzaW9uLCByZXNwZWN0aXZlbHkuCisgKiAJPGJyPjxicj4KKyAqIAlBcyB0aGUgQ0dJ IGlzIHJ1bm5pbmcgb24gdGhlIHdlYnNlcnZlciB3aGljaCBhIGNvbW1vbiB1c2VyLCBpdCBoYXZl IGZ1bGwgYWNjZXNzIHRvIGl0cyByZXNwZWN0aXZlIHNlc3Npb24KKyAqIAlmaWxlLiBCdXQgdGhl IG1vc3QgYmlnIHByb2JsZW0gaXMgdGhhdCB5b3UgbWF5CitAQCAtMTAyLDcgKzEwMiw3IEBAIGNv bnN0IGNoYXIgKnNlc3Npb25fZXJyb3JfbWVzc2FnZVtdID0geworICAJIlNlc3Npb24gdmFyaWFi bGUgbm90IHJlZ2lzdGVyZWQiLAorICAJIkZhaWxlZCB0byBvcGVuIHNlc3Npb24gZmlsZSBmb3Ig bWFuaXB1bGF0aW9uIgorIH07CistIAorKworIAorIC8vIGNnaS5jCisgZXh0ZXJuIGludCBoZWFk ZXJzX2luaXRpYWxpemVkOworQEAgLTE0Miw5ICsxNDIsOSBAQCB2b2lkIHNlc3NfZ2VuZXJhdGVf aWQoKQorIAlzZXNzX2ZuYW1lID0gKGNoYXIgKiltYWxsb2Moc2F2ZV9wYXRoX2xlbiArIFNFU1Nf SURfTEVOICsgMSk7CisgCWlmICghc2Vzc19mbmFtZSkKKyAJCWxpYmNnaV9lcnJvcihFX01FTU9S WSwgIkZpbGUgJXMsIGxpbmUgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18pOworLQkJCistCWZvciAo aSA9IDA7IGkgPCBTRVNTX0lEX0xFTjsgaSsrKSAKKy0JCXNlc3NfaWRbaV0gPSB0YWJsZVtyYW5k KCklbGVuXTsJCisrCisrCWZvciAoaSA9IDA7IGkgPCBTRVNTX0lEX0xFTjsgaSsrKQorKwkJc2Vz c19pZFtpXSA9IHRhYmxlW3JhbmQoKSVsZW5dOworIAlzZXNzX2lkW1NFU1NfSURfTEVOXSA9ICdc MCc7CisgCisgCXNucHJpbnRmKHNlc3NfZm5hbWUsIChTRVNTX0lEX0xFTiArIHNhdmVfcGF0aF9s ZW4gKyAxKSwgIiVzJXMlcyIsIFNFU1NJT05fU0FWRV9QQVRILCBTRVNTSU9OX0ZJTEVfUFJFRklY LCBzZXNzX2lkKTsKK0BAIC0xNTUsMTAgKzE1NSwxMCBAQCBpbnQgc2Vzc19jcmVhdGVfZmlsZSgp CisgeworIAkvLyB0aW1ldmFsLCBnZXR0aW1lb2ZkYXkgYXJlIHVzZWQgdG9naGV0ZXIgd2l0aCBz cmFuZCgpIGZ1bmN0aW9uCisgCXN0cnVjdCB0aW1ldmFsIHR2OworLQkKKysKKyAJZ2V0dGltZW9m ZGF5KCZ0diwgTlVMTCk7CisgCXNyYW5kKHR2LnR2X3NlYyAqIHR2LnR2X3VzZWMgKiAxMDAwMDAp OworLQkKKysKKyAJc2Vzc19nZW5lcmF0ZV9pZCgpOworIAlzZXNzX2ZpbGUgPSBmb3BlbihzZXNz X2ZuYW1lLCAidyIpOworIAlpZiAoIXNlc3NfZmlsZSkgeworQEAgLTE2OCwxNiArMTY4LDE2IEBA IGludCBzZXNzX2NyZWF0ZV9maWxlKCkKKyAKKyAJCXJldHVybiAwOworIAl9CistCQorKworIAkv LyBDaGFuZ2VzIGZpbGUgcGVybWlzc2lvbiB0byAwNjAwCisgCWNobW9kKHNlc3NfZm5hbWUsIFNf SVJVU1J8U19JV1VTUik7CisgCWZjbG9zZShzZXNzX2ZpbGUpOworIAorIAlyZXR1cm4gMTsKKy19 CQorK30KKyAKKy0vKiogCistKiBEZXN0cm95cyB0aGUgc2Vzc2lvbi4gCisrLyoqCisrKiBEZXN0 cm95cyB0aGUgc2Vzc2lvbi4KKyAqIERlc3Ryb3lzIHRoZSBjdXJyZW50IG9wZW5lZCBzZXNzaW9u LCBpbmNsdWRpbmcgYWxsIGRhdGEuCisgKiBBZnRlciBzZXNzaW9uX2Rlc3Ryb3koKSB3YXMgY2Fs bGVkLCBpcyBub3QgbW9yZQorICogcG9zc2libGUgdG8gdXNlIHNlc3Npb24gZnVuY3Rpb25zIGJl Zm9yZSBhbiBhbm90aGVyCitAQCAtMTkzLDEwICsxOTMsMTAgQEAgaW50IGNnaV9zZXNzaW9uX2Rl c3Ryb3koKQorIAkJc2Vzc19maW5pdGlhbGl6ZWQgPSAwOworIAkJc2xpc3RfZnJlZSgmc2Vzc19s aXN0X3N0YXJ0KTsKKyAKKy0JCS8vIGhoaG1tbS4uIAorLQkJaWYgKGhlYWRlcnNfaW5pdGlhbGl6 ZWQpIAorKwkJLy8gaGhobW1tLi4KKysJCWlmIChoZWFkZXJzX2luaXRpYWxpemVkKQorIAkJCWxp YmNnaV9lcnJvcihFX1dBUk5JTkcsICJIZWFkZXJzIGFscmVheSBzZW50LiBzZXNzaW9uX2Rlc3Ry b3koKSBjYW4ndCBmdWxseSB1bnJlZ2lzdGVyIHRoZSBzZXNzaW9uIik7CistCQllbHNlIAorKwkJ ZWxzZQorIAkJCWNnaV9hZGRfY29va2llKFNFU1NJT05fQ09PS0lFX05BTUUsICIiLCAwLCAwLCAw LCAwKTsKKyAKKyAJCXJldHVybiAxOworQEAgLTIxMyw5ICsyMTMsOSBAQCBpbnQgY2dpX3Nlc3Np b25fZGVzdHJveSgpCisgaW50IHNlc3NfZmlsZV9yZXdyaXRlKCkKKyB7CisgCWZvcm12YXJzICpk YXRhOworLQkKKysKKyAJY2dpX2luaXRfaGVhZGVycygpOworLQkKKysKKyAJLy8gUmV3cml0ZXMg YWxsIGRhdGEgdG8gc2Vzc2lvbiBmaWxlCisgCXNlc3NfZmlsZSA9IGZvcGVuKHNlc3NfZm5hbWUs ICJ3Iik7CisgCitAQCAtMjI2LDcgKzIyNiw3IEBAIGludCBzZXNzX2ZpbGVfcmV3cml0ZSgpCisg CisgCQlyZXR1cm4gMDsKKyAJfQorLQkKKysKKyAJZGF0YSA9IHNlc3NfbGlzdF9zdGFydDsKKyAK KyAJaWYgKGRhdGEgIT0gTlVMTCkgeworQEAgLTI2MCwxMCArMjYwLDEwIEBAIGNoYXIgKmNnaV9z ZXNzaW9uX3Zhcihjb25zdCBjaGFyICp2YXJfbmFtZSkKKyAKKyAvKioKKyAqIERlZmluZXMgdGhl IG5hbWUgb2YgdGhlIGNvb2tpZSB0aGF0IExpYkNHSSB3aWxsIHVzZSB0byBzdG9yZSBzZXNzaW9u J3MgSUQuCistKiBUaGlzIGZ1bmN0aW9uIHdvcmtzIGxpa2UgY2dpX3Nlc3Npb25fc2F2ZV9wYXRo KCkuIAorLSogVGhpcyBmdW5jdGlvbmFsaXR5IGxldCB5b3UgdG8gdXNlICBkaWZmZXJlbnQgbmFt ZXMgZm9yIGVhY2ggc2l0ZSwgYnV0IHJlbWVtYmVyLCB5b3UgY2Fubm90IAorLSogdXNlIG11bHRp cGxlIHNlc3Npb24gZm9yIHRoZSBzYW1lIGFwcGxpY2F0aW9uIHlldC4gCistKiAKKysqIFRoaXMg ZnVuY3Rpb24gd29ya3MgbGlrZSBjZ2lfc2Vzc2lvbl9zYXZlX3BhdGgoKS4KKysqIFRoaXMgZnVu Y3Rpb25hbGl0eSBsZXQgeW91IHRvIHVzZSAgZGlmZmVyZW50IG5hbWVzIGZvciBlYWNoIHNpdGUs IGJ1dCByZW1lbWJlciwgeW91IGNhbm5vdAorKyogdXNlIG11bHRpcGxlIHNlc3Npb24gZm9yIHRo ZSBzYW1lIGFwcGxpY2F0aW9uIHlldC4KKysqCisgKiBAcGFyYW0gY29va2llX25hbWUgTmFtZSBv ZiB0aGUgY29va2llIHRvIGNyZWF0ZQorICogQHNlZSBjZ2lfc2Vzc2lvbl9zYXZlX3BhdGgoKQor ICogQG5vdGUgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgY2dpX3Nlc3Npb25f c3RhcnQoKQorQEAgLTI3NiwyMyArMjc2LDIzIEBAIHZvaWQgY2dpX3Nlc3Npb25fY29va2llX25h bWUoY29uc3QgY2hhciAqY29va2llX25hbWUpCisgLyoqCisgKiBEZWZpbmVzIHdoZXJlIHNlc3Np b24gY29udHJvbCBmaWxlcyB3aWxsIGJlIHNhdmVkLgorICogSWYgaW4gdGhlIHlvdXIgQ0dJIHlv dSBkb24ndCBtYWtlIGEgY2FsbCB0byBjZ2lfc2Vzc2lvbl9zYXZlX3BhdGgoKSwgTGliQ0dJIHdp bGwKKy0qIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZSwgd2hpY2ggaXMgIi90bXAvIi4gVG8gc2VlIGhv dyB0byBtb2RpZnkgdGhlIHZhbHVlLCBzZWUgdGhlIGZvbGxvd2luZyBleGFtcGxlLiAKKysqIHVz ZSB0aGUgZGVmYXVsdCB2YWx1ZSwgd2hpY2ggaXMgIi90bXAvIi4gVG8gc2VlIGhvdyB0byBtb2Rp ZnkgdGhlIHZhbHVlLCBzZWUgdGhlIGZvbGxvd2luZyBleGFtcGxlLgorICogPGJyPkp1c3Qgbm90 ZSB5b3UgbmVlZCB0byBhZGQgJy8nIGF0IHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeSBuYW1lCisg KiBcY29kZQorICogLy8geW91cl9jZ2kuYworLSogLy8gU2V0ICJzZXNzaW9uX2ZpbGVzIiBkaXJl Y3RvcnkgdW5kZXIgeW91ciBDR0kgZGlyZWN0b3J5IGFzIHRoZSBwYXRoIAorKyogLy8gU2V0ICJz ZXNzaW9uX2ZpbGVzIiBkaXJlY3RvcnkgdW5kZXIgeW91ciBDR0kgZGlyZWN0b3J5IGFzIHRoZSBw YXRoCisgKiAvLyB3aGljaCBMaWJDR0kgd2lsbCB1c2UgdG8gc3RvcmUgc2Vzc2lvbiBmaWxlcy4K Ky0qIAorKyoKKyAqIGNnaV9zZXNzaW9uX3NhdmVfcGF0aCgic2Vzc2lvbl9maWxlcy8iKTsKKyAq ICBcZW5kY29kZQorLSogIAorLSogIE5vdGUgdGhhdCB1c2luZyB0aGlzIGZvcm0sIExpYkNHSSB3 aWxsIHNlYXJjaCBmb3IgInNlc3Npb25fZmlsZXMiIGRpcmVjdG9yeSB1c2luZyByZWxhdGl2ZSBw YXRoIAorKyoKKysqICBOb3RlIHRoYXQgdXNpbmcgdGhpcyBmb3JtLCBMaWJDR0kgd2lsbCBzZWFy Y2ggZm9yICJzZXNzaW9uX2ZpbGVzIiBkaXJlY3RvcnkgdXNpbmcgcmVsYXRpdmUgcGF0aAorICog IHRvIHlvdXIgY2dpIGFwcGxpY2F0aW9uLiBGb3IgZXhhbXBsZSwgaWYgeW91ciBDR0kgc2NyaXB0 IGlzIGxvY2F0ZWQgYXQKKyAqICAvdXNyL2xvY2FsL2h0dHBkL3dlYi95b3VyX25hbWUvY2dpLWJp bi8gZGlyZWN0b3J5LCBhbmQgeW91IHVzZSB0aGUgYWJvdmUgZGVjbGFyYXRpb24sIHRoZSBmaWxl cyBmb3IgdGhlIHNlc3Npb24gd2lsbCBiZQorLSogc3RvcmVkIGF0ICAvdXNyL2xvY2FsL2h0dHBk L3dlYi95b3VyX25hbWUvY2dpLWJpbi9zZXNzaW9uX2ZpbGVzIGRpcmVjdG9yeS4gCisrKiBzdG9y ZWQgYXQgIC91c3IvbG9jYWwvaHR0cGQvd2ViL3lvdXJfbmFtZS9jZ2ktYmluL3Nlc3Npb25fZmls ZXMgZGlyZWN0b3J5LgorICogUmVzdW1pbmcsIHRoZSBwYXRoIGlzIHJlbGF0aXZlIHRvIHdoZXJl IHlvdXIgYXBwbGljYXRpb24gcmVzaWRlcy4gPGJyPjxicj5BbmQgcmVtZW1iZXIsIExpYkNHSSBc YiBkb2VzIFxiIG5vdAorLSogY3JlYXRlIHRoZSBkaXJlY3RvcnkgZm9yIHlvdS4gCistKiAKKysq IGNyZWF0ZSB0aGUgZGlyZWN0b3J5IGZvciB5b3UuCisrKgorICogQHBhcmFtIHBhdGggUGF0aCwg cmVsYXRpdmUgb3IgYWJzb2x1dGUKKyAqIEBzZWUgY2dpX3Nlc3Npb25fY29va2llX25hbWUKKyAq IEBub3RlIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGNnaV9zZXNzaW9uX3N0 YXJ0KCkKK0BAIC0zMTMsMTIgKzMxMywxMiBAQCB2b2lkIGNnaV9zZXNzaW9uX3NhdmVfcGF0aChj b25zdCBjaGFyICpwYXRoKQorIGludCBjZ2lfc2Vzc2lvbl9yZWdpc3Rlcl92YXIoY29uc3QgY2hh ciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCisgeworIAlmb3JtdmFycyAqZGF0YTsKKy0JCisr CisgCWlmICghc2Vzc19pbml0aWFsaXplZCkgeworIAkJc2Vzc2lvbl9sYXN0ZXJyb3IgPSBTRVNT X05PVF9JTklUSUFMSVpFRDsKKyAKKyAJCWxpYmNnaV9lcnJvcihFX1dBUk5JTkcsIHNlc3Npb25f ZXJyb3JfbWVzc2FnZVtzZXNzaW9uX2xhc3RlcnJvcl0pOworLQkJCisrCisgCQlyZXR1cm4gMDsK KyAJfQorIAorQEAgLTMyOCwxNCArMzI4LDE0IEBAIGludCBjZ2lfc2Vzc2lvbl9yZWdpc3Rlcl92 YXIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCisgCQkJc2Vzc2lvbl9sYXN0 ZXJyb3IgPSBTRVNTX09QRU5fRklMRTsKKyAKKyAJCQlsaWJjZ2lfZXJyb3IoRV9XQVJOSU5HLCBz ZXNzaW9uX2Vycm9yX21lc3NhZ2Vbc2Vzc2lvbl9sYXN0ZXJyb3JdKTsKKy0JCQkKKysKKyAJCQly ZXR1cm4gMDsKKyAJCX0KKy0JCQorKworIAkJZGF0YSA9IChmb3JtdmFycyAqKW1hbGxvYyhzaXpl b2YoZm9ybXZhcnMpKTsKKyAJCWlmICghZGF0YSkKKyAJCQlsaWJjZ2lfZXJyb3IoRV9NRU1PUlks ICIlcywgbGluZSAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CistCQkKKysKKyAJCWRhdGEtPm5h bWUgPSAoY2hhciAqKW1hbGxvYyhzdHJsZW4obmFtZSkgKyAxKTsKKyAJCWlmICghZGF0YS0+bmFt ZSkKKyAJCQlsaWJjZ2lfZXJyb3IoRV9NRU1PUlksICIlcywgbGluZSAlcyIsIF9fRklMRV9fLCBf X0xJTkVfXyk7CitAQCAtMzUwLDEwICszNTAsMTAgQEAgaW50IGNnaV9zZXNzaW9uX3JlZ2lzdGVy X3Zhcihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyAKKyAJCXN0cm5jcHko ZGF0YS0+bmFtZSwgbmFtZSwgc3RybGVuKG5hbWUpKTsKKyAJCWRhdGEtPm5hbWVbc3RybGVuKG5h bWUpXSA9ICdcMCc7CistCQkKKysKKyAJCXN0cm5jcHkoZGF0YS0+dmFsdWUsIHZhbHVlLCBzdHJs ZW4odmFsdWUpKTsKKyAJCWRhdGEtPnZhbHVlW3N0cmxlbih2YWx1ZSldID0gJ1wwJzsKKy0JCQor KworIAkJaWYgKCFzZXNzX2xpc3RfbGFzdCkKKyAJCQlmcHJpbnRmKHNlc3NfZmlsZSwgIiVzPSVz IiwgbmFtZSwgdmFsdWUpOworIAkJZWxzZQorQEAgLTM4MSwxMiArMzgxLDEyIEBAIGludCBjZ2lf c2Vzc2lvbl9hbHRlcl92YXIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbmV3X3ZhbHVl KQorIHsKKyAJcmVnaXN0ZXIgZm9ybXZhcnMgKmRhdGE7CisgCXVuc2lnbmVkIGludCB2YWx1ZV9s ZW47CistCQorKworIAlkYXRhID0gc2Vzc19saXN0X3N0YXJ0OworIAl3aGlsZSAoZGF0YSkgewor IAkJaWYgKCFzdHJjbXAoZGF0YS0+bmFtZSwgbmFtZSkpIHsKKyAJCQl2YWx1ZV9sZW4gPSBzdHJs ZW4obmV3X3ZhbHVlKSArIDE7CistCQkJCisrCisgCQkJaWYgKHZhbHVlX2xlbiA+IHN0cmxlbihk YXRhLT52YWx1ZSkpIHsKKyAJCQkJZGF0YS0+dmFsdWUgPSByZWFsbG9jKGRhdGEtPnZhbHVlLCB2 YWx1ZV9sZW4rMSk7CisgCQkJCWlmICghZGF0YS0+dmFsdWUpCitAQCAtMzk2LDcgKzM5Niw3IEBA IGludCBjZ2lfc2Vzc2lvbl9hbHRlcl92YXIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAq bmV3X3ZhbHVlKQorIAorIAkJCXN0cm5jcHkoZGF0YS0+dmFsdWUsIG5ld192YWx1ZSwgdmFsdWVf bGVuKTsKKyAJCQlkYXRhLT52YWx1ZVt2YWx1ZV9sZW5dID0gJ1wwJzsKKy0JCQkKKysKKyAJCQlz ZXNzX2ZpbGVfcmV3cml0ZSgpOworIAorIAkJCXJldHVybiAxOworQEAgLTQwNCw5ICs0MDQsOSBA QCBpbnQgY2dpX3Nlc3Npb25fYWx0ZXJfdmFyKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIg Km5ld192YWx1ZSkKKyAKKyAJCWRhdGEgPSBkYXRhLT5uZXh0OworIAl9CistCQorKworIAlzZXNz aW9uX2xhc3RlcnJvciA9IFNFU1NfVkFSX05PVF9SRUdJU1RFUkVEOworLQkKKysKKyAJcmV0dXJu IDA7CisgfQorIAorQEAgLTQzNyw3ICs0MzcsNyBAQCBpbnQgY2dpX3Nlc3Npb25fdW5yZWdpc3Rl cl92YXIoY2hhciAqbmFtZSkKKyAJCXNlc3Npb25fbGFzdGVycm9yID0gU0VTU19OT1RfSU5JVElB TElaRUQ7CisgCisgCQlsaWJjZ2lfZXJyb3IoRV9XQVJOSU5HLCBzZXNzaW9uX2Vycm9yX21lc3Nh Z2Vbc2Vzc2lvbl9sYXN0ZXJyb3JdKTsKKy0JCQorKworIAkJcmV0dXJuIDA7CisgCX0KKyAKK0BA IC00NDksNyArNDQ5LDcgQEAgaW50IGNnaV9zZXNzaW9uX3VucmVnaXN0ZXJfdmFyKGNoYXIgKm5h bWUpCisgCQlyZXR1cm4gMDsKKyAJfQorIAorLQlpZiAoIXNlc3NfZmlsZV9yZXdyaXRlKCkpIAor KwlpZiAoIXNlc3NfZmlsZV9yZXdyaXRlKCkpCisgCQlyZXR1cm4gMDsKKyAKKyAJcmV0dXJuIDE7 CitAQCAtNDU3LDcgKzQ1Nyw3IEBAIGludCBjZ2lfc2Vzc2lvbl91bnJlZ2lzdGVyX3ZhcihjaGFy ICpuYW1lKQorIAorIC8qKgorICogU3RhcnRzIGEgbmV3IHNlc3Npb24uCistKiBUaGlzIGZ1bmN0 aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBzdGFydGluZyBhbmQgY3JlYXRpbmcgYSBuZXcgCisrKiBU aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBzdGFydGluZyBhbmQgY3JlYXRpbmcgYSBu ZXcKKyAqIHNlc3Npb24uIEl0IG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgc2Vzc2lv biBmdW5jdGlvbiwKKyAqIGFuZCBldmVyeSB0aW1lIGJlZm9yZSBhbnkgSFRNTCBoZWFkZXIgaGFz IHNlbnQuCisgKiBAc2VlIHNlc3Npb25fZGVzdHJveSgpCitAQCAtNDcyLDEzICs0NzIsMTMgQEAg aW50IGNnaV9zZXNzaW9uX3N0YXJ0KCkKKyAJCXNlc3Npb25fbGFzdGVycm9yID0gU0VTU19TVEFS VEVEOworIAorIAkJbGliY2dpX2Vycm9yKEVfV0FSTklORywgc2Vzc2lvbl9lcnJvcl9tZXNzYWdl W3Nlc3Npb25fbGFzdGVycm9yXSk7CistCQkKKysKKyAJCXJldHVybiAwOworIAl9CistCQorKwor IAlpZiAoaGVhZGVyc19pbml0aWFsaXplZCkgeworIAkJc2Vzc2lvbl9sYXN0ZXJyb3IgPSBTRVNT X0hFQURFUlNfU0VOVDsKKy0JCQorKworIAkJbGliY2dpX2Vycm9yKEVfV0FSTklORywgc2Vzc2lv bl9lcnJvcl9tZXNzYWdlW3Nlc3Npb25fbGFzdGVycm9yXSk7CisgCisgCQlyZXR1cm4gMDsKK0BA IC00ODcsNyArNDg3LDcgQEAgaW50IGNnaV9zZXNzaW9uX3N0YXJ0KCkKKyAJLy8gR2V0IHRoZSBz ZXNzaW9uIElECisgCXNpZCA9IGNnaV9jb29raWVfdmFsdWUoU0VTU0lPTl9DT09LSUVfTkFNRSk7 CisgCistCS8vIElmIHRoZXJlIGlzbid0IGEgc2Vzc2lvbiBJRCwgd2UgbmVlZCB0byBjcmVhdGUg b25lIAorKwkvLyBJZiB0aGVyZSBpc24ndCBhIHNlc3Npb24gSUQsIHdlIG5lZWQgdG8gY3JlYXRl IG9uZQorIAlpZiAoc2lkID09IE5VTEwpIHsKKyAJCWlmIChzZXNzX2NyZWF0ZV9maWxlKCkpIHsK KyAJCQljZ2lfYWRkX2Nvb2tpZShTRVNTSU9OX0NPT0tJRV9OQU1FLCBzZXNzX2lkLCAwLCAwLCAw LCAwKTsKK0BAIC01MDIsMTcgKzUwMiwxNyBAQCBpbnQgY2dpX3Nlc3Npb25fc3RhcnQoKQorIAkv LyBNYWtlIHN1cmUgdGhlIGZpbGUgZXhpc3RzCisgCWVsc2UgeworIAkJc2F2ZV9wYXRoX2xlbiA9 IHN0cmxlbihTRVNTSU9OX1NBVkVfUEFUSCkgKyBzdHJsZW4oU0VTU0lPTl9GSUxFX1BSRUZJWCk7 CistCQkKKysKKyAJCXNlc3NfZm5hbWUgPSAoY2hhciAqKW1hbGxvYyhzYXZlX3BhdGhfbGVuICsg U0VTU19JRF9MRU4gKyAxKTsKKyAJCWlmICghc2Vzc19mbmFtZSkKKyAJCQlsaWJjZ2lfZXJyb3Io RV9NRU1PUlksICJGaWxlICVzLCBsaW5lICVzIiwgX19GSUxFX18sIF9fTElORV9fKTsKKy0JCisr CisgCQlzbnByaW50ZihzZXNzX2ZuYW1lLCAoU0VTU19JRF9MRU4gKyBzYXZlX3BhdGhfbGVuICsg MSksICIlcyVzJXMiLCBTRVNTSU9OX1NBVkVfUEFUSCwgU0VTU0lPTl9GSUxFX1BSRUZJWCwgc2lk KTsKKyAJCXNlc3NfZm5hbWVbU0VTU19JRF9MRU4gKyBzYXZlX3BhdGhfbGVuXSA9ICdcMCc7Cist CQkKKy0JCWVycm5vID0gMDsJCQorKworKwkJZXJybm8gPSAwOworIAkJZnAgPSBmb3BlbihzZXNz X2ZuYW1lLCAiciIpOworLQkJaWYgKGVycm5vID09IEVOT0VOVCkgeyAKKysJCWlmIChlcnJubyA9 PSBFTk9FTlQpIHsKKyAJCQkvLyBUaGUgZmlsZSBkb2Vzbid0IGV4aXN0cy4gQ3JlYXRlIGEgbmV3 IHNlc3Npb24KKyAJCQlpZiAoc2Vzc19jcmVhdGVfZmlsZSgpKSB7CisgCQkJCWNnaV9hZGRfY29v a2llKFNFU1NJT05fQ09PS0lFX05BTUUsIHNlc3NfaWQsIDAsIDAsIDAsIDApOworQEAgLTUzMiwx NSArNTMyLDE1IEBAIGludCBjZ2lfc2Vzc2lvbl9zdGFydCgpCisgCXNlc3NfaWRbU0VTU19JRF9M RU5dID0gJ1wwJzsKKyAKKyAJLy8gTm93IHdlIG5lZWQgdG8gcmVhZCBhbGwgdGhlIGZpbGUgY29u dGVudHMKKy0JLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiwgSSdsbCB0cnkgdG8gCisr CS8vIFRoaXMgaXMgYSB0ZW1wb3Jhcnkgc29sdXRpb24sIEknbGwgdHJ5IHRvCisgCS8vIG1ha2Ug YSBmYXN0ZXIgaW1wbGVtZW50YXRpb24KKyAJc3RhdChzZXNzX2ZuYW1lLCAmc3QpOworIAlidWYg PSAoY2hhciAqKW1hbGxvYyhzdC5zdF9zaXplICsgMik7CisgCWlmICghYnVmKQorIAkJbGliY2dp X2Vycm9yKEVfTUVNT1JZLCAiRmlsZSAlcywgbGluZSAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXyk7 CistCQkKKysKKyAJZmdldHMoYnVmLCBzdC5zdF9zaXplKzEsIGZwKTsKKy0JCQorKworIAlpZiAo YnVmICE9IE5VTEwgJiYgc3RybGVuKGJ1ZikgPiAxKQorIAkJcHJvY2Vzc19kYXRhKGJ1ZiwgJnNl c3NfbGlzdF9zdGFydCwgJnNlc3NfbGlzdF9sYXN0LCAnPScsICc7Jyk7CisgCitAQCAtNTUxLDYg KzU1MSw2IEBAIGludCBjZ2lfc2Vzc2lvbl9zdGFydCgpCisgCXJldHVybiAxOworIH0KKyAKKy0v KiogCisrLyoqCisgKiBAfQorICovCitkaWZmIC0tZ2l0IGEvc3JjL3N0cmluZy5jIGIvc3JjL3N0 cmluZy5jCitpbmRleCAzZGM0MzdmLi5lMmJiYTk3IDEwMDY0NAorLS0tIGEvc3JjL3N0cmluZy5j CisrKysgYi9zcmMvc3RyaW5nLmMKK0BAIC0zMSw3ICszMSw3IEBACisgLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogCQkJCQlTVFJJ TkcgR1JPVVAKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCistLyoqIAorKy8qKgorICogQGRlZmdyb3VwIGxpYmNnaV9zdHJpbmcgU3Ry aW5ncworICogR2VuZXJhbCBzdHJpbmcgbWFuaXB1bGF0aW9uIGFuZCB1dGlsaXRpZXMgZnVuY3Rp b25zCisgKiBAeworQEAgLTQwLDEyICs0MCwxMiBAQAorIC8qKgorICogU2FtZSB0byBhZGRzbGFz aGVzKCksIGV4Y2VwdCB0aGF0IHRoaXMgb25lIG9ubHkgZG8gdGhlIGFjdGlvbiB3aGlsZSAnbicg aXMgZ3JlYXQgdGhhbiAwLgorICogQHBhcmFtIHMgU3RyaW5nIHRvIHBhcnNlCistKiBAcGFyYW0g biBOdW1iZXIgb2YgY2hhcmFjdGVycyB0byB3b3JrIHdpdGguIAorKyogQHBhcmFtIG4gTnVtYmVy IG9mIGNoYXJhY3RlcnMgdG8gd29yayB3aXRoLgorICogQHNlZSBhZGRzbGFzaGVzKCkKKyAqIFxj b2RlCisgKiBjaGFyICpuYW1lID0gIk15IHRlc3Qgc3RyaW5nIGlzIGNhbGxlZCBcImZvb2Jhclwi IjsKKyAqIHB1dHMobmFtZSk7IC8vIHdpbGwgZGlzcGxheSBNeSB0ZXN0IHN0cmluZyBpcyBjYWxs ZWQgImZvb2JhciIKKy0qIAorKyoKKyAqIG5hbWUgPSBhZGRuc2xhc2hlcyhuYW1lLCAzMSk7Cisg KiBwdXRzKG5hbWUpOyAvLyB3aWxsIGRpc3BsYXkgTXkgdGVzdCBzdHJpbmcgaXMgY2FsbGVkIFwi Zm9vYmFyIgorICogXGVuZGNvZGUKK0BAIC04MSw3ICs4MSw3IEBAIGNoYXIgKmFkZG5zbGFzaGVz KGNoYXIgKnMsIGludCBuKQorIAlyZXR1cm4gdG1wOworIH0KKyAKKy0vKiogCisrLyoqCisgKiBB ZGQgc2xhc2hlcyB0byBhIHN0cmluZyB3aGVuIG5lY2Vzc2FyeS4KKyAqIEFkZHMgYSAnXCcgaW4g ZXZlcnkgcXVvdGUgKCAiICksIGFwb3N0cm9waGUgKCAnICkgb3IgIGJhY2tzbGFzaCAoIFwgKQor ICogSXQncyB1c2VmdWwgd2hlbiB3b3JraW5nIHdpdGggZGF0YWJhc2VzLCBmb3IgZXhhbXBsZSwg YmVjYXVzZQorQEAgLTkzLDcgKzkzLDcgQEAgY2hhciAqYWRkbnNsYXNoZXMoY2hhciAqcywgaW50 IG4pCisgKiBcY29kZQorICogY2hhciAqbmFtZSA9ICJNeSB0ZXN0IHN0cmluZyBpcyBjYWxsZWQg XCJmb29iYXJcIiI7CisgKiBwdXRzKG5hbWUpOyAvLyB3aWxsIGRpc3BsYXkgTXkgdGVzdCBzdHJp bmcgaXMgY2FsbGVkICJmb29iYXIiCistKiAKKysqCisgKiBuYW1lID0gYWRkc2xhc2hlcyhuYW1l KTsKKyAqIHB1dHMobmFtZSk7IC8vIHdpbGwgZGlzcGxheSBNeSB0ZXN0IHN0cmluZyBpcyBjYWxs ZWQgXCJmb29iYXJcIgorICogXGVuZGNvZGUKK0BAIC0xMzEsNyArMTMxLDcgQEAgY2hhciAqc3Ry aXBuc2xhc2hlcyhjaGFyICpzLCBpbnQgbikKKyAJCXJldHVybiBOVUxMOworIAorIAl3aGlsZSAo KnMpIHsKKy0JCWlmICgobi0tID4gMCkgJiYgKCpzID09ICdcXCcpKSAKKysJCWlmICgobi0tID4g MCkgJiYgKCpzID09ICdcXCcpKQorIAkJCXMrKzsKKyAJCXRtcFtqKytdID0gKnMrKzsKKyAJfQor QEAgLTIzMywxMCArMjMzLDEwIEBAIHZvaWQgdHJpbShjaGFyICpzdHIpCisgKiBDb3B5IHBhcnQg b2YgYSBzdHJpbmcuCisgKiBDb3B5ICBjb3VudCBjaGFyYWN0ZXJzIGZyb20gc3JjLCBzdGFydGlu ZyBmcm9tIHN0YXJ0CisgKiBAcGFyYW0gc3JjIFN0cmluZyB0byBjb3B5IGZyb20KKy0qIEBwYXJh bSBzdGFydCBJbml0aWFsIG9mZnNldCAKKysqIEBwYXJhbSBzdGFydCBJbml0aWFsIG9mZnNldAor ICogQHBhcmFtIGNvdW50IE51bWJlciBvZiBjaGFycyB0byBjb3B5CisgKiBAcmV0dXJuIFRoZSBu ZXcgc3RyaW5nCistKiAKKysqCisgKiBcY29kZQorICogY2hhciAqcGFydCwgKnN0ciA9ICJUZXN0 IG9uZSwgdGVzdCB0d28iOworICogcGFydCA9IHN1YnN0cihzdHIsIDEsIDUpOworQEAgLTI2NSwx MiArMjY1LDEyIEBAIGNoYXIgKnN1YnN0cihjaGFyICpzcmMsIGNvbnN0IGludCBzdGFydCwgY29u c3QgaW50IGNvdW50KQorICogIGFuZCBzdG9yaW5nIHRoZSB0b3RhbCBvZiBwaWVjZXMgaW4gdG90 YWwKKyAqIEBwYXJhbSBzcmMgU3RyaW5nIHRvIHBhcnNlCisgKiBAcGFyYW0gdG9rZW4gQ2hhcmFj dGVyIGRlbGltaXRlciB0byBzZWFyY2guCistKiBAcGFyYW0gdG90YWwgQW4gaW50ZWdlciB2YXJp YWJsZSBwYXNzZWQgYXMgcmVmZXJlbmNlLCB3aGljaCBzdG9yZXMgdGhlIHRvdGFsIG9mIAorKyog QHBhcmFtIHRvdGFsIEFuIGludGVnZXIgdmFyaWFibGUgcGFzc2VkIGFzIHJlZmVyZW5jZSwgd2hp Y2ggc3RvcmVzIHRoZSB0b3RhbCBvZgorICogaXRlbnMgb2YgdGhlIGFycmF5CisgKiBAcmV0dXJu IFRoZSBhcnJheSwgd2hlcmUgZWFjaCBpdGVtIGlzIG9uZSBzZXBhcmV0ZWQgYnkgdG9rZW4KKy0q IAorKyoKKyAqIFxjb2RlCistKiAgCisrKgorICogIGNoYXIgKipwaWVjZXM7CisgKiAgY2hhciAq bmFtZSA9ICJUaGlzLGlzLGEsc3RyaW5nLG9mLHRlc3QiOworICogIGludCB0b3RhbCwgaTsKK0BA IC0yODAsMTQgKzI4MCwxNCBAQCBjaGFyICpzdWJzdHIoY2hhciAqc3JjLCBjb25zdCBpbnQgc3Rh cnQsIGNvbnN0IGludCBjb3VudCkKKyAqIFxlbmRjb2RlCisgKiovCisgY2hhciAqKmV4cGxvZGUo Y2hhciAqc3JjLCBjb25zdCBjaGFyICp0b2tlbiwgaW50ICp0b3RhbCkKKy17CQorK3sKKyAJY2hh ciAqKnN0cjsKKyAJcmVnaXN0ZXIgaW50IGksIGosIGNvdW50LCBpdGVtLCBzdGFydDsKKyAJaW50 IGxlbjsKKyAKKyAJaWYgKCFzcmMgfHwgIXRva2VuKSB7CisgCQkqdG90YWwgPSAwOworLQkJCisr CisgCQlyZXR1cm4gTlVMTDsKKyAJfQorIAorQEAgLTM0OCw3ICszNDgsNyBAQCBjaGFyICoqZXhw bG9kZShjaGFyICpzcmMsIGNvbnN0IGNoYXIgKnRva2VuLCBpbnQgKnRvdGFsKQorIAorIC8qKgor ICogUmVwbGFjZSBjaGFyYWN0ZXJlcyBpbiBhIHN0cmluZywgYnV0IG5vdCBtb3JlIHRoYW4gJ24n LgorLSogIFJlcGxhY2UgYWxsIG9jY291cmVuY2VzIG9mICpkZWxpbSBvbiAqc3JjIHdpdGggY2hh cmFjdGVyZXMgcG9pbnRlZCBieSAqd2l0aCwgCisrKiAgUmVwbGFjZSBhbGwgb2Njb3VyZW5jZXMg b2YgKmRlbGltIG9uICpzcmMgd2l0aCBjaGFyYWN0ZXJlcyBwb2ludGVkIGJ5ICp3aXRoLAorICog IHN0b3BwaW5nIGFmdGVyICduJyBjaGFyLgorICogIEBwYXJhbSAqc3JjIFN0cmluZyB0byBwYXJz ZQorICogIEBwYXJhbSAqZGVsaW0gQ2hhcmFjdGVyIHRvIHNlYXJjaCB0aGF0IHdpbGwgYmUgcmVw bGFjZWQKK0BAIC0zNTYsNyArMzU2LDcgQEAgY2hhciAqKmV4cGxvZGUoY2hhciAqc3JjLCBjb25z dCBjaGFyICp0b2tlbiwgaW50ICp0b3RhbCkKKyAqICBAcGFyYW0gbiBNYXhpbXVtIG51bWJlciBv ZiBjaGFycyB0byBwYXJzZQorICogIEByZXR1cm4gVGhlIG5ldyBzdHJpbmcKKyAqICBAc2VlIHN0 cl9yZXBsYWNlCistKiAgCisrKgorICogIFxjb2RlCisgKiAgY2hhciAqbGludXggPSAiTGludXgg QyI7CisgKiAgbGludXggPSBzdHJfbnJlcGxhY2UobGludXgsICJDIiwgIkNvb2wiLCBzdHJsZW4o bGludXgpKTsKK0BAIC00MTQsNyArNDE0LDcgQEAgY2hhciAqc3RyX25yZXBsYWNlKGNoYXIgKnNy YywgY29uc3QgY2hhciAqZGVsaW0sIGNvbnN0IGNoYXIgKndpdGgsIGludCBuKQorIC8qKgorICog UmVwbGFjZSBjaGFyYWN0ZXJlcyBpbiBhIHN0cmluZy4KKyAqICBSZXBsYWNlIGFsbCBvY2NvdXJl bmNlcyBvZiAqZGVsaW0gb24gKnNyYyB3aXRoIGNoYXJhY3RlcmVzIHBvaW50ZWQgYnkgKndpdGgu CistKiAgVGhlIHByb2JsZW0gd2l0aCB0aGUgZm9sb3dpbmcgY29kZSBpcyB0aGF0IHRoZSBmdW5j dGlvbiBvbmx5IHNlYXJjaGVzIGZvciB0aGUgCisrKiAgVGhlIHByb2JsZW0gd2l0aCB0aGUgZm9s b3dpbmcgY29kZSBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvbmx5IHNlYXJjaGVzIGZvciB0aGUKKyAq ICBmaXJzdCBjYXJhY3RlciBvZiAqZGVsaW0sIGluZ29yaW5nIHRoZSByZXN0LiBPdGhlciBwcm9i bGVtIGlzIHNwZWVkIHJlbGFjaW9uZWQ6CisgKiAgbm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBldmVy IGNvbXBhcmUgdGhlIGxlbmd0aCBvZiAqd2l0aCB0byBkbyB0aGUgY29ycmVjdCBhY3Rpb24uCisg KiAgQHBhcmFtIHNyYyBTdHJpbmcgdG8gcGFyc2UKK0BAIC00MjIsNyArNDIyLDcgQEAgY2hhciAq c3RyX25yZXBsYWNlKGNoYXIgKnNyYywgY29uc3QgY2hhciAqZGVsaW0sIGNvbnN0IGNoYXIgKndp dGgsIGludCBuKQorICogIEBwYXJhbSB3aXRoIFN0cmluZyB0byByZXBsYWNlIHdpdGgKKyAqICBA cmV0dXJuIFRoZSBuZXcgc3RyaW5nCisgKiAgQHNlZSBzdHJfbnJlcGxhY2UKKy0qICAKKysqCisg KiAgXGNvZGUKKyAqICBjaGFyICpsaW51eCA9ICJMaW51eCBDIjsKKyAqICBsaW51eCA9IHN0cl9y ZXBsYWNlKGxpbnV4LCAiQyIsICJDb29sIik7CitAQCAtNDU0LDE0ICs0NTQsMTQgQEAgY2hhciAq cmVwbGFjZShjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmRlbGltLCBjb25zdCBjaGFyICp3aXRoKQor IGludCBzdHJucG9zKGNoYXIgKnMsIGNoYXIgKmNoLCB1bnNpZ25lZCBpbnQgY291bnQpCisgewor IAlyZWdpc3RlciB1bnNpZ25lZCBpbnQgcG9zID0gMCwgaTsKKy0JCisrCisgCWZvciAoaSA9IDA7 IGkgPD0gY291bnQgJiYgKnM7IGkrKykgeworIAkJaWYgKCpzKysgPT0gKmNoKQorIAkJCXJldHVy biBwb3M7CistCQkKKysKKyAJCXBvcysrOworIAl9CistCQorKworIAlyZXR1cm4gLTE7CisgfQor IAorQEAgLTQ4NSwxMyArNDg1LDEzIEBAIGludCBzdHJwb3MoY2hhciAqcywgY2hhciAqY2gpCisg KiAgQHBhcmFtIGNvdW50IE51bWJlciBvZiBjaGFyYWN0ZXJlcyB0byBkZWxldGUKKyAqICBAcmV0 dXJuIFRoZSBuZXcgc3RyaW5nCisgKiAgQHNlZSBzdHJuZGVsKCkKKy0qIAorKyoKKyAqICBcY29k ZQorICogICp0eHQgPSAiU29tZSB0ZXh0IHRvIHRlc3QgYW55dGhpbmciOworICogIHB1dHModHh0 KTsKKyAqICB0eHQgPSBzdHJkZWwodHh0LCAyLCA4KTsKKyAqICBwdXRzKHR4dCk7CistKiBcZW5k Y29kZSAgIAorKyogXGVuZGNvZGUKKyAqKi8KKyBjaGFyICpzdHJkZWwoY2hhciAqcywgaW50IHN0 YXJ0LCBpbnQgY291bnQpCisgeworQEAgLTUwOCw3ICs1MDgsNyBAQCBjaGFyICpzdHJkZWwoY2hh ciAqcywgaW50IHN0YXJ0LCBpbnQgY291bnQpCisgCQlsaWJjZ2lfZXJyb3IoRV9NRU1PUlksICIl cywgbGluZSAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgCisgCWZvciAoaSA9IDA7IGkgPCBs ZW47IGkrKykgeworLQkJaWYgKChpID49IHN0YXJ0KSAmJiAoaSA8IChzdGFydCtjb3VudCkpKSAK KysJCWlmICgoaSA+PSBzdGFydCkgJiYgKGkgPCAoc3RhcnQrY291bnQpKSkKKyAJCQlzKys7Cisg CQllbHNlCisgCQkJdG1wW2NvbnRhZG9yKytdID0gKnMrKzsKK0BAIC01MzYsMzcgKzUzNiwzNyBA QCBjaGFyICpyZWN2bGluZShGSUxFICpzKQorIAlzaXplX3Qgc2l6ID0gMDsKKyAKKyAJZm9yICg7 IChjaCA9IGZnZXRjKHMpKSAhPSBFT0Y7IGkrKykgeworLQkJaWYgKGkgPT0gc2l6KSAKKysJCWlm IChpID09IHNpeikKKyAJCQlidWYgPSByZWFsbG9jKGJ1Ziwgc2l6ICs9IEJVRlNJWik7CistCQkJ CisrCisgCQlidWZbaV0gPSBjaDsKKy0JCQorKworIAkJaWYgKGJ1ZltpXSA9PSAnXG4nKSB7Cisg CQkJYnVmW2ldID0gJ1wwJzsKKy0JCQkKKy0JCQlpZiAoaSA+IDAgJiYgYnVmW2ktMV0gPT0gJ1xy JykgCisrCisrCQkJaWYgKGkgPiAwICYmIGJ1ZltpLTFdID09ICdccicpCisgCQkJCWJ1ZltpLTFd ID0gJ1wwJzsKKy0JCQkJCisrCisgCQkJcmV0dXJuIGJ1ZjsKKyAJCX0KKyAJfQorLQkKKysKKyAJ aWYgKGkgPiAwKSB7CisgCQlpZiAoaSA9PSBzaXopIGJ1ZiA9IHJlYWxsb2MoYnVmLCBzaXogKyAx KTsKKyAJCQlidWZbaV0gPSAnXDAnOworLQkJCQorKworIAkJcmV0dXJuIGJ1ZjsKKyAJfQorLQkK KysKKyAJcmV0dXJuIE5VTEw7CisgfQorIAorIC8qKgorICogTWFrZXMgYSBzdHJpbmcuCisgKiBX b3JrcyBsaWtlIHByaW50ZigpLCB3aXRoIHRoZSBkaWZmZXJlbmNlCistKiB0aGF0IGl0IHJldHVy bnMgYSBzdHJpbmcgdGhhdCBpcyB0aGUgCisrKiB0aGF0IGl0IHJldHVybnMgYSBzdHJpbmcgdGhh dCBpcyB0aGUKKyAqIGNvbmNhdGVuYXRpb24gb2YgdGhlIHZhbHVlcyBwYXNzZWQgYXMgcGFyYW1l dGVyLgorLSogCisrKgorICogQHBhcmFtICpzIEluaWNpYWwgU3RyaW5nIGFuZCBvcHRpb25hbGx5 IGZvcm1hdGF0aW9uIHBhcmFtZXRlcnMgKCBqdXN0ICVzIGlzIGFsbG93ZWQgKQorICogQHJldHVy biBUaGUgbmV3IFN0cmluZworICogXGNvZGUKK0BAIC01OTksNyArNTk5LDcgQEAgY2hhciAqbWFr ZV9zdHJpbmcoY2hhciAqcywgLi4uKQorIAkJCQkJYnJlYWs7CisgCQkJfQorIAkJfQorLQkJCisr CisgCQlzdHIrKzsKKyAJfQorIAorQEAgLTYyOCwxMyArNjI4LDEzIEBAIGNoYXIgKnN0cmNhdF9l eChjb25zdCBjaGFyICpzdHIxLCBjb25zdCBjaGFyICpzdHIyKQorIAlsZW4gPSBzdHJsZW4oc3Ry MSkgKyBzdHJsZW4oc3RyMik7CisgCisgCW5ld19zdHIgPSAoY2hhciAqKW1hbGxvYygobGVuICsg MSkgKiBzaXplb2YoY2hhciopKTsKKy0JaWYgKCFuZXdfc3RyKSAKKysJaWYgKCFuZXdfc3RyKQor IAkJbGliY2dpX2Vycm9yKEVfTUVNT1JZLCAiJXMsIGxpbmUgJXMiLCBfX0ZJTEVfXywgX19MSU5F X18pOworIAorIAlzcHJpbnRmKG5ld19zdHIsICIlcyVzIiwgc3RyMSwgc3RyMik7CisgCisgCW5l d19zdHJbbGVuXSA9ICdcMCc7CistCQorKworIAlyZXR1cm4gbmV3X3N0cjsKKyB9CisgCmRpZmYg LS1naXQgYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwMy1kZXN0ZGlyLXN1cHBvcnQucGF0Y2ggYi9w YXRjaGVzL2xpYmNnaS0xLjAvMDAwMy1kZXN0ZGlyLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDU2YWJhMmIuLjAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9saWJjZ2kt MS4wLzAwMDMtZGVzdGRpci1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAs MCBAQAotRnJvbTogUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgot RGF0ZTogRnJpLCAyNiBPY3QgMjAxMiAyMTo0NjoyMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBk ZXN0ZGlyIHN1cHBvcnQKLQotRG9uJ3QgaW5zdGFsbCBpbnRvIGZpbmFsIGRpcmVjdG9yaWVzIGRp cmVjdGx5LCB1c2UgREVTVERJUi4gVGhpcyBwYXRjaAotaGVscHMgZGlzdHJpYnV0b3JzIHRvIHBh Y2thZ2UgbGliY2dpIG9mZmxpbmUuCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBTY2h3ZWJlbCA8 ci5zY2h3ZWJlbEBwZW5ndXRyb25peC5kZT4KLS0tLQotIE1ha2VmaWxlLmluIHwgICAyMiArKysr KysrKysrKy0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEx IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgot aW5kZXggZTM4ZTc3Ni4uZDM2Njc5ZSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9N YWtlZmlsZS5pbgotQEAgLTQ4LDcgKzQ4LDcgQEAgYWxsOiBzcmMvbGliY2dpLnNvIHNyYy9saWJj Z2kuYQotIAotIAotIHNoYXJlZDogc3JjL2xpYmNnaS5zbwotLQljcCBzcmMvbGliY2dpLnNvICQo TElCRElSKQotKwljcCBzcmMvbGliY2dpLnNvICQoREVTVERJUikkKExJQkRJUikKLSAKLSBzcmMv bGliY2dpLmE6ICQoT0JKUykKLSAJJChBUikgcmMgc3JjL2xpYmNnaS5hICQoT0JKUykKLUBAIC01 NywxMCArNTcsMTAgQEAgc3JjL2xpYmNnaS5zbzogJChTSE9CSlMpCi0gCSQoQ0MpICQoU0hBUkVE T1BUKSAtbyBzcmMvbGliY2dpLnNvICQoU0hPQkpTKSAkKEVYVFJBX0xJQlMpCi0gCi0gaW5zdGFs bDoKLS0JY3Agc3JjL2xpYmNnaS5hICQoTElCRElSKQotLQljcCBzcmMvbGliY2dpLnNvICQoTElC RElSKQotLQljcCBzcmMvY2dpLmggJChJTkNESVIpCi0tCWNwIHNyYy9zZXNzaW9uLmggJChJTkNE SVIpCi0rCWNwIHNyYy9saWJjZ2kuYSAkKERFU1RESVIpJChMSUJESVIpCi0rCWNwIHNyYy9saWJj Z2kuc28gJChERVNURElSKSQoTElCRElSKQotKwljcCBzcmMvY2dpLmggJChERVNURElSKSQoSU5D RElSKQotKwljcCBzcmMvc2Vzc2lvbi5oICQoREVTVERJUikkKElOQ0RJUikKLSAKLSAKLSBzcmMv ZXJyb3Iubzogc3JjL2Vycm9yLmMgc3JjL2Vycm9yLmgKLUBAIC04NCwxMCArODQsMTAgQEAgdW5p bnN0YWxsOiBjbGVhbgotIAlybSAtZiAkKE1BTkRJUikvbGliY2dpKgotIAotIGluc3RhbGxfbWFu OgotLQljcCBkb2MvbWFuL21hbjMvbGliY2dpX2Jhc2U2NC4zICQoTUFORElSKQotLQljcCBkb2Mv bWFuL21hbjMvbGliY2dpX2NnaS4zICQoTUFORElSKQotLQljcCBkb2MvbWFuL21hbjMvbGliY2dp X2dlbmVyYWwuMyAkKE1BTkRJUikKLS0JY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9zdHJpbmcuMyAk KE1BTkRJUikKLS0JY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9zZXNzaW9uLjMgJChNQU5ESVIpCi0t CWNwIGRvYy9tYW4vbWFuMy9saWJjZ2lfY29va2llLjMgJChNQU5ESVIpCi0rCWNwIGRvYy9tYW4v bWFuMy9saWJjZ2lfYmFzZTY0LjMgJChERVNURElSKSQoTUFORElSKQotKwljcCBkb2MvbWFuL21h bjMvbGliY2dpX2NnaS4zICQoREVTVERJUikkKE1BTkRJUikKLSsJY3AgZG9jL21hbi9tYW4zL2xp YmNnaV9nZW5lcmFsLjMgJChERVNURElSKSQoTUFORElSKQotKwljcCBkb2MvbWFuL21hbjMvbGli Y2dpX3N0cmluZy4zICQoREVTVERJUikkKE1BTkRJUikKLSsJY3AgZG9jL21hbi9tYW4zL2xpYmNn aV9zZXNzaW9uLjMgJChERVNURElSKSQoTUFORElSKQotKwljcCBkb2MvbWFuL21hbjMvbGliY2dp X2Nvb2tpZS4zICQoREVTVERJUikkKE1BTkRJUikKLSAKZGlmZiAtLWdpdCBhL3BhdGNoZXMvbGli Y2dpLTEuMC8wMDAzLWZyZWUtbWVtb3J5LWFsbG9jYXRlZC1ieS11bmVzY2FwZV9zcGVjaWFsX2No YXJzLWFmdGUucGF0Y2ggYi9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwMy1mcmVlLW1lbW9yeS1hbGxv Y2F0ZWQtYnktdW5lc2NhcGVfc3BlY2lhbF9jaGFycy1hZnRlLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NDYwMWQKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRjaGVz L2xpYmNnaS0xLjAvMDAwMy1mcmVlLW1lbW9yeS1hbGxvY2F0ZWQtYnktdW5lc2NhcGVfc3BlY2lh bF9jaGFycy1hZnRlLnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb206IEFsZXhhbmRlciBEYWhs IDxwb3N0QGxlc3BvY2t5LmRlPgorRGF0ZTogV2VkLCAyNCBPY3QgMjAxMiAxMTozMToxMCArMDIw MAorU3ViamVjdDogW1BBVENIXSBmcmVlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgdW5lc2NhcGVfc3Bl Y2lhbF9jaGFycygpIGFmdGVyIG5vdAorIG5lZWRlZCBhbnltb3JlLCBzaG91bGQgZml4ICMzCisK Ky0tLQorIHNyYy9jZ2kuYyAgICB8ICAgIDYgKysrKy0tCisgc3JjL2Nvb2tpZS5jIHwgICAgNyAr KysrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0p CisKK2RpZmYgLS1naXQgYS9zcmMvY2dpLmMgYi9zcmMvY2dpLmMKK2luZGV4IGU5ZDc2YWUuLjQ2 MWViYTMgMTAwNjQ0CistLS0gYS9zcmMvY2dpLmMKKysrKyBiL3NyYy9jZ2kuYworQEAgLTUxLDcg KzUxLDcgQEAgZXh0ZXJuIGZvcm12YXJzICpjb29raWVfZW5kOworIGZvcm12YXJzICpwcm9jZXNz X2RhdGEoY2hhciAqcXVlcnksIGZvcm12YXJzICoqc3RhcnQsIGZvcm12YXJzICoqbGFzdCwgY29u c3QgY2hhciBkZWxpbSwgY29uc3QgY2hhciBzZXApCisgeworIAlyZWdpc3RlciBzaXplX3QgcG9z aXRpb24gPSAwLCB0b3RhbF9sZW4gPSAwLCBpID0gMDsKKy0JY2hhciAqYXV4OworKwljaGFyICph dXgsICpzdHJfdW5lc2M7CisgCWZvcm12YXJzICpkYXRhOworIAorIAlpZiAocXVlcnkgPT0gTlVM TCkKK0BAIC0xMTMsOCArMTEzLDEwIEBAIGZvcm12YXJzICpwcm9jZXNzX2RhdGEoY2hhciAqcXVl cnksIGZvcm12YXJzICoqc3RhcnQsIGZvcm12YXJzICoqbGFzdCwgY29uc3QgY2hhCisgCQlpZiAo ZGF0YS0+dmFsdWUgPT0gTlVMTCkKKyAJCQlsaWJjZ2lfZXJyb3IoRV9NRU1PUlksICIlcywgbGlu ZSAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgCistCQlzdHJuY3B5KGRhdGEtPnZhbHVlLCBj Z2lfdW5lc2NhcGVfc3BlY2lhbF9jaGFycyhxdWVyeSksIHBvc2l0aW9uKTsKKysJCXN0cl91bmVz YyA9IGNnaV91bmVzY2FwZV9zcGVjaWFsX2NoYXJzKHF1ZXJ5KTsKKysJCXN0cm5jcHkoZGF0YS0+ dmFsdWUsIHN0cl91bmVzYywgcG9zaXRpb24pOworIAkJZGF0YS0+dmFsdWVbcG9zaXRpb25dID0g J1wwJzsKKysJCWZyZWUoc3RyX3VuZXNjKTsKKyAKKyAJCXNsaXN0X2FkZChkYXRhLCBzdGFydCwg bGFzdCk7CisgCitkaWZmIC0tZ2l0IGEvc3JjL2Nvb2tpZS5jIGIvc3JjL2Nvb2tpZS5jCitpbmRl eCBlOWRlZTllLi42ZTg0YzgxIDEwMDY0NAorLS0tIGEvc3JjL2Nvb2tpZS5jCisrKysgYi9zcmMv Y29va2llLmMKK0BAIC04MywxMiArODMsMTMgQEAgZm9ybXZhcnMgKmNnaV9nZXRfY29va2llcygp CisgeworIAlyZWdpc3RlciBmb3JtdmFycyAqZGF0YTsKKyAJcmVnaXN0ZXIgc2l6ZV90IHBvc2l0 aW9uOworLQljaGFyICpjb29raWVzLCAqYXV4OworKwljaGFyICpjb29raWVzLCAqYXV4LCAqc3Ry X3VuZXNjOworIAorIAlpZiAoKGNvb2tpZXMgPSBnZXRlbnYoIkhUVFBfQ09PS0lFIikpID09IE5V TEwpCisgCQlyZXR1cm4gTlVMTDsKKyAKKy0JY29va2llcyA9IGNnaV91bmVzY2FwZV9zcGVjaWFs X2NoYXJzKGNvb2tpZXMpOworKwlzdHJfdW5lc2MgPSBjZ2lfdW5lc2NhcGVfc3BlY2lhbF9jaGFy cyhjb29raWVzKTsKKysJY29va2llcyA9IHN0cl91bmVzYzsKKyAJYXV4ID0gY29va2llczsKKyAK KyAJd2hpbGUgKGNvb2tpZXMpIHsKK0BAIC0xMzUsNiArMTM2LDggQEAgZm9ybXZhcnMgKmNnaV9n ZXRfY29va2llcygpCisgCQljb29raWVzID0gYXV4OworIAl9CisgCisrCWZyZWUoc3RyX3VuZXNj KTsKKysKKyAJcmV0dXJuIGNvb2tpZXNfc3RhcnQ7CisgfQorIApkaWZmIC0tZ2l0IGEvcGF0Y2hl cy9saWJjZ2ktMS4wLzAwMDQtY2xlYW51cC1idWlsZC1saW5lLnBhdGNoIGIvcGF0Y2hlcy9saWJj Z2ktMS4wLzAwMDQtY2xlYW51cC1idWlsZC1saW5lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBmY2EyOWMzLi4wMDAwMDAwCi0tLSBhL3BhdGNoZXMvbGliY2dpLTEuMC8wMDA0 LWNsZWFudXAtYnVpbGQtbGluZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAK LUZyb206IFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJlbEBwZW5ndXRyb25peC5kZT4KLURhdGU6 IEZyaSwgMjYgT2N0IDIwMTIgMjE6NDY6MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY2xlYW51 cCBidWlsZCBsaW5lCi0KLVB1dCBydWxlcyBvbiBzZXBhcmF0ZSBsaW5lLgotCi1TaWduZWQtb2Zm LWJ5OiBSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBN YWtlZmlsZS5pbiB8ICAgIDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgot aW5kZXggZDM2Njc5ZS4uMjI5ODNmMSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9N YWtlZmlsZS5pbgotQEAgLTIwLDcgKzIwLDggQEAgT0JKUyA9IHNyYy9lcnJvci5vIHNyYy9jZ2ku byBzcmMvc2Vzc2lvbi5vIHNyYy9iYXNlNjQubyBzcmMvbWQ1Lm8gXAotIAotIFNIT0JKUyA9ICQo T0JKUzoubz0uc2gubykKLSAKLS0uYy5vOiAkKENDKSAkKEZMQUdTKSAtYyAkPAotKyUubzogJS5j Ci0rCSQoQ0MpICQoRkxBR1MpIC1jICQqLmMgLW8gJEAKLSAKLSAlLnNoLm86ICUuYwotIAkkKEND KSAkKEZMQUdTKSAtZlBJQyAtYyAkKi5jIC1vICRACmRpZmYgLS1naXQgYS9wYXRjaGVzL2xpYmNn aS0xLjAvMDAwNC1mcmVlLW1lbW9yeS1hbGxvY2F0ZWQtZm9yLXJlYWRpbmctYW5kLXBhcnNpbmct UE9TVC1kLnBhdGNoIGIvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDQtZnJlZS1tZW1vcnktYWxsb2Nh dGVkLWZvci1yZWFkaW5nLWFuZC1wYXJzaW5nLVBPU1QtZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5iZjZkMWRhCi0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy9s aWJjZ2ktMS4wLzAwMDQtZnJlZS1tZW1vcnktYWxsb2NhdGVkLWZvci1yZWFkaW5nLWFuZC1wYXJz aW5nLVBPU1QtZC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tOiBBbGV4YW5kZXIgRGFobCA8 cG9zdEBsZXNwb2NreS5kZT4KK0RhdGU6IFdlZCwgMjQgT2N0IDIwMTIgMTI6NDg6MzYgKzAyMDAK K1N1YmplY3Q6IFtQQVRDSF0gZnJlZSBtZW1vcnkgYWxsb2NhdGVkIGZvciByZWFkaW5nIGFuZCBw YXJzaW5nIFBPU1QgZGF0YQorIGFmdGVyIGNvcHlpbmcgdG8gc2xpc3QsIHNob3VsZCBmaXggIzIK KworLS0tCisgc3JjL2NnaS5jIHwgICAgNSArKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jZ2kuYyBiL3NyYy9j Z2kuYworaW5kZXggNDYxZWJhMy4uOTk1NjNhZCAxMDA2NDQKKy0tLSBhL3NyYy9jZ2kuYworKysr IGIvc3JjL2NnaS5jCitAQCAtMTYxLDYgKzE2MSw3IEBAIGZvcm12YXJzICpjZ2lfcHJvY2Vzc19m b3JtKCkKKyAJCWNoYXIgKnBvc3RfZGF0YTsKKyAJCWNoYXIgKnRtcF9kYXRhOworIAkJaW50IGNv bnRlbnRfbGVuZ3RoOworKwkJZm9ybXZhcnMgKnJldDsKKyAKKyAJCXRtcF9kYXRhID0gZ2V0ZW52 KCJDT05URU5UX0xFTkdUSCIpOworIAkJaWYgKHRtcF9kYXRhID09IE5VTEwpCitAQCAtMTc1LDcg KzE3Niw5IEBAIGZvcm12YXJzICpjZ2lfcHJvY2Vzc19mb3JtKCkKKyAJCWZyZWFkKHBvc3RfZGF0 YSwgY29udGVudF9sZW5ndGgsIDEsIHN0ZGluKTsKKyAJCXBvc3RfZGF0YVtjb250ZW50X2xlbmd0 aF0gPSAnXDAnOworIAorLQkJcmV0dXJuIHByb2Nlc3NfZGF0YShwb3N0X2RhdGEsICZmb3JtdmFy c19zdGFydCwgJmZvcm12YXJzX2xhc3QsICc9JywgJyYnKTsKKysJCXJldCA9IHByb2Nlc3NfZGF0 YShwb3N0X2RhdGEsICZmb3JtdmFyc19zdGFydCwgJmZvcm12YXJzX2xhc3QsICc9JywgJyYnKTsK KysJCWZyZWUocG9zdF9kYXRhKTsKKysJCXJldHVybiByZXQ7CisgCX0KKyAKKyAJcmV0dXJuIE5V TEw7CmRpZmYgLS1naXQgYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwNS1GSUxFLXJlcXVpcmVzLWlu Y2x1ZGluZy1zdGRpby5wYXRjaCBiL3BhdGNoZXMvbGliY2dpLTEuMC8wMDA1LUZJTEUtcmVxdWly ZXMtaW5jbHVkaW5nLXN0ZGlvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjQ1ODhhOGYKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwNS1G SUxFLXJlcXVpcmVzLWluY2x1ZGluZy1zdGRpby5wYXRjaApAQCAtMCwwICsxLDIxIEBACitGcm9t OiBBbGV4YW5kZXIgRGFobCA8cG9zdEBsZXNwb2NreS5kZT4KK0RhdGU6IFR1ZSwgNiBOb3YgMjAx MiAxNDoyMjo1OCArMDEwMAorU3ViamVjdDogW1BBVENIXSBGSUxFIHJlcXVpcmVzIGluY2x1ZGlu ZyBzdGRpbworCistLS0KKyBzcmMvY2dpLmggfCAgICAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NnaS5oIGIvc3JjL2NnaS5oCitpbmRl eCA3MzE3MzVkLi43Y2Q1YTE3IDEwMDY0NAorLS0tIGEvc3JjL2NnaS5oCisrKysgYi9zcmMvY2dp LmgKK0BAIC0yMSw2ICsyMSw4IEBACisgI2lmbmRlZiBfQ0dJX0gKKyAjZGVmaW5lIF9DR0lfSAkx CisgCisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJu ICJDIiB7CisgI2VuZGlmCmRpZmYgLS1naXQgYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwNS1jbGVh bnVwLWNsZWFuLXRhcmdldC5wYXRjaCBiL3BhdGNoZXMvbGliY2dpLTEuMC8wMDA1LWNsZWFudXAt Y2xlYW4tdGFyZ2V0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTRkYzZk Li4wMDAwMDAwCi0tLSBhL3BhdGNoZXMvbGliY2dpLTEuMC8wMDA1LWNsZWFudXAtY2xlYW4tdGFy Z2V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbTogUm9iZXJ0IFNj aHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogRnJpLCAyNiBPY3QgMjAx MiAyMTo0NjoyMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBjbGVhbnVwIGNsZWFuIHRhcmdldAot Ci1SZW1vdmUgYWxsIGdlbmVyYXRlZCBmaWxlcy4gV2hpbGUgYmVpbmcgdGhlcmUsIGZpeCBhIHR5 cG8uCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJlbEBwZW5ndXRy b25peC5kZT4KLS0tLQotIE1ha2VmaWxlLmluIHwgICAgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5p biBiL01ha2VmaWxlLmluCi1pbmRleCAyMjk4M2YxLi42OGEwZmE2IDEwMDY0NAotLS0tIGEvTWFr ZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNzUsOCArNzUsOSBAQCBzcmMvZ2VuZXJh bC5vOiBzcmMvZ2VuZXJhbC5jCi0gc3JjL2xpc3Qubzogc3JjL2xpc3QuYwotIAotIGNsZWFuOgot LQlmaW5kIHNyYy8gLW5hbWUgKi4qbyAtZXhlYyBybSAtZiB7fSBcOwotKwlmaW5kIHNyYy8gLW5h bWUgKi5vIC1leGVjIHJtIC1mIHt9IFw7Ci0gCWZpbmQgc3JjLyAtbmFtZSAqLmEgLWV4ZWMgcm0g LWYge30gXDsKLSsJZmluZCBzcmMvIC1uYW1lICouc28gLWV4ZWMgcm0gLWYge30gXDsKLSAKLSB1 bmluc3RhbGw6IGNsZWFuCi0gCXJtIC1mICQoTElCRElSKS9saWJjZ2kuKgpkaWZmIC0tZ2l0IGEv cGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDYtY29weS1wYXN0LWVycm9yLWluLWhleHRhYmxlLnBhdGNo IGIvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDYtY29weS1wYXN0LWVycm9yLWluLWhleHRhYmxlLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzMwYmZiLi4wMDAwMDAwCi0tLSBh L3BhdGNoZXMvbGliY2dpLTEuMC8wMDA2LWNvcHktcGFzdC1lcnJvci1pbi1oZXh0YWJsZS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb206IFJvYmVydCBTY2h3ZWJlbCA8 ci5zY2h3ZWJlbEBwZW5ndXRyb25peC5kZT4KLURhdGU6IEZyaSwgMjYgT2N0IDIwMTIgMjE6NDY6 MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29weS1wYXN0IGVycm9yIGluIGhleHRhYmxlCi0K LUxvb2tzIGxpa2UgYSBjb3B5LXBhc3RlIGVycm9yLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQg U2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBzcmMvY2dpLmMgfCAg ICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0K LWRpZmYgLS1naXQgYS9zcmMvY2dpLmMgYi9zcmMvY2dpLmMKLWluZGV4IGZiMzc0NDUuLmVjYTlh YzIgMTAwNjQ0Ci0tLS0gYS9zcmMvY2dpLmMKLSsrKyBiL3NyYy9jZ2kuYwotQEAgLTMzNiw3ICsz MzYsNyBAQCB2b2lkIGluaXRfaGV4X3RhYmxlKCkKLSAJaGV4dGFibGVbJ2InXSA9IDExOwotIAlo ZXh0YWJsZVsnYyddID0gMTI7Ci0gCWhleHRhYmxlWydkJ10gPSAxMzsKLS0JaGV4dGFibGVbJ2Un XSA9IDEzOwotKwloZXh0YWJsZVsnZSddID0gMTQ7Ci0gCWhleHRhYmxlWydmJ10gPSAxNTsKLSAJ aGV4dGFibGVbJ0EnXSA9IDEwOwotIAloZXh0YWJsZVsnQiddID0gMTE7CmRpZmYgLS1naXQgYS9w YXRjaGVzL2xpYmNnaS0xLjAvMDAwNy13cm9uZy12YXJpYWJsZS5wYXRjaCBiL3BhdGNoZXMvbGli Y2dpLTEuMC8wMDA3LXdyb25nLXZhcmlhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBjNmY0NmU2Li4wMDAwMDAwCi0tLSBhL3BhdGNoZXMvbGliY2dpLTEuMC8wMDA3LXdy b25nLXZhcmlhYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotRnJvbTog Um9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogRnJpLCAy NiBPY3QgMjAxMiAyMTo0NjoyMSArMDIwMAotU3ViamVjdDogW1BBVENIXSB3cm9uZyB2YXJpYWJs ZQotCi1XZSB1c2UgYSB3cm9uZyB2YXJpYWJsZSBoZXJlLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2Jl cnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBzcmMvc3RyaW5n LmMgfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc3RyaW5nLmMgYi9zcmMvc3RyaW5nLmMKLWluZGV4IDJj ZmNiZTIuLjNkYzQzN2YgMTAwNjQ0Ci0tLS0gYS9zcmMvc3RyaW5nLmMKLSsrKyBiL3NyYy9zdHJp bmcuYwotQEAgLTU4NCw3ICs1ODQsNyBAQCBjaGFyICptYWtlX3N0cmluZyhjaGFyICpzLCAuLi4p Ci0gCi0gCXZhX3N0YXJ0KHB0ciwgcyk7Ci0gCi0tCXZhX2NvcHkoYmtwLCBzdHIpOwotKwl2YV9j b3B5KGJrcCwgcHRyKTsKLSAJbGVuID0gc3RybGVuKHMpOwotIAotIAl3aGlsZSAoKnN0cikgewpk aWZmIC0tZ2l0IGEvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDgtdXNlLWluc3RhbGwtaW5zdGVhZC1v Zi1jcC5wYXRjaCBiL3BhdGNoZXMvbGliY2dpLTEuMC8wMDA4LXVzZS1pbnN0YWxsLWluc3RlYWQt b2YtY3AucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMTA5MGIuLjAwMDAw MDAKLS0tIGEvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDgtdXNlLWluc3RhbGwtaW5zdGVhZC1vZi1j cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb206IFJvYmVydCBTY2h3 ZWJlbCA8ci5zY2h3ZWJlbEBwZW5ndXRyb25peC5kZT4KLURhdGU6IEZyaSwgMjYgT2N0IDIwMTIg MjE6NDY6MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdXNlIGluc3RhbGwgaW5zdGVhZCBvZiBj cAotCi1Vc2UgaW5zdGFsbCwgbm90IGNwLiBJdCBpcyBhYmxlIHRvIGNyZWF0ZSBkaXJlY3Rvcmll cyBhbmQgYXBwbHkgcHJvcGVyCi1wZXJtaXNzaW9ucyB0byB0aGVtLgotCi1TaWduZWQtb2ZmLWJ5 OiBSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBNYWtl ZmlsZS5pbiB8ICAgMTcgKysrKysrKystLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNl cnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9N YWtlZmlsZS5pbgotaW5kZXggNjhhMGZhNi4uNDQ5MWI2OCAxMDA2NDQKLS0tLSBhL01ha2VmaWxl LmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTEsNiArMSw2IEBACi0tSU5TVEFMTCA9IEBJTlNU QUxMQAotLUlOU1RBTExfUFJPR1JBTSA9IEBJTlNUQUxMX1BST0dSQU1ACi0tSU5TVEFMTF9EQVRB ID0gQElOU1RBTExfREFUQUAKLStJTlNUQUxMID0gQElOU1RBTExAIC1ECi0rSU5TVEFMTF9QUk9H UkFNID0gQElOU1RBTExfUFJPR1JBTUAgLUQKLStJTlNUQUxMX0RBVEEgPSBASU5TVEFMTF9EQVRB QCAtRAotIAotIHByZWZpeCA9IEBwcmVmaXhACi0gZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhA Ci1AQCAtNDksNyArNDksNyBAQCBhbGw6IHNyYy9saWJjZ2kuc28gc3JjL2xpYmNnaS5hCi0gCi0g Ci0gc2hhcmVkOiBzcmMvbGliY2dpLnNvCi0tCWNwIHNyYy9saWJjZ2kuc28gJChERVNURElSKSQo TElCRElSKQotKwkkKElOU1RBTEwpIC1tIDA2NDQgc3JjL2xpYmNnaS5zbyAkKERFU1RESVIpJChM SUJESVIpCi0gCi0gc3JjL2xpYmNnaS5hOiAkKE9CSlMpCi0gCSQoQVIpIHJjIHNyYy9saWJjZ2ku YSAkKE9CSlMpCi1AQCAtNTgsMTEgKzU4LDEwIEBAIHNyYy9saWJjZ2kuc286ICQoU0hPQkpTKQot IAkkKENDKSAkKFNIQVJFRE9QVCkgLW8gc3JjL2xpYmNnaS5zbyAkKFNIT0JKUykgJChFWFRSQV9M SUJTKQotIAotIGluc3RhbGw6Ci0tCWNwIHNyYy9saWJjZ2kuYSAkKERFU1RESVIpJChMSUJESVIp Ci0tCWNwIHNyYy9saWJjZ2kuc28gJChERVNURElSKSQoTElCRElSKQotLQljcCBzcmMvY2dpLmgg JChERVNURElSKSQoSU5DRElSKQotLQljcCBzcmMvc2Vzc2lvbi5oICQoREVTVERJUikkKElOQ0RJ UikKLS0KLSsJJChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9saWJjZ2kuYSAkKERFU1RESVIpLyQoTElC RElSKS9saWJjZ2kuYQotKwkkKElOU1RBTEwpIC1tIDA2NDQgc3JjL2xpYmNnaS5zbyAkKERFU1RE SVIpLyQoTElCRElSKS9saWJjZ2kuc28KLSsJJChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9jZ2kuaCAk KERFU1RESVIpLyQoSU5DRElSKS9jZ2kuaAotKwkkKElOU1RBTEwpIC1tIDA2NDQgc3JjL3Nlc3Np b24uaCAkKERFU1RESVIpLyQoSU5DRElSKS9zZXNzaW9uLmgKLSAKLSBzcmMvZXJyb3Iubzogc3Jj L2Vycm9yLmMgc3JjL2Vycm9yLmgKLSBzcmMvY2dpLm86IHNyYy9jZ2kuYyBzcmMvY2dpLmgKZGlm ZiAtLWdpdCBhL3BhdGNoZXMvbGliY2dpLTEuMC8wMDA5LXVzZS1zdGFuZGFyZC1kaXJlY3Rvcnkt bmFtZXMucGF0Y2ggYi9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwOS11c2Utc3RhbmRhcmQtZGlyZWN0 b3J5LW5hbWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODA0N2FjLi4w MDAwMDAwCi0tLSBhL3BhdGNoZXMvbGliY2dpLTEuMC8wMDA5LXVzZS1zdGFuZGFyZC1kaXJlY3Rv cnktbmFtZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1Gcm9tOiBSb2Jl cnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOiBGcmksIDI2IE9j dCAyMDEyIDIxOjQ2OjIxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVzZSBzdGFuZGFyZCBkaXJl Y3RvcnkgbmFtZXMKLQotSW4gdXN1YWwgbWFrZWZpbGVzLCBkaXJlY3RvcnkgbmFtZXMgYXJlIHdy aXR0ZW4gaW4gbG93ZXIgY2FzZS4KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFNjaHdlYmVsIDxy LnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gTWFrZWZpbGUuaW4gfCAgIDM2ICsrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNl cnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIv TWFrZWZpbGUuaW4KLWluZGV4IDQ0OTFiNjguLmJkMDA0MTMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmls ZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC02LDkgKzYsOSBAQCBwcmVmaXggPSBAcHJlZml4 QAotIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotIAotIFNIQVJFRE9QVCA9IC1zaGFyZWQg LXNoYXJlZCAtZlBJQyAtV2wsLXNvbmFtZSxsaWJjZ2kuc28uMAotLUxJQkRJUiA9ICQocHJlZml4 KS9saWIKLS1JTkNESVIgPSAkKHByZWZpeCkvaW5jbHVkZS9saWJjZ2kKLS1NQU5ESVIJPSAkKHBy ZWZpeCkvbWFuL21hbjMKLStsaWJkaXIgPSAkKHByZWZpeCkvbGliCi0raW5jZGlyID0gJChwcmVm aXgpL2luY2x1ZGUvbGliY2dpCi0rbWFuZGlyCT0gJChwcmVmaXgpL21hbi9tYW4zCi0gU0hFTEwg PSAvYmluL3NoCi0gRVhUUkFfTElCUyA9IAotIAotQEAgLTQ5LDcgKzQ5LDcgQEAgYWxsOiBzcmMv bGliY2dpLnNvIHNyYy9saWJjZ2kuYQotIAotIAotIHNoYXJlZDogc3JjL2xpYmNnaS5zbwotLQkk KElOU1RBTEwpIC1tIDA2NDQgc3JjL2xpYmNnaS5zbyAkKERFU1RESVIpJChMSUJESVIpCi0rCSQo SU5TVEFMTCkgLW0gMDY0NCBzcmMvbGliY2dpLnNvICQoREVTVERJUikkKGxpYmRpcikKLSAKLSBz cmMvbGliY2dpLmE6ICQoT0JKUykKLSAJJChBUikgcmMgc3JjL2xpYmNnaS5hICQoT0JKUykKLUBA IC01OCwxMCArNTgsMTAgQEAgc3JjL2xpYmNnaS5zbzogJChTSE9CSlMpCi0gCSQoQ0MpICQoU0hB UkVET1BUKSAtbyBzcmMvbGliY2dpLnNvICQoU0hPQkpTKSAkKEVYVFJBX0xJQlMpCi0gCi0gaW5z dGFsbDoKLS0JJChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9saWJjZ2kuYSAkKERFU1RESVIpLyQoTElC RElSKS9saWJjZ2kuYQotLQkkKElOU1RBTEwpIC1tIDA2NDQgc3JjL2xpYmNnaS5zbyAkKERFU1RE SVIpLyQoTElCRElSKS9saWJjZ2kuc28KLS0JJChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9jZ2kuaCAk KERFU1RESVIpLyQoSU5DRElSKS9jZ2kuaAotLQkkKElOU1RBTEwpIC1tIDA2NDQgc3JjL3Nlc3Np b24uaCAkKERFU1RESVIpLyQoSU5DRElSKS9zZXNzaW9uLmgKLSsJJChJTlNUQUxMKSAtbSAwNjQ0 IHNyYy9saWJjZ2kuYSAkKERFU1RESVIpLyQobGliZGlyKS9saWJjZ2kuYQotKwkkKElOU1RBTEwp IC1tIDA2NDQgc3JjL2xpYmNnaS5zbyAkKERFU1RESVIpLyQobGliZGlyKS9saWJjZ2kuc28KLSsJ JChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9jZ2kuaCAkKERFU1RESVIpLyQoaW5jZGlyKS9jZ2kuaAot KwkkKElOU1RBTEwpIC1tIDA2NDQgc3JjL3Nlc3Npb24uaCAkKERFU1RESVIpLyQoaW5jZGlyKS9z ZXNzaW9uLmgKLSAKLSBzcmMvZXJyb3Iubzogc3JjL2Vycm9yLmMgc3JjL2Vycm9yLmgKLSBzcmMv Y2dpLm86IHNyYy9jZ2kuYyBzcmMvY2dpLmgKLUBAIC03OSwxNiArNzksMTYgQEAgY2xlYW46Ci0g CWZpbmQgc3JjLyAtbmFtZSAqLnNvIC1leGVjIHJtIC1mIHt9IFw7Ci0gCi0gdW5pbnN0YWxsOiBj bGVhbgotLQlybSAtZiAkKExJQkRJUikvbGliY2dpLioKLS0Jcm0gLWYgJChJTkNESVIpL2NnaS5o Ci0tCXJtIC1mICQoSU5DRElSKS9zZXNzaW9uLmgKLS0Jcm0gLWYgJChNQU5ESVIpL2xpYmNnaSoK LSsJcm0gLWYgJChsaWJkaXIpL2xpYmNnaS4qCi0rCXJtIC1mICQoaW5jZGlyKS9jZ2kuaAotKwly bSAtZiAkKGluY2Rpcikvc2Vzc2lvbi5oCi0rCXJtIC1mICQobWFuZGlyKS9saWJjZ2kqCi0gCi0g aW5zdGFsbF9tYW46Ci0tCWNwIGRvYy9tYW4vbWFuMy9saWJjZ2lfYmFzZTY0LjMgJChERVNURElS KSQoTUFORElSKQotLQljcCBkb2MvbWFuL21hbjMvbGliY2dpX2NnaS4zICQoREVTVERJUikkKE1B TkRJUikKLS0JY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9nZW5lcmFsLjMgJChERVNURElSKSQoTUFO RElSKQotLQljcCBkb2MvbWFuL21hbjMvbGliY2dpX3N0cmluZy4zICQoREVTVERJUikkKE1BTkRJ UikKLS0JY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9zZXNzaW9uLjMgJChERVNURElSKSQoTUFORElS KQotLQljcCBkb2MvbWFuL21hbjMvbGliY2dpX2Nvb2tpZS4zICQoREVTVERJUikkKE1BTkRJUikK LSsJY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9iYXNlNjQuMyAkKERFU1RESVIpJChtYW5kaXIpCi0r CWNwIGRvYy9tYW4vbWFuMy9saWJjZ2lfY2dpLjMgJChERVNURElSKSQobWFuZGlyKQotKwljcCBk b2MvbWFuL21hbjMvbGliY2dpX2dlbmVyYWwuMyAkKERFU1RESVIpJChtYW5kaXIpCi0rCWNwIGRv Yy9tYW4vbWFuMy9saWJjZ2lfc3RyaW5nLjMgJChERVNURElSKSQobWFuZGlyKQotKwljcCBkb2Mv bWFuL21hbjMvbGliY2dpX3Nlc3Npb24uMyAkKERFU1RESVIpJChtYW5kaXIpCi0rCWNwIGRvYy9t YW4vbWFuMy9saWJjZ2lfY29va2llLjMgJChERVNURElSKSQobWFuZGlyKQotIApkaWZmIC0tZ2l0 IGEvcGF0Y2hlcy9saWJjZ2ktMS4wLzAyMDAtZml4LXR5cG8ucGF0Y2ggYi9wYXRjaGVzL2xpYmNn aS0xLjAvMDIwMC1maXgtdHlwby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4xYWQxZDdiCi0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy9saWJjZ2ktMS4wLzAyMDAt Zml4LXR5cG8ucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorRnJvbTogQWxleGFuZGVyIERhaGwgPHBv c3RAbGVzcG9ja3kuZGU+CitEYXRlOiBGcmksIDIxIE1hciAyMDE0IDEzOjU4OjA4ICswMTAwCitT dWJqZWN0OiBbUEFUQ0hdIGZpeCB0eXBvCisKKy0tLQorIE1ha2VmaWxlLmluIHwgICAgMiArLQor IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0t Z2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggMjFlNGNlOS4uYmQwMDQxMyAx MDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTUsNyArNSw3 IEBAIElOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFAIC1ECisgcHJlZml4ID0gQHByZWZpeEAK KyBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKKyAKKy1TSEFSRURPUFQgPSAtc2hhcmVkIC1z aGFyZWQgLWZQSUMsLVdsLC1zb25hbWUsbGliY2dpLnNvLjAKKytTSEFSRURPUFQgPSAtc2hhcmVk IC1zaGFyZWQgLWZQSUMgLVdsLC1zb25hbWUsbGliY2dpLnNvLjAKKyBsaWJkaXIgPSAkKHByZWZp eCkvbGliCisgaW5jZGlyID0gJChwcmVmaXgpL2luY2x1ZGUvbGliY2dpCisgbWFuZGlyCT0gJChw cmVmaXgpL21hbi9tYW4zCmRpZmYgLS1naXQgYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAxMC1tYWtl LXRoZS1saWJyYXJ5LWZpbGVuYW1lLW1hdGNoLWl0cy1zb25hbWUucGF0Y2ggYi9wYXRjaGVzL2xp YmNnaS0xLjAvMDIwMS1tYWtlLXRoZS1saWJyYXJ5LWZpbGVuYW1lLW1hdGNoLWl0cy1zb25hbWUu cGF0Y2gKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gcGF0Y2hlcy9saWJjZ2ktMS4w LzAwMTAtbWFrZS10aGUtbGlicmFyeS1maWxlbmFtZS1tYXRjaC1pdHMtc29uYW1lLnBhdGNoCnJl bmFtZSB0byBwYXRjaGVzL2xpYmNnaS0xLjAvMDIwMS1tYWtlLXRoZS1saWJyYXJ5LWZpbGVuYW1l LW1hdGNoLWl0cy1zb25hbWUucGF0Y2gKaW5kZXggMzlhMTk5Zi4uMDhhN2VjNyAxMDA2NDQKLS0t IGEvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMTAtbWFrZS10aGUtbGlicmFyeS1maWxlbmFtZS1tYXRj aC1pdHMtc29uYW1lLnBhdGNoCisrKyBiL3BhdGNoZXMvbGliY2dpLTEuMC8wMjAxLW1ha2UtdGhl LWxpYnJhcnktZmlsZW5hbWUtbWF0Y2gtaXRzLXNvbmFtZS5wYXRjaApAQCAtMyw2ICszLDcgQEAg RGF0ZTogRnJpLCAyNiBPY3QgMjAxMiAyMjowMzoxMSArMDIwMAogU3ViamVjdDogW1BBVENIXSBt YWtlIHRoZSBsaWJyYXJ5IGZpbGVuYW1lIG1hdGNoIGl0cyBzb25hbWUKIAogU2lnbmVkLW9mZi1i eTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+CitTaWduZWQtb2Zm LWJ5OiBBbGV4YW5kZXIgRGFobCA8cG9zdEBsZXNwb2NreS5kZT4KIC0tLQogIE1ha2VmaWxlLmlu ICB8ICAgIDYgKysrKy0tCiAgY29uZmlndXJlLmluIHwgICAgMSArCmRpZmYgLS1naXQgYS9wYXRj aGVzL2xpYmNnaS0xLjAvMDIwMi1maXgtdW5lc2NhcGUtYnktb3B0aW1pemluZy1oZXh0YWJsZS1p bml0LWFuZC1hY2Nlc3MucGF0Y2ggYi9wYXRjaGVzL2xpYmNnaS0xLjAvMDIwMi1maXgtdW5lc2Nh cGUtYnktb3B0aW1pemluZy1oZXh0YWJsZS1pbml0LWFuZC1hY2Nlc3MucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdjMWM0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bh dGNoZXMvbGliY2dpLTEuMC8wMjAyLWZpeC11bmVzY2FwZS1ieS1vcHRpbWl6aW5nLWhleHRhYmxl LWluaXQtYW5kLWFjY2Vzcy5wYXRjaApAQCAtMCwwICsxLDkzIEBACitGcm9tOiBBbGV4YW5kZXIg RGFobCA8cG9zdEBsZXNwb2NreS5kZT4KK0RhdGU6IFR1ZSwgMTggTWFyIDIwMTQgMTE6Mjg6NDkg KzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IHVuZXNjYXBlIGJ5IG9wdGltaXppbmcgaGV4dGFi bGUgaW5pdCBhbmQgYWNjZXNzCisKK2ludCBzaXplIGlzIHJlZHVjZWQgdG8gMSBieXRlLCB0YWJs ZSBsZW5ndGggaXMgdHJ1bmNhdGVkIHRvIG9ubHkKK2FjY2Vzc2VkIGJ5dGVzLCBhbmQgYWNjZXNz IGlzIGxpbWl0ZWQgdG8gb25seSB0aGUgaGV4IGRpZ2l0IGNoYXJhY3RlcnMKK2J5IHJlcGxhY2lu ZyBpc2FsbnVtKCkgd2l0aCBpc3hkaWdpdCgpIGluIGNnaV91bmVzY2FwZV9zcGVjaWFsX2NoYXJz KCkuCitUaGlzIGFjdHVhbGx5IGZpeGVzIGEgYnVnIGluIGRlY29kaW5nIGlmIG9uZSBvZiB0aGUg aGV4IGRpZ2l0cyBhZnRlciB0aGUKKyclJyB3YXMgYW5vdGhlciBjaGFyYWN0ZXIgdGhhbiBhIHRv IGYhCistLS0KKyBzcmMvY2dpLmMgfCAgIDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9u cygrKSwgMjcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY2dpLmMgYi9zcmMvY2dp LmMKK2luZGV4IDk5NTYzYWQuLjVkOWZmYzAgMTAwNjQ0CistLS0gYS9zcmMvY2dpLmMKKysrKyBi L3NyYy9jZ2kuYworQEAgLTI3LDkgKzI3LDcgQEAKKyAjaW5jbHVkZSAiY2dpLmgiCisgI2luY2x1 ZGUgImVycm9yLmgiCisgCistLy8gV2hvdy4uLiBpZiBoZXh0YWJsZSBhcnJheSBoYXMgYSBsZW5n dGggbGVzcyB0aGFuIDI1NiwKKy0vLyB0aGUgY2dpX3VuZXNjYXBlX3NwZWNpYWxfY2hhcnMgZnVu Y3Rpb24gd2lsbCBmYWlsLiAgQW5kIEkgZG9uJ3Qga25vdyB3aHkKKy1zdGF0aWMgaW50IGhleHRh YmxlWzI1Nl07Cisrc3RhdGljIHVuc2lnbmVkIGNoYXIgaGV4dGFibGVbJ2YnKzFdOworIAorIGlu dCBoZWFkZXJzX2luaXRpYWxpemVkID0gMDsKKyAKK0BAIC0zMjYsMjkgKzMyNCwzMiBAQCB2b2lk IGNnaV9yZWRpcmVjdChjaGFyICp1cmwpCisgLy8gT3JpZ2luYWwgaWRlYSBmcm9tIGNnaWMgbGli cmFyeQorIHZvaWQgaW5pdF9oZXhfdGFibGUoKQorIHsKKy0JbWVtc2V0KGhleHRhYmxlLCAwLCAy NTUpOworLQorLQloZXh0YWJsZVsnMSddID0gMTsKKy0JaGV4dGFibGVbJzInXSA9IDI7CistCWhl eHRhYmxlWyczJ10gPSAzOworLQloZXh0YWJsZVsnNCddID0gNDsKKy0JaGV4dGFibGVbJzUnXSA9 IDU7CistCWhleHRhYmxlWyc2J10gPSA2OworLQloZXh0YWJsZVsnNyddID0gNzsKKy0JaGV4dGFi bGVbJzgnXSA9IDg7CistCWhleHRhYmxlWyc5J10gPSA5OworLQloZXh0YWJsZVsnYSddID0gMTA7 CistCWhleHRhYmxlWydiJ10gPSAxMTsKKy0JaGV4dGFibGVbJ2MnXSA9IDEyOworLQloZXh0YWJs ZVsnZCddID0gMTM7CistCWhleHRhYmxlWydlJ10gPSAxNDsKKy0JaGV4dGFibGVbJ2YnXSA9IDE1 OworLQloZXh0YWJsZVsnQSddID0gMTA7CistCWhleHRhYmxlWydCJ10gPSAxMTsKKy0JaGV4dGFi bGVbJ0MnXSA9IDEyOworLQloZXh0YWJsZVsnRCddID0gMTM7CistCWhleHRhYmxlWydFJ10gPSAx NDsKKy0JaGV4dGFibGVbJ0YnXSA9IDE1OworKwltZW1zZXQoaGV4dGFibGUsIDAsICdmJysxKTsK KysKKysJaGV4dGFibGVbJzAnXSA9IDB4MDsJLyogNDggKi8KKysJaGV4dGFibGVbJzEnXSA9IDB4 MTsJLyogNDkgKi8KKysJaGV4dGFibGVbJzInXSA9IDB4MjsJLyogNTAgKi8KKysJaGV4dGFibGVb JzMnXSA9IDB4MzsJLyogNTEgKi8KKysJaGV4dGFibGVbJzQnXSA9IDB4NDsJLyogNTIgKi8KKysJ aGV4dGFibGVbJzUnXSA9IDB4NTsJLyogNTMgKi8KKysJaGV4dGFibGVbJzYnXSA9IDB4NjsJLyog NTQgKi8KKysJaGV4dGFibGVbJzcnXSA9IDB4NzsJLyogNTUgKi8KKysJaGV4dGFibGVbJzgnXSA9 IDB4ODsJLyogNTYgKi8KKysJaGV4dGFibGVbJzknXSA9IDB4OTsJLyogNTcgKi8KKysKKysJaGV4 dGFibGVbJ0EnXSA9IDB4QTsJLyogNjUgKi8KKysJaGV4dGFibGVbJ0InXSA9IDB4QjsJLyogNjYg Ki8KKysJaGV4dGFibGVbJ0MnXSA9IDB4QzsJLyogNjcgKi8KKysJaGV4dGFibGVbJ0QnXSA9IDB4 RDsJLyogNjggKi8KKysJaGV4dGFibGVbJ0UnXSA9IDB4RTsJLyogNjkgKi8KKysJaGV4dGFibGVb J0YnXSA9IDB4RjsJLyogNzAgKi8KKysKKysJaGV4dGFibGVbJ2EnXSA9IDB4YTsJLyogOTcgKi8K KysJaGV4dGFibGVbJ2InXSA9IDB4YjsJLyogOTggKi8KKysJaGV4dGFibGVbJ2MnXSA9IDB4YzsJ LyogOTkgKi8KKysJaGV4dGFibGVbJ2QnXSA9IDB4ZDsJLyogMTAwICovCisrCWhleHRhYmxlWydl J10gPSAweGU7CS8qIDEwMSAqLworKwloZXh0YWJsZVsnZiddID0gMHhmOwkvKiAxMDIgKi8KKyB9 CisgCisgLyoqCitAQCAtNDExLDcgKzQxMiw3IEBAIGNoYXIgKmNnaV91bmVzY2FwZV9zcGVjaWFs X2NoYXJzKGNoYXIgKnN0cikKKyAJCS8vIGhleGEgY29kZS4gQ29udmVydGluZyBhIGhleGFkZWNp bWFsIGNvZGUgdG8gdGhlaXIgZGVjaW1hbCBpcyBlYXN5OgorIAkJLy8gVGhlIGZpcnN0IGNoYXJh Y3RlciBuZWVkcyB0byBiZSBtdWx0aXBsaWVkIGJ5IDE2ICggPDwgNCApLCBhbmQgdGhlIGFub3Ro ZXIKKyAJCS8vIG9uZSB3ZSBqdXN0IGdldCB0aGUgdmFsdWUgZnJvbSBoZXh0YWJsZSB2YXJpYWJs ZQorLQkJaWYgKChzdHJbaV0gPT0gJyUnKSAmJiBpc2FsbnVtKHN0cltpKzFdKSAmJiBpc2FsbnVt KHN0cltpKzJdKSkgeworKwkJaWYgKChzdHJbaV0gPT0gJyUnKSAmJiBpc3hkaWdpdChzdHJbaSsx XSkgJiYgaXN4ZGlnaXQoc3RyW2krMl0pKSB7CisgCQkJdG1wW3Bvc10gPSAoaGV4dGFibGVbKHVu c2lnbmVkIGNoYXIpIHN0cltpKzFdXSA8PCA0KSArIGhleHRhYmxlWyh1bnNpZ25lZCBjaGFyKSBz dHJbaSsyXV07CisgCQkJaSArPSAyOworIAkJfQpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9saWJjZ2kt MS4wL3NlcmllcyBiL3BhdGNoZXMvbGliY2dpLTEuMC9zZXJpZXMKaW5kZXggNTI5ZjllMS4uYzgx MzBkYSAxMDA2NDQKLS0tIGEvcGF0Y2hlcy9saWJjZ2ktMS4wL3NlcmllcworKysgYi9wYXRjaGVz L2xpYmNnaS0xLjAvc2VyaWVzCkBAIC0xLDEzICsxLDEzIEBACiAjIGdlbmVyYXRlZCBieSBnaXQt cHR4LXBhdGNoZXMKICN0YWc6YmFzZSAtLXN0YXJ0LW51bWJlciAxCi0wMDAxLWluc3RhbGwtaW50 by1zZXBhcmF0ZS1kaXJlY3RvcnkucGF0Y2gKLTAwMDItY2xlYW51cC1jb21waWxlci1mbGFncy1m b3Itc2hhcmVkLWxpYi5wYXRjaAotMDAwMy1kZXN0ZGlyLXN1cHBvcnQucGF0Y2gKLTAwMDQtY2xl YW51cC1idWlsZC1saW5lLnBhdGNoCi0wMDA1LWNsZWFudXAtY2xlYW4tdGFyZ2V0LnBhdGNoCi0w MDA2LWNvcHktcGFzdC1lcnJvci1pbi1oZXh0YWJsZS5wYXRjaAotMDAwNy13cm9uZy12YXJpYWJs ZS5wYXRjaAotMDAwOC11c2UtaW5zdGFsbC1pbnN0ZWFkLW9mLWNwLnBhdGNoCi0wMDA5LXVzZS1z dGFuZGFyZC1kaXJlY3RvcnktbmFtZXMucGF0Y2gKLTAwMTAtbWFrZS10aGUtbGlicmFyeS1maWxl bmFtZS1tYXRjaC1pdHMtc29uYW1lLnBhdGNoCi0jIDQwYzhlNTBkZjJhOGQ4ZGNjYjQxMThlNTMy MzMxMWQyICAtIGdpdC1wdHgtcGF0Y2hlcyBtYWdpYworI3RhZzp1cHN0cmVhbSAtLXN0YXJ0LW51 bWJlciAxCiswMDAxLWFwcGx5LXBhdGNoZXMtZnJvbS1wdHhkaXN0LTktcGF0Y2hlcy1pbi0xLWNv bW1pdC5wYXRjaAorMDAwMi1yZW1vdmUtdHJhaWxpbmctd2hpdGVzcGFjZS1teS1lZGl0b3Itd291 bGQtZG8tdGhpcy1hLnBhdGNoCiswMDAzLWZyZWUtbWVtb3J5LWFsbG9jYXRlZC1ieS11bmVzY2Fw ZV9zcGVjaWFsX2NoYXJzLWFmdGUucGF0Y2gKKzAwMDQtZnJlZS1tZW1vcnktYWxsb2NhdGVkLWZv ci1yZWFkaW5nLWFuZC1wYXJzaW5nLVBPU1QtZC5wYXRjaAorMDAwNS1GSUxFLXJlcXVpcmVzLWlu Y2x1ZGluZy1zdGRpby5wYXRjaAorI3RhZzpwdHggLS1zdGFydC1udW1iZXIgMjAwCiswMjAwLWZp eC10eXBvLnBhdGNoCiswMjAxLW1ha2UtdGhlLWxpYnJhcnktZmlsZW5hbWUtbWF0Y2gtaXRzLXNv bmFtZS5wYXRjaAorMDIwMi1maXgtdW5lc2NhcGUtYnktb3B0aW1pemluZy1oZXh0YWJsZS1pbml0 LWFuZC1hY2Nlc3MucGF0Y2gKKyMgNDE5MDA5M2U1ZmYwMzgyMGZiNzExYzI0NWIyMTI4NTggIC0g Z2l0LXB0eC1wYXRjaGVzIG1hZ2ljCi0tIAoxLjcuMTAuNAoKCi0tIApwdHhkaXN0IG1haWxpbmcg bGlzdApwdHhkaXN0QHBlbmd1dHJvbml4LmRlCg==