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: 4.3.2-5 Date: Mon, 29 Jun 2026 12:23:57 GMT Message-ID: <178273583708.1.6426932397377216597.rpms-gcc-469bb9a9441d@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 469bb9a9441d54aa2e0e3c75a2600602b1bb3573 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogNDY5YmI5YTk0NDFkNTRhYTJlMGUzYzc1YTI2MDA2MDJi MWJiMzU3MwpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwOC0xMC0wOFQxMzoxMjo1NSswMDowMApTdGF0cyAgOiArMjU1My8tNiBpbiA2 IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nY2Mv Yy80NjliYjlhOTQ0MWQ1NGFhMmUwZTNjNzVhMjYwMDYwMmIxYmIzNTczP2JyYW5jaD1yaGVsLWY0 MS1iYXNlCgpMb2c6CjQuMy4yLTUKCi0tLQpkaWZmIC0tZ2l0IGEvLmN2c2lnbm9yZSBiLy5jdnNp Z25vcmUKaW5kZXggMWFkYmExMC4uMTdkNTUwMSAxMDA2NDQKLS0tIGEvLmN2c2lnbm9yZQorKysg Yi8uY3ZzaWdub3JlCkBAIC0xLDIgKzEsMiBAQAotZ2NjLTQuMy4yLTIwMDgwOTE3LnRhci5iejIK K2djYy00LjMuMi0yMDA4MTAwOC50YXIuYnoyCiBmYXN0amFyLTAuOTUudGFyLmd6CgpkaWZmIC0t Z2l0IGEvZ2NjNDMtYWVzLnBhdGNoIGIvZ2NjNDMtYWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjlhNDVkNDUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0My1hZXMu cGF0Y2gKQEAgLTAsMCArMSwxMzUxIEBACisyMDA4LTA0LTA0ICBILkouIEx1ICA8aG9uZ2ppdS5s dUBpbnRlbC5jb20+CisKKwkqIGNvbmZpZy5nY2MgKGV4dHJhX2hlYWRlcnMpOiBBZGQgd21taW50 cmluLmggZm9yIHg4NiBhbmQgeDg2LTY0LgorCisJKiBjb25maWcvaTM4Ni9jcHVpZC5oIChiaXRf QUVTKTogTmV3LgorCShiaXRfUENMTVVMKTogTGlrZXdpc2UuCisKKwkqIGNvbmZpZy9pMzg2L2kz ODYuYyAocHRhX2ZsYWdzKTogQWRkIFBUQV9BRVMgYW5kIFBUQV9QQ0xNVUwuCisJKG92ZXJyaWRl X29wdGlvbnMpOiBIYW5kbGUgUFRBX0FFUyBhbmQgUFRBX1BDTE1VTC4gIEVuYWJsZQorCVNTRTIg aWYgQUVTIG9yIFBDTE1VTCBpcyBlbmFibGVkLgorCShpeDg2X2J1aWx0aW5zKTogQWRkIElYODZf QlVJTFRJTl9BRVNFTkMxMjgsCisJSVg4Nl9CVUlMVElOX0FFU0VOQ0xBU1QxMjgsIElYODZfQlVJ TFRJTl9BRVNERUMxMjgsCisJSVg4Nl9CVUlMVElOX0FFU0RFQ0xBU1QxMjgsIElYODZfQlVJTFRJ Tl9BRVNJTUMxMjgsCisJSVg4Nl9CVUlMVElOX0FFU0tFWUdFTkFTU0lTVDEyOCBhbmQgSVg4Nl9C VUlMVElOX1BDTE1VTFFEUTEyOC4KKwkoYmRlc2Nfc3NlXzNhcmcpOiBBZGQgSVg4Nl9CVUlMVElO X1BDTE1VTFFEUTEyOC4KKwkoYmRlc2NfMmFyZyk6IEFkZCBJWDg2X0JVSUxUSU5fQUVTRU5DMTI4 LAorCUlYODZfQlVJTFRJTl9BRVNFTkNMQVNUMTI4LCBJWDg2X0JVSUxUSU5fQUVTREVDMTI4LAor CUlYODZfQlVJTFRJTl9BRVNERUNMQVNUMTI4IGFuZCBJWDg2X0JVSUxUSU5fQUVTS0VZR0VOQVNT SVNUMTI4LgorCShiZGVzY18xYXJnKTogQWRkIElYODZfQlVJTFRJTl9BRVNJTUMxMjguCisJKGl4 ODZfaW5pdF9tbXhfc3NlX2J1aWx0aW5zKTogRGVmaW5lIF9fYnVpbHRpbl9pYTMyX2Flc2VuYzEy OCwKKwlfX2J1aWx0aW5faWEzMl9hZXNlbmNsYXN0MTI4LCBfX2J1aWx0aW5faWEzMl9hZXNkZWMx MjgsCisJX19idWlsdGluX2lhMzJfYWVzZGVjbGFzdDEyOCxfX2J1aWx0aW5faWEzMl9hZXNpbWMx MjgsCisJX19idWlsdGluX2lhMzJfYWVza2V5Z2VuYXNzaXN0MTI4IGFuZAorCV9fYnVpbHRpbl9p YTMyX3BjbG11bHFkcTEyOC4KKwkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfYmlu b3BfaW1tX2J1aWx0aW4pOiBOZXcuCisJKGl4ODZfZXhwYW5kX2J1aWx0aW4pOiBVc2UgaXQgZm9y IElYODZfQlVJTFRJTl9QU0xMRFFJMTI4IGFuZAorCUlYODZfQlVJTFRJTl9QU1JMRFFJMTI4LiAg SGFuZGxlIElYODZfQlVJTFRJTl9BRVNLRVlHRU5BU1NJU1QxMjguCisKKwkqIGNvbmZpZy9pMzg2 L2kzODYuaCAoVEFSR0VUX0FFUyk6IE5ldy4KKwkoVEFSR0VUX1BDTE1VTCk6IExpa2V3aXNlLgor CShUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IEhhbmRsZSBUQVJHRVRfQUVTIGFuZCBUQVJHRVRf UENMTVVMLgorCisJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChVTlNQRUNfQUVTRU5DKTogTmV3Lgor CShVTlNQRUNfQUVTRU5DTEFTVCk6IExpa2V3aXNlLgorCShVTlNQRUNfQUVTREVDKTogTGlrZXdp c2UuCisJKFVOU1BFQ19BRVNERUNMQVNUKTogTGlrZXdpc2UuCisJKFVOU1BFQ19BRVNJTUMpOiBM aWtld2lzZS4KKwkoVU5TUEVDX0FFU0tFWUdFTkFTU0lTVCk6IExpa2V3aXNlLgorCShVTlNQRUNf UENMTVVMUURRKTogTGlrZXdpc2UuCisKKwkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChtYWVzKTog TmV3LgorCShtcGNsbXVsKTogTGlrZXdpc2UuCisKKwkqIGNvbmZpZy9pMzg2L3NzZS5tZCAoYWVz ZW5jKTogTmV3IHBhdHRlcm4uCisJKGFlc2VuY2xhc3QpOiBMaWtld2lzZS4KKwkoYWVzZGVjKTog TGlrZXdpc2UuCisJKGFlc2RlY2xhc3QpOiBMaWtld2lzZS4KKwkoYWVzaW1jKTogTGlrZXdpc2Uu CisJKGFlc2tleWdlbmFzc2lzdCk6IExpa2V3aXNlLgorCShwY2xtdWxxZHEpOiBMaWtld2lzZS4K KworCSogY29uZmlnL2kzODYvd21taW50cmluLmg6IE5ldy4KKworCSogZG9jL2V4dGVuZC50ZXhp OiBEb2N1bWVudCBBRVMgYW5kIFBDTE1VTCBidWlsdC1pbiBmdW5jdGlvbi4KKworCSogZG9jL2lu dm9rZS50ZXhpOiBEb2N1bWVudCAtbWFlcyBhbmQgLW1wY2xtdWwuCisKKwkqIGcrKy5kZy9vdGhl ci9pMzg2LTIuQzogSW5jbHVkZSA8d21taW50cmluLmg+LgorCSogZysrLmRnL290aGVyL2kzODYt My5DOiBMaWtld2lzZS4KKwkqIGdjYy50YXJnZXQvaTM4Ni9zc2UtMTMuYzogTGlrZXdpc2UuCisJ KiBnY2MudGFyZ2V0L2kzODYvc3NlLTE0LmM6IExpa2V3aXNlLgorCisJKiBnY2MudGFyZ2V0L2kz ODYvYWVzLWNoZWNrLmg6IE5ldy4KKwkqIGdjYy50YXJnZXQvaTM4Ni9hZXNkZWMuYzogTGlrZXdp c2UuCisJKiBnY2MudGFyZ2V0L2kzODYvYWVzZGVjbGFzdC5jOiBMaWtld2lzZS4KKwkqIGdjYy50 YXJnZXQvaTM4Ni9hZXNlbmMuYzogTGlrZXdpc2UuCisJKiBnY2MudGFyZ2V0L2kzODYvYWVzZW5j bGFzdC5jOiBMaWtld2lzZS4KKwkqIGdjYy50YXJnZXQvaTM4Ni9hZXNpbWMuYzogTGlrZXdpc2Uu CisJKiBnY2MudGFyZ2V0L2kzODYvYWVza2V5Z2VuYXNzaXN0LmM6IExpa2V3aXNlLgorCSogZ2Nj LnRhcmdldC9pMzg2L3BjbG11bHFkcS5jOiBMaWtld2lzZS4KKwkqIGdjYy50YXJnZXQvaTM4Ni9w Y2xtdWwtY2hlY2suaDogTGlrZXdpc2UuCisKKwkqIGdjYy50YXJnZXQvaTM4Ni9pMzg2LmV4cCAo Y2hlY2tfZWZmZWN0aXZlX3RhcmdldF9hZXMpOiBOZXcuCisJKGNoZWNrX2VmZmVjdGl2ZV90YXJn ZXRfcGNsbXVsKTogTGlrZXdpc2UuCisKKy0tLSBnY2MvY29uZmlnLmdjYwkocmV2aXNpb24gMTMz OTAxKQorKysrIGdjYy9jb25maWcuZ2NjCShyZXZpc2lvbiAxMzM5MDIpCitAQCAtMzA5LDEzICsz MDksMTUgQEAgaVszNDU2N104Ni0qLSopCisgCWNwdV90eXBlPWkzODYKKyAJZXh0cmFfaGVhZGVy cz0iY3B1aWQuaCBtbWludHJpbi5oIG1tM2Rub3cuaCB4bW1pbnRyaW4uaCBlbW1pbnRyaW4uaAor IAkJICAgICAgIHBtbWludHJpbi5oIHRtbWludHJpbi5oIGFtbWludHJpbi5oIHNtbWludHJpbi5o CistCQkgICAgICAgbm1taW50cmluLmggYm1taW50cmluLmggbW1pbnRyaW4tY29tbW9uLmgiCisr CQkgICAgICAgbm1taW50cmluLmggYm1taW50cmluLmggbW1pbnRyaW4tY29tbW9uLmgKKysJCSAg ICAgICB3bW1pbnRyaW4uaCIKKyAJOzsKKyB4ODZfNjQtKi0qKQorIAljcHVfdHlwZT1pMzg2Cisg CWV4dHJhX2hlYWRlcnM9ImNwdWlkLmggbW1pbnRyaW4uaCBtbTNkbm93LmggeG1taW50cmluLmgg ZW1taW50cmluLmgKKyAJCSAgICAgICBwbW1pbnRyaW4uaCB0bW1pbnRyaW4uaCBhbW1pbnRyaW4u aCBzbW1pbnRyaW4uaAorLQkJICAgICAgIG5tbWludHJpbi5oIGJtbWludHJpbi5oIG1taW50cmlu LWNvbW1vbi5oIgorKwkJICAgICAgIG5tbWludHJpbi5oIGJtbWludHJpbi5oIG1taW50cmluLWNv bW1vbi5oCisrCQkgICAgICAgd21taW50cmluLmgiCisgCW5lZWRfNjRiaXRfaHdpbnQ9eWVzCisg CTs7CisgaWE2NC0qLSopCistLS0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAkocmV2aXNpb24gMTMz OTAxKQorKysrIGdjYy9jb25maWcvaTM4Ni9pMzg2LmgJKHJldmlzaW9uIDEzMzkwMikKK0BAIC0z OTUsNiArMzk1LDggQEAgZXh0ZXJuIGludCB4ODZfcHJlZmV0Y2hfc3NlOworICNkZWZpbmUgVEFS R0VUX1NBSEYJCXg4Nl9zYWhmCisgI2RlZmluZSBUQVJHRVRfUkVDSVAJCXg4Nl9yZWNpcAorICNk ZWZpbmUgVEFSR0VUX0ZVU0VEX01BREQJeDg2X2Z1c2VkX211bGFkZAorKyNkZWZpbmUgVEFSR0VU X0FFUwkJKFRBUkdFVF9TU0UyICYmIHg4Nl9hZXMpCisrI2RlZmluZSBUQVJHRVRfUENMTVVMCQko VEFSR0VUX1NTRTIgJiYgeDg2X3BjbG11bCkKKyAKKyAjZGVmaW5lIEFTU0VNQkxFUl9ESUFMRUNU CShpeDg2X2FzbV9kaWFsZWN0KQorIAorQEAgLTY4Myw2ICs2ODUsMTAgQEAgZXh0ZXJuIGNvbnN0 IGNoYXIgKmhvc3RfZGV0ZWN0X2xvY2FsX2NwdQorIAlidWlsdGluX2RlZmluZSAoIl9fU1NFNF8x X18iKTsJCQkJXAorICAgICAgIGlmIChUQVJHRVRfU1NFNF8yKQkJCQkJXAorIAlidWlsdGluX2Rl ZmluZSAoIl9fU1NFNF8yX18iKTsJCQkJXAorKyAgICAgIGlmIChUQVJHRVRfQUVTKQkJCQkJCVwK KysJYnVpbHRpbl9kZWZpbmUgKCJfX0FFU19fIik7CQkJCVwKKysgICAgICBpZiAoVEFSR0VUX1BD TE1VTCkJCQkJCVwKKysJYnVpbHRpbl9kZWZpbmUgKCJfX1BDTE1VTF9fIik7CQkJCVwKKyAgICAg ICBpZiAoVEFSR0VUX1NTRTRBKQkJCQkJCVwKKyAgCWJ1aWx0aW5fZGVmaW5lICgiX19TU0U0QV9f Iik7CQkgICAgICAgICAgICAgICAgXAorICAgICAgIGlmIChUQVJHRVRfU1NFNSkJCQkJCQlcCist LS0gZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQJKHJldmlzaW9uIDEzMzkwMSkKKysrKyBnY2MvY29u ZmlnL2kzODYvaTM4Ni5tZAkocmV2aXNpb24gMTMzOTAyKQorQEAgLTE4Niw2ICsxODYsMTcgQEAg KGRlZmluZV9jb25zdGFudHMKKyAgICAoVU5TUEVDX0ZSQ1oJCQkxNTYpCisgICAgKFVOU1BFQ19D VlRQSDJQUwkJMTU3KQorICAgIChVTlNQRUNfQ1ZUUFMyUEgJCTE1OCkKKysKKysgICA7IEZvciBB RVMgc3VwcG9ydAorKyAgIChVTlNQRUNfQUVTRU5DCQkxNTkpCisrICAgKFVOU1BFQ19BRVNFTkNM QVNUCQkxNjApCisrICAgKFVOU1BFQ19BRVNERUMJCTE2MSkKKysgICAoVU5TUEVDX0FFU0RFQ0xB U1QJCTE2MikKKysgICAoVU5TUEVDX0FFU0lNQwkJMTYzKQorKyAgIChVTlNQRUNfQUVTS0VZR0VO QVNTSVNUCTE2NCkKKysKKysgICA7IEZvciBQQ0xNVUwgc3VwcG9ydAorKyAgIChVTlNQRUNfUENM TVVMCQkxNjUpCisgICBdKQorIAorIChkZWZpbmVfY29uc3RhbnRzCistLS0gZ2NjL2NvbmZpZy9p Mzg2L3dtbWludHJpbi5oCShyZXZpc2lvbiAwKQorKysrIGdjYy9jb25maWcvaTM4Ni93bW1pbnRy aW4uaAkocmV2aXNpb24gMTMzOTAyKQorQEAgLTAsMCArMSwxMjMgQEAKKysvKiBDb3B5cmlnaHQg KEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0NDLgorKworKyAgIEdDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRp b24pCisrICAgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgR0NDIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyAgIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5v dCwgd3JpdGUgdG8KKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUg UGxhY2UgLSBTdWl0ZSAzMzAsCisrICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwor KworKy8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIHlvdSBpbmNsdWRlIHRoaXMgaGVhZGVy IGZpbGUgaW50byBzb3VyY2UKKysgICBmaWxlcyBjb21waWxlZCBieSBHQ0MsIHRoaXMgaGVhZGVy IGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlCisrICAgdGhlIHJlc3VsdGluZyBleGVjdXRh YmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2Uu ICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyCisr ICAgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRo ZSBHTlUgR2VuZXJhbAorKyAgIFB1YmxpYyBMaWNlbnNlLiAgKi8KKysKKysvKiBJbXBsZW1lbnRl ZCBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uIGluY2x1ZGVkIGluIHRoZSBJbnRlbCBDKysgQ29tcGls ZXIKKysgICBVc2VyIEd1aWRlIGFuZCBSZWZlcmVuY2UsIHZlcnNpb24gMTAuMS4gICovCisrCisr I2lmbmRlZiBfV01NSU5UUklOX0hfSU5DTFVERUQKKysjZGVmaW5lIF9XTU1JTlRSSU5fSF9JTkNM VURFRAorKworKy8qIFdlIG5lZWQgZGVmaW5pdGlvbnMgZnJvbSB0aGUgU1NFMiBoZWFkZXIgZmls ZS4gICovCisrI2luY2x1ZGUgPGVtbWludHJpbi5oPgorKworKyNpZiAhZGVmaW5lZCAoX19BRVNf XykgJiYgIWRlZmluZWQgKF9fUENMTVVMX18pCisrIyBlcnJvciAiQUVTL1BDTE1VTCBpbnN0cnVj dGlvbnMgbm90IGVuYWJsZWQiCisrI2Vsc2UKKysKKysvKiBBRVMgKi8KKysKKysjaWZkZWYgX19B RVNfXworKy8qIFBlcmZvcm1zIDEgcm91bmQgb2YgQUVTIGRlY3J5cHRpb24gb2YgdGhlIGZpcnN0 IG0xMjhpIHVzaW5nIAorKyAgIHRoZSBzZWNvbmQgbTEyOGkgYXMgYSByb3VuZCBrZXkuICAqLwor K2V4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBf X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorK19tbV9hZXNkZWNfc2kxMjggKF9f bTEyOGkgX19YLCBfX20xMjhpIF9fWSkKKyt7CisrICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRp bl9pYTMyX2Flc2RlYzEyOCAoKF9fdjJkaSlfX1gsIChfX3YyZGkpX19ZKTsKKyt9CisrCisrLyog UGVyZm9ybXMgdGhlIGxhc3Qgcm91bmQgb2YgQUVTIGRlY3J5cHRpb24gb2YgdGhlIGZpcnN0IG0x MjhpIAorKyAgIHVzaW5nIHRoZSBzZWNvbmQgbTEyOGkgYXMgYSByb3VuZCBrZXkuICAqLworK2V4 dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fs d2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorK19tbV9hZXNkZWNsYXN0X3NpMTI4IChf X20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCisreworKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0 aW5faWEzMl9hZXNkZWNsYXN0MTI4ICgoX192MmRpKV9fWCwKKysJCQkJCQkgKF9fdjJkaSlfX1kp OworK30KKysKKysvKiBQZXJmb3JtcyAxIHJvdW5kIG9mIEFFUyBlbmNyeXB0aW9uIG9mIHRoZSBm aXJzdCBtMTI4aSB1c2luZyAKKysgICB0aGUgc2Vjb25kIG0xMjhpIGFzIGEgcm91bmQga2V5LiAg Ki8KKytleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKKytfbW1fYWVzZW5jX3NpMTI4 IChfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCisreworKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1 aWx0aW5faWEzMl9hZXNlbmMxMjggKChfX3YyZGkpX19YLCAoX192MmRpKV9fWSk7CisrfQorKwor Ky8qIFBlcmZvcm1zIHRoZSBsYXN0IHJvdW5kIG9mIEFFUyBlbmNyeXB0aW9uIG9mIHRoZSBmaXJz dCBtMTI4aQorKyAgIHVzaW5nIHRoZSBzZWNvbmQgbTEyOGkgYXMgYSByb3VuZCBrZXkuICAqLwor K2V4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBf X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorK19tbV9hZXNlbmNsYXN0X3NpMTI4 IChfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCisreworKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1 aWx0aW5faWEzMl9hZXNlbmNsYXN0MTI4ICgoX192MmRpKV9fWCwgKF9fdjJkaSlfX1kpOworK30K KysKKysvKiBQZXJmb3JtcyB0aGUgSW52ZXJzZU1peENvbHVtbiBvcGVyYXRpb24gb24gdGhlIHNv dXJjZSBtMTI4aSAKKysgICBhbmQgc3RvcmVzIHRoZSByZXN1bHQgaW50byBtMTI4aSBkZXN0aW5h dGlvbi4gICovCisrZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCisrX21tX2Flc2lt Y19zaTEyOCAoX19tMTI4aSBfX1gpCisreworKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5f aWEzMl9hZXNpbWMxMjggKChfX3YyZGkpX19YKTsKKyt9CisrCisrLyogR2VuZXJhdGVzIGEgbTEy OGkgcm91bmQga2V5IGZvciB0aGUgaW5wdXQgbTEyOGkgQUVTIGNpcGhlciBrZXkgYW5kCisrICAg Ynl0ZSByb3VuZCBjb25zdGFudC4gIFRoZSBzZWNvbmQgcGFyYW1ldGVyIG11c3QgYmUgYSBjb21w aWxlIHRpbWUKKysgICBjb25zdGFudC4gICovCisrI2lmZGVmIF9fT1BUSU1JWkVfXworK2V4dGVy biBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5 c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorK19tbV9hZXNrZXlnZW5hc3Npc3Rfc2kxMjgg KF9fbTEyOGkgX19YLCBjb25zdCBpbnQgX19DKQorK3sKKysgIHJldHVybiAoX19tMTI4aSkgX19i dWlsdGluX2lhMzJfYWVza2V5Z2VuYXNzaXN0MTI4ICgoX192MmRpKV9fWCwgX19DKTsKKyt9Cisr I2Vsc2UKKysjZGVmaW5lIF9tbV9hZXNrZXlnZW5hc3Npc3Rfc2kxMjgoWCwgQykJCQkJCVwKKysg ICgoX19tMTI4aSkgX19idWlsdGluX2lhMzJfYWVza2V5Z2VuYXNzaXN0MTI4ICgoX192MmRpKShf X20xMjhpKShYKSwJXAorKwkJCQkJCShpbnQpKEMpKSkKKysjZW5kaWYKKysjZW5kaWYgIC8qIF9f QUVTX18gKi8KKysKKysvKiBQQ0xNVUwgKi8KKysKKysjaWZkZWYgX19QQ0xNVUxfXworKy8qIFBl cmZvcm1zIGNhcnJ5LWxlc3MgaW50ZWdlciBtdWx0aXBsaWNhdGlvbiBvZiA2NC1iaXQgaGFsdmVz IG9mCisrICAgMTI4LWJpdCBpbnB1dCBvcGVyYW5kcy4gIFRoZSB0aGlyZCBwYXJhbWV0ZXIgaW5k dWNhdGVzIHdoaWNoIDY0LWJpdAorKyAgIGhhdmVzIG9mIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHYx IGFuZCB2MiBzaG91bGQgYmUgdXNlZC4gSXQgbXVzdCBiZQorKyAgIGEgY29tcGlsZSB0aW1lIGNv bnN0YW50LiAgKi8KKysjaWZkZWYgX19PUFRJTUlaRV9fCisrZXh0ZXJuIF9faW5saW5lIF9fbTEy OGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCisrX21tX2NsbXVsZXBpNjRfc2kxMjggKF9fbTEyOGkgX19YLCBfX20xMjhp IF9fWSwgY29uc3QgaW50IF9fSSkKKyt7CisrICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9p YTMyX3BjbG11bHFkcTEyOCAoKF9fdjJkaSlfX1gsCisrCQkJCQkJKF9fdjJkaSlfX1ksIF9fSSk7 CisrfQorKyNlbHNlCisrI2RlZmluZSBfbW1fY2xtdWxlcGk2NF9zaTEyOChYLCBZLCBJKQkJCQkJ XAorKyAgKChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wY2xtdWxxZHExMjggKChfX3YyZGkpKF9f bTEyOGkpKFgpLAkJXAorKwkJCQkJICAoX192MmRpKShfX20xMjhpKShZKSwgKGludCkoSSkpKQor KyNlbmRpZgorKyNlbmRpZiAgLyogX19QQ0xNVUxfXyAgKi8KKysKKysjZW5kaWYgLyogX19BRVNf Xy9fX1BDTE1VTF9fICovCisrCisrI2VuZGlmIC8qIF9XTU1JTlRSSU5fSF9JTkNMVURFRCAqLwor LS0tIGdjYy9jb25maWcvaTM4Ni9jcHVpZC5oCShyZXZpc2lvbiAxMzM5MDEpCisrKysgZ2NjL2Nv bmZpZy9pMzg2L2NwdWlkLmgJKHJldmlzaW9uIDEzMzkwMikKK0BAIC0zMywxMSArMzMsMTMgQEAK KyAKKyAvKiAlZWN4ICovCisgI2RlZmluZSBiaXRfU1NFMwkoMSA8PCAwKQorKyNkZWZpbmUgYml0 X1BDTE1VTAkoMSA8PCAxKQorICNkZWZpbmUgYml0X1NTU0UzCSgxIDw8IDkpCisgI2RlZmluZSBi aXRfQ01QWENIRzE2QgkoMSA8PCAxMykKKyAjZGVmaW5lIGJpdF9TU0U0XzEJKDEgPDwgMTkpCisg I2RlZmluZSBiaXRfU1NFNF8yCSgxIDw8IDIwKQorICNkZWZpbmUgYml0X1BPUENOVAkoMSA8PCAy MykKKysjZGVmaW5lIGJpdF9BRVMJCSgxIDw8IDI1KQorIAorIC8qICVlZHggKi8KKyAjZGVmaW5l IGJpdF9DTVBYQ0hHOEIJKDEgPDwgOCkKKy0tLSBnY2MvY29uZmlnL2kzODYvc3NlLm1kCShyZXZp c2lvbiAxMzM5MDEpCisrKysgZ2NjL2NvbmZpZy9pMzg2L3NzZS5tZAkocmV2aXNpb24gMTMzOTAy KQorQEAgLTc4OTcsMyArNzg5Nyw4MCBAQCAoZGVmaW5lX2luc24gInNzZTVfcGNvbV90Zjxtb2Rl PjMiCisgfQorICAgWyhzZXRfYXR0ciAidHlwZSIgInNzZWNtcCIpCisgICAgKHNldF9hdHRyICJt b2RlIiAiVEkiKV0pCisrCisrKGRlZmluZV9pbnNuICJhZXNlbmMiCisrICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWMkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9eCIpCisrCSh1bnNwZWM6VjJESSBb KG1hdGNoX29wZXJhbmQ6VjJESSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiMCIpCisrCQkgICAgICAg KG1hdGNoX29wZXJhbmQ6VjJESSAyICJub25pbW1lZGlhdGVfb3BlcmFuZCIgInhtIildCisrCQkg ICAgICBVTlNQRUNfQUVTRU5DKSldCisrICAiVEFSR0VUX0FFUyIKKysgICJhZXNlbmNcdHslMiwg JTB8JTAsICUyfSIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJzc2Vsb2cxIikKKysgICAoc2V0X2F0 dHIgInByZWZpeF9leHRyYSIgIjEiKQorKyAgIChzZXRfYXR0ciAibW9kZSIgIlRJIildKQorKwor KyhkZWZpbmVfaW5zbiAiYWVzZW5jbGFzdCIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYyREkg MCAicmVnaXN0ZXJfb3BlcmFuZCIgIj14IikKKysJKHVuc3BlYzpWMkRJIFsobWF0Y2hfb3BlcmFu ZDpWMkRJIDEgInJlZ2lzdGVyX29wZXJhbmQiICIwIikKKysJCSAgICAgICAobWF0Y2hfb3BlcmFu ZDpWMkRJIDIgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAieG0iKV0KKysJCSAgICAgIFVOU1BFQ19B RVNFTkNMQVNUKSldCisrICAiVEFSR0VUX0FFUyIKKysgICJhZXNlbmNsYXN0XHR7JTIsICUwfCUw LCAlMn0iCisrICBbKHNldF9hdHRyICJ0eXBlIiAic3NlbG9nMSIpCisrICAgKHNldF9hdHRyICJw cmVmaXhfZXh0cmEiICIxIikKKysgICAoc2V0X2F0dHIgIm1vZGUiICJUSSIpXSkKKysKKysoZGVm aW5lX2luc24gImFlc2RlYyIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYyREkgMCAicmVnaXN0 ZXJfb3BlcmFuZCIgIj14IikKKysJKHVuc3BlYzpWMkRJIFsobWF0Y2hfb3BlcmFuZDpWMkRJIDEg InJlZ2lzdGVyX29wZXJhbmQiICIwIikKKysJCSAgICAgICAobWF0Y2hfb3BlcmFuZDpWMkRJIDIg Im5vbmltbWVkaWF0ZV9vcGVyYW5kIiAieG0iKV0KKysJCSAgICAgIFVOU1BFQ19BRVNERUMpKV0K KysgICJUQVJHRVRfQUVTIgorKyAgImFlc2RlY1x0eyUyLCAlMHwlMCwgJTJ9IgorKyAgWyhzZXRf YXR0ciAidHlwZSIgInNzZWxvZzEiKQorKyAgIChzZXRfYXR0ciAicHJlZml4X2V4dHJhIiAiMSIp CisrICAgKHNldF9hdHRyICJtb2RlIiAiVEkiKV0pCisrCisrKGRlZmluZV9pbnNuICJhZXNkZWNs YXN0IgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjJESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAi PXgiKQorKwkodW5zcGVjOlYyREkgWyhtYXRjaF9vcGVyYW5kOlYyREkgMSAicmVnaXN0ZXJfb3Bl cmFuZCIgIjAiKQorKwkJICAgICAgIChtYXRjaF9vcGVyYW5kOlYyREkgMiAibm9uaW1tZWRpYXRl X29wZXJhbmQiICJ4bSIpXQorKwkJICAgICAgVU5TUEVDX0FFU0RFQ0xBU1QpKV0KKysgICJUQVJH RVRfQUVTIgorKyAgImFlc2RlY2xhc3RcdHslMiwgJTB8JTAsICUyfSIKKysgIFsoc2V0X2F0dHIg InR5cGUiICJzc2Vsb2cxIikKKysgICAoc2V0X2F0dHIgInByZWZpeF9leHRyYSIgIjEiKQorKyAg IChzZXRfYXR0ciAibW9kZSIgIlRJIildKQorKworKyhkZWZpbmVfaW5zbiAiYWVzaW1jIgorKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VjJESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXgiKQorKwko dW5zcGVjOlYyREkgWyhtYXRjaF9vcGVyYW5kOlYyREkgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQi ICJ4bSIpXQorKwkJICAgICAgVU5TUEVDX0FFU0lNQykpXQorKyAgIlRBUkdFVF9BRVMiCisrICAi YWVzaW1jXHR7JTEsICUwfCUwLCAlMX0iCisrICBbKHNldF9hdHRyICJ0eXBlIiAic3NlbG9nMSIp CisrICAgKHNldF9hdHRyICJwcmVmaXhfZXh0cmEiICIxIikKKysgICAoc2V0X2F0dHIgIm1vZGUi ICJUSSIpXSkKKysKKysoZGVmaW5lX2luc24gImFlc2tleWdlbmFzc2lzdCIKKysgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlYyREkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj14IikKKysJKHVuc3BlYzpW MkRJIFsobWF0Y2hfb3BlcmFuZDpWMkRJIDEgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAieG0iKQor KwkJICAgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiY29uc3RfMF90b18yNTVfb3BlcmFuZCIgIm4i KV0KKysJCSAgICAgVU5TUEVDX0FFU0tFWUdFTkFTU0lTVCkpXQorKyAgIlRBUkdFVF9BRVMiCisr ICAiYWVza2V5Z2VuYXNzaXN0XHR7JTIsICUxLCAlMHwlMCwgJTEsICUyfSIKKysgIFsoc2V0X2F0 dHIgInR5cGUiICJzc2Vsb2cxIikKKysgICAoc2V0X2F0dHIgInByZWZpeF9leHRyYSIgIjEiKQor KyAgIChzZXRfYXR0ciAibW9kZSIgIlRJIildKQorKworKyhkZWZpbmVfaW5zbiAicGNsbXVscWRx IgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjJESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXgi KQorKwkodW5zcGVjOlYyREkgWyhtYXRjaF9vcGVyYW5kOlYyREkgMSAicmVnaXN0ZXJfb3BlcmFu ZCIgIjAiKQorKwkJICAgICAgKG1hdGNoX29wZXJhbmQ6VjJESSAyICJub25pbW1lZGlhdGVfb3Bl cmFuZCIgInhtIikKKysJCSAgICAgIChtYXRjaF9vcGVyYW5kOlNJIDMgImNvbnN0XzBfdG9fMjU1 X29wZXJhbmQiICJuIildCisrCQkgICAgIFVOU1BFQ19QQ0xNVUwpKV0KKysgICJUQVJHRVRfUENM TVVMIgorKyAgInBjbG11bHFkcVx0eyUzLCAlMiwgJTB8JTAsICUyLCAlM30iCisrICBbKHNldF9h dHRyICJ0eXBlIiAic3NlbG9nMSIpCisrICAgKHNldF9hdHRyICJwcmVmaXhfZXh0cmEiICIxIikK KysgICAoc2V0X2F0dHIgIm1vZGUiICJUSSIpXSkKKy0tLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5v cHQJKHJldmlzaW9uIDEzMzkwMSkKKysrKyBnY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQJKHJldmlz aW9uIDEzMzkwMikKK0BAIC0yNzUsMyArMjc1LDExIEBAIFRhcmdldCBSZXBvcnQgVmFyKHg4Nl9m dXNlZF9tdWxhZGQpIEluaXQKKyBFbmFibGUgYXV0b21hdGljIGdlbmVyYXRpb24gb2YgZnVzZWQg ZmxvYXRpbmcgcG9pbnQgbXVsdGlwbHktYWRkIGluc3RydWN0aW9ucworIGlmIHRoZSBJU0Egc3Vw cG9ydHMgc3VjaCBpbnN0cnVjdGlvbnMuICBUaGUgLW1mdXNlZC1tYWRkIG9wdGlvbiBpcyBvbiBi eQorIGRlZmF1bHQuCisrCisrbWFlcworK1RhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgVmFy KHg4Nl9hZXMpCisrU3VwcG9ydCBBRVMgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBjb2RlIGdlbmVy YXRpb24KKysKKyttcGNsbXVsCisrVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBWYXIoeDg2 X3BjbG11bCkKKytTdXBwb3J0IFBDTE1VTCBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIGNvZGUgZ2Vu ZXJhdGlvbgorLS0tIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMJKHJldmlzaW9uIDEzMzkwMSkKKysr KyBnY2MvY29uZmlnL2kzODYvaTM4Ni5jCShyZXZpc2lvbiAxMzM5MDIpCitAQCAtMjA3Nyw3ICsy MDc3LDkgQEAgb3ZlcnJpZGVfb3B0aW9ucyAodm9pZCkKKyAgICAgICBQVEFfTk9fU0FIRiA9IDEg PDwgMTMsCisgICAgICAgUFRBX1NTRTRfMSA9IDEgPDwgMTQsCisgICAgICAgUFRBX1NTRTRfMiA9 IDEgPDwgMTUsCistICAgICAgUFRBX1NTRTUgPSAxIDw8IDE2CisrICAgICAgUFRBX1NTRTUgPSAx IDw8IDE2LAorKyAgICAgIFBUQV9BRVMgPSAxIDw8IDE3LAorKyAgICAgIFBUQV9QQ0xNVUwgPSAx IDw8IDE4CisgICAgIH07CisgCisgICBzdGF0aWMgc3RydWN0IHB0YQorQEAgLTIzODQsNiArMjM4 NiwxMCBAQCBvdmVycmlkZV9vcHRpb25zICh2b2lkKQorIAkgIHg4Nl9wcmVmZXRjaF9zc2UgPSB0 cnVlOworIAlpZiAoIShUQVJHRVRfNjRCSVQgJiYgKHByb2Nlc3Nvcl9hbGlhc190YWJsZVtpXS5m bGFncyAmIFBUQV9OT19TQUhGKSkpCisgCSAgeDg2X3NhaGYgPSB0cnVlOworKwlpZiAocHJvY2Vz c29yX2FsaWFzX3RhYmxlW2ldLmZsYWdzICYgUFRBX0FFUykKKysJICB4ODZfYWVzID0gdHJ1ZTsK KysJaWYgKHByb2Nlc3Nvcl9hbGlhc190YWJsZVtpXS5mbGFncyAmIFBUQV9QQ0xNVUwpCisrCSAg eDg2X3BjbG11bCA9IHRydWU7CisgCisgCWJyZWFrOworICAgICAgIH0KK0BAIC0yNDI3LDYgKzI0 MzMsMTQgQEAgb3ZlcnJpZGVfb3B0aW9ucyAodm9pZCkKKyAgIGlmIChpID09IHB0YV9zaXplKQor ICAgICBlcnJvciAoImJhZCB2YWx1ZSAoJXMpIGZvciAtbXR1bmU9IHN3aXRjaCIsIGl4ODZfdHVu ZV9zdHJpbmcpOworIAorKyAgLyogRW5hYmxlIFNTRTIgaWYgQUVTIG9yIFBDTE1VTCBpcyBlbmFi bGVkLiAgKi8KKysgIGlmICgoeDg2X2FlcyB8fCB4ODZfcGNsbXVsKQorKyAgICAgICYmICEoaXg4 Nl9pc2FfZmxhZ3NfZXhwbGljaXQgJiBPUFRJT05fTUFTS19JU0FfU1NFMikpCisrICAgIHsKKysg ICAgICBpeDg2X2lzYV9mbGFncyB8PSBPUFRJT05fTUFTS19JU0FfU1NFMl9TRVQ7CisrICAgICAg aXg4Nl9pc2FfZmxhZ3NfZXhwbGljaXQgfD0gT1BUSU9OX01BU0tfSVNBX1NTRTJfU0VUOworKyAg ICB9CisrCisgICBpeDg2X3R1bmVfbWFzayA9IDF1IDw8IGl4ODZfdHVuZTsKKyAgIGZvciAoaSA9 IDA7IGkgPCBYODZfVFVORV9MQVNUOyArK2kpCisgICAgIGl4ODZfdHVuZV9mZWF0dXJlc1tpXSAm PSBpeDg2X3R1bmVfbWFzazsKK0BAIC0xNzU0NSw2ICsxNzU1OSwxNyBAQCBlbnVtIGl4ODZfYnVp bHRpbnMKKyAKKyAgIElYODZfQlVJTFRJTl9QQ01QR1RRLAorIAorKyAgLyogQUVTIGluc3RydWN0 aW9ucyAqLworKyAgSVg4Nl9CVUlMVElOX0FFU0VOQzEyOCwKKysgIElYODZfQlVJTFRJTl9BRVNF TkNMQVNUMTI4LAorKyAgSVg4Nl9CVUlMVElOX0FFU0RFQzEyOCwKKysgIElYODZfQlVJTFRJTl9B RVNERUNMQVNUMTI4LAorKyAgSVg4Nl9CVUlMVElOX0FFU0lNQzEyOCwKKysgIElYODZfQlVJTFRJ Tl9BRVNLRVlHRU5BU1NJU1QxMjgsCisrCisrICAvKiBQQ0xNVUwgaW5zdHJ1Y3Rpb24gKi8KKysg IElYODZfQlVJTFRJTl9QQ0xNVUxRRFExMjgsCisrCisgICAvKiBURm1vZGUgc3VwcG9ydCBidWls dGlucy4gICovCisgICBJWDg2X0JVSUxUSU5fSU5GUSwKKyAgIElYODZfQlVJTFRJTl9GQUJTUSwK K0BAIC0xNzkwMCw2ICsxNzkyNSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVpbHRpbl9kZXNj cmlwdGlvbiAKKyAgIHsgT1BUSU9OX01BU0tfSVNBX1NTRTRfMSwgQ09ERV9GT1Jfc3NlNF8xX3Bi bGVuZHcsICJfX2J1aWx0aW5faWEzMl9wYmxlbmR3MTI4IiwgSVg4Nl9CVUlMVElOX1BCTEVORFcx MjgsIFVOS05PV04sIDAgfSwKKyAgIHsgT1BUSU9OX01BU0tfSVNBX1JPVU5ELCBDT0RFX0ZPUl9z c2U0XzFfcm91bmRzZCwgMCwgSVg4Nl9CVUlMVElOX1JPVU5EU0QsIFVOS05PV04sIDAgfSwKKyAg IHsgT1BUSU9OX01BU0tfSVNBX1JPVU5ELCBDT0RFX0ZPUl9zc2U0XzFfcm91bmRzcywgMCwgSVg4 Nl9CVUlMVElOX1JPVU5EU1MsIFVOS05PV04sIDAgfSwKKysKKysgIC8qIFBDTE1VTCAqLworKyAg eyBPUFRJT05fTUFTS19JU0FfU1NFMiwgQ09ERV9GT1JfcGNsbXVscWRxLCAwLCBJWDg2X0JVSUxU SU5fUENMTVVMUURRMTI4LCBVTktOT1dOLCAwIH0sCisgfTsKKyAKKyBzdGF0aWMgY29uc3Qgc3Ry dWN0IGJ1aWx0aW5fZGVzY3JpcHRpb24gYmRlc2NfMmFyZ1tdID0KK0BAIC0xODIxMCw2ICsxODIz OCwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJ1aWx0aW5fZGVzY3JpcHRpb24gCisgCisgICAv KiBTU0U0LjIgKi8KKyAgIHsgT1BUSU9OX01BU0tfSVNBX1NTRTRfMiwgQ09ERV9GT1Jfc3NlNF8y X2d0djJkaTMsICJfX2J1aWx0aW5faWEzMl9wY21wZ3RxIiwgSVg4Nl9CVUlMVElOX1BDTVBHVFEs IFVOS05PV04sIDAgfSwKKysKKysgIC8qIEFFUyAqLworKyAgeyBPUFRJT05fTUFTS19JU0FfU1NF MiwgQ09ERV9GT1JfYWVzZW5jLCAwLCBJWDg2X0JVSUxUSU5fQUVTRU5DMTI4LCBVTktOT1dOLCAw IH0sCisrICB7IE9QVElPTl9NQVNLX0lTQV9TU0UyLCBDT0RFX0ZPUl9hZXNlbmNsYXN0LCAwLCBJ WDg2X0JVSUxUSU5fQUVTRU5DTEFTVDEyOCwgVU5LTk9XTiwgMCB9LAorKyAgeyBPUFRJT05fTUFT S19JU0FfU1NFMiwgQ09ERV9GT1JfYWVzZGVjLCAwLCBJWDg2X0JVSUxUSU5fQUVTREVDMTI4LCBV TktOT1dOLCAwIH0sCisrICB7IE9QVElPTl9NQVNLX0lTQV9TU0UyLCBDT0RFX0ZPUl9hZXNkZWNs YXN0LCAwLCBJWDg2X0JVSUxUSU5fQUVTREVDTEFTVDEyOCwgVU5LTk9XTiwgMCB9LAorKyAgeyBP UFRJT05fTUFTS19JU0FfU1NFMiwgQ09ERV9GT1JfYWVza2V5Z2VuYXNzaXN0LCAwLCBJWDg2X0JV SUxUSU5fQUVTS0VZR0VOQVNTSVNUMTI4LCBVTktOT1dOLCAwIH0sCisgfTsKKyAKKyBzdGF0aWMg Y29uc3Qgc3RydWN0IGJ1aWx0aW5fZGVzY3JpcHRpb24gYmRlc2NfMWFyZ1tdID0KK0BAIC0xODI4 NSw2ICsxODMyMCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiAK KyAgIC8qIEZha2UgMSBhcmcgYnVpbHRpbnMgd2l0aCBhIGNvbnN0YW50IHNtYWxsZXIgdGhhbiA4 IGJpdHMgYXMgdGhlIDJuZCBhcmcuICAqLworICAgeyBPUFRJT05fTUFTS19JU0FfU1NFNF8xLCBD T0RFX0ZPUl9zc2U0XzFfcm91bmRwZCwgMCwgSVg4Nl9CVUlMVElOX1JPVU5EUEQsIFVOS05PV04s IDAgfSwKKyAgIHsgT1BUSU9OX01BU0tfSVNBX1NTRTRfMSwgQ09ERV9GT1Jfc3NlNF8xX3JvdW5k cHMsIDAsIElYODZfQlVJTFRJTl9ST1VORFBTLCBVTktOT1dOLCAwIH0sCisrCisrICAvKiBBRVMg Ki8KKysgIHsgT1BUSU9OX01BU0tfSVNBX1NTRTIsIENPREVfRk9SX2Flc2ltYywgMCwgSVg4Nl9C VUlMVElOX0FFU0lNQzEyOCwgVU5LTk9XTiwgMCB9LAorIH07CisgCisgLyogU1NFNSAqLworQEAg LTE5NTE4LDYgKzE5NTU2LDI1IEBAIGl4ODZfaW5pdF9tbXhfc3NlX2J1aWx0aW5zICh2b2lkKQor IAkJCQkgICAgTlVMTF9UUkVFKTsKKyAgIGRlZl9idWlsdGluX2NvbnN0IChPUFRJT05fTUFTS19J U0FfU1NFNF8yIHwgT1BUSU9OX01BU0tfSVNBXzY0QklULCAiX19idWlsdGluX2lhMzJfY3JjMzJk aSIsIGZ0eXBlLCBJWDg2X0JVSUxUSU5fQ1JDMzJESSk7CisgCisrICAvKiBBRVMgKi8KKysgIGlm IChUQVJHRVRfQUVTKQorKyAgICB7CisrICAgICAgLyogRGVmaW5lIEFFUyBidWlsdC1pbiBmdW5j dGlvbnMgb25seSBpZiBBRVMgaXMgZW5hYmxlZC4gICovCisrICAgICAgZGVmX2J1aWx0aW5fY29u c3QgKE9QVElPTl9NQVNLX0lTQV9TU0UyLCAiX19idWlsdGluX2lhMzJfYWVzZW5jMTI4IiwgdjJk aV9mdHlwZV92MmRpX3YyZGksIElYODZfQlVJTFRJTl9BRVNFTkMxMjgpOworKyAgICAgIGRlZl9i dWlsdGluX2NvbnN0IChPUFRJT05fTUFTS19JU0FfU1NFMiwgIl9fYnVpbHRpbl9pYTMyX2Flc2Vu Y2xhc3QxMjgiLCB2MmRpX2Z0eXBlX3YyZGlfdjJkaSwgSVg4Nl9CVUlMVElOX0FFU0VOQ0xBU1Qx MjgpOworKyAgICAgIGRlZl9idWlsdGluX2NvbnN0IChPUFRJT05fTUFTS19JU0FfU1NFMiwgIl9f YnVpbHRpbl9pYTMyX2Flc2RlYzEyOCIsIHYyZGlfZnR5cGVfdjJkaV92MmRpLCBJWDg2X0JVSUxU SU5fQUVTREVDMTI4KTsKKysgICAgICBkZWZfYnVpbHRpbl9jb25zdCAoT1BUSU9OX01BU0tfSVNB X1NTRTIsICJfX2J1aWx0aW5faWEzMl9hZXNkZWNsYXN0MTI4IiwgdjJkaV9mdHlwZV92MmRpX3Yy ZGksIElYODZfQlVJTFRJTl9BRVNERUNMQVNUMTI4KTsKKysgICAgICBkZWZfYnVpbHRpbl9jb25z dCAoT1BUSU9OX01BU0tfSVNBX1NTRTIsICJfX2J1aWx0aW5faWEzMl9hZXNpbWMxMjgiLCB2MmRp X2Z0eXBlX3YyZGksIElYODZfQlVJTFRJTl9BRVNJTUMxMjgpOworKyAgICAgIGRlZl9idWlsdGlu X2NvbnN0IChPUFRJT05fTUFTS19JU0FfU1NFMiwgIl9fYnVpbHRpbl9pYTMyX2Flc2tleWdlbmFz c2lzdDEyOCIsIHYyZGlfZnR5cGVfdjJkaV9pbnQsIElYODZfQlVJTFRJTl9BRVNLRVlHRU5BU1NJ U1QxMjgpOworKyAgICB9CisrCisrICAvKiBQQ0xNVUwgKi8KKysgIGlmIChUQVJHRVRfUENMTVVM KQorKyAgICB7CisrICAgICAgLyogRGVmaW5lIFBDTE1VTCBidWlsdC1pbiBmdW5jdGlvbiBvbmx5 IGlmIFBDTE1VTCBpcyBlbmFibGVkLiAgKi8KKysgICAgICBkZWZfYnVpbHRpbl9jb25zdCAoT1BU SU9OX01BU0tfSVNBX1NTRTIsICJfX2J1aWx0aW5faWEzMl9wY2xtdWxxZHExMjgiLCB2MmRpX2Z0 eXBlX3YyZGlfdjJkaV9pbnQsIElYODZfQlVJTFRJTl9QQ0xNVUxRRFExMjgpOworKyAgICB9Cisr CisgICAvKiBBTURGQU0xMCBTU0U0QSBOZXcgYnVpbHQtaW5zICAqLworICAgZGVmX2J1aWx0aW4g KE9QVElPTl9NQVNLX0lTQV9TU0U0QSwgIl9fYnVpbHRpbl9pYTMyX21vdm50c2QiLCB2b2lkX2Z0 eXBlX3Bkb3VibGVfdjJkZiwgSVg4Nl9CVUlMVElOX01PVk5UU0QpOworICAgZGVmX2J1aWx0aW4g KE9QVElPTl9NQVNLX0lTQV9TU0U0QSwgIl9fYnVpbHRpbl9pYTMyX21vdm50c3MiLCB2b2lkX2Z0 eXBlX3BmbG9hdF92NHNmLCBJWDg2X0JVSUxUSU5fTU9WTlRTUyk7CitAQCAtMTk3OTMsNiArMTk4 NTAsNDQgQEAgaXg4Nl9leHBhbmRfY3JjMzIgKGVudW0gaW5zbl9jb2RlIGljb2RlLAorICAgcmV0 dXJuIHRhcmdldDsKKyB9CisgCisrLyogU3Vicm91dGluZSBvZiBpeDg2X2V4cGFuZF9idWlsdGlu IHRvIHRha2UgY2FyZSBvZiBiaW5vcCBpbnNucworKyAgIHdpdGggYW4gaW1tZWRpYXRlLiAgKi8K KysKKytzdGF0aWMgcnR4CisraXg4Nl9leHBhbmRfYmlub3BfaW1tX2J1aWx0aW4gKGVudW0gaW5z bl9jb2RlIGljb2RlLCB0cmVlIGV4cCwKKysJCQkJcnR4IHRhcmdldCkKKyt7CisrICBydHggcGF0 OworKyAgdHJlZSBhcmcwID0gQ0FMTF9FWFBSX0FSRyAoZXhwLCAwKTsKKysgIHRyZWUgYXJnMSA9 IENBTExfRVhQUl9BUkcgKGV4cCwgMSk7CisrICBydHggb3AwID0gZXhwYW5kX25vcm1hbCAoYXJn MCk7CisrICBydHggb3AxID0gZXhwYW5kX25vcm1hbCAoYXJnMSk7CisrICBlbnVtIG1hY2hpbmVf bW9kZSB0bW9kZSA9IGluc25fZGF0YVtpY29kZV0ub3BlcmFuZFswXS5tb2RlOworKyAgZW51bSBt YWNoaW5lX21vZGUgbW9kZTAgPSBpbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMV0ubW9kZTsKKysg IGVudW0gbWFjaGluZV9tb2RlIG1vZGUxID0gaW5zbl9kYXRhW2ljb2RlXS5vcGVyYW5kWzJdLm1v ZGU7CisrCisrICBpZiAoISAoKmluc25fZGF0YVtpY29kZV0ub3BlcmFuZFsxXS5wcmVkaWNhdGUp IChvcDAsIG1vZGUxKSkKKysgICAgeworKyAgICAgIG9wMCA9IGNvcHlfdG9fcmVnIChvcDApOwor KyAgICAgIG9wMCA9IHNpbXBsaWZ5X2dlbl9zdWJyZWcgKG1vZGUwLCBvcDAsIEdFVF9NT0RFIChv cDApLCAwKTsKKysgICAgfQorKworKyAgaWYgKCEgKCppbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRb Ml0ucHJlZGljYXRlKSAob3AxLCBtb2RlMSkpCisrICAgIHsKKysgICAgICBlcnJvciAoInRoZSBs YXN0IG9wZXJhbmQgbXVzdCBiZSBhbiBpbW1lZGlhdGUiKTsKKysgICAgICByZXR1cm4gY29uc3Qw X3J0eDsKKysgICAgfQorKworKyAgdGFyZ2V0ID0gZ2VuX3JlZ19ydHggKFYyREltb2RlKTsKKysg IHBhdCA9IEdFTl9GQ04gKGljb2RlKSAoc2ltcGxpZnlfZ2VuX3N1YnJlZyAodG1vZGUsIHRhcmdl dCwKKysJCQkJCSAgICAgIFYyREltb2RlLCAwKSwKKysJCQkgb3AwLCBvcDEpOworKyAgaWYgKCEg cGF0KQorKyAgICByZXR1cm4gMDsKKysgIGVtaXRfaW5zbiAocGF0KTsKKysgIHJldHVybiB0YXJn ZXQ7CisrfQorKworIC8qIFN1YnJvdXRpbmUgb2YgaXg4Nl9leHBhbmRfYnVpbHRpbiB0byB0YWtl IGNhcmUgb2YgYmlub3AgaW5zbnMuICAqLworIAorIHN0YXRpYyBydHgKK0BAIC0yMDg4OSwzNCAr MjA5ODQsMTggQEAgaXg4Nl9leHBhbmRfYnVpbHRpbiAodHJlZSBleHAsIHJ0eCB0YXJnZQorICAg ICAgIHJldHVybiB0YXJnZXQ7CisgCisgICAgIGNhc2UgSVg4Nl9CVUlMVElOX1BTTExEUUkxMjg6 CisrICAgICAgcmV0dXJuIGl4ODZfZXhwYW5kX2Jpbm9wX2ltbV9idWlsdGluIChDT0RFX0ZPUl9z c2UyX2FzaGx0aTMsCisrCQkJCQkgICAgIGV4cCwgdGFyZ2V0KTsKKysgICAgICBicmVhazsKKysK KyAgICAgY2FzZSBJWDg2X0JVSUxUSU5fUFNSTERRSTEyODoKKy0gICAgICBpY29kZSA9IChmY29k ZSA9PSBJWDg2X0JVSUxUSU5fUFNMTERRSTEyOCA/IENPREVfRk9SX3NzZTJfYXNobHRpMworLQkg ICAgICAgOiBDT0RFX0ZPUl9zc2UyX2xzaHJ0aTMpOworLSAgICAgIGFyZzAgPSBDQUxMX0VYUFJf QVJHIChleHAsIDApOworLSAgICAgIGFyZzEgPSBDQUxMX0VYUFJfQVJHIChleHAsIDEpOworLSAg ICAgIG9wMCA9IGV4cGFuZF9ub3JtYWwgKGFyZzApOworLSAgICAgIG9wMSA9IGV4cGFuZF9ub3Jt YWwgKGFyZzEpOworLSAgICAgIHRtb2RlID0gaW5zbl9kYXRhW2ljb2RlXS5vcGVyYW5kWzBdLm1v ZGU7CistICAgICAgbW9kZTEgPSBpbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMV0ubW9kZTsKKy0g ICAgICBtb2RlMiA9IGluc25fZGF0YVtpY29kZV0ub3BlcmFuZFsyXS5tb2RlOworKyAgICAgIHJl dHVybiBpeDg2X2V4cGFuZF9iaW5vcF9pbW1fYnVpbHRpbiAoQ09ERV9GT1Jfc3NlMl9sc2hydGkz LAorKwkJCQkJICAgICBleHAsIHRhcmdldCk7CisrICAgICAgYnJlYWs7CisgCistICAgICAgaWYg KCEgKCppbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMV0ucHJlZGljYXRlKSAob3AwLCBtb2RlMSkp CistCXsKKy0JICBvcDAgPSBjb3B5X3RvX3JlZyAob3AwKTsKKy0JICBvcDAgPSBzaW1wbGlmeV9n ZW5fc3VicmVnIChtb2RlMSwgb3AwLCBHRVRfTU9ERSAob3AwKSwgMCk7CistCX0KKy0gICAgICBp ZiAoISAoKmluc25fZGF0YVtpY29kZV0ub3BlcmFuZFsyXS5wcmVkaWNhdGUpIChvcDEsIG1vZGUy KSkKKy0JeworLQkgIGVycm9yICgic2hpZnQgbXVzdCBiZSBhbiBpbW1lZGlhdGUiKTsKKy0JICBy ZXR1cm4gY29uc3QwX3J0eDsKKy0JfQorLSAgICAgIHRhcmdldCA9IGdlbl9yZWdfcnR4IChWMkRJ bW9kZSk7CistICAgICAgcGF0ID0gR0VOX0ZDTiAoaWNvZGUpIChzaW1wbGlmeV9nZW5fc3VicmVn ICh0bW9kZSwgdGFyZ2V0LCBWMkRJbW9kZSwgMCksCistCQkJICAgICBvcDAsIG9wMSk7CistICAg ICAgaWYgKCEgcGF0KQorLQlyZXR1cm4gMDsKKy0gICAgICBlbWl0X2luc24gKHBhdCk7CistICAg ICAgcmV0dXJuIHRhcmdldDsKKysgICAgY2FzZSBJWDg2X0JVSUxUSU5fQUVTS0VZR0VOQVNTSVNU MTI4OgorKyAgICAgIHJldHVybiBpeDg2X2V4cGFuZF9iaW5vcF9pbW1fYnVpbHRpbiAoQ09ERV9G T1JfYWVza2V5Z2VuYXNzaXN0LAorKwkJCQkJICAgICBleHAsIHRhcmdldCk7CisgCisgICAgIGNh c2UgSVg4Nl9CVUlMVElOX0ZFTU1TOgorICAgICAgIGVtaXRfaW5zbiAoZ2VuX21teF9mZW1tcyAo KSk7CistLS0gZ2NjL2RvYy9leHRlbmQudGV4aQkocmV2aXNpb24gMTMzOTAxKQorKysrIGdjYy9k b2MvZXh0ZW5kLnRleGkJKHJldmlzaW9uIDEzMzkwMikKK0BAIC04MDEzLDYgKzgwMTMsMjcgQEAg ZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIEBjb2Rle3Vuc2lnbmVkIAorIEdlbmVyYXRlcyB0aGUg QGNvZGV7cG9wY250cX0gbWFjaGluZSBpbnN0cnVjdGlvbi4KKyBAZW5kIHRhYmxlCisgCisrVGhl IGZvbGxvd2luZyBidWlsdC1pbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aGVuIEBvcHRpb257 LW1hZXN9IGlzCisrdXNlZC4gIEFsbCBvZiB0aGVtIGdlbmVyYXRlIHRoZSBtYWNoaW5lIGluc3Ry dWN0aW9uIHRoYXQgaXMgcGFydCBvZiB0aGUKKytuYW1lLgorKworK0BzbWFsbGV4YW1wbGUKKyt2 MmRpIF9fYnVpbHRpbl9pYTMyX2Flc2VuYzEyOCAodjJkaSwgdjJkaSkKKyt2MmRpIF9fYnVpbHRp bl9pYTMyX2Flc2VuY2xhc3QxMjggKHYyZGksIHYyZGkpCisrdjJkaSBfX2J1aWx0aW5faWEzMl9h ZXNkZWMxMjggKHYyZGksIHYyZGkpCisrdjJkaSBfX2J1aWx0aW5faWEzMl9hZXNkZWNsYXN0MTI4 ICh2MmRpLCB2MmRpKQorK3YyZGkgX19idWlsdGluX2lhMzJfYWVza2V5Z2VuYXNzaXN0MTI4ICh2 MmRpLCBjb25zdCBpbnQpCisrdjJkaSBfX2J1aWx0aW5faWEzMl9hZXNpbWMxMjggKHYyZGkpCisr QGVuZCBzbWFsbGV4YW1wbGUKKysKKytUaGUgZm9sbG93aW5nIGJ1aWx0LWluIGZ1bmN0aW9uIGlz IGF2YWlsYWJsZSB3aGVuIEBvcHRpb257LW1wY2xtdWx9IGlzCisrdXNlZC4KKysKKytAdGFibGUg QGNvZGUKKytAaXRlbSB2MmRpIF9fYnVpbHRpbl9pYTMyX3BjbG11bHFkcTEyOCAodjJkaSwgdjJk aSwgY29uc3QgaW50KQorK0dlbmVyYXRlcyB0aGUgQGNvZGV7cGNsbXVscWRxfSBtYWNoaW5lIGlu c3RydWN0aW9uLgorK0BlbmQgdGFibGUKKysKKyBUaGUgZm9sbG93aW5nIGJ1aWx0LWluIGZ1bmN0 aW9ucyBhcmUgYXZhaWxhYmxlIHdoZW4gQG9wdGlvbnstbXNzZTRhfSBpcyB1c2VkLgorIEFsbCBv ZiB0aGVtIGdlbmVyYXRlIHRoZSBtYWNoaW5lIGluc3RydWN0aW9uIHRoYXQgaXMgcGFydCBvZiB0 aGUgbmFtZS4KKyAKKy0tLSBnY2MvZG9jL2ludm9rZS50ZXhpCShyZXZpc2lvbiAxMzM5MDEpCisr KysgZ2NjL2RvYy9pbnZva2UudGV4aQkocmV2aXNpb24gMTMzOTAyKQorQEAgLTU1MSw2ICs1NTEs NyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCisgLW1uby13aWRl LW11bHRpcGx5ICAtbXJ0ZCAgLW1hbGlnbi1kb3VibGUgQGdvbAorIC1tcHJlZmVycmVkLXN0YWNr LWJvdW5kYXJ5PUB2YXJ7bnVtfSAtbWNsZCAtbWN4MTYgLW1zYWhmIC1tcmVjaXAgQGdvbAorIC1t bW14ICAtbXNzZSAgLW1zc2UyIC1tc3NlMyAtbXNzc2UzIC1tc3NlNC4xIC1tc3NlNC4yIC1tc3Nl NCBAZ29sCisrLW1hZXMgLW1wY2xtdWwgQGdvbAorIC1tc3NlNGEgLW0zZG5vdyAtbXBvcGNudCAt bWFibSAtbXNzZTUgQGdvbAorIC1tdGhyZWFkcyAgLW1uby1hbGlnbi1zdHJpbmdvcHMgIC1taW5s aW5lLWFsbC1zdHJpbmdvcHMgQGdvbAorIC1tcHVzaC1hcmdzICAtbWFjY3VtdWxhdGUtb3V0Z29p bmctYXJncyAgLW0xMjhiaXQtbG9uZy1kb3VibGUgQGdvbAorQEAgLTEwNzMyLDYgKzEwNzMzLDEw IEBAIHByZWZlcnJlZCBhbGlnbm1lbnQgdG8gQG9wdGlvbnstbXByZWZlcnIKKyBAaXRlbXggLW1u by1zc2U0LjIKKyBAaXRlbSAtbXNzZTQKKyBAaXRlbXggLW1uby1zc2U0CisrQGl0ZW14IC1tYWVz CisrQGl0ZW14IC1tbm8tYWVzCisrQGl0ZW14IC1tcGNsbXVsCisrQGl0ZW14IC1tbm8tcGNsbXVs CisgQGl0ZW0gLW1zc2U0YQorIEBpdGVtIC1tbm8tc3NlNGEKKyBAaXRlbSAtbXNzZTUKK0BAIC0x MDc0OSw4ICsxMDc1NCw4IEBAIHByZWZlcnJlZCBhbGlnbm1lbnQgdG8gQG9wdGlvbnstbXByZWZl cnIKKyBAb3BpbmRleCBtM2Rub3cKKyBAb3BpbmRleCBtbm8tM2Rub3cKKyBUaGVzZSBzd2l0Y2hl cyBlbmFibGUgb3IgZGlzYWJsZSB0aGUgdXNlIG9mIGluc3RydWN0aW9ucyBpbiB0aGUgTU1YLAor LVNTRSwgU1NFMiwgU1NFMywgU1NTRTMsIFNTRTQuMSwgU1NFNEEsIFNTRTUsIEFCTSBvciAzRE5v dyFAOiBleHRlbmRlZAorLWluc3RydWN0aW9uIHNldHMuCisrU1NFLCBTU0UyLCBTU0UzLCBTU1NF MywgU1NFNC4xLCBBRVMsIFBDTE1VTCwgU1NFNEEsIFNTRTUsIEFCTSBvcgorKzNETm93IUA6IGV4 dGVuZGVkIGluc3RydWN0aW9uIHNldHMuCisgVGhlc2UgZXh0ZW5zaW9ucyBhcmUgYWxzbyBhdmFp bGFibGUgYXMgYnVpbHQtaW4gZnVuY3Rpb25zOiBzZWUKKyBAcmVme1g4NiBCdWlsdC1pbiBGdW5j dGlvbnN9LCBmb3IgZGV0YWlscyBvZiB0aGUgZnVuY3Rpb25zIGVuYWJsZWQgYW5kCisgZGlzYWJs ZWQgYnkgdGhlc2Ugc3dpdGNoZXMuCistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv c3NlLTE0LmMJKHJldmlzaW9uIDEzMzkwMSkKKysrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9zc2UtMTQuYwkocmV2aXNpb24gMTMzOTAyKQorQEAgLTEsMTQgKzEsMTUgQEAKKyAvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8wIC1tYXJjaD1rOCAtbTNk bm93IC1tc3NlNCAtbXNzZTUiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMCAtbWFyY2g9azgg LW0zZG5vdyAtbXNzZTQgLW1zc2U1IC1tYWVzIC1tcGNsbXVsIiB9ICovCisgCisgLyogVGVzdCB0 aGF0IHRoZSBpbnRyaW5zaWNzIGNvbXBpbGUgd2l0aG91dCBvcHRpbWl6YXRpb24uICBBbGwgb2Yg dGhlbSBhcmUKKy0gICBkZWZpbmVkIGFzIGlubGluZSBmdW5jdGlvbnMgaW4geyx4LGUscCx0LHMs YSxifW1taW50cmluLmggIGFuZCBtbTNkbm93LmgKKysgICBkZWZpbmVkIGFzIGlubGluZSBmdW5j dGlvbnMgaW4geyx4LGUscCx0LHMsdyxhLGJ9bW1pbnRyaW4uaCAgYW5kIG1tM2Rub3cuaAorICAg IHRoYXQgcmVmZXJlbmNlIHRoZSBwcm9wZXIgYnVpbHRpbiBmdW5jdGlvbnMuICBEZWZpbmluZyBh d2F5ICJleHRlcm4iIGFuZAorICAgICJfX2lubGluZSIgcmVzdWx0cyBpbiBhbGwgb2YgdGhlbSBi ZWluZyBjb21waWxlZCBhcyBwcm9wZXIgZnVuY3Rpb25zLiAgKi8KKyAKKyAjZGVmaW5lIGV4dGVy bgorICNkZWZpbmUgX19pbmxpbmUKKyAKKysjaW5jbHVkZSA8d21taW50cmluLmg+CisgI2luY2x1 ZGUgPGJtbWludHJpbi5oPgorICNpbmNsdWRlIDxzbW1pbnRyaW4uaD4KKyAjaW5jbHVkZSA8bW0z ZG5vdy5oPgorQEAgLTQ0LDYgKzQ1LDEwIEBACisgdGVzdF8xeCAoX21tX2V4dHJhY3RpX3NpNjQs IF9fbTEyOGksIF9fbTEyOGksIDEsIDEpCisgdGVzdF8yeCAoX21tX2luc2VydGlfc2k2NCwgX19t MTI4aSwgX19tMTI4aSwgX19tMTI4aSwgMSwgMSkKKyAKKysvKiB3bW1pbnRyaW4uaCAqLworK3Rl c3RfMSAoX21tX2Flc2tleWdlbmFzc2lzdF9zaTEyOCwgX19tMTI4aSwgX19tMTI4aSwgMSkKKyt0 ZXN0XzIgKF9tbV9jbG11bGVwaTY0X3NpMTI4LCBfX20xMjhpLCBfX20xMjhpLCBfX20xMjhpLCAx KQorKworIC8qIHNtbWludHJpbi5oICovCisgdGVzdF8yIChfbW1fYmxlbmRfZXBpMTYsIF9fbTEy OGksIF9fbTEyOGksIF9fbTEyOGksIDEpCisgdGVzdF8yIChfbW1fYmxlbmRfcHMsIF9fbTEyOCwg X19tMTI4LCBfX20xMjgsIDEpCistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaTM4 Ni5leHAJKHJldmlzaW9uIDEzMzkwMSkKKysrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9pMzg2LmV4cAkocmV2aXNpb24gMTMzOTAyKQorQEAgLTUxLDYgKzUxLDM0IEBAIHByb2MgY2hl Y2tfZWZmZWN0aXZlX3RhcmdldF9zc2U0IHsgfSB7CisgICAgIH0gIi1PMiAtbXNzZTQuMSIgXQor IH0KKyAKKysjIFJldHVybiAxIGlmIGFlcyBpbnN0cnVjdGlvbnMgY2FuIGJlIGNvbXBpbGVkLgor K3Byb2MgY2hlY2tfZWZmZWN0aXZlX3RhcmdldF9hZXMgeyB9IHsKKysgICAgcmV0dXJuIFtjaGVj a19ub19jb21waWxlcl9tZXNzYWdlcyBhZXMgb2JqZWN0IHsKKysJdHlwZWRlZiBsb25nIGxvbmcg X19tMTI4aSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNikpKTsKKysJdHlwZWRl ZiBsb25nIGxvbmcgX192MmRpIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDE2KSkp OworKworKwlfX20xMjhpIF9tbV9hZXNpbWNfc2kxMjggKF9fbTEyOGkgX19YKQorKwl7CisrCSAg ICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2Flc2ltYzEyOCAoKF9fdjJkaSlfX1gp OworKwl9CisrICAgIH0gIi1PMiAtbWFlcyIgXQorK30KKysKKysjIFJldHVybiAxIGlmIHBjbG11 bCBpbnN0cnVjdGlvbnMgY2FuIGJlIGNvbXBpbGVkLgorK3Byb2MgY2hlY2tfZWZmZWN0aXZlX3Rh cmdldF9wY2xtdWwgeyB9IHsKKysgICAgcmV0dXJuIFtjaGVja19ub19jb21waWxlcl9tZXNzYWdl cyBwY2xtdWwgb2JqZWN0IHsKKysJdHlwZWRlZiBsb25nIGxvbmcgX19tMTI4aSBfX2F0dHJpYnV0 ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNikpKTsKKysJdHlwZWRlZiBsb25nIGxvbmcgX192MmRp IF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDE2KSkpOworKworKwlfX20xMjhpIHBj bG11bHFkcV90ZXN0IChfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCisrCXsKKysJICAgIHJldHVy biAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcGNsbXVscWRxMTI4ICgoX192MmRpKV9fWCwKKysJ CQkJCQkJICAoX192MmRpKV9fWSwKKysJCQkJCQkJICAxKTsKKysJfQorKyAgICB9ICItTzIgLW1w Y2xtdWwiIF0KKyt9CisrCisgIyBSZXR1cm4gMSBpZiBzc2U0YSBpbnN0cnVjdGlvbnMgY2FuIGJl IGNvbXBpbGVkLgorIHByb2MgY2hlY2tfZWZmZWN0aXZlX3RhcmdldF9zc2U0YSB7IH0geworICAg ICByZXR1cm4gW2NoZWNrX25vX2NvbXBpbGVyX21lc3NhZ2VzIHNzZTRhIG9iamVjdCB7CistLS0g Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYWVzZGVjbGFzdC5jCShyZXZpc2lvbiAwKQor KysrIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Flc2RlY2xhc3QuYwkocmV2aXNpb24g MTMzOTAyKQorQEAgLTAsMCArMSw2OSBAQAorKy8qIHsgZGctZG8gcnVuIH0gKi8KKysvKiB7IGRn LXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhZXMgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8y IC1tYWVzIiB9ICovCisrCisrI2luY2x1ZGUgPHdtbWludHJpbi5oPgorKyNpbmNsdWRlIDxzdHJp bmcuaD4KKysKKysjaW5jbHVkZSAiYWVzLWNoZWNrLmgiCisrCisrZXh0ZXJuIHZvaWQgYWJvcnQg KHZvaWQpOworKworKyNkZWZpbmUgTlVNIDEwMjQKKysKKytzdGF0aWMgX19tMTI4aSBzcmMxW05V TV07Cisrc3RhdGljIF9fbTEyOGkgc3JjMltOVU1dOworK3N0YXRpYyBfX20xMjhpIGVkc3RbTlVN XTsKKysKKytzdGF0aWMgX19tMTI4aSByZXNkc3RbTlVNXTsKKysKKysvKiBJbml0aWFsaXplIGlu cHV0L291dHB1dCB2ZWN0b3JzLiAgKEN1cnJlbnRseSwgdGhlcmUgaXMgb25seSBvbmUgc2V0IG9m CisrICAgaW5wdXQvb3V0cHV0IHZlY3RvcnMpLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luaXRf ZGF0YSAoX19tMTI4aSAqczEsIF9fbTEyOGkgKnMyLCBfX20xMjhpICpkKQorK3sKKysgIGludCBp OworKworKyAgZm9yIChpID0gMDsgaSA8IE5VTTsgaSsrKQorKyAgICB7CisrICAgICAgczFbaV0g PSBfbW1fc2V0cl9lcGkzMiAoMHg1ZDUzNDc1ZCwgMHg2Mzc0NmY3MiwKKysJCQkgICAgICAweDcz NzQ1NjY1LCAweDdiNWI1NDY1KTsKKysgICAgICBzMltpXSA9IF9tbV9zZXRyX2VwaTMyICgweDcy NmY2ZTVkLCAweDViNDc3NTY1LAorKwkJCSAgICAgIDB4Njg2MTc5MjksIDB4NDg2OTI4NTMpOwor KyAgICAgIGRbaV0gPSBfbW1fc2V0cl9lcGkzMiAoMHg3MmE1OTNkMCwgMHhkNDEwNjM3YiwKKysJ CQkgICAgIDB4NmIzMTdmOTUsIDB4YzVhMzkxZWYpOworKyAgICB9CisrfQorKworK3N0YXRpYyB2 b2lkCisrYWVzX3Rlc3QgKHZvaWQpCisreworKyAgaW50IGk7CisrCisrICBpbml0X2RhdGEgKHNy YzEsIHNyYzIsIGVkc3QpOworKworKyAgZm9yIChpID0gMDsgaSA8IE5VTTsgaSArPSAxNikKKysg ICAgeworKyAgICAgIHJlc2RzdFtpXSA9IF9tbV9hZXNkZWNsYXN0X3NpMTI4IChzcmMxW2ldLCBz cmMyW2ldKTsKKysgICAgICByZXNkc3RbaSArIDFdID0gX21tX2Flc2RlY2xhc3Rfc2kxMjggKHNy YzFbaSArIDFdLCBzcmMyW2kgKyAxXSk7CisrICAgICAgcmVzZHN0W2kgKyAyXSA9IF9tbV9hZXNk ZWNsYXN0X3NpMTI4IChzcmMxW2kgKyAyXSwgc3JjMltpICsgMl0pOworKyAgICAgIHJlc2RzdFtp ICsgM10gPSBfbW1fYWVzZGVjbGFzdF9zaTEyOCAoc3JjMVtpICsgM10sIHNyYzJbaSArIDNdKTsK KysgICAgICByZXNkc3RbaSArIDRdID0gX21tX2Flc2RlY2xhc3Rfc2kxMjggKHNyYzFbaSArIDRd LCBzcmMyW2kgKyA0XSk7CisrICAgICAgcmVzZHN0W2kgKyA1XSA9IF9tbV9hZXNkZWNsYXN0X3Np MTI4IChzcmMxW2kgKyA1XSwgc3JjMltpICsgNV0pOworKyAgICAgIHJlc2RzdFtpICsgNl0gPSBf bW1fYWVzZGVjbGFzdF9zaTEyOCAoc3JjMVtpICsgNl0sIHNyYzJbaSArIDZdKTsKKysgICAgICBy ZXNkc3RbaSArIDddID0gX21tX2Flc2RlY2xhc3Rfc2kxMjggKHNyYzFbaSArIDddLCBzcmMyW2kg KyA3XSk7CisrICAgICAgcmVzZHN0W2kgKyA4XSA9IF9tbV9hZXNkZWNsYXN0X3NpMTI4IChzcmMx W2kgKyA4XSwgc3JjMltpICsgOF0pOworKyAgICAgIHJlc2RzdFtpICsgOV0gPSBfbW1fYWVzZGVj bGFzdF9zaTEyOCAoc3JjMVtpICsgOV0sIHNyYzJbaSArIDldKTsKKysgICAgICByZXNkc3RbaSAr IDEwXSA9IF9tbV9hZXNkZWNsYXN0X3NpMTI4IChzcmMxW2kgKyAxMF0sIHNyYzJbaSArIDEwXSk7 CisrICAgICAgcmVzZHN0W2kgKyAxMV0gPSBfbW1fYWVzZGVjbGFzdF9zaTEyOCAoc3JjMVtpICsg MTFdLCBzcmMyW2kgKyAxMV0pOworKyAgICAgIHJlc2RzdFtpICsgMTJdID0gX21tX2Flc2RlY2xh c3Rfc2kxMjggKHNyYzFbaSArIDEyXSwgc3JjMltpICsgMTJdKTsKKysgICAgICByZXNkc3RbaSAr IDEzXSA9IF9tbV9hZXNkZWNsYXN0X3NpMTI4IChzcmMxW2kgKyAxM10sIHNyYzJbaSArIDEzXSk7 CisrICAgICAgcmVzZHN0W2kgKyAxNF0gPSBfbW1fYWVzZGVjbGFzdF9zaTEyOCAoc3JjMVtpICsg MTRdLCBzcmMyW2kgKyAxNF0pOworKyAgICAgIHJlc2RzdFtpICsgMTVdID0gX21tX2Flc2RlY2xh c3Rfc2kxMjggKHNyYzFbaSArIDE1XSwgc3JjMltpICsgMTVdKTsKKysgICAgfQorKworKyAgZm9y IChpID0gMDsgaSA8IE5VTTsgaSsrKQorKyAgICBpZiAobWVtY21wIChlZHN0ICsgaSwgcmVzZHN0 ICsgaSwgc2l6ZW9mIChfX20xMjhpKSkpCisrICAgICAgYWJvcnQgKCk7CisrfQorLS0tIGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3BjbG11bHFkcS5jCShyZXZpc2lvbiAwKQorKysrIGdj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3BjbG11bHFkcS5jCShyZXZpc2lvbiAxMzM5MDIp CitAQCAtMCwwICsxLDg3IEBACisrLyogeyBkZy1kbyBydW4gfSAqLworKy8qIHsgZGctcmVxdWly ZS1lZmZlY3RpdmUtdGFyZ2V0IHBjbG11bCB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLW1w Y2xtdWwiIH0gKi8KKysKKysjaW5jbHVkZSA8d21taW50cmluLmg+CisrI2luY2x1ZGUgPHN0cmlu Zy5oPgorKworKyNpbmNsdWRlICJwY2xtdWwtY2hlY2suaCIKKysKKytleHRlcm4gdm9pZCBhYm9y dCAodm9pZCk7CisrCisrI2RlZmluZSBOVU0gMTAyNAorKworK3N0YXRpYyBfX20xMjhpIHMxW05V TV07Cisrc3RhdGljIF9fbTEyOGkgczJbTlVNXTsKKysvKiBXZSBuZWVkIHRoaXMgYXJyYXkgdG8g Z2VuZXJhdGUgbWVtIGZvcm0gb2YgaW5zdCAqLworK3N0YXRpYyBfX20xMjhpIHMybVtOVU1dOwor KworK3N0YXRpYyBfX20xMjhpIGVfMDBbTlVNXTsKKytzdGF0aWMgX19tMTI4aSBlXzAxW05VTV07 Cisrc3RhdGljIF9fbTEyOGkgZV8xMFtOVU1dOworK3N0YXRpYyBfX20xMjhpIGVfMTFbTlVNXTsK KysKKytzdGF0aWMgX19tMTI4aSBkXzAwW05VTV07Cisrc3RhdGljIF9fbTEyOGkgZF8wMVtOVU1d OworK3N0YXRpYyBfX20xMjhpIGRfMTBbTlVNXTsKKytzdGF0aWMgX19tMTI4aSBkXzExW05VTV07 CisrCisrLyogSW5pdGlhbGl6ZSBpbnB1dC9vdXRwdXQgdmVjdG9ycy4gIChDdXJyZW50bHksIHRo ZXJlIGlzIG9ubHkgb25lIHNldAorKyAgIG9mIGlucHV0L291dHB1dCB2ZWN0b3JzKS4gICovCisr c3RhdGljIHZvaWQKKytpbml0X2RhdGEgKF9fbTEyOGkgKmxzMSwgICBfX20xMjhpICpsczIsIF9f bTEyOGkgKmxlXzAwLCBfX20xMjhpICpsZV8wMSwKKysJICAgX19tMTI4aSAqbGVfMTAsIF9fbTEy OGkgKmxlXzExKQorK3sKKysgIGludCBpOworKworKyAgZm9yIChpID0gMDsgaSA8IE5VTTsgaSsr KQorKyAgICB7CisrICAgICAgbHMxW2ldID0gX21tX3NldF9lcGkzMiAoMHg3QjVCNTQ2NSwgMHg3 Mzc0NTY2NSwKKysJCQkgICAgICAweDYzNzQ2RjcyLCAweDVENTM0NzVEKTsKKysgICAgICBsczJb aV0gPSBfbW1fc2V0X2VwaTMyICgweDQ4NjkyODUzLCAweDY4NjE3OTI5LAorKwkJCSAgICAgIDB4 NUI0Nzc1NjUsIDB4NzI2RjZFNUQpOworKyAgICAgIHMybVtpXSA9IF9tbV9zZXRfZXBpMzIgKDB4 NDg2OTI4NTMsIDB4Njg2MTc5MjksCisrCQkJICAgICAgMHg1QjQ3NzU2NSwgMHg3MjZGNkU1RCk7 CisrICAgICAgbGVfMDBbaV0gPSBfbW1fc2V0X2VwaTMyICgweDFENEQ4NEM4LCAweDVDMzQ0MEMw LAorKwkJCQkweDkyOTYzM0Q1LCAweEQzNkYwNDUxKTsKKysgICAgICBsZV8wMVtpXSA9IF9tbV9z ZXRfZXBpMzIgKDB4MUEyQkY2REIsIDB4M0EzMDg2MkYsCisrCQkJCTB4QkFCRjI2MkQsIDB4RjRC N0Q1QzkpOworKyAgICAgIGxlXzEwW2ldID0gX21tX3NldF9lcGkzMiAoMHgxQkQxN0M4RCwgMHg1 NTZBQjVBMSwKKysJCQkJMHg3RkE1NDBBQywgMHgyQTI4MTMxNSk7CisrICAgICAgbGVfMTFbaV0g PSBfbW1fc2V0X2VwaTMyICgweDFEMUUxRjJDLCAweDU5MkU3QzQ1LAorKwkJCQkweEQ2NkVFMDNF LCAweDQxMEZENEVEKTsKKysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZAorK3BjbG11bF90ZXN0 ICh2b2lkKQorK3sKKysgIGludCBpOworKworKyAgaW5pdF9kYXRhIChzMSwgczIsIGVfMDAsIGVf MDEsIGVfMTAsIGVfMTEpOworKworKyAgZm9yIChpID0gMDsgaSA8IE5VTTsgaSArPSAyKQorKyAg ICB7CisrICAgICAgZF8wMFtpXSA9IF9tbV9jbG11bGVwaTY0X3NpMTI4IChzMVtpXSwgczJtW2ld LCAweDAwKTsKKysgICAgICBkXzAxW2ldID0gX21tX2NsbXVsZXBpNjRfc2kxMjggKHMxW2ldLCBz MltpXSwgMHgwMSk7CisrICAgICAgZF8xMFtpXSA9IF9tbV9jbG11bGVwaTY0X3NpMTI4IChzMVtp XSwgczJbaV0sIDB4MTApOworKyAgICAgIGRfMTFbaV0gPSBfbW1fY2xtdWxlcGk2NF9zaTEyOCAo czFbaV0sIHMyW2ldLCAweDExKTsKKysKKysgICAgICBkXzExW2kgKyAxXSA9IF9tbV9jbG11bGVw aTY0X3NpMTI4IChzMVtpICsgMV0sIHMyW2kgKyAxXSwgMHgxMSk7CisrICAgICAgZF8wMFtpICsg MV0gPSBfbW1fY2xtdWxlcGk2NF9zaTEyOCAoczFbaSArIDFdLCBzMltpICsgMV0sIDB4MDApOwor KyAgICAgIGRfMTBbaSArIDFdID0gX21tX2NsbXVsZXBpNjRfc2kxMjggKHMxW2kgKyAxXSwgczJt W2kgKyAxXSwgMHgxMCk7CisrICAgICAgZF8wMVtpICsgMV0gPSBfbW1fY2xtdWxlcGk2NF9zaTEy OCAoczFbaSArIDFdLCBzMltpICsgMV0sIDB4MDEpOworKyAgICB9CisrCisrICBmb3IgKGkgPSAw OyBpIDwgTlVNOyBpKyspCisrICAgIHsKKysgICAgICBpZiAobWVtY21wIChkXzAwICsgaSwgZV8w MCArIGksIHNpemVvZiAoX19tMTI4aSkpKQorKwlhYm9ydCAoKTsKKysgICAgICBpZiAobWVtY21w IChkXzAxICsgaSwgZV8wMSArIGksIHNpemVvZiAoX19tMTI4aSkpKQorKwlhYm9ydCAoKTsKKysg ICAgICBpZiAobWVtY21wIChkXzEwICsgaSwgZV8xMCArIGksIHNpemVvZiAoX19tMTI4aSkpKQor KwlhYm9ydCAoKTsKKysgICAgICBpZiAobWVtY21wKGRfMTEgKyBpLCBlXzExICsgaSwgc2l6ZW9m IChfX20xMjhpKSkpCisrCWFib3J0ICgpOworKyAgICB9CisrfQorLS0tIGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2Flcy1jaGVjay5oCShyZXZpc2lvbiAwKQorKysrIGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2Flcy1jaGVjay5oCShyZXZpc2lvbiAxMzM5MDIpCitAQCAtMCww ICsxLDMwIEBACisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKwor KyNpbmNsdWRlICJjcHVpZC5oIgorKworK3N0YXRpYyB2b2lkIGFlc190ZXN0ICh2b2lkKTsKKysK KytpbnQKKyttYWluICgpCisreworKyAgdW5zaWduZWQgaW50IGVheCwgZWJ4LCBlY3gsIGVkeDsK KysgCisrICBpZiAoIV9fZ2V0X2NwdWlkICgxLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KSkKKysg ICAgcmV0dXJuIDA7CisrCisrICAvKiBSdW4gQUVTIHRlc3Qgb25seSBpZiBob3N0IGhhcyBBRVMg c3VwcG9ydC4gICovCisrICBpZiAoZWN4ICYgYml0X0FFUykKKysgICAgeworKyAgICAgIGFlc190 ZXN0ICgpOworKyNpZmRlZiBERUJVRworKyAgICBwcmludGYgKCJQQVNTRURcbiIpOworKyNlbmRp ZgorKyAgICB9CisrI2lmZGVmIERFQlVHCisrICBlbHNlCisrICAgIHByaW50ZiAoIlNLSVBQRURc biIpOworKyNlbmRpZgorKworKyAgcmV0dXJuIDA7CisrfQorLS0tIGdjYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L3BjbG11bC1jaGVjay5oCShyZXZpc2lvbiAwKQorKysrIGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3BjbG11bC1jaGVjay5oCShyZXZpc2lvbiAxMzM5MDIpCitAQCAt MCwwICsxLDMwIEBACisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgor KworKyNpbmNsdWRlICJjcHVpZC5oIgorKworK3N0YXRpYyB2b2lkIHBjbG11bF90ZXN0ICh2b2lk KTsKKysKKytpbnQKKyttYWluICgpCisreworKyAgdW5zaWduZWQgaW50IGVheCwgZWJ4LCBlY3gs IGVkeDsKKysgCisrICBpZiAoIV9fZ2V0X2NwdWlkICgxLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4 KSkKKysgICAgcmV0dXJuIDA7CisrCisrICAvKiBSdW4gUENMTVVMUURRIHRlc3Qgb25seSBpZiBo b3N0IGhhcyBQQ0xNVUxRRFEgc3VwcG9ydC4gICovCisrICBpZiAoZWN4ICYgYml0X1BDTE1VTCkK KysgICAgeworKyAgICAgIHBjbG11bF90ZXN0ICgpOworKyNpZmRlZiBERUJVRworKyAgICAgIHBy aW50ZiAoIlBBU1NFRFxuIik7CisrI2VuZGlmCisrICAgIH0KKysjaWZkZWYgREVCVUcKKysgIGVs c2UKKysgICAgcHJpbnRmICgiU0tJUFBFRFxuIik7CisrI2VuZGlmCisrCisrICByZXR1cm4gMDsK Kyt9CistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYWVza2V5Z2VuYXNzaXN0LmMJ KHJldmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYWVza2V5Z2Vu YXNzaXN0LmMJKHJldmlzaW9uIDEzMzkwMikKK0BAIC0wLDAgKzEsNjYgQEAKKysvKiB7IGRnLWRv IHJ1biB9ICovCisrLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYWVzIH0gKi8KKysv KiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFlcyIgfSAqLworKworKyNpbmNsdWRlIDx3bW1pbnRyaW4u aD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2luY2x1ZGUgImFlcy1jaGVjay5oIgorKwor K2V4dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKKysKKysjZGVmaW5lIE5VTSAxMDI0CisrI2RlZmlu ZSBJTU04IDEKKysKKytzdGF0aWMgX19tMTI4aSBzcmMxW05VTV07Cisrc3RhdGljIF9fbTEyOGkg ZWRzdFtOVU1dOworKworK3N0YXRpYyBfX20xMjhpIHJlc2RzdFtOVU1dOworKworKy8qIEluaXRp YWxpemUgaW5wdXQvb3V0cHV0IHZlY3RvcnMuICAoQ3VycmVudGx5LCB0aGVyZSBpcyBvbmx5IG9u ZSBzZXQKKysgICBvZiBpbnB1dC9vdXRwdXQgdmVjdG9ycykuICAqLworKworK3N0YXRpYyB2b2lk CisraW5pdF9kYXRhIChfX20xMjhpICpzMSwgX19tMTI4aSAqZCkKKyt7CisrICBpbnQgaTsKKysg IGZvciAoaSA9IDA7IGkgPCBOVU07IGkrKykKKysgICAgeworKyAgICAgIHMxW2ldID0gX21tX3Nl dHJfZXBpMzIgKDB4MTYxNTdlMmIsIDB4YTZkMmFlMjgsCisrCQkJICAgICAgMHg4ODE1ZjdhYiwg MHgzYzRmY2YwOSk7CisrICAgICAgZFtpXSA9IF9tbV9zZXRyX2VwaTMyICgweDI0YjVlNDM0LCAw eDM0MjRiNWU1LAorKwkJCSAgICAgMHhlYjg0OGEwMSwgMHgwMWViODQ4Yik7CisrICAgIH0KKyt9 CisrCisrc3RhdGljIHZvaWQKKythZXNfdGVzdCAodm9pZCkKKyt7CisrICBpbnQgaTsKKysKKysg IGluaXRfZGF0YSAoc3JjMSwgZWRzdCk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgTlVNOyBpICs9 IDE2KQorKyAgICB7CisrICAgICAgcmVzZHN0W2ldICA9IF9tbV9hZXNrZXlnZW5hc3Npc3Rfc2kx MjggKHNyYzFbaV0sIElNTTgpOworKyAgICAgIHJlc2RzdFtpICsgMV0gPSBfbW1fYWVza2V5Z2Vu YXNzaXN0X3NpMTI4IChzcmMxW2kgKyAxXSwgSU1NOCk7CisrICAgICAgcmVzZHN0W2kgKyAyXSA9 IF9tbV9hZXNrZXlnZW5hc3Npc3Rfc2kxMjggKHNyYzFbaSArIDJdLCBJTU04KTsKKysgICAgICBy ZXNkc3RbaSArIDNdID0gX21tX2Flc2tleWdlbmFzc2lzdF9zaTEyOCAoc3JjMVtpICsgM10sIElN TTgpOworKyAgICAgIHJlc2RzdFtpICsgNF0gPSBfbW1fYWVza2V5Z2VuYXNzaXN0X3NpMTI4IChz cmMxW2kgKyA0XSwgSU1NOCk7CisrICAgICAgcmVzZHN0W2kgKyA1XSA9IF9tbV9hZXNrZXlnZW5h c3Npc3Rfc2kxMjggKHNyYzFbaSArIDVdLCBJTU04KTsKKysgICAgICByZXNkc3RbaSArIDZdID0g X21tX2Flc2tleWdlbmFzc2lzdF9zaTEyOCAoc3JjMVtpICsgNl0sIElNTTgpOworKyAgICAgIHJl c2RzdFtpICsgN10gPSBfbW1fYWVza2V5Z2VuYXNzaXN0X3NpMTI4IChzcmMxW2kgKyA3XSwgSU1N OCk7CisrICAgICAgcmVzZHN0W2kgKyA4XSA9IF9tbV9hZXNrZXlnZW5hc3Npc3Rfc2kxMjggKHNy YzFbaSArIDhdLCBJTU04KTsKKysgICAgICByZXNkc3RbaSArIDldID0gX21tX2Flc2tleWdlbmFz c2lzdF9zaTEyOCAoc3JjMVtpICsgOV0sIElNTTgpOworKyAgICAgIHJlc2RzdFtpICsgMTBdID0g X21tX2Flc2tleWdlbmFzc2lzdF9zaTEyOCAoc3JjMVtpICsgMTBdLCBJTU04KTsKKysgICAgICBy ZXNkc3RbaSArIDExXSA9IF9tbV9hZXNrZXlnZW5hc3Npc3Rfc2kxMjggKHNyYzFbaSArIDExXSwg SU1NOCk7CisrICAgICAgcmVzZHN0W2kgKyAxMl0gPSBfbW1fYWVza2V5Z2VuYXNzaXN0X3NpMTI4 IChzcmMxW2kgKyAxMl0sIElNTTgpOworKyAgICAgIHJlc2RzdFtpICsgMTNdID0gX21tX2Flc2tl eWdlbmFzc2lzdF9zaTEyOCAoc3JjMVtpICsgMTNdLCBJTU04KTsKKysgICAgICByZXNkc3RbaSAr IDE0XSA9IF9tbV9hZXNrZXlnZW5hc3Npc3Rfc2kxMjggKHNyYzFbaSArIDE0XSwgSU1NOCk7Cisr ICAgICAgcmVzZHN0W2kgKyAxNV0gPSBfbW1fYWVza2V5Z2VuYXNzaXN0X3NpMTI4IChzcmMxW2kg KyAxNV0sIElNTTgpOworKyAgICB9CisrCisrICBmb3IgKGkgPSAwOyBpIDwgTlVNOyBpKyspCisr ICAgIGlmIChtZW1jbXAoZWRzdCArIGksIHJlc2RzdCArIGksIHNpemVvZiAoX19tMTI4aSkpKQor KyAgICAgIGFib3J0ICgpOworK30KKy0tLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9h ZXNlbmNsYXN0LmMJKHJldmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvYWVzZW5jbGFzdC5jCShyZXZpc2lvbiAxMzM5MDIpCitAQCAtMCwwICsxLDY4IEBACisrLyog eyBkZy1kbyBydW4gfSAqLworKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFlcyB9 ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLW1hZXMiIH0gKi8KKysKKysjaW5jbHVkZSA8d21t aW50cmluLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKworKyNpbmNsdWRlICJhZXMtY2hlY2su aCIKKysKKytleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CisrCisrI2RlZmluZSBOVU0gMTAyNAor KworK3N0YXRpYyBfX20xMjhpIHNyYzFbTlVNXTsKKytzdGF0aWMgX19tMTI4aSBzcmMyW05VTV07 Cisrc3RhdGljIF9fbTEyOGkgZWRzdFtOVU1dOworKworK3N0YXRpYyBfX20xMjhpIHJlc2RzdFtO VU1dOworKworKy8qIEluaXRpYWxpemUgaW5wdXQvb3V0cHV0IHZlY3RvcnMuICAoQ3VycmVudGx5 LCB0aGVyZSBpcyBvbmx5IG9uZQorKyAgIHNldCBvZiBpbnB1dC9vdXRwdXQgdmVjdG9ycykuICAq LworKworK3N0YXRpYyB2b2lkCisraW5pdF9kYXRhIChfX20xMjhpICpzMSwgX19tMTI4aSAqczIs IF9fbTEyOGkgKmQpCisreworKyAgaW50IGk7CisrICBmb3IgKGkgPSAwOyBpIDwgTlVNOyBpKysp CisrICAgIHsKKysgICAgICBzMVtpXSA9IF9tbV9zZXRyX2VwaTMyICgweDVkNTM0NzVkLCAweDYz NzQ2ZjcyLAorKwkJCSAgICAgIDB4NzM3NDU2NjUsIDB4N2I1YjU0NjUpOworKyAgICAgIHMyW2ld ID0gX21tX3NldHJfZXBpMzIgKDB4NzI2ZjZlNWQsIDB4NWI0Nzc1NjUsCisrCQkJICAgICAgMHg2 ODYxNzkyOSwgMHg0ODY5Mjg1Myk7CisrICAgICAgZFtpXSA9IF9tbV9zZXRyX2VwaTMyICgweDUz ZmRjNjExLCAweDE3N2VjNDI1LAorKwkJCSAgICAgMHg5MzhjNTk2NCwgMHhjN2ZiODgxZSk7Cisr ICAgIH0KKyt9CisrCisrc3RhdGljIHZvaWQKKythZXNfdGVzdCAodm9pZCkKKyt7CisrICBpbnQg aTsKKysKKysgIGluaXRfZGF0YSAoc3JjMSwgc3JjMiwgZWRzdCk7CisrCisrICBmb3IgKGkgPSAw OyBpIDwgTlVNOyBpICs9IDE2KQorKyAgICB7CisrICAgICAgcmVzZHN0W2ldID0gX21tX2Flc2Vu Y2xhc3Rfc2kxMjggKHNyYzFbaV0sIHNyYzJbaV0pOworKyAgICAgIHJlc2RzdFtpICsgMV0gPSBf bW1fYWVzZW5jbGFzdF9zaTEyOCAoc3JjMVtpICsgMV0sIHNyYzJbaSArIDFdKTsKKysgICAgICBy ZXNkc3RbaSArIDJdID0gX21tX2Flc2VuY2xhc3Rfc2kxMjggKHNyYzFbaSArIDJdLCBzcmMyW2kg KyAyXSk7CisrICAgICAgcmVzZHN0W2kgKyAzXSA9IF9tbV9hZXNlbmNsYXN0X3NpMTI4IChzcmMx W2kgKyAzXSwgc3JjMltpICsgM10pOworKyAgICAgIHJlc2RzdFtpICsgNF0gPSBfbW1fYWVzZW5j bGFzdF9zaTEyOCAoc3JjMVtpICsgNF0sIHNyYzJbaSArIDRdKTsKKysgICAgICByZXNkc3RbaSAr IDVdID0gX21tX2Flc2VuY2xhc3Rfc2kxMjggKHNyYzFbaSArIDVdLCBzcmMyW2kgKyA1XSk7Cisr ICAgICAgcmVzZHN0W2kgKyA2XSA9IF9tbV9hZXNlbmNsYXN0X3NpMTI4IChzcmMxW2kgKyA2XSwg c3JjMltpICsgNl0pOworKyAgICAgIHJlc2RzdFtpICsgN10gPSBfbW1fYWVzZW5jbGFzdF9zaTEy OCAoc3JjMVtpICsgN10sIHNyYzJbaSArIDddKTsKKysgICAgICByZXNkc3RbaSArIDhdID0gX21t X2Flc2VuY2xhc3Rfc2kxMjggKHNyYzFbaSArIDhdLCBzcmMyW2kgKyA4XSk7CisrICAgICAgcmVz ZHN0W2kgKyA5XSA9IF9tbV9hZXNlbmNsYXN0X3NpMTI4IChzcmMxW2kgKyA5XSwgc3JjMltpICsg OV0pOworKyAgICAgIHJlc2RzdFtpICsgMTBdID0gX21tX2Flc2VuY2xhc3Rfc2kxMjggKHNyYzFb aSArIDEwXSwgc3JjMltpICsgMTBdKTsKKysgICAgICByZXNkc3RbaSArIDExXSA9IF9tbV9hZXNl bmNsYXN0X3NpMTI4IChzcmMxW2kgKyAxMV0sIHNyYzJbaSArIDExXSk7CisrICAgICAgcmVzZHN0 W2kgKyAxMl0gPSBfbW1fYWVzZW5jbGFzdF9zaTEyOCAoc3JjMVtpICsgMTJdLCBzcmMyW2kgKyAx Ml0pOworKyAgICAgIHJlc2RzdFtpICsgMTNdID0gX21tX2Flc2VuY2xhc3Rfc2kxMjggKHNyYzFb aSArIDEzXSwgc3JjMltpICsgMTNdKTsKKysgICAgICByZXNkc3RbaSArIDE0XSA9IF9tbV9hZXNl bmNsYXN0X3NpMTI4IChzcmMxW2kgKyAxNF0sIHNyYzJbaSArIDE0XSk7CisrICAgICAgcmVzZHN0 W2kgKyAxNV0gPSBfbW1fYWVzZW5jbGFzdF9zaTEyOCAoc3JjMVtpICsgMTVdLCBzcmMyW2kgKyAx NV0pOworKyAgICB9CisrCisrICBmb3IgKGkgPSAwOyBpIDwgTlVNOyBpKyspCisrICAgIGlmICht ZW1jbXAoZWRzdCArIGksIHJlc2RzdCArIGksIHNpemVvZiAoX19tMTI4aSkpKQorKyAgICAgIGFi b3J0ICgpOworK30KKy0tLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hZXNpbWMuYwko cmV2aXNpb24gMCkKKysrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hZXNpbWMuYwko cmV2aXNpb24gMTMzOTAyKQorQEAgLTAsMCArMSw2NiBAQAorKy8qIHsgZGctZG8gcnVuIH0gKi8K KysvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhZXMgfSAqLworKy8qIHsgZGctb3B0 aW9ucyAiLU8yIC1tYWVzIiB9ICovCisrCisrI2luY2x1ZGUgPHdtbWludHJpbi5oPgorKyNpbmNs dWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSAiYWVzLWNoZWNrLmgiCisrCisrZXh0ZXJuIHZv aWQgYWJvcnQgKHZvaWQpOworKworKyNkZWZpbmUgTlVNIDEwMjQKKysKKytzdGF0aWMgX19tMTI4 aSBzcmMxW05VTV07Cisrc3RhdGljIF9fbTEyOGkgZWRzdFtOVU1dOworKworK3N0YXRpYyBfX20x MjhpIHJlc2RzdFtOVU1dOworKworKy8qIEluaXRpYWxpemUgaW5wdXQvb3V0cHV0IHZlY3RvcnMu ICAoQ3VycmVudGx5LCB0aGVyZSBpcyBvbmx5IG9uZSBzZXQKKysgICBvZiBpbnB1dC9vdXRwdXQg dmVjdG9ycykuICAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luaXRfZGF0YSAoX19tMTI4aSAqczEs IF9fbTEyOGkgKmQpCisreworKyAgaW50IGk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgTlVNOyBp KyspCisrICAgIHsKKysgICAgICBzMVtpXSA9IF9tbV9zZXRyX2VwaTMyICgweDVkNTM0NzVkLCAw eDYzNzQ2ZjcyLAorKwkJCSAgICAgIDB4NzM3NDU2NjUsIDB4N2I1YjU0NjUpOworKyAgICAgIGRb aV0gPSBfbW1fc2V0cl9lcGkzMiAoMHg4MWMzYjNlNSwgMHgyYjE4MzMwYSwKKysJCQkgICAgIDB4 NDRiMTA5YzgsIDB4NjI3YTZmNjYpOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkCisrYWVz X3Rlc3QgKHZvaWQpCisreworKyAgaW50IGk7CisrCisrICBpbml0X2RhdGEgKHNyYzEsIGVkc3Qp OworKworKyAgZm9yIChpID0gMDsgaSA8IE5VTTsgaSArPSAxNikKKysgICAgeworKyAgICAgIHJl c2RzdFtpXSA9IF9tbV9hZXNpbWNfc2kxMjggKHNyYzFbaV0pOworKyAgICAgIHJlc2RzdFtpICsg MV0gPSBfbW1fYWVzaW1jX3NpMTI4IChzcmMxW2kgKyAxXSk7CisrICAgICAgcmVzZHN0W2kgKyAy XSA9IF9tbV9hZXNpbWNfc2kxMjggKHNyYzFbaSArIDJdKTsKKysgICAgICByZXNkc3RbaSArIDNd ID0gX21tX2Flc2ltY19zaTEyOCAoc3JjMVtpICsgM10pOworKyAgICAgIHJlc2RzdFtpICsgNF0g PSBfbW1fYWVzaW1jX3NpMTI4IChzcmMxW2kgKyA0XSk7CisrICAgICAgcmVzZHN0W2kgKyA1XSA9 IF9tbV9hZXNpbWNfc2kxMjggKHNyYzFbaSArIDVdKTsKKysgICAgICByZXNkc3RbaSArIDZdID0g X21tX2Flc2ltY19zaTEyOCAoc3JjMVtpICsgNl0pOworKyAgICAgIHJlc2RzdFtpICsgN10gPSBf bW1fYWVzaW1jX3NpMTI4IChzcmMxW2kgKyA3XSk7CisrICAgICAgcmVzZHN0W2kgKyA4XSA9IF9t bV9hZXNpbWNfc2kxMjggKHNyYzFbaSArIDhdKTsKKysgICAgICByZXNkc3RbaSArIDldID0gX21t X2Flc2ltY19zaTEyOCAoc3JjMVtpICsgOV0pOworKyAgICAgIHJlc2RzdFtpICsgMTBdID0gX21t X2Flc2ltY19zaTEyOCAoc3JjMVtpICsgMTBdKTsKKysgICAgICByZXNkc3RbaSArIDExXSA9IF9t bV9hZXNpbWNfc2kxMjggKHNyYzFbaSArIDExXSk7CisrICAgICAgcmVzZHN0W2kgKyAxMl0gPSBf bW1fYWVzaW1jX3NpMTI4IChzcmMxW2kgKyAxMl0pOworKyAgICAgIHJlc2RzdFtpICsgMTNdID0g X21tX2Flc2ltY19zaTEyOCAoc3JjMVtpICsgMTNdKTsKKysgICAgICByZXNkc3RbaSArIDE0XSA9 IF9tbV9hZXNpbWNfc2kxMjggKHNyYzFbaSArIDE0XSk7CisrICAgICAgcmVzZHN0W2kgKyAxNV0g PSBfbW1fYWVzaW1jX3NpMTI4IChzcmMxW2kgKyAxNV0pOworKyAgICB9CisrCisrICBmb3IgKGkg PSAwOyBpIDwgTlVNOyBpKyspCisrICAgIGlmIChtZW1jbXAoZWRzdCArIGksIHJlc2RzdCArIGks IHNpemVvZiAoX19tMTI4aSkpKQorKyAgICAgIGFib3J0ICgpOworK30KKy0tLSBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hZXNlbmMuYwkocmV2aXNpb24gMCkKKysrKyBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hZXNlbmMuYwkocmV2aXNpb24gMTMzOTAyKQorQEAgLTAsMCAr MSw2OCBAQAorKy8qIHsgZGctZG8gcnVuIH0gKi8KKysvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZl LXRhcmdldCBhZXMgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYWVzIiB9ICovCisrCisr I2luY2x1ZGUgPHdtbWludHJpbi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVk ZSAiYWVzLWNoZWNrLmgiCisrCisrZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOworKworKyNkZWZp bmUgTlVNIDEwMjQKKysKKytzdGF0aWMgX19tMTI4aSBzcmMxW05VTV07Cisrc3RhdGljIF9fbTEy OGkgc3JjMltOVU1dOworK3N0YXRpYyBfX20xMjhpIGVkc3RbTlVNXTsKKysKKytzdGF0aWMgX19t MTI4aSByZXNkc3RbTlVNXTsKKysKKysvKiBJbml0aWFsaXplIGlucHV0L291dHB1dCB2ZWN0b3Jz LiAgKEN1cnJlbnRseSwgdGhlcmUgaXMgb25seSBvbmUgc2V0CisrICAgb2YgaW5wdXQvb3V0cHV0 IHZlY3RvcnMpLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luaXRfZGF0YSAoX19tMTI4aSAqczEs IF9fbTEyOGkgKnMyLCBfX20xMjhpICpkKQorK3sKKysgIGludCBpOworKyAgZm9yIChpID0gMDsg aSA8IE5VTTsgaSsrKQorKyAgICB7CisrICAgICAgczFbaV0gPSBfbW1fc2V0cl9lcGkzMiAoMHg1 ZDUzNDc1ZCwgMHg2Mzc0NmY3MiwKKysJCQkgICAgICAweDczNzQ1NjY1LCAweDdiNWI1NDY1KTsK KysgICAgICBzMltpXSA9IF9tbV9zZXRyX2VwaTMyICgweDcyNmY2ZTVkLCAweDViNDc3NTY1LAor KwkJCSAgICAgIDB4Njg2MTc5MjksIDB4NDg2OTI4NTMpOworKyAgICAgIGRbaV0gPSBfbW1fc2V0 cl9lcGkzMiAoMHhkZWQ3ZTU5NSwgMHg4YjEwNGI1OCwKKysJCQkgICAgIDB4OWZkYmEzYzUsIDB4 YTgzMTFjMmYpOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkCisrYWVzX3Rlc3QgKHZvaWQp CisreworKyAgaW50IGk7CisrCisrICBpbml0X2RhdGEgKHNyYzEsIHNyYzIsIGVkc3QpOworKwor KyAgZm9yIChpID0gMDsgaSA8IE5VTTsgaSArPSAxNikKKysgICAgeworKyAgICAgIHJlc2RzdFtp XSA9IF9tbV9hZXNlbmNfc2kxMjggKHNyYzFbaV0sIHNyYzJbaV0pOworKyAgICAgIHJlc2RzdFtp ICsgMV0gPSBfbW1fYWVzZW5jX3NpMTI4IChzcmMxW2kgKyAxXSwgc3JjMltpICsgMV0pOworKyAg ICAgIHJlc2RzdFtpICsgMl0gPSBfbW1fYWVzZW5jX3NpMTI4IChzcmMxW2kgKyAyXSwgc3JjMltp ICsgMl0pOworKyAgICAgIHJlc2RzdFtpICsgM10gPSBfbW1fYWVzZW5jX3NpMTI4IChzcmMxW2kg KyAzXSwgc3JjMltpICsgM10pOworKyAgICAgIHJlc2RzdFtpICsgNF0gPSBfbW1fYWVzZW5jX3Np MTI4IChzcmMxW2kgKyA0XSwgc3JjMltpICsgNF0pOworKyAgICAgIHJlc2RzdFtpICsgNV0gPSBf bW1fYWVzZW5jX3NpMTI4IChzcmMxW2kgKyA1XSwgc3JjMltpICsgNV0pOworKyAgICAgIHJlc2Rz dFtpICsgNl0gPSBfbW1fYWVzZW5jX3NpMTI4IChzcmMxW2kgKyA2XSwgc3JjMltpICsgNl0pOwor KyAgICAgIHJlc2RzdFtpICsgN10gPSBfbW1fYWVzZW5jX3NpMTI4IChzcmMxW2kgKyA3XSwgc3Jj MltpICsgN10pOworKyAgICAgIHJlc2RzdFtpICsgOF0gPSBfbW1fYWVzZW5jX3NpMTI4IChzcmMx W2kgKyA4XSwgc3JjMltpICsgOF0pOworKyAgICAgIHJlc2RzdFtpICsgOV0gPSBfbW1fYWVzZW5j X3NpMTI4IChzcmMxW2kgKyA5XSwgc3JjMltpICsgOV0pOworKyAgICAgIHJlc2RzdFtpICsgMTBd ID0gX21tX2Flc2VuY19zaTEyOCAoc3JjMVtpICsgMTBdLCBzcmMyW2kgKyAxMF0pOworKyAgICAg IHJlc2RzdFtpICsgMTFdID0gX21tX2Flc2VuY19zaTEyOCAoc3JjMVtpICsgMTFdLCBzcmMyW2kg KyAxMV0pOworKyAgICAgIHJlc2RzdFtpICsgMTJdID0gX21tX2Flc2VuY19zaTEyOCAoc3JjMVtp ICsgMTJdLCBzcmMyW2kgKyAxMl0pOworKyAgICAgIHJlc2RzdFtpICsgMTNdID0gX21tX2Flc2Vu Y19zaTEyOCAoc3JjMVtpICsgMTNdLCBzcmMyW2kgKyAxM10pOworKyAgICAgIHJlc2RzdFtpICsg MTRdID0gX21tX2Flc2VuY19zaTEyOCAoc3JjMVtpICsgMTRdLCBzcmMyW2kgKyAxNF0pOworKyAg ICAgIHJlc2RzdFtpICsgMTVdID0gX21tX2Flc2VuY19zaTEyOCAoc3JjMVtpICsgMTVdLCBzcmMy W2kgKyAxNV0pOworKyAgICB9CisrCisrICBmb3IgKGkgPSAwOyBpIDwgTlVNOyBpKyspCisrICAg IGlmIChtZW1jbXAgKGVkc3QgKyBpLCByZXNkc3QgKyBpLCBzaXplb2YgKF9fbTEyOGkpKSkKKysg ICAgICBhYm9ydCAoKTsKKyt9CistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3Nl LTEzLmMJKHJldmlzaW9uIDEzMzkwMSkKKysrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9zc2UtMTMuYwkocmV2aXNpb24gMTMzOTAyKQorQEAgLTEsOCArMSw4IEBACisgLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFyY2g9azggLW0zZG5vdyAt bXNzZTQgLW1zc2U1IiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLW1hcmNoPWs4IC1tM2Ru b3cgLW1zc2U0IC1tc3NlNSAtbWFlcyAtbXBjbG11bCIgfSAqLworIAorIC8qIFRlc3QgdGhhdCB0 aGUgaW50cmluc2ljcyBjb21waWxlIHdpdGggb3B0aW1pemF0aW9uLiAgQWxsIG9mIHRoZW0gYXJl CistICAgZGVmaW5lZCBhcyBpbmxpbmUgZnVuY3Rpb25zIGluIHsseCxlLHAsdCxzLGEsYn1tbWlu dHJpbi5oIGFuZCBtbTNkbm93LmgKKysgICBkZWZpbmVkIGFzIGlubGluZSBmdW5jdGlvbnMgaW4g eyx4LGUscCx0LHMsdyxhLGJ9bW1pbnRyaW4uaCBhbmQgbW0zZG5vdy5oCisgICAgdGhhdCByZWZl cmVuY2UgdGhlIHByb3BlciBidWlsdGluIGZ1bmN0aW9ucy4gIERlZmluaW5nIGF3YXkgImV4dGVy biIgYW5kCisgICAgIl9faW5saW5lIiByZXN1bHRzIGluIGFsbCBvZiB0aGVtIGJlaW5nIGNvbXBp bGVkIGFzIHByb3BlciBmdW5jdGlvbnMuICAqLworIAorQEAgLTE1LDYgKzE1LDEwIEBACisgI2Rl ZmluZSBfX2J1aWx0aW5faWEzMl9leHRycWkoWCwgSSwgTCkgIF9fYnVpbHRpbl9pYTMyX2V4dHJx aShYLCAxLCAxKQorICNkZWZpbmUgX19idWlsdGluX2lhMzJfaW5zZXJ0cWkoWCwgWSwgSSwgTCkg X19idWlsdGluX2lhMzJfaW5zZXJ0cWkoWCwgWSwgMSwgMSkKKyAKKysvKiB3bW1pbnRyaW4uaCAq LworKyNkZWZpbmUgX19idWlsdGluX2lhMzJfYWVza2V5Z2VuYXNzaXN0MTI4KFgsIEMpIF9fYnVp bHRpbl9pYTMyX2Flc2tleWdlbmFzc2lzdDEyOChYLCAxKQorKyNkZWZpbmUgX19idWlsdGluX2lh MzJfcGNsbXVscWRxMTI4KFgsIFksIEkpIF9fYnVpbHRpbl9pYTMyX3BjbG11bHFkcTEyOChYLCBZ LCAxKQorKworIC8qIHNtbWludHJpbi5oICovCisgI2RlZmluZSBfX2J1aWx0aW5faWEzMl9wYmxl bmR3MTI4KFgsIFksIE0pIF9fYnVpbHRpbl9pYTMyX3BibGVuZHcxMjggKFgsIFksIDEpCisgI2Rl ZmluZSBfX2J1aWx0aW5faWEzMl9ibGVuZHBzKFgsIFksIE0pIF9fYnVpbHRpbl9pYTMyX2JsZW5k cHMoWCwgWSwgMSkKK0BAIC05Miw2ICs5Niw3IEBACisgI2RlZmluZSBfX2J1aWx0aW5faWEzMl9w cm90ZGkoQSwgQikgX19idWlsdGluX2lhMzJfcHJvdGRpKEEsMSkKKyAjZGVmaW5lIF9fYnVpbHRp bl9pYTMyX3Byb3RxaShBLCBCKSBfX2J1aWx0aW5faWEzMl9wcm90cWkoQSwxKQorIAorKyNpbmNs dWRlIDx3bW1pbnRyaW4uaD4KKyAjaW5jbHVkZSA8Ym1taW50cmluLmg+CisgI2luY2x1ZGUgPHNt bWludHJpbi5oPgorICNpbmNsdWRlIDxtbTNkbm93Lmg+CistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvYWVzZGVjLmMJKHJldmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvYWVzZGVjLmMJKHJldmlzaW9uIDEzMzkwMikKK0BAIC0wLDAgKzEsNjcgQEAK KysvKiB7IGRnLWRvIHJ1biB9ICovCisrLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQg YWVzIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFlcyIgfSAqLworKworKyNpbmNsdWRl IDx3bW1pbnRyaW4uaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2luY2x1ZGUgImFlcy1j aGVjay5oIgorKworK2V4dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKKysKKysjZGVmaW5lIE5VTSAx MDI0CisrCisrc3RhdGljIF9fbTEyOGkgc3JjMVtOVU1dOworK3N0YXRpYyBfX20xMjhpIHNyYzJb TlVNXTsKKytzdGF0aWMgX19tMTI4aSBlZHN0W05VTV07CisrCisrc3RhdGljIF9fbTEyOGkgcmVz ZHN0W05VTV07CisrCisrLyogSW5pdGlhbGl6ZSBpbnB1dC9vdXRwdXQgdmVjdG9ycy4gIChDdXJy ZW50bHksIHRoZXJlIGlzIG9ubHkgb25lIHNldAorKyAgIG9mIGlucHV0L291dHB1dCB2ZWN0b3Jz KS4gICovCisrc3RhdGljIHZvaWQKKytpbml0X2RhdGEgKF9fbTEyOGkgKnMxLCBfX20xMjhpICpz MiwgX19tMTI4aSAqZCkKKyt7CisrICBpbnQgaTsKKysgIGZvciAoaSA9IDA7IGkgPCBOVU07IGkr KykKKysgICAgeworKyAgICAgIHMxW2ldID0gX21tX3NldHJfZXBpMzIgKDB4NWQ1MzQ3NWQsIDB4 NjM3NDZmNzIsCisrCQkJICAgICAgMHg3Mzc0NTY2NSwgMHg3YjViNTQ2NSk7CisrICAgICAgczJb aV0gPSBfbW1fc2V0cl9lcGkzMiAoMHg3MjZmNmU1ZCwgMHg1YjQ3NzU2NSwKKysJCQkgICAgICAw eDY4NjE3OTI5LCAweDQ4NjkyODUzKTsKKysgICAgICBkW2ldICA9IF9tbV9zZXRyX2VwaTMyICgw eGI3MzAzOTJhLCAweGI1OGViOTVlLAorKwkJCSAgICAgIDB4ZmFlYTI3ODcsIDB4MTM4YWMzNDIp OworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkCisrYWVzX3Rlc3QgKHZvaWQpCisreworKyAg aW50IGk7CisrCisrICBpbml0X2RhdGEgKHNyYzEsIHNyYzIsIGVkc3QpOworKworKyAgZm9yIChp ID0gMDsgaSA8IE5VTTsgaSArPSAxNikKKysgICAgeworKyAgICAgIHJlc2RzdFtpXSA9IF9tbV9h ZXNkZWNfc2kxMjggKHNyYzFbaV0sIHNyYzJbaV0pOworKyAgICAgIHJlc2RzdFtpICsgMV0gPSBf bW1fYWVzZGVjX3NpMTI4IChzcmMxW2kgKyAxXSwgc3JjMltpICsgMV0pOworKyAgICAgIHJlc2Rz dFtpICsgMl0gPSBfbW1fYWVzZGVjX3NpMTI4IChzcmMxW2kgKyAyXSwgc3JjMltpICsgMl0pOwor KyAgICAgIHJlc2RzdFtpICsgM10gPSBfbW1fYWVzZGVjX3NpMTI4IChzcmMxW2kgKyAzXSwgc3Jj MltpICsgM10pOworKyAgICAgIHJlc2RzdFtpICsgNF0gPSBfbW1fYWVzZGVjX3NpMTI4IChzcmMx W2kgKyA0XSwgc3JjMltpICsgNF0pOworKyAgICAgIHJlc2RzdFtpICsgNV0gPSBfbW1fYWVzZGVj X3NpMTI4IChzcmMxW2kgKyA1XSwgc3JjMltpICsgNV0pOworKyAgICAgIHJlc2RzdFtpICsgNl0g PSBfbW1fYWVzZGVjX3NpMTI4IChzcmMxW2kgKyA2XSwgc3JjMltpICsgNl0pOworKyAgICAgIHJl c2RzdFtpICsgN10gPSBfbW1fYWVzZGVjX3NpMTI4IChzcmMxW2kgKyA3XSwgc3JjMltpICsgN10p OworKyAgICAgIHJlc2RzdFtpICsgOF0gPSBfbW1fYWVzZGVjX3NpMTI4IChzcmMxW2kgKyA4XSwg c3JjMltpICsgOF0pOworKyAgICAgIHJlc2RzdFtpICsgOV0gPSBfbW1fYWVzZGVjX3NpMTI4IChz cmMxW2kgKyA5XSwgc3JjMltpICsgOV0pOworKyAgICAgIHJlc2RzdFtpICsgMTBdID0gX21tX2Fl c2RlY19zaTEyOCAoc3JjMVtpICsgMTBdLCBzcmMyW2kgKyAxMF0pOworKyAgICAgIHJlc2RzdFtp ICsgMTFdID0gX21tX2Flc2RlY19zaTEyOCAoc3JjMVtpICsgMTFdLCBzcmMyW2kgKyAxMV0pOwor KyAgICAgIHJlc2RzdFtpICsgMTJdID0gX21tX2Flc2RlY19zaTEyOCAoc3JjMVtpICsgMTJdLCBz cmMyW2kgKyAxMl0pOworKyAgICAgIHJlc2RzdFtpICsgMTNdID0gX21tX2Flc2RlY19zaTEyOCAo c3JjMVtpICsgMTNdLCBzcmMyW2kgKyAxM10pOworKyAgICAgIHJlc2RzdFtpICsgMTRdID0gX21t X2Flc2RlY19zaTEyOCAoc3JjMVtpICsgMTRdLCBzcmMyW2kgKyAxNF0pOworKyAgICAgIHJlc2Rz dFtpICsgMTVdID0gX21tX2Flc2RlY19zaTEyOCAoc3JjMVtpICsgMTVdLCBzcmMyW2kgKyAxNV0p OworKyAgICB9CisrCisrICBmb3IgKGkgPSAwOyBpIDwgTlVNOyBpKyspCisrICAgIGlmIChtZW1j bXAgKGVkc3QgKyBpLCByZXNkc3QgKyBpLCBzaXplb2YgKF9fbTEyOGkpKSkKKysgICAgICBhYm9y dCAoKTsKKyt9CistLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvb3RoZXIvaTM4Ni0yLkMJKHJldmlz aW9uIDEzMzkwMSkKKysrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9vdGhlci9pMzg2LTIuQwkocmV2 aXNpb24gMTMzOTAyKQorQEAgLTEsOCArMSw5IEBACistLyogVGVzdCB0aGF0IHsseCxlLHAsdCxz LGEsYn1tbWludHJpbi5oLCBtbTNkbm93LmggYW5kIG1tX21hbGxvYy5oIGFyZQorKy8qIFRlc3Qg dGhhdCB7LHgsZSxwLHQscyx3LGEsYn1tbWludHJpbi5oLCBtbTNkbm93LmggYW5kIG1tX21hbGxv Yy5oIGFyZQorICAgIHVzYWJsZSB3aXRoIC1PIC1wZWRhbnRpYy1lcnJvcnMuICAqLworIC8qIHsg ZGctZG8gY29tcGlsZSB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworLS8qIHsg ZGctb3B0aW9ucyAiLU8gLXBlZGFudGljLWVycm9ycyAtbWFyY2g9azggLW0zZG5vdyAtbXNzZTQg LW1zc2U1IiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTyAtcGVkYW50aWMtZXJyb3JzIC1tYXJj aD1rOCAtbTNkbm93IC1tc3NlNCAtbXNzZTUgLW1hZXMgLW1wY2xtdWwiIH0gKi8KKyAKKysjaW5j bHVkZSA8d21taW50cmluLmg+CisgI2luY2x1ZGUgPGJtbWludHJpbi5oPgorICNpbmNsdWRlIDxz bW1pbnRyaW4uaD4KKyAjaW5jbHVkZSA8bW0zZG5vdy5oPgorLS0tIGdjYy90ZXN0c3VpdGUvZysr LmRnL290aGVyL2kzODYtMy5DCShyZXZpc2lvbiAxMzM5MDEpCisrKysgZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvb3RoZXIvaTM4Ni0zLkMJKHJldmlzaW9uIDEzMzkwMikKK0BAIC0xLDggKzEsOSBAQAor LS8qIFRlc3QgdGhhdCB7LHgsZSxwLHQscyxhLGJ9bW1pbnRyaW4uaCwgbW0zZG5vdy5oIGFuZCBt bV9tYWxsb2MuaCBhcmUKKysvKiBUZXN0IHRoYXQgeyx4LGUscCx0LHMsdyxhLGJ9bW1pbnRyaW4u aCwgbW0zZG5vdy5oIGFuZCBtbV9tYWxsb2MuaCBhcmUKKyAgICB1c2FibGUgd2l0aCAtTyAtZmtl ZXAtaW5saW5lLWZ1bmN0aW9ucy4gICovCisgLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGk/ ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCistLyogeyBkZy1vcHRpb25zICItTyAtZmtlZXAtaW5s aW5lLWZ1bmN0aW9ucyAtbWFyY2g9azggLW0zZG5vdyAtbXNzZTQgLW1zc2U1IiB9ICovCisrLyog eyBkZy1vcHRpb25zICItTyAtZmtlZXAtaW5saW5lLWZ1bmN0aW9ucyAtbWFyY2g9azggLW0zZG5v dyAtbWFlcyAtbXBjbG11bCAtbXNzZTQgLW1zc2U1IiB9ICovCisgCisrI2luY2x1ZGUgPHdtbWlu dHJpbi5oPgorICNpbmNsdWRlIDxibW1pbnRyaW4uaD4KKyAjaW5jbHVkZSA8c21taW50cmluLmg+ CisgI2luY2x1ZGUgPG1tM2Rub3cuaD4KCmRpZmYgLS1naXQgYS9nY2M0My1wcjI5NjA5LnBhdGNo IGIvZ2NjNDMtcHIyOTYwOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4xYThkZmJmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDMtcHIyOTYwOS5wYXRjaApAQCAtMCww ICsxLDg5OSBAQAorMjAwOC0xMC0wOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+ CisKKwkqIGNmZ2V4cGFuZC5jIChleHBhbmRfZ2ltcGxlX2NvbmRfZXhwcik6IENvbnZlcnQgYWxz byBnb3RvX2Jsb2NrIGFuZAorCWdvdG9fbG9jdXMgb2YgdHJ1ZV9lZGdlIGludG8gUlRMIGxvY2F0 b3IuCisKKzIwMDgtMTAtMDcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJ UFIgZGVidWcvMjk2MDkKKwlQUiBkZWJ1Zy8zNjY5MAorCVBSIGRlYnVnLzM3NjE2CisJKiBiYXNp Yy1ibG9jay5oIChzdHJ1Y3QgZWRnZV9kZWYpOiBBZGQgZ290b19ibG9jayBmaWVsZC4KKwkqIGNm Z2xheW91dC5jIChmaXh1cF9yZW9yZGVyX2NoYWluKTogRW5zdXJlIHRoYXQgdGhlcmUgaXMgYXQg bGVhc3QKKwlvbmUgaW5zbiB3aXRoIGxvY3VzIGNvcnJlc3BvbmRpbmcgdG8gZWRnZSdzIGdvdG9f bG9jdXMgaWYgIW9wdGltaXplLgorCSogcHJvZmlsZS5jIChicmFuY2hfcHJvYik6IENvcHkgZWRn ZSdzIGdvdG9fYmxvY2suCisJKiBjZmdydGwuYyAoZm9yY2Vfbm9uZmFsbHRocnVfYW5kX3JlZGly ZWN0KTogVXNlIGdvdG9fbG9jdXMgZm9yCisJZW1pdHRlZCBqdW1wcy4KKwkoY2ZnX2xheW91dF9t ZXJnZV9ibG9ja3MpOiBFbWl0IGEgbm9wIHdpdGggZWRnZSdzIGdvdG9fbG9jdXMKKwlsb2NhdG9y IGluIGJldHdlZW4gdGhlIG1lcmdlZCBiYXNpYyBibG9ja3MgaWYgIW9wdGltaXplIGFuZCBuZWVk ZWQuCisJKiBjZmdleHBhbmQuYyAoZXhwYW5kX2dpbXBsZV9jb25kX2V4cHIpOiBDb252ZXJ0IGdv dG9fYmxvY2sgYW5kCisJZ290b19sb2N1cyBpbnRvIFJUTCBsb2NhdG9yLiAgRm9yIHVuY29uZGl0 aW9uYWwganVtcCB1c2UgdGhhdAorCWxvY2F0b3IgZm9yIHRoZSBqdW1wIGluc24uCisJKGV4cGFu ZF9naW1wbGVfYmFzaWNfYmxvY2spOiBDb252ZXJ0IGdvdG9fYmxvY2sgYW5kIGdvdG9fbG9jdXMg aW50bworCVJUTCBsb2NhdG9yIGZvciBhbGwgcmVtYWluaW5nIGVkZ2VzLiAgRm9yIHVuY29uZGl0 aW9uYWwganVtcAorCXVzZSB0aGF0IGxvY2F0b3IgZm9yIHRoZSBqdW1wIGluc24uCisJKiBjZmdj bGVhbnVwLmMgKHRyeV9mb3J3YXJkX2VkZ2VzKTogQXZvaWQgdGhlIG9wdGltaXphdGlvbiBpZgor CXRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZWRnZSBvciBpbnNuIGxvY2F0b3IgYWxvbmcgdGhlIGZv cndhcmRpbmcKKwllZGdlcyBhbmQgIW9wdGltaXplLiAgSWYgdGhlcmUgaXMganVzdCBvbmUsIHNl dCBlLT5nb3RvX2xvY3VzLgorCSogdHJlZS1jZmcuYyAobWFrZV9jb25kX2V4cHJfZWRnZXMsIG1h a2VfZ290b19leHByX2VkZ2VzKTogU2V0IGFsc28KKwllZGdlJ3MgZ290b19ibG9jay4KKwkobW92 ZV9ibG9ja190b19mbik6IEFkanVzdCBlZGdlJ3MgZ290b19ibG9jay4KKworCSogZ2NjLmRnL2Rl YnVnL3ByMjk2MDktMS5jOiBOZXcgdGVzdC4KKwkqIGdjYy5kZy9kZWJ1Zy9wcjI5NjA5LTIuYzog TmV3IHRlc3QuCisJKiBnY2MuZGcvZGVidWcvcHIzNjY5MC0xLmM6IE5ldyB0ZXN0LgorCSogZ2Nj LmRnL2RlYnVnL3ByMzY2OTAtMi5jOiBOZXcgdGVzdC4KKwkqIGdjYy5kZy9kZWJ1Zy9wcjM2Njkw LTMuYzogTmV3IHRlc3QuCisJKiBnY2MuZGcvZGVidWcvcHIzNzYxNi5jOiBOZXcgdGVzdC4KKwkq IGdjYy5kZy9kZWJ1Zy9kd2FyZjIvcHIyOTYwOS0xLmM6IE5ldyB0ZXN0LgorCSogZ2NjLmRnL2Rl YnVnL2R3YXJmMi9wcjI5NjA5LTIuYzogTmV3IHRlc3QuCisJKiBnY2MuZGcvZGVidWcvZHdhcmYy L3ByMzY2OTAtMS5jOiBOZXcgdGVzdC4KKwkqIGdjYy5kZy9kZWJ1Zy9kd2FyZjIvcHIzNjY5MC0y LmM6IE5ldyB0ZXN0LgorCSogZ2NjLmRnL2RlYnVnL2R3YXJmMi9wcjM2NjkwLTMuYzogTmV3IHRl c3QuCisJKiBnY2MuZGcvZGVidWcvZHdhcmYyL3ByMzc2MTYuYzogTmV3IHRlc3QuCisKKy0tLSBn Y2MvcHJvZmlsZS5jCShyZXZpc2lvbiAxNDA5NDcpCisrKysgZ2NjL3Byb2ZpbGUuYwkocmV2aXNp b24gMTQwOTQ4KQorQEAgLTgyNSw3ICs4MjUsOSBAQCBicmFuY2hfcHJvYiAodm9pZCkKKyAjZW5k aWYKKyAJICAgIHsKKyAJICAgICAgYmFzaWNfYmxvY2sgbmV3ID0gc3BsaXRfZWRnZSAoZSk7Cist CSAgICAgIHNpbmdsZV9zdWNjX2VkZ2UgKG5ldyktPmdvdG9fbG9jdXMgPSBlLT5nb3RvX2xvY3Vz OworKwkgICAgICBlZGdlIG5lID0gc2luZ2xlX3N1Y2NfZWRnZSAobmV3KTsKKysJICAgICAgbmUt PmdvdG9fbG9jdXMgPSBlLT5nb3RvX2xvY3VzOworKwkgICAgICBuZS0+Z290b19ibG9jayA9IGUt PmdvdG9fYmxvY2s7CisgCSAgICB9CisgCSAgaWYgKChlLT5mbGFncyAmIChFREdFX0FCTk9STUFM IHwgRURHRV9BQk5PUk1BTF9DQUxMKSkKKyAJICAgICAgICYmIGUtPmRlc3QgIT0gRVhJVF9CTE9D S19QVFIpCistLS0gZ2NjL2NmZ2V4cGFuZC5jCShyZXZpc2lvbiAxNDA5NDcpCisrKysgZ2NjL2Nm Z2V4cGFuZC5jCShyZXZpc2lvbiAxNDA5NDgpCitAQCAtMTMxNiw3ICsxMzE2LDEyIEBAIGV4cGFu ZF9naW1wbGVfY29uZF9leHByIChiYXNpY19ibG9jayBiYiwKKyAgICAgICBhZGRfcmVnX2JyX3By b2Jfbm90ZSAobGFzdCwgdHJ1ZV9lZGdlLT5wcm9iYWJpbGl0eSk7CisgICAgICAgbWF5YmVfZHVt cF9ydGxfZm9yX3RyZWVfc3RtdCAoc3RtdCwgbGFzdCk7CisgICAgICAgaWYgKHRydWVfZWRnZS0+ Z290b19sb2N1cykKKy0gIAlzZXRfY3Vycl9pbnNuX3NvdXJjZV9sb2NhdGlvbiAobG9jYXRpb25f ZnJvbV9sb2N1cyAodHJ1ZV9lZGdlLT5nb3RvX2xvY3VzKSk7CisrCXsKKysJICBzZXRfY3Vycl9p bnNuX3NvdXJjZV9sb2NhdGlvbiAobG9jYXRpb25fZnJvbV9sb2N1cyAodHJ1ZV9lZGdlLT5nb3Rv X2xvY3VzKSk7CisrCSAgc2V0X2N1cnJfaW5zbl9ibG9jayAodHJ1ZV9lZGdlLT5nb3RvX2Jsb2Nr KTsKKysJICB0cnVlX2VkZ2UtPmdvdG9fbG9jdXMgPSBjdXJyX2luc25fbG9jYXRvciAoKTsKKysJ fQorKyAgICAgIHRydWVfZWRnZS0+Z290b19ibG9jayA9IE5VTEw7CisgICAgICAgZmFsc2VfZWRn ZS0+ZmxhZ3MgfD0gRURHRV9GQUxMVEhSVTsKKyAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgfQor QEAgLTEzMjYsNyArMTMzMSwxMiBAQCBleHBhbmRfZ2ltcGxlX2NvbmRfZXhwciAoYmFzaWNfYmxv Y2sgYmIsCisgICAgICAgYWRkX3JlZ19icl9wcm9iX25vdGUgKGxhc3QsIGZhbHNlX2VkZ2UtPnBy b2JhYmlsaXR5KTsKKyAgICAgICBtYXliZV9kdW1wX3J0bF9mb3JfdHJlZV9zdG10IChzdG10LCBs YXN0KTsKKyAgICAgICBpZiAoZmFsc2VfZWRnZS0+Z290b19sb2N1cykKKy0gIAlzZXRfY3Vycl9p bnNuX3NvdXJjZV9sb2NhdGlvbiAobG9jYXRpb25fZnJvbV9sb2N1cyAoZmFsc2VfZWRnZS0+Z290 b19sb2N1cykpOworKwl7CisrCSAgc2V0X2N1cnJfaW5zbl9zb3VyY2VfbG9jYXRpb24gKGxvY2F0 aW9uX2Zyb21fbG9jdXMgKGZhbHNlX2VkZ2UtPmdvdG9fbG9jdXMpKTsKKysJICBzZXRfY3Vycl9p bnNuX2Jsb2NrIChmYWxzZV9lZGdlLT5nb3RvX2Jsb2NrKTsKKysJICBmYWxzZV9lZGdlLT5nb3Rv X2xvY3VzID0gY3Vycl9pbnNuX2xvY2F0b3IgKCk7CisrCX0KKysgICAgICBmYWxzZV9lZGdlLT5n b3RvX2Jsb2NrID0gTlVMTDsKKyAgICAgICB0cnVlX2VkZ2UtPmZsYWdzIHw9IEVER0VfRkFMTFRI UlU7CisgICAgICAgcmV0dXJuIE5VTEw7CisgICAgIH0KK0BAIC0xMzM0LDYgKzEzNDQsMTMgQEAg ZXhwYW5kX2dpbXBsZV9jb25kX2V4cHIgKGJhc2ljX2Jsb2NrIGJiLAorICAganVtcGlmIChwcmVk LCBsYWJlbF9ydHhfZm9yX2JiICh0cnVlX2VkZ2UtPmRlc3QpKTsKKyAgIGFkZF9yZWdfYnJfcHJv Yl9ub3RlIChsYXN0LCB0cnVlX2VkZ2UtPnByb2JhYmlsaXR5KTsKKyAgIGxhc3QgPSBnZXRfbGFz dF9pbnNuICgpOworKyAgaWYgKGZhbHNlX2VkZ2UtPmdvdG9fbG9jdXMpCisrICAgIHsKKysgICAg ICBzZXRfY3Vycl9pbnNuX3NvdXJjZV9sb2NhdGlvbiAobG9jYXRpb25fZnJvbV9sb2N1cyAoZmFs c2VfZWRnZS0+Z290b19sb2N1cykpOworKyAgICAgIHNldF9jdXJyX2luc25fYmxvY2sgKGZhbHNl X2VkZ2UtPmdvdG9fYmxvY2spOworKyAgICAgIGZhbHNlX2VkZ2UtPmdvdG9fbG9jdXMgPSBjdXJy X2luc25fbG9jYXRvciAoKTsKKysgICAgfQorKyAgZmFsc2VfZWRnZS0+Z290b19ibG9jayA9IE5V TEw7CisgICBlbWl0X2p1bXAgKGxhYmVsX3J0eF9mb3JfYmIgKGZhbHNlX2VkZ2UtPmRlc3QpKTsK KyAKKyAgIEJCX0VORCAoYmIpID0gbGFzdDsKK0BAIC0xMzU2LDkgKzEzNzMsMTMgQEAgZXhwYW5k X2dpbXBsZV9jb25kX2V4cHIgKGJhc2ljX2Jsb2NrIGJiLAorIAorICAgbWF5YmVfZHVtcF9ydGxf Zm9yX3RyZWVfc3RtdCAoc3RtdCwgbGFzdDIpOworIAorLSAgaWYgKGZhbHNlX2VkZ2UtPmdvdG9f bG9jdXMpCistICAgIHNldF9jdXJyX2luc25fc291cmNlX2xvY2F0aW9uIChsb2NhdGlvbl9mcm9t X2xvY3VzIChmYWxzZV9lZGdlLT5nb3RvX2xvY3VzKSk7CistCisrICBpZiAodHJ1ZV9lZGdlLT5n b3RvX2xvY3VzKQorKyAgICB7CisrICAgICAgc2V0X2N1cnJfaW5zbl9zb3VyY2VfbG9jYXRpb24g KGxvY2F0aW9uX2Zyb21fbG9jdXMgKHRydWVfZWRnZS0+Z290b19sb2N1cykpOworKyAgICAgIHNl dF9jdXJyX2luc25fYmxvY2sgKHRydWVfZWRnZS0+Z290b19ibG9jayk7CisrICAgICAgdHJ1ZV9l ZGdlLT5nb3RvX2xvY3VzID0gY3Vycl9pbnNuX2xvY2F0b3IgKCk7CisrICAgIH0KKysgIHRydWVf ZWRnZS0+Z290b19ibG9jayA9IE5VTEw7CisgICByZXR1cm4gbmV3X2JiOworIH0KKyAKK0BAIC0x NjEzLDE5ICsxNjM0LDIxIEBAIGV4cGFuZF9naW1wbGVfYmFzaWNfYmxvY2sgKGJhc2ljX2Jsb2Nr IGIKKyAJfQorICAgICB9CisgCistICAvKiBFeHBhbmQgaW1wbGljaXQgZ290by4gICovCisrICAv KiBFeHBhbmQgaW1wbGljaXQgZ290byBhbmQgY29udmVydCBnb3RvX2xvY3VzLiAgKi8KKyAgIEZP Ul9FQUNIX0VER0UgKGUsIGVpLCBiYi0+c3VjY3MpCisgICAgIHsKKy0gICAgICBpZiAoZS0+Zmxh Z3MgJiBFREdFX0ZBTExUSFJVKQorLQlicmVhazsKKy0gICAgfQorLQorLSAgaWYgKGUgJiYgZS0+ ZGVzdCAhPSBiYi0+bmV4dF9iYikKKy0gICAgeworLSAgICAgIGVtaXRfanVtcCAobGFiZWxfcnR4 X2Zvcl9iYiAoZS0+ZGVzdCkpOworLSAgICAgIGlmIChlLT5nb3RvX2xvY3VzKQorLSAgICAgICAg c2V0X2N1cnJfaW5zbl9zb3VyY2VfbG9jYXRpb24gKGxvY2F0aW9uX2Zyb21fbG9jdXMgKGUtPmdv dG9fbG9jdXMpKTsKKy0gICAgICBlLT5mbGFncyAmPSB+RURHRV9GQUxMVEhSVTsKKysgICAgICBp ZiAoZS0+Z290b19sb2N1cyAmJiBlLT5nb3RvX2Jsb2NrKQorKwl7CisrCSAgc2V0X2N1cnJfaW5z bl9zb3VyY2VfbG9jYXRpb24gKGxvY2F0aW9uX2Zyb21fbG9jdXMgKGUtPmdvdG9fbG9jdXMpKTsK KysJICBzZXRfY3Vycl9pbnNuX2Jsb2NrIChlLT5nb3RvX2Jsb2NrKTsKKysJICBlLT5nb3RvX2xv Y3VzID0gY3Vycl9pbnNuX2xvY2F0b3IgKCk7CisrCX0KKysgICAgICBlLT5nb3RvX2Jsb2NrID0g TlVMTDsKKysgICAgICBpZiAoKGUtPmZsYWdzICYgRURHRV9GQUxMVEhSVSkgJiYgZS0+ZGVzdCAh PSBiYi0+bmV4dF9iYikKKysJeworKwkgIGVtaXRfanVtcCAobGFiZWxfcnR4X2Zvcl9iYiAoZS0+ ZGVzdCkpOworKwkgIGUtPmZsYWdzICY9IH5FREdFX0ZBTExUSFJVOworKwl9CisgICAgIH0KKyAK KyAgIGRvX3BlbmRpbmdfc3RhY2tfYWRqdXN0ICgpOworLS0tIGdjYy9jZmdjbGVhbnVwLmMJKHJl dmlzaW9uIDE0MDk0NykKKysrKyBnY2MvY2ZnY2xlYW51cC5jCShyZXZpc2lvbiAxNDA5NDgpCitA QCAtNDI5LDcgKzQyOSw3IEBAIHRyeV9mb3J3YXJkX2VkZ2VzIChpbnQgbW9kZSwgYmFzaWNfYmxv Y2sKKyAgIGZvciAoZWkgPSBlaV9zdGFydCAoYi0+c3VjY3MpOyAoZSA9IGVpX3NhZmVfZWRnZSAo ZWkpKTsgKQorICAgICB7CisgICAgICAgYmFzaWNfYmxvY2sgdGFyZ2V0LCBmaXJzdDsKKy0gICAg ICBpbnQgY291bnRlcjsKKysgICAgICBpbnQgY291bnRlciwgZ290b19sb2N1czsKKyAgICAgICBi b29sIHRocmVhZGVkID0gZmFsc2U7CisgICAgICAgaW50IG50aHJlYWRlZF9lZGdlcyA9IDA7Cisg ICAgICAgYm9vbCBtYXlfdGhyZWFkID0gZmlyc3RfcGFzcyB8IGRmX2dldF9iYl9kaXJ0eSAoYik7 CitAQCAtNDQ3LDYgKzQ0Nyw3IEBAIHRyeV9mb3J3YXJkX2VkZ2VzIChpbnQgbW9kZSwgYmFzaWNf YmxvY2sKKyAKKyAgICAgICB0YXJnZXQgPSBmaXJzdCA9IGUtPmRlc3Q7CisgICAgICAgY291bnRl ciA9IE5VTV9GSVhFRF9CTE9DS1M7CisrICAgICAgZ290b19sb2N1cyA9IGUtPmdvdG9fbG9jdXM7 CisgCisgICAgICAgLyogSWYgd2UgYXJlIHBhcnRpdGlvbmluZyBob3QvY29sZCBiYXNpY19ibG9j a3MsIHdlIGRvbid0IHdhbnQgdG8gbWVzcworIAkgdXAganVtcHMgdGhhdCBjcm9zcyBiZXR3ZWVu IGhvdC9jb2xkIHNlY3Rpb25zLgorQEAgLTQ3Niw2ICs0NzcsMjcgQEAgdHJ5X2ZvcndhcmRfZWRn ZXMgKGludCBtb2RlLCBiYXNpY19ibG9jaworIAkgICAgICBuZXdfdGFyZ2V0ID0gc2luZ2xlX3N1 Y2MgKHRhcmdldCk7CisgCSAgICAgIGlmICh0YXJnZXQgPT0gbmV3X3RhcmdldCkKKyAJCWNvdW50 ZXIgPSBuX2Jhc2ljX2Jsb2NrczsKKysJICAgICAgZWxzZSBpZiAoIW9wdGltaXplKQorKwkJewor KwkJICAvKiBXaGVuIG5vdCBvcHRpbWl6aW5nLCBlbnN1cmUgdGhhdCBlZGdlcyBvciBmb3J3YXJk ZXIKKysJCSAgICAgYmxvY2tzIHdpdGggZGlmZmVyZW50IGxvY3VzIGFyZSBub3Qgb3B0aW1pemVk IG91dC4gICovCisrCQkgIGludCBsb2N1cyA9IHNpbmdsZV9zdWNjX2VkZ2UgKHRhcmdldCktPmdv dG9fbG9jdXM7CisrCisrCQkgIGlmIChsb2N1cyAmJiBnb3RvX2xvY3VzICYmIGxvY3VzICE9IGdv dG9fbG9jdXMpCisrCQkgICAgY291bnRlciA9IG5fYmFzaWNfYmxvY2tzOworKwkJICBlbHNlIGlm IChsb2N1cykKKysJCSAgICBnb3RvX2xvY3VzID0gbG9jdXM7CisrCisrCQkgIGlmIChJTlNOX1Ag KEJCX0VORCAodGFyZ2V0KSkpCisrCQkgICAgeworKwkJICAgICAgbG9jdXMgPSBJTlNOX0xPQ0FU T1IgKEJCX0VORCAodGFyZ2V0KSk7CisrCisrCQkgICAgICBpZiAobG9jdXMgJiYgZ290b19sb2N1 cyAmJiBsb2N1cyAhPSBnb3RvX2xvY3VzKQorKwkJCWNvdW50ZXIgPSBuX2Jhc2ljX2Jsb2NrczsK KysJCSAgICAgIGVsc2UgaWYgKGxvY3VzKQorKwkJCWdvdG9fbG9jdXMgPSBsb2N1czsKKysJCSAg ICB9CisrCQl9CisgCSAgICB9CisgCisgCSAgLyogQWxsb3cgdG8gdGhyZWFkIG9ubHkgb3ZlciBv bmUgZWRnZSBhdCB0aW1lIHRvIHNpbXBsaWZ5IHVwZGF0aW5nCitAQCAtNTM5LDYgKzU2MSw4IEBA IHRyeV9mb3J3YXJkX2VkZ2VzIChpbnQgbW9kZSwgYmFzaWNfYmxvY2sKKyAJICBpbnQgZWRnZV9m cmVxdWVuY3k7CisgCSAgaW50IG4gPSAwOworIAorKwkgIGUtPmdvdG9fbG9jdXMgPSBnb3RvX2xv Y3VzOworKworIAkgIC8qIERvbid0IGZvcmNlIGlmIHRhcmdldCBpcyBleGl0IGJsb2NrLiAgKi8K KyAJICBpZiAodGhyZWFkZWQgJiYgdGFyZ2V0ICE9IEVYSVRfQkxPQ0tfUFRSKQorIAkgICAgewor LS0tIGdjYy9jZmdsYXlvdXQuYwkocmV2aXNpb24gMTQwOTQ3KQorKysrIGdjYy9jZmdsYXlvdXQu YwkocmV2aXNpb24gMTQwOTQ4KQorQEAgLTg4Nyw2ICs4ODcsNDYgQEAgZml4dXBfcmVvcmRlcl9j aGFpbiAodm9pZCkKKyAgICAgICBpZiAoZSAmJiAhY2FuX2ZhbGx0aHJ1IChlLT5zcmMsIGUtPmRl c3QpKQorIAlmb3JjZV9ub25mYWxsdGhydSAoZSk7CisgICAgIH0KKysKKysgIC8qIEVuc3VyZSBn b3RvX2xvY3VzIGZyb20gZWRnZXMgaGFzIHNvbWUgaW5zdHJ1Y3Rpb25zIHdpdGggdGhhdCBsb2N1 cworKyAgICAgaW4gUlRMLiAgKi8KKysgIGlmICghb3B0aW1pemUpCisrICAgIEZPUl9FQUNIX0JC IChiYikKKysgICAgICB7CisrICAgICAgICBlZGdlIGU7CisrICAgICAgICBlZGdlX2l0ZXJhdG9y IGVpOworKworKyAgICAgICAgRk9SX0VBQ0hfRURHRSAoZSwgZWksIGJiLT5zdWNjcykKKysJICBp ZiAoZS0+Z290b19sb2N1cyAmJiAhKGUtPmZsYWdzICYgRURHRV9BQk5PUk1BTCkpCisrCSAgICB7 CisrCSAgICAgIGJhc2ljX2Jsb2NrIG5iOworKworKwkgICAgICBpZiAoc2ltcGxlanVtcF9wIChC Ql9FTkQgKGUtPnNyYykpKQorKwkJeworKwkJICBpZiAoSU5TTl9MT0NBVE9SIChCQl9FTkQgKGUt PnNyYykpID09IChpbnQpIGUtPmdvdG9fbG9jdXMpCisrCQkgICAgY29udGludWU7CisrCQkgIGlm IChJTlNOX0xPQ0FUT1IgKEJCX0VORCAoZS0+c3JjKSkgPT0gMCkKKysJCSAgICB7CisrCQkgICAg ICBJTlNOX0xPQ0FUT1IgKEJCX0VORCAoZS0+c3JjKSkgPSBlLT5nb3RvX2xvY3VzOworKwkJICAg ICAgY29udGludWU7CisrCQkgICAgfQorKwkJfQorKwkgICAgICBpZiAoZS0+ZGVzdCAhPSBFWElU X0JMT0NLX1BUUikKKysJCXsKKysJCSAgaW5zbiA9IEJCX0hFQUQgKGUtPmRlc3QpOworKwkJICBp ZiAoIUlOU05fUCAoaW5zbikpCisrCQkgICAgaW5zbiA9IG5leHRfaW5zbiAoaW5zbik7CisrCQkg IGlmIChpbnNuICYmIElOU05fUCAoaW5zbikKKysJCSAgICAgICYmIElOU05fTE9DQVRPUiAoaW5z bikgPT0gKGludCkgZS0+Z290b19sb2N1cykKKysJCSAgICBjb250aW51ZTsKKysJCX0KKysJICAg ICAgbmIgPSBzcGxpdF9lZGdlIChlKTsKKysJICAgICAgaWYgKCFJTlNOX1AgKEJCX0VORCAobmIp KSkKKysJCUJCX0VORCAobmIpID0gZW1pdF9pbnNuX2FmdGVyX25vbG9jIChnZW5fbm9wICgpLCBC Ql9FTkQgKG5iKSwKKysJCQkJCQkgICAgIG5iKTsKKysJICAgICAgSU5TTl9MT0NBVE9SIChCQl9F TkQgKG5iKSkgPSBlLT5nb3RvX2xvY3VzOworKwkgICAgfQorKyAgICAgIH0KKyB9CisgDAorIC8q IFBlcmZvcm0gc2FuaXR5IGNoZWNrcyBvbiB0aGUgaW5zbiBjaGFpbi4KKy0tLSBnY2MvYmFzaWMt YmxvY2suaAkocmV2aXNpb24gMTQwOTQ3KQorKysrIGdjYy9iYXNpYy1ibG9jay5oCShyZXZpc2lv biAxNDA5NDgpCitAQCAtMTI5LDcgKzEyOSw4IEBAIHN0cnVjdCBlZGdlX2RlZiBHVFkoKCkpCisg ICAvKiBBdXhpbGlhcnkgaW5mbyBzcGVjaWZpYyB0byBhIHBhc3MuICAqLworICAgUFRSIEdUWSAo KHNraXAgKCIiKSkpIGF1eDsKKyAKKy0gIC8qIExvY2F0aW9uIG9mIGFueSBnb3RvIGltcGxpY2l0 IGluIHRoZSBlZGdlLCBkdXJpbmcgdHJlZS1zc2EuICAqLworKyAgLyogTG9jYXRpb24gb2YgYW55 IGdvdG8gaW1wbGljaXQgaW4gdGhlIGVkZ2UgYW5kIGFzc29jaWF0ZWQgQkxPQ0suICAqLworKyAg dHJlZSBnb3RvX2Jsb2NrOworICAgc291cmNlX2xvY3VzIGdvdG9fbG9jdXM7CisgCisgICAvKiBU aGUgaW5kZXggbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBlZGdlIGluIHRoZSBlZGdlIHZl Y3RvcgorLS0tIGdjYy90cmVlLWNmZy5jCShyZXZpc2lvbiAxNDA5NDcpCisrKysgZ2NjL3RyZWUt Y2ZnLmMJKHJldmlzaW9uIDE0MDk0OCkKK0BAIC02MzQsNiArNjM0LDcgQEAgbWFrZV9jb25kX2V4 cHJfZWRnZXMgKGJhc2ljX2Jsb2NrIGJiKQorICNlbHNlCisgICBlLT5nb3RvX2xvY3VzID0gRVhQ Ul9MT0NVUyAoQ09ORF9FWFBSX1RIRU4gKGVudHJ5KSk7CisgI2VuZGlmCisrICBlLT5nb3RvX2Js b2NrID0gVFJFRV9CTE9DSyAoQ09ORF9FWFBSX1RIRU4gKGVudHJ5KSk7CisgICBlID0gbWFrZV9l ZGdlIChiYiwgZWxzZV9iYiwgRURHRV9GQUxTRV9WQUxVRSk7CisgICBpZiAoZSkKKyAgICAgewor QEAgLTY0Miw2ICs2NDMsNyBAQCBtYWtlX2NvbmRfZXhwcl9lZGdlcyAoYmFzaWNfYmxvY2sgYmIp CisgI2Vsc2UKKyAgICAgICBlLT5nb3RvX2xvY3VzID0gRVhQUl9MT0NVUyAoQ09ORF9FWFBSX0VM U0UgKGVudHJ5KSk7CisgI2VuZGlmCisrICAgICAgZS0+Z290b19ibG9jayA9IFRSRUVfQkxPQ0sg KENPTkRfRVhQUl9FTFNFIChlbnRyeSkpOworICAgICB9CisgCisgICAvKiBXZSBkbyBub3QgbmVl ZCB0aGUgZ290b3MgYW55bW9yZS4gICovCitAQCAtODQxLDYgKzg0Myw3IEBAIG1ha2VfZ290b19l eHByX2VkZ2VzIChiYXNpY19ibG9jayBiYikKKyAjZWxzZQorICAgICAgIGUtPmdvdG9fbG9jdXMg PSBFWFBSX0xPQ1VTIChnb3RvX3QpOworICNlbmRpZgorKyAgICAgIGUtPmdvdG9fYmxvY2sgPSBU UkVFX0JMT0NLIChnb3RvX3QpOworICAgICAgIGJzaV9yZW1vdmUgKCZsYXN0LCB0cnVlKTsKKyAg ICAgICByZXR1cm47CisgICAgIH0KK0BAIC01ODc0LDYgKzU4NzcsMjMgQEAgbW92ZV9ibG9ja190 b19mbiAoc3RydWN0IGZ1bmN0aW9uICpkZXN0XworICAgICAgIHVwZGF0ZV9zdG10IChzdG10KTsK KyAgICAgICBwb3BfY2Z1biAoKTsKKyAgICAgfQorKworKyAgRk9SX0VBQ0hfRURHRSAoZSwgZWks IGJiLT5zdWNjcykKKysgICAgaWYgKGUtPmdvdG9fbG9jdXMpCisrICAgICAgeworKwl0cmVlIGJs b2NrID0gZS0+Z290b19ibG9jazsKKysJaWYgKGQtPm9yaWdfYmxvY2sgPT0gTlVMTF9UUkVFCisr CSAgICB8fCBibG9jayA9PSBkLT5vcmlnX2Jsb2NrKQorKwkgIGUtPmdvdG9fYmxvY2sgPSBkLT5u ZXdfYmxvY2s7CisrI2lmZGVmIEVOQUJMRV9DSEVDS0lORworKwllbHNlIGlmIChibG9jayAhPSBk LT5uZXdfYmxvY2spCisrCSAgeworKwkgICAgd2hpbGUgKGJsb2NrICYmIGJsb2NrICE9IGQtPm9y aWdfYmxvY2spCisrCSAgICAgIGJsb2NrID0gQkxPQ0tfU1VQRVJDT05URVhUIChibG9jayk7Cisr CSAgICBnY2NfYXNzZXJ0IChibG9jayk7CisrCSAgfQorKyNlbmRpZgorKyAgICAgIH0KKyB9Cisg CisgLyogRXhhbWluZSB0aGUgc3RhdGVtZW50cyBpbiBCQiAod2hpY2ggaXMgaW4gU1JDX0NGVU4p OyBmaW5kIGFuZCByZXR1cm4KKy0tLSBnY2MvY2ZncnRsLmMJKHJldmlzaW9uIDE0MDk0NykKKysr KyBnY2MvY2ZncnRsLmMJKHJldmlzaW9uIDE0MDk0OCkKK0BAIC0xMDA5LDYgKzEwMDksNyBAQCBm b3JjZV9ub25mYWxsdGhydV9hbmRfcmVkaXJlY3QgKGVkZ2UgZSwgCisgICBydHggbm90ZTsKKyAg IGVkZ2UgbmV3X2VkZ2U7CisgICBpbnQgYWJub3JtYWxfZWRnZV9mbGFncyA9IDA7CisrICBpbnQg bG9jOworIAorICAgLyogSW4gdGhlIGNhc2UgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gaXMgY29uZGl0 aW9uYWwganVtcCB0byB0aGUgbmV4dAorICAgICAgaW5zdHJ1Y3Rpb24sIGZpcnN0IHJlZGlyZWN0 IHRoZSBqdW1wIGl0c2VsZiBhbmQgdGhlbiBjb250aW51ZQorQEAgLTExMjcsMTEgKzExMjgsMTUg QEAgZm9yY2Vfbm9uZmFsbHRocnVfYW5kX3JlZGlyZWN0IChlZGdlIGUsIAorICAgZWxzZQorICAg ICBqdW1wX2Jsb2NrID0gZS0+c3JjOworIAorKyAgaWYgKGUtPmdvdG9fbG9jdXMgJiYgZS0+Z290 b19ibG9jayA9PSBOVUxMKQorKyAgICBsb2MgPSBlLT5nb3RvX2xvY3VzOworKyAgZWxzZQorKyAg ICBsb2MgPSAwOworICAgZS0+ZmxhZ3MgJj0gfkVER0VfRkFMTFRIUlU7CisgICBpZiAodGFyZ2V0 ID09IEVYSVRfQkxPQ0tfUFRSKQorICAgICB7CisgI2lmZGVmIEhBVkVfcmV0dXJuCistCWVtaXRf anVtcF9pbnNuX2FmdGVyX25vbG9jIChnZW5fcmV0dXJuICgpLCBCQl9FTkQgKGp1bXBfYmxvY2sp KTsKKysJZW1pdF9qdW1wX2luc25fYWZ0ZXJfc2V0bG9jIChnZW5fcmV0dXJuICgpLCBCQl9FTkQg KGp1bXBfYmxvY2spLCBsb2MpOworICNlbHNlCisgCWdjY191bnJlYWNoYWJsZSAoKTsKKyAjZW5k aWYKK0BAIC0xMTM5LDcgKzExNDQsNyBAQCBmb3JjZV9ub25mYWxsdGhydV9hbmRfcmVkaXJlY3Qg KGVkZ2UgZSwgCisgICBlbHNlCisgICAgIHsKKyAgICAgICBydHggbGFiZWwgPSBibG9ja19sYWJl bCAodGFyZ2V0KTsKKy0gICAgICBlbWl0X2p1bXBfaW5zbl9hZnRlcl9ub2xvYyAoZ2VuX2p1bXAg KGxhYmVsKSwgQkJfRU5EIChqdW1wX2Jsb2NrKSk7CisrICAgICAgZW1pdF9qdW1wX2luc25fYWZ0 ZXJfc2V0bG9jIChnZW5fanVtcCAobGFiZWwpLCBCQl9FTkQgKGp1bXBfYmxvY2spLCBsb2MpOwor ICAgICAgIEpVTVBfTEFCRUwgKEJCX0VORCAoanVtcF9ibG9jaykpID0gbGFiZWw7CisgICAgICAg TEFCRUxfTlVTRVMgKGxhYmVsKSsrOworICAgICB9CitAQCAtMjYwNiw2ICsyNjExLDMyIEBAIGNm Z19sYXlvdXRfbWVyZ2VfYmxvY2tzIChiYXNpY19ibG9jayBhLCAKKyAgICAgdHJ5X3JlZGlyZWN0 X2J5X3JlcGxhY2luZ19qdW1wIChFREdFX1NVQ0MgKGEsIDApLCBiLCB0cnVlKTsKKyAgIGdjY19h c3NlcnQgKCFKVU1QX1AgKEJCX0VORCAoYSkpKTsKKyAKKysgIC8qIFdoZW4gbm90IG9wdGltaXpp bmcgYW5kIHRoZSBlZGdlIGlzIHRoZSBvbmx5IHBsYWNlIGluIFJUTCB3aGljaCBob2xkcworKyAg ICAgc29tZSB1bmlxdWUgbG9jdXMsIGVtaXQgYSBub3Agd2l0aCB0aGF0IGxvY3VzIGluIGJldHdl ZW4uICAqLworKyAgaWYgKCFvcHRpbWl6ZSAmJiBFREdFX1NVQ0MgKGEsIDApLT5nb3RvX2xvY3Vz KQorKyAgICB7CisrICAgICAgcnR4IGluc24gPSBCQl9FTkQgKGEpOworKyAgICAgIGludCBnb3Rv X2xvY3VzID0gRURHRV9TVUNDIChhLCAwKS0+Z290b19sb2N1czsKKysKKysgICAgICBpZiAoTk9U RV9QIChpbnNuKSkKKysJaW5zbiA9IHByZXZfbm9ubm90ZV9pbnNuIChpbnNuKTsKKysgICAgICBp ZiAoaW5zbiAmJiBJTlNOX1AgKGluc24pICYmIElOU05fTE9DQVRPUiAoaW5zbikgPT0gZ290b19s b2N1cykKKysJZ290b19sb2N1cyA9IDA7CisrICAgICAgZWxzZQorKwl7CisrCSAgaW5zbiA9IEJC X0hFQUQgKGIpOworKwkgIGlmICghSU5TTl9QIChpbnNuKSkKKysJICAgIGluc24gPSBuZXh0X2lu c24gKGluc24pOworKwkgIGlmIChpbnNuICYmIElOU05fUCAoaW5zbikgJiYgSU5TTl9MT0NBVE9S IChpbnNuKSA9PSBnb3RvX2xvY3VzKQorKwkgICAgZ290b19sb2N1cyA9IDA7CisrCX0KKysgICAg ICBpZiAoZ290b19sb2N1cykKKysJeworKwkgIEJCX0VORCAoYSkgPSBlbWl0X2luc25fYWZ0ZXJf bm9sb2MgKGdlbl9ub3AgKCksIEJCX0VORCAoYSksIGEpOworKwkgIElOU05fTE9DQVRPUiAoQkJf RU5EIChhKSkgPSBnb3RvX2xvY3VzOworKwl9CisrICAgIH0KKysKKyAgIC8qIFBvc3NpYmxlIGxp bmUgbnVtYmVyIG5vdGVzIHNob3VsZCBhcHBlYXIgaW4gYmV0d2Vlbi4gICovCisgICBpZiAoYi0+ aWwucnRsLT5oZWFkZXIpCisgICAgIHsKKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy9w cjM2NjkwLTEuYwkocmV2aXNpb24gMCkKKysrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy9w cjM2NjkwLTEuYwkocmV2aXNpb24gMTQwOTQ4KQorQEAgLTAsMCArMSwyMyBAQAorKy8qIFBSIGRl YnVnLzM2NjkwICovCisrLyogVmVyaWZ5IHRoYXQgYnJlYWsgZnVuYyBpcyBoaXQuICAKKysgICBU aGlzIHZlcnNpb24gb2YgdGhlIHRlc3QganVzdCBjaGVja3MgdGhhdCBpdCBjYW4gYmUgY29tcGls ZWQsIGxpbmtlZAorKyAgIGFuZCBleGVjdXRlZCwgZnVydGhlciB0ZXN0aW5nIGlzIGRvbmUgaW4g Y29ycmVzcG9uZGluZyBnY2MuZGcvZHdhcmYyLworKyAgIHRlc3QgYW5kIGhvcGVmdWxseSBpbiBn ZGIgdGVzdHN1aXRlLiAgKi8KKysvKiB7IGRnLWRvIHJ1biB9ICovCisrLyogeyBkZy1vcHRpb25z ICItTzAgLWcgLWRBIiB9ICovCisrCisraW50IGk7CisrCisrdm9pZAorK2Z1bmMgKHZvaWQpCisr eworKyAgd2hpbGUgKGkgPT0gMSkKKysgICAgaSA9IDA7CisrfQorKworK2ludAorK21haW4gKHZv aWQpCisreworKyAgZnVuYyAoKTsKKysgIHJldHVybiAwOworK30KKy0tLSBnY2MvdGVzdHN1aXRl L2djYy5kZy9kZWJ1Zy9wcjM2NjkwLTIuYwkocmV2aXNpb24gMCkKKysrKyBnY2MvdGVzdHN1aXRl L2djYy5kZy9kZWJ1Zy9wcjM2NjkwLTIuYwkocmV2aXNpb24gMTQwOTQ4KQorQEAgLTAsMCArMSw0 MCBAQAorKy8qIFBSIGRlYnVnLzM2NjkwICovCisrLyogVmVyaWZ5IHRoYXQgYnJlYWtwb2ludCBj YW4gYmUgcHV0IG9uIGdvdG8gZjEsIGl0IGlzIGhpdCBhbmQKKysgICB2YXJ6IGF0IHRoYXQgc3Bv dCBpcyBkZWZpbmVkIGFuZCBjb250YWlucyA1LiAgTm93aGVyZSBlbHNlCisrICAgaW4gdGhlIGZ1 bmN0aW9uIHNob3VsZCBiZSB2YXJ6IGluIHRoZSBzY29wZS4KKysgICBUaGlzIHZlcnNpb24gb2Yg dGhlIHRlc3QganVzdCBjaGVja3MgdGhhdCBpdCBjYW4gYmUgY29tcGlsZWQsIGxpbmtlZAorKyAg IGFuZCBleGVjdXRlZCwgZnVydGhlciB0ZXN0aW5nIGlzIGRvbmUgaW4gY29ycmVzcG9uZGluZyBn Y2MuZGcvZHdhcmYyLworKyAgIHRlc3QgYW5kIGhvcGVmdWxseSBpbiBnZGIgdGVzdHN1aXRlLiAg Ki8KKysvKiB7IGRnLWRvIHJ1biB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzAgLWcgLWRBIiB9 ICovCisrCisraW50IGNudDsKKysKKyt2b2lkCisrYmFyIChpbnQgaSkKKyt7CisrICBjbnQgKz0g aTsKKyt9CisrCisrdm9pZAorK2ZvbyAoaW50IGkpCisreworKyAgaWYgKCFpKQorKyAgICBiYXIg KDApOworKyAgZWxzZQorKyAgICB7CisrICAgICAgc3RhdGljIGludCB2YXJ6ID0gNTsKKysgICAg ICBnb3RvIGYxOworKyAgICB9CisrICBiYXIgKDEpOworK2YxOgorKyAgYmFyICgyKTsKKyt9Cisr CisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICBmb28gKDApOworKyAgZm9vICgxKTsKKysgIHJl dHVybiAwOworK30KKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy9wcjI5NjA5LTEuYwko cmV2aXNpb24gMCkKKysrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy9wcjI5NjA5LTEuYwko cmV2aXNpb24gMTQwOTQ4KQorQEAgLTAsMCArMSwzMyBAQAorKy8qIFBSIGRlYnVnLzI5NjA5ICov CisrLyogVmVyaWZ5IHRoYXQgYnJlYWtwb2ludCBvbiB0aGUgYnJlYWsgaXMgaGl0LgorKyAgIFRo aXMgdmVyc2lvbiBvZiB0aGUgdGVzdCBqdXN0IGNoZWNrcyB0aGF0IGl0IGNhbiBiZSBjb21waWxl ZCwgbGlua2VkCisrICAgYW5kIGV4ZWN1dGVkLCBmdXJ0aGVyIHRlc3RpbmcgaXMgZG9uZSBpbiBj b3JyZXNwb25kaW5nIGdjYy5kZy9kd2FyZjIvCisrICAgdGVzdCBhbmQgaG9wZWZ1bGx5IGluIGdk YiB0ZXN0c3VpdGUuICAqLworKy8qIHsgZGctZG8gcnVuIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMg Ii1PMCAtZyAtZEEiIH0gKi8KKysKKytleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CisrCisraW50 CisrZm9vICh2b2lkKQorK3sKKysgIGludCBhLCBpOworKworKyAgZm9yIChpID0gMTsgaSA8PSAx MDsgaSsrKQorKyAgICB7CisrICAgICAgaWYgKGkgPCAzKQorKwlhID0gMTsKKysgICAgICBlbHNl CisrCWJyZWFrOworKyAgICAgIGEgPSA1OworKyAgICB9CisrICByZXR1cm4gYTsKKyt9CisrCisr aW50CisrbWFpbiAodm9pZCkKKyt7CisrICBpZiAoZm9vICgpICE9IDUpCisrICAgIGFib3J0ICgp OworKyAgcmV0dXJuIDA7CisrfQorLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2RlYnVnL3ByMzY2 OTAtMy5jCShyZXZpc2lvbiAwKQorKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2RlYnVnL3ByMzY2 OTAtMy5jCShyZXZpc2lvbiAxNDA5NDgpCitAQCAtMCwwICsxLDQ3IEBACisrLyogUFIgZGVidWcv MzY2OTAgKi8KKysvKiB7IGRnLWRvIHJ1biB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzAgLWcg LWRBIiB9ICovCisrCisraW50IGNudDsKKysKKyt2b2lkCisrYmFyIChpbnQgaSkKKyt7CisrICBj bnQgKz0gaTsKKyt9CisrCisrdm9pZAorK2ZvbyAoaW50IGksIGludCBqKQorK3sKKysgIGlmIChq KQorKyAgICB7CisrICAgICAgYmFyIChpICsgMSk7CisrICAgICAgZ290byBmMTsKKysgICAgfQor KyAgYmFyIChpICsgMik7CisrICBnb3RvIGYyOworK2YxOgorKyAgaWYgKGkgPiAxMCkKKysgICAg Z290byBmMzsKKytmMjoKKysgIGlmIChpID4gNDApCisrICAgIGdvdG8gZjQ7CisrICBlbHNlCisr ICAgIGdvdG8gZjU7CisrZjM6CisrICBiYXIgKGkpOworK2Y0OgorKyAgYmFyIChpKTsKKytmNToK KysgIGJhciAoaSk7CisrfQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgZm9vICgwLCAx KTsKKysgIGZvbyAoMTEsIDEpOworKyAgZm9vICgyMSwgMCk7CisrICBmb28gKDQxLCAwKTsKKysg IHJldHVybiAwOworK30KKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy9wcjI5NjA5LTIu YwkocmV2aXNpb24gMCkKKysrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy9wcjI5NjA5LTIu YwkocmV2aXNpb24gMTQwOTQ4KQorQEAgLTAsMCArMSw1MyBAQAorKy8qIFBSIGRlYnVnLzI5NjA5 ICovCisrLyogVmVyaWZ5IHRoYXQgYnJlYWtwb2ludCBvbiBib3RoIGdvdG8gZmFpbHVyZTsgc3Rt dHMgaXMgaGl0LgorKyAgIFRoaXMgdmVyc2lvbiBvZiB0aGUgdGVzdCBqdXN0IGNoZWNrcyB0aGF0 IGl0IGNhbiBiZSBjb21waWxlZCwgbGlua2VkCisrICAgYW5kIGV4ZWN1dGVkLCBmdXJ0aGVyIHRl c3RpbmcgaXMgZG9uZSBpbiBjb3JyZXNwb25kaW5nIGdjYy5kZy9kd2FyZjIvCisrICAgdGVzdCBh bmQgaG9wZWZ1bGx5IGluIGdkYiB0ZXN0c3VpdGUuICAqLworKy8qIHsgZGctZG8gcnVuIH0gKi8K KysvKiB7IGRnLW9wdGlvbnMgIi1PMCAtZyAtZEEiIH0gKi8KKysKKytleHRlcm4gdm9pZCBhYm9y dCAodm9pZCk7CisraW50IHg7CisrCisraW50CisrZm9vICh2b2lkKQorK3sKKysgIHJldHVybiAw IF4geDsKKyt9CisrCisraW50CisrYmFyICh2b2lkKQorK3sKKysgIHJldHVybiAxIF4geDsKKyt9 CisrCisraW50CisrYmF6ICh2b2lkKQorK3sKKysgIGludCBjOworKworKyAgaWYgKCFmb28gKCkp CisrICAgIGdvdG8gZmFpbHVyZTsKKysKKysgIGlmICghYmFyICgpKQorKyAgICBnb3RvIGZhaWx1 cmU7CisrCisrICByZXR1cm4gMDsKKysKKytmYWlsdXJlOgorKyAgcmV0dXJuIDE7CisrfQorKwor K2ludAorK21haW4gKHZvaWQpCisreworKyAgaWYgKGJheiAoKSAhPSAxKQorKyAgICBhYm9ydCAo KTsKKysgIHggPSAxOworKyAgaWYgKGJheiAoKSAhPSAxKQorKyAgICBhYm9ydCAoKTsKKysgIHgg PSAyOworKyAgaWYgKGJheiAoKSAhPSAwKQorKyAgICBhYm9ydCAoKTsKKysgIHJldHVybiAwOwor K30KKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy9kd2FyZjIvcHIzNjY5MC0xLmMJKHJl dmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZGVidWcvZHdhcmYyL3ByMzY2OTAt MS5jCShyZXZpc2lvbiAxNDA5NDgpCitAQCAtMCwwICsxLDIyIEBACisrLyogUFIgZGVidWcvMzY2 OTAgKi8KKysvKiBWZXJpZnkgdGhhdCBicmVhayBmdW5jIGlzIGhpdC4gICovCisrLyogeyBkZy1k byBjb21waWxlIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMCAtZ2R3YXJmLTIgLWRBIiB9ICov CisrCisraW50IGk7CisrCisrdm9pZAorK2Z1bmMgKHZvaWQpCisreworKyAgd2hpbGUgKGkgPT0g MSkKKysgICAgaSA9IDA7CisrfQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgZnVuYyAo KTsKKysgIHJldHVybiAwOworK30KKysKKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg InByMzY2OTAtMS5jOjExIiB9IH0gKi8KKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy9k d2FyZjIvcHIzNjY5MC0yLmMJKHJldmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv ZGVidWcvZHdhcmYyL3ByMzY2OTAtMi5jCShyZXZpc2lvbiAxNDA5NDgpCitAQCAtMCwwICsxLDM5 IEBACisrLyogUFIgZGVidWcvMzY2OTAgKi8KKysvKiBWZXJpZnkgdGhhdCBicmVha3BvaW50IGNh biBiZSBwdXQgb24gZ290byBmMSwgaXQgaXMgaGl0IGFuZAorKyAgIHZhcnogYXQgdGhhdCBzcG90 IGlzIGRlZmluZWQgYW5kIGNvbnRhaW5zIDUuICBOb3doZXJlIGVsc2UKKysgICBpbiB0aGUgZnVu Y3Rpb24gc2hvdWxkIGJlIHZhcnogaW4gdGhlIHNjb3BlLiAgKi8KKysvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8wIC1nZHdhcmYtMiAtZEEiIH0gKi8KKysKKytp bnQgY250OworKworK3ZvaWQKKytiYXIgKGludCBpKQorK3sKKysgIGNudCArPSBpOworK30KKysK Kyt2b2lkCisrZm9vIChpbnQgaSkKKyt7CisrICBpZiAoIWkpCisrICAgIGJhciAoMCk7CisrICBl bHNlCisrICAgIHsKKysgICAgICBzdGF0aWMgaW50IHZhcnogPSA1OworKyAgICAgIGdvdG8gZjE7 CisrICAgIH0KKysgIGJhciAoMSk7CisrZjE6CisrICBiYXIgKDIpOworK30KKysKKytpbnQKKytt YWluICh2b2lkKQorK3sKKysgIGZvbyAoMCk7CisrICBmb28gKDEpOworKyAgcmV0dXJuIDA7Cisr fQorKworKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHIzNjY5MC0yLmM6MjQiIH0g fSAqLworLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2RlYnVnL2R3YXJmMi9wcjI5NjA5LTEuYwko cmV2aXNpb24gMCkKKysrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy9kd2FyZjIvcHIyOTYw OS0xLmMJKHJldmlzaW9uIDE0MDk0OCkKK0BAIC0wLDAgKzEsMzIgQEAKKysvKiBQUiBkZWJ1Zy8y OTYwOSAqLworKy8qIFZlcmlmeSB0aGF0IGJyZWFrcG9pbnQgb24gdGhlIGJyZWFrIGlzIGhpdC4g ICovCisrLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMCAtZ2R3 YXJmLTIgLWRBIiB9ICovCisrCisrdm9pZCBhYm9ydCAodm9pZCk7CisrCisraW50CisrZm9vICh2 b2lkKQorK3sKKysgIGludCBhLCBpOworKworKyAgZm9yIChpID0gMTsgaSA8PSAxMDsgaSsrKQor KyAgICB7CisrICAgICAgaWYgKGkgPCAzKQorKwlhID0gMTsKKysgICAgICBlbHNlCisrCWJyZWFr OworKyAgICAgIGEgPSA1OworKyAgICB9CisrICByZXR1cm4gYTsKKyt9CisrCisraW50CisrbWFp biAodm9pZCkKKyt7CisrICBpZiAoZm9vICgpICE9IDUpCisrICAgIGFib3J0ICgpOworKyAgcmV0 dXJuIDA7CisrfQorKworKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHIyOTYwOS0x LmM6MTgiIH0gfSAqLworLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2RlYnVnL2R3YXJmMi9wcjM2 NjkwLTMuYwkocmV2aXNpb24gMCkKKysrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy9kd2Fy ZjIvcHIzNjY5MC0zLmMJKHJldmlzaW9uIDE0MDk0OCkKK0BAIC0wLDAgKzEsNTMgQEAKKysvKiBQ UiBkZWJ1Zy8zNjY5MCAqLworKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisrLyogeyBkZy1vcHRp b25zICItTzAgLWdkd2FyZi0yIC1kQSIgfSAqLworKworK2ludCBjbnQ7CisrCisrdm9pZAorK2Jh ciAoaW50IGkpCisreworKyAgY250ICs9IGk7CisrfQorKworK3ZvaWQKKytmb28gKGludCBpLCBp bnQgaikKKyt7CisrICBpZiAoaikKKysgICAgeworKyAgICAgIGJhciAoaSArIDEpOworKyAgICAg IGdvdG8gZjE7CisrICAgIH0KKysgIGJhciAoaSArIDIpOworKyAgZ290byBmMjsKKytmMToKKysg IGlmIChpID4gMTApCisrICAgIGdvdG8gZjM7CisrZjI6CisrICBpZiAoaSA+IDQwKQorKyAgICBn b3RvIGY0OworKyAgZWxzZQorKyAgICBnb3RvIGY1OworK2YzOgorKyAgYmFyIChpKTsKKytmNDoK KysgIGJhciAoaSk7CisrZjU6CisrICBiYXIgKGkpOworK30KKysKKytpbnQKKyttYWluICh2b2lk KQorK3sKKysgIGZvbyAoMCwgMSk7CisrICBmb28gKDExLCAxKTsKKysgIGZvbyAoMjEsIDApOwor KyAgZm9vICg0MSwgMCk7CisrICByZXR1cm4gMDsKKyt9CisrCisrLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJwcjM2NjkwLTMuYzoxOSIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJwcjM2NjkwLTMuYzoyMiIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJwcjM2NjkwLTMuYzoyNSIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJwcjM2NjkwLTMuYzoyOCIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJwcjM2NjkwLTMuYzozMCIgfSB9ICovCistLS0gZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvZGVidWcvZHdhcmYyL3ByMjk2MDktMi5jCShyZXZpc2lvbiAwKQorKysrIGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL2RlYnVnL2R3YXJmMi9wcjI5NjA5LTIuYwkocmV2aXNpb24gMTQwOTQ4KQor QEAgLTAsMCArMSw1MyBAQAorKy8qIFBSIGRlYnVnLzI5NjA5ICovCisrLyogVmVyaWZ5IHRoYXQg YnJlYWtwb2ludCBvbiBib3RoIGdvdG8gZmFpbHVyZTsgc3RtdHMgaXMgaGl0LiAgKi8KKysvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8wIC1nZHdhcmYtMiAtZEEi IH0gKi8KKysKKytleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CisraW50IHg7CisrCisraW50Cisr Zm9vICh2b2lkKQorK3sKKysgIHJldHVybiAwIF4geDsKKyt9CisrCisraW50CisrYmFyICh2b2lk KQorK3sKKysgIHJldHVybiAxIF4geDsKKyt9CisrCisraW50CisrYmF6ICh2b2lkKQorK3sKKysg IGludCBjOworKworKyAgaWYgKCFmb28gKCkpCisrICAgIGdvdG8gZmFpbHVyZTsKKysKKysgIGlm ICghYmFyICgpKQorKyAgICBnb3RvIGZhaWx1cmU7CisrCisrICByZXR1cm4gMDsKKysKKytmYWls dXJlOgorKyAgcmV0dXJuIDE7CisrfQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgaWYg KGJheiAoKSAhPSAxKQorKyAgICBhYm9ydCAoKTsKKysgIHggPSAxOworKyAgaWYgKGJheiAoKSAh PSAxKQorKyAgICBhYm9ydCAoKTsKKysgIHggPSAyOworKyAgaWYgKGJheiAoKSAhPSAwKQorKyAg ICBhYm9ydCAoKTsKKysgIHJldHVybiAwOworK30KKysKKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgInByMjk2MDktMi5jOjI3IiB9IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgInByMjk2MDktMi5jOjMwIiB9IH0gKi8KKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5k Zy9kZWJ1Zy9kd2FyZjIvcHIzNzYxNi5jCShyZXZpc2lvbiAwKQorKysrIGdjYy90ZXN0c3VpdGUv Z2NjLmRnL2RlYnVnL2R3YXJmMi9wcjM3NjE2LmMJKHJldmlzaW9uIDE0MDk0OCkKK0BAIC0wLDAg KzEsNDEgQEAKKysvKiBQUiBkZWJ1Zy8zNzYxNiAqLworKy8qIFRlc3QgdGhhdCBvbmUgY2FuIHB1 dCBicmVha3BvaW50cyBvbnRvIGNvbnRpbnVlLCBleGl0bGFiIGFuZCBicmVhaworKyAgIGFuZCBh Y3R1YWxseSBzZWUgcHJvZ3JhbSByZWFjaGluZyB0aG9zZSBicmVha3BvaW50cy4gICovCisrLyog eyBkZy1kbyBjb21waWxlIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMCAtZ2R3YXJmLTIgLWRB IiB9ICovCisrCisrZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOworKworK2ludAorK2ZvbyAoaW50 IHBhcm0pCisreworKyAgaW50IHZhcmosIHZhcm07CisrCisrICBmb3IgKHZhcmogPSAwOyB2YXJq IDwgMTA7IHZhcmorKykKKysgICAgeworKyAgICAgIGlmICh2YXJqID09IDUpCisrCWNvbnRpbnVl OworKyAgICAgIGlmICh2YXJqID09IDcgJiYgIXBhcm0pCisrCWdvdG8gZXhpdGxhYjsKKysgICAg ICBpZiAodmFyaiA9PSA5KQorKwlicmVhazsKKysgICAgICB2YXJtID0gdmFyajsKKysgICAgfQor KworK2V4aXRsYWI6CisrICByZXR1cm4gdmFybTsKKyt9CisrCisraW50CisrbWFpbiAodm9pZCkK Kyt7CisrICBpZiAoZm9vICgwKSAhPSA2KQorKyAgICBhYm9ydCAoKTsKKysgIGlmIChmb28gKDEp ICE9IDgpCisrICAgIGFib3J0ICgpOworKyAgcmV0dXJuIDA7CisrfQorKworKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAicHIzNzYxNi5jOjE3IiB9IH0gKi8KKysvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgInByMzc2MTYuYzoxOSIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJwcjM3NjE2LmM6MjEiIH0gfSAqLworLS0tIGdjYy90ZXN0c3VpdGUv Z2NjLmRnL2RlYnVnL3ByMzc2MTYuYwkocmV2aXNpb24gMCkKKysrKyBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9kZWJ1Zy9wcjM3NjE2LmMJKHJldmlzaW9uIDE0MDk0OCkKK0BAIC0wLDAgKzEsNDAgQEAK KysvKiBQUiBkZWJ1Zy8zNzYxNiAqLworKy8qIFRlc3QgdGhhdCBvbmUgY2FuIHB1dCBicmVha3Bv aW50cyBvbnRvIGNvbnRpbnVlLCBleGl0bGFiIGFuZCBicmVhaworKyAgIGFuZCBhY3R1YWxseSBz ZWUgcHJvZ3JhbSByZWFjaGluZyB0aG9zZSBicmVha3BvaW50cy4KKysgICBUaGlzIHZlcnNpb24g b2YgdGhlIHRlc3QganVzdCBjaGVja3MgdGhhdCBpdCBjYW4gYmUgY29tcGlsZWQsIGxpbmtlZAor KyAgIGFuZCBleGVjdXRlZCwgZnVydGhlciB0ZXN0aW5nIGlzIGRvbmUgaW4gY29ycmVzcG9uZGlu ZyBnY2MuZGcvZHdhcmYyLworKyAgIHRlc3QgYW5kIGhvcGVmdWxseSBpbiBnZGIgdGVzdHN1aXRl LiAgKi8KKysvKiB7IGRnLWRvIHJ1biB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzAgLWcgLWRB IiB9ICovCisrCisrZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOworKworK2ludAorK2ZvbyAoaW50 IHBhcm0pCisreworKyAgaW50IHZhcmosIHZhcm07CisrCisrICBmb3IgKHZhcmogPSAwOyB2YXJq IDwgMTA7IHZhcmorKykKKysgICAgeworKyAgICAgIGlmICh2YXJqID09IDUpCisrCWNvbnRpbnVl OworKyAgICAgIGlmICh2YXJqID09IDcgJiYgIXBhcm0pCisrCWdvdG8gZXhpdGxhYjsKKysgICAg ICBpZiAodmFyaiA9PSA5KQorKwlicmVhazsKKysgICAgICB2YXJtID0gdmFyajsKKysgICAgfQor KworK2V4aXRsYWI6CisrICByZXR1cm4gdmFybTsKKyt9CisrCisraW50CisrbWFpbiAodm9pZCkK Kyt7CisrICBpZiAoZm9vICgwKSAhPSA2KQorKyAgICBhYm9ydCAoKTsKKysgIGlmIChmb28gKDEp ICE9IDgpCisrICAgIGFib3J0ICgpOworKyAgcmV0dXJuIDA7CisrfQoKZGlmZiAtLWdpdCBhL2dj YzQzLXByMzc3MzgucGF0Y2ggYi9nY2M0My1wcjM3NzM4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjkwYzMyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0My1wcjM3 NzM4LnBhdGNoCkBAIC0wLDAgKzEsMjc2IEBACisyMDA4LTEwLTA3ICBKYWt1YiBKZWxpbmVrICA8 amFrdWJAcmVkaGF0LmNvbT4KKworCSogZjk1LWxhbmcuYyAocG9wbGV2ZWwpOiBEb24ndCBjbGVh ciBCTE9DS19WQVJTIGlmIGZ1bmN0aW9uYm9keS4KKwkqIHRyYW5zLWRlY2wuYyAoZ2ZjX2J1aWxk X3F1YWxpZmllZF9hcnJheSk6IEJ1aWxkIGFjY3VyYXRlIGRlYnVnIHR5cGUKKwlldmVuIGlmIG5l c3QuCisJKGJ1aWxkX2VudHJ5X3RodW5rcywgZ2ZjX2dlbmVyYXRlX2Z1bmN0aW9uX2NvZGUsCisJ Z2ZjX2dlbmVyYXRlX2NvbnN0cnVjdG9ycyk6IEVuc3VyZSBERUNMX1NBVkVEX1RSRUUgaXMgYSBC SU5EX0VYUFIKKwl3aXRoIERFQ0xfSU5JVElBTCBhcyBpdHMgQkxPQ0suCisKKwlQUiBkZWJ1Zy8z NzczOAorCSogZHdhcmYyb3V0LmMgKGNvbW1vbl9ibG9ja19kaWVfdGFibGUpOiBOZXcgdmFyaWFi bGUuCisJKGNvbW1vbl9ibG9ja19kaWVfdGFibGVfaGFzaCwgY29tbW9uX2Jsb2NrX2RpZV90YWJs ZV9lcSk6IE5ldworCWZ1bmN0aW9ucy4KKwkoZ2VuX3ZhcmlhYmxlX2RpZSk6IExvb2sgdXAgYSBE V19UQUdfY29tbW9uX2Jsb2NrIGRpZSBmb3IgYSBwYXJ0aWN1bGFyCisJQ09NTU9OIGJsb2NrIGlu IHRoZSBjdXJyZW50IHNjb3BlIHJhdGhlciB0aGFuIGdsb2JhbGx5LiAgT3B0aW1pemUKKwlEV19P UF9hZGRyIFNZTUJPTF9SRUYgRFdfT1BfcGx1c191Y29uc3Qgb2ZmIGludG8KKwlEV19PUF9hZGRy IFNZTUJPTF9SRUYrb2ZmLgorCisJKiBnZm9ydHJhbi5kZy9kZWJ1Zy9wcjM3NzM4LmY6IE5ldyB0 ZXN0LgorCistLS0gZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kZWJ1Zy9wcjM3NzM4LmYJKHJl dmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kZWJ1Zy9wcjM3NzM4LmYJ KHJldmlzaW9uIDE0MDk0NSkKK0BAIC0wLDAgKzEsMzAgQEAKKytDIFBSIGRlYnVnLzM3NzM4Cisr QyB7IGRnLWRvIGNvbXBpbGUgfQorK0MgeyBkZy1za2lwLWlmICJEV0FSRi0yIG9ubHkiIHsgIiot Ki0qIiB9IHsgIioiIH0geyAiLWdkd2FyZi0yIiB9IH0KKytDIHsgZGctb3B0aW9ucyAiLWRBIiB9 CisrCisrICAgICAgc3Vicm91dGluZSBhCisrICAgICAgaW50ZWdlcio0IGFfaSwgY19pCisrICAg ICAgY29tbW9uIC9ibG9jay9hX2ksIGNfaQorKyAgICAgIGFfaSA9IDEKKysgICAgICBjX2kgPSA0 CisrICAgICAgZW5kIHN1YnJvdXRpbmUgYQorKyAgICAgIHN1YnJvdXRpbmUgYgorKyAgICAgIGlu dGVnZXIqNCBiX2kKKysgICAgICBjb21tb24gL2Jsb2NrL2JfaSwgZF9pCisrICAgICAgYl9pID0g MgorKyAgICAgIGRfaSA9IDUKKysgICAgICBlbmQgc3Vicm91dGluZSBiCisrICAgICAgc3Vicm91 dGluZSBjCisrICAgICAgaW50ZWdlcio0IGFfaSwgY19pCisrICAgICAgY29tbW9uIC9ibG9jay9h X2ksIGNfaQorKyAgICAgIGlmIChhX2kgLm5lLiAyKSBjYWxsIGFib3J0CisrICAgICAgaWYgKGNf aSAubmUuIDUpIGNhbGwgYWJvcnQKKysgICAgICBlbmQgc3Vicm91dGluZSBjCisrICAgICAgcHJv Z3JhbSBhYmMKKysgICAgICBjYWxsIGEKKysgICAgICBjYWxsIGIKKysgICAgICBjYWxsIGMKKysg ICAgICBlbmQgcHJvZ3JhbSBhYmMKKysKKytDIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAiRElFXFteXG5cXSpEV19UQUdfY29tbW9uX2Jsb2NrIiAzIH0gfQorLS0tIGdjYy9kd2Fy ZjJvdXQuYwkocmV2aXNpb24gMTQwOTQzKQorKysrIGdjYy9kd2FyZjJvdXQuYwkocmV2aXNpb24g MTQwOTQ1KQorQEAgLTQ3NDgsNiArNDc0OCwxMCBAQCBzdGF0aWMgR1RZKChwYXJhbV9pcyAoc3Ry dWN0IGR3YXJmX2ZpbGVfCisgICAgVGhlIGtleSBpcyBhIERFQ0xfVUlEKCkgd2hpY2ggaXMgYSB1 bmlxdWUgbnVtYmVyIGlkZW50aWZ5aW5nIGVhY2ggZGVjbC4gICovCisgc3RhdGljIEdUWSAoKHBh cmFtX2lzIChzdHJ1Y3QgZGllX3N0cnVjdCkpKSBodGFiX3QgZGVjbF9kaWVfdGFibGU7CisgCisr LyogQSBoYXNoIHRhYmxlIG9mIHJlZmVyZW5jZXMgdG8gRElFJ3MgdGhhdCBkZXNjcmliZSBDT01N T04gYmxvY2tzLgorKyAgIFRoZSBrZXkgaXMgREVDTF9VSUQoKSBeIGRpZV9wYXJlbnQuICAqLwor K3N0YXRpYyBHVFkgKChwYXJhbV9pcyAoc3RydWN0IGRpZV9zdHJ1Y3QpKSkgaHRhYl90IGNvbW1v bl9ibG9ja19kaWVfdGFibGU7CisrCisgLyogTm9kZSBvZiB0aGUgdmFyaWFibGUgbG9jYXRpb24g bGlzdC4gICovCisgc3RydWN0IHZhcl9sb2Nfbm9kZSBHVFkgKChjaGFpbl9uZXh0ICgiJWgubmV4 dCIpKSkKKyB7CitAQCAtNDk2MCw2ICs0OTY0LDggQEAgc3RhdGljIHZvaWQgZXF1YXRlX3R5cGVf bnVtYmVyX3RvX2RpZSAodAorIHN0YXRpYyBoYXNodmFsX3QgZGVjbF9kaWVfdGFibGVfaGFzaCAo Y29uc3Qgdm9pZCAqKTsKKyBzdGF0aWMgaW50IGRlY2xfZGllX3RhYmxlX2VxIChjb25zdCB2b2lk ICosIGNvbnN0IHZvaWQgKik7Cisgc3RhdGljIGR3X2RpZV9yZWYgbG9va3VwX2RlY2xfZGllICh0 cmVlKTsKKytzdGF0aWMgaGFzaHZhbF90IGNvbW1vbl9ibG9ja19kaWVfdGFibGVfaGFzaCAoY29u c3Qgdm9pZCAqKTsKKytzdGF0aWMgaW50IGNvbW1vbl9ibG9ja19kaWVfdGFibGVfZXEgKGNvbnN0 IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKKyBzdGF0aWMgaGFzaHZhbF90IGRlY2xfbG9jX3RhYmxl X2hhc2ggKGNvbnN0IHZvaWQgKik7Cisgc3RhdGljIGludCBkZWNsX2xvY190YWJsZV9lcSAoY29u c3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOworIHN0YXRpYyB2YXJfbG9jX2xpc3QgKmxvb2t1cF9k ZWNsX2xvYyAoY29uc3RfdHJlZSk7CitAQCAtMTM4MTIsNiArMTM4MTgsMjYgQEAgZ2VuX3N1YnBy b2dyYW1fZGllICh0cmVlIGRlY2wsIGR3X2RpZV9yZQorIAorIH0KKyAKKysvKiBSZXR1cm5zIGEg aGFzaCB2YWx1ZSBmb3IgWCAod2hpY2ggcmVhbGx5IGlzIGEgZGllX3N0cnVjdCkuICAqLworKwor K3N0YXRpYyBoYXNodmFsX3QKKytjb21tb25fYmxvY2tfZGllX3RhYmxlX2hhc2ggKGNvbnN0IHZv aWQgKngpCisreworKyAgY29uc3RfZHdfZGllX3JlZiBkID0gKGNvbnN0X2R3X2RpZV9yZWYpIHg7 CisrICByZXR1cm4gKGhhc2h2YWxfdCkgZC0+ZGVjbF9pZCBeIGh0YWJfaGFzaF9wb2ludGVyIChk LT5kaWVfcGFyZW50KTsKKyt9CisrCisrLyogUmV0dXJuIG5vbnplcm8gaWYgZGVjbF9pZCBhbmQg ZGllX3BhcmVudCBvZiBkaWVfc3RydWN0IFggaXMgdGhlIHNhbWUKKysgICBhcyBkZWNsX2lkIGFu ZCBkaWVfcGFyZW50IG9mIGRpZV9zdHJ1Y3QgWS4gICovCisrCisrc3RhdGljIGludAorK2NvbW1v bl9ibG9ja19kaWVfdGFibGVfZXEgKGNvbnN0IHZvaWQgKngsIGNvbnN0IHZvaWQgKnkpCisrewor KyAgY29uc3RfZHdfZGllX3JlZiBkID0gKGNvbnN0X2R3X2RpZV9yZWYpIHg7CisrICBjb25zdF9k d19kaWVfcmVmIGUgPSAoY29uc3RfZHdfZGllX3JlZikgeTsKKysgIHJldHVybiBkLT5kZWNsX2lk ID09IGUtPmRlY2xfaWQgJiYgZC0+ZGllX3BhcmVudCA9PSBlLT5kaWVfcGFyZW50OworK30KKysK KyAvKiBHZW5lcmF0ZSBhIERJRSB0byByZXByZXNlbnQgYSBkZWNsYXJlZCBkYXRhIG9iamVjdC4g ICovCisgCisgc3RhdGljIHZvaWQKK0BAIC0xMzg1Myw2ICsxMzg3OSw3IEBAIGdlbl92YXJpYWJs ZV9kaWUgKHRyZWUgZGVjbCwgZHdfZGllX3JlZiAKKyAgICAgICB0cmVlIGZpZWxkOworICAgICAg IGR3X2RpZV9yZWYgY29tX2RpZTsKKyAgICAgICBkd19sb2NfZGVzY3JfcmVmIGxvYzsKKysgICAg ICBkaWVfbm9kZSBjb21fZGllX2FyZzsKKyAKKyAgICAgICB2YXJfZGllID0gbG9va3VwX2RlY2xf ZGllIChkZWNsKTsKKyAgICAgICBpZiAodmFyX2RpZSkKK0BAIC0xMzg2MywyMSArMTM4OTAsNDEg QEAgZ2VuX3ZhcmlhYmxlX2RpZSAodHJlZSBkZWNsLCBkd19kaWVfcmVmIAorIAkgICAgICBpZiAo bG9jKQorIAkJeworIAkJICBpZiAob2ZmKQorLQkJICAgIGFkZF9sb2NfZGVzY3IgKCZsb2MsIG5l d19sb2NfZGVzY3IgKERXX09QX3BsdXNfdWNvbnN0LAorKwkJICAgIHsKKysJCSAgICAgIC8qIE9w dGltaXplIHRoZSBjb21tb24gY2FzZS4gICovCisrCQkgICAgICBpZiAobG9jLT5kd19sb2Nfb3Bj ID09IERXX09QX2FkZHIKKysJCQkgICYmIGxvYy0+ZHdfbG9jX25leHQgPT0gTlVMTAorKwkJCSAg JiYgR0VUX0NPREUgKGxvYy0+ZHdfbG9jX29wcm5kMS52LnZhbF9hZGRyKQorKwkJCSAgICAgPT0g U1lNQk9MX1JFRikKKysJCQlsb2MtPmR3X2xvY19vcHJuZDEudi52YWxfYWRkcgorKwkJCSAgPSBw bHVzX2NvbnN0YW50IChsb2MtPmR3X2xvY19vcHJuZDEudi52YWxfYWRkciwgb2ZmKTsKKysJCQll bHNlCisrCQkJICBhZGRfbG9jX2Rlc2NyICgmbG9jLAorKwkJCQkJIG5ld19sb2NfZGVzY3IgKERX X09QX3BsdXNfdWNvbnN0LAorIAkJCQkJCQlvZmYsIDApKTsKKysJCSAgICB9CisgCQkgIGFkZF9B VF9sb2MgKHZhcl9kaWUsIERXX0FUX2xvY2F0aW9uLCBsb2MpOworIAkJICByZW1vdmVfQVQgKHZh cl9kaWUsIERXX0FUX2RlY2xhcmF0aW9uKTsKKyAJCX0KKyAJICAgIH0KKyAJICByZXR1cm47Cisg CX0KKysKKysgICAgICBpZiAoY29tbW9uX2Jsb2NrX2RpZV90YWJsZSA9PSBOVUxMKQorKwljb21t b25fYmxvY2tfZGllX3RhYmxlCisrCSAgPSBodGFiX2NyZWF0ZV9nZ2MgKDEwLCBjb21tb25fYmxv Y2tfZGllX3RhYmxlX2hhc2gsCisrCQkJICAgICBjb21tb25fYmxvY2tfZGllX3RhYmxlX2VxLCBO VUxMKTsKKysKKyAgICAgICBmaWVsZCA9IFRSRUVfT1BFUkFORCAoREVDTF9WQUxVRV9FWFBSIChk ZWNsKSwgMCk7CistICAgICAgY29tX2RpZSA9IGxvb2t1cF9kZWNsX2RpZSAoY29tX2RlY2wpOwor KyAgICAgIGNvbV9kaWVfYXJnLmRlY2xfaWQgPSBERUNMX1VJRCAoY29tX2RlY2wpOworKyAgICAg IGNvbV9kaWVfYXJnLmRpZV9wYXJlbnQgPSBjb250ZXh0X2RpZTsKKysgICAgICBjb21fZGllID0g KGR3X2RpZV9yZWYpIGh0YWJfZmluZCAoY29tbW9uX2Jsb2NrX2RpZV90YWJsZSwgJmNvbV9kaWVf YXJnKTsKKyAgICAgICBsb2MgPSBsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUgKGNvbV9kZWNsKTsK KyAgICAgICBpZiAoY29tX2RpZSA9PSBOVUxMKQorIAl7CisgCSAgY29uc3QgY2hhciAqY25hbQor IAkgICAgPSBJREVOVElGSUVSX1BPSU5URVIgKERFQ0xfQVNTRU1CTEVSX05BTUUgKGNvbV9kZWNs KSk7CisrCSAgdm9pZCAqKnNsb3Q7CisgCisgCSAgY29tX2RpZSA9IG5ld19kaWUgKERXX1RBR19j b21tb25fYmxvY2ssIGNvbnRleHRfZGllLCBkZWNsKTsKKyAJICBhZGRfbmFtZV9hbmRfc3JjX2Nv b3Jkc19hdHRyaWJ1dGVzIChjb21fZGllLCBjb21fZGVjbCk7CitAQCAtMTM4OTEsNyArMTM5Mzgs OSBAQCBnZW5fdmFyaWFibGVfZGllICh0cmVlIGRlY2wsIGR3X2RpZV9yZWYgCisgICAgICAgICAg IGVsc2UgaWYgKERFQ0xfRVhURVJOQUwgKGRlY2wpKQorIAkgICAgYWRkX0FUX2ZsYWcgKGNvbV9k aWUsIERXX0FUX2RlY2xhcmF0aW9uLCAxKTsKKyAJICBhZGRfcHVibmFtZV9zdHJpbmcgKGNuYW0s IGNvbV9kaWUpOyAvKiA/Pz8gbmVlZGVkPyAqLworLQkgIGVxdWF0ZV9kZWNsX251bWJlcl90b19k aWUgKGNvbV9kZWNsLCBjb21fZGllKTsKKysJICBjb21fZGllLT5kZWNsX2lkID0gREVDTF9VSUQg KGNvbV9kZWNsKTsKKysJICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKGNvbW1vbl9ibG9ja19kaWVf dGFibGUsIGNvbV9kaWUsIElOU0VSVCk7CisrCSAgKnNsb3QgPSAodm9pZCAqKSBjb21fZGllOwor IAl9CisgICAgICAgZWxzZSBpZiAoZ2V0X0FUIChjb21fZGllLCBEV19BVF9sb2NhdGlvbikgPT0g TlVMTCAmJiBsb2MpCisgCXsKK0BAIC0xMzkwNyw3ICsxMzk1NiwxNyBAQCBnZW5fdmFyaWFibGVf ZGllICh0cmVlIGRlY2wsIGR3X2RpZV9yZWYgCisgICAgICAgaWYgKGxvYykKKyAJeworIAkgIGlm IChvZmYpCistCSAgICBhZGRfbG9jX2Rlc2NyICgmbG9jLCBuZXdfbG9jX2Rlc2NyIChEV19PUF9w bHVzX3Vjb25zdCwgb2ZmLCAwKSk7CisrCSAgICB7CisrCSAgICAgIC8qIE9wdGltaXplIHRoZSBj b21tb24gY2FzZS4gICovCisrCSAgICAgIGlmIChsb2MtPmR3X2xvY19vcGMgPT0gRFdfT1BfYWRk cgorKwkJICAmJiBsb2MtPmR3X2xvY19uZXh0ID09IE5VTEwKKysJCSAgJiYgR0VUX0NPREUgKGxv Yy0+ZHdfbG9jX29wcm5kMS52LnZhbF9hZGRyKSA9PSBTWU1CT0xfUkVGKQorKwkJbG9jLT5kd19s b2Nfb3BybmQxLnYudmFsX2FkZHIKKysJCSAgPSBwbHVzX2NvbnN0YW50IChsb2MtPmR3X2xvY19v cHJuZDEudi52YWxfYWRkciwgb2ZmKTsKKysJICAgICAgZWxzZQorKwkJYWRkX2xvY19kZXNjciAo JmxvYywgbmV3X2xvY19kZXNjciAoRFdfT1BfcGx1c191Y29uc3QsCisrCQkJCQkJICAgIG9mZiwg MCkpOworKwkgICAgfQorIAkgIGFkZF9BVF9sb2MgKHZhcl9kaWUsIERXX0FUX2xvY2F0aW9uLCBs b2MpOworIAl9CisgICAgICAgZWxzZSBpZiAoREVDTF9FWFRFUk5BTCAoZGVjbCkpCistLS0gZ2Nj L2ZvcnRyYW4vZjk1LWxhbmcuYwkocmV2aXNpb24gMTQwOTQzKQorKysrIGdjYy9mb3J0cmFuL2Y5 NS1sYW5nLmMJKHJldmlzaW9uIDE0MDk0NSkKK0BAIC00NTcsMTQgKzQ1Nyw4IEBAIHBvcGxldmVs IChpbnQga2VlcCwgaW50IHJldmVyc2UsIGludCBmdW4KKyAgIGN1cnJlbnRfYmluZGluZ19sZXZl bCA9IGN1cnJlbnRfYmluZGluZ19sZXZlbC0+bGV2ZWxfY2hhaW47CisgCisgICBpZiAoZnVuY3Rp b25ib2R5KQorLSAgICB7CistICAgICAgLyogVGhpcyBpcyB0aGUgdG9wIGxldmVsIGJsb2NrIG9m IGEgZnVuY3Rpb24uIFRoZSAuLi5fREVDTCBjaGFpbiBzdG9yZWQKKy0gICAgICAgICBpbiBCTE9D S19WQVJTIGFyZSB0aGUgZnVuY3Rpb24ncyBwYXJhbWV0ZXJzIChQQVJNX0RFQ0wgbm9kZXMpLiBE b24ndAorLSAgICAgICAgIGxlYXZlIHRoZW0gaW4gdGhlIEJMT0NLIGJlY2F1c2UgdGhleSBhcmUg Zm91bmQgaW4gdGhlIEZVTkNUSU9OX0RFQ0wKKy0gICAgICAgICBpbnN0ZWFkLiAgKi8KKy0gICAg ICBERUNMX0lOSVRJQUwgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkgPSBibG9ja19ub2RlOworLSAg ICAgIEJMT0NLX1ZBUlMgKGJsb2NrX25vZGUpID0gMDsKKy0gICAgfQorKyAgICAvKiBUaGlzIGlz IHRoZSB0b3AgbGV2ZWwgYmxvY2sgb2YgYSBmdW5jdGlvbi4gKi8KKysgICAgREVDTF9JTklUSUFM IChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpID0gYmxvY2tfbm9kZTsKKyAgIGVsc2UgaWYgKGN1cnJl bnRfYmluZGluZ19sZXZlbCA9PSBnbG9iYWxfYmluZGluZ19sZXZlbCkKKyAgICAgLyogV2hlbiB1 c2luZyBnZmNfc3RhcnRfYmxvY2svZ2ZjX2ZpbmlzaF9ibG9jayBmcm9tIG1pZGRsZS1lbmQgaG9v a3MsCisgICAgICAgIGRvbid0IGFkZCBuZXdseSBjcmVhdGVkIEJMT0NLcyBhcyBzdWJsb2NrcyBv ZiBnbG9iYWxfYmluZGluZ19sZXZlbC4gICovCistLS0gZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5j CShyZXZpc2lvbiAxNDA5NDMpCisrKysgZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jCShyZXZpc2lv biAxNDA5NDUpCitAQCAtNzA0LDcgKzcwNCw3IEBAIGdmY19idWlsZF9xdWFsaWZpZWRfYXJyYXkg KHRyZWUgZGVjbCwgZ2YKKyAgICAgICBsYXlvdXRfdHlwZSAodHlwZSk7CisgICAgIH0KKyAKKy0g IGlmIChuZXN0IHx8IHdyaXRlX3N5bWJvbHMgPT0gTk9fREVCVUcpCisrICBpZiAod3JpdGVfc3lt Ym9scyA9PSBOT19ERUJVRykKKyAgICAgcmV0dXJuOworIAorICAgaWYgKFRZUEVfTkFNRSAodHlw ZSkgIT0gTlVMTF9UUkVFCitAQCAtMTc2MSw3ICsxNzYxLDcgQEAgYnVpbGRfZW50cnlfdGh1bmtz IChnZmNfbmFtZXNwYWNlICogbnMpCisgCisgICAgICAgdGh1bmtfZm5kZWNsID0gdGh1bmtfc3lt LT5iYWNrZW5kX2RlY2w7CisgCistICAgICAgZ2ZjX3N0YXJ0X2Jsb2NrICgmYm9keSk7CisrICAg ICAgZ2ZjX2luaXRfYmxvY2sgKCZib2R5KTsKKyAKKyAgICAgICAvKiBQYXNzIGV4dHJhIHBhcmFt ZXRlciBpZGVudGlmeWluZyB0aGlzIGVudHJ5IHBvaW50LiAgKi8KKyAgICAgICB0bXAgPSBidWls ZF9pbnRfY3N0IChnZmNfYXJyYXlfaW5kZXhfdHlwZSwgZWwtPmlkKTsKK0BAIC0xODY5LDggKzE4 NjksMTIgQEAgYnVpbGRfZW50cnlfdGh1bmtzIChnZmNfbmFtZXNwYWNlICogbnMpCisgCisgICAg ICAgLyogRmluaXNoIG9mZiB0aGlzIGZ1bmN0aW9uIGFuZCBzZW5kIGl0IGZvciBjb2RlIGdlbmVy YXRpb24uICAqLworICAgICAgIERFQ0xfU0FWRURfVFJFRSAodGh1bmtfZm5kZWNsKSA9IGdmY19m aW5pc2hfYmxvY2sgKCZib2R5KTsKKysgICAgICB0bXAgPSBnZXRkZWNscyAoKTsKKyAgICAgICBw b3BsZXZlbCAoMSwgMCwgMSk7CisgICAgICAgQkxPQ0tfU1VQRVJDT05URVhUIChERUNMX0lOSVRJ QUwgKHRodW5rX2ZuZGVjbCkpID0gdGh1bmtfZm5kZWNsOworKyAgICAgIERFQ0xfU0FWRURfVFJF RSAodGh1bmtfZm5kZWNsKQorKwk9IGJ1aWxkM192IChCSU5EX0VYUFIsIHRtcCwgREVDTF9TQVZF RF9UUkVFICh0aHVua19mbmRlY2wpLAorKwkJICAgIERFQ0xfSU5JVElBTCAodGh1bmtfZm5kZWNs KSk7CisgCisgICAgICAgLyogT3V0cHV0IHRoZSBHRU5FUklDIHRyZWUuICAqLworICAgICAgIGR1 bXBfZnVuY3Rpb24gKFRESV9vcmlnaW5hbCwgdGh1bmtfZm5kZWNsKTsKK0BAIC0zNjUyLDcgKzM2 NTYsNyBAQCBnZmNfZ2VuZXJhdGVfZnVuY3Rpb25fY29kZSAoZ2ZjX25hbWVzcGFjCisgCisgICB0 cmFuc19mdW5jdGlvbl9zdGFydCAoc3ltKTsKKyAKKy0gIGdmY19zdGFydF9ibG9jayAoJmJsb2Nr KTsKKysgIGdmY19pbml0X2Jsb2NrICgmYmxvY2spOworIAorICAgaWYgKG5zLT5lbnRyaWVzICYm IG5zLT5wcm9jX25hbWUtPnRzLnR5cGUgPT0gQlRfQ0hBUkFDVEVSKQorICAgICB7CitAQCAtMzg4 NiwxMSArMzg5MCwxNiBAQCBnZmNfZ2VuZXJhdGVfZnVuY3Rpb25fY29kZSAoZ2ZjX25hbWVzcGFj CisgICBzYXZlZF9mdW5jdGlvbl9kZWNscyA9IE5VTExfVFJFRTsKKyAKKyAgIERFQ0xfU0FWRURf VFJFRSAoZm5kZWNsKSA9IGdmY19maW5pc2hfYmxvY2sgKCZibG9jayk7CisrICBkZWNsID0gZ2V0 ZGVjbHMgKCk7CisgCisgICAvKiBGaW5pc2ggb2ZmIHRoaXMgZnVuY3Rpb24gYW5kIHNlbmQgaXQg Zm9yIGNvZGUgZ2VuZXJhdGlvbi4gICovCisgICBwb3BsZXZlbCAoMSwgMCwgMSk7CisgICBCTE9D S19TVVBFUkNPTlRFWFQgKERFQ0xfSU5JVElBTCAoZm5kZWNsKSkgPSBmbmRlY2w7CisgCisrICBE RUNMX1NBVkVEX1RSRUUgKGZuZGVjbCkKKysgICAgPSBidWlsZDNfdiAoQklORF9FWFBSLCBkZWNs LCBERUNMX1NBVkVEX1RSRUUgKGZuZGVjbCksCisrCQlERUNMX0lOSVRJQUwgKGZuZGVjbCkpOwor KworICAgLyogT3V0cHV0IHRoZSBHRU5FUklDIHRyZWUuICAqLworICAgZHVtcF9mdW5jdGlvbiAo VERJX29yaWdpbmFsLCBmbmRlY2wpOworIAorQEAgLTM5NjksOSArMzk3OCwxMyBAQCBnZmNfZ2Vu ZXJhdGVfY29uc3RydWN0b3JzICh2b2lkKQorICAgICAgIERFQ0xfU0FWRURfVFJFRSAoZm5kZWNs KSA9IGJ1aWxkX3N0bXQgKEVYUFJfU1RNVCwgdG1wKTsKKyAgICAgfQorIAorKyAgZGVjbCA9IGdl dGRlY2xzICgpOworICAgcG9wbGV2ZWwgKDEsIDAsIDEpOworIAorICAgQkxPQ0tfU1VQRVJDT05U RVhUIChERUNMX0lOSVRJQUwgKGZuZGVjbCkpID0gZm5kZWNsOworKyAgREVDTF9TQVZFRF9UUkVF IChmbmRlY2wpCisrICAgID0gYnVpbGQzX3YgKEJJTkRfRVhQUiwgZGVjbCwgREVDTF9TQVZFRF9U UkVFIChmbmRlY2wpLAorKwkJREVDTF9JTklUSUFMIChmbmRlY2wpKTsKKyAKKyAgIGZyZWVfYWZ0 ZXJfcGFyc2luZyAoY2Z1bik7CisgICBmcmVlX2FmdGVyX2NvbXBpbGF0aW9uIChjZnVuKTsKCmRp ZmYgLS1naXQgYS9nY2M0My5zcGVjIGIvZ2NjNDMuc3BlYwppbmRleCBhMTdmZjQzLi4zYWFmZDdk IDEwMDY0NAotLS0gYS9nY2M0My5zcGVjCisrKyBiL2djYzQzLnNwZWMKQEAgLTEsOSArMSw5IEBA Ci0lZGVmaW5lIERBVEUgMjAwODA5MTcKLSVkZWZpbmUgU1ZOUkVWIDE0MDQxMAorJWRlZmluZSBE QVRFIDIwMDgxMDA4CislZGVmaW5lIFNWTlJFViAxNDA5NzMKICVkZWZpbmUgZ2NjX3ZlcnNpb24g NC4zLjIKICMgTm90ZSwgZ2NjX3JlbGVhc2UgbXVzdCBiZSBpbnRlZ2VyLCBpZiB5b3Ugd2FudCB0 byBhZGQgc3VmZml4ZXMgdG8KICMgJXtyZWxlYXNlfSwgYXBwZW5kIHRoZW0gYWZ0ZXIgJXtnY2Nf cmVsZWFzZX0gb24gUmVsZWFzZTogbGluZS4KLSVkZWZpbmUgZ2NjX3JlbGVhc2UgNAorJWRlZmlu ZSBnY2NfcmVsZWFzZSA1CiAlZGVmaW5lIF91bnBhY2thZ2VkX2ZpbGVzX3Rlcm1pbmF0ZV9idWls ZCAwCiAlZGVmaW5lIG11bHRpbGliXzY0X2FyY2hzIHNwYXJjNjQgcHBjNjQgczM5MHggeDg2XzY0 CiAlZGVmaW5lIGluY2x1ZGVfZ2FwcGxldHZpZXdlciAxCkBAIC0xNTYsNiArMTU2LDkgQEAgUGF0 Y2gxOTogZ2NjNDMtYWx0aXZlYy10ZXN0cy5wYXRjaAogUGF0Y2gyMDogZ2NjNDMtbGlidG9vbC1u by1ycGF0aC5wYXRjaAogUGF0Y2gyMTogZ2NjNDMtcHIzNjc0MS1yZXZlcnQucGF0Y2gKIFBhdGNo MjI6IGdjYzQzLXByMzQwMzcucGF0Y2gKK1BhdGNoMjM6IGdjYzQzLXByMzc3MzgucGF0Y2gKK1Bh dGNoMjQ6IGdjYzQzLXByMjk2MDkucGF0Y2gKK1BhdGNoMjU6IGdjYzQzLWFlcy5wYXRjaAogCiAj IE9uIEFSTSBFQUJJIHN5c3RlbXMsIHdlIGRvIHdhbnQgLWdudWVhYmkgdG8gYmUgcGFydCBvZiB0 aGUKICMgdGFyZ2V0IHRyaXBsZS4KQEAgLTQ2Miw2ICs0NjUsOSBAQCB3aGljaCBhcmUgcmVxdWly ZWQgdG8gcnVuIHByb2dyYW1zIGNvbXBpbGVkIHdpdGggdGhlIEdOQVQuCiAlcGF0Y2gyMCAtcDAg LWIgLmxpYnRvb2wtbm8tcnBhdGh+CiAlcGF0Y2gyMSAtcDAgLWIgLnByMzY3NDEtcmV2ZXJ0fgog JXBhdGNoMjIgLXAwIC1iIC5wcjM0MDM3fgorJXBhdGNoMjMgLXAwIC1iIC5wcjM3NzM4fgorJXBh dGNoMjQgLXAwIC1iIC5wcjI5NjA5fgorJXBhdGNoMjUgLXAwIC1iIC5hZXN+CiAKIHRhciB4emYg JXtTT1VSQ0U0fQogCkBAIC0xMjg0LDYgKzEyOTAsNyBAQCBmaQogJXtfcHJlZml4fS9saWIvZ2Nj LyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZS9zbW1pbnRyaW4u aAogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lv bn0vaW5jbHVkZS9ubW1pbnRyaW4uaAogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9w bGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZS9ibW1pbnRyaW4uaAorJXtfcHJlZml4fS9s aWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZS93bW1p bnRyaW4uaAogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2Nf dmVyc2lvbn0vaW5jbHVkZS9tbWludHJpbi1jb21tb24uaAogJXtfcHJlZml4fS9saWIvZ2NjLyV7 Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZS9tbV9tYWxsb2MuaAog JXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0v aW5jbHVkZS9tbTNkbm93LmgKQEAgLTE3MTAsOCArMTcxNywyMiBAQCBmaQogJWRvYyBycG0uZG9j L2NoYW5nZWxvZ3MvbGlibXVkZmxhcC9DaGFuZ2VMb2cqCiAKICVjaGFuZ2Vsb2cKKyogV2VkIE9j dCAgOCAyMDA4IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMy4yLTUKKy0gdXBk YXRlIGZyb20gZ2NjLTRfMy1icmFuY2gKKyAgLSBQUnMgYysrLzM3NTU1LCBjLzM1NzEyLCBjLzM3 NjQ1LCBmb3J0cmFuLzM1NzcwLCBmb3J0cmFuLzM1OTQ1LAorCWZvcnRyYW4vMzYzNzQsIGZvcnRy YW4vMzY0NTQsIGZvcnRyYW4vMzY3MDAsIGZvcnRyYW4vMzcyNzQsCisJZm9ydHJhbi8zNzUwNCwg Zm9ydHJhbi8zNzU4MCwgZm9ydHJhbi8zNzU4MywgZm9ydHJhbi8zNzYyNiwKKwlmb3J0cmFuLzM3 NzA2LCBtaWRkbGUtZW5kLzM2NTc1LCBtaWRkbGUtZW5kLzM3MjM2LCBtaWRkbGUtZW5kLzM3NzMx LAorCXJ0bC1vcHRpbWl6YXRpb24vMzc1NDQsIHRhcmdldC8zNTYyMCwgdGFyZ2V0LzM1NzEzLCB0 YXJnZXQvMzc2MDMsCisJdHJlZS1vcHQvMzU3MzcsIHRyZWUtb3B0aW1pemF0aW9uLzM2MzQzLCB0 cmVlLW9wdGltaXphdGlvbi8zNzUzOQorLSBlbnN1cmUgb25lIGNhbiBwdXQgYnJlYWtwb2ludHMg b24gYnJlYWssIGNvbnRpbnVlIGFuZCBnb3RvIHN0YXRlbWVudHMKKyAgd2l0aCAtZyAtTzAgKCM0 NjU4MjQsIFBScyBkZWJ1Zy8yOTYwOSwgZGVidWcvMzY2OTAsIGRlYnVnLzM3NjE2KQorLSBlbWl0 IG9uZSBEV19UQUdfY29tbW9uX2Jsb2NrIGZvciBlYWNoIGNvbW1vbiBibG9jayBpbiBlYWNoIHNj b3BlLCBub3QKKyAgb25lIGZvciBlYWNoIGNvbW1vbiBibG9jayBpbiBvbmUgQ1UgKCM0NjU5NzQs IFBSIGRlYnVnLzM3NzM4KQorLSBJbnRlbCAtbWFlcyBhbmQgLW1wY2xtdWwgc3VwcG9ydAorCiAq IFdlZCBTZXAgMTcgMjAwOCBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjMuMi00 Ci0tIHVwZGF0ZSBmcm9tIDQuMyBicmFuY2gKKy0gdXBkYXRlIGZyb20gZ2NjLTRfMy1icmFuY2gK ICAgLSBQUnMgYysrLzM3Mzg5LCBmb3J0cmFuLzM1ODM3LCBmb3J0cmFuLzM2MjE0LCBmb3J0cmFu LzM3MDk5LCBmb3J0cmFuLzM3MTk5LAogCXJ0bC1vcHRpbWl6YXRpb24vMzc0MDgsIHRhcmdldC8z NzQ2NiwgdHJlZS1vcHRpbWl6YXRpb24vMzY2MzAKIC0gcmV2ZXJ0IFBSIGMrKy8zNjc0MSBmaXgK CmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCAwODJmNjFjLi5iYWU5NTg4IDEw MDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEsMiArMSwyIEBACi03OGI0ZTY0 MDBlMjBlYTMwMTFhZTdjODg3ZjgzMzhkMiAgZ2NjLTQuMy4yLTIwMDgwOTE3LnRhci5iejIKKzM5 ZGZkZTkxYTc2NmY0NDc3MTFkOTY3YzQ4MDZkYTg5ICBnY2MtNC4zLjItMjAwODEwMDgudGFyLmJ6 MgogOTJhNzBmOWU1NjIyM2I2NTNiY2UwZjU4ZjkwY2Y5NTAgIGZhc3RqYXItMC45NS50YXIuZ3oK