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: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 12.0.1-0.3 Date: Mon, 29 Jun 2026 12:29:37 GMT Message-ID: <178273617728.1.17617656255630752683.rpms-gcc-067e0a8c2ecb@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 067e0a8c2ecb0694dc7815cd7bffc799b4c96d9a QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogMDY3ZTBhOGMyZWNiMDY5NGRjNzgxNWNkN2JmZmM3OTli NGM5NmQ5YQpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgpEYXRlICAg OiAyMDIyLTAxLTI1VDE0OjAyOjUzKzAxOjAwClN0YXRzICA6ICsxMjI2Ly0xOTIgaW4gOSBmaWxl KHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2NjL2MvMDY3 ZTBhOGMyZWNiMDY5NGRjNzgxNWNkN2JmZmM3OTliNGM5NmQ5YT9icmFuY2g9cmhlbC1mNDEtYmFz ZQoKTG9nOgoxMi4wLjEtMC4zCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdu b3JlCmluZGV4IDIxZGNmNjEuLjk5MGI1MTYgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIv LmdpdGlnbm9yZQpAQCAtNTgsMyArNTgsNCBAQAogL2djYy0xMi4wLjAtMjAyMjAxMTIudGFyLnh6 CiAvZ2NjLTEyLjAuMC0yMDIyMDExNS50YXIueHoKIC9nY2MtMTIuMC4xLTIwMjIwMTE4LnRhci54 egorL2djYy0xMi4wLjEtMjAyMjAxMjUudGFyLnh6CgpkaWZmIC0tZ2l0IGEvZ2NjLnNwZWMgYi9n Y2Muc3BlYwppbmRleCA1Mzc5ZTZmLi40OWE5NGY2IDEwMDY0NAotLS0gYS9nY2Muc3BlYworKysg Yi9nY2Muc3BlYwpAQCAtMSw0ICsxLDQgQEAKLSVnbG9iYWwgREFURSAyMDIyMDExOAorJWdsb2Jh bCBEQVRFIDIwMjIwMTI1CiAlZ2xvYmFsIGdpdHJldiBjNjgyYmM4ODNkMWEyOWMzZjY5N2YwNjVh ZjIzNzU5ZjNkNjc1N2JjCiAlZ2xvYmFsIGdjY192ZXJzaW9uIDEyLjAuMQogJWdsb2JhbCBnY2Nf bWFqb3IgMTIKQEAgLTExLDYgKzExLDcgQEAKICVnbG9iYWwgX3BlcmZvcm1hbmNlX2J1aWxkIDEK ICMgSGFyZGVuaW5nIHNsb3dzIHRoZSBjb21waWxlciB3YXkgdG9vIG11Y2guCiAldW5kZWZpbmUg X2hhcmRlbmVkX2J1aWxkCisldW5kZWZpbmUgX2F1dG9fc2V0X2J1aWxkX2ZsYWdzCiAlaWYgMCV7 P2ZlZG9yYX0gPiAyNyB8fCAwJXs/cmhlbH0gPiA3CiAjIFVudGlsIGFubm9iaW4gaXMgZml4ZWQg KCMxNTE5MTY1KS4KICV1bmRlZmluZSBfYW5ub3RhdGVkX2J1aWxkCkBAIC0xMTksNyArMTIwLDcg QEAKIFN1bW1hcnk6IFZhcmlvdXMgY29tcGlsZXJzIChDLCBDKyssIE9iamVjdGl2ZS1DLCAuLi4p CiBOYW1lOiBnY2MKIFZlcnNpb246ICV7Z2NjX3ZlcnNpb259Ci1SZWxlYXNlOiAle2djY19yZWxl YXNlfS4yJXs/ZGlzdH0KK1JlbGVhc2U6ICV7Z2NjX3JlbGVhc2V9LjMlez9kaXN0fQogIyBsaWJn Y2MsIGxpYmdmb3J0cmFuLCBsaWJnb21wLCBsaWJzdGRjKysgYW5kIGNydHN0dWZmIGhhdmUKICMg R0NDIFJ1bnRpbWUgRXhjZXB0aW9uLgogTGljZW5zZTogR1BMdjMrIGFuZCBHUEx2Mysgd2l0aCBl eGNlcHRpb25zIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBMR1BMdjIrIGFuZCBCU0QK QEAgLTI2OSw5ICsyNzAsOSBAQCBQYXRjaDg6IGdjYzEyLW5vLWFkZC1uZWVkZWQucGF0Y2gKIFBh dGNoOTogZ2NjMTItV25vLWZvcm1hdC1zZWN1cml0eS5wYXRjaAogUGF0Y2gxMDogZ2NjMTItcmgx NTc0OTM2LnBhdGNoCiBQYXRjaDExOiBnY2MxMi1kLXNoYXJlZC1saWJwaG9ib3MucGF0Y2gKLVBh dGNoMTI6IGdjYzEyLXByMTA0MDI1LnBhdGNoCi1QYXRjaDEzOiBnY2MxMi1wcjEwNDEwMy5wYXRj aAotUGF0Y2gxNDogZ2NjMTItcHIxMDQxMDQucGF0Y2gKK1BhdGNoMTI6IGdjYzEyLXByMTA0MTk0 LnBhdGNoCitQYXRjaDEzOiBnY2MxMi1wcjk0MTkzLnBhdGNoCitQYXRjaDE0OiBnY2MxMi1pZmN2 dC1yZXZlcnQucGF0Y2gKIAogUGF0Y2gxMDA6IGdjYzEyLWZvcnRyYW4tZmRlYy1kdXBsaWNhdGVz LnBhdGNoCiBQYXRjaDEwMTogZ2NjMTItZm9ydHJhbi1mbG9naWNhbC1hcy1pbnRlZ2VyLnBhdGNo CkBAIC03OTMsOSArNzk0LDkgQEAgdG8gTlZpZGlhIFBUWCBjYXBhYmxlIGRldmljZXMgaWYgYXZh aWxhYmxlLgogJXBhdGNoMTAgLXAwIC1iIC5yaDE1NzQ5MzZ+CiAlZW5kaWYKICVwYXRjaDExIC1w MCAtYiAuZC1zaGFyZWQtbGlicGhvYm9zfgotJXBhdGNoMTIgLXAwIC1iIC5wcjEwNDAyNX4KLSVw YXRjaDEzIC1wMCAtYiAucHIxMDQxMDN+Ci0lcGF0Y2gxNCAtcDAgLWIgLnByMTA0MTA0fgorJXBh dGNoMTIgLXAwIC1iIC5wcjEwNDE5NH4KKyVwYXRjaDEzIC1wMCAtYiAucHI5NDE5M34KKyVwYXRj aDE0IC1wMCAtYiAuaWZjdnQtcmV2ZXJ0fgogCiAlaWYgMCV7P3JoZWx9ID49IDkKICVwYXRjaDEw MCAtcDEgLWIgLmZvcnRyYW4tZmRlYy1kdXBsaWNhdGVzfgpAQCAtMzE1NSw2ICszMTU2LDM2IEBA IGVuZAogJWVuZGlmCiAKICVjaGFuZ2Vsb2cKKyogVHVlIEphbiAyNCAyMDIyIEpha3ViIEplbGlu ZWsgPGpha3ViQHJlZGhhdC5jb20+IDEyLjAuMS0wLjMKKy0gdXBkYXRlIGZyb20gdHJ1bmsKKyAg LSBQUnMgYWRhLzEwMzUzOCwgYW5hbHl6ZXIvOTQzNjIsIGFuYWx5emVyLzEwMzY4NSwgYW5hbHl6 ZXIvMTA0MDYyLAorCWFuYWx5emVyLzEwNDA4OSwgYW5hbHl6ZXIvMTA0MTUwLCBhbmFseXplci8x MDQxNTksIGJvb3RzdHJhcC8xMDQxMzUsCisJYm9vdHN0cmFwLzEwNDE3MCwgYysrLzIwMDQwLCBj KysvNTUyMjcsIGMrKy85MTkxMSwgYysrLzEwMTA3MiwKKwljKysvMTAxNDA1LCBjKysvMTAxNzE1 LCBjKysvMTAyMzAwLCBjKysvMTAyMzM4LCBjKysvMTAzNjMxLAorCWMrKy8xMDM2NzIsIGMrKy8x MDM2ODEsIGMrKy8xMDQwMjUsIGMrKy8xMDQwNTUsIGMrKy8xMDQwODQsCisJYysrLzEwNDEzNCwg YysrLzEwNDEzOSwgYysrLzEwNDE0OCwgYysrLzEwNDE3MywgYysrLzEwNDE4MiwKKwljKysvMTA0 MTk3LCBjLzEwNDExNSwgZGVidWcvMTAzODc0LCBmb3J0cmFuLzEwMjYyMSwgZm9ydHJhbi8xMDM2 OTUsCisJZm9ydHJhbi8xMDQxMjcsIGxpYmdjYy8xMDQyMDcsIGxpYnN0ZGMrKy84NzE5MywgbGli c3RkYysrLzEwNDAxOSwKKwlsaWJzdGRjKysvMTA0MDMyLCBsaWJzdGRjKysvMTA0MDk5LCBsaWJz dGRjKysvMTA0MTAxLAorCWxpYnN0ZGMrKy8xMDQxMjMsIGxpYnN0ZGMrKy8xMDQxNzQsIG1pZGRs ZS1lbmQvMTAwNzg2LAorCW1pZGRsZS1lbmQvMTAyODYwLCBtaWRkbGUtZW5kLzEwNDA2OSwgbWlk ZGxlLWVuZC8xMDQwNzYsCisJbWlkZGxlLWVuZC8xMDQxNDAsIG90aGVyLzEwNDE3Niwgb3RoZXIv MTA0MTgxLCBwcmVwcm9jZXNzb3IvMTA0MDMwLAorCXJ0bC1vcHRpbWl6YXRpb24vMTAyNDc4LCBz YW5pdGl6ZXIvOTk2NzMsIHNhbml0aXplci8xMDQxNTgsCisJdGFyZ2V0LzY0ODIxLCB0YXJnZXQv OTQxOTMsIHRhcmdldC8xMDA3ODQsIHRhcmdldC8xMDI1MTcsCisJdGFyZ2V0LzEwMzY3NiwgdGFy Z2V0LzEwMzc3MSwgdGFyZ2V0LzEwNDA5MCwgdGFyZ2V0LzEwNDEzNiwKKwl0YXJnZXQvMTA0MTg4 LCB0ZXN0c3VpdGUvMTAyODMzLCB0ZXN0c3VpdGUvMTAzNzYzLCB0ZXN0c3VpdGUvMTA0MDIxLAor CXRlc3RzdWl0ZS8xMDQwMjIsIHRlc3RzdWl0ZS8xMDQxMDksIHRyZWUtb3B0aW1pemF0aW9uLzEw MDA4OSwKKwl0cmVlLW9wdGltaXphdGlvbi8xMDA3NDAsIHRyZWUtb3B0aW1pemF0aW9uLzEwMTUw OCwKKwl0cmVlLW9wdGltaXphdGlvbi8xMDE5NzIsIHRyZWUtb3B0aW1pemF0aW9uLzEwMjA4NywK Kwl0cmVlLW9wdGltaXphdGlvbi8xMDIxMzEsIHRyZWUtb3B0aW1pemF0aW9uLzEwMzcyMSwKKwl0 cmVlLW9wdGltaXphdGlvbi8xMDM5OTcsIHRyZWUtb3B0aW1pemF0aW9uLzEwNDExMiwKKwl0cmVl LW9wdGltaXphdGlvbi8xMDQxMTQsIHRyZWUtb3B0aW1pemF0aW9uLzEwNDE1MiwKKwl0cmVlLW9w dGltaXphdGlvbi8xMDQxNTYsIHRyZWUtb3B0aW1pemF0aW9uLzEwNDIxNAorICAtIGRvbid0IGVt aXQgQysrIG1hbmdsaW5nIGFsaWFzZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBHQ0MgOC4xIHBw YzY0bGUKKyAgICBJRUVFIHF1YWQgbG9uZyBkb3VibGUgKFBSIHRhcmdldC8xMDQxNzIpCistIG1h cmsgSUVFRSBxdWFkIGxvbmcgZG91YmxlIGluIERXQVJGIGFzIGltcGxpY2l0IHR5cGVkZWYgdG8g X0Zsb2F0MTI4CisgIChQUiBkZWJ1Zy8xMDQxOTQpCisKICogVHVlIEphbiAxOCAyMDIyIEpha3Vi IEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDEyLjAuMS0wLjIKIC0gdXBkYXRlIGZyb20gdHJ1 bmsKICAgLSBQUnMgYysrLzEwNDAwNywgYysrLzEwNDA3NCwgZm9ydHJhbi8xMDM2OTIsIGlwYS8x MDM5ODksIGxpYnN0ZGMrKy8xMDExMjQsCgpkaWZmIC0tZ2l0IGEvZ2NjMTItaWZjdnQtcmV2ZXJ0 LnBhdGNoIGIvZ2NjMTItaWZjdnQtcmV2ZXJ0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjIyNjE2NjkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MxMi1pZmN2dC1yZXZl cnQucGF0Y2gKQEAgLTAsMCArMSwxMDU0IEBACitSZXZlcnQgcjEyLTY3NHszLDQsNSw2LDcsOCw5 fSwgYXMgdGhlcmUgYXJlIHNldmVyYWwgUFJzIHJlcG9ydGVkIGFnYWluc3QKK3Rob3NlIGNoYW5n ZXM6IFBSMTA0MTUzLCBQUjEwNDE1NCBhbmQgUFIxMDQxOTggYXQgbGVhc3QuCisKKy0tLSBnY2Mv Y29uZmlnL3JzNjAwMC9yczYwMDAuY2MKKysrKyBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuY2MK K0BAIC0xNjM3MywxMCArMTYzNzMsMTAgQEAgcnM2MDAwX2VtaXRfbWlubWF4IChydHggZGVzdCwg ZW51bSBydHhfY29kZSBjb2RlLCBydHggb3AwLCBydHggb3AxKQorICAgICBjID0gR0VVOworIAor ICAgaWYgKGNvZGUgPT0gU01BWCB8fCBjb2RlID09IFVNQVgpCistICAgIHRhcmdldCA9IGVtaXRf Y29uZGl0aW9uYWxfbW92ZSAoZGVzdCwgeyBjLCBvcDAsIG9wMSwgbW9kZSB9LAorKyAgICB0YXJn ZXQgPSBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKGRlc3QsIGMsIG9wMCwgb3AxLCBtb2RlLAorIAkJ CQkgICAgb3AwLCBvcDEsIG1vZGUsIDApOworICAgZWxzZQorLSAgICB0YXJnZXQgPSBlbWl0X2Nv bmRpdGlvbmFsX21vdmUgKGRlc3QsIHsgYywgb3AwLCBvcDEsIG1vZGUgfSwKKysgICAgdGFyZ2V0 ID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlIChkZXN0LCBjLCBvcDAsIG9wMSwgbW9kZSwKKyAJCQkJ ICAgIG9wMSwgb3AwLCBtb2RlLCAwKTsKKyAgIGdjY19hc3NlcnQgKHRhcmdldCk7CisgICBpZiAo dGFyZ2V0ICE9IGRlc3QpCitAQCAtMjI3NjksNyArMjI3NjksNyBAQCByczYwMDBfZW1pdF9zd3Nx cnQgKHJ0eCBkc3QsIHJ0eCBzcmMsIGJvb2wgcmVjaXApCisgCisgICAgICAgaWYgKG1vZGUgPT0g U0Ztb2RlKQorIAl7CistCSAgcnR4IHRhcmdldCA9IGVtaXRfY29uZGl0aW9uYWxfbW92ZSAoZSwg eyBHVCwgc3JjLCB6ZXJvLCBtb2RlIH0sCisrCSAgcnR4IHRhcmdldCA9IGVtaXRfY29uZGl0aW9u YWxfbW92ZSAoZSwgR1QsIHNyYywgemVybywgbW9kZSwKKyAJCQkJCSAgICAgIGUsIHplcm8sIG1v ZGUsIDApOworIAkgIGlmICh0YXJnZXQgIT0gZSkKKyAJICAgIGVtaXRfbW92ZV9pbnNuIChlLCB0 YXJnZXQpOworLS0tIGdjYy9leHBtZWQuY2MKKysrKyBnY2MvZXhwbWVkLmNjCitAQCAtNDEyNCw4 ICs0MTI0LDggQEAgZXhwYW5kX3NkaXZfcG93MiAoc2NhbGFyX2ludF9tb2RlIG1vZGUsIHJ0eCBv cDAsIEhPU1RfV0lERV9JTlQgZCkKKyAgICAgICB0ZW1wID0gZm9yY2VfcmVnIChtb2RlLCB0ZW1w KTsKKyAKKyAgICAgICAvKiBDb25zdHJ1Y3QgInRlbXAyID0gKHRlbXAyIDwgMCkgPyB0ZW1wIDog dGVtcDIiLiAgKi8KKy0gICAgICB0ZW1wMiA9IGVtaXRfY29uZGl0aW9uYWxfbW92ZSAodGVtcDIs IHsgTFQsIHRlbXAyLCBjb25zdDBfcnR4LCBtb2RlIH0sCistCQkJCSAgICAgdGVtcCwgdGVtcDIs IG1vZGUsIDApOworKyAgICAgIHRlbXAyID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlICh0ZW1wMiwg TFQsIHRlbXAyLCBjb25zdDBfcnR4LAorKwkJCQkgICAgIG1vZGUsIHRlbXAsIHRlbXAyLCBtb2Rl LCAwKTsKKyAgICAgICBpZiAodGVtcDIpCisgCXsKKyAJICBydHhfaW5zbiAqc2VxID0gZ2V0X2lu c25zICgpOworQEAgLTYxMjcsMTAgKzYxMjcsMTAgQEAgZW1pdF9zdG9yZV9mbGFnIChydHggdGFy Z2V0LCBlbnVtIHJ0eF9jb2RlIGNvZGUsIHJ0eCBvcDAsIHJ0eCBvcDEsCisgCXJldHVybiAwOwor IAorICAgICAgIGlmIChhbmRfdGhlbSkKKy0JdGVtID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlICh0 YXJnZXQsIHsgY29kZSwgb3AwLCBvcDEsIG1vZGUgfSwKKysJdGVtID0gZW1pdF9jb25kaXRpb25h bF9tb3ZlICh0YXJnZXQsIGNvZGUsIG9wMCwgb3AxLCBtb2RlLAorIAkJCQkgICAgIHRlbSwgY29u c3QwX3J0eCwgR0VUX01PREUgKHRlbSksIDApOworICAgICAgIGVsc2UKKy0JdGVtID0gZW1pdF9j b25kaXRpb25hbF9tb3ZlICh0YXJnZXQsIHsgY29kZSwgb3AwLCBvcDEsIG1vZGUgfSwKKysJdGVt ID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlICh0YXJnZXQsIGNvZGUsIG9wMCwgb3AxLCBtb2RlLAor IAkJCQkgICAgIHRydWV2YWwsIHRlbSwgR0VUX01PREUgKHRlbSksIDApOworIAorICAgICAgIGlm ICh0ZW0gPT0gMCkKKy0tLSBnY2MvZXhwci5jYworKysrIGdjYy9leHByLmNjCitAQCAtODgyNCw5 ICs4ODI0LDggQEAgZXhwYW5kX2NvbmRfZXhwcl91c2luZ19jbW92ZSAodHJlZSB0cmVlb3AwIEFU VFJJQlVURV9VTlVTRUQsCisgICAgIG9wMiA9IGdlbl9sb3dwYXJ0IChtb2RlLCBvcDIpOworIAor ICAgLyogVHJ5IHRvIGVtaXQgdGhlIGNvbmRpdGlvbmFsIG1vdmUuICAqLworLSAgaW5zbiA9IGVt aXRfY29uZGl0aW9uYWxfbW92ZSAodGVtcCwKKy0JCQkJeyBjb21wYXJpc29uX2NvZGUsIG9wMDAs IG9wMDEsCistCQkJCSAgY29tcGFyaXNvbl9tb2RlIH0sCisrICBpbnNuID0gZW1pdF9jb25kaXRp b25hbF9tb3ZlICh0ZW1wLCBjb21wYXJpc29uX2NvZGUsCisrCQkJCW9wMDAsIG9wMDEsIGNvbXBh cmlzb25fbW9kZSwKKyAJCQkJb3AxLCBvcDIsIG1vZGUsCisgCQkJCXVuc2lnbmVkcCk7CisgCitA QCAtOTcxNyw5ICs5NzE2LDggQEAgZXhwYW5kX2V4cHJfcmVhbF8yIChzZXBvcHMgb3BzLCBydHgg dGFyZ2V0LCBtYWNoaW5lX21vZGUgdG1vZGUsCisgCSAgICBzdGFydF9zZXF1ZW5jZSAoKTsKKyAK KyAJICAgIC8qIFRyeSB0byBlbWl0IHRoZSBjb25kaXRpb25hbCBtb3ZlLiAgKi8KKy0JICAgIGlu c24gPSBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHRhcmdldCwKKy0JCQkJCSAgeyBjb21wYXJpc29u X2NvZGUsCistCQkJCQkgICAgb3AwLCBjbXBvcDEsIG1vZGUgfSwKKysJICAgIGluc24gPSBlbWl0 X2NvbmRpdGlvbmFsX21vdmUgKHRhcmdldCwgY29tcGFyaXNvbl9jb2RlLAorKwkJCQkJICBvcDAs IGNtcG9wMSwgbW9kZSwKKyAJCQkJCSAgb3AwLCBvcDEsIG1vZGUsCisgCQkJCQkgIHVuc2lnbmVk cCk7CisgCistLS0gZ2NjL2lmY3Z0LmNjCisrKysgZ2NjL2lmY3Z0LmNjCitAQCAtODMsNyArODMs NyBAQCBzdGF0aWMgcnR4X2luc24gKmxhc3RfYWN0aXZlX2luc24gKGJhc2ljX2Jsb2NrLCBpbnQp OworIHN0YXRpYyBydHhfaW5zbiAqZmluZF9hY3RpdmVfaW5zbl9iZWZvcmUgKGJhc2ljX2Jsb2Nr LCBydHhfaW5zbiAqKTsKKyBzdGF0aWMgcnR4X2luc24gKmZpbmRfYWN0aXZlX2luc25fYWZ0ZXIg KGJhc2ljX2Jsb2NrLCBydHhfaW5zbiAqKTsKKyBzdGF0aWMgYmFzaWNfYmxvY2sgYmxvY2tfZmFs bHRocnUgKGJhc2ljX2Jsb2NrKTsKKy1zdGF0aWMgcnR4IGNvbmRfZXhlY19nZXRfY29uZGl0aW9u IChydHhfaW5zbiAqLCBib29sKTsKKytzdGF0aWMgcnR4IGNvbmRfZXhlY19nZXRfY29uZGl0aW9u IChydHhfaW5zbiAqKTsKKyBzdGF0aWMgcnR4IG5vY2VfZ2V0X2NvbmRpdGlvbiAocnR4X2luc24g KiwgcnR4X2luc24gKiosIGJvb2wpOworIHN0YXRpYyBpbnQgbm9jZV9vcGVyYW5kX29rIChjb25z dF9ydHgpOworIHN0YXRpYyB2b2lkIG1lcmdlX2lmX2Jsb2NrIChjZV9pZl9ibG9jayAqKTsKK0BA IC05OCwxNCArOTgsNiBAQCBzdGF0aWMgaW50IGRlYWRfb3JfcHJlZGljYWJsZSAoYmFzaWNfYmxv Y2ssIGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywKKyAJCQkgICAgICAgZWRnZSwgaW50KTsKKyBz dGF0aWMgdm9pZCBub2NlX2VtaXRfbW92ZV9pbnNuIChydHgsIHJ0eCk7Cisgc3RhdGljIHJ0eF9p bnNuICpibG9ja19oYXNfb25seV90cmFwIChiYXNpY19ibG9jayk7Cistc3RhdGljIHZvaWQgbmVl ZF9jbW92X29yX3Jld2lyZSAoYmFzaWNfYmxvY2ssIGhhc2hfc2V0PHJ0eF9pbnNuICo+ICosCist CQkJCSBoYXNoX21hcDxydHhfaW5zbiAqLCBpbnQ+ICopOworLXN0YXRpYyBib29sIG5vY2VfY29u dmVydF9tdWx0aXBsZV9zZXRzXzEgKHN0cnVjdCBub2NlX2lmX2luZm8gKiwKKy0JCQkJCSAgaGFz aF9zZXQ8cnR4X2luc24gKj4gKiwKKy0JCQkJCSAgaGFzaF9tYXA8cnR4X2luc24gKiwgaW50PiAq LAorLQkJCQkJICBhdXRvX3ZlYzxydHg+ICosCistCQkJCQkgIGF1dG9fdmVjPHJ0eD4gKiwKKy0J CQkJCSAgYXV0b192ZWM8cnR4X2luc24gKj4gKiwgaW50ICopOworIAwKKyAvKiBDb3VudCB0aGUg bnVtYmVyIG9mIG5vbi1qdW1wIGFjdGl2ZSBpbnNucyBpbiBCQi4gICovCisgCitAQCAtNDMzLDcg KzQyNSw3IEBAIGNvbmRfZXhlY19wcm9jZXNzX2luc25zIChjZV9pZl9ibG9jayAqY2VfaW5mbyBB VFRSSUJVVEVfVU5VU0VELAorIC8qIFJldHVybiB0aGUgY29uZGl0aW9uIGZvciBhIGp1bXAuICBE byBub3QgZG8gYW55IHNwZWNpYWwgcHJvY2Vzc2luZy4gICovCisgCisgc3RhdGljIHJ0eAorLWNv bmRfZXhlY19nZXRfY29uZGl0aW9uIChydHhfaW5zbiAqanVtcCwgYm9vbCBnZXRfcmV2ZXJzZWQg PSBmYWxzZSkKKytjb25kX2V4ZWNfZ2V0X2NvbmRpdGlvbiAocnR4X2luc24gKmp1bXApCisgewor ICAgcnR4IHRlc3RfaWYsIGNvbmQ7CisgCitAQCAtNDQ1LDEwICs0MzcsOCBAQCBjb25kX2V4ZWNf Z2V0X2NvbmRpdGlvbiAocnR4X2luc24gKmp1bXAsIGJvb2wgZ2V0X3JldmVyc2VkID0gZmFsc2Up CisgCisgICAvKiBJZiB0aGlzIGJyYW5jaGVzIHRvIEpVTVBfTEFCRUwgd2hlbiB0aGUgY29uZGl0 aW9uIGlzIGZhbHNlLAorICAgICAgcmV2ZXJzZSB0aGUgY29uZGl0aW9uLiAgKi8KKy0gIGlmIChn ZXRfcmV2ZXJzZWQKKy0gICAgICB8fCAoR0VUX0NPREUgKFhFWFAgKHRlc3RfaWYsIDIpKSA9PSBM QUJFTF9SRUYKKy0JICAmJiBsYWJlbF9yZWZfbGFiZWwgKFhFWFAgKHRlc3RfaWYsIDIpKQorLQkg ID09IEpVTVBfTEFCRUwgKGp1bXApKSkKKysgIGlmIChHRVRfQ09ERSAoWEVYUCAodGVzdF9pZiwg MikpID09IExBQkVMX1JFRgorKyAgICAgICYmIGxhYmVsX3JlZl9sYWJlbCAoWEVYUCAodGVzdF9p ZiwgMikpID09IEpVTVBfTEFCRUwgKGp1bXApKQorICAgICB7CisgICAgICAgZW51bSBydHhfY29k ZSByZXYgPSByZXZlcnNlZF9jb21wYXJpc29uX2NvZGUgKGNvbmQsIGp1bXApOworICAgICAgIGlm IChyZXYgPT0gVU5LTk9XTikKK0BAIC03ODAsNyArNzcwLDcgQEAgc3RhdGljIGludCBub2NlX3Ry eV9hZGRjYyAoc3RydWN0IG5vY2VfaWZfaW5mbyAqKTsKKyBzdGF0aWMgaW50IG5vY2VfdHJ5X3N0 b3JlX2ZsYWdfY29uc3RhbnRzIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICopOworIHN0YXRpYyBpbnQg bm9jZV90cnlfc3RvcmVfZmxhZ19tYXNrIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICopOworIHN0YXRp YyBydHggbm9jZV9lbWl0X2Ntb3ZlIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICosIHJ0eCwgZW51bSBy dHhfY29kZSwgcnR4LAorLQkJCSAgICBydHgsIHJ0eCwgcnR4LCBydHggPSBOVUxMLCBydHggPSBO VUxMKTsKKysJCQkgICAgcnR4LCBydHgsIHJ0eCk7Cisgc3RhdGljIGludCBub2NlX3RyeV9jbW92 ZSAoc3RydWN0IG5vY2VfaWZfaW5mbyAqKTsKKyBzdGF0aWMgaW50IG5vY2VfdHJ5X2Ntb3ZlX2Fy aXRoIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICopOworIHN0YXRpYyBydHggbm9jZV9nZXRfYWx0X2Nv bmRpdGlvbiAoc3RydWN0IG5vY2VfaWZfaW5mbyAqLCBydHgsIHJ0eF9pbnNuICoqKTsKK0BAIC0x NzE5LDggKzE3MDksNyBAQCBub2NlX3RyeV9zdG9yZV9mbGFnX21hc2sgKHN0cnVjdCBub2NlX2lm X2luZm8gKmlmX2luZm8pCisgCisgc3RhdGljIHJ0eAorIG5vY2VfZW1pdF9jbW92ZSAoc3RydWN0 IG5vY2VfaWZfaW5mbyAqaWZfaW5mbywgcnR4IHgsIGVudW0gcnR4X2NvZGUgY29kZSwKKy0JCSBy dHggY21wX2EsIHJ0eCBjbXBfYiwgcnR4IHZmYWxzZSwgcnR4IHZ0cnVlLCBydHggY2NfY21wLAor LQkJIHJ0eCByZXZfY2NfY21wKQorKwkJIHJ0eCBjbXBfYSwgcnR4IGNtcF9iLCBydHggdmZhbHNl LCBydHggdnRydWUpCisgeworICAgcnR4IHRhcmdldCBBVFRSSUJVVEVfVU5VU0VEOworICAgaW50 IHVuc2lnbmVkcCBBVFRSSUJVVEVfVU5VU0VEOworQEAgLTE3NTIsMzAgKzE3NDEsMjMgQEAgbm9j ZV9lbWl0X2Ntb3ZlIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICppZl9pbmZvLCBydHggeCwgZW51bSBy dHhfY29kZSBjb2RlLAorICAgICAgIGVuZF9zZXF1ZW5jZSAoKTsKKyAgICAgfQorIAorLSAgdW5z aWduZWRwID0gKGNvZGUgPT0gTFRVIHx8IGNvZGUgPT0gR0VVCistCSAgICAgICB8fCBjb2RlID09 IExFVSB8fCBjb2RlID09IEdUVSk7CistCistICBpZiAoY2NfY21wICE9IE5VTExfUlRYICYmIHJl dl9jY19jbXAgIT0gTlVMTF9SVFgpCistICAgIHRhcmdldCA9IGVtaXRfY29uZGl0aW9uYWxfbW92 ZSAoeCwgY2NfY21wLCByZXZfY2NfY21wLAorLQkJCQkgICAgdnRydWUsIHZmYWxzZSwgR0VUX01P REUgKHgpKTsKKy0gIGVsc2UKKysgIC8qIERvbid0IGV2ZW4gdHJ5IGlmIHRoZSBjb21wYXJpc29u IG9wZXJhbmRzIGFyZSB3ZWlyZAorKyAgICAgZXhjZXB0IHRoYXQgdGhlIHRhcmdldCBzdXBwb3J0 cyBjYnJhbmNoY2M0LiAgKi8KKysgIGlmICghIGdlbmVyYWxfb3BlcmFuZCAoY21wX2EsIEdFVF9N T0RFIChjbXBfYSkpCisrICAgICAgfHwgISBnZW5lcmFsX29wZXJhbmQgKGNtcF9iLCBHRVRfTU9E RSAoY21wX2IpKSkKKyAgICAgeworLSAgICAgIC8qIERvbid0IGV2ZW4gdHJ5IGlmIHRoZSBjb21w YXJpc29uIG9wZXJhbmRzIGFyZSB3ZWlyZAorLQkgZXhjZXB0IHRoYXQgdGhlIHRhcmdldCBzdXBw b3J0cyBjYnJhbmNoY2M0LiAgKi8KKy0gICAgICBpZiAoISBnZW5lcmFsX29wZXJhbmQgKGNtcF9h LCBHRVRfTU9ERSAoY21wX2EpKQorLQkgIHx8ICEgZ2VuZXJhbF9vcGVyYW5kIChjbXBfYiwgR0VU X01PREUgKGNtcF9iKSkpCistCXsKKy0JICBpZiAoIWhhdmVfY2JyYW5jaGNjNAorLQkgICAgICB8 fCBHRVRfTU9ERV9DTEFTUyAoR0VUX01PREUgKGNtcF9hKSkgIT0gTU9ERV9DQworLQkgICAgICB8 fCBjbXBfYiAhPSBjb25zdDBfcnR4KQorLQkgICAgcmV0dXJuIE5VTExfUlRYOworLQl9CistCist ICAgICAgdGFyZ2V0ID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlICh4LCB7IGNvZGUsIGNtcF9hLCBj bXBfYiwgVk9JRG1vZGUgfSwKKy0JCQkJICAgICAgdnRydWUsIHZmYWxzZSwgR0VUX01PREUgKHgp LAorLQkJCQkgICAgICB1bnNpZ25lZHApOworKyAgICAgIGlmICghaGF2ZV9jYnJhbmNoY2M0Cisr CSAgfHwgR0VUX01PREVfQ0xBU1MgKEdFVF9NT0RFIChjbXBfYSkpICE9IE1PREVfQ0MKKysJICB8 fCBjbXBfYiAhPSBjb25zdDBfcnR4KQorKwlyZXR1cm4gTlVMTF9SVFg7CisgICAgIH0KKyAKKysg IHVuc2lnbmVkcCA9IChjb2RlID09IExUVSB8fCBjb2RlID09IEdFVQorKwkgICAgICAgfHwgY29k ZSA9PSBMRVUgfHwgY29kZSA9PSBHVFUpOworKworKyAgdGFyZ2V0ID0gZW1pdF9jb25kaXRpb25h bF9tb3ZlICh4LCBjb2RlLCBjbXBfYSwgY21wX2IsIFZPSURtb2RlLAorKwkJCQkgIHZ0cnVlLCB2 ZmFsc2UsIEdFVF9NT0RFICh4KSwKKysJCQkJICB1bnNpZ25lZHApOworICAgaWYgKHRhcmdldCkK KyAgICAgcmV0dXJuIHRhcmdldDsKKyAKK0BAIC0xODExLDkgKzE3OTMsOCBAQCBub2NlX2VtaXRf Y21vdmUgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2luZm8sIHJ0eCB4LCBlbnVtIHJ0eF9jb2Rl IGNvZGUsCisgCisgICAgICAgcHJvbW90ZWRfdGFyZ2V0ID0gZ2VuX3JlZ19ydHggKEdFVF9NT0RF IChyZWdfdnRydWUpKTsKKyAKKy0gICAgICB0YXJnZXQgPSBlbWl0X2NvbmRpdGlvbmFsX21vdmUg KHByb21vdGVkX3RhcmdldCwKKy0JCQkJICAgICAgeyBjb2RlLCBjbXBfYSwgY21wX2IsIFZPSURt b2RlIH0sCistCQkJCSAgICAgIHJlZ192dHJ1ZSwgcmVnX3ZmYWxzZSwKKysgICAgICB0YXJnZXQg PSBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHByb21vdGVkX3RhcmdldCwgY29kZSwgY21wX2EsIGNt cF9iLAorKwkJCQkgICAgICBWT0lEbW9kZSwgcmVnX3Z0cnVlLCByZWdfdmZhbHNlLAorIAkJCQkg ICAgICBHRVRfTU9ERSAocmVnX3Z0cnVlKSwgdW5zaWduZWRwKTsKKyAgICAgICAvKiBOb3BlLCBj b3VsZG4ndCBkbyBpdCBpbiB0aGF0IG1vZGUgZWl0aGVyLiAgKi8KKyAgICAgICBpZiAoIXRhcmdl dCkKK0BAIC0zMTYwLDUwICszMTQxLDYgQEAgYmJfdmFsaWRfZm9yX25vY2VfcHJvY2Vzc19wIChi YXNpY19ibG9jayB0ZXN0X2JiLCBydHggY29uZCwKKyAgIHJldHVybiBmYWxzZTsKKyB9CisgCist LyogSGVscGVyIGZ1bmN0aW9uIHRvIGVtaXQgYSBjbW92IHNlcXVlbmNlIGVuY2Fwc3VsYXRlZCBp bgorLSAgIHN0YXJ0X3NlcXVlbmNlICgpIGFuZCBlbmRfc2VxdWVuY2UgKCkuICBJZiBORUVEX0NN T1YgaXMgdHJ1ZQorLSAgIHdlIGNhbGwgbm9jZV9lbWl0X2Ntb3ZlIHRvIGNyZWF0ZSBhIGNtb3Zl IHNlcXVlbmNlLiAgT3RoZXJ3aXNlIGVtaXQKKy0gICBhIHNpbXBsZSBtb3ZlLiAgSWYgc3VjY2Vz c2Z1bCwgc3RvcmUgdGhlIGZpcnN0IGluc3RydWN0aW9uIG9mIHRoZQorLSAgIHNlcXVlbmNlIGlu IFRFTVBfREVTVCBhbmQgdGhlIHNlcXVlbmNlIGNvc3RzIGluIFNFUV9DT1NULiAgKi8KKy0KKy1z dGF0aWMgcnR4X2luc24qCistdHJ5X2VtaXRfY21vdmVfc2VxIChzdHJ1Y3Qgbm9jZV9pZl9pbmZv ICppZl9pbmZvLCBydHggdGVtcCwKKy0JCSAgICBydHggY29uZCwgcnR4IG5ld192YWwsIHJ0eCBv bGRfdmFsLCBib29sIG5lZWRfY21vdiwKKy0JCSAgICB1bnNpZ25lZCAqY29zdCwgcnR4ICp0ZW1w X2Rlc3QsCistCQkgICAgcnR4IGNjX2NtcCA9IE5VTEwsIHJ0eCByZXZfY2NfY21wID0gTlVMTCkK Ky17CistICBydHhfaW5zbiAqc2VxID0gTlVMTDsKKy0gICpjb3N0ID0gMDsKKy0KKy0gIHJ0eCB4 ID0gWEVYUCAoY29uZCwgMCk7CistICBydHggeSA9IFhFWFAgKGNvbmQsIDEpOworLSAgcnR4X2Nv ZGUgY29uZF9jb2RlID0gR0VUX0NPREUgKGNvbmQpOworLQorLSAgc3RhcnRfc2VxdWVuY2UgKCk7 CistCistICBpZiAobmVlZF9jbW92KQorLSAgICAqdGVtcF9kZXN0ID0gbm9jZV9lbWl0X2Ntb3Zl IChpZl9pbmZvLCB0ZW1wLCBjb25kX2NvZGUsCistCQkJCSAgeCwgeSwgbmV3X3ZhbCwgb2xkX3Zh bCwgY2NfY21wLCByZXZfY2NfY21wKTsKKy0gIGVsc2UKKy0gICAgeworLSAgICAgICp0ZW1wX2Rl c3QgPSB0ZW1wOworLSAgICAgIGlmIChpZl9pbmZvLT50aGVuX2Vsc2VfcmV2ZXJzZWQpCistCW5v Y2VfZW1pdF9tb3ZlX2luc24gKHRlbXAsIG9sZF92YWwpOworLSAgICAgIGVsc2UKKy0Jbm9jZV9l bWl0X21vdmVfaW5zbiAodGVtcCwgbmV3X3ZhbCk7CistICAgIH0KKy0KKy0gIGlmICgqdGVtcF9k ZXN0ICE9IE5VTExfUlRYKQorLSAgICB7CistICAgICAgc2VxID0gZ2V0X2luc25zICgpOworLSAg ICAgICpjb3N0ID0gc2VxX2Nvc3QgKHNlcSwgaWZfaW5mby0+c3BlZWRfcCk7CistICAgIH0KKy0K Ky0gIGVuZF9zZXF1ZW5jZSAoKTsKKy0KKy0gIHJldHVybiBzZXE7CistfQorLQorIC8qIFdlIGhh dmUgc29tZXRoaW5nIGxpa2U6CisgCisgICAgICBpZiAoeCA+IHkpCitAQCAtMzI2MSw2ICszMTk4 LDcgQEAgbm9jZV9jb252ZXJ0X211bHRpcGxlX3NldHMgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlm X2luZm8pCisgICBydHggY29uZCA9IG5vY2VfZ2V0X2NvbmRpdGlvbiAoanVtcCwgJmNvbmRfZWFy bGllc3QsIGZhbHNlKTsKKyAgIHJ0eCB4ID0gWEVYUCAoY29uZCwgMCk7CisgICBydHggeSA9IFhF WFAgKGNvbmQsIDEpOworKyAgcnR4X2NvZGUgY29uZF9jb2RlID0gR0VUX0NPREUgKGNvbmQpOwor IAorICAgLyogVGhlIHRydWUgdGFyZ2V0cyBmb3IgYSBjb25kaXRpb25hbCBtb3ZlLiAgKi8KKyAg IGF1dG9fdmVjPHJ0eD4gdGFyZ2V0czsKK0BAIC0zMjY5LDEzOSArMzIwNyw4IEBAIG5vY2VfY29u dmVydF9tdWx0aXBsZV9zZXRzIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICppZl9pbmZvKQorICAgYXV0 b192ZWM8cnR4PiB0ZW1wb3JhcmllczsKKyAgIC8qIFRoZSBpbnNucyB3ZSd2ZSBlbWl0dGVkLiAg Ki8KKyAgIGF1dG9fdmVjPHJ0eF9pbnNuICo+IHVubW9kaWZpZWRfaW5zbnM7CistCistICBoYXNo X3NldDxydHhfaW5zbiAqPiBuZWVkX25vX2Ntb3Y7CistICBoYXNoX21hcDxydHhfaW5zbiAqLCBp bnQ+IHJld2lyZWRfc3JjOworLQorLSAgbmVlZF9jbW92X29yX3Jld2lyZSAodGhlbl9iYiwgJm5l ZWRfbm9fY21vdiwgJnJld2lyZWRfc3JjKTsKKy0KKy0gIGludCBsYXN0X25lZWRzX2NvbXBhcmlz b24gPSAtMTsKKy0KKy0gIGJvb2wgb2sgPSBub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0c18xCist ICAgIChpZl9pbmZvLCAmbmVlZF9ub19jbW92LCAmcmV3aXJlZF9zcmMsICZ0YXJnZXRzLCAmdGVt cG9yYXJpZXMsCistICAgICAmdW5tb2RpZmllZF9pbnNucywgJmxhc3RfbmVlZHNfY29tcGFyaXNv bik7CistICBpZiAoIW9rKQorLSAgICAgIHJldHVybiBmYWxzZTsKKy0KKy0gIC8qIElmIHRoZXJl IGFyZSBpbnNucyB0aGF0IG92ZXJ3cml0ZSBwYXJ0IG9mIHRoZSBpbml0aWFsCistICAgICBjb21w YXJpc29uLCB3ZSBjYW4gc3RpbGwgb21pdCBjcmVhdGluZyB0ZW1wb3JhcmllcyBmb3IKKy0gICAg IHRoZSBsYXN0IG9mIHRoZW0uCistICAgICBBcyB0aGUgc2Vjb25kIHRyeSB3aWxsIGFsd2F5cyBj cmVhdGUgYSBsZXNzIGV4cGVuc2l2ZSwKKy0gICAgIHZhbGlkIHNlcXVlbmNlLCB3ZSBkbyBub3Qg bmVlZCB0byBjb21wYXJlIGFuZCBjYW4gZGlzY2FyZAorLSAgICAgdGhlIGZpcnN0IG9uZS4gICov CistICBpZiAobGFzdF9uZWVkc19jb21wYXJpc29uICE9IC0xKQorLSAgICB7CistICAgICAgZW5k X3NlcXVlbmNlICgpOworLSAgICAgIHN0YXJ0X3NlcXVlbmNlICgpOworLSAgICAgIG9rID0gbm9j ZV9jb252ZXJ0X211bHRpcGxlX3NldHNfMQorLQkoaWZfaW5mbywgJm5lZWRfbm9fY21vdiwgJnJl d2lyZWRfc3JjLCAmdGFyZ2V0cywgJnRlbXBvcmFyaWVzLAorLQkgJnVubW9kaWZpZWRfaW5zbnMs ICZsYXN0X25lZWRzX2NvbXBhcmlzb24pOworLSAgICAgIC8qIEFjdHVhbGx5IHdlIHNob3VsZCBu b3QgZmFpbCBhbnltb3JlIGlmIHdlIHJlYWNoZWQgaGVyZSwKKy0JIGJ1dCBiZXR0ZXIgc3RpbGwg Y2hlY2suICAqLworLSAgICAgIGlmICghb2spCistCSAgcmV0dXJuIGZhbHNlOworLSAgICB9Cist CistICAvKiBXZSBtdXN0IGhhdmUgc2VlbiBzb21lIHNvcnQgb2YgaW5zbiB0byBpbnNlcnQsIG90 aGVyd2lzZSB3ZSB3ZXJlCistICAgICBnaXZlbiBhbiBlbXB0eSBCQiB0byBjb252ZXJ0LCBhbmQg d2UgY2FuJ3QgaGFuZGxlIHRoYXQuICAqLworLSAgZ2NjX2Fzc2VydCAoIXVubW9kaWZpZWRfaW5z bnMuaXNfZW1wdHkgKCkpOworLQorLSAgLyogTm93IGZpeHVwIHRoZSBhc3NpZ25tZW50cy4gICov CistICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFyZ2V0cy5sZW5ndGggKCk7IGkrKykKKy0g ICAgaWYgKHRhcmdldHNbaV0gIT0gdGVtcG9yYXJpZXNbaV0pCistICAgICAgbm9jZV9lbWl0X21v dmVfaW5zbiAodGFyZ2V0c1tpXSwgdGVtcG9yYXJpZXNbaV0pOworLQorLSAgLyogQWN0dWFsbHkg ZW1pdCB0aGUgc2VxdWVuY2UgaWYgaXQgaXNuJ3QgdG9vIGV4cGVuc2l2ZS4gICovCistICBydHhf aW5zbiAqc2VxID0gZ2V0X2luc25zICgpOworLQorLSAgaWYgKCF0YXJnZXRtLm5vY2VfY29udmVy c2lvbl9wcm9maXRhYmxlX3AgKHNlcSwgaWZfaW5mbykpCistICAgIHsKKy0gICAgICBlbmRfc2Vx dWVuY2UgKCk7CistICAgICAgcmV0dXJuIEZBTFNFOworLSAgICB9CistCistICBmb3IgKGluc24g PSBzZXE7IGluc247IGluc24gPSBORVhUX0lOU04gKGluc24pKQorLSAgICBzZXRfdXNlZF9mbGFn cyAoaW5zbik7CistCistICAvKiBNYXJrIGFsbCBvdXIgdGVtcG9yYXJpZXMgYW5kIHRhcmdldHMg YXMgdXNlZC4gICovCistICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFyZ2V0cy5sZW5ndGgg KCk7IGkrKykKKy0gICAgeworLSAgICAgIHNldF91c2VkX2ZsYWdzICh0ZW1wb3Jhcmllc1tpXSk7 CistICAgICAgc2V0X3VzZWRfZmxhZ3MgKHRhcmdldHNbaV0pOworLSAgICB9CistCistICBzZXRf dXNlZF9mbGFncyAoY29uZCk7CistICBzZXRfdXNlZF9mbGFncyAoeCk7CistICBzZXRfdXNlZF9m bGFncyAoeSk7CistCistICB1bnNoYXJlX2FsbF9ydGxfaW5fY2hhaW4gKHNlcSk7CistICBlbmRf c2VxdWVuY2UgKCk7CistCistICBpZiAoIXNlcSkKKy0gICAgcmV0dXJuIEZBTFNFOworLQorLSAg Zm9yIChpbnNuID0gc2VxOyBpbnNuOyBpbnNuID0gTkVYVF9JTlNOIChpbnNuKSkKKy0gICAgaWYg KEpVTVBfUCAoaW5zbikKKy0JfHwgcmVjb2dfbWVtb2l6ZWQgKGluc24pID09IC0xKQorLSAgICAg IHJldHVybiBGQUxTRTsKKy0KKy0gIGVtaXRfaW5zbl9iZWZvcmVfc2V0bG9jIChzZXEsIGlmX2lu Zm8tPmp1bXAsCistCQkJICAgSU5TTl9MT0NBVElPTiAodW5tb2RpZmllZF9pbnNucy5sYXN0ICgp KSk7CistCistICAvKiBDbGVhbiB1cCBUSEVOX0JCIGFuZCB0aGUgZWRnZXMgaW4gYW5kIG91dCBv ZiBpdC4gICovCistICByZW1vdmVfZWRnZSAoZmluZF9lZGdlICh0ZXN0X2JiLCBqb2luX2JiKSk7 CistICByZW1vdmVfZWRnZSAoZmluZF9lZGdlICh0aGVuX2JiLCBqb2luX2JiKSk7CistICByZWRp cmVjdF9lZGdlX2FuZF9icmFuY2hfZm9yY2UgKHNpbmdsZV9zdWNjX2VkZ2UgKHRlc3RfYmIpLCBq b2luX2JiKTsKKy0gIGRlbGV0ZV9iYXNpY19ibG9jayAodGhlbl9iYik7CistICBudW1fdHJ1ZV9j aGFuZ2VzKys7CistCistICAvKiBNYXliZSBtZXJnZSBibG9ja3Mgbm93IHRoZSBqdW1wIGlzIHNp bXBsZSBlbm91Z2guICAqLworLSAgaWYgKGNhbl9tZXJnZV9ibG9ja3NfcCAodGVzdF9iYiwgam9p bl9iYikpCistICAgIHsKKy0gICAgICBtZXJnZV9ibG9ja3MgKHRlc3RfYmIsIGpvaW5fYmIpOwor LSAgICAgIG51bV90cnVlX2NoYW5nZXMrKzsKKy0gICAgfQorLQorLSAgbnVtX3VwZGF0ZWRfaWZf YmxvY2tzKys7CistICBpZl9pbmZvLT50cmFuc2Zvcm1fbmFtZSA9ICJub2NlX2NvbnZlcnRfbXVs dGlwbGVfc2V0cyI7CistICByZXR1cm4gVFJVRTsKKy19CistCistLyogVGhpcyBnb2VzIHRocm91 Z2ggYWxsIHJlbGV2YW50IGluc25zIG9mIElGX0lORk8tPnRoZW5fYmIgYW5kIHRyaWVzIHRvCist ICAgY3JlYXRlIGNvbmRpdGlvbmFsIG1vdmVzLiAgSW4gY2FzZSBhIHNpbXBsZSBtb3ZlIHN1ZmZp Y2lzIHRoZSBpbnNuCistICAgc2hvdWxkIGJlIGxpc3RlZCBpbiBORUVEX05PX0NNT1YuICBUaGUg cmV3aXJlZC1zcmMgY2FzZXMgc2hvdWxkIGJlCistICAgc3BlY2lmaWVkIHZpYSBSRVdJUkVEX1NS Qy4gIFRBUkdFVFMsIFRFTVBPUkFSSUVTIGFuZCBVTk1PRElGSUVEX0lOU05TCistICAgYXJlIHNw ZWNpZmllZCBhbmQgdXNlZCBpbiBub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0cyBhbmQgc2hvdWxk IGJlIHBhc3NlZAorLSAgIHRvIHRoaXMgZnVuY3Rpb24uLiAgKi8KKy0KKy1zdGF0aWMgYm9vbAor LW5vY2VfY29udmVydF9tdWx0aXBsZV9zZXRzXzEgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2lu Zm8sCistCQkJICAgICAgaGFzaF9zZXQ8cnR4X2luc24gKj4gKm5lZWRfbm9fY21vdiwKKy0JCQkg ICAgICBoYXNoX21hcDxydHhfaW5zbiAqLCBpbnQ+ICpyZXdpcmVkX3NyYywKKy0JCQkgICAgICBh dXRvX3ZlYzxydHg+ICp0YXJnZXRzLAorLQkJCSAgICAgIGF1dG9fdmVjPHJ0eD4gKnRlbXBvcmFy aWVzLAorLQkJCSAgICAgIGF1dG9fdmVjPHJ0eF9pbnNuICo+ICp1bm1vZGlmaWVkX2luc25zLAor LQkJCSAgICAgIGludCAqbGFzdF9uZWVkc19jb21wYXJpc29uKQorLXsKKy0gIGJhc2ljX2Jsb2Nr IHRoZW5fYmIgPSBpZl9pbmZvLT50aGVuX2JiOworLSAgcnR4X2luc24gKmp1bXAgPSBpZl9pbmZv LT5qdW1wOworLSAgcnR4X2luc24gKmNvbmRfZWFybGllc3Q7CistCistICAvKiBEZWNvbXBvc2Ug dGhlIGNvbmRpdGlvbiBhdHRhY2hlZCB0byB0aGUganVtcC4gICovCistICBydHggY29uZCA9IG5v Y2VfZ2V0X2NvbmRpdGlvbiAoanVtcCwgJmNvbmRfZWFybGllc3QsIGZhbHNlKTsKKy0KKy0gIHJ0 eCBjY19jbXAgPSBjb25kX2V4ZWNfZ2V0X2NvbmRpdGlvbiAoanVtcCk7CistICBydHggcmV2X2Nj X2NtcCA9IGNvbmRfZXhlY19nZXRfY29uZGl0aW9uIChqdW1wLCAvKiBnZXRfcmV2ZXJzZWQgKi8g dHJ1ZSk7CistCistICBydHhfaW5zbiAqaW5zbjsKKyAgIGludCBjb3VudCA9IDA7CisgCistICB0 YXJnZXRzLT50cnVuY2F0ZSAoMCk7CistICB0ZW1wb3Jhcmllcy0+dHJ1bmNhdGUgKDApOworLSAg dW5tb2RpZmllZF9pbnNucy0+dHJ1bmNhdGUgKDApOworLQorLSAgYm9vbCBzZWNvbmRfdHJ5ID0g Kmxhc3RfbmVlZHNfY29tcGFyaXNvbiAhPSAtMTsKKy0KKyAgIEZPUl9CQl9JTlNOUyAodGhlbl9i YiwgaW5zbikKKyAgICAgeworICAgICAgIC8qIFNraXAgb3ZlciBub24taW5zbnMuICAqLworQEAg LTM0MTIsNTMgKzMyMTksMjYgQEAgbm9jZV9jb252ZXJ0X211bHRpcGxlX3NldHNfMSAoc3RydWN0 IG5vY2VfaWZfaW5mbyAqaWZfaW5mbywKKyAgICAgICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChzZXQp OworIAorICAgICAgIHJ0eCB0YXJnZXQgPSBTRVRfREVTVCAoc2V0KTsKKy0gICAgICBydHggdGVt cDsKKy0KKysgICAgICBydHggdGVtcCA9IGdlbl9yZWdfcnR4IChHRVRfTU9ERSAodGFyZ2V0KSk7 CisgICAgICAgcnR4IG5ld192YWwgPSBTRVRfU1JDIChzZXQpOworLSAgICAgIGlmIChpbnQgKmlp ID0gcmV3aXJlZF9zcmMtPmdldCAoaW5zbikpCistCW5ld192YWwgPSBzaW1wbGlmeV9yZXBsYWNl X3J0eCAobmV3X3ZhbCwgKCp0YXJnZXRzKVsqaWldLAorLQkJCQkJKCp0ZW1wb3JhcmllcylbKmlp XSk7CisgICAgICAgcnR4IG9sZF92YWwgPSB0YXJnZXQ7CisgCistICAgICAgLyogQXMgd2UgYXJl IHRyYW5zZm9ybWluZworLQkgaWYgKHggPiB5KQorLQkgICB7CistCSAgICAgYSA9IGI7CistCSAg ICAgYyA9IGQ7CistCSAgIH0KKy0JIGludG8KKy0JICAgYSA9ICh4ID4geSkgLi4uCistCSAgIGMg PSAoeCA+IHkpIC4uLgorLQorLQkgd2UgcG90ZW50aWFsbHkgY2hlY2sgeCA+IHkgYmVmb3JlIGV2 ZXJ5IHNldC4KKy0JIEV2ZW4gdGhvdWdoIHRoZSBjaGVjayBtaWdodCBiZSByZW1vdmVkIGJ5IHN1 YnNlcXVlbnQgcGFzc2VzLCB0aGlzIG1lYW5zCistCSB0aGF0IHdlIGNhbm5vdCB0cmFuc2Zvcm0K Ky0JICAgaWYgKHggPiB5KQorLQkgICAgIHsKKy0JICAgICAgIHggPSB5OworLQkgICAgICAgLi4u CistCSAgICAgfQorLQkgaW50bworLQkgICB4ID0gKHggPiB5KSAuLi4KKy0JICAgLi4uCistCSBz aW5jZSB0aGlzIHdvdWxkIGludmFsaWRhdGUgeCBhbmQgdGhlIGZvbGxvd2luZyB0by1iZS1yZW1v dmVkIGNoZWNrcy4KKy0JIFRoZXJlZm9yZSB3ZSBpbnRyb2R1Y2UgYSB0ZW1wb3JhcnkgZXZlcnkg dGltZSB3ZSBhcmUgYWJvdXQgdG8KKy0JIG92ZXJ3cml0ZSBhIHZhcmlhYmxlIHVzZWQgaW4gdGhl IGNoZWNrLiAgQ29zdGluZyBvZiBhIHNlcXVlbmNlIHdpdGgKKy0JIHRoZXNlIGlzIGdvaW5nIHRv IGJlIGluYWNjdXJhdGUgc28gb25seSB1c2UgdGVtcG9yYXJpZXMgd2hlbgorLQkgbmVlZGVkLgor LQorLQkgSWYgcGVyZm9ybWluZyBhIHNlY29uZCB0cnksIHdlIGtub3cgaG93IG1hbnkgaW5zbnMg cmVxdWlyZSBhCistCSB0ZW1wb3JhcnkuICBGb3IgdGhlIGxhc3Qgb2YgdGhlc2UsIHdlIGNhbiBv bWl0IGNyZWF0aW5nIG9uZS4gICovCistICAgICAgaWYgKHJlZ19vdmVybGFwX21lbnRpb25lZF9w ICh0YXJnZXQsIGNvbmQpCistCSAgJiYgKCFzZWNvbmRfdHJ5IHx8IGNvdW50IDwgKmxhc3RfbmVl ZHNfY29tcGFyaXNvbikpCistCXRlbXAgPSBnZW5fcmVnX3J0eCAoR0VUX01PREUgKHRhcmdldCkp OworLSAgICAgIGVsc2UKKy0JdGVtcCA9IHRhcmdldDsKKy0KKy0gICAgICAvKiBXZSBoYXZlIGlk ZW50aWZpZWQgc3dhcC1zdHlsZSBpZGlvbXMgYmVmb3JlLiAgQSBub3JtYWwKKy0JIHNldCB3aWxs IG5lZWQgdG8gYmUgYSBjbW92IHdoaWxlIHRoZSBmaXJzdCBpbnN0cnVjdGlvbiBvZiBhIHN3YXAt c3R5bGUKKy0JIGlkaW9tIGNhbiBiZSBhIHJlZ3VsYXIgbW92ZS4gIFRoaXMgaGVscHMgd2l0aCBj b3N0aW5nLiAgKi8KKy0gICAgICBib29sIG5lZWRfY21vdiA9ICFuZWVkX25vX2Ntb3YtPmNvbnRh aW5zIChpbnNuKTsKKysgICAgICAvKiBJZiB3ZSB3ZXJlIHN1cHBvc2VkIHRvIHJlYWQgZnJvbSBh biBlYXJsaWVyIHdyaXRlIGluIHRoaXMgYmxvY2ssCisrCSB3ZSd2ZSBjaGFuZ2VkIHRoZSByZWdp c3RlciBhbGxvY2F0aW9uLiAgUmV3aXJlIHRoZSByZWFkLiAgV2hpbGUKKysJIHdlIGFyZSBsb29r aW5nLCBhbHNvIHRyeSB0byBjYXRjaCBhIHN3YXAgaWRpb20uICAqLworKyAgICAgIGZvciAoaW50 IGkgPSBjb3VudCAtIDE7IGkgPj0gMDsgLS1pKQorKwlpZiAocmVnX292ZXJsYXBfbWVudGlvbmVk X3AgKG5ld192YWwsIHRhcmdldHNbaV0pKQorKwkgIHsKKysJICAgIC8qIENhdGNoIGEgInN3YXAi IHN0eWxlIGlkaW9tLiAgKi8KKysJICAgIGlmIChmaW5kX3JlZ19ub3RlIChpbnNuLCBSRUdfREVB RCwgbmV3X3ZhbCkgIT0gTlVMTF9SVFgpCisrCSAgICAgIC8qIFRoZSB3cml0ZSB0byB0YXJnZXRz W2ldIGlzIG9ubHkgbGl2ZSB1bnRpbCB0aGUgcmVhZAorKwkJIGhlcmUuICBBcyB0aGUgY29uZGl0 aW9uIGNvZGVzIG1hdGNoLCB3ZSBjYW4gcHJvcGFnYXRlCisrCQkgdGhlIHNldCB0byBoZXJlLiAg Ki8KKysJICAgICAgbmV3X3ZhbCA9IFNFVF9TUkMgKHNpbmdsZV9zZXQgKHVubW9kaWZpZWRfaW5z bnNbaV0pKTsKKysJICAgIGVsc2UKKysJICAgICAgbmV3X3ZhbCA9IHRlbXBvcmFyaWVzW2ldOwor KwkgICAgYnJlYWs7CisrCSAgfQorIAorICAgICAgIC8qIElmIHdlIGhhZCBhIG5vbi1jYW5vbmlj YWwgY29uZGl0aW9uYWwganVtcCAoaS5lLiBvbmUgd2hlcmUKKyAJIHRoZSBmYWxsdGhyb3VnaCBp cyB0byB0aGUgImVsc2UiIGNhc2UpIHdlIG5lZWQgdG8gcmV2ZXJzZQorQEAgLTM0NzgsOSArMzI1 OCw3IEBAIG5vY2VfY29udmVydF9tdWx0aXBsZV9zZXRzXzEgKHN0cnVjdCBub2NlX2lmX2luZm8g KmlmX2luZm8sCisgCSB3ZSdsbCBlbmQgdXAgdHJ5aW5nIHRvIGVtaXQgcjQ6SEkgPSBjb25kID8g KHIxOlNJKSA6IChyMzpISSkuCisgCSBXcmFwIHRoZSB0d28gY21vdmUgb3BlcmFuZHMgaW50byBz dWJyZWdzIGlmIGFwcHJvcHJpYXRlIHRvIHByZXZlbnQKKyAJIHRoYXQuICAqLworLQorLSAgICAg IGlmICghQ09OU1RBTlRfUCAobmV3X3ZhbCkKKy0JICAmJiBHRVRfTU9ERSAobmV3X3ZhbCkgIT0g R0VUX01PREUgKHRlbXApKQorKyAgICAgIGlmIChHRVRfTU9ERSAobmV3X3ZhbCkgIT0gR0VUX01P REUgKHRlbXApKQorIAl7CisgCSAgbWFjaGluZV9tb2RlIHNyY19tb2RlID0gR0VUX01PREUgKG5l d192YWwpOworIAkgIG1hY2hpbmVfbW9kZSBkc3RfbW9kZSA9IEdFVF9NT0RFICh0ZW1wKTsKK0BA IC0zNDkxLDggKzMyNjksNyBAQCBub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0c18xIChzdHJ1Y3Qg bm9jZV9pZl9pbmZvICppZl9pbmZvLAorIAkgICAgfQorIAkgIG5ld192YWwgPSBsb3dwYXJ0X3N1 YnJlZyAoZHN0X21vZGUsIG5ld192YWwsIHNyY19tb2RlKTsKKyAJfQorLSAgICAgIGlmICghQ09O U1RBTlRfUCAob2xkX3ZhbCkKKy0JICAmJiBHRVRfTU9ERSAob2xkX3ZhbCkgIT0gR0VUX01PREUg KHRlbXApKQorKyAgICAgIGlmIChHRVRfTU9ERSAob2xkX3ZhbCkgIT0gR0VUX01PREUgKHRlbXAp KQorIAl7CisgCSAgbWFjaGluZV9tb2RlIHNyY19tb2RlID0gR0VUX01PREUgKG9sZF92YWwpOwor IAkgIG1hY2hpbmVfbW9kZSBkc3RfbW9kZSA9IEdFVF9NT0RFICh0ZW1wKTsKK0BAIC0zNTA0LDgw ICszMjgxLDEwMSBAQCBub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0c18xIChzdHJ1Y3Qgbm9jZV9p Zl9pbmZvICppZl9pbmZvLAorIAkgIG9sZF92YWwgPSBsb3dwYXJ0X3N1YnJlZyAoZHN0X21vZGUs IG9sZF92YWwsIHNyY19tb2RlKTsKKyAJfQorIAorLSAgICAgIC8qIFRyeSBlbWl0dGluZyBhIGNv bmRpdGlvbmFsIG1vdmUgcGFzc2luZyB0aGUgYmFja2VuZCB0aGUKKy0JIGNhbm9uaWNhbGl6ZWQg Y29tcGFyaXNvbi4gIFRoZSBiYWNrZW5kIGlzIHRoZW4gYWJsZSB0bworLQkgcmVjb2duaXplIGV4 cHJlc3Npb25zIGxpa2UKKy0KKy0JICAgaWYgKHggPiB5KQorLQkgICAgIHkgPSB4OworLQorLQkg YXMgbWluL21heCBhbmQgZW1pdCBhbiBpbnNuLCBhY2NvcmRpbmdseS4gICovCistICAgICAgdW5z aWduZWQgY29zdDEgPSAwLCBjb3N0MiA9IDA7CistICAgICAgcnR4X2luc24gKnNlcSwgKnNlcTEs ICpzZXEyOworLSAgICAgIHJ0eCB0ZW1wX2Rlc3QgPSBOVUxMX1JUWCwgdGVtcF9kZXN0MSA9IE5V TExfUlRYLCB0ZW1wX2Rlc3QyID0gTlVMTF9SVFg7CisrICAgICAgLyogQWN0dWFsbHkgZW1pdCB0 aGUgY29uZGl0aW9uYWwgbW92ZS4gICovCisrICAgICAgcnR4IHRlbXBfZGVzdCA9IG5vY2VfZW1p dF9jbW92ZSAoaWZfaW5mbywgdGVtcCwgY29uZF9jb2RlLAorKwkJCQkgICAgICAgeCwgeSwgbmV3 X3ZhbCwgb2xkX3ZhbCk7CisgCistICAgICAgc2VxMSA9IHRyeV9lbWl0X2Ntb3ZlX3NlcSAoaWZf aW5mbywgdGVtcCwgY29uZCwKKy0JCQkJIG5ld192YWwsIG9sZF92YWwsIG5lZWRfY21vdiwKKy0J CQkJICZjb3N0MSwgJnRlbXBfZGVzdDEpOworLQorLSAgICAgIC8qIEhlcmUsIHdlIHRyeSB0byBw YXNzIHRoZSBiYWNrZW5kIGEgbm9uLWNhbm9uaWNhbGl6ZWQgY2MgY29tcGFyaXNvbgorLQkgYXMg d2VsbC4gIFRoaXMgYWxsb3dzIHRoZSBiYWNrZW5kIHRvIGVtaXQgYSBjbW92IGRpcmVjdGx5IHdp dGhvdXQKKy0JIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgY29tcGFyZSBmb3IgZWFjaC4gIElmIHN1 Y2Nlc3NmdWwsIGNvc3RpbmcKKy0JIGlzIGVhc2llciBhbmQgdGhpcyBzZXF1ZW5jZSBpcyB1c3Vh bGx5IHByZWZlcnJlZC4gICovCistICAgICAgc2VxMiA9IHRyeV9lbWl0X2Ntb3ZlX3NlcSAoaWZf aW5mbywgdGFyZ2V0LCBjb25kLAorLQkJCQkgbmV3X3ZhbCwgb2xkX3ZhbCwgbmVlZF9jbW92LAor LQkJCQkgJmNvc3QyLCAmdGVtcF9kZXN0MiwgY2NfY21wLCByZXZfY2NfY21wKTsKKy0KKy0gICAg ICAvKiBDaGVjayB3aGljaCB2ZXJzaW9uIGlzIGxlc3MgZXhwZW5zaXZlLiAgKi8KKy0gICAgICBp ZiAoc2VxMSAhPSBOVUxMX1JUWCAmJiAoY29zdDEgPD0gY29zdDIgfHwgc2VxMiA9PSBOVUxMX1JU WCkpCistCXsKKy0JICBzZXEgPSBzZXExOworLQkgIHRlbXBfZGVzdCA9IHRlbXBfZGVzdDE7Cist CSAgaWYgKCFzZWNvbmRfdHJ5KQorLQkgICAgKmxhc3RfbmVlZHNfY29tcGFyaXNvbiA9IGNvdW50 OworLQl9CistICAgICAgZWxzZSBpZiAoc2VxMiAhPSBOVUxMX1JUWCkKKy0JeworLQkgIHNlcSA9 IHNlcTI7CistCSAgdGVtcF9kZXN0ID0gdGVtcF9kZXN0MjsKKy0JfQorLSAgICAgIGVsc2UKKysg ICAgICAvKiBJZiB3ZSBmYWlsZWQgdG8gZXhwYW5kIHRoZSBjb25kaXRpb25hbCBtb3ZlLCBkcm9w IG91dCBhbmQgZG9uJ3QKKysJIHRyeSB0byBjb250aW51ZS4gICovCisrICAgICAgaWYgKHRlbXBf ZGVzdCA9PSBOVUxMX1JUWCkKKyAJeworLQkgIC8qIE5vdGhpbmcgd29ya2VkLCBiYWlsIG91dC4g ICovCisgCSAgZW5kX3NlcXVlbmNlICgpOworIAkgIHJldHVybiBGQUxTRTsKKyAJfQorIAorLSAg ICAgIC8qIEVuZCB0aGUgc3ViIHNlcXVlbmNlIGFuZCBlbWl0IHRvIHRoZSBtYWluIHNlcXVlbmNl LiAgKi8KKy0gICAgICBlbWl0X2luc24gKHNlcSk7CistCisgICAgICAgLyogQm9va2tlZXBpbmcu ICAqLworICAgICAgIGNvdW50Kys7CistICAgICAgdGFyZ2V0cy0+c2FmZV9wdXNoICh0YXJnZXQp OworLSAgICAgIHRlbXBvcmFyaWVzLT5zYWZlX3B1c2ggKHRlbXBfZGVzdCk7CistICAgICAgdW5t b2RpZmllZF9pbnNucy0+c2FmZV9wdXNoIChpbnNuKTsKKysgICAgICB0YXJnZXRzLnNhZmVfcHVz aCAodGFyZ2V0KTsKKysgICAgICB0ZW1wb3Jhcmllcy5zYWZlX3B1c2ggKHRlbXBfZGVzdCk7Cisr ICAgICAgdW5tb2RpZmllZF9pbnNucy5zYWZlX3B1c2ggKGluc24pOworICAgICB9CisgCistICBy ZXR1cm4gdHJ1ZTsKKy19CisrICAvKiBXZSBtdXN0IGhhdmUgc2VlbiBzb21lIHNvcnQgb2YgaW5z biB0byBpbnNlcnQsIG90aGVyd2lzZSB3ZSB3ZXJlCisrICAgICBnaXZlbiBhbiBlbXB0eSBCQiB0 byBjb252ZXJ0LCBhbmQgd2UgY2FuJ3QgaGFuZGxlIHRoYXQuICAqLworKyAgZ2NjX2Fzc2VydCAo IXVubW9kaWZpZWRfaW5zbnMuaXNfZW1wdHkgKCkpOworKworKyAgLyogTm93IGZpeHVwIHRoZSBh c3NpZ25tZW50cy4gICovCisrICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisrICAg IG5vY2VfZW1pdF9tb3ZlX2luc24gKHRhcmdldHNbaV0sIHRlbXBvcmFyaWVzW2ldKTsKKysKKysg IC8qIEFjdHVhbGx5IGVtaXQgdGhlIHNlcXVlbmNlIGlmIGl0IGlzbid0IHRvbyBleHBlbnNpdmUu ICAqLworKyAgcnR4X2luc24gKnNlcSA9IGdldF9pbnNucyAoKTsKKysKKysgIGlmICghdGFyZ2V0 bS5ub2NlX2NvbnZlcnNpb25fcHJvZml0YWJsZV9wIChzZXEsIGlmX2luZm8pKQorKyAgICB7Cisr ICAgICAgZW5kX3NlcXVlbmNlICgpOworKyAgICAgIHJldHVybiBGQUxTRTsKKysgICAgfQorKwor KyAgZm9yIChpbnNuID0gc2VxOyBpbnNuOyBpbnNuID0gTkVYVF9JTlNOIChpbnNuKSkKKysgICAg c2V0X3VzZWRfZmxhZ3MgKGluc24pOworKworKyAgLyogTWFyayBhbGwgb3VyIHRlbXBvcmFyaWVz IGFuZCB0YXJnZXRzIGFzIHVzZWQuICAqLworKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsg aSsrKQorKyAgICB7CisrICAgICAgc2V0X3VzZWRfZmxhZ3MgKHRlbXBvcmFyaWVzW2ldKTsKKysg ICAgICBzZXRfdXNlZF9mbGFncyAodGFyZ2V0c1tpXSk7CisrICAgIH0KKyAKKysgIHNldF91c2Vk X2ZsYWdzIChjb25kKTsKKysgIHNldF91c2VkX2ZsYWdzICh4KTsKKysgIHNldF91c2VkX2ZsYWdz ICh5KTsKKyAKKysgIHVuc2hhcmVfYWxsX3J0bF9pbl9jaGFpbiAoc2VxKTsKKysgIGVuZF9zZXF1 ZW5jZSAoKTsKKysKKysgIGlmICghc2VxKQorKyAgICByZXR1cm4gRkFMU0U7CisrCisrICBmb3Ig KGluc24gPSBzZXE7IGluc247IGluc24gPSBORVhUX0lOU04gKGluc24pKQorKyAgICBpZiAoSlVN UF9QIChpbnNuKQorKwl8fCByZWNvZ19tZW1vaXplZCAoaW5zbikgPT0gLTEpCisrICAgICAgcmV0 dXJuIEZBTFNFOworKworKyAgZW1pdF9pbnNuX2JlZm9yZV9zZXRsb2MgKHNlcSwgaWZfaW5mby0+ anVtcCwKKysJCQkgICBJTlNOX0xPQ0FUSU9OICh1bm1vZGlmaWVkX2luc25zLmxhc3QgKCkpKTsK KysKKysgIC8qIENsZWFuIHVwIFRIRU5fQkIgYW5kIHRoZSBlZGdlcyBpbiBhbmQgb3V0IG9mIGl0 LiAgKi8KKysgIHJlbW92ZV9lZGdlIChmaW5kX2VkZ2UgKHRlc3RfYmIsIGpvaW5fYmIpKTsKKysg IHJlbW92ZV9lZGdlIChmaW5kX2VkZ2UgKHRoZW5fYmIsIGpvaW5fYmIpKTsKKysgIHJlZGlyZWN0 X2VkZ2VfYW5kX2JyYW5jaF9mb3JjZSAoc2luZ2xlX3N1Y2NfZWRnZSAodGVzdF9iYiksIGpvaW5f YmIpOworKyAgZGVsZXRlX2Jhc2ljX2Jsb2NrICh0aGVuX2JiKTsKKysgIG51bV90cnVlX2NoYW5n ZXMrKzsKKysKKysgIC8qIE1heWJlIG1lcmdlIGJsb2NrcyBub3cgdGhlIGp1bXAgaXMgc2ltcGxl IGVub3VnaC4gICovCisrICBpZiAoY2FuX21lcmdlX2Jsb2Nrc19wICh0ZXN0X2JiLCBqb2luX2Ji KSkKKysgICAgeworKyAgICAgIG1lcmdlX2Jsb2NrcyAodGVzdF9iYiwgam9pbl9iYik7CisrICAg ICAgbnVtX3RydWVfY2hhbmdlcysrOworKyAgICB9CisrCisrICBudW1fdXBkYXRlZF9pZl9ibG9j a3MrKzsKKysgIGlmX2luZm8tPnRyYW5zZm9ybV9uYW1lID0gIm5vY2VfY29udmVydF9tdWx0aXBs ZV9zZXRzIjsKKysgIHJldHVybiBUUlVFOworK30KKyAKKyAvKiBSZXR1cm4gdHJ1ZSBpZmYgYmFz aWMgYmxvY2sgVEVTVF9CQiBpcyBjb21wcmlzZWQgb2Ygb25seQorICAgIChTRVQgKFJFRykgKFJF RykpIGluc25zIHN1aXRhYmxlIGZvciBjb252ZXJzaW9uIHRvIGEgc2VyaWVzCisgICAgb2YgY29u ZGl0aW9uYWwgbW92ZXMuICBBbHNvIGNoZWNrIHRoYXQgd2UgaGF2ZSBtb3JlIHRoYW4gb25lIHNl dAorICAgIChvdGhlciByb3V0aW5lcyBjYW4gaGFuZGxlIGEgc2luZ2xlIHNldCBiZXR0ZXIgdGhh biB3ZSB3b3VsZCksIGFuZAorLSAgIGZld2VyIHRoYW4gUEFSQU1fTUFYX1JUTF9JRl9DT05WRVJT SU9OX0lOU05TIHNldHMuICBXaGlsZSBnb2luZworLSAgIHRocm91Z2ggdGhlIGluc25zIHN0b3Jl IHRoZSBzdW0gb2YgdGhlaXIgcG90ZW50aWFsIGNvc3RzIGluIENPU1QuICAqLworKyAgIGZld2Vy IHRoYW4gUEFSQU1fTUFYX1JUTF9JRl9DT05WRVJTSU9OX0lOU05TIHNldHMuICAqLworIAorIHN0 YXRpYyBib29sCistYmJfb2tfZm9yX25vY2VfY29udmVydF9tdWx0aXBsZV9zZXRzIChiYXNpY19i bG9jayB0ZXN0X2JiLCB1bnNpZ25lZCAqY29zdCkKKytiYl9va19mb3Jfbm9jZV9jb252ZXJ0X211 bHRpcGxlX3NldHMgKGJhc2ljX2Jsb2NrIHRlc3RfYmIpCisgeworICAgcnR4X2luc24gKmluc247 CisgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICB1bnNpZ25lZCBwYXJhbSA9IHBhcmFtX21heF9y dGxfaWZfY29udmVyc2lvbl9pbnNuczsKKy0gIGJvb2wgc3BlZWRfcCA9IG9wdGltaXplX2JiX2Zv cl9zcGVlZF9wICh0ZXN0X2JiKTsKKy0gIHVuc2lnbmVkIHBvdGVudGlhbF9jb3N0ID0gMDsKKyAK KyAgIEZPUl9CQl9JTlNOUyAodGVzdF9iYiwgaW5zbikKKyAgICAgeworQEAgLTM2MDAsOSArMzM5 OCw5IEBAIGJiX29rX2Zvcl9ub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0cyAoYmFzaWNfYmxvY2sg dGVzdF9iYiwgdW5zaWduZWQgKmNvc3QpCisgICAgICAgaWYgKCFSRUdfUCAoZGVzdCkpCisgCXJl dHVybiBmYWxzZTsKKyAKKy0gICAgICBpZiAoISgoUkVHX1AgKHNyYykgfHwgQ09OU1RBTlRfUCAo c3JjKSkKKy0JICAgIHx8IChHRVRfQ09ERSAoc3JjKSA9PSBTVUJSRUcgJiYgUkVHX1AgKFNVQlJF R19SRUcgKHNyYykpCistCSAgICAgICYmIHN1YnJlZ19sb3dwYXJ0X3AgKHNyYykpKSkKKysgICAg ICBpZiAoIShSRUdfUCAoc3JjKQorKwkgICB8fCAoR0VUX0NPREUgKHNyYykgPT0gU1VCUkVHICYm IFJFR19QIChTVUJSRUdfUkVHIChzcmMpKQorKwkgICAgICAgJiYgc3VicmVnX2xvd3BhcnRfcCAo c3JjKSkpKQorIAlyZXR1cm4gZmFsc2U7CisgCisgICAgICAgLyogRGVzdGluYXRpb24gbXVzdCBi ZSBhcHByb3ByaWF0ZSBmb3IgYSBjb25kaXRpb25hbCB3cml0ZS4gICovCitAQCAtMzYxMywxMyAr MzQxMSw5IEBAIGJiX29rX2Zvcl9ub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0cyAoYmFzaWNfYmxv Y2sgdGVzdF9iYiwgdW5zaWduZWQgKmNvc3QpCisgICAgICAgaWYgKCFjYW5fY29uZGl0aW9uYWxs eV9tb3ZlX3AgKEdFVF9NT0RFIChkZXN0KSkpCisgCXJldHVybiBmYWxzZTsKKyAKKy0gICAgICBw b3RlbnRpYWxfY29zdCArPSBpbnNuX2Nvc3QgKGluc24sIHNwZWVkX3ApOworLQorICAgICAgIGNv dW50Kys7CisgICAgIH0KKyAKKy0gICpjb3N0ICs9IHBvdGVudGlhbF9jb3N0OworLQorICAgLyog SWYgd2Ugd291bGQgb25seSBwdXQgb3V0IG9uZSBjb25kaXRpb25hbCBtb3ZlLCB0aGUgb3RoZXIg c3RyYXRlZ2llcworICAgICAgdGhpcyBwYXNzIHRyaWVzIGFyZSBiZXR0ZXIgb3B0aW1pemVkIGFu ZCB3aWxsIGJlIG1vcmUgYXBwcm9wcmlhdGUuCisgICAgICBTb21lIHRhcmdldHMgd2FudCB0byBz dHJpY3RseSBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbmRpdGlvbmFsIG1vdmVzCitAQCAtMzY2Nywy NCArMzQ2MSwxMSBAQCBub2NlX3Byb2Nlc3NfaWZfYmxvY2sgKHN0cnVjdCBub2NlX2lmX2luZm8g KmlmX2luZm8pCisgICAgICB0byBjYWxjdWxhdGUgYSB2YWx1ZSBmb3IgeC4KKyAgICAgID8/PyBG b3IgZnV0dXJlIGV4cGFuc2lvbiwgZnVydGhlciBleHBhbmQgdGhlICJtdWx0aXBsZSBYIiBydWxl cy4gICovCisgCistICAvKiBGaXJzdCBsb29rIGZvciBtdWx0aXBsZSBTRVRTLiAgVGhlIG9yaWdp bmFsIGNvc3RzIGFscmVhZHkgaW5jbHVkZQorLSAgICAgYSBiYXNlIGNvc3Qgb2YgQ09TVFNfTl9J TlNOUyAoMik6IG9uZSBpbnN0cnVjdGlvbiBmb3IgdGhlIGNvbXBhcmUKKy0gICAgICh3aGljaCB3 ZSB3aWxsIGJlIG5lZWRpbmcgZWl0aGVyIHdheSkgYW5kIG9uZSBpbnN0cnVjdGlvbiBmb3IgdGhl CistICAgICBicmFuY2guICBXaGVuIGNvbXBhcmluZyBjb3N0cyB3ZSB3YW50IHRvIHVzZSB0aGUg YnJhbmNoIGluc3RydWN0aW9uCistICAgICBjb3N0IGFuZCB0aGUgc2V0cyB2cy4gdGhlIGNtb3Zz IGdlbmVyYXRlZCBoZXJlLiAgVGhlcmVmb3JlIHN1YnRyYWN0CistICAgICB0aGUgY29zdHMgb2Yg dGhlIGNvbXBhcmUgYmVmb3JlIGNoZWNraW5nLgorLSAgICAgPz8/IEFjdHVhbGx5LCBpbnN0ZWFk IG9mIHRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24gY29zdHMgd2UgbWlnaHQgd2FudAorLSAgICAgdG8g dXNlIENPU1RTX05fSU5TTlMgKEJSQU5DSF9DT1NUICgpKSBhcyBpbiBvdGhlciBwbGFjZXMuICAq LworLQorLSAgdW5zaWduZWQgcG90ZW50aWFsX2Nvc3QgPSBpZl9pbmZvLT5vcmlnaW5hbF9jb3N0 IC0gQ09TVFNfTl9JTlNOUyAoMSk7CistICB1bnNpZ25lZCBvbGRfY29zdCA9IGlmX2luZm8tPm9y aWdpbmFsX2Nvc3Q7CisrICAvKiBGaXJzdCBsb29rIGZvciBtdWx0aXBsZSBTRVRTLiAgKi8KKyAg IGlmICghZWxzZV9iYgorICAgICAgICYmIEhBVkVfY29uZGl0aW9uYWxfbW92ZQorLSAgICAgICYm IGJiX29rX2Zvcl9ub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0cyAodGhlbl9iYiwgJnBvdGVudGlh bF9jb3N0KSkKKysgICAgICAmJiBiYl9va19mb3Jfbm9jZV9jb252ZXJ0X211bHRpcGxlX3NldHMg KHRoZW5fYmIpKQorICAgICB7CistICAgICAgLyogVGVtcG9yYXJpbHkgc2V0IHRoZSBvcmlnaW5h bCBjb3N0cyB0byB3aGF0IHdlIGVzdGltYXRlZCBzbworLQkgd2UgY2FuIGRldGVybWluZSBpZiB0 aGUgdHJhbnNmb3JtYXRpb24gaXMgd29ydGggaXQuICAqLworLSAgICAgIGlmX2luZm8tPm9yaWdp bmFsX2Nvc3QgPSBwb3RlbnRpYWxfY29zdDsKKyAgICAgICBpZiAobm9jZV9jb252ZXJ0X211bHRp cGxlX3NldHMgKGlmX2luZm8pKQorIAl7CisgCSAgaWYgKGR1bXBfZmlsZSAmJiBpZl9pbmZvLT50 cmFuc2Zvcm1fbmFtZSkKK0BAIC0zNjkyLDkgKzM0NzMsNiBAQCBub2NlX3Byb2Nlc3NfaWZfYmxv Y2sgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2luZm8pCisgCQkgICAgIGlmX2luZm8tPnRyYW5z Zm9ybV9uYW1lKTsKKyAJICByZXR1cm4gVFJVRTsKKyAJfQorLQorLSAgICAgIC8qIFJlc3RvcmUg dGhlIG9yaWdpbmFsIGNvc3RzLiAgKi8KKy0gICAgICBpZl9pbmZvLT5vcmlnaW5hbF9jb3N0ID0g b2xkX2Nvc3Q7CisgICAgIH0KKyAKKyAgIGJvb2wgc3BlZWRfcCA9IG9wdGltaXplX2JiX2Zvcl9z cGVlZF9wICh0ZXN0X2JiKTsKK0BAIC00MDM2LDg5ICszODE0LDYgQEAgY2hlY2tfY29uZF9tb3Zl X2Jsb2NrIChiYXNpY19ibG9jayBiYiwKKyAgIHJldHVybiBUUlVFOworIH0KKyAKKy0vKiBGaW5k IGxvY2FsIHN3YXAtc3R5bGUgaWRpb21zIGluIEJCIGFuZCBtYXJrIHRoZSBmaXJzdCBpbnNuICgx KQorLSAgIHRoYXQgaXMgb25seSBhIHRlbXBvcmFyeSBhcyBub3QgbmVlZGluZyBhIGNvbmRpdGlv bmFsIG1vdmUgYXMKKy0gICBpdCBpcyBnb2luZyB0byBiZSBkZWFkIGFmdGVyd2FyZHMgYW55d2F5 LgorLQorLSAgICAgKDEpIGludCB0bXAgPSBhOworLQkgYSA9IGI7CistCSBiID0gdG1wOworLQor LQkgaWZjdnQKKy0JIC0tPgorLQorLQkgdG1wID0gYTsKKy0JIGEgPSBjb25kID8gYiA6IGFfb2xk OworLQkgYiA9IGNvbmQgPyB0bXAgOiBiX29sZDsKKy0KKy0gICAgQWRkaXRpb25hbGx5LCBzdG9y ZSB0aGUgaW5kZXggb2YgaW5zbnMgbGlrZSAoMikgd2hlbiBhIHN1YnNlcXVlbnQKKy0gICAgU0VU IHJlYWRzIGZyb20gdGhlaXIgZGVzdGluYXRpb24uCistCistICAgICgyKSBpbnQgYyA9IGE7Cist CWludCBkID0gYzsKKy0KKy0JaWZjdnQKKy0JLS0+CistCistCWMgPSBjb25kID8gYSA6IGNfb2xk OworLQlkID0gY29uZCA/IGQgOiBjOyAgICAgLy8gTmVlZCB0byB1c2UgYyByYXRoZXIgdGhhbiBj X29sZCBoZXJlLgorLSovCistCistc3RhdGljIHZvaWQKKy1uZWVkX2Ntb3Zfb3JfcmV3aXJlIChi YXNpY19ibG9jayBiYiwKKy0JCSAgICAgaGFzaF9zZXQ8cnR4X2luc24gKj4gKm5lZWRfbm9fY21v diwKKy0JCSAgICAgaGFzaF9tYXA8cnR4X2luc24gKiwgaW50PiAqcmV3aXJlZF9zcmMpCistewor LSAgcnR4X2luc24gKmluc247CistICBpbnQgY291bnQgPSAwOworLSAgYXV0b192ZWM8cnR4X2lu c24gKj4gaW5zbnM7CistICBhdXRvX3ZlYzxydHg+IGRlc3RzOworLQorLSAgLyogSXRlcmF0ZSBv dmVyIGFsbCBTRVRzLCBzdG9yaW5nIHRoZSBkZXN0aW5hdGlvbnMKKy0gICAgIGluIERFU1QuCist ICAgICAtIElmIHdlIGhpdCBhIFNFVCB0aGF0IHJlYWRzIGZyb20gYSBkZXN0aW5hdGlvbgorLSAg ICAgICB0aGF0IHdlIGhhdmUgc2VlbiBiZWZvcmUgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lz dGVyCistICAgICAgIGlzIGRlYWQgYWZ0ZXJ3YXJkcywgdGhlIHJlZ2lzdGVyIGRvZXMgbm90IG5l ZWQgdG8gYmUKKy0gICAgICAgbW92ZWQgY29uZGl0aW9uYWxseS4KKy0gICAgIC0gSWYgd2UgZW5j b3VudGVyIGEgcHJldmlvdXNseSBjaGFuZ2VkIHJlZ2lzdGVyLAorLSAgICAgICByZXdpcmUgdGhl IHJlYWQgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZS4gICovCistICBGT1JfQkJfSU5TTlMgKGJiLCBp bnNuKQorLSAgICB7CistICAgICAgcnR4IHNldCwgc3JjLCBkZXN0OworLQorLSAgICAgIGlmICgh YWN0aXZlX2luc25fcCAoaW5zbikpCistCWNvbnRpbnVlOworLQorLSAgICAgIHNldCA9IHNpbmds ZV9zZXQgKGluc24pOworLSAgICAgIGlmIChzZXQgPT0gTlVMTF9SVFgpCistCWNvbnRpbnVlOwor LQorLSAgICAgIHNyYyA9IFNFVF9TUkMgKHNldCk7CistICAgICAgaWYgKFNVQlJFR19QIChzcmMp KQorLQlzcmMgPSBTVUJSRUdfUkVHIChzcmMpOworLSAgICAgIGRlc3QgPSBTRVRfREVTVCAoc2V0 KTsKKy0KKy0gICAgICAvKiBDaGVjayBpZiB0aGUgY3VycmVudCBTRVQncyBzb3VyY2UgaXMgdGhl IHNhbWUKKy0JIGFzIGFueSBwcmV2aW91c2x5IHNlZW4gZGVzdGluYXRpb24uCistCSBUaGlzIGlz IHF1YWRyYXRpYyBidXQgdGhlIG51bWJlciBvZiBpbnNucyBpbiBCQgorLQkgaXMgYm91bmRlZCBi eSBQQVJBTV9NQVhfUlRMX0lGX0NPTlZFUlNJT05fSU5TTlMuICAqLworLSAgICAgIGlmIChSRUdf UCAoc3JjKSkKKy0JZm9yIChpbnQgaSA9IGNvdW50IC0gMTsgaSA+PSAwOyAtLWkpCistCSAgaWYg KHJlZ19vdmVybGFwX21lbnRpb25lZF9wIChzcmMsIGRlc3RzW2ldKSkKKy0JICAgIHsKKy0JICAg ICAgaWYgKGZpbmRfcmVnX25vdGUgKGluc24sIFJFR19ERUFELCBzcmMpICE9IE5VTExfUlRYKQor LQkJbmVlZF9ub19jbW92LT5hZGQgKGluc25zW2ldKTsKKy0JICAgICAgZWxzZQorLQkJcmV3aXJl ZF9zcmMtPnB1dCAoaW5zbiwgaSk7CistCSAgICB9CistCistICAgICAgaW5zbnMuc2FmZV9wdXNo IChpbnNuKTsKKy0gICAgICBkZXN0cy5zYWZlX3B1c2ggKGRlc3QpOworLQorLSAgICAgIGNvdW50 Kys7CistICAgIH0KKy19CistCisgLyogR2l2ZW4gYSBiYXNpYyBibG9jayBCQiBzdWl0YWJsZSBm b3IgY29uZGl0aW9uYWwgbW92ZSBjb252ZXJzaW9uLAorICAgIGEgY29uZGl0aW9uIENPTkQsIGFu ZCBwb2ludGVyIG1hcHMgVEhFTl9WQUxTIGFuZCBFTFNFX1ZBTFMgY29udGFpbmluZworICAgIHRo ZSByZWdpc3RlciB2YWx1ZXMgZGVwZW5kaW5nIG9uIENPTkQsIGVtaXQgdGhlIGluc25zIGluIHRo ZSBibG9jayBhcworLS0tIGdjYy9vcHRhYnMuY2MKKysrKyBnY2Mvb3B0YWJzLmNjCitAQCAtNTIs OCArNTIsNiBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2Zsb2F0X2xpYl9jbXAgKHJ0eCwgcnR4LCBl bnVtIHJ0eF9jb2RlLCBydHggKiwKKyBzdGF0aWMgcnR4IGV4cGFuZF91bm9wX2RpcmVjdCAobWFj aGluZV9tb2RlLCBvcHRhYiwgcnR4LCBydHgsIGludCk7Cisgc3RhdGljIHZvaWQgZW1pdF9saWJj YWxsX2Jsb2NrXzEgKHJ0eF9pbnNuICosIHJ0eCwgcnR4LCBydHgsIGJvb2wpOworIAorLXN0YXRp YyBydHggZW1pdF9jb25kaXRpb25hbF9tb3ZlXzEgKHJ0eCwgcnR4LCBydHgsIHJ0eCwgbWFjaGlu ZV9tb2RlKTsKKy0KKyAvKiBEZWJ1ZyBmYWNpbGl0eSBmb3IgdXNlIGluIEdEQi4gICovCisgdm9p ZCBkZWJ1Z19vcHRhYl9saWJmdW5jcyAodm9pZCk7CisgDAorQEAgLTYyNiwxMyArNjI0LDEyIEBA IGV4cGFuZF9kb3VibGV3b3JkX3NoaWZ0X2NvbmRtb3ZlIChzY2FsYXJfaW50X21vZGUgb3AxX21v ZGUsIG9wdGFiIGJpbm9wdGFiLAorIAorICAgLyogU2VsZWN0IGJldHdlZW4gdGhlbS4gIERvIHRo ZSBJTlRPIGhhbGYgZmlyc3QgYmVjYXVzZSBJTlRPX1NVUEVSV09SRAorICAgICAgbWlnaHQgYmUg dGhlIGN1cnJlbnQgdmFsdWUgb2YgT1VUT0ZfVEFSR0VULiAgKi8KKy0gIGlmICghZW1pdF9jb25k aXRpb25hbF9tb3ZlIChpbnRvX3RhcmdldCwgeyBjbXBfY29kZSwgY21wMSwgY21wMiwgb3AxX21v ZGUgfSwKKysgIGlmICghZW1pdF9jb25kaXRpb25hbF9tb3ZlIChpbnRvX3RhcmdldCwgY21wX2Nv ZGUsIGNtcDEsIGNtcDIsIG9wMV9tb2RlLAorIAkJCSAgICAgIGludG9fdGFyZ2V0LCBpbnRvX3N1 cGVyd29yZCwgd29yZF9tb2RlLCBmYWxzZSkpCisgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgIGlm IChvdXRvZl90YXJnZXQgIT0gMCkKKy0gICAgaWYgKCFlbWl0X2NvbmRpdGlvbmFsX21vdmUgKG91 dG9mX3RhcmdldCwKKy0JCQkJeyBjbXBfY29kZSwgY21wMSwgY21wMiwgb3AxX21vZGUgfSwKKysg ICAgaWYgKCFlbWl0X2NvbmRpdGlvbmFsX21vdmUgKG91dG9mX3RhcmdldCwgY21wX2NvZGUsIGNt cDEsIGNtcDIsIG9wMV9tb2RlLAorIAkJCQlvdXRvZl90YXJnZXQsIG91dG9mX3N1cGVyd29yZCwK KyAJCQkJd29yZF9tb2RlLCBmYWxzZSkpCisgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTQ4NTQs OCArNDg1MSw4IEBAIGVtaXRfaW5kaXJlY3RfanVtcCAocnR4IGxvYykKKyAgICBpcyBub3Qgc3Vw cG9ydGVkLiAgKi8KKyAKKyBydHgKKy1lbWl0X2NvbmRpdGlvbmFsX21vdmUgKHJ0eCB0YXJnZXQs IHN0cnVjdCBydHhfY29tcGFyaXNvbiBjb21wLAorLQkJICAgICAgIHJ0eCBvcDIsIHJ0eCBvcDMs CisrZW1pdF9jb25kaXRpb25hbF9tb3ZlIChydHggdGFyZ2V0LCBlbnVtIHJ0eF9jb2RlIGNvZGUs IHJ0eCBvcDAsIHJ0eCBvcDEsCisrCQkgICAgICAgbWFjaGluZV9tb2RlIGNtb2RlLCBydHggb3Ay LCBydHggb3AzLAorIAkJICAgICAgIG1hY2hpbmVfbW9kZSBtb2RlLCBpbnQgdW5zaWduZWRwKQor IHsKKyAgIHJ0eCBjb21wYXJpc29uOworQEAgLTQ4NzcsMzMgKzQ4NzQsMzEgQEAgZW1pdF9jb25k aXRpb25hbF9tb3ZlIChydHggdGFyZ2V0LCBzdHJ1Y3QgcnR4X2NvbXBhcmlzb24gY29tcCwKKyAg IC8qIElmIG9uZSBvcGVyYW5kIGlzIGNvbnN0YW50LCBtYWtlIGl0IHRoZSBzZWNvbmQgb25lLiAg T25seSBkbyB0aGlzCisgICAgICBpZiB0aGUgb3RoZXIgb3BlcmFuZCBpcyBub3QgY29uc3RhbnQg YXMgd2VsbC4gICovCisgCistICBpZiAoc3dhcF9jb21tdXRhdGl2ZV9vcGVyYW5kc19wIChjb21w Lm9wMCwgY29tcC5vcDEpKQorKyAgaWYgKHN3YXBfY29tbXV0YXRpdmVfb3BlcmFuZHNfcCAob3Aw LCBvcDEpKQorICAgICB7CistICAgICAgc3RkOjpzd2FwIChjb21wLm9wMCwgY29tcC5vcDEpOwor LSAgICAgIGNvbXAuY29kZSA9IHN3YXBfY29uZGl0aW9uIChjb21wLmNvZGUpOworKyAgICAgIHN0 ZDo6c3dhcCAob3AwLCBvcDEpOworKyAgICAgIGNvZGUgPSBzd2FwX2NvbmRpdGlvbiAoY29kZSk7 CisgICAgIH0KKyAKKyAgIC8qIGdldF9jb25kaXRpb24gd2lsbCBwcmVmZXIgdG8gZ2VuZXJhdGUg TFQgYW5kIEdUIGV2ZW4gaWYgdGhlIG9sZAorICAgICAgY29tcGFyaXNvbiB3YXMgYWdhaW5zdCB6 ZXJvLCBzbyB1bmRvIHRoYXQgY2Fub25pY2FsaXphdGlvbiBoZXJlIHNpbmNlCisgICAgICBjb21w YXJpc29ucyBhZ2FpbnN0IHplcm8gYXJlIGNoZWFwZXIuICAqLworKyAgaWYgKGNvZGUgPT0gTFQg JiYgb3AxID09IGNvbnN0MV9ydHgpCisrICAgIGNvZGUgPSBMRSwgb3AxID0gY29uc3QwX3J0eDsK KysgIGVsc2UgaWYgKGNvZGUgPT0gR1QgJiYgb3AxID09IGNvbnN0bTFfcnR4KQorKyAgICBjb2Rl ID0gR0UsIG9wMSA9IGNvbnN0MF9ydHg7CisgCistICBpZiAoY29tcC5jb2RlID09IExUICYmIGNv bXAub3AxID09IGNvbnN0MV9ydHgpCistICAgIGNvbXAuY29kZSA9IExFLCBjb21wLm9wMSA9IGNv bnN0MF9ydHg7CistICBlbHNlIGlmIChjb21wLmNvZGUgPT0gR1QgJiYgY29tcC5vcDEgPT0gY29u c3RtMV9ydHgpCistICAgIGNvbXAuY29kZSA9IEdFLCBjb21wLm9wMSA9IGNvbnN0MF9ydHg7Cist CistICBpZiAoY29tcC5tb2RlID09IFZPSURtb2RlKQorLSAgICBjb21wLm1vZGUgPSBHRVRfTU9E RSAoY29tcC5vcDApOworKyAgaWYgKGNtb2RlID09IFZPSURtb2RlKQorKyAgICBjbW9kZSA9IEdF VF9NT0RFIChvcDApOworIAorLSAgZW51bSBydHhfY29kZSBvcmlnX2NvZGUgPSBjb21wLmNvZGU7 CisrICBlbnVtIHJ0eF9jb2RlIG9yaWdfY29kZSA9IGNvZGU7CisgICBib29sIHN3YXBwZWQgPSBm YWxzZTsKKyAgIGlmIChzd2FwX2NvbW11dGF0aXZlX29wZXJhbmRzX3AgKG9wMiwgb3AzKQorLSAg ICAgICYmICgocmV2ZXJzZWQgPQorLQkgICByZXZlcnNlZF9jb21wYXJpc29uX2NvZGVfcGFydHMg KGNvbXAuY29kZSwgY29tcC5vcDAsIGNvbXAub3AxLCBOVUxMKSkKKy0JICAhPSBVTktOT1dOKSkK KysgICAgICAmJiAoKHJldmVyc2VkID0gcmV2ZXJzZWRfY29tcGFyaXNvbl9jb2RlX3BhcnRzIChj b2RlLCBvcDAsIG9wMSwgTlVMTCkpCisrICAgICAgICAgICE9IFVOS05PV04pKQorICAgICB7Cisg ICAgICAgc3RkOjpzd2FwIChvcDIsIG9wMyk7CistICAgICAgY29tcC5jb2RlID0gcmV2ZXJzZWQ7 CisrICAgICAgY29kZSA9IHJldmVyc2VkOworICAgICAgIHN3YXBwZWQgPSB0cnVlOworICAgICB9 CisgCitAQCAtNDkyMCwxMCArNDkxNSw4IEBAIGVtaXRfY29uZGl0aW9uYWxfbW92ZSAocnR4IHRh cmdldCwgc3RydWN0IHJ0eF9jb21wYXJpc29uIGNvbXAsCisgCisgICBmb3IgKGludCBwYXNzID0g MDsgOyBwYXNzKyspCisgICAgIHsKKy0gICAgICBjb21wLmNvZGUgPSB1bnNpZ25lZHAgPyB1bnNp Z25lZF9jb25kaXRpb24gKGNvbXAuY29kZSkgOiBjb21wLmNvZGU7CistICAgICAgY29tcGFyaXNv biA9CistCXNpbXBsaWZ5X2dlbl9yZWxhdGlvbmFsIChjb21wLmNvZGUsIFZPSURtb2RlLAorLQkJ CQkgY29tcC5tb2RlLCBjb21wLm9wMCwgY29tcC5vcDEpOworKyAgICAgIGNvZGUgPSB1bnNpZ25l ZHAgPyB1bnNpZ25lZF9jb25kaXRpb24gKGNvZGUpIDogY29kZTsKKysgICAgICBjb21wYXJpc29u ID0gc2ltcGxpZnlfZ2VuX3JlbGF0aW9uYWwgKGNvZGUsIFZPSURtb2RlLCBjbW9kZSwgb3AwLCBv cDEpOworIAorICAgICAgIC8qIFdlIGNhbiBnZXQgY29uc3QwX3J0eCBvciBjb25zdF90cnVlX3J0 eCBpbiBzb21lIGNpcmN1bXN0YW5jZXMuICBKdXN0CisgCSBwdW50IGFuZCBsZXQgdGhlIGNhbGxl ciBmaWd1cmUgb3V0IGhvdyBiZXN0IHRvIGRlYWwgd2l0aCB0aGlzCitAQCAtNDkzNCwxNiArNDky NywyNCBAQCBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHJ0eCB0YXJnZXQsIHN0cnVjdCBydHhfY29t cGFyaXNvbiBjb21wLAorIAkgIHNhdmVfcGVuZGluZ19zdGFja19hZGp1c3QgKCZzYXZlKTsKKyAJ ICBsYXN0ID0gZ2V0X2xhc3RfaW5zbiAoKTsKKyAJICBkb19wZW5kaW5nX3N0YWNrX2FkanVzdCAo KTsKKy0JICBtYWNoaW5lX21vZGUgY21wbW9kZSA9IGNvbXAubW9kZTsKKysJICBtYWNoaW5lX21v ZGUgY21wbW9kZSA9IGNtb2RlOworIAkgIHByZXBhcmVfY21wX2luc24gKFhFWFAgKGNvbXBhcmlz b24sIDApLCBYRVhQIChjb21wYXJpc29uLCAxKSwKKyAJCQkgICAgR0VUX0NPREUgKGNvbXBhcmlz b24pLCBOVUxMX1JUWCwgdW5zaWduZWRwLAorIAkJCSAgICBPUFRBQl9XSURFTiwgJmNvbXBhcmlz b24sICZjbXBtb2RlKTsKKyAJICBpZiAoY29tcGFyaXNvbikKKyAJICAgIHsKKy0JICAgICAgIHJ0 eCByZXMgPSBlbWl0X2NvbmRpdGlvbmFsX21vdmVfMSAodGFyZ2V0LCBjb21wYXJpc29uLAorLQkJ CQkJCSAgb3AyLCBvcDMsIG1vZGUpOworLQkgICAgICAgaWYgKHJlcyAhPSBOVUxMX1JUWCkKKy0J CSByZXR1cm4gcmVzOworKwkgICAgICBjbGFzcyBleHBhbmRfb3BlcmFuZCBvcHNbNF07CisrCisr CSAgICAgIGNyZWF0ZV9vdXRwdXRfb3BlcmFuZCAoJm9wc1swXSwgdGFyZ2V0LCBtb2RlKTsKKysJ ICAgICAgY3JlYXRlX2ZpeGVkX29wZXJhbmQgKCZvcHNbMV0sIGNvbXBhcmlzb24pOworKwkgICAg ICBjcmVhdGVfaW5wdXRfb3BlcmFuZCAoJm9wc1syXSwgb3AyLCBtb2RlKTsKKysJICAgICAgY3Jl YXRlX2lucHV0X29wZXJhbmQgKCZvcHNbM10sIG9wMywgbW9kZSk7CisrCSAgICAgIGlmIChtYXli ZV9leHBhbmRfaW5zbiAoaWNvZGUsIDQsIG9wcykpCisrCQl7CisrCQkgIGlmIChvcHNbMF0udmFs dWUgIT0gdGFyZ2V0KQorKwkJICAgIGNvbnZlcnRfbW92ZSAodGFyZ2V0LCBvcHNbMF0udmFsdWUs IGZhbHNlKTsKKysJCSAgcmV0dXJuIHRhcmdldDsKKysJCX0KKyAJICAgIH0KKyAJICBkZWxldGVf aW5zbnNfc2luY2UgKGxhc3QpOworIAkgIHJlc3RvcmVfcGVuZGluZ19zdGFja19hZGp1c3QgKCZz YXZlKTsKK0BAIC00OTU1LDg4ICs0OTU2LDE3IEBAIGVtaXRfY29uZGl0aW9uYWxfbW92ZSAocnR4 IHRhcmdldCwgc3RydWN0IHJ0eF9jb21wYXJpc29uIGNvbXAsCisgICAgICAgLyogSWYgdGhlIHBy ZWZlcnJlZCBvcDIvb3AzIG9yZGVyIGlzIG5vdCB1c2FibGUsIHJldHJ5IHdpdGggb3RoZXIKKyAJ IG9wZXJhbmQgb3JkZXIsIHBlcmhhcHMgaXQgd2lsbCBleHBhbmQgc3VjY2Vzc2Z1bGx5LiAgKi8K KyAgICAgICBpZiAoc3dhcHBlZCkKKy0JY29tcC5jb2RlID0gb3JpZ19jb2RlOworLSAgICAgIGVs c2UgaWYgKChyZXZlcnNlZCA9CistCQlyZXZlcnNlZF9jb21wYXJpc29uX2NvZGVfcGFydHMgKG9y aWdfY29kZSwgY29tcC5vcDAsIGNvbXAub3AxLAorKwljb2RlID0gb3JpZ19jb2RlOworKyAgICAg IGVsc2UgaWYgKChyZXZlcnNlZCA9IHJldmVyc2VkX2NvbXBhcmlzb25fY29kZV9wYXJ0cyAob3Jp Z19jb2RlLCBvcDAsIG9wMSwKKyAJCQkJCQkJICAgTlVMTCkpCisgCSAgICAgICAhPSBVTktOT1dO KQorLQljb21wLmNvZGUgPSByZXZlcnNlZDsKKysJY29kZSA9IHJldmVyc2VkOworICAgICAgIGVs c2UKKyAJcmV0dXJuIE5VTExfUlRYOworICAgICAgIHN0ZDo6c3dhcCAob3AyLCBvcDMpOworICAg ICB9CisgfQorIAorLS8qIEhlbHBlciBmdW5jdGlvbiB0aGF0LCBpbiBhZGRpdGlvbiB0byBDT01Q QVJJU09OLCBhbHNvIHRyaWVzCistICAgdGhlIHJldmVyc2VkIFJFVl9DT01QQVJJU09OIHdpdGgg c3dhcHBlZCBPUDIgYW5kIE9QMy4gIEFzIG9wcG9zZWQKKy0gICB0byB3aGVuIHdlIHBhc3MgdGhl IHNwZWNpZmljIGNvbnN0aXR1ZW50cyBvZiBhIGNvbXBhcmlzb24sIG5vCistICAgYWRkaXRpb25h bCBpbnNucyBhcmUgZW1pdHRlZCBmb3IgaXQuICBJdCBtaWdodCBzdGlsbCBiZSBuZWNlc3NhcnkK Ky0gICB0byBlbWl0IG1vcmUgdGhhbiBvbmUgaW5zbiBmb3IgdGhlIGZpbmFsIGNvbmRpdGlvbmFs IG1vdmUsIHRob3VnaC4gICovCistCistcnR4CistZW1pdF9jb25kaXRpb25hbF9tb3ZlIChydHgg dGFyZ2V0LCBydHggY29tcGFyaXNvbiwgcnR4IHJldl9jb21wYXJpc29uLAorLQkJICAgICAgIHJ0 eCBvcDIsIHJ0eCBvcDMsIG1hY2hpbmVfbW9kZSBtb2RlKQorLXsKKy0gIHJ0eCByZXMgPSBlbWl0 X2NvbmRpdGlvbmFsX21vdmVfMSAodGFyZ2V0LCBjb21wYXJpc29uLCBvcDIsIG9wMywgbW9kZSk7 CistCistICBpZiAocmVzICE9IE5VTExfUlRYKQorLSAgICByZXR1cm4gcmVzOworLQorLSAgcmV0 dXJuIGVtaXRfY29uZGl0aW9uYWxfbW92ZV8xICh0YXJnZXQsIHJldl9jb21wYXJpc29uLCBvcDMs IG9wMiwgbW9kZSk7CistfQorLQorLS8qIEhlbHBlciBmb3IgZW1pdHRpbmcgYSBjb25kaXRpb25h bCBtb3ZlLiAgKi8KKy0KKy1zdGF0aWMgcnR4CistZW1pdF9jb25kaXRpb25hbF9tb3ZlXzEgKHJ0 eCB0YXJnZXQsIHJ0eCBjb21wYXJpc29uLAorLQkJCSBydHggb3AyLCBydHggb3AzLCBtYWNoaW5l X21vZGUgbW9kZSkKKy17CistICBlbnVtIGluc25fY29kZSBpY29kZTsKKy0KKy0gIGlmIChjb21w YXJpc29uID09IE5VTExfUlRYIHx8ICFDT01QQVJJU09OX1AgKGNvbXBhcmlzb24pKQorLSAgICBy ZXR1cm4gTlVMTF9SVFg7CistCistICAvKiBJZiB0aGUgdHdvIHNvdXJjZSBvcGVyYW5kcyBhcmUg aWRlbnRpY2FsLCB0aGF0J3MganVzdCBhIG1vdmUuCistICAgICBBcyB0aGUgY29tcGFyaXNvbiBj b21lcyBpbiBub24tY2Fub25pY2FsaXplZCwgd2UgbXVzdCBtYWtlCistICAgICBzdXJlIG5vdCB0 byBkaXNjYXJkIGFueSBwb3NzaWJsZSBzaWRlIGVmZmVjdHMuICBJZiB0aGVyZSBhcmUKKy0gICAg IHNpZGUgZWZmZWN0cywganVzdCBsZXQgdGhlIHRhcmdldCBoYW5kbGUgaXQuICAqLworLSAgaWYg KCFzaWRlX2VmZmVjdHNfcCAoY29tcGFyaXNvbikgJiYgcnR4X2VxdWFsX3AgKG9wMiwgb3AzKSkK Ky0gICAgeworLSAgICAgIGlmICghdGFyZ2V0KQorLQl0YXJnZXQgPSBnZW5fcmVnX3J0eCAobW9k ZSk7CistCistICAgICAgZW1pdF9tb3ZlX2luc24gKHRhcmdldCwgb3AzKTsKKy0gICAgICByZXR1 cm4gdGFyZ2V0OworLSAgICB9CistCistICBpZiAobW9kZSA9PSBWT0lEbW9kZSkKKy0gICAgbW9k ZSA9IEdFVF9NT0RFIChvcDIpOworLQorLSAgaWNvZGUgPSBkaXJlY3Rfb3B0YWJfaGFuZGxlciAo bW92Y2Nfb3B0YWIsIG1vZGUpOworLQorLSAgaWYgKGljb2RlID09IENPREVfRk9SX25vdGhpbmcp CistICAgIHJldHVybiBOVUxMX1JUWDsKKy0KKy0gIGlmICghdGFyZ2V0KQorLSAgICB0YXJnZXQg PSBnZW5fcmVnX3J0eCAobW9kZSk7CistCistICBjbGFzcyBleHBhbmRfb3BlcmFuZCBvcHNbNF07 CistCistICBjcmVhdGVfb3V0cHV0X29wZXJhbmQgKCZvcHNbMF0sIHRhcmdldCwgbW9kZSk7Cist ICBjcmVhdGVfZml4ZWRfb3BlcmFuZCAoJm9wc1sxXSwgY29tcGFyaXNvbik7CistICBjcmVhdGVf aW5wdXRfb3BlcmFuZCAoJm9wc1syXSwgb3AyLCBtb2RlKTsKKy0gIGNyZWF0ZV9pbnB1dF9vcGVy YW5kICgmb3BzWzNdLCBvcDMsIG1vZGUpOworLQorLSAgaWYgKG1heWJlX2V4cGFuZF9pbnNuIChp Y29kZSwgNCwgb3BzKSkKKy0gICAgeworLSAgICAgIGlmIChvcHNbMF0udmFsdWUgIT0gdGFyZ2V0 KQorLQljb252ZXJ0X21vdmUgKHRhcmdldCwgb3BzWzBdLnZhbHVlLCBmYWxzZSk7CistICAgICAg cmV0dXJuIHRhcmdldDsKKy0gICAgfQorLQorLSAgcmV0dXJuIE5VTExfUlRYOworLX0KKy0KKyAK KyAvKiBFbWl0IGEgY29uZGl0aW9uYWwgbmVnYXRlIG9yIGJpdHdpc2UgY29tcGxlbWVudCB1c2lu ZyB0aGUKKyAgICBuZWdjYyBvciBub3RjYyBvcHRhYnMgaWYgYXZhaWxhYmxlLiAgUmV0dXJuIE5V TExfUlRYIGlmIHN1Y2ggb3BlcmF0aW9ucworLS0tIGdjYy9vcHRhYnMuaAorKysrIGdjYy9vcHRh YnMuaAorQEAgLTI3OSw4ICsyNzksOCBAQCBleHRlcm4gdm9pZCBlbWl0X2luZGlyZWN0X2p1bXAg KHJ0eCk7CisgI2VuZGlmCisgCisgLyogRW1pdCBhIGNvbmRpdGlvbmFsIG1vdmUgb3BlcmF0aW9u LiAgKi8KKy1ydHggZW1pdF9jb25kaXRpb25hbF9tb3ZlIChydHgsIHJ0eF9jb21wYXJpc29uLCBy dHgsIHJ0eCwgbWFjaGluZV9tb2RlLCBpbnQpOworLXJ0eCBlbWl0X2NvbmRpdGlvbmFsX21vdmUg KHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBtYWNoaW5lX21vZGUpOworK3J0eCBlbWl0X2NvbmRp dGlvbmFsX21vdmUgKHJ0eCwgZW51bSBydHhfY29kZSwgcnR4LCBydHgsIG1hY2hpbmVfbW9kZSwK KysJCQkgICBydHgsIHJ0eCwgbWFjaGluZV9tb2RlLCBpbnQpOworIAorIC8qIEVtaXQgYSBjb25k aXRpb25hbCBuZWdhdGUgb3IgYml0d2lzZSBjb21wbGVtZW50IG9wZXJhdGlvbi4gICovCisgcnR4 IGVtaXRfY29uZGl0aW9uYWxfbmVnX29yX2NvbXBsZW1lbnQgKHJ0eCwgcnR4X2NvZGUsIG1hY2hp bmVfbW9kZSwgcnR4LAorLS0tIGdjYy9ydGwuaAorKysrIGdjYy9ydGwuaAorQEAgLTQ2MDQsMTYg KzQ2MDQsNyBAQCB3b3JkX3JlZ2lzdGVyX29wZXJhdGlvbl9wIChjb25zdF9ydHggeCkKKyAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorIH0KKy0KKy0vKiBIb2xkcyBhbiBydHggY29tcGFyaXNv biB0byBzaW1wbGlmeSBwYXNzaW5nIG1hbnkgcGFyYW1ldGVycyBwZXJ0YWluaW5nIHRvIGEKKy0g ICBzaW5nbGUgY29tcGFyaXNvbi4gICovCistCistc3RydWN0IHJ0eF9jb21wYXJpc29uIHsKKy0g IHJ0eF9jb2RlIGNvZGU7CistICBydHggb3AwLCBvcDE7CistICBtYWNoaW5lX21vZGUgbW9kZTsK Ky19OworLQorKyAgICAKKyAvKiBndHlwZS1kZXNjLmNjLiAgKi8KKyBleHRlcm4gdm9pZCBndF9n Z2NfbXggKHJ0eCAmKTsKKyBleHRlcm4gdm9pZCBndF9wY2hfbnggKHJ0eCAmKTsKCmRpZmYgLS1n aXQgYS9nY2MxMi1wcjEwNDAyNS5wYXRjaCBiL2djYzEyLXByMTA0MDI1LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDEwMjM2Li4wMDAwMDAwCi0tLSBhL2djYzEyLXByMTA0 MDI1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotMjAyMi0wMS0xOCAgSmFr dWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQlQUiBjKysvMTA0MDI1Ci0JKiBwYXJz ZXIuY2MgKGNwX3BhcnNlcl9pZF9leHByZXNzaW9uKTogU2F2ZSBhbmQgcmVzdG9yZSBpbnB1dF9s b2NhdGlvbgotCWFyb3VuZCBjcF9wYXJzZXJfc2tpcF9lbnRpcmVfdGVtcGxhdGVfcGFyYW1ldGVy X2xpc3QgY2FsbCBmb3IKLQktV21pc3NpbmctdGVtcGxhdGUta2V5d29yZC4KLQotCSogZysrLmRn L3dhcm4vcHIxMDQwMjUuQzogTmV3IHRlc3QuCi0KLS0tLSBnY2MvY3AvcGFyc2VyLmNjLmpqCTIw MjItMDEtMTcgMTg6MDU6MDQuNzk3MzA3NTA2ICswMTAwCi0rKysgZ2NjL2NwL3BhcnNlci5jYwky MDIyLTAxLTE3IDIwOjI3OjMzLjY0MjcxMTg1OSArMDEwMAotQEAgLTYyNTQsNiArNjI1NCw3IEBA IGNwX3BhcnNlcl9pZF9leHByZXNzaW9uIChjcF9wYXJzZXIgKnBhcnMKLSAJCQkgICAgIE9QVF9X bWlzc2luZ190ZW1wbGF0ZV9rZXl3b3JkKSkKLSAgICAgewotICAgICAgIHNhdmVkX3Rva2VuX3Nl bnRpbmVsIHRva3MgKHBhcnNlci0+bGV4ZXIsIFNUU19ST0xMQkFDSyk7Ci0rICAgICAgaWxvY19z ZW50aW5lbCBpbHMgKFVOS05PV05fTE9DQVRJT04pOwotICAgICAgIGlmIChjcF9wYXJzZXJfc2tp cF9lbnRpcmVfdGVtcGxhdGVfcGFyYW1ldGVyX2xpc3QgKHBhcnNlcikKLSAJICAvKiBBbiBvcGVy YXRvciBhZnRlciB0aGUgPiBzdWdnZXN0cyB0aGF0IHRoZSA+IGVuZHMgYQotIAkgICAgIHRlbXBs YXRlLWlkOyBhIG5hbWUgb3IgbGl0ZXJhbCBzdWdnZXN0cyB0aGF0IHRoZSA+IGlzIGFuCi0tLS0g Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9wcjEwNDAyNS5DLmpqCTIwMjItMDEtMTcgMjA6MzE6 MTcuMzIwNTkxMjQ5ICswMTAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9wcjEwNDAy NS5DCTIwMjItMDEtMTcgMjA6MzE6MDkuMDY4NzA2MzczICswMTAwCi1AQCAtMCwwICsxLDIwIEBA Ci0rLy8gUFIgYysrLzEwNDAyNQotKy8vIHsgZGctZG8gY29tcGlsZSB9Ci0rLy8geyBkZy1vcHRp b25zICItV21pc3NpbmctdGVtcGxhdGUta2V5d29yZCAtZmNvbXBhcmUtZGVidWciIH0KLSsKLSt2 b2lkIGJhciAoaW50KTsKLSsKLStzdHJ1Y3QgUyB7IGludCBpOyB9OwotKwotK3RlbXBsYXRlIDxj bGFzcyBDPgotK3N0cnVjdCBUCi0rewotKyAgaW50IG07Ci0rICBDIGM7Ci0rICB2b2lkIGZvbyAo KQotKyAgewotKyAgICBiYXIgKGMuaSA8IG0pOwotKyAgfQotK307Ci0rCi0rdGVtcGxhdGUgdm9p ZCBUPFM+Ojpmb28gKCk7CgpkaWZmIC0tZ2l0IGEvZ2NjMTItcHIxMDQxMDMucGF0Y2ggYi9nY2Mx Mi1wcjEwNDEwMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RmNDIxZC4u MDAwMDAwMAotLS0gYS9nY2MxMi1wcjEwNDEwMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIw ICswLDAgQEAKLTIwMjItMDEtMTggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgot Ci0JUFIgbWlkZGxlLWVuZC8xMDQxMDMKLQkqIGdpbXBsZS1zc2Etd2Fybi1hY2Nlc3MuY2MgKHBh c3Nfd2FjY2Vzczo6Y2hlY2tfY2FsbCk6IERvbid0IGNoZWNrCi0JLkFTQU5fTUFSSyBjYWxscy4K LQotLS0tIGdjYy9naW1wbGUtc3NhLXdhcm4tYWNjZXNzLmNjLmpqCTIwMjItMDEtMTYgMjA6NTU6 NDYuNzgzOTMyMTEwICswMTAwCi0rKysgZ2NjL2dpbXBsZS1zc2Etd2Fybi1hY2Nlc3MuY2MJMjAy Mi0wMS0xOCAyMDo1NjoxMy42OTc3ODAzMjUgKzAxMDAKLUBAIC00MjMyLDYgKzQyMzIsMTEgQEAg cGFzc193YWNjZXNzOjpjaGVja19jYWxsIChnY2FsbCAqc3RtdCkKLSAgIGlmIChnaW1wbGVfY2Fs bF9idWlsdGluX3AgKHN0bXQsIEJVSUxUX0lOX05PUk1BTCkpCi0gICAgIGNoZWNrX2J1aWx0aW4g KHN0bXQpOwotIAotKyAgLyogLkFTQU5fTUFSSyBkb2Vzbid0IGFjY2VzcyBhbnkgdmFycywgb25s eSBtb2RpZmllcyBzaGFkb3cgbWVtb3J5LiAgKi8KLSsgIGlmIChnaW1wbGVfY2FsbF9pbnRlcm5h bF9wIChzdG10KQotKyAgICAgICYmIGdpbXBsZV9jYWxsX2ludGVybmFsX2ZuIChzdG10KSA9PSBJ Rk5fQVNBTl9NQVJLKQotKyAgICByZXR1cm47Ci0rCi0gICBpZiAoIW1fZWFybHlfY2hlY2tzX3Ap Ci0gICAgIGlmICh0cmVlIGNhbGxlZSA9IGdpbXBsZV9jYWxsX2ZuZGVjbCAoc3RtdCkpCi0gICAg ICAgewoKZGlmZiAtLWdpdCBhL2djYzEyLXByMTA0MTA0LnBhdGNoIGIvZ2NjMTItcHIxMDQxMDQu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4MWIzZjAuLjAwMDAwMDAKLS0t IGEvZ2NjMTItcHIxMDQxMDQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAot MjAyMi0wMS0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQlQUiB0YXJn ZXQvMTA0MTA0Ci0JKiBjb25maWcvaTM4Ni9zc2UubWQKLQkoPGF2eDUxMj5fPGNvbXBsZXhvcG5h bWU+Xzxtb2RlPjxtYXNrY19uYW1lPjxyb3VuZF9uYW1lPiwKLQlhdng1MTJmcDE2Xzxjb21wbGV4 b3BuYW1lPnNoX3Y4aGY8bWFza19zY2FsYXJjX25hbWU+PHJvdW5kX3NjYWxhcmN6X25hbWU+LAot CWF2eDUxMmRxX211bDxtb2RlPjM8bWFza19uYW1lPiwgPGF2eDJfYXZ4NTEyPl9wZXJtdmFyPG1v ZGU+PG1hc2tfbmFtZT4sCi0JYXZ4Ml9wZXJtPG1vZGU+XzE8bWFza19uYW1lPiwgYXZ4NTEyZl9w ZXJtPG1vZGU+XzE8bWFza19uYW1lPiwKLQlhdng1MTJkcV9yYW5nZXA8bW9kZT48bWFza19uYW1l Pjxyb3VuZF9zYWVvbmx5X25hbWU+LAotCWF2eDUxMmRxX3Jhbmdlczxtb2RlPjxtYXNrX3NjYWxh cl9uYW1lPjxyb3VuZF9zYWVvbmx5X3NjYWxhcl9uYW1lPiwKLQk8YXZ4NTEyPl9nZXRtYW50PG1v ZGU+PG1hc2tfbmFtZT48cm91bmRfc2Flb25seV9uYW1lPiwKLQlhdng1MTJmX3ZnZXRtYW50PG1v ZGU+PG1hc2tfc2NhbGFyX25hbWU+PHJvdW5kX3NhZW9ubHlfc2NhbGFyX25hbWU+KToKLQlVc2Ug dnhvcnBzXHQleDAsICV4MCwgJXgwIGluc3RlYWQgb2YgdnhvcnBzXHR7JXgwLCAleDAsICV4MH0u Ci0KLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjEwNDEwNC5jOiBOZXcgdGVzdC4KLQotLS0tIGdjYy9j b25maWcvaTM4Ni9zc2UubWQuamoJMjAyMi0wMS0xOCAxMTo1ODo1OS4xNTY5ODgxNDIgKzAxMDAK LSsrKyBnY2MvY29uZmlnL2kzODYvc3NlLm1kCTIwMjItMDEtMTggMjE6MjA6NDAuMDIyNDc3Nzc4 ICswMTAwCi1AQCAtNjUzOSw3ICs2NTM5LDcgQEAgKGRlZmluZV9pbnNuICI8YXZ4NTEyPl88Y29t cGxleG9wbmFtZT5fPAotIHsKLSAgIGlmIChUQVJHRVRfREVTVF9GQUxTRV9ERVBfRk9SX0dMQwot ICAgICAgICYmIDxtYXNrY19kZXN0X2ZhbHNlX2RlcF9mb3JfZ2xjX2NvbmQ+KQotLSAgICBvdXRw dXRfYXNtX2luc24gKCJ2eG9ycHNcdHsleDAsICV4MCwgJXgwfSIsIG9wZXJhbmRzKTsKLSsgICAg b3V0cHV0X2FzbV9pbnNuICgidnhvcnBzXHQleDAsICV4MCwgJXgwIiwgb3BlcmFuZHMpOwotICAg cmV0dXJuICJ2PGNvbXBsZXhvcG5hbWU+PHNzZW1vZGVzdWZmaXg+XHR7PHJvdW5kX21hc2tjX29w Mz4lMiwgJTEsICUwPG1hc2tjX29wZXJhbmQzPnwlMDxtYXNrY19vcGVyYW5kMz4sICUxLCAlMjxy b3VuZF9tYXNrY19vcDM+fSI7Ci0gfQotICAgWyhzZXRfYXR0ciAidHlwZSIgInNzZW11bCIpCi1A QCAtNjc1MCw3ICs2NzUwLDcgQEAgKGRlZmluZV9pbnNuICJhdng1MTJmcDE2Xzxjb21wbGV4b3Bu YW1lPgotIHsKLSAgIGlmIChUQVJHRVRfREVTVF9GQUxTRV9ERVBfRk9SX0dMQwotICAgICAgICYm IDxtYXNrX3NjYWxhcmNfZGVzdF9mYWxzZV9kZXBfZm9yX2dsY19jb25kPikKLS0gICAgb3V0cHV0 X2FzbV9pbnNuICgidnhvcnBzXHR7JXgwLCAleDAsICV4MH0iLCBvcGVyYW5kcyk7Ci0rICAgIG91 dHB1dF9hc21faW5zbiAoInZ4b3Jwc1x0JXgwLCAleDAsICV4MCIsIG9wZXJhbmRzKTsKLSAgIHJl dHVybiAidjxjb21wbGV4b3BuYW1lPnNoXHR7PHJvdW5kX3NjYWxhcmNfbWFza19vcDM+JTIsICUx LCAlMDxtYXNrX3NjYWxhcmNfb3BlcmFuZDM+fCUwPG1hc2tfc2NhbGFyY19vcGVyYW5kMz4sICUx LCAlMjxyb3VuZF9zY2FsYXJjX21hc2tfb3AzPn0iOwotIH0KLSAgIFsoc2V0X2F0dHIgInR5cGUi ICJzc2VtdWwiKQotQEAgLTE1MjIyLDcgKzE1MjIyLDcgQEAgKGRlZmluZV9pbnNuICJhdng1MTJk cV9tdWw8bW9kZT4zPG1hc2tfbgotICAgICAgICYmIDxtYXNrM19kZXN0X2ZhbHNlX2RlcF9mb3Jf Z2xjX2NvbmQ+Ci0gICAgICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sIG9wZXJh bmRzWzFdKQotICAgICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLCBvcGVyYW5k c1syXSkpCi0tICAgIG91dHB1dF9hc21faW5zbiAoInZ4b3Jwc1x0eyV4MCwgJXgwLCAleDB9Iiwg b3BlcmFuZHMpOwotKyAgICBvdXRwdXRfYXNtX2luc24gKCJ2eG9ycHNcdCV4MCwgJXgwLCAleDAi LCBvcGVyYW5kcyk7Ci0gICByZXR1cm4gInZwbXVsbHFcdHslMiwgJTEsICUwPG1hc2tfb3BlcmFu ZDM+fCUwPG1hc2tfb3BlcmFuZDM+LCAlMSwgJTJ9IjsKLSB9Ci0gICBbKHNldF9hdHRyICJ0eXBl IiAic3NlaW11bCIpCi1AQCAtMjQ2NTgsNyArMjQ2NTgsNyBAQCAoZGVmaW5lX2luc24gIjxhdngy X2F2eDUxMj5fcGVybXZhcjxtb2RlCi0gICAgICAgJiYgPG1hc2szX2Rlc3RfZmFsc2VfZGVwX2Zv cl9nbGNfY29uZD4KLSAgICAgICAmJiAhcmVnX21lbnRpb25lZF9wIChvcGVyYW5kc1swXSwgb3Bl cmFuZHNbMV0pCi0gICAgICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sIG9wZXJh bmRzWzJdKSkKLS0gICAgb3V0cHV0X2FzbV9pbnNuICgidnhvcnBzXHR7JXgwLCAleDAsICV4MH0i LCBvcGVyYW5kcyk7Ci0rICAgIG91dHB1dF9hc21faW5zbiAoInZ4b3Jwc1x0JXgwLCAleDAsICV4 MCIsIG9wZXJhbmRzKTsKLSAgIHJldHVybiAidnBlcm08c3NlbW9kZXN1ZmZpeD5cdHslMSwgJTIs ICUwPG1hc2tfb3BlcmFuZDM+fCUwPG1hc2tfb3BlcmFuZDM+LCAlMiwgJTF9IjsKLSB9Ci0gICBb KHNldF9hdHRyICJ0eXBlIiAic3NlbG9nIikKLUBAIC0yNDkwMCw3ICsyNDkwMCw3IEBAIChkZWZp bmVfaW5zbiAiYXZ4Ml9wZXJtPG1vZGU+XzE8bWFza19uYW0KLSAgIGlmIChUQVJHRVRfREVTVF9G QUxTRV9ERVBfRk9SX0dMQwotICAgICAgICYmIDxtYXNrNl9kZXN0X2ZhbHNlX2RlcF9mb3JfZ2xj X2NvbmQ+Ci0gICAgICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sIG9wZXJhbmRz WzFdKSkKLS0gICAgb3V0cHV0X2FzbV9pbnNuICgidnhvcnBzXHR7JXgwLCAleDAsICV4MH0iLCBv cGVyYW5kcyk7Ci0rICAgIG91dHB1dF9hc21faW5zbiAoInZ4b3Jwc1x0JXgwLCAleDAsICV4MCIs IG9wZXJhbmRzKTsKLSAgIHJldHVybiAidnBlcm08c3NlbW9kZXN1ZmZpeD5cdHslMiwgJTEsICUw PG1hc2tfb3BlcmFuZDY+fCUwPG1hc2tfb3BlcmFuZDY+LCAlMSwgJTJ9IjsKLSB9Ci0gICBbKHNl dF9hdHRyICJ0eXBlIiAic3NlbG9nIikKLUBAIC0yNDk3NSw3ICsyNDk3NSw3IEBAIChkZWZpbmVf aW5zbiAiYXZ4NTEyZl9wZXJtPG1vZGU+XzE8bWFza18KLSAgIGlmIChUQVJHRVRfREVTVF9GQUxT RV9ERVBfRk9SX0dMQwotICAgICAgICYmIDxtYXNrMTBfZGVzdF9mYWxzZV9kZXBfZm9yX2dsY19j b25kPgotICAgICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sx XSkpCi0tICAgIG91dHB1dF9hc21faW5zbiAoInZ4b3Jwc1x0eyV4MCwgJXgwLCAleDB9Iiwgb3Bl cmFuZHMpOwotKyAgICBvdXRwdXRfYXNtX2luc24gKCJ2eG9ycHNcdCV4MCwgJXgwLCAleDAiLCBv cGVyYW5kcyk7Ci0gICByZXR1cm4gInZwZXJtPHNzZW1vZGVzdWZmaXg+XHR7JTIsICUxLCAlMDxt YXNrX29wZXJhbmQxMD58JTA8bWFza19vcGVyYW5kMTA+LCAlMSwgJTJ9IjsKLSB9Ci0gICBbKHNl dF9hdHRyICJ0eXBlIiAic3NlbG9nIikKLUBAIC0yNjg4MCw3ICsyNjg4MCw3IEBAIChkZWZpbmVf aW5zbiAiYXZ4NTEyZHFfcmFuZ2VwPG1vZGU+PG1hc2sKLSAgICAgICAmJiA8bWFzazRfZGVzdF9m YWxzZV9kZXBfZm9yX2dsY19jb25kPgotICAgICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1sxXSkKLSAgICAgICAmJiAhcmVnX21lbnRpb25lZF9wIChvcGVyYW5k c1swXSwgb3BlcmFuZHNbMl0pKQotLSAgICBvdXRwdXRfYXNtX2luc24gKCJ2eG9ycHNcdHsleDAs ICV4MCwgJXgwfSIsIG9wZXJhbmRzKTsKLSsgICAgb3V0cHV0X2FzbV9pbnNuICgidnhvcnBzXHQl eDAsICV4MCwgJXgwIiwgb3BlcmFuZHMpOwotICAgcmV0dXJuICJ2cmFuZ2U8c3NlbW9kZXN1ZmZp eD5cdHslMywgPHJvdW5kX3NhZW9ubHlfbWFza19vcDQ+JTIsICUxLCAlMDxtYXNrX29wZXJhbmQ0 PnwlMDxtYXNrX29wZXJhbmQ0PiwgJTEsICUyPHJvdW5kX3NhZW9ubHlfbWFza19vcDQ+LCAlM30i OwotIH0KLSAgIFsoc2V0X2F0dHIgInR5cGUiICJzc2UiKQotQEAgLTI2OTAzLDcgKzI2OTAzLDcg QEAgKGRlZmluZV9pbnNuICJhdng1MTJkcV9yYW5nZXM8bW9kZT48bWFzawotICAgICAgICYmIDxt YXNrX3NjYWxhcjRfZGVzdF9mYWxzZV9kZXBfZm9yX2dsY19jb25kPgotICAgICAgICYmICFyZWdf bWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSkKLSAgICAgICAmJiAhcmVnX21l bnRpb25lZF9wIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMl0pKQotLSAgICBvdXRwdXRfYXNtX2lu c24gKCJ2eG9ycHNcdHsleDAsICV4MCwgJXgwfSIsIG9wZXJhbmRzKTsKLSsgICAgb3V0cHV0X2Fz bV9pbnNuICgidnhvcnBzXHQleDAsICV4MCwgJXgwIiwgb3BlcmFuZHMpOwotICAgcmV0dXJuICJ2 cmFuZ2U8c3Nlc2NhbGFybW9kZXN1ZmZpeD5cdHslMywgPHJvdW5kX3NhZW9ubHlfc2NhbGFyX21h c2tfb3A0PiUyLCAlMSwgJTA8bWFza19zY2FsYXJfb3BlcmFuZDQ+fCUwPG1hc2tfc2NhbGFyX29w ZXJhbmQ0PiwgJTEsICU8aXB0cj4yPHJvdW5kX3NhZW9ubHlfc2NhbGFyX21hc2tfb3A0PiwgJTN9 IjsKLSB9Ci0gICBbKHNldF9hdHRyICJ0eXBlIiAic3NlIikKLUBAIC0yNjk0OSw3ICsyNjk0OSw3 IEBAIChkZWZpbmVfaW5zbiAiPGF2eDUxMj5fZ2V0bWFudDxtb2RlPjxtYXMKLSAgIGlmIChUQVJH RVRfREVTVF9GQUxTRV9ERVBfRk9SX0dMQwotICAgICAgICYmIDxtYXNrM19kZXN0X2ZhbHNlX2Rl cF9mb3JfZ2xjX2NvbmQ+Ci0gICAgICAgJiYgTUVNX1AgKG9wZXJhbmRzWzFdKSkKLS0gICAgb3V0 cHV0X2FzbV9pbnNuICgidnhvcnBzXHR7JXgwLCAleDAsICV4MH0iLCBvcGVyYW5kcyk7Ci0rICAg IG91dHB1dF9hc21faW5zbiAoInZ4b3Jwc1x0JXgwLCAleDAsICV4MCIsIG9wZXJhbmRzKTsKLSAg IHJldHVybiAidmdldG1hbnQ8c3NlbW9kZXN1ZmZpeD5cdHslMiwgPHJvdW5kX3NhZW9ubHlfbWFz a19vcDM+JTEsICUwPG1hc2tfb3BlcmFuZDM+fCUwPG1hc2tfb3BlcmFuZDM+LCAlMTxyb3VuZF9z YWVvbmx5X21hc2tfb3AzPiwgJTJ9IjsKLSB9Ci0gICBbKHNldF9hdHRyICJwcmVmaXgiICJldmV4 IikKLUBAIC0yNjk3MSw3ICsyNjk3MSw3IEBAIChkZWZpbmVfaW5zbiAiYXZ4NTEyZl92Z2V0bWFu dDxtb2RlPjxtYXMKLSAgICAgICAmJiA8bWFza19zY2FsYXI0X2Rlc3RfZmFsc2VfZGVwX2Zvcl9n bGNfY29uZD4KLSAgICAgICAmJiAhcmVnX21lbnRpb25lZF9wIChvcGVyYW5kc1swXSwgb3BlcmFu ZHNbMV0pCi0gICAgICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sIG9wZXJhbmRz WzJdKSkKLS0gICAgb3V0cHV0X2FzbV9pbnNuICgidnhvcnBzXHR7JXgwLCAleDAsICV4MH0iLCBv cGVyYW5kcyk7Ci0rICAgIG91dHB1dF9hc21faW5zbiAoInZ4b3Jwc1x0JXgwLCAleDAsICV4MCIs IG9wZXJhbmRzKTsKLSAgIHJldHVybiAidmdldG1hbnQ8c3Nlc2NhbGFybW9kZXN1ZmZpeD5cdHsl MywgPHJvdW5kX3NhZW9ubHlfc2NhbGFyX21hc2tfb3A0PiUyLCAlMSwgJTA8bWFza19zY2FsYXJf b3BlcmFuZDQ+fCUwPG1hc2tfc2NhbGFyX29wZXJhbmQ0PiwgJTEsICU8aXB0cj4yPHJvdW5kX3Nh ZW9ubHlfc2NhbGFyX21hc2tfb3A0PiwgJTN9IjsKLSB9Ci0gICAgWyhzZXRfYXR0ciAicHJlZml4 IiAiZXZleCIpCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHIxMDQxMDQuYy5q agkyMDIyLTAxLTE4IDIxOjM4OjE3LjAwNzkwNjY3MyArMDEwMAotKysrIGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L3ByMTA0MTA0LmMJMjAyMi0wMS0xOCAyMTozNjoxMC40NzU2MjMxNDgg KzAxMDAKLUBAIC0wLDAgKzEsMTAgQEAKLSsvKiBQUiB0YXJnZXQvMTA0MTA0ICovCi0rLyogeyBk Zy1kbyBhc3NlbWJsZSB7IHRhcmdldCB2ZWN0X3NpbWRfY2xvbmVzIH0gfSAqLwotKy8qIHsgZGct cmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IG1hc21faW50ZWwgfSAqLwotKy8qIHsgZGctb3B0aW9u cyAiLW1hcmNoPWFsZGVybGFrZSAtbWFzbT1pbnRlbCAtTzEgLWZhbGxvdy1zdG9yZS1kYXRhLXJh Y2VzIC1mdW5yb2xsLWFsbC1sb29wcyIgfSAqLwotKwotK19fYXR0cmlidXRlX18gKChzaW1kKSkg c2hvcnQgaW50Ci0rZm9vICh2b2lkKQotK3sKLSsgIHJldHVybiAwOwotK30KCmRpZmYgLS1naXQg YS9nY2MxMi1wcjEwNDE5NC5wYXRjaCBiL2djYzEyLXByMTA0MTk0LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNzQ3YzcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mx Mi1wcjEwNDE5NC5wYXRjaApAQCAtMCwwICsxLDkyIEBACisyMDIyLTAxLTI1ICBKYWt1YiBKZWxp bmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCVBSIGRlYnVnLzEwNDE5NAorCSogZHdhcmYyb3V0 LmNjIChsb25nX2RvdWJsZV9hc19mbG9hdDEyOCk6IE5ldyBmdW5jdGlvbi4KKwkobW9kaWZpZWRf dHlwZV9kaWUpOiBGb3IgcG93ZXJwYzY0bGUgSUVFRSA3NTQgcXVhZCBsb25nIGRvdWJsZQorCWFu ZCBjb21wbGV4IGxvbmcgZG91YmxlIGVtaXQgdGhvc2UgYXMgRFdfVEFHX3R5cGVkZWYgdG8KKwlf RmxvYXQxMjggb3IgY29tcGxleCBfRmxvYXQxMjggYmFzZSB0eXBlLgorCistLS0gZ2NjL2R3YXJm Mm91dC5jYy5qagkyMDIyLTAxLTI1IDA1OjQ3OjUzLjk4NzQ1NDkzNCArMDEwMAorKysrIGdjYy9k d2FyZjJvdXQuY2MJMjAyMi0wMS0yNSAxMTo1NDoyNS4xMDA1MjIwODkgKzAxMDAKK0BAIC0xMzU2 OCw2ICsxMzU2OCw0NyBAQCBxdWFsaWZpZWRfZGllX3AgKGR3X2RpZV9yZWYgZGllLCBpbnQgKm1h CisgICByZXR1cm4gdHlwZTsKKyB9CisgCisrLyogSWYgVFlQRSBpcyBsb25nIGRvdWJsZSBvciBj b21wbGV4IGxvbmcgZG91YmxlIHRoYXQKKysgICBzaG91bGQgYmUgZW1pdHRlZCBhcyBhcnRpZmlj aWFsIHR5cGVkZWYgdG8gX0Zsb2F0MTI4IG9yCisrICAgY29tcGxleCBfRmxvYXQxMjgsIHJldHVy biB0aGUgdHlwZSBpdCBzaG91bGQgYmUgZW1pdHRlZCBhcy4KKysgICBUaGlzIGlzIGRvbmUgaW4g Y2FzZSB0aGUgdGFyZ2V0IGFscmVhZHkgc3VwcG9ydHMgMTYtYnl0ZQorKyAgIGNvbXBvc2l0ZSBm bG9hdGluZyBwb2ludCB0eXBlIChpYm1fZXh0ZW5kZWRfZm9ybWF0KS4gICovCisrCisrc3RhdGlj IHRyZWUKKytsb25nX2RvdWJsZV9hc19mbG9hdDEyOCAodHJlZSB0eXBlKQorK3sKKysgIGlmICh0 eXBlICE9IGxvbmdfZG91YmxlX3R5cGVfbm9kZQorKyAgICAgICYmIHR5cGUgIT0gY29tcGxleF9s b25nX2RvdWJsZV90eXBlX25vZGUpCisrICAgIHJldHVybiBOVUxMX1RSRUU7CisrCisrICBtYWNo aW5lX21vZGUgbW9kZSwgZm1vZGU7CisrICBpZiAoVFJFRV9DT0RFICh0eXBlKSA9PSBDT01QTEVY X1RZUEUpCisrICAgIG1vZGUgPSBUWVBFX01PREUgKFRSRUVfVFlQRSAodHlwZSkpOworKyAgZWxz ZQorKyAgICBtb2RlID0gVFlQRV9NT0RFICh0eXBlKTsKKysgIGlmIChrbm93bl9lcSAoR0VUX01P REVfU0laRSAobW9kZSksIDE2KSAmJiAhTU9ERV9DT01QT1NJVEVfUCAobW9kZSkpCisrICAgIEZP Ul9FQUNIX01PREVfSU5fQ0xBU1MgKGZtb2RlLCBNT0RFX0ZMT0FUKQorKyAgICAgIGlmIChrbm93 bl9lcSAoR0VUX01PREVfU0laRSAoZm1vZGUpLCAxNikKKysgICAgICAgICAgJiYgTU9ERV9DT01Q T1NJVEVfUCAoZm1vZGUpKQorKwl7CisrCSAgaWYgKHR5cGUgPT0gbG9uZ19kb3VibGVfdHlwZV9u b2RlKQorKwkgICAgeworKwkgICAgICBpZiAoZmxvYXQxMjhfdHlwZV9ub2RlCisrCQkgICYmIChU WVBFX01PREUgKGZsb2F0MTI4X3R5cGVfbm9kZSkKKysJCSAgICAgID09IFRZUEVfTU9ERSAodHlw ZSkpKQorKwkJcmV0dXJuIGZsb2F0MTI4X3R5cGVfbm9kZTsKKysJICAgICAgcmV0dXJuIE5VTExf VFJFRTsKKysJICAgIH0KKysJICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9GTE9BVE5fTlhfVFlQ RVM7IGkrKykKKysJICAgIGlmIChDT01QTEVYX0ZMT0FUTl9OWF9UWVBFX05PREUgKGkpICE9IE5V TExfVFJFRQorKwkJJiYgKFRZUEVfTU9ERSAoQ09NUExFWF9GTE9BVE5fTlhfVFlQRV9OT0RFIChp KSkKKysJCSAgICA9PSBUWVBFX01PREUgKHR5cGUpKSkKKysJICAgICAgcmV0dXJuIENPTVBMRVhf RkxPQVROX05YX1RZUEVfTk9ERSAoaSk7CisrCX0KKysKKysgIHJldHVybiBOVUxMX1RSRUU7Cisr fQorKworIC8qIEdpdmVuIGEgcG9pbnRlciB0byBhbiBhcmJpdHJhcnkgLi4uX1RZUEUgdHJlZSBu b2RlLCByZXR1cm4gYSBkZWJ1Z2dpbmcKKyAgICBlbnRyeSB0aGF0IGNoYWlucyB0aGUgbW9kaWZp ZXJzIHNwZWNpZmllZCBieSBDVl9RVUFMUyBpbiBmcm9udCBvZiB0aGUKKyAgICBnaXZlbiB0eXBl LiAgUkVWRVJTRSBpcyB0cnVlIGlmIHRoZSB0eXBlIGlzIHRvIGJlIGludGVycHJldGVkIGluIHRo ZQorQEAgLTEzODQ4LDcgKzEzODg5LDMyIEBAIG1vZGlmaWVkX3R5cGVfZGllICh0cmVlIHR5cGUs IGludCBjdl9xdWEKKyAgICAgfQorICAgZWxzZSBpZiAoaXNfYmFzZV90eXBlICh0eXBlKSkKKyAg ICAgeworLSAgICAgIG1vZF90eXBlX2RpZSA9IGJhc2VfdHlwZV9kaWUgKHR5cGUsIHJldmVyc2Up OworKyAgICAgIC8qIElmIGEgdGFyZ2V0IHN1cHBvcnRzIGxvbmcgZG91YmxlIGFzIGRpZmZlcmVu dCBmbG9hdGluZyBwb2ludAorKwkgbW9kZXMgd2l0aCB0aGUgc2FtZSAxNi1ieXRlIHNpemUsIHVz ZSBub3JtYWwgRFdfVEFHX2Jhc2VfdHlwZQorKwkgb25seSBmb3IgdGhlIGNvbXBvc2l0ZSAoaWJt X2V4dGVuZGVkX3JlYWxfZm9ybWF0KSB0eXBlIGFuZAorKwkgZm9yIHRoZSBvdGhlciBmb3IgdGhl IHRpbWUgYmVpbmcgZW1pdCBpbnN0ZWFkIGEgIl9GbG9hdDEyOCIKKysJIG9yICJjb21wbGV4IF9G bG9hdDEyOCIgRFdfVEFHX2Jhc2VfdHlwZSBhbmQgYSAibG9uZyBkb3VibGUiCisrCSBvciAiY29t cGxleCBsb25nIGRvdWJsZSIgdHlwZWRlZiB0byBpdC4gICovCisrICAgICAgaWYgKHRyZWUgb3Ro ZXJfdHlwZSA9IGxvbmdfZG91YmxlX2FzX2Zsb2F0MTI4ICh0eXBlKSkKKysJeworKwkgIGR3X2Rp ZV9yZWYgb3RoZXJfZGllOworKwkgIGlmIChUWVBFX05BTUUgKG90aGVyX3R5cGUpKQorKwkgICAg b3RoZXJfZGllCisrCSAgICAgID0gbW9kaWZpZWRfdHlwZV9kaWUgKG90aGVyX3R5cGUsIFRZUEVf VU5RVUFMSUZJRUQsIHJldmVyc2UsCisrCQkJCSAgIGNvbnRleHRfZGllKTsKKysJICBlbHNlCisr CSAgICB7CisrCSAgICAgIG90aGVyX2RpZSA9IGJhc2VfdHlwZV9kaWUgKHR5cGUsIHJldmVyc2Up OworKwkgICAgICBhZGRfY2hpbGRfZGllIChjb21wX3VuaXRfZGllICgpLCBvdGhlcl9kaWUpOwor KwkgICAgICBhZGRfbmFtZV9hdHRyaWJ1dGUgKG90aGVyX2RpZSwKKysJCQkJICBUUkVFX0NPREUg KHR5cGUpID09IENPTVBMRVhfVFlQRQorKwkJCQkgID8gImNvbXBsZXggX0Zsb2F0MTI4IiA6ICJf RmxvYXQxMjgiKTsKKysJICAgIH0KKysJICBtb2RfdHlwZV9kaWUgPSBuZXdfZGllX3JhdyAoRFdf VEFHX3R5cGVkZWYpOworKwkgIGFkZF9BVF9kaWVfcmVmIChtb2RfdHlwZV9kaWUsIERXX0FUX3R5 cGUsIG90aGVyX2RpZSk7CisrCX0KKysgICAgICBlbHNlCisrCW1vZF90eXBlX2RpZSA9IGJhc2Vf dHlwZV9kaWUgKHR5cGUsIHJldmVyc2UpOworIAorICAgICAgIC8qIFRoZSBESUUgd2l0aCBEV19B VF9lbmRpYW5pdHkgaXMgcGxhY2VkIHJpZ2h0IGFmdGVyIHRoZSBuYWtlZCBESUUuICAqLworICAg ICAgIGlmIChyZXZlcnNlX2Jhc2VfdHlwZSkKCmRpZmYgLS1naXQgYS9nY2MxMi1wcjk0MTkzLnBh dGNoIGIvZ2NjMTItcHI5NDE5My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5lNjY5YTgxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjMTItcHI5NDE5My5wYXRjaApAQCAt MCwwICsxLDM5IEBACisyMDIyLTAxLTI1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNv bT4KKworCVBSIHRhcmdldC85NDE5MworCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGZlY2xl YXJleGNlcHRzaSwgZmVyYWlzZWV4Y2VwdHNpKToKKwlVc2UgZ2VuZXJhbF9vcGVyYW5kIGluc3Rl YWQgb2YgY29uc3RfaW50X29wZXJhbmQsIGRyb3AgY29uc3RyYWludAorCWFuZCBGQUlMIGlmIG9w ZXJhbmRzWzFdIGlzIG5vdCBDT05TVF9JTlRfUC4KKworLS0tIGdjYy9jb25maWcvcnM2MDAwL3Jz NjAwMC5tZC5qagkyMDIyLTAxLTI1IDA1OjQ4OjAxLjQ5NzM0MDMwMyArMDEwMAorKysrIGdjYy9j b25maWcvcnM2MDAwL3JzNjAwMC5tZAkyMDIyLTAxLTI1IDEzOjQ4OjEzLjc1MjcwOTQ4MiArMDEw MAorQEAgLTY5NTksMTIgKzY5NTksMTIgQEAgKGRlZmluZV9leHBhbmQgImZlZ2V0cm91bmRzaSIK KyA7OyBCZWNhdXNlIG9mIHRoZXNlIHJlc3RyaWN0aW9ucywgdGhpcyBvbmx5IGV4cGFuZHMgb24g dGhlIGRlc2lyZWQKKyA7OyBjYXNlcyBhbmQgZmFsbGJhY2sgdG8gYSBjYWxsIHRvIGxpYmMgb24g YW55IG90aGVyIGNhc2UuCisgKGRlZmluZV9leHBhbmQgImZlY2xlYXJleGNlcHRzaSIKKy0gIFso dXNlIChtYXRjaF9vcGVyYW5kOlNJIDEgImNvbnN0X2ludF9vcGVyYW5kIiAibiIpKQorKyAgWyh1 c2UgKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ2VuZXJhbF9vcGVyYW5kIikpCisgICAgKHNldCAobWF0 Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiKQorIAkoY29uc3RfaW50IDApKV0KKyAg ICJUQVJHRVRfSEFSRF9GTE9BVCIKKyB7CistICBpZiAoIU9QVElPTl9HTElCQykKKysgIGlmICgh T1BUSU9OX0dMSUJDIHx8ICFDT05TVF9JTlRfUCAob3BlcmFuZHNbMV0pKQorICAgICBGQUlMOwor IAorICAgdW5zaWduZWQgaW50IGZlID0gSU5UVkFMIChvcGVyYW5kc1sxXSk7CitAQCAtNjk5OSwx MiArNjk5OSwxMiBAQCAoZGVmaW5lX2V4cGFuZCAiZmVjbGVhcmV4Y2VwdHNpIgorIDs7IEJlY2F1 c2Ugb2YgdGhlc2UgcmVzdHJpY3Rpb25zLCB0aGlzIG9ubHkgZXhwYW5kcyBvbiB0aGUgZGVzaXJl ZAorIDs7IGNhc2VzIGFuZCBmYWxsYmFjayB0byBhIGNhbGwgdG8gbGliYyBvbiBhbnkgb3RoZXIg Y2FzZS4KKyAoZGVmaW5lX2V4cGFuZCAiZmVyYWlzZWV4Y2VwdHNpIgorLSAgWyh1c2UgKG1hdGNo X29wZXJhbmQ6U0kgMSAiY29uc3RfaW50X29wZXJhbmQiICJuIikpCisrICBbKHVzZSAobWF0Y2hf b3BlcmFuZDpTSSAxICJnZW5lcmFsX29wZXJhbmQiKSkKKyAgICAoc2V0IChtYXRjaF9vcGVyYW5k OlNJIDAgImdwY19yZWdfb3BlcmFuZCIpCisgCShjb25zdF9pbnQgMCkpXQorICAgIlRBUkdFVF9I QVJEX0ZMT0FUIgorIHsKKy0gIGlmICghT1BUSU9OX0dMSUJDKQorKyAgaWYgKCFPUFRJT05fR0xJ QkMgfHwgIUNPTlNUX0lOVF9QIChvcGVyYW5kc1sxXSkpCisgICAgIEZBSUw7CisgCisgICB1bnNp Z25lZCBpbnQgZmUgPSBJTlRWQUwgKG9wZXJhbmRzWzFdKTsKCmRpZmYgLS1naXQgYS9zb3VyY2Vz IGIvc291cmNlcwppbmRleCA0M2QyOTU3Li5mY2Q1MzNhIDEwMDY0NAotLS0gYS9zb3VyY2VzCisr KyBiL3NvdXJjZXMKQEAgLTEsNCArMSw0IEBACi1TSEE1MTIgKGdjYy0xMi4wLjEtMjAyMjAxMTgu dGFyLnh6KSA9IDVmYWIyMzllOTE1ZTcxYTg5ODZhMTIyZTNmODk3ZjIyMzZmMjFmMGYxODNkYTMz Y2FkMmFjZThmMzQ4MjNjZDhmMzJjN2MwZGZjZWZmYmZlYWUxN2NkOTliNjU2ZjI0MmQzMGRkZWI5 NGVhYWZlM2VkZjg1OGVhODhlYzU5MDE2CitTSEE1MTIgKGdjYy0xMi4wLjEtMjAyMjAxMjUudGFy Lnh6KSA9IDA5YzRiN2Q3ZmUzZThhMmMwZjQxODFkYTcxN2U0NzZjMDg2OGIyYmIxYzg2Y2RkMjI0 ODJlZTQyMzVhZWJiOWViMGM4OWI1Zjg3YjlhMGU2ODUyZTBjYzI4NzZiNjUyYzYwNDU3OTk2YTg2 ZGM2ZTliOWIwMmNhMmZmODc2MTNmCiBTSEE1MTIgKGlzbC0wLjE4LnRhci5iejIpID0gODVkMGI0 MGY0ZGJmMTRjYjk5ZDE3YWEwNzA0OGNkY2FiMmRjM2ViNTI3ZDJmYmIxZTg0YzQxYjJkZTVmMzUx MDI1MzcwZTU3NDQ4YjYzYjJiOGE4Y2Y4YTA4NDNhMDg5YzMyNjNmOWJhZWUxNTQyZDVjMmUxY2Iz N2VkMzlkOTQKIFNIQTUxMiAobmV3bGliLWN5Z3dpbi01MGUyYTYzYjA0YmRkMDE4NDg0NjA1ZmJi OTU0ZmQxYmQ1MTQ3ZmEwLnRhci54eikgPSAwMDJhNDhhN2I2ODlhODFhYmJmMTYxNjFiY2FlYzAw MWE4NDJlNjdkZmJlMzcyZTllMTA5MDkyNzAzYmZjNjY2Njc1ZjE2MTk4ZjYwY2E0MjkzNzBlODg1 MGQ1NjQ1NDdkYzUwNWRmODFiYzNhYWNhNGNlNmRlZmJjMDE0YWQ2YwogU0hBNTEyIChudnB0eC10 b29scy01ZjZmMzQzYTMwMmQ2MjBiMDg2OGVkYWIzNzZjMDBiMTU3NDFlMzllLnRhci54eikgPSBm NmQxMGRiOTRmYTE1NzBhZTBmOTRkZjA3M2ZhM2M3M2M4ZTVlZTE2ZDU5MDcwYjUzZDk0ZjdkYjBk ZThhMDMxYmM0NGQ3ZjNmMTg1MjUzM2RhMDRiNjI1Y2U3NThlMDIyMjYzODU1ZWQ0M2NmYzY4Njdl MDcwOGQwMDFlNTNjNwo=