From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rename "set auto-load" patchset variable $ddir to $datadir. Date: Sat, 27 Jun 2026 23:55:39 GMT Message-ID: <178260453917.1.6680215841336805355.rpms-gdb-43d8d62a0303@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 43d8d62a0303c21cbc3f578085e31a50099fa045 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogNDNkOGQ2MmEwMzAzYzIxY2JjM2Y1NzgwODVl MzFhNTAwOTlmYTA0NQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxMi0wNS0xNFQxNTo1NDo0NCswMjowMApTdGF0cyAgOiArNzE0 NS8tNjM3MSBpbiA1MSBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qu b3JnL3JwbXMvZ2RiL2MvNDNkOGQ2MmEwMzAzYzIxY2JjM2Y1NzgwODVlMzFhNTAwOTlmYTA0NT9i cmFuY2g9Z2RiLTE3LjItcmViYXNlLWY0NAoKTG9nOgpSZW5hbWUgInNldCBhdXRvLWxvYWQiIHBh dGNoc2V0IHZhcmlhYmxlICRkZGlyIHRvICRkYXRhZGlyLgoKLS0tCmRpZmYgLS1naXQgYS9nZGIt YXV0b2xvYWQtMDFvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTAxb2YyMi5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMyYjIxZi4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xv YWQtMDFvZjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMS9tc2cwMDIwMi5odG1sCi0KLSMjIyBzcmMv Z2RiL0NoYW5nZUxvZwkyMDEyLzAxLzI0IDE5OjEyOjMxCTEuMTM3NzEKLSMjIyBzcmMvZ2RiL0No YW5nZUxvZwkyMDEyLzAxLzI0IDIwOjU2OjMzCTEuMTM3NzIKLSMjIC0xLDMgKzEsMTIgQEAKLSsy MDEyLTAxLTI0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0r Ci0rCUNvZGUgY2xlYW51cC4KLSsJKiBjbGkvY2xpLWNtZHMuYyAoc291cmNlX3NjcmlwdF9mcm9t X3N0cmVhbSk6IE5ldmVyIGZjbG9zZSBTVFJFQU0uCi0rCVVwZGF0ZSB0aGUgZnVuY3Rpb24gY29t bWVudCBmb3IgaXQuCi0rCShzb3VyY2Vfc2NyaXB0X3dpdGhfc2VhcmNoKTogQ2FsbCBtYWtlX2Ns ZWFudXBfZmNsb3NlIGZvciBTVFJFQU0uCi0rCSogY2xpL2NsaS1zY3JpcHQuYyAoc2NyaXB0X2Zy b21fZmlsZSk6IERvIG5vdCBjYWxsIG1ha2VfY2xlYW51cF9mY2xvc2UKLSsJZm9yIFNUUkVBTS4K LSsKLSAyMDEyLTAxLTI0ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgotIAotIAkq IGJyZWFrcG9pbnQuYyAoYnBzdGF0X3N0b3Bfc3RhdHVzKTogTW92aW5nIGNsZWFyaW5nIHByaW50 X2l0Ci0tLS0gc3JjL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLzAxLzIzIDE2OjM3OjAzCTEuMTIz Ci0rKysgc3JjL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLzAxLzI0IDIwOjU2OjMzCTEuMTI0Ci1A QCAtNTI3LDggKzUyNyw3IEBACi0gICByZXR1cm4gMTsKLSB9Ci0gCi0tLyogTG9hZCBzY3JpcHQg RklMRSwgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBvcGVuZWQgYXMgU1RSRUFNLgotLSAgIFNUUkVB TSBpcyBjbG9zZWQgYmVmb3JlIHdlIHJldHVybi4gICovCi0rLyogTG9hZCBzY3JpcHQgRklMRSwg d2hpY2ggaGFzIGFscmVhZHkgYmVlbiBvcGVuZWQgYXMgU1RSRUFNLiAgKi8KLSAKLSBzdGF0aWMg dm9pZAotIHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0gKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hh ciAqZmlsZSkKLUBAIC01NTYsMTIgKzU1NSw5IEBACi0gCSAgZWxzZQotIAkgICAgewotIAkgICAg ICAvKiBOb3BlLCBqdXN0IHB1bnQuICAqLwotLQkgICAgICBmY2xvc2UgKHN0cmVhbSk7Ci0gCSAg ICAgIHRocm93X2V4Y2VwdGlvbiAoZSk7Ci0gCSAgICB9Ci0gCX0KLS0gICAgICBlbHNlCi0tCWZj bG9zZSAoc3RyZWFtKTsKLSAgICAgfQotICAgZWxzZQotICAgICBzY3JpcHRfZnJvbV9maWxlIChz dHJlYW0sIGZpbGUpOwotQEAgLTU5NSw2ICs1OTEsNyBAQAotICAgICB9Ci0gCi0gICBvbGRfY2xl YW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOwotKyAgbWFrZV9jbGVhbnVw X2ZjbG9zZSAoc3RyZWFtKTsKLSAgIC8qIFRoZSBweXRob24gc3VwcG9ydCByZW9wZW5zIHRoZSBm aWxlLCBzbyB3ZSBuZWVkIHRvIHBhc3MgZnVsbF9wYXRoIGhlcmUKLSAgICAgIGluIGNhc2UgdGhl IGZpbGUgd2FzIGZvdW5kIG9uIHRoZSBzZWFyY2ggcGF0aC4gIEl0J3MgdXNlZnVsIHRvIGRvIHRo aXMKLSAgICAgIGFueXdheSBzbyB0aGF0IGVycm9yIG1lc3NhZ2VzIHNob3cgdGhlIGFjdHVhbCBm aWxlIHVzZWQuICBCdXQgb25seSBkbwotLS0tIHNyYy9nZGIvY2xpL2NsaS1zY3JpcHQuYwkyMDEy LzAxLzA0IDA4OjE3OjE3CTEuNzMKLSsrKyBzcmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAxMi8w MS8yNCAyMDo1NjozMwkxLjc0Ci1AQCAtMTYxNCwxMSArMTYxNCw5IEBACi0gICBpZiAoc3RyZWFt ID09IE5VTEwpCi0gICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oImNh bGxlZCB3aXRoIE5VTEwgZmlsZSBwb2ludGVyISIpKTsKLSAKLS0gIG9sZF9jbGVhbnVwcyA9IG1h a2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7Ci0tCi0gICBvbGRfbGluZXMub2xkX2xpbmUgPSBz b3VyY2VfbGluZV9udW1iZXI7Ci0gICBvbGRfbGluZXMub2xkX2ZpbGUgPSBzb3VyY2VfZmlsZV9u YW1lOwotLSAgbWFrZV9jbGVhbnVwIChzb3VyY2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5lcyk7 Ci0rICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHNvdXJjZV9jbGVhbnVwX2xpbmVzLCAm b2xkX2xpbmVzKTsKLSAgIHNvdXJjZV9saW5lX251bWJlciA9IDA7Ci0gICBzb3VyY2VfZmlsZV9u YW1lID0gZmlsZTsKLSAgIC8qIFRoaXMgd2lsbCBnZXQgc2V0IGV2ZXJ5IHRpbWUgd2UgcmVhZCBh IGxpbmUuICBTbyBpdCB3b24ndCBzdGF5ICIiCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAx b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wMW9mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZDMyYjIxZgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9h ZC0wMW9mMjgucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1jdnMvMjAxMi0wMS9tc2cwMDIwMi5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEyLzAxLzI0IDE5OjEyOjMxCTEuMTM3NzEKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAx LzI0IDIwOjU2OjMzCTEuMTM3NzIKKyMjIC0xLDMgKzEsMTIgQEAKKysyMDEyLTAxLTI0ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCUNvZGUgY2xlYW51 cC4KKysJKiBjbGkvY2xpLWNtZHMuYyAoc291cmNlX3NjcmlwdF9mcm9tX3N0cmVhbSk6IE5ldmVy IGZjbG9zZSBTVFJFQU0uCisrCVVwZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVudCBmb3IgaXQuCisr CShzb3VyY2Vfc2NyaXB0X3dpdGhfc2VhcmNoKTogQ2FsbCBtYWtlX2NsZWFudXBfZmNsb3NlIGZv ciBTVFJFQU0uCisrCSogY2xpL2NsaS1zY3JpcHQuYyAoc2NyaXB0X2Zyb21fZmlsZSk6IERvIG5v dCBjYWxsIG1ha2VfY2xlYW51cF9mY2xvc2UKKysJZm9yIFNUUkVBTS4KKysKKyAyMDEyLTAxLTI0 ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgorIAorIAkqIGJyZWFrcG9pbnQuYyAo YnBzdGF0X3N0b3Bfc3RhdHVzKTogTW92aW5nIGNsZWFyaW5nIHByaW50X2l0CistLS0gc3JjL2dk Yi9jbGkvY2xpLWNtZHMuYwkyMDEyLzAxLzIzIDE2OjM3OjAzCTEuMTIzCisrKysgc3JjL2dkYi9j bGkvY2xpLWNtZHMuYwkyMDEyLzAxLzI0IDIwOjU2OjMzCTEuMTI0CitAQCAtNTI3LDggKzUyNyw3 IEBACisgICByZXR1cm4gMTsKKyB9CisgCistLyogTG9hZCBzY3JpcHQgRklMRSwgd2hpY2ggaGFz IGFscmVhZHkgYmVlbiBvcGVuZWQgYXMgU1RSRUFNLgorLSAgIFNUUkVBTSBpcyBjbG9zZWQgYmVm b3JlIHdlIHJldHVybi4gICovCisrLyogTG9hZCBzY3JpcHQgRklMRSwgd2hpY2ggaGFzIGFscmVh ZHkgYmVlbiBvcGVuZWQgYXMgU1RSRUFNLiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorIHNvdXJjZV9z Y3JpcHRfZnJvbV9zdHJlYW0gKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZmlsZSkKK0BAIC01 NTYsMTIgKzU1NSw5IEBACisgCSAgZWxzZQorIAkgICAgeworIAkgICAgICAvKiBOb3BlLCBqdXN0 IHB1bnQuICAqLworLQkgICAgICBmY2xvc2UgKHN0cmVhbSk7CisgCSAgICAgIHRocm93X2V4Y2Vw dGlvbiAoZSk7CisgCSAgICB9CisgCX0KKy0gICAgICBlbHNlCistCWZjbG9zZSAoc3RyZWFtKTsK KyAgICAgfQorICAgZWxzZQorICAgICBzY3JpcHRfZnJvbV9maWxlIChzdHJlYW0sIGZpbGUpOwor QEAgLTU5NSw2ICs1OTEsNyBAQAorICAgICB9CisgCisgICBvbGRfY2xlYW51cHMgPSBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOworKyAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFt KTsKKyAgIC8qIFRoZSBweXRob24gc3VwcG9ydCByZW9wZW5zIHRoZSBmaWxlLCBzbyB3ZSBuZWVk IHRvIHBhc3MgZnVsbF9wYXRoIGhlcmUKKyAgICAgIGluIGNhc2UgdGhlIGZpbGUgd2FzIGZvdW5k IG9uIHRoZSBzZWFyY2ggcGF0aC4gIEl0J3MgdXNlZnVsIHRvIGRvIHRoaXMKKyAgICAgIGFueXdh eSBzbyB0aGF0IGVycm9yIG1lc3NhZ2VzIHNob3cgdGhlIGFjdHVhbCBmaWxlIHVzZWQuICBCdXQg b25seSBkbworLS0tIHNyYy9nZGIvY2xpL2NsaS1zY3JpcHQuYwkyMDEyLzAxLzA0IDA4OjE3OjE3 CTEuNzMKKysrKyBzcmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAxMi8wMS8yNCAyMDo1NjozMwkx Ljc0CitAQCAtMTYxNCwxMSArMTYxNCw5IEBACisgICBpZiAoc3RyZWFtID09IE5VTEwpCisgICAg IGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oImNhbGxlZCB3aXRoIE5VTEwg ZmlsZSBwb2ludGVyISIpKTsKKyAKKy0gIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cF9mY2xv c2UgKHN0cmVhbSk7CistCisgICBvbGRfbGluZXMub2xkX2xpbmUgPSBzb3VyY2VfbGluZV9udW1i ZXI7CisgICBvbGRfbGluZXMub2xkX2ZpbGUgPSBzb3VyY2VfZmlsZV9uYW1lOworLSAgbWFrZV9j bGVhbnVwIChzb3VyY2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5lcyk7CisrICBvbGRfY2xlYW51 cHMgPSBtYWtlX2NsZWFudXAgKHNvdXJjZV9jbGVhbnVwX2xpbmVzLCAmb2xkX2xpbmVzKTsKKyAg IHNvdXJjZV9saW5lX251bWJlciA9IDA7CisgICBzb3VyY2VfZmlsZV9uYW1lID0gZmlsZTsKKyAg IC8qIFRoaXMgd2lsbCBnZXQgc2V0IGV2ZXJ5IHRpbWUgd2UgcmVhZCBhIGxpbmUuICBTbyBpdCB3 b24ndCBzdGF5ICIiCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAyb2YyMi5wYXRjaCBiL2dk Yi1hdXRvbG9hZC0wMm9mMjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0 NGM5YmIuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTAyb2YyMi5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDEwMyArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8y MDEyLTAxL21zZzAwMjA1Lmh0bWwKLQotLS0tIHNyYy9nZGIvZ2RiX3ZlY3MuaAotKysrIHNyYy9n ZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0LTE3IDIyOjA0OjIzLjgxODY2NjAwMCArMDAwMAotQEAgLTAs MCArMSwyOCBAQAotKy8qIFNvbWUgY29tbW9ubHktdXNlZCBWRUMgdHlwZXMuCi0rCi0rICAgQ29w eXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCi0rCi0rCi0rI2lmbmRlZiBHREJfVkVDU19ICi0rI2RlZmluZSBHREJfVkVD U19ICi0rCi0rI2luY2x1ZGUgInZlYy5oIgotKwotK0RFRl9WRUNfUCAoY2hhcl9wdHIpOwotKwot KyNlbmRpZiAvKiBHREJfVkVDU19IICovCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8y NCAyMTozMjo1NgkxLjEzNzc0Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMToz NjozNwkxLjEzNzc1Ci0jIyAtMSwzICsxLDEwIEBACi0rMjAxMi0wMS0yNCAgVG9tIFRyb21leSAg PHRyb21leUByZWRoYXQuY29tPgotKwotKwkqIGFkYS1sYW5nLmM6IEluY2x1ZGUgZ2RiX3ZlY3Mu aC4KLSsJKiBjaGFyc2V0LmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KLSsJKiB0cmFjZXBvaW50Lmg6 IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KLSsJKiBnZGJfdmVjcy5oOiBOZXcgZmlsZS4KLSsKLSAyMDEy LTAxLTI0ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0gCSogYnJl YWtwb2ludC5jIChicmVha3BvaW50X2hpdF9jYXRjaF9mb3JrKQotLS0tIHNyYy9nZGIvYWRhLWxh bmcuYwkyMDEyLzAxLzA2IDAzOjM0OjQ1CTEuMzMwCi0rKysgc3JjL2dkYi9hZGEtbGFuZy5jCTIw MTIvMDEvMjQgMjE6MzY6MzcJMS4zMzEKLUBAIC01Nyw2ICs1Nyw3IEBACi0gI2luY2x1ZGUgIm9i c2VydmVyLmgiCi0gI2luY2x1ZGUgInZlYy5oIgotICNpbmNsdWRlICJzdGFjay5oIgotKyNpbmNs dWRlICJnZGJfdmVjcy5oIgotIAotICNpbmNsdWRlICJwc3ltdGFiLmgiCi0gI2luY2x1ZGUgInZh bHVlLmgiCi1AQCAtNTYyOCw4ICs1NjI5LDYgQEAKLSAgIHJldHVybiBzeW1fbmFtZTsKLSB9Ci0g Ci0tREVGX1ZFQ19QIChjaGFyX3B0cik7Ci0tCi0gLyogQSBjb21wYW5pb24gZnVuY3Rpb24gdG8g YWRhX21ha2Vfc3ltYm9sX2NvbXBsZXRpb25fbGlzdCgpLgotICAgIENoZWNrIGlmIFNZTV9OQU1F IHJlcHJlc2VudHMgYSBzeW1ib2wgd2hpY2ggbmFtZSB3b3VsZCBiZSBzdWl0YWJsZQotICAgIHRv IGNvbXBsZXRlIFRFWFQgKFRFWFRfTEVOIGlzIHRoZSBsZW5ndGggb2YgVEVYVCksIGluIHdoaWNo IGNhc2UKLS0tLSBzcmMvZ2RiL2NoYXJzZXQuYwkyMDEyLzAxLzA0IDA4OjE3OjAwCTEuNDYKLSsr KyBzcmMvZ2RiL2NoYXJzZXQuYwkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuNDcKLUBAIC0yNyw2ICsy Nyw3IEBACi0gI2luY2x1ZGUgInZlYy5oIgotICNpbmNsdWRlICJlbnZpcm9uLmgiCi0gI2luY2x1 ZGUgImFyY2gtdXRpbHMuaCIKLSsjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKLSAKLSAjaW5jbHVkZSA8 c3RkZGVmLmg+Ci0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC03MTcsOCArNzE4LDYgQEAK LSAKLSBleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2NoYXJzZXQ7IC8q IC1XbWlzc2luZy1wcm90b3R5cGUgKi8KLSAKLS1ERUZfVkVDX1AgKGNoYXJfcHRyKTsKLS0KLSBz dGF0aWMgVkVDIChjaGFyX3B0cikgKmNoYXJzZXRzOwotIAotICNpZmRlZiBQSE9OWV9JQ09OVgot LS0tIHNyYy9nZGIvdHJhY2Vwb2ludC5oCTIwMTIvMDEvMDQgMDg6Mjc6NTcJMS40NgotKysrIHNy Yy9nZGIvdHJhY2Vwb2ludC5oCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS40NwotQEAgLTIyLDYgKzIy LDcgQEAKLSAjaW5jbHVkZSAiYnJlYWtwb2ludC5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAj aW5jbHVkZSAibWVtcmFuZ2UuaCIKLSsjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKLSAKLSAvKiBBIHRy YWNlIHN0YXRlIHZhcmlhYmxlIGlzIGEgdmFsdWUgbWFuYWdlZCBieSBhIHRhcmdldCBiZWluZwot ICAgIHRyYWNlZC4gIEEgdHJhY2Ugc3RhdGUgdmFyaWFibGUgKG9yIHRzdiBmb3Igc2hvcnQpIGNh biBiZSBhY2Nlc3NlZAotQEAgLTE0Myw4ICsxNDQsNiBAQAotIAotIC8qIFN0cnVjdCB0byBjb2xs ZWN0IHJhbmRvbSBpbmZvIGFib3V0IHRyYWNlcG9pbnRzIG9uIHRoZSB0YXJnZXQuICAqLwotIAot LURFRl9WRUNfUCAoY2hhcl9wdHIpOwotLQotIHN0cnVjdCB1cGxvYWRlZF90cAotIHsKLSAgIGlu dCBudW1iZXI7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAyb2YyOC5wYXRjaCBiL2dkYi1h dXRvbG9hZC0wMm9mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u YjQ0YzliYgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wMm9mMjgucGF0Y2gKQEAg LTAsMCArMSwxMDMgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDEv bXNnMDAyMDUuaHRtbAorCistLS0gc3JjL2dkYi9nZGJfdmVjcy5oCisrKysgc3JjL2dkYi9nZGJf dmVjcy5oCTIwMTItMDQtMTcgMjI6MDQ6MjMuODE4NjY2MDAwICswMDAwCitAQCAtMCwwICsxLDI4 IEBACisrLyogU29tZSBjb21tb25seS11c2VkIFZFQyB0eXBlcy4KKysKKysgICBDb3B5cmlnaHQg KEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisr ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KKysKKysKKysjaWZuZGVmIEdEQl9WRUNTX0gKKysjZGVmaW5lIEdEQl9WRUNTX0gKKysK KysjaW5jbHVkZSAidmVjLmgiCisrCisrREVGX1ZFQ19QIChjaGFyX3B0cik7CisrCisrI2VuZGlm IC8qIEdEQl9WRUNTX0ggKi8KKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAxLzI0IDIxOjMy OjU2CTEuMTM3NzQKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAxLzI0IDIxOjM2OjM3CTEu MTM3NzUKKyMjIC0xLDMgKzEsMTAgQEAKKysyMDEyLTAxLTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5 QHJlZGhhdC5jb20+CisrCisrCSogYWRhLWxhbmcuYzogSW5jbHVkZSBnZGJfdmVjcy5oLgorKwkq IGNoYXJzZXQuYzogSW5jbHVkZSBnZGJfdmVjcy5oLgorKwkqIHRyYWNlcG9pbnQuaDogSW5jbHVk ZSBnZGJfdmVjcy5oLgorKwkqIGdkYl92ZWNzLmg6IE5ldyBmaWxlLgorKworIDIwMTItMDEtMjQg IFBlZHJvIEFsdmVzICA8cGVkcm9AY29kZXNvdXJjZXJ5LmNvbT4KKyAKKyAJKiBicmVha3BvaW50 LmMgKGJyZWFrcG9pbnRfaGl0X2NhdGNoX2ZvcmspCistLS0gc3JjL2dkYi9hZGEtbGFuZy5jCTIw MTIvMDEvMDYgMDM6MzQ6NDUJMS4zMzAKKysrKyBzcmMvZ2RiL2FkYS1sYW5nLmMJMjAxMi8wMS8y NCAyMTozNjozNwkxLjMzMQorQEAgLTU3LDYgKzU3LDcgQEAKKyAjaW5jbHVkZSAib2JzZXJ2ZXIu aCIKKyAjaW5jbHVkZSAidmVjLmgiCisgI2luY2x1ZGUgInN0YWNrLmgiCisrI2luY2x1ZGUgImdk Yl92ZWNzLmgiCisgCisgI2luY2x1ZGUgInBzeW10YWIuaCIKKyAjaW5jbHVkZSAidmFsdWUuaCIK K0BAIC01NjI4LDggKzU2MjksNiBAQAorICAgcmV0dXJuIHN5bV9uYW1lOworIH0KKyAKKy1ERUZf VkVDX1AgKGNoYXJfcHRyKTsKKy0KKyAvKiBBIGNvbXBhbmlvbiBmdW5jdGlvbiB0byBhZGFfbWFr ZV9zeW1ib2xfY29tcGxldGlvbl9saXN0KCkuCisgICAgQ2hlY2sgaWYgU1lNX05BTUUgcmVwcmVz ZW50cyBhIHN5bWJvbCB3aGljaCBuYW1lIHdvdWxkIGJlIHN1aXRhYmxlCisgICAgdG8gY29tcGxl dGUgVEVYVCAoVEVYVF9MRU4gaXMgdGhlIGxlbmd0aCBvZiBURVhUKSwgaW4gd2hpY2ggY2FzZQor LS0tIHNyYy9nZGIvY2hhcnNldC5jCTIwMTIvMDEvMDQgMDg6MTc6MDAJMS40NgorKysrIHNyYy9n ZGIvY2hhcnNldC5jCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS40NworQEAgLTI3LDYgKzI3LDcgQEAK KyAjaW5jbHVkZSAidmVjLmgiCisgI2luY2x1ZGUgImVudmlyb24uaCIKKyAjaW5jbHVkZSAiYXJj aC11dGlscy5oIgorKyNpbmNsdWRlICJnZGJfdmVjcy5oIgorIAorICNpbmNsdWRlIDxzdGRkZWYu aD4KKyAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgorQEAgLTcxNyw4ICs3MTgsNiBAQAorIAorIGV4 dGVybiBpbml0aWFsaXplX2ZpbGVfZnR5cGUgX2luaXRpYWxpemVfY2hhcnNldDsgLyogLVdtaXNz aW5nLXByb3RvdHlwZSAqLworIAorLURFRl9WRUNfUCAoY2hhcl9wdHIpOworLQorIHN0YXRpYyBW RUMgKGNoYXJfcHRyKSAqY2hhcnNldHM7CisgCisgI2lmZGVmIFBIT05ZX0lDT05WCistLS0gc3Jj L2dkYi90cmFjZXBvaW50LmgJMjAxMi8wMS8wNCAwODoyNzo1NwkxLjQ2CisrKysgc3JjL2dkYi90 cmFjZXBvaW50LmgJMjAxMi8wMS8yNCAyMTozNjozNwkxLjQ3CitAQCAtMjIsNiArMjIsNyBAQAor ICNpbmNsdWRlICJicmVha3BvaW50LmgiCisgI2luY2x1ZGUgInRhcmdldC5oIgorICNpbmNsdWRl ICJtZW1yYW5nZS5oIgorKyNpbmNsdWRlICJnZGJfdmVjcy5oIgorIAorIC8qIEEgdHJhY2Ugc3Rh dGUgdmFyaWFibGUgaXMgYSB2YWx1ZSBtYW5hZ2VkIGJ5IGEgdGFyZ2V0IGJlaW5nCisgICAgdHJh Y2VkLiAgQSB0cmFjZSBzdGF0ZSB2YXJpYWJsZSAob3IgdHN2IGZvciBzaG9ydCkgY2FuIGJlIGFj Y2Vzc2VkCitAQCAtMTQzLDggKzE0NCw2IEBACisgCisgLyogU3RydWN0IHRvIGNvbGxlY3QgcmFu ZG9tIGluZm8gYWJvdXQgdHJhY2Vwb2ludHMgb24gdGhlIHRhcmdldC4gICovCisgCistREVGX1ZF Q19QIChjaGFyX3B0cik7CistCisgc3RydWN0IHVwbG9hZGVkX3RwCisgeworICAgaW50IG51bWJl cjsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDNvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2Fk LTAzb2YyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBlZmM4Yy4uMDAw MDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDNvZjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MjE1ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDEvbXNn MDAyMTkuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNiAxNjo0NDoyOQkx LjEzNzgwCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNiAyMTo1NDo0MgkxLjEzNzgx Ci0jIyAtMSwzICsxLDIyIEBACi0rMjAxMi0wMS0yNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlEbyBub3Qgb3BlbiBzY3JpcHQgZmlsZW5hbWVzIHR3 aWNlLgotKwkqIGNsaS9jbGktY21kcy5jIChzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtKTogUGFz cyB0bwotKwlzb3VyY2VfcHl0aG9uX3NjcmlwdCBhbHNvIFNUUkVBTS4KLSsJKiBweXRob24vcHkt YXV0by1sb2FkLmMgKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBQYXNzIHRvCi0rCXNvdXJjZV9w eXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIGFsc28gU1RSRUFNLgotKwkoYXV0b19sb2FkX29iamZp bGVfc2NyaXB0KTogUGFzcyB0byBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZQotKwlh bHNvIElOUFVULgotKwkqIHB5dGhvbi9weXRob24taW50ZXJuYWwuaCAoc291cmNlX3B5dGhvbl9z Y3JpcHRfZm9yX29iamZpbGUpOiBOZXcKLSsJcGFyYW1ldGVyIGZpbGUsIHJlbmFtZSBwYXJhbWV0 ZXIgZmlsZSB0byBmaWxlbmFtZS4KLSsJKiBweXRob24vcHl0aG9uLmMgKHB5dGhvbl9ydW5fc2lt cGxlX2ZpbGUpOiBDYWxsIFB5UnVuX1NpbXBsZUZpbGUKLSsJaW5zdGVhZCBpZiAhX1dJTjMyLiAg VXBkYXRlIHRoZSBmdW5jdGlvbiBjb21tZW50LgotKwkoc291cmNlX3B5dGhvbl9zY3JpcHQsIHNv dXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlKQotKwkoc291cmNlX3B5dGhvbl9zY3JpcHQp OiBOZXcgcGFyYW1ldGVyIGZpbGUsIHJlbmFtZSBwYXJhbWV0ZXIgZmlsZSB0bwotKwlmaWxlbmFt ZS4gIFBhc3MgRklMRU5BTUUgdG8gcHl0aG9uX3J1bl9zaW1wbGVfZmlsZS4KLSsJKiBweXRob24v cHl0aG9uLmggKHNvdXJjZV9weXRob25fc2NyaXB0KTogTmV3IHBhcmFtZXRlciBmaWxlLCByZW5h bWUKLSsJcGFyYW1ldGVyIGZpbGUgdG8gZmlsZW5hbWUuCi0rCi0gMjAxMi0wMS0yNiAgUGVkcm8g QWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLSAKLSAJKiBjb3JlbG93LmMgKGNvcmVfaGFzX2Zh a2VfcGlkKTogRGVsZXRlLgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NsaS9jbGkt Y21kcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jbGkv Y2xpLWNtZHMuYwkyMDEyLTAxLTA0IDA5OjE3OjE2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTItMDQtMTggMDA6NDE6NDIuNjk2 ODU1NDMwICswMjAwCi1AQCAtNTI5LDkgKzUyOSw3IEBAIHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJl YW0gKEZJTEUgKnN0cmVhbSwKLSAKLSAgICAgICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0VS Uk9SKQotIAl7Ci0tICAgICAgICAgIC8qIFRoZSBweXRob24gc3VwcG9ydCByZW9wZW5zIHRoZSBm aWxlIHVzaW5nIHB5dGhvbiBmdW5jdGlvbnMsCi0tICAgICAgICAgICAgIHNvIHRoZXJlJ3Mgbm8g cG9pbnQgaW4gcGFzc2luZyBTVFJFQU0gaGVyZS4gICovCi0tCSAgc291cmNlX3B5dGhvbl9zY3Jp cHQgKGZpbGUpOwotKwkgIHNvdXJjZV9weXRob25fc2NyaXB0IChzdHJlYW0sIGZpbGUpOwotIAl9 Ci0gICAgICAgaWYgKGUucmVhc29uIDwgMCkKLSAJewotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDEtMDQgMDk6MTc6 MjUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5 LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDE6NDIuNjk2ODU1NDMwICswMjAwCi1AQCAtMzEy LDcgKzMxMiw3IEBAIFVzZSBgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXScgdG8KLSAJ ewotIAkgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4g ICovCi0gCSAgaWYgKCEgaW5faGFzaF90YWJsZSkKLS0JICAgIHNvdXJjZV9weXRob25fc2NyaXB0 X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBmdWxsX3BhdGgpOwotKwkgICAgc291cmNlX3B5dGhvbl9z Y3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKLSAJICBmY2xv c2UgKHN0cmVhbSk7Ci0gCSAgeGZyZWUgKGZ1bGxfcGF0aCk7Ci0gCX0KLUBAIC00MzEsNyArNDMx LDcgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQotIAkgSXQncyBo aWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKLSAJIGFuZCB0aGVz ZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCi0g CSBsb2FkcyBhbnl3YXkuICAqLwotLSAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpm aWxlIChvYmpmaWxlLCBkZWJ1Z2ZpbGUpOwotKyAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zv cl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKLSAgICAgICBmY2xvc2UgKGlu cHV0KTsKLSAgICAgfQotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9w eXRob24taW50ZXJuYWwuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCTIwMTItMDEtMDQgMDk6MTc6MjUuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi1pbnRl cm5hbC5oCTIwMTItMDQtMTggMDA6NDE6NDIuNjk2ODU1NDMwICswMjAwCi1AQCAtMjg5LDggKzI4 OSw4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqcHl0aG8KLSAKLSB2b2lk IGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKTsKLSAKLS12b2lkIHNvdXJjZV9weXRob25fc2NyaXB0 X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLS0JCQkJICAgICAgIGNvbnN0 IGNoYXIgKmZpbGUpOwotK3ZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotKwkJCQkgICAgICAgY29uc3QgY2hh ciAqZmlsZW5hbWUpOwotIAotIFB5T2JqZWN0ICpweXRob25fc3RyaW5nX3RvX3VuaWNvZGUgKFB5 T2JqZWN0ICpvYmopOwotIGNoYXIgKnVuaWNvZGVfdG9fdGFyZ2V0X3N0cmluZyAoUHlPYmplY3Qg KnVuaWNvZGVfc3RyKTsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0 aG9uLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhv bi9weXRob24uYwkyMDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5 Njg1NTQzMCArMDIwMAotQEAgLTE1NCwzNCArMTU0LDMxIEBAIGVuc3VyZV9weXRob25fZW52IChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXIKLSAgIHJldHVybiBtYWtlX2NsZWFudXAgKHJlc3RvcmVfcHl0 aG9uX2VudiwgZW52KTsKLSB9Ci0gCi0tLyogQSB3cmFwcGVyIGFyb3VuZCBQeVJ1bl9TaW1wbGVG aWxlLiAgRklMRU5BTUUgaXMgdGhlIG5hbWUgb2YKLS0gICB0aGUgUHl0aG9uIHNjcmlwdCB0byBy dW4uCi0rLyogQSB3cmFwcGVyIGFyb3VuZCBQeVJ1bl9TaW1wbGVGaWxlLiAgRklMRSBpcyB0aGUg UHl0aG9uIHNjcmlwdCB0byBydW4KLSsgICBuYW1lZCBGSUxFTkFNRS4KLSAKLS0gICBPbmUgb2Yg dGhlIHBhcmFtZXRlcnMgb2YgUHlSdW5fU2ltcGxlRmlsZSBpcyBhIEZJTEUgKi4KLS0gICBUaGUg cHJvYmxlbSBpcyB0aGF0IHR5cGUgRklMRSBpcyBleHRyZW1lbHkgc3lzdGVtIGFuZCBjb21waWxl cgotLSAgIGRlcGVuZGVudC4gIFNvLCB1bmxlc3MgdGhlIFB5dGhvbiBsaWJyYXJ5IGhhcyBiZWVu IGNvbXBpbGVkIHVzaW5nCi0tICAgdGhlIHNhbWUgYnVpbGQgZW52aXJvbm1lbnQgYXMgR0RCLCB3 ZSBydW4gdGhlIHJpc2sgb2YgZ2V0dGluZwotLSAgIGEgY3Jhc2ggZHVlIHRvIGluY29uc2lzdGVu Y2llcyBiZXR3ZWVuIHRoZSBkZWZpbml0aW9uIHVzZWQgYnkgR0RCLAotLSAgIGFuZCB0aGUgZGVm aW5pdGlvbiB1c2VkIGJ5IFB5dGhvbi4gIEEgbWlzbWF0Y2ggY2FuIHZlcnkgbGlrZWx5Ci0tICAg bGVhZCB0byBhIGNyYXNoLgotLQotLSAgIFRoZXJlIGlzIGFsc28gdGhlIHNpdHVhdGlvbiB3aGVy ZSB0aGUgUHl0aG9uIGxpYnJhcnkgYW5kIEdEQgotLSAgIGFyZSB1c2luZyB0d28gZGlmZmVyZW50 IHZlcnNpb25zIG9mIHRoZSBDIHJ1bnRpbWUgbGlicmFyeS4KLS0gICBUaGlzIGlzIHBhcnRpY3Vs YXJseSB2aXNpYmxlIG9uIFdpbmRvd3MsIHdoZXJlIGZldyB1c2VycyB3b3VsZAotLSAgIGJ1aWxk IFB5dGhvbiB0aGVtc2VsdmVzICh0aGlzIGlzIG5vIHRyaXZpYWwgdGFzayBvbiB0aGlzIHBsYXRm b3JtKSwKLS0gICBhbmQgdGh1cyB1c2UgYmluYXJpZXMgYnVpbHQgYnkgc29tZW9uZSBlbHNlIGlu c3RlYWQuIFB5dGhvbiwKLS0gICBiZWluZyBidWlsdCB3aXRoIFZDLCB3b3VsZCB1c2Ugb25lIHZl cnNpb24gb2YgdGhlIG1zdmNyIERMTAotLSAgIChFZy4gbXN2Y3IxMDAuZGxsKSwgd2hpbGUgTWlu R1cgdXNlcyBtc3ZjcnQuZGxsLiAgQSBGSUxFICoKLS0gICBmcm9tIG9uZSBydW50aW1lIGRvZXMg bm90IG5lY2Vzc2FyaWx5IG9wZXJhdGUgY29ycmVjdGx5IGluCi0rICAgT24gV2luZG93cyBob3N0 cyBmZXcgdXNlcnMgd291bGQgYnVpbGQgUHl0aG9uIHRoZW1zZWx2ZXMgKHRoaXMgaXMgbm8KLSsg ICB0cml2aWFsIHRhc2sgb24gdGhpcyBwbGF0Zm9ybSksIGFuZCB0aHVzIHVzZSBiaW5hcmllcyBi dWlsdCBieQotKyAgIHNvbWVvbmUgZWxzZSBpbnN0ZWFkLiAgVGhlcmUgbWF5IGhhcHBlbiBzaXR1 YXRpb24gd2hlcmUgdGhlIFB5dGhvbgotKyAgIGxpYnJhcnkgYW5kIEdEQiBhcmUgdXNpbmcgdHdv IGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgQyBydW50aW1lCi0rICAgbGlicmFyeS4gIFB5dGhv biwgYmVpbmcgYnVpbHQgd2l0aCBWQywgd291bGQgdXNlIG9uZSB2ZXJzaW9uIG9mIHRoZQotKyAg IG1zdmNyIERMTCAoRWcuIG1zdmNyMTAwLmRsbCksIHdoaWxlIE1pbkdXIHVzZXMgbXN2Y3J0LmRs bC4KLSsgICBBIEZJTEUgKiBmcm9tIG9uZSBydW50aW1lIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG9w ZXJhdGUgY29ycmVjdGx5IGluCi0gICAgdGhlIG90aGVyIHJ1bnRpbWUuCi0gCi0tICAgVG8gd29y ayBhcm91bmQgdGhpcyBwb3RlbnRpYWwgaXNzdWUsIHdlIGNyZWF0ZSB0aGUgRklMRSBvYmplY3QK LS0gICB1c2luZyBQeXRob24gcm91dGluZXMsIHRodXMgbWFraW5nIHN1cmUgdGhhdCBpdCBpcyBj b21wYXRpYmxlCi0tICAgd2l0aCB0aGUgUHl0aG9uIGxpYnJhcnkuICAqLwotKyAgIFRvIHdvcmsg YXJvdW5kIHRoaXMgcG90ZW50aWFsIGlzc3VlLCB3ZSBjcmVhdGUgb24gV2luZG93cyBob3N0cyB0 aGUKLSsgICBGSUxFIG9iamVjdCB1c2luZyBQeXRob24gcm91dGluZXMsIHRodXMgbWFraW5nIHN1 cmUgdGhhdCBpdCBpcwotKyAgIGNvbXBhdGlibGUgd2l0aCB0aGUgUHl0aG9uIGxpYnJhcnkuICAq LwotIAotIHN0YXRpYyB2b2lkCi0tcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoY29uc3QgY2hhciAq ZmlsZW5hbWUpCi0rcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoRklMRSAqZmlsZSwgY29uc3QgY2hh ciAqZmlsZW5hbWUpCi0gewotKyNpZm5kZWYgX1dJTjMyCi0rCi0rICBQeVJ1bl9TaW1wbGVGaWxl IChmaWxlLCBmaWxlbmFtZSk7Ci0rCi0rI2Vsc2UgLyogX1dJTjMyICovCi0rCi0gICBjaGFyICpm dWxsX3BhdGg7Ci0gICBQeU9iamVjdCAqcHl0aG9uX2ZpbGU7Ci0gICBzdHJ1Y3QgY2xlYW51cCAq Y2xlYW51cDsKLUBAIC0yMDEsNiArMTk4LDggQEAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoY29u c3QgY2hhciAqZmlsZQotICAgbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAocHl0aG9uX2ZpbGUpOwot ICAgUHlSdW5fU2ltcGxlRmlsZSAoUHlGaWxlX0FzRmlsZSAocHl0aG9uX2ZpbGUpLCBmaWxlbmFt ZSk7Ci0gICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rCi0rI2VuZGlmIC8qIF9XSU4zMiAqLwot IH0KLSAKLSAvKiBHaXZlbiBhIGNvbW1hbmRfbGluZSwgcmV0dXJuIGEgY29tbWFuZCBzdHJpbmcg c3VpdGFibGUgZm9yIHBhc3NpbmcKLUBAIC02MjMsMTcgKzYyMiwxNyBAQCBnZGJweV9wYXJzZV9h bmRfZXZhbCAoUHlPYmplY3QgKnNlbGYsIFB5Ci0gfQotIAotIC8qIFJlYWQgYSBmaWxlIGFzIFB5 dGhvbiBjb2RlLgotLSAgIEZJTEUgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUuCi0rICAgRklMRSBp cyB0aGUgZmlsZSB0byBydW4uICBGSUxFTkFNRSBpcyBuYW1lIG9mIHRoZSBmaWxlIEZJTEUuCi0g ICAgVGhpcyBkb2VzIG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3Vy cyBweXRob24gd2lsbCBwcmludAotICAgIHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFyIHRoZSBlcnJv ciBpbmRpY2F0b3IuICAqLwotIAotIHZvaWQKLS1zb3VyY2VfcHl0aG9uX3NjcmlwdCAoY29uc3Qg Y2hhciAqZmlsZSkKLStzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwgY29uc3QgY2hh ciAqZmlsZW5hbWUpCi0gewotICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0gCi0gICBjbGVh bnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFu Z3VhZ2UpOwotLSAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSk7Ci0rICBweXRob25fcnVu X3NpbXBsZV9maWxlIChmaWxlLCBmaWxlbmFtZSk7Ci0gICBkb19jbGVhbnVwcyAoY2xlYW51cCk7 Ci0gfQotIAotQEAgLTEwNDEsMTkgKzEwNDAsMjAgQEAgZ2RicHlfcHJvZ3NwYWNlcyAoUHlPYmpl Y3QgKnVudXNlZDEsIFB5TwotICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlOyBp dCBpcyBOVUxMIGF0IG90aGVyIHRpbWVzLiAgKi8KLSBzdGF0aWMgc3RydWN0IG9iamZpbGUgKmdk YnB5X2N1cnJlbnRfb2JqZmlsZTsKLSAKLS0vKiBTZXQgdGhlIGN1cnJlbnQgb2JqZmlsZSB0byBP QkpGSUxFIGFuZCB0aGVuIHJlYWQgRklMRSBhcyBQeXRob24gY29kZS4KLS0gICBUaGlzIGRvZXMg bm90IHRocm93IGFueSBlcnJvcnMuICBJZiBhbiBleGNlcHRpb24gb2NjdXJzIHB5dGhvbiB3aWxs IHByaW50Ci0tICAgdGhlIHRyYWNlYmFjayBhbmQgY2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4g ICovCi0rLyogU2V0IHRoZSBjdXJyZW50IG9iamZpbGUgdG8gT0JKRklMRSBhbmQgdGhlbiByZWFk IEZJTEUgbmFtZWQgRklMRU5BTUUKLSsgICBhcyBQeXRob24gY29kZS4gIFRoaXMgZG9lcyBub3Qg dGhyb3cgYW55IGVycm9ycy4gIElmIGFuIGV4Y2VwdGlvbgotKyAgIG9jY3VycyBweXRob24gd2ls bCBwcmludCB0aGUgdHJhY2ViYWNrIGFuZCBjbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8K LSAKLSB2b2lkCi0tc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpmaWxlKQotK3NvdXJjZV9weXRob25fc2NyaXB0X2Zv cl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCi0gewotICAg c3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwotIAotICAgY2xlYW51cHMgPSBlbnN1cmVfcHl0aG9u X2VudiAoZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSksIGN1cnJlbnRfbGFuZ3VhZ2UpOwotICAg Z2RicHlfY3VycmVudF9vYmpmaWxlID0gb2JqZmlsZTsKLSAKLS0gIHB5dGhvbl9ydW5fc2ltcGxl X2ZpbGUgKGZpbGUpOwotKyAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSwgZmlsZW5hbWUp OwotIAotICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLSAgIGdkYnB5X2N1cnJlbnRfb2JqZmls ZSA9IE5VTEw7Ci1AQCAtMTEyOSw3ICsxMTI5LDcgQEAgZXZhbF9weXRob25fZnJvbV9jb250cm9s X2NvbW1hbmQgKHN0cnVjdAotIH0KLSAKLSB2b2lkCi0tc291cmNlX3B5dGhvbl9zY3JpcHQgKGNv bnN0IGNoYXIgKmZpbGUpCi0rc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0 IGNoYXIgKmZpbGVuYW1lKQotIHsKLSAgIHRocm93X2Vycm9yIChVTlNVUFBPUlRFRF9FUlJPUiwK LSAJICAgICAgIF8oIlB5dGhvbiBzY3JpcHRpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNv cHkgb2YgR0RCLiIpKTsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0 aG9uLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhv bi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5 Nzg1NTQyNyArMDIwMAotQEAgLTMwLDcgKzMwLDcgQEAgZXh0ZXJuIHZvaWQgZmluaXNoX3B5dGhv bl9pbml0aWFsaXphdGlvbgotIAotIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1h bmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKik7Ci0gCi0tdm9pZCBzb3VyY2VfcHl0aG9uX3Njcmlw dCAoY29uc3QgY2hhciAqZmlsZSk7Ci0rdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAq ZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpOwotIAotIHZvaWQgcnVuX3B5dGhvbl9zY3JpcHQg KGludCBhcmdjLCBjaGFyICoqYXJndik7Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAz b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wM29mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uYzBlZmM4YwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9h ZC0wM29mMjgucGF0Y2gKQEAgLTAsMCArMSwyMTUgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTItMDEvbXNnMDAyMTkuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMi8wMS8yNiAxNjo0NDoyOQkxLjEzNzgwCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8w MS8yNiAyMTo1NDo0MgkxLjEzNzgxCisjIyAtMSwzICsxLDIyIEBACisrMjAxMi0wMS0yNiAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlEbyBub3Qgb3Bl biBzY3JpcHQgZmlsZW5hbWVzIHR3aWNlLgorKwkqIGNsaS9jbGktY21kcy5jIChzb3VyY2Vfc2Ny aXB0X2Zyb21fc3RyZWFtKTogUGFzcyB0bworKwlzb3VyY2VfcHl0aG9uX3NjcmlwdCBhbHNvIFNU UkVBTS4KKysJKiBweXRob24vcHktYXV0by1sb2FkLmMgKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMp OiBQYXNzIHRvCisrCXNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIGFsc28gU1RSRUFN LgorKwkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogUGFzcyB0byBzb3VyY2VfcHl0aG9uX3Nj cmlwdF9mb3Jfb2JqZmlsZQorKwlhbHNvIElOUFVULgorKwkqIHB5dGhvbi9weXRob24taW50ZXJu YWwuaCAoc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcKKysJcGFyYW1ldGVy IGZpbGUsIHJlbmFtZSBwYXJhbWV0ZXIgZmlsZSB0byBmaWxlbmFtZS4KKysJKiBweXRob24vcHl0 aG9uLmMgKHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUpOiBDYWxsIFB5UnVuX1NpbXBsZUZpbGUKKysJ aW5zdGVhZCBpZiAhX1dJTjMyLiAgVXBkYXRlIHRoZSBmdW5jdGlvbiBjb21tZW50LgorKwkoc291 cmNlX3B5dGhvbl9zY3JpcHQsIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlKQorKwko c291cmNlX3B5dGhvbl9zY3JpcHQpOiBOZXcgcGFyYW1ldGVyIGZpbGUsIHJlbmFtZSBwYXJhbWV0 ZXIgZmlsZSB0bworKwlmaWxlbmFtZS4gIFBhc3MgRklMRU5BTUUgdG8gcHl0aG9uX3J1bl9zaW1w bGVfZmlsZS4KKysJKiBweXRob24vcHl0aG9uLmggKHNvdXJjZV9weXRob25fc2NyaXB0KTogTmV3 IHBhcmFtZXRlciBmaWxlLCByZW5hbWUKKysJcGFyYW1ldGVyIGZpbGUgdG8gZmlsZW5hbWUuCisr CisgMjAxMi0wMS0yNiAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKyAKKyAJKiBj b3JlbG93LmMgKGNvcmVfaGFzX2Zha2VfcGlkKTogRGVsZXRlLgorSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2NsaS9jbGktY21kcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLTAxLTA0IDA5OjE3OjE2LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NsaS9jbGktY21kcy5jCTIw MTItMDQtMTggMDA6NDE6NDIuNjk2ODU1NDMwICswMjAwCitAQCAtNTI5LDkgKzUyOSw3IEBAIHNv dXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0gKEZJTEUgKnN0cmVhbSwKKyAKKyAgICAgICBUUllfQ0FU Q0ggKGUsIFJFVFVSTl9NQVNLX0VSUk9SKQorIAl7CistICAgICAgICAgIC8qIFRoZSBweXRob24g c3VwcG9ydCByZW9wZW5zIHRoZSBmaWxlIHVzaW5nIHB5dGhvbiBmdW5jdGlvbnMsCistICAgICAg ICAgICAgIHNvIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gcGFzc2luZyBTVFJFQU0gaGVyZS4gICovCist CSAgc291cmNlX3B5dGhvbl9zY3JpcHQgKGZpbGUpOworKwkgIHNvdXJjZV9weXRob25fc2NyaXB0 IChzdHJlYW0sIGZpbGUpOworIAl9CisgICAgICAgaWYgKGUucmVhc29uIDwgMCkKKyAJeworSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9h ZC5jCTIwMTItMDEtMDQgMDk6MTc6MjUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDE6NDIuNjk2 ODU1NDMwICswMjAwCitAQCAtMzEyLDcgKzMxMiw3IEBAIFVzZSBgaW5mbyBhdXRvLWxvYWQtc2Ny aXB0cyBbUkVHRVhQXScgdG8KKyAJeworIAkgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVu dGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCisgCSAgaWYgKCEgaW5faGFzaF90YWJsZSkKKy0JICAg IHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBmdWxsX3BhdGgpOwor KwkgICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIHN0cmVhbSwg ZnVsbF9wYXRoKTsKKyAJICBmY2xvc2UgKHN0cmVhbSk7CisgCSAgeGZyZWUgKGZ1bGxfcGF0aCk7 CisgCX0KK0BAIC00MzEsNyArNDMxLDcgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1 Y3Qgb2JqZmlsZQorIAkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBp dCB0d2ljZSwKKyAJIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90 ZW50IHVuZGVyIG11bHRpcGxlCisgCSBsb2FkcyBhbnl3YXkuICAqLworLSAgICAgIHNvdXJjZV9w eXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBkZWJ1Z2ZpbGUpOworKyAgICAgIHNv dXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxl KTsKKyAgICAgICBmY2xvc2UgKGlucHV0KTsKKyAgICAgfQorIAorSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCTIwMTIt MDEtMDQgMDk6MTc6MjUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCTIwMTItMDQtMTggMDA6NDE6NDIuNjk2ODU1NDMw ICswMjAwCitAQCAtMjg5LDggKzI4OSw4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2Vf ZGVmbiAqcHl0aG8KKyAKKyB2b2lkIGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKTsKKyAKKy12b2lk IHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKKy0JCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGUpOworK3ZvaWQgc291cmNlX3B5dGhvbl9z Y3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAor KwkJCQkgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpOworIAorIFB5T2JqZWN0ICpweXRob25f c3RyaW5nX3RvX3VuaWNvZGUgKFB5T2JqZWN0ICpvYmopOworIGNoYXIgKnVuaWNvZGVfdG9fdGFy Z2V0X3N0cmluZyAoUHlPYmplY3QgKnVuaWNvZGVfc3RyKTsKK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uYwkyMDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uYwky MDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAorQEAgLTE1NCwzNCArMTU0LDMxIEBA IGVuc3VyZV9weXRob25fZW52IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXIKKyAgIHJldHVybiBtYWtl X2NsZWFudXAgKHJlc3RvcmVfcHl0aG9uX2VudiwgZW52KTsKKyB9CisgCistLyogQSB3cmFwcGVy IGFyb3VuZCBQeVJ1bl9TaW1wbGVGaWxlLiAgRklMRU5BTUUgaXMgdGhlIG5hbWUgb2YKKy0gICB0 aGUgUHl0aG9uIHNjcmlwdCB0byBydW4uCisrLyogQSB3cmFwcGVyIGFyb3VuZCBQeVJ1bl9TaW1w bGVGaWxlLiAgRklMRSBpcyB0aGUgUHl0aG9uIHNjcmlwdCB0byBydW4KKysgICBuYW1lZCBGSUxF TkFNRS4KKyAKKy0gICBPbmUgb2YgdGhlIHBhcmFtZXRlcnMgb2YgUHlSdW5fU2ltcGxlRmlsZSBp cyBhIEZJTEUgKi4KKy0gICBUaGUgcHJvYmxlbSBpcyB0aGF0IHR5cGUgRklMRSBpcyBleHRyZW1l bHkgc3lzdGVtIGFuZCBjb21waWxlcgorLSAgIGRlcGVuZGVudC4gIFNvLCB1bmxlc3MgdGhlIFB5 dGhvbiBsaWJyYXJ5IGhhcyBiZWVuIGNvbXBpbGVkIHVzaW5nCistICAgdGhlIHNhbWUgYnVpbGQg ZW52aXJvbm1lbnQgYXMgR0RCLCB3ZSBydW4gdGhlIHJpc2sgb2YgZ2V0dGluZworLSAgIGEgY3Jh c2ggZHVlIHRvIGluY29uc2lzdGVuY2llcyBiZXR3ZWVuIHRoZSBkZWZpbml0aW9uIHVzZWQgYnkg R0RCLAorLSAgIGFuZCB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IFB5dGhvbi4gIEEgbWlzbWF0Y2gg Y2FuIHZlcnkgbGlrZWx5CistICAgbGVhZCB0byBhIGNyYXNoLgorLQorLSAgIFRoZXJlIGlzIGFs c28gdGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgUHl0aG9uIGxpYnJhcnkgYW5kIEdEQgorLSAgIGFy ZSB1c2luZyB0d28gZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBDIHJ1bnRpbWUgbGlicmFyeS4K Ky0gICBUaGlzIGlzIHBhcnRpY3VsYXJseSB2aXNpYmxlIG9uIFdpbmRvd3MsIHdoZXJlIGZldyB1 c2VycyB3b3VsZAorLSAgIGJ1aWxkIFB5dGhvbiB0aGVtc2VsdmVzICh0aGlzIGlzIG5vIHRyaXZp YWwgdGFzayBvbiB0aGlzIHBsYXRmb3JtKSwKKy0gICBhbmQgdGh1cyB1c2UgYmluYXJpZXMgYnVp bHQgYnkgc29tZW9uZSBlbHNlIGluc3RlYWQuIFB5dGhvbiwKKy0gICBiZWluZyBidWlsdCB3aXRo IFZDLCB3b3VsZCB1c2Ugb25lIHZlcnNpb24gb2YgdGhlIG1zdmNyIERMTAorLSAgIChFZy4gbXN2 Y3IxMDAuZGxsKSwgd2hpbGUgTWluR1cgdXNlcyBtc3ZjcnQuZGxsLiAgQSBGSUxFICoKKy0gICBm cm9tIG9uZSBydW50aW1lIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG9wZXJhdGUgY29ycmVjdGx5IGlu CisrICAgT24gV2luZG93cyBob3N0cyBmZXcgdXNlcnMgd291bGQgYnVpbGQgUHl0aG9uIHRoZW1z ZWx2ZXMgKHRoaXMgaXMgbm8KKysgICB0cml2aWFsIHRhc2sgb24gdGhpcyBwbGF0Zm9ybSksIGFu ZCB0aHVzIHVzZSBiaW5hcmllcyBidWlsdCBieQorKyAgIHNvbWVvbmUgZWxzZSBpbnN0ZWFkLiAg VGhlcmUgbWF5IGhhcHBlbiBzaXR1YXRpb24gd2hlcmUgdGhlIFB5dGhvbgorKyAgIGxpYnJhcnkg YW5kIEdEQiBhcmUgdXNpbmcgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgQyBydW50aW1l CisrICAgbGlicmFyeS4gIFB5dGhvbiwgYmVpbmcgYnVpbHQgd2l0aCBWQywgd291bGQgdXNlIG9u ZSB2ZXJzaW9uIG9mIHRoZQorKyAgIG1zdmNyIERMTCAoRWcuIG1zdmNyMTAwLmRsbCksIHdoaWxl IE1pbkdXIHVzZXMgbXN2Y3J0LmRsbC4KKysgICBBIEZJTEUgKiBmcm9tIG9uZSBydW50aW1lIGRv ZXMgbm90IG5lY2Vzc2FyaWx5IG9wZXJhdGUgY29ycmVjdGx5IGluCisgICAgdGhlIG90aGVyIHJ1 bnRpbWUuCisgCistICAgVG8gd29yayBhcm91bmQgdGhpcyBwb3RlbnRpYWwgaXNzdWUsIHdlIGNy ZWF0ZSB0aGUgRklMRSBvYmplY3QKKy0gICB1c2luZyBQeXRob24gcm91dGluZXMsIHRodXMgbWFr aW5nIHN1cmUgdGhhdCBpdCBpcyBjb21wYXRpYmxlCistICAgd2l0aCB0aGUgUHl0aG9uIGxpYnJh cnkuICAqLworKyAgIFRvIHdvcmsgYXJvdW5kIHRoaXMgcG90ZW50aWFsIGlzc3VlLCB3ZSBjcmVh dGUgb24gV2luZG93cyBob3N0cyB0aGUKKysgICBGSUxFIG9iamVjdCB1c2luZyBQeXRob24gcm91 dGluZXMsIHRodXMgbWFraW5nIHN1cmUgdGhhdCBpdCBpcworKyAgIGNvbXBhdGlibGUgd2l0aCB0 aGUgUHl0aG9uIGxpYnJhcnkuICAqLworIAorIHN0YXRpYyB2b2lkCistcHl0aG9uX3J1bl9zaW1w bGVfZmlsZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCisrcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAo RklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpCisgeworKyNpZm5kZWYgX1dJTjMyCisr CisrICBQeVJ1bl9TaW1wbGVGaWxlIChmaWxlLCBmaWxlbmFtZSk7CisrCisrI2Vsc2UgLyogX1dJ TjMyICovCisrCisgICBjaGFyICpmdWxsX3BhdGg7CisgICBQeU9iamVjdCAqcHl0aG9uX2ZpbGU7 CisgICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKK0BAIC0yMDEsNiArMTk4LDggQEAgcHl0aG9u X3J1bl9zaW1wbGVfZmlsZSAoY29uc3QgY2hhciAqZmlsZQorICAgbWFrZV9jbGVhbnVwX3B5X2Rl Y3JlZiAocHl0aG9uX2ZpbGUpOworICAgUHlSdW5fU2ltcGxlRmlsZSAoUHlGaWxlX0FzRmlsZSAo cHl0aG9uX2ZpbGUpLCBmaWxlbmFtZSk7CisgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrCisr I2VuZGlmIC8qIF9XSU4zMiAqLworIH0KKyAKKyAvKiBHaXZlbiBhIGNvbW1hbmRfbGluZSwgcmV0 dXJuIGEgY29tbWFuZCBzdHJpbmcgc3VpdGFibGUgZm9yIHBhc3NpbmcKK0BAIC02MjMsMTcgKzYy MiwxNyBAQCBnZGJweV9wYXJzZV9hbmRfZXZhbCAoUHlPYmplY3QgKnNlbGYsIFB5CisgfQorIAor IC8qIFJlYWQgYSBmaWxlIGFzIFB5dGhvbiBjb2RlLgorLSAgIEZJTEUgaXMgdGhlIG5hbWUgb2Yg dGhlIGZpbGUuCisrICAgRklMRSBpcyB0aGUgZmlsZSB0byBydW4uICBGSUxFTkFNRSBpcyBuYW1l IG9mIHRoZSBmaWxlIEZJTEUuCisgICAgVGhpcyBkb2VzIG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAg SWYgYW4gZXhjZXB0aW9uIG9jY3VycyBweXRob24gd2lsbCBwcmludAorICAgIHRoZSB0cmFjZWJh Y2sgYW5kIGNsZWFyIHRoZSBlcnJvciBpbmRpY2F0b3IuICAqLworIAorIHZvaWQKKy1zb3VyY2Vf cHl0aG9uX3NjcmlwdCAoY29uc3QgY2hhciAqZmlsZSkKKytzb3VyY2VfcHl0aG9uX3NjcmlwdCAo RklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpCisgeworICAgc3RydWN0IGNsZWFudXAg KmNsZWFudXA7CisgCisgICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50 X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOworLSAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAo ZmlsZSk7CisrICBweXRob25fcnVuX3NpbXBsZV9maWxlIChmaWxlLCBmaWxlbmFtZSk7CisgICBk b19jbGVhbnVwcyAoY2xlYW51cCk7CisgfQorIAorQEAgLTEwNDEsMTkgKzEwNDAsMjAgQEAgZ2Ri cHlfcHJvZ3NwYWNlcyAoUHlPYmplY3QgKnVudXNlZDEsIFB5TworICAgIHNvdXJjZV9weXRob25f c2NyaXB0X2Zvcl9vYmpmaWxlOyBpdCBpcyBOVUxMIGF0IG90aGVyIHRpbWVzLiAgKi8KKyBzdGF0 aWMgc3RydWN0IG9iamZpbGUgKmdkYnB5X2N1cnJlbnRfb2JqZmlsZTsKKyAKKy0vKiBTZXQgdGhl IGN1cnJlbnQgb2JqZmlsZSB0byBPQkpGSUxFIGFuZCB0aGVuIHJlYWQgRklMRSBhcyBQeXRob24g Y29kZS4KKy0gICBUaGlzIGRvZXMgbm90IHRocm93IGFueSBlcnJvcnMuICBJZiBhbiBleGNlcHRp b24gb2NjdXJzIHB5dGhvbiB3aWxsIHByaW50CistICAgdGhlIHRyYWNlYmFjayBhbmQgY2xlYXIg dGhlIGVycm9yIGluZGljYXRvci4gICovCisrLyogU2V0IHRoZSBjdXJyZW50IG9iamZpbGUgdG8g T0JKRklMRSBhbmQgdGhlbiByZWFkIEZJTEUgbmFtZWQgRklMRU5BTUUKKysgICBhcyBQeXRob24g Y29kZS4gIFRoaXMgZG9lcyBub3QgdGhyb3cgYW55IGVycm9ycy4gIElmIGFuIGV4Y2VwdGlvbgor KyAgIG9jY3VycyBweXRob24gd2lsbCBwcmludCB0aGUgdHJhY2ViYWNrIGFuZCBjbGVhciB0aGUg ZXJyb3IgaW5kaWNhdG9yLiAgKi8KKyAKKyB2b2lkCistc291cmNlX3B5dGhvbl9zY3JpcHRfZm9y X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpmaWxlKQorK3Nv dXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg RklMRSAqZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqZmlsZW5hbWUpCisgeworICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOworIAorICAgY2xl YW51cHMgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSksIGN1 cnJlbnRfbGFuZ3VhZ2UpOworICAgZ2RicHlfY3VycmVudF9vYmpmaWxlID0gb2JqZmlsZTsKKyAK Ky0gIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUpOworKyAgcHl0aG9uX3J1bl9zaW1wbGVf ZmlsZSAoZmlsZSwgZmlsZW5hbWUpOworIAorICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKyAg IGdkYnB5X2N1cnJlbnRfb2JqZmlsZSA9IE5VTEw7CitAQCAtMTEyOSw3ICsxMTI5LDcgQEAgZXZh bF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0cnVjdAorIH0KKyAKKyB2b2lkCistc291 cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpCisrc291cmNlX3B5dGhvbl9zY3Jp cHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKyAgIHRocm93X2Vycm9y IChVTlNVUFBPUlRFRF9FUlJPUiwKKyAJICAgICAgIF8oIlB5dGhvbiBzY3JpcHRpbmcgaXMgbm90 IHN1cHBvcnRlZCBpbiB0aGlzIGNvcHkgb2YgR0RCLiIpKTsKK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAky MDEyLTA0LTE4IDAwOjQxOjQyLjY5Nzg1NTQyNyArMDIwMAorQEAgLTMwLDcgKzMwLDcgQEAgZXh0 ZXJuIHZvaWQgZmluaXNoX3B5dGhvbl9pbml0aWFsaXphdGlvbgorIAorIHZvaWQgZXZhbF9weXRo b25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKik7CisgCistdm9p ZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoY29uc3QgY2hhciAqZmlsZSk7Cisrdm9pZCBzb3VyY2Vf cHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpOworIAorIHZv aWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7CisgCgpkaWZmIC0t Z2l0IGEvZ2RiLWF1dG9sb2FkLTA0b2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wNG9mMjIucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NWFjODcuLjAwMDAwMDAKLS0tIGEv Z2RiLWF1dG9sb2FkLTA0b2YyMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBA Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAwMjM0Lmh0bWwK LQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTM6MzkJMS4xNDAyNQotIyMj IHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTY6MTcJMS4xNDAyNgotIyMgLTEsMyAr MSwxNCBAQAotKzIwMTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KLSsKLSsJQ29kZSBjbGVhbnVwLgotKwkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6 IE1vdmUgaXQgaGVyZSBmcm9tIG1haW4uICBBZGQgbW9yZSBjb21tZW50cy4KLSsJKGNtZGFyZ19z LCBWRUMgKGNtZGFyZ19zKSk6IE5ldy4KLSsJKG1haW4pOiBNb3ZlIHN0cnVjdCBjbWRhcmcgZnJv bSBoZXJlLiAgTmV3IHZhcmlhYmxlcyBjbWRhcmdfdmVjIGFuZAotKwljbWRhcmdfcC4gIFJlbW92 ZSB2YXJpYWJsZXMgY21kc2l6ZSBhbmQgbmNtZCBhbmQgdGhlaXIgaW5pdGlhbGl6YXRpb24uCi0r CUluc3RhbGwgY2xlYW51cCBmb3IgY21kYXJnX3ZlYy4gIFVwZGF0ZSBmaWxsaW5nIGZvciBvcHRp b25zICd4JyBhbmQKLSsJJ1gnLiAgUmVwbGFjZSBjbWRhcmcgcHJvY2Vzc2luZyBieSBjbWRhcmdf dmVjIHByb2Nlc3NpbmcuICBSZW1vdmUgeGZyZWUKLSsJb2YgQ01EQVJHLgotKwotIDIwMTItMDMt MTkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSAKLSAJKiBnbnUtdjMtYWJpLmMg KGdudXYzX3ByaW50X3Z0YWJsZSk6IEluaXRpYWxpemUgJ3Jlc3VsdF92ZWMnLgotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDE6MzEuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDI6 MTUuMzU0NzcyMzM3ICswMjAwCi1AQCAtMjc3LDYgKzI3NywyNSBAQCBleGVjX29yX2NvcmVfZmls ZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lCi0gICAgIH0KLSB9Ci0gCi0rLyogQXJndW1lbnRzIG9m IC0tY29tbWFuZCBvcHRpb24gYW5kIGl0cyBjb3VudGVycGFydC4gICovCi0rdHlwZWRlZiBzdHJ1 Y3QgY21kYXJnIHsKLSsgIC8qIFR5cGUgb2YgdGhpcyBvcHRpb24uICAqLwotKyAgZW51bSB7Ci0r ICAgIC8qIE9wdGlvbiB0eXBlIC14LiAgKi8KLSsgICAgQ01EQVJHX0ZJTEUsCi0rCi0rICAgIC8q IE9wdGlvbiB0eXBlIC1leC4gICovCi0rICAgIENNREFSR19DT01NQU5ECi0rICB9IHR5cGU7Ci0r Ci0rICAvKiBWYWx1ZSBvZiB0aGlzIG9wdGlvbiAtIGZpbGVuYW1lIG9yIHRoZSBHREIgY29tbWFu ZCBpdHNlbGYuICBTdHJpbmcgbWVtb3J5Ci0rICAgICBpcyBub3Qgb3duZWQgYnkgdGhpcyBzdHJ1 Y3R1cmUgZGVzcGl0ZSBpdCBpcyAnY29uc3QnLiAgKi8KLSsgIGNoYXIgKnN0cmluZzsKLSt9IGNt ZGFyZ19zOwotKwotKy8qIERlZmluZSB0eXBlIFZFQyAoY21kYXJnX3MpLiAgKi8KLStERUZfVkVD X08gKGNtZGFyZ19zKTsKLSsKLSBzdGF0aWMgaW50Ci0gY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0 YSkKLSB7Ci1AQCAtMzAzLDE3ICszMjIsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQot ICAgc3RhdGljIGludCBwcmludF92ZXJzaW9uOwotIAotICAgLyogUG9pbnRlcnMgdG8gYWxsIGFy Z3VtZW50cyBvZiAtLWNvbW1hbmQgb3B0aW9uLiAgKi8KLS0gIHN0cnVjdCBjbWRhcmcgewotLSAg ICBlbnVtIHsKLS0gICAgICBDTURBUkdfRklMRSwKLS0gICAgICBDTURBUkdfQ09NTUFORAotLSAg ICB9IHR5cGU7Ci0tICAgIGNoYXIgKnN0cmluZzsKLS0gIH0gKmNtZGFyZzsKLS0gIC8qIEFsbG9j YXRlZCBzaXplIG9mIGNtZGFyZy4gICovCi0tICBpbnQgY21kc2l6ZTsKLS0gIC8qIE51bWJlciBv ZiBlbGVtZW50cyBvZiBjbWRhcmcgdXNlZC4gICovCi0tICBpbnQgbmNtZDsKLSsgIFZFQyAoY21k YXJnX3MpICpjbWRhcmdfdmVjID0gTlVMTDsKLSsgIHN0cnVjdCBjbWRhcmcgKmNtZGFyZ19wOwot IAotICAgLyogSW5kaWNlcyBvZiBhbGwgYXJndW1lbnRzIG9mIC0tZGlyZWN0b3J5IG9wdGlvbi4g ICovCi0gICBjaGFyICoqZGlyYXJnOwotQEAgLTM0OSw5ICszNTksNyBAQCBjYXB0dXJlZF9tYWlu ICh2b2lkICpkYXRhKQotICAgYmluZHRleHRkb21haW4gKFBBQ0tBR0UsIExPQ0FMRURJUik7Ci0g ICB0ZXh0ZG9tYWluIChQQUNLQUdFKTsKLSAKLS0gIGNtZHNpemUgPSAxOwotLSAgY21kYXJnID0g KHN0cnVjdCBjbWRhcmcgKikgeG1hbGxvYyAoY21kc2l6ZSAqIHNpemVvZiAoKmNtZGFyZykpOwot LSAgbmNtZCA9IDA7Ci0rICBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChjbWRhcmdfcyksICZj bWRhcmdfdmVjKTsKLSAgIGRpcnNpemUgPSAxOwotICAgZGlyYXJnID0gKGNoYXIgKiopIHhtYWxs b2MgKGRpcnNpemUgKiBzaXplb2YgKCpkaXJhcmcpKTsKLSAgIG5kaXIgPSAwOwotQEAgLTU4Miwy NCArNTkwLDE5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gCSAgICBwaWRhcmcgPSBv cHRhcmc7Ci0gCSAgICBicmVhazsKLSAJICBjYXNlICd4JzoKLS0JICAgIGNtZGFyZ1tuY21kXS50 eXBlID0gQ01EQVJHX0ZJTEU7Ci0tCSAgICBjbWRhcmdbbmNtZCsrXS5zdHJpbmcgPSBvcHRhcmc7 Ci0tCSAgICBpZiAobmNtZCA+PSBjbWRzaXplKQotLQkgICAgICB7Ci0tCQljbWRzaXplICo9IDI7 Ci0tCQljbWRhcmcgPSB4cmVhbGxvYyAoKGNoYXIgKikgY21kYXJnLAotLQkJCQkgICBjbWRzaXpl ICogc2l6ZW9mICgqY21kYXJnKSk7Ci0tCSAgICAgIH0KLSsJICAgIHsKLSsJICAgICAgc3RydWN0 IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19GSUxFLCBvcHRhcmcgfTsKLSsKLSsJICAgICAgVkVD X3NhZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOwotKwkgICAgfQotIAkg ICAgYnJlYWs7Ci0gCSAgY2FzZSAnWCc6Ci0tCSAgICBjbWRhcmdbbmNtZF0udHlwZSA9IENNREFS R19DT01NQU5EOwotLQkgICAgY21kYXJnW25jbWQrK10uc3RyaW5nID0gb3B0YXJnOwotLQkgICAg aWYgKG5jbWQgPj0gY21kc2l6ZSkKLS0JICAgICAgewotLQkJY21kc2l6ZSAqPSAyOwotLQkJY21k YXJnID0geHJlYWxsb2MgKChjaGFyICopIGNtZGFyZywKLS0JCQkJICAgY21kc2l6ZSAqIHNpemVv ZiAoKmNtZGFyZykpOwotLQkgICAgICB9Ci0rCSAgICB7Ci0rCSAgICAgIHN0cnVjdCBjbWRhcmcg Y21kYXJnID0geyBDTURBUkdfQ09NTUFORCwgb3B0YXJnIH07Ci0rCi0rCSAgICAgIFZFQ19zYWZl X3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKLSsJICAgIH0KLSsJICAgIGJy ZWFrOwotIAkgICAgYnJlYWs7Ci0gCSAgY2FzZSAnQic6Ci0gCSAgICBiYXRjaF9mbGFnID0gYmF0 Y2hfc2lsZW50ID0gMTsKLUBAIC05OTAsMTYgKzk5MywxOCBAQCBjYXB0dXJlZF9tYWluICh2b2lk ICpkYXRhKQotICAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQotICAgICBsb2FkX2F1dG9fc2NyaXB0 c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0gCi0tICBmb3IgKGkgPSAwOyBpIDwgbmNtZDsgaSsr KQotKyAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBj bWRhcmdfcCk7IGkrKykKLSsgICAgc3dpdGNoIChjbWRhcmdfcC0+dHlwZSkKLSAgICAgewotLSAg ICAgIGlmIChjbWRhcmdbaV0udHlwZSA9PSBDTURBUkdfRklMRSkKLS0gICAgICAgIGNhdGNoX2Nv bW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBjbWRhcmdbaV0uc3RyaW5nLAotKyAgICAgIGNh c2UgQ01EQVJHX0ZJTEU6Ci0rICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3Nj cmlwdCwgY21kYXJnX3AtPnN0cmluZywKLSAJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01B U0tfQUxMKTsKLS0gICAgICBlbHNlICAvKiBjbWRhcmdbaV0udHlwZSA9PSBDTURBUkdfQ09NTUFO RCAqLwotLSAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWN1dGVfY29tbWFuZCwgY21k YXJnW2ldLnN0cmluZywKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBDTURBUkdfQ09NTUFORDoKLSsg ICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVjdXRlX2NvbW1hbmQsIGNtZGFyZ19wLT5z dHJpbmcsCi0gCQkJICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCk7Ci0rCWJyZWFr OwotICAgICB9Ci0tICB4ZnJlZSAoY21kYXJnKTsKLSAKLSAgIC8qIFJlYWQgaW4gdGhlIG9sZCBo aXN0b3J5IGFmdGVyIGFsbCB0aGUgY29tbWFuZCBmaWxlcyBoYXZlIGJlZW4KLSAgICAgIHJlYWQu ICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wNG9mMjgucGF0Y2ggYi9nZGItYXV0b2xv YWQtMDRvZjI4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NWFj ODcKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDRvZjI4LnBhdGNoCkBAIC0wLDAg KzEsMTQxIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAw MjM0Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTM6MzkJMS4x NDAyNQorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTY6MTcJMS4xNDAyNgor IyMgLTEsMyArMSwxNCBAQAorKzIwMTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KKysKKysJQ29kZSBjbGVhbnVwLgorKwkqIG1haW4uYyAoc3RydWN0 IGNtZGFyZyk6IE1vdmUgaXQgaGVyZSBmcm9tIG1haW4uICBBZGQgbW9yZSBjb21tZW50cy4KKysJ KGNtZGFyZ19zLCBWRUMgKGNtZGFyZ19zKSk6IE5ldy4KKysJKG1haW4pOiBNb3ZlIHN0cnVjdCBj bWRhcmcgZnJvbSBoZXJlLiAgTmV3IHZhcmlhYmxlcyBjbWRhcmdfdmVjIGFuZAorKwljbWRhcmdf cC4gIFJlbW92ZSB2YXJpYWJsZXMgY21kc2l6ZSBhbmQgbmNtZCBhbmQgdGhlaXIgaW5pdGlhbGl6 YXRpb24uCisrCUluc3RhbGwgY2xlYW51cCBmb3IgY21kYXJnX3ZlYy4gIFVwZGF0ZSBmaWxsaW5n IGZvciBvcHRpb25zICd4JyBhbmQKKysJJ1gnLiAgUmVwbGFjZSBjbWRhcmcgcHJvY2Vzc2luZyBi eSBjbWRhcmdfdmVjIHByb2Nlc3NpbmcuICBSZW1vdmUgeGZyZWUKKysJb2YgQ01EQVJHLgorKwor IDIwMTItMDMtMTkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KKyAKKyAJKiBnbnUt djMtYWJpLmMgKGdudXYzX3ByaW50X3Z0YWJsZSk6IEluaXRpYWxpemUgJ3Jlc3VsdF92ZWMnLgor SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDE6MzEuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQt MTggMDA6NDI6MTUuMzU0NzcyMzM3ICswMjAwCitAQCAtMjc3LDYgKzI3NywyNSBAQCBleGVjX29y X2NvcmVfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lCisgICAgIH0KKyB9CisgCisrLyogQXJn dW1lbnRzIG9mIC0tY29tbWFuZCBvcHRpb24gYW5kIGl0cyBjb3VudGVycGFydC4gICovCisrdHlw ZWRlZiBzdHJ1Y3QgY21kYXJnIHsKKysgIC8qIFR5cGUgb2YgdGhpcyBvcHRpb24uICAqLworKyAg ZW51bSB7CisrICAgIC8qIE9wdGlvbiB0eXBlIC14LiAgKi8KKysgICAgQ01EQVJHX0ZJTEUsCisr CisrICAgIC8qIE9wdGlvbiB0eXBlIC1leC4gICovCisrICAgIENNREFSR19DT01NQU5ECisrICB9 IHR5cGU7CisrCisrICAvKiBWYWx1ZSBvZiB0aGlzIG9wdGlvbiAtIGZpbGVuYW1lIG9yIHRoZSBH REIgY29tbWFuZCBpdHNlbGYuICBTdHJpbmcgbWVtb3J5CisrICAgICBpcyBub3Qgb3duZWQgYnkg dGhpcyBzdHJ1Y3R1cmUgZGVzcGl0ZSBpdCBpcyAnY29uc3QnLiAgKi8KKysgIGNoYXIgKnN0cmlu ZzsKKyt9IGNtZGFyZ19zOworKworKy8qIERlZmluZSB0eXBlIFZFQyAoY21kYXJnX3MpLiAgKi8K KytERUZfVkVDX08gKGNtZGFyZ19zKTsKKysKKyBzdGF0aWMgaW50CisgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKKyB7CitAQCAtMzAzLDE3ICszMjIsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lk ICpkYXRhKQorICAgc3RhdGljIGludCBwcmludF92ZXJzaW9uOworIAorICAgLyogUG9pbnRlcnMg dG8gYWxsIGFyZ3VtZW50cyBvZiAtLWNvbW1hbmQgb3B0aW9uLiAgKi8KKy0gIHN0cnVjdCBjbWRh cmcgeworLSAgICBlbnVtIHsKKy0gICAgICBDTURBUkdfRklMRSwKKy0gICAgICBDTURBUkdfQ09N TUFORAorLSAgICB9IHR5cGU7CistICAgIGNoYXIgKnN0cmluZzsKKy0gIH0gKmNtZGFyZzsKKy0g IC8qIEFsbG9jYXRlZCBzaXplIG9mIGNtZGFyZy4gICovCistICBpbnQgY21kc2l6ZTsKKy0gIC8q IE51bWJlciBvZiBlbGVtZW50cyBvZiBjbWRhcmcgdXNlZC4gICovCistICBpbnQgbmNtZDsKKysg IFZFQyAoY21kYXJnX3MpICpjbWRhcmdfdmVjID0gTlVMTDsKKysgIHN0cnVjdCBjbWRhcmcgKmNt ZGFyZ19wOworIAorICAgLyogSW5kaWNlcyBvZiBhbGwgYXJndW1lbnRzIG9mIC0tZGlyZWN0b3J5 IG9wdGlvbi4gICovCisgICBjaGFyICoqZGlyYXJnOworQEAgLTM0OSw5ICszNTksNyBAQCBjYXB0 dXJlZF9tYWluICh2b2lkICpkYXRhKQorICAgYmluZHRleHRkb21haW4gKFBBQ0tBR0UsIExPQ0FM RURJUik7CisgICB0ZXh0ZG9tYWluIChQQUNLQUdFKTsKKyAKKy0gIGNtZHNpemUgPSAxOworLSAg Y21kYXJnID0gKHN0cnVjdCBjbWRhcmcgKikgeG1hbGxvYyAoY21kc2l6ZSAqIHNpemVvZiAoKmNt ZGFyZykpOworLSAgbmNtZCA9IDA7CisrICBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChjbWRh cmdfcyksICZjbWRhcmdfdmVjKTsKKyAgIGRpcnNpemUgPSAxOworICAgZGlyYXJnID0gKGNoYXIg KiopIHhtYWxsb2MgKGRpcnNpemUgKiBzaXplb2YgKCpkaXJhcmcpKTsKKyAgIG5kaXIgPSAwOwor QEAgLTU4MiwyNCArNTkwLDE5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgCSAgICBw aWRhcmcgPSBvcHRhcmc7CisgCSAgICBicmVhazsKKyAJICBjYXNlICd4JzoKKy0JICAgIGNtZGFy Z1tuY21kXS50eXBlID0gQ01EQVJHX0ZJTEU7CistCSAgICBjbWRhcmdbbmNtZCsrXS5zdHJpbmcg PSBvcHRhcmc7CistCSAgICBpZiAobmNtZCA+PSBjbWRzaXplKQorLQkgICAgICB7CistCQljbWRz aXplICo9IDI7CistCQljbWRhcmcgPSB4cmVhbGxvYyAoKGNoYXIgKikgY21kYXJnLAorLQkJCQkg ICBjbWRzaXplICogc2l6ZW9mICgqY21kYXJnKSk7CistCSAgICAgIH0KKysJICAgIHsKKysJICAg ICAgc3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19GSUxFLCBvcHRhcmcgfTsKKysKKysJ ICAgICAgVkVDX3NhZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOworKwkg ICAgfQorIAkgICAgYnJlYWs7CisgCSAgY2FzZSAnWCc6CistCSAgICBjbWRhcmdbbmNtZF0udHlw ZSA9IENNREFSR19DT01NQU5EOworLQkgICAgY21kYXJnW25jbWQrK10uc3RyaW5nID0gb3B0YXJn OworLQkgICAgaWYgKG5jbWQgPj0gY21kc2l6ZSkKKy0JICAgICAgeworLQkJY21kc2l6ZSAqPSAy OworLQkJY21kYXJnID0geHJlYWxsb2MgKChjaGFyICopIGNtZGFyZywKKy0JCQkJICAgY21kc2l6 ZSAqIHNpemVvZiAoKmNtZGFyZykpOworLQkgICAgICB9CisrCSAgICB7CisrCSAgICAgIHN0cnVj dCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdfQ09NTUFORCwgb3B0YXJnIH07CisrCisrCSAgICAg IFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKysJICAgIH0K KysJICAgIGJyZWFrOworIAkgICAgYnJlYWs7CisgCSAgY2FzZSAnQic6CisgCSAgICBiYXRjaF9m bGFnID0gYmF0Y2hfc2lsZW50ID0gMTsKK0BAIC05OTAsMTYgKzk5MywxOCBAQCBjYXB0dXJlZF9t YWluICh2b2lkICpkYXRhKQorICAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQorICAgICBsb2FkX2F1 dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7CisgCistICBmb3IgKGkgPSAwOyBpIDwg bmNtZDsgaSsrKQorKyAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGNtZGFyZ19zLCBjbWRhcmdf dmVjLCBpLCBjbWRhcmdfcCk7IGkrKykKKysgICAgc3dpdGNoIChjbWRhcmdfcC0+dHlwZSkKKyAg ICAgeworLSAgICAgIGlmIChjbWRhcmdbaV0udHlwZSA9PSBDTURBUkdfRklMRSkKKy0gICAgICAg IGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBjbWRhcmdbaV0uc3RyaW5nLAor KyAgICAgIGNhc2UgQ01EQVJHX0ZJTEU6CisrICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAo c291cmNlX3NjcmlwdCwgY21kYXJnX3AtPnN0cmluZywKKyAJCQkgICAgICAhYmF0Y2hfZmxhZywg UkVUVVJOX01BU0tfQUxMKTsKKy0gICAgICBlbHNlICAvKiBjbWRhcmdbaV0udHlwZSA9PSBDTURB UkdfQ09NTUFORCAqLworLSAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWN1dGVfY29t bWFuZCwgY21kYXJnW2ldLnN0cmluZywKKysJYnJlYWs7CisrICAgICAgY2FzZSBDTURBUkdfQ09N TUFORDoKKysgICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVjdXRlX2NvbW1hbmQsIGNt ZGFyZ19wLT5zdHJpbmcsCisgCQkJICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCk7 CisrCWJyZWFrOworICAgICB9CistICB4ZnJlZSAoY21kYXJnKTsKKyAKKyAgIC8qIFJlYWQgaW4g dGhlIG9sZCBoaXN0b3J5IGFmdGVyIGFsbCB0aGUgY29tbWFuZCBmaWxlcyBoYXZlIGJlZW4KKyAg ICAgIHJlYWQuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wNW9mMjIucGF0Y2ggYi9n ZGItYXV0b2xvYWQtMDVvZjIyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4 ZGQ4Y2MzLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wNW9mMjIucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwyNDQgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMv MjAxMi0wMy9tc2cwMDIzNS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5 IDE4OjE2OjE3CTEuMTQwMjYKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE5 OjIzCTEuMTQwMjcKLSMjIC0xLDUgKzEsMTggQEAKLSAyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZp bCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCSogTkVXUzogRGVzY3JpYmUgbmV3 IG9wdGlvbnMgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAotKwktLWluaXQtZXZhbC1jb21t YW5kPUNPTU1BTkQsIC1pZXguCi0rCSogbWFpbi5jIChzdHJ1Y3QgY21kYXJnKTogTmV3IGVudW0g aXRlbXMgQ01EQVJHX0lOSVRfRklMRSBhbmQKLSsJQ01EQVJHX0lOSVRfQ09NTUFORC4KLSsJKGNh cHR1cmVkX21haW4pOiBOZXcgZW51bSBpdGVtcyBPUFRfSVggYW5kIE9QVF9JRVguICBBZGQKLSsJ ImluaXQtY29tbWFuZCIsICJpbml0LWV2YWwtY29tbWFuZCIsICJpeCIgYW5kICJpZXgiIHRvIHRo ZSB2YXJpYWJsZQotKwlsb25nX29wdGlvbnMuICBIYW5kbGUgT1BUX0lYIGFuZCBPUFRfSUVYLiAg UHJvY2VzcyB0aGVtIGZyb20gQ01EQVJHX1ZFQy4KLSsJTmV3IGNvbW1lbnQgZm9yIENNREFSR19G SUxFIGFuZCBDTURBUkdfQ09NTUFORCBwcm9jZXNzaW5nLgotKwkocHJpbnRfZ2RiX2hlbHApOiBE ZXNjcmliZSAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggYW5kCi0rCS0taW5pdC1ldmFsLWNvbW1h bmQ9Q09NTUFORCwgLWlleC4KLSsKLSsyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0gCUNvZGUgY2xlYW51cC4KLSAJKiBtYWluLmMgKHN0 cnVjdCBjbWRhcmcpOiBNb3ZlIGl0IGhlcmUgZnJvbSBtYWluLiAgQWRkIG1vcmUgY29tbWVudHMu Ci0gCShjbWRhcmdfcywgVkVDIChjbWRhcmdfcykpOiBOZXcuCi1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvTkVXUwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAy MDAKLUBAIC0yOCw2ICsyOCwxMyBAQAotICAgbm93IHNldCBhIGJyZWFrcG9pbnQgaW4gYnVpbGQv Z2NjL2V4cHIuYywgYnV0IG5vdAotICAgYnVpbGQvbGliY3BwL2V4cHIuYy4KLSAKLSsqIE5ldyBj b21tYW5kIGxpbmUgb3B0aW9ucwotKwotKy0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAg ICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuCi0rLS1pbml0LWV2YWwtY29t bWFuZD1DT01NQU5ELCAtaWV4IExpa2UgLS1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWV4IGJ1dAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlIGl0IGJlZm9yZSBsb2Fk aW5nIGluZmVyaW9yLgotKwotICoqKiBDaGFuZ2VzIGluIEdEQiA3LjQKLSAKLSAqIEdEQiBub3cg aGFuZGxlcyBhbWJpZ3VvdXMgbGluZXNwZWNzIG1vcmUgY29uc2lzdGVudGx5OyB0aGUgZXhpc3Rp bmcKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQyOjE1 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEy LTA0LTE4IDAwOjQyOjUxLjIyNjY4MTA2OCArMDIwMAotQEAgLTI4NSw3ICsyODUsMTMgQEAgdHlw ZWRlZiBzdHJ1Y3QgY21kYXJnIHsKLSAgICAgQ01EQVJHX0ZJTEUsCi0gCi0gICAgIC8qIE9wdGlv biB0eXBlIC1leC4gICovCi0tICAgIENNREFSR19DT01NQU5ECi0rICAgIENNREFSR19DT01NQU5E LAotKwotKyAgICAvKiBPcHRpb24gdHlwZSAtaXguICAqLwotKyAgICBDTURBUkdfSU5JVF9GSUxF LAotKyAgICAKLSsgICAgLyogT3B0aW9uIHR5cGUgLWlleC4gICovCi0rICAgIENNREFSR19JTklU X0NPTU1BTkQKLSAgIH0gdHlwZTsKLSAKLSAgIC8qIFZhbHVlIG9mIHRoaXMgb3B0aW9uIC0gZmls ZW5hbWUgb3IgdGhlIEdEQiBjb21tYW5kIGl0c2VsZi4gIFN0cmluZyBtZW1vcnkKLUBAIC00MzQs NyArNDQwLDkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgICAgICBPUFRfU1RBVElT VElDUywKLSAgICAgICBPUFRfVFVJLAotICAgICAgIE9QVF9OT1dJTkRPV1MsCi0tICAgICAgT1BU X1dJTkRPV1MKLSsgICAgICBPUFRfV0lORE9XUywKLSsgICAgICBPUFRfSVgsCi0rICAgICAgT1BU X0lFWAotICAgICB9OwotICAgICBzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9 Ci0gICAgIHsKLUBAIC00NzUsNiArNDgzLDEwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEp Ci0gICAgICAgeyJ2ZXJzaW9uIiwgbm9fYXJndW1lbnQsICZwcmludF92ZXJzaW9uLCAxfSwKLSAg ICAgICB7IngiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgJ3gnfSwKLSAgICAgICB7ImV4IiwgcmVx dWlyZWRfYXJndW1lbnQsIDAsICdYJ30sCi0rICAgICAgeyJpbml0LWNvbW1hbmQiLCByZXF1aXJl ZF9hcmd1bWVudCwgMCwgT1BUX0lYfSwKLSsgICAgICB7ImluaXQtZXZhbC1jb21tYW5kIiwgcmVx dWlyZWRfYXJndW1lbnQsIDAsIE9QVF9JRVh9LAotKyAgICAgIHsiaXgiLCByZXF1aXJlZF9hcmd1 bWVudCwgMCwgT1BUX0lYfSwKLSsgICAgICB7ImlleCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBP UFRfSUVYfSwKLSAjaWZkZWYgR0RCVEsKLSAgICAgICB7InRjbGNvbW1hbmQiLCByZXF1aXJlZF9h cmd1bWVudCwgMCwgJ3onfSwKLSAgICAgICB7ImVuYWJsZS1leHRlcm5hbC1lZGl0b3IiLCBub19h cmd1bWVudCwgMCwgJ3knfSwKLUBAIC02MDMsNiArNjE1LDE5IEBAIGNhcHR1cmVkX21haW4gKHZv aWQgKmRhdGEpCi0gCSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAm Y21kYXJnKTsKLSAJICAgIH0KLSAJICAgIGJyZWFrOwotKwkgIGNhc2UgT1BUX0lYOgotKwkgICAg ewotKwkgICAgICBzdHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsgQ01EQVJHX0lOSVRfRklMRSwgb3B0 YXJnIH07Ci0rCi0rCSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAm Y21kYXJnKTsKLSsJICAgIH0KLSsJICAgIGJyZWFrOwotKwkgIGNhc2UgT1BUX0lFWDoKLSsJICAg IHsKLSsJICAgICAgc3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19JTklUX0NPTU1BTkQs IG9wdGFyZyB9OwotKwotKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3Zl YywgJmNtZGFyZyk7Ci0rCSAgICB9Ci0gCSAgICBicmVhazsKLSAJICBjYXNlICdCJzoKLSAJICAg IGJhdGNoX2ZsYWcgPSBiYXRjaF9zaWxlbnQgPSAxOwotQEAgLTg3Nyw2ICs5MDIsMjAgQEAgY2Fw dHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgIHF1aXRfcHJlX3ByaW50ID0gZXJyb3JfcHJlX3By aW50OwotICAgd2FybmluZ19wcmVfcHJpbnQgPSBfKCJcbndhcm5pbmc6ICIpOwotIAotKyAgLyog UHJvY2VzcyAnLWl4JyBhbmQgJy1pZXgnIG9wdGlvbnMgZWFybHkuICAqLwotKyAgZm9yIChpID0g MDsgVkVDX2l0ZXJhdGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdfcCk7IGkrKykK LSsgICAgc3dpdGNoIChjbWRhcmdfcC0+dHlwZSkKLSsgICAgewotKyAgICAgIGNhc2UgQ01EQVJH X0lOSVRfRklMRToKLSsgICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0 LCBjbWRhcmdfcC0+c3RyaW5nLAotKwkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19B TEwpOwotKwlicmVhazsKLSsgICAgICBjYXNlIENNREFSR19JTklUX0NPTU1BTkQ6Ci0rICAgICAg ICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdfcC0+c3RyaW5n LAotKwkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOwotKwlicmVhazsKLSsg ICAgfQotKwotICAgLyogUmVhZCBhbmQgZXhlY3V0ZSB0aGUgc3lzdGVtLXdpZGUgZ2RiaW5pdCBm aWxlLCBpZiBpdCBleGlzdHMuCi0gICAgICBUaGlzIGlzIGRvbmUgKmJlZm9yZSogYWxsIHRoZSBj b21tYW5kIGxpbmUgYXJndW1lbnRzIGFyZQotICAgICAgcHJvY2Vzc2VkOyBpdCBzZXRzIGdsb2Jh bCBwYXJhbWV0ZXJzLCB3aGljaCBhcmUgaW5kZXBlbmRlbnQgb2YKLUBAIC05OTMsNiArMTAzMiw3 IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICBBTExfT0JKRklMRVMgKG9iamZpbGUp Ci0gICAgIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKLSAKLSsgIC8q IFByb2Nlc3MgJy14JyBhbmQgJy1leCcgb3B0aW9ucy4gICovCi0gICBmb3IgKGkgPSAwOyBWRUNf aXRlcmF0ZSAoY21kYXJnX3MsIGNtZGFyZ192ZWMsIGksIGNtZGFyZ19wKTsgaSsrKQotICAgICBz d2l0Y2ggKGNtZGFyZ19wLT50eXBlKQotICAgICB7Ci1AQCAtMTA5Myw2ICsxMTMzLDggQEAgT3B0 aW9uczpcblxuXAotICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGUgYSBzaW5nbGUgR0RCIGNv bW1hbmQuXG5cCi0gICAgICAgICAgICAgICAgICAgICAgTWF5IGJlIHVzZWQgbXVsdGlwbGUgdGlt ZXMgYW5kIGluIGNvbmp1bmN0aW9uXG5cCi0gICAgICAgICAgICAgICAgICAgICAgd2l0aCAtLWNv bW1hbmQuXG5cCi0rICAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggTGlrZSAteCBidXQgZXhlY3V0 ZSBpdCBiZWZvcmUgbG9hZGluZyBpbmZlcmlvci5cblwKLSsgIC0taW5pdC1ldmFsLWNvbW1hbmQ9 Q09NTUFORCwgLWlleCBMaWtlIC1leCBidXQgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuXG5cCi0g ICAtLWNvcmU9Q09SRUZJTEUgICAgQW5hbHl6ZSB0aGUgY29yZSBkdW1wIENPUkVGSUxFLlxuXAot ICAgLS1waWQ9UElEICAgICAgICAgIEF0dGFjaCB0byBydW5uaW5nIHByb2Nlc3MgUElELlxuXAot ICIpLCBzdHJlYW0pOwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4 aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDE6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDI6NTEuMjMy NjgxMDUyICswMjAwCi1AQCAtOTg5LDYgKzk4OSwyMiBAQCBhbHNvIGJlIGludGVybGVhdmVkIHdp dGggQHNhbXB7LWNvbW1hbmR9Ci0gICAgLXggc2V0YnJlYWtwb2ludHMgLWV4ICdydW4nIGEub3V0 Ci0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLStAaXRlbSAtaW5pdC1jb21tYW5kIEB2YXJ7ZmlsZX0K LStAaXRlbXggLWl4IEB2YXJ7ZmlsZX0KLStAY2luZGV4IEBjb2Rley0taW5pdC1jb21tYW5kfQot K0BjaW5kZXggQGNvZGV7LWl4fQotK0V4ZWN1dGUgY29tbWFuZHMgZnJvbSBmaWxlIEB2YXJ7Zmls ZX0gYmVmb3JlIGxvYWRpbmcgZ2RiaW5pdCBmaWxlcyBvciB0aGUKLStpbmZlcmlvci4KLStAeHJl ZntTdGFydHVwfS4KLSsKLStAaXRlbSAtaW5pdC1ldmFsLWNvbW1hbmQgQHZhcntjb21tYW5kfQot K0BpdGVteCAtaWV4IEB2YXJ7Y29tbWFuZH0KLStAY2luZGV4IEBjb2Rley0taW5pdC1ldmFsLWNv bW1hbmR9Ci0rQGNpbmRleCBAY29kZXstaWV4fQotK0V4ZWN1dGUgYSBzaW5nbGUgQHZhbHVle0dE Qk59IGNvbW1hbmQgYmVmb3JlIGxvYWRpbmcgZ2RiaW5pdCBmaWxlcyBvciB0aGUKLStpbmZlcmlv ci4KLStAeHJlZntTdGFydHVwfS4KLSsKLSBAaXRlbSAtZGlyZWN0b3J5IEB2YXJ7ZGlyZWN0b3J5 fQotIEBpdGVteCAtZCBAdmFye2RpcmVjdG9yeX0KLSBAY2luZGV4IEBjb2Rley0tZGlyZWN0b3J5 fQotQEAgLTEyNTAsNiArMTI2NiwxMyBAQCBTZXRzIHVwIHRoZSBjb21tYW5kIGludGVycHJldGVy IGFzIHNwZWNpCi0gKEBweHJlZntNb2RlIE9wdGlvbnMsIGludGVycHJldGVyfSkuCi0gCi0gQGl0 ZW0KLStFeGVjdXRlcyBjb21tYW5kcyBhbmQgY29tbWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhl IEBzYW1wey1pZXh9IGFuZAotK0BzYW1wey1peH0gb3B0aW9ucyBpbiB0aGVpciBzcGVjaWZpZWQg b3JkZXIuICBVc3VhbGx5IHlvdSBzaG91bGQgdXNlIHRoZQotK0BzYW1wey1leH0gYW5kIEBzYW1w ey14fSBvcHRpb25zIGluc3RlYWQsIGJ1dCB0aGlzIHdheSB5b3UgY2FuIGFwcGx5Ci0rc2V0dGlu Z3MgYmVmb3JlIEB2YWx1ZXtHREJOfSBpbml0IGZpbGVzIGdldCBleGVjdXRlZCBhbmQgYmVmb3Jl IGluZmVyaW9yCi0rZ2V0cyBsb2FkZWQuCi0rCi0rQGl0ZW0KLSBAY2luZGV4IGluaXQgZmlsZQot IFJlYWRzIHRoZSBzeXN0ZW0td2lkZSBAZGZue2luaXQgZmlsZX0gKGlmIEBvcHRpb257LS13aXRo LXN5c3RlbS1nZGJpbml0fSB3YXMKLSB1c2VkIHdoZW4gYnVpbGRpbmcgQHZhbHVle0dEQk59OyBA cHhyZWZ7U3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbiwKLUBAIC0xMjgzLDE0ICsxMzA2LDExIEBA IElmIHlvdSB3aXNoIHRvIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZwotIHlvdSBtdXN0IGRvIHNv bWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6Ci0gCi0gQHNtYWxsZXhhbXBsZQotLSQgZ2RiIC1l eCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgLWV4ICJmaWxlIG15cHJvZ3JhbSIKLSskIGdk YiAtaWV4ICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KLSBAZW5kIHNtYWxs ZXhhbXBsZQotIAotLVRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgd29yayBiZWNhdXNlIHRoZSBhdXRv LWxvYWRpbmcgaXMgdHVybmVkIG9mZiB0b28gbGF0ZToKLS0KLS1Ac21hbGxleGFtcGxlCi0tJCBn ZGIgLWV4ICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KLS1AZW5kIHNtYWxs ZXhhbXBsZQotK09wdGlvbiBAc2FtcHstZXh9IGRvZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0 by1sb2FkaW5nIGlzIHRoZW4gdHVybmVkCi0rb2ZmIHRvbyBsYXRlLgotIAotIEBpdGVtCi0gUmVh ZHMgY29tbWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey14fSBvcHRpb24uICBAeHJl ZntDb21tYW5kCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5n ZGIvc2VsZnRlc3QuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAxMi0wNC0xOCAwMDo0MTozMS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2Ri LmdkYi9zZWxmdGVzdC5leHAJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMzI2ODEwNTIgKzAyMDAKLUBA IC05Miw2ICs5MiwxMCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9uZXh0cyB7fSB7Ci0gCQlzZXQgZGVz Y3JpcHRpb24gInN0ZXAgb3ZlciBweXRob25fc2NyaXB0IGluaXRpYWxpemF0aW9uIgotIAkJc2V0 IGNvbW1hbmQgInN0ZXAiCi0gCSAgICB9Ci0rCSAgICAtcmUgIi4qY21kYXJnX3ZlYyA9IE5VTEwu KiRnZGJfcHJvbXB0ICQiIHsKLSsJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGNtZGFyZ192 ZWMgaW5pdGlhbGl6YXRpb24iCi0rCQlzZXQgY29tbWFuZCAic3RlcCIKLSsJICAgIH0KLSAJICAg IC1yZSAiLipwcmVfc3RhdF9jaGFpbiA9IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLiokZ2Ri X3Byb21wdCAkIiB7Ci0gCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBtYWtlX2NvbW1hbmRf c3RhdHNfY2xlYW51cCBhbmQgZXZlcnl0aGluZyBpdCBjYWxscyIKLSAJCXNldCBjb21tYW5kICJu ZXh0IgotQEAgLTEyOCwxOCArMTMyLDYgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewot IAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgY29uZGl0aW9uYWwgc3RhY2sgYWxpZ25tZW50 IGFsbG9jYSIKLSAJCXNldCBjb21tYW5kICJuZXh0IgotIAkgICAgfQotLQkgICAgLXJlICIuKmNt ZHNpemUgPSAxLiokZ2RiX3Byb21wdCAkIiB7Ci0tCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3Zl ciBjbWRzaXplIGluaXRpYWxpemF0aW9uIgotLQkJc2V0IGNvbW1hbmQgIm5leHQiCi0tCSAgICB9 Ci0tCSAgICAtcmUgIi4qY21kYXJnID0gLiogeG1hbGxvYy4qJGdkYl9wcm9tcHQgJCIgewotLQkJ c2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgY21kYXJnIGluaXRpYWxpemF0aW9uIHZpYSB4bWFs bG9jIgotLQkJc2V0IGNvbW1hbmQgIm5leHQiCi0tCSAgICB9Ci0tCSAgICAtcmUgIi4qbmNtZCA9 IDAuKiRnZGJfcHJvbXB0ICQiIHsKLS0JCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIG5jbWQg aW5pdGlhbGl6YXRpb24iCi0tCQlzZXQgY29tbWFuZCAibmV4dCIKLS0JICAgIH0KLSAJICAgIC1y ZSAiLipkaXJzaXplID0gMS4qJGdkYl9wcm9tcHQgJCIgewotIAkJc2V0IGRlc2NyaXB0aW9uICJu ZXh0IG92ZXIgZGlyc2l6ZSBpbml0aWFsaXphdGlvbiIKLSAJCXNldCBjb21tYW5kICJuZXh0Igot QEAgLTE2Myw2ICsxNTUsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewotIAkJc2V0 IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgdGV4dGRvbWFpbiBQQUNLQUdFIgotIAkJc2V0IGNvbW1h bmQgIm5leHQiCi0gCSAgICB9Ci0rCSAgICAtcmUgIi4qVkVDX2NsZWFudXAgLmNtZGFyZ19zLiok Z2RiX3Byb21wdCAkIiB7Ci0rCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBjbWRhcmdfcyBW RUNfY2xlYW51cCIKLSsJCXNldCBjb21tYW5kICJuZXh0IgotKwkgICAgfQotIAkgICAgLXJlICJc WzAtOVxdK1xbXHQgXF0rXHtcclxuJGdkYl9wcm9tcHQgJCIgewotIAkJc2V0IGRlc2NyaXB0aW9u ICJzdGVwIG92ZXIgaW5pdGlhbCBicmFjZSIKLSAJCXNldCBjb21tYW5kICJzdGVwIgoKZGlmZiAt LWdpdCBhL2dkYi1hdXRvbG9hZC0wNW9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDVvZjI4LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZDhjYzMKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDVvZjI4LnBhdGNoCkBAIC0wLDAgKzEsMjQ0IEBACito dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAwMjM1Lmh0bWwKKwor IyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTY6MTcJMS4xNDAyNgorIyMjIHNy Yy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTk6MjMJMS4xNDAyNworIyMgLTEsNSArMSwx OCBAQAorIDIwMTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KKyAKKysJKiBORVdTOiBEZXNjcmliZSBuZXcgb3B0aW9ucyAtLWluaXQtY29tbWFuZD1G SUxFLCAtaXggYW5kCisrCS0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleC4KKysJKiBt YWluLmMgKHN0cnVjdCBjbWRhcmcpOiBOZXcgZW51bSBpdGVtcyBDTURBUkdfSU5JVF9GSUxFIGFu ZAorKwlDTURBUkdfSU5JVF9DT01NQU5ELgorKwkoY2FwdHVyZWRfbWFpbik6IE5ldyBlbnVtIGl0 ZW1zIE9QVF9JWCBhbmQgT1BUX0lFWC4gIEFkZAorKwkiaW5pdC1jb21tYW5kIiwgImluaXQtZXZh bC1jb21tYW5kIiwgIml4IiBhbmQgImlleCIgdG8gdGhlIHZhcmlhYmxlCisrCWxvbmdfb3B0aW9u cy4gIEhhbmRsZSBPUFRfSVggYW5kIE9QVF9JRVguICBQcm9jZXNzIHRoZW0gZnJvbSBDTURBUkdf VkVDLgorKwlOZXcgY29tbWVudCBmb3IgQ01EQVJHX0ZJTEUgYW5kIENNREFSR19DT01NQU5EIHBy b2Nlc3NpbmcuCisrCShwcmludF9nZGJfaGVscCk6IERlc2NyaWJlIC0taW5pdC1jb21tYW5kPUZJ TEUsIC1peCBhbmQKKysJLS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4LgorKworKzIw MTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysK KyAJQ29kZSBjbGVhbnVwLgorIAkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6IE1vdmUgaXQgaGVy ZSBmcm9tIG1haW4uICBBZGQgbW9yZSBjb21tZW50cy4KKyAJKGNtZGFyZ19zLCBWRUMgKGNtZGFy Z19zKSk6IE5ldy4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6 NDE6MzAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwky MDEyLTA0LTE4IDAwOjQyOjUxLjIyNjY4MTA2OCArMDIwMAorQEAgLTI4LDYgKzI4LDEzIEBACisg ICBub3cgc2V0IGEgYnJlYWtwb2ludCBpbiBidWlsZC9nY2MvZXhwci5jLCBidXQgbm90CisgICBi dWlsZC9saWJjcHAvZXhwci5jLgorIAorKyogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCisrCisr LS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQg ZXhlY3V0ZSBpdAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgbG9h ZGluZyBpbmZlcmlvci4KKystLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXggTGlrZSAt LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtZXggYnV0CisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV4ZWN1dGUgaXQgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuCisrCisgKioqIENo YW5nZXMgaW4gR0RCIDcuNAorIAorICogR0RCIG5vdyBoYW5kbGVzIGFtYmlndW91cyBsaW5lc3Bl Y3MgbW9yZSBjb25zaXN0ZW50bHk7IHRoZSBleGlzdGluZworSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL21haW4uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDI6MTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4 ICswMjAwCitAQCAtMjg1LDcgKzI4NSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBjbWRhcmcgeworICAg ICBDTURBUkdfRklMRSwKKyAKKyAgICAgLyogT3B0aW9uIHR5cGUgLWV4LiAgKi8KKy0gICAgQ01E QVJHX0NPTU1BTkQKKysgICAgQ01EQVJHX0NPTU1BTkQsCisrCisrICAgIC8qIE9wdGlvbiB0eXBl IC1peC4gICovCisrICAgIENNREFSR19JTklUX0ZJTEUsCisrICAgIAorKyAgICAvKiBPcHRpb24g dHlwZSAtaWV4LiAgKi8KKysgICAgQ01EQVJHX0lOSVRfQ09NTUFORAorICAgfSB0eXBlOworIAor ICAgLyogVmFsdWUgb2YgdGhpcyBvcHRpb24gLSBmaWxlbmFtZSBvciB0aGUgR0RCIGNvbW1hbmQg aXRzZWxmLiAgU3RyaW5nIG1lbW9yeQorQEAgLTQzNCw3ICs0NDAsOSBAQCBjYXB0dXJlZF9tYWlu ICh2b2lkICpkYXRhKQorICAgICAgIE9QVF9TVEFUSVNUSUNTLAorICAgICAgIE9QVF9UVUksCisg ICAgICAgT1BUX05PV0lORE9XUywKKy0gICAgICBPUFRfV0lORE9XUworKyAgICAgIE9QVF9XSU5E T1dTLAorKyAgICAgIE9QVF9JWCwKKysgICAgICBPUFRfSUVYCisgICAgIH07CisgICAgIHN0YXRp YyBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1tdID0KKyAgICAgeworQEAgLTQ3NSw2ICs0ODMs MTAgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgICAgICB7InZlcnNpb24iLCBub19h cmd1bWVudCwgJnByaW50X3ZlcnNpb24sIDF9LAorICAgICAgIHsieCIsIHJlcXVpcmVkX2FyZ3Vt ZW50LCAwLCAneCd9LAorICAgICAgIHsiZXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgJ1gnfSwK KysgICAgICB7ImluaXQtY29tbWFuZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRfSVh9LAor KyAgICAgIHsiaW5pdC1ldmFsLWNvbW1hbmQiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BUX0lF WH0sCisrICAgICAgeyJpeCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRfSVh9LAorKyAgICAg IHsiaWV4IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIE9QVF9JRVh9LAorICNpZmRlZiBHREJUSwor ICAgICAgIHsidGNsY29tbWFuZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAneid9LAorICAgICAg IHsiZW5hYmxlLWV4dGVybmFsLWVkaXRvciIsIG5vX2FyZ3VtZW50LCAwLCAneSd9LAorQEAgLTYw Myw2ICs2MTUsMTkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAJICAgICAgVkVDX3Nh ZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOworIAkgICAgfQorIAkgICAg YnJlYWs7CisrCSAgY2FzZSBPUFRfSVg6CisrCSAgICB7CisrCSAgICAgIHN0cnVjdCBjbWRhcmcg Y21kYXJnID0geyBDTURBUkdfSU5JVF9GSUxFLCBvcHRhcmcgfTsKKysKKysJICAgICAgVkVDX3Nh ZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOworKwkgICAgfQorKwkgICAg YnJlYWs7CisrCSAgY2FzZSBPUFRfSUVYOgorKwkgICAgeworKwkgICAgICBzdHJ1Y3QgY21kYXJn IGNtZGFyZyA9IHsgQ01EQVJHX0lOSVRfQ09NTUFORCwgb3B0YXJnIH07CisrCisrCSAgICAgIFZF Q19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKysJICAgIH0KKyAJ ICAgIGJyZWFrOworIAkgIGNhc2UgJ0InOgorIAkgICAgYmF0Y2hfZmxhZyA9IGJhdGNoX3NpbGVu dCA9IDE7CitAQCAtODc3LDYgKzkwMiwyMCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQor ICAgcXVpdF9wcmVfcHJpbnQgPSBlcnJvcl9wcmVfcHJpbnQ7CisgICB3YXJuaW5nX3ByZV9wcmlu dCA9IF8oIlxud2FybmluZzogIik7CisgCisrICAvKiBQcm9jZXNzICctaXgnIGFuZCAnLWlleCcg b3B0aW9ucyBlYXJseS4gICovCisrICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAoY21kYXJnX3Ms IGNtZGFyZ192ZWMsIGksIGNtZGFyZ19wKTsgaSsrKQorKyAgICBzd2l0Y2ggKGNtZGFyZ19wLT50 eXBlKQorKyAgICB7CisrICAgICAgY2FzZSBDTURBUkdfSU5JVF9GSUxFOgorKyAgICAgICAgY2F0 Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGNtZGFyZ19wLT5zdHJpbmcsCisrCQkJ ICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCk7CisrCWJyZWFrOworKyAgICAgIGNh c2UgQ01EQVJHX0lOSVRfQ09NTUFORDoKKysgICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChl eGVjdXRlX2NvbW1hbmQsIGNtZGFyZ19wLT5zdHJpbmcsCisrCQkJICAgICAgIWJhdGNoX2ZsYWcs IFJFVFVSTl9NQVNLX0FMTCk7CisrCWJyZWFrOworKyAgICB9CisrCisgICAvKiBSZWFkIGFuZCBl eGVjdXRlIHRoZSBzeXN0ZW0td2lkZSBnZGJpbml0IGZpbGUsIGlmIGl0IGV4aXN0cy4KKyAgICAg IFRoaXMgaXMgZG9uZSAqYmVmb3JlKiBhbGwgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgYXJl CisgICAgICBwcm9jZXNzZWQ7IGl0IHNldHMgZ2xvYmFsIHBhcmFtZXRlcnMsIHdoaWNoIGFyZSBp bmRlcGVuZGVudCBvZgorQEAgLTk5Myw2ICsxMDMyLDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAq ZGF0YSkKKyAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKKyAgICAgbG9hZF9hdXRvX3NjcmlwdHNf Zm9yX29iamZpbGUgKG9iamZpbGUpOworIAorKyAgLyogUHJvY2VzcyAnLXgnIGFuZCAnLWV4JyBv cHRpb25zLiAgKi8KKyAgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJn X3ZlYywgaSwgY21kYXJnX3ApOyBpKyspCisgICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCisg ICAgIHsKK0BAIC0xMDkzLDYgKzExMzMsOCBAQCBPcHRpb25zOlxuXG5cCisgICAgICAgICAgICAg ICAgICAgICAgRXhlY3V0ZSBhIHNpbmdsZSBHREIgY29tbWFuZC5cblwKKyAgICAgICAgICAgICAg ICAgICAgICBNYXkgYmUgdXNlZCBtdWx0aXBsZSB0aW1lcyBhbmQgaW4gY29uanVuY3Rpb25cblwK KyAgICAgICAgICAgICAgICAgICAgICB3aXRoIC0tY29tbWFuZC5cblwKKysgIC0taW5pdC1jb21t YW5kPUZJTEUsIC1peCBMaWtlIC14IGJ1dCBleGVjdXRlIGl0IGJlZm9yZSBsb2FkaW5nIGluZmVy aW9yLlxuXAorKyAgLS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4IExpa2UgLWV4IGJ1 dCBiZWZvcmUgbG9hZGluZyBpbmZlcmlvci5cblwKKyAgIC0tY29yZT1DT1JFRklMRSAgICBBbmFs eXplIHRoZSBjb3JlIGR1bXAgQ09SRUZJTEUuXG5cCisgICAtLXBpZD1QSUQgICAgICAgICAgQXR0 YWNoIHRvIHJ1bm5pbmcgcHJvY2VzcyBQSUQuXG5cCisgIiksIHN0cmVhbSk7CitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0 MTozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMzI2ODEwNTIgKzAyMDAKK0BAIC05ODksNiAr OTg5LDIyIEBAIGFsc28gYmUgaW50ZXJsZWF2ZWQgd2l0aCBAc2FtcHstY29tbWFuZH0KKyAgICAt eCBzZXRicmVha3BvaW50cyAtZXggJ3J1bicgYS5vdXQKKyBAZW5kIHNtYWxsZXhhbXBsZQorIAor K0BpdGVtIC1pbml0LWNvbW1hbmQgQHZhcntmaWxlfQorK0BpdGVteCAtaXggQHZhcntmaWxlfQor K0BjaW5kZXggQGNvZGV7LS1pbml0LWNvbW1hbmR9CisrQGNpbmRleCBAY29kZXstaXh9CisrRXhl Y3V0ZSBjb21tYW5kcyBmcm9tIGZpbGUgQHZhcntmaWxlfSBiZWZvcmUgbG9hZGluZyBnZGJpbml0 IGZpbGVzIG9yIHRoZQorK2luZmVyaW9yLgorK0B4cmVme1N0YXJ0dXB9LgorKworK0BpdGVtIC1p bml0LWV2YWwtY29tbWFuZCBAdmFye2NvbW1hbmR9CisrQGl0ZW14IC1pZXggQHZhcntjb21tYW5k fQorK0BjaW5kZXggQGNvZGV7LS1pbml0LWV2YWwtY29tbWFuZH0KKytAY2luZGV4IEBjb2Rley1p ZXh9CisrRXhlY3V0ZSBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gY29tbWFuZCBiZWZvcmUgbG9hZGlu ZyBnZGJpbml0IGZpbGVzIG9yIHRoZQorK2luZmVyaW9yLgorK0B4cmVme1N0YXJ0dXB9LgorKwor IEBpdGVtIC1kaXJlY3RvcnkgQHZhcntkaXJlY3Rvcnl9CisgQGl0ZW14IC1kIEB2YXJ7ZGlyZWN0 b3J5fQorIEBjaW5kZXggQGNvZGV7LS1kaXJlY3Rvcnl9CitAQCAtMTI1MCw2ICsxMjY2LDEzIEBA IFNldHMgdXAgdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIgYXMgc3BlY2kKKyAoQHB4cmVme01vZGUg T3B0aW9ucywgaW50ZXJwcmV0ZXJ9KS4KKyAKKyBAaXRlbQorK0V4ZWN1dGVzIGNvbW1hbmRzIGFu ZCBjb21tYW5kIGZpbGVzIHNwZWNpZmllZCBieSB0aGUgQHNhbXB7LWlleH0gYW5kCisrQHNhbXB7 LWl4fSBvcHRpb25zIGluIHRoZWlyIHNwZWNpZmllZCBvcmRlci4gIFVzdWFsbHkgeW91IHNob3Vs ZCB1c2UgdGhlCisrQHNhbXB7LWV4fSBhbmQgQHNhbXB7LXh9IG9wdGlvbnMgaW5zdGVhZCwgYnV0 IHRoaXMgd2F5IHlvdSBjYW4gYXBwbHkKKytzZXR0aW5ncyBiZWZvcmUgQHZhbHVle0dEQk59IGlu aXQgZmlsZXMgZ2V0IGV4ZWN1dGVkIGFuZCBiZWZvcmUgaW5mZXJpb3IKKytnZXRzIGxvYWRlZC4K KysKKytAaXRlbQorIEBjaW5kZXggaW5pdCBmaWxlCisgUmVhZHMgdGhlIHN5c3RlbS13aWRlIEBk Zm57aW5pdCBmaWxlfSAoaWYgQG9wdGlvbnstLXdpdGgtc3lzdGVtLWdkYmluaXR9IHdhcworIHVz ZWQgd2hlbiBidWlsZGluZyBAdmFsdWV7R0RCTn07IEBweHJlZntTeXN0ZW0td2lkZSBjb25maWd1 cmF0aW9uLAorQEAgLTEyODMsMTQgKzEzMDYsMTEgQEAgSWYgeW91IHdpc2ggdG8gZGlzYWJsZSB0 aGUgYXV0by1sb2FkaW5nCisgeW91IG11c3QgZG8gc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2lu ZzoKKyAKKyBAc21hbGxleGFtcGxlCistJCBnZGIgLWV4ICJzZXQgYXV0by1sb2FkLXNjcmlwdHMg b2ZmIiAtZXggImZpbGUgbXlwcm9ncmFtIgorKyQgZ2RiIC1pZXggInNldCBhdXRvLWxvYWQtc2Ny aXB0cyBvZmYiIG15cHJvZ3JhbQorIEBlbmQgc21hbGxleGFtcGxlCisgCistVGhlIGZvbGxvd2lu ZyBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgdGhlIGF1dG8tbG9hZGluZyBpcyB0dXJuZWQgb2ZmIHRv byBsYXRlOgorLQorLUBzbWFsbGV4YW1wbGUKKy0kIGdkYiAtZXggInNldCBhdXRvLWxvYWQtc2Ny aXB0cyBvZmYiIG15cHJvZ3JhbQorLUBlbmQgc21hbGxleGFtcGxlCisrT3B0aW9uIEBzYW1wey1l eH0gZG9lcyBub3Qgd29yayBiZWNhdXNlIHRoZSBhdXRvLWxvYWRpbmcgaXMgdGhlbiB0dXJuZWQK KytvZmYgdG9vIGxhdGUuCisgCisgQGl0ZW0KKyBSZWFkcyBjb21tYW5kIGZpbGVzIHNwZWNpZmll ZCBieSB0aGUgQHNhbXB7LXh9IG9wdGlvbi4gIEB4cmVme0NvbW1hbmQKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3Nl bGZ0ZXN0LmV4cAkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDEyLTA0 LTE4IDAwOjQyOjUxLjIzMjY4MTA1MiArMDIwMAorQEAgLTkyLDYgKzkyLDEwIEBAIHByb2MgZG9f c3RlcHNfYW5kX25leHRzIHt9IHsKKyAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIHB5dGhv bl9zY3JpcHQgaW5pdGlhbGl6YXRpb24iCisgCQlzZXQgY29tbWFuZCAic3RlcCIKKyAJICAgIH0K KysJICAgIC1yZSAiLipjbWRhcmdfdmVjID0gTlVMTC4qJGdkYl9wcm9tcHQgJCIgeworKwkJc2V0 IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgY21kYXJnX3ZlYyBpbml0aWFsaXphdGlvbiIKKysJCXNl dCBjb21tYW5kICJzdGVwIgorKwkgICAgfQorIAkgICAgLXJlICIuKnByZV9zdGF0X2NoYWluID0g bWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAuKiRnZGJfcHJvbXB0ICQiIHsKKyAJCXNldCBkZXNj cmlwdGlvbiAibmV4dCBvdmVyIG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwIGFuZCBldmVyeXRo aW5nIGl0IGNhbGxzIgorIAkJc2V0IGNvbW1hbmQgIm5leHQiCitAQCAtMTI4LDE4ICsxMzIsNiBA QCBwcm9jIGRvX3N0ZXBzX2FuZF9uZXh0cyB7fSB7CisgCQlzZXQgZGVzY3JpcHRpb24gIm5leHQg b3ZlciBjb25kaXRpb25hbCBzdGFjayBhbGlnbm1lbnQgYWxsb2NhIgorIAkJc2V0IGNvbW1hbmQg Im5leHQiCisgCSAgICB9CistCSAgICAtcmUgIi4qY21kc2l6ZSA9IDEuKiRnZGJfcHJvbXB0ICQi IHsKKy0JCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGNtZHNpemUgaW5pdGlhbGl6YXRpb24i CistCQlzZXQgY29tbWFuZCAibmV4dCIKKy0JICAgIH0KKy0JICAgIC1yZSAiLipjbWRhcmcgPSAu KiB4bWFsbG9jLiokZ2RiX3Byb21wdCAkIiB7CistCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3Zl ciBjbWRhcmcgaW5pdGlhbGl6YXRpb24gdmlhIHhtYWxsb2MiCistCQlzZXQgY29tbWFuZCAibmV4 dCIKKy0JICAgIH0KKy0JICAgIC1yZSAiLipuY21kID0gMC4qJGdkYl9wcm9tcHQgJCIgeworLQkJ c2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgbmNtZCBpbml0aWFsaXphdGlvbiIKKy0JCXNldCBj b21tYW5kICJuZXh0IgorLQkgICAgfQorIAkgICAgLXJlICIuKmRpcnNpemUgPSAxLiokZ2RiX3By b21wdCAkIiB7CisgCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBkaXJzaXplIGluaXRpYWxp emF0aW9uIgorIAkJc2V0IGNvbW1hbmQgIm5leHQiCitAQCAtMTYzLDYgKzE1NSwxMCBAQCBwcm9j IGRvX3N0ZXBzX2FuZF9uZXh0cyB7fSB7CisgCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciB0 ZXh0ZG9tYWluIFBBQ0tBR0UiCisgCQlzZXQgY29tbWFuZCAibmV4dCIKKyAJICAgIH0KKysJICAg IC1yZSAiLipWRUNfY2xlYW51cCAuY21kYXJnX3MuKiRnZGJfcHJvbXB0ICQiIHsKKysJCXNldCBk ZXNjcmlwdGlvbiAibmV4dCBvdmVyIGNtZGFyZ19zIFZFQ19jbGVhbnVwIgorKwkJc2V0IGNvbW1h bmQgIm5leHQiCisrCSAgICB9CisgCSAgICAtcmUgIlxbMC05XF0rXFtcdCBcXStce1xyXG4kZ2Ri X3Byb21wdCAkIiB7CisgCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBpbml0aWFsIGJyYWNl IgorIAkJc2V0IGNvbW1hbmQgInN0ZXAiCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA2b2Yy Mi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wNm9mMjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGFlMTIxZWYuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTA2b2YyMi5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTItMDMvbXNnMDAyMzYuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMi8wMy8xOSAxODoxOToyMwkxLjE0MDI3Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8w My8xOSAxODoyMzo1MQkxLjE0MDI4Ci0jIyAtMSw1ICsxLDEzIEBACi0gMjAxMi0wMy0xOSAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwlDb2RlIGNsZWFu dXAuCi0rCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTog TmV3IHZhcmlhYmxlIGJhY2tfdG8uCi0rCVR1cm4gZmNsb3NlIGFuZCB4ZnJlZSBjYWxscyBpbnRv IG1ha2VfY2xlYW51cF9mY2xvc2UgYW5kIG1ha2VfY2xlYW51cAotKwl3aXRoIHhmcmVlLgotKwko YXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogVHVybiBmY2xvc2UgaW50byBtYWtlX2NsZWFudXBf ZmNsb3NlLgotKwotKzIwMTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLSsKLSAJKiBORVdTOiBEZXNjcmliZSBuZXcgb3B0aW9ucyAtLWluaXQtY29t bWFuZD1GSUxFLCAtaXggYW5kCi0gCS0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleC4K LSAJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcpOiBOZXcgZW51bSBpdGVtcyBDTURBUkdfSU5JVF9G SUxFIGFuZAotLS0tIHNyYy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTIvMDEvMjYgMjE6 NTQ6NDUJMS4xOAotKysrIHNyYy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTIvMDMvMTkg MTg6MjM6NTIJMS4xOQotQEAgLTI1NCw2ICsyNTQsNyBAQAotICAgICAgIEZJTEUgKnN0cmVhbTsK LSAgICAgICBjaGFyICpmdWxsX3BhdGg7Ci0gICAgICAgaW50IG9wZW5lZCwgaW5faGFzaF90YWJs ZTsKLSsgICAgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSAKLSAgICAgICBpZiAoKnAgIT0g MSkKLSAJewotQEAgLTI4Niw2ICsyODcsMTMgQEAKLSAgICAgICBvcGVuZWQgPSBmaW5kX2FuZF9v cGVuX3NjcmlwdCAoZmlsZSwgMSAvKnNlYXJjaF9wYXRoKi8sCi0gCQkJCSAgICAgJnN0cmVhbSwg JmZ1bGxfcGF0aCk7Ci0gCi0rICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVh bnVwLCBOVUxMKTsKLSsgICAgICBpZiAob3BlbmVkKQotKwl7Ci0rCSAgbWFrZV9jbGVhbnVwX2Zj bG9zZSAoc3RyZWFtKTsKLSsJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOwotKwl9 Ci0rCi0gICAgICAgLyogSWYgb25lIHNjcmlwdCBpc24ndCBmb3VuZCBpdCdzIG5vdCB1bmNvbW1v biBmb3IgbW9yZSB0byBub3QgYmUKLSAJIGZvdW5kIGVpdGhlci4gIFdlIGRvbid0IHdhbnQgdG8g cHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFjaAotIAkgc2NyaXB0LCB0b28gbXVjaCBub2lz ZS4gIEluc3RlYWQsIHdlIHByaW50IHRoZSB3YXJuaW5nIG9uY2UgYW5kIHRlbGwKLUBAIC0zMTMs OSArMzIxLDkgQEAKLSAJICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQs IGxvYWQgaXQuICAqLwotIAkgIGlmICghIGluX2hhc2hfdGFibGUpCi0gCSAgICBzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOwotLQkg IGZjbG9zZSAoc3RyZWFtKTsKLS0JICB4ZnJlZSAoZnVsbF9wYXRoKTsKLSAJfQotKwotKyAgICAg IGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAgICAgfQotIH0KLSAKLUBAIC00MjAsNiArNDI4LDgg QEAKLSAgICAgewotICAgICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9p bmZvOwotIAotKyAgICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKGlucHV0KTsKLSsKLSAgICAgICAv KiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9h ZC1zY3JpcHRzIgotIAkgY2FuIHByaW50IGl0LiAgKi8KLSAgICAgICBwc3BhY2VfaW5mbyA9Ci1A QCAtNDMyLDcgKzQ0Miw2IEBACi0gCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8g YmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQotIAkgbG9hZHMgYW55d2F5LiAgKi8KLSAgICAg ICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVn ZmlsZSk7Ci0tICAgICAgZmNsb3NlIChpbnB1dCk7Ci0gICAgIH0KLSAKLSAgIGRvX2NsZWFudXBz IChjbGVhbnVwcyk7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA2b2YyOC5wYXRjaCBiL2dk Yi1hdXRvbG9hZC0wNm9mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYWUxMjFlZgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wNm9mMjgucGF0Y2gK QEAgLTAsMCArMSw3MSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0w My9tc2cwMDIzNi5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE5 OjIzCTEuMTQwMjcKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjIzOjUxCTEu MTQwMjgKKyMjIC0xLDUgKzEsMTMgQEAKKyAyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisrCUNvZGUgY2xlYW51cC4KKysJKiBweXRob24v cHktYXV0by1sb2FkLmMgKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBOZXcgdmFyaWFibGUgYmFj a190by4KKysJVHVybiBmY2xvc2UgYW5kIHhmcmVlIGNhbGxzIGludG8gbWFrZV9jbGVhbnVwX2Zj bG9zZSBhbmQgbWFrZV9jbGVhbnVwCisrCXdpdGggeGZyZWUuCisrCShhdXRvX2xvYWRfb2JqZmls ZV9zY3JpcHQpOiBUdXJuIGZjbG9zZSBpbnRvIG1ha2VfY2xlYW51cF9mY2xvc2UuCisrCisrMjAx Mi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKwor IAkqIE5FV1M6IERlc2NyaWJlIG5ldyBvcHRpb25zIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCBh bmQKKyAJLS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4LgorIAkqIG1haW4uYyAoc3Ry dWN0IGNtZGFyZyk6IE5ldyBlbnVtIGl0ZW1zIENNREFSR19JTklUX0ZJTEUgYW5kCistLS0gc3Jj L2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi8wMS8yNiAyMTo1NDo0NQkxLjE4CisrKysg c3JjL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi8wMy8xOSAxODoyMzo1MgkxLjE5CitA QCAtMjU0LDYgKzI1NCw3IEBACisgICAgICAgRklMRSAqc3RyZWFtOworICAgICAgIGNoYXIgKmZ1 bGxfcGF0aDsKKyAgICAgICBpbnQgb3BlbmVkLCBpbl9oYXNoX3RhYmxlOworKyAgICAgIHN0cnVj dCBjbGVhbnVwICpiYWNrX3RvOworIAorICAgICAgIGlmICgqcCAhPSAxKQorIAl7CitAQCAtMjg2 LDYgKzI4NywxMyBAQAorICAgICAgIG9wZW5lZCA9IGZpbmRfYW5kX29wZW5fc2NyaXB0IChmaWxl LCAxIC8qc2VhcmNoX3BhdGgqLywKKyAJCQkJICAgICAmc3RyZWFtLCAmZnVsbF9wYXRoKTsKKyAK KysgICAgICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworKyAg ICAgIGlmIChvcGVuZWQpCisrCXsKKysJICBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOwor KwkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0aCk7CisrCX0KKysKKyAgICAgICAvKiBJ ZiBvbmUgc2NyaXB0IGlzbid0IGZvdW5kIGl0J3Mgbm90IHVuY29tbW9uIGZvciBtb3JlIHRvIG5v dCBiZQorIAkgZm91bmQgZWl0aGVyLiAgV2UgZG9uJ3Qgd2FudCB0byBwcmludCBhbiBlcnJvciBt ZXNzYWdlIGZvciBlYWNoCisgCSBzY3JpcHQsIHRvbyBtdWNoIG5vaXNlLiAgSW5zdGVhZCwgd2Ug cHJpbnQgdGhlIHdhcm5pbmcgb25jZSBhbmQgdGVsbAorQEAgLTMxMyw5ICszMjEsOSBAQAorIAkg IC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCisg CSAgaWYgKCEgaW5faGFzaF90YWJsZSkKKyAJICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9v YmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7CistCSAgZmNsb3NlIChzdHJlYW0p OworLQkgIHhmcmVlIChmdWxsX3BhdGgpOworIAl9CisrCisrICAgICAgZG9fY2xlYW51cHMgKGJh Y2tfdG8pOworICAgICB9CisgfQorIAorQEAgLTQyMCw2ICs0MjgsOCBAQAorICAgICB7CisgICAg ICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CisgCisrICAgICAg bWFrZV9jbGVhbnVwX2ZjbG9zZSAoaW5wdXQpOworKworICAgICAgIC8qIEFkZCB0aGlzIHNjcmlw dCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkLXNjcmlwdHMiCisgCSBj YW4gcHJpbnQgaXQuICAqLworICAgICAgIHBzcGFjZV9pbmZvID0KK0BAIC00MzIsNyArNDQyLDYg QEAKKyAJIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVu ZGVyIG11bHRpcGxlCisgCSBsb2FkcyBhbnl3YXkuICAqLworICAgICAgIHNvdXJjZV9weXRob25f c2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKKy0gICAgICBm Y2xvc2UgKGlucHV0KTsKKyAgICAgfQorIAorICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKCmRp ZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDdvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA3b2Yy Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFkMTI5ZS4uMDAwMDAwMAot LS0gYS9nZGItYXV0b2xvYWQtMDdvZjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAs MCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDI5Ni5o dG1sCi0KLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wMy8yMiAwODoxMDo0MQkxLjEy ODkKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wMy8yNyAyMDoxNToyMAkxLjEyOTAK LSMjIC0xLDMgKzEsMTIgQEAKLSsyMDEyLTAzLTI3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyk6IFJl bmFtZSBub2RlIHJlZmVyZW5jZQotKwknLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24nIHRvICdk b3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uJy4KLSsJVHdpY2UuCi0rCSguZGVidWdfZ2RiX3Nj cmlwdHMgc2VjdGlvbik6IFJlbmFtZSB0aGUgbm9kZSAuLi4KLSsJKGRvdGRlYnVnX2dkYl9zY3Jp cHRzIHNlY3Rpb24pOiAuLi4gaGVyZS4KLSsJKE1haW50ZW5hbmNlIENvbW1hbmRzKTogQWxzbyBy ZW5hbWUgdGhpcyBub2RlIHJlZmVyZW5jZS4KLSsKLSAyMDEyLTAzLTIyICBTaXZhIENoYW5kcmEg UmVkZHkgIDxzaXZhY2hhbmRyYUBnb29nbGUuY29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChQeXRo b24gQVBJL1ZhbHVlcyBGcm9tIEluZmVyaW9yKTogQWRkIGRlc2NyaXB0aW9uCi0tLS0gc3JjL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wMy8yMiAwODoxMDo0MQkxLjkzNgotKysrIHNyYy9nZGIv ZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDMvMjcgMjA6MTU6MjAJMS45MzcKLUBAIC0yNDcxNyw4ICsy NDcxNyw4IEBACi0gQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9IGFuZCBAY29kZXsuZGVidWdf Z2RiX3NjcmlwdHN9IHNlY3Rpb24uCi0gCi0gQG1lbnUKLS0qIG9iamZpbGUtZ2RiLnB5IGZpbGU6 OiAgICAgICAgIFRoZSBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0gZmlsZQotLSogLmRlYnVn X2dkYl9zY3JpcHRzIHNlY3Rpb246OiAgVGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2Vj dGlvbgotKyogb2JqZmlsZS1nZGIucHkgZmlsZTo6ICAgICAgICAgIFRoZSBAZmlsZXtAdmFye29i amZpbGV9LWdkYi5weX0gZmlsZQotKyogZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbjo6IFRo ZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KLSAqIFdoaWNoIGZsYXZvciB0byBj aG9vc2U/OjoKLSBAZW5kIG1lbnUKLSAKLUBAIC0yNDc0NCw3ICsyNDc0NCw3IEBACi0gCi0gQWxz byBwcmludGVkIGlzIHRoZSBsaXN0IG9mIHNjcmlwdHMgdGhhdCB3ZXJlIG1lbnRpb25lZCBpbgot IHRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24gYW5kIHdlcmUgbm90IGZvdW5k Ci0tKEBweHJlZnsuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbn0pLgotKyhAcHhyZWZ7ZG90ZGVi dWdfZ2RiX3NjcmlwdHMgc2VjdGlvbn0pLgotIFRoaXMgaXMgdXNlZnVsIGJlY2F1c2UgdGhlaXIg bmFtZXMgYXJlIG5vdCBwcmludGVkIHdoZW4gQHZhbHVle0dEQk59Ci0gdHJpZXMgdG8gbG9hZCB0 aGVtIGFuZCBmYWlscy4gIFRoZXJlIG1heSBiZSBtYW55IG9mIHRoZW0sIGFuZCBwcmludGluZwot IGFuIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2ggb25lIGlzIHByb2JsZW1hdGljLgotQEAgLTI0Nzk1 LDcgKzI0Nzk1LDcgQEAKLSBTbyB5b3VyIEBmaWxley1nZGIucHl9IGZpbGUgc2hvdWxkIGJlIGNh cmVmdWwgdG8gYXZvaWQgZXJyb3JzIGlmIGl0Ci0gaXMgZXZhbHVhdGVkIG1vcmUgdGhhbiBvbmNl LgotIAotLUBub2RlIC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uCi0rQG5vZGUgZG90ZGVidWdf Z2RiX3NjcmlwdHMgc2VjdGlvbgotIEBzdWJzdWJzZWN0aW9uIFRoZSBAY29kZXsuZGVidWdfZ2Ri X3NjcmlwdHN9IHNlY3Rpb24KLSBAY2luZGV4IEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2Vj dGlvbgotIAotQEAgLTMzNDc1LDcgKzMzNDc1LDcgQEAKLSBtYXRjaGluZyBAdmFye3JlZ2V4cH0u Ci0gRm9yIGVhY2ggc2NyaXB0LCB0aGlzIGNvbW1hbmQgcHJpbnRzIGl0cyBuYW1lIGFzIHNwZWNp ZmllZCBpbiB0aGUgb2JqZmlsZSwKLSBhbmQgdGhlIGZ1bGwgcGF0aCBpZiBrbm93bi4KLS1AeHJl ZnsuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbn0uCi0rQHhyZWZ7ZG90ZGVidWdfZ2RiX3Njcmlw dHMgc2VjdGlvbn0uCi0gCi0gQGtpbmRleCBtYWludCBwcmludCBzdGF0aXN0aWNzCi0gQGNpbmRl eCBiY2FjaGUgc3RhdGlzdGljcwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wN29mMjgucGF0 Y2ggYi9nZGItYXV0b2xvYWQtMDdvZjI4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjUxZDEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDdvZjI4 LnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3Zz LzIwMTItMDMvbXNnMDAyOTYuaHRtbAorCisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIv MDMvMjIgMDg6MTA6NDEJMS4xMjg5CisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDMv MjcgMjA6MTU6MjAJMS4xMjkwCisjIyAtMSwzICsxLDEyIEBACisrMjAxMi0wMy0yNyAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwkqIGdkYi50ZXhpbmZv IChBdXRvLWxvYWRpbmcpOiBSZW5hbWUgbm9kZSByZWZlcmVuY2UKKysJJy5kZWJ1Z19nZGJfc2Ny aXB0cyBzZWN0aW9uJyB0byAnZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbicuCisrCVR3aWNl LgorKwkoLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24pOiBSZW5hbWUgdGhlIG5vZGUgLi4uCisr CShkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uKTogLi4uIGhlcmUuCisrCShNYWludGVuYW5j ZSBDb21tYW5kcyk6IEFsc28gcmVuYW1lIHRoaXMgbm9kZSByZWZlcmVuY2UuCisrCisgMjAxMi0w My0yMiAgU2l2YSBDaGFuZHJhIFJlZGR5ICA8c2l2YWNoYW5kcmFAZ29vZ2xlLmNvbT4KKyAKKyAJ KiBnZGIudGV4aW5mbyAoUHl0aG9uIEFQSS9WYWx1ZXMgRnJvbSBJbmZlcmlvcik6IEFkZCBkZXNj cmlwdGlvbgorLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDMvMjIgMDg6MTA6NDEJ MS45MzYKKysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzAzLzI3IDIwOjE1OjIwCTEu OTM3CitAQCAtMjQ3MTcsOCArMjQ3MTcsOCBAQAorIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5 fSBhbmQgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uLgorIAorIEBtZW51CistKiBv YmpmaWxlLWdkYi5weSBmaWxlOjogICAgICAgICBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIu cHl9IGZpbGUKKy0qIC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uOjogIFRoZSBAY29kZXsuZGVi dWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KKysqIG9iamZpbGUtZ2RiLnB5IGZpbGU6OiAgICAgICAg ICBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9IGZpbGUKKysqIGRvdGRlYnVnX2dkYl9z Y3JpcHRzIHNlY3Rpb246OiBUaGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCisg KiBXaGljaCBmbGF2b3IgdG8gY2hvb3NlPzo6CisgQGVuZCBtZW51CisgCitAQCAtMjQ3NDQsNyAr MjQ3NDQsNyBAQAorIAorIEFsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQg d2VyZSBtZW50aW9uZWQgaW4KKyB0aGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9u IGFuZCB3ZXJlIG5vdCBmb3VuZAorLShAcHhyZWZ7LmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259 KS4KKysoQHB4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259KS4KKyBUaGlzIGlzIHVz ZWZ1bCBiZWNhdXNlIHRoZWlyIG5hbWVzIGFyZSBub3QgcHJpbnRlZCB3aGVuIEB2YWx1ZXtHREJO fQorIHRyaWVzIHRvIGxvYWQgdGhlbSBhbmQgZmFpbHMuICBUaGVyZSBtYXkgYmUgbWFueSBvZiB0 aGVtLCBhbmQgcHJpbnRpbmcKKyBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoIG9uZSBpcyBwcm9i bGVtYXRpYy4KK0BAIC0yNDc5NSw3ICsyNDc5NSw3IEBACisgU28geW91ciBAZmlsZXstZ2RiLnB5 fSBmaWxlIHNob3VsZCBiZSBjYXJlZnVsIHRvIGF2b2lkIGVycm9ycyBpZiBpdAorIGlzIGV2YWx1 YXRlZCBtb3JlIHRoYW4gb25jZS4KKyAKKy1Abm9kZSAuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlv bgorK0Bub2RlIGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24KKyBAc3Vic3Vic2VjdGlvbiBU aGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCisgQGNpbmRleCBAY29kZXsuZGVi dWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KKyAKK0BAIC0zMzQ3NSw3ICszMzQ3NSw3IEBACisgbWF0 Y2hpbmcgQHZhcntyZWdleHB9LgorIEZvciBlYWNoIHNjcmlwdCwgdGhpcyBjb21tYW5kIHByaW50 cyBpdHMgbmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhlIG9iamZpbGUsCisgYW5kIHRoZSBmdWxsIHBh dGggaWYga25vd24uCistQHhyZWZ7LmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259LgorK0B4cmVm e2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259LgorIAorIEBraW5kZXggbWFpbnQgcHJpbnQg c3RhdGlzdGljcworIEBjaW5kZXggYmNhY2hlIHN0YXRpc3RpY3MKCmRpZmYgLS1naXQgYS9nZGIt YXV0b2xvYWQtMDhvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA4b2YyMi5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ4YmZjMS4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xv YWQtMDhvZjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLVtwYXRjaCM0 IDIvOF0gQ29kZSBjbGVhbnVwOiBuZXcgcGF0aCB0byBWRUMgaW4gdXRpbHMuYwotaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODYuaHRtbAotaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExMS5odG1sCi0gLSByZWR1 Y2VkIGZvciB0aGUgYmFja3BvcnQKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcg MTU6NDU6MDUJMS4xNDExMAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NDc6 MDgJMS4xNDExMQotIyMgLTEsNiArMSwzNCBAQAotIDIwMTItMDQtMTcgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSAJQ29kZSBjbGVhbnVwLgotKwkqIGNo YXJzZXQuYyAoZmluZF9jaGFyc2V0X25hbWVzKTogUmVtb3ZlIHZhcmlhYmxlcyBpeCBhbmQgZWx0 LgotKwlVc2UgZnJlZV9jaGFyX3B0cl92ZWMuCi0rCSogZWxmcmVhZC5jIChidWlsZF9pZF90b19k ZWJ1Z19maWxlbmFtZSk6IE5ldyB2YXJpYWJsZXMgZGVidWdkaXJfdmVjLAotKwliYWNrX3RvIGFu ZCBpeC4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBSZW1vdmUgdmFyaWFibGUKLSsJ ZGVidWdkaXJfZW5kLiAgTmV3IHZhcmlhYmxlIGRlYnVnZGlyX2xlbi4KLSsJKiBnZGJfdmVjcy5o IChmcmVlX2NoYXJfcHRyX3ZlYywgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjKQotKwko ZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCwgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVj KTogTmV3Ci0rCWRlY2xhcmF0aW9ucy4KLSsJKiBwcm9nc3BhY2UuYyAoY2xlYXJfcHJvZ3JhbV9z cGFjZV9zb2xpYl9jYWNoZSk6IFJlbW92ZSB2YXJpYWJsZXMgaXgKLSsJYW5kIGVsdC4gIFVzZSBm cmVlX2NoYXJfcHRyX3ZlYy4KLSsJKiBzb3VyY2UuYyAoYWRkX3BhdGgpOiBSZW1vdmUgdmFyaWFi bGVzIGFyZ3YsIGFyZyBhbmQgYXJndl9pbmRleC4KLSsJTmV3IHZhcmlhYmxlcyBkaXJfdmVjLCBi YWNrX3RvLCBpeCBhbmQgbmFtZS4KLSsJVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBl bmQuICBVc2UgZnJlZWFyZ3YgaW5zdGVhZCBvZgotKwltYWtlX2NsZWFudXBfZnJlZWFyZ3YuICBS ZW1vdmUgdmFyaWFibGUgc2VwYXJhdG9yLiAgU2ltcGxpZnkgdGhlIGNvZGUKLSsJbm8gbG9uZ2Vy IGV4cGVjdGluZyBESVJOQU1FX1NFUEFSQVRPUi4KLSsJKG9wZW5wKTogUmVtb3ZlIHZhcmlhYmxl IHAsIHAxIGFuZCBsZW4uICBOZXcgdmFyaWFibGVzIGRpcl92ZWMsCi0rCWJhY2tfdG8sIGl4IGFu ZCBkaXIuICBVc2UgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLiAgU2ltcGxpZnkgdGhlIGNvZGUK LSsJbm8gbG9uZ2VyIGV4cGVjdGluZyBESVJOQU1FX1NFUEFSQVRPUi4KLSsJKiBzeW1maWxlLmMg KGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSk6IE5ldyB2YXJpYWJsZXMgZGVidWdkaXJfdmVjLAot KwliYWNrX3RvIGFuZCBpeC4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBSZW1vdmUg dmFyaWFibGUKLSsJZGVidWdkaXJfZW5kLgotKwkqIHV0aWxzLmMgKGZyZWVfY2hhcl9wdHJfdmVj LCBkb19mcmVlX2NoYXJfcHRyX3ZlYykKLSsJKG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3Zl YywgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCkKLSsJKGRpcm5hbWVzX3RvX2NoYXJf cHRyX3ZlYyk6IE5ldyBmdW5jdGlvbnMuCi0rCi0rMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlDb2RlIGNsZWFudXAuCi0gCSogc291 cmNlLmMgKGFkZF9wYXRoKTogUmVtb3ZlIGFsd2F5cyB0cnVlIGNvbmRpdGlvbmFsICdwID09IDAn IGFuZAotIAl1bmluZGVudCBpdHMgY29kZSBibG9jay4KLSAKLUluZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9nZGJfdmVjcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEy MC5vcmlnL2dkYi9nZGJfdmVjcy5oCTIwMTItMDQtMTggMDA6NDA6MTIuMDY3MDg2MDE2ICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0LTE4IDAwOjQw OjIzLjQ3NDA1Njk5MyArMDIwMAotQEAgLTI1LDQgKzI1LDE2IEBACi0gCi0gREVGX1ZFQ19QIChj aGFyX3B0cik7Ci0gCi0rLyogRnJvbSB1dGlscy5jOiAqLwotKwotK2V4dGVybiB2b2lkIGZyZWVf Y2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKTsKLSsKLStleHRlcm4g c3RydWN0IGNsZWFudXAgKgotKyAgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChWRUMg KGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKTsKLSsKLStleHRlcm4gdm9pZCBkaXJuYW1lc190b19j aGFyX3B0cl92ZWNfYXBwZW5kIChWRUMgKGNoYXJfcHRyKSAqKnZlY3AsCi0rCQkJCQkgICAgIGNv bnN0IGNoYXIgKmRpcm5hbWVzKTsKLSsKLStleHRlcm4gVkVDIChjaGFyX3B0cikgKmRpcm5hbWVz X3RvX2NoYXJfcHRyX3ZlYyAoY29uc3QgY2hhciAqZGlybmFtZXMpOwotKwotICNlbmRpZiAvKiBH REJfVkVDU19IICovCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdXRpbHMuYwkyMDEyLTA0 LTE4IDAwOjQwOjEyLjA2ODA4NjAxMyArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3V0aWxzLmMJMjAxMi0wNC0xOCAwMDo0MDo0OS44NjI5ODk4NTUgKzAyMDAKLUBAIC0yOSw2ICsy OSw3IEBACi0gI2lmZGVmIEhBVkVfU1lTX1JFU09VUkNFX0gKLSAjaW5jbHVkZSA8c3lzL3Jlc291 cmNlLmg+Ci0gI2VuZGlmIC8qIEhBVkVfU1lTX1JFU09VUkNFX0ggKi8KLSsjaW5jbHVkZSAiZ2Ri X3ZlY3MuaCIKLSAKLSAjaWZkZWYgVFVJCi0gI2luY2x1ZGUgInR1aS90dWkuaCIJCS8qIEZvciB0 dWlfZ2V0X2NvbW1hbmRfZGltZW5zaW9uLiAgICovCi1AQCAtMzgzNSw2ICszODM2LDk1IEBAIHBy b2R1Y2VyX2lzX2djY19nZV80IChjb25zdCBjaGFyICpwcm9kdWMKLSAgIHJldHVybiBtaW5vcjsK LSB9Ci0gCi0rLyogQ2FsbCB4ZnJlZSBmb3IgZWFjaCBlbGVtZW50IG9mIENIQVJfUFRSX1ZFQyBh bmQgZmluYWwgVkVDX2ZyZWUgZm9yCi0rICAgQ0hBUl9QVFJfVkVDIGl0c2VsZi4KLSsKLSsgICBZ b3UgbXVzdCBub3QgbW9kaWZ5IENIQVJfUFRSX1ZFQyBhZnRlciBpdCBnb3QgcmVnaXN0ZXJlZCB3 aXRoIHRoaXMgZnVuY3Rpb24KLSsgICBieSBtYWtlX2NsZWFudXAgYXMgdGhlIENIQVJfUFRSX1ZF QyBiYXNlIGFkZHJlc3MgbWF5IGNoYW5nZSBvbiBpdHMgdXBkYXRlcy4KLSsgICBDb250cmFyeSB0 byBWRUNfZnJlZSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IChjYW5ub3QpIGNsZWFyIHRoZSBwb2lu dGVyLiAgKi8KLSsKLSt2b2lkCi0rZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpj aGFyX3B0cl92ZWMpCi0rewotKyAgaW50IGl4OwotKyAgY2hhciAqbmFtZTsKLSsKLSsgIGZvciAo aXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGNoYXJfcHRyX3ZlYywgaXgsIG5hbWUpOyAr K2l4KQotKyAgICB4ZnJlZSAobmFtZSk7Ci0rICBWRUNfZnJlZSAoY2hhcl9wdHIsIGNoYXJfcHRy X3ZlYyk7Ci0rfQotKwotKy8qIEhlbHBlciBmb3IgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJf dmVjLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2RvX2ZyZWVfY2hhcl9wdHJfdmVjICh2b2lkICph cmcpCi0rewotKyAgVkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYyA9IGFyZzsKLSsKLSsgIGZy ZWVfY2hhcl9wdHJfdmVjIChjaGFyX3B0cl92ZWMpOwotK30KLSsKLSsvKiBNYWtlIGNsZWFudXAg aGFuZGxlciBjYWxsaW5nIHhmcmVlIGZvciBlYWNoIGVsZW1lbnQgb2YgQ0hBUl9QVFJfVkVDIGFu ZAotKyAgIGZpbmFsIFZFQ19mcmVlIGZvciBDSEFSX1BUUl9WRUMgaXRzZWxmLgotKwotKyAgIFlv dSBtdXN0IG5vdCBtb2RpZnkgQ0hBUl9QVFJfVkVDIGFmdGVyIHRoaXMgY2xlYW51cCByZWdpc3Ry YXRpb24gYXMgdGhlCi0rICAgQ0hBUl9QVFJfVkVDIGJhc2UgYWRkcmVzcyBtYXkgY2hhbmdlIG9u IGl0cyB1cGRhdGVzLiAgQ29udHJhcnkgdG8gVkVDX2ZyZWUKLSsgICB0aGlzIGZ1bmN0aW9uIGRv ZXMgbm90IChjYW5ub3QpIGNsZWFyIHRoZSBwb2ludGVyLiAgKi8KLSsKLStzdHJ1Y3QgY2xlYW51 cCAqCi0rbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAqY2hh cl9wdHJfdmVjKQotK3sKLSsgIHJldHVybiBtYWtlX2NsZWFudXAgKGRvX2ZyZWVfY2hhcl9wdHJf dmVjLCBjaGFyX3B0cl92ZWMpOwotK30KLSsKLSsvKiBFeHRlbmRlZCB2ZXJzaW9uIG9mIGRpcm5h bWVzX3RvX2NoYXJfcHRyX3ZlYyAtIGFkZGl0aW9uYWxseSBpZiAqVkVDUCBpcwotKyAgIG5vbi1O VUxMIHRoZSBuZXcgbGlzdCBlbGVtZW50cyBmcm9tIERJUk5BTUVTIGFyZSBhcHBlbmRlZCB0byB0 aGUgZXhpc3RpbmcKLSsgICAqVkVDUCBsaXN0IG9mIGVudHJpZXMuICAqVkVDUCBhZGRyZXNzIHdp bGwgYmUgdXBkYXRlZCBieSB0aGlzIGNhbGwuICAqLwotKwotK3ZvaWQKLStkaXJuYW1lc190b19j aGFyX3B0cl92ZWNfYXBwZW5kIChWRUMgKGNoYXJfcHRyKSAqKnZlY3AsIGNvbnN0IGNoYXIgKmRp cm5hbWVzKQotK3sKLSsgIGRvCi0rICAgIHsKLSsgICAgICBzaXplX3QgdGhpc19sZW47Ci0rICAg ICAgY2hhciAqbmV4dF9kaXIsICp0aGlzX2RpcjsKLSsKLSsgICAgICBuZXh0X2RpciA9IHN0cmNo ciAoZGlybmFtZXMsIERJUk5BTUVfU0VQQVJBVE9SKTsKLSsgICAgICBpZiAobmV4dF9kaXIgPT0g TlVMTCkKLSsJdGhpc19sZW4gPSBzdHJsZW4gKGRpcm5hbWVzKTsKLSsgICAgICBlbHNlCi0rCXsK LSsJICB0aGlzX2xlbiA9IG5leHRfZGlyIC0gZGlybmFtZXM7Ci0rCSAgbmV4dF9kaXIrKzsKLSsJ fQotKwotKyAgICAgIHRoaXNfZGlyID0geG1hbGxvYyAodGhpc19sZW4gKyAxKTsKLSsgICAgICBt ZW1jcHkgKHRoaXNfZGlyLCBkaXJuYW1lcywgdGhpc19sZW4pOwotKyAgICAgIHRoaXNfZGlyW3Ro aXNfbGVuXSA9ICdcMCc7Ci0rICAgICAgVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsICp2ZWNwLCB0 aGlzX2Rpcik7Ci0rCi0rICAgICAgZGlybmFtZXMgPSBuZXh0X2RpcjsKLSsgICAgfQotKyAgd2hp bGUgKGRpcm5hbWVzICE9IE5VTEwpOwotK30KLSsKLSsvKiBTcGxpdCBESVJOQU1FUyBieSBESVJO QU1FX1NFUEFSQVRPUiBkZWxpbWl0ZXIgYW5kIHJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZQotKyAg IGVsZW1lbnRzIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLiAgRm9yIGVtcHR5IHN0cmluZyAoIiIp IERJUk5BTUVTIHJldHVybgotKyAgIGxpc3Qgb2Ygb25lIGVtcHR5IHN0cmluZyAoIiIpIGVsZW1l bnQuCi0rICAgCi0rICAgWW91IG1heSBtb2RpZnkgdGhlIHJldHVybmVkIHN0cmluZ3MuCi0rICAg UmVhZCBmcmVlX2NoYXJfcHRyX3ZlYyBmb3IgaXRzIGNsZWFudXAuICAqLwotKwotK1ZFQyAoY2hh cl9wdHIpICoKLStkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGNvbnN0IGNoYXIgKmRpcm5hbWVz KQotK3sKLSsgIFZFQyAoY2hhcl9wdHIpICpyZXR2YWwgPSBOVUxMOwotKyAgCi0rICBkaXJuYW1l c190b19jaGFyX3B0cl92ZWNfYXBwZW5kICgmcmV0dmFsLCBkaXJuYW1lcyk7Ci0rCi0rICByZXR1 cm4gcmV0dmFsOwotK30KLSsKLSAjaWZkZWYgSEFWRV9XQUlUUElECi0gCi0gI2lmZGVmIFNJR0FM Uk0KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDhvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2Fk LTA4b2YyOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDhiZmMx Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA4b2YyOC5wYXRjaApAQCAtMCwwICsx LDE3MSBAQAorW3BhdGNoIzQgMi84XSBDb2RlIGNsZWFudXA6IG5ldyBwYXRoIHRvIFZFQyBpbiB1 dGlscy5jCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cw MDA4Ni5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAw MTExLmh0bWwKKyAtIHJlZHVjZWQgZm9yIHRoZSBiYWNrcG9ydAorCisjIyMgc3JjL2dkYi9DaGFu Z2VMb2cJMjAxMi8wNC8xNyAxNTo0NTowNQkxLjE0MTEwCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMi8wNC8xNyAxNTo0NzowOAkxLjE0MTExCisjIyAtMSw2ICsxLDM0IEBACisgMjAxMi0wNC0x NyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorIAlDb2Rl IGNsZWFudXAuCisrCSogY2hhcnNldC5jIChmaW5kX2NoYXJzZXRfbmFtZXMpOiBSZW1vdmUgdmFy aWFibGVzIGl4IGFuZCBlbHQuCisrCVVzZSBmcmVlX2NoYXJfcHRyX3ZlYy4KKysJKiBlbGZyZWFk LmMgKGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lKTogTmV3IHZhcmlhYmxlcyBkZWJ1Z2Rpcl92 ZWMsCisrCWJhY2tfdG8gYW5kIGl4LiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYy4gIFJl bW92ZSB2YXJpYWJsZQorKwlkZWJ1Z2Rpcl9lbmQuICBOZXcgdmFyaWFibGUgZGVidWdkaXJfbGVu LgorKwkqIGdkYl92ZWNzLmggKGZyZWVfY2hhcl9wdHJfdmVjLCBtYWtlX2NsZWFudXBfZnJlZV9j aGFyX3B0cl92ZWMpCisrCShkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kLCBkaXJuYW1l c190b19jaGFyX3B0cl92ZWMpOiBOZXcKKysJZGVjbGFyYXRpb25zLgorKwkqIHByb2dzcGFjZS5j IChjbGVhcl9wcm9ncmFtX3NwYWNlX3NvbGliX2NhY2hlKTogUmVtb3ZlIHZhcmlhYmxlcyBpeAor KwlhbmQgZWx0LiAgVXNlIGZyZWVfY2hhcl9wdHJfdmVjLgorKwkqIHNvdXJjZS5jIChhZGRfcGF0 aCk6IFJlbW92ZSB2YXJpYWJsZXMgYXJndiwgYXJnIGFuZCBhcmd2X2luZGV4LgorKwlOZXcgdmFy aWFibGVzIGRpcl92ZWMsIGJhY2tfdG8sIGl4IGFuZCBuYW1lLgorKwlVc2UgZGlybmFtZXNfdG9f Y2hhcl9wdHJfdmVjX2FwcGVuZC4gIFVzZSBmcmVlYXJndiBpbnN0ZWFkIG9mCisrCW1ha2VfY2xl YW51cF9mcmVlYXJndi4gIFJlbW92ZSB2YXJpYWJsZSBzZXBhcmF0b3IuICBTaW1wbGlmeSB0aGUg Y29kZQorKwlubyBsb25nZXIgZXhwZWN0aW5nIERJUk5BTUVfU0VQQVJBVE9SLgorKwkob3BlbnAp OiBSZW1vdmUgdmFyaWFibGUgcCwgcDEgYW5kIGxlbi4gIE5ldyB2YXJpYWJsZXMgZGlyX3ZlYywK KysJYmFja190bywgaXggYW5kIGRpci4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBT aW1wbGlmeSB0aGUgY29kZQorKwlubyBsb25nZXIgZXhwZWN0aW5nIERJUk5BTUVfU0VQQVJBVE9S LgorKwkqIHN5bWZpbGUuYyAoZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlKTogTmV3IHZhcmlhYmxl cyBkZWJ1Z2Rpcl92ZWMsCisrCWJhY2tfdG8gYW5kIGl4LiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJf cHRyX3ZlYy4gIFJlbW92ZSB2YXJpYWJsZQorKwlkZWJ1Z2Rpcl9lbmQuCisrCSogdXRpbHMuYyAo ZnJlZV9jaGFyX3B0cl92ZWMsIGRvX2ZyZWVfY2hhcl9wdHJfdmVjKQorKwkobWFrZV9jbGVhbnVw X2ZyZWVfY2hhcl9wdHJfdmVjLCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kKQorKwko ZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjKTogTmV3IGZ1bmN0aW9ucy4KKysKKysyMDEyLTA0LTE3 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCUNvZGUg Y2xlYW51cC4KKyAJKiBzb3VyY2UuYyAoYWRkX3BhdGgpOiBSZW1vdmUgYWx3YXlzIHRydWUgY29u ZGl0aW9uYWwgJ3AgPT0gMCcgYW5kCisgCXVuaW5kZW50IGl0cyBjb2RlIGJsb2NrLgorIAorSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYl92ZWNzLmgKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2dkYl92ZWNzLmgJMjAxMi0wNC0xOCAwMDo0MDox Mi4wNjcwODYwMTYgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJfdmVjcy5o CTIwMTItMDQtMTggMDA6NDA6MjMuNDc0MDU2OTkzICswMjAwCitAQCAtMjUsNCArMjUsMTYgQEAK KyAKKyBERUZfVkVDX1AgKGNoYXJfcHRyKTsKKyAKKysvKiBGcm9tIHV0aWxzLmM6ICovCisrCisr ZXh0ZXJuIHZvaWQgZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92 ZWMpOworKworK2V4dGVybiBzdHJ1Y3QgY2xlYW51cCAqCisrICBtYWtlX2NsZWFudXBfZnJlZV9j aGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpOworKworK2V4dGVybiB2 b2lkIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKFZFQyAoY2hhcl9wdHIpICoqdmVj cCwKKysJCQkJCSAgICAgY29uc3QgY2hhciAqZGlybmFtZXMpOworKworK2V4dGVybiBWRUMgKGNo YXJfcHRyKSAqZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaXJuYW1lcyk7 CisrCisgI2VuZGlmIC8qIEdEQl9WRUNTX0ggKi8KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi91dGlscy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi91dGlscy5jCTIwMTItMDQtMTggMDA6NDA6MTIuMDY4MDg2MDEzICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYwkyMDEyLTA0LTE4IDAwOjQwOjQ5Ljg2Mjk4OTg1NSAr MDIwMAorQEAgLTI5LDYgKzI5LDcgQEAKKyAjaWZkZWYgSEFWRV9TWVNfUkVTT1VSQ0VfSAorICNp bmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyAjZW5kaWYgLyogSEFWRV9TWVNfUkVTT1VSQ0VfSCAq LworKyNpbmNsdWRlICJnZGJfdmVjcy5oIgorIAorICNpZmRlZiBUVUkKKyAjaW5jbHVkZSAidHVp L3R1aS5oIgkJLyogRm9yIHR1aV9nZXRfY29tbWFuZF9kaW1lbnNpb24uICAgKi8KK0BAIC0zODM1 LDYgKzM4MzYsOTUgQEAgcHJvZHVjZXJfaXNfZ2NjX2dlXzQgKGNvbnN0IGNoYXIgKnByb2R1Ywor ICAgcmV0dXJuIG1pbm9yOworIH0KKyAKKysvKiBDYWxsIHhmcmVlIGZvciBlYWNoIGVsZW1lbnQg b2YgQ0hBUl9QVFJfVkVDIGFuZCBmaW5hbCBWRUNfZnJlZSBmb3IKKysgICBDSEFSX1BUUl9WRUMg aXRzZWxmLgorKworKyAgIFlvdSBtdXN0IG5vdCBtb2RpZnkgQ0hBUl9QVFJfVkVDIGFmdGVyIGl0 IGdvdCByZWdpc3RlcmVkIHdpdGggdGhpcyBmdW5jdGlvbgorKyAgIGJ5IG1ha2VfY2xlYW51cCBh cyB0aGUgQ0hBUl9QVFJfVkVDIGJhc2UgYWRkcmVzcyBtYXkgY2hhbmdlIG9uIGl0cyB1cGRhdGVz LgorKyAgIENvbnRyYXJ5IHRvIFZFQ19mcmVlIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgKGNhbm5v dCkgY2xlYXIgdGhlIHBvaW50ZXIuICAqLworKworK3ZvaWQKKytmcmVlX2NoYXJfcHRyX3ZlYyAo VkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYykKKyt7CisrICBpbnQgaXg7CisrICBjaGFyICpu YW1lOworKworKyAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgY2hhcl9wdHJf dmVjLCBpeCwgbmFtZSk7ICsraXgpCisrICAgIHhmcmVlIChuYW1lKTsKKysgIFZFQ19mcmVlIChj aGFyX3B0ciwgY2hhcl9wdHJfdmVjKTsKKyt9CisrCisrLyogSGVscGVyIGZvciBtYWtlX2NsZWFu dXBfZnJlZV9jaGFyX3B0cl92ZWMuICAqLworKworK3N0YXRpYyB2b2lkCisrZG9fZnJlZV9jaGFy X3B0cl92ZWMgKHZvaWQgKmFyZykKKyt7CisrICBWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVj ID0gYXJnOworKworKyAgZnJlZV9jaGFyX3B0cl92ZWMgKGNoYXJfcHRyX3ZlYyk7CisrfQorKwor Ky8qIE1ha2UgY2xlYW51cCBoYW5kbGVyIGNhbGxpbmcgeGZyZWUgZm9yIGVhY2ggZWxlbWVudCBv ZiBDSEFSX1BUUl9WRUMgYW5kCisrICAgZmluYWwgVkVDX2ZyZWUgZm9yIENIQVJfUFRSX1ZFQyBp dHNlbGYuCisrCisrICAgWW91IG11c3Qgbm90IG1vZGlmeSBDSEFSX1BUUl9WRUMgYWZ0ZXIgdGhp cyBjbGVhbnVwIHJlZ2lzdHJhdGlvbiBhcyB0aGUKKysgICBDSEFSX1BUUl9WRUMgYmFzZSBhZGRy ZXNzIG1heSBjaGFuZ2Ugb24gaXRzIHVwZGF0ZXMuICBDb250cmFyeSB0byBWRUNfZnJlZQorKyAg IHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgKGNhbm5vdCkgY2xlYXIgdGhlIHBvaW50ZXIuICAqLwor KworK3N0cnVjdCBjbGVhbnVwICoKKyttYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMgKFZF QyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpCisreworKyAgcmV0dXJuIG1ha2VfY2xlYW51cCAo ZG9fZnJlZV9jaGFyX3B0cl92ZWMsIGNoYXJfcHRyX3ZlYyk7CisrfQorKworKy8qIEV4dGVuZGVk IHZlcnNpb24gb2YgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIC0gYWRkaXRpb25hbGx5IGlmICpW RUNQIGlzCisrICAgbm9uLU5VTEwgdGhlIG5ldyBsaXN0IGVsZW1lbnRzIGZyb20gRElSTkFNRVMg YXJlIGFwcGVuZGVkIHRvIHRoZSBleGlzdGluZworKyAgICpWRUNQIGxpc3Qgb2YgZW50cmllcy4g ICpWRUNQIGFkZHJlc3Mgd2lsbCBiZSB1cGRhdGVkIGJ5IHRoaXMgY2FsbC4gICovCisrCisrdm9p ZAorK2Rpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKFZFQyAoY2hhcl9wdHIpICoqdmVj cCwgY29uc3QgY2hhciAqZGlybmFtZXMpCisreworKyAgZG8KKysgICAgeworKyAgICAgIHNpemVf dCB0aGlzX2xlbjsKKysgICAgICBjaGFyICpuZXh0X2RpciwgKnRoaXNfZGlyOworKworKyAgICAg IG5leHRfZGlyID0gc3RyY2hyIChkaXJuYW1lcywgRElSTkFNRV9TRVBBUkFUT1IpOworKyAgICAg IGlmIChuZXh0X2RpciA9PSBOVUxMKQorKwl0aGlzX2xlbiA9IHN0cmxlbiAoZGlybmFtZXMpOwor KyAgICAgIGVsc2UKKysJeworKwkgIHRoaXNfbGVuID0gbmV4dF9kaXIgLSBkaXJuYW1lczsKKysJ ICBuZXh0X2RpcisrOworKwl9CisrCisrICAgICAgdGhpc19kaXIgPSB4bWFsbG9jICh0aGlzX2xl biArIDEpOworKyAgICAgIG1lbWNweSAodGhpc19kaXIsIGRpcm5hbWVzLCB0aGlzX2xlbik7Cisr ICAgICAgdGhpc19kaXJbdGhpc19sZW5dID0gJ1wwJzsKKysgICAgICBWRUNfc2FmZV9wdXNoIChj aGFyX3B0ciwgKnZlY3AsIHRoaXNfZGlyKTsKKysKKysgICAgICBkaXJuYW1lcyA9IG5leHRfZGly OworKyAgICB9CisrICB3aGlsZSAoZGlybmFtZXMgIT0gTlVMTCk7CisrfQorKworKy8qIFNwbGl0 IERJUk5BTUVTIGJ5IERJUk5BTUVfU0VQQVJBVE9SIGRlbGltaXRlciBhbmQgcmV0dXJuIGEgbGlz dCBvZiBhbGwgdGhlCisrICAgZWxlbWVudHMgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuICBGb3Ig ZW1wdHkgc3RyaW5nICgiIikgRElSTkFNRVMgcmV0dXJuCisrICAgbGlzdCBvZiBvbmUgZW1wdHkg c3RyaW5nICgiIikgZWxlbWVudC4KKysgICAKKysgICBZb3UgbWF5IG1vZGlmeSB0aGUgcmV0dXJu ZWQgc3RyaW5ncy4KKysgICBSZWFkIGZyZWVfY2hhcl9wdHJfdmVjIGZvciBpdHMgY2xlYW51cC4g ICovCisrCisrVkVDIChjaGFyX3B0cikgKgorK2Rpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoY29u c3QgY2hhciAqZGlybmFtZXMpCisreworKyAgVkVDIChjaGFyX3B0cikgKnJldHZhbCA9IE5VTEw7 CisrICAKKysgIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKCZyZXR2YWwsIGRpcm5h bWVzKTsKKysKKysgIHJldHVybiByZXR2YWw7CisrfQorKworICNpZmRlZiBIQVZFX1dBSVRQSUQK KyAKKyAjaWZkZWYgU0lHQUxSTQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wOW9mMjIucGF0 Y2ggYi9nZGItYXV0b2xvYWQtMDlvZjIyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAxMjQ0Y2ZmLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wOW9mMjIucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxMTY4ICswLDAgQEAKLVtwYXRjaCM0IDMvOF0gYXV0by1sb2FkOiBy ZXNodWZmbGUgY29kZQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTIt MDQvbXNnMDAwODcuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0w NC9tc2cwMDExMi5odG1sCi0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxv YWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTIt MDQtMTggMDA6MjY6MjkuMDQ5MTIwMjEyICswMjAwCi1AQCAtMCwwICsxLDQ3MiBAQAotKy8qIEdE QiByb3V0aW5lcyBmb3Igc3VwcG9ydGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLgotKwotKyAgIENv cHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBU aGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImF1dG8tbG9h ZC5oIgotKyNpbmNsdWRlICJwcm9nc3BhY2UuaCIKLSsjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5o IgotKyNpbmNsdWRlICJnZGJfcmVnZXguaCIKLSsjaW5jbHVkZSAidWktb3V0LmgiCi0rI2luY2x1 ZGUgImZpbGVuYW1lcy5oIgotKyNpbmNsdWRlICJjb21tYW5kLmgiCi0rI2luY2x1ZGUgIm9ic2Vy dmVyLmgiCi0rI2luY2x1ZGUgIm9iamZpbGVzLmgiCi0rI2luY2x1ZGUgInB5dGhvbi9weXRob24t aW50ZXJuYWwuaCIKLSsKLSsvKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBh dXRvLWxvYWRpbmcuCi0rICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0 aG9uIGNvZGUgd2hlbiBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKLSsgICBmYWxzZSBvdGhlcndpc2Uu Ci0rCi0rICAgQm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2Fk IG11c3QgYmUgdHJ1ZSB0byBlbmFibGUKLSsgICBhdXRvLWxvYWRpbmcuCi0rCi0rICAgVGhpcyBm bGFnIGV4aXN0cyB0byBmYWNpbGl0YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0 YXJ0LXVwCi0rICAgdW50aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkg YXVnbWVudCB0aGUgc2VhcmNoIGRpcmVjdG9yaWVzCi0rICAgdXNlZCB0byBmaW5kIHRoZSBzY3Jp cHRzLiAgKi8KLStpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0rCi0rLyogRm9yIHNj cmlwdHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMg bWF5IGxvYWQKLSsgICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRp bmcgdGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1lcywKLSsgICBhbmQgdGhlcmUgY2FuIGJlIGEgbG90 IG9mIG9iamZpbGVzIGFuZCBzY3JpcHRzLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHNjcmlwdHMKLSsg ICBsb2FkZWQgdGhpcyB3YXkuICAqLwotKwotK3N0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8K LSt7Ci0rICAvKiBGb3IgZWFjaCBwcm9ncmFtIHNwYWNlIHdlIGtlZXAgdHJhY2sgb2YgbG9hZGVk IHNjcmlwdHMuICAqLwotKyAgc3RydWN0IGh0YWIgKmxvYWRlZF9zY3JpcHRzOwotKwotKyAgLyog Tm9uLXplcm8gaWYgd2UndmUgaXNzdWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9hZCBz Y3JpcHQgbm90IGJlaW5nCi0rICAgICBmb3VuZC4gIFdlIG9ubHkgd2FudCB0byBpc3N1ZSB0aGlz IHdhcm5pbmcgb25jZS4gICovCi0rICBpbnQgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50 ZWQ7Ci0rfTsKLSsKLSsvKiBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRoZSBs b2FkZWQgc2NyaXB0IGhhc2ggdGFibGUuICAqLwotKwotK3N0cnVjdCBsb2FkZWRfc2NyaXB0Ci0r ewotKyAgLyogTmFtZSBhcyBwcm92aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCi0rICBjb25zdCBj aGFyICpuYW1lOwotKyAgLyogRnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0 IGZvdW5kIChvciB3YXMgb3RoZXJ3aXNlCi0rICAgICBpbmFjY2Vzc2libGUpLiAgKi8KLSsgIGNv bnN0IGNoYXIgKmZ1bGxfcGF0aDsKLSt9OwotKwotKy8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEg a2V5LiAgKi8KLStzdGF0aWMgY29uc3Qgc3RydWN0IHByb2dyYW1fc3BhY2VfZGF0YSAqYXV0b19s b2FkX3BzcGFjZV9kYXRhOwotKwotK3N0YXRpYyB2b2lkCi0rYXV0b19sb2FkX3BzcGFjZV9kYXRh X2NsZWFudXAgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsIHZvaWQgKmFyZykKLSt7Ci0r ICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOwotKwotKyAgaW5mbyA9IHByb2dy YW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOwotKyAgaWYgKGlu Zm8gIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cykKLSsJ aHRhYl9kZWxldGUgKGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKLSsgICAgICB4ZnJlZSAoaW5mbyk7 Ci0rICAgIH0KLSt9Ci0rCi0rLyogR2V0IHRoZSBjdXJyZW50IGF1dG9sb2FkIGRhdGEuICBJZiBu b25lIGlzIGZvdW5kIHlldCwgYWRkIGl0IG5vdy4gIFRoaXMKLSsgICBmdW5jdGlvbiBhbHdheXMg cmV0dXJucyBhIHZhbGlkIG9iamVjdC4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKgotK2dldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKHN0cnVjdCBwcm9ncmFt X3NwYWNlICpwc3BhY2UpCi0rewotKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5m bzsKLSsKLSsgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3Bz cGFjZV9kYXRhKTsKLSsgIGlmIChpbmZvID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbmZvID0g WFpBTExPQyAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyk7Ci0rICAgICAgc2V0X3Byb2dy YW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEsIGluZm8pOwotKyAg ICB9Ci0rCi0rICByZXR1cm4gaW5mbzsKLSt9Ci0rCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgdGhl IGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK2hhc2hfbG9h ZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqZGF0YSkKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qg bG9hZGVkX3NjcmlwdCAqZSA9IGRhdGE7Ci0rCi0rICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAo ZS0+bmFtZSk7Ci0rfQotKwotKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNj cmlwdCBoYXNoLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSAo Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqZWEgPSBhOwotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmViID0gYjsK LSsKLSsgIHJldHVybiBzdHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkgPT0gMDsKLSt9Ci0rCi0r LyogSW5pdGlhbGl6ZSB0aGUgdGFibGUgdG8gdHJhY2sgbG9hZGVkIHNjcmlwdHMuCi0rICAgRWFj aCBlbnRyeSBpcyBoYXNoZWQgYnkgdGhlIGZ1bGwgcGF0aCBuYW1lLiAgKi8KLSsKLStzdGF0aWMg dm9pZAotK2luaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm8pCi0rewotKyAgLyogQ2hvb3NlIDMxIGFzIHRoZSBzdGFydGluZyBz aXplIG9mIHRoZSBoYXNoIHRhYmxlLCBzb21ld2hhdCBhcmJpdHJhcmlseS4KLSsgICAgIFNwYWNl IGZvciBlYWNoIGVudHJ5IGlzIG9idGFpbmVkIHdpdGggb25lIG1hbGxvYyBzbyB3ZSBjYW4gZnJl ZSB0aGVtCi0rICAgICBlYXNpbHkuICAqLwotKwotKyAgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3Jp cHRzID0gaHRhYl9jcmVhdGUgKDMxLAotKwkJCQkJICAgICBoYXNoX2xvYWRlZF9zY3JpcHRfZW50 cnksCi0rCQkJCQkgICAgIGVxX2xvYWRlZF9zY3JpcHRfZW50cnksCi0rCQkJCQkgICAgIHhmcmVl KTsKLSsKLSsgIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9 IEZBTFNFOwotK30KLSsKLSsvKiBXcmFwcGVyIG9uIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEg dG8gYWxzbyBhbGxvY2F0ZSB0aGUgaGFzaCB0YWJsZQotKyAgIGZvciBsb2FkaW5nIHNjcmlwdHMu ICAqLwotKwotK3N0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgotK2dldF9hdXRvX2xvYWRf cHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCi0r ewotKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLSsKLSsgIGluZm8gPSBn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChwc3BhY2UpOwotKyAgaWYgKGluZm8tPmxvYWRlZF9z Y3JpcHRzID09IE5VTEwpCi0rICAgIGluaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoaW5mbyk7Ci0r Ci0rICByZXR1cm4gaW5mbzsKLSt9Ci0rCi0rLyogQWRkIHNjcmlwdCBOQU1FIHRvIGhhc2ggdGFi bGUgb2YgUFNQQUNFX0lORk8uCi0rICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3 YXNuJ3QgZm91bmQuCi0rICAgVGhlIHJlc3VsdCBpcyB0cnVlIGlmIHRoZSBzY3JpcHQgd2FzIGFs cmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLwotKwotK2ludAotK21heWJlX2FkZF9zY3JpcHQg KHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLCBjb25zdCBjaGFyICpu YW1lLAotKwkJICBjb25zdCBjaGFyICpmdWxsX3BhdGgpCi0rewotKyAgc3RydWN0IGh0YWIgKmh0 YWIgPSBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHM7Ci0rICBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqKnNsb3QsIGVudHJ5OwotKyAgaW50IGluX2hhc2hfdGFibGU7Ci0rCi0rICBlbnRyeS5uYW1l ID0gbmFtZTsKLSsgIGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKLSsgIHNsb3QgPSAoc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElOU0VS VCk7Ci0rICBpbl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKLSsKLSsgIC8qIElmIHRoaXMg c2NyaXB0IGlzIG5vdCBpbiB0aGUgaGFzaCB0YWJsZSwgYWRkIGl0LiAgKi8KLSsKLSsgIGlmICgh IGluX2hhc2hfdGFibGUpCi0rICAgIHsKLSsgICAgICBjaGFyICpwOwotKwotKyAgICAgIC8qIEFs bG9jYXRlIGFsbCBzcGFjZSBpbiBvbmUgY2h1bmsgc28gaXQncyBlYXNpZXIgdG8gZnJlZS4gICov Ci0rICAgICAgKnNsb3QgPSB4bWFsbG9jIChzaXplb2YgKCoqc2xvdCkKLSsJCSAgICAgICArIHN0 cmxlbiAobmFtZSkgKyAxCi0rCQkgICAgICAgKyAoZnVsbF9wYXRoICE9IE5VTEwgPyAoc3RybGVu IChmdWxsX3BhdGgpICsgMSkgOiAwKSk7Ci0rICAgICAgcCA9ICgoY2hhciopICpzbG90KSArIHNp emVvZiAoKipzbG90KTsKLSsgICAgICBzdHJjcHkgKHAsIG5hbWUpOwotKyAgICAgICgqc2xvdCkt Pm5hbWUgPSBwOwotKyAgICAgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKLSsJewotKwkgIHAgKz0g c3RybGVuIChwKSArIDE7Ci0rCSAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOwotKwkgICgqc2xvdCkt PmZ1bGxfcGF0aCA9IHA7Ci0rCX0KLSsgICAgICBlbHNlCi0rCSgqc2xvdCktPmZ1bGxfcGF0aCA9 IE5VTEw7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBpbl9oYXNoX3RhYmxlOwotK30KLSsKLSsvKiBD bGVhciB0aGUgdGFibGUgb2YgbG9hZGVkIHNlY3Rpb24gc2NyaXB0cy4gICovCi0rCi0rc3RhdGlj IHZvaWQKLStjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKHZvaWQpCi0rewotKyAgc3RydWN0IHByb2dy YW1fc3BhY2UgKnBzcGFjZSA9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsKLSsgIHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0rCi0rICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRh IChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0rICBpZiAoaW5mbyAhPSBOVUxMICYm IGluZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBodGFiX2RlbGV0 ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOwotKyAgICAgIGluZm8tPmxvYWRlZF9zY3JpcHRzID0g TlVMTDsKLSsgICAgICBpbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZB TFNFOwotKyAgICB9Ci0rfQotKwotKy8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFz c29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KLSsKLSt2b2lkCi0rYXV0b19s b2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAq c3VmZml4KQotK3sKLSsgIGNoYXIgKnJlYWxuYW1lOwotKyAgY2hhciAqZmlsZW5hbWUsICpkZWJ1 Z2ZpbGU7Ci0rICBpbnQgbGVuOwotKyAgRklMRSAqaW5wdXQ7Ci0rICBzdHJ1Y3QgY2xlYW51cCAq Y2xlYW51cHM7Ci0rCi0rICByZWFsbmFtZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7 Ci0rICBsZW4gPSBzdHJsZW4gKHJlYWxuYW1lKTsKLSsgIGZpbGVuYW1lID0geG1hbGxvYyAobGVu ICsgc3RybGVuIChzdWZmaXgpICsgMSk7Ci0rICBtZW1jcHkgKGZpbGVuYW1lLCByZWFsbmFtZSwg bGVuKTsKLSsgIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIHN1ZmZpeCk7Ci0rCi0rICBjbGVhbnVw cyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGZpbGVuYW1lKTsKLSsgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIHJlYWxuYW1lKTsKLSsKLSsgIGlucHV0ID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOwotKyAg ZGVidWdmaWxlID0gZmlsZW5hbWU7Ci0rCi0rICBpZiAoIWlucHV0ICYmIGRlYnVnX2ZpbGVfZGly ZWN0b3J5KQotKyAgICB7Ci0rICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUg c2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLwotKyAgICAgIGRlYnVnZmlsZSA9IHht YWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUpCi0rCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVfZGly ZWN0b3J5KSArIDEpOwotKyAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVj dG9yeSk7Ci0rICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQg YSAiLyIgaGVyZS4gICovCi0rICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKLSsK LSsgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotKyAgICAgIGlucHV0ID0g Zm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKLSsgICAgfQotKwotKyAgaWYgKCFpbnB1dCAmJiBnZGJf ZGF0YWRpcikKLSsgICAgewotKyAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gYSBz dWJkaXJlY3Rvcnkgb2YgZ2RiJ3MgZGF0YQotKwkgZGlyZWN0b3J5LiAgKi8KLSsgICAgICBkZWJ1 Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGdkYl9kYXRhZGlyKSArIHN0cmxlbiAoZmlsZW5hbWUp Ci0rCQkJICAgKyBzdHJsZW4gKCIvYXV0by1sb2FkIikgKyAxKTsKLSsgICAgICBzdHJjcHkgKGRl YnVnZmlsZSwgZ2RiX2RhdGFkaXIpOwotKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCAiL2F1dG8t bG9hZCIpOwotKyAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVk IGEgIi8iIGhlcmUuICAqLwotKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0r Ci0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLSsgICAgICBpbnB1dCA9 IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7Ci0rICAgIH0KLSsKLSsgIGlmIChpbnB1dCkKLSsgICAg ewotKyAgICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotKwot KyAgICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKGlucHV0KTsKLSsKLSsgICAgICAvKiBBZGQgdGhp cyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRz IgotKwkgY2FuIHByaW50IGl0LiAgKi8KLSsgICAgICBwc3BhY2VfaW5mbyA9Ci0rCWdldF9hdXRv X2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0r ICAgICAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGRlYnVnZmlsZSwgZGVidWdmaWxl KTsKLSsKLSsgICAgICAvKiBUbyBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIgd2UgZG9uJ3Qg Y2hlY2sgZm9yIHdoZXRoZXIgdGhlCi0rCSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIHRhYmxl LCBhbmQgYWx3YXlzIGxvYWQgaXQuCi0rCSBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHdlJ2Qg ZXZlciBsb2FkIGl0IHR3aWNlLAotKwkgYW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRv IGJlIGlkZW1wb3RlbnQgdW5kZXIgbXVsdGlwbGUKLSsJIGxvYWRzIGFueXdheS4gICovCi0rICAg ICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1 Z2ZpbGUpOwotKyAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotK30KLSsKLSsv KiBUaGlzIGlzIGEgbmV3X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2sgdG8gYXV0by1sb2FkIHNj cmlwdHMuCi0rCi0rICAgVHdvIGZsYXZvcnMgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgc3Vw cG9ydGVkLgotKyAgIDEpIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoZSBvYmpmaWxlCi0rICAgMikg ZnJvbSAuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2F1 dG9fbG9hZF9uZXdfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgaWYg KCFvYmpmaWxlKQotKyAgICB7Ci0rICAgICAgLyogT0JKRklMRSBpcyBOVUxMIHdoZW4gbG9hZGlu ZyBhIG5ldyAibWFpbiIgc3ltYm9sLWZpbGUuICAqLwotKyAgICAgIGNsZWFyX3NlY3Rpb25fc2Ny aXB0cyAoKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGxvYWRfYXV0b19zY3JpcHRz X2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKLSt9Ci0rCi0rLyogQ29sbGVjdCBzY3JpcHRzIHRvIGJl IHByaW50ZWQgaW4gYSB2ZWMuICAqLwotKwotK3R5cGVkZWYgc3RydWN0IGxvYWRlZF9zY3JpcHQg KmxvYWRlZF9zY3JpcHRfcHRyOwotK0RFRl9WRUNfUCAobG9hZGVkX3NjcmlwdF9wdHIpOwotKwot Ky8qIFRyYXZlcnNhbCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2ZXJzZS4KLSsgICBDb2xsZWN0IHRo ZSBlbnRyeSBpZiBpdCBtYXRjaGVzIHRoZSByZWdleHAuICAqLwotKwotK3N0YXRpYyBpbnQKLStj b2xsZWN0X21hdGNoaW5nX3NjcmlwdHMgKHZvaWQgKipzbG90LCB2b2lkICppbmZvKQotK3sKLSsg IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQgPSAqc2xvdDsKLSsgIFZFQyAobG9hZGVkX3Nj cmlwdF9wdHIpICoqc2NyaXB0c19wdHIgPSBpbmZvOwotKwotKyAgaWYgKHJlX2V4ZWMgKHNjcmlw dC0+bmFtZSkpCi0rICAgIFZFQ19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqc2NyaXB0 c19wdHIsIHNjcmlwdCk7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogUHJpbnQgU0NSSVBU LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3ByaW50X3NjcmlwdCAoc3RydWN0IGxvYWRlZF9zY3Jp cHQgKnNjcmlwdCkKLSt7Ci0rICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7 Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2hhaW47Ci0rCi0rICBjaGFpbiA9IG1ha2VfY2xlYW51cF91 aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7Ci0rCi0rICB1aV9vdXRfZmllbGRf c3RyaW5nICh1aW91dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVsbF9wYXRoID8gIlllcyIgOiAiTWlz c2luZyIpOwotKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJzY3JpcHQiLCBzY3JpcHQt Pm5hbWUpOwotKyAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsKLSsgIC8qIElmIHRoZSBu YW1lIGlzbid0IHRoZSBmdWxsIHBhdGgsIHByaW50IGl0IHRvby4gICovCi0rICBpZiAoc2NyaXB0 LT5mdWxsX3BhdGggIT0gTlVMTAotKyAgICAgICYmIHN0cmNtcCAoc2NyaXB0LT5uYW1lLCBzY3Jp cHQtPmZ1bGxfcGF0aCkgIT0gMCkKLSsgICAgewotKyAgICAgIHVpX291dF90ZXh0ICh1aW91dCwg Ilx0ZnVsbCBuYW1lOiAiKTsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImZ1 bGxfcGF0aCIsIHNjcmlwdC0+ZnVsbF9wYXRoKTsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQs ICJcbiIpOwotKyAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoY2hhaW4pOwotK30KLSsKLSsvKiBI ZWxwZXIgZm9yIGluZm9fYXV0b19sb2FkX3NjcmlwdHMgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBu YW1lLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rc29ydF9zY3JpcHRzX2J5X25hbWUgKGNvbnN0IHZv aWQgKmFwLCBjb25zdCB2b2lkICpicCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqYSA9ICooY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGFwOwotKyAgY29uc3Qgc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKmIgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBi cDsKLSsKLSsgIHJldHVybiBGSUxFTkFNRV9DTVAgKGEtPm5hbWUsIGItPm5hbWUpOwotK30KLSsK LSsvKiAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZC4gICovCi0rCi0rc3RhdGljIHZv aWQKLStpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkp Ci0rewotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotKyAgc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0rICBzdHJ1Y3QgY2xlYW51cCAq c2NyaXB0X2NoYWluOwotKyAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKnNjcmlwdHM7Ci0rICBp bnQgbnJfc2NyaXB0czsKLSsKLSsgIGRvbnRfcmVwZWF0ICgpOwotKwotKyAgcHNwYWNlX2luZm8g PSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotKwot KyAgaWYgKHBhdHRlcm4gJiYgKnBhdHRlcm4pCi0rICAgIHsKLSsgICAgICBjaGFyICpyZV9lcnIg PSByZV9jb21wIChwYXR0ZXJuKTsKLSsKLSsgICAgICBpZiAocmVfZXJyKQotKwllcnJvciAoXygi SW52YWxpZCByZWdleHA6ICVzIiksIHJlX2Vycik7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewot KyAgICAgIHJlX2NvbXAgKCIiKTsKLSsgICAgfQotKwotKyAgLyogV2UgbmVlZCB0byBrbm93IHRo ZSBudW1iZXIgb2Ygcm93cyBiZWZvcmUgd2UgYnVpbGQgdGhlIHRhYmxlLgotKyAgICAgUGx1cyB3 ZSB3YW50IHRvIHNvcnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4KLSsgICAgIFNvIGZpcnN0IHRyYXZl cnNlIHRoZSBoYXNoIHRhYmxlIGNvbGxlY3RpbmcgdGhlIG1hdGNoaW5nIHNjcmlwdHMuICAqLwot KwotKyAgc2NyaXB0cyA9IFZFQ19hbGxvYyAobG9hZGVkX3NjcmlwdF9wdHIsIDEwKTsKLSsgIHNj cmlwdF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKGxvYWRlZF9zY3JpcHRfcHRy KSwgJnNjcmlwdHMpOwotKwotKyAgaWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYgcHNwYWNlX2lu Zm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbW1lZGlhdGVfcXVp dCsrOwotKyAgICAgIC8qIFBhc3MgYSBwb2ludGVyIHRvIHNjcmlwdHMgYXMgVkVDX3NhZmVfcHVz aCBjYW4gcmVhbGxvYyBzcGFjZS4gICovCi0rICAgICAgaHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSAo cHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLAotKwkJCSAgICAgIGNvbGxlY3RfbWF0Y2hpbmdf c2NyaXB0cywgJnNjcmlwdHMpOwotKyAgICAgIGltbWVkaWF0ZV9xdWl0LS07Ci0rICAgIH0KLSsK LSsgIG5yX3NjcmlwdHMgPSBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyk7 Ci0rICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIG5yX3Nj cmlwdHMsCi0rCQkJCSAgICAgICAiQXV0b0xvYWRlZFNjcmlwdHNUYWJsZSIpOwotKwotKyAgdWlf b3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcsIHVpX2xlZnQsICJsb2FkZWQiLCAiTG9hZGVkIik7 Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNzAsIHVpX2xlZnQsICJzY3JpcHQiLCAi U2NyaXB0Iik7Ci0rICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOwotKwotKyAgaWYgKG5yX3Nj cmlwdHMgPiAwKQotKyAgICB7Ci0rICAgICAgaW50IGk7Ci0rICAgICAgbG9hZGVkX3NjcmlwdF9w dHIgc2NyaXB0OwotKwotKyAgICAgIHFzb3J0IChWRUNfYWRkcmVzcyAobG9hZGVkX3NjcmlwdF9w dHIsIHNjcmlwdHMpLAotKwkgICAgIFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3Jp cHRzKSwKLSsJICAgICBzaXplb2YgKGxvYWRlZF9zY3JpcHRfcHRyKSwgc29ydF9zY3JpcHRzX2J5 X25hbWUpOwotKyAgICAgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChsb2FkZWRfc2NyaXB0X3B0 ciwgc2NyaXB0cywgaSwgc2NyaXB0KTsgKytpKQotKwlwcmludF9zY3JpcHQgKHNjcmlwdCk7Ci0r ICAgIH0KLSsKLSsgIGRvX2NsZWFudXBzIChzY3JpcHRfY2hhaW4pOwotKwotKyAgaWYgKG5yX3Nj cmlwdHMgPT0gMCkKLSsgICAgewotKyAgICAgIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQotKwl1 aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsICJObyBhdXRvLWxvYWQgc2NyaXB0cyBtYXRjaGluZyAl cy5cbiIsCi0rCQkJcGF0dGVybik7Ci0rICAgICAgZWxzZQotKwl1aV9vdXRfbWVzc2FnZSAodWlv dXQsIDAsICJObyBhdXRvLWxvYWQgc2NyaXB0cy5cbiIpOwotKyAgICB9Ci0rfQotKwotKy8qIFJl dHVybiBub24temVybyBpZiBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRCBvZiBQU1BB Q0VfSU5GTyB3YXMgdW5zZXQKLSsgICBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiAgQWx3 YXlzIHNldCBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRAotKyAgIG9mIFBTUEFDRV9J TkZPLiAgKi8KLSsKLStpbnQKLStzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQotK3sKLSsgIGludCByZXR2YWwg PSAhcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkOwotKwotKyAg cHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkID0gMTsKLSsKLSsg IHJldHVybiByZXR2YWw7Ci0rfQotKwotK3ZvaWQgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lk KTsKLSsKLSt2b2lkCi0rX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQotK3sKLSsgIGF1dG9f bG9hZF9wc3BhY2VfZGF0YQotKyAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRo X2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKLSsKLSsgIG9ic2VydmVy X2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0b19sb2FkX25ld19vYmpmaWxlKTsKLSsKLSsgIGFkZF9p bmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLAotKwkgICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cywK LSsJICAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlwdHMu XG5cCi0rVXNhZ2U6IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7Ci0rfQotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAy MTIgKzAyMDAKLUBAIC0wLDAgKzEsMzYgQEAKLSsvKiBHREIgcm91dGluZXMgZm9yIHN1cHBvcnRp bmcgYXV0by1sb2FkZWQgc2NyaXB0cy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RC LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWZu ZGVmIEFVVE9fTE9BRF9ICi0rI2RlZmluZSBBVVRPX0xPQURfSCAxCi0rCi0rc3RydWN0IHByb2dy YW1fc3BhY2U7Ci0rCi0rZXh0ZXJuIGludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkOwotKwotK2V4 dGVybiBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLSsgIGdldF9hdXRvX2xvYWRfcHNw YWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOwotK2V4 dGVybiBpbnQgbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq cHNwYWNlX2luZm8sCi0rCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxs X3BhdGgpOwotK2V4dGVybiB2b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCi0rCQkJCSAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCk7Ci0rZXh0ZXJu IGludAotKyAgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbyk7Ci0rCi0rI2VuZGlmIC8qIEFVVE9fTE9BRF9IICov Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiLWdkYi5nZGIuaW4KLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGItZ2RiLmdkYi5pbgkyMDEyLTA0LTE4IDAwOjI2 OjI5LjA0OTEyMDIxMiArMDIwMAotQEAgLTAsMCArMSwzNCBAQAotK2VjaG8gU2V0dGluZyB1cCB0 aGUgZW52aXJvbm1lbnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KLSsKLStzZXQgY29tcGxhaW50cyAx Ci0rCi0rYiBpbnRlcm5hbF9lcnJvcgotKwotK2IgaW5mb19jb21tYW5kCi0rY29tbWFuZHMKLSsJ c2lsZW50Ci0rCXJldHVybgotK2VuZAotKwotK2RpciBAc3JjZGlyQC8uLi9saWJpYmVydHkKLStk aXIgQHNyY2RpckAvLi4vYmZkCi0rZGlyIEBzcmNkaXJACi0rZGlyIC4KLStzZXQgcHJvbXB0ICh0 b3AtZ2RiKSAKLSsKLStkZWZpbmUgcGRpZQotKyAgaWYgJGFyZ2MgPT0gMQotKyAgICBjYWxsIGR1 bXBfZGllICgkYXJnMCwgMSkKLSsgIGVsc2UKLSsgICAgaWYgJGFyZ2MgPT0gMgotKyAgICAgIGNh bGwgZHVtcF9kaWUgKCRhcmcwLCAkYXJnMSkKLSsgICAgZWxzZQotKyAgICAgIHByaW50ZiAiU3lu dGF4OiBwZGllIGRpZSBbZGVwdGhdXG4iCi0rICAgIGVuZAotKyAgZW5kCi0rZW5kCi0rCi0rZG9j dW1lbnQgcGRpZQotK1ByZXR0eSBwcmludCBhIERXQVJGIERJRS4KLStTeW50YXg6IHBkaWUgZGll IFtkZXB0aF0KLStlbmQKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9NYWtlZmlsZS5p bgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTWFrZWZpbGUu aW4JMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9NYWtlZmlsZS5pbgkyMDEyLTA0LTE4IDAwOjI2OjUzLjQ1NTA1ODAzNyArMDIw MAotQEAgLTY4MCw3ICs2ODAsNyBAQCBUQVJHRVRfRkxBR1NfVE9fUEFTUyA9IFwKLSAjIFNGSUxF UyBpcyB1c2VkIGluIGJ1aWxkaW5nIHRoZSBkaXN0cmlidXRpb24gYXJjaGl2ZS4KLSAKLSBTRklM RVMgPSBhZGEtZXhwLnkgYWRhLWxhbmcuYyBhZGEtdHlwZXByaW50LmMgYWRhLXZhbHByaW50LmMg YWRhLXRhc2tzLmMgXAotLQlhZGRybWFwLmMgXAotKwlhZGRybWFwLmMgYXV0by1sb2FkLmMgXAot IAlhdXh2LmMgYXgtZ2VuZXJhbC5jIGF4LWdkYi5jIFwKLSAJYmNhY2hlLmMgXAotIAliZmQtdGFy Z2V0LmMgXAotQEAgLTgxOSw3ICs4MTksNyBAQCBzb2xpYi1kYXJ3aW4uaCBzb2xpYi1pYTY0LWhw dXguaCBzb2xpYi1zCi0gZ251bGliL2V4dHJhL2FyZy1ub25udWxsLmggZ251bGliL2V4dHJhL2Mr K2RlZnMuaCBnbnVsaWIvZXh0cmEvd2Fybi1vbi11c2UuaCBcCi0gZ251bGliL3N0ZGRlZi5pbi5o IGlubGluZS1mcmFtZS5oIHNraXAuaCBzdGFwLXByb2JlLmggXAotIGNvbW1vbi9jb21tb24tdXRp bHMuaCBjb21tb24veG1sLXV0aWxzLmggY29tbW9uL2J1ZmZlci5oIGNvbW1vbi9wdGlkLmggXAot LWNvbW1vbi9saW51eC1vc2RhdGEuaCBnZGItZGxmY24uaAotK2NvbW1vbi9saW51eC1vc2RhdGEu aCBnZGItZGxmY24uaCBhdXRvLWxvYWQuaAotIAotICMgSGVhZGVyIGZpbGVzIHRoYXQgYWxyZWFk eSBoYXZlIHNyY2RpciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgotIAotQEAgLTg1 MSw3ICs4NTEsNyBAQCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkCi0g CXZlcnNpb24ubyBcCi0gCWFubm90YXRlLm8gXAotIAlhZGRybWFwLm8gXAotLQlhdXh2Lm8gXAot KwlhdXRvLWxvYWQubyBhdXh2Lm8gXAotIAliZmQtdGFyZ2V0Lm8gXAotIAlibG9ja2ZyYW1lLm8g YnJlYWtwb2ludC5vIGZpbmR2YXIubyByZWdjYWNoZS5vIFwKLSAJY2hhcnNldC5vIGNvbnRpbnVh dGlvbnMubyBjb3JlbG93Lm8gZGlzYXNtLm8gZHVtbXktZnJhbWUubyBkZnAubyBcCi1AQCAtMTI1 NSw3ICsxMjU1LDcgQEAgZGlzdGNsZWFuOiBjbGVhbgotIAlybSAtZiBnZGJzZXJ2ZXIvY29uZmln LnN0YXR1cyBnZGJzZXJ2ZXIvY29uZmlnLmxvZwotIAlybSAtZiBnZGJzZXJ2ZXIvdG0uaCBnZGJz ZXJ2ZXIveG0uaCBnZGJzZXJ2ZXIvbm0uaAotIAlybSAtZiBnZGJzZXJ2ZXIvTWFrZWZpbGUgZ2Ri c2VydmVyL2NvbmZpZy5jYWNoZQotLQlybSAtZiBubS5oIGNvbmZpZy5zdGF0dXMgY29uZmlnLmgg c3RhbXAtaCAuZ2RiaW5pdCBqaXQtcmVhZGVyLmgKLSsJcm0gLWYgbm0uaCBjb25maWcuc3RhdHVz IGNvbmZpZy5oIHN0YW1wLWggZ2RiLWdkYi5nZGIgaml0LXJlYWRlci5oCi0gCXJtIC1mIHkub3V0 cHV0IHlhY2MuYWN0cyB5YWNjLnRtcCB5LnRhYi5oCi0gCXJtIC1mIGNvbmZpZy5sb2cgY29uZmln LmNhY2hlCi0gCXJtIC1mIE1ha2VmaWxlCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv Y29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9j b25maWd1cmUJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTMxMjAyMDIg KzAyMDAKLUBAIC0xNjgzOSw3ICsxNjgzOSw3IEBAIGFjX2NvbmZpZ19saW5rcz0iJGFjX2NvbmZp Z19saW5rcyAkYWNfY28KLSAkYXNfZWNobyAiI2RlZmluZSBHREJfREVGQVVMVF9IT1NUX0NIQVJT RVQgXCJVVEYtOFwiIiA+PmNvbmZkZWZzLmgKLSAKLSAKLS1hY19jb25maWdfZmlsZXM9IiRhY19j b25maWdfZmlsZXMgTWFrZWZpbGUgLmdkYmluaXQ6Z2RiaW5pdC5pbiBkb2MvTWFrZWZpbGUgZ251 bGliL01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIgotK2FjX2NvbmZpZ19maWxlcz0i JGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZ251bGli L01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIgotIAotIGFjX2NvbmZpZ19jb21tYW5k cz0iJGFjX2NvbmZpZ19jb21tYW5kcyBkZWZhdWx0IgotIAotQEAgLTE3NjA1LDcgKzE3NjA1LDcg QEAgZG8KLSAgICAgImppdC1yZWFkZXIuaCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBq aXQtcmVhZGVyLmg6aml0LXJlYWRlci5pbiIgOzsKLSAgICAgIiRhY19jb25maWdfbGlua3NfMSIp IENPTkZJR19MSU5LUz0iJENPTkZJR19MSU5LUyAkYWNfY29uZmlnX2xpbmtzXzEiIDs7Ci0gICAg ICJNYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBNYWtlZmlsZSIgOzsKLS0g ICAgIi5nZGJpbml0IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIC5nZGJpbml0OmdkYmlu aXQuaW4iIDs7Ci0rICAgICJnZGItZ2RiLmdkYiIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxF UyBnZGItZ2RiLmdkYiIgOzsKLSAgICAgImRvYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENP TkZJR19GSUxFUyBkb2MvTWFrZWZpbGUiIDs7Ci0gICAgICJnbnVsaWIvTWFrZWZpbGUiKSBDT05G SUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ251bGliL01ha2VmaWxlIiA7OwotICAgICAiZGF0YS1k aXJlY3RvcnkvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZGF0YS1kaXJl Y3RvcnkvTWFrZWZpbGUiIDs7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln dXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25m aWd1cmUuYWMJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTMxMjAy MDIgKzAyMDAKLUBAIC0yNDIyLDcgKzI0MjIsNyBAQCBkbmwgIEF0IHRoZSBtb21lbnQsIHdlIGp1 c3QgYXNzdW1lIGl0J3MKLSBBQ19ERUZJTkUoR0RCX0RFRkFVTFRfSE9TVF9DSEFSU0VULCAiVVRG LTgiLAotICAgICAgICAgICBbRGVmaW5lIHRvIGJlIGEgc3RyaW5nIG5hbWluZyB0aGUgZGVmYXVs dCBob3N0IGNoYXJhY3RlciBzZXQuXSkKLSAKLS1BQ19PVVRQVVQoTWFrZWZpbGUgLmdkYmluaXQ6 Z2RiaW5pdC5pbiBkb2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01h a2VmaWxlLAotK0FDX09VVFBVVChNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZ251 bGliL01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlLAotIFsKLSBjYXNlIHgkQ09ORklH X0hFQURFUlMgaW4KLSB4Y29uZmlnLmg6Y29uZmlnLmluKQotSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6MjY6MjkuMDU0MTIwMTk5 ICswMjAwCi1AQCAtNDIsNiArNDIsNyBAQAotICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIKLSAj aW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotICNpbmNsdWRlICJvYmpmaWxlcy5oIgotKyNpbmNs dWRlICJhdXRvLWxvYWQuaCIKLSAKLSAvKiBUaGUgc2VsZWN0ZWQgaW50ZXJwcmV0ZXIuICBUaGlz IHdpbGwgYmUgdXNlZCBhcyBhIHNldCBjb21tYW5kCi0gICAgdmFyaWFibGUsIHNvIGl0IHNob3Vs ZCBhbHdheXMgYmUgbWFsbG9jJ2VkIC0gc2luY2UKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjE0 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1h dXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAotQEAgLTE4LDMw ICsxOCwxNCBAQAotICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSAjaW5jbHVkZSAiZGVmcy5oIgot LSNpbmNsdWRlICJmaWxlbmFtZXMuaCIKLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotLSNpbmNs dWRlICJnZGJfcmVnZXguaCIKLSAjaW5jbHVkZSAidG9wLmgiCi0gI2luY2x1ZGUgImV4Y2VwdGlv bnMuaCIKLS0jaW5jbHVkZSAiY29tbWFuZC5oIgotICNpbmNsdWRlICJnZGJjbWQuaCIKLS0jaW5j bHVkZSAib2JzZXJ2ZXIuaCIKLS0jaW5jbHVkZSAicHJvZ3NwYWNlLmgiCi0gI2luY2x1ZGUgIm9i amZpbGVzLmgiCi0gI2luY2x1ZGUgInB5dGhvbi5oIgotICNpbmNsdWRlICJjbGkvY2xpLWNtZHMu aCIKLS0KLS0vKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRp bmcuCi0tICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUg d2hlbiBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKLS0gICBmYWxzZSBvdGhlcndpc2UuCi0tCi0tICAg Qm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3QgYmUg dHJ1ZSB0byBlbmFibGUKLS0gICBhdXRvLWxvYWRpbmcuCi0tCi0tICAgVGhpcyBmbGFnIGV4aXN0 cyB0byBmYWNpbGl0YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0YXJ0LXVwCi0t ICAgdW50aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkgYXVnbWVudCB0 aGUgc2VhcmNoIGRpcmVjdG9yaWVzCi0tICAgdXNlZCB0byBmaW5kIHRoZSBzY3JpcHRzLiAgKi8K LS1pbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0rI2luY2x1ZGUgImF1dG8tbG9hZC5o IgotIAotICNpZmRlZiBIQVZFX1BZVEhPTgotIAotQEAgLTYwLDMyICs0NCw2IEBAIGludCBnZGJw eV9nbG9iYWxfYXV0b19sb2FkID0gMTsKLSAgICBUaGUgbGVhZGluZyBieXRlIGlzIHRvIGFsbG93 IHVwd2FyZCBjb21wYXRpYmxlIGV4dGVuc2lvbnMuICAqLwotICNkZWZpbmUgR0RCUFlfQVVUT19T RUNUSU9OX05BTUUgIi5kZWJ1Z19nZGJfc2NyaXB0cyIKLSAKLS0vKiBGb3Igc2NyaXB0cyBzcGVj aWZpZWQgaW4gLmRlYnVnX2dkYl9zY3JpcHRzLCBtdWx0aXBsZSBvYmpmaWxlcyBtYXkgbG9hZAot LSAgIHRoZSBzYW1lIHNjcmlwdC4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gbG9hZGluZyB0aGUgc2Ny aXB0IG11bHRpcGxlIHRpbWVzLAotLSAgIGFuZCB0aGVyZSBjYW4gYmUgYSBsb3Qgb2Ygb2JqZmls ZXMgYW5kIHNjcmlwdHMsIHNvIHdlIGtlZXAgdHJhY2sgb2Ygc2NyaXB0cwotLSAgIGxvYWRlZCB0 aGlzIHdheS4gICovCi0tCi0tc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbwotLXsKLS0gIC8q IEZvciBlYWNoIHByb2dyYW0gc3BhY2Ugd2Uga2VlcCB0cmFjayBvZiBsb2FkZWQgc2NyaXB0cy4g ICovCi0tICBzdHJ1Y3QgaHRhYiAqbG9hZGVkX3NjcmlwdHM7Ci0tCi0tICAvKiBOb24temVybyBp ZiB3ZSd2ZSBpc3N1ZWQgdGhlIHdhcm5pbmcgYWJvdXQgYW4gYXV0by1sb2FkIHNjcmlwdCBub3Qg YmVpbmcKLS0gICAgIGZvdW5kLiAgV2Ugb25seSB3YW50IHRvIGlzc3VlIHRoaXMgd2FybmluZyBv bmNlLiAgKi8KLS0gIGludCBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKLS19Owot LQotLS8qIE9iamVjdHMgb2YgdGhpcyB0eXBlIGFyZSBzdG9yZWQgaW4gdGhlIGxvYWRlZCBzY3Jp cHQgaGFzaCB0YWJsZS4gICovCi0tCi0tc3RydWN0IGxvYWRlZF9zY3JpcHQKLS17Ci0tICAvKiBO YW1lIGFzIHByb3ZpZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KLS0gIGNvbnN0IGNoYXIgKm5hbWU7 Ci0tICAvKiBGdWxsIHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQgKG9y IHdhcyBvdGhlcndpc2UKLS0gICAgIGluYWNjZXNzaWJsZSkuICAqLwotLSAgY29uc3QgY2hhciAq ZnVsbF9wYXRoOwotLX07Ci0tCi0gLyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rp c2FibGUgYXV0by1sb2FkaW5nOgotICAgIHNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYKLSAg ICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVkIHNjcmlwdHMg d2hlbiBhbiBvYmpmaWxlCi1AQCAtOTcsMTM2ICs1NSw2IEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0 Ci0gICAgVGhlIGZhY3QgdGhhdCBpdCBsaXZlcyBoZXJlIGlzIGp1c3QgYW4gaW1wbGVtZW50YXRp b24gZGV0YWlsLiAgKi8KLSBzdGF0aWMgaW50IGF1dG9fbG9hZF9zY3JpcHRzID0gMTsKLSAKLS0v KiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCi0tc3RhdGljIGNvbnN0IHN0cnVjdCBw cm9ncmFtX3NwYWNlX2RhdGEgKmF1dG9fbG9hZF9wc3BhY2VfZGF0YTsKLS0KLS1zdGF0aWMgdm9p ZAotLWF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAq cHNwYWNlLCB2b2lkICphcmcpCi0tewotLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq aW5mbzsKLS0KLS0gIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2Fk X3BzcGFjZV9kYXRhKTsKLS0gIGlmIChpbmZvICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBpZiAo aW5mby0+bG9hZGVkX3NjcmlwdHMpCi0tCWh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0 cyk7Ci0tICAgICAgeGZyZWUgKGluZm8pOwotLSAgICB9Ci0tfQotLQotLS8qIEdldCB0aGUgY3Vy cmVudCBhdXRvbG9hZCBkYXRhLiAgSWYgbm9uZSBpcyBmb3VuZCB5ZXQsIGFkZCBpdCBub3cuICBU aGlzCi0tICAgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBvYmplY3QuICAqLwotLQot LXN0YXRpYyBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLS1nZXRfYXV0b19sb2FkX3Bz cGFjZV9kYXRhIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQotLXsKLS0gIHN0cnVjdCBh dXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0tCi0tICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9k YXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0tICBpZiAoaW5mbyA9PSBOVUxM KQotLSAgICB7Ci0tICAgICAgaW5mbyA9IFhaQUxMT0MgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNl X2luZm8pOwotLSAgICAgIHNldF9wcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2Fk X3BzcGFjZV9kYXRhLCBpbmZvKTsKLS0gICAgfQotLQotLSAgcmV0dXJuIGluZm87Ci0tfQotLQot LS8qIEhhc2ggZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLwotLQotLXN0 YXRpYyBoYXNodmFsX3QKLS1oYXNoX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRh dGEpCi0tewotLSAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRhOwotLQotLSAg cmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5hbWUpOwotLX0KLS0KLS0vKiBFcXVhbGl0eSBm dW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCi0tCi0tc3RhdGljIGludAot LWVxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi0t ewotLSAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKLS0gIGNvbnN0IHN0cnVj dCBsb2FkZWRfc2NyaXB0ICplYiA9IGI7Ci0tCi0tICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwg ZWItPm5hbWUpID09IDA7Ci0tfQotLQotLS8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNr IGxvYWRlZCBzY3JpcHRzLgotLSAgIEVhY2ggZW50cnkgaXMgaGFzaGVkIGJ5IHRoZSBmdWxsIHBh dGggbmFtZS4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1pbml0X2xvYWRlZF9zY3JpcHRzX2luZm8g KHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQotLXsKLS0gIC8qIENo b29zZSAzMSBhcyB0aGUgc3RhcnRpbmcgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwgc29tZXdoYXQg YXJiaXRyYXJpbHkuCi0tICAgICBTcGFjZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRhaW5lZCB3aXRo IG9uZSBtYWxsb2Mgc28gd2UgY2FuIGZyZWUgdGhlbQotLSAgICAgZWFzaWx5LiAgKi8KLS0KLS0g IHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJfY3JlYXRlICgzMSwKLS0JCQkJCSAg ICAgaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5LAotLQkJCQkJICAgICBlcV9sb2FkZWRfc2NyaXB0 X2VudHJ5LAotLQkJCQkJICAgICB4ZnJlZSk7Ci0tCi0tICBwc3BhY2VfaW5mby0+c2NyaXB0X25v dF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKLS19Ci0tCi0tLyogV3JhcHBlciBvbiBn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIHRvIGFsc28gYWxsb2NhdGUgdGhlIGhhc2ggdGFibGUK LS0gICBmb3IgbG9hZGluZyBzY3JpcHRzLiAgKi8KLS0KLS1zdGF0aWMgc3RydWN0IGF1dG9fbG9h ZF9wc3BhY2VfaW5mbyAqCi0tZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAo c3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSkKLS17Ci0tICBzdHJ1Y3QgYXV0b19sb2FkX3Bz cGFjZV9pbmZvICppbmZvOwotLQotLSAgaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEg KHBzcGFjZSk7Ci0tICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMgPT0gTlVMTCkKLS0gICAgaW5p dF9sb2FkZWRfc2NyaXB0c19pbmZvIChpbmZvKTsKLS0KLS0gIHJldHVybiBpbmZvOwotLX0KLS0K LS0vKiBBZGQgc2NyaXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBIVEFCLgotLSAgIEZVTExfUEFUSCBp cyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgotLSAgIFRoZSByZXN1bHQgaXMgdHJ1 ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLS0KLS1z dGF0aWMgaW50Ci0tbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGh0YWIgKmh0YWIsIGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCkKLS17Ci0tICBzdHJ1Y3QgbG9hZGVkX3Nj cmlwdCAqKnNsb3QsIGVudHJ5OwotLSAgaW50IGluX2hhc2hfdGFibGU7Ci0tCi0tICBlbnRyeS5u YW1lID0gbmFtZTsKLS0gIGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKLS0gIHNsb3QgPSAo c3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElO U0VSVCk7Ci0tICBpbl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKLS0KLS0gIC8qIElmIHRo aXMgc2NyaXB0IGlzIG5vdCBpbiB0aGUgaGFzaCB0YWJsZSwgYWRkIGl0LiAgKi8KLS0KLS0gIGlm ICghIGluX2hhc2hfdGFibGUpCi0tICAgIHsKLS0gICAgICBjaGFyICpwOwotLQotLSAgICAgIC8q IEFsbG9jYXRlIGFsbCBzcGFjZSBpbiBvbmUgY2h1bmsgc28gaXQncyBlYXNpZXIgdG8gZnJlZS4g ICovCi0tICAgICAgKnNsb3QgPSB4bWFsbG9jIChzaXplb2YgKCoqc2xvdCkKLS0JCSAgICAgICAr IHN0cmxlbiAobmFtZSkgKyAxCi0tCQkgICAgICAgKyAoZnVsbF9wYXRoICE9IE5VTEwgPyAoc3Ry bGVuIChmdWxsX3BhdGgpICsgMSkgOiAwKSk7Ci0tICAgICAgcCA9ICgoY2hhciopICpzbG90KSAr IHNpemVvZiAoKipzbG90KTsKLS0gICAgICBzdHJjcHkgKHAsIG5hbWUpOwotLSAgICAgICgqc2xv dCktPm5hbWUgPSBwOwotLSAgICAgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKLS0JewotLQkgIHAg Kz0gc3RybGVuIChwKSArIDE7Ci0tCSAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOwotLQkgICgqc2xv dCktPmZ1bGxfcGF0aCA9IHA7Ci0tCX0KLS0gICAgICBlbHNlCi0tCSgqc2xvdCktPmZ1bGxfcGF0 aCA9IE5VTEw7Ci0tICAgIH0KLS0KLS0gIHJldHVybiBpbl9oYXNoX3RhYmxlOwotLX0KLS0KLSAv KiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9CSkZJTEUuCi0gICAgU1RBUlQsRU5EIGRlbGlt aXQgYSBidWZmZXIgY29udGFpbmluZyBhIGxpc3Qgb2YgbnVsLXRlcm1pbmF0ZWQKLSAgICBmaWxl IG5hbWVzLgotQEAgLTMwMSwyMCArMTI5LDE3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0 cnVjdCBvYmpmaWxlICoKLSAKLSAJIElXQk4gaWYgY29tcGxhaW50cy5jIHdlcmUgbW9yZSBnZW5l cmFsLXB1cnBvc2UuICAqLwotIAotLSAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2Ny aXB0IChwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsIGZpbGUsCi0rICAgICAgaW5faGFzaF90 YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLAotIAkJCQkJb3BlbmVk ID8gZnVsbF9wYXRoIDogTlVMTCk7Ci0gCi0gICAgICAgaWYgKCEgb3BlbmVkKQotIAl7Ci0gCSAg LyogV2UgZG9uJ3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2Fi bGUuICAqLwotLQkgIGlmICghIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdf cHJpbnRlZCkKLS0JICAgIHsKLS0JICAgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQg c2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKLSsJICBpZiAoc2NyaXB0X25vdF9m b3VuZF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5mbykpCi0rCSAgICB3YXJuaW5nIChfKCJNaXNz aW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAotIG9mIGZp bGUgJXNcblwKLSBVc2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvIGxpc3Qg dGhlbS4iKSwKLS0JCSAgICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFt ZSk7Ci0tCSAgICAgIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRl ZCA9IFRSVUU7Ci0tCSAgICB9Ci0rCQkgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpm aWxlLT5uYW1lKTsKLSAJfQotICAgICAgIGVsc2UKLSAJewotQEAgLTM1NiwxMTYgKzE4MSw2IEBA IGF1dG9fbG9hZF9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWwKLSAgIGRvX2NsZWFudXBz IChjbGVhbnVwcyk7Ci0gfQotIAotLS8qIENsZWFyIHRoZSB0YWJsZSBvZiBsb2FkZWQgc2VjdGlv biBzY3JpcHRzLiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLWNsZWFyX3NlY3Rpb25fc2NyaXB0cyAo dm9pZCkKLS17Ci0tICBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlID0gY3VycmVudF9wcm9n cmFtX3NwYWNlOwotLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLS0KLS0g IGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh KTsKLS0gIGlmIChpbmZvICE9IE5VTEwgJiYgaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkK LS0gICAgewotLSAgICAgIGh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7Ci0tICAg ICAgaW5mby0+bG9hZGVkX3NjcmlwdHMgPSBOVUxMOwotLSAgICAgIGluZm8tPnNjcmlwdF9ub3Rf Zm91bmRfd2FybmluZ19wcmludGVkID0gRkFMU0U7Ci0tICAgIH0KLS19Ci0tCi0tLyogTG9vayBm b3IgdGhlIGF1dG8tbG9hZCBzY3JpcHQgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQg aXQuICAqLwotLQotLXN0YXRpYyB2b2lkCi0tYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQotLXsKLS0gIGNoYXIgKnJl YWxuYW1lOwotLSAgY2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7Ci0tICBpbnQgbGVuOwotLSAg RklMRSAqaW5wdXQ7Ci0tICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7Ci0tCi0tICByZWFsbmFt ZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7Ci0tICBsZW4gPSBzdHJsZW4gKHJlYWxu YW1lKTsKLS0gIGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChzdWZmaXgpICsgMSk7 Ci0tICBtZW1jcHkgKGZpbGVuYW1lLCByZWFsbmFtZSwgbGVuKTsKLS0gIHN0cmNweSAoZmlsZW5h bWUgKyBsZW4sIHN1ZmZpeCk7Ci0tCi0tICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUs IGZpbGVuYW1lKTsKLS0gIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1lKTsKLS0KLS0gIGlu cHV0ID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOwotLSAgZGVidWdmaWxlID0gZmlsZW5hbWU7Ci0t Ci0tICBpZiAoIWlucHV0ICYmIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KQotLSAgICB7Ci0tICAgICAg LyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJl Y3RvcnkuICAqLwotLSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUp Ci0tCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEpOwotLSAgICAgIHN0 cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0tICAgICAgLyogRklMRU5B TUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCi0tICAgICAg c3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKLS0KLS0gICAgICBtYWtlX2NsZWFudXAgKHhm cmVlLCBkZWJ1Z2ZpbGUpOwotLSAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsK LS0gICAgfQotLQotLSAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKLS0gICAgewotLSAgICAg IC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgZ2RiJ3MgZGF0 YQotLQkgZGlyZWN0b3J5LiAgKi8KLS0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4g KGdkYl9kYXRhZGlyKSArIHN0cmxlbiAoZmlsZW5hbWUpCi0tCQkJICAgKyBzdHJsZW4gKCIvYXV0 by1sb2FkIikgKyAxKTsKLS0gICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZ2RiX2RhdGFkaXIpOwot LSAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCAiL2F1dG8tbG9hZCIpOwotLSAgICAgIC8qIEZJTEVO QU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLwotLSAgICAg IHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0tCi0tICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgZGVidWdmaWxlKTsKLS0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7 Ci0tICAgIH0KLS0KLS0gIGlmIChpbnB1dCkKLS0gICAgewotLSAgICAgIHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotLQotLSAgICAgIG1ha2VfY2xlYW51cF9mY2xv c2UgKGlucHV0KTsKLS0KLS0gICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFi bGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIgotLQkgY2FuIHByaW50IGl0LiAgKi8K LS0gICAgICBwc3BhY2VfaW5mbyA9Ci0tCWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xv YWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0tICAgICAgbWF5YmVfYWRkX3NjcmlwdCAo cHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSk7Ci0tCi0t ICAgICAgLyogVG8gcHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyIHdlIGRvbid0IGNoZWNrIGZv ciB3aGV0aGVyIHRoZQotLQkgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSB0YWJsZSwgYW5kIGFs d2F5cyBsb2FkIGl0LgotLQkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9h ZCBpdCB0d2ljZSwKLS0JIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVt cG90ZW50IHVuZGVyIG11bHRpcGxlCi0tCSBsb2FkcyBhbnl3YXkuICAqLwotLSAgICAgIHNvdXJj ZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsK LS0gICAgfQotLQotLSAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLS19Ci0tCi0tLyogVGhpcyBp cyBhIG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8tbG9hZCBzY3JpcHRzLgot LQotLSAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIHN1cHBvcnRlZC4K LS0gICAxKSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGUgb2JqZmlsZQotLSAgIDIpIGZyb20gLmRl YnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24gICovCi0tCi0tc3RhdGljIHZvaWQKLS1hdXRvX2xvYWRf bmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotLXsKLS0gIGlmICghb2JqZmls ZSkKLS0gICAgewotLSAgICAgIC8qIE9CSkZJTEUgaXMgTlVMTCB3aGVuIGxvYWRpbmcgYSBuZXcg Im1haW4iIHN5bWJvbC1maWxlLiAgKi8KLS0gICAgICBjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKCk7 Ci0tICAgICAgcmV0dXJuOwotLSAgICB9Ci0tCi0tICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2Jq ZmlsZSAob2JqZmlsZSk7Ci0tfQotLQotIC8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMg Zm9yIE9CSkZJTEUuICAqLwotIAotIHZvaWQKLUBAIC00NzgsMTQ2ICsxOTMsOSBAQCBsb2FkX2F1 dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iCi0gICAgIH0KLSB9Ci0gDAotLS8qIENv bGxlY3Qgc2NyaXB0cyB0byBiZSBwcmludGVkIGluIGEgdmVjLiAgKi8KLS0KLS10eXBlZGVmIHN0 cnVjdCBsb2FkZWRfc2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKLS1ERUZfVkVDX1AgKGxvYWRl ZF9zY3JpcHRfcHRyKTsKLS0KLS0vKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVy c2UuCi0tICAgQ29sbGVjdCB0aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8K LS0KLS1zdGF0aWMgaW50Ci0tY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwg dm9pZCAqaW5mbykKLS17Ci0tICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7 Ci0tICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0gaW5mbzsKLS0KLS0g IGlmIChyZV9leGVjIChzY3JpcHQtPm5hbWUpKQotLSAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRf c2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3JpcHQpOwotLQotLSAgcmV0dXJuIDE7Ci0tfQot LQotLS8qIFByaW50IFNDUklQVC4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1wcmludF9zY3JpcHQg KHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQpCi0tewotLSAgc3RydWN0IHVpX291dCAqdWlv dXQgPSBjdXJyZW50X3Vpb3V0OwotLSAgc3RydWN0IGNsZWFudXAgKmNoYWluOwotLQotLSAgY2hh aW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwot LQotLSAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxf cGF0aCA/ICJZZXMiIDogIk1pc3NpbmciKTsKLS0gIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0 LCAic2NyaXB0Iiwgc2NyaXB0LT5uYW1lKTsKLS0gIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7 Ci0tCi0tICAvKiBJZiB0aGUgbmFtZSBpc24ndCB0aGUgZnVsbCBwYXRoLCBwcmludCBpdCB0b28u ICAqLwotLSAgaWYgKHNjcmlwdC0+ZnVsbF9wYXRoICE9IE5VTEwKLS0gICAgICAmJiBzdHJjbXAg KHNjcmlwdC0+bmFtZSwgc2NyaXB0LT5mdWxsX3BhdGgpICE9IDApCi0tICAgIHsKLS0gICAgICB1 aV9vdXRfdGV4dCAodWlvdXQsICJcdGZ1bGwgbmFtZTogIik7Ci0tICAgICAgdWlfb3V0X2ZpZWxk X3N0cmluZyAodWlvdXQsICJmdWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxfcGF0aCk7Ci0tICAgICAg dWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLS0gICAgfQotLQotLSAgZG9fY2xlYW51cHMgKGNo YWluKTsKLS19Ci0tCi0tLyogSGVscGVyIGZvciBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIHRvIHNv cnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4gICovCi0tCi0tc3RhdGljIGludAotLXNvcnRfc2NyaXB0 c19ieV9uYW1lIChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0tewotLSAgY29uc3Qg c3RydWN0IGxvYWRlZF9zY3JpcHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoq KSBhcDsKLS0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpiID0gKihjb25zdCBzdHJ1Y3Qg bG9hZGVkX3NjcmlwdCAqKikgYnA7Ci0tCi0tICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1l LCBiLT5uYW1lKTsKLS19Ci0tCi0tLyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQu ICAqLwotLQotLXN0YXRpYyB2b2lkCi0taW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0 dGVybiwgaW50IGZyb21fdHR5KQotLXsKLS0gIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVu dF91aW91dDsKLS0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwot LSAgc3RydWN0IGNsZWFudXAgKnNjcmlwdF9jaGFpbjsKLS0gIFZFQyAobG9hZGVkX3NjcmlwdF9w dHIpICpzY3JpcHRzOwotLSAgaW50IG5yX3NjcmlwdHM7Ci0tCi0tICBkb250X3JlcGVhdCAoKTsK LS0KLS0gIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoY3VycmVudF9w cm9ncmFtX3NwYWNlKTsKLS0KLS0gIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQotLSAgICB7Ci0t ICAgICAgY2hhciAqcmVfZXJyID0gcmVfY29tcCAocGF0dGVybik7Ci0tCi0tICAgICAgaWYgKHJl X2VycikKLS0JZXJyb3IgKF8oIkludmFsaWQgcmVnZXhwOiAlcyIpLCByZV9lcnIpOwotLSAgICB9 Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICByZV9jb21wICgiIik7Ci0tICAgIH0KLS0KLS0gIC8q IFdlIG5lZWQgdG8ga25vdyB0aGUgbnVtYmVyIG9mIHJvd3MgYmVmb3JlIHdlIGJ1aWxkIHRoZSB0 YWJsZS4KLS0gICAgIFBsdXMgd2Ugd2FudCB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuCi0t ICAgICBTbyBmaXJzdCB0cmF2ZXJzZSB0aGUgaGFzaCB0YWJsZSBjb2xsZWN0aW5nIHRoZSBtYXRj aGluZyBzY3JpcHRzLiAgKi8KLS0KLS0gIHNjcmlwdHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3Jp cHRfcHRyLCAxMCk7Ci0tICBzY3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVw IChsb2FkZWRfc2NyaXB0X3B0ciksICZzY3JpcHRzKTsKLS0KLS0gIGlmIChwc3BhY2VfaW5mbyAh PSBOVUxMICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQotLSAgICB7Ci0t ICAgICAgaW1tZWRpYXRlX3F1aXQrKzsKLS0gICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3Jp cHRzIGFzIFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLwotLSAgICAgIGh0YWJf dHJhdmVyc2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKLS0JCQkgICAg ICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKLS0gICAgICBpbW1lZGlhdGVf cXVpdC0tOwotLSAgICB9Ci0tCi0tICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3Nj cmlwdF9wdHIsIHNjcmlwdHMpOwotLSAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9l bmQgKHVpb3V0LCAyLCBucl9zY3JpcHRzLAotLQkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRz VGFibGUiKTsKLS0KLS0gIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3LCB1aV9sZWZ0LCAi bG9hZGVkIiwgIkxvYWRlZCIpOwotLSAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcwLCB1 aV9sZWZ0LCAic2NyaXB0IiwgIlNjcmlwdCIpOwotLSAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0 KTsKLS0KLS0gIGlmIChucl9zY3JpcHRzID4gMCkKLS0gICAgewotLSAgICAgIGludCBpOwotLSAg ICAgIGxvYWRlZF9zY3JpcHRfcHRyIHNjcmlwdDsKLS0KLS0gICAgICBxc29ydCAoVkVDX2FkZHJl c3MgKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKSwKLS0JICAgICBWRUNfbGVuZ3RoIChsb2Fk ZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyksCi0tCSAgICAgc2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0 ciksIHNvcnRfc2NyaXB0c19ieV9uYW1lKTsKLS0gICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0 ZSAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMsIGksIHNjcmlwdCk7ICsraSkKLS0JcHJpbnRf c2NyaXB0IChzY3JpcHQpOwotLSAgICB9Ci0tCi0tICBkb19jbGVhbnVwcyAoc2NyaXB0X2NoYWlu KTsKLS0KLS0gIGlmIChucl9zY3JpcHRzID09IDApCi0tICAgIHsKLS0gICAgICBpZiAocGF0dGVy biAmJiAqcGF0dGVybikKLS0JdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2Fk IHNjcmlwdHMgbWF0Y2hpbmcgJXMuXG4iLAotLQkJCXBhdHRlcm4pOwotLSAgICAgIGVsc2UKLS0J dWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMuXG4iKTsKLS0g ICAgfQotLX0KLS0MCi0gdm9pZAotIGdkYnB5X2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQot IHsKLS0gIGF1dG9fbG9hZF9wc3BhY2VfZGF0YQotLSAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3Bh Y2VfZGF0YV93aXRoX2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKLS0K LS0gIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0b19sb2FkX25ld19vYmpmaWxlKTsK LS0KLSAgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkLXNjcmlwdHMiLCBjbGFz c19zdXBwb3J0LAotIAkJCSAgICZhdXRvX2xvYWRfc2NyaXB0cywgXygiXAotIFNldCB0aGUgZGVi dWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwK LUBAIC02MjcsMTEgKzIwNSw2IEBAIGFuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuIiks Ci0gCQkJICAgTlVMTCwgTlVMTCwKLSAJCQkgICAmc2V0bGlzdCwKLSAJCQkgICAmc2hvd2xpc3Qp OwotLQotLSAgYWRkX2luZm8gKCJhdXRvLWxvYWQtc2NyaXB0cyIsCi0tCSAgICBpbmZvX2F1dG9f bG9hZF9zY3JpcHRzLAotLQkgICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBs b2FkZWQgc2NyaXB0cy5cblwKLS1Vc2FnZTogaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQ XSIpKTsKLSB9Ci0gCi0gI2Vsc2UgLyogISBIQVZFX1BZVEhPTiAqLwotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6MjY6MTQu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhv bi5oCTIwMTItMDQtMTggMDA6MjY6MjkuMDU0MTIwMTk5ICswMjAwCi1AQCAtMjQsOCArMjQsNiBA QAotIAotIHN0cnVjdCBicmVha3BvaW50X29iamVjdDsKLSAKLS1leHRlcm4gaW50IGdkYnB5X2ds b2JhbF9hdXRvX2xvYWQ7Ci0tCi0gZXh0ZXJuIHZvaWQgZmluaXNoX3B5dGhvbl9pbml0aWFsaXph dGlvbiAodm9pZCk7Ci0gCi0gdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAo c3RydWN0IGNvbW1hbmRfbGluZSAqKTsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDlvZjI4 LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA5b2YyOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4xMjQ0Y2ZmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA5 b2YyOC5wYXRjaApAQCAtMCwwICsxLDExNjggQEAKK1twYXRjaCM0IDMvOF0gYXV0by1sb2FkOiBy ZXNodWZmbGUgY29kZQoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTIt MDQvbXNnMDAwODcuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0w NC9tc2cwMDExMi5odG1sCisKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxv YWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTIt MDQtMTggMDA6MjY6MjkuMDQ5MTIwMjEyICswMjAwCitAQCAtMCwwICsxLDQ3MiBAQAorKy8qIEdE QiByb3V0aW5lcyBmb3Igc3VwcG9ydGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLgorKworKyAgIENv cHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBU aGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlICJkZWZzLmgiCisrI2luY2x1ZGUgImF1dG8tbG9h ZC5oIgorKyNpbmNsdWRlICJwcm9nc3BhY2UuaCIKKysjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5o IgorKyNpbmNsdWRlICJnZGJfcmVnZXguaCIKKysjaW5jbHVkZSAidWktb3V0LmgiCisrI2luY2x1 ZGUgImZpbGVuYW1lcy5oIgorKyNpbmNsdWRlICJjb21tYW5kLmgiCisrI2luY2x1ZGUgIm9ic2Vy dmVyLmgiCisrI2luY2x1ZGUgIm9iamZpbGVzLmgiCisrI2luY2x1ZGUgInB5dGhvbi9weXRob24t aW50ZXJuYWwuaCIKKysKKysvKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBh dXRvLWxvYWRpbmcuCisrICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0 aG9uIGNvZGUgd2hlbiBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKKysgICBmYWxzZSBvdGhlcndpc2Uu CisrCisrICAgQm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2Fk IG11c3QgYmUgdHJ1ZSB0byBlbmFibGUKKysgICBhdXRvLWxvYWRpbmcuCisrCisrICAgVGhpcyBm bGFnIGV4aXN0cyB0byBmYWNpbGl0YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0 YXJ0LXVwCisrICAgdW50aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkg YXVnbWVudCB0aGUgc2VhcmNoIGRpcmVjdG9yaWVzCisrICAgdXNlZCB0byBmaW5kIHRoZSBzY3Jp cHRzLiAgKi8KKytpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7CisrCisrLyogRm9yIHNj cmlwdHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMg bWF5IGxvYWQKKysgICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRp bmcgdGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1lcywKKysgICBhbmQgdGhlcmUgY2FuIGJlIGEgbG90 IG9mIG9iamZpbGVzIGFuZCBzY3JpcHRzLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHNjcmlwdHMKKysg ICBsb2FkZWQgdGhpcyB3YXkuICAqLworKworK3N0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8K Kyt7CisrICAvKiBGb3IgZWFjaCBwcm9ncmFtIHNwYWNlIHdlIGtlZXAgdHJhY2sgb2YgbG9hZGVk IHNjcmlwdHMuICAqLworKyAgc3RydWN0IGh0YWIgKmxvYWRlZF9zY3JpcHRzOworKworKyAgLyog Tm9uLXplcm8gaWYgd2UndmUgaXNzdWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9hZCBz Y3JpcHQgbm90IGJlaW5nCisrICAgICBmb3VuZC4gIFdlIG9ubHkgd2FudCB0byBpc3N1ZSB0aGlz IHdhcm5pbmcgb25jZS4gICovCisrICBpbnQgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50 ZWQ7CisrfTsKKysKKysvKiBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRoZSBs b2FkZWQgc2NyaXB0IGhhc2ggdGFibGUuICAqLworKworK3N0cnVjdCBsb2FkZWRfc2NyaXB0Cisr eworKyAgLyogTmFtZSBhcyBwcm92aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCisrICBjb25zdCBj aGFyICpuYW1lOworKyAgLyogRnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0 IGZvdW5kIChvciB3YXMgb3RoZXJ3aXNlCisrICAgICBpbmFjY2Vzc2libGUpLiAgKi8KKysgIGNv bnN0IGNoYXIgKmZ1bGxfcGF0aDsKKyt9OworKworKy8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEg a2V5LiAgKi8KKytzdGF0aWMgY29uc3Qgc3RydWN0IHByb2dyYW1fc3BhY2VfZGF0YSAqYXV0b19s b2FkX3BzcGFjZV9kYXRhOworKworK3N0YXRpYyB2b2lkCisrYXV0b19sb2FkX3BzcGFjZV9kYXRh X2NsZWFudXAgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsIHZvaWQgKmFyZykKKyt7Cisr ICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOworKworKyAgaW5mbyA9IHByb2dy YW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOworKyAgaWYgKGlu Zm8gIT0gTlVMTCkKKysgICAgeworKyAgICAgIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cykKKysJ aHRhYl9kZWxldGUgKGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKKysgICAgICB4ZnJlZSAoaW5mbyk7 CisrICAgIH0KKyt9CisrCisrLyogR2V0IHRoZSBjdXJyZW50IGF1dG9sb2FkIGRhdGEuICBJZiBu b25lIGlzIGZvdW5kIHlldCwgYWRkIGl0IG5vdy4gIFRoaXMKKysgICBmdW5jdGlvbiBhbHdheXMg cmV0dXJucyBhIHZhbGlkIG9iamVjdC4gICovCisrCisrc3RhdGljIHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKgorK2dldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKHN0cnVjdCBwcm9ncmFt X3NwYWNlICpwc3BhY2UpCisreworKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5m bzsKKysKKysgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3Bz cGFjZV9kYXRhKTsKKysgIGlmIChpbmZvID09IE5VTEwpCisrICAgIHsKKysgICAgICBpbmZvID0g WFpBTExPQyAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyk7CisrICAgICAgc2V0X3Byb2dy YW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEsIGluZm8pOworKyAg ICB9CisrCisrICByZXR1cm4gaW5mbzsKKyt9CisrCisrLyogSGFzaCBmdW5jdGlvbiBmb3IgdGhl IGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCisrCisrc3RhdGljIGhhc2h2YWxfdAorK2hhc2hfbG9h ZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqZGF0YSkKKyt7CisrICBjb25zdCBzdHJ1Y3Qg bG9hZGVkX3NjcmlwdCAqZSA9IGRhdGE7CisrCisrICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAo ZS0+bmFtZSk7CisrfQorKworKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNj cmlwdCBoYXNoLiAgKi8KKysKKytzdGF0aWMgaW50CisrZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSAo Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKKyt7CisrICBjb25zdCBzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqZWEgPSBhOworKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmViID0gYjsK KysKKysgIHJldHVybiBzdHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkgPT0gMDsKKyt9CisrCisr LyogSW5pdGlhbGl6ZSB0aGUgdGFibGUgdG8gdHJhY2sgbG9hZGVkIHNjcmlwdHMuCisrICAgRWFj aCBlbnRyeSBpcyBoYXNoZWQgYnkgdGhlIGZ1bGwgcGF0aCBuYW1lLiAgKi8KKysKKytzdGF0aWMg dm9pZAorK2luaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm8pCisreworKyAgLyogQ2hvb3NlIDMxIGFzIHRoZSBzdGFydGluZyBz aXplIG9mIHRoZSBoYXNoIHRhYmxlLCBzb21ld2hhdCBhcmJpdHJhcmlseS4KKysgICAgIFNwYWNl IGZvciBlYWNoIGVudHJ5IGlzIG9idGFpbmVkIHdpdGggb25lIG1hbGxvYyBzbyB3ZSBjYW4gZnJl ZSB0aGVtCisrICAgICBlYXNpbHkuICAqLworKworKyAgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3Jp cHRzID0gaHRhYl9jcmVhdGUgKDMxLAorKwkJCQkJICAgICBoYXNoX2xvYWRlZF9zY3JpcHRfZW50 cnksCisrCQkJCQkgICAgIGVxX2xvYWRlZF9zY3JpcHRfZW50cnksCisrCQkJCQkgICAgIHhmcmVl KTsKKysKKysgIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9 IEZBTFNFOworK30KKysKKysvKiBXcmFwcGVyIG9uIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEg dG8gYWxzbyBhbGxvY2F0ZSB0aGUgaGFzaCB0YWJsZQorKyAgIGZvciBsb2FkaW5nIHNjcmlwdHMu ICAqLworKworK3N0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgorK2dldF9hdXRvX2xvYWRf cHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCisr eworKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKysKKysgIGluZm8gPSBn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChwc3BhY2UpOworKyAgaWYgKGluZm8tPmxvYWRlZF9z Y3JpcHRzID09IE5VTEwpCisrICAgIGluaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoaW5mbyk7Cisr CisrICByZXR1cm4gaW5mbzsKKyt9CisrCisrLyogQWRkIHNjcmlwdCBOQU1FIHRvIGhhc2ggdGFi bGUgb2YgUFNQQUNFX0lORk8uCisrICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3 YXNuJ3QgZm91bmQuCisrICAgVGhlIHJlc3VsdCBpcyB0cnVlIGlmIHRoZSBzY3JpcHQgd2FzIGFs cmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLworKworK2ludAorK21heWJlX2FkZF9zY3JpcHQg KHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLCBjb25zdCBjaGFyICpu YW1lLAorKwkJICBjb25zdCBjaGFyICpmdWxsX3BhdGgpCisreworKyAgc3RydWN0IGh0YWIgKmh0 YWIgPSBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHM7CisrICBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqKnNsb3QsIGVudHJ5OworKyAgaW50IGluX2hhc2hfdGFibGU7CisrCisrICBlbnRyeS5uYW1l ID0gbmFtZTsKKysgIGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKKysgIHNsb3QgPSAoc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElOU0VS VCk7CisrICBpbl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKKysKKysgIC8qIElmIHRoaXMg c2NyaXB0IGlzIG5vdCBpbiB0aGUgaGFzaCB0YWJsZSwgYWRkIGl0LiAgKi8KKysKKysgIGlmICgh IGluX2hhc2hfdGFibGUpCisrICAgIHsKKysgICAgICBjaGFyICpwOworKworKyAgICAgIC8qIEFs bG9jYXRlIGFsbCBzcGFjZSBpbiBvbmUgY2h1bmsgc28gaXQncyBlYXNpZXIgdG8gZnJlZS4gICov CisrICAgICAgKnNsb3QgPSB4bWFsbG9jIChzaXplb2YgKCoqc2xvdCkKKysJCSAgICAgICArIHN0 cmxlbiAobmFtZSkgKyAxCisrCQkgICAgICAgKyAoZnVsbF9wYXRoICE9IE5VTEwgPyAoc3RybGVu IChmdWxsX3BhdGgpICsgMSkgOiAwKSk7CisrICAgICAgcCA9ICgoY2hhciopICpzbG90KSArIHNp emVvZiAoKipzbG90KTsKKysgICAgICBzdHJjcHkgKHAsIG5hbWUpOworKyAgICAgICgqc2xvdCkt Pm5hbWUgPSBwOworKyAgICAgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKKysJeworKwkgIHAgKz0g c3RybGVuIChwKSArIDE7CisrCSAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOworKwkgICgqc2xvdCkt PmZ1bGxfcGF0aCA9IHA7CisrCX0KKysgICAgICBlbHNlCisrCSgqc2xvdCktPmZ1bGxfcGF0aCA9 IE5VTEw7CisrICAgIH0KKysKKysgIHJldHVybiBpbl9oYXNoX3RhYmxlOworK30KKysKKysvKiBD bGVhciB0aGUgdGFibGUgb2YgbG9hZGVkIHNlY3Rpb24gc2NyaXB0cy4gICovCisrCisrc3RhdGlj IHZvaWQKKytjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKHZvaWQpCisreworKyAgc3RydWN0IHByb2dy YW1fc3BhY2UgKnBzcGFjZSA9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsKKysgIHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKmluZm87CisrCisrICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRh IChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7CisrICBpZiAoaW5mbyAhPSBOVUxMICYm IGluZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCisrICAgIHsKKysgICAgICBodGFiX2RlbGV0 ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOworKyAgICAgIGluZm8tPmxvYWRlZF9zY3JpcHRzID0g TlVMTDsKKysgICAgICBpbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZB TFNFOworKyAgICB9CisrfQorKworKy8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFz c29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KKysKKyt2b2lkCisrYXV0b19s b2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAq c3VmZml4KQorK3sKKysgIGNoYXIgKnJlYWxuYW1lOworKyAgY2hhciAqZmlsZW5hbWUsICpkZWJ1 Z2ZpbGU7CisrICBpbnQgbGVuOworKyAgRklMRSAqaW5wdXQ7CisrICBzdHJ1Y3QgY2xlYW51cCAq Y2xlYW51cHM7CisrCisrICByZWFsbmFtZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7 CisrICBsZW4gPSBzdHJsZW4gKHJlYWxuYW1lKTsKKysgIGZpbGVuYW1lID0geG1hbGxvYyAobGVu ICsgc3RybGVuIChzdWZmaXgpICsgMSk7CisrICBtZW1jcHkgKGZpbGVuYW1lLCByZWFsbmFtZSwg bGVuKTsKKysgIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIHN1ZmZpeCk7CisrCisrICBjbGVhbnVw cyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGZpbGVuYW1lKTsKKysgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIHJlYWxuYW1lKTsKKysKKysgIGlucHV0ID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOworKyAg ZGVidWdmaWxlID0gZmlsZW5hbWU7CisrCisrICBpZiAoIWlucHV0ICYmIGRlYnVnX2ZpbGVfZGly ZWN0b3J5KQorKyAgICB7CisrICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUg c2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLworKyAgICAgIGRlYnVnZmlsZSA9IHht YWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUpCisrCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVfZGly ZWN0b3J5KSArIDEpOworKyAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVj dG9yeSk7CisrICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQg YSAiLyIgaGVyZS4gICovCisrICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKKysK KysgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworKyAgICAgIGlucHV0ID0g Zm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKKysgICAgfQorKworKyAgaWYgKCFpbnB1dCAmJiBnZGJf ZGF0YWRpcikKKysgICAgeworKyAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gYSBz dWJkaXJlY3Rvcnkgb2YgZ2RiJ3MgZGF0YQorKwkgZGlyZWN0b3J5LiAgKi8KKysgICAgICBkZWJ1 Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGdkYl9kYXRhZGlyKSArIHN0cmxlbiAoZmlsZW5hbWUp CisrCQkJICAgKyBzdHJsZW4gKCIvYXV0by1sb2FkIikgKyAxKTsKKysgICAgICBzdHJjcHkgKGRl YnVnZmlsZSwgZ2RiX2RhdGFkaXIpOworKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCAiL2F1dG8t bG9hZCIpOworKyAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVk IGEgIi8iIGhlcmUuICAqLworKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Cisr CisrICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKKysgICAgICBpbnB1dCA9 IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7CisrICAgIH0KKysKKysgIGlmIChpbnB1dCkKKysgICAg eworKyAgICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworKwor KyAgICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKGlucHV0KTsKKysKKysgICAgICAvKiBBZGQgdGhp cyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRz IgorKwkgY2FuIHByaW50IGl0LiAgKi8KKysgICAgICBwc3BhY2VfaW5mbyA9CisrCWdldF9hdXRv X2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Cisr ICAgICAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGRlYnVnZmlsZSwgZGVidWdmaWxl KTsKKysKKysgICAgICAvKiBUbyBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIgd2UgZG9uJ3Qg Y2hlY2sgZm9yIHdoZXRoZXIgdGhlCisrCSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIHRhYmxl LCBhbmQgYWx3YXlzIGxvYWQgaXQuCisrCSBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHdlJ2Qg ZXZlciBsb2FkIGl0IHR3aWNlLAorKwkgYW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRv IGJlIGlkZW1wb3RlbnQgdW5kZXIgbXVsdGlwbGUKKysJIGxvYWRzIGFueXdheS4gICovCisrICAg ICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1 Z2ZpbGUpOworKyAgICB9CisrCisrICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworK30KKysKKysv KiBUaGlzIGlzIGEgbmV3X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2sgdG8gYXV0by1sb2FkIHNj cmlwdHMuCisrCisrICAgVHdvIGZsYXZvcnMgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgc3Vw cG9ydGVkLgorKyAgIDEpIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoZSBvYmpmaWxlCisrICAgMikg ZnJvbSAuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2F1 dG9fbG9hZF9uZXdfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisreworKyAgaWYg KCFvYmpmaWxlKQorKyAgICB7CisrICAgICAgLyogT0JKRklMRSBpcyBOVUxMIHdoZW4gbG9hZGlu ZyBhIG5ldyAibWFpbiIgc3ltYm9sLWZpbGUuICAqLworKyAgICAgIGNsZWFyX3NlY3Rpb25fc2Ny aXB0cyAoKTsKKysgICAgICByZXR1cm47CisrICAgIH0KKysKKysgIGxvYWRfYXV0b19zY3JpcHRz X2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKKyt9CisrCisrLyogQ29sbGVjdCBzY3JpcHRzIHRvIGJl IHByaW50ZWQgaW4gYSB2ZWMuICAqLworKworK3R5cGVkZWYgc3RydWN0IGxvYWRlZF9zY3JpcHQg KmxvYWRlZF9zY3JpcHRfcHRyOworK0RFRl9WRUNfUCAobG9hZGVkX3NjcmlwdF9wdHIpOworKwor Ky8qIFRyYXZlcnNhbCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2ZXJzZS4KKysgICBDb2xsZWN0IHRo ZSBlbnRyeSBpZiBpdCBtYXRjaGVzIHRoZSByZWdleHAuICAqLworKworK3N0YXRpYyBpbnQKKytj b2xsZWN0X21hdGNoaW5nX3NjcmlwdHMgKHZvaWQgKipzbG90LCB2b2lkICppbmZvKQorK3sKKysg IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQgPSAqc2xvdDsKKysgIFZFQyAobG9hZGVkX3Nj cmlwdF9wdHIpICoqc2NyaXB0c19wdHIgPSBpbmZvOworKworKyAgaWYgKHJlX2V4ZWMgKHNjcmlw dC0+bmFtZSkpCisrICAgIFZFQ19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqc2NyaXB0 c19wdHIsIHNjcmlwdCk7CisrCisrICByZXR1cm4gMTsKKyt9CisrCisrLyogUHJpbnQgU0NSSVBU LiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3ByaW50X3NjcmlwdCAoc3RydWN0IGxvYWRlZF9zY3Jp cHQgKnNjcmlwdCkKKyt7CisrICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7 CisrICBzdHJ1Y3QgY2xlYW51cCAqY2hhaW47CisrCisrICBjaGFpbiA9IG1ha2VfY2xlYW51cF91 aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7CisrCisrICB1aV9vdXRfZmllbGRf c3RyaW5nICh1aW91dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVsbF9wYXRoID8gIlllcyIgOiAiTWlz c2luZyIpOworKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJzY3JpcHQiLCBzY3JpcHQt Pm5hbWUpOworKyAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKysKKysgIC8qIElmIHRoZSBu YW1lIGlzbid0IHRoZSBmdWxsIHBhdGgsIHByaW50IGl0IHRvby4gICovCisrICBpZiAoc2NyaXB0 LT5mdWxsX3BhdGggIT0gTlVMTAorKyAgICAgICYmIHN0cmNtcCAoc2NyaXB0LT5uYW1lLCBzY3Jp cHQtPmZ1bGxfcGF0aCkgIT0gMCkKKysgICAgeworKyAgICAgIHVpX291dF90ZXh0ICh1aW91dCwg Ilx0ZnVsbCBuYW1lOiAiKTsKKysgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImZ1 bGxfcGF0aCIsIHNjcmlwdC0+ZnVsbF9wYXRoKTsKKysgICAgICB1aV9vdXRfdGV4dCAodWlvdXQs ICJcbiIpOworKyAgICB9CisrCisrICBkb19jbGVhbnVwcyAoY2hhaW4pOworK30KKysKKysvKiBI ZWxwZXIgZm9yIGluZm9fYXV0b19sb2FkX3NjcmlwdHMgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBu YW1lLiAgKi8KKysKKytzdGF0aWMgaW50Cisrc29ydF9zY3JpcHRzX2J5X25hbWUgKGNvbnN0IHZv aWQgKmFwLCBjb25zdCB2b2lkICpicCkKKyt7CisrICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqYSA9ICooY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGFwOworKyAgY29uc3Qgc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKmIgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBi cDsKKysKKysgIHJldHVybiBGSUxFTkFNRV9DTVAgKGEtPm5hbWUsIGItPm5hbWUpOworK30KKysK KysvKiAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZC4gICovCisrCisrc3RhdGljIHZv aWQKKytpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkp CisreworKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OworKyAgc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CisrICBzdHJ1Y3QgY2xlYW51cCAq c2NyaXB0X2NoYWluOworKyAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKnNjcmlwdHM7CisrICBp bnQgbnJfc2NyaXB0czsKKysKKysgIGRvbnRfcmVwZWF0ICgpOworKworKyAgcHNwYWNlX2luZm8g PSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworKwor KyAgaWYgKHBhdHRlcm4gJiYgKnBhdHRlcm4pCisrICAgIHsKKysgICAgICBjaGFyICpyZV9lcnIg PSByZV9jb21wIChwYXR0ZXJuKTsKKysKKysgICAgICBpZiAocmVfZXJyKQorKwllcnJvciAoXygi SW52YWxpZCByZWdleHA6ICVzIiksIHJlX2Vycik7CisrICAgIH0KKysgIGVsc2UKKysgICAgewor KyAgICAgIHJlX2NvbXAgKCIiKTsKKysgICAgfQorKworKyAgLyogV2UgbmVlZCB0byBrbm93IHRo ZSBudW1iZXIgb2Ygcm93cyBiZWZvcmUgd2UgYnVpbGQgdGhlIHRhYmxlLgorKyAgICAgUGx1cyB3 ZSB3YW50IHRvIHNvcnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4KKysgICAgIFNvIGZpcnN0IHRyYXZl cnNlIHRoZSBoYXNoIHRhYmxlIGNvbGxlY3RpbmcgdGhlIG1hdGNoaW5nIHNjcmlwdHMuICAqLwor KworKyAgc2NyaXB0cyA9IFZFQ19hbGxvYyAobG9hZGVkX3NjcmlwdF9wdHIsIDEwKTsKKysgIHNj cmlwdF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKGxvYWRlZF9zY3JpcHRfcHRy KSwgJnNjcmlwdHMpOworKworKyAgaWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYgcHNwYWNlX2lu Zm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCisrICAgIHsKKysgICAgICBpbW1lZGlhdGVfcXVp dCsrOworKyAgICAgIC8qIFBhc3MgYSBwb2ludGVyIHRvIHNjcmlwdHMgYXMgVkVDX3NhZmVfcHVz aCBjYW4gcmVhbGxvYyBzcGFjZS4gICovCisrICAgICAgaHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSAo cHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLAorKwkJCSAgICAgIGNvbGxlY3RfbWF0Y2hpbmdf c2NyaXB0cywgJnNjcmlwdHMpOworKyAgICAgIGltbWVkaWF0ZV9xdWl0LS07CisrICAgIH0KKysK KysgIG5yX3NjcmlwdHMgPSBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyk7 CisrICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIG5yX3Nj cmlwdHMsCisrCQkJCSAgICAgICAiQXV0b0xvYWRlZFNjcmlwdHNUYWJsZSIpOworKworKyAgdWlf b3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcsIHVpX2xlZnQsICJsb2FkZWQiLCAiTG9hZGVkIik7 CisrICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNzAsIHVpX2xlZnQsICJzY3JpcHQiLCAi U2NyaXB0Iik7CisrICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOworKworKyAgaWYgKG5yX3Nj cmlwdHMgPiAwKQorKyAgICB7CisrICAgICAgaW50IGk7CisrICAgICAgbG9hZGVkX3NjcmlwdF9w dHIgc2NyaXB0OworKworKyAgICAgIHFzb3J0IChWRUNfYWRkcmVzcyAobG9hZGVkX3NjcmlwdF9w dHIsIHNjcmlwdHMpLAorKwkgICAgIFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3Jp cHRzKSwKKysJICAgICBzaXplb2YgKGxvYWRlZF9zY3JpcHRfcHRyKSwgc29ydF9zY3JpcHRzX2J5 X25hbWUpOworKyAgICAgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChsb2FkZWRfc2NyaXB0X3B0 ciwgc2NyaXB0cywgaSwgc2NyaXB0KTsgKytpKQorKwlwcmludF9zY3JpcHQgKHNjcmlwdCk7Cisr ICAgIH0KKysKKysgIGRvX2NsZWFudXBzIChzY3JpcHRfY2hhaW4pOworKworKyAgaWYgKG5yX3Nj cmlwdHMgPT0gMCkKKysgICAgeworKyAgICAgIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQorKwl1 aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsICJObyBhdXRvLWxvYWQgc2NyaXB0cyBtYXRjaGluZyAl cy5cbiIsCisrCQkJcGF0dGVybik7CisrICAgICAgZWxzZQorKwl1aV9vdXRfbWVzc2FnZSAodWlv dXQsIDAsICJObyBhdXRvLWxvYWQgc2NyaXB0cy5cbiIpOworKyAgICB9CisrfQorKworKy8qIFJl dHVybiBub24temVybyBpZiBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRCBvZiBQU1BB Q0VfSU5GTyB3YXMgdW5zZXQKKysgICBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiAgQWx3 YXlzIHNldCBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRAorKyAgIG9mIFBTUEFDRV9J TkZPLiAgKi8KKysKKytpbnQKKytzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQorK3sKKysgIGludCByZXR2YWwg PSAhcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkOworKworKyAg cHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkID0gMTsKKysKKysg IHJldHVybiByZXR2YWw7CisrfQorKworK3ZvaWQgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lk KTsKKysKKyt2b2lkCisrX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQorK3sKKysgIGF1dG9f bG9hZF9wc3BhY2VfZGF0YQorKyAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRo X2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKKysKKysgIG9ic2VydmVy X2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0b19sb2FkX25ld19vYmpmaWxlKTsKKysKKysgIGFkZF9p bmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLAorKwkgICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cywK KysJICAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlwdHMu XG5cCisrVXNhZ2U6IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7CisrfQorSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAy MTIgKzAyMDAKK0BAIC0wLDAgKzEsMzYgQEAKKysvKiBHREIgcm91dGluZXMgZm9yIHN1cHBvcnRp bmcgYXV0by1sb2FkZWQgc2NyaXB0cy4KKysKKysgICBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RC LgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaWZu ZGVmIEFVVE9fTE9BRF9ICisrI2RlZmluZSBBVVRPX0xPQURfSCAxCisrCisrc3RydWN0IHByb2dy YW1fc3BhY2U7CisrCisrZXh0ZXJuIGludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkOworKworK2V4 dGVybiBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKKysgIGdldF9hdXRvX2xvYWRfcHNw YWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOworK2V4 dGVybiBpbnQgbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq cHNwYWNlX2luZm8sCisrCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxs X3BhdGgpOworK2V4dGVybiB2b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCisrCQkJCSAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCk7CisrZXh0ZXJu IGludAorKyAgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbyk7CisrCisrI2VuZGlmIC8qIEFVVE9fTE9BRF9IICov CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiLWdkYi5nZGIuaW4KKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysr KyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGItZ2RiLmdkYi5pbgkyMDEyLTA0LTE4IDAwOjI2 OjI5LjA0OTEyMDIxMiArMDIwMAorQEAgLTAsMCArMSwzNCBAQAorK2VjaG8gU2V0dGluZyB1cCB0 aGUgZW52aXJvbm1lbnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KKysKKytzZXQgY29tcGxhaW50cyAx CisrCisrYiBpbnRlcm5hbF9lcnJvcgorKworK2IgaW5mb19jb21tYW5kCisrY29tbWFuZHMKKysJ c2lsZW50CisrCXJldHVybgorK2VuZAorKworK2RpciBAc3JjZGlyQC8uLi9saWJpYmVydHkKKytk aXIgQHNyY2RpckAvLi4vYmZkCisrZGlyIEBzcmNkaXJACisrZGlyIC4KKytzZXQgcHJvbXB0ICh0 b3AtZ2RiKSAKKysKKytkZWZpbmUgcGRpZQorKyAgaWYgJGFyZ2MgPT0gMQorKyAgICBjYWxsIGR1 bXBfZGllICgkYXJnMCwgMSkKKysgIGVsc2UKKysgICAgaWYgJGFyZ2MgPT0gMgorKyAgICAgIGNh bGwgZHVtcF9kaWUgKCRhcmcwLCAkYXJnMSkKKysgICAgZWxzZQorKyAgICAgIHByaW50ZiAiU3lu dGF4OiBwZGllIGRpZSBbZGVwdGhdXG4iCisrICAgIGVuZAorKyAgZW5kCisrZW5kCisrCisrZG9j dW1lbnQgcGRpZQorK1ByZXR0eSBwcmludCBhIERXQVJGIERJRS4KKytTeW50YXg6IHBkaWUgZGll IFtkZXB0aF0KKytlbmQKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9NYWtlZmlsZS5p bgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTWFrZWZpbGUu aW4JMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9NYWtlZmlsZS5pbgkyMDEyLTA0LTE4IDAwOjI2OjUzLjQ1NTA1ODAzNyArMDIw MAorQEAgLTY4MCw3ICs2ODAsNyBAQCBUQVJHRVRfRkxBR1NfVE9fUEFTUyA9IFwKKyAjIFNGSUxF UyBpcyB1c2VkIGluIGJ1aWxkaW5nIHRoZSBkaXN0cmlidXRpb24gYXJjaGl2ZS4KKyAKKyBTRklM RVMgPSBhZGEtZXhwLnkgYWRhLWxhbmcuYyBhZGEtdHlwZXByaW50LmMgYWRhLXZhbHByaW50LmMg YWRhLXRhc2tzLmMgXAorLQlhZGRybWFwLmMgXAorKwlhZGRybWFwLmMgYXV0by1sb2FkLmMgXAor IAlhdXh2LmMgYXgtZ2VuZXJhbC5jIGF4LWdkYi5jIFwKKyAJYmNhY2hlLmMgXAorIAliZmQtdGFy Z2V0LmMgXAorQEAgLTgxOSw3ICs4MTksNyBAQCBzb2xpYi1kYXJ3aW4uaCBzb2xpYi1pYTY0LWhw dXguaCBzb2xpYi1zCisgZ251bGliL2V4dHJhL2FyZy1ub25udWxsLmggZ251bGliL2V4dHJhL2Mr K2RlZnMuaCBnbnVsaWIvZXh0cmEvd2Fybi1vbi11c2UuaCBcCisgZ251bGliL3N0ZGRlZi5pbi5o IGlubGluZS1mcmFtZS5oIHNraXAuaCBzdGFwLXByb2JlLmggXAorIGNvbW1vbi9jb21tb24tdXRp bHMuaCBjb21tb24veG1sLXV0aWxzLmggY29tbW9uL2J1ZmZlci5oIGNvbW1vbi9wdGlkLmggXAor LWNvbW1vbi9saW51eC1vc2RhdGEuaCBnZGItZGxmY24uaAorK2NvbW1vbi9saW51eC1vc2RhdGEu aCBnZGItZGxmY24uaCBhdXRvLWxvYWQuaAorIAorICMgSGVhZGVyIGZpbGVzIHRoYXQgYWxyZWFk eSBoYXZlIHNyY2RpciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgorIAorQEAgLTg1 MSw3ICs4NTEsNyBAQCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkCisg CXZlcnNpb24ubyBcCisgCWFubm90YXRlLm8gXAorIAlhZGRybWFwLm8gXAorLQlhdXh2Lm8gXAor KwlhdXRvLWxvYWQubyBhdXh2Lm8gXAorIAliZmQtdGFyZ2V0Lm8gXAorIAlibG9ja2ZyYW1lLm8g YnJlYWtwb2ludC5vIGZpbmR2YXIubyByZWdjYWNoZS5vIFwKKyAJY2hhcnNldC5vIGNvbnRpbnVh dGlvbnMubyBjb3JlbG93Lm8gZGlzYXNtLm8gZHVtbXktZnJhbWUubyBkZnAubyBcCitAQCAtMTI1 NSw3ICsxMjU1LDcgQEAgZGlzdGNsZWFuOiBjbGVhbgorIAlybSAtZiBnZGJzZXJ2ZXIvY29uZmln LnN0YXR1cyBnZGJzZXJ2ZXIvY29uZmlnLmxvZworIAlybSAtZiBnZGJzZXJ2ZXIvdG0uaCBnZGJz ZXJ2ZXIveG0uaCBnZGJzZXJ2ZXIvbm0uaAorIAlybSAtZiBnZGJzZXJ2ZXIvTWFrZWZpbGUgZ2Ri c2VydmVyL2NvbmZpZy5jYWNoZQorLQlybSAtZiBubS5oIGNvbmZpZy5zdGF0dXMgY29uZmlnLmgg c3RhbXAtaCAuZ2RiaW5pdCBqaXQtcmVhZGVyLmgKKysJcm0gLWYgbm0uaCBjb25maWcuc3RhdHVz IGNvbmZpZy5oIHN0YW1wLWggZ2RiLWdkYi5nZGIgaml0LXJlYWRlci5oCisgCXJtIC1mIHkub3V0 cHV0IHlhY2MuYWN0cyB5YWNjLnRtcCB5LnRhYi5oCisgCXJtIC1mIGNvbmZpZy5sb2cgY29uZmln LmNhY2hlCisgCXJtIC1mIE1ha2VmaWxlCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv Y29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9j b25maWd1cmUJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTMxMjAyMDIg KzAyMDAKK0BAIC0xNjgzOSw3ICsxNjgzOSw3IEBAIGFjX2NvbmZpZ19saW5rcz0iJGFjX2NvbmZp Z19saW5rcyAkYWNfY28KKyAkYXNfZWNobyAiI2RlZmluZSBHREJfREVGQVVMVF9IT1NUX0NIQVJT RVQgXCJVVEYtOFwiIiA+PmNvbmZkZWZzLmgKKyAKKyAKKy1hY19jb25maWdfZmlsZXM9IiRhY19j b25maWdfZmlsZXMgTWFrZWZpbGUgLmdkYmluaXQ6Z2RiaW5pdC5pbiBkb2MvTWFrZWZpbGUgZ251 bGliL01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIgorK2FjX2NvbmZpZ19maWxlcz0i JGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZ251bGli L01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIgorIAorIGFjX2NvbmZpZ19jb21tYW5k cz0iJGFjX2NvbmZpZ19jb21tYW5kcyBkZWZhdWx0IgorIAorQEAgLTE3NjA1LDcgKzE3NjA1LDcg QEAgZG8KKyAgICAgImppdC1yZWFkZXIuaCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBq aXQtcmVhZGVyLmg6aml0LXJlYWRlci5pbiIgOzsKKyAgICAgIiRhY19jb25maWdfbGlua3NfMSIp IENPTkZJR19MSU5LUz0iJENPTkZJR19MSU5LUyAkYWNfY29uZmlnX2xpbmtzXzEiIDs7CisgICAg ICJNYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBNYWtlZmlsZSIgOzsKKy0g ICAgIi5nZGJpbml0IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIC5nZGJpbml0OmdkYmlu aXQuaW4iIDs7CisrICAgICJnZGItZ2RiLmdkYiIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxF UyBnZGItZ2RiLmdkYiIgOzsKKyAgICAgImRvYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENP TkZJR19GSUxFUyBkb2MvTWFrZWZpbGUiIDs7CisgICAgICJnbnVsaWIvTWFrZWZpbGUiKSBDT05G SUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ251bGliL01ha2VmaWxlIiA7OworICAgICAiZGF0YS1k aXJlY3RvcnkvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZGF0YS1kaXJl Y3RvcnkvTWFrZWZpbGUiIDs7CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln dXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25m aWd1cmUuYWMJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTMxMjAy MDIgKzAyMDAKK0BAIC0yNDIyLDcgKzI0MjIsNyBAQCBkbmwgIEF0IHRoZSBtb21lbnQsIHdlIGp1 c3QgYXNzdW1lIGl0J3MKKyBBQ19ERUZJTkUoR0RCX0RFRkFVTFRfSE9TVF9DSEFSU0VULCAiVVRG LTgiLAorICAgICAgICAgICBbRGVmaW5lIHRvIGJlIGEgc3RyaW5nIG5hbWluZyB0aGUgZGVmYXVs dCBob3N0IGNoYXJhY3RlciBzZXQuXSkKKyAKKy1BQ19PVVRQVVQoTWFrZWZpbGUgLmdkYmluaXQ6 Z2RiaW5pdC5pbiBkb2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01h a2VmaWxlLAorK0FDX09VVFBVVChNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZ251 bGliL01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlLAorIFsKKyBjYXNlIHgkQ09ORklH X0hFQURFUlMgaW4KKyB4Y29uZmlnLmg6Y29uZmlnLmluKQorSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL21haW4uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6MjY6MjkuMDU0MTIwMTk5 ICswMjAwCitAQCAtNDIsNiArNDIsNyBAQAorICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIKKyAj aW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgorICNpbmNsdWRlICJvYmpmaWxlcy5oIgorKyNpbmNs dWRlICJhdXRvLWxvYWQuaCIKKyAKKyAvKiBUaGUgc2VsZWN0ZWQgaW50ZXJwcmV0ZXIuICBUaGlz IHdpbGwgYmUgdXNlZCBhcyBhIHNldCBjb21tYW5kCisgICAgdmFyaWFibGUsIHNvIGl0IHNob3Vs ZCBhbHdheXMgYmUgbWFsbG9jJ2VkIC0gc2luY2UKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjE0 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1h dXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAorQEAgLTE4LDMw ICsxOCwxNCBAQAorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAjaW5jbHVkZSAiZGVmcy5oIgor LSNpbmNsdWRlICJmaWxlbmFtZXMuaCIKKyAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgorLSNpbmNs dWRlICJnZGJfcmVnZXguaCIKKyAjaW5jbHVkZSAidG9wLmgiCisgI2luY2x1ZGUgImV4Y2VwdGlv bnMuaCIKKy0jaW5jbHVkZSAiY29tbWFuZC5oIgorICNpbmNsdWRlICJnZGJjbWQuaCIKKy0jaW5j bHVkZSAib2JzZXJ2ZXIuaCIKKy0jaW5jbHVkZSAicHJvZ3NwYWNlLmgiCisgI2luY2x1ZGUgIm9i amZpbGVzLmgiCisgI2luY2x1ZGUgInB5dGhvbi5oIgorICNpbmNsdWRlICJjbGkvY2xpLWNtZHMu aCIKKy0KKy0vKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRp bmcuCistICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUg d2hlbiBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKKy0gICBmYWxzZSBvdGhlcndpc2UuCistCistICAg Qm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3QgYmUg dHJ1ZSB0byBlbmFibGUKKy0gICBhdXRvLWxvYWRpbmcuCistCistICAgVGhpcyBmbGFnIGV4aXN0 cyB0byBmYWNpbGl0YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0YXJ0LXVwCist ICAgdW50aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkgYXVnbWVudCB0 aGUgc2VhcmNoIGRpcmVjdG9yaWVzCistICAgdXNlZCB0byBmaW5kIHRoZSBzY3JpcHRzLiAgKi8K Ky1pbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7CisrI2luY2x1ZGUgImF1dG8tbG9hZC5o IgorIAorICNpZmRlZiBIQVZFX1BZVEhPTgorIAorQEAgLTYwLDMyICs0NCw2IEBAIGludCBnZGJw eV9nbG9iYWxfYXV0b19sb2FkID0gMTsKKyAgICBUaGUgbGVhZGluZyBieXRlIGlzIHRvIGFsbG93 IHVwd2FyZCBjb21wYXRpYmxlIGV4dGVuc2lvbnMuICAqLworICNkZWZpbmUgR0RCUFlfQVVUT19T RUNUSU9OX05BTUUgIi5kZWJ1Z19nZGJfc2NyaXB0cyIKKyAKKy0vKiBGb3Igc2NyaXB0cyBzcGVj aWZpZWQgaW4gLmRlYnVnX2dkYl9zY3JpcHRzLCBtdWx0aXBsZSBvYmpmaWxlcyBtYXkgbG9hZAor LSAgIHRoZSBzYW1lIHNjcmlwdC4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gbG9hZGluZyB0aGUgc2Ny aXB0IG11bHRpcGxlIHRpbWVzLAorLSAgIGFuZCB0aGVyZSBjYW4gYmUgYSBsb3Qgb2Ygb2JqZmls ZXMgYW5kIHNjcmlwdHMsIHNvIHdlIGtlZXAgdHJhY2sgb2Ygc2NyaXB0cworLSAgIGxvYWRlZCB0 aGlzIHdheS4gICovCistCistc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbworLXsKKy0gIC8q IEZvciBlYWNoIHByb2dyYW0gc3BhY2Ugd2Uga2VlcCB0cmFjayBvZiBsb2FkZWQgc2NyaXB0cy4g ICovCistICBzdHJ1Y3QgaHRhYiAqbG9hZGVkX3NjcmlwdHM7CistCistICAvKiBOb24temVybyBp ZiB3ZSd2ZSBpc3N1ZWQgdGhlIHdhcm5pbmcgYWJvdXQgYW4gYXV0by1sb2FkIHNjcmlwdCBub3Qg YmVpbmcKKy0gICAgIGZvdW5kLiAgV2Ugb25seSB3YW50IHRvIGlzc3VlIHRoaXMgd2FybmluZyBv bmNlLiAgKi8KKy0gIGludCBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKKy19Owor LQorLS8qIE9iamVjdHMgb2YgdGhpcyB0eXBlIGFyZSBzdG9yZWQgaW4gdGhlIGxvYWRlZCBzY3Jp cHQgaGFzaCB0YWJsZS4gICovCistCistc3RydWN0IGxvYWRlZF9zY3JpcHQKKy17CistICAvKiBO YW1lIGFzIHByb3ZpZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KKy0gIGNvbnN0IGNoYXIgKm5hbWU7 CistICAvKiBGdWxsIHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQgKG9y IHdhcyBvdGhlcndpc2UKKy0gICAgIGluYWNjZXNzaWJsZSkuICAqLworLSAgY29uc3QgY2hhciAq ZnVsbF9wYXRoOworLX07CistCisgLyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rp c2FibGUgYXV0by1sb2FkaW5nOgorICAgIHNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYKKyAg ICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVkIHNjcmlwdHMg d2hlbiBhbiBvYmpmaWxlCitAQCAtOTcsMTM2ICs1NSw2IEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0 CisgICAgVGhlIGZhY3QgdGhhdCBpdCBsaXZlcyBoZXJlIGlzIGp1c3QgYW4gaW1wbGVtZW50YXRp b24gZGV0YWlsLiAgKi8KKyBzdGF0aWMgaW50IGF1dG9fbG9hZF9zY3JpcHRzID0gMTsKKyAKKy0v KiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCistc3RhdGljIGNvbnN0IHN0cnVjdCBw cm9ncmFtX3NwYWNlX2RhdGEgKmF1dG9fbG9hZF9wc3BhY2VfZGF0YTsKKy0KKy1zdGF0aWMgdm9p ZAorLWF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAq cHNwYWNlLCB2b2lkICphcmcpCisteworLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq aW5mbzsKKy0KKy0gIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2Fk X3BzcGFjZV9kYXRhKTsKKy0gIGlmIChpbmZvICE9IE5VTEwpCistICAgIHsKKy0gICAgICBpZiAo aW5mby0+bG9hZGVkX3NjcmlwdHMpCistCWh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0 cyk7CistICAgICAgeGZyZWUgKGluZm8pOworLSAgICB9CistfQorLQorLS8qIEdldCB0aGUgY3Vy cmVudCBhdXRvbG9hZCBkYXRhLiAgSWYgbm9uZSBpcyBmb3VuZCB5ZXQsIGFkZCBpdCBub3cuICBU aGlzCistICAgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBvYmplY3QuICAqLworLQor LXN0YXRpYyBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKKy1nZXRfYXV0b19sb2FkX3Bz cGFjZV9kYXRhIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQorLXsKKy0gIHN0cnVjdCBh dXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CistCistICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9k YXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7CistICBpZiAoaW5mbyA9PSBOVUxM KQorLSAgICB7CistICAgICAgaW5mbyA9IFhaQUxMT0MgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNl X2luZm8pOworLSAgICAgIHNldF9wcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2Fk X3BzcGFjZV9kYXRhLCBpbmZvKTsKKy0gICAgfQorLQorLSAgcmV0dXJuIGluZm87CistfQorLQor LS8qIEhhc2ggZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLworLQorLXN0 YXRpYyBoYXNodmFsX3QKKy1oYXNoX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRh dGEpCisteworLSAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRhOworLQorLSAg cmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5hbWUpOworLX0KKy0KKy0vKiBFcXVhbGl0eSBm dW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCistCistc3RhdGljIGludAor LWVxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCist eworLSAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKKy0gIGNvbnN0IHN0cnVj dCBsb2FkZWRfc2NyaXB0ICplYiA9IGI7CistCistICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwg ZWItPm5hbWUpID09IDA7CistfQorLQorLS8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNr IGxvYWRlZCBzY3JpcHRzLgorLSAgIEVhY2ggZW50cnkgaXMgaGFzaGVkIGJ5IHRoZSBmdWxsIHBh dGggbmFtZS4gICovCistCistc3RhdGljIHZvaWQKKy1pbml0X2xvYWRlZF9zY3JpcHRzX2luZm8g KHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQorLXsKKy0gIC8qIENo b29zZSAzMSBhcyB0aGUgc3RhcnRpbmcgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwgc29tZXdoYXQg YXJiaXRyYXJpbHkuCistICAgICBTcGFjZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRhaW5lZCB3aXRo IG9uZSBtYWxsb2Mgc28gd2UgY2FuIGZyZWUgdGhlbQorLSAgICAgZWFzaWx5LiAgKi8KKy0KKy0g IHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJfY3JlYXRlICgzMSwKKy0JCQkJCSAg ICAgaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5LAorLQkJCQkJICAgICBlcV9sb2FkZWRfc2NyaXB0 X2VudHJ5LAorLQkJCQkJICAgICB4ZnJlZSk7CistCistICBwc3BhY2VfaW5mby0+c2NyaXB0X25v dF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKKy19CistCistLyogV3JhcHBlciBvbiBn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIHRvIGFsc28gYWxsb2NhdGUgdGhlIGhhc2ggdGFibGUK Ky0gICBmb3IgbG9hZGluZyBzY3JpcHRzLiAgKi8KKy0KKy1zdGF0aWMgc3RydWN0IGF1dG9fbG9h ZF9wc3BhY2VfaW5mbyAqCistZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAo c3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSkKKy17CistICBzdHJ1Y3QgYXV0b19sb2FkX3Bz cGFjZV9pbmZvICppbmZvOworLQorLSAgaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEg KHBzcGFjZSk7CistICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMgPT0gTlVMTCkKKy0gICAgaW5p dF9sb2FkZWRfc2NyaXB0c19pbmZvIChpbmZvKTsKKy0KKy0gIHJldHVybiBpbmZvOworLX0KKy0K Ky0vKiBBZGQgc2NyaXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBIVEFCLgorLSAgIEZVTExfUEFUSCBp cyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgorLSAgIFRoZSByZXN1bHQgaXMgdHJ1 ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KKy0KKy1z dGF0aWMgaW50CistbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGh0YWIgKmh0YWIsIGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCkKKy17CistICBzdHJ1Y3QgbG9hZGVkX3Nj cmlwdCAqKnNsb3QsIGVudHJ5OworLSAgaW50IGluX2hhc2hfdGFibGU7CistCistICBlbnRyeS5u YW1lID0gbmFtZTsKKy0gIGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKKy0gIHNsb3QgPSAo c3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElO U0VSVCk7CistICBpbl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKKy0KKy0gIC8qIElmIHRo aXMgc2NyaXB0IGlzIG5vdCBpbiB0aGUgaGFzaCB0YWJsZSwgYWRkIGl0LiAgKi8KKy0KKy0gIGlm ICghIGluX2hhc2hfdGFibGUpCistICAgIHsKKy0gICAgICBjaGFyICpwOworLQorLSAgICAgIC8q IEFsbG9jYXRlIGFsbCBzcGFjZSBpbiBvbmUgY2h1bmsgc28gaXQncyBlYXNpZXIgdG8gZnJlZS4g ICovCistICAgICAgKnNsb3QgPSB4bWFsbG9jIChzaXplb2YgKCoqc2xvdCkKKy0JCSAgICAgICAr IHN0cmxlbiAobmFtZSkgKyAxCistCQkgICAgICAgKyAoZnVsbF9wYXRoICE9IE5VTEwgPyAoc3Ry bGVuIChmdWxsX3BhdGgpICsgMSkgOiAwKSk7CistICAgICAgcCA9ICgoY2hhciopICpzbG90KSAr IHNpemVvZiAoKipzbG90KTsKKy0gICAgICBzdHJjcHkgKHAsIG5hbWUpOworLSAgICAgICgqc2xv dCktPm5hbWUgPSBwOworLSAgICAgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKKy0JeworLQkgIHAg Kz0gc3RybGVuIChwKSArIDE7CistCSAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOworLQkgICgqc2xv dCktPmZ1bGxfcGF0aCA9IHA7CistCX0KKy0gICAgICBlbHNlCistCSgqc2xvdCktPmZ1bGxfcGF0 aCA9IE5VTEw7CistICAgIH0KKy0KKy0gIHJldHVybiBpbl9oYXNoX3RhYmxlOworLX0KKy0KKyAv KiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9CSkZJTEUuCisgICAgU1RBUlQsRU5EIGRlbGlt aXQgYSBidWZmZXIgY29udGFpbmluZyBhIGxpc3Qgb2YgbnVsLXRlcm1pbmF0ZWQKKyAgICBmaWxl IG5hbWVzLgorQEAgLTMwMSwyMCArMTI5LDE3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0 cnVjdCBvYmpmaWxlICoKKyAKKyAJIElXQk4gaWYgY29tcGxhaW50cy5jIHdlcmUgbW9yZSBnZW5l cmFsLXB1cnBvc2UuICAqLworIAorLSAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2Ny aXB0IChwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsIGZpbGUsCisrICAgICAgaW5faGFzaF90 YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLAorIAkJCQkJb3BlbmVk ID8gZnVsbF9wYXRoIDogTlVMTCk7CisgCisgICAgICAgaWYgKCEgb3BlbmVkKQorIAl7CisgCSAg LyogV2UgZG9uJ3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2Fi bGUuICAqLworLQkgIGlmICghIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdf cHJpbnRlZCkKKy0JICAgIHsKKy0JICAgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQg c2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKKysJICBpZiAoc2NyaXB0X25vdF9m b3VuZF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5mbykpCisrCSAgICB3YXJuaW5nIChfKCJNaXNz aW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAorIG9mIGZp bGUgJXNcblwKKyBVc2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvIGxpc3Qg dGhlbS4iKSwKKy0JCSAgICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFt ZSk7CistCSAgICAgIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRl ZCA9IFRSVUU7CistCSAgICB9CisrCQkgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpm aWxlLT5uYW1lKTsKKyAJfQorICAgICAgIGVsc2UKKyAJeworQEAgLTM1NiwxMTYgKzE4MSw2IEBA IGF1dG9fbG9hZF9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWwKKyAgIGRvX2NsZWFudXBz IChjbGVhbnVwcyk7CisgfQorIAorLS8qIENsZWFyIHRoZSB0YWJsZSBvZiBsb2FkZWQgc2VjdGlv biBzY3JpcHRzLiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLWNsZWFyX3NlY3Rpb25fc2NyaXB0cyAo dm9pZCkKKy17CistICBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlID0gY3VycmVudF9wcm9n cmFtX3NwYWNlOworLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKy0KKy0g IGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh KTsKKy0gIGlmIChpbmZvICE9IE5VTEwgJiYgaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkK Ky0gICAgeworLSAgICAgIGh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7CistICAg ICAgaW5mby0+bG9hZGVkX3NjcmlwdHMgPSBOVUxMOworLSAgICAgIGluZm8tPnNjcmlwdF9ub3Rf Zm91bmRfd2FybmluZ19wcmludGVkID0gRkFMU0U7CistICAgIH0KKy19CistCistLyogTG9vayBm b3IgdGhlIGF1dG8tbG9hZCBzY3JpcHQgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQg aXQuICAqLworLQorLXN0YXRpYyB2b2lkCistYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQorLXsKKy0gIGNoYXIgKnJl YWxuYW1lOworLSAgY2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7CistICBpbnQgbGVuOworLSAg RklMRSAqaW5wdXQ7CistICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7CistCistICByZWFsbmFt ZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7CistICBsZW4gPSBzdHJsZW4gKHJlYWxu YW1lKTsKKy0gIGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChzdWZmaXgpICsgMSk7 CistICBtZW1jcHkgKGZpbGVuYW1lLCByZWFsbmFtZSwgbGVuKTsKKy0gIHN0cmNweSAoZmlsZW5h bWUgKyBsZW4sIHN1ZmZpeCk7CistCistICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUs IGZpbGVuYW1lKTsKKy0gIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1lKTsKKy0KKy0gIGlu cHV0ID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOworLSAgZGVidWdmaWxlID0gZmlsZW5hbWU7Cist CistICBpZiAoIWlucHV0ICYmIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KQorLSAgICB7CistICAgICAg LyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJl Y3RvcnkuICAqLworLSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUp CistCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEpOworLSAgICAgIHN0 cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7CistICAgICAgLyogRklMRU5B TUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCistICAgICAg c3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKKy0KKy0gICAgICBtYWtlX2NsZWFudXAgKHhm cmVlLCBkZWJ1Z2ZpbGUpOworLSAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsK Ky0gICAgfQorLQorLSAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKKy0gICAgeworLSAgICAg IC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgZ2RiJ3MgZGF0 YQorLQkgZGlyZWN0b3J5LiAgKi8KKy0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4g KGdkYl9kYXRhZGlyKSArIHN0cmxlbiAoZmlsZW5hbWUpCistCQkJICAgKyBzdHJsZW4gKCIvYXV0 by1sb2FkIikgKyAxKTsKKy0gICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZ2RiX2RhdGFkaXIpOwor LSAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCAiL2F1dG8tbG9hZCIpOworLSAgICAgIC8qIEZJTEVO QU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLworLSAgICAg IHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7CistCistICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgZGVidWdmaWxlKTsKKy0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7 CistICAgIH0KKy0KKy0gIGlmIChpbnB1dCkKKy0gICAgeworLSAgICAgIHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworLQorLSAgICAgIG1ha2VfY2xlYW51cF9mY2xv c2UgKGlucHV0KTsKKy0KKy0gICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFi bGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIgorLQkgY2FuIHByaW50IGl0LiAgKi8K Ky0gICAgICBwc3BhY2VfaW5mbyA9CistCWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xv YWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CistICAgICAgbWF5YmVfYWRkX3NjcmlwdCAo cHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSk7CistCist ICAgICAgLyogVG8gcHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyIHdlIGRvbid0IGNoZWNrIGZv ciB3aGV0aGVyIHRoZQorLQkgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSB0YWJsZSwgYW5kIGFs d2F5cyBsb2FkIGl0LgorLQkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9h ZCBpdCB0d2ljZSwKKy0JIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVt cG90ZW50IHVuZGVyIG11bHRpcGxlCistCSBsb2FkcyBhbnl3YXkuICAqLworLSAgICAgIHNvdXJj ZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsK Ky0gICAgfQorLQorLSAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKy19CistCistLyogVGhpcyBp cyBhIG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8tbG9hZCBzY3JpcHRzLgor LQorLSAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIHN1cHBvcnRlZC4K Ky0gICAxKSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGUgb2JqZmlsZQorLSAgIDIpIGZyb20gLmRl YnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24gICovCistCistc3RhdGljIHZvaWQKKy1hdXRvX2xvYWRf bmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorLXsKKy0gIGlmICghb2JqZmls ZSkKKy0gICAgeworLSAgICAgIC8qIE9CSkZJTEUgaXMgTlVMTCB3aGVuIGxvYWRpbmcgYSBuZXcg Im1haW4iIHN5bWJvbC1maWxlLiAgKi8KKy0gICAgICBjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKCk7 CistICAgICAgcmV0dXJuOworLSAgICB9CistCistICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2Jq ZmlsZSAob2JqZmlsZSk7CistfQorLQorIC8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMg Zm9yIE9CSkZJTEUuICAqLworIAorIHZvaWQKK0BAIC00NzgsMTQ2ICsxOTMsOSBAQCBsb2FkX2F1 dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iCisgICAgIH0KKyB9CisgDAorLS8qIENv bGxlY3Qgc2NyaXB0cyB0byBiZSBwcmludGVkIGluIGEgdmVjLiAgKi8KKy0KKy10eXBlZGVmIHN0 cnVjdCBsb2FkZWRfc2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKKy1ERUZfVkVDX1AgKGxvYWRl ZF9zY3JpcHRfcHRyKTsKKy0KKy0vKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVy c2UuCistICAgQ29sbGVjdCB0aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8K Ky0KKy1zdGF0aWMgaW50CistY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwg dm9pZCAqaW5mbykKKy17CistICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7 CistICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0gaW5mbzsKKy0KKy0g IGlmIChyZV9leGVjIChzY3JpcHQtPm5hbWUpKQorLSAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRf c2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3JpcHQpOworLQorLSAgcmV0dXJuIDE7CistfQor LQorLS8qIFByaW50IFNDUklQVC4gICovCistCistc3RhdGljIHZvaWQKKy1wcmludF9zY3JpcHQg KHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQpCisteworLSAgc3RydWN0IHVpX291dCAqdWlv dXQgPSBjdXJyZW50X3Vpb3V0OworLSAgc3RydWN0IGNsZWFudXAgKmNoYWluOworLQorLSAgY2hh aW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwor LQorLSAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxf cGF0aCA/ICJZZXMiIDogIk1pc3NpbmciKTsKKy0gIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0 LCAic2NyaXB0Iiwgc2NyaXB0LT5uYW1lKTsKKy0gIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7 CistCistICAvKiBJZiB0aGUgbmFtZSBpc24ndCB0aGUgZnVsbCBwYXRoLCBwcmludCBpdCB0b28u ICAqLworLSAgaWYgKHNjcmlwdC0+ZnVsbF9wYXRoICE9IE5VTEwKKy0gICAgICAmJiBzdHJjbXAg KHNjcmlwdC0+bmFtZSwgc2NyaXB0LT5mdWxsX3BhdGgpICE9IDApCistICAgIHsKKy0gICAgICB1 aV9vdXRfdGV4dCAodWlvdXQsICJcdGZ1bGwgbmFtZTogIik7CistICAgICAgdWlfb3V0X2ZpZWxk X3N0cmluZyAodWlvdXQsICJmdWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxfcGF0aCk7CistICAgICAg dWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKy0gICAgfQorLQorLSAgZG9fY2xlYW51cHMgKGNo YWluKTsKKy19CistCistLyogSGVscGVyIGZvciBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIHRvIHNv cnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4gICovCistCistc3RhdGljIGludAorLXNvcnRfc2NyaXB0 c19ieV9uYW1lIChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCisteworLSAgY29uc3Qg c3RydWN0IGxvYWRlZF9zY3JpcHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoq KSBhcDsKKy0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpiID0gKihjb25zdCBzdHJ1Y3Qg bG9hZGVkX3NjcmlwdCAqKikgYnA7CistCistICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1l LCBiLT5uYW1lKTsKKy19CistCistLyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQu ICAqLworLQorLXN0YXRpYyB2b2lkCistaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0 dGVybiwgaW50IGZyb21fdHR5KQorLXsKKy0gIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVu dF91aW91dDsKKy0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwor LSAgc3RydWN0IGNsZWFudXAgKnNjcmlwdF9jaGFpbjsKKy0gIFZFQyAobG9hZGVkX3NjcmlwdF9w dHIpICpzY3JpcHRzOworLSAgaW50IG5yX3NjcmlwdHM7CistCistICBkb250X3JlcGVhdCAoKTsK Ky0KKy0gIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoY3VycmVudF9w cm9ncmFtX3NwYWNlKTsKKy0KKy0gIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQorLSAgICB7Cist ICAgICAgY2hhciAqcmVfZXJyID0gcmVfY29tcCAocGF0dGVybik7CistCistICAgICAgaWYgKHJl X2VycikKKy0JZXJyb3IgKF8oIkludmFsaWQgcmVnZXhwOiAlcyIpLCByZV9lcnIpOworLSAgICB9 CistICBlbHNlCistICAgIHsKKy0gICAgICByZV9jb21wICgiIik7CistICAgIH0KKy0KKy0gIC8q IFdlIG5lZWQgdG8ga25vdyB0aGUgbnVtYmVyIG9mIHJvd3MgYmVmb3JlIHdlIGJ1aWxkIHRoZSB0 YWJsZS4KKy0gICAgIFBsdXMgd2Ugd2FudCB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuCist ICAgICBTbyBmaXJzdCB0cmF2ZXJzZSB0aGUgaGFzaCB0YWJsZSBjb2xsZWN0aW5nIHRoZSBtYXRj aGluZyBzY3JpcHRzLiAgKi8KKy0KKy0gIHNjcmlwdHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3Jp cHRfcHRyLCAxMCk7CistICBzY3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVw IChsb2FkZWRfc2NyaXB0X3B0ciksICZzY3JpcHRzKTsKKy0KKy0gIGlmIChwc3BhY2VfaW5mbyAh PSBOVUxMICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQorLSAgICB7Cist ICAgICAgaW1tZWRpYXRlX3F1aXQrKzsKKy0gICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3Jp cHRzIGFzIFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLworLSAgICAgIGh0YWJf dHJhdmVyc2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKKy0JCQkgICAg ICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKKy0gICAgICBpbW1lZGlhdGVf cXVpdC0tOworLSAgICB9CistCistICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3Nj cmlwdF9wdHIsIHNjcmlwdHMpOworLSAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9l bmQgKHVpb3V0LCAyLCBucl9zY3JpcHRzLAorLQkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRz VGFibGUiKTsKKy0KKy0gIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3LCB1aV9sZWZ0LCAi bG9hZGVkIiwgIkxvYWRlZCIpOworLSAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcwLCB1 aV9sZWZ0LCAic2NyaXB0IiwgIlNjcmlwdCIpOworLSAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0 KTsKKy0KKy0gIGlmIChucl9zY3JpcHRzID4gMCkKKy0gICAgeworLSAgICAgIGludCBpOworLSAg ICAgIGxvYWRlZF9zY3JpcHRfcHRyIHNjcmlwdDsKKy0KKy0gICAgICBxc29ydCAoVkVDX2FkZHJl c3MgKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKSwKKy0JICAgICBWRUNfbGVuZ3RoIChsb2Fk ZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyksCistCSAgICAgc2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0 ciksIHNvcnRfc2NyaXB0c19ieV9uYW1lKTsKKy0gICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0 ZSAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMsIGksIHNjcmlwdCk7ICsraSkKKy0JcHJpbnRf c2NyaXB0IChzY3JpcHQpOworLSAgICB9CistCistICBkb19jbGVhbnVwcyAoc2NyaXB0X2NoYWlu KTsKKy0KKy0gIGlmIChucl9zY3JpcHRzID09IDApCistICAgIHsKKy0gICAgICBpZiAocGF0dGVy biAmJiAqcGF0dGVybikKKy0JdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2Fk IHNjcmlwdHMgbWF0Y2hpbmcgJXMuXG4iLAorLQkJCXBhdHRlcm4pOworLSAgICAgIGVsc2UKKy0J dWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMuXG4iKTsKKy0g ICAgfQorLX0KKy0MCisgdm9pZAorIGdkYnB5X2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQor IHsKKy0gIGF1dG9fbG9hZF9wc3BhY2VfZGF0YQorLSAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3Bh Y2VfZGF0YV93aXRoX2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKKy0K Ky0gIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0b19sb2FkX25ld19vYmpmaWxlKTsK Ky0KKyAgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkLXNjcmlwdHMiLCBjbGFz c19zdXBwb3J0LAorIAkJCSAgICZhdXRvX2xvYWRfc2NyaXB0cywgXygiXAorIFNldCB0aGUgZGVi dWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwK K0BAIC02MjcsMTEgKzIwNSw2IEBAIGFuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuIiks CisgCQkJICAgTlVMTCwgTlVMTCwKKyAJCQkgICAmc2V0bGlzdCwKKyAJCQkgICAmc2hvd2xpc3Qp OworLQorLSAgYWRkX2luZm8gKCJhdXRvLWxvYWQtc2NyaXB0cyIsCistCSAgICBpbmZvX2F1dG9f bG9hZF9zY3JpcHRzLAorLQkgICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBs b2FkZWQgc2NyaXB0cy5cblwKKy1Vc2FnZTogaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQ XSIpKTsKKyB9CisgCisgI2Vsc2UgLyogISBIQVZFX1BZVEhPTiAqLworSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6MjY6MTQu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhv bi5oCTIwMTItMDQtMTggMDA6MjY6MjkuMDU0MTIwMTk5ICswMjAwCitAQCAtMjQsOCArMjQsNiBA QAorIAorIHN0cnVjdCBicmVha3BvaW50X29iamVjdDsKKyAKKy1leHRlcm4gaW50IGdkYnB5X2ds b2JhbF9hdXRvX2xvYWQ7CistCisgZXh0ZXJuIHZvaWQgZmluaXNoX3B5dGhvbl9pbml0aWFsaXph dGlvbiAodm9pZCk7CisgCisgdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAo c3RydWN0IGNvbW1hbmRfbGluZSAqKTsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTBvZjIy LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTEwb2YyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggYzU5Njk4Mi4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMTBvZjIyLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMTcwNCArMCwwIEBACi1bcGF0Y2gjNCA0LzhdIHNldCBhdXRv LWxvYWQgKiBtYWluIHBhcnQKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEyLTA0L21zZzAwMDg4Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIw MTItMDQvbXNnMDAxMTMuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAx NTo0OToxMQkxLjE0MTEyCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1MTo0 MQkxLjE0MTEzCi0jIyAtMSw1ICsxLDEwMSBAQAotIDIwMTItMDQtMTcgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJYXV0by1sb2FkOiBJbXBsZW1lbnRh dGlvbi4KLSsJKiBORVdTOiBOZXcgZGVzY3JpcHRpb25zIGZvciAiaW5mbyBhdXRvLWxvYWQiLAot KwkiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNj cmlwdHMiLAotKwkiaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIgYW5kICJpbmZvIGF1dG8t bG9hZCBsaWJ0aHJlYWQtZGIiLgotKwlEZXByZWNhdGUgImluZm8gYXV0by1sb2FkLXNjcmlwdHMi LCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9ufG9mZiIKLSsJYW5kICJzaG93IGF1dG8tbG9hZC1z Y3JpcHRzIi4gIE5ldyBkZXNjcmlwdGlvbiBmb3IgInNldCBhdXRvLWxvYWQiLAotKwkic2hvdyBh dXRvLWxvYWQiLCAic2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsCi0rCSJzaG93IGF1dG8tbG9h ZCBnZGItc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwKLSsJInNob3cg YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIs Ci0rCSJzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiwgInNldCBhdXRvLWxvYWQgbGlidGhy ZWFkLWRiIiBhbmQKLSsJInNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIuCi0rCSogYXV0by1s b2FkLmM6IFJlbW92ZSBpbmNsdWRlIHB5dGhvbi9weXRob24taW50ZXJuYWwuaC4gIEFkZCBpbmNs dWRlcwotKwlleGNlcHRpb25zLmgsIGNsaS9jbGktc2NyaXB0LmgsIGdkYmNtZC5oLCBjbGkvY2xp LWRlY29kZS5oIGFuZAotKwljbGkvY2xpLXNldHNob3cuaC4KLSsJKEdEQl9BVVRPX0ZJTEVfTkFN RSwgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUpCi0rCShhdXRvX2xvYWRfZ2RiX3Njcmlw dHMsIHNob3dfYXV0b19sb2FkX2dkYl9zY3JpcHRzKTogTmV3LgotKwkoZ2RicHlfZ2xvYmFsX2F1 dG9fbG9hZCk6IFJlbmFtZSB0byAuLi4KLSsJKGdsb2JhbF9hdXRvX2xvYWQpOiAuLi4gaGVyZS4K LSsJKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0LCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRo bmFtZSkKLSsJKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCwgc2hvd19hdXRvX2xvYWRf bG9jYWxfZ2RiaW5pdCkKLSsJKHNjcmlwdF9sYW5ndWFnZV9nZGIsIHNvdXJjZV9nZGJfc2NyaXB0 X2Zvcl9vYmpmaWxlKTogTmV3LgotKwkoc3RydWN0IGxvYWRlZF9zY3JpcHQpOiBOZXcgZmllbGQg bGFuZ3VhZ2UuCi0rCShoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnksIGVxX2xvYWRlZF9zY3JpcHRf ZW50cnkpOiBDYWxjdWxhdGUgYWxzbwotKwlMQU5HVUFHRS4KLSsJKG1heWJlX2FkZF9zY3JpcHQp OiBBZGQgcGFyYW1ldGVyIGxhbmd1YWdlLiAgRHJvcCByZWR1bmRhbnQKLSsJZW50cnkuZnVsbF9w YXRoIGluaXRpYWxpemF0aW9uLiAgSW5pdGlhbGl6ZSBlbnRyeS5sYW5ndWFnZSBhbmQKLSsJKCpz bG90KS0+bGFuZ3VhZ2UuCi0rCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBDaGFuZ2UgcGFy YW1ldGVyIHN1ZmZpeCB0byBsYW5ndWFnZS4KLSsJUmVtb3ZlIHRoZSBjYWxsIG9mIG1heWJlX2Fk ZF9zY3JpcHQuCi0rCUNhbGwgbGFuZ3VhZ2UtPnNvdXJjZV9zY3JpcHRfZm9yX29iamZpbGUuCi0r CShsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSwgc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdf c2NyaXB0c19kYXRhKToKLSsJTmV3LgotKwkoY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzKTogQWRq dXN0IGl0IGZvcgotKwlzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEuCi0rCShh dXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwpOiBOZXcgdmFyaWFibGUuCi0rCShpbmZv X2F1dG9fbG9hZF9zY3JpcHRzKTogUmVuYW1lIHRvIC4uLgotKwkoYXV0b19sb2FkX2luZm9fc2Ny aXB0cyk6IC4uLiBoZXJlLCBhZGQgcGFyYW1ldGVyIGxhbmd1YWdlLiAgQWRqdXN0IGl0Ci0rCWZv ciBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEuCi0rCShpbmZvX2F1dG9fbG9h ZF9nZGJfc2NyaXB0cywgaW5mb19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkKLSsJKHNldF9hdXRv X2xvYWRfY21kLCBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0LCBzaG93X2F1dG9fbG9hZF9jbWQp Ci0rCShhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCwgaW5mb19hdXRvX2xvYWRfY21kKQotKwko YXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQpOiBOZXcuCi0rCShfaW5pdGlhbGl6ZV9hdXRvX2xv YWQpOiBNb3ZlIGFkZF9pbmZvIG9mICJhdXRvLWxvYWQtc2NyaXB0cyIgdG8KLSsJcHl0aG9uL3B5 LWF1dG8tbG9hZC5jLiAgTmV3IGluc3RhbGxtZW50IGZvciAic2V0IGF1dG8tbG9hZCBnZGItc2Ny aXB0cyIsCi0rCSJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIGxv Y2FsLWdkYmluaXQiIGFuZAotKwkiaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIuCi0rCSog YXV0by1sb2FkLmggKHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UpOiBOZXcuCi0rCShnZGJweV9nbG9i YWxfYXV0b19sb2FkKTogUmVuYW1lIHRvIC4uLgotKwkoZ2xvYmFsX2F1dG9fbG9hZCk6IC4uLiBo ZXJlLgotKwkoYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0 X3BhdGhuYW1lKQotKwkoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkKTogTmV3IGRlY2xh cmF0aW9ucy4KLSsJKG1heWJlX2FkZF9zY3JpcHQpOiBOZXcgcGFyYW1ldGVyIGxhbmd1YWdlLgot KwkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogQ2hhbmdlIHBhcmFtZXRlciBzdWZmaXggdG8g bGFuZ3VhZ2UuCi0rCShsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSwgYXV0b19sb2FkX2lu Zm9fc2NyaXB0c19wYXR0ZXJuX25sKQotKwkoYXV0b19sb2FkX2luZm9fc2NyaXB0cywgYXV0b19s b2FkX3NldF9jbWRsaXN0X2dldCkKLSsJKGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0LCBhdXRv X2xvYWRfaW5mb19jbWRsaXN0X2dldCk6IE5ldwotKwlkZWNsYXJhdGlvbnMuCi0rCSogbGludXgt dGhyZWFkLWRiLmM6IEluY2x1ZGUgYXV0by1sb2FkLmggYW5kIGN0eXBlLmguCi0rCShhdXRvX2xv YWRfdGhyZWFkX2RiLCBzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIpOiBOZXcuCi0rCShzdHJ1Y3Qg dGhyZWFkX2RiX2luZm8pOiBOZXcgZmllbGQgZmlsZW5hbWUuCi0rCShkZWxldGVfdGhyZWFkX2Ri X2luZm8pOiBDYWxsIHhmcmVlIGZvciBGSUxFTkFNRS4KLSsJKHRyeV90aHJlYWRfZGJfbG9hZCk6 IEluaXRpYWxpemUgRklMRU5BTUUuCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyLCB0 cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBSZXR1cm4KLSsJaWYgIUFVVE9fTE9BRF9USFJF QURfREIuCi0rCShpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGJfY29tcGFyZSwgaW5mb19hdXRv X2xvYWRfbGlidGhyZWFkX2RiKTogTmV3LgotKwkoX2luaXRpYWxpemVfdGhyZWFkX2RiKTogSW5z dGFsbCBhdXRvX2xvYWRfdGhyZWFkX2RiCi0rCWFzICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1k YiIgYW5kIGluc3RhbGwgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiCi0rCWFzICJpbmZvIGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGIiLgotKwkqIG1haW4uYyAoY2FwdHVyZWRfbWFpbik6IFJlbmFt ZSBnZGJweV9nbG9iYWxfYXV0b19sb2FkIHRvCi0rCWdsb2JhbF9hdXRvX2xvYWQuICBJbml0aWFs aXplIEFVVE9fTE9BRF9MT0NBTF9HREJJTklUX1BBVEhOQU1FIGFuZAotKwlBVVRPX0xPQURfTE9D QUxfR0RCSU5JVF9MT0FERUQuCi0rCShwcmludF9nZGJfaGVscCk6IEV4dGVuZCB0aGUgaGVscCBm b3IgJ2xvY2FsIGluaXQgZmlsZScuCi0rCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jOiBSZW1vdmUg YSBjb21tZW50IGFib3V0IGdkYiBzY3JpcHRzIGV4dGVuc2lvbi4KLSsJKEdEQlBZX0FVVE9fU0VD VElPTl9OQU1FKTogRXh0ZW5kIHRoZSBjb21tZW50IGl0IGlzIFB5dGhvbiBzcGVjaWZpYy4KLSsJ KGF1dG9fbG9hZF9zY3JpcHRzKTogUmVuYW1lIHRvIC4uLgotKwkoYXV0b19sb2FkX3B5dGhvbl9z Y3JpcHRzKTogLi4uIGhlcmUsIHVwZGF0ZSB0aGUgY29tbWVudC4KLSsJKGdkYnB5X2xvYWRfYXV0 b19zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcgZGVjbGFyYXRpb24uCi0rCShzaG93X2F1dG9fbG9h ZF9weXRob25fc2NyaXB0cywgc2NyaXB0X2xhbmd1YWdlX3B5dGhvbikKLSsJKGdkYnB5X2xvYWRf YXV0b19zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcuCi0rCShzb3VyY2Vfc2VjdGlvbl9zY3JpcHRz KTogUmVmYWN0b3IgdGhlIGNvZGUuCi0rCShsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6 IFJlbmFtZSB0byAuLi4KLSsJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTog Li4uIGhlcmUsIHVwZGF0ZSB0aGUKLSsJYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IGNhbGxlciwg ZHJvcCBHREJQWV9HTE9CQUxfQVVUT19MT0FEIGNoZWNraW5nLgotKwkoaW5mb19hdXRvX2xvYWRf cHl0aG9uX3NjcmlwdHMpOiBOZXcuCi0rCShnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCk6IE5l dyB2YXJpYWJsZXMgY21kIGFuZCBjbWRfbmFtZS4KLSsJUmVuYW1lICJzZXQgYXV0by1sb2FkLXNj cmlwdHMiIHRvICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4KLSsJUmVnaXN0ZXIgInNl dCBhdXRvLWxvYWQtc2NyaXB0cyIgYXMgaXRzIGRlcHJlY2F0ZWQgYWxpYXMuICBSZWdpc3Rlcgot KwkiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLiAgUmVnaXN0ZXIgImluZm8gYXV0by1s b2FkLXNjcmlwdHMiIGFzCi0rCWl0cyBkZXByZWNhdGVkIGFsaWFzLgotKwkobG9hZF9hdXRvX3Nj cmlwdHNfZm9yX29iamZpbGUpOiBSZW5hbWUgdG8gLi4uCi0rCShnZGJweV9sb2FkX2F1dG9fc2Ny aXB0c19mb3Jfb2JqZmlsZSk6IC4uLiBoZXJlLgotKwkqIHB5dGhvbi9weXRob24uaCAobG9hZF9h dXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiBSZW5hbWUgdG8gLi4uCi0rCShnZGJweV9sb2FkX2F1 dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IC4uLiBoZXJlLgotKwotKzIwMTItMDQtMTcgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJYXV0by1sb2FkOiBN b3ZlIGZpbGVzLgotIAkqIE1ha2VmaWxlLmluIChTRklMRVMpOiBBZGQgYXV0by1sb2FkLmMuCi0g CShIRklMRVNfTk9fU1JDRElSKTogQWRkIGF1dG8tbG9hZC5oLgotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MDIuMDM1NzM3NjQ0ICsw MjAwCi1AQCAtMjgsNiArMjgsNDUgQEAKLSAgIG5vdyBzZXQgYSBicmVha3BvaW50IGluIGJ1aWxk L2djYy9leHByLmMsIGJ1dCBub3QKLSAgIGJ1aWxkL2xpYmNwcC9leHByLmMuCi0gCi0rKiBOZXcg Y29tbWFuZHMKLSsKLSsgICoqICJpbmZvIGF1dG8tbG9hZCIgc2hvd3Mgc3RhdHVzIG9mIGFsbCBr aW5kcyBvZiBhdXRvLWxvYWRlZCBmaWxlcywKLSsgICAgICJpbmZvIGF1dG8tbG9hZCBnZGItc2Ny aXB0cyIgc2hvd3Mgc3RhdHVzIG9mIGF1dG8tbG9hZGluZyBHREIgY2FubmVkCi0rICAgICBzZXF1 ZW5jZXMgb2YgY29tbWFuZHMgZmlsZXMsICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIK LSsgICAgIHNob3dzIHN0YXR1cyBvZiBhdXRvLWxvYWRpbmcgUHl0aG9uIHNjcmlwdCBmaWxlcywK LSsgICAgICJpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiBzaG93cyBzdGF0dXMgb2YgbG9h ZGluZyBpbml0IGZpbGUKLSsgICAgICguZ2RiaW5pdCkgZnJvbSBjdXJyZW50IGRpcmVjdG9yeSBh bmQgImluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgc2hvd3MKLSsgICAgIHN0YXR1cyBvZiBp bmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5IGxvYWRpbmcu Ci0rCi0rICAqKiAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkLXNjcmlw dHMgb258b2ZmIgotKyAgICAgYW5kICJzaG93IGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kcyBo YXZlIGJlZW4gZGVwcmVjYXRlZCwgdXNlIHRoZWlyCi0rICAgICAiaW5mbyBhdXRvLWxvYWQgcHl0 aG9uLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvbnxvZmYiCi0rICAg ICBhbmQgInNob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiBjb3VudGVycGFydHMgaW5zdGVh ZC4KLSsKLSsqIE5ldyBvcHRpb25zCi0rCi0rc2V0IGF1dG8tbG9hZCBvZmYKLSsgIERpc2FibGUg YXV0by1sb2FkaW5nIGdsb2JhbGx5LgotKwotK3Nob3cgYXV0by1sb2FkCi0rICBTaG93IGF1dG8t bG9hZGluZyBzZXR0aW5nIG9mIGFsbCBraW5kcyBvZiBhdXRvLWxvYWRlZCBmaWxlcy4KLSsKLStz ZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIG9ufG9mZgotK3Nob3cgYXV0by1sb2FkIGdkYi1zY3Jp cHRzCi0rICBDb250cm9sIGF1dG8tbG9hZGluZyBvZiBHREIgY2FubmVkIHNlcXVlbmNlcyBvZiBj b21tYW5kcyBmaWxlcy4KLSsKLStzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9ufG9mZgot K3Nob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0rICBDb250cm9sIGF1dG8tbG9hZGluZyBv ZiBQeXRob24gc2NyaXB0IGZpbGVzLgotKwotK3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCBv bnxvZmYKLStzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Ci0rICBDb250cm9sIGxvYWRpbmcg b2YgaW5pdCBmaWxlICguZ2RiaW5pdCkgZnJvbSBjdXJyZW50IGRpcmVjdG9yeS4KLSsKLStzZXQg YXV0by1sb2FkIGxpYnRocmVhZC1kYiBvbnxvZmYKLStzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQt ZGIKLSsgIENvbnRyb2wgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBk ZWJ1Z2dpbmcgc2hhcmVkIGxpYnJhcnkuCi0rCi0gKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMK LSAKLSAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQsIC14 IGJ1dCBleGVjdXRlIGl0Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2Fk LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9h ZC5jCTIwMTItMDQtMTggMDA6NDQ6MjYuOTUwNDM3NTIwICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTYwNzk3ODAgKzAy MDAKLUBAIC0yNywxOSArMjcsOTIgQEAKLSAjaW5jbHVkZSAiY29tbWFuZC5oIgotICNpbmNsdWRl ICJvYnNlcnZlci5oIgotICNpbmNsdWRlICJvYmpmaWxlcy5oIgotLSNpbmNsdWRlICJweXRob24v cHl0aG9uLWludGVybmFsLmgiCi0rI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSsjaW5jbHVkZSAi Y2xpL2NsaS1zY3JpcHQuaCIKLSsjaW5jbHVkZSAiZ2RiY21kLmgiCi0rI2luY2x1ZGUgImNsaS9j bGktZGVjb2RlLmgiCi0rI2luY2x1ZGUgImNsaS9jbGktc2V0c2hvdy5oIgotKwotKy8qIFRoZSBz dWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQgYXMgbm9uLVB5dGhvbiBj b21tYW5kIGZpbGVzLgotKyAgIEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28s IGxvb2sgZm9yIGxpYmZvby1nZGIuZ2RiLiAgKi8KLSsjZGVmaW5lIEdEQl9BVVRPX0ZJTEVfTkFN RSAiLWdkYi5nZGIiCi0rCi0rc3RhdGljIHZvaWQgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZp bGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotKwkJCQkJICAgY29uc3Qg Y2hhciAqZmlsZW5hbWUpOwotKwotKy8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9k aXNhYmxlIGF1dG8tbG9hZGluZyBvZiBHREJfQVVUT19GSUxFX05BTUUKLSsgICBzY3JpcHRzOgot KyAgIHNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgb258b2ZmCi0rICAgVGhpcyBpcyB0cnVlIGlm IHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdoZW4gYW4gb2JqZmlsZQot KyAgIGlzIG9wZW5lZCwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLStzdGF0aWMgaW50IGF1dG9fbG9h ZF9nZGJfc2NyaXB0cyA9IDE7Ci0rCi0rLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xv YWRfZ2RiX3NjcmlwdHMgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0rCi0rc3RhdGljIHZv aWQKLStzaG93X2F1dG9fbG9hZF9nZGJfc2NyaXB0cyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGlu dCBmcm9tX3R0eSwKLSsJCQkgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNo YXIgKnZhbHVlKQotK3sKLSsgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGlu ZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzICIKLSsJCQkgICAgInNjcmlwdHMgaXMg JXMuXG4iKSwKLSsJCSAgICB2YWx1ZSk7Ci0rfQotIAotIC8qIEludGVybmFsLXVzZSBmbGFnIHRv IGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZy4KLSAgICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hv dWxkIGF1dG8tbG9hZCBweXRob24gY29kZSB3aGVuIGFuIG9iamZpbGUgaXMgb3BlbmVkLAotICAg IGZhbHNlIG90aGVyd2lzZS4KLSAKLS0gICBCb3RoIGF1dG9fbG9hZF9zY3JpcHRzICYmIGdkYnB5 X2dsb2JhbF9hdXRvX2xvYWQgbXVzdCBiZSB0cnVlIHRvIGVuYWJsZQotKyAgIEJvdGggYXV0b19s b2FkX3NjcmlwdHMgJiYgZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCi0g ICAgYXV0by1sb2FkaW5nLgotIAotICAgIFRoaXMgZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0ZSBk ZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAotICAgIHVudGlsIGFmdGVyIC4v LmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJlY3Rv cmllcwotICAgIHVzZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICovCi0taW50IGdkYnB5X2dsb2Jh bF9hdXRvX2xvYWQgPSAxOwotK2ludCBnbG9iYWxfYXV0b19sb2FkID0gMTsKLSsKLSsvKiBBdXRv LWxvYWQgLmdkYmluaXQgZmlsZSBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeT8gICovCi0raW50 IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0ID0gMTsKLSsKLSsvKiBBYnNvbHV0ZSBwYXRobmFtZSB0 byB0aGUgY3VycmVudCBkaXJlY3RvcnkgLmdkYmluaXQsIGlmIGl0IGV4aXN0cy4gICovCi0rY2hh ciAqYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBOVUxMOwotKwotKy8qIEJvb2xl YW4gdmFsdWUgaWYgQVVUT19MT0FEX0xPQ0FMX0dEQklOSVRfUEFUSE5BTUUgaGFzIGJlZW4gbG9h ZGVkLiAgKi8KLStpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkID0gMDsKLSsKLSsv KiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0IGNvbmZpZ3Vy YXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkgICAg ICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAg ZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlw dCBmcm9tIGN1cnJlbnQgIgotKwkJCSAgICAiZGlyZWN0b3J5IGlzICVzLlxuIiksCi0rCQkgICAg dmFsdWUpOwotK30KLSsKLSsvKiBEZWZpbml0aW9uIG9mIHNjcmlwdCBsYW5ndWFnZSBmb3IgR0RC IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMuICAqLwotKwotK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgc2NyaXB0X2xhbmd1YWdlIHNjcmlwdF9sYW5ndWFnZV9nZGIKLSsgID0geyBHREJfQVVUT19G SUxFX05BTUUsIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIH07Ci0rCi0rc3RhdGljIHZv aWQKLStzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIEZJTEUgKmZpbGUsCi0rCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsg IHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotKyAgdm9sYXRpbGUg c3RydWN0IGdkYl9leGNlcHRpb24gZTsKLSsKLSsgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUg aGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgotKyAgICAgY2Fu IHByaW50IGl0LiAgKi8KLSsgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsgIG1heWJlX2FkZF9zY3Jp cHQgKHBzcGFjZV9pbmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfZ2Ri KTsKLSsKLSsgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAg c2NyaXB0X2Zyb21fZmlsZSAoZmlsZSwgZmlsZW5hbWUpOwotKyAgICB9Ci0rICBleGNlcHRpb25f cHJpbnQgKGdkYl9zdGRlcnIsIGUpOwotK30KLSAKLSAvKiBGb3Igc2NyaXB0cyBzcGVjaWZpZWQg aW4gLmRlYnVnX2dkYl9zY3JpcHRzLCBtdWx0aXBsZSBvYmpmaWxlcyBtYXkgbG9hZAotICAgIHRo ZSBzYW1lIHNjcmlwdC4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gbG9hZGluZyB0aGUgc2NyaXB0IG11 bHRpcGxlIHRpbWVzLAotQEAgLTYyLDkgKzEzNSwxMiBAQCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdAot IHsKLSAgIC8qIE5hbWUgYXMgcHJvdmlkZWQgYnkgdGhlIG9iamZpbGUuICAqLwotICAgY29uc3Qg Y2hhciAqbmFtZTsKLSsKLSAgIC8qIEZ1bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdh c24ndCBmb3VuZCAob3Igd2FzIG90aGVyd2lzZQotICAgICAgaW5hY2Nlc3NpYmxlKS4gICovCi0g ICBjb25zdCBjaGFyICpmdWxsX3BhdGg7Ci0rCi0rICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1 YWdlICpsYW5ndWFnZTsKLSB9OwotIAotIC8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEga2V5LiAg Ki8KLUBAIC0xMDksNyArMTg1LDcgQEAgaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2 b2lkICpkYQotIHsKLSAgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplID0gZGF0YTsKLSAK LS0gIHJldHVybiBodGFiX2hhc2hfc3RyaW5nIChlLT5uYW1lKTsKLSsgIHJldHVybiBodGFiX2hh c2hfc3RyaW5nIChlLT5uYW1lKSBeIGh0YWJfaGFzaF9wb2ludGVyIChlLT5sYW5ndWFnZSk7Ci0g fQotIAotIC8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAg Ki8KLUBAIC0xMjAsNyArMTk2LDcgQEAgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9p ZCAqYSwgYwotICAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKLSAgIGNvbnN0 IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYiA9IGI7Ci0gCi0tICByZXR1cm4gc3RyY21wIChlYS0+ bmFtZSwgZWItPm5hbWUpID09IDA7Ci0rICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5h bWUpID09IDAgJiYgZWEtPmxhbmd1YWdlID09IGViLT5sYW5ndWFnZTsKLSB9Ci0gCi0gLyogSW5p dGlhbGl6ZSB0aGUgdGFibGUgdG8gdHJhY2sgbG9hZGVkIHNjcmlwdHMuCi1AQCAtMTU2LDIwICsy MzIsMjEgQEAgZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAocwotICAgcmV0 dXJuIGluZm87Ci0gfQotIAotLS8qIEFkZCBzY3JpcHQgTkFNRSB0byBoYXNoIHRhYmxlIG9mIFBT UEFDRV9JTkZPLgotLSAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZv dW5kLgotLSAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGlu IHRoZSBoYXNoIHRhYmxlLiAgKi8KLSsvKiBBZGQgc2NyaXB0IE5BTUUgaW4gTEFOR1VBR0UgdG8g aGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4KLSsgICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUg c2NyaXB0IHdhc24ndCBmb3VuZC4gIFRoZSByZXN1bHQgaXMKLSsgICB0cnVlIGlmIHRoZSBzY3Jp cHQgd2FzIGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLwotIAotIGludAotLW1heWJlX2Fk ZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLCBjb25z dCBjaGFyICpuYW1lLAotLQkJICBjb25zdCBjaGFyICpmdWxsX3BhdGgpCi0rbWF5YmVfYWRkX3Nj cmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCi0rCQkgIGNv bnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKLSsJCSAgY29uc3Qgc3RydWN0 IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCi0gewotICAgc3RydWN0IGh0YWIgKmh0YWIgPSBw c3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHM7Ci0gICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKnNs b3QsIGVudHJ5OwotICAgaW50IGluX2hhc2hfdGFibGU7Ci0gCi0gICBlbnRyeS5uYW1lID0gbmFt ZTsKLS0gIGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKLSsgIGVudHJ5Lmxhbmd1YWdlID0g bGFuZ3VhZ2U7Ci0gICBzbG90ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRf c2xvdCAoaHRhYiwgJmVudHJ5LCBJTlNFUlQpOwotICAgaW5faGFzaF90YWJsZSA9ICpzbG90ICE9 IE5VTEw7Ci0gCi1AQCAtMTk0LDYgKzI3MSw3IEBAIG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBh dXRvX2xvYWRfcHNwYWMKLSAJfQotICAgICAgIGVsc2UKLSAJKCpzbG90KS0+ZnVsbF9wYXRoID0g TlVMTDsKLSsgICAgICAoKnNsb3QpLT5sYW5ndWFnZSA9IGxhbmd1YWdlOwotICAgICB9Ci0gCi0g ICByZXR1cm4gaW5faGFzaF90YWJsZTsKLUBAIC0yMTYsMTAgKzI5NCwxMiBAQCBjbGVhcl9zZWN0 aW9uX3NjcmlwdHMgKHZvaWQpCi0gICAgIH0KLSB9Ci0gCi0tLyogTG9vayBmb3IgdGhlIGF1dG8t bG9hZCBzY3JpcHQgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQgaXQuICAqLwotKy8q IExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGluIExBTkdVQUdFIGFzc29jaWF0ZWQgd2l0 aCBPQkpGSUxFIGFuZCBsb2FkCi0rICAgaXQuICAqLwotIAotIHZvaWQKLS1hdXRvX2xvYWRfb2Jq ZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpzdWZmaXgp Ci0rYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJ CQkgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKQotIHsKLSAgIGNoYXIg KnJlYWxuYW1lOwotICAgY2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7Ci1AQCAtMjI5LDkgKzMw OSw5IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKLSAKLSAgIHJl YWxuYW1lID0gZ2RiX3JlYWxwYXRoIChvYmpmaWxlLT5uYW1lKTsKLSAgIGxlbiA9IHN0cmxlbiAo cmVhbG5hbWUpOwotLSAgZmlsZW5hbWUgPSB4bWFsbG9jIChsZW4gKyBzdHJsZW4gKHN1ZmZpeCkg KyAxKTsKLSsgIGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChsYW5ndWFnZS0+c3Vm Zml4KSArIDEpOwotICAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7Ci0tICBzdHJj cHkgKGZpbGVuYW1lICsgbGVuLCBzdWZmaXgpOwotKyAgc3RyY3B5IChmaWxlbmFtZSArIGxlbiwg bGFuZ3VhZ2UtPnN1ZmZpeCk7Ci0gCi0gICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUs IGZpbGVuYW1lKTsKLSAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1lKTsKLUBAIC0yNjks MjcgKzM0OSwzMyBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCi0g Ci0gICBpZiAoaW5wdXQpCi0gICAgIHsKLS0gICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICpwc3BhY2VfaW5mbzsKLS0KLSAgICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7 Ci0gCi0tICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAi aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKLS0JIGNhbiBwcmludCBpdC4gICovCi0tICAgICAgcHNw YWNlX2luZm8gPQotLQlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJy ZW50X3Byb2dyYW1fc3BhY2UpOwotLSAgICAgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZv LCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSk7Ci0tCi0gICAgICAgLyogVG8gcHJlc2VydmUgZXhpc3Rp bmcgYmVoYXZpb3VyIHdlIGRvbid0IGNoZWNrIGZvciB3aGV0aGVyIHRoZQotIAkgc2NyaXB0IHdh cyBhbHJlYWR5IGluIHRoZSB0YWJsZSwgYW5kIGFsd2F5cyBsb2FkIGl0LgotIAkgSXQncyBoaWdo bHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKLSAJIGFuZCB0aGVzZSBz Y3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCi0gCSBs b2FkcyBhbnl3YXkuICAqLwotLSAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxl IChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKLSsgICAgICBsYW5ndWFnZS0+c291cmNlX3Nj cmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0gICAgIH0KLSAK LSAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0gfQotIAotKy8qIExvYWQgYW55IGF1dG8tbG9h ZGVkIHNjcmlwdHMgZm9yIE9CSkZJTEUuICAqLwotKwotK3ZvaWQKLStsb2FkX2F1dG9fc2NyaXB0 c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgaWYgKCFnbG9i YWxfYXV0b19sb2FkKQotKyAgICByZXR1cm47Ci0rCi0rICBpZiAoYXV0b19sb2FkX2dkYl9zY3Jp cHRzKQotKyAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsICZzY3JpcHRfbGFu Z3VhZ2VfZ2RiKTsKLSsKLSsgIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChv YmpmaWxlKTsKLSt9Ci0rCi0gLyogVGhpcyBpcyBhIG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxi YWNrIHRvIGF1dG8tbG9hZCBzY3JpcHRzLgotIAotICAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9h ZGVkIHNjcmlwdHMgYXJlIHN1cHBvcnRlZC4KLUBAIC0zMTQsNiArNDAwLDEzIEBAIGF1dG9fbG9h ZF9uZXdfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm8KLSB0eXBlZGVmIHN0cnVjdCBsb2FkZWRf c2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKLSBERUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRy KTsKLSAKLStzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEKLSt7Ci0rICBWRUMg KGxvYWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcDsKLSsKLSsgIGNvbnN0IHN0cnVjdCBzY3Jp cHRfbGFuZ3VhZ2UgKmxhbmd1YWdlOwotK307Ci0rCi0gLyogVHJhdmVyc2FsIGZ1bmN0aW9uIGZv ciBodGFiX3RyYXZlcnNlLgotICAgIENvbGxlY3QgdGhlIGVudHJ5IGlmIGl0IG1hdGNoZXMgdGhl IHJlZ2V4cC4gICovCi0gCi1AQCAtMzIxLDEwICs0MTQsMTAgQEAgc3RhdGljIGludAotIGNvbGxl Y3RfbWF0Y2hpbmdfc2NyaXB0cyAodm9pZCAqKnNsb3QsIHZvaWQgKmluZm8pCi0gewotICAgc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCA9ICpzbG90OwotLSAgVkVDIChsb2FkZWRfc2NyaXB0 X3B0cikgKipzY3JpcHRzX3B0ciA9IGluZm87Ci0rICBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19z Y3JpcHRzX2RhdGEgKmRhdGEgPSBpbmZvOwotIAotLSAgaWYgKHJlX2V4ZWMgKHNjcmlwdC0+bmFt ZSkpCi0tICAgIFZFQ19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqc2NyaXB0c19wdHIs IHNjcmlwdCk7Ci0rICBpZiAoc2NyaXB0LT5sYW5ndWFnZSA9PSBkYXRhLT5sYW5ndWFnZSAmJiBy ZV9leGVjIChzY3JpcHQtPm5hbWUpKQotKyAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0 X3B0ciwgKmRhdGEtPnNjcmlwdHNfcCwgc2NyaXB0KTsKLSAKLSAgIHJldHVybiAxOwotIH0KLUBA IC0zNjYsMTAgKzQ1OSwxOCBAQCBzb3J0X3NjcmlwdHNfYnlfbmFtZSAoY29uc3Qgdm9pZCAqYXAs IGNvCi0gICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsKLSB9Ci0gCi0t LyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLwotKy8qIFNwZWNpYWwgaW50 ZXJuYWwgR0RCIHZhbHVlIG9mIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMncyBQQVRURVJOIGlkZW50 aWZ5Ci0rICAgdGhlICJpbmZvIGF1dG8tbG9hZCBYWFgiIGNvbW1hbmQgaGFzIGJlZW4gZXhlY3V0 ZWQgdGhyb3VnaCB0aGUgZ2VuZXJhbAotKyAgICJpbmZvIGF1dG8tbG9hZCIgaW52b2NhdGlvbi4g IEV4dHJhIG5ld2xpbmUgd2lsbCBiZSBwcmludGVkIGlmIG5lZWRlZC4gICovCi0rY2hhciBhdXRv X2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmxbXSA9ICIiOwotKwotKy8qIEltcGxlbWVudGF0 aW9uIGZvciAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCi0rICAgKGFuZCAiaW5mbyBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMiKS4gIExpc3Qgc2NyaXB0cyBpbiBMQU5HVUFHRSBtYXRjaGlu ZwotKyAgIFBBVFRFUk4uICBGUk9NX1RUWSBpcyB0aGUgdXN1YWwgR0RCIGJvb2xlYW4gZm9yIHVz ZXIgaW50ZXJhY3Rpdml0eS4gICovCi0gCi0tc3RhdGljIHZvaWQKLS1pbmZvX2F1dG9fbG9hZF9z Y3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCi0rdm9pZAotK2F1dG9fbG9hZF9p bmZvX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSwKLSsJCQljb25zdCBzdHJ1 Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSkKLSB7Ci0gICBzdHJ1Y3QgdWlfb3V0ICp1aW91 dCA9IGN1cnJlbnRfdWlvdXQ7Ci0gICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3Bh Y2VfaW5mbzsKLUBAIC00MDIsMTQgKzUwMywyMiBAQCBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChj aGFyICpwYXR0ZXJuLCBpCi0gCi0gICBpZiAocHNwYWNlX2luZm8gIT0gTlVMTCAmJiBwc3BhY2Vf aW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKLSAgICAgewotKyAgICAgIHN0cnVjdCBjb2xs ZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YSBkYXRhID0geyAmc2NyaXB0cywgbGFuZ3VhZ2UgfTsK LSsKLSAgICAgICBpbW1lZGlhdGVfcXVpdCsrOwotICAgICAgIC8qIFBhc3MgYSBwb2ludGVyIHRv IHNjcmlwdHMgYXMgVkVDX3NhZmVfcHVzaCBjYW4gcmVhbGxvYyBzcGFjZS4gICovCi0gICAgICAg aHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSAocHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLAotLQkJ CSAgICAgIGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cywgJnNjcmlwdHMpOwotKwkJCSAgICAgIGNv bGxlY3RfbWF0Y2hpbmdfc2NyaXB0cywgJmRhdGEpOwotICAgICAgIGltbWVkaWF0ZV9xdWl0LS07 Ci0gICAgIH0KLSAKLSAgIG5yX3NjcmlwdHMgPSBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0 ciwgc2NyaXB0cyk7Ci0rCi0rICAvKiBUYWJsZSBoZWFkZXIgc2hpZnRlZCByaWdodCBieSBwcmVj ZWRpbmcgImdkYi1zY3JpcHRzOiAgIiB3b3VsZCBub3QgbWF0Y2gKLSsgICAgIGl0cyBjb2x1bW5z LiAgKi8KLSsgIGlmIChucl9zY3JpcHRzID4gMCAmJiBwYXR0ZXJuID09IGF1dG9fbG9hZF9pbmZv X3NjcmlwdHNfcGF0dGVybl9ubCkKLSsgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsK LSAgIG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgbnJfc2Ny aXB0cywKLSAJCQkJICAgICAgICJBdXRvTG9hZGVkU2NyaXB0c1RhYmxlIik7Ci0gCi1AQCAtNDQx LDYgKzU1MCwyOSBAQCBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpCi0g ICAgIH0KLSB9Ci0gCi0rLyogV3JhcHBlciBmb3IgImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRz Ii4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmZvX2F1dG9fbG9hZF9nZGJfc2NyaXB0cyAoY2hh ciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQotK3sKLSsgIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMg KHBhdHRlcm4sIGZyb21fdHR5LCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rfQotKwotKy8qIElt cGxlbWVudCAnaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCcuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0raW5mb19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCAoY2hhciAqYXJncywgaW50IGZyb21f dHR5KQotK3sKLSsgIGlmIChhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9PSBOVUxM KQotKyAgICBwcmludGZfZmlsdGVyZWQgKF8oIkxvY2FsIC5nZGJpbml0IGZpbGUgd2FzIG5vdCBm b3VuZC5cbiIpKTsKLSsgIGVsc2UgaWYgKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCkK LSsgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIFwiJXNcIiBoYXMg YmVlbiBsb2FkZWQuXG4iKSwKLSsJCSAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5h bWUpOwotKyAgZWxzZQotKyAgICBwcmludGZfZmlsdGVyZWQgKF8oIkxvY2FsIC5nZGJpbml0IGZp bGUgXCIlc1wiIGhhcyBub3QgYmVlbiBsb2FkZWQuXG4iKSwKLSsJCSAgICAgYXV0b19sb2FkX2xv Y2FsX2dkYmluaXRfcGF0aG5hbWUpOwotK30KLSsKLSAvKiBSZXR1cm4gbm9uLXplcm8gaWYgU0NS SVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQgb2YgUFNQQUNFX0lORk8gd2FzIHVuc2V0Ci0g ICAgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIEFsd2F5cyBzZXQgU0NSSVBUX05PVF9G T1VORF9XQVJOSU5HX1BSSU5URUQKLSAgICBvZiBQU1BBQ0VfSU5GTy4gICovCi1AQCAtNDU1LDYg KzU4NywxMzIgQEAgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYQotICAg cmV0dXJuIHJldHZhbDsKLSB9Ci0gCi0rLyogVGhlIG9ubHkgdmFsaWQgInNldCBhdXRvLWxvYWQi IGFyZ3VtZW50IGlzIG9mZnwwfG5vfGRpc2FibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0 X2F1dG9fbG9hZF9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqbGlzdDsKLSsgIHNpemVfdCBsZW5ndGg7Ci0rCi0rICAvKiBTZWUg cGFyc2VfYmluYXJ5X29wZXJhdGlvbiBpbiB1c2UgYnkgdGhlIHN1Yi1jb21tYW5kcy4gICovCi0r Ci0rICBsZW5ndGggPSBhcmdzID8gc3RybGVuIChhcmdzKSA6IDA7Ci0rCi0rICB3aGlsZSAobGVu Z3RoID4gMCAmJiAoYXJnc1tsZW5ndGggLSAxXSA9PSAnICcgfHwgYXJnc1tsZW5ndGggLSAxXSA9 PSAnXHQnKSkKLSsgICAgbGVuZ3RoLS07Ci0rCi0rICBpZiAobGVuZ3RoID09IDAgfHwgKHN0cm5j bXAgKGFyZ3MsICJvZmYiLCBsZW5ndGgpICE9IDAKLSsJCSAgICAgICYmIHN0cm5jbXAgKGFyZ3Ms ICIwIiwgbGVuZ3RoKSAhPSAwCi0rCQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAibm8iLCBsZW5n dGgpICE9IDAKLSsJCSAgICAgICYmIHN0cm5jbXAgKGFyZ3MsICJkaXNhYmxlIiwgbGVuZ3RoKSAh PSAwKSkKLSsgICAgZXJyb3IgKF8oIlZhbGlkIGlzIG9ubHkgZ2xvYmFsICdzZXQgYXV0by1sb2Fk IG5vJzsgIgotKwkgICAgICJvdGhlcndpc2UgY2hlY2sgdGhlIGF1dG8tbG9hZCBzdWItY29tbWFu ZHMuIikpOwotKwotKyAgZm9yIChsaXN0ID0gKmF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCk7 IGxpc3QgIT0gTlVMTDsgbGlzdCA9IGxpc3QtPm5leHQpCi0rICAgIGlmIChsaXN0LT52YXJfdHlw ZSA9PSB2YXJfYm9vbGVhbikKLSsgICAgICB7Ci0rCWdkYl9hc3NlcnQgKGxpc3QtPnR5cGUgPT0g c2V0X2NtZCk7Ci0rCWRvX3NldHNob3dfY29tbWFuZCAoYXJncywgZnJvbV90dHksIGxpc3QpOwot KyAgICAgIH0KLSt9Ci0rCi0rLyogSW5pdGlhbGl6ZSAic2V0IGF1dG8tbG9hZCAiIGNvbW1hbmRz IHByZWZpeCBhbmQgcmV0dXJuIGl0LiAgKi8KLSsKLStzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq KgotK2F1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKHZvaWQpCi0rewotKyAgc3RhdGljIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpyZXR2YWw7Ci0rCi0rICBpZiAocmV0dmFsID09IE5VTEwpCi0r ICAgIGFkZF9wcmVmaXhfY21kICgiYXV0by1sb2FkIiwgY2xhc3NfbWFpbnRlbmFuY2UsIHNldF9h dXRvX2xvYWRfY21kLCBfKCJcCi0rQXV0by1sb2FkaW5nIHNwZWNpZmljIHNldHRpbmdzLlxuXAot K0NvbmZpZ3VyZSB2YXJpb3VzIGF1dG8tbG9hZC1zcGVjaWZpYyB2YXJpYWJsZXMgc3VjaCBhc1xu XAotK2F1dG9tYXRpYyBsb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzLiIpLAotKwkJICAgICZyZXR2 YWwsICJzZXQgYXV0by1sb2FkICIsCi0rCQkgICAgMS8qYWxsb3ctdW5rbm93biovLCAmc2V0bGlz dCk7Ci0rCi0rICByZXR1cm4gJnJldHZhbDsKLSt9Ci0rCi0rLyogQ29tbWFuZCAic2hvdyBhdXRv LWxvYWQiIGRpc3BsYXlzIHN1bW1hcnkgb2YgYWxsIHRoZSBjdXJyZW50Ci0rICAgInNob3cgYXV0 by1sb2FkICIgc2V0dGluZ3MuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRf Y21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0rewotKyAgY21kX3Nob3dfbGlzdCAoKmF1 dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpLCBmcm9tX3R0eSwgIiIpOwotK30KLSsKLSsvKiBJ bml0aWFsaXplICJzaG93IGF1dG8tbG9hZCAiIGNvbW1hbmRzIHByZWZpeCBhbmQgcmV0dXJuIGl0 LiAgKi8KLSsKLStzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKgotK2F1dG9fbG9hZF9zaG93X2Nt ZGxpc3RfZ2V0ICh2b2lkKQotK3sKLSsgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq cmV0dmFsOwotKwotKyAgaWYgKHJldHZhbCA9PSBOVUxMKQotKyAgICBhZGRfcHJlZml4X2NtZCAo ImF1dG8tbG9hZCIsIGNsYXNzX21haW50ZW5hbmNlLCBzaG93X2F1dG9fbG9hZF9jbWQsIF8oIlwK LStTaG93IGF1dG8tbG9hZGluZyBzcGVjaWZpYyBzZXR0aW5ncy5cblwKLStTaG93IGNvbmZpZ3Vy YXRpb24gb2YgdmFyaW91cyBhdXRvLWxvYWQtc3BlY2lmaWMgdmFyaWFibGVzIHN1Y2ggYXNcblwK LSthdXRvbWF0aWMgbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4iKSwKLSsJCSAgICAmcmV0dmFs LCAic2hvdyBhdXRvLWxvYWQgIiwKLSsJCSAgICAwLyphbGxvdy11bmtub3duKi8sICZzaG93bGlz dCk7Ci0rCi0rICByZXR1cm4gJnJldHZhbDsKLSt9Ci0rCi0rLyogQ29tbWFuZCAiaW5mbyBhdXRv LWxvYWQiIGRpc3BsYXlzIHdoZXRoZXIgdGhlIHZhcmlvdXMgYXV0by1sb2FkIGZpbGVzIGhhdmUK LSsgICBiZWVuIGxvYWRlZC4gIFRoaXMgaXMgcmVpbXBsZW1lbnRhdGlvbiBvZiBjbWRfc2hvd19s aXN0IHdoaWNoIGluc2VydHMKLSsgICBuZXdsaW5lcyBhdCBwcm9wZXIgcGxhY2VzLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK2luZm9fYXV0b19sb2FkX2NtZCAoY2hhciAqYXJncywgaW50IGZyb21f dHR5KQotK3sKLSsgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpsaXN0OwotKyAgc3RydWN0IGNs ZWFudXAgKmluZm9saXN0X2NoYWluOwotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50 X3Vpb3V0OwotKwotKyAgaW5mb2xpc3RfY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxl X2JlZ2luX2VuZCAodWlvdXQsICJpbmZvbGlzdCIpOwotKwotKyAgZm9yIChsaXN0ID0gKmF1dG9f bG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpOyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0 KQotKyAgICB7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKm9wdGlvbl9jaGFpbgotKwk9IG1ha2Vf Y2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgIm9wdGlvbiIpOwotKwotKyAg ICAgIGdkYl9hc3NlcnQgKCFsaXN0LT5wcmVmaXhsaXN0KTsKLSsgICAgICBnZGJfYXNzZXJ0IChs aXN0LT50eXBlID09IG5vdF9zZXRfY21kKTsKLSsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5n ICh1aW91dCwgIm5hbWUiLCBsaXN0LT5uYW1lKTsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQs ICI6ICAiKTsKLSsgICAgICBjbWRfZnVuYyAobGlzdCwgYXV0b19sb2FkX2luZm9fc2NyaXB0c19w YXR0ZXJuX25sLCBmcm9tX3R0eSk7Ci0rCi0rICAgICAgLyogQ2xvc2UgdGhlIHR1cGxlLiAgKi8K LSsgICAgICBkb19jbGVhbnVwcyAob3B0aW9uX2NoYWluKTsKLSsgICAgfQotKwotKyAgLyogQ2xv c2UgdGhlIHR1cGxlLiAgKi8KLSsgIGRvX2NsZWFudXBzIChpbmZvbGlzdF9jaGFpbik7Ci0rfQot KwotKy8qIEluaXRpYWxpemUgImluZm8gYXV0by1sb2FkICIgY29tbWFuZHMgcHJlZml4IGFuZCBy ZXR1cm4gaXQuICAqLwotKwotK3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqCi0rYXV0b19sb2Fk X2luZm9fY21kbGlzdF9nZXQgKHZvaWQpCi0rewotKyAgc3RhdGljIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpyZXR2YWw7Ci0rCi0rICBpZiAocmV0dmFsID09IE5VTEwpCi0rICAgIGFkZF9wcmVm aXhfY21kICgiYXV0by1sb2FkIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfY21kLCBfKCJc Ci0rUHJpbnQgY3VycmVudCBzdGF0dXMgb2YgYXV0by1sb2FkZWQgZmlsZXMuXG5cCi0rUHJpbnQg d2hldGhlciB2YXJpb3VzIGZpbGVzIGxpa2UgUHl0aG9uIHNjcmlwdHMgb3IgLmdkYmluaXQgZmls ZXMgaGF2ZSBiZWVuXG5cCi0rZm91bmQgYW5kL29yIGxvYWRlZC4iKSwKLSsJCSAgICAmcmV0dmFs LCAiaW5mbyBhdXRvLWxvYWQgIiwKLSsJCSAgICAwLyphbGxvdy11bmtub3duKi8sICZpbmZvbGlz dCk7Ci0rCi0rICByZXR1cm4gJnJldHZhbDsKLSt9Ci0rCi0gdm9pZCBfaW5pdGlhbGl6ZV9hdXRv X2xvYWQgKHZvaWQpOwotIAotIHZvaWQKLUBAIC00NjUsOCArNzIzLDM4IEBAIF9pbml0aWFsaXpl X2F1dG9fbG9hZCAodm9pZCkKLSAKLSAgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0 b19sb2FkX25ld19vYmpmaWxlKTsKLSAKLS0gIGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMi LAotLQkgICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cywKLS0JICAgIF8oIlByaW50IHRoZSBsaXN0 IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlwdHMuXG5cCi0tVXNhZ2U6IGluZm8gYXV0by1s b2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7Ci0rICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImdk Yi1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKLSsJCQkgICAmYXV0b19sb2FkX2dkYl9zY3JpcHRz LCBfKCJcCi0rRW5hYmxlIG9yIGRpc2FibGUgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5j ZXMgb2YgY29tbWFuZHMgc2NyaXB0cy4iKSwgXygiXAotK1Nob3cgd2hldGhlciBhdXRvLWxvYWRp bmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlzIGVuYWJsZWQuIiks Ci0rCQkJICAgXygiXAotK0lmIGVuYWJsZWQsIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMg YXJlIGxvYWRlZCB3aGVuIHRoZSBkZWJ1Z2dlciByZWFkc1xuXAotK2FuIGV4ZWN1dGFibGUgb3Ig c2hhcmVkIGxpYnJhcnkuXG5cCi0rVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlv bnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0rCQkJICAgTlVMTCwgc2hvd19hdXRvX2xv YWRfZ2RiX3NjcmlwdHMsCi0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJ CQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRfY21kICgiZ2Ri LXNjcmlwdHMiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9nZGJfc2NyaXB0cywKLSsJICAg XygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgc2VxdWVuY2VzIG9mIGNv bW1hbmRzLlxuXAotK1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyBbUkVHRVhQXSIp LAotKwkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRfc2V0c2hv d19ib29sZWFuX2NtZCAoImxvY2FsLWdkYmluaXQiLCBjbGFzc19zdXBwb3J0LAotKwkJCSAgICZh dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwgXygiXAotK0VuYWJsZSBvciBkaXNhYmxlIGF1dG8tbG9h ZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgaW4gY3VycmVudCBkaXJlY3RvcnkuIiksIF8oIlwKLStT aG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIC5nZGJpbml0IHNjcmlwdCBpbiBjdXJyZW50IGRpcmVj dG9yeSBpcyBlbmFibGVkLiIpLAotKwkJCSAgIF8oIlwKLStJZiBlbmFibGVkLCBjYW5uZWQgc2Vx dWVuY2VzIG9mIGNvbW1hbmRzIGFyZSBsb2FkZWQgd2hlbiBkZWJ1Z2dlciBzdGFydHNcblwKLStm cm9tIC5nZGJpbml0IGZpbGUgaW4gY3VycmVudCBkaXJlY3RvcnkuICBTdWNoIGZpbGVzIGFyZSBk ZXByZWNhdGVkLFxuXAotK3VzZSBhIHNjcmlwdCBhc3NvY2lhdGVkIHdpdGggaW5mZXJpb3IgZXhl Y3V0YWJsZSBmaWxlIGluc3RlYWQuXG5cCi0rVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBs aWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0rCQkJICAgTlVMTCwgc2hvd19h dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwKLSsJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0 ICgpLAotKwkJCSAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGFkZF9j bWQgKCJsb2NhbC1nZGJpbml0IiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdCwKLSsJICAgXygiUHJpbnQgd2hldGhlciBjdXJyZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCBm aWxlIGhhcyBiZWVuIGxvYWRlZC5cblwKLStVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2Ri aW5pdCIpLAotKwkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0gfQotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ0OjI2 Ljk1MTQzNzUxNyArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5o CTIwMTItMDQtMTggMDA6NDY6NDcuNTU2MDc5NzgwICswMjAwCi1AQCAtMjIsMTUgKzIyLDM2IEBA Ci0gCi0gc3RydWN0IHByb2dyYW1fc3BhY2U7Ci0gCi0tZXh0ZXJuIGludCBnZGJweV9nbG9iYWxf YXV0b19sb2FkOwotK3N0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UKLSt7Ci0rICBjb25zdCBjaGFyICpz dWZmaXg7Ci0rCi0rICB2b2lkICgqc291cmNlX3NjcmlwdF9mb3Jfb2JqZmlsZSkgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotKwkJCQkgICAgIGNvbnN0IGNoYXIgKmZpbGVu YW1lKTsKLSt9OwotKwotK2V4dGVybiBpbnQgZ2xvYmFsX2F1dG9fbG9hZDsKLSsKLStleHRlcm4g aW50IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0OwotK2V4dGVybiBjaGFyICphdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdF9wYXRobmFtZTsKLStleHRlcm4gaW50IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0 X2xvYWRlZDsKLSAKLSBleHRlcm4gc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCi0gICBn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSAqcHNwYWNlKTsKLSBleHRlcm4gaW50IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAotLQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwg Y29uc3QgY2hhciAqZnVsbF9wYXRoKTsKLSsJCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0 IGNoYXIgKmZ1bGxfcGF0aCwKLSsJCQkgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2Ug Kmxhbmd1YWdlKTsKLSBleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAotLQkJCQkgICAgICBjb25zdCBjaGFyICpzdWZmaXgpOwotKwkJ CQkgICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci0rZXh0ZXJu IHZvaWQgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlKTsKLSBleHRlcm4gaW50Ci0gICBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKTsKLStleHRlcm4gY2hhciBh dXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmxbXTsKLStleHRlcm4gdm9pZCBhdXRvX2xv YWRfaW5mb19zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksCi0rCQkJCSAgICBj b25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci0rCi0rZXh0ZXJuIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAodm9pZCk7Ci0r ZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX3Nob3dfY21kbGlzdF9n ZXQgKHZvaWQpOwotK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9p bmZvX2NtZGxpc3RfZ2V0ICh2b2lkKTsKLSAKLSAjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAx Mi0wMS0wNCAwOToxNzowNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NzA3OTc3NyArMDIw MAotQEAgLTQwLDggKzQwLDEwIEBACi0gI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0gI2luY2x1ZGUg ImxpbnV4LW5hdC5oIgotICNpbmNsdWRlICJsaW51eC1wcm9jZnMuaCIKLSsjaW5jbHVkZSAiYXV0 by1sb2FkLmgiCi0gCi0gI2luY2x1ZGUgPHNpZ25hbC5oPgotKyNpbmNsdWRlIDxjdHlwZS5oPgot IAotICNpZmRlZiBIQVZFX0dOVV9MSUJDX1ZFUlNJT05fSAotICNpbmNsdWRlIDxnbnUvbGliYy12 ZXJzaW9uLmg+Ci1AQCAtNzUsNiArNzcsMjEgQEAKLSAKLSBzdGF0aWMgY2hhciAqbGlidGhyZWFk X2RiX3NlYXJjaF9wYXRoOwotIAotKy8qIFNldCB0byBub24temVybyBpZiB0aHJlYWRfZGIgYXV0 by1sb2FkaW5nIGlzIGVuYWJsZWQKLSsgICBieSB0aGUgInNldCBhdXRvLWxvYWQgbGlidGhyZWFk LWRiIiBjb21tYW5kLiAgKi8KLStzdGF0aWMgaW50IGF1dG9fbG9hZF90aHJlYWRfZGIgPSAxOwot KwotKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3RocmVhZF9kYiBjb25maWd1 cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX3Ro cmVhZF9kYiAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkgIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBmcHJpbnRm X2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGli dGhyZWFkX2RiICIKLSsJCQkgICAgImlzICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSsK LSBzdGF0aWMgdm9pZAotIHNldF9saWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGggKGNoYXIgKmlnbm9y ZWQsIGludCBmcm9tX3R0eSwKLSAJCQkgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykK LUBAIC0xMTksNiArMTM2LDEwIEBAIHN0cnVjdCB0aHJlYWRfZGJfaW5mbwotICAgLyogSGFuZGxl IGZyb20gZGxvcGVuIGZvciBsaWJ0aHJlYWRfZGIuc28uICAqLwotICAgdm9pZCAqaGFuZGxlOwot IAotKyAgLyogQWJzb2x1dGUgcGF0aG5hbWUgZnJvbSBnZGJfcmVhbHBhdGggdG8gZGlzayBmaWxl IHVzZWQgZm9yIGRsb3Blbi1pbmcKLSsgICAgIEhBTkRMRS4gIEl0IG1heSBiZSBOVUxMIGZvciBz eXN0ZW0gbGlicmFyeS4gICovCi0rICBjaGFyICpmaWxlbmFtZTsKLSsKLSAgIC8qIFN0cnVjdHVy ZSB0aGF0IGlkZW50aWZpZXMgdGhlIGNoaWxkIHByb2Nlc3MgZm9yIHRoZQotICAgICAgPHByb2Nf c2VydmljZS5oPiBpbnRlcmZhY2UuICAqLwotICAgc3RydWN0IHBzX3Byb2NoYW5kbGUgcHJvY19o YW5kbGU7Ci1AQCAtMjQ4LDYgKzI2OSw4IEBAIGRlbGV0ZV90aHJlYWRfZGJfaW5mbyAoaW50IHBp ZCkKLSAgIGlmIChpbmZvLT5oYW5kbGUgIT0gTlVMTCkKLSAgICAgZGxjbG9zZSAoaW5mby0+aGFu ZGxlKTsKLSAKLSsgIHhmcmVlIChpbmZvLT5maWxlbmFtZSk7Ci0rCi0gICBpZiAoaW5mb19wcmV2 KQotICAgICBpbmZvX3ByZXYtPm5leHQgPSBpbmZvLT5uZXh0OwotICAgZWxzZQotQEAgLTgwNyw2 ICs4MzAsMTAgQEAgdHJ5X3RocmVhZF9kYl9sb2FkIChjb25zdCBjaGFyICpsaWJyYXJ5KQotIAot ICAgaW5mbyA9IGFkZF90aHJlYWRfZGJfaW5mbyAoaGFuZGxlKTsKLSAKLSsgIC8qIERvIG5vdCBz YXZlIHN5c3RlbSBsaWJyYXJ5IG5hbWUsIHRoYXQgb25lIGlzIGFsd2F5cyB0cnVzdGVkLiAgKi8K LSsgIGlmIChzdHJjaHIgKGxpYnJhcnksICcvJykgIT0gTlVMTCkKLSsgICAgaW5mby0+ZmlsZW5h bWUgPSBnZGJfcmVhbHBhdGggKGxpYnJhcnkpOwotKwotICAgaWYgKHRyeV90aHJlYWRfZGJfbG9h ZF8xIChpbmZvKSkKLSAgICAgcmV0dXJuIDE7Ci0gCi1AQCAtODU2LDYgKzg4Myw5IEBAIHRyeV90 aHJlYWRfZGJfbG9hZF9mcm9tX3BkaXIgKHZvaWQpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9i ajsKLSAKLSsgIGlmICghYXV0b19sb2FkX3RocmVhZF9kYikKLSsgICAgcmV0dXJuIDA7Ci0rCi0g ICBBTExfT0JKRklMRVMgKG9iaikKLSAgICAgaWYgKGxpYnB0aHJlYWRfbmFtZV9wIChvYmotPm5h bWUpKQotICAgICAgIHsKLUBAIC04OTUsNiArOTI1LDkgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zy b21fZGlyIChjb25zdCBjaGFyCi0gICBjaGFyICpwYXRoOwotICAgaW50IHJlc3VsdDsKLSAKLSsg IGlmICghYXV0b19sb2FkX3RocmVhZF9kYikKLSsgICAgcmV0dXJuIDA7Ci0rCi0gICBwYXRoID0g eG1hbGxvYyAoZGlyX2xlbiArIDEgKyBzdHJsZW4gKExJQlRIUkVBRF9EQl9TTykgKyAxKTsKLSAg IGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBwYXRoKTsKLSAKLUBAIC0xODAyLDYgKzE4 MzUsMTUwIEBAIHRocmVhZF9kYl9yZXN1bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMKLSAgIGJl bmVhdGgtPnRvX3Jlc3VtZSAoYmVuZWF0aCwgcHRpZCwgc3RlcCwgc2lnbm8pOwotIH0KLSAKLSsv KiBxc29ydCBoZWxwZXIgZnVuY3Rpb24gZm9yIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYiwg c29ydCB0aGUKLSsgICB0aHJlYWRfZGJfaW5mbyBwb2ludGVycyBwcmltYXJpbHkgYnkgdGhlaXIg RklMRU5BTUUgYW5kIHNlY29uZGFyaWx5IGJ5IHRoZWlyCi0rICAgUElELCBib3RoIGluIGFzY2Vu ZGluZyBvcmRlci4gICovCi0rCi0rc3RhdGljIGludAotK2luZm9fYXV0b19sb2FkX2xpYnRocmVh ZF9kYl9jb21wYXJlIChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0rewotKyAgc3Ry dWN0IHRocmVhZF9kYl9pbmZvICphID0gKihzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKiopIGFwOwot KyAgc3RydWN0IHRocmVhZF9kYl9pbmZvICpiID0gKihzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKiop IGJwOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHJldHZhbCA9IHN0cmNtcCAoYS0+ZmlsZW5hbWUs IGItPmZpbGVuYW1lKTsKLSsgIGlmIChyZXR2YWwpCi0rICAgIHJldHVybiByZXR2YWw7Ci0rCi0r ICByZXR1cm4gKGEtPnBpZCA+IGItPnBpZCkgLSAoYS0+cGlkIC0gYi0+cGlkKTsKLSt9Ci0rCi0r LyogSW1wbGVtZW50ICdpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGInLiAgKi8KLSsKLStzdGF0 aWMgdm9pZAotK2luZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYiAoY2hhciAqYXJncywgaW50IGZy b21fdHR5KQotK3sKLSsgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKLSsg IGNvbnN0IGNoYXIgKmNzID0gYXJncyA/IGFyZ3MgOiAiIjsKLSsgIHN0cnVjdCB0aHJlYWRfZGJf aW5mbyAqaW5mbywgKiphcnJheTsKLSsgIHVuc2lnbmVkIGluZm9fY291bnQsIHVuaXF1ZV9maWxl bmFtZXM7Ci0rICBzaXplX3QgbWF4X2ZpbGVuYW1lX2xlbiwgbWF4X3BpZHNfbGVuLCBwaWRzX2xl bjsKLSsgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotKyAgY2hhciAqcGlkczsKLSsgIGludCBp OwotKwotKyAgd2hpbGUgKGlzc3BhY2UgKCpjcykpCi0rICAgIGNzKys7Ci0rICBpZiAoKmNzKQot KyAgICBlcnJvciAoXygiJ2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYicgZG9lcyBub3QgYWNj ZXB0IGFueSBwYXJhbWV0ZXJzIikpOwotKwotKyAgaW5mb19jb3VudCA9IDA7Ci0rICBmb3IgKGlu Zm8gPSB0aHJlYWRfZGJfbGlzdDsgaW5mbzsgaW5mbyA9IGluZm8tPm5leHQpCi0rICAgIGlmIChp bmZvLT5maWxlbmFtZSAhPSBOVUxMKQotKyAgICAgIGluZm9fY291bnQrKzsKLSsKLSsgIGFycmF5 ID0geG1hbGxvYyAoc2l6ZW9mICgqYXJyYXkpICogaW5mb19jb3VudCk7Ci0rICBiYWNrX3RvID0g bWFrZV9jbGVhbnVwICh4ZnJlZSwgYXJyYXkpOwotKwotKyAgaW5mb19jb3VudCA9IDA7Ci0rICBm b3IgKGluZm8gPSB0aHJlYWRfZGJfbGlzdDsgaW5mbzsgaW5mbyA9IGluZm8tPm5leHQpCi0rICAg IGlmIChpbmZvLT5maWxlbmFtZSAhPSBOVUxMKQotKyAgICAgIGFycmF5W2luZm9fY291bnQrK10g PSBpbmZvOwotKwotKyAgLyogU29ydCBBUlJBWSBieSBmaWxlbmFtZXMgYW5kIFBJRHMuICAqLwot KwotKyAgcXNvcnQgKGFycmF5LCBpbmZvX2NvdW50LCBzaXplb2YgKCphcnJheSksCi0rCSBpbmZv X2F1dG9fbG9hZF9saWJ0aHJlYWRfZGJfY29tcGFyZSk7Ci0rCi0rICAvKiBDYWxjdWxhdGUgdGhl IG51bWJlciBvZiB1bmlxdWUgZmlsZW5hbWVzIChyb3dzKSBhbmQgdGhlIG1heGltdW0gc3RyaW5n Ci0rICAgICBsZW5ndGggb2YgUElEcyBsaXN0IGZvciB0aGUgdW5pcXVlIGZpbGVuYW1lcyAoY29s dW1ucykuICAqLwotKwotKyAgdW5pcXVlX2ZpbGVuYW1lcyA9IDA7Ci0rICBtYXhfZmlsZW5hbWVf bGVuID0gMDsKLSsgIG1heF9waWRzX2xlbiA9IDA7Ci0rICBwaWRzX2xlbiA9IDA7Ci0rICBmb3Ig KGkgPSAwOyBpIDwgaW5mb19jb3VudDsgaSsrKQotKyAgICB7Ci0rICAgICAgaW50IHBpZCA9IGFy cmF5W2ldLT5waWQ7Ci0rICAgICAgc2l6ZV90IHRoaXNfcGlkX2xlbjsKLSsKLSsgICAgICBmb3Ig KHRoaXNfcGlkX2xlbiA9IDA7IHBpZCAhPSAwOyBwaWQgLz0gMTApCi0rCXRoaXNfcGlkX2xlbisr OwotKwotKyAgICAgIGlmIChpID09IDAgfHwgc3RyY21wIChhcnJheVtpIC0gMV0tPmZpbGVuYW1l LCBhcnJheVtpXS0+ZmlsZW5hbWUpICE9IDApCi0rCXsKLSsJICB1bmlxdWVfZmlsZW5hbWVzKys7 Ci0rCSAgbWF4X2ZpbGVuYW1lX2xlbiA9IG1heCAobWF4X2ZpbGVuYW1lX2xlbiwKLSsJCQkJICBz dHJsZW4gKGFycmF5W2ldLT5maWxlbmFtZSkpOwotKwotKwkgIGlmIChpID4gMCkKLSsJICAgIHsK LSsJICAgICAgcGlkc19sZW4gLT0gc3RybGVuICgiLCAiKTsKLSsJICAgICAgbWF4X3BpZHNfbGVu ID0gbWF4IChtYXhfcGlkc19sZW4sIHBpZHNfbGVuKTsKLSsJICAgIH0KLSsJICBwaWRzX2xlbiA9 IDA7Ci0rCX0KLSsgICAgICBwaWRzX2xlbiArPSB0aGlzX3BpZF9sZW4gKyBzdHJsZW4gKCIsICIp OwotKyAgICB9Ci0rICBpZiAoaSkKLSsgICAgewotKyAgICAgIHBpZHNfbGVuIC09IHN0cmxlbiAo IiwgIik7Ci0rICAgICAgbWF4X3BpZHNfbGVuID0gbWF4IChtYXhfcGlkc19sZW4sIHBpZHNfbGVu KTsKLSsgICAgfQotKwotKyAgLyogVGFibGUgaGVhZGVyIHNoaWZ0ZWQgcmlnaHQgYnkgcHJlY2Vk aW5nICJsaWJ0aHJlYWQtZGI6ICAiIHdvdWxkIG5vdCBtYXRjaAotKyAgICAgaXRzIGNvbHVtbnMu ICAqLwotKyAgaWYgKGluZm9fY291bnQgPiAwICYmIGFyZ3MgPT0gYXV0b19sb2FkX2luZm9fc2Ny aXB0c19wYXR0ZXJuX25sKQotKyAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotKwotKyAg bWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAyLCB1bmlxdWVfZmls ZW5hbWVzLAotKwkJCQkgICAgICAgIkxpbnV4VGhyZWFkRGJUYWJsZSIpOwotKwotKyAgdWlfb3V0 X3RhYmxlX2hlYWRlciAodWlvdXQsIG1heF9maWxlbmFtZV9sZW4sIHVpX2xlZnQsICJmaWxlbmFt ZSIsCi0rCQkgICAgICAgIkZpbGVuYW1lIik7Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91 dCwgcGlkc19sZW4sIHVpX2xlZnQsICJQSURzIiwgIlBpZHMiKTsKLSsgIHVpX291dF90YWJsZV9i b2R5ICh1aW91dCk7Ci0rCi0rICBwaWRzID0geG1hbGxvYyAobWF4X3BpZHNfbGVuICsgMSk7Ci0r ICBtYWtlX2NsZWFudXAgKHhmcmVlLCBwaWRzKTsKLSsKLSsgIC8qIE5vdGUgSSBpcyBpbmNyZW1l bnRlZCBpbnNpZGUgdGhlIGN5Y2xlLCBub3QgYXQgaXRzIGVuZC4gICovCi0rICBmb3IgKGkgPSAw OyBpIDwgaW5mb19jb3VudDspCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgY2xlYW51cCAqY2hhaW4g PSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwotKyAg ICAgIGNoYXIgKnBpZHNfZW5kOwotKwotKyAgICAgIGluZm8gPSBhcnJheVtpXTsKLSsgICAgICB1 aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImZpbGVuYW1lIiwgaW5mby0+ZmlsZW5hbWUpOwot KyAgICAgIHBpZHNfZW5kID0gcGlkczsKLSsKLSsgICAgICB3aGlsZSAoaSA8IGluZm9fY291bnQg JiYgc3RyY21wIChpbmZvLT5maWxlbmFtZSwgYXJyYXlbaV0tPmZpbGVuYW1lKSA9PSAwKQotKwl7 Ci0rCSAgaWYgKHBpZHNfZW5kICE9IHBpZHMpCi0rCSAgICB7Ci0rCSAgICAgICpwaWRzX2VuZCsr ID0gJywnOwotKwkgICAgICAqcGlkc19lbmQrKyA9ICcgJzsKLSsJICAgIH0KLSsJICBwaWRzX2Vu ZCArPSB4c25wcmludGYgKHBpZHNfZW5kLCAmcGlkc1ttYXhfcGlkc19sZW4gKyAxXSAtIHBpZHNf ZW5kLAotKwkJCQkgIiV1IiwgYXJyYXlbaV0tPnBpZCk7Ci0rCSAgZ2RiX2Fzc2VydCAocGlkc19l bmQgPCAmcGlkc1ttYXhfcGlkc19sZW4gKyAxXSk7Ci0rCi0rCSAgaSsrOwotKwl9Ci0rICAgICAg KnBpZHNfZW5kID0gJ1wwJzsKLSsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwg InBpZHMiLCBwaWRzKTsKLSsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotKyAg ICAgIGRvX2NsZWFudXBzIChjaGFpbik7Ci0rICAgIH0KLSsKLSsgIGRvX2NsZWFudXBzIChiYWNr X3RvKTsKLSsKLSsgIGlmIChpbmZvX2NvdW50ID09IDApCi0rICAgIHVpX291dF9tZXNzYWdlICh1 aW91dCwgMCwgXygiTm8gYXV0by1sb2FkZWQgbGlidGhyZWFkLWRiLlxuIikpOwotK30KLSsKLSBz dGF0aWMgdm9pZAotIGluaXRfdGhyZWFkX2RiX29wcyAodm9pZCkKLSB7Ci1AQCAtMTg2Myw2ICsy MDQwLDIzIEBAIFdoZW4gbm9uLXplcm8sIGxpYnRocmVhZC1kYiBkZWJ1Z2dpbmcgaXMKLSAJCQkg ICAgc2hvd19saWJ0aHJlYWRfZGJfZGVidWcsCi0gCQkJICAgICZzZXRkZWJ1Z2xpc3QsICZzaG93 ZGVidWdsaXN0KTsKLSAKLSsgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgibGlidGhyZWFkLWRi IiwgY2xhc3Nfc3VwcG9ydCwKLSsJCQkgICAmYXV0b19sb2FkX3RocmVhZF9kYiwgXygiXAotK0Vu YWJsZSBvciBkaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJl YWRfZGIuIiksIF8oIlwKLStTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIGluZmVyaW9yIHNwZWNp ZmljIGxpYnRocmVhZF9kYiBpcyBlbmFibGVkLiIpLCBfKCJcCi0rSWYgZW5hYmxlZCwgbGlidGhy ZWFkX2RiIHdpbGwgYmUgc2VhcmNoZWQgaW4gJ3NldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGgn XG5cCi0rbG9jYXRpb25zIHRvIGxvYWQgbGlidGhyZWFkX2RiIGNvbXBhdGlibGUgd2l0aCB0aGUg aW5mZXJpb3IuXG5cCi0rU3RhbmRhcmQgc3lzdGVtIGxpYnRocmVhZF9kYiBzdGlsbCBnZXRzIGxv YWRlZCBldmVuIHdpdGggdGhpcyBvcHRpb24gb2ZmLlxuXAotK1RoaXMgb3B0aW9ucyBoYXMgc2Vj dXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAotKwkJCSAgIE5V TEwsIHNob3dfYXV0b19sb2FkX3RocmVhZF9kYiwKLSsJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxp c3RfZ2V0ICgpLAotKwkJCSAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsg IGFkZF9jbWQgKCJsaWJ0aHJlYWQtZGIiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9saWJ0 aHJlYWRfZGIsCi0rCSAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGxvYWRlZCBpbmZlcmlvciBzcGVj aWZpYyBsaWJ0aHJlYWRfZGIuXG5cCi0rVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1k YiIpLAotKwkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0rCi0gICAvKiBBZGQg b3Vyc2VsdmVzIHRvIG9iamZpbGUgZXZlbnQgY2hhaW4uICAqLwotICAgb2JzZXJ2ZXJfYXR0YWNo X25ld19vYmpmaWxlICh0aHJlYWRfZGJfbmV3X29iamZpbGUpOwotIAotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDQ6MjYuOTU3NDM3NTAzICswMjAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU3 MDc5Nzc3ICswMjAwCi1AQCAtOTQ1LDggKzk0NSw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRh dGEpCi0gICAvKiBTa2lwIGF1dG8tbG9hZGluZyBzZWN0aW9uLXNwZWNpZmllZCBzY3JpcHRzIHVu dGlsIHdlJ3ZlIHNvdXJjZWQKLSAgICAgIGxvY2FsX2dkYmluaXQgKHdoaWNoIGlzIG9mdGVuIHVz ZWQgdG8gYXVnbWVudCB0aGUgc291cmNlIHNlYXJjaAotICAgICAgcGF0aCkuICAqLwotLSAgc2F2 ZV9hdXRvX2xvYWQgPSBnZGJweV9nbG9iYWxfYXV0b19sb2FkOwotLSAgZ2RicHlfZ2xvYmFsX2F1 dG9fbG9hZCA9IDA7Ci0rICBzYXZlX2F1dG9fbG9hZCA9IGdsb2JhbF9hdXRvX2xvYWQ7Ci0rICBn bG9iYWxfYXV0b19sb2FkID0gMDsKLSAKLSAgIGlmIChleGVjYXJnICE9IE5VTEwKLSAgICAgICAm JiBzeW1hcmcgIT0gTlVMTAotQEAgLTEwMjIsMTQgKzEwMjIsMjQgQEAgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKLSAKLSAgIC8qIFJlYWQgdGhlIC5nZGJpbml0IGZpbGUgaW4gdGhlIGN1cnJl bnQgZGlyZWN0b3J5LCAqaWYqIGl0IGlzbid0Ci0gICAgICB0aGUgc2FtZSBhcyB0aGUgJEhPTUUv LmdkYmluaXQgZmlsZSAoaXQgc2hvdWxkIGV4aXN0LCBhbHNvKS4gICovCi0tICBpZiAobG9jYWxf Z2RiaW5pdCAmJiAhaW5oaWJpdF9nZGJpbml0KQotLSAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAo c291cmNlX3NjcmlwdCwgbG9jYWxfZ2RiaW5pdCwgMCwgUkVUVVJOX01BU0tfQUxMKTsKLSsgIGlm IChsb2NhbF9nZGJpbml0KQotKyAgICB7Ci0rICAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRf cGF0aG5hbWUgPSBnZGJfcmVhbHBhdGggKGxvY2FsX2dkYmluaXQpOwotKwotKyAgICAgIGlmICgh aW5oaWJpdF9nZGJpbml0ICYmIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0KQotKwl7Ci0rCSAgYXV0 b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkID0gMTsKLSsKLSsJICBjYXRjaF9jb21tYW5kX2Vy cm9ycyAoc291cmNlX3NjcmlwdCwgbG9jYWxfZ2RiaW5pdCwgMCwKLSsJCQkJUkVUVVJOX01BU0tf QUxMKTsKLSsJfQotKyAgICB9Ci0gCi0gICAvKiBOb3cgdGhhdCBhbGwgLmdkYmluaXQncyBoYXZl IGJlZW4gcmVhZCBhbmQgYWxsIC1kIG9wdGlvbnMgaGF2ZSBiZWVuCi0gICAgICBwcm9jZXNzZWQs IHdlIGNhbiByZWFkIGFueSBzY3JpcHRzIG1lbnRpb25lZCBpbiBTWU1BUkcuCi0gICAgICBXZSB3 YWl0IHVudGlsIG5vdyBiZWNhdXNlIGl0IGlzIGNvbW1vbiB0byBhZGQgdG8gdGhlIHNvdXJjZSBz ZWFyY2gKLSAgICAgIHBhdGggaW4gbG9jYWxfZ2RiaW5pdC4gICovCi0tICBnZGJweV9nbG9iYWxf YXV0b19sb2FkID0gc2F2ZV9hdXRvX2xvYWQ7Ci0rICBnbG9iYWxfYXV0b19sb2FkID0gc2F2ZV9h dXRvX2xvYWQ7Ci0gICBBTExfT0JKRklMRVMgKG9iamZpbGUpCi0gICAgIGxvYWRfYXV0b19zY3Jp cHRzX2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKLSAKLUBAIC0xMTk2LDcgKzEyMDYsNyBAQCBBdCBz dGFydHVwLCBHREIgcmVhZHMgdGhlIGZvbGxvd2luZyBpbml0Ci0gIiksIGhvbWVfZ2RiaW5pdCk7 Ci0gICBpZiAobG9jYWxfZ2RiaW5pdCkKLSAgICAgZnByaW50Zl91bmZpbHRlcmVkIChzdHJlYW0s IF8oIlwKLS0gICAqIGxvY2FsIGluaXQgZmlsZTogLi8lc1xuXAotKyAgICogbG9jYWwgaW5pdCBm aWxlIChzZWUgYWxzbyAnc2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Jyk6IC4vJXNcblwKLSAi KSwgbG9jYWxfZ2RiaW5pdCk7Ci0gICBmcHV0c191bmZpbHRlcmVkIChfKCJcblwKLSBGb3IgbW9y ZSBpbmZvcm1hdGlvbiwgdHlwZSBcImhlbHBcIiBmcm9tIHdpdGhpbiBHREIsIG9yIGNvbnN1bHQg dGhlXG5cCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMi0wNC0xOCAwMDo0NDoyNi45Mjg0Mzc1NzcgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQg KzAyMDAKLUBAIC0xMDM0LDYgKzEwMzQsNyBAQCBZb3UgY2FuIHJ1biBAdmFsdWV7R0RCTn0gaW4g dmFyaW91cyBhbHRlCi0gYmF0Y2ggbW9kZSBvciBxdWlldCBtb2RlLgotIAotIEB0YWJsZSBAY29k ZQotK0BhbmNob3J7LW54fQotIEBpdGVtIC1ueAotIEBpdGVteCAtbgotIEBjaW5kZXggQGNvZGV7 LS1ueH0KLUBAIC0xMjY1LDYgKzEyNjYsNyBAQCBIZXJlJ3MgdGhlIGRlc2NyaXB0aW9uIG9mIHdo YXQgQHZhbHVle0dECi0gU2V0cyB1cCB0aGUgY29tbWFuZCBpbnRlcnByZXRlciBhcyBzcGVjaWZp ZWQgYnkgdGhlIGNvbW1hbmQgbGluZQotIChAcHhyZWZ7TW9kZSBPcHRpb25zLCBpbnRlcnByZXRl cn0pLgotIAotK0BhbmNob3J7T3B0aW9uIC1pbml0LWV2YWwtY29tbWFuZH0KLSBAaXRlbQotIEV4 ZWN1dGVzIGNvbW1hbmRzIGFuZCBjb21tYW5kIGZpbGVzIHNwZWNpZmllZCBieSB0aGUgQHNhbXB7 LWlleH0gYW5kCi0gQHNhbXB7LWl4fSBvcHRpb25zIGluIHRoZWlyIHNwZWNpZmllZCBvcmRlci4g IFVzdWFsbHkgeW91IHNob3VsZCB1c2UgdGhlCi1AQCAtMTI3OSw2ICsxMjgxLDcgQEAgdXNlZCB3 aGVuIGJ1aWxkaW5nIEB2YWx1ZXtHREJOfTsgQHB4cmVmewotICAsU3lzdGVtLXdpZGUgY29uZmln dXJhdGlvbiBhbmQgc2V0dGluZ3N9KSBhbmQgZXhlY3V0ZXMgYWxsIHRoZSBjb21tYW5kcyBpbgot IHRoYXQgZmlsZS4KLSAKLStAYW5jaG9ye0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0KLSBAaXRl bQotIFJlYWRzIHRoZSBpbml0IGZpbGUgKGlmIGFueSkgaW4geW91ciBob21lIGRpcmVjdG9yeUBm b290bm90ZXtPbgotIERPUy9XaW5kb3dzIHN5c3RlbXMsIHRoZSBob21lIGRpcmVjdG9yeSBpcyB0 aGUgb25lIHBvaW50ZWQgdG8gYnkgdGhlCi1AQCAtMTI4OCw5ICsxMjkxLDEyIEBAIHRoYXQgZmls ZS4KLSBAaXRlbQotIFByb2Nlc3NlcyBjb21tYW5kIGxpbmUgb3B0aW9ucyBhbmQgb3BlcmFuZHMu Ci0gCi0rQGFuY2hvcntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5IGR1cmluZyBT dGFydHVwfQotIEBpdGVtCi0gUmVhZHMgYW5kIGV4ZWN1dGVzIHRoZSBjb21tYW5kcyBmcm9tIGlu aXQgZmlsZSAoaWYgYW55KSBpbiB0aGUgY3VycmVudAotLXdvcmtpbmcgZGlyZWN0b3J5LiAgVGhp cyBpcyBvbmx5IGRvbmUgaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzCi0rd29ya2luZyBkaXJl Y3RvcnkgYXMgbG9uZyBhcyBAc2FtcHtzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9IGlzIHNl dCB0bwotK0BzYW1we29ufSAoQHB4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rv cnl9KS4KLStUaGlzIGlzIG9ubHkgZG9uZSBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMKLSBk aWZmZXJlbnQgZnJvbSB5b3VyIGhvbWUgZGlyZWN0b3J5LiAgVGh1cywgeW91IGNhbiBoYXZlIG1v cmUgdGhhbiBvbmUKLSBpbml0IGZpbGUsIG9uZSBnZW5lcmljIGluIHlvdXIgaG9tZSBkaXJlY3Rv cnksIGFuZCBhbm90aGVyLCBzcGVjaWZpYwotIHRvIHRoZSBwcm9ncmFtIHlvdSBhcmUgZGVidWdn aW5nLCBpbiB0aGUgZGlyZWN0b3J5IHdoZXJlIHlvdSBpbnZva2UKLUBAIC0xMzA2LDcgKzEzMTIs NyBAQCBJZiB5b3Ugd2lzaCB0byBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcKLSB5b3UgbXVzdCBk byBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nOgotIAotIEBzbWFsbGV4YW1wbGUKLS0kIGdk YiAtaWV4ICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KLSskIGdkYiAtaWV4 ICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0gQGVuZCBzbWFs bGV4YW1wbGUKLSAKLSBPcHRpb24gQHNhbXB7LWV4fSBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgdGhl IGF1dG8tbG9hZGluZyBpcyB0aGVuIHR1cm5lZAotQEAgLTI4OTEsNiArMjg5Nyw3IEBAIHByb2dy YW1zIHdpdGggbXVsdGlwbGUgdGhyZWFkcy4KLSBAeHJlZntTZXQgV2F0Y2hwb2ludHMsLFNldHRp bmcgV2F0Y2hwb2ludHN9LCBmb3IgaW5mb3JtYXRpb24gYWJvdXQKLSB3YXRjaHBvaW50cyBpbiBw cm9ncmFtcyB3aXRoIG11bHRpcGxlIHRocmVhZHMuCi0gCi0rQGFuY2hvcntzZXQgbGlidGhyZWFk LWRiLXNlYXJjaC1wYXRofQotIEB0YWJsZSBAY29kZQotIEBraW5kZXggc2V0IGxpYnRocmVhZC1k Yi1zZWFyY2gtcGF0aAotIEBjaW5kZXggc2VhcmNoIHBhdGggZm9yIEBjb2Rle2xpYnRocmVhZF9k Yn0KLUBAIC0yOTA1LDExICsyOTEyLDE1IEBAIG1hY3JvLgotIE9uIEBzY3tnbnV9L0xpbnV4IGFu ZCBTb2xhcmlzIHN5c3RlbXMsIEB2YWx1ZXtHREJOfSB1c2VzIGEgYGBoZWxwZXInJwotIEBjb2Rl e2xpYnRocmVhZF9kYn0gbGlicmFyeSB0byBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhyZWFk cyBpbiB0aGUKLSBpbmZlcmlvciBwcm9jZXNzLiAgQHZhbHVle0dEQk59IHdpbGwgdXNlIEBzYW1w e2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KLS10byBmaW5kIEBjb2Rle2xpYnRocmVhZF9kYn0u Ci0rdG8gZmluZCBAY29kZXtsaWJ0aHJlYWRfZGJ9LiAgQHZhbHVle0dEQk59IGFsc28gY29uc3Vs dHMgZmlyc3QgaWYgaW5mZXJpb3IKLStzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkg bG9hZGluZyBpcyBlbmFibGVkCi0rYnkgQHNhbXB7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9 IChAcHhyZWZ7bGlidGhyZWFkX2RiLnNvLjEgZmlsZX0pLgotIAotIEEgc3BlY2lhbCBlbnRyeSBA c2FtcHskc2Rpcn0gZm9yIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KLSByZWZlcnMg dG8gdGhlIGRlZmF1bHQgc3lzdGVtIGRpcmVjdG9yaWVzIHRoYXQgYXJlCi0tbm9ybWFsbHkgc2Vh cmNoZWQgZm9yIGxvYWRpbmcgc2hhcmVkIGxpYnJhcmllcy4KLStub3JtYWxseSBzZWFyY2hlZCBm b3IgbG9hZGluZyBzaGFyZWQgbGlicmFyaWVzLiAgVGhlIEBzYW1weyRzZGlyfSBlbnRyeQotK2lz IHRoZSBvbmx5IGtpbmQgbm90IG5lZWRpbmcgdG8gYmUgZW5hYmxlZCBieSBAc2FtcHtzZXQgYXV0 by1sb2FkIGxpYnRocmVhZC1kYn0KLSsoQHB4cmVme2xpYnRocmVhZF9kYi5zby4xIGZpbGV9KS4K LSAKLSBBIHNwZWNpYWwgZW50cnkgQHNhbXB7JHBkaXJ9IGZvciBAc2FtcHtsaWJ0aHJlYWQtZGIt c2VhcmNoLXBhdGh9Ci0gcmVmZXJzIHRvIHRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCBAY29kZXts aWJwdGhyZWFkfQotQEAgLTIwMzIwLDYgKzIwMzMxLDcgQEAgZGVzY3JpYmVkIGhlcmUuCi0gKiBT Y3JlZW4gU2l6ZTo6ICAgICAgICAgICAgICAgICBTY3JlZW4gc2l6ZQotICogTnVtYmVyczo6ICAg ICAgICAgICAgICAgICAgICAgTnVtYmVycwotICogQUJJOjogICAgICAgICAgICAgICAgICAgICAg ICAgQ29uZmlndXJpbmcgdGhlIGN1cnJlbnQgQUJJCi0rKiBBdXRvLWxvYWRpbmc6OiAgICAgICAg ICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgYXNzb2NpYXRlZCBmaWxlcwotICogTWVzc2Fn ZXMvV2FybmluZ3M6OiAgICAgICAgICAgT3B0aW9uYWwgd2FybmluZ3MgYW5kIG1lc3NhZ2VzCi0g KiBEZWJ1Z2dpbmcgT3V0cHV0OjogICAgICAgICAgICBPcHRpb25hbCBtZXNzYWdlcyBhYm91dCBp bnRlcm5hbCBoYXBwZW5pbmdzCi0gKiBPdGhlciBNaXNjIFNldHRpbmdzOjogICAgICAgICBPdGhl ciBNaXNjZWxsYW5lb3VzIFNldHRpbmdzCi1AQCAtMjA3NDUsNiArMjA3NTcsMjI3IEBAIFdpdGgg bm8gYXJndW1lbnQsIHNob3cgdGhlIGxpc3Qgb2Ygc3VwcG8KLSBTZXQgdGhlIGN1cnJlbnQgQ0B0 eysrfSBBQkkgdG8gQHZhcnthYml9LCBvciByZXR1cm4gdG8gYXV0b21hdGljIGRldGVjdGlvbi4K LSBAZW5kIHRhYmxlCi0gCi0rQG5vZGUgQXV0by1sb2FkaW5nCi0rQHNlY3Rpb24gQXV0b21hdGlj YWxseSBsb2FkaW5nIGFzc29jaWF0ZWQgZmlsZXMKLStAY2luZGV4IGF1dG8tbG9hZGluZwotKwot K0B2YWx1ZXtHREJOfSBzb21ldGltZXMgcmVhZHMgZmlsZXMgd2l0aCBjb21tYW5kcyBhbmQgc2V0 dGluZ3MgYXV0b21hdGljYWxseSwKLSt3aXRob3V0IGJlaW5nIGV4cGxpY2l0bHkgdG9sZCBzbyBi eSB0aGUgdXNlci4gIFdlIGNhbGwgdGhpcyBmZWF0dXJlCi0rQGRmbnthdXRvLWxvYWRpbmd9LiAg V2hpbGUgYXV0by1sb2FkaW5nIGlzIHVzZWZ1bCBmb3IgYXV0b21hdGljYWxseSBhZGFwdGluZwot K0B2YWx1ZXtHREJOfSB0byB0aGUgbmVlZHMgb2YgeW91ciBwcm9qZWN0LCBpdCBjYW4gc29tZXRp bWVzIHByb2R1Y2UgdW5leHBlY3RlZAotK3Jlc3VsdHMgb3IgaW50cm9kdWNlIHNlY3VyaXR5IHJp c2tzIChlLmcuLCBpZiB0aGUgZmlsZSBjb21lcyBmcm9tIHVudHJ1c3RlZAotK3NvdXJjZXMpLgot KwotK0ZvciB0aGVzZSByZWFzb25zLCBAdmFsdWV7R0RCTn0gaW5jbHVkZXMgY29tbWFuZHMgYW5k IG9wdGlvbnMgdG8gbGV0IHlvdQotK2NvbnRyb2wgd2hlbiB0byBhdXRvLWxvYWQgZmlsZXMgYW5k IHdoaWNoIGZpbGVzIHNob3VsZCBiZSBhdXRvLWxvYWRlZC4KLSsKLStAdGFibGUgQGNvZGUKLStA YW5jaG9ye3NldCBhdXRvLWxvYWQgb2ZmfQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBvZmYKLStA aXRlbSBzZXQgYXV0by1sb2FkIG9mZgotK0dsb2JhbGx5IGRpc2FibGUgbG9hZGluZyBvZiBhbGwg YXV0by1sb2FkZWQgZmlsZXMuCi0rWW91IG1heSB3YW50IHRvIHVzZSB0aGlzIGNvbW1hbmQgd2l0 aCB0aGUgQHNhbXB7LWlleH0gb3B0aW9uCi0rKEBweHJlZntPcHRpb24gLWluaXQtZXZhbC1jb21t YW5kfSkgc3VjaCBhczoKLStAc21hbGxleGFtcGxlCi0rJCBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0 by1sb2FkIG9mZiIgdW50cnVzdGVkLWV4ZWN1dGFibGUgY29yZWZpbGV9Ci0rQGVuZCBzbWFsbGV4 YW1wbGUKLSsKLStCZSBhd2FyZSB0aGF0IHN5c3RlbSBpbml0IGZpbGUgKEBweHJlZntTeXN0ZW0t d2lkZSBjb25maWd1cmF0aW9ufSkKLSthbmQgaW5pdCBmaWxlcyBmcm9tIHlvdXIgaG9tZSBkaXJl Y3RvcnkgKEBweHJlZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9KQotK3N0aWxsIGdldCByZWFk IChhcyB0aGV5IGNvbWUgZnJvbSBnZW5lcmFsbHkgdHJ1c3RlZCBkaXJlY3RvcmllcykuCi0rVG8g cHJldmVudCBAdmFsdWV7R0RCTn0gZnJvbSBhdXRvLWxvYWRpbmcgZXZlbiB0aG9zZSBpbml0IGZp bGVzLCB1c2UgdGhlCi0rQG9wdGlvbnstbnh9IG9wdGlvbiAoQHB4cmVme01vZGUgT3B0aW9uc30p LCBpbiBhZGRpdGlvbiB0bwotK0Bjb2Rle3NldCBhdXRvLWxvYWQgbm99LgotKwotK0BhbmNob3J7 c2hvdyBhdXRvLWxvYWR9Ci0rQGtpbmRleCBzaG93IGF1dG8tbG9hZAotK0BpdGVtIHNob3cgYXV0 by1sb2FkCi0rU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBlYWNoIHNwZWNpZmljIEBzYW1w e2F1dG8tbG9hZH0gZmlsZShzKSBpcyBlbmFibGVkCi0rb3IgZGlzYWJsZWQuCi0rCi0rQHNtYWxs ZXhhbXBsZQotKyhnZGIpIHNob3cgYXV0by1sb2FkCi0rZ2RiLXNjcmlwdHM6ICBBdXRvLWxvYWRp bmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlzIG9uLgotK2xpYnRo cmVhZC1kYjogIEF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIg aXMgb24uCi0rbG9jYWwtZ2RiaW5pdDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQg ZnJvbSBjdXJyZW50IGRpcmVjdG9yeSBpcyBvbi4KLStweXRob24tc2NyaXB0czogIEF1dG8tbG9h ZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBvbi4KLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK0Bh bmNob3J7aW5mbyBhdXRvLWxvYWR9Ci0rQGtpbmRleCBpbmZvIGF1dG8tbG9hZAotK0BpdGVtIGlu Zm8gYXV0by1sb2FkCi0rUHJpbnQgd2hldGhlciBlYWNoIHNwZWNpZmljIEBzYW1we2F1dG8tbG9h ZH0gZmlsZShzKSBoYXZlIGJlZW4gYXV0by1sb2FkZWQgb3IKLStub3QuCi0rCi0rQHNtYWxsZXhh bXBsZQotKyhnZGIpIGluZm8gYXV0by1sb2FkCi0rZ2RiLXNjcmlwdHM6Ci0rTG9hZGVkICBTY3Jp cHQKLStZZXMgICAgIC9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiCi0rbGlidGhyZWFkLWRiOiAg Tm8gYXV0by1sb2FkZWQgbGlidGhyZWFkLWRiLgotK2xvY2FsLWdkYmluaXQ6ICBMb2NhbCAuZ2Ri aW5pdCBmaWxlICIvaG9tZS91c2VyL2dkYi8uZ2RiaW5pdCIgaGFzIGJlZW4gbG9hZGVkLgotK3B5 dGhvbi1zY3JpcHRzOgotK0xvYWRlZCAgU2NyaXB0Ci0rWWVzICAgICAvaG9tZS91c2VyL2dkYi9n ZGItZ2RiLnB5Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLStAZW5kIHRhYmxlCi0rCi0rVGhlc2UgYXJl IHZhcmlvdXMga2luZHMgb2YgZmlsZXMgQHZhbHVle0dEQk59IGNhbiBhdXRvbWF0aWNhbGx5IGxv YWQ6Ci0rCi0rQGl0ZW1pemUgQGJ1bGxldAotK0BpdGVtCi0rQHhyZWZ7b2JqZmlsZS1nZGIucHkg ZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4K LStAaXRlbQotK0B4cmVme29iamZpbGUtZ2RiLmdkYiBmaWxlfSwgY29udHJvbGxlZCBieSBAcmVm e3NldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9LgotK0BpdGVtCi0rQHhyZWZ7ZG90ZGVidWdfZ2Ri X3NjcmlwdHMgc2VjdGlvbn0sCi0rY29udHJvbGxlZCBieSBAcmVme3NldCBhdXRvLWxvYWQgcHl0 aG9uLXNjcmlwdHN9LgotK0BpdGVtCi0rQHhyZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERp cmVjdG9yeX0sCi0rY29udHJvbGxlZCBieSBAcmVme3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dH0uCi0rQGl0ZW0KLStAeHJlZntsaWJ0aHJlYWRfZGIuc28uMSBmaWxlfSwgY29udHJvbGxlZCBi eSBAcmVme3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifS4KLStAZW5kIGl0ZW1pemUKLSsKLStU aGVzZSBhcmUgQHZhbHVle0dEQk59IGNvbnRyb2wgY29tbWFuZHMgZm9yIHRoZSBhdXRvLWxvYWRp bmc6Ci0rCi0rQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuNSAuNQotK0BpdGVtIEB4cmVm e3NldCBhdXRvLWxvYWQgb2ZmfS4KLStAdGFiIERpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5 LgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkfS4KLStAdGFiIFNob3cgc2V0dGluZyBvZiBh bGwga2luZHMgb2YgZmlsZXMuCi0rQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWR9LgotK0B0YWIg U2hvdyBzdGF0ZSBvZiBhbGwga2luZHMgb2YgZmlsZXMuCi0rQGl0ZW0gQHhyZWZ7c2V0IGF1dG8t bG9hZCBnZGItc2NyaXB0c30uCi0rQHRhYiBDb250cm9sIGZvciBAdmFsdWV7R0RCTn0gY29tbWFu ZCBzY3JpcHRzLgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KLStA dGFiIFNob3cgc2V0dGluZyBvZiBAdmFsdWV7R0RCTn0gY29tbWFuZCBzY3JpcHRzLgotK0BpdGVt IEB4cmVme2luZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KLStAdGFiIFNob3cgc3RhdGUgb2Yg QHZhbHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KLStAaXRlbSBAeHJlZntzZXQgYXV0by1sb2Fk IHB5dGhvbi1zY3JpcHRzfS4KLStAdGFiIENvbnRyb2wgZm9yIEB2YWx1ZXtHREJOfSBQeXRob24g c2NyaXB0cy4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCi0r QHRhYiBTaG93IHNldHRpbmcgb2YgQHZhbHVle0dEQk59IFB5dGhvbiBzY3JpcHRzLgotK0BpdGVt IEB4cmVme2luZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KLStAdGFiIFNob3cgc3RhdGUg b2YgQHZhbHVle0dEQk59IFB5dGhvbiBzY3JpcHRzLgotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxv YWQgbG9jYWwtZ2RiaW5pdH0uCi0rQHRhYiBDb250cm9sIGZvciBpbml0IGZpbGUgaW4gdGhlIGN1 cnJlbnQgZGlyZWN0b3J5LgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIGxvY2FsLWdkYmlu aXR9LgotK0B0YWIgU2hvdyBzZXR0aW5nIG9mIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJl Y3RvcnkuCi0rQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0uCi0rQHRh YiBTaG93IHN0YXRlIG9mIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0rQGl0 ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgotK0B0YWIgQ29udHJvbCBmb3Ig dGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5LgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIGxp YnRocmVhZC1kYn0uCi0rQHRhYiBTaG93IHNldHRpbmcgb2YgdGhyZWFkIGRlYnVnZ2luZyBsaWJy YXJ5LgotK0BpdGVtIEB4cmVme2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCi0rQHRhYiBT aG93IHN0YXRlIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLStAZW5kIG11bHRpdGFibGUK LSsKLStAbWVudQotKyogSW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeTo6IEBzYW1w e3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0rKiBsaWJ0aHJlYWRfZGIu c28uMSBmaWxlOjogICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbGli dGhyZWFkLWRifQotKyogb2JqZmlsZS1nZGIuZ2RiIGZpbGU6OiAgICAgICAgICAgICAgIEBzYW1w e3NldC9zaG93L2luZm8gYXV0by1sb2FkIGdkYi1zY3JpcHR9Ci0rQHhyZWZ7UHl0aG9uIEF1dG8t bG9hZGluZ30uCi0rQGVuZCBtZW51Ci0rCi0rQG5vZGUgSW5pdCBGaWxlIGluIHRoZSBDdXJyZW50 IERpcmVjdG9yeQotK0BzdWJzZWN0aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBpbml0IGZpbGUg aW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5Ci0rQGNpbmRleCBhdXRvLWxvYWRpbmcgaW5pdCBmaWxl IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQotKwotK0J5IGRlZmF1bHQsIEB2YWx1ZXtHREJOfSBy ZWFkcyBhbmQgZXhlY3V0ZXMgdGhlIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMKLStmcm9t IGluaXQgZmlsZSAoaWYgYW55KSBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwKLStz ZWUgQHJlZntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5IGR1cmluZyBTdGFydHVw fS4KLSsKLStAdGFibGUgQGNvZGUKLStAYW5jaG9ye3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dH0KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotK0BpdGVtIHNldCBhdXRv LWxvYWQgbG9jYWwtZ2RiaW5pdCBbb258b2ZmXQotK0VuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRv LWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcwotKyhAcHhyZWZ7U2VxdWVu Y2VzfSkgZm91bmQgaW4gaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSsKLStA YW5jaG9ye3Nob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0rQGtpbmRleCBzaG93IGF1dG8t bG9hZCBsb2NhbC1nZGJpbml0Ci0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAot K1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5k cyBmcm9tIGluaXQgZmlsZSBpbiB0aGUKLStjdXJyZW50IGRpcmVjdG9yeSBpcyBlbmFibGVkIG9y IGRpc2FibGVkLgotKwotK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KLStA a2luZGV4IGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKLStAaXRlbSBpbmZvIGF1dG8tbG9h ZCBsb2NhbC1nZGJpbml0Ci0rUHJpbnQgd2hldGhlciBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1h bmRzIGZyb20gaW5pdCBmaWxlIGluIHRoZQotK2N1cnJlbnQgZGlyZWN0b3J5IGhhdmUgYmVlbiBh dXRvLWxvYWRlZC4KLStAZW5kIHRhYmxlCi0rCi0rQG5vZGUgbGlidGhyZWFkX2RiLnNvLjEgZmls ZQotK0BzdWJzZWN0aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyB0aHJlYWQgZGVidWdnaW5nIGxp YnJhcnkKLStAY2luZGV4IGF1dG8tbG9hZGluZyBsaWJ0aHJlYWRfZGIuc28uMQotKwotK1RoaXMg ZmVhdHVyZSBpcyBjdXJyZW50bHkgcHJlc2VudCBvbmx5IG9uIEBzY3tnbnV9L0xpbnV4IG5hdGl2 ZSBob3N0cy4KLSsKLStAdmFsdWV7R0RCTn0gcmVhZHMgaW4gc29tZSBjYXNlcyB0aHJlYWQgZGVi dWdnaW5nIGxpYnJhcnkgZnJvbSBwbGFjZXMgc3BlY2lmaWMKLSt0byB0aGUgaW5mZXJpb3IgKEBw eHJlZntzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofSkuCi0rCi0rVGhlIHNwZWNpYWwgQHNh bXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofSBlbnRyeSBAc2FtcHskc2Rpcn0gaXMgcHJvY2Vz c2VkCi0rd2l0aG91dCBjaGVja2luZyB0aGlzIEBzYW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFk LWRifSBzd2l0Y2ggYXMgc3lzdGVtCi0rbGlicmFyaWVzIGhhdmUgdG8gYmUgdHJ1c3RlZCBpbiBn ZW5lcmFsLiAgSW4gYWxsIG90aGVyIGNhc2VzIG9mCi0rQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJj aC1wYXRofSBlbnRyaWVzIEB2YWx1ZXtHREJOfSBjaGVja3MgZmlyc3QgaWYgQHNhbXB7c2V0Ci0r YXV0by1sb2FkIGxpYnRocmVhZC1kYn0gaXMgZW5hYmxlZCBiZWZvcmUgdHJ5aW5nIHRvIG9wZW4g c3VjaCB0aHJlYWQgZGVidWdnaW5nCi0rbGlicmFyeS4KLSsKLStAdGFibGUgQGNvZGUKLStAYW5j aG9ye3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBs aWJ0aHJlYWQtZGIKLStAaXRlbSBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiBbb258b2ZmXQot K0VuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMg dGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5LgotKwotK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgbGli dGhyZWFkLWRifQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rQGl0ZW0g c2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBv ZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkgaXMKLStlbmFibGVk IG9yIGRpc2FibGVkLgotKwotK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQot K0BraW5kZXggaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rQGl0ZW0gaW5mbyBhdXRvLWxv YWQgbGlidGhyZWFkLWRiCi0rUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIGxvYWRlZCBpbmZlcmlvciBz cGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcmllcyBhbmQKLStmb3IgZWFjaCBzdWNoIGxp YnJhcnkgcHJpbnQgbGlzdCBvZiBpbmZlcmlvciBAdmFye3BpZH1zIHVzaW5nIGl0LgotK0BlbmQg dGFibGUKLSsKLStAbm9kZSBvYmpmaWxlLWdkYi5nZGIgZmlsZQotK0BzdWJzZWN0aW9uIFRoZSBA ZmlsZXtAdmFye29iamZpbGV9LWdkYi5nZGJ9IGZpbGUKLStAY2luZGV4IGF1dG8tbG9hZGluZyBA ZmlsZXtAdmFye29iamZpbGV9LWdkYi5nZGJ9Ci0rCi0rQHZhbHVle0dEQk59IHRyaWVzIHRvIGxv YWQgYW4gQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIuZ2RifSBmaWxlIGNvbnRhaW5pbmcKLStjYW5u ZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIChAcHhyZWZ7U2VxdWVuY2VzfSksIGFzIGxvbmcgYXMg QHNhbXB7c2V0Ci0rYXV0by1sb2FkIGdkYi1zY3JpcHRzfSBpcyBzZXQgdG8gQHNhbXB7b259Lgot KwotK0ZvciBtb3JlIGJhY2tncm91bmQgcmVmZXIgdG8gdGhlIHNpbWlsYXIgUHl0aG9uIHNjcmlw dHMgYXV0by1sb2FkaW5nCi0rZGVzY3JpcHRpb24gKEBweHJlZntvYmpmaWxlLWdkYi5weSBmaWxl fSkuCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRz fQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cwotK0BpdGVtIHNldCBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMgW29ufG9mZl0KLStFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2Fk aW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cy4KLSsKLStAYW5jaG9y e3Nob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzfQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgZ2Ri LXNjcmlwdHMKLStAaXRlbSBzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0cwotK1Nob3cgd2hldGhl ciBhdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlz IGVuYWJsZWQgb3IKLStkaXNhYmxlZC4KLSsKLStAYW5jaG9ye2luZm8gYXV0by1sb2FkIGdkYi1z Y3JpcHRzfQotK0BraW5kZXggaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKLStAY2luZGV4IHBy aW50IGxpc3Qgb2YgYXV0by1sb2FkZWQgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3Jp cHRzCi0rQGl0ZW0gaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgW0B2YXJ7cmVnZXhwfV0KLStQ cmludCB0aGUgbGlzdCBvZiBhbGwgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRz IHRoYXQgQHZhbHVle0dEQk59Ci0rYXV0by1sb2FkZWQuCi0rQGVuZCB0YWJsZQotKwotK0lmIEB2 YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMg c2NyaXB0cyB3aXRoCi0rbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCi0rCi0gQG5vZGUgTWVz c2FnZXMvV2FybmluZ3MKLSBAc2VjdGlvbiBPcHRpb25hbCBXYXJuaW5ncyBhbmQgTWVzc2FnZXMK LSAKLUBAIC0yMTYxNiw3ICsyMTg0OSw3IEBAIGF1dG9tYXRpY2FsbHkgaW1wb3J0ZWQgd2hlbiBA dmFsdWV7R0RCTn0KLSBAbWVudQotICogUHl0aG9uIENvbW1hbmRzOjogICAgICAgICAgICAgQWNj ZXNzaW5nIFB5dGhvbiBmcm9tIEB2YWx1ZXtHREJOfS4KLSAqIFB5dGhvbiBBUEk6OiAgICAgICAg ICAgICAgICAgIEFjY2Vzc2luZyBAdmFsdWV7R0RCTn0gZnJvbSBQeXRob24uCi0tKiBBdXRvLWxv YWRpbmc6OiAgICAgICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgUHl0aG9uIGNvZGUu Ci0rKiBQeXRob24gQXV0by1sb2FkaW5nOjogICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcg UHl0aG9uIGNvZGUuCi0gKiBQeXRob24gbW9kdWxlczo6ICAgICAgICAgICAgICBQeXRob24gbW9k dWxlcyBwcm92aWRlZCBieSBAdmFsdWV7R0RCTn0uCi0gQGVuZCBtZW51Ci0gCi1AQCAtMjI3OTks NyArMjMwMzIsNyBAQCBUaGlzIHByYWN0aWNlIHdpbGwgZW5hYmxlIEB2YWx1ZXtHREJOfSB0Ci0g eW91ciBwcmV0dHktcHJpbnRlcnMgYXQgdGhlIHNhbWUgdGltZSwgYmVjYXVzZSB0aGV5IHdpbGwg aGF2ZQotIGRpZmZlcmVudCBuYW1lcy4KLSAKLS1Zb3Ugc2hvdWxkIHdyaXRlIGF1dG8tbG9hZGVk IGNvZGUgKEBweHJlZntBdXRvLWxvYWRpbmd9KSBzdWNoIHRoYXQgaXQKLStZb3Ugc2hvdWxkIHdy aXRlIGF1dG8tbG9hZGVkIGNvZGUgKEBweHJlZntQeXRob24gQXV0by1sb2FkaW5nfSkgc3VjaCB0 aGF0IGl0Ci0gY2FuIGJlIGV2YWx1YXRlZCBtdWx0aXBsZSB0aW1lcyB3aXRob3V0IGNoYW5naW5n IGl0cyBtZWFuaW5nLiAgQW4KLSBpZGVhbCBhdXRvLWxvYWQgZmlsZSB3aWxsIGNvbnNpc3Qgc29s ZWx5IG9mIEBjb2Rle2ltcG9ydH1zIG9mIHlvdXIKLSBwcmludGVyIG1vZHVsZXMsIGZvbGxvd2Vk IGJ5IGEgY2FsbCB0byBhIHJlZ2lzdGVyIHByZXR0eS1wcmludGVycyB3aXRoCi1AQCAtMjM3NjAs NyArMjM5OTMsNyBAQCBUaGUgZm9sbG93aW5nIG9iamZpbGUtcmVsYXRlZCBmdW5jdGlvbnMKLSAK LSBAZmluZGV4IGdkYi5jdXJyZW50X29iamZpbGUKLSBAZGVmdW4gZ2RiLmN1cnJlbnRfb2JqZmls ZSAoKQotLVdoZW4gYXV0by1sb2FkaW5nIGEgUHl0aG9uIHNjcmlwdCAoQHB4cmVme0F1dG8tbG9h ZGluZ30pLCBAdmFsdWV7R0RCTn0KLStXaGVuIGF1dG8tbG9hZGluZyBhIFB5dGhvbiBzY3JpcHQg KEBweHJlZntQeXRob24gQXV0by1sb2FkaW5nfSksIEB2YWx1ZXtHREJOfQotIHNldHMgdGhlIGBg Y3VycmVudCBvYmpmaWxlJycgdG8gdGhlIGNvcnJlc3BvbmRpbmcgb2JqZmlsZS4gIFRoaXMKLSBm dW5jdGlvbiByZXR1cm5zIHRoZSBjdXJyZW50IG9iamZpbGUuICBJZiB0aGVyZSBpcyBubyBjdXJy ZW50IG9iamZpbGUsCi0gdGhpcyBmdW5jdGlvbiByZXR1cm5zIEBjb2Rle05vbmV9LgotQEAgLTI0 NjcxLDkgKzI0OTA0LDkgQEAgcmVzb2x2ZSB0aGlzIHRvIHRoZSBsYXp5IHN0cmluZydzIGNoYXJh YwotIHdyaXRhYmxlLgotIEBlbmQgZGVmdmFyCi0gCi0tQG5vZGUgQXV0by1sb2FkaW5nCi0tQHN1 YnNlY3Rpb24gQXV0by1sb2FkaW5nCi0tQGNpbmRleCBhdXRvLWxvYWRpbmcsIFB5dGhvbgotK0Bu b2RlIFB5dGhvbiBBdXRvLWxvYWRpbmcKLStAc3Vic2VjdGlvbiBQeXRob24gQXV0by1sb2FkaW5n Ci0rQGNpbmRleCBQeXRob24gYXV0by1sb2FkaW5nCi0gCi0gV2hlbiBhIG5ldyBvYmplY3QgZmls ZSBpcyByZWFkIChmb3IgZXhhbXBsZSwgZHVlIHRvIHRoZSBAY29kZXtmaWxlfQotIGNvbW1hbmQs IG9yIGJlY2F1c2UgdGhlIGluZmVyaW9yIGhhcyBsb2FkZWQgYSBzaGFyZWQgbGlicmFyeSksCi1A QCAtMjQ2OTMsMzIgKzI0OTI2LDM1IEBAIEF1dG8tbG9hZGluZyBjYW4gYmUgZW5hYmxlZCBvciBk aXNhYmxlZCwKLSBhbmQgdGhlIGxpc3Qgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBjYW4gYmUgcHJp bnRlZC4KLSAKLSBAdGFibGUgQGNvZGUKLS1Aa2luZGV4IHNldCBhdXRvLWxvYWQtc2NyaXB0cwot LUBpdGVtIHNldCBhdXRvLWxvYWQtc2NyaXB0cyBbeWVzfG5vXQotK0BhbmNob3J7c2V0IGF1dG8t bG9hZCBweXRob24tc2NyaXB0c30KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlw dHMKLStAaXRlbSBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtvbnxvZmZdCi0gRW5hYmxl IG9yIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4KLSAKLS1Aa2lu ZGV4IHNob3cgYXV0by1sb2FkLXNjcmlwdHMKLS1AaXRlbSBzaG93IGF1dG8tbG9hZC1zY3JpcHRz Ci0rQGFuY2hvcntzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30KLStAa2luZGV4IHNob3cg YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNj cmlwdHMKLSBTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIGVu YWJsZWQgb3IgZGlzYWJsZWQuCi0gCi0tQGtpbmRleCBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzCi0t QGNpbmRleCBwcmludCBsaXN0IG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMKLS1AaXRlbSBpbmZvIGF1 dG8tbG9hZC1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCi0tUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIHNj cmlwdHMgdGhhdCBAdmFsdWV7R0RCTn0gYXV0by1sb2FkZWQuCi0rQGFuY2hvcntpbmZvIGF1dG8t bG9hZCBweXRob24tc2NyaXB0c30KLStAa2luZGV4IGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3Jp cHRzCi0rQGNpbmRleCBwcmludCBsaXN0IG9mIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzCi0r QGl0ZW0gaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgW0B2YXJ7cmVnZXhwfV0KLStQcmlu dCB0aGUgbGlzdCBvZiBhbGwgUHl0aG9uIHNjcmlwdHMgdGhhdCBAdmFsdWV7R0RCTn0gYXV0by1s b2FkZWQuCi0gCi0tQWxzbyBwcmludGVkIGlzIHRoZSBsaXN0IG9mIHNjcmlwdHMgdGhhdCB3ZXJl IG1lbnRpb25lZCBpbgotK0Fsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBQeXRob24gc2NyaXB0 cyB0aGF0IHdlcmUgbWVudGlvbmVkIGluCi0gdGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30g c2VjdGlvbiBhbmQgd2VyZSBub3QgZm91bmQKLSAoQHB4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRz IHNlY3Rpb259KS4KLSBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHRoZWlyIG5hbWVzIGFyZSBub3Qg cHJpbnRlZCB3aGVuIEB2YWx1ZXtHREJOfQotIHRyaWVzIHRvIGxvYWQgdGhlbSBhbmQgZmFpbHMu ICBUaGVyZSBtYXkgYmUgbWFueSBvZiB0aGVtLCBhbmQgcHJpbnRpbmcKLSBhbiBlcnJvciBtZXNz YWdlIGZvciBlYWNoIG9uZSBpcyBwcm9ibGVtYXRpYy4KLSAKLS1JZiBAdmFye3JlZ2V4cH0gaXMg c3VwcGxpZWQgb25seSBzY3JpcHRzIHdpdGggbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCi0r SWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgUHl0aG9uIHNjcmlwdHMgd2l0aCBtYXRj aGluZyBuYW1lcyBhcmUgcHJpbnRlZC4KLSAKLSBFeGFtcGxlOgotIAotIEBzbWFsbGV4YW1wbGUK LS0oZ2RiKSBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzCi0rKGdkYikgaW5mbyBhdXRvLWxvYWQgcHl0 aG9uLXNjcmlwdHMKLSBMb2FkZWQgIFNjcmlwdAotIFllcyAgICAgcHktc2VjdGlvbi1zY3JpcHQu cHkKLSAgICAgICAgIGZ1bGwgbmFtZTogL3RtcC9weS1zZWN0aW9uLXNjcmlwdC5weQotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5j CTIwMTItMDQtMTggMDA6NDQ6MjYuOTU4NDM3NTAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5 Nzc0ICswMjAwCi1AQCAtMzEsMjkgKzMxLDU2IEBACi0gCi0gI2luY2x1ZGUgInB5dGhvbi1pbnRl cm5hbC5oIgotIAotLS8qIE5PVEU6IEl0J3MgdHJpdmlhbCB0byBhbHNvIHN1cHBvcnQgYXV0by1s b2FkaW5nIG5vcm1hbCBnZGIgc2NyaXB0cy4KLS0gICBUaGVyZSBoYXMgeWV0IHRvIGJlIGEgbmVl ZCBzbyBpdCdzIG5vdCBpbXBsZW1lbnRlZC4gICovCi0tCi0gLyogVGhlIHN1ZmZpeCBvZiBwZXIt b2JqZmlsZSBzY3JpcHRzIHRvIGF1dG8tbG9hZC4KLSAgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0g bG9hZHMgbGliZm9vLnNvLCBsb29rIGZvciBsaWJmb28tZ2RiLnB5LiAgKi8KLSAjZGVmaW5lIEdE QlBZX0FVVE9fRklMRV9OQU1FICItZ2RiLnB5IgotIAotLS8qIFRoZSBzZWN0aW9uIHRvIGxvb2sg Zm9yIHNjcmlwdHMgKGluIGZpbGUgZm9ybWF0cyB0aGF0IHN1cHBvcnQgc2VjdGlvbnMpLgotKy8q IFRoZSBzZWN0aW9uIHRvIGxvb2sgZm9yIFB5dGhvbiBhdXRvLWxvYWRlZCBzY3JpcHRzIChpbiBm aWxlIGZvcm1hdHMgdGhhdAotKyAgIHN1cHBvcnQgc2VjdGlvbnMpLgotICAgIEVhY2ggZW50cnkg aW4gdGhpcyBzZWN0aW9uIGlzIGEgYnl0ZSBvZiB2YWx1ZSAxLCBhbmQgdGhlbiB0aGUgbnVsLXRl cm1pbmF0ZWQKLSAgICBuYW1lIG9mIHRoZSBzY3JpcHQuICBUaGUgc2NyaXB0IG5hbWUgbWF5IGlu Y2x1ZGUgYSBkaXJlY3RvcnkuCi0gICAgVGhlIGxlYWRpbmcgYnl0ZSBpcyB0byBhbGxvdyB1cHdh cmQgY29tcGF0aWJsZSBleHRlbnNpb25zLiAgKi8KLSAjZGVmaW5lIEdEQlBZX0FVVE9fU0VDVElP Tl9OQU1FICIuZGVidWdfZ2RiX3NjcmlwdHMiCi0gCi0tLyogVXNlci1zZXR0YWJsZSBvcHRpb24g dG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nOgotLSAgIHNldCBhdXRvLWxvYWQtc2NyaXB0 cyBvbnxvZmYKLS0gICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lh dGVkIHNjcmlwdHMgd2hlbiBhbiBvYmpmaWxlCi0tICAgaXMgb3BlbmVkLCBmYWxzZSBvdGhlcndp c2UuCi0tICAgQXQgdGhlIG1vbWVudCwgdGhpcyBvbmx5IGFmZmVjdHMgcHl0aG9uIHNjcmlwdHMs IGJ1dCB0aGVyZSdzIG5vIHJlYXNvbgotLSAgIG9uZSBjb3VsZG4ndCBhbHNvIGhhdmUgb3RoZXIg a2luZHMgb2YgYXV0by1sb2FkZWQgc2NyaXB0cywgYW5kIHRoZXJlJ3MKLS0gICBubyByZWFzb24g dG8gaGF2ZSB0aGVtIGVhY2ggY29udHJvbGxlZCBieSBhIHNlcGFyYXRlIGZsYWcuCi0tICAgU28g d2UgZWxpZGUgInB5dGhvbiIgZnJvbSB0aGUgbmFtZSBoZXJlIGFuZCBpbiB0aGUgb3B0aW9uLgot LSAgIFRoZSBmYWN0IHRoYXQgaXQgbGl2ZXMgaGVyZSBpcyBqdXN0IGFuIGltcGxlbWVudGF0aW9u IGRldGFpbC4gICovCi0tc3RhdGljIGludCBhdXRvX2xvYWRfc2NyaXB0cyA9IDE7Ci0rLyogVXNl ci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nIG9mIFB5dGhv biBzY3JpcHRzOgotKyAgIHNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgb258b2ZmCi0rICAg VGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBQeXRob24gc2Ny aXB0cyB3aGVuIGFuCi0rICAgb2JqZmlsZSBpcyBvcGVuZWQsIGZhbHNlIG90aGVyd2lzZS4gICov Ci0rc3RhdGljIGludCBhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMgPSAxOwotKwotK3N0YXRpYyB2 b2lkIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAotKwkJCQkJCUZJTEUgKmZpbGUsCi0rCQkJCQkJY29uc3QgY2hhciAqZmlsZW5hbWUp OwotKwotKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRz IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRv X2xvYWRfcHl0aG9uX3NjcmlwdHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHks Ci0rCQkJICAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1 ZSkKLSt7Ci0rICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgUHl0 aG9uIHNjcmlwdHMgaXMgJXMuXG4iKSwgdmFsdWUpOwotK30KLSsKLSsvKiBEZWZpbml0aW9uIG9m IHNjcmlwdCBsYW5ndWFnZSBmb3IgUHl0aG9uIHNjcmlwdHMuICAqLwotKwotK3N0YXRpYyBjb25z dCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlIHNjcmlwdF9sYW5ndWFnZV9weXRob24KLSsgID0geyBH REJQWV9BVVRPX0ZJTEVfTkFNRSwgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSB9 OwotKwotKy8qIFdyYXBwZXIgb2Ygc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgZm9y IHNjcmlwdF9sYW5ndWFnZV9weXRob24uICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZ2RicHlfbG9h ZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUg KmZpbGUsCi0rCQkJCSAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSt7Ci0rICBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSsKLSsgIC8qIEFkZCB0aGlzIHNjcmlw dCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz IgotKyAgICAgY2FuIHByaW50IGl0LiAgKi8KLSsgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9h ZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsgIG1h eWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRf bGFuZ3VhZ2VfcHl0aG9uKTsKLSsKLSsgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxl IChvYmpmaWxlLCBmaWxlLCBmaWxlbmFtZSk7Ci0rfQotIAotIC8qIExvYWQgc2NyaXB0cyBzcGVj aWZpZWQgaW4gT0JKRklMRS4KLSAgICBTVEFSVCxFTkQgZGVsaW1pdCBhIGJ1ZmZlciBjb250YWlu aW5nIGEgbGlzdCBvZiBudWwtdGVybWluYXRlZAotQEAgLTEyMSw2ICsxNDgsMTcgQEAgc291cmNl X3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKgotIAkgIG1ha2VfY2xlYW51cF9mY2xv c2UgKHN0cmVhbSk7Ci0gCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKLSAJfQot KyAgICAgIGVsc2UKLSsJewotKwkgIGZ1bGxfcGF0aCA9IE5VTEw7Ci0rCi0rCSAgLyogV2UgZG9u J3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2FibGUuICAqLwot KwkgIGlmIChzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHBzcGFjZV9pbmZvKSkKLSsJ ICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBz ZWN0aW9uICVzXG5cCi0rb2YgZmlsZSAlc1xuXAotK1VzZSBgaW5mbyBhdXRvLWxvYWQgcHl0aG9u IFtSRUdFWFBdJyB0byBsaXN0IHRoZW0uIiksCi0rCQkgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9O QU1FLCBvYmpmaWxlLT5uYW1lKTsKLSsJfQotIAotICAgICAgIC8qIElmIG9uZSBzY3JpcHQgaXNu J3QgZm91bmQgaXQncyBub3QgdW5jb21tb24gZm9yIG1vcmUgdG8gbm90IGJlCi0gCSBmb3VuZCBl aXRoZXIuICBXZSBkb24ndCB3YW50IHRvIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2gK LUBAIC0xMjksMjQgKzE2NywxMiBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2Jq ZmlsZSAqCi0gCi0gCSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJw b3NlLiAgKi8KLSAKLS0gICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNw YWNlX2luZm8sIGZpbGUsCi0tCQkJCQlvcGVuZWQgPyBmdWxsX3BhdGggOiBOVUxMKTsKLSsgICAg ICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGUsIGZ1 bGxfcGF0aCwKLSsJCQkJCSZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSAKLS0gICAgICBpZiAo ISBvcGVuZWQpCi0tCXsKLS0JICAvKiBXZSBkb24ndCB0aHJvdyBhbiBlcnJvciwgdGhlIHByb2dy YW0gaXMgc3RpbGwgZGVidWdnYWJsZS4gICovCi0tCSAgaWYgKHNjcmlwdF9ub3RfZm91bmRfd2Fy bmluZ19wcmludCAocHNwYWNlX2luZm8pKQotLQkgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRv LWxvYWQgc2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKLS1vZiBmaWxlICVzXG5c Ci0tVXNlIGBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdJyB0byBsaXN0IHRoZW0uIiks Ci0tCQkgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpmaWxlLT5uYW1lKTsKLS0JfQot LSAgICAgIGVsc2UKLS0JewotLQkgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxv YWRlZCwgbG9hZCBpdC4gICovCi0tCSAgaWYgKCEgaW5faGFzaF90YWJsZSkKLS0JICAgIHNvdXJj ZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7 Ci0tCX0KLSsgICAgICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxv YWQgaXQuICAqLwotKyAgICAgIGlmIChvcGVuZWQgJiYgIWluX2hhc2hfdGFibGUpCi0rCXNvdXJj ZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7 Ci0gCi0gICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotICAgICB9Ci1AQCAtMTgxLDM2ICsy MDcsNzUgQEAgYXV0b19sb2FkX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbAotICAgZG9f Y2xlYW51cHMgKGNsZWFudXBzKTsKLSB9Ci0gCi0tLyogTG9hZCBhbnkgYXV0by1sb2FkZWQgc2Ny aXB0cyBmb3IgT0JKRklMRS4gICovCi0rLyogTG9hZCBhbnkgUHl0aG9uIGF1dG8tbG9hZGVkIHNj cmlwdHMgZm9yIE9CSkZJTEUuICAqLwotIAotIHZvaWQKLS1sb2FkX2F1dG9fc2NyaXB0c19mb3Jf b2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rZ2RicHlfbG9hZF9hdXRvX3Njcmlw dHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIHsKLS0gIGlmIChhdXRv X2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkKQotKyAgaWYgKGF1dG9fbG9h ZF9weXRob25fc2NyaXB0cykKLSAgICAgewotLSAgICAgIGF1dG9fbG9hZF9vYmpmaWxlX3Njcmlw dCAob2JqZmlsZSwgR0RCUFlfQVVUT19GSUxFX05BTUUpOwotKyAgICAgIGF1dG9fbG9hZF9vYmpm aWxlX3NjcmlwdCAob2JqZmlsZSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOwotICAgICAgIGF1 dG9fbG9hZF9zZWN0aW9uX3NjcmlwdHMgKG9iamZpbGUsIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1F KTsKLSAgICAgfQotIH0KLSsKLSsvKiBXcmFwcGVyIGZvciAiaW5mbyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMiLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2luZm9fYXV0b19sb2FkX3B5dGhvbl9z Y3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCi0rewotKyAgYXV0b19sb2FkX2lu Zm9fc2NyaXB0cyAocGF0dGVybiwgZnJvbV90dHksICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsK LSt9Ci0gDAotIHZvaWQKLSBnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKLSB7Ci0r ICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY21kOwotKyAgY2hhciAqY21kX25hbWU7Ci0rCi0r ICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoInB5dGhvbi1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9y dCwKLSsJCQkgICAmYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJcCi0rU2V0IHRoZSBkZWJ1 Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMuIiks IF8oIlwKLStTaG93IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2Fk ZWQgUHl0aG9uIHNjcmlwdHMuIiksIF8oIlwKLStJZiBlbmFibGVkLCBhdXRvLWxvYWRlZCBQeXRo b24gc2NyaXB0cyBhcmUgbG9hZGVkIHdoZW4gdGhlIGRlYnVnZ2VyIHJlYWRzXG5cCi0rYW4gZXhl Y3V0YWJsZSBvciBzaGFyZWQgbGlicmFyeS5cblwKLStUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5 IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKLSsJCQkgICBOVUxMLCBz aG93X2F1dG9fbG9hZF9weXRob25fc2NyaXB0cywKLSsJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxp c3RfZ2V0ICgpLAotKwkJCSAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSAg IGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkLXNjcmlwdHMiLCBjbGFzc19zdXBw b3J0LAotLQkJCSAgICZhdXRvX2xvYWRfc2NyaXB0cywgXygiXAotLVNldCB0aGUgZGVidWdnZXIn cyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLS1TaG93 IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgc2NyaXB0cy4i KSwgXygiXAotLUlmIGVuYWJsZWQsIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIGxvYWRlZCB3aGVu IHRoZSBkZWJ1Z2dlciByZWFkc1xuXAotLWFuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnku IiksCi0tCQkJICAgTlVMTCwgTlVMTCwKLS0JCQkgICAmc2V0bGlzdCwKLS0JCQkgICAmc2hvd2xp c3QpOwotKwkJCSAgICZhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsIF8oIlwKLStTZXQgdGhlIGRl YnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cywg IgotKwkJCQkJCQkJICJkZXByZWNhdGVkLiIpLAotKwkJCSAgIF8oIlwKLStTaG93IHRoZSBkZWJ1 Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMsICIK LSsJCQkJCQkJCSAiZGVwcmVjYXRlZC4iKSwKLSsJCQkgICBOVUxMLCBOVUxMLCBzaG93X2F1dG9f bG9hZF9weXRob25fc2NyaXB0cywKLSsJCQkgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKLSsgIGNt ZF9uYW1lID0gImF1dG8tbG9hZC1zY3JpcHRzIjsKLSsgIGNtZCA9IGxvb2t1cF9jbWQgKCZjbWRf bmFtZSwgc2V0bGlzdCwgIiIsIC0xLCAxKTsKLSsgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgInNldCBh dXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiKTsKLSsKLSsgIC8qIEl0IGlzIG5lZWRlZCBiZWNhdXNl IGxvb2t1cF9jbWQgdXBkYXRlcyB0aGUgQ01EX05BTUUgcG9pbnRlci4gICovCi0rICBjbWRfbmFt ZSA9ICJhdXRvLWxvYWQtc2NyaXB0cyI7Ci0rICBjbWQgPSBsb29rdXBfY21kICgmY21kX25hbWUs IHNob3dsaXN0LCAiIiwgLTEsIDEpOwotKyAgZGVwcmVjYXRlX2NtZCAoY21kLCAic2hvdyBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMiKTsKLSsKLSsgIGFkZF9jbWQgKCJweXRob24tc2NyaXB0cyIs IGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLAotKwkgICBfKCJQcmlu dCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBQeXRob24gc2NyaXB0cy5cblwKLStV c2FnZTogaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgW1JFR0VYUF0iKSwKLSsJICAgYXV0 b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOwotKwotKyAgY21kID0gYWRkX2luZm8gKCJhdXRv LWxvYWQtc2NyaXB0cyIsIGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJcCi0rUHJp bnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMsIGRlcHJl Y2F0ZWQuIikpOwotKyAgZGVwcmVjYXRlX2NtZCAoY21kLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMiKTsKLSB9Ci0gCi0gI2Vsc2UgLyogISBIQVZFX1BZVEhPTiAqLwotIAotIHZvaWQK LS1sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUp Ci0rZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlKQotIHsKLSB9Ci0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9u L3B5dGhvbi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9w eXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTg0Mzc1MDAgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0NDoy Ni45Nzk0Mzc0NDYgKzAyMDAKLUBAIC00MSw3ICs0MSw3IEBAIGludCBhcHBseV92YWxfcHJldHR5 X3ByaW50ZXIgKHN0cnVjdCB0eXAKLSAKLSB2b2lkIHByZXNlcnZlX3B5dGhvbl92YWx1ZXMgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBodGFiX3QgY29waWVkX3R5cGVzKTsKLSAKLS12b2lkIGxv YWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7Ci0r dm9pZCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUpOwotIAotIGludCBnZGJweV9zaG91bGRfc3RvcCAoc3RydWN0IGJyZWFrcG9pbnRf b2JqZWN0ICpicF9vYmopOwotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCTIwMTItMDEtMDQgMDk6MTc6 NDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2hlbHAuZXhwCTIwMTItMDQtMTggMDA6NDQ6MjYuOTgwNDM3NDQ0ICswMjAwCi1A QCAtMjQsNyArMjQsNyBAQAotIGdkYl9zdGFydAotIAotICMgZm9yY2UgdGhlIGhlaWdodCBvZiB0 aGUgZGVidWdnZXIgdG8gYmUgcHJldHR5IGxhcmdlIHNvIG5vIHBhZ2VycyBnZXQgdXNlZAotLWdk Yl90ZXN0X25vX291dHB1dCAic2V0IGhlaWdodCA0MDAiICJ0ZXN0IHNldCBoZWlnaHQiCi0rZ2Ri X3Rlc3Rfbm9fb3V0cHV0ICJzZXQgaGVpZ2h0IDUwMCIgInRlc3Qgc2V0IGhlaWdodCIKLSAKLSAj IHVzZSBhIGxhcmdlciBleHBlY3QgaW5wdXQgYnVmZmVyIGZvciBsb25nIGhlbHAgb3V0cHV0cy4K LSAjIHRlc3QgaGVscCBhZGQtc3ltYm9sLWZpbGUKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LW9iamZpbGUtc2NyaXB0LmV4cAkyMDEyLTAxLTE2IDE3OjIxOjUyLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9i amZpbGUtc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAotQEAg LTQwLDcgKzQwLDcgQEAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gZ2Ri X2xvYWQgJHtiaW5maWxlfQotIAotICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KLS1n ZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgIlllcy4qLyR7dGVzdGZpbGV9LWdkYi5w eS4qIgotK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgIlllcy4qLyR7 dGVzdGZpbGV9LWdkYi5weS4qIgotIAotIGlmICFbcnVudG9fbWFpbl0gewotICAgICBwZXJyb3Ig ImNvdWxkbid0IHJ1biB0byBtYWluIgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2Vj dGlvbi1zY3JpcHQuZXhwCTIwMTItMDEtMTYgMTc6MjE6NTIuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1z Y3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCi1AQCAtNTIsMTEg KzUyLDExIEBAIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotIGdkYl9sb2Fk ICR7YmluZmlsZX0KLSAKLSAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCi0tZ2RiX3Rl c3QgImluZm8gYXV0by1sb2FkLXNjcmlwdHMiICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5h bWU6IC4qLyR7dGVzdGZpbGV9LnB5LioiCi0rZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxl fS5weS4qIgotICMgQWdhaW4sIHdpdGggYSByZWdleHAgdGhpcyB0aW1lLgotLWdkYl90ZXN0ICJp bmZvIGF1dG8tbG9hZC1zY3JpcHRzICR7dGVzdGZpbGV9IiAiWWVzLioke3Rlc3RmaWxlfS5weS4q ZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxlfS5weS4qIgotK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cyAke3Rlc3RmaWxlfSIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwg bmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKLSAjIEFnYWluLCB3aXRoIGEgcmVnZXhwIHRoYXQg bWF0Y2hlcyBubyBzY3JpcHRzLgotLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIG5v LXNjcmlwdC1tYXRjaGVzLXRoaXMiIFwKLStnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMgbm8tc2NyaXB0LW1hdGNoZXMtdGhpcyIgXAotICAgIk5vIGF1dG8tbG9hZCBzY3Jp cHRzIG1hdGNoaW5nIG5vLXNjcmlwdC1tYXRjaGVzLXRoaXMuIgotIAotIGlmICFbcnVudG9fbWFp bl0gewoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xMG9mMjgucGF0Y2ggYi9nZGItYXV0b2xv YWQtMTBvZjI4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OTY5 ODIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMTBvZjI4LnBhdGNoCkBAIC0wLDAg KzEsMTcwNCBAQAorW3BhdGNoIzQgNC84XSBzZXQgYXV0by1sb2FkICogbWFpbiBwYXJ0CitodHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA4OC5odG1sCito dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTEzLmh0bWwKKwor IyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NDk6MTEJMS4xNDExMgorIyMjIHNy Yy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTE6NDEJMS4xNDExMworIyMgLTEsNSArMSwx MDEgQEAKKyAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+CisgCisrCWF1dG8tbG9hZDogSW1wbGVtZW50YXRpb24uCisrCSogTkVXUzogTmV3IGRl c2NyaXB0aW9ucyBmb3IgImluZm8gYXV0by1sb2FkIiwKKysJImluZm8gYXV0by1sb2FkIGdkYi1z Y3JpcHRzIiwgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwKKysJImluZm8gYXV0by1s b2FkIGxvY2FsLWdkYmluaXQiIGFuZCAiaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIi4KKysJ RGVwcmVjYXRlICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQtc2NyaXB0 cyBvbnxvZmYiCisrCWFuZCAic2hvdyBhdXRvLWxvYWQtc2NyaXB0cyIuICBOZXcgZGVzY3JpcHRp b24gZm9yICJzZXQgYXV0by1sb2FkIiwKKysJInNob3cgYXV0by1sb2FkIiwgInNldCBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMiLAorKwkic2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAic2V0IGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cyIsCisrCSJzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cyIsICJzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLAorKwkic2hvdyBhdXRvLWxvYWQgbG9j YWwtZ2RiaW5pdCIsICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgYW5kCisrCSJzaG93IGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGIiLgorKwkqIGF1dG8tbG9hZC5jOiBSZW1vdmUgaW5jbHVkZSBw eXRob24vcHl0aG9uLWludGVybmFsLmguICBBZGQgaW5jbHVkZXMKKysJZXhjZXB0aW9ucy5oLCBj bGkvY2xpLXNjcmlwdC5oLCBnZGJjbWQuaCwgY2xpL2NsaS1kZWNvZGUuaCBhbmQKKysJY2xpL2Ns aS1zZXRzaG93LmguCisrCShHREJfQVVUT19GSUxFX05BTUUsIHNvdXJjZV9nZGJfc2NyaXB0X2Zv cl9vYmpmaWxlKQorKwkoYXV0b19sb2FkX2dkYl9zY3JpcHRzLCBzaG93X2F1dG9fbG9hZF9nZGJf c2NyaXB0cyk6IE5ldy4KKysJKGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQpOiBSZW5hbWUgdG8gLi4u CisrCShnbG9iYWxfYXV0b19sb2FkKTogLi4uIGhlcmUuCisrCShhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdCwgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUpCisrCShhdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdF9sb2FkZWQsIHNob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCisrCShzY3Jp cHRfbGFuZ3VhZ2VfZ2RiLCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IE5ldy4KKysJ KHN0cnVjdCBsb2FkZWRfc2NyaXB0KTogTmV3IGZpZWxkIGxhbmd1YWdlLgorKwkoaGFzaF9sb2Fk ZWRfc2NyaXB0X2VudHJ5LCBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5KTogQ2FsY3VsYXRlIGFsc28K KysJTEFOR1VBR0UuCisrCShtYXliZV9hZGRfc2NyaXB0KTogQWRkIHBhcmFtZXRlciBsYW5ndWFn ZS4gIERyb3AgcmVkdW5kYW50CisrCWVudHJ5LmZ1bGxfcGF0aCBpbml0aWFsaXphdGlvbi4gIElu aXRpYWxpemUgZW50cnkubGFuZ3VhZ2UgYW5kCisrCSgqc2xvdCktPmxhbmd1YWdlLgorKwkoYXV0 b19sb2FkX29iamZpbGVfc2NyaXB0KTogQ2hhbmdlIHBhcmFtZXRlciBzdWZmaXggdG8gbGFuZ3Vh Z2UuCisrCVJlbW92ZSB0aGUgY2FsbCBvZiBtYXliZV9hZGRfc2NyaXB0LgorKwlDYWxsIGxhbmd1 YWdlLT5zb3VyY2Vfc2NyaXB0X2Zvcl9vYmpmaWxlLgorKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9y X29iamZpbGUsIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YSk6CisrCU5ldy4K KysJKGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyk6IEFkanVzdCBpdCBmb3IKKysJc3RydWN0IGNv bGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhLgorKwkoYXV0b19sb2FkX2luZm9fc2NyaXB0c19w YXR0ZXJuX25sKTogTmV3IHZhcmlhYmxlLgorKwkoaW5mb19hdXRvX2xvYWRfc2NyaXB0cyk6IFJl bmFtZSB0byAuLi4KKysJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMpOiAuLi4gaGVyZSwgYWRkIHBh cmFtZXRlciBsYW5ndWFnZS4gIEFkanVzdCBpdAorKwlmb3Igc3RydWN0IGNvbGxlY3RfbWF0Y2hp bmdfc2NyaXB0c19kYXRhLgorKwkoaW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMsIGluZm9fYXV0 b19sb2FkX2xvY2FsX2dkYmluaXQpCisrCShzZXRfYXV0b19sb2FkX2NtZCwgYXV0b19sb2FkX3Nl dF9jbWRsaXN0X2dldCwgc2hvd19hdXRvX2xvYWRfY21kKQorKwkoYXV0b19sb2FkX3Nob3dfY21k bGlzdF9nZXQsIGluZm9fYXV0b19sb2FkX2NtZCkKKysJKGF1dG9fbG9hZF9pbmZvX2NtZGxpc3Rf Z2V0KTogTmV3LgorKwkoX2luaXRpYWxpemVfYXV0b19sb2FkKTogTW92ZSBhZGRfaW5mbyBvZiAi YXV0by1sb2FkLXNjcmlwdHMiIHRvCisrCXB5dGhvbi9weS1hdXRvLWxvYWQuYy4gIE5ldyBpbnN0 YWxsbWVudCBmb3IgInNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLAorKwkiaW5mbyBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiBhbmQKKysJImlu Zm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLgorKwkqIGF1dG8tbG9hZC5oIChzdHJ1Y3Qgc2Ny aXB0X2xhbmd1YWdlKTogTmV3LgorKwkoZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCk6IFJlbmFtZSB0 byAuLi4KKysJKGdsb2JhbF9hdXRvX2xvYWQpOiAuLi4gaGVyZS4KKysJKGF1dG9fbG9hZF9sb2Nh bF9nZGJpbml0LCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSkKKysJKGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0X2xvYWRlZCk6IE5ldyBkZWNsYXJhdGlvbnMuCisrCShtYXliZV9hZGRf c2NyaXB0KTogTmV3IHBhcmFtZXRlciBsYW5ndWFnZS4KKysJKGF1dG9fbG9hZF9vYmpmaWxlX3Nj cmlwdCk6IENoYW5nZSBwYXJhbWV0ZXIgc3VmZml4IHRvIGxhbmd1YWdlLgorKwkobG9hZF9hdXRv X3NjcmlwdHNfZm9yX29iamZpbGUsIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCkK KysJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMsIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQpCisr CShhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCwgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQp OiBOZXcKKysJZGVjbGFyYXRpb25zLgorKwkqIGxpbnV4LXRocmVhZC1kYi5jOiBJbmNsdWRlIGF1 dG8tbG9hZC5oIGFuZCBjdHlwZS5oLgorKwkoYXV0b19sb2FkX3RocmVhZF9kYiwgc2hvd19hdXRv X2xvYWRfdGhyZWFkX2RiKTogTmV3LgorKwkoc3RydWN0IHRocmVhZF9kYl9pbmZvKTogTmV3IGZp ZWxkIGZpbGVuYW1lLgorKwkoZGVsZXRlX3RocmVhZF9kYl9pbmZvKTogQ2FsbCB4ZnJlZSBmb3Ig RklMRU5BTUUuCisrCSh0cnlfdGhyZWFkX2RiX2xvYWQpOiBJbml0aWFsaXplIEZJTEVOQU1FLgor KwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpciwgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21f ZGlyKTogUmV0dXJuCisrCWlmICFBVVRPX0xPQURfVEhSRUFEX0RCLgorKwkoaW5mb19hdXRvX2xv YWRfbGlidGhyZWFkX2RiX2NvbXBhcmUsIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYik6IE5l dy4KKysJKF9pbml0aWFsaXplX3RocmVhZF9kYik6IEluc3RhbGwgYXV0b19sb2FkX3RocmVhZF9k YgorKwlhcyAic2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIGFuZCBpbnN0YWxsIGluZm9fYXV0 b19sb2FkX2xpYnRocmVhZF9kYgorKwlhcyAiaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIi4K KysJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBSZW5hbWUgZ2RicHlfZ2xvYmFsX2F1dG9fbG9h ZCB0bworKwlnbG9iYWxfYXV0b19sb2FkLiAgSW5pdGlhbGl6ZSBBVVRPX0xPQURfTE9DQUxfR0RC SU5JVF9QQVRITkFNRSBhbmQKKysJQVVUT19MT0FEX0xPQ0FMX0dEQklOSVRfTE9BREVELgorKwko cHJpbnRfZ2RiX2hlbHApOiBFeHRlbmQgdGhlIGhlbHAgZm9yICdsb2NhbCBpbml0IGZpbGUnLgor KwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYzogUmVtb3ZlIGEgY29tbWVudCBhYm91dCBnZGIgc2Ny aXB0cyBleHRlbnNpb24uCisrCShHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSk6IEV4dGVuZCB0aGUg Y29tbWVudCBpdCBpcyBQeXRob24gc3BlY2lmaWMuCisrCShhdXRvX2xvYWRfc2NyaXB0cyk6IFJl bmFtZSB0byAuLi4KKysJKGF1dG9fbG9hZF9weXRob25fc2NyaXB0cyk6IC4uLiBoZXJlLCB1cGRh dGUgdGhlIGNvbW1lbnQuCisrCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKTog TmV3IGRlY2xhcmF0aW9uLgorKwkoc2hvd19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsIHNjcmlw dF9sYW5ndWFnZV9weXRob24pCisrCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxl KTogTmV3LgorKwkoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IFJlZmFjdG9yIHRoZSBjb2RlLgor KwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiBSZW5hbWUgdG8gLi4uCisrCShnZGJw eV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IC4uLiBoZXJlLCB1cGRhdGUgdGhlCisr CWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCBjYWxsZXIsIGRyb3AgR0RCUFlfR0xPQkFMX0FVVE9f TE9BRCBjaGVja2luZy4KKysJKGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzKTogTmV3Lgor KwkoZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBOZXcgdmFyaWFibGVzIGNtZCBhbmQgY21k X25hbWUuCisrCVJlbmFtZSAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIiB0byAic2V0IGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cyIuCisrCVJlZ2lzdGVyICJzZXQgYXV0by1sb2FkLXNjcmlwdHMiIGFz IGl0cyBkZXByZWNhdGVkIGFsaWFzLiAgUmVnaXN0ZXIKKysJImluZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIi4gIFJlZ2lzdGVyICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBhcworKwlpdHMg ZGVwcmVjYXRlZCBhbGlhcy4KKysJKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogUmVu YW1lIHRvIC4uLgorKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiAuLi4g aGVyZS4KKysJKiBweXRob24vcHl0aG9uLmggKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxl KTogUmVuYW1lIHRvIC4uLgorKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUp OiAuLi4gaGVyZS4KKysKKysyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+CisrCisgCWF1dG8tbG9hZDogTW92ZSBmaWxlcy4KKyAJKiBNYWtlZmls ZS5pbiAoU0ZJTEVTKTogQWRkIGF1dG8tbG9hZC5jLgorIAkoSEZJTEVTX05PX1NSQ0RJUik6IEFk ZCBhdXRvLWxvYWQuaC4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDQtMTgg MDA6NDI6NTEuMjI2NjgxMDY4ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVX UwkyMDEyLTA0LTE4IDAwOjQ5OjAyLjAzNTczNzY0NCArMDIwMAorQEAgLTI4LDYgKzI4LDQ1IEBA CisgICBub3cgc2V0IGEgYnJlYWtwb2ludCBpbiBidWlsZC9nY2MvZXhwci5jLCBidXQgbm90Cisg ICBidWlsZC9saWJjcHAvZXhwci5jLgorIAorKyogTmV3IGNvbW1hbmRzCisrCisrICAqKiAiaW5m byBhdXRvLWxvYWQiIHNob3dzIHN0YXR1cyBvZiBhbGwga2luZHMgb2YgYXV0by1sb2FkZWQgZmls ZXMsCisrICAgICAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiIHNob3dzIHN0YXR1cyBvZiBh dXRvLWxvYWRpbmcgR0RCIGNhbm5lZAorKyAgICAgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGZpbGVz LCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCisrICAgICBzaG93cyBzdGF0dXMgb2Yg YXV0by1sb2FkaW5nIFB5dGhvbiBzY3JpcHQgZmlsZXMsCisrICAgICAiaW5mbyBhdXRvLWxvYWQg bG9jYWwtZ2RiaW5pdCIgc2hvd3Mgc3RhdHVzIG9mIGxvYWRpbmcgaW5pdCBmaWxlCisrICAgICAo LmdkYmluaXQpIGZyb20gY3VycmVudCBkaXJlY3RvcnkgYW5kICJpbmZvIGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGIiIHNob3dzCisrICAgICBzdGF0dXMgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFk IGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeSBsb2FkaW5nLgorKworKyAgKiogImluZm8gYXV0by1s b2FkLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9ufG9mZiIKKysgICAgIGFuZCAi c2hvdyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZHMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQsIHVz ZSB0aGVpcgorKyAgICAgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwgInNldCBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMgb258b2ZmIgorKyAgICAgYW5kICJzaG93IGF1dG8tbG9hZCBw eXRob24tc2NyaXB0cyIgY291bnRlcnBhcnRzIGluc3RlYWQuCisrCisrKiBOZXcgb3B0aW9ucwor KworK3NldCBhdXRvLWxvYWQgb2ZmCisrICBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseS4K KysKKytzaG93IGF1dG8tbG9hZAorKyAgU2hvdyBhdXRvLWxvYWRpbmcgc2V0dGluZyBvZiBhbGwg a2luZHMgb2YgYXV0by1sb2FkZWQgZmlsZXMuCisrCisrc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0 cyBvbnxvZmYKKytzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0cworKyAgQ29udHJvbCBhdXRvLWxv YWRpbmcgb2YgR0RCIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZmlsZXMuCisrCisrc2V0 IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvbnxvZmYKKytzaG93IGF1dG8tbG9hZCBweXRob24t c2NyaXB0cworKyAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdCBmaWxlcy4K KysKKytzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQgb258b2ZmCisrc2hvdyBhdXRvLWxvYWQg bG9jYWwtZ2RiaW5pdAorKyAgQ29udHJvbCBsb2FkaW5nIG9mIGluaXQgZmlsZSAoLmdkYmluaXQp IGZyb20gY3VycmVudCBkaXJlY3RvcnkuCisrCisrc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIg b258b2ZmCisrc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCisrICBDb250cm9sIGF1dG8tbG9h ZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5 LgorKworICogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCisgCisgLS1pbml0LWNvbW1hbmQ9RklM RSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAorSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ0OjI2 Ljk1MDQzNzUyMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5j CTIwMTItMDQtMTggMDA6NDY6NDcuNTU2MDc5NzgwICswMjAwCitAQCAtMjcsMTkgKzI3LDkyIEBA CisgI2luY2x1ZGUgImNvbW1hbmQuaCIKKyAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKKyAjaW5jbHVk ZSAib2JqZmlsZXMuaCIKKy0jaW5jbHVkZSAicHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIgorKyNp bmNsdWRlICJleGNlcHRpb25zLmgiCisrI2luY2x1ZGUgImNsaS9jbGktc2NyaXB0LmgiCisrI2lu Y2x1ZGUgImdkYmNtZC5oIgorKyNpbmNsdWRlICJjbGkvY2xpLWRlY29kZS5oIgorKyNpbmNsdWRl ICJjbGkvY2xpLXNldHNob3cuaCIKKysKKysvKiBUaGUgc3VmZml4IG9mIHBlci1vYmpmaWxlIHNj cmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24gY29tbWFuZCBmaWxlcy4KKysgICBFLmcu IFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNvLCBsb29rIGZvciBsaWJmb28tZ2RiLmdk Yi4gICovCisrI2RlZmluZSBHREJfQVVUT19GSUxFX05BTUUgIi1nZGIuZ2RiIgorKworK3N0YXRp YyB2b2lkIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgRklMRSAqZmlsZSwKKysJCQkJCSAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKysKKysv KiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2Yg R0RCX0FVVE9fRklMRV9OQU1FCisrICAgc2NyaXB0czoKKysgICBzZXQgYXV0by1sb2FkIGdkYi1z Y3JpcHRzIG9ufG9mZgorKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFz c29jaWF0ZWQgc2NyaXB0cyB3aGVuIGFuIG9iamZpbGUKKysgICBpcyBvcGVuZWQsIGZhbHNlIG90 aGVyd2lzZS4gICovCisrc3RhdGljIGludCBhdXRvX2xvYWRfZ2RiX3NjcmlwdHMgPSAxOworKwor Ky8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2dkYl9zY3JpcHRzIGNvbmZpZ3Vy YXRpb24gdmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lkCisrc2hvd19hdXRvX2xvYWRfZ2Ri X3NjcmlwdHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisrCQkJICAgIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKKyt7CisrICBmcHJp bnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBv ZiBjb21tYW5kcyAiCisrCQkJICAgICJzY3JpcHRzIGlzICVzLlxuIiksCisrCQkgICAgdmFsdWUp OworK30KKyAKKyAvKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxv YWRpbmcuCisgICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNv ZGUgd2hlbiBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKKyAgICBmYWxzZSBvdGhlcndpc2UuCisgCist ICAgQm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3Qg YmUgdHJ1ZSB0byBlbmFibGUKKysgICBCb3RoIGF1dG9fbG9hZF9zY3JpcHRzICYmIGdsb2JhbF9h dXRvX2xvYWQgbXVzdCBiZSB0cnVlIHRvIGVuYWJsZQorICAgIGF1dG8tbG9hZGluZy4KKyAKKyAg ICBUaGlzIGZsYWcgZXhpc3RzIHRvIGZhY2lsaXRhdGUgZGVmZXJyaW5nIGF1dG8tbG9hZGluZyBk dXJpbmcgc3RhcnQtdXAKKyAgICB1bnRpbCBhZnRlciAuLy5nZGJpbml0IGhhcyBiZWVuIHJlYWQ7 IGl0IG1heSBhdWdtZW50IHRoZSBzZWFyY2ggZGlyZWN0b3JpZXMKKyAgICB1c2VkIHRvIGZpbmQg dGhlIHNjcmlwdHMuICAqLworLWludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0gMTsKKytpbnQg Z2xvYmFsX2F1dG9fbG9hZCA9IDE7CisrCisrLyogQXV0by1sb2FkIC5nZGJpbml0IGZpbGUgZnJv bSB0aGUgY3VycmVudCBkaXJlY3Rvcnk/ICAqLworK2ludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5p dCA9IDE7CisrCisrLyogQWJzb2x1dGUgcGF0aG5hbWUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5 IC5nZGJpbml0LCBpZiBpdCBleGlzdHMuICAqLworK2NoYXIgKmF1dG9fbG9hZF9sb2NhbF9nZGJp bml0X3BhdGhuYW1lID0gTlVMTDsKKysKKysvKiBCb29sZWFuIHZhbHVlIGlmIEFVVE9fTE9BRF9M T0NBTF9HREJJTklUX1BBVEhOQU1FIGhhcyBiZWVuIGxvYWRlZC4gICovCisraW50IGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDA7CisrCisrLyogInNob3ciIGNvbW1hbmQgZm9yIHRo ZSBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysK KytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisrCQkJICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUs IF8oIkF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50ICIKKysJCQkg ICAgImRpcmVjdG9yeSBpcyAlcy5cbiIpLAorKwkJICAgIHZhbHVlKTsKKyt9CisrCisrLyogRGVm aW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNv bW1hbmRzLiAgKi8KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBzY3Jp cHRfbGFuZ3VhZ2VfZ2RiCisrICA9IHsgR0RCX0FVVE9fRklMRV9OQU1FLCBzb3VyY2VfZ2RiX3Nj cmlwdF9mb3Jfb2JqZmlsZSB9OworKworK3N0YXRpYyB2b2lkCisrc291cmNlX2dkYl9zY3JpcHRf Zm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAorKwkJCSAg ICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKKyt7CisrICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbzsKKysgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7 CisrCisrICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZv IGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKKysgICAgIGNhbiBwcmludCBpdC4gICovCisrICBwc3Bh Y2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRf cHJvZ3JhbV9zcGFjZSk7CisrICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZW5h bWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7CisrCisrICBUUllfQ0FUQ0ggKGUs IFJFVFVSTl9NQVNLX0FMTCkKKysgICAgeworKyAgICAgIHNjcmlwdF9mcm9tX2ZpbGUgKGZpbGUs IGZpbGVuYW1lKTsKKysgICAgfQorKyAgZXhjZXB0aW9uX3ByaW50IChnZGJfc3RkZXJyLCBlKTsK Kyt9CisgCisgLyogRm9yIHNjcmlwdHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywg bXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKKyAgICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdz IG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1lcywKK0BAIC02Miw5 ICsxMzUsMTIgQEAgc3RydWN0IGxvYWRlZF9zY3JpcHQKKyB7CisgICAvKiBOYW1lIGFzIHByb3Zp ZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisrCisgICAvKiBG dWxsIHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQgKG9yIHdhcyBvdGhl cndpc2UKKyAgICAgIGluYWNjZXNzaWJsZSkuICAqLworICAgY29uc3QgY2hhciAqZnVsbF9wYXRo OworKworKyAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7CisgfTsKKyAK KyAvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCitAQCAtMTA5LDcgKzE4NSw3IEBA IGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqZGEKKyB7CisgICBjb25zdCBz dHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZSA9IGRhdGE7CisgCistICByZXR1cm4gaHRhYl9oYXNoX3N0 cmluZyAoZS0+bmFtZSk7CisrICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+bmFtZSkgXiBo dGFiX2hhc2hfcG9pbnRlciAoZS0+bGFuZ3VhZ2UpOworIH0KKyAKKyAvKiBFcXVhbGl0eSBmdW5j dGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCitAQCAtMTIwLDcgKzE5Niw3IEBA IGVxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGMKKyAgIGNvbnN0IHN0cnVj dCBsb2FkZWRfc2NyaXB0ICplYSA9IGE7CisgICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAq ZWIgPSBiOworIAorLSAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwOwor KyAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwICYmIGVhLT5sYW5ndWFn ZSA9PSBlYi0+bGFuZ3VhZ2U7CisgfQorIAorIC8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRy YWNrIGxvYWRlZCBzY3JpcHRzLgorQEAgLTE1NiwyMCArMjMyLDIxIEBAIGdldF9hdXRvX2xvYWRf cHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHMKKyAgIHJldHVybiBpbmZvOworIH0KKyAKKy0vKiBB ZGQgc2NyaXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4KKy0gICBGVUxMX1BB VEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4KKy0gICBUaGUgcmVzdWx0IGlz IHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCisr LyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lO Rk8uCisrICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBU aGUgcmVzdWx0IGlzCisrICAgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBo YXNoIHRhYmxlLiAgKi8KKyAKKyBpbnQKKy1tYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywgY29uc3QgY2hhciAqbmFtZSwKKy0JCSAgY29u c3QgY2hhciAqZnVsbF9wYXRoKQorK21heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAorKwkJICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBj aGFyICpmdWxsX3BhdGgsCisrCQkgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1 YWdlKQorIHsKKyAgIHN0cnVjdCBodGFiICpodGFiID0gcHNwYWNlX2luZm8tPmxvYWRlZF9zY3Jp cHRzOworICAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKKyAgIGludCBpbl9o YXNoX3RhYmxlOworIAorICAgZW50cnkubmFtZSA9IG5hbWU7CistICBlbnRyeS5mdWxsX3BhdGgg PSBmdWxsX3BhdGg7CisrICBlbnRyeS5sYW5ndWFnZSA9IGxhbmd1YWdlOworICAgc2xvdCA9IChz dHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgaHRhYl9maW5kX3Nsb3QgKGh0YWIsICZlbnRyeSwgSU5T RVJUKTsKKyAgIGluX2hhc2hfdGFibGUgPSAqc2xvdCAhPSBOVUxMOworIAorQEAgLTE5NCw2ICsy NzEsNyBAQCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjCisgCX0KKyAg ICAgICBlbHNlCisgCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7CisrICAgICAgKCpzbG90KS0+ bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKKyAgICAgfQorIAorICAgcmV0dXJuIGluX2hhc2hfdGFibGU7 CitAQCAtMjE2LDEwICsyOTQsMTIgQEAgY2xlYXJfc2VjdGlvbl9zY3JpcHRzICh2b2lkKQorICAg ICB9CisgfQorIAorLS8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQg d2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KKysvKiBMb29rIGZvciB0aGUgYXV0by1sb2Fk IHNjcmlwdCBpbiBMQU5HVUFHRSBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQgbG9hZAorKyAg IGl0LiAgKi8KKyAKKyB2b2lkCistYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQorK2F1dG9fbG9hZF9vYmpmaWxlX3Nj cmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0 X2xhbmd1YWdlICpsYW5ndWFnZSkKKyB7CisgICBjaGFyICpyZWFsbmFtZTsKKyAgIGNoYXIgKmZp bGVuYW1lLCAqZGVidWdmaWxlOworQEAgLTIyOSw5ICszMDksOSBAQCBhdXRvX2xvYWRfb2JqZmls ZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCisgCisgICByZWFsbmFtZSA9IGdkYl9yZWFscGF0aCAo b2JqZmlsZS0+bmFtZSk7CisgICBsZW4gPSBzdHJsZW4gKHJlYWxuYW1lKTsKKy0gIGZpbGVuYW1l ID0geG1hbGxvYyAobGVuICsgc3RybGVuIChzdWZmaXgpICsgMSk7CisrICBmaWxlbmFtZSA9IHht YWxsb2MgKGxlbiArIHN0cmxlbiAobGFuZ3VhZ2UtPnN1ZmZpeCkgKyAxKTsKKyAgIG1lbWNweSAo ZmlsZW5hbWUsIHJlYWxuYW1lLCBsZW4pOworLSAgc3RyY3B5IChmaWxlbmFtZSArIGxlbiwgc3Vm Zml4KTsKKysgIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIGxhbmd1YWdlLT5zdWZmaXgpOworIAor ICAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7CisgICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7CitAQCAtMjY5LDI3ICszNDksMzMgQEAgYXV0b19sb2Fk X29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQorIAorICAgaWYgKGlucHV0KQorICAgICB7 CistICAgICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CistCisg ICAgICAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoaW5wdXQpOworIAorLSAgICAgIC8qIEFkZCB0aGlz IHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkLXNjcmlwdHMi CistCSBjYW4gcHJpbnQgaXQuICAqLworLSAgICAgIHBzcGFjZV9pbmZvID0KKy0JZ2V0X2F1dG9f bG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKy0g ICAgICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZGVidWdmaWxlLCBkZWJ1Z2ZpbGUp OworLQorICAgICAgIC8qIFRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3ZSBkb24ndCBj aGVjayBmb3Igd2hldGhlciB0aGUKKyAJIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUs IGFuZCBhbHdheXMgbG9hZCBpdC4KKyAJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBl dmVyIGxvYWQgaXQgdHdpY2UsCisgCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8g YmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQorIAkgbG9hZHMgYW55d2F5LiAgKi8KKy0gICAg ICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVn ZmlsZSk7CisrICAgICAgbGFuZ3VhZ2UtPnNvdXJjZV9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZp bGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOworICAgICB9CisgCisgICBkb19jbGVhbnVwcyAoY2xlYW51 cHMpOworIH0KKyAKKysvKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxF LiAgKi8KKysKKyt2b2lkCisrbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlKQorK3sKKysgIGlmICghZ2xvYmFsX2F1dG9fbG9hZCkKKysgICAgcmV0 dXJuOworKworKyAgaWYgKGF1dG9fbG9hZF9nZGJfc2NyaXB0cykKKysgICAgYXV0b19sb2FkX29i amZpbGVfc2NyaXB0IChvYmpmaWxlLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7CisrCisrICBnZGJw eV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7CisrfQorKworIC8qIFRo aXMgaXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxvYWQgc2NyaXB0 cy4KKyAKKyAgICBUd28gZmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBzdXBwb3J0 ZWQuCitAQCAtMzE0LDYgKzQwMCwxMyBAQCBhdXRvX2xvYWRfbmV3X29iamZpbGUgKHN0cnVjdCBv YmpmaWxlICpvCisgdHlwZWRlZiBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9hZGVkX3NjcmlwdF9w dHI7CisgREVGX1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0cik7CisgCisrc3RydWN0IGNvbGxlY3Rf bWF0Y2hpbmdfc2NyaXB0c19kYXRhCisreworKyAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKipz Y3JpcHRzX3A7CisrCisrICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZTsK Kyt9OworKworIC8qIFRyYXZlcnNhbCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2ZXJzZS4KKyAgICBD b2xsZWN0IHRoZSBlbnRyeSBpZiBpdCBtYXRjaGVzIHRoZSByZWdleHAuICAqLworIAorQEAgLTMy MSwxMCArNDE0LDEwIEBAIHN0YXRpYyBpbnQKKyBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMgKHZv aWQgKipzbG90LCB2b2lkICppbmZvKQorIHsKKyAgIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3Jp cHQgPSAqc2xvdDsKKy0gIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICoqc2NyaXB0c19wdHIgPSBp bmZvOworKyAgc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhICpkYXRhID0gaW5m bzsKKyAKKy0gIGlmIChyZV9leGVjIChzY3JpcHQtPm5hbWUpKQorLSAgICBWRUNfc2FmZV9wdXNo IChsb2FkZWRfc2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3JpcHQpOworKyAgaWYgKHNjcmlw dC0+bGFuZ3VhZ2UgPT0gZGF0YS0+bGFuZ3VhZ2UgJiYgcmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkK KysgICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpkYXRhLT5zY3JpcHRzX3As IHNjcmlwdCk7CisgCisgICByZXR1cm4gMTsKKyB9CitAQCAtMzY2LDEwICs0NTksMTggQEAgc29y dF9zY3JpcHRzX2J5X25hbWUgKGNvbnN0IHZvaWQgKmFwLCBjbworICAgcmV0dXJuIEZJTEVOQU1F X0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7CisgfQorIAorLS8qICJpbmZvIGF1dG8tbG9hZC1zY3Jp cHRzIiBjb21tYW5kLiAgKi8KKysvKiBTcGVjaWFsIGludGVybmFsIEdEQiB2YWx1ZSBvZiBhdXRv X2xvYWRfaW5mb19zY3JpcHRzJ3MgUEFUVEVSTiBpZGVudGlmeQorKyAgIHRoZSAiaW5mbyBhdXRv LWxvYWQgWFhYIiBjb21tYW5kIGhhcyBiZWVuIGV4ZWN1dGVkIHRocm91Z2ggdGhlIGdlbmVyYWwK KysgICAiaW5mbyBhdXRvLWxvYWQiIGludm9jYXRpb24uICBFeHRyYSBuZXdsaW5lIHdpbGwgYmUg cHJpbnRlZCBpZiBuZWVkZWQuICAqLworK2NoYXIgYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0 ZXJuX25sW10gPSAiIjsKKysKKysvKiBJbXBsZW1lbnRhdGlvbiBmb3IgImluZm8gYXV0by1sb2Fk IGdkYi1zY3JpcHRzIgorKyAgIChhbmQgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiku ICBMaXN0IHNjcmlwdHMgaW4gTEFOR1VBR0UgbWF0Y2hpbmcKKysgICBQQVRURVJOLiAgRlJPTV9U VFkgaXMgdGhlIHVzdWFsIEdEQiBib29sZWFuIGZvciB1c2VyIGludGVyYWN0aXZpdHkuICAqLwor IAorLXN0YXRpYyB2b2lkCistaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwg aW50IGZyb21fdHR5KQorK3ZvaWQKKythdXRvX2xvYWRfaW5mb19zY3JpcHRzIChjaGFyICpwYXR0 ZXJuLCBpbnQgZnJvbV90dHksCisrCQkJY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFu Z3VhZ2UpCisgeworICAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OworICAg c3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CitAQCAtNDAyLDE0ICs1 MDMsMjIgQEAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaQorIAorICAg aWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzICE9 IE5VTEwpCisgICAgIHsKKysgICAgICBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2Rh dGEgZGF0YSA9IHsgJnNjcmlwdHMsIGxhbmd1YWdlIH07CisrCisgICAgICAgaW1tZWRpYXRlX3F1 aXQrKzsKKyAgICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19zYWZlX3B1 c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLworICAgICAgIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUg KHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKKy0JCQkgICAgICBjb2xsZWN0X21hdGNoaW5n X3NjcmlwdHMsICZzY3JpcHRzKTsKKysJCQkgICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMs ICZkYXRhKTsKKyAgICAgICBpbW1lZGlhdGVfcXVpdC0tOworICAgICB9CisgCisgICBucl9zY3Jp cHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpOworKworKyAgLyog VGFibGUgaGVhZGVyIHNoaWZ0ZWQgcmlnaHQgYnkgcHJlY2VkaW5nICJnZGItc2NyaXB0czogICIg d291bGQgbm90IG1hdGNoCisrICAgICBpdHMgY29sdW1ucy4gICovCisrICBpZiAobnJfc2NyaXB0 cyA+IDAgJiYgcGF0dGVybiA9PSBhdXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwpCisr ICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CisrCisgICBtYWtlX2NsZWFudXBfdWlfb3V0 X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIG5yX3NjcmlwdHMsCisgCQkJCSAgICAgICAiQXV0 b0xvYWRlZFNjcmlwdHNUYWJsZSIpOworIAorQEAgLTQ0MSw2ICs1NTAsMjkgQEAgaW5mb19hdXRv X2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaQorICAgICB9CisgfQorIAorKy8qIFdyYXBw ZXIgZm9yICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIuICAqLworKworK3N0YXRpYyB2b2lk CisraW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0 eSkKKyt7CisrICBhdXRvX2xvYWRfaW5mb19zY3JpcHRzIChwYXR0ZXJuLCBmcm9tX3R0eSwgJnNj cmlwdF9sYW5ndWFnZV9nZGIpOworK30KKysKKysvKiBJbXBsZW1lbnQgJ2luZm8gYXV0by1sb2Fk IGxvY2FsLWdkYmluaXQnLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luZm9fYXV0b19sb2FkX2xv Y2FsX2dkYmluaXQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7CisrICBpZiAoYXV0b19s b2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPT0gTlVMTCkKKysgICAgcHJpbnRmX2ZpbHRlcmVk IChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIHdhcyBub3QgZm91bmQuXG4iKSk7CisrICBlbHNlIGlm IChhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQpCisrICAgIHByaW50Zl9maWx0ZXJlZCAo XygiTG9jYWwgLmdkYmluaXQgZmlsZSBcIiVzXCIgaGFzIGJlZW4gbG9hZGVkLlxuIiksCisrCQkg ICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKTsKKysgIGVsc2UKKysgICAgcHJp bnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIFwiJXNcIiBoYXMgbm90IGJlZW4g bG9hZGVkLlxuIiksCisrCQkgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKTsK Kyt9CisrCisgLyogUmV0dXJuIG5vbi16ZXJvIGlmIFNDUklQVF9OT1RfRk9VTkRfV0FSTklOR19Q UklOVEVEIG9mIFBTUEFDRV9JTkZPIHdhcyB1bnNldAorICAgIGJlZm9yZSBjYWxsaW5nIHRoaXMg ZnVuY3Rpb24uICBBbHdheXMgc2V0IFNDUklQVF9OT1RfRk9VTkRfV0FSTklOR19QUklOVEVECisg ICAgb2YgUFNQQUNFX0lORk8uICAqLworQEAgLTQ1NSw2ICs1ODcsMTMyIEBAIHNjcmlwdF9ub3Rf Zm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGEKKyAgIHJldHVybiByZXR2YWw7CisgfQorIAor Ky8qIFRoZSBvbmx5IHZhbGlkICJzZXQgYXV0by1sb2FkIiBhcmd1bWVudCBpcyBvZmZ8MHxub3xk aXNhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF9hdXRvX2xvYWRfY21kIChjaGFyICph cmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmxpc3Q7 CisrICBzaXplX3QgbGVuZ3RoOworKworKyAgLyogU2VlIHBhcnNlX2JpbmFyeV9vcGVyYXRpb24g aW4gdXNlIGJ5IHRoZSBzdWItY29tbWFuZHMuICAqLworKworKyAgbGVuZ3RoID0gYXJncyA/IHN0 cmxlbiAoYXJncykgOiAwOworKworKyAgd2hpbGUgKGxlbmd0aCA+IDAgJiYgKGFyZ3NbbGVuZ3Ro IC0gMV0gPT0gJyAnIHx8IGFyZ3NbbGVuZ3RoIC0gMV0gPT0gJ1x0JykpCisrICAgIGxlbmd0aC0t OworKworKyAgaWYgKGxlbmd0aCA9PSAwIHx8IChzdHJuY21wIChhcmdzLCAib2ZmIiwgbGVuZ3Ro KSAhPSAwCisrCQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAiMCIsIGxlbmd0aCkgIT0gMAorKwkJ ICAgICAgJiYgc3RybmNtcCAoYXJncywgIm5vIiwgbGVuZ3RoKSAhPSAwCisrCQkgICAgICAmJiBz dHJuY21wIChhcmdzLCAiZGlzYWJsZSIsIGxlbmd0aCkgIT0gMCkpCisrICAgIGVycm9yIChfKCJW YWxpZCBpcyBvbmx5IGdsb2JhbCAnc2V0IGF1dG8tbG9hZCBubyc7ICIKKysJICAgICAib3RoZXJ3 aXNlIGNoZWNrIHRoZSBhdXRvLWxvYWQgc3ViLWNvbW1hbmRzLiIpKTsKKysKKysgIGZvciAobGlz dCA9ICphdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpOyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBs aXN0LT5uZXh0KQorKyAgICBpZiAobGlzdC0+dmFyX3R5cGUgPT0gdmFyX2Jvb2xlYW4pCisrICAg ICAgeworKwlnZGJfYXNzZXJ0IChsaXN0LT50eXBlID09IHNldF9jbWQpOworKwlkb19zZXRzaG93 X2NvbW1hbmQgKGFyZ3MsIGZyb21fdHR5LCBsaXN0KTsKKysgICAgICB9CisrfQorKworKy8qIElu aXRpYWxpemUgInNldCBhdXRvLWxvYWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBpdC4g ICovCisrCisrc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioKKythdXRvX2xvYWRfc2V0X2NtZGxp c3RfZ2V0ICh2b2lkKQorK3sKKysgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0 dmFsOworKworKyAgaWYgKHJldHZhbCA9PSBOVUxMKQorKyAgICBhZGRfcHJlZml4X2NtZCAoImF1 dG8tbG9hZCIsIGNsYXNzX21haW50ZW5hbmNlLCBzZXRfYXV0b19sb2FkX2NtZCwgXygiXAorK0F1 dG8tbG9hZGluZyBzcGVjaWZpYyBzZXR0aW5ncy5cblwKKytDb25maWd1cmUgdmFyaW91cyBhdXRv LWxvYWQtc3BlY2lmaWMgdmFyaWFibGVzIHN1Y2ggYXNcblwKKythdXRvbWF0aWMgbG9hZGluZyBv ZiBQeXRob24gc2NyaXB0cy4iKSwKKysJCSAgICAmcmV0dmFsLCAic2V0IGF1dG8tbG9hZCAiLAor KwkJICAgIDEvKmFsbG93LXVua25vd24qLywgJnNldGxpc3QpOworKworKyAgcmV0dXJuICZyZXR2 YWw7CisrfQorKworKy8qIENvbW1hbmQgInNob3cgYXV0by1sb2FkIiBkaXNwbGF5cyBzdW1tYXJ5 IG9mIGFsbCB0aGUgY3VycmVudAorKyAgICJzaG93IGF1dG8tbG9hZCAiIHNldHRpbmdzLiAgKi8K KysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX2NtZCAoY2hhciAqYXJncywgaW50IGZy b21fdHR5KQorK3sKKysgIGNtZF9zaG93X2xpc3QgKCphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dl dCAoKSwgZnJvbV90dHksICIiKTsKKyt9CisrCisrLyogSW5pdGlhbGl6ZSAic2hvdyBhdXRvLWxv YWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBpdC4gICovCisrCisrc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKioKKythdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCkKKyt7Cisr ICBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnJldHZhbDsKKysKKysgIGlmIChyZXR2 YWwgPT0gTlVMTCkKKysgICAgYWRkX3ByZWZpeF9jbWQgKCJhdXRvLWxvYWQiLCBjbGFzc19tYWlu dGVuYW5jZSwgc2hvd19hdXRvX2xvYWRfY21kLCBfKCJcCisrU2hvdyBhdXRvLWxvYWRpbmcgc3Bl Y2lmaWMgc2V0dGluZ3MuXG5cCisrU2hvdyBjb25maWd1cmF0aW9uIG9mIHZhcmlvdXMgYXV0by1s b2FkLXNwZWNpZmljIHZhcmlhYmxlcyBzdWNoIGFzXG5cCisrYXV0b21hdGljIGxvYWRpbmcgb2Yg UHl0aG9uIHNjcmlwdHMuIiksCisrCQkgICAgJnJldHZhbCwgInNob3cgYXV0by1sb2FkICIsCisr CQkgICAgMC8qYWxsb3ctdW5rbm93biovLCAmc2hvd2xpc3QpOworKworKyAgcmV0dXJuICZyZXR2 YWw7CisrfQorKworKy8qIENvbW1hbmQgImluZm8gYXV0by1sb2FkIiBkaXNwbGF5cyB3aGV0aGVy IHRoZSB2YXJpb3VzIGF1dG8tbG9hZCBmaWxlcyBoYXZlCisrICAgYmVlbiBsb2FkZWQuICBUaGlz IGlzIHJlaW1wbGVtZW50YXRpb24gb2YgY21kX3Nob3dfbGlzdCB3aGljaCBpbnNlcnRzCisrICAg bmV3bGluZXMgYXQgcHJvcGVyIHBsYWNlcy4gICovCisrCisrc3RhdGljIHZvaWQKKytpbmZvX2F1 dG9fbG9hZF9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7CisrICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqbGlzdDsKKysgIHN0cnVjdCBjbGVhbnVwICppbmZvbGlzdF9jaGFpbjsK KysgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKKysKKysgIGluZm9saXN0 X2NoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCAiaW5m b2xpc3QiKTsKKysKKysgIGZvciAobGlzdCA9ICphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAo KTsgbGlzdCAhPSBOVUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkKKysgICAgeworKyAgICAgIHN0cnVj dCBjbGVhbnVwICpvcHRpb25fY2hhaW4KKysJPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2Jl Z2luX2VuZCAodWlvdXQsICJvcHRpb24iKTsKKysKKysgICAgICBnZGJfYXNzZXJ0ICghbGlzdC0+ cHJlZml4bGlzdCk7CisrICAgICAgZ2RiX2Fzc2VydCAobGlzdC0+dHlwZSA9PSBub3Rfc2V0X2Nt ZCk7CisrCisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJuYW1lIiwgbGlzdC0+ bmFtZSk7CisrICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiOiAgIik7CisrICAgICAgY21kX2Z1 bmMgKGxpc3QsIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCwgZnJvbV90dHkpOwor KworKyAgICAgIC8qIENsb3NlIHRoZSB0dXBsZS4gICovCisrICAgICAgZG9fY2xlYW51cHMgKG9w dGlvbl9jaGFpbik7CisrICAgIH0KKysKKysgIC8qIENsb3NlIHRoZSB0dXBsZS4gICovCisrICBk b19jbGVhbnVwcyAoaW5mb2xpc3RfY2hhaW4pOworK30KKysKKysvKiBJbml0aWFsaXplICJpbmZv IGF1dG8tbG9hZCAiIGNvbW1hbmRzIHByZWZpeCBhbmQgcmV0dXJuIGl0LiAgKi8KKysKKytzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqKgorK2F1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lk KQorK3sKKysgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0dmFsOworKworKyAg aWYgKHJldHZhbCA9PSBOVUxMKQorKyAgICBhZGRfcHJlZml4X2NtZCAoImF1dG8tbG9hZCIsIGNs YXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2NtZCwgXygiXAorK1ByaW50IGN1cnJlbnQgc3RhdHVz IG9mIGF1dG8tbG9hZGVkIGZpbGVzLlxuXAorK1ByaW50IHdoZXRoZXIgdmFyaW91cyBmaWxlcyBs aWtlIFB5dGhvbiBzY3JpcHRzIG9yIC5nZGJpbml0IGZpbGVzIGhhdmUgYmVlblxuXAorK2ZvdW5k IGFuZC9vciBsb2FkZWQuIiksCisrCQkgICAgJnJldHZhbCwgImluZm8gYXV0by1sb2FkICIsCisr CQkgICAgMC8qYWxsb3ctdW5rbm93biovLCAmaW5mb2xpc3QpOworKworKyAgcmV0dXJuICZyZXR2 YWw7CisrfQorKworIHZvaWQgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKTsKKyAKKyB2b2lk CitAQCAtNDY1LDggKzcyMywzOCBAQCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCisgCisg ICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7Cisg CistICBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwKKy0JICAgIGluZm9fYXV0b19sb2Fk X3NjcmlwdHMsCistCSAgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRl ZCBzY3JpcHRzLlxuXAorLVVzYWdlOiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdIikp OworKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJnZGItc2NyaXB0cyIsIGNsYXNzX3N1cHBv cnQsCisrCQkJICAgJmF1dG9fbG9hZF9nZGJfc2NyaXB0cywgXygiXAorK0VuYWJsZSBvciBkaXNh YmxlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMu IiksIF8oIlwKKytTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMg b2YgY29tbWFuZHMgc2NyaXB0cyBpcyBlbmFibGVkLiIpLAorKwkJCSAgIF8oIlwKKytJZiBlbmFi bGVkLCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVi dWdnZXIgcmVhZHNcblwKKythbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LlxuXAorK1Ro aXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJp b3JzLiIpLAorKwkJCSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX2dkYl9zY3JpcHRzLAorKwkJCSAg IGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCisrCQkJICAgYXV0b19sb2FkX3Nob3dfY21k bGlzdF9nZXQgKCkpOworKworKyAgYWRkX2NtZCAoImdkYi1zY3JpcHRzIiwgY2xhc3NfaW5mbywg aW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMsCisrCSAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1 dG9tYXRpY2FsbHkgbG9hZGVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcy5cblwKKytVc2FnZTogaW5m byBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgW1JFR0VYUF0iKSwKKysJICAgYXV0b19sb2FkX2luZm9f Y21kbGlzdF9nZXQgKCkpOworKworKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJsb2NhbC1n ZGJpbml0IiwgY2xhc3Nfc3VwcG9ydCwKKysJCQkgICAmYXV0b19sb2FkX2xvY2FsX2dkYmluaXQs IF8oIlwKKytFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0 IGluIGN1cnJlbnQgZGlyZWN0b3J5LiIpLCBfKCJcCisrU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGlu ZyAuZ2RiaW5pdCBzY3JpcHQgaW4gY3VycmVudCBkaXJlY3RvcnkgaXMgZW5hYmxlZC4iKSwKKysJ CQkgICBfKCJcCisrSWYgZW5hYmxlZCwgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBhcmUg bG9hZGVkIHdoZW4gZGVidWdnZXIgc3RhcnRzXG5cCisrZnJvbSAuZ2RiaW5pdCBmaWxlIGluIGN1 cnJlbnQgZGlyZWN0b3J5LiAgU3VjaCBmaWxlcyBhcmUgZGVwcmVjYXRlZCxcblwKKyt1c2UgYSBz Y3JpcHQgYXNzb2NpYXRlZCB3aXRoIGluZmVyaW9yIGV4ZWN1dGFibGUgZmlsZSBpbnN0ZWFkLlxu XAorK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQg aW5mZXJpb3JzLiIpLAorKwkJCSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQs CisrCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJCQkgICBhdXRvX2xvYWRf c2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisrICBhZGRfY21kICgibG9jYWwtZ2RiaW5pdCIsIGNs YXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsCisrCSAgIF8oIlByaW50IHdo ZXRoZXIgY3VycmVudCBkaXJlY3RvcnkgLmdkYmluaXQgZmlsZSBoYXMgYmVlbiBsb2FkZWQuXG5c CisrVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiKSwKKysJICAgYXV0b19sb2Fk X2luZm9fY21kbGlzdF9nZXQgKCkpOworIH0KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9hdXRvLWxvYWQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTE0Mzc1MTcgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1 NjA3OTc4MCArMDIwMAorQEAgLTIyLDE1ICsyMiwzNiBAQAorIAorIHN0cnVjdCBwcm9ncmFtX3Nw YWNlOworIAorLWV4dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKKytzdHJ1Y3Qgc2Ny aXB0X2xhbmd1YWdlCisreworKyAgY29uc3QgY2hhciAqc3VmZml4OworKworKyAgdm9pZCAoKnNv dXJjZV9zY3JpcHRfZm9yX29iamZpbGUpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAq ZmlsZSwKKysJCQkJICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSk7CisrfTsKKysKKytleHRlcm4g aW50IGdsb2JhbF9hdXRvX2xvYWQ7CisrCisrZXh0ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdDsKKytleHRlcm4gY2hhciAqYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWU7Cisr ZXh0ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQ7CisgCisgZXh0ZXJuIHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgorICAgZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSk7CisgZXh0ZXJuIGlu dCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2Vf aW5mbywKKy0JCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCk7 CisrCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCisrCQkJ ICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7CisgZXh0ZXJuIHZv aWQgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKy0J CQkJICAgICAgY29uc3QgY2hhciAqc3VmZml4KTsKKysJCQkJICAgICAgY29uc3Qgc3RydWN0IHNj cmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOworK2V4dGVybiB2b2lkIGxvYWRfYXV0b19zY3JpcHRz X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgZXh0ZXJuIGludAorICAg c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICpwc3BhY2VfaW5mbyk7CisrZXh0ZXJuIGNoYXIgYXV0b19sb2FkX2luZm9fc2NyaXB0c19w YXR0ZXJuX25sW107CisrZXh0ZXJuIHZvaWQgYXV0b19sb2FkX2luZm9fc2NyaXB0cyAoY2hhciAq cGF0dGVybiwgaW50IGZyb21fdHR5LAorKwkJCQkgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5n dWFnZSAqbGFuZ3VhZ2UpOworKworK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1 dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKHZvaWQpOworK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqKmF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICh2b2lkKTsKKytleHRlcm4gc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAodm9pZCk7 CisgCisgI2VuZGlmIC8qIEFVVE9fTE9BRF9IICovCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvbGludXgtdGhyZWFkLWRiLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDEtMDQgMDk6MTc6MDUuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMJ MjAxMi0wNC0xOCAwMDo0Njo0Ny41NTcwNzk3NzcgKzAyMDAKK0BAIC00MCw4ICs0MCwxMCBAQAor ICNpbmNsdWRlICJvYnNlcnZlci5oIgorICNpbmNsdWRlICJsaW51eC1uYXQuaCIKKyAjaW5jbHVk ZSAibGludXgtcHJvY2ZzLmgiCisrI2luY2x1ZGUgImF1dG8tbG9hZC5oIgorIAorICNpbmNsdWRl IDxzaWduYWwuaD4KKysjaW5jbHVkZSA8Y3R5cGUuaD4KKyAKKyAjaWZkZWYgSEFWRV9HTlVfTElC Q19WRVJTSU9OX0gKKyAjaW5jbHVkZSA8Z251L2xpYmMtdmVyc2lvbi5oPgorQEAgLTc1LDYgKzc3 LDIxIEBACisgCisgc3RhdGljIGNoYXIgKmxpYnRocmVhZF9kYl9zZWFyY2hfcGF0aDsKKyAKKysv KiBTZXQgdG8gbm9uLXplcm8gaWYgdGhyZWFkX2RiIGF1dG8tbG9hZGluZyBpcyBlbmFibGVkCisr ICAgYnkgdGhlICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgY29tbWFuZC4gICovCisrc3Rh dGljIGludCBhdXRvX2xvYWRfdGhyZWFkX2RiID0gMTsKKysKKysvKiAic2hvdyIgY29tbWFuZCBm b3IgdGhlIGF1dG9fbG9hZF90aHJlYWRfZGIgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCisr Cisrc3RhdGljIHZvaWQKKytzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIgKHN0cnVjdCB1aV9maWxl ICpmaWxlLCBpbnQgZnJvbV90dHksCisrCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywg Y29uc3QgY2hhciAqdmFsdWUpCisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0 by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYiAiCisrCQkJICAgICJp cyAlcy5cbiIpLAorKwkJICAgIHZhbHVlKTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBzZXRfbGli dGhyZWFkX2RiX3NlYXJjaF9wYXRoIChjaGFyICppZ25vcmVkLCBpbnQgZnJvbV90dHksCisgCQkJ ICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCitAQCAtMTE5LDYgKzEzNiwxMCBAQCBz dHJ1Y3QgdGhyZWFkX2RiX2luZm8KKyAgIC8qIEhhbmRsZSBmcm9tIGRsb3BlbiBmb3IgbGlidGhy ZWFkX2RiLnNvLiAgKi8KKyAgIHZvaWQgKmhhbmRsZTsKKyAKKysgIC8qIEFic29sdXRlIHBhdGhu YW1lIGZyb20gZ2RiX3JlYWxwYXRoIHRvIGRpc2sgZmlsZSB1c2VkIGZvciBkbG9wZW4taW5nCisr ICAgICBIQU5ETEUuICBJdCBtYXkgYmUgTlVMTCBmb3Igc3lzdGVtIGxpYnJhcnkuICAqLworKyAg Y2hhciAqZmlsZW5hbWU7CisrCisgICAvKiBTdHJ1Y3R1cmUgdGhhdCBpZGVudGlmaWVzIHRoZSBj aGlsZCBwcm9jZXNzIGZvciB0aGUKKyAgICAgIDxwcm9jX3NlcnZpY2UuaD4gaW50ZXJmYWNlLiAg Ki8KKyAgIHN0cnVjdCBwc19wcm9jaGFuZGxlIHByb2NfaGFuZGxlOworQEAgLTI0OCw2ICsyNjks OCBAQCBkZWxldGVfdGhyZWFkX2RiX2luZm8gKGludCBwaWQpCisgICBpZiAoaW5mby0+aGFuZGxl ICE9IE5VTEwpCisgICAgIGRsY2xvc2UgKGluZm8tPmhhbmRsZSk7CisgCisrICB4ZnJlZSAoaW5m by0+ZmlsZW5hbWUpOworKworICAgaWYgKGluZm9fcHJldikKKyAgICAgaW5mb19wcmV2LT5uZXh0 ID0gaW5mby0+bmV4dDsKKyAgIGVsc2UKK0BAIC04MDcsNiArODMwLDEwIEBAIHRyeV90aHJlYWRf ZGJfbG9hZCAoY29uc3QgY2hhciAqbGlicmFyeSkKKyAKKyAgIGluZm8gPSBhZGRfdGhyZWFkX2Ri X2luZm8gKGhhbmRsZSk7CisgCisrICAvKiBEbyBub3Qgc2F2ZSBzeXN0ZW0gbGlicmFyeSBuYW1l LCB0aGF0IG9uZSBpcyBhbHdheXMgdHJ1c3RlZC4gICovCisrICBpZiAoc3RyY2hyIChsaWJyYXJ5 LCAnLycpICE9IE5VTEwpCisrICAgIGluZm8tPmZpbGVuYW1lID0gZ2RiX3JlYWxwYXRoIChsaWJy YXJ5KTsKKysKKyAgIGlmICh0cnlfdGhyZWFkX2RiX2xvYWRfMSAoaW5mbykpCisgICAgIHJldHVy biAxOworIAorQEAgLTg1Niw2ICs4ODMsOSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGly ICh2b2lkKQorIHsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmo7CisgCisrICBpZiAoIWF1dG9fbG9h ZF90aHJlYWRfZGIpCisrICAgIHJldHVybiAwOworKworICAgQUxMX09CSkZJTEVTIChvYmopCisg ICAgIGlmIChsaWJwdGhyZWFkX25hbWVfcCAob2JqLT5uYW1lKSkKKyAgICAgICB7CitAQCAtODk1 LDYgKzkyNSw5IEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAoY29uc3QgY2hhcgorICAg Y2hhciAqcGF0aDsKKyAgIGludCByZXN1bHQ7CisgCisrICBpZiAoIWF1dG9fbG9hZF90aHJlYWRf ZGIpCisrICAgIHJldHVybiAwOworKworICAgcGF0aCA9IHhtYWxsb2MgKGRpcl9sZW4gKyAxICsg c3RybGVuIChMSUJUSFJFQURfREJfU08pICsgMSk7CisgICBjbGVhbnVwID0gbWFrZV9jbGVhbnVw ICh4ZnJlZSwgcGF0aCk7CisgCitAQCAtMTgwMiw2ICsxODM1LDE1MCBAQCB0aHJlYWRfZGJfcmVz dW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCisgICBiZW5lYXRoLT50b19yZXN1bWUgKGJlbmVh dGgsIHB0aWQsIHN0ZXAsIHNpZ25vKTsKKyB9CisgCisrLyogcXNvcnQgaGVscGVyIGZ1bmN0aW9u IGZvciBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIsIHNvcnQgdGhlCisrICAgdGhyZWFkX2Ri X2luZm8gcG9pbnRlcnMgcHJpbWFyaWx5IGJ5IHRoZWlyIEZJTEVOQU1FIGFuZCBzZWNvbmRhcmls eSBieSB0aGVpcgorKyAgIFBJRCwgYm90aCBpbiBhc2NlbmRpbmcgb3JkZXIuICAqLworKworK3N0 YXRpYyBpbnQKKytpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGJfY29tcGFyZSAoY29uc3Qgdm9p ZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQorK3sKKysgIHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqYSA9 ICooc3RydWN0IHRocmVhZF9kYl9pbmZvICoqKSBhcDsKKysgIHN0cnVjdCB0aHJlYWRfZGJfaW5m byAqYiA9ICooc3RydWN0IHRocmVhZF9kYl9pbmZvICoqKSBicDsKKysgIGludCByZXR2YWw7Cisr CisrICByZXR2YWwgPSBzdHJjbXAgKGEtPmZpbGVuYW1lLCBiLT5maWxlbmFtZSk7CisrICBpZiAo cmV0dmFsKQorKyAgICByZXR1cm4gcmV0dmFsOworKworKyAgcmV0dXJuIChhLT5waWQgPiBiLT5w aWQpIC0gKGEtPnBpZCAtIGItPnBpZCk7CisrfQorKworKy8qIEltcGxlbWVudCAnaW5mbyBhdXRv LWxvYWQgbGlidGhyZWFkLWRiJy4gICovCisrCisrc3RhdGljIHZvaWQKKytpbmZvX2F1dG9fbG9h ZF9saWJ0aHJlYWRfZGIgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7CisrICBzdHJ1Y3Qg dWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7CisrICBjb25zdCBjaGFyICpjcyA9IGFyZ3Mg PyBhcmdzIDogIiI7CisrICBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKmluZm8sICoqYXJyYXk7Cisr ICB1bnNpZ25lZCBpbmZvX2NvdW50LCB1bmlxdWVfZmlsZW5hbWVzOworKyAgc2l6ZV90IG1heF9m aWxlbmFtZV9sZW4sIG1heF9waWRzX2xlbiwgcGlkc19sZW47CisrICBzdHJ1Y3QgY2xlYW51cCAq YmFja190bzsKKysgIGNoYXIgKnBpZHM7CisrICBpbnQgaTsKKysKKysgIHdoaWxlIChpc3NwYWNl ICgqY3MpKQorKyAgICBjcysrOworKyAgaWYgKCpjcykKKysgICAgZXJyb3IgKF8oIidpbmZvIGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGInIGRvZXMgbm90IGFjY2VwdCBhbnkgcGFyYW1ldGVycyIpKTsK KysKKysgIGluZm9fY291bnQgPSAwOworKyAgZm9yIChpbmZvID0gdGhyZWFkX2RiX2xpc3Q7IGlu Zm87IGluZm8gPSBpbmZvLT5uZXh0KQorKyAgICBpZiAoaW5mby0+ZmlsZW5hbWUgIT0gTlVMTCkK KysgICAgICBpbmZvX2NvdW50Kys7CisrCisrICBhcnJheSA9IHhtYWxsb2MgKHNpemVvZiAoKmFy cmF5KSAqIGluZm9fY291bnQpOworKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGFy cmF5KTsKKysKKysgIGluZm9fY291bnQgPSAwOworKyAgZm9yIChpbmZvID0gdGhyZWFkX2RiX2xp c3Q7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0KQorKyAgICBpZiAoaW5mby0+ZmlsZW5hbWUgIT0g TlVMTCkKKysgICAgICBhcnJheVtpbmZvX2NvdW50KytdID0gaW5mbzsKKysKKysgIC8qIFNvcnQg QVJSQVkgYnkgZmlsZW5hbWVzIGFuZCBQSURzLiAgKi8KKysKKysgIHFzb3J0IChhcnJheSwgaW5m b19jb3VudCwgc2l6ZW9mICgqYXJyYXkpLAorKwkgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2Ri X2NvbXBhcmUpOworKworKyAgLyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgdW5pcXVlIGZpbGVu YW1lcyAocm93cykgYW5kIHRoZSBtYXhpbXVtIHN0cmluZworKyAgICAgbGVuZ3RoIG9mIFBJRHMg bGlzdCBmb3IgdGhlIHVuaXF1ZSBmaWxlbmFtZXMgKGNvbHVtbnMpLiAgKi8KKysKKysgIHVuaXF1 ZV9maWxlbmFtZXMgPSAwOworKyAgbWF4X2ZpbGVuYW1lX2xlbiA9IDA7CisrICBtYXhfcGlkc19s ZW4gPSAwOworKyAgcGlkc19sZW4gPSAwOworKyAgZm9yIChpID0gMDsgaSA8IGluZm9fY291bnQ7 IGkrKykKKysgICAgeworKyAgICAgIGludCBwaWQgPSBhcnJheVtpXS0+cGlkOworKyAgICAgIHNp emVfdCB0aGlzX3BpZF9sZW47CisrCisrICAgICAgZm9yICh0aGlzX3BpZF9sZW4gPSAwOyBwaWQg IT0gMDsgcGlkIC89IDEwKQorKwl0aGlzX3BpZF9sZW4rKzsKKysKKysgICAgICBpZiAoaSA9PSAw IHx8IHN0cmNtcCAoYXJyYXlbaSAtIDFdLT5maWxlbmFtZSwgYXJyYXlbaV0tPmZpbGVuYW1lKSAh PSAwKQorKwl7CisrCSAgdW5pcXVlX2ZpbGVuYW1lcysrOworKwkgIG1heF9maWxlbmFtZV9sZW4g PSBtYXggKG1heF9maWxlbmFtZV9sZW4sCisrCQkJCSAgc3RybGVuIChhcnJheVtpXS0+ZmlsZW5h bWUpKTsKKysKKysJICBpZiAoaSA+IDApCisrCSAgICB7CisrCSAgICAgIHBpZHNfbGVuIC09IHN0 cmxlbiAoIiwgIik7CisrCSAgICAgIG1heF9waWRzX2xlbiA9IG1heCAobWF4X3BpZHNfbGVuLCBw aWRzX2xlbik7CisrCSAgICB9CisrCSAgcGlkc19sZW4gPSAwOworKwl9CisrICAgICAgcGlkc19s ZW4gKz0gdGhpc19waWRfbGVuICsgc3RybGVuICgiLCAiKTsKKysgICAgfQorKyAgaWYgKGkpCisr ICAgIHsKKysgICAgICBwaWRzX2xlbiAtPSBzdHJsZW4gKCIsICIpOworKyAgICAgIG1heF9waWRz X2xlbiA9IG1heCAobWF4X3BpZHNfbGVuLCBwaWRzX2xlbik7CisrICAgIH0KKysKKysgIC8qIFRh YmxlIGhlYWRlciBzaGlmdGVkIHJpZ2h0IGJ5IHByZWNlZGluZyAibGlidGhyZWFkLWRiOiAgIiB3 b3VsZCBub3QgbWF0Y2gKKysgICAgIGl0cyBjb2x1bW5zLiAgKi8KKysgIGlmIChpbmZvX2NvdW50 ID4gMCAmJiBhcmdzID09IGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCkKKysgICAg dWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKysKKysgIG1ha2VfY2xlYW51cF91aV9vdXRfdGFi bGVfYmVnaW5fZW5kICh1aW91dCwgMiwgdW5pcXVlX2ZpbGVuYW1lcywKKysJCQkJICAgICAgICJM aW51eFRocmVhZERiVGFibGUiKTsKKysKKysgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBt YXhfZmlsZW5hbWVfbGVuLCB1aV9sZWZ0LCAiZmlsZW5hbWUiLAorKwkJICAgICAgICJGaWxlbmFt ZSIpOworKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIHBpZHNfbGVuLCB1aV9sZWZ0LCAi UElEcyIsICJQaWRzIik7CisrICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOworKworKyAgcGlk cyA9IHhtYWxsb2MgKG1heF9waWRzX2xlbiArIDEpOworKyAgbWFrZV9jbGVhbnVwICh4ZnJlZSwg cGlkcyk7CisrCisrICAvKiBOb3RlIEkgaXMgaW5jcmVtZW50ZWQgaW5zaWRlIHRoZSBjeWNsZSwg bm90IGF0IGl0cyBlbmQuICAqLworKyAgZm9yIChpID0gMDsgaSA8IGluZm9fY291bnQ7KQorKyAg ICB7CisrICAgICAgc3RydWN0IGNsZWFudXAgKmNoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90 dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKKysgICAgICBjaGFyICpwaWRzX2VuZDsKKysK KysgICAgICBpbmZvID0gYXJyYXlbaV07CisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlv dXQsICJmaWxlbmFtZSIsIGluZm8tPmZpbGVuYW1lKTsKKysgICAgICBwaWRzX2VuZCA9IHBpZHM7 CisrCisrICAgICAgd2hpbGUgKGkgPCBpbmZvX2NvdW50ICYmIHN0cmNtcCAoaW5mby0+ZmlsZW5h bWUsIGFycmF5W2ldLT5maWxlbmFtZSkgPT0gMCkKKysJeworKwkgIGlmIChwaWRzX2VuZCAhPSBw aWRzKQorKwkgICAgeworKwkgICAgICAqcGlkc19lbmQrKyA9ICcsJzsKKysJICAgICAgKnBpZHNf ZW5kKysgPSAnICc7CisrCSAgICB9CisrCSAgcGlkc19lbmQgKz0geHNucHJpbnRmIChwaWRzX2Vu ZCwgJnBpZHNbbWF4X3BpZHNfbGVuICsgMV0gLSBwaWRzX2VuZCwKKysJCQkJICIldSIsIGFycmF5 W2ldLT5waWQpOworKwkgIGdkYl9hc3NlcnQgKHBpZHNfZW5kIDwgJnBpZHNbbWF4X3BpZHNfbGVu ICsgMV0pOworKworKwkgIGkrKzsKKysJfQorKyAgICAgICpwaWRzX2VuZCA9ICdcMCc7CisrCisr ICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJwaWRzIiwgcGlkcyk7CisrCisrICAg ICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKysgICAgICBkb19jbGVhbnVwcyAoY2hhaW4p OworKyAgICB9CisrCisrICBkb19jbGVhbnVwcyAoYmFja190byk7CisrCisrICBpZiAoaW5mb19j b3VudCA9PSAwKQorKyAgICB1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsIF8oIk5vIGF1dG8tbG9h ZGVkIGxpYnRocmVhZC1kYi5cbiIpKTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBpbml0X3RocmVh ZF9kYl9vcHMgKHZvaWQpCisgeworQEAgLTE4NjMsNiArMjA0MCwyMyBAQCBXaGVuIG5vbi16ZXJv LCBsaWJ0aHJlYWQtZGIgZGVidWdnaW5nIGlzCisgCQkJICAgIHNob3dfbGlidGhyZWFkX2RiX2Rl YnVnLAorIAkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7CisgCisrICBhZGRf c2V0c2hvd19ib29sZWFuX2NtZCAoImxpYnRocmVhZC1kYiIsIGNsYXNzX3N1cHBvcnQsCisrCQkJ ICAgJmF1dG9fbG9hZF90aHJlYWRfZGIsIF8oIlwKKytFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWxv YWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiLiIpLCBfKCJcCisrU2hvdyB3 aGV0aGVyIGF1dG8tbG9hZGluZyBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgaXMgZW5h YmxlZC4iKSwgXygiXAorK0lmIGVuYWJsZWQsIGxpYnRocmVhZF9kYiB3aWxsIGJlIHNlYXJjaGVk IGluICdzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoJ1xuXAorK2xvY2F0aW9ucyB0byBsb2Fk IGxpYnRocmVhZF9kYiBjb21wYXRpYmxlIHdpdGggdGhlIGluZmVyaW9yLlxuXAorK1N0YW5kYXJk IHN5c3RlbSBsaWJ0aHJlYWRfZGIgc3RpbGwgZ2V0cyBsb2FkZWQgZXZlbiB3aXRoIHRoaXMgb3B0 aW9uIG9mZi5cblwKKytUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3Ig dW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKysJCQkgICBOVUxMLCBzaG93X2F1dG9fbG9hZF90aHJl YWRfZGIsCisrCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJCQkgICBhdXRv X2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisrICBhZGRfY21kICgibGlidGhyZWFkLWRi IiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiLAorKwkgICBfKCJQcmlu dCB0aGUgbGlzdCBvZiBsb2FkZWQgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiLlxuXAor K1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiKSwKKysJICAgYXV0b19sb2FkX2lu Zm9fY21kbGlzdF9nZXQgKCkpOworKworICAgLyogQWRkIG91cnNlbHZlcyB0byBvYmpmaWxlIGV2 ZW50IGNoYWluLiAgKi8KKyAgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAodGhyZWFkX2Ri X25ld19vYmpmaWxlKTsKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEy LTA0LTE4IDAwOjQ0OjI2Ljk1NzQzNzUwMyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NzA3OTc3NyArMDIwMAorQEAgLTk0NSw4 ICs5NDUsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorICAgLyogU2tpcCBhdXRvLWxv YWRpbmcgc2VjdGlvbi1zcGVjaWZpZWQgc2NyaXB0cyB1bnRpbCB3ZSd2ZSBzb3VyY2VkCisgICAg ICBsb2NhbF9nZGJpbml0ICh3aGljaCBpcyBvZnRlbiB1c2VkIHRvIGF1Z21lbnQgdGhlIHNvdXJj ZSBzZWFyY2gKKyAgICAgIHBhdGgpLiAgKi8KKy0gIHNhdmVfYXV0b19sb2FkID0gZ2RicHlfZ2xv YmFsX2F1dG9fbG9hZDsKKy0gIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAwOworKyAgc2F2ZV9h dXRvX2xvYWQgPSBnbG9iYWxfYXV0b19sb2FkOworKyAgZ2xvYmFsX2F1dG9fbG9hZCA9IDA7Cisg CisgICBpZiAoZXhlY2FyZyAhPSBOVUxMCisgICAgICAgJiYgc3ltYXJnICE9IE5VTEwKK0BAIC0x MDIyLDE0ICsxMDIyLDI0IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgCisgICAvKiBS ZWFkIHRoZSAuZ2RiaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgKmlmKiBpdCBp c24ndAorICAgICAgdGhlIHNhbWUgYXMgdGhlICRIT01FLy5nZGJpbml0IGZpbGUgKGl0IHNob3Vs ZCBleGlzdCwgYWxzbykuICAqLworLSAgaWYgKGxvY2FsX2dkYmluaXQgJiYgIWluaGliaXRfZ2Ri aW5pdCkKKy0gICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGxvY2FsX2dk YmluaXQsIDAsIFJFVFVSTl9NQVNLX0FMTCk7CisrICBpZiAobG9jYWxfZ2RiaW5pdCkKKysgICAg eworKyAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gZ2RiX3JlYWxwYXRo IChsb2NhbF9nZGJpbml0KTsKKysKKysgICAgICBpZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBhdXRv X2xvYWRfbG9jYWxfZ2RiaW5pdCkKKysJeworKwkgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xv YWRlZCA9IDE7CisrCisrCSAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGxv Y2FsX2dkYmluaXQsIDAsCisrCQkJCVJFVFVSTl9NQVNLX0FMTCk7CisrCX0KKysgICAgfQorIAor ICAgLyogTm93IHRoYXQgYWxsIC5nZGJpbml0J3MgaGF2ZSBiZWVuIHJlYWQgYW5kIGFsbCAtZCBv cHRpb25zIGhhdmUgYmVlbgorICAgICAgcHJvY2Vzc2VkLCB3ZSBjYW4gcmVhZCBhbnkgc2NyaXB0 cyBtZW50aW9uZWQgaW4gU1lNQVJHLgorICAgICAgV2Ugd2FpdCB1bnRpbCBub3cgYmVjYXVzZSBp dCBpcyBjb21tb24gdG8gYWRkIHRvIHRoZSBzb3VyY2Ugc2VhcmNoCisgICAgICBwYXRoIGluIGxv Y2FsX2dkYmluaXQuICAqLworLSAgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IHNhdmVfYXV0b19s b2FkOworKyAgZ2xvYmFsX2F1dG9fbG9hZCA9IHNhdmVfYXV0b19sb2FkOworICAgQUxMX09CSkZJ TEVTIChvYmpmaWxlKQorICAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmls ZSk7CisgCitAQCAtMTE5Niw3ICsxMjA2LDcgQEAgQXQgc3RhcnR1cCwgR0RCIHJlYWRzIHRoZSBm b2xsb3dpbmcgaW5pdAorICIpLCBob21lX2dkYmluaXQpOworICAgaWYgKGxvY2FsX2dkYmluaXQp CisgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoc3RyZWFtLCBfKCJcCistICAgKiBsb2NhbCBpbml0 IGZpbGU6IC4vJXNcblwKKysgICAqIGxvY2FsIGluaXQgZmlsZSAoc2VlIGFsc28gJ3NldCBhdXRv LWxvYWQgbG9jYWwtZ2RiaW5pdCcpOiAuLyVzXG5cCisgIiksIGxvY2FsX2dkYmluaXQpOworICAg ZnB1dHNfdW5maWx0ZXJlZCAoXygiXG5cCisgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHR5cGUgXCJo ZWxwXCIgZnJvbSB3aXRoaW4gR0RCLCBvciBjb25zdWx0IHRoZVxuXAorSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDQ6MjYu OTI4NDM3NTc3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCitAQCAtMTAzNCw2ICsxMDM0 LDcgQEAgWW91IGNhbiBydW4gQHZhbHVle0dEQk59IGluIHZhcmlvdXMgYWx0ZQorIGJhdGNoIG1v ZGUgb3IgcXVpZXQgbW9kZS4KKyAKKyBAdGFibGUgQGNvZGUKKytAYW5jaG9yey1ueH0KKyBAaXRl bSAtbngKKyBAaXRlbXggLW4KKyBAY2luZGV4IEBjb2Rley0tbnh9CitAQCAtMTI2NSw2ICsxMjY2 LDcgQEAgSGVyZSdzIHRoZSBkZXNjcmlwdGlvbiBvZiB3aGF0IEB2YWx1ZXtHRAorIFNldHMgdXAg dGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIgYXMgc3BlY2lmaWVkIGJ5IHRoZSBjb21tYW5kIGxpbmUK KyAoQHB4cmVme01vZGUgT3B0aW9ucywgaW50ZXJwcmV0ZXJ9KS4KKyAKKytAYW5jaG9ye09wdGlv biAtaW5pdC1ldmFsLWNvbW1hbmR9CisgQGl0ZW0KKyBFeGVjdXRlcyBjb21tYW5kcyBhbmQgY29t bWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey1pZXh9IGFuZAorIEBzYW1wey1peH0g b3B0aW9ucyBpbiB0aGVpciBzcGVjaWZpZWQgb3JkZXIuICBVc3VhbGx5IHlvdSBzaG91bGQgdXNl IHRoZQorQEAgLTEyNzksNiArMTI4MSw3IEBAIHVzZWQgd2hlbiBidWlsZGluZyBAdmFsdWV7R0RC Tn07IEBweHJlZnsKKyAgLFN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gYW5kIHNldHRpbmdzfSkg YW5kIGV4ZWN1dGVzIGFsbCB0aGUgY29tbWFuZHMgaW4KKyB0aGF0IGZpbGUuCisgCisrQGFuY2hv cntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9CisgQGl0ZW0KKyBSZWFkcyB0aGUgaW5pdCBmaWxl IChpZiBhbnkpIGluIHlvdXIgaG9tZSBkaXJlY3RvcnlAZm9vdG5vdGV7T24KKyBET1MvV2luZG93 cyBzeXN0ZW1zLCB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgdGhlIG9uZSBwb2ludGVkIHRvIGJ5IHRo ZQorQEAgLTEyODgsOSArMTI5MSwxMiBAQCB0aGF0IGZpbGUuCisgQGl0ZW0KKyBQcm9jZXNzZXMg Y29tbWFuZCBsaW5lIG9wdGlvbnMgYW5kIG9wZXJhbmRzLgorIAorK0BhbmNob3J7SW5pdCBGaWxl IGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0KKyBAaXRlbQorIFJlYWRz IGFuZCBleGVjdXRlcyB0aGUgY29tbWFuZHMgZnJvbSBpbml0IGZpbGUgKGlmIGFueSkgaW4gdGhl IGN1cnJlbnQKKy13b3JraW5nIGRpcmVjdG9yeS4gIFRoaXMgaXMgb25seSBkb25lIGlmIHRoZSBj dXJyZW50IGRpcmVjdG9yeSBpcworK3dvcmtpbmcgZGlyZWN0b3J5IGFzIGxvbmcgYXMgQHNhbXB7 c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fSBpcyBzZXQgdG8KKytAc2FtcHtvbn0gKEBweHJl ZntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5fSkuCisrVGhpcyBpcyBvbmx5IGRv bmUgaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzCisgZGlmZmVyZW50IGZyb20geW91ciBob21l IGRpcmVjdG9yeS4gIFRodXMsIHlvdSBjYW4gaGF2ZSBtb3JlIHRoYW4gb25lCisgaW5pdCBmaWxl LCBvbmUgZ2VuZXJpYyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5LCBhbmQgYW5vdGhlciwgc3BlY2lm aWMKKyB0byB0aGUgcHJvZ3JhbSB5b3UgYXJlIGRlYnVnZ2luZywgaW4gdGhlIGRpcmVjdG9yeSB3 aGVyZSB5b3UgaW52b2tlCitAQCAtMTMwNiw3ICsxMzEyLDcgQEAgSWYgeW91IHdpc2ggdG8gZGlz YWJsZSB0aGUgYXV0by1sb2FkaW5nCisgeW91IG11c3QgZG8gc29tZXRoaW5nIGxpa2UgdGhlIGZv bGxvd2luZzoKKyAKKyBAc21hbGxleGFtcGxlCistJCBnZGIgLWlleCAic2V0IGF1dG8tbG9hZC1z Y3JpcHRzIG9mZiIgbXlwcm9ncmFtCisrJCBnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBweXRob24t c2NyaXB0cyBvZmYiIG15cHJvZ3JhbQorIEBlbmQgc21hbGxleGFtcGxlCisgCisgT3B0aW9uIEBz YW1wey1leH0gZG9lcyBub3Qgd29yayBiZWNhdXNlIHRoZSBhdXRvLWxvYWRpbmcgaXMgdGhlbiB0 dXJuZWQKK0BAIC0yODkxLDYgKzI4OTcsNyBAQCBwcm9ncmFtcyB3aXRoIG11bHRpcGxlIHRocmVh ZHMuCisgQHhyZWZ7U2V0IFdhdGNocG9pbnRzLCxTZXR0aW5nIFdhdGNocG9pbnRzfSwgZm9yIGlu Zm9ybWF0aW9uIGFib3V0Cisgd2F0Y2hwb2ludHMgaW4gcHJvZ3JhbXMgd2l0aCBtdWx0aXBsZSB0 aHJlYWRzLgorIAorK0BhbmNob3J7c2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KKyBAdGFi bGUgQGNvZGUKKyBAa2luZGV4IHNldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGgKKyBAY2luZGV4 IHNlYXJjaCBwYXRoIGZvciBAY29kZXtsaWJ0aHJlYWRfZGJ9CitAQCAtMjkwNSwxMSArMjkxMiwx NSBAQCBtYWNyby4KKyBPbiBAc2N7Z251fS9MaW51eCBhbmQgU29sYXJpcyBzeXN0ZW1zLCBAdmFs dWV7R0RCTn0gdXNlcyBhIGBgaGVscGVyJycKKyBAY29kZXtsaWJ0aHJlYWRfZGJ9IGxpYnJhcnkg dG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IHRocmVhZHMgaW4gdGhlCisgaW5mZXJpb3IgcHJv Y2Vzcy4gIEB2YWx1ZXtHREJOfSB3aWxsIHVzZSBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBh dGh9CistdG8gZmluZCBAY29kZXtsaWJ0aHJlYWRfZGJ9LgorK3RvIGZpbmQgQGNvZGV7bGlidGhy ZWFkX2RifS4gIEB2YWx1ZXtHREJOfSBhbHNvIGNvbnN1bHRzIGZpcnN0IGlmIGluZmVyaW9yCisr c3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGxvYWRpbmcgaXMgZW5hYmxlZAorK2J5 IEBzYW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifSAoQHB4cmVme2xpYnRocmVhZF9kYi5z by4xIGZpbGV9KS4KKyAKKyBBIHNwZWNpYWwgZW50cnkgQHNhbXB7JHNkaXJ9IGZvciBAc2FtcHts aWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9CisgcmVmZXJzIHRvIHRoZSBkZWZhdWx0IHN5c3RlbSBk aXJlY3RvcmllcyB0aGF0IGFyZQorLW5vcm1hbGx5IHNlYXJjaGVkIGZvciBsb2FkaW5nIHNoYXJl ZCBsaWJyYXJpZXMuCisrbm9ybWFsbHkgc2VhcmNoZWQgZm9yIGxvYWRpbmcgc2hhcmVkIGxpYnJh cmllcy4gIFRoZSBAc2FtcHskc2Rpcn0gZW50cnkKKytpcyB0aGUgb25seSBraW5kIG5vdCBuZWVk aW5nIHRvIGJlIGVuYWJsZWQgYnkgQHNhbXB7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Cisr KEBweHJlZntsaWJ0aHJlYWRfZGIuc28uMSBmaWxlfSkuCisgCisgQSBzcGVjaWFsIGVudHJ5IEBz YW1weyRwZGlyfSBmb3IgQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofQorIHJlZmVycyB0 byB0aGUgZGlyZWN0b3J5IGZyb20gd2hpY2ggQGNvZGV7bGlicHRocmVhZH0KK0BAIC0yMDMyMCw2 ICsyMDMzMSw3IEBAIGRlc2NyaWJlZCBoZXJlLgorICogU2NyZWVuIFNpemU6OiAgICAgICAgICAg ICAgICAgU2NyZWVuIHNpemUKKyAqIE51bWJlcnM6OiAgICAgICAgICAgICAgICAgICAgIE51bWJl cnMKKyAqIEFCSTo6ICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyaW5nIHRoZSBjdXJy ZW50IEFCSQorKyogQXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAgQXV0b21hdGljYWxseSBs b2FkaW5nIGFzc29jaWF0ZWQgZmlsZXMKKyAqIE1lc3NhZ2VzL1dhcm5pbmdzOjogICAgICAgICAg IE9wdGlvbmFsIHdhcm5pbmdzIGFuZCBtZXNzYWdlcworICogRGVidWdnaW5nIE91dHB1dDo6ICAg ICAgICAgICAgT3B0aW9uYWwgbWVzc2FnZXMgYWJvdXQgaW50ZXJuYWwgaGFwcGVuaW5ncworICog T3RoZXIgTWlzYyBTZXR0aW5nczo6ICAgICAgICAgT3RoZXIgTWlzY2VsbGFuZW91cyBTZXR0aW5n cworQEAgLTIwNzQ1LDYgKzIwNzU3LDIyNyBAQCBXaXRoIG5vIGFyZ3VtZW50LCBzaG93IHRoZSBs aXN0IG9mIHN1cHBvCisgU2V0IHRoZSBjdXJyZW50IENAdHsrK30gQUJJIHRvIEB2YXJ7YWJpfSwg b3IgcmV0dXJuIHRvIGF1dG9tYXRpYyBkZXRlY3Rpb24uCisgQGVuZCB0YWJsZQorIAorK0Bub2Rl IEF1dG8tbG9hZGluZworK0BzZWN0aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBhc3NvY2lhdGVk IGZpbGVzCisrQGNpbmRleCBhdXRvLWxvYWRpbmcKKysKKytAdmFsdWV7R0RCTn0gc29tZXRpbWVz IHJlYWRzIGZpbGVzIHdpdGggY29tbWFuZHMgYW5kIHNldHRpbmdzIGF1dG9tYXRpY2FsbHksCisr d2l0aG91dCBiZWluZyBleHBsaWNpdGx5IHRvbGQgc28gYnkgdGhlIHVzZXIuICBXZSBjYWxsIHRo aXMgZmVhdHVyZQorK0BkZm57YXV0by1sb2FkaW5nfS4gIFdoaWxlIGF1dG8tbG9hZGluZyBpcyB1 c2VmdWwgZm9yIGF1dG9tYXRpY2FsbHkgYWRhcHRpbmcKKytAdmFsdWV7R0RCTn0gdG8gdGhlIG5l ZWRzIG9mIHlvdXIgcHJvamVjdCwgaXQgY2FuIHNvbWV0aW1lcyBwcm9kdWNlIHVuZXhwZWN0ZWQK KytyZXN1bHRzIG9yIGludHJvZHVjZSBzZWN1cml0eSByaXNrcyAoZS5nLiwgaWYgdGhlIGZpbGUg Y29tZXMgZnJvbSB1bnRydXN0ZWQKKytzb3VyY2VzKS4KKysKKytGb3IgdGhlc2UgcmVhc29ucywg QHZhbHVle0dEQk59IGluY2x1ZGVzIGNvbW1hbmRzIGFuZCBvcHRpb25zIHRvIGxldCB5b3UKKytj b250cm9sIHdoZW4gdG8gYXV0by1sb2FkIGZpbGVzIGFuZCB3aGljaCBmaWxlcyBzaG91bGQgYmUg YXV0by1sb2FkZWQuCisrCisrQHRhYmxlIEBjb2RlCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIG9m Zn0KKytAa2luZGV4IHNldCBhdXRvLWxvYWQgb2ZmCisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBvZmYK KytHbG9iYWxseSBkaXNhYmxlIGxvYWRpbmcgb2YgYWxsIGF1dG8tbG9hZGVkIGZpbGVzLgorK1lv dSBtYXkgd2FudCB0byB1c2UgdGhpcyBjb21tYW5kIHdpdGggdGhlIEBzYW1wey1pZXh9IG9wdGlv bgorKyhAcHhyZWZ7T3B0aW9uIC1pbml0LWV2YWwtY29tbWFuZH0pIHN1Y2ggYXM6CisrQHNtYWxs ZXhhbXBsZQorKyQgQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBvZmYiIHVudHJ1c3RlZC1l eGVjdXRhYmxlIGNvcmVmaWxlfQorK0BlbmQgc21hbGxleGFtcGxlCisrCisrQmUgYXdhcmUgdGhh dCBzeXN0ZW0gaW5pdCBmaWxlIChAcHhyZWZ7U3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbn0pCisr YW5kIGluaXQgZmlsZXMgZnJvbSB5b3VyIGhvbWUgZGlyZWN0b3J5IChAcHhyZWZ7SG9tZSBEaXJl Y3RvcnkgSW5pdCBGaWxlfSkKKytzdGlsbCBnZXQgcmVhZCAoYXMgdGhleSBjb21lIGZyb20gZ2Vu ZXJhbGx5IHRydXN0ZWQgZGlyZWN0b3JpZXMpLgorK1RvIHByZXZlbnQgQHZhbHVle0dEQk59IGZy b20gYXV0by1sb2FkaW5nIGV2ZW4gdGhvc2UgaW5pdCBmaWxlcywgdXNlIHRoZQorK0BvcHRpb257 LW54fSBvcHRpb24gKEBweHJlZntNb2RlIE9wdGlvbnN9KSwgaW4gYWRkaXRpb24gdG8KKytAY29k ZXtzZXQgYXV0by1sb2FkIG5vfS4KKysKKytAYW5jaG9ye3Nob3cgYXV0by1sb2FkfQorK0BraW5k ZXggc2hvdyBhdXRvLWxvYWQKKytAaXRlbSBzaG93IGF1dG8tbG9hZAorK1Nob3cgd2hldGhlciBh dXRvLWxvYWRpbmcgb2YgZWFjaCBzcGVjaWZpYyBAc2FtcHthdXRvLWxvYWR9IGZpbGUocykgaXMg ZW5hYmxlZAorK29yIGRpc2FibGVkLgorKworK0BzbWFsbGV4YW1wbGUKKysoZ2RiKSBzaG93IGF1 dG8tbG9hZAorK2dkYi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMg b2YgY29tbWFuZHMgc2NyaXB0cyBpcyBvbi4KKytsaWJ0aHJlYWQtZGI6ICBBdXRvLWxvYWRpbmcg b2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9uLgorK2xvY2FsLWdkYmluaXQ6 ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJlY3Rvcnkg aXMgb24uCisrcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMg aXMgb24uCisrQGVuZCBzbWFsbGV4YW1wbGUKKysKKytAYW5jaG9ye2luZm8gYXV0by1sb2FkfQor K0BraW5kZXggaW5mbyBhdXRvLWxvYWQKKytAaXRlbSBpbmZvIGF1dG8tbG9hZAorK1ByaW50IHdo ZXRoZXIgZWFjaCBzcGVjaWZpYyBAc2FtcHthdXRvLWxvYWR9IGZpbGUocykgaGF2ZSBiZWVuIGF1 dG8tbG9hZGVkIG9yCisrbm90LgorKworK0BzbWFsbGV4YW1wbGUKKysoZ2RiKSBpbmZvIGF1dG8t bG9hZAorK2dkYi1zY3JpcHRzOgorK0xvYWRlZCAgU2NyaXB0CisrWWVzICAgICAvaG9tZS91c2Vy L2dkYi9nZGItZ2RiLmdkYgorK2xpYnRocmVhZC1kYjogIE5vIGF1dG8tbG9hZGVkIGxpYnRocmVh ZC1kYi4KKytsb2NhbC1nZGJpbml0OiAgTG9jYWwgLmdkYmluaXQgZmlsZSAiL2hvbWUvdXNlci9n ZGIvLmdkYmluaXQiIGhhcyBiZWVuIGxvYWRlZC4KKytweXRob24tc2NyaXB0czoKKytMb2FkZWQg IFNjcmlwdAorK1llcyAgICAgL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5weQorK0BlbmQgc21hbGxl eGFtcGxlCisrQGVuZCB0YWJsZQorKworK1RoZXNlIGFyZSB2YXJpb3VzIGtpbmRzIG9mIGZpbGVz IEB2YWx1ZXtHREJOfSBjYW4gYXV0b21hdGljYWxseSBsb2FkOgorKworK0BpdGVtaXplIEBidWxs ZXQKKytAaXRlbQorK0B4cmVme29iamZpbGUtZ2RiLnB5IGZpbGV9LCBjb250cm9sbGVkIGJ5IEBy ZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCisrQGl0ZW0KKytAeHJlZntvYmpmaWxl LWdkYi5nZGIgZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIGdkYi1zY3Jp cHRzfS4KKytAaXRlbQorK0B4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259LAorK2Nv bnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KKytAaXRlbQor K0B4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnl9LAorK2NvbnRyb2xsZWQg YnkgQHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgorK0BpdGVtCisrQHhyZWZ7bGli dGhyZWFkX2RiLnNvLjEgZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIGxp YnRocmVhZC1kYn0uCisrQGVuZCBpdGVtaXplCisrCisrVGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBj b250cm9sIGNvbW1hbmRzIGZvciB0aGUgYXV0by1sb2FkaW5nOgorKworK0BtdWx0aXRhYmxlIEBj b2x1bW5mcmFjdGlvbnMgLjUgLjUKKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIG9mZn0uCisr QHRhYiBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseS4KKytAaXRlbSBAeHJlZntzaG93IGF1 dG8tbG9hZH0uCisrQHRhYiBTaG93IHNldHRpbmcgb2YgYWxsIGtpbmRzIG9mIGZpbGVzLgorK0Bp dGVtIEB4cmVme2luZm8gYXV0by1sb2FkfS4KKytAdGFiIFNob3cgc3RhdGUgb2YgYWxsIGtpbmRz IG9mIGZpbGVzLgorK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9LgorK0B0 YWIgQ29udHJvbCBmb3IgQHZhbHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KKytAaXRlbSBAeHJl ZntzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0c30uCisrQHRhYiBTaG93IHNldHRpbmcgb2YgQHZh bHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KKytAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBn ZGItc2NyaXB0c30uCisrQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBjb21tYW5kIHNj cmlwdHMuCisrQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCisrQHRh YiBDb250cm9sIGZvciBAdmFsdWV7R0RCTn0gUHl0aG9uIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7 c2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9LgorK0B0YWIgU2hvdyBzZXR0aW5nIG9mIEB2 YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KKytAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBw eXRob24tc2NyaXB0c30uCisrQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBQeXRob24g c2NyaXB0cy4KKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgorK0B0 YWIgQ29udHJvbCBmb3IgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKytAaXRl bSBAeHJlZntzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKytAdGFiIFNob3cgc2V0dGlu ZyBvZiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorK0BpdGVtIEB4cmVme2lu Zm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgorK0B0YWIgU2hvdyBzdGF0ZSBvZiBpbml0IGZp bGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQg bGlidGhyZWFkLWRifS4KKytAdGFiIENvbnRyb2wgZm9yIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFy eS4KKytAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgorK0B0YWIgU2hv dyBzZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KKytAaXRlbSBAeHJlZntpbmZv IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgorK0B0YWIgU2hvdyBzdGF0ZSBvZiB0aHJlYWQgZGVi dWdnaW5nIGxpYnJhcnkuCisrQGVuZCBtdWx0aXRhYmxlCisrCisrQG1lbnUKKysqIEluaXQgRmls ZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnk6OiBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9h ZCBsb2NhbC1nZGJpbml0fQorKyogbGlidGhyZWFkX2RiLnNvLjEgZmlsZTo6ICAgICAgICAgICAg IEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKysqIG9iamZpbGUt Z2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9h ZCBnZGItc2NyaXB0fQorK0B4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9LgorK0BlbmQgbWVudQor KworK0Bub2RlIEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkKKytAc3Vic2VjdGlv biBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9y eQorK0BjaW5kZXggYXV0by1sb2FkaW5nIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3Rv cnkKKysKKytCeSBkZWZhdWx0LCBAdmFsdWV7R0RCTn0gcmVhZHMgYW5kIGV4ZWN1dGVzIHRoZSBj YW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzCisrZnJvbSBpbml0IGZpbGUgKGlmIGFueSkgaW4g dGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksCisrc2VlIEByZWZ7SW5pdCBGaWxlIGluIHRo ZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0uCisrCisrQHRhYmxlIEBjb2RlCisr QGFuY2hvcntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9CisrQGtpbmRleCBzZXQgYXV0by1s b2FkIGxvY2FsLWdkYmluaXQKKytAaXRlbSBzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQgW29u fG9mZl0KKytFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1 ZW5jZXMgb2YgY29tbWFuZHMKKysoQHB4cmVme1NlcXVlbmNlc30pIGZvdW5kIGluIGluaXQgZmls ZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisrCisrQGFuY2hvcntzaG93IGF1dG8tbG9hZCBs b2NhbC1nZGJpbml0fQorK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAorK0Bp dGVtIHNob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKytTaG93IHdoZXRoZXIgYXV0by1sb2Fk aW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZnJvbSBpbml0IGZpbGUgaW4gdGhl CisrY3VycmVudCBkaXJlY3RvcnkgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KKysKKytAYW5jaG9y e2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9CisrQGtpbmRleCBpbmZvIGF1dG8tbG9hZCBs b2NhbC1nZGJpbml0CisrQGl0ZW0gaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAorK1ByaW50 IHdoZXRoZXIgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBmcm9tIGluaXQgZmlsZSBpbiB0 aGUKKytjdXJyZW50IGRpcmVjdG9yeSBoYXZlIGJlZW4gYXV0by1sb2FkZWQuCisrQGVuZCB0YWJs ZQorKworK0Bub2RlIGxpYnRocmVhZF9kYi5zby4xIGZpbGUKKytAc3Vic2VjdGlvbiBBdXRvbWF0 aWNhbGx5IGxvYWRpbmcgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5CisrQGNpbmRleCBhdXRvLWxv YWRpbmcgbGlidGhyZWFkX2RiLnNvLjEKKysKKytUaGlzIGZlYXR1cmUgaXMgY3VycmVudGx5IHBy ZXNlbnQgb25seSBvbiBAc2N7Z251fS9MaW51eCBuYXRpdmUgaG9zdHMuCisrCisrQHZhbHVle0dE Qk59IHJlYWRzIGluIHNvbWUgY2FzZXMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGZyb20gcGxh Y2VzIHNwZWNpZmljCisrdG8gdGhlIGluZmVyaW9yIChAcHhyZWZ7c2V0IGxpYnRocmVhZC1kYi1z ZWFyY2gtcGF0aH0pLgorKworK1RoZSBzcGVjaWFsIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gt cGF0aH0gZW50cnkgQHNhbXB7JHNkaXJ9IGlzIHByb2Nlc3NlZAorK3dpdGhvdXQgY2hlY2tpbmcg dGhpcyBAc2FtcHtzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0gc3dpdGNoIGFzIHN5c3RlbQor K2xpYnJhcmllcyBoYXZlIHRvIGJlIHRydXN0ZWQgaW4gZ2VuZXJhbC4gIEluIGFsbCBvdGhlciBj YXNlcyBvZgorK0BzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0gZW50cmllcyBAdmFsdWV7 R0RCTn0gY2hlY2tzIGZpcnN0IGlmIEBzYW1we3NldAorK2F1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9 IGlzIGVuYWJsZWQgYmVmb3JlIHRyeWluZyB0byBvcGVuIHN1Y2ggdGhyZWFkIGRlYnVnZ2luZwor K2xpYnJhcnkuCisrCisrQHRhYmxlIEBjb2RlCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIGxpYnRo cmVhZC1kYn0KKytAa2luZGV4IHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCisrQGl0ZW0gc2V0 IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgW29ufG9mZl0KKytFbmFibGUgb3IgZGlzYWJsZSB0aGUg YXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFy eS4KKysKKytAYW5jaG9ye3Nob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKytAa2luZGV4IHNo b3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgorK0BpdGVtIHNob3cgYXV0by1sb2FkIGxpYnRocmVh ZC1kYgorK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhy ZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGlzCisrZW5hYmxlZCBvciBkaXNhYmxlZC4KKysKKytAYW5j aG9ye2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKytAa2luZGV4IGluZm8gYXV0by1sb2Fk IGxpYnRocmVhZC1kYgorK0BpdGVtIGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYgorK1ByaW50 IHRoZSBsaXN0IG9mIGFsbCBsb2FkZWQgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2lu ZyBsaWJyYXJpZXMgYW5kCisrZm9yIGVhY2ggc3VjaCBsaWJyYXJ5IHByaW50IGxpc3Qgb2YgaW5m ZXJpb3IgQHZhcntwaWR9cyB1c2luZyBpdC4KKytAZW5kIHRhYmxlCisrCisrQG5vZGUgb2JqZmls ZS1nZGIuZ2RiIGZpbGUKKytAc3Vic2VjdGlvbiBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIu Z2RifSBmaWxlCisrQGNpbmRleCBhdXRvLWxvYWRpbmcgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIu Z2RifQorKworK0B2YWx1ZXtHREJOfSB0cmllcyB0byBsb2FkIGFuIEBmaWxle0B2YXJ7b2JqZmls ZX0tZ2RiLmdkYn0gZmlsZSBjb250YWluaW5nCisrY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5k cyAoQHB4cmVme1NlcXVlbmNlc30pLCBhcyBsb25nIGFzIEBzYW1we3NldAorK2F1dG8tbG9hZCBn ZGItc2NyaXB0c30gaXMgc2V0IHRvIEBzYW1we29ufS4KKysKKytGb3IgbW9yZSBiYWNrZ3JvdW5k IHJlZmVyIHRvIHRoZSBzaW1pbGFyIFB5dGhvbiBzY3JpcHRzIGF1dG8tbG9hZGluZworK2Rlc2Ny aXB0aW9uIChAcHhyZWZ7b2JqZmlsZS1nZGIucHkgZmlsZX0pLgorKworK0B0YWJsZSBAY29kZQor K0BhbmNob3J7c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0c30KKytAa2luZGV4IHNldCBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMKKytAaXRlbSBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIFtvbnxvZmZd CisrRW5hYmxlIG9yIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2Vz IG9mIGNvbW1hbmRzIHNjcmlwdHMuCisrCisrQGFuY2hvcntzaG93IGF1dG8tbG9hZCBnZGItc2Ny aXB0c30KKytAa2luZGV4IHNob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzCisrQGl0ZW0gc2hvdyBh dXRvLWxvYWQgZ2RiLXNjcmlwdHMKKytTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5l ZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBlbmFibGVkIG9yCisrZGlzYWJsZWQu CisrCisrQGFuY2hvcntpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0c30KKytAa2luZGV4IGluZm8g YXV0by1sb2FkIGdkYi1zY3JpcHRzCisrQGNpbmRleCBwcmludCBsaXN0IG9mIGF1dG8tbG9hZGVk IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cworK0BpdGVtIGluZm8gYXV0by1s b2FkIGdkYi1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCisrUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIGNh bm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB0aGF0IEB2YWx1ZXtHREJOfQorK2F1 dG8tbG9hZGVkLgorK0BlbmQgdGFibGUKKysKKytJZiBAdmFye3JlZ2V4cH0gaXMgc3VwcGxpZWQg b25seSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgd2l0aAorK21hdGNoaW5n IG5hbWVzIGFyZSBwcmludGVkLgorKworIEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdzCisgQHNlY3Rp b24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2VzCisgCitAQCAtMjE2MTYsNyArMjE4NDks NyBAQCBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIHdoZW4gQHZhbHVle0dEQk59CisgQG1lbnUKKyAq IFB5dGhvbiBDb21tYW5kczo6ICAgICAgICAgICAgIEFjY2Vzc2luZyBQeXRob24gZnJvbSBAdmFs dWV7R0RCTn0uCisgKiBQeXRob24gQVBJOjogICAgICAgICAgICAgICAgICBBY2Nlc3NpbmcgQHZh bHVle0dEQk59IGZyb20gUHl0aG9uLgorLSogQXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAg QXV0b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2RlLgorKyogUHl0aG9uIEF1dG8tbG9hZGlu Zzo6ICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2RlLgorICogUHl0aG9u IG1vZHVsZXM6OiAgICAgICAgICAgICAgUHl0aG9uIG1vZHVsZXMgcHJvdmlkZWQgYnkgQHZhbHVl e0dEQk59LgorIEBlbmQgbWVudQorIAorQEAgLTIyNzk5LDcgKzIzMDMyLDcgQEAgVGhpcyBwcmFj dGljZSB3aWxsIGVuYWJsZSBAdmFsdWV7R0RCTn0gdAorIHlvdXIgcHJldHR5LXByaW50ZXJzIGF0 IHRoZSBzYW1lIHRpbWUsIGJlY2F1c2UgdGhleSB3aWxsIGhhdmUKKyBkaWZmZXJlbnQgbmFtZXMu CisgCistWW91IHNob3VsZCB3cml0ZSBhdXRvLWxvYWRlZCBjb2RlIChAcHhyZWZ7QXV0by1sb2Fk aW5nfSkgc3VjaCB0aGF0IGl0CisrWW91IHNob3VsZCB3cml0ZSBhdXRvLWxvYWRlZCBjb2RlIChA cHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30pIHN1Y2ggdGhhdCBpdAorIGNhbiBiZSBldmFsdWF0 ZWQgbXVsdGlwbGUgdGltZXMgd2l0aG91dCBjaGFuZ2luZyBpdHMgbWVhbmluZy4gIEFuCisgaWRl YWwgYXV0by1sb2FkIGZpbGUgd2lsbCBjb25zaXN0IHNvbGVseSBvZiBAY29kZXtpbXBvcnR9cyBv ZiB5b3VyCisgcHJpbnRlciBtb2R1bGVzLCBmb2xsb3dlZCBieSBhIGNhbGwgdG8gYSByZWdpc3Rl ciBwcmV0dHktcHJpbnRlcnMgd2l0aAorQEAgLTIzNzYwLDcgKzIzOTkzLDcgQEAgVGhlIGZvbGxv d2luZyBvYmpmaWxlLXJlbGF0ZWQgZnVuY3Rpb25zCisgCisgQGZpbmRleCBnZGIuY3VycmVudF9v YmpmaWxlCisgQGRlZnVuIGdkYi5jdXJyZW50X29iamZpbGUgKCkKKy1XaGVuIGF1dG8tbG9hZGlu ZyBhIFB5dGhvbiBzY3JpcHQgKEBweHJlZntBdXRvLWxvYWRpbmd9KSwgQHZhbHVle0dEQk59Cisr V2hlbiBhdXRvLWxvYWRpbmcgYSBQeXRob24gc2NyaXB0IChAcHhyZWZ7UHl0aG9uIEF1dG8tbG9h ZGluZ30pLCBAdmFsdWV7R0RCTn0KKyBzZXRzIHRoZSBgYGN1cnJlbnQgb2JqZmlsZScnIHRvIHRo ZSBjb3JyZXNwb25kaW5nIG9iamZpbGUuICBUaGlzCisgZnVuY3Rpb24gcmV0dXJucyB0aGUgY3Vy cmVudCBvYmpmaWxlLiAgSWYgdGhlcmUgaXMgbm8gY3VycmVudCBvYmpmaWxlLAorIHRoaXMgZnVu Y3Rpb24gcmV0dXJucyBAY29kZXtOb25lfS4KK0BAIC0yNDY3MSw5ICsyNDkwNCw5IEBAIHJlc29s dmUgdGhpcyB0byB0aGUgbGF6eSBzdHJpbmcncyBjaGFyYWMKKyB3cml0YWJsZS4KKyBAZW5kIGRl ZnZhcgorIAorLUBub2RlIEF1dG8tbG9hZGluZworLUBzdWJzZWN0aW9uIEF1dG8tbG9hZGluZwor LUBjaW5kZXggYXV0by1sb2FkaW5nLCBQeXRob24KKytAbm9kZSBQeXRob24gQXV0by1sb2FkaW5n CisrQHN1YnNlY3Rpb24gUHl0aG9uIEF1dG8tbG9hZGluZworK0BjaW5kZXggUHl0aG9uIGF1dG8t bG9hZGluZworIAorIFdoZW4gYSBuZXcgb2JqZWN0IGZpbGUgaXMgcmVhZCAoZm9yIGV4YW1wbGUs IGR1ZSB0byB0aGUgQGNvZGV7ZmlsZX0KKyBjb21tYW5kLCBvciBiZWNhdXNlIHRoZSBpbmZlcmlv ciBoYXMgbG9hZGVkIGEgc2hhcmVkIGxpYnJhcnkpLAorQEAgLTI0NjkzLDMyICsyNDkyNiwzNSBA QCBBdXRvLWxvYWRpbmcgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsCisgYW5kIHRoZSBsaXN0 IG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgY2FuIGJlIHByaW50ZWQuCisgCisgQHRhYmxlIEBjb2Rl CistQGtpbmRleCBzZXQgYXV0by1sb2FkLXNjcmlwdHMKKy1AaXRlbSBzZXQgYXV0by1sb2FkLXNj cmlwdHMgW3llc3xub10KKytAYW5jaG9ye3NldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9Cisr QGtpbmRleCBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCisrQGl0ZW0gc2V0IGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cyBbb258b2ZmXQorIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvLWxv YWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuCisgCistQGtpbmRleCBzaG93IGF1dG8tbG9hZC1zY3Jp cHRzCistQGl0ZW0gc2hvdyBhdXRvLWxvYWQtc2NyaXB0cworK0BhbmNob3J7c2hvdyBhdXRvLWxv YWQgcHl0aG9uLXNjcmlwdHN9CisrQGtpbmRleCBzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cworK0BpdGVtIHNob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCisgU2hvdyB3aGV0aGVyIGF1 dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorIAor LUBraW5kZXggaW5mbyBhdXRvLWxvYWQtc2NyaXB0cworLUBjaW5kZXggcHJpbnQgbGlzdCBvZiBh dXRvLWxvYWRlZCBzY3JpcHRzCistQGl0ZW0gaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbQHZhcnty ZWdleHB9XQorLVByaW50IHRoZSBsaXN0IG9mIGFsbCBzY3JpcHRzIHRoYXQgQHZhbHVle0dEQk59 IGF1dG8tbG9hZGVkLgorK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9Cisr QGtpbmRleCBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworK0BjaW5kZXggcHJpbnQgbGlz dCBvZiBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cworK0BpdGVtIGluZm8gYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCisrUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIFB5dGhv biBzY3JpcHRzIHRoYXQgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkLgorIAorLUFsc28gcHJpbnRl ZCBpcyB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQgaW4KKytBbHNvIHBy aW50ZWQgaXMgdGhlIGxpc3Qgb2YgUHl0aG9uIHNjcmlwdHMgdGhhdCB3ZXJlIG1lbnRpb25lZCBp bgorIHRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24gYW5kIHdlcmUgbm90IGZv dW5kCisgKEBweHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSkuCisgVGhpcyBpcyB1 c2VmdWwgYmVjYXVzZSB0aGVpciBuYW1lcyBhcmUgbm90IHByaW50ZWQgd2hlbiBAdmFsdWV7R0RC Tn0KKyB0cmllcyB0byBsb2FkIHRoZW0gYW5kIGZhaWxzLiAgVGhlcmUgbWF5IGJlIG1hbnkgb2Yg dGhlbSwgYW5kIHByaW50aW5nCisgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFjaCBvbmUgaXMgcHJv YmxlbWF0aWMuCisgCistSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgc2NyaXB0cyB3 aXRoIG1hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgorK0lmIEB2YXJ7cmVnZXhwfSBpcyBzdXBw bGllZCBvbmx5IFB5dGhvbiBzY3JpcHRzIHdpdGggbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQu CisgCisgRXhhbXBsZToKKyAKKyBAc21hbGxleGFtcGxlCistKGdkYikgaW5mbyBhdXRvLWxvYWQt c2NyaXB0cworKyhnZGIpIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCisgTG9hZGVkICBT Y3JpcHQKKyBZZXMgICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5CisgICAgICAgICBmdWxsIG5hbWU6 IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9weXRob24vcHktYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1 ODQzNzUwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRv LWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAorQEAgLTMxLDI5ICsz MSw1NiBAQAorIAorICNpbmNsdWRlICJweXRob24taW50ZXJuYWwuaCIKKyAKKy0vKiBOT1RFOiBJ dCdzIHRyaXZpYWwgdG8gYWxzbyBzdXBwb3J0IGF1dG8tbG9hZGluZyBub3JtYWwgZ2RiIHNjcmlw dHMuCistICAgVGhlcmUgaGFzIHlldCB0byBiZSBhIG5lZWQgc28gaXQncyBub3QgaW1wbGVtZW50 ZWQuICAqLworLQorIC8qIFRoZSBzdWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0byBhdXRv LWxvYWQuCisgICAgRS5nLiBXaGVuIHRoZSBwcm9ncmFtIGxvYWRzIGxpYmZvby5zbywgbG9vayBm b3IgbGliZm9vLWdkYi5weS4gICovCisgI2RlZmluZSBHREJQWV9BVVRPX0ZJTEVfTkFNRSAiLWdk Yi5weSIKKyAKKy0vKiBUaGUgc2VjdGlvbiB0byBsb29rIGZvciBzY3JpcHRzIChpbiBmaWxlIGZv cm1hdHMgdGhhdCBzdXBwb3J0IHNlY3Rpb25zKS4KKysvKiBUaGUgc2VjdGlvbiB0byBsb29rIGZv ciBQeXRob24gYXV0by1sb2FkZWQgc2NyaXB0cyAoaW4gZmlsZSBmb3JtYXRzIHRoYXQKKysgICBz dXBwb3J0IHNlY3Rpb25zKS4KKyAgICBFYWNoIGVudHJ5IGluIHRoaXMgc2VjdGlvbiBpcyBhIGJ5 dGUgb2YgdmFsdWUgMSwgYW5kIHRoZW4gdGhlIG51bC10ZXJtaW5hdGVkCisgICAgbmFtZSBvZiB0 aGUgc2NyaXB0LiAgVGhlIHNjcmlwdCBuYW1lIG1heSBpbmNsdWRlIGEgZGlyZWN0b3J5LgorICAg IFRoZSBsZWFkaW5nIGJ5dGUgaXMgdG8gYWxsb3cgdXB3YXJkIGNvbXBhdGlibGUgZXh0ZW5zaW9u cy4gICovCisgI2RlZmluZSBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSAiLmRlYnVnX2dkYl9zY3Jp cHRzIgorIAorLS8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8t bG9hZGluZzoKKy0gICBzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmCistICAgVGhpcyBpcyB0 cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdoZW4gYW4gb2Jq ZmlsZQorLSAgIGlzIG9wZW5lZCwgZmFsc2Ugb3RoZXJ3aXNlLgorLSAgIEF0IHRoZSBtb21lbnQs IHRoaXMgb25seSBhZmZlY3RzIHB5dGhvbiBzY3JpcHRzLCBidXQgdGhlcmUncyBubyByZWFzb24K Ky0gICBvbmUgY291bGRuJ3QgYWxzbyBoYXZlIG90aGVyIGtpbmRzIG9mIGF1dG8tbG9hZGVkIHNj cmlwdHMsIGFuZCB0aGVyZSdzCistICAgbm8gcmVhc29uIHRvIGhhdmUgdGhlbSBlYWNoIGNvbnRy b2xsZWQgYnkgYSBzZXBhcmF0ZSBmbGFnLgorLSAgIFNvIHdlIGVsaWRlICJweXRob24iIGZyb20g dGhlIG5hbWUgaGVyZSBhbmQgaW4gdGhlIG9wdGlvbi4KKy0gICBUaGUgZmFjdCB0aGF0IGl0IGxp dmVzIGhlcmUgaXMganVzdCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICAqLworLXN0YXRpYyBp bnQgYXV0b19sb2FkX3NjcmlwdHMgPSAxOworKy8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVu YWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0czoKKysgICBzZXQgYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9ufG9mZgorKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91 bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgUHl0aG9uIHNjcmlwdHMgd2hlbiBhbgorKyAgIG9iamZp bGUgaXMgb3BlbmVkLCBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRpYyBpbnQgYXV0b19sb2Fk X3B5dGhvbl9zY3JpcHRzID0gMTsKKysKKytzdGF0aWMgdm9pZCBnZGJweV9sb2FkX2F1dG9fc2Ny aXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkJCQlGSUxFICpm aWxlLAorKwkJCQkJCWNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKysKKysvKiAic2hvdyIgY29tbWFu ZCBmb3IgdGhlIGF1dG9fbG9hZF9weXRob25fc2NyaXB0cyBjb25maWd1cmF0aW9uIHZhcmlhYmxl LiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzIChz dHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgICAgICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgZnByaW50Zl9maWx0 ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzICVzLlxuIiks IHZhbHVlKTsKKyt9CisrCisrLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIFB5 dGhvbiBzY3JpcHRzLiAgKi8KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFn ZSBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uCisrICA9IHsgR0RCUFlfQVVUT19GSUxFX05BTUUsIGdk YnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgfTsKKysKKysvKiBXcmFwcGVyIG9mIHNv dXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIGZvciBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9u LiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZp bGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAorKwkJCQkgICAgY29uc3Qg Y2hhciAqZmlsZW5hbWUpCisreworKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNw YWNlX2luZm87CisrCisrICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9v IHNvICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIKKysgICAgIGNhbiBwcmludCBpdC4g ICovCisrICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRp bmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CisrICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2Vf aW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7CisrCisr ICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZmlsZSwgZmlsZW5h bWUpOworK30KKyAKKyAvKiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9CSkZJTEUuCisgICAg U1RBUlQsRU5EIGRlbGltaXQgYSBidWZmZXIgY29udGFpbmluZyBhIGxpc3Qgb2YgbnVsLXRlcm1p bmF0ZWQKK0BAIC0xMjEsNiArMTQ4LDE3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVj dCBvYmpmaWxlICoKKyAJICBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOworIAkgIG1ha2Vf Y2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0aCk7CisgCX0KKysgICAgICBlbHNlCisrCXsKKysJICBm dWxsX3BhdGggPSBOVUxMOworKworKwkgIC8qIFdlIGRvbid0IHRocm93IGFuIGVycm9yLCB0aGUg cHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxlLiAgKi8KKysJICBpZiAoc2NyaXB0X25vdF9mb3Vu ZF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5mbykpCisrCSAgICB3YXJuaW5nIChfKCJNaXNzaW5n IGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAorK29mIGZpbGUg JXNcblwKKytVc2UgYGluZm8gYXV0by1sb2FkIHB5dGhvbiBbUkVHRVhQXScgdG8gbGlzdCB0aGVt LiIpLAorKwkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7Cisr CX0KKyAKKyAgICAgICAvKiBJZiBvbmUgc2NyaXB0IGlzbid0IGZvdW5kIGl0J3Mgbm90IHVuY29t bW9uIGZvciBtb3JlIHRvIG5vdCBiZQorIAkgZm91bmQgZWl0aGVyLiAgV2UgZG9uJ3Qgd2FudCB0 byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoCitAQCAtMTI5LDI0ICsxNjcsMTIgQEAg c291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKgorIAorIAkgSVdCTiBpZiBj b21wbGFpbnRzLmMgd2VyZSBtb3JlIGdlbmVyYWwtcHVycG9zZS4gICovCisgCistICAgICAgaW5f aGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLAorLQkJCQkJ b3BlbmVkID8gZnVsbF9wYXRoIDogTlVMTCk7CisrICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLCBmdWxsX3BhdGgsCisrCQkJCQkmc2NyaXB0 X2xhbmd1YWdlX3B5dGhvbik7CisgCistICAgICAgaWYgKCEgb3BlbmVkKQorLQl7CistCSAgLyog V2UgZG9uJ3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2FibGUu ICAqLworLQkgIGlmIChzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHBzcGFjZV9pbmZv KSkKKy0JICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNl ZCBpbiBzZWN0aW9uICVzXG5cCistb2YgZmlsZSAlc1xuXAorLVVzZSBgaW5mbyBhdXRvLWxvYWQt c2NyaXB0cyBbUkVHRVhQXScgdG8gbGlzdCB0aGVtLiIpLAorLQkJICAgICBHREJQWV9BVVRPX1NF Q1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7CistCX0KKy0gICAgICBlbHNlCistCXsKKy0JICAv KiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLworLQkg IGlmICghIGluX2hhc2hfdGFibGUpCistCSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2Jq ZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOworLQl9CisrICAgICAgLyogSWYgdGhp cyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KKysgICAgICBpZiAo b3BlbmVkICYmICFpbl9oYXNoX3RhYmxlKQorKwlzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2Jq ZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOworIAorICAgICAgIGRvX2NsZWFudXBz IChiYWNrX3RvKTsKKyAgICAgfQorQEAgLTE4MSwzNiArMjA3LDc1IEBAIGF1dG9fbG9hZF9zZWN0 aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWwKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Cisg fQorIAorLS8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMgZm9yIE9CSkZJTEUuICAqLwor Ky8qIExvYWQgYW55IFB5dGhvbiBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8K KyAKKyB2b2lkCistbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKQorK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSkKKyB7CistICBpZiAoYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlf Z2xvYmFsX2F1dG9fbG9hZCkKKysgIGlmIChhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMpCisgICAg IHsKKy0gICAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsIEdEQlBZX0FVVE9f RklMRV9OQU1FKTsKKysgICAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsICZz Y3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKKyAgICAgICBhdXRvX2xvYWRfc2VjdGlvbl9zY3JpcHRz IChvYmpmaWxlLCBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSk7CisgICAgIH0KKyB9CisrCisrLyog V3JhcHBlciBmb3IgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4gICovCisrCisrc3Rh dGljIHZvaWQKKytpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cyAoY2hhciAqcGF0dGVybiwg aW50IGZyb21fdHR5KQorK3sKKysgIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMgKHBhdHRlcm4sIGZy b21fdHR5LCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7CisrfQorIAwKKyB2b2lkCisgZ2RicHlf aW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCisgeworKyAgc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmNtZDsKKysgIGNoYXIgKmNtZF9uYW1lOworKworKyAgYWRkX3NldHNob3dfYm9vbGVhbl9j bWQgKCJweXRob24tc2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQsCisrCQkJICAgJmF1dG9fbG9hZF9w eXRob25fc2NyaXB0cywgXygiXAorK1NldCB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJk aW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLiIpLCBfKCJcCisrU2hvdyB0aGUgZGVidWdn ZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLiIpLCBf KCJcCisrSWYgZW5hYmxlZCwgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMgYXJlIGxvYWRlZCB3 aGVuIHRoZSBkZWJ1Z2dlciByZWFkc1xuXAorK2FuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJh cnkuXG5cCisrVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1 c3RlZCBpbmZlcmlvcnMuIiksCisrCQkJICAgTlVMTCwgc2hvd19hdXRvX2xvYWRfcHl0aG9uX3Nj cmlwdHMsCisrCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJCQkgICBhdXRv X2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisgICBhZGRfc2V0c2hvd19ib29sZWFuX2Nt ZCAoImF1dG8tbG9hZC1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKKy0JCQkgICAmYXV0b19sb2Fk X3NjcmlwdHMsIF8oIlwKKy1TZXQgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBh dXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCistU2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlv dXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKKy1JZiBlbmFibGVkLCBh dXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVidWdnZXIgcmVhZHNcblwK Ky1hbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiIpLAorLQkJCSAgIE5VTEwsIE5VTEws CistCQkJICAgJnNldGxpc3QsCistCQkJICAgJnNob3dsaXN0KTsKKysJCQkgICAmYXV0b19sb2Fk X3B5dGhvbl9zY3JpcHRzLCBfKCJcCisrU2V0IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdh cmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMsICIKKysJCQkJCQkJCSAiZGVwcmVjYXRl ZC4iKSwKKysJCQkgICBfKCJcCisrU2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJk aW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCAiCisrCQkJCQkJCQkgImRlcHJlY2F0ZWQu IiksCisrCQkJICAgTlVMTCwgTlVMTCwgc2hvd19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsCisr CQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7CisrICBjbWRfbmFtZSA9ICJhdXRvLWxvYWQtc2Ny aXB0cyI7CisrICBjbWQgPSBsb29rdXBfY21kICgmY21kX25hbWUsIHNldGxpc3QsICIiLCAtMSwg MSk7CisrICBkZXByZWNhdGVfY21kIChjbWQsICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz Iik7CisrCisrICAvKiBJdCBpcyBuZWVkZWQgYmVjYXVzZSBsb29rdXBfY21kIHVwZGF0ZXMgdGhl IENNRF9OQU1FIHBvaW50ZXIuICAqLworKyAgY21kX25hbWUgPSAiYXV0by1sb2FkLXNjcmlwdHMi OworKyAgY21kID0gbG9va3VwX2NtZCAoJmNtZF9uYW1lLCBzaG93bGlzdCwgIiIsIC0xLCAxKTsK KysgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgInNob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7 CisrCisrICBhZGRfY21kICgicHl0aG9uLXNjcmlwdHMiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9f bG9hZF9weXRob25fc2NyaXB0cywKKysJICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGlj YWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMuXG5cCisrVXNhZ2U6IGluZm8gYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzIFtSRUdFWFBdIiksCisrCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0 ICgpKTsKKysKKysgIGNtZCA9IGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLCBpbmZvX2F1 dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAorK1ByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRp Y2FsbHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCBkZXByZWNhdGVkLiIpKTsKKysgIGRlcHJlY2F0 ZV9jbWQgKGNtZCwgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7CisgfQorIAorICNl bHNlIC8qICEgSEFWRV9QWVRIT04gKi8KKyAKKyB2b2lkCistbG9hZF9hdXRvX3NjcmlwdHNfZm9y X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK2dkYnB5X2xvYWRfYXV0b19zY3Jp cHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyB7CisgfQorIAorSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAorPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQt MTggMDA6NDQ6MjYuOTU4NDM3NTAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv cHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6NDQ6MjYuOTc5NDM3NDQ2ICswMjAwCitAQCAt NDEsNyArNDEsNyBAQCBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwCisg Cisgdm9pZCBwcmVzZXJ2ZV9weXRob25fdmFsdWVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg aHRhYl90IGNvcGllZF90eXBlcyk7CisgCistdm9pZCBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2Jq ZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworK3ZvaWQgZ2RicHlfbG9hZF9hdXRvX3Nj cmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKyAKKyBpbnQgZ2Ri cHlfc2hvdWxkX3N0b3AgKHN0cnVjdCBicmVha3BvaW50X29iamVjdCAqYnBfb2JqKTsKKyAKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9oZWxwLmV4cAkyMDEyLTAxLTA0IDA5OjE3OjQ1LjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDEy LTA0LTE4IDAwOjQ0OjI2Ljk4MDQzNzQ0NCArMDIwMAorQEAgLTI0LDcgKzI0LDcgQEAKKyBnZGJf c3RhcnQKKyAKKyAjIGZvcmNlIHRoZSBoZWlnaHQgb2YgdGhlIGRlYnVnZ2VyIHRvIGJlIHByZXR0 eSBsYXJnZSBzbyBubyBwYWdlcnMgZ2V0IHVzZWQKKy1nZGJfdGVzdF9ub19vdXRwdXQgInNldCBo ZWlnaHQgNDAwIiAidGVzdCBzZXQgaGVpZ2h0IgorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGhl aWdodCA1MDAiICJ0ZXN0IHNldCBoZWlnaHQiCisgCisgIyB1c2UgYSBsYXJnZXIgZXhwZWN0IGlu cHV0IGJ1ZmZlciBmb3IgbG9uZyBoZWxwIG91dHB1dHMuCisgIyB0ZXN0IGhlbHAgYWRkLXN5bWJv bC1maWxlCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJ MjAxMi0wMS0xNiAxNzoyMTo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0w NC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAKK0BAIC00MCw3ICs0MCw3IEBAIGdkYl9yZWlu aXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorIGdkYl9sb2FkICR7YmluZmlsZX0KKyAKKyAj IFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCistZ2RiX3Rlc3QgImluZm8gYXV0by1sb2Fk LXNjcmlwdHMiICJZZXMuKi8ke3Rlc3RmaWxlfS1nZGIucHkuKiIKKytnZGJfdGVzdCAiaW5mbyBh dXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiICJZZXMuKi8ke3Rlc3RmaWxlfS1nZGIucHkuKiIKKyAK KyBpZiAhW3J1bnRvX21haW5dIHsKKyAgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gbWFpbiIK K0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1z ZWN0aW9uLXNjcmlwdC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTAx LTE2IDE3OjIxOjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAw OjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAorQEAgLTUyLDExICs1MiwxMSBAQCBnZGJfcmVpbml0aWFs aXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKyBnZGJfbG9hZCAke2JpbmZpbGV9CisgCisgIyBWZXJp ZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgorLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZC1zY3Jp cHRzIiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxlfS5weS4q IgorK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgIlllcy4qJHt0ZXN0 ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKKyAjIEFnYWluLCB3aXRo IGEgcmVnZXhwIHRoaXMgdGltZS4KKy1nZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyAk e3Rlc3RmaWxlfSIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0Zmls ZX0ucHkuKiIKKytnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgJHt0ZXN0 ZmlsZX0iICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7dGVzdGZpbGV9LnB5 LioiCisgIyBBZ2Fpbiwgd2l0aCBhIHJlZ2V4cCB0aGF0IG1hdGNoZXMgbm8gc2NyaXB0cy4KKy1n ZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBuby1zY3JpcHQtbWF0Y2hlcy10aGlzIiBc CisrZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG5vLXNjcmlwdC1tYXRj aGVzLXRoaXMiIFwKKyAgICJObyBhdXRvLWxvYWQgc2NyaXB0cyBtYXRjaGluZyBuby1zY3JpcHQt bWF0Y2hlcy10aGlzLiIKKyAKKyBpZiAhW3J1bnRvX21haW5dIHsKCmRpZmYgLS1naXQgYS9nZGIt YXV0b2xvYWQtMTFvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTExb2YyMi5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFjNjhiMC4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xv YWQtMTFvZjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzQ0ICswLDAgQEAKLVtwYXRjaCM0 IDUvOF0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDkyLmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTQuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMi8wNC8xNyAxNTo1MTo0MQkxLjE0MTEzCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8w NC8xNyAxNTo1NDoyOAkxLjE0MTE0Ci0jIyAtMSw1ICsxLDM5IEBACi0gMjAxMi0wNC0xNyAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwlOZXcgb3B0aW9u ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIuCi0rCSogTkVXUzogTmV3IGNvbW1hbmRzICJzZXQg YXV0by1sb2FkIHNhZmUtcGF0aCIKLSsJYW5kICJzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgiLgot KwkqIGF1dG8tbG9hZC5jOiBJbmNsdWRlIGdkYl92ZWNzLmgsIHJlYWRsaW5lL3RpbGRlLmggYW5k IGNvbXBsZXRlci5oLgotKwkoYXV0b19sb2FkX3NhZmVfcGF0aCwgYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWMpCi0rCShhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUsIHNldF9hdXRvX2xvYWRf c2FmZV9wYXRoKQotKwkoc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoLCBhZGRfYXV0b19sb2FkX3Nh ZmVfcGF0aCwgZmlsZW5hbWVfaXNfaW5fZGlyKQotKwkoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2Fk X3NhZmVfcGF0aF92ZWMsIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcuCi0rCShzb3VyY2Vf Z2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IE5ldyB2YXJpYWJsZSBpc19zYWZlLiAgQ2FsbAotKwlm aWxlX2lzX2F1dG9fbG9hZF9zYWZlLiAgUmV0dXJuIGlmIGl0IGlzIG5vdC4KLSsJKHN0cnVjdCBs b2FkZWRfc2NyaXB0KTogTmV3IGZpZWxkIGxvYWRlZC4KLSsJKG1heWJlX2FkZF9zY3JpcHQpOiBB ZGQgcGFyYW1ldGVyIGxvYWRlZC4gIEluaXRpYWxpemUgU0xPVCB3aXRoIGl0LgotKwkocHJpbnRf c2NyaXB0KTogVXNlIExPQURFRCBpbmRpY2F0b3IgaW5zdGVhZCBvZiBGVUxMX1BBVEguICBDaGFu Z2UKLSsJb3V0cHV0ICJNaXNzaW5nIiB0byAiTm8iLgotKwkoX2luaXRpYWxpemVfYXV0b19sb2Fk KTogTmV3IHZhcmlhYmxlIGNtZC4gIEluaXRpYWxpemUKLSsJYXV0b19sb2FkX3NhZmVfcGF0aC4g IFJlZ2lzdGVyICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIsCi0rCSJzaG93IGF1dG8tbG9hZCBz YWZlLXBhdGgiIGFuZCAiYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgiLgotKwkqIGF1dG8tbG9hZC5o IChtYXliZV9hZGRfc2NyaXB0KTogQWRkIHBhcmFtZXRlciBsb2FkZWQuCi0rCShmaWxlX2lzX2F1 dG9fbG9hZF9zYWZlKTogTmV3IGRlY2xhcmF0aW9uLgotKwkqIGNvbmZpZy5pbjogUmVnZW5lcmF0 ZS4KLSsJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCi0rCSogY29uZmlndXJlLmFjOiBOZXcgcGFy YW1ldGVycyAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aAotKwlhbmQgLS13aXRob3V0LWF1dG8t bG9hZC1zYWZlLXBhdGguCi0rCSogbGludXgtdGhyZWFkLWRiLmMgKHRyeV90aHJlYWRfZGJfbG9h ZF9mcm9tX3BkaXJfMSkKLSsJKHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2Rpcik6IENoZWNrIGZp bGVfaXNfYXV0b19sb2FkX3NhZmUgZmlyc3QuCi0rCSogbWFpbi5jIChjYXB0dXJlZF9tYWluKTog Q2hlY2sgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSBmb3IKLSsJTE9DQUxfR0RCSU5JVC4KLSsJKiBw eXRob24vcHktYXV0by1sb2FkLmMgKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUp OiBOZXcKLSsJdmFyaWFibGUgaXNfc2FmZS4gIENhbGwgZmlsZV9pc19hdXRvX2xvYWRfc2FmZS4g IFJldHVybiBpZiBpdCBpcyBub3QuCi0rCShzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogQ2FsbCBm aWxlX2lzX2F1dG9fbG9hZF9zYWZlLiAgUmV0dXJuIGlmIGl0IGlzCi0rCW5vdC4KLSsKLSsyMDEy LTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0g CWF1dG8tbG9hZDogSW1wbGVtZW50YXRpb24uCi0gCSogTkVXUzogTmV3IGRlc2NyaXB0aW9ucyBm b3IgImluZm8gYXV0by1sb2FkIiwKLSAJImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwgImlu Zm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9ORVdTCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9O RVdTCTIwMTItMDQtMTggMDA6NDk6MDIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjMzLjI4MjcwNjMxOSArMDIwMAotQEAg LTY3LDYgKzY3LDExIEBAIHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIG9ufG9mZgotIHNob3cg YXV0by1sb2FkIGxpYnRocmVhZC1kYgotICAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgaW5mZXJp b3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeS4KLSAKLStzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aCA8ZGlyMT5bOjxkaXIyPi4uLl0KLStzaG93IGF1dG8tbG9hZCBzYWZl LXBhdGgKLSsgIFNldCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZl IHRvIGF1dG8tbG9hZCBmaWxlcy4KLSsgIFRoZSBkZWxpbWl0ZXIgKCc6JyBhYm92ZSkgbWF5IGRp ZmZlciBhY2NvcmRpbmcgdG8gdGhlIGhvc3QgcGxhdGZvcm0uCi0rCi0gKiBOZXcgY29tbWFuZCBs aW5lIG9wdGlvbnMKLSAKLSAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlrZSAt LWNvbW1hbmQsIC14IGJ1dCBleGVjdXRlIGl0Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS42 MDc3MzYwMjAgKzAyMDAKLUBAIC0zMiw2ICszMiw5IEBACi0gI2luY2x1ZGUgImdkYmNtZC5oIgot ICNpbmNsdWRlICJjbGkvY2xpLWRlY29kZS5oIgotICNpbmNsdWRlICJjbGkvY2xpLXNldHNob3cu aCIKLSsjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKLSsjaW5jbHVkZSAicmVhZGxpbmUvdGlsZGUuaCIK LSsjaW5jbHVkZSAiY29tcGxldGVyLmgiCi0gCi0gLyogVGhlIHN1ZmZpeCBvZiBwZXItb2JqZmls ZSBzY3JpcHRzIHRvIGF1dG8tbG9hZCBhcyBub24tUHl0aG9uIGNvbW1hbmQgZmlsZXMuCi0gICAg RS5nLiBXaGVuIHRoZSBwcm9ncmFtIGxvYWRzIGxpYmZvby5zbywgbG9vayBmb3IgbGliZm9vLWdk Yi5nZGIuICAqLwotQEAgLTkwLDYgKzkzLDE4MSBAQCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJp bml0IChzdHJ1Y3QgdWlfCi0gCQkgICAgdmFsdWUpOwotIH0KLSAKLSsvKiBEaXJlY3RvcnkgbGlz dCBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuICBJdCBpcyBub3QgY2hlY2tlZCBmb3IK LSsgICBhYnNvbHV0ZSBwYXRocyBidXQgdGhleSBhcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQuICBJ dCBpcyBpbml0aWFsaXplZCBieQotKyAgIF9pbml0aWFsaXplX2F1dG9fbG9hZC4gICovCi0rc3Rh dGljIGNoYXIgKmF1dG9fbG9hZF9zYWZlX3BhdGg7Ci0rCi0rLyogVmVjdG9yIG9mIGRpcmVjdG9y eSBlbGVtZW50cyBvZiBBVVRPX0xPQURfU0FGRV9QQVRIIHdpdGggZWFjaCBvbmUgbm9ybWFsaXpl ZAotKyAgIGJ5IHRpbGRlX2V4cGFuZCBhbmQgcG9zc2libHkgZWFjaCBlbnRyaWVzIGhhcyBhZGRl ZCBpdHMgZ2RiX3JlYWxwYXRoCi0rICAgY291bnRlcnBhcnQuICAqLwotK3N0YXRpYyBWRUMgKGNo YXJfcHRyKSAqYXV0b19sb2FkX3NhZmVfcGF0aF92ZWM7Ci0rCi0rLyogVXBkYXRlIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjIGZyb20gY3VycmVudCBBVVRPX0xPQURfU0FGRV9QQVRILiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKLSt7 Ci0rICBWRUMgKGNoYXJfcHRyKSAqZGlyX3ZlYyA9IE5VTEw7Ci0rICB1bnNpZ25lZCBsZW47Ci0r ICBpbnQgaXg7Ci0rCi0rICBmcmVlX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWMpOwotKwotKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0 cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotKyAgbGVuID0gVkVDX2xlbmd0aCAoY2hhcl9w dHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsKLSsKLSsgIC8qIEFwcGx5IHRpbGRlX2V4cGFu ZCBhbmQgZ2RiX3JlYWxwYXRoIHRvIGVhY2ggQVVUT19MT0FEX1NBRkVfUEFUSF9WRUMKLSsgICAg IGVsZW1lbnQuICAqLwotKyAgZm9yIChpeCA9IDA7IGl4IDwgbGVuOyBpeCsrKQotKyAgICB7Ci0r ICAgICAgY2hhciAqZGlyID0gVkVDX2luZGV4IChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWMsIGl4KTsKLSsgICAgICBjaGFyICpleHBhbmRlZCA9IHRpbGRlX2V4cGFuZCAoZGlyKTsK LSsgICAgICBjaGFyICpyZWFsX3BhdGggPSBnZGJfcmVhbHBhdGggKGV4cGFuZGVkKTsKLSsKLSsg ICAgICAvKiBFbnN1cmUgdGhlIGN1cnJlbnQgZW50cnkgaXMgYXQgbGVhc3QgdGlsZGVfZXhwYW5k LWVkLiAgKi8KLSsgICAgICB4ZnJlZSAoZGlyKTsKLSsgICAgICBWRUNfcmVwbGFjZSAoY2hhcl9w dHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZXhwYW5kZWQpOwotKwotKyAgICAgIC8q IElmIGdkYl9yZWFscGF0aCByZXR1cm5zIGEgZGlmZmVyZW50IGNvbnRlbnQsIGFwcGVuZCBpdC4g ICovCi0rICAgICAgaWYgKHN0cmNtcCAocmVhbF9wYXRoLCBleHBhbmRlZCkgPT0gMCkKLSsJeGZy ZWUgKHJlYWxfcGF0aCk7Ci0rICAgICAgZWxzZQotKwlWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwg YXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7Ci0rICAgIH0KLSt9Ci0rCi0rLyog InNldCIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlvbiB2 YXJpYWJsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCAo Y2hhciAqYXJncywgaW50IGZyb21fdHR5LCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLSt7 Ci0rICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7Ci0rfQotKwotKy8qICJzaG93 IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0aW9uIHZhcmlh YmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX3NhZmVfcGF0aCAoc3Ry dWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkgIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBpZiAoKnZhbHVlID09IDApCi0r ICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZCBmaWxlcyBhcmUgc2FmZSB0 byBsb2FkIGZyb20gYW55ICIKLSsJCQkgICAgICAiZGlyZWN0b3J5LlxuIikpOwotKyAgZWxzZQot KyAgICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20g d2hpY2ggaXQgaXMgc2FmZSB0byAiCi0rCQkJICAgICAgImF1dG8tbG9hZCBmaWxlcyBpcyAlcy5c biIpLAotKwkJICAgICAgdmFsdWUpOwotK30KLSsKLSsvKiAiYWRkLWF1dG8tbG9hZC1zYWZlLXBh dGgiIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRpb24KLSsg ICB2YXJpYWJsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLSthZGRfYXV0b19sb2FkX3NhZmVfcGF0 aCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sKLSsgIGNoYXIgKnM7Ci0rCi0rICBpZiAo YXJncyA9PSBOVUxMIHx8ICphcmdzID09IDApCi0rICAgIGVycm9yIChfKCJcCi0rQWRkaW5nIGVt cHR5IGRpcmVjdG9yeSBlbGVtZW50IGRpc2FibGVzIHRoZSBhdXRvLWxvYWQgc2FmZS1wYXRoIHNl Y3VyaXR5LiAgXAotK1VzZSAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGluc3RlYWQgaWYgeW91 IG1lYW4gdGhhdC4iKSk7Ci0rCi0rICBzID0geHN0cnByaW50ZiAoIiVzJWMlcyIsIGF1dG9fbG9h ZF9zYWZlX3BhdGgsIERJUk5BTUVfU0VQQVJBVE9SLCBhcmdzKTsKLSsgIHhmcmVlIChhdXRvX2xv YWRfc2FmZV9wYXRoKTsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSBzOwotKwotKyAgYXV0b19s b2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOwotK30KLSsKLSsvKiBSZXR1cm4gMSBpZiBGSUxF TkFNRSBpcyBlcXVhbCB0byBESVIgb3IgaWYgRklMRU5BTUUgYmVsb25ncyB0byB0aGUKLSsgICBz dWJkaXJlY3RvcnkgRElSLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLiAgZ2RiX3JlYWxwYXRoIG5vcm1h bGl6YXRpb24gaXMgbmV2ZXIKLSsgICBkb25lIGhlcmUuICAqLwotKwotK3N0YXRpYyBBVFRSSUJV VEVfUFVSRSBpbnQKLStmaWxlbmFtZV9pc19pbl9kaXIgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBj b25zdCBjaGFyICpkaXIpCi0rewotKyAgc2l6ZV90IGRpcl9sZW4gPSBzdHJsZW4gKGRpcik7Ci0r Ci0rICB3aGlsZSAoZGlyX2xlbiAmJiBJU19ESVJfU0VQQVJBVE9SIChkaXJbZGlyX2xlbiAtIDFd KSkKLSsgICAgZGlyX2xlbi0tOwotKwotKyAgcmV0dXJuIChmaWxlbmFtZV9uY21wIChkaXIsIGZp bGVuYW1lLCBkaXJfbGVuKSA9PSAwCi0rCSAgJiYgKElTX0RJUl9TRVBBUkFUT1IgKGZpbGVuYW1l W2Rpcl9sZW5dKQotKwkgICAgICB8fCBmaWxlbmFtZVtkaXJfbGVuXSA9PSAnXDAnKSk7Ci0rfQot KwotKy8qIFJldHVybiAxIGlmIEZJTEVOQU1FIGJlbG9uZ3MgdG8gb25lIG9mIGRpcmVjdG9yeSBj b21wb25lbnRzIG9mCi0rICAgQVVUT19MT0FEX1NBRkVfUEFUSF9WRUMuICBSZXR1cm4gMCBvdGhl cndpc2UuCi0rICAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlIGlzIG5ldmVyIGNhbGxl ZC4KLSsgICAqRklMRU5BTUVfUkVBTFAgbWF5IGJlIHVwZGF0ZWQgYnkgZ2RiX3JlYWxwYXRoIG9m IEZJTEVOQU1FIC0gaXQgaGFzIHRvIGJlCi0rICAgZnJlZWQgYnkgdGhlIGNhbGxlci4gICovCi0r Ci0rc3RhdGljIGludAotK2ZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjIChj b25zdCBjaGFyICpmaWxlbmFtZSwKLSsJCQkJCWNoYXIgKipmaWxlbmFtZV9yZWFscCkKLSt7Ci0r ICBjaGFyICpkaXI7Ci0rICBpbnQgaXg7Ci0rCi0rICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUg KGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGRpcik7ICsraXgpCi0rICAg IGlmICgqZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCAmJiBmaWxlbmFtZV9pc19pbl9kaXIgKGZpbGVu YW1lLCBkaXIpKQotKyAgICAgIGJyZWFrOwotKyAgCi0rICBpZiAoZGlyID09IE5VTEwpCi0rICAg IHsKLSsgICAgICBpZiAoKmZpbGVuYW1lX3JlYWxwID09IE5VTEwpCi0rCSpmaWxlbmFtZV9yZWFs cCA9IGdkYl9yZWFscGF0aCAoZmlsZW5hbWUpOwotKwotKyAgICAgIGZvciAoaXggPSAwOyBWRUNf aXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsKLSsJ ICAgKytpeCkKLSsJaWYgKGZpbGVuYW1lX2lzX2luX2RpciAoKmZpbGVuYW1lX3JlYWxwLCBkaXIp KQotKwkgIGJyZWFrOwotKyAgICB9Ci0rCi0rICBpZiAoZGlyICE9IE5VTEwpCi0rICAgIHJldHVy biAxOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIFJldHVybiAxIGlmIEZJTEVOQU1FIGlz IGxvY2F0ZWQgaW4gb25lIG9mIHRoZSBkaXJlY3RvcmllcyBvZgotKyAgIEFVVE9fTE9BRF9TQUZF X1BBVEguICBPdGhlcndpc2UgY2FsbCB3YXJuaW5nIGFuZCByZXR1cm4gMC4gIEZJTEVOQU1FIGRv ZXMKLSsgICBub3QgaGF2ZSB0byBiZSBhbiBhYnNvbHV0ZSBwYXRoLgotKwotKyAgIEV4aXN0ZW5j ZSBvZiBGSUxFTkFNRSBpcyBub3QgY2hlY2tlZC4gIEZ1bmN0aW9uIHdpbGwgc3RpbGwgZ2l2ZSBh IHdhcm5pbmcKLSsgICBldmVuIGlmIHRoZSBjYWxsZXIgd291bGQgcXVpZXRseSBza2lwIG5vbi1l eGlzdGluZyBmaWxlIGluIHVuc2FmZQotKyAgIGRpcmVjdG9yeS4gICovCi0rCi0raW50Ci0rZmls ZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0rewotKyAgY2hhciAq ZmlsZW5hbWVfcmVhbCA9IE5VTEw7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSsKLSsg IGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmZpbGVuYW1l X3JlYWwpOwotKwotKyAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVj IChmaWxlbmFtZSwgJmZpbGVuYW1lX3JlYWwpKQotKyAgICB7Ci0rICAgICAgZG9fY2xlYW51cHMg KGJhY2tfdG8pOwotKyAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICBhdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlY191cGRhdGUgKCk7Ci0rICBpZiAoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWMgKGZpbGVuYW1lLCAmZmlsZW5hbWVfcmVhbCkpCi0rICAgIHsKLSsgICAgICBk b19jbGVhbnVwcyAoYmFja190byk7Ci0rICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgIHdh cm5pbmcgKF8oIkZpbGUgXCIlc1wiIGF1dG8tbG9hZGluZyBoYXMgYmVlbiBkZWNsaW5lZCBieSB5 b3VyICIKLSsJICAgICAiYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byBcIiVzXCIuIiksCi0r CSAgIGZpbGVuYW1lX3JlYWwsIGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotKwotKyAgZG9fY2xlYW51 cHMgKGJhY2tfdG8pOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotIC8qIERlZmluaXRpb24gb2Ygc2Ny aXB0IGxhbmd1YWdlIGZvciBHREIgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcy4gICovCi0g Ci0gc3RhdGljIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2Ugc2NyaXB0X2xhbmd1YWdlX2dk YgotQEAgLTk5LDEzICsyNzcsMjAgQEAgc3RhdGljIHZvaWQKLSBzb3VyY2VfZ2RiX3NjcmlwdF9m b3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCi0gCQkJICAg ICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSsgIGludCBpc19zYWZlOwotICAgc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0gICB2b2xhdGlsZSBzdHJ1Y3Qg Z2RiX2V4Y2VwdGlvbiBlOwotIAotKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUg KGZpbGVuYW1lKTsKLSsKLSAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0 b28gc28gImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgotICAgICAgY2FuIHByaW50IGl0LiAg Ki8KLSAgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGlu ZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLS0gIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9p bmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfZ2RiKTsKLSsgIG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBpc19zYWZlLCBmaWxlbmFtZSwgZmlsZW5hbWUsCi0r CQkgICAgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOwotKwotKyAgaWYgKCFpc19zYWZlKQotKyAgICBy ZXR1cm47Ci0gCi0gICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKLSAgICAgewotQEAg LTE0MCw2ICszMjUsOSBAQCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdAotICAgICAgaW5hY2Nlc3NpYmxl KS4gICovCi0gICBjb25zdCBjaGFyICpmdWxsX3BhdGg7Ci0gCi0rICAvKiBOb24temVybyBpZiB0 aGlzIHNjcmlwdCBoYXMgYmVlbiBsb2FkZWQuICAqLwotKyAgaW50IGxvYWRlZDsKLSsKLSAgIGNv bnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlOwotIH07Ci0gCi1AQCAtMjMyLDEy ICs0MjAsMTMgQEAgZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAocwotICAg cmV0dXJuIGluZm87Ci0gfQotIAotLS8qIEFkZCBzY3JpcHQgTkFNRSBpbiBMQU5HVUFHRSB0byBo YXNoIHRhYmxlIG9mIFBTUEFDRV9JTkZPLgotLSAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBz Y3JpcHQgd2Fzbid0IGZvdW5kLiAgVGhlIHJlc3VsdCBpcwotKy8qIEFkZCBzY3JpcHQgTkFNRSBp biBMQU5HVUFHRSB0byBoYXNoIHRhYmxlIG9mIFBTUEFDRV9JTkZPLiAgTE9BREVEIDEgaWYgdGhl Ci0rICAgc2NyaXB0IGhhcyBiZWVuIChpcyBnb2luZyB0bykgYmUgbG9hZGVkLCAwIG90aGVyd2lz ZSAoc3VjaCBhcyBpZiBpdCBoYXMgbm90Ci0rICAgYmVlbiBmb3VuZCkuICBGVUxMX1BBVEggaXMg TlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4gIFRoZSByZXN1bHQgaXMKLSAgICB0cnVl IGlmIHRoZSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLwotIAotIGlu dAotLW1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFj ZV9pbmZvLAotK21heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KnBzcGFjZV9pbmZvLCBpbnQgbG9hZGVkLAotIAkJICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBj aGFyICpmdWxsX3BhdGgsCi0gCQkgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1 YWdlKQotIHsKLUBAIC0yNzEsNiArNDYwLDcgQEAgbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1 dG9fbG9hZF9wc3BhYwotIAl9Ci0gICAgICAgZWxzZQotIAkoKnNsb3QpLT5mdWxsX3BhdGggPSBO VUxMOwotKyAgICAgICgqc2xvdCktPmxvYWRlZCA9IGxvYWRlZDsKLSAgICAgICAoKnNsb3QpLT5s YW5ndWFnZSA9IGxhbmd1YWdlOwotICAgICB9Ci0gCi1AQCAtNDMyLDcgKzYyMiw3IEBAIHByaW50 X3NjcmlwdCAoc3RydWN0IGxvYWRlZF9zY3JpcHQgKnNjcmkKLSAKLSAgIGNoYWluID0gbWFrZV9j bGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKLSAKLS0gIHVpX291 dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5mdWxsX3BhdGggPyAiWWVz IiA6ICJNaXNzaW5nIik7Ci0rICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImxvYWRlZCIs IHNjcmlwdC0+bG9hZGVkID8gIlllcyIgOiAiTm8iKTsKLSAgIHVpX291dF9maWVsZF9zdHJpbmcg KHVpb3V0LCAic2NyaXB0Iiwgc2NyaXB0LT5uYW1lKTsKLSAgIHVpX291dF90ZXh0ICh1aW91dCwg IlxuIik7Ci0gCi1AQCAtNzE4LDYgKzkwOCw4IEBAIHZvaWQgX2luaXRpYWxpemVfYXV0b19sb2Fk ICh2b2lkKTsKLSB2b2lkCi0gX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQotIHsKLSsgIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjbWQ7Ci0rCi0gICBhdXRvX2xvYWRfcHNwYWNlX2RhdGEK LSAgICAgPSByZWdpc3Rlcl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0aF9jbGVhbnVwIChhdXRvX2xv YWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7Ci0gCi1AQCAtNzU3LDQgKzk0OSwzMCBAQCBUaGlzIG9w dGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmCi0gCSAgIF8oIlByaW50IHdoZXRoZXIg Y3VycmVudCBkaXJlY3RvcnkgLmdkYmluaXQgZmlsZSBoYXMgYmVlbiBsb2FkZWQuXG5cCi0gVXNh Z2U6IGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiKSwKLSAJICAgYXV0b19sb2FkX2luZm9f Y21kbGlzdF9nZXQgKCkpOwotKwotKyAgYXV0b19sb2FkX3NhZmVfcGF0aCA9IHhzdHJkdXAgKERF RkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCk7Ci0rICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191 cGRhdGUgKCk7Ci0rICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJzYWZlLXBh dGgiLCBjbGFzc19zdXBwb3J0LAotKwkJCQkgICAgICZhdXRvX2xvYWRfc2FmZV9wYXRoLCBfKCJc Ci0rU2V0IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBh dXRvLWxvYWQgZmlsZXMuIiksIF8oIlwKLStTaG93IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZy b20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuIiksIF8oIlwKLStWYXJpb3Vz IGZpbGVzIGxvYWRlZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgLi4uJyBv cHRpb25zIG11c3RcblwKLStiZSBsb2NhdGVkIGluIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgbGlz dGVkIGJ5IHRoaXMgb3B0aW9uLiAgV2FybmluZyB3aWxsIGJlXG5cCi0rcHJpbnRlZCBhbmQgZmls ZSB3aWxsIG5vdCBiZSB1c2VkIG90aGVyd2lzZS4gIFVzZSBlbXB0eSBzdHJpbmcgKG9yIGV2ZW5c blwKLStlbXB0eSBkaXJlY3RvcnkgZW50cnkpIHRvIGFsbG93IGFueSBmaWxlIGZvciB0aGUgJ3Nl dCBhdXRvLWxvYWQgLi4uJyBvcHRpb25zLlxuXAotK1RoaXMgb3B0aW9uIGlzIGlnbm9yZWQgZm9y IHRoZSBraW5kcyBvZiBmaWxlcyBoYXZpbmcgJ3NldCBhdXRvLWxvYWQgLi4uIG9mZicuXG5cCi0r VGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZl cmlvcnMuIiksCi0rCQkJCSAgICAgc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0rCQkJCSAgICAg c2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoLAotKwkJCQkgICAgIGF1dG9fbG9hZF9zZXRfY21kbGlz dF9nZXQgKCksCi0rCQkJCSAgICAgYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCkpOwotKwot KyAgY21kID0gYWRkX2NtZCAoImFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIiwgY2xhc3Nfc3VwcG9y dCwKLSsJCSBhZGRfYXV0b19sb2FkX3NhZmVfcGF0aCwKLSsJCSBfKCJBZGQgZW50cmllcyB0byB0 aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgIgotKwkJICAgInRv IGF1dG8tbG9hZCBmaWxlcy5cblwKLStTZWUgdGhlIGNvbW1hbmRzICdzZXQgYXV0by1sb2FkIHNh ZmUtcGF0aCcgYW5kICdzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgnIHRvXG5cCi0rYWNjZXNzIHRo ZSBjdXJyZW50IGZ1bGwgbGlzdCBzZXR0aW5nLiIpLAotKwkJICZjbWRsaXN0KTsKLSsgIHNldF9j bWRfY29tcGxldGVyIChjbWQsIGZpbGVuYW1lX2NvbXBsZXRlcik7Ci0gfQotSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTIt MDQtMTggMDA6NDk6MjEuNjA3NzM2MDIwICswMjAwCi1AQCAtMzksNyArMzksOCBAQCBleHRlcm4g aW50IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlCi0gZXh0ZXJuIHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKgotICAgZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGlu ZyAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSk7Ci0gZXh0ZXJuIGludCBtYXliZV9hZGRf c2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywKLS0JCQkg ICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKLSsJCQkgICAgIGlu dCBsb2FkZWQsIGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJICAgICBjb25zdCBjaGFyICpmdWxsX3Bh dGgsCi0gCQkJICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci0g ZXh0ZXJuIHZvaWQgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKLSAJCQkJICAgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2Up OwotQEAgLTU0LDQgKzU1LDYgQEAgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0 b19sbwotIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9zaG93X2Nt ZGxpc3RfZ2V0ICh2b2lkKTsKLSBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRv X2xvYWRfaW5mb19jbWRsaXN0X2dldCAodm9pZCk7Ci0gCi0rZXh0ZXJuIGludCBmaWxlX2lzX2F1 dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci0rCi0gI2VuZGlmIC8qIEFVVE9f TE9BRF9IICovCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWcuaW4JMjAxMi0w NC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9jb25maWcuaW4JMjAxMi0wNC0xOCAwMDo0OToyMS42MDc3MzYwMjAgKzAyMDAKLUBAIC00Myw2 ICs0Myw5IEBACi0gICAgbW92ZWQuICovCi0gI3VuZGVmIERFQlVHRElSX1JFTE9DQVRBQkxFCi0g Ci0rLyogRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAqLwotKyN1 bmRlZiBERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgKLSsKLSAvKiBEZWZpbmUgdG8gQkZEJ3Mg ZGVmYXVsdCBhcmNoaXRlY3R1cmUuICovCi0gI3VuZGVmIERFRkFVTFRfQkZEX0FSQ0gKLSAKLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA0LTE4IDAwOjQ2OjQ3 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQky MDEyLTA0LTE4IDAwOjQ5OjIxLjYxMTczNjAxMCArMDIwMAotQEAgLTk1NSw2ICs5NTUsNyBAQCB3 aXRoX3NlcGFyYXRlX2RlYnVnX2RpcgotIHdpdGhfZ2RiX2RhdGFkaXIKLSB3aXRoX3JlbG9jYXRl ZF9zb3VyY2VzCi0gd2l0aF9ycG0KLSt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgKLSBlbmFibGVf dGFyZ2V0cwotIGVuYWJsZV82NF9iaXRfYmZkCi0gZW5hYmxlX2dkYmNsaQotQEAgLTE2NjYsNiAr MTY2NywxMCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMKLSAgIC0t d2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1 Z2luZm9zICh5ZXMvbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYuIGF1dG89bGli cnBtLnNvKQotKyAgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVz Ci0rICAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9ucwotICAgLS13 aXRoLWxpYnVud2luZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9y dAotICAgLS13aXRoLWN1cnNlcyAgICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0 ZWFkIG9mIHRoZSB0ZXJtY2FwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5Ci1A QCAtODQ3Nyw2ICs4NDgyLDMyIEBAICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRSUE1fUEtH X0VSUk8KLSAgIGZpCi0gZmkKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBhdGgiID4mNQotKyRh c19lY2hvX24gImNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBhdGguLi4gIiA+ JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGggd2Fz IGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoK3NldH0iID0gc2V0 OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aDsgaWYgdGVzdCAi JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCi0rICAgd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoPSIiCi0rIGZpCi0rZWxzZQotKyAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo PSIkcHJlZml4IgotK2ZpCi0rCi0rCi0rICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVm aXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKLSsgIHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUg JiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKLSsgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAk d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoYAotKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRh Y19kZWZpbmVfZGlyYAotKwotK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIERF RkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCAiJGFjX2RlZmluZV9kaXIiCi0rX0FDRU9GCi0rCi0r Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGgiID4mNQotKyRhc19lY2hvICIkd2l0aF9hdXRvX2xvYWRfc2Fm ZV9wYXRoIiA+JjY7IH0KLSsKLSAKLSAKLSBzdWJkaXJzPSIkc3ViZGlycyB0ZXN0c3VpdGUiCi1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNC0xOCAw MDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25m aWd1cmUuYWMJMjAxMi0wNC0xOCAwMDo0OToyMS42MTE3MzYwMTAgKzAyMDAKLUBAIC0zMzksNiAr MzM5LDE4IEBAIGV4dGVybiBycG1kYk1hdGNoSXRlcmF0b3IgcnBtdHNJbml0SXRlcmEKLSAgIGZp Ci0gZmkKLSAgCi0rQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1w YXRoXSkKLStBQ19BUkdfV0lUSChhdXRvLWxvYWQtc2FmZS1wYXRoLAotK0FTX0hFTFBfU1RSSU5H KFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRIXSwgW2RpcmVjdG9yaWVzIHNhZmUgdG8g aG9sZCBhdXRvLWxvYWRlZCBmaWxlc10pCi0rQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1hdXRv LWxvYWQtc2FmZS1wYXRoXSwgW2RvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2Nh dGlvbnNdKSwKLStbaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0 aGVuCi0rICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIiCi0rIGZpXSwKLStbd2l0aF9hdXRv X2xvYWRfc2FmZV9wYXRoPSIkcHJlZml4Il0pCi0rQUNfREVGSU5FX0RJUihERUZBVUxUX0FVVE9f TE9BRF9TQUZFX1BBVEgsIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCwKLSsJICAgICAgW0RpcmVj dG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy5dKQotK0FDX01TR19SRVNVTFQo WyR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhdKQotKwotIEFDX0NPTkZJR19TVUJESVJTKHRlc3Rz dWl0ZSkKLSAKLSAjIENoZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQg Y29uZmlndXJhdGlvbnMKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJl YWQtZGIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbGlu dXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ5 OjIxLjYxMjczNjAwNyArMDIwMAotQEAgLTg2OCw3ICs4NjgsMTEgQEAgdHJ5X3RocmVhZF9kYl9s b2FkX2Zyb21fcGRpcl8xIChzdHJ1Y3QgbwotICAgLyogVGhpcyBzaG91bGQgYXQgbWluaW11bSBo aXQgdGhlIGZpcnN0IGNoYXJhY3Rlci4gICovCi0gICBnZGJfYXNzZXJ0IChjcCAhPSBOVUxMKTsK LSAgIHN0cmNweSAoY3AgKyAxLCBMSUJUSFJFQURfREJfU08pOwotLSAgcmVzdWx0ID0gdHJ5X3Ro cmVhZF9kYl9sb2FkIChwYXRoKTsKLSsKLSsgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAo cGF0aCkpCi0rICAgIHJlc3VsdCA9IDA7Ci0rICBlbHNlCi0rICAgIHJlc3VsdCA9IHRyeV90aHJl YWRfZGJfbG9hZCAocGF0aCk7Ci0gCi0gICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0gICByZXR1 cm4gcmVzdWx0OwotQEAgLTkzNCw3ICs5MzgsMTEgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21f ZGlyIChjb25zdCBjaGFyCi0gICBtZW1jcHkgKHBhdGgsIGRpciwgZGlyX2xlbik7Ci0gICBwYXRo W2Rpcl9sZW5dID0gJy8nOwotICAgc3RyY3B5IChwYXRoICsgZGlyX2xlbiArIDEsIExJQlRIUkVB RF9EQl9TTyk7Ci0tICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOwotKwotKyAg aWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKLSsgICAgcmVzdWx0ID0gMDsKLSsg IGVsc2UKLSsgICAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKLSAKLSAgIGRv X2NsZWFudXBzIChjbGVhbnVwKTsKLSAgIHJldHVybiByZXN1bHQ7Ci1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvbWFpbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEy MC5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0OToyMS42MTI3 MzYwMDcgKzAyMDAKLUBAIC0xMDI2LDcgKzEwMjYsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpk YXRhKQotICAgICB7Ci0gICAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBn ZGJfcmVhbHBhdGggKGxvY2FsX2dkYmluaXQpOwotIAotLSAgICAgIGlmICghaW5oaWJpdF9nZGJp bml0ICYmIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0KQotKyAgICAgIGlmICghaW5oaWJpdF9nZGJp bml0ICYmIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0Ci0rCSAgJiYgZmlsZV9pc19hdXRvX2xvYWRf c2FmZSAobG9jYWxfZ2RiaW5pdCkpCi0gCXsKLSAJICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9s b2FkZWQgPSAxOwotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4 aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDk6MjEuNjIw NzM1OTg3ICswMjAwCi1AQCAtMjA4MDEsNiArMjA4MDEsOCBAQCBnZGItc2NyaXB0czogIEF1dG8t bG9hZGluZyBvZiBjYW5uZWQgc2VxCi0gbGlidGhyZWFkLWRiOiAgQXV0by1sb2FkaW5nIG9mIGlu ZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYiBpcyBvbi4KLSBsb2NhbC1nZGJpbml0OiAgQXV0 by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG9u LgotIHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIG9u LgotK3NhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZl IHRvIGF1dG8tbG9hZCBmaWxlcwotKyAgICAgICAgICAgIGlzIC91c3IvbG9jYWwuCi0gQGVuZCBz bWFsbGV4YW1wbGUKLSAKLSBAYW5jaG9ye2luZm8gYXV0by1sb2FkfQotQEAgLTIwODcyLDEyICsy MDg3NCwxOSBAQCBUaGVzZSBhcmUgQHZhbHVle0dEQk59IGNvbnRyb2wgY29tbWFuZHMKLSBAdGFi IFNob3cgc2V0dGluZyBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCi0gQGl0ZW0gQHhyZWZ7 aW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifS4KLSBAdGFiIFNob3cgc3RhdGUgb2YgdGhyZWFk IGRlYnVnZ2luZyBsaWJyYXJ5LgotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgc2FmZS1wYXRo fS4KLStAdGFiIENvbnRyb2wgZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgYXV0b21hdGljIGxvYWRp bmcuCi0rQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofS4KLStAdGFiIFNob3cg ZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgYXV0b21hdGljIGxvYWRpbmcuCi0rQGl0ZW0gQHhyZWZ7 YWRkLWF1dG8tbG9hZC1zYWZlLXBhdGh9LgotK0B0YWIgQWRkIGRpcmVjdG9yeSB0cnVzdGVkIGZv ciBhdXRvbWF0aWMgbG9hZGluZy4KLSBAZW5kIG11bHRpdGFibGUKLSAKLSBAbWVudQotICogSW5p dCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeTo6IEBzYW1we3NldC9zaG93L2luZm8gYXV0 by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0gKiBsaWJ0aHJlYWRfZGIuc28uMSBmaWxlOjogICAgICAg ICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQotICogb2Jq ZmlsZS1nZGIuZ2RiIGZpbGU6OiAgICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0 by1sb2FkIGdkYi1zY3JpcHR9Ci0rKiBBdXRvLWxvYWRpbmcgc2FmZSBwYXRoOjogICAgICAgICAg ICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgc2FmZS1wYXRofQotIEB4cmVme1B5dGhv biBBdXRvLWxvYWRpbmd9LgotIEBlbmQgbWVudQotIAotQEAgLTIwOTc4LDYgKzIwOTg3LDEwNCBA QCBhdXRvLWxvYWRlZC4KLSBJZiBAdmFye3JlZ2V4cH0gaXMgc3VwcGxpZWQgb25seSBjYW5uZWQg c2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgd2l0aAotIG1hdGNoaW5nIG5hbWVzIGFyZSBw cmludGVkLgotIAotK0Bub2RlIEF1dG8tbG9hZGluZyBzYWZlIHBhdGgKLStAc3Vic2VjdGlvbiBT ZWN1cml0eSByZXN0cmljdGlvbiBmb3IgYXV0by1sb2FkaW5nCi0rQGNpbmRleCBhdXRvLWxvYWRp bmcgc2FmZS1wYXRoCi0rCi0rQXMgdGhlIGZpbGVzIG9mIGluZmVyaW9yIGNhbiBjb21lIGZyb20g dW50cnVzdGVkIHNvdXJjZSAoc3VjaCBhcyBzdWJtaXR0ZWQgYnkKLSthbiBhcHBsaWNhdGlvbiB1 c2VyKSBAdmFsdWV7R0RCTn0gZG9lcyBub3QgYWx3YXlzIGxvYWQgYW55IGZpbGVzIGF1dG9tYXRp Y2FsbHkuCi0rQHZhbHVle0dEQk59IHByb3ZpZGVzIHRoZSBAc2FtcHtzZXQgYXV0by1sb2FkIHNh ZmUtcGF0aH0gc2V0dGluZyB0byBsaXN0Ci0rZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgbG9hZGlu ZyBmaWxlcyBub3QgZXhwbGljaXRseSByZXF1ZXN0ZWQgYnkgdXNlci4KLSsKLStJZiB0aGUgcGF0 aCBpcyBub3Qgc2V0IHByb3Blcmx5IHlvdSB3aWxsIHNlZSBhIHdhcm5pbmcgYW5kIHRoZSBmaWxl IHdpbGwgbm90Ci0rZ2V0IGxvYWRlZDoKLSsKLStAc21hbGxleGFtcGxlCi0rJCAuL2dkYiAtcSAu L2dkYgotK1JlYWRpbmcgc3ltYm9scyBmcm9tIC9ob21lL3VzZXIvZ2RiL2dkYi4uLmRvbmUuCi0r d2FybmluZzogRmlsZSAiL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5nZGIiIGF1dG8tbG9hZGluZyBo YXMgYmVlbgotKyAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgn IHNldCB0byAiL3Vzci9sb2NhbCIuCi0rd2FybmluZzogRmlsZSAiL2hvbWUvdXNlci9nZGIvZ2Ri LWdkYi5weSIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCi0rICAgICAgICAgZGVjbGluZWQgYnkgeW91 ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KLStAZW5kIHNtYWxs ZXhhbXBsZQotKwotK1RoZSBsaXN0IG9mIHRydXN0ZWQgZGlyZWN0b3JpZXMgaXMgY29udHJvbGxl ZCBieSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgotKwotK0B0YWJsZSBAY29kZQotK0BhbmNob3J7 c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9Ci0rQGtpbmRleCBzZXQgYXV0by1sb2FkIHNhZmUtcGF0 aAotK0BpdGVtIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIEB2YXJ7ZGlyZWN0b3JpZXN9Ci0rU2V0 IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIChhbmQgdGhlaXIgc3ViZGlyZWN0b3JpZXMpIHRydXN0 ZWQgZm9yIGF1dG9tYXRpYwotK2xvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZiBzY3JpcHRzLiAgWW91 IGNhbiBhbHNvIGVudGVyIGEgc3BlY2lmaWMgdHJ1c3RlZCBmaWxlLgotK1RoZSBsaXN0IG9mIGRp cmVjdG9yaWVzIHVzZXMgZGlyZWN0b3J5IHNlcGFyYXRvciAoQHNhbXB7On0gb24gR05VIGFuZCBV bml4Ci0rc3lzdGVtcywgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQgTVMtRE9TKSB0byBzZXBh cmF0ZSBkaXJlY3Rvcmllcywgc2ltaWxhcmx5Ci0rdG8gdGhlIEBlbnZ7UEFUSH0gZW52aXJvbm1l bnQgdmFyaWFibGUuCi0rCi0rQGFuY2hvcntzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9Ci0rQGtp bmRleCBzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgKLStAaXRlbSBzaG93IGF1dG8tbG9hZCBzYWZl LXBhdGgKLStTaG93IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRp YyBsb2FkaW5nIGFuZCBleGVjdXRpb24gb2YKLStzY3JpcHRzLgotKwotK0BhbmNob3J7YWRkLWF1 dG8tbG9hZC1zYWZlLXBhdGh9Ci0rQGtpbmRleCBhZGQtYXV0by1sb2FkLXNhZmUtcGF0aAotK0Bp dGVtIGFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoCi0rQWRkIGFuIGVudHJ5IChvciBsaXN0IG9mIGVu dHJpZXMpIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYwotK2xv YWRpbmcgYW5kIGV4ZWN1dGlvbiBvZiBzY3JpcHRzLiAgTXVsdGlwbGUgZW50cmllcyBtYXkgYmUg ZGVsaW1pdGVkIGJ5IHRoZQotK2hvc3QgcGxhdGZvcm0gZGlyZWN0b3J5IHNlcGFyYXRvciBpbiB1 c2UuCi0rQGVuZCB0YWJsZQotKwotK1NldHRpbmcgdGhpcyB2YXJpYWJsZSB0byBhbiBlbXB0eSBz dHJpbmcgZGlzYWJsZXMgdGhpcyBzZWN1cml0eSBwcm90ZWN0aW9uLgotK1RoaXMgdmFyaWFibGUg aXMgc3VwcG9zZWQgdG8gYmUgc2V0IHRvIHRoZSBzeXN0ZW0gZGlyZWN0b3JpZXMgd3JpdGFibGUg YnkgdGhlCi0rc3lzdGVtIHN1cGVydXNlciBvbmx5LiAgVXNlcnMgY2FuIGFkZCB0aGVpciBzb3Vy Y2UgZGlyZWN0b3JpZXMgaW4gaW5pdCBmaWxlcyBpbgotK3RoZWlyIGhvbWUgZGlyZWN0b3JpZXMg KEBweHJlZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9KS4gIFNlZSBhbHNvIGRlcHJlY2F0ZWQK LStpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5Ci0rKEBweHJlZntJbml0IEZpbGUg aW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5IGR1cmluZyBTdGFydHVwfSkuCi0rCi0rVG8gZm9yY2Ug QHZhbHVle0dEQk59IHRvIGxvYWQgdGhlIGZpbGVzIGl0IGRlY2xpbmVkIHRvIGxvYWQgaW4gdGhl IHByZXZpb3VzCi0rZXhhbXBsZSwgeW91IGNvdWxkIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB3 YXlzOgotKwotK0BpdGVtaXplIEBidWxsZXQKLStAaXRlbSB+Ly5nZGJpbml0OiBhZGQtYXV0by1s b2FkLXNhZmUtcGF0aCB+L3NyYy9nZGIKLStTcGVjaWZ5IHRoaXMgdHJ1c3RlZCBkaXJlY3Rvcnkg KG9yIGEgZmlsZSkgYXMgYWRkaXRpb25hbCBjb21wb25lbnQgb2YgdGhlIGxpc3QuCi0rWW91IGhh dmUgdG8gc3BlY2lmeSBhbHNvIGFueSBleGlzdGluZyBkaXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkK LStieSBAc2FtcHtzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChzdWNoIGFzIEBzYW1wey91c3I6 L2Jpbn0gaW4gdGhpcyBleGFtcGxlKS4KLSsKLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIiBbQGRvdHN7fV19Ci0rU3BlY2lm eSB0aGlzIGRpcmVjdG9yeSBhcyBpbiB0aGUgcHJldmlvdXMgY2FzZSBidXQganVzdCBmb3IgYSBz aW5nbGUKLStAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSsKLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIgW0Bkb3Rze31dfQotK0Rpc2FibGUgYXV0by1sb2FkaW5n IHNhZmV0eSBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCi0rVGhpcyBhc3N1bWVz IGFsbCB0aGUgZmlsZXMgeW91IGRlYnVnIGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNzaW9u IHdpbGwgY29tZQotK2Zyb20gdHJ1c3RlZCBzb3VyY2VzLgotKwotK0BpdGVtIEBrYmR7Li9jb25m aWd1cmUgLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGh9Ci0rRHVyaW5nIGNvbXBpbGF0aW9u IG9mIEB2YWx1ZXtHREJOfSB5b3UgbWF5IGRpc2FibGUgYW55IGF1dG8tbG9hZGluZyBzYWZldHku Ci0rVGhpcyBhc3N1bWVzIGFsbCB0aGUgZmlsZXMgeW91IHdpbGwgZXZlciBkZWJ1ZyB3aXRoIHRo aXMgQHZhbHVle0dEQk59IGNvbWUgZnJvbQotK3RydXN0ZWQgc291cmNlcy4KLStAZW5kIGl0ZW1p emUKLSsKLStPbiB0aGUgb3RoZXIgaGFuZCB5b3UgY2FuIGFsc28gZXhwbGljaXRseSBmb3JiaWQg YXV0b21hdGljIGZpbGVzIGxvYWRpbmcgd2hpY2gKLSthbHNvIHN1cHByZXNzZXMgYW55IHN1Y2gg d2FybmluZyBtZXNzYWdlczoKLSsKLStAaXRlbWl6ZSBAYnVsbGV0Ci0rQGl0ZW0gQGtiZHtnZGIg LWlleCAic2V0IGF1dG8tbG9hZCBubyIgW0Bkb3Rze31dfQotK1lvdSBjYW4gdXNlIEB2YWx1ZXtH REJOfSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lv bi4KLSsKLStAaXRlbSBAc2FtcHt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30K LStEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseSBmb3IgdGhlIHVzZXIKLSsoQHB4cmVme0hv bWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgV2hpbGUgaXQgaXMgaW1wcm9iYWJsZSwgeW91IGNv dWxkIGFsc28KLSt1c2Ugc3lzdGVtIGluaXQgZmlsZSBpbnN0ZWFkIChAcHhyZWZ7U3lzdGVtLXdp ZGUgY29uZmlndXJhdGlvbn0pLgotK0BlbmQgaXRlbWl6ZQotKwotK1RoaXMgc2V0dGluZyBhcHBs aWVzIHRvIHRoZSBmaWxlIG5hbWVzIGFzIGVudGVyZWQgYnkgdXNlci4gIElmIG5vIGVudHJ5IG1h dGNoZXMKLStAdmFsdWV7R0RCTn0gdHJpZXMgYXMgYSBsYXN0IHJlc29ydCB0byBhbHNvIHJlc29s dmUgYWxsIHRoZSBmaWxlIG5hbWVzIGludG8KLSt0aGVpciBjYW5vbmljYWwgZm9ybSAodHlwaWNh bGx5IHJlc29sdmluZyBzeW1ib2xpYyBsaW5rcykgYW5kIGNvbXBhcmUgdGhlCi0rZW50cmllcyBh Z2Fpbi4gIEB2YWx1ZXtHREJOfSBhbHJlYWR5IGNhbm9uaWNhbGl6ZXMgbW9zdCBvZiB0aGUgZmls ZW5hbWVzIG9uIGl0cwotK293biBiZWZvcmUgc3RhcnRpbmcgdGhlIGNvbXBhcmlzb24gc28gYSBj YW5vbmljYWwgZm9ybSBvZiBkaXJlY3RvcmllcyBpcwotK3JlY29tbWVuZGVkIHRvIGJlIGVudGVy ZWQuCi0rCi0gQG5vZGUgTWVzc2FnZXMvV2FybmluZ3MKLSBAc2VjdGlvbiBPcHRpb25hbCBXYXJu aW5ncyBhbmQgTWVzc2FnZXMKLSAKLUBAIC0yNDk1NSwxMCArMjUwNjIsMTAgQEAgRXhhbXBsZToK LSAKLSBAc21hbGxleGFtcGxlCi0gKGdkYikgaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMK LS1Mb2FkZWQgIFNjcmlwdAotLVllcyAgICAgcHktc2VjdGlvbi1zY3JpcHQucHkKLS0gICAgICAg IGZ1bGwgbmFtZTogL3RtcC9weS1zZWN0aW9uLXNjcmlwdC5weQotLU1pc3NpbmcgbXktZm9vLXBy ZXR0eS1wcmludGVycy5weQotK0xvYWRlZCBTY3JpcHQKLStZZXMgICAgcHktc2VjdGlvbi1zY3Jp cHQucHkKLSsgICAgICAgZnVsbCBuYW1lOiAvdG1wL3B5LXNlY3Rpb24tc2NyaXB0LnB5Ci0rTm8g ICAgIG15LWZvby1wcmV0dHktcHJpbnRlcnMucHkKLSBAZW5kIHNtYWxsZXhhbXBsZQotIEBlbmQg dGFibGUKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1s b2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhv bi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4 IDAwOjQ5OjIxLjYyMTczNTk4NSArMDIwMAotQEAgLTcyLDE0ICs3MiwxOSBAQCBzdGF0aWMgdm9p ZAotIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCBGSUxFICpmaWxlLAotIAkJCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCi0gewot KyAgaW50IGlzX3NhZmU7Ci0gICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2Vf aW5mbzsKLSAKLSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSk7 Ci0rCi0gICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZv IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIKLSAgICAgIGNhbiBwcmludCBpdC4gICovCi0gICBw c3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJl bnRfcHJvZ3JhbV9zcGFjZSk7Ci0tICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmls ZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7Ci0rICBtYXliZV9hZGRf c2NyaXB0IChwc3BhY2VfaW5mbywgaXNfc2FmZSwgZmlsZW5hbWUsIGZpbGVuYW1lLAotKwkJICAg ICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSAKLS0gIHNvdXJjZV9weXRob25fc2NyaXB0X2Zv cl9vYmpmaWxlIChvYmpmaWxlLCBmaWxlLCBmaWxlbmFtZSk7Ci0rICBpZiAoaXNfc2FmZSkKLSsg ICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGZpbGUsIGZpbGVu YW1lKTsKLSB9Ci0gCi0gLyogTG9hZCBzY3JpcHRzIHNwZWNpZmllZCBpbiBPQkpGSUxFLgotQEAg LTE0Nyw2ICsxNTIsOSBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAq Ci0gCXsKLSAJICBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOwotIAkgIG1ha2VfY2xlYW51 cCAoeGZyZWUsIGZ1bGxfcGF0aCk7Ci0rCi0rCSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZl IChmdWxsX3BhdGgpKQotKwkgICAgb3BlbmVkID0gMDsKLSAJfQotICAgICAgIGVsc2UKLSAJewot QEAgLTE2Nyw3ICsxNzUsNyBAQCBVc2UgYGluZm8gYXV0by1sb2FkIHB5dGhvbiBbUkVHRVhQXScg dG8KLSAKLSAJIElXQk4gaWYgY29tcGxhaW50cy5jIHdlcmUgbW9yZSBnZW5lcmFsLXB1cnBvc2Uu ICAqLwotIAotLSAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2Vf aW5mbywgZmlsZSwgZnVsbF9wYXRoLAotKyAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRf c2NyaXB0IChwc3BhY2VfaW5mbywgb3BlbmVkLCBmaWxlLCBmdWxsX3BhdGgsCi0gCQkJCQkmc2Ny aXB0X2xhbmd1YWdlX3B5dGhvbik7Ci0gCi0gICAgICAgLyogSWYgdGhpcyBmaWxlIGlzIG5vdCBj dXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LW9iamZpbGUtc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9i amZpbGUtc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYyMTczNTk4NSArMDIwMAotQEAg LTM3LDYgKzM3LDcgQEAgaWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0geyBjb250aW51ZSB9Ci0g c2V0IHJlbW90ZV9weXRob25fZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3Rlc3RmaWxlfS1nZGIucHkuaW4gJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5w eV0KLSAKLSBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfdGVzdF9u b19vdXRwdXQgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoICR7cmVtb3RlX3B5dGhvbl9maWxlfSIg InNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgotIGdkYl9sb2FkICR7YmluZmlsZX0KLSAKLSAjIFZl cmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1zZWN0aW9uLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0 aW9uLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0OToyMS42MjE3MzU5ODUgKzAyMDAKLUBAIC00 OSw2ICs0OSw3IEBAIGlmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQotIHNl dCByZW1vdGVfcHl0aG9uX2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGlyfS8ke3N1 YmRpcn0vJHt0ZXN0ZmlsZX0ucHldCi0gCi0gZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAke3Jl bW90ZV9weXRob25fZmlsZX0iICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIKLSBnZGJfbG9hZCAk e2JpbmZpbGV9Ci0gCi0gIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgoKZGlmZiAtLWdp dCBhL2dkYi1hdXRvbG9hZC0xMW9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTFvZjI4LnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYzY4YjAKLS0tIC9kZXYvbnVs bAorKysgYi9nZGItYXV0b2xvYWQtMTFvZjI4LnBhdGNoCkBAIC0wLDAgKzEsNzQ0IEBACitbcGF0 Y2gjNCA1LzhdIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoCitodHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA5Mi5odG1sCitodHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTE0Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdl TG9nCTIwMTIvMDQvMTcgMTU6NTE6NDEJMS4xNDExMworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIw MTIvMDQvMTcgMTU6NTQ6MjgJMS4xNDExNAorIyMgLTEsNSArMSwzOSBAQAorIDIwMTItMDQtMTcg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKysJTmV3IG9w dGlvbiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiLgorKwkqIE5FV1M6IE5ldyBjb21tYW5kcyAi c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCisrCWFuZCAic2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRo Ii4KKysJKiBhdXRvLWxvYWQuYzogSW5jbHVkZSBnZGJfdmVjcy5oLCByZWFkbGluZS90aWxkZS5o IGFuZCBjb21wbGV0ZXIuaC4KKysJKGF1dG9fbG9hZF9zYWZlX3BhdGgsIGF1dG9fbG9hZF9zYWZl X3BhdGhfdmVjKQorKwkoYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlLCBzZXRfYXV0b19s b2FkX3NhZmVfcGF0aCkKKysJKHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCwgYWRkX2F1dG9fbG9h ZF9zYWZlX3BhdGgsIGZpbGVuYW1lX2lzX2luX2RpcikKKysJKGZpbGVuYW1lX2lzX2luX2F1dG9f bG9hZF9zYWZlX3BhdGhfdmVjLCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlKTogTmV3LgorKwkoc291 cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcgdmFyaWFibGUgaXNfc2FmZS4gIENhbGwK KysJZmlsZV9pc19hdXRvX2xvYWRfc2FmZS4gIFJldHVybiBpZiBpdCBpcyBub3QuCisrCShzdHJ1 Y3QgbG9hZGVkX3NjcmlwdCk6IE5ldyBmaWVsZCBsb2FkZWQuCisrCShtYXliZV9hZGRfc2NyaXB0 KTogQWRkIHBhcmFtZXRlciBsb2FkZWQuICBJbml0aWFsaXplIFNMT1Qgd2l0aCBpdC4KKysJKHBy aW50X3NjcmlwdCk6IFVzZSBMT0FERUQgaW5kaWNhdG9yIGluc3RlYWQgb2YgRlVMTF9QQVRILiAg Q2hhbmdlCisrCW91dHB1dCAiTWlzc2luZyIgdG8gIk5vIi4KKysJKF9pbml0aWFsaXplX2F1dG9f bG9hZCk6IE5ldyB2YXJpYWJsZSBjbWQuICBJbml0aWFsaXplCisrCWF1dG9fbG9hZF9zYWZlX3Bh dGguICBSZWdpc3RlciAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiLAorKwkic2hvdyBhdXRvLWxv YWQgc2FmZS1wYXRoIiBhbmQgImFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIi4KKysJKiBhdXRvLWxv YWQuaCAobWF5YmVfYWRkX3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbG9hZGVkLgorKwkoZmlsZV9p c19hdXRvX2xvYWRfc2FmZSk6IE5ldyBkZWNsYXJhdGlvbi4KKysJKiBjb25maWcuaW46IFJlZ2Vu ZXJhdGUuCisrCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorKwkqIGNvbmZpZ3VyZS5hYzogTmV3 IHBhcmFtZXRlcnMgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgKKysJYW5kIC0td2l0aG91dC1h dXRvLWxvYWQtc2FmZS1wYXRoLgorKwkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlfdGhyZWFkX2Ri X2xvYWRfZnJvbV9wZGlyXzEpCisrCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBDaGVj ayBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIGZpcnN0LgorKwkqIG1haW4uYyAoY2FwdHVyZWRfbWFp bik6IENoZWNrIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgZm9yCisrCUxPQ0FMX0dEQklOSVQuCisr CSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpm aWxlKTogTmV3CisrCXZhcmlhYmxlIGlzX3NhZmUuICBDYWxsIGZpbGVfaXNfYXV0b19sb2FkX3Nh ZmUuICBSZXR1cm4gaWYgaXQgaXMgbm90LgorKwkoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IENh bGwgZmlsZV9pc19hdXRvX2xvYWRfc2FmZS4gIFJldHVybiBpZiBpdCBpcworKwlub3QuCisrCisr MjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgor KworIAlhdXRvLWxvYWQ6IEltcGxlbWVudGF0aW9uLgorIAkqIE5FV1M6IE5ldyBkZXNjcmlwdGlv bnMgZm9yICJpbmZvIGF1dG8tbG9hZCIsCisgCSJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIs ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsCitJbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvTkVXUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjAyLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTozMy4yODI3MDYzMTkgKzAyMDAK K0BAIC02Nyw2ICs2NywxMSBAQCBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiBvbnxvZmYKKyBz aG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKKyAgIENvbnRyb2wgYXV0by1sb2FkaW5nIG9mIGlu ZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgc2hhcmVkIGxpYnJhcnkuCisgCisrc2V0 IGF1dG8tbG9hZCBzYWZlLXBhdGggPGRpcjE+Wzo8ZGlyMj4uLi5dCisrc2hvdyBhdXRvLWxvYWQg c2FmZS1wYXRoCisrICBTZXQgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMg c2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuCisrICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1h eSBkaWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgorKworICogTmV3IGNvbW1h bmQgbGluZSBvcHRpb25zCisgCisgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAgICAgIExp a2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2F1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6 MjEuNjA3NzM2MDIwICswMjAwCitAQCAtMzIsNiArMzIsOSBAQAorICNpbmNsdWRlICJnZGJjbWQu aCIKKyAjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKKyAjaW5jbHVkZSAiY2xpL2NsaS1zZXRz aG93LmgiCisrI2luY2x1ZGUgImdkYl92ZWNzLmgiCisrI2luY2x1ZGUgInJlYWRsaW5lL3RpbGRl LmgiCisrI2luY2x1ZGUgImNvbXBsZXRlci5oIgorIAorIC8qIFRoZSBzdWZmaXggb2YgcGVyLW9i amZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQgYXMgbm9uLVB5dGhvbiBjb21tYW5kIGZpbGVzLgor ICAgIEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sgZm9yIGxpYmZv by1nZGIuZ2RiLiAgKi8KK0BAIC05MCw2ICs5MywxODEgQEAgc2hvd19hdXRvX2xvYWRfbG9jYWxf Z2RiaW5pdCAoc3RydWN0IHVpXworIAkJICAgIHZhbHVlKTsKKyB9CisgCisrLyogRGlyZWN0b3J5 IGxpc3Qgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAgSXQgaXMgbm90IGNoZWNrZWQg Zm9yCisrICAgYWJzb2x1dGUgcGF0aHMgYnV0IHRoZXkgYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVk LiAgSXQgaXMgaW5pdGlhbGl6ZWQgYnkKKysgICBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQuICAqLwor K3N0YXRpYyBjaGFyICphdXRvX2xvYWRfc2FmZV9wYXRoOworKworKy8qIFZlY3RvciBvZiBkaXJl Y3RvcnkgZWxlbWVudHMgb2YgQVVUT19MT0FEX1NBRkVfUEFUSCB3aXRoIGVhY2ggb25lIG5vcm1h bGl6ZWQKKysgICBieSB0aWxkZV9leHBhbmQgYW5kIHBvc3NpYmx5IGVhY2ggZW50cmllcyBoYXMg YWRkZWQgaXRzIGdkYl9yZWFscGF0aAorKyAgIGNvdW50ZXJwYXJ0LiAgKi8KKytzdGF0aWMgVkVD IChjaGFyX3B0cikgKmF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjOworKworKy8qIFVwZGF0ZSBhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlYyBmcm9tIGN1cnJlbnQgQVVUT19MT0FEX1NBRkVfUEFUSC4gICov CisrCisrc3RhdGljIHZvaWQKKythdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQp CisreworKyAgVkVDIChjaGFyX3B0cikgKmRpcl92ZWMgPSBOVUxMOworKyAgdW5zaWduZWQgbGVu OworKyAgaW50IGl4OworKworKyAgZnJlZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjKTsKKysKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gZGlybmFtZXNfdG9fY2hh cl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKKysgIGxlbiA9IFZFQ19sZW5ndGggKGNo YXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk7CisrCisrICAvKiBBcHBseSB0aWxkZV9l eHBhbmQgYW5kIGdkYl9yZWFscGF0aCB0byBlYWNoIEFVVE9fTE9BRF9TQUZFX1BBVEhfVkVDCisr ICAgICBlbGVtZW50LiAgKi8KKysgIGZvciAoaXggPSAwOyBpeCA8IGxlbjsgaXgrKykKKysgICAg eworKyAgICAgIGNoYXIgKmRpciA9IFZFQ19pbmRleCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZl X3BhdGhfdmVjLCBpeCk7CisrICAgICAgY2hhciAqZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRp cik7CisrICAgICAgY2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7Cisr CisrICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IHRpbGRlX2V4 cGFuZC1lZC4gICovCisrICAgICAgeGZyZWUgKGRpcik7CisrICAgICAgVkVDX3JlcGxhY2UgKGNo YXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKKysKKysgICAg ICAvKiBJZiBnZGJfcmVhbHBhdGggcmV0dXJucyBhIGRpZmZlcmVudCBjb250ZW50LCBhcHBlbmQg aXQuICAqLworKyAgICAgIGlmIChzdHJjbXAgKHJlYWxfcGF0aCwgZXhwYW5kZWQpID09IDApCisr CXhmcmVlIChyZWFsX3BhdGgpOworKyAgICAgIGVsc2UKKysJVkVDX3NhZmVfcHVzaCAoY2hhcl9w dHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCByZWFsX3BhdGgpOworKyAgICB9CisrfQorKwor Ky8qICJzZXQiIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRp b24gdmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lkCisrc2V0X2F1dG9fbG9hZF9zYWZlX3Bh dGggKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMp CisreworKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOworK30KKysKKysvKiAi c2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlvbiB2 YXJpYWJsZS4gICovCisrCisrc3RhdGljIHZvaWQKKytzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgg KHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisrCQkJICBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgaWYgKCp2YWx1ZSA9PSAw KQorKyAgICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWQgZmlsZXMgYXJlIHNh ZmUgdG8gbG9hZCBmcm9tIGFueSAiCisrCQkJICAgICAgImRpcmVjdG9yeS5cbiIpKTsKKysgIGVs c2UKKysgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiTGlzdCBvZiBkaXJlY3RvcmllcyBm cm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gIgorKwkJCSAgICAgICJhdXRvLWxvYWQgZmlsZXMgaXMg JXMuXG4iKSwKKysJCSAgICAgIHZhbHVlKTsKKyt9CisrCisrLyogImFkZC1hdXRvLWxvYWQtc2Fm ZS1wYXRoIiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0aW9u CisrICAgdmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lkCisrYWRkX2F1dG9fbG9hZF9zYWZl X3BhdGggKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7CisrICBjaGFyICpzOworKworKyAg aWYgKGFyZ3MgPT0gTlVMTCB8fCAqYXJncyA9PSAwKQorKyAgICBlcnJvciAoXygiXAorK0FkZGlu ZyBlbXB0eSBkaXJlY3RvcnkgZWxlbWVudCBkaXNhYmxlcyB0aGUgYXV0by1sb2FkIHNhZmUtcGF0 aCBzZWN1cml0eS4gIFwKKytVc2UgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBpbnN0ZWFkIGlm IHlvdSBtZWFuIHRoYXQuIikpOworKworKyAgcyA9IHhzdHJwcmludGYgKCIlcyVjJXMiLCBhdXRv X2xvYWRfc2FmZV9wYXRoLCBESVJOQU1FX1NFUEFSQVRPUiwgYXJncyk7CisrICB4ZnJlZSAoYXV0 b19sb2FkX3NhZmVfcGF0aCk7CisrICBhdXRvX2xvYWRfc2FmZV9wYXRoID0gczsKKysKKysgIGF1 dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKKyt9CisrCisrLyogUmV0dXJuIDEgaWYg RklMRU5BTUUgaXMgZXF1YWwgdG8gRElSIG9yIGlmIEZJTEVOQU1FIGJlbG9uZ3MgdG8gdGhlCisr ICAgc3ViZGlyZWN0b3J5IERJUi4gIFJldHVybiAwIG90aGVyd2lzZS4gIGdkYl9yZWFscGF0aCBu b3JtYWxpemF0aW9uIGlzIG5ldmVyCisrICAgZG9uZSBoZXJlLiAgKi8KKysKKytzdGF0aWMgQVRU UklCVVRFX1BVUkUgaW50CisrZmlsZW5hbWVfaXNfaW5fZGlyIChjb25zdCBjaGFyICpmaWxlbmFt ZSwgY29uc3QgY2hhciAqZGlyKQorK3sKKysgIHNpemVfdCBkaXJfbGVuID0gc3RybGVuIChkaXIp OworKworKyAgd2hpbGUgKGRpcl9sZW4gJiYgSVNfRElSX1NFUEFSQVRPUiAoZGlyW2Rpcl9sZW4g LSAxXSkpCisrICAgIGRpcl9sZW4tLTsKKysKKysgIHJldHVybiAoZmlsZW5hbWVfbmNtcCAoZGly LCBmaWxlbmFtZSwgZGlyX2xlbikgPT0gMAorKwkgICYmIChJU19ESVJfU0VQQVJBVE9SIChmaWxl bmFtZVtkaXJfbGVuXSkKKysJICAgICAgfHwgZmlsZW5hbWVbZGlyX2xlbl0gPT0gJ1wwJykpOwor K30KKysKKysvKiBSZXR1cm4gMSBpZiBGSUxFTkFNRSBiZWxvbmdzIHRvIG9uZSBvZiBkaXJlY3Rv cnkgY29tcG9uZW50cyBvZgorKyAgIEFVVE9fTE9BRF9TQUZFX1BBVEhfVkVDLiAgUmV0dXJuIDAg b3RoZXJ3aXNlLgorKyAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSBpcyBuZXZlciBj YWxsZWQuCisrICAgKkZJTEVOQU1FX1JFQUxQIG1heSBiZSB1cGRhdGVkIGJ5IGdkYl9yZWFscGF0 aCBvZiBGSUxFTkFNRSAtIGl0IGhhcyB0byBiZQorKyAgIGZyZWVkIGJ5IHRoZSBjYWxsZXIuICAq LworKworK3N0YXRpYyBpbnQKKytmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3Zl YyAoY29uc3QgY2hhciAqZmlsZW5hbWUsCisrCQkJCQljaGFyICoqZmlsZW5hbWVfcmVhbHApCisr eworKyAgY2hhciAqZGlyOworKyAgaW50IGl4OworKworKyAgZm9yIChpeCA9IDA7IFZFQ19pdGVy YXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIpOyArK2l4KQor KyAgICBpZiAoKmZpbGVuYW1lX3JlYWxwID09IE5VTEwgJiYgZmlsZW5hbWVfaXNfaW5fZGlyIChm aWxlbmFtZSwgZGlyKSkKKysgICAgICBicmVhazsKKysgIAorKyAgaWYgKGRpciA9PSBOVUxMKQor KyAgICB7CisrICAgICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMKQorKwkqZmlsZW5hbWVf cmVhbHAgPSBnZGJfcmVhbHBhdGggKGZpbGVuYW1lKTsKKysKKysgICAgICBmb3IgKGl4ID0gMDsg VkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGRpcik7 CisrCSAgICsraXgpCisrCWlmIChmaWxlbmFtZV9pc19pbl9kaXIgKCpmaWxlbmFtZV9yZWFscCwg ZGlyKSkKKysJICBicmVhazsKKysgICAgfQorKworKyAgaWYgKGRpciAhPSBOVUxMKQorKyAgICBy ZXR1cm4gMTsKKysKKysgIHJldHVybiAwOworK30KKysKKysvKiBSZXR1cm4gMSBpZiBGSUxFTkFN RSBpcyBsb2NhdGVkIGluIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgb2YKKysgICBBVVRPX0xPQURf U0FGRV9QQVRILiAgT3RoZXJ3aXNlIGNhbGwgd2FybmluZyBhbmQgcmV0dXJuIDAuICBGSUxFTkFN RSBkb2VzCisrICAgbm90IGhhdmUgdG8gYmUgYW4gYWJzb2x1dGUgcGF0aC4KKysKKysgICBFeGlz dGVuY2Ugb2YgRklMRU5BTUUgaXMgbm90IGNoZWNrZWQuICBGdW5jdGlvbiB3aWxsIHN0aWxsIGdp dmUgYSB3YXJuaW5nCisrICAgZXZlbiBpZiB0aGUgY2FsbGVyIHdvdWxkIHF1aWV0bHkgc2tpcCBu b24tZXhpc3RpbmcgZmlsZSBpbiB1bnNhZmUKKysgICBkaXJlY3RvcnkuICAqLworKworK2ludAor K2ZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorK3sKKysgIGNo YXIgKmZpbGVuYW1lX3JlYWwgPSBOVUxMOworKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Cisr CisrICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZmaWxl bmFtZV9yZWFsKTsKKysKKysgIGlmIChmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRo X3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFtZV9yZWFsKSkKKysgICAgeworKyAgICAgIGRvX2NsZWFu dXBzIChiYWNrX3RvKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgYXV0b19sb2Fk X3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOworKyAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjIChmaWxlbmFtZSwgJmZpbGVuYW1lX3JlYWwpKQorKyAgICB7CisrICAg ICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKyAgICAgIHJldHVybiAxOworKyAgICB9CisrCisr ICB3YXJuaW5nIChfKCJGaWxlIFwiJXNcIiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4gZGVjbGluZWQg YnkgeW91ciAiCisrCSAgICAgImBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gXCIlc1wiLiIp LAorKwkgICBmaWxlbmFtZV9yZWFsLCBhdXRvX2xvYWRfc2FmZV9wYXRoKTsKKysKKysgIGRvX2Ns ZWFudXBzIChiYWNrX3RvKTsKKysgIHJldHVybiAwOworK30KKysKKyAvKiBEZWZpbml0aW9uIG9m IHNjcmlwdCBsYW5ndWFnZSBmb3IgR0RCIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMuICAq LworIAorIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlIHNjcmlwdF9sYW5ndWFn ZV9nZGIKK0BAIC05OSwxMyArMjc3LDIwIEBAIHN0YXRpYyB2b2lkCisgc291cmNlX2dkYl9zY3Jp cHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAorIAkJ CSAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKKyB7CisrICBpbnQgaXNfc2FmZTsKKyAgIHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworICAgdm9sYXRpbGUgc3Ry dWN0IGdkYl9leGNlcHRpb24gZTsKKyAKKysgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9z YWZlIChmaWxlbmFtZSk7CisrCisgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFi bGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKKyAgICAgIGNhbiBwcmludCBp dC4gICovCisgICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xv YWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CistICBtYXliZV9hZGRfc2NyaXB0IChwc3Bh Y2VfaW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7CisrICBt YXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgaXNfc2FmZSwgZmlsZW5hbWUsIGZpbGVuYW1l LAorKwkJICAgICZzY3JpcHRfbGFuZ3VhZ2VfZ2RiKTsKKysKKysgIGlmICghaXNfc2FmZSkKKysg ICAgcmV0dXJuOworIAorICAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCisgICAgIHsK K0BAIC0xNDAsNiArMzI1LDkgQEAgc3RydWN0IGxvYWRlZF9zY3JpcHQKKyAgICAgIGluYWNjZXNz aWJsZSkuICAqLworICAgY29uc3QgY2hhciAqZnVsbF9wYXRoOworIAorKyAgLyogTm9uLXplcm8g aWYgdGhpcyBzY3JpcHQgaGFzIGJlZW4gbG9hZGVkLiAgKi8KKysgIGludCBsb2FkZWQ7CisrCisg ICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZTsKKyB9OworIAorQEAgLTIz MiwxMiArNDIwLDEzIEBAIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHMK KyAgIHJldHVybiBpbmZvOworIH0KKyAKKy0vKiBBZGQgc2NyaXB0IE5BTUUgaW4gTEFOR1VBR0Ug dG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4KKy0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0 aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4gIFRoZSByZXN1bHQgaXMKKysvKiBBZGQgc2NyaXB0IE5B TUUgaW4gTEFOR1VBR0UgdG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4gIExPQURFRCAxIGlm IHRoZQorKyAgIHNjcmlwdCBoYXMgYmVlbiAoaXMgZ29pbmcgdG8pIGJlIGxvYWRlZCwgMCBvdGhl cndpc2UgKHN1Y2ggYXMgaWYgaXQgaGFzIG5vdAorKyAgIGJlZW4gZm91bmQpLiAgRlVMTF9QQVRI IGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCisgICAg dHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KKyAK KyBpbnQKKy1tYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpw c3BhY2VfaW5mbywKKyttYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICpwc3BhY2VfaW5mbywgaW50IGxvYWRlZCwKKyAJCSAgY29uc3QgY2hhciAqbmFtZSwgY29u c3QgY2hhciAqZnVsbF9wYXRoLAorIAkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICps YW5ndWFnZSkKKyB7CitAQCAtMjcxLDYgKzQ2MCw3IEBAIG1heWJlX2FkZF9zY3JpcHQgKHN0cnVj dCBhdXRvX2xvYWRfcHNwYWMKKyAJfQorICAgICAgIGVsc2UKKyAJKCpzbG90KS0+ZnVsbF9wYXRo ID0gTlVMTDsKKysgICAgICAoKnNsb3QpLT5sb2FkZWQgPSBsb2FkZWQ7CisgICAgICAgKCpzbG90 KS0+bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKKyAgICAgfQorIAorQEAgLTQzMiw3ICs2MjIsNyBAQCBw cmludF9zY3JpcHQgKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpCisgCisgICBjaGFpbiA9IG1h a2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7CisgCistICB1 aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVsbF9wYXRoID8g IlllcyIgOiAiTWlzc2luZyIpOworKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2Fk ZWQiLCBzY3JpcHQtPmxvYWRlZCA/ICJZZXMiIDogIk5vIik7CisgICB1aV9vdXRfZmllbGRfc3Ry aW5nICh1aW91dCwgInNjcmlwdCIsIHNjcmlwdC0+bmFtZSk7CisgICB1aV9vdXRfdGV4dCAodWlv dXQsICJcbiIpOworIAorQEAgLTcxOCw2ICs5MDgsOCBAQCB2b2lkIF9pbml0aWFsaXplX2F1dG9f bG9hZCAodm9pZCk7Cisgdm9pZAorIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKKyB7Cisr ICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY21kOworKworICAgYXV0b19sb2FkX3BzcGFjZV9k YXRhCisgICAgID0gcmVnaXN0ZXJfcHJvZ3JhbV9zcGFjZV9kYXRhX3dpdGhfY2xlYW51cCAoYXV0 b19sb2FkX3BzcGFjZV9kYXRhX2NsZWFudXApOworIAorQEAgLTc1Nyw0ICs5NDksMzAgQEAgVGhp cyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZgorIAkgICBfKCJQcmludCB3aGV0 aGVyIGN1cnJlbnQgZGlyZWN0b3J5IC5nZGJpbml0IGZpbGUgaGFzIGJlZW4gbG9hZGVkLlxuXAor IFVzYWdlOiBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiksCisgCSAgIGF1dG9fbG9hZF9p bmZvX2NtZGxpc3RfZ2V0ICgpKTsKKysKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVw IChERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgpOworKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWNfdXBkYXRlICgpOworKyAgYWRkX3NldHNob3dfb3B0aW9uYWxfZmlsZW5hbWVfY21kICgic2Fm ZS1wYXRoIiwgY2xhc3Nfc3VwcG9ydCwKKysJCQkJICAgICAmYXV0b19sb2FkX3NhZmVfcGF0aCwg XygiXAorK1NldCB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUg dG8gYXV0by1sb2FkIGZpbGVzLiIpLCBfKCJcCisrU2hvdyB0aGUgbGlzdCBvZiBkaXJlY3Rvcmll cyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLiIpLCBfKCJcCisrVmFy aW91cyBmaWxlcyBsb2FkZWQgYXV0b21hdGljYWxseSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4u Licgb3B0aW9ucyBtdXN0XG5cCisrYmUgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVz IGxpc3RlZCBieSB0aGlzIG9wdGlvbi4gIFdhcm5pbmcgd2lsbCBiZVxuXAorK3ByaW50ZWQgYW5k IGZpbGUgd2lsbCBub3QgYmUgdXNlZCBvdGhlcndpc2UuICBVc2UgZW1wdHkgc3RyaW5nIChvciBl dmVuXG5cCisrZW1wdHkgZGlyZWN0b3J5IGVudHJ5KSB0byBhbGxvdyBhbnkgZmlsZSBmb3IgdGhl ICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucy5cblwKKytUaGlzIG9wdGlvbiBpcyBpZ25vcmVk IGZvciB0aGUga2luZHMgb2YgZmlsZXMgaGF2aW5nICdzZXQgYXV0by1sb2FkIC4uLiBvZmYnLlxu XAorK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQg aW5mZXJpb3JzLiIpLAorKwkJCQkgICAgIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorKwkJCQkg ICAgIHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCwKKysJCQkJICAgICBhdXRvX2xvYWRfc2V0X2Nt ZGxpc3RfZ2V0ICgpLAorKwkJCQkgICAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsK KysKKysgIGNtZCA9IGFkZF9jbWQgKCJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIsIGNsYXNzX3N1 cHBvcnQsCisrCQkgYWRkX2F1dG9fbG9hZF9zYWZlX3BhdGgsCisrCQkgXygiQWRkIGVudHJpZXMg dG8gdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlICIKKysJCSAg ICJ0byBhdXRvLWxvYWQgZmlsZXMuXG5cCisrU2VlIHRoZSBjb21tYW5kcyAnc2V0IGF1dG8tbG9h ZCBzYWZlLXBhdGgnIGFuZCAnc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoJyB0b1xuXAorK2FjY2Vz cyB0aGUgY3VycmVudCBmdWxsIGxpc3Qgc2V0dGluZy4iKSwKKysJCSAmY21kbGlzdCk7CisrICBz ZXRfY21kX2NvbXBsZXRlciAoY21kLCBmaWxlbmFtZV9jb21wbGV0ZXIpOworIH0KK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAorPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0Njo0Ny4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAky MDEyLTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIwMAorQEAgLTM5LDcgKzM5LDggQEAgZXh0 ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZQorIGV4dGVybiBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICoKKyAgIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xv YWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOworIGV4dGVybiBpbnQgbWF5YmVf YWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCist CQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCisrCQkJICAg ICBpbnQgbG9hZGVkLCBjb25zdCBjaGFyICpuYW1lLAorKwkJCSAgICAgY29uc3QgY2hhciAqZnVs bF9wYXRoLAorIAkJCSAgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2Up OworIGV4dGVybiB2b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCisgCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1 YWdlKTsKK0BAIC01NCw0ICs1NSw2IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq KmF1dG9fbG8KKyBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hv d19jbWRsaXN0X2dldCAodm9pZCk7CisgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoq YXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKHZvaWQpOworIAorK2V4dGVybiBpbnQgZmlsZV9p c19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOworKworICNlbmRpZiAvKiBB VVRPX0xPQURfSCAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnLmluCTIw MTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvY29uZmlnLmluCTIwMTItMDQtMTggMDA6NDk6MjEuNjA3NzM2MDIwICswMjAwCitAQCAt NDMsNiArNDMsOSBAQAorICAgIG1vdmVkLiAqLworICN1bmRlZiBERUJVR0RJUl9SRUxPQ0FUQUJM RQorIAorKy8qIERpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gKi8K KysjdW5kZWYgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRICisrCisgLyogRGVmaW5lIHRvIEJG RCdzIGRlZmF1bHQgYXJjaGl0ZWN0dXJlLiAqLworICN1bmRlZiBERUZBVUxUX0JGRF9BUkNICisg CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDo0 Njo0Ny4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1 cmUJMjAxMi0wNC0xOCAwMDo0OToyMS42MTE3MzYwMTAgKzAyMDAKK0BAIC05NTUsNiArOTU1LDcg QEAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKKyB3aXRoX2dkYl9kYXRhZGlyCisgd2l0aF9yZWxv Y2F0ZWRfc291cmNlcworIHdpdGhfcnBtCisrd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoCisgZW5h YmxlX3RhcmdldHMKKyBlbmFibGVfNjRfYml0X2JmZAorIGVuYWJsZV9nZGJjbGkKK0BAIC0xNjY2 LDYgKzE2NjcsMTAgQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAgICAgICAgICAgICAgICAgICAg ICAgICBhdXRvbWF0aWNhbGx5IHJlbG9jYXRlIHRoaXMgcGF0aCBmb3Igc291cmNlIGZpbGVzCisg ICAtLXdpdGgtcnBtICAgICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9yIG1pc3Npbmcg ZGVidWdpbmZvcyAoeWVzL25vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLiBhdXRv PWxpYnJwbS5zbykKKysgIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEgKKysgICAgICAg ICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBm aWxlcworKyAgLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgKKysgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnMKKyAg IC0td2l0aC1saWJ1bndpbmQgICAgICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1 cHBvcnQKKyAgIC0td2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkg aW5zdGVhZCBvZiB0aGUgdGVybWNhcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFy eQorQEAgLTg0NzcsNiArODQ4MiwzMiBAQCAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkUlBN X1BLR19FUlJPCisgICBmaQorIGZpCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoIiA+JjUK KyskYXNfZWNob19uICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoLi4u ICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRo IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCtzZXR9IiA9 IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg7IGlmIHRl c3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgorKyAgIHdpdGhfYXV0 b19sb2FkX3NhZmVfcGF0aD0iIgorKyBmaQorK2Vsc2UKKysgIHdpdGhfYXV0b19sb2FkX3NhZmVf cGF0aD0iJHByZWZpeCIKKytmaQorKworKworKyAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYg cHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCisrICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhO T05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCisrICBhY19kZWZpbmVfZGlyPWBldmFsIGVj aG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aGAKKysgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNo byAkYWNfZGVmaW5lX2RpcmAKKysKKytjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmlu ZSBERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEggIiRhY19kZWZpbmVfZGlyIgorK19BQ0VPRgor KworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA+JjUKKyskYXNfZWNobyAiJHdpdGhfYXV0b19sb2Fk X3NhZmVfcGF0aCIgPiY2OyB9CisrCisgCisgCisgc3ViZGlycz0iJHN1YmRpcnMgdGVzdHN1aXRl IgorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQt MTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv Y29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6NDk6MjEuNjExNzM2MDEwICswMjAwCitAQCAtMzM5 LDYgKzMzOSwxOCBAQCBleHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9yIHJwbXRzSW5pdEl0ZXJhCisg ICBmaQorIGZpCisgIAorK0FDX01TR19DSEVDS0lORyhbZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNh ZmUtcGF0aF0pCisrQUNfQVJHX1dJVEgoYXV0by1sb2FkLXNhZmUtcGF0aCwKKytBU19IRUxQX1NU UklORyhbLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0sIFtkaXJlY3RvcmllcyBzYWZl IHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXNdKQorK0FTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQt YXV0by1sb2FkLXNhZmUtcGF0aF0sIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMg bG9jYXRpb25zXSksCisrW2lmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5v IjsgdGhlbgorKyAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iIgorKyBmaV0sCisrW3dpdGhf YXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCJdKQorK0FDX0RFRklORV9ESVIoREVGQVVMVF9B VVRPX0xPQURfU0FGRV9QQVRILCB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgsCisrCSAgICAgIFtE aXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKKytBQ19NU0dfUkVT VUxUKFskd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoXSkKKysKKyBBQ19DT05GSUdfU1VCRElSUyh0 ZXN0c3VpdGUpCisgCisgIyBDaGVjayB3aGV0aGVyIHRvIHN1cHBvcnQgYWx0ZXJuYXRpdmUgdGFy Z2V0IGNvbmZpZ3VyYXRpb25zCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgt dGhyZWFkLWRiLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAw MDo0OToyMS42MTI3MzYwMDcgKzAyMDAKK0BAIC04NjgsNyArODY4LDExIEBAIHRyeV90aHJlYWRf ZGJfbG9hZF9mcm9tX3BkaXJfMSAoc3RydWN0IG8KKyAgIC8qIFRoaXMgc2hvdWxkIGF0IG1pbmlt dW0gaGl0IHRoZSBmaXJzdCBjaGFyYWN0ZXIuICAqLworICAgZ2RiX2Fzc2VydCAoY3AgIT0gTlVM TCk7CisgICBzdHJjcHkgKGNwICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKy0gIHJlc3VsdCA9IHRy eV90aHJlYWRfZGJfbG9hZCAocGF0aCk7CisrCisrICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3Nh ZmUgKHBhdGgpKQorKyAgICByZXN1bHQgPSAwOworKyAgZWxzZQorKyAgICByZXN1bHQgPSB0cnlf dGhyZWFkX2RiX2xvYWQgKHBhdGgpOworIAorICAgZG9fY2xlYW51cHMgKGNsZWFudXApOworICAg cmV0dXJuIHJlc3VsdDsKK0BAIC05MzQsNyArOTM4LDExIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9m cm9tX2RpciAoY29uc3QgY2hhcgorICAgbWVtY3B5IChwYXRoLCBkaXIsIGRpcl9sZW4pOworICAg cGF0aFtkaXJfbGVuXSA9ICcvJzsKKyAgIHN0cmNweSAocGF0aCArIGRpcl9sZW4gKyAxLCBMSUJU SFJFQURfREJfU08pOworLSAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKKysK KysgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCkpCisrICAgIHJlc3VsdCA9IDA7 CisrICBlbHNlCisrICAgIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7CisgCisg ICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisgICByZXR1cm4gcmVzdWx0OworSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDk6MjEu NjEyNzM2MDA3ICswMjAwCitAQCAtMTAyNiw3ICsxMDI2LDggQEAgY2FwdHVyZWRfbWFpbiAodm9p ZCAqZGF0YSkKKyAgICAgeworICAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1l ID0gZ2RiX3JlYWxwYXRoIChsb2NhbF9nZGJpbml0KTsKKyAKKy0gICAgICBpZiAoIWluaGliaXRf Z2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkKKysgICAgICBpZiAoIWluaGliaXRf Z2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdAorKwkgICYmIGZpbGVfaXNfYXV0b19s b2FkX3NhZmUgKGxvY2FsX2dkYmluaXQpKQorIAl7CisgCSAgYXV0b19sb2FkX2xvY2FsX2dkYmlu aXRfbG9hZGVkID0gMTsKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2Ri LnRleGluZm8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2Rv Yy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ5OjIx LjYyMDczNTk4NyArMDIwMAorQEAgLTIwODAxLDYgKzIwODAxLDggQEAgZ2RiLXNjcmlwdHM6ICBB dXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcQorIGxpYnRocmVhZC1kYjogIEF1dG8tbG9hZGluZyBv ZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgaXMgb24uCisgbG9jYWwtZ2RiaW5pdDog IEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50IGRpcmVjdG9yeSBp cyBvbi4KKyBweXRob24tc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBp cyBvbi4KKytzYWZlLXBhdGg6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMg c2FmZSB0byBhdXRvLWxvYWQgZmlsZXMKKysgICAgICAgICAgICBpcyAvdXNyL2xvY2FsLgorIEBl bmQgc21hbGxleGFtcGxlCisgCisgQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KK0BAIC0yMDg3Miwx MiArMjA4NzQsMTkgQEAgVGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzCisg QHRhYiBTaG93IHNldHRpbmcgb2YgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5LgorIEBpdGVtIEB4 cmVme2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCisgQHRhYiBTaG93IHN0YXRlIG9mIHRo cmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIHNhZmUt cGF0aH0uCisrQHRhYiBDb250cm9sIGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBs b2FkaW5nLgorK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0uCisrQHRhYiBT aG93IGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgorK0BpdGVtIEB4 cmVme2FkZC1hdXRvLWxvYWQtc2FmZS1wYXRofS4KKytAdGFiIEFkZCBkaXJlY3RvcnkgdHJ1c3Rl ZCBmb3IgYXV0b21hdGljIGxvYWRpbmcuCisgQGVuZCBtdWx0aXRhYmxlCisgCisgQG1lbnUKKyAq IEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnk6OiBAc2FtcHtzZXQvc2hvdy9pbmZv IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQorICogbGlidGhyZWFkX2RiLnNvLjEgZmlsZTo6ICAg ICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKyAq IG9iamZpbGUtZ2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZv IGF1dG8tbG9hZCBnZGItc2NyaXB0fQorKyogQXV0by1sb2FkaW5nIHNhZmUgcGF0aDo6ICAgICAg ICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIHNhZmUtcGF0aH0KKyBAeHJlZntQ eXRob24gQXV0by1sb2FkaW5nfS4KKyBAZW5kIG1lbnUKKyAKK0BAIC0yMDk3OCw2ICsyMDk4Nywx MDQgQEAgYXV0by1sb2FkZWQuCisgSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgY2Fu bmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIHdpdGgKKyBtYXRjaGluZyBuYW1lcyBh cmUgcHJpbnRlZC4KKyAKKytAbm9kZSBBdXRvLWxvYWRpbmcgc2FmZSBwYXRoCisrQHN1YnNlY3Rp b24gU2VjdXJpdHkgcmVzdHJpY3Rpb24gZm9yIGF1dG8tbG9hZGluZworK0BjaW5kZXggYXV0by1s b2FkaW5nIHNhZmUtcGF0aAorKworK0FzIHRoZSBmaWxlcyBvZiBpbmZlcmlvciBjYW4gY29tZSBm cm9tIHVudHJ1c3RlZCBzb3VyY2UgKHN1Y2ggYXMgc3VibWl0dGVkIGJ5CisrYW4gYXBwbGljYXRp b24gdXNlcikgQHZhbHVle0dEQk59IGRvZXMgbm90IGFsd2F5cyBsb2FkIGFueSBmaWxlcyBhdXRv bWF0aWNhbGx5LgorK0B2YWx1ZXtHREJOfSBwcm92aWRlcyB0aGUgQHNhbXB7c2V0IGF1dG8tbG9h ZCBzYWZlLXBhdGh9IHNldHRpbmcgdG8gbGlzdAorK2RpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGxv YWRpbmcgZmlsZXMgbm90IGV4cGxpY2l0bHkgcmVxdWVzdGVkIGJ5IHVzZXIuCisrCisrSWYgdGhl IHBhdGggaXMgbm90IHNldCBwcm9wZXJseSB5b3Ugd2lsbCBzZWUgYSB3YXJuaW5nIGFuZCB0aGUg ZmlsZSB3aWxsIG5vdAorK2dldCBsb2FkZWQ6CisrCisrQHNtYWxsZXhhbXBsZQorKyQgLi9nZGIg LXEgLi9nZGIKKytSZWFkaW5nIHN5bWJvbHMgZnJvbSAvaG9tZS91c2VyL2dkYi9nZGIuLi5kb25l LgorK3dhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiIiBhdXRvLWxvYWRp bmcgaGFzIGJlZW4KKysgICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1w YXRoJyBzZXQgdG8gIi91c3IvbG9jYWwiLgorK3dhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2Ri L2dkYi1nZGIucHkiIGF1dG8tbG9hZGluZyBoYXMgYmVlbgorKyAgICAgICAgIGRlY2xpbmVkIGJ5 IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCisrQGVuZCBz bWFsbGV4YW1wbGUKKysKKytUaGUgbGlzdCBvZiB0cnVzdGVkIGRpcmVjdG9yaWVzIGlzIGNvbnRy b2xsZWQgYnkgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKKysKKytAdGFibGUgQGNvZGUKKytAYW5j aG9ye3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofQorK0BraW5kZXggc2V0IGF1dG8tbG9hZCBzYWZl LXBhdGgKKytAaXRlbSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCBAdmFye2RpcmVjdG9yaWVzfQor K1NldCB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyAoYW5kIHRoZWlyIHN1YmRpcmVjdG9yaWVzKSB0 cnVzdGVkIGZvciBhdXRvbWF0aWMKKytsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4g IFlvdSBjYW4gYWxzbyBlbnRlciBhIHNwZWNpZmljIHRydXN0ZWQgZmlsZS4KKytUaGUgbGlzdCBv ZiBkaXJlY3RvcmllcyB1c2VzIGRpcmVjdG9yeSBzZXBhcmF0b3IgKEBzYW1wezp9IG9uIEdOVSBh bmQgVW5peAorK3N5c3RlbXMsIEBzYW1wezt9IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUykgdG8g c2VwYXJhdGUgZGlyZWN0b3JpZXMsIHNpbWlsYXJseQorK3RvIHRoZSBAZW52e1BBVEh9IGVudmly b25tZW50IHZhcmlhYmxlLgorKworK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofQor K0BraW5kZXggc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCisrQGl0ZW0gc2hvdyBhdXRvLWxvYWQg c2FmZS1wYXRoCisrU2hvdyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRv bWF0aWMgbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mCisrc2NyaXB0cy4KKysKKytAYW5jaG9ye2Fk ZC1hdXRvLWxvYWQtc2FmZS1wYXRofQorK0BraW5kZXggYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgK KytAaXRlbSBhZGQtYXV0by1sb2FkLXNhZmUtcGF0aAorK0FkZCBhbiBlbnRyeSAob3IgbGlzdCBv ZiBlbnRyaWVzKSB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMK Kytsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIE11bHRpcGxlIGVudHJpZXMgbWF5 IGJlIGRlbGltaXRlZCBieSB0aGUKKytob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBhcmF0b3Ig aW4gdXNlLgorK0BlbmQgdGFibGUKKysKKytTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gYW4gZW1w dHkgc3RyaW5nIGRpc2FibGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbi4KKytUaGlzIHZhcmlh YmxlIGlzIHN1cHBvc2VkIHRvIGJlIHNldCB0byB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzIHdyaXRh YmxlIGJ5IHRoZQorK3N5c3RlbSBzdXBlcnVzZXIgb25seS4gIFVzZXJzIGNhbiBhZGQgdGhlaXIg c291cmNlIGRpcmVjdG9yaWVzIGluIGluaXQgZmlsZXMgaW4KKyt0aGVpciBob21lIGRpcmVjdG9y aWVzIChAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBTZWUgYWxzbyBkZXByZWNh dGVkCisraW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorKyhAcHhyZWZ7SW5pdCBG aWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0pLgorKworK1RvIGZv cmNlIEB2YWx1ZXtHREJOfSB0byBsb2FkIHRoZSBmaWxlcyBpdCBkZWNsaW5lZCB0byBsb2FkIGlu IHRoZSBwcmV2aW91cworK2V4YW1wbGUsIHlvdSBjb3VsZCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dp bmcgd2F5czoKKysKKytAaXRlbWl6ZSBAYnVsbGV0CisrQGl0ZW0gfi8uZ2RiaW5pdDogYWRkLWF1 dG8tbG9hZC1zYWZlLXBhdGggfi9zcmMvZ2RiCisrU3BlY2lmeSB0aGlzIHRydXN0ZWQgZGlyZWN0 b3J5IChvciBhIGZpbGUpIGFzIGFkZGl0aW9uYWwgY29tcG9uZW50IG9mIHRoZSBsaXN0LgorK1lv dSBoYXZlIHRvIHNwZWNpZnkgYWxzbyBhbnkgZXhpc3RpbmcgZGlyZWN0b3JpZXMgZGlzcGxheWVk IGJ5CisrYnkgQHNhbXB7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofSAoc3VjaCBhcyBAc2FtcHsv dXNyOi9iaW59IGluIHRoaXMgZXhhbXBsZSkuCisrCisrQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0 IGF1dG8tbG9hZCBzYWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiIgW0Bkb3Rze31dfQorK1Nw ZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9y IGEgc2luZ2xlCisrQHZhbHVle0dEQk59IHNlc3Npb24uCisrCisrQGl0ZW0gQGtiZHtnZGIgLWll eCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIFtAZG90c3t9XX0KKytEaXNhYmxlIGF1dG8tbG9h ZGluZyBzYWZldHkgZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorK1RoaXMgYXNz dW1lcyBhbGwgdGhlIGZpbGVzIHlvdSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vz c2lvbiB3aWxsIGNvbWUKKytmcm9tIHRydXN0ZWQgc291cmNlcy4KKysKKytAaXRlbSBAa2Jkey4v Y29uZmlndXJlIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRofQorK0R1cmluZyBjb21waWxh dGlvbiBvZiBAdmFsdWV7R0RCTn0geW91IG1heSBkaXNhYmxlIGFueSBhdXRvLWxvYWRpbmcgc2Fm ZXR5LgorK1RoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSB3aWxsIGV2ZXIgZGVidWcgd2l0 aCB0aGlzIEB2YWx1ZXtHREJOfSBjb21lIGZyb20KKyt0cnVzdGVkIHNvdXJjZXMuCisrQGVuZCBp dGVtaXplCisrCisrT24gdGhlIG90aGVyIGhhbmQgeW91IGNhbiBhbHNvIGV4cGxpY2l0bHkgZm9y YmlkIGF1dG9tYXRpYyBmaWxlcyBsb2FkaW5nIHdoaWNoCisrYWxzbyBzdXBwcmVzc2VzIGFueSBz dWNoIHdhcm5pbmcgbWVzc2FnZXM6CisrCisrQGl0ZW1pemUgQGJ1bGxldAorK0BpdGVtIEBrYmR7 Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8iIFtAZG90c3t9XX0KKytZb3UgY2FuIHVzZSBAdmFs dWV7R0RCTn0gY29tbWFuZC1saW5lIG9wdGlvbiBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNl c3Npb24uCisrCisrQGl0ZW0gQHNhbXB7fi8uZ2RiaW5pdH06IEBzYW1we3NldCBhdXRvLWxvYWQg bm99CisrRGlzYWJsZSBhdXRvLWxvYWRpbmcgZ2xvYmFsbHkgZm9yIHRoZSB1c2VyCisrKEBweHJl ZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9KS4gIFdoaWxlIGl0IGlzIGltcHJvYmFibGUsIHlv dSBjb3VsZCBhbHNvCisrdXNlIHN5c3RlbSBpbml0IGZpbGUgaW5zdGVhZCAoQHB4cmVme1N5c3Rl bS13aWRlIGNvbmZpZ3VyYXRpb259KS4KKytAZW5kIGl0ZW1pemUKKysKKytUaGlzIHNldHRpbmcg YXBwbGllcyB0byB0aGUgZmlsZSBuYW1lcyBhcyBlbnRlcmVkIGJ5IHVzZXIuICBJZiBubyBlbnRy eSBtYXRjaGVzCisrQHZhbHVle0dEQk59IHRyaWVzIGFzIGEgbGFzdCByZXNvcnQgdG8gYWxzbyBy ZXNvbHZlIGFsbCB0aGUgZmlsZSBuYW1lcyBpbnRvCisrdGhlaXIgY2Fub25pY2FsIGZvcm0gKHR5 cGljYWxseSByZXNvbHZpbmcgc3ltYm9saWMgbGlua3MpIGFuZCBjb21wYXJlIHRoZQorK2VudHJp ZXMgYWdhaW4uICBAdmFsdWV7R0RCTn0gYWxyZWFkeSBjYW5vbmljYWxpemVzIG1vc3Qgb2YgdGhl IGZpbGVuYW1lcyBvbiBpdHMKKytvd24gYmVmb3JlIHN0YXJ0aW5nIHRoZSBjb21wYXJpc29uIHNv IGEgY2Fub25pY2FsIGZvcm0gb2YgZGlyZWN0b3JpZXMgaXMKKytyZWNvbW1lbmRlZCB0byBiZSBl bnRlcmVkLgorKworIEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdzCisgQHNlY3Rpb24gT3B0aW9uYWwg V2FybmluZ3MgYW5kIE1lc3NhZ2VzCisgCitAQCAtMjQ5NTUsMTAgKzI1MDYyLDEwIEBAIEV4YW1w bGU6CisgCisgQHNtYWxsZXhhbXBsZQorIChnZGIpIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3Jp cHRzCistTG9hZGVkICBTY3JpcHQKKy1ZZXMgICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5CistICAg ICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKKy1NaXNzaW5nIG15LWZv by1wcmV0dHktcHJpbnRlcnMucHkKKytMb2FkZWQgU2NyaXB0CisrWWVzICAgIHB5LXNlY3Rpb24t c2NyaXB0LnB5CisrICAgICAgIGZ1bGwgbmFtZTogL3RtcC9weS1zZWN0aW9uLXNjcmlwdC5weQor K05vICAgICBteS1mb28tcHJldHR5LXByaW50ZXJzLnB5CisgQGVuZCBzbWFsbGV4YW1wbGUKKyBA ZW5kIHRhYmxlCisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1 dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9w eXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0w NC0xOCAwMDo0OToyMS42MjE3MzU5ODUgKzAyMDAKK0BAIC03MiwxNCArNzIsMTkgQEAgc3RhdGlj IHZvaWQKKyBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKyAJCQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQor IHsKKysgIGludCBpc19zYWZlOworICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNw YWNlX2luZm87CisgCisrICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5h bWUpOworKworICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAi aW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCisgICAgICBjYW4gcHJpbnQgaXQuICAqLwor ICAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChj dXJyZW50X3Byb2dyYW1fc3BhY2UpOworLSAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8s IGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworKyAgbWF5YmVf YWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGlzX3NhZmUsIGZpbGVuYW1lLCBmaWxlbmFtZSwKKysJ CSAgICAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7CisgCistICBzb3VyY2VfcHl0aG9uX3Njcmlw dF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZmlsZSwgZmlsZW5hbWUpOworKyAgaWYgKGlzX3NhZmUp CisrICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBmaWxlLCBm aWxlbmFtZSk7CisgfQorIAorIC8qIExvYWQgc2NyaXB0cyBzcGVjaWZpZWQgaW4gT0JKRklMRS4K K0BAIC0xNDcsNiArMTUyLDkgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZp bGUgKgorIAl7CisgCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKKyAJICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOworKworKwkgIGlmICghZmlsZV9pc19hdXRvX2xvYWRf c2FmZSAoZnVsbF9wYXRoKSkKKysJICAgIG9wZW5lZCA9IDA7CisgCX0KKyAgICAgICBlbHNlCisg CXsKK0BAIC0xNjcsNyArMTc1LDcgQEAgVXNlIGBpbmZvIGF1dG8tbG9hZCBweXRob24gW1JFR0VY UF0nIHRvCisgCisgCSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJw b3NlLiAgKi8KKyAKKy0gICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNw YWNlX2luZm8sIGZpbGUsIGZ1bGxfcGF0aCwKKysgICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVf YWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIG9wZW5lZCwgZmlsZSwgZnVsbF9wYXRoLAorIAkJCQkJ JnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworIAorICAgICAgIC8qIElmIHRoaXMgZmlsZSBpcyBu b3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCitJbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0OToyMS42MjE3MzU5ODUgKzAyMDAK K0BAIC0zNyw2ICszNyw3IEBAIGlmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUg fQorIHNldCByZW1vdGVfcHl0aG9uX2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGly fS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZ2RiLnB5LmluICR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1n ZGIucHldCisgCisgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX3Rl c3Rfbm9fb3V0cHV0ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAke3JlbW90ZV9weXRob25fZmls ZX0iICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIKKyBnZGJfbG9hZCAke2JpbmZpbGV9CisgCisg IyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAorPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt c2VjdGlvbi1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCitA QCAtNDksNiArNDksNyBAQCBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0K KyBzZXQgcmVtb3RlX3B5dGhvbl9maWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9LnB5XQorIAorIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNk aXIvJHN1YmRpcgorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgg JHtyZW1vdGVfcHl0aG9uX2ZpbGV9IiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCisgZ2RiX2xv YWQgJHtiaW5maWxlfQorIAorICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KCmRpZmYg LS1naXQgYS9nZGItYXV0b2xvYWQtMTJvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTEyb2YyMi5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkyYmRiYy4uMDAwMDAwMAotLS0g YS9nZGItYXV0b2xvYWQtMTJvZjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUyICswLDAg QEAKLVtwYXRjaCM0IDYvOF0gc2V0IGRlYnVnIGF1dG8tbG9hZAotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODkuaHRtbAotaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExNS5odG1sCi0KLSMjIyBzcmMvZ2RiL0No YW5nZUxvZwkyMDEyLzA0LzE3IDE1OjU0OjI4CTEuMTQxMTQKLSMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDEyLzA0LzE3IDE1OjU2OjIwCTEuMTQxMTUKLSMjIC0xLDUgKzEsMjcgQEAKLSAyMDEyLTA0 LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCU5l dyBvcHRpb24gInNldCBkZWJ1ZyBhdXRvLWxvYWQiLgotKwkqIE5FV1M6IE5ldyBjb21tYW5kcyAi c2V0IGRlYnVnIGF1dG8tbG9hZCIgYW5kICJzaG93IGRlYnVnIGF1dG8tbG9hZCIuCi0rCSogYXV0 by1sb2FkLmMgKGRlYnVnX2F1dG9fbG9hZCwgc2hvd19kZWJ1Z19hdXRvX2xvYWQ6IE5ldy4KLSsJ KGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSkKLSsJKGZpbGVuYW1lX2lzX2luX2F1dG9f bG9hZF9zYWZlX3BhdGhfdmVjKTogQ2FsbCBmcHJpbnRmX3VuZmlsdGVyZWQKLSsJaWYgREVCVUdf QVVUT19MT0FELgotKwkoZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldyBwYXJhbWV0ZXJzIGRl YnVnX2ZtdCBhbmQgLi4uLgotKwlDYWxsIGZwcmludGZfdW5maWx0ZXJlZCBpZiBERUJVR19BVVRP X0xPQUQuCi0rCShzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IEV4dGVuZCB0aGUgZmls ZV9pc19hdXRvX2xvYWRfc2FmZQotKwljYWxsZXIgYnkgZXhwbGFuYXRvcnkgc3RyaW5nLgotKwko X2luaXRpYWxpemVfYXV0b19sb2FkKTogUmVnaXN0ZXIgInNldCBkZWJ1ZyBhdXRvLWxvYWQiLgot KwkqIGF1dG8tbG9hZC5oIChmaWxlX2lzX2F1dG9fbG9hZF9zYWZlKTogTmV3IHBhcmFtZXRlcnMg ZGVidWdfZm10Ci0rCWFuZCAuLi4uCi0rCSogbGludXgtdGhyZWFkLWRiLmMgKHRyeV90aHJlYWRf ZGJfbG9hZF9mcm9tX3BkaXJfMSkKLSsJKHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2Rpcik6IEV4 dGVuZCB0aGUgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSBjYWxsZXIKLSsJYnkgZXhwbGFuYXRvcnkg c3RyaW5nLgotKwkqIG1haW4uYyAoY2FwdHVyZWRfbWFpbik6IExpa2V3aXNlLgotKwkqIHB5dGhv bi9weS1hdXRvLWxvYWQuYyAoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSkKLSsJ KHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBMaWtld2lzZS4KLSsKLSsyMDEyLTA0LTE3ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0gCU5ldyBvcHRpb24g InNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KLSAJKiBORVdTOiBOZXcgY29tbWFuZHMgInNldCBh dXRvLWxvYWQgc2FmZS1wYXRoIgotIAlhbmQgInNob3cgYXV0by1sb2FkIHNhZmUtcGF0aCIuCi1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjMzLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo1 MDoxNS4wMTg2MDAyODIgKzAyMDAKLUBAIC03Miw2ICs3MiwxMCBAQCBzaG93IGF1dG8tbG9hZCBz YWZlLXBhdGgKLSAgIFNldCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBz YWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4KLSAgIFRoZSBkZWxpbWl0ZXIgKCc6JyBhYm92ZSkgbWF5 IGRpZmZlciBhY2NvcmRpbmcgdG8gdGhlIGhvc3QgcGxhdGZvcm0uCi0gCi0rc2V0IGRlYnVnIGF1 dG8tbG9hZCBvbnxvZmYKLStzaG93IGRlYnVnIGF1dG8tbG9hZAotKyAgQ29udHJvbCBkaXNwbGF5 IG9mIGRlYnVnZ2luZyBpbmZvIGZvciBhdXRvLWxvYWRpbmcgdGhlIGZpbGVzIGFib3ZlLgotKwot ICogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCi0gCi0gLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4 ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAotSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTIt MDQtMTggMDA6NTA6MDQuODAxNjI2MjM1ICswMjAwCi1AQCAtNDMsNiArNDMsMjAgQEAKLSBzdGF0 aWMgdm9pZCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIEZJTEUgKmZpbGUsCi0gCQkJCQkgICBjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci0gCi0r LyogVmFsdWUgb2YgdGhlICdzZXQgZGVidWcgYXV0by1sb2FkJyBjb25maWd1cmF0aW9uIHZhcmlh YmxlLiAgKi8KLStzdGF0aWMgaW50IGRlYnVnX2F1dG9fbG9hZCA9IDA7Ci0rCi0rLyogInNob3ci IGNvbW1hbmQgZm9yIHRoZSBkZWJ1Z19hdXRvX2xvYWQgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4g ICovCi0rCi0rc3RhdGljIHZvaWQKLStzaG93X2RlYnVnX2F1dG9fbG9hZCAoc3RydWN0IHVpX2Zp bGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCSAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBf KCJEZWJ1Z2dpbmcgb3V0cHV0IGZvciBmaWxlcyAiCi0rCQkJICAgICJvZiAnc2V0IGF1dG8tbG9h ZCAuLi4nIGlzICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSsKLSAvKiBVc2VyLXNldHRh YmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgR0RCX0FVVE9fRklM RV9OQU1FCi0gICAgc2NyaXB0czoKLSAgICBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIG9ufG9m ZgotQEAgLTExMiw2ICsxMjYsMTEgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2 b2lkKQotICAgdW5zaWduZWQgbGVuOwotICAgaW50IGl4OwotIAotKyAgaWYgKGRlYnVnX2F1dG9f bG9hZCkKLSsgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCV8oImF1dG8t bG9hZDogVXBkYXRpbmcgZGlyZWN0b3JpZXMgb2YgXCIlc1wiLlxuIiksCi0rCQkJYXV0b19sb2Fk X3NhZmVfcGF0aCk7Ci0rCi0gICBmcmVlX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWMpOwotIAotICAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgPSBkaXJuYW1lc190b19jaGFy X3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotQEAgLTEyNiwxNCArMTQ1LDM0IEBAIGF1 dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKLSAgICAgICBjaGFyICpyZWFsX3Bh dGggPSBnZGJfcmVhbHBhdGggKGV4cGFuZGVkKTsKLSAKLSAgICAgICAvKiBFbnN1cmUgdGhlIGN1 cnJlbnQgZW50cnkgaXMgYXQgbGVhc3QgdGlsZGVfZXhwYW5kLWVkLiAgKi8KLS0gICAgICB4ZnJl ZSAoZGlyKTsKLSAgICAgICBWRUNfcmVwbGFjZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjLCBpeCwgZXhwYW5kZWQpOwotIAotKyAgICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCi0r CXsKLSsJICBpZiAoc3RyY21wIChleHBhbmRlZCwgZGlyKSA9PSAwKQotKwkgICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCQlfKCJhdXRvLWxvYWQ6IFVzaW5nIGRpcmVjdG9y eSBcIiVzXCIuXG4iKSwKLSsJCQkJZXhwYW5kZWQpOwotKwkgIGVsc2UKLSsJICAgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBSZXNvbHZlZCBkaXJl Y3RvcnkgXCIlc1wiICIKLSsJCQkJICAiYXMgXCIlc1wiLlxuIiksCi0rCQkJCWRpciwgZXhwYW5k ZWQpOwotKwl9Ci0rICAgICAgeGZyZWUgKGRpcik7Ci0rCi0gICAgICAgLyogSWYgZ2RiX3JlYWxw YXRoIHJldHVybnMgYSBkaWZmZXJlbnQgY29udGVudCwgYXBwZW5kIGl0LiAgKi8KLSAgICAgICBp ZiAoc3RyY21wIChyZWFsX3BhdGgsIGV4cGFuZGVkKSA9PSAwKQotIAl4ZnJlZSAocmVhbF9wYXRo KTsKLSAgICAgICBlbHNlCi0tCVZFQ19zYWZlX3B1c2ggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlYywgcmVhbF9wYXRoKTsKLSsJewotKwkgIFZFQ19zYWZlX3B1c2ggKGNoYXJfcHRy LCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgcmVhbF9wYXRoKTsKLSsKLSsJICBpZiAoZGVidWdf YXV0b19sb2FkKQotKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCQlf KCJhdXRvLWxvYWQ6IEFuZCBjYW5vbmljYWxpemVkIGFzIFwiJXNcIi5cbiIpLAotKwkJCQlyZWFs X3BhdGgpOwotKwl9Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMjE3LDE2ICsyNTYsMzAgQEAgZmlsZW5h bWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgKAotICAgaWYgKGRpciA9PSBOVUxMKQot ICAgICB7Ci0gICAgICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMKQotLQkqZmlsZW5hbWVf cmVhbHAgPSBnZGJfcmVhbHBhdGggKGZpbGVuYW1lKTsKLSsJewotKwkgICpmaWxlbmFtZV9yZWFs cCA9IGdkYl9yZWFscGF0aCAoZmlsZW5hbWUpOwotKwkgIGlmIChkZWJ1Z19hdXRvX2xvYWQgJiYg c3RyY21wICgqZmlsZW5hbWVfcmVhbHAsIGZpbGVuYW1lKSAhPSAwKQotKwkgICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCQlfKCJhdXRvLWxvYWQ6IFJlc29sdmVkICIKLSsJ CQkJICAiZmlsZSBcIiVzXCIgYXMgXCIlc1wiLlxuIiksCi0rCQkJCWZpbGVuYW1lLCAqZmlsZW5h bWVfcmVhbHApOwotKwl9Ci0gCi0tICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFy X3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIpOwotLQkgICArK2l4KQotLQlp ZiAoZmlsZW5hbWVfaXNfaW5fZGlyICgqZmlsZW5hbWVfcmVhbHAsIGRpcikpCi0tCSAgYnJlYWs7 Ci0rICAgICAgaWYgKHN0cmNtcCAoKmZpbGVuYW1lX3JlYWxwLCBmaWxlbmFtZSkgIT0gMCkKLSsJ Zm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWMsIGl4LCBkaXIpOwotKwkgICAgICsraXgpCi0rCSAgaWYgKGZpbGVuYW1lX2lzX2luX2RpciAo KmZpbGVuYW1lX3JlYWxwLCBkaXIpKQotKwkgICAgYnJlYWs7Ci0gICAgIH0KLSAKLSAgIGlmIChk aXIgIT0gTlVMTCkKLS0gICAgcmV0dXJuIDE7Ci0rICAgIHsKLSsgICAgICBpZiAoZGVidWdfYXV0 b19sb2FkKQotKwlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oImF1dG8tbG9hZDog RmlsZSBcIiVzXCIgbWF0Y2hlcyAiCi0rCQkJCQkgICJkaXJlY3RvcnkgXCIlc1wiLlxuIiksCi0r CQkJICAgIGZpbGVuYW1lLCBkaXIpOwotKyAgICAgIHJldHVybiAxOwotKyAgICB9Ci0gCi0gICBy ZXR1cm4gMDsKLSB9Ci1AQCAtMjQwLDExICsyOTMsMjAgQEAgZmlsZW5hbWVfaXNfaW5fYXV0b19s b2FkX3NhZmVfcGF0aF92ZWMgKAotICAgIGRpcmVjdG9yeS4gICovCi0gCi0gaW50Ci0tZmlsZV9p c19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0rZmlsZV9pc19hdXRvX2xv YWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRlYnVnX2ZtdCwgLi4u KQotIHsKLSAgIGNoYXIgKmZpbGVuYW1lX3JlYWwgPSBOVUxMOwotICAgc3RydWN0IGNsZWFudXAg KmJhY2tfdG87Ci0gCi0rICBpZiAoZGVidWdfYXV0b19sb2FkKQotKyAgICB7Ci0rICAgICAgdmFf bGlzdCBkZWJ1Z19hcmdzOwotKwotKyAgICAgIHZhX3N0YXJ0IChkZWJ1Z19hcmdzLCBkZWJ1Z19m bXQpOwotKyAgICAgIHZmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIGRlYnVnX2ZtdCwg ZGVidWdfYXJncyk7Ci0rICAgICAgdmFfZW5kIChkZWJ1Z19hcmdzKTsKLSsgICAgfQotKwotICAg YmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmZmlsZW5hbWVf cmVhbCk7Ci0gCi0gICBpZiAoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMg KGZpbGVuYW1lLCAmZmlsZW5hbWVfcmVhbCkpCi1AQCAtMjgxLDcgKzM0MywxMCBAQCBzb3VyY2Vf Z2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iCi0gICBzdHJ1Y3QgYXV0b19sb2FkX3Bz cGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9u IGU7Ci0gCi0tICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUpOwot KyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lLCBfKCJhdXRvLWxv YWQ6IExvYWRpbmcgY2FubmVkICIKLSsJCQkJCQkic2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlw dCAiCi0rCQkJCQkJIlwiJXNcIiBmb3Igb2JqZmlsZSBcIiVzXCIuXG4iKSwKLSsJCQkJICAgIGZp bGVuYW1lLCBvYmpmaWxlLT5uYW1lKTsKLSAKLSAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUg aGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgotICAgICAgY2Fu IHByaW50IGl0LiAgKi8KLUBAIC05NzUsNCArMTA0MCwxMyBAQCBTZWUgdGhlIGNvbW1hbmRzICdz ZXQgYXV0by1sb2FkIHNhZmUtcGF0Ci0gYWNjZXNzIHRoZSBjdXJyZW50IGZ1bGwgbGlzdCBzZXR0 aW5nLiIpLAotIAkJICZjbWRsaXN0KTsKLSAgIHNldF9jbWRfY29tcGxldGVyIChjbWQsIGZpbGVu YW1lX2NvbXBsZXRlcik7Ci0rCi0rICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9h ZCIsIGNsYXNzX21haW50ZW5hbmNlLAotKwkJCSAgICZkZWJ1Z19hdXRvX2xvYWQsIF8oIlwKLStT ZXQgYXV0by1sb2FkIHZlcmlmaWNhdGlvbnMgZGVidWdnaW5nLiIpLCBfKCJcCi0rU2hvdyBhdXRv LWxvYWQgdmVyaWZpY2F0aW9ucyBkZWJ1Z2dpbmcuIiksIF8oIlwKLStXaGVuIG5vbi16ZXJvLCBk ZWJ1Z2dpbmcgb3V0cHV0IGZvciBmaWxlcyBvZiAnc2V0IGF1dG8tbG9hZCAuLi4nXG5cCi0raXMg ZGlzcGxheWVkLiIpLAotKwkJCSAgICBOVUxMLCBzaG93X2RlYnVnX2F1dG9fbG9hZCwKLSsJCQkg ICAgJnNldGRlYnVnbGlzdCwgJnNob3dkZWJ1Z2xpc3QpOwotIH0KLUluZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4 IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIwMAotQEAgLTU1LDYgKzU1LDcgQEAgZXh0ZXJuIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sbwotIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqKmF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICh2b2lkKTsKLSBleHRlcm4gc3RydWN0 IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAodm9pZCk7Ci0g Ci0tZXh0ZXJuIGludCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFt ZSk7Ci0rZXh0ZXJuIGludCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxl bmFtZSwKLSsJCQkJICAgY29uc3QgY2hhciAqZGVidWdfZm10LCAuLi4pOwotIAotICNlbmRpZiAv KiBBVVRPX0xPQURfSCAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRo cmVhZC1kYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9s aW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTggMDA6 NTA6MDQuODAxNjI2MjM1ICswMjAwCi1AQCAtODY5LDcgKzg2OSw5IEBAIHRyeV90aHJlYWRfZGJf bG9hZF9mcm9tX3BkaXJfMSAoc3RydWN0IG8KLSAgIGdkYl9hc3NlcnQgKGNwICE9IE5VTEwpOwot ICAgc3RyY3B5IChjcCArIDEsIExJQlRIUkVBRF9EQl9TTyk7Ci0gCi0tICBpZiAoIWZpbGVfaXNf YXV0b19sb2FkX3NhZmUgKHBhdGgpKQotKyAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChw YXRoLCBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgbGlidGhyZWFkLWRiICIKLSsJCQkJICAgICAgICJs aWJyYXJ5IFwiJXNcIiBmcm9tICRwZGlyLlxuIiksCi0rCQkJICAgICAgIHBhdGgpKQotICAgICBy ZXN1bHQgPSAwOwotICAgZWxzZQotICAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBh dGgpOwotQEAgLTkzOSw3ICs5NDEsMTAgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyIChj b25zdCBjaGFyCi0gICBwYXRoW2Rpcl9sZW5dID0gJy8nOwotICAgc3RyY3B5IChwYXRoICsgZGly X2xlbiArIDEsIExJQlRIUkVBRF9EQl9TTyk7Ci0gCi0tICBpZiAoIWZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgKHBhdGgpKQotKyAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoLCBfKCJh dXRvLWxvYWQ6IExvYWRpbmcgbGlidGhyZWFkLWRiICIKLSsJCQkJICAgICAgICJsaWJyYXJ5IFwi JXNcIiBmcm9tIGV4cGxpY2l0ICIKLSsJCQkJICAgICAgICJkaXJlY3RvcnkuXG4iKSwKLSsJCQkg ICAgICAgcGF0aCkpCi0gICAgIHJlc3VsdCA9IDA7Ci0gICBlbHNlCi0gICAgIHJlc3VsdCA9IHRy eV90aHJlYWRfZGJfbG9hZCAocGF0aCk7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv bWFpbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWlu LmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUgKzAyMDAKLUBA IC0xMDI3LDcgKzEwMjcsMTAgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgICAgICBh dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9IGdkYl9yZWFscGF0aCAobG9jYWxfZ2Ri aW5pdCk7Ci0gCi0gICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2Fs X2dkYmluaXQKLS0JICAmJiBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChsb2NhbF9nZGJpbml0KSkK LSsJICAmJiBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChsb2NhbF9nZGJpbml0LAotKwkJCQkgICAg IF8oImF1dG8tbG9hZDogTG9hZGluZyAuZ2RiaW5pdCAiCi0rCQkJCSAgICAgICAiZmlsZSBcIiVz XCIuXG4iKSwKLSsJCQkJICAgICBsb2NhbF9nZGJpbml0KSkKLSAJewotIAkgIGF1dG9fbG9hZF9s b2NhbF9nZGJpbml0X2xvYWRlZCA9IDE7Ci0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvZG9jL2dkYi50ZXhpbmZvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0x OCAwMDo1MDowNC44MDk2MjYyMTUgKzAyMDAKLUBAIC0yMDg4Nyw2ICsyMDg4Nyw3IEBAIFRoZXNl IGFyZSBAdmFsdWV7R0RCTn0gY29udHJvbCBjb21tYW5kcwotICogbGlidGhyZWFkX2RiLnNvLjEg ZmlsZTo6ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVh ZC1kYn0KLSAqIG9iamZpbGUtZ2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtzZXQv c2hvdy9pbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0fQotICogQXV0by1sb2FkaW5nIHNhZmUgcGF0 aDo6ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIHNhZmUtcGF0aH0K LSsqIEF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGU6OiAgICAgICAgICBAc2FtcHtzZXQvc2hvdyBk ZWJ1ZyBhdXRvLWxvYWR9Ci0gQHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30uCi0gQGVuZCBtZW51 Ci0gCi1AQCAtMjEwODUsNiArMjEwODYsNDUgQEAgZW50cmllcyBhZ2Fpbi4gIEB2YWx1ZXtHREJO fSBhbHJlYWR5IGNhbgotIG93biBiZWZvcmUgc3RhcnRpbmcgdGhlIGNvbXBhcmlzb24gc28gYSBj YW5vbmljYWwgZm9ybSBvZiBkaXJlY3RvcmllcyBpcwotIHJlY29tbWVuZGVkIHRvIGJlIGVudGVy ZWQuCi0gCi0rQG5vZGUgQXV0by1sb2FkaW5nIHZlcmJvc2UgbW9kZQotK0BzdWJzZWN0aW9uIERp c3BsYXlpbmcgZmlsZXMgdHJpZWQgZm9yIGF1dG8tbG9hZAotK0BjaW5kZXggYXV0by1sb2FkaW5n IHZlcmJvc2UgbW9kZQotKwotK0ZvciBiZXR0ZXIgdmlzaWJpbGl0eSBvZiBhbGwgdGhlIGZpbGUg bG9jYXRpb25zIHdoZXJlIHlvdSBjYW4gcGxhY2Ugc2NyaXB0cyB0bwotK2JlIGF1dG8tbG9hZGVk IHdpdGggaW5mZXJpb3IgLS0tIG9yIHRvIHByb3RlY3QgeW91cnNlbGYgYWdhaW5zdCBhY2NpZGVu dGFsCi0rZXhlY3V0aW9uIG9mIHVudHJ1c3RlZCBzY3JpcHRzIC0tLSBAdmFsdWV7R0RCTn0gcHJv dmlkZXMgYSBmZWF0dXJlIGZvciBwcmludGluZwotK2FsbCB0aGUgZmlsZXMgYXR0ZW1wdGVkIHRv IGJlIGxvYWRlZC4gIEJvdGggZXhpc3RpbmcgYW5kIG5vbi1leGlzdGluZyBmaWxlcyBtYXkKLSti ZSBwcmludGVkLgotKwotK0ZvciBleGFtcGxlIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20g d2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMKLSsoQHB4cmVme0F1dG8tbG9hZGlu ZyBzYWZlIHBhdGh9KSBhcHBsaWVzIGFsc28gdG8gY2Fub25pY2FsaXplZCBmaWxlbmFtZXMgd2hp Y2gKLSttYXkgbm90IGJlIHRvbyBvYnZpb3VzIHdoaWxlIHNldHRpbmcgaXQgdXAuCi0rCi0rQHNt YWxsZXhhbXBsZQotKyhnZGIpIHNldCBkZWJ1ZyBhdXRvLWxvYWQgdWVzCi0rKGdkYikgZmlsZSB+ L3NyYy90L3RydWUKLSthdXRvLWxvYWQ6IExvYWRpbmcgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21t YW5kcyBzY3JpcHQgIi90bXAvdHJ1ZS1nZGIuZ2RiIgotKyAgICAgICAgICAgZm9yIG9iamZpbGUg Ii90bXAvdHJ1ZSIuCi0rYXV0by1sb2FkOiBVcGRhdGluZyBkaXJlY3RvcmllcyBvZiAiL3Vzcjov b3B0Ii4KLSthdXRvLWxvYWQ6IFVzaW5nIGRpcmVjdG9yeSAiL3VzciIuCi0rYXV0by1sb2FkOiBV c2luZyBkaXJlY3RvcnkgIi9vcHQiLgotK3dhcm5pbmc6IEZpbGUgIi90bXAvdHJ1ZS1nZGIuZ2Ri IiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4gZGVjbGluZWQKLSsgICAgICAgICBieSB5b3VyIGBhdXRv LWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91c3I6L29wdCIuCi0rQGVuZCBzbWFsbGV4YW1wbGUK LSsKLStAdGFibGUgQGNvZGUKLStAYW5jaG9ye3NldCBkZWJ1ZyBhdXRvLWxvYWR9Ci0rQGtpbmRl eCBzZXQgZGVidWcgYXV0by1sb2FkCi0rQGl0ZW0gc2V0IGRlYnVnIGF1dG8tbG9hZCBbb258b2Zm XQotK1NldCB3aGV0aGVyIHRvIHByaW50IHRoZSBmaWxlbmFtZXMgYXR0ZW1wdGVkIHRvIGJlIGF1 dG8tbG9hZGVkLgotKwotK0BhbmNob3J7c2hvdyBkZWJ1ZyBhdXRvLWxvYWR9Ci0rQGtpbmRleCBz aG93IGRlYnVnIGF1dG8tbG9hZAotK0BpdGVtIHNob3cgZGVidWcgYXV0by1sb2FkCi0rU2hvdyB3 aGV0aGVyIHByaW50aW5nIG9mIHRoZSBmaWxlbmFtZXMgYXR0ZW1wdGVkIHRvIGJlIGF1dG8tbG9h ZGVkIGlzIHR1cm5lZAotK29uIG9yIG9mZi4KLStAZW5kIHRhYmxlCi0rCi0gQG5vZGUgTWVzc2Fn ZXMvV2FybmluZ3MKLSBAc2VjdGlvbiBPcHRpb25hbCBXYXJuaW5ncyBhbmQgTWVzc2FnZXMKLSAK LUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRv LWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjUwOjA0 LjgxMDYyNjIxMiArMDIwMAotQEAgLTc1LDcgKzc1LDEwIEBAIGdkYnB5X2xvYWRfYXV0b19zY3Jp cHRfZm9yX29iamZpbGUgKHN0cnUKLSAgIGludCBpc19zYWZlOwotICAgc3RydWN0IGF1dG9fbG9h ZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0gCi0tICBpc19zYWZlID0gZmlsZV9pc19hdXRv X2xvYWRfc2FmZSAoZmlsZW5hbWUpOwotKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3Nh ZmUgKGZpbGVuYW1lLAotKwkJCQkgICAgXygiYXV0by1sb2FkOiBMb2FkaW5nIFB5dGhvbiBzY3Jp cHQgXCIlc1wiICIKLSsJCQkJICAgICAgImJ5IGV4dGVuc2lvbiBmb3Igb2JqZmlsZSBcIiVzXCIu XG4iKSwKLSsJCQkJICAgIGZpbGVuYW1lLCBvYmpmaWxlLT5uYW1lKTsKLSAKLSAgIC8qIEFkZCB0 aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIgotICAgICAgY2FuIHByaW50IGl0LiAgKi8KLUBAIC0xNTMsNyArMTU2LDEyIEBA IHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKLSAJICBtYWtlX2NsZWFu dXBfZmNsb3NlIChzdHJlYW0pOwotIAkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0aCk7 Ci0gCi0tCSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmdWxsX3BhdGgpKQotKwkgIGlm ICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRoLAotKwkJCQkgICAgICAgXygiYXV0 by1sb2FkOiBMb2FkaW5nIFB5dGhvbiBzY3JpcHQgIgotKwkJCQkJICJcIiVzXCIgZnJvbSBzZWN0 aW9uIFwiJXNcIiBvZiAiCi0rCQkJCQkgIm9iamZpbGUgXCIlc1wiLlxuIiksCi0rCQkJCSAgICAg ICBmdWxsX3BhdGgsIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLAotKwkJCQkgICAgICAgb2JqZmls ZS0+bmFtZSkpCi0gCSAgICBvcGVuZWQgPSAwOwotIAl9Ci0gICAgICAgZWxzZQoKZGlmZiAtLWdp dCBhL2dkYi1hdXRvbG9hZC0xMm9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTJvZjI4LnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MmJkYmMKLS0tIC9kZXYvbnVs bAorKysgYi9nZGItYXV0b2xvYWQtMTJvZjI4LnBhdGNoCkBAIC0wLDAgKzEsMzUyIEBACitbcGF0 Y2gjNCA2LzhdIHNldCBkZWJ1ZyBhdXRvLWxvYWQKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg5Lmh0bWwKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTUuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMi8wNC8xNyAxNTo1NDoyOAkxLjE0MTE0CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8w NC8xNyAxNTo1NjoyMAkxLjE0MTE1CisjIyAtMSw1ICsxLDI3IEBACisgMjAxMi0wNC0xNyAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorKwlOZXcgb3B0aW9u ICJzZXQgZGVidWcgYXV0by1sb2FkIi4KKysJKiBORVdTOiBOZXcgY29tbWFuZHMgInNldCBkZWJ1 ZyBhdXRvLWxvYWQiIGFuZCAic2hvdyBkZWJ1ZyBhdXRvLWxvYWQiLgorKwkqIGF1dG8tbG9hZC5j IChkZWJ1Z19hdXRvX2xvYWQsIHNob3dfZGVidWdfYXV0b19sb2FkOiBOZXcuCisrCShhdXRvX2xv YWRfc2FmZV9wYXRoX3ZlY191cGRhdGUpCisrCShmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlYyk6IENhbGwgZnByaW50Zl91bmZpbHRlcmVkCisrCWlmIERFQlVHX0FVVE9fTE9B RC4KKysJKGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgcGFyYW1ldGVycyBkZWJ1Z19mbXQg YW5kIC4uLi4KKysJQ2FsbCBmcHJpbnRmX3VuZmlsdGVyZWQgaWYgREVCVUdfQVVUT19MT0FELgor Kwkoc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUpOiBFeHRlbmQgdGhlIGZpbGVfaXNfYXV0 b19sb2FkX3NhZmUKKysJY2FsbGVyIGJ5IGV4cGxhbmF0b3J5IHN0cmluZy4KKysJKF9pbml0aWFs aXplX2F1dG9fbG9hZCk6IFJlZ2lzdGVyICJzZXQgZGVidWcgYXV0by1sb2FkIi4KKysJKiBhdXRv LWxvYWQuaCAoZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldyBwYXJhbWV0ZXJzIGRlYnVnX2Zt dAorKwlhbmQgLi4uLgorKwkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlfdGhyZWFkX2RiX2xvYWRf ZnJvbV9wZGlyXzEpCisrCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBFeHRlbmQgdGhl IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgY2FsbGVyCisrCWJ5IGV4cGxhbmF0b3J5IHN0cmluZy4K KysJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBMaWtld2lzZS4KKysJKiBweXRob24vcHktYXV0 by1sb2FkLmMgKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUpCisrCShzb3VyY2Vf c2VjdGlvbl9zY3JpcHRzKTogTGlrZXdpc2UuCisrCisrMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworIAlOZXcgb3B0aW9uICJzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aCIuCisgCSogTkVXUzogTmV3IGNvbW1hbmRzICJzZXQgYXV0by1sb2Fk IHNhZmUtcGF0aCIKKyAJYW5kICJzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgiLgorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTozMy4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NTA6MTUuMDE4 NjAwMjgyICswMjAwCitAQCAtNzIsNiArNzIsMTAgQEAgc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRo CisgICBTZXQgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBh dXRvLWxvYWQgZmlsZXMuCisgICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBkaWZmZXIg YWNjb3JkaW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgorIAorK3NldCBkZWJ1ZyBhdXRvLWxvYWQg b258b2ZmCisrc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKKysgIENvbnRyb2wgZGlzcGxheSBvZiBkZWJ1 Z2dpbmcgaW5mbyBmb3IgYXV0by1sb2FkaW5nIHRoZSBmaWxlcyBhYm92ZS4KKysKKyAqIE5ldyBj b21tYW5kIGxpbmUgb3B0aW9ucworIAorIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAg ICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAw OjUwOjA0LjgwMTYyNjIzNSArMDIwMAorQEAgLTQzLDYgKzQzLDIwIEBACisgc3RhdGljIHZvaWQg c291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBG SUxFICpmaWxlLAorIAkJCQkJICAgY29uc3QgY2hhciAqZmlsZW5hbWUpOworIAorKy8qIFZhbHVl IG9mIHRoZSAnc2V0IGRlYnVnIGF1dG8tbG9hZCcgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICov Cisrc3RhdGljIGludCBkZWJ1Z19hdXRvX2xvYWQgPSAwOworKworKy8qICJzaG93IiBjb21tYW5k IGZvciB0aGUgZGVidWdfYXV0b19sb2FkIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworKwor K3N0YXRpYyB2b2lkCisrc2hvd19kZWJ1Z19hdXRvX2xvYWQgKHN0cnVjdCB1aV9maWxlICpmaWxl LCBpbnQgZnJvbV90dHksCisrCQkgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29u c3QgY2hhciAqdmFsdWUpCisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdn aW5nIG91dHB1dCBmb3IgZmlsZXMgIgorKwkJCSAgICAib2YgJ3NldCBhdXRvLWxvYWQgLi4uJyBp cyAlcy5cbiIpLAorKwkJICAgIHZhbHVlKTsKKyt9CisrCisgLyogVXNlci1zZXR0YWJsZSBvcHRp b24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nIG9mIEdEQl9BVVRPX0ZJTEVfTkFNRQor ICAgIHNjcmlwdHM6CisgICAgc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBvbnxvZmYKK0BAIC0x MTIsNiArMTI2LDExIEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKKyAg IHVuc2lnbmVkIGxlbjsKKyAgIGludCBpeDsKKyAKKysgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCisr ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCQlfKCJhdXRvLWxvYWQ6IFVw ZGF0aW5nIGRpcmVjdG9yaWVzIG9mIFwiJXNcIi5cbiIpLAorKwkJCWF1dG9fbG9hZF9zYWZlX3Bh dGgpOworKworICAgZnJlZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsK KyAKKyAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVj IChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKK0BAIC0xMjYsMTQgKzE0NSwzNCBAQCBhdXRvX2xvYWRf c2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCisgICAgICAgY2hhciAqcmVhbF9wYXRoID0gZ2Ri X3JlYWxwYXRoIChleHBhbmRlZCk7CisgCisgICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVu dHJ5IGlzIGF0IGxlYXN0IHRpbGRlX2V4cGFuZC1lZC4gICovCistICAgICAgeGZyZWUgKGRpcik7 CisgICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywg aXgsIGV4cGFuZGVkKTsKKyAKKysgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQorKwl7CisrCSAg aWYgKHN0cmNtcCAoZXhwYW5kZWQsIGRpcikgPT0gMCkKKysJICAgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywKKysJCQkJXygiYXV0by1sb2FkOiBVc2luZyBkaXJlY3RvcnkgXCIlc1wi LlxuIiksCisrCQkJCWV4cGFuZGVkKTsKKysJICBlbHNlCisrCSAgICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCisrCQkJCV8oImF1dG8tbG9hZDogUmVzb2x2ZWQgZGlyZWN0b3J5IFwi JXNcIiAiCisrCQkJCSAgImFzIFwiJXNcIi5cbiIpLAorKwkJCQlkaXIsIGV4cGFuZGVkKTsKKysJ fQorKyAgICAgIHhmcmVlIChkaXIpOworKworICAgICAgIC8qIElmIGdkYl9yZWFscGF0aCByZXR1 cm5zIGEgZGlmZmVyZW50IGNvbnRlbnQsIGFwcGVuZCBpdC4gICovCisgICAgICAgaWYgKHN0cmNt cCAocmVhbF9wYXRoLCBleHBhbmRlZCkgPT0gMCkKKyAJeGZyZWUgKHJlYWxfcGF0aCk7CisgICAg ICAgZWxzZQorLQlWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWMsIHJlYWxfcGF0aCk7CisrCXsKKysJICBWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgYXV0b19s b2FkX3NhZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7CisrCisrCSAgaWYgKGRlYnVnX2F1dG9fbG9h ZCkKKysJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCQkJXygiYXV0by1s b2FkOiBBbmQgY2Fub25pY2FsaXplZCBhcyBcIiVzXCIuXG4iKSwKKysJCQkJcmVhbF9wYXRoKTsK KysJfQorICAgICB9CisgfQorIAorQEAgLTIxNywxNiArMjU2LDMwIEBAIGZpbGVuYW1lX2lzX2lu X2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjICgKKyAgIGlmIChkaXIgPT0gTlVMTCkKKyAgICAgewor ICAgICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCkKKy0JKmZpbGVuYW1lX3JlYWxwID0g Z2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7CisrCXsKKysJICAqZmlsZW5hbWVfcmVhbHAgPSBnZGJf cmVhbHBhdGggKGZpbGVuYW1lKTsKKysJICBpZiAoZGVidWdfYXV0b19sb2FkICYmIHN0cmNtcCAo KmZpbGVuYW1lX3JlYWxwLCBmaWxlbmFtZSkgIT0gMCkKKysJICAgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywKKysJCQkJXygiYXV0by1sb2FkOiBSZXNvbHZlZCAiCisrCQkJCSAgImZp bGUgXCIlc1wiIGFzIFwiJXNcIi5cbiIpLAorKwkJCQlmaWxlbmFtZSwgKmZpbGVuYW1lX3JlYWxw KTsKKysJfQorIAorLSAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1 dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsKKy0JICAgKytpeCkKKy0JaWYgKGZpbGVu YW1lX2lzX2luX2RpciAoKmZpbGVuYW1lX3JlYWxwLCBkaXIpKQorLQkgIGJyZWFrOworKyAgICAg IGlmIChzdHJjbXAgKCpmaWxlbmFtZV9yZWFscCwgZmlsZW5hbWUpICE9IDApCisrCWZvciAoaXgg PSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwg ZGlyKTsKKysJICAgICArK2l4KQorKwkgIGlmIChmaWxlbmFtZV9pc19pbl9kaXIgKCpmaWxlbmFt ZV9yZWFscCwgZGlyKSkKKysJICAgIGJyZWFrOworICAgICB9CisgCisgICBpZiAoZGlyICE9IE5V TEwpCistICAgIHJldHVybiAxOworKyAgICB7CisrICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkK KysJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEZpbGUgXCIl c1wiIG1hdGNoZXMgIgorKwkJCQkJICAiZGlyZWN0b3J5IFwiJXNcIi5cbiIpLAorKwkJCSAgICBm aWxlbmFtZSwgZGlyKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorIAorICAgcmV0dXJuIDA7 CisgfQorQEAgLTI0MCwxMSArMjkzLDIwIEBAIGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZl X3BhdGhfdmVjICgKKyAgICBkaXJlY3RvcnkuICAqLworIAorIGludAorLWZpbGVfaXNfYXV0b19s b2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorK2ZpbGVfaXNfYXV0b19sb2FkX3NhZmUg KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpkZWJ1Z19mbXQsIC4uLikKKyB7Cisg ICBjaGFyICpmaWxlbmFtZV9yZWFsID0gTlVMTDsKKyAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3Rv OworIAorKyAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKKysgICAgeworKyAgICAgIHZhX2xpc3QgZGVi dWdfYXJnczsKKysKKysgICAgICB2YV9zdGFydCAoZGVidWdfYXJncywgZGVidWdfZm10KTsKKysg ICAgICB2ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBkZWJ1Z19mbXQsIGRlYnVnX2Fy Z3MpOworKyAgICAgIHZhX2VuZCAoZGVidWdfYXJncyk7CisrICAgIH0KKysKKyAgIGJhY2tfdG8g PSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmZpbGVuYW1lX3JlYWwpOwor IAorICAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjIChmaWxlbmFt ZSwgJmZpbGVuYW1lX3JlYWwpKQorQEAgLTI4MSw3ICszNDMsMTAgQEAgc291cmNlX2dkYl9zY3Jp cHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYgorICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5m byAqcHNwYWNlX2luZm87CisgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOworIAor LSAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsKKysgIGlzX3Nh ZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSwgXygiYXV0by1sb2FkOiBMb2Fk aW5nIGNhbm5lZCAiCisrCQkJCQkJInNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHQgIgorKwkJ CQkJCSJcIiVzXCIgZm9yIG9iamZpbGUgXCIlc1wiLlxuIiksCisrCQkJCSAgICBmaWxlbmFtZSwg b2JqZmlsZS0+bmFtZSk7CisgCisgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFi bGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKKyAgICAgIGNhbiBwcmludCBp dC4gICovCitAQCAtOTc1LDQgKzEwNDAsMTMgQEAgU2VlIHRoZSBjb21tYW5kcyAnc2V0IGF1dG8t bG9hZCBzYWZlLXBhdAorIGFjY2VzcyB0aGUgY3VycmVudCBmdWxsIGxpc3Qgc2V0dGluZy4iKSwK KyAJCSAmY21kbGlzdCk7CisgICBzZXRfY21kX2NvbXBsZXRlciAoY21kLCBmaWxlbmFtZV9jb21w bGV0ZXIpOworKworKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJhdXRvLWxvYWQiLCBjbGFz c19tYWludGVuYW5jZSwKKysJCQkgICAmZGVidWdfYXV0b19sb2FkLCBfKCJcCisrU2V0IGF1dG8t bG9hZCB2ZXJpZmljYXRpb25zIGRlYnVnZ2luZy4iKSwgXygiXAorK1Nob3cgYXV0by1sb2FkIHZl cmlmaWNhdGlvbnMgZGVidWdnaW5nLiIpLCBfKCJcCisrV2hlbiBub24temVybywgZGVidWdnaW5n IG91dHB1dCBmb3IgZmlsZXMgb2YgJ3NldCBhdXRvLWxvYWQgLi4uJ1xuXAorK2lzIGRpc3BsYXll ZC4iKSwKKysJCQkgICAgTlVMTCwgc2hvd19kZWJ1Z19hdXRvX2xvYWQsCisrCQkJICAgICZzZXRk ZWJ1Z2xpc3QsICZzaG93ZGVidWdsaXN0KTsKKyB9CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvYXV0by1sb2FkLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo1MDow NC44MDE2MjYyMzUgKzAyMDAKK0BAIC01NSw2ICs1NSw3IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqKmF1dG9fbG8KKyBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiph dXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCk7CisgZXh0ZXJuIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICoqYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKHZvaWQpOworIAorLWV4dGVy biBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOworK2V4 dGVybiBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsCisr CQkJCSAgIGNvbnN0IGNoYXIgKmRlYnVnX2ZtdCwgLi4uKTsKKyAKKyAjZW5kaWYgLyogQVVUT19M T0FEX0ggKi8KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbGludXgtdGhy ZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjUwOjA0Ljgw MTYyNjIzNSArMDIwMAorQEAgLTg2OSw3ICs4NjksOSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJv bV9wZGlyXzEgKHN0cnVjdCBvCisgICBnZGJfYXNzZXJ0IChjcCAhPSBOVUxMKTsKKyAgIHN0cmNw eSAoY3AgKyAxLCBMSUJUSFJFQURfREJfU08pOworIAorLSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9h ZF9zYWZlIChwYXRoKSkKKysgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCwgXygi YXV0by1sb2FkOiBMb2FkaW5nIGxpYnRocmVhZC1kYiAiCisrCQkJCSAgICAgICAibGlicmFyeSBc IiVzXCIgZnJvbSAkcGRpci5cbiIpLAorKwkJCSAgICAgICBwYXRoKSkKKyAgICAgcmVzdWx0ID0g MDsKKyAgIGVsc2UKKyAgICAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKK0BA IC05MzksNyArOTQxLDEwIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAoY29uc3QgY2hh cgorICAgcGF0aFtkaXJfbGVuXSA9ICcvJzsKKyAgIHN0cmNweSAocGF0aCArIGRpcl9sZW4gKyAx LCBMSUJUSFJFQURfREJfU08pOworIAorLSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChw YXRoKSkKKysgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCwgXygiYXV0by1sb2Fk OiBMb2FkaW5nIGxpYnRocmVhZC1kYiAiCisrCQkJCSAgICAgICAibGlicmFyeSBcIiVzXCIgZnJv bSBleHBsaWNpdCAiCisrCQkJCSAgICAgICAiZGlyZWN0b3J5LlxuIiksCisrCQkJICAgICAgIHBh dGgpKQorICAgICByZXN1bHQgPSAwOworICAgZWxzZQorICAgICByZXN1bHQgPSB0cnlfdGhyZWFk X2RiX2xvYWQgKHBhdGgpOworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbWFpbi5jCTIwMTIt MDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NTA6MDQuODAxNjI2MjM1ICswMjAwCitAQCAtMTAyNyw3 ICsxMDI3LDEwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICAgICAgYXV0b19sb2Fk X2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBnZGJfcmVhbHBhdGggKGxvY2FsX2dkYmluaXQpOwor IAorICAgICAgIGlmICghaW5oaWJpdF9nZGJpbml0ICYmIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0 CistCSAgJiYgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAobG9jYWxfZ2RiaW5pdCkpCisrCSAgJiYg ZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAobG9jYWxfZ2RiaW5pdCwKKysJCQkJICAgICBfKCJhdXRv LWxvYWQ6IExvYWRpbmcgLmdkYmluaXQgIgorKwkJCQkgICAgICAgImZpbGUgXCIlc1wiLlxuIiks CisrCQkJCSAgICAgbG9jYWxfZ2RiaW5pdCkpCisgCXsKKyAJICBhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdF9sb2FkZWQgPSAxOworIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9n ZGIudGV4aW5mbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv ZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NTA6 MDQuODA5NjI2MjE1ICswMjAwCitAQCAtMjA4ODcsNiArMjA4ODcsNyBAQCBUaGVzZSBhcmUgQHZh bHVle0dEQk59IGNvbnRyb2wgY29tbWFuZHMKKyAqIGxpYnRocmVhZF9kYi5zby4xIGZpbGU6OiAg ICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Cisg KiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5m byBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KKyAqIEF1dG8tbG9hZGluZyBzYWZlIHBhdGg6OiAgICAg ICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBzYWZlLXBhdGh9CisrKiBBdXRv LWxvYWRpbmcgdmVyYm9zZSBtb2RlOjogICAgICAgICAgQHNhbXB7c2V0L3Nob3cgZGVidWcgYXV0 by1sb2FkfQorIEB4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9LgorIEBlbmQgbWVudQorIAorQEAg LTIxMDg1LDYgKzIxMDg2LDQ1IEBAIGVudHJpZXMgYWdhaW4uICBAdmFsdWV7R0RCTn0gYWxyZWFk eSBjYW4KKyBvd24gYmVmb3JlIHN0YXJ0aW5nIHRoZSBjb21wYXJpc29uIHNvIGEgY2Fub25pY2Fs IGZvcm0gb2YgZGlyZWN0b3JpZXMgaXMKKyByZWNvbW1lbmRlZCB0byBiZSBlbnRlcmVkLgorIAor K0Bub2RlIEF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUKKytAc3Vic2VjdGlvbiBEaXNwbGF5aW5n IGZpbGVzIHRyaWVkIGZvciBhdXRvLWxvYWQKKytAY2luZGV4IGF1dG8tbG9hZGluZyB2ZXJib3Nl IG1vZGUKKysKKytGb3IgYmV0dGVyIHZpc2liaWxpdHkgb2YgYWxsIHRoZSBmaWxlIGxvY2F0aW9u cyB3aGVyZSB5b3UgY2FuIHBsYWNlIHNjcmlwdHMgdG8KKytiZSBhdXRvLWxvYWRlZCB3aXRoIGlu ZmVyaW9yIC0tLSBvciB0byBwcm90ZWN0IHlvdXJzZWxmIGFnYWluc3QgYWNjaWRlbnRhbAorK2V4 ZWN1dGlvbiBvZiB1bnRydXN0ZWQgc2NyaXB0cyAtLS0gQHZhbHVle0dEQk59IHByb3ZpZGVzIGEg ZmVhdHVyZSBmb3IgcHJpbnRpbmcKKythbGwgdGhlIGZpbGVzIGF0dGVtcHRlZCB0byBiZSBsb2Fk ZWQuICBCb3RoIGV4aXN0aW5nIGFuZCBub24tZXhpc3RpbmcgZmlsZXMgbWF5CisrYmUgcHJpbnRl ZC4KKysKKytGb3IgZXhhbXBsZSB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0 IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCisrKEBweHJlZntBdXRvLWxvYWRpbmcgc2FmZSBw YXRofSkgYXBwbGllcyBhbHNvIHRvIGNhbm9uaWNhbGl6ZWQgZmlsZW5hbWVzIHdoaWNoCisrbWF5 IG5vdCBiZSB0b28gb2J2aW91cyB3aGlsZSBzZXR0aW5nIGl0IHVwLgorKworK0BzbWFsbGV4YW1w bGUKKysoZ2RiKSBzZXQgZGVidWcgYXV0by1sb2FkIHVlcworKyhnZGIpIGZpbGUgfi9zcmMvdC90 cnVlCisrYXV0by1sb2FkOiBMb2FkaW5nIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2Ny aXB0ICIvdG1wL3RydWUtZ2RiLmdkYiIKKysgICAgICAgICAgIGZvciBvYmpmaWxlICIvdG1wL3Ry dWUiLgorK2F1dG8tbG9hZDogVXBkYXRpbmcgZGlyZWN0b3JpZXMgb2YgIi91c3I6L29wdCIuCisr YXV0by1sb2FkOiBVc2luZyBkaXJlY3RvcnkgIi91c3IiLgorK2F1dG8tbG9hZDogVXNpbmcgZGly ZWN0b3J5ICIvb3B0Ii4KKyt3YXJuaW5nOiBGaWxlICIvdG1wL3RydWUtZ2RiLmdkYiIgYXV0by1s b2FkaW5nIGhhcyBiZWVuIGRlY2xpbmVkCisrICAgICAgICAgYnkgeW91ciBgYXV0by1sb2FkIHNh ZmUtcGF0aCcgc2V0IHRvICIvdXNyOi9vcHQiLgorK0BlbmQgc21hbGxleGFtcGxlCisrCisrQHRh YmxlIEBjb2RlCisrQGFuY2hvcntzZXQgZGVidWcgYXV0by1sb2FkfQorK0BraW5kZXggc2V0IGRl YnVnIGF1dG8tbG9hZAorK0BpdGVtIHNldCBkZWJ1ZyBhdXRvLWxvYWQgW29ufG9mZl0KKytTZXQg d2hldGhlciB0byBwcmludCB0aGUgZmlsZW5hbWVzIGF0dGVtcHRlZCB0byBiZSBhdXRvLWxvYWRl ZC4KKysKKytAYW5jaG9ye3Nob3cgZGVidWcgYXV0by1sb2FkfQorK0BraW5kZXggc2hvdyBkZWJ1 ZyBhdXRvLWxvYWQKKytAaXRlbSBzaG93IGRlYnVnIGF1dG8tbG9hZAorK1Nob3cgd2hldGhlciBw cmludGluZyBvZiB0aGUgZmlsZW5hbWVzIGF0dGVtcHRlZCB0byBiZSBhdXRvLWxvYWRlZCBpcyB0 dXJuZWQKKytvbiBvciBvZmYuCisrQGVuZCB0YWJsZQorKworIEBub2RlIE1lc3NhZ2VzL1dhcm5p bmdzCisgQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2VzCisgCitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJ MjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44MTA2MjYy MTIgKzAyMDAKK0BAIC03NSw3ICs3NSwxMCBAQCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9v YmpmaWxlIChzdHJ1CisgICBpbnQgaXNfc2FmZTsKKyAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNl X2luZm8gKnBzcGFjZV9pbmZvOworIAorLSAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3Nh ZmUgKGZpbGVuYW1lKTsKKysgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxl bmFtZSwKKysJCQkJICAgIF8oImF1dG8tbG9hZDogTG9hZGluZyBQeXRob24gc2NyaXB0IFwiJXNc IiAiCisrCQkJCSAgICAgICJieSBleHRlbnNpb24gZm9yIG9iamZpbGUgXCIlc1wiLlxuIiksCisr CQkJCSAgICBmaWxlbmFtZSwgb2JqZmlsZS0+bmFtZSk7CisgCisgICAvKiBBZGQgdGhpcyBzY3Jp cHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cyIKKyAgICAgIGNhbiBwcmludCBpdC4gICovCitAQCAtMTUzLDcgKzE1NiwxMiBAQCBzb3VyY2Vf c2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCisgCSAgbWFrZV9jbGVhbnVwX2ZjbG9z ZSAoc3RyZWFtKTsKKyAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOworIAorLQkg IGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRoKSkKKysJICBpZiAoIWZpbGVf aXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCwKKysJCQkJICAgICAgIF8oImF1dG8tbG9hZDog TG9hZGluZyBQeXRob24gc2NyaXB0ICIKKysJCQkJCSAiXCIlc1wiIGZyb20gc2VjdGlvbiBcIiVz XCIgb2YgIgorKwkJCQkJICJvYmpmaWxlIFwiJXNcIi5cbiIpLAorKwkJCQkgICAgICAgZnVsbF9w YXRoLCBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwKKysJCQkJICAgICAgIG9iamZpbGUtPm5hbWUp KQorIAkgICAgb3BlbmVkID0gMDsKKyAJfQorICAgICAgIGVsc2UKCmRpZmYgLS1naXQgYS9nZGIt YXV0b2xvYWQtMTNvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTEzb2YyMi5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZlYTE1My4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xv YWQtMTNvZjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDEzMC5odG1sCi0KLSMjIyBzcmMv Z2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1NjoyMQkxLjEyOTcKLSMjIyBzcmMvZ2Ri L2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xOCAwNzowMzo1NwkxLjEyOTgKLSMjIC0xLDMgKzEsNyBA QAotKzIwMTItMDQtMTggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KLSsKLSsJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHZlcmJvc2UgbW9kZSk6IEZpeCBz bWFsbGV4YW1wbGUgdHlwby4KLSsKLSAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0gCU5ldyBvcHRpb24gInNldCBkZWJ1ZyBhdXRvLWxv YWQiLgotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMTcgMTU6NTY6MjEJMS45 NDQKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzE4IDA3OjAzOjU4CTEuOTQ1 Ci1AQCAtMjExOTIsNyArMjExOTIsNyBAQAotIG1heSBub3QgYmUgdG9vIG9idmlvdXMgd2hpbGUg c2V0dGluZyBpdCB1cC4KLSAKLSBAc21hbGxleGFtcGxlCi0tKGdkYikgc2V0IGRlYnVnIGF1dG8t bG9hZCB1ZXMKLSsoZ2RiKSBzZXQgZGVidWcgYXV0by1sb2FkIG9uCi0gKGdkYikgZmlsZSB+L3Ny Yy90L3RydWUKLSBhdXRvLWxvYWQ6IExvYWRpbmcgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5k cyBzY3JpcHQgIi90bXAvdHJ1ZS1nZGIuZ2RiIgotICAgICAgICAgICAgZm9yIG9iamZpbGUgIi90 bXAvdHJ1ZSIuCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEzb2YyOC5wYXRjaCBiL2dkYi1h dXRvbG9hZC0xM29mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MjZlYTE1MwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0xM29mMjgucGF0Y2gKQEAg LTAsMCArMSwyMyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9t c2cwMDEzMC5odG1sCisKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1 NjoyMQkxLjEyOTcKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xOCAwNzowMzo1 NwkxLjEyOTgKKyMjIC0xLDMgKzEsNyBAQAorKzIwMTItMDQtMTggIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJKiBnZGIudGV4aW5mbyAoQXV0by1sb2Fk aW5nIHZlcmJvc2UgbW9kZSk6IEZpeCBzbWFsbGV4YW1wbGUgdHlwby4KKysKKyAyMDEyLTA0LTE3 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisgCU5ldyBv cHRpb24gInNldCBkZWJ1ZyBhdXRvLWxvYWQiLgorLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTIvMDQvMTcgMTU6NTY6MjEJMS45NDQKKysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwky MDEyLzA0LzE4IDA3OjAzOjU4CTEuOTQ1CitAQCAtMjExOTIsNyArMjExOTIsNyBAQAorIG1heSBu b3QgYmUgdG9vIG9idmlvdXMgd2hpbGUgc2V0dGluZyBpdCB1cC4KKyAKKyBAc21hbGxleGFtcGxl CistKGdkYikgc2V0IGRlYnVnIGF1dG8tbG9hZCB1ZXMKKysoZ2RiKSBzZXQgZGVidWcgYXV0by1s b2FkIG9uCisgKGdkYikgZmlsZSB+L3NyYy90L3RydWUKKyBhdXRvLWxvYWQ6IExvYWRpbmcgY2Fu bmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHQgIi90bXAvdHJ1ZS1nZGIuZ2RiIgorICAg ICAgICAgICAgZm9yIG9iamZpbGUgIi90bXAvdHJ1ZSIuCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9s b2FkLTE0b2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNG9mMjIucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDJhY2ZkMGUuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTE0 b2YyMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxNzguaHRtbAotCi0jIyMgc3JjL2dkYi9k b2MvQ2hhbmdlTG9nCTIwMTIvMDQvMTggMDc6MDM6NTcJMS4xMjk4Ci0jIyMgc3JjL2dkYi9kb2Mv Q2hhbmdlTG9nCTIwMTIvMDQvMjIgMTU6NDk6MjEJMS4xMjk5Ci0jIyAtMSwzICsxLDggQEAKLSsy MDEyLTA0LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0r Ci0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBSZXBsYWNlIEBpdGVt aXplIEBidWxsZXQKLSsJYnkgQHRhYmxlIEBhc2lzLiAgRml4IGZvcm1hdHRpbmcgb2Ygb25lIGl0 ZW0uCi0rCi0gMjAxMi0wNC0xOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgdmVyYm9zZSBtb2RlKTog Rml4IHNtYWxsZXhhbXBsZSB0eXBvLgotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIv MDQvMTggMDc6MDM6NTgJMS45NDUKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0 LzIyIDE1OjQ5OjIxCTEuOTQ2Ci1AQCAtMjExMzYsOCArMjExMzYsOCBAQAotIFRvIGZvcmNlIEB2 YWx1ZXtHREJOfSB0byBsb2FkIHRoZSBmaWxlcyBpdCBkZWNsaW5lZCB0byBsb2FkIGluIHRoZSBw cmV2aW91cwotIGV4YW1wbGUsIHlvdSBjb3VsZCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgd2F5 czoKLSAKLS1AaXRlbWl6ZSBAYnVsbGV0Ci0tQGl0ZW0gfi8uZ2RiaW5pdDogYWRkLWF1dG8tbG9h ZC1zYWZlLXBhdGggfi9zcmMvZ2RiCi0rQHRhYmxlIEBhc2lzCi0rQGl0ZW0gQGZpbGV7fi8uZ2Ri aW5pdH06IEBzYW1we2FkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIH4vc3JjL2dkYn0KLSBTcGVjaWZ5 IHRoaXMgdHJ1c3RlZCBkaXJlY3RvcnkgKG9yIGEgZmlsZSkgYXMgYWRkaXRpb25hbCBjb21wb25l bnQgb2YgdGhlIGxpc3QuCi0gWW91IGhhdmUgdG8gc3BlY2lmeSBhbHNvIGFueSBleGlzdGluZyBk aXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkKLSBieSBAc2FtcHtzaG93IGF1dG8tbG9hZCBzYWZlLXBh dGh9IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0gaW4gdGhpcyBleGFtcGxlKS4KLUBAIC0yMTE1 NSwyMCArMjExNTUsMjAgQEAKLSBEdXJpbmcgY29tcGlsYXRpb24gb2YgQHZhbHVle0dEQk59IHlv dSBtYXkgZGlzYWJsZSBhbnkgYXV0by1sb2FkaW5nIHNhZmV0eS4KLSBUaGlzIGFzc3VtZXMgYWxs IHRoZSBmaWxlcyB5b3Ugd2lsbCBldmVyIGRlYnVnIHdpdGggdGhpcyBAdmFsdWV7R0RCTn0gY29t ZSBmcm9tCi0gdHJ1c3RlZCBzb3VyY2VzLgotLUBlbmQgaXRlbWl6ZQotK0BlbmQgdGFibGUKLSAK LSBPbiB0aGUgb3RoZXIgaGFuZCB5b3UgY2FuIGFsc28gZXhwbGljaXRseSBmb3JiaWQgYXV0b21h dGljIGZpbGVzIGxvYWRpbmcgd2hpY2gKLSBhbHNvIHN1cHByZXNzZXMgYW55IHN1Y2ggd2Fybmlu ZyBtZXNzYWdlczoKLSAKLS1AaXRlbWl6ZSBAYnVsbGV0Ci0rQHRhYmxlIEBhc2lzCi0gQGl0ZW0g QGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyIgW0Bkb3Rze31dfQotIFlvdSBjYW4gdXNl IEB2YWx1ZXtHREJOfSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7R0RC Tn0gc2Vzc2lvbi4KLSAKLS1AaXRlbSBAc2FtcHt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8t bG9hZCBub30KLStAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBu b30KLSBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseSBmb3IgdGhlIHVzZXIKLSAoQHB4cmVm e0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgV2hpbGUgaXQgaXMgaW1wcm9iYWJsZSwgeW91 IGNvdWxkIGFsc28KLSB1c2Ugc3lzdGVtIGluaXQgZmlsZSBpbnN0ZWFkIChAcHhyZWZ7U3lzdGVt LXdpZGUgY29uZmlndXJhdGlvbn0pLgotLUBlbmQgaXRlbWl6ZQotK0BlbmQgdGFibGUKLSAKLSBU aGlzIHNldHRpbmcgYXBwbGllcyB0byB0aGUgZmlsZSBuYW1lcyBhcyBlbnRlcmVkIGJ5IHVzZXIu ICBJZiBubyBlbnRyeSBtYXRjaGVzCi0gQHZhbHVle0dEQk59IHRyaWVzIGFzIGEgbGFzdCByZXNv cnQgdG8gYWxzbyByZXNvbHZlIGFsbCB0aGUgZmlsZSBuYW1lcyBpbnRvCgpkaWZmIC0tZ2l0IGEv Z2RiLWF1dG9sb2FkLTE0b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNG9mMjgucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFjZmQwZQotLS0gL2Rldi9udWxsCisr KyBiL2dkYi1hdXRvbG9hZC0xNG9mMjgucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAoraHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDE3OC5odG1sCisKKyMjIyBzcmMv Z2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xOCAwNzowMzo1NwkxLjEyOTgKKyMjIyBzcmMvZ2Ri L2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMiAxNTo0OToyMQkxLjEyOTkKKyMjIC0xLDMgKzEsOCBA QAorKzIwMTItMDQtMjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KKysKKysJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlcGxhY2Ug QGl0ZW1pemUgQGJ1bGxldAorKwlieSBAdGFibGUgQGFzaXMuICBGaXggZm9ybWF0dGluZyBvZiBv bmUgaXRlbS4KKysKKyAyMDEyLTA0LTE4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+CisgCisgCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyB2ZXJib3NlIG1v ZGUpOiBGaXggc21hbGxleGFtcGxlIHR5cG8uCistLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8J MjAxMi8wNC8xOCAwNzowMzo1OAkxLjk0NQorKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTIvMDQvMjIgMTU6NDk6MjEJMS45NDYKK0BAIC0yMTEzNiw4ICsyMTEzNiw4IEBACisgVG8gZm9y Y2UgQHZhbHVle0dEQk59IHRvIGxvYWQgdGhlIGZpbGVzIGl0IGRlY2xpbmVkIHRvIGxvYWQgaW4g dGhlIHByZXZpb3VzCisgZXhhbXBsZSwgeW91IGNvdWxkIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2lu ZyB3YXlzOgorIAorLUBpdGVtaXplIEBidWxsZXQKKy1AaXRlbSB+Ly5nZGJpbml0OiBhZGQtYXV0 by1sb2FkLXNhZmUtcGF0aCB+L3NyYy9nZGIKKytAdGFibGUgQGFzaXMKKytAaXRlbSBAZmlsZXt+ Ly5nZGJpbml0fTogQHNhbXB7YWRkLWF1dG8tbG9hZC1zYWZlLXBhdGggfi9zcmMvZ2RifQorIFNw ZWNpZnkgdGhpcyB0cnVzdGVkIGRpcmVjdG9yeSAob3IgYSBmaWxlKSBhcyBhZGRpdGlvbmFsIGNv bXBvbmVudCBvZiB0aGUgbGlzdC4KKyBZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0 aW5nIGRpcmVjdG9yaWVzIGRpc3BsYXllZCBieQorIGJ5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNh ZmUtcGF0aH0gKHN1Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgorQEAg LTIxMTU1LDIwICsyMTE1NSwyMCBAQAorIER1cmluZyBjb21waWxhdGlvbiBvZiBAdmFsdWV7R0RC Tn0geW91IG1heSBkaXNhYmxlIGFueSBhdXRvLWxvYWRpbmcgc2FmZXR5LgorIFRoaXMgYXNzdW1l cyBhbGwgdGhlIGZpbGVzIHlvdSB3aWxsIGV2ZXIgZGVidWcgd2l0aCB0aGlzIEB2YWx1ZXtHREJO fSBjb21lIGZyb20KKyB0cnVzdGVkIHNvdXJjZXMuCistQGVuZCBpdGVtaXplCisrQGVuZCB0YWJs ZQorIAorIE9uIHRoZSBvdGhlciBoYW5kIHlvdSBjYW4gYWxzbyBleHBsaWNpdGx5IGZvcmJpZCBh dXRvbWF0aWMgZmlsZXMgbG9hZGluZyB3aGljaAorIGFsc28gc3VwcHJlc3NlcyBhbnkgc3VjaCB3 YXJuaW5nIG1lc3NhZ2VzOgorIAorLUBpdGVtaXplIEBidWxsZXQKKytAdGFibGUgQGFzaXMKKyBA aXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19CisgWW91IGNh biB1c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1 ZXtHREJOfSBzZXNzaW9uLgorIAorLUBpdGVtIEBzYW1we34vLmdkYmluaXR9OiBAc2FtcHtzZXQg YXV0by1sb2FkIG5vfQorK0BpdGVtIEBmaWxle34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0by1s b2FkIG5vfQorIERpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5IGZvciB0aGUgdXNlcgorIChA cHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBXaGlsZSBpdCBpcyBpbXByb2JhYmxl LCB5b3UgY291bGQgYWxzbworIHVzZSBzeXN0ZW0gaW5pdCBmaWxlIGluc3RlYWQgKEBweHJlZntT eXN0ZW0td2lkZSBjb25maWd1cmF0aW9ufSkuCistQGVuZCBpdGVtaXplCisrQGVuZCB0YWJsZQor IAorIFRoaXMgc2V0dGluZyBhcHBsaWVzIHRvIHRoZSBmaWxlIG5hbWVzIGFzIGVudGVyZWQgYnkg dXNlci4gIElmIG5vIGVudHJ5IG1hdGNoZXMKKyBAdmFsdWV7R0RCTn0gdHJpZXMgYXMgYSBsYXN0 IHJlc29ydCB0byBhbHNvIHJlc29sdmUgYWxsIHRoZSBmaWxlIG5hbWVzIGludG8KCmRpZmYgLS1n aXQgYS9nZGItYXV0b2xvYWQtMTVvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE1b2YyMi5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU1Njg0Ni4uMDAwMDAwMAotLS0gYS9n ZGItYXV0b2xvYWQtMTVvZjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAot aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDE4My5odG1sCi0K LSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMiAxNTo0OToyMQkxLjEyOTkKLSMj IyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMyAxNzoyMDo1NgkxLjEzMDAKLSMjIC0x LDMgKzEsOCBAQAotKzIwMTItMDQtMjMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6 IFJlbW92ZSB0cmFpbGluZyBbQGRvdHN7fV0uCi0rCVRocmVlIHRpbWVzLgotKwotIDIwMTItMDQt MjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSAJKiBn ZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlcGxhY2UgQGl0ZW1pemUgQGJ1 bGxldAotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjIgMTU6NDk6MjEJMS45 NDYKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIzIDE3OjIwOjU2CTEuOTQ3 Ci1AQCAtMjExNDIsMTEgKzIxMTQyLDExIEBACi0gWW91IGhhdmUgdG8gc3BlY2lmeSBhbHNvIGFu eSBleGlzdGluZyBkaXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkKLSBieSBAc2FtcHtzaG93IGF1dG8t bG9hZCBzYWZlLXBhdGh9IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0gaW4gdGhpcyBleGFtcGxl KS4KLSAKLS1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvdXNy Oi9iaW46fi9zcmMvZ2RiIiBbQGRvdHN7fV19Ci0rQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiJ9Ci0gU3BlY2lmeSB0aGlzIGRp cmVjdG9yeSBhcyBpbiB0aGUgcHJldmlvdXMgY2FzZSBidXQganVzdCBmb3IgYSBzaW5nbGUKLSBA dmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSAKLS1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1s b2FkIHNhZmUtcGF0aCIgW0Bkb3Rze31dfQotK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRv LWxvYWQgc2FmZS1wYXRoIn0KLSBEaXNhYmxlIGF1dG8tbG9hZGluZyBzYWZldHkgZm9yIGEgc2lu Z2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgotIFRoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlv dSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vzc2lvbiB3aWxsIGNvbWUKLSBmcm9t IHRydXN0ZWQgc291cmNlcy4KLUBAIC0yMTE2MSw3ICsyMTE2MSw3IEBACi0gYWxzbyBzdXBwcmVz c2VzIGFueSBzdWNoIHdhcm5pbmcgbWVzc2FnZXM6Ci0gCi0gQHRhYmxlIEBhc2lzCi0tQGl0ZW0g QGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyIgW0Bkb3Rze31dfQotK0BpdGVtIEBrYmR7 Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8ifQotIFlvdSBjYW4gdXNlIEB2YWx1ZXtHREJOfSBj b21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSAK LSBAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30KCmRpZmYg LS1naXQgYS9nZGItYXV0b2xvYWQtMTVvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE1b2YyOC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTU2ODQ2Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTE1b2YyOC5wYXRjaApAQCAtMCwwICsxLDM4IEBACito dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTgzLmh0bWwKKwor IyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzIyIDE1OjQ5OjIxCTEuMTI5OQorIyMj IHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzIzIDE3OjIwOjU2CTEuMTMwMAorIyMgLTEs MyArMSw4IEBACisrMjAxMi0wNC0yMyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgorKworKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTog UmVtb3ZlIHRyYWlsaW5nIFtAZG90c3t9XS4KKysJVGhyZWUgdGltZXMuCisrCisgMjAxMi0wNC0y MiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorIAkqIGdk Yi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogUmVwbGFjZSBAaXRlbWl6ZSBAYnVs bGV0CistLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8yMiAxNTo0OToyMQkxLjk0 NgorKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS45NDcK K0BAIC0yMTE0MiwxMSArMjExNDIsMTEgQEAKKyBZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55 IGV4aXN0aW5nIGRpcmVjdG9yaWVzIGRpc3BsYXllZCBieQorIGJ5IEBzYW1we3Nob3cgYXV0by1s b2FkIHNhZmUtcGF0aH0gKHN1Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUp LgorIAorLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6 L2Jpbjp+L3NyYy9nZGIiIFtAZG90c3t9XX0KKytAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIn0KKyBTcGVjaWZ5IHRoaXMgZGly ZWN0b3J5IGFzIGluIHRoZSBwcmV2aW91cyBjYXNlIGJ1dCBqdXN0IGZvciBhIHNpbmdsZQorIEB2 YWx1ZXtHREJOfSBzZXNzaW9uLgorIAorLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxv YWQgc2FmZS1wYXRoIiBbQGRvdHN7fV19CisrQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8t bG9hZCBzYWZlLXBhdGgifQorIERpc2FibGUgYXV0by1sb2FkaW5nIHNhZmV0eSBmb3IgYSBzaW5n bGUgQHZhbHVle0dEQk59IHNlc3Npb24uCisgVGhpcyBhc3N1bWVzIGFsbCB0aGUgZmlsZXMgeW91 IGRlYnVnIGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNzaW9uIHdpbGwgY29tZQorIGZyb20g dHJ1c3RlZCBzb3VyY2VzLgorQEAgLTIxMTYxLDcgKzIxMTYxLDcgQEAKKyBhbHNvIHN1cHByZXNz ZXMgYW55IHN1Y2ggd2FybmluZyBtZXNzYWdlczoKKyAKKyBAdGFibGUgQGFzaXMKKy1AaXRlbSBA a2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19CisrQGl0ZW0gQGtiZHtn ZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyJ9CisgWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IGNv bW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorIAor IEBpdGVtIEBmaWxle34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0by1sb2FkIG5vfQoKZGlmZiAt LWdpdCBhL2dkYi1hdXRvbG9hZC0xNm9mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTZvZjIyLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmE4OGU2Li4wMDAwMDAwCi0tLSBh L2dkYi1hdXRvbG9hZC0xNm9mMjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBA Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTg0Lmh0bWwK LQotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzIzIDE3OjIwOjU2CTEuMTMwMAot IyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzIzIDE3OjI2OjAwCTEuMTMwMQotIyMg LTMsNiArMyw5IEBACi0gCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBS ZW1vdmUgdHJhaWxpbmcgW0Bkb3Rze31dLgotIAlUaHJlZSB0aW1lcy4KLSAKLSsJKiBnZGIudGV4 aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IEFkZCB0cmFpbGluZyBAZG90c3t9LgotKwlU aHJlZSB0aW1lcy4KLSsKLSAyMDEyLTA0LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0gCi0gCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBh dGgpOiBSZXBsYWNlIEBpdGVtaXplIEBidWxsZXQKLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDEyLzA0LzIzIDE3OjIwOjU2CTEuOTQ3Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8J MjAxMi8wNC8yMyAxNzoyNjowMQkxLjk0OAotQEAgLTIxMTQyLDExICsyMTE0MiwxMSBAQAotIFlv dSBoYXZlIHRvIHNwZWNpZnkgYWxzbyBhbnkgZXhpc3RpbmcgZGlyZWN0b3JpZXMgZGlzcGxheWVk IGJ5Ci0gYnkgQHNhbXB7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofSAoc3VjaCBhcyBAc2FtcHsv dXNyOi9iaW59IGluIHRoaXMgZXhhbXBsZSkuCi0gCi0tQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0 IGF1dG8tbG9hZCBzYWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiJ9Ci0rQGl0ZW0gQGtiZHtn ZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiIgQGRv dHN7fX0KLSBTcGVjaWZ5IHRoaXMgZGlyZWN0b3J5IGFzIGluIHRoZSBwcmV2aW91cyBjYXNlIGJ1 dCBqdXN0IGZvciBhIHNpbmdsZQotIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgotIAotLUBpdGVtIEBr YmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIn0KLStAaXRlbSBAa2Jke2dkYiAt aWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIgQGRvdHN7fX0KLSBEaXNhYmxlIGF1dG8tbG9h ZGluZyBzYWZldHkgZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgotIFRoaXMgYXNz dW1lcyBhbGwgdGhlIGZpbGVzIHlvdSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vz c2lvbiB3aWxsIGNvbWUKLSBmcm9tIHRydXN0ZWQgc291cmNlcy4KLUBAIC0yMTE2MSw3ICsyMTE2 MSw3IEBACi0gYWxzbyBzdXBwcmVzc2VzIGFueSBzdWNoIHdhcm5pbmcgbWVzc2FnZXM6Ci0gCi0g QHRhYmxlIEBhc2lzCi0tQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyJ9Ci0r QGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyIgQGRvdHN7fX0KLSBZb3UgY2Fu IHVzZSBAdmFsdWV7R0RCTn0gY29tbWFuZC1saW5lIG9wdGlvbiBmb3IgYSBzaW5nbGUgQHZhbHVl e0dEQk59IHNlc3Npb24uCi0gCi0gQGl0ZW0gQGZpbGV7fi8uZ2RiaW5pdH06IEBzYW1we3NldCBh dXRvLWxvYWQgbm99CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE2b2YyOC5wYXRjaCBiL2dk Yi1hdXRvbG9hZC0xNm9mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYWZhODhlNgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0xNm9mMjgucGF0Y2gK QEAgLTAsMCArMSwzOSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0w NC9tc2cwMDE4NC5odG1sCisKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMyAx NzoyMDo1NgkxLjEzMDAKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMyAxNzoy NjowMAkxLjEzMDEKKyMjIC0zLDYgKzMsOSBAQAorIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRp bmcgc2FmZSBwYXRoKTogUmVtb3ZlIHRyYWlsaW5nIFtAZG90c3t9XS4KKyAJVGhyZWUgdGltZXMu CisgCisrCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBBZGQgdHJhaWxp bmcgQGRvdHN7fS4KKysJVGhyZWUgdGltZXMuCisrCisgMjAxMi0wNC0yMiAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorIAkqIGdkYi50ZXhpbmZvIChBdXRv LWxvYWRpbmcgc2FmZSBwYXRoKTogUmVwbGFjZSBAaXRlbWl6ZSBAYnVsbGV0CistLS0gc3JjL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8yMyAxNzoyMDo1NgkxLjk0NworKysrIHNyYy9nZGIv ZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjMgMTc6MjY6MDEJMS45NDgKK0BAIC0yMTE0MiwxMSAr MjExNDIsMTEgQEAKKyBZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRpcmVj dG9yaWVzIGRpc3BsYXllZCBieQorIGJ5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0g KHN1Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgorIAorLUBpdGVtIEBr YmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIi fQorK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jp bjp+L3NyYy9nZGIiIEBkb3Rze319CisgU3BlY2lmeSB0aGlzIGRpcmVjdG9yeSBhcyBpbiB0aGUg cHJldmlvdXMgY2FzZSBidXQganVzdCBmb3IgYSBzaW5nbGUKKyBAdmFsdWV7R0RCTn0gc2Vzc2lv bi4KKyAKKy1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCJ9Cisr QGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIEBkb3Rze319Cisg RGlzYWJsZSBhdXRvLWxvYWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vz c2lvbi4KKyBUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRoaXMg QHZhbHVle0dEQk59IHNlc3Npb24gd2lsbCBjb21lCisgZnJvbSB0cnVzdGVkIHNvdXJjZXMuCitA QCAtMjExNjEsNyArMjExNjEsNyBAQAorIGFsc28gc3VwcHJlc3NlcyBhbnkgc3VjaCB3YXJuaW5n IG1lc3NhZ2VzOgorIAorIEB0YWJsZSBAYXNpcworLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBh dXRvLWxvYWQgbm8ifQorK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8iIEBk b3Rze319CisgWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9y IGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorIAorIEBpdGVtIEBmaWxle34vLmdkYmlu aXR9OiBAc2FtcHtzZXQgYXV0by1sb2FkIG5vfQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0x N29mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTdvZjIyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBhNzRmNzViLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0xN29mMjIu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDEwLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdl TG9nCTIwMTIvMDUvMDIgMTc6MTM6MzkJMS4xNDE5NAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIw MTIvMDUvMDIgMjA6MDA6MzEJMS4xNDE5NQotIyMgLTEsMyArMSw4IEBACi0rMjAxMi0wNS0wMiAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlGaXggLS13 aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGggZm9yIE1TLVdpbmRvd3MgaG9zdCBwbGF0Zm9ybS4K LSsJKiBhdXRvLWxvYWQuYyAoZmlsZW5hbWVfaXNfaW5fZGlyKTogUmV0dXJuIDEgZm9yIERJUl9M RU4gMC4KLSsKLSAyMDEyLTA1LTAyICBFbGkgWmFyZXRza2lpICA8ZWxpekBnbnUub3JnPgotIAot IAkqIGdkYl9jdXJzZXMuaDogVW5kZWZpbmUgS0VZX0VWRU5UIGJlZm9yZSBpbmNsdWRpbmcgY3Vy c2VzCi0tLS0gc3JjL2dkYi9hdXRvLWxvYWQuYwkyMDEyLzA0LzE3IDE1OjU2OjIxCTEuNAotKysr IHNyYy9nZGIvYXV0by1sb2FkLmMJMjAxMi8wNS8wMiAyMDowMDozNgkxLjUKLUBAIC0yMzEsNiAr MjMxLDEyIEBACi0gICB3aGlsZSAoZGlyX2xlbiAmJiBJU19ESVJfU0VQQVJBVE9SIChkaXJbZGly X2xlbiAtIDFdKSkKLSAgICAgZGlyX2xlbi0tOwotIAotKyAgLyogRW5zdXJlIGF1dG9fbG9hZF9z YWZlX3BhdGggIi8iIG1hdGNoZXMgYW55IEZJTEVOQU1FLiAgT24gTVMtV2luZG93cwotKyAgICAg cGxhdGZvcm0gRklMRU5BTUUgZXZlbiBhZnRlciBnZGJfcmVhbHBhdGggZG9lcyBub3QgaGF2ZSB0 byBzdGFydCB3aXRoCi0rICAgICBJU19ESVJfU0VQQVJBVE9SIGNoYXJhY3Rlciwgc3VjaCBhcyB0 aGUgJ0M6XHguZXhlJyBmaWxlbmFtZS4gICovCi0rICBpZiAoZGlyX2xlbiA9PSAwKQotKyAgICBy ZXR1cm4gMTsKLSsKLSAgIHJldHVybiAoZmlsZW5hbWVfbmNtcCAoZGlyLCBmaWxlbmFtZSwgZGly X2xlbikgPT0gMAotIAkgICYmIChJU19ESVJfU0VQQVJBVE9SIChmaWxlbmFtZVtkaXJfbGVuXSkK LSAJICAgICAgfHwgZmlsZW5hbWVbZGlyX2xlbl0gPT0gJ1wwJykpOwoKZGlmZiAtLWdpdCBhL2dk Yi1hdXRvbG9hZC0xN29mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTdvZjI4LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NGY3NWIKLS0tIC9kZXYvbnVsbAorKysg Yi9nZGItYXV0b2xvYWQtMTdvZjI4LnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK2h0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAwMTAuaHRtbAorCisjIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMi8wNS8wMiAxNzoxMzozOQkxLjE0MTk0CisjIyMgc3JjL2dkYi9DaGFu Z2VMb2cJMjAxMi8wNS8wMiAyMDowMDozMQkxLjE0MTk1CisjIyAtMSwzICsxLDggQEAKKysyMDEy LTA1LTAyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisr CUZpeCAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aCBmb3IgTVMtV2luZG93cyBob3N0IHBs YXRmb3JtLgorKwkqIGF1dG8tbG9hZC5jIChmaWxlbmFtZV9pc19pbl9kaXIpOiBSZXR1cm4gMSBm b3IgRElSX0xFTiAwLgorKworIDIwMTItMDUtMDIgIEVsaSBaYXJldHNraWkgIDxlbGl6QGdudS5v cmc+CisgCisgCSogZ2RiX2N1cnNlcy5oOiBVbmRlZmluZSBLRVlfRVZFTlQgYmVmb3JlIGluY2x1 ZGluZyBjdXJzZXMKKy0tLSBzcmMvZ2RiL2F1dG8tbG9hZC5jCTIwMTIvMDQvMTcgMTU6NTY6MjEJ MS40CisrKysgc3JjL2dkYi9hdXRvLWxvYWQuYwkyMDEyLzA1LzAyIDIwOjAwOjM2CTEuNQorQEAg LTIzMSw2ICsyMzEsMTIgQEAKKyAgIHdoaWxlIChkaXJfbGVuICYmIElTX0RJUl9TRVBBUkFUT1Ig KGRpcltkaXJfbGVuIC0gMV0pKQorICAgICBkaXJfbGVuLS07CisgCisrICAvKiBFbnN1cmUgYXV0 b19sb2FkX3NhZmVfcGF0aCAiLyIgbWF0Y2hlcyBhbnkgRklMRU5BTUUuICBPbiBNUy1XaW5kb3dz CisrICAgICBwbGF0Zm9ybSBGSUxFTkFNRSBldmVuIGFmdGVyIGdkYl9yZWFscGF0aCBkb2VzIG5v dCBoYXZlIHRvIHN0YXJ0IHdpdGgKKysgICAgIElTX0RJUl9TRVBBUkFUT1IgY2hhcmFjdGVyLCBz dWNoIGFzIHRoZSAnQzpceC5leGUnIGZpbGVuYW1lLiAgKi8KKysgIGlmIChkaXJfbGVuID09IDAp CisrICAgIHJldHVybiAxOworKworICAgcmV0dXJuIChmaWxlbmFtZV9uY21wIChkaXIsIGZpbGVu YW1lLCBkaXJfbGVuKSA9PSAwCisgCSAgJiYgKElTX0RJUl9TRVBBUkFUT1IgKGZpbGVuYW1lW2Rp cl9sZW5dKQorIAkgICAgICB8fCBmaWxlbmFtZVtkaXJfbGVuXSA9PSAnXDAnKSk7CgpkaWZmIC0t Z2l0IGEvZ2RiLWF1dG9sb2FkLTE4b2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xOG9mMjIucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MGMyZTQuLjAwMDAwMDAKLS0tIGEv Z2RiLWF1dG9sb2FkLTE4b2YyMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBA Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDM4Lmh0bWwK LQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDUvMDUgMDU6MzY6MjMJMS4xNDIxMQotIyMj IHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDUvMDYgMTU6MzA6NTkJMS4xNDIxMgotIyMgLTEsMyAr MSwxNCBAQAotKzIwMTItMDUtMDYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KLSsKLSsJKiBhdXRvLWxvYWQuYyAoc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgpOiBS ZXNldCBBVVRPX0xPQURfU0FGRV9QQVRICi0rCWJhY2sgdG8gREVGQVVMVF9BVVRPX0xPQURfU0FG RV9QQVRIIGlmIGl0IGlzIGJlaW5nIHNldCB0byAiIi4KLSsJKHNob3dfYXV0b19sb2FkX3NhZmVf cGF0aCk6IENoZWNrIGFueS1kaXJlY3RvcnkgYnkgY29tcGFyaXNvbiB3aXRoICIvIi4KLSsJKGFk ZF9hdXRvX2xvYWRfc2FmZV9wYXRoKTogQ2hhbmdlIHRoZSBlcnJvciBtZXNzYWdlLgotKwkoX2lu aXRpYWxpemVfYXV0b19sb2FkKTogQ2hhbmdlIHRoZSAic2FmZS1wYXRoIiBoZWxwIHRleHQuCi0r CSogY29uZmlndXJlOiBSZWdlbmVyYXRlCi0rCSogY29uZmlndXJlLmFjICgtLXdpdGhvdXQtYXV0 by1sb2FkLXNhZmUtcGF0aCk6IFNldAotKwlXSVRIX0FVVE9fTE9BRF9TQUZFX1BBVEggdG8gLy4K LSsKLSAyMDEyLTA1LTA1ICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQu Y29tPgotIAotIAkqIHN0YXAtcHJvYmUuaDogRG8gbm90IGluY2x1ZGUgdW5lY2Vzc2FyeSBgcHJv YmUuaCcuCi0tLS0gc3JjL2dkYi9hdXRvLWxvYWQuYwkyMDEyLzA1LzAyIDIwOjAwOjM2CTEuNQot KysrIHNyYy9nZGIvYXV0by1sb2FkLmMJMjAxMi8wNS8wNiAxNTozMTowMgkxLjYKLUBAIC0xODEs NiArMTgxLDEyIEBACi0gc3RhdGljIHZvaWQKLSBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCAoY2hh ciAqYXJncywgaW50IGZyb21fdHR5LCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLSB7Ci0r ICBpZiAoYXV0b19sb2FkX3NhZmVfcGF0aFswXSA9PSAnXDAnKQotKyAgICB7Ci0rICAgICAgeGZy ZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotKyAgICAgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4 c3RyZHVwIChERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgpOwotKyAgICB9Ci0rCi0gICBhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7Ci0gfQotIAotQEAgLTE5MCw3ICsxOTYsNyBA QAotIHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBm cm9tX3R0eSwKLSAJCQkgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2 YWx1ZSkKLSB7Ci0tICBpZiAoKnZhbHVlID09IDApCi0rICBpZiAoc3RyY21wICh2YWx1ZSwgIi8i KSA9PSAwKQotICAgICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWQgZmlsZXMg YXJlIHNhZmUgdG8gbG9hZCBmcm9tIGFueSAiCi0gCQkJICAgICAgImRpcmVjdG9yeS5cbiIpKTsK LSAgIGVsc2UKLUBAIC0yMDksOCArMjE1LDkgQEAKLSAKLSAgIGlmIChhcmdzID09IE5VTEwgfHwg KmFyZ3MgPT0gMCkKLSAgICAgZXJyb3IgKF8oIlwKLS1BZGRpbmcgZW1wdHkgZGlyZWN0b3J5IGVs ZW1lbnQgZGlzYWJsZXMgdGhlIGF1dG8tbG9hZCBzYWZlLXBhdGggc2VjdXJpdHkuICBcCi0tVXNl ICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgaW5zdGVhZCBpZiB5b3UgbWVhbiB0aGF0LiIpKTsK LStEaXJlY3RvcnkgYXJndW1lbnQgcmVxdWlyZWQuXG5cCi0rVXNlICdzZXQgYXV0by1sb2FkIHNh ZmUtcGF0aCAvJyBmb3IgZGlzYWJsaW5nIHRoZSBhdXRvLWxvYWQgc2FmZS1wYXRoIHNlY3VyaXR5 LlwKLSsiKSk7Ci0gCi0gICBzID0geHN0cnByaW50ZiAoIiVzJWMlcyIsIGF1dG9fbG9hZF9zYWZl X3BhdGgsIERJUk5BTUVfU0VQQVJBVE9SLCBhcmdzKTsKLSAgIHhmcmVlIChhdXRvX2xvYWRfc2Fm ZV9wYXRoKTsKLUBAIC0xMDI5LDggKzEwMzYsMTAgQEAKLSBTaG93IHRoZSBsaXN0IG9mIGRpcmVj dG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuIiksIF8oIlwK LSBWYXJpb3VzIGZpbGVzIGxvYWRlZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUgJ3NldCBhdXRvLWxv YWQgLi4uJyBvcHRpb25zIG11c3RcblwKLSBiZSBsb2NhdGVkIGluIG9uZSBvZiB0aGUgZGlyZWN0 b3JpZXMgbGlzdGVkIGJ5IHRoaXMgb3B0aW9uLiAgV2FybmluZyB3aWxsIGJlXG5cCi0tcHJpbnRl ZCBhbmQgZmlsZSB3aWxsIG5vdCBiZSB1c2VkIG90aGVyd2lzZS4gIFVzZSBlbXB0eSBzdHJpbmcg KG9yIGV2ZW5cblwKLS1lbXB0eSBkaXJlY3RvcnkgZW50cnkpIHRvIGFsbG93IGFueSBmaWxlIGZv ciB0aGUgJ3NldCBhdXRvLWxvYWQgLi4uJyBvcHRpb25zLlxuXAotK3ByaW50ZWQgYW5kIGZpbGUg d2lsbCBub3QgYmUgdXNlZCBvdGhlcndpc2UuXG5cCi0rU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0 byBhbiBlbXB0eSBsaXN0IHJlc2V0cyBpdCB0byBpdHMgZGVmYXVsdCB2YWx1ZS5cblwKLStTZXR0 aW5nIHRoaXMgcGFyYW1ldGVyIHRvICcvJyAod2l0aG91dCB0aGUgcXVvdGVzKSBhbGxvd3MgYW55 IGZpbGVcblwKLStmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucy5cblwKLSBUaGlz IG9wdGlvbiBpcyBpZ25vcmVkIGZvciB0aGUga2luZHMgb2YgZmlsZXMgaGF2aW5nICdzZXQgYXV0 by1sb2FkIC4uLiBvZmYnLlxuXAotIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRp b25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAotIAkJCQkgICAgIHNldF9hdXRvX2xvYWRf c2FmZV9wYXRoLAotLS0tIHNyYy9nZGIvY29uZmlndXJlCTIwMTIvMDQvMjcgMjA6NDc6NTIJMS4z NjAKLSsrKyBzcmMvZ2RiL2NvbmZpZ3VyZQkyMDEyLzA1LzA2IDE1OjMxOjAyCTEuMzYxCi1AQCAt NDk2NCw3ICs0OTY0LDcgQEAKLSAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWF1dG8tbG9hZC1zYWZl LXBhdGggd2FzIGdpdmVuLgotIGlmIHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoK3Nl dH0iID0gc2V0OyB0aGVuIDoKLSAgIHdpdGh2YWw9JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aDsg aWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCi0tICAgd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIiCi0rICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIv IgotICBmaQotIGVsc2UKLSAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCIKLS0t LSBzcmMvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLzA0LzI3IDIwOjQ3OjUzCTEuMTcxCi0rKysgc3Jj L2dkYi9jb25maWd1cmUuYWMJMjAxMi8wNS8wNiAxNTozMTowMwkxLjE3MgotQEAgLTE0MSw3ICsx NDEsNyBAQAotIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRI XSwgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlc10pCi0gQVNfSEVM UF9TVFJJTkcoWy0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoXSwgW2RvIG5vdCByZXN0cmlj dCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnNdKSwKLSBbaWYgdGVzdCAiJHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCi0tICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo PSIiCi0rICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgotICBmaV0sCi0gW3dpdGhfYXV0 b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCJdKQotIEFDX0RFRklORV9ESVIoREVGQVVMVF9BVVRP X0xPQURfU0FGRV9QQVRILCB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0jIyMgc3JjL2dkYi9k b2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDMgMDc6MDc6MjQJMS4xMzA4Ci0jIyMgc3JjL2dkYi9kb2Mv Q2hhbmdlTG9nCTIwMTIvMDUvMDYgMTU6MzE6MDQJMS4xMzA5Ci0jIyAtMSwzICsxLDkgQEAKLSsy MDEyLTA1LTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0r Ci0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBNYWtlICdkaXJlY3Rv cmllcycKLSsJZm9yICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgb3B0aW9uYWwuICBNZW50aW9u IGlmIGl0IGlzIG9taXR0ZWQuCi0rCUNoYW5nZSBkaXNhYmxpbmcgc2VjdXJpdHkgcHJvdGVjdGlv biBjb25kaXRpb24gdG8gIi8iLCB0d2ljZS4KLSsKLSAyMDEyLTA1LTAzICBTaXZhIENoYW5kcmEg UmVkZHkgIDxzaXZhY2hhbmRyYUBnb29nbGUuY29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChTeW1i b2wgVGFibGVzIEluIFB5dGhvbik6IEFkZCBkb2N1bWVudGF0aW9uIGFib3V0Ci0tLS0gc3JjL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNS8wMyAwNzowNzoyNAkxLjk1NAotKysrIHNyYy9nZGIv ZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDUvMDYgMTU6MzE6MDQJMS45NTUKLUBAIC0yMTIxOSw5ICsy MTIxOSwxMiBAQAotIEB0YWJsZSBAY29kZQotIEBhbmNob3J7c2V0IGF1dG8tbG9hZCBzYWZlLXBh dGh9Ci0gQGtpbmRleCBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aAotLUBpdGVtIHNldCBhdXRvLWxv YWQgc2FmZS1wYXRoIEB2YXJ7ZGlyZWN0b3JpZXN9Ci0rQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZl LXBhdGggQHJ7W31AdmFye2RpcmVjdG9yaWVzfUBye119Ci0gU2V0IHRoZSBsaXN0IG9mIGRpcmVj dG9yaWVzIChhbmQgdGhlaXIgc3ViZGlyZWN0b3JpZXMpIHRydXN0ZWQgZm9yIGF1dG9tYXRpYwot IGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZiBzY3JpcHRzLiAgWW91IGNhbiBhbHNvIGVudGVyIGEg c3BlY2lmaWMgdHJ1c3RlZCBmaWxlLgotK0lmIHlvdSBvbWl0IEB2YXJ7ZGlyZWN0b3JpZXN9LCBA c2FtcHthdXRvLWxvYWQgc2FmZS1wYXRofSB3aWxsIGJlIHJlc2V0IHRvCi0raXRzIGRlZmF1bHQg dmFsdWUgYXMgc3BlY2lmaWVkIGR1cmluZyBAdmFsdWV7R0RCTn0gY29tcGlsYXRpb24uCi0rCi0g VGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdXNlcyBkaXJlY3Rvcnkgc2VwYXJhdG9yIChAc2FtcHs6 fSBvbiBHTlUgYW5kIFVuaXgKLSBzeXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBN Uy1ET1MpIHRvIHNlcGFyYXRlIGRpcmVjdG9yaWVzLCBzaW1pbGFybHkKLSB0byB0aGUgQGVudntQ QVRIfSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLUBAIC0yMTI0MCw3ICsyMTI0Myw3IEBACi0gaG9z dCBwbGF0Zm9ybSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KLSBAZW5kIHRhYmxlCi0gCi0t U2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGlzIHNl Y3VyaXR5IHByb3RlY3Rpb24uCi0rU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRp c2FibGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbi4KLSBUaGlzIHZhcmlhYmxlIGlzIHN1cHBv c2VkIHRvIGJlIHNldCB0byB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzIHdyaXRhYmxlIGJ5IHRoZQot IHN5c3RlbSBzdXBlcnVzZXIgb25seS4gIFVzZXJzIGNhbiBhZGQgdGhlaXIgc291cmNlIGRpcmVj dG9yaWVzIGluIGluaXQgZmlsZXMgaW4KLSB0aGVpciBob21lIGRpcmVjdG9yaWVzIChAcHhyZWZ7 SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBTZWUgYWxzbyBkZXByZWNhdGVkCi1AQCAtMjEy NjAsNyArMjEyNjMsNyBAQAotIFNwZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZp b3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEgc2luZ2xlCi0gQHZhbHVle0dEQk59IHNlc3Npb24uCi0g Ci0tQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIEBkb3Rze319 Ci0rQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggLyIgQGRvdHN7 fX0KLSBEaXNhYmxlIGF1dG8tbG9hZGluZyBzYWZldHkgZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJO fSBzZXNzaW9uLgotIFRoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSBkZWJ1ZyBkdXJpbmcg dGhpcyBAdmFsdWV7R0RCTn0gc2Vzc2lvbiB3aWxsIGNvbWUKLSBmcm9tIHRydXN0ZWQgc291cmNl cy4KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMThvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2Fk LTE4b2YyOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTBjMmU0 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTE4b2YyOC5wYXRjaApAQCAtMCwwICsx LDEzNiBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNS9tc2cwMDAz OC5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA1LzA1IDA1OjM2OjIzCTEuMTQy MTEKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA1LzA2IDE1OjMwOjU5CTEuMTQyMTIKKyMj IC0xLDMgKzEsMTQgQEAKKysyMDEyLTA1LTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+CisrCisrCSogYXV0by1sb2FkLmMgKHNldF9hdXRvX2xvYWRfc2FmZV9w YXRoKTogUmVzZXQgQVVUT19MT0FEX1NBRkVfUEFUSAorKwliYWNrIHRvIERFRkFVTFRfQVVUT19M T0FEX1NBRkVfUEFUSCBpZiBpdCBpcyBiZWluZyBzZXQgdG8gIiIuCisrCShzaG93X2F1dG9fbG9h ZF9zYWZlX3BhdGgpOiBDaGVjayBhbnktZGlyZWN0b3J5IGJ5IGNvbXBhcmlzb24gd2l0aCAiLyIu CisrCShhZGRfYXV0b19sb2FkX3NhZmVfcGF0aCk6IENoYW5nZSB0aGUgZXJyb3IgbWVzc2FnZS4K KysJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IENoYW5nZSB0aGUgInNhZmUtcGF0aCIgaGVscCB0 ZXh0LgorKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZQorKwkqIGNvbmZpZ3VyZS5hYyAoLS13aXRo b3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBTZXQKKysJV0lUSF9BVVRPX0xPQURfU0FGRV9QQVRI IHRvIC8uCisrCisgMjAxMi0wNS0wNSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpA cmVkaGF0LmNvbT4KKyAKKyAJKiBzdGFwLXByb2JlLmg6IERvIG5vdCBpbmNsdWRlIHVuZWNlc3Nh cnkgYHByb2JlLmgnLgorLS0tIHNyYy9nZGIvYXV0by1sb2FkLmMJMjAxMi8wNS8wMiAyMDowMDoz NgkxLjUKKysrKyBzcmMvZ2RiL2F1dG8tbG9hZC5jCTIwMTIvMDUvMDYgMTU6MzE6MDIJMS42CitA QCAtMTgxLDYgKzE4MSwxMiBAQAorIHN0YXRpYyB2b2lkCisgc2V0X2F1dG9fbG9hZF9zYWZlX3Bh dGggKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMp CisgeworKyAgaWYgKGF1dG9fbG9hZF9zYWZlX3BhdGhbMF0gPT0gJ1wwJykKKysgICAgeworKyAg ICAgIHhmcmVlIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKKysgICAgICBhdXRvX2xvYWRfc2FmZV9w YXRoID0geHN0cmR1cCAoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIKTsKKysgICAgfQorKwor ICAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOworIH0KKyAKK0BAIC0xOTAsNyAr MTk2LDcgQEAKKyBzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGggKHN0cnVjdCB1aV9maWxlICpmaWxl LCBpbnQgZnJvbV90dHksCisgCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3Qg Y2hhciAqdmFsdWUpCisgeworLSAgaWYgKCp2YWx1ZSA9PSAwKQorKyAgaWYgKHN0cmNtcCAodmFs dWUsICIvIikgPT0gMCkKKyAgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2Fk IGZpbGVzIGFyZSBzYWZlIHRvIGxvYWQgZnJvbSBhbnkgIgorIAkJCSAgICAgICJkaXJlY3Rvcnku XG4iKSk7CisgICBlbHNlCitAQCAtMjA5LDggKzIxNSw5IEBACisgCisgICBpZiAoYXJncyA9PSBO VUxMIHx8ICphcmdzID09IDApCisgICAgIGVycm9yIChfKCJcCistQWRkaW5nIGVtcHR5IGRpcmVj dG9yeSBlbGVtZW50IGRpc2FibGVzIHRoZSBhdXRvLWxvYWQgc2FmZS1wYXRoIHNlY3VyaXR5LiAg XAorLVVzZSAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGluc3RlYWQgaWYgeW91IG1lYW4gdGhh dC4iKSk7CisrRGlyZWN0b3J5IGFyZ3VtZW50IHJlcXVpcmVkLlxuXAorK1VzZSAnc2V0IGF1dG8t bG9hZCBzYWZlLXBhdGggLycgZm9yIGRpc2FibGluZyB0aGUgYXV0by1sb2FkIHNhZmUtcGF0aCBz ZWN1cml0eS5cCisrIikpOworIAorICAgcyA9IHhzdHJwcmludGYgKCIlcyVjJXMiLCBhdXRvX2xv YWRfc2FmZV9wYXRoLCBESVJOQU1FX1NFUEFSQVRPUiwgYXJncyk7CisgICB4ZnJlZSAoYXV0b19s b2FkX3NhZmVfcGF0aCk7CitAQCAtMTAyOSw4ICsxMDM2LDEwIEBACisgU2hvdyB0aGUgbGlzdCBv ZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLiIp LCBfKCJcCisgVmFyaW91cyBmaWxlcyBsb2FkZWQgYXV0b21hdGljYWxseSBmb3IgdGhlICdzZXQg YXV0by1sb2FkIC4uLicgb3B0aW9ucyBtdXN0XG5cCisgYmUgbG9jYXRlZCBpbiBvbmUgb2YgdGhl IGRpcmVjdG9yaWVzIGxpc3RlZCBieSB0aGlzIG9wdGlvbi4gIFdhcm5pbmcgd2lsbCBiZVxuXAor LXByaW50ZWQgYW5kIGZpbGUgd2lsbCBub3QgYmUgdXNlZCBvdGhlcndpc2UuICBVc2UgZW1wdHkg c3RyaW5nIChvciBldmVuXG5cCistZW1wdHkgZGlyZWN0b3J5IGVudHJ5KSB0byBhbGxvdyBhbnkg ZmlsZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucy5cblwKKytwcmludGVkIGFu ZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQgb3RoZXJ3aXNlLlxuXAorK1NldHRpbmcgdGhpcyBwYXJh bWV0ZXIgdG8gYW4gZW1wdHkgbGlzdCByZXNldHMgaXQgdG8gaXRzIGRlZmF1bHQgdmFsdWUuXG5c CisrU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byAnLycgKHdpdGhvdXQgdGhlIHF1b3RlcykgYWxs b3dzIGFueSBmaWxlXG5cCisrZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMuXG5c CisgVGhpcyBvcHRpb24gaXMgaWdub3JlZCBmb3IgdGhlIGtpbmRzIG9mIGZpbGVzIGhhdmluZyAn c2V0IGF1dG8tbG9hZCAuLi4gb2ZmJy5cblwKKyBUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGlt cGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKyAJCQkJICAgICBzZXRfYXV0 b19sb2FkX3NhZmVfcGF0aCwKKy0tLSBzcmMvZ2RiL2NvbmZpZ3VyZQkyMDEyLzA0LzI3IDIwOjQ3 OjUyCTEuMzYwCisrKysgc3JjL2dkYi9jb25maWd1cmUJMjAxMi8wNS8wNiAxNTozMTowMgkxLjM2 MQorQEAgLTQ5NjQsNyArNDk2NCw3IEBACisgIyBDaGVjayB3aGV0aGVyIC0td2l0aC1hdXRvLWxv YWQtc2FmZS1wYXRoIHdhcyBnaXZlbi4KKyBpZiB0ZXN0ICIke3dpdGhfYXV0b19sb2FkX3NhZmVf cGF0aCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICB3aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGg7IGlmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgor LSAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iIgorKyAgIHdpdGhfYXV0b19sb2FkX3NhZmVf cGF0aD0iLyIKKyAgZmkKKyBlbHNlCisgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVm aXgiCistLS0gc3JjL2dkYi9jb25maWd1cmUuYWMJMjAxMi8wNC8yNyAyMDo0Nzo1MwkxLjE3MQor KysrIHNyYy9nZGIvY29uZmlndXJlLmFjCTIwMTIvMDUvMDYgMTU6MzE6MDMJMS4xNzIKK0BAIC0x NDEsNyArMTQxLDcgQEAKKyBBU19IRUxQX1NUUklORyhbLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBh dGg9UEFUSF0sIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXNdKQor IEFTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aF0sIFtkbyBub3Qg cmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSksCisgW2lmIHRlc3QgIiR3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgorLSAgIHdpdGhfYXV0b19sb2FkX3Nh ZmVfcGF0aD0iIgorKyAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKKyAgZmldLAorIFt3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiXSkKKyBBQ19ERUZJTkVfRElSKERFRkFV TFRfQVVUT19MT0FEX1NBRkVfUEFUSCwgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorIyMjIHNy Yy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA1LzAzIDA3OjA3OjI0CTEuMTMwOAorIyMjIHNyYy9n ZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA1LzA2IDE1OjMxOjA0CTEuMTMwOQorIyMgLTEsMyArMSw5 IEBACisrMjAxMi0wNS0wNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgorKworKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogTWFrZSAn ZGlyZWN0b3JpZXMnCisrCWZvciAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIG9wdGlvbmFsLiAg TWVudGlvbiBpZiBpdCBpcyBvbWl0dGVkLgorKwlDaGFuZ2UgZGlzYWJsaW5nIHNlY3VyaXR5IHBy b3RlY3Rpb24gY29uZGl0aW9uIHRvICIvIiwgdHdpY2UuCisrCisgMjAxMi0wNS0wMyAgU2l2YSBD aGFuZHJhIFJlZGR5ICA8c2l2YWNoYW5kcmFAZ29vZ2xlLmNvbT4KKyAKKyAJKiBnZGIudGV4aW5m byAoU3ltYm9sIFRhYmxlcyBJbiBQeXRob24pOiBBZGQgZG9jdW1lbnRhdGlvbiBhYm91dAorLS0t IHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDUvMDMgMDc6MDc6MjQJMS45NTQKKysrKyBz cmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA1LzA2IDE1OjMxOjA0CTEuOTU1CitAQCAtMjEy MTksOSArMjEyMTksMTIgQEAKKyBAdGFibGUgQGNvZGUKKyBAYW5jaG9ye3NldCBhdXRvLWxvYWQg c2FmZS1wYXRofQorIEBraW5kZXggc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgKKy1AaXRlbSBzZXQg YXV0by1sb2FkIHNhZmUtcGF0aCBAdmFye2RpcmVjdG9yaWVzfQorK0BpdGVtIHNldCBhdXRvLWxv YWQgc2FmZS1wYXRoIEBye1t9QHZhcntkaXJlY3Rvcmllc31AcntdfQorIFNldCB0aGUgbGlzdCBv ZiBkaXJlY3RvcmllcyAoYW5kIHRoZWlyIHN1YmRpcmVjdG9yaWVzKSB0cnVzdGVkIGZvciBhdXRv bWF0aWMKKyBsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIFlvdSBjYW4gYWxzbyBl bnRlciBhIHNwZWNpZmljIHRydXN0ZWQgZmlsZS4KKytJZiB5b3Ugb21pdCBAdmFye2RpcmVjdG9y aWVzfSwgQHNhbXB7YXV0by1sb2FkIHNhZmUtcGF0aH0gd2lsbCBiZSByZXNldCB0bworK2l0cyBk ZWZhdWx0IHZhbHVlIGFzIHNwZWNpZmllZCBkdXJpbmcgQHZhbHVle0dEQk59IGNvbXBpbGF0aW9u LgorKworIFRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHVzZXMgZGlyZWN0b3J5IHNlcGFyYXRvciAo QHNhbXB7On0gb24gR05VIGFuZCBVbml4Cisgc3lzdGVtcywgQHNhbXB7O30gb24gTVMtV2luZG93 cyBhbmQgTVMtRE9TKSB0byBzZXBhcmF0ZSBkaXJlY3Rvcmllcywgc2ltaWxhcmx5CisgdG8gdGhl IEBlbnZ7UEFUSH0gZW52aXJvbm1lbnQgdmFyaWFibGUuCitAQCAtMjEyNDAsNyArMjEyNDMsNyBA QAorIGhvc3QgcGxhdGZvcm0gZGlyZWN0b3J5IHNlcGFyYXRvciBpbiB1c2UuCisgQGVuZCB0YWJs ZQorIAorLVNldHRpbmcgdGhpcyB2YXJpYWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgZGlzYWJsZXMg dGhpcyBzZWN1cml0eSBwcm90ZWN0aW9uLgorK1NldHRpbmcgdGhpcyB2YXJpYWJsZSB0byBAZmls ZXsvfSBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24uCisgVGhpcyB2YXJpYWJsZSBp cyBzdXBwb3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJlY3RvcmllcyB3cml0YWJsZSBi eSB0aGUKKyBzeXN0ZW0gc3VwZXJ1c2VyIG9ubHkuICBVc2VycyBjYW4gYWRkIHRoZWlyIHNvdXJj ZSBkaXJlY3RvcmllcyBpbiBpbml0IGZpbGVzIGluCisgdGhlaXIgaG9tZSBkaXJlY3RvcmllcyAo QHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgU2VlIGFsc28gZGVwcmVjYXRlZAor QEAgLTIxMjYwLDcgKzIxMjYzLDcgQEAKKyBTcGVjaWZ5IHRoaXMgZGlyZWN0b3J5IGFzIGluIHRo ZSBwcmV2aW91cyBjYXNlIGJ1dCBqdXN0IGZvciBhIHNpbmdsZQorIEB2YWx1ZXtHREJOfSBzZXNz aW9uLgorIAorLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiBA ZG90c3t9fQorK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC8i IEBkb3Rze319CisgRGlzYWJsZSBhdXRvLWxvYWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFs dWV7R0RCTn0gc2Vzc2lvbi4KKyBUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcg ZHVyaW5nIHRoaXMgQHZhbHVle0dEQk59IHNlc3Npb24gd2lsbCBjb21lCisgZnJvbSB0cnVzdGVk IHNvdXJjZXMuCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE5b2YyMi5wYXRjaCBiL2dkYi1h dXRvbG9hZC0xOW9mMjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwZTk0 NGEuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTE5b2YyMi5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDM1ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTIt MDUvbXNnMDAwNTkuaHRtbAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDYg MTU6MzE6MDQJMS4xMzA5Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDkgMTg6 MTU6NTgJMS4xMzEwCi0jIyAtMSwzICsxLDggQEAKLSsyMDEyLTA1LTA5ICBKYW4gS3JhdG9jaHZp bCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEF1dG8t bG9hZGluZyk6IFdyYXAgdG9vIGxvbmcgbGluZXMgaW4gQHNtYWxsZXhhbXBsZS4KLSsJVHdpY2Uu Ci0rCi0gMjAxMi0wNS0wNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogTWFrZSAn ZGlyZWN0b3JpZXMnCi0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNS8wNiAxNToz MTowNAkxLjk1NQotKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDUvMDkgMTg6MTU6 NTgJMS45NTYKLUBAIC0yMTAwNCw3ICsyMTAwNCw4IEBACi0gKGdkYikgc2hvdyBhdXRvLWxvYWQK LSBnZGItc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1h bmRzIHNjcmlwdHMgaXMgb24uCi0gbGlidGhyZWFkLWRiOiAgQXV0by1sb2FkaW5nIG9mIGluZmVy aW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYiBpcyBvbi4KLS1sb2NhbC1nZGJpbml0OiAgQXV0by1s b2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG9uLgot K2xvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3Vy cmVudCBkaXJlY3RvcnkKLSsgICAgICAgICAgICAgICAgaXMgb24uCi0gcHl0aG9uLXNjcmlwdHM6 ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCi0gc2FmZS1wYXRoOiAgTGlz dCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVz Ci0gICAgICAgICAgICAgaXMgL3Vzci9sb2NhbC4KLUBAIC0yMTAyMiw3ICsyMTAyMyw4IEBACi0g TG9hZGVkICBTY3JpcHQKLSBZZXMgICAgIC9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiCi0gbGli dGhyZWFkLWRiOiAgTm8gYXV0by1sb2FkZWQgbGlidGhyZWFkLWRiLgotLWxvY2FsLWdkYmluaXQ6 ICBMb2NhbCAuZ2RiaW5pdCBmaWxlICIvaG9tZS91c2VyL2dkYi8uZ2RiaW5pdCIgaGFzIGJlZW4g bG9hZGVkLgotK2xvY2FsLWdkYmluaXQ6ICBMb2NhbCAuZ2RiaW5pdCBmaWxlICIvaG9tZS91c2Vy L2dkYi8uZ2RiaW5pdCIgaGFzIGJlZW4KLSsgICAgICAgICAgICAgICAgbG9hZGVkLgotIHB5dGhv bi1zY3JpcHRzOgotIExvYWRlZCAgU2NyaXB0Ci0gWWVzICAgICAvaG9tZS91c2VyL2dkYi9nZGIt Z2RiLnB5CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE5b2YyOC5wYXRjaCBiL2dkYi1hdXRv bG9hZC0xOW9mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdi MTI5MwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0xOW9mMjgucGF0Y2gKQEAgLTAs MCArMSw0NSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNS9tc2cw MDA2MC5odG1sCisKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNS8wOSAxODoxNTo1 OAkxLjEzMTAKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNS8wOSAxOToyOToyNQkx LjEzMTEKKyMjIC0zLDYgKzMsOSBAQAorIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcpOiBX cmFwIHRvbyBsb25nIGxpbmVzIGluIEBzbWFsbGV4YW1wbGUuCisgCVR3aWNlLgorIAorKwkqIGdk Yi50ZXhpbmZvIChTZXBhcmF0ZSBEZWJ1ZyBGaWxlcywgQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6 IFJlcGxhY2UKKysJZGlyZWN0b3J5IHNlcGFyYXRvciBieSBwYXRoIHNlcGFyYXRvci4KKysKKyAy MDEyLTA1LTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Cisg CisgCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBNYWtlICdkaXJlY3Rv cmllcycKKy0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA1LzA5IDE4OjE1OjU4CTEu OTU2CisrKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNS8wOSAxOToyOToyNQkxLjk1 NworQEAgLTE2Mjg1LDggKzE2Mjg1LDggQEAKKyBAa2luZGV4IHNldCBkZWJ1Zy1maWxlLWRpcmVj dG9yeQorIEBpdGVtIHNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSBAdmFye2RpcmVjdG9yaWVzfQor IFNldCB0aGUgZGlyZWN0b3JpZXMgd2hpY2ggQHZhbHVle0dEQk59IHNlYXJjaGVzIGZvciBzZXBh cmF0ZSBkZWJ1Z2dpbmcKKy1pbmZvcm1hdGlvbiBmaWxlcyB0byBAdmFye2RpcmVjdG9yeX0uICBN dWx0aXBsZSBkaXJlY3RvcnkgY29tcG9uZW50cyBjYW4gYmUgc2V0CistY29uY2F0ZW5hdGluZyB0 aGVtIGJ5IGEgZGlyZWN0b3J5IHNlcGFyYXRvci4KKytpbmZvcm1hdGlvbiBmaWxlcyB0byBAdmFy e2RpcmVjdG9yeX0uICBNdWx0aXBsZSBwYXRoIGNvbXBvbmVudHMgY2FuIGJlIHNldAorK2NvbmNh dGVuYXRpbmcgdGhlbSBieSBhIHBhdGggc2VwYXJhdG9yLgorIAorIEBraW5kZXggc2hvdyBkZWJ1 Zy1maWxlLWRpcmVjdG9yeQorIEBpdGVtIHNob3cgZGVidWctZmlsZS1kaXJlY3RvcnkKK0BAIC0y MTIyNyw3ICsyMTIyNyw3IEBACisgSWYgeW91IG9taXQgQHZhcntkaXJlY3Rvcmllc30sIEBzYW1w e2F1dG8tbG9hZCBzYWZlLXBhdGh9IHdpbGwgYmUgcmVzZXQgdG8KKyBpdHMgZGVmYXVsdCB2YWx1 ZSBhcyBzcGVjaWZpZWQgZHVyaW5nIEB2YWx1ZXtHREJOfSBjb21waWxhdGlvbi4KKyAKKy1UaGUg bGlzdCBvZiBkaXJlY3RvcmllcyB1c2VzIGRpcmVjdG9yeSBzZXBhcmF0b3IgKEBzYW1wezp9IG9u IEdOVSBhbmQgVW5peAorK1RoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHVzZXMgcGF0aCBzZXBhcmF0 b3IgKEBzYW1wezp9IG9uIEdOVSBhbmQgVW5peAorIHN5c3RlbXMsIEBzYW1wezt9IG9uIE1TLVdp bmRvd3MgYW5kIE1TLURPUykgdG8gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIHNpbWlsYXJseQorIHRv IHRoZSBAZW52e1BBVEh9IGVudmlyb25tZW50IHZhcmlhYmxlLgorIAorQEAgLTIxMjQyLDcgKzIx MjQyLDcgQEAKKyBAaXRlbSBhZGQtYXV0by1sb2FkLXNhZmUtcGF0aAorIEFkZCBhbiBlbnRyeSAo b3IgbGlzdCBvZiBlbnRyaWVzKSB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBh dXRvbWF0aWMKKyBsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIE11bHRpcGxlIGVu dHJpZXMgbWF5IGJlIGRlbGltaXRlZCBieSB0aGUKKy1ob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBz ZXBhcmF0b3IgaW4gdXNlLgorK2hvc3QgcGxhdGZvcm0gcGF0aCBzZXBhcmF0b3IgaW4gdXNlLgor IEBlbmQgdGFibGUKKyAKKyBTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7L30gZGlzYWJs ZXMgdGhpcyBzZWN1cml0eSBwcm90ZWN0aW9uLgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0y MG9mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMjBvZjIyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBmNGM3ZGNkLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0yMG9mMjIu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNS9tc2cwMDE4MC5odG1sCi1TdWJqZWN0OiBbcGF0Y2hd IGF1dG8tbG9hZCBmaXggbXVsdGktZGlyIGRlYnVnLWZpbGUtZGlyZWN0b3J5Ci0KLUhpLAotCi1J IGZvcmdvdCB0byBmaXggdGhpcyBjYXNlIG15c2VsZiwgUHl0aG9uIGF1dG8tbG9hZCB3YXMgaW1w bGVtZW50ZWQgYnk6Ci0JY29tbWl0IDFlNWUyYWZkN2NmYTZiYjYyYWJiOTQ5M2E1MTRjNzA0ODll MTljMzIKLQlBdXRob3I6IFRvbSBUcm9tZXkgPHRyb21leUByZWRoYXQuY29tPgotCURhdGU6ICAg VGh1IE1heSAyOCAwMDo0MDoyMyAyMDA5ICswMDAwCi0KLXdoaWxlIG11bHRpLWRpciBkZWJ1Zy1m aWxlLWRpcmVjdG9yeSB3YXMgaW1wbGVtZW50ZWQgYnkKLQljb21taXQgMzZhZTUyZDE2Y2M5ZDM4 Y2ZlMzE3YTc5YmI1ZDYzYzYyNDM1OTE1NAotCUF1dGhvcjogSmFuIEtyYXRvY2h2aWwgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+Ci0JRGF0ZTogICBNb24gTm92IDIgMTQ6NTk6NDggMjAwOSAr MDAwMAotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3Jh MTctbGludXgtZ251LgotCi1BbmQgZGVidWdfZmlsZV9kaXJlY3RvcnkgcmVhbGx5IGNhbm5vdCBi ZSBOVUxMIGFmdGVyIEdEQiBpbml0aWFsaXphdGlvbiBjb2RlLgotCi0KLVRoYW5rcywKLUphbgot Ci0KLWdkYi8KLTIwMTItMDUtMDcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KLQotCU1ha2UgYXV0by1sb2FkIGhhbmRsZSBtdWx0aXBsZSBjb21wb25lbnRzIG9m IERFQlVHX0ZJTEVfRElSRUNUT1JZLgotCSogYXV0by1sb2FkLmMgKGF1dG9fbG9hZF9vYmpmaWxl X3NjcmlwdCk6IFJlbW92ZSBjaGVjayBmb3IgTlVMTAotCURFQlVHX0ZJTEVfRElSRUNUT1JZLiAg SGFuZGxlIG11bHRpcGxlIGNvbXBvbmVudHMgb2YKLQlERUJVR19GSUxFX0RJUkVDVE9SWS4KLQot RGlmZiAtLWdpdCBhL2dkYi9hdXRvLWxvYWQuYyBiL2dkYi9hdXRvLWxvYWQuYwotaW5kZXggOWQ0 ZDBiYy4uMjU0ZGUzYiAxMDA2NDQKLS0tLSBhL2dkYi9hdXRvLWxvYWQuYwotKysrIGIvZ2RiL2F1 dG8tbG9hZC5jCi1AQCAtNTg3LDE3ICs1ODcsMjkgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0 IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgIGlucHV0ID0gZm9wZW4gKGZpbGVuYW1lLCAi ciIpOwotICAgZGVidWdmaWxlID0gZmlsZW5hbWU7Ci0gCi0tICBpZiAoIWlucHV0ICYmIGRlYnVn X2ZpbGVfZGlyZWN0b3J5KQotKyAgaWYgKCFpbnB1dCkKLSAgICAgewotLSAgICAgIC8qIEFsc28g dHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAg Ki8KLS0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1lKQotLQkJCSAg ICsgc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxKTsKLS0gICAgICBzdHJjcHkgKGRl YnVnZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOwotLSAgICAgIC8qIEZJTEVOQU1FIGlzIGFi c29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLwotLSAgICAgIHN0cmNhdCAo ZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0rICAgICAgY2hhciAqZGVidWdkaXI7Ci0rICAgICAgVkVD IChjaGFyX3B0cikgKmRlYnVnZGlyX3ZlYzsKLSsgICAgICBpbnQgaXg7Ci0gCi0tICAgICAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLS0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1 Z2ZpbGUsICJyIik7Ci0rICAgICAgZGVidWdkaXJfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJf dmVjIChkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0rICAgICAgbWFrZV9jbGVhbnVwX2ZyZWVfY2hh cl9wdHJfdmVjIChkZWJ1Z2Rpcl92ZWMpOwotKwotKyAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRl cmF0ZSAoY2hhcl9wdHIsIGRlYnVnZGlyX3ZlYywgaXgsIGRlYnVnZGlyKTsgKytpeCkKLSsJewot KwkgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8g ZGlyZWN0b3J5LiAgKi8KLSsJICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGRlYnVnZGly KSArIHN0cmxlbiAoZmlsZW5hbWUpICsgMSk7Ci0rCSAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGRlYnVn ZGlyKTsKLSsKLSsJICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBh ICIvIiBoZXJlLiAgKi8KLSsJICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOwotKwotKwkg IG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7Ci0rCSAgaW5wdXQgPSBmb3BlbiAoZGVi dWdmaWxlLCAiciIpOwotKwkgIGlmIChpbnB1dCAhPSBOVUxMKQotKwkgICAgYnJlYWs7Ci0rCX0K LSAgICAgfQotIAotICAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKLQoKZGlmZiAtLWdpdCBh L2dkYi1hdXRvbG9hZC0yMG9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMjBvZjI4LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwZTk0NGEKLS0tIC9kZXYvbnVsbAor KysgYi9nZGItYXV0b2xvYWQtMjBvZjI4LnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK2h0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAwNTkuaHRtbAorCisjIyMgc3Jj L2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDYgMTU6MzE6MDQJMS4xMzA5CisjIyMgc3JjL2dk Yi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDkgMTg6MTU6NTgJMS4xMzEwCisjIyAtMSwzICsxLDgg QEAKKysyMDEyLTA1LTA5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+CisrCisrCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyk6IFdyYXAgdG9vIGxvbmcgbGlu ZXMgaW4gQHNtYWxsZXhhbXBsZS4KKysJVHdpY2UuCisrCisgMjAxMi0wNS0wNiAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorIAkqIGdkYi50ZXhpbmZvIChB dXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogTWFrZSAnZGlyZWN0b3JpZXMnCistLS0gc3JjL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMi8wNS8wNiAxNTozMTowNAkxLjk1NQorKysrIHNyYy9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMTIvMDUvMDkgMTg6MTU6NTgJMS45NTYKK0BAIC0yMTAwNCw3ICsyMTAw NCw4IEBACisgKGdkYikgc2hvdyBhdXRvLWxvYWQKKyBnZGItc2NyaXB0czogIEF1dG8tbG9hZGlu ZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMgb24uCisgbGlidGhy ZWFkLWRiOiAgQXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYiBp cyBvbi4KKy1sb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBm cm9tIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG9uLgorK2xvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRp bmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJlY3RvcnkKKysgICAgICAgICAg ICAgICAgaXMgb24uCisgcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNj cmlwdHMgaXMgb24uCisgc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNo IGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCisgICAgICAgICAgICAgaXMgL3Vzci9sb2Nh bC4KK0BAIC0yMTAyMiw3ICsyMTAyMyw4IEBACisgTG9hZGVkICBTY3JpcHQKKyBZZXMgICAgIC9o b21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiCisgbGlidGhyZWFkLWRiOiAgTm8gYXV0by1sb2FkZWQg bGlidGhyZWFkLWRiLgorLWxvY2FsLWdkYmluaXQ6ICBMb2NhbCAuZ2RiaW5pdCBmaWxlICIvaG9t ZS91c2VyL2dkYi8uZ2RiaW5pdCIgaGFzIGJlZW4gbG9hZGVkLgorK2xvY2FsLWdkYmluaXQ6ICBM b2NhbCAuZ2RiaW5pdCBmaWxlICIvaG9tZS91c2VyL2dkYi8uZ2RiaW5pdCIgaGFzIGJlZW4KKysg ICAgICAgICAgICAgICAgbG9hZGVkLgorIHB5dGhvbi1zY3JpcHRzOgorIExvYWRlZCAgU2NyaXB0 CisgWWVzICAgICAvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1 dG9sb2FkLTIxb2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yMW9mMjIucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZWNiNWQuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2Fk LTIxb2YyMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwMyArMCwwIEBACi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNS9tc2cwMDMwMy5odG1sCi1TdWJqZWN0 OiBSZTogW3BhdGNoIDEvMl0gUHJvdmlkZSAkZGRpciBzdWJzdGl0dXRpb24gZm9yIC0td2l0aC1h dXRvLWxvYWQtc2FmZS1wYXRoCi0KLU9uIFdlZCwgMDkgTWF5IDIwMTIgMTk6NDE6MDggKzAyMDAs IEVsaSBaYXJldHNraWkgd3JvdGU6Ci0+IE9rYXkgd2l0aCB0aGF0LiAgVGhhbmtzLgotCi1VcGRh dGVkIGp1c3QgdGhlIGRvYy4KLQotCi1UaGFua3MsCi1KYW4KLQotCi0KLWdkYi8KLTIwMTItMDUt MDkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVByb3Zp ZGUgJGRkaXIgc3Vic3RpdHV0aW9uIGZvciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aC4KLQkq IE5FV1MgKC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoLCAtLXdpdGhvdXQtYXV0by1sb2FkLXNh ZmUtcGF0aCk6IE5ldwotCWVudHJpZXMuCi0JKiBhdXRvLWxvYWQuYzogSW5jbHVkZSBvYnNlcnZl ci5oLgotCShhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUpOiBDYWxsIHN1YnN0aXR1dGVf cGF0aF9jb21wb25lbnQgZm9yCi0JZWFjaCBjb21wb25lbnQuICBOZXcgdmFyaWFibGUgZGRpcl9z dWJzdC4KLQkoYXV0b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQpOiBOZXcgZnVuY3Rpb24uCi0J KHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoKTogUmVuYW1lIERFRkFVTFRfQVVUT19MT0FEX1NBRkVf UEFUSCB0bwotCUFVVE9fTE9BRF9TQUZFX1BBVEguICBOZXcgY29tbWVudC4KLQkoX2luaXRpYWxp emVfYXV0b19sb2FkKTogUmVuYW1lIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCB0bwotCUFV VE9fTE9BRF9TQUZFX1BBVEguICBJbnN0YWxsIGF1dG9fbG9hZF9nZGJfZGF0YWRpcl9jaGFuZ2Vk LgotCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgotCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgot CSogY29uZmlndXJlLmFjICgtLWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBSZW5hbWUKLQlERUZBVUxU X0FVVE9fTE9BRF9TQUZFX1BBVEggdG8gQVVUT19MT0FEX1NBRkVfUEFUSC4gIERlZmF1bHQgdG8K LQlHREJfREFUQURJUi9hdXRvLWxvYWQuCi0JKiBkZWZzLmggKHN1YnN0aXR1dGVfcGF0aF9jb21w b25lbnQpOiBOZXcgZGVjbGFyYXRpb24uCi0JKiB0b3AuYzogSW5jbHVkZSBvYnNlcnZlci5oLgot CShzZXRfZ2RiX2RhdGFkaXIpOiBOZXcgZnVuY3Rpb24uCi0JKGluaXRfbWFpbik6IEluc3RhbGwg aXQgZm9yICJzZXQgZGF0YS1kaXJlY3RvcnkiLgotCSogdXRpbHMuYyAoc3Vic3RpdHV0ZV9wYXRo X2NvbXBvbmVudCk6IE5ldyBmdW5jdGlvbi4KLQotZ2RiL2RvYy8KLTIwMTItMDUtMDkgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVByb3ZpZGUgJGRkaXIg c3Vic3RpdHV0aW9uIGZvciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aC4KLQkqIGdkYi50ZXhp bmZvIChBdXRvLWxvYWRpbmcpOiBSZXBsYWNlIC91c3IvbG9jYWwgYnkgJGRkaXIvYXV0by1sb2Fk LgotCShBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogTGlrZXdpc2UuICBNZW50aW9uIHRoZSBkZWZh dWx0IHZhbHVlLAotCSRkZGlyIHN1YnN0aXR1dGlvbiwgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBh dGggYW5kCi0JLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGguCi0JKiBvYnNlcnZlci50ZXhp IChnZGJfZGF0YWRpcl9jaGFuZ2VkKTogTmV3LgotCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvTkVXUwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv TkVXUwkyMDEyLTA1LTA5IDIyOjEzOjU4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNS0wOSAyMjoxNDoyOS4wOTExODMxOTAgKzAyMDAKLUBA IC03Niw2ICs3NiwxNyBAQCBzZXQgZGVidWcgYXV0by1sb2FkIG9ufG9mZgotIHNob3cgZGVidWcg YXV0by1sb2FkCi0gICBDb250cm9sIGRpc3BsYXkgb2YgZGVidWdnaW5nIGluZm8gZm9yIGF1dG8t bG9hZGluZyB0aGUgZmlsZXMgYWJvdmUuCi0gCi0rKiBOZXcgY29uZmlndXJlIG9wdGlvbnMKLSsK LSstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aAotKyAgQ29uZmlndXJlIGRlZmF1bHQgdmFsdWUg Zm9yIHRoZSAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldHRpbmcKLSsgIGFib3ZlLiAgSXQg ZGVmYXVsdHMgdG8gJyRkZGlyL2F1dG8tbG9hZCcsICRkZGlyIHJlcHJlc2VudGluZyB0aGUgdmFs dWUKLSsgIG9mIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWdkYi1kYXRhZGlyLgotKwotKy0td2l0 aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCi0rICBTZXQgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRo JyB0byAnLycsIGVmZmVjdGl2ZWx5IGRpc2FibGluZyB0aGlzCi0rICBzZWN1cml0eSBmZWF0dXJl LgotKwotICogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCi0gCi0gLS1pbml0LWNvbW1hbmQ9RklM RSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA1LTA5IDIyOjEzOjU4 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5j CTIwMTItMDUtMDkgMjI6MTQ6MDQuODEyMjIyMjI2ICswMjAwCi1AQCAtMzUsNiArMzUsNyBAQAot ICNpbmNsdWRlICJnZGJfdmVjcy5oIgotICNpbmNsdWRlICJyZWFkbGluZS90aWxkZS5oIgotICNp bmNsdWRlICJjb21wbGV0ZXIuaCIKLSsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSAKLSAvKiBUaGUg c3VmZml4IG9mIHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24g Y29tbWFuZCBmaWxlcy4KLSAgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNv LCBsb29rIGZvciBsaWJmb28tZ2RiLmdkYi4gICovCi1AQCAtMTQxLDEwICsxNDIsMTYgQEAgYXV0 b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lkKQotICAgZm9yIChpeCA9IDA7IGl4IDwg bGVuOyBpeCsrKQotICAgICB7Ci0gICAgICAgY2hhciAqZGlyID0gVkVDX2luZGV4IChjaGFyX3B0 ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4KTsKLS0gICAgICBjaGFyICpleHBhbmRlZCA9 IHRpbGRlX2V4cGFuZCAoZGlyKTsKLS0gICAgICBjaGFyICpyZWFsX3BhdGggPSBnZGJfcmVhbHBh dGggKGV4cGFuZGVkKTsKLSsgICAgICBjaGFyICpkZGlyX3N1YnN0LCAqZXhwYW5kZWQsICpyZWFs X3BhdGg7Ci0gCi0tICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0 IHRpbGRlX2V4cGFuZC1lZC4gICovCi0rICAgICAgZGRpcl9zdWJzdCA9IHhzdHJkdXAgKGRpcik7 Ci0rICAgICAgc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoJmRkaXJfc3Vic3QsICIkZGRpciIs IGdkYl9kYXRhZGlyKTsKLSsgICAgICBleHBhbmRlZCA9IHRpbGRlX2V4cGFuZCAoZGRpcl9zdWJz dCk7Ci0rICAgICAgeGZyZWUgKGRkaXJfc3Vic3QpOwotKyAgICAgIHJlYWxfcGF0aCA9IGdkYl9y ZWFscGF0aCAoZXhwYW5kZWQpOwotKwotKyAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRy eSBpcyBhdCBsZWFzdCBhIHZhbGlkIHBhdGggKHRoZXJlZm9yZQotKwkgJGRkaXItZXhwYW5kZWQg YW5kIHRpbGRlLWV4cGFuZGVkKS4gICovCi0gICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKLSAKLSAgICAgICBpZiAoZGVi dWdfYXV0b19sb2FkKQotQEAgLTE3NiwxNSArMTgzLDI0IEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjX3VwZGF0ZSAodm9pZCkKLSAgICAgfQotIH0KLSAKLSsvKiBWYXJpYWJsZSBnZGJfZGF0YWRp ciBoYXMgYmVlbiBzZXQuICBVcGRhdGUgY29udGVudCBkZXBlbmRpbmcgb24gJGRkaXIuICAqLwot KwotK3N0YXRpYyB2b2lkCi0rYXV0b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQgKHZvaWQpCi0r ewotKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOwotK30KLSsKLSAvKiAic2V0 IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0aW9uIHZhcmlh YmxlLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoIChjaGFy ICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQotIHsKLSsg IC8qIFNldHRpbmcgdGhlIHZhcmlhYmxlIHRvICIiIHJlc2V0cyBpdCB0byB0aGUgY29tcGlsZSB0 aW1lIGRlZmF1bHRzLiAgKi8KLSAgIGlmIChhdXRvX2xvYWRfc2FmZV9wYXRoWzBdID09ICdcMCcp Ci0gICAgIHsKLSAgICAgICB4ZnJlZSAoYXV0b19sb2FkX3NhZmVfcGF0aCk7Ci0tICAgICAgYXV0 b19sb2FkX3NhZmVfcGF0aCA9IHhzdHJkdXAgKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCk7 Ci0rICAgICAgYXV0b19sb2FkX3NhZmVfcGF0aCA9IHhzdHJkdXAgKEFVVE9fTE9BRF9TQUZFX1BB VEgpOwotICAgICB9Ci0gCi0gICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7Ci1A QCAtMTA0MCw3ICsxMDU2LDcgQEAgVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlv bnMgZgotIFVzYWdlOiBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiksCi0gCSAgIGF1dG9f bG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKLSAKLS0gIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4 c3RyZHVwIChERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgpOwotKyAgYXV0b19sb2FkX3NhZmVf cGF0aCA9IHhzdHJkdXAgKEFVVE9fTE9BRF9TQUZFX1BBVEgpOwotICAgYXV0b19sb2FkX3NhZmVf cGF0aF92ZWNfdXBkYXRlICgpOwotICAgYWRkX3NldHNob3dfb3B0aW9uYWxfZmlsZW5hbWVfY21k ICgic2FmZS1wYXRoIiwgY2xhc3Nfc3VwcG9ydCwKLSAJCQkJICAgICAmYXV0b19sb2FkX3NhZmVf cGF0aCwgXygiXAotQEAgLTEwNTgsNiArMTA3NCw3IEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJp dHkgaW1wbGljYXRpb25zIGYKLSAJCQkJICAgICBzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0g CQkJCSAgICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSAJCQkJICAgICBhdXRvX2xv YWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rICBvYnNlcnZlcl9hdHRhY2hfZ2RiX2RhdGFkaXJf Y2hhbmdlZCAoYXV0b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQpOwotIAotICAgY21kID0gYWRk X2NtZCAoImFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIiwgY2xhc3Nfc3VwcG9ydCwKLSAJCSBhZGRf YXV0b19sb2FkX3NhZmVfcGF0aCwKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25m aWcuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZp Zy5pbgkyMDEyLTA1LTA5IDIyOjEzOjU4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgkyMDEyLTA1LTA5IDIyOjE0OjA0LjgxMjIyMjIyNiArMDIw MAotQEAgLTcsNiArNyw5IEBACi0gLyogRGVmaW5lIGlmIGJ1aWxkaW5nIHVuaXZlcnNhbCAoaW50 ZXJuYWwgaGVscGVyIG1hY3JvKSAqLwotICN1bmRlZiBBQ19BUFBMRV9VTklWRVJTQUxfQlVJTEQK LSAKLSsvKiBEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuICovCi0r I3VuZGVmIEFVVE9fTE9BRF9TQUZFX1BBVEgKLSsKLSAvKiBEaXJlY3Rvcnkgb2YgcHJvZ3JhbXMu ICovCi0gI3VuZGVmIEJJTkRJUgotIAotQEAgLTQzLDkgKzQ2LDYgQEAKLSAgICBtb3ZlZC4gKi8K LSAjdW5kZWYgREVCVUdESVJfUkVMT0NBVEFCTEUKLSAKLS0vKiBEaXJlY3RvcmllcyBzYWZlIHRv IGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuICovCi0tI3VuZGVmIERFRkFVTFRfQVVUT19MT0FEX1NB RkVfUEFUSAotLQotIC8qIERlZmluZSB0byBCRkQncyBkZWZhdWx0IGFyY2hpdGVjdHVyZS4gKi8K LSAjdW5kZWYgREVGQVVMVF9CRkRfQVJDSAotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvY29uZmlndXJlCTIwMTItMDUtMDkgMjI6MTM6NTguMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCTIwMTItMDUtMDkgMjI6MTY6MTkuODc3MDA1 MDgzICswMjAwCi1AQCAtMTY2OCw3ICsxNjY4LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAt LXdpdGgtcnBtICAgICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9yIG1pc3NpbmcgZGVi dWdpbmZvcyAoeWVzL25vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxp YnJwbS5zbykKLSAgIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEgKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxl cwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1 dG8tbG9hZGVkIGZpbGVzLCB1c2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICRkZGlyIGZv ciAtLXdpdGgtZ2RiLWRhdGFkaXIgcGF0aCBbJGRkaXIvYXV0by1sb2FkXQotICAgLS13aXRob3V0 LWF1dG8tbG9hZC1zYWZlLXBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCBy ZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnMKLSAgIC0td2l0aC1saWJ1bndpbmQg ICAgICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBvcnQKLUBAIC04NDg4LDIw ICs4NDg5LDIxIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG8KLSAj IENoZWNrIHdoZXRoZXIgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGggd2FzIGdpdmVuLgotIGlm IHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoK3NldH0iID0gc2V0OyB0aGVuIDoKLSAg IHdpdGh2YWw9JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aDsgaWYgdGVzdCAiJHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCi0tICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo PSIvIgotLSBmaQotKyAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgotKyAgICAgZmkK LSBlbHNlCi0tICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiCi0rICB3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGg9JyRkZGlyL2F1dG8tbG9hZCcKLSBmaQotIAotK2VzY2FwZV9kaXI9 YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bJF1kZGlyXD4vXFxcXFxc XFxcXFxcJi9nJ2AKLSAKLSAgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFj X2RlZmF1bHRfcHJlZml4IgotICAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVj X3ByZWZpeD0nJHtwcmVmaXh9JwotLSAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICR3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGhgCi0rICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGVzY2FwZV9k aXJgCi0gICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGFjX2RlZmluZV9kaXJgCi0gCi0gY2F0 ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotLSNkZWZpbmUgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9Q QVRIICIkYWNfZGVmaW5lX2RpciIKLSsjZGVmaW5lIEFVVE9fTE9BRF9TQUZFX1BBVEggIiRhY19k ZWZpbmVfZGlyIgotIF9BQ0VPRgotIAotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvY29uZmlndXJlLmFjCTIwMTItMDUtMDkgMjI6MTM6NTguMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDUtMDkgMjI6MTY6MTAu NTkyMDIwMDEyICswMjAwCi1AQCAtMzQxLDEzICszNDEsMTYgQEAgZmkKLSAgCi0gQUNfTVNHX0NI RUNLSU5HKFtmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoXSkKLSBBQ19BUkdfV0lUSChh dXRvLWxvYWQtc2FmZS1wYXRoLAotLUFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNh ZmUtcGF0aD1QQVRIXSwgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxl c10pCi0tQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoXSwgW2Rv IG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnNdKSwKLS1baWYgdGVzdCAi JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCi0tICAgd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoPSIvIgotLSBmaV0sCi0tW3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHBy ZWZpeCJdKQotLUFDX0RFRklORV9ESVIoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRILCB3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0rQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQt c2FmZS1wYXRoPVBBVEhdLAotKyAgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRl ZCBmaWxlcywgdXNlICRkZGlyIGZvciAtLXdpdGgtZ2RiLWRhdGFkaXIgcGF0aCBAPDpAJGRkaXIv YXV0by1sb2FkQDo+QF0pCi0rQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1hdXRvLWxvYWQtc2Fm ZS1wYXRoXSwKLSsgICAgICAgICAgICAgICBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZp bGVzIGxvY2F0aW9uc10pLAotKyAgICBbaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aCIgPSAibm8iOyB0aGVuCi0rICAgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCi0rICAg ICBmaV0sCi0rW3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0nJGRkaXIvYXV0by1sb2FkJ10pCi0r ZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1tbJF1d ZGRpclw+L1xcXFxcXFxcXFxcXCYvZydgCi0rQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9Q QVRILCBlc2NhcGVfZGlyLAotIAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8t bG9hZGVkIGZpbGVzLl0pCi0gQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aF0pCi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZGVmcy5oCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kZWZzLmgJMjAxMi0wNS0wOSAyMjox Mzo1Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kZWZzLmgJ MjAxMi0wNS0wOSAyMjoxNDowNC44MTYyMjIyMjAgKzAyMDAKLUBAIC00NDIsNiArNDQyLDkgQEAg ZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICptYWtlX2Jwc3RhdF9jbGVhcgotIAotIGV4dGVybiBpbnQg cHJvZHVjZXJfaXNfZ2NjX2dlXzQgKGNvbnN0IGNoYXIgKnByb2R1Y2VyKTsKLSAKLStleHRlcm4g dm9pZCBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoqc3RyaW5ncCwgY29uc3QgY2hh ciAqZnJvbSwKLSsJCQkJICAgICAgIGNvbnN0IGNoYXIgKnRvKTsKLSsKLSAjaWZkZWYgSEFWRV9X QUlUUElECi0gZXh0ZXJuIHBpZF90IHdhaXRfdG9fZGllX3dpdGhfdGltZW91dCAocGlkX3QgcGlk LCBpbnQgKnN0YXR1cywgaW50IHRpbWVvdXQpOwotICNlbmRpZgotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDUtMDkgMjI6MTM6NTguMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTItMDUtMDkgMjI6MTY6NDMuNzU5OTY2Njg4ICswMjAwCi1AQCAtMjA4MDMsNyArMjA4MDMs NyBAQCBsb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0Ci0gICAgICAgICAg ICAgICAgIGlzIG9uLgotIHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBz Y3JpcHRzIGlzIG9uLgotIHNhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGlj aCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcwotLSAgICAgICAgICAgIGlzIC91c3IvbG9j YWwuCi0rICAgICAgICAgICAgaXMgJGRkaXIvYXV0by1sb2FkLgotIEBlbmQgc21hbGxleGFtcGxl Ci0gCi0gQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KLUBAIC0yMTAwNiw5ICsyMTAwNiw5IEBAIGdl dCBsb2FkZWQ6Ci0gJCAuL2dkYiAtcSAuL2dkYgotIFJlYWRpbmcgc3ltYm9scyBmcm9tIC9ob21l L3VzZXIvZ2RiL2dkYi4uLmRvbmUuCi0gd2FybmluZzogRmlsZSAiL2hvbWUvdXNlci9nZGIvZ2Ri LWdkYi5nZGIiIGF1dG8tbG9hZGluZyBoYXMgYmVlbgotLSAgICAgICAgIGRlY2xpbmVkIGJ5IHlv dXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCi0rICAgICAgICAg ZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGRpci9hdXRv LWxvYWQiLgotIHdhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHkiIGF1dG8t bG9hZGluZyBoYXMgYmVlbgotLSAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBz YWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCi0rICAgICAgICAgZGVjbGluZWQgYnkgeW91 ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGRpci9hdXRvLWxvYWQiLgotIEBlbmQg c21hbGxleGFtcGxlCi0gCi0gVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3RvcmllcyBpcyBjb250 cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci1AQCAtMjEwNDAsNyArMjEwNDAsMTgg QEAgbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aQotIGhvc3QgcGxhdGZv cm0gZGlyZWN0b3J5IHNlcGFyYXRvciBpbiB1c2UuCi0gQGVuZCB0YWJsZQotIAotLVNldHRpbmcg dGhpcyB2YXJpYWJsZSB0byBAZmlsZXsvfSBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rp b24uCi0rVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byBAZmlsZXskZGRpci9hdXRvLWxvYWR9LiAg VGhlIGRlZmF1bHQgQGNvZGV7c2V0Ci0rYXV0by1sb2FkIHNhZmUtcGF0aH0gdmFsdWUgY2FuIGJl IGFsc28gb3ZlcnJpZGVuIGJ5IEB2YWx1ZXtHREJOfSBjb25maWd1cmF0aW9uCi0rb3B0aW9uIEBv cHRpb257LS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGh9LgotKwotK0FueSB1c2VkIHN0cmluZyBA ZmlsZXskZGRpcn0gd2lsbCBnZXQgcmVwbGFjZWQgYnkgQHZhcntkYXRhLWRpcmVjdG9yeX0gd2hp Y2ggaXMKLStkZXRlcm1pbmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFydHVwIChAcHhyZWZ7RGF0YSBG aWxlc30pLiAgQGZpbGV7JGRkaXJ9IG11c3QgYmUKLStiZSBwbGFjZWQgYXMgYSBkaXJlY3Rvcnkg Y29tcG9uZW50IC0tLSBlaXRoZXIgYWxvbmUgb3IgZGVsaW1pdGVkIGJ5IEBmaWxley99IG9yCi0r QGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFyYXRvcnMsIGRlcGVuZGluZyBvbiB0aGUgaG9zdCBwbGF0 Zm9ybS4KLSsKLStTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7L30gZGlzYWJsZXMgdGhp cyBzZWN1cml0eSBwcm90ZWN0aW9uLAotK2NvcnJlc3BvbmRpbmcgQHZhbHVle0dEQk59IGNvbmZp Z3VyYXRpb24gb3B0aW9uIGlzCi0rQG9wdGlvbnstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0 aH0uCi0gVGhpcyB2YXJpYWJsZSBpcyBzdXBwb3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBk aXJlY3RvcmllcyB3cml0YWJsZSBieSB0aGUKLSBzeXN0ZW0gc3VwZXJ1c2VyIG9ubHkuICBVc2Vy cyBjYW4gYWRkIHRoZWlyIHNvdXJjZSBkaXJlY3RvcmllcyBpbiBpbml0IGZpbGVzIGluCi0gdGhl aXIgaG9tZSBkaXJlY3RvcmllcyAoQHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAg U2VlIGFsc28gZGVwcmVjYXRlZAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9v YnNlcnZlci50ZXhpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi9kb2Mvb2JzZXJ2ZXIudGV4aQkyMDEyLTA1LTA5IDIyOjEzOjU2LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCTIwMTItMDUtMDkg MjI6MTc6MDQuMTE4OTMzOTQ4ICswMjAwCi1AQCAtMjMxLDYgKzIzMSwxMCBAQCB0aGUgY3VycmVu dCB0b3AtbGV2ZWwgcHJvbXB0LgotIEBjIGNvbGxlY3RvciBwYXNzLiAgQ3VycmVudGx5IG9ubHkg QGNvZGV7dHlwZV9tYXJrX3VzZWR9IG1hcmtlciBpcyBzdXBwb3J0ZWQuCi0gQGMgQGVuZCBkZWZ0 eXBlZnVuCi0gCi0rQGRlZnR5cGVmdW4gdm9pZCBnZGJfZGF0YWRpcl9jaGFuZ2VkICh2b2lkKQot K1ZhcmlhYmxlIGdkYl9kYXRhZGlyIGhhcyBiZWVuIHNldC4gIFRoZSB2YWx1ZSBtYXkgbm90IG5l Y2Vzc2FyaWx5IGNoYW5nZS4KLStAZW5kIGRlZnR5cGVmdW4KLSsKLSBAZGVmdHlwZWZ1biB2b2lk IHRlc3Rfbm90aWZpY2F0aW9uIChpbnQgQHZhcntzb21lYXJnfSkKLSBUaGlzIG9ic2VydmVyIGlz IHVzZWQgZm9yIGludGVybmFsIHRlc3RpbmcuICBEbyBub3QgdXNlLiAgCi0gU2VlIHRlc3RzdWl0 ZS9nZGIuZ2RiL29ic2VydmVyLmV4cC4KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90 b3AuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdG9wLmMJ MjAxMi0wNS0wOSAyMjoxMzo1Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi90b3AuYwkyMDEyLTA1LTA5IDIyOjE0OjA0LjgyMzIyMjIwOCArMDIwMAotQEAgLTQ3 LDYgKzQ3LDcgQEAKLSAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0gI2luY2x1ZGUgInB5dGhvbi9w eXRob24uaCIKLSAjaW5jbHVkZSAiaW50ZXJwcy5oIgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgot IAotIC8qIHJlYWRsaW5lIGluY2x1ZGUgZmlsZXMuICAqLwotICNpbmNsdWRlICJyZWFkbGluZS9y ZWFkbGluZS5oIgotQEAgLTE1NjEsNiArMTU2MiwxNSBAQCBzaG93X2V4ZWNfZG9uZV9kaXNwbGF5 X3AgKHN0cnVjdCB1aV9maWxlCi0gCQkJICAgICJhc3luY2hyb25vdXMgZXhlY3V0aW9uIGNvbW1h bmRzIGlzICVzLlxuIiksCi0gCQkgICAgdmFsdWUpOwotIH0KLSsKLSsvKiAic2V0IiBjb21tYW5k IGZvciB0aGUgZ2RiX2RhdGFkaXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0rCi0rc3Rh dGljIHZvaWQKLStzZXRfZ2RiX2RhdGFkaXIgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0rewotKyAgb2JzZXJ2ZXJfbm90aWZ5X2dkYl9kYXRh ZGlyX2NoYW5nZWQgKCk7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gaW5pdF9tYWluICh2b2lkKQot IHsKLUBAIC0xNjY4LDcgKzE2NzgsNyBAQCBVc2UgXCJvblwiIHRvIGVuYWJsZSB0aGUgbm90aWZp Y2F0aW9uLCBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiU2hvdyBHREIncyBkYXRh IGRpcmVjdG9yeS4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJcCi0gV2hlbiBz ZXQsIEdEQiB1c2VzIHRoZSBzcGVjaWZpZWQgcGF0aCB0byBzZWFyY2ggZm9yIGRhdGEgZmlsZXMu IiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXRfZ2RiX2RhdGFkaXIsIE5VTEwsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnNldGxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNob3ds aXN0KTsKLSB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdXRpbHMuYwkyMDEyLTA1LTA5 IDIyOjEzOjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3V0 aWxzLmMJMjAxMi0wNS0wOSAyMjoxNDowNC44MjQyMjIyMDYgKzAyMDAKLUBAIC0zOTI1LDYgKzM5 MjUsNDggQEAgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaQotICAgcmV0 dXJuIHJldHZhbDsKLSB9Ci0gCi0rLyogU3Vic3RpdHV0ZSBhbGwgb2NjdXJlbmNlcyBvZiBzdHJp bmcgRlJPTSBieSBzdHJpbmcgVE8gaW4gKlNUUklOR1AuICAqU1RSSU5HUAotKyAgIG11c3QgY29t ZSBmcm9tIHhyZWFsbG9jLWNvbXBhdGlibGUgYWxsb2NhdG9yIGFuZCBpdCBtYXkgYmUgdXBkYXRl ZC4gIEZST00KLSsgICBuZWVkcyB0byBiZSBkZWxpbWl0ZWQgYnkgSVNfRElSX1NFUEFSQVRPUiAo b3IgYmUgbG9jYXRlZCBhdCB0aGUgc3RhcnQgb3IKLSsgICBlbmQgb2YgKlNUUklOR1AuICAqLwot KwotK3ZvaWQKLStzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoqc3RyaW5ncCwgY29u c3QgY2hhciAqZnJvbSwgY29uc3QgY2hhciAqdG8pCi0rewotKyAgY2hhciAqc3RyaW5nID0gKnN0 cmluZ3AsICpzOwotKyAgY29uc3Qgc2l6ZV90IGZyb21fbGVuID0gc3RybGVuIChmcm9tKTsKLSsg IGNvbnN0IHNpemVfdCB0b19sZW4gPSBzdHJsZW4gKHRvKTsKLSsKLSsgIGZvciAocyA9IHN0cmlu Zzs7KQotKyAgICB7Ci0rICAgICAgcyA9IHN0cnN0ciAocywgZnJvbSk7Ci0rICAgICAgaWYgKHMg PT0gTlVMTCkKLSsJYnJlYWs7Ci0rCi0rICAgICAgaWYgKChzID09IHN0cmluZyB8fCBJU19ESVJf U0VQQVJBVE9SIChzWy0xXSkpCi0rICAgICAgICAgICYmIChzW2Zyb21fbGVuXSA9PSAnXDAnIHx8 IElTX0RJUl9TRVBBUkFUT1IgKHNbZnJvbV9sZW5dKSkpCi0rCXsKLSsJICBjaGFyICpzdHJpbmdf bmV3OwotKwotKwkgIHN0cmluZ19uZXcgPSB4cmVhbGxvYyAoc3RyaW5nLCAoc3RybGVuIChzdHJp bmcpICsgdG9fbGVuICsgMSkpOwotKwotKwkgIC8qIFJlbG9jYXRlIHRoZSBjdXJyZW50IFMgcG9p bnRlci4gICovCi0rCSAgcyA9IHMgLSBzdHJpbmcgKyBzdHJpbmdfbmV3OwotKwkgIHN0cmluZyA9 IHN0cmluZ19uZXc7Ci0rCi0rCSAgLyogUmVwbGFjZSBmcm9tIGJ5IHRvLiAgKi8KLSsJICBtZW1t b3ZlICgmc1t0b19sZW5dLCAmc1tmcm9tX2xlbl0sIHN0cmxlbiAoJnNbZnJvbV9sZW5dKSArIDEp OwotKwkgIG1lbWNweSAocywgdG8sIHRvX2xlbik7Ci0rCi0rCSAgcyArPSB0b19sZW47Ci0rCX0K LSsgICAgICBlbHNlCi0rCXMrKzsKLSsgICAgfQotKwotKyAgKnN0cmluZ3AgPSBzdHJpbmc7Ci0r fQotKwotICNpZmRlZiBIQVZFX1dBSVRQSUQKLSAKLSAjaWZkZWYgU0lHQUxSTQoKZGlmZiAtLWdp dCBhL2dkYi1hdXRvbG9hZC0yMW9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMjFvZjI4LnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MzJlNjcKLS0tIC9kZXYvbnVs bAorKysgYi9nZGItYXV0b2xvYWQtMjFvZjI4LnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK2h0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAwNzkuaHRtbAorCisjIyMg c3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8xMCAyMDoxNzo0NgkxLjE0MjM1CisjIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMi8wNS8xMSAxODowNjoyNgkxLjE0MjM2CisjIyAtMSwzICsxLDEwIEBA CisrMjAxMi0wNS0xMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgorKworKwlNYWtlIGF1dG8tbG9hZCBoYW5kbGUgbXVsdGlwbGUgY29tcG9uZW50cyBvZiBERUJV R19GSUxFX0RJUkVDVE9SWS4KKysJKiBhdXRvLWxvYWQuYyAoYXV0b19sb2FkX29iamZpbGVfc2Ny aXB0KTogUmVtb3ZlIGNoZWNrIGZvciBOVUxMCisrCURFQlVHX0ZJTEVfRElSRUNUT1JZLiAgSGFu ZGxlIG11bHRpcGxlIGNvbXBvbmVudHMgb2YKKysJREVCVUdfRklMRV9ESVJFQ1RPUlkuCisrCisg MjAxMi0wNS0xMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgorIAorIAkqIGR3YXJm MnJlYWQuYyAocmVjdXJzaXZlbHlfd3JpdGVfcHN5bWJvbHMpOiBOZXcgZnVuY3Rpb24uCistLS0g c3JjL2dkYi9hdXRvLWxvYWQuYwkyMDEyLzA1LzA2IDE1OjMxOjAyCTEuNgorKysrIHNyYy9nZGIv YXV0by1sb2FkLmMJMjAxMi8wNS8xMSAxODowNjoyOAkxLjcKK0BAIC01ODcsMTcgKzU4NywyOSBA QAorICAgaW5wdXQgPSBmb3BlbiAoZmlsZW5hbWUsICJyIik7CisgICBkZWJ1Z2ZpbGUgPSBmaWxl bmFtZTsKKyAKKy0gIGlmICghaW5wdXQgJiYgZGVidWdfZmlsZV9kaXJlY3RvcnkpCisrICBpZiAo IWlucHV0KQorICAgICB7CistICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUg c2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLworLSAgICAgIGRlYnVnZmlsZSA9IHht YWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUpCistCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVfZGly ZWN0b3J5KSArIDEpOworLSAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVj dG9yeSk7CistICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQg YSAiLyIgaGVyZS4gICovCistICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKKy0K Ky0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworLSAgICAgIGlucHV0ID0g Zm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKKysgICAgICBjaGFyICpkZWJ1Z2RpcjsKKysgICAgICBW RUMgKGNoYXJfcHRyKSAqZGVidWdkaXJfdmVjOworKyAgICAgIGludCBpeDsKKysKKysgICAgICBk ZWJ1Z2Rpcl92ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGRlYnVnX2ZpbGVfZGlyZWN0 b3J5KTsKKysgICAgICBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMgKGRlYnVnZGlyX3Zl Yyk7CisrCisrICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgZGVidWdk aXJfdmVjLCBpeCwgZGVidWdkaXIpOyArK2l4KQorKwl7CisrCSAgLyogQWxzbyB0cnkgdGhlIHNh bWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLworKwkgIGRl YnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZGVidWdkaXIpICsgc3RybGVuIChmaWxlbmFtZSkg KyAxKTsKKysJICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdkaXIpOworKworKwkgIC8qIEZJTEVO QU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLworKwkgIHN0 cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7CisrCisrCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwg ZGVidWdmaWxlKTsKKysJICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7CisrCSAgaWYg KGlucHV0ICE9IE5VTEwpCisrCSAgICBicmVhazsKKysJfQorICAgICB9CisgCisgICBpZiAoIWlu cHV0ICYmIGdkYl9kYXRhZGlyKQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0yMm9mMjIucGF0 Y2ggYi9nZGItYXV0b2xvYWQtMjJvZjIyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA3Y2VkNjI0Li4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0yMm9mMjIucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw0ODIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTItMDUvbXNnMDAzMDEuaHRtbAotU3ViamVjdDogUmU6IFtwYXRjaCAyLzJd IEltcGxlbWVudCBtdWx0aS1jb21wb25lbnQgLS13aXRoLWF1dG8tbG9hZC1kaXIKLQotT24gV2Vk LCAwOSBNYXkgMjAxMiAxOTo0NzowNyArMDIwMCwgRWxpIFphcmV0c2tpaSB3cm90ZToKLT4gPiBE YXRlOiBXZWQsIDkgTWF5IDIwMTIgMTc6NDg6NDcgKzAyMDAKLT4gPiBGcm9tOiBKYW4gS3JhdG9j aHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLT4gPiAKLT4gPiArc2V0IGF1dG8tbG9h ZCBzY3JpcHRzLWRpcmVjdG9yeSA8ZGlyMT5bOjxkaXIyPi4uLl0KLT4gPiArICBTZXQgYSBsaXN0 IG9mIGRpcmVjdG9yaWVzIHdpdGggYXV0by1sb2FkZWQgc2NyaXB0cy4gIEF1dG9tYXRpY2FsbHkK LT4gCi0+ICAgIlNldCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1 dG8tbG9hZGVkIHNjcmlwdHMuIgotCi1PSy4KLQotCi0+ID4gK1NldCB0aGUgbGlzdCBvZiBkaXJl Y3RvcmllcyB3aXRoIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLT4gPiArU2hvdyB0aGUg bGlzdCBvZiBkaXJlY3RvcmllcyB3aXRoIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLT4g Ci0+IExpa2V3aXNlIGhlcmUuCi0KLUJ1dCB1c2VkICJ0aGUiLCAidGhlIiBpcyBwcmVzZW50L3Jl dmlld2VkIGluIG1hbnkgb3RoZXIgbG9jYXRpb25zIGluIGNvZGUuCi0KLQotPiA+ICttYXkgYmUg ZGVsaW1pdGVkIGJ5IHRoZSBob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBhcmF0b3IgaW4gdXNl LgotPiAKLT4gSSBiZWxpZXZlIHRoZSBjb3JyZWN0IHRlcm0gaXMgInBhdGggc2VwYXJhdG9yIi4K LQotZG9uZS4KLQotCi0+IEkgc3VnZ2VzdCB0byBzYXkKLT4gCi0+ICAgKEBzYW1wezp9IG9uIFVu aXgsIEBzYW1wezt9IG9uIFdpbmRvd3MgYW5kIERPUykKLT4gCi0+IGZvciBjbGFyaXR5IGhlcmUs IGFuZCBub3QgZnVydGhlciBkb3duLgotCi1Vc2VkLCB3aXRoIE1TLSBwcmVmaXhlcy4KLQotCi0+ IAotPiA+ICtFYWNoIGVudHJ5IGhlcmUgbmVlZHMgdG8gYmUgY292ZXJlZCBhbHNvIGJ5IHRoZSBz ZWN1cml0eSBzZXR0aW5nCi0+ID4gK0B4cmVme3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofS4KLT4g ICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCi0+IFlvdSB3YW50ICIoQHB4cmVmey4u Ln0pIiBoZXJlLgotCi1Vc2VkOgotRWFjaCBlbnRyeSBoZXJlIG5lZWRzIHRvIGJlIGNvdmVyZWQg YWxzbyBieSB0aGUgc2VjdXJpdHkgc2V0dGluZwotQGNvZGV7c2V0IGF1dG8tbG9hZCBzYWZlLXBh dGh9IChAcHhyZWZ7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9KS4KLQotCi1UaGFua3MsCi1KYW4K LQotCi1nZGIvCi0yMDEyLTA1LTA5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0KLQlJbXBsZW1lbnQgbXVsdGktY29tcG9uZW50IC0td2l0aC1hdXRvLWxvYWQt ZGlyLgotCSogTkVXUyAoc2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeSwgLS13aXRoLWF1 dG8tbG9hZC1kaXIpOiBOZXcKLQllbnRyaWVzLgotCSgtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0 aCk6IFVwZGF0ZSB0aGUgZGVmYXVsdCB2YWx1ZSBkZXNjcmlwdGlvbi4KLQkqIGF1dG8tbG9hZC5j IChhdXRvX2xvYWRfZGlyLCBzZXRfYXV0b19sb2FkX2Rpciwgc2hvd19hdXRvX2xvYWRfZGlyKToK LQlOZXcuCi0JKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IEFkZCBERUJVR19BVVRPX0xPQUQg b3V0cHV0LiAgUmVtb3ZlCi0JR0RCX0RBVEFESVIgTlVMTCBjaGVjay4gIFJlcGxhY2UgR0RCX0RB VEFESVIvYXV0by1sb2FkIGJ5Ci0JQVVUT19MT0FEX0RJUi4gIFN1cHBvcnQgJGRkaXIgYW5kIG11 bHRpcGxlIGNvbXBvbmVudHMgaW4gaXQuCi0JKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IEluaXRp YWxpemUgYWxzbyBhdXRvX2xvYWRfZGlyLiAgSW5zdGFsbCBuZXcKLQkic2V0IGF1dG8tbG9hZCBz Y3JpcHRzLWRpcmVjdG9yeSIuCi0JKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCi0JKiBjb25maWd1 cmU6IFJlZ2VuZXJhdGUuCi0JKiBjb25maWd1cmUuYWMgKC0td2l0aC1hdXRvLWxvYWQtZGlyKTog TmV3IGNvbmZpZ3VyZSBvcHRpb24uCi0JKC0tYXV0by1sb2FkLXNhZmUtcGF0aCk6IENoYW5nZSB0 aGUgZGVmYXVsdCB0byAtLXdpdGgtYXV0by1sb2FkLWRpci4KLQotZ2RiL2RvYy8KLTIwMTItMDUt MDkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUltcGxl bWVudCBtdWx0aS1jb21wb25lbnQgLS13aXRoLWF1dG8tbG9hZC1kaXIuCi0JKiBnZGIudGV4aW5m byAoQXV0by1sb2FkaW5nKTogTmV3IHJlZmVyZW5jZXMKLQlmb3IgJ3NldCBhdXRvLWxvYWQgc2Ny aXB0cy1kaXJlY3RvcnknCi0JYW5kICdzaG93IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeScu Ci0JKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBEZXNjcmliZSB0aGUgbmV3IGRlZmF1bHQuICBN b3ZlICRkZGlyCi0Jc3Vic3RpdHVhdGlvbiByZWZlcmVuY2UgdG8gJ29iamZpbGUtZ2RiLnB5IGZp bGUnLgotCShvYmpmaWxlLWdkYi5weSBmaWxlKTogRGVzY3JpYmUgc2NyaXB0LW5hbWUgYWxpYXMu ICBDaGFuZ2UgcmVhbC1uYW1lIHRvCi0Jc2NyaXB0LW5hbWUuICBEZXNjcmliZSBuZXcgJ3NldCBh dXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknCi0JYW5kICdzaG93IGF1dG8tbG9hZCBzY3JpcHRz LWRpcmVjdG9yeScuCi0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDUtMDkg MjI6MTQ6MjkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVX UwkyMDEyLTA1LTA5IDIyOjE3OjE2LjQxNjkxNDE4NCArMDIwMAotQEAgLTY3LDYgKzY3LDEyIEBA IHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIG9ufG9mZgotIHNob3cgYXV0by1sb2FkIGxpYnRo cmVhZC1kYgotICAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhy ZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeS4KLSAKLStzZXQgYXV0by1sb2FkIHNjcmlwdHMt ZGlyZWN0b3J5IDxkaXIxPls6PGRpcjI+Li4uXQotKyAgU2V0IGEgbGlzdCBvZiBkaXJlY3Rvcmll cyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy4KLSsgIEF1dG9tYXRpY2Fs bHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzIGFuZCBHREIgc2NyaXB0cyBhcmUgbG9jYXRlZCBpbiBv bmUKLSsgIG9mIHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uCi0rICBUaGUg ZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBkaWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBob3N0IHBs YXRmb3JtLgotKwotIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIDxkaXIxPls6PGRpcjI+Li4uXQot IHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAotICAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBm cm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLgotQEAgLTc4LDEwICs4NCwx NCBAQCBzaG93IGRlYnVnIGF1dG8tbG9hZAotIAotICogTmV3IGNvbmZpZ3VyZSBvcHRpb25zCi0g Ci0rLS13aXRoLWF1dG8tbG9hZC1kaXIKLSsgIENvbmZpZ3VyZSBkZWZhdWx0IHZhbHVlIGZvciB0 aGUgJ3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknCi0rICBzZXR0aW5nIGFib3ZlLiAg SXQgZGVmYXVsdHMgdG8gJyRkZGlyL2F1dG8tbG9hZCcsICRkZGlyIHJlcHJlc2VudGluZwotKyAg dGhlIHZhbHVlIG9mIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWdkYi1kYXRhZGlyLgotKwotIC0t d2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCi0gICBDb25maWd1cmUgZGVmYXVsdCB2YWx1ZSBmb3Ig dGhlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0dGluZwotLSAgYWJvdmUuICBJdCBkZWZh dWx0cyB0byAnJGRkaXIvYXV0by1sb2FkJywgJGRkaXIgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZQot LSAgb2YgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtZ2RiLWRhdGFkaXIuCi0rICBhYm92ZS4gIEl0 IGRlZmF1bHRzIHRvIHRoZSAtLXdpdGgtYXV0by1sb2FkLWRpciBzZXR0aW5nLgotIAotIC0td2l0 aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCi0gICBTZXQgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRo JyB0byAnLycsIGVmZmVjdGl2ZWx5IGRpc2FibGluZyB0aGlzCi1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDUtMDkgMjI6MTQ6MDQuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNS0wOSAy MjoxNzoxNi40MTc5MTQxODIgKzAyMDAKLUBAIC0xMDgsNiArMTA4LDM1IEBAIHNob3dfYXV0b19s b2FkX2xvY2FsX2dkYmluaXQgKHN0cnVjdCB1aV8KLSAJCSAgICB2YWx1ZSk7Ci0gfQotIAotKy8q IERpcmVjdG9yeSBsaXN0IGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLiAg SXQgaXMgbm90IGNoZWNrZWQKLSsgICBmb3IgYWJzb2x1dGUgcGF0aHMgYnV0IHRoZXkgYXJlIHN0 cm9uZ2x5IHJlY29tbWVuZGVkLiAgSXQgaXMgaW5pdGlhbGl6ZWQgYnkKLSsgICBfaW5pdGlhbGl6 ZV9hdXRvX2xvYWQuICAqLwotK3N0YXRpYyBjaGFyICphdXRvX2xvYWRfZGlyOwotKwotKy8qICJz ZXQiIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfZGlyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUu ICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2F1dG9fbG9hZF9kaXIgKGNoYXIgKmFyZ3MsIGlu dCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0rewotKyAgLyogU2V0dGlu ZyB0aGUgdmFyaWFibGUgdG8gIiIgcmVzZXRzIGl0IHRvIHRoZSBjb21waWxlIHRpbWUgZGVmYXVs dHMuICAqLwotKyAgaWYgKGF1dG9fbG9hZF9kaXJbMF0gPT0gJ1wwJykKLSsgICAgewotKyAgICAg IHhmcmVlIChhdXRvX2xvYWRfZGlyKTsKLSsgICAgICBhdXRvX2xvYWRfZGlyID0geHN0cmR1cCAo QVVUT19MT0FEX0RJUik7Ci0rICAgIH0KLSt9Ci0rCi0rLyogInNob3ciIGNvbW1hbmQgZm9yIHRo ZSBhdXRvX2xvYWRfZGlyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0rc2hvd19hdXRvX2xvYWRfZGlyIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21f dHR5LAotKwkJICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1 ZSkKLSt7Ci0rICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJMaXN0IG9mIGRpcmVjdG9yaWVz IGZyb20gd2hpY2ggdG8gbG9hZCAiCi0rCQkJICAgICJhdXRvLWxvYWRlZCBzY3JpcHRzIGlzICVz LlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSsKLSAvKiBEaXJlY3RvcnkgbGlzdCBzYWZlIHRv IGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuICBJdCBpcyBub3QgY2hlY2tlZCBmb3IKLSAgICBhYnNv bHV0ZSBwYXRocyBidXQgdGhleSBhcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQuICBJdCBpcyBpbml0 aWFsaXplZCBieQotICAgIF9pbml0aWFsaXplX2F1dG9fbG9hZC4gICovCi1AQCAtNjAyLDYgKzYz MSw5IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKLSAKLSAgIGlu cHV0ID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOwotICAgZGVidWdmaWxlID0gZmlsZW5hbWU7Ci0r ICBpZiAoZGVidWdfYXV0b19sb2FkKQotKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csIF8oImF1dG8tbG9hZDogQXR0ZW1wdGVkIGZpbGUgXCIlc1wiICVzLlxuIiksCi0rCQkJZGVi dWdmaWxlLCBpbnB1dCA/IF8oImV4aXN0cyIpIDogXygiZG9lcyBub3QgZXhpc3QiKSk7Ci0gCi0g ICBpZiAoIWlucHV0KQotICAgICB7Ci1AQCAtNjEyLDYgKzY0NCwxMiBAQCBhdXRvX2xvYWRfb2Jq ZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCi0gICAgICAgZGVidWdkaXJfdmVjID0gZGlybmFt ZXNfdG9fY2hhcl9wdHJfdmVjIChkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0gICAgICAgbWFrZV9j bGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChkZWJ1Z2Rpcl92ZWMpOwotIAotKyAgICAgIGlmIChk ZWJ1Z19hdXRvX2xvYWQpCi0rCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkg ICAgXygiYXV0by1sb2FkOiBTZWFyY2hpbmcgJ3NldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeScgIgot KwkJCSAgICAgICJwYXRoIFwiJXNcIi5cbiIpLAotKwkJCSAgICBkZWJ1Z19maWxlX2RpcmVjdG9y eSk7Ci0rCi0gICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgZGVidWdk aXJfdmVjLCBpeCwgZGVidWdkaXIpOyArK2l4KQotIAl7Ci0gCSAgLyogQWxzbyB0cnkgdGhlIHNh bWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLwotQEAgLTYy MywyNCArNjYxLDUzIEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUK LSAKLSAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotIAkgIGlucHV0ID0gZm9w ZW4gKGRlYnVnZmlsZSwgInIiKTsKLSsJICBpZiAoZGVidWdfYXV0b19sb2FkKQotKwkgICAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVtcHRlZCBmaWxl ICIKLSsJCQkJCSAgICAgICJcIiVzXCIgJXMuXG4iKSwKLSsJCQkJZGVidWdmaWxlLAotKwkJCQlp bnB1dCA/IF8oImV4aXN0cyIpIDogXygiZG9lcyBub3QgZXhpc3QiKSk7Ci0gCSAgaWYgKGlucHV0 ICE9IE5VTEwpCi0gCSAgICBicmVhazsKLSAJfQotICAgICB9Ci0gCi0tICBpZiAoIWlucHV0ICYm IGdkYl9kYXRhZGlyKQotKyAgaWYgKCFpbnB1dCkKLSAgICAgewotKyAgICAgIFZFQyAoY2hhcl9w dHIpICp2ZWM7Ci0rICAgICAgaW50IGl4OwotKyAgICAgIGNoYXIgKmRpcjsKLSsKLSAgICAgICAv KiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IG9mIGdkYidzIGRhdGEK LSAJIGRpcmVjdG9yeS4gICovCi0tICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChn ZGJfZGF0YWRpcikgKyBzdHJsZW4gKGZpbGVuYW1lKQotLQkJCSAgICsgc3RybGVuICgiL2F1dG8t bG9hZCIpICsgMSk7Ci0tICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsKLS0g ICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi9hdXRvLWxvYWQiKTsKLS0gICAgICAvKiBGSUxFTkFN RSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KLS0gICAgICBz dHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOwotIAotLSAgICAgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIGRlYnVnZmlsZSk7Ci0tICAgICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOwot KyAgICAgIHZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX2Rpcik7Ci0r ICAgICAgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjICh2ZWMpOwotKwotKyAgICAgIGlm IChkZWJ1Z19hdXRvX2xvYWQpCi0rCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgXygi YXV0by1sb2FkOiBTZWFyY2hpbmcgJ3NldCBhdXRvLWxvYWQgIgotKwkJCQkJICAic2NyaXB0cy1k aXJlY3RvcnknIHBhdGggXCIlc1wiLlxuIiksCi0rCQkJICAgIGF1dG9fbG9hZF9kaXIpOwotKwot KyAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIHZlYywgaXgsIGRpcik7 ICsraXgpCi0rCXsKLSsJICBkZWJ1Z2ZpbGUgPSB4c3RyZHVwIChkaXIpOwotKwkgIHN1YnN0aXR1 dGVfcGF0aF9jb21wb25lbnQgKCZkZWJ1Z2ZpbGUsICIkZGRpciIsIGdkYl9kYXRhZGlyKTsKLSsJ ICBkZWJ1Z2ZpbGUgPSB4cmVhbGxvYyAoZGVidWdmaWxlLCAoc3RybGVuIChkZWJ1Z2ZpbGUpCi0r CQkJCQkgICAgKyBzdHJsZW4gKGZpbGVuYW1lKSArIDEpKTsKLSsKLSsJICAvKiBGSUxFTkFNRSBp cyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KLSsJICBzdHJjYXQg KGRlYnVnZmlsZSwgZmlsZW5hbWUpOwotKwotKwkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVn ZmlsZSk7Ci0rCSAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOwotKwkgIGlmIChkZWJ1 Z19hdXRvX2xvYWQpCi0rCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oImF1 dG8tbG9hZDogQXR0ZW1wdGVkIGZpbGUgIgotKwkJCQkJICAgICAgIlwiJXNcIiAlcy5cbiIpLAot KwkJCQlkZWJ1Z2ZpbGUsCi0rCQkJCWlucHV0ID8gXygiZXhpc3RzIikgOiBfKCJkb2VzIG5vdCBl eGlzdCIpKTsKLSsJICBpZiAoaW5wdXQgIT0gTlVMTCkKLSsJICAgIGJyZWFrOwotKwl9Ci0gICAg IH0KLSAKLSAgIGlmIChpbnB1dCkKLUBAIC0xMDU2LDYgKzExMjMsMTkgQEAgVGhpcyBvcHRpb25z IGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZgotIFVzYWdlOiBpbmZvIGF1dG8tbG9hZCBsb2Nh bC1nZGJpbml0IiksCi0gCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKLSAKLSsg IGF1dG9fbG9hZF9kaXIgPSB4c3RyZHVwIChBVVRPX0xPQURfRElSKTsKLSsgIGFkZF9zZXRzaG93 X29wdGlvbmFsX2ZpbGVuYW1lX2NtZCAoInNjcmlwdHMtZGlyZWN0b3J5IiwgY2xhc3Nfc3VwcG9y dCwKLSsJCQkJICAgICAmYXV0b19sb2FkX2RpciwgXygiXAotK1NldCB0aGUgbGlzdCBvZiBkaXJl Y3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy4iKSwgXygiXAot K1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9h ZGVkIHNjcmlwdHMuIiksIF8oIlwKLStBdXRvbWF0aWNhbGx5IGxvYWRlZCBQeXRob24gc2NyaXB0 cyBhbmQgR0RCIHNjcmlwdHMgYXJlIGxvY2F0ZWQgaW4gb25lIG9mIHRoZVxuXAotK2RpcmVjdG9y aWVzIGxpc3RlZCBieSB0aGlzIG9wdGlvbi4gIFRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgZm9yIHRo ZSBraW5kcyBvZlxuXAotK3NjcmlwdHMgaGF2aW5nICdzZXQgYXV0by1sb2FkIC4uLiBvZmYnLiAg RGlyZWN0b3JpZXMgbGlzdGVkIGhlcmUgbmVlZCB0byBiZVxuXAotK3ByZXNlbnQgYWxzbyBpbiB0 aGUgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBvcHRpb24uIiksCi0rCQkJCSAgICAgc2V0X2F1 dG9fbG9hZF9kaXIsIHNob3dfYXV0b19sb2FkX2RpciwKLSsJCQkJICAgICBhdXRvX2xvYWRfc2V0 X2NtZGxpc3RfZ2V0ICgpLAotKwkJCQkgICAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgp KTsKLSsKLSAgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChBVVRPX0xPQURfU0FGRV9Q QVRIKTsKLSAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKLSAgIGFkZF9zZXRz aG93X29wdGlvbmFsX2ZpbGVuYW1lX2NtZCAoInNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCi1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWcuaW4JMjAxMi0wNS0wOSAyMjoxNDow NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcuaW4J MjAxMi0wNS0wOSAyMjoxNzoxNi40MTc5MTQxODIgKzAyMDAKLUBAIC03LDYgKzcsOSBAQAotIC8q IERlZmluZSBpZiBidWlsZGluZyB1bml2ZXJzYWwgKGludGVybmFsIGhlbHBlciBtYWNybykgKi8K LSAjdW5kZWYgQUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxECi0gCi0rLyogRGlyZWN0b3JpZXMgZnJv bSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMuICovCi0rI3VuZGVmIEFVVE9fTE9B RF9ESVIKLSsKLSAvKiBEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMu ICovCi0gI3VuZGVmIEFVVE9fTE9BRF9TQUZFX1BBVEgKLSAKLUluZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA1LTA5IDIyOjE2OjE5LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA1LTA5IDIyOjE5OjE5 LjE5MjcxNjc5OCArMDIwMAotQEAgLTk1NSw2ICs5NTUsNyBAQCB3aXRoX3NlcGFyYXRlX2RlYnVn X2RpcgotIHdpdGhfZ2RiX2RhdGFkaXIKLSB3aXRoX3JlbG9jYXRlZF9zb3VyY2VzCi0gd2l0aF9y cG0KLSt3aXRoX2F1dG9fbG9hZF9kaXIKLSB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgKLSBlbmFi bGVfdGFyZ2V0cwotIGVuYWJsZV82NF9iaXRfYmZkCi1AQCAtMTY2Nyw5ICsxNjY4LDEzIEBAIE9w dGlvbmFsIFBhY2thZ2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxs eSByZWxvY2F0ZSB0aGlzIHBhdGggZm9yIHNvdXJjZSBmaWxlcwotICAgLS13aXRoLXJwbSAgICAg ICAgICAgICAgcXVlcnkgcnBtIGRhdGFiYXNlIGZvciBtaXNzaW5nIGRlYnVnaW5mb3MgKHllcy9u bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZi4gYXV0bz1saWJycG0uc28pCi0rICAt LXdpdGgtYXV0by1sb2FkLWRpcj1QQVRICi0rICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJl Y3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cywKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgIHVzZSAnJGRkaXInIGZvciAtZGF0YS1kaXJlY3RvcnkgWyRkZGly L2F1dG8tbG9hZF0KLSAgIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEgKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBm aWxlcywgdXNlCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRpciBmb3IgLS13aXRoLWdk Yi1kYXRhZGlyIHBhdGggWyRkZGlyL2F1dG8tbG9hZF0KLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICRkZGlyIGZvciAtLXdpdGgtZ2RiLWRhdGFkaXIgcGF0aAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgWy0td2l0aC1hdXRvLWxvYWQtZGlyXQotICAgLS13aXRob3V0LWF1dG8tbG9hZC1z YWZlLXBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCByZXN0cmljdCBhdXRv LWxvYWRlZCBmaWxlcyBsb2NhdGlvbnMKLSAgIC0td2l0aC1saWJ1bndpbmQgICAgICAgIHVzZSBs aWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBvcnQKLUBAIC04NDgzLDYgKzg0ODgsMzEgQEAg JGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJFJQTV9QS0dfRVJSTwotICAgZmkKLSBmaQotIAot K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRl ZmF1bHQgYXV0by1sb2FkIGRpcmVjdG9yeSIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IGRlZmF1bHQgYXV0by1sb2FkIGRpcmVjdG9yeS4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hl dGhlciAtLXdpdGgtYXV0by1sb2FkLWRpciB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2F1 dG9fbG9hZF9kaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9hdXRvX2xv YWRfZGlyOwotK2Vsc2UKLSsgIHdpdGhfYXV0b19sb2FkX2Rpcj0nJGRkaXIvYXV0by1sb2FkJwot K2ZpCi0rCi0rZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdzL1sk XWRkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotKwotKyAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUg JiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCi0rICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9 IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCi0rICBhY19kZWZpbmVfZGlyPWBldmFs IGVjaG8gJGVzY2FwZV9kaXJgCi0rICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGFjX2RlZmlu ZV9kaXJgCi0rCi0rY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgQVVUT19MT0FE X0RJUiAiJGFjX2RlZmluZV9kaXIiCi0rX0FDRU9GCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2F1dG9fbG9hZF9kaXIiID4mNQot KyRhc19lY2hvICIkd2l0aF9hdXRvX2xvYWRfZGlyIiA+JjY7IH0KLSsKLSB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9h ZCBzYWZlLXBhdGgiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8t bG9hZCBzYWZlLXBhdGguLi4gIiA+JjY7IH0KLSAKLUBAIC04NDkyLDcgKzg1MjIsNyBAQCBpZiB0 ZXN0ICIke3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCtzZXR9Ci0gICAgICB3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGg9Ii8iCi0gICAgICBmaQotIGVsc2UKLS0gIHdpdGhfYXV0b19sb2FkX3NhZmVf cGF0aD0nJGRkaXIvYXV0by1sb2FkJwotKyAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkd2l0 aF9hdXRvX2xvYWRfZGlyIgotIGZpCi0gCi0gZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoIHwgc2VkICdzL1skXWRkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTItMDUtMDkgMjI6MTY6 MTAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJl LmFjCTIwMTItMDUtMDkgMjI6MTk6MDguMzkwNzM0MTY3ICswMjAwCi1AQCAtMzM5LDE2ICszMzks MjYgQEAgZXh0ZXJuIHJwbWRiTWF0Y2hJdGVyYXRvciBycG10c0luaXRJdGVyYQotICAgZmkKLSBm aQotICAKLStBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJlY3Rvcnld KQotK0FDX0FSR19XSVRIKGF1dG8tbG9hZC1kaXIsCi0rQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1h dXRvLWxvYWQtZGlyPVBBVEhdLAotKyAgW2RpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBh dXRvLWxvYWRlZCBzY3JpcHRzLCB1c2UgJyRkZGlyJyBmb3IgLWRhdGEtZGlyZWN0b3J5IEA8OkAk ZGRpci9hdXRvLWxvYWRAOj5AXSksLAotKyAgW3dpdGhfYXV0b19sb2FkX2Rpcj0nJGRkaXIvYXV0 by1sb2FkJ10pCi0rZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdz L1tbJF1dZGRpclw+L1xcXFxcXFxcXFxcXCYvZydgCi0rQUNfREVGSU5FX0RJUihBVVRPX0xPQURf RElSLCBlc2NhcGVfZGlyLAotKwkgICAgICBbRGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2Fk IGF1dG8tbG9hZGVkIHNjcmlwdHMuXSkKLStBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xvYWRf ZGlyXSkKLSsKLSBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBh dGhdKQotIEFDX0FSR19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgsCi0gQVNfSEVMUF9TVFJJTkco Wy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLAotLSAgW2RpcmVjdG9yaWVzIHNhZmUg dG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcywgdXNlICRkZGlyIGZvciAtLXdpdGgtZ2RiLWRhdGFk aXIgcGF0aCBAPDpAJGRkaXIvYXV0by1sb2FkQDo+QF0pCi0rICBbZGlyZWN0b3JpZXMgc2FmZSB0 byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLCB1c2UgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRp ciBwYXRoIEA8OkAtLXdpdGgtYXV0by1sb2FkLWRpckA6PkBdKQotIEFTX0hFTFBfU1RSSU5HKFst LXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aF0sCi0gICAgICAgICAgICAgICAgW2RvIG5vdCBy ZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnNdKSwKLSAgICAgW2lmIHRlc3QgIiR3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgotICAgICAgd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoPSIvIgotICAgICAgZmldLAotLVt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9 JyRkZGlyL2F1dG8tbG9hZCddKQotK1t3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiR3aXRoX2F1 dG9fbG9hZF9kaXIiXSkKLSBlc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3Bh dGggfCBzZWQgJ3MvW1skXV1kZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKLSBBQ19ERUZJTkVfRElS KEFVVE9fTE9BRF9TQUZFX1BBVEgsIGVzY2FwZV9kaXIsCi0gCSAgICAgIFtEaXJlY3RvcmllcyBz YWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKLUluZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9kb2MvZ2RiLnRleGluZm8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA1LTA5IDIyOjE2OjQzLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEy LTA1LTA5IDIyOjE4OjM4LjI5NDc4MjU0OSArMDIwMAotQEAgLTIwODA0LDYgKzIwODA0LDggQEAg bG9jYWwtZ2RiaW5pdDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdAotIHB5dGhvbi1zY3JpcHRz OiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIG9uLgotIHNhZmUtcGF0aDogIExp c3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxl cwotICAgICAgICAgICAgIGlzICRkZGlyL2F1dG8tbG9hZC4KLStzY3JpcHRzLWRpcmVjdG9yeTog IExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlw dHMKLSsgICAgICAgICAgICAgICAgICAgIGlzICRkZGlyL2F1dG8tbG9hZC4KLSBAZW5kIHNtYWxs ZXhhbXBsZQotIAotIEBhbmNob3J7aW5mbyBhdXRvLWxvYWR9Ci1AQCAtMjA4NjQsNiArMjA4NjYs MTAgQEAgVGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzCi0gQHRhYiBTaG93 IHNldHRpbmcgb2YgQHZhbHVle0dEQk59IFB5dGhvbiBzY3JpcHRzLgotIEBpdGVtIEB4cmVme2lu Zm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KLSBAdGFiIFNob3cgc3RhdGUgb2YgQHZhbHVl e0dEQk59IFB5dGhvbiBzY3JpcHRzLgotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgc2NyaXB0 cy1kaXJlY3Rvcnl9LgotK0B0YWIgQ29udHJvbCBmb3IgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVk IHNjcmlwdHMgbG9jYXRpb24uCi0rQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgc2NyaXB0cy1k aXJlY3Rvcnl9LgotK0B0YWIgU2hvdyBAdmFsdWV7R0RCTn0gYXV0by1sb2FkZWQgc2NyaXB0cyBs b2NhdGlvbi4KLSBAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgotIEB0 YWIgQ29udHJvbCBmb3IgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSBAaXRl bSBAeHJlZntzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KLUBAIC0yMTA0MCwxNSArMjEw NDYsMTMgQEAgbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aQotIGhvc3Qg cGxhdGZvcm0gZGlyZWN0b3J5IHNlcGFyYXRvciBpbiB1c2UuCi0gQGVuZCB0YWJsZQotIAotLVRo aXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gQGZpbGV7JGRkaXIvYXV0by1sb2FkfS4gIFRoZSBkZWZh dWx0IEBjb2Rle3NldAotK1RoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gd2hhdCBAY29kZXstLXdp dGgtYXV0by1sb2FkLWRpcn0gaGFzIGJlZW4gY29uZmlndXJlZAotK3RvIChAcHhyZWZ7d2l0aC1h dXRvLWxvYWQtZGlyfSkuICBAZmlsZXskZGRpcn0gc3Vic3RpdHVhdGlvbiBhcHBsaWVzIHRoZSBz YW1lCi0rYXMgZm9yIEB4cmVme3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3Rvcnl9LgotK1Ro ZSBkZWZhdWx0IEBjb2Rle3NldAotIGF1dG8tbG9hZCBzYWZlLXBhdGh9IHZhbHVlIGNhbiBiZSBh bHNvIG92ZXJyaWRlbiBieSBAdmFsdWV7R0RCTn0gY29uZmlndXJhdGlvbgotIG9wdGlvbiBAb3B0 aW9uey0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRofS4KLSAKLS1BbnkgdXNlZCBzdHJpbmcgQGZp bGV7JGRkaXJ9IHdpbGwgZ2V0IHJlcGxhY2VkIGJ5IEB2YXJ7ZGF0YS1kaXJlY3Rvcnl9IHdoaWNo IGlzCi0tZGV0ZXJtaW5lZCBhdCBAdmFsdWV7R0RCTn0gc3RhcnR1cCAoQHB4cmVme0RhdGEgRmls ZXN9KS4gIEBmaWxleyRkZGlyfSBtdXN0IGJlCi0tYmUgcGxhY2VkIGFzIGEgZGlyZWN0b3J5IGNv bXBvbmVudCAtLS0gZWl0aGVyIGFsb25lIG9yIGRlbGltaXRlZCBieSBAZmlsZXsvfSBvcgotLUBm aWxle1x9IGRpcmVjdG9yeSBzZXBhcmF0b3JzLCBkZXBlbmRpbmcgb24gdGhlIGhvc3QgcGxhdGZv cm0uCi0tCi0gU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRpc2FibGVzIHRoaXMg c2VjdXJpdHkgcHJvdGVjdGlvbiwKLSBjb3JyZXNwb25kaW5nIEB2YWx1ZXtHREJOfSBjb25maWd1 cmF0aW9uIG9wdGlvbiBpcwotIEBvcHRpb257LS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGh9 LgotQEAgLTI1MTM1LDcgKzI1MTM5LDcgQEAgcmVnaXN0ZXJpbmcgb2JqZmlsZS1zcGVjaWZpYyBw cmV0dHktcHJpbgotIEBjaW5kZXggQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9Ci0gCi0gV2hl biBhIG5ldyBvYmplY3QgZmlsZSBpcyByZWFkLCBAdmFsdWV7R0RCTn0gbG9va3MgZm9yCi0tYSBm aWxlIG5hbWVkIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSwKLSthIGZpbGUgbmFtZWQgQGZp bGV7QHZhcntvYmpmaWxlfS1nZGIucHl9ICh3ZSBjYWxsIGl0IEB2YXJ7c2NyaXB0LW5hbWV9IGJl bG93KSwKLSB3aGVyZSBAdmFye29iamZpbGV9IGlzIHRoZSBvYmplY3QgZmlsZSdzIHJlYWwgbmFt ZSwgZm9ybWVkIGJ5IGVuc3VyaW5nCi0gdGhhdCB0aGUgZmlsZSBuYW1lIGlzIGFic29sdXRlLCBm b2xsb3dpbmcgYWxsIHN5bWxpbmtzLCBhbmQgcmVzb2x2aW5nCi0gQGNvZGV7Ln0gYW5kIEBjb2Rl ey4ufSBjb21wb25lbnRzLiAgSWYgdGhpcyBmaWxlIGV4aXN0cyBhbmQgaXMKLUBAIC0yNTE0Mywx NCArMjUxNDcsNDIgQEAgcmVhZGFibGUsIEB2YWx1ZXtHREJOfSB3aWxsIGV2YWx1YXRlIGl0Ci0g Ci0gSWYgdGhpcyBmaWxlIGRvZXMgbm90IGV4aXN0LCBhbmQgaWYgdGhlIHBhcmFtZXRlcgotIEBj b2Rle2RlYnVnLWZpbGUtZGlyZWN0b3J5fSBpcyBzZXQgKEBweHJlZntTZXBhcmF0ZSBEZWJ1ZyBG aWxlc30pLAotLXRoZW4gQHZhbHVle0dEQk59IHdpbGwgbG9vayBmb3IgQHZhcntyZWFsLW5hbWV9 IGluIGFsbCBvZiB0aGUKLSt0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxvb2sgZm9yIEB2YXJ7c2Ny aXB0LW5hbWV9IGluIGFsbCBvZiB0aGUKLSBkaXJlY3RvcmllcyBtZW50aW9uZWQgaW4gdGhlIHZh bHVlIG9mIEBjb2Rle2RlYnVnLWZpbGUtZGlyZWN0b3J5fS4KLSAKLSBGaW5hbGx5LCBpZiB0aGlz IGZpbGUgZG9lcyBub3QgZXhpc3QsIHRoZW4gQHZhbHVle0dEQk59IHdpbGwgbG9vayBmb3IKLS1h IGZpbGUgbmFtZWQgQGZpbGV7QHZhcntkYXRhLWRpcmVjdG9yeX0vcHl0aG9uL2F1dG8tbG9hZC9A dmFye3JlYWwtbmFtZX19LCB3aGVyZQotLUB2YXJ7ZGF0YS1kaXJlY3Rvcnl9IGlzIEB2YWx1ZXtH REJOfSdzIGRhdGEgZGlyZWN0b3J5IChhdmFpbGFibGUgdmlhCi0tQGNvZGV7c2hvdyBkYXRhLWRp cmVjdG9yeX0sIEBweHJlZntEYXRhIEZpbGVzfSksIGFuZCBAdmFye3JlYWwtbmFtZX0KLS1pcyB0 aGUgb2JqZWN0IGZpbGUncyByZWFsIG5hbWUsIGFzIGRlc2NyaWJlZCBhYm92ZS4KLStAdmFye3Nj cmlwdC1uYW1lfSBmaWxlIGluIGFsbCBvZiB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5Ogot KwotK0B0YWJsZSBAY29kZQotK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9y eX0KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnkKLStAaXRlbSBzZXQg YXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5IEBye1t9QHZhcntkaXJlY3Rvcmllc31AcntdfQot K0NvbnRyb2wgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkIHNjcmlwdHMgbG9jYXRpb24uICBNdWx0 aXBsZSBkaXJlY3RvcnkgZW50cmllcwotK21heSBiZSBkZWxpbWl0ZWQgYnkgdGhlIGhvc3QgcGxh dGZvcm0gcGF0aCBzZXBhcmF0b3IgaW4gdXNlCi0rKEBzYW1wezp9IG9uIFVuaXgsIEBzYW1wezt9 IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUykuCi0rCi0rRWFjaCBlbnRyeSBoZXJlIG5lZWRzIHRv IGJlIGNvdmVyZWQgYWxzbyBieSB0aGUgc2VjdXJpdHkgc2V0dGluZwotK0Bjb2Rle3NldCBhdXRv LWxvYWQgc2FmZS1wYXRofSAoQHB4cmVme3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSkuCi0rCi0r QGFuY2hvcnt3aXRoLWF1dG8tbG9hZC1kaXJ9Ci0rVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byBA ZmlsZXskZGRpci9hdXRvLWxvYWR9LiAgVGhlIGRlZmF1bHQgQGNvZGV7c2V0Ci0rYXV0by1sb2Fk IHNhZmUtcGF0aH0gdmFsdWUgY2FuIGJlIGFsc28gb3ZlcnJpZGVuIGJ5IEB2YWx1ZXtHREJOfSBj b25maWd1cmF0aW9uCi0rb3B0aW9uIEBvcHRpb257LS13aXRoLWF1dG8tbG9hZC1kaXJ9LgotKwot K0FueSB1c2VkIHN0cmluZyBAZmlsZXskZGRpcn0gd2lsbCBnZXQgcmVwbGFjZWQgYnkgQHZhcntk YXRhLWRpcmVjdG9yeX0gd2hpY2ggaXMKLStkZXRlcm1pbmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFy dHVwIChAcHhyZWZ7RGF0YSBGaWxlc30pLiAgQGZpbGV7JGRkaXJ9IG11c3QgYmUKLStiZSBwbGFj ZWQgYXMgYSBkaXJlY3RvcnkgY29tcG9uZW50IC0tLSBlaXRoZXIgYWxvbmUgb3IgZGVsaW1pdGVk IGJ5IEBmaWxley99IG9yCi0rQGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFyYXRvcnMsIGRlcGVuZGlu ZyBvbiB0aGUgaG9zdCBwbGF0Zm9ybS4KLSsKLStUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB1c2Vz IHBhdGggc2VwYXJhdG9yIChAc2FtcHs6fSBvbiBHTlUgYW5kIFVuaXgKLStzeXN0ZW1zLCBAc2Ft cHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBNUy1ET1MpIHRvIHNlcGFyYXRlIGRpcmVjdG9yaWVzLCBz aW1pbGFybHkKLSt0byB0aGUgQGVudntQQVRIfSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSsKLStA YW5jaG9ye3Nob3cgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fQotK0BraW5kZXggc2hvdyBh dXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnkKLStAaXRlbSBzaG93IGF1dG8tbG9hZCBzY3JpcHRz LWRpcmVjdG9yeQotK1Nob3cgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkIHNjcmlwdHMgbG9jYXRp b24uCi0rQGVuZCB0YWJsZQotIAotIEB2YWx1ZXtHREJOfSBkb2VzIG5vdCB0cmFjayB3aGljaCBm aWxlcyBpdCBoYXMgYWxyZWFkeSBhdXRvLWxvYWRlZCB0aGlzIHdheS4KLSBAdmFsdWV7R0RCTn0g d2lsbCBsb2FkIHRoZSBhc3NvY2lhdGVkIHNjcmlwdCBldmVyeSB0aW1lIHRoZSBjb3JyZXNwb25k aW5nCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTIyb2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9h ZC0yMm9mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY5Yjcy NAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0yMm9mMjgucGF0Y2gKQEAgLTAsMCAr MSwzODggQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAw ODAuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8xMSAxODowNjoyNgkxLjE0 MjM2CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8xMSAxODoxMzoyMgkxLjE0MjM3Cisj IyAtMSw1ICsxLDI5IEBACisgMjAxMi0wNS0xMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgorIAorKwlQcm92aWRlICRkZGlyIHN1YnN0aXR1dGlvbiBmb3IgLS13 aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGguCisrCSogTkVXUyAoLS13aXRoLWF1dG8tbG9hZC1zYWZl LXBhdGgsIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoKTogTmV3CisrCWVudHJpZXMuCisr CSogYXV0by1sb2FkLmM6IEluY2x1ZGUgb2JzZXJ2ZXIuaC4KKysJKGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjX3VwZGF0ZSk6IENhbGwgc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCBmb3IKKysJZWFj aCBjb21wb25lbnQuICBOZXcgdmFyaWFibGUgZGRpcl9zdWJzdC4KKysJKGF1dG9fbG9hZF9nZGJf ZGF0YWRpcl9jaGFuZ2VkKTogTmV3IGZ1bmN0aW9uLgorKwkoc2V0X2F1dG9fbG9hZF9zYWZlX3Bh dGgpOiBSZW5hbWUgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIIHRvCisrCUFVVE9fTE9BRF9T QUZFX1BBVEguICBOZXcgY29tbWVudC4KKysJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IFJlbmFt ZSBERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEggdG8KKysJQVVUT19MT0FEX1NBRkVfUEFUSC4g IEluc3RhbGwgYXV0b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQuCisrCSogY29uZmlnLmluOiBS ZWdlbmVyYXRlLgorKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKysJKiBjb25maWd1cmUuYWMg KC0tYXV0by1sb2FkLXNhZmUtcGF0aCk6IFJlbmFtZQorKwlERUZBVUxUX0FVVE9fTE9BRF9TQUZF X1BBVEggdG8gQVVUT19MT0FEX1NBRkVfUEFUSC4gIERlZmF1bHQgdG8KKysJR0RCX0RBVEFESVIv YXV0by1sb2FkLgorKwkqIGRlZnMuaCAoc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCk6IE5ldyBk ZWNsYXJhdGlvbi4KKysJKiB0b3AuYzogSW5jbHVkZSBvYnNlcnZlci5oLgorKwkoc2V0X2dkYl9k YXRhZGlyKTogTmV3IGZ1bmN0aW9uLgorKwkoaW5pdF9tYWluKTogSW5zdGFsbCBpdCBmb3IgInNl dCBkYXRhLWRpcmVjdG9yeSIuCisrCSogdXRpbHMuYyAoc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVu dCk6IE5ldyBmdW5jdGlvbi4KKysKKysyMDEyLTA1LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisgCU1ha2UgYXV0by1sb2FkIGhhbmRsZSBtdWx0aXBs ZSBjb21wb25lbnRzIG9mIERFQlVHX0ZJTEVfRElSRUNUT1JZLgorIAkqIGF1dG8tbG9hZC5jIChh dXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBSZW1vdmUgY2hlY2sgZm9yIE5VTEwKKyAJREVCVUdf RklMRV9ESVJFQ1RPUlkuICBIYW5kbGUgbXVsdGlwbGUgY29tcG9uZW50cyBvZgorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNS0xNCAxNDoxNzo0OS4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDUtMTQgMTQ6MTg6MDEuOTE1 MDQxMjU4ICswMjAwCitAQCAtMzA3LDYgKzMwNywxNyBAQCBzaG93IHRyYWNlLXN0b3Atbm90ZXMK KyAgIGluc3RhbmNlIGFzIGFuIGV4cGxhbmF0aW9uLCBpZiB5b3UgYXJlIHN0b3BwaW5nIGEgdHJh Y2UgcnVuIHRoYXQgd2FzCisgICBzdGFydGVkIGJ5IHNvbWVvbmUgZWxzZS4KKyAKKysqIE5ldyBj b25maWd1cmUgb3B0aW9ucworKworKy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrICBDb25m aWd1cmUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0 dGluZworKyAgYWJvdmUuICBJdCBkZWZhdWx0cyB0byAnJGRkaXIvYXV0by1sb2FkJywgJGRkaXIg cmVwcmVzZW50aW5nIEdEQidzCisrICBkYXRhIGRpcmVjdG9yeSAoYXZhaWxhYmxlIHZpYSBzaG93 IGRhdGEtZGlyZWN0b3J5KS4KKysKKystLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aAorKyAg U2V0ICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgdG8gJy8nLCBlZmZlY3RpdmVseSBkaXNhYmxp bmcgdGhpcworKyAgc2VjdXJpdHkgZmVhdHVyZS4KKysKKyAqIE5ldyByZW1vdGUgcGFja2V0cwor IAorIFFURW5hYmxlCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5j CTIwMTItMDUtMTQgMTQ6MTc6NDkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNS0xNCAxNDoxODowMS45MTUwNDEyNTggKzAyMDAK K0BAIC0zNSw2ICszNSw3IEBACisgI2luY2x1ZGUgImdkYl92ZWNzLmgiCisgI2luY2x1ZGUgInJl YWRsaW5lL3RpbGRlLmgiCisgI2luY2x1ZGUgImNvbXBsZXRlci5oIgorKyNpbmNsdWRlICJvYnNl cnZlci5oIgorIAorIC8qIFRoZSBzdWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0byBhdXRv LWxvYWQgYXMgbm9uLVB5dGhvbiBjb21tYW5kIGZpbGVzLgorICAgIEUuZy4gV2hlbiB0aGUgcHJv Z3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sgZm9yIGxpYmZvby1nZGIuZ2RiLiAgKi8KK0BAIC0x NDEsMTAgKzE0MiwxNiBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCisg ICBmb3IgKGl4ID0gMDsgaXggPCBsZW47IGl4KyspCisgICAgIHsKKyAgICAgICBjaGFyICpkaXIg PSBWRUNfaW5kZXggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgpOworLSAg ICAgIGNoYXIgKmV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChkaXIpOworLSAgICAgIGNoYXIgKnJl YWxfcGF0aCA9IGdkYl9yZWFscGF0aCAoZXhwYW5kZWQpOworKyAgICAgIGNoYXIgKmRkaXJfc3Vi c3QsICpleHBhbmRlZCwgKnJlYWxfcGF0aDsKKyAKKy0gICAgICAvKiBFbnN1cmUgdGhlIGN1cnJl bnQgZW50cnkgaXMgYXQgbGVhc3QgdGlsZGVfZXhwYW5kLWVkLiAgKi8KKysgICAgICBkZGlyX3N1 YnN0ID0geHN0cmR1cCAoZGlyKTsKKysgICAgICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50ICgm ZGRpcl9zdWJzdCwgIiRkZGlyIiwgZ2RiX2RhdGFkaXIpOworKyAgICAgIGV4cGFuZGVkID0gdGls ZGVfZXhwYW5kIChkZGlyX3N1YnN0KTsKKysgICAgICB4ZnJlZSAoZGRpcl9zdWJzdCk7CisrICAg ICAgcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7CisrCisrICAgICAgLyogRW5z dXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IGEgdmFsaWQgcGF0aCAodGhlcmVmb3Jl CisrCSAkZGRpci1leHBhbmRlZCBhbmQgdGlsZGUtZXhwYW5kZWQpLiAgKi8KKyAgICAgICBWRUNf cmVwbGFjZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZXhwYW5kZWQp OworIAorICAgICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCitAQCAtMTc2LDE1ICsxODMsMjQgQEAg YXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lkKQorICAgICB9CisgfQorIAorKy8q IFZhcmlhYmxlIGdkYl9kYXRhZGlyIGhhcyBiZWVuIHNldC4gIFVwZGF0ZSBjb250ZW50IGRlcGVu ZGluZyBvbiAkZGRpci4gICovCisrCisrc3RhdGljIHZvaWQKKythdXRvX2xvYWRfZ2RiX2RhdGFk aXJfY2hhbmdlZCAodm9pZCkKKyt7CisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUg KCk7CisrfQorKworIC8qICJzZXQiIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRo IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworIAorIHN0YXRpYyB2b2lkCisgc2V0X2F1dG9f bG9hZF9zYWZlX3BhdGggKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmMpCisgeworKyAgLyogU2V0dGluZyB0aGUgdmFyaWFibGUgdG8gIiIgcmVzZXRz IGl0IHRvIHRoZSBjb21waWxlIHRpbWUgZGVmYXVsdHMuICAqLworICAgaWYgKGF1dG9fbG9hZF9z YWZlX3BhdGhbMF0gPT0gJ1wwJykKKyAgICAgeworICAgICAgIHhmcmVlIChhdXRvX2xvYWRfc2Fm ZV9wYXRoKTsKKy0gICAgICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoREVGQVVMVF9B VVRPX0xPQURfU0FGRV9QQVRIKTsKKysgICAgICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1 cCAoQVVUT19MT0FEX1NBRkVfUEFUSCk7CisgICAgIH0KKyAKKyAgIGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjX3VwZGF0ZSAoKTsKK0BAIC0xMDQwLDcgKzEwNTYsNyBAQCBUaGlzIG9wdGlvbnMgaGFz IHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmCisgVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxvY2FsLWdk YmluaXQiKSwKKyAJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOworIAorLSAgYXV0 b19sb2FkX3NhZmVfcGF0aCA9IHhzdHJkdXAgKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCk7 CisrICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoQVVUT19MT0FEX1NBRkVfUEFUSCk7 CisgICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7CisgICBhZGRfc2V0c2hvd19v cHRpb25hbF9maWxlbmFtZV9jbWQgKCJzYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAorIAkJCQkg ICAgICZhdXRvX2xvYWRfc2FmZV9wYXRoLCBfKCJcCitAQCAtMTA1OCw2ICsxMDc0LDcgQEAgVGhp cyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZgorIAkJCQkgICAgIHNob3dfYXV0 b19sb2FkX3NhZmVfcGF0aCwKKyAJCQkJICAgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgp LAorIAkJCQkgICAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKKysgIG9ic2VydmVy X2F0dGFjaF9nZGJfZGF0YWRpcl9jaGFuZ2VkIChhdXRvX2xvYWRfZ2RiX2RhdGFkaXJfY2hhbmdl ZCk7CisgCisgICBjbWQgPSBhZGRfY21kICgiYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgiLCBjbGFz c19zdXBwb3J0LAorIAkJIGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvY29uZmlnLmluCTIwMTItMDUtMTQgMTQ6MTc6NDkuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCTIwMTItMDUtMTQgMTQ6 MTg6MDEuOTE1MDQxMjU4ICswMjAwCitAQCAtNyw2ICs3LDkgQEAKKyAvKiBEZWZpbmUgaWYgYnVp bGRpbmcgdW5pdmVyc2FsIChpbnRlcm5hbCBoZWxwZXIgbWFjcm8pICovCisgI3VuZGVmIEFDX0FQ UExFX1VOSVZFUlNBTF9CVUlMRAorIAorKy8qIERpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRv LWxvYWRlZCBmaWxlcy4gKi8KKysjdW5kZWYgQVVUT19MT0FEX1NBRkVfUEFUSAorKworIC8qIERp cmVjdG9yeSBvZiBwcm9ncmFtcy4gKi8KKyAjdW5kZWYgQklORElSCisgCitAQCAtNDMsOSArNDYs NiBAQAorICAgIG1vdmVkLiAqLworICN1bmRlZiBERUJVR0RJUl9SRUxPQ0FUQUJMRQorIAorLS8q IERpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gKi8KKy0jdW5kZWYg REVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRICistCisgLyogRGVmaW5lIHRvIEJGRCdzIGRlZmF1 bHQgYXJjaGl0ZWN0dXJlLiAqLworICN1bmRlZiBERUZBVUxUX0JGRF9BUkNICisgCitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu NC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAxMi0wNS0xNCAxNDoxNzo0OS4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0w NS0xNCAxNDoxODowMS45MTgwNDEyNTIgKzAyMDAKK0BAIC0xNjY4LDcgKzE2NjgsOCBAQCBPcHRp b25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRh YmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQorICAgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBh dGg9UEFUSAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2FmZSB0byBo b2xkIGF1dG8tbG9hZGVkIGZpbGVzCisrICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rv cmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZQorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRoIFskZGRpci9hdXRv LWxvYWRdCisgICAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9ucwor ICAgLS13aXRoLWxpYnVud2luZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcg c3VwcG9ydAorQEAgLTg0ODgsMjAgKzg0ODksMjEgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IGRlZmF1bHQgYXV0by1sbworICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYXV0by1sb2FkLXNhZmUt cGF0aCB3YXMgZ2l2ZW4uCisgaWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0 fSIgPSBzZXQ7IHRoZW4gOgorICAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoOyBp ZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKy0gICB3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCistIGZpCisrICAgICB3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGg9Ii8iCisrICAgICBmaQorIGVsc2UKKy0gIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0i JHByZWZpeCIKKysgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0nJGRkaXIvYXV0by1sb2FkJwor IGZpCisgCisrZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2Vk ICdzL1skXWRkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAorIAorICAgdGVzdCAieCRwcmVmaXgiID0g eE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCisgICB0ZXN0ICJ4JGV4ZWNfcHJl Zml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCistICBhY19kZWZpbmVfZGly PWBldmFsIGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aGAKKysgIGFjX2RlZmluZV9kaXI9 YGV2YWwgZWNobyAkZXNjYXBlX2RpcmAKKyAgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkYWNf ZGVmaW5lX2RpcmAKKyAKKyBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCistI2RlZmluZSBERUZB VUxUX0FVVE9fTE9BRF9TQUZFX1BBVEggIiRhY19kZWZpbmVfZGlyIgorKyNkZWZpbmUgQVVUT19M T0FEX1NBRkVfUEFUSCAiJGFjX2RlZmluZV9kaXIiCisgX0FDRU9GCisgCisgCitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu NC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNS0xNCAxNDoxNzo0OS4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMJ MjAxMi0wNS0xNCAxNDoxODowMS45MTkwNDEyNTAgKzAyMDAKK0BAIC0zNDEsMTMgKzM0MSwxNiBA QCBmaQorICAKKyBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBh dGhdKQorIEFDX0FSR19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgsCistQVNfSEVMUF9TVFJJTkco Wy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLCBbZGlyZWN0b3JpZXMgc2FmZSB0byBo b2xkIGF1dG8tbG9hZGVkIGZpbGVzXSkKKy1BU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8t bG9hZC1zYWZlLXBhdGhdLCBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0 aW9uc10pLAorLVtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRo ZW4KKy0gICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCistIGZpXSwKKy1bd2l0aF9hdXRv X2xvYWRfc2FmZV9wYXRoPSIkcHJlZml4Il0pCistQUNfREVGSU5FX0RJUihERUZBVUxUX0FVVE9f TE9BRF9TQUZFX1BBVEgsIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCwKKytBU19IRUxQX1NUUklO RyhbLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0sCisrICBbZGlyZWN0b3JpZXMgc2Fm ZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLCB1c2UgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0 YWRpciBwYXRoIEA8OkAkZGRpci9hdXRvLWxvYWRAOj5AXSkKKytBU19IRUxQX1NUUklORyhbLS13 aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGhdLAorKyAgICAgICAgICAgICAgIFtkbyBub3QgcmVz dHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSksCisrICAgIFtpZiB0ZXN0ICIkd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKysgICAgIHdpdGhfYXV0b19sb2Fk X3NhZmVfcGF0aD0iLyIKKysgICAgIGZpXSwKKytbd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSck ZGRpci9hdXRvLWxvYWQnXSkKKytlc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGggfCBzZWQgJ3MvW1skXV1kZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKKytBQ19ERUZJTkVf RElSKEFVVE9fTE9BRF9TQUZFX1BBVEgsIGVzY2FwZV9kaXIsCisgCSAgICAgIFtEaXJlY3Rvcmll cyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKKyBBQ19NU0dfUkVTVUxUKFskd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoXSkKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9kZWZzLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2Rl ZnMuaAkyMDEyLTA1LTE0IDE0OjE3OjQ4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2RlZnMuaAkyMDEyLTA1LTE0IDE0OjE4OjAxLjkxOTA0MTI1MCArMDIwMAor QEAgLTQ0Miw2ICs0NDIsOSBAQCBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfYnBzdGF0X2Ns ZWFyCisgCisgZXh0ZXJuIGludCBwcm9kdWNlcl9pc19nY2NfZ2VfNCAoY29uc3QgY2hhciAqcHJv ZHVjZXIpOworIAorK2V4dGVybiB2b2lkIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKGNoYXIg KipzdHJpbmdwLCBjb25zdCBjaGFyICpmcm9tLAorKwkJCQkgICAgICAgY29uc3QgY2hhciAqdG8p OworKworICNpZmRlZiBIQVZFX1dBSVRQSUQKKyBleHRlcm4gcGlkX3Qgd2FpdF90b19kaWVfd2l0 aF90aW1lb3V0IChwaWRfdCBwaWQsIGludCAqc3RhdHVzLCBpbnQgdGltZW91dCk7CisgI2VuZGlm CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdG9wLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3RvcC5jCTIwMTItMDUtMTQgMTQ6MTc6NDguMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdG9wLmMJMjAxMi0wNS0x NCAxNDoxODowMS45MTkwNDEyNTAgKzAyMDAKK0BAIC00Nyw2ICs0Nyw3IEBACisgI2luY2x1ZGUg ImdkYnRocmVhZC5oIgorICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCisgI2luY2x1ZGUgImlu dGVycHMuaCIKKysjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKKyAKKyAvKiByZWFkbGluZSBpbmNsdWRl IGZpbGVzLiAgKi8KKyAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKK0BAIC0xNTYxLDYg KzE1NjIsMTUgQEAgc2hvd19leGVjX2RvbmVfZGlzcGxheV9wIChzdHJ1Y3QgdWlfZmlsZQorIAkJ CSAgICAiYXN5bmNocm9ub3VzIGV4ZWN1dGlvbiBjb21tYW5kcyBpcyAlcy5cbiIpLAorIAkJICAg IHZhbHVlKTsKKyB9CisrCisrLyogInNldCIgY29tbWFuZCBmb3IgdGhlIGdkYl9kYXRhZGlyIGNv bmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lkCisrc2V0X2dkYl9kYXRh ZGlyIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpj KQorK3sKKysgIG9ic2VydmVyX25vdGlmeV9nZGJfZGF0YWRpcl9jaGFuZ2VkICgpOworK30KKysK KyBzdGF0aWMgdm9pZAorIGluaXRfbWFpbiAodm9pZCkKKyB7CitAQCAtMTY2OCw3ICsxNjc4LDcg QEAgVXNlIFwib25cIiB0byBlbmFibGUgdGhlIG5vdGlmaWNhdGlvbiwgYQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF8oIlNob3cgR0RCJ3MgZGF0YSBkaXJlY3RvcnkuIiksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXygiXAorIFdoZW4gc2V0LCBHREIgdXNlcyB0aGUgc3BlY2lm aWVkIHBhdGggdG8gc2VhcmNoIGZvciBkYXRhIGZpbGVzLiIpLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwsIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2dk Yl9kYXRhZGlyLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZXRsaXN0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaG93bGlzdCk7CisgfQorSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL3V0aWxzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3V0aWxzLmMJMjAxMi0wNS0xNCAxNDoxNzo0OS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi91dGlscy5jCTIwMTItMDUtMTQgMTQ6MTg6 MDEuOTIwMDQxMjQ4ICswMjAwCitAQCAtMzkyNSw2ICszOTI1LDQ4IEBAIGRpcm5hbWVzX3RvX2No YXJfcHRyX3ZlYyAoY29uc3QgY2hhciAqZGkKKyAgIHJldHVybiByZXR2YWw7CisgfQorIAorKy8q IFN1YnN0aXR1dGUgYWxsIG9jY3VyZW5jZXMgb2Ygc3RyaW5nIEZST00gYnkgc3RyaW5nIFRPIGlu ICpTVFJJTkdQLiAgKlNUUklOR1AKKysgICBtdXN0IGNvbWUgZnJvbSB4cmVhbGxvYy1jb21wYXRp YmxlIGFsbG9jYXRvciBhbmQgaXQgbWF5IGJlIHVwZGF0ZWQuICBGUk9NCisrICAgbmVlZHMgdG8g YmUgZGVsaW1pdGVkIGJ5IElTX0RJUl9TRVBBUkFUT1IgKG9yIGJlIGxvY2F0ZWQgYXQgdGhlIHN0 YXJ0IG9yCisrICAgZW5kIG9mICpTVFJJTkdQLiAgKi8KKysKKyt2b2lkCisrc3Vic3RpdHV0ZV9w YXRoX2NvbXBvbmVudCAoY2hhciAqKnN0cmluZ3AsIGNvbnN0IGNoYXIgKmZyb20sIGNvbnN0IGNo YXIgKnRvKQorK3sKKysgIGNoYXIgKnN0cmluZyA9ICpzdHJpbmdwLCAqczsKKysgIGNvbnN0IHNp emVfdCBmcm9tX2xlbiA9IHN0cmxlbiAoZnJvbSk7CisrICBjb25zdCBzaXplX3QgdG9fbGVuID0g c3RybGVuICh0byk7CisrCisrICBmb3IgKHMgPSBzdHJpbmc7OykKKysgICAgeworKyAgICAgIHMg PSBzdHJzdHIgKHMsIGZyb20pOworKyAgICAgIGlmIChzID09IE5VTEwpCisrCWJyZWFrOworKwor KyAgICAgIGlmICgocyA9PSBzdHJpbmcgfHwgSVNfRElSX1NFUEFSQVRPUiAoc1stMV0pKQorKyAg ICAgICAgICAmJiAoc1tmcm9tX2xlbl0gPT0gJ1wwJyB8fCBJU19ESVJfU0VQQVJBVE9SIChzW2Zy b21fbGVuXSkpKQorKwl7CisrCSAgY2hhciAqc3RyaW5nX25ldzsKKysKKysJICBzdHJpbmdfbmV3 ID0geHJlYWxsb2MgKHN0cmluZywgKHN0cmxlbiAoc3RyaW5nKSArIHRvX2xlbiArIDEpKTsKKysK KysJICAvKiBSZWxvY2F0ZSB0aGUgY3VycmVudCBTIHBvaW50ZXIuICAqLworKwkgIHMgPSBzIC0g c3RyaW5nICsgc3RyaW5nX25ldzsKKysJICBzdHJpbmcgPSBzdHJpbmdfbmV3OworKworKwkgIC8q IFJlcGxhY2UgZnJvbSBieSB0by4gICovCisrCSAgbWVtbW92ZSAoJnNbdG9fbGVuXSwgJnNbZnJv bV9sZW5dLCBzdHJsZW4gKCZzW2Zyb21fbGVuXSkgKyAxKTsKKysJICBtZW1jcHkgKHMsIHRvLCB0 b19sZW4pOworKworKwkgIHMgKz0gdG9fbGVuOworKwl9CisrICAgICAgZWxzZQorKwlzKys7Cisr ICAgIH0KKysKKysgICpzdHJpbmdwID0gc3RyaW5nOworK30KKysKKyAjaWZkZWYgSEFWRV9XQUlU UElECisgCisgI2lmZGVmIFNJR0FMUk0KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9k b2MvZ2RiLnRleGluZm8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA1LTE0IDE0OjE3OjQ5LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA1LTE0IDE0 OjE4OjAxLjkyNTA0MTIzOCArMDIwMAorQEAgLTIwODAzLDcgKzIwODAzLDcgQEAgbG9jYWwtZ2Ri aW5pdDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdAorICAgICAgICAgICAgICAgICBpcyBvbi4K KyBweXRob24tc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBvbi4K KyBzYWZlLXBhdGg6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0 byBhdXRvLWxvYWQgZmlsZXMKKy0gICAgICAgICAgICBpcyAvdXNyL2xvY2FsLgorKyAgICAgICAg ICAgIGlzICRkZGlyL2F1dG8tbG9hZC4KKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorIEBhbmNob3J7 aW5mbyBhdXRvLWxvYWR9CitAQCAtMjEwMDYsOSArMjEwMDYsOSBAQCBnZXQgbG9hZGVkOgorICQg Li9nZGIgLXEgLi9nZGIKKyBSZWFkaW5nIHN5bWJvbHMgZnJvbSAvaG9tZS91c2VyL2dkYi9nZGIu Li5kb25lLgorIHdhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiIiBhdXRv LWxvYWRpbmcgaGFzIGJlZW4KKy0gICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQg c2FmZS1wYXRoJyBzZXQgdG8gIi91c3IvbG9jYWwiLgorKyAgICAgICAgIGRlY2xpbmVkIGJ5IHlv dXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiJGRkaXIvYXV0by1sb2FkIi4KKyB3YXJu aW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5IiBhdXRvLWxvYWRpbmcgaGFzIGJl ZW4KKy0gICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQg dG8gIi91c3IvbG9jYWwiLgorKyAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBz YWZlLXBhdGgnIHNldCB0byAiJGRkaXIvYXV0by1sb2FkIi4KKyBAZW5kIHNtYWxsZXhhbXBsZQor IAorIFRoZSBsaXN0IG9mIHRydXN0ZWQgZGlyZWN0b3JpZXMgaXMgY29udHJvbGxlZCBieSB0aGUg Zm9sbG93aW5nIGNvbW1hbmRzOgorQEAgLTIxMDQwLDcgKzIxMDQwLDE4IEBAIGxvYWRpbmcgYW5k IGV4ZWN1dGlvbiBvZiBzY3JpcHRzLiAgTXVsdGkKKyBob3N0IHBsYXRmb3JtIHBhdGggc2VwYXJh dG9yIGluIHVzZS4KKyBAZW5kIHRhYmxlCisgCistU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBm aWxley99IGRpc2FibGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbi4KKytUaGlzIHZhcmlhYmxl IGRlZmF1bHRzIHRvIEBmaWxleyRkZGlyL2F1dG8tbG9hZH0uICBUaGUgZGVmYXVsdCBAY29kZXtz ZXQKKythdXRvLWxvYWQgc2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkg QHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24KKytvcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1s b2FkLXNhZmUtcGF0aH0uCisrCisrQW55IHVzZWQgc3RyaW5nIEBmaWxleyRkZGlyfSB3aWxsIGdl dCByZXBsYWNlZCBieSBAdmFye2RhdGEtZGlyZWN0b3J5fSB3aGljaCBpcworK2RldGVybWluZWQg YXQgQHZhbHVle0dEQk59IHN0YXJ0dXAgKEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGRp cn0gbXVzdCBiZQorK2JlIHBsYWNlZCBhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQgLS0tIGVpdGhl ciBhbG9uZSBvciBkZWxpbWl0ZWQgYnkgQGZpbGV7L30gb3IKKytAZmlsZXtcfSBkaXJlY3Rvcnkg c2VwYXJhdG9ycywgZGVwZW5kaW5nIG9uIHRoZSBob3N0IHBsYXRmb3JtLgorKworK1NldHRpbmcg dGhpcyB2YXJpYWJsZSB0byBAZmlsZXsvfSBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rp b24sCisrY29ycmVzcG9uZGluZyBAdmFsdWV7R0RCTn0gY29uZmlndXJhdGlvbiBvcHRpb24gaXMK KytAb3B0aW9uey0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRofS4KKyBUaGlzIHZhcmlhYmxl IGlzIHN1cHBvc2VkIHRvIGJlIHNldCB0byB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzIHdyaXRhYmxl IGJ5IHRoZQorIHN5c3RlbSBzdXBlcnVzZXIgb25seS4gIFVzZXJzIGNhbiBhZGQgdGhlaXIgc291 cmNlIGRpcmVjdG9yaWVzIGluIGluaXQgZmlsZXMgaW4KKyB0aGVpciBob21lIGRpcmVjdG9yaWVz IChAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBTZWUgYWxzbyBkZXByZWNhdGVk CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL29ic2VydmVyLnRleGkKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9vYnNlcnZlci50ZXhp CTIwMTItMDUtMTQgMTQ6MTc6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvZG9jL29ic2VydmVyLnRleGkJMjAxMi0wNS0xNCAxNDoxODowMS45MjYwNDEyMzYg KzAyMDAKK0BAIC0yMzEsNiArMjMxLDEwIEBAIHRoZSBjdXJyZW50IHRvcC1sZXZlbCBwcm9tcHQu CisgQGMgY29sbGVjdG9yIHBhc3MuICBDdXJyZW50bHkgb25seSBAY29kZXt0eXBlX21hcmtfdXNl ZH0gbWFya2VyIGlzIHN1cHBvcnRlZC4KKyBAYyBAZW5kIGRlZnR5cGVmdW4KKyAKKytAZGVmdHlw ZWZ1biB2b2lkIGdkYl9kYXRhZGlyX2NoYW5nZWQgKHZvaWQpCisrVmFyaWFibGUgZ2RiX2RhdGFk aXIgaGFzIGJlZW4gc2V0LiAgVGhlIHZhbHVlIG1heSBub3QgbmVjZXNzYXJpbHkgY2hhbmdlLgor K0BlbmQgZGVmdHlwZWZ1bgorKworIEBkZWZ0eXBlZnVuIHZvaWQgdGVzdF9ub3RpZmljYXRpb24g KGludCBAdmFye3NvbWVhcmd9KQorIFRoaXMgb2JzZXJ2ZXIgaXMgdXNlZCBmb3IgaW50ZXJuYWwg dGVzdGluZy4gIERvIG5vdCB1c2UuICAKKyBTZWUgdGVzdHN1aXRlL2dkYi5nZGIvb2JzZXJ2ZXIu ZXhwLgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0yM29mMjgucGF0Y2ggYi9nZGItYXV0b2xv YWQtMjNvZjI4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiODEx ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMjNvZjI4LnBhdGNoCkBAIC0wLDAg KzEsNDI0IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAw MDgxLmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDUvMTEgMTg6MTM6MjIJMS4x NDIzNworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDUvMTEgMTg6MjA6MjUJMS4xNDIzOAor IyMgLTEsNSArMSwyMyBAQAorIDIwMTItMDUtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KKyAKKysJSW1wbGVtZW50IG11bHRpLWNvbXBvbmVudCAtLXdpdGgt YXV0by1sb2FkLWRpci4KKysJKiBORVdTIChzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5 LCAtLXdpdGgtYXV0by1sb2FkLWRpcik6IE5ldworKwllbnRyaWVzLgorKwkoLS13aXRoLWF1dG8t bG9hZC1zYWZlLXBhdGgpOiBVcGRhdGUgdGhlIGRlZmF1bHQgdmFsdWUgZGVzY3JpcHRpb24uCisr CSogYXV0by1sb2FkLmMgKGF1dG9fbG9hZF9kaXIsIHNldF9hdXRvX2xvYWRfZGlyLCBzaG93X2F1 dG9fbG9hZF9kaXIpOgorKwlOZXcuCisrCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBBZGQg REVCVUdfQVVUT19MT0FEIG91dHB1dC4gIFJlbW92ZQorKwlHREJfREFUQURJUiBOVUxMIGNoZWNr LiAgUmVwbGFjZSBHREJfREFUQURJUi9hdXRvLWxvYWQgYnkKKysJQVVUT19MT0FEX0RJUi4gIFN1 cHBvcnQgJGRkaXIgYW5kIG11bHRpcGxlIGNvbXBvbmVudHMgaW4gaXQuCisrCShfaW5pdGlhbGl6 ZV9hdXRvX2xvYWQpOiBJbml0aWFsaXplIGFsc28gYXV0b19sb2FkX2Rpci4gIEluc3RhbGwgbmV3 CisrCSJzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5Ii4KKysJKiBjb25maWcuaW46IFJl Z2VuZXJhdGUuCisrCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorKwkqIGNvbmZpZ3VyZS5hYyAo LS13aXRoLWF1dG8tbG9hZC1kaXIpOiBOZXcgY29uZmlndXJlIG9wdGlvbi4KKysJKC0tYXV0by1s b2FkLXNhZmUtcGF0aCk6IENoYW5nZSB0aGUgZGVmYXVsdCB0byAtLXdpdGgtYXV0by1sb2FkLWRp ci4KKysKKysyMDEyLTA1LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+CisrCisgCVByb3ZpZGUgJGRkaXIgc3Vic3RpdHV0aW9uIGZvciAtLXdpdGgtYXV0by1s b2FkLXNhZmUtcGF0aC4KKyAJKiBORVdTICgtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCwgLS13 aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBOZXcKKyAJZW50cmllcy4KK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDUtMTQgMTQ6MTg6MDEuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA1LTE0IDE0OjE4OjI5LjcxMjk4 NTg3MSArMDIwMAorQEAgLTY3LDYgKzY3LDEyIEBAIHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRi IG9ufG9mZgorIHNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgorICAgQ29udHJvbCBhdXRvLWxv YWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFy eS4KKyAKKytzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5IDxkaXIxPls6PGRpcjI+Li4u XQorKyAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1s b2FkZWQgc2NyaXB0cy4KKysgIEF1dG9tYXRpY2FsbHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzIGFu ZCBHREIgc2NyaXB0cyBhcmUgbG9jYXRlZCBpbiBvbmUKKysgIG9mIHRoZSBkaXJlY3RvcmllcyBs aXN0ZWQgYnkgdGhpcyBvcHRpb24uCisrICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBk aWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgorKworIHNldCBhdXRvLWxvYWQg c2FmZS1wYXRoIDxkaXIxPls6PGRpcjI+Li4uXQorIHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAor ICAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0 by1sb2FkIGZpbGVzLgorQEAgLTMwOSwxMCArMzE1LDE0IEBAIHNob3cgdHJhY2Utc3RvcC1ub3Rl cworIAorICogTmV3IGNvbmZpZ3VyZSBvcHRpb25zCisgCisrLS13aXRoLWF1dG8tbG9hZC1kaXIK KysgIENvbmZpZ3VyZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgc2NyaXB0 cy1kaXJlY3RvcnknCisrICBzZXR0aW5nIGFib3ZlLiAgSXQgZGVmYXVsdHMgdG8gJyRkZGlyL2F1 dG8tbG9hZCcsICRkZGlyIHJlcHJlc2VudGluZworKyAgR0RCJ3MgZGF0YSBkaXJlY3RvcnkgKGF2 YWlsYWJsZSB2aWEgc2hvdyBkYXRhLWRpcmVjdG9yeSkuCisrCisgLS13aXRoLWF1dG8tbG9hZC1z YWZlLXBhdGgKKyAgIENvbmZpZ3VyZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgJ3NldCBhdXRvLWxv YWQgc2FmZS1wYXRoJyBzZXR0aW5nCistICBhYm92ZS4gIEl0IGRlZmF1bHRzIHRvICckZGRpci9h dXRvLWxvYWQnLCAkZGRpciByZXByZXNlbnRpbmcgR0RCJ3MKKy0gIGRhdGEgZGlyZWN0b3J5IChh dmFpbGFibGUgdmlhIHNob3cgZGF0YS1kaXJlY3RvcnkpLgorKyAgYWJvdmUuICBJdCBkZWZhdWx0 cyB0byB0aGUgLS13aXRoLWF1dG8tbG9hZC1kaXIgc2V0dGluZy4KKyAKKyAtLXdpdGhvdXQtYXV0 by1sb2FkLXNhZmUtcGF0aAorICAgU2V0ICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgdG8gJy8n LCBlZmZlY3RpdmVseSBkaXNhYmxpbmcgdGhpcworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2F1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA1LTE0IDE0OjE4OjAxLjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDUtMTQgMTQ6MTg6Mjku NzEzOTg1ODY5ICswMjAwCitAQCAtMTA4LDYgKzEwOCwzNSBAQCBzaG93X2F1dG9fbG9hZF9sb2Nh bF9nZGJpbml0IChzdHJ1Y3QgdWlfCisgCQkgICAgdmFsdWUpOworIH0KKyAKKysvKiBEaXJlY3Rv cnkgbGlzdCBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy4gIEl0IGlzIG5v dCBjaGVja2VkCisrICAgZm9yIGFic29sdXRlIHBhdGhzIGJ1dCB0aGV5IGFyZSBzdHJvbmdseSBy ZWNvbW1lbmRlZC4gIEl0IGlzIGluaXRpYWxpemVkIGJ5CisrICAgX2luaXRpYWxpemVfYXV0b19s b2FkLiAgKi8KKytzdGF0aWMgY2hhciAqYXV0b19sb2FkX2RpcjsKKysKKysvKiAic2V0IiBjb21t YW5kIGZvciB0aGUgYXV0b19sb2FkX2RpciBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysK KytzdGF0aWMgdm9pZAorK3NldF9hdXRvX2xvYWRfZGlyIChjaGFyICphcmdzLCBpbnQgZnJvbV90 dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQorK3sKKysgIC8qIFNldHRpbmcgdGhlIHZh cmlhYmxlIHRvICIiIHJlc2V0cyBpdCB0byB0aGUgY29tcGlsZSB0aW1lIGRlZmF1bHRzLiAgKi8K KysgIGlmIChhdXRvX2xvYWRfZGlyWzBdID09ICdcMCcpCisrICAgIHsKKysgICAgICB4ZnJlZSAo YXV0b19sb2FkX2Rpcik7CisrICAgICAgYXV0b19sb2FkX2RpciA9IHhzdHJkdXAgKEFVVE9fTE9B RF9ESVIpOworKyAgICB9CisrfQorKworKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19s b2FkX2RpciBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3No b3dfYXV0b19sb2FkX2RpciAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKysJ CSAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisrewor KyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdo aWNoIHRvIGxvYWQgIgorKwkJCSAgICAiYXV0by1sb2FkZWQgc2NyaXB0cyBpcyAlcy5cbiIpLAor KwkJICAgIHZhbHVlKTsKKyt9CisrCisgLyogRGlyZWN0b3J5IGxpc3Qgc2FmZSB0byBob2xkIGF1 dG8tbG9hZGVkIGZpbGVzLiAgSXQgaXMgbm90IGNoZWNrZWQgZm9yCisgICAgYWJzb2x1dGUgcGF0 aHMgYnV0IHRoZXkgYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkLiAgSXQgaXMgaW5pdGlhbGl6ZWQg YnkKKyAgICBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQuICAqLworQEAgLTYwMiw2ICs2MzEsOSBAQCBh dXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCisgCisgICBpbnB1dCA9IGZv cGVuIChmaWxlbmFtZSwgInIiKTsKKyAgIGRlYnVnZmlsZSA9IGZpbGVuYW1lOworKyAgaWYgKGRl YnVnX2F1dG9fbG9hZCkKKysgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJh dXRvLWxvYWQ6IEF0dGVtcHRlZCBmaWxlIFwiJXNcIiAlcy5cbiIpLAorKwkJCWRlYnVnZmlsZSwg aW5wdXQgPyBfKCJleGlzdHMiKSA6IF8oImRvZXMgbm90IGV4aXN0IikpOworIAorICAgaWYgKCFp bnB1dCkKKyAgICAgeworQEAgLTYxMiw2ICs2NDQsMTIgQEAgYXV0b19sb2FkX29iamZpbGVfc2Ny aXB0IChzdHJ1Y3Qgb2JqZmlsZQorICAgICAgIGRlYnVnZGlyX3ZlYyA9IGRpcm5hbWVzX3RvX2No YXJfcHRyX3ZlYyAoZGVidWdfZmlsZV9kaXJlY3RvcnkpOworICAgICAgIG1ha2VfY2xlYW51cF9m cmVlX2NoYXJfcHRyX3ZlYyAoZGVidWdkaXJfdmVjKTsKKyAKKysgICAgICBpZiAoZGVidWdfYXV0 b19sb2FkKQorKwlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisrCQkJICAgIF8oImF1 dG8tbG9hZDogU2VhcmNoaW5nICdzZXQgZGVidWctZmlsZS1kaXJlY3RvcnknICIKKysJCQkgICAg ICAicGF0aCBcIiVzXCIuXG4iKSwKKysJCQkgICAgZGVidWdfZmlsZV9kaXJlY3RvcnkpOworKwor ICAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGRlYnVnZGlyX3ZlYywg aXgsIGRlYnVnZGlyKTsgKytpeCkKKyAJeworIAkgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUg aW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KK0BAIC02MjMsMjQgKzY2 MSw1MyBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCisgCisgCSAg bWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKKyAJICBpbnB1dCA9IGZvcGVuIChkZWJ1 Z2ZpbGUsICJyIik7CisrCSAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKKysJICAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywgXygiYXV0by1sb2FkOiBBdHRlbXB0ZWQgZmlsZSAiCisrCQkJ CQkgICAgICAiXCIlc1wiICVzLlxuIiksCisrCQkJCWRlYnVnZmlsZSwKKysJCQkJaW5wdXQgPyBf KCJleGlzdHMiKSA6IF8oImRvZXMgbm90IGV4aXN0IikpOworIAkgIGlmIChpbnB1dCAhPSBOVUxM KQorIAkgICAgYnJlYWs7CisgCX0KKyAgICAgfQorIAorLSAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0 YWRpcikKKysgIGlmICghaW5wdXQpCisgICAgIHsKKysgICAgICBWRUMgKGNoYXJfcHRyKSAqdmVj OworKyAgICAgIGludCBpeDsKKysgICAgICBjaGFyICpkaXI7CisrCisgICAgICAgLyogQWxzbyB0 cnkgdGhlIHNhbWUgZmlsZSBpbiBhIHN1YmRpcmVjdG9yeSBvZiBnZGIncyBkYXRhCisgCSBkaXJl Y3RvcnkuICAqLworLSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZ2RiX2RhdGFk aXIpICsgc3RybGVuIChmaWxlbmFtZSkKKy0JCQkgICArIHN0cmxlbiAoIi9hdXRvLWxvYWQiKSAr IDEpOworLSAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBnZGJfZGF0YWRpcik7CistICAgICAgc3Ry Y2F0IChkZWJ1Z2ZpbGUsICIvYXV0by1sb2FkIik7CistICAgICAgLyogRklMRU5BTUUgaXMgYWJz b2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCistICAgICAgc3RyY2F0IChk ZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKKyAKKy0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1 Z2ZpbGUpOworLSAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKKysgICAgICB2 ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9kaXIpOworKyAgICAgIG1h a2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYyAodmVjKTsKKysKKysgICAgICBpZiAoZGVidWdf YXV0b19sb2FkKQorKwlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oImF1dG8tbG9h ZDogU2VhcmNoaW5nICdzZXQgYXV0by1sb2FkICIKKysJCQkJCSAgInNjcmlwdHMtZGlyZWN0b3J5 JyBwYXRoIFwiJXNcIi5cbiIpLAorKwkJCSAgICBhdXRvX2xvYWRfZGlyKTsKKysKKysgICAgICBm b3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCB2ZWMsIGl4LCBkaXIpOyArK2l4KQor Kwl7CisrCSAgZGVidWdmaWxlID0geHN0cmR1cCAoZGlyKTsKKysJICBzdWJzdGl0dXRlX3BhdGhf Y29tcG9uZW50ICgmZGVidWdmaWxlLCAiJGRkaXIiLCBnZGJfZGF0YWRpcik7CisrCSAgZGVidWdm aWxlID0geHJlYWxsb2MgKGRlYnVnZmlsZSwgKHN0cmxlbiAoZGVidWdmaWxlKQorKwkJCQkJICAg ICsgc3RybGVuIChmaWxlbmFtZSkgKyAxKSk7CisrCisrCSAgLyogRklMRU5BTUUgaXMgYWJzb2x1 dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCisrCSAgc3RyY2F0IChkZWJ1Z2Zp bGUsIGZpbGVuYW1lKTsKKysKKysJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwor KwkgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKKysJICBpZiAoZGVidWdfYXV0b19s b2FkKQorKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6 IEF0dGVtcHRlZCBmaWxlICIKKysJCQkJCSAgICAgICJcIiVzXCIgJXMuXG4iKSwKKysJCQkJZGVi dWdmaWxlLAorKwkJCQlpbnB1dCA/IF8oImV4aXN0cyIpIDogXygiZG9lcyBub3QgZXhpc3QiKSk7 CisrCSAgaWYgKGlucHV0ICE9IE5VTEwpCisrCSAgICBicmVhazsKKysJfQorICAgICB9CisgCisg ICBpZiAoaW5wdXQpCitAQCAtMTA1Niw2ICsxMTIzLDE5IEBAIFRoaXMgb3B0aW9ucyBoYXMgc2Vj dXJpdHkgaW1wbGljYXRpb25zIGYKKyBVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dCIpLAorIAkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7CisgCisrICBhdXRvX2xv YWRfZGlyID0geHN0cmR1cCAoQVVUT19MT0FEX0RJUik7CisrICBhZGRfc2V0c2hvd19vcHRpb25h bF9maWxlbmFtZV9jbWQgKCJzY3JpcHRzLWRpcmVjdG9yeSIsIGNsYXNzX3N1cHBvcnQsCisrCQkJ CSAgICAgJmF1dG9fbG9hZF9kaXIsIF8oIlwKKytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMg ZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKKytTaG93IHRo ZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3Jp cHRzLiIpLCBfKCJcCisrQXV0b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMgYW5kIEdE QiBzY3JpcHRzIGFyZSBsb2NhdGVkIGluIG9uZSBvZiB0aGVcblwKKytkaXJlY3RvcmllcyBsaXN0 ZWQgYnkgdGhpcyBvcHRpb24uICBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZvciB0aGUga2luZHMg b2ZcblwKKytzY3JpcHRzIGhhdmluZyAnc2V0IGF1dG8tbG9hZCAuLi4gb2ZmJy4gIERpcmVjdG9y aWVzIGxpc3RlZCBoZXJlIG5lZWQgdG8gYmVcblwKKytwcmVzZW50IGFsc28gaW4gdGhlICdzZXQg YXV0by1sb2FkIHNhZmUtcGF0aCcgb3B0aW9uLiIpLAorKwkJCQkgICAgIHNldF9hdXRvX2xvYWRf ZGlyLCBzaG93X2F1dG9fbG9hZF9kaXIsCisrCQkJCSAgICAgYXV0b19sb2FkX3NldF9jbWRsaXN0 X2dldCAoKSwKKysJCQkJICAgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisg ICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoQVVUT19MT0FEX1NBRkVfUEFUSCk7Cisg ICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7CisgICBhZGRfc2V0c2hvd19vcHRp b25hbF9maWxlbmFtZV9jbWQgKCJzYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnLmluCTIwMTItMDUtMTQgMTQ6MTg6MDEuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCTIwMTItMDUt MTQgMTQ6MTg6MjkuNzEzOTg1ODY5ICswMjAwCitAQCAtNyw2ICs3LDkgQEAKKyAvKiBEZWZpbmUg aWYgYnVpbGRpbmcgdW5pdmVyc2FsIChpbnRlcm5hbCBoZWxwZXIgbWFjcm8pICovCisgI3VuZGVm IEFDX0FQUExFX1VOSVZFUlNBTF9CVUlMRAorIAorKy8qIERpcmVjdG9yaWVzIGZyb20gd2hpY2gg dG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLiAqLworKyN1bmRlZiBBVVRPX0xPQURfRElSCisr CisgLyogRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAqLworICN1 bmRlZiBBVVRPX0xPQURfU0FGRV9QQVRICisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi9jb25maWd1cmUJMjAxMi0wNS0xNCAxNDoxODowMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNS0xNCAxNDoyMToxMy4wNjg4NDkx MDMgKzAyMDAKK0BAIC05NTUsNiArOTU1LDcgQEAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKKyB3 aXRoX2dkYl9kYXRhZGlyCisgd2l0aF9yZWxvY2F0ZWRfc291cmNlcworIHdpdGhfcnBtCisrd2l0 aF9hdXRvX2xvYWRfZGlyCisgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoCisgZW5hYmxlX3Rhcmdl dHMKKyBlbmFibGVfNjRfYml0X2JmZAorQEAgLTE2NjcsOSArMTY2OCwxMyBAQCBPcHRpb25hbCBQ YWNrYWdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcmVsb2Nh dGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMKKyAgIC0td2l0aC1ycG0gICAgICAgICAgICAg IHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQorKyAgLS13aXRoLWF1 dG8tbG9hZC1kaXI9UEFUSAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMg ZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICB1c2UgJyRkZGlyJyBmb3IgLWRhdGEtZGlyZWN0b3J5IFskZGRpci9hdXRvLWxv YWRdCisgICAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICisgICAgICAgICAgICAgICAg ICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVz ZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRp ciBwYXRoIFskZGRpci9hdXRvLWxvYWRdCisrICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRp ciBmb3IgLS13aXRoLWdkYi1kYXRhZGlyIHBhdGgKKysgICAgICAgICAgICAgICAgICAgICAgICAg IFstLXdpdGgtYXV0by1sb2FkLWRpcl0KKyAgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRo CisgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQg ZmlsZXMgbG9jYXRpb25zCisgICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5k IGZyYW1lIHVud2luZGluZyBzdXBwb3J0CitAQCAtODQ4Myw2ICs4NDg4LDMxIEBAICRhc19lY2hv ICIkYXNfbWU6IFdBUk5JTkc6ICRSUE1fUEtHX0VSUk8KKyAgIGZpCisgZmkKKyAKKyt7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkZWZhdWx0IGF1 dG8tbG9hZCBkaXJlY3RvcnkiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBkZWZhdWx0 IGF1dG8tbG9hZCBkaXJlY3RvcnkuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13 aXRoLWF1dG8tbG9hZC1kaXIgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRf ZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfYXV0b19sb2FkX2RpcjsK KytlbHNlCisrICB3aXRoX2F1dG9fbG9hZF9kaXI9JyRkZGlyL2F1dG8tbG9hZCcKKytmaQorKwor K2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bJF1kZGlyXD4v XFxcXFxcXFxcXFxcJi9nJ2AKKysKKysgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZp eD0iJGFjX2RlZmF1bHRfcHJlZml4IgorKyAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAm JiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JworKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRl c2NhcGVfZGlyYAorKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRhY19kZWZpbmVfZGlyYAor KworK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKysjZGVmaW5lIEFVVE9fTE9BRF9ESVIgIiRh Y19kZWZpbmVfZGlyIgorK19BQ0VPRgorKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9hdXRvX2xvYWRfZGlyIiA+JjUKKyskYXNfZWNo byAiJHdpdGhfYXV0b19sb2FkX2RpciIgPiY2OyB9CisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1w YXRoIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2Fm ZS1wYXRoLi4uICIgPiY2OyB9CisgCitAQCAtODQ5Miw3ICs4NTIyLDcgQEAgaWYgdGVzdCAiJHt3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fQorICAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9w YXRoPSIvIgorICAgICAgZmkKKyBlbHNlCistICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9JyRk ZGlyL2F1dG8tbG9hZCcKKysgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHdpdGhfYXV0b19s b2FkX2RpciIKKyBmaQorIAorIGVzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVf cGF0aCB8IHNlZCAncy9bJF1kZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTE0IDE0OjE4OjAxLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEy LTA1LTE0IDE0OjIxOjAxLjU5Nzg3MTcxNiArMDIwMAorQEAgLTMzOSwxNiArMzM5LDI2IEBAIGV4 dGVybiBycG1kYk1hdGNoSXRlcmF0b3IgcnBtdHNJbml0SXRlcmEKKyAgIGZpCisgZmkKKyAgCisr QUNfTVNHX0NIRUNLSU5HKFtmb3IgZGVmYXVsdCBhdXRvLWxvYWQgZGlyZWN0b3J5XSkKKytBQ19B UkdfV0lUSChhdXRvLWxvYWQtZGlyLAorK0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2Fk LWRpcj1QQVRIXSwKKysgIFtkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2Fk ZWQgc2NyaXB0cywgdXNlICckZGRpcicgZm9yIC1kYXRhLWRpcmVjdG9yeSBAPDpAJGRkaXIvYXV0 by1sb2FkQDo+QF0pLCwKKysgIFt3aXRoX2F1dG9fbG9hZF9kaXI9JyRkZGlyL2F1dG8tbG9hZCdd KQorK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bWyRdXWRk aXJcPi9cXFxcXFxcXFxcXFwmL2cnYAorK0FDX0RFRklORV9ESVIoQVVUT19MT0FEX0RJUiwgZXNj YXBlX2RpciwKKysJICAgICAgW0RpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxv YWRlZCBzY3JpcHRzLl0pCisrQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX2Rpcl0pCisr CisgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoXSkKKyBB Q19BUkdfV0lUSChhdXRvLWxvYWQtc2FmZS1wYXRoLAorIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgt YXV0by1sb2FkLXNhZmUtcGF0aD1QQVRIXSwKKy0gIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQg YXV0by1sb2FkZWQgZmlsZXMsIHVzZSAkZGRpciBmb3IgLS13aXRoLWdkYi1kYXRhZGlyIHBhdGgg QDw6QCRkZGlyL2F1dG8tbG9hZEA6PkBdKQorKyAgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBh dXRvLWxvYWRlZCBmaWxlcywgdXNlICRkZGlyIGZvciAtLXdpdGgtZ2RiLWRhdGFkaXIgcGF0aCBA PDpALS13aXRoLWF1dG8tbG9hZC1kaXJAOj5AXSkKKyBBU19IRUxQX1NUUklORyhbLS13aXRob3V0 LWF1dG8tbG9hZC1zYWZlLXBhdGhdLAorICAgICAgICAgICAgICAgIFtkbyBub3QgcmVzdHJpY3Qg YXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSksCisgICAgIFtpZiB0ZXN0ICIkd2l0aF9hdXRv X2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKyAgICAgIHdpdGhfYXV0b19sb2FkX3NhZmVf cGF0aD0iLyIKKyAgICAgIGZpXSwKKy1bd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSckZGRpci9h dXRvLWxvYWQnXSkKKytbd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkd2l0aF9hdXRvX2xvYWRf ZGlyIl0pCisgZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2Vk ICdzL1tbJF1dZGRpclw+L1xcXFxcXFxcXFxcXCYvZydgCisgQUNfREVGSU5FX0RJUihBVVRPX0xP QURfU0FGRV9QQVRILCBlc2NhcGVfZGlyLAorIAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBo b2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv ZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0xNCAxNDoxODowMS4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0xNCAx NDoyMDoxMy42NTM5NjYyMTIgKzAyMDAKK0BAIC0yMDgwNCw2ICsyMDgwNCw4IEBAIGxvY2FsLWdk YmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQKKyBweXRob24tc2NyaXB0czogIEF1dG8t bG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBvbi4KKyBzYWZlLXBhdGg6ICBMaXN0IG9mIGRp cmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMKKyAgICAg ICAgICAgICBpcyAkZGRpci9hdXRvLWxvYWQuCisrc2NyaXB0cy1kaXJlY3Rvcnk6ICBMaXN0IG9m IGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzCisrICAg ICAgICAgICAgICAgICAgICBpcyAkZGRpci9hdXRvLWxvYWQuCisgQGVuZCBzbWFsbGV4YW1wbGUK KyAKKyBAYW5jaG9ye2luZm8gYXV0by1sb2FkfQorQEAgLTIwODY0LDYgKzIwODY2LDEwIEBAIFRo ZXNlIGFyZSBAdmFsdWV7R0RCTn0gY29udHJvbCBjb21tYW5kcworIEB0YWIgU2hvdyBzZXR0aW5n IG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KKyBAaXRlbSBAeHJlZntpbmZvIGF1dG8t bG9hZCBweXRob24tc2NyaXB0c30uCisgQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBQ eXRob24gc2NyaXB0cy4KKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0 b3J5fS4KKytAdGFiIENvbnRyb2wgZm9yIEB2YWx1ZXtHREJOfSBhdXRvLWxvYWRlZCBzY3JpcHRz IGxvY2F0aW9uLgorK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5 fS4KKytAdGFiIFNob3cgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkIHNjcmlwdHMgbG9jYXRpb24u CisgQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKyBAdGFiIENvbnRy b2wgZm9yIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgQGl0ZW0gQHhyZWZ7 c2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0uCitAQCAtMjEwNDAsMTUgKzIxMDQ2LDEzIEBA IGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZiBzY3JpcHRzLiAgTXVsdGkKKyBob3N0IHBsYXRmb3Jt IHBhdGggc2VwYXJhdG9yIGluIHVzZS4KKyBAZW5kIHRhYmxlCisgCistVGhpcyB2YXJpYWJsZSBk ZWZhdWx0cyB0byBAZmlsZXskZGRpci9hdXRvLWxvYWR9LiAgVGhlIGRlZmF1bHQgQGNvZGV7c2V0 CisrVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byB3aGF0IEBjb2Rley0td2l0aC1hdXRvLWxvYWQt ZGlyfSBoYXMgYmVlbiBjb25maWd1cmVkCisrdG8gKEBweHJlZnt3aXRoLWF1dG8tbG9hZC1kaXJ9 KS4gIEBmaWxleyRkZGlyfSBzdWJzdGl0dWF0aW9uIGFwcGxpZXMgdGhlIHNhbWUKKythcyBmb3Ig QHhyZWZ7c2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeX0uCisrVGhlIGRlZmF1bHQgQGNv ZGV7c2V0CisgYXV0by1sb2FkIHNhZmUtcGF0aH0gdmFsdWUgY2FuIGJlIGFsc28gb3ZlcnJpZGVu IGJ5IEB2YWx1ZXtHREJOfSBjb25maWd1cmF0aW9uCisgb3B0aW9uIEBvcHRpb257LS13aXRoLWF1 dG8tbG9hZC1zYWZlLXBhdGh9LgorIAorLUFueSB1c2VkIHN0cmluZyBAZmlsZXskZGRpcn0gd2ls bCBnZXQgcmVwbGFjZWQgYnkgQHZhcntkYXRhLWRpcmVjdG9yeX0gd2hpY2ggaXMKKy1kZXRlcm1p bmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFydHVwIChAcHhyZWZ7RGF0YSBGaWxlc30pLiAgQGZpbGV7 JGRkaXJ9IG11c3QgYmUKKy1iZSBwbGFjZWQgYXMgYSBkaXJlY3RvcnkgY29tcG9uZW50IC0tLSBl aXRoZXIgYWxvbmUgb3IgZGVsaW1pdGVkIGJ5IEBmaWxley99IG9yCistQGZpbGV7XH0gZGlyZWN0 b3J5IHNlcGFyYXRvcnMsIGRlcGVuZGluZyBvbiB0aGUgaG9zdCBwbGF0Zm9ybS4KKy0KKyBTZXR0 aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7L30gZGlzYWJsZXMgdGhpcyBzZWN1cml0eSBwcm90 ZWN0aW9uLAorIGNvcnJlc3BvbmRpbmcgQHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24gb3B0aW9u IGlzCisgQG9wdGlvbnstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aH0uCitAQCAtMjUxMzUs NyArMjUxMzksNyBAQCByZWdpc3RlcmluZyBvYmpmaWxlLXNwZWNpZmljIHByZXR0eS1wcmluCisg QGNpbmRleCBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0KKyAKKyBXaGVuIGEgbmV3IG9iamVj dCBmaWxlIGlzIHJlYWQsIEB2YWx1ZXtHREJOfSBsb29rcyBmb3IKKy1hIGZpbGUgbmFtZWQgQGZp bGV7QHZhcntvYmpmaWxlfS1nZGIucHl9LAorK2EgZmlsZSBuYW1lZCBAZmlsZXtAdmFye29iamZp bGV9LWdkYi5weX0gKHdlIGNhbGwgaXQgQHZhcntzY3JpcHQtbmFtZX0gYmVsb3cpLAorIHdoZXJl IEB2YXJ7b2JqZmlsZX0gaXMgdGhlIG9iamVjdCBmaWxlJ3MgcmVhbCBuYW1lLCBmb3JtZWQgYnkg ZW5zdXJpbmcKKyB0aGF0IHRoZSBmaWxlIG5hbWUgaXMgYWJzb2x1dGUsIGZvbGxvd2luZyBhbGwg c3ltbGlua3MsIGFuZCByZXNvbHZpbmcKKyBAY29kZXsufSBhbmQgQGNvZGV7Li59IGNvbXBvbmVu dHMuICBJZiB0aGlzIGZpbGUgZXhpc3RzIGFuZCBpcworQEAgLTI1MTQzLDE0ICsyNTE0Nyw0MiBA QCByZWFkYWJsZSwgQHZhbHVle0dEQk59IHdpbGwgZXZhbHVhdGUgaXQKKyAKKyBJZiB0aGlzIGZp bGUgZG9lcyBub3QgZXhpc3QsIGFuZCBpZiB0aGUgcGFyYW1ldGVyCisgQGNvZGV7ZGVidWctZmls ZS1kaXJlY3Rvcnl9IGlzIHNldCAoQHB4cmVme1NlcGFyYXRlIERlYnVnIEZpbGVzfSksCistdGhl biBAdmFsdWV7R0RCTn0gd2lsbCBsb29rIGZvciBAdmFye3JlYWwtbmFtZX0gaW4gYWxsIG9mIHRo ZQorK3RoZW4gQHZhbHVle0dEQk59IHdpbGwgbG9vayBmb3IgQHZhcntzY3JpcHQtbmFtZX0gaW4g YWxsIG9mIHRoZQorIGRpcmVjdG9yaWVzIG1lbnRpb25lZCBpbiB0aGUgdmFsdWUgb2YgQGNvZGV7 ZGVidWctZmlsZS1kaXJlY3Rvcnl9LgorIAorIEZpbmFsbHksIGlmIHRoaXMgZmlsZSBkb2VzIG5v dCBleGlzdCwgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCBsb29rIGZvcgorLWEgZmlsZSBuYW1lZCBA ZmlsZXtAdmFye2RhdGEtZGlyZWN0b3J5fS9weXRob24vYXV0by1sb2FkL0B2YXJ7cmVhbC1uYW1l fX0sIHdoZXJlCistQHZhcntkYXRhLWRpcmVjdG9yeX0gaXMgQHZhbHVle0dEQk59J3MgZGF0YSBk aXJlY3RvcnkgKGF2YWlsYWJsZSB2aWEKKy1AY29kZXtzaG93IGRhdGEtZGlyZWN0b3J5fSwgQHB4 cmVme0RhdGEgRmlsZXN9KSwgYW5kIEB2YXJ7cmVhbC1uYW1lfQorLWlzIHRoZSBvYmplY3QgZmls ZSdzIHJlYWwgbmFtZSwgYXMgZGVzY3JpYmVkIGFib3ZlLgorK0B2YXJ7c2NyaXB0LW5hbWV9IGZp bGUgaW4gYWxsIG9mIHRoZSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnk6CisrCisrQHRhYmxlIEBj b2RlCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fQorK0BraW5kZXgg c2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeQorK0BpdGVtIHNldCBhdXRvLWxvYWQgc2Ny aXB0cy1kaXJlY3RvcnkgQHJ7W31AdmFye2RpcmVjdG9yaWVzfUBye119CisrQ29udHJvbCBAdmFs dWV7R0RCTn0gYXV0by1sb2FkZWQgc2NyaXB0cyBsb2NhdGlvbi4gIE11bHRpcGxlIGRpcmVjdG9y eSBlbnRyaWVzCisrbWF5IGJlIGRlbGltaXRlZCBieSB0aGUgaG9zdCBwbGF0Zm9ybSBwYXRoIHNl cGFyYXRvciBpbiB1c2UKKysoQHNhbXB7On0gb24gVW5peCwgQHNhbXB7O30gb24gTVMtV2luZG93 cyBhbmQgTVMtRE9TKS4KKysKKytFYWNoIGVudHJ5IGhlcmUgbmVlZHMgdG8gYmUgY292ZXJlZCBh bHNvIGJ5IHRoZSBzZWN1cml0eSBzZXR0aW5nCisrQGNvZGV7c2V0IGF1dG8tbG9hZCBzYWZlLXBh dGh9IChAcHhyZWZ7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9KS4KKysKKytAYW5jaG9ye3dpdGgt YXV0by1sb2FkLWRpcn0KKytUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIEBmaWxleyRkZGlyL2F1 dG8tbG9hZH0uICBUaGUgZGVmYXVsdCBAY29kZXtzZXQKKythdXRvLWxvYWQgc2FmZS1wYXRofSB2 YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24K KytvcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1sb2FkLWRpcn0uCisrCisrQW55IHVzZWQgc3Ry aW5nIEBmaWxleyRkZGlyfSB3aWxsIGdldCByZXBsYWNlZCBieSBAdmFye2RhdGEtZGlyZWN0b3J5 fSB3aGljaCBpcworK2RldGVybWluZWQgYXQgQHZhbHVle0dEQk59IHN0YXJ0dXAgKEBweHJlZntE YXRhIEZpbGVzfSkuICBAZmlsZXskZGRpcn0gbXVzdCBiZQorK2JlIHBsYWNlZCBhcyBhIGRpcmVj dG9yeSBjb21wb25lbnQgLS0tIGVpdGhlciBhbG9uZSBvciBkZWxpbWl0ZWQgYnkgQGZpbGV7L30g b3IKKytAZmlsZXtcfSBkaXJlY3Rvcnkgc2VwYXJhdG9ycywgZGVwZW5kaW5nIG9uIHRoZSBob3N0 IHBsYXRmb3JtLgorKworK1RoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHVzZXMgcGF0aCBzZXBhcmF0 b3IgKEBzYW1wezp9IG9uIEdOVSBhbmQgVW5peAorK3N5c3RlbXMsIEBzYW1wezt9IG9uIE1TLVdp bmRvd3MgYW5kIE1TLURPUykgdG8gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIHNpbWlsYXJseQorK3Rv IHRoZSBAZW52e1BBVEh9IGVudmlyb25tZW50IHZhcmlhYmxlLgorKworK0BhbmNob3J7c2hvdyBh dXRvLWxvYWQgc2NyaXB0cy1kaXJlY3Rvcnl9CisrQGtpbmRleCBzaG93IGF1dG8tbG9hZCBzY3Jp cHRzLWRpcmVjdG9yeQorK0BpdGVtIHNob3cgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5Cisr U2hvdyBAdmFsdWV7R0RCTn0gYXV0by1sb2FkZWQgc2NyaXB0cyBsb2NhdGlvbi4KKytAZW5kIHRh YmxlCisgCisgQHZhbHVle0dEQk59IGRvZXMgbm90IHRyYWNrIHdoaWNoIGZpbGVzIGl0IGhhcyBh bHJlYWR5IGF1dG8tbG9hZGVkIHRoaXMgd2F5LgorIEB2YWx1ZXtHREJOfSB3aWxsIGxvYWQgdGhl IGFzc29jaWF0ZWQgc2NyaXB0IGV2ZXJ5IHRpbWUgdGhlIGNvcnJlc3BvbmRpbmcKCmRpZmYgLS1n aXQgYS9nZGItYXV0b2xvYWQtMjRvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTI0b2YyOC5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWQ2MDFlCi0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTI0b2YyOC5wYXRjaApAQCAtMCwwICsxLDgyIEBACitodHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDgyLmh0bWwKKworIyMj IHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA1LzExIDE4OjIwOjI2CTEuMTMxMworIyMjIHNy Yy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA1LzExIDE4OjIzOjExCTEuMTMxNAorIyMgLTEsNSAr MSwxMiBAQAorIDIwMTItMDUtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KKyAKKysJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nLCBJbml0IEZpbGUgaW4g dGhlIEN1cnJlbnQgRGlyZWN0b3J5KQorKwkobGlidGhyZWFkX2RiLnNvLjEgZmlsZSwgb2JqZmls ZS1nZGIuZ2RiIGZpbGUsIG9iamZpbGUtZ2RiLnB5IGZpbGUpCisrCShkb3RkZWJ1Z19nZGJfc2Ny aXB0cyBzZWN0aW9uKTogQWRkIHJlZmVyZW5jZQorKwl0byAnQXV0by1sb2FkaW5nIHNhZmUgcGF0 aCcuCisrCisrMjAxMi0wNS0xMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgorKworIAlJbXBsZW1lbnQgbXVsdGktY29tcG9uZW50IC0td2l0aC1hdXRvLWxvYWQt ZGlyLgorIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcpOiBOZXcgcmVmZXJlbmNlcworIAlm b3IgJ3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknCistLS0gc3JjL2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAxMi8wNS8xMSAxODoyMDoyNgkxLjk1OQorKysrIHNyYy9nZGIvZG9jL2dkYi50 ZXhpbmZvCTIwMTIvMDUvMTEgMTg6MjM6MTEJMS45NjAKK0BAIC0yMDk3Myw2ICsyMDk3MywxMCBA QAorIHJlc3VsdHMgb3IgaW50cm9kdWNlIHNlY3VyaXR5IHJpc2tzIChlLmcuLCBpZiB0aGUgZmls ZSBjb21lcyBmcm9tIHVudHJ1c3RlZAorIHNvdXJjZXMpLgorIAorK05vdGUgdGhhdCBsb2FkaW5n IG9mIHRoZXNlIGFzc29jaWF0ZWQgZmlsZXMgKGluY2x1ZGluZyB0aGUgbG9jYWwgQGZpbGV7Lmdk YmluaXR9CisrZmlsZSkgcmVxdWlyZXMgYWNjb3JkaW5nbHkgY29uZmlndXJlZCBAY29kZXthdXRv LWxvYWQgc2FmZS1wYXRofQorKyhAcHhyZWZ7QXV0by1sb2FkaW5nIHNhZmUgcGF0aH0pLgorKwor IEZvciB0aGVzZSByZWFzb25zLCBAdmFsdWV7R0RCTn0gaW5jbHVkZXMgY29tbWFuZHMgYW5kIG9w dGlvbnMgdG8gbGV0IHlvdQorIGNvbnRyb2wgd2hlbiB0byBhdXRvLWxvYWQgZmlsZXMgYW5kIHdo aWNoIGZpbGVzIHNob3VsZCBiZSBhdXRvLWxvYWRlZC4KKyAKK0BAIC0yMTExMiw2ICsyMTExNiw5 IEBACisgZnJvbSBpbml0IGZpbGUgKGlmIGFueSkgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJl Y3RvcnksCisgc2VlIEByZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJp bmcgU3RhcnR1cH0uCisgCisrTm90ZSB0aGF0IGxvYWRpbmcgb2YgdGhpcyBsb2NhbCBAZmlsZXsu Z2RiaW5pdH0gZmlsZSBhbHNvIHJlcXVpcmVzIGFjY29yZGluZ2x5CisrY29uZmlndXJlZCBAY29k ZXthdXRvLWxvYWQgc2FmZS1wYXRofSAoQHB4cmVme0F1dG8tbG9hZGluZyBzYWZlIHBhdGh9KS4K KysKKyBAdGFibGUgQGNvZGUKKyBAYW5jaG9ye3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0K KyBAa2luZGV4IHNldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAorQEAgLTIxMTQ4LDYgKzIxMTU1 LDkgQEAKKyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifSBpcyBlbmFibGVkIGJlZm9yZSB0cnlpbmcg dG8gb3BlbiBzdWNoIHRocmVhZCBkZWJ1Z2dpbmcKKyBsaWJyYXJ5LgorIAorK05vdGUgdGhhdCBs b2FkaW5nIG9mIHRoaXMgZGVidWdnaW5nIGxpYnJhcnkgYWxzbyByZXF1aXJlcyBhY2NvcmRpbmds eSBjb25maWd1cmVkCisrQGNvZGV7YXV0by1sb2FkIHNhZmUtcGF0aH0gKEBweHJlZntBdXRvLWxv YWRpbmcgc2FmZSBwYXRofSkuCisrCisgQHRhYmxlIEBjb2RlCisgQGFuY2hvcntzZXQgYXV0by1s b2FkIGxpYnRocmVhZC1kYn0KKyBAa2luZGV4IHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCitA QCAtMjExNzUsNiArMjExODUsOSBAQAorIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgKEBw eHJlZntTZXF1ZW5jZXN9KSwgYXMgbG9uZyBhcyBAc2FtcHtzZXQKKyBhdXRvLWxvYWQgZ2RiLXNj cmlwdHN9IGlzIHNldCB0byBAc2FtcHtvbn0uCisgCisrTm90ZSB0aGF0IGxvYWRpbmcgb2YgdGhp cyBzY3JpcHQgZmlsZSBhbHNvIHJlcXVpcmVzIGFjY29yZGluZ2x5IGNvbmZpZ3VyZWQKKytAY29k ZXthdXRvLWxvYWQgc2FmZS1wYXRofSAoQHB4cmVme0F1dG8tbG9hZGluZyBzYWZlIHBhdGh9KS4K KysKKyBGb3IgbW9yZSBiYWNrZ3JvdW5kIHJlZmVyIHRvIHRoZSBzaW1pbGFyIFB5dGhvbiBzY3Jp cHRzIGF1dG8tbG9hZGluZworIGRlc2NyaXB0aW9uIChAcHhyZWZ7b2JqZmlsZS1nZGIucHkgZmls ZX0pLgorIAorQEAgLTI1NDY1LDcgKzI1NDc4LDEwIEBACisgZGlyZWN0b3JpZXMgbWVudGlvbmVk IGluIHRoZSB2YWx1ZSBvZiBAY29kZXtkZWJ1Zy1maWxlLWRpcmVjdG9yeX0uCisgCisgRmluYWxs eSwgaWYgdGhpcyBmaWxlIGRvZXMgbm90IGV4aXN0LCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxv b2sgZm9yCistQHZhcntzY3JpcHQtbmFtZX0gZmlsZSBpbiBhbGwgb2YgdGhlIGRpcmVjdG9yaWVz IHNwZWNpZmllZCBieToKKytAdmFye3NjcmlwdC1uYW1lfSBmaWxlIGluIGFsbCBvZiB0aGUgZGly ZWN0b3JpZXMgYXMgc3BlY2lmaWVkIGJlbG93LgorKworK05vdGUgdGhhdCBsb2FkaW5nIG9mIHRo aXMgc2NyaXB0IGZpbGUgYWxzbyByZXF1aXJlcyBhY2NvcmRpbmdseSBjb25maWd1cmVkCisrQGNv ZGV7YXV0by1sb2FkIHNhZmUtcGF0aH0gKEBweHJlZntBdXRvLWxvYWRpbmcgc2FmZSBwYXRofSku CisgCisgQHRhYmxlIEBjb2RlCisgQGFuY2hvcntzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0 b3J5fQorQEAgLTI1NTQyLDYgKzI1NTU4LDkgQEAKKyAKKyBUaGUgc2NyaXB0IG5hbWUgbWF5IGlu Y2x1ZGUgZGlyZWN0b3JpZXMgaWYgZGVzaXJlZC4KKyAKKytOb3RlIHRoYXQgbG9hZGluZyBvZiB0 aGlzIHNjcmlwdCBmaWxlIGFsc28gcmVxdWlyZXMgYWNjb3JkaW5nbHkgY29uZmlndXJlZAorK0Bj b2Rle2F1dG8tbG9hZCBzYWZlLXBhdGh9IChAcHhyZWZ7QXV0by1sb2FkaW5nIHNhZmUgcGF0aH0p LgorKworIElmIHRoZSBtYWNybyBpcyBwdXQgaW4gYSBoZWFkZXIsIGFueSBhcHBsaWNhdGlvbiBv ciBsaWJyYXJ5CisgdXNpbmcgdGhpcyBoZWFkZXIgd2lsbCBnZXQgYSByZWZlcmVuY2UgdG8gdGhl IHNwZWNpZmllZCBzY3JpcHQuCisgCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTI1b2YyOC5w YXRjaCBiL2dkYi1hdXRvbG9hZC0yNW9mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uYWM1OTM5YwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0yNW9m MjgucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMi0wNS9tc2cwMDA5MS5odG1sCisKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAx Mi8wNS8xMSAyMjoyNDoyMgkxLjEzMTUKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8w NS8xMiAxNDoyMDozMAkxLjEzMTYKKyMjIC0xLDMgKzEsOSBAQAorKzIwMTItMDUtMTIgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysJICAgIEVsaSBaYXJldHNr aWkgIDxlbGl6QGdudS5vcmc+CisrCisrCSogZ2RiLnRleGluZm8gKFNlcGFyYXRlIERlYnVnIEZp bGVzKTogVXNlIHBsdXJhbCBmb3JtIGZvciBnbG9iYWwKKysJZGVidWdnaW5nIGluZm9ybWF0aW9u IGRpcmVjdG9yeS4KKysKKyAyMDEyLTA1LTExICBTdGFuIFNoZWJzICA8c3RhbkBjb2Rlc291cmNl cnkuY29tPgorIAkgICAgS3dvayBDaGV1bmcgWWV1bmcgIDxrY3lAY29kZXNvdXJjZXJ5LmNvbT4K KyAKKy0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA1LzExIDIyOjI0OjIyCTEuOTYx CisrKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNS8xMiAxNDoyMDozMQkxLjk2Mgor QEAgLTE2Mjg3LDcgKzE2Mjg3LDcgQEAKKyBAY2luZGV4IGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBp biBzZXBhcmF0ZSBmaWxlcworIEBjaW5kZXggQGZpbGV7LmRlYnVnfSBzdWJkaXJlY3Rvcmllcwor IEBjaW5kZXggZGVidWdnaW5nIGluZm9ybWF0aW9uIGRpcmVjdG9yeSwgZ2xvYmFsCistQGNpbmRl eCBnbG9iYWwgZGVidWdnaW5nIGluZm9ybWF0aW9uIGRpcmVjdG9yeQorK0BjaW5kZXggZ2xvYmFs IGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBkaXJlY3RvcmllcworIEBjaW5kZXggYnVpbGQgSUQsIGFu ZCBzZXBhcmF0ZSBkZWJ1Z2dpbmcgZmlsZXMKKyBAY2luZGV4IEBmaWxley5idWlsZC1pZH0gZGly ZWN0b3J5CisgCitAQCAtMTYzMzIsMTQgKzE2MzMyLDE0IEBACisgQGl0ZW0KKyBGb3IgdGhlIGBg ZGVidWcgbGluaycnIG1ldGhvZCwgQHZhbHVle0dEQk59IGxvb2tzIHVwIHRoZSBuYW1lZCBmaWxl IGluCisgdGhlIGRpcmVjdG9yeSBvZiB0aGUgZXhlY3V0YWJsZSBmaWxlLCB0aGVuIGluIGEgc3Vi ZGlyZWN0b3J5IG9mIHRoYXQKKy1kaXJlY3RvcnkgbmFtZWQgQGZpbGV7LmRlYnVnfSwgYW5kIGZp bmFsbHkgdW5kZXIgdGhlIGdsb2JhbCBkZWJ1ZworLWRpcmVjdG9yeSwgaW4gYSBzdWJkaXJlY3Rv cnkgd2hvc2UgbmFtZSBpcyBpZGVudGljYWwgdG8gdGhlIGxlYWRpbmcKKytkaXJlY3RvcnkgbmFt ZWQgQGZpbGV7LmRlYnVnfSwgYW5kIGZpbmFsbHkgdW5kZXIgZWFjaCBvbmUgb2YgdGhlIGdsb2Jh bCBkZWJ1ZworK2RpcmVjdG9yaWVzLCBpbiBhIHN1YmRpcmVjdG9yeSB3aG9zZSBuYW1lIGlzIGlk ZW50aWNhbCB0byB0aGUgbGVhZGluZworIGRpcmVjdG9yaWVzIG9mIHRoZSBleGVjdXRhYmxlJ3Mg YWJzb2x1dGUgZmlsZSBuYW1lLgorIAorIEBpdGVtCisgRm9yIHRoZSBgYGJ1aWxkIElEJycgbWV0 aG9kLCBAdmFsdWV7R0RCTn0gbG9va3MgaW4gdGhlCistQGZpbGV7LmJ1aWxkLWlkfSBzdWJkaXJl Y3Rvcnkgb2YgdGhlIGdsb2JhbCBkZWJ1ZyBkaXJlY3RvcnkgZm9yIGEgZmlsZQorLW5hbWVkIEBm aWxle0B2YXJ7bm59L0B2YXJ7bm5ubm5ubm59LmRlYnVnfSwgd2hlcmUgQHZhcntubn0gYXJlIHRo ZQorK0BmaWxley5idWlsZC1pZH0gc3ViZGlyZWN0b3J5IG9mIGVhY2ggb25lIG9mIHRoZSBnbG9i YWwgZGVidWcgZGlyZWN0b3JpZXMgZm9yCisrYSBmaWxlIG5hbWVkIEBmaWxle0B2YXJ7bm59L0B2 YXJ7bm5ubm5ubm59LmRlYnVnfSwgd2hlcmUgQHZhcntubn0gYXJlIHRoZQorIGZpcnN0IDIgaGV4 IGNoYXJhY3RlcnMgb2YgdGhlIGJ1aWxkIElEIGJpdCBzdHJpbmcsIGFuZCBAdmFye25ubm5ubm5u fQorIGFyZSB0aGUgcmVzdCBvZiB0aGUgYml0IHN0cmluZy4gIChSZWFsIGJ1aWxkIElEIHN0cmlu Z3MgYXJlIDMyIG9yIG1vcmUKKyBoZXggY2hhcmFjdGVycywgbm90IDEwLikKK0BAIC0xNjM0OCw3 ICsxNjM0OCw3IEBACisgU28sIGZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhc2sgQHZhbHVle0dE Qk59IHRvIGRlYnVnCisgQGZpbGV7L3Vzci9iaW4vbHN9LCB3aGljaCBoYXMgYSBkZWJ1ZyBsaW5r IHRoYXQgc3BlY2lmaWVzIHRoZQorIGZpbGUgQGZpbGV7bHMuZGVidWd9LCBhbmQgYSBidWlsZCBJ RCB3aG9zZSB2YWx1ZSBpbiBoZXggaXMKKy1AY29kZXthYmNkZWYxMjM0fS4gIElmIHRoZSBnbG9i YWwgZGVidWcgZGlyZWN0b3J5IGlzCisrQGNvZGV7YWJjZGVmMTIzNH0uICBJZiB0aGUgbGlzdCBv ZiB0aGUgZ2xvYmFsIGRlYnVnIGRpcmVjdG9yaWVzIGluY2x1ZGVzCisgQGZpbGV7L3Vzci9saWIv ZGVidWd9LCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxvb2sgZm9yIHRoZSBmb2xsb3dpbmcKKyBk ZWJ1ZyBpbmZvcm1hdGlvbiBmaWxlcywgaW4gdGhlIGluZGljYXRlZCBvcmRlcjoKKyAKK0BAIC0x NjM2Myw4ICsxNjM2Myw4IEBACisgQGZpbGV7L3Vzci9saWIvZGVidWcvdXNyL2Jpbi9scy5kZWJ1 Z30uCisgQGVuZCBpdGVtaXplCisgCistWW91IGNhbiBzZXQgdGhlIGdsb2JhbCBkZWJ1Z2dpbmcg aW5mbyBkaXJlY3RvcnkncyBuYW1lLCBhbmQgdmlldyB0aGUKKy1uYW1lIEB2YWx1ZXtHREJOfSBp cyBjdXJyZW50bHkgdXNpbmcuCisrWW91IGNhbiBzZXQgdGhlIGdsb2JhbCBkZWJ1Z2dpbmcgaW5m byBkaXJlY3RvcmllcywgYW5kIHZpZXcgdGhlCisrbGlzdCBAdmFsdWV7R0RCTn0gaXMgY3VycmVu dGx5IHVzaW5nLgorIAorIEB0YWJsZSBAY29kZQorIAoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9h ZC0yNm9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMjZvZjI4LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4OGM0M2QKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0 b2xvYWQtMjZvZjI4LnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA1L21zZzAwNDQ5Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0g Q29zbWV0aWMgZml4ICdzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGZvciAiOiIgIFtSZTogW3Bh dGNoIDEvMl0gUHJvdmlkZSAkZGRpciBzdWJzdGl0dXRpb24gZm9yIC0td2l0aC1hdXRvLWxvYWQt c2FmZS1wYXRoXQorCitPbiBGcmksIDExIE1heSAyMDEyIDIxOjMzOjUzICswMjAwLCBKYW4gS3Jh dG9jaHZpbCB3cm90ZToKKz4gT24gRnJpLCAxMSBNYXkgMjAxMiAyMToxNDo0NyArMDIwMCwgUGVk cm8gQWx2ZXMgd3JvdGU6Cis+ID4gTG9va3MgbGlrZSB0aGVyZSBpcyBzb21lIHNwZWNpYWwgY2Fz aW5nIHNvbWV3aGVyZToKKz4gCis+IFRydWUsIEkgZm9yZ290IGFuZCBJIGFncmVlLiAgQnV0IGl0 IGlzIG9ubHkgdGhpcyAiY29zbWV0aWMiIG1lc3NhZ2UsIGl0IGhhcyBubworPiBmdW5jdGlvbmFs aXR5IGVmZmVjdC4gIEkgY2FuIGZpeCB0aGlzICJhbnkgZGlyZWN0b3J5IiBtZXNzYWdlIGNvbmRp dGlvbmFsLgorCitSZWdhcmRzLAorSmFuCisKKworZ2RiLworMjAxMi0wNS0xMSAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBhdXRvLWxvYWQuYyAoc2hv d19hdXRvX2xvYWRfc2FmZV9wYXRoKTogQWNjZXB0IGFueSBjb21iaW5hdGlvbiBvZgorCURJUk5B TUVfU0VQQVJBVE9SIGFuZCBJU19ESVJfU0VQQVJBVE9SIGZvciB3aWxkLW1hdGNoLgorCitkaWZm IC0tZ2l0IGEvZ2RiL2F1dG8tbG9hZC5jIGIvZ2RiL2F1dG8tbG9hZC5jCitpbmRleCA1ZWUxMTdm Li40NjJlZTA2IDEwMDY0NAorLS0tIGEvZ2RiL2F1dG8tbG9hZC5jCisrKysgYi9nZGIvYXV0by1s b2FkLmMKK0BAIC0yNDEsNyArMjQxLDE1IEBAIHN0YXRpYyB2b2lkCisgc2hvd19hdXRvX2xvYWRf c2FmZV9wYXRoIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorIAkJCSAgc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorIHsKKy0gIGlmIChz dHJjbXAgKHZhbHVlLCAiLyIpID09IDApCisrICBjb25zdCBjaGFyICpjczsKKysKKysgIC8qIENo ZWNrIGlmIHVzZXIgaGFzIGVudGVyZWQgZWl0aGVyICIvIiBvciBmb3IgZXhhbXBsZSAiOiIuCisr ICAgICBCdXQgd2hpbGUgbW9yZSBjb21wbGljYXRlIGNvbnRlbnQgbGlrZSAiOi9mb28iIHdvdWxk IHN0aWxsIGFsc28KKysgICAgIHBlcm1pdCBhbnkgbG9jYXRpb24gZG8gbm90IGhpZGUgdGhvc2Uu ICAqLworKworKyAgZm9yIChjcyA9IHZhbHVlOyAqY3MgJiYgKCpjcyA9PSBESVJOQU1FX1NFUEFS QVRPUiB8fCBJU19ESVJfU0VQQVJBVE9SICgqY3MpKTsKKysgICAgICAgY3MrKyk7CisrICBpZiAo KmNzID09IDApCisgICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZCBmaWxl cyBhcmUgc2FmZSB0byBsb2FkIGZyb20gYW55ICIKKyAJCQkgICAgICAiZGlyZWN0b3J5LlxuIikp OworICAgZWxzZQorCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTI3b2YyOC5wYXRjaCBiL2dk Yi1hdXRvbG9hZC0yN29mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMjI4ZDk1OAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0yN29mMjgucGF0Y2gK QEAgLTAsMCArMSwyMjUgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEyLTA1L21zZzAwNDc2Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaCAxLzJdIGF1dG8tbG9hZDogUmVu YW1lICRkZGlyIHRvICRkYXRhZGlyCisKK0hpLAorCit3aGVuIERvdWcgc3VnZ2VzdGVkICRkZGly IGZvciBkYXRhLWRpcmVjdG9yeSwgc2ltaWxhciB0byAkY2RpciwgJHBkaXIgYW5kCiskc2RpciBh bHJlYWR5IGluIHVzZSwgaXQgbWFkZSBzZW5zZS4KKworQnV0IGN1cnJlbnRseSBJIG5lZWQgdG8g aW50cm9kdWNlIGFsc28gYSB2YXJpYWJsZSBmb3IgZGVidWctZmlsZS1kaXJlY3RvcnkgYW5kCito YXZpbmcgYm90aCAkZGRpciBhbmQgJGRlYnVnZGlyIHZhbGlkIGluIHRoZSBzYW1lIHN0cmluZyBz ZWVtcyB0byBiZSBjb25mdXNpbmcuCisKK1RoZXJlZm9yZSBwcm9wb3NpbmcgdG8gaGF2ZSAkZGF0 YWRpciBhbmQgJGRlYnVnZGlyIGluc3RlYWQgaW4gdGhlIG5leHQgcGF0Y2gsCit0aGlzIHBhdGNo IGlzIGp1c3QgYSBtYWNoYW5pY2FsIHJlbmFtZSAkZGRpciAtPiAkZGF0YWRpci4KKworSSBkbyBu b3QgdGhpbmsgaXQgbmVlZHMgYmFja3dhcmQgY29tcGF0aWJpbHV0eSBhcyAkZGRpciBoYXMgbm90 IHlldCBiZWVuIGluCithbnkgR0RCIHJlbGVhc2UuCisKKworVGhhbmtzLAorSmFuCisKKworZ2Ri LworMjAxMi0wNS0xMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgorCisJUmVuYW1lICRkZGlyIHRvICRkYXRhZGlyLgorCSogTkVXUyAoLS13aXRoLWF1dG8tbG9h ZC1kaXIpOiBSZW5hbWUgJGRkaXIgdG8gJGRhdGFkaXIuCisJKiBhdXRvLWxvYWQuYyAoYXV0b19s b2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlKQorCShhdXRvX2xvYWRfZ2RiX2RhdGFkaXJfY2hhbmdl ZCwgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogTGlrZXdpc2UuCisJKiBjb25maWd1cmU6IFJl Z2VuZXJhdGUuCisJKiBjb25maWd1cmUuYWMgKC0td2l0aC1hdXRvLWxvYWQtZGlyLCAtLXdpdGgt YXV0by1sb2FkLXNhZmUtcGF0aCk6CisJTGlrZXdpc2UuICBSZW1vdmUgdGhlICd1c2UgJGRkaXIn IGhlbHAgc3RyaW5nLgorCitnZGIvZG9jLworMjAxMi0wNS0xMiAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJUmVuYW1lICRkZGlyIHRvICRkYXRhZGlyLgor CSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZywgQXV0by1sb2FkaW5nIHNhZmUgcGF0aCkKKwko b2JqZmlsZS1nZGIucHkgZmlsZSk6IFJlbmFtZSAkZGRpciB0byAkZGF0YWRpci4KKworSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNS0xNCAxNDoyNDoxNS4xMTI0OTAyODYgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDUtMTQgMTQ6MjQ6MjAu MjI0NDgwMjEwICswMjAwCitAQCAtMzE3LDggKzMxNyw4IEBAIHNob3cgdHJhY2Utc3RvcC1ub3Rl cworIAorIC0td2l0aC1hdXRvLWxvYWQtZGlyCisgICBDb25maWd1cmUgZGVmYXVsdCB2YWx1ZSBm b3IgdGhlICdzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5JworLSAgc2V0dGluZyBhYm92 ZS4gIEl0IGRlZmF1bHRzIHRvICckZGRpci9hdXRvLWxvYWQnLCAkZGRpciByZXByZXNlbnRpbmcK Ky0gIEdEQidzIGRhdGEgZGlyZWN0b3J5IChhdmFpbGFibGUgdmlhIHNob3cgZGF0YS1kaXJlY3Rv cnkpLgorKyAgc2V0dGluZyBhYm92ZS4gIEl0IGRlZmF1bHRzIHRvICckZGF0YWRpci9hdXRvLWxv YWQnLCAkZGF0YWRpcgorKyAgcmVwcmVzZW50aW5nIEdEQidzIGRhdGEgZGlyZWN0b3J5IChhdmFp bGFibGUgdmlhIHNob3cgZGF0YS1kaXJlY3RvcnkpLgorIAorIC0td2l0aC1hdXRvLWxvYWQtc2Fm ZS1wYXRoCisgICBDb25maWd1cmUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICdzZXQgYXV0by1sb2Fk IHNhZmUtcGF0aCcgc2V0dGluZworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8t bG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRv LWxvYWQuYwkyMDEyLTA1LTE0IDE0OjI0OjE1LjExMjQ5MDI4NiArMDIwMAorKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDUtMTQgMTQ6MjQ6MjAuMjI0NDgwMjEw ICswMjAwCitAQCAtMTc0LDEzICsxNzQsMTMgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBk YXRlICh2b2lkKQorICAgICAgIGNoYXIgKmRkaXJfc3Vic3QsICpleHBhbmRlZCwgKnJlYWxfcGF0 aDsKKyAKKyAgICAgICBkZGlyX3N1YnN0ID0geHN0cmR1cCAoZGlyKTsKKy0gICAgICBzdWJzdGl0 dXRlX3BhdGhfY29tcG9uZW50ICgmZGRpcl9zdWJzdCwgIiRkZGlyIiwgZ2RiX2RhdGFkaXIpOwor KyAgICAgIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKCZkZGlyX3N1YnN0LCAiJGRhdGFkaXIi LCBnZGJfZGF0YWRpcik7CisgICAgICAgZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRkaXJfc3Vi c3QpOworICAgICAgIHhmcmVlIChkZGlyX3N1YnN0KTsKKyAgICAgICByZWFsX3BhdGggPSBnZGJf cmVhbHBhdGggKGV4cGFuZGVkKTsKKyAKKyAgICAgICAvKiBFbnN1cmUgdGhlIGN1cnJlbnQgZW50 cnkgaXMgYXQgbGVhc3QgYSB2YWxpZCBwYXRoICh0aGVyZWZvcmUKKy0JICRkZGlyLWV4cGFuZGVk IGFuZCB0aWxkZS1leHBhbmRlZCkuICAqLworKwkgJGRhdGFkaXItZXhwYW5kZWQgYW5kIHRpbGRl LWV4cGFuZGVkKS4gICovCisgICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBhdXRvX2xvYWRf c2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKKyAKKyAgICAgICBpZiAoZGVidWdfYXV0b19s b2FkKQorQEAgLTIxMiw3ICsyMTIsNyBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUg KHZvaWQpCisgICAgIH0KKyB9CisgCistLyogVmFyaWFibGUgZ2RiX2RhdGFkaXIgaGFzIGJlZW4g c2V0LiAgVXBkYXRlIGNvbnRlbnQgZGVwZW5kaW5nIG9uICRkZGlyLiAgKi8KKysvKiBWYXJpYWJs ZSBnZGJfZGF0YWRpciBoYXMgYmVlbiBzZXQuICBVcGRhdGUgY29udGVudCBkZXBlbmRpbmcgb24g JGRhdGFkaXIuICAqLworIAorIHN0YXRpYyB2b2lkCisgYXV0b19sb2FkX2dkYl9kYXRhZGlyX2No YW5nZWQgKHZvaWQpCitAQCAtNjk5LDcgKzY5OSw3IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3Njcmlw dCAoc3RydWN0IG9iamZpbGUKKyAgICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJf cHRyLCB2ZWMsIGl4LCBkaXIpOyArK2l4KQorIAl7CisgCSAgZGVidWdmaWxlID0geHN0cmR1cCAo ZGlyKTsKKy0JICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50ICgmZGVidWdmaWxlLCAiJGRkaXIi LCBnZGJfZGF0YWRpcik7CisrCSAgc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoJmRlYnVnZmls ZSwgIiRkYXRhZGlyIiwgZ2RiX2RhdGFkaXIpOworIAkgIGRlYnVnZmlsZSA9IHhyZWFsbG9jIChk ZWJ1Z2ZpbGUsIChzdHJsZW4gKGRlYnVnZmlsZSkKKyAJCQkJCSAgICArIHN0cmxlbiAoZmlsZW5h bWUpICsgMSkpOworIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlCTIw MTItMDUtMTQgMTQ6MjQ6MTUuMTEyNDkwMjg2ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvY29uZmlndXJlCTIwMTItMDUtMTQgMTQ6MjQ6MzguNTY0NDQ0MDYxICswMjAwCitAQCAt MTY2OSwxMSArMTY2OSwxMCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1ycG0gICAg ICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMv bm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQorICAg LS13aXRoLWF1dG8tbG9hZC1kaXI9UEFUSAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGly ZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMsCistICAgICAg ICAgICAgICAgICAgICAgICAgICB1c2UgJyRkZGlyJyBmb3IgLWRhdGEtZGlyZWN0b3J5IFskZGRp ci9hdXRvLWxvYWRdCisrICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBmcm9t IHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cworKyAgICAgICAgICAgICAgICAgICAg ICAgICAgWyRkYXRhZGlyL2F1dG8tbG9hZF0KKyAgIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRo PVBBVEgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9s ZCBhdXRvLWxvYWRlZCBmaWxlcywgdXNlCistICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRp ciBmb3IgLS13aXRoLWdkYi1kYXRhZGlyIHBhdGgKKysgICAgICAgICAgICAgICAgICAgICAgICAg IGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcworICAgICAgICAgICAg ICAgICAgICAgICAgICAgWy0td2l0aC1hdXRvLWxvYWQtZGlyXQorICAgLS13aXRob3V0LWF1dG8t bG9hZC1zYWZlLXBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCByZXN0cmlj dCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnMKK0BAIC04NDk1LDEwICs4NDk0LDEwIEBAICRh c19lY2hvX24gImNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG8KKyBpZiB0ZXN0ICIke3dpdGhf YXV0b19sb2FkX2RpcitzZXR9IiA9IHNldDsgdGhlbiA6CisgICB3aXRodmFsPSR3aXRoX2F1dG9f bG9hZF9kaXI7CisgZWxzZQorLSAgd2l0aF9hdXRvX2xvYWRfZGlyPSckZGRpci9hdXRvLWxvYWQn CisrICB3aXRoX2F1dG9fbG9hZF9kaXI9JyRkYXRhZGlyL2F1dG8tbG9hZCcKKyBmaQorIAorLWVz Y2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bJF1kZGlyXD4vXFxc XFxcXFxcXFxcJi9nJ2AKKytlc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9kaXIgfCBz ZWQgJ3MvWyRdZGF0YWRpclw+L1xcXFxcXFxcXFxcXCYvZydgCisgCisgICB0ZXN0ICJ4JHByZWZp eCIgPSB4Tk9ORSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKyAgIHRlc3QgIngkZXhl Y19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKK0BAIC04NTI1LDcg Kzg1MjQsNyBAQCBlbHNlCisgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiR3aXRoX2F1dG9f bG9hZF9kaXIiCisgZmkKKyAKKy1lc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGggfCBzZWQgJ3MvWyRdZGRpclw+L1xcXFxcXFxcXFxcXCYvZydgCisrZXNjYXBlX2Rpcj1g ZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1skXWRhdGFkaXJcPi9cXFxc XFxcXFxcXFwmL2cnYAorIAorICAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIk YWNfZGVmYXVsdF9wcmVmaXgiCisgICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4 ZWNfcHJlZml4PScke3ByZWZpeH0nCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29u ZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9j b25maWd1cmUuYWMJMjAxMi0wNS0xNCAxNDoyNDoxNS4xMTI0OTAyODYgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNS0xNCAxNDoyNDoyMC4yMjg0 ODAyMDIgKzAyMDAKK0BAIC0zNDIsOSArMzQyLDkgQEAgZmkKKyBBQ19NU0dfQ0hFQ0tJTkcoW2Zv ciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJlY3RvcnldKQorIEFDX0FSR19XSVRIKGF1dG8tbG9hZC1k aXIsCisgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtZGlyPVBBVEhdLAorLSAgW2Rp cmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLCB1c2UgJyRk ZGlyJyBmb3IgLWRhdGEtZGlyZWN0b3J5IEA8OkAkZGRpci9hdXRvLWxvYWRAOj5AXSksLAorLSAg W3dpdGhfYXV0b19sb2FkX2Rpcj0nJGRkaXIvYXV0by1sb2FkJ10pCistZXNjYXBlX2Rpcj1gZWNo byAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdzL1tbJF1dZGRpclw+L1xcXFxcXFxcXFxcXCYv ZydgCisrICBbZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlw dHMgQDw6QCRkYXRhZGlyL2F1dG8tbG9hZEA6PkBdKSwsCisrICBbd2l0aF9hdXRvX2xvYWRfZGly PSckZGF0YWRpci9hdXRvLWxvYWQnXSkKKytlc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9h ZF9kaXIgfCBzZWQgJ3MvW1skXV1kYXRhZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKKyBBQ19ERUZJ TkVfRElSKEFVVE9fTE9BRF9ESVIsIGVzY2FwZV9kaXIsCisgCSAgICAgIFtEaXJlY3RvcmllcyBm cm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy5dKQorIEFDX01TR19SRVNVTFQo WyR3aXRoX2F1dG9fbG9hZF9kaXJdKQorQEAgLTM1MiwxNCArMzUyLDE0IEBAIEFDX01TR19SRVNV TFQoWyR3aXRoX2F1dG9fbG9hZF9kaXJdKQorIEFDX01TR19DSEVDS0lORyhbZm9yIGRlZmF1bHQg YXV0by1sb2FkIHNhZmUtcGF0aF0pCisgQUNfQVJHX1dJVEgoYXV0by1sb2FkLXNhZmUtcGF0aCwK KyBBU19IRUxQX1NUUklORyhbLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0sCistICBb ZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLCB1c2UgJGRkaXIgZm9y IC0td2l0aC1nZGItZGF0YWRpciBwYXRoIEA8OkAtLXdpdGgtYXV0by1sb2FkLWRpckA6PkBdKQor KyAgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcyBAPDpALS13aXRo LWF1dG8tbG9hZC1kaXJAOj5AXSkKKyBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9h ZC1zYWZlLXBhdGhdLAorICAgICAgICAgICAgICAgIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2Fk ZWQgZmlsZXMgbG9jYXRpb25zXSksCisgICAgIFtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2Fm ZV9wYXRoIiA9ICJubyI7IHRoZW4KKyAgICAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIK KyAgICAgIGZpXSwKKyBbd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkd2l0aF9hdXRvX2xvYWRf ZGlyIl0pCistZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2Vk ICdzL1tbJF1dZGRpclw+L1xcXFxcXFxcXFxcXCYvZydgCisrZXNjYXBlX2Rpcj1gZWNobyAkd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1tbJF1dZGF0YWRpclw+L1xcXFxcXFxcXFxc XCYvZydgCisgQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBlc2NhcGVfZGlyLAor IAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCisg QUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu NC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0xNCAxNDoyNDox NS4xMTM0OTAyODQgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMi0wNS0xNCAxNDoyNDoyMC4yMzQ0ODAxOTAgKzAyMDAKK0BAIC0yMDgwNyw5ICsy MDgwNyw5IEBAIGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQKKyAgICAg ICAgICAgICAgICAgaXMgb24uCisgcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0 aG9uIHNjcmlwdHMgaXMgb24uCisgc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9t IHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCistICAgICAgICAgICAgaXMgJGRk aXIvYXV0by1sb2FkLgorKyAgICAgICAgICAgIGlzICRkYXRhZGlyL2F1dG8tbG9hZC4KKyBzY3Jp cHRzLWRpcmVjdG9yeTogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1 dG8tbG9hZGVkIHNjcmlwdHMKKy0gICAgICAgICAgICAgICAgICAgIGlzICRkZGlyL2F1dG8tbG9h ZC4KKysgICAgICAgICAgICAgICAgICAgIGlzICRkYXRhZGlyL2F1dG8tbG9hZC4KKyBAZW5kIHNt YWxsZXhhbXBsZQorIAorIEBhbmNob3J7aW5mbyBhdXRvLWxvYWR9CitAQCAtMjEwMjUsOSArMjEw MjUsOSBAQCBnZXQgbG9hZGVkOgorICQgLi9nZGIgLXEgLi9nZGIKKyBSZWFkaW5nIHN5bWJvbHMg ZnJvbSAvaG9tZS91c2VyL2dkYi9nZGIuLi5kb25lLgorIHdhcm5pbmc6IEZpbGUgIi9ob21lL3Vz ZXIvZ2RiL2dkYi1nZGIuZ2RiIiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KKy0gICAgICAgICBkZWNs aW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRkZGlyL2F1dG8tbG9h ZCIuCisrICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0 IHRvICIkZGF0YWRpci9hdXRvLWxvYWQiLgorIHdhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2Ri L2dkYi1nZGIucHkiIGF1dG8tbG9hZGluZyBoYXMgYmVlbgorLSAgICAgICAgIGRlY2xpbmVkIGJ5 IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiJGRkaXIvYXV0by1sb2FkIi4KKysg ICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRk YXRhZGlyL2F1dG8tbG9hZCIuCisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBUaGUgbGlzdCBvZiB0 cnVzdGVkIGRpcmVjdG9yaWVzIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGZvbGxvd2luZyBjb21tYW5k czoKK0BAIC0yMTA2MCw3ICsyMTA2MCw3IEBAIGhvc3QgcGxhdGZvcm0gcGF0aCBzZXBhcmF0b3Ig aW4gdXNlLgorIEBlbmQgdGFibGUKKyAKKyBUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIHdoYXQg QGNvZGV7LS13aXRoLWF1dG8tbG9hZC1kaXJ9IGhhcyBiZWVuIGNvbmZpZ3VyZWQKKy10byAoQHB4 cmVme3dpdGgtYXV0by1sb2FkLWRpcn0pLiAgQGZpbGV7JGRkaXJ9IHN1YnN0aXR1YXRpb24gYXBw bGllcyB0aGUgc2FtZQorK3RvIChAcHhyZWZ7d2l0aC1hdXRvLWxvYWQtZGlyfSkuICBAZmlsZXsk ZGF0YWRpcn0gc3Vic3RpdHVhdGlvbiBhcHBsaWVzIHRoZSBzYW1lCisgYXMgZm9yIEB4cmVme3Nl dCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3Rvcnl9LgorIFRoZSBkZWZhdWx0IEBjb2Rle3NldAor IGF1dG8tbG9hZCBzYWZlLXBhdGh9IHZhbHVlIGNhbiBiZSBhbHNvIG92ZXJyaWRlbiBieSBAdmFs dWV7R0RCTn0gY29uZmlndXJhdGlvbgorQEAgLTI1MTgxLDE0ICsyNTE4MSwxNCBAQCBFYWNoIGVu dHJ5IGhlcmUgbmVlZHMgdG8gYmUgY292ZXJlZCBhbHNvCisgQGNvZGV7c2V0IGF1dG8tbG9hZCBz YWZlLXBhdGh9IChAcHhyZWZ7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9KS4KKyAKKyBAYW5jaG9y e3dpdGgtYXV0by1sb2FkLWRpcn0KKy1UaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIEBmaWxleyRk ZGlyL2F1dG8tbG9hZH0uICBUaGUgZGVmYXVsdCBAY29kZXtzZXQKKytUaGlzIHZhcmlhYmxlIGRl ZmF1bHRzIHRvIEBmaWxleyRkYXRhZGlyL2F1dG8tbG9hZH0uICBUaGUgZGVmYXVsdCBAY29kZXtz ZXQKKyBhdXRvLWxvYWQgc2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkg QHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24KKyBvcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1s b2FkLWRpcn0uCisgCistQW55IHVzZWQgc3RyaW5nIEBmaWxleyRkZGlyfSB3aWxsIGdldCByZXBs YWNlZCBieSBAdmFye2RhdGEtZGlyZWN0b3J5fSB3aGljaCBpcworLWRldGVybWluZWQgYXQgQHZh bHVle0dEQk59IHN0YXJ0dXAgKEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGRpcn0gbXVz dCBiZQorLWJlIHBsYWNlZCBhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQgLS0tIGVpdGhlciBhbG9u ZSBvciBkZWxpbWl0ZWQgYnkgQGZpbGV7L30gb3IKKy1AZmlsZXtcfSBkaXJlY3Rvcnkgc2VwYXJh dG9ycywgZGVwZW5kaW5nIG9uIHRoZSBob3N0IHBsYXRmb3JtLgorK0FueSB1c2VkIHN0cmluZyBA ZmlsZXskZGF0YWRpcn0gd2lsbCBnZXQgcmVwbGFjZWQgYnkgQHZhcntkYXRhLWRpcmVjdG9yeX0g d2hpY2gKKytpcyBkZXRlcm1pbmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFydHVwIChAcHhyZWZ7RGF0 YSBGaWxlc30pLiAgQGZpbGV7JGRhdGFkaXJ9CisrbXVzdCBiZSBwbGFjZWQgYXMgYSBkaXJlY3Rv cnkgY29tcG9uZW50IC0tLSBlaXRoZXIgYWxvbmUgb3IgZGVsaW1pdGVkIGJ5CisrQGZpbGV7L30g b3IgQGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFyYXRvcnMsIGRlcGVuZGluZyBvbiB0aGUgaG9zdCBw bGF0Zm9ybS4KKyAKKyBUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB1c2VzIHBhdGggc2VwYXJhdG9y IChAc2FtcHs6fSBvbiBHTlUgYW5kIFVuaXgKKyBzeXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5k b3dzIGFuZCBNUy1ET1MpIHRvIHNlcGFyYXRlIGRpcmVjdG9yaWVzLCBzaW1pbGFybHkKCmRpZmYg LS1naXQgYS9nZGItYXV0b2xvYWQtMjhvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTI4b2YyOC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjc5N2FmCi0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTI4b2YyOC5wYXRjaApAQCAtMCwwICsxLDM5MyBAQAor aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDUvbXNnMDA0NzcuaHRt bAorU3ViamVjdDogW3BhdGNoK2RvYyAyLzJdIGF1dG8tbG9hZDogRml4IGRlZmF1bHQgL3Vzci9s aWIvZGVidWcvIGxvYWRpbmcKKworSGksCisKK3dpdGggcmVjZW50IHNlY3VyaXR5IGZpeCB0byB1 c2Ugb25seSAkZGF0YWRpci9hdXRvLWxvYWQvIGRpcmVjdG9yeSBpbnN0ZWFkIG9mCithbnl0aGlu ZyB1bmRlciAkcHJlZml4LyAod2hpY2ggY29udGFpbnMgaW5zZWN1cmUgJHByZWZpeC90bXAvIGV0 Yy4pIGl0CitpbnRyb2R1Y2VkIGEgcmVncmVzc2lvbiB0aGF0IEdEQidzIGRlZmF1bHQgLS13aXRo LXNlcGFyYXRlLWRlYnVnLWRpciB3b3VsZCBubworbG9uZ2VyIGJlIHNlY3VyZTsgd2hpY2ggSU1P IGNhbiBiZSBhc3N1bWVkIGFzIHNlY3VyZS4gIFRoaXMgaXMgYmVjYXVzZQorSSBmb3Jnb3QgdG8g bW92ZSBpbnRvICdzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5JyAoYW5kICdzYWZlLXBh dGgnKSBhbHNvCitkZWJ1Zy1maWxlLWRpcmV0b3J5OyBiZXNpZGVzICRkYXRhZGlyL2F1dG8tbG9h ZCB3aGljaCBJIGhhdmUgbW92ZWQgdGhlcmUuCisKK1RvIGFsc28gc29sdmUgdGhlIHByb2JsZW0g d2l0aCByZWxvY2F0YWJpbGl0eSBhbmQgbWFrZSBpdCBjb25maWd1cmFibGUgSSBqdXN0CitpbnRy b2R1Y2UgYmVzaWRlcyAkZGF0YWRpciBub3cgYWxzbyAkZGVidWdkaXIgYW5kIGFkZCBpdCBpbnRv CitkZWZhdWx0ICdzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5Jy4gIEl0IGFsc28gSU1P IG1ha2VzIGl0IG1vcmUgY2xlYXIKK3doYXQgZXZlcnl0aGluZyBpcyBiZWluZyBhdXRvLWxvYWRl ZCBpbjoKKworKGdkYikgc2hvdyBhdXRvLWxvYWQgCitnZGItc2NyaXB0czogIEF1dG8tbG9hZGlu ZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMgb24uCitsaWJ0aHJl YWQtZGI6ICBBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlz IG9uLgorbG9jYWwtZ2RiaW5pdDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJv bSBjdXJyZW50IGRpcmVjdG9yeSBpcyBvbi4KK3B5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5n IG9mIFB5dGhvbiBzY3JpcHRzIGlzIG9uLgorc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3Rvcmll cyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzIGlzICRkZWJ1Z2Rpcjok ZGF0YWRpci9hdXRvLWxvYWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXgorc2NyaXB0cy1kaXJlY3Rvcnk6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20g d2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzIGlzICRkZWJ1Z2RpcjokZGF0YWRpci9h dXRvLWxvYWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXgorTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9y YTE3LWxpbnV4LWdudS4KKworSSBmaW5kIGl0IG1vcmUganVzdCBhIGJ1Z2ZpeCBvZiBhIHJlZ3Jl c3Npb24gYnkgbXlzZWxmLgorCisKK1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMTItMDUtMTIg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogTkVXUyAo LS13aXRoLWF1dG8tbG9hZC1kaXIpOiBQcmVwZW5kICRkZWJ1Z2RpciB0byB0aGUgZGVmYXVsdCBw YXRoLgorCURlc2NyaWJlIGl0LgorCSogYXV0by1sb2FkLmMgKGF1dG9fbG9hZF9leHBhbmRfZGly X3ZhcnMpOiBOZXcgZnVuY3Rpb24uCisJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSk6 IFVzZSBpdCwgcmVtb3ZlIHRoZQorCXN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgY2FsbCB0aGFu a3MgdG8gaXQuCisJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFJlbW92ZSB0aGUgZGVidWdf ZmlsZV9kaXJlY3RvcnkgcHJvY2Vzc2luZy4KKwlVc2UgYXV0b19sb2FkX2V4cGFuZF9kaXJfdmFy cywgcmVtb3ZlIHRoZSBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50CisJY2FsbCB0aGFua3MgdG8g aXQuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiBjb25maWd1cmUuYWMgKC0td2l0aC1h dXRvLWxvYWQtZGlyKTogUHJlcGVuZCAkZGVidWdkaXIgdG8gdGhlIGRlZmF1bHQKKwlwYXRoLiAg RXNjYXBlICQgYWxzbyBmb3IgJGRlYnVnZGlyLgorCSgtLXdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aCk6IEVzY2FwZSAkIGFsc28gZm9yICRkZWJ1Z2Rpci4KKwkqIHV0aWxzLmMgKHN1YnN0aXR1dGVf cGF0aF9jb21wb25lbnQpOiBBY2NlcHQgYWxzbyBESVJOQU1FX1NFUEFSQVRPUi4KKworZ2RiL2Rv Yy8KKzIwMTItMDUtMTIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KKworCSogZ2RiLnRleGluZm8gKFNlcGFyYXRlIERlYnVnIEZpbGVzKTogTmV3IGFuY2hvciBk ZWJ1Zy1maWxlLWRpcmVjdG9yeS4KKwlNZW50aW9uIGFsc28gLS13aXRoLXNlcGFyYXRlLWRlYnVn LWRpci4KKwkoQXV0by1sb2FkaW5nKTogUHJlcGVuZCAkZGVidWdkaXIgaW4gdGhlIHNhbXBsZSBv dXRwdXQuCisJKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBMaWtld2lzZS4gIE1lbnRpb24gYWxz byAkZGVidWdkaXIgZm9yIHRoZQorCWF1dG8tbG9hZCBzYWZlLXBhdGggdmFyaWFibGUuCisJKG9i amZpbGUtZ2RiLnB5IGZpbGUpOiBSZW1vdmUgdGhlIGV4dHJhIGRlYnVnLWZpbGUtZGlyZWN0b3J5 IHBhcmFncmFwaC4KKwlNZW50aW9uIGFsc28gJGRlYnVnZGlyIGZvciAnc2V0IGF1dG8tbG9hZCBz Y3JpcHRzLWRpcmVjdG9yeScuCisKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdT Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTIt MDUtMTQgMTQ6MjQ6MjAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvTkVXUwkyMDEyLTA1LTE0IDE0OjI0OjQ5LjUxMDQyMjQ4NSArMDIwMAorQEAgLTMxNyw4ICsz MTcsMTAgQEAgc2hvdyB0cmFjZS1zdG9wLW5vdGVzCisgCisgLS13aXRoLWF1dG8tbG9hZC1kaXIK KyAgIENvbmZpZ3VyZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgc2NyaXB0 cy1kaXJlY3RvcnknCistICBzZXR0aW5nIGFib3ZlLiAgSXQgZGVmYXVsdHMgdG8gJyRkYXRhZGly L2F1dG8tbG9hZCcsICRkYXRhZGlyCistICByZXByZXNlbnRpbmcgR0RCJ3MgZGF0YSBkaXJlY3Rv cnkgKGF2YWlsYWJsZSB2aWEgc2hvdyBkYXRhLWRpcmVjdG9yeSkuCisrICBzZXR0aW5nIGFib3Zl LiAgSXQgZGVmYXVsdHMgdG8gJyRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWQnLAorKyAgJGRl YnVnZGlyIHJlcHJlc2VudGluZyBnbG9iYWwgZGVidWdnaW5nIGluZm8gZGlyZWN0b3JpZXMgKGF2 YWlsYWJsZQorKyAgdmlhICdzaG93IGRlYnVnLWZpbGUtZGlyZWN0b3J5JykgYW5kICRkYXRhZGly IHJlcHJlc2VudGluZyBHREIncyBkYXRhCisrICBkaXJlY3RvcnkgKGF2YWlsYWJsZSB2aWEgJ3No b3cgZGF0YS1kaXJlY3RvcnknKS4KKyAKKyAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aAorICAg Q29uZmlndXJlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgn IHNldHRpbmcKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAx Mi0wNS0xNCAxNDoyNDoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA1LTE0IDE0OjI0OjQ5LjUxMTQyMjQ4MyArMDIwMAorQEAg LTE0Nyw2ICsxNDcsMzAgQEAgc3RhdGljIGNoYXIgKmF1dG9fbG9hZF9zYWZlX3BhdGg7CisgICAg Y291bnRlcnBhcnQuICAqLworIHN0YXRpYyBWRUMgKGNoYXJfcHRyKSAqYXV0b19sb2FkX3NhZmVf cGF0aF92ZWM7CisgCisrLyogRXhwYW5kICRkYXRhZGlyIGFuZCAkZGVidWdkaXIgaW4gU1RSSU5H IGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YKKysgICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50 LiAgUmV0dXJuIHZlY3RvciBmcm9tIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYywKKysgICB0aGlz IHZlY3RvciBtdXN0IGJlIGZyZWVkIGJ5IGZyZWVfY2hhcl9wdHJfdmVjIGJ5IHRoZSBjYWxsZXIu ICAqLworKworK3N0YXRpYyBWRUMgKGNoYXJfcHRyKSAqCisrYXV0b19sb2FkX2V4cGFuZF9kaXJf dmFycyAoY29uc3QgY2hhciAqc3RyaW5nKQorK3sKKysgIFZFQyAoY2hhcl9wdHIpICpkaXJfdmVj OworKyAgY2hhciAqczsKKysKKysgIHMgPSB4c3RyZHVwIChzdHJpbmcpOworKyAgc3Vic3RpdHV0 ZV9wYXRoX2NvbXBvbmVudCAoJnMsICIkZGF0YWRpciIsIGdkYl9kYXRhZGlyKTsKKysgIHN1YnN0 aXR1dGVfcGF0aF9jb21wb25lbnQgKCZzLCAiJGRlYnVnZGlyIiwgZGVidWdfZmlsZV9kaXJlY3Rv cnkpOworKworKyAgaWYgKGRlYnVnX2F1dG9fbG9hZCAmJiBzdHJjbXAgKHMsIHN0cmluZykgIT0g MCkKKysgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCV8oImF1dG8tbG9h ZDogRXhwYW5kZWQgJC12YXJpYWJsZXMgdG8gXCIlc1wiLlxuIiksIHMpOworKworKyAgZGlyX3Zl YyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAocyk7CisrICB4ZnJlZShzKTsKKysKKysgIHJl dHVybiBkaXJfdmVjOworK30KKysKKyAvKiBVcGRhdGUgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMg ZnJvbSBjdXJyZW50IEFVVE9fTE9BRF9TQUZFX1BBVEguICAqLworIAorIHN0YXRpYyB2b2lkCitA QCAtMTYzLDcgKzE4Nyw3IEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkK KyAKKyAgIGZyZWVfY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk7CisgCist ICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoYXV0 b19sb2FkX3NhZmVfcGF0aCk7CisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyA9IGF1dG9fbG9h ZF9leHBhbmRfZGlyX3ZhcnMgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOworICAgbGVuID0gVkVDX2xl bmd0aCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsKKyAKKyAgIC8qIEFwcGx5 IHRpbGRlX2V4cGFuZCBhbmQgZ2RiX3JlYWxwYXRoIHRvIGVhY2ggQVVUT19MT0FEX1NBRkVfUEFU SF9WRUMKK0BAIC0xNzEsMTYgKzE5NSwxMCBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRh dGUgKHZvaWQpCisgICBmb3IgKGl4ID0gMDsgaXggPCBsZW47IGl4KyspCisgICAgIHsKKyAgICAg ICBjaGFyICpkaXIgPSBWRUNfaW5kZXggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3Zl YywgaXgpOworLSAgICAgIGNoYXIgKmRkaXJfc3Vic3QsICpleHBhbmRlZCwgKnJlYWxfcGF0aDsK Ky0KKy0gICAgICBkZGlyX3N1YnN0ID0geHN0cmR1cCAoZGlyKTsKKy0gICAgICBzdWJzdGl0dXRl X3BhdGhfY29tcG9uZW50ICgmZGRpcl9zdWJzdCwgIiRkYXRhZGlyIiwgZ2RiX2RhdGFkaXIpOwor LSAgICAgIGV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChkZGlyX3N1YnN0KTsKKy0gICAgICB4ZnJl ZSAoZGRpcl9zdWJzdCk7CistICAgICAgcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRl ZCk7CisrICAgICAgY2hhciAqZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRpcik7CisrICAgICAg Y2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7CisgCistICAgICAgLyog RW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IGEgdmFsaWQgcGF0aCAodGhlcmVm b3JlCistCSAkZGF0YWRpci1leHBhbmRlZCBhbmQgdGlsZGUtZXhwYW5kZWQpLiAgKi8KKysgICAg ICAvKiBFbnN1cmUgdGhlIGN1cnJlbnQgZW50cnkgaXMgYXQgbGVhc3QgdGlsZGVfZXhwYW5kLWVk LiAgKi8KKyAgICAgICBWRUNfcmVwbGFjZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjLCBpeCwgZXhwYW5kZWQpOworIAorICAgICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCitAQCAt NjQ1LDQyICs2NjMsNiBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxl CisgCisgICBpZiAoIWlucHV0KQorICAgICB7CistICAgICAgY2hhciAqZGVidWdkaXI7CistICAg ICAgVkVDIChjaGFyX3B0cikgKmRlYnVnZGlyX3ZlYzsKKy0gICAgICBpbnQgaXg7CistCistICAg ICAgZGVidWdkaXJfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChkZWJ1Z19maWxlX2Rp cmVjdG9yeSk7CistICAgICAgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChkZWJ1Z2Rp cl92ZWMpOworLQorLSAgICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCistCWZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywKKy0JCQkgICAgXygiYXV0by1sb2FkOiBTZWFyY2hpbmcgJ3NldCBk ZWJ1Zy1maWxlLWRpcmVjdG9yeScgIgorLQkJCSAgICAgICJwYXRoIFwiJXNcIi5cbiIpLAorLQkJ CSAgICBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7CistCistICAgICAgZm9yIChpeCA9IDA7IFZFQ19p dGVyYXRlIChjaGFyX3B0ciwgZGVidWdkaXJfdmVjLCBpeCwgZGVidWdkaXIpOyArK2l4KQorLQl7 CistCSAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5m byBkaXJlY3RvcnkuICAqLworLQkgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZGVidWdk aXIpICsgc3RybGVuIChmaWxlbmFtZSkgKyAxKTsKKy0JICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVi dWdkaXIpOworLQorLQkgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVk IGEgIi8iIGhlcmUuICAqLworLQkgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7CistCist CSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKKy0JICBpbnB1dCA9IGZvcGVuIChk ZWJ1Z2ZpbGUsICJyIik7CistCSAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKKy0JICAgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgXygiYXV0by1sb2FkOiBBdHRlbXB0ZWQgZmlsZSAiCist CQkJCQkgICAgICAiXCIlc1wiICVzLlxuIiksCistCQkJCWRlYnVnZmlsZSwKKy0JCQkJaW5wdXQg PyBfKCJleGlzdHMiKSA6IF8oImRvZXMgbm90IGV4aXN0IikpOworLQkgIGlmIChpbnB1dCAhPSBO VUxMKQorLQkgICAgYnJlYWs7CistCX0KKy0gICAgfQorLQorLSAgaWYgKCFpbnB1dCkKKy0gICAg eworICAgICAgIFZFQyAoY2hhcl9wdHIpICp2ZWM7CisgICAgICAgaW50IGl4OworICAgICAgIGNo YXIgKmRpcjsKK0BAIC02ODgsNyArNjcwLDcgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChz dHJ1Y3Qgb2JqZmlsZQorICAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gYSBzdWJk aXJlY3Rvcnkgb2YgZ2RiJ3MgZGF0YQorIAkgZGlyZWN0b3J5LiAgKi8KKyAKKy0gICAgICB2ZWMg PSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9kaXIpOworKyAgICAgIHZlYyA9 IGF1dG9fbG9hZF9leHBhbmRfZGlyX3ZhcnMgKGF1dG9fbG9hZF9kaXIpOworICAgICAgIG1ha2Vf Y2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYyAodmVjKTsKKyAKKyAgICAgICBpZiAoZGVidWdfYXV0 b19sb2FkKQorQEAgLTY5OCwxMCArNjgwLDggQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChz dHJ1Y3Qgb2JqZmlsZQorIAorICAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9w dHIsIHZlYywgaXgsIGRpcik7ICsraXgpCisgCXsKKy0JICBkZWJ1Z2ZpbGUgPSB4c3RyZHVwIChk aXIpOworLQkgIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKCZkZWJ1Z2ZpbGUsICIkZGF0YWRp ciIsIGdkYl9kYXRhZGlyKTsKKy0JICBkZWJ1Z2ZpbGUgPSB4cmVhbGxvYyAoZGVidWdmaWxlLCAo c3RybGVuIChkZWJ1Z2ZpbGUpCistCQkJCQkgICAgKyBzdHJsZW4gKGZpbGVuYW1lKSArIDEpKTsK KysJICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGRpcikgKyBzdHJsZW4gKGZpbGVuYW1l KSArIDEpOworKwkgIHN0cmNweSAoZGVidWdmaWxlLCBkaXIpOworIAorIAkgIC8qIEZJTEVOQU1F IGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLworIAkgIHN0cmNh dCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv Y29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9j b25maWd1cmUJMjAxMi0wNS0xNCAxNDoyNDozOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNS0xNCAxNDoyNDo1NS44NTY0MDk5Nzcg KzAyMDAKK0BAIC0xNjcwLDcgKzE2NzAsNyBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRlZi4gYXV0bz1saWJycG0uc28pCisgICAtLXdpdGgtYXV0by1s b2FkLWRpcj1QQVRICisgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBmcm9t IHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cworLSAgICAgICAgICAgICAgICAgICAg ICAgICAgWyRkYXRhZGlyL2F1dG8tbG9hZF0KKysgICAgICAgICAgICAgICAgICAgICAgICAgIFsk ZGVidWdkaXI6JGRhdGFkaXIvYXV0by1sb2FkXQorICAgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBh dGg9UEFUSAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2FmZSB0byBo b2xkIGF1dG8tbG9hZGVkIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBbLS13aXRo LWF1dG8tbG9hZC1kaXJdCitAQCAtODQ5NCwxMCArODQ5NCwxMCBAQCAkYXNfZWNob19uICJjaGVj a2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvCisgaWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9kaXIr c2V0fSIgPSBzZXQ7IHRoZW4gOgorICAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfZGlyOworIGVs c2UKKy0gIHdpdGhfYXV0b19sb2FkX2Rpcj0nJGRhdGFkaXIvYXV0by1sb2FkJworKyAgd2l0aF9h dXRvX2xvYWRfZGlyPSckZGVidWdkaXI6JGRhdGFkaXIvYXV0by1sb2FkJworIGZpCisgCistZXNj YXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdzL1skXWRhdGFkaXJcPi9c XFxcXFxcXFxcXFwmL2cnYAorK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX2RpciB8 IHNlZCAncy9bJF1cKGRhdGFkaXJcfGRlYnVnZGlyXClcPi9cXFxcXFxcXFxcXFwmL2cnYAorIAor ICAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgi CisgICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZp eH0nCitAQCAtODUyNCw3ICs4NTI0LDcgQEAgZWxzZQorICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9w YXRoPSIkd2l0aF9hdXRvX2xvYWRfZGlyIgorIGZpCisgCistZXNjYXBlX2Rpcj1gZWNobyAkd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1skXWRhdGFkaXJcPi9cXFxcXFxcXFxcXFwm L2cnYAorK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAn cy9bJF1cKGRhdGFkaXJcfGRlYnVnZGlyXClcPi9cXFxcXFxcXFxcXFwmL2cnYAorIAorICAgdGVz dCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCisgICB0 ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCitJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNS0xNCAx NDoyNDoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25m aWd1cmUuYWMJMjAxMi0wNS0xNCAxNDoyNDo0OS41MTU0MjI0NzcgKzAyMDAKK0BAIC0zNDIsOSAr MzQyLDkgQEAgZmkKKyBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJl Y3RvcnldKQorIEFDX0FSR19XSVRIKGF1dG8tbG9hZC1kaXIsCisgQVNfSEVMUF9TVFJJTkcoWy0t d2l0aC1hdXRvLWxvYWQtZGlyPVBBVEhdLAorLSAgW2RpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8g bG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzIEA8OkAkZGF0YWRpci9hdXRvLWxvYWRAOj5AXSksLAor LSAgW3dpdGhfYXV0b19sb2FkX2Rpcj0nJGRhdGFkaXIvYXV0by1sb2FkJ10pCistZXNjYXBlX2Rp cj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdzL1tbJF1dZGF0YWRpclw+L1xcXFxc XFxcXFxcXCYvZydgCisrICBbZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9h ZGVkIHNjcmlwdHMgQDw6QCRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWRAOj5AXSksLAorKyAg W3dpdGhfYXV0b19sb2FkX2Rpcj0nJGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZCddKQorK2Vz Y2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bWyRdXVwoZGF0YWRp clx8ZGVidWdkaXJcKVw+L1xcXFxcXFxcXFxcXCYvZydgCisgQUNfREVGSU5FX0RJUihBVVRPX0xP QURfRElSLCBlc2NhcGVfZGlyLAorIAkgICAgICBbRGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBs b2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMuXSkKKyBBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xv YWRfZGlyXSkKK0BAIC0zNTksNyArMzU5LDcgQEAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1h dXRvLWxvYWQtc2FmZQorICAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgorICAgICAg ZmldLAorIFt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiR3aXRoX2F1dG9fbG9hZF9kaXIiXSkK Ky1lc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGggfCBzZWQgJ3MvW1sk XV1kYXRhZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKKytlc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGggfCBzZWQgJ3MvW1skXV1cKGRhdGFkaXJcfGRlYnVnZGlyXClcPi9c XFxcXFxcXFxcXFwmL2cnYAorIEFDX0RFRklORV9ESVIoQVVUT19MT0FEX1NBRkVfUEFUSCwgZXNj YXBlX2RpciwKKyAJICAgICAgW0RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBm aWxlcy5dKQorIEFDX01TR19SRVNVTFQoWyR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhdKQorSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDUt MTQgMTQ6MjQ6MjAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv ZG9jL2dkYi50ZXhpbmZvCTIwMTItMDUtMTQgMTQ6MjQ6NDkuNTIwNDIyNDY3ICswMjAwCitAQCAt MTYwMjgsOCArMTYwMjgsMTEgQEAgZGVidWcgaW5mb3JtYXRpb24gZmlsZXMsIGluIHRoZSBpbmRp Y2F0ZQorIEBmaWxley91c3IvbGliL2RlYnVnL3Vzci9iaW4vbHMuZGVidWd9LgorIEBlbmQgaXRl bWl6ZQorIAorLVlvdSBjYW4gc2V0IHRoZSBnbG9iYWwgZGVidWdnaW5nIGluZm8gZGlyZWN0b3Jp ZXMsIGFuZCB2aWV3IHRoZQorLWxpc3QgQHZhbHVle0dEQk59IGlzIGN1cnJlbnRseSB1c2luZy4K KytAYW5jaG9ye2RlYnVnLWZpbGUtZGlyZWN0b3J5fQorK0dsb2JhbCBkZWJ1Z2dpbmcgaW5mbyBk aXJlY3RvcmllcyBkZWZhdWx0IHRvIHdoYXQgaXMgc2V0IGJ5IEB2YWx1ZXtHREJOfQorK2NvbmZp Z3VyZSBvcHRpb24gQG9wdGlvbnstLXdpdGgtc2VwYXJhdGUtZGVidWctZGlyfS4gIER1cmluZyBA dmFsdWV7R0RCTn0gcnVuCisreW91IGNhbiBhbHNvIHNldCB0aGUgZ2xvYmFsIGRlYnVnZ2luZyBp bmZvIGRpcmVjdG9yaWVzLCBhbmQgdmlldyB0aGUgbGlzdAorK0B2YWx1ZXtHREJOfSBpcyBjdXJy ZW50bHkgdXNpbmcuCisgCisgQHRhYmxlIEBjb2RlCisgCitAQCAtMjA4MDcsOSArMjA4MTAsOSBA QCBsb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0CisgICAgICAgICAgICAg ICAgIGlzIG9uLgorIHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3Jp cHRzIGlzIG9uLgorIHNhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBp dCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcworLSAgICAgICAgICAgIGlzICRkYXRhZGlyL2F1 dG8tbG9hZC4KKysgICAgICAgICAgICBpcyAkZGVidWdkaXI6JGRhdGFkaXIvYXV0by1sb2FkLgor IHNjcmlwdHMtZGlyZWN0b3J5OiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxv YWQgYXV0by1sb2FkZWQgc2NyaXB0cworLSAgICAgICAgICAgICAgICAgICAgaXMgJGRhdGFkaXIv YXV0by1sb2FkLgorKyAgICAgICAgICAgICAgICAgICAgaXMgJGRlYnVnZGlyOiRkYXRhZGlyL2F1 dG8tbG9hZC4KKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorIEBhbmNob3J7aW5mbyBhdXRvLWxvYWR9 CitAQCAtMjEwMjUsOSArMjEwMjgsMTEgQEAgZ2V0IGxvYWRlZDoKKyAkIC4vZ2RiIC1xIC4vZ2Ri CisgUmVhZGluZyBzeW1ib2xzIGZyb20gL2hvbWUvdXNlci9nZGIvZ2RiLi4uZG9uZS4KKyB3YXJu aW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBi ZWVuCistICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0 IHRvICIkZGF0YWRpci9hdXRvLWxvYWQiLgorKyAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1 dG8tbG9hZCBzYWZlLXBhdGgnIHNldAorKyAgICAgICAgIHRvICIkZGVidWdkaXI6JGRhdGFkaXIv YXV0by1sb2FkIi4KKyB3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5IiBh dXRvLWxvYWRpbmcgaGFzIGJlZW4KKy0gICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxv YWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRkYXRhZGlyL2F1dG8tbG9hZCIuCisrICAgICAgICAgZGVj bGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0CisrICAgICAgICAgdG8gIiRk ZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWQiLgorIEBlbmQgc21hbGxleGFtcGxlCisgCisgVGhl IGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3RvcmllcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBmb2xsb3dp bmcgY29tbWFuZHM6CitAQCAtMjEwNjAsMTEgKzIxMDY1LDEwIEBAIGhvc3QgcGxhdGZvcm0gcGF0 aCBzZXBhcmF0b3IgaW4gdXNlLgorIEBlbmQgdGFibGUKKyAKKyBUaGlzIHZhcmlhYmxlIGRlZmF1 bHRzIHRvIHdoYXQgQGNvZGV7LS13aXRoLWF1dG8tbG9hZC1kaXJ9IGhhcyBiZWVuIGNvbmZpZ3Vy ZWQKKy10byAoQHB4cmVme3dpdGgtYXV0by1sb2FkLWRpcn0pLiAgQGZpbGV7JGRhdGFkaXJ9IHN1 YnN0aXR1YXRpb24gYXBwbGllcyB0aGUgc2FtZQorLWFzIGZvciBAeHJlZntzZXQgYXV0by1sb2Fk IHNjcmlwdHMtZGlyZWN0b3J5fS4KKy1UaGUgZGVmYXVsdCBAY29kZXtzZXQKKy1hdXRvLWxvYWQg c2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dEQk59IGNv bmZpZ3VyYXRpb24KKy1vcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aH0u CisrdG8gKEBweHJlZnt3aXRoLWF1dG8tbG9hZC1kaXJ9KS4gIEBmaWxleyRkZWJ1Z2Rpcn0gYW5k IEBmaWxleyRkYXRhZGlyfQorK3N1YnN0aXR1YXRpb24gYXBwbGllcyB0aGUgc2FtZSBhcyBmb3Ig QHhyZWZ7c2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeX0uCisrVGhlIGRlZmF1bHQgQGNv ZGV7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9IHZhbHVlIGNhbiBiZSBhbHNvIG92ZXJyaWRlbiBi eQorK0B2YWx1ZXtHREJOfSBjb25maWd1cmF0aW9uIG9wdGlvbiBAb3B0aW9uey0td2l0aC1hdXRv LWxvYWQtc2FmZS1wYXRofS4KKyAKKyBTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7L30g ZGlzYWJsZXMgdGhpcyBzZWN1cml0eSBwcm90ZWN0aW9uLAorIGNvcnJlc3BvbmRpbmcgQHZhbHVl e0dEQk59IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzCitAQCAtMjUxNTgsMTIgKzI1MTYyLDcgQEAg dGhhdCB0aGUgZmlsZSBuYW1lIGlzIGFic29sdXRlLCBmb2xsb3dpbgorIEBjb2Rley59IGFuZCBA Y29kZXsuLn0gY29tcG9uZW50cy4gIElmIHRoaXMgZmlsZSBleGlzdHMgYW5kIGlzCisgcmVhZGFi bGUsIEB2YWx1ZXtHREJOfSB3aWxsIGV2YWx1YXRlIGl0IGFzIGEgUHl0aG9uIHNjcmlwdC4KKyAK Ky1JZiB0aGlzIGZpbGUgZG9lcyBub3QgZXhpc3QsIGFuZCBpZiB0aGUgcGFyYW1ldGVyCistQGNv ZGV7ZGVidWctZmlsZS1kaXJlY3Rvcnl9IGlzIHNldCAoQHB4cmVme1NlcGFyYXRlIERlYnVnIEZp bGVzfSksCistdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCBsb29rIGZvciBAdmFye3NjcmlwdC1uYW1l fSBpbiBhbGwgb2YgdGhlCistZGlyZWN0b3JpZXMgbWVudGlvbmVkIGluIHRoZSB2YWx1ZSBvZiBA Y29kZXtkZWJ1Zy1maWxlLWRpcmVjdG9yeX0uCistCistRmluYWxseSwgaWYgdGhpcyBmaWxlIGRv ZXMgbm90IGV4aXN0LCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxvb2sgZm9yCisrSWYgdGhpcyBm aWxlIGRvZXMgbm90IGV4aXN0LCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxvb2sgZm9yCisgQHZh cntzY3JpcHQtbmFtZX0gZmlsZSBpbiBhbGwgb2YgdGhlIGRpcmVjdG9yaWVzIGFzIHNwZWNpZmll ZCBiZWxvdy4KKyAKKyBOb3RlIHRoYXQgbG9hZGluZyBvZiB0aGlzIHNjcmlwdCBmaWxlIGFsc28g cmVxdWlyZXMgYWNjb3JkaW5nbHkgY29uZmlndXJlZAorQEAgLTI1MTgxLDEyICsyNTE4MCwxNCBA QCBFYWNoIGVudHJ5IGhlcmUgbmVlZHMgdG8gYmUgY292ZXJlZCBhbHNvCisgQGNvZGV7c2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGh9IChAcHhyZWZ7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9KS4KKyAK KyBAYW5jaG9ye3dpdGgtYXV0by1sb2FkLWRpcn0KKy1UaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRv IEBmaWxleyRkYXRhZGlyL2F1dG8tbG9hZH0uICBUaGUgZGVmYXVsdCBAY29kZXtzZXQKKy1hdXRv LWxvYWQgc2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dE Qk59IGNvbmZpZ3VyYXRpb24KKy1vcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1sb2FkLWRpcn0u CistCistQW55IHVzZWQgc3RyaW5nIEBmaWxleyRkYXRhZGlyfSB3aWxsIGdldCByZXBsYWNlZCBi eSBAdmFye2RhdGEtZGlyZWN0b3J5fSB3aGljaAorLWlzIGRldGVybWluZWQgYXQgQHZhbHVle0dE Qk59IHN0YXJ0dXAgKEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGF0YWRpcn0KKytUaGlz IHZhcmlhYmxlIGRlZmF1bHRzIHRvIEBmaWxleyRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWR9 LiAgVGhlIGRlZmF1bHQKKytAY29kZXtzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0gdmFsdWUgY2Fu IGJlIGFsc28gb3ZlcnJpZGVuIGJ5IEB2YWx1ZXtHREJOfQorK2NvbmZpZ3VyYXRpb24gb3B0aW9u IEBvcHRpb257LS13aXRoLWF1dG8tbG9hZC1kaXJ9LgorKworK0FueSB1c2VkIHN0cmluZyBAZmls ZXskZGVidWdkaXJ9IHdpbGwgZ2V0IHJlcGxhY2VkIGJ5IEB2YXJ7ZGVidWctZmlsZS1kaXJlY3Rv cnl9CisrdmFsdWUgKEBweHJlZntTZXBhcmF0ZSBEZWJ1ZyBGaWxlc30pIGFuZCBhbnkgdXNlZCBz dHJpbmcgQGZpbGV7JGRhdGFkaXJ9IHdpbGwKKytnZXQgcmVwbGFjZWQgYnkgQHZhcntkYXRhLWRp cmVjdG9yeX0gd2hpY2ggaXMgZGV0ZXJtaW5lZCBhdCBAdmFsdWV7R0RCTn0gc3RhcnR1cAorKyhA cHhyZWZ7RGF0YSBGaWxlc30pLiAgQGZpbGV7JGRlYnVnZGlyfSBhbmQgQGZpbGV7JGRhdGFkaXJ9 CisgbXVzdCBiZSBwbGFjZWQgYXMgYSBkaXJlY3RvcnkgY29tcG9uZW50IC0tLSBlaXRoZXIgYWxv bmUgb3IgZGVsaW1pdGVkIGJ5CisgQGZpbGV7L30gb3IgQGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFy YXRvcnMsIGRlcGVuZGluZyBvbiB0aGUgaG9zdCBwbGF0Zm9ybS4KKyAKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi91dGlscy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi91dGlscy5jCTIwMTItMDUtMTQgMTQ6MjQ6MTEuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYwkyMDEyLTA1LTE0IDE0OjI0OjQ5 LjUyMTQyMjQ2NSArMDIwMAorQEAgLTM5MjcsOCArMzkyNyw4IEBAIGRpcm5hbWVzX3RvX2NoYXJf cHRyX3ZlYyAoY29uc3QgY2hhciAqZGkKKyAKKyAvKiBTdWJzdGl0dXRlIGFsbCBvY2N1cmVuY2Vz IG9mIHN0cmluZyBGUk9NIGJ5IHN0cmluZyBUTyBpbiAqU1RSSU5HUC4gICpTVFJJTkdQCisgICAg bXVzdCBjb21lIGZyb20geHJlYWxsb2MtY29tcGF0aWJsZSBhbGxvY2F0b3IgYW5kIGl0IG1heSBi ZSB1cGRhdGVkLiAgRlJPTQorLSAgIG5lZWRzIHRvIGJlIGRlbGltaXRlZCBieSBJU19ESVJfU0VQ QVJBVE9SIChvciBiZSBsb2NhdGVkIGF0IHRoZSBzdGFydCBvcgorLSAgIGVuZCBvZiAqU1RSSU5H UC4gICovCisrICAgbmVlZHMgdG8gYmUgZGVsaW1pdGVkIGJ5IElTX0RJUl9TRVBBUkFUT1Igb3Ig RElSTkFNRV9TRVBBUkFUT1IgKG9yIGJlCisrICAgbG9jYXRlZCBhdCB0aGUgc3RhcnQgb3IgZW5k IG9mICpTVFJJTkdQLiAgKi8KKyAKKyB2b2lkCisgc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAo Y2hhciAqKnN0cmluZ3AsIGNvbnN0IGNoYXIgKmZyb20sIGNvbnN0IGNoYXIgKnRvKQorQEAgLTM5 NDMsOCArMzk0MywxMCBAQCBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoqc3RyaW5n CisgICAgICAgaWYgKHMgPT0gTlVMTCkKKyAJYnJlYWs7CisgCistICAgICAgaWYgKChzID09IHN0 cmluZyB8fCBJU19ESVJfU0VQQVJBVE9SIChzWy0xXSkpCistICAgICAgICAgICYmIChzW2Zyb21f bGVuXSA9PSAnXDAnIHx8IElTX0RJUl9TRVBBUkFUT1IgKHNbZnJvbV9sZW5dKSkpCisrICAgICAg aWYgKChzID09IHN0cmluZyB8fCBJU19ESVJfU0VQQVJBVE9SIChzWy0xXSkKKysJICAgfHwgc1st MV0gPT0gRElSTkFNRV9TRVBBUkFUT1IpCisrICAgICAgICAgICYmIChzW2Zyb21fbGVuXSA9PSAn XDAnIHx8IElTX0RJUl9TRVBBUkFUT1IgKHNbZnJvbV9sZW5dKQorKwkgICAgICB8fCBzW2Zyb21f bGVuXSA9PSBESVJOQU1FX1NFUEFSQVRPUikpCisgCXsKKyAJICBjaGFyICpzdHJpbmdfbmV3Owor IAoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggZDRiOTZkYS4uMjU3M2I5 MiAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTM1LDcgKzM1LDcgQEAg VmVyc2lvbjogNy40LjUwLiV7c25hcH0KIAogIyBUaGUgcmVsZWFzZSBhbHdheXMgY29udGFpbnMg YSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4KICMgYHVwc3RyZWFtJyBp cyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29t cGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiA0NCV7P2Rpc3R9CitSZWxlYXNlOiA0 NSV7P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBh bmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BMdjIr IGFuZCBCU0QgYW5kIFB1YmxpYyBEb21haW4KIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMK QEAgLTU5MCwyOCArNTkwLDM0IEBAIFBhdGNoNjYxOiBnZGItc3RhbGUtZnJhbWVfaW5mby5wYXRj aAogCiAjIFNlY3VyaXR5IGZpeCBmb3IgbG9hZGluZyB1bnRydXN0ZWQgaW5mZXJpb3JzLCBzZWUg InNldCBhdXRvLWxvYWQiIChCWiA3NTYxMTcpLgogIz1wdXNoCi1QYXRjaDY2MjogZ2RiLWF1dG9s b2FkLTAxb2YyMi5wYXRjaAotUGF0Y2g2NjM6IGdkYi1hdXRvbG9hZC0wMm9mMjIucGF0Y2gKLVBh dGNoNjY0OiBnZGItYXV0b2xvYWQtMDNvZjIyLnBhdGNoCi1QYXRjaDY2NTogZ2RiLWF1dG9sb2Fk LTA0b2YyMi5wYXRjaAotUGF0Y2g2NjY6IGdkYi1hdXRvbG9hZC0wNW9mMjIucGF0Y2gKLVBhdGNo NjY3OiBnZGItYXV0b2xvYWQtMDZvZjIyLnBhdGNoCi1QYXRjaDY2ODogZ2RiLWF1dG9sb2FkLTA3 b2YyMi5wYXRjaAotUGF0Y2g2Njk6IGdkYi1hdXRvbG9hZC0wOG9mMjIucGF0Y2gKLVBhdGNoNjcw OiBnZGItYXV0b2xvYWQtMDlvZjIyLnBhdGNoCi1QYXRjaDY3MTogZ2RiLWF1dG9sb2FkLTEwb2Yy Mi5wYXRjaAotUGF0Y2g2NzI6IGdkYi1hdXRvbG9hZC0xMW9mMjIucGF0Y2gKLVBhdGNoNjczOiBn ZGItYXV0b2xvYWQtMTJvZjIyLnBhdGNoCi1QYXRjaDY3NDogZ2RiLWF1dG9sb2FkLTEzb2YyMi5w YXRjaAotUGF0Y2g2NzU6IGdkYi1hdXRvbG9hZC0xNG9mMjIucGF0Y2gKLVBhdGNoNjc2OiBnZGIt YXV0b2xvYWQtMTVvZjIyLnBhdGNoCi1QYXRjaDY3NzogZ2RiLWF1dG9sb2FkLTE2b2YyMi5wYXRj aAotUGF0Y2g2Nzg6IGdkYi1hdXRvbG9hZC0xN29mMjIucGF0Y2gKLVBhdGNoNjc5OiBnZGItYXV0 b2xvYWQtMThvZjIyLnBhdGNoCi1QYXRjaDY4MDogZ2RiLWF1dG9sb2FkLTE5b2YyMi5wYXRjaAot UGF0Y2g2ODE6IGdkYi1hdXRvbG9hZC0yMG9mMjIucGF0Y2gKLVBhdGNoNjgyOiBnZGItYXV0b2xv YWQtMjFvZjIyLnBhdGNoCi1QYXRjaDY4MzogZ2RiLWF1dG9sb2FkLTIyb2YyMi5wYXRjaAorUGF0 Y2g2NjI6IGdkYi1hdXRvbG9hZC0wMW9mMjgucGF0Y2gKK1BhdGNoNjYzOiBnZGItYXV0b2xvYWQt MDJvZjI4LnBhdGNoCitQYXRjaDY2NDogZ2RiLWF1dG9sb2FkLTAzb2YyOC5wYXRjaAorUGF0Y2g2 NjU6IGdkYi1hdXRvbG9hZC0wNG9mMjgucGF0Y2gKK1BhdGNoNjY2OiBnZGItYXV0b2xvYWQtMDVv ZjI4LnBhdGNoCitQYXRjaDY2NzogZ2RiLWF1dG9sb2FkLTA2b2YyOC5wYXRjaAorUGF0Y2g2Njg6 IGdkYi1hdXRvbG9hZC0wN29mMjgucGF0Y2gKK1BhdGNoNjY5OiBnZGItYXV0b2xvYWQtMDhvZjI4 LnBhdGNoCitQYXRjaDY3MDogZ2RiLWF1dG9sb2FkLTA5b2YyOC5wYXRjaAorUGF0Y2g2NzE6IGdk Yi1hdXRvbG9hZC0xMG9mMjgucGF0Y2gKK1BhdGNoNjcyOiBnZGItYXV0b2xvYWQtMTFvZjI4LnBh dGNoCitQYXRjaDY3MzogZ2RiLWF1dG9sb2FkLTEyb2YyOC5wYXRjaAorUGF0Y2g2NzQ6IGdkYi1h dXRvbG9hZC0xM29mMjgucGF0Y2gKK1BhdGNoNjc1OiBnZGItYXV0b2xvYWQtMTRvZjI4LnBhdGNo CitQYXRjaDY3NjogZ2RiLWF1dG9sb2FkLTE1b2YyOC5wYXRjaAorUGF0Y2g2Nzc6IGdkYi1hdXRv bG9hZC0xNm9mMjgucGF0Y2gKK1BhdGNoNjc4OiBnZGItYXV0b2xvYWQtMTdvZjI4LnBhdGNoCitQ YXRjaDY3OTogZ2RiLWF1dG9sb2FkLTE4b2YyOC5wYXRjaAorUGF0Y2g2ODA6IGdkYi1hdXRvbG9h ZC0xOW9mMjgucGF0Y2gKK1BhdGNoNjgxOiBnZGItYXV0b2xvYWQtMjBvZjI4LnBhdGNoCitQYXRj aDY4MjogZ2RiLWF1dG9sb2FkLTIxb2YyOC5wYXRjaAorUGF0Y2g2ODM6IGdkYi1hdXRvbG9hZC0y Mm9mMjgucGF0Y2gKK1BhdGNoNjg0OiBnZGItYXV0b2xvYWQtMjNvZjI4LnBhdGNoCitQYXRjaDY4 NTogZ2RiLWF1dG9sb2FkLTI0b2YyOC5wYXRjaAorUGF0Y2g2ODY6IGdkYi1hdXRvbG9hZC0yNW9m MjgucGF0Y2gKK1BhdGNoNjg3OiBnZGItYXV0b2xvYWQtMjZvZjI4LnBhdGNoCitQYXRjaDY4ODog Z2RiLWF1dG9sb2FkLTI3b2YyOC5wYXRjaAorUGF0Y2g2ODk6IGdkYi1hdXRvbG9hZC0yOG9mMjgu cGF0Y2gKIAogJWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CiAjIFJMX1NUQVRFX0ZF RE9SQV9HREIgd291bGQgbm90IGJlIGZvdW5kIGZvcjoKQEAgLTkyNSw2ICs5MzEsMTIgQEAgcm0g LWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwog JXBhdGNoNjgxIC1wMQogJXBhdGNoNjgyIC1wMQogJXBhdGNoNjgzIC1wMQorJXBhdGNoNjg0IC1w MQorJXBhdGNoNjg1IC1wMQorJXBhdGNoNjg2IC1wMQorJXBhdGNoNjg3IC1wMQorJXBhdGNoNjg4 IC1wMQorJXBhdGNoNjg5IC1wMQogCiAlcGF0Y2gzOTMgLXAxCiAlaWYgMCV7IT9lbDU6MX0gfHwg MCV7P3NjbDoxfQpAQCAtMTA0Nyw4ICsxMDU5LDggQEAgJCg6IFJIRUwtNSBsaWJycG0gaGFzIGlu Y29tcGF0aWJsZSBBUEkuICkJCQlcCiAJLS1kaXNhYmxlLWlucHJvY2Vzcy1hZ2VudAkJCQlcCiAl ZW5kaWYKICQoOiAle19iaW5kaXJ9L21vbm8tZ2RiLnB5IGlzIHdvcmthcm91bmQgZm9yIG1vbm8g QlogODE1NTAxLiApCQkJCQkJCQkJCVwKLQkgICAgICAtLXdpdGgtYXV0by1sb2FkLWRpcj0nJGRk aXIvYXV0by1sb2FkJXs/c2NsOjole19yb290X2RhdGFkaXJ9L2dkYi9hdXRvLWxvYWR9JwkJCQkJ CVwKLQktLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD0nJGRkaXIvYXV0by1sb2FkJXs/c2NsOjol e19yb290X2RhdGFkaXJ9L2dkYi9hdXRvLWxvYWR9Oi91c3IvbGliL2RlYnVnOiV7X3Jvb3RfYmlu ZGlyfS9tb25vLWdkYi5weScJXAorCSAgICAgIC0td2l0aC1hdXRvLWxvYWQtZGlyPSckZGVidWdk aXI6JGRhdGFkaXIvYXV0by1sb2FkJXs/c2NsOjole19yb290X2RhdGFkaXJ9L2dkYi9hdXRvLWxv YWR9JwkJCQlcCisJLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9JyRkZWJ1Z2RpcjokZGF0YWRp ci9hdXRvLWxvYWQlez9zY2w6OiV7X3Jvb3RfZGF0YWRpcn0vZ2RiL2F1dG8tbG9hZH06JXtfcm9v dF9iaW5kaXJ9L21vbm8tZ2RiLnB5JwlcCiAlaWZhcmNoIHNwYXJjIHNwYXJjdjkKIAlzcGFyYy0l e192ZW5kb3J9LSV7X3RhcmdldF9vc30lez9fZ251fQogJWVsc2UKQEAgLTE0MDksNiArMTQyMSw5 IEBAIGZpCiAlZW5kaWYgIyAwJXshP2VsNToxfSB8fCAiJXtfdGFyZ2V0X2NwdX0iID09ICJub2Fy Y2giCiAKICVjaGFuZ2Vsb2cKKyogTW9uIE1heSAxNCAyMDEyIEphbiBLcmF0b2NodmlsIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNC41MC4yMDEyMDEyMC00NS5mYzE3CistIFJlbmFt ZSAic2V0IGF1dG8tbG9hZCIgcGF0Y2hzZXQgdmFyaWFibGUgJGRkaXIgdG8gJGRhdGFkaXIuCisK ICogV2VkIE1heSAgOSAyMDEyIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPiAtIDcuNC41MC4yMDEyMDEyMC00NC5mYzE3CiAtIEZpeCBpbiAic2V0IGF1dG8tbG9hZCIg cGF0Y2hzZXQgZm9yIFNDTCBzY3JpcHRzIGluaGVyaXRhbmNlIChCWiA4MTU5MTApLgogCg==