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: Neal Gompa To: git-commits@fedoraproject.org Subject: [rpms/ffmpeg] epel9: Rebase to 6.1 Date: Fri, 18 Sep 2026 18:45:21 GMT Message-ID: <178975712156.1.14120458045350339809.rpms-ffmpeg-37bbe8c93acc@fedoraproject.org> List-ID: X-Git-Repo: rpms/ffmpeg X-Git-Branch: epel9 X-Git-Rev: 37bbe8c93acc59886c441bae7515a010ebd2cbf6 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZmZtcGVnCkJyYW5j aCA6IGVwZWw5CkNvbW1pdCA6IDM3YmJlOGM5M2FjYzU5ODg2YzQ0MWJhZTc1MTVhMDEwZWJkMmNi ZjYKQXV0aG9yIDogTmVhbCBHb21wYSA8bmdvbXBhQGZlZG9yYXByb2plY3Qub3JnPgpEYXRlICAg OiAyMDI0LTAxLTA0VDEwOjQ4OjE4LTA1OjAwClN0YXRzICA6ICsxNDIvLTU1NDIgaW4gMTEgZmls ZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2ZmbXBlZy9j LzM3YmJlOGM5M2FjYzU5ODg2YzQ0MWJhZTc1MTVhMDEwZWJkMmNiZjY/YnJhbmNoPWVwZWw5CgpM b2c6ClJlYmFzZSB0byA2LjEKCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMS1hdmZpbHRlci12Zl9saWJw bGFjZWJvLXJlbW92ZS1kZXByZWNhdGVkLWZpZWxkLnBhdGNoIGIvMDAwMS1hdmZpbHRlci12Zl9s aWJwbGFjZWJvLXJlbW92ZS1kZXByZWNhdGVkLWZpZWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwODE5YWY0Li4wMDAwMDAwCi0tLSBhLzAwMDEtYXZmaWx0ZXItdmZfbGli cGxhY2Viby1yZW1vdmUtZGVwcmVjYXRlZC1maWVsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDczICswLDAgQEAKLUZyb20gMTIzMTAwM2MzYzZkNDgzOWE5ZTgzOGQwNmY4ZTE2ZWU3NjkwOTU4 ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pa2xhcyBIYWFzIDxnaXRAaGFhc24u ZGV2PgotRGF0ZTogTW9uLCAxMyBNYXIgMjAyMyAxNDozMzoxNiArMDEwMAotU3ViamVjdDogW1BB VENIXSBhdmZpbHRlci92Zl9saWJwbGFjZWJvOiByZW1vdmUgZGVwcmVjYXRlZCBmaWVsZAotCi1U aGlzIGhhcyBub3QgYmVlbiBmdW5jdGlvbmFsIHNpbmNlIGEgeWVhciBhZ28sIGluY2x1ZGluZyBp biBvdXIgY3VycmVudAotbWluaW11bSBkZXBlbmRlbmN5IG9mIGxpYnBsYWNlYm8gKHY0LjE5Mi4w KS4gSXQgYWxzbyBjYXVzZXMgYnVpbGQgZXJyb3JzCi1hZ2FpbnN0IGxpYnBsYWNlYm8gdjYsIHNv IGl0IG5lZWRzIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgY29kZS4gV2UgY2FuCi1rZWVwIHRoZSBv cHRpb24gYXJvdW5kIGZvciBub3csIGJ1dCBpdCBzaG91bGQgYWxzbyBiZSByZW1vdmVkIHNvb24u Ci0KLVNpZ25lZC1vZmYtYnk6IE5pa2xhcyBIYWFzIDxnaXRAaGFhc24uZGV2PgotU2lnbmVkLW9m Zi1ieTogSmFtZXMgQWxtZXIgPGphbXJpYWxAZ21haWwuY29tPgotLS0tCi0gZG9jL2ZpbHRlcnMu dGV4aSAgICAgICAgICAgIHwgMyAtLS0KLSBsaWJhdmZpbHRlci92Zl9saWJwbGFjZWJvLmMgfCA3 ICsrKystLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMo LSkKLQotZGlmZiAtLWdpdCBhL2RvYy9maWx0ZXJzLnRleGkgYi9kb2MvZmlsdGVycy50ZXhpCi1p bmRleCA3YTdiMmJhNGU3OWUuLjc3YjU5NGY2OWNiMSAxMDA2NDQKLS0tLSBhL2RvYy9maWx0ZXJz LnRleGkKLSsrKyBiL2RvYy9maWx0ZXJzLnRleGkKLUBAIC0xNjI0Miw5ICsxNjI0Miw2IEBAIERp c2FibGUgbGluZWFyIGxpZ2h0IHNjYWxpbmcuCi0gQGl0ZW0gZGlzYWJsZV9idWlsdGluCi0gRGlz YWJsZSBidWlsdC1pbiBHUFUgc2FtcGxpbmcgKGZvcmNlcyBMVVQpLgotIAotLUBpdGVtIGZvcmNl X2ljY19sdXQKLS1Gb3JjZSB0aGUgdXNlIG9mIGEgZnVsbCBJQ0MgM0RMVVQgZm9yIGdhbXV0IG1h cHBpbmcuCi0tCi0gQGl0ZW0gZGlzYWJsZV9mYm9zCi0gRm9yY2libHkgZGlzYWJsZSBGQk9zLCBy ZXN1bHRpbmcgaW4gbG9zcyBvZiBhbG1vc3QgYWxsIGZ1bmN0aW9uYWxpdHksIGJ1dAotIG9mZmVy aW5nIHRoZSBtYXhpbXVtIHBvc3NpYmxlIHNwZWVkLgotZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVy L3ZmX2xpYnBsYWNlYm8uYyBiL2xpYmF2ZmlsdGVyL3ZmX2xpYnBsYWNlYm8uYwotaW5kZXggZDc1 NzIzMjg5MDY5Li43NTdkYzUxOWU5YWQgMTAwNjQ0Ci0tLS0gYS9saWJhdmZpbHRlci92Zl9saWJw bGFjZWJvLmMKLSsrKyBiL2xpYmF2ZmlsdGVyL3ZmX2xpYnBsYWNlYm8uYwotQEAgLTk3LDcgKzk3 LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTGlicGxhY2Vib0NvbnRleHQgewotICAgICBmbG9hdCBwb2xh cl9jdXRvZmY7Ci0gICAgIGludCBkaXNhYmxlX2xpbmVhcjsKLSAgICAgaW50IGRpc2FibGVfYnVp bHRpbjsKLS0gICAgaW50IGZvcmNlX2ljY19sdXQ7Ci0gICAgIGludCBmb3JjZV9kaXRoZXI7Ci0g ICAgIGludCBkaXNhYmxlX2Zib3M7Ci0gCi1AQCAtMTM5LDYgKzEzOCw3IEBAIHR5cGVkZWYgc3Ry dWN0IExpYnBsYWNlYm9Db250ZXh0IHsKLSAgICAgZmxvYXQgZGVzYXRfZXhwOwotICAgICBpbnQg Z2FtdXRfd2FybmluZzsKLSAgICAgaW50IGdhbXV0X2NsaXBwaW5nOwotKyAgICBpbnQgZm9yY2Vf aWNjX2x1dDsKLSAjZW5kaWYKLSAKLSAgICAgIC8qIHBsX2RpdGhlcl9wYXJhbXMgKi8KLUBAIC00 NjMsNyArNDYzLDYgQEAgc3RhdGljIGludCBwcm9jZXNzX2ZyYW1lcyhBVkZpbHRlckNvbnRleHQg KmF2Y3R4LCBBVkZyYW1lICpvdXQsIEFWRnJhbWUgKmluKQotICAgICAgICAgLnBvbGFyX2N1dG9m ZiA9IHMtPnBvbGFyX2N1dG9mZiwKLSAgICAgICAgIC5kaXNhYmxlX2xpbmVhcl9zY2FsaW5nID0g cy0+ZGlzYWJsZV9saW5lYXIsCi0gICAgICAgICAuZGlzYWJsZV9idWlsdGluX3NjYWxlcnMgPSBz LT5kaXNhYmxlX2J1aWx0aW4sCi0tICAgICAgICAuZm9yY2VfaWNjX2x1dCA9IHMtPmZvcmNlX2lj Y19sdXQsCi0gICAgICAgICAuZm9yY2VfZGl0aGVyID0gcy0+Zm9yY2VfZGl0aGVyLAotICAgICAg ICAgLmRpc2FibGVfZmJvcyA9IHMtPmRpc2FibGVfZmJvcywKLSAgICAgfTsKLUBAIC04NTUsNyAr ODU0LDkgQEAgc3RhdGljIGNvbnN0IEFWT3B0aW9uIGxpYnBsYWNlYm9fb3B0aW9uc1tdID0gewot ICAgICB7ICJwb2xhcl9jdXRvZmYiLCAiUG9sYXIgTFVUIGN1dG9mZiIsIE9GRlNFVChwb2xhcl9j dXRvZmYpLCBBVl9PUFRfVFlQRV9GTE9BVCwgey5kYmwgPSAwfSwgMC4wLCAxLjAsIERZTkFNSUMg fSwKLSAgICAgeyAiZGlzYWJsZV9saW5lYXIiLCAiRGlzYWJsZSBsaW5lYXIgc2NhbGluZyIsIE9G RlNFVChkaXNhYmxlX2xpbmVhciksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0ID0gMH0sIDAsIDEs IERZTkFNSUMgfSwKLSAgICAgeyAiZGlzYWJsZV9idWlsdGluIiwgIkRpc2FibGUgYnVpbHQtaW4g c2NhbGVycyIsIE9GRlNFVChkaXNhYmxlX2J1aWx0aW4pLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2 NCA9IDB9LCAwLCAxLCBEWU5BTUlDIH0sCi0tICAgIHsgImZvcmNlX2ljY19sdXQiLCAiRm9yY2Ug dGhlIHVzZSBvZiBhIGZ1bGwgSUNDIDNETFVUIGZvciBjb2xvciBtYXBwaW5nIiwgT0ZGU0VUKGZv cmNlX2ljY19sdXQpLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2NCA9IDB9LCAwLCAxLCBEWU5BTUlD IH0sCi0rI2lmIEZGX0FQSV9MSUJQTEFDRUJPX09QVFMKLSsgICAgeyAiZm9yY2VfaWNjX2x1dCIs ICJEZXByZWNhdGVkLCBkb2VzIG5vdGhpbmciLCBPRkZTRVQoZm9yY2VfaWNjX2x1dCksIEFWX09Q VF9UWVBFX0JPT0wsIHsuaTY0ID0gMH0sIDAsIDEsIERZTkFNSUMgfCBBVl9PUFRfRkxBR19ERVBS RUNBVEVEIH0sCi0rI2VuZGlmCi0gICAgIHsgImZvcmNlX2RpdGhlciIsICJGb3JjZSBkaXRoZXJp bmciLCBPRkZTRVQoZm9yY2VfZGl0aGVyKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQgPSAwfSwg MCwgMSwgRFlOQU1JQyB9LAotICAgICB7ICJkaXNhYmxlX2Zib3MiLCAiRm9yY2UtZGlzYWJsZSBG Qk9zIiwgT0ZGU0VUKGRpc2FibGVfZmJvcyksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0ID0gMH0s IDAsIDEsIERZTkFNSUMgfSwKLSAgICAgeyBOVUxMIH0sCi0tLSAKLTIuMzkuMgotCgpkaWZmIC0t Z2l0IGEvMDAwMS1hdmZpbHRlci12Zl9saWJwbGFjZWJvLXdyYXAtZGVwcmVjYXRlZC1vcHRzLWlu LUZGX0FQLnBhdGNoIGIvMDAwMS1hdmZpbHRlci12Zl9saWJwbGFjZWJvLXdyYXAtZGVwcmVjYXRl ZC1vcHRzLWluLUZGX0FQLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDJh OTM5Li4wMDAwMDAwCi0tLSBhLzAwMDEtYXZmaWx0ZXItdmZfbGlicGxhY2Viby13cmFwLWRlcHJl Y2F0ZWQtb3B0cy1pbi1GRl9BUC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAK LUZyb20gMTFlY2E2MDE4YzQwZjVlYmU2YWY5M2NiYzRiNGRjZTQ0N2Q4YjNiYyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pa2xhcyBIYWFzIDxnaXRAaGFhc24uZGV2PgotRGF0ZTog TW9uLCAxMyBNYXIgMjAyMyAxNToxMDoyNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBhdmZpbHRl ci92Zl9saWJwbGFjZWJvOiB3cmFwIGRlcHJlY2F0ZWQgb3B0cyBpbiBGRl9BUEkgZGVmaW5lCi0K LVNpZ25lZC1vZmYtYnk6IE5pa2xhcyBIYWFzIDxnaXRAaGFhc24uZGV2PgotU2lnbmVkLW9mZi1i eTogSmFtZXMgQWxtZXIgPGphbXJpYWxAZ21haWwuY29tPgotLS0tCi0gbGliYXZmaWx0ZXIvdmVy c2lvbl9tYWpvci5oIHwgMiArKwotIGxpYmF2ZmlsdGVyL3ZmX2xpYnBsYWNlYm8uYyB8IDggKysr KysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBh L2xpYmF2ZmlsdGVyL3ZlcnNpb25fbWFqb3IuaCBiL2xpYmF2ZmlsdGVyL3ZlcnNpb25fbWFqb3Iu aAotaW5kZXggODk5ZGZkYjI3ZGJhLi4xZGVjYzQwMTJlZTAgMTAwNjQ0Ci0tLS0gYS9saWJhdmZp bHRlci92ZXJzaW9uX21ham9yLmgKLSsrKyBiL2xpYmF2ZmlsdGVyL3ZlcnNpb25fbWFqb3IuaAot QEAgLTM1LDQgKzM1LDYgQEAKLSAgKiB0aGUgcHVibGljIEFQSSBhbmQgbWF5IGNoYW5nZSwgYnJl YWsgb3IgZGlzYXBwZWFyIGF0IGFueSB0aW1lLgotICAqLwotIAotKyNkZWZpbmUgRkZfQVBJX0xJ QlBMQUNFQk9fT1BUUyAoTElCQVZGSUxURVJfVkVSU0lPTl9NQUpPUiA8IDEwKQotKwotICNlbmRp ZiAvKiBBVkZJTFRFUl9WRVJTSU9OX01BSk9SX0ggKi8KLWRpZmYgLS1naXQgYS9saWJhdmZpbHRl ci92Zl9saWJwbGFjZWJvLmMgYi9saWJhdmZpbHRlci92Zl9saWJwbGFjZWJvLmMKLWluZGV4IDdj ZDQ5NWRlMjYxOS4uZDc1NzIzMjg5MDY5IDEwMDY0NAotLS0tIGEvbGliYXZmaWx0ZXIvdmZfbGli cGxhY2Viby5jCi0rKysgYi9saWJhdmZpbHRlci92Zl9saWJwbGFjZWJvLmMKLUBAIC0xMzIsMTEg KzEzMiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBMaWJwbGFjZWJvQ29udGV4dCB7Ci0gICAgIGludCBp bnZlcnNlX3RvbmVtYXBwaW5nOwotICAgICBmbG9hdCBjcm9zc3RhbGs7Ci0gICAgIGludCB0b25l bWFwcGluZ19sdXRfc2l6ZTsKLSsKLSsjaWYgRkZfQVBJX0xJQlBMQUNFQk9fT1BUUwotICAgICAv KiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKi8KLSAgICAgZmxvYXQgZGVzYXRfc3RyOwot ICAgICBmbG9hdCBkZXNhdF9leHA7Ci0gICAgIGludCBnYW11dF93YXJuaW5nOwotICAgICBpbnQg Z2FtdXRfY2xpcHBpbmc7Ci0rI2VuZGlmCi0gCi0gICAgICAvKiBwbF9kaXRoZXJfcGFyYW1zICov Ci0gICAgIGludCBkaXRoZXJpbmc7Ci1AQCAtMzgwLDYgKzM4Myw3IEBAIHN0YXRpYyBpbnQgcHJv Y2Vzc19mcmFtZXMoQVZGaWx0ZXJDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqb3V0LCBBVkZyYW1l ICppbikKLSAgICAgICAgIHBsX3JlY3QyZGZfYXNwZWN0X3NldCgmdGFyZ2V0LmNyb3AsIGFzcGVj dCwgcy0+cGFkX2Nyb3BfcmF0aW8pOwotICAgICB9Ci0gCi0rI2lmIEZGX0FQSV9MSUJQTEFDRUJP X09QVFMKLSAgICAgLyogYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBBUEkgKi8K LSAgICAgaWYgKCF0b25lbWFwcGluZ19tb2RlICYmIChzLT5kZXNhdF9zdHIgPj0gMC4wZiB8fCBz LT5kZXNhdF9leHAgPj0gMC4wZikpIHsKLSAgICAgICAgIGZsb2F0IHN0ciA9IHMtPmRlc2F0X3N0 ciA8IDAuMGYgPyAwLjlmIDogcy0+ZGVzYXRfc3RyOwotQEAgLTM5Nyw2ICs0MDEsNyBAQCBzdGF0 aWMgaW50IHByb2Nlc3NfZnJhbWVzKEFWRmlsdGVyQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKm91 dCwgQVZGcmFtZSAqaW4pCi0gICAgICAgICBnYW11dF9tb2RlID0gUExfR0FNVVRfV0FSTjsKLSAg ICAgaWYgKHMtPmdhbXV0X2NsaXBwaW5nKQotICAgICAgICAgZ2FtdXRfbW9kZSA9IFBMX0dBTVVU X0RFU0FUVVJBVEU7Ci0rI2VuZGlmCi0gCi0gICAgIC8qIFVwZGF0ZSByZW5kZXIgcGFyYW1zICov Ci0gICAgIHBhcmFtcyA9IChzdHJ1Y3QgcGxfcmVuZGVyX3BhcmFtcykgewotQEAgLTgxOCwxMSAr ODIzLDE0IEBAIHN0YXRpYyBjb25zdCBBVk9wdGlvbiBsaWJwbGFjZWJvX29wdGlvbnNbXSA9IHsK LSAgICAgeyAiaW52ZXJzZV90b25lbWFwcGluZyIsICJJbnZlcnNlIHRvbmUgbWFwcGluZyAocmFu Z2UgZXhwYW5zaW9uKSIsIE9GRlNFVChpbnZlcnNlX3RvbmVtYXBwaW5nKSwgQVZfT1BUX1RZUEVf Qk9PTCwgey5pNjQgPSAwfSwgMCwgMSwgRFlOQU1JQyB9LAotICAgICB7ICJ0b25lbWFwcGluZ19j cm9zc3RhbGsiLCAiQ3Jvc3N0YWxrIGZhY3RvciBmb3IgdG9uZS1tYXBwaW5nIiwgT0ZGU0VUKGNy b3NzdGFsayksIEFWX09QVF9UWVBFX0ZMT0FULCB7LmRibCA9IDAuMDR9LCAwLjAsIDAuMzAsIERZ TkFNSUMgfSwKLSAgICAgeyAidG9uZW1hcHBpbmdfbHV0X3NpemUiLCAiVG9uZS1tYXBwaW5nIExV VCBzaXplIiwgT0ZGU0VUKHRvbmVtYXBwaW5nX2x1dF9zaXplKSwgQVZfT1BUX1RZUEVfSU5ULCB7 Lmk2NCA9IDI1Nn0sIDIsIDEwMjQsIERZTkFNSUMgfSwKLSsKLSsjaWYgRkZfQVBJX0xJQlBMQUNF Qk9fT1BUUwotICAgICAvKiBkZXByZWNhdGVkIG9wdGlvbnMgZm9yIGJhY2t3YXJkcyBjb21wYXRp YmlsaXR5LCBkZWZhdWx0aW5nIHRvIC0xIHRvIG5vdCBvdmVycmlkZSB0aGUgbmV3IGRlZmF1bHRz ICovCi0gICAgIHsgImRlc2F0dXJhdGlvbl9zdHJlbmd0aCIsICJEZXNhdHVyYXRpb24gc3RyZW5n dGgiLCBPRkZTRVQoZGVzYXRfc3RyKSwgQVZfT1BUX1RZUEVfRkxPQVQsIHsuZGJsID0gLTEuMH0s IC0xLjAsIDEuMCwgRFlOQU1JQyB8IEFWX09QVF9GTEFHX0RFUFJFQ0FURUQgfSwKLSAgICAgeyAi ZGVzYXR1cmF0aW9uX2V4cG9uZW50IiwgIkRlc2F0dXJhdGlvbiBleHBvbmVudCIsIE9GRlNFVChk ZXNhdF9leHApLCBBVl9PUFRfVFlQRV9GTE9BVCwgey5kYmwgPSAtMS4wfSwgLTEuMCwgMTAuMCwg RFlOQU1JQyB8IEFWX09QVF9GTEFHX0RFUFJFQ0FURUQgfSwKLSAgICAgeyAiZ2FtdXRfd2Fybmlu ZyIsICJIaWdobGlnaHQgb3V0LW9mLWdhbXV0IGNvbG9ycyIsIE9GRlNFVChnYW11dF93YXJuaW5n KSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQgPSAwfSwgMCwgMSwgRFlOQU1JQyB8IEFWX09QVF9G TEFHX0RFUFJFQ0FURUQgfSwKLSAgICAgeyAiZ2FtdXRfY2xpcHBpbmciLCAiRW5hYmxlIGNvbG9y aW1ldHJpYyBnYW11dCBjbGlwcGluZyIsIE9GRlNFVChnYW11dF9jbGlwcGluZyksIEFWX09QVF9U WVBFX0JPT0wsIHsuaTY0ID0gMH0sIDAsIDEsIERZTkFNSUMgfCBBVl9PUFRfRkxBR19ERVBSRUNB VEVEIH0sCi0rI2VuZGlmCi0gCi0gICAgIHsgImRpdGhlcmluZyIsICJEaXRoZXIgbWV0aG9kIHRv IHVzZSIsIE9GRlNFVChkaXRoZXJpbmcpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gUExfRElU SEVSX0JMVUVfTk9JU0V9LCAtMSwgUExfRElUSEVSX01FVEhPRF9DT1VOVCAtIDEsIERZTkFNSUMs ICJkaXRoZXIiIH0sCi0gICAgICAgICB7ICJub25lIiwgIkRpc2FibGUgZGl0aGVyaW5nIiwgMCwg QVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gLTF9LCAwLCAwLCBTVEFUSUMsICJkaXRoZXIiIH0s Ci0tLSAKLTIuMzkuMgotCgpkaWZmIC0tZ2l0IGEvMDAwMS1mZnRvb2xzLWZmbXBlZ19maWx0ZXIt aW5pdGlhbGl6ZS10aGUtby10by1zaWxlbmNlLXRoLnBhdGNoIGIvMDAwMS1mZnRvb2xzLWZmbXBl Z19maWx0ZXItaW5pdGlhbGl6ZS10aGUtby10by1zaWxlbmNlLXRoLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA4NWI0M2E0Li4wMDAwMDAwCi0tLSBhLzAwMDEtZmZ0b29scy1m Zm1wZWdfZmlsdGVyLWluaXRpYWxpemUtdGhlLW8tdG8tc2lsZW5jZS10aC5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gYTBhMGE4MDQ5OThkYThkMWEzOTc0NzljOWJh ZmViMDAwZTZiZTA4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1biBaaGFvIDxi YXJyeWp6aGFvQHRlbmNlbnQuY29tPgotRGF0ZTogU2F0LCAyNSBGZWIgMjAyMyAyMTo1NDowMCAr MDgwMAotU3ViamVjdDogW1BBVENIXSBmZnRvb2xzL2ZmbXBlZ19maWx0ZXI6IGluaXRpYWxpemUg dGhlICdvJyB0byBzaWxlbmNlIHRoZQotIHdhcm5pbmcKLQotc2lsZW5jZSB0aGUgd2FybmluZzog dmFyaWFibGUgJ28nIGlzIHVzZWQgdW5pbml0aWFsaXplZCB3aGVuZXZlcgotJyYmJyBjb25kaXRp b24gaXMgZmFsc2UKLQotU2lnbmVkLW9mZi1ieTogSnVuIFpoYW8gPGJhcnJ5anpoYW9AdGVuY2Vu dC5jb20+Ci0tLS0KLSBmZnRvb2xzL2ZmbXBlZ19maWx0ZXIuYyB8IDIgKy0KLSAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2ZmdG9v bHMvZmZtcGVnX2ZpbHRlci5jIGIvZmZ0b29scy9mZm1wZWdfZmlsdGVyLmMKLWluZGV4IDFmNWJi ZjZjNGQuLjM1MDRhM2NjMGEgMTAwNjQ0Ci0tLS0gYS9mZnRvb2xzL2ZmbXBlZ19maWx0ZXIuYwot KysrIGIvZmZ0b29scy9mZm1wZWdfZmlsdGVyLmMKLUBAIC0zNjIsNyArMzYyLDcgQEAgZmFpbDoK LSAKLSBzdGF0aWMgaW50IGZpbHRlcl9vcHRfYXBwbHkoQVZGaWx0ZXJDb250ZXh0ICpmLCBjb25z dCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZhbCkKLSB7Ci0tICAgIGNvbnN0IEFWT3B0aW9uICpv OwotKyAgICBjb25zdCBBVk9wdGlvbiAqbyA9IE5VTEw7Ci0gICAgIGludCByZXQ7Ci0gCi0gICAg IHJldCA9IGF2X29wdF9zZXQoZiwga2V5LCB2YWwsIEFWX09QVF9TRUFSQ0hfQ0hJTERSRU4pOwot LS0gCi0yLjQxLjAKLQoKZGlmZiAtLWdpdCBhLzAwMDEtbGF2Yy1NYWtlZmlsZS1idWlsZC12dWxr YW4tZGVjb2RlLWNvZGUtaWYtdnVsa2FuX2F2MS5wYXRjaCBiLzAwMDEtbGF2Yy1NYWtlZmlsZS1i dWlsZC12dWxrYW4tZGVjb2RlLWNvZGUtaWYtdnVsa2FuX2F2MS5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjFhYWFlCi0tLSAvZGV2L251bGwKKysrIGIvMDAwMS1s YXZjLU1ha2VmaWxlLWJ1aWxkLXZ1bGthbi1kZWNvZGUtY29kZS1pZi12dWxrYW5fYXYxLnBhdGNo CkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gYjdjNjk2YWYxMDc4NDExMDg0NGNjM2RiZTBlYzIxNTM4 MzkzZjMwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEx5bm5lIDxkZXZAbHlubmUu ZWU+CitEYXRlOiBTdW4sIDMgRGVjIDIwMjMgMjE6MDI6MTMgKzAxMDAKK1N1YmplY3Q6IFtQQVRD SF0gbGF2Yy9NYWtlZmlsZTogYnVpbGQgdnVsa2FuIGRlY29kZSBjb2RlIGlmIHZ1bGthbl9hdjEg aGFzCisgYmVlbiBlbmFibGVkCisKK0ZvcmdvdHRlbi4KKy0tLQorIGxpYmF2Y29kZWMvTWFrZWZp bGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CisKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9NYWtlZmls ZQoraW5kZXggNzQ4ODA2ZTcwMi4uZmQ5ODgzZDJjYSAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMv TWFrZWZpbGUKKysrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKK0BAIC05OTgsNyArOTk4LDcgQEAg T0JKUy0kKENPTkZJR19BVjFfRFhWQTJfSFdBQ0NFTCkgICAgICAgICAgKz0gZHh2YTJfYXYxLm8K KyBPQkpTLSQoQ09ORklHX0FWMV9OVkRFQ19IV0FDQ0VMKSAgICAgICAgICArPSBudmRlY19hdjEu bworIE9CSlMtJChDT05GSUdfQVYxX1ZBQVBJX0hXQUNDRUwpICAgICAgICAgICs9IHZhYXBpX2F2 MS5vCisgT0JKUy0kKENPTkZJR19BVjFfVkRQQVVfSFdBQ0NFTCkgICAgICAgICAgKz0gdmRwYXVf YXYxLm8KKy1PQkpTLSQoQ09ORklHX0FWMV9WVUxLQU5fSFdBQ0NFTCkgICAgICAgICArPSB2dWxr YW5fYXYxLm8KKytPQkpTLSQoQ09ORklHX0FWMV9WVUxLQU5fSFdBQ0NFTCkgICAgICAgICArPSB2 dWxrYW5fZGVjb2RlLm8gdnVsa2FuX2F2MS5vCisgT0JKUy0kKENPTkZJR19IMjYzX1ZBQVBJX0hX QUNDRUwpICAgICAgICAgKz0gdmFhcGlfbXBlZzQubworIE9CSlMtJChDT05GSUdfSDI2M19WSURF T1RPT0xCT1hfSFdBQ0NFTCkgICs9IHZpZGVvdG9vbGJveC5vCisgT0JKUy0kKENPTkZJR19IMjY0 X0QzRDExVkFfSFdBQ0NFTCkgICAgICAgKz0gZHh2YTJfaDI2NC5vCistLSAKKzIuNDMuMAorCgpk aWZmIC0tZ2l0IGEvRkZtcGVnLWRldmVsLXYxMC1TdXBwb3J0LWVuaGFuY2VkLWZsdi1pbi1GRm1w ZWcucGF0Y2ggYi9GRm1wZWctZGV2ZWwtdjEwLVN1cHBvcnQtZW5oYW5jZWQtZmx2LWluLUZGbXBl Zy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhmZjdiYi4uMDAwMDAwMAot LS0gYS9GRm1wZWctZGV2ZWwtdjEwLVN1cHBvcnQtZW5oYW5jZWQtZmx2LWluLUZGbXBlZy5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDEyMzAgKzAsMCBAQAotRnJvbSBwYXRjaHdvcmsgTW9uIE1h eSAxNSAwODozMTo1NiAyMDIzCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0 Zi04IgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQK LVgtUGF0Y2h3b3JrLVN1Ym1pdHRlcjogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgot WC1QYXRjaHdvcmstSWQ6IDQxNjE1Ci1EZWxpdmVyZWQtVG86IGZmbXBlZ3BhdGNod29yazJAZ21h aWwuY29tCi1SZWNlaXZlZDogYnkgMjAwMjphMDU6NmEyMDpiYTkxOmIwOjEwNTpmZWI6NzFmMiB3 aXRoIFNNVFAgaWQKLSBmYjE3Y3NwMTQ0Mzg5NnB6YjsKLSAgICAgICAgTW9uLCAxNSBNYXkgMjAy MyAwMTozMzowMSAtMDcwMCAoUERUKQotWC1Hb29nbGUtU210cC1Tb3VyY2U6IAotIEFDSEhVWjY5 UGdHNmZxL0tGNklJZUtvVlYyOWZrZzdjQUpmbVBEM0xublRtSTlZWVZBUG8vYWxabTdCKzdmK0Zv T2duOXJIZFlVbzUKLVgtUmVjZWl2ZWQ6IGJ5IDIwMDI6YTE3OjkwNzo5N2NiOmIwOjk2YTo0NjU0 OjlhNTcgd2l0aCBTTVRQIGlkCi0ganMxMS0yMDAyMGExNzA5MDc5N2NiMDBiMDA5NmE0NjU0OWE1 N21yMTY4Njk3NThlamMuNTQuMTY4NDEzOTU4MDk1MTsKLSAgICAgICAgTW9uLCAxNSBNYXkgMjAy MyAwMTozMzowMCAtMDcwMCAoUERUKQotQVJDLVNlYWw6IGk9MTsgYT1yc2Etc2hhMjU2OyB0PTE2 ODQxMzk1ODA7IGN2PW5vbmU7Ci0gICAgICAgIGQ9Z29vZ2xlLmNvbTsgcz1hcmMtMjAxNjA4MTY7 Ci0gICAgICAgIGI9aU9SRVVrdldETHFTSmw0MHRyTTd3ZzN1ZkVRMjNGT0JManBzbFhzZHM1SFd5 SzQ4Yi83NmxGZ1F3UmZISmJIcWJoCi0gICAgICAgICB2YzRONkRvcEI1bXNSaTBWSy9wSm5EQWR0 dXlRUjJ0cUVnTHZiWnBISnpqSzF6SFVLUlY1SkhsbVZoTnZRT2ZZV3BNUgotICAgICAgICAgVkwv MU9NbWJUY3RFemEyWjcvVllzclZMSEx5NFFPbExoNHcvSmRSY3gvN3JoaU9BMWl4cE14QzRxVWI1 SUdNaG5xZW4KLSAgICAgICAgIFAyZERiQW9xZG1HVVp0bUE0Vk9meGtna0huSWFlRnYrVWZmSkdJ WnMxTHliN2Mzenl0d2RwTExpZXpSelZMV1FhU3RXCi0gICAgICAgICBUVmRjRGs0NXBPckEyOWxa NDZUcThZTkpQN081emZTZXZGSXFyQjg1bVVqU05veVppMjRnejE5eXhKYS8wOU8xcWIrbwotICAg ICAgICAgdGh6dz09Ci1BUkMtTWVzc2FnZS1TaWduYXR1cmU6IGk9MTsgYT1yc2Etc2hhMjU2OyBj PXJlbGF4ZWQvcmVsYXhlZDsgZD1nb29nbGUuY29tOwotIHM9YXJjLTIwMTYwODE2OwotICAgICAg ICBoPXNlbmRlcjplcnJvcnMtdG86Y29udGVudC10cmFuc2Zlci1lbmNvZGluZzpjYzpyZXBseS10 bwotICAgICAgICAgOmxpc3Qtc3Vic2NyaWJlOmxpc3QtaGVscDpsaXN0LXBvc3Q6bGlzdC1hcmNo aXZlOmxpc3QtdW5zdWJzY3JpYmUKLSAgICAgICAgIDpsaXN0LWlkOnByZWNlZGVuY2U6c3ViamVj dDpmZWVkYmFjay1pZDptaW1lLXZlcnNpb246cmVmZXJlbmNlcwotICAgICAgICAgOmluLXJlcGx5 LXRvOm1lc3NhZ2UtaWQ6ZGF0ZTp0bzpmcm9tOmRlbGl2ZXJlZC10bzsKLSAgICAgICAgYmg9UWc3 dXVnTzZ1cVFDWDY3K1NkTkVMVllGMzkvV0RQUkRGdDErSDd0b1Ercz07Ci0gICAgICAgIGI9YjFj eGRxU1ZHMU9jMTU3SGxOVUErTGZKaGtuVS9ucjNnNXduU0xYbVA3RHJSK1JRcDJDRndHZmpWK3dU a2ZXTG9rCi0gICAgICAgICBXeWR1bWtZRzJiaU9wbWhNaSttRzRjaTVXdlUyUjlidjFxcEtHcmVS cHNJbUdtanViUXh1NUNDOWd3bWVuejNjKzF2OAotICAgICAgICAgcHUrcWt3MTQydzl1TWVyak9w YXc2b1d2YUhxOWhXR1Z5NlVuaTMzQXFNSmhmajlXcVN3QkNlems2MmtyeHpCYXIvVk4KLSAgICAg ICAgIFhOYnp6cEFNSXVYY2owRGNIUzcwb0RIT1RidExxNHVETEdwa1F3bkJwWWJzd2ZHRDBoOE4r QitCU0NzM1pxTi9sNUpjCi0gICAgICAgICBqdUlRWTRpM2phMlcxeUhtNlpsemUycVU4bEZSUHpS d1ZCWkJ2OXZybzg4VnlGaWMwVVp4OXdSdUlxSkI5QlpJYjBoLwotICAgICAgICAgdmtpQT09Ci1B UkMtQXV0aGVudGljYXRpb24tUmVzdWx0czogaT0xOyBteC5nb29nbGUuY29tOwotICAgICAgIHNw Zj1wYXNzIChnb29nbGUuY29tOiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVn Lm9yZwotIGRlc2lnbmF0ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKQotIHNt dHAubWFpbGZyb209ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotUmV0dXJuLVBhdGg6 IDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPgotUmVjZWl2ZWQ6IGZyb20gZmZib3gw LWJnLm1wbGF5ZXJocS5odSAoZmZib3gwLWJnLmZmbXBlZy5vcmcuIFs3OS4xMjQuMTcuMTAwXSkK LSAgICAgICAgYnkgbXguZ29vZ2xlLmNvbSB3aXRoIEVTTVRQIGlkCi0gZ3QzNy0yMDAyMGExNzA5 MDcyZGE1MDBiMDA5NmIxYzM4NDU4ZHNpMjgyODExNmVqYy40MDkuMjAyMy4wNS4xNS4wMS4zMy4w MDsKLSAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozMzowMCAtMDcwMCAoUERUKQotUmVjZWl2 ZWQtU1BGOiBwYXNzIChnb29nbGUuY29tOiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5jZXNA ZmZtcGVnLm9yZwotIGRlc2lnbmF0ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVy KSBjbGllbnQtaXA9NzkuMTI0LjE3LjEwMDsKLUF1dGhlbnRpY2F0aW9uLVJlc3VsdHM6IG14Lmdv b2dsZS5jb207Ci0gICAgICAgc3BmPXBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1wZWct ZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCi0gZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBl cm1pdHRlZCBzZW5kZXIpCi0gc210cC5tYWlsZnJvbT1mZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1w ZWcub3JnCi1SZWNlaXZlZDogZnJvbSBbMTI3LjAuMS4xXSAobG9jYWxob3N0IFsxMjcuMC4wLjFd KQotCWJ5IGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKFBvc3RmaXgpIHdpdGggRVNNVFAgaWQgRDkz MDU2OEJFMEM7Ci0JTW9uLCAxNSBNYXkgMjAyMyAxMTozMjo1NyArMDMwMCAoRUVTVCkKLVgtT3Jp Z2luYWwtVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCi1EZWxpdmVyZWQtVG86IGZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnCi1SZWNlaXZlZDogZnJvbSBiZzQuZXhtYWlsLnFxLmNvbSAoYmc0LmV4 bWFpbC5xcS5jb20gWzQzLjE1NS42Ny4xNThdKQotIGJ5IGZmYm94MC1iZy5tcGxheWVyaHEuaHUg KFBvc3RmaXgpIHdpdGggRVNNVFBTIGlkIDUyMkY3NjgwMjc0Ci0gZm9yIDxmZm1wZWctZGV2ZWxA ZmZtcGVnLm9yZz47IE1vbiwgMTUgTWF5IDIwMjMgMTE6MzI6NDkgKzAzMDAgKEVFU1QpCi1YLVFR LW1pZDogYml6ZXNtdHA2OHQxNjg0MTM5NTY0dGc2NDJwYmwKLVJlY2VpdmVkOiBmcm9tIGxvY2Fs aG9zdCAoIFsxMDMuMTAyLjIwMy4yMDRdKSBieSBiaXplc210cC5xcS5jb20gKEVTTVRQKSB3aXRo Ci0gaWQgOyBNb24sIDE1IE1heSAyMDIzIDE2OjMyOjQyICswODAwIChDU1QpCi1YLVFRLVNTRjog MDExMDAwMDAwMDAwMDBaMFowMDAwMDBBMDAwMDAwMAotWC1RUS1GRUFUOiBuQ01UMFlLUzNpMU1V N0lYU3NpUzFSd2RlNmkvNFJxMmt1UE8yUG9YdzNPdnRKQjI0TVUrWTJHd2RFZzRZCi0gcGcwWmZT Z2dNM1ZCbVJDa0hJM2lvU09IMm12VnlZRzlMZ3doaHlmaXhQYUZJdGNwRjRFRjZ4b1plcFFwYTFI NXYxQkRpN3MKLSBpd0N3RjNzaGdIOGRsOTZpSktLcnlUNFR0alVUbllSb1JoQ1B0TENHZlV0aGFN L1I0NHhkcXhSdmpEcUlWbjFCVU1iNUdQdQotIERNdWFza3pPOFFRQ0Z4dmR1VXZvdmtYakpjNXYx N0tybTJsZjk0NVRtbS9wSXBWL3FMakFnQWhZSHFPb3hyZ0JHSFpEWVdZCi0gMFhlUzdSdllrS1RS MjR6OW05U2s3NXZlT1RLdEZ6a3NuYkxKWWtJRFlqK3ZvQWQxZGpYUEpXdHVCMmVsaG0vRElhOSs1 bFcKLSAyRG5LckovQmIyT2sxM2dnWG9DNjAwakhjeGtMYnVPcUR1SzVrNURodWI3RUNPVFBKeXRo a01WK0ZZUUN3PT0KLVgtUVEtR29vZEJnOiAwCi1YLUJJWk1BSUwtSUQ6IDE0NTQ3MzQ4MTU2Mjgw NjM4NzkxCi1Gcm9tOiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+Ci1UbzogZmZtcGVn LWRldmVsQGZmbXBlZy5vcmcKLURhdGU6IE1vbiwgMTUgTWF5IDIwMjMgMTY6MzE6NTYgKzA4MDAK LU1lc3NhZ2UtSWQ6IDwyMDIzMDUxNTA4MzIwMS40ODIwMS0yLWxxQGNoaW5hZmZtcGVnLm9yZz4K LVgtTWFpbGVyOiBnaXQtc2VuZC1lbWFpbCAyLjQwLjAKLUluLVJlcGx5LVRvOiA8MjAyMzA1MTUw ODMyMDEuNDgyMDEtMS1scUBjaGluYWZmbXBlZy5vcmc+Ci1SZWZlcmVuY2VzOiAKLSA8Q0FFZy1K ZS12WUQ5N0tuYmFxVGtLNT1VSjlUM2h0bXRIM1F5a2N3bzMrck5DeD13K2pRQG1haWwuZ21haWwu Y29tPgotIDwyMDIzMDUxNTA4MzIwMS40ODIwMS0xLWxxQGNoaW5hZmZtcGVnLm9yZz4KLU1JTUUt VmVyc2lvbjogMS4wCi1YLVFRLVNFTkRTSVpFOiA1MjAKLUZlZWRiYWNrLUlEOiBiaXplc210cDpj aGluYWZmbXBlZy5vcmc6cXliZ2xvZ2ljc3Zyc3o6cXliZ2xvZ2ljc3Zyc3ozYS0zCi1TdWJqZWN0 OiBbRkZtcGVnLWRldmVsXSBbUEFUQ0ggdjEwIDEvNl0gYXZmb3JtYXQvZmx2ZW5jOiBzdXBwb3J0 IG11eCBoZXZjIGluCi0gZW5oYW5jZWQgZmx2Ci1YLUJlZW5UaGVyZTogZmZtcGVnLWRldmVsQGZm bXBlZy5vcmcKLVgtTWFpbG1hbi1WZXJzaW9uOiAyLjEuMjkKLVByZWNlZGVuY2U6IGxpc3QKLUxp c3QtSWQ6IEZGbXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBhbmQgcGF0Y2hlcyA8ZmZtcGVn LWRldmVsLmZmbXBlZy5vcmc+Ci1MaXN0LVVuc3Vic2NyaWJlOiA8aHR0cHM6Ly9mZm1wZWcub3Jn L21haWxtYW4vb3B0aW9ucy9mZm1wZWctZGV2ZWw+LAotIDxtYWlsdG86ZmZtcGVnLWRldmVsLXJl cXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgotTGlzdC1BcmNoaXZlOiA8aHR0 cHM6Ly9mZm1wZWcub3JnL3BpcGVybWFpbC9mZm1wZWctZGV2ZWw+Ci1MaXN0LVBvc3Q6IDxtYWls dG86ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+Ci1MaXN0LUhlbHA6IDxtYWlsdG86ZmZtcGVnLWRl dmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PWhlbHA+Ci1MaXN0LVN1YnNjcmliZTogPGh0 dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbD4sCi0gPG1haWx0 bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9c3Vic2NyaWJlPgotUmVw bHktVG86IEZGbXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBhbmQgcGF0Y2hlcyA8ZmZtcGVn LWRldmVsQGZmbXBlZy5vcmc+Ci1DYzogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgot RXJyb3JzLVRvOiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCi1TZW5kZXI6ICJmZm1w ZWctZGV2ZWwiIDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPgotWC1UVUlEOiBXVWhI QzQvZFh1aysKLQotU2lnbmVkLW9mZi1ieTogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3Jn PgotLS0tCi0gbGliYXZmb3JtYXQvTWFrZWZpbGUgfCAgMiArLQotIGxpYmF2Zm9ybWF0L2Zsdi5o ICAgIHwgMTUgKysrKysrKysrKysrKysrCi0gbGliYXZmb3JtYXQvZmx2ZW5jLmMgfCAzOCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNDUg aW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1h dC9NYWtlZmlsZSBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlCi1pbmRleCBmOGFkN2M2YTExLi4xZWYz ZDE1NDY3IDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvTWFrZWZpbGUKLSsrKyBiL2xpYmF2Zm9y bWF0L01ha2VmaWxlCi1AQCAtMjE0LDcgKzIxNCw3IEBAIE9CSlMtJChDT05GSUdfRkxBQ19NVVhF UikgICAgICAgICAgICAgICAgKz0gZmxhY2VuYy5vIGZsYWNlbmNfaGVhZGVyLm8gXAotIE9CSlMt JChDT05GSUdfRkxJQ19ERU1VWEVSKSAgICAgICAgICAgICAgKz0gZmxpYy5vCi0gT0JKUy0kKENP TkZJR19GTFZfREVNVVhFUikgICAgICAgICAgICAgICArPSBmbHZkZWMubwotIE9CSlMtJChDT05G SUdfTElWRV9GTFZfREVNVVhFUikgICAgICAgICAgKz0gZmx2ZGVjLm8KLS1PQkpTLSQoQ09ORklH X0ZMVl9NVVhFUikgICAgICAgICAgICAgICAgICs9IGZsdmVuYy5vIGF2Yy5vCi0rT0JKUy0kKENP TkZJR19GTFZfTVVYRVIpICAgICAgICAgICAgICAgICArPSBmbHZlbmMubyBhdmMubyBoZXZjLm8K LSBPQkpTLSQoQ09ORklHX0ZPVVJYTV9ERU1VWEVSKSAgICAgICAgICAgICs9IDR4bS5vCi0gT0JK Uy0kKENPTkZJR19GUkFNRUNSQ19NVVhFUikgICAgICAgICAgICArPSBmcmFtZWNyY2VuYy5vIGZy YW1laGFzaC5vCi0gT0JKUy0kKENPTkZJR19GUkFNRUhBU0hfTVVYRVIpICAgICAgICAgICArPSBo YXNoZW5jLm8gZnJhbWVoYXNoLm8KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9mbHYuaCBiL2xp YmF2Zm9ybWF0L2Zsdi5oCi1pbmRleCAzNTcxYjkwMjc5Li45MWUwYTQxNDBjIDEwMDY0NAotLS0t IGEvbGliYXZmb3JtYXQvZmx2LmgKLSsrKyBiL2xpYmF2Zm9ybWF0L2Zsdi5oCi1AQCAtMzUsNiAr MzUsMTIgQEAKLSAKLSAjZGVmaW5lIEZMVl9WSURFT19GUkFNRVRZUEVfT0ZGU0VUICAgNAotIAot Ky8qIEV4dGVuZGVkIFZpZGVvVGFnSGVhZGVyCi0rICogZGVmaW5lZCBpbiByZWZlcmVuY2UgbGlu azoKLSsgKiBodHRwczovL2dpdGh1Yi5jb20vdmVvdmVyYS9lbmhhbmNlZC1ydG1wL2Jsb2IvbWFp bi9lbmhhbmNlZC1ydG1wLXYxLnBkZgotKyAqICovCi0rI2RlZmluZSBGTFZfSVNfRVhfSEVBREVS ICAgICAgICAgIDB4ODAKLSsKLSAvKiBiaXRtYXNrcyB0byBpc29sYXRlIHNwZWNpZmljIHZhbHVl cyAqLwotICNkZWZpbmUgRkxWX0FVRElPX0NIQU5ORUxfTUFTSyAgICAweDAxCi0gI2RlZmluZSBG TFZfQVVESU9fU0FNUExFU0laRV9NQVNLIDB4MDIKLUBAIC0xMTIsNiArMTE4LDE1IEBAIGVudW0g ewotICAgICBGTFZfQ09ERUNJRF9NUEVHNCAgID0gOSwKLSB9OwotIAotK2VudW0gewotKyAgICBQ YWNrZXRUeXBlU2VxdWVuY2VTdGFydCAgICAgICAgID0gMCwKLSsgICAgUGFja2V0VHlwZUNvZGVk RnJhbWVzICAgICAgICAgICA9IDEsCi0rICAgIFBhY2tldFR5cGVTZXF1ZW5jZUVuZCAgICAgICAg ICAgPSAyLAotKyAgICBQYWNrZXRUeXBlQ29kZWRGcmFtZXNYICAgICAgICAgID0gMywKLSsgICAg UGFja2V0VHlwZU1ldGFkYXRhICAgICAgICAgICAgICA9IDQsCi0rICAgIFBhY2tldFR5cGVNUEVH MlRTU2VxdWVuY2VTdGFydCAgPSA1LAotK307Ci0rCi0gZW51bSB7Ci0gICAgIEZMVl9GUkFNRV9L RVkgICAgICAgICAgICA9IDEgPDwgRkxWX1ZJREVPX0ZSQU1FVFlQRV9PRkZTRVQsIC8vLzwga2V5 IGZyYW1lIChmb3IgQVZDLCBhIHNlZWthYmxlIGZyYW1lKQotICAgICBGTFZfRlJBTUVfSU5URVIg ICAgICAgICAgPSAyIDw8IEZMVl9WSURFT19GUkFNRVRZUEVfT0ZGU0VULCAvLy88IGludGVyIGZy YW1lIChmb3IgQVZDLCBhIG5vbi1zZWVrYWJsZSBmcmFtZSkKLWRpZmYgLS1naXQgYS9saWJhdmZv cm1hdC9mbHZlbmMuYyBiL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jCi1pbmRleCA3MjFmMDYyODExLi4z NWUxOThmYTE1IDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvZmx2ZW5jLmMKLSsrKyBiL2xpYmF2 Zm9ybWF0L2ZsdmVuYy5jCi1AQCAtMjgsNiArMjgsNyBAQAotICNpbmNsdWRlICJsaWJhdmNvZGVj L21wZWc0YXVkaW8uaCIKLSAjaW5jbHVkZSAiYXZpby5oIgotICNpbmNsdWRlICJhdmMuaCIKLSsj aW5jbHVkZSAiaGV2Yy5oIgotICNpbmNsdWRlICJhdmZvcm1hdC5oIgotICNpbmNsdWRlICJmbHYu aCIKLSAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKLUBAIC00Niw2ICs0Nyw3IEBAIHN0YXRpYyBjb25z dCBBVkNvZGVjVGFnIGZsdl92aWRlb19jb2RlY19pZHNbXSA9IHsKLSAgICAgeyBBVl9DT0RFQ19J RF9WUDYsICAgICAgRkxWX0NPREVDSURfVlA2IH0sCi0gICAgIHsgQVZfQ09ERUNfSURfVlA2QSwg ICAgIEZMVl9DT0RFQ0lEX1ZQNkEgfSwKLSAgICAgeyBBVl9DT0RFQ19JRF9IMjY0LCAgICAgRkxW X0NPREVDSURfSDI2NCB9LAotKyAgICB7IEFWX0NPREVDX0lEX0hFVkMsICAgICBNS0JFVEFHKCdo JywgJ3YnLCAnYycsICcxJykgfSwKLSAgICAgeyBBVl9DT0RFQ19JRF9OT05FLCAgICAgMCB9Ci0g fTsKLSAKLUBAIC00ODksNyArNDkxLDcgQEAgc3RhdGljIHZvaWQgZmx2X3dyaXRlX2NvZGVjX2hl YWRlcihBVkZvcm1hdENvbnRleHQqIHMsIEFWQ29kZWNQYXJhbWV0ZXJzKiBwYXIsIGkKLSAgICAg RkxWQ29udGV4dCAqZmx2ID0gcy0+cHJpdl9kYXRhOwotIAotICAgICBpZiAocGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9BQUMgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0 Ci0tICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkgewot KyAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgfHwgcGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7Ci0gICAgICAgICBpbnQ2NF90IHBvczsK LSAgICAgICAgIGF2aW9fdzgocGIsCi0gICAgICAgICAgICAgICAgIHBhci0+Y29kZWNfdHlwZSA9 PSBBVk1FRElBX1RZUEVfVklERU8gPwotQEAgLTUzMiwxMCArNTM0LDE5IEBAIHN0YXRpYyB2b2lk IGZsdl93cml0ZV9jb2RlY19oZWFkZXIoQVZGb3JtYXRDb250ZXh0KiBzLCBBVkNvZGVjUGFyYW1l dGVycyogcGFyLCBpCi0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGF2aW9fd3JpdGUocGIs IHBhci0+ZXh0cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplKTsKLSAgICAgICAgIH0gZWxzZSB7 Ci0tICAgICAgICAgICAgYXZpb193OChwYiwgcGFyLT5jb2RlY190YWcgfCBGTFZfRlJBTUVfS0VZ KTsgLy8gZmxhZ3MKLS0gICAgICAgICAgICBhdmlvX3c4KHBiLCAwKTsgLy8gQVZDIHNlcXVlbmNl IGhlYWRlcgotLSAgICAgICAgICAgIGF2aW9fd2IyNChwYiwgMCk7IC8vIGNvbXBvc2l0aW9uIHRp bWUKLS0gICAgICAgICAgICBmZl9pc29tX3dyaXRlX2F2Y2MocGIsIHBhci0+ZXh0cmFkYXRhLCBw YXItPmV4dHJhZGF0YV9zaXplKTsKLSsgICAgICAgICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9IRVZDKSB7Ci0rICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIEZMVl9JU19F WF9IRUFERVIgfCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydCk7IC8vIEV4VmlkZW9UYWdIZWFkZXIg bW9kZSB3aXRoIFBhY2tldFR5cGVTZXF1ZW5jZVN0YXJ0Ci0rICAgICAgICAgICAgICAgIGF2aW9f d3JpdGUocGIsICJodmMxIiwgNCk7Ci0rICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAg ICAgICAgYXZpb193OChwYiwgcGFyLT5jb2RlY190YWcgfCBGTFZfRlJBTUVfS0VZKTsgLy8gZmxh Z3MKLSsgICAgICAgICAgICAgICAgYXZpb193OChwYiwgMCk7IC8vIEFWQyBzZXF1ZW5jZSBoZWFk ZXIKLSsgICAgICAgICAgICAgICAgYXZpb193YjI0KHBiLCAwKTsgLy8gY29tcG9zaXRpb24gdGlt ZQotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9IRVZDKQotKyAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX2h2Y2MocGIs IHBhci0+ZXh0cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplLCAwKTsKLSsgICAgICAgICAgICBl bHNlCi0rICAgICAgICAgICAgICAgIGZmX2lzb21fd3JpdGVfYXZjYyhwYiwgcGFyLT5leHRyYWRh dGEsIHBhci0+ZXh0cmFkYXRhX3NpemUpOwotICAgICAgICAgfQotICAgICAgICAgZGF0YV9zaXpl ID0gYXZpb190ZWxsKHBiKSAtIHBvczsKLSAgICAgICAgIGF2aW9fc2VlayhwYiwgLWRhdGFfc2l6 ZSAtIDEwLCBTRUVLX0NVUik7Ci1AQCAtODMyLDEzICs4NDMsMTMgQEAgc3RhdGljIGludCBmbHZf d3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKLSAgICAgaWYg KHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2RiB8fCBwYXItPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX1ZQNkEgfHwKLSAgICAgICAgIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf VlA2ICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQykKLSAgICAgICAgIGZsYWdz X3NpemUgPSAyOwotLSAgICBlbHNlIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gy NjQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkKLSsgICAgZWxzZSBpZiAo cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfTVBFRzQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKQotICAg ICAgICAgZmxhZ3Nfc2l6ZSA9IDU7Ci0gICAgIGVsc2UKLSAgICAgICAgIGZsYWdzX3NpemUgPSAx OwotIAotICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BQUMgfHwgcGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0Ci0tICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkgewotKyAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfTVBFRzQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZD KSB7Ci0gICAgICAgICBzaXplX3Qgc2lkZV9zaXplOwotICAgICAgICAgdWludDhfdCAqc2lkZSA9 IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKHBrdCwgQVZfUEtUX0RBVEFfTkVXX0VYVFJBREFUQSwg JnNpZGVfc2l6ZSk7Ci0gICAgICAgICBpZiAoc2lkZSAmJiBzaWRlX3NpemUgPiAwICYmIChzaWRl X3NpemUgIT0gcGFyLT5leHRyYWRhdGFfc2l6ZSB8fCBtZW1jbXAoc2lkZSwgcGFyLT5leHRyYWRh dGEsIHNpZGVfc2l6ZSkpKSB7Ci1AQCAtODU4LDcgKzg2OSw3IEBAIHN0YXRpYyBpbnQgZmx2X3dy aXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCi0gICAgICAgICAg ICAgICAgIlBhY2tldHMgYXJlIG5vdCBpbiB0aGUgcHJvcGVyIG9yZGVyIHdpdGggcmVzcGVjdCB0 byBEVFNcbiIpOwotICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKLSAgICAgfQotLSAg ICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfTVBFRzQpIHsKLSsgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfSDI2NCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8IHBhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykgewotICAgICAgICAgaWYgKHBrdC0+cHRzID09 IEFWX05PUFRTX1ZBTFVFKSB7Ci0gICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwg IlBhY2tldCBpcyBtaXNzaW5nIFBUU1xuIik7Ci0gICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Io RUlOVkFMKTsKLUBAIC05MDMsNiArOTE0LDEwIEBAIHN0YXRpYyBpbnQgZmx2X3dyaXRlX3BhY2tl dChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCi0gICAgICAgICBpZiAocGFyLT5l eHRyYWRhdGFfc2l6ZSA+IDAgJiYgKih1aW50OF90KilwYXItPmV4dHJhZGF0YSAhPSAxKQotICAg ICAgICAgICAgIGlmICgocmV0ID0gZmZfYXZjX3BhcnNlX25hbF91bml0c19idWYocGt0LT5kYXRh LCAmZGF0YSwgJnNpemUpKSA8IDApCi0gICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0rICAg IH0gZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7Ci0rICAgICAg ICBpZiAocGFyLT5leHRyYWRhdGFfc2l6ZSA+IDAgJiYgKih1aW50OF90KilwYXItPmV4dHJhZGF0 YSAhPSAxKQotKyAgICAgICAgICAgIGlmICgocmV0ID0gZmZfaGV2Y19hbm5leGIybXA0X2J1Zihw a3QtPmRhdGEsICZkYXRhLCAmc2l6ZSwgMCwgTlVMTCkpIDwgMCkKLSsgICAgICAgICAgICAgICAg cmV0dXJuIHJldDsKLSAgICAgfSBlbHNlIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X0FBQyAmJiBwa3QtPnNpemUgPiAyICYmCi0gICAgICAgICAgICAgICAgKEFWX1JCMTYocGt0LT5k YXRhKSAmIDB4ZmZmMCkgPT0gMHhmZmYwKSB7Ci0gICAgICAgICBpZiAoIXMtPnN0cmVhbXNbcGt0 LT5zdHJlYW1faW5kZXhdLT5uYl9mcmFtZXMpIHsKLUBAIC05NjQsNyArOTc5LDEyIEBAIHN0YXRp YyBpbnQgZmx2X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3Qp Ci0gICAgICAgICBhdmlvX3diMzIocGIsIGRhdGFfc2l6ZSArIDExKTsKLSAgICAgfSBlbHNlIHsK LSAgICAgICAgIGF2X2Fzc2VydDEoZmxhZ3M+PTApOwotLSAgICAgICAgYXZpb193OChwYixmbGFn cyk7Ci0rICAgICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7Ci0r ICAgICAgICAgICAgYXZpb193OChwYiwgRkxWX0lTX0VYX0hFQURFUiB8IFBhY2tldFR5cGVDb2Rl ZEZyYW1lc1gpOyAvLyBFeFZpZGVvVGFnSGVhZGVyIG1vZGUgd2l0aCBQYWNrZXRUeXBlQ29kZWRG cmFtZXNYCi0rICAgICAgICAgICAgYXZpb193cml0ZShwYiwgImh2YzEiLCA0KTsKLSsgICAgICAg IH0gZWxzZSB7Ci0rICAgICAgICAgICAgYXZpb193OChwYiwgZmxhZ3MpOwotKyAgICAgICAgfQot ICAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2KQotICAgICAgICAg ICAgIGF2aW9fdzgocGIsMCk7Ci0gICAgICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9WUDZGIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2QSkgewotCi1Gcm9t IHBhdGNod29yayBNb24gTWF5IDE1IDA4OjMxOjU3IDIwMjMKLUNvbnRlbnQtVHlwZTogdGV4dC9w bGFpbjsgY2hhcnNldD0idXRmLTgiCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UcmFuc2Zl ci1FbmNvZGluZzogN2JpdAotWC1QYXRjaHdvcmstU3VibWl0dGVyOiBTdGV2ZW4gTGl1IDxscUBj aGluYWZmbXBlZy5vcmc+Ci1YLVBhdGNod29yay1JZDogNDE2MTYKLURlbGl2ZXJlZC1UbzogZmZt cGVncGF0Y2h3b3JrMkBnbWFpbC5jb20KLVJlY2VpdmVkOiBieSAyMDAyOmEwNTo2YTIwOmJhOTE6 YjA6MTA1OmZlYjo3MWYyIHdpdGggU01UUCBpZAotIGZiMTdjc3AxNDQ0MTIzcHpiOwotICAgICAg ICBNb24sIDE1IE1heSAyMDIzIDAxOjMzOjIyIC0wNzAwIChQRFQpCi1YLUdvb2dsZS1TbXRwLVNv dXJjZTogCi0gQUNISFVaNHFTcW5IQVJBVFl2TlRPaVhoTUlJZ0dXVUhvNjEyd04zVWkxcjNjWVBR ZDU3RStCOWtpQ1JZaWpEaHpnT2JLTUtrRG01NAotWC1SZWNlaXZlZDogYnkgMjAwMjphMTc6OTA3 OjZlOGU6YjA6OTRmOjM1MjE6Mzk2IHdpdGggU01UUCBpZAotIHNoMTQtMjAwMjBhMTcwOTA3NmU4 ZTAwYjAwOTRmMzUyMTAzOTZtcjM1NzQwODgzZWpjLjIzLjE2ODQxMzk2MDIwMTE7Ci0gICAgICAg IE1vbiwgMTUgTWF5IDIwMjMgMDE6MzM6MjIgLTA3MDAgKFBEVCkKLUFSQy1TZWFsOiBpPTE7IGE9 cnNhLXNoYTI1NjsgdD0xNjg0MTM5NjAxOyBjdj1ub25lOwotICAgICAgICBkPWdvb2dsZS5jb207 IHM9YXJjLTIwMTYwODE2OwotICAgICAgICBiPUVGSmd4OWNtNWV3MitQSXBUZUhpN1FDem9zLy9v T3M1cS9IbmRReGMwK2RIWWxqdTVYNHJWU0FDbWZrOUwwREgzagotICAgICAgICAgK2NHMG4yLzN3 QXNndUExckMzQjhhK3FYa1JmQVhDMXJvcHVoRHdLQ1pDZHcwSXY0MFZtNEplSG9sRVFXUm5pOEtv K0YKLSAgICAgICAgIE1oV1k3QXZ4clg0R3NPMHBwNFNmS3NWRmFKZG8xOGRscG4rQlVkOUZYNU43 VjZsVVRhZFFzVmNKWUpCZDJCMk1JUlVpCi0gICAgICAgICBtSmFFUHA4V3BSa2lTOTJEZ1doUHpV QzlFTG53cnlTbk5MMG1PbzlEQ2Q5Y2pGWFE5S1hXNnFqUm9QMGJsYkw4TjJ3cwotICAgICAgICAg QmxZMmRKVm1TTTM2bi9HSzlnWmIrNmZVZzN4VnVmRFVmZFJyMG00anBhL0lMRDkzL253QVpzcWhr M2s0ajAwc2UrQ08KLSAgICAgICAgIDdWcnc9PQotQVJDLU1lc3NhZ2UtU2lnbmF0dXJlOiBpPTE7 IGE9cnNhLXNoYTI1NjsgYz1yZWxheGVkL3JlbGF4ZWQ7IGQ9Z29vZ2xlLmNvbTsKLSBzPWFyYy0y MDE2MDgxNjsKLSAgICAgICAgaD1zZW5kZXI6ZXJyb3JzLXRvOmNvbnRlbnQtdHJhbnNmZXItZW5j b2Rpbmc6Y2M6cmVwbHktdG8KLSAgICAgICAgIDpsaXN0LXN1YnNjcmliZTpsaXN0LWhlbHA6bGlz dC1wb3N0Omxpc3QtYXJjaGl2ZTpsaXN0LXVuc3Vic2NyaWJlCi0gICAgICAgICA6bGlzdC1pZDpw cmVjZWRlbmNlOnN1YmplY3Q6ZmVlZGJhY2staWQ6bWltZS12ZXJzaW9uOnJlZmVyZW5jZXMKLSAg ICAgICAgIDppbi1yZXBseS10bzptZXNzYWdlLWlkOmRhdGU6dG86ZnJvbTpkZWxpdmVyZWQtdG87 Ci0gICAgICAgIGJoPXlnVWI2MFRyNUxiUG5oaVMxQXMraEwrcVg0NUtJSStvY3BZOVgzSnE0VEk9 OwotICAgICAgICBiPVVwR2hxYmZvLyttOVdXNXFFOTJMS09kT2x4a0NXeXkyUVZxaVhDalhweGVw ZERkMElLa2hHcVNzcHRlOXpKclVUOAotICAgICAgICAgUVdnOElpREs2SlRuR252cCtoTzZkb1pq aFhjMUd5eVR4NmNNUVFYKzJKenFUdGJXRjAzUzk0R3dCZ21OL1UyUklLOU0KLSAgICAgICAgIGY5 ODBTU2dmTlpSU0pGNWtKK2RPMml4NE01V0lXaHhFWUIvTVJ6bi9SYnhBdllrd0xORzFnTU1CVE5p bW9nYkZzWFJvCi0gICAgICAgICBoNVdnR3hPNGs4bXgveDhQQnJ0TnYxYVBaODZGQWNYQzNBaWVh bzdhVm5SRHZXamVwRXVzNWpFZkd1MlF1cW52TTJxSwotICAgICAgICAgV0lqVXlGcnBwSkwvY3JB TnRnUit0RmNMODM5NWJSR1lPYll0SUJibFVRL2c1ZGRIempzYUNsSi80MnIzaDF2ZXozOXEKLSAg ICAgICAgIG5QalE9PQotQVJDLUF1dGhlbnRpY2F0aW9uLVJlc3VsdHM6IGk9MTsgbXguZ29vZ2xl LmNvbTsKLSAgICAgICBzcGY9cGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZl bC1ib3VuY2VzQGZmbXBlZy5vcmcKLSBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0 dGVkIHNlbmRlcikKLSBzbXRwLm1haWxmcm9tPWZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5v cmcKLVJldHVybi1QYXRoOiA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4KLVJlY2Vp dmVkOiBmcm9tIGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKGZmYm94MC1iZy5mZm1wZWcub3JnLiBb NzkuMTI0LjE3LjEwMF0pCi0gICAgICAgIGJ5IG14Lmdvb2dsZS5jb20gd2l0aCBFU01UUCBpZAot IHYyMS0yMDAyMGExNzA5MDYwYjU1MDBiMDA5NWVjNTRhMjJiY3NpMTA5MDc1OTVlamcuMTA2LjIw MjMuMDUuMTUuMDEuMzMuMjE7Ci0gICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6MzM6MjEgLTA3 MDAgKFBEVCkKLVJlY2VpdmVkLVNQRjogcGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBl Zy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLSBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMg cGVybWl0dGVkIHNlbmRlcikgY2xpZW50LWlwPTc5LjEyNC4xNy4xMDA7Ci1BdXRoZW50aWNhdGlv bi1SZXN1bHRzOiBteC5nb29nbGUuY29tOwotICAgICAgIHNwZj1wYXNzIChnb29nbGUuY29tOiBk b21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotIGRlc2lnbmF0ZXMgNzku MTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKQotIHNtdHAubWFpbGZyb209ZmZtcGVnLWRl dmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotUmVjZWl2ZWQ6IGZyb20gWzEyNy4wLjEuMV0gKGxvY2Fs aG9zdCBbMTI3LjAuMC4xXSkKLQlieSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChQb3N0Zml4KSB3 aXRoIEVTTVRQIGlkIEQzRjc2NjhDMDkyOwotCU1vbiwgMTUgTWF5IDIwMjMgMTE6MzM6MTggKzAz MDAgKEVFU1QpCi1YLU9yaWdpbmFsLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotRGVsaXZl cmVkLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotUmVjZWl2ZWQ6IGZyb20gYmc0LmV4bWFp bC5xcS5jb20gKGJnNC5leG1haWwucXEuY29tIFs0My4xNTUuNjcuMTU4XSkKLSBieSBmZmJveDAt YmcubXBsYXllcmhxLmh1IChQb3N0Zml4KSB3aXRoIEVTTVRQUyBpZCA4MTgwMzY4QzAwNAotIGZv ciA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+OyBNb24sIDE1IE1heSAyMDIzIDExOjMzOjExICsw MzAwIChFRVNUKQotWC1RUS1taWQ6IGJpemVzbXRwNjJ0MTY4NDEzOTU4NXR4aHAzMm91Ci1SZWNl aXZlZDogZnJvbSBsb2NhbGhvc3QgKCBbMTAzLjEwMi4yMDMuMjA0XSkgYnkgYml6ZXNtdHAucXEu Y29tIChFU01UUCkgd2l0aAotIGlkIDsgTW9uLCAxNSBNYXkgMjAyMyAxNjozMzowNCArMDgwMCAo Q1NUKQotWC1RUS1TU0Y6IDAxMTAwMDAwMDAwMDAwWjBaMDAwMDAwQTAwMDAwMDAKLVgtUVEtRkVB VDogNkFybnVTREoraW5WQzA2TUgxbnJKZXU1NiszNWRpcHRXM2RDZEh0M2JNYXlGWm9DeUU4UXlV TzBRWTl6bQotIGlZNjJKQ1NwU0tZRUs0Y2Eya3B4a0I5OVBJNTBGaVdmTnR6TERaK1Z6VVR5MDEz R01wTHdoMUNXZVZYNWNGMTVSeUVBSUM5Ci0gdTNPemc3SVk4bXYrR2lEdGY2RkRnU3l1bUUxRDkz cXhWMVIyc0o1djM4VjNOYk5QY2lrZzBhRHhaWE9sQytIcitMZGhzWmkKLSA0WDV0RGkzTm92aHBD Zis4V28rWmFlakhPckU4TVVjVUdwYmg4ZEhSZXc2ZG5ta2RrSzV5dFNIU1pFeWU4UnNYWm5NZHA0 QQotIG1xQlpxSURHdzFhNGUwNEpBYy9ORENzN3FxNHF0aHhNRkIxc2toYU92NkRMY0wrRXFWMlFG d25KbjdWNU9vZjdCd2ZqYVRHCi0gbUVBVnBpWkRuUWhGdk9nSGVtSDF2NjFCbHViMm5DbkF1cnJH aEdNYXl3SXpGWFQ4N2FPU0xDRGxGcHJTZz09Ci1YLVFRLUdvb2RCZzogMAotWC1CSVpNQUlMLUlE OiAxMTIxMDgzOTE5MTI5MjU4NzM1NwotRnJvbTogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcu b3JnPgotVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCi1EYXRlOiBNb24sIDE1IE1heSAyMDIz IDE2OjMxOjU3ICswODAwCi1NZXNzYWdlLUlkOiA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMy1scUBj aGluYWZmbXBlZy5vcmc+Ci1YLU1haWxlcjogZ2l0LXNlbmQtZW1haWwgMi40MC4wCi1Jbi1SZXBs eS1UbzogPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTEtbHFAY2hpbmFmZm1wZWcub3JnPgotUmVmZXJl bmNlczogCi0gPENBRWctSmUtdllEOTdLbmJhcVRrSzU9VUo5VDNodG10SDNReWtjd28zK3JOQ3g9 dytqUUBtYWlsLmdtYWlsLmNvbT4KLSA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMS1scUBjaGluYWZm bXBlZy5vcmc+Ci1NSU1FLVZlcnNpb246IDEuMAotWC1RUS1TRU5EU0laRTogNTIwCi1GZWVkYmFj ay1JRDogYml6ZXNtdHA6Y2hpbmFmZm1wZWcub3JnOnF5Ymdsb2dpY3N2cnN6OnF5Ymdsb2dpY3N2 cnN6M2EtMwotU3ViamVjdDogW0ZGbXBlZy1kZXZlbF0gW1BBVENIIHYxMCAyLzZdIGF2Zm9ybWF0 L2ZsdmRlYzogc3VwcG9ydCBkZW11eCBoZXZjCi0gaW4gZW5oYW5jZWQgZmx2Ci1YLUJlZW5UaGVy ZTogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKLVgtTWFpbG1hbi1WZXJzaW9uOiAyLjEuMjkKLVBy ZWNlZGVuY2U6IGxpc3QKLUxpc3QtSWQ6IEZGbXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBh bmQgcGF0Y2hlcyA8ZmZtcGVnLWRldmVsLmZmbXBlZy5vcmc+Ci1MaXN0LVVuc3Vic2NyaWJlOiA8 aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vb3B0aW9ucy9mZm1wZWctZGV2ZWw+LAotIDxtYWls dG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgot TGlzdC1BcmNoaXZlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL3BpcGVybWFpbC9mZm1wZWctZGV2ZWw+ Ci1MaXN0LVBvc3Q6IDxtYWlsdG86ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+Ci1MaXN0LUhlbHA6 IDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PWhlbHA+Ci1M aXN0LVN1YnNjcmliZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBl Zy1kZXZlbD4sCi0gPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1Ympl Y3Q9c3Vic2NyaWJlPgotUmVwbHktVG86IEZGbXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBh bmQgcGF0Y2hlcyA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+Ci1DYzogU3RldmVuIExpdSA8bHFA Y2hpbmFmZm1wZWcub3JnPgotRXJyb3JzLVRvOiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcu b3JnCi1TZW5kZXI6ICJmZm1wZWctZGV2ZWwiIDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcu b3JnPgotWC1UVUlEOiBTRnNqSE1IdTJJU2wKLQotU2lnbmVkLW9mZi1ieTogU3RldmVuIExpdSA8 bHFAY2hpbmFmZm1wZWcub3JnPgotLS0tCi0gbGliYXZmb3JtYXQvZmx2ZGVjLmMgfCA1OCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2Vk LCA1MCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZm b3JtYXQvZmx2ZGVjLmMgYi9saWJhdmZvcm1hdC9mbHZkZWMuYwotaW5kZXggZDgzZWRmZjcyNy4u YzhlNmNhZGYxYyAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L2ZsdmRlYy5jCi0rKysgYi9saWJh dmZvcm1hdC9mbHZkZWMuYwotQEAgLTc5LDYgKzc5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRkxWQ29u dGV4dCB7Ci0gICAgIGludDY0X3QgbGFzdF90czsKLSAgICAgaW50NjRfdCB0aW1lX29mZnNldDsK LSAgICAgaW50NjRfdCB0aW1lX3BvczsKLSsKLSsgICAgdWludDhfdCBleGhlYWRlcjsKLSB9IEZM VkNvbnRleHQ7Ci0gCi0gLyogQU1GIGRhdGUgdHlwZSAqLwotQEAgLTMwMiwxMyArMzA0LDI1IEBA IHN0YXRpYyB2b2lkIGZsdl9zZXRfYXVkaW9fY29kZWMoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0 cmVhbSAqYXN0cmVhbSwKLSAgICAgfQotIH0KLSAKLS1zdGF0aWMgaW50IGZsdl9zYW1lX3ZpZGVv X2NvZGVjKEFWQ29kZWNQYXJhbWV0ZXJzICp2cGFyLCBpbnQgZmxhZ3MpCi0rc3RhdGljIGludCBm bHZfc2FtZV92aWRlb19jb2RlYyhBVkZvcm1hdENvbnRleHQgKnMsIEFWQ29kZWNQYXJhbWV0ZXJz ICp2cGFyLCBpbnQgZmxhZ3MpCi0gewotICAgICBpbnQgZmx2X2NvZGVjaWQgPSBmbGFncyAmIEZM Vl9WSURFT19DT0RFQ0lEX01BU0s7Ci0rICAgIEZMVkNvbnRleHQgKmZsdiA9IHMtPnByaXZfZGF0 YTsKLSAKLSAgICAgaWYgKCF2cGFyLT5jb2RlY19pZCAmJiAhdnBhci0+Y29kZWNfdGFnKQotICAg ICAgICAgcmV0dXJuIDE7Ci0gCi0rICAgIGlmIChmbHYtPmV4aGVhZGVyKSB7Ci0rICAgICAgICB1 aW50OF90ICpjb2RlY19pZF9zdHIgPSAodWludDhfdCAqKXMtPnBiLT5idWZfcHRyOwotKyAgICAg ICAgdWludDMyX3QgY29kZWNfaWQgPSBjb2RlY19pZF9zdHJbM10gfCBjb2RlY19pZF9zdHJbMl0g PDwgOCB8IGNvZGVjX2lkX3N0clsxXSA8PCAxNiB8IGNvZGVjX2lkX3N0clswXSA8PCAyNDsKLSsg ICAgICAgIHN3aXRjaChjb2RlY19pZCkgewotKyAgICAgICAgICAgIGNhc2UgTUtCRVRBRygnaCcs ICd2JywgJ2MnLCAnMScpOgotKyAgICAgICAgICAgICAgICByZXR1cm4gdnBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfSEVWQzsKLSsgICAgICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAg ICAgICBicmVhazsKLSsgICAgICAgIH0KLSsgICAgfQotKwotICAgICBzd2l0Y2ggKGZsdl9jb2Rl Y2lkKSB7Ci0gICAgIGNhc2UgRkxWX0NPREVDSURfSDI2MzoKLSAgICAgICAgIHJldHVybiB2cGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9GTFYxOwotQEAgLTMzMSw5ICszNDUsMjQgQEAgc3Rh dGljIGludCBmbHZfc2V0X3ZpZGVvX2NvZGVjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0g KnZzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbHZfY29kZWNp ZCwgaW50IHJlYWQpCi0gewotICAgICBGRlN0cmVhbSAqY29uc3QgdnN0cmVhbWkgPSBmZnN0cmVh bSh2c3RyZWFtKTsKLSsgICAgRkxWQ29udGV4dCAqZmx2ID0gcy0+cHJpdl9kYXRhOwotICAgICBp bnQgcmV0ID0gMDsKLSAgICAgQVZDb2RlY1BhcmFtZXRlcnMgKnBhciA9IHZzdHJlYW0tPmNvZGVj cGFyOwotICAgICBlbnVtIEFWQ29kZWNJRCBvbGRfY29kZWNfaWQgPSB2c3RyZWFtLT5jb2RlY3Bh ci0+Y29kZWNfaWQ7Ci0rICAgIGZsdl9jb2RlY2lkICY9IEZMVl9WSURFT19DT0RFQ0lEX01BU0s7 Ci0rCi0rICAgIGlmIChmbHYtPmV4aGVhZGVyKSB7Ci0rICAgICAgICB1aW50MzJfdCBjb2RlY19p ZCA9IGF2aW9fcmIzMihzLT5wYik7Ci0rCi0rICAgICAgICBzd2l0Y2goY29kZWNfaWQpIHsKLSsg ICAgICAgICAgICBjYXNlIE1LQkVUQUcoJ2gnLCAndicsICdjJywgJzEnKToKLSsgICAgICAgICAg ICAgICAgcGFyLT5jb2RlY19pZCA9IEFWX0NPREVDX0lEX0hFVkM7Ci0rICAgICAgICAgICAgICAg IHZzdHJlYW1pLT5uZWVkX3BhcnNpbmcgPSBBVlNUUkVBTV9QQVJTRV9IRUFERVJTOwotKyAgICAg ICAgICAgICAgICByZXR1cm4gNDsKLSsgICAgICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAg ICAgICBicmVhazsKLSsgICAgICAgIH0KLSsgICAgfQotICAgICBzd2l0Y2ggKGZsdl9jb2RlY2lk KSB7Ci0gICAgIGNhc2UgRkxWX0NPREVDSURfSDI2MzoKLSAgICAgICAgIHBhci0+Y29kZWNfaWQg PSBBVl9DT0RFQ19JRF9GTFYxOwotQEAgLTc5Niw2ICs4MjUsNyBAQCBzdGF0aWMgaW50IGZsdl9y ZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCi0gICAgIHMtPnN0YXJ0X3RpbWUgPSAwOwot ICAgICBmbHYtPnN1bV9mbHZfdGFnX3NpemUgPSAwOwotICAgICBmbHYtPmxhc3Rfa2V5ZnJhbWVf c3RyZWFtX2luZGV4ID0gLTE7Ci0rICAgIGZsdi0+ZXhoZWFkZXIgPSAwOwotIAotICAgICByZXR1 cm4gMDsKLSB9Ci1AQCAtMTA3MSw2ICsxMTAxLDExIEBAIHJldHJ5OgotICAgICB9IGVsc2UgaWYg KHR5cGUgPT0gRkxWX1RBR19UWVBFX1ZJREVPKSB7Ci0gICAgICAgICBzdHJlYW1fdHlwZSA9IEZM Vl9TVFJFQU1fVFlQRV9WSURFTzsKLSAgICAgICAgIGZsYWdzICAgID0gYXZpb19yOChzLT5wYik7 Ci0rICAgICAgICAvKgotKyAgICAgICAgICogUmVmZXJlbmNlIEVuaGFuY2luZyBGTFYgMjAyMy0w My12MS4wLjAtQi44Ci0rICAgICAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vdmVvdmVyYS9lbmhh bmNlZC1ydG1wL2Jsb2IvbWFpbi9lbmhhbmNlZC1ydG1wLXYxLnBkZgotKyAgICAgICAgICogKi8K LSsgICAgICAgIGZsdi0+ZXhoZWFkZXIgPSAoZmxhZ3MgPj4gNykgJiAxOwotICAgICAgICAgc2l6 ZS0tOwotICAgICAgICAgaWYgKChmbGFncyAmIEZMVl9WSURFT19GUkFNRVRZUEVfTUFTSykgPT0g RkxWX0ZSQU1FX1ZJREVPX0lORk9fQ01EKQotICAgICAgICAgICAgIGdvdG8gc2tpcDsKLUBAIC0x MTI5LDcgKzExNjQsNyBAQCBza2lwOgotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg IH0gZWxzZSBpZiAoc3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9UWVBFX1ZJREVPKSB7Ci0gICAg ICAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklE RU8gJiYKLS0gICAgICAgICAgICAgICAgKHMtPnZpZGVvX2NvZGVjX2lkIHx8IGZsdl9zYW1lX3Zp ZGVvX2NvZGVjKHN0LT5jb2RlY3BhciwgZmxhZ3MpKSkKLSsgICAgICAgICAgICAgICAgKHMtPnZp ZGVvX2NvZGVjX2lkIHx8IGZsdl9zYW1lX3ZpZGVvX2NvZGVjKHMsIHN0LT5jb2RlY3BhciwgZmxh Z3MpKSkKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9IGVsc2UgaWYgKHN0cmVh bV90eXBlID09IEZMVl9TVFJFQU1fVFlQRV9TVUJUSVRMRSkgewotICAgICAgICAgICAgIGlmIChz dC0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1NVQlRJVExFKQotQEAgLTEy MzAsNyArMTI2NSw3IEBAIHJldHJ5X2R1cmF0aW9uOgotICAgICAgICAgICAgIGF2Y29kZWNfcGFy YW1ldGVyc19mcmVlKCZwYXIpOwotICAgICAgICAgfQotICAgICB9IGVsc2UgaWYgKHN0cmVhbV90 eXBlID09IEZMVl9TVFJFQU1fVFlQRV9WSURFTykgewotLSAgICAgICAgaW50IHJldCA9IGZsdl9z ZXRfdmlkZW9fY29kZWMocywgc3QsIGZsYWdzICYgRkxWX1ZJREVPX0NPREVDSURfTUFTSywgMSk7 Ci0rICAgICAgICBpbnQgcmV0ID0gZmx2X3NldF92aWRlb19jb2RlYyhzLCBzdCwgZmxhZ3MsIDEp OwotICAgICAgICAgaWYgKHJldCA8IDApCi0gICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAg ICAgIHNpemUgLT0gcmV0OwotQEAgLTEyNDIsMTYgKzEyNzcsMjMgQEAgcmV0cnlfZHVyYXRpb246 Ci0gCi0gICAgIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQyB8 fAotICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8 Ci0tICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0KSB7 Ci0tICAgICAgICBpbnQgdHlwZSA9IGF2aW9fcjgocy0+cGIpOwotLSAgICAgICAgc2l6ZS0tOwot KyAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fAot KyAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7Ci0r ICAgICAgICBpbnQgdHlwZSA9IDA7Ci0rICAgICAgICBpZiAoZmx2LT5leGhlYWRlciAmJiBzdHJl YW1fdHlwZSA9PSBGTFZfU1RSRUFNX1RZUEVfVklERU8pIHsKLSsgICAgICAgICAgICB0eXBlID0g ZmxhZ3MgJiAweDBGOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICB0eXBlID0gYXZp b19yOChzLT5wYik7Ci0rICAgICAgICAgICAgc2l6ZS0tOwotKyAgICAgICAgfQotIAotICAgICAg ICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFU QTsKLSAgICAgICAgICAgICBnb3RvIGxlYXZlOwotICAgICAgICAgfQotIAotLSAgICAgICAgaWYg KHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBzdC0+Y29kZWNw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0KSB7Ci0rICAgICAgICBpZiAoc3QtPmNv ZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHN0LT5jb2RlY3Bhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgfHwKLSsgICAgICAgICAgICAoc3QtPmNvZGVjcGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDICYmIHR5cGUgPT0gUGFja2V0VHlwZUNvZGVk RnJhbWVzKSkgewotICAgICAgICAgICAgIC8vIHNpZ24gZXh0ZW5zaW9uCi0gICAgICAgICAgICAg aW50MzJfdCBjdHMgPSAoYXZpb19yYjI0KHMtPnBiKSArIDB4ZmY4MDAwMDApIF4gMHhmZjgwMDAw MDsKLSAgICAgICAgICAgICBwdHMgPSBhdl9zYXRfYWRkNjQoZHRzLCBjdHMpOwotQEAgLTEyNjcs NyArMTMwOSw3IEBAIHJldHJ5X2R1cmF0aW9uOgotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0K LSAgICAgICAgIGlmICh0eXBlID09IDAgJiYgKCFzdC0+Y29kZWNwYXItPmV4dHJhZGF0YSB8fCBz dC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQyB8fAotLSAgICAgICAgICAg IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCkpIHsKLSsgICAgICAg ICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgc3QtPmNv ZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSkgewotICAgICAgICAgICAgIEFW RGljdGlvbmFyeUVudHJ5ICp0OwotIAotICAgICAgICAgICAgIGlmIChzdC0+Y29kZWNwYXItPmV4 dHJhZGF0YSkgewotCi1Gcm9tIHBhdGNod29yayBNb24gTWF5IDE1IDA4OjMxOjU4IDIwMjMKLUNv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCi1NSU1FLVZlcnNpb246IDEu MAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAotWC1QYXRjaHdvcmstU3VibWl0dGVy OiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+Ci1YLVBhdGNod29yay1JZDogNDE2MTcK LURlbGl2ZXJlZC1UbzogZmZtcGVncGF0Y2h3b3JrMkBnbWFpbC5jb20KLVJlY2VpdmVkOiBieSAy MDAyOmEwNTo2YTIwOmJhOTE6YjA6MTA1OmZlYjo3MWYyIHdpdGggU01UUCBpZAotIGZiMTdjc3Ax NDQ0MjA5cHpiOwotICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjMzOjMxIC0wNzAwIChQRFQp Ci1YLUdvb2dsZS1TbXRwLVNvdXJjZTogCi0gQUNISFVaNU4vTVdsZDlmWHpva2tSVlMxZTEzQVlh a2tSeUgvUnZ5QmlKN3hBNTEyRVdkV2dyR0U0ZmVydWdjVFJvSE5haHZqYXlDOQotWC1SZWNlaXZl ZDogYnkgMjAwMjphMTc6OTA3Ojk3MjQ6YjA6OTZhOjEyNjA6ZGJmNSB3aXRoIFNNVFAgaWQKLSBq ZzM2LTIwMDIwYTE3MDkwNzk3MjQwMGIwMDk2YTEyNjBkYmY1bXIxODA4MjU1NGVqYy40NS4xNjg0 MTM5NjExNDQ3OwotICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjMzOjMxIC0wNzAwIChQRFQp Ci1BUkMtU2VhbDogaT0xOyBhPXJzYS1zaGEyNTY7IHQ9MTY4NDEzOTYxMTsgY3Y9bm9uZTsKLSAg ICAgICAgZD1nb29nbGUuY29tOyBzPWFyYy0yMDE2MDgxNjsKLSAgICAgICAgYj1vcDZYbDNZaW5P U2Q4ZC9ZYTRZcFFqSFNiSngwdDdmSGFDSHZ2cXZrSmdUYktmam1USmpERnNNV2tlVC9jZUExbEEK LSAgICAgICAgIHhWOVkxSkdyQWxabXVkcGdhSnRYSHVrTEplc3NuQnJxYUJ5NWdtMGxYNmJKMFg0 QUtKdC9GN0dCM0ZSM09QSVNxNzl3Ci0gICAgICAgICA3ZGplSFV4MlZBeGZXbjFhd0NjRnJjeXlN UHJHQjJHUE1kb1h4Y1VWbXlTTk5LMG9odXJvUTJKaFZSYWp3ajBzSUJGZwotICAgICAgICAgZjBw dTd2WFg5Y3Q0OTl0Rmw1ckhFZC8vMlhsM3JZNmtOSGZQbE1PY0pFY2xUKzM1VFVhVFdFODgrckpP RGFpTUFyY1oKLSAgICAgICAgIFJhRks4eHFmQU9KancwWDl0Nllpd0JrMUtsL3NGS0VqNzFGeHU1 a2hnN0l2aEY3a3pSRFNaWExDa0tXOVV2UFloR09sCi0gICAgICAgICAyNUJ3PT0KLUFSQy1NZXNz YWdlLVNpZ25hdHVyZTogaT0xOyBhPXJzYS1zaGEyNTY7IGM9cmVsYXhlZC9yZWxheGVkOyBkPWdv b2dsZS5jb207Ci0gcz1hcmMtMjAxNjA4MTY7Ci0gICAgICAgIGg9c2VuZGVyOmVycm9ycy10bzpj b250ZW50LXRyYW5zZmVyLWVuY29kaW5nOmNjOnJlcGx5LXRvCi0gICAgICAgICA6bGlzdC1zdWJz Y3JpYmU6bGlzdC1oZWxwOmxpc3QtcG9zdDpsaXN0LWFyY2hpdmU6bGlzdC11bnN1YnNjcmliZQot ICAgICAgICAgOmxpc3QtaWQ6cHJlY2VkZW5jZTpzdWJqZWN0OmZlZWRiYWNrLWlkOm1pbWUtdmVy c2lvbjpyZWZlcmVuY2VzCi0gICAgICAgICA6aW4tcmVwbHktdG86bWVzc2FnZS1pZDpkYXRlOnRv OmZyb206ZGVsaXZlcmVkLXRvOwotICAgICAgICBiaD0wTzBrVUdENXI4bGdYRWlDMlJVZmlaMWNj VlJQZDAzbFdkczBkcWRWRXEwPTsKLSAgICAgICAgYj1PQXZaQVRlb05xL0JJM3BKZDIxWHoybkto K1pJOFprb2ZlNE9iNlVTdTFaRU95WnpLMnh4Z3R4TDZTakpBeGVjRzYKLSAgICAgICAgIE5mRUNn OGUxM0RMYm5WQUI1T25NSzhUWS9IVi80Ti9pcVBrc242UGJKU2tDeWFmUnFnNDc3K1NSczd0T2w4 OWMzaXNyCi0gICAgICAgICBDcDhvK2o3dCtnVzJma1Y5WTZMOE1aYTlldEpwdXNhMExZWFZCTFBE cyt0SE5nWE5lYzlVVEExWW5vU3lNcUVycmg1OAotICAgICAgICAgY2hNaDZCNlArNWFSY0tyQmZL WlkxRjhXQXpNanBoZFE3OGMzWVoraWtnR2Zrb1BnUktURVVxK3hRQU1tN1VYaXJNY24KLSAgICAg ICAgIHF0bmRlRGlReXBOMWVnN0xpRWJBc0xoajdLMmppYklsRG13VWsrNkpERTFBU3owNUZWaUFi azNuRmZXeWROUDhpVWxoCi0gICAgICAgICB6K0NRPT0KLUFSQy1BdXRoZW50aWNhdGlvbi1SZXN1 bHRzOiBpPTE7IG14Lmdvb2dsZS5jb207Ci0gICAgICAgc3BmPXBhc3MgKGdvb2dsZS5jb206IGRv bWFpbiBvZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCi0gZGVzaWduYXRlcyA3OS4x MjQuMTcuMTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpCi0gc210cC5tYWlsZnJvbT1mZm1wZWctZGV2 ZWwtYm91bmNlc0BmZm1wZWcub3JnCi1SZXR1cm4tUGF0aDogPGZmbXBlZy1kZXZlbC1ib3VuY2Vz QGZmbXBlZy5vcmc+Ci1SZWNlaXZlZDogZnJvbSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChmZmJv eDAtYmcuZmZtcGVnLm9yZy4gWzc5LjEyNC4xNy4xMDBdKQotICAgICAgICBieSBteC5nb29nbGUu Y29tIHdpdGggRVNNVFAgaWQKLSBydjIyLTIwMDIwYTE3MDkwNzEwZDYwMGIwMDk2NWU4YzY3ZDdk c2kxMTM5OTE5MmVqYi4yODUuMjAyMy4wNS4xNS4wMS4zMy4zMTsKLSAgICAgICAgTW9uLCAxNSBN YXkgMjAyMyAwMTozMzozMSAtMDcwMCAoUERUKQotUmVjZWl2ZWQtU1BGOiBwYXNzIChnb29nbGUu Y29tOiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotIGRlc2lnbmF0 ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKSBjbGllbnQtaXA9NzkuMTI0LjE3 LjEwMDsKLUF1dGhlbnRpY2F0aW9uLVJlc3VsdHM6IG14Lmdvb2dsZS5jb207Ci0gICAgICAgc3Bm PXBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcu b3JnCi0gZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpCi0gc210 cC5tYWlsZnJvbT1mZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCi1SZWNlaXZlZDogZnJv bSBbMTI3LjAuMS4xXSAobG9jYWxob3N0IFsxMjcuMC4wLjFdKQotCWJ5IGZmYm94MC1iZy5tcGxh eWVyaHEuaHUgKFBvc3RmaXgpIHdpdGggRVNNVFAgaWQgQ0FGMzY2OEMwOEI7Ci0JTW9uLCAxNSBN YXkgMjAyMyAxMTozMzoyMiArMDMwMCAoRUVTVCkKLVgtT3JpZ2luYWwtVG86IGZmbXBlZy1kZXZl bEBmZm1wZWcub3JnCi1EZWxpdmVyZWQtVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCi1SZWNl aXZlZDogZnJvbSBiZzQuZXhtYWlsLnFxLmNvbSAoYmc0LmV4bWFpbC5xcS5jb20gWzQzLjE1NS42 Ny4xNThdKQotIGJ5IGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKFBvc3RmaXgpIHdpdGggRVNNVFBT IGlkIDU2MTMwNjhDMDhCCi0gZm9yIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz47IE1vbiwgMTUg TWF5IDIwMjMgMTE6MzM6MTYgKzAzMDAgKEVFU1QpCi1YLVFRLW1pZDogYml6ZXNtdHA2MnQxNjg0 MTM5NTkxdDV2ZjVpc3MKLVJlY2VpdmVkOiBmcm9tIGxvY2FsaG9zdCAoIFsxMDMuMTAyLjIwMy4y MDRdKSBieSBiaXplc210cC5xcS5jb20gKEVTTVRQKSB3aXRoCi0gaWQgOyBNb24sIDE1IE1heSAy MDIzIDE2OjMzOjA5ICswODAwIChDU1QpCi1YLVFRLVNTRjogMDExMDAwMDAwMDAwMDBaMFowMDAw MDBBMDAwMDAwMAotWC1RUS1GRUFUOiAwVllXTExDZjRyZDhzZjRCMHhkSTQ1eU85cGE3Y0E1TGtV TjVyOGpyeWwvOUhVVGNFT2NEbnE2c0VGTHBVCi0gcFovSm53U0lxZnFGdFJCOEJxOCswMzJXY3da SUJkR1dtT1VwSVpMY0RsQlBIVnRTOVl3U081NnA3dGUwOTMybWhRSFFWV3IKLSAyTUo2MEVoUGN4 ZmhYRzNNODlRU3lzWURnTGpVSVJiYi9jUC9CcjA1bUNKMDVjK1E0TnpXd2xSd3dlT0cwbFVKNGFN TmxpOQotIGkzUWY4bFNBSzhoSzNKV1laUDBGZzY2SmFGa1p2dzZZejZONEVTVmY0VnA4NXJ3V0tQ ZnBCejUzOElpQ3plL2VQYlZnWldCCi0genZiVTFtVkFrYXBUMDVjVEx5cUFsdjd0ZWZmbGdvWWNy Vzc5WitPcHkyd1NZRFpMcENrUkllK3c0eVdHN2VDZzcxZFVnbmMKLSA3OUQrTVZ5SFNKanVYUy9z UUxhZUZhblMxVjU1V0s0aXp5OUovYkZIZFNwcm15U3dtcGs4aGY1emhJWk9RPT0KLVgtUVEtR29v ZEJnOiAwCi1YLUJJWk1BSUwtSUQ6IDUzNzc5OTYxNjUzNDA1MjU2MTkKLUZyb206IFN0ZXZlbiBM aXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotRGF0 ZTogTW9uLCAxNSBNYXkgMjAyMyAxNjozMTo1OCArMDgwMAotTWVzc2FnZS1JZDogPDIwMjMwNTE1 MDgzMjAxLjQ4MjAxLTQtbHFAY2hpbmFmZm1wZWcub3JnPgotWC1NYWlsZXI6IGdpdC1zZW5kLWVt YWlsIDIuNDAuMAotSW4tUmVwbHktVG86IDwyMDIzMDUxNTA4MzIwMS40ODIwMS0xLWxxQGNoaW5h ZmZtcGVnLm9yZz4KLVJlZmVyZW5jZXM6IAotIDxDQUVnLUplLXZZRDk3S25iYXFUa0s1PVVKOVQz aHRtdEgzUXlrY3dvMytyTkN4PXcralFAbWFpbC5nbWFpbC5jb20+Ci0gPDIwMjMwNTE1MDgzMjAx LjQ4MjAxLTEtbHFAY2hpbmFmZm1wZWcub3JnPgotTUlNRS1WZXJzaW9uOiAxLjAKLVgtUVEtU0VO RFNJWkU6IDUyMAotRmVlZGJhY2stSUQ6IGJpemVzbXRwOmNoaW5hZmZtcGVnLm9yZzpxeWJnbG9n aWNzdnJzejpxeWJnbG9naWNzdnJzejNhLTMKLVN1YmplY3Q6IFtGRm1wZWctZGV2ZWxdIFtQQVRD SCB2MTAgMy82XSBhdmZvcm1hdC9mbHZlbmM6IHN1cHBvcnQgbXV4IGF2MSBpbgotIGVuaGFuY2Vk IGZsdgotWC1CZWVuVGhlcmU6IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCi1YLU1haWxtYW4tVmVy c2lvbjogMi4xLjI5Ci1QcmVjZWRlbmNlOiBsaXN0Ci1MaXN0LUlkOiBGRm1wZWcgZGV2ZWxvcG1l bnQgZGlzY3Vzc2lvbnMgYW5kIHBhdGNoZXMgPGZmbXBlZy1kZXZlbC5mZm1wZWcub3JnPgotTGlz dC1VbnN1YnNjcmliZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL29wdGlvbnMvZmZtcGVn LWRldmVsPiwKLSA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVj dD11bnN1YnNjcmliZT4KLUxpc3QtQXJjaGl2ZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9waXBlcm1h aWwvZmZtcGVnLWRldmVsPgotTGlzdC1Qb3N0OiA8bWFpbHRvOmZmbXBlZy1kZXZlbEBmZm1wZWcu b3JnPgotTGlzdC1IZWxwOiA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/ c3ViamVjdD1oZWxwPgotTGlzdC1TdWJzY3JpYmU6IDxodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1h bi9saXN0aW5mby9mZm1wZWctZGV2ZWw+LAotIDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RA ZmZtcGVnLm9yZz9zdWJqZWN0PXN1YnNjcmliZT4KLVJlcGx5LVRvOiBGRm1wZWcgZGV2ZWxvcG1l bnQgZGlzY3Vzc2lvbnMgYW5kIHBhdGNoZXMgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgotQ2M6 IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KLUVycm9ycy1UbzogZmZtcGVnLWRldmVs LWJvdW5jZXNAZmZtcGVnLm9yZwotU2VuZGVyOiAiZmZtcGVnLWRldmVsIiA8ZmZtcGVnLWRldmVs LWJvdW5jZXNAZmZtcGVnLm9yZz4KLVgtVFVJRDogZFJmUGRzSXZleHpoCi0KLVNpZ25lZC1vZmYt Ynk6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KLS0tLQotIGxpYmF2Zm9ybWF0L01h a2VmaWxlIHwgIDIgKy0KLSBsaWJhdmZvcm1hdC9mbHZlbmMuYyB8IDIyICsrKysrKysrKysrKysr KysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9NYWtlZmlsZSBiL2xpYmF2Zm9ybWF0L01h a2VmaWxlCi1pbmRleCAxZWYzZDE1NDY3Li5jODY4ZTE2MjZjIDEwMDY0NAotLS0tIGEvbGliYXZm b3JtYXQvTWFrZWZpbGUKLSsrKyBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlCi1AQCAtMjE0LDcgKzIx NCw3IEBAIE9CSlMtJChDT05GSUdfRkxBQ19NVVhFUikgICAgICAgICAgICAgICAgKz0gZmxhY2Vu Yy5vIGZsYWNlbmNfaGVhZGVyLm8gXAotIE9CSlMtJChDT05GSUdfRkxJQ19ERU1VWEVSKSAgICAg ICAgICAgICAgKz0gZmxpYy5vCi0gT0JKUy0kKENPTkZJR19GTFZfREVNVVhFUikgICAgICAgICAg ICAgICArPSBmbHZkZWMubwotIE9CSlMtJChDT05GSUdfTElWRV9GTFZfREVNVVhFUikgICAgICAg ICAgKz0gZmx2ZGVjLm8KLS1PQkpTLSQoQ09ORklHX0ZMVl9NVVhFUikgICAgICAgICAgICAgICAg ICs9IGZsdmVuYy5vIGF2Yy5vIGhldmMubwotK09CSlMtJChDT05GSUdfRkxWX01VWEVSKSAgICAg ICAgICAgICAgICAgKz0gZmx2ZW5jLm8gYXZjLm8gaGV2Yy5vIGF2MS5vCi0gT0JKUy0kKENPTkZJ R19GT1VSWE1fREVNVVhFUikgICAgICAgICAgICArPSA0eG0ubwotIE9CSlMtJChDT05GSUdfRlJB TUVDUkNfTVVYRVIpICAgICAgICAgICAgKz0gZnJhbWVjcmNlbmMubyBmcmFtZWhhc2gubwotIE9C SlMtJChDT05GSUdfRlJBTUVIQVNIX01VWEVSKSAgICAgICAgICAgKz0gaGFzaGVuYy5vIGZyYW1l aGFzaC5vCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvZmx2ZW5jLmMgYi9saWJhdmZvcm1hdC9m bHZlbmMuYwotaW5kZXggMzVlMTk4ZmExNS4uYzE3ODRiMzMyZCAxMDA2NDQKLS0tLSBhL2xpYmF2 Zm9ybWF0L2ZsdmVuYy5jCi0rKysgYi9saWJhdmZvcm1hdC9mbHZlbmMuYwotQEAgLTI4LDYgKzI4 LDcgQEAKLSAjaW5jbHVkZSAibGliYXZjb2RlYy9tcGVnNGF1ZGlvLmgiCi0gI2luY2x1ZGUgImF2 aW8uaCIKLSAjaW5jbHVkZSAiYXZjLmgiCi0rI2luY2x1ZGUgImF2MS5oIgotICNpbmNsdWRlICJo ZXZjLmgiCi0gI2luY2x1ZGUgImF2Zm9ybWF0LmgiCi0gI2luY2x1ZGUgImZsdi5oIgotQEAgLTQ4 LDYgKzQ5LDcgQEAgc3RhdGljIGNvbnN0IEFWQ29kZWNUYWcgZmx2X3ZpZGVvX2NvZGVjX2lkc1td ID0gewotICAgICB7IEFWX0NPREVDX0lEX1ZQNkEsICAgICBGTFZfQ09ERUNJRF9WUDZBIH0sCi0g ICAgIHsgQVZfQ09ERUNfSURfSDI2NCwgICAgIEZMVl9DT0RFQ0lEX0gyNjQgfSwKLSAgICAgeyBB Vl9DT0RFQ19JRF9IRVZDLCAgICAgTUtCRVRBRygnaCcsICd2JywgJ2MnLCAnMScpIH0sCi0rICAg IHsgQVZfQ09ERUNfSURfQVYxLCAgICAgIE1LQkVUQUcoJ2EnLCAndicsICcwJywgJzEnKSB9LAot ICAgICB7IEFWX0NPREVDX0lEX05PTkUsICAgICAwIH0KLSB9OwotIAotQEAgLTQ5MSw3ICs0OTMs OCBAQCBzdGF0aWMgdm9pZCBmbHZfd3JpdGVfY29kZWNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCog cywgQVZDb2RlY1BhcmFtZXRlcnMqIHBhciwgaQotICAgICBGTFZDb250ZXh0ICpmbHYgPSBzLT5w cml2X2RhdGE7Ci0gCi0gICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQyB8 fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQKLS0gICAgICAgICAgICB8fCBwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfSEVWQykgewotKyAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfTVBFRzQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDCi0rICAgICAgICAg ICAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKLSAgICAgICAgIGludDY0 X3QgcG9zOwotICAgICAgICAgYXZpb193OChwYiwKLSAgICAgICAgICAgICAgICAgcGFyLT5jb2Rl Y190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTyA/Ci1AQCAtNTM3LDYgKzU0MCw5IEBAIHN0YXRp YyB2b2lkIGZsdl93cml0ZV9jb2RlY19oZWFkZXIoQVZGb3JtYXRDb250ZXh0KiBzLCBBVkNvZGVj UGFyYW1ldGVycyogcGFyLCBpCi0gICAgICAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfSEVWQykgewotICAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBGTFZfSVNfRVhf SEVBREVSIHwgUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQpOyAvLyBFeFZpZGVvVGFnSGVhZGVyIG1v ZGUgd2l0aCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydAotICAgICAgICAgICAgICAgICBhdmlvX3dy aXRlKHBiLCAiaHZjMSIsIDQpOwotKyAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKLSsgICAgICAgICAgICAgICAgYXZpb193OChwYiwgRkxW X0lTX0VYX0hFQURFUiB8IFBhY2tldFR5cGVTZXF1ZW5jZVN0YXJ0KTsKLSsgICAgICAgICAgICAg ICAgYXZpb193cml0ZShwYiwgImF2MDEiLCA0KTsKLSAgICAgICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBwYXItPmNvZGVjX3RhZyB8IEZMVl9GUkFNRV9LRVkp OyAvLyBmbGFncwotICAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCAwKTsgLy8gQVZDIHNlcXVl bmNlIGhlYWRlcgotQEAgLTU0NSw2ICs1NTEsOCBAQCBzdGF0aWMgdm9pZCBmbHZfd3JpdGVfY29k ZWNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCogcywgQVZDb2RlY1BhcmFtZXRlcnMqIHBhciwgaQot IAotICAgICAgICAgICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpCi0g ICAgICAgICAgICAgICAgIGZmX2lzb21fd3JpdGVfaHZjYyhwYiwgcGFyLT5leHRyYWRhdGEsIHBh ci0+ZXh0cmFkYXRhX3NpemUsIDApOwotKyAgICAgICAgICAgIGVsc2UgaWYgKHBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfQVYxKQotKyAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX2F2 MWMocGIsIHBhci0+ZXh0cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplLCAxKTsKLSAgICAgICAg ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgIGZmX2lzb21fd3JpdGVfYXZjYyhwYiwgcGFyLT5l eHRyYWRhdGEsIHBhci0+ZXh0cmFkYXRhX3NpemUpOwotICAgICAgICAgfQotQEAgLTg0MywxMyAr ODUxLDE1IEBAIHN0YXRpYyBpbnQgZmx2X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMs IEFWUGFja2V0ICpwa3QpCi0gICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQ NkYgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDZBIHx8Ci0gICAgICAgICBwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNiAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9BQUMpCi0gICAgICAgICBmbGFnc19zaXplID0gMjsKLS0gICAgZWxzZSBpZiAocGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfTVBFRzQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKQotKyAgICBlbHNl IGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgcGFyLT5jb2RlY19pZCA9 PSBBVl9DT0RFQ19JRF9NUEVHNCB8fAotKyAgICAgICAgICAgICBwYXItPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX0hFVkMgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpCi0gICAg ICAgICBmbGFnc19zaXplID0gNTsKLSAgICAgZWxzZQotICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDE7 Ci0gCi0gICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQyB8fCBwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQKLS0gICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVW QykgewotKyAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQg fHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDCi0rICAgICAgICAgICAgfHwgcGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKLSAgICAgICAgIHNpemVfdCBzaWRlX3Np emU7Ci0gICAgICAgICB1aW50OF90ICpzaWRlID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEocGt0 LCBBVl9QS1RfREFUQV9ORVdfRVhUUkFEQVRBLCAmc2lkZV9zaXplKTsKLSAgICAgICAgIGlmIChz aWRlICYmIHNpZGVfc2l6ZSA+IDAgJiYgKHNpZGVfc2l6ZSAhPSBwYXItPmV4dHJhZGF0YV9zaXpl IHx8IG1lbWNtcChzaWRlLCBwYXItPmV4dHJhZGF0YSwgc2lkZV9zaXplKSkpIHsKLUBAIC04Njks NyArODc5LDggQEAgc3RhdGljIGludCBmbHZfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAq cywgQVZQYWNrZXQgKnBrdCkKLSAgICAgICAgICAgICAgICAiUGFja2V0cyBhcmUgbm90IGluIHRo ZSBwcm9wZXIgb3JkZXIgd2l0aCByZXNwZWN0IHRvIERUU1xuIik7Ci0gICAgICAgICByZXR1cm4g QVZFUlJPUihFSU5WQUwpOwotICAgICB9Ci0tICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX0gyNjQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fCBwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKLSsgICAgaWYgKHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfSDI2NCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0 IHx8Ci0rICAgICAgICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMgfHwgIHBhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7Ci0gICAgICAgICBpZiAocGt0LT5wdHMgPT0g QVZfTk9QVFNfVkFMVUUpIHsKLSAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAi UGFja2V0IGlzIG1pc3NpbmcgUFRTXG4iKTsKLSAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihF SU5WQUwpOwotQEAgLTk4Miw2ICs5OTMsOSBAQCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQo QVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQotICAgICAgICAgaWYgKHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykgewotICAgICAgICAgICAgIGF2aW9fdzgocGIsIEZM Vl9JU19FWF9IRUFERVIgfCBQYWNrZXRUeXBlQ29kZWRGcmFtZXNYKTsgLy8gRXhWaWRlb1RhZ0hl YWRlciBtb2RlIHdpdGggUGFja2V0VHlwZUNvZGVkRnJhbWVzWAotICAgICAgICAgICAgIGF2aW9f d3JpdGUocGIsICJodmMxIiwgNCk7Ci0rICAgICAgICB9IGVsc2UgaWYgKHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfQVYxKSB7Ci0rICAgICAgICAgICAgYXZpb193OChwYiwgRkxWX0lTX0VY X0hFQURFUiB8IFBhY2tldFR5cGVDb2RlZEZyYW1lcyk7Ci0rICAgICAgICAgICAgYXZpb193cml0 ZShwYiwgImF2MDEiLCA0KTsKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgYXZpb193 OChwYiwgZmxhZ3MpOwotICAgICAgICAgfQotCi1Gcm9tIHBhdGNod29yayBNb24gTWF5IDE1IDA4 OjMxOjU5IDIwMjMKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCi1N SU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAotWC1QYXRj aHdvcmstU3VibWl0dGVyOiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+Ci1YLVBhdGNo d29yay1JZDogNDE2MTgKLURlbGl2ZXJlZC1UbzogZmZtcGVncGF0Y2h3b3JrMkBnbWFpbC5jb20K LVJlY2VpdmVkOiBieSAyMDAyOmEwNTo2YTIwOmJhOTE6YjA6MTA1OmZlYjo3MWYyIHdpdGggU01U UCBpZAotIGZiMTdjc3AxNDQ0MjkwcHpiOwotICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjMz OjQxIC0wNzAwIChQRFQpCi1YLUdvb2dsZS1TbXRwLVNvdXJjZTogCi0gQUNISFVaN2s1SFNZVnBL bHV0RENIM0JWTjAzb1ExZVE5TldqS3dCZWJMR3Y1ZkswZDJxVkdHZ0N0Qm8zWGRFR2xEVERVdXZs RHpSWAotWC1SZWNlaXZlZDogYnkgMjAwMjphMTc6OTA3OjkzNDc6YjA6OTRmOjMyMmQ6OTA5YyB3 aXRoIFNNVFAgaWQKLSBidjctMjAwMjBhMTcwOTA3OTM0NzAwYjAwOTRmMzIyZDkwOWNtcjI2OTk0 MTE4ZWpjLjM0LjE2ODQxMzk2MjA5ODY7Ci0gICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6MzM6 NDAgLTA3MDAgKFBEVCkKLUFSQy1TZWFsOiBpPTE7IGE9cnNhLXNoYTI1NjsgdD0xNjg0MTM5NjIw OyBjdj1ub25lOwotICAgICAgICBkPWdvb2dsZS5jb207IHM9YXJjLTIwMTYwODE2OwotICAgICAg ICBiPUJCU2dlZ1hSMXUwSzc2N1I5TUF4UWRkdDQ5aFpOaERTK1lnQ0hHWW8wQjA3Q2x0ZUswMTg3 MzlUSzl0dXBWaDdwSwotICAgICAgICAgd3V2ay9nemtFcElacGYySTNMUW5wYXh2UXgwWm5sbFNL eXoreCs1NjB3RVZLa1F3NXRsd3BncjRxQTNtMEFwQkJtUVIKLSAgICAgICAgIDJaVXU2V1JwQm5W ZVhKYlQ1bit5bUlUckxkMU5WWExOUHFvejdrTDBpRE1MMGIyaUM5UHFDb0dSVEhGNnpKWkZ0Q0gy Ci0gICAgICAgICBaWVVxNE9kY2JmbHZxcUxCdkt2U2dFd3VWb2YwYnFEd0Q4a2ZxOW5vS1RmN3dy eDViY2RJYnE2WE1ZRzFuNkFuUHE3UgotICAgICAgICAgUitla21ob3NGb1o3SWdvaEFrajlrOGo2 bDRpcENjNnlWTjJNOFROMVRmVHdSQzAxdnp6K1NSWU9YWldMTmIwZXFaemgKLSAgICAgICAgIFpw MkE9PQotQVJDLU1lc3NhZ2UtU2lnbmF0dXJlOiBpPTE7IGE9cnNhLXNoYTI1NjsgYz1yZWxheGVk L3JlbGF4ZWQ7IGQ9Z29vZ2xlLmNvbTsKLSBzPWFyYy0yMDE2MDgxNjsKLSAgICAgICAgaD1zZW5k ZXI6ZXJyb3JzLXRvOmNvbnRlbnQtdHJhbnNmZXItZW5jb2Rpbmc6Y2M6cmVwbHktdG8KLSAgICAg ICAgIDpsaXN0LXN1YnNjcmliZTpsaXN0LWhlbHA6bGlzdC1wb3N0Omxpc3QtYXJjaGl2ZTpsaXN0 LXVuc3Vic2NyaWJlCi0gICAgICAgICA6bGlzdC1pZDpwcmVjZWRlbmNlOnN1YmplY3Q6ZmVlZGJh Y2staWQ6bWltZS12ZXJzaW9uOnJlZmVyZW5jZXMKLSAgICAgICAgIDppbi1yZXBseS10bzptZXNz YWdlLWlkOmRhdGU6dG86ZnJvbTpkZWxpdmVyZWQtdG87Ci0gICAgICAgIGJoPUo1aEl0OC82bDc5 ODNIV1FPQUdBMXF5Nm1qV21NV3U2REoyUlpSZkpldVE9OwotICAgICAgICBiPXJYODhrV0hKdFVp cW5OdXRFUUNPd1V2Zmw1bFYvRlZIdmlhREhJc2lhdHZCOTJYRzcxcGdlRlZYb3BUakorc3QzRgot ICAgICAgICAgbHUrL3JLbllLQVZYRnFGNFdITVA2YnUwVlQ1YkZFMkE5ODA2Z1RENVJmMUQyeUdW aktXUkg4ZmhZNkpsMktoRWhRQSsKLSAgICAgICAgIEVmYzZmTVoycVpSbWR4NVMySU5FMmsrc1kz emdXWnNGa3YyTkRvd0ZMbmpucG1UR25lVlc4MnliQ2JMMDZEUkg3SnRzCi0gICAgICAgICB3eFdE ZkZmVHFucDJWTndEMEM0NjJmNW9nTEI4Y0g3Zjl1b0Z2aVRvdkVZY1hjOGlMcEhQMzhjSmEzaGRB dUpnOTcyUwotICAgICAgICAgY2dqSlN1WlVhUTM4YnFtdzd0aDJNRGthRlN6cnljazB3YWZuZVJk SlV4eUtHN2x0YndrNGhnQXo4OXl6VUI3blplVTYKLSAgICAgICAgIHl1Y0E9PQotQVJDLUF1dGhl bnRpY2F0aW9uLVJlc3VsdHM6IGk9MTsgbXguZ29vZ2xlLmNvbTsKLSAgICAgICBzcGY9cGFzcyAo Z29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLSBk ZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRlcikKLSBzbXRwLm1haWxm cm9tPWZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLVJldHVybi1QYXRoOiA8ZmZtcGVn LWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4KLVJlY2VpdmVkOiBmcm9tIGZmYm94MC1iZy5tcGxh eWVyaHEuaHUgKGZmYm94MC1iZy5mZm1wZWcub3JnLiBbNzkuMTI0LjE3LjEwMF0pCi0gICAgICAg IGJ5IG14Lmdvb2dsZS5jb20gd2l0aCBFU01UUCBpZAotIGd2NDEtMjAwMjBhMTcwOTA3MmJlOTAw YjAwOTY1ZjE3MTU0M2VzaTExNTc1MTQ4ZWpjLjE0OC4yMDIzLjA1LjE1LjAxLjMzLjQwOwotICAg ICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjMzOjQwIC0wNzAwIChQRFQpCi1SZWNlaXZlZC1TUEY6 IHBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcu b3JnCi0gZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpIGNsaWVu dC1pcD03OS4xMjQuMTcuMTAwOwotQXV0aGVudGljYXRpb24tUmVzdWx0czogbXguZ29vZ2xlLmNv bTsKLSAgICAgICBzcGY9cGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1i b3VuY2VzQGZmbXBlZy5vcmcKLSBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVk IHNlbmRlcikKLSBzbXRwLm1haWxmcm9tPWZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcK LVJlY2VpdmVkOiBmcm9tIFsxMjcuMC4xLjFdIChsb2NhbGhvc3QgWzEyNy4wLjAuMV0pCi0JYnkg ZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoUG9zdGZpeCkgd2l0aCBFU01UUCBpZCBENjVBRDY4QzBB ODsKLQlNb24sIDE1IE1heSAyMDIzIDExOjMzOjI5ICswMzAwIChFRVNUKQotWC1PcmlnaW5hbC1U bzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKLURlbGl2ZXJlZC1UbzogZmZtcGVnLWRldmVsQGZm bXBlZy5vcmcKLVJlY2VpdmVkOiBmcm9tIGJnNC5leG1haWwucXEuY29tIChiZzQuZXhtYWlsLnFx LmNvbSBbNDMuMTU1LjY3LjE1OF0pCi0gYnkgZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoUG9zdGZp eCkgd2l0aCBFU01UUFMgaWQgNUFBNjc2OEMwOUYKLSBmb3IgPGZmbXBlZy1kZXZlbEBmZm1wZWcu b3JnPjsgTW9uLCAxNSBNYXkgMjAyMyAxMTozMzoyMiArMDMwMCAoRUVTVCkKLVgtUVEtbWlkOiBi aXplc210cDc1dDE2ODQxMzk1OTZ0NG9rZjg2bQotUmVjZWl2ZWQ6IGZyb20gbG9jYWxob3N0ICgg WzEwMy4xMDIuMjAzLjIwNF0pIGJ5IGJpemVzbXRwLnFxLmNvbSAoRVNNVFApIHdpdGgKLSBpZCA7 IE1vbiwgMTUgTWF5IDIwMjMgMTY6MzM6MTUgKzA4MDAgKENTVCkKLVgtUVEtU1NGOiAwMTEwMDAw MDAwMDAwMFowWjAwMDAwMEEwMDAwMDAwCi1YLVFRLUZFQVQ6IEt2dndSL2hjUEEzd1k2SDg0dVgx WjRPaFc5STJiUTFRVjM1em5CejQ0aDhHWi9vVXVNYUZwRGNyVDNkU2cKLSBNVWtUVlRNRXloWGhI TngySklNeGZ3NStxLzNUQ1V0dm5LWHN4TFp0UXN5LzBOcS95K3AweFZzSEp6UW1NOEN2YlQ2TDZR MwotIE9teHd2R0FPNmxqdkkvaUErU1hVKzMrSFVOeWV0REU4VVRSVzFaR0N0RzlpSlJiSzl3WFBv aUFNekxlcFQyK0NIR08yYnJxCi0gQ3dINlJBL2U5L0k0eE9ITGxleXd0QzRvRGxQdXlIb3Z4enpl ZHNCVHJYWWljNXRiMCtENjVhYmM2TmpmSHI3enJZRC9EUXUKLSBIWTBOTndlWDlZUC9qRThqSjBU UExoY3g3d2lnaHcrS0RGYllmK1VjVXVhUEhoemZBWmgyZjZhcGxpYnpWdXZWNzhPUHEyUwotIHRo US9YZU1HZi9XOUMvT3k0RXExNDUrRytwVVE3engvT0tZOEpqLzMzZG12d1prVXI4PQotWC1RUS1H b29kQmc6IDAKLVgtQklaTUFJTC1JRDogOTUzMDM4Nzk5NTkzMDEyMDkzMgotRnJvbTogU3RldmVu IExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgotVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCi1E YXRlOiBNb24sIDE1IE1heSAyMDIzIDE2OjMxOjU5ICswODAwCi1NZXNzYWdlLUlkOiA8MjAyMzA1 MTUwODMyMDEuNDgyMDEtNS1scUBjaGluYWZmbXBlZy5vcmc+Ci1YLU1haWxlcjogZ2l0LXNlbmQt ZW1haWwgMi40MC4wCi1Jbi1SZXBseS1UbzogPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTEtbHFAY2hp bmFmZm1wZWcub3JnPgotUmVmZXJlbmNlczogCi0gPENBRWctSmUtdllEOTdLbmJhcVRrSzU9VUo5 VDNodG10SDNReWtjd28zK3JOQ3g9dytqUUBtYWlsLmdtYWlsLmNvbT4KLSA8MjAyMzA1MTUwODMy MDEuNDgyMDEtMS1scUBjaGluYWZmbXBlZy5vcmc+Ci1NSU1FLVZlcnNpb246IDEuMAotWC1RUS1T RU5EU0laRTogNTIwCi1GZWVkYmFjay1JRDogYml6ZXNtdHA6Y2hpbmFmZm1wZWcub3JnOnF5Ymds b2dpY3N2cnN6OnF5Ymdsb2dpY3N2cnN6M2EtMwotU3ViamVjdDogW0ZGbXBlZy1kZXZlbF0gW1BB VENIIHYxMCA0LzZdIGF2Zm9ybWF0L2ZsdmRlYzogc3VwcG9ydCBkZW11eCBhdjEKLSBpbiBlbmhh bmNlZCBmbHYKLVgtQmVlblRoZXJlOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotWC1NYWlsbWFu LVZlcnNpb246IDIuMS4yOQotUHJlY2VkZW5jZTogbGlzdAotTGlzdC1JZDogRkZtcGVnIGRldmVs b3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVzIDxmZm1wZWctZGV2ZWwuZmZtcGVnLm9yZz4K LUxpc3QtVW5zdWJzY3JpYmU6IDxodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9vcHRpb25zL2Zm bXBlZy1kZXZlbD4sCi0gPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1 YmplY3Q9dW5zdWJzY3JpYmU+Ci1MaXN0LUFyY2hpdmU6IDxodHRwczovL2ZmbXBlZy5vcmcvcGlw ZXJtYWlsL2ZmbXBlZy1kZXZlbD4KLUxpc3QtUG9zdDogPG1haWx0bzpmZm1wZWctZGV2ZWxAZmZt cGVnLm9yZz4KLUxpc3QtSGVscDogPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcu b3JnP3N1YmplY3Q9aGVscD4KLUxpc3QtU3Vic2NyaWJlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL21h aWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsPiwKLSA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1 ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD1zdWJzY3JpYmU+Ci1SZXBseS1UbzogRkZtcGVnIGRldmVs b3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVzIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4K LUNjOiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+Ci1FcnJvcnMtVG86IGZmbXBlZy1k ZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLVNlbmRlcjogImZmbXBlZy1kZXZlbCIgPGZmbXBlZy1k ZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+Ci1YLVRVSUQ6IE1LcWpWaW5pd0l5KwotCi1TaWduZWQt b2ZmLWJ5OiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+Ci0tLS0KLSBsaWJhdmZvcm1h dC9mbHZkZWMuYyB8IDEyICsrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvZmx2ZGVj LmMgYi9saWJhdmZvcm1hdC9mbHZkZWMuYwotaW5kZXggYzhlNmNhZGYxYy4uYTAzNjJmZjExYyAx MDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L2ZsdmRlYy5jCi0rKysgYi9saWJhdmZvcm1hdC9mbHZk ZWMuYwotQEAgLTMxOCw2ICszMTgsOCBAQCBzdGF0aWMgaW50IGZsdl9zYW1lX3ZpZGVvX2NvZGVj KEFWRm9ybWF0Q29udGV4dCAqcywgQVZDb2RlY1BhcmFtZXRlcnMgKnZwYXIsIGludAotICAgICAg ICAgc3dpdGNoKGNvZGVjX2lkKSB7Ci0gICAgICAgICAgICAgY2FzZSBNS0JFVEFHKCdoJywgJ3Yn LCAnYycsICcxJyk6Ci0gICAgICAgICAgICAgICAgIHJldHVybiB2cGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9IRVZDOwotKyAgICAgICAgICAgIGNhc2UgTUtCRVRBRygnYScsICd2JywgJzAn LCAnMScpOgotKyAgICAgICAgICAgICAgICByZXR1cm4gdnBhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfQVYxOwotICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgIGJyZWFr OwotICAgICAgICAgfQotQEAgLTM1OSw2ICszNjEsMTAgQEAgc3RhdGljIGludCBmbHZfc2V0X3Zp ZGVvX2NvZGVjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnZzdHJlYW0sCi0gICAgICAg ICAgICAgICAgIHBhci0+Y29kZWNfaWQgPSBBVl9DT0RFQ19JRF9IRVZDOwotICAgICAgICAgICAg ICAgICB2c3RyZWFtaS0+bmVlZF9wYXJzaW5nID0gQVZTVFJFQU1fUEFSU0VfSEVBREVSUzsKLSAg ICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0rICAgICAgICAgICAgY2FzZSBNS0JFVEFHKCdhJywg J3YnLCAnMCcsICcxJyk6Ci0rICAgICAgICAgICAgICAgIHBhci0+Y29kZWNfaWQgPSBBVl9DT0RF Q19JRF9BVjE7Ci0rICAgICAgICAgICAgICAgIHZzdHJlYW1pLT5uZWVkX3BhcnNpbmcgPSBBVlNU UkVBTV9QQVJTRV9IRUFERVJTOwotKyAgICAgICAgICAgICAgICByZXR1cm4gNDsKLSAgICAgICAg ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLUBAIC0x Mjc4LDcgKzEyODQsOCBAQCByZXRyeV9kdXJhdGlvbjoKLSAgICAgaWYgKHN0LT5jb2RlY3Bhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFDIHx8Ci0gICAgICAgICBzdC0+Y29kZWNwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwKLSAgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgfHwKLS0gICAgICAgIHN0LT5jb2RlY3Bhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykgewotKyAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8Ci0rICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVj X2lkID09IEFWX0NPREVDX0lEX0FWMSkgewotICAgICAgICAgaW50IHR5cGUgPSAwOwotICAgICAg ICAgaWYgKGZsdi0+ZXhoZWFkZXIgJiYgc3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9UWVBFX1ZJ REVPKSB7Ci0gICAgICAgICAgICAgdHlwZSA9IGZsYWdzICYgMHgwRjsKLUBAIC0xMzA5LDcgKzEz MTYsOCBAQCByZXRyeV9kdXJhdGlvbjoKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAg ICAgICBpZiAodHlwZSA9PSAwICYmICghc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEgfHwgc3QtPmNv ZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BQUMgfHwKLS0gICAgICAgICAgICBzdC0+ Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgc3QtPmNvZGVjcGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSkgewotKyAgICAgICAgICAgIHN0LT5jb2RlY3Bh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBzdC0+Y29kZWNwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX0hFVkMgfHwKLSsgICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVj X2lkID09IEFWX0NPREVDX0lEX0FWMSkpIHsKLSAgICAgICAgICAgICBBVkRpY3Rpb25hcnlFbnRy eSAqdDsKLSAKLSAgICAgICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEpIHsKLQot RnJvbSBwYXRjaHdvcmsgTW9uIE1heSAxNSAwODozMjowMCAyMDIzCi1Db250ZW50LVR5cGU6IHRl eHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHJh bnNmZXItRW5jb2Rpbmc6IDdiaXQKLVgtUGF0Y2h3b3JrLVN1Ym1pdHRlcjogU3RldmVuIExpdSA8 bHFAY2hpbmFmZm1wZWcub3JnPgotWC1QYXRjaHdvcmstSWQ6IDQxNjE5Ci1EZWxpdmVyZWQtVG86 IGZmbXBlZ3BhdGNod29yazJAZ21haWwuY29tCi1SZWNlaXZlZDogYnkgMjAwMjphMDU6NmEyMDpi YTkxOmIwOjEwNTpmZWI6NzFmMiB3aXRoIFNNVFAgaWQKLSBmYjE3Y3NwMTQ0NDUzMnB6YjsKLSAg ICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozNDoxMCAtMDcwMCAoUERUKQotWC1Hb29nbGUtU210 cC1Tb3VyY2U6IAotIEFDSEhVWjRRbEZxWE1hMFdOSEszWjNITGdQbTJVc2t1UVpYMndtYkZoWW0r WkwwQnNEUlBoTHhKYm9HMFloRFBGaTk5OWFWQ1FaRSsKLVgtUmVjZWl2ZWQ6IGJ5IDIwMDI6YTA1 OjY0MDI6MTRjMzpiMDo1MGQ6ZmNmYjo4NjMzIHdpdGggU01UUCBpZAotIGYzLTIwMDIwYTA1NjQw MjE0YzMwMGIwMDUwZGZjZmI4NjMzbXI5NjEzNzg5ZWR4LjkuMTY4NDEzOTY1MDE5NjsKLSAgICAg ICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozNDoxMCAtMDcwMCAoUERUKQotQVJDLVNlYWw6IGk9MTsg YT1yc2Etc2hhMjU2OyB0PTE2ODQxMzk2NTA7IGN2PW5vbmU7Ci0gICAgICAgIGQ9Z29vZ2xlLmNv bTsgcz1hcmMtMjAxNjA4MTY7Ci0gICAgICAgIGI9c2pmbTR4aFRQcWpHTnlIbHhTMy9rTVBpbHgx M0VCKzdTMFl4ak9JNWxSOU1NZzhTeTNLZ0wxODdDNnR1WnFVd29aCi0gICAgICAgICBkSm83QTNx NDFFSzRXSnlXVFRVeXFVT3I4cThKUGpiQlRDSnBWc0VSdU11TVdwSHJoUXh2d0VEaWJ2ZnVESTBa STJ2SwotICAgICAgICAgeTVwcVJaMjNPTU5aTENDK2ZzYzg1Z1FES1BndmtZWlRZaXNTT3NXVlJp WlFHbDA0VGlwZlpFMVV6YThSN1pFWFJnZEgKLSAgICAgICAgIFpXNzcwWWNmelZYbUtLenJhbEg0 dGhTRmhHZk1aUnBYN2tqNm9CdG1wVWNvNFo2aXU0Mm8zaUJUY2Fpb0dCemRXZFBZCi0gICAgICAg ICBLTDk0V0FJYU1uQ3lPMUpKYVVBSkd6RWNRVEdoUGJYVXpHN0p2bXFFd1NhMTY4R0JTRWpRSjNx SmM4b09yK1VWV2N2bgotICAgICAgICAgSHZhUT09Ci1BUkMtTWVzc2FnZS1TaWduYXR1cmU6IGk9 MTsgYT1yc2Etc2hhMjU2OyBjPXJlbGF4ZWQvcmVsYXhlZDsgZD1nb29nbGUuY29tOwotIHM9YXJj LTIwMTYwODE2OwotICAgICAgICBoPXNlbmRlcjplcnJvcnMtdG86Y29udGVudC10cmFuc2Zlci1l bmNvZGluZzpjYzpyZXBseS10bwotICAgICAgICAgOmxpc3Qtc3Vic2NyaWJlOmxpc3QtaGVscDps aXN0LXBvc3Q6bGlzdC1hcmNoaXZlOmxpc3QtdW5zdWJzY3JpYmUKLSAgICAgICAgIDpsaXN0LWlk OnByZWNlZGVuY2U6c3ViamVjdDpmZWVkYmFjay1pZDptaW1lLXZlcnNpb246cmVmZXJlbmNlcwot ICAgICAgICAgOmluLXJlcGx5LXRvOm1lc3NhZ2UtaWQ6ZGF0ZTp0bzpmcm9tOmRlbGl2ZXJlZC10 bzsKLSAgICAgICAgYmg9YjFTcDVvcVpBTXdha0k3YTNadnc0TWRuS1B5b21abzhjWHFEbnlKYW1q Zz07Ci0gICAgICAgIGI9amNGSk9saTE2TlBxR1BuTURjSlZFUjNURWtXcmVOSjJWdTc3MTFHaEpo RmttWExORmhTMkZVQW9UOVFCVHkrSldtCi0gICAgICAgICBqeGFCamlWdnMxTU1RK2EzazN5VDdB elZTVU1NRERTYWdpRS9qV3pRK3ZCTjlkci9qUU9NdEpXeHdmbTRvVGJCYzAvcgotICAgICAgICAg R2NIVGdQS0IySHZFaUxPV2FKNENTZlpjWUJ2b3NvZXcvSWZQZ0ttMDZQMkJ0bWMrZmFTWExDWjYz bktFVlRxN05DcHgKLSAgICAgICAgIHFsbEpQa0Ztdmx3Qi8rc294TjduWmdUelhtL3V1clNPQk1h akltUkdQT1pVT1pRRTFJNVRrOE90SlhaUDZRdGxTdlhUCi0gICAgICAgICBaY2dsZXdoVFl1SGxB WGJwVDRzWXlkZE13S2c5eVB1Ni9XbXJvbC93ZzNRcFhQWjBsVnRMZVRvenVzLzJVVElTSnJSNQot ICAgICAgICAgTHAzUT09Ci1BUkMtQXV0aGVudGljYXRpb24tUmVzdWx0czogaT0xOyBteC5nb29n bGUuY29tOwotICAgICAgIHNwZj1wYXNzIChnb29nbGUuY29tOiBkb21haW4gb2YgZmZtcGVnLWRl dmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotIGRlc2lnbmF0ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJt aXR0ZWQgc2VuZGVyKQotIHNtdHAubWFpbGZyb209ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVn Lm9yZwotUmV0dXJuLVBhdGg6IDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPgotUmVj ZWl2ZWQ6IGZyb20gZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoZmZib3gwLWJnLmZmbXBlZy5vcmcu IFs3OS4xMjQuMTcuMTAwXSkKLSAgICAgICAgYnkgbXguZ29vZ2xlLmNvbSB3aXRoIEVTTVRQIGlk Ci0gZjI1LTIwMDIwYTA1NjQwMjE1MTkwMGIwMDUwYmQzNzI3OGQ5c2kxMTg1NjkyNWVkdy40MzUu MjAyMy4wNS4xNS4wMS4zNC4wOTsKLSAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozNDoxMCAt MDcwMCAoUERUKQotUmVjZWl2ZWQtU1BGOiBwYXNzIChnb29nbGUuY29tOiBkb21haW4gb2YgZmZt cGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotIGRlc2lnbmF0ZXMgNzkuMTI0LjE3LjEwMCBh cyBwZXJtaXR0ZWQgc2VuZGVyKSBjbGllbnQtaXA9NzkuMTI0LjE3LjEwMDsKLUF1dGhlbnRpY2F0 aW9uLVJlc3VsdHM6IG14Lmdvb2dsZS5jb207Ci0gICAgICAgc3BmPXBhc3MgKGdvb2dsZS5jb206 IGRvbWFpbiBvZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCi0gZGVzaWduYXRlcyA3 OS4xMjQuMTcuMTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpCi0gc210cC5tYWlsZnJvbT1mZm1wZWct ZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCi1SZWNlaXZlZDogZnJvbSBbMTI3LjAuMS4xXSAobG9j YWxob3N0IFsxMjcuMC4wLjFdKQotCWJ5IGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKFBvc3RmaXgp IHdpdGggRVNNVFAgaWQgMERCNjU2OEMwOTI7Ci0JTW9uLCAxNSBNYXkgMjAyMyAxMTozNDowNyAr MDMwMCAoRUVTVCkKLVgtT3JpZ2luYWwtVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCi1EZWxp dmVyZWQtVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCi1SZWNlaXZlZDogZnJvbSBiZzQuZXht YWlsLnFxLmNvbSAoYmc0LmV4bWFpbC5xcS5jb20gWzQzLjE1NC4yMjEuNThdKQotIGJ5IGZmYm94 MC1iZy5tcGxheWVyaHEuaHUgKFBvc3RmaXgpIHdpdGggRVNNVFBTIGlkIDk2QTE0NjgwMjc0Ci0g Zm9yIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz47IE1vbiwgMTUgTWF5IDIwMjMgMTE6MzM6NTkg KzAzMDAgKEVFU1QpCi1YLVFRLW1pZDogYml6ZXNtdHA3NnQxNjg0MTM5NjM0dGc4M2JldTAKLVJl Y2VpdmVkOiBmcm9tIGxvY2FsaG9zdCAoIFsxMDMuMTAyLjIwMy4yMDRdKSBieSBiaXplc210cC5x cS5jb20gKEVTTVRQKSB3aXRoCi0gaWQgOyBNb24sIDE1IE1heSAyMDIzIDE2OjMzOjUyICswODAw IChDU1QpCi1YLVFRLVNTRjogMDExMDAwMDAwMDAwMDBaMFowMDAwMDBBMDAwMDAwMAotWC1RUS1G RUFUOiBEV1NDY3dXL2FRYjgzVTVCcTlOMDB3M2trSXVvZk5pVXZsUWJnUjBzZ0dqRkVhcyt2aDd3 WHlSeWNGVC96Ci0gdzMzU0g3dU5SWDhsbVArOCtpeTZqUUgvZ3NhUVJWQWF1Mno4SzB1dGR4OUd1 Wk12WTBlNVNaZkIwekJmbmNiMU5kQlpKeEIKLSBQdHZpYmF2bmoyckRscXJHTE85ZHZGRWZtWWox SzQ4SFlwNnJkakNiK3hSUGZ5T3RuY3QzWnE2U1Q3RjFEeFUxK0ttdDhjdwotIDJxVmdlQTc5RE5I bTFKYmNEemkvMlcvU3B6V0hXay9qYW1ONGNBUWZLeVA5QjRBdk1QYUZkOGtkbDZha1liUjBRODRI NzNNCi0gUGN4OFVYejZpdzRzQ1RTUEZ6ZjB6cnNJNCtzaGx5OUtGcDRVRVNUZlJiREVKNDZwY3l3 OCs2VXorUTd3KzdDUnRQbE9zbXMKLSBLNklBYmNMd2ljZi92OFJtMm5IZHJOUG90Y2FNZ1k1cDdJ cW1rWS9ZL2IyZmVxS2lBTT0KLVgtUVEtR29vZEJnOiAwCi1YLUJJWk1BSUwtSUQ6IDQ2MTE3MTg0 ODMwNTY3ODkzNjQKLUZyb206IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KLVRvOiBm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotRGF0ZTogTW9uLCAxNSBNYXkgMjAyMyAxNjozMjowMCAr MDgwMAotTWVzc2FnZS1JZDogPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTYtbHFAY2hpbmFmZm1wZWcu b3JnPgotWC1NYWlsZXI6IGdpdC1zZW5kLWVtYWlsIDIuNDAuMAotSW4tUmVwbHktVG86IDwyMDIz MDUxNTA4MzIwMS40ODIwMS0xLWxxQGNoaW5hZmZtcGVnLm9yZz4KLVJlZmVyZW5jZXM6IAotIDxD QUVnLUplLXZZRDk3S25iYXFUa0s1PVVKOVQzaHRtdEgzUXlrY3dvMytyTkN4PXcralFAbWFpbC5n bWFpbC5jb20+Ci0gPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTEtbHFAY2hpbmFmZm1wZWcub3JnPgot TUlNRS1WZXJzaW9uOiAxLjAKLVgtUVEtU0VORFNJWkU6IDUyMAotRmVlZGJhY2stSUQ6IGJpemVz bXRwOmNoaW5hZmZtcGVnLm9yZzpxeWJnbG9naWNzdnJzejpxeWJnbG9naWNzdnJzejNhLTMKLVN1 YmplY3Q6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSCB2MTAgNS82XSBhdmZvcm1hdC9mbHZlbmM6IHN1 cHBvcnQgbXV4IHZwOSBpbgotIGVuaGFuY2VkIGZsdgotWC1CZWVuVGhlcmU6IGZmbXBlZy1kZXZl bEBmZm1wZWcub3JnCi1YLU1haWxtYW4tVmVyc2lvbjogMi4xLjI5Ci1QcmVjZWRlbmNlOiBsaXN0 Ci1MaXN0LUlkOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vzc2lvbnMgYW5kIHBhdGNoZXMgPGZm bXBlZy1kZXZlbC5mZm1wZWcub3JnPgotTGlzdC1VbnN1YnNjcmliZTogPGh0dHBzOi8vZmZtcGVn Lm9yZy9tYWlsbWFuL29wdGlvbnMvZmZtcGVnLWRldmVsPiwKLSA8bWFpbHRvOmZmbXBlZy1kZXZl bC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD11bnN1YnNjcmliZT4KLUxpc3QtQXJjaGl2ZTog PGh0dHBzOi8vZmZtcGVnLm9yZy9waXBlcm1haWwvZmZtcGVnLWRldmVsPgotTGlzdC1Qb3N0OiA8 bWFpbHRvOmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgotTGlzdC1IZWxwOiA8bWFpbHRvOmZmbXBl Zy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD1oZWxwPgotTGlzdC1TdWJzY3JpYmU6 IDxodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWw+LAotIDxt YWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PXN1YnNjcmliZT4K LVJlcGx5LVRvOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vzc2lvbnMgYW5kIHBhdGNoZXMgPGZm bXBlZy1kZXZlbEBmZm1wZWcub3JnPgotQ2M6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9y Zz4KLUVycm9ycy1UbzogZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotU2VuZGVyOiAi ZmZtcGVnLWRldmVsIiA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4KLVgtVFVJRDog YXBwY3lMVUplZUZXCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVn Lm9yZz4KLS0tLQotIGxpYmF2Zm9ybWF0L01ha2VmaWxlIHwgIDIgKy0KLSBsaWJhdmZvcm1hdC9m bHZlbmMuYyB8IDIyICsrKysrKysrKysrKysrLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDE1 IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1h dC9NYWtlZmlsZSBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlCi1pbmRleCBjODY4ZTE2MjZjLi4xNmNm ZTEwN2VhIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvTWFrZWZpbGUKLSsrKyBiL2xpYmF2Zm9y bWF0L01ha2VmaWxlCi1AQCAtMjE0LDcgKzIxNCw3IEBAIE9CSlMtJChDT05GSUdfRkxBQ19NVVhF UikgICAgICAgICAgICAgICAgKz0gZmxhY2VuYy5vIGZsYWNlbmNfaGVhZGVyLm8gXAotIE9CSlMt JChDT05GSUdfRkxJQ19ERU1VWEVSKSAgICAgICAgICAgICAgKz0gZmxpYy5vCi0gT0JKUy0kKENP TkZJR19GTFZfREVNVVhFUikgICAgICAgICAgICAgICArPSBmbHZkZWMubwotIE9CSlMtJChDT05G SUdfTElWRV9GTFZfREVNVVhFUikgICAgICAgICAgKz0gZmx2ZGVjLm8KLS1PQkpTLSQoQ09ORklH X0ZMVl9NVVhFUikgICAgICAgICAgICAgICAgICs9IGZsdmVuYy5vIGF2Yy5vIGhldmMubyBhdjEu bwotK09CSlMtJChDT05GSUdfRkxWX01VWEVSKSAgICAgICAgICAgICAgICAgKz0gZmx2ZW5jLm8g YXZjLm8gaGV2Yy5vIGF2MS5vIHZwY2MubwotIE9CSlMtJChDT05GSUdfRk9VUlhNX0RFTVVYRVIp ICAgICAgICAgICAgKz0gNHhtLm8KLSBPQkpTLSQoQ09ORklHX0ZSQU1FQ1JDX01VWEVSKSAgICAg ICAgICAgICs9IGZyYW1lY3JjZW5jLm8gZnJhbWVoYXNoLm8KLSBPQkpTLSQoQ09ORklHX0ZSQU1F SEFTSF9NVVhFUikgICAgICAgICAgICs9IGhhc2hlbmMubyBmcmFtZWhhc2gubwotZGlmZiAtLWdp dCBhL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jIGIvbGliYXZmb3JtYXQvZmx2ZW5jLmMKLWluZGV4IGMx Nzg0YjMzMmQuLjQ3NWRkMGJmNDQgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9mbHZlbmMuYwot KysrIGIvbGliYXZmb3JtYXQvZmx2ZW5jLmMKLUBAIC0yOSw2ICsyOSw3IEBACi0gI2luY2x1ZGUg ImF2aW8uaCIKLSAjaW5jbHVkZSAiYXZjLmgiCi0gI2luY2x1ZGUgImF2MS5oIgotKyNpbmNsdWRl ICJ2cGNjLmgiCi0gI2luY2x1ZGUgImhldmMuaCIKLSAjaW5jbHVkZSAiYXZmb3JtYXQuaCIKLSAj aW5jbHVkZSAiZmx2LmgiCi1AQCAtNTAsNiArNTEsNyBAQCBzdGF0aWMgY29uc3QgQVZDb2RlY1Rh ZyBmbHZfdmlkZW9fY29kZWNfaWRzW10gPSB7Ci0gICAgIHsgQVZfQ09ERUNfSURfSDI2NCwgICAg IEZMVl9DT0RFQ0lEX0gyNjQgfSwKLSAgICAgeyBBVl9DT0RFQ19JRF9IRVZDLCAgICAgTUtCRVRB RygnaCcsICd2JywgJ2MnLCAnMScpIH0sCi0gICAgIHsgQVZfQ09ERUNfSURfQVYxLCAgICAgIE1L QkVUQUcoJ2EnLCAndicsICcwJywgJzEnKSB9LAotKyAgICB7IEFWX0NPREVDX0lEX1ZQOSwgICAg ICBNS0JFVEFHKCd2JywgJ3AnLCAnMCcsICc5JykgfSwKLSAgICAgeyBBVl9DT0RFQ19JRF9OT05F LCAgICAgMCB9Ci0gfTsKLSAKLUBAIC00OTQsNyArNDk2LDcgQEAgc3RhdGljIHZvaWQgZmx2X3dy aXRlX2NvZGVjX2hlYWRlcihBVkZvcm1hdENvbnRleHQqIHMsIEFWQ29kZWNQYXJhbWV0ZXJzKiBw YXIsIGkKLSAKLSAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFDIHx8IHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NAotICAgICAgICAgICAgIHx8IHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9IRVZDCi0tICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEp IHsKLSsgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSB8fCBw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOSkgewotICAgICAgICAgaW50NjRfdCBwb3M7 Ci0gICAgICAgICBhdmlvX3c4KHBiLAotICAgICAgICAgICAgICAgICBwYXItPmNvZGVjX3R5cGUg PT0gQVZNRURJQV9UWVBFX1ZJREVPID8KLUBAIC01NDAsOSArNTQyLDkgQEAgc3RhdGljIHZvaWQg Zmx2X3dyaXRlX2NvZGVjX2hlYWRlcihBVkZvcm1hdENvbnRleHQqIHMsIEFWQ29kZWNQYXJhbWV0 ZXJzKiBwYXIsIGkKLSAgICAgICAgICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9IRVZDKSB7Ci0gICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIg fCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydCk7IC8vIEV4VmlkZW9UYWdIZWFkZXIgbW9kZSB3aXRo IFBhY2tldFR5cGVTZXF1ZW5jZVN0YXJ0Ci0gICAgICAgICAgICAgICAgIGF2aW9fd3JpdGUocGIs ICJodmMxIiwgNCk7Ci0tICAgICAgICAgICAgfSBlbHNlIGlmIChwYXItPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX0FWMSkgewotKyAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9 PSBBVl9DT0RFQ19JRF9BVjEgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsK LSAgICAgICAgICAgICAgICAgYXZpb193OChwYiwgRkxWX0lTX0VYX0hFQURFUiB8IFBhY2tldFR5 cGVTZXF1ZW5jZVN0YXJ0KTsKLS0gICAgICAgICAgICAgICAgYXZpb193cml0ZShwYiwgImF2MDEi LCA0KTsKLSsgICAgICAgICAgICAgICAgYXZpb193cml0ZShwYiwgcGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9BVjEgPyAiYXYwMSIgOiAidnAwOSIsIDQpOwotICAgICAgICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIHBhci0+Y29kZWNfdGFnIHwgRkxWX0ZS QU1FX0tFWSk7IC8vIGZsYWdzCi0gICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIDApOyAvLyBB VkMgc2VxdWVuY2UgaGVhZGVyCi1AQCAtNTUzLDYgKzU1NSw4IEBAIHN0YXRpYyB2b2lkIGZsdl93 cml0ZV9jb2RlY19oZWFkZXIoQVZGb3JtYXRDb250ZXh0KiBzLCBBVkNvZGVjUGFyYW1ldGVycyog cGFyLCBpCi0gICAgICAgICAgICAgICAgIGZmX2lzb21fd3JpdGVfaHZjYyhwYiwgcGFyLT5leHRy YWRhdGEsIHBhci0+ZXh0cmFkYXRhX3NpemUsIDApOwotICAgICAgICAgICAgIGVsc2UgaWYgKHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKQotICAgICAgICAgICAgICAgICBmZl9pc29t X3dyaXRlX2F2MWMocGIsIHBhci0+ZXh0cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplLCAxKTsK LSsgICAgICAgICAgICBlbHNlIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOSkK LSsgICAgICAgICAgICAgICAgZmZfaXNvbV93cml0ZV92cGNjKHMsIHBiLCBwYXItPmV4dHJhZGF0 YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSwgcGFyKTsKLSAgICAgICAgICAgICBlbHNlCi0gICAgICAg ICAgICAgICAgIGZmX2lzb21fd3JpdGVfYXZjYyhwYiwgcGFyLT5leHRyYWRhdGEsIHBhci0+ZXh0 cmFkYXRhX3NpemUpOwotICAgICAgICAgfQotQEAgLTg1MiwxNCArODU2LDE1IEBAIHN0YXRpYyBp bnQgZmx2X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCi0g ICAgICAgICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNiAgfHwgcGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9BQUMpCi0gICAgICAgICBmbGFnc19zaXplID0gMjsKLSAgICAgZWxz ZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfTVBFRzQgfHwKLS0gICAgICAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9IRVZDIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKQotKyAg ICAgICAgICAgICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMgfHwgcGFyLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9BVjEgfHwKLSsgICAgICAgICAgICAgcGFyLT5jb2RlY19pZCA9 PSBBVl9DT0RFQ19JRF9WUDkpCi0gICAgICAgICBmbGFnc19zaXplID0gNTsKLSAgICAgZWxzZQot ICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDE7Ci0gCi0gICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX0FBQyB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQKLSAgICAg ICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQwotLSAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfQVYxKSB7Ci0rICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9BVjEgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsKLSAg ICAgICAgIHNpemVfdCBzaWRlX3NpemU7Ci0gICAgICAgICB1aW50OF90ICpzaWRlID0gYXZfcGFj a2V0X2dldF9zaWRlX2RhdGEocGt0LCBBVl9QS1RfREFUQV9ORVdfRVhUUkFEQVRBLCAmc2lkZV9z aXplKTsKLSAgICAgICAgIGlmIChzaWRlICYmIHNpZGVfc2l6ZSA+IDAgJiYgKHNpZGVfc2l6ZSAh PSBwYXItPmV4dHJhZGF0YV9zaXplIHx8IG1lbWNtcChzaWRlLCBwYXItPmV4dHJhZGF0YSwgc2lk ZV9zaXplKSkpIHsKLUBAIC04ODAsNyArODg1LDggQEAgc3RhdGljIGludCBmbHZfd3JpdGVfcGFj a2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKLSAgICAgICAgIHJldHVybiBB VkVSUk9SKEVJTlZBTCk7Ci0gICAgIH0KLSAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfSDI2NCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8Ci0tICAg ICAgICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMgfHwgIHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfQVYxKSB7Ci0rICAgICAgICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVD X0lEX0hFVkMgfHwgIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxIHx8Ci0rICAgICAg ICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOSkgewotICAgICAgICAgaWYgKHBrdC0+ cHRzID09IEFWX05PUFRTX1ZBTFVFKSB7Ci0gICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19F UlJPUiwgIlBhY2tldCBpcyBtaXNzaW5nIFBUU1xuIik7Ci0gICAgICAgICAgICAgcmV0dXJuIEFW RVJST1IoRUlOVkFMKTsKLUBAIC05OTMsOSArOTk5LDkgQEAgc3RhdGljIGludCBmbHZfd3JpdGVf cGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKLSAgICAgICAgIGlmIChw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKLSAgICAgICAgICAgICBhdmlvX3c4 KHBiLCBGTFZfSVNfRVhfSEVBREVSIHwgUGFja2V0VHlwZUNvZGVkRnJhbWVzWCk7IC8vIEV4Vmlk ZW9UYWdIZWFkZXIgbW9kZSB3aXRoIFBhY2tldFR5cGVDb2RlZEZyYW1lc1gKLSAgICAgICAgICAg ICBhdmlvX3dyaXRlKHBiLCAiaHZjMSIsIDQpOwotLSAgICAgICAgfSBlbHNlIGlmIChwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgewotKyAgICAgICAgfSBlbHNlIGlmIChwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X1ZQOSkgewotICAgICAgICAgICAgIGF2aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIgfCBQYWNr ZXRUeXBlQ29kZWRGcmFtZXMpOwotLSAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsICJhdjAxIiwg NCk7Ci0rICAgICAgICAgICAgYXZpb193cml0ZShwYiwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9BVjEgPyAiYXYwMSIgOiAidnAwOSIsIDQpOwotICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICBhdmlvX3c4KHBiLCBmbGFncyk7Ci0gICAgICAgICB9Ci0KLUZyb20gcGF0Y2h3b3Jr IE1vbiBNYXkgMTUgMDg6MzI6MDEgMjAyMwotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PSJ1dGYtOCIKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5n OiA3Yml0Ci1YLVBhdGNod29yay1TdWJtaXR0ZXI6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVn Lm9yZz4KLVgtUGF0Y2h3b3JrLUlkOiA0MTYyMAotRGVsaXZlcmVkLVRvOiBmZm1wZWdwYXRjaHdv cmsyQGdtYWlsLmNvbQotUmVjZWl2ZWQ6IGJ5IDIwMDI6YTA1OjZhMjA6YmE5MTpiMDoxMDU6ZmVi OjcxZjIgd2l0aCBTTVRQIGlkCi0gZmIxN2NzcDE0NDQ2MTZwemI7Ci0gICAgICAgIE1vbiwgMTUg TWF5IDIwMjMgMDE6MzQ6MTkgLTA3MDAgKFBEVCkKLVgtR29vZ2xlLVNtdHAtU291cmNlOiAKLSBB Q0hIVVo0SzZlT0p3d243alBmeTBkaFRQNElRcjJYekRCOFBmQjdFcjZhUXRyQ3J4bmRkaVJJZ2RC cVpCNzJkSGh5cWZiSUxYZDVFCi1YLVJlY2VpdmVkOiBieSAyMDAyOmExNzo5MDY6ZWU4ZTpiMDo5 NWU6YzU0OTo5YWNlIHdpdGggU01UUCBpZAotIHd0MTQtMjAwMjBhMTcwOTA2ZWU4ZTAwYjAwOTVl YzU0OTlhY2VtcjI4MDgyMTgyZWpiLjYyLjE2ODQxMzk2NTk0OTY7Ci0gICAgICAgIE1vbiwgMTUg TWF5IDIwMjMgMDE6MzQ6MTkgLTA3MDAgKFBEVCkKLUFSQy1TZWFsOiBpPTE7IGE9cnNhLXNoYTI1 NjsgdD0xNjg0MTM5NjU5OyBjdj1ub25lOwotICAgICAgICBkPWdvb2dsZS5jb207IHM9YXJjLTIw MTYwODE2OwotICAgICAgICBiPUZNOVNRYmtZbXFXYU9BYThZUktzZG9qM0JTb05OL1NzRHFYZ0Vh Ukw4bEN5Z0p1YWhDVDF5Ym9jVjFJcW1VU1R4UwotICAgICAgICAgbDVBY1VKR2JaYmwyQmVOaEs1 bVg0M2FDZktCU1NGM0RMaG1SQ01CQzhwVTJpUG12N1R1U1Y1OGtSZkxZNnI4M2o4SWMKLSAgICAg ICAgIGRWNTZRVVlZdE4rVmUwQlduYUhGT3ppdlNOQWdIeHdlUHN0UUwwNDNMSEQycm4rQjVDeU52 cTdsMkNhaG5oTUo4SlVHCi0gICAgICAgICB6Sk5TQmUvTEZGMExoa3ltcWQ4Nzd2a0oreCtValNX RUlkb21JSmRBY0F0MkQwNmpEeHdJRi9ubkxEREhtdlFlbnkyTgotICAgICAgICAgOHhxc3NFNDAx UWNZQ3E2R3RSaTBVVEF5TXJZaURVNFJVUE9oOEtqYjVZb01YWXBiSStCQ3NyNlZKbGg2L0Y2Y0ZE NTgKLSAgICAgICAgIFlTdHc9PQotQVJDLU1lc3NhZ2UtU2lnbmF0dXJlOiBpPTE7IGE9cnNhLXNo YTI1NjsgYz1yZWxheGVkL3JlbGF4ZWQ7IGQ9Z29vZ2xlLmNvbTsKLSBzPWFyYy0yMDE2MDgxNjsK LSAgICAgICAgaD1zZW5kZXI6ZXJyb3JzLXRvOmNvbnRlbnQtdHJhbnNmZXItZW5jb2Rpbmc6Y2M6 cmVwbHktdG8KLSAgICAgICAgIDpsaXN0LXN1YnNjcmliZTpsaXN0LWhlbHA6bGlzdC1wb3N0Omxp c3QtYXJjaGl2ZTpsaXN0LXVuc3Vic2NyaWJlCi0gICAgICAgICA6bGlzdC1pZDpwcmVjZWRlbmNl OnN1YmplY3Q6ZmVlZGJhY2staWQ6bWltZS12ZXJzaW9uOnJlZmVyZW5jZXMKLSAgICAgICAgIDpp bi1yZXBseS10bzptZXNzYWdlLWlkOmRhdGU6dG86ZnJvbTpkZWxpdmVyZWQtdG87Ci0gICAgICAg IGJoPUpDS2ZxdHluUDg1VXlONE9HNVBRdUMyR09NNDVFQzc1clBhL1ROOVBraXM9OwotICAgICAg ICBiPU1GNzhoZyswS2tqVU5xNUJqejZiNHJqY0pESnFyRnVmV0hoRFd6S2dXQ0dvMTVmdm5WZzNV WThQRHZwc1VZeHhTQQotICAgICAgICAgU1hRSlAxdXJ2dXhMdko5bTZOMjAvbUJDZ3JOOUNxY2E1 MzdvaVdXTmJheUFPQkx1aWhYUE5EUFpMcVlnRDl5ZyswM1UKLSAgICAgICAgIFFvNDZyS3M4Qnhr dXpUS3NxZkZ1MWNmOGIzcWdxcDJ3dDJtT0ZGblJVOHA5SjVmb0E1SENwSG9FQjFTV284S3FLanF6 Ci0gICAgICAgICBOZUZveWg0ay9DSGs4UXkycmhRL2FodU5vMHpCeVhFVnVHcUJFSzFHYWtXOGJD NkRwWC9nWDlQbnNFN0J2cE9yTy8regotICAgICAgICAgaUVKeFVkMVJ5VUZEUkVUamRjcWZMZVJs RUJPME5iRmk5R1RSamcwb1k3bTJPTThnaDl6dzdUSU9vS2ZLYUNWZXBhKzEKLSAgICAgICAgIHpz K2c9PQotQVJDLUF1dGhlbnRpY2F0aW9uLVJlc3VsdHM6IGk9MTsgbXguZ29vZ2xlLmNvbTsKLSAg ICAgICBzcGY9cGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2Vz QGZmbXBlZy5vcmcKLSBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRl cikKLSBzbXRwLm1haWxmcm9tPWZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLVJldHVy bi1QYXRoOiA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4KLVJlY2VpdmVkOiBmcm9t IGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKGZmYm94MC1iZy5mZm1wZWcub3JnLiBbNzkuMTI0LjE3 LjEwMF0pCi0gICAgICAgIGJ5IG14Lmdvb2dsZS5jb20gd2l0aCBFU01UUCBpZAotIGYyMS0yMDAy MGExNzA5MDY4MjU1MDBiMDA5NjVjNTVjNzFkOXNpMTA0OTI4NzZlanguOTg4LjIwMjMuMDUuMTUu MDEuMzQuMTk7Ci0gICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6MzQ6MTkgLTA3MDAgKFBEVCkK LVJlY2VpdmVkLVNQRjogcGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1i b3VuY2VzQGZmbXBlZy5vcmcKLSBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVk IHNlbmRlcikgY2xpZW50LWlwPTc5LjEyNC4xNy4xMDA7Ci1BdXRoZW50aWNhdGlvbi1SZXN1bHRz OiBteC5nb29nbGUuY29tOwotICAgICAgIHNwZj1wYXNzIChnb29nbGUuY29tOiBkb21haW4gb2Yg ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotIGRlc2lnbmF0ZXMgNzkuMTI0LjE3LjEw MCBhcyBwZXJtaXR0ZWQgc2VuZGVyKQotIHNtdHAubWFpbGZyb209ZmZtcGVnLWRldmVsLWJvdW5j ZXNAZmZtcGVnLm9yZwotUmVjZWl2ZWQ6IGZyb20gWzEyNy4wLjEuMV0gKGxvY2FsaG9zdCBbMTI3 LjAuMC4xXSkKLQlieSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChQb3N0Zml4KSB3aXRoIEVTTVRQ IGlkIDM0ODY0NjhDMDcyOwotCU1vbiwgMTUgTWF5IDIwMjMgMTE6MzQ6MTMgKzAzMDAgKEVFU1Qp Ci1YLU9yaWdpbmFsLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotRGVsaXZlcmVkLVRvOiBm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotUmVjZWl2ZWQ6IGZyb20gYmc0LmV4bWFpbC5xcS5jb20g KGJnNC5leG1haWwucXEuY29tIFs0My4xNTQuMjIxLjU4XSkKLSBieSBmZmJveDAtYmcubXBsYXll cmhxLmh1IChQb3N0Zml4KSB3aXRoIEVTTVRQUyBpZCA2NDgyQjY4QzBBMAotIGZvciA8ZmZtcGVn LWRldmVsQGZmbXBlZy5vcmc+OyBNb24sIDE1IE1heSAyMDIzIDExOjM0OjA1ICswMzAwIChFRVNU KQotWC1RUS1taWQ6IGJpemVzbXRwNzF0MTY4NDEzOTYzOXRzZnA2b3NxCi1SZWNlaXZlZDogZnJv bSBsb2NhbGhvc3QgKCBbMTAzLjEwMi4yMDMuMjA0XSkgYnkgYml6ZXNtdHAucXEuY29tIChFU01U UCkgd2l0aAotIGlkIDsgTW9uLCAxNSBNYXkgMjAyMyAxNjozMzo1OCArMDgwMCAoQ1NUKQotWC1R US1TU0Y6IDAxMTAwMDAwMDAwMDAwWjBaMDAwMDAwQTAwMDAwMDAKLVgtUVEtRkVBVDogdjJUQkFo dHlpNUhtT0k4Ukg2MllYV1ZhbWwwdU5YeGNzSnd0WHJxVnpYZHBKd0pwa1ljcEtTMGpPbjViOAot IHZwdXRDWUsxRk5DbEJOT212OUF6RUxqVC9LMjZjRk9zVVlLQnBBdWRyZjhBbC9LbXdsOENqeVQ2 bkRLMDZRQnlySHU2N0E0Ci0gc1g4VlFyYXpJWE82WlBJcmZBOUVsdXNYdHNzbVIyMmU4anUwblhY N29OeS9BUzR0MGJaa3VKUlZtWUNvSFNDbkxxbnZGOXIKLSBZYm9WZG1nMFpiTG92clhCeTI2YmdR cjk0NEcvdFFSVGVBR29yQXdFNjFMZjl0cWxSS3VUOFRPOC9CQS9WN3pCdWFaVFN4QQotIG5naGw2 MWF3UG9kdVk0dmQ5TmVwdzQzVjJDdW40d2ZQVHZBTUpuOUVRaHJkVWdlNHNJTjBRNEV1V2tCZDlk Qy9uVE93VktWCi0gV3NqTHhieUw2YXBGZTA4WG15ZVM5TURKa0wrYkZOM3lrcERKcWJsQmc4QzFB WU9qVnlZRlMyWXQvYXRjUT09Ci1YLVFRLUdvb2RCZzogMAotWC1CSVpNQUlMLUlEOiAxNDIyMTU5 NTA1MTYwMzAyMjk4NwotRnJvbTogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgotVG86 IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCi1EYXRlOiBNb24sIDE1IE1heSAyMDIzIDE2OjMyOjAx ICswODAwCi1NZXNzYWdlLUlkOiA8MjAyMzA1MTUwODMyMDEuNDgyMDEtNy1scUBjaGluYWZmbXBl Zy5vcmc+Ci1YLU1haWxlcjogZ2l0LXNlbmQtZW1haWwgMi40MC4wCi1Jbi1SZXBseS1UbzogPDIw MjMwNTE1MDgzMjAxLjQ4MjAxLTEtbHFAY2hpbmFmZm1wZWcub3JnPgotUmVmZXJlbmNlczogCi0g PENBRWctSmUtdllEOTdLbmJhcVRrSzU9VUo5VDNodG10SDNReWtjd28zK3JOQ3g9dytqUUBtYWls LmdtYWlsLmNvbT4KLSA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMS1scUBjaGluYWZmbXBlZy5vcmc+ Ci1NSU1FLVZlcnNpb246IDEuMAotWC1RUS1TRU5EU0laRTogNTIwCi1GZWVkYmFjay1JRDogYml6 ZXNtdHA6Y2hpbmFmZm1wZWcub3JnOnF5Ymdsb2dpY3N2cnN6OnF5Ymdsb2dpY3N2cnN6M2EtMwot U3ViamVjdDogW0ZGbXBlZy1kZXZlbF0gW1BBVENIIHYxMCA2LzZdIGF2Zm9ybWF0L2ZsdmRlYzog c3VwcG9ydCBkZW11eCB2cDkKLSBpbiBlbmhhbmNlZCBmbHYKLVgtQmVlblRoZXJlOiBmZm1wZWct ZGV2ZWxAZmZtcGVnLm9yZwotWC1NYWlsbWFuLVZlcnNpb246IDIuMS4yOQotUHJlY2VkZW5jZTog bGlzdAotTGlzdC1JZDogRkZtcGVnIGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVz IDxmZm1wZWctZGV2ZWwuZmZtcGVnLm9yZz4KLUxpc3QtVW5zdWJzY3JpYmU6IDxodHRwczovL2Zm bXBlZy5vcmcvbWFpbG1hbi9vcHRpb25zL2ZmbXBlZy1kZXZlbD4sCi0gPG1haWx0bzpmZm1wZWct ZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+Ci1MaXN0LUFyY2hp dmU6IDxodHRwczovL2ZmbXBlZy5vcmcvcGlwZXJtYWlsL2ZmbXBlZy1kZXZlbD4KLUxpc3QtUG9z dDogPG1haWx0bzpmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4KLUxpc3QtSGVscDogPG1haWx0bzpm Zm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9aGVscD4KLUxpc3QtU3Vic2Ny aWJlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsPiwK LSA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD1zdWJzY3Jp YmU+Ci1SZXBseS1UbzogRkZtcGVnIGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVz IDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4KLUNjOiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBl Zy5vcmc+Ci1FcnJvcnMtVG86IGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLVNlbmRl cjogImZmbXBlZy1kZXZlbCIgPGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+Ci1YLVRV SUQ6IHdPdHZUemsremhkdwotCi1TaWduZWQtb2ZmLWJ5OiBTdGV2ZW4gTGl1IDxscUBjaGluYWZm bXBlZy5vcmc+Ci0tLS0KLSBsaWJhdmZvcm1hdC9mbHZkZWMuYyB8IDExICsrKysrKysrKy0tCi0g MSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAt LWdpdCBhL2xpYmF2Zm9ybWF0L2ZsdmRlYy5jIGIvbGliYXZmb3JtYXQvZmx2ZGVjLmMKLWluZGV4 IGEwMzYyZmYxMWMuLmE2YTk0YTQwMjEgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9mbHZkZWMu YwotKysrIGIvbGliYXZmb3JtYXQvZmx2ZGVjLmMKLUBAIC0zMjAsNiArMzIwLDggQEAgc3RhdGlj IGludCBmbHZfc2FtZV92aWRlb19jb2RlYyhBVkZvcm1hdENvbnRleHQgKnMsIEFWQ29kZWNQYXJh bWV0ZXJzICp2cGFyLCBpbnQKLSAgICAgICAgICAgICAgICAgcmV0dXJuIHZwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX0hFVkM7Ci0gICAgICAgICAgICAgY2FzZSBNS0JFVEFHKCdhJywgJ3Yn LCAnMCcsICcxJyk6Ci0gICAgICAgICAgICAgICAgIHJldHVybiB2cGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9BVjE7Ci0rICAgICAgICAgICAgY2FzZSBNS0JFVEFHKCd2JywgJ3AnLCAnMCcs ICc5Jyk6Ci0rICAgICAgICAgICAgICAgIHJldHVybiB2cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9WUDk7Ci0gICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgICB9Ci1AQCAtMzY1LDYgKzM2NywxMCBAQCBzdGF0aWMgaW50IGZsdl9zZXRfdmlk ZW9fY29kZWMoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqdnN0cmVhbSwKLSAgICAgICAg ICAgICAgICAgcGFyLT5jb2RlY19pZCA9IEFWX0NPREVDX0lEX0FWMTsKLSAgICAgICAgICAgICAg ICAgdnN0cmVhbWktPm5lZWRfcGFyc2luZyA9IEFWU1RSRUFNX1BBUlNFX0hFQURFUlM7Ci0gICAg ICAgICAgICAgICAgIHJldHVybiA0OwotKyAgICAgICAgICAgIGNhc2UgTUtCRVRBRygndicsICdw JywgJzAnLCAnOScpOgotKyAgICAgICAgICAgICAgICBwYXItPmNvZGVjX2lkID0gQVZfQ09ERUNf SURfVlA5OwotKyAgICAgICAgICAgICAgICB2c3RyZWFtaS0+bmVlZF9wYXJzaW5nID0gQVZTVFJF QU1fUEFSU0VfSEVBREVSUzsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgICAg ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci1AQCAtMTI4 NSw3ICsxMjkxLDggQEAgcmV0cnlfZHVyYXRpb246Ci0gICAgICAgICBzdC0+Y29kZWNwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwKLSAgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgfHwKLSAgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyB8fAotLSAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKLSsgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfQVYxIHx8Ci0rICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX1ZQOSkgewotICAgICAgICAgaW50IHR5cGUgPSAwOwotICAgICAgICAg aWYgKGZsdi0+ZXhoZWFkZXIgJiYgc3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9UWVBFX1ZJREVP KSB7Ci0gICAgICAgICAgICAgdHlwZSA9IGZsYWdzICYgMHgwRjsKLUBAIC0xMzE3LDcgKzEzMjQs NyBAQCByZXRyeV9kdXJhdGlvbjoKLSAgICAgICAgIH0KLSAgICAgICAgIGlmICh0eXBlID09IDAg JiYgKCFzdC0+Y29kZWNwYXItPmV4dHJhZGF0YSB8fCBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX0FBQyB8fAotICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfSDI2NCB8fCBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVD X0lEX0hFVkMgfHwKLS0gICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX0FWMSkpIHsKLSsgICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX0FWMSB8fCBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQ OSkpIHsKLSAgICAgICAgICAgICBBVkRpY3Rpb25hcnlFbnRyeSAqdDsKLSAKLSAgICAgICAgICAg ICBpZiAoc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEpIHsKCmRpZmYgLS1naXQgYS9mZm1wZWctZGxv cGVuLW9wZW5oMjY0LnBhdGNoIGIvZmZtcGVnLWRsb3Blbi1vcGVuaDI2NC5wYXRjaAppbmRleCBh MjgzZjg1Li4zMjk2MDZiIDEwMDY0NAotLS0gYS9mZm1wZWctZGxvcGVuLW9wZW5oMjY0LnBhdGNo CisrKyBiL2ZmbXBlZy1kbG9wZW4tb3BlbmgyNjQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9t IDFmNDg3NDBkYjBkZGE4ZDZlYzFiOTdhN2Y0YTc5NGUzODFhNjU2MzYgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tIDNkYWE0OWNhZTBiZmMzZGU0MzRkZDI4YzNhMjNhZTg3N2YwNjM5ZGIg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBOZWFsIEdvbXBhIDxuZ29tcGFAZmVkb3Jh cHJvamVjdC5vcmc+Ci1EYXRlOiBXZWQsIDEyIE9jdCAyMDIyIDA5OjQxOjI3IC0wNDAwCi1TdWJq ZWN0OiBbUEFUQ0hdIGF2Y29kZWMvb3BlbmgyNjQ6IEFkZCB0aGUgYWJpbGl0eSB0byBkbG9wZW4o KSBPcGVuSDI2NAorRGF0ZTogVGh1LCA0IEphbiAyMDI0IDEwOjIxOjE3IC0wNTAwCitTdWJqZWN0 OiBbUEFUQ0hdIGxhdmMvb3BlbmgyNjQ6IEFkZCB0aGUgYWJpbGl0eSB0byBkbG9wZW4oKSBPcGVu SDI2NAogCiBXZSBjYW4ndCBkaXJlY3RseSBkZXBlbmQgb24gT3BlbkgyNjQsIGJ1dCB3ZSBjYW4g d2Vha2x5IGxpbmsgdG8gaXQKIGFuZCBncmFjZWZ1bGx5IGV4cG9zZSB0aGUgY2FwYWJpbGl0eS4K QEAgLTI0LDEwICsyNCwxMCBAQCBTaWduZWQtb2ZmLWJ5OiBOZWFsIEdvbXBhIDxuZ29tcGFAZmVk b3JhcHJvamVjdC5vcmc+CiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvbGlib3Blbmgy NjRfZGxvcGVuLmgKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXgg YmE1NzkzYjJmZi4uODg1NWMxYTkwOCAxMDA3NTUKK2luZGV4IDFmMGI5NDk3Y2IuLjk3ZmE0YTVk NmEgMTAwNzU1CiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQotQEAgLTI1MSw2ICsy NTEsNyBAQCBFeHRlcm5hbCBsaWJyYXJ5IHN1cHBvcnQ6CitAQCAtMjQ5LDYgKzI0OSw3IEBAIEV4 dGVybmFsIGxpYnJhcnkgc3VwcG9ydDoKICAgIC0tZW5hYmxlLWxpYm9wZW5jb3JlLWFtcndiIGVu YWJsZSBBTVItV0IgZGVjb2RpbmcgdmlhIGxpYm9wZW5jb3JlLWFtcndiIFtub10KICAgIC0tZW5h YmxlLWxpYm9wZW5jdiAgICAgICBlbmFibGUgdmlkZW8gZmlsdGVyaW5nIHZpYSBsaWJvcGVuY3Yg W25vXQogICAgLS1lbmFibGUtbGlib3BlbmgyNjQgICAgIGVuYWJsZSBILjI2NCBlbmNvZGluZyB2 aWEgT3BlbkgyNjQgW25vXQpAQCAtMzUsNyArMzUsNyBAQCBpbmRleCBiYTU3OTNiMmZmLi44ODU1 YzFhOTA4IDEwMDc1NQogICAgLS1lbmFibGUtbGlib3BlbmpwZWcgICAgIGVuYWJsZSBKUEVHIDIw MDAgZGUvZW5jb2RpbmcgdmlhIE9wZW5KUEVHIFtub10KICAgIC0tZW5hYmxlLWxpYm9wZW5tcHQg ICAgICBlbmFibGUgZGVjb2RpbmcgdHJhY2tlZCBmaWxlcyB2aWEgbGlib3Blbm1wdCBbbm9dCiAg ICAtLWVuYWJsZS1saWJvcGVudmlubyAgICAgZW5hYmxlIE9wZW5WSU5PIGFzIGEgRE5OIG1vZHVs ZSBiYWNrZW5kCi1AQCAtMTg0NCw2ICsxODQ1LDcgQEAgRVhURVJOQUxfTElCUkFSWV9MSVNUPSIK K0BAIC0xODcxLDYgKzE4NzIsNyBAQCBFWFRFUk5BTF9MSUJSQVJZX0xJU1Q9IgogICAgICBsaWJt eXNvZmEKICAgICAgbGlib3BlbmN2CiAgICAgIGxpYm9wZW5oMjY0CkBAIC00Myw3ICs0Myw3IEBA IGluZGV4IGJhNTc5M2IyZmYuLjg4NTVjMWE5MDggMTAwNzU1CiAgICAgIGxpYm9wZW5qcGVnCiAg ICAgIGxpYm9wZW5tcHQKICAgICAgbGlib3BlbnZpbm8KLUBAIC02NTk2LDYgKzY1OTgsNyBAQCBl bmFibGVkIGxpYm9wZW5jdiAgICAgICAgICYmIHsgY2hlY2tfaGVhZGVycyBvcGVuY3YyL2NvcmUv Y29yZV9jLmggJiYKK0BAIC02NzY1LDYgKzY3NjcsNyBAQCBlbmFibGVkIGxpYm9wZW5jdiAgICAg ICAgICYmIHsgY2hlY2tfaGVhZGVycyBvcGVuY3YyL2NvcmUvY29yZV9jLmggJiYKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlIGxpYm9wZW5jdiBvcGVuY3YyL2NvcmUv Y29yZV9jLmggY3ZDcmVhdGVJbWFnZUhlYWRlciAtbG9wZW5jdl9jb3JlIC1sb3BlbmN2X2ltZ3By b2M7IH0gfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZV9wa2dfY29u ZmlnIGxpYm9wZW5jdiBvcGVuY3Ygb3BlbmN2L2N4Y29yZS5oIGN2Q3JlYXRlSW1hZ2VIZWFkZXI7 IH0KICBlbmFibGVkIGxpYm9wZW5oMjY0ICAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJv cGVuaDI2NCBvcGVuaDI2NCB3ZWxzL2NvZGVjX2FwaS5oIFdlbHNHZXRDb2RlY1ZlcnNpb24KQEAg LTUyLDE3ICs1MiwxNyBAQCBpbmRleCBiYTU3OTNiMmZmLi44ODU1YzFhOTA4IDEwMDc1NQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJvcGVu anBlZyAibGlib3BlbmpwMiA+PSAyLjEuMCIgb3BlbmpwZWcuaCBvcGpfdmVyc2lvbiAtRE9QSl9T VEFUSUMgJiYgYWRkX2NwcGZsYWdzIC1ET1BKX1NUQVRJQzsgfSB9CiAgZW5hYmxlZCBsaWJvcGVu bXB0ICAgICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcgbGlib3Blbm1wdCAibGlib3Blbm1wdCA+ PSAwLjIuNjU1NyIgbGlib3Blbm1wdC9saWJvcGVubXB0Lmggb3Blbm1wdF9tb2R1bGVfY3JlYXRl IC1sc3RkYysrICYmIGFwcGVuZCBsaWJvcGVubXB0X2V4dHJhbGlicyAiLWxzdGRjKysiCiBkaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKLWluZGV4 IDQ1N2VjNTgzNzcuLjA4YTI2ZmJhNWYgMTAwNjQ0CitpbmRleCA1ODBhOGQ2YjU0Li5jMjdkMjI5 ZjZkIDEwMDY0NAogLS0tIGEvbGliYXZjb2RlYy9NYWtlZmlsZQogKysrIGIvbGliYXZjb2RlYy9N YWtlZmlsZQotQEAgLTEwNzUsNiArMTA3NSw3IEBAIE9CSlMtJChDT05GSUdfTElCTVAzTEFNRV9F TkNPREVSKSAgICAgICAgICs9IGxpYm1wM2xhbWUubworQEAgLTExMTUsNiArMTExNSw3IEBAIE9C SlMtJChDT05GSUdfTElCTVAzTEFNRV9FTkNPREVSKSAgICAgICAgICs9IGxpYm1wM2xhbWUubwog IE9CSlMtJChDT05GSUdfTElCT1BFTkNPUkVfQU1STkJfREVDT0RFUikgICs9IGxpYm9wZW5jb3Jl LWFtci5vCiAgT0JKUy0kKENPTkZJR19MSUJPUEVOQ09SRV9BTVJOQl9FTkNPREVSKSAgKz0gbGli b3BlbmNvcmUtYW1yLm8KICBPQkpTLSQoQ09ORklHX0xJQk9QRU5DT1JFX0FNUldCX0RFQ09ERVIp ICArPSBsaWJvcGVuY29yZS1hbXIubwogK09CSlMtJChDT05GSUdfTElCT1BFTkgyNjRfRExPUEVO KSAgICAgICAgICs9IGxpYm9wZW5oMjY0X2Rsb3Blbi5vCiAgT0JKUy0kKENPTkZJR19MSUJPUEVO SDI2NF9ERUNPREVSKSAgICAgICAgKz0gbGlib3BlbmgyNjRkZWMubyBsaWJvcGVuaDI2NC5vCiAg T0JKUy0kKENPTkZJR19MSUJPUEVOSDI2NF9FTkNPREVSKSAgICAgICAgKz0gbGlib3BlbmgyNjRl bmMubyBsaWJvcGVuaDI2NC5vCi0gT0JKUy0kKENPTkZJR19MSUJPUEVOSlBFR19ERUNPREVSKSAg ICAgICAgKz0gbGlib3BlbmpwZWdkZWMubworIE9CSlMtJChDT05GSUdfTElCT1BFTkpQRUdfRU5D T0RFUikgICAgICAgICs9IGxpYm9wZW5qcGVnZW5jLm8KIGRpZmYgLS1naXQgYS9saWJhdmNvZGVj L2xpYm9wZW5oMjY0LmMgYi9saWJhdmNvZGVjL2xpYm9wZW5oMjY0LmMKIGluZGV4IGM4MGM4NWVh OGIuLjEyOGMzZDk4NDYgMTAwNjQ0CiAtLS0gYS9saWJhdmNvZGVjL2xpYm9wZW5oMjY0LmMKQEAg LTI5OSw3ICsyOTksNyBAQCBpbmRleCAwMDAwMDAwMDAwLi5kN2Q4YmI3Y2FkCiArCiArI2VuZGlm IC8qIEhBVkVfTElCT1BFTkgyNjRfRExPUEVOX0ggKi8KIGRpZmYgLS1naXQgYS9saWJhdmNvZGVj L2xpYm9wZW5oMjY0ZGVjLmMgYi9saWJhdmNvZGVjL2xpYm9wZW5oMjY0ZGVjLmMKLWluZGV4IDdl MTRkNGRkN2QuLmE4MDU1OTg0NDYgMTAwNjQ0CitpbmRleCBiNmE5YmJhMmRjLi5lMDQyMTg5MTYx IDEwMDY0NAogLS0tIGEvbGliYXZjb2RlYy9saWJvcGVuaDI2NGRlYy5jCiArKysgYi9saWJhdmNv ZGVjL2xpYm9wZW5oMjY0ZGVjLmMKIEBAIC0xOSw4ICsxOSwxMiBAQApAQCAtMzI5LDcgKzMyOSw3 IEBAIGluZGV4IDdlMTRkNGRkN2QuLmE4MDU1OTg0NDYgMTAwNjQ0CiAgICAgICAgICBhdl9sb2co YXZjdHgsIEFWX0xPR19FUlJPUiwgIlVuYWJsZSB0byBjcmVhdGUgZGVjb2RlclxuIik7CiAgICAg ICAgICByZXR1cm4gQVZFUlJPUl9VTktOT1dOOwogZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbGli b3BlbmgyNjRlbmMuYyBiL2xpYmF2Y29kZWMvbGlib3BlbmgyNjRlbmMuYwotaW5kZXggNTI1Nzkw NjU2Ny4uODA0ODFmM2QwYSAxMDA2NDQKK2luZGV4IDZmMjMxZDIyYjIuLjNmMGU5OTBkODAgMTAw NjQ0CiAtLS0gYS9saWJhdmNvZGVjL2xpYm9wZW5oMjY0ZW5jLmMKICsrKyBiL2xpYmF2Y29kZWMv bGlib3BlbmgyNjRlbmMuYwogQEAgLTE5LDggKzE5LDEyIEBACkBAIC0zNTksNSArMzU5LDUgQEAg aW5kZXggNTI1NzkwNjU2Ny4uODA0ODFmM2QwYSAxMDA2NDQKICAgICAgICAgIGF2X2xvZyhhdmN0 eCwgQVZfTE9HX0VSUk9SLCAiVW5hYmxlIHRvIGNyZWF0ZSBlbmNvZGVyXG4iKTsKICAgICAgICAg IHJldHVybiBBVkVSUk9SX1VOS05PV047CiAtLSAKLTIuMzYuMQorMi40My4wCiAKCmRpZmYgLS1n aXQgYS9mZm1wZWctZ2UtYXYxLXZhYXBpLWVuY29kZS1zdXBwb3J0LnBhdGNoIGIvZmZtcGVnLWdl LWF2MS12YWFwaS1lbmNvZGUtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggNmFlODI1OC4uMDAwMDAwMAotLS0gYS9mZm1wZWctZ2UtYXYxLXZhYXBpLWVuY29kZS1z dXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzk4NCArMCwwIEBACi1Gcm9tIDdjMmVh NDUwNTNiN2EzZDQxOTNiYjBhYmI5YzBmM2IwY2RiZWVjN2EgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi1Gcm9tOiBHbG9yaW91c0VnZ3JvbGwgPGdsb3Jpb3VzZWdncm9sbEBnbWFpbC5jb20+Ci1E YXRlOiBUaHUsIDkgTm92IDIwMjMgMTc6NTE6MTkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gYmFj a3BvcnQgYXYxIGVuY29kZSBzdXBwb3J0Ci0KLUFkYXB0ZWQgZnJvbSBodHRwczovL3BhdGNod29y ay5mZm1wZWcub3JnL3Byb2plY3QvZmZtcGVnL2xpc3QvP3Nlcmllcz05NTk0Ci0KLS0tLQotIGNv bmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCi0gZG9jL2VuY29kZXJz LnRleGkgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsKLSBsaWJhdmNvZGVjL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgfCAgIDIgKwotIGxpYmF2Y29kZWMvYWxsY29kZWNzLmMgICAgICAgICAg ICAgICB8ICAgMSArCi0gbGliYXZjb2RlYy9hdjEuaCAgICAgICAgICAgICAgICAgICAgIHwgICA3 ICsKLSBsaWJhdmNvZGVjL2F2MV9sZXZlbHMuYyAgICAgICAgICAgICAgfCAgOTIgKysrCi0gbGli YXZjb2RlYy9hdjFfbGV2ZWxzLmggICAgICAgICAgICAgIHwgIDU4ICsrCi0gbGliYXZjb2RlYy9j YnMuYyAgICAgICAgICAgICAgICAgICAgIHwgMTU1ICsrKy0tCi0gbGliYXZjb2RlYy9jYnMuaCAg ICAgICAgICAgICAgICAgICAgIHwgIDg4ICsrLQotIGxpYmF2Y29kZWMvY2JzX2F2MS5jICAgICAg ICAgICAgICAgICB8IDI2MiArKystLS0tLQotIGxpYmF2Y29kZWMvY2JzX2F2MS5oICAgICAgICAg ICAgICAgICB8ICAgMSArCi0gbGliYXZjb2RlYy9jYnNfYXYxX3N5bnRheF90ZW1wbGF0ZS5jIHwg ICA0ICstCi0gbGliYXZjb2RlYy9jYnNfYnNmLmMgICAgICAgICAgICAgICAgIHwgICA1ICsKLSBs aWJhdmNvZGVjL2Nic19oMjY0NS5jICAgICAgICAgICAgICAgfCAxNDkgKystLS0KLSBsaWJhdmNv ZGVjL2Nic19pbnRlcm5hbC5oICAgICAgICAgICAgfCAgOTYgKystCi0gbGliYXZjb2RlYy9jYnNf bXBlZzIuYyAgICAgICAgICAgICAgIHwgIDE1ICstCi0gbGliYXZjb2RlYy9jYnNfdnA5LmMgICAg ICAgICAgICAgICAgIHwgMTIyICsrLS0KLSBsaWJhdmNvZGVjL2V4dHJhY3RfZXh0cmFkYXRhX2Jz Zi5jICAgfCAgIDcgKy0KLSBsaWJhdmNvZGVjL3RyYWNlX2hlYWRlcnNfYnNmLmMgICAgICAgfCAg IDIgKwotIGxpYmF2Y29kZWMvdmFhcGlfZW5jb2RlLmMgICAgICAgICAgICB8IDM3MCArKysrKysr Ky0tLQotIGxpYmF2Y29kZWMvdmFhcGlfZW5jb2RlLmggICAgICAgICAgICB8ICAzOSArLQotIGxp YmF2Y29kZWMvdmFhcGlfZW5jb2RlX2F2MS5jICAgICAgICB8IDk0OSArKysrKysrKysrKysrKysr KysrKysrKysrKysKLSBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY0LmMgICAgICAgfCAgOTQg Ky0tCi0gbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NS5jICAgICAgIHwgIDc2ICsrLQotIGxp YmF2Y29kZWMvdmFhcGlfZW5jb2RlX21wZWcyLmMgICAgICB8ICAgNiArLQotIGxpYmF2Y29kZWMv dmFhcGlfZW5jb2RlX3ZwOC5jICAgICAgICB8ICAgNiArLQotIGxpYmF2Y29kZWMvdmFhcGlfZW5j b2RlX3ZwOS5jICAgICAgICB8ICAyNiArLQotIDI3IGZpbGVzIGNoYW5nZWQsIDIwNTQgaW5zZXJ0 aW9ucygrKSwgNTk1IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVj L2F2MV9sZXZlbHMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2F2MV9sZXZlbHMu aAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9hdjEuYwotCi1k aWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBiNjYxNmYwLi5mNWE5MWI2 IDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC0zMjU5LDYgKzMy NTksOCBAQCBhdjFfcXN2X2RlY29kZXJfc2VsZWN0PSJxc3ZkZWMiCi0gYXYxX3Fzdl9lbmNvZGVy X3NlbGVjdD0icXN2ZW5jIgotIGF2MV9xc3ZfZW5jb2Rlcl9kZXBzPSJsaWJ2cGwiCi0gYXYxX2Ft Zl9lbmNvZGVyX2RlcHM9ImFtZiIKLSthdjFfdmFhcGlfZW5jb2Rlcl9kZXBzPSJWQUVuY1BpY3R1 cmVQYXJhbWV0ZXJCdWZmZXJBVjEiCi0rYXYxX3ZhYXBpX2VuY29kZXJfc2VsZWN0PSJjYnNfYXYx IHZhYXBpX2VuY29kZSIKLSAKLSAjIHBhcnNlcnMKLSBhYWNfcGFyc2VyX3NlbGVjdD0iYWR0c19o ZWFkZXIgbXBlZzRhdWRpbyIKLUBAIC02OTczLDYgKzY5NzUsNyBAQCBpZiBlbmFibGVkIHZhYXBp OyB0aGVuCi0gICAgIGNoZWNrX3R5cGUgInZhL3ZhLmggdmEvdmFfZW5jX2pwZWcuaCIgIlZBRW5j UGljdHVyZVBhcmFtZXRlckJ1ZmZlckpQRUciCi0gICAgIGNoZWNrX3R5cGUgInZhL3ZhLmggdmEv dmFfZW5jX3ZwOC5oIiAgIlZBRW5jUGljdHVyZVBhcmFtZXRlckJ1ZmZlclZQOCIKLSAgICAgY2hl Y2tfdHlwZSAidmEvdmEuaCB2YS92YV9lbmNfdnA5LmgiICAiVkFFbmNQaWN0dXJlUGFyYW1ldGVy QnVmZmVyVlA5IgotKyAgICBjaGVja190eXBlICJ2YS92YS5oIHZhL3ZhX2VuY19hdjEuaCIgICJW QUVuY1BpY3R1cmVQYXJhbWV0ZXJCdWZmZXJBVjEiCi0gZmkKLSAKLSBpZiBlbmFibGVkX2FsbCBv cGVuY2wgbGliZHJtIDsgdGhlbgotZGlmZiAtLWdpdCBhL2RvYy9lbmNvZGVycy50ZXhpIGIvZG9j L2VuY29kZXJzLnRleGkKLWluZGV4IGIwMjczN2IuLjk5NGUyN2YgMTAwNjQ0Ci0tLS0gYS9kb2Mv ZW5jb2RlcnMudGV4aQotKysrIGIvZG9jL2VuY29kZXJzLnRleGkKLUBAIC0zOTY1LDYgKzM5NjUs MjAgQEAgQXZlcmFnZSB2YXJpYWJsZSBiaXRyYXRlLgotIEVhY2ggZW5jb2RlciBhbHNvIGhhcyBp dHMgb3duIHNwZWNpZmljIG9wdGlvbnM6Ci0gQHRhYmxlIEBvcHRpb24KLSAKLStAaXRlbSBhdjFf dmFhcGkKLStAb3B0aW9ue3Byb2ZpbGV9IHNldHMgdGhlIHZhbHVlIG9mIEBlbXBoe3NlcV9wcm9m aWxlfS4KLStAb3B0aW9ue3RpZXJ9IHNldHMgdGhlIHZhbHVlIG9mIEBlbXBoe3NlcV90aWVyfS4K LStAb3B0aW9ue2xldmVsfSBzZXRzIHRoZSB2YWx1ZSBvZiBAZW1waHtzZXFfbGV2ZWxfaWR4fS4K LSsKLStAdGFibGUgQG9wdGlvbgotK0BpdGVtIHRpbGVzCi0rU2V0IHRoZSBudW1iZXIgb2YgdGls ZXMgdG8gZW5jb2RlIHRoZSBpbnB1dCB2aWRlbyB3aXRoLCBhcyBjb2x1bW5zIHggcm93cy4KLSso ZGVmYXVsdCBpcyBhdXRvLCB3aGljaCBtZWFucyB1c2UgbWluaW1hbCB0aWxlIGNvbHVtbi9yb3cg bnVtYmVyKS4KLStAaXRlbSB0aWxlX2dyb3VwcwotK1NldCB0aWxlIGdyb3VwcyBudW1iZXIuIEFs bCB0aGUgdGlsZXMgd2lsbCBiZSBkaXN0cmlidXRlZCBhcyBldmVubHkgYXMgcG9zc2libGUgdG8K LStlYWNoIHRpbGUgZ3JvdXAuIChkZWZhdWx0IGlzIDEpLgotK0BlbmQgdGFibGUKLSsKLSBAaXRl bSBoMjY0X3ZhYXBpCi0gQG9wdGlvbntwcm9maWxlfSBzZXRzIHRoZSB2YWx1ZSBvZiBAZW1waHtw cm9maWxlX2lkY30gYW5kIHRoZSBAZW1waHtjb25zdHJhaW50X3NldCpfZmxhZ31zLgotIEBvcHRp b257bGV2ZWx9IHNldHMgdGhlIHZhbHVlIG9mIEBlbXBoe2xldmVsX2lkY30uCi1kaWZmIC0tZ2l0 IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKLWluZGV4IDM4OTI1 M2YuLjVmNjIwZTYgMTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCi0rKysgYi9saWJh dmNvZGVjL01ha2VmaWxlCi1AQCAtMjU1LDYgKzI1NSw3IEBAIE9CSlMtJChDT05GSUdfQVYxX0NV VklEX0RFQ09ERVIpICAgICAgICs9IGN1dmlkZGVjLm8KLSBPQkpTLSQoQ09ORklHX0FWMV9NRURJ QUNPREVDX0RFQ09ERVIpICArPSBtZWRpYWNvZGVjZGVjLm8KLSBPQkpTLSQoQ09ORklHX0FWMV9O VkVOQ19FTkNPREVSKSAgICAgICArPSBudmVuY19hdjEubyBudmVuYy5vCi0gT0JKUy0kKENPTkZJ R19BVjFfUVNWX0VOQ09ERVIpICAgICAgICAgKz0gcXN2ZW5jX2F2MS5vCi0rT0JKUy0kKENPTkZJ R19BVjFfVkFBUElfRU5DT0RFUikgICAgICAgKz0gdmFhcGlfZW5jb2RlX2F2MS5vIGF2MV9sZXZl bHMubwotIE9CSlMtJChDT05GSUdfQVZSTl9ERUNPREVSKSAgICAgICAgICAgICs9IGF2cm5kZWMu bwotIE9CSlMtJChDT05GSUdfQVZSUF9ERUNPREVSKSAgICAgICAgICAgICs9IHIyMTBkZWMubwot IE9CSlMtJChDT05GSUdfQVZSUF9FTkNPREVSKSAgICAgICAgICAgICs9IHIyMTBlbmMubwotQEAg LTEyOTgsNiArMTI5OSw3IEBAIFRFU1RQUk9HUyA9IGF2Y29kZWMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICBqcGVnMjAw MGR3dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICAgICAgbWF0aG9wcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gCi0rVEVTVFBST0dTLSQoQ09ORklHX0FWMV9WQUFQSV9FTkNPREVS KSAgICAgKz0gYXYxX2xldmVscwotIFRFU1RQUk9HUy0kKENPTkZJR19DQUJBQykgICAgICAgICAg ICAgICAgICs9IGNhYmFjCi0gVEVTVFBST0dTLSQoQ09ORklHX0RDVCkgICAgICAgICAgICAgICAg ICAgKz0gYXZmZnQKLSBURVNUUFJPR1MtJChDT05GSUdfRkZUKSAgICAgICAgICAgICAgICAgICAr PSBmZnQgZmZ0LWZpeGVkMzIKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5jIGIv bGliYXZjb2RlYy9hbGxjb2RlY3MuYwotaW5kZXggZTU5M2FkMS4uNDcwNmZjMyAxMDA2NDQKLS0t LSBhL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKLSsrKyBiL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMK LUBAIC04MzgsNiArODM4LDcgQEAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfYXYxX252ZW5jX2Vu Y29kZXI7Ci0gZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfYXYxX3Fzdl9kZWNvZGVyOwotIGV4dGVy biBjb25zdCBGRkNvZGVjIGZmX2F2MV9xc3ZfZW5jb2RlcjsKLSBleHRlcm4gY29uc3QgRkZDb2Rl YyBmZl9hdjFfYW1mX2VuY29kZXI7Ci0rZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfYXYxX3ZhYXBp X2VuY29kZXI7Ci0gZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlib3BlbmgyNjRfZW5jb2RlcjsK LSBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJvcGVuaDI2NF9kZWNvZGVyOwotIGV4dGVybiBj b25zdCBGRkNvZGVjIGZmX2gyNjRfYW1mX2VuY29kZXI7Ci1kaWZmIC0tZ2l0IGEvbGliYXZjb2Rl Yy9hdjEuaCBiL2xpYmF2Y29kZWMvYXYxLmgKLWluZGV4IDM4NGY3Y2QuLjg3MDRiYzQgMTAwNjQ0 Ci0tLS0gYS9saWJhdmNvZGVjL2F2MS5oCi0rKysgYi9saWJhdmNvZGVjL2F2MS5oCi1AQCAtMTc1 LDYgKzE3NSwxMyBAQCBlbnVtIHsKLSAgICAgQVYxX1JFU1RPUkVfU1dJVENIQUJMRSA9IDMsCi0g fTsKLSAKLSsvLyBUWCBtb2RlIChzZWN0aW9uIDYuOC4yMSkKLStlbnVtIHsKLSsgICAgQVYxX09O TFlfNFg0ICAgICAgICA9IDAsCi0rICAgIEFWMV9UWF9NT0RFX0xBUkdFU1QgPSAxLAotKyAgICBB VjFfVFhfTU9ERV9TRUxFQ1QgID0gMiwKLSt9OwotKwotIC8vIFNlcXVlbmNlIEhlYWRlcnMgYXJl IGFjdHVhbGx5IHVuYm91bmRlZCBiZWNhdXNlIG9uZSBjYW4gdXNlCi0gLy8gYW4gYXJiaXRyYXJ5 IG51bWJlciBvZiBsZWFkaW5nIHplcm9lcyB3aGVuIGVuY29kaW5nIHZpYSB1dmxjLgotIC8vIFRo ZSBmb2xsb3dpbmcgZXN0aW1hdGUgaXMgYmFzZWQgYXJvdW5kIHVzaW5nIHRoZSBsb3dlc3QgbnVt YmVyCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hdjFfbGV2ZWxzLmMgYi9saWJhdmNvZGVjL2F2 MV9sZXZlbHMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE5YjZlZTEK LS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYmF2Y29kZWMvYXYxX2xldmVscy5jCi1AQCAtMCwwICsx LDkyIEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMjMgSW50ZWwgQ29ycG9yYXRpb24KLSsg KgotKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KLSsgKgotKyAqIEZGbXBlZyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICog TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyCi0rICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0r ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgot KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotKyAqLwotKwot KyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsjaW5jbHVkZSAibGliYXZ1dGlsL21hY3Jvcy5oIgotKyNp bmNsdWRlICJhdjFfbGV2ZWxzLmgiCi0rCi0rLyoqIGlnbm9yZSBlbnRyaWVzIHdoaWNoIG5hbWVk IGluIHNwZWMgYnV0IG5vIGRldGFpbHMuIExpa2UgbGV2ZWwgMi4yIGFuZCA3LjAuICovCi0rc3Rh dGljIGNvbnN0IEFWMUxldmVsRGVzY3JpcHRvciBhdjFfbGV2ZWxzW10gPSB7Ci0rICAgIC8vIE5h bWUgICAgICAgICAgICAgICAgICAgICAgTWF4VlNpemUgICAgICAgICAgICAgICAgICAgICAgICAg ICBNYWluTWJwcyAgICAgICAgICAgICAgTWF4VGlsZXMKLSsgICAgLy8gfCAgbGV2ZWxfaWR4ICAg ICAgICAgICAgICAgICB8IE1heERpc3BsYXlSYXRlICAgICAgICAgICAgICAgICAgICB8IEhpZ2hN YnBzICAgICAgICAgfCBNYXhUaWxlQ29scwotKyAgICAvLyB8ICAgICAgfCAgIE1heFBpY1NpemUg ICAgICAgIHwgICAgICAgfCAgICAgTWF4RGVjb2RlUmF0ZSAgICAgICAgIHwgICAgfCAgIE1haW5D UiAgICB8ICAgfAotKyAgICAvLyB8ICAgICAgfCAgICAgfCAgICBNYXhIU2l6ZSAgIHwgICAgICAg fCAgICAgICAgICAgfCBNYXhIZWFkZXJSYXRlIHwgICAgfCAgICAgfCBIaWdoQ1J8ICAgfAotKyAg ICAvLyB8ICAgICAgfCAgICAgfCAgICAgICAgfCAgICAgIHwgICAgICAgfCAgICAgICAgICAgfCAg ICAgICB8ICAgICAgIHwgICAgfCAgICAgfCAgfCAgICB8ICAgfAotKyAgICB7ICIyLjAiLCAgMCwg ICAxNDc0NTYsICAyMDQ4LCAxMTUyLCAgIDQ0MjM2ODAsICAgICA1NTI5NjAwLCAxNTAsICAgMS41 LCAgICAgMCwgMiwgMCwgICA4LCAgNCB9LAotKyAgICB7ICIyLjEiLCAgMSwgICAyNzg3ODQsICAy ODE2LCAxNTg0LCAgIDgzNjM1MjAsICAgIDEwNDU0NDAwLCAxNTAsICAgMy4wLCAgICAgMCwgMiwg MCwgICA4LCAgNCB9LAotKyAgICB7ICIzLjAiLCAgNCwgICA2NjU4NTYsICA0MzUyLCAyNDQ4LCAg MTk5NzU2ODAsICAgIDI0OTY5NjAwLCAxNTAsICAgNi4wLCAgICAgMCwgMiwgMCwgIDE2LCAgNiB9 LAotKyAgICB7ICIzLjEiLCAgNSwgIDEwNjUwMjQsICA1NTA0LCAzMDk2LCAgMzE5NTA3MjAsICAg IDM5OTM4NDAwLCAxNTAsICAxMC4wLCAgICAgMCwgMiwgMCwgIDE2LCAgNiB9LAotKyAgICB7ICI0 LjAiLCAgOCwgIDIzNTkyOTYsICA2MTQ0LCAzNDU2LCAgNzA3Nzg4ODAsICAgIDc3ODU2NzY4LCAz MDAsICAxMi4wLCAgMzAuMCwgNCwgNCwgIDMyLCAgOCB9LAotKyAgICB7ICI0LjEiLCAgOSwgIDIz NTkyOTYsICA2MTQ0LCAzNDU2LCAgMTQxNTU3NzYwLCAgMTU1NzEzNTM2LCAzMDAsICAyMC4wLCAg NTAuMCwgNCwgNCwgIDMyLCAgOCB9LAotKyAgICB7ICI1LjAiLCAxMiwgIDg5MTI4OTYsICA4MTky LCA0MzUyLCAgMjY3Mzg2ODgwLCAgMjczNzE1MjAwLCAzMDAsICAzMC4wLCAxMDAuMCwgNiwgNCwg IDY0LCAgOCB9LAotKyAgICB7ICI1LjEiLCAxMywgIDg5MTI4OTYsICA4MTkyLCA0MzUyLCAgNTM0 NzczNzYwLCAgNTQ3NDMwNDAwLCAzMDAsICA0MC4wLCAxNjAuMCwgOCwgNCwgIDY0LCAgOCB9LAot KyAgICB7ICI1LjIiLCAxNCwgIDg5MTI4OTYsICA4MTkyLCA0MzUyLCAxMDY5NTQ3NTIwLCAxMDk0 ODYwODAwLCAzMDAsICA2MC4wLCAyNDAuMCwgOCwgNCwgIDY0LCAgOCB9LAotKyAgICB7ICI1LjMi LCAxNSwgIDg5MTI4OTYsICA4MTkyLCA0MzUyLCAxMDY5NTQ3NTIwLCAxMTc2NTAyMjcyLCAzMDAs ICA2MC4wLCAyNDAuMCwgOCwgNCwgIDY0LCAgOCB9LAotKyAgICB7ICI2LjAiLCAxNiwgMzU2NTE1 ODQsIDE2Mzg0LCA4NzA0LCAxMDY5NTQ3NTIwLCAxMTc2NTAyMjcyLCAzMDAsICA2MC4wLCAyNDAu MCwgOCwgNCwgMTI4LCAxNiB9LAotKyAgICB7ICI2LjEiLCAxNywgMzU2NTE1ODQsIDE2Mzg0LCA4 NzA0LCAyMTM5MDk1MDQwLCAyMTg5NzIxNjAwLCAzMDAsIDEwMC4wLCA0ODAuMCwgOCwgNCwgMTI4 LCAxNiB9LAotKyAgICB7ICI2LjIiLCAxOCwgMzU2NTE1ODQsIDE2Mzg0LCA4NzA0LCA0Mjc4MTkw MDgwLCA0Mzc5NDQzMjAwLCAzMDAsIDE2MC4wLCA4MDAuMCwgOCwgNCwgMTI4LCAxNiB9LAotKyAg ICB7ICI2LjMiLCAxOSwgMzU2NTE1ODQsIDE2Mzg0LCA4NzA0LCA0Mjc4MTkwMDgwLCA0NzA2MDA5 MDg4LCAzMDAsIDE2MC4wLCA4MDAuMCwgOCwgNCwgMTI4LCAxNiB9LAotK307Ci0rCi0rY29uc3Qg QVYxTGV2ZWxEZXNjcmlwdG9yICpmZl9hdjFfZ3Vlc3NfbGV2ZWwoaW50NjRfdCBiaXRyYXRlLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aWVyLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aWxl cywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGls ZV9jb2xzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs b2F0IGZwcykKLSt7Ci0rICAgIGludCBwaWNfc2l6ZTsKLSsgICAgdWludDY0X3QgZGlzcGxheV9y YXRlOwotKyAgICBmbG9hdCBtYXhfYnI7Ci0rCi0rICAgIHBpY19zaXplID0gd2lkdGggKiBoZWln aHQ7Ci0rICAgIGRpc3BsYXlfcmF0ZSA9ICh1aW50NjRfdClwaWNfc2l6ZSAqIGZwczsKLSsKLSsg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhhdjFfbGV2ZWxzKTsgaSsrKSB7 Ci0rICAgICAgICBjb25zdCBBVjFMZXZlbERlc2NyaXB0b3IgKmxldmVsID0gJmF2MV9sZXZlbHNb aV07Ci0rICAgICAgICAvLyBMaW1pdGF0aW9uOiBkZWNvZGUgcmF0ZSwgaGVhZGVyIHJhdGUsIGNv bXByZXNzIHJhdGUsIGV0Yy4gYXJlIG5vdCBjb25zaWRlcmVkLgotKyAgICAgICAgaWYgKHBpY19z aXplID4gbGV2ZWwtPm1heF9waWNfc2l6ZSkKLSsgICAgICAgICAgICBjb250aW51ZTsKLSsgICAg ICAgIGlmICh3aWR0aCA+IGxldmVsLT5tYXhfaF9zaXplKQotKyAgICAgICAgICAgIGNvbnRpbnVl OwotKyAgICAgICAgaWYgKGhlaWdodCA+IGxldmVsLT5tYXhfdl9zaXplKQotKyAgICAgICAgICAg IGNvbnRpbnVlOwotKyAgICAgICAgaWYgKGRpc3BsYXlfcmF0ZSA+IGxldmVsLT5tYXhfZGlzcGxh eV9yYXRlKQotKyAgICAgICAgICAgIGNvbnRpbnVlOwotKwotKyAgICAgICAgaWYgKHRpZXIpCi0r ICAgICAgICAgICAgbWF4X2JyID0gbGV2ZWwtPmhpZ2hfbWJwczsKLSsgICAgICAgIGVsc2UKLSsg ICAgICAgICAgICBtYXhfYnIgPSBsZXZlbC0+bWFpbl9tYnBzOwotKyAgICAgICAgaWYgKCFtYXhf YnIpCi0rICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICBpZiAoYml0cmF0ZSA+IChpbnQ2 NF90KSgxMDAwMDAwLjAgKiBtYXhfYnIpKQotKyAgICAgICAgICAgIGNvbnRpbnVlOwotKwotKyAg ICAgICAgaWYgKHRpbGVzID4gbGV2ZWwtPm1heF90aWxlcykKLSsgICAgICAgICAgICBjb250aW51 ZTsKLSsgICAgICAgIGlmICh0aWxlX2NvbHMgPiBsZXZlbC0+bWF4X3RpbGVfY29scykKLSsgICAg ICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIHJldHVybiBsZXZlbDsKLSsgICAgfQotKwotKyAg ICByZXR1cm4gTlVMTDsKLSt9Ci1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hdjFfbGV2ZWxzLmgg Yi9saWJhdmNvZGVjL2F2MV9sZXZlbHMuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLjE2NGNiODcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYmF2Y29kZWMvYXYxX2xldmVs cy5oCi1AQCAtMCwwICsxLDU4IEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMjMgSW50ZWwg Q29ycG9yYXRpb24KLSsgKgotKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KLSsgKgot KyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCi0rICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyCi0rICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBGRm1wZWcgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VCi0rICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVn OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICogRm91bmRhdGlvbiwgSW5j LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAx IFVTQQotKyAqLwotKwotKyNpZm5kZWYgQVZDT0RFQ19BVjFfTEVWRUxTX0gKLSsjZGVmaW5lIEFW Q09ERUNfQVYxX0xFVkVMU19ICi0rCi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKwotK3R5cGVkZWYg c3RydWN0IEFWMUxldmVsRGVzY3JpcHRvciB7Ci0rICAgIGNoYXIgICAgIG5hbWVbNF07Ci0rICAg IHVpbnQ4X3QgIGxldmVsX2lkeDsKLSsKLSsgICAgdWludDMyX3QgbWF4X3BpY19zaXplOwotKyAg ICB1aW50MzJfdCBtYXhfaF9zaXplOwotKyAgICB1aW50MzJfdCBtYXhfdl9zaXplOwotKyAgICB1 aW50NjRfdCBtYXhfZGlzcGxheV9yYXRlOwotKyAgICB1aW50NjRfdCBtYXhfZGVjb2RlX3JhdGU7 Ci0rCi0rICAgIHVpbnQzMl90IG1heF9oZWFkZXJfcmF0ZTsKLSsgICAgZmxvYXQgICAgbWFpbl9t YnBzOwotKyAgICBmbG9hdCAgICBoaWdoX21icHM7Ci0rICAgIHVpbnQzMl90IG1haW5fY3I7Ci0r ICAgIHVpbnQzMl90IGhpZ2hfY3I7Ci0rICAgIHVpbnQzMl90IG1heF90aWxlczsKLSsgICAgdWlu dDMyX3QgbWF4X3RpbGVfY29sczsKLSt9IEFWMUxldmVsRGVzY3JpcHRvcjsKLSsKLSsvKioKLSsg KiBHdWVzcyB0aGUgbGV2ZWwgb2YgYSBzdHJlYW0gZnJvbSBzb21lIHBhcmFtZXRlcnMuCi0rICoK LSsgKiBVbmtub3duIHBhcmFtZXRlcnMgbWF5IGJlIHplcm8sIGluIHdoaWNoIGNhc2UgdGhleSB3 aWxsIGJlIGlnbm9yZWQuCi0rICovCi0rY29uc3QgQVYxTGV2ZWxEZXNjcmlwdG9yICpmZl9hdjFf Z3Vlc3NfbGV2ZWwoaW50NjRfdCBiaXRyYXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCB0aWVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCB0aWxlX3Jvd3MsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRpbGVfY29scywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBmcHMpOwotKwotKyNlbmRpZiAv KiBBVkNPREVDX0FWMV9MRVZFTFNfSCAqLwotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzLmMg Yi9saWJhdmNvZGVjL2Nicy5jCi1pbmRleCA1MDQxOTdlLi42NGI5YWVlIDEwMDY0NAotLS0tIGEv bGliYXZjb2RlYy9jYnMuYwotKysrIGIvbGliYXZjb2RlYy9jYnMuYwotQEAgLTExMSw4ICsxMTEs OSBAQCBhdl9jb2xkIGludCBmZl9jYnNfaW5pdChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKipjdHhf cHRyLAotIAotICAgICBjdHgtPmRlY29tcG9zZV91bml0X3R5cGVzID0gTlVMTDsKLSAKLS0gICAg Y3R4LT50cmFjZV9lbmFibGUgPSAwOwotLSAgICBjdHgtPnRyYWNlX2xldmVsICA9IEFWX0xPR19U UkFDRTsKLSsgICAgY3R4LT50cmFjZV9lbmFibGUgID0gMDsKLSsgICAgY3R4LT50cmFjZV9sZXZl bCAgID0gQVZfTE9HX1RSQUNFOwotKyAgICBjdHgtPnRyYWNlX2NvbnRleHQgPSBjdHg7Ci0gCi0g ICAgICpjdHhfcHRyID0gY3R4OwotICAgICByZXR1cm4gMDsKLUBAIC00OTAsMTkgKzQ5MSwyNyBA QCB2b2lkIGZmX2Nic190cmFjZV9oZWFkZXIoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsCi0g ICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIGN0eC0+dHJhY2VfbGV2ZWwsICIlc1xuIiwgbmFtZSk7 Ci0gfQotIAotLXZvaWQgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KENvZGVkQml0c3RyZWFt Q29udGV4dCAqY3R4LCBpbnQgcG9zaXRpb24sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqc3RyLCBjb25zdCBpbnQgKnN1YnNjcmlwdHMsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYml0cywgaW50NjRfdCB2YWx1ZSkK LSt2b2lkIGZmX2Nic190cmFjZV9yZWFkX2xvZyh2b2lkICp0cmFjZV9jb250ZXh0LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdldEJpdENvbnRleHQgKmdiYywgaW50IGxlbmd0aCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIsIGNvbnN0IGludCAqc3Vi c2NyaXB0cywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlKQotIHsK LSsgICAgQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHggPSB0cmFjZV9jb250ZXh0OwotICAgICBj aGFyIG5hbWVbMjU2XTsKLSsgICAgY2hhciBiaXRzWzI1Nl07Ci0gICAgIHNpemVfdCBuYW1lX2xl biwgYml0c19sZW47Ci0gICAgIGludCBwYWQsIHN1YnMsIGksIGosIGssIG47Ci0tCi0tICAgIGlm ICghY3R4LT50cmFjZV9lbmFibGUpCi0tICAgICAgICByZXR1cm47Ci0rICAgIGludCBwb3NpdGlv bjsKLSAKLSAgICAgYXZfYXNzZXJ0MCh2YWx1ZSA+PSBJTlRfTUlOICYmIHZhbHVlIDw9IFVJTlQz Ml9NQVgpOwotIAotKyAgICBwb3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdiYyk7Ci0rCi0rICAg IGF2X2Fzc2VydDAobGVuZ3RoIDwgMjU2KTsKLSsgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsg aSsrKQotKyAgICAgICAgYml0c1tpXSA9IGdldF9iaXRzMShnYmMpID8gJzEnIDogJzAnOwotKyAg ICBiaXRzW2xlbmd0aF0gPSAwOwotKwotICAgICBzdWJzID0gc3Vic2NyaXB0cyA/IHN1YnNjcmlw dHNbMF0gOiAwOwotICAgICBuID0gMDsKLSAgICAgZm9yIChpID0gaiA9IDA7IHN0cltpXTspIHsK LUBAIC01MjksNyArNTM4LDcgQEAgdm9pZCBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoQ29k ZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIGludCBwb3NpdGlvbiwKLSAgICAgYXZfYXNzZXJ0MChu ID09IHN1YnMpOwotIAotICAgICBuYW1lX2xlbiA9IHN0cmxlbihuYW1lKTsKLS0gICAgYml0c19s ZW4gPSBzdHJsZW4oYml0cyk7Ci0rICAgIGJpdHNfbGVuID0gbGVuZ3RoOwotIAotICAgICBpZiAo bmFtZV9sZW4gKyBiaXRzX2xlbiA+IDYwKQotICAgICAgICAgcGFkID0gYml0c19sZW4gKyAyOwot QEAgLTU0MCwxNCArNTQ5LDQ4IEBAIHZvaWQgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KENv ZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBpbnQgcG9zaXRpb24sCi0gICAgICAgICAgICBwb3Np dGlvbiwgbmFtZSwgcGFkLCBiaXRzLCB2YWx1ZSk7Ci0gfQotIAotLWludCBmZl9jYnNfcmVhZF91 bnNpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAot LSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGNvbnN0IGNoYXIgKm5hbWUsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywgdWludDMyX3Qg KndyaXRlX3RvLAotLSAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9taW4s IHVpbnQzMl90IHJhbmdlX21heCkKLSt2b2lkIGZmX2Nic190cmFjZV93cml0ZV9sb2codm9pZCAq dHJhY2VfY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHV0Qml0Q29udGV4 dCAqcGJjLCBpbnQgbGVuZ3RoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICpzdHIsIGNvbnN0IGludCAqc3Vic2NyaXB0cywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50NjRfdCB2YWx1ZSkKLSB7Ci0tICAgIHVpbnQzMl90IHZhbHVlOwotKyAgICBDb2Rl ZEJpdHN0cmVhbUNvbnRleHQgKmN0eCA9IHRyYWNlX2NvbnRleHQ7Ci0rCi0rICAgIC8vIEVuc3Vy ZSB0aGF0IHRoZSBzeW50YXggZWxlbWVudCBpcyB3cml0dGVuIHRvIHRoZSBvdXRwdXQgYnVmZmVy LAotKyAgICAvLyBtYWtlIGEgR2V0Qml0Q29udGV4dCBwb2ludGVkIGF0IHRoZSBzdGFydCBwb3Np dGlvbiwgdGhlbiBjYWxsIHRoZQotKyAgICAvLyByZWFkIGxvZyBmdW5jdGlvbiB3aGljaCBjYW4g cmVhZCB0aGUgYml0cyBiYWNrIHRvIGxvZyB0aGVtLgotKwotKyAgICBHZXRCaXRDb250ZXh0IGdi YzsKLSAgICAgaW50IHBvc2l0aW9uOwotIAotKyAgICBpZiAobGVuZ3RoID4gMCkgewotKyAgICAg ICAgUHV0Qml0Q29udGV4dCBmbHVzaDsKLSsgICAgICAgIGZsdXNoID0gKnBiYzsKLSsgICAgICAg IGZsdXNoX3B1dF9iaXRzKCZmbHVzaCk7Ci0rICAgIH0KLSsKLSsgICAgcG9zaXRpb24gPSBwdXRf Yml0c19jb3VudChwYmMpOwotKyAgICBhdl9hc3NlcnQwKHBvc2l0aW9uID49IGxlbmd0aCk7Ci0r Ci0rICAgIGluaXRfZ2V0X2JpdHMoJmdiYywgcGJjLT5idWYsIHBvc2l0aW9uKTsKLSsKLSsgICAg c2tpcF9iaXRzX2xvbmcoJmdiYywgcG9zaXRpb24gLSBsZW5ndGgpOwotKwotKyAgICBmZl9jYnNf dHJhY2VfcmVhZF9sb2coY3R4LCAmZ2JjLCBsZW5ndGgsIHN0ciwgc3Vic2NyaXB0cywgdmFsdWUp OwotK30KLSsKLStzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgY2JzX3JlYWRfdW5zaWduZWQo Q29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdldEJpdENvbnRleHQgKmdiYywKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBjb25zdCBjaGFyICpuYW1l LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp bnQgKnN1YnNjcmlwdHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90ICp3cml0ZV90bywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmFuZ2VfbWluLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9tYXgpCi0rewotKyAg ICB1aW50MzJfdCB2YWx1ZTsKLSsKLSsgICAgQ0JTX1RSQUNFX1JFQURfU1RBUlQoKTsKLSsKLSAg ICAgYXZfYXNzZXJ0MCh3aWR0aCA+IDAgJiYgd2lkdGggPD0gMzIpOwotIAotICAgICBpZiAoZ2V0 X2JpdHNfbGVmdChnYmMpIDwgd2lkdGgpIHsKLUBAIC01NTYsMjEgKzU5OSw5IEBAIGludCBmZl9j YnNfcmVhZF91bnNpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4 dCAqZ2JjLAotICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgIH0KLSAK LS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQotLSAgICAgICAgcG9zaXRpb24gPSBnZXRfYml0 c19jb3VudChnYmMpOwotLQotICAgICB2YWx1ZSA9IGdldF9iaXRzX2xvbmcoZ2JjLCB3aWR0aCk7 Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgewotLSAgICAgICAgY2hhciBiaXRzWzMz XTsKLS0gICAgICAgIGludCBpOwotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKysp Ci0tICAgICAgICAgICAgYml0c1tpXSA9IHZhbHVlID4+ICh3aWR0aCAtIGkgLSAxKSAmIDEgPyAn MScgOiAnMCc7Ci0tICAgICAgICBiaXRzW2ldID0gMDsKLS0KLS0gICAgICAgIGZmX2Nic190cmFj ZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBzdWJzY3JpcHRzLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMsIHZhbHVlKTsKLS0gICAgfQotKyAg ICBDQlNfVFJBQ0VfUkVBRF9FTkQoKTsKLSAKLSAgICAgaWYgKHZhbHVlIDwgcmFuZ2VfbWluIHx8 IHZhbHVlID4gcmFuZ2VfbWF4KSB7Ci0gICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9M T0dfRVJST1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKLUBAIC01ODMsMTEgKzYxNCwyOSBAQCBpbnQg ZmZfY2JzX3JlYWRfdW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENv bnRleHQgKmdiYywKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotK2ludCBmZl9jYnNfcmVhZF91bnNp Z25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGNvbnN0IGNoYXIgKm5hbWUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywgdWludDMyX3QgKndy aXRlX3RvLAotKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9taW4sIHVp bnQzMl90IHJhbmdlX21heCkKLSt7Ci0rICAgIHJldHVybiBjYnNfcmVhZF91bnNpZ25lZChjdHgs IGdiYywgd2lkdGgsIG5hbWUsIHN1YnNjcmlwdHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3cml0ZV90bywgcmFuZ2VfbWluLCByYW5nZV9tYXgpOwotK30KLSsKLStpbnQgZmZfY2Jz X3JlYWRfc2ltcGxlX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRD b250ZXh0ICpnYmMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgs IGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90ICp3cml0ZV90bykKLSt7Ci0rICAgIHJldHVybiBj YnNfcmVhZF91bnNpZ25lZChjdHgsIGdiYywgd2lkdGgsIG5hbWUsIE5VTEwsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB3cml0ZV90bywgMCwgVUlOVDMyX01BWCk7Ci0rfQotKwotIGlu dCBmZl9jYnNfd3JpdGVfdW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJp dENvbnRleHQgKnBiYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwgY29u c3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vi c2NyaXB0cywgdWludDMyX3QgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCByYW5nZV9taW4sIHVpbnQzMl90IHJhbmdlX21heCkKLSB7Ci0rICAgIENCU19UUkFDRV9X UklURV9TVEFSVCgpOwotKwotICAgICBhdl9hc3NlcnQwKHdpZHRoID4gMCAmJiB3aWR0aCA8PSAz Mik7Ci0gCi0gICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkg ewotQEAgLTYwMCwzMiArNjQ5LDMxIEBAIGludCBmZl9jYnNfd3JpdGVfdW5zaWduZWQoQ29kZWRC aXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKLSAgICAgaWYgKHB1dF9i aXRzX2xlZnQocGJjKSA8IHdpZHRoKQotICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BDKTsK LSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7Ci0tICAgICAgICBjaGFyIGJpdHNbMzNd OwotLSAgICAgICAgaW50IGk7Ci0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykK LS0gICAgICAgICAgICBiaXRzW2ldID0gdmFsdWUgPj4gKHdpZHRoIC0gaSAtIDEpICYgMSA/ICcx JyA6ICcwJzsKLS0gICAgICAgIGJpdHNbaV0gPSAwOwotLQotLSAgICAgICAgZmZfY2JzX3RyYWNl X3N5bnRheF9lbGVtZW50KGN0eCwgcHV0X2JpdHNfY291bnQocGJjKSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCBiaXRzLCB2YWx1ZSk7Ci0t ICAgIH0KLS0KLSAgICAgaWYgKHdpZHRoIDwgMzIpCi0gICAgICAgICBwdXRfYml0cyhwYmMsIHdp ZHRoLCB2YWx1ZSk7Ci0gICAgIGVsc2UKLSAgICAgICAgIHB1dF9iaXRzMzIocGJjLCB2YWx1ZSk7 Ci0gCi0rICAgIENCU19UUkFDRV9XUklURV9FTkQoKTsKLSsKLSAgICAgcmV0dXJuIDA7Ci0gfQot IAotK2ludCBmZl9jYnNfd3JpdGVfc2ltcGxlX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4 dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IHdpZHRoLCBjb25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCB2YWx1ZSkKLSt7Ci0r ICAgIHJldHVybiBmZl9jYnNfd3JpdGVfdW5zaWduZWQoY3R4LCBwYmMsIHdpZHRoLCBuYW1lLCBO VUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCAwLCBNQVhfVUlO VF9CSVRTKHdpZHRoKSk7Ci0rfQotKwotIGludCBmZl9jYnNfcmVhZF9zaWduZWQoQ29kZWRCaXRz dHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKLSAgICAgICAgICAgICAgICAg ICAgICAgIGludCB3aWR0aCwgY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywgaW50MzJfdCAqd3JpdGVfdG8sCi0gICAgICAgICAg ICAgICAgICAgICAgICBpbnQzMl90IHJhbmdlX21pbiwgaW50MzJfdCByYW5nZV9tYXgpCi0gewot ICAgICBpbnQzMl90IHZhbHVlOwotLSAgICBpbnQgcG9zaXRpb247Ci0rCi0rICAgIENCU19UUkFD RV9SRUFEX1NUQVJUKCk7Ci0gCi0gICAgIGF2X2Fzc2VydDAod2lkdGggPiAwICYmIHdpZHRoIDw9 IDMyKTsKLSAKLUBAIC02MzUsMjEgKzY4Myw5IEBAIGludCBmZl9jYnNfcmVhZF9zaWduZWQoQ29k ZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKLSAgICAgICAgIHJl dHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICB9Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNl X2VuYWJsZSkKLS0gICAgICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKLS0KLSAg ICAgdmFsdWUgPSBnZXRfc2JpdHNfbG9uZyhnYmMsIHdpZHRoKTsKLSAKLS0gICAgaWYgKGN0eC0+ dHJhY2VfZW5hYmxlKSB7Ci0tICAgICAgICBjaGFyIGJpdHNbMzNdOwotLSAgICAgICAgaW50IGk7 Ci0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykKLS0gICAgICAgICAgICBiaXRz W2ldID0gdmFsdWUgJiAoMVUgPDwgKHdpZHRoIC0gaSAtIDEpKSA/ICcxJyA6ICcwJzsKLS0gICAg ICAgIGJpdHNbaV0gPSAwOwotLQotLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50 KGN0eCwgcG9zaXRpb24sIG5hbWUsIHN1YnNjcmlwdHMsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYml0cywgdmFsdWUpOwotLSAgICB9Ci0rICAgIENCU19UUkFDRV9SRUFE X0VORCgpOwotIAotICAgICBpZiAodmFsdWUgPCByYW5nZV9taW4gfHwgdmFsdWUgPiByYW5nZV9t YXgpIHsKLSAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91 dCBvZiByYW5nZTogIgotQEAgLTY2Nyw2ICs3MDMsOCBAQCBpbnQgZmZfY2JzX3dyaXRlX3NpZ25l ZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywgaW50MzJfdCB2YWx1ZSwK LSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHJhbmdlX21pbiwgaW50MzJfdCByYW5n ZV9tYXgpCi0gewotKyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQoKTsKLSsKLSAgICAgYXZfYXNz ZXJ0MCh3aWR0aCA+IDAgJiYgd2lkdGggPD0gMzIpOwotIAotICAgICBpZiAodmFsdWUgPCByYW5n ZV9taW4gfHwgdmFsdWUgPiByYW5nZV9tYXgpIHsKLUBAIC02NzksMjIgKzcxNywxMyBAQCBpbnQg ZmZfY2JzX3dyaXRlX3NpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29u dGV4dCAqcGJjLAotICAgICBpZiAocHV0X2JpdHNfbGVmdChwYmMpIDwgd2lkdGgpCi0gICAgICAg ICByZXR1cm4gQVZFUlJPUihFTk9TUEMpOwotIAotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUp IHsKLS0gICAgICAgIGNoYXIgYml0c1szM107Ci0tICAgICAgICBpbnQgaTsKLS0gICAgICAgIGZv ciAoaSA9IDA7IGkgPCB3aWR0aDsgaSsrKQotLSAgICAgICAgICAgIGJpdHNbaV0gPSB2YWx1ZSAm ICgxVSA8PCAod2lkdGggLSBpIC0gMSkpID8gJzEnIDogJzAnOwotLSAgICAgICAgYml0c1tpXSA9 IDA7Ci0tCi0tICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwdXRfYml0 c19jb3VudChwYmMpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUs IHN1YnNjcmlwdHMsIGJpdHMsIHZhbHVlKTsKLS0gICAgfQotLQotICAgICBpZiAod2lkdGggPCAz MikKLSAgICAgICAgIHB1dF9zYml0cyhwYmMsIHdpZHRoLCB2YWx1ZSk7Ci0gICAgIGVsc2UKLSAg ICAgICAgIHB1dF9iaXRzMzIocGJjLCB2YWx1ZSk7Ci0gCi0rICAgIENCU19UUkFDRV9XUklURV9F TkQoKTsKLSsKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv Y2JzLmggYi9saWJhdmNvZGVjL2Nicy5oCi1pbmRleCBlZTIxNjIzLi5mNjUwOWEyIDEwMDY0NAot LS0tIGEvbGliYXZjb2RlYy9jYnMuaAotKysrIGIvbGliYXZjb2RlYy9jYnMuaAotQEAgLTE2Nyw2 ICsxNjcsNTEgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29kZWRCaXRzdHJlYW1GcmFnbWVudCB7Ci0gICAg IENvZGVkQml0c3RyZWFtVW5pdCAqdW5pdHM7Ci0gfSBDb2RlZEJpdHN0cmVhbUZyYWdtZW50Owot IAotKwotK3N0cnVjdCBDb2RlZEJpdHN0cmVhbUNvbnRleHQ7Ci0rc3RydWN0IEdldEJpdENvbnRl eHQ7Ci0rc3RydWN0IFB1dEJpdENvbnRleHQ7Ci0rCi0rLyoqCi0rICogQ2FsbGJhY2sgdHlwZSBm b3IgcmVhZCB0cmFjaW5nLgotKyAqCi0rICogQHBhcmFtIGN0eCAgICAgICAgIFVzZXItc2V0IHRy YWNlIGNvbnRleHQuCi0rICogQHBhcmFtIGdiYyAgICAgICAgIEEgR2V0Qml0Q29udGV4dCBzZXQg YXQgdGhlIHN0YXJ0IG9mIHRoZSBzeW50YXgKLSsgKiAgICAgICAgICAgICAgICAgICAgZWxlbWVu dC4gIFRoaXMgaXMgYSBjb3B5LCB0aGUgY2FsbGVlIGRvZXMgbm90Ci0rICogICAgICAgICAgICAg ICAgICAgIG5lZWQgdG8gcHJlc2VydmUgaXQuCi0rICogQHBhcmFtIGxlbmd0aCAgICAgIExlbmd0 aCBpbiBiaXRzIG9mIHRoZSBzeW50YXggZWxlbWVudC4KLSsgKiBAcGFyYW0gbmFtZSAgICAgICAg U3RyaW5nIG5hbWUgb2YgdGhlIHN5bnRheCBlbGVtZW50cy4KLSsgKiBAcGFyYW0gc3Vic2NyaXB0 cyAgSWYgdGhlIHN5bnRheCBlbGVtZW50IGlzIGFuIGFycmF5LCBhIHBvaW50ZXIgdG8KLSsgKiAg ICAgICAgICAgICAgICAgICAgYW4gYXJyYXkgb2Ygc3Vic2NyaXB0cyBpbnRvIHRoZSBhcnJheS4K LSsgKiBAcGFyYW0gdmFsdWUgICAgICAgUGFyc2VkIHZhbHVlIG9mIHRoZSBzeW50YXggZWxlbWVu dC4KLSsgKi8KLSt0eXBlZGVmIHZvaWQgKCpDQlNUcmFjZVJlYWRDYWxsYmFjaykodm9pZCAqdHJh Y2VfY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IEdldEJpdENvbnRleHQgKmdiYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IHN0YXJ0X3Bvc2l0aW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludDY0X3QgdmFsdWUpOwotKwotKy8qKgotKyAqIENhbGxiYWNrIHR5cGUgZm9y IHdyaXRlIHRyYWNpbmcuCi0rICoKLSsgKiBAcGFyYW0gY3R4ICAgICAgICAgVXNlci1zZXQgdHJh Y2UgY29udGV4dC4KLSsgKiBAcGFyYW0gcGJjICAgICAgICAgQSBQdXRCaXRDb250ZXh0IHNldCBh dCB0aGUgZW5kIG9mIHRoZSBzeW50YXgKLSsgKiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC4g IFRoZSB1c2VyIG11c3Qgbm90IG1vZGlmeSB0aGlzLCBidXQgbWF5Ci0rICogICAgICAgICAgICAg ICAgICAgIGluc3BlY3QgaXQgdG8gZGV0ZXJtaW5lIHN0YXRlLgotKyAqIEBwYXJhbSBsZW5ndGgg ICAgICBMZW5ndGggaW4gYml0cyBvZiB0aGUgc3ludGF4IGVsZW1lbnQuCi0rICogQHBhcmFtIG5h bWUgICAgICAgIFN0cmluZyBuYW1lIG9mIHRoZSBzeW50YXggZWxlbWVudHMuCi0rICogQHBhcmFt IHN1YnNjcmlwdHMgIElmIHRoZSBzeW50YXggZWxlbWVudCBpcyBhbiBhcnJheSwgYSBwb2ludGVy IHRvCi0rICogICAgICAgICAgICAgICAgICAgIGFuIGFycmF5IG9mIHN1YnNjcmlwdHMgaW50byB0 aGUgYXJyYXkuCi0rICogQHBhcmFtIHZhbHVlICAgICAgIFdyaXR0ZW4gdmFsdWUgb2YgdGhlIHN5 bnRheCBlbGVtZW50LgotKyAqLwotK3R5cGVkZWYgdm9pZCAoKkNCU1RyYWNlV3JpdGVDYWxsYmFj aykodm9pZCAqdHJhY2VfY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBQdXRCaXRDb250ZXh0ICpwYmMsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgc3RhcnRfcG9zaXRpb24sCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSk7Ci0rCi0gLyoqCi0gICog Q29udGV4dCBzdHJ1Y3R1cmUgZm9yIGNvZGVkIGJpdHN0cmVhbSBvcGVyYXRpb25zLgotICAqLwot QEAgLTIxMCwxMSArMjU1LDI5IEBAIHR5cGVkZWYgc3RydWN0IENvZGVkQml0c3RyZWFtQ29udGV4 dCB7Ci0gICAgICAqLwotICAgICBpbnQgdHJhY2VfZW5hYmxlOwotICAgICAvKioKLS0gICAgICog TG9nIGxldmVsIHRvIHVzZSBmb3IgdHJhY2Ugb3V0cHV0LgotKyAgICAgKiBMb2cgbGV2ZWwgdG8g dXNlIGZvciBkZWZhdWx0IHRyYWNlIG91dHB1dC4KLSAgICAgICoKLSAgICAgICogRnJvbSBBVl9M T0dfKjsgZGVmYXVsdHMgdG8gQVZfTE9HX1RSQUNFLgotICAgICAgKi8KLSAgICAgaW50IHRyYWNl X2xldmVsOwotKyAgICAvKioKLSsgICAgICogVXNlciBjb250ZXh0IHBvaW50ZXIgdG8gcGFzcyB0 byB0cmFjZSBjYWxsYmFja3MuCi0rICAgICAqLwotKyAgICB2b2lkICp0cmFjZV9jb250ZXh0Owot KyAgICAvKioKLSsgICAgICogQ2FsbGJhY2sgZm9yIHJlYWQgdHJhY2luZy4KLSsgICAgICoKLSsg ICAgICogSWYgdHJhY2luZyBpcyBlbmFibGVkIHRoZW4gdGhpcyBpcyBjYWxsZWQgb25jZSBmb3Ig ZWFjaCBzeW50YXgKLSsgICAgICogZWxlbWVudCBwYXJzZWQuCi0rICAgICAqLwotKyAgICBDQlNU cmFjZVJlYWRDYWxsYmFjayAgdHJhY2VfcmVhZF9jYWxsYmFjazsKLSsgICAgLyoqCi0rICAgICAq IENhbGxiYWNrIGZvciB3cml0ZSB0cmFjaW5nLgotKyAgICAgKgotKyAgICAgKiBJZiB0cmFjaW5n IGlzIGVuYWJsZWQgdGhlbiB0aGlzIGlzIGNhbGxlZCBvbmNlIGZvciBlYWNoIHN5bnRheAotKyAg ICAgKiBlbGVtZW50IHdyaXR0ZW4uCi0rICAgICAqLwotKyAgICBDQlNUcmFjZVdyaXRlQ2FsbGJh Y2sgdHJhY2Vfd3JpdGVfY2FsbGJhY2s7Ci0gCi0gICAgIC8qKgotICAgICAgKiBXcml0ZSBidWZm ZXIuIFVzZWQgYXMgaW50ZXJtZWRpYXRlIGJ1ZmZlciB3aGVuIHdyaXRpbmcgdW5pdHMuCi1AQCAt NDMzLDQgKzQ5NiwyNyBAQCBpbnQgZmZfY2JzX21ha2VfdW5pdF93cml0YWJsZShDb2RlZEJpdHN0 cmVhbUNvbnRleHQgKmN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlZEJp dHN0cmVhbVVuaXQgKnVuaXQpOwotIAotIAotKwotKy8qKgotKyAqIEhlbHBlciBmdW5jdGlvbiBm b3IgcmVhZCB0cmFjaW5nIHdoaWNoIGZvcm1hdHMgdGhlIHN5bnRheCBlbGVtZW50Ci0rICogYW5k IGxvZ3MgdGhlIHJlc3VsdC4KLSsgKgotKyAqIFRyYWNlIGNvbnRleHQgc2hvdWxkIGJlIHNldCB0 byB0aGUgQ29kZWRCaXRzdHJlYW1Db250ZXh0LgotKyAqLwotK3ZvaWQgZmZfY2JzX3RyYWNlX3Jl YWRfbG9nKHZvaWQgKnRyYWNlX2NvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IEdldEJpdENvbnRleHQgKmdiYywgaW50IGxlbmd0aCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICpzdHIsIGNvbnN0IGludCAqc3Vic2NyaXB0cywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlKTsKLSsKLSsvKioKLSsgKiBIZWxw ZXIgZnVuY3Rpb24gZm9yIHdyaXRlIHRyYWNpbmcgd2hpY2ggZm9ybWF0cyB0aGUgc3ludGF4IGVs ZW1lbnQKLSsgKiBhbmQgbG9ncyB0aGUgcmVzdWx0LgotKyAqCi0rICogVHJhY2UgY29udGV4dCBz aG91bGQgYmUgc2V0IHRvIHRoZSBDb2RlZEJpdHN0cmVhbUNvbnRleHQuCi0rICovCi0rdm9pZCBm Zl9jYnNfdHJhY2Vfd3JpdGVfbG9nKHZvaWQgKnRyYWNlX2NvbnRleHQsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBQdXRCaXRDb250ZXh0ICpwYmMsIGludCBsZW5ndGgsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgaW50ICpz dWJzY3JpcHRzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlKTsK LSsKLSAjZW5kaWYgLyogQVZDT0RFQ19DQlNfSCAqLwotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv Y2JzX2F2MS5jIGIvbGliYXZjb2RlYy9jYnNfYXYxLmMKLWluZGV4IDQ1ZTEyODguLjYwOThjOTcg MTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL2Nic19hdjEuYwotKysrIGIvbGliYXZjb2RlYy9jYnNf YXYxLmMKLUBAIC0zMSwxMCArMzEsOCBAQCBzdGF0aWMgaW50IGNic19hdjFfcmVhZF91dmxjKENv ZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9taW4sIHVpbnQzMl90IHJhbmdlX21h eCkKLSB7Ci0gICAgIHVpbnQzMl90IHplcm9lcywgYml0c192YWx1ZSwgdmFsdWU7Ci0tICAgIGlu dCBwb3NpdGlvbjsKLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQotLSAgICAgICAgcG9z aXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOwotKyAgICBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgp OwotIAotICAgICB6ZXJvZXMgPSAwOwotICAgICB3aGlsZSAoMSkgewotQEAgLTUwLDYgKzQ4LDkg QEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRfdXZsYyhDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0 eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAotICAgICB9Ci0gCi0gICAgIGlmICh6ZXJvZXMgPj0gMzIp IHsKLSsgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgc3BlYyBhbGxvd3MgYW4gYXJiaXRyYXJpbHkg bGFyZ2UgbnVtYmVyIG9mCi0rICAgICAgICAvLyB6ZXJvIGJpdHMgZm9sbG93ZWQgYnkgYSBvbmUg Yml0IGluIHRoaXMgY2FzZSwgYnV0IHRoZQotKyAgICAgICAgLy8gbGliYW9tIGltcGxlbWVudGF0 aW9uIGRvZXMgbm90IHN1cHBvcnQgaXQuCi0gICAgICAgICB2YWx1ZSA9IE1BWF9VSU5UX0JJVFMo MzIpOwotICAgICB9IGVsc2UgewotICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IHpl cm9lcykgewotQEAgLTYyLDM2ICs2Myw3IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX3V2bGMo Q29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKLSAgICAgICAg IHZhbHVlID0gYml0c192YWx1ZSArIChVSU5UMzJfQygxKSA8PCB6ZXJvZXMpIC0gMTsKLSAgICAg fQotIAotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKLS0gICAgICAgIGNoYXIgYml0c1s2 NV07Ci0tICAgICAgICBpbnQgaSwgaiwgazsKLS0KLS0gICAgICAgIGlmICh6ZXJvZXMgPj0gMzIp IHsKLS0gICAgICAgICAgICB3aGlsZSAoemVyb2VzID4gMzIpIHsKLS0gICAgICAgICAgICAgICAg ayA9IEZGTUlOKHplcm9lcyAtIDMyLCAzMik7Ci0tICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBrOyBpKyspCi0tICAgICAgICAgICAgICAgICAgICBiaXRzW2ldID0gJzAnOwotLSAgICAg ICAgICAgICAgICBiaXRzW2ldID0gMDsKLS0gICAgICAgICAgICAgICAgZmZfY2JzX3RyYWNlX3N5 bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sIG5hbWUsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBiaXRzLCAwKTsKLS0gICAgICAgICAgICAgICAg emVyb2VzIC09IGs7Ci0tICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IGs7Ci0tICAgICAgICAg ICAgfQotLSAgICAgICAgfQotLQotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHplcm9lczsgaSsr KQotLSAgICAgICAgICAgIGJpdHNbaV0gPSAnMCc7Ci0tICAgICAgICBiaXRzW2krK10gPSAnMSc7 Ci0tCi0tICAgICAgICBpZiAoemVyb2VzIDwgMzIpIHsKLS0gICAgICAgICAgICBmb3IgKGogPSAw OyBqIDwgemVyb2VzOyBqKyspCi0tICAgICAgICAgICAgICAgIGJpdHNbaSsrXSA9IChiaXRzX3Zh bHVlID4+ICh6ZXJvZXMgLSBqIC0gMSkgJiAxKSA/ICcxJyA6ICcwJzsKLS0gICAgICAgIH0KLS0K LS0gICAgICAgIGJpdHNbaV0gPSAwOwotLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVt ZW50KGN0eCwgcG9zaXRpb24sIG5hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTCwgYml0cywgdmFsdWUpOwotLSAgICB9Ci0rICAgIENCU19UUkFDRV9SRUFEX0VO RF9OT19TVUJTQ1JJUFRTKCk7Ci0gCi0gICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1 ZSA+IHJhbmdlX21heCkgewotICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VS Uk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCi1AQCAtMTA5LDcgKzgxLDkgQEAgc3RhdGljIGludCBj YnNfYXYxX3dyaXRlX3V2bGMoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRl eHQgKnBiYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9t aW4sIHVpbnQzMl90IHJhbmdlX21heCkKLSB7Ci0gICAgIHVpbnQzMl90IHY7Ci0tICAgIGludCBw b3NpdGlvbiwgemVyb2VzOwotKyAgICBpbnQgemVyb2VzOwotKwotKyAgICBDQlNfVFJBQ0VfV1JJ VEVfU1RBUlQoKTsKLSAKLSAgICAgaWYgKHZhbHVlIDwgcmFuZ2VfbWluIHx8IHZhbHVlID4gcmFu Z2VfbWF4KSB7Ci0gICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICIl cyBvdXQgb2YgcmFuZ2U6ICIKLUBAIC0xMTgsMjggKzkyLDE3IEBAIHN0YXRpYyBpbnQgY2JzX2F2 MV93cml0ZV91dmxjKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpw YmMsCi0gICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgfQotIAotLSAg ICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCi0tICAgICAgICBwb3NpdGlvbiA9IHB1dF9iaXRzX2Nv dW50KHBiYyk7Ci0tCi0gICAgIHplcm9lcyA9IGF2X2xvZzIodmFsdWUgKyAxKTsKLSAgICAgdiA9 IHZhbHVlIC0gKDFVIDw8IHplcm9lcykgKyAxOwotKwotKyAgICBpZiAocHV0X2JpdHNfbGVmdChw YmMpIDwgMiAqIHplcm9lcyArIDEpCi0rICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TUEMpOwot KwotICAgICBwdXRfYml0cyhwYmMsIHplcm9lcywgMCk7Ci0gICAgIHB1dF9iaXRzKHBiYywgMSwg MSk7Ci0gICAgIHB1dF9iaXRzKHBiYywgemVyb2VzLCB2KTsKLSAKLS0gICAgaWYgKGN0eC0+dHJh Y2VfZW5hYmxlKSB7Ci0tICAgICAgICBjaGFyIGJpdHNbNjVdOwotLSAgICAgICAgaW50IGksIGo7 Ci0tICAgICAgICBpID0gMDsKLS0gICAgICAgIGZvciAoaiA9IDA7IGogPCB6ZXJvZXM7IGorKykK LS0gICAgICAgICAgICBiaXRzW2krK10gPSAnMCc7Ci0tICAgICAgICBiaXRzW2krK10gPSAnMSc7 Ci0tICAgICAgICBmb3IgKGogPSAwOyBqIDwgemVyb2VzOyBqKyspCi0tICAgICAgICAgICAgYml0 c1tpKytdID0gKHYgPj4gKHplcm9lcyAtIGogLSAxKSAmIDEpID8gJzEnIDogJzAnOwotLSAgICAg ICAgYml0c1tpKytdID0gMDsKLS0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChj dHgsIHBvc2l0aW9uLCBuYW1lLCBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJpdHMsIHZhbHVlKTsKLS0gICAgfQotKyAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EX05P X1NVQlNDUklQVFMoKTsKLSAKLSAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTE0OCwyMCArMTExLDE5 IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX2xlYjEyOChDb2RlZEJpdHN0cmVhbUNvbnRleHQg KmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpuYW1lLCB1aW50NjRfdCAqd3JpdGVfdG8pCi0gewotICAgICB1aW50NjRf dCB2YWx1ZTsKLS0gICAgaW50IHBvc2l0aW9uLCBlcnIsIGk7Ci0rICAgIHVpbnQzMl90IGJ5dGU7 Ci0rICAgIGludCBpOwotIAotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCi0tICAgICAgICBw b3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdiYyk7Ci0rICAgIENCU19UUkFDRV9SRUFEX1NUQVJU KCk7Ci0gCi0gICAgIHZhbHVlID0gMDsKLSAgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykgewot LSAgICAgICAgaW50IHN1YnNjcmlwdFsyXSA9IHsgMSwgaSB9OwotLSAgICAgICAgdWludDMyX3Qg Ynl0ZTsKLS0gICAgICAgIGVyciA9IGZmX2Nic19yZWFkX3Vuc2lnbmVkKGN0eCwgZ2JjLCA4LCAi bGViMTI4X2J5dGVbaV0iLCBzdWJzY3JpcHQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmYnl0ZSwgMHgwMCwgMHhmZik7Ci0tICAgICAgICBpZiAoZXJyIDwgMCkKLS0gICAg ICAgICAgICByZXR1cm4gZXJyOwotLQotKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8 IDgpIHsKLSsgICAgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJ bnZhbGlkIGxlYjEyOCBhdCAiCi0rICAgICAgICAgICAgICAgICAgICIlczogYml0c3RyZWFtIGVu ZGVkLlxuIiwgbmFtZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Ci0rICAgICAgICB9Ci0rICAgICAgICBieXRlID0gZ2V0X2JpdHMoZ2JjLCA4KTsKLSAgICAgICAg IHZhbHVlIHw9ICh1aW50NjRfdCkoYnl0ZSAmIDB4N2YpIDw8IChpICogNyk7Ci0gICAgICAgICBp ZiAoIShieXRlICYgMHg4MCkpCi0gICAgICAgICAgICAgYnJlYWs7Ci1AQCAtMTcwLDM5ICsxMzIs MzggQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRfbGViMTI4KENvZGVkQml0c3RyZWFtQ29udGV4 dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAgIGlmICh2YWx1ZSA+IFVJTlQzMl9NQVgp Ci0gICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAKLS0gICAgaWYgKGN0eC0+ dHJhY2VfZW5hYmxlKQotLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwg cG9zaXRpb24sIG5hbWUsIE5VTEwsICIiLCB2YWx1ZSk7Ci0rICAgIENCU19UUkFDRV9SRUFEX0VO RF9OT19TVUJTQ1JJUFRTKCk7Ci0gCi0gICAgICp3cml0ZV90byA9IHZhbHVlOwotICAgICByZXR1 cm4gMDsKLSB9Ci0gCi0rLyoqIE1pbmltdW0gYnl0ZSBsZW5ndGggd2lsbCBiZSB1c2VkIHRvIGlu ZGljYXRlIHRoZSBsZW4xMjggb2YgdmFsdWUgaWYgYnl0ZV9sZW4gaXMgMC4gKi8KLSBzdGF0aWMg aW50IGNic19hdjFfd3JpdGVfbGViMTI4KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRC aXRDb250ZXh0ICpwYmMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICpuYW1lLCB1aW50NjRfdCB2YWx1ZSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NF90IHZhbHVlLCB1aW50OF90IGJ5dGVfbGVuKQot IHsKLS0gICAgaW50IHBvc2l0aW9uLCBlcnIsIGxlbiwgaTsKLSsgICAgaW50IGxlbiwgaTsKLSAg ICAgdWludDhfdCBieXRlOwotIAotLSAgICBsZW4gPSAoYXZfbG9nMih2YWx1ZSkgKyA3KSAvIDc7 Ci0rICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOwotKwotKyAgICBpZiAoYnl0ZV9sZW4pCi0r ICAgICAgICBhdl9hc3NlcnQwKGJ5dGVfbGVuID49IChhdl9sb2cyKHZhbHVlKSArIDcpIC8gNyk7 Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKLS0gICAgICAgIHBvc2l0aW9uID0gcHV0 X2JpdHNfY291bnQocGJjKTsKLSsgICAgbGVuID0gYnl0ZV9sZW4gPyBieXRlX2xlbiA6IChhdl9s b2cyKHZhbHVlKSArIDcpIC8gNzsKLSAKLSAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7 Ci0tICAgICAgICBpbnQgc3Vic2NyaXB0WzJdID0geyAxLCBpIH07Ci0rICAgICAgICBpZiAocHV0 X2JpdHNfbGVmdChwYmMpIDwgOCkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TUEMp OwotIAotICAgICAgICAgYnl0ZSA9IHZhbHVlID4+ICg3ICogaSkgJiAweDdmOwotICAgICAgICAg aWYgKGkgPCBsZW4gLSAxKQotICAgICAgICAgICAgIGJ5dGUgfD0gMHg4MDsKLSAKLS0gICAgICAg IGVyciA9IGZmX2Nic193cml0ZV91bnNpZ25lZChjdHgsIHBiYywgOCwgImxlYjEyOF9ieXRlW2ld Iiwgc3Vic2NyaXB0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGUs IDB4MDAsIDB4ZmYpOwotLSAgICAgICAgaWYgKGVyciA8IDApCi0tICAgICAgICAgICAgcmV0dXJu IGVycjsKLSsgICAgICAgIHB1dF9iaXRzKHBiYywgOCwgYnl0ZSk7Ci0gICAgIH0KLSAKLS0gICAg aWYgKGN0eC0+dHJhY2VfZW5hYmxlKQotLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVt ZW50KGN0eCwgcG9zaXRpb24sIG5hbWUsIE5VTEwsICIiLCB2YWx1ZSk7Ci0rICAgIENCU19UUkFD RV9XUklURV9FTkRfTk9fU1VCU0NSSVBUUygpOwotIAotICAgICByZXR1cm4gMDsKLSB9Ci1AQCAt MjEyLDEyICsxNzMsMTEgQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRfbnMoQ29kZWRCaXRzdHJl YW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIHVpbnQzMl90ICp3cml0ZV90bykKLSB7Ci0g ICAgIHVpbnQzMl90IG0sIHYsIGV4dHJhX2JpdCwgdmFsdWU7Ci0tICAgIGludCBwb3NpdGlvbiwg dzsKLSsgICAgaW50IHc7Ci0gCi0tICAgIGF2X2Fzc2VydDAobiA+IDApOwotKyAgICBDQlNfVFJB Q0VfUkVBRF9TVEFSVCgpOwotIAotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCi0tICAgICAg ICBwb3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdiYyk7Ci0rICAgIGF2X2Fzc2VydDAobiA+IDAp OwotIAotICAgICB3ID0gYXZfbG9nMihuKSArIDE7Ci0gICAgIG0gPSAoMSA8PCB3KSAtIG47Ci1A QCAtMjQwLDE4ICsyMDAsNyBAQCBzdGF0aWMgaW50IGNic19hdjFfcmVhZF9ucyhDb2RlZEJpdHN0 cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAotICAgICAgICAgdmFsdWUgPSAo diA8PCAxKSAtIG0gKyBleHRyYV9iaXQ7Ci0gICAgIH0KLSAKLS0gICAgaWYgKGN0eC0+dHJhY2Vf ZW5hYmxlKSB7Ci0tICAgICAgICBjaGFyIGJpdHNbMzNdOwotLSAgICAgICAgaW50IGk7Ci0tICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgdyAtIDE7IGkrKykKLS0gICAgICAgICAgICBiaXRzW2ldID0g KHYgPj4gaSAmIDEpID8gJzEnIDogJzAnOwotLSAgICAgICAgaWYgKHYgPj0gbSkKLS0gICAgICAg ICAgICBiaXRzW2krK10gPSBleHRyYV9iaXQgPyAnMScgOiAnMCc7Ci0tICAgICAgICBiaXRzW2ld ID0gMDsKLS0KLS0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0 aW9uLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YnNjcmlw dHMsIGJpdHMsIHZhbHVlKTsKLS0gICAgfQotKyAgICBDQlNfVFJBQ0VfUkVBRF9FTkQoKTsKLSAK LSAgICAgKndyaXRlX3RvID0gdmFsdWU7Ci0gICAgIHJldHVybiAwOwotQEAgLTI2Miw3ICsyMTEs OCBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfbnMoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpj dHgsIFB1dEJpdENvbnRleHQgKnBiYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgaW50ICpzdWJzY3JpcHRzLCB1aW50MzJfdCB2YWx1ZSkKLSB7Ci0gICAgIHVpbnQzMl90IHcs IG0sIHYsIGV4dHJhX2JpdDsKLS0gICAgaW50IHBvc2l0aW9uOwotKwotKyAgICBDQlNfVFJBQ0Vf V1JJVEVfU1RBUlQoKTsKLSAKLSAgICAgaWYgKHZhbHVlID4gbikgewotICAgICAgICAgYXZfbG9n KGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCi1AQCAtMjcx LDkgKzIyMSw2IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9ucyhDb2RlZEJpdHN0cmVhbUNv bnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotICAgICAgICAgcmV0dXJuIEFWRVJST1Jf SU5WQUxJRERBVEE7Ci0gICAgIH0KLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQotLSAg ICAgICAgcG9zaXRpb24gPSBwdXRfYml0c19jb3VudChwYmMpOwotLQotICAgICB3ID0gYXZfbG9n MihuKSArIDE7Ci0gICAgIG0gPSAoMSA8PCB3KSAtIG47Ci0gCi1AQCAtMjkwLDE4ICsyMzcsNyBA QCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfbnMoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgs IFB1dEJpdENvbnRleHQgKnBiYywKLSAgICAgICAgIHB1dF9iaXRzKHBiYywgMSwgZXh0cmFfYml0 KTsKLSAgICAgfQotIAotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKLS0gICAgICAgIGNo YXIgYml0c1szM107Ci0tICAgICAgICBpbnQgaTsKLS0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB3 IC0gMTsgaSsrKQotLSAgICAgICAgICAgIGJpdHNbaV0gPSAodiA+PiBpICYgMSkgPyAnMScgOiAn MCc7Ci0tICAgICAgICBpZiAodmFsdWUgPj0gbSkKLS0gICAgICAgICAgICBiaXRzW2krK10gPSBl eHRyYV9iaXQgPyAnMScgOiAnMCc7Ci0tICAgICAgICBiaXRzW2ldID0gMDsKLS0KLS0gICAgICAg IGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YnNjcmlwdHMsIGJpdHMsIHZhbHVlKTsK LS0gICAgfQotKyAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EKCk7Ci0gCi0gICAgIHJldHVybiAwOwot IH0KLUBAIC0zMTEsMzMgKzI0NywyNCBAQCBzdGF0aWMgaW50IGNic19hdjFfcmVhZF9pbmNyZW1l bnQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCAq d3JpdGVfdG8pCi0gewotICAgICB1aW50MzJfdCB2YWx1ZTsKLS0gICAgaW50IHBvc2l0aW9uLCBp OwotLSAgICBjaGFyIGJpdHNbMzNdOwotIAotLSAgICBhdl9hc3NlcnQwKHJhbmdlX21pbiA8PSBy YW5nZV9tYXggJiYgcmFuZ2VfbWF4IC0gcmFuZ2VfbWluIDwgc2l6ZW9mKGJpdHMpIC0gMSk7Ci0t ICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKLS0gICAgICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNf Y291bnQoZ2JjKTsKLSsgICAgQ0JTX1RSQUNFX1JFQURfU1RBUlQoKTsKLSsKLSsgICAgYXZfYXNz ZXJ0MChyYW5nZV9taW4gPD0gcmFuZ2VfbWF4ICYmIHJhbmdlX21heCAtIHJhbmdlX21pbiA8IDMy KTsKLSAKLS0gICAgZm9yIChpID0gMCwgdmFsdWUgPSByYW5nZV9taW47IHZhbHVlIDwgcmFuZ2Vf bWF4OykgewotKyAgICBmb3IgKHZhbHVlID0gcmFuZ2VfbWluOyB2YWx1ZSA8IHJhbmdlX21heDsp IHsKLSAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiYykgPCAxKSB7Ci0gICAgICAgICAgICAg YXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBpbmNyZW1lbnQgdmFs dWUgYXQgIgotICAgICAgICAgICAgICAgICAgICAiJXM6IGJpdHN0cmVhbSBlbmRlZC5cbiIsIG5h bWUpOwotICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICAg fQotLSAgICAgICAgaWYgKGdldF9iaXRzMShnYmMpKSB7Ci0tICAgICAgICAgICAgYml0c1tpKytd ID0gJzEnOwotKyAgICAgICAgaWYgKGdldF9iaXRzMShnYmMpKQotICAgICAgICAgICAgICsrdmFs dWU7Ci0tICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgIGJpdHNbaSsrXSA9ICcwJzsKLSsg ICAgICAgIGVsc2UKLSAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgIH0KLSAgICAgfQotIAot LSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKLS0gICAgICAgIGJpdHNbaV0gPSAwOwotLSAg ICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgTlVMTCwgYml0cywgdmFsdWUpOwot LSAgICB9Ci0rICAgIENCU19UUkFDRV9SRUFEX0VORF9OT19TVUJTQ1JJUFRTKCk7Ci0gCi0gICAg ICp3cml0ZV90byA9IHZhbHVlOwotICAgICByZXR1cm4gMDsKLUBAIC0zNDksNiArMjc2LDggQEAg c3RhdGljIGludCBjYnNfYXYxX3dyaXRlX2luY3JlbWVudChDb2RlZEJpdHN0cmVhbUNvbnRleHQg KmN0eCwgUHV0Qml0Q29udGV4dCAqcGIKLSB7Ci0gICAgIGludCBsZW47Ci0gCi0rICAgIENCU19U UkFDRV9XUklURV9TVEFSVCgpOwotKwotICAgICBhdl9hc3NlcnQwKHJhbmdlX21pbiA8PSByYW5n ZV9tYXggJiYgcmFuZ2VfbWF4IC0gcmFuZ2VfbWluIDwgMzIpOwotICAgICBpZiAodmFsdWUgPCBy YW5nZV9taW4gfHwgdmFsdWUgPiByYW5nZV9tYXgpIHsKLSAgICAgICAgIGF2X2xvZyhjdHgtPmxv Z19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgotQEAgLTM2NCwyMyArMjkz LDExIEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9pbmNyZW1lbnQoQ29kZWRCaXRzdHJlYW1D b250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiCi0gICAgIGlmIChwdXRfYml0c19sZWZ0KHBi YykgPCBsZW4pCi0gICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TUEMpOwotIAotLSAgICBpZiAo Y3R4LT50cmFjZV9lbmFibGUpIHsKLS0gICAgICAgIGNoYXIgYml0c1szM107Ci0tICAgICAgICBp bnQgaTsKLS0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotLSAgICAgICAgICAg IGlmIChyYW5nZV9taW4gKyBpID09IHZhbHVlKQotLSAgICAgICAgICAgICAgICBiaXRzW2ldID0g JzAnOwotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgYml0c1tpXSA9ICcxJzsK LS0gICAgICAgIH0KLS0gICAgICAgIGJpdHNbaV0gPSAwOwotLSAgICAgICAgZmZfY2JzX3RyYWNl X3N5bnRheF9lbGVtZW50KGN0eCwgcHV0X2JpdHNfY291bnQocGJjKSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBOVUxMLCBiaXRzLCB2YWx1ZSk7Ci0tICAgIH0K LS0KLSAgICAgaWYgKGxlbiA+IDApCi0gICAgICAgICBwdXRfYml0cyhwYmMsIGxlbiwgKDEgPDwg bGVuKSAtIDEgLSAodmFsdWUgIT0gcmFuZ2VfbWF4KSk7Ci0gCi0rICAgIENCU19UUkFDRV9XUklU RV9FTkRfTk9fU1VCU0NSSVBUUygpOwotKwotICAgICByZXR1cm4gMDsKLSB9Ci0gCi1AQCAtMzg4 LDEyICszMDUsMTAgQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRfc3ViZXhwKENvZGVkQml0c3Ry ZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IHJhbmdlX21heCwgY29uc3QgY2hhciAqbmFtZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCB1aW50MzJf dCAqd3JpdGVfdG8pCi0gewotLSAgICB1aW50MzJfdCB2YWx1ZTsKLS0gICAgaW50IHBvc2l0aW9u LCBlcnI7Ci0tICAgIHVpbnQzMl90IG1heF9sZW4sIGxlbiwgcmFuZ2Vfb2Zmc2V0LCByYW5nZV9i aXRzOwotKyAgICB1aW50MzJfdCB2YWx1ZSwgbWF4X2xlbiwgbGVuLCByYW5nZV9vZmZzZXQsIHJh bmdlX2JpdHM7Ci0rICAgIGludCBlcnI7Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkK LS0gICAgICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKLSsgICAgQ0JTX1RSQUNF X1JFQURfU1RBUlQoKTsKLSAKLSAgICAgYXZfYXNzZXJ0MChyYW5nZV9tYXggPiAwKTsKLSAgICAg bWF4X2xlbiA9IGF2X2xvZzIocmFuZ2VfbWF4IC0gMSkgLSAzOwotQEAgLTQxMiw5ICszMjcsOCBA QCBzdGF0aWMgaW50IGNic19hdjFfcmVhZF9zdWJleHAoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpj dHgsIEdldEJpdENvbnRleHQgKmdiYywKLSAgICAgfQotIAotICAgICBpZiAobGVuIDwgbWF4X2xl bikgewotLSAgICAgICAgZXJyID0gZmZfY2JzX3JlYWRfdW5zaWduZWQoY3R4LCBnYmMsIHJhbmdl X2JpdHMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ViZXhwX2JpdHMi LCBOVUxMLCAmdmFsdWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBN QVhfVUlOVF9CSVRTKHJhbmdlX2JpdHMpKTsKLSsgICAgICAgIGVyciA9IGZmX2Nic19yZWFkX3Np bXBsZV91bnNpZ25lZChjdHgsIGdiYywgcmFuZ2VfYml0cywKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAic3ViZXhwX2JpdHMiLCAmdmFsdWUpOwotICAgICAgICAg aWYgKGVyciA8IDApCi0gICAgICAgICAgICAgcmV0dXJuIGVycjsKLSAKLUBAIC00MjYsOSArMzQw LDcgQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRfc3ViZXhwKENvZGVkQml0c3RyZWFtQ29udGV4 dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAgIH0KLSAgICAgdmFsdWUgKz0gcmFuZ2Vf b2Zmc2V0OwotIAotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCi0tICAgICAgICBmZl9jYnNf dHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCAiIiwgdmFsdWUpOwotKyAgICBDQlNf VFJBQ0VfUkVBRF9FTkRfVkFMVUVfT05MWSgpOwotIAotICAgICAqd3JpdGVfdG8gPSB2YWx1ZTsK LSAgICAgcmV0dXJuIGVycjsKLUBAIC00MzgsOSArMzUwLDExIEBAIHN0YXRpYyBpbnQgY2JzX2F2 MV93cml0ZV9zdWJleHAoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQg KnBiYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJhbmdlX21h eCwgY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGludCAqc3Vic2NyaXB0cywgdWludDMyX3QgdmFsdWUpCi0gewotLSAgICBpbnQgcG9zaXRp b24sIGVycjsKLSsgICAgaW50IGVycjsKLSAgICAgdWludDMyX3QgbWF4X2xlbiwgbGVuLCByYW5n ZV9vZmZzZXQsIHJhbmdlX2JpdHM7Ci0gCi0rICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOwot KwotICAgICBpZiAodmFsdWUgPiByYW5nZV9tYXgpIHsKLSAgICAgICAgIGF2X2xvZyhjdHgtPmxv Z19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgotICAgICAgICAgICAgICAg ICIlIlBSSXUzMiIsIGJ1dCBtdXN0IGJlIGluIFswLCUiUFJJdTMyIl0uXG4iLAotQEAgLTQ0OCw5 ICszNjIsNiBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfc3ViZXhwKENvZGVkQml0c3RyZWFt Q29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCi0gICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKLSAgICAgfQotIAotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCi0t ICAgICAgICBwb3NpdGlvbiA9IHB1dF9iaXRzX2NvdW50KHBiYyk7Ci0tCi0gICAgIGF2X2Fzc2Vy dDAocmFuZ2VfbWF4ID4gMCk7Ci0gICAgIG1heF9sZW4gPSBhdl9sb2cyKHJhbmdlX21heCAtIDEp IC0gMzsKLSAKLUBAIC00NzYsMTAgKzM4Nyw5IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9z dWJleHAoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKLSAg ICAgICAgIHJldHVybiBlcnI7Ci0gCi0gICAgIGlmIChsZW4gPCBtYXhfbGVuKSB7Ci0tICAgICAg ICBlcnIgPSBmZl9jYnNfd3JpdGVfdW5zaWduZWQoY3R4LCBwYmMsIHJhbmdlX2JpdHMsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YmV4cF9iaXRzIiwgTlVMTCwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtIHJhbmdlX29mZnNldCwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBNQVhfVUlOVF9CSVRTKHJh bmdlX2JpdHMpKTsKLSsgICAgICAgIGVyciA9IGZmX2Nic193cml0ZV9zaW1wbGVfdW5zaWduZWQo Y3R4LCBwYmMsIHJhbmdlX2JpdHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJzdWJleHBfYml0cyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZhbHVlIC0gcmFuZ2Vfb2Zmc2V0KTsKLSAgICAgICAgIGlmIChlcnIgPCAw KQotICAgICAgICAgICAgIHJldHVybiBlcnI7Ci0gCi1AQCAtNDkxLDkgKzQwMSw3IEBAIHN0YXRp YyBpbnQgY2JzX2F2MV93cml0ZV9zdWJleHAoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1 dEJpdENvbnRleHQgKnBiYywKLSAgICAgICAgICAgICByZXR1cm4gZXJyOwotICAgICB9Ci0gCi0t ICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKLS0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhf ZWxlbWVudChjdHgsIHBvc2l0aW9uLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5hbWUsIHN1YnNjcmlwdHMsICIiLCB2YWx1ZSk7Ci0rICAgIENCU19UUkFDRV9XUklURV9F TkRfVkFMVUVfT05MWSgpOwotIAotICAgICByZXR1cm4gZXJyOwotIH0KLUBAIC01NDYsOCArNDU0 LDYgQEAgc3RhdGljIHNpemVfdCBjYnNfYXYxX2dldF9wYXlsb2FkX2J5dGVzX2xlZnQoR2V0Qml0 Q29udGV4dCAqZ2JjKQotIAotICNkZWZpbmUgU1VCU0NSSVBUUyhzdWJzLCAuLi4pIChzdWJzID4g MCA/ICgoaW50W3N1YnMgKyAxXSl7IHN1YnMsIF9fVkFfQVJHU19fIH0pIDogTlVMTCkKLSAKLS0j ZGVmaW5lIGZiKHdpZHRoLCBuYW1lKSBcCi0tICAgICAgICB4Zih3aWR0aCwgbmFtZSwgY3VycmVu dC0+bmFtZSwgMCwgTUFYX1VJTlRfQklUUyh3aWR0aCksIDAsICkKLSAjZGVmaW5lIGZjKHdpZHRo LCBuYW1lLCByYW5nZV9taW4sIHJhbmdlX21heCkgXAotICAgICAgICAgeGYod2lkdGgsIG5hbWUs IGN1cnJlbnQtPm5hbWUsIHJhbmdlX21pbiwgcmFuZ2VfbWF4LCAwLCApCi0gI2RlZmluZSBmbGFn KG5hbWUpIGZiKDEsIG5hbWUpCi1AQCAtNTczLDYgKzQ3OSwxMyBAQCBzdGF0aWMgc2l6ZV90IGNi c19hdjFfZ2V0X3BheWxvYWRfYnl0ZXNfbGVmdChHZXRCaXRDb250ZXh0ICpnYmMpCi0gI2RlZmlu ZSBSRUFEV1JJVEUgcmVhZAotICNkZWZpbmUgUldDb250ZXh0IEdldEJpdENvbnRleHQKLSAKLSsj ZGVmaW5lIGZiKHdpZHRoLCBuYW1lKSBkbyB7IFwKLSsgICAgICAgIHVpbnQzMl90IHZhbHVlOyBc Ci0rICAgICAgICBDSEVDSyhmZl9jYnNfcmVhZF9zaW1wbGVfdW5zaWduZWQoY3R4LCBydywgd2lk dGgsIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbmFtZSwg JnZhbHVlKSk7IFwKLSsgICAgICAgIGN1cnJlbnQtPm5hbWUgPSB2YWx1ZTsgXAotKyAgICB9IHdo aWxlICgwKQotKwotICNkZWZpbmUgeGYod2lkdGgsIG5hbWUsIHZhciwgcmFuZ2VfbWluLCByYW5n ZV9tYXgsIHN1YnMsIC4uLikgZG8geyBcCi0gICAgICAgICB1aW50MzJfdCB2YWx1ZTsgXAotICAg ICAgICAgQ0hFQ0soZmZfY2JzX3JlYWRfdW5zaWduZWQoY3R4LCBydywgd2lkdGgsICNuYW1lLCBc Ci1AQCAtNjQ1LDYgKzU1OCw3IEBAIHN0YXRpYyBzaXplX3QgY2JzX2F2MV9nZXRfcGF5bG9hZF9i eXRlc19sZWZ0KEdldEJpdENvbnRleHQgKmdiYykKLSAjdW5kZWYgUkVBRAotICN1bmRlZiBSRUFE V1JJVEUKLSAjdW5kZWYgUldDb250ZXh0Ci0rI3VuZGVmIGZiCi0gI3VuZGVmIHhmCi0gI3VuZGVm IHhzdQotICN1bmRlZiB1dmxjCi1AQCAtNjYxLDYgKzU3NSwxMSBAQCBzdGF0aWMgc2l6ZV90IGNi c19hdjFfZ2V0X3BheWxvYWRfYnl0ZXNfbGVmdChHZXRCaXRDb250ZXh0ICpnYmMpCi0gI2RlZmlu ZSBSRUFEV1JJVEUgd3JpdGUKLSAjZGVmaW5lIFJXQ29udGV4dCBQdXRCaXRDb250ZXh0Ci0gCi0r I2RlZmluZSBmYih3aWR0aCwgbmFtZSkgZG8geyBcCi0rICAgICAgICBDSEVDSyhmZl9jYnNfd3Jp dGVfc2ltcGxlX3Vuc2lnbmVkKGN0eCwgcncsIHdpZHRoLCAjbmFtZSwgXAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LT5uYW1lKSk7IFwKLSsgICAg fSB3aGlsZSAoMCkKLSsKLSAjZGVmaW5lIHhmKHdpZHRoLCBuYW1lLCB2YXIsIHJhbmdlX21pbiwg cmFuZ2VfbWF4LCBzdWJzLCAuLi4pIGRvIHsgXAotICAgICAgICAgQ0hFQ0soZmZfY2JzX3dyaXRl X3Vuc2lnbmVkKGN0eCwgcncsIHdpZHRoLCAjbmFtZSwgXAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNVQlNDUklQVFMoc3VicywgX19WQV9BUkdTX18pLCBcCi1AQCAtNzAz LDcgKzYyMiw3IEBAIHN0YXRpYyBzaXplX3QgY2JzX2F2MV9nZXRfcGF5bG9hZF9ieXRlc19sZWZ0 KEdldEJpdENvbnRleHQgKmdiYykKLSAgICAgfSB3aGlsZSAoMCkKLSAKLSAjZGVmaW5lIGxlYjEy OChuYW1lKSBkbyB7IFwKLS0gICAgICAgIENIRUNLKGNic19hdjFfd3JpdGVfbGViMTI4KGN0eCwg cncsICNuYW1lLCBjdXJyZW50LT5uYW1lKSk7IFwKLSsgICAgICAgIENIRUNLKGNic19hdjFfd3Jp dGVfbGViMTI4KGN0eCwgcncsICNuYW1lLCBjdXJyZW50LT5uYW1lLCAwKSk7IFwKLSAgICAgfSB3 aGlsZSAoMCkKLSAKLSAjZGVmaW5lIGluZmVyKG5hbWUsIHZhbHVlKSBkbyB7IFwKLUBAIC03MjMs NiArNjQyLDcgQEAgc3RhdGljIHNpemVfdCBjYnNfYXYxX2dldF9wYXlsb2FkX2J5dGVzX2xlZnQo R2V0Qml0Q29udGV4dCAqZ2JjKQotICN1bmRlZiBXUklURQotICN1bmRlZiBSRUFEV1JJVEUKLSAj dW5kZWYgUldDb250ZXh0Ci0rI3VuZGVmIGZiCi0gI3VuZGVmIHhmCi0gI3VuZGVmIHhzdQotICN1 bmRlZiB1dmxjCi1AQCAtMTA4Niw5ICsxMDA2LDE0IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0 ZV9vYnUoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsCi0gCi0gICAgIGlmIChvYnUtPmhlYWRl ci5vYnVfaGFzX3NpemVfZmllbGQpIHsKLSAgICAgICAgIHBiY190bXAgPSAqcGJjOwotLSAgICAg ICAgLy8gQWRkIHNwYWNlIGZvciB0aGUgc2l6ZSBmaWVsZCB0byBmaWxsIGxhdGVyLgotLSAgICAg ICAgcHV0X2JpdHMzMihwYmMsIDApOwotLSAgICAgICAgcHV0X2JpdHMzMihwYmMsIDApOwotKyAg ICAgICAgaWYgKG9idS0+b2J1X3NpemVfYnl0ZV9sZW4pIHsKLSsgICAgICAgICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IG9idS0+b2J1X3NpemVfYnl0ZV9sZW47IGkrKykKLSsgICAgICAgICAgICAg ICAgcHV0X2JpdHMocGJjLCA4LCAwKTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAg Ly8gQWRkIHNwYWNlIGZvciB0aGUgc2l6ZSBmaWVsZCB0byBmaWxsIGxhdGVyLgotKyAgICAgICAg ICAgIHB1dF9iaXRzMzIocGJjLCAwKTsKLSsgICAgICAgICAgICBwdXRfYml0czMyKHBiYywgMCk7 Ci0rICAgICAgICB9Ci0gICAgIH0KLSAKLSAgICAgdGQgPSBOVUxMOwotQEAgLTEyMDgsNyArMTEz Myw3IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9vYnUoQ29kZWRCaXRzdHJlYW1Db250ZXh0 ICpjdHgsCi0gICAgIGVuZF9wb3MgICAvPSA4OwotIAotICAgICAqcGJjID0gcGJjX3RtcDsKLS0g ICAgZXJyID0gY2JzX2F2MV93cml0ZV9sZWIxMjgoY3R4LCBwYmMsICJvYnVfc2l6ZSIsIG9idS0+ b2J1X3NpemUpOwotKyAgICBlcnIgPSBjYnNfYXYxX3dyaXRlX2xlYjEyOChjdHgsIHBiYywgIm9i dV9zaXplIiwgb2J1LT5vYnVfc2l6ZSwgb2J1LT5vYnVfc2l6ZV9ieXRlX2xlbik7Ci0gICAgIGlm IChlcnIgPCAwKQotICAgICAgICAgZ290byBlcnJvcjsKLSAKLUBAIC0xMjI1LDggKzExNTAsMTEg QEAgc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX29idShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0 eCwKLSAgICAgfQotIAotICAgICBpZiAob2J1LT5vYnVfc2l6ZSA+IDApIHsKLS0gICAgICAgIG1l bW1vdmUocGJjLT5idWYgKyBkYXRhX3BvcywKLS0gICAgICAgICAgICAgICAgcGJjLT5idWYgKyBz dGFydF9wb3MsIGhlYWRlcl9zaXplKTsKLSsgICAgICAgIGlmICghb2J1LT5vYnVfc2l6ZV9ieXRl X2xlbikgewotKyAgICAgICAgICAgIG9idS0+b2J1X3NpemVfYnl0ZV9sZW4gPSBzdGFydF9wb3Mg LSBkYXRhX3BvczsKLSsgICAgICAgICAgICBtZW1tb3ZlKHBiYy0+YnVmICsgZGF0YV9wb3MsCi0r ICAgICAgICAgICAgICAgICAgICBwYmMtPmJ1ZiArIHN0YXJ0X3BvcywgaGVhZGVyX3NpemUpOwot KyAgICAgICAgfQotICAgICAgICAgc2tpcF9wdXRfYnl0ZXMocGJjLCBoZWFkZXJfc2l6ZSk7Ci0g Ci0gICAgICAgICBpZiAodGQpIHsKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Nic19hdjEuaCBi L2xpYmF2Y29kZWMvY2JzX2F2MS5oCi1pbmRleCAxZmM4MGRjLi5jNWRhZTNjIDEwMDY0NAotLS0t IGEvbGliYXZjb2RlYy9jYnNfYXYxLmgKLSsrKyBiL2xpYmF2Y29kZWMvY2JzX2F2MS5oCi1AQCAt MzkyLDYgKzM5Miw3IEBAIHR5cGVkZWYgc3RydWN0IEFWMVJhd09CVSB7Ci0gICAgIEFWMVJhd09C VUhlYWRlciBoZWFkZXI7Ci0gCi0gICAgIHNpemVfdCBvYnVfc2l6ZTsKLSsgICAgdWludDhfdCBv YnVfc2l6ZV9ieXRlX2xlbjsKLSAKLSAgICAgdW5pb24gewotICAgICAgICAgQVYxUmF3U2VxdWVu Y2VIZWFkZXIgc2VxdWVuY2VfaGVhZGVyOwotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzX2F2 MV9zeW50YXhfdGVtcGxhdGUuYyBiL2xpYmF2Y29kZWMvY2JzX2F2MV9zeW50YXhfdGVtcGxhdGUu YwotaW5kZXggZTk1OTI1YS4uY2YyZTI1OSAxMDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvY2JzX2F2 MV9zeW50YXhfdGVtcGxhdGUuYwotKysrIGIvbGliYXZjb2RlYy9jYnNfYXYxX3N5bnRheF90ZW1w bGF0ZS5jCi1AQCAtMTAxOCw5ICsxMDE4LDkgQEAgc3RhdGljIGludCBGVU5DKHJlYWRfdHhfbW9k ZSkoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFJXQ29udGV4dCAqcncsCi0gICAgIGludCBl cnI7Ci0gCi0gICAgIGlmIChwcml2LT5jb2RlZF9sb3NzbGVzcykKLS0gICAgICAgIGluZmVyKHR4 X21vZGUsIDApOwotKyAgICAgICAgaW5mZXIodHhfbW9kZSwgQVYxX09OTFlfNFg0KTsKLSAgICAg ZWxzZQotLSAgICAgICAgaW5jcmVtZW50KHR4X21vZGUsIDEsIDIpOwotKyAgICAgICAgaW5jcmVt ZW50KHR4X21vZGUsIEFWMV9UWF9NT0RFX0xBUkdFU1QsIEFWMV9UWF9NT0RFX1NFTEVDVCk7Ci0g Ci0gICAgIHJldHVybiAwOwotIH0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Nic19ic2YuYyBi L2xpYmF2Y29kZWMvY2JzX2JzZi5jCi1pbmRleCAwNjlmNmU5Li5iMjUyODU0IDEwMDY0NAotLS0t IGEvbGliYXZjb2RlYy9jYnNfYnNmLmMKLSsrKyBiL2xpYmF2Y29kZWMvY2JzX2JzZi5jCi1AQCAt MTIzLDYgKzEyMywxMSBAQCBpbnQgZmZfY2JzX2JzZl9nZW5lcmljX2luaXQoQVZCU0ZDb250ZXh0 ICpic2YsIGNvbnN0IENCU0JTRlR5cGUgKnR5cGUpCi0gICAgIGlmIChlcnIgPCAwKQotICAgICAg ICAgcmV0dXJuIGVycjsKLSAKLSsgICAgY3R4LT5vdXRwdXQtPnRyYWNlX2VuYWJsZSA9IDE7Ci0r ICAgIGN0eC0+b3V0cHV0LT50cmFjZV9sZXZlbCAgPSBBVl9MT0dfVFJBQ0U7Ci0rICAgIGN0eC0+ b3V0cHV0LT50cmFjZV9jb250ZXh0ID0gY3R4LT5vdXRwdXQ7Ci0rICAgIGN0eC0+b3V0cHV0LT50 cmFjZV93cml0ZV9jYWxsYmFjayA9IGZmX2Nic190cmFjZV93cml0ZV9sb2c7Ci0rCi0gICAgIGlm IChic2YtPnBhcl9pbi0+ZXh0cmFkYXRhKSB7Ci0gICAgICAgICBlcnIgPSBmZl9jYnNfcmVhZF9l eHRyYWRhdGEoY3R4LT5pbnB1dCwgZnJhZywgYnNmLT5wYXJfaW4pOwotICAgICAgICAgaWYgKGVy ciA8IDApIHsKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Nic19oMjY0NS5jIGIvbGliYXZjb2Rl Yy9jYnNfaDI2NDUuYwotaW5kZXggODBlNDg4Mi4uMzU1ZjRkNSAxMDA2NDQKLS0tLSBhL2xpYmF2 Y29kZWMvY2JzX2gyNjQ1LmMKLSsrKyBiL2xpYmF2Y29kZWMvY2JzX2gyNjQ1LmMKLUBAIC0zNCw0 MSArMzQsMzggQEAgc3RhdGljIGludCBjYnNfcmVhZF91ZV9nb2xvbWIoQ29kZWRCaXRzdHJlYW1D b250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCAqd3JpdGVfdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgcmFuZ2VfbWluLCB1aW50MzJfdCByYW5nZV9tYXgpCi0gewotLSAgICB1aW50 MzJfdCB2YWx1ZTsKLS0gICAgaW50IHBvc2l0aW9uLCBpLCBqOwotLSAgICB1bnNpZ25lZCBpbnQg azsKLS0gICAgY2hhciBiaXRzWzY1XTsKLSsgICAgdWludDMyX3QgbGVhZGluZ19iaXRzLCB2YWx1 ZTsKLSsgICAgaW50IG1heF9sZW5ndGgsIGxlYWRpbmdfemVyb2VzOwotIAotLSAgICBwb3NpdGlv biA9IGdldF9iaXRzX2NvdW50KGdiYyk7Ci0rICAgIENCU19UUkFDRV9SRUFEX1NUQVJUKCk7Ci0g Ci0tICAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7Ci0tICAgICAgICBpZiAoZ2V0X2JpdHNf bGVmdChnYmMpIDwgaSArIDEpIHsKLSsgICAgbWF4X2xlbmd0aCA9IEZGTUlOKGdldF9iaXRzX2xl ZnQoZ2JjKSwgMzIpOwotKwotKyAgICBsZWFkaW5nX2JpdHMgPSBzaG93X2JpdHNfbG9uZyhnYmMs IG1heF9sZW5ndGgpOwotKyAgICBpZiAobGVhZGluZ19iaXRzID09IDApIHsKLSsgICAgICAgIGlm IChtYXhfbGVuZ3RoID49IDMyKSB7Ci0rICAgICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwg QVZfTE9HX0VSUk9SLCAiSW52YWxpZCB1ZS1nb2xvbWIgY29kZSBhdCAiCi0rICAgICAgICAgICAg ICAgICAgICIlczogbW9yZSB0aGFuIDMxIHplcm9lcy5cbiIsIG5hbWUpOwotKyAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg ICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHVlLWdvbG9t YiBjb2RlIGF0ICIKLSAgICAgICAgICAgICAgICAgICAgIiVzOiBiaXRzdHJlYW0gZW5kZWQuXG4i LCBuYW1lKTsKLSAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAg ICAgIH0KLS0gICAgICAgIGsgPSBnZXRfYml0czEoZ2JjKTsKLS0gICAgICAgIGJpdHNbaV0gPSBr ID8gJzEnIDogJzAnOwotLSAgICAgICAgaWYgKGspCi0tICAgICAgICAgICAgYnJlYWs7Ci0gICAg IH0KLS0gICAgaWYgKGkgPj0gMzIpIHsKLSsKLSsgICAgbGVhZGluZ196ZXJvZXMgPSBtYXhfbGVu Z3RoIC0gMSAtIGF2X2xvZzIobGVhZGluZ19iaXRzKTsKLSsgICAgc2tpcF9iaXRzX2xvbmcoZ2Jj LCBsZWFkaW5nX3plcm9lcyk7Ci0rCi0rICAgIGlmIChnZXRfYml0c19sZWZ0KGdiYykgPCBsZWFk aW5nX3plcm9lcyArIDEpIHsKLSAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19F UlJPUiwgIkludmFsaWQgdWUtZ29sb21iIGNvZGUgYXQgIgotLSAgICAgICAgICAgICAgICIlczog bW9yZSB0aGFuIDMxIHplcm9lcy5cbiIsIG5hbWUpOwotKyAgICAgICAgICAgICAgICIlczogYml0 c3RyZWFtIGVuZGVkLlxuIiwgbmFtZSk7Ci0gICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKLSAgICAgfQotLSAgICB2YWx1ZSA9IDE7Ci0tICAgIGZvciAoaiA9IDA7IGogPCBpOyBq KyspIHsKLS0gICAgICAgIGsgPSBnZXRfYml0czEoZ2JjKTsKLS0gICAgICAgIGJpdHNbaSArIGog KyAxXSA9IGsgPyAnMScgOiAnMCc7Ci0tICAgICAgICB2YWx1ZSA9IHZhbHVlIDw8IDEgfCBrOwot LSAgICB9Ci0tICAgIGJpdHNbaSArIGogKyAxXSA9IDA7Ci0tICAgIC0tdmFsdWU7Ci0gCi0tICAg IGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKLS0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxl bWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBzdWJzY3JpcHRzLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJpdHMsIHZhbHVlKTsKLSsgICAgdmFsdWUgPSBnZXRfYml0c19s b25nKGdiYywgbGVhZGluZ196ZXJvZXMgKyAxKSAtIDE7Ci0rCi0rICAgIENCU19UUkFDRV9SRUFE X0VORCgpOwotIAotICAgICBpZiAodmFsdWUgPCByYW5nZV9taW4gfHwgdmFsdWUgPiByYW5nZV9t YXgpIHsKLSAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91 dCBvZiByYW5nZTogIgotQEAgLTg2LDQ1ICs4Myw0NCBAQCBzdGF0aWMgaW50IGNic19yZWFkX3Nl X2dvbG9tYihDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKndyaXRlX3RvLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcmFuZ2VfbWluLCBpbnQzMl90IHJhbmdl X21heCkKLSB7Ci0rICAgIHVpbnQzMl90IGxlYWRpbmdfYml0cywgdW5zaWduZWRfdmFsdWU7Ci0r ICAgIGludCBtYXhfbGVuZ3RoLCBsZWFkaW5nX3plcm9lczsKLSAgICAgaW50MzJfdCB2YWx1ZTsK LS0gICAgaW50IHBvc2l0aW9uLCBpLCBqOwotLSAgICB1bnNpZ25lZCBpbnQgazsKLS0gICAgdWlu dDMyX3QgdjsKLS0gICAgY2hhciBiaXRzWzY1XTsKLSAKLS0gICAgcG9zaXRpb24gPSBnZXRfYml0 c19jb3VudChnYmMpOwotKyAgICBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgpOwotIAotLSAgICBmb3Ig KGkgPSAwOyBpIDwgMzI7IGkrKykgewotLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8 IGkgKyAxKSB7Ci0rICAgIG1heF9sZW5ndGggPSBGRk1JTihnZXRfYml0c19sZWZ0KGdiYyksIDMy KTsKLSsKLSsgICAgbGVhZGluZ19iaXRzID0gc2hvd19iaXRzX2xvbmcoZ2JjLCBtYXhfbGVuZ3Ro KTsKLSsgICAgaWYgKGxlYWRpbmdfYml0cyA9PSAwKSB7Ci0rICAgICAgICBpZiAobWF4X2xlbmd0 aCA+PSAzMikgewotKyAgICAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJP UiwgIkludmFsaWQgc2UtZ29sb21iIGNvZGUgYXQgIgotKyAgICAgICAgICAgICAgICAgICAiJXM6 IG1vcmUgdGhhbiAzMSB6ZXJvZXMuXG4iLCBuYW1lKTsKLSsgICAgICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKLSsgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgYXZfbG9n KGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBzZS1nb2xvbWIgY29kZSBhdCAi Ci0gICAgICAgICAgICAgICAgICAgICIlczogYml0c3RyZWFtIGVuZGVkLlxuIiwgbmFtZSk7Ci0g ICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgICB9Ci0tICAg ICAgICBrID0gZ2V0X2JpdHMxKGdiYyk7Ci0tICAgICAgICBiaXRzW2ldID0gayA/ICcxJyA6ICcw JzsKLS0gICAgICAgIGlmIChrKQotLSAgICAgICAgICAgIGJyZWFrOwotICAgICB9Ci0tICAgIGlm IChpID49IDMyKSB7Ci0rCi0rICAgIGxlYWRpbmdfemVyb2VzID0gbWF4X2xlbmd0aCAtIDEgLSBh dl9sb2cyKGxlYWRpbmdfYml0cyk7Ci0rICAgIHNraXBfYml0c19sb25nKGdiYywgbGVhZGluZ196 ZXJvZXMpOwotKwotKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYmMpIDwgbGVhZGluZ196ZXJvZXMg KyAxKSB7Ci0gICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJbnZh bGlkIHNlLWdvbG9tYiBjb2RlIGF0ICIKLS0gICAgICAgICAgICAgICAiJXM6IG1vcmUgdGhhbiAz MSB6ZXJvZXMuXG4iLCBuYW1lKTsKLSsgICAgICAgICAgICAgICAiJXM6IGJpdHN0cmVhbSBlbmRl ZC5cbiIsIG5hbWUpOwotICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAg IH0KLS0gICAgdiA9IDE7Ci0tICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspIHsKLS0gICAgICAg IGsgPSBnZXRfYml0czEoZ2JjKTsKLS0gICAgICAgIGJpdHNbaSArIGogKyAxXSA9IGsgPyAnMScg OiAnMCc7Ci0tICAgICAgICB2ID0gdiA8PCAxIHwgazsKLS0gICAgfQotLSAgICBiaXRzW2kgKyBq ICsgMV0gPSAwOwotLSAgICBpZiAodiAmIDEpCi0tICAgICAgICB2YWx1ZSA9IC0oaW50MzJfdCko diAvIDIpOwotKwotKyAgICB1bnNpZ25lZF92YWx1ZSA9IGdldF9iaXRzX2xvbmcoZ2JjLCBsZWFk aW5nX3plcm9lcyArIDEpOwotKwotKyAgICBpZiAodW5zaWduZWRfdmFsdWUgJiAxKQotKyAgICAg ICAgdmFsdWUgPSAtKGludDMyX3QpKHVuc2lnbmVkX3ZhbHVlIC8gMik7Ci0gICAgIGVsc2UKLS0g ICAgICAgIHZhbHVlID0gdiAvIDI7Ci0rICAgICAgICB2YWx1ZSA9IHVuc2lnbmVkX3ZhbHVlIC8g MjsKLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQotLSAgICAgICAgZmZfY2JzX3RyYWNl X3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sIG5hbWUsIHN1YnNjcmlwdHMsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0cywgdmFsdWUpOwotKyAgICBDQlNfVFJB Q0VfUkVBRF9FTkQoKTsKLSAKLSAgICAgaWYgKHZhbHVlIDwgcmFuZ2VfbWluIHx8IHZhbHVlID4g cmFuZ2VfbWF4KSB7Ci0gICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1Is ICIlcyBvdXQgb2YgcmFuZ2U6ICIKLUBAIC0xNDQsNiArMTQwLDggQEAgc3RhdGljIGludCBjYnNf d3JpdGVfdWVfZ29sb21iKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0 ICpwYmMsCi0gewotICAgICBpbnQgbGVuOwotIAotKyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQo KTsKLSsKLSAgICAgaWYgKHZhbHVlIDwgcmFuZ2VfbWluIHx8IHZhbHVlID4gcmFuZ2VfbWF4KSB7 Ci0gICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICIlcyBvdXQgb2Yg cmFuZ2U6ICIKLSAgICAgICAgICAgICAgICAiJSJQUkl1MzIiLCBidXQgbXVzdCBiZSBpbiBbJSJQ Ukl1MzIiLCUiUFJJdTMyIl0uXG4iLAotQEAgLTE1NiwyNyArMTU0LDE0IEBAIHN0YXRpYyBpbnQg Y2JzX3dyaXRlX3VlX2dvbG9tYihDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29u dGV4dCAqcGJjLAotICAgICBpZiAocHV0X2JpdHNfbGVmdChwYmMpIDwgMiAqIGxlbiArIDEpCi0g ICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TUEMpOwotIAotLSAgICBpZiAoY3R4LT50cmFjZV9l bmFibGUpIHsKLS0gICAgICAgIGNoYXIgYml0c1s2NV07Ci0tICAgICAgICBpbnQgaTsKLS0KLS0g ICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLS0gICAgICAgICAgICBiaXRzW2ldID0g JzAnOwotLSAgICAgICAgYml0c1tsZW5dID0gJzEnOwotLSAgICAgICAgZm9yIChpID0gMDsgaSA8 IGxlbjsgaSsrKQotLSAgICAgICAgICAgIGJpdHNbbGVuICsgaSArIDFdID0gKHZhbHVlICsgMSkg Pj4gKGxlbiAtIGkgLSAxKSAmIDEgPyAnMScgOiAnMCc7Ci0tICAgICAgICBiaXRzW2xlbiArIGxl biArIDFdID0gMDsKLS0KLS0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgs IHB1dF9iaXRzX2NvdW50KHBiYyksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmFtZSwgc3Vic2NyaXB0cywgYml0cywgdmFsdWUpOwotLSAgICB9Ci0tCi0gICAgIHB1dF9i aXRzKHBiYywgbGVuLCAwKTsKLSAgICAgaWYgKGxlbiArIDEgPCAzMikKLSAgICAgICAgIHB1dF9i aXRzKHBiYywgbGVuICsgMSwgdmFsdWUgKyAxKTsKLSAgICAgZWxzZQotICAgICAgICAgcHV0X2Jp dHMzMihwYmMsIHZhbHVlICsgMSk7Ci0gCi0rICAgIENCU19UUkFDRV9XUklURV9FTkQoKTsKLSsK LSAgICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTE4OCw2ICsxNzMsOCBAQCBzdGF0aWMgaW50IGNi c193cml0ZV9zZV9nb2xvbWIoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRl eHQgKnBiYywKLSAgICAgaW50IGxlbjsKLSAgICAgdWludDMyX3QgdXZhbHVlOwotIAotKyAgICBD QlNfVFJBQ0VfV1JJVEVfU1RBUlQoKTsKLSsKLSAgICAgaWYgKHZhbHVlIDwgcmFuZ2VfbWluIHx8 IHZhbHVlID4gcmFuZ2VfbWF4KSB7Ci0gICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9M T0dfRVJST1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKLSAgICAgICAgICAgICAgICAiJSJQUklkMzIi LCBidXQgbXVzdCBiZSBpbiBbJSJQUklkMzIiLCUiUFJJZDMyIl0uXG4iLAotQEAgLTIwNywyNyAr MTk0LDE0IEBAIHN0YXRpYyBpbnQgY2JzX3dyaXRlX3NlX2dvbG9tYihDb2RlZEJpdHN0cmVhbUNv bnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotICAgICBpZiAocHV0X2JpdHNfbGVmdChw YmMpIDwgMiAqIGxlbiArIDEpCi0gICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TUEMpOwotIAot LSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKLS0gICAgICAgIGNoYXIgYml0c1s2NV07Ci0t ICAgICAgICBpbnQgaTsKLS0KLS0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLS0g ICAgICAgICAgICBiaXRzW2ldID0gJzAnOwotLSAgICAgICAgYml0c1tsZW5dID0gJzEnOwotLSAg ICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotLSAgICAgICAgICAgIGJpdHNbbGVuICsg aSArIDFdID0gKHV2YWx1ZSArIDEpID4+IChsZW4gLSBpIC0gMSkgJiAxID8gJzEnIDogJzAnOwot LSAgICAgICAgYml0c1tsZW4gKyBsZW4gKyAxXSA9IDA7Ci0tCi0tICAgICAgICBmZl9jYnNfdHJh Y2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwdXRfYml0c19jb3VudChwYmMpLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YnNjcmlwdHMsIGJpdHMsIHZhbHVlKTsK LS0gICAgfQotLQotICAgICBwdXRfYml0cyhwYmMsIGxlbiwgMCk7Ci0gICAgIGlmIChsZW4gKyAx IDwgMzIpCi0gICAgICAgICBwdXRfYml0cyhwYmMsIGxlbiArIDEsIHV2YWx1ZSArIDEpOwotICAg ICBlbHNlCi0gICAgICAgICBwdXRfYml0czMyKHBiYywgdXZhbHVlICsgMSk7Ci0gCi0rICAgIENC U19UUkFDRV9XUklURV9FTkQoKTsKLSsKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTI2MSw4 ICsyMzUsNiBAQCBzdGF0aWMgaW50IGNic19oMjY1X3BheWxvYWRfZXh0ZW5zaW9uX3ByZXNlbnQo R2V0Qml0Q29udGV4dCAqZ2JjLCB1aW50MzJfdCBwYXlsbwotIAotICNkZWZpbmUgdSh3aWR0aCwg bmFtZSwgcmFuZ2VfbWluLCByYW5nZV9tYXgpIFwKLSAgICAgICAgIHh1KHdpZHRoLCBuYW1lLCBj dXJyZW50LT5uYW1lLCByYW5nZV9taW4sIHJhbmdlX21heCwgMCwgKQotLSNkZWZpbmUgdWIod2lk dGgsIG5hbWUpIFwKLS0gICAgICAgIHh1KHdpZHRoLCBuYW1lLCBjdXJyZW50LT5uYW1lLCAwLCBN QVhfVUlOVF9CSVRTKHdpZHRoKSwgMCwgKQotICNkZWZpbmUgZmxhZyhuYW1lKSB1YigxLCBuYW1l KQotICNkZWZpbmUgdWUobmFtZSwgcmFuZ2VfbWluLCByYW5nZV9tYXgpIFwKLSAgICAgICAgIHh1 ZShuYW1lLCBjdXJyZW50LT5uYW1lLCByYW5nZV9taW4sIHJhbmdlX21heCwgMCwgKQotQEAgLTI5 OCw2ICsyNzAsMTIgQEAgc3RhdGljIGludCBjYnNfaDI2NV9wYXlsb2FkX2V4dGVuc2lvbl9wcmVz ZW50KEdldEJpdENvbnRleHQgKmdiYywgdWludDMyX3QgcGF5bG8KLSAjZGVmaW5lIFJFQURXUklU RSByZWFkCi0gI2RlZmluZSBSV0NvbnRleHQgR2V0Qml0Q29udGV4dAotIAotKyNkZWZpbmUgdWIo d2lkdGgsIG5hbWUpIGRvIHsgXAotKyAgICAgICAgdWludDMyX3QgdmFsdWU7IFwKLSsgICAgICAg IENIRUNLKGZmX2Nic19yZWFkX3NpbXBsZV91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUs IFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWUpKTsg XAotKyAgICAgICAgY3VycmVudC0+bmFtZSA9IHZhbHVlOyBcCi0rICAgIH0gd2hpbGUgKDApCi0g I2RlZmluZSB4dSh3aWR0aCwgbmFtZSwgdmFyLCByYW5nZV9taW4sIHJhbmdlX21heCwgc3Vicywg Li4uKSBkbyB7IFwKLSAgICAgICAgIHVpbnQzMl90IHZhbHVlOyBcCi0gICAgICAgICBDSEVDSyhm Zl9jYnNfcmVhZF91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwKLUBAIC0zNzIsNiAr MzUwLDcgQEAgc3RhdGljIGludCBjYnNfaDI2NDVfcmVhZF9tb3JlX3Jic3BfZGF0YShHZXRCaXRD b250ZXh0ICpnYmMpCi0gI3VuZGVmIFJFQUQKLSAjdW5kZWYgUkVBRFdSSVRFCi0gI3VuZGVmIFJX Q29udGV4dAotKyN1bmRlZiB1YgotICN1bmRlZiB4dQotICN1bmRlZiB4aQotICN1bmRlZiB4dWUK LUBAIC0zODcsNiArMzY2LDExIEBAIHN0YXRpYyBpbnQgY2JzX2gyNjQ1X3JlYWRfbW9yZV9yYnNw X2RhdGEoR2V0Qml0Q29udGV4dCAqZ2JjKQotICNkZWZpbmUgUkVBRFdSSVRFIHdyaXRlCi0gI2Rl ZmluZSBSV0NvbnRleHQgUHV0Qml0Q29udGV4dAotIAotKyNkZWZpbmUgdWIod2lkdGgsIG5hbWUp IGRvIHsgXAotKyAgICAgICAgdWludDMyX3QgdmFsdWUgPSBjdXJyZW50LT5uYW1lOyBcCi0rICAg ICAgICBDSEVDSyhmZl9jYnNfd3JpdGVfc2ltcGxlX3Vuc2lnbmVkKGN0eCwgcncsIHdpZHRoLCAj bmFtZSwgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1 ZSkpOyBcCi0rICAgIH0gd2hpbGUgKDApCi0gI2RlZmluZSB4dSh3aWR0aCwgbmFtZSwgdmFyLCBy YW5nZV9taW4sIHJhbmdlX21heCwgc3VicywgLi4uKSBkbyB7IFwKLSAgICAgICAgIHVpbnQzMl90 IHZhbHVlID0gdmFyOyBcCi0gICAgICAgICBDSEVDSyhmZl9jYnNfd3JpdGVfdW5zaWduZWQoY3R4 LCBydywgd2lkdGgsICNuYW1lLCBcCi1AQCAtNDUwLDYgKzQzNCw3IEBAIHN0YXRpYyBpbnQgY2Jz X2gyNjQ1X3JlYWRfbW9yZV9yYnNwX2RhdGEoR2V0Qml0Q29udGV4dCAqZ2JjKQotICN1bmRlZiBX UklURQotICN1bmRlZiBSRUFEV1JJVEUKLSAjdW5kZWYgUldDb250ZXh0Ci0rI3VuZGVmIHViCi0g I3VuZGVmIHh1Ci0gI3VuZGVmIHhpCi0gI3VuZGVmIHh1ZQotZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvY2JzX2ludGVybmFsLmggYi9saWJhdmNvZGVjL2Nic19pbnRlcm5hbC5oCi1pbmRleCBlNTg1 Yzc3Li42MGUzMWViIDEwMDY0NAotLS0tIGEvbGliYXZjb2RlYy9jYnNfaW50ZXJuYWwuaAotKysr IGIvbGliYXZjb2RlYy9jYnNfaW50ZXJuYWwuaAotQEAgLTE1MSwyNCArMTUxLDI5IEBAIHR5cGVk ZWYgc3RydWN0IENvZGVkQml0c3RyZWFtVHlwZSB7Ci0gdm9pZCBmZl9jYnNfdHJhY2VfaGVhZGVy KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpuYW1lKTsKLSAKLS12b2lkIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChD b2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgaW50IHBvc2l0aW9uLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGludCAqc3Vic2NyaXB0 cywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpiaXRzdHJp bmcsIGludDY0X3QgdmFsdWUpOwotLQotIAotIC8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIHJlYWQv d3JpdGUgb2YgY29tbW9uIGJpdHN0cmVhbSBlbGVtZW50cywgaW5jbHVkaW5nCi0tLy8gZ2VuZXJh dGlvbiBvZiB0cmFjZSBvdXRwdXQuCi0rLy8gZ2VuZXJhdGlvbiBvZiB0cmFjZSBvdXRwdXQuIFRo ZSBzaW1wbGUgZnVuY3Rpb25zIGFyZSBlcXVpdmFsZW50IHRvCi0rLy8gdGhlaXIgbm9uLXNpbXBs ZSBjb3VudGVycGFydHMgZXhjZXB0IHRoYXQgdGhlaXIgcmFuZ2UgaXMgdW5yZXN0cmljdGVkCi0r Ly8gKGkuZS4gb25seSBsaW1pdGVkIGJ5IHRoZSBhbW91bnQgb2YgYml0cyB1c2VkKSBhbmQgdGhl eSBsYWNrCi0rLy8gdGhlIGFiaWxpdHkgdG8gdXNlIHN1YnNjcmlwdHMuCi0gCi0gaW50IGZmX2Ni c19yZWFkX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0 ICpnYmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwgY29uc3QgY2hhciAq bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCB1 aW50MzJfdCAqd3JpdGVfdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJh bmdlX21pbiwgdWludDMyX3QgcmFuZ2VfbWF4KTsKLSAKLStpbnQgZmZfY2JzX3JlYWRfc2ltcGxl X3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGNvbnN0IGNoYXIg Km5hbWUsIHVpbnQzMl90ICp3cml0ZV90byk7Ci0rCi0gaW50IGZmX2Nic193cml0ZV91bnNpZ25l ZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBjb25zdCBjaGFyICpuYW1lLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCB1aW50MzJfdCB2YWx1 ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJhbmdlX21pbiwgdWludDMy X3QgcmFuZ2VfbWF4KTsKLSAKLStpbnQgZmZfY2JzX3dyaXRlX3NpbXBsZV91bnNpZ25lZChDb2Rl ZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwgY29uc3QgY2hhciAqbmFtZSwgdWludDMy X3QgdmFsdWUpOwotKwotIGludCBmZl9jYnNfcmVhZF9zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250 ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKLSAgICAgICAgICAgICAgICAgICAgICAgIGlu dCB3aWR0aCwgY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGludCAqc3Vic2NyaXB0cywgaW50MzJfdCAqd3JpdGVfdG8sCi1AQCAtMTkxLDYgKzE5Niw4NyBA QCBpbnQgZmZfY2JzX3dyaXRlX3NpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0 Qml0Q29udGV4dCAqcGJjLAotIC8vIHJhbmdlX21pbiBpbiB0aGUgYWJvdmUgZnVuY3Rpb25zLgot ICNkZWZpbmUgTUlOX0lOVF9CSVRTKGxlbmd0aCkgKC0oSU5UNjRfQygxKSA8PCAoKGxlbmd0aCkg LSAxKSkpCi0gCi0rCi0rLy8gU3RhcnQgb2YgYSBzeW50YXggZWxlbWVudCBkdXJpbmcgcmVhZCB0 cmFjaW5nLgotKyNkZWZpbmUgQ0JTX1RSQUNFX1JFQURfU1RBUlQoKSBcCi0rICAgIEdldEJpdENv bnRleHQgdHJhY2Vfc3RhcnQ7IFwKLSsgICAgZG8geyBcCi0rICAgICAgICBpZiAoY3R4LT50cmFj ZV9lbmFibGUpIFwKLSsgICAgICAgICAgICB0cmFjZV9zdGFydCA9ICpnYmM7IFwKLSsgICAgfSB3 aGlsZSAoMCkKLSsKLSsvLyBFbmQgb2YgYSBzeW50YXggZWxlbWVudCBmb3IgdHJhY2luZywgbWFr ZSBjYWxsYmFjay4KLSsjZGVmaW5lIENCU19UUkFDRV9SRUFEX0VORCgpIFwKLSsgICAgZG8geyBc Ci0rICAgICAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsgXAotKyAgICAgICAgICAgIGludCBz dGFydF9wb3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KCZ0cmFjZV9zdGFydCk7IFwKLSsgICAgICAg ICAgICBpbnQgZW5kX3Bvc2l0aW9uICAgPSBnZXRfYml0c19jb3VudChnYmMpOyBcCi0rICAgICAg ICAgICAgYXZfYXNzZXJ0MChzdGFydF9wb3NpdGlvbiA8PSBlbmRfcG9zaXRpb24pOyBcCi0rICAg ICAgICAgICAgY3R4LT50cmFjZV9yZWFkX2NhbGxiYWNrKGN0eC0+dHJhY2VfY29udGV4dCwgJnRy YWNlX3N0YXJ0LCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9w b3NpdGlvbiAtIHN0YXJ0X3Bvc2l0aW9uLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5hbWUsIHN1YnNjcmlwdHMsIHZhbHVlKTsgXAotKyAgICAgICAgfSBcCi0rICAg IH0gd2hpbGUgKDApCi0rCi0rLy8gRW5kIG9mIGEgc3ludGF4IGVsZW1lbnQgd2l0aCBubyBzdWJz Y3JpcHQgZW50cmllcy4KLSsjZGVmaW5lIENCU19UUkFDRV9SRUFEX0VORF9OT19TVUJTQ1JJUFRT KCkgXAotKyAgICBkbyB7IFwKLSsgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cyA9IE5VTEw7 IFwKLSsgICAgICAgIENCU19UUkFDRV9SRUFEX0VORCgpOyBcCi0rICAgIH0gd2hpbGUgKDApCi0r Ci0rLy8gRW5kIG9mIGEgc3ludGF4IGVsZW1lbnQgd2hpY2ggaXMgbWFkZSB1cCBvZiBzdWJlbGVt ZW50cyB3aGljaAotKy8vIGFyZSBhbGVhZHkgdHJhY2VkLCBzbyB3ZSBhcmUgb25seSBzaG93aW5n IHRoZSB2YWx1ZS4KLSsjZGVmaW5lIENCU19UUkFDRV9SRUFEX0VORF9WQUxVRV9PTkxZKCkgXAot KyAgICBkbyB7IFwKLSsgICAgICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeyBcCi0rICAgICAg ICAgICAgY3R4LT50cmFjZV9yZWFkX2NhbGxiYWNrKGN0eC0+dHJhY2VfY29udGV4dCwgJnRyYWNl X3N0YXJ0LCAwLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUs IHN1YnNjcmlwdHMsIHZhbHVlKTsgXAotKyAgICAgICAgfSBcCi0rICAgIH0gd2hpbGUgKDApCi0r Ci0rLy8gU3RhcnQgb2YgYSBzeW50YXggZWxlbWVudCBkdXJpbmcgd3JpdGUgdHJhY2luZy4KLSsj ZGVmaW5lIENCU19UUkFDRV9XUklURV9TVEFSVCgpIFwKLSsgICAgaW50IHN0YXJ0X3Bvc2l0aW9u OyBcCi0rICAgIGRvIHsgXAotKyAgICAgICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSBcCi0rICAg ICAgICAgICAgc3RhcnRfcG9zaXRpb24gPSBwdXRfYml0c19jb3VudChwYmMpOzsgXAotKyAgICB9 IHdoaWxlICgwKQotKwotKy8vIEVuZCBvZiBhIHN5bnRheCBlbGVtZW50IGZvciB0cmFjaW5nLCBt YWtlIGNhbGxiYWNrLgotKyNkZWZpbmUgQ0JTX1RSQUNFX1dSSVRFX0VORCgpIFwKLSsgICAgZG8g eyBcCi0rICAgICAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsgXAotKyAgICAgICAgICAgIGlu dCBlbmRfcG9zaXRpb24gICA9IHB1dF9iaXRzX2NvdW50KHBiYyk7IFwKLSsgICAgICAgICAgICBh dl9hc3NlcnQwKHN0YXJ0X3Bvc2l0aW9uIDw9IGVuZF9wb3NpdGlvbik7IFwKLSsgICAgICAgICAg ICBjdHgtPnRyYWNlX3dyaXRlX2NhbGxiYWNrKGN0eC0+dHJhY2VfY29udGV4dCwgcGJjLCBcCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcG9zaXRpb24gLSBzdGFy dF9wb3NpdGlvbiwgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFt ZSwgc3Vic2NyaXB0cywgdmFsdWUpOyBcCi0rICAgICAgICB9IFwKLSsgICAgfSB3aGlsZSAoMCkK LSsKLSsvLyBFbmQgb2YgYSBzeW50YXggZWxlbWVudCB3aXRoIG5vIHN1YnNjcmlwdCBlbnRyaWVz LgotKyNkZWZpbmUgQ0JTX1RSQUNFX1dSSVRFX0VORF9OT19TVUJTQ1JJUFRTKCkgXAotKyAgICBk byB7IFwKLSsgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cyA9IE5VTEw7IFwKLSsgICAgICAg IENCU19UUkFDRV9XUklURV9FTkQoKTsgXAotKyAgICB9IHdoaWxlICgwKQotKwotKy8vIEVuZCBv ZiBhIHN5bnRheCBlbGVtZW50IHdoaWNoIGlzIG1hZGUgdXAgb2Ygc3ViZWxlbWVudHMgd2hpY2gg YXJlCi0rLy8gYWxlYWR5IHRyYWNlZCwgc28gd2UgYXJlIG9ubHkgc2hvd2luZyB0aGUgdmFsdWUu ICBUaGlzIGZvcmdlcyBhCi0rLy8gUHV0Qml0Q29udGV4dCB0byBwb2ludCB0byB0aGUgcG9zaXRp b24gb2YgdGhlIHN0YXJ0IG9mIHRoZSBzeW50YXgKLSsvLyBlbGVtZW50LCBidXQgdGhlIG90aGVy IHN0YXRlIGRvZXNuJ3QgbWF0dGVyIGJlY2F1c2UgbGVuZ3RoIGlzIHplcm8uCi0rI2RlZmluZSBD QlNfVFJBQ0VfV1JJVEVfRU5EX1ZBTFVFX09OTFkoKSBcCi0rICAgIGRvIHsgXAotKyAgICAgICAg aWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7IFwKLSsgICAgICAgICAgICBQdXRCaXRDb250ZXh0IHRt cDsgXAotKyAgICAgICAgICAgIGluaXRfcHV0X2JpdHMoJnRtcCwgcGJjLT5idWYsIHN0YXJ0X3Bv c2l0aW9uKTsgXAotKyAgICAgICAgICAgIHNraXBfcHV0X2JpdHMoJnRtcCwgc3RhcnRfcG9zaXRp b24pOyBcCi0rICAgICAgICAgICAgY3R4LT50cmFjZV93cml0ZV9jYWxsYmFjayhjdHgtPnRyYWNl X2NvbnRleHQsICZ0bXAsIDAsIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5hbWUsIHN1YnNjcmlwdHMsIHZhbHVlKTsgXAotKyAgICAgICAgfSBcCi0rICAgIH0gd2hp bGUgKDApCi0rCi0gI2RlZmluZSBUWVBFX0xJU1QoLi4uKSB7IF9fVkFfQVJHU19fIH0KLSAjZGVm aW5lIENCU19VTklUX1RZUEVfUE9EKHR5cGVfLCBzdHJ1Y3R1cmUpIHsgXAotICAgICAgICAgLm5i X3VuaXRfdHlwZXMgID0gMSwgXAotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzX21wZWcyLmMg Yi9saWJhdmNvZGVjL2Nic19tcGVnMi5jCi1pbmRleCAwNGIwYzdmLi4zN2ZjMjhhIDEwMDY0NAot LS0tIGEvbGliYXZjb2RlYy9jYnNfbXBlZzIuYwotKysrIGIvbGliYXZjb2RlYy9jYnNfbXBlZzIu YwotQEAgLTQwLDggKzQwLDYgQEAKLSAKLSAjZGVmaW5lIFNVQlNDUklQVFMoc3VicywgLi4uKSAo c3VicyA+IDAgPyAoKGludFtzdWJzICsgMV0peyBzdWJzLCBfX1ZBX0FSR1NfXyB9KSA6IE5VTEwp Ci0gCi0tI2RlZmluZSB1aSh3aWR0aCwgbmFtZSkgXAotLSAgICAgICAgeHVpKHdpZHRoLCBuYW1l LCBjdXJyZW50LT5uYW1lLCAwLCBNQVhfVUlOVF9CSVRTKHdpZHRoKSwgMCwgKQotICNkZWZpbmUg dWlyKHdpZHRoLCBuYW1lKSBcCi0gICAgICAgICB4dWkod2lkdGgsIG5hbWUsIGN1cnJlbnQtPm5h bWUsIDEsIE1BWF9VSU5UX0JJVFMod2lkdGgpLCAwLCApCi0gI2RlZmluZSB1aXMod2lkdGgsIG5h bWUsIHN1YnMsIC4uLikgXAotQEAgLTY1LDYgKzYzLDEyIEBACi0gI2RlZmluZSBSRUFEV1JJVEUg cmVhZAotICNkZWZpbmUgUldDb250ZXh0IEdldEJpdENvbnRleHQKLSAKLSsjZGVmaW5lIHVpKHdp ZHRoLCBuYW1lKSBkbyB7IFwKLSsgICAgICAgIHVpbnQzMl90IHZhbHVlOyBcCi0rICAgICAgICBD SEVDSyhmZl9jYnNfcmVhZF9zaW1wbGVfdW5zaWduZWQoY3R4LCBydywgd2lkdGgsICNuYW1lLCBc Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVlKSk7IFwK LSsgICAgICAgIGN1cnJlbnQtPm5hbWUgPSB2YWx1ZTsgXAotKyAgICB9IHdoaWxlICgwKQotICNk ZWZpbmUgeHVpYSh3aWR0aCwgc3RyaW5nLCB2YXIsIHJhbmdlX21pbiwgcmFuZ2VfbWF4LCBzdWJz LCAuLi4pIGRvIHsgXAotICAgICAgICAgdWludDMyX3QgdmFsdWU7IFwKLSAgICAgICAgIENIRUNL KGZmX2Nic19yZWFkX3Vuc2lnbmVkKGN0eCwgcncsIHdpZHRoLCBzdHJpbmcsIFwKLUBAIC05NSw2 ICs5OSw3IEBACi0gI3VuZGVmIFJFQUQKLSAjdW5kZWYgUkVBRFdSSVRFCi0gI3VuZGVmIFJXQ29u dGV4dAotKyN1bmRlZiB1aQotICN1bmRlZiB4dWlhCi0gI3VuZGVmIHhzaQotICN1bmRlZiBuZXh0 Yml0cwotQEAgLTEwNSw2ICsxMTAsMTEgQEAKLSAjZGVmaW5lIFJFQURXUklURSB3cml0ZQotICNk ZWZpbmUgUldDb250ZXh0IFB1dEJpdENvbnRleHQKLSAKLSsjZGVmaW5lIHVpKHdpZHRoLCBuYW1l KSBkbyB7IFwKLSsgICAgICAgIENIRUNLKGZmX2Nic193cml0ZV9zaW1wbGVfdW5zaWduZWQoY3R4 LCBydywgd2lkdGgsICNuYW1lLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN1cnJlbnQtPm5hbWUpKTsgXAotKyAgICB9IHdoaWxlICgwKQotKwotICNkZWZp bmUgeHVpYSh3aWR0aCwgc3RyaW5nLCB2YXIsIHJhbmdlX21pbiwgcmFuZ2VfbWF4LCBzdWJzLCAu Li4pIGRvIHsgXAotICAgICAgICAgQ0hFQ0soZmZfY2JzX3dyaXRlX3Vuc2lnbmVkKGN0eCwgcncs IHdpZHRoLCBzdHJpbmcsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT VUJTQ1JJUFRTKHN1YnMsIF9fVkFfQVJHU19fKSwgXAotQEAgLTEzNCw2ICsxNDQsNyBAQAotICN1 bmRlZiBXUklURQotICN1bmRlZiBSRUFEV1JJVEUKLSAjdW5kZWYgUldDb250ZXh0Ci0rI3VuZGVm IHVpCi0gI3VuZGVmIHh1aWEKLSAjdW5kZWYgeHNpCi0gI3VuZGVmIG5leHRiaXRzCi1kaWZmIC0t Z2l0IGEvbGliYXZjb2RlYy9jYnNfdnA5LmMgYi9saWJhdmNvZGVjL2Nic192cDkuYwotaW5kZXgg MTg0ZmRjYS4uODE2ZDA2ZCAxMDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvY2JzX3ZwOS5jCi0rKysg Yi9saWJhdmNvZGVjL2Nic192cDkuYwotQEAgLTI4LDExICsyOCwxMCBAQCBzdGF0aWMgaW50IGNi c192cDlfcmVhZF9zKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpn YmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIGlu dDMyX3QgKndyaXRlX3RvKQotIHsKLSAgICAgdWludDMyX3QgbWFnbml0dWRlOwotLSAgICBpbnQg cG9zaXRpb24sIHNpZ247Ci0rICAgIGludCBzaWduOwotICAgICBpbnQzMl90IHZhbHVlOwotIAot LSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCi0tICAgICAgICBwb3NpdGlvbiA9IGdldF9iaXRz X2NvdW50KGdiYyk7Ci0rICAgIENCU19UUkFDRV9SRUFEX1NUQVJUKCk7Ci0gCi0gICAgIGlmIChn ZXRfYml0c19sZWZ0KGdiYykgPCB3aWR0aCArIDEpIHsKLSAgICAgICAgIGF2X2xvZyhjdHgtPmxv Z19jdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgc2lnbmVkIHZhbHVlIGF0ICIKLUBAIC00NCwx NyArNDMsNyBAQCBzdGF0aWMgaW50IGNic192cDlfcmVhZF9zKENvZGVkQml0c3RyZWFtQ29udGV4 dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAgIHNpZ24gICAgICA9IGdldF9iaXRzMShn YmMpOwotICAgICB2YWx1ZSAgICAgPSBzaWduID8gLShpbnQzMl90KW1hZ25pdHVkZSA6IG1hZ25p dHVkZTsKLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7Ci0tICAgICAgICBjaGFyIGJp dHNbMzNdOwotLSAgICAgICAgaW50IGk7Ci0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7 IGkrKykKLS0gICAgICAgICAgICBiaXRzW2ldID0gbWFnbml0dWRlID4+ICh3aWR0aCAtIGkgLSAx KSAmIDEgPyAnMScgOiAnMCc7Ci0tICAgICAgICBiaXRzW2ldID0gc2lnbiA/ICcxJyA6ICcwJzsK LS0gICAgICAgIGJpdHNbaSArIDFdID0gMDsKLS0KLS0gICAgICAgIGZmX2Nic190cmFjZV9zeW50 YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBzdWJzY3JpcHRzLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMsIHZhbHVlKTsKLS0gICAgfQotKyAgICBDQlNf VFJBQ0VfUkVBRF9FTkQoKTsKLSAKLSAgICAgKndyaXRlX3RvID0gdmFsdWU7Ci0gICAgIHJldHVy biAwOwotQEAgLTY3LDI3ICs1NiwxOSBAQCBzdGF0aWMgaW50IGNic192cDlfd3JpdGVfcyhDb2Rl ZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotICAgICB1aW50MzJf dCBtYWduaXR1ZGU7Ci0gICAgIGludCBzaWduOwotIAotKyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RB UlQoKTsKLSsKLSAgICAgaWYgKHB1dF9iaXRzX2xlZnQocGJjKSA8IHdpZHRoICsgMSkKLSAgICAg ICAgIHJldHVybiBBVkVSUk9SKEVOT1NQQyk7Ci0gCi0gICAgIHNpZ24gICAgICA9IHZhbHVlIDwg MDsKLSAgICAgbWFnbml0dWRlID0gc2lnbiA/IC12YWx1ZSA6IHZhbHVlOwotIAotLSAgICBpZiAo Y3R4LT50cmFjZV9lbmFibGUpIHsKLS0gICAgICAgIGNoYXIgYml0c1szM107Ci0tICAgICAgICBp bnQgaTsKLS0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0aDsgaSsrKQotLSAgICAgICAgICAg IGJpdHNbaV0gPSBtYWduaXR1ZGUgPj4gKHdpZHRoIC0gaSAtIDEpICYgMSA/ICcxJyA6ICcwJzsK LS0gICAgICAgIGJpdHNbaV0gPSBzaWduID8gJzEnIDogJzAnOwotLSAgICAgICAgYml0c1tpICsg MV0gPSAwOwotLQotLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcHV0 X2JpdHNfY291bnQocGJjKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu YW1lLCBzdWJzY3JpcHRzLCBiaXRzLCB2YWx1ZSk7Ci0tICAgIH0KLS0KLSAgICAgcHV0X2JpdHMo cGJjLCB3aWR0aCwgbWFnbml0dWRlKTsKLSAgICAgcHV0X2JpdHMocGJjLCAxLCBzaWduKTsKLSAK LSsgICAgQ0JTX1RSQUNFX1dSSVRFX0VORCgpOwotKwotICAgICByZXR1cm4gMDsKLSB9Ci0gCi1A QCAtOTYsMzIgKzc3LDI0IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV9yZWFkX2luY3JlbWVudChDb2Rl ZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90ICp3cml0ZV90 bykKLSB7Ci0gICAgIHVpbnQzMl90IHZhbHVlOwotLSAgICBpbnQgcG9zaXRpb24sIGk7Ci0tICAg IGNoYXIgYml0c1s4XTsKLSAKLS0gICAgYXZfYXNzZXJ0MChyYW5nZV9taW4gPD0gcmFuZ2VfbWF4 ICYmIHJhbmdlX21heCAtIHJhbmdlX21pbiA8IHNpemVvZihiaXRzKSAtIDEpOwotLSAgICBpZiAo Y3R4LT50cmFjZV9lbmFibGUpCi0tICAgICAgICBwb3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdi Yyk7Ci0rICAgIENCU19UUkFDRV9SRUFEX1NUQVJUKCk7Ci0rCi0rICAgIGF2X2Fzc2VydDAocmFu Z2VfbWluIDw9IHJhbmdlX21heCAmJiByYW5nZV9tYXggLSByYW5nZV9taW4gPCAzMik7Ci0gCi0t ICAgIGZvciAoaSA9IDAsIHZhbHVlID0gcmFuZ2VfbWluOyB2YWx1ZSA8IHJhbmdlX21heDspIHsK LSsgICAgZm9yICh2YWx1ZSA9IHJhbmdlX21pbjsgdmFsdWUgPCByYW5nZV9tYXg7KSB7Ci0gICAg ICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYmMpIDwgMSkgewotICAgICAgICAgICAgIGF2X2xvZyhj dHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgaW5jcmVtZW50IHZhbHVlIGF0ICIK LSAgICAgICAgICAgICAgICAgICAgIiVzOiBiaXRzdHJlYW0gZW5kZWQuXG4iLCBuYW1lKTsKLSAg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgIH0KLS0gICAg ICAgIGlmIChnZXRfYml0czEoZ2JjKSkgewotLSAgICAgICAgICAgIGJpdHNbaSsrXSA9ICcxJzsK LSsgICAgICAgIGlmIChnZXRfYml0czEoZ2JjKSkKLSAgICAgICAgICAgICArK3ZhbHVlOwotLSAg ICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICBiaXRzW2krK10gPSAnMCc7Ci0rICAgICAgICBl bHNlCi0gICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICB9Ci0gICAgIH0KLSAKLS0gICAgaWYg KGN0eC0+dHJhY2VfZW5hYmxlKSB7Ci0tICAgICAgICBiaXRzW2ldID0gMDsKLS0gICAgICAgIGZm X2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBOVUxMLCBiaXRz LCB2YWx1ZSk7Ci0tICAgIH0KLSsgICAgQ0JTX1RSQUNFX1JFQURfRU5EX05PX1NVQlNDUklQVFMo KTsKLSAKLSAgICAgKndyaXRlX3RvID0gdmFsdWU7Ci0gICAgIHJldHVybiAwOwotQEAgLTEzMyw2 ICsxMDYsOCBAQCBzdGF0aWMgaW50IGNic192cDlfd3JpdGVfaW5jcmVtZW50KENvZGVkQml0c3Ry ZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYgotIHsKLSAgICAgaW50IGxlbjsKLSAK LSsgICAgQ0JTX1RSQUNFX1dSSVRFX1NUQVJUKCk7Ci0rCi0gICAgIGF2X2Fzc2VydDAocmFuZ2Vf bWluIDw9IHJhbmdlX21heCAmJiByYW5nZV9tYXggLSByYW5nZV9taW4gPCA4KTsKLSAgICAgaWYg KHZhbHVlIDwgcmFuZ2VfbWluIHx8IHZhbHVlID4gcmFuZ2VfbWF4KSB7Ci0gICAgICAgICBhdl9s b2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKLUBAIC0x NDgsMjMgKzEyMywxMSBAQCBzdGF0aWMgaW50IGNic192cDlfd3JpdGVfaW5jcmVtZW50KENvZGVk Qml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYgotICAgICBpZiAocHV0X2Jp dHNfbGVmdChwYmMpIDwgbGVuKQotICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BDKTsKLSAK LS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7Ci0tICAgICAgICBjaGFyIGJpdHNbOF07Ci0t ICAgICAgICBpbnQgaTsKLS0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotLSAg ICAgICAgICAgIGlmIChyYW5nZV9taW4gKyBpID09IHZhbHVlKQotLSAgICAgICAgICAgICAgICBi aXRzW2ldID0gJzAnOwotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgYml0c1tp XSA9ICcxJzsKLS0gICAgICAgIH0KLS0gICAgICAgIGJpdHNbaV0gPSAwOwotLSAgICAgICAgZmZf Y2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcHV0X2JpdHNfY291bnQocGJjKSwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBOVUxMLCBiaXRzLCB2YWx1ZSk7 Ci0tICAgIH0KLS0KLSAgICAgaWYgKGxlbiA+IDApCi0gICAgICAgICBwdXRfYml0cyhwYmMsIGxl biwgKDEgPDwgbGVuKSAtIDEgLSAodmFsdWUgIT0gcmFuZ2VfbWF4KSk7Ci0gCi0rICAgIENCU19U UkFDRV9XUklURV9FTkRfTk9fU1VCU0NSSVBUUygpOwotKwotICAgICByZXR1cm4gMDsKLSB9Ci0g Ci1AQCAtMTczLDEyICsxMzYsMTEgQEAgc3RhdGljIGludCBjYnNfdnA5X3JlYWRfbGUoQ29kZWRC aXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIHVpbnQzMl90ICp3cml0ZV90bykK LSB7Ci0gICAgIHVpbnQzMl90IHZhbHVlOwotLSAgICBpbnQgcG9zaXRpb24sIGI7Ci0rICAgIGlu dCBiOwotIAotLSAgICBhdl9hc3NlcnQwKHdpZHRoICUgOCA9PSAwKTsKLSsgICAgQ0JTX1RSQUNF X1JFQURfU1RBUlQoKTsKLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQotLSAgICAgICAg cG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOwotKyAgICBhdl9hc3NlcnQwKHdpZHRoICUg OCA9PSAwKTsKLSAKLSAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IHdpZHRoKSB7Ci0gICAg ICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIGxlIHZhbHVl IGF0ICIKLUBAIC0xOTAsMTcgKzE1Miw3IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV9yZWFkX2xlKENv ZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAgIGZvciAo YiA9IDA7IGIgPCB3aWR0aDsgYiArPSA4KQotICAgICAgICAgdmFsdWUgfD0gZ2V0X2JpdHMoZ2Jj LCA4KSA8PCBiOwotIAotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKLS0gICAgICAgIGNo YXIgYml0c1szM107Ci0tICAgICAgICBpbnQgaTsKLS0gICAgICAgIGZvciAoYiA9IDA7IGIgPCB3 aWR0aDsgYiArPSA4KQotLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCi0tICAg ICAgICAgICAgICAgIGJpdHNbYiArIGldID0gdmFsdWUgPj4gKGIgKyBpKSAmIDEgPyAnMScgOiAn MCc7Ci0tICAgICAgICBiaXRzW2JdID0gMDsKLS0KLS0gICAgICAgIGZmX2Nic190cmFjZV9zeW50 YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBzdWJzY3JpcHRzLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMsIHZhbHVlKTsKLS0gICAgfQotKyAgICBDQlNf VFJBQ0VfUkVBRF9FTkQoKTsKLSAKLSAgICAgKndyaXRlX3RvID0gdmFsdWU7Ci0gICAgIHJldHVy biAwOwotQEAgLTIxMiwyNiArMTY0LDE4IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93cml0ZV9sZShD b2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotIHsKLSAgICAg aW50IGI7Ci0gCi0rICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOwotKwotICAgICBhdl9hc3Nl cnQwKHdpZHRoICUgOCA9PSAwKTsKLSAKLSAgICAgaWYgKHB1dF9iaXRzX2xlZnQocGJjKSA8IHdp ZHRoKQotICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BDKTsKLSAKLS0gICAgaWYgKGN0eC0+ dHJhY2VfZW5hYmxlKSB7Ci0tICAgICAgICBjaGFyIGJpdHNbMzNdOwotLSAgICAgICAgaW50IGk7 Ci0tICAgICAgICBmb3IgKGIgPSAwOyBiIDwgd2lkdGg7IGIgKz0gOCkKLS0gICAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgODsgaSsrKQotLSAgICAgICAgICAgICAgICBiaXRzW2IgKyBpXSA9IHZh bHVlID4+IChiICsgaSkgJiAxID8gJzEnIDogJzAnOwotLSAgICAgICAgYml0c1tiXSA9IDA7Ci0t Ci0tICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwdXRfYml0c19jb3Vu dChwYmMpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YnNj cmlwdHMsIGJpdHMsIHZhbHVlKTsKLS0gICAgfQotLQotICAgICBmb3IgKGIgPSAwOyBiIDwgd2lk dGg7IGIgKz0gOCkKLSAgICAgICAgIHB1dF9iaXRzKHBiYywgOCwgdmFsdWUgPj4gYiAmIDB4ZmYp OwotIAotKyAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EKCk7Ci0rCi0gICAgIHJldHVybiAwOwotIH0K LSAKLUBAIC0yNTEsOCArMTk1LDYgQEAgc3RhdGljIGludCBjYnNfdnA5X3dyaXRlX2xlKENvZGVk Qml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCi0gCi0gI2RlZmluZSBT VUJTQ1JJUFRTKHN1YnMsIC4uLikgKHN1YnMgPiAwID8gKChpbnRbc3VicyArIDFdKXsgc3Vicywg X19WQV9BUkdTX18gfSkgOiBOVUxMKQotIAotLSNkZWZpbmUgZih3aWR0aCwgbmFtZSkgXAotLSAg ICAgICAgeGYod2lkdGgsIG5hbWUsIGN1cnJlbnQtPm5hbWUsIDAsICkKLSAjZGVmaW5lIHMod2lk dGgsIG5hbWUpIFwKLSAgICAgICAgIHhzKHdpZHRoLCBuYW1lLCBjdXJyZW50LT5uYW1lLCAwLCAp Ci0gI2RlZmluZSBmcyh3aWR0aCwgbmFtZSwgc3VicywgLi4uKSBcCi1AQCAtMjY0LDYgKzIwNiwx MiBAQCBzdGF0aWMgaW50IGNic192cDlfd3JpdGVfbGUoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpj dHgsIFB1dEJpdENvbnRleHQgKnBiYywKLSAjZGVmaW5lIFJFQURXUklURSByZWFkCi0gI2RlZmlu ZSBSV0NvbnRleHQgR2V0Qml0Q29udGV4dAotIAotKyNkZWZpbmUgZih3aWR0aCwgbmFtZSkgZG8g eyBcCi0rICAgICAgICB1aW50MzJfdCB2YWx1ZTsgXAotKyAgICAgICAgQ0hFQ0soZmZfY2JzX3Jl YWRfc2ltcGxlX3Vuc2lnbmVkKGN0eCwgcncsIHdpZHRoLCAjbmFtZSwgXAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZSkpOyBcCi0rICAgICAgICBjdXJy ZW50LT5uYW1lID0gdmFsdWU7IFwKLSsgICAgfSB3aGlsZSAoMCkKLSAjZGVmaW5lIHhmKHdpZHRo LCBuYW1lLCB2YXIsIHN1YnMsIC4uLikgZG8geyBcCi0gICAgICAgICB1aW50MzJfdCB2YWx1ZTsg XAotICAgICAgICAgQ0hFQ0soZmZfY2JzX3JlYWRfdW5zaWduZWQoY3R4LCBydywgd2lkdGgsICNu YW1lLCBcCi1AQCAtMzI5LDYgKzI3Nyw3IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93cml0ZV9sZShD b2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotICN1bmRlZiBS RUFECi0gI3VuZGVmIFJFQURXUklURQotICN1bmRlZiBSV0NvbnRleHQKLSsjdW5kZWYgZgotICN1 bmRlZiB4ZgotICN1bmRlZiB4cwotICN1bmRlZiBpbmNyZW1lbnQKLUBAIC0zNDQsNiArMjkzLDEw IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93cml0ZV9sZShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0 eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotICNkZWZpbmUgUkVBRFdSSVRFIHdyaXRlCi0gI2RlZmlu ZSBSV0NvbnRleHQgUHV0Qml0Q29udGV4dAotIAotKyNkZWZpbmUgZih3aWR0aCwgbmFtZSkgZG8g eyBcCi0rICAgICAgICBDSEVDSyhmZl9jYnNfd3JpdGVfc2ltcGxlX3Vuc2lnbmVkKGN0eCwgcncs IHdpZHRoLCAjbmFtZSwgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjdXJyZW50LT5uYW1lKSk7IFwKLSsgICAgfSB3aGlsZSAoMCkKLSAjZGVmaW5lIHhmKHdp ZHRoLCBuYW1lLCB2YXIsIHN1YnMsIC4uLikgZG8geyBcCi0gICAgICAgICBDSEVDSyhmZl9jYnNf d3JpdGVfdW5zaWduZWQoY3R4LCBydywgd2lkdGgsICNuYW1lLCBcCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU1VCU0NSSVBUUyhzdWJzLCBfX1ZBX0FSR1NfXyksIFwKLUBA IC0zOTYsNiArMzQ5LDcgQEAgc3RhdGljIGludCBjYnNfdnA5X3dyaXRlX2xlKENvZGVkQml0c3Ry ZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCi0gI3VuZGVmIFdSSVRFCi0gI3Vu ZGVmIFJFQURXUklURQotICN1bmRlZiBSV0NvbnRleHQKLSsjdW5kZWYgZgotICN1bmRlZiB4Zgot ICN1bmRlZiB4cwotICN1bmRlZiBpbmNyZW1lbnQKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2V4 dHJhY3RfZXh0cmFkYXRhX2JzZi5jIGIvbGliYXZjb2RlYy9leHRyYWN0X2V4dHJhZGF0YV9ic2Yu YwotaW5kZXggMzI5YjFhNi4uN2VlZGIxNiAxMDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvZXh0cmFj dF9leHRyYWRhdGFfYnNmLmMKLSsrKyBiL2xpYmF2Y29kZWMvZXh0cmFjdF9leHRyYWRhdGFfYnNm LmMKLUBAIC00OCwxMCArNDgsOSBAQCB0eXBlZGVmIHN0cnVjdCBFeHRyYWN0RXh0cmFkYXRhQ29u dGV4dCB7Ci0gICAgIGludCByZW1vdmU7Ci0gfSBFeHRyYWN0RXh0cmFkYXRhQ29udGV4dDsKLSAK LS1zdGF0aWMgaW50IHZhbF9pbl9hcnJheShjb25zdCBpbnQgKmFyciwgaW50IGxlbiwgaW50IHZh bCkKLStzdGF0aWMgaW50IHZhbF9pbl9hcnJheShjb25zdCBpbnQgKmFyciwgc2l6ZV90IGxlbiwg aW50IHZhbCkKLSB7Ci0tICAgIGludCBpOwotLSAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKysp Ci0rICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuOyBpKyspCi0gICAgICAgICBpZiAoYXJy W2ldID09IHZhbCkKLSAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgcmV0dXJuIDA7Ci1AQCAt MTQ1LDcgKzE0NCw3IEBAIHN0YXRpYyBpbnQgZXh0cmFjdF9leHRyYWRhdGFfaDI2NDUoQVZCU0ZD b250ZXh0ICpjdHgsIEFWUGFja2V0ICpwa3QsCi0gCi0gICAgIGludCBleHRyYWRhdGFfc2l6ZSA9 IDAsIGZpbHRlcmVkX3NpemUgPSAwOwotICAgICBjb25zdCBpbnQgKmV4dHJhZGF0YV9uYWxfdHlw ZXM7Ci0tICAgIGludCBuYl9leHRyYWRhdGFfbmFsX3R5cGVzOwotKyAgICBzaXplX3QgbmJfZXh0 cmFkYXRhX25hbF90eXBlczsKLSAgICAgaW50IGksIGhhc19zcHMgPSAwLCBoYXNfdnBzID0gMCwg cmV0ID0gMDsKLSAKLSAgICAgaWYgKGN0eC0+cGFyX2luLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9IRVZDKSB7Ci1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy90cmFjZV9oZWFkZXJzX2JzZi5jIGIv bGliYXZjb2RlYy90cmFjZV9oZWFkZXJzX2JzZi5jCi1pbmRleCAwMjhiMGExLi44NzgxZjVmIDEw MDY0NAotLS0tIGEvbGliYXZjb2RlYy90cmFjZV9oZWFkZXJzX2JzZi5jCi0rKysgYi9saWJhdmNv ZGVjL3RyYWNlX2hlYWRlcnNfYnNmLmMKLUBAIC00NCw2ICs0NCw4IEBAIHN0YXRpYyBpbnQgdHJh Y2VfaGVhZGVyc19pbml0KEFWQlNGQ29udGV4dCAqYnNmKQotIAotICAgICBjdHgtPmNiYy0+dHJh Y2VfZW5hYmxlID0gMTsKLSAgICAgY3R4LT5jYmMtPnRyYWNlX2xldmVsICA9IEFWX0xPR19JTkZP OwotKyAgICBjdHgtPmNiYy0+dHJhY2VfY29udGV4dCA9IGN0eC0+Y2JjOwotKyAgICBjdHgtPmNi Yy0+dHJhY2VfcmVhZF9jYWxsYmFjayA9IGZmX2Nic190cmFjZV9yZWFkX2xvZzsKLSAKLSAgICAg aWYgKGJzZi0+cGFyX2luLT5leHRyYWRhdGEpIHsKLSAgICAgICAgIENvZGVkQml0c3RyZWFtRnJh Z21lbnQgKmZyYWcgPSAmY3R4LT5mcmFnbWVudDsKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Zh YXBpX2VuY29kZS5jIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGUuYwotaW5kZXggYmZjYTMxNS4u ZjViZjVhYiAxMDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlLmMKLSsrKyBiL2xp YmF2Y29kZWMvdmFhcGlfZW5jb2RlLmMKLUBAIC0yNzYsMjEgKzI3NiwzNCBAQCBzdGF0aWMgaW50 IHZhYXBpX2VuY29kZV9pc3N1ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0gICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX0RFQlVHLCAiSXNzdWluZyBlbmNvZGUgZm9yIHBpYyAlIlBSSWQ2NCIvJSJQ UklkNjQiICIKLSAgICAgICAgICAgICJhcyB0eXBlICVzLlxuIiwgcGljLT5kaXNwbGF5X29yZGVy LCBwaWMtPmVuY29kZV9vcmRlciwKLSAgICAgICAgICAgIHBpY3R1cmVfdHlwZV9uYW1lW3BpYy0+ dHlwZV0pOwotLSAgICBpZiAocGljLT5uYl9yZWZzID09IDApIHsKLSsgICAgaWYgKHBpYy0+bmJf cmVmc1swXSA9PSAwICYmIHBpYy0+bmJfcmVmc1sxXSA9PSAwKSB7Ci0gICAgICAgICBhdl9sb2co YXZjdHgsIEFWX0xPR19ERUJVRywgIk5vIHJlZmVyZW5jZSBwaWN0dXJlcy5cbiIpOwotICAgICB9 IGVsc2UgewotLSAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJSZWZlcnMgdG86 Iik7Ci0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBpKyspIHsKLSsgICAg ICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiTDAgcmVmZXJzIHRvIik7Ci0rICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzWzBdOyBpKyspIHsKLSAgICAgICAgICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIiAlIlBSSWQ2NCIvJSJQUklkNjQsCi0tICAgICAg ICAgICAgICAgICAgIHBpYy0+cmVmc1tpXS0+ZGlzcGxheV9vcmRlciwgcGljLT5yZWZzW2ldLT5l bmNvZGVfb3JkZXIpOwotKyAgICAgICAgICAgICAgICAgICBwaWMtPnJlZnNbMF1baV0tPmRpc3Bs YXlfb3JkZXIsIHBpYy0+cmVmc1swXVtpXS0+ZW5jb2RlX29yZGVyKTsKLSAgICAgICAgIH0KLSAg ICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiLlxuIik7Ci0rCi0rICAgICAgICBp ZiAocGljLT5uYl9yZWZzWzFdKSB7Ci0rICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0df REVCVUcsICJMMSByZWZlcnMgdG8iKTsKLSsgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGlj LT5uYl9yZWZzWzFdOyBpKyspIHsKLSsgICAgICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9M T0dfREVCVUcsICIgJSJQUklkNjQiLyUiUFJJZDY0LAotKyAgICAgICAgICAgICAgICAgICAgICAg cGljLT5yZWZzWzFdW2ldLT5kaXNwbGF5X29yZGVyLCBwaWMtPnJlZnNbMV1baV0tPmVuY29kZV9v cmRlcik7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9H X0RFQlVHLCAiLlxuIik7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAKLSAgICAgYXZfYXNzZXJ0MCgh cGljLT5lbmNvZGVfaXNzdWVkKTsKLS0gICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmczsg aSsrKSB7Ci0tICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1tpXSk7Ci0tICAgICAgICBhdl9h c3NlcnQwKHBpYy0+cmVmc1tpXS0+ZW5jb2RlX2lzc3VlZCk7Ci0rICAgIGZvciAoaSA9IDA7IGkg PCBwaWMtPm5iX3JlZnNbMF07IGkrKykgewotKyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNb MF1baV0pOwotKyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbMF1baV0tPmVuY29kZV9pc3N1 ZWQpOwotKyAgICB9Ci0rICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMV07IGkrKykg ewotKyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbMV1baV0pOwotKyAgICAgICAgYXZfYXNz ZXJ0MChwaWMtPnJlZnNbMV1baV0tPmVuY29kZV9pc3N1ZWQpOwotICAgICB9Ci0gCi0gICAgIGF2 X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiSW5wdXQgc3VyZmFjZSBpcyAlI3guXG4iLCBwaWMt PmlucHV0X3N1cmZhY2UpOwotQEAgLTY1MCw3OSArNjYzLDIwMCBAQCBmYWlsX2F0X2VuZDoKLSAg ICAgcmV0dXJuIGVycjsKLSB9Ci0gCi0tc3RhdGljIGludCB2YWFwaV9lbmNvZGVfb3V0cHV0KEFW Q29kZWNDb250ZXh0ICphdmN0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFB UElFbmNvZGVQaWN0dXJlICpwaWMsIEFWUGFja2V0ICpwa3QpCi0rc3RhdGljIGludCB2YWFwaV9l bmNvZGVfc2V0X291dHB1dF9wcm9wZXJ0eShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUg KnBpYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWUGFj a2V0ICpwa3QpCi0rewotKyAgICBWQUFQSUVuY29kZUNvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2 X2RhdGE7Ci0rCi0rICAgIGlmIChwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0lEUikKLSsgICAg ICAgIHBrdC0+ZmxhZ3MgfD0gQVZfUEtUX0ZMQUdfS0VZOwotKwotKyAgICBwa3QtPnB0cyA9IHBp Yy0+cHRzOwotKyAgICBwa3QtPmR1cmF0aW9uID0gcGljLT5kdXJhdGlvbjsKLSsKLSsgICAgLy8g Zm9yIG5vLWRlbGF5IGVuY29kZXJzIHRoaXMgaXMgaGFuZGxlZCBpbiBnZW5lcmljIGNvZGVjCi0r ICAgIGlmIChhdmN0eC0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9ERUxBWSAm JgotKyAgICAgICAgYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19DT1BZX09QQVFVRSkgewot KyAgICAgICAgcGt0LT5vcGFxdWUgICAgID0gcGljLT5vcGFxdWU7Ci0rICAgICAgICBwa3QtPm9w YXF1ZV9yZWYgPSBwaWMtPm9wYXF1ZV9yZWY7Ci0rICAgICAgICBwaWMtPm9wYXF1ZV9yZWYgPSBO VUxMOwotKyAgICB9Ci0rCi0rICAgIGlmIChjdHgtPmNvZGVjLT5mbGFncyAmIEZMQUdfVElNRVNU QU1QX05PX0RFTEFZKSB7Ci0rICAgICAgICBwa3QtPmR0cyA9IHBrdC0+cHRzOwotKyAgICAgICAg cmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGN0eC0+b3V0cHV0X2RlbGF5ID09IDApIHsK LSsgICAgICAgIHBrdC0+ZHRzID0gcGt0LT5wdHM7Ci0rICAgIH0gZWxzZSBpZiAocGljLT5lbmNv ZGVfb3JkZXIgPCBjdHgtPmRlY29kZV9kZWxheSkgewotKyAgICAgICAgaWYgKGN0eC0+dHNfcmlu Z1twaWMtPmVuY29kZV9vcmRlcl0gPCBJTlQ2NF9NSU4gKyBjdHgtPmR0c19wdHNfZGlmZikKLSsg ICAgICAgICAgICBwa3QtPmR0cyA9IElOVDY0X01JTjsKLSsgICAgICAgIGVsc2UKLSsgICAgICAg ICAgICBwa3QtPmR0cyA9IGN0eC0+dHNfcmluZ1twaWMtPmVuY29kZV9vcmRlcl0gLSBjdHgtPmR0 c19wdHNfZGlmZjsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIHBrdC0+ZHRzID0gY3R4LT50c19y aW5nWyhwaWMtPmVuY29kZV9vcmRlciAtIGN0eC0+ZGVjb2RlX2RlbGF5KSAlCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoMyAqIGN0eC0+b3V0cHV0X2RlbGF5ICsgY3R4LT5hc3lu Y19kZXB0aCldOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50 IHZhYXBpX2VuY29kZV9nZXRfY29kZWRfYnVmZmVyX3NpemUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LCBWQUJ1ZmZlcklEIGJ1Zl9pZCkKLSB7Ci0gICAgIFZBQVBJRW5jb2RlQ29udGV4dCAqY3R4ID0g YXZjdHgtPnByaXZfZGF0YTsKLSAgICAgVkFDb2RlZEJ1ZmZlclNlZ21lbnQgKmJ1Zl9saXN0LCAq YnVmOwotKyAgICBpbnQgc2l6ZSA9IDA7Ci0gICAgIFZBU3RhdHVzIHZhczsKLS0gICAgaW50IHRv dGFsX3NpemUgPSAwOwotLSAgICB1aW50OF90ICpwdHI7Ci0gICAgIGludCBlcnI7Ci0gCi0tICAg IGVyciA9IHZhYXBpX2VuY29kZV93YWl0KGF2Y3R4LCBwaWMpOwotLSAgICBpZiAoZXJyIDwgMCkK LS0gICAgICAgIHJldHVybiBlcnI7Ci0tCi0tICAgIGJ1Zl9saXN0ID0gTlVMTDsKLS0gICAgdmFz ID0gdmFNYXBCdWZmZXIoY3R4LT5od2N0eC0+ZGlzcGxheSwgcGljLT5vdXRwdXRfYnVmZmVyLAot KyAgICB2YXMgPSB2YU1hcEJ1ZmZlcihjdHgtPmh3Y3R4LT5kaXNwbGF5LCBidWZfaWQsCi0gICAg ICAgICAgICAgICAgICAgICAgICh2b2lkKiopJmJ1Zl9saXN0KTsKLSAgICAgaWYgKHZhcyAhPSBW QV9TVEFUVVNfU1VDQ0VTUykgewotICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1Is ICJGYWlsZWQgdG8gbWFwIG91dHB1dCBidWZmZXJzOiAiCi0gICAgICAgICAgICAgICAgIiVkICgl cykuXG4iLCB2YXMsIHZhRXJyb3JTdHIodmFzKSk7Ci0gICAgICAgICBlcnIgPSBBVkVSUk9SKEVJ Tyk7Ci0tICAgICAgICBnb3RvIGZhaWw7Ci0rICAgICAgICByZXR1cm4gZXJyOwotICAgICB9Ci0g Ci0gICAgIGZvciAoYnVmID0gYnVmX2xpc3Q7IGJ1ZjsgYnVmID0gYnVmLT5uZXh0KQotLSAgICAg ICAgdG90YWxfc2l6ZSArPSBidWYtPnNpemU7Ci0rICAgICAgICBzaXplICs9IGJ1Zi0+c2l6ZTsK LSAKLS0gICAgZXJyID0gZmZfZ2V0X2VuY29kZV9idWZmZXIoYXZjdHgsIHBrdCwgdG90YWxfc2l6 ZSwgMCk7Ci0tICAgIHB0ciA9IHBrdC0+ZGF0YTsKLSsgICAgdmFzID0gdmFVbm1hcEJ1ZmZlcihj dHgtPmh3Y3R4LT5kaXNwbGF5LCBidWZfaWQpOwotKyAgICBpZiAodmFzICE9IFZBX1NUQVRVU19T VUNDRVNTKSB7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0 byB1bm1hcCBvdXRwdXQgYnVmZmVyczogIgotKyAgICAgICAgICAgICAgICIlZCAoJXMpLlxuIiwg dmFzLCB2YUVycm9yU3RyKHZhcykpOwotKyAgICAgICAgZXJyID0gQVZFUlJPUihFSU8pOwotKyAg ICAgICAgcmV0dXJuIGVycjsKLSsgICAgfQotIAotLSAgICBpZiAoZXJyIDwgMCkKLS0gICAgICAg IGdvdG8gZmFpbF9tYXBwZWQ7Ci0rICAgIHJldHVybiBzaXplOwotK30KLSsKLStzdGF0aWMgaW50 IHZhYXBpX2VuY29kZV9nZXRfY29kZWRfYnVmZmVyX2RhdGEoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUJ1ZmZl cklEIGJ1Zl9pZCwgdWludDhfdCAqKmRzdCkKLSt7Ci0rICAgIFZBQVBJRW5jb2RlQ29udGV4dCAq Y3R4ID0gYXZjdHgtPnByaXZfZGF0YTsKLSsgICAgVkFDb2RlZEJ1ZmZlclNlZ21lbnQgKmJ1Zl9s aXN0LCAqYnVmOwotKyAgICBWQVN0YXR1cyB2YXM7Ci0rICAgIGludCBlcnI7Ci0rCi0rICAgIHZh cyA9IHZhTWFwQnVmZmVyKGN0eC0+aHdjdHgtPmRpc3BsYXksIGJ1Zl9pZCwKLSsgICAgICAgICAg ICAgICAgICAgICAgKHZvaWQqKikmYnVmX2xpc3QpOwotKyAgICBpZiAodmFzICE9IFZBX1NUQVRV U19TVUNDRVNTKSB7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxl ZCB0byBtYXAgb3V0cHV0IGJ1ZmZlcnM6ICIKLSsgICAgICAgICAgICAgICAiJWQgKCVzKS5cbiIs IHZhcywgdmFFcnJvclN0cih2YXMpKTsKLSsgICAgICAgIGVyciA9IEFWRVJST1IoRUlPKTsKLSsg ICAgICAgIHJldHVybiBlcnI7Ci0rICAgIH0KLSAKLSAgICAgZm9yIChidWYgPSBidWZfbGlzdDsg YnVmOyBidWYgPSBidWYtPm5leHQpIHsKLSAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RF QlVHLCAiT3V0cHV0IGJ1ZmZlcjogJXUgYnl0ZXMgIgotICAgICAgICAgICAgICAgICIoc3RhdHVz ICUwOHgpLlxuIiwgYnVmLT5zaXplLCBidWYtPnN0YXR1cyk7Ci0gCi0tICAgICAgICBtZW1jcHko cHRyLCBidWYtPmJ1ZiwgYnVmLT5zaXplKTsKLS0gICAgICAgIHB0ciArPSBidWYtPnNpemU7Ci0r ICAgICAgICBtZW1jcHkoKmRzdCwgYnVmLT5idWYsIGJ1Zi0+c2l6ZSk7Ci0rICAgICAgICAqZHN0 ICs9IGJ1Zi0+c2l6ZTsKLSAgICAgfQotIAotLSAgICBpZiAocGljLT50eXBlID09IFBJQ1RVUkVf VFlQRV9JRFIpCi0tICAgICAgICBwa3QtPmZsYWdzIHw9IEFWX1BLVF9GTEFHX0tFWTsKLS0KLS0g ICAgcGt0LT5wdHMgPSBwaWMtPnB0czsKLS0gICAgcGt0LT5kdXJhdGlvbiA9IHBpYy0+ZHVyYXRp b247Ci0tCi0tICAgIHZhcyA9IHZhVW5tYXBCdWZmZXIoY3R4LT5od2N0eC0+ZGlzcGxheSwgcGlj LT5vdXRwdXRfYnVmZmVyKTsKLSsgICAgdmFzID0gdmFVbm1hcEJ1ZmZlcihjdHgtPmh3Y3R4LT5k aXNwbGF5LCBidWZfaWQpOwotICAgICBpZiAodmFzICE9IFZBX1NUQVRVU19TVUNDRVNTKSB7Ci0g ICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byB1bm1hcCBvdXRw dXQgYnVmZmVyczogIgotICAgICAgICAgICAgICAgICIlZCAoJXMpLlxuIiwgdmFzLCB2YUVycm9y U3RyKHZhcykpOwotICAgICAgICAgZXJyID0gQVZFUlJPUihFSU8pOwotLSAgICAgICAgZ290byBm YWlsOwotKyAgICAgICAgcmV0dXJuIGVycjsKLSAgICAgfQotIAotLSAgICAvLyBmb3Igbm8tZGVs YXkgZW5jb2RlcnMgdGhpcyBpcyBoYW5kbGVkIGluIGdlbmVyaWMgY29kZWMKLS0gICAgaWYgKGF2 Y3R4LT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX0RFTEFZICYmCi0tICAgICAg ICBhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0NPUFlfT1BBUVVFKSB7Ci0tICAgICAgICBw a3QtPm9wYXF1ZSAgICAgPSBwaWMtPm9wYXF1ZTsKLS0gICAgICAgIHBrdC0+b3BhcXVlX3JlZiA9 IHBpYy0+b3BhcXVlX3JlZjsKLS0gICAgICAgIHBpYy0+b3BhcXVlX3JlZiA9IE5VTEw7Ci0rICAg IHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9nZXRfY29kZWRfZGF0 YShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICpwaWMsIEFWUGFja2V0ICpwa3QpCi0rewotKyAg ICBWQUFQSUVuY29kZUNvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAgIFZBQnVm ZmVySUQgb3V0cHV0X2J1ZmZlcl9wcmV2OwotKyAgICBpbnQgdG90YWxfc2l6ZSA9IDA7Ci0rICAg IHVpbnQ4X3QgKnB0cjsKLSsgICAgaW50IHJldDsKLSsKLSsgICAgaWYgKGN0eC0+Y29kZWRfYnVm ZmVyX3JlZikgewotKyAgICAgICAgb3V0cHV0X2J1ZmZlcl9wcmV2ID0gKFZBQnVmZmVySUQpKHVp bnRwdHJfdCljdHgtPmNvZGVkX2J1ZmZlcl9yZWYtPmRhdGE7Ci0rICAgICAgICByZXQgPSB2YWFw aV9lbmNvZGVfZ2V0X2NvZGVkX2J1ZmZlcl9zaXplKGF2Y3R4LCBvdXRwdXRfYnVmZmVyX3ByZXYp OwotKyAgICAgICAgaWYgKHJldCA8IDApCi0rICAgICAgICAgICAgZ290byBlbmQ7Ci0rICAgICAg ICB0b3RhbF9zaXplICs9IHJldDsKLSsgICAgfQotKwotKyAgICByZXQgPSB2YWFwaV9lbmNvZGVf Z2V0X2NvZGVkX2J1ZmZlcl9zaXplKGF2Y3R4LCBwaWMtPm91dHB1dF9idWZmZXIpOwotKyAgICBp ZiAocmV0IDwgMCkKLSsgICAgICAgIGdvdG8gZW5kOwotKyAgICB0b3RhbF9zaXplICs9IHJldDsK LSsKLSsgICAgcmV0ID0gZmZfZ2V0X2VuY29kZV9idWZmZXIoYXZjdHgsIHBrdCwgdG90YWxfc2l6 ZSwgMCk7Ci0rICAgIGlmIChyZXQgPCAwKQotKyAgICAgICAgZ290byBlbmQ7Ci0rICAgIHB0ciA9 IHBrdC0+ZGF0YTsKLSsKLSsgICAgaWYgKGN0eC0+Y29kZWRfYnVmZmVyX3JlZikgewotKyAgICAg ICAgcmV0ID0gdmFhcGlfZW5jb2RlX2dldF9jb2RlZF9idWZmZXJfZGF0YShhdmN0eCwgb3V0cHV0 X2J1ZmZlcl9wcmV2LCAmcHRyKTsKLSsgICAgICAgIGlmIChyZXQgPCAwKQotKyAgICAgICAgICAg IGdvdG8gZW5kOwotICAgICB9Ci0gCi0rICAgIHJldCA9IHZhYXBpX2VuY29kZV9nZXRfY29kZWRf YnVmZmVyX2RhdGEoYXZjdHgsIHBpYy0+b3V0cHV0X2J1ZmZlciwgJnB0cik7Ci0rICAgIGlmIChy ZXQgPCAwKQotKyAgICAgICAgZ290byBlbmQ7Ci0rCi0rZW5kOgotKyAgICBpZiAoY3R4LT5jb2Rl ZF9idWZmZXJfcmVmKSB7Ci0rICAgICAgICBhdl9idWZmZXJfdW5yZWYoJmN0eC0+Y29kZWRfYnVm ZmVyX3JlZik7Ci0rICAgIH0KLSAgICAgYXZfYnVmZmVyX3VucmVmKCZwaWMtPm91dHB1dF9idWZm ZXJfcmVmKTsKLSAgICAgcGljLT5vdXRwdXRfYnVmZmVyID0gVkFfSU5WQUxJRF9JRDsKLSAKLSsg ICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIGludCB2YWFwaV9lbmNvZGVfb3V0cHV0KEFW Q29kZWNDb250ZXh0ICphdmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFB UElFbmNvZGVQaWN0dXJlICpwaWMsIEFWUGFja2V0ICpwa3QpCi0rewotKyAgICBWQUFQSUVuY29k ZUNvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAgIEFWUGFja2V0ICpwa3RfcHRy ID0gcGt0OwotKyAgICBpbnQgZXJyOwotKwotKyAgICBlcnIgPSB2YWFwaV9lbmNvZGVfd2FpdChh dmN0eCwgcGljKTsKLSsgICAgaWYgKGVyciA8IDApCi0rICAgICAgICByZXR1cm4gZXJyOwotKwot KyAgICBpZiAocGljLT5ub25faW5kZXBlbmRlbnRfZnJhbWUpIHsKLSsgICAgICAgIGF2X2Fzc2Vy dDAoIWN0eC0+Y29kZWRfYnVmZmVyX3JlZik7Ci0rICAgICAgICBjdHgtPmNvZGVkX2J1ZmZlcl9y ZWYgPSBhdl9idWZmZXJfcmVmKHBpYy0+b3V0cHV0X2J1ZmZlcl9yZWYpOwotKwotKyAgICAgICAg aWYgKHBpYy0+dGFpbF9zaXplKSB7Ci0rICAgICAgICAgICAgaWYgKGN0eC0+dGFpbF9wa3QtPnNp emUpIHsKLSsgICAgICAgICAgICAgICAgZXJyID0gQVZFUlJPUihBVkVSUk9SX0JVRyk7Ci0rICAg ICAgICAgICAgICAgIGdvdG8gZW5kOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBl cnIgPSBmZl9nZXRfZW5jb2RlX2J1ZmZlcihhdmN0eCwgY3R4LT50YWlsX3BrdCwgcGljLT50YWls X3NpemUsIDApOwotKyAgICAgICAgICAgIGlmIChlcnIgPCAwKQotKyAgICAgICAgICAgICAgICBn b3RvIGVuZDsKLSsKLSsgICAgICAgICAgICBtZW1jcHkoY3R4LT50YWlsX3BrdC0+ZGF0YSwgcGlj LT50YWlsX2RhdGEsIHBpYy0+dGFpbF9zaXplKTsKLSsgICAgICAgICAgICBwa3RfcHRyID0gY3R4 LT50YWlsX3BrdDsKLSsgICAgICAgIH0KLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIGVyciA9IHZh YXBpX2VuY29kZV9nZXRfY29kZWRfZGF0YShhdmN0eCwgcGljLCBwa3QpOwotKyAgICAgICAgaWYg KGVyciA8IDApCi0rICAgICAgICAgICAgZ290byBlbmQ7Ci0rICAgIH0KLSsKLSAgICAgYXZfbG9n KGF2Y3R4LCBBVl9MT0dfREVCVUcsICJPdXRwdXQgcmVhZCBmb3IgcGljICUiUFJJZDY0Ii8lIlBS SWQ2NCIuXG4iLAotICAgICAgICAgICAgcGljLT5kaXNwbGF5X29yZGVyLCBwaWMtPmVuY29kZV9v cmRlcik7Ci0tICAgIHJldHVybiAwOwotIAotLWZhaWxfbWFwcGVkOgotLSAgICB2YVVubWFwQnVm ZmVyKGN0eC0+aHdjdHgtPmRpc3BsYXksIHBpYy0+b3V0cHV0X2J1ZmZlcik7Ci0tZmFpbDoKLSsg ICAgdmFhcGlfZW5jb2RlX3NldF9vdXRwdXRfcHJvcGVydHkoYXZjdHgsIHBpYywgcGt0X3B0cik7 Ci0rCi0rZW5kOgotICAgICBhdl9idWZmZXJfdW5yZWYoJnBpYy0+b3V0cHV0X2J1ZmZlcl9yZWYp OwotICAgICBwaWMtPm91dHB1dF9idWZmZXIgPSBWQV9JTlZBTElEX0lEOwotICAgICByZXR1cm4g ZXJyOwotQEAgLTgxMSw4ICs5NDUsMTIgQEAgc3RhdGljIHZvaWQgdmFhcGlfZW5jb2RlX2FkZF9y ZWYoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotIAotICAgICBpZiAoaXNfcmVmKSB7Ci0gICAgICAg ICBhdl9hc3NlcnQwKHBpYyAhPSB0YXJnZXQpOwotLSAgICAgICAgYXZfYXNzZXJ0MChwaWMtPm5i X3JlZnMgPCBNQVhfUElDVFVSRV9SRUZFUkVOQ0VTKTsKLS0gICAgICAgIHBpYy0+cmVmc1twaWMt Pm5iX3JlZnMrK10gPSB0YXJnZXQ7Ci0rICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmc1sw XSA8IE1BWF9QSUNUVVJFX1JFRkVSRU5DRVMgJiYKLSsgICAgICAgICAgICAgICAgICAgcGljLT5u Yl9yZWZzWzFdIDwgTUFYX1BJQ1RVUkVfUkVGRVJFTkNFUyk7Ci0rICAgICAgICBpZiAodGFyZ2V0 LT5kaXNwbGF5X29yZGVyIDwgcGljLT5kaXNwbGF5X29yZGVyKQotKyAgICAgICAgICAgIHBpYy0+ cmVmc1swXVtwaWMtPm5iX3JlZnNbMF0rK10gPSB0YXJnZXQ7Ci0rICAgICAgICBlbHNlCi0rICAg ICAgICAgICAgcGljLT5yZWZzWzFdW3BpYy0+bmJfcmVmc1sxXSsrXSA9IHRhcmdldDsKLSAgICAg ICAgICsrcmVmczsKLSAgICAgfQotIAotQEAgLTg0MSwxMCArOTc5LDE2IEBAIHN0YXRpYyB2b2lk IHZhYXBpX2VuY29kZV9yZW1vdmVfcmVmcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0gICAgIGlm IChwaWMtPnJlZl9yZW1vdmVkW2xldmVsXSkKLSAgICAgICAgIHJldHVybjsKLSAKLS0gICAgZm9y IChpID0gMDsgaSA8IHBpYy0+bmJfcmVmczsgaSsrKSB7Ci0tICAgICAgICBhdl9hc3NlcnQwKHBp Yy0+cmVmc1tpXSk7Ci0tICAgICAgICAtLXBpYy0+cmVmc1tpXS0+cmVmX2NvdW50W2xldmVsXTsK LS0gICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzW2ldLT5yZWZfY291bnRbbGV2ZWxdID49IDAp OwotKyAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzWzBdOyBpKyspIHsKLSsgICAgICAg IGF2X2Fzc2VydDAocGljLT5yZWZzWzBdW2ldKTsKLSsgICAgICAgIC0tcGljLT5yZWZzWzBdW2ld LT5yZWZfY291bnRbbGV2ZWxdOwotKyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbMF1baV0t PnJlZl9jb3VudFtsZXZlbF0gPj0gMCk7Ci0rICAgIH0KLSsKLSsgICAgZm9yIChpID0gMDsgaSA8 IHBpYy0+bmJfcmVmc1sxXTsgaSsrKSB7Ci0rICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1sx XVtpXSk7Ci0rICAgICAgICAtLXBpYy0+cmVmc1sxXVtpXS0+cmVmX2NvdW50W2xldmVsXTsKLSsg ICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzFdW2ldLT5yZWZfY291bnRbbGV2ZWxdID49IDAp OwotICAgICB9Ci0gCi0gICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX2RwYl9waWNzOyBpKysp IHsKLUBAIC04ODksNyArMTAzMyw3IEBAIHN0YXRpYyB2b2lkIHZhYXBpX2VuY29kZV9zZXRfYl9w aWN0dXJlcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0gICAgICAgICAgICAgdmFhcGlfZW5jb2Rl X2FkZF9yZWYoYXZjdHgsIHBpYywgZW5kLCAgIDEsIDEsIDApOwotICAgICAgICAgICAgIHZhYXBp X2VuY29kZV9hZGRfcmVmKGF2Y3R4LCBwaWMsIHByZXYsICAwLCAwLCAxKTsKLSAKLS0gICAgICAg ICAgICBmb3IgKHJlZiA9IGVuZC0+cmVmc1sxXTsgcmVmOyByZWYgPSByZWYtPnJlZnNbMV0pCi0r ICAgICAgICAgICAgZm9yIChyZWYgPSBlbmQtPnJlZnNbMV1bMF07IHJlZjsgcmVmID0gcmVmLT5y ZWZzWzFdWzBdKQotICAgICAgICAgICAgICAgICB2YWFwaV9lbmNvZGVfYWRkX3JlZihhdmN0eCwg cGljLCByZWYsIDAsIDEsIDApOwotICAgICAgICAgfQotICAgICAgICAgKmxhc3QgPSBwcmV2Owot QEAgLTkxMiw3ICsxMDU2LDcgQEAgc3RhdGljIHZvaWQgdmFhcGlfZW5jb2RlX3NldF9iX3BpY3R1 cmVzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAgICAgICAgIHZhYXBpX2VuY29kZV9hZGRfcmVm KGF2Y3R4LCBwaWMsIGVuZCwgICAxLCAxLCAwKTsKLSAgICAgICAgIHZhYXBpX2VuY29kZV9hZGRf cmVmKGF2Y3R4LCBwaWMsIHByZXYsICAwLCAwLCAxKTsKLSAKLS0gICAgICAgIGZvciAocmVmID0g ZW5kLT5yZWZzWzFdOyByZWY7IHJlZiA9IHJlZi0+cmVmc1sxXSkKLSsgICAgICAgIGZvciAocmVm ID0gZW5kLT5yZWZzWzFdWzBdOyByZWY7IHJlZiA9IHJlZi0+cmVmc1sxXVswXSkKLSAgICAgICAg ICAgICB2YWFwaV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCByZWYsIDAsIDEsIDApOwotIAot ICAgICAgICAgaWYgKGkgPiAxKQotQEAgLTkyNiwxMSArMTA3MCw0NCBAQCBzdGF0aWMgdm9pZCB2 YWFwaV9lbmNvZGVfc2V0X2JfcGljdHVyZXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICB9 Ci0gfQotIAotK3N0YXRpYyB2b2lkIHZhYXBpX2VuY29kZV9hZGRfbmV4dF9wcmV2KEFWQ29kZWND b250ZXh0ICphdmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW QUFQSUVuY29kZVBpY3R1cmUgKnBpYykKLSt7Ci0rICAgIFZBQVBJRW5jb2RlQ29udGV4dCAqY3R4 ID0gYXZjdHgtPnByaXZfZGF0YTsKLSsgICAgaW50IGk7Ci0rCi0rICAgIGlmICghcGljKQotKyAg ICAgICAgcmV0dXJuOwotKwotKyAgICBpZiAocGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9JRFIp IHsKLSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPm5iX25leHRfcHJldjsgaSsrKSB7Ci0r ICAgICAgICAgICAgLS1jdHgtPm5leHRfcHJldltpXS0+cmVmX2NvdW50WzBdOwotKyAgICAgICAg ICAgIGN0eC0+bmV4dF9wcmV2W2ldID0gTlVMTDsKLSsgICAgICAgIH0KLSsgICAgICAgIGN0eC0+ bmV4dF9wcmV2WzBdID0gcGljOwotKyAgICAgICAgKytwaWMtPnJlZl9jb3VudFswXTsKLSsgICAg ICAgIGN0eC0+bmJfbmV4dF9wcmV2ID0gMTsKLSsKLSsgICAgICAgIHJldHVybjsKLSsgICAgfQot KwotKyAgICBpZiAoY3R4LT5uYl9uZXh0X3ByZXYgPCBNQVhfUElDVFVSRV9SRUZFUkVOQ0VTKSB7 Ci0rICAgICAgICBjdHgtPm5leHRfcHJldltjdHgtPm5iX25leHRfcHJldisrXSA9IHBpYzsKLSsg ICAgICAgICsrcGljLT5yZWZfY291bnRbMF07Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICAtLWN0 eC0+bmV4dF9wcmV2WzBdLT5yZWZfY291bnRbMF07Ci0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwg TUFYX1BJQ1RVUkVfUkVGRVJFTkNFUyAtIDE7IGkrKykKLSsgICAgICAgICAgICBjdHgtPm5leHRf cHJldltpXSA9IGN0eC0+bmV4dF9wcmV2W2kgKyAxXTsKLSsgICAgICAgIGN0eC0+bmV4dF9wcmV2 W2ldID0gcGljOwotKyAgICAgICAgKytwaWMtPnJlZl9jb3VudFswXTsKLSsgICAgfQotK30KLSsK LSBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9waWNrX25leHQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUg KipwaWNfb3V0KQotIHsKLSAgICAgVkFBUElFbmNvZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJp dl9kYXRhOwotLSAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYyA9IE5VTEwsICpuZXh0LCAqc3Rh cnQ7Ci0rICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljID0gTlVMTCwgKnByZXYgPSBOVUxMLCAq bmV4dCwgKnN0YXJ0OwotICAgICBpbnQgaSwgYl9jb3VudGVyLCBjbG9zZWRfZ29wX2VuZDsKLSAK LSAgICAgLy8gSWYgdGhlcmUgYXJlIGFueSBCLWZyYW1lcyBhbHJlYWR5IHF1ZXVlZCwgdGhlIG5l eHQgb25lIHRvIGVuY29kZQotQEAgLTk0MSwxMSArMTExOCwxOCBAQCBzdGF0aWMgaW50IHZhYXBp X2VuY29kZV9waWNrX25leHQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICAgICAgICAgIGNv bnRpbnVlOwotICAgICAgICAgaWYgKHBpYy0+dHlwZSAhPSBQSUNUVVJFX1RZUEVfQikKLSAgICAg ICAgICAgICBjb250aW51ZTsKLS0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7 IGkrKykgewotLSAgICAgICAgICAgIGlmICghcGljLT5yZWZzW2ldLT5lbmNvZGVfaXNzdWVkKQot KyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7Ci0rICAgICAg ICAgICAgaWYgKCFwaWMtPnJlZnNbMF1baV0tPmVuY29kZV9pc3N1ZWQpCi0rICAgICAgICAgICAg ICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKGkgIT0gcGljLT5uYl9yZWZzWzBd KQotKyAgICAgICAgICAgIGNvbnRpbnVlOwotKwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBp Yy0+bmJfcmVmc1sxXTsgaSsrKSB7Ci0rICAgICAgICAgICAgaWYgKCFwaWMtPnJlZnNbMV1baV0t PmVuY29kZV9pc3N1ZWQpCi0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotLSAg ICAgICAgaWYgKGkgPT0gcGljLT5uYl9yZWZzKQotKyAgICAgICAgaWYgKGkgPT0gcGljLT5uYl9y ZWZzWzFdKQotICAgICAgICAgICAgIGJyZWFrOwotICAgICB9Ci0gCi1AQCAtMTA0NCwyMSArMTIy OCwzMCBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9waWNrX25leHQoQVZDb2RlY0NvbnRleHQg KmF2Y3R4LAotIAotICAgICB2YWFwaV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBwaWMsIDAs IDEsIDApOwotICAgICBpZiAocGljLT50eXBlICE9IFBJQ1RVUkVfVFlQRV9JRFIpIHsKLS0gICAg ICAgIHZhYXBpX2VuY29kZV9hZGRfcmVmKGF2Y3R4LCBwaWMsIHN0YXJ0LAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9QLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYl9jb3VudGVyID4gMCwgMCk7Ci0tICAgICAgICB2YWFwaV9l bmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBjdHgtPm5leHRfcHJldiwgMCwgMCwgMSk7Ci0rICAg ICAgICAvLyBUT0RPOiBhcHBseSBib3RoIHByZXZpb3VzIGFuZCBmb3J3YXJkIG11bHRpIHJlZmVy ZW5jZSBmb3IgYWxsIHZhYXBpIGVuY29kZXJzLgotKyAgICAgICAgLy8gQW5kIEwwL0wxIHJlZmVy ZW5jZSBmcmFtZSBudW1iZXIgY2FuIGJlIHNldCBkeW5hbWljYWxseSB0aHJvdWdoIHF1ZXJ5Ci0r ICAgICAgICAvLyBWQUNvbmZpZ0F0dHJpYkVuY01heFJlZkZyYW1lcyBhdHRyaWJ1dGUuCi0rICAg ICAgICBpZiAoYXZjdHgtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgewotKyAgICAgICAg ICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPm5iX25leHRfcHJldjsgaSsrKQotKyAgICAgICAgICAg ICAgICB2YWFwaV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBjdHgtPm5leHRfcHJldltpXSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljLT50eXBlID09IFBJQ1RV UkVfVFlQRV9QLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiX2NvdW50 ZXIgPiAwLCAwKTsKLSsgICAgICAgIH0gZWxzZQotKyAgICAgICAgICAgIHZhYXBpX2VuY29kZV9h ZGRfcmVmKGF2Y3R4LCBwaWMsIHN0YXJ0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfUCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBiX2NvdW50ZXIgPiAwLCAwKTsKLSsKLSsgICAgICAgIHZhYXBpX2VuY29kZV9h ZGRfcmVmKGF2Y3R4LCBwaWMsIGN0eC0+bmV4dF9wcmV2W2N0eC0+bmJfbmV4dF9wcmV2IC0gMV0s IDAsIDAsIDEpOwotICAgICB9Ci0tICAgIGlmIChjdHgtPm5leHRfcHJldikKLS0gICAgICAgIC0t Y3R4LT5uZXh0X3ByZXYtPnJlZl9jb3VudFswXTsKLSAKLSAgICAgaWYgKGJfY291bnRlciA+IDAp IHsKLSAgICAgICAgIHZhYXBpX2VuY29kZV9zZXRfYl9waWN0dXJlcyhhdmN0eCwgc3RhcnQsIHBp YywgcGljLCAxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdHgtPm5l eHRfcHJldik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXYpOwot ICAgICB9IGVsc2UgewotLSAgICAgICAgY3R4LT5uZXh0X3ByZXYgPSBwaWM7Ci0rICAgICAgICBw cmV2ID0gcGljOwotICAgICB9Ci0tICAgICsrY3R4LT5uZXh0X3ByZXYtPnJlZl9jb3VudFswXTsK LSsgICAgdmFhcGlfZW5jb2RlX2FkZF9uZXh0X3ByZXYoYXZjdHgsIHByZXYpOwotKwotICAgICBy ZXR1cm4gMDsKLSB9Ci0gCi1AQCAtMTIwNSwxMCArMTM5OCwyMyBAQCBmYWlsOgotIGludCBmZl92 YWFwaV9lbmNvZGVfcmVjZWl2ZV9wYWNrZXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlBhY2tl dCAqcGt0KQotIHsKLSAgICAgVkFBUElFbmNvZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJpdl9k YXRhOwotLSAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYzsKLSsgICAgVkFBUElFbmNvZGVQaWN0 dXJlICpwaWMgPSBOVUxMOwotICAgICBBVkZyYW1lICpmcmFtZSA9IGN0eC0+ZnJhbWU7Ci0gICAg IGludCBlcnI7Ci0gCi0rc3RhcnQ6Ci0rICAgIC8qKiBpZiBubyBCIGZyYW1lIGJlZm9yZSByZXBl YXQgUCBmcmFtZSwgc2VudCByZXBlYXQgUCBmcmFtZSBvdXQuICovCi0rICAgIGlmIChjdHgtPnRh aWxfcGt0LT5zaXplKSB7Ci0rICAgICAgICBmb3IgKFZBQVBJRW5jb2RlUGljdHVyZSAqdG1wID0g Y3R4LT5waWNfc3RhcnQ7IHRtcDsgdG1wID0gdG1wLT5uZXh0KSB7Ci0rICAgICAgICAgICAgaWYg KHRtcC0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfQiAmJiB0bXAtPnB0cyA8IGN0eC0+dGFpbF9wa3Qt PnB0cykKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgZWxzZSBpZiAoIXRt cC0+bmV4dCkgewotKyAgICAgICAgICAgICAgICBhdl9wYWNrZXRfbW92ZV9yZWYocGt0LCBjdHgt PnRhaWxfcGt0KTsKLSsgICAgICAgICAgICAgICAgZ290byBlbmQ7Ci0rICAgICAgICAgICAgfQot KyAgICAgICAgfQotKyAgICB9Ci0rCi0gICAgIGVyciA9IGZmX2VuY29kZV9nZXRfZnJhbWUoYXZj dHgsIGZyYW1lKTsKLSAgICAgaWYgKGVyciA8IDAgJiYgZXJyICE9IEFWRVJST1JfRU9GKQotICAg ICAgICAgcmV0dXJuIGVycjsKLUBAIC0xMjI4LDggKzE0MzQsNiBAQCBpbnQgZmZfdmFhcGlfZW5j b2RlX3JlY2VpdmVfcGFja2V0KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZQYWNrZXQgKnBrdCkK LSAgICAgfQotIAotICAgICBpZiAoY3R4LT5oYXNfc3luY19idWZmZXJfZnVuYykgewotLSAgICAg ICAgcGljID0gTlVMTDsKLS0KLSAgICAgICAgIGlmIChhdl9maWZvX2Nhbl93cml0ZShjdHgtPmVu Y29kZV9maWZvKSkgewotICAgICAgICAgICAgIGVyciA9IHZhYXBpX2VuY29kZV9waWNrX25leHQo YXZjdHgsICZwaWMpOwotICAgICAgICAgICAgIGlmICghZXJyKSB7Ci1AQCAtMTI1NSw3ICsxNDU5 LDYgQEAgaW50IGZmX3ZhYXBpX2VuY29kZV9yZWNlaXZlX3BhY2tldChBVkNvZGVjQ29udGV4dCAq YXZjdHgsIEFWUGFja2V0ICpwa3QpCi0gICAgICAgICBhdl9maWZvX3JlYWQoY3R4LT5lbmNvZGVf ZmlmbywgJnBpYywgMSk7Ci0gICAgICAgICBjdHgtPmVuY29kZV9vcmRlciA9IHBpYy0+ZW5jb2Rl X29yZGVyICsgMTsKLSAgICAgfSBlbHNlIHsKLS0gICAgICAgIHBpYyA9IE5VTEw7Ci0gICAgICAg ICBlcnIgPSB2YWFwaV9lbmNvZGVfcGlja19uZXh0KGF2Y3R4LCAmcGljKTsKLSAgICAgICAgIGlm IChlcnIgPCAwKQotICAgICAgICAgICAgIHJldHVybiBlcnI7Ci1AQCAtMTI3NiwyNyArMTQ3OSwy MSBAQCBpbnQgZmZfdmFhcGlfZW5jb2RlX3JlY2VpdmVfcGFja2V0KEFWQ29kZWNDb250ZXh0ICph dmN0eCwgQVZQYWNrZXQgKnBrdCkKLSAgICAgICAgIHJldHVybiBlcnI7Ci0gICAgIH0KLSAKLS0g ICAgaWYgKGN0eC0+b3V0cHV0X2RlbGF5ID09IDApIHsKLS0gICAgICAgIHBrdC0+ZHRzID0gcGt0 LT5wdHM7Ci0tICAgIH0gZWxzZSBpZiAocGljLT5lbmNvZGVfb3JkZXIgPCBjdHgtPmRlY29kZV9k ZWxheSkgewotLSAgICAgICAgaWYgKGN0eC0+dHNfcmluZ1twaWMtPmVuY29kZV9vcmRlcl0gPCBJ TlQ2NF9NSU4gKyBjdHgtPmR0c19wdHNfZGlmZikKLS0gICAgICAgICAgICBwa3QtPmR0cyA9IElO VDY0X01JTjsKLS0gICAgICAgIGVsc2UKLS0gICAgICAgICAgICBwa3QtPmR0cyA9IGN0eC0+dHNf cmluZ1twaWMtPmVuY29kZV9vcmRlcl0gLSBjdHgtPmR0c19wdHNfZGlmZjsKLS0gICAgfSBlbHNl IHsKLS0gICAgICAgIHBrdC0+ZHRzID0gY3R4LT50c19yaW5nWyhwaWMtPmVuY29kZV9vcmRlciAt IGN0eC0+ZGVjb2RlX2RlbGF5KSAlCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo MyAqIGN0eC0+b3V0cHV0X2RlbGF5ICsgY3R4LT5hc3luY19kZXB0aCldOwotLSAgICB9Ci0tICAg IGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiT3V0cHV0IHBhY2tldDogcHRzICUiUFJJZDY0 IiBkdHMgJSJQUklkNjQiLlxuIiwKLS0gICAgICAgICAgIHBrdC0+cHRzLCBwa3QtPmR0cyk7Ci0t Ci0gICAgIGN0eC0+b3V0cHV0X29yZGVyID0gcGljLT5lbmNvZGVfb3JkZXI7Ci0gICAgIHZhYXBp X2VuY29kZV9jbGVhcl9vbGQoYXZjdHgpOwotIAotKyAgICAvKiogbG9vcCB0byBnZXQgYW4gYXZh aWxhYmxlIHBrdCBpbiBlbmNvZGVyIGZsdXNoaW5nLiAqLwotKyAgICBpZiAoY3R4LT5lbmRfb2Zf c3RyZWFtICYmICFwa3QtPnNpemUpCi0rICAgICAgICBnb3RvIHN0YXJ0OwotKwotK2VuZDoKLSsg ICAgaWYgKHBrdC0+c2l6ZSkKLSsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAi T3V0cHV0IHBhY2tldDogcHRzICUiUFJJZDY0IiwgZHRzICUiUFJJZDY0IiwgIgotKyAgICAgICAg ICAgICAgICJzaXplICVkIGJ5dGVzLlxuIiwgcGt0LT5wdHMsIHBrdC0+ZHRzLCBwa3QtPnNpemUp OwotKwotICAgICByZXR1cm4gMDsKLSB9Ci0gCi0tCi0gc3RhdGljIGF2X2NvbGQgdm9pZCB2YWFw aV9lbmNvZGVfYWRkX2dsb2JhbF9wYXJhbShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGludCB0eXBl LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p ZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKLSB7Ci1AQCAtMjU5Nyw2ICsyNzk0LDEyIEBAIGF2X2Nv bGQgaW50IGZmX3ZhYXBpX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSAgICAg Y3R4LT5kZXZpY2UgPSAoQVZIV0RldmljZUNvbnRleHQqKWN0eC0+ZGV2aWNlX3JlZi0+ZGF0YTsK LSAgICAgY3R4LT5od2N0eCA9IGN0eC0+ZGV2aWNlLT5od2N0eDsKLSAKLSsgICAgY3R4LT50YWls X3BrdCA9IGF2X3BhY2tldF9hbGxvYygpOwotKyAgICBpZiAoIWN0eC0+dGFpbF9wa3QpIHsKLSsg ICAgICAgIGVyciA9IEFWRVJST1IoRU5PTUVNKTsKLSsgICAgICAgIGdvdG8gZmFpbDsKLSsgICAg fQotKwotICAgICBlcnIgPSB2YWFwaV9lbmNvZGVfcHJvZmlsZV9lbnRyeXBvaW50KGF2Y3R4KTsK LSAgICAgaWYgKGVyciA8IDApCi0gICAgICAgICBnb3RvIGZhaWw7Ci1AQCAtMjc4OSw2ICsyOTky LDcgQEAgYXZfY29sZCBpbnQgZmZfdmFhcGlfZW5jb2RlX2Nsb3NlKEFWQ29kZWNDb250ZXh0ICph dmN0eCkKLSAgICAgfQotIAotICAgICBhdl9mcmFtZV9mcmVlKCZjdHgtPmZyYW1lKTsKLSsgICAg YXZfcGFja2V0X2ZyZWUoJmN0eC0+dGFpbF9wa3QpOwotIAotICAgICBhdl9mcmVlcCgmY3R4LT5j b2RlY19zZXF1ZW5jZV9wYXJhbXMpOwotICAgICBhdl9mcmVlcCgmY3R4LT5jb2RlY19waWN0dXJl X3BhcmFtcyk7Ci1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGUuaCBiL2xpYmF2 Y29kZWMvdmFhcGlfZW5jb2RlLmgKLWluZGV4IGExZTYzOWYuLjQxNmEzY2UgMTAwNjQ0Ci0tLS0g YS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5oCi0rKysgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29k ZS5oCi1AQCAtNDksNiArNDksNyBAQCBlbnVtIHsKLSAgICAgLy8gQS40LjE6IHRhYmxlIEEuNiBh bGxvd3MgYXQgbW9zdCAyMCB0aWxlIGNvbHVtbnMgZm9yIGFueSBsZXZlbC4KLSAgICAgTUFYX1RJ TEVfQ09MUyAgICAgICAgICA9IDIwLAotICAgICBNQVhfQVNZTkNfREVQVEggICAgICAgID0gNjQs Ci0rICAgIE1BWF9SRUZFUkVOQ0VfTElTVF9OVU0gPSAyLAotIH07Ci0gCi0gZXh0ZXJuIGNvbnN0 IEFWQ29kZWNIV0NvbmZpZ0ludGVybmFsICpjb25zdCBmZl92YWFwaV9lbmNvZGVfaHdfY29uZmln c1tdOwotQEAgLTExNiwxMCArMTE3LDExIEBAIHR5cGVkZWYgc3RydWN0IFZBQVBJRW5jb2RlUGlj dHVyZSB7Ci0gICAgIC8vIGJ1dCBub3QgaWYgaXQgaXNuJ3QuCi0gICAgIGludCAgICAgICAgICAg ICAgICAgICAgIG5iX2RwYl9waWNzOwotICAgICBzdHJ1Y3QgVkFBUElFbmNvZGVQaWN0dXJlICpk cGJbTUFYX0RQQl9TSVpFXTsKLS0gICAgLy8gVGhlIHJlZmVyZW5jZSBwaWN0dXJlcyB1c2VkIGlu IGRlY29kaW5nIHRoaXMgcGljdHVyZS4gIElmIHRoZXkgYXJlCi0tICAgIC8vIHVzZWQgYnkgbGF0 ZXIgcGljdHVyZXMgdGhleSB3aWxsIGFsc28gYXBwZWFyIGluIHRoZSBEUEIuCi0tICAgIGludCAg ICAgICAgICAgICAgICAgICAgIG5iX3JlZnM7Ci0tICAgIHN0cnVjdCBWQUFQSUVuY29kZVBpY3R1 cmUgKnJlZnNbTUFYX1BJQ1RVUkVfUkVGRVJFTkNFU107Ci0rICAgIC8vIFRoZSByZWZlcmVuY2Ug cGljdHVyZXMgdXNlZCBpbiBkZWNvZGluZyB0aGlzIHBpY3R1cmUuIElmIHRoZXkgYXJlCi0rICAg IC8vIHVzZWQgYnkgbGF0ZXIgcGljdHVyZXMgdGhleSB3aWxsIGFsc28gYXBwZWFyIGluIHRoZSBE UEIuIHJlZlswXVtdIGZvcgotKyAgICAvLyBwcmV2aW91cyByZWZlcmVuY2UgZnJhbWVzLiByZWZb MV1bXSBmb3IgZnV0dXJlIHJlZmVyZW5jZSBmcmFtZXMuCi0rICAgIGludCAgICAgICAgICAgICAg ICAgICAgIG5iX3JlZnNbTUFYX1JFRkVSRU5DRV9MSVNUX05VTV07Ci0rICAgIHN0cnVjdCBWQUFQ SUVuY29kZVBpY3R1cmUgKnJlZnNbTUFYX1JFRkVSRU5DRV9MSVNUX05VTV1bTUFYX1BJQ1RVUkVf UkVGRVJFTkNFU107Ci0gICAgIC8vIFRoZSBwcmV2aW91cyByZWZlcmVuY2UgcGljdHVyZSBpbiBl bmNvZGUgb3JkZXIuICBNdXN0IGJlIGluIGF0IGxlYXN0Ci0gICAgIC8vIG9uZSBvZiB0aGUgcmVm ZXJlbmNlIGxpc3QgYW5kIERQQiBsaXN0LgotICAgICBzdHJ1Y3QgVkFBUElFbmNvZGVQaWN0dXJl ICpwcmV2OwotQEAgLTEzMSw2ICsxMzMsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgVkFBUElFbmNvZGVQ aWN0dXJlIHsKLSAKLSAgICAgaW50ICAgICAgICAgIG5iX3NsaWNlczsKLSAgICAgVkFBUElFbmNv ZGVTbGljZSAqc2xpY2VzOwotKwotKyAgICAvKioKLSsgICAgICogaW5kaWNhdGUgaWYgY3VycmVu dCBmcmFtZSBpcyBhbiBpbmRlcGVuZGVudCBmcmFtZSB0aGF0IHRoZSBjb2RlZCBkYXRhCi0rICAg ICAqIGNhbiBiZSBwdXNoZWQgdG8gZG93bnN0cmVhbSBkaXJlY3RseS4gQ29kZWQgb2Ygbm9uLWlu ZGVwZW5kZW50IGZyYW1lCi0rICAgICAqIGRhdGEgd2lsbCBiZSBjb25jYXRlbmF0ZWQgaW50byBu ZXh0IGluZGVwZW5kZW50IGZyYW1lLgotKyAgICAgKi8KLSsgICAgaW50IG5vbl9pbmRlcGVuZGVu dF9mcmFtZTsKLSsgICAgLyoqIFRhaWwgZGF0YSBvZiBjdXJyZW50IHBpYywgdXNlZCBvbmx5IGZv ciByZXBlYXQgaGVhZGVyIG9mIEFWMS4gKi8KLSsgICAgY2hhciB0YWlsX2RhdGFbTUFYX1BBUkFN X0JVRkZFUl9TSVpFXTsKLSsgICAgLyoqIEJ5dGUgbGVuZ3RoIG9mIHRhaWxfZGF0YS4gKi8KLSsg ICAgc2l6ZV90IHRhaWxfc2l6ZTsKLSB9IFZBQVBJRW5jb2RlUGljdHVyZTsKLSAKLSB0eXBlZGVm IHN0cnVjdCBWQUFQSUVuY29kZVByb2ZpbGUgewotQEAgLTI5MCw4ICszMDMsOSBAQCB0eXBlZGVm IHN0cnVjdCBWQUFQSUVuY29kZUNvbnRleHQgewotICAgICAvLyBDdXJyZW50IGVuY29kaW5nIHdp bmRvdywgaW4gZGlzcGxheSAoaW5wdXQpIG9yZGVyLgotICAgICBWQUFQSUVuY29kZVBpY3R1cmUg KnBpY19zdGFydCwgKnBpY19lbmQ7Ci0gICAgIC8vIFRoZSBuZXh0IHBpY3R1cmUgdG8gdXNlIGFz IHRoZSBwcmV2aW91cyByZWZlcmVuY2UgcGljdHVyZSBpbgotLSAgICAvLyBlbmNvZGluZyBvcmRl ci4KLS0gICAgVkFBUElFbmNvZGVQaWN0dXJlICpuZXh0X3ByZXY7Ci0rICAgIC8vIGVuY29kaW5n IG9yZGVyLiBPcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlIGluIGVuY29kaW5nIG9yZGVyLgotKyAg ICBWQUFQSUVuY29kZVBpY3R1cmUgKm5leHRfcHJldltNQVhfUElDVFVSRV9SRUZFUkVOQ0VTXTsK LSsgICAgaW50ICAgICAgICAgICAgICAgICBuYl9uZXh0X3ByZXY7Ci0gCi0gICAgIC8vIE5leHQg aW5wdXQgb3JkZXIgaW5kZXggKGRpc3BsYXkgb3JkZXIpLgotICAgICBpbnQ2NF90ICAgICAgICAg aW5wdXRfb3JkZXI7Ci1AQCAtMzY0LDYgKzM3OCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBWQUFQSUVu Y29kZUNvbnRleHQgewotICAgICBBVkZpZm8gICAgICAgICAgKmVuY29kZV9maWZvOwotICAgICAv LyBNYXggbnVtYmVyIG9mIGZyYW1lIGJ1ZmZlcmVkIGluIGVuY29kZXIuCi0gICAgIGludCAgICAg ICAgICAgICBhc3luY19kZXB0aDsKLSsKLSsgICAgLyoqIEhlYWQgZGF0YSBmb3IgY3VycmVudCBv dXRwdXQgcGt0LCB1c2VkIG9ubHkgZm9yIEFWMS4gKi8KLSsgICAgLy92b2lkICAqaGVhZGVyX2Rh dGE7Ci0rICAgIC8vc2l6ZV90IGhlYWRlcl9kYXRhX3NpemU7Ci0rCi0rICAgIC8qKiBCdWZmZXJl ZCBjb2RlZCBkYXRhIG9mIGEgcGljIGlmIGl0IGlzIGFuIG5vbi1pbmRlcGVuZGVudCBmcmFtZS4g Ki8KLSsgICAgQVZCdWZmZXJSZWYgICAgICpjb2RlZF9idWZmZXJfcmVmOwotKwotKyAgICAvKiog VGFpbCBkYXRhIG9mIGEgcGljLCBub3cgb25seSB1c2VkIGZvciBhdjEgcmVwZWF0IGZyYW1lIGhl YWRlci4gKi8KLSsgICAgQVZQYWNrZXQgICAgICAgICp0YWlsX3BrdDsKLSB9IFZBQVBJRW5jb2Rl Q29udGV4dDsKLSAKLSBlbnVtIHsKLUBAIC0zODAsNiArNDA0LDkgQEAgZW51bSB7Ci0gICAgIC8v IENvZGVjIHN1cHBvcnRzIG5vbi1JRFIga2V5IHBpY3R1cmVzICh0aGF0IGlzLCBrZXkgcGljdHVy ZXMgZG8KLSAgICAgLy8gbm90IG5lY2Vzc2FyaWx5IGVtcHR5IHRoZSBEUEIpLgotICAgICBGTEFH X05PTl9JRFJfS0VZX1BJQ1RVUkVTICA9IDEgPDwgNSwKLSsgICAgLy8gQ29kZWMgb3V0cHV0IHBh Y2tldCB3aXRob3V0IHRpbWVzdGFtcCBkZWxheSwgd2hpY2ggbWVhbnMgdGhlCi0rICAgIC8vIG91 dHB1dCBwYWNrZXQgaGFzIHNhbWUgUFRTIGFuZCBEVFMuCi0rICAgIEZMQUdfVElNRVNUQU1QX05P X0RFTEFZICAgID0gMSA8PCA2LAotIH07Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgVkFBUElFbmNvZGVU eXBlIHsKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9hdjEuYyBiL2xpYmF2 Y29kZWMvdmFhcGlfZW5jb2RlX2F2MS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uOWQxMDFmYQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGliYXZjb2RlYy92YWFwaV9lbmNv ZGVfYXYxLmMKLUBAIC0wLDAgKzEsOTQ5IEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMjMg SW50ZWwgQ29ycG9yYXRpb24KLSsgKgotKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4K LSsgKgotKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBGRm1wZWcg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VCi0rICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGgg RkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICogRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQQotKyAqLwotKwotKyNpbmNsdWRlIDx2YS92YS5oPgotKyNpbmNsdWRlIDx2YS92 YV9lbmNfYXYxLmg+Ci0rCi0rI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCi0rI2luY2x1 ZGUgImxpYmF2dXRpbC9vcHQuaCIKLSsKLSsjaW5jbHVkZSAiY2JzX2F2MS5oIgotKyNpbmNsdWRl ICJwdXRfYml0cy5oIgotKyNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgotKyNpbmNsdWRlICJh djFfbGV2ZWxzLmgiCi0rI2luY2x1ZGUgInZhYXBpX2VuY29kZS5oIgotKwotKyNkZWZpbmUgQVYx X01BWF9RVUFOVCAyNTUKLSsKLSt0eXBlZGVmIHN0cnVjdCBWQUFQSUVuY29kZUFWMVBpY3R1cmUg ewotKyAgICBpbnQ2NF90IGxhc3RfaWRyX2ZyYW1lOwotKyAgICBpbnQgc2xvdDsKLSt9IFZBQVBJ RW5jb2RlQVYxUGljdHVyZTsKLSsKLSt0eXBlZGVmIHN0cnVjdCBWQUFQSUVuY29kZUFWMUNvbnRl eHQgewotKyAgICBWQUFQSUVuY29kZUNvbnRleHQgY29tbW9uOwotKyAgICBBVjFSYXdPQlUgc2g7 IC8qKjwgc2VxdWVuY2UgaGVhZGVyLiovCi0rICAgIEFWMVJhd09CVSBmaDsgLyoqPCBmcmFtZSBo ZWFkZXIuKi8KLSsgICAgQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjYmM7Ci0rICAgIENvZGVkQml0 c3RyZWFtRnJhZ21lbnQgY3VycmVudF9vYnU7Ci0rICAgIFZBQ29uZmlnQXR0cmliVmFsRW5jQVYx IGF0dHI7Ci0rICAgIFZBQ29uZmlnQXR0cmliVmFsRW5jQVYxRXh0MSBhdHRyX2V4dDE7Ci0rICAg IFZBQ29uZmlnQXR0cmliVmFsRW5jQVYxRXh0MiBhdHRyX2V4dDI7Ci0rCi0rICAgIGNoYXIgc2hf ZGF0YVtNQVhfUEFSQU1fQlVGRkVSX1NJWkVdOyAvKio8IGNvZGVkIHNlcXVlbmNlIGhlYWRlciBk YXRhLiAqLwotKyAgICBzaXplX3Qgc2hfZGF0YV9sZW47IC8qKjwgYml0IGxlbmd0aCBvZiBzaF9k YXRhLiAqLwotKyAgICBjaGFyIGZoX2RhdGFbTUFYX1BBUkFNX0JVRkZFUl9TSVpFXTsgLyoqPCBj b2RlZCBmcmFtZSBoZWFkZXIgZGF0YS4gKi8KLSsgICAgc2l6ZV90IGZoX2RhdGFfbGVuOyAvKio8 IGJpdCBsZW5ndGggb2YgZmhfZGF0YS4gKi8KLSsKLSsgICAgdWludDhfdCB1bmlmb3JtX3RpbGU7 Ci0rICAgIHVpbnQ4X3QgdXNlXzEyOHgxMjhfc3VwZXJibG9jazsKLSsgICAgaW50IHNiX2NvbHM7 Ci0rICAgIGludCBzYl9yb3dzOwotKyAgICBpbnQgdGlsZV9jb2xzX2xvZzI7Ci0rICAgIGludCB0 aWxlX3Jvd3NfbG9nMjsKLSsgICAgaW50IG1heF90aWxlX3dpZHRoX3NiOwotKyAgICBpbnQgbWF4 X3RpbGVfaGVpZ2h0X3NiOwotKyAgICB1aW50OF90IHdpZHRoX2luX3Nic19taW51c18xW0FWMV9N QVhfVElMRV9DT0xTXTsKLSsgICAgdWludDhfdCBoZWlnaHRfaW5fc2JzX21pbnVzXzFbQVYxX01B WF9USUxFX1JPV1NdOwotKwotKyAgICBpbnQgbWluX2xvZzJfdGlsZV9jb2xzOwotKyAgICBpbnQg bWF4X2xvZzJfdGlsZV9jb2xzOwotKyAgICBpbnQgbWluX2xvZzJfdGlsZV9yb3dzOwotKyAgICBp bnQgbWF4X2xvZzJfdGlsZV9yb3dzOwotKwotKyAgICBpbnQgcV9pZHhfaWRyOwotKyAgICBpbnQg cV9pZHhfcDsKLSsgICAgaW50IHFfaWR4X2I7Ci0rCi0rICAgIC8qKiBiaXQgcG9zaXRpb25zIGlu IGN1cnJlbnQgZnJhbWUgaGVhZGVyICovCi0rICAgIGludCBxaW5kZXhfb2Zmc2V0OwotKyAgICBp bnQgbG9vcGZpbHRlcl9vZmZzZXQ7Ci0rICAgIGludCBjZGVmX3N0YXJ0X29mZnNldDsKLSsgICAg aW50IGNkZWZfcGFyYW1fc2l6ZTsKLSsKLSsgICAgLyoqIHVzZXIgb3B0aW9ucyAqLwotKyAgICBp bnQgcHJvZmlsZTsKLSsgICAgaW50IGxldmVsOwotKyAgICBpbnQgdGllcjsKLSsgICAgaW50IHRp bGVfY29scywgdGlsZV9yb3dzOwotKyAgICBpbnQgdGlsZV9ncm91cHM7Ci0rfSBWQUFQSUVuY29k ZUFWMUNvbnRleHQ7Ci0rCi0rc3RhdGljIHZvaWQgdmFhcGlfZW5jb2RlX2F2MV90cmFjZV93cml0 ZV9sb2codm9pZCAqY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1dEJpdENvbnRleHQgKnBiYywgaW50IGxlbmd0aCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIsIGNvbnN0IGludCAq c3Vic2NyaXB0cywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQ2NF90IHZhbHVlKQotK3sKLSsgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0ICpwcml2ID0g Y3R4OwotKyAgICBpbnQgcG9zaXRpb247Ci0rCi0rICAgIHBvc2l0aW9uID0gcHV0X2JpdHNfY291 bnQocGJjKTsKLSsgICAgYXZfYXNzZXJ0MChwb3NpdGlvbiA+PSBsZW5ndGgpOwotKwotKyAgICBp ZiAoIXN0cmNtcChzdHIsICJiYXNlX3FfaWR4IikpCi0rICAgICAgICBwcml2LT5xaW5kZXhfb2Zm c2V0ID0gcG9zaXRpb24gLSBsZW5ndGg7Ci0rICAgIGVsc2UgaWYgKCFzdHJjbXAoc3RyLCAibG9v cF9maWx0ZXJfbGV2ZWxbMF0iKSkKLSsgICAgICAgIHByaXYtPmxvb3BmaWx0ZXJfb2Zmc2V0ID0g cG9zaXRpb24gLSBsZW5ndGg7Ci0rICAgIGVsc2UgaWYgKCFzdHJjbXAoc3RyLCAiY2RlZl9kYW1w aW5nX21pbnVzXzMiKSkKLSsgICAgICAgIHByaXYtPmNkZWZfc3RhcnRfb2Zmc2V0ID0gcG9zaXRp b24gLSBsZW5ndGg7Ci0rICAgIGVsc2UgaWYgKCFzdHJjbXAoc3RyLCAiY2RlZl91dl9zZWNfc3Ry ZW5ndGhbaV0iKSkKLSsgICAgICAgIHByaXYtPmNkZWZfcGFyYW1fc2l6ZSA9IHBvc2l0aW9uIC0g cHJpdi0+Y2RlZl9zdGFydF9vZmZzZXQ7Ci0rfQotKwotK3N0YXRpYyBhdl9jb2xkIGludCB2YWFw aV9lbmNvZGVfYXYxX2dldF9lbmNvZGVyX2NhcHMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQotK3sK LSsgICAgVkFBUElFbmNvZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOwotKyAgICBW QUFQSUVuY29kZUFWMUNvbnRleHQgKnByaXYgPSBhdmN0eC0+cHJpdl9kYXRhOwotKwotKyAgICAv LyBTdXJmYWNlcyBtdXN0IGJlIGFsaWduZWQgdG8gc3VwZXJibG9jayBib3VuZGFyaWVzLgotKyAg ICBjdHgtPnN1cmZhY2Vfd2lkdGggID0gRkZBTElHTihhdmN0eC0+d2lkdGgsICBwcml2LT51c2Vf MTI4eDEyOF9zdXBlcmJsb2NrID8gMTI4IDogNjQpOwotKyAgICBjdHgtPnN1cmZhY2VfaGVpZ2h0 ID0gRkZBTElHTihhdmN0eC0+aGVpZ2h0LCBwcml2LT51c2VfMTI4eDEyOF9zdXBlcmJsb2NrID8g MTI4IDogNjQpOwotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGF2X2NvbGQgaW50 IHZhYXBpX2VuY29kZV9hdjFfY29uZmlndXJlKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSt7Ci0r ICAgIFZBQVBJRW5jb2RlQ29udGV4dCAgICAgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAg IFZBQVBJRW5jb2RlQVYxQ29udGV4dCAqcHJpdiA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAgIGlu dCByZXQ7Ci0rCi0rICAgIHJldCA9IGZmX2Nic19pbml0KCZwcml2LT5jYmMsIEFWX0NPREVDX0lE X0FWMSwgYXZjdHgpOwotKyAgICBpZiAocmV0IDwgMCkKLSsgICAgICAgIHJldHVybiByZXQ7Ci0r ICAgIHByaXYtPmNiYy0+dHJhY2VfZW5hYmxlICA9IDE7Ci0rICAgIHByaXYtPmNiYy0+dHJhY2Vf bGV2ZWwgICA9IEFWX0xPR19ERUJVRzsKLSsgICAgcHJpdi0+Y2JjLT50cmFjZV9jb250ZXh0ID0g Y3R4OwotKyAgICBwcml2LT5jYmMtPnRyYWNlX3dyaXRlX2NhbGxiYWNrID0gdmFhcGlfZW5jb2Rl X2F2MV90cmFjZV93cml0ZV9sb2c7Ci0rCi0rICAgIGlmIChjdHgtPnJjX21vZGUtPnF1YWxpdHkp IHsKLSsgICAgICAgIHByaXYtPnFfaWR4X3AgPSBhdl9jbGlwKGN0eC0+cmNfcXVhbGl0eSwgMCwg QVYxX01BWF9RVUFOVCk7Ci0rICAgICAgICBpZiAoZmFicyhhdmN0eC0+aV9xdWFudF9mYWN0b3Ip ID4gMC4wKQotKyAgICAgICAgICAgIHByaXYtPnFfaWR4X2lkciA9Ci0rICAgICAgICAgICAgICAg IGF2X2NsaXAoKGZhYnMoYXZjdHgtPmlfcXVhbnRfZmFjdG9yKSAqIHByaXYtPnFfaWR4X3AgICsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgYXZjdHgtPmlfcXVhbnRfb2Zmc2V0KSArIDAuNSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAwLCBBVjFfTUFYX1FVQU5UKTsKLSsgICAgICAgIGVs c2UKLSsgICAgICAgICAgICBwcml2LT5xX2lkeF9pZHIgPSBwcml2LT5xX2lkeF9wOwotKwotKyAg ICAgICAgaWYgKGZhYnMoYXZjdHgtPmJfcXVhbnRfZmFjdG9yKSA+IDAuMCkKLSsgICAgICAgICAg ICBwcml2LT5xX2lkeF9iID0KLSsgICAgICAgICAgICAgICAgYXZfY2xpcCgoZmFicyhhdmN0eC0+ Yl9xdWFudF9mYWN0b3IpICogcHJpdi0+cV9pZHhfcCAgKwotKyAgICAgICAgICAgICAgICAgICAg ICAgICBhdmN0eC0+Yl9xdWFudF9vZmZzZXQpICsgMC41LAotKyAgICAgICAgICAgICAgICAgICAg ICAgIDAsIEFWMV9NQVhfUVVBTlQpOwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIHByaXYt PnFfaWR4X2IgPSBwcml2LT5xX2lkeF9wOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgLyoqIEFy Yml0cmFyeSB2YWx1ZSAqLwotKyAgICAgICAgcHJpdi0+cV9pZHhfaWRyID0gcHJpdi0+cV9pZHhf cCA9IHByaXYtPnFfaWR4X2IgPSAxMjg7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIDA7Ci0rfQot KwotK3N0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2F2MV9hZGRfb2J1KEFWQ29kZWNDb250ZXh0ICph dmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlZEJpdHN0cmVh bUZyYWdtZW50ICphdSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 OF90IHR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb2J1 X3VuaXQpCi0rewotKyAgICBpbnQgcmV0OwotKwotKyAgICByZXQgPSBmZl9jYnNfaW5zZXJ0X3Vu aXRfY29udGVudChhdSwgLTEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHR5cGUsIG9idV91bml0LCBOVUxMKTsKLSsgICAgaWYgKHJldCA8IDApIHsKLSsgICAgICAgIGF2 X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGFkZCBPQlUgdW5pdDogIgotKyAg ICAgICAgICAgICAgICJ0eXBlID0gJWQuXG4iLCB0eXBlKTsKLSsgICAgICAgIHJldHVybiByZXQ7 Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBpbnQgdmFhcGlfZW5j b2RlX2F2MV93cml0ZV9vYnUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZGF0YSwgc2l6ZV90ICpkYXRhX2xlbiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVkQml0c3RyZWFtRnJhZ21l bnQgKmJzKQotK3sKLSsgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0ICpwcml2ID0gYXZjdHgtPnBy aXZfZGF0YTsKLSsgICAgaW50IHJldDsKLSsKLSsgICAgcmV0ID0gZmZfY2JzX3dyaXRlX2ZyYWdt ZW50X2RhdGEocHJpdi0+Y2JjLCBicyk7Ci0rICAgIGlmIChyZXQgPCAwKSB7Ci0rICAgICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byB3cml0ZSBwYWNrZWQgaGVhZGVy LlxuIik7Ci0rICAgICAgICByZXR1cm4gcmV0OwotKyAgICB9Ci0rCi0rICAgIGlmICgoc2l6ZV90 KTggKiBNQVhfUEFSQU1fQlVGRkVSX1NJWkUgPCA4ICogYnMtPmRhdGFfc2l6ZSAtIGJzLT5kYXRh X2JpdF9wYWRkaW5nKSB7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkFj Y2VzcyB1bml0IHRvbyBsYXJnZTogIgotKyAgICAgICAgICAgICAgICIlenUgPCAlenUuXG4iLCAo c2l6ZV90KTggKiBNQVhfUEFSQU1fQlVGRkVSX1NJWkUsCi0rICAgICAgICAgICAgICAgOCAqIGJz LT5kYXRhX3NpemUgLSBicy0+ZGF0YV9iaXRfcGFkZGluZyk7Ci0rICAgICAgICByZXR1cm4gQVZF UlJPUihFTk9TUEMpOwotKyAgICB9Ci0rCi0rICAgIG1lbWNweShkYXRhLCBicy0+ZGF0YSwgYnMt PmRhdGFfc2l6ZSk7Ci0rICAgICpkYXRhX2xlbiA9IDggKiBicy0+ZGF0YV9zaXplIC0gYnMtPmRh dGFfYml0X3BhZGRpbmc7Ci0rCi0rICAgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50IHRp bGVfbG9nMihpbnQgYmxrU2l6ZSwgaW50IHRhcmdldCkgewotKyAgICBpbnQgazsKLSsgICAgZm9y IChrID0gMDsgKGJsa1NpemUgPDwgaykgPCB0YXJnZXQ7IGsrKyk7Ci0rICAgIHJldHVybiBrOwot K30KLSsKLStzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9hdjFfc2V0X3RpbGUoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4KQotK3sKLSsgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0ICpwcml2ID0gYXZjdHgt PnByaXZfZGF0YTsKLSsgICAgaW50IG1pX2NvbHMsIG1pX3Jvd3MsIHNiX3NoaWZ0LCBzYl9zaXpl OwotKyAgICBpbnQgbWF4X3RpbGVfYXJlYV9zYiwgbWF4X3RpbGVfYXJlYV9zYl92YXJpZWQ7Ci0r ICAgIGludCB0aWxlX3dpZHRoX3NiLCB0aWxlX2hlaWdodF9zYiwgd2lkZXN0X3RpbGVfc2I7Ci0r ICAgIGludCB0aWxlX2NvbHMsIHRpbGVfcm93czsKLSsgICAgaW50IG1pbl9sb2cyX3RpbGVzOwot KyAgICBpbnQgaTsKLSsKLSsgICAgaWYgKHByaXYtPnRpbGVfY29scyA+IEFWMV9NQVhfVElMRV9D T0xTIHx8Ci0rICAgICAgICBwcml2LT50aWxlX3Jvd3MgPiBBVjFfTUFYX1RJTEVfUk9XUykgewot KyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHRpbGUgbnVtYmVy ICVkeCVkLCBzaG91bGQgbGVzcyB0aGFuICVkeCVkLlxuIiwKLSsgICAgICAgICAgICAgICBwcml2 LT50aWxlX2NvbHMsIHByaXYtPnRpbGVfcm93cywgQVYxX01BWF9USUxFX0NPTFMsIEFWMV9NQVhf VElMRV9ST1dTKTsKLSsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Ci0rICAgIH0KLSsK LSsgICAgbWlfY29scyA9IDIgKiAoKGF2Y3R4LT53aWR0aCArIDcpID4+IDMpOwotKyAgICBtaV9y b3dzID0gMiAqICgoYXZjdHgtPmhlaWdodCArIDcpID4+IDMpOwotKyAgICBwcml2LT5zYl9jb2xz ID0gcHJpdi0+dXNlXzEyOHgxMjhfc3VwZXJibG9jayA/Ci0rICAgICAgICAgICAgICAgICAgICAo KG1pX2NvbHMgKyAzMSkgPj4gNSkgOiAoKG1pX2NvbHMgKyAxNSkgPj4gNCk7Ci0rICAgIHByaXYt PnNiX3Jvd3MgPSBwcml2LT51c2VfMTI4eDEyOF9zdXBlcmJsb2NrID8KLSsgICAgICAgICAgICAg ICAgICAgICgobWlfcm93cyArIDMxKSA+PiA1KSA6ICgobWlfcm93cyArIDE1KSA+PiA0KTsKLSsg ICAgc2Jfc2hpZnQgPSBwcml2LT51c2VfMTI4eDEyOF9zdXBlcmJsb2NrID8gNSA6IDQ7Ci0rICAg IHNiX3NpemUgID0gc2Jfc2hpZnQgKyAyOwotKyAgICBwcml2LT5tYXhfdGlsZV93aWR0aF9zYiA9 IEFWMV9NQVhfVElMRV9XSURUSCA+PiBzYl9zaXplOwotKyAgICBtYXhfdGlsZV9hcmVhX3NiID0g QVYxX01BWF9USUxFX0FSRUEgID4+ICgyICogc2Jfc2l6ZSk7Ci0rCi0rICAgIHByaXYtPm1pbl9s b2cyX3RpbGVfY29scyA9IHRpbGVfbG9nMihwcml2LT5tYXhfdGlsZV93aWR0aF9zYiwgcHJpdi0+ c2JfY29scyk7Ci0rICAgIHByaXYtPm1heF9sb2cyX3RpbGVfY29scyA9IHRpbGVfbG9nMigxLCBG Rk1JTihwcml2LT5zYl9jb2xzLCBBVjFfTUFYX1RJTEVfQ09MUykpOwotKyAgICBwcml2LT5tYXhf bG9nMl90aWxlX3Jvd3MgPSB0aWxlX2xvZzIoMSwgRkZNSU4ocHJpdi0+c2Jfcm93cywgQVYxX01B WF9USUxFX1JPV1MpKTsKLSsgICAgbWluX2xvZzJfdGlsZXMgPSBGRk1BWChwcml2LT5taW5fbG9n Ml90aWxlX2NvbHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZV9sb2cyKG1heF90 aWxlX2FyZWFfc2IsIHByaXYtPnNiX3Jvd3MgKiBwcml2LT5zYl9jb2xzKSk7Ci0rCi0rICAgIHRp bGVfY29scyA9IGF2X2NsaXAocHJpdi0+dGlsZV9jb2xzLCAocHJpdi0+c2JfY29scyArIHByaXYt Pm1heF90aWxlX3dpZHRoX3NiIC0gMSkgLyBwcml2LT5tYXhfdGlsZV93aWR0aF9zYiwgcHJpdi0+ c2JfY29scyk7Ci0rCi0rICAgIGlmICghcHJpdi0+dGlsZV9jb2xzKQotKyAgICAgICAgcHJpdi0+ dGlsZV9jb2xzID0gdGlsZV9jb2xzOwotKyAgICBlbHNlIGlmIChwcml2LT50aWxlX2NvbHMgIT0g dGlsZV9jb2xzKXsKLSsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxp ZCB0aWxlIGNvbHMgJWQsIHNob3VsZCBiZSBpbiByYW5nZSBvZiAlZH4lZFxuIiwKLSsgICAgICAg ICAgICAgICBwcml2LT50aWxlX2NvbHMsCi0rICAgICAgICAgICAgICAgKHByaXYtPnNiX2NvbHMg KyBwcml2LT5tYXhfdGlsZV93aWR0aF9zYiAtIDEpIC8gcHJpdi0+bWF4X3RpbGVfd2lkdGhfc2Is Ci0rICAgICAgICAgICAgICAgcHJpdi0+c2JfY29scyk7Ci0rICAgICAgICByZXR1cm4gQVZFUlJP UihFSU5WQUwpOwotKyAgICB9Ci0rCi0rICAgIHByaXYtPnRpbGVfY29sc19sb2cyID0gdGlsZV9s b2cyKDEsIHByaXYtPnRpbGVfY29scyk7Ci0rICAgIHRpbGVfd2lkdGhfc2IgPSAocHJpdi0+c2Jf Y29scyArICgxIDw8IHByaXYtPnRpbGVfY29sc19sb2cyKSAtIDEpID4+Ci0rICAgICAgICAgICAg ICAgICAgICBwcml2LT50aWxlX2NvbHNfbG9nMjsKLSsKLSsgICAgaWYgKHByaXYtPnRpbGVfcm93 cyA+IHByaXYtPnNiX3Jvd3MpIHsKLSsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9S LCAiSW52YWxpZCB0aWxlIHJvd3MgJWQsIHNob3VsZCBiZSBsZXNzIHRoYW4gJWQuXG4iLAotKyAg ICAgICAgICAgICAgIHByaXYtPnRpbGVfcm93cywgcHJpdi0+c2Jfcm93cyk7Ci0rICAgICAgICBy ZXR1cm4gQVZFUlJPUihFSU5WQUwpOwotKyAgICB9Ci0rCi0rICAgIC8qKiBUcnkgdXNlciBzZXR0 aW5nIHRpbGUgcm93cyBudW1iZXIgZmlyc3QuICovCi0rICAgIHRpbGVfcm93cyA9IHByaXYtPnRp bGVfcm93cyA/IHByaXYtPnRpbGVfcm93cyA6IDE7Ci0rICAgIGZvciAoOyB0aWxlX3Jvd3MgPD0g cHJpdi0+c2Jfcm93cyAmJiB0aWxlX3Jvd3MgPD0gQVYxX01BWF9USUxFX1JPV1M7IHRpbGVfcm93 cysrKSB7Ci0rICAgICAgICAvKiogdHJ5IHVuaWZvcm1lZCB0aWxlLiAqLwotKyAgICAgICAgcHJp di0+dGlsZV9yb3dzX2xvZzIgPSB0aWxlX2xvZzIoMSwgdGlsZV9yb3dzKTsKLSsgICAgICAgIGlm ICgocHJpdi0+c2JfY29scyArIHRpbGVfd2lkdGhfc2IgLSAxKSAvIHRpbGVfd2lkdGhfc2IgPT0g cHJpdi0+dGlsZV9jb2xzKSB7Ci0rICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHByaXYtPnRp bGVfY29scyAtIDE7IGkrKykKLSsgICAgICAgICAgICAgICAgcHJpdi0+d2lkdGhfaW5fc2JzX21p bnVzXzFbaV0gPSB0aWxlX3dpZHRoX3NiIC0gMTsKLSsgICAgICAgICAgICBwcml2LT53aWR0aF9p bl9zYnNfbWludXNfMVtpXSA9IHByaXYtPnNiX2NvbHMgLSAocHJpdi0+dGlsZV9jb2xzIC0gMSkg KiB0aWxlX3dpZHRoX3NiIC0gMTsKLSsKLSsgICAgICAgICAgICB0aWxlX2hlaWdodF9zYiA9IChw cml2LT5zYl9yb3dzICsgKDEgPDwgcHJpdi0+dGlsZV9yb3dzX2xvZzIpIC0gMSkgPj4KLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPnRpbGVfcm93c19sb2cyOwotKwotKyAgICAg ICAgICAgIGlmICgocHJpdi0+c2Jfcm93cyArIHRpbGVfaGVpZ2h0X3NiIC0gMSkgLyB0aWxlX2hl aWdodF9zYiA9PSB0aWxlX3Jvd3MgJiYKLSsgICAgICAgICAgICAgICAgdGlsZV9oZWlnaHRfc2Ig PD0gbWF4X3RpbGVfYXJlYV9zYiAvIHRpbGVfd2lkdGhfc2IpIHsKLSsgICAgICAgICAgICAgICAg Zm9yIChpID0gMDsgaSA8IHRpbGVfcm93cyAtIDE7IGkrKykKLSsgICAgICAgICAgICAgICAgICAg IHByaXYtPmhlaWdodF9pbl9zYnNfbWludXNfMVtpXSA9IHRpbGVfaGVpZ2h0X3NiIC0gMTsKLSsg ICAgICAgICAgICAgICAgcHJpdi0+aGVpZ2h0X2luX3Nic19taW51c18xW2ldID0gcHJpdi0+c2Jf cm93cyAtICh0aWxlX3Jvd3MgLSAxKSAqIHRpbGVfaGVpZ2h0X3NiIC0gMTsKLSsKLSsgICAgICAg ICAgICAgICAgcHJpdi0+dW5pZm9ybV90aWxlID0gMTsKLSsgICAgICAgICAgICAgICAgcHJpdi0+ bWluX2xvZzJfdGlsZV9yb3dzID0gRkZNQVgobWluX2xvZzJfdGlsZXMgLSBwcml2LT50aWxlX2Nv bHNfbG9nMiwgMCk7Ci0rCi0rICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIH0K LSsgICAgICAgIH0KLSsKLSsgICAgICAgIC8qKiB0cnkgbm9uLXVuaWZvcm1lZCB0aWxlLiAqLwot KyAgICAgICAgd2lkZXN0X3RpbGVfc2IgPSAwOwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBy aXYtPnRpbGVfY29sczsgaSsrKSB7Ci0rICAgICAgICAgICAgcHJpdi0+d2lkdGhfaW5fc2JzX21p bnVzXzFbaV0gPSAoaSArIDEpICogcHJpdi0+c2JfY29scyAvIHByaXYtPnRpbGVfY29scyAtIGkg KiBwcml2LT5zYl9jb2xzIC8gcHJpdi0+dGlsZV9jb2xzIC0gMTsKLSsgICAgICAgICAgICB3aWRl c3RfdGlsZV9zYiA9IEZGTUFYKHdpZGVzdF90aWxlX3NiLCBwcml2LT53aWR0aF9pbl9zYnNfbWlu dXNfMVtpXSArIDEpOwotKyAgICAgICAgfQotKwotKyAgICAgICAgaWYgKG1pbl9sb2cyX3RpbGVz KQotKyAgICAgICAgICAgIG1heF90aWxlX2FyZWFfc2JfdmFyaWVkID0gKHByaXYtPnNiX3Jvd3Mg KiBwcml2LT5zYl9jb2xzKSA+PiAobWluX2xvZzJfdGlsZXMgKyAxKTsKLSsgICAgICAgIGVsc2UK LSsgICAgICAgICAgICBtYXhfdGlsZV9hcmVhX3NiX3ZhcmllZCA9IHByaXYtPnNiX3Jvd3MgKiBw cml2LT5zYl9jb2xzOwotKyAgICAgICAgcHJpdi0+bWF4X3RpbGVfaGVpZ2h0X3NiID0gRkZNQVgo MSwgbWF4X3RpbGVfYXJlYV9zYl92YXJpZWQgLyB3aWRlc3RfdGlsZV9zYik7Ci0rCi0rICAgICAg ICBpZiAodGlsZV9yb3dzID09IGF2X2NsaXAodGlsZV9yb3dzLCAocHJpdi0+c2Jfcm93cyArIHBy aXYtPm1heF90aWxlX2hlaWdodF9zYiAtIDEpIC8gcHJpdi0+bWF4X3RpbGVfaGVpZ2h0X3NiLCBw cml2LT5zYl9yb3dzKSkgewotKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aWxlX3Jvd3M7 IGkrKykKLSsgICAgICAgICAgICAgICAgcHJpdi0+aGVpZ2h0X2luX3Nic19taW51c18xW2ldID0g KGkgKyAxKSAqIHByaXYtPnNiX3Jvd3MgLyB0aWxlX3Jvd3MgLSBpICogcHJpdi0+c2Jfcm93cyAv IHRpbGVfcm93cyAtIDE7Ci0rCi0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rCi0r ICAgICAgICAvKiogUmV0dXJuIGludmFsaWQgcGFyYW1ldGVyIGlmIGV4cGxpY2l0IHRpbGUgcm93 cyBpcyBzZXQuICovCi0rICAgICAgICBpZiAocHJpdi0+dGlsZV9yb3dzKSB7Ci0rICAgICAgICAg ICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHRpbGUgcm93cyAlZC5cbiIs IHByaXYtPnRpbGVfcm93cyk7Ci0rICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsK LSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICBwcml2LT50aWxlX3Jvd3MgPSB0aWxlX3Jvd3M7 Ci0rICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiU2V0dGluZyB0aWxlIGNvbHMvcm93 cyB0byAlZC8lZC5cbiIsCi0rICAgICAgICAgICBwcml2LT50aWxlX2NvbHMsIHByaXYtPnRpbGVf cm93cyk7Ci0rCi0rICAgIC8qKiBjaGVjayBpZiB0aWxlIGNvbHMvcm93cyBpcyBzdXBwb3J0ZWQg YnkgZHJpdmVyLiAqLwotKyAgICBpZiAocHJpdi0+YXR0cl9leHQyLmJpdHMubWF4X3RpbGVfbnVt X21pbnVzMSkgewotKyAgICAgICAgaWYgKChwcml2LT50aWxlX2NvbHMgKiBwcml2LT50aWxlX3Jv d3MgLSAxKSA+IHByaXYtPmF0dHJfZXh0Mi5iaXRzLm1heF90aWxlX251bV9taW51czEpIHsKLSsg ICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIlVuc3VwcG9ydGVkIHRpbGUg bnVtICVkICogJWQgPSAlZCBieSBkcml2ZXIsICIKLSsgICAgICAgICAgICAgICAgICAgInNob3Vs ZCBiZSBhdCBtb3N0ICVkLlxuIiwgcHJpdi0+dGlsZV9jb2xzLCBwcml2LT50aWxlX3Jvd3MsCi0r ICAgICAgICAgICAgICAgICAgIHByaXYtPnRpbGVfY29scyAqIHByaXYtPnRpbGVfcm93cywKLSsg ICAgICAgICAgICAgICAgICAgcHJpdi0+YXR0cl9leHQyLmJpdHMubWF4X3RpbGVfbnVtX21pbnVz MSArIDEpOwotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Ci0rICAgICAgICB9 Ci0rICAgIH0KLSsKLSsgICAgLyoqIGNoZWNrIGlmIHRpbGUgZ3JvdXAgbnVtYmVycyBpcyB2YWxp ZC4gKi8KLSsgICAgaWYgKHByaXYtPnRpbGVfZ3JvdXBzID4gcHJpdi0+dGlsZV9jb2xzICogcHJp di0+dGlsZV9yb3dzKSB7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19XQVJOSU5HLCAi SW52YWxpZCB0aWxlIGdyb3VwcyBudW1iZXIgJWQsICIKLSsgICAgICAgICJjb3JyZWN0IHRvICVk LlxuIiwgcHJpdi0+dGlsZV9ncm91cHMsIHByaXYtPnRpbGVfY29scyAqIHByaXYtPnRpbGVfcm93 cyk7Ci0rICAgICAgICBwcml2LT50aWxlX2dyb3VwcyA9IHByaXYtPnRpbGVfY29scyAqIHByaXYt PnRpbGVfcm93czsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGlu dCB2YWFwaV9lbmNvZGVfYXYxX3dyaXRlX3NlcXVlbmNlX2hlYWRlcihBVkNvZGVjQ29udGV4dCAq YXZjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjaGFyICpkYXRhLCBzaXplX3QgKmRhdGFfbGVuKQotK3sKLSsgICAgVkFBUElFbmNvZGVBVjFD b250ZXh0ICpwcml2ID0gYXZjdHgtPnByaXZfZGF0YTsKLSsKLSsgICAgbWVtY3B5KGRhdGEsICZw cml2LT5zaF9kYXRhLCBNQVhfUEFSQU1fQlVGRkVSX1NJWkUgKiBzaXplb2YoY2hhcikpOwotKyAg ICAqZGF0YV9sZW4gPSBwcml2LT5zaF9kYXRhX2xlbjsKLSsKLSsgICAgcmV0dXJuIDA7Ci0rfQot KwotK3N0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2F2MV9pbml0X3NlcXVlbmNlX3BhcmFtcyhBVkNv ZGVjQ29udGV4dCAqYXZjdHgpCi0rewotKyAgICBWQUFQSUVuY29kZUNvbnRleHQgICAgICAgICAg ICAgICAqY3R4ID0gYXZjdHgtPnByaXZfZGF0YTsKLSsgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0 ICAgICAgICAgICAqcHJpdiA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAgIEFWMVJhd09CVSAgICAg ICAgICAgICAgICAgICAgICpzaF9vYnUgPSAmcHJpdi0+c2g7Ci0rICAgIEFWMVJhd1NlcXVlbmNl SGVhZGVyICAgICAgICAgICAgICAqc2ggPSAmc2hfb2J1LT5vYnUuc2VxdWVuY2VfaGVhZGVyOwot KyAgICBWQUVuY1NlcXVlbmNlUGFyYW1ldGVyQnVmZmVyQVYxICp2c2VxID0gY3R4LT5jb2RlY19z ZXF1ZW5jZV9wYXJhbXM7Ci0rICAgIENvZGVkQml0c3RyZWFtRnJhZ21lbnQgICAgICAgICAgICpv YnUgPSAmcHJpdi0+Y3VycmVudF9vYnU7Ci0rICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAq ZGVzYzsKLSsgICAgaW50IHJldDsKLSsKLSsgICAgbWVtc2V0KHNoX29idSwgMCwgc2l6ZW9mKCpz aF9vYnUpKTsKLSsgICAgc2hfb2J1LT5oZWFkZXIub2J1X3R5cGUgPSBBVjFfT0JVX1NFUVVFTkNF X0hFQURFUjsKLSsKLSsgICAgZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19nZXQocHJpdi0+Y29tbW9u LmlucHV0X2ZyYW1lcy0+c3dfZm9ybWF0KTsKLSsgICAgYXZfYXNzZXJ0MChkZXNjKTsKLSsKLSsg ICAgc2gtPnNlcV9wcm9maWxlICA9IGF2Y3R4LT5wcm9maWxlOwotKyAgICBpZiAoIXNoLT5zZXFf Zm9yY2Vfc2NyZWVuX2NvbnRlbnRfdG9vbHMpCi0rICAgICAgICBzaC0+c2VxX2ZvcmNlX2ludGVn ZXJfbXYgPSBBVjFfU0VMRUNUX0lOVEVHRVJfTVY7Ci0rICAgIHNoLT5mcmFtZV93aWR0aF9iaXRz X21pbnVzXzEgID0gYXZfbG9nMihhdmN0eC0+d2lkdGgpOwotKyAgICBzaC0+ZnJhbWVfaGVpZ2h0 X2JpdHNfbWludXNfMSA9IGF2X2xvZzIoYXZjdHgtPmhlaWdodCk7Ci0rICAgIHNoLT5tYXhfZnJh bWVfd2lkdGhfbWludXNfMSAgID0gYXZjdHgtPndpZHRoIC0gMTsKLSsgICAgc2gtPm1heF9mcmFt ZV9oZWlnaHRfbWludXNfMSAgPSBhdmN0eC0+aGVpZ2h0IC0gMTsKLSsgICAgc2gtPnNlcV90aWVy WzBdICAgICAgICAgICAgICAgPSBwcml2LT50aWVyOwotKyAgICAvKiogZW5hYmxlIG9yZGVyIGhp bnQgYW5kIHJlc2VydmUgbWF4aW11bSA4IGJpdHMgZm9yIGl0IGJ5IGRlZmF1bHQuICovCi0rICAg IHNoLT5lbmFibGVfb3JkZXJfaGludCAgICAgICAgID0gMTsKLSsgICAgc2gtPm9yZGVyX2hpbnRf Yml0c19taW51c18xICAgPSA3OwotKwotKyAgICBzaC0+Y29sb3JfY29uZmlnID0gKEFWMVJhd0Nv bG9yQ29uZmlnKSB7Ci0rICAgICAgICAuaGlnaF9iaXRkZXB0aCAgICAgICAgICAgICAgICAgID0g ZGVzYy0+Y29tcFswXS5kZXB0aCA9PSA4ID8gMCA6IDEsCi0rICAgICAgICAuY29sb3JfcHJpbWFy aWVzICAgICAgICAgICAgICAgID0gYXZjdHgtPmNvbG9yX3ByaW1hcmllcywKLSsgICAgICAgIC50 cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MgICAgICAgPSBhdmN0eC0+Y29sb3JfdHJjLAotKyAgICAg ICAgLm1hdHJpeF9jb2VmZmljaWVudHMgICAgICAgICAgICA9IGF2Y3R4LT5jb2xvcnNwYWNlLAot KyAgICAgICAgLmNvbG9yX2Rlc2NyaXB0aW9uX3ByZXNlbnRfZmxhZyA9IChhdmN0eC0+Y29sb3Jf cHJpbWFyaWVzICE9IEFWQ09MX1BSSV9VTlNQRUNJRklFRCB8fAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhdmN0eC0+Y29sb3JfdHJjICAgICAgICE9IEFWQ09M X1RSQ19VTlNQRUNJRklFRCB8fAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhdmN0eC0+Y29sb3JzcGFjZSAgICAgICE9IEFWQ09MX1NQQ19VTlNQRUNJRklFRCks Ci0rICAgICAgICAuY29sb3JfcmFuZ2UgICAgICAgICAgICAgICAgICAgID0gYXZjdHgtPmNvbG9y X3JhbmdlID09IEFWQ09MX1JBTkdFX0pQRUcsCi0rICAgICAgICAuc3Vic2FtcGxpbmdfeCAgICAg ICAgICAgICAgICAgID0gZGVzYy0+bG9nMl9jaHJvbWFfdywKLSsgICAgICAgIC5zdWJzYW1wbGlu Z195ICAgICAgICAgICAgICAgICAgPSBkZXNjLT5sb2cyX2Nocm9tYV9oLAotKyAgICB9OwotKwot KyAgICBzd2l0Y2ggKGF2Y3R4LT5jaHJvbWFfc2FtcGxlX2xvY2F0aW9uKSB7Ci0rICAgICAgICBj YXNlIEFWQ0hST01BX0xPQ19MRUZUOgotKyAgICAgICAgICAgIHNoLT5jb2xvcl9jb25maWcuY2hy b21hX3NhbXBsZV9wb3NpdGlvbiA9IEFWMV9DU1BfVkVSVElDQUw7Ci0rICAgICAgICAgICAgYnJl YWs7Ci0rICAgICAgICBjYXNlIEFWQ0hST01BX0xPQ19UT1BMRUZUOgotKyAgICAgICAgICAgIHNo LT5jb2xvcl9jb25maWcuY2hyb21hX3NhbXBsZV9wb3NpdGlvbiA9IEFWMV9DU1BfQ09MT0NBVEVE OwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgICBz aC0+Y29sb3JfY29uZmlnLmNocm9tYV9zYW1wbGVfcG9zaXRpb24gPSBBVjFfQ1NQX1VOS05PV047 Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGF2Y3R4LT5sZXZlbCAh PSBGRl9QUk9GSUxFX1VOS05PV04pIHsKLSsgICAgICAgIHNoLT5zZXFfbGV2ZWxfaWR4WzBdID0g YXZjdHgtPmxldmVsOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgY29uc3QgQVYxTGV2ZWxEZXNj cmlwdG9yICpsZXZlbDsKLSsgICAgICAgIGZsb2F0IGZyYW1lcmF0ZTsKLSsKLSsgICAgICAgIGlm IChhdmN0eC0+ZnJhbWVyYXRlLm51bSA+IDAgJiYgYXZjdHgtPmZyYW1lcmF0ZS5kZW4gPiAwKQot KyAgICAgICAgICAgIGZyYW1lcmF0ZSA9IGF2Y3R4LT5mcmFtZXJhdGUubnVtIC8gYXZjdHgtPmZy YW1lcmF0ZS5kZW47Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgZnJhbWVyYXRlID0gMDsK LSsKLSsgICAgICAgIGxldmVsID0gZmZfYXYxX2d1ZXNzX2xldmVsKGF2Y3R4LT5iaXRfcmF0ZSwg cHJpdi0+dGllciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+c3Vy ZmFjZV93aWR0aCwgY3R4LT5zdXJmYWNlX2hlaWdodCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHByaXYtPnRpbGVfcm93cyAqIHByaXYtPnRpbGVfY29scywKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPnRpbGVfY29scywgZnJhbWVyYXRlKTsK LSsgICAgICAgIGlmIChsZXZlbCkgewotKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9H X1ZFUkJPU0UsICJVc2luZyBsZXZlbCAlcy5cbiIsIGxldmVsLT5uYW1lKTsKLSsgICAgICAgICAg ICBzaC0+c2VxX2xldmVsX2lkeFswXSA9IGxldmVsLT5sZXZlbF9pZHg7Ci0rICAgICAgICB9IGVs c2UgewotKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX1ZFUkJPU0UsICJTdHJlYW0g d2lsbCBub3QgY29uZm9ybSB0byAiCi0rICAgICAgICAgICAgICAgICAgICJhbnkgbm9ybWFsIGxl dmVsLCB1c2luZyBtYXhpbXVtIHBhcmFtZXRlcnMgbGV2ZWwgYnkgZGVmYXVsdC5cbiIpOwotKyAg ICAgICAgICAgIHNoLT5zZXFfbGV2ZWxfaWR4WzBdID0gMzE7Ci0rICAgICAgICAgICAgc2gtPnNl cV90aWVyWzBdID0gMTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICB2c2VxLT5zZXFfcHJvZmls ZSAgICAgICAgICAgICA9IHNoLT5zZXFfcHJvZmlsZTsKLSsgICAgdnNlcS0+c2VxX2xldmVsX2lk eCAgICAgICAgICAgPSBzaC0+c2VxX2xldmVsX2lkeFswXTsKLSsgICAgdnNlcS0+c2VxX3RpZXIg ICAgICAgICAgICAgICAgPSBzaC0+c2VxX3RpZXJbMF07Ci0rICAgIHZzZXEtPm9yZGVyX2hpbnRf Yml0c19taW51c18xID0gc2gtPm9yZGVyX2hpbnRfYml0c19taW51c18xOwotKyAgICB2c2VxLT5p bnRyYV9wZXJpb2QgICAgICAgICAgICA9IGN0eC0+Z29wX3NpemU7Ci0rICAgIHZzZXEtPmlwX3Bl cmlvZCAgICAgICAgICAgICAgID0gY3R4LT5iX3Blcl9wICsgMTsKLSsKLSsgICAgdnNlcS0+c2Vx X2ZpZWxkcy5iaXRzLmVuYWJsZV9vcmRlcl9oaW50ID0gc2gtPmVuYWJsZV9vcmRlcl9oaW50Owot KwotKyAgICBpZiAoIShjdHgtPnZhX3JjX21vZGUgJiBWQV9SQ19DUVApKSB7Ci0rICAgICAgICB2 c2VxLT5iaXRzX3Blcl9zZWNvbmQgPSBjdHgtPnZhX2JpdF9yYXRlOwotKyAgICAgICAgdnNlcS0+ c2VxX2ZpZWxkcy5iaXRzLmVuYWJsZV9jZGVmID0gc2gtPmVuYWJsZV9jZGVmID0gMTsKLSsgICAg fQotKwotKyAgICByZXQgPSB2YWFwaV9lbmNvZGVfYXYxX2FkZF9vYnUoYXZjdHgsIG9idSwgQVYx X09CVV9TRVFVRU5DRV9IRUFERVIsICZwcml2LT5zaCk7Ci0rICAgIGlmIChyZXQgPCAwKQotKyAg ICAgICAgZ290byBlbmQ7Ci0rCi0rICAgIHJldCA9IHZhYXBpX2VuY29kZV9hdjFfd3JpdGVfb2J1 KGF2Y3R4LCBwcml2LT5zaF9kYXRhLCAmcHJpdi0+c2hfZGF0YV9sZW4sIG9idSk7Ci0rICAgIGlm IChyZXQgPCAwKQotKyAgICAgICAgZ290byBlbmQ7Ci0rCi0rZW5kOgotKyAgICBmZl9jYnNfZnJh Z21lbnRfcmVzZXQob2J1KTsKLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIGludCB2 YWFwaV9lbmNvZGVfYXYxX2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBQVBJ RW5jb2RlUGljdHVyZSAqcGljKQotK3sKLSsgICAgVkFBUElFbmNvZGVDb250ZXh0ICAgICAgICAg ICAgICAqY3R4ID0gYXZjdHgtPnByaXZfZGF0YTsKLSsgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0 ICAgICAgICAgICpwcml2ID0gYXZjdHgtPnByaXZfZGF0YTsKLSsgICAgVkFBUElFbmNvZGVBVjFQ aWN0dXJlICAgICAgICAgICpocGljID0gcGljLT5wcml2X2RhdGE7Ci0rICAgIEFWMVJhd09CVSAg ICAgICAgICAgICAgICAgICAgKmZoX29idSA9ICZwcml2LT5maDsKLSsgICAgQVYxUmF3RnJhbWVI ZWFkZXIgICAgICAgICAgICAgICAgKmZoID0gJmZoX29idS0+b2J1LmZyYW1lLmhlYWRlcjsKLSsg ICAgVkFFbmNQaWN0dXJlUGFyYW1ldGVyQnVmZmVyQVYxICp2cGljID0gcGljLT5jb2RlY19waWN0 dXJlX3BhcmFtczsKLSsgICAgQ29kZWRCaXRzdHJlYW1GcmFnbWVudCAgICAgICAgICAqb2J1ID0g JnByaXYtPmN1cnJlbnRfb2J1OwotKyAgICBWQUFQSUVuY29kZVBpY3R1cmUgICAgKnJlZjsKLSsg ICAgVkFBUElFbmNvZGVBVjFQaWN0dXJlICpocmVmOwotKyAgICBpbnQgc2xvdCwgaTsKLSsgICAg aW50IHJldDsKLSsgICAgc3RhdGljIGNvbnN0IGludDhfdCBkZWZhdWx0X2xvb3BfZmlsdGVyX3Jl Zl9kZWx0YXNbQVYxX1RPVEFMX1JFRlNfUEVSX0ZSQU1FXSA9Ci0rICAgICAgICB7IDEsIDAsIDAs IDAsIC0xLCAwLCAtMSwgLTEgfTsKLSsKLSsgICAgbWVtc2V0KGZoX29idSwgMCwgc2l6ZW9mKCpm aF9vYnUpKTsKLSsgICAgcGljLT5uYl9zbGljZXMgPSBwcml2LT50aWxlX2dyb3VwczsKLSsgICAg cGljLT5ub25faW5kZXBlbmRlbnRfZnJhbWUgPSBwaWMtPmVuY29kZV9vcmRlciA8IHBpYy0+ZGlz cGxheV9vcmRlcjsKLSsgICAgZmhfb2J1LT5oZWFkZXIub2J1X3R5cGUgPSBBVjFfT0JVX0ZSQU1F X0hFQURFUjsKLSsgICAgZmhfb2J1LT5oZWFkZXIub2J1X2hhc19zaXplX2ZpZWxkID0gMTsKLSsK LSsgICAgc3dpdGNoIChwaWMtPnR5cGUpIHsKLSsgICAgY2FzZSBQSUNUVVJFX1RZUEVfSURSOgot KyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPm5iX3JlZnNbMF0gPT0gMCB8fCBwaWMtPm5iX3JlZnNb MV0pOwotKyAgICAgICAgZmgtPmZyYW1lX3R5cGUgPSBBVjFfRlJBTUVfS0VZOwotKyAgICAgICAg ZmgtPnJlZnJlc2hfZnJhbWVfZmxhZ3MgPSAweEZGOwotKyAgICAgICAgZmgtPmJhc2VfcV9pZHgg PSBwcml2LT5xX2lkeF9pZHI7Ci0rICAgICAgICBocGljLT5zbG90ID0gMDsKLSsgICAgICAgIGhw aWMtPmxhc3RfaWRyX2ZyYW1lID0gcGljLT5kaXNwbGF5X29yZGVyOwotKyAgICAgICAgYnJlYWs7 Ci0rICAgIGNhc2UgUElDVFVSRV9UWVBFX1A6Ci0rICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJf cmVmc1swXSk7Ci0rICAgICAgICBmaC0+ZnJhbWVfdHlwZSA9IEFWMV9GUkFNRV9JTlRFUjsKLSsg ICAgICAgIGZoLT5iYXNlX3FfaWR4ID0gcHJpdi0+cV9pZHhfcDsKLSsgICAgICAgIHJlZiA9IHBp Yy0+cmVmc1swXVtwaWMtPm5iX3JlZnNbMF0gLSAxXTsKLSsgICAgICAgIGhyZWYgPSByZWYtPnBy aXZfZGF0YTsKLSsgICAgICAgIGhwaWMtPnNsb3QgPSAhaHJlZi0+c2xvdDsKLSsgICAgICAgIGhw aWMtPmxhc3RfaWRyX2ZyYW1lID0gaHJlZi0+bGFzdF9pZHJfZnJhbWU7Ci0rICAgICAgICBmaC0+ cmVmcmVzaF9mcmFtZV9mbGFncyA9IDEgPDwgaHBpYy0+c2xvdDsKLSsKLSsgICAgICAgIC8qKiBz ZXQgdGhlIG5lYXJlc3QgZnJhbWUgaW4gTDAgYXMgYWxsIHJlZmVyZW5jZSBmcmFtZS4gKi8KLSsg ICAgICAgIGZvciAoaSA9IDA7IGkgPCBBVjFfUkVGU19QRVJfRlJBTUU7IGkrKykgewotKyAgICAg ICAgICAgIGZoLT5yZWZfZnJhbWVfaWR4W2ldID0gaHJlZi0+c2xvdDsKLSsgICAgICAgIH0KLSsg ICAgICAgIGZoLT5wcmltYXJ5X3JlZl9mcmFtZSA9IGhyZWYtPnNsb3Q7Ci0rICAgICAgICBmaC0+ cmVmX29yZGVyX2hpbnRbaHJlZi0+c2xvdF0gPSByZWYtPmRpc3BsYXlfb3JkZXIgLSBocmVmLT5s YXN0X2lkcl9mcmFtZTsKLSsgICAgICAgIHZwaWMtPnJlZl9mcmFtZV9jdHJsX2wwLmZpZWxkcy5z ZWFyY2hfaWR4MCA9IEFWMV9SRUZfRlJBTUVfTEFTVDsKLSsKLSsgICAgICAgIC8qKiBzZXQgdGhl IDJuZCBuZWFyZXN0IGZyYW1lIGluIEwwIGFzIEdvbGRlbiBmcmFtZS4gKi8KLSsgICAgICAgIGlm IChwaWMtPm5iX3JlZnNbMF0gPiAxKSB7Ci0rICAgICAgICAgICAgcmVmID0gcGljLT5yZWZzWzBd W3BpYy0+bmJfcmVmc1swXSAtIDJdOwotKyAgICAgICAgICAgIGhyZWYgPSByZWYtPnByaXZfZGF0 YTsKLSsgICAgICAgICAgICBmaC0+cmVmX2ZyYW1lX2lkeFszXSA9IGhyZWYtPnNsb3Q7Ci0rICAg ICAgICAgICAgZmgtPnJlZl9vcmRlcl9oaW50W2hyZWYtPnNsb3RdID0gcmVmLT5kaXNwbGF5X29y ZGVyIC0gaHJlZi0+bGFzdF9pZHJfZnJhbWU7Ci0rICAgICAgICAgICAgdnBpYy0+cmVmX2ZyYW1l X2N0cmxfbDAuZmllbGRzLnNlYXJjaF9pZHgxID0gQVYxX1JFRl9GUkFNRV9HT0xERU47Ci0rICAg ICAgICB9Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQSUNUVVJFX1RZUEVfQjoKLSsgICAg ICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZzWzBdICYmIHBpYy0+bmJfcmVmc1sxXSk7Ci0rICAg ICAgICBmaC0+ZnJhbWVfdHlwZSA9IEFWMV9GUkFNRV9JTlRFUjsKLSsgICAgICAgIGZoLT5iYXNl X3FfaWR4ID0gcHJpdi0+cV9pZHhfYjsKLSsgICAgICAgIGZoLT5yZWZyZXNoX2ZyYW1lX2ZsYWdz ID0gMHgwOwotKyAgICAgICAgZmgtPnJlZmVyZW5jZV9zZWxlY3QgPSAxOwotKwotKyAgICAgICAg LyoqIEIgZnJhbWUgd2lsbCBub3QgYmUgcmVmZXJlbmNlZCwgZGlzYWJsZSBpdHMgcmVjb24gZnJh bWUuICovCi0rICAgICAgICB2cGljLT5waWN0dXJlX2ZsYWdzLmJpdHMuZGlzYWJsZV9mcmFtZV9y ZWNvbiA9IDE7Ci0rCi0rICAgICAgICAvKiogVXNlIExBU1RfRlJBTUUgYW5kIEJXRFJFRl9GUkFN RSBmb3IgcmVmZXJlbmNlLiAqLwotKyAgICAgICAgdnBpYy0+cmVmX2ZyYW1lX2N0cmxfbDAuZmll bGRzLnNlYXJjaF9pZHgwID0gQVYxX1JFRl9GUkFNRV9MQVNUOwotKyAgICAgICAgdnBpYy0+cmVm X2ZyYW1lX2N0cmxfbDEuZmllbGRzLnNlYXJjaF9pZHgwID0gQVYxX1JFRl9GUkFNRV9CV0RSRUY7 Ci0rCi0rICAgICAgICByZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwaWMtPnJlZnNb MF1bcGljLT5uYl9yZWZzWzBdIC0gMV07Ci0rICAgICAgICBocmVmICAgICAgICAgICAgICAgICAg ICAgICAgICAgPSByZWYtPnByaXZfZGF0YTsKLSsgICAgICAgIGhwaWMtPmxhc3RfaWRyX2ZyYW1l ICAgICAgICAgICA9IGhyZWYtPmxhc3RfaWRyX2ZyYW1lOwotKyAgICAgICAgZmgtPnByaW1hcnlf cmVmX2ZyYW1lICAgICAgICAgID0gaHJlZi0+c2xvdDsKLSsgICAgICAgIGZoLT5yZWZfb3JkZXJf aGludFtocmVmLT5zbG90XSA9IHJlZi0+ZGlzcGxheV9vcmRlciAtIGhyZWYtPmxhc3RfaWRyX2Zy YW1lOwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IEFWMV9SRUZfRlJBTUVfR09MREVOOyBpKysp IHsKLSsgICAgICAgICAgICBmaC0+cmVmX2ZyYW1lX2lkeFtpXSA9IGhyZWYtPnNsb3Q7Ci0rICAg ICAgICB9Ci0rCi0rICAgICAgICByZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwaWMt PnJlZnNbMV1bcGljLT5uYl9yZWZzWzFdIC0gMV07Ci0rICAgICAgICBocmVmICAgICAgICAgICAg ICAgICAgICAgICAgICAgPSByZWYtPnByaXZfZGF0YTsKLSsgICAgICAgIGZoLT5yZWZfb3JkZXJf aGludFtocmVmLT5zbG90XSA9IHJlZi0+ZGlzcGxheV9vcmRlciAtIGhyZWYtPmxhc3RfaWRyX2Zy YW1lOwotKyAgICAgICAgZm9yIChpID0gQVYxX1JFRl9GUkFNRV9HT0xERU47IGkgPCBBVjFfUkVG U19QRVJfRlJBTUU7IGkrKykgewotKyAgICAgICAgICAgIGZoLT5yZWZfZnJhbWVfaWR4W2ldID0g aHJlZi0+c2xvdDsKLSsgICAgICAgIH0KLSsgICAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0Ogot KyAgICAgICAgYXZfYXNzZXJ0MCgwICYmICJpbnZhbGlkIHBpY3R1cmUgdHlwZSIpOwotKyAgICB9 Ci0rCi0rICAgIGZoLT5zaG93X2ZyYW1lICAgICAgICAgICAgICAgID0gcGljLT5kaXNwbGF5X29y ZGVyIDw9IHBpYy0+ZW5jb2RlX29yZGVyOwotKyAgICBmaC0+c2hvd2FibGVfZnJhbWUgICAgICAg ICAgICA9IGZoLT5mcmFtZV90eXBlICE9IEFWMV9GUkFNRV9LRVk7Ci0rICAgIGZoLT5mcmFtZV93 aWR0aF9taW51c18xICAgICAgID0gYXZjdHgtPndpZHRoIC0gMTsKLSsgICAgZmgtPmZyYW1lX2hl aWdodF9taW51c18xICAgICAgPSBhdmN0eC0+aGVpZ2h0IC0gMTsKLSsgICAgZmgtPnJlbmRlcl93 aWR0aF9taW51c18xICAgICAgPSBmaC0+ZnJhbWVfd2lkdGhfbWludXNfMTsKLSsgICAgZmgtPnJl bmRlcl9oZWlnaHRfbWludXNfMSAgICAgPSBmaC0+ZnJhbWVfaGVpZ2h0X21pbnVzXzE7Ci0rICAg IGZoLT5vcmRlcl9oaW50ICAgICAgICAgICAgICAgID0gcGljLT5kaXNwbGF5X29yZGVyIC0gaHBp Yy0+bGFzdF9pZHJfZnJhbWU7Ci0rICAgIGZoLT50aWxlX2NvbHMgICAgICAgICAgICAgICAgID0g cHJpdi0+dGlsZV9jb2xzOwotKyAgICBmaC0+dGlsZV9yb3dzICAgICAgICAgICAgICAgICA9IHBy aXYtPnRpbGVfcm93czsKLSsgICAgZmgtPnRpbGVfY29sc19sb2cyICAgICAgICAgICAgPSBwcml2 LT50aWxlX2NvbHNfbG9nMjsKLSsgICAgZmgtPnRpbGVfcm93c19sb2cyICAgICAgICAgICAgPSBw cml2LT50aWxlX3Jvd3NfbG9nMjsKLSsgICAgZmgtPnVuaWZvcm1fdGlsZV9zcGFjaW5nX2ZsYWcg PSBwcml2LT51bmlmb3JtX3RpbGU7Ci0rICAgIGZoLT50aWxlX3NpemVfYnl0ZXNfbWludXMxICAg ID0gcHJpdi0+YXR0cl9leHQyLmJpdHMudGlsZV9zaXplX2J5dGVzX21pbnVzMTsKLSsKLSsgICAg LyoqIGlnbm9yZSBPTkxZXzR4NCBtb2RlIGZvciBjb2RlZGxvc3NsZXNzIGlzIG5vdCBmdWxseSBp bXBsZW1lbnRlZC4gKi8KLSsgICAgaWYgKHByaXYtPmF0dHJfZXh0Mi5iaXRzLnR4X21vZGVfc3Vw cG9ydCAmIDB4MDQpCi0rICAgICAgICBmaC0+dHhfbW9kZSA9IEFWMV9UWF9NT0RFX1NFTEVDVDsK LSsgICAgZWxzZSBpZiAocHJpdi0+YXR0cl9leHQyLmJpdHMudHhfbW9kZV9zdXBwb3J0ICYgMHgw MikKLSsgICAgICAgIGZoLT50eF9tb2RlID0gQVYxX1RYX01PREVfTEFSR0VTVDsKLSsgICAgZWxz ZSB7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIk5vIGF2YWlsYWJsZSB0 eCBtb2RlIGZvdW5kLlxuIik7Ci0rICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwotKyAg ICB9Ci0rCi0rICAgIGZvciAoaSA9IDA7IGkgPCBmaC0+dGlsZV9jb2xzOyBpKyspCi0rICAgICAg ICBmaC0+d2lkdGhfaW5fc2JzX21pbnVzXzFbaV0gPSB2cGljLT53aWR0aF9pbl9zYnNfbWludXNf MVtpXSA9IHByaXYtPndpZHRoX2luX3Nic19taW51c18xW2ldOwotKwotKyAgICBmb3IgKGkgPSAw OyBpIDwgZmgtPnRpbGVfcm93czsgaSsrKQotKyAgICAgICAgZmgtPmhlaWdodF9pbl9zYnNfbWlu dXNfMVtpXSA9IHZwaWMtPmhlaWdodF9pbl9zYnNfbWludXNfMVtpXSA9IHByaXYtPmhlaWdodF9p bl9zYnNfbWludXNfMVtpXTsKLSsKLSsgICAgbWVtY3B5KGZoLT5sb29wX2ZpbHRlcl9yZWZfZGVs dGFzLCBkZWZhdWx0X2xvb3BfZmlsdGVyX3JlZl9kZWx0YXMsCi0rICAgICAgICAgICBBVjFfVE9U QUxfUkVGU19QRVJfRlJBTUUgKiBzaXplb2YoaW50OF90KSk7Ci0rCi0rICAgIGlmIChmaC0+ZnJh bWVfdHlwZSA9PSBBVjFfRlJBTUVfS0VZICYmIGZoLT5zaG93X2ZyYW1lKSB7Ci0rICAgICAgICBm aC0+ZXJyb3JfcmVzaWxpZW50X21vZGUgPSAxOwotKyAgICB9Ci0rCi0rICAgIGlmIChmaC0+ZnJh bWVfdHlwZSA9PSBBVjFfRlJBTUVfS0VZIHx8IGZoLT5lcnJvcl9yZXNpbGllbnRfbW9kZSkKLSsg ICAgICAgIGZoLT5wcmltYXJ5X3JlZl9mcmFtZSA9IEFWMV9QUklNQVJZX1JFRl9OT05FOwotKwot KyAgICB2cGljLT5iYXNlX3FpbmRleCAgICAgICAgICA9IGZoLT5iYXNlX3FfaWR4OwotKyAgICB2 cGljLT5mcmFtZV93aWR0aF9taW51c18xICA9IGZoLT5mcmFtZV93aWR0aF9taW51c18xOwotKyAg ICB2cGljLT5mcmFtZV9oZWlnaHRfbWludXNfMSA9IGZoLT5mcmFtZV9oZWlnaHRfbWludXNfMTsK LSsgICAgdnBpYy0+cHJpbWFyeV9yZWZfZnJhbWUgICAgPSBmaC0+cHJpbWFyeV9yZWZfZnJhbWU7 Ci0rICAgIHZwaWMtPnJlY29uc3RydWN0ZWRfZnJhbWUgID0gcGljLT5yZWNvbl9zdXJmYWNlOwot KyAgICB2cGljLT5jb2RlZF9idWYgICAgICAgICAgICA9IHBpYy0+b3V0cHV0X2J1ZmZlcjsKLSsg ICAgdnBpYy0+dGlsZV9jb2xzICAgICAgICAgICAgPSBmaC0+dGlsZV9jb2xzOwotKyAgICB2cGlj LT50aWxlX3Jvd3MgICAgICAgICAgICA9IGZoLT50aWxlX3Jvd3M7Ci0rICAgIHZwaWMtPm9yZGVy X2hpbnQgICAgICAgICAgID0gZmgtPm9yZGVyX2hpbnQ7Ci0rI2lmIFZBX0NIRUNLX1ZFUlNJT04o MSwgMTUsIDApCi0rICAgIHZwaWMtPnJlZnJlc2hfZnJhbWVfZmxhZ3MgID0gZmgtPnJlZnJlc2hf ZnJhbWVfZmxhZ3M7Ci0rI2VuZGlmCi0rCi0rICAgIHZwaWMtPnBpY3R1cmVfZmxhZ3MuYml0cy5l bmFibGVfZnJhbWVfb2J1ICAgICA9IDA7Ci0rICAgIHZwaWMtPnBpY3R1cmVfZmxhZ3MuYml0cy5m cmFtZV90eXBlICAgICAgICAgICA9IGZoLT5mcmFtZV90eXBlOwotKyAgICB2cGljLT5waWN0dXJl X2ZsYWdzLmJpdHMucmVkdWNlZF90eF9zZXQgICAgICAgPSBmaC0+cmVkdWNlZF90eF9zZXQ7Ci0r ICAgIHZwaWMtPnBpY3R1cmVfZmxhZ3MuYml0cy5lcnJvcl9yZXNpbGllbnRfbW9kZSA9IGZoLT5l cnJvcl9yZXNpbGllbnRfbW9kZTsKLSsKLSsgICAgLyoqIGxldCBkcml2ZXIgZGVjaWRlIHRvIHVz ZSBzaW5nbGUgb3IgY29tcG91bmQgcmVmZXJlbmNlIHByZWRpY3Rpb24gbW9kZS4gKi8KLSsgICAg dnBpYy0+bW9kZV9jb250cm9sX2ZsYWdzLmJpdHMucmVmZXJlbmNlX21vZGUgPSBmaC0+cmVmZXJl bmNlX3NlbGVjdCA/IDIgOiAwOwotKyAgICB2cGljLT5tb2RlX2NvbnRyb2xfZmxhZ3MuYml0cy50 eF9tb2RlID0gZmgtPnR4X21vZGU7Ci0rCi0rICAgIHZwaWMtPnRpbGVfZ3JvdXBfb2J1X2hkcl9p bmZvLmJpdHMub2J1X2hhc19zaXplX2ZpZWxkID0gMTsKLSsKLSsgICAgLyoqIHNldCByZWZlcmVu Y2UuICovCi0rICAgIGZvciAoaSA9IDA7IGkgPCBBVjFfUkVGU19QRVJfRlJBTUU7IGkrKykKLSsg ICAgICAgIHZwaWMtPnJlZl9mcmFtZV9pZHhbaV0gPSBmaC0+cmVmX2ZyYW1lX2lkeFtpXTsKLSsK LSsgICAgZm9yIChpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKHZwaWMtPnJlZmVyZW5jZV9mcmFt ZXMpOyBpKyspCi0rICAgICAgICB2cGljLT5yZWZlcmVuY2VfZnJhbWVzW2ldID0gVkFfSU5WQUxJ RF9TVVJGQUNFOwotKwotKyAgICBmb3IgKGkgPSAwOyBpIDwgTUFYX1JFRkVSRU5DRV9MSVNUX05V TTsgaSsrKSB7Ci0rICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHBpYy0+bmJfcmVmc1tpXTsg aisrKSB7Ci0rICAgICAgICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICpyZWZfcGljID0gcGljLT5y ZWZzW2ldW2pdOwotKwotKyAgICAgICAgICAgIHNsb3QgPSAoKFZBQVBJRW5jb2RlQVYxUGljdHVy ZSopcmVmX3BpYy0+cHJpdl9kYXRhKS0+c2xvdDsKLSsgICAgICAgICAgICBhdl9hc3NlcnQwKHZw aWMtPnJlZmVyZW5jZV9mcmFtZXNbc2xvdF0gPT0gVkFfSU5WQUxJRF9TVVJGQUNFKTsKLSsKLSsg ICAgICAgICAgICB2cGljLT5yZWZlcmVuY2VfZnJhbWVzW3Nsb3RdID0gcmVmX3BpYy0+cmVjb25f c3VyZmFjZTsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICBmaF9vYnUtPm9idV9zaXplX2J5 dGVfbGVuID0gcHJpdi0+YXR0cl9leHQyLmJpdHMub2J1X3NpemVfYnl0ZXNfbWludXMxICsgMTsK LSsgICAgcmV0ID0gdmFhcGlfZW5jb2RlX2F2MV9hZGRfb2J1KGF2Y3R4LCBvYnUsIEFWMV9PQlVf RlJBTUVfSEVBREVSLCAmcHJpdi0+ZmgpOwotKyAgICBpZiAocmV0IDwgMCkKLSsgICAgICAgIGdv dG8gZW5kOwotKwotKyAgICByZXQgPSB2YWFwaV9lbmNvZGVfYXYxX3dyaXRlX29idShhdmN0eCwg cHJpdi0+ZmhfZGF0YSwgJnByaXYtPmZoX2RhdGFfbGVuLCBvYnUpOwotKyAgICBpZiAocmV0IDwg MCkKLSsgICAgICAgIGdvdG8gZW5kOwotKwotKyAgICBpZiAoIShjdHgtPnZhX3JjX21vZGUgJiBW QV9SQ19DUVApKSB7Ci0rICAgICAgICB2cGljLT5taW5fYmFzZV9xaW5kZXggPSBhdl9jbGlwKGF2 Y3R4LT5xbWluLCAxLCBBVjFfTUFYX1FVQU5UKTsKLSsgICAgICAgIHZwaWMtPm1heF9iYXNlX3Fp bmRleCA9IGF2X2NsaXAoYXZjdHgtPnFtYXgsIDEsIEFWMV9NQVhfUVVBTlQpOwotKwotKyAgICAg ICAgdnBpYy0+Yml0X29mZnNldF9xaW5kZXggICAgICAgICAgICAgID0gcHJpdi0+cWluZGV4X29m ZnNldDsKLSsgICAgICAgIHZwaWMtPmJpdF9vZmZzZXRfbG9vcGZpbHRlcl9wYXJhbXMgICA9IHBy aXYtPmxvb3BmaWx0ZXJfb2Zmc2V0OwotKyAgICAgICAgdnBpYy0+Yml0X29mZnNldF9jZGVmX3Bh cmFtcyAgICAgICAgID0gcHJpdi0+Y2RlZl9zdGFydF9vZmZzZXQ7Ci0rICAgICAgICB2cGljLT5z aXplX2luX2JpdHNfY2RlZl9wYXJhbXMgICAgICAgPSBwcml2LT5jZGVmX3BhcmFtX3NpemU7Ci0r ICAgICAgICB2cGljLT5zaXplX2luX2JpdHNfZnJhbWVfaGRyX29idSAgICAgPSBwcml2LT5maF9k YXRhX2xlbjsKLSsgICAgICAgIHZwaWMtPmJ5dGVfb2Zmc2V0X2ZyYW1lX2hkcl9vYnVfc2l6ZSA9 ICgoKHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfSURSKSA/Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5zaF9kYXRhX2xlbiAvIDggOiAwKSAr Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmhfb2J1 LT5oZWFkZXIub2J1X2V4dGVuc2lvbl9mbGFnID8KLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDIgOiAxKSk7Ci0rICAgIH0KLSsKLStlbmQ6Ci0rICAgIGZm X2Nic19mcmFnbWVudF9yZXNldChvYnUpOwotKyAgICByZXR1cm4gcmV0OwotK30KLSsKLStzdGF0 aWMgaW50IHZhYXBpX2VuY29kZV9hdjFfaW5pdF9zbGljZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQg KmF2Y3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW QUFQSUVuY29kZVBpY3R1cmUgKnBpYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVkFBUElFbmNvZGVTbGljZSAqc2xpY2UpCi0rewotKyAgICBWQUFQSUVu Y29kZUFWMUNvbnRleHQgICAgICAqcHJpdiA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAgIFZBRW5j VGlsZUdyb3VwQnVmZmVyQVYxICAqdnNsaWNlID0gc2xpY2UtPmNvZGVjX3NsaWNlX3BhcmFtczsK LSsgICAgQ29kZWRCaXRzdHJlYW1BVjFDb250ZXh0ICAqY2JjdHggPSBwcml2LT5jYmMtPnByaXZf ZGF0YTsKLSsgICAgaW50IGRpdjsKLSsKLSsgICAgLyoqIFNldCB0aWxlIGdyb3VwIGluZm8uICov Ci0rICAgIGRpdiA9IHByaXYtPnRpbGVfY29scyAqIHByaXYtPnRpbGVfcm93cyAvIHByaXYtPnRp bGVfZ3JvdXBzOwotKyAgICB2c2xpY2UtPnRnX3N0YXJ0ID0gc2xpY2UtPmluZGV4ICogZGl2Owot KyAgICBpZiAoc2xpY2UtPmluZGV4ID09IChwcml2LT50aWxlX2dyb3VwcyAtIDEpKSB7Ci0rICAg ICAgICB2c2xpY2UtPnRnX2VuZCA9IHByaXYtPnRpbGVfY29scyAqIHByaXYtPnRpbGVfcm93cyAt IDE7Ci0rICAgICAgICBjYmN0eC0+c2Vlbl9mcmFtZV9oZWFkZXIgPSAwOwotKyAgICB9IGVsc2Ug ewotKyAgICAgICAgdnNsaWNlLT50Z19lbmQgPSAoc2xpY2UtPmluZGV4ICsgMSkgKiBkaXYgLSAx OwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50IHZhYXBpX2Vu Y29kZV9hdjFfd3JpdGVfcGljdHVyZV9oZWFkZXIoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUFQSUVuY29k ZVBpY3R1cmUgKnBpYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2hhciAqZGF0YSwgc2l6ZV90ICpkYXRhX2xlbikKLSt7Ci0rICAgIFZBQVBJRW5j b2RlQVYxQ29udGV4dCAgICAgKnByaXYgPSBhdmN0eC0+cHJpdl9kYXRhOwotKyAgICBDb2RlZEJp dHN0cmVhbUZyYWdtZW50ICAgICAqb2J1ID0gJnByaXYtPmN1cnJlbnRfb2J1OwotKyAgICBDb2Rl ZEJpdHN0cmVhbUFWMUNvbnRleHQgKmNiY3R4ID0gcHJpdi0+Y2JjLT5wcml2X2RhdGE7Ci0rICAg IEFWMVJhd09CVSAgICAgICAgICAgICAgICpmaF9vYnUgPSAmcHJpdi0+Zmg7Ci0rICAgIEFWMVJh d0ZyYW1lSGVhZGVyICAgICAgICpyZXBfZmggPSAmZmhfb2J1LT5vYnUuZnJhbWVfaGVhZGVyOwot KyAgICBWQUFQSUVuY29kZUFWMVBpY3R1cmUgKmhyZWY7Ci0rICAgIGludCByZXQgPSAwOwotKwot KyAgICBwaWMtPnRhaWxfc2l6ZSA9IDA7Ci0rICAgIC8qKiBQYWNrIHJlcGVhdCBmcmFtZSBoZWFk ZXIuICovCi0rICAgIGlmIChwaWMtPmRpc3BsYXlfb3JkZXIgPiBwaWMtPmVuY29kZV9vcmRlcikg ewotKyAgICAgICAgbWVtc2V0KGZoX29idSwgMCwgc2l6ZW9mKCpmaF9vYnUpKTsKLSsgICAgICAg IGhyZWYgPSBwaWMtPnJlZnNbMF1bcGljLT5uYl9yZWZzWzBdIC0gMV0tPnByaXZfZGF0YTsKLSsg ICAgICAgIGZoX29idS0+aGVhZGVyLm9idV90eXBlID0gQVYxX09CVV9GUkFNRV9IRUFERVI7Ci0r ICAgICAgICBmaF9vYnUtPmhlYWRlci5vYnVfaGFzX3NpemVfZmllbGQgPSAxOwotKwotKyAgICAg ICAgcmVwX2ZoLT5zaG93X2V4aXN0aW5nX2ZyYW1lICAgPSAxOwotKyAgICAgICAgcmVwX2ZoLT5m cmFtZV90b19zaG93X21hcF9pZHggPSBocmVmLT5zbG90ID09IDA7Ci0rICAgICAgICByZXBfZmgt PmZyYW1lX3R5cGUgICAgICAgICAgICA9IEFWMV9GUkFNRV9JTlRFUjsKLSsgICAgICAgIHJlcF9m aC0+ZnJhbWVfd2lkdGhfbWludXNfMSAgID0gYXZjdHgtPndpZHRoIC0gMTsKLSsgICAgICAgIHJl cF9maC0+ZnJhbWVfaGVpZ2h0X21pbnVzXzEgID0gYXZjdHgtPmhlaWdodCAtIDE7Ci0rICAgICAg ICByZXBfZmgtPnJlbmRlcl93aWR0aF9taW51c18xICA9IHJlcF9maC0+ZnJhbWVfd2lkdGhfbWlu dXNfMTsKLSsgICAgICAgIHJlcF9maC0+cmVuZGVyX2hlaWdodF9taW51c18xID0gcmVwX2ZoLT5m cmFtZV9oZWlnaHRfbWludXNfMTsKLSsKLSsgICAgICAgIGNiY3R4LT5zZWVuX2ZyYW1lX2hlYWRl ciA9IDA7Ci0rCi0rICAgICAgICByZXQgPSB2YWFwaV9lbmNvZGVfYXYxX2FkZF9vYnUoYXZjdHgs IG9idSwgQVYxX09CVV9GUkFNRV9IRUFERVIsICZwcml2LT5maCk7Ci0rICAgICAgICBpZiAocmV0 IDwgMCkKLSsgICAgICAgICAgICBnb3RvIGVuZDsKLSsKLSsgICAgICAgIHJldCA9IHZhYXBpX2Vu Y29kZV9hdjFfd3JpdGVfb2J1KGF2Y3R4LCBwaWMtPnRhaWxfZGF0YSwgJnBpYy0+dGFpbF9zaXpl LCBvYnUpOwotKyAgICAgICAgaWYgKHJldCA8IDApCi0rICAgICAgICAgICAgZ290byBlbmQ7Ci0r Ci0rICAgICAgICBwaWMtPnRhaWxfc2l6ZSAvPSA4OwotKyAgICB9Ci0rCi0rICAgIG1lbWNweShk YXRhLCAmcHJpdi0+ZmhfZGF0YSwgTUFYX1BBUkFNX0JVRkZFUl9TSVpFICogc2l6ZW9mKGNoYXIp KTsKLSsgICAgKmRhdGFfbGVuID0gcHJpdi0+ZmhfZGF0YV9sZW47Ci0rCi0rZW5kOgotKyAgICBm Zl9jYnNfZnJhZ21lbnRfcmVzZXQob2J1KTsKLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3Rh dGljIGNvbnN0IFZBQVBJRW5jb2RlUHJvZmlsZSB2YWFwaV9lbmNvZGVfYXYxX3Byb2ZpbGVzW10g PSB7Ci0rICAgIHsgRkZfUFJPRklMRV9BVjFfTUFJTiwgIDgsIDMsIDEsIDEsIFZBUHJvZmlsZUFW MVByb2ZpbGUwIH0sCi0rICAgIHsgRkZfUFJPRklMRV9BVjFfTUFJTiwgMTAsIDMsIDEsIDEsIFZB UHJvZmlsZUFWMVByb2ZpbGUwIH0sCi0rICAgIHsgRkZfUFJPRklMRV9VTktOT1dOIH0KLSt9Owot KwotK3N0YXRpYyBjb25zdCBWQUFQSUVuY29kZVR5cGUgdmFhcGlfZW5jb2RlX3R5cGVfYXYxID0g ewotKyAgICAucHJvZmlsZXMgICAgICAgID0gdmFhcGlfZW5jb2RlX2F2MV9wcm9maWxlcywKLSsg ICAgLmZsYWdzICAgICAgICAgICA9IEZMQUdfQl9QSUNUVVJFUyB8IEZMQUdfVElNRVNUQU1QX05P X0RFTEFZLAotKyAgICAuZGVmYXVsdF9xdWFsaXR5ID0gMjUsCi0rCi0rICAgIC5nZXRfZW5jb2Rl cl9jYXBzID0gJnZhYXBpX2VuY29kZV9hdjFfZ2V0X2VuY29kZXJfY2FwcywKLSsgICAgLmNvbmZp Z3VyZSAgICAgICAgPSAmdmFhcGlfZW5jb2RlX2F2MV9jb25maWd1cmUsCi0rCi0rICAgIC5zZXF1 ZW5jZV9oZWFkZXJfdHlwZSAgPSBWQUVuY1BhY2tlZEhlYWRlclNlcXVlbmNlLAotKyAgICAuc2Vx dWVuY2VfcGFyYW1zX3NpemUgID0gc2l6ZW9mKFZBRW5jU2VxdWVuY2VQYXJhbWV0ZXJCdWZmZXJB VjEpLAotKyAgICAuaW5pdF9zZXF1ZW5jZV9wYXJhbXMgID0gJnZhYXBpX2VuY29kZV9hdjFfaW5p dF9zZXF1ZW5jZV9wYXJhbXMsCi0rICAgIC53cml0ZV9zZXF1ZW5jZV9oZWFkZXIgPSAmdmFhcGlf ZW5jb2RlX2F2MV93cml0ZV9zZXF1ZW5jZV9oZWFkZXIsCi0rCi0rICAgIC5waWN0dXJlX3ByaXZf ZGF0YV9zaXplID0gc2l6ZW9mKFZBQVBJRW5jb2RlQVYxUGljdHVyZSksCi0rICAgIC5waWN0dXJl X2hlYWRlcl90eXBlICAgID0gVkFFbmNQYWNrZWRIZWFkZXJQaWN0dXJlLAotKyAgICAucGljdHVy ZV9wYXJhbXNfc2l6ZSAgICA9IHNpemVvZihWQUVuY1BpY3R1cmVQYXJhbWV0ZXJCdWZmZXJBVjEp LAotKyAgICAuaW5pdF9waWN0dXJlX3BhcmFtcyAgICA9ICZ2YWFwaV9lbmNvZGVfYXYxX2luaXRf cGljdHVyZV9wYXJhbXMsCi0rICAgIC53cml0ZV9waWN0dXJlX2hlYWRlciAgID0gJnZhYXBpX2Vu Y29kZV9hdjFfd3JpdGVfcGljdHVyZV9oZWFkZXIsCi0rCi0rICAgIC5zbGljZV9wYXJhbXNfc2l6 ZSA9IHNpemVvZihWQUVuY1RpbGVHcm91cEJ1ZmZlckFWMSksCi0rICAgIC5pbml0X3NsaWNlX3Bh cmFtcyA9ICZ2YWFwaV9lbmNvZGVfYXYxX2luaXRfc2xpY2VfcGFyYW1zLAotK307Ci0rCi0rc3Rh dGljIGF2X2NvbGQgaW50IHZhYXBpX2VuY29kZV9hdjFfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZj dHgpCi0rewotKyAgICBWQUFQSUVuY29kZUNvbnRleHQgICAgICAqY3R4ID0gYXZjdHgtPnByaXZf ZGF0YTsKLSsgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0ICAqcHJpdiA9IGF2Y3R4LT5wcml2X2Rh dGE7Ci0rICAgIFZBQ29uZmlnQXR0cmliIGF0dHI7Ci0rICAgIFZBU3RhdHVzIHZhczsKLSsgICAg aW50IHJldDsKLSsKLSsgICAgY3R4LT5jb2RlYyA9ICZ2YWFwaV9lbmNvZGVfdHlwZV9hdjE7Ci0r Ci0rICAgIGN0eC0+ZGVzaXJlZF9wYWNrZWRfaGVhZGVycyA9Ci0rICAgICAgICBWQV9FTkNfUEFD S0VEX0hFQURFUl9TRVFVRU5DRSB8Ci0rICAgICAgICBWQV9FTkNfUEFDS0VEX0hFQURFUl9QSUNU VVJFOwotKwotKyAgICBpZiAoYXZjdHgtPnByb2ZpbGUgPT0gRkZfUFJPRklMRV9VTktOT1dOKQot KyAgICAgICAgYXZjdHgtPnByb2ZpbGUgPSBwcml2LT5wcm9maWxlOwotKyAgICBpZiAoYXZjdHgt PmxldmVsID09IEZGX1BST0ZJTEVfVU5LTk9XTikKLSsgICAgICAgIGF2Y3R4LT5sZXZlbCA9IHBy aXYtPmxldmVsOwotKwotKyAgICBpZiAoYXZjdHgtPmxldmVsICE9IEZGX1BST0ZJTEVfVU5LTk9X TiAmJiBhdmN0eC0+bGV2ZWwgJiB+MHgxZikgewotKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9M T0dfRVJST1IsICJJbnZhbGlkIGxldmVsICVkXG4iLCBhdmN0eC0+bGV2ZWwpOwotKyAgICAgICAg cmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKLSsgICAgfQotKwotKyAgICByZXQgPSBmZl92YWFwaV9l bmNvZGVfaW5pdChhdmN0eCk7Ci0rICAgIGlmIChyZXQgPCAwKQotKyAgICAgICAgcmV0dXJuIHJl dDsKLSsKLSsgICAgYXR0ci50eXBlID0gVkFDb25maWdBdHRyaWJFbmNBVjE7Ci0rICAgIHZhcyA9 IHZhR2V0Q29uZmlnQXR0cmlidXRlcyhjdHgtPmh3Y3R4LT5kaXNwbGF5LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY3R4LT52YV9wcm9maWxlLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3R4LT52YV9lbnRyeXBvaW50LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmF0dHIsIDEpOwotKyAgICBpZiAodmFzICE9IFZBX1NUQVRVU19TVUNDRVNT KSB7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBxdWVy eSAiCi0rICAgICAgICAgICAgICAgImNvbmZpZyBhdHRyaWJ1dGU6ICVkICglcykuXG4iLCB2YXMs IHZhRXJyb3JTdHIodmFzKSk7Ci0rICAgICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKLSsg ICAgfSBlbHNlIGlmIChhdHRyLnZhbHVlID09IFZBX0FUVFJJQl9OT1RfU1VQUE9SVEVEKSB7Ci0r ICAgICAgICBwcml2LT5hdHRyLnZhbHVlID0gMDsKLSsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZf TE9HX1dBUk5JTkcsICJBdHRyaWJ1dGUgdHlwZTolZCBpcyBub3QgIgotKyAgICAgICAgICAgICAg ICJzdXBwb3J0ZWQuXG4iLCBhdHRyLnR5cGUpOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgcHJp di0+YXR0ci52YWx1ZSA9IGF0dHIudmFsdWU7Ci0rICAgIH0KLSsKLSsgICAgYXR0ci50eXBlID0g VkFDb25maWdBdHRyaWJFbmNBVjFFeHQxOwotKyAgICB2YXMgPSB2YUdldENvbmZpZ0F0dHJpYnV0 ZXMoY3R4LT5od2N0eC0+ZGlzcGxheSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGN0eC0+dmFfcHJvZmlsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+ dmFfZW50cnlwb2ludCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhdHRyLCAx KTsKLSsgICAgaWYgKHZhcyAhPSBWQV9TVEFUVVNfU1VDQ0VTUykgewotKyAgICAgICAgYXZfbG9n KGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gcXVlcnkgIgotKyAgICAgICAgICAgICAg ICJjb25maWcgYXR0cmlidXRlOiAlZCAoJXMpLlxuIiwgdmFzLCB2YUVycm9yU3RyKHZhcykpOwot KyAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7Ci0rICAgIH0gZWxzZSBpZiAoYXR0ci52 YWx1ZSA9PSBWQV9BVFRSSUJfTk9UX1NVUFBPUlRFRCkgewotKyAgICAgICAgcHJpdi0+YXR0cl9l eHQxLnZhbHVlID0gMDsKLSsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX1dBUk5JTkcsICJB dHRyaWJ1dGUgdHlwZTolZCBpcyBub3QgIgotKyAgICAgICAgICAgICAgICJzdXBwb3J0ZWQuXG4i LCBhdHRyLnR5cGUpOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgcHJpdi0+YXR0cl9leHQxLnZh bHVlID0gYXR0ci52YWx1ZTsKLSsgICAgfQotKwotKyAgICAvKiogVGhpcyBhdHRyIHByb3ZpZGVz IGVzc2VudGlhbCBpbmRpY2F0b3JzLCByZXR1cm4gZXJyb3IgaWYgbm90IHN1cHBvcnQuICovCi0r ICAgIGF0dHIudHlwZSA9IFZBQ29uZmlnQXR0cmliRW5jQVYxRXh0MjsKLSsgICAgdmFzID0gdmFH ZXRDb25maWdBdHRyaWJ1dGVzKGN0eC0+aHdjdHgtPmRpc3BsYXksCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjdHgtPnZhX3Byb2ZpbGUsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjdHgtPnZhX2VudHJ5cG9pbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmYXR0ciwgMSk7Ci0rICAgIGlmICh2YXMgIT0gVkFfU1RBVFVTX1NVQ0NFU1MgfHwg YXR0ci52YWx1ZSA9PSBWQV9BVFRSSUJfTk9UX1NVUFBPUlRFRCkgewotKyAgICAgICAgYXZfbG9n KGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gcXVlcnkgIgotKyAgICAgICAgICAgICAg ICJjb25maWcgYXR0cmlidXRlOiAlZCAoJXMpLlxuIiwgdmFzLCB2YUVycm9yU3RyKHZhcykpOwot KyAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAg ICBwcml2LT5hdHRyX2V4dDIudmFsdWUgPSBhdHRyLnZhbHVlOwotKyAgICB9Ci0rCi0rICAgIHJl dCA9IHZhYXBpX2VuY29kZV9hdjFfc2V0X3RpbGUoYXZjdHgpOwotKyAgICBpZiAocmV0IDwgMCkK LSsgICAgICAgIHJldHVybiByZXQ7Ci0rCi0rICAgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMg YXZfY29sZCBpbnQgdmFhcGlfZW5jb2RlX2F2MV9jbG9zZShBVkNvZGVjQ29udGV4dCAqYXZjdHgp Ci0rewotKyAgICBWQUFQSUVuY29kZUFWMUNvbnRleHQgKnByaXYgPSBhdmN0eC0+cHJpdl9kYXRh OwotKwotKyAgICBmZl9jYnNfZnJhZ21lbnRfZnJlZSgmcHJpdi0+Y3VycmVudF9vYnUpOwotKyAg ICBmZl9jYnNfY2xvc2UoJnByaXYtPmNiYyk7Ci0rCi0rICAgIHJldHVybiBmZl92YWFwaV9lbmNv ZGVfY2xvc2UoYXZjdHgpOwotK30KLSsKLSsjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihWQUFQ SUVuY29kZUFWMUNvbnRleHQsIHgpCi0rI2RlZmluZSBGTEFHUyAoQVZfT1BUX0ZMQUdfVklERU9f UEFSQU0gfCBBVl9PUFRfRkxBR19FTkNPRElOR19QQVJBTSkKLSsKLStzdGF0aWMgY29uc3QgQVZP cHRpb24gdmFhcGlfZW5jb2RlX2F2MV9vcHRpb25zW10gPSB7Ci0rICAgIFZBQVBJX0VOQ09ERV9D T01NT05fT1BUSU9OUywKLSsgICAgVkFBUElfRU5DT0RFX1JDX09QVElPTlMsCi0rICAgIHsgInBy b2ZpbGUiLCAiU2V0IHByb2ZpbGUgKHNlcV9wcm9maWxlKSIsCi0rICAgICAgT0ZGU0VUKHByb2Zp bGUpLCBBVl9PUFRfVFlQRV9JTlQsCi0rICAgICAgeyAuaTY0ID0gRkZfUFJPRklMRV9VTktOT1dO IH0sIEZGX1BST0ZJTEVfVU5LTk9XTiwgMHhmZiwgRkxBR1MsICJwcm9maWxlIiB9LAotKwotKyNk ZWZpbmUgUFJPRklMRShuYW1lLCB2YWx1ZSkgIG5hbWUsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NP TlNULCBcCi0rICAgIHsgLmk2NCA9IHZhbHVlIH0sIDAsIDAsIEZMQUdTLCAicHJvZmlsZSIKLSsg ICAgeyBQUk9GSUxFKCJtYWluIiwgICAgICAgICAgICAgICBGRl9QUk9GSUxFX0FWMV9NQUlOKSB9 LAotKyAgICB7IFBST0ZJTEUoImhpZ2giLCAgICAgICAgICAgICAgIEZGX1BST0ZJTEVfQVYxX0hJ R0gpIH0sCi0rICAgIHsgUFJPRklMRSgicHJvZmVzc2lvbmFsIiwgICAgICAgRkZfUFJPRklMRV9B VjFfUFJPRkVTU0lPTkFMKSB9LAotKyN1bmRlZiBQUk9GSUxFCi0rCi0rICAgIHsgInRpZXIiLCAi U2V0IHRpZXIgKHNlcV90aWVyKSIsCi0rICAgICAgT0ZGU0VUKHRpZXIpLCBBVl9PUFRfVFlQRV9J TlQsIHsgLmk2NCA9IDAgfSwgMCwgMSwgRkxBR1MsICJ0aWVyIiB9LAotKyAgICB7ICJtYWluIiwg TlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsCi0rICAgICAgeyAuaTY0ID0gMCB9LCAwLCAwLCBG TEFHUywgInRpZXIiIH0sCi0rICAgIHsgImhpZ2giLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05T VCwKLSsgICAgICB7IC5pNjQgPSAxIH0sIDAsIDAsIEZMQUdTLCAidGllciIgfSwKLSsgICAgeyAi bGV2ZWwiLCAiU2V0IGxldmVsIChzZXFfbGV2ZWxfaWR4KSIsCi0rICAgICAgT0ZGU0VUKGxldmVs KSwgQVZfT1BUX1RZUEVfSU5ULAotKyAgICAgIHsgLmk2NCA9IEZGX1BST0ZJTEVfVU5LTk9XTiB9 LCBGRl9QUk9GSUxFX1VOS05PV04sIDB4MWYsIEZMQUdTLCAibGV2ZWwiIH0sCi0rCi0rI2RlZmlu ZSBMRVZFTChuYW1lLCB2YWx1ZSkgbmFtZSwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIFwK LSsgICAgICB7IC5pNjQgPSB2YWx1ZSB9LCAwLCAwLCBGTEFHUywgImxldmVsIgotKyAgICB7IExF VkVMKCIyLjAiLCAgMCkgfSwKLSsgICAgeyBMRVZFTCgiMi4xIiwgIDEpIH0sCi0rICAgIHsgTEVW RUwoIjMuMCIsICA0KSB9LAotKyAgICB7IExFVkVMKCIzLjEiLCAgNSkgfSwKLSsgICAgeyBMRVZF TCgiNC4wIiwgIDgpIH0sCi0rICAgIHsgTEVWRUwoIjQuMSIsICA5KSB9LAotKyAgICB7IExFVkVM KCI1LjAiLCAxMikgfSwKLSsgICAgeyBMRVZFTCgiNS4xIiwgMTMpIH0sCi0rICAgIHsgTEVWRUwo IjUuMiIsIDE0KSB9LAotKyAgICB7IExFVkVMKCI1LjMiLCAxNSkgfSwKLSsgICAgeyBMRVZFTCgi Ni4wIiwgMTYpIH0sCi0rICAgIHsgTEVWRUwoIjYuMSIsIDE3KSB9LAotKyAgICB7IExFVkVMKCI2 LjIiLCAxOCkgfSwKLSsgICAgeyBMRVZFTCgiNi4zIiwgMTkpIH0sCi0rI3VuZGVmIExFVkVMCi0r Ci0rICAgIHsgInRpbGVzIiwgIlRpbGUgY29sdW1ucyB4IHJvd3MgKFVzZSBtaW5pbWFsIHRpbGUg Y29sdW1uL3JvdyBudW1iZXIgYXV0b21hdGljYWxseSBieSBkZWZhdWx0KSIsCi0rICAgICAgT0ZG U0VUKHRpbGVfY29scyksIEFWX09QVF9UWVBFX0lNQUdFX1NJWkUsIHsgLnN0ciA9IE5VTEwgfSwg MCwgMCwgRkxBR1MgfSwKLSsgICAgeyAidGlsZV9ncm91cHMiLCAiTnVtYmVyIG9mIHRpbGUgZ3Jv dXBzIGZvciBlbmNvZGluZyIsCi0rICAgICAgT0ZGU0VUKHRpbGVfZ3JvdXBzKSwgQVZfT1BUX1RZ UEVfSU5ULCB7IC5pNjQgPSAxIH0sIDEsIEFWMV9NQVhfVElMRV9ST1dTICogQVYxX01BWF9USUxF X0NPTFMsIEZMQUdTIH0sCi0rCi0rICAgIHsgTlVMTCB9LAotK307Ci0rCi0rc3RhdGljIGNvbnN0 IEZGQ29kZWNEZWZhdWx0IHZhYXBpX2VuY29kZV9hdjFfZGVmYXVsdHNbXSA9IHsKLSsgICAgeyAi YiIsICAgICAgICAgICAgICAiMCIgICB9LAotKyAgICB7ICJiZiIsICAgICAgICAgICAgICIyIiAg IH0sCi0rICAgIHsgImciLCAgICAgICAgICAgICAgIjEyMCIgfSwKLSsgICAgeyAicW1pbiIsICAg ICAgICAgICAiMSIgICB9LAotKyAgICB7ICJxbWF4IiwgICAgICAgICAgICIyNTUiIH0sCi0rICAg IHsgTlVMTCB9LAotK307Ci0rCi0rc3RhdGljIGNvbnN0IEFWQ2xhc3MgdmFhcGlfZW5jb2RlX2F2 MV9jbGFzcyA9IHsKLSsgICAgLmNsYXNzX25hbWUgPSAiYXYxX3ZhYXBpIiwKLSsgICAgLml0ZW1f bmFtZSAgPSBhdl9kZWZhdWx0X2l0ZW1fbmFtZSwKLSsgICAgLm9wdGlvbiAgICAgPSB2YWFwaV9l bmNvZGVfYXYxX29wdGlvbnMsCi0rICAgIC52ZXJzaW9uICAgID0gTElCQVZVVElMX1ZFUlNJT05f SU5ULAotK307Ci0rCi0rY29uc3QgRkZDb2RlYyBmZl9hdjFfdmFhcGlfZW5jb2RlciA9IHsKLSsg ICAgLnAubmFtZSAgICAgICAgID0gImF2MV92YWFwaSIsCi0rICAgIENPREVDX0xPTkdfTkFNRSgi QVYxIChWQUFQSSkiKSwKLSsgICAgLnAudHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVP LAotKyAgICAucC5pZCAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9BVjEsCi0rICAgIC5wcml2X2Rh dGFfc2l6ZSA9IHNpemVvZihWQUFQSUVuY29kZUFWMUNvbnRleHQpLAotKyAgICAuaW5pdCAgICAg ICAgICAgPSAmdmFhcGlfZW5jb2RlX2F2MV9pbml0LAotKyAgICBGRl9DT0RFQ19SRUNFSVZFX1BB Q0tFVF9DQigmZmZfdmFhcGlfZW5jb2RlX3JlY2VpdmVfcGFja2V0KSwKLSsgICAgLmNsb3NlICAg ICAgICAgID0gJnZhYXBpX2VuY29kZV9hdjFfY2xvc2UsCi0rICAgIC5wLnByaXZfY2xhc3MgICA9 ICZ2YWFwaV9lbmNvZGVfYXYxX2NsYXNzLAotKyAgICAucC5jYXBhYmlsaXRpZXMgPSBBVl9DT0RF Q19DQVBfREVMQVkgfCBBVl9DT0RFQ19DQVBfSEFSRFdBUkUgfAotKyAgICAgICAgICAgICAgICAg ICAgICBBVl9DT0RFQ19DQVBfRFIxIHwgQVZfQ09ERUNfQ0FQX0VOQ09ERVJfUkVPUkRFUkVEX09Q QVFVRSwKLSsgICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09ERUNfQ0FQX05PVF9JTklUX1RIUkVB RFNBRkUgfAotKyAgICAgICAgICAgICAgICAgICAgICBGRl9DT0RFQ19DQVBfSU5JVF9DTEVBTlVQ LAotKyAgICAuZGVmYXVsdHMgICAgICAgPSB2YWFwaV9lbmNvZGVfYXYxX2RlZmF1bHRzLAotKyAg ICAucC5waXhfZm10cyA9IChjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXRbXSkgewotKyAgICAgICAg QVZfUElYX0ZNVF9WQUFQSSwKLSsgICAgICAgIEFWX1BJWF9GTVRfTk9ORSwKLSsgICAgfSwKLSsg ICAgLmh3X2NvbmZpZ3MgICAgID0gZmZfdmFhcGlfZW5jb2RlX2h3X2NvbmZpZ3MsCi0rICAgIC5w LndyYXBwZXJfbmFtZSA9ICJ2YWFwaSIsCi0rfTsKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Zh YXBpX2VuY29kZV9oMjY0LmMgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY0LmMKLWluZGV4 IDY0NWY2YTkuLmMyMDVkMWUgMTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9o MjY0LmMKLSsrKyBiL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX2gyNjQuYwotQEAgLTYxNCw3ICs2 MTQsNyBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9oMjY0X2luaXRfcGljdHVyZV9wYXJhbXMo QVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICBWQUFQSUVuY29kZVBpY3R1cmUgICAgICAgICAg ICAgICpwcmV2ID0gcGljLT5wcmV2OwotICAgICBWQUFQSUVuY29kZUgyNjRQaWN0dXJlICAgICAg ICAgKmhwcmV2ID0gcHJldiA/IHByZXYtPnByaXZfZGF0YSA6IE5VTEw7Ci0gICAgIFZBRW5jUGlj dHVyZVBhcmFtZXRlckJ1ZmZlckgyNjQgKnZwaWMgPSBwaWMtPmNvZGVjX3BpY3R1cmVfcGFyYW1z OwotLSAgICBpbnQgaTsKLSsgICAgaW50IGksIGogPSAwOwotIAotICAgICBpZiAocGljLT50eXBl ID09IFBJQ1RVUkVfVFlQRV9JRFIpIHsKLSAgICAgICAgIGF2X2Fzc2VydDAocGljLT5kaXNwbGF5 X29yZGVyID09IHBpYy0+ZW5jb2RlX29yZGVyKTsKLUBAIC03MTUsMjQgKzcxNSwyNiBAQCBzdGF0 aWMgaW50IHZhYXBpX2VuY29kZV9oMjY0X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LAotICAgICAgICAgLlRvcEZpZWxkT3JkZXJDbnQgICAgPSBocGljLT5waWNfb3Jk ZXJfY250LAotICAgICAgICAgLkJvdHRvbUZpZWxkT3JkZXJDbnQgPSBocGljLT5waWNfb3JkZXJf Y250LAotICAgICB9OwotLQotLSAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBpKysp IHsKLS0gICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAgICAgICpyZWYgPSBwaWMtPnJlZnNbaV07 Ci0tICAgICAgICBWQUFQSUVuY29kZUgyNjRQaWN0dXJlICpocmVmOwotLQotLSAgICAgICAgYXZf YXNzZXJ0MChyZWYgJiYgcmVmLT5lbmNvZGVfb3JkZXIgPCBwaWMtPmVuY29kZV9vcmRlcik7Ci0t ICAgICAgICBocmVmID0gcmVmLT5wcml2X2RhdGE7Ci0tCi0tICAgICAgICB2cGljLT5SZWZlcmVu Y2VGcmFtZXNbaV0gPSAoVkFQaWN0dXJlSDI2NCkgewotLSAgICAgICAgICAgIC5waWN0dXJlX2lk ICAgICAgICAgID0gcmVmLT5yZWNvbl9zdXJmYWNlLAotLSAgICAgICAgICAgIC5mcmFtZV9pZHgg ICAgICAgICAgID0gaHJlZi0+ZnJhbWVfbnVtLAotLSAgICAgICAgICAgIC5mbGFncyAgICAgICAg ICAgICAgID0gVkFfUElDVFVSRV9IMjY0X1NIT1JUX1RFUk1fUkVGRVJFTkNFLAotLSAgICAgICAg ICAgIC5Ub3BGaWVsZE9yZGVyQ250ICAgID0gaHJlZi0+cGljX29yZGVyX2NudCwKLS0gICAgICAg ICAgICAuQm90dG9tRmllbGRPcmRlckNudCA9IGhyZWYtPnBpY19vcmRlcl9jbnQsCi0tICAgICAg ICB9OwotKyAgICBmb3IgKGludCBrID0gMDsgayA8IE1BWF9SRUZFUkVOQ0VfTElTVF9OVU07IGsr KykgewotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1trXTsgaSsrKSB7Ci0r ICAgICAgICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICAgICAgKnJlZiA9IHBpYy0+cmVmc1trXVtp XTsKLSsgICAgICAgICAgICBWQUFQSUVuY29kZUgyNjRQaWN0dXJlICpocmVmOwotKwotKyAgICAg ICAgICAgIGF2X2Fzc2VydDAocmVmICYmIHJlZi0+ZW5jb2RlX29yZGVyIDwgcGljLT5lbmNvZGVf b3JkZXIpOwotKyAgICAgICAgICAgIGhyZWYgPSByZWYtPnByaXZfZGF0YTsKLSsKLSsgICAgICAg ICAgICB2cGljLT5SZWZlcmVuY2VGcmFtZXNbaisrXSA9IChWQVBpY3R1cmVIMjY0KSB7Ci0rICAg ICAgICAgICAgICAgIC5waWN0dXJlX2lkICAgICAgICAgID0gcmVmLT5yZWNvbl9zdXJmYWNlLAot KyAgICAgICAgICAgICAgICAuZnJhbWVfaWR4ICAgICAgICAgICA9IGhyZWYtPmZyYW1lX251bSwK LSsgICAgICAgICAgICAgICAgLmZsYWdzICAgICAgICAgICAgICAgPSBWQV9QSUNUVVJFX0gyNjRf U0hPUlRfVEVSTV9SRUZFUkVOQ0UsCi0rICAgICAgICAgICAgICAgIC5Ub3BGaWVsZE9yZGVyQ250 ICAgID0gaHJlZi0+cGljX29yZGVyX2NudCwKLSsgICAgICAgICAgICAgICAgLkJvdHRvbUZpZWxk T3JkZXJDbnQgPSBocmVmLT5waWNfb3JkZXJfY250LAotKyAgICAgICAgICAgIH07Ci0rICAgICAg ICB9Ci0gICAgIH0KLS0gICAgZm9yICg7IGkgPCBGRl9BUlJBWV9FTEVNUyh2cGljLT5SZWZlcmVu Y2VGcmFtZXMpOyBpKyspIHsKLS0gICAgICAgIHZwaWMtPlJlZmVyZW5jZUZyYW1lc1tpXSA9IChW QVBpY3R1cmVIMjY0KSB7Ci0rCi0rICAgIGZvciAoOyBqIDwgRkZfQVJSQVlfRUxFTVModnBpYy0+ UmVmZXJlbmNlRnJhbWVzKTsgaisrKSB7Ci0rICAgICAgICB2cGljLT5SZWZlcmVuY2VGcmFtZXNb al0gPSAoVkFQaWN0dXJlSDI2NCkgewotICAgICAgICAgICAgIC5waWN0dXJlX2lkID0gVkFfSU5W QUxJRF9JRCwKLSAgICAgICAgICAgICAuZmxhZ3MgICAgICA9IFZBX1BJQ1RVUkVfSDI2NF9JTlZB TElELAotICAgICAgICAgfTsKLUBAIC05MzQsMTcgKzkzNiwxNyBAQCBzdGF0aWMgaW50IHZhYXBp X2VuY29kZV9oMjY0X2luaXRfc2xpY2VfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAK LSAgICAgICAgIGlmIChwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX1ApIHsKLSAgICAgICAgICAg ICBpbnQgbmVlZF9ycGxtID0gMDsKLS0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5u Yl9yZWZzOyBpKyspIHsKLS0gICAgICAgICAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbaV0p OwotLSAgICAgICAgICAgICAgICBpZiAocGljLT5yZWZzW2ldICE9IGRlZl9sMFtpXSkKLSsgICAg ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzWzBdOyBpKyspIHsKLSsgICAgICAg ICAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbMF1baV0pOwotKyAgICAgICAgICAgICAgICBp ZiAocGljLT5yZWZzWzBdW2ldICE9IGRlZl9sMFtpXSkKLSAgICAgICAgICAgICAgICAgICAgIG5l ZWRfcnBsbSA9IDE7Ci0gICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgIHNoLT5yZWZfcGlj X2xpc3RfbW9kaWZpY2F0aW9uX2ZsYWdfbDAgPSBuZWVkX3JwbG07Ci0gICAgICAgICAgICAgaWYg KG5lZWRfcnBsbSkgewotICAgICAgICAgICAgICAgICBpbnQgcGljX251bSA9IGhwaWMtPmZyYW1l X251bTsKLS0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmczsgaSsr KSB7Ci0tICAgICAgICAgICAgICAgICAgICBocmVmID0gcGljLT5yZWZzW2ldLT5wcml2X2RhdGE7 Ci0rICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMF07IGkrKykg ewotKyAgICAgICAgICAgICAgICAgICAgaHJlZiA9IHBpYy0+cmVmc1swXVtpXS0+cHJpdl9kYXRh OwotICAgICAgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MChocmVmLT5mcmFtZV9udW0gIT0gcGlj X251bSk7Ci0gICAgICAgICAgICAgICAgICAgICBpZiAoaHJlZi0+ZnJhbWVfbnVtIDwgcGljX251 bSkgewotICAgICAgICAgICAgICAgICAgICAgICAgIHNoLT5ycGxtX2wwW2ldLm1vZGlmaWNhdGlv bl9vZl9waWNfbnVtc19pZGMgPSAwOwotQEAgLTk2MywyOCArOTY1LDI5IEBAIHN0YXRpYyBpbnQg dmFhcGlfZW5jb2RlX2gyNjRfaW5pdF9zbGljZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LAotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICBpbnQgbmVlZF9ycGxtX2wwID0gMCwg bmVlZF9ycGxtX2wxID0gMDsKLSAgICAgICAgICAgICBpbnQgbjAgPSAwLCBuMSA9IDA7Ci0tICAg ICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmczsgaSsrKSB7Ci0tICAgICAgICAg ICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzW2ldKTsKLS0gICAgICAgICAgICAgICAgaHJlZiA9 IHBpYy0+cmVmc1tpXS0+cHJpdl9kYXRhOwotLSAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKGhy ZWYtPnBpY19vcmRlcl9jbnQgIT0gaHBpYy0+cGljX29yZGVyX2NudCk7Ci0tICAgICAgICAgICAg ICAgIGlmIChocmVmLT5waWNfb3JkZXJfY250IDwgaHBpYy0+cGljX29yZGVyX2NudCkgewotLSAg ICAgICAgICAgICAgICAgICAgaWYgKHBpYy0+cmVmc1tpXSAhPSBkZWZfbDBbbjBdKQotLSAgICAg ICAgICAgICAgICAgICAgICAgIG5lZWRfcnBsbV9sMCA9IDE7Ci0tICAgICAgICAgICAgICAgICAg ICArK24wOwotLSAgICAgICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICAgICAg aWYgKHBpYy0+cmVmc1tpXSAhPSBkZWZfbDFbbjFdKQotLSAgICAgICAgICAgICAgICAgICAgICAg IG5lZWRfcnBsbV9sMSA9IDE7Ci0tICAgICAgICAgICAgICAgICAgICArK24xOwotLSAgICAgICAg ICAgICAgICB9Ci0rICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsg aSsrKSB7Ci0rICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzBdW2ldKTsKLSsg ICAgICAgICAgICAgICAgaHJlZiA9IHBpYy0+cmVmc1swXVtpXS0+cHJpdl9kYXRhOwotKyAgICAg ICAgICAgICAgICBhdl9hc3NlcnQwKGhyZWYtPnBpY19vcmRlcl9jbnQgPCBocGljLT5waWNfb3Jk ZXJfY250KTsKLSsgICAgICAgICAgICAgICAgaWYgKHBpYy0+cmVmc1swXVtpXSAhPSBkZWZfbDBb bjBdKQotKyAgICAgICAgICAgICAgICAgICAgbmVlZF9ycGxtX2wwID0gMTsKLSsgICAgICAgICAg ICAgICAgKytuMDsKLSsgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgZm9yIChpID0gMDsg aSA8IHBpYy0+bmJfcmVmc1sxXTsgaSsrKSB7Ci0rICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAo cGljLT5yZWZzWzFdW2ldKTsKLSsgICAgICAgICAgICAgICAgaHJlZiA9IHBpYy0+cmVmc1sxXVtp XS0+cHJpdl9kYXRhOwotKyAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKGhyZWYtPnBpY19vcmRl cl9jbnQgPiBocGljLT5waWNfb3JkZXJfY250KTsKLSsgICAgICAgICAgICAgICAgaWYgKHBpYy0+ cmVmc1sxXVtpXSAhPSBkZWZfbDFbbjFdKQotKyAgICAgICAgICAgICAgICAgICAgbmVlZF9ycGxt X2wxID0gMTsKLSsgICAgICAgICAgICAgICAgKytuMTsKLSAgICAgICAgICAgICB9Ci0gCi0gICAg ICAgICAgICAgc2gtPnJlZl9waWNfbGlzdF9tb2RpZmljYXRpb25fZmxhZ19sMCA9IG5lZWRfcnBs bV9sMDsKLSAgICAgICAgICAgICBpZiAobmVlZF9ycGxtX2wwKSB7Ci0gICAgICAgICAgICAgICAg IGludCBwaWNfbnVtID0gaHBpYy0+ZnJhbWVfbnVtOwotLSAgICAgICAgICAgICAgICBmb3IgKGkg PSBqID0gMDsgaSA8IHBpYy0+bmJfcmVmczsgaSsrKSB7Ci0tICAgICAgICAgICAgICAgICAgICBo cmVmID0gcGljLT5yZWZzW2ldLT5wcml2X2RhdGE7Ci0tICAgICAgICAgICAgICAgICAgICBpZiAo aHJlZi0+cGljX29yZGVyX2NudCA+IGhwaWMtPnBpY19vcmRlcl9jbnQpCi0tICAgICAgICAgICAg ICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgIGZvciAoaSA9IGogPSAwOyBp IDwgcGljLT5uYl9yZWZzWzBdOyBpKyspIHsKLSsgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBw aWMtPnJlZnNbMF1baV0tPnByaXZfZGF0YTsKLSAgICAgICAgICAgICAgICAgICAgIGF2X2Fzc2Vy dDAoaHJlZi0+ZnJhbWVfbnVtICE9IHBpY19udW0pOwotICAgICAgICAgICAgICAgICAgICAgaWYg KGhyZWYtPmZyYW1lX251bSA8IHBpY19udW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBz aC0+cnBsbV9sMFtqXS5tb2RpZmljYXRpb25fb2ZfcGljX251bXNfaWRjID0gMDsKLUBAIC0xMDA1 LDEwICsxMDA4LDggQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NF9pbml0X3NsaWNlX3Bh cmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0gICAgICAgICAgICAgc2gtPnJlZl9waWNfbGlz dF9tb2RpZmljYXRpb25fZmxhZ19sMSA9IG5lZWRfcnBsbV9sMTsKLSAgICAgICAgICAgICBpZiAo bmVlZF9ycGxtX2wxKSB7Ci0gICAgICAgICAgICAgICAgIGludCBwaWNfbnVtID0gaHBpYy0+ZnJh bWVfbnVtOwotLSAgICAgICAgICAgICAgICBmb3IgKGkgPSBqID0gMDsgaSA8IHBpYy0+bmJfcmVm czsgaSsrKSB7Ci0tICAgICAgICAgICAgICAgICAgICBocmVmID0gcGljLT5yZWZzW2ldLT5wcml2 X2RhdGE7Ci0tICAgICAgICAgICAgICAgICAgICBpZiAoaHJlZi0+cGljX29yZGVyX2NudCA8IGhw aWMtPnBpY19vcmRlcl9jbnQpCi0tICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0r ICAgICAgICAgICAgICAgIGZvciAoaSA9IGogPSAwOyBpIDwgcGljLT5uYl9yZWZzWzFdOyBpKysp IHsKLSsgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBwaWMtPnJlZnNbMV1baV0tPnByaXZfZGF0 YTsKLSAgICAgICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAoaHJlZi0+ZnJhbWVfbnVtICE9IHBp Y19udW0pOwotICAgICAgICAgICAgICAgICAgICAgaWYgKGhyZWYtPmZyYW1lX251bSA8IHBpY19u dW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaC0+cnBsbV9sMVtqXS5tb2RpZmljYXRp b25fb2ZfcGljX251bXNfaWRjID0gMDsKLUBAIC0xMDQ4LDE0ICsxMDQ5LDEzIEBAIHN0YXRpYyBp bnQgdmFhcGlfZW5jb2RlX2gyNjRfaW5pdF9zbGljZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2 Y3R4LAotICAgICAgICAgdnNsaWNlLT5SZWZQaWNMaXN0MVtpXS5mbGFncyAgICAgID0gVkFfUElD VFVSRV9IMjY0X0lOVkFMSUQ7Ci0gICAgIH0KLSAKLS0gICAgYXZfYXNzZXJ0MChwaWMtPm5iX3Jl ZnMgPD0gMik7Ci0tICAgIGlmIChwaWMtPm5iX3JlZnMgPj0gMSkgewotKyAgICBpZiAocGljLT5u Yl9yZWZzWzBdKSB7Ci0gICAgICAgICAvLyBCYWNrd2FyZCByZWZlcmVuY2UgZm9yIFAtIG9yIEIt ZnJhbWUuCi0gICAgICAgICBhdl9hc3NlcnQwKHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfUCB8 fAotICAgICAgICAgICAgICAgICAgICBwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0IpOwotICAg ICAgICAgdnNsaWNlLT5SZWZQaWNMaXN0MFswXSA9IHZwaWMtPlJlZmVyZW5jZUZyYW1lc1swXTsK LSAgICAgfQotLSAgICBpZiAocGljLT5uYl9yZWZzID49IDIpIHsKLSsgICAgaWYgKHBpYy0+bmJf cmVmc1sxXSkgewotICAgICAgICAgLy8gRm9yd2FyZCByZWZlcmVuY2UgZm9yIEItZnJhbWUuCi0g ICAgICAgICBhdl9hc3NlcnQwKHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfQik7Ci0gICAgICAg ICB2c2xpY2UtPlJlZlBpY0xpc3QxWzBdID0gdnBpYy0+UmVmZXJlbmNlRnJhbWVzWzFdOwotZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX2gyNjUuYyBiL2xpYmF2Y29kZWMvdmFh cGlfZW5jb2RlX2gyNjUuYwotaW5kZXggYWE3ZTUzMi4uZjAxNWU2ZiAxMDA2NDQKLS0tLSBhL2xp YmF2Y29kZWMvdmFhcGlfZW5jb2RlX2gyNjUuYwotKysrIGIvbGliYXZjb2RlYy92YWFwaV9lbmNv ZGVfaDI2NS5jCi1AQCAtNzY0LDcgKzc2NCw3IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gy NjVfaW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0gICAgIFZBQVBJ RW5jb2RlUGljdHVyZSAgICAgICAgICAgICAgKnByZXYgPSBwaWMtPnByZXY7Ci0gICAgIFZBQVBJ RW5jb2RlSDI2NVBpY3R1cmUgICAgICAgICAqaHByZXYgPSBwcmV2ID8gcHJldi0+cHJpdl9kYXRh IDogTlVMTDsKLSAgICAgVkFFbmNQaWN0dXJlUGFyYW1ldGVyQnVmZmVySEVWQyAqdnBpYyA9IHBp Yy0+Y29kZWNfcGljdHVyZV9wYXJhbXM7Ci0tICAgIGludCBpOwotKyAgICBpbnQgaSwgaiA9IDA7 Ci0gCi0gICAgIGlmIChwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0lEUikgewotICAgICAgICAg YXZfYXNzZXJ0MChwaWMtPmRpc3BsYXlfb3JkZXIgPT0gcGljLT5lbmNvZGVfb3JkZXIpOwotQEAg LTc4OSw4ICs3ODksOCBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9oMjY1X2luaXRfcGljdHVy ZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICAgICAgICAgIGhwaWMtPnBpY190 eXBlICAgICAgID0gMTsKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgVkFBUElFbmNv ZGVQaWN0dXJlICppcmFwX3JlZjsKLS0gICAgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1sw XSAmJiBwaWMtPnJlZnNbMV0pOwotLSAgICAgICAgICAgIGZvciAoaXJhcF9yZWYgPSBwaWM7IGly YXBfcmVmOyBpcmFwX3JlZiA9IGlyYXBfcmVmLT5yZWZzWzFdKSB7Ci0rICAgICAgICAgICAgYXZf YXNzZXJ0MChwaWMtPnJlZnNbMF1bMF0gJiYgcGljLT5yZWZzWzFdWzBdKTsKLSsgICAgICAgICAg ICBmb3IgKGlyYXBfcmVmID0gcGljOyBpcmFwX3JlZjsgaXJhcF9yZWYgPSBpcmFwX3JlZi0+cmVm c1sxXVswXSkgewotICAgICAgICAgICAgICAgICBpZiAoaXJhcF9yZWYtPnR5cGUgPT0gUElDVFVS RV9UWVBFX0kpCi0gICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICB9Ci1A QCAtOTE1LDI0ICs5MTUsMjcgQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NV9pbml0X3Bp Y3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAgICAgICAgIC5mbGFncyAgICAg ICAgID0gMCwKLSAgICAgfTsKLSAKLS0gICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmczsg aSsrKSB7Ci0tICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgICAgICAqcmVmID0gcGljLT5yZWZz W2ldOwotLSAgICAgICAgVkFBUElFbmNvZGVIMjY1UGljdHVyZSAqaHJlZjsKLS0KLS0gICAgICAg IGF2X2Fzc2VydDAocmVmICYmIHJlZi0+ZW5jb2RlX29yZGVyIDwgcGljLT5lbmNvZGVfb3JkZXIp OwotLSAgICAgICAgaHJlZiA9IHJlZi0+cHJpdl9kYXRhOwotLQotLSAgICAgICAgdnBpYy0+cmVm ZXJlbmNlX2ZyYW1lc1tpXSA9IChWQVBpY3R1cmVIRVZDKSB7Ci0tICAgICAgICAgICAgLnBpY3R1 cmVfaWQgICAgPSByZWYtPnJlY29uX3N1cmZhY2UsCi0tICAgICAgICAgICAgLnBpY19vcmRlcl9j bnQgPSBocmVmLT5waWNfb3JkZXJfY250LAotLSAgICAgICAgICAgIC5mbGFncyA9IChyZWYtPmRp c3BsYXlfb3JkZXIgPCBwaWMtPmRpc3BsYXlfb3JkZXIgPwotLSAgICAgICAgICAgICAgICAgICAg ICBWQV9QSUNUVVJFX0hFVkNfUlBTX1NUX0NVUlJfQkVGT1JFIDogMCkgfAotLSAgICAgICAgICAg ICAgICAgICAgIChyZWYtPmRpc3BsYXlfb3JkZXIgPiBwaWMtPmRpc3BsYXlfb3JkZXIgPwotLSAg ICAgICAgICAgICAgICAgICAgICBWQV9QSUNUVVJFX0hFVkNfUlBTX1NUX0NVUlJfQUZURVIgIDog MCksCi0tICAgICAgICB9OwotKyAgICBmb3IgKGludCBrID0gMDsgayA8IE1BWF9SRUZFUkVOQ0Vf TElTVF9OVU07IGsrKykgewotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1tr XTsgaSsrKSB7Ci0rICAgICAgICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICAgICAgKnJlZiA9IHBp Yy0+cmVmc1trXVtpXTsKLSsgICAgICAgICAgICBWQUFQSUVuY29kZUgyNjVQaWN0dXJlICpocmVm OwotKwotKyAgICAgICAgICAgIGF2X2Fzc2VydDAocmVmICYmIHJlZi0+ZW5jb2RlX29yZGVyIDwg cGljLT5lbmNvZGVfb3JkZXIpOwotKyAgICAgICAgICAgIGhyZWYgPSByZWYtPnByaXZfZGF0YTsK LSsKLSsgICAgICAgICAgICB2cGljLT5yZWZlcmVuY2VfZnJhbWVzW2orK10gPSAoVkFQaWN0dXJl SEVWQykgewotKyAgICAgICAgICAgICAgICAucGljdHVyZV9pZCAgICA9IHJlZi0+cmVjb25fc3Vy ZmFjZSwKLSsgICAgICAgICAgICAgICAgLnBpY19vcmRlcl9jbnQgPSBocmVmLT5waWNfb3JkZXJf Y250LAotKyAgICAgICAgICAgICAgICAuZmxhZ3MgPSAocmVmLT5kaXNwbGF5X29yZGVyIDwgcGlj LT5kaXNwbGF5X29yZGVyID8KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFZBX1BJQ1RVUkVf SEVWQ19SUFNfU1RfQ1VSUl9CRUZPUkUgOiAwKSB8Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAocmVmLT5kaXNwbGF5X29yZGVyID4gcGljLT5kaXNwbGF5X29yZGVyID8KLSsgICAgICAgICAg ICAgICAgICAgICAgICAgIFZBX1BJQ1RVUkVfSEVWQ19SUFNfU1RfQ1VSUl9BRlRFUiAgOiAwKSwK LSsgICAgICAgICAgICB9OwotKyAgICAgICAgfQotICAgICB9Ci0tICAgIGZvciAoOyBpIDwgRkZf QVJSQVlfRUxFTVModnBpYy0+cmVmZXJlbmNlX2ZyYW1lcyk7IGkrKykgewotLSAgICAgICAgdnBp Yy0+cmVmZXJlbmNlX2ZyYW1lc1tpXSA9IChWQVBpY3R1cmVIRVZDKSB7Ci0rCi0rICAgIGZvciAo OyBqIDwgRkZfQVJSQVlfRUxFTVModnBpYy0+cmVmZXJlbmNlX2ZyYW1lcyk7IGorKykgewotKyAg ICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tqXSA9IChWQVBpY3R1cmVIRVZDKSB7Ci0gICAg ICAgICAgICAgLnBpY3R1cmVfaWQgPSBWQV9JTlZBTElEX0lELAotICAgICAgICAgICAgIC5mbGFn cyAgICAgID0gVkFfUElDVFVSRV9IRVZDX0lOVkFMSUQsCi0gICAgICAgICB9OwotQEAgLTEwMTYs MjEgKzEwMTksMzMgQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NV9pbml0X3NsaWNlX3Bh cmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0gICAgICAgICBtZW1zZXQocnBzLCAwLCBzaXpl b2YoKnJwcykpOwotIAotICAgICAgICAgcnBzX3BpY3MgPSAwOwotLSAgICAgICAgZm9yIChpID0g MDsgaSA8IHBpYy0+bmJfcmVmczsgaSsrKSB7Ci0tICAgICAgICAgICAgc3RycCA9IHBpYy0+cmVm c1tpXS0+cHJpdl9kYXRhOwotLSAgICAgICAgICAgIHJwc19wb2NbcnBzX3BpY3NdICA9IHN0cnAt PnBpY19vcmRlcl9jbnQ7Ci0tICAgICAgICAgICAgcnBzX3VzZWRbcnBzX3BpY3NdID0gMTsKLS0g ICAgICAgICAgICArK3Jwc19waWNzOwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IE1BWF9SRUZF UkVOQ0VfTElTVF9OVU07IGkrKykgewotKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBwaWMt Pm5iX3JlZnNbaV07IGorKykgewotKyAgICAgICAgICAgICAgICBzdHJwID0gcGljLT5yZWZzW2ld W2pdLT5wcml2X2RhdGE7Ci0rICAgICAgICAgICAgICAgIHJwc19wb2NbcnBzX3BpY3NdICA9IHN0 cnAtPnBpY19vcmRlcl9jbnQ7Ci0rICAgICAgICAgICAgICAgIHJwc191c2VkW3Jwc19waWNzXSA9 IDE7Ci0rICAgICAgICAgICAgICAgICsrcnBzX3BpY3M7Ci0rICAgICAgICAgICAgfQotICAgICAg ICAgfQotKwotICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfZHBiX3BpY3M7IGkrKykg ewotICAgICAgICAgICAgIGlmIChwaWMtPmRwYltpXSA9PSBwaWMpCi0gICAgICAgICAgICAgICAg IGNvbnRpbnVlOwotLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBwaWMtPm5iX3JlZnM7IGor KykgewotLSAgICAgICAgICAgICAgICBpZiAocGljLT5kcGJbaV0gPT0gcGljLT5yZWZzW2pdKQot KwotKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBwaWMtPm5iX3JlZnNbMF07IGorKykgewot KyAgICAgICAgICAgICAgICBpZiAocGljLT5kcGJbaV0gPT0gcGljLT5yZWZzWzBdW2pdKQotKyAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGlm IChqIDwgcGljLT5uYl9yZWZzWzBdKQotKyAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsKLSsg ICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgcGljLT5uYl9yZWZzWzFdOyBqKyspIHsKLSsgICAg ICAgICAgICAgICAgaWYgKHBpYy0+ZHBiW2ldID09IHBpYy0+cmVmc1sxXVtqXSkKLSAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBpZiAoaiA8 IHBpYy0+bmJfcmVmcykKLSsgICAgICAgICAgICBpZiAoaiA8IHBpYy0+bmJfcmVmc1sxXSkKLSAg ICAgICAgICAgICAgICAgY29udGludWU7Ci0rCi0gICAgICAgICAgICAgc3RycCA9IHBpYy0+ZHBi W2ldLT5wcml2X2RhdGE7Ci0gICAgICAgICAgICAgcnBzX3BvY1tycHNfcGljc10gID0gc3RycC0+ cGljX29yZGVyX2NudDsKLSAgICAgICAgICAgICBycHNfdXNlZFtycHNfcGljc10gPSAwOwotQEAg LTExNTUsOCArMTE3MCw3IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjVfaW5pdF9zbGlj ZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICAgICAgdnNsaWNlLT5yZWZfcGlj X2xpc3QxW2ldLmZsYWdzICAgICAgPSBWQV9QSUNUVVJFX0hFVkNfSU5WQUxJRDsKLSAgICAgfQot IAotLSAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmcyA8PSAyKTsKLS0gICAgaWYgKHBpYy0+bmJf cmVmcyA+PSAxKSB7Ci0rICAgIGlmIChwaWMtPm5iX3JlZnNbMF0pIHsKLSAgICAgICAgIC8vIEJh Y2t3YXJkIHJlZmVyZW5jZSBmb3IgUC0gb3IgQi1mcmFtZS4KLSAgICAgICAgIGF2X2Fzc2VydDAo cGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9QIHx8Ci0gICAgICAgICAgICAgICAgICAgIHBpYy0+ dHlwZSA9PSBQSUNUVVJFX1RZUEVfQik7Ci1AQCAtMTE2NSw3ICsxMTc5LDcgQEAgc3RhdGljIGlu dCB2YWFwaV9lbmNvZGVfaDI2NV9pbml0X3NsaWNlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZj dHgsCi0gICAgICAgICAgICAgLy8gUmVmZXJlbmNlIGZvciBHUEIgQi1mcmFtZSwgTDAgPT0gTDEK LSAgICAgICAgICAgICB2c2xpY2UtPnJlZl9waWNfbGlzdDFbMF0gPSB2cGljLT5yZWZlcmVuY2Vf ZnJhbWVzWzBdOwotICAgICB9Ci0tICAgIGlmIChwaWMtPm5iX3JlZnMgPj0gMikgewotKyAgICBp ZiAocGljLT5uYl9yZWZzWzFdKSB7Ci0gICAgICAgICAvLyBGb3J3YXJkIHJlZmVyZW5jZSBmb3Ig Qi1mcmFtZS4KLSAgICAgICAgIGF2X2Fzc2VydDAocGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9C KTsKLSAgICAgICAgIHZzbGljZS0+cmVmX3BpY19saXN0MVswXSA9IHZwaWMtPnJlZmVyZW5jZV9m cmFtZXNbMV07Ci1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfbXBlZzIuYyBi L2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX21wZWcyLmMKLWluZGV4IDkyNjFkMTkuLjgwMDBhZTEg MTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9tcGVnMi5jCi0rKysgYi9saWJh dmNvZGVjL3ZhYXBpX2VuY29kZV9tcGVnMi5jCi1AQCAtNDU4LDEyICs0NTgsMTIgQEAgc3RhdGlj IGludCB2YWFwaV9lbmNvZGVfbXBlZzJfaW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4 dCAqYXZjdHgsCi0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBQSUNUVVJFX1RZUEVfUDoKLSAg ICAgICAgIHZwaWMtPnBpY3R1cmVfdHlwZSA9IFZBRW5jUGljdHVyZVR5cGVQcmVkaWN0aXZlOwot LSAgICAgICAgdnBpYy0+Zm9yd2FyZF9yZWZlcmVuY2VfcGljdHVyZSA9IHBpYy0+cmVmc1swXS0+ cmVjb25fc3VyZmFjZTsKLSsgICAgICAgIHZwaWMtPmZvcndhcmRfcmVmZXJlbmNlX3BpY3R1cmUg PSBwaWMtPnJlZnNbMF1bMF0tPnJlY29uX3N1cmZhY2U7Ci0gICAgICAgICBicmVhazsKLSAgICAg Y2FzZSBQSUNUVVJFX1RZUEVfQjoKLSAgICAgICAgIHZwaWMtPnBpY3R1cmVfdHlwZSA9IFZBRW5j UGljdHVyZVR5cGVCaWRpcmVjdGlvbmFsOwotLSAgICAgICAgdnBpYy0+Zm9yd2FyZF9yZWZlcmVu Y2VfcGljdHVyZSAgPSBwaWMtPnJlZnNbMF0tPnJlY29uX3N1cmZhY2U7Ci0tICAgICAgICB2cGlj LT5iYWNrd2FyZF9yZWZlcmVuY2VfcGljdHVyZSA9IHBpYy0+cmVmc1sxXS0+cmVjb25fc3VyZmFj ZTsKLSsgICAgICAgIHZwaWMtPmZvcndhcmRfcmVmZXJlbmNlX3BpY3R1cmUgID0gcGljLT5yZWZz WzBdWzBdLT5yZWNvbl9zdXJmYWNlOwotKyAgICAgICAgdnBpYy0+YmFja3dhcmRfcmVmZXJlbmNl X3BpY3R1cmUgPSBwaWMtPnJlZnNbMV1bMF0tPnJlY29uX3N1cmZhY2U7Ci0gICAgICAgICBicmVh azsKLSAgICAgZGVmYXVsdDoKLSAgICAgICAgIGF2X2Fzc2VydDAoMCAmJiAiaW52YWxpZCBwaWN0 dXJlIHR5cGUiKTsKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDguYyBi L2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX3ZwOC5jCi1pbmRleCBhZTZhOGQzLi5iOTZlNGNkIDEw MDY0NAotLS0tIGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfdnA4LmMKLSsrKyBiL2xpYmF2Y29k ZWMvdmFhcGlfZW5jb2RlX3ZwOC5jCi1AQCAtODYsNyArODYsNyBAQCBzdGF0aWMgaW50IHZhYXBp X2VuY29kZV92cDhfaW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0g ICAgIHN3aXRjaCAocGljLT50eXBlKSB7Ci0gICAgIGNhc2UgUElDVFVSRV9UWVBFX0lEUjoKLSAg ICAgY2FzZSBQSUNUVVJFX1RZUEVfSToKLS0gICAgICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZz ID09IDApOwotKyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPm5iX3JlZnNbMF0gPT0gMCAmJiBwaWMt Pm5iX3JlZnNbMV0gPT0gMCk7Ci0gICAgICAgICB2cGljLT5yZWZfZmxhZ3MuYml0cy5mb3JjZV9r ZiA9IDE7Ci0gICAgICAgICB2cGljLT5yZWZfbGFzdF9mcmFtZSA9Ci0gICAgICAgICB2cGljLT5y ZWZfZ2ZfZnJhbWUgICA9Ci1AQCAtOTQsMTQgKzk0LDE0IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5j b2RlX3ZwOF9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAgICAg ICAgICAgICBWQV9JTlZBTElEX1NVUkZBQ0U7Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBQ SUNUVVJFX1RZUEVfUDoKLS0gICAgICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZzID09IDEpOwot KyAgICAgICAgYXZfYXNzZXJ0MCghcGljLT5uYl9yZWZzWzFdKTsKLSAgICAgICAgIHZwaWMtPnJl Zl9mbGFncy5iaXRzLm5vX3JlZl9sYXN0ID0gMDsKLSAgICAgICAgIHZwaWMtPnJlZl9mbGFncy5i aXRzLm5vX3JlZl9nZiAgID0gMTsKLSAgICAgICAgIHZwaWMtPnJlZl9mbGFncy5iaXRzLm5vX3Jl Zl9hcmYgID0gMTsKLSAgICAgICAgIHZwaWMtPnJlZl9sYXN0X2ZyYW1lID0KLSAgICAgICAgIHZw aWMtPnJlZl9nZl9mcmFtZSAgID0KLSAgICAgICAgIHZwaWMtPnJlZl9hcmZfZnJhbWUgID0KLS0g ICAgICAgICAgICBwaWMtPnJlZnNbMF0tPnJlY29uX3N1cmZhY2U7Ci0rICAgICAgICAgICAgcGlj LT5yZWZzWzBdWzBdLT5yZWNvbl9zdXJmYWNlOwotICAgICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1 bHQ6Ci0gICAgICAgICBhdl9hc3NlcnQwKDAgJiYgImludmFsaWQgcGljdHVyZSB0eXBlIik7Ci1k aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfdnA5LmMgYi9saWJhdmNvZGVjL3Zh YXBpX2VuY29kZV92cDkuYwotaW5kZXggYWYxMzUzYy4uZDllOGJhNiAxMDA2NDQKLS0tLSBhL2xp YmF2Y29kZWMvdmFhcGlfZW5jb2RlX3ZwOS5jCi0rKysgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29k ZV92cDkuYwotQEAgLTk2LDE1ICs5NiwxNSBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV92cDlf aW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0gCi0gICAgIHN3aXRj aCAocGljLT50eXBlKSB7Ci0gICAgIGNhc2UgUElDVFVSRV9UWVBFX0lEUjoKLS0gICAgICAgIGF2 X2Fzc2VydDAocGljLT5uYl9yZWZzID09IDApOwotKyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPm5i X3JlZnNbMF0gPT0gMCAmJiBwaWMtPm5iX3JlZnNbMV0gPT0gMCk7Ci0gICAgICAgICB2cGljLT5y ZWZfZmxhZ3MuYml0cy5mb3JjZV9rZiA9IDE7Ci0gICAgICAgICB2cGljLT5yZWZyZXNoX2ZyYW1l X2ZsYWdzID0gMHhmZjsKLSAgICAgICAgIGhwaWMtPnNsb3QgPSAwOwotICAgICAgICAgYnJlYWs7 Ci0gICAgIGNhc2UgUElDVFVSRV9UWVBFX1A6Ci0tICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJf cmVmcyA9PSAxKTsKLSsgICAgICAgIGF2X2Fzc2VydDAoIXBpYy0+bmJfcmVmc1sxXSk7Ci0gICAg ICAgICB7Ci0tICAgICAgICAgICAgVkFBUElFbmNvZGVWUDlQaWN0dXJlICpocmVmID0gcGljLT5y ZWZzWzBdLT5wcml2X2RhdGE7Ci0rICAgICAgICAgICAgVkFBUElFbmNvZGVWUDlQaWN0dXJlICpo cmVmID0gcGljLT5yZWZzWzBdWzBdLT5wcml2X2RhdGE7Ci0gICAgICAgICAgICAgYXZfYXNzZXJ0 MChocmVmLT5zbG90ID09IDAgfHwgaHJlZi0+c2xvdCA9PSAxKTsKLSAKLSAgICAgICAgICAgICBp ZiAoY3R4LT5tYXhfYl9kZXB0aCA+IDApIHsKLUBAIC0xMjAsMTAgKzEyMCwxMCBAQCBzdGF0aWMg aW50IHZhYXBpX2VuY29kZV92cDlfaW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAq YXZjdHgsCi0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBQSUNUVVJFX1RZ UEVfQjoKLS0gICAgICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZzID09IDIpOwotKyAgICAgICAg YXZfYXNzZXJ0MChwaWMtPm5iX3JlZnNbMF0gJiYgcGljLT5uYl9yZWZzWzFdKTsKLSAgICAgICAg IHsKLS0gICAgICAgICAgICBWQUFQSUVuY29kZVZQOVBpY3R1cmUgKmhyZWYwID0gcGljLT5yZWZz WzBdLT5wcml2X2RhdGEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpocmVm MSA9IHBpYy0+cmVmc1sxXS0+cHJpdl9kYXRhOwotKyAgICAgICAgICAgIFZBQVBJRW5jb2RlVlA5 UGljdHVyZSAqaHJlZjAgPSBwaWMtPnJlZnNbMF1bMF0tPnByaXZfZGF0YSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKmhyZWYxID0gcGljLT5yZWZzWzFdWzBdLT5wcml2X2Rh dGE7Ci0gICAgICAgICAgICAgYXZfYXNzZXJ0MChocmVmMC0+c2xvdCA8IHBpYy0+Yl9kZXB0aCAr IDEgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIGhyZWYxLT5zbG90IDwgcGljLT5iX2RlcHRo ICsgMSk7Ci0gCi1AQCAtMTU3LDEyICsxNTcsMTQgQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVf dnA5X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICBmb3Ig KGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVModnBpYy0+cmVmZXJlbmNlX2ZyYW1lcyk7IGkrKykK LSAgICAgICAgIHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNbaV0gPSBWQV9JTlZBTElEX1NVUkZBQ0U7 Ci0gCi0tICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7IGkrKykgewotLSAgICAgICAg VkFBUElFbmNvZGVQaWN0dXJlICpyZWZfcGljID0gcGljLT5yZWZzW2ldOwotLSAgICAgICAgaW50 IHNsb3Q7Ci0tICAgICAgICBzbG90ID0gKChWQUFQSUVuY29kZVZQOVBpY3R1cmUqKXJlZl9waWMt PnByaXZfZGF0YSktPnNsb3Q7Ci0tICAgICAgICBhdl9hc3NlcnQwKHZwaWMtPnJlZmVyZW5jZV9m cmFtZXNbc2xvdF0gPT0gVkFfSU5WQUxJRF9TVVJGQUNFKTsKLS0gICAgICAgIHZwaWMtPnJlZmVy ZW5jZV9mcmFtZXNbc2xvdF0gPSByZWZfcGljLT5yZWNvbl9zdXJmYWNlOwotKyAgICBmb3IgKGkg PSAwOyBpIDwgTUFYX1JFRkVSRU5DRV9MSVNUX05VTTsgaSsrKSB7Ci0rICAgICAgICBmb3IgKGlu dCBqID0gMDsgaiA8IHBpYy0+bmJfcmVmc1tpXTsgaisrKSB7Ci0rICAgICAgICAgICAgVkFBUElF bmNvZGVQaWN0dXJlICpyZWZfcGljID0gcGljLT5yZWZzW2ldW2pdOwotKyAgICAgICAgICAgIGlu dCBzbG90OwotKyAgICAgICAgICAgIHNsb3QgPSAoKFZBQVBJRW5jb2RlVlA5UGljdHVyZSopcmVm X3BpYy0+cHJpdl9kYXRhKS0+c2xvdDsKLSsgICAgICAgICAgICBhdl9hc3NlcnQwKHZwaWMtPnJl ZmVyZW5jZV9mcmFtZXNbc2xvdF0gPT0gVkFfSU5WQUxJRF9TVVJGQUNFKTsKLSsgICAgICAgICAg ICB2cGljLT5yZWZlcmVuY2VfZnJhbWVzW3Nsb3RdID0gcmVmX3BpYy0+cmVjb25fc3VyZmFjZTsK LSsgICAgICAgIH0KLSAgICAgfQotIAotICAgICB2cGljLT5waWNfZmxhZ3MuYml0cy5mcmFtZV90 eXBlID0gKHBpYy0+dHlwZSAhPSBQSUNUVVJFX1RZUEVfSURSKTsKLS0tIAotMi40MS4wCi0KCmRp ZmYgLS1naXQgYS9mZm1wZWctbmV3LWNvZGVyLWVycm9ycy5wYXRjaCBiL2ZmbXBlZy1uZXctY29k ZXItZXJyb3JzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDhiNmE5Li4w MDAwMDAwCi0tLSBhL2ZmbXBlZy1uZXctY29kZXItZXJyb3JzLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMzcgKzAsMCBAQAotRnJvbTogSmFuIEVuZ2VsaGFyZHQgPGplbmdlbGhAaW5haS5kZT4K LURhdGU6IDIwMTYtMDQtMTAgMjM6MjM6NTMuMTM4NDQwMjU0ICswMjAwCi0KLUltcHJvdmUgdGhl IGVycm9yIG1lc3NhZ2VzIGEgYml0IHRvIHNheSB3aGF0J3MgcmVhbGx5IGdvaW5nIG9uCi0oaW4g bGlnaHQgb2YgYSByZWR1Y2VkIGJ1aWxkKS4KLQotLS0tCi0gZmZ0b29scy9mZm1wZWcuYyAgICAg ICAgfCAgICAyICstCi0gZmZ0b29scy9mZm1wZWdfZmlsdGVyLmMgfCAgICAyICstCi0gMiBmaWxl cyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBmZm1w ZWctNi4wL2ZmdG9vbHMvZmZtcGVnLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmZm1wZWctNi4wLm9yaWcv ZmZ0b29scy9mZm1wZWcuYwotKysrIGZmbXBlZy02LjAvZmZ0b29scy9mZm1wZWcuYwotQEAgLTI3 OTcsNyArMjc5Nyw3IEBAIHN0YXRpYyBpbnQgaW5pdF9pbnB1dF9zdHJlYW0oSW5wdXRTdHJlYW0K LSAgICAgaWYgKGlzdC0+ZGVjb2RpbmdfbmVlZGVkKSB7Ci0gICAgICAgICBjb25zdCBBVkNvZGVj ICpjb2RlYyA9IGlzdC0+ZGVjOwotICAgICAgICAgaWYgKCFjb2RlYykgewotLSAgICAgICAgICAg IHNucHJpbnRmKGVycm9yLCBlcnJvcl9sZW4sICJEZWNvZGVyIChjb2RlYyAlcykgbm90IGZvdW5k IGZvciBpbnB1dCBzdHJlYW0gIyVkOiVkIiwKLSsgICAgICAgICAgICBzbnByaW50ZihlcnJvciwg ZXJyb3JfbGVuLCAiVGhpcyBidWlsZCBvZiBmZm1wZWcgZG9lcyBub3QgaW5jbHVkZSBhIFwiJXNc IiBkZWNvZGVyIG5lZWRlZCBmb3IgaW5wdXQgc3RyZWFtICMlZDolZC4iLAotICAgICAgICAgICAg ICAgICAgICAgYXZjb2RlY19nZXRfbmFtZShpc3QtPmRlY19jdHgtPmNvZGVjX2lkKSwgaXN0LT5m aWxlX2luZGV4LCBpc3QtPnN0LT5pbmRleCk7Ci0gICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Io RUlOVkFMKTsKLSAgICAgICAgIH0KLUluZGV4OiBmZm1wZWctNi4wL2ZmdG9vbHMvZmZtcGVnX2Zp bHRlci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZmZtcGVnLTYuMC5vcmlnL2ZmdG9vbHMvZmZtcGVnX2Zp bHRlci5jCi0rKysgZmZtcGVnLTYuMC9mZnRvb2xzL2ZmbXBlZ19maWx0ZXIuYwotQEAgLTEwNjQs NyArMTA2NCw3IEBAIHN0YXRpYyBpbnQgY29uZmlndXJlX2lucHV0X2ZpbHRlcihGaWx0ZXIKLSB7 Ci0gICAgIGlmICghaWZpbHRlci0+aXN0LT5kZWMpIHsKLSAgICAgICAgIGF2X2xvZyhOVUxMLCBB Vl9MT0dfRVJST1IsCi0tICAgICAgICAgICAgICAgIk5vIGRlY29kZXIgZm9yIHN0cmVhbSAjJWQ6 JWQsIGZpbHRlcmluZyBpbXBvc3NpYmxlXG4iLAotKyAgICAgICAgICAgICAgICJUaGlzIGJ1aWxk IG9mIGZmbXBlZyBkb2VzIG5vdCBoYXZlIGEgc3VpdGFibGUgZGVjb2RlciBmb3Igc3RyZWFtICMl ZDolZCBlbmFibGVkLCBmaWx0ZXJpbmcgaW1wb3NzaWJsZVxuIiwKLSAgICAgICAgICAgICAgICBp ZmlsdGVyLT5pc3QtPmZpbGVfaW5kZXgsIGlmaWx0ZXItPmlzdC0+c3QtPmluZGV4KTsKLSAgICAg ICAgIHJldHVybiBBVkVSUk9SX0RFQ09ERVJfTk9UX0ZPVU5EOwotICAgICB9CgpkaWZmIC0tZ2l0 IGEvZmZtcGVnLnNwZWMgYi9mZm1wZWcuc3BlYwppbmRleCAwYmE3OTVlLi5mMmUxNDdiIDEwMDY0 NAotLS0gYS9mZm1wZWcuc3BlYworKysgYi9mZm1wZWcuc3BlYwpAQCAtOTEsOCArOTEsOCBAQAog TmFtZTogICAgICAgICAgIGZmbXBlZwogJWdsb2JhbCBwa2dfbmFtZSAle25hbWV9JXs/cGtnX3N1 ZmZpeH0KIAotVmVyc2lvbjogICAgICAgIDYuMC4xCi1SZWxlYXNlOiAgICAgICAgMiV7P2Rpc3R9 CitWZXJzaW9uOiAgICAgICAgNi4xCitSZWxlYXNlOiAgICAgICAgMSV7P2Rpc3R9CiBTdW1tYXJ5 OiAgICAgICAgQSBjb21wbGV0ZSBzb2x1dGlvbiB0byByZWNvcmQsIGNvbnZlcnQgYW5kIHN0cmVh bSBhdWRpbyBhbmQgdmlkZW8KIExpY2Vuc2U6ICAgICAgICBHUEwtMy4wLW9yLWxhdGVyCiBVUkw6 ICAgICAgICAgICAgaHR0cHM6Ly9mZm1wZWcub3JnLwpAQCAtMTEzLDMyICsxMTMsMTUgQEAgU291 cmNlOTM6ICAgICAgIGZmbXBlZ19maW5kX2ZyZWVfc291cmNlX2hlYWRlcnMuc2gKIAogIyBGaXhl cyBmb3IgcmVkdWNlZCBjb2RlYyBzZWxlY3Rpb24gb24gZnJlZSBidWlsZAogUGF0Y2gxOiAgICAg ICAgIGZmbXBlZy1jb2RlYy1jaG9pY2UucGF0Y2gKLSMgQmV0dGVyIGVycm9yIG1lc3NhZ2VzIGZv ciBmcmVlIGJ1aWxkCi1QYXRjaDI6ICAgICAgICAgZmZtcGVnLW5ldy1jb2Rlci1lcnJvcnMucGF0 Y2gKICMgQWxsb3cgdG8gYnVpbGQgd2l0aCBmZGstYWFjLWZyZWUKICMgU2VlIGh0dHBzOi8vYnVn emlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTUwMTUyMiNjMTEyCi1QYXRjaDM6ICAg ICAgICAgZmZtcGVnLWFsbG93LWZkay1hYWMtZnJlZS5wYXRjaAotIyBCYWNrcG9ydCB1cHN0cmVh bSBwYXRjaGVzIGZvciBsaWJwbGFjZWJvIHY1LjI2NAotUGF0Y2g0OiAgICAgICAgIDAwMDEtYXZm aWx0ZXItdmZfbGlicGxhY2Viby13cmFwLWRlcHJlY2F0ZWQtb3B0cy1pbi1GRl9BUC5wYXRjaAot UGF0Y2g1OiAgICAgICAgIDAwMDEtYXZmaWx0ZXItdmZfbGlicGxhY2Viby1yZW1vdmUtZGVwcmVj YXRlZC1maWVsZC5wYXRjaAotCi0jIEJhY2twb3J0IGZpeCBmb3Igc2VnZmF1bHQgd2hlbiBwYXNz aW5nIG5vbi1leGlzdGVudCBmaWx0ZXIgb3B0aW9uCi0jIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5y cG1mdXNpb24ub3JnL3Nob3dfYnVnLmNnaT9pZD02NzczCi1QYXRjaDc6ICAgICAgICAgMDAwMS1m ZnRvb2xzLWZmbXBlZ19maWx0ZXItaW5pdGlhbGl6ZS10aGUtby10by1zaWxlbmNlLXRoLnBhdGNo Ci0KLSMgQmFja3BvcnQgcGF0Y2hlcyBmb3IgZW5oYW5jZWQgcnRtcCBzdXBwb3J0Ci0jIENmLiBo dHRwczovL3BhdGNod29yay5mZm1wZWcub3JnL3Byb2plY3QvZmZtcGVnL2xpc3QvP3Nlcmllcz04 OTI2Ci0jIyBGcm9tOiBodHRwczovL3BhdGNod29yay5mZm1wZWcub3JnL3Nlcmllcy84OTI2L21i b3gvCi1QYXRjaDg6ICAgICAgICAgRkZtcGVnLWRldmVsLXYxMC1TdXBwb3J0LWVuaGFuY2VkLWZs di1pbi1GRm1wZWcucGF0Y2gKLQotIyBCYWNrcG9ydCBBVjEgVkEtQVBJIGVuY29kZSBzdXBwb3J0 Ci0jIENvdXJ0ZXN5IG9mIEdsb3Jpb3VzRWdncm9sbAotIyMgQWRhcHRlZCBmcm9tOiBodHRwczov L3BhdGNod29yay5mZm1wZWcub3JnL3Byb2plY3QvZmZtcGVnL2xpc3QvP3Nlcmllcz05NTk0Ci1Q YXRjaDk6ICAgICAgICAgZmZtcGVnLWdlLWF2MS12YWFwaS1lbmNvZGUtc3VwcG9ydC5wYXRjaAot CitQYXRjaDI6ICAgICAgICAgZmZtcGVnLWFsbG93LWZkay1hYWMtZnJlZS5wYXRjaAorIyBCYWNr cG9ydCBmaXggZm9yIFZ1bGthbiBWaWRlbyB3aXRoIG9ubHkgQVYxCisjIEZyb206IGh0dHBzOi8v ZmZtcGVnLm9yZy9waXBlcm1haWwvZmZtcGVnLWRldmVsLzIwMjMtRGVjZW1iZXIvMzE3NzI4Lmh0 bWwKK1BhdGNoMzogICAgICAgICAwMDAxLWxhdmMtTWFrZWZpbGUtYnVpbGQtdnVsa2FuLWRlY29k ZS1jb2RlLWlmLXZ1bGthbl9hdjEucGF0Y2gKICMgRHJvcCBvcGVuaDI2NCBydW50aW1lIHZlcnNp b24gY2hlY2tzCiAjIGh0dHBzOi8vcGF0Y2h3b3JrLmZmbXBlZy5vcmcvcHJvamVjdC9mZm1wZWcv bGlzdC8/c2VyaWVzPTEwMjExCi1QYXRjaDEwOiAgICAgICAgMDAwMS1sYXZjLWxpYm9wZW5oMjY0 LURyb3Atb3BlbmgyNjQtcnVudGltZS12ZXJzaW9uLWNoZWNrLnBhdGNoCitQYXRjaDQ6ICAgICAg ICAgMDAwMS1sYXZjLWxpYm9wZW5oMjY0LURyb3Atb3BlbmgyNjQtcnVudGltZS12ZXJzaW9uLWNo ZWNrLnBhdGNoCiAKICMgU2V0IHVwIGRsb3BlbiBmb3Igb3BlbmgyNjQKIFBhdGNoMTAwMTogICAg ICBmZm1wZWctZGxvcGVuLW9wZW5oMjY0LnBhdGNoCkBAIC0yNTYsNyArMjM5LDcgQEAgQnVpbGRS ZXF1aXJlczogIHBrZ2NvbmZpZyh2aWRzdGFiKQogQnVpbGRSZXF1aXJlczogIHBrZ2NvbmZpZyh2 b3JiaXMpCiBCdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKHZvLWFtcndiZW5jKQogQnVpbGRSZXF1 aXJlczogIHBrZ2NvbmZpZyh2cHgpCi1CdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKHZ1bGthbikK K0J1aWxkUmVxdWlyZXM6ICBwa2djb25maWcodnVsa2FuKSA+PSAxLjMuMjU1CiBCdWlsZFJlcXVp cmVzOiAgcGtnY29uZmlnKHdhdnBhY2spCiBCdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKHhjYikK IEJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWcoeGNiLXJlbmRlcikKQEAgLTg4MCw2ICs4NjMsOSBA QCBybSAtcmYgJXtidWlsZHJvb3R9JXtfZGF0YWRpcn0vJXtuYW1lfS9leGFtcGxlcwogJXtfbWFu ZGlyfS9tYW4zL2xpYnN3c2NhbGUuMyoKIAogJWNoYW5nZWxvZworKiBUaHUgSmFuIDA0IDIwMjQg TmVhbCBHb21wYSA8bmdvbXBhQGZlZG9yYXByb2plY3Qub3JnPiAtIDYuMS0xCistIFJlYmFzZSB0 byA2LjEKKwogKiBXZWQgRGVjIDA2IDIwMjMgS2FsZXYgTGVtYmVyIDxrbGVtYmVyQHJlZGhhdC5j b20+IC0gNi4wLjEtMgogLSBQcmVmZXIgb3BlbmgyNjQgb3ZlciBub29wZW5oMjY0CiAtIEJhY2tw b3J0IHVwc3RyZWFtIHBhdGNoIHRvIGRyb3Agb3BlbmgyNjQgcnVudGltZSB2ZXJzaW9uIGNoZWNr cwoKZGlmZiAtLWdpdCBhL2ZmbXBlZ19mcmVlX3NvdXJjZXMgYi9mZm1wZWdfZnJlZV9zb3VyY2Vz CmluZGV4IDAzNTRkZTUuLjk4MzBiNDUgMTAwNjQ0Ci0tLSBhL2ZmbXBlZ19mcmVlX3NvdXJjZXMK KysrIGIvZmZtcGVnX2ZyZWVfc291cmNlcwpAQCAtMjksOCArMjksNiBAQCBkb2MvY29kZWNzLnRl eGkKIGRvYy9kZWNvZGVycy50ZXhpCiBkb2MvZGVmYXVsdC5jc3MKIGRvYy9kZW11eGVycy50ZXhp Ci1kb2MvZGV2X2NvbW11bml0eS9jb21tdW5pdHkubWQKLWRvYy9kZXZfY29tbXVuaXR5L3Jlc29s dXRpb25fcHJvY2Vzcy5tZAogZG9jL2RldmVsb3Blci50ZXhpCiBkb2MvZGV2aWNlcy50ZXhpCiBk b2MvZG94eS13cmFwcGVyLnNoCkBAIC0xMzgsNyArMTM2LDkgQEAgZmZ0b29scy9jbWR1dGlscy5j CiBmZnRvb2xzL2NtZHV0aWxzLmgKIGZmdG9vbHMvZmZtcGVnLmMKIGZmdG9vbHMvZmZtcGVnLmgK K2ZmdG9vbHMvZmZtcGVnX2RlYy5jCiBmZnRvb2xzL2ZmbXBlZ19kZW11eC5jCitmZnRvb2xzL2Zm bXBlZ19lbmMuYwogZmZ0b29scy9mZm1wZWdfZmlsdGVyLmMKIGZmdG9vbHMvZmZtcGVnX2h3LmMK IGZmdG9vbHMvZmZtcGVnX211eC5jCkBAIC0yMTIsMTAgKzIxMiw3IEBAIGxpYmF2Y29kZWMvYWFu ZGN0dGFiLmgKIGxpYmF2Y29kZWMvYWFyY2g2NC9NYWtlZmlsZQogbGliYXZjb2RlYy9hYXJjaDY0 L2FhY3BzZHNwX2luaXRfYWFyY2g2NC5jCiBsaWJhdmNvZGVjL2FhcmNoNjQvYWFjcHNkc3BfbmVv bi5TCi1saWJhdmNvZGVjL2FhcmNoNjQvYXNtLW9mZnNldHMuaAogbGliYXZjb2RlYy9hYXJjaDY0 L2NhYmFjLmgKLWxpYmF2Y29kZWMvYWFyY2g2NC9mZnRfaW5pdF9hYXJjaDY0LmMKLWxpYmF2Y29k ZWMvYWFyY2g2NC9mZnRfbmVvbi5TCiBsaWJhdmNvZGVjL2FhcmNoNjQvZm10Y29udmVydF9pbml0 LmMKIGxpYmF2Y29kZWMvYWFyY2g2NC9mbXRjb252ZXJ0X25lb24uUwogbGliYXZjb2RlYy9hYXJj aDY0L2gyNjRjaHJvbWFfaW5pdF9hYXJjaDY0LmMKQEAgLTIzMiw3ICsyMjksNiBAQCBsaWJhdmNv ZGVjL2FhcmNoNjQvaHBlbGRzcF9uZW9uLlMKIGxpYmF2Y29kZWMvYWFyY2g2NC9pZGN0LmgKIGxp YmF2Y29kZWMvYWFyY2g2NC9pZGN0ZHNwX2luaXRfYWFyY2g2NC5jCiBsaWJhdmNvZGVjL2FhcmNo NjQvaWRjdGRzcF9uZW9uLlMKLWxpYmF2Y29kZWMvYWFyY2g2NC9tZGN0X25lb24uUwogbGliYXZj b2RlYy9hYXJjaDY0L21lX2NtcF9pbml0X2FhcmNoNjQuYwogbGliYXZjb2RlYy9hYXJjaDY0L21l X2NtcF9uZW9uLlMKIGxpYmF2Y29kZWMvYWFyY2g2NC9tcGVnYXVkaW9kc3BfaW5pdC5jCkBAIC0z NTgsOSArMzU0LDYgQEAgbGliYXZjb2RlYy9hcm0vYmxvY2tkc3BfaW5pdF9uZW9uLmMKIGxpYmF2 Y29kZWMvYXJtL2Jsb2NrZHNwX25lb24uUwogbGliYXZjb2RlYy9hcm0vY2FiYWMuaAogbGliYXZj b2RlYy9hcm0vZGNhLmgKLWxpYmF2Y29kZWMvYXJtL2ZmdF9pbml0X2FybS5jCi1saWJhdmNvZGVj L2FybS9mZnRfbmVvbi5TCi1saWJhdmNvZGVjL2FybS9mZnRfdmZwLlMKIGxpYmF2Y29kZWMvYXJt L2ZsYWNkc3BfYXJtLlMKIGxpYmF2Y29kZWMvYXJtL2ZsYWNkc3BfaW5pdF9hcm0uYwogbGliYXZj b2RlYy9hcm0vZm10Y29udmVydF9pbml0X2FybS5jCkBAIC0zOTgsOCArMzkxLDYgQEAgbGliYXZj b2RlYy9hcm0vanJldmRjdF9hcm0uUwogbGliYXZjb2RlYy9hcm0vbG9zc2xlc3NfYXVkaW9kc3Bf aW5pdF9hcm0uYwogbGliYXZjb2RlYy9hcm0vbG9zc2xlc3NfYXVkaW9kc3BfbmVvbi5TCiBsaWJh dmNvZGVjL2FybS9tYXRob3BzLmgKLWxpYmF2Y29kZWMvYXJtL21kY3RfbmVvbi5TCi1saWJhdmNv ZGVjL2FybS9tZGN0X3ZmcC5TCiBsaWJhdmNvZGVjL2FybS9tZV9jbXBfYXJtdjYuUwogbGliYXZj b2RlYy9hcm0vbWVfY21wX2luaXRfYXJtLmMKIGxpYmF2Y29kZWMvYXJtL21scGRzcF9hcm12NXRl LlMKQEAgLTQxOSw4ICs0MTAsNiBAQCBsaWJhdmNvZGVjL2FybS9uZW9udGVzdC5jCiBsaWJhdmNv ZGVjL2FybS9waXhibG9ja2RzcF9hcm12Ni5TCiBsaWJhdmNvZGVjL2FybS9waXhibG9ja2RzcF9p bml0X2FybS5jCiBsaWJhdmNvZGVjL2FybS9waXhibG9ja2RzcF9uZW9uLlMKLWxpYmF2Y29kZWMv YXJtL3JkZnRfaW5pdF9hcm0uYwotbGliYXZjb2RlYy9hcm0vcmRmdF9uZW9uLlMKIGxpYmF2Y29k ZWMvYXJtL3NiY2RzcF9hcm12Ni5TCiBsaWJhdmNvZGVjL2FybS9zYmNkc3BfaW5pdF9hcm0uYwog bGliYXZjb2RlYy9hcm0vc2JjZHNwX25lb24uUwpAQCAtNDY4LDYgKzQ1Nyw3IEBAIGxpYmF2Y29k ZWMvYXJtL3ZwOWxwZl8xNmJwcF9uZW9uLlMKIGxpYmF2Y29kZWMvYXJtL3ZwOWxwZl9uZW9uLlMK IGxpYmF2Y29kZWMvYXJtL3ZwOW1jXzE2YnBwX25lb24uUwogbGliYXZjb2RlYy9hcm0vdnA5bWNf bmVvbi5TCitsaWJhdmNvZGVjL2FybS92cHhfYXJpdGguaAogbGliYXZjb2RlYy9hc3MuYwogbGli YXZjb2RlYy9hc3MuaAogbGliYXZjb2RlYy9hc3Nfc3BsaXQuYwpAQCAtNDk5LDYgKzQ4OSw4IEBA IGxpYmF2Y29kZWMvYXVyYS5jCiBsaWJhdmNvZGVjL2F2MS5oCiBsaWJhdmNvZGVjL2F2MV9mcmFt ZV9tZXJnZV9ic2YuYwogbGliYXZjb2RlYy9hdjFfZnJhbWVfc3BsaXRfYnNmLmMKK2xpYmF2Y29k ZWMvYXYxX2xldmVscy5jCitsaWJhdmNvZGVjL2F2MV9sZXZlbHMuaAogbGliYXZjb2RlYy9hdjFf bWV0YWRhdGFfYnNmLmMKIGxpYmF2Y29kZWMvYXYxX3BhcnNlLmMKIGxpYmF2Y29kZWMvYXYxX3Bh cnNlLmgKQEAgLTUwNyw2ICs0OTksNyBAQCBsaWJhdmNvZGVjL2F2MWRlYy5jCiBsaWJhdmNvZGVj L2F2MWRlYy5oCiBsaWJhdmNvZGVjL2F2Y29kZWMuYwogbGliYXZjb2RlYy9hdmNvZGVjLmgKK2xp YmF2Y29kZWMvYXZjb2RlY19pbnRlcm5hbC5oCiBsaWJhdmNvZGVjL2F2ZGN0LmMKIGxpYmF2Y29k ZWMvYXZkY3QuaAogbGliYXZjb2RlYy9hdmZmdC5jCkBAIC01NzMsNiArNTY2LDggQEAgbGliYXZj b2RlYy9jYnNfaDI2NDUuaAogbGliYXZjb2RlYy9jYnNfaDI2NF9zeW50YXhfdGVtcGxhdGUuYwog bGliYXZjb2RlYy9jYnNfaDI2NS5oCiBsaWJhdmNvZGVjL2Nic19oMjY1X3N5bnRheF90ZW1wbGF0 ZS5jCitsaWJhdmNvZGVjL2Nic19oMjY2LmgKK2xpYmF2Y29kZWMvY2JzX2gyNjZfc3ludGF4X3Rl bXBsYXRlLmMKIGxpYmF2Y29kZWMvY2JzX2ludGVybmFsLmgKIGxpYmF2Y29kZWMvY2JzX2pwZWcu YwogbGliYXZjb2RlYy9jYnNfanBlZy5oCkBAIC02NTIsNyArNjQ3LDYgQEAgbGliYXZjb2RlYy9k Y2FlbmMuaAogbGliYXZjb2RlYy9kY2FodWZmLmMKIGxpYmF2Y29kZWMvZGNhaHVmZi5oCiBsaWJh dmNvZGVjL2RjYW1hdGguaAotbGliYXZjb2RlYy9kY3QuYwogbGliYXZjb2RlYy9kY3QuaAogbGli YXZjb2RlYy9kY3QzMi5oCiBsaWJhdmNvZGVjL2RjdDMyX2ZpeGVkLmMKQEAgLTczMSw4ICs3MjUs NiBAQCBsaWJhdmNvZGVjL2R2ZW5jLmMKIGxpYmF2Y29kZWMvZHhhLmMKIGxpYmF2Y29kZWMvZHh0 b3J5LmMKIGxpYmF2Y29kZWMvZHh2YTIuaAotbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMu YwotbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuaAogbGliYXZjb2RlYy9keW5hbWljX2hk cl92aXZpZC5jCiBsaWJhdmNvZGVjL2R5bmFtaWNfaGRyX3ZpdmlkLmgKIGxpYmF2Y29kZWMvZWFj M19jb3JlX2JzZi5jCkBAIC03NTQsNiArNzQ2LDEzIEBAIGxpYmF2Y29kZWMvZXJyb3JfcmVzaWxp ZW5jZS5jCiBsaWJhdmNvZGVjL2Vycm9yX3Jlc2lsaWVuY2UuaAogbGliYXZjb2RlYy9lc2NhcGUx MjQuYwogbGliYXZjb2RlYy9lc2NhcGUxMzAuYworbGliYXZjb2RlYy9ldmMuaAorbGliYXZjb2Rl Yy9ldmNfZnJhbWVfbWVyZ2VfYnNmLmMKK2xpYmF2Y29kZWMvZXZjX3BhcnNlLmMKK2xpYmF2Y29k ZWMvZXZjX3BhcnNlLmgKK2xpYmF2Y29kZWMvZXZjX3BhcnNlci5jCitsaWJhdmNvZGVjL2V2Y19w cy5jCitsaWJhdmNvZGVjL2V2Y19wcy5oCiBsaWJhdmNvZGVjL2V2cmNkYXRhLmgKIGxpYmF2Y29k ZWMvZXZyY2RlYy5jCiBsaWJhdmNvZGVjL2V4aWYuYwpAQCAtNzczLDEzICs3NzIsNiBAQCBsaWJh dmNvZGVjL2ZkY3Rkc3AuYwogbGliYXZjb2RlYy9mZGN0ZHNwLmgKIGxpYmF2Y29kZWMvZmZsY21z Mi5jCiBsaWJhdmNvZGVjL2ZmbGNtczIuaAotbGliYXZjb2RlYy9mZnQtaW50ZXJuYWwuaAotbGli YXZjb2RlYy9mZnQuaAotbGliYXZjb2RlYy9mZnRfZml4ZWRfMzIuYwotbGliYXZjb2RlYy9mZnRf ZmxvYXQuYwotbGliYXZjb2RlYy9mZnRfaW5pdF90YWJsZS5jCi1saWJhdmNvZGVjL2ZmdF90YWJs ZS5oCi1saWJhdmNvZGVjL2ZmdF90ZW1wbGF0ZS5jCiBsaWJhdmNvZGVjL2ZmdjEuYwogbGliYXZj b2RlYy9mZnYxLmgKIGxpYmF2Y29kZWMvZmZ2MV90ZW1wbGF0ZS5jCkBAIC05MTYsNiArOTA4LDcg QEAgbGliYXZjb2RlYy9oMjY0cXBlbF90ZW1wbGF0ZS5jCiBsaWJhdmNvZGVjL2gyNjVfbWV0YWRh dGFfYnNmLmMKIGxpYmF2Y29kZWMvaDI2NV9wcm9maWxlX2xldmVsLmMKIGxpYmF2Y29kZWMvaDI2 NV9wcm9maWxlX2xldmVsLmgKK2xpYmF2Y29kZWMvaDI2Nl9tZXRhZGF0YV9ic2YuYwogbGliYXZj b2RlYy9oMjc0LmgKIGxpYmF2Y29kZWMvaGFsZjJmbG9hdC5jCiBsaWJhdmNvZGVjL2hhcC5jCkBA IC05NzAsNiArOTYzLDcgQEAgbGliYXZjb2RlYy9odWZmeXV2ZHNwLmgKIGxpYmF2Y29kZWMvaHVm Znl1dmVuYy5jCiBsaWJhdmNvZGVjL2h1ZmZ5dXZlbmNkc3AuYwogbGliYXZjb2RlYy9odWZmeXV2 ZW5jZHNwLmgKK2xpYmF2Y29kZWMvaHdhY2NlbF9pbnRlcm5hbC5oCiBsaWJhdmNvZGVjL2h3YWNj ZWxzLmgKIGxpYmF2Y29kZWMvaHdjb25maWcuaAogbGliYXZjb2RlYy9pZGNpbnZpZGVvLmMKQEAg LTEwMjEsMTAgKzEwMTUsMTMgQEAgbGliYXZjb2RlYy9qcGVnMjAwMC5jCiBsaWJhdmNvZGVjL2pw ZWcyMDAwLmgKIGxpYmF2Y29kZWMvanBlZzIwMDBfcGFyc2VyLmMKIGxpYmF2Y29kZWMvanBlZzIw MDBkZWMuYworbGliYXZjb2RlYy9qcGVnMjAwMGRlYy5oCiBsaWJhdmNvZGVjL2pwZWcyMDAwZHNw LmMKIGxpYmF2Y29kZWMvanBlZzIwMDBkc3AuaAogbGliYXZjb2RlYy9qcGVnMjAwMGR3dC5jCiBs aWJhdmNvZGVjL2pwZWcyMDAwZHd0LmgKK2xpYmF2Y29kZWMvanBlZzIwMDBodGRlYy5jCitsaWJh dmNvZGVjL2pwZWcyMDAwaHRkZWMuaAogbGliYXZjb2RlYy9qcGVnbHMuYwogbGliYXZjb2RlYy9q cGVnbHMuaAogbGliYXZjb2RlYy9qcGVnbHNkZWMuYwpAQCAtMTAzNSw2ICsxMDMyLDEwIEBAIGxp YmF2Y29kZWMvanBlZ3F1YW50dGFibGVzLmgKIGxpYmF2Y29kZWMvanBlZ3RhYmxlcy5jCiBsaWJh dmNvZGVjL2pwZWd0YWJsZXMuaAogbGliYXZjb2RlYy9qcGVndGFicy5oCitsaWJhdmNvZGVjL2pw ZWd4bC5oCitsaWJhdmNvZGVjL2pwZWd4bF9wYXJzZS5jCitsaWJhdmNvZGVjL2pwZWd4bF9wYXJz ZS5oCitsaWJhdmNvZGVjL2pwZWd4bF9wYXJzZXIuYwogbGliYXZjb2RlYy9qcmV2ZGN0LmMKIGxp YmF2Y29kZWMvanZkZWMuYwogbGliYXZjb2RlYy9rYmR3aW4uYwpAQCAtMTA3MCw3ICsxMDcxLDYg QEAgbGliYXZjb2RlYy9saWJvcGVuaDI2NC5jCiBsaWJhdmNvZGVjL2xpYm9wZW5oMjY0LmgKIGxp YmF2Y29kZWMvbGlib3BlbmgyNjRkZWMuYwogbGliYXZjb2RlYy9saWJvcGVuaDI2NGVuYy5jCi1s aWJhdmNvZGVjL2xpYm9wZW5qcGVnZGVjLmMKIGxpYmF2Y29kZWMvbGlib3BlbmpwZWdlbmMuYwog bGliYXZjb2RlYy9saWJvcHVzLmMKIGxpYmF2Y29kZWMvbGlib3B1cy5oCkBAIC0xMDg2LDcgKzEw ODYsNiBAQCBsaWJhdmNvZGVjL2xpYnR3b2xhbWUuYwogbGliYXZjb2RlYy9saWJ2by1hbXJ3YmVu Yy5jCiBsaWJhdmNvZGVjL2xpYnZvcmJpc2RlYy5jCiBsaWJhdmNvZGVjL2xpYnZvcmJpc2VuYy5j Ci1saWJhdmNvZGVjL2xpYnZweC5jCiBsaWJhdmNvZGVjL2xpYnZweC5oCiBsaWJhdmNvZGVjL2xp YnZweGRlYy5jCiBsaWJhdmNvZGVjL2xpYnZweGVuYy5jCkBAIC0xMTE3LDkgKzExMTYsNiBAQCBs aWJhdmNvZGVjL20xMDEuYwogbGliYXZjb2RlYy9tYWNlLmMKIGxpYmF2Y29kZWMvbWF0aG9wcy5o CiBsaWJhdmNvZGVjL21hdGh0YWJsZXMuYwotbGliYXZjb2RlYy9tZGN0X2ZpeGVkXzMyLmMKLWxp YmF2Y29kZWMvbWRjdF9mbG9hdC5jCi1saWJhdmNvZGVjL21kY3RfdGVtcGxhdGUuYwogbGliYXZj b2RlYy9tZGVjLmMKIGxpYmF2Y29kZWMvbWVfY21wLmMKIGxpYmF2Y29kZWMvbWVfY21wLmgKQEAg LTEzODEsMTAgKzEzNzcsNiBAQCBsaWJhdmNvZGVjL3BwYy9hdWRpb2RzcC5jCiBsaWJhdmNvZGVj L3BwYy9ibG9ja2RzcC5jCiBsaWJhdmNvZGVjL3BwYy9mZGN0LmgKIGxpYmF2Y29kZWMvcHBjL2Zk Y3Rkc3AuYwotbGliYXZjb2RlYy9wcGMvZmZ0X2FsdGl2ZWMuUwotbGliYXZjb2RlYy9wcGMvZmZ0 X2luaXQuYwotbGliYXZjb2RlYy9wcGMvZmZ0X3ZzeC5jCi1saWJhdmNvZGVjL3BwYy9mZnRfdnN4 LmgKIGxpYmF2Y29kZWMvcHBjL2ZtdGNvbnZlcnRfYWx0aXZlYy5jCiBsaWJhdmNvZGVjL3BwYy9o MjY0Y2hyb21hX2luaXQuYwogbGliYXZjb2RlYy9wcGMvaDI2NGNocm9tYV90ZW1wbGF0ZS5jCkBA IC0xNDcwLDE1ICsxNDYyLDE3IEBAIGxpYmF2Y29kZWMvcmF3LmMKIGxpYmF2Y29kZWMvcmF3LmgK IGxpYmF2Y29kZWMvcmF3ZGVjLmMKIGxpYmF2Y29kZWMvcmF3ZW5jLmMKLWxpYmF2Y29kZWMvcmRm dC5jCi1saWJhdmNvZGVjL3JkZnQuaAogbGliYXZjb2RlYy9yZWFsdGV4dGRlYy5jCiBsaWJhdmNv ZGVjL3JlY3RhbmdsZS5oCitsaWJhdmNvZGVjL3JlZnN0cnVjdC5jCitsaWJhdmNvZGVjL3JlZnN0 cnVjdC5oCiBsaWJhdmNvZGVjL3JlbW92ZV9leHRyYWRhdGFfYnNmLmMKIGxpYmF2Y29kZWMvcmV2 ZXJzZS5jCiBsaWJhdmNvZGVjL3Jpc2N2L01ha2VmaWxlCiBsaWJhdmNvZGVjL3Jpc2N2L2FhY3Bz ZHNwX2luaXQuYwogbGliYXZjb2RlYy9yaXNjdi9hYWNwc2RzcF9ydnYuUworbGliYXZjb2RlYy9y aXNjdi9hYzNkc3BfaW5pdC5jCitsaWJhdmNvZGVjL3Jpc2N2L2FjM2RzcF9ydmIuUwogbGliYXZj b2RlYy9yaXNjdi9hbGFjZHNwX2luaXQuYwogbGliYXZjb2RlYy9yaXNjdi9hbGFjZHNwX3J2di5T CiBsaWJhdmNvZGVjL3Jpc2N2L2F1ZGlvZHNwX2luaXQuYwpAQCAtMTQ4Nyw4ICsxNDgxLDE0IEBA IGxpYmF2Y29kZWMvcmlzY3YvYXVkaW9kc3BfcnZ2LlMKIGxpYmF2Y29kZWMvcmlzY3YvYnN3YXBk c3BfaW5pdC5jCiBsaWJhdmNvZGVjL3Jpc2N2L2Jzd2FwZHNwX3J2Yi5TCiBsaWJhdmNvZGVjL3Jp c2N2L2Jzd2FwZHNwX3J2di5TCitsaWJhdmNvZGVjL3Jpc2N2L2V4cmRzcF9pbml0LmMKK2xpYmF2 Y29kZWMvcmlzY3YvZXhyZHNwX3J2di5TCiBsaWJhdmNvZGVjL3Jpc2N2L2ZtdGNvbnZlcnRfaW5p dC5jCiBsaWJhdmNvZGVjL3Jpc2N2L2ZtdGNvbnZlcnRfcnZ2LlMKK2xpYmF2Y29kZWMvcmlzY3Yv ZzcyMmRzcF9pbml0LmMKK2xpYmF2Y29kZWMvcmlzY3YvZzcyMmRzcF9ydnYuUworbGliYXZjb2Rl Yy9yaXNjdi9oMjY0X2Nocm9tYV9pbml0X3Jpc2N2LmMKK2xpYmF2Y29kZWMvcmlzY3YvaDI2NF9t Y19jaHJvbWEuUwogbGliYXZjb2RlYy9yaXNjdi9pZGN0ZHNwX2luaXQuYwogbGliYXZjb2RlYy9y aXNjdi9pZGN0ZHNwX3J2di5TCiBsaWJhdmNvZGVjL3Jpc2N2L29wdXNkc3BfaW5pdC5jCkBAIC0x Njk2LDYgKzE2OTYsNyBAQCBsaWJhdmNvZGVjL3ZhYXBpX2RlY29kZS5jCiBsaWJhdmNvZGVjL3Zh YXBpX2RlY29kZS5oCiBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5jCiBsaWJhdmNvZGVjL3ZhYXBp X2VuY29kZS5oCitsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9hdjEuYwogbGliYXZjb2RlYy92YWFw aV9lbmNvZGVfaDI2NC5jCiBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY1LmMKIGxpYmF2Y29k ZWMvdmFhcGlfZW5jb2RlX21qcGVnLmMKQEAgLTE3NzgsNiArMTc3OSw3IEBAIGxpYmF2Y29kZWMv dnA4LmMKIGxpYmF2Y29kZWMvdnA4LmgKIGxpYmF2Y29kZWMvdnA4OV9yYWMuaAogbGliYXZjb2Rl Yy92cDhfcGFyc2VyLmMKK2xpYmF2Y29kZWMvdnA4ZGF0YS5jCiBsaWJhdmNvZGVjL3ZwOGRhdGEu aAogbGliYXZjb2RlYy92cDhkc3AuYwogbGliYXZjb2RlYy92cDhkc3AuaApAQCAtMTgwOCw2ICsx ODEwLDE4IEBAIGxpYmF2Y29kZWMvdnB4X3JhYy5jCiBsaWJhdmNvZGVjL3ZweF9yYWMuaAogbGli YXZjb2RlYy92cWF2aWRlby5jCiBsaWJhdmNvZGVjL3ZxY2RlYy5jCitsaWJhdmNvZGVjL3Z1bGth bi5jCitsaWJhdmNvZGVjL3Z1bGthbi5oCitsaWJhdmNvZGVjL3Z1bGthbl9hdjEuYworbGliYXZj b2RlYy92dWxrYW5fZGVjb2RlLmMKK2xpYmF2Y29kZWMvdnVsa2FuX2RlY29kZS5oCitsaWJhdmNv ZGVjL3Z1bGthbl92aWRlby5jCitsaWJhdmNvZGVjL3Z1bGthbl92aWRlby5oCitsaWJhdmNvZGVj L3Z1bGthbl92aWRlb19jb2RlY19hdjFzdGQuaAorbGliYXZjb2RlYy92dWxrYW5fdmlkZW9fY29k ZWNfYXYxc3RkX2RlY29kZS5oCitsaWJhdmNvZGVjL3Z2Yy5oCitsaWJhdmNvZGVjL3Z2Y19tcDR0 b2FubmV4Yl9ic2YuYworbGliYXZjb2RlYy92dmNfcGFyc2VyLmMKIGxpYmF2Y29kZWMvd2F2YXJj LmMKIGxpYmF2Y29kZWMvd2F2cGFjay5jCiBsaWJhdmNvZGVjL3dhdnBhY2suaApAQCAtMTg3NSw3 ICsxODg5LDYgQEAgbGliYXZjb2RlYy94ODYvY29uc3RhbnRzLmgKIGxpYmF2Y29kZWMveDg2L2Rj YWRzcC5hc20KIGxpYmF2Y29kZWMveDg2L2RjYWRzcF9pbml0LmMKIGxpYmF2Y29kZWMveDg2L2Rj dDMyLmFzbQotbGliYXZjb2RlYy94ODYvZGN0X2luaXQuYwogbGliYXZjb2RlYy94ODYvZGlyYWNf ZHd0LmFzbQogbGliYXZjb2RlYy94ODYvZGlyYWNfZHd0X2luaXQuYwogbGliYXZjb2RlYy94ODYv ZGlyYWNkc3AuYXNtCkBAIC0xODg3LDkgKzE5MDAsNiBAQCBsaWJhdmNvZGVjL3g4Ni9leHJkc3Bf aW5pdC5jCiBsaWJhdmNvZGVjL3g4Ni9mZGN0LmMKIGxpYmF2Y29kZWMveDg2L2ZkY3QuaAogbGli YXZjb2RlYy94ODYvZmRjdGRzcF9pbml0LmMKLWxpYmF2Y29kZWMveDg2L2ZmdC5hc20KLWxpYmF2 Y29kZWMveDg2L2ZmdC5oCi1saWJhdmNvZGVjL3g4Ni9mZnRfaW5pdC5jCiBsaWJhdmNvZGVjL3g4 Ni9mbGFjX2RzcF9ncGwuYXNtCiBsaWJhdmNvZGVjL3g4Ni9mbGFjZHNwLmFzbQogbGliYXZjb2Rl Yy94ODYvZmxhY2RzcF9pbml0LmMKQEAgLTE5MjMsOCArMTkzMyw2IEBAIGxpYmF2Y29kZWMveDg2 L2hwZWxkc3AuYXNtCiBsaWJhdmNvZGVjL3g4Ni9ocGVsZHNwLmgKIGxpYmF2Y29kZWMveDg2L2hw ZWxkc3BfaW5pdC5jCiBsaWJhdmNvZGVjL3g4Ni9ocGVsZHNwX3JuZF90ZW1wbGF0ZS5jCi1saWJh dmNvZGVjL3g4Ni9ocGVsZHNwX3ZwMy5hc20KLWxpYmF2Y29kZWMveDg2L2hwZWxkc3BfdnAzX2lu aXQuYwogbGliYXZjb2RlYy94ODYvaHVmZnl1dmRzcC5hc20KIGxpYmF2Y29kZWMveDg2L2h1ZmZ5 dXZkc3BfaW5pdC5jCiBsaWJhdmNvZGVjL3g4Ni9odWZmeXV2ZHNwX3RlbXBsYXRlLmFzbQpAQCAt MjAyNSw2ICsyMDMzLDcgQEAgbGliYXZjb2RlYy94ODYvdnA5bHBmXzE2YnBwLmFzbQogbGliYXZj b2RlYy94ODYvdnA5bWMuYXNtCiBsaWJhdmNvZGVjL3g4Ni92cDltY18xNmJwcC5hc20KIGxpYmF2 Y29kZWMveDg2L3ZweF9hcml0aC5oCitsaWJhdmNvZGVjL3g4Ni93NjR4bW10ZXN0LmMKIGxpYmF2 Y29kZWMveDg2L3h2aWRpZGN0LmFzbQogbGliYXZjb2RlYy94ODYveHZpZGlkY3QuaAogbGliYXZj b2RlYy94ODYveHZpZGlkY3RfaW5pdC5jCkBAIC0yMTE1LDggKzIxMjQsMTEgQEAgbGliYXZkZXZp Y2UveGNiZ3JhYi5jCiBsaWJhdmRldmljZS94di5jCiBsaWJhdmZpbHRlci9NYWtlZmlsZQogbGli YXZmaWx0ZXIvYWFyY2g2NC9NYWtlZmlsZQorbGliYXZmaWx0ZXIvYWFyY2g2NC92Zl9id2RpZl9p bml0X2FhcmNoNjQuYworbGliYXZmaWx0ZXIvYWFyY2g2NC92Zl9id2RpZl9uZW9uLlMKIGxpYmF2 ZmlsdGVyL2FhcmNoNjQvdmZfbmxtZWFuc19pbml0LmMKIGxpYmF2ZmlsdGVyL2FhcmNoNjQvdmZf bmxtZWFuc19uZW9uLlMKK2xpYmF2ZmlsdGVyL2FkeW5hbWljZXF1YWxpemVyX3RlbXBsYXRlLmMK IGxpYmF2ZmlsdGVyL2FldmFsLmMKIGxpYmF2ZmlsdGVyL2FmX2Fjb250cmFzdC5jCiBsaWJhdmZp bHRlci9hZl9hY29weS5jCkBAIC0yMTU4LDYgKzIxNzAsNyBAQCBsaWJhdmZpbHRlci9hZl9hcGhh c2VyLmMKIGxpYmF2ZmlsdGVyL2FmX2Fwc3ljbGlwLmMKIGxpYmF2ZmlsdGVyL2FmX2FwdWxzYXRv ci5jCiBsaWJhdmZpbHRlci9hZl9hcmVzYW1wbGUuYworbGliYXZmaWx0ZXIvYWZfYXJscy5jCiBs aWJhdmZpbHRlci9hZl9hcm5uZG4uYwogbGliYXZmaWx0ZXIvYWZfYXNkci5jCiBsaWJhdmZpbHRl ci9hZl9hc2V0bnNhbXBsZXMuYwpAQCAtMjI1Nyw3ICsyMjcwLDEwIEBAIGxpYmF2ZmlsdGVyL2J1 ZmZlcnNpbmsuYwogbGliYXZmaWx0ZXIvYnVmZmVyc2luay5oCiBsaWJhdmZpbHRlci9idWZmZXJz cmMuYwogbGliYXZmaWx0ZXIvYnVmZmVyc3JjLmgKLWxpYmF2ZmlsdGVyL2J3ZGlmLmgKK2xpYmF2 ZmlsdGVyL2J3ZGlmZHNwLmMKK2xpYmF2ZmlsdGVyL2J3ZGlmZHNwLmgKK2xpYmF2ZmlsdGVyL2Nj Zmlmby5jCitsaWJhdmZpbHRlci9jY2ZpZm8uaAogbGliYXZmaWx0ZXIvY29sb3JjaGFubmVsbWl4 ZXJfdGVtcGxhdGUuYwogbGliYXZmaWx0ZXIvY29sb3JzcGFjZS5jCiBsaWJhdmZpbHRlci9jb2xv cnNwYWNlLmgKQEAgLTIyNzAsMjggKzIyODYsNiBAQCBsaWJhdmZpbHRlci9kZXNoYWtlLmgKIGxp YmF2ZmlsdGVyL2Rubi9NYWtlZmlsZQogbGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5kX2NvbW1v bi5jCiBsaWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfY29tbW9uLmgKLWxpYmF2ZmlsdGVyL2Ru bi9kbm5fYmFja2VuZF9uYXRpdmUuYwotbGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5kX25hdGl2 ZS5oCi1saWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfbmF0aXZlX2xheWVyX2F2Z3Bvb2wuYwot bGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5kX25hdGl2ZV9sYXllcl9hdmdwb29sLmgKLWxpYmF2 ZmlsdGVyL2Rubi9kbm5fYmFja2VuZF9uYXRpdmVfbGF5ZXJfY29udjJkLmMKLWxpYmF2ZmlsdGVy L2Rubi9kbm5fYmFja2VuZF9uYXRpdmVfbGF5ZXJfY29udjJkLmgKLWxpYmF2ZmlsdGVyL2Rubi9k bm5fYmFja2VuZF9uYXRpdmVfbGF5ZXJfZGVuc2UuYwotbGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNr ZW5kX25hdGl2ZV9sYXllcl9kZW5zZS5oCi1saWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfbmF0 aXZlX2xheWVyX2RlcHRoMnNwYWNlLmMKLWxpYmF2ZmlsdGVyL2Rubi9kbm5fYmFja2VuZF9uYXRp dmVfbGF5ZXJfZGVwdGgyc3BhY2UuaAotbGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5kX25hdGl2 ZV9sYXllcl9tYXRoYmluYXJ5LmMKLWxpYmF2ZmlsdGVyL2Rubi9kbm5fYmFja2VuZF9uYXRpdmVf bGF5ZXJfbWF0aGJpbmFyeS5oCi1saWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfbmF0aXZlX2xh eWVyX21hdGh1bmFyeS5jCi1saWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfbmF0aXZlX2xheWVy X21hdGh1bmFyeS5oCi1saWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfbmF0aXZlX2xheWVyX21h eGltdW0uYwotbGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5kX25hdGl2ZV9sYXllcl9tYXhpbXVt LmgKLWxpYmF2ZmlsdGVyL2Rubi9kbm5fYmFja2VuZF9uYXRpdmVfbGF5ZXJfcGFkLmMKLWxpYmF2 ZmlsdGVyL2Rubi9kbm5fYmFja2VuZF9uYXRpdmVfbGF5ZXJfcGFkLmgKLWxpYmF2ZmlsdGVyL2Ru bi9kbm5fYmFja2VuZF9uYXRpdmVfbGF5ZXJzLmMKLWxpYmF2ZmlsdGVyL2Rubi9kbm5fYmFja2Vu ZF9uYXRpdmVfbGF5ZXJzLmgKLWxpYmF2ZmlsdGVyL2Rubi9kbm5fYmFja2VuZF9vcGVudmluby5o Ci1saWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfdGYuaAogbGliYXZmaWx0ZXIvZG5uL2Rubl9p bnRlcmZhY2UuYwogbGliYXZmaWx0ZXIvZG5uL2Rubl9pb19wcm9jLmMKIGxpYmF2ZmlsdGVyL2Ru bi9kbm5faW9fcHJvYy5oCkBAIC0yMzk5LDYgKzIzOTMsNyBAQCBsaWJhdmZpbHRlci9zZXRwdHMu YwogbGliYXZmaWx0ZXIvc2V0dGIuYwogbGliYXZmaWx0ZXIvc2lnbmF0dXJlLmgKIGxpYmF2Zmls dGVyL3NpZ25hdHVyZV9sb29rdXAuYworbGliYXZmaWx0ZXIvc2lsZW5jZXJlbW92ZV90ZW1wbGF0 ZS5jCiBsaWJhdmZpbHRlci9zcGxpdC5jCiBsaWJhdmZpbHRlci9zcmNfYXZzeW5jdGVzdC5jCiBs aWJhdmZpbHRlci9zcmNfbW92aWUuYwpAQCAtMjQ0Myw3ICsyNDM4LDkgQEAgbGliYXZmaWx0ZXIv dmZfYmx1cmRldGVjdC5jCiBsaWJhdmZpbHRlci92Zl9ibTNkLmMKIGxpYmF2ZmlsdGVyL3ZmX2Jv eGJsdXIuYwogbGliYXZmaWx0ZXIvdmZfYndkaWYuYworbGliYXZmaWx0ZXIvdmZfYndkaWZfdnVs a2FuLmMKIGxpYmF2ZmlsdGVyL3ZmX2Nhcy5jCitsaWJhdmZpbHRlci92Zl9jY3JlcGFjay5jCiBs aWJhdmZpbHRlci92Zl9jaHJvbWFiZXJfdnVsa2FuLmMKIGxpYmF2ZmlsdGVyL3ZmX2Nocm9tYWtl eS5jCiBsaWJhdmZpbHRlci92Zl9jaHJvbWFuci5jCkBAIC0yNTY5LDYgKzI1NjYsNyBAQCBsaWJh dmZpbHRlci92Zl9tYXNrZWRtZXJnZS5jCiBsaWJhdmZpbHRlci92Zl9tYXNrZWRtaW5tYXguYwog bGliYXZmaWx0ZXIvdmZfbWFza2VkdGhyZXNob2xkLmMKIGxpYmF2ZmlsdGVyL3ZmX21hc2tmdW4u YworbGliYXZmaWx0ZXIvdmZfbWNkZWludC5jCiBsaWJhdmZpbHRlci92Zl9tZWRpYW4uYwogbGli YXZmaWx0ZXIvdmZfbWVyZ2VwbGFuZXMuYwogbGliYXZmaWx0ZXIvdmZfbWVzdGltYXRlLmMKQEAg LTI1ODcsNiArMjU4NSw3IEBAIGxpYmF2ZmlsdGVyL3ZmX25sbWVhbnMuYwogbGliYXZmaWx0ZXIv dmZfbmxtZWFucy5oCiBsaWJhdmZpbHRlci92Zl9ubG1lYW5zX2luaXQuaAogbGliYXZmaWx0ZXIv dmZfbmxtZWFuc19vcGVuY2wuYworbGliYXZmaWx0ZXIvdmZfbmxtZWFuc192dWxrYW4uYwogbGli YXZmaWx0ZXIvdmZfbm5lZGkuYwogbGliYXZmaWx0ZXIvdmZfbm9pc2UuYwogbGliYXZmaWx0ZXIv dmZfbm9pc2UuaApAQCAtMjY4MCw2ICsyNjc5LDcgQEAgbGliYXZmaWx0ZXIvdmZfdHJhbnNwb3Nl X3Z1bGthbi5jCiBsaWJhdmZpbHRlci92Zl91bnNoYXJwLmMKIGxpYmF2ZmlsdGVyL3ZmX3Vuc2hh cnBfb3BlbmNsLmMKIGxpYmF2ZmlsdGVyL3ZmX3VudGlsZS5jCitsaWJhdmZpbHRlci92Zl91c3Bw LmMKIGxpYmF2ZmlsdGVyL3ZmX3YzNjAuYwogbGliYXZmaWx0ZXIvdmZfdmFndWVkZW5vaXNlci5j CiBsaWJhdmZpbHRlci92Zl92YXJibHVyLmMKQEAgLTI2OTksNiArMjY5OSw3IEBAIGxpYmF2Zmls dGVyL3ZmX3dlYXZlLmMKIGxpYmF2ZmlsdGVyL3ZmX3hici5jCiBsaWJhdmZpbHRlci92Zl94ZmFk ZS5jCiBsaWJhdmZpbHRlci92Zl94ZmFkZV9vcGVuY2wuYworbGliYXZmaWx0ZXIvdmZfeGZhZGVf dnVsa2FuLmMKIGxpYmF2ZmlsdGVyL3ZmX3htZWRpYW4uYwogbGliYXZmaWx0ZXIvdmZfeWFkaWYu YwogbGliYXZmaWx0ZXIvdmZfeWFlcGJsdXIuYwpAQCAtMjcxNywxMCArMjcxOCwxMyBAQCBsaWJh dmZpbHRlci92c3JjX21hbmRlbGJyb3QuYwogbGliYXZmaWx0ZXIvdnNyY19tcHRlc3RzcmMuYwog bGliYXZmaWx0ZXIvdnNyY19zaWVycGluc2tpLmMKIGxpYmF2ZmlsdGVyL3ZzcmNfdGVzdHNyYy5j CitsaWJhdmZpbHRlci92c3JjX3Rlc3RzcmNfdnVsa2FuLmMKIGxpYmF2ZmlsdGVyL3Z1bGthbi5j CiBsaWJhdmZpbHRlci92dWxrYW4uaAogbGliYXZmaWx0ZXIvdnVsa2FuX2ZpbHRlci5jCiBsaWJh dmZpbHRlci92dWxrYW5fZmlsdGVyLmgKK2xpYmF2ZmlsdGVyL3Z1bGthbl9zaGFkZXJjLmMKK2xp YmF2ZmlsdGVyL3Z1bGthbl9zcGlydi5oCiBsaWJhdmZpbHRlci93M2ZkaWYuaAogbGliYXZmaWx0 ZXIvd2luZG93X2Z1bmMuaAogbGliYXZmaWx0ZXIveDg2L01ha2VmaWxlCkBAIC0yODExLDYgKzI4 MTUsOCBAQCBsaWJhdmZvcm1hdC9hYWRlYy5jCiBsaWJhdmZvcm1hdC9hYXhkZWMuYwogbGliYXZm b3JtYXQvYWMzX2NoYW5uZWxfbGF5b3V0X3RhYi5jCiBsaWJhdmZvcm1hdC9hYzNkZWMuYworbGli YXZmb3JtYXQvYWM0ZGVjLmMKK2xpYmF2Zm9ybWF0L2FjNGVuYy5jCiBsaWJhdmZvcm1hdC9hY2Vk ZWMuYwogbGliYXZmb3JtYXQvYWNtLmMKIGxpYmF2Zm9ybWF0L2FjdC5jCkBAIC0yOTQyLDYgKzI5 NDgsOSBAQCBsaWJhdmZvcm1hdC9keGEuYwogbGliYXZmb3JtYXQvZWFjZGF0YS5jCiBsaWJhdmZv cm1hdC9lbGVjdHJvbmljYXJ0cy5jCiBsaWJhdmZvcm1hdC9lcGFmZGVjLmMKK2xpYmF2Zm9ybWF0 L2V2Yy5jCitsaWJhdmZvcm1hdC9ldmMuaAorbGliYXZmb3JtYXQvZXZjZGVjLmMKIGxpYmF2Zm9y bWF0L2ZmbWV0YS5oCiBsaWJhdmZvcm1hdC9mZm1ldGFkZWMuYwogbGliYXZmb3JtYXQvZmZtZXRh ZW5jLmMKQEAgLTMwNTAsOCArMzA1OSw4IEBAIGxpYmF2Zm9ybWF0L2l2ZmVuYy5jCiBsaWJhdmZv cm1hdC9qYWNvc3ViZGVjLmMKIGxpYmF2Zm9ybWF0L2phY29zdWJlbmMuYwogbGliYXZmb3JtYXQv anBlZ3RhYmxlcy5jCi1saWJhdmZvcm1hdC9qcGVneGxfcHJvYmUuYwotbGliYXZmb3JtYXQvanBl Z3hsX3Byb2JlLmgKK2xpYmF2Zm9ybWF0L2pwZWd4bF9hbmltX2RlYy5jCitsaWJhdmZvcm1hdC9q cGVneGxfcGFyc2UuYwogbGliYXZmb3JtYXQvanZkZWMuYwogbGliYXZmb3JtYXQva3ZhZy5jCiBs aWJhdmZvcm1hdC9sYWZkZWMuYwpAQCAtMzE3OCwxMSArMzE4NywxMyBAQCBsaWJhdmZvcm1hdC9v cHRpb25zLmMKIGxpYmF2Zm9ybWF0L29wdGlvbnNfdGFibGUuaAogbGliYXZmb3JtYXQvb3Nfc3Vw cG9ydC5jCiBsaWJhdmZvcm1hdC9vc19zdXBwb3J0LmgKK2xpYmF2Zm9ybWF0L29zcS5jCiBsaWJh dmZvcm1hdC9wYWYuYwogbGliYXZmb3JtYXQvcGNtLmMKIGxpYmF2Zm9ybWF0L3BjbS5oCiBsaWJh dmZvcm1hdC9wY21kZWMuYwogbGliYXZmb3JtYXQvcGNtZW5jLmMKK2xpYmF2Zm9ybWF0L3BkdmRl Yy5jCiBsaWJhdmZvcm1hdC9wanNkZWMuYwogbGliYXZmb3JtYXQvcG1wZGVjLmMKIGxpYmF2Zm9y bWF0L3BwX2Juay5jCkBAIC0zMTk1LDYgKzMyMDYsNyBAQCBsaWJhdmZvcm1hdC9xY3AuYwogbGli YXZmb3JtYXQvcXRwYWxldHRlLmMKIGxpYmF2Zm9ybWF0L3F0cGFsZXR0ZS5oCiBsaWJhdmZvcm1h dC9yM2QuYworbGliYXZmb3JtYXQvcmFuZ2Vjb2Rlcl9kZWMuYwogbGliYXZmb3JtYXQvcmF3ZGVj LmMKIGxpYmF2Zm9ybWF0L3Jhd2RlYy5oCiBsaWJhdmZvcm1hdC9yYXdlbmMuYwpAQCAtMzM4MCw2 ICszMzkyLDcgQEAgbGliYXZmb3JtYXQvdXJsLmMKIGxpYmF2Zm9ybWF0L3VybC5oCiBsaWJhdmZv cm1hdC91cmxkZWNvZGUuYwogbGliYXZmb3JtYXQvdXJsZGVjb2RlLmgKK2xpYmF2Zm9ybWF0L3Vz bWRlYy5jCiBsaWJhdmZvcm1hdC91dGlscy5jCiBsaWJhdmZvcm1hdC92YWcuYwogbGliYXZmb3Jt YXQvdmFwb3Vyc3ludGguYwpAQCAtMzQwMyw2ICszNDE2LDcgQEAgbGliYXZmb3JtYXQvdnBjYy5o CiBsaWJhdmZvcm1hdC92cGsuYwogbGliYXZmb3JtYXQvdnBsYXllcmRlYy5jCiBsaWJhdmZvcm1h dC92cWYuYworbGliYXZmb3JtYXQvdnZjZGVjLmMKIGxpYmF2Zm9ybWF0L3c2NC5jCiBsaWJhdmZv cm1hdC93NjQuaAogbGliYXZmb3JtYXQvd2FkeS5jCkBAIC0zNDgyLDcgKzM0OTYsNiBAQCBsaWJh dnV0aWwvYXZzdHJpbmcuaAogbGliYXZ1dGlsL2F2dXRpbC5oCiBsaWJhdnV0aWwvYmFzZTY0LmMK IGxpYmF2dXRpbC9iYXNlNjQuaAotbGliYXZ1dGlsL2JmaW4vdGltZXIuaAogbGliYXZ1dGlsL2Js b3dmaXNoLmMKIGxpYmF2dXRpbC9ibG93ZmlzaC5oCiBsaWJhdnV0aWwvYnByaW50LmMKQEAgLTM1 MjEsMTIgKzM1MzQsMTUgQEAgbGliYXZ1dGlsL2RvdmlfbWV0YS5oCiBsaWJhdnV0aWwvZG93bm1p eF9pbmZvLmMKIGxpYmF2dXRpbC9kb3dubWl4X2luZm8uaAogbGliYXZ1dGlsL2R5bmFycmF5LmgK K2xpYmF2dXRpbC9lbW1zLmgKIGxpYmF2dXRpbC9lbmNyeXB0aW9uX2luZm8uYwogbGliYXZ1dGls L2VuY3J5cHRpb25faW5mby5oCiBsaWJhdnV0aWwvZXJyb3IuYwogbGliYXZ1dGlsL2Vycm9yLmgK IGxpYmF2dXRpbC9ldmFsLmMKIGxpYmF2dXRpbC9ldmFsLmgKK2xpYmF2dXRpbC9leGVjdXRvci5j CitsaWJhdnV0aWwvZXhlY3V0b3IuaAogbGliYXZ1dGlsL2ZmbWF0aC5oCiBsaWJhdnV0aWwvZmlm by5jCiBsaWJhdnV0aWwvZmlmby5oCkBAIC0zNzA5LDEyICszNzI1LDEyIEBAIGxpYmF2dXRpbC92 ZXJzaW9uLmgKIGxpYmF2dXRpbC92ZXJzaW9uX21ham9yLmgKIGxpYmF2dXRpbC92aWRlb19lbmNf cGFyYW1zLmMKIGxpYmF2dXRpbC92aWRlb19lbmNfcGFyYW1zLmgKK2xpYmF2dXRpbC92aWRlb19o aW50LmMKK2xpYmF2dXRpbC92aWRlb19oaW50LmgKIGxpYmF2dXRpbC92dWxrYW4uYwogbGliYXZ1 dGlsL3Z1bGthbi5oCiBsaWJhdnV0aWwvdnVsa2FuX2Z1bmN0aW9ucy5oCi1saWJhdnV0aWwvdnVs a2FuX2dsc2xhbmcuYwogbGliYXZ1dGlsL3Z1bGthbl9sb2FkZXIuaAotbGliYXZ1dGlsL3Z1bGth bl9zaGFkZXJjLmMKIGxpYmF2dXRpbC93Y2hhcl9maWxlbmFtZS5oCiBsaWJhdnV0aWwveDg2L01h a2VmaWxlCiBsaWJhdnV0aWwveDg2L2FzbS5oCkBAIC0zNzIzLDcgKzM3MzksNiBAQCBsaWJhdnV0 aWwveDg2L2NwdS5jCiBsaWJhdnV0aWwveDg2L2NwdS5oCiBsaWJhdnV0aWwveDg2L2NwdWlkLmFz bQogbGliYXZ1dGlsL3g4Ni9lbW1zLmFzbQotbGliYXZ1dGlsL3g4Ni9lbW1zLmgKIGxpYmF2dXRp bC94ODYvZml4ZWRfZHNwLmFzbQogbGliYXZ1dGlsL3g4Ni9maXhlZF9kc3BfaW5pdC5jCiBsaWJh dnV0aWwveDg2L2Zsb2F0X2RzcC5hc20KQEAgLTM5NDMsMTUgKzM5NTgsMTQgQEAgdGVzdHMvZmF0 ZS9jb3Zlci1hcnQubWFrCiB0ZXN0cy9mYXRlL2RjYS5tYWsKIHRlc3RzL2ZhdGUvZGVtdXgubWFr CiB0ZXN0cy9mYXRlL2RmYS5tYWsKLXRlc3RzL2ZhdGUvZG5uLm1hawogdGVzdHMvZmF0ZS9kbnho ZC5tYWsKIHRlc3RzL2ZhdGUvZHBjbS5tYWsKIHRlc3RzL2ZhdGUvZHZ2aWRlby5tYWsKIHRlc3Rz L2ZhdGUvZWEubWFrCit0ZXN0cy9mYXRlL2VuY19leHRlcm5hbC5tYWsKIHRlc3RzL2ZhdGUvZXhp Zi5tYWsKIHRlc3RzL2ZhdGUvZmZtcGVnLm1hawogdGVzdHMvZmF0ZS9mZnByb2JlLm1hawotdGVz dHMvZmF0ZS9mZnQubWFrCiB0ZXN0cy9mYXRlL2ZpZm8tbXV4ZXIubWFrCiB0ZXN0cy9mYXRlL2Zp bHRlci1hdWRpby5tYWsKIHRlc3RzL2ZhdGUvZmlsdGVyLXZpZGVvLm1hawpAQCAtMzk2OSw2ICsz OTgzLDggQEAgdGVzdHMvZmF0ZS9pZDN2Mi5tYWsKIHRlc3RzL2ZhdGUvaW1hZ2UubWFrCiB0ZXN0 cy9mYXRlL2ltZi5tYWsKIHRlc3RzL2ZhdGUvaW5kZW8ubWFrCit0ZXN0cy9mYXRlL2pwZWcyMDAw Lm1hawordGVzdHMvZmF0ZS9qeGwubWFrCiB0ZXN0cy9mYXRlL2xhdmYtYXVkaW8ubWFrCiB0ZXN0 cy9mYXRlL2xhdmYtY29udGFpbmVyLm1hawogdGVzdHMvZmF0ZS9sYXZmLWltYWdlLm1hawpAQCAt NDAyNiwxMSArNDA0MiwxMSBAQCB0ZXN0cy9mYXRlL3dtYS5tYWsKIHRlc3RzL2ZhdGUveHZpZC5t YWsKIHRvb2xzL01ha2VmaWxlCiB0b29scy9hdmlvY2F0LmMKLXRvb2xzL2NsMmMKIHRvb2xzL2Ny eXB0b19iZW5jaC5jCiB0b29scy9jd3MyZndzLmMKIHRvb2xzL2RlY29kZV9zaW1wbGUuYwogdG9v bHMvZGVjb2RlX3NpbXBsZS5oCit0b29scy9lbmNfcmVjb25fZnJhbWVfdGVzdC5jCiB0b29scy9l bnVtX29wdGlvbnMuYwogdG9vbHMvZmZlc2NhcGUuYwogdG9vbHMvZmZldmFsLmMKQEAgLTQwNDUs NiArNDA2MSw3IEBAIHRvb2xzL3NjYWxlX3NsaWNlX3Rlc3QuYwogdG9vbHMvc2Vla19wcmludC5j CiB0b29scy9zaWR4aW5kZXguYwogdG9vbHMvc29mYTJ3YXZzLmMKK3Rvb2xzL3NvdXJjZTJjCiB0 b29scy90cmFzaGVyLmMKIHRvb2xzL3VuY29kZWRfZnJhbWUuYwogdG9vbHMvdmVuY19kYXRhX2R1 bXAuYwoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGMzNTg3Y2UuLjUzN2E4 YjcgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSw0ICsxLDQgQEAKLVNI QTUxMiAoZmZtcGVnLWZyZWUtNi4wLjEudGFyLnh6KSA9IGRhNGFhNmRiOTJmYmJmZGRhOWZjNjQy NDlhMGM4MjZhZTVkZTMzY2FjYmVkNWViYmZiYmU5YTMwZDU3YWU2Zjc5YjYxNDk2ZmNmMTUxZGM1 MDRkNjQ2ZWZkNDRiYTYzNzIyMjIwYmUwYjcxOGRkOGZmZGFhNWIyNTEwZDkyYTk3Ci1TSEE1MTIg KGZmbXBlZy02LjAuMS50YXIueHouYXNjKSA9IDMxNGY5ZWY5OTZiODViYzkzYzlmYjgyM2Q1ODI2 OTdjNzQxNWFjMzVmNTZiZmM5Y2Q5MDY4OTM0OTFjODA3NmRmOTBiZDg1MmNmNmU1ZTc1N2IxZmE5 NGJkNDE1ZWQxMDg0ODhjMTIyMGFkZDQ5ZWIxZjQ4NTRmYzI1M2MxNzhjCitTSEE1MTIgKGZmbXBl Zy1mcmVlLTYuMS50YXIueHopID0gZWIyYzA5MDZiNjU5YTgxZjA2MWU1MDhiNWM1MDA0ZWZkM2Zk YjgyOTlmMmE1ZTRlOTU0ZTFkZDA1ODk3NzBiYWNjZmRhNzY4ZmE5ZDNlMzliZGUxZTFkODY0NGM0 MjAxNWUwZjZmNjc0YWI5NmE5NDc3NmM2OWFhZDUxNWQ3MmQKK1NIQTUxMiAoZmZtcGVnLTYuMS50 YXIueHouYXNjKSA9IGU0ODg1MjcwODY5Y2M2YTE2ODFiYzNmNzZmMzQ0Zjc3YzQ4NThjNDkwYTUx N2U0NWE3NThkMTUyMTRjZTY3YzNjMjExM2ExY2FhOGNhNjVlYjY0NDdiNjhkODIyZmExZGQ3MzAw ODEzNDViY2MwOTI4ZmFhZjgyYmI3NjAzN2JhCiBTSEE1MTIgKGZmbXBlZy1kbG9wZW4taGVhZGVy cy50YXIueHopID0gOTdlNjk4NmZjMmJiOWRmYTQ1MTYxMzVhNzZiMDRkMjdjZWI1MmZmOTZmMGFm MjFhNjE2OTkxOWFlZWZlZmI0ZDJlMmUyNGE3NzE5NTk2ODljZGJlYzM4NWY1ZDcxNjE0YmE2NjEy MjNjNjdjMGU5NDA4OWE2ZGQ4MjNhMzAwOTkKIFNIQTUxMiAoZmZtcGVnLmtleXJpbmcpID0gOWIz NjUwNjgzNWRiMzZmNzc2YjdkZGI1M2FkNmZhOWU5MTVlNmNhMmY5YzdjZmViZThlYjQ1NTEzZTEw MzZhOTg1MjgzNTkwYTg0MGNhMzEzYTExMWJmMzVkYzM3MzFmNjg4ODVhYWFmYjFmYjcwMTFlYzQz M2NjMTE5ZTUxNjUK