From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: VLA (Fortran dynamic arrays) strides (multi-dimensional subarrays) from Intel. Date: Thu, 23 Jul 2026 18:32:04 GMT Message-ID: <178483152400.1.12406926478740381243.rpms-gdb-046f33b5893a@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 046f33b5893ab417d7973e33216826794e3a0c6e QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogMDQ2ZjMzYjU4OTNhYjQxN2Q3OTczZTMzMjE2ODI2Nzk0 ZTNhMGM2ZQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxNi0wMS0wOVQxMTo1ODozMCswMTowMApTdGF0cyAgOiArMTk0NC8tMTkg aW4gMTAgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1z L2dkYi9jLzA0NmYzM2I1ODkzYWI0MTdkNzk3M2UzMzIxNjgyNjc5NGUzYTBjNmU/YnJhbmNoPWZp eC1kdXAtcGF0Y2gKCkxvZzoKVkxBIChGb3J0cmFuIGR5bmFtaWMgYXJyYXlzKSBzdHJpZGVzICht dWx0aS1kaW1lbnNpb25hbCBzdWJhcnJheXMpIGZyb20gSW50ZWwuCgotLS0KZGlmZiAtLWdpdCBh L2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC0xb2Y2LnBhdGNoIGIvZ2RiLWZvcnRyYW4tc3RyaWRl LWludGVsLTFvZjYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE3 YzgzYQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC0xb2Y2LnBh dGNoCkBAIC0wLDAgKzEsNjExIEBACitGcm9tOiBDaHJpc3RvcGggV2Vpbm1hbm4gPGNocmlzdG9w aC50LndlaW5tYW5uQGludGVsLmNvbT4KK1tQQVRDSCAxLzZdIGZvcnRyYW46IGFsbG93IG11bHRp LWRpbWVuc2lvbmFsIHN1YmFycmF5cworaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDE1LTEyL21zZzAwMDA3Lmh0bWwKK01lc3NhZ2UtSWQ6IDwxNDQ4OTc2MDc1LTExNDU2 LTItZ2l0LXNlbmQtZW1haWwtY2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorCitBZGQg YW4gYXJndW1lbnQgY291bnQgZm9yIHN1YnJhbmdlIGV4cHJlc3Npb25zIGluIEZvcnRyYW4uCitC YXNlZCBvbiB0aGUgY291bnRlZCB2YWx1ZSBjYWxjdWxhdGUgYSBuZXcgYXJyYXkgd2l0aCB0aGUK K2VsZW1lbnRzIHNwZWNpZmllZCBieSB0aGUgdXNlci4gIEZpcnN0IHBhcnNlIHRoZSB1c2VyIGlu cHV0LAorc2Vjb25kbHkgY29weSB0aGUgZGVzaXJlZCBhcnJheSB2YWx1ZXMgaW50byB0aGUgcmV0 dXJuCithcnJheSwgdGhpcmRseSByZS1jcmVhdGUgdGhlIG5lY2Vzc2FyeSByYW5nZXMgYW5kIGJv dW5kcy4KKworMXwgIHByb2dyYW0gcHJvZworMnwgICAgaW50ZWdlciA6OiBhcnkoMTAsNSkgPSAo LyAoaSxpPTEsMTApIChqLCBqPTEsNSkgLykKKzN8ICBlbmQgcHJvZ3JhbSBwcm9nCisKKyhnZGIp IHByaW50IGFyeSgyOjQsMTozKQorb2xkPiBTeW50YXggZXJyb3IgaW4gZXhwcmVzc2lvbiBuZWFy ICc6MycKK25ldz4gJDMgPSAoICggMjEsIDMxLCA0MSkgKCAyMiwgMzIsIDQyKSAoIDIzLCAzMywg NDMpICkKKworMjAxMy0xMS0yNSAgQ2hyaXN0b3BoIFdlaW5tYW5uICA8Y2hyaXN0b3BoLnQud2Vp bm1hbm5AaW50ZWwuY29tPgorCisJKiBldmFsLmMgKG11bHRpX2Y3N19zdWJzY3JpcHQpOiBSZW1v dmUgZnVuY3Rpb24uCisJKiBldmFsLmMgKGV2YWx1YXRlX3N1YnJhbmdlX2V4cHIpOiBXaGVuIGV2 YWx1YXRpbmcKKwlhbiBhcnJheSBvciBzdHJpbmcgZXhwcmVzc2lvbiwgY2FsbAorCXZhbHVlX2Y5 MF9zdWJhcnJheS4KKwkqIGV2YWwuYyAodmFsdWVfZjkwX3N1YmFycmF5KTogQWRkIGFyZ3VtZW50 IHBhcnNpbmcKKwlhbmQgY29tcHV0ZSByZXN1bHQgYXJyYXkgYmFzZWQgb24gdXNlciBpbnB1dC4K KwkqIGYtZXhwLnk6IEluY3JlbWVudCBhcmd1bWVudCBjb3VudGVyIGZvciBldmVyeSBzdWJyYW5n ZQorCWV4cHJlc3Npb24gZW50ZXJlZCBieSB0aGUgdXNlci4KKwkqIHZhbG9wcy5jICh2YWx1ZV9z bGljZSk6IENhbGwgdmFsdWVfc2xpY2VfMSB3aXRoCisJYWRkaXRpb25hbCBkZWZhdWx0IGFyZ3Vt ZW50LgorCSogdmFsb3BzLmMgKHZhbHVlX3NsaWNlXzEpOiBBZGQgZnVuY3Rpb25hbGl0eSB0bwor CWNvcHkgYW5kIHJldHVybiByZXN1bHQgdmFsdWVzIGJhc2VkIG9uIGlucHV0LgorCSogdmFsdWUu aDogQWRkIGZ1bmN0aW9uIGRlZmluaXRpb24uCisKKworCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3Rv cGggV2Vpbm1hbm4gPGNocmlzdG9waC50LndlaW5tYW5uQGludGVsLmNvbT4KKy0tLQorIGdkYi9l dmFsLmMgICB8ICAzMDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLQorIGdkYi9mLWV4cC55ICB8ICAgIDIgKworIGdkYi92YWxvcHMuYyB8 ICAxNTcgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCisgZ2RiL3ZhbHVlLmggIHwgICAg MiArCisgNCBmaWxlcyBjaGFuZ2VkLCAzNzUgaW5zZXJ0aW9ucygrKSwgOTUgZGVsZXRpb25zKC0p CisKK2RpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYworaW5kZXggODRlMmUzNC4u MmNlY2NiYyAxMDA2NDQKKy0tLSBhL2dkYi9ldmFsLmMKKysrKyBiL2dkYi9ldmFsLmMKK0BAIC0z OTksMjkgKzM5OSwyNTMgQEAgaW5pdF9hcnJheV9lbGVtZW50IChzdHJ1Y3QgdmFsdWUgKmFycmF5 LCBzdHJ1Y3QgdmFsdWUgKmVsZW1lbnQsCisgICByZXR1cm4gaW5kZXg7CisgfQorIAorKy8qIEV2 YWx1YXRlcyBhbnkgb3BlcmF0aW9uIG9uIEZvcnRyYW4gYXJyYXlzIG9yIHN0cmluZ3Mgd2l0aCBh dCBsZWFzdAorKyAgIG9uZSB1c2VyIHByb3ZpZGVkIHBhcmFtZXRlci4gIEV4cGVjdHMgdGhlIGlu cHV0IEFSUkFZIHRvIGJlIGVpdGhlcgorKyAgIGFuIGFycmF5LCBvciBhIHN0cmluZy4gIEV2YWx1 YXRlcyBFWFAgYnkgaW5jcmVtZW50aW5nIFBPUywgYW5kCisrICAgd3JpdGVzIHRoZSBjb250ZW50 IGZyb20gdGhlIGVsdCBzdGFjayBpbnRvIGEgbG9jYWwgc3RydWN0LiAgTkFSR1MKKysgICBzcGVj aWZpZXMgbnVtYmVyIG9mIGxpdGVyYWwgb3IgcmFuZ2UgYXJndW1lbnRzIHRoZSB1c2VyIHByb3Zp ZGVkLgorKyAgIE5BUkdTIG11c3QgYmUgdGhlIHNhbWUgbnVtYmVyIGFzIEFSUkFZIGhhcyBkaW1l bnNpb25zLiAgKi8KKysKKyBzdGF0aWMgc3RydWN0IHZhbHVlICoKKy12YWx1ZV9mOTBfc3ViYXJy YXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCistCQkgICAgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg aW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKKyt2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVj dCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCisrCQkgICAgaW50ICpwb3Ms IGludCBuYXJncywgZW51bSBub3NpZGUgbm9zaWRlKQorIHsKKy0gIGludCBwYyA9ICgqcG9zKSAr IDE7CisrICBpbnQgaSwgZGltX2NvdW50ID0gMDsKKyAgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdo X2JvdW5kOworICAgc3RydWN0IHR5cGUgKnJhbmdlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9JTkRF WF9UWVBFICh2YWx1ZV90eXBlIChhcnJheSkpKTsKKy0gIGVudW0gZjkwX3JhbmdlX3R5cGUgcmFu Z2VfdHlwZQorLSAgICA9IChlbnVtIGY5MF9yYW5nZV90eXBlKSBsb25nZXN0X3RvX2ludCAoZXhw LT5lbHRzW3BjXS5sb25nY29uc3QpOworLSAKKy0gICpwb3MgKz0gMzsKKysgIHN0cnVjdCB2YWx1 ZSAqbmV3X2FycmF5ID0gYXJyYXk7CisrICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNr X3R5cGVkZWYgKHZhbHVlX3R5cGUgKG5ld19hcnJheSkpOworKyAgc3RydWN0IHR5cGUgKnRlbXBf dHlwZTsKKysKKysgIC8qIExvY2FsIHN0cnVjdCB0byBob2xkIHVzZXIgZGF0YSBmb3IgRm9ydHJh biBzdWJhcnJheSBkaW1lbnNpb25zLiAgKi8KKysgIHN0cnVjdCBzdWJzY3JpcHRfc3RvcmUKKysg IHsKKysgICAgLyogRm9yIGV2ZXJ5IGRpbWVuc2lvbiwgd2UgYXJlIGVpdGhlciB3b3JraW5nIG9u IGEgcmFuZ2Ugb3IgYW4gaW5kZXgKKysgICAgICAgZXhwcmVzc2lvbiwgc28gd2Ugc3RvcmUgdGhp cyBpbmZvIHNlcGFyYXRlbHkgZm9yIGxhdGVyLiAgKi8KKysgICAgZW51bQorKyAgICB7CisrICAg ICAgU1VCU0NSSVBUX1JBTkdFLCAgICAvKiBlLmcuICIobG93Ym91bmQ6aGlnaGJvdW5kKSIgICov CisrICAgICAgU1VCU0NSSVBUX0lOREVYICAgIC8qIGUuZy4gIihsaXRlcmFsKSIgICovCisrICAg IH0ga2luZDsKKysKKysgICAgLyogV2UgYWxzbyBzdG9yZSBlaXRoZXIgdGhlIGxvd2VyIGFuZCB1 cHBlciBib3VuZCBpbmZvLCBvciB0aGUgaW5kZXgKKysgICAgICAgbnVtYmVyLiAgQmVmb3JlIGV2 YWx1YXRpb24gb2YgdGhlIGlucHV0IHZhbHVlcywgd2UgZG8gbm90IGtub3cgaWYgd2UgYXJlCisr ICAgICAgIGFjdHVhbGx5IHdvcmtpbmcgb24gYSByYW5nZSBvZiByYW5nZXMsIG9yIGFuIGluZGV4 IGluIGEgcmFuZ2UuICBTbyBhcyBhCisrICAgICAgIGZpcnN0IHN0ZXAgd2Ugc3RvcmUgYWxsIGlu cHV0IGluIGEgdW5pb24uICBUaGUgYXJyYXkgY2FsY3VsYXRpb24gaXRzZWxmCisrICAgICAgIGRl YWxzIHdpdGggdGhpcyBsYXRlciBvbi4gICovCisrICAgIHVuaW9uCisrICAgIHsKKysgICAgICBz dHJ1Y3Qgc3Vic2NyaXB0X3JhbmdlCisrICAgICAgeworKyAgICAgICAgZW51bSBmOTBfcmFuZ2Vf dHlwZSBmOTBfcmFuZ2VfdHlwZTsKKysgICAgICAgIExPTkdFU1QgbG93LCBoaWdoOworKyAgICAg IH0KKysgICAgICByYW5nZTsKKysgICAgICBMT05HRVNUIG51bWJlcjsKKysgICAgfTsKKysgIH0g KnN1YnNjcmlwdF9hcnJheTsKKysKKysgIC8qIENoZWNrIGlmIHRoZSBudW1iZXIgb2YgYXJndW1l bnRzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIG1hdGNoZXMKKysgICAgIHRoZSBudW1iZXIgb2YgZGlt ZW5zaW9uIG9mIHRoZSBhcnJheS4gIEEgc3RyaW5nIGhhcyBvbmx5IG9uZQorKyAgICAgZGltZW5z aW9uLiAgKi8KKysgIGlmIChuYXJncyAhPSBjYWxjX2Y3N19hcnJheV9kaW1zICh2YWx1ZV90eXBl IChuZXdfYXJyYXkpKSkKKysgICAgZXJyb3IgKF8oIldyb25nIG51bWJlciBvZiBzdWJzY3JpcHRz IikpOworKworKyAgc3Vic2NyaXB0X2FycmF5ID0gYWxsb2NhIChzaXplb2YgKCpzdWJzY3JpcHRf YXJyYXkpICogbmFyZ3MpOworKworKyAgLyogUGFyc2UgdGhlIHVzZXIgaW5wdXQgaW50byB0aGUg U1VCU0NSSVBUX0FSUkFZIHRvIHN0b3JlIGl0LiAgV2UgbmVlZAorKyAgICAgdG8gZXZhbHVhdGUg aXQgZmlyc3QsIGFzIHRoZSBpbnB1dCBpcyBmcm9tIGxlZnQtdG8tcmlnaHQuICBUaGUKKysgICAg IGFycmF5IGlzIHN0b3JlZCBmcm9tIHJpZ2h0LXRvLWxlZnQuICBTbyB3ZSBoYXZlIHRvIHVzZSB0 aGUgdXNlcgorKyAgICAgaW5wdXQgaW4gcmV2ZXJzZSBvcmRlci4gIExhdGVyIG9uLCB3ZSBuZWVk IHRoZSBpbnB1dCBpbmZvcm1hdGlvbiB0bworKyAgICAgcmUtY2FsY3VsYXRlIHRoZSBvdXRwdXQg YXJyYXkuICBGb3IgbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzLCB3ZQorKyAgICAgY2FuIGJlIGRl YWxpbmcgd2l0aCBhbnkgcG9zc2libGUgY29tYmluYXRpb24gb2YgcmFuZ2VzIGFuZCBpbmRpY2Vz CisrICAgICBmb3IgZXZlcnkgZGltZW5zaW9uLiAgKi8KKysgIGZvciAoaSA9IDA7IGkgPCBuYXJn czsgaSsrKQorKyAgICB7CisrICAgICAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZSAqaW5kZXggPSAm c3Vic2NyaXB0X2FycmF5W2ldOworIAorLSAgaWYgKHJhbmdlX3R5cGUgPT0gTE9XX0JPVU5EX0RF RkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCistICAgIGxvd19ib3Vu ZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5nZSk7CistICBlbHNlCistICAgIGxvd19ib3VuZCA9IHZh bHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywgbm9zaWRl KSk7CisrICAgICAgLyogVGhlIHVzZXIgaW5wdXQgaXMgYSByYW5nZSwgd2l0aCBvciB3aXRob3V0 IGxvd2VyIGFuZCB1cHBlciBib3VuZC4KKysJIEUuZy46ICJwIGFycnkoMjo1KSIsICJwIGFycnko IDo1KSIsICJwIGFycnkoIDogKSIsIGV0Yy4gICovCisrICAgICAgaWYgKGV4cC0+ZWx0c1sqcG9z XS5vcGNvZGUgPT0gT1BfRjkwX1JBTkdFKQorKwl7CisrCSAgaW50IHBjID0gKCpwb3MpICsgMTsK KysJICBzdHJ1Y3Qgc3Vic2NyaXB0X3JhbmdlICpyYW5nZTsKKysKKysJICBpbmRleC0+a2luZCA9 IFNVQlNDUklQVF9SQU5HRTsKKysJICByYW5nZSA9ICZpbmRleC0+cmFuZ2U7CisrCisrCSAgKnBv cyArPSAzOworKwkgIHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9IGxvbmdlc3RfdG9faW50IChleHAt PmVsdHNbcGNdLmxvbmdjb25zdCk7CisrCisrCSAgLyogSWYgYSBsb3dlciBib3VuZCB3YXMgcHJv dmlkZWQgYnkgdGhlIHVzZXIsIHRoZSBiaXQgaGFzIGJlZW4KKysJICAgICBzZXQgYW5kIHdlIGNh biBhc3NpZ24gdGhlIHZhbHVlIGZyb20gdGhlIGVsdCBzdGFjay4gIFNhbWUgZm9yCisrCSAgICAg dXBwZXIgYm91bmQuICAqLworKwkgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IEhJR0hf Qk9VTkRfREVGQVVMVCkKKysJICAgICAgfHwgcmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IE5PTkVf Qk9VTkRfREVGQVVMVCkKKysJICAgIHJhbmdlLT5sb3cgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0 ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLAorKwkJCQkJCQkgcG9zLCBub3NpZGUpKTsKKysJICBp ZiAoKHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9PSBMT1dfQk9VTkRfREVGQVVMVCkKKysJICAgICAg fHwgcmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKKysJICAgIHJh bmdlLT5oaWdoID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4 cCwKKysJCQkJCQkJICBwb3MsIG5vc2lkZSkpOworKwl9CisrICAgICAgLyogVXNlciBpbnB1dCBp cyBhbiBpbmRleC4gIEUuZy46ICJwIGFycnkoNSkiLiAgKi8KKysgICAgICBlbHNlCisrCXsKKysJ ICBzdHJ1Y3QgdmFsdWUgKnZhbDsKKyAKKy0gIGlmIChyYW5nZV90eXBlID09IEhJR0hfQk9VTkRf REVGQVVMVCB8fCByYW5nZV90eXBlID09IEJPVEhfQk9VTkRfREVGQVVMVCkKKy0gICAgaGlnaF9i b3VuZCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2UpOworLSAgZWxzZQorLSAgICBoaWdoX2JvdW5k ID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBu b3NpZGUpKTsKKysJICBpbmRleC0+a2luZCA9IFNVQlNDUklQVF9JTkRFWDsKKysKKysJICAvKiBF dmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2FsIGludGVnZXIgaW4gRjc3 LiAgVGhpcworKwkgICAgIGVuc3VyZXMgdGhlIHZhbGlkaXR5IG9mIHRoZSBwcm92aWRlZCBpbmRl eC4gICovCisrCSAgdmFsID0gZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKGV4cCwgcG9z LCBub3NpZGUpOworKwkgIGluZGV4LT5udW1iZXIgPSB2YWx1ZV9hc19sb25nICh2YWwpOworKwl9 CisrCisrICAgIH0KKysKKysgIC8qIFRyYXZlcnNlIHRoZSBhcnJheSBmcm9tIHJpZ2h0IHRvIGxl ZnQgYW5kIGV2YWx1YXRlIGVhY2ggY29ycmVzcG9uZGluZworKyAgICAgdXNlciBpbnB1dC4gIFZB TFVFX1NVQlNDUklQVCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IGluZGV4LCB1bnRpbCBhIHJhbmdlCisr ICAgICBleHByZXNzaW9uIGlzIGV2YWx1YXRlZC4gIEFmdGVyIGEgcmFuZ2UgZXhwcmVzc2lvbiBo YXMgYmVlbiBldmFsdWF0ZWQsCisrICAgICBldmVyeSBzdWJzZXF1ZW50IGV4cHJlc3Npb24gaXMg YWxzbyB0cmVhdGVkIGFzIGEgcmFuZ2UuICAqLworKyAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49 IDA7IGktLSkKKysgICAgeworKyAgICAgIHN0cnVjdCBzdWJzY3JpcHRfc3RvcmUgKmluZGV4ID0g JnN1YnNjcmlwdF9hcnJheVtpXTsKKysgICAgICBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSA9IFRZ UEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSk7CisrCisrICAgICAgc3dpdGNoIChpbmRleC0+a2lu ZCkKKysJeworKwljYXNlIFNVQlNDUklQVF9SQU5HRToKKysJICB7CisrCisrCSAgICAvKiBXaGVu IHdlIGhpdCB0aGUgZmlyc3QgcmFuZ2Ugc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLCB3ZSBtdXN0Cisr CSAgICAgICB0cmVhdCBhbnkgc3Vic2VxdWVudCB1c2VyIGVudHJ5IGFzIGEgcmFuZ2UuICBXZSBz aW1wbHkKKysJICAgICAgIGluY3JlbWVudCBESU1fQ09VTlQgd2hpY2ggdGVsbHMgdXMgaG93IG1h bnkgdGltZXMgd2UgYXJlCisrCSAgICAgICBjYWxsaW5nIFZBTFVFX1NMSUNFXzEuICAqLworKwkg ICAgc3RydWN0IHN1YnNjcmlwdF9yYW5nZSAqcmFuZ2UgPSAmaW5kZXgtPnJhbmdlOworKworKwkg ICAgLyogSWYgbm8gbG93ZXIgYm91bmQgd2FzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLCB3ZSB0YWtl IHRoZQorKwkgICAgICAgZGVmYXVsdCBib3VuZGFyeS4gIFNhbWUgZm9yIHRoZSBoaWdoIGJvdW5k LiAgKi8KKysJICAgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IExPV19CT1VORF9ERUZB VUxUKQorKwkJfHwgKHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQp KQorKwkgICAgICByYW5nZS0+bG93ID0gVFlQRV9MT1dfQk9VTkQgKGluZGV4X3R5cGUpOworKwor KwkgICAgaWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gSElHSF9CT1VORF9ERUZBVUxUKQor KwkJfHwgKHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpKQorKwkg ICAgICByYW5nZS0+aGlnaCA9IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlwZSk7CisrCisrCSAg ICAvKiBCb3RoIHVzZXIgcHJvdmlkZWQgbG93IGFuZCBoaWdoIGJvdW5kIGhhdmUgdG8gYmUgaW5z aWRlIHRoZQorKwkgICAgICAgYXJyYXkgYm91bmRzLiAgVGhyb3cgYW4gZXJyb3IgaWYgbm90LiAg Ki8KKysJICAgIGlmIChyYW5nZS0+bG93IDwgVFlQRV9MT1dfQk9VTkQgKGluZGV4X3R5cGUpCisr CQl8fCByYW5nZS0+bG93ID4gVFlQRV9ISUdIX0JPVU5EIChpbmRleF90eXBlKQorKwkJfHwgcmFu Z2UtPmhpZ2ggPCBUWVBFX0xPV19CT1VORCAoaW5kZXhfdHlwZSkKKysJCXx8IHJhbmdlLT5oaWdo ID4gVFlQRV9ISUdIX0JPVU5EIChpbmRleF90eXBlKSkKKysJICAgICAgZXJyb3IgKF8oInByb3Zp ZGVkIGJvdW5kKHMpIG91dHNpZGUgYXJyYXkgYm91bmQocykiKSk7CisrCisrCSAgICAvKiBESU1f Q09VTlQgY291bnRzIGV2ZXJ5IHVzZXIgYXJndW1lbnQgdGhhdCBpcyB0cmVhdGVkIGFzIGEgcmFu Z2UuCisrCSAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgZXhwcmVzc2lvbnMgbGlrZSAncHJp bnQgYXJyYXkoNywgODo5KS4KKysJICAgICAgIEhlcmUgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEg bGl0ZXJhbCwgYnV0IG11c3QgYmUgdHJlYXRlZCBhcyBhCisrCSAgICAgICByYW5nZSBhcmd1bWVu dCB0byBhbGxvdyB0aGUgY29ycmVjdCBvdXRwdXQgcmVwcmVzZW50YXRpb24uICAqLworKwkgICAg ZGltX2NvdW50Kys7CisrCisrCSAgICBuZXdfYXJyYXkKKysJICAgICAgPSB2YWx1ZV9zbGljZV8x IChuZXdfYXJyYXksCisrCQkJICAgICAgIGxvbmdlc3RfdG9faW50IChyYW5nZS0+bG93KSwKKysJ CQkgICAgICAgbG9uZ2VzdF90b19pbnQgKHJhbmdlLT5oaWdoIC0gcmFuZ2UtPmxvdyArIDEpLAor KwkJCSAgICAgICBkaW1fY291bnQpOworKwkgIH0KKysJICBicmVhazsKKysKKysJY2FzZSBTVUJT Q1JJUFRfSU5ERVg6CisrCSAgeworKwkgICAgLyogRElNX0NPVU5UIG9ubHkgc3RheXMgJzAnIHdo ZW4gbm8gcmFuZ2UgYXJndW1lbnQgd2FzIHByb2Nlc3NlZAorKwkgICAgICAgYmVmb3JlLCBzdGFy dGluZyBmcm9tIHRoZSBsYXN0IGRpbWVuc2lvbi4gIFRoaXMgd2F5IHdlIGNhbgorKwkgICAgICAg cmVkdWNlIHRoZSBudW1iZXIgb2YgZGltZW5zaW9ucyBmcm9tIHRoZSByZXN1bHQgYXJyYXkuCisr CSAgICAgICBIb3dldmVyLCBpZiBhIHJhbmdlIGhhcyBiZWVuIHByb2Nlc3NlZCBiZWZvcmUgYW4g aW5kZXgsIHdlCisrCSAgICAgICB0cmVhdCB0aGUgaW5kZXggbGlrZSBhIHJhbmdlIHdpdGggZXF1 YWwgbG93LSBhbmQgaGlnaCBib3VuZHMKKysJICAgICAgIHRvIGdldCB0aGUgdmFsdWUgb2Zmc2V0 IHJpZ2h0LiAgKi8KKysJICAgIGlmIChkaW1fY291bnQgPT0gMCkKKysJICAgICAgbmV3X2FycmF5 CisrCSAgICAgICAgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKG5ld19hcnJheSwgaW5kZXgt Pm51bWJlciwKKysJCQkJCSAgICBmNzdfZ2V0X2xvd2VyYm91bmQgKHZhbHVlX3R5cGUKKysJCQkJ CQkJCSAgKG5ld19hcnJheSkpKTsKKysJICAgIGVsc2UKKysJICAgICAgeworKwkJLyogQ2hlY2sg Zm9yIHZhbGlkIGluZGV4IGlucHV0LiAgKi8KKysJCWlmIChpbmRleC0+bnVtYmVyIDwgVFlQRV9M T1dfQk9VTkQgKGluZGV4X3R5cGUpCisrCQkgICAgfHwgaW5kZXgtPm51bWJlciA+IFRZUEVfSElH SF9CT1VORCAoaW5kZXhfdHlwZSkpCisrCQkgIGVycm9yIChfKCJlcnJvciBubyBzdWNoIHZlY3Rv ciBlbGVtZW50IikpOworKworKwkJZGltX2NvdW50Kys7CisrCQluZXdfYXJyYXkgPSB2YWx1ZV9z bGljZV8xIChuZXdfYXJyYXksCisrCQkJCQkgICBsb25nZXN0X3RvX2ludCAoaW5kZXgtPm51bWJl ciksCisrCQkJCQkgICAxLCAvKiBsZW5ndGggaXMgJzEnIGVsZW1lbnQgICovCisrCQkJCQkgICBk aW1fY291bnQpOworKwkgICAgICB9CisrCisrCSAgfQorKwkgIGJyZWFrOworKwl9CisrICAgIH0K KysKKysgIC8qIFdpdGggRElNX0NPVU5UID4gMSB3ZSBjdXJyZW50bHkgaGF2ZSBhIG9uZSBkaW1l bnNpb25hbCBhcnJheSwgYnV0IGV4cGVjdAorKyAgICAgYW4gYXJyYXkgb2YgYXJyYXlzLCBkZXBl bmRpbmcgb24gaG93IG1hbnkgcmFuZ2VzIGhhdmUgYmVlbiBwcm92aWRlZCBieQorKyAgICAgdGhl IHVzZXIuICBTbyB3ZSBuZWVkIHRvIHJlYnVpbGQgdGhlIGFycmF5IGRpbWVuc2lvbnMgZm9yIHBy aW50aW5nIGl0CisrICAgICBjb3JyZWN0bHkuCisrICAgICBTdGFydGluZyBmcm9tIHJpZ2h0IHRv IGxlZnQgaW4gdGhlIHVzZXIgaW5wdXQsIGFmdGVyIHdlIGhpdCB0aGUgZmlyc3QKKysgICAgIHJh bmdlIGFyZ3VtZW50IGV2ZXJ5IHN1YnNlcXVlbnQgYXJndW1lbnQgaXMgYWxzbyB0cmVhdGVkIGFz IGEgcmFuZ2UuCisrICAgICBFLmcuOgorKyAgICAgInAgYXJ5KDMsIDcsIDI6MTUpIiBpbiBGb3J0 cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBidXQgd2UgY2FsY3VsYXRlZCAzCisrICAgICByYW5n ZXMuCisrICAgICAicCBhcnkoMywgNzoxMiwgNCkiIGluIEZvcnRyYW4gaGFzIG9ubHkgMSBkaW1l bnNpb24sIGJ1dCB3ZSBjYWxjdWxhdGVkIDIKKysgICAgIHJhbmdlcy4KKysgICAgICJwIGFyeSgy OjQsIDUsIDcpIiBpbiBGb3J0cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBhbmQgd2UgY2FsY3Vs YXRlZCAxCisrICAgICByYW5nZS4gICovCisrICBpZiAoZGltX2NvdW50ID4gMSkKKysgICAgewor KyAgICAgIHN0cnVjdCB2YWx1ZSAqdiA9IE5VTEw7CisgCistICByZXR1cm4gdmFsdWVfc2xpY2Ug KGFycmF5LCBsb3dfYm91bmQsIGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKKysgICAgICB0 ZW1wX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKTsKKysK KysgICAgICAvKiBFdmVyeSBTVUJTQ1JJUFRfUkFOR0UgaW4gdGhlIHVzZXIgaW5wdXQgc2lnbmlm aWVzIGFuIGFjdHVhbCByYW5nZSBpbgorKwkgdGhlIG91dHB1dCBhcnJheS4gIFNvIHdlIHRyYXZl cnNlIHRoZSBTVUJTQ1JJUFRfQVJSQVkgYWdhaW4sIGxvb2tpbmcKKysJIGZvciBhIHJhbmdlIGVu dHJ5LiAgV2hlbiB3ZSBmaW5kIG9uZSwgd2UgdXNlIHRoZSByYW5nZSBpbmZvIHRvIGNyZWF0ZQor KwkgYW4gYWRkaXRpb25hbCByYW5nZV90eXBlIHRvIHNldCB0aGUgY29ycmVjdCBib3VuZHMgYW5k IGRpbWVuc2lvbnMgZm9yCisrCSB0aGUgb3V0cHV0IGFycmF5LiAgKi8KKysgICAgICBmb3IgKGkg PSAwOyBpIDwgbmFyZ3M7IGkrKykKKysJeworKwkgIHN0cnVjdCBzdWJzY3JpcHRfc3RvcmUgKmlu ZGV4ID0gJnN1YnNjcmlwdF9hcnJheVtpXTsKKysKKysJICBpZiAoaW5kZXgtPmtpbmQgPT0gU1VC U0NSSVBUX1JBTkdFKQorKwkgICAgeworKwkgICAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwg KmludGVyaW1fYXJyYXlfdHlwZTsKKysKKysJICAgICAgcmFuZ2VfdHlwZQorKwkJPSBjcmVhdGVf c3RhdGljX3JhbmdlX3R5cGUgKE5VTEwsCisrCQkJCSAgICAgdGVtcF90eXBlLAorKwkJCQkgICAg IDEsCisrCQkJCSAgICAgaW5kZXgtPnJhbmdlLmhpZ2ggLSBpbmRleC0+cmFuZ2UubG93ICsgMSk7 CisrCisrCSAgICAgIGludGVyaW1fYXJyYXlfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxM LAorKwkJCQkJCSAgICAgIHRlbXBfdHlwZSwKKysJCQkJCQkgICAgICByYW5nZV90eXBlKTsKKysK KysJICAgICAgLyogRm9yIHNvbWUgcmVhc29uIHRoZSB0eXBlIGNvZGUgb2YgdGhlIGNvbnRlbnRz IGlzIG1pc3NpbmcsIHNvCisrCQkgcmVzZXQgaXQgZnJvbSB0aGUgb3JpZ2luYWwgYXJyYXkuICAq LworKwkgICAgICBUWVBFX0NPREUgKGludGVyaW1fYXJyYXlfdHlwZSkKKysJCT0gVFlQRV9DT0RF ICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKTsKKysKKysJICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVl IChpbnRlcmltX2FycmF5X3R5cGUpOworKworKwkgICAgICB0ZW1wX3R5cGUgPSB2YWx1ZV90eXBl ICh2KTsKKysJICAgIH0KKysKKysJfQorKyAgICAgIHZhbHVlX2NvbnRlbnRzX2NvcHkgKHYsIDAs IG5ld19hcnJheSwgMCwgVFlQRV9MRU5HVEggKHRlbXBfdHlwZSkpOworKyAgICAgIHJldHVybiB2 OworKyAgICB9CisrCisrICByZXR1cm4gbmV3X2FycmF5OworIH0KKyAKKyAKK0BAIC0xODEwLDE0 ICsyMDM0LDExIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVj dF90eXBlLAorICAgICAgIHN3aXRjaCAoY29kZSkKKyAJeworIAljYXNlIFRZUEVfQ09ERV9BUlJB WToKKy0JICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9GOTBfUkFOR0UpCistCSAg ICByZXR1cm4gdmFsdWVfZjkwX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywgbm9zaWRlKTsKKy0J ICBlbHNlCistCSAgICBnb3RvIG11bHRpX2Y3N19zdWJzY3JpcHQ7CisrCSAgcmV0dXJuIHZhbHVl X2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5hcmdzLCBub3NpZGUpOworIAorIAljYXNl IFRZUEVfQ09ERV9TVFJJTkc6CisgCSAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0gT1Bf RjkwX1JBTkdFKQorLQkgICAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBw b3MsIG5vc2lkZSk7CisrCSAgICByZXR1cm4gdmFsdWVfZjkwX3N1YmFycmF5IChhcmcxLCBleHAs IHBvcywgMSwgbm9zaWRlKTsKKyAJICBlbHNlCisgCSAgICB7CisgCSAgICAgIGFyZzIgPSBldmFs dWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7CitAQCAtMjIyMiw0 OSArMjQ0Myw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVj dF90eXBlLAorIAl9CisgICAgICAgcmV0dXJuIChhcmcxKTsKKyAKKy0gICAgbXVsdGlfZjc3X3N1 YnNjcmlwdDoKKy0gICAgICB7CistCUxPTkdFU1Qgc3Vic2NyaXB0X2FycmF5W01BWF9GT1JUUkFO X0RJTVNdOworLQlpbnQgbmRpbWVuc2lvbnMgPSAxLCBpOworLQlzdHJ1Y3QgdmFsdWUgKmFycmF5 ID0gYXJnMTsKKy0KKy0JaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKKy0JICBlcnJvciAo XygiVG9vIG1hbnkgc3Vic2NyaXB0cyBmb3IgRjc3ICglZCBNYXgpIiksIE1BWF9GT1JUUkFOX0RJ TVMpOworLQorLQluZGltZW5zaW9ucyA9IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOworLQor LQlpZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCistCSAgZXJyb3IgKF8oIldyb25nIG51bWJlciBv ZiBzdWJzY3JpcHRzIikpOworLQorLQlnZGJfYXNzZXJ0IChuYXJncyA+IDApOworLQorLQkvKiBO b3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3JpcHQgZXhwcmVzc2lv biAKKy0JICAgbGV0IHVzIGFjdHVhbGx5IGZpbmQgb3V0IHdoZXJlIHRoaXMgZWxlbWVudCBleGlz dHMgaW4gdGhlIGFycmF5LiAgKi8KKy0KKy0JLyogVGFrZSBhcnJheSBpbmRpY2VzIGxlZnQgdG8g cmlnaHQuICAqLworLQlmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKKy0JICB7CistCSAgICAv KiBFdmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2FsIGludGVnZXIgaW4g Rjc3LiAgKi8KKy0JICAgIGFyZzIgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhw LCBwb3MsIG5vc2lkZSk7CistCistCSAgICAvKiBGaWxsIGluIHRoZSBzdWJzY3JpcHQgYXJyYXku ICAqLworLQorLQkgICAgc3Vic2NyaXB0X2FycmF5W2ldID0gdmFsdWVfYXNfbG9uZyAoYXJnMik7 CistCSAgfQorLQorLQkvKiBJbnRlcm5hbCB0eXBlIG9mIGFycmF5IGlzIGFycmFuZ2VkIHJpZ2h0 IHRvIGxlZnQuICAqLworLQlmb3IgKGkgPSBuYXJnczsgaSA+IDA7IGktLSkKKy0JICB7CistCSAg ICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFy cmF5KSk7CistCSAgICBMT05HRVNUIGluZGV4ID0gc3Vic2NyaXB0X2FycmF5W2kgLSAxXTsKKy0K Ky0JICAgIGFycmF5ID0gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcnJheSwgaW5kZXgsCist CQkJCQkgICAgICBmNzdfZ2V0X2xvd2VyYm91bmQgKGFycmF5X3R5cGUpKTsKKy0JICB9CistCist CXJldHVybiBhcnJheTsKKy0gICAgICB9CistCisgICAgIGNhc2UgQklOT1BfTE9HSUNBTF9BTkQ6 CisgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywgbm9z aWRlKTsKKyAgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKK0BAIC0zMTIxLDYgKzMyOTks OSBAQCBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKKyAgIGlu dCBuZGltZW4gPSAxOworICAgc3RydWN0IHR5cGUgKnRtcF90eXBlOworIAorKyAgaWYgKFRZUEVf Q09ERSAoYXJyYXlfdHlwZSkgPT0gVFlQRV9DT0RFX1NUUklORykKKysgICAgcmV0dXJuIDE7Cisr CisgICBpZiAoKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZKSkKKyAg ICAgZXJyb3IgKF8oIkNhbid0IGdldCBkaW1lbnNpb25zIGZvciBhIG5vbi1hcnJheSB0eXBlIikp OworIAorZGlmZiAtLWdpdCBhL2dkYi9mLWV4cC55IGIvZ2RiL2YtZXhwLnkKK2luZGV4IDU2NjI5 ZGMuLmFiMjNkZjAgMTAwNjQ0CistLS0gYS9nZGIvZi1leHAueQorKysrIGIvZ2RiL2YtZXhwLnkK K0BAIC0zMDgsNiArMzA4LDggQEAgYXJnbGlzdCA6CXN1YnJhbmdlCisgICAgCisgYXJnbGlzdAk6 CWFyZ2xpc3QgJywnIGV4cCAgICVwcmVjIEFCT1ZFX0NPTU1BCisgCQkJeyBhcmdsaXN0X2xlbisr OyB9CisrCXwJYXJnbGlzdCAnLCcgc3VicmFuZ2UJJXByZWMgQUJPVkVfQ09NTUEKKysJCQl7IGFy Z2xpc3RfbGVuKys7IH0KKyAJOworIAorIC8qIFRoZXJlIGFyZSBmb3VyIHNvcnRzIG9mIHN1YnJh bmdlIHR5cGVzIGluIEY5MC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3Zh bG9wcy5jCitpbmRleCA1ZTVmNjg1Li5mOGQyM2ZiIDEwMDY0NAorLS0tIGEvZ2RiL3ZhbG9wcy5j CisrKysgYi9nZGIvdmFsb3BzLmMKK0BAIC0zNzU5LDU2ICszNzU5LDE1MSBAQCB2YWx1ZV9vZl90 aGlzX3NpbGVudCAoY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmcpCisgc3RydWN0IHZh bHVlICoKKyB2YWx1ZV9zbGljZSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBp bnQgbGVuZ3RoKQorIHsKKysgIC8qIFBhc3MgdW5hbHRlcmVkIGFyZ3VtZW50cyB0byBWQUxVRV9T TElDRV8xLCBwbHVzIGEgQ0FMTF9DT1VOVCBvZiAnMScgYXMgd2UKKysgICAgIGFyZSBvbmx5IGNv bnNpZGVyaW5nIHRoZSBoaWdoZXN0IGRpbWVuc2lvbiwgb3Igd2UgYXJlIHdvcmtpbmcgb24gYSBv bmUKKysgICAgIGRpbWVuc2lvbmFsIGFycmF5LiAgU28gd2UgY2FsbCBWQUxVRV9TTElDRV8xIGV4 YWN0bHkgb25jZS4gICovCisrICByZXR1cm4gdmFsdWVfc2xpY2VfMSAoYXJyYXksIGxvd2JvdW5k LCBsZW5ndGgsIDEpOworK30KKysKKysvKiBDQUxMX0NPVU5UIGlzIHVzZWQgdG8gZGV0ZXJtaW5l IGlmIHdlIGFyZSBjYWxsaW5nIHRoZSBmdW5jdGlvbiBvbmNlLCBlLmcuCisrICAgd2UgYXJlIHdv cmtpbmcgb24gdGhlIGN1cnJlbnQgZGltZW5zaW9uIG9mIEFSUkFZLCBvciBpZiB3ZSBhcmUgY2Fs bGluZworKyAgIHRoZSBmdW5jdGlvbiByZXBlYXRlZGx5LiAgSW4gdGhlIGxhdGVyIGNhc2Ugd2Ug bmVlZCB0byB0YWtlIGVsZW1lbnRzCisrICAgZnJvbSB0aGUgVEFSR0VUX1RZUEUgb2YgQVJSQVku CisrICAgV2l0aCBhIENBTExfQ09VTlQgZ3JlYXRlciB0aGFuIDEgd2UgY2FsY3VsYXRlIHRoZSBv ZmZzZXRzIGZvciBldmVyeSBlbGVtZW50CisrICAgdGhhdCBzaG91bGQgYmUgaW4gdGhlIHJlc3Vs dCBhcnJheS4gIFRoZW4gd2UgZmV0Y2ggdGhlIGNvbnRlbnRzIGFuZCB0aGVuCisrICAgY29weSB0 aGVtIGludG8gdGhlIHJlc3VsdCBhcnJheS4gIFRoZSByZXN1bHQgYXJyYXkgd2lsbCBoYXZlIG9u ZSBkaW1lbnNpb24KKysgICBsZXNzIHRoYW4gdGhlIGlucHV0IGFycmF5LCBzbyBsYXRlciBvbiB3 ZSBuZWVkIHRvIHJlY3JlYXRlIHRoZSBpbmRpY2VzIGFuZAorKyAgIHJhbmdlcyBpbiB0aGUgY2Fs bGluZyBmdW5jdGlvbi4gICovCisrCisrc3RydWN0IHZhbHVlICoKKyt2YWx1ZV9zbGljZV8xIChz dHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgsIGludCBjYWxsX2Nv dW50KQorK3sKKyAgIHN0cnVjdCB0eXBlICpzbGljZV9yYW5nZV90eXBlLCAqc2xpY2VfdHlwZSwg KnJhbmdlX3R5cGU7CistICBMT05HRVNUIGxvd2VyYm91bmQsIHVwcGVyYm91bmQ7CistICBzdHJ1 Y3QgdmFsdWUgKnNsaWNlOworLSAgc3RydWN0IHR5cGUgKmFycmF5X3R5cGU7CisrICBzdHJ1Y3Qg dHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7Cisr ICBzdHJ1Y3QgdHlwZSAqZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBF IChhcnJheV90eXBlKSk7CisrICB1bnNpZ25lZCBpbnQgZWx0X3NpemUsIGVsdF9vZmZzOworKyAg TE9OR0VTVCBlbHRfc3RyaWRlLCBhcnlfaGlnaF9ib3VuZCwgYXJ5X2xvd19ib3VuZDsKKysgIHN0 cnVjdCB2YWx1ZSAqdjsKKysgIGludCBzbGljZV9yYW5nZV9zaXplLCBpID0gMCwgcm93X2NvdW50 ID0gMSwgZWxlbV9jb3VudCA9IDE7CisgCistICBhcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAo dmFsdWVfdHlwZSAoYXJyYXkpKTsKKysgIC8qIENoZWNrIGZvciBsZWdhY3kgY29kZSBpZiB3ZSBh cmUgYWN0dWFsbHkgZGVhbGluZyB3aXRoIGFuIGFycmF5IG9yCisrICAgICBzdHJpbmcuICAqLwor ICAgaWYgKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZCisgICAgICAg JiYgVFlQRV9DT0RFIChhcnJheV90eXBlKSAhPSBUWVBFX0NPREVfU1RSSU5HKQorICAgICBlcnJv ciAoXygiY2Fubm90IHRha2Ugc2xpY2Ugb2Ygbm9uLWFycmF5IikpOworIAorLSAgcmFuZ2VfdHlw ZSA9IFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSk7CistICBpZiAoZ2V0X2Rpc2NyZXRlX2Jv dW5kcyAocmFuZ2VfdHlwZSwgJmxvd2VyYm91bmQsICZ1cHBlcmJvdW5kKSA8IDApCistICAgIGVy cm9yIChfKCJzbGljZSBmcm9tIGJhZCBhcnJheSBvciBiaXRzdHJpbmciKSk7CisrICBhcnlfbG93 X2JvdW5kID0gVFlQRV9MT1dfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSkpOwor KyAgYXJ5X2hpZ2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJy YXlfdHlwZSkpOworKworKyAgLyogV2hlbiB3ZSBhcmUgd29ya2luZyBvbiBhIG11bHRpLWRpbWVu c2lvbmFsIGFycmF5LCB3ZSBuZWVkIHRvIGdldCB0aGUKKysgICAgIGF0dHJpYnV0ZXMgb2YgdGhl IHVuZGVybHlpbmcgdHlwZS4gICovCisrICBpZiAoY2FsbF9jb3VudCA+IDEpCisrICAgIHsKKysg ICAgICBlbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGVsdF90eXBl KSk7CisrICAgICAgcm93X2NvdW50ID0gVFlQRV9MRU5HVEggKGFycmF5X3R5cGUpCisrCQkgICAg LyBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOworKyAgICB9Cisr CisrICBlbGVtX2NvdW50ID0gbGVuZ3RoOworKyAgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0 X3R5cGUpOworKyAgZWx0X29mZnMgPSBsb25nZXN0X3RvX2ludCAobG93Ym91bmQgLSBhcnlfbG93 X2JvdW5kKTsKKysgIGVsdF9zdHJpZGUgPSBUWVBFX0xFTkdUSCAoVFlQRV9JTkRFWF9UWVBFIChh cnJheV90eXBlKSk7CisrCisrICBlbHRfb2ZmcyAqPSBlbHRfc2l6ZTsKKysKKysgIC8qIENoZWNr IGZvciB2YWxpZCB1c2VyIGlucHV0LiAgSW4gY2FzZSBvZiBGb3J0cmFuIHRoaXMgd2FzIGFscmVh ZHkgZG9uZQorKyAgICAgaW4gdGhlIGNhbGxpbmcgZnVuY3Rpb24uICAqLworKyAgaWYgKGNhbGxf Y291bnQgPT0gMQorKwkmJiAoIVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChh cnJheV90eXBlKQorKwkgICAgICAmJiBlbHRfb2ZmcyA+PSBUWVBFX0xFTkdUSCAoYXJyYXlfdHlw ZSkpKQorKyAgICBlcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIpKTsKKyAKKy0gIGlm IChsb3dib3VuZCA8IGxvd2VyYm91bmQgfHwgbGVuZ3RoIDwgMAorLSAgICAgIHx8IGxvd2JvdW5k ICsgbGVuZ3RoIC0gMSA+IHVwcGVyYm91bmQpCistICAgIGVycm9yIChfKCJzbGljZSBvdXQgb2Yg cmFuZ2UiKSk7CisrICAvKiBDQUxMX0NPVU5UIGlzIDEgd2hlbiB3ZSBhcmUgZGVhbGluZyBlaXRo ZXIgd2l0aCB0aGUgaGlnaGVzdCBkaW1lbnNpb24KKysgICAgIG9mIHRoZSBhcnJheSwgb3IgYSBv bmUgZGltZW5zaW9uYWwgYXJyYXkuICBTZXQgUkFOR0VfVFlQRSBhY2NvcmRpbmdseS4KKysgICAg IEluIGJvdGggY2FzZXMgd2UgY2FsY3VsYXRlIGhvdyBtYW55IHJvd3MvZWxlbWVudHMgd2lsbCBi ZSBpbiB0aGUgb3V0cHV0CisrICAgICBhcnJheSBieSBzZXR0aW5nIHNsaWNlX3JhbmdlX3NpemUu ICAqLworKyAgaWYgKGNhbGxfY291bnQgPT0gMSkKKysgICAgeworKyAgICAgIHJhbmdlX3R5cGUg PSBUWVBFX0lOREVYX1RZUEUgKGFycmF5X3R5cGUpOworKyAgICAgIHNsaWNlX3JhbmdlX3NpemUg PSBlbGVtX2NvdW50OworKworKyAgICAgIC8qIENoZWNrIGlmIHRoZSBhcnJheSBib3VuZHMgYXJl IHZhbGlkLiAgKi8KKysgICAgICBpZiAoZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwg JmFyeV9sb3dfYm91bmQsICZhcnlfaGlnaF9ib3VuZCkgPCAwKQorKwllcnJvciAoXygic2xpY2Ug ZnJvbSBiYWQgYXJyYXkgb3IgYml0c3RyaW5nIikpOworKyAgICB9CisrICAvKiBXaGVuIENBTExf Q09VTlQgaXMgZ3JlYXRlciB0aGFuIDEsIHdlIGFyZSBkZWFsaW5nIHdpdGggYW4gYXJyYXkgb2Yg YXJyYXlzLgorKyAgICAgU28gd2UgbmVlZCB0byBnZXQgdGhlIHR5cGUgYmVsb3cgdGhlIGN1cnJl bnQgb25lIGFuZCBzZXQgdGhlIFJBTkdFX1RZUEUKKysgICAgIGFjY29yZGluZ2x5LiAgKi8KKysg IGVsc2UKKysgICAgeworKyAgICAgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKFRZUEVf VEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKKysgICAgICBzbGljZV9yYW5nZV9zaXplID0gKGFy eV9sb3dfYm91bmQgKyByb3dfY291bnQgLSAxKSAqIChlbGVtX2NvdW50KTsKKysgICAgICBhcnlf bG93X2JvdW5kID0gVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpOworKyAgICB9CisgCisgICAv KiBGSVhNRS10eXBlLWFsbG9jYXRpb246IG5lZWQgYSB3YXkgdG8gZnJlZSB0aGlzIHR5cGUgd2hl biB3ZSBhcmUKKy0gICAgIGRvbmUgd2l0aCBpdC4gICovCistICBzbGljZV9yYW5nZV90eXBlID0g Y3JlYXRlX3N0YXRpY19yYW5nZV90eXBlICgoc3RydWN0IHR5cGUgKikgTlVMTCwKKy0JCQkJCSAg ICAgICBUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV90eXBlKSwKKy0JCQkJCSAgICAgICBsb3dib3Vu ZCwKKy0JCQkJCSAgICAgICBsb3dib3VuZCArIGxlbmd0aCAtIDEpOworKyAgICAgIGRvbmUgd2l0 aCBpdC4gICovCisgCisrICBzbGljZV9yYW5nZV90eXBlID0gY3JlYXRlX3N0YXRpY19yYW5nZV90 eXBlIChOVUxMLCBUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV90eXBlKSwKKysJCQkJCWFyeV9sb3df Ym91bmQsIHNsaWNlX3JhbmdlX3NpemUpOworICAgeworLSAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVu dF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7CistICAgIExPTkdFU1Qgb2Zm c2V0CistICAgICAgPSAobG93Ym91bmQgLSBsb3dlcmJvdW5kKSAqIFRZUEVfTEVOR1RIIChjaGVj a190eXBlZGVmIChlbGVtZW50X3R5cGUpKTsKKysgICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlw ZTsKKysKKysgICAgLyogV2hlbiBDQUxMX0NPVU5UIGVxdWFscyAxIHdlIGNhbiB1c2UgdGhlIGxl Z2FjeSBjb2RlIGZvciBzdWJhcnJheXMuICAqLworKyAgICBpZiAoY2FsbF9jb3VudCA9PSAxKQor KyAgICAgIHsKKysJZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7 CisgCistICAgIHNsaWNlX3R5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoKHN0cnVjdCB0eXBlICop IE5VTEwsCistCQkJCSAgICBlbGVtZW50X3R5cGUsCistCQkJCSAgICBzbGljZV9yYW5nZV90eXBl KTsKKy0gICAgVFlQRV9DT0RFIChzbGljZV90eXBlKSA9IFRZUEVfQ09ERSAoYXJyYXlfdHlwZSk7 CisrCXNsaWNlX3R5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwgZWxlbWVudF90eXBlLCBz bGljZV9yYW5nZV90eXBlKTsKKysKKysJVFlQRV9DT0RFIChzbGljZV90eXBlKSA9IFRZUEVfQ09E RSAoYXJyYXlfdHlwZSk7CisrCisrCWlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1v cnkgJiYgdmFsdWVfbGF6eSAoYXJyYXkpKQorKwkgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5IChz bGljZV90eXBlKTsKKysJZWxzZQorKwkgIHsKKysJICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAoc2xp Y2VfdHlwZSk7CisrCSAgICB2YWx1ZV9jb250ZW50c19jb3B5ICh2LAorKwkJCQkgdmFsdWVfZW1i ZWRkZWRfb2Zmc2V0ICh2KSwKKysJCQkJIGFycmF5LAorKwkJCQkgdmFsdWVfZW1iZWRkZWRfb2Zm c2V0IChhcnJheSkgKyBlbHRfb2ZmcywKKysJCQkJIGVsdF9zaXplICogbG9uZ2VzdF90b19pbnQg KGxlbmd0aCkpOworKwkgIH0KKyAKKy0gICAgaWYgKFZBTFVFX0xWQUwgKGFycmF5KSA9PSBsdmFs X21lbW9yeSAmJiB2YWx1ZV9sYXp5IChhcnJheSkpCistICAgICAgc2xpY2UgPSBhbGxvY2F0ZV92 YWx1ZV9sYXp5IChzbGljZV90eXBlKTsKKysgICAgICB9CisrICAgIC8qIFdoZW4gQ0FMTF9DT1VO VCBpcyBsYXJnZXIgdGhhbiAxIHdlIGFyZSB3b3JraW5nIG9uIGEgcmFuZ2Ugb2YgcmFuZ2VzLgor KyAgICAgICBTbyB3ZSBjb3B5IHRoZSByZWxldmFudCBlbGVtZW50cyBpbnRvIHRoZSBuZXcgYXJy YXkgd2UgcmV0dXJuLiAgKi8KKyAgICAgZWxzZQorICAgICAgIHsKKy0Jc2xpY2UgPSBhbGxvY2F0 ZV92YWx1ZSAoc2xpY2VfdHlwZSk7CistCXZhbHVlX2NvbnRlbnRzX2NvcHkgKHNsaWNlLCAwLCBh cnJheSwgb2Zmc2V0LAorLQkJCSAgICAgdHlwZV9sZW5ndGhfdW5pdHMgKHNsaWNlX3R5cGUpKTsK KysJTE9OR0VTVCBkc3Rfb2Zmc2V0ID0gMDsKKysJTE9OR0VTVCBzcmNfcm93X2xlbmd0aCA9IFRZ UEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7CisrCisrCWVsZW1lbnRf dHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsK KysJc2xpY2VfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCBlbGVtZW50X3R5cGUsIHNs aWNlX3JhbmdlX3R5cGUpOworKworKwlUWVBFX0NPREUgKHNsaWNlX3R5cGUpID0gVFlQRV9DT0RF IChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7CisrCisrCXYgPSBhbGxvY2F0ZV92YWx1 ZSAoc2xpY2VfdHlwZSk7CisrCWZvciAoaSA9IDA7IGkgPCBsb25nZXN0X3RvX2ludCAocm93X2Nv dW50KTsgaSsrKQorKwkgIHsKKysJICAgIC8qIEZldGNoZXMgdGhlIGNvbnRlbnRzIG9mIEFSUkFZ IGFuZCBjb3BpZXMgdGhlbSBpbnRvIFYuICAqLworKwkgICAgdmFsdWVfY29udGVudHNfY29weSAo diwKKysJCQkJIGRzdF9vZmZzZXQsCisrCQkJCSBhcnJheSwKKysJCQkJIGVsdF9vZmZzLAorKwkJ CQkgZWx0X3NpemUgKiBlbGVtX2NvdW50KTsKKysJICAgIGVsdF9vZmZzICs9IHNyY19yb3dfbGVu Z3RoOworKwkgICAgZHN0X29mZnNldCArPSBlbHRfc2l6ZSAqIGVsZW1fY291bnQ7CisrCSAgfQor ICAgICAgIH0KKyAKKy0gICAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc2xpY2UsIGFy cmF5KTsKKy0gICAgVkFMVUVfRlJBTUVfSUQgKHNsaWNlKSA9IFZBTFVFX0ZSQU1FX0lEIChhcnJh eSk7CistICAgIHNldF92YWx1ZV9vZmZzZXQgKHNsaWNlLCB2YWx1ZV9vZmZzZXQgKGFycmF5KSAr IG9mZnNldCk7CisrICAgIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24gKHYsIGFycmF5KTsK KysgICAgVkFMVUVfUkVHTlVNICh2KSA9IFZBTFVFX1JFR05VTSAoYXJyYXkpOworKyAgICBWQUxV RV9GUkFNRV9JRCAodikgPSBWQUxVRV9GUkFNRV9JRCAoYXJyYXkpOworKyAgICBzZXRfdmFsdWVf b2Zmc2V0ICh2LCB2YWx1ZV9vZmZzZXQgKGFycmF5KSArIGVsdF9vZmZzKTsKKyAgIH0KKyAKKy0g IHJldHVybiBzbGljZTsKKysgIHJldHVybiB2OworIH0KKyAKKyAvKiBDcmVhdGUgYSB2YWx1ZSBm b3IgYSBGT1JUUkFOIGNvbXBsZXggbnVtYmVyLiAgQ3VycmVudGx5IG1vc3Qgb2YgdGhlCitkaWZm IC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIvdmFsdWUuaAoraW5kZXggZWVhMGU1OS4uMDU5Mzlj NCAxMDA2NDQKKy0tLSBhL2dkYi92YWx1ZS5oCisrKysgYi9nZGIvdmFsdWUuaAorQEAgLTEwNTYs NiArMTA1Niw4IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhcnlpbmdfdG9fc2xpY2UgKHN0cnVj dCB2YWx1ZSAqKTsKKyAKKyBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9zbGljZSAoc3RydWN0 IHZhbHVlICosIGludCwgaW50KTsKKyAKKytleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9zbGlj ZV8xIChzdHJ1Y3QgdmFsdWUgKiwgaW50LCBpbnQsIGludCk7CisrCisgZXh0ZXJuIHN0cnVjdCB2 YWx1ZSAqdmFsdWVfbGl0ZXJhbF9jb21wbGV4IChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHZhbHVl ICosCisgCQkJCQkgICAgc3RydWN0IHR5cGUgKik7CisgCistLSAKKzEuNy4wLjcKCmRpZmYgLS1n aXQgYS9nZGItZm9ydHJhbi1zdHJpZGUtaW50ZWwtMm9mNi5wYXRjaCBiL2dkYi1mb3J0cmFuLXN0 cmlkZS1pbnRlbC0yb2Y2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjEyZjc1MTUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZm9ydHJhbi1zdHJpZGUtaW50ZWwtMm9m Ni5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tOiBDaHJpc3RvcGggV2Vpbm1hbm4gPGNocmlz dG9waC50LndlaW5tYW5uQGludGVsLmNvbT4KK1tQQVRDSCAyLzZdIGZvcnRyYW46IGNvbWJpbmUg c3ViYXJyYXkgYW5kIHN0cmluZyBjb21wdXRhdGlvbgoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItcGF0Y2hlcy8yMDE1LTEyL21zZzAwMDEwLmh0bWwKK01lc3NhZ2UtSWQ6IDwxNDQ4OTc2 MDc1LTExNDU2LTMtZ2l0LXNlbmQtZW1haWwtY2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29t PgorCitTdHJpbmdzIG9ubHkgaGF2ZSBvbmUgZGltZW5zaW9uLCBidXQgdGhlIGVsZW1lbnQgY29t cHV0YXRpb24gaXMKK2lkZW50aWNhbCB0byB0aGUgc3ViYXJyYXkgY29tcHV0YXRpb24gZm9yIHJh bmdlcyBhbmQgaW5kaWNlcy4KKworMjAxMy0xMS0yNiAgQ2hyaXN0b3BoIFdlaW5tYW5uICA8Y2hy aXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorCisJKiBldmFsLmMgKGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCk6IENhbGwKKwl2YWx1ZV9mOTBfc3ViYXJyYXkgZm9yIHByaW50IGV4cHJlc3Np b25zIG9uIGFycmF5IGFuZAorCXN0cmluZyB0eXBlcy4KKworCisKK1NpZ25lZC1vZmYtYnk6IENo cmlzdG9waCBXZWlubWFubiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorLS0tCisg Z2RiL2V2YWwuYyB8ICAgMTAgKy0tLS0tLS0tLQorIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRp b25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9l dmFsLmMKK2luZGV4IDJjZWNjYmMuLjBjMWI2MDcgMTAwNjQ0CistLS0gYS9nZGIvZXZhbC5jCisr KysgYi9nZGIvZXZhbC5jCitAQCAtMjAzNCwxNiArMjAzNCw4IEBAIGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICAgIHN3aXRjaCAoY29kZSkK KyAJeworIAljYXNlIFRZUEVfQ09ERV9BUlJBWToKKy0JICByZXR1cm4gdmFsdWVfZjkwX3N1YmFy cmF5IChhcmcxLCBleHAsIHBvcywgbmFyZ3MsIG5vc2lkZSk7CistCisgCWNhc2UgVFlQRV9DT0RF X1NUUklORzoKKy0JICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9GOTBfUkFOR0Up CistCSAgICByZXR1cm4gdmFsdWVfZjkwX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywgMSwgbm9z aWRlKTsKKy0JICBlbHNlCistCSAgICB7CistCSAgICAgIGFyZzIgPSBldmFsdWF0ZV9zdWJleHBf d2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7CistCSAgICAgIHJldHVybiB2YWx1ZV9z dWJzY3JpcHQgKGFyZzEsIHZhbHVlX2FzX2xvbmcgKGFyZzIpKTsKKy0JICAgIH0KKysJICByZXR1 cm4gIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5hcmdzLCBub3NpZGUpOwor IAorIAljYXNlIFRZUEVfQ09ERV9QVFI6CisgCWNhc2UgVFlQRV9DT0RFX0ZVTkM6CistLSAKKzEu Ny4wLjcKCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1zdHJpZGUtaW50ZWwtM29mNi5wYXRjaCBi L2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC0zb2Y2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmViZTNhODcKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZm9ydHJhbi1z dHJpZGUtaW50ZWwtM29mNi5wYXRjaApAQCAtMCwwICsxLDE2MiBAQAorRnJvbTogQ2hyaXN0b3Bo IFdlaW5tYW5uIDxjaHJpc3RvcGgudC53ZWlubWFubkBpbnRlbC5jb20+CitbUEFUQ0ggMy82XSBm b3J0cmFuOiBjaGFuZ2Ugc3VicmFuZ2UgZW51bSB0byBiaXQgZmllbGQKK2h0dHBzOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxNS0xMi9tc2cwMDAwNi5odG1sCitNZXNzYWdlLUlk OiA8MTQ0ODk3NjA3NS0xMTQ1Ni00LWdpdC1zZW5kLWVtYWlsLWNocmlzdG9waC50LndlaW5tYW5u QGludGVsLmNvbT4KKworQ2hhbmdlIEZvcnRyYW4gc3VicmFuZ2UgZW51bSBmb3Igc3VicmFuZ2Ug ZXhwcmVzc2lvbnMgdG8KK3JlcHJlc2VudCBhIGJpdGZpZWxkIGZvciBlYXNpZXIgbWFuaXB1bGF0 aW9uLiAgQ29uc2VxdWVudGx5CithbHNvIGNoYW5nZSBvY2N1cmVuY2VzIGFuZCBldmFsdWF0aW9u IG9mIHNhaWQgZW51bS4gIFRoZQorYmVoYXZpb3VyIG9mIEdEQiBpcyB1bmNoYW5nZWQuCisKKzIw MTMtMTEtMjcgIENocmlzdG9waCBXZWlubWFubiAgPGNocmlzdG9waC50LndlaW5tYW5uQGludGVs LmNvbT4KKworCSogZXZhbC5jICh2YWx1ZV9mOTBfc3ViYXJyYXkpOiBDaGFuZ2UgZXZhbHVhdGlv biBvZiB0aGUKKwlzdWJhcnJheSBib3VuZGFyaWVzLiAgU2V0IGJvdW5kYXJpZXMgdG8gYmUgZWl0 aGVyIHVzZXIKKwlwcm92aWRlZCAoYml0IGluIGY5MF9yYW5nZV90eXBlIHdhcyBzZXQpIG9yIHRh a2UgdGhlCisJZGVmYXVsdCB2YWx1ZSBpZiB0aGUgYm91bmRhcnkgd2FzIG5vdCBwcm92aWRlZCBi eSB0aGUgdXNlci4KKwkqIGYtZXhwLnkgKHN1YnJhbmdlKTogQ2hhbmdlIHJ1bGVzIGZvciBzdWJy YW5nZSBleHByZXNzaW9ucworCXRvIHdyaXRlIHRoZSByZWxldmFudCBiaXQgc2VxdWVuY2Ugb250 byB0aGUgZWx0IHN0YWNrLgorCSogZi1sYW5nLmggKGY5MF9yYW5nZV90eXBlKTogQ2hhbmdlIHRo ZSBlbnVtIHRvIHVzZSBiaXQKKwl2YWx1ZXMgZm9yIGVhY2ggYm91bmRhcnksIGlmIHNldCBieSB0 aGUgdXNlci4KKwkqIHBhcnNlLmMgKG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCk6IEluIGNhc2Ug b2YKKwlPUF9GOTBfUkFOR0UgY2hhbmdlIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgbnVtYmVyIG9m CisJYXJndW1lbnRzIG9uIHRoZSBlbHQgc3RhY2ssIGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9m CisJYm91bmRhcmllcyBwcm92aWRlZCBieSB0aGUgdXNlci4KKworCisKK1NpZ25lZC1vZmYtYnk6 IENocmlzdG9waCBXZWlubWFubiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorLS0t CisgZ2RiL2V2YWwuYyAgIHwgICAxNCArKysrKystLS0tLS0tLQorIGdkYi9mLWV4cC55ICB8ICAg MTEgKysrKysrLS0tLS0KKyBnZGIvZi1sYW5nLmggfCAgICA2ICsrLS0tLQorIGdkYi9wYXJzZS5j ICB8ICAgMjEgKysrKysrKystLS0tLS0tLS0tLS0tCisgNCBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNl cnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9n ZGIvZXZhbC5jCitpbmRleCAwYzFiNjA3Li40N2JhNjAyIDEwMDY0NAorLS0tIGEvZ2RiL2V2YWwu YworKysrIGIvZ2RiL2V2YWwuYworQEAgLTQ4MCwxMiArNDgwLDEyIEBAIHZhbHVlX2Y5MF9zdWJh cnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKyAJICAv KiBJZiBhIGxvd2VyIGJvdW5kIHdhcyBwcm92aWRlZCBieSB0aGUgdXNlciwgdGhlIGJpdCBoYXMg YmVlbgorIAkgICAgIHNldCBhbmQgd2UgY2FuIGFzc2lnbiB0aGUgdmFsdWUgZnJvbSB0aGUgZWx0 IHN0YWNrLiAgU2FtZSBmb3IKKyAJICAgICB1cHBlciBib3VuZC4gICovCistCSAgaWYgKChyYW5n ZS0+ZjkwX3JhbmdlX3R5cGUgPT0gSElHSF9CT1VORF9ERUZBVUxUKQorLQkgICAgICB8fCByYW5n ZS0+ZjkwX3JhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUKQorKwkgIGlmICgocmFuZ2Ut PmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfTE9XX0JPVU5EKQorKwkgICAgICA9PSBTVUJBUlJB WV9MT1dfQk9VTkQpCisgCSAgICByYW5nZS0+bG93ID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVf c3ViZXhwIChOVUxMX1RZUEUsIGV4cCwKKyAJCQkJCQkJIHBvcywgbm9zaWRlKSk7CistCSAgaWYg KChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFVTFQpCistCSAgICAgIHx8 IHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9PSBOT05FX0JPVU5EX0RFRkFVTFQpCisrCSAgaWYgKChy YW5nZS0+ZjkwX3JhbmdlX3R5cGUgJiBTVUJBUlJBWV9ISUdIX0JPVU5EKQorKwkgICAgICA9PSBT VUJBUlJBWV9ISUdIX0JPVU5EKQorIAkgICAgcmFuZ2UtPmhpZ2ggPSB2YWx1ZV9hc19sb25nIChl dmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLAorIAkJCQkJCQkgIHBvcywgbm9zaWRlKSk7 CisgCX0KK0BAIC01MjYsMTIgKzUyNiwxMCBAQCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2 YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgCisgCSAgICAvKiBJZiBubyBs b3dlciBib3VuZCB3YXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIsIHdlIHRha2UgdGhlCisgCSAgICAg ICBkZWZhdWx0IGJvdW5kYXJ5LiAgU2FtZSBmb3IgdGhlIGhpZ2ggYm91bmQuICAqLworLQkgICAg aWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFVTFQpCistCQl8fCAo cmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IEJPVEhfQk9VTkRfREVGQVVMVCkpCisrCSAgICBpZiAo KHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSAmIFNVQkFSUkFZX0xPV19CT1VORCkgPT0gMCkKKyAJICAg ICAgcmFuZ2UtPmxvdyA9IFRZUEVfTE9XX0JPVU5EIChpbmRleF90eXBlKTsKKyAKKy0JICAgIGlm ICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IEhJR0hfQk9VTkRfREVGQVVMVCkKKy0JCXx8IChy YW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZBVUxUKSkKKysJICAgIGlmICgo cmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkgPT0gMCkKKyAJICAg ICAgcmFuZ2UtPmhpZ2ggPSBUWVBFX0hJR0hfQk9VTkQgKGluZGV4X3R5cGUpOworIAorIAkgICAg LyogQm90aCB1c2VyIHByb3ZpZGVkIGxvdyBhbmQgaGlnaCBib3VuZCBoYXZlIHRvIGJlIGluc2lk ZSB0aGUKK2RpZmYgLS1naXQgYS9nZGIvZi1leHAueSBiL2dkYi9mLWV4cC55CitpbmRleCBhYjIz ZGYwLi4xZmY3NjhjIDEwMDY0NAorLS0tIGEvZ2RiL2YtZXhwLnkKKysrKyBiL2dkYi9mLWV4cC55 CitAQCAtMzE1LDI2ICszMTUsMjcgQEAgYXJnbGlzdAk6CWFyZ2xpc3QgJywnIGV4cCAgICVwcmVj IEFCT1ZFX0NPTU1BCisgLyogVGhlcmUgYXJlIGZvdXIgc29ydHMgb2Ygc3VicmFuZ2UgdHlwZXMg aW4gRjkwLiAgKi8KKyAKKyBzdWJyYW5nZToJZXhwICc6JyBleHAJJXByZWMgQUJPVkVfQ09NTUEK Ky0JCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX0Y5MF9SQU5HRSk7IAorLQkJ CSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIE5PTkVfQk9VTkRfREVGQVVMVCk7Cisr CQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9GOTBfUkFOR0UpOworKwkJCSAg d3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsCisrCQkJCQkJIFNVQkFSUkFZX0xPV19CT1VO RCB8IFNVQkFSUkFZX0hJR0hfQk9VTkQpOworIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBz dGF0ZSwgT1BfRjkwX1JBTkdFKTsgfQorIAk7CisgCisgc3VicmFuZ2U6CWV4cCAnOicJJXByZWMg QUJPVkVfQ09NTUEKKyAJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX0Y5MF9S QU5HRSk7CistCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgSElHSF9CT1VORF9E RUZBVUxUKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9M T1dfQk9VTkQpOworIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfRjkwX1JB TkdFKTsgfQorIAk7CisgCisgc3VicmFuZ2U6CSc6JyBleHAJJXByZWMgQUJPVkVfQ09NTUEKKyAJ CQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX0Y5MF9SQU5HRSk7CistCQkJICB3 cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgTE9XX0JPVU5EX0RFRkFVTFQpOworKwkJCSAg d3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIFNVQkFSUkFZX0hJR0hfQk9VTkQpOworIAkJ CSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfRjkwX1JBTkdFKTsgfQorIAk7Cisg Cisgc3VicmFuZ2U6CSc6JwklcHJlYyBBQk9WRV9DT01NQQorIAkJCXsgd3JpdGVfZXhwX2VsdF9v cGNvZGUgKHBzdGF0ZSwgT1BfRjkwX1JBTkdFKTsKKy0JCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2Nz dCAocHN0YXRlLCBCT1RIX0JPVU5EX0RFRkFVTFQpOworKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25n Y3N0IChwc3RhdGUsIDApOworIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1Bf RjkwX1JBTkdFKTsgfQorIAk7CisgCitkaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5oIGIvZ2RiL2Yt bGFuZy5oCitpbmRleCBmN2ExNGQ3Li4yMGNmNWJkIDEwMDY0NAorLS0tIGEvZ2RiL2YtbGFuZy5o CisrKysgYi9nZGIvZi1sYW5nLmgKK0BAIC00NCwxMCArNDQsOCBAQCBleHRlcm4gdm9pZCBmX3Zh bF9wcmludCAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwgaW50LCBDT1JFX0FERFIs CisgICAgCisgZW51bSBmOTBfcmFuZ2VfdHlwZQorICAgeworLSAgICBCT1RIX0JPVU5EX0RFRkFV TFQsCQkvKiAiKDopIiAgKi8KKy0gICAgTE9XX0JPVU5EX0RFRkFVTFQsCQkvKiAiKDpoaWdoKSIg ICovCistICAgIEhJR0hfQk9VTkRfREVGQVVMVCwJCS8qICIobG93OikiICAqLworLSAgICBOT05F X0JPVU5EX0RFRkFVTFQJCS8qICIobG93OmhpZ2gpIiAgKi8KKysgICAgU1VCQVJSQVlfTE9XX0JP VU5EID0gMHgxLAkJLyogIihsb3c6KSIgICovCisrICAgIFNVQkFSUkFZX0hJR0hfQk9VTkQgPSAw eDIJCS8qICIoOmhpZ2gpIiAgKi8KKyAgIH07CisgCisgLyogQSBjb21tb24gYmxvY2suICAqLwor ZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2RiL3BhcnNlLmMKK2luZGV4IGEyNGM1MmEuLjdl NDVjMDUgMTAwNjQ0CistLS0gYS9nZGIvcGFyc2UuYworKysrIGIvZ2RiL3BhcnNlLmMKK0BAIC0x MDA2LDIyICsxMDA2LDE3IEBAIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoY29uc3Qgc3RydWN0 IGV4cHJlc3Npb24gKmV4cHIsIGludCBlbmRwb3MsCisgCisgICAgIGNhc2UgT1BfRjkwX1JBTkdF OgorICAgICAgIG9wbGVuID0gMzsKKysgICAgICBhcmdzID0gMDsKKyAgICAgICByYW5nZV90eXBl ID0gKGVudW0gZjkwX3JhbmdlX3R5cGUpCisgCWxvbmdlc3RfdG9faW50IChleHByLT5lbHRzW2Vu ZHBvcyAtIDJdLmxvbmdjb25zdCk7CisgCistICAgICAgc3dpdGNoIChyYW5nZV90eXBlKQorLQl7 CistCWNhc2UgTE9XX0JPVU5EX0RFRkFVTFQ6CistCWNhc2UgSElHSF9CT1VORF9ERUZBVUxUOgor LQkgIGFyZ3MgPSAxOworLQkgIGJyZWFrOworLQljYXNlIEJPVEhfQk9VTkRfREVGQVVMVDoKKy0J ICBhcmdzID0gMDsKKy0JICBicmVhazsKKy0JY2FzZSBOT05FX0JPVU5EX0RFRkFVTFQ6CistCSAg YXJncyA9IDI7CistCSAgYnJlYWs7CistCX0KKysgICAgICAvKiBJbmNyZW1lbnQgdGhlIGFyZ3Vt ZW50IGNvdW50ZXIgZm9yIGVhY2ggYXJndW1lbnQKKysJIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLiAg Ki8KKysgICAgICBpZiAoKHJhbmdlX3R5cGUgJiBTVUJBUlJBWV9MT1dfQk9VTkQpID09IFNVQkFS UkFZX0xPV19CT1VORCkKKysJYXJncysrOworKworKyAgICAgIGlmICgocmFuZ2VfdHlwZSAmIFNV QkFSUkFZX0hJR0hfQk9VTkQpID09IFNVQkFSUkFZX0hJR0hfQk9VTkQpCisrCWFyZ3MrKzsKKyAK KyAgICAgICBicmVhazsKKyAKKy0tIAorMS43LjAuNwoKZGlmZiAtLWdpdCBhL2dkYi1mb3J0cmFu LXN0cmlkZS1pbnRlbC00b2Y2LnBhdGNoIGIvZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTRvZjYu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUwMjM2ZQotLS0gL2Rl di9udWxsCisrKyBiL2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC00b2Y2LnBhdGNoCkBAIC0wLDAg KzEsMTQyIEBACitGcm9tOiBDaHJpc3RvcGggV2Vpbm1hbm4gPGNocmlzdG9waC50LndlaW5tYW5u QGludGVsLmNvbT4KK1tQQVRDSCA0LzZdIGZvcnRyYW46IGVuYWJsZSBwYXJzaW5nIG9mIHN0cmlk ZSBwYXJhbWV0ZXIgZm9yIHN1YnJhbmdlcworaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt cGF0Y2hlcy8yMDE1LTEyL21zZzAwMDA5Lmh0bWwKK01lc3NhZ2UtSWQ6IDwxNDQ4OTc2MDc1LTEx NDU2LTUtZ2l0LXNlbmQtZW1haWwtY2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorCitB bGxvdyB0aGUgdXNlciB0byBwcm92aWRlIGEgc3RyaWRlIHBhcmFtZXRlciBmb3IgRm9ydHJhbgor c3ViYXJyYXlzLiAgVGhlIHN0cmlkZSBwYXJhbWV0ZXIgY2FuIGJlIGFueSBpbnRlZ2VyIGV4Y2Vw dAorJzAnLiAgVGhlIGRlZmF1bHQgc3RyaWRlIHZhbHVlIGlzICcxJy4KKworMjAxMy0xMS0yNyAg Q2hyaXN0b3BoIFdlaW5tYW5uICA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorCisJ KiBldmFsLmMgKHZhbHVlX2Y5MF9zdWJhcnJheSk6IEFkZCBleHByZXNzaW9uIGV2YWx1YXRpb24K Kwlmb3IgYSBzdHJpZGUgcGFyYW1ldGVyIGluIGEgRm9ydHJhbiByYW5nZSBleHByZXNzaW9uLgor CSogZi1leHAueTogQWRkIHlhY2MgcnVsZXMgZm9yIHdyaXRpbmcgaW5mbyBvbiB0aGUgZWx0IHN0 YWNrCisJd2hlbiB0aGUgdXNlciBwcm92aWRlZCBhIHN0cmlkZSBhcmd1bWVudC4KKwkqIGYtbGFu Zy5oIChGOTBfUkFOR0UpOiBBZGQgZmllbGQgdG8gZW51bSB0byBzaG93IHdoZW4gYQorCXN0cmlk ZSB3YXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIuCisJKiBwYXJzZS5jIChvcGVyYXRvcl9sZW5ndGhf c3RhbmRhcmQpOiBDaGVjayBpZiBhIHN0cmlkZQorCXZhbHVlIHdhcyBwcm92aWRlZCwgYW5kIGlu Y3JlbWVudCBhcmd1bWVudCBjb3VudGVyCisJYWNjb3JkaW5nbHkuCisKKworCitTaWduZWQtb2Zm LWJ5OiBDaHJpc3RvcGggV2Vpbm1hbm4gPGNocmlzdG9waC50LndlaW5tYW5uQGludGVsLmNvbT4K Ky0tLQorIGdkYi9ldmFsLmMgICB8ICAgMTAgKysrKysrKysrLQorIGdkYi9mLWV4cC55ICB8ICAg MzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgZ2RiL2YtbGFuZy5oIHwgICAg NSArKystLQorIGdkYi9wYXJzZS5jICB8ICAgIDMgKysrCisgNCBmaWxlcyBjaGFuZ2VkLCA0NiBp bnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBi L2dkYi9ldmFsLmMKK2luZGV4IDQ3YmE2MDIuLjE1YjJhZDQgMTAwNjQ0CistLS0gYS9nZGIvZXZh bC5jCisrKysgYi9nZGIvZXZhbC5jCitAQCAtNDM4LDcgKzQzOCw3IEBAIHZhbHVlX2Y5MF9zdWJh cnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKyAgICAg ICBzdHJ1Y3Qgc3Vic2NyaXB0X3JhbmdlCisgICAgICAgeworICAgICAgICAgZW51bSBmOTBfcmFu Z2VfdHlwZSBmOTBfcmFuZ2VfdHlwZTsKKy0gICAgICAgIExPTkdFU1QgbG93LCBoaWdoOworKyAg ICAgICAgTE9OR0VTVCBsb3csIGhpZ2gsIHN0cmlkZTsKKyAgICAgICB9CisgICAgICAgcmFuZ2U7 CisgICAgICAgTE9OR0VTVCBudW1iZXI7CitAQCAtNDg4LDYgKzQ4OCwxNCBAQCB2YWx1ZV9mOTBf c3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCisg CSAgICAgID09IFNVQkFSUkFZX0hJR0hfQk9VTkQpCisgCSAgICByYW5nZS0+aGlnaCA9IHZhbHVl X2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsCisgCQkJCQkJCSAgcG9z LCBub3NpZGUpKTsKKysKKysJICAvKiBBc3NpZ24gdGhlIHVzZXIncyBzdHJpZGUgdmFsdWUgaWYg cHJvdmlkZWQuICAqLworKwkgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlf U1RSSURFKSA9PSBTVUJBUlJBWV9TVFJJREUpCisrCSAgICByYW5nZS0+c3RyaWRlID0gdmFsdWVf YXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwKKysJCQkJCQkJICAgIHBv cywgbm9zaWRlKSk7CisrCSAgLyogQXNzaWduIHRoZSBkZWZhdWx0IHN0cmlkZSB2YWx1ZSAnMScu ICAqLworKwkgIGVsc2UKKysJICAgIHJhbmdlLT5zdHJpZGUgPSAxOworIAl9CisgICAgICAgLyog VXNlciBpbnB1dCBpcyBhbiBpbmRleC4gIEUuZy46ICJwIGFycnkoNSkiLiAgKi8KKyAgICAgICBl bHNlCitkaWZmIC0tZ2l0IGEvZ2RiL2YtZXhwLnkgYi9nZGIvZi1leHAueQoraW5kZXggMWZmNzY4 Yy4uMDE0ODBiMCAxMDA2NDQKKy0tLSBhL2dkYi9mLWV4cC55CisrKysgYi9nZGIvZi1leHAueQor QEAgLTMxNiw4ICszMTYsOCBAQCBhcmdsaXN0CToJYXJnbGlzdCAnLCcgZXhwICAgJXByZWMgQUJP VkVfQ09NTUEKKyAKKyBzdWJyYW5nZToJZXhwICc6JyBleHAJJXByZWMgQUJPVkVfQ09NTUEKKyAJ CQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX0Y5MF9SQU5HRSk7CistCQkJICB3 cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwKKy0JCQkJCQkgU1VCQVJSQVlfTE9XX0JPVU5E IHwgU1VCQVJSQVlfSElHSF9CT1VORCk7CisrCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBz dGF0ZSwgU1VCQVJSQVlfTE9XX0JPVU5ECisrCQkJCQkJIHwgU1VCQVJSQVlfSElHSF9CT1VORCk7 CisgCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9GOTBfUkFOR0UpOyB9Cisg CTsKKyAKK0BAIC0zMzksNiArMzM5LDM1IEBAIHN1YnJhbmdlOgknOicJJXByZWMgQUJPVkVfQ09N TUEKKyAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX0Y5MF9SQU5HRSk7IH0K KyAJOworIAorKy8qIEVhY2ggc3VicmFuZ2UgdHlwZSBjYW4gaGF2ZSBhIHN0cmlkZSBhcmd1bWVu dC4gICovCisrc3VicmFuZ2U6CWV4cCAnOicgZXhwICc6JyBleHAgJXByZWMgQUJPVkVfQ09NTUEK KysJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX0Y5MF9SQU5HRSk7CisrCQkJ ICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgU1VCQVJSQVlfTE9XX0JPVU5ECisrCQkJ CQkJIHwgU1VCQVJSQVlfSElHSF9CT1VORAorKwkJCQkJCSB8IFNVQkFSUkFZX1NUUklERSk7Cisr CQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9GOTBfUkFOR0UpOyB9CisrCTsK KysKKytzdWJyYW5nZToJZXhwICc6JyAnOicgZXhwICVwcmVjIEFCT1ZFX0NPTU1BCisrCQkJeyB3 cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9GOTBfUkFOR0UpOworKwkJCSAgd3JpdGVf ZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIFNVQkFSUkFZX0xPV19CT1VORAorKwkJCQkJCSB8IFNV QkFSUkFZX1NUUklERSk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9G OTBfUkFOR0UpOyB9CisrCTsKKysKKytzdWJyYW5nZToJJzonIGV4cCAnOicgZXhwICVwcmVjIEFC T1ZFX0NPTU1BCisrCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9GOTBfUkFO R0UpOworKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIFNVQkFSUkFZX0hJR0hf Qk9VTkQKKysJCQkJCQkgfCBTVUJBUlJBWV9TVFJJREUpOworKwkJCSAgd3JpdGVfZXhwX2VsdF9v cGNvZGUgKHBzdGF0ZSwgT1BfRjkwX1JBTkdFKTsgfQorKwk7CisrCisrc3VicmFuZ2U6CSc6JyAn OicgZXhwICVwcmVjIEFCT1ZFX0NPTU1BCisrCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0 YXRlLCBPUF9GOTBfUkFOR0UpOworKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUs IFNVQkFSUkFZX1NUUklERSk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBP UF9GOTBfUkFOR0UpOyB9CisrCTsKKysKKyBjb21wbGV4bnVtOiAgICAgZXhwICcsJyBleHAgCisg ICAgICAgICAgICAgICAgIAl7IH0gICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg OworZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuaCBiL2dkYi9mLWxhbmcuaAoraW5kZXggMjBjZjVi ZC4uNmNjMDY3MiAxMDA2NDQKKy0tLSBhL2dkYi9mLWxhbmcuaAorKysrIGIvZ2RiL2YtbGFuZy5o CitAQCAtNDQsOCArNDQsOSBAQCBleHRlcm4gdm9pZCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUg KiwgY29uc3QgZ2RiX2J5dGUgKiwgaW50LCBDT1JFX0FERFIsCisgICAgCisgZW51bSBmOTBfcmFu Z2VfdHlwZQorICAgeworLSAgICBTVUJBUlJBWV9MT1dfQk9VTkQgPSAweDEsCQkvKiAiKGxvdzop IiAgKi8KKy0gICAgU1VCQVJSQVlfSElHSF9CT1VORCA9IDB4MgkJLyogIig6aGlnaCkiICAqLwor KyAgICBTVUJBUlJBWV9MT1dfQk9VTkQgPSAweDEsCQkvKiAiKGxvdzopIiBvciAiKGxvdzo6KSIg Ki8KKysgICAgU1VCQVJSQVlfSElHSF9CT1VORCA9IDB4MiwJCS8qICIoOmhpZ2gpIiBvciAiKDpo aWdoOikiICAqLworKyAgICBTVUJBUlJBWV9TVFJJREUgPSAweDQJCS8qICIoOjpzdHJpZGUpIiAg Ki8KKyAgIH07CisgCisgLyogQSBjb21tb24gYmxvY2suICAqLworZGlmZiAtLWdpdCBhL2dkYi9w YXJzZS5jIGIvZ2RiL3BhcnNlLmMKK2luZGV4IDdlNDVjMDUuLmU2N2E0MjYgMTAwNjQ0CistLS0g YS9nZGIvcGFyc2UuYworKysrIGIvZ2RiL3BhcnNlLmMKK0BAIC0xMDE4LDYgKzEwMTgsOSBAQCBv cGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHByLCBp bnQgZW5kcG9zLAorICAgICAgIGlmICgocmFuZ2VfdHlwZSAmIFNVQkFSUkFZX0hJR0hfQk9VTkQp ID09IFNVQkFSUkFZX0hJR0hfQk9VTkQpCisgCWFyZ3MrKzsKKyAKKysgICAgICBpZiAoKHJhbmdl X3R5cGUgJiBTVUJBUlJBWV9TVFJJREUpID09IFNVQkFSUkFZX1NUUklERSkKKysJYXJncysrOwor KworICAgICAgIGJyZWFrOworIAorICAgICBkZWZhdWx0OgorLS0gCisxLjcuMC43CgpkaWZmIC0t Z2l0IGEvZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTVvZjYucGF0Y2ggYi9nZGItZm9ydHJhbi1z dHJpZGUtaW50ZWwtNW9mNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4xY2U1NDQwCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTVv ZjYucGF0Y2gKQEAgLTAsMCArMSw0MDIgQEAKK0Zyb206IENocmlzdG9waCBXZWlubWFubiA8Y2hy aXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorW1BBVENIIDUvNl0gZm9ydHJhbjogY2FsY3Vs YXRlIHN1YmFycmF5IHdpdGggc3RyaWRlIHZhbHVlcy4KK2h0dHBzOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLXBhdGNoZXMvMjAxNS0xMi9tc2cwMDAxMS5odG1sCitNZXNzYWdlLUlkOiA8MTQ0ODk3 NjA3NS0xMTQ1Ni02LWdpdC1zZW5kLWVtYWlsLWNocmlzdG9waC50LndlaW5tYW5uQGludGVsLmNv bT4KKworQ2FsY3VsYXRlIGVsZW1lbnRzIG9mIGEgc3ViYXJyYXkgdXNpbmcgYSBwcm92aWRlZCBz dHJpZGUgdmFsdWUKK1RoZSBzdHJpZGUgdmFsdWUgY2FuIGJlIGEgcG9zaXRpdmUgb3IgbmVnYXRp dmUgaW50ZWdlciwgYnV0IG1heQorbm90IGJlIHplcm8uICBJZiBubyBzdHJpZGUgaXMgcHJvdmlk ZWQsIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZQorMSB0byBwcmludCBhbGwgZWxlbWVudHMgaW5zaWRl IHRoZSByYW5nZS4KKworMXwgcHJvZ3JhbSBwcm9nCisyfCAgIGludGVnZXIgOjogYXJ5KDEwKSA9 ICgvIChpLCBpPTEsIDEwKSAvKQorM3wgZW5kIHByb2dyYW0gcHJvZworCisoZ2RiKSBwcmludCBh cnkoMToxMDoyKQorJDMgPSAoMSwgMywgNSwgNywgOSkKKworMjAxMy0xMS0yNyAgQ2hyaXN0b3Bo IFdlaW5tYW5uICA8Y2hyaXN0b3BoLnQud2Vpbm1hbm4+CisKKwkqIGV2YWwuYyAodmFsdWVfZjkw X3N1YmFycmF5KTogQWRkIHJhbmdlIHNpemUgY2FsY3VsYXRpb24KKwlmb3Igc3RyaWRlIGJhc2Vk IHJhbmdlcywgYW5kIGV2YWx1YXRpb24gb2YgdXNlciBzdHJpZGUKKwlwYXJhbWV0ZXJzLiAgQWRk IGNoZWNrIGZvciBtYXRjaGluZyB1c2VyIGlucHV0IHRvIGFycmF5CisJYm91bmRzLgorCSogdmFs b3BzLmMgKHZhbHVlX3NsaWNlKTogQWRkIGNhbGwgcGFyYW1ldGVyIHdpdGggZGVmYXVsdAorCXN0 cmlkZSB2YWx1ZSBmb3IgY2FsbGluZyB2YWx1ZV9zbGljZV8xLgorCSogdmFsb3BzLmMgKHZhbHVl X3NsaWNlXzEpOiBBZGQgZnVuY3Rpb24gcGFyYW1ldGVyIGZvcgorCXN0cmlkZSBsZW5ndGggaW4g dGhlIHJldHVybiBzdWJhcnJheS4gIENhbGN1bGF0ZSBhcnJheQorCWVsZW1lbnRzIGJhc2VkIG9u IHN0cmlkZSB2YWx1ZS4KKwkqIHZhbHVlLmg6IEFkZCBzdHJpZGUgcGFyYW1ldGVyIHRvIGRlY2xh cmF0aW9uIG9mCisJdmFsdWVfc2xpY2VfMS4KKworCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdG9w aCBXZWlubWFubiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorLS0tCisgZ2RiL2V2 YWwuYyAgIHwgIDExMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0KKyBnZGIvdmFsb3BzLmMgfCAgIDg1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgZ2RiL3ZhbHVlLmggIHwgICAgMiArLQorIDMgZmls ZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQorCitkaWZmIC0t Z2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9ldmFsLmMKK2luZGV4IDE1YjJhZDQuLmI4Y2QwODAgMTAw NjQ0CistLS0gYS9nZGIvZXZhbC5jCisrKysgYi9nZGIvZXZhbC5jCitAQCAtNDM3LDggKzQzNyw4 IEBAIHZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJl c3Npb24gKmV4cCwKKyAgICAgeworICAgICAgIHN0cnVjdCBzdWJzY3JpcHRfcmFuZ2UKKyAgICAg ICB7CistICAgICAgICBlbnVtIGY5MF9yYW5nZV90eXBlIGY5MF9yYW5nZV90eXBlOworLSAgICAg ICAgTE9OR0VTVCBsb3csIGhpZ2gsIHN0cmlkZTsKKysJZW51bSBmOTBfcmFuZ2VfdHlwZSBmOTBf cmFuZ2VfdHlwZTsKKysJTE9OR0VTVCBsb3csIGhpZ2gsIHN0cmlkZTsKKyAgICAgICB9CisgICAg ICAgcmFuZ2U7CisgICAgICAgTE9OR0VTVCBudW1iZXI7CitAQCAtNDc1LDcgKzQ3NSw3IEBAIHZh bHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24g KmV4cCwKKyAJICByYW5nZSA9ICZpbmRleC0+cmFuZ2U7CisgCisgCSAgKnBvcyArPSAzOworLQkg IHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9IGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxv bmdjb25zdCk7CisrCSAgcmFuZ2UtPmY5MF9yYW5nZV90eXBlID0gZXhwLT5lbHRzW3BjXS5sb25n Y29uc3Q7CisgCisgCSAgLyogSWYgYSBsb3dlciBib3VuZCB3YXMgcHJvdmlkZWQgYnkgdGhlIHVz ZXIsIHRoZSBiaXQgaGFzIGJlZW4KKyAJICAgICBzZXQgYW5kIHdlIGNhbiBhc3NpZ24gdGhlIHZh bHVlIGZyb20gdGhlIGVsdCBzdGFjay4gIFNhbWUgZm9yCitAQCAtNDg0LDYgKzQ4NCw3IEBAIHZh bHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24g KmV4cCwKKyAJICAgICAgPT0gU1VCQVJSQVlfTE9XX0JPVU5EKQorIAkgICAgcmFuZ2UtPmxvdyA9 IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsCisgCQkJCQkJ CSBwb3MsIG5vc2lkZSkpOworKworIAkgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VC QVJSQVlfSElHSF9CT1VORCkKKyAJICAgICAgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKKyAJICAg IHJhbmdlLT5oaWdoID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUs IGV4cCwKK0BAIC00OTYsNiArNDk3LDEwIEBAIHZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZh bHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKyAJICAvKiBBc3NpZ24gdGhlIGRl ZmF1bHQgc3RyaWRlIHZhbHVlICcxJy4gICovCisgCSAgZWxzZQorIAkgICAgcmFuZ2UtPnN0cmlk ZSA9IDE7CisrCisrCSAgLyogQ2hlY2sgdGhlIHByb3ZpZGVkIHN0cmlkZSB2YWx1ZSBpcyBpbGxl Z2FsLCBha2EgJzAnLiAgKi8KKysJICBpZiAocmFuZ2UtPnN0cmlkZSA9PSAwKQorKwkgICAgZXJy b3IgKF8oIlN0cmlkZSBtdXN0IG5vdCBiZSAwIikpOworIAl9CisgICAgICAgLyogVXNlciBpbnB1 dCBpcyBhbiBpbmRleC4gIEUuZy46ICJwIGFycnkoNSkiLiAgKi8KKyAgICAgICBlbHNlCitAQCAt NTEyLDEwICs1MTcsOCBAQCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXks IHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgCisgICAgIH0KKyAKKy0gIC8qIFRyYXZlcnNlIHRo ZSBhcnJheSBmcm9tIHJpZ2h0IHRvIGxlZnQgYW5kIGV2YWx1YXRlIGVhY2ggY29ycmVzcG9uZGlu ZworLSAgICAgdXNlciBpbnB1dC4gIFZBTFVFX1NVQlNDUklQVCBpcyBjYWxsZWQgZm9yIGV2ZXJ5 IGluZGV4LCB1bnRpbCBhIHJhbmdlCistICAgICBleHByZXNzaW9uIGlzIGV2YWx1YXRlZC4gIEFm dGVyIGEgcmFuZ2UgZXhwcmVzc2lvbiBoYXMgYmVlbiBldmFsdWF0ZWQsCistICAgICBldmVyeSBz dWJzZXF1ZW50IGV4cHJlc3Npb24gaXMgYWxzbyB0cmVhdGVkIGFzIGEgcmFuZ2UuICAqLworKyAg LyogVHJhdmVyc2UgdGhlIGFycmF5IGZyb20gcmlnaHQgdG8gbGVmdCBhbmQgc2V0IHRoZSBoaWdo IGFuZCBsb3cgYm91bmRzCisrICAgICBmb3IgbGF0ZXIgdXNlLiAgKi8KKyAgIGZvciAoaSA9IG5h cmdzIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgIHsKKyAgICAgICBzdHJ1Y3Qgc3Vic2NyaXB0X3N0 b3JlICppbmRleCA9ICZzdWJzY3JpcHRfYXJyYXlbaV07CitAQCAtNTQ4LDYgKzU1MSw0OCBAQCB2 YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9u ICpleHAsCisgCQl8fCByYW5nZS0+aGlnaCA+IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlwZSkp CisgCSAgICAgIGVycm9yIChfKCJwcm92aWRlZCBib3VuZChzKSBvdXRzaWRlIGFycmF5IGJvdW5k KHMpIikpOworIAorKwkgICAgLyogRm9yIGEgbmVnYXRpdmUgc3RyaWRlIHRoZSBsb3dlciBib3Vu ZGFyeSBtdXN0IGJlIGxhcmdlciB0aGFuIHRoZQorKwkgICAgICAgdXBwZXIgYm91bmRhcnkuCisr CSAgICAgICBGb3IgYSBwb3NpdGl2ZSBzdHJpZGUgdGhlIGxvd2VyIGJvdW5kYXJ5IG11c3QgYmUg c21hbGxlciB0aGFuIHRoZQorKwkgICAgICAgdXBwZXIgYm91bmRhcnkuICAqLworKwkgICAgaWYg KChyYW5nZS0+c3RyaWRlIDwgMCAmJiByYW5nZS0+bG93IDwgcmFuZ2UtPmhpZ2gpCisrCQl8fCAo cmFuZ2UtPnN0cmlkZSA+IDAgJiYgcmFuZ2UtPmxvdyA+IHJhbmdlLT5oaWdoKSkKKysJICAgICAg ZXJyb3IgKF8oIldyb25nIHZhbHVlIHByb3ZpZGVkIGZvciBzdHJpZGUgYW5kIGJvdW5kYXJpZXMi KSk7CisrCisrCSAgfQorKwkgIGJyZWFrOworKworKwljYXNlIFNVQlNDUklQVF9JTkRFWDoKKysJ ICBicmVhazsKKysKKysJfQorKworKyAgICAgIGFycmF5X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBF IChhcnJheV90eXBlKTsKKysgICAgfQorKworKyAgLyogUmVzZXQgQVJSQVlfVFlQRSBiZWZvcmUg c2xpY2luZy4qLworKyAgYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKG5l d19hcnJheSkpOworKworKyAgLyogVHJhdmVyc2UgdGhlIGFycmF5IGZyb20gcmlnaHQgdG8gbGVm dCBhbmQgZXZhbHVhdGUgZWFjaCBjb3JyZXNwb25kaW5nCisrICAgICB1c2VyIGlucHV0LiAgVkFM VUVfU1VCU0NSSVBUIGlzIGNhbGxlZCBmb3IgZXZlcnkgaW5kZXgsIHVudGlsIGEgcmFuZ2UKKysg ICAgIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLiAgQWZ0ZXIgYSByYW5nZSBleHByZXNzaW9uIGhh cyBiZWVuIGV2YWx1YXRlZCwKKysgICAgIGV2ZXJ5IHN1YnNlcXVlbnQgZXhwcmVzc2lvbiBpcyBh bHNvIHRyZWF0ZWQgYXMgYSByYW5nZS4gICovCisrICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0g MDsgaS0tKQorKyAgICB7CisrICAgICAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZSAqaW5kZXggPSAm c3Vic2NyaXB0X2FycmF5W2ldOworKyAgICAgIHN0cnVjdCB0eXBlICppbmRleF90eXBlID0gVFlQ RV9JTkRFWF9UWVBFIChhcnJheV90eXBlKTsKKysKKysgICAgICBzd2l0Y2ggKGluZGV4LT5raW5k KQorKwl7CisrCWNhc2UgU1VCU0NSSVBUX1JBTkdFOgorKwkgIHsKKysKKysJICAgIC8qIFdoZW4g d2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIHdlIG11c3QKKysJ ICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkgYXMgYSByYW5nZS4gIFdlIHNp bXBseQorKwkgICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGljaCB0ZWxscyB1cyBob3cgbWFu eSB0aW1lcyB3ZSBhcmUKKysJICAgICAgIGNhbGxpbmcgVkFMVUVfU0xJQ0VfMS4gICovCisrCSAg ICBzdHJ1Y3Qgc3Vic2NyaXB0X3JhbmdlICpyYW5nZSA9ICZpbmRleC0+cmFuZ2U7CisrCisgCSAg ICAvKiBESU1fQ09VTlQgY291bnRzIGV2ZXJ5IHVzZXIgYXJndW1lbnQgdGhhdCBpcyB0cmVhdGVk IGFzIGEgcmFuZ2UuCisgCSAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgZXhwcmVzc2lvbnMg bGlrZSAncHJpbnQgYXJyYXkoNywgODo5KS4KKyAJICAgICAgIEhlcmUgdGhlIGZpcnN0IGFyZ3Vt ZW50IGlzIGEgbGl0ZXJhbCwgYnV0IG11c3QgYmUgdHJlYXRlZCBhcyBhCitAQCAtNTU1LDEwICs2 MDAsOSBAQCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBl eHByZXNzaW9uICpleHAsCisgCSAgICBkaW1fY291bnQrKzsKKyAKKyAJICAgIG5ld19hcnJheQor LQkgICAgICA9IHZhbHVlX3NsaWNlXzEgKG5ld19hcnJheSwKKy0JCQkgICAgICAgbG9uZ2VzdF90 b19pbnQgKHJhbmdlLT5sb3cpLAorLQkJCSAgICAgICBsb25nZXN0X3RvX2ludCAocmFuZ2UtPmhp Z2ggLSByYW5nZS0+bG93ICsgMSksCistCQkJICAgICAgIGRpbV9jb3VudCk7CisrCSAgICAgID0g dmFsdWVfc2xpY2VfMSAobmV3X2FycmF5LCByYW5nZS0+bG93LAorKwkJCSAgICAgICByYW5nZS0+ aGlnaCAtIHJhbmdlLT5sb3cgKyAxLAorKwkJCSAgICAgICByYW5nZS0+c3RyaWRlLCBkaW1fY291 bnQpOworIAkgIH0KKyAJICBicmVhazsKKyAKK0BAIC01NzIsMjcgKzYxNiwzOCBAQCB2YWx1ZV9m OTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAs CisgCSAgICAgICB0byBnZXQgdGhlIHZhbHVlIG9mZnNldCByaWdodC4gICovCisgCSAgICBpZiAo ZGltX2NvdW50ID09IDApCisgCSAgICAgIG5ld19hcnJheQorLQkgICAgICAgID0gdmFsdWVfc3Vi c2NyaXB0ZWRfcnZhbHVlIChuZXdfYXJyYXksIGluZGV4LT5udW1iZXIsCisrCQk9IHZhbHVlX3N1 YnNjcmlwdGVkX3J2YWx1ZSAobmV3X2FycmF5LCBpbmRleC0+bnVtYmVyLAorIAkJCQkJICAgIGY3 N19nZXRfbG93ZXJib3VuZCAodmFsdWVfdHlwZQorIAkJCQkJCQkJICAobmV3X2FycmF5KSkpOwor IAkgICAgZWxzZQorIAkgICAgICB7CistCQkvKiBDaGVjayBmb3IgdmFsaWQgaW5kZXggaW5wdXQu ICAqLworKwkJZGltX2NvdW50Kys7CisrCisrCQkvKiBXZSBtaWdodCBlbmQgdXAgaGVyZSwgYmVj YXVzZSB3ZSBoYXZlIHRvIHRyZWF0IHRoZSBwcm92aWRlZAorKwkJICAgaW5kZXggbGlrZSBhIHJh bmdlLiBCdXQgbm93IFZBTFVFX1NVQlNDUklQVEVEX1JWQUxVRQorKwkJICAgY2Fubm90IGRvIHRo ZSByYW5nZSBjaGVja3MgZm9yIHVzLiBTbyB3ZSBoYXZlIHRvIG1ha2Ugc3VyZQorKwkJICAgb3Vy c2VsdmVzIHRoYXQgdGhlIHVzZXIgcHJvdmlkZWQgaW5kZXggaXMgaW5zaWRlIHRoZQorKwkJICAg YXJyYXkgYm91bmRzLiAgVGhyb3cgYW4gZXJyb3IgaWYgbm90LiAgKi8KKyAJCWlmIChpbmRleC0+ bnVtYmVyIDwgVFlQRV9MT1dfQk9VTkQgKGluZGV4X3R5cGUpCistCQkgICAgfHwgaW5kZXgtPm51 bWJlciA+IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlwZSkpCistCQkgIGVycm9yIChfKCJlcnJv ciBubyBzdWNoIHZlY3RvciBlbGVtZW50IikpOworKwkJICAgICYmIGluZGV4LT5udW1iZXIgPCBU WVBFX0hJR0hfQk9VTkQgKGluZGV4X3R5cGUpKQorKwkJICBlcnJvciAoXygicHJvdmlkZWQgYm91 bmQocykgb3V0c2lkZSBhcnJheSBib3VuZChzKSIpKTsKKysKKysJCWlmIChpbmRleC0+bnVtYmVy ID4gVFlQRV9MT1dfQk9VTkQgKGluZGV4X3R5cGUpCisrCQkgICAgJiYgaW5kZXgtPm51bWJlciA+ IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlwZSkpCisrCQkgIGVycm9yIChfKCJwcm92aWRlZCBi b3VuZChzKSBvdXRzaWRlIGFycmF5IGJvdW5kKHMpIikpOworIAorLQkJZGltX2NvdW50Kys7Cisg CQluZXdfYXJyYXkgPSB2YWx1ZV9zbGljZV8xIChuZXdfYXJyYXksCistCQkJCQkgICBsb25nZXN0 X3RvX2ludCAoaW5kZXgtPm51bWJlciksCistCQkJCQkgICAxLCAvKiBsZW5ndGggaXMgJzEnIGVs ZW1lbnQgICovCisrCQkJCQkgICBpbmRleC0+bnVtYmVyLAorKwkJCQkJICAgMSwgLyogQ09VTlQg aXMgJzEnIGVsZW1lbnQgICovCisrCQkJCQkgICAxLCAvKiBTVFJJREUgc2V0IHRvICcxJyAgKi8K KyAJCQkJCSAgIGRpbV9jb3VudCk7CisgCSAgICAgIH0KKyAKKyAJICB9CisgCSAgYnJlYWs7Cisg CX0KKy0gICAgfQorKyAgICAgIGFycmF5X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90 eXBlKTsKKysgIH0KKyAKKyAgIC8qIFdpdGggRElNX0NPVU5UID4gMSB3ZSBjdXJyZW50bHkgaGF2 ZSBhIG9uZSBkaW1lbnNpb25hbCBhcnJheSwgYnV0IGV4cGVjdAorICAgICAgYW4gYXJyYXkgb2Yg YXJyYXlzLCBkZXBlbmRpbmcgb24gaG93IG1hbnkgcmFuZ2VzIGhhdmUgYmVlbiBwcm92aWRlZCBi eQorQEAgLTYxNyw3ICs2NzIsOSBAQCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAq YXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgCSB0aGUgb3V0cHV0IGFycmF5LiAgU28g d2UgdHJhdmVyc2UgdGhlIFNVQlNDUklQVF9BUlJBWSBhZ2FpbiwgbG9va2luZworIAkgZm9yIGEg cmFuZ2UgZW50cnkuICBXaGVuIHdlIGZpbmQgb25lLCB3ZSB1c2UgdGhlIHJhbmdlIGluZm8gdG8g Y3JlYXRlCisgCSBhbiBhZGRpdGlvbmFsIHJhbmdlX3R5cGUgdG8gc2V0IHRoZSBjb3JyZWN0IGJv dW5kcyBhbmQgZGltZW5zaW9ucyBmb3IKKy0JIHRoZSBvdXRwdXQgYXJyYXkuICAqLworKwkgdGhl IG91dHB1dCBhcnJheS4gIEluIGFkZGl0aW9uLCB3ZSBtYXkgaGF2ZSBhIHN0cmlkZSB2YWx1ZSB0 aGF0IGlzIG5vdAorKwkgJzEnLCBmb3JjaW5nIHVzIHRvIGFkanVzdCB0aGUgbnVtYmVyIG9mIGVs ZW1lbnRzIGluIGEgcmFuZ2UsIGFjY29yZGluZworKwkgdG8gdGhlIHN0cmlkZSB2YWx1ZS4gICov CisgICAgICAgZm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyspCisgCXsKKyAJICBzdHJ1Y3Qgc3Vi c2NyaXB0X3N0b3JlICppbmRleCA9ICZzdWJzY3JpcHRfYXJyYXlbaV07CitAQCAtNjI1LDEyICs2 ODIsMTkgQEAgdmFsdWVfZjkwX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwLAorIAkgIGlmIChpbmRleC0+a2luZCA9PSBTVUJTQ1JJUFRfUkFOR0Up CisgCSAgICB7CisgCSAgICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLCAqaW50ZXJpbV9hcnJh eV90eXBlOworKwkgICAgICBpbnQgbmV3X2xlbmd0aDsKKysKKysJICAgICAgLyogVGhlIGxlbmd0 aCBvZiBhIHN1Yi1kaW1lbnNpb24gd2l0aCBhbGwgZWxlbWVudHMgYmV0d2VlbiB0aGUKKysJCSBi b3VuZHMgcGx1cyB0aGUgc3RhcnQgZWxlbWVudCBpdHNlbGYuICBJdCBtYXkgYmUgbW9kaWZpZWQg YnkKKysJCSBhIHVzZXIgcHJvdmlkZWQgc3RyaWRlIHZhbHVlLiAgKi8KKysJICAgICAgbmV3X2xl bmd0aCA9IGluZGV4LT5yYW5nZS5oaWdoIC0gaW5kZXgtPnJhbmdlLmxvdzsKKysJICAgICAgbmV3 X2xlbmd0aCAvPSBpbmRleC0+cmFuZ2Uuc3RyaWRlOworIAorIAkgICAgICByYW5nZV90eXBlCisg CQk9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwKKy0JCQkJICAgICB0ZW1wX3R5cGUs CistCQkJCSAgICAgMSwKKy0JCQkJICAgICBpbmRleC0+cmFuZ2UuaGlnaCAtIGluZGV4LT5yYW5n ZS5sb3cgKyAxKTsKKysJCQkJCSAgICB0ZW1wX3R5cGUsCisrCQkJCQkgICAgaW5kZXgtPnJhbmdl LmxvdywKKysJCQkJCSAgICBpbmRleC0+cmFuZ2UubG93ICsgbmV3X2xlbmd0aCk7CisgCisgCSAg ICAgIGludGVyaW1fYXJyYXlfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLAorIAkJCQkJ CSAgICAgIHRlbXBfdHlwZSwKK2RpZmYgLS1naXQgYS9nZGIvdmFsb3BzLmMgYi9nZGIvdmFsb3Bz LmMKK2luZGV4IGY4ZDIzZmIuLjZjOTExMmYgMTAwNjQ0CistLS0gYS9nZGIvdmFsb3BzLmMKKysr KyBiL2dkYi92YWxvcHMuYworQEAgLTM3NTksMTAgKzM3NTksMTMgQEAgdmFsdWVfb2ZfdGhpc19z aWxlbnQgKGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5nKQorIHN0cnVjdCB2YWx1ZSAq CisgdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxl bmd0aCkKKyB7CistICAvKiBQYXNzIHVuYWx0ZXJlZCBhcmd1bWVudHMgdG8gVkFMVUVfU0xJQ0Vf MSwgcGx1cyBhIENBTExfQ09VTlQgb2YgJzEnIGFzIHdlCistICAgICBhcmUgb25seSBjb25zaWRl cmluZyB0aGUgaGlnaGVzdCBkaW1lbnNpb24sIG9yIHdlIGFyZSB3b3JraW5nIG9uIGEgb25lCist ICAgICBkaW1lbnNpb25hbCBhcnJheS4gIFNvIHdlIGNhbGwgVkFMVUVfU0xJQ0VfMSBleGFjdGx5 IG9uY2UuICAqLworLSAgcmV0dXJuIHZhbHVlX3NsaWNlXzEgKGFycmF5LCBsb3dib3VuZCwgbGVu Z3RoLCAxKTsKKysgIC8qIFBhc3MgdW5hbHRlcmVkIGFyZ3VtZW50cyB0byBWQUxVRV9TTElDRV8x LCBwbHVzIGEgZGVmYXVsdCBzdHJpZGUKKysgICAgIHZhbHVlIG9mICcxJywgd2hpY2ggcmV0dXJu cyBldmVyeSBlbGVtZW50IGJldHdlZW4gTE9XQk9VTkQgYW5kCisrICAgICAoTE9XQk9VTkQgKyBM RU5HVEgpLiAgV2UgYWxzbyBwcm92aWRlIGEgZGVmYXVsdCBDQUxMX0NPVU5UIG9mICcxJworKyAg ICAgYXMgd2UgYXJlIG9ubHkgY29uc2lkZXJpbmcgdGhlIGhpZ2hlc3QgZGltZW5zaW9uLCBvciB3 ZSBhcmUKKysgICAgIHdvcmtpbmcgb24gYSBvbmUgZGltZW5zaW9uYWwgYXJyYXkuICBTbyB3ZSBj YWxsIFZBTFVFX1NMSUNFXzEKKysgICAgIGV4YWN0bHkgb25jZS4gICovCisrICByZXR1cm4gdmFs dWVfc2xpY2VfMSAoYXJyYXksIGxvd2JvdW5kLCBsZW5ndGgsIDEsIDEpOworIH0KKyAKKyAvKiBD QUxMX0NPVU5UIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBjYWxsaW5nIHRoZSBmdW5j dGlvbiBvbmNlLCBlLmcuCitAQCAtMzc3Niw3ICszNzc5LDggQEAgdmFsdWVfc2xpY2UgKHN0cnVj dCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCkKKyAgICByYW5nZXMgaW4g dGhlIGNhbGxpbmcgZnVuY3Rpb24uICAqLworIAorIHN0cnVjdCB2YWx1ZSAqCistdmFsdWVfc2xp Y2VfMSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBpbnQgbGVuZ3RoLCBpbnQg Y2FsbF9jb3VudCkKKyt2YWx1ZV9zbGljZV8xIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93 Ym91bmQsIGludCBsZW5ndGgsCisrCSAgICAgICBpbnQgc3RyaWRlX2xlbmd0aCwgaW50IGNhbGxf Y291bnQpCisgeworICAgc3RydWN0IHR5cGUgKnNsaWNlX3JhbmdlX3R5cGUsICpzbGljZV90eXBl LCAqcmFuZ2VfdHlwZTsKKyAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRl ZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKK0BAIC0zNzk5LDE0ICszODAzLDI0IEBAIHZhbHVlX3Ns aWNlXzEgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCwgaW50 IGNhbGxfY291bnQpCisgICAgICBhdHRyaWJ1dGVzIG9mIHRoZSB1bmRlcmx5aW5nIHR5cGUuICAq LworICAgaWYgKGNhbGxfY291bnQgPiAxKQorICAgICB7CisrICAgICAgYXJ5X2xvd19ib3VuZCA9 IFRZUEVfTE9XX0JPVU5EIChUWVBFX0lOREVYX1RZUEUgKGVsdF90eXBlKSk7CisrICAgICAgYXJ5 X2hpZ2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoZWx0X3R5cGUp KTsKKyAgICAgICBlbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGVs dF90eXBlKSk7CisgICAgICAgcm93X2NvdW50ID0gVFlQRV9MRU5HVEggKGFycmF5X3R5cGUpCisg CQkgICAgLyBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOworICAg ICB9CisgCistICBlbGVtX2NvdW50ID0gbGVuZ3RoOworKyAgLyogV2l0aCBhIHN0cmlkZSBvZiAn MScsIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgcGVyIHJlc3VsdCByb3cgaXMgZXF1YWwgdG8KKysg ICAgIHRoZSBMRU5HVEggb2YgdGhlIHN1YmFycmF5LiAgV2l0aCBub24tZGVmYXVsdCBzdHJpZGUg dmFsdWVzLCB3ZSBza2lwCisrICAgICBlbGVtZW50cywgYnV0IGhhdmUgdG8gYWRkIHRoZSBzdGFy dCBlbGVtZW50IHRvIHRoZSB0b3RhbCBudW1iZXIgb2YKKysgICAgIGVsZW1lbnRzIHBlciByb3cu ICAqLworKyAgaWYgKHN0cmlkZV9sZW5ndGggPT0gMSkKKysgICAgZWxlbV9jb3VudCA9IGxlbmd0 aDsKKysgIGVsc2UKKysgICAgZWxlbV9jb3VudCA9ICgobGVuZ3RoIC0gMSkgLyBzdHJpZGVfbGVu Z3RoKSArIDE7CisrCisgICBlbHRfc2l6ZSA9IFRZUEVfTEVOR1RIIChlbHRfdHlwZSk7CistICBl bHRfb2ZmcyA9IGxvbmdlc3RfdG9faW50IChsb3dib3VuZCAtIGFyeV9sb3dfYm91bmQpOworKyAg ZWx0X29mZnMgPSBsb3dib3VuZCAtIGFyeV9sb3dfYm91bmQ7CisgICBlbHRfc3RyaWRlID0gVFlQ RV9MRU5HVEggKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSkpOworIAorICAgZWx0X29mZnMg Kj0gZWx0X3NpemU7CitAQCAtMzgzNyw3ICszODUxLDcgQEAgdmFsdWVfc2xpY2VfMSAoc3RydWN0 IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBpbnQgbGVuZ3RoLCBpbnQgY2FsbF9jb3VudCkK KyAgIGVsc2UKKyAgICAgeworICAgICAgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKFRZ UEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKKy0gICAgICBzbGljZV9yYW5nZV9zaXplID0g KGFyeV9sb3dfYm91bmQgKyByb3dfY291bnQgLSAxKSAqIChlbGVtX2NvdW50KTsKKysgICAgICBz bGljZV9yYW5nZV9zaXplID0gYXJ5X2xvd19ib3VuZCArIChyb3dfY291bnQgKiBlbGVtX2NvdW50 KSAtIDE7CisgICAgICAgYXJ5X2xvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBl KTsKKyAgICAgfQorIAorQEAgLTM4NDksOCArMzg2Myw5IEBAIHZhbHVlX3NsaWNlXzEgKHN0cnVj dCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCwgaW50IGNhbGxfY291bnQp CisgICB7CisgICAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGU7CisgCistICAgIC8qIFdoZW4g Q0FMTF9DT1VOVCBlcXVhbHMgMSB3ZSBjYW4gdXNlIHRoZSBsZWdhY3kgY29kZSBmb3Igc3ViYXJy YXlzLiAgKi8KKy0gICAgaWYgKGNhbGxfY291bnQgPT0gMSkKKysgICAgLyogV2hlbiBib3RoIENB TExfQ09VTlQgYW5kIFNUUklERV9MRU5HVEggZXF1YWwgMSwgd2UgY2FuIHVzZSB0aGUgbGVnYWN5 CisrICAgICAgIGNvZGUgZm9yIHN1YmFycmF5cy4gICovCisrICAgIGlmIChjYWxsX2NvdW50ID09 IDEgJiYgc3RyaWRlX2xlbmd0aCA9PSAxKQorICAgICAgIHsKKyAJZWxlbWVudF90eXBlID0gVFlQ RV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7CisgCitAQCAtMzg3MSwyOSArMzg4Niw1MyBAQCB2 YWx1ZV9zbGljZV8xIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5n dGgsIGludCBjYWxsX2NvdW50KQorIAkgIH0KKyAKKyAgICAgICB9CistICAgIC8qIFdoZW4gQ0FM TF9DT1VOVCBpcyBsYXJnZXIgdGhhbiAxIHdlIGFyZSB3b3JraW5nIG9uIGEgcmFuZ2Ugb2YgcmFu Z2VzLgorLSAgICAgICBTbyB3ZSBjb3B5IHRoZSByZWxldmFudCBlbGVtZW50cyBpbnRvIHRoZSBu ZXcgYXJyYXkgd2UgcmV0dXJuLiAgKi8KKysgICAgLyogV2l0aCBhIENBTExfQ09VTlQgb3IgU1RS SURFX0xFTkdUSCBhcmUgZ3JlYXRlciB0aGFuIDEgd2UgYXJlIHdvcmtpbmcKKysgICAgICAgb24g YSByYW5nZSBvZiByYW5nZXMuICBTbyB3ZSBjb3B5IHRoZSByZWxldmFudCBlbGVtZW50cyBpbnRv IHRoZQorKyAgICAgICBuZXcgYXJyYXkgd2UgcmV0dXJuLiAgKi8KKyAgICAgZWxzZQorICAgICAg IHsKKysJaW50IGosIG9mZnNfc3RvcmUgPSBlbHRfb2ZmczsKKyAJTE9OR0VTVCBkc3Rfb2Zmc2V0 ID0gMDsKKyAJTE9OR0VTVCBzcmNfcm93X2xlbmd0aCA9IFRZUEVfTEVOR1RIIChUWVBFX1RBUkdF VF9UWVBFIChhcnJheV90eXBlKSk7CisgCistCWVsZW1lbnRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZ UEUgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKKysJaWYgKGNhbGxfY291bnQgPT0g MSkKKysJICB7CisrCSAgICAvKiBXaGVuIENBTExfQ09VTlQgaXMgZXF1YWwgdG8gMSB3ZSBhcmUg d29ya2luZyBvbiB0aGUgY3VycmVudCByYW5nZQorKwkgICAgICAgYW5kIHVzZSB0aGVzZSBlbGVt ZW50cyBkaXJlY3RseS4gICovCisrCSAgICBlbGVtZW50X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBF IChhcnJheV90eXBlKTsKKysJICB9CisrCWVsc2UKKysJICB7CisrCSAgICAvKiBXb3JraW5nIG9u IGFuIGFycmF5IG9mIGFycmF5cywgdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnRzIGlzIHRoZSB0eXBl CisrCSAgICAgICBvZiB0aGUgc3ViYXJyYXlzJyB0eXBlLiAgKi8KKysJICAgIGVsZW1lbnRfdHlw ZSA9IFRZUEVfVEFSR0VUX1RZUEUgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKKysJ ICB9CisrCisgCXNsaWNlX3R5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwgZWxlbWVudF90 eXBlLCBzbGljZV9yYW5nZV90eXBlKTsKKyAKKy0JVFlQRV9DT0RFIChzbGljZV90eXBlKSA9IFRZ UEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOworKwkvKiBJZiB3ZSBoYXZl IGEgb25lIGRpbWVuc2lvbmFsIGFycmF5LCB3ZSBjb3B5IGl0cyBUWVBFX0NPREUuICBGb3IgYQor KwkgICBtdWx0aSBkaW1lbnNpb25hbCBhcnJheSB3ZSBjb3B5IHRoZSBlbWJlZGRlZCB0eXBlJ3Mg VFlQRV9DT0RFLiAgKi8KKysJaWYgKGNhbGxfY291bnQgPT0gMSkKKysJICBUWVBFX0NPREUgKHNs aWNlX3R5cGUpID0gVFlQRV9DT0RFIChhcnJheV90eXBlKTsKKysJZWxzZQorKwkgIFRZUEVfQ09E RSAoc2xpY2VfdHlwZSkgPSBUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUp KTsKKyAKKyAJdiA9IGFsbG9jYXRlX3ZhbHVlIChzbGljZV90eXBlKTsKKy0JZm9yIChpID0gMDsg aSA8IGxvbmdlc3RfdG9faW50IChyb3dfY291bnQpOyBpKyspCisrCisrCS8qIEl0ZXJhdGUgdGhy b3VnaCB0aGUgcm93cyBvZiB0aGUgb3V0ZXIgYXJyYXkgYW5kIHNldCB0aGUgbmV3IG9mZnNldAor KwkgICBmb3IgZWFjaCByb3cuICAqLworKwlmb3IgKGkgPSAwOyBpIDwgcm93X2NvdW50OyBpKysp CisgCSAgeworLQkgICAgLyogRmV0Y2hlcyB0aGUgY29udGVudHMgb2YgQVJSQVkgYW5kIGNvcGll cyB0aGVtIGludG8gVi4gICovCistCSAgICB2YWx1ZV9jb250ZW50c19jb3B5ICh2LAorLQkJCQkg ZHN0X29mZnNldCwKKy0JCQkJIGFycmF5LAorLQkJCQkgZWx0X29mZnMsCistCQkJCSBlbHRfc2l6 ZSAqIGVsZW1fY291bnQpOworLQkgICAgZWx0X29mZnMgKz0gc3JjX3Jvd19sZW5ndGg7CistCSAg ICBkc3Rfb2Zmc2V0ICs9IGVsdF9zaXplICogZWxlbV9jb3VudDsKKysJICAgIGVsdF9vZmZzID0g b2Zmc19zdG9yZSArIGkgKiBzcmNfcm93X2xlbmd0aDsKKysKKysJICAgIC8qIEl0ZXJhdGUgdGhy b3VnaCB0aGUgZWxlbWVudHMgaW4gZWFjaCByb3cgdG8gY29weSBvbmx5IHRob3NlLiAgKi8KKysJ ICAgIGZvciAoaiA9IDE7IGogPD0gZWxlbV9jb3VudDsgaisrKQorKwkgICAgICB7CisrCQkvKiBG ZXRjaGVzIHRoZSBjb250ZW50cyBvZiBBUlJBWSBhbmQgY29waWVzIHRoZW0gaW50byBWLiAgKi8K KysJCXZhbHVlX2NvbnRlbnRzX2NvcHkgKHYsIGRzdF9vZmZzZXQsIGFycmF5LCBlbHRfb2Zmcywg ZWx0X3NpemUpOworKwkJZWx0X29mZnMgKz0gZWx0X3NpemUgKiBzdHJpZGVfbGVuZ3RoOworKwkJ ZHN0X29mZnNldCArPSBlbHRfc2l6ZTsKKysJICAgICAgfQorIAkgIH0KKyAgICAgICB9CisgCitk aWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIvdmFsdWUuaAoraW5kZXggMDU5MzljNC4uZDY4 NzQ2OCAxMDA2NDQKKy0tLSBhL2dkYi92YWx1ZS5oCisrKysgYi9nZGIvdmFsdWUuaAorQEAgLTEw NTYsNyArMTA1Niw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhcnlpbmdfdG9fc2xpY2UgKHN0 cnVjdCB2YWx1ZSAqKTsKKyAKKyBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9zbGljZSAoc3Ry dWN0IHZhbHVlICosIGludCwgaW50KTsKKyAKKy1leHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9z bGljZV8xIChzdHJ1Y3QgdmFsdWUgKiwgaW50LCBpbnQsIGludCk7CisrZXh0ZXJuIHN0cnVjdCB2 YWx1ZSAqdmFsdWVfc2xpY2VfMSAoc3RydWN0IHZhbHVlICosIGludCwgaW50LCBpbnQsIGludCk7 CisgCisgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfbGl0ZXJhbF9jb21wbGV4IChzdHJ1Y3Qg dmFsdWUgKiwgc3RydWN0IHZhbHVlICosCisgCQkJCQkgICAgc3RydWN0IHR5cGUgKik7CistLSAK KzEuNy4wLjcKCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1zdHJpZGUtaW50ZWwtNm9mNi1ub2tm YWlsLnBhdGNoIGIvZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTZvZjYtbm9rZmFpbC5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjYxZGUxCi0tLSAvZGV2L251bGwK KysrIGIvZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTZvZjYtbm9rZmFpbC5wYXRjaApAQCAtMCww ICsxLDM2IEBACistLS0gZ2RiLTcuMTAuNTAuMjAxNjAxMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9zdWJyYW5nZS5leHAtb3JpZwkyMDE2LTAxLTA4IDIyOjQ1OjQ0Ljk1Njg0MjU1MyArMDEw MAorKysrIGdkYi03LjEwLjUwLjIwMTYwMTA2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Vi cmFuZ2UuZXhwCTIwMTYtMDEtMDggMjM6MjY6MDUuMDc4NTU0NjI5ICswMTAwCitAQCAtMzksMjcg KzM5LDE2IEBAIGZvcmVhY2ggdmFyIHthIGFsbG9jIHB0cn0geworICAgICBzZXQgb2xkX3ByZWZp eCAkcGZfcHJlZml4CisgICAgIGxhcHBlbmQgcGZfcHJlZml4ICIkdmFyOiIKKyAKKy0gICAgc2V0 dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5IgorICAgICBnZGJfdGVzdCAicCAk dmFyICgyLCAyOjMpIiB7ID0gXCgyMiwgMzJcKX0KKy0gICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAi dmxhcmVncmVzc2lvbi85OTk5IgorICAgICBnZGJfdGVzdCAicCAkdmFyICgyOjMsIDMpIiB7ID0g XCgzMiwgMzNcKX0KKy0gICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5 IgorICAgICBnZGJfdGVzdCAicCAkdmFyICgxLCAyOikiIHsgPSBcKDIxLCAzMVwpfQorLSAgICBz ZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCisgICAgIGdkYl90ZXN0ICJw ICR2YXIgKDIsIDoyKSIgeyA9IFwoMTIsIDIyXCl9CistICAgIHNldHVwX2tmYWlsICIqLSotKiIg InZsYXJlZ3Jlc3Npb24vOTk5OSIKKyAgICAgZ2RiX3Rlc3QgInAgJHZhciAoMywgMjoyKSIgeyA9 IFwoMjNcKX0KKy0gICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5Igor ICAgICBnZGJfdGVzdCAicHR5cGUgJHZhciAoMywgMjoyKSIgIiA9ICRpbnQ0IFxcKDI6MlxcKSIK Ky0gICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5IgorICAgICBnZGJf dGVzdCAicCAkdmFyICg0LCA6KSIgeyA9IFwoMTQsIDI0LCAzNFwpfQorLSAgICBzZXR1cF9rZmFp bCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCisgICAgIGdkYl90ZXN0ICJwICR2YXIgKDos IDopIiB7ID0gXChcKCAqMTEsIDEyLCAxMywgMTRcKSBcKCAqMjEsIDIyLCAyMywgMjRcKSBcKCAq MzEsIDMyLCAzMywgMzRcKSAqXCl9CistICAgIHNldHVwX2tmYWlsICIqLSotKiIgInZsYXJlZ3Jl c3Npb24vOTk5OSIKKyAgICAgZ2RiX3Rlc3QgInB0eXBlICR2YXIgKDosIDopIiAiID0gJGludDQg XFwoNCwzXFwpIgorLSAgICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTki CisgICAgIGdkYl90ZXN0ICJwICR2YXIgKDopIiAiV3JvbmcgbnVtYmVyIG9mIHN1YnNjcmlwdHMi CistICAgIHNldHVwX2tmYWlsICIqLSotKiIgInZsYXJlZ3Jlc3Npb24vOTk5OSIKKyAgICAgZ2Ri X3Rlc3QgInAgJHZhciAoOiwgOiwgOikiICJXcm9uZyBudW1iZXIgb2Ygc3Vic2NyaXB0cyIKKyAK KyAgICAgc2V0IHBmX3ByZWZpeCAkb2xkX3ByZWZpeAorQEAgLTY4LDUgKzU3LDQgQEAgZm9yZWFj aCB2YXIge2EgYWxsb2MgcHRyfSB7CisgZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtzZXQgJGE9YX0KKyBk ZWxldGVfYnJlYWtwb2ludHMKKyBnZGJfdW5sb2FkCistc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxh cmVncmVzc2lvbi85OTk5IgorIGdkYl90ZXN0IHtwICRhICgzLCAyOjIpfSB7ID0gXCgyM1wpfQoK ZGlmZiAtLWdpdCBhL2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC02b2Y2LXRlc3RjYXNlZml4LnBh dGNoIGIvZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTZvZjYtdGVzdGNhc2VmaXgucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY3OTIwYgotLS0gL2Rldi9udWxsCisr KyBiL2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC02b2Y2LXRlc3RjYXNlZml4LnBhdGNoCkBAIC0w LDAgKzEsNTIgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDE2LTAx L21zZzAwMTM1Lmh0bWwKK1N1YmplY3Q6IFJlOiBbUEFUQ0ggMC82XSBmb3J0cmFuOiBtdWx0aS1k aW1lbnNpb25hbCBzdWJhcnJheXMgd2l0aCBzdHJpZGVzCisKKworLS12a29ncU9mMnNIVjdWblBk CitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKK0NvbnRlbnQtRGlz cG9zaXRpb246IGlubGluZQorCitPbiBUaHUsIDAzIERlYyAyMDE1IDIxOjUxOjE5ICswMTAwLCBK YW4gS3JhdG9jaHZpbCB3cm90ZToKKz4gSnVzdCBJIHNlZSAtIHJlcHJvZHVjaWJsZSB3aXRoIEZT RiBHREIgdHJ1bmsgLSBvbmUgbmV3OgorPiAJRkFJTDogZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5 cy5leHA6IHByaW50IGFyMyg6Miw6Miw6MikKKz4gaGFwcGVuaW5nIG9uIHg4Nl82NCBpbiAtbTMy IHRhcmdldCBtb2RlIGFuZCBvbiBpNjg2IG5hdGl2ZSBob3N0LgorPiBJdCBQQVNTZXMgaW4gdGhl IG1vc3QgY29tbW9uIGNhc2Ugb2YgbmF0aXZlIHg4Nl82NC4gIFRlc3RlZCBvbiBGZWRvcmEgMjMu Cis+ICBwcmludCBhcjMoOjIsOjIsOjIpXk0KKz4gLSQ1MiA9ICgoICggMTExLCAyMTEpICggMTIx LCAyMjEpICkgKCAoIDExMiwgMjEyKSAoIDEyMiwgMjIyKSApICleTQorPiAtKGdkYikgUEFTUzog Z2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5leHA6IHByaW50IGFyMyg6Miw6Miw6MikKKz4gKyQ1 MiA9ICgoICggMTIyMSwgMjExKSAoIDEyMSwgMjIxKSApICggKCAxMTIsIDIxMikgKCAxMjIsIDIy MikgKSApXk0KKz4gKyhnZGIpIEZBSUw6IGdkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZXhwOiBw cmludCBhcjMoOjIsOjIsOjIpCisKK1RoYXQgd2FzIGVhc2llciB0aGFuIEkgZXhwZWN0ZWQ6CisK K2dmb3J0cmFuIC1mY2hlY2s9Ym91bmRzCistPgorQXQgbGluZSA0NCBvZiBmaWxlIGdkYi5mb3J0 cmFuL3N0YXRpYy1hcnJheXMuZjkwCitGb3J0cmFuIHJ1bnRpbWUgZXJyb3I6IEluZGV4ICcxMScg b2YgZGltZW5zaW9uIDEgb2YgYXJyYXkgJ2FyNCcgYWJvdmUgdXBwZXIgYm91bmQgb2YgMTAKKwor VGhlcmUgaXM6CisJICBpbnRlZ2VyLCBkaW1lbnNpb24oMTAsLTc6MywgLTE1Oi01KSA6OiBhcjQK KysKKwkgIGRvIGkgPSAxLCAxMSwgMQorCisKK0phbgorCistLXZrb2dxT2Yyc0hWN1ZuUGQKK0Nv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQorQ29udGVudC1EaXNwb3Np dGlvbjogaW5saW5lOyBmaWxlbmFtZT0xCisKKy0tLSBnZGItNy4xMC41MC4yMDE2MDEwNi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwLW9yaWcJMjAxNi0wMS0wOCAx OToxOToxOC40MjE4MjgxOTYgKzAxMDAKKysrKyBnZGItNy4xMC41MC4yMDE2MDEwNi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwCTIwMTYtMDEtMDggMTk6NDE6MDku Nzc4MTQyNjgzICswMTAwCitAQCAtMzgsNyArMzgsNyBAQCBzdWJyb3V0aW5lIHN1YgorICAgICBl bmQgZG8KKyAgIGVuZCBkbworIAorLSAgZG8gaSA9IDEsIDExLCAxCisrICBkbyBpID0gMSwgMTAs IDEKKyAgICAgZG8gaiA9IC03LCAzLCAxCisgICAgICAgZG8gayA9IC0xNSwgLTUsIDEKKyAgICAg ICAgIGFyNChpLGosaykgPSBpKjEwMCArIChqKzgpKjEwICsgKGsrMTYpCisKKy0tdmtvZ3FPZjJz SFY3Vm5QZC0tCisKCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1zdHJpZGUtaW50ZWwtNm9mNi5w YXRjaCBiL2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC02b2Y2LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhNzdjMTkKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZm9y dHJhbi1zdHJpZGUtaW50ZWwtNm9mNi5wYXRjaApAQCAtMCwwICsxLDQ3NCBAQAorRnJvbTogQ2hy aXN0b3BoIFdlaW5tYW5uIDxjaHJpc3RvcGgudC53ZWlubWFubkBpbnRlbC5jb20+CitbUEFUQ0gg Ni82XSBmb3J0cmFuOiB0ZXN0IGNhc2VzIGZvciBzdWJhcnJheSBzdHJpZGVzIGFuZCBzbGljZXMK K2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxNS0xMi9tc2cwMDAxMi5o dG1sCitNZXNzYWdlLUlkOiA8MTQ0ODk3NjA3NS0xMTQ1Ni03LWdpdC1zZW5kLWVtYWlsLWNocmlz dG9waC50LndlaW5tYW5uQGludGVsLmNvbT4KKworQWRkIHRlc3QgY2FzZXMgZm9yIHN1YmFycmF5 IGNyZWF0aW9uIHdpdGggcmFuZ2UsIGxpdGVyYWwgYW5kCitzdHJpZGUgdmFsdWUgcGVybXV0YXRp b25zIGZvciBvbmUsIHR3bywgYW5kIHRocmVlIGRpbWVuc2lvbmFsCithcnJheXMuCisKKzIwMTMt MTItMDQgIENocmlzdG9waCBXZWlubWFubiAgPGNocmlzdG9waC50LndlaW5tYW5uQGludGVsLmNv bT4KKwordGVzdHN1aXRlL2dkYi5mb3J0cmFuLworCSogc3RhdGljLWFycmF5cy5leHA6IE5ldyB0 ZXN0LgorCSogc3RhdGljLWFycmF5cy5mOTA6IE5ldyBmaWxlLgorCisKKworU2lnbmVkLW9mZi1i eTogQ2hyaXN0b3BoIFdlaW5tYW5uIDxjaHJpc3RvcGgudC53ZWlubWFubkBpbnRlbC5jb20+Cist LS0KKyBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZXhwIHwgIDM4MCAr KysrKysrKysrKysrKysrKysrKysrKysrKysKKyBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0 YXRpYy1hcnJheXMuZjkwIHwgICA1NSArKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA0MzUgaW5zZXJ0 aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9zdGF0aWMtYXJyYXlzLmV4cAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwCisKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9zdGF0aWMtYXJyYXlzLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAuLjA3N2Y2ZmIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5leHAKK0BAIC0wLDAgKzEsMzgwIEBACisrIyBDb3B5 cmlnaHQgMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjCisrIyBDb250cmli dXRlZCBieSBJbnRlbCBDb3JwLiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorKyMK KysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysj CisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgc3Rh dGljLWFycmF5cy5mOTAKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5l eHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmOTB9XSB9IHsKKysgICAgcmV0dXJuIC0xCisr fQorKworK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBy dW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJCUDEiXQorK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJCUDEiICIuKkJQMS4qIgorKworKyMgVGVzdHMgc3ViYXJyYXlzIG9mIG9uZSBkaW1l bnNpb25hbCBhcnJheXMgd2l0aCBzdWJyYW5nZSB2YXJpYXRpb25zCisrZ2RiX3Rlc3QgInByaW50 IGFyMSIgIlxcJFxbMC05XF0rID0gXFwoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOVxcKSIgXAor KwkJInByaW50IGFyMS4iCisrZ2RiX3Rlc3QgInByaW50IGFyMVwoNDo3XCkiICJcXCRcWzAtOVxd KyA9IFxcKDQsIDUsIDYsIDdcXCkiIFwKKysJCSJwcmludCBhcjFcKDQ6N1wpIgorK2dkYl90ZXN0 ICJwcmludCBhcjFcKDg6XCkiICJcXCRcWzAtOVxdKyA9IFxcKDgsIDlcXCkuKiIgXAorKwkJInBy aW50IGFyMVwoODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIxXCg6M1wpIiAiXFwkXFswLTlcXSsg PSBcXCgxLCAyLCAzXFwpLioiIFwKKysJCSJwcmludCBhcjFcKDozXCkiCisrZ2RiX3Rlc3QgInBy aW50IGFyMVwoOlwpIiAiXFwkXFswLTlcXSsgPSBcXCgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5 XFwpIiBcCisrCQkicHJpbnQgYXIxXCg6XCkiCisrCisrIyBDaGVjayBhc3NpZ25tZW50CisrZ2Ri X3Rlc3Rfbm9fb3V0cHV0ICJzZXQgXCRteV9hcnkgPSBhcjFcKDM6OFwpIgorK2dkYl90ZXN0ICJw cmludCBcJG15X2FyeSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoMywgNCwgNSwgNiwgNywgOFxc KSIgXAorKwkJIkFzc2lnbm1lbnQgb2Ygc3ViYXJyYXkgdG8gdmFyaWFibGUiCisrZ2RiX3Rlc3Rf bm9fb3V0cHV0ICJzZXQgYXIxXCg1XCkgPSA0MiIKKysJCWdkYl90ZXN0ICJwcmludCBhcjFcKDM6 OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgzLCA0LCA0MiwgNiwgNywgOFxcKSIgXAorKwkJ InByaW50IGFyMVwoMzo4XCkgYWZ0ZXIgYXNzaWdubWVudCIKKytnZGJfdGVzdCAicHJpbnQgXCRt eV9hcnkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDMsIDQsIDUsIDYsIDcsIDhcXCkiIFwKKysJ CSJBc3NpZ25tZW50IG9mIHN1YmFycmF5IHRvIHZhcmlhYmxlIGFmdGVyIG9yaWdpbmFsIGFycmF5 IGNoYW5nZWQiCisrCisrIyBUZXN0IGZvciBzdWJhcnJheXMgb2Ygb25lIGRpbWVuc2lvbmFsIGFy cmF5cyB3aXRoIGxpdGVyYWxzCisrCQlnZGJfdGVzdCAicHJpbnQgYXIxXCgzXCkiICJcXCRcWzAt OVxdKyA9IDMiIFwKKysJCSJwcmludCBhcjFcKDNcKSIKKysKKysjIFRlc3RzIGZvciBzdWJyYW5n ZXMgb2YgMiBkaW1lbnNpb25hbCBhcnJheXMgd2l0aCBzdWJyYW5nZSB2YXJpYXRpb25zCisrZ2Ri X3Rlc3QgInByaW50IGFyMlwoMjozLCAzOjRcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwo IDIzLCAzM1xcKSBcXCggMjQsIDM0XFwpIFxcKSIgXAorKwkJInByaW50IGFyMlwoMjozLCAzOjRc KS4iCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoODo5LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCA4OCwgOThcXCkgXFwoIDg5LCA5OVxcKSBcXCkiIFwKKysJCSJwcmludCBhcjJcKDg6 OSw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDg6OSw6MlwpIiBcCisrCQkiXFwkXFswLTlc XSsgPSBcXChcXCggODEsIDkxXFwpIFxcKCA4MiwgOTJcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIy XCg4OjksOjJcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg4Oiw4OjlcKSIgXAorKwkJIlxc JFxbMC05XF0rID0gXFwoXFwoIDg4LCA5OFxcKSBcXCggODksIDk5XFwpIFxcKSIgXAorKwkJInBy aW50IGFyMlwoODosODo5XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoODosODpcKSIgXAorKwkJ IlxcJFxbMC05XF0rID0gXFwoXFwoIDg4LCA5OFxcKSBcXCggODksIDk5XFwpIFxcKSIgXAorKwkJ InByaW50IGFyMlwoODosODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg4Oiw6MlwpIiBcCisr CQkiXFwkXFswLTlcXSsgPSBcXChcXCggODEsIDkxXFwpIFxcKCA4MiwgOTJcXCkgXFwpIiBcCisr CQkicHJpbnQgYXIyXCg4Oiw6MlwpIgorKworK2dkYl90ZXN0ICJwcmludCBhcjJcKDoyLDI6M1wp IiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMTIsIDIyXFwpIFxcKCAxMywgMjNcXCkgXFwp IiBcCisrCQkicHJpbnQgYXIyXCg6MiwyOjNcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg6Miw4 OlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMTgsIDI4XFwpIFxcKCAxOSwgMjlcXCkg XFwpIiBcCisrCQkicHJpbnQgYXIyXCg6Miw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDoy LDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAxMSwgMjFcXCkgXFwoIDEyLCAyMlxc KSBcXCkiIFwKKysJCSJwcmludCBhcjJcKDoyLDoyXCkiCisrCisrIyBUZXN0IHN1YnJhbmdlcyBv ZiAyIGRpbWVuc2lvbmFsIGFycmF5cyB3aXRoIGxpdGVyYWxzIGFuZCBzdWJyYW5nZSB2YXJpYXRp b25zCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoNywgMzo2XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9 IFxcKDczLCA3NCwgNzUsIDc2XFwpIiBcCisrCQkicHJpbnQgYXIyXCg3LCAzOjZcKSIKKytnZGJf dGVzdCAicHJpbnQgYXIyXCg3LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDc4LCA3OVxc KSIgXAorKwkJInByaW50IGFyMlwoNyw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDcsOjJc KSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoNzEsIDcyXFwpIiBcCisrCQkicHJpbnQgYXIyXCg3 LDoyXCkiCisrCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoNzo4LDRcKSIgXAorKwkJIlxcJFxbMC05 XF0rID0gXFwoNzQsIDg0XFwpIiBcCisrCQkicHJpbnQgYXIyKDc6OCw0XCkiCisrZ2RiX3Rlc3Qg InByaW50IGFyMlwoODosNFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCg4NCwgOTRcXCkiIFwK KysJCSJwcmludCBhcjJcKDg6LDRcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg6Miw0XCkiIFwK KysJCSJcXCRcWzAtOVxdKyA9IFxcKDE0LCAyNFxcKSIgXAorKwkJInByaW50IGFyMlwoOjIsNFwp IgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDMsNFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSAzNCIg XAorKwkJInByaW50IGFyMlwoMyw0XCkiCisrCisrIyBUZXN0IHN1YmFycmF5cyBvZiAzIGRpbWVu c2lvbmFsIGFycmF5cyB3aXRoIGxpdGVyYWxzIGFuZCBzdWJyYW5nZSB2YXJpYXRpb25zCisrZ2Ri X3Rlc3QgInByaW50IGFyM1woMjo0LDM6NCw3OjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwo XFwoIFxcKCAyMzcsIDMzNywgNDM3XFwpIFxcKCAyNDcsIDM0NywgNDQ3XFwpIFxcKSBcXCggXFwo IDIzOCwgMzM4LCA0MzhcXCkgXFwoIDI0OCwgMzQ4LCA0NDhcXCkgXFwpIFxcKSIgXAorKwkJInBy aW50IGFyM1woMjo0LDM6NCw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjMsNDo1LDg6 XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjQ4LCAzNDhcXCkgXFwoIDI1OCwg MzU4XFwpIFxcKSBcXCggXFwoIDI0OSwgMzQ5XFwpIFxcKCAyNTksIDM1OVxcKSBcXCkgXFwpIiBc CisrCQkicHJpbnQgYXIzXCgyOjMsNDo1LDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjoz LDQ6NSw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDI0MSwgMzQxXFwpIFxc KCAyNTEsIDM1MVxcKSBcXCkgXFwoIFxcKCAyNDIsIDM0MlxcKSBcXCggMjUyLCAzNTJcXCkgXFwp IFxcKSIgXAorKwkJInByaW50IGFyM1woMjozLDQ6NSw6MlwpIgorKworK2dkYl90ZXN0ICJwcmlu dCBhcjNcKDI6Myw4Oiw3OjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyODcs IDM4N1xcKSBcXCggMjk3LCAzOTdcXCkgXFwpIFxcKCBcXCggMjg4LCAzODhcXCkgXFwoIDI5OCwg Mzk4XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6Myw4Oiw3OjhcKSIKKytnZGJfdGVz dCAicHJpbnQgYXIzXCgyOjMsODosODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxc KCAyODgsIDM4OFxcKSBcXCggMjk4LCAzOThcXCkgXFwpIFxcKCBcXCggMjg5LCAzODlcXCkgXFwo IDI5OSwgMzk5XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6Myw4Oiw4OlwpIgorK2dk Yl90ZXN0ICJwcmludCBhcjNcKDI6Myw4Oiw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChc XCggXFwoIDI4MSwgMzgxXFwpIFxcKCAyOTEsIDM5MVxcKSBcXCkgXFwoIFxcKCAyODIsIDM4Mlxc KSBcXCggMjkyLCAzOTJcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMjozLDg6LDoyXCki CisrCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDoyLDc6OFwpIiBcCisrCQkiXFwkXFswLTlc XSsgPSBcXChcXCggXFwoIDIxNywgMzE3XFwpIFxcKCAyMjcsIDMyN1xcKSBcXCkgXFwoIFxcKCAy MTgsIDMxOFxcKSBcXCggMjI4LCAzMjhcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMjoz LDoyLDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw6Miw4OlwpIiBcCisrCQkiXFwk XFswLTlcXSsgPSBcXChcXCggXFwoIDIxOCwgMzE4XFwpIFxcKCAyMjgsIDMyOFxcKSBcXCkgXFwo IFxcKCAyMTksIDMxOVxcKSBcXCggMjI5LCAzMjlcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFy M1woMjozLDoyLDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDoyLDoyXCkiIFwKKysJ CSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjExLCAzMTFcXCkgXFwoIDIyMSwgMzIxXFwpIFxc KSBcXCggXFwoIDIxMiwgMzEyXFwpIFxcKCAyMjIsIDMyMlxcKSBcXCkgXFwpIiBcCisrCQkicHJp bnQgYXIzXCgyOjMsOjIsOjJcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg4OiwzOjQsNzo4 XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODM3LCA5MzdcXCkgXFwoIDg0Nywg OTQ3XFwpIFxcKSBcXCggXFwoIDgzOCwgOTM4XFwpIFxcKCA4NDgsIDk0OFxcKSBcXCkgXFwpIiBc CisrCQkicHJpbnQgYXIzXCg4OiwzOjQsNzo4XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woODos NDo1LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODQ4LCA5NDhcXCkgXFwo IDg1OCwgOTU4XFwpIFxcKSBcXCggXFwoIDg0OSwgOTQ5XFwpIFxcKCA4NTksIDk1OVxcKSBcXCkg XFwpIiBcCisrCQkicHJpbnQgYXIzXCg4Oiw0OjUsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIz XCg4Oiw0OjUsOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4NDEsIDk0MVxc KSBcXCggODUxLCA5NTFcXCkgXFwpIFxcKCBcXCggODQyLCA5NDJcXCkgXFwoIDg1MiwgOTUyXFwp IFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDQ6NSw6MlwpIgorKworK2dkYl90ZXN0ICJw cmludCBhcjNcKDg6LDg6LDc6OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDg4 NywgOTg3XFwpIFxcKCA4OTcsIDk5N1xcKSBcXCkgXFwoIFxcKCA4ODgsIDk4OFxcKSBcXCggODk4 LCA5OThcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woODosODosNzo4XCkiCisrZ2RiX3Rl c3QgInByaW50IGFyM1woODosODosODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxc KCA4ODgsIDk4OFxcKSBcXCggODk4LCA5OThcXCkgXFwpIFxcKCBcXCggODg5LCA5ODlcXCkgXFwo IDg5OSwgOTk5XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDg6LDg6XCkiCisrZ2Ri X3Rlc3QgInByaW50IGFyM1woODosODosOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwo IFxcKCA4ODEsIDk4MVxcKSBcXCggODkxLCA5OTFcXCkgXFwpIFxcKCBcXCggODgyLCA5ODJcXCkg XFwoIDg5MiwgOTkyXFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDg6LDoyXCkiCisr CisrZ2RiX3Rlc3QgInByaW50IGFyM1woODosOjIsNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCBcXCggODE3LCA5MTdcXCkgXFwoIDgyNywgOTI3XFwpIFxcKSBcXCggXFwoIDgxOCwg OTE4XFwpIFxcKCA4MjgsIDkyOFxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg4Oiw6Miw3 OjhcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw6Miw4OlwpIiBcCisrCQkiXFwkXFswLTlc XSsgPSBcXChcXCggXFwoIDgxOCwgOTE4XFwpIFxcKCA4MjgsIDkyOFxcKSBcXCkgXFwoIFxcKCA4 MTksIDkxOVxcKSBcXCggODI5LCA5MjlcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woODos OjIsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw6Miw6MlwpIiBcCisrCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggXFwoIDgxMSwgOTExXFwpIFxcKCA4MjEsIDkyMVxcKSBcXCkgXFwoIFxc KCA4MTIsIDkxMlxcKSBcXCggODIyLCA5MjJcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1wo ODosOjIsOjJcKSIKKysKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6MiwzOjQsNzo4XCkiIFwK KysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTM3LCAyMzdcXCkgXFwoIDE0NywgMjQ3XFwp IFxcKSBcXCggXFwoIDEzOCwgMjM4XFwpIFxcKCAxNDgsIDI0OFxcKSBcXCkgXFwpIiBcCisrCQki cHJpbnQgYXIzIFwoOjIsMzo0LDc6OFwpLiIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6MiwzOjQs ODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxMzgsIDIzOFxcKSBcXCggMTQ4 LCAyNDhcXCkgXFwpIFxcKCBcXCggMTM5LCAyMzlcXCkgXFwoIDE0OSwgMjQ5XFwpIFxcKSBcXCki IFwKKysJCSJwcmludCBhcjNcKDoyLDM6NCw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDoy LDM6NCw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDEzMSwgMjMxXFwpIFxc KCAxNDEsIDI0MVxcKSBcXCkgXFwoIFxcKCAxMzIsIDIzMlxcKSBcXCggMTQyLCAyNDJcXCkgXFwp IFxcKSIgXAorKwkJInByaW50IGFyM1woOjIsMzo0LDoyXCkiCisrCisrZ2RiX3Rlc3QgInByaW50 IGFyM1woOjIsODosNzo4XCkiICJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTg3LCAyODdcXCkg XFwoIDE5NywgMjk3XFwpIFxcKSBcXCggXFwoIDE4OCwgMjg4XFwpIFxcKCAxOTgsIDI5OFxcKSBc XCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6Miw4Oiw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQg YXIzXCg6Miw4Oiw4OlwpIiAiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDE4OCwgMjg4XFwpIFxc KCAxOTgsIDI5OFxcKSBcXCkgXFwoIFxcKCAxODksIDI4OVxcKSBcXCggMTk5LCAyOTlcXCkgXFwp IFxcKSIgXAorKwkJInByaW50IGFyM1woOjIsODosODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIz XCg6Miw4Oiw6MlwpIiAiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDE4MSwgMjgxXFwpIFxcKCAx OTEsIDI5MVxcKSBcXCkgXFwoIFxcKCAxODIsIDI4MlxcKSBcXCggMTkyLCAyOTJcXCkgXFwpIFxc KSIgXAorKwkJInByaW50IGFyM1woOjIsODosOjJcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIz XCg6Miw6Miw3OjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxMTcsIDIxN1xc KSBcXCggMTI3LCAyMjdcXCkgXFwpIFxcKCBcXCggMTE4LCAyMThcXCkgXFwoIDEyOCwgMjI4XFwp IFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDoyLDoyLDc6OFwpIgorK2dkYl90ZXN0ICJwcmlu dCBhcjNcKDoyLDoyLDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTE4LCAy MThcXCkgXFwoIDEyOCwgMjI4XFwpIFxcKSBcXCggXFwoIDExOSwgMjE5XFwpIFxcKCAxMjksIDIy OVxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6Miw6Miw4OlwpIgorK2dkYl90ZXN0ICJw cmludCBhcjNcKDoyLDoyLDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTEx LCAyMTFcXCkgXFwoIDEyMSwgMjIxXFwpIFxcKSBcXCggXFwoIDExMiwgMjEyXFwpIFxcKCAxMjIs IDIyMlxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6Miw6Miw6MlwpIgorKworKworKyNU ZXN0cyBmb3Igc3ViYXJyYXlzIG9mIDMgZGltZW5zaW9uYWwgYXJyYXlzIHdpdGggbGl0ZXJhbHMg YW5kIHN1YnJhbmdlcworK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsMzo0LDc6OFwpIiBcCisrCQki XFwkXFswLTlcXSsgPSBcXChcXCggMzM3LCAzNDdcXCkgXFwoIDMzOCwgMzQ4XFwpIFxcKSIgXAor KwkJInByaW50IGFyM1woMywzOjQsNzo4XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0OjUs ODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDM0OCwgMzU4XFwpIFxcKCAzNDksIDM1 OVxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDMsNDo1LDg6XCkiCisrZ2RiX3Rlc3QgInByaW50 IGFyM1woMyw0OjUsOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDM0MSwgMzUxXFwp IFxcKCAzNDIsIDM1MlxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDMsNDo1LDoyXCkiCisrZ2Ri X3Rlc3QgInByaW50IGFyM1woMyw0OjUsM1wpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgzNDMs IDM1M1xcKSIgXAorKwkJInByaW50IGFyM1woMyw0OjUsM1wpIgorKworK2dkYl90ZXN0ICJwcmlu dCBhcjNcKDIsODosNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyODcsIDI5N1xc KSBcXCggMjg4LCAyOThcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgyLDg6LDc6OFwpIgorK2dk Yl90ZXN0ICJwcmludCBhcjNcKDIsODosODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwo IDI4OCwgMjk4XFwpIFxcKCAyODksIDI5OVxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDIsODos ODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDoyXCkiXAorKwkJIlxcJFxbMC05XF0r ID0gXFwoXFwoIDI4MSwgMjkxXFwpIFxcKCAyODIsIDI5MlxcKSBcXCkiIFwKKysJCSJwcmludCBh cjNcKDIsODosOjJcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDNcKSIgXAorKwkJIlxc JFxbMC05XF0rID0gXFwoMjgzLCAyOTNcXCkiIFwKKysJCSJwcmludCBhcjNcKDIsODosM1wpIgor KworK2dkYl90ZXN0ICJwcmludCBhcjNcKDIsOjIsNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCAyMTcsIDIyN1xcKSBcXCggMjE4LCAyMjhcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIz XCgyLDoyLDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDIsOjIsODpcKSIgXAorKwkJIlxc JFxbMC05XF0rID0gXFwoXFwoIDIxOCwgMjI4XFwpIFxcKCAyMTksIDIyOVxcKSBcXCkiIFwKKysJ CSJwcmludCBhcjNcKDIsOjIsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDoyLDoyXCki IFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMTEsIDIyMVxcKSBcXCggMjEyLCAyMjJcXCkg XFwpIiBcCisrCQkicHJpbnQgYXIzXCgyLDoyLDoyXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1wo Miw6MiwzXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDIxMywgMjIzXFwpIiBcCisrCQkicHJp bnQgYXIzXCgyLDoyLDNcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgzLDQsNzo4XCkiIFwK KysJCSJcXCRcWzAtOVxdKyA9IFxcKDM0NywgMzQ4XFwpIiBcCisrCQkicHJpbnQgYXIzXCgzLDQs Nzo4XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxd KyA9IFxcKDM0OCwgMzQ5XFwpIiBcCisraQkJInByaW50IGFyM1woMyw0LDg6XCkiCisrZ2RiX3Rl c3QgInByaW50IGFyM1woMyw0LDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDM0MSwgMzQy XFwpIiBcCisrCQkicHJpbnQgYXIzXCgzLDQsOjJcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg1 LDYsN1wpIiBcCisrCQkiXFwkXFswLTlcXSsgPSA1NjciIFwKKysJCSJwcmludCBhcjNcKDUsNiw3 XCkiCisrCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMzo0LDYsNzo4XCkiIFwKKysJCSJcXCRcWzAt OVxdKyA9IFxcKFxcKCAzNjcsIDQ2N1xcKSBcXCggMzY4LCA0NjhcXCkgXFwpIiBcCisrCQkicHJp bnQgYXIzXCgzOjQsNiw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgzOjQsNiw4OlwpIiBc CisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMzY4LCA0NjhcXCkgXFwoIDM2OSwgNDY5XFwpIFxc KSIgXAorKwkJInByaW50IGFyM1woMzo0LDYsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgz OjQsNiw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMzYxLCA0NjFcXCkgXFwoIDM2 MiwgNDYyXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMzo0LDYsOjJcKSIKKytnZGJfdGVzdCAi cHJpbnQgYXIzXCgzOjQsNiw1XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDM2NSwgNDY1XFwp IiBcCisrCQkicHJpbnQgYXIzXCgzOjQsNiw1XCkiCisrCisrZ2RiX3Rlc3QgInByaW50IGFyM1wo ODosNiw3OjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDg2NywgOTY3XFwpIFxcKCA4 NjgsIDk2OFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDYsNzo4XCkiCisrZ2RiX3Rlc3Qg InByaW50IGFyM1woODosNiw4OlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggODY4LCA5 NjhcXCkgXFwoIDg2OSwgOTY5XFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woODosNiw4OlwpIgor K2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDYsOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwo XFwoIDg2MSwgOTYxXFwpIFxcKCA4NjIsIDk2MlxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6 LDYsOjJcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw2LDVcKSIgXAorKwkJIlxcJFxbMC05 XF0rID0gXFwoODY1LCA5NjVcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDYsNVwpIgorKworK2dk Yl90ZXN0ICJwcmludCBhcjNcKDoyLDYsNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCAxNjcsIDI2N1xcKSBcXCggMTY4LCAyNjhcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6Miw2 LDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDYsODpcKSIgXAorKwkJIlxcJFxbMC05 XF0rID0gXFwoXFwoIDE2OCwgMjY4XFwpIFxcKCAxNjksIDI2OVxcKSBcXCkiIFwKKysJCSJwcmlu dCBhcjNcKDoyLDYsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw2LDoyXCkiIFwKKysJ CSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAxNjEsIDI2MVxcKSBcXCggMTYyLCAyNjJcXCkgXFwpIiBc CisrCQkicHJpbnQgYXIzXCg6Miw2LDoyXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woOjIsNiw1 XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDE2NSwgMjY1XFwpIiBcCisrCQkicHJpbnQgYXIz XCg6Miw2LDVcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgzOjQsNTo2LDRcKSIgXAorKwkJ IlxcJFxbMC05XF0rID0gXFwoXFwoIDM1NCwgNDU0XFwpIFxcKCAzNjQsIDQ2NFxcKSBcXCkiIFwK KysJCSJwcmludCBhcjJcKDM6NCw1OjYsNFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDU6 Niw0XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4NTQsIDk1NFxcKSBcXCggODY0LCA5 NjRcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCg4Oiw1OjYsNFwpIgorK2dkYl90ZXN0ICJwcmlu dCBhcjNcKDoyLDU6Niw0XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAxNTQsIDI1NFxc KSBcXCggMTY0LCAyNjRcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCg6Miw1OjYsNFwpIgorKwor KyMgU3RyaWRlID4gMQorK2dkYl90ZXN0ICJwcmludCBhcjFcKDI6NjoyXCkiIFwKKysJCSJcXCRc WzAtOVxdKyA9IFxcKDIsIDQsIDZcXCkiIFwKKysJCSJwcmludCBhcjFcKDI6NjoyXCkiCisrZ2Ri X3Rlc3QgInByaW50IGFyMlwoMjo2OjIsMzo0XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCAyMywgNDMsIDYzXFwpIFxcKCAyNCwgNDQsIDY0XFwpIFxcKSIgXAorKwkJInByaW50IGFyMlwo Mjo2OjIsMzo0XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoMjo2OjIsM1wpIiBcCisrCQkiXFwk XFswLTlcXSsgPSBcXCgyMywgNDMsIDYzXFwpIiBcCisrCQkicHJpbnQgYXIyXCgyOjY6MiwzXCki CisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjo2OjIsMzo1OjIsNDo3OjNcKSIgXAorKwkJIlxcJFxb MC05XF0rID0gXFwoXFwoIFxcKCAyMzQsIDQzNCwgNjM0XFwpIFxcKCAyNTQsIDQ1NCwgNjU0XFwp IFxcKSBcXCggXFwoIDIzNywgNDM3LCA2MzdcXCkgXFwoIDI1NywgNDU3LCA2NTdcXCkgXFwpIFxc KSIgXAorKwkJInByaW50IGFyM1woMjo2OjIsMzo1OjIsNDo3OjNcKSIKKytnZGJfdGVzdCAicHJp bnQgYXIzXCgyOjY6Miw1LDQ6NzozXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyNTQs IDQ1NCwgNjU0XFwpIFxcKCAyNTcsIDQ1NywgNjU3XFwpIFxcKSIgXAorKwkJInByaW50IGFyM1wo Mjo2OjIsNSw0Ojc6M1wpIgorKworKyMgU3RyaWRlIDwgMAorK2dkYl90ZXN0ICJwcmludCBhcjFc KDg6MjotMlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCg4LCA2LCA0LCAyXFwpIiBcCisrCQki cHJpbnQgYXIxXCg4OjI6LTJcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg4OjI6LTIsMzo0XCki IFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4MywgNjMsIDQzLCAyM1xcKSBcXCggODQsIDY0 LCA0NCwgMjRcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCg4OjI6LTIsMzo0XCkiCisrZ2RiX3Rl c3QgInByaW50IGFyMlwoMjo2OjIsM1wpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgyMywgNDMs IDYzXFwpIiBcCisrCQkicHJpbnQgYXIyXCgyOjY6MiwzXCkiCisrZ2RiX3Rlc3QgInByaW50IGFy M1woMjozLDc6MzotNCw0Ojc6M1wpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDI3 NCwgMzc0XFwpIFxcKCAyMzQsIDMzNFxcKSBcXCkgXFwoIFxcKCAyNzcsIDM3N1xcKSBcXCggMjM3 LCAzMzdcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMjozLDc6MzotNCw0Ojc6M1wpIgor K2dkYl90ZXN0ICJwcmludCBhcjNcKDI6NjoyLDUsNzo0Oi0zXCkiIFwKKysJCSJcXCRcWzAtOVxd KyA9IFxcKFxcKCAyNTcsIDQ1NywgNjU3XFwpIFxcKCAyNTQsIDQ1NCwgNjU0XFwpIFxcKSIgXAor KwkJInByaW50IGFyM1woMjo2OjIsNSw3OjQ6LTNcKSIKKysKKysjIFRlc3RzIHdpdGggbmVnYXRp dmUgYW5kIG1peGVkIGluZGljZXMKKytnZGJfdGVzdCAicCBhcjRcKDI6NCwgLTI6MSwgLTE1Oi0x NFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDI2MSwgMzYxLCA0NjFcXCkgXFwo IDI3MSwgMzcxLCA0NzFcXCkgXFwoIDI4MSwgMzgxLCA0ODFcXCkgXFwoIDI5MSwgMzkxLCA0OTFc XCkgXFwpIFxcKCBcXCggMjYyLCAzNjIsIDQ2MlxcKSBcXCggMjcyLCAzNzIsIDQ3MlxcKSBcXCgg MjgyLCAzODIsIDQ4MlxcKSBcXCggMjkyLCAzOTIsIDQ5MlxcKSBcXCkgXFwpIiBcCisrCQkicHJp bnQgYXI0KDI6NCwgLTI6MSwgLTE1Oi0xNCkiCisrCisrZ2RiX3Rlc3QgInAgYXI0XCg3LC02OjI6 MywtN1wpIiBcCisrICAgICAgICAgICAgICAgICJcXCRcWzAtOVxdKyA9IFxcKDcyOSwgNzU5LCA3 ODlcXCkiIFwKKysgICAgICAgICAgICAgICAgInByaW50IGFyNCg3LC02OjI6MywtNykiCisrCisr Z2RiX3Rlc3QgInAgYXI0XCg5OjI6LTIsIC02OjI6MywgLTY6LTE1Oi0zXCkiIFwKKysgICAgICAg ICAgICAgICAgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA5MzAsIDczMCwgNTMwLCAzMzBcXCkg XFwoIDk2MCwgNzYwLCA1NjAsIDM2MFxcKSBcXCggOTkwLCA3OTAsIDU5MCwgMzkwXFwpIFxcKSBc XCggXFwoIDkyNywgNzI3LCA1MjcsIDMyN1xcKSBcXCggOTU3LCA3NTcsIDU1NywgMzU3XFwpIFxc KCA5ODcsIDc4NywgNTg3LCAzODdcXCkgXFwpIFxcKCBcXCggOTI0LCA3MjQsIDUyNCwgMzI0XFwp IFxcKCA5NTQsIDc1NCwgNTU0LCAzNTRcXCkgXFwoIDk4NCwgNzg0LCA1ODQsIDM4NFxcKSBcXCkg XFwoIFxcKCA5MjEsIDcyMSwgNTIxLCAzMjFcXCkgXFwoIDk1MSwgNzUxLCA1NTEsIDM1MVxcKSBc XCggOTgxLCA3ODEsIDU4MSwgMzgxXFwpIFxcKSBcXCkiIFwKKysgICAgICAgICAgICAgICAgInBy aW50IGFyNCg5OjI6LTIsIC02OjI6MywgLTY6LTE1Oi0zKSIKKysKKytnZGJfdGVzdCAicCBhcjRc KDosOiw6XCkiIFwKKysgICAgICAgICAgICAgICAgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAx MTEsIDIxMSwgMzExLCA0MTEsIDUxMSwgNjExLCA3MTEsIDgxMSwgLioiIFwKKysgICAgICAgICAg ICAgICAgInByaW50IGFyNCg6LDosOikiCisrCisrIyBQcm92b2tlIGVycm9yIG1lc3NhZ2VzIGZv ciBiYWQgdXNlciBpbnB1dAorK2dkYl90ZXN0ICJwcmludCBhcjFcKDA6NFwpIiBcCisrCQkicHJv dmlkZWQgYm91bmRcXChzXFwpIG91dHNpZGUgYXJyYXkgYm91bmRcXChzXFwpIiBcCisrCQkicHJp bnQgYXIxXCgwOjRcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjEyXCkiIFwKKysJCSJwcm92 aWRlZCBib3VuZFxcKHNcXCkgb3V0c2lkZSBhcnJheSBib3VuZFxcKHNcXCkiIFwKKysJCSJwcmlu dCBhcjFcKDg6MTJcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjI6XCkiIFwKKysJCSJBIHN5 bnRheCBlcnJvciBpbiBleHByZXNzaW9uLCBuZWFyIGBcXCknLiIgXAorKwkJInByaW50IGFyMVwo ODoyOlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjFcKDg6MjoyXCkiIFwKKysJCSJXcm9uZyB2YWx1 ZSBwcm92aWRlZCBmb3Igc3RyaWRlIGFuZCBib3VuZGFyaWVzIiBcCisrCQkicHJpbnQgYXIxXCg4 OjI6MlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjFcKDI6ODotMlwpIiBcCisrCQkiV3JvbmcgdmFs dWUgcHJvdmlkZWQgZm9yIHN0cmlkZSBhbmQgYm91bmRhcmllcyIgXAorKwkJInByaW50IGFyMVwo Mjo4Oi0yXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMVwoMjo3OjBcKSIgXAorKwkJIlN0cmlkZSBt dXN0IG5vdCBiZSAwIiBcCisrCQkicHJpbnQgYXIxXCgyOjc6MFwpIgorK2dkYl90ZXN0ICJwcmlu dCBhcjFcKDM6N1wpID0gNDIiIFwKKysJCSJJbnZhbGlkIGNhc3QuIiBcCisrCQkiQXNzaWdubWVu dCBvZiB2YWx1ZSB0byBzdWJhcnJheSIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdGF0 aWMtYXJyYXlzLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFmMWEy MGMKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGlj LWFycmF5cy5mOTAKK0BAIC0wLDAgKzEsNTUgQEAKKyshIENvcHlyaWdodCAyMDE1IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIENvbnRyaWJ1dGVkIGJ5IEludGVsIENvcnAu IDxjaHJpc3RvcGgudC53ZWlubWFubkBpbnRlbC5jb20+CisrIQorKyEgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysh IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKysKKytzdWJyb3V0aW5lIHN1YgorKyAgaW50ZWdlciwgZGltZW5zaW9uKDkp IDo6IGFyMQorKyAgaW50ZWdlciwgZGltZW5zaW9uKDksOSkgOjogYXIyCisrICBpbnRlZ2VyLCBk aW1lbnNpb24oOSw5LDkpIDo6IGFyMworKyAgaW50ZWdlciwgZGltZW5zaW9uKDEwLC03OjMsIC0x NTotNSkgOjogYXI0CisrICBpbnRlZ2VyIDo6IGksaixrCisrCisrICBhcjEgPSAxCisrICBhcjIg PSAxCisrICBhcjMgPSAxCisrICBhcjQgPSA0CisrCisrICAhIFJlc3VsdGluZyBhcnJheSBhcjMg bG9va3MgbGlrZSAoKCggMTExLCAxMTIsIDExMywgMTE0LC4uLikpKQorKyAgZG8gaSA9IDEsIDks IDEKKysgICAgYXIxKGkpID0gaQorKyAgICBkbyBqID0gMSwgOSwgMQorKyAgICAgIGFyMihpLGop ID0gaSoxMCArIGoKKysgICAgICBkbyBrID0gMSwgOSwgMQorKyAgICAgICAgYXIzKGksaixrKSA9 IGkqMTAwICsgaioxMCArIGsKKysgICAgICBlbmQgZG8KKysgICAgZW5kIGRvCisrICBlbmQgZG8K KysKKysgIGRvIGkgPSAxLCAxMSwgMQorKyAgICBkbyBqID0gLTcsIDMsIDEKKysgICAgICBkbyBr ID0gLTE1LCAtNSwgMQorKyAgICAgICAgYXI0KGksaixrKSA9IGkqMTAwICsgKGorOCkqMTAgKyAo aysxNikKKysgICAgICBlbmQgZG8KKysgICAgZW5kIGRvCisrICBlbmQgZG8KKysKKysgIGFyMSgx KSA9IDExICAhQlAxCisrICByZXR1cm4KKytlbmQKKysKKytwcm9ncmFtIHRlc3Rwcm9nCisrICBj YWxsIHN1YgorK2VuZAorLS0gCisxLjcuMC43CgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC5w YXRjaCBiL2dkYi12bGEtaW50ZWwucGF0Y2gKaW5kZXggOTI1ZjQwMS4uZWRmNmIyMyAxMDA2NDQK LS0tIGEvZ2RiLXZsYS1pbnRlbC5wYXRjaAorKysgYi9nZGItdmxhLWludGVsLnBhdGNoCkBAIC03 NTUsMjQgKzc1NSw2IEBAIEluZGV4OiBnZGItNy4xMC41MC4yMDE2MDEwNi9nZGIvZ2RidHlwZXMu YwogIH0KICAKICAvKiBSZXNvbHZlIGR5bmFtaWMgYm91bmRzIG9mIG1lbWJlcnMgb2YgdGhlIHVu aW9uIFRZUEUgdG8gc3RhdGljCi1AQCAtNDU1OCw2ICs0NjIyLDE3IEBACi0gICAgICAgZ2RiX2Fz c2VydF9ub3RfcmVhY2hlZCAoImJhZCB0eXBlX3NwZWNpZmljX2tpbmQiKTsKLSAgICAgfQotIAot KyAgaWYgKFRZUEVfTkZJRUxEUyAodHlwZSkpCi0rICAgIHsKLSsgICAgICBpbnQgbmZpZWxkcyA9 IFRZUEVfTkZJRUxEUyAodHlwZSk7Ci0rCi0rICAgICAgVFlQRV9GSUVMRFMgKG5ld190eXBlKQot KyAgICAgICAgICAgICAgPSBPQlNUQUNLX0NBTExPQyAoJlRZUEVfT1dORVIgKHR5cGUpLm9iamZp bGUtPm9iamZpbGVfb2JzdGFjaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5m aWVsZHMsIHN0cnVjdCBmaWVsZCk7Ci0rICAgICAgbWVtY3B5IChUWVBFX0ZJRUxEUyAobmV3X3R5 cGUpLCBUWVBFX0ZJRUxEUyAodHlwZSksCi0rICAgICAgICBuZmllbGRzICogc2l6ZW9mIChzdHJ1 Y3QgZmllbGQpKTsKLSsgICB9Ci0rCi0gICByZXR1cm4gbmV3X3R5cGU7Ci0gfQotIAogSW5kZXg6 IGdkYi03LjEwLjUwLjIwMTYwMTA2L2dkYi9nZGJ0eXBlcy5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gZ2Ri LTcuMTAuNTAuMjAxNjAxMDYub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDE2LTAxLTA4IDE5OjE1OjM1 LjA4NTU4MjQ3MSArMDEwMAoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXgg ZjIxMTI0OC4uZWFhMTZiMiAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAg LTI3LDcgKzI3LDcgQEAgVmVyc2lvbjogNy4xMC41MC4le3NuYXBzcmN9CiAKICMgVGhlIHJlbGVh c2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0 IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBy cG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogMzUl ez9kaXN0fQorUmVsZWFzZTogMzYlez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYz KyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBh bmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluIGFuZCBHRkRMCiBH cm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC01MjAsMTEgKzUyMCwxOSBAQCBQYXRjaDg0 ODogZ2RiLWR0cy1yaGVsNi1weXRob24tY29tcGF0LnBhdGNoCiBQYXRjaDg1MjogZ2RiLWduYXQt ZHdhcmYtY3Jhc2gtM29mMy5wYXRjaAogCiAjIFZMQSAoRm9ydHJhbiBkeW5hbWljIGFycmF5cykg ZnJvbSBJbnRlbCArIGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYSB0ZXN0cy4KK1BhdGNoMTA1ODog Z2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTFvZjYucGF0Y2gKK1BhdGNoMTA1OTogZ2RiLWZvcnRy YW4tc3RyaWRlLWludGVsLTJvZjYucGF0Y2gKK1BhdGNoMTA2MDogZ2RiLWZvcnRyYW4tc3RyaWRl LWludGVsLTNvZjYucGF0Y2gKK1BhdGNoMTA2MTogZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTRv ZjYucGF0Y2gKK1BhdGNoMTA2MjogZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTVvZjYucGF0Y2gK K1BhdGNoMTA2MzogZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTZvZjYucGF0Y2gKK1BhdGNoMTA2 ODogZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTZvZjYtdGVzdGNhc2VmaXgucGF0Y2gKIFBhdGNo ODg4OiBnZGItdmxhLWludGVsLnBhdGNoCiBQYXRjaDk4MzogZ2RiLXZsYS1pbnRlbC1sb2dpY2Fs LW5vdC5wYXRjaAogUGF0Y2g4ODk6IGdkYi12bGEtaW50ZWwtc3RyaW5nYnQtZml4LnBhdGNoCiBQ YXRjaDkxMjogZ2RiLXZsYS1pbnRlbC0wNG9mMjMtZml4LnBhdGNoCiBQYXRjaDg4NzogZ2RiLWFy Y2hlci12bGEtdGVzdHMucGF0Y2gKK1BhdGNoMTA2OTogZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVs LTZvZjYtbm9rZmFpbC5wYXRjaAogCiAjIENvbnRpbnVlIGJhY2t0cmFjZSBldmVuIGlmIGEgZnJh bWUgZmlsdGVyIHRocm93cyBhbiBleGNlcHRpb24gKFBoaWwgTXVsZG9vbikuCiBQYXRjaDkxODog Z2RiLWJ0cm9idXN0LnBhdGNoCkBAIC03NTUsNiArNzYzLDEzIEBAIGZpbmQgLW5hbWUgIiouaW5m byoifHhhcmdzIHJtIC1mCiAKICNwYXRjaDIzMiAtcDEKICVwYXRjaDM0OSAtcDEKKyVwYXRjaDEw NTggLXAxCislcGF0Y2gxMDU5IC1wMQorJXBhdGNoMTA2MCAtcDEKKyVwYXRjaDEwNjEgLXAxCisl cGF0Y2gxMDYyIC1wMQorJXBhdGNoMTA2MyAtcDEKKyVwYXRjaDEwNjggLXAxCiAlcGF0Y2g4ODgg LXAxCiAlcGF0Y2g5ODMgLXAxCiAlcGF0Y2g4ODkgLXAxCkBAIC04NTIsNiArODY3LDcgQEAgZmlu ZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0gLWYKICVwYXRjaDg1MiAtcDEKICVwYXRjaDg2MyAt cDEKICVwYXRjaDg4NyAtcDEKKyVwYXRjaDEwNjkgLXAxCiAlcGF0Y2g5MTggLXAxCiAlcGF0Y2g5 MjUgLXAxCiAlcGF0Y2g5MjcgLXAxCkBAIC0xMzc3LDYgKzEzOTMsOSBAQCB0aGVuCiBmaQogCiAl Y2hhbmdlbG9nCisqIFNhdCBKYW4gIDkgMjAxNiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4gLSA3LjEwLjUwLjIwMTYwMTA2LTM2LmZjMjQKKy0gVkxBIChGb3J0cmFu IGR5bmFtaWMgYXJyYXlzKSBzdHJpZGVzIChtdWx0aS1kaW1lbnNpb25hbCBzdWJhcnJheXMpIGZy b20gSW50ZWwuCisKICogRnJpIEphbiAgOCAyMDE2IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPiAtIDcuMTAuNTAuMjAxNjAxMDYtMzUuZmMyNAogLSBGaXggZmFsc2Ug RkFJTHMgb24gdG9vIGxvbmcgYmFzZSBkaXJlY3RvcnkuCiAK