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: Tom Callaway To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: resolve bugzilla 319901 (phew! only took 6 years & 9 days) Date: Tue, 09 Jun 2026 12:43:04 GMT Message-ID: <178100898403.1.10302831347926039697.rpms-openssl-1f19ac14f96a@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: 1f19ac14f96ae02be864198a68421f8b1df88be0 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbApCcmFu Y2ggOiByZWJhc2VfNDBiZXRhCkNvbW1pdCA6IDFmMTlhYzE0Zjk2YWUwMmJlODY0MTk4YTY4NDIx ZjhiMWRmODhiZTAKQXV0aG9yIDogVG9tIENhbGxhd2F5IDxzcG90QGZlZG9yYXByb2plY3Qub3Jn PgpEYXRlICAgOiAyMDEzLTEwLTE1VDAyOjA4OjM1KzAxOjAwClN0YXRzICA6ICsyMDY0Ly0xNiBp biA0IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9v cGVuc3NsL2MvMWYxOWFjMTRmOTZhZTAyYmU4NjQxOThhNjg0MjFmOGIxZGY4OGJlMD9icmFuY2g9 cmViYXNlXzQwYmV0YQoKTG9nOgpyZXNvbHZlIGJ1Z3ppbGxhIDMxOTkwMSAocGhldyEgb25seSB0 b29rIDYgeWVhcnMgJiA5IGRheXMpCgotLS0KZGlmZiAtLWdpdCBhL2hvYmJsZS1vcGVuc3NsIGIv aG9iYmxlLW9wZW5zc2wKaW5kZXggNGNhN2VhYi4uM2I3ODMzNSAxMDA3NTUKLS0tIGEvaG9iYmxl LW9wZW5zc2wKKysrIGIvaG9iYmxlLW9wZW5zc2wKQEAgLTcsMzkgKzcsMzAgQEAgc2V0IC1lCiAj IE1EQy0yOiA0LDkwOCw4NjEgMTMvMDMvMjAwNyAtIGV4cGlyZWQsIHdlIGRvIG5vdCByZW1vdmUg aXQgYnV0IGRvIG5vdCBlbmFibGUgaXQgYW55d2F5CiAjIElERUE6ICA1LDIxNCw3MDMgMDcvMDEv MjAxMiAtIGV4cGlyZWQsIHdlIGRvIG5vdCByZW1vdmUgaXQgYW55bW9yZQogIyBSQzU6ICAgNSw3 MjQsNDI4IDAxLzExLzIwMTUKLSMgRUM6ICAgID8/Pz8/Pz8/PyA/Py8/Py8yMDIwCiAjIFNSUDog ICA/Pz8/Pz8/Pz8gPz8vPz8vMjA/PwogCiAjIFJlbW92ZSBhc3NlbWJsZXIgcG9ydGlvbnMgb2Yg SURFQSwgTURDMiwgYW5kIFJDNS4KIChmaW5kIGNyeXB0by9yYzUvYXNtIC10eXBlIGYgfCB4YXJn cyAtciBybSAtZnYpCiAKLSMgUkM1LCBFQywgU1JQLgotZm9yIGEgaW4gcmM1IGVjIGVjZGggZWNk c2Egc3JwOyBkbworIyBSQzUsIFNSUC4KK2ZvciBhIGluIHJjNSBzcnA7IGRvCiAgIGZvciBjIGlu IGBmaW5kIGNyeXB0by8kYSAtbmFtZSAiKi5jIiAtYSBcISAtbmFtZSAiKnRlc3QqIiAtdHlwZSBm YCA7IGRvCiAJZWNobyBEZXN0cm95aW5nICRjCiAJPiAkYwogICBkb25lCiBkb25lCiAKLWZvciBj IGluIGBmaW5kIGNyeXB0by9ldnAgLW5hbWUgIipfcmM1LmMiIC1vIC1uYW1lICIqX2VjZHNhLmMi YDsgZG8KLQllY2hvIERlc3Ryb3lpbmcgJGMKLQk+ICRjCi1kb25lCi0KLWZvciBjIGluIGBmaW5k IGNyeXB0by9ibiAtbmFtZSAiKmdmMm0uYyJgOyBkbworZm9yIGMgaW4gYGZpbmQgY3J5cHRvL2V2 cCAtbmFtZSAiKl9yYzUuYyJgOyBkbwogCWVjaG8gRGVzdHJveWluZyAkYwogCT4gJGMKIGRvbmUK IAogZm9yIGggaW4gYGZpbmQgY3J5cHRvIHNzbCBhcHBzIHRlc3QgLW5hbWUgIiouaCJgIDsgZG8K LQllY2hvIFJlbW92aW5nIFJDNSwgU1JQIGFuZCBFQyByZWZlcmVuY2VzIGZyb20gJGgKKwllY2hv IFJlbW92aW5nIFJDNSwgU1JQIHJlZmVyZW5jZXMgZnJvbSAkaAogCWNhdCAkaCB8IFwKIAlhd2sg ICAgJ0JFR0lOIHtlY2g9MTt9IFwKIAkJL14jWyBcdF0qaWZuZGVmLipOT19TUlAvIHtlY2gtLTsg bmV4dDt9IFwKIAkJL14jWyBcdF0qaWZuZGVmLipOT19SQzUvIHtlY2gtLTsgbmV4dDt9IFwKLQkJ L14jWyBcdF0qaWZuZGVmLipOT19FQy8ge2VjaC0tOyBuZXh0O30gXAotCQkvXiNbIFx0XSppZm5k ZWYuKk5PX0VDREgvIHtlY2gtLTsgbmV4dDt9IFwKLQkJL14jWyBcdF0qaWZuZGVmLipOT19FQ0RT QS8ge2VjaC0tOyBuZXh0O30gXAogICAgICAgICAgICAgICAgIC9eI1sgXHRdKmlmLyB7aWYoZWNo IDwgMSkgZWNoLS07fSBcCiAJCXtpZihlY2g+MCkgeztwcmludCAkMH07fSBcCiAJCS9eI1sgXHRd KmVuZGlmLyB7aWYoZWNoIDwgMSkgZWNoKys7fScgPiAkaC5ob2JibGVkICYmIFwKCmRpZmYgLS1n aXQgYS9vcGVuc3NsLTEuMC4xZS1maXBzLWVjLnBhdGNoIGIvb3BlbnNzbC0xLjAuMWUtZmlwcy1l Yy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjM1ZGRlCi0tLSAv ZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMWUtZmlwcy1lYy5wYXRjaApAQCAtMCwwICsxLDIw NTIgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9lYy9lYzJfc21wbC5jLmZpcHMt ZWMgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2VjL2VjMl9zbXBsLmMKKy0tLSBvcGVuc3NsLTEuMC4x ZS9jcnlwdG8vZWMvZWMyX3NtcGwuYy5maXBzLWVjCTIwMTMtMTAtMTUgMDE6MTA6NTcuNDcyNTQ2 NzUzICswMTAwCisrKysgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2VjL2VjMl9zbXBsLmMJMjAxMy0x MC0xNSAwMToxMToxMC4zNDY1MjkwMTEgKzAxMDAKK0BAIC04MCw5ICs4MCw2IEBACisgCisgY29u c3QgRUNfTUVUSE9EICpFQ19HRjJtX3NpbXBsZV9tZXRob2Qodm9pZCkKKyAJeworLSNpZmRlZiBP UEVOU1NMX0ZJUFMKKy0JcmV0dXJuIGZpcHNfZWNfZ2YybV9zaW1wbGVfbWV0aG9kKCk7CistI2Vs c2UKKyAJc3RhdGljIGNvbnN0IEVDX01FVEhPRCByZXQgPSB7CisgCQlFQ19GTEFHU19ERUZBVUxU X09DVCwKKyAJCU5JRF9YOV82Ml9jaGFyYWN0ZXJpc3RpY190d29fZmllbGQsCitAQCAtMTI2LDcg KzEyMyw2IEBAIGNvbnN0IEVDX01FVEhPRCAqRUNfR0YybV9zaW1wbGVfbWV0aG9kKHYKKyAJCTAg LyogZmllbGRfc2V0X3RvX29uZSAqLyB9OworIAorIAlyZXR1cm4gJnJldDsKKy0jZW5kaWYKKyAJ fQorIAorIAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2VjL2VjX2tleS5jLmZpcHMt ZWMgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2VjL2VjX2tleS5jCistLS0gb3BlbnNzbC0xLjAuMWUv Y3J5cHRvL2VjL2VjX2tleS5jLmZpcHMtZWMJMjAxMy0wMi0xMSAxNToyNjowNC4wMDAwMDAwMDAg KzAwMDAKKysrKyBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZWMvZWNfa2V5LmMJMjAxMy0xMC0xNSAw MTowODowNi4wNDY3ODMxNDggKzAxMDAKK0BAIC02NCw5ICs2NCw2IEBACisgI2luY2x1ZGUgPHN0 cmluZy5oPgorICNpbmNsdWRlICJlY19sY2wuaCIKKyAjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4K Ky0jaWZkZWYgT1BFTlNTTF9GSVBTCistI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorLSNlbmRp ZgorIAorIEVDX0tFWSAqRUNfS0VZX25ldyh2b2lkKQorIAl7CitAQCAtMjM0LDYgKzIzMSwzOSBA QCBpbnQgRUNfS0VZX3VwX3JlZihFQ19LRVkgKnIpCisgCXJldHVybiAoKGkgPiAxKSA/IDEgOiAw KTsKKyAJfQorIAorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysKKysjaW5jbHVkZSA8b3BlbnNzbC9l dnAuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlw c19yYW5kLmg+CisrCisrc3RhdGljIGludCBmaXBzX2NoZWNrX2VjKEVDX0tFWSAqa2V5KQorKwl7 CisrCUVWUF9QS0VZICpwazsKKysJdW5zaWduZWQgY2hhciB0YnNbXSA9ICJFQ0RTQSBQYWlyd2lz ZSBDaGVjayBEYXRhIjsKKysJaW50IHJldCA9IDA7CisrCisrCWlmICgocGs9RVZQX1BLRVlfbmV3 KCkpID09IE5VTEwpCisrCQlnb3RvIGVycjsKKysKKysJRVZQX1BLRVlfc2V0MV9FQ19LRVkocGss IGtleSk7CisrCisrCWlmIChmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIHRicywgMCwgTlVM TCwgMCwgTlVMTCwgMCwgTlVMTCkpCisrCQlyZXQgPSAxOworKworKwllcnI6CisrCWlmIChyZXQg PT0gMCkKKysJCXsKKysJCUZJUFNlcnIoRklQU19GX0ZJUFNfQ0hFQ0tfRUMsRklQU19SX1BBSVJX SVNFX1RFU1RfRkFJTEVEKTsKKysJCWZpcHNfc2V0X3NlbGZ0ZXN0X2ZhaWwoKTsKKysJCX0KKysJ aWYgKHBrKQorKwkJRVZQX1BLRVlfZnJlZShwayk7CisrCXJldHVybiByZXQ7CisrCX0KKysKKysj ZW5kaWYKKysKKyBpbnQgRUNfS0VZX2dlbmVyYXRlX2tleShFQ19LRVkgKmVja2V5KQorIAl7CQor IAlpbnQJb2sgPSAwOworQEAgLTI0Miw4ICsyNzIsMTEgQEAgaW50IEVDX0tFWV9nZW5lcmF0ZV9r ZXkoRUNfS0VZICplY2tleSkKKyAJRUNfUE9JTlQgKnB1Yl9rZXkgPSBOVUxMOworIAorICNpZmRl ZiBPUEVOU1NMX0ZJUFMKKy0JaWYgKEZJUFNfbW9kZSgpKQorLQkJcmV0dXJuIEZJUFNfZWNfa2V5 X2dlbmVyYXRlX2tleShlY2tleSk7CisrCWlmKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpCisrCQl7 CisrCQlGSVBTZXJyKEZJUFNfRl9FQ19LRVlfR0VORVJBVEVfS0VZLEZJUFNfUl9GSVBTX1NFTEZU RVNUX0ZBSUxFRCk7CisrCQlyZXR1cm4gMDsKKysJCX0KKyAjZW5kaWYKKyAKKyAJaWYgKCFlY2tl eSB8fCAhZWNrZXktPmdyb3VwKQorQEAgLTI4Nyw2ICszMjAsMTUgQEAgaW50IEVDX0tFWV9nZW5l cmF0ZV9rZXkoRUNfS0VZICplY2tleSkKKyAJZWNrZXktPnByaXZfa2V5ID0gcHJpdl9rZXk7Cisg CWVja2V5LT5wdWJfa2V5ICA9IHB1Yl9rZXk7CisgCisrI2lmZGVmIE9QRU5TU0xfRklQUworKwlp ZighZmlwc19jaGVja19lYyhlY2tleSkpCisrCQl7CisrCQllY2tleS0+cHJpdl9rZXkgPSBOVUxM OworKwkJZWNrZXktPnB1Yl9rZXkgID0gTlVMTDsKKysJICAgIAlnb3RvIGVycjsKKysJCX0KKysj ZW5kaWYKKysKKyAJb2s9MTsKKyAKKyBlcnI6CQorQEAgLTQyOSwxMCArNDcxLDEyIEBAIGludCBF Q19LRVlfc2V0X3B1YmxpY19rZXlfYWZmaW5lX2Nvb3JkaW4KKyAJCQkJCQkJCXR4LCB0eSwgY3R4 KSkKKyAJCQlnb3RvIGVycjsKKyAJCX0KKy0JLyogQ2hlY2sgaWYgcmV0cmlldmVkIGNvb3JkaW5h dGVzIG1hdGNoIG9yaWdpbmFsczogaWYgbm90IHZhbHVlcworLQkgKiBhcmUgb3V0IG9mIHJhbmdl LgorKwkvKiBDaGVjayBpZiByZXRyaWV2ZWQgY29vcmRpbmF0ZXMgbWF0Y2ggb3JpZ2luYWxzIGFu ZCBhcmUgbGVzcyB0aGFuCisrCSAqIGZpZWxkIG9yZGVyOiBpZiBub3QgdmFsdWVzIGFyZSBvdXQg b2YgcmFuZ2UuCisgCSAqLworLQlpZiAoQk5fY21wKHgsIHR4KSB8fCBCTl9jbXAoeSwgdHkpKQor KwlpZiAoQk5fY21wKHgsIHR4KSB8fCBCTl9jbXAoeSwgdHkpCisrCQl8fCAoQk5fY21wKHgsICZr ZXktPmdyb3VwLT5maWVsZCkgPj0gMCkKKysJCXx8IChCTl9jbXAoeSwgJmtleS0+Z3JvdXAtPmZp ZWxkKSA+PSAwKSkKKyAJCXsKKyAJCUVDZXJyKEVDX0ZfRUNfS0VZX1NFVF9QVUJMSUNfS0VZX0FG RklORV9DT09SRElOQVRFUywKKyAJCQlFQ19SX0NPT1JESU5BVEVTX09VVF9PRl9SQU5HRSk7Citk aWZmIC11cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZWMvZWNwX21vbnQuYy5maXBzLWVjIG9wZW5z c2wtMS4wLjFlL2NyeXB0by9lYy9lY3BfbW9udC5jCistLS0gb3BlbnNzbC0xLjAuMWUvY3J5cHRv L2VjL2VjcF9tb250LmMuZmlwcy1lYwkyMDEzLTAyLTExIDE1OjI2OjA0LjAwMDAwMDAwMCArMDAw MAorKysrIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9lYy9lY3BfbW9udC5jCTIwMTMtMTAtMTUgMDE6 MDg6MDYuMDQ3NzgzMTQ2ICswMTAwCitAQCAtNjMsMTggKzYzLDExIEBACisgCisgI2luY2x1ZGUg PG9wZW5zc2wvZXJyLmg+CisgCistI2lmZGVmIE9QRU5TU0xfRklQUworLSNpbmNsdWRlIDxvcGVu c3NsL2ZpcHMuaD4KKy0jZW5kaWYKKy0KKyAjaW5jbHVkZSAiZWNfbGNsLmgiCisgCisgCisgY29u c3QgRUNfTUVUSE9EICpFQ19HRnBfbW9udF9tZXRob2Qodm9pZCkKKyAJeworLSNpZmRlZiBPUEVO U1NMX0ZJUFMKKy0JcmV0dXJuIGZpcHNfZWNfZ2ZwX21vbnRfbWV0aG9kKCk7CistI2Vsc2UKKyAJ c3RhdGljIGNvbnN0IEVDX01FVEhPRCByZXQgPSB7CisgCQlFQ19GTEFHU19ERUZBVUxUX09DVCwK KyAJCU5JRF9YOV82Ml9wcmltZV9maWVsZCwKK0BAIC0xMTUsNyArMTA4LDYgQEAgY29uc3QgRUNf TUVUSE9EICpFQ19HRnBfbW9udF9tZXRob2Qodm9pZAorIAkJZWNfR0ZwX21vbnRfZmllbGRfc2V0 X3RvX29uZSB9OworIAorIAlyZXR1cm4gJnJldDsKKy0jZW5kaWYKKyAJfQorIAorIAorZGlmZiAt dXAgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2VjL2VjcF9uaXN0LmMuZmlwcy1lYyBvcGVuc3NsLTEu MC4xZS9jcnlwdG8vZWMvZWNwX25pc3QuYworLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9lYy9l Y3BfbmlzdC5jLmZpcHMtZWMJMjAxMy0wMi0xMSAxNToyNjowNC4wMDAwMDAwMDAgKzAwMDAKKysr KyBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZWMvZWNwX25pc3QuYwkyMDEzLTEwLTE1IDAxOjA4OjA2 LjA0Nzc4MzE0NiArMDEwMAorQEAgLTY3LDE1ICs2Nyw4IEBACisgI2luY2x1ZGUgPG9wZW5zc2wv b2JqX21hYy5oPgorICNpbmNsdWRlICJlY19sY2wuaCIKKyAKKy0jaWZkZWYgT1BFTlNTTF9GSVBT CistI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorLSNlbmRpZgorLQorIGNvbnN0IEVDX01FVEhP RCAqRUNfR0ZwX25pc3RfbWV0aG9kKHZvaWQpCisgCXsKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCist CXJldHVybiBmaXBzX2VjX2dmcF9uaXN0X21ldGhvZCgpOworLSNlbHNlCisgCXN0YXRpYyBjb25z dCBFQ19NRVRIT0QgcmV0ID0geworIAkJRUNfRkxBR1NfREVGQVVMVF9PQ1QsCisgCQlOSURfWDlf NjJfcHJpbWVfZmllbGQsCitAQCAtMTE2LDcgKzEwOSw2IEBAIGNvbnN0IEVDX01FVEhPRCAqRUNf R0ZwX25pc3RfbWV0aG9kKHZvaWQKKyAJCTAgLyogZmllbGRfc2V0X3RvX29uZSAqLyB9OworIAor IAlyZXR1cm4gJnJldDsKKy0jZW5kaWYKKyAJfQorIAorIGludCBlY19HRnBfbmlzdF9ncm91cF9j b3B5KEVDX0dST1VQICpkZXN0LCBjb25zdCBFQ19HUk9VUCAqc3JjKQorZGlmZiAtdXAgb3BlbnNz bC0xLjAuMWUvY3J5cHRvL2VjL2VjcF9zbXBsLmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4xZS9jcnlw dG8vZWMvZWNwX3NtcGwuYworLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9lYy9lY3Bfc21wbC5j LmZpcHMtZWMJMjAxMy0wMi0xMSAxNToyNjowNC4wMDAwMDAwMDAgKzAwMDAKKysrKyBvcGVuc3Ns LTEuMC4xZS9jcnlwdG8vZWMvZWNwX3NtcGwuYwkyMDEzLTEwLTE1IDAxOjA4OjA2LjA0Nzc4MzE0 NiArMDEwMAorQEAgLTY1LDE3ICs2NSwxMCBAQAorICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgor ICNpbmNsdWRlIDxvcGVuc3NsL3N5bWhhY2tzLmg+CisgCistI2lmZGVmIE9QRU5TU0xfRklQUwor LSNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKy0jZW5kaWYKKy0KKyAjaW5jbHVkZSAiZWNfbGNs LmgiCisgCisgY29uc3QgRUNfTUVUSE9EICpFQ19HRnBfc2ltcGxlX21ldGhvZCh2b2lkKQorIAl7 CistI2lmZGVmIE9QRU5TU0xfRklQUworLQlyZXR1cm4gZmlwc19lY19nZnBfc2ltcGxlX21ldGhv ZCgpOworLSNlbHNlCisgCXN0YXRpYyBjb25zdCBFQ19NRVRIT0QgcmV0ID0geworIAkJRUNfRkxB R1NfREVGQVVMVF9PQ1QsCisgCQlOSURfWDlfNjJfcHJpbWVfZmllbGQsCitAQCAtMTE2LDcgKzEw OSw2IEBAIGNvbnN0IEVDX01FVEhPRCAqRUNfR0ZwX3NpbXBsZV9tZXRob2Qodm8KKyAJCTAgLyog ZmllbGRfc2V0X3RvX29uZSAqLyB9OworIAorIAlyZXR1cm4gJnJldDsKKy0jZW5kaWYKKyAJfQor IAorIAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2VjZGgvZWNkaC5oLmZpcHMtZWMg b3BlbnNzbC0xLjAuMWUvY3J5cHRvL2VjZGgvZWNkaC5oCistLS0gb3BlbnNzbC0xLjAuMWUvY3J5 cHRvL2VjZGgvZWNkaC5oLmZpcHMtZWMJMjAxMy0xMC0xNSAwMTowODowNS43NDg3ODM1NTkgKzAx MDAKKysrKyBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZWNkaC9lY2RoLmgJMjAxMy0xMC0xNSAwMTow ODowNi4wNDY3ODMxNDggKzAxMDAKK0BAIC04NSw2ICs4NSw4IEBACisgZXh0ZXJuICJDIiB7Cisg I2VuZGlmCisgCisrI2RlZmluZSBFQ19GTEFHX0NPRkFDVE9SX0VDREgJMHgxMDAwCisrCisgY29u c3QgRUNESF9NRVRIT0QgKkVDREhfT3BlblNTTCh2b2lkKTsKKyAKKyB2b2lkCSAgRUNESF9zZXRf ZGVmYXVsdF9tZXRob2QoY29uc3QgRUNESF9NRVRIT0QgKik7CitkaWZmIC11cCBvcGVuc3NsLTEu MC4xZS9jcnlwdG8vZWNkaC9lY2RodGVzdC5jLmZpcHMtZWMgb3BlbnNzbC0xLjAuMWUvY3J5cHRv L2VjZGgvZWNkaHRlc3QuYworLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9lY2RoL2VjZGh0ZXN0 LmMuZmlwcy1lYwkyMDEzLTAyLTExIDE1OjI2OjA0LjAwMDAwMDAwMCArMDAwMAorKysrIG9wZW5z c2wtMS4wLjFlL2NyeXB0by9lY2RoL2VjZGh0ZXN0LmMJMjAxMy0xMC0xNSAwMTowODowNi4wNDY3 ODMxNDggKzAxMDAKK0BAIC0zMjMsMTEgKzMyMywxNSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQorIAlpZiAoKGN0eD1CTl9DVFhfbmV3KCkpID09IE5VTEwpIGdvdG8gZXJyOwor IAorIAkvKiBOSVNUIFBSSU1FIENVUlZFUyBURVNUUyAqLworKyNpZiAwCisgCWlmICghdGVzdF9l Y2RoX2N1cnZlKE5JRF9YOV82Ml9wcmltZTE5MnYxLCAiTklTVCBQcmltZS1DdXJ2ZSBQLTE5MiIs IGN0eCwgb3V0KSkgZ290byBlcnI7CisgCWlmICghdGVzdF9lY2RoX2N1cnZlKE5JRF9zZWNwMjI0 cjEsICJOSVNUIFByaW1lLUN1cnZlIFAtMjI0IiwgY3R4LCBvdXQpKSBnb3RvIGVycjsKKysjZW5k aWYKKyAJaWYgKCF0ZXN0X2VjZGhfY3VydmUoTklEX1g5XzYyX3ByaW1lMjU2djEsICJOSVNUIFBy aW1lLUN1cnZlIFAtMjU2IiwgY3R4LCBvdXQpKSBnb3RvIGVycjsKKyAJaWYgKCF0ZXN0X2VjZGhf Y3VydmUoTklEX3NlY3AzODRyMSwgIk5JU1QgUHJpbWUtQ3VydmUgUC0zODQiLCBjdHgsIG91dCkp IGdvdG8gZXJyOworKyNpZiAwCisgCWlmICghdGVzdF9lY2RoX2N1cnZlKE5JRF9zZWNwNTIxcjEs ICJOSVNUIFByaW1lLUN1cnZlIFAtNTIxIiwgY3R4LCBvdXQpKSBnb3RvIGVycjsKKysjZW5kaWYK KyAjaWZuZGVmIE9QRU5TU0xfTk9fRUMyTQorIAkvKiBOSVNUIEJJTkFSWSBDVVJWRVMgVEVTVFMg Ki8KKyAJaWYgKCF0ZXN0X2VjZGhfY3VydmUoTklEX3NlY3QxNjNrMSwgIk5JU1QgQmluYXJ5LUN1 cnZlIEstMTYzIiwgY3R4LCBvdXQpKSBnb3RvIGVycjsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjFl L2NyeXB0by9lY2RoL2VjaF9saWIuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9lY2Ro L2VjaF9saWIuYworLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9lY2RoL2VjaF9saWIuYy5maXBz LWVjCTIwMTMtMDItMTEgMTU6MjY6MDQuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAu MWUvY3J5cHRvL2VjZGgvZWNoX2xpYi5jCTIwMTMtMTAtMTUgMDE6MDg6MDYuMDQ2NzgzMTQ4ICsw MTAwCitAQCAtOTQsMTQgKzk0LDcgQEAgY29uc3QgRUNESF9NRVRIT0QgKkVDREhfZ2V0X2RlZmF1 bHRfbWV0aAorIAl7CisgCWlmKCFkZWZhdWx0X0VDREhfbWV0aG9kKSAKKyAJCXsKKy0jaWZkZWYg T1BFTlNTTF9GSVBTCistCQlpZiAoRklQU19tb2RlKCkpCistCQkJcmV0dXJuIEZJUFNfZWNkaF9v cGVuc3NsKCk7CistCQllbHNlCistCQkJcmV0dXJuIEVDREhfT3BlblNTTCgpOworLSNlbHNlCisg CQlkZWZhdWx0X0VDREhfbWV0aG9kID0gRUNESF9PcGVuU1NMKCk7CistI2VuZGlmCisgCQl9Cisg CXJldHVybiBkZWZhdWx0X0VDREhfbWV0aG9kOworIAl9CitkaWZmIC11cCBvcGVuc3NsLTEuMC4x ZS9jcnlwdG8vZWNkaC9lY2hfb3NzbC5jLmZpcHMtZWMgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2Vj ZGgvZWNoX29zc2wuYworLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9lY2RoL2VjaF9vc3NsLmMu Zmlwcy1lYwkyMDEzLTAyLTExIDE1OjI2OjA0LjAwMDAwMDAwMCArMDAwMAorKysrIG9wZW5zc2wt MS4wLjFlL2NyeXB0by9lY2RoL2VjaF9vc3NsLmMJMjAxMy0xMC0xNSAwMTowODowNi4wNDY3ODMx NDggKzAxMDAKK0BAIC03OSw2ICs3OSwxMCBAQAorICNpbmNsdWRlIDxvcGVuc3NsL29ial9tYWMu aD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgorIAorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysj aW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisrCisgc3RhdGljIGludCBlY2RoX2Nv bXB1dGVfa2V5KHZvaWQgKm91dCwgc2l6ZV90IGxlbiwgY29uc3QgRUNfUE9JTlQgKnB1Yl9rZXks CisgCUVDX0tFWSAqZWNkaCwgCisgCXZvaWQgKigqS0RGKShjb25zdCB2b2lkICppbiwgc2l6ZV90 IGlubGVuLCB2b2lkICpvdXQsIHNpemVfdCAqb3V0bGVuKSk7CitAQCAtOTAsNyArOTQsNyBAQCBz dGF0aWMgRUNESF9NRVRIT0Qgb3BlbnNzbF9lY2RoX21ldGggPSB7CisgCU5VTEwsIC8qIGluaXQg ICAgICovCisgCU5VTEwsIC8qIGZpbmlzaCAgICovCisgI2VuZGlmCistCTAsICAgIC8qIGZsYWdz ICAgICovCisrCUVDREhfRkxBR19GSVBTX01FVEhPRCwgICAgLyogZmxhZ3MgICAgKi8KKyAJTlVM TCAgLyogYXBwX2RhdGEgKi8KKyB9OworIAorQEAgLTExOCw2ICsxMjIsMTQgQEAgc3RhdGljIGlu dCBlY2RoX2NvbXB1dGVfa2V5KHZvaWQgKm91dCwgcworIAlzaXplX3QgYnVmbGVuLCBsZW47Cisg CXVuc2lnbmVkIGNoYXIgKmJ1Zj1OVUxMOworIAorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysJaWYo RklQU19zZWxmdGVzdF9mYWlsZWQoKSkKKysJCXsKKysJCUZJUFNlcnIoRklQU19GX0VDREhfQ09N UFVURV9LRVksRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKKysJCXJldHVybiAtMTsKKysJ CX0KKysjZW5kaWYKKysKKyAJaWYgKG91dGxlbiA+IElOVF9NQVgpCisgCQl7CisgCQlFQ0RIZXJy KEVDREhfRl9FQ0RIX0NPTVBVVEVfS0VZLEVSUl9SX01BTExPQ19GQUlMVVJFKTsgLyogc29ydCBv ZiwgYW55d2F5ICovCitAQCAtMTM3LDYgKzE0OSwxOCBAQCBzdGF0aWMgaW50IGVjZGhfY29tcHV0 ZV9rZXkodm9pZCAqb3V0LCBzCisgCQl9CisgCisgCWdyb3VwID0gRUNfS0VZX2dldDBfZ3JvdXAo ZWNkaCk7CisrCisrCWlmIChFQ19LRVlfZ2V0X2ZsYWdzKGVjZGgpICYgRUNfRkxBR19DT0ZBQ1RP Ul9FQ0RIKQorKwkJeworKwkJaWYgKCFFQ19HUk9VUF9nZXRfY29mYWN0b3IoZ3JvdXAsIHgsIGN0 eCkgfHwKKysJCQkhQk5fbXVsKHgsIHgsIHByaXZfa2V5LCBjdHgpKQorKwkJCXsKKysJCQlFQ0RI ZXJyKEVDREhfRl9FQ0RIX0NPTVBVVEVfS0VZLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisrCQkJ Z290byBlcnI7CisrCQkJfQorKwkJcHJpdl9rZXkgPSB4OworKwkJfQorKworIAlpZiAoKHRtcD1F Q19QT0lOVF9uZXcoZ3JvdXApKSA9PSBOVUxMKQorIAkJeworIAkJRUNESGVycihFQ0RIX0ZfRUNE SF9DT01QVVRFX0tFWSxFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CitkaWZmIC11cCBvcGVuc3NsLTEu MC4xZS9jcnlwdG8vZWNkc2EvZWNkc2F0ZXN0LmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4xZS9jcnlw dG8vZWNkc2EvZWNkc2F0ZXN0LmMKKy0tLSBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZWNkc2EvZWNk c2F0ZXN0LmMuZmlwcy1lYwkyMDEzLTAyLTExIDE1OjI2OjA0LjAwMDAwMDAwMCArMDAwMAorKysr IG9wZW5zc2wtMS4wLjFlL2NyeXB0by9lY2RzYS9lY2RzYXRlc3QuYwkyMDEzLTEwLTE1IDAxOjA4 OjA2LjA0Njc4MzE0OCArMDEwMAorQEAgLTEzOCwxMSArMTM4LDE0IEBAIGludCByZXN0b3JlX3Jh bmQodm9pZCkKKyAJfQorIAorIHN0YXRpYyBpbnQgZmJ5dGVzX2NvdW50ZXIgPSAwOworLXN0YXRp YyBjb25zdCBjaGFyICpudW1iZXJzWzhdID0geworK3N0YXRpYyBjb25zdCBjaGFyICpudW1iZXJz WzEwXSA9IHsKKysJIjY1MTA1Njc3MDkwNjAxNTA3NjA1NjgxMDc2MzQ1NjM1ODU2NzE5MDEwMDE1 NjY5NTYxNTY2NTY1OSIsCisgCSI2NTEwNTY3NzA5MDYwMTUwNzYwNTY4MTA3NjM0NTYzNTg1Njcx OTAxMDAxNTY2OTU2MTU2NjU2NTkiLAorIAkiNjE0MDUwNzA2NzA2NTAwMTA2MzA2NTA2NTU2NTY2 NzQwNTU2MDAwNjE2MTU1NjU2NTY2NTY1NjY1NCIsCisgCSI4NzYzMDAxMDE1MDcxMDc1Njc1MDEw NjYxMzA3NjE2NzEwNzgzNTcwMTA2NzEwNjc3ODE3NzY3MTY2IgorIAkiNzE2NzYxNzg3MjY3MTci LAorKwkiODc2MzAwMTAxNTA3MTA3NTY3NTAxMDY2MTMwNzYxNjcxMDc4MzU3MDEwNjcxMDY3Nzgx Nzc2NzE2NiIKKysJIjcxNjc2MTc4NzI2NzE3IiwKKyAJIjcwMDAwMDAxNzU2OTA1NjY0NjY1NTUw NTc4MTc1NzE1NzEwNzU3MDUwMTU3NTc3NTcwNTc3OTU3NTUiCisgCSI1NTY1NzE1Njc1NjY1NSIs CisgCSIxMjc1NTUyMTkxMTEzMjEyMzAwMDEyMDMwNDM5MTg3MTQ2MTY0NjQ2MTQ2NjQ2NDY2NzQ5 NDk0Nzk5IiwKK0BAIC0xNTcsNyArMTYwLDcgQEAgaW50IGZieXRlcyh1bnNpZ25lZCBjaGFyICpi dWYsIGludCBudW0pCisgCWludAlyZXQ7CisgCUJJR05VTQkqdG1wID0gTlVMTDsKKyAKKy0JaWYg KGZieXRlc19jb3VudGVyID49IDgpCisrCWlmIChmYnl0ZXNfY291bnRlciA+PSAxMCkKKyAJCXJl dHVybiAwOworIAl0bXAgPSBCTl9uZXcoKTsKKyAJaWYgKCF0bXApCitAQCAtNTUwLDcgKzU1Myw5 IEBAIGludCBtYWluKHZvaWQpCisgCVJBTkRfc2VlZChybmRfc2VlZCwgc2l6ZW9mKHJuZF9zZWVk KSk7CisgCisgCS8qIHRoZSB0ZXN0cyAqLworKyNpZiAwCisgCWlmICgheDlfNjJfdGVzdHMob3V0 KSkgIGdvdG8gZXJyOworKyNlbmRpZgorIAlpZiAoIXRlc3RfYnVpbHRpbihvdXQpKSBnb3RvIGVy cjsKKyAJCisgCXJldCA9IDA7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZWNkc2Ev ZWNzX2xpYi5jLmZpcHMtZWMgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2VjZHNhL2Vjc19saWIuYwor LS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9lY2RzYS9lY3NfbGliLmMuZmlwcy1lYwkyMDEzLTAy LTExIDE1OjI2OjA0LjAwMDAwMDAwMCArMDAwMAorKysrIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9l Y2RzYS9lY3NfbGliLmMJMjAxMy0xMC0xNSAwMTowODowNi4wNDY3ODMxNDggKzAxMDAKK0BAIC04 MSwxNCArODEsNyBAQCBjb25zdCBFQ0RTQV9NRVRIT0QgKkVDRFNBX2dldF9kZWZhdWx0X21lCisg eworIAlpZighZGVmYXVsdF9FQ0RTQV9tZXRob2QpIAorIAkJeworLSNpZmRlZiBPUEVOU1NMX0ZJ UFMKKy0JCWlmIChGSVBTX21vZGUoKSkKKy0JCQlyZXR1cm4gRklQU19lY2RzYV9vcGVuc3NsKCk7 CistCQllbHNlCistCQkJcmV0dXJuIEVDRFNBX09wZW5TU0woKTsKKy0jZWxzZQorIAkJZGVmYXVs dF9FQ0RTQV9tZXRob2QgPSBFQ0RTQV9PcGVuU1NMKCk7CistI2VuZGlmCisgCQl9CisgCXJldHVy biBkZWZhdWx0X0VDRFNBX21ldGhvZDsKKyB9CitkaWZmIC11cCBvcGVuc3NsLTEuMC4xZS9jcnlw dG8vZWNkc2EvZWNzX29zc2wuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9lY2RzYS9l Y3Nfb3NzbC5jCistLS0gb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2VjZHNhL2Vjc19vc3NsLmMuZmlw cy1lYwkyMDEzLTAyLTExIDE1OjI2OjA0LjAwMDAwMDAwMCArMDAwMAorKysrIG9wZW5zc2wtMS4w LjFlL2NyeXB0by9lY2RzYS9lY3Nfb3NzbC5jCTIwMTMtMTAtMTUgMDE6MDg6MDYuMDQ2NzgzMTQ4 ICswMTAwCitAQCAtNjAsNiArNjAsOSBAQAorICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorICNp bmNsdWRlIDxvcGVuc3NsL29ial9tYWMuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgorKyNp ZmRlZiBPUEVOU1NMX0ZJUFMKKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisg Cisgc3RhdGljIEVDRFNBX1NJRyAqZWNkc2FfZG9fc2lnbihjb25zdCB1bnNpZ25lZCBjaGFyICpk Z3N0LCBpbnQgZGxlbiwgCisgCQljb25zdCBCSUdOVU0gKiwgY29uc3QgQklHTlVNICosIEVDX0tF WSAqZWNrZXkpOworQEAgLTc3LDcgKzgwLDcgQEAgc3RhdGljIEVDRFNBX01FVEhPRCBvcGVuc3Ns X2VjZHNhX21ldGggPQorIAlOVUxMLCAvKiBpbml0ICAgICAqLworIAlOVUxMLCAvKiBmaW5pc2gg ICAqLworICNlbmRpZgorLQkwLCAgICAvKiBmbGFncyAgICAqLworKwlFQ0RTQV9GTEFHX0ZJUFNf TUVUSE9ELCAgICAvKiBmbGFncyAgICAqLworIAlOVUxMICAvKiBhcHBfZGF0YSAqLworIH07Cisg CitAQCAtMjMxLDYgKzIzNCwxNCBAQCBzdGF0aWMgRUNEU0FfU0lHICplY2RzYV9kb19zaWduKGNv bnN0IHVuCisgCUVDRFNBX0RBVEEgKmVjZHNhOworIAljb25zdCBCSUdOVU0gKnByaXZfa2V5Owor IAorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysJaWYoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkKKysJ CXsKKysJCUZJUFNlcnIoRklQU19GX0VDRFNBX0RPX1NJR04sRklQU19SX0ZJUFNfU0VMRlRFU1Rf RkFJTEVEKTsKKysJCXJldHVybiBOVUxMOworKwkJfQorKyNlbmRpZgorKworIAllY2RzYSAgICA9 IGVjZHNhX2NoZWNrKGVja2V5KTsKKyAJZ3JvdXAgICAgPSBFQ19LRVlfZ2V0MF9ncm91cChlY2tl eSk7CisgCXByaXZfa2V5ID0gRUNfS0VZX2dldDBfcHJpdmF0ZV9rZXkoZWNrZXkpOworQEAgLTM2 MCw2ICszNzEsMTQgQEAgc3RhdGljIGludCBlY2RzYV9kb192ZXJpZnkoY29uc3QgdW5zaWduZQor IAljb25zdCBFQ19HUk9VUCAqZ3JvdXA7CisgCWNvbnN0IEVDX1BPSU5UICpwdWJfa2V5OworIAor KyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysJaWYoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkKKysJCXsK KysJCUZJUFNlcnIoRklQU19GX0VDRFNBX0RPX1ZFUklGWSxGSVBTX1JfRklQU19TRUxGVEVTVF9G QUlMRUQpOworKwkJcmV0dXJuIC0xOworKwkJfQorKyNlbmRpZgorKworIAkvKiBjaGVjayBpbnB1 dCB2YWx1ZXMgKi8KKyAJaWYgKGVja2V5ID09IE5VTEwgfHwgKGdyb3VwID0gRUNfS0VZX2dldDBf Z3JvdXAoZWNrZXkpKSA9PSBOVUxMIHx8CisgCSAgICAocHViX2tleSA9IEVDX0tFWV9nZXQwX3B1 YmxpY19rZXkoZWNrZXkpKSA9PSBOVUxMIHx8IHNpZyA9PSBOVUxMKQorZGlmZiAtdXAgb3BlbnNz bC0xLjAuMWUvY3J5cHRvL2V2cC9tX2VjZHNhLmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4xZS9jcnlw dG8vZXZwL21fZWNkc2EuYworLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9ldnAvbV9lY2RzYS5j LmZpcHMtZWMJMjAxMy0wMi0xMSAxNToyNjowNC4wMDAwMDAwMDAgKzAwMDAKKysrKyBvcGVuc3Ns LTEuMC4xZS9jcnlwdG8vZXZwL21fZWNkc2EuYwkyMDEzLTEwLTE1IDAxOjA4OjA2LjA0Nzc4MzE0 NiArMDEwMAorQEAgLTExNiw3ICsxMTYsNiBAQAorICNpbmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4K KyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9fU0hBCistI2lmbmRlZiBPUEVOU1NMX0ZJUFMKKyAKKyBz dGF0aWMgaW50IGluaXQoRVZQX01EX0NUWCAqY3R4KQorIAl7IHJldHVybiBTSEExX0luaXQoY3R4 LT5tZF9kYXRhKTsgfQorQEAgLTEzMiw3ICsxMzEsNyBAQCBzdGF0aWMgY29uc3QgRVZQX01EIGVj ZHNhX21kPQorIAlOSURfZWNkc2Ffd2l0aF9TSEExLAorIAlOSURfZWNkc2Ffd2l0aF9TSEExLAor IAlTSEFfRElHRVNUX0xFTkdUSCwKKy0JRVZQX01EX0ZMQUdfUEtFWV9ESUdFU1QsCisrCUVWUF9N RF9GTEFHX1BLRVlfRElHRVNUfEVWUF9NRF9GTEFHX0ZJUFMsCisgCWluaXQsCisgCXVwZGF0ZSwK KyAJZmluYWwsCitAQCAtMTQ4LDQgKzE0NywzIEBAIGNvbnN0IEVWUF9NRCAqRVZQX2VjZHNhKHZv aWQpCisgCXJldHVybigmZWNkc2FfbWQpOworIAl9CisgI2VuZGlmCistI2VuZGlmCitkaWZmIC11 cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZmlwcy9NYWtlZmlsZS5maXBzLWVjIG9wZW5zc2wtMS4w LjFlL2NyeXB0by9maXBzL01ha2VmaWxlCistLS0gb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2ZpcHMv TWFrZWZpbGUuZmlwcy1lYwkyMDEzLTEwLTE1IDAxOjA4OjA2LjAwODc4MzIwMCArMDEwMAorKysr IG9wZW5zc2wtMS4wLjFlL2NyeXB0by9maXBzL01ha2VmaWxlCTIwMTMtMTAtMTUgMDE6MDg6MTcu NjI3NzY3MTY4ICswMTAwCitAQCAtMjQsMTMgKzI0LDEzIEBAIExJQlNSQz1maXBzX2Flc19zZWxm dGVzdC5jIGZpcHNfZGVzX3NlbGYKKyAgICAgZmlwc19yc2Ffc2VsZnRlc3QuYyBmaXBzX3NoYV9z ZWxmdGVzdC5jIGZpcHMuYyBmaXBzX2RzYV9zZWxmdGVzdC5jICBmaXBzX3JhbmQuYyBcCisgICAg IGZpcHNfcnNhX3g5MzFnLmMgZmlwc19wb3N0LmMgZmlwc19kcmJnX2N0ci5jIGZpcHNfZHJiZ19o YXNoLmMgZmlwc19kcmJnX2htYWMuYyBcCisgICAgIGZpcHNfZHJiZ19saWIuYyBmaXBzX2RyYmdf cmFuZC5jIGZpcHNfZHJiZ19zZWxmdGVzdC5jIGZpcHNfcmFuZF9saWIuYyBcCistICAgIGZpcHNf Y21hY19zZWxmdGVzdC5jIGZpcHNfZW5jLmMgZmlwc19tZC5jCisrICAgIGZpcHNfY21hY19zZWxm dGVzdC5jIGZpcHNfZWNkaF9zZWxmdGVzdC5jIGZpcHNfZWNkc2Ffc2VsZnRlc3QuYyBmaXBzX2Vu Yy5jIGZpcHNfbWQuYworIAorIExJQk9CSj1maXBzX2Flc19zZWxmdGVzdC5vIGZpcHNfZGVzX3Nl bGZ0ZXN0Lm8gZmlwc19obWFjX3NlbGZ0ZXN0Lm8gZmlwc19yYW5kX3NlbGZ0ZXN0Lm8gXAorICAg ICBmaXBzX3JzYV9zZWxmdGVzdC5vIGZpcHNfc2hhX3NlbGZ0ZXN0Lm8gZmlwcy5vIGZpcHNfZHNh X3NlbGZ0ZXN0Lm8gIGZpcHNfcmFuZC5vIFwKKyAgICAgZmlwc19yc2FfeDkzMWcubyBmaXBzX3Bv c3QubyBmaXBzX2RyYmdfY3RyLm8gZmlwc19kcmJnX2hhc2gubyBmaXBzX2RyYmdfaG1hYy5vIFwK KyAgICAgZmlwc19kcmJnX2xpYi5vIGZpcHNfZHJiZ19yYW5kLm8gZmlwc19kcmJnX3NlbGZ0ZXN0 Lm8gZmlwc19yYW5kX2xpYi5vIFwKKy0gICAgZmlwc19jbWFjX3NlbGZ0ZXN0Lm8gZmlwc19lbmMu byBmaXBzX21kLm8KKysgICAgZmlwc19jbWFjX3NlbGZ0ZXN0Lm8gZmlwc19lY2RoX3NlbGZ0ZXN0 Lm8gZmlwc19lY2RzYV9zZWxmdGVzdC5vIGZpcHNfZW5jLm8gZmlwc19tZC5vCisgCisgTElCQ1JZ UFRPPS1MLi4gLWxjcnlwdG8KKyAKK0BAIC0xMTgsNiArMTE4LDIxIEBAIGZpcHNfYWVzX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnMKKyBmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKKyBmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvc3RhY2suaAorIGZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfYWVzX3NlbGZ0ZXN0LmMKKytmaXBzX2NtYWNfc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5z c2wvYmlvLmgKKytmaXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Nt YWMuaAorK2ZpcHNfY21hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRv LmgKKytmaXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmgg Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oCisrZmlwc19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCisrZmlw c19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCisrZmlwc19j bWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKKytmaXBzX2Nt YWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAorK2ZpcHNfY21h Y19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAorK2ZpcHNf Y21hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAorK2ZpcHNf Y21hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAorK2ZpcHNf Y21hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKKytmaXBz X2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKKytmaXBzX2Nt YWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19jbWFj X3NlbGZ0ZXN0LmMKKytmaXBzX2NtYWNfc2VsZnRlc3QubzogZmlwc19sb2NsLmgKKyBmaXBzX2Rl c19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9iaW8uaAorIGZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9jcnlwdG8uaAorIGZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9l X29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAorQEAgLTIzMSw2ICsyNDYsNDYgQEAg Zmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVucworIGZpcHNfZHNhX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCisgZmlwc19kc2Ffc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19kc2Ffc2VsZnRlc3QuYwor IGZpcHNfZHNhX3NlbGZ0ZXN0Lm86IGZpcHNfbG9jbC5oCisrZmlwc19lY2RoX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5o CisrZmlwc19lY2RoX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ibi5oIC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAorK2ZpcHNfZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZWMuaAorK2ZpcHNf ZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZWNkaC5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9lcnIuaAorK2ZpcHNfZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAorK2ZpcHNfZWNkaF9zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAorK2ZpcHNfZWNkaF9zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5oCisrZmlwc19lY2RoX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKKytmaXBzX2VjZGhfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytmaXBzX2VjZGhfc2VsZnRl c3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgKKytmaXBzX2VjZGhfc2VsZnRl c3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgKKytmaXBzX2VjZGhfc2VsZnRl c3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCisrZmlwc19lY2RoX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCisrZmlwc19lY2RoX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfZWNkaF9zZWxmdGVzdC5j CisrZmlwc19lY2RoX3NlbGZ0ZXN0Lm86IGZpcHNfbG9jbC5oCisrZmlwc19lY2RzYV9zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9i aW8uaAorK2ZpcHNfZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2JuLmgK KytmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAor K2ZpcHNfZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2VjLmgKKytmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9lY2RzYS5oCisrZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvZXJyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oCisrZmlwc19lY2Rz YV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCisrZmlwc19lY2RzYV9z ZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAorK2ZpcHNfZWNkc2Ffc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAorK2ZpcHNfZWNkc2Ffc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAorK2ZpcHNfZWNkc2Ffc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytmaXBzX2VjZHNh X3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCisrZmlwc19lY2Rz YV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAorK2ZpcHNfZWNk c2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCisrZmlwc19l Y2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAorK2ZpcHNfZWNk c2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19lY2Rz YV9zZWxmdGVzdC5jCisrZmlwc19lbmMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKKytmaXBzX2VuYy5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvY3J5cHRvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmgKKytmaXBzX2VuYy5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5o CisrZmlwc19lbmMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaCAuLi8uLi9pbmNsdWRl L29wZW5zc2wvbGhhc2guaAorK2ZpcHNfZW5jLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpf bWFjLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAorK2ZpcHNfZW5jLm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCisrZmlwc19lbmMubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL29wZW5zc2x2LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgKKytm aXBzX2VuYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmggLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL3N0YWNrLmgKKytmaXBzX2VuYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3lt aGFja3MuaCBmaXBzX2VuYy5jCisgZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCisgZmlwc19obWFjX3Nl bGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAorIGZpcHNfaG1hY19zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5z c2wvZXJyLmgKK0BAIC0yNDUsNiArMzAwLDE1IEBAIGZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8u Li9pbmNsdWRlL29wZW4KKyBmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL3NhZmVzdGFjay5oCisgZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zdGFjay5oCisgZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9zeW1oYWNrcy5oIGZpcHNfaG1hY19zZWxmdGVzdC5jCisrZmlwc19tZC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAorK2ZpcHNfbWQu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9l X29zMi5oCisrZmlwc19tZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2V2cC5oCisrZmlwc19tZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlw cy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCisrZmlwc19tZC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb2JqX21hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKKytm aXBzX21kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCisrZmlwc19tZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv b3NzbF90eXAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKKytmaXBzX21kLm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1o YWNrcy5oCisrZmlwc19tZC5vOiBmaXBzX21kLmMKKyBmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmgKKyBmaXBzX3Bvc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlw dG8uaAorIGZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZHNhLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2Vfb3MyLmgKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9maXBz L2NhdnMvZmlwc19lY2RodnMuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9maXBzL2Nh dnMvZmlwc19lY2RodnMuYworLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9maXBzL2NhdnMvZmlw c19lY2RodnMuYy5maXBzLWVjCTIwMTMtMTAtMTUgMDE6MDg6MDYuMDQ3NzgzMTQ2ICswMTAwCisr Kysgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2ZpcHMvY2F2cy9maXBzX2VjZGh2cy5jCTIwMTMtMTAt MTUgMDE6MDg6MDYuMDQ3NzgzMTQ2ICswMTAwCitAQCAtMCwwICsxLDQ5NiBAQAorKy8qIGZpcHMv ZWNkaC9maXBzX2VjZGh2cy5jICovCisrLyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29u IChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCisrICogcHJvamVjdC4KKysgKi8K KysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9q ZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1 c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlm aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoK KysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl IGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmli dXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcg ZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhl IGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVz IHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVz ZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAq CisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0 IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVu IHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICog ICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBm cm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9y IG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRl bgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYu IFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBm b2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGlu Y2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAg Zm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLyki CisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pF Q1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICog UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBS T0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0Us IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVS IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB Q1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug T1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg U1VDSCBEQU1BR0UuCisrICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKi8KKysKKysKKysjZGVmaW5lIE9QRU5T U0xfRklQU0FQSQorKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+CisrCisrI2lmbmRl ZiBPUEVOU1NMX0ZJUFMKKysjaW5jbHVkZSA8c3RkaW8uaD4KKysKKytpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCisreworKyAgICBwcmludGYoIk5vIEZJUFMgRUNESCBzdXBwb3J0XG4i KTsKKysgICAgcmV0dXJuKDApOworK30KKysjZWxzZQorKworKyNpbmNsdWRlIDxvcGVuc3NsL2Ny eXB0by5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZWNk aC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIu aD4KKysjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2lu Y2x1ZGUgPGN0eXBlLmg+CisrCisrI2luY2x1ZGUgImZpcHNfdXRsLmgiCisrCisrc3RhdGljIGNv bnN0IEVWUF9NRCAqZXBhcnNlX21kKGNoYXIgKmxpbmUpCisrCXsKKysJY2hhciAqcDsKKysJaWYg KGxpbmVbMF0gIT0gJ1snIHx8IGxpbmVbMV0gIT0gJ0UnKQorKwkJcmV0dXJuIE5VTEw7CisrCXAg PSBzdHJjaHIobGluZSwgJy0nKTsKKysJaWYgKCFwKQorKwkJcmV0dXJuIE5VTEw7CisrCWxpbmUg PSBwICsgMTsKKysJcCA9IHN0cmNocihsaW5lLCAnXScpOworKwlpZiAoIXApCisrCQlyZXR1cm4g TlVMTDsKKysJKnAgPSAwOworKwlwID0gbGluZTsKKysJd2hpbGUoaXNzcGFjZSgqcCkpCisrCQlw Kys7CisrCWlmICghc3RyY21wKHAsICJTSEExIikpCisrCQlyZXR1cm4gRVZQX3NoYTEoKTsKKysJ ZWxzZSBpZiAoIXN0cmNtcChwLCAiU0hBMjI0IikpCisrCQlyZXR1cm4gRVZQX3NoYTIyNCgpOwor KwllbHNlIGlmICghc3RyY21wKHAsICJTSEEyNTYiKSkKKysJCXJldHVybiBFVlBfc2hhMjU2KCk7 CisrCWVsc2UgaWYgKCFzdHJjbXAocCwgIlNIQTM4NCIpKQorKwkJcmV0dXJuIEVWUF9zaGEzODQo KTsKKysJZWxzZSBpZiAoIXN0cmNtcChwLCAiU0hBNTEyIikpCisrCQlyZXR1cm4gRVZQX3NoYTUx MigpOworKwllbHNlCisrCQlyZXR1cm4gTlVMTDsKKysJfQorKworK3N0YXRpYyBpbnQgbG9va3Vw X2N1cnZlMihjaGFyICpjbmFtZSkKKysJeworKwljaGFyICpwOworKwlwID0gc3RyY2hyKGNuYW1l LCAnXScpOworKwlpZiAoIXApCisrCQl7CisrCQlmcHJpbnRmKHN0ZGVyciwgIlBhcnNlIGVycm9y OiBtaXNzaW5nIF1cbiIpOworKwkJcmV0dXJuIE5JRF91bmRlZjsKKysJCX0KKysJKnAgPSAwOwor KworKwlpZiAoIXN0cmNtcChjbmFtZSwgIkItMTYzIikpCisrCQlyZXR1cm4gTklEX3NlY3QxNjNy MjsKKysJaWYgKCFzdHJjbXAoY25hbWUsICJCLTIzMyIpKQorKwkJcmV0dXJuIE5JRF9zZWN0MjMz cjE7CisrCWlmICghc3RyY21wKGNuYW1lLCAiQi0yODMiKSkKKysJCXJldHVybiBOSURfc2VjdDI4 M3IxOworKwlpZiAoIXN0cmNtcChjbmFtZSwgIkItNDA5IikpCisrCQlyZXR1cm4gTklEX3NlY3Q0 MDlyMTsKKysJaWYgKCFzdHJjbXAoY25hbWUsICJCLTU3MSIpKQorKwkJcmV0dXJuIE5JRF9zZWN0 NTcxcjE7CisrCWlmICghc3RyY21wKGNuYW1lLCAiSy0xNjMiKSkKKysJCXJldHVybiBOSURfc2Vj dDE2M2sxOworKwlpZiAoIXN0cmNtcChjbmFtZSwgIkstMjMzIikpCisrCQlyZXR1cm4gTklEX3Nl Y3QyMzNrMTsKKysJaWYgKCFzdHJjbXAoY25hbWUsICJLLTI4MyIpKQorKwkJcmV0dXJuIE5JRF9z ZWN0MjgzazE7CisrCWlmICghc3RyY21wKGNuYW1lLCAiSy00MDkiKSkKKysJCXJldHVybiBOSURf c2VjdDQwOWsxOworKwlpZiAoIXN0cmNtcChjbmFtZSwgIkstNTcxIikpCisrCQlyZXR1cm4gTklE X3NlY3Q1NzFrMTsKKysJaWYgKCFzdHJjbXAoY25hbWUsICJQLTE5MiIpKQorKwkJcmV0dXJuIE5J RF9YOV82Ml9wcmltZTE5MnYxOworKwlpZiAoIXN0cmNtcChjbmFtZSwgIlAtMjI0IikpCisrCQly ZXR1cm4gTklEX3NlY3AyMjRyMTsKKysJaWYgKCFzdHJjbXAoY25hbWUsICJQLTI1NiIpKQorKwkJ cmV0dXJuIE5JRF9YOV82Ml9wcmltZTI1NnYxOworKwlpZiAoIXN0cmNtcChjbmFtZSwgIlAtMzg0 IikpCisrCQlyZXR1cm4gTklEX3NlY3AzODRyMTsKKysJaWYgKCFzdHJjbXAoY25hbWUsICJQLTUy MSIpKQorKwkJcmV0dXJuIE5JRF9zZWNwNTIxcjE7CisrCisrCWZwcmludGYoc3RkZXJyLCAiVW5r bm93biBDdXJ2ZSBuYW1lICVzXG4iLCBjbmFtZSk7CisrCXJldHVybiBOSURfdW5kZWY7CisrCX0K KysKKytzdGF0aWMgaW50IGxvb2t1cF9jdXJ2ZShjaGFyICpjbmFtZSkKKysJeworKwljaGFyICpw OworKwlwID0gc3RyY2hyKGNuYW1lLCAnOicpOworKwlpZiAoIXApCisrCQl7CisrCQlmcHJpbnRm KHN0ZGVyciwgIlBhcnNlIGVycm9yOiBtaXNzaW5nIDpcbiIpOworKwkJcmV0dXJuIE5JRF91bmRl ZjsKKysJCX0KKysJY25hbWUgPSBwICsgMTsKKysJd2hpbGUoaXNzcGFjZSgqY25hbWUpKQorKwkJ Y25hbWUrKzsKKysJcmV0dXJuIGxvb2t1cF9jdXJ2ZTIoY25hbWUpOworKwl9CisrCisrc3RhdGlj IEVDX1BPSU5UICptYWtlX3BlZXIoRUNfR1JPVVAgKmdyb3VwLCBCSUdOVU0gKngsIEJJR05VTSAq eSkKKysJeworKwlFQ19QT0lOVCAqcGVlcjsKKysJaW50IHJ2OworKwlCTl9DVFggKmM7CisrCXBl ZXIgPSBFQ19QT0lOVF9uZXcoZ3JvdXApOworKwlpZiAoIXBlZXIpCisrCQlyZXR1cm4gTlVMTDsK KysJYyA9IEJOX0NUWF9uZXcoKTsKKysJaWYgKEVDX01FVEhPRF9nZXRfZmllbGRfdHlwZShFQ19H Uk9VUF9tZXRob2Rfb2YoZ3JvdXApKQorKwkJPT0gTklEX1g5XzYyX3ByaW1lX2ZpZWxkKQorKwkJ cnYgPSBFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgcGVlciwgeCwg eSwgYyk7CisrCWVsc2UKKysjaWZkZWYgT1BFTlNTTF9OT19FQzJNCisrCQl7CisrCQlmcHJpbnRm KHN0ZGVyciwgIkVSUk9SOiBHRjJtIG5vdCBzdXBwb3J0ZWRcbiIpOworKwkJZXhpdCgxKTsKKysJ CX0KKysjZWxzZQorKwkJcnYgPSBFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGMm0o Z3JvdXAsIHBlZXIsIHgsIHksIGMpOworKyNlbmRpZgorKworKwlCTl9DVFhfZnJlZShjKTsKKysJ aWYgKHJ2KQorKwkJcmV0dXJuIHBlZXI7CisrCUVDX1BPSU5UX2ZyZWUocGVlcik7CisrCXJldHVy biBOVUxMOworKwl9CisrCisrc3RhdGljIGludCBlY19wcmludF9rZXkoRklMRSAqb3V0LCBFQ19L RVkgKmtleSwgaW50IGFkZF9lLCBpbnQgZXhvdXQpCisrCXsKKysJY29uc3QgRUNfUE9JTlQgKnB0 OworKwljb25zdCBFQ19HUk9VUCAqZ3JwOworKwljb25zdCBFQ19NRVRIT0QgKm1ldGg7CisrCWlu dCBydjsKKysJQklHTlVNICp0eCwgKnR5OworKwljb25zdCBCSUdOVU0gKmQgPSBOVUxMOworKwlC Tl9DVFggKmN0eDsKKysJY3R4ID0gQk5fQ1RYX25ldygpOworKwlpZiAoIWN0eCkKKysJCXJldHVy biAwOworKwl0eCA9IEJOX0NUWF9nZXQoY3R4KTsKKysJdHkgPSBCTl9DVFhfZ2V0KGN0eCk7Cisr CWlmICghdHggfHwgIXR5KQorKwkJcmV0dXJuIDA7CisrCWdycCA9IEVDX0tFWV9nZXQwX2dyb3Vw KGtleSk7CisrCXB0ID0gRUNfS0VZX2dldDBfcHVibGljX2tleShrZXkpOworKwlpZiAoZXhvdXQp CisrCQlkID0gRUNfS0VZX2dldDBfcHJpdmF0ZV9rZXkoa2V5KTsKKysJbWV0aCA9IEVDX0dST1VQ X21ldGhvZF9vZihncnApOworKwlpZiAoRUNfTUVUSE9EX2dldF9maWVsZF90eXBlKG1ldGgpID09 IE5JRF9YOV82Ml9wcmltZV9maWVsZCkKKysJCXJ2ID0gRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29y ZGluYXRlc19HRnAoZ3JwLCBwdCwgdHgsIHR5LCBjdHgpOworKwllbHNlCisrI2lmZGVmIE9QRU5T U0xfTk9fRUMyTQorKwkJeworKwkJZnByaW50ZihzdGRlcnIsICJFUlJPUjogR0YybSBub3Qgc3Vw cG9ydGVkXG4iKTsKKysJCWV4aXQoMSk7CisrCQl9CisrI2Vsc2UKKysJCXJ2ID0gRUNfUE9JTlRf Z2V0X2FmZmluZV9jb29yZGluYXRlc19HRjJtKGdycCwgcHQsIHR4LCB0eSwgY3R4KTsKKysjZW5k aWYKKysKKysJaWYgKGFkZF9lKQorKwkJeworKwkJZG9fYm5fcHJpbnRfbmFtZShvdXQsICJRZUlV VHgiLCB0eCk7CisrCQlkb19ibl9wcmludF9uYW1lKG91dCwgIlFlSVVUeSIsIHR5KTsKKysJCWlm IChkKQorKwkJCWRvX2JuX3ByaW50X25hbWUob3V0LCAiUWVJVVRkIiwgZCk7CisrCQl9CisrCWVs c2UKKysJCXsKKysJCWRvX2JuX3ByaW50X25hbWUob3V0LCAiUUlVVHgiLCB0eCk7CisrCQlkb19i bl9wcmludF9uYW1lKG91dCwgIlFJVVR5IiwgdHkpOworKwkJaWYgKGQpCisrCQkJZG9fYm5fcHJp bnRfbmFtZShvdXQsICJRSVVUZCIsIGQpOworKwkJfQorKworKwlCTl9DVFhfZnJlZShjdHgpOwor KworKwlyZXR1cm4gcnY7CisrCisrCX0KKysKKytzdGF0aWMgdm9pZCBlY19vdXRwdXRfWmhhc2go RklMRSAqb3V0LCBpbnQgZXhvdXQsIEVDX0dST1VQICpncm91cCwKKysJCQlCSUdOVU0gKml4LCBC SUdOVU0gKml5LCBCSUdOVU0gKmlkLCBCSUdOVU0gKmN4LAorKwkJCUJJR05VTSAqY3ksIGNvbnN0 IEVWUF9NRCAqbWQsCisrCQkJCXVuc2lnbmVkIGNoYXIgKnJoYXNoLCBzaXplX3Qgcmhhc2hsZW4p CisrCXsKKysJRUNfS0VZICplYyA9IE5VTEw7CisrCUVDX1BPSU5UICpwZWVya2V5ID0gTlVMTDsK KysJdW5zaWduZWQgY2hhciAqWjsKKysJdW5zaWduZWQgY2hhciBjaGFzaFtFVlBfTUFYX01EX1NJ WkVdOworKwlpbnQgWmxlbjsKKysJZWMgPSBFQ19LRVlfbmV3KCk7CisrCUVDX0tFWV9zZXRfZmxh Z3MoZWMsIEVDX0ZMQUdfQ09GQUNUT1JfRUNESCk7CisrCUVDX0tFWV9zZXRfZ3JvdXAoZWMsIGdy b3VwKTsKKysJcGVlcmtleSA9IG1ha2VfcGVlcihncm91cCwgY3gsIGN5KTsKKysJaWYgKHJoYXNo ID09IE5VTEwpCisrCQl7CisrCQlpZiAobWQpCisrCQkJcmhhc2hsZW4gPSBNX0VWUF9NRF9zaXpl KG1kKTsKKysJCUVDX0tFWV9nZW5lcmF0ZV9rZXkoZWMpOworKwkJZWNfcHJpbnRfa2V5KG91dCwg ZWMsIG1kID8gMSA6IDAsIGV4b3V0KTsKKysJCX0KKysJZWxzZQorKwkJeworKwkJRUNfS0VZX3Nl dF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlcyhlYywgaXgsIGl5KTsKKysJCUVDX0tFWV9z ZXRfcHJpdmF0ZV9rZXkoZWMsIGlkKTsKKysJCX0KKysJWmxlbiA9IChFQ19HUk9VUF9nZXRfZGVn cmVlKGdyb3VwKSArIDcpLzg7CisrCVogPSBPUEVOU1NMX21hbGxvYyhabGVuKTsKKysJaWYgKCFa KQorKwkJZXhpdCgxKTsKKysJRUNESF9jb21wdXRlX2tleShaLCBabGVuLCBwZWVya2V5LCBlYywg MCk7CisrCWlmIChtZCkKKysJCXsKKysJCWlmIChleG91dCkKKysJCQlPdXRwdXRWYWx1ZSgiWiIs IFosIFpsZW4sIG91dCwgMCk7CisrCQlGSVBTX2RpZ2VzdChaLCBabGVuLCBjaGFzaCwgTlVMTCwg bWQpOworKwkJT3V0cHV0VmFsdWUocmhhc2ggPyAiSVVUSGFzaFpaIiA6ICJIYXNoWloiLAorKwkJ CQkJCWNoYXNoLCByaGFzaGxlbiwgb3V0LCAwKTsKKysJCWlmIChyaGFzaCkKKysJCQl7CisrCQkJ ZnByaW50ZihvdXQsICJSZXN1bHQgPSAlc1xuIiwKKysJCQkJbWVtY21wKGNoYXNoLCByaGFzaCwg cmhhc2hsZW4pID8gIkYiIDogIlAiKTsKKysJCQl9CisrCQl9CisrCWVsc2UKKysJCU91dHB1dFZh bHVlKCJaSVVUIiwgWiwgWmxlbiwgb3V0LCAwKTsKKysJT1BFTlNTTF9jbGVhbnNlKFosIFpsZW4p OworKwlPUEVOU1NMX2ZyZWUoWik7CisrCUVDX0tFWV9mcmVlKGVjKTsKKysJRUNfUE9JTlRfZnJl ZShwZWVya2V5KTsKKysJfQorKwkJCisrI2lmZGVmIEZJUFNfQUxHVlMKKytpbnQgZmlwc19lY2Ro dnNfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisrI2Vsc2UKKytpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCisrI2VuZGlmCisrCXsKKysJY2hhciAqKmFyZ3MgPSBhcmd2ICsgMTsK KysJaW50IGFyZ24gPSBhcmdjIC0gMTsKKysJRklMRSAqaW4sICpvdXQ7CisrCWNoYXIgYnVmWzIw NDhdLCBsYnVmWzIwNDhdOworKwl1bnNpZ25lZCBjaGFyICpyaGFzaCA9IE5VTEw7CisrCWxvbmcg cmhhc2hsZW47CisrCUJJR05VTSAqY3ggPSBOVUxMLCAqY3kgPSBOVUxMOworKwlCSUdOVU0gKmlk ID0gTlVMTCwgKml4ID0gTlVMTCwgKml5ID0gTlVMTDsKKysJY29uc3QgRVZQX01EICptZCA9IE5V TEw7CisrCUVDX0dST1VQICpncm91cCA9IE5VTEw7CisrCWNoYXIgKmtleXdvcmQgPSBOVUxMLCAq dmFsdWUgPSBOVUxMOworKwlpbnQgZG9fdmVyaWZ5ID0gLTEsIGV4b3V0ID0gMDsKKysJaW50IHJ2 ID0gMTsKKysKKysJaW50IGN1cnZlX25pZHNbNV0gPSB7MCwwLDAsMCwwfTsKKysJaW50IHBhcmFt X3NldCA9IC0xOworKworKwlmaXBzX2FsZ3Rlc3RfaW5pdCgpOworKworKwlpZiAoYXJnbiAmJiAh c3RyY21wKCphcmdzLCAiZWNkaHZlciIpKQorKwkJeworKwkJZG9fdmVyaWZ5ID0gMTsKKysJCWFy Z3MrKzsKKysJCWFyZ24tLTsKKysJCX0KKysJZWxzZSBpZiAoYXJnbiAmJiAhc3RyY21wKCphcmdz LCAiZWNkaGdlbiIpKQorKwkJeworKwkJZG9fdmVyaWZ5ID0gMDsKKysJCWFyZ3MrKzsKKysJCWFy Z24tLTsKKysJCX0KKysKKysJaWYgKGFyZ24gJiYgIXN0cmNtcCgqYXJncywgIi1leG91dCIpKQor KwkJeworKwkJZXhvdXQgPSAxOworKwkJYXJncysrOworKwkJYXJnbi0tOworKwkJfQorKworKwlp ZiAoZG9fdmVyaWZ5ID09IC0xKQorKwkJeworKwkJZnByaW50ZihzdGRlcnIsIiVzIFtlY2RodmVy fGVjZGhnZW58XSBbLWV4b3V0XSAoaW5maWxlIG91dGZpbGUpXG4iLGFyZ3ZbMF0pOworKwkJZXhp dCgxKTsKKysJCX0KKysKKysJaWYgKGFyZ24gPT0gMikKKysJCXsKKysJCWluID0gZm9wZW4oKmFy Z3MsICJyIik7CisrCQlpZiAoIWluKQorKwkJCXsKKysJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9y IG9wZW5pbmcgaW5wdXQgZmlsZVxuIik7CisrCQkJZXhpdCgxKTsKKysJCQl9CisrCQlvdXQgPSBm b3BlbihhcmdzWzFdLCAidyIpOworKwkJaWYgKCFvdXQpCisrCQkJeworKwkJCWZwcmludGYoc3Rk ZXJyLCAiRXJyb3Igb3BlbmluZyBvdXRwdXQgZmlsZVxuIik7CisrCQkJZXhpdCgxKTsKKysJCQl9 CisrCQl9CisrCWVsc2UgaWYgKGFyZ24gPT0gMCkKKysJCXsKKysJCWluID0gc3RkaW47CisrCQlv dXQgPSBzdGRvdXQ7CisrCQl9CisrCWVsc2UKKysJCXsKKysJCWZwcmludGYoc3RkZXJyLCIlcyBb ZGh2ZXJ8ZGhnZW58XSBbLWV4b3V0XSAoaW5maWxlIG91dGZpbGUpXG4iLGFyZ3ZbMF0pOworKwkJ ZXhpdCgxKTsKKysJCX0KKysKKysJd2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGluKSAh PSBOVUxMKQorKwkJeworKwkJZnB1dHMoYnVmLCBvdXQpOworKwkJaWYgKGJ1ZlswXSA9PSAnWycg JiYgYnVmWzFdID09ICdFJykKKysJCQl7CisrCQkJaW50IGMgPSBidWZbMl07CisrCQkJaWYgKGMg PCAnQScgfHwgYyA+ICdFJykKKysJCQkJZ290byBwYXJzZV9lcnJvcjsKKysJCQlwYXJhbV9zZXQg PSBjIC0gJ0EnOworKwkJCS8qIElmIGp1c3QgW0U/XSB0aGVuIGluaXRpYWwgcGFyYW1zZXQgKi8K KysJCQlpZiAoYnVmWzNdID09ICddJykKKysJCQkJY29udGludWU7CisrCQkJaWYgKGdyb3VwKQor KwkJCQlFQ19HUk9VUF9mcmVlKGdyb3VwKTsKKysJCQlncm91cCA9IEVDX0dST1VQX25ld19ieV9j dXJ2ZV9uYW1lKGN1cnZlX25pZHNbYyAtICdBJ10pOworKwkJCX0KKysJCWlmIChzdHJsZW4oYnVm KSA+IDEwICYmICFzdHJuY21wKGJ1ZiwgIltDdXJ2ZSIsIDYpKQorKwkJCXsKKysJCQlpbnQgbmlk OworKwkJCWlmIChwYXJhbV9zZXQgPT0gLTEpCisrCQkJCWdvdG8gcGFyc2VfZXJyb3I7CisrCQkJ bmlkID0gbG9va3VwX2N1cnZlKGJ1Zik7CisrCQkJaWYgKG5pZCA9PSBOSURfdW5kZWYpCisrCQkJ CWdvdG8gcGFyc2VfZXJyb3I7CisrCQkJY3VydmVfbmlkc1twYXJhbV9zZXRdID0gbmlkOworKwkJ CX0KKysKKysJCWlmIChzdHJsZW4oYnVmKSA+IDQgJiYgYnVmWzBdID09ICdbJyAmJiBidWZbMl0g PT0gJy0nKQorKwkJCXsKKysJCQlpbnQgbmlkID0gbG9va3VwX2N1cnZlMihidWYgKyAxKTsKKysJ CQlpZiAobmlkID09IE5JRF91bmRlZikKKysJCQkJZ290byBwYXJzZV9lcnJvcjsKKysJCQlpZiAo Z3JvdXApCisrCQkJCUVDX0dST1VQX2ZyZWUoZ3JvdXApOworKwkJCWdyb3VwID0gRUNfR1JPVVBf bmV3X2J5X2N1cnZlX25hbWUobmlkKTsKKysJCQlpZiAoIWdyb3VwKQorKwkJCQl7CisrCQkJCWZw cmludGYoc3RkZXJyLCAiRVJST1I6IHVuc3VwcG9ydGVkIGN1cnZlICVzXG4iLCBidWYgKyAxKTsK KysJCQkJcmV0dXJuIDE7CisrCQkJCX0KKysJCQl9CisrCisrCQlpZiAoc3RybGVuKGJ1ZikgPiA2 ICYmICFzdHJuY21wKGJ1ZiwgIltFIiwgMikpCisrCQkJeworKwkJCW1kID0gZXBhcnNlX21kKGJ1 Zik7CisrCQkJaWYgKG1kID09IE5VTEwpCisrCQkJCWdvdG8gcGFyc2VfZXJyb3I7CisrCQkJY29u dGludWU7CisrCQkJfQorKwkJaWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUsIGxidWYs IGJ1ZikpCisrCQkJY29udGludWU7CisrCQlpZiAoIXN0cmNtcChrZXl3b3JkLCAiUWVDQVZTeCIp IHx8ICFzdHJjbXAoa2V5d29yZCwgIlFDQVZTeCIpKQorKwkJCXsKKysJCQlpZiAoIWRvX2hleDJi bigmY3gsIHZhbHVlKSkKKysJCQkJZ290byBwYXJzZV9lcnJvcjsKKysJCQl9CisrCQllbHNlIGlm ICghc3RyY21wKGtleXdvcmQsICJRZUNBVlN5IikgfHwgIXN0cmNtcChrZXl3b3JkLCAiUUNBVlN5 IikpCisrCQkJeworKwkJCWlmICghZG9faGV4MmJuKCZjeSwgdmFsdWUpKQorKwkJCQlnb3RvIHBh cnNlX2Vycm9yOworKwkJCWlmIChkb192ZXJpZnkgPT0gMCkKKysJCQkJZWNfb3V0cHV0X1poYXNo KG91dCwgZXhvdXQsIGdyb3VwLAorKwkJCQkJCU5VTEwsIE5VTEwsIE5VTEwsCisrCQkJCQkJY3gs IGN5LCBtZCwgcmhhc2gsIHJoYXNobGVuKTsKKysJCQl9CisrCQllbHNlIGlmICghc3RyY21wKGtl eXdvcmQsICJkZUlVVCIpKQorKwkJCXsKKysJCQlpZiAoIWRvX2hleDJibigmaWQsIHZhbHVlKSkK KysJCQkJZ290byBwYXJzZV9lcnJvcjsKKysJCQl9CisrCQllbHNlIGlmICghc3RyY21wKGtleXdv cmQsICJRZUlVVHgiKSkKKysJCQl7CisrCQkJaWYgKCFkb19oZXgyYm4oJml4LCB2YWx1ZSkpCisr CQkJCWdvdG8gcGFyc2VfZXJyb3I7CisrCQkJfQorKwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3Jk LCAiUWVJVVR5IikpCisrCQkJeworKwkJCWlmICghZG9faGV4MmJuKCZpeSwgdmFsdWUpKQorKwkJ CQlnb3RvIHBhcnNlX2Vycm9yOworKwkJCX0KKysJCWVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwg IkNBVlNIYXNoWloiKSkKKysJCQl7CisrCQkJaWYgKCFtZCkKKysJCQkJZ290byBwYXJzZV9lcnJv cjsKKysJCQlyaGFzaCA9IGhleDJiaW5fbSh2YWx1ZSwgJnJoYXNobGVuKTsKKysJCQlpZiAoIXJo YXNoIHx8IHJoYXNobGVuICE9IE1fRVZQX01EX3NpemUobWQpKQorKwkJCQlnb3RvIHBhcnNlX2Vy cm9yOworKwkJCWVjX291dHB1dF9aaGFzaChvdXQsIGV4b3V0LCBncm91cCwgaXgsIGl5LCBpZCwg Y3gsIGN5LAorKwkJCQkJbWQsIHJoYXNoLCByaGFzaGxlbik7CisrCQkJfQorKwkJfQorKwlydiA9 IDA7CisrCXBhcnNlX2Vycm9yOgorKwlpZiAoaWQpCisrCQlCTl9mcmVlKGlkKTsKKysJaWYgKGl4 KQorKwkJQk5fZnJlZShpeCk7CisrCWlmIChpeSkKKysJCUJOX2ZyZWUoaXkpOworKwlpZiAoY3gp CisrCQlCTl9mcmVlKGN4KTsKKysJaWYgKGN5KQorKwkJQk5fZnJlZShjeSk7CisrCWlmIChncm91 cCkKKysJCUVDX0dST1VQX2ZyZWUoZ3JvdXApOworKwlpZiAoaW4gJiYgaW4gIT0gc3RkaW4pCisr CQlmY2xvc2UoaW4pOworKwlpZiAob3V0ICYmIG91dCAhPSBzdGRvdXQpCisrCQlmY2xvc2Uob3V0 KTsKKysJaWYgKHJ2KQorKwkJZnByaW50ZihzdGRlcnIsICJFcnJvciBQYXJzaW5nIHJlcXVlc3Qg ZmlsZVxuIik7CisrCXJldHVybiBydjsKKysJfQorKworKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNz bC0xLjAuMWUvY3J5cHRvL2ZpcHMvY2F2cy9maXBzX2VjZHNhdnMuYy5maXBzLWVjIG9wZW5zc2wt MS4wLjFlL2NyeXB0by9maXBzL2NhdnMvZmlwc19lY2RzYXZzLmMKKy0tLSBvcGVuc3NsLTEuMC4x ZS9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNfZWNkc2F2cy5jLmZpcHMtZWMJMjAxMy0xMC0xNSAwMTow ODowNi4wNDc3ODMxNDYgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZmlwcy9jYXZz L2ZpcHNfZWNkc2F2cy5jCTIwMTMtMTAtMTUgMDE6MDg6MDYuMDQ3NzgzMTQ2ICswMTAwCitAQCAt MCwwICsxLDUzMyBAQAorKy8qIGZpcHMvZWNkc2EvZmlwc19lY2RzYXZzLmMgKi8KKysvKiBXcml0 dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9w ZW5TU0wKKysgKiBwcm9qZWN0LgorKyAqLworKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0 IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAq CisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg d2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEu IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w eXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu CisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl ZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZlcnRp c2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAqICAg IHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorKyAq ICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVu U1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRw Oi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9v bGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBl bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0 aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlz c2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCisrICoK KysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNh bGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIg bmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3Bl blNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdo YXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50 OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRo ZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQg KGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP VklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJF U1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP LCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g RVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMg QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVD SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQK KysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT RVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg SU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBU T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBB TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAor KyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor KyAqLworKworKyNkZWZpbmUgT1BFTlNTTF9GSVBTQVBJCisrI2luY2x1ZGUgPG9wZW5zc2wvb3Bl bnNzbGNvbmYuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysKKysjaWZuZGVmIE9QRU5TU0xfRklQ UworKworK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyt7CisrICAgIHByaW50Zigi Tm8gRklQUyBFQ0RTQSBzdXBwb3J0XG4iKTsKKysgICAgcmV0dXJuKDApOworK30KKysjZWxzZQor KworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8Y3R5cGUuaD4KKysjaW5jbHVkZSA8 b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgorKyNpbmNsdWRlIDxvcGVu c3NsL2VjZHNhLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisrI2luY2x1ZGUgImZpcHNf dXRsLmgiCisrCisrI2luY2x1ZGUgPG9wZW5zc2wvb2JqZWN0cy5oPgorKworKworK3N0YXRpYyBp bnQgZWxvb2t1cF9jdXJ2ZShjaGFyICppbiwgY2hhciAqY3VydmVfbmFtZSwgY29uc3QgRVZQX01E ICoqcG1kKQorKwl7CisrCWNoYXIgKmNuYW1lLCAqcDsKKysJLyogQ29weSBidWZmZXIgYXMgd2Ug d2lsbCBjaGFuZ2UgaXQgKi8KKysJc3RyY3B5KGN1cnZlX25hbWUsIGluKTsKKysJY25hbWUgPSBj dXJ2ZV9uYW1lICsgMTsKKysJcCA9IHN0cmNocihjbmFtZSwgJ10nKTsKKysJaWYgKCFwKQorKwkJ eworKwkJZnByaW50ZihzdGRlcnIsICJQYXJzZSBlcnJvcjogbWlzc2luZyBdXG4iKTsKKysJCXJl dHVybiBOSURfdW5kZWY7CisrCQl9CisrCSpwID0gMDsKKysJcCA9IHN0cmNocihjbmFtZSwgJywn KTsKKysJaWYgKHApCisrCQl7CisrCQlpZiAoIXBtZCkKKysJCQl7CisrCQkJZnByaW50ZihzdGRl cnIsICJQYXJzZSBlcnJvcjogdW5leHBlY3RlZCBkaWdlc3RcbiIpOworKwkJCXJldHVybiBOSURf dW5kZWY7CisrCQkJfQorKwkJKnAgPSAwOworKwkJcCsrOworKworKwkJaWYgKCFzdHJjbXAocCwg IlNIQS0xIikpCisrCQkJKnBtZCA9IEVWUF9zaGExKCk7CisrCQllbHNlIGlmICghc3RyY21wKHAs ICJTSEEtMjI0IikpCisrCQkJKnBtZCA9IEVWUF9zaGEyMjQoKTsKKysJCWVsc2UgaWYgKCFzdHJj bXAocCwgIlNIQS0yNTYiKSkKKysJCQkqcG1kID0gRVZQX3NoYTI1NigpOworKwkJZWxzZSBpZiAo IXN0cmNtcChwLCAiU0hBLTM4NCIpKQorKwkJCSpwbWQgPSBFVlBfc2hhMzg0KCk7CisrCQllbHNl IGlmICghc3RyY21wKHAsICJTSEEtNTEyIikpCisrCQkJKnBtZCA9IEVWUF9zaGE1MTIoKTsKKysJ CWVsc2UKKysJCQl7CisrCQkJZnByaW50ZihzdGRlcnIsICJVbmtub3duIGRpZ2VzdCAlc1xuIiwg cCk7CisrCQkJcmV0dXJuIE5JRF91bmRlZjsKKysJCQl9CisrCQl9CisrCWVsc2UgaWYocG1kKQor KwkJKnBtZCA9IEVWUF9zaGExKCk7CisrCisrCWlmICghc3RyY21wKGNuYW1lLCAiQi0xNjMiKSkK KysJCXJldHVybiBOSURfc2VjdDE2M3IyOworKwlpZiAoIXN0cmNtcChjbmFtZSwgIkItMjMzIikp CisrCQlyZXR1cm4gTklEX3NlY3QyMzNyMTsKKysJaWYgKCFzdHJjbXAoY25hbWUsICJCLTI4MyIp KQorKwkJcmV0dXJuIE5JRF9zZWN0MjgzcjE7CisrCWlmICghc3RyY21wKGNuYW1lLCAiQi00MDki KSkKKysJCXJldHVybiBOSURfc2VjdDQwOXIxOworKwlpZiAoIXN0cmNtcChjbmFtZSwgIkItNTcx IikpCisrCQlyZXR1cm4gTklEX3NlY3Q1NzFyMTsKKysJaWYgKCFzdHJjbXAoY25hbWUsICJLLTE2 MyIpKQorKwkJcmV0dXJuIE5JRF9zZWN0MTYzazE7CisrCWlmICghc3RyY21wKGNuYW1lLCAiSy0y MzMiKSkKKysJCXJldHVybiBOSURfc2VjdDIzM2sxOworKwlpZiAoIXN0cmNtcChjbmFtZSwgIkst MjgzIikpCisrCQlyZXR1cm4gTklEX3NlY3QyODNrMTsKKysJaWYgKCFzdHJjbXAoY25hbWUsICJL LTQwOSIpKQorKwkJcmV0dXJuIE5JRF9zZWN0NDA5azE7CisrCWlmICghc3RyY21wKGNuYW1lLCAi Sy01NzEiKSkKKysJCXJldHVybiBOSURfc2VjdDU3MWsxOworKwlpZiAoIXN0cmNtcChjbmFtZSwg IlAtMTkyIikpCisrCQlyZXR1cm4gTklEX1g5XzYyX3ByaW1lMTkydjE7CisrCWlmICghc3RyY21w KGNuYW1lLCAiUC0yMjQiKSkKKysJCXJldHVybiBOSURfc2VjcDIyNHIxOworKwlpZiAoIXN0cmNt cChjbmFtZSwgIlAtMjU2IikpCisrCQlyZXR1cm4gTklEX1g5XzYyX3ByaW1lMjU2djE7CisrCWlm ICghc3RyY21wKGNuYW1lLCAiUC0zODQiKSkKKysJCXJldHVybiBOSURfc2VjcDM4NHIxOworKwlp ZiAoIXN0cmNtcChjbmFtZSwgIlAtNTIxIikpCisrCQlyZXR1cm4gTklEX3NlY3A1MjFyMTsKKysK KysJZnByaW50ZihzdGRlcnIsICJVbmtub3duIEN1cnZlIG5hbWUgJXNcbiIsIGNuYW1lKTsKKysJ cmV0dXJuIE5JRF91bmRlZjsKKysJfQorKworK3N0YXRpYyBpbnQgZWNfZ2V0X3B1YmtleShFQ19L RVkgKmtleSwgQklHTlVNICp4LCBCSUdOVU0gKnkpCisrCXsKKysJY29uc3QgRUNfUE9JTlQgKnB0 OworKwljb25zdCBFQ19HUk9VUCAqZ3JwOworKwljb25zdCBFQ19NRVRIT0QgKm1ldGg7CisrCWlu dCBydjsKKysJQk5fQ1RYICpjdHg7CisrCWN0eCA9IEJOX0NUWF9uZXcoKTsKKysJaWYgKCFjdHgp CisrCQlyZXR1cm4gMDsKKysJZ3JwID0gRUNfS0VZX2dldDBfZ3JvdXAoa2V5KTsKKysJcHQgPSBF Q19LRVlfZ2V0MF9wdWJsaWNfa2V5KGtleSk7CisrCW1ldGggPSBFQ19HUk9VUF9tZXRob2Rfb2Yo Z3JwKTsKKysJaWYgKEVDX01FVEhPRF9nZXRfZmllbGRfdHlwZShtZXRoKSA9PSBOSURfWDlfNjJf cHJpbWVfZmllbGQpCisrCQlydiA9IEVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0Zw KGdycCwgcHQsIHgsIHksIGN0eCk7CisrCWVsc2UKKysjaWZkZWYgT1BFTlNTTF9OT19FQzJNCisr CQl7CisrCQlmcHJpbnRmKHN0ZGVyciwgIkVSUk9SOiBHRjJtIG5vdCBzdXBwb3J0ZWRcbiIpOwor KwkJZXhpdCgxKTsKKysJCX0KKysjZWxzZQorKwkJcnYgPSBFQ19QT0lOVF9nZXRfYWZmaW5lX2Nv b3JkaW5hdGVzX0dGMm0oZ3JwLCBwdCwgeCwgeSwgY3R4KTsKKysjZW5kaWYKKysKKysJQk5fQ1RY X2ZyZWUoY3R4KTsKKysKKysJcmV0dXJuIHJ2OworKworKwl9CisrCisrc3RhdGljIGludCBLZXlQ YWlyKEZJTEUgKmluLCBGSUxFICpvdXQpCisrCXsKKysJY2hhciBidWZbMjA0OF0sIGxidWZbMjA0 OF07CisrCWNoYXIgKmtleXdvcmQsICp2YWx1ZTsKKysJaW50IGN1cnZlX25pZCA9IE5JRF91bmRl ZjsKKysJaW50IGksIGNvdW50OworKwlCSUdOVU0gKlF4ID0gTlVMTCwgKlF5ID0gTlVMTDsKKysJ Y29uc3QgQklHTlVNICpkID0gTlVMTDsKKysJRUNfS0VZICprZXkgPSBOVUxMOworKwlReCA9IEJO X25ldygpOworKwlReSA9IEJOX25ldygpOworKwl3aGlsZShmZ2V0cyhidWYsIHNpemVvZiBidWYs IGluKSAhPSBOVUxMKQorKwkJeworKwkJaWYgKCpidWYgPT0gJ1snICYmIGJ1ZlsyXSA9PSAnLScp CisrCQkJeworKwkJCWlmIChidWZbMl0gPT0gJy0nKQorKwkJCWN1cnZlX25pZCA9IGVsb29rdXBf Y3VydmUoYnVmLCBsYnVmLCBOVUxMKTsKKysJCQlmcHV0cyhidWYsIG91dCk7CisrCQkJY29udGlu dWU7CisrCQkJfQorKwkJaWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUsIGxidWYsIGJ1 ZikpCisrCQkJeworKwkJCWZwdXRzKGJ1Ziwgb3V0KTsKKysJCQljb250aW51ZTsKKysJCQl9Cisr CQlpZiAoIXN0cmNtcChrZXl3b3JkLCAiTiIpKQorKwkJCXsKKysJCQljb3VudCA9IGF0b2kodmFs dWUpOworKworKwkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorKwkJCQl7CisrCisrCQkJ CWtleSA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZShjdXJ2ZV9uaWQpOworKwkJCQlpZiAoIUVD X0tFWV9nZW5lcmF0ZV9rZXkoa2V5KSkKKysJCQkJCXsKKysJCQkJCWZwcmludGYoc3RkZXJyLCAi RXJyb3IgZ2VuZXJhdGluZyBrZXlcbiIpOworKwkJCQkJcmV0dXJuIDA7CisrCQkJCQl9CisrCisr CQkJCWlmICghZWNfZ2V0X3B1YmtleShrZXksIFF4LCBReSkpCisrCQkJCQl7CisrCQkJCQlmcHJp bnRmKHN0ZGVyciwgIkVycm9yIGdldHRpbmcgcHVibGljIGtleVxuIik7CisrCQkJCQlyZXR1cm4g MDsKKysJCQkJCX0KKysKKysJCQkJZCA9IEVDX0tFWV9nZXQwX3ByaXZhdGVfa2V5KGtleSk7Cisr CisrCQkJCWRvX2JuX3ByaW50X25hbWUob3V0LCAiZCIsIGQpOworKwkJCQlkb19ibl9wcmludF9u YW1lKG91dCwgIlF4IiwgUXgpOworKwkJCQlkb19ibl9wcmludF9uYW1lKG91dCwgIlF5IiwgUXkp OworKwkJCQlmcHV0cyhSRVNQX0VPTCwgb3V0KTsKKysJCQkJRUNfS0VZX2ZyZWUoa2V5KTsKKysK KysJCQkJfQorKworKwkJCX0KKysKKysJCX0KKysJQk5fZnJlZShReCk7CisrCUJOX2ZyZWUoUXkp OworKwlyZXR1cm4gMTsKKysJfQorKworK3N0YXRpYyBpbnQgUEtWKEZJTEUgKmluLCBGSUxFICpv dXQpCisrCXsKKysKKysJY2hhciBidWZbMjA0OF0sIGxidWZbMjA0OF07CisrCWNoYXIgKmtleXdv cmQsICp2YWx1ZTsKKysJaW50IGN1cnZlX25pZCA9IE5JRF91bmRlZjsKKysJQklHTlVNICpReCA9 IE5VTEwsICpReSA9IE5VTEw7CisrCUVDX0tFWSAqa2V5ID0gTlVMTDsKKysJd2hpbGUoZmdldHMo YnVmLCBzaXplb2YgYnVmLCBpbikgIT0gTlVMTCkKKysJCXsKKysJCWZwdXRzKGJ1Ziwgb3V0KTsK KysJCWlmICgqYnVmID09ICdbJyAmJiBidWZbMl0gPT0gJy0nKQorKwkJCXsKKysJCQljdXJ2ZV9u aWQgPSBlbG9va3VwX2N1cnZlKGJ1ZiwgbGJ1ZiwgTlVMTCk7CisrCQkJaWYgKGN1cnZlX25pZCA9 PSBOSURfdW5kZWYpCisrCQkJCXJldHVybiAwOworKwkJCQkKKysJCQl9CisrCQlpZiAoIXBhcnNl X2xpbmUoJmtleXdvcmQsICZ2YWx1ZSwgbGJ1ZiwgYnVmKSkKKysJCQljb250aW51ZTsKKysJCWlm ICghc3RyY21wKGtleXdvcmQsICJReCIpKQorKwkJCXsKKysJCQlpZiAoIWRvX2hleDJibigmUXgs IHZhbHVlKSkKKysJCQkJeworKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgUXggdmFsdWVc biIpOworKwkJCQlyZXR1cm4gMDsKKysJCQkJfQorKwkJCX0KKysJCWlmICghc3RyY21wKGtleXdv cmQsICJReSIpKQorKwkJCXsKKysJCQlpbnQgcnY7CisrCQkJaWYgKCFkb19oZXgyYm4oJlF5LCB2 YWx1ZSkpCisrCQkJCXsKKysJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFF5IHZhbHVlXG4i KTsKKysJCQkJcmV0dXJuIDA7CisrCQkJCX0KKysJCQlrZXkgPSBFQ19LRVlfbmV3X2J5X2N1cnZl X25hbWUoY3VydmVfbmlkKTsKKysJCQlub19lcnIgPSAxOworKwkJCXJ2ID0gRUNfS0VZX3NldF9w dWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlcyhrZXksIFF4LCBReSk7CisrCQkJbm9fZXJyID0g MDsKKysJCQlFQ19LRVlfZnJlZShrZXkpOworKwkJCWZwcmludGYob3V0LCAiUmVzdWx0ID0gJXMi IFJFU1BfRU9MLCBydiA/ICJQIjoiRiIpOworKwkJCX0KKysKKysJCX0KKysJQk5fZnJlZShReCk7 CisrCUJOX2ZyZWUoUXkpOworKwlyZXR1cm4gMTsKKysJfQorKworK3N0YXRpYyBpbnQgU2lnR2Vu KEZJTEUgKmluLCBGSUxFICpvdXQpCisrCXsKKysJY2hhciBidWZbMjA0OF0sIGxidWZbMjA0OF07 CisrCWNoYXIgKmtleXdvcmQsICp2YWx1ZTsKKysJdW5zaWduZWQgY2hhciAqbXNnOworKwlpbnQg Y3VydmVfbmlkID0gTklEX3VuZGVmOworKwlsb25nIG1sZW47CisrCUJJR05VTSAqUXggPSBOVUxM LCAqUXkgPSBOVUxMOworKwlFQ19LRVkgKmtleSA9IE5VTEw7CisrCUVDRFNBX1NJRyAqc2lnID0g TlVMTDsKKysJY29uc3QgRVZQX01EICpkaWdlc3QgPSBOVUxMOworKwlReCA9IEJOX25ldygpOwor KwlReSA9IEJOX25ldygpOworKwl3aGlsZShmZ2V0cyhidWYsIHNpemVvZiBidWYsIGluKSAhPSBO VUxMKQorKwkJeworKwkJZnB1dHMoYnVmLCBvdXQpOworKwkJaWYgKCpidWYgPT0gJ1snKQorKwkJ CXsKKysJCQljdXJ2ZV9uaWQgPSBlbG9va3VwX2N1cnZlKGJ1ZiwgbGJ1ZiwgJmRpZ2VzdCk7Cisr CQkJaWYgKGN1cnZlX25pZCA9PSBOSURfdW5kZWYpCisrCQkJCXJldHVybiAwOworKwkJCX0KKysJ CWlmICghcGFyc2VfbGluZSgma2V5d29yZCwgJnZhbHVlLCBsYnVmLCBidWYpKQorKwkJCWNvbnRp bnVlOworKwkJaWYgKCFzdHJjbXAoa2V5d29yZCwgIk1zZyIpKQorKwkJCXsKKysJCQltc2cgPSBo ZXgyYmluX20odmFsdWUsICZtbGVuKTsKKysJCQlpZiAoIW1zZykKKysJCQkJeworKwkJCQlmcHJp bnRmKHN0ZGVyciwgIkludmFsaWQgTWVzc2FnZVxuIik7CisrCQkJCXJldHVybiAwOworKwkJCQl9 CisrCisrCQkJa2V5ID0gRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lKGN1cnZlX25pZCk7CisrCQkJ aWYgKCFFQ19LRVlfZ2VuZXJhdGVfa2V5KGtleSkpCisrCQkJCXsKKysJCQkJZnByaW50ZihzdGRl cnIsICJFcnJvciBnZW5lcmF0aW5nIGtleVxuIik7CisrCQkJCXJldHVybiAwOworKwkJCQl9Cisr CisrCQkJaWYgKCFlY19nZXRfcHVia2V5KGtleSwgUXgsIFF5KSkKKysJCQkJeworKwkJCQlmcHJp bnRmKHN0ZGVyciwgIkVycm9yIGdldHRpbmcgcHVibGljIGtleVxuIik7CisrCQkJCXJldHVybiAw OworKwkJCQl9CisrCisrCSAgICAJCXNpZyA9IEZJUFNfZWNkc2Ffc2lnbihrZXksIG1zZywgbWxl biwgZGlnZXN0KTsKKysKKysJCQlpZiAoIXNpZykKKysJCQkJeworKwkJCQlmcHJpbnRmKHN0ZGVy ciwgIkVycm9yIHNpZ25pbmcgbWVzc2FnZVxuIik7CisrCQkJCXJldHVybiAwOworKwkJCQl9Cisr CisrCQkJZG9fYm5fcHJpbnRfbmFtZShvdXQsICJReCIsIFF4KTsKKysJCQlkb19ibl9wcmludF9u YW1lKG91dCwgIlF5IiwgUXkpOworKwkJCWRvX2JuX3ByaW50X25hbWUob3V0LCAiUiIsIHNpZy0+ cik7CisrCQkJZG9fYm5fcHJpbnRfbmFtZShvdXQsICJTIiwgc2lnLT5zKTsKKysKKysJCQlFQ19L RVlfZnJlZShrZXkpOworKwkJCU9QRU5TU0xfZnJlZShtc2cpOworKwkJCUZJUFNfZWNkc2Ffc2ln X2ZyZWUoc2lnKTsKKysKKysJCQl9CisrCisrCQl9CisrCUJOX2ZyZWUoUXgpOworKwlCTl9mcmVl KFF5KTsKKysJcmV0dXJuIDE7CisrCX0KKysKKytzdGF0aWMgaW50IFNpZ1ZlcihGSUxFICppbiwg RklMRSAqb3V0KQorKwl7CisrCWNoYXIgYnVmWzIwNDhdLCBsYnVmWzIwNDhdOworKwljaGFyICpr ZXl3b3JkLCAqdmFsdWU7CisrCXVuc2lnbmVkIGNoYXIgKm1zZyA9IE5VTEw7CisrCWludCBjdXJ2 ZV9uaWQgPSBOSURfdW5kZWY7CisrCWxvbmcgbWxlbjsKKysJQklHTlVNICpReCA9IE5VTEwsICpR eSA9IE5VTEw7CisrCUVDX0tFWSAqa2V5ID0gTlVMTDsKKysJRUNEU0FfU0lHIHNnLCAqc2lnID0g JnNnOworKwljb25zdCBFVlBfTUQgKmRpZ2VzdCA9IE5VTEw7CisrCXNpZy0+ciA9IE5VTEw7Cisr CXNpZy0+cyA9IE5VTEw7CisrCXdoaWxlKGZnZXRzKGJ1Ziwgc2l6ZW9mIGJ1ZiwgaW4pICE9IE5V TEwpCisrCQl7CisrCQlmcHV0cyhidWYsIG91dCk7CisrCQlpZiAoKmJ1ZiA9PSAnWycpCisrCQkJ eworKwkJCWN1cnZlX25pZCA9IGVsb29rdXBfY3VydmUoYnVmLCBsYnVmLCAmZGlnZXN0KTsKKysJ CQlpZiAoY3VydmVfbmlkID09IE5JRF91bmRlZikKKysJCQkJcmV0dXJuIDA7CisrCQkJfQorKwkJ aWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUsIGxidWYsIGJ1ZikpCisrCQkJY29udGlu dWU7CisrCQlpZiAoIXN0cmNtcChrZXl3b3JkLCAiTXNnIikpCisrCQkJeworKwkJCW1zZyA9IGhl eDJiaW5fbSh2YWx1ZSwgJm1sZW4pOworKwkJCWlmICghbXNnKQorKwkJCQl7CisrCQkJCWZwcmlu dGYoc3RkZXJyLCAiSW52YWxpZCBNZXNzYWdlXG4iKTsKKysJCQkJcmV0dXJuIDA7CisrCQkJCX0K KysJCQl9CisrCQkJCisrCQlpZiAoIXN0cmNtcChrZXl3b3JkLCAiUXgiKSkKKysJCQl7CisrCQkJ aWYgKCFkb19oZXgyYm4oJlF4LCB2YWx1ZSkpCisrCQkJCXsKKysJCQkJZnByaW50ZihzdGRlcnIs ICJJbnZhbGlkIFF4IHZhbHVlXG4iKTsKKysJCQkJcmV0dXJuIDA7CisrCQkJCX0KKysJCQl9Cisr CQlpZiAoIXN0cmNtcChrZXl3b3JkLCAiUXkiKSkKKysJCQl7CisrCQkJaWYgKCFkb19oZXgyYm4o JlF5LCB2YWx1ZSkpCisrCQkJCXsKKysJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFF5IHZh bHVlXG4iKTsKKysJCQkJcmV0dXJuIDA7CisrCQkJCX0KKysJCQl9CisrCQlpZiAoIXN0cmNtcChr ZXl3b3JkLCAiUiIpKQorKwkJCXsKKysJCQlpZiAoIWRvX2hleDJibigmc2lnLT5yLCB2YWx1ZSkp CisrCQkJCXsKKysJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFIgdmFsdWVcbiIpOworKwkJ CQlyZXR1cm4gMDsKKysJCQkJfQorKwkJCX0KKysJCWlmICghc3RyY21wKGtleXdvcmQsICJTIikp CisrCQkJeworKwkJCWludCBydjsKKysJCQlpZiAoIWRvX2hleDJibigmc2lnLT5zLCB2YWx1ZSkp CisrCQkJCXsKKysJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFMgdmFsdWVcbiIpOworKwkJ CQlyZXR1cm4gMDsKKysJCQkJfQorKwkJCWtleSA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZShj dXJ2ZV9uaWQpOworKwkJCXJ2ID0gRUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGlu YXRlcyhrZXksIFF4LCBReSk7CisrCisrCQkJaWYgKHJ2ICE9IDEpCisrCQkJCXsKKysJCQkJZnBy aW50ZihzdGRlcnIsICJFcnJvciBzZXR0aW5nIHB1YmxpYyBrZXlcbiIpOworKwkJCQlyZXR1cm4g MDsKKysJCQkJfQorKworKwkJCW5vX2VyciA9IDE7CisrCSAgICAJCXJ2ID0gRklQU19lY2RzYV92 ZXJpZnkoa2V5LCBtc2csIG1sZW4sIGRpZ2VzdCwgc2lnKTsKKysJCQlFQ19LRVlfZnJlZShrZXkp OworKwkJCWlmIChtc2cpCisrCQkJCU9QRU5TU0xfZnJlZShtc2cpOworKwkJCW5vX2VyciA9IDA7 CisrCisrCQkJZnByaW50ZihvdXQsICJSZXN1bHQgPSAlcyIgUkVTUF9FT0wsIHJ2ID8gIlAiOiJG Iik7CisrCQkJfQorKworKwkJfQorKwlpZiAoc2lnLT5yKQorKwkJQk5fZnJlZShzaWctPnIpOwor KwlpZiAoc2lnLT5zKQorKwkJQk5fZnJlZShzaWctPnMpOworKwlpZiAoUXgpCisrCQlCTl9mcmVl KFF4KTsKKysJaWYgKFF5KQorKwkJQk5fZnJlZShReSk7CisrCXJldHVybiAxOworKwl9CisrI2lm ZGVmIEZJUFNfQUxHVlMKKytpbnQgZmlwc19lY2RzYXZzX21haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQorKyNlbHNlCisraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorKyNlbmRpZgor Kwl7CisrCUZJTEUgKmluID0gTlVMTCwgKm91dCA9IE5VTEw7CisrCWNvbnN0IGNoYXIgKmNtZCA9 IGFyZ3ZbMV07CisrCWludCBydiA9IDA7CisrCWZpcHNfYWxndGVzdF9pbml0KCk7CisrCisrCWlm IChhcmdjID09IDQpCisrCQl7CisrCQlpbiA9IGZvcGVuKGFyZ3ZbMl0sICJyIik7CisrCQlpZiAo IWluKQorKwkJCXsKKysJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgaW5wdXQgZmls ZVxuIik7CisrCQkJZXhpdCgxKTsKKysJCQl9CisrCQlvdXQgPSBmb3Blbihhcmd2WzNdLCAidyIp OworKwkJaWYgKCFvdXQpCisrCQkJeworKwkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3Igb3Blbmlu ZyBvdXRwdXQgZmlsZVxuIik7CisrCQkJZXhpdCgxKTsKKysJCQl9CisrCQl9CisrCWVsc2UgaWYg KGFyZ2MgPT0gMikKKysJCXsKKysJCWluID0gc3RkaW47CisrCQlvdXQgPSBzdGRvdXQ7CisrCQl9 CisrCisrCWlmICghY21kKQorKwkJeworKwkJZnByaW50ZihzdGRlcnIsICJmaXBzX2VjZHNhdnMg W0tleVBhaXJ8UEtWfFNpZ0dlbnxTaWdWZXJdXG4iKTsKKysJCXJldHVybiAxOworKwkJfQorKwlp ZiAoIXN0cmNtcChjbWQsICJLZXlQYWlyIikpCisrCQlydiA9IEtleVBhaXIoaW4sIG91dCk7Cisr CWVsc2UgaWYgKCFzdHJjbXAoY21kLCAiUEtWIikpCisrCQlydiA9IFBLVihpbiwgb3V0KTsKKysJ ZWxzZSBpZiAoIXN0cmNtcChjbWQsICJTaWdWZXIiKSkKKysJCXJ2ID0gU2lnVmVyKGluLCBvdXQp OworKwllbHNlIGlmICghc3RyY21wKGNtZCwgIlNpZ0dlbiIpKQorKwkJcnYgPSBTaWdHZW4oaW4s IG91dCk7CisrCWVsc2UKKysJCXsKKysJCWZwcmludGYoc3RkZXJyLCAiVW5rbm93biBjb21tYW5k ICVzXG4iLCBjbWQpOworKwkJcmV0dXJuIDE7CisrCQl9CisrCisrCWlmIChhcmdjID09IDQpCisr CQl7CisrCQlmY2xvc2UoaW4pOworKwkJZmNsb3NlKG91dCk7CisrCQl9CisrCisrCWlmIChydiA8 PSAwKQorKwkJeworKwkJZnByaW50ZihzdGRlcnIsICJFcnJvciBydW5uaW5nICVzXG4iLCBjbWQp OworKwkJcmV0dXJuIDE7CisrCQl9CisrCisrCXJldHVybiAwOworKwl9CisrCisrI2VuZGlmCitk aWZmIC11cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZmlwcy9maXBzLmguZmlwcy1lYyBvcGVuc3Ns LTEuMC4xZS9jcnlwdG8vZmlwcy9maXBzLmgKKy0tLSBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZmlw cy9maXBzLmguZmlwcy1lYwkyMDEzLTEwLTE1IDAxOjA4OjA2LjAzNzc4MzE2MCArMDEwMAorKysr IG9wZW5zc2wtMS4wLjFlL2NyeXB0by9maXBzL2ZpcHMuaAkyMDEzLTEwLTE1IDAxOjA4OjA2LjA0 ODc4MzE0NSArMDEwMAorQEAgLTk0LDYgKzk0LDggQEAgaW50IEZJUFNfc2VsZnRlc3RfcnNhKHZv aWQpOworIHZvaWQgRklQU19jb3JydXB0X2RzYSh2b2lkKTsKKyB2b2lkIEZJUFNfY29ycnVwdF9k c2Ffa2V5Z2VuKHZvaWQpOworIGludCBGSVBTX3NlbGZ0ZXN0X2RzYSh2b2lkKTsKKytpbnQgRklQ U19zZWxmdGVzdF9lY2RzYSh2b2lkKTsKKytpbnQgRklQU19zZWxmdGVzdF9lY2RoKHZvaWQpOwor IHZvaWQgRklQU19jb3JydXB0X3JuZyh2b2lkKTsKKyB2b2lkIEZJUFNfcm5nX3N0aWNrKHZvaWQp OworIHZvaWQgRklQU194OTMxX3N0aWNrKGludCBvbm9mZik7CitkaWZmIC11cCBvcGVuc3NsLTEu MC4xZS9jcnlwdG8vZmlwcy9maXBzX2VjZGhfc2VsZnRlc3QuYy5maXBzLWVjIG9wZW5zc2wtMS4w LjFlL2NyeXB0by9maXBzL2ZpcHNfZWNkaF9zZWxmdGVzdC5jCistLS0gb3BlbnNzbC0xLjAuMWUv Y3J5cHRvL2ZpcHMvZmlwc19lY2RoX3NlbGZ0ZXN0LmMuZmlwcy1lYwkyMDEzLTEwLTE1IDAxOjA4 OjA2LjA0ODc4MzE0NSArMDEwMAorKysrIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9maXBzL2ZpcHNf ZWNkaF9zZWxmdGVzdC5jCTIwMTMtMTAtMTUgMDE6MDg6MDYuMDQ4NzgzMTQ1ICswMTAwCitAQCAt MCwwICsxLDI1MiBAQAorKy8qIGZpcHMvZWNkaC9maXBzX2VjZGhfc2VsZnRlc3QuYyAqLworKy8q IFdyaXR0ZW4gYnkgRHIgU3RlcGhlbiBOIEhlbnNvbiAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0 aGUgT3BlblNTTAorKyAqIHByb2plY3QgMjAxMS4KKysgKi8KKysvKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAq IENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNl cnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6Cisr ICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlv bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh bHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBB bGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRo aXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRn bWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBi eSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29s a2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJP cGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRv CisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv ZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0 dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgbGljZW5zaW5nQE9wZW5TU0wu b3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5 IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFy IGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24g b2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBh bnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tu b3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRX QVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkK KysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09O VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws CisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV RElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg R09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJ TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFS SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG IEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKysgKgorKyAqLworKworKyNkZWZpbmUgT1BFTlNTTF9GSVBTQVBJCisrCisrI2lu Y2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRl IDxvcGVuc3NsL2VjLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZWNkaC5oPgorKyNpbmNsdWRlIDxv cGVuc3NsL2ZpcHMuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3Bl bnNzbC9ldnAuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgorKworKyNpZmRlZiBPUEVOU1NM X0ZJUFMKKysKKysjaW5jbHVkZSAiZmlwc19sb2NsLmgiCisrCisrc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgcDI1Nl9xY2F2c3hbXSA9IHsKKysJMHg1MiwweGM2LDB4YTUsMHg3NSwweGYzLDB4 MDQsMHg5OCwweGIzLDB4MjksMHg2NiwweDBjLDB4NjIsCisrCTB4MTgsMHg2MCwweDU1LDB4NDEs MHg1OSwweGQ0LDB4NjAsMHg4NSwweDk5LDB4YzEsMHg1MSwweDEzLAorKwkweDZmLDB4OTcsMHg4 NSwweDkzLDB4MzMsMHgzNCwweDA3LDB4NTAKKyt9OworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIHAyNTZfcWNhdnN5W10gPSB7CisrCTB4NmYsMHg2OSwweDI0LDB4ZWIsMHhlOSwweDNiLDB4 YTcsMHhjYywweDQ3LDB4MTcsMHhhYSwweDNmLAorKwkweDcwLDB4ZmMsMHgxMCwweDczLDB4MGEs MHhjZCwweDIxLDB4ZWUsMHgyOSwweDE5LDB4MWYsMHhhZiwKKysJMHhiNCwweDFjLDB4MWUsMHhj MiwweDhlLDB4OTcsMHg4MSwweDZlCisrfTsKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBw MjU2X3FpdXR4W10gPSB7CisrCTB4NzEsMHg0NiwweDg4LDB4MDgsMHg5MiwweDIxLDB4MWIsMHgx MCwweDIxLDB4NzQsMHhmZiwweDBjLAorKwkweDk0LDB4ZGUsMHgzNCwweDdjLDB4ODYsMHg3NCww eGJlLDB4NjcsMHg0MSwweDY4LDB4ZDQsMHhjMSwKKysJMHhlNSwweDc1LDB4NjMsMHg5YywweGE3 LDB4NDYsMHg5MywweDZmCisrfTsKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwMjU2X3Fp dXR5W10gPSB7CisrCTB4MzMsMHg0MCwweGE5LDB4NmEsMHhmNSwweDIwLDB4YjUsMHg5ZSwweGZj LDB4NjAsMHgxYSwweGFlLAorKwkweDNkLDB4ZjgsMHgyMSwweGQyLDB4YTcsMHhjYSwweDUyLDB4 MzQsMHhiOSwweDVmLDB4MjcsMHg3NSwKKysJMHg2YywweDgxLDB4YmUsMHgzMiwweDRkLDB4YmEs MHhiYiwweGY4CisrfTsKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwMjU2X3FpdXRkW10g PSB7CisrCTB4MWEsMHg0OCwweDU1LDB4NmIsMHgxMSwweGJlLDB4OTIsMHhkNCwweDFjLDB4ZDcs MHg0NSwweGMzLAorKwkweDgyLDB4ODEsMHg1MSwweGYxLDB4MjMsMHg0MCwweGI3LDB4ODMsMHhm ZCwweDAxLDB4NmQsMHhiYywKKysJMHhhMSwweDY2LDB4YWYsMHgwYSwweDAzLDB4MjMsMHhjZCww eGM4CisrfTsKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwMjU2X3ppdXRbXSA9IHsKKysJ MHg3NywweDJhLDB4MWUsMHgzNywweGVlLDB4ZTYsMHg1MSwweDAyLDB4NzEsMHg0MCwweGY4LDB4 NmEsCisrCTB4MzYsMHhmOCwweDY1LDB4NjEsMHgyYiwweDE4LDB4NzEsMHg4MiwweDIzLDB4ZTYs MHhmMiwweDc3LAorKwkweGNlLDB4ZWMsMHhiOCwweDQ5LDB4YzcsMHhiZiwweDM2LDB4NGYKKyt9 OworKworKworK3R5cGVkZWYgc3RydWN0IAorKwl7CisrCWludCBjdXJ2ZTsKKysJY29uc3QgdW5z aWduZWQgY2hhciAqeDE7CisrCXNpemVfdCB4MWxlbjsKKysJY29uc3QgdW5zaWduZWQgY2hhciAq eTE7CisrCXNpemVfdCB5MWxlbjsKKysJY29uc3QgdW5zaWduZWQgY2hhciAqZDE7CisrCXNpemVf dCBkMWxlbjsKKysJY29uc3QgdW5zaWduZWQgY2hhciAqeDI7CisrCXNpemVfdCB4MmxlbjsKKysJ Y29uc3QgdW5zaWduZWQgY2hhciAqeTI7CisrCXNpemVfdCB5MmxlbjsKKysJY29uc3QgdW5zaWdu ZWQgY2hhciAqejsKKysJc2l6ZV90IHpsZW47CisrCX0gRUNESF9TRUxGVEVTVF9EQVRBOworKwor KyNkZWZpbmUgbWFrZV9lY2RoX3Rlc3QobmlkLCBwcikgeyBuaWQsIFwKKysJCQkJcHIjI19xaXV0 eCwgc2l6ZW9mKHByIyNfcWl1dHgpLCBcCisrCQkJCXByIyNfcWl1dHksIHNpemVvZihwciMjX3Fp dXR5KSwgXAorKwkJCQlwciMjX3FpdXRkLCBzaXplb2YocHIjI19xaXV0ZCksIFwKKysJCQkJcHIj I19xY2F2c3gsIHNpemVvZihwciMjX3FjYXZzeCksIFwKKysJCQkJcHIjI19xY2F2c3ksIHNpemVv ZihwciMjX3FjYXZzeSksIFwKKysJCQkJcHIjI196aXV0LCBzaXplb2YocHIjI196aXV0KSB9Cisr Cisrc3RhdGljIEVDREhfU0VMRlRFU1RfREFUQSB0ZXN0X2VjZGhfZGF0YVtdID0gCisrCXsKKysJ bWFrZV9lY2RoX3Rlc3QoTklEX1g5XzYyX3ByaW1lMjU2djEsIHAyNTYpLAorKwl9OworKworK2lu dCBGSVBTX3NlbGZ0ZXN0X2VjZGgodm9pZCkKKysJeworKwlFQ19LRVkgKmVjMSA9IE5VTEwsICpl YzIgPSBOVUxMOworKwljb25zdCBFQ19QT0lOVCAqZWNwID0gTlVMTDsKKysJQklHTlVNICp4ID0g TlVMTCwgKnkgPSBOVUxMLCAqZCA9IE5VTEw7CisrCXVuc2lnbmVkIGNoYXIgKnp0bXAgPSBOVUxM OworKwlpbnQgcnYgPSAxOworKwlzaXplX3QgaTsKKysKKysJZm9yIChpID0gMDsgaSA8IHNpemVv Zih0ZXN0X2VjZGhfZGF0YSkvc2l6ZW9mKEVDREhfU0VMRlRFU1RfREFUQSk7IGkrKykKKysJCXsK KysJCUVDREhfU0VMRlRFU1RfREFUQSAqZWNkID0gdGVzdF9lY2RoX2RhdGEgKyBpOworKwkJaWYg KCFmaXBzX3Bvc3Rfc3RhcnRlZChGSVBTX1RFU1RfRUNESCwgZWNkLT5jdXJ2ZSwgMCkpCisrCQkJ Y29udGludWU7CisrCQl6dG1wID0gT1BFTlNTTF9tYWxsb2MoZWNkLT56bGVuKTsKKysKKysJCXgg PSBCTl9iaW4yYm4oZWNkLT54MSwgZWNkLT54MWxlbiwgeCk7CisrCQl5ID0gQk5fYmluMmJuKGVj ZC0+eTEsIGVjZC0+eTFsZW4sIHkpOworKwkJZCA9IEJOX2JpbjJibihlY2QtPmQxLCBlY2QtPmQx bGVuLCBkKTsKKysKKysJCWlmICgheCB8fCAheSB8fCAhZCB8fCAhenRtcCkKKysJCQl7CisrCQkJ cnYgPSAtMTsKKysJCQlnb3RvIGVycjsKKysJCQl9CisrCisrCQllYzEgPSBFQ19LRVlfbmV3X2J5 X2N1cnZlX25hbWUoZWNkLT5jdXJ2ZSk7CisrCQlpZiAoIWVjMSkKKysJCQl7CisrCQkJcnYgPSAt MTsKKysJCQlnb3RvIGVycjsKKysJCQl9CisrCQlFQ19LRVlfc2V0X2ZsYWdzKGVjMSwgRUNfRkxB R19DT0ZBQ1RPUl9FQ0RIKTsKKysKKysJCWlmICghRUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmlu ZV9jb29yZGluYXRlcyhlYzEsIHgsIHkpKQorKwkJCXsKKysJCQlydiA9IC0xOworKwkJCWdvdG8g ZXJyOworKwkJCX0KKysKKysJCWlmICghRUNfS0VZX3NldF9wcml2YXRlX2tleShlYzEsIGQpKQor KwkJCXsKKysJCQlydiA9IC0xOworKwkJCWdvdG8gZXJyOworKwkJCX0KKysKKysJCXggPSBCTl9i aW4yYm4oZWNkLT54MiwgZWNkLT54MmxlbiwgeCk7CisrCQl5ID0gQk5fYmluMmJuKGVjZC0+eTIs IGVjZC0+eTJsZW4sIHkpOworKworKwkJaWYgKCF4IHx8ICF5KQorKwkJCXsKKysJCQlydiA9IC0x OworKwkJCWdvdG8gZXJyOworKwkJCX0KKysKKysJCWVjMiA9IEVDX0tFWV9uZXdfYnlfY3VydmVf bmFtZShlY2QtPmN1cnZlKTsKKysJCWlmICghZWMyKQorKwkJCXsKKysJCQlydiA9IC0xOworKwkJ CWdvdG8gZXJyOworKwkJCX0KKysJCUVDX0tFWV9zZXRfZmxhZ3MoZWMxLCBFQ19GTEFHX0NPRkFD VE9SX0VDREgpOworKworKwkJaWYgKCFFQ19LRVlfc2V0X3B1YmxpY19rZXlfYWZmaW5lX2Nvb3Jk aW5hdGVzKGVjMiwgeCwgeSkpCisrCQkJeworKwkJCXJ2ID0gLTE7CisrCQkJZ290byBlcnI7Cisr CQkJfQorKworKwkJZWNwID0gRUNfS0VZX2dldDBfcHVibGljX2tleShlYzIpOworKwkJaWYgKCFl Y3ApCisrCQkJeworKwkJCXJ2ID0gLTE7CisrCQkJZ290byBlcnI7CisrCQkJfQorKworKwkJaWYg KCFFQ0RIX2NvbXB1dGVfa2V5KHp0bXAsIGVjZC0+emxlbiwgZWNwLCBlYzEsIDApKQorKwkJCXsK KysJCQlydiA9IC0xOworKwkJCWdvdG8gZXJyOworKwkJCX0KKysKKysJCWlmICghZmlwc19wb3N0 X2NvcnJ1cHQoRklQU19URVNUX0VDREgsIGVjZC0+Y3VydmUsIE5VTEwpKQorKwkJCXp0bXBbMF0g Xj0gMHgxOworKworKwkJaWYgKG1lbWNtcCh6dG1wLCBlY2QtPnosIGVjZC0+emxlbikpCisrCQkJ eworKwkJCWZpcHNfcG9zdF9mYWlsZWQoRklQU19URVNUX0VDREgsIGVjZC0+Y3VydmUsIDApOwor KwkJCXJ2ID0gMDsKKysJCQl9CisrCQllbHNlIGlmICghZmlwc19wb3N0X3N1Y2Nlc3MoRklQU19U RVNUX0VDREgsIGVjZC0+Y3VydmUsIDApKQorKwkJCWdvdG8gZXJyOworKworKwkJRUNfS0VZX2Zy ZWUoZWMxKTsKKysJCWVjMSA9IE5VTEw7CisrCQlFQ19LRVlfZnJlZShlYzIpOworKwkJZWMyID0g TlVMTDsKKysJCU9QRU5TU0xfZnJlZSh6dG1wKTsKKysJCXp0bXAgPSBOVUxMOworKwkJfQorKwor KwllcnI6CisrCisrCWlmICh4KQorKwkJQk5fY2xlYXJfZnJlZSh4KTsKKysJaWYgKHkpCisrCQlC Tl9jbGVhcl9mcmVlKHkpOworKwlpZiAoZCkKKysJCUJOX2NsZWFyX2ZyZWUoZCk7CisrCWlmIChl YzEpCisrCQlFQ19LRVlfZnJlZShlYzEpOworKwlpZiAoZWMyKQorKwkJRUNfS0VZX2ZyZWUoZWMy KTsKKysJaWYgKHp0bXApCisrCQlPUEVOU1NMX2ZyZWUoenRtcCk7CisrCisrCXJldHVybiBydjsK KysKKysJfQorKworKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2ZpcHMv Zmlwc19lY2RzYV9zZWxmdGVzdC5jLmZpcHMtZWMgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2ZpcHMv Zmlwc19lY2RzYV9zZWxmdGVzdC5jCistLS0gb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2ZpcHMvZmlw c19lY2RzYV9zZWxmdGVzdC5jLmZpcHMtZWMJMjAxMy0xMC0xNSAwMTowODowNi4wNDg3ODMxNDUg KzAxMDAKKysrKyBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZmlwcy9maXBzX2VjZHNhX3NlbGZ0ZXN0 LmMJMjAxMy0xMC0xNSAwMTowODowNi4wNDg3ODMxNDUgKzAxMDAKK0BAIC0wLDAgKzEsMTY3IEBA CisrLyogZmlwcy9lY2RzYS9maXBzX2VjZHNhX3NlbGZ0ZXN0LmMgKi8KKysvKiBXcml0dGVuIGJ5 IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wK KysgKiBwcm9qZWN0IDIwMTEuCisrICovCisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQg KGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoK KysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3 aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4g UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5 cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4K KysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk IHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlz aW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAg c29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICog ICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5T U0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6 Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29s a2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVu ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo b3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNz aW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAgIGxpY2Vuc2luZ0BPcGVuU1NMLm9yZy4KKysgKgor KyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2Fs bGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBu YW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVu U1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hh dHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6 CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhl IE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAo aHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W SURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVT U0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAor KyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ TlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisr ICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisr ICoKKysgKi8KKysKKysjZGVmaW5lIE9QRU5TU0xfRklQU0FQSQorKworKyNpbmNsdWRlIDxzdHJp bmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9l Yy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2VjZHNhLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlw cy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5o PgorKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+CisrCisrI2lmZGVmIE9QRU5TU0xfRklQUworKwor K3N0YXRpYyBjb25zdCBjaGFyIFBfMjU2X25hbWVbXSA9ICJFQ0RTQSBQLTI1NiI7CisrCisrc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgUF8yNTZfZFtdID0geworKwkweDUxLDB4YmQsMHgwNiww eGExLDB4MWMsMHhkYSwweGUyLDB4MTIsMHg5OSwweGM5LDB4NTIsMHgzZiwKKysJMHhlYSwweGE0 LDB4ZDIsMHhkMSwweGY0LDB4N2YsMHhkNCwweDNlLDB4YmQsMHhmOCwweGZjLDB4ODcsCisrCTB4 ZGMsMHg4MiwweDUzLDB4MjEsMHhlZSwweGEwLDB4ZGMsMHg2NAorK307Cisrc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgUF8yNTZfcXhbXSA9IHsKKysJMHgyMywweDg5LDB4ZTAsMHhmNCwweDY5 LDB4ZTAsMHg0OSwweGU1LDB4YzcsMHhlNSwweDQwLDB4NmUsCisrCTB4OGYsMHgyNSwweGRkLDB4 YWQsMHgxMSwweDE2LDB4MTQsMHg5YiwweGFiLDB4NDQsMHgwNiwweDMxLAorKwkweGJmLDB4NWUs MHhhNiwweDQ0LDB4YWMsMHg4NiwweDAwLDB4MDcKKyt9OworK3N0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIFBfMjU2X3F5W10gPSB7CisrCTB4YjMsMHgwNSwweDBkLDB4ZDAsMHhkYywweGY3LDB4 NDAsMHhlNiwweGY5LDB4ZDgsMHg2ZCwweDdiLAorKwkweDYzLDB4Y2EsMHg5NywweGU2LDB4MTIs MHhmOSwweGQ0LDB4MTgsMHg1OSwweGJlLDB4YjIsMHg1ZSwKKysJMHg0YSwweDZhLDB4NzcsMHgy MywweGY0LDB4MTEsMHg5ZCwweGViCisrfTsKKysKKyt0eXBlZGVmIHN0cnVjdCAKKysJeworKwlp bnQgY3VydmU7CisrCWNvbnN0IGNoYXIgKm5hbWU7CisrCWNvbnN0IHVuc2lnbmVkIGNoYXIgKng7 CisrCXNpemVfdCB4bGVuOworKwljb25zdCB1bnNpZ25lZCBjaGFyICp5OworKwlzaXplX3QgeWxl bjsKKysJY29uc3QgdW5zaWduZWQgY2hhciAqZDsKKysJc2l6ZV90IGRsZW47CisrCX0gRUNfU0VM RlRFU1RfREFUQTsKKysKKysjZGVmaW5lIG1ha2VfZWNkc2FfdGVzdChuaWQsIHByKSB7IG5pZCwg cHIjI19uYW1lLCBcCisrCQkJCXByIyNfcXgsIHNpemVvZihwciMjX3F4KSwgXAorKwkJCQlwciMj X3F5LCBzaXplb2YocHIjI19xeSksIFwKKysJCQkJcHIjI19kLCBzaXplb2YocHIjI19kKX0KKysK KytzdGF0aWMgRUNfU0VMRlRFU1RfREFUQSB0ZXN0X2VjX2RhdGFbXSA9IAorKwl7CisrCW1ha2Vf ZWNkc2FfdGVzdChOSURfWDlfNjJfcHJpbWUyNTZ2MSwgUF8yNTYpLAorKwl9OworKworK2ludCBG SVBTX3NlbGZ0ZXN0X2VjZHNhKCkKKysJeworKwlFQ19LRVkgKmVjID0gTlVMTDsKKysJQklHTlVN ICp4ID0gTlVMTCwgKnkgPSBOVUxMLCAqZCA9IE5VTEw7CisrCUVWUF9QS0VZICpwayA9IE5VTEw7 CisrCWludCBydiA9IDA7CisrCXNpemVfdCBpOworKworKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9m KHRlc3RfZWNfZGF0YSkvc2l6ZW9mKEVDX1NFTEZURVNUX0RBVEEpOyBpKyspCisrCQl7CisrCQlF Q19TRUxGVEVTVF9EQVRBICplY2QgPSB0ZXN0X2VjX2RhdGEgKyBpOworKworKwkJeCA9IEJOX2Jp bjJibihlY2QtPngsIGVjZC0+eGxlbiwgeCk7CisrCQl5ID0gQk5fYmluMmJuKGVjZC0+eSwgZWNk LT55bGVuLCB5KTsKKysJCWQgPSBCTl9iaW4yYm4oZWNkLT5kLCBlY2QtPmRsZW4sIGQpOworKwor KwkJaWYgKCF4IHx8ICF5IHx8ICFkKQorKwkJCWdvdG8gZXJyOworKworKwkJZWMgPSBFQ19LRVlf bmV3X2J5X2N1cnZlX25hbWUoZWNkLT5jdXJ2ZSk7CisrCQlpZiAoIWVjKQorKwkJCWdvdG8gZXJy OworKworKwkJaWYgKCFFQ19LRVlfc2V0X3B1YmxpY19rZXlfYWZmaW5lX2Nvb3JkaW5hdGVzKGVj LCB4LCB5KSkKKysJCQlnb3RvIGVycjsKKysKKysJCWlmICghRUNfS0VZX3NldF9wcml2YXRlX2tl eShlYywgZCkpCisrCQkJZ290byBlcnI7CisrCisrCQlpZiAoKHBrPUVWUF9QS0VZX25ldygpKSA9 PSBOVUxMKQorKwkJCWdvdG8gZXJyOworKworKwkJRVZQX1BLRVlfYXNzaWduX0VDX0tFWShwaywg ZWMpOworKworKwkJaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIE5VTEwsIDAsCisr CQkJCQkJTlVMTCwgMCwgRVZQX3NoYTI1NigpLCAwLAorKwkJCQkJCWVjZC0+bmFtZSkpCisrCQkJ Z290byBlcnI7CisrCQl9CisrCisrCXJ2ID0gMTsKKysKKysJZXJyOgorKworKwlpZiAoeCkKKysJ CUJOX2NsZWFyX2ZyZWUoeCk7CisrCWlmICh5KQorKwkJQk5fY2xlYXJfZnJlZSh5KTsKKysJaWYg KGQpCisrCQlCTl9jbGVhcl9mcmVlKGQpOworKwlpZiAocGspCisrCQlFVlBfUEtFWV9mcmVlKHBr KTsKKysJZWxzZSBpZiAoZWMpCisrCQlFQ19LRVlfZnJlZShlYyk7CisrCisrCXJldHVybiBydjsK KysKKysJfQorKworKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2ZpcHMv Zmlwc19wb3N0LmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZmlwcy9maXBzX3Bvc3Qu YworLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9maXBzL2ZpcHNfcG9zdC5jLmZpcHMtZWMJMjAx My0xMC0xNSAwMTowODowNi4wMDU3ODMyMDQgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4xZS9jcnlw dG8vZmlwcy9maXBzX3Bvc3QuYwkyMDEzLTEwLTE1IDAxOjA4OjA2LjA0ODc4MzE0NSArMDEwMAor QEAgLTk1LDggKzk1LDEyIEBAIGludCBGSVBTX3NlbGZ0ZXN0KHZvaWQpCisgCQlydiA9IDA7Cisg CWlmICghRklQU19zZWxmdGVzdF9yc2EoKSkKKyAJCXJ2ID0gMDsKKysJaWYgKCFGSVBTX3NlbGZ0 ZXN0X2VjZHNhKCkpCisrCQlydiA9IDA7CisgCWlmICghRklQU19zZWxmdGVzdF9kc2EoKSkKKyAJ CXJ2ID0gMDsKKysJaWYgKCFGSVBTX3NlbGZ0ZXN0X2VjZGgoKSkKKysJCXJ2ID0gMDsKKyAJcmV0 dXJuIHJ2OworIAl9CisgCitkaWZmIC11cCBvcGVuc3NsLTEuMC4xZS92ZXJzaW9uLm1hcC5maXBz LWVjIG9wZW5zc2wtMS4wLjFlL3ZlcnNpb24ubWFwCistLS0gb3BlbnNzbC0xLjAuMWUvdmVyc2lv bi5tYXAuZmlwcy1lYwkyMDEzLTEwLTE1IDAxOjA4OjA2LjAxNjc4MzE4OSArMDEwMAorKysrIG9w ZW5zc2wtMS4wLjFlL3ZlcnNpb24ubWFwCTIwMTMtMTAtMTUgMDE6MDg6MDYuMDQ4NzgzMTQ1ICsw MTAwCitAQCAtNiwzICs2LDcgQEAgT1BFTlNTTF8xLjAuMSB7CisgCSAgICBfb3JpZ2luYWwqOwor IAkgICAgX2N1cnJlbnQqOworIH07CisrT1BFTlNTTF8xLjAuMV9FQyB7CisrICAgIGdsb2JhbDoK KysJICAgIEVDKjsKKyt9OwoKZGlmZiAtLWdpdCBhL29wZW5zc2wuc3BlYyBiL29wZW5zc2wuc3Bl YwppbmRleCAyNDhjNWE5Li4zMmJlM2M5IDEwMDY0NAotLS0gYS9vcGVuc3NsLnNwZWMKKysrIGIv b3BlbnNzbC5zcGVjCkBAIC0yMSw3ICsyMSw3IEBACiBTdW1tYXJ5OiBVdGlsaXRpZXMgZnJvbSB0 aGUgZ2VuZXJhbCBwdXJwb3NlIGNyeXB0b2dyYXBoeSBsaWJyYXJ5IHdpdGggVExTIGltcGxlbWVu dGF0aW9uCiBOYW1lOiBvcGVuc3NsCiBWZXJzaW9uOiAxLjAuMWUKLVJlbGVhc2U6IDI2JXs/ZGlz dH0KK1JlbGVhc2U6IDI3JXs/ZGlzdH0KIEVwb2NoOiAxCiAjIFdlIGhhdmUgdG8gcmVtb3ZlIGNl cnRhaW4gcGF0ZW50ZWQgYWxnb3JpdGhtcyBmcm9tIHRoZSBvcGVuc3NsIHNvdXJjZQogIyB0YXJi YWxsIHdpdGggdGhlIGhvYmJsZS1vcGVuc3NsIHNjcmlwdCB3aGljaCBpcyBpbmNsdWRlZCBiZWxv dy4KQEAgLTc3LDYgKzc3LDcgQEAgUGF0Y2g4Mjogb3BlbnNzbC0xLjAuMWUtYmFja3BvcnRzLnBh dGNoCiBQYXRjaDgzOiBvcGVuc3NsLTEuMC4xZS1iYWQtbWFjLnBhdGNoCiBQYXRjaDg0OiBvcGVu c3NsLTEuMC4xZS10cnVzdGVkLWZpcnN0LnBhdGNoCiBQYXRjaDg1OiBvcGVuc3NsLTEuMC4xZS1h cm0tdXNlLWVsZi1hdXh2LWNhcHMucGF0Y2gKK1BhdGNoODY6IG9wZW5zc2wtMS4wLjFlLWZpcHMt ZWMucGF0Y2gKIAogTGljZW5zZTogT3BlblNTTAogR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9M aWJyYXJpZXMKQEAgLTE5Nyw2ICsxOTgsNyBAQCBPcGVuU1NMIEZJUFMgbW9kdWxlLgogJXBhdGNo ODMgLXAxIC1iIC5iYWQtbWFjCiAlcGF0Y2g4NCAtcDEgLWIgLnRydXN0ZWQtZmlyc3QKICVwYXRj aDg1IC1wMSAtYiAuYXJtY2FwCislcGF0Y2g4NiAtcDEgLWIgLmZpcHMtZWMKIAogc2VkIC1pICdz L1NITElCX1ZFUlNJT05fTlVNQkVSICIxLjAuMCIvU0hMSUJfVkVSU0lPTl9OVU1CRVIgIiV7dmVy c2lvbn0iLycgY3J5cHRvL29wZW5zc2x2LmgKIApAQCAtMjUxLDcgKzI1Myw3IEBAIHNzbGFyY2g9 bGludXgtcHBjNjQKIC4vQ29uZmlndXJlIFwKIAktLXByZWZpeD0le19wcmVmaXh9IC0tb3BlbnNz bGRpcj0le19zeXNjb25mZGlyfS9wa2kvdGxzICR7c3NsZmxhZ3N9IFwKIAl6bGliIGVuYWJsZS1j YW1lbGxpYSBlbmFibGUtc2VlZCBlbmFibGUtdGxzZXh0IGVuYWJsZS1yZmMzNzc5IFwKLQllbmFi bGUtY21zIGVuYWJsZS1tZDIgbm8tbWRjMiBuby1yYzUgbm8tZWMgbm8tZWMybSBuby1lY2RoIG5v LWVjZHNhIG5vLXNycCBcCisJZW5hYmxlLWNtcyBlbmFibGUtbWQyIG5vLW1kYzIgbm8tcmM1IG5v LXNycCBcCiAJLS13aXRoLWtyYjUtZmxhdm9yPU1JVCAtLWVuZ2luZXNkaXI9JXtfbGliZGlyfS9v cGVuc3NsL2VuZ2luZXMgXAogCS0td2l0aC1rcmI1LWRpcj0vdXNyIHNoYXJlZCAgJHtzc2xhcmNo fSAlez8hbm9maXBzOmZpcHN9CiAKQEAgLTQ3Myw2ICs0NzUsOSBAQCBybSAtcmYgJFJQTV9CVUlM RF9ST09ULyV7X2xpYmRpcn0vZmlwc2NhbmlzdGVyLioKIHByZWxpbmsgLXUgJXtfbGliZGlyfS9s aWJjcnlwdG8uc28uJXt2ZXJzaW9ufSAle19saWJkaXJ9L2xpYnNzbC5zby4le3ZlcnNpb259IDI+ L2Rldi9udWxsIHx8IDoKIAogJWNoYW5nZWxvZworKiBNb24gT2N0IDE0IDIwMTMgVG9tIENhbGxh d2F5IDxzcG90QGZlZG9yYXByb2plY3Qub3JnPiAtIDEuMC4xZS0yNworLSByZXNvbHZlIGJ1Z3pp bGxhIDMxOTkwMSAocGhldyEgb25seSB0b29rIDYgeWVhcnMgJiA5IGRheXMpCisKICogRnJpIFNl cCAyNyAyMDEzIFRvbcOhxaEgTXLDoXogPHRtcmF6QHJlZGhhdC5jb20+IDEuMC4xZS0yNgogLSBt YWtlIERUTFMxIHdvcmsgaW4gRklQUyBtb2RlCiAtIGF2b2lkIFJTQSBhbmQgRFNBIDUxMiBiaXRz IGFuZCBXaGlybHBvb2wgaW4gJ29wZW5zc2wgc3BlZWQnIGluIEZJUFMgbW9kZQoKZGlmZiAtLWdp dCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGY0YmEzYTEuLmQ1YWJhZjggMTAwNjQ0Ci0tLSBh L3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSArMSBAQAotNjQxNjc3YzExNjg2NWU2MDYwMTY3 NzMyOWI1MTRlMmQgIG9wZW5zc2wtMS4wLjFlLXVzYS50YXIueHoKKzNiMDg0NWNmYmJiMmFmMzUw ZWYzYjAyNmY4ZGZjZDVmICBvcGVuc3NsLTEuMC4xZS11c2EudGFyLnh6Cg==