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: Jocelyn Falempe To: git-commits@fedoraproject.org Subject: [rpms/kmscon] rawhide: Update to v10.0.1 Date: Thu, 02 Jul 2026 13:53:01 GMT Message-ID: <178300038189.1.13860198517052590106.rpms-kmscon-98b9b51c4a24@fedoraproject.org> List-ID: X-Git-Repo: rpms/kmscon X-Git-Branch: rawhide X-Git-Rev: 98b9b51c4a24c02ed6b965550f90e5844b56db07 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMva21zY29uCiAgICAgICAgICAgIEJyYW5jaCA6IHJhd2hpZGUKICAgICAgICAg ICAgQ29tbWl0IDogOThiOWI1MWM0YTI0YzAyZWQ2Yjk2NTU1MGY5MGU1ODQ0YjU2ZGIwNwogICAg ICAgICAgICBBdXRob3IgOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+CiAg ICAgICAgICAgIERhdGUgICA6IDIwMjYtMDctMDJUMTU6NTA6NTQrMDI6MDAKICAgICAgICAgICAg U3RhdHMgIDogKzQvLTI4ODQgaW4gNiBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBz Oi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMva21zY29uL2MvOThiOWI1MWM0YTI0YzAyZWQ2 Yjk2NTU1MGY5MGU1ODQ0YjU2ZGIwNz9icmFuY2g9cmF3aGlkZQoKICAgICAgICAgICAgTG9nOgog ICAgICAgICAgICBVcGRhdGUgdG8gdjEwLjAuMQoKUmVtb3ZlIHRoZSBwYXRjaGVzIHRoYXQgYXJl IG5vdyBpbnRlZ3JhdGVkIHVwc3RyZWFtCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8u Z2l0aWdub3JlCmluZGV4IDJjOThmYmEuLjg3MWI4YmYgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUK KysrIGIvLmdpdGlnbm9yZQpAQCAtOSwzICs5LDQgQEAKIC9rbXNjb24tOS4zLjQudGFyLmd6CiAv a21zY29uLTkuMy41LnRhci5negogL2ttc2Nvbi0xMC4wLjAudGFyLmd6Cisva21zY29uLTEwLjAu MS50YXIuZ3oKCmRpZmYgLS1naXQgYS8wMDAxLVVzZS1hZ2V0dHktb24tRmVkb3JhLnBhdGNoIGIv MDAwMS1Vc2UtYWdldHR5LW9uLUZlZG9yYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggYzFmOTA5Ny4uMDAwMDAwMAotLS0gYS8wMDAxLVVzZS1hZ2V0dHktb24tRmVkb3JhLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSBiNGNjOWI0MTMwNmZlYWEz N2Q2MDA3MzI5OTM5MjkwOTBhNzNmMmU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog U3RlcGhlbiBHYWxsYWdoZXIgPHNnYWxsYWdoQHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDUgSnVu IDIwMjYgMDk6NDY6NTUgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIGFnZXR0eSBvbiBGZWRv cmEKLQotVGhlIHVwc3RyZWFtIGttc2NvbiBzdXBwb3J0IGZvciAvdXNyL2xpYi9pc3N1ZS5kIGlz IGxhY2tpbmcgYW5kIHdlIG5lZWQKLXRoaXMgZm9yIEZlZG9yYSBTZXJ2ZXIgYW5kIEZlZG9yYSBF TE4gdG8gaW5mb3JtIHRoZSB1c2VyIG9mIHRoZSBDb2NrcGl0Ci1jb25zb2xlIGFkZHJlc3MuCi0K LVNpZ25lZC1vZmYtYnk6IFN0ZXBoZW4gR2FsbGFnaGVyIDxzZ2FsbGFnaEByZWRoYXQuY29tPgot LS0tCi0gc2NyaXB0cy9zeXN0ZW1kL2ttc2NvbnZ0QC5zZXJ2aWNlLmluIHwgMiArLQotIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEv c2NyaXB0cy9zeXN0ZW1kL2ttc2NvbnZ0QC5zZXJ2aWNlLmluIGIvc2NyaXB0cy9zeXN0ZW1kL2tt c2NvbnZ0QC5zZXJ2aWNlLmluCi1pbmRleCBmODZlNWE5YmIzZGU5ZDY2NWUwMWRjY2ZiYjZmZjU1 MWNjZGQ5NmFiLi4xNTJiYWMyZmJjYWNjYzRjNWY5YzNiNDUyYjU1NDU4YWE0NjQ1MzM0IDEwMDY0 NAotLS0tIGEvc2NyaXB0cy9zeXN0ZW1kL2ttc2NvbnZ0QC5zZXJ2aWNlLmluCi0rKysgYi9zY3Jp cHRzL3N5c3RlbWQva21zY29udnRALnNlcnZpY2UuaW4KLUBAIC0zOSw3ICszOSw3IEBAIENvbmRp dGlvblBhdGhFeGlzdHM9L2Rldi90dHkwCi0gCi0gW1NlcnZpY2VdCi0gQFBBTV9DRkdACi0tRXhl Y1N0YXJ0PWttc2NvbiAtLXZ0PSVJIC0tbm8tc3dpdGNodnQKLStFeGVjU3RhcnQ9a21zY29uIC0t dnQ9JUkgLS1uby1zd2l0Y2h2dCAtLW5vLWlzc3VlIC0tbG9naW4gLS0gL3Vzci9iaW4vYWdldHR5 IC1vICctcCAtLSBcXHUnIC0tbm9jbGVhciAtLSAtICQkVEVSTQotIFV0bXBJZGVudGlmaWVyPSVJ Ci0gVFRZUGF0aD0vZGV2LyVJCi0gVFRZUmVzZXQ9eWVzCi0tLSAKLTIuNTQuMAotCgpkaWZmIC0t Z2l0IGEvMDAwMS1zZWF0LUZpeC1zZWF0LXN0YXJ0dXAtaW4tYmFja2dyb3VuZC5wYXRjaCBiLzAw MDEtc2VhdC1GaXgtc2VhdC1zdGFydHVwLWluLWJhY2tncm91bmQucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGJmNzM1OWYuLjAwMDAwMDAKLS0tIGEvMDAwMS1zZWF0LUZpeC1z ZWF0LXN0YXJ0dXAtaW4tYmFja2dyb3VuZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICsw LDAgQEAKLUZyb20gMDg3ZGVkM2FjMWVmOTMyZTczZmQwZjFmYjQ3YThkNDljNDQwNGE2NyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVk aGF0LmNvbT4KLURhdGU6IFR1ZSwgOSBKdW4gMjAyNiAxNDozODo0NCArMDIwMAotU3ViamVjdDog W1BBVENIXSBzZWF0OiBGaXggc2VhdCBzdGFydHVwIGluIGJhY2tncm91bmQKLQotSWYgVlQgMiBp cyBhY3RpdmUsIGFuZCB5b3UgcnVuIHN5c3RlbWN0bCByZXN0YXJ0IGttc2NvbnZ0QHR0eTMKLQot VGhlbiB0aGUgc2Vzc2lvbiB3aWxsIHRyeSB0byBkaXJlY3RseSB0YWtlIHRoZSBHUFUsIGFuZCBm YWlscy4KLVNvIGRvbid0IGF3YWtlIHRoZSBzZWF0IG9uIHN0YXJ0dXAsIGJ1dCB3YWl0IGZvciB0 aGUgdHR5IGJlIGJlIGFjdGl2YXRlZC4KLQotRml4OiAwZGZmYmQ3IHNlc3Npb246IFNpbXBsaWZ5 IHNlc3Npb24gbWFuYWdlbWVudAotU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBlIDxqZmFs ZW1wZUByZWRoYXQuY29tPgotLS0tCi0gc3JjL2ttc2Nvbl9zZWF0LmMgfCAyIC0tCi0gMSBmaWxl IGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMva21zY29uX3NlYXQu YyBiL3NyYy9rbXNjb25fc2VhdC5jCi1pbmRleCA5MWI4ZGI4Li43ZGQxM2RlIDEwMDY0NAotLS0t IGEvc3JjL2ttc2Nvbl9zZWF0LmMKLSsrKyBiL3NyYy9rbXNjb25fc2VhdC5jCi1AQCAtMTEwMSw4 ICsxMTAxLDYgQEAgdm9pZCBrbXNjb25fc2VhdF9zdGFydHVwKHN0cnVjdCBrbXNjb25fc2VhdCAq c2VhdCkKLSAJaWYgKCFzZWF0KQotIAkJcmV0dXJuOwotIAotLQlzZWF0X2dvX2F3YWtlKHNlYXQp OwotLQotIAlzID0ga21zY29uX3NlYXRfbmV3X3Nlc3Npb24oc2VhdCk7Ci0gCWlmIChzKQotIAkJ c2VhdF9zd2l0Y2goc2VhdCwgcyk7Ci0tLSAKLTIuNTQuMAotCgpkaWZmIC0tZ2l0IGEva21zY29u LnNwZWMgYi9rbXNjb24uc3BlYwppbmRleCAzMzAyOWM2Li42NGY4YmQ3IDEwMDY0NAotLS0gYS9r bXNjb24uc3BlYworKysgYi9rbXNjb24uc3BlYwpAQCAtMSw1ICsxLDUgQEAKIE5hbWU6ICAgICAg ICAgICBrbXNjb24KLVZlcnNpb246ICAgICAgICAxMC4wLjAKK1ZlcnNpb246ICAgICAgICAxMC4w LjEKIFJlbGVhc2U6ICAgICAgICAlYXV0b3JlbGVhc2UKIFN1bW1hcnk6ICAgICAgICBMaW51eCBL TVMvRFJNIGJhc2VkIHZpcnR1YWwgQ29uc29sZSBFbXVsYXRvcgogTGljZW5zZTogICAgICAgIE1J VApAQCAtNyw3ICs3LDcgQEAgVVJMOiAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9rbXNj b24va21zY29uLwogU291cmNlOiAgICAgICAgICV7dXJsfS9hcmNoaXZlL3Yle3ZlcnNpb259LyV7 bmFtZX0tJXt2ZXJzaW9ufS50YXIuZ3oKIEJ1aWxkUmVxdWlyZXM6ICBjaGVjay1kZXZlbAogQnVp bGRSZXF1aXJlczogIGRvY2Jvb2stc3R5bGUteHNsCi1CdWlsZFJlcXVpcmVzOiAgbGlidHNtLWRl dmVsID49IDQuNS4wCitCdWlsZFJlcXVpcmVzOiAgbGlidHNtLWRldmVsID49IDQuNi4wCiBCdWls ZFJlcXVpcmVzOiAgbWVzb24KIEJ1aWxkUmVxdWlyZXM6ICBuY3Vyc2VzCiBCdWlsZFJlcXVpcmVz OiAgZ2NjCkBAIC0yOSwxNyArMjksNiBAQCBCdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKHN5c3Rl bWQpCiBCdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKHhrYmNvbW1vbikgPj0gMC41LjAKIEJ1aWxk UmVxdWlyZXM6ICBwa2djb25maWcoemxpYikKIAotUGF0Y2gxOiBsb2NhbGVjdGxfc3VwcG9ydC5w YXRjaAotCi0jIEZpeCBiYWNrZ3JvdW5kIHN0YXJ0dXA6Ci1QYXRjaDI6IDAwMDEtc2VhdC1GaXgt c2VhdC1zdGFydHVwLWluLWJhY2tncm91bmQucGF0Y2gKLQotIyBUZW1wb3JhcnkgZG93bnN0cmVh bSBwYXRjaCB1bnRpbCBrbXNjb24gbmF0aXZlbHkgc3VwcG9ydHMgL3Vzci9saWIvaXNzdWUuZAot IyBUaGlzIGlzIG5lZWRlZCBieSBGZWRvcmEgU2VydmVyIGFuZCBGZWRvcmEgRUxOIHRvIGRpc3Bs YXkgdGhlIENvY2twaXQKLSMgY29uc29sZSBVUkwgYXQgdGhlIGxvZ2luIHByb21wdC4KLSMgU2Vl IGh0dHBzOi8vZ2l0aHViLmNvbS9rbXNjb24va21zY29uL2lzc3Vlcy80MDcgZm9yIG1vcmUgZGV0 YWlscwotUGF0Y2gxMDogMDAwMS1Vc2UtYWdldHR5LW9uLUZlZG9yYS5wYXRjaAotCiAlZGVzY3Jp cHRpb24KIEttc2NvbiBpcyBhIHNpbXBsZSB0ZXJtaW5hbCBlbXVsYXRvciBiYXNlZCBvbiBsaW51 eCBrZXJuZWwgbW9kZSBzZXR0aW5nIChLTVMpLgogSXQgaXMgYW4gYXR0ZW1wdCB0byByZXBsYWNl IHRoZSBpbi1rZXJuZWwgVlQgaW1wbGVtZW50YXRpb24gd2l0aCBhIHVzZXJzcGFjZQoKZGlmZiAt LWdpdCBhL2xvY2FsZWN0bF9zdXBwb3J0LnBhdGNoIGIvbG9jYWxlY3RsX3N1cHBvcnQucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmZDUxN2QuLjAwMDAwMDAKLS0tIGEvbG9j YWxlY3RsX3N1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODA3ICswLDAgQEAKLUZy b20gNTE5YTU3Yjg1NDY5NzdkMDM3OGFjNDkxMDY1Nzk3ZDMwNDBmOTE0YSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4K LURhdGU6IEZyaSwgNSBKdW4gMjAyNiAxMjowODo1NiArMDIwMAotU3ViamVjdDogW1BBVENIXSBT cXVhc2hlZCBjb21taXQgb2YgdGhlIGZvbGxvd2luZzoKLQotY29tbWl0IDIxYTdmNDEyNjZhODgx MTY5NjA5NDUyZDNkM2Q3NjIzYzEwNDA0YWUKLUF1dGhvcjogSm9jZWx5biBGYWxlbXBlIDxqZmFs ZW1wZUByZWRoYXQuY29tPgotRGF0ZTogICBGcmkgSnVuIDUgMTE6MTE6NDIgMjAyNiArMDIwMAot Ci0gICAgZGJ1czogTGlzdGVuIHRvIGxvY2FsZTEgcHJvcGVydHkgY2hhbmdlcwotCi0gICAgQW5k IHVwZGF0ZSB0aGUga2V5Ym9hcmQgbGF5b3V0IGFjY29yZGluZ2x5LgotCi0gICAgRG9uJ3QgbGlz dGVuIHRvIGxvY2FsZTEgcHJvcGVydHkgY2hhbmdlcyBpZiB0aGUga2V5Ym9hcmQgbGF5b3V0IHdh cwotICAgIHNldCBpbiB0aGUgY29uZmlnIGZpbGUgb3IgaW4gY29tbWFuZCBsaW5lIGFyZ3VtZW50 LgotCi0gICAgVGhpcyBhbGxvd3MgdG8gdXNlIGBsb2NhbGVjdGwgc2V0LWtleW1hcGAgdG8gY2hh bmdlIHRoZSBrZXlib2FyZAotICAgIGxheW91dCBhdCBydW50aW1lLgotICAgIE9uZSBkaWZmZXJl bmNlIGZyb20gImxvYWRrZXlzIiBpcyB0aGF0IHRoaXMgaXMgYSBzeXN0ZW0td2lkZSBzZXR0aW5n LAotICAgIGFuZCB0aGF0IGl0IHdpbGwgYWZmZWN0IGFsbCBrbXNjb24gaW5zdGFuY2Ugb24gYWxs IHR0eS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVk aGF0LmNvbT4KLQotY29tbWl0IDk5YjVlN2U4NDAwMzVmOWY2YTQzN2NiNGQxYzUwNmJlMDg1Y2Jk OTIKLUF1dGhvcjogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgotRGF0ZTog ICBGcmkgSnVuIDUgMTA6NDg6MjEgMjAyNiArMDIwMAotCi0gICAgY29uZjogVXNlIE5VTEwgZm9y IGRlZmF1bHQgeGtiIGNvbmZpZyB2YXJpYWJsZQotCi0gICAgVGhpcyBiZXR0ZXIgZml0IGxpYnhr YmNvbW1vbiBBUEkKLSAgICBSZW1vdmUgdGhlIHdvcmthcm91bmQgaW4gaW5wdXQsIGFzIGl0J3Mg bm8gbG9uZ2VyIG5lY2Vzc2FyeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvY2VseW4gRmFsZW1w ZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KLQotY29tbWl0IDMwMTAwMDhjNWQ4MTBhNzk0YjQ3ZTM4 YmVmYmQ3ODBmNDA2YzQ5MDQKLUF1dGhvcjogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRo YXQuY29tPgotRGF0ZTogICBGcmkgSnVuIDUgMTA6MjI6MDEgMjAyNiArMDIwMAotCi0gICAgaW5w dXQ6IEFkZCBpbnB1dF91cGRhdGVfa2V5bWFwKCkgdG8gY2hhbmdlIHRoZSBrZXltYXAgYXQgcnVu dGltZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRo YXQuY29tPgotCi1jb21taXQgZDcxNmQ3MmNhZTYzMzFlNjgxYTBmMGEzN2RmYTRhZDJjYzQ5MzY2 ZAotQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci1EYXRlOiAg IEZyaSBKdW4gNSAxMDoxNjowOSAyMDI2ICswMjAwCi0KLSAgICBpbnB1dDogc3BsaXQga2V5Ym9h cmQgbGF5b3V0IGFuZCBjb21wb3NlIGluaXRpYWxpemF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5 OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci0KLWNvbW1pdCAwZGZmYmQ3 YTI3ZGI3ZjIzODA2Y2ZhYjBlY2Q1MzY5ZTVmN2IxNWNhCi1BdXRob3I6IEpvY2VseW4gRmFsZW1w ZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KLURhdGU6ICAgVGh1IEp1biA0IDAwOjM4OjIwIDIwMjYg KzAyMDAKLQotICAgIHNlc3Npb246IFNpbXBsaWZ5IHNlc3Npb24gbWFuYWdlbWVudAotCi0gICAg RGlyZWN0bHkgc3dpdGNoIGZyb20gb25lIHNlc3Npb24gdG8gYW5vdGhlci4KLQotICAgIFNpZ25l ZC1vZmYtYnk6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KLQotY29tbWl0 IGZhNDJkNmQwYWRmODA2YTA1MzQ5ZWZlZGNlYWE4MDFkZjc3YWNhNmQKLUF1dGhvcjogSm9jZWx5 biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgotRGF0ZTogICBXZWQgSnVuIDMgMTc6Mzc6 NDcgMjAyNiArMDIwMAotCi0gICAgdGVybWluYWw6IHBhc3MgZGlyZWN0bHkgdGhlIHNlYXQgaW5w dXQsIGNvbmYsIG5hbWUgYW5kIGVsb29wCi0KLSAgICBUaGlzIGF2b2lkIHRvIHVzZSBrbXNjb25f c2VhdF9nZXRfeHh4KCkgZm9yIGVhY2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2NlbHluIEZh bGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci0KLWNvbW1pdCAyMTAxMWIxNTYxYzkxOTlmZGFl MmExNTY2ZDI3ZTQzYjY3YmNjMGI2Ci1BdXRob3I6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVA cmVkaGF0LmNvbT4KLURhdGU6ICAgV2VkIEp1biAzIDE2OjI0OjI0IDIwMjYgKzAyMDAKLQotICAg IHNlc3Npb246IFJlbW92ZSBzZXNzaW9uIGNhbGxiYWNrCi0KLSAgICBBcyB0ZXJtaW5hbCBzZXNz aW9ucyBhcmUgdGhlIG9ubHkgc2Vzc2lvbiBhdmFpbGFibGUsIHJlbW92ZSB0aGUKLSAgICBjYWxs YmFja3MsIGFuZCBjYWxsIGRpcmVjdGx5IHRoZSBjb3JyZXNwb25kaW5nIHRlcm1pbmFsIGZ1bmN0 aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVk aGF0LmNvbT4KLQotY29tbWl0IDEyYzEwNzJkMjU0ZTZiMDQ4MTk4NTA2MzBkZWY5MDI4ZTBjZjhk MTkKLUF1dGhvcjogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgotRGF0ZTog ICBXZWQgSnVuIDMgMTI6MjY6MTMgMjAyNiArMDIwMAotCi0gICAgZHVtbXlfc2Vzc2lvbjogUmVt b3ZlIGR1bW15IHNlc3Npb25zCi0KLSAgICBLbXNjb24gd2FudGVkIHRvIHByb3ZpZGUgZGlmZmVy ZW50IHR5cGUgb2Ygc2Vzc2lvbiwgYnV0IG9ubHkgdGhlCi0gICAgdGVybWluYWwgc2Vzc2lvbiBp cyB1c2VkLgotICAgIER1bW15IHNlc3Npb24gaXMganVzdCBhIGJsYWNrIHNjcmVlbiwgc28gaGFz IG5vIHJlYWwgdXNhZ2UuCi0KLSAgICBMZXQncyBmb2N1cyBvbiB0ZXJtaW5hbCBzZXNzaW9ucywg YW5kIHJlbW92ZSB0aGUgZHVtbXkgc2Vzc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvY2Vs eW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KLQotY29tbWl0IGE2ZTc4MTUzYTU2OTA2 NTlkOTllNTg3ZmU3NzBlY2E0YjU2ZDA5YWQKLUF1dGhvcjogSm9jZWx5biBGYWxlbXBlIDxqZmFs ZW1wZUByZWRoYXQuY29tPgotRGF0ZTogICBNb24gSnVuIDEgMjM6NDE6MzIgMjAyNiArMDIwMAot Ci0gICAgUmVtb3ZlIHN0YXJ0dXAgc2NyaXB0LCBhcyBpdCBpcyBubyBtb3JlIG5lY2Vzc2FyeQot Ci0gICAga21zY29uIG5vdyByZXRyaWV2ZSB4a2Iga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkaXJl Y3RseSBmb3JtIGRidXMsCi0gICAgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgdGhlIHN0YXJ0dXAg c2NyaXB0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUBy ZWRoYXQuY29tPgotCi1jb21taXQgMDZiYjc0MTMyOTJkN2M1NTZmZmM4MTdiYzMwNzVjM2MzYzk2 ZmIwYwotQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci1EYXRl OiAgIFRodSBNYXkgMjEgMTg6MDk6NTEgMjAyNiArMDIwMAotCi0gICAgVXNlIGxpYmRidXMgZGly ZWN0bHkgdG8gZ2V0IGxvY2FsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBl IDxqZmFsZW1wZUByZWRoYXQuY29tPgotCi1jb21taXQgODQ1MDE2ODRkYjdkZGE2MDYyMDljNGM3 YWUwNGY3ZTY2ZDk2NDgwOQotQXV0aG9yOiBGYWJpYW4gVm9ndCA8ZnZvZ3RAc3VzZS5kZT4KLURh dGU6ICAgVHVlIEp1biAyIDEyOjMxOjA1IDIwMjYgKzAyMDAKLQotICAgIGZyZWV0eXBlOiBFbmFi bGUgbGlnaHQgaGludGluZwotCi0gICAgTm90IGhpbnRpbmcgYXQgYWxsIHJlc3VsdHMgaW4gYmx1 cnJ5IGVkZ2VzLCBlc3BlY2lhbGx5IHZpc2libGUgd2l0aCBzdHJhaWdodAotICAgIGxpbmVzIGlu IGNvbW1vbiBjaGFyYWN0ZXJzIHN1Y2ggYXMgIi1bXSIuCi0KLSAgICBMaWdodCBoaW50aW5nIGlu IEZyZWVUeXBlIGhhcyB0aGUgbmljZSBwcm9wZXJ0eSB0aGF0IGl0IG9ubHkgdHJpZXMgdG8KLSAg ICBhbGlnbiBlZGdlcyB2ZXJ0aWNhbGx5LCBzbyB0aGUgd2lkdGggb2YgZ2x5cGhzIGRvZXMgbm90 IGNoYW5nZSwgcHJlc2VydmluZwotICAgIG1vbm9zcGFjZW5lc3MuCi0KLWNvbW1pdCBkNzg5ZDFj MzUxN2Q5OTdmMTI3MWEzOGI0NTk0YzI5ODk4ZWFmMTk5Ci1BdXRob3I6IEZhYmlhbiBWb2d0IDxm dm9ndEBzdXNlLmRlPgotRGF0ZTogICBNb24gSnVuIDEgMTc6MDM6NDcgMjAyNiArMDIwMAotCi0g ICAgRGVmaW5lIGRlZmF1bHQgaXNzdWUgc2VhcmNoIHBhdGggaW4gYSBzaW5nbGUgcGxhY2UKLQot ICAgIEl0IHdhcyBoYXJkY29kZWQgaW4gZm91ciBkaWZmZXJlbnQgcGxhY2VzLCBvZiB3aGljaCBv bmx5IG9uZSBoYXMgYW4gYWN0dWFsCi0gICAgZWZmZWN0LiBDb25zb2xpZGF0ZSBpdC4KLQotY29t bWl0IDQ0YzBkZjEyZmYyMDJlYjg0Mzk0ZWEwYzhlMDU5ODk0NTYzZmU1MDEKLUF1dGhvcjogQWRh bSBEdXNrZXR0IDxhZGFtLmR1c2tldHRAYW1hcnVsYXNvbHV0aW9ucy5jb20+Ci1EYXRlOiAgIFRo dSBNYXkgMjEgMTY6MjQ6MjMgMjAyNiArMDIwMAotCi0gICAgZml4IHpsaWIgY3Jvc3MtY29tcGls aW5nIGVycm9ycwotCi0gICAgemxpYiBjb21wcmVzc2lvbiB3YXMgaW50cm9kdWNlZCBpbiB2ZXJz aW9uIDkuMy4zLiBIb3dldmVyLCB3aGVuCi0gICAgY3Jvc3MtY29tcGlsaW5nIGttc2NvbiBmb3Ig YW4gYXJjaGl0ZWN0dXJlIG90aGVyIHRoYW4geDg2XzY0LCB0aGUKLSAgICBnZW51bmlmb250IGV4 ZWN1dGFibGUgdHJpZXMgdG8gdXNlIHRoZSBidWlsZC1zeXN0ZW1zIHpsaWIgaW5zdGVhZAotICAg IG9mIHRoZSBob3N0cyB6bGliLgotCi0gICAgVGhpcyBsZWFkcyB0byB0aGUgZm9sbG93aW5nIGVy cm9yIGR1cmluZyBjb21waWxpbmc6Ci0gICAgbGliei5zbzogZXJyb3IgYWRkaW5nIHN5bWJvbHM6 IGZpbGUgaW4gd3JvbmcgZm9ybWF0Ci0KLSAgICBGaXggdGhpcyBieSBhZGRpbmcgYSBuZXcgbmF0 aXZlIHpsaWIgZGVwZW5kZW5jeSBzcGVjaWZpY2FsbHkgZm9yIHRoZQotICAgIGdlbnVuaWZvbnQg ZXhlY3V0YWJsZS4KLS0tLQotIFJFQURNRS5tZCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg LQotIGRvY3MvbWFuL2ttc2Nvbi4xLnhtbC5pbiAgICAgICAgfCAgMjkgKy0KLSBkb2NzL21hbi9r bXNjb24uY29uZi41LnhtbC5pbiAgIHwgIDE0IC0KLSBtZXNvbi5idWlsZCAgICAgICAgICAgICAg ICAgICAgIHwgIDEwICstCi0gbWVzb24ub3B0aW9ucyAgICAgICAgICAgICAgICAgICB8ICAgOCAr LQotIHNjcmlwdHMvZXRjL2ttc2Nvbi5jb25mLmV4YW1wbGUgfCAgIDEgLQotIHNjcmlwdHMva21z Y29uLmluICAgICAgICAgICAgICAgfCAgNjMgLS0tLQotIHNyYy9kYnVzLmMgICAgICAgICAgICAg ICAgICAgICAgfCAzNjggKysrKysrKysrKysrKysrKysrKwotIHNyYy97a21zY29uX2R1bW15Lmgg PT4gZGJ1cy5ofSAgfCAgNTMgKy0tCi0gc3JjL2ZvbnQvZm9udF9mcmVldHlwZS5jICAgICAgICB8 ICAgNCArLQotIHNyYy9mb250L21lc29uLmJ1aWxkICAgICAgICAgICAgfCAgIDQgKy0KLSBzcmMv aW5wdXQvaW5wdXQuYyAgICAgICAgICAgICAgIHwgIDYwICsrKy0KLSBzcmMvaW5wdXQvaW5wdXQu aCAgICAgICAgICAgICAgIHwgICA3ICstCi0gc3JjL2lucHV0L2lucHV0X2ludGVybmFsLmggICAg ICB8ICAxMCArLQotIHNyYy9pbnB1dC9pbnB1dF91eGtiLmMgICAgICAgICAgfCAgMzMgKy0KLSBz cmMva21zY29uX2NvbmYuYyAgICAgICAgICAgICAgIHwgIDI2ICstCi0gc3JjL2ttc2Nvbl9jb25m LmggICAgICAgICAgICAgICB8ICAgNCAtCi0gc3JjL2ttc2Nvbl9kdW1teS5jICAgICAgICAgICAg ICB8IDE1NCAtLS0tLS0tLQotIHNyYy9rbXNjb25faXNzdWUuYyAgICAgICAgICAgICAgfCAgMTAg LQotIHNyYy9rbXNjb25faXNzdWUuaCAgICAgICAgICAgICAgfCAgIDkgKwotIHNyYy9rbXNjb25f bWFpbi5jICAgICAgICAgICAgICAgfCAgMzMgKysKLSBzcmMva21zY29uX3NlYXQuYyAgICAgICAg ICAgICAgIHwgNjAyICsrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2ttc2Nv bl9zZWF0LmggICAgICAgICAgICAgICB8ICA0MSArLS0KLSBzcmMva21zY29uX3Rlcm1pbmFsLmMg ICAgICAgICAgIHwgIDk4ICsrLS0tLQotIHNyYy9rbXNjb25fdGVybWluYWwuaCAgICAgICAgICAg fCAgMzQgKy0KLSBzcmMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgIHwgIDI1ICstCi0gc3Jj L3NobC9kbGlzdC5oICAgICAgICAgICAgICAgICB8ICAxMCArCi0gdGVzdHMvdGVzdF9pbnB1dC5j ICAgICAgICAgICAgICB8ICAgNyArLQotIDI4IGZpbGVzIGNoYW5nZWQsIDc1MSBpbnNlcnRpb25z KCspLCA5NjggZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNzU1IHNjcmlwdHMva21zY29u LmluCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9kYnVzLmMKLSByZW5hbWUgc3JjL3trbXNjb25f ZHVtbXkuaCA9PiBkYnVzLmh9ICg1MCUpCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9rbXNjb25f ZHVtbXkuYwotCi1kaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCi1pbmRleCA4Njc1 NDEzLi4zYmY0OTEyIDEwMDY0NAotLS0tIGEvUkVBRE1FLm1kCi0rKysgYi9SRUFETUUubWQKLUBA IC04Miw4ICs4Miw2IEBAIGV4cGxpY2l0bHkgZW5hYmxlIGl0IHZpYSBjb21tYW5kIGxpbmU6Ci0g fGBmb250X2ZyZWV0eXBlYHwgYGF1dG9gIHwgRnJlZXR5cGUyIGJhc2VkIHNjYWxhYmxlIGZvbnQg cmVuZGVyZXIsIGFsc28gaGFuZGxlIGJpdG1hcCBmb250cyB8Ci0gfGBmb250X3BhbmdvYHwgYGF1 dG9gIHwgUGFuZ28gYmFzZWQgc2NhbGFibGUgZm9udCByZW5kZXJlciB8Ci0gfGByZW5kZXJlcl9n bHRleGB8IGBhdXRvYCB8IE9wZW5HTEVTdjIgYWNjZWxlcmF0ZWQgcmVuZGVyZXIgfAotLXxgc2Vz c2lvbl9kdW1teWB8IGBhdXRvYCB8IER1bW15IGZhbGxiYWNrIHNlc3Npb24gfAotLXxgc2Vzc2lv bl90ZXJtaW5hbGB8IGBhdXRvYCB8IFRlcm1pbmFsLWVtdWxhdG9yIHNlc3Npb25zIHwKLSB8YGRv Y3NgfGBhdXRvYHwgQnVpbGQgbWFucGFnZXMgYW5kIGRvY3VtZW50YXRpb24gfAotIAotIAotZGlm ZiAtLWdpdCBhL2RvY3MvbWFuL2ttc2Nvbi4xLnhtbC5pbiBiL2RvY3MvbWFuL2ttc2Nvbi4xLnht bC5pbgotaW5kZXggMDUzODE4Ni4uMjVjZjI5YSAxMDA2NDQKLS0tLSBhL2RvY3MvbWFuL2ttc2Nv bi4xLnhtbC5pbgotKysrIGIvZG9jcy9tYW4va21zY29uLjEueG1sLmluCi1AQCAtMTg3LDE0ICsx ODcsNiBAQAotICAgICAgICAgICAgICAgICBzZXNzaW9ucyB2aWEga2V5Ym9hcmQgaW5wdXQuIChk ZWZhdWx0OiBvZmYpPC9wYXJhPgotICAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgICA8L3Zhcmxp c3RlbnRyeT4KLS0KLS0gICAgICA8dmFybGlzdGVudHJ5PgotLSAgICAgICAgPHRlcm0+PG9wdGlv bj4tLXRlcm1pbmFsLXNlc3Npb248L29wdGlvbj48L3Rlcm0+Ci0tICAgICAgICA8bGlzdGl0ZW0+ Ci0tICAgICAgICAgIDxwYXJhPlN0YXJ0IGEgdGVybWluYWwgc2Vzc2lvbiBhZnRlciBzZXR1cCBp cyBkb25lLgotLSAgICAgICAgICAgICAgICAoZGVmYXVsdDogb24pPC9wYXJhPgotLSAgICAgICAg PC9saXN0aXRlbT4KLS0gICAgICA8L3Zhcmxpc3RlbnRyeT4KLSAgICAgPC92YXJpYWJsZWxpc3Q+ Ci0gCi0gICAgIDxwYXJhPlRlcm1pbmFsIE9wdGlvbnM6PC9wYXJhPgotQEAgLTQ2MywxNCArNDU1 LDYgQEAKLSAgICAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgICAgPC92YXJsaXN0ZW50cnk+Ci0gCi0t ICAgICAgPHZhcmxpc3RlbnRyeT4KLS0gICAgICAgIDx0ZXJtPjxvcHRpb24+LS1ncmFiLXNlc3Np b24tZHVtbXkge2dyYWJ9PC9vcHRpb24+PC90ZXJtPgotLSAgICAgICAgPGxpc3RpdGVtPgotLSAg ICAgICAgICA8cGFyYT5Td2l0Y2ggdG8gYSBkdW1teSBzZXNzaW9uIChibGFuayBzY3JlZW4pLgot LSAgICAgICAgICAgICAgICAoZGVmYXVsdDogJmx0O0N0cmwmZ3Q7Jmx0O0xvZ28mZ3Q7RXNjYXBl KTwvcGFyYT4KLS0gICAgICAgIDwvbGlzdGl0ZW0+Ci0tICAgICAgPC92YXJsaXN0ZW50cnk+Ci0t Ci0gICAgICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgICAgIDx0ZXJtPjxvcHRpb24+LS1ncmFiLXNl c3Npb24tY2xvc2Uge2dyYWJ9PC9vcHRpb24+PC90ZXJtPgotICAgICAgICAgPGxpc3RpdGVtPgot QEAgLTg4NiwxNiArODcwLDExIEBACi0gICA8cmVmc2VjdDE+Ci0gICAgIDx0aXRsZT5TZXNzaW9u czwvdGl0bGU+Ci0gICAgIDxwYXJhPklmIEtNU0NPTiBpcyBhY3RpdmUgb24gYSBzZWF0LCB0aGUg aW50ZXJuYWwgc2Vzc2lvbi1tYW5hZ2VyIGlzIHdva2VuCi0tICAgICAgICAgIHVwLiBBdCBtb3N0 IHRpbWVzLCBvbmx5IHRoZSB0ZXJtaW5hbC1zZXNzaW9uIGlzIGFjdGl2ZSwgYnV0IEtNU0NPTiBj YW4KLS0gICAgICAgICAgYWxzbyBzdXBwb3J0IGFueSBvdGhlciBzZXNzaW9uIHR5cGUuIFlvdSBj YW4gc3dpdGNoIGJldHdlZW4gc2Vzc2lvbnMKLS0gICAgICAgICAgd2l0aCBrZXlib2FyZC1zaG9y dGN1dHMgYW5kIHlvdSBjYW4gY3JlYXRlL2Rlc3Ryb3kgc2Vzc2lvbnMgZHVyaW5nCi0tICAgICAg ICAgIHJ1bnRpbWUuPC9wYXJhPgotLQotLSAgICA8cGFyYT5EdW1teSBzZXNzaW9ucyBzaW1wbHkg c2hvdyBhIGJsYWNrIHNjcmVlbiBhbmQgYXJlIHVzZWQgaWYgbm8gb3RoZXIKLS0gICAgICAgICAg c2Vzc2lvbiBpcyBhdmFpbGFibGUuIE90aGVyd2lzZSwgZHVtbXkgc2Vzc2lvbnMgYXJlIGhpZGRl biBmcm9tIHRoZQotLSAgICAgICAgICB1c2VyIHNvIHRoZXkgY2Fubm90IHN3aXRjaCB0byBpdC48 L3BhcmE+Ci0rICAgICAgICAgIHVwLiBBdCBtb3N0IHRpbWVzLCBvbmx5IHRoZSB0ZXJtaW5hbC1z ZXNzaW9uIGlzIGFjdGl2ZS4gWW91IGNhbiBzd2l0Y2gKLSsgICAgICAgICAgYmV0d2VlbiBzZXNz aW9ucyB3aXRoIGtleWJvYXJkLXNob3J0Y3V0cyBhbmQgeW91IGNhbiBjcmVhdGUvZGVzdHJveQot KyAgICAgICAgICB0ZXJtaW5hbCBzZXNzaW9ucyBkdXJpbmcgcnVudGltZS48L3BhcmE+Ci0gCi0t ICAgIDxwYXJhPlRlcm1pbmFsIHNlc3Npb25zIHByb3ZpZGUgYSB0ZXJtaW5hbCBlbXVsYXRvci4g VGhleSBhcmUgdGhlIG1haW4KLSsgICAgPHBhcmE+VGVybWluYWwgc2Vzc2lvbnMgcHJvdmlkZSBh IHRlcm1pbmFsIGVtdWxhdG9yLiBUaGV5IGFyZSB0aGUgb25seQotICAgICAgICAgICBzZXNzaW9u IHR5cGUgYW5kIHByb3ZpZGUgYWxsIHRoZSB0ZXJtaW5hbC1lbXVsYXRpb24KLSAgICAgICAgICAg ZnVuY3Rpb25hbGl0eS48L3BhcmE+Ci0gICA8L3JlZnNlY3QxPgotZGlmZiAtLWdpdCBhL2RvY3Mv bWFuL2ttc2Nvbi5jb25mLjUueG1sLmluIGIvZG9jcy9tYW4va21zY29uLmNvbmYuNS54bWwuaW4K LWluZGV4IGRjYTA1NmQuLjhhZjQ1ODAgMTAwNjQ0Ci0tLS0gYS9kb2NzL21hbi9rbXNjb24uY29u Zi41LnhtbC5pbgotKysrIGIvZG9jcy9tYW4va21zY29uLmNvbmYuNS54bWwuaW4KLUBAIC0xNjEs MTMgKzE2MSw2IEBAIGZvbnQtbmFtZT1VYnVudHUgTW9ubwotICAgICAgICAgPC9saXN0aXRlbT4K LSAgICAgICA8L3Zhcmxpc3RlbnRyeT4KLSAKLS0gICAgICA8dmFybGlzdGVudHJ5PgotLSAgICAg ICAgPHRlcm0+PG9wdGlvbj50ZXJtaW5hbC1zZXNzaW9uPC9vcHRpb24+PC90ZXJtPgotLSAgICAg ICAgPGxpc3RpdGVtPgotLSAgICAgICAgICA8cGFyYT5FbmFibGUgdGVybWluYWwgc2Vzc2lvbi4g KGRlZmF1bHQ6IG9uKTwvcGFyYT4KLS0gICAgICAgIDwvbGlzdGl0ZW0+Ci0tICAgICAgPC92YXJs aXN0ZW50cnk+Ci0tCi0gICAgICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgICAgIDx0ZXJtPjxvcHRp b24+bG9naW48L29wdGlvbj48L3Rlcm0+Ci0gICAgICAgICA8bGlzdGl0ZW0+Ci1AQCAtMzY4LDEz ICszNjEsNiBAQCBmb250LW5hbWU9VWJ1bnR1IE1vbm8KLSAgICAgICAgIDwvbGlzdGl0ZW0+Ci0g ICAgICAgPC92YXJsaXN0ZW50cnk+Ci0gCi0tICAgICAgPHZhcmxpc3RlbnRyeT4KLS0gICAgICAg IDx0ZXJtPjxvcHRpb24+Z3JhYi1zZXNzaW9uLWR1bW15PC9vcHRpb24+PC90ZXJtPgotLSAgICAg ICAgPGxpc3RpdGVtPgotLSAgICAgICAgICA8cGFyYT5Td2l0Y2ggdG8gZHVtbXkgc2Vzc2lvbi4g KGRlZmF1bHQ6ICZsdDtDdHJsJmd0OyZsdDtMb2dvJmd0O0VzY2FwZSk8L3BhcmE+Ci0tICAgICAg ICA8L2xpc3RpdGVtPgotLSAgICAgIDwvdmFybGlzdGVudHJ5PgotLQotICAgICAgIDx2YXJsaXN0 ZW50cnk+Ci0gICAgICAgICA8dGVybT48b3B0aW9uPmdyYWItc2Vzc2lvbi1jbG9zZTwvb3B0aW9u PjwvdGVybT4KLSAgICAgICAgIDxsaXN0aXRlbT4KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBi L21lc29uLmJ1aWxkCi1pbmRleCBkZTg5ZDcyLi4xYWE3MmYyIDEwMDY0NAotLS0tIGEvbWVzb24u YnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtNTMsNiArNTMsNyBAQCBsaWJ1ZGV2X2RlcHMg PSBkZXBlbmRlbmN5KCdsaWJ1ZGV2JywgdmVyc2lvbjogJz49MTcyJykKLSBkbF9kZXBzID0gZGVw ZW5kZW5jeSgnZGwnKQotIHRocmVhZHNfZGVwcyA9IGRlcGVuZGVuY3koJ3RocmVhZHMnKQotIHps aWJfZGVwcyA9IGRlcGVuZGVuY3koJ3psaWInKQotK3psaWJfZGVwc19uYXRpdmUgPSBkZXBlbmRl bmN5KCd6bGliJywgbmF0aXZlOiB0cnVlKQotIAotIHB5dGhvbiA9IGZpbmRfcHJvZ3JhbSgncHl0 aG9uMycpCi0gCi1AQCAtNzUsNiArNzYsNyBAQCBnbGVzdjJfZGVwcyA9IGRlcGVuZGVuY3koJ2ds ZXN2MicsIGRpc2FibGVyOiB0cnVlLCByZXF1aXJlZDogcmVxdWlyZV9nbGVzdjIpCi0gcGFuZ29f ZGVwcyA9IGRlcGVuZGVuY3koJ3BhbmdvZnQyJywgZGlzYWJsZXI6IHRydWUsIHJlcXVpcmVkOiBn ZXRfb3B0aW9uKCdmb250X3BhbmdvJykpCi0gZnJlZXR5cGVfZGVwcyA9IGRlcGVuZGVuY3koJ2Zy ZWV0eXBlMicsIGRpc2FibGVyOiB0cnVlLCByZXF1aXJlZDogZ2V0X29wdGlvbignZm9udF9mcmVl dHlwZScpKQotIGZvbnRjb25maWdfZGVwcyA9IGRlcGVuZGVuY3koJ2ZvbnRjb25maWcnLCBkaXNh YmxlcjogdHJ1ZSwgcmVxdWlyZWQ6IGdldF9vcHRpb24oJ2ZvbnRfZnJlZXR5cGUnKSkKLStkYnVz X2RlcHMgPSBkZXBlbmRlbmN5KCdkYnVzLTEnLCBkaXNhYmxlcjogdHJ1ZSwgcmVxdWlyZWQ6IGdl dF9vcHRpb24oJ2RidXMnKSkKLSB4c2x0cHJvYyA9IGZpbmRfcHJvZ3JhbSgneHNsdHByb2MnLCBu YXRpdmU6IHRydWUsIGRpc2FibGVyOiB0cnVlLCByZXF1aXJlZDogZ2V0X29wdGlvbignZG9jcycp KQotIGNoZWNrX2RlcHMgPSBkZXBlbmRlbmN5KCdjaGVjaycsIGRpc2FibGVyOiB0cnVlLCByZXF1 aXJlZDogZ2V0X29wdGlvbigndGVzdHMnKSkKLSB0aWMgPSBmaW5kX3Byb2dyYW0oJ3RpYycsIHJl cXVpcmVkOiBmYWxzZSkKLUBAIC04OSw3ICs5MSw2IEBAIHNlY3Rpb25zID0gewotICAgJ3ZpZGVv JzogJ1ZpZGVvIEJhY2tlbmRzJywKLSAgICdmb250JzogJ0ZvbnQgQmFja2VuZHMnLAotICAgJ3Jl bmRlcmVyJzogJ1JlbmRlcmVycycsCi0tICAnc2Vzc2lvbic6ICdTZXNzaW9uIFR5cGVzJywKLSB9 Ci0gY29uZmlnID0gY29uZmlndXJhdGlvbl9kYXRhKCkKLSAjIE5vdGU6IGtlZXAgdGhpcyBpbiBz eW5jIHdpdGggdGhlIGRlcGVuZGVuY2llcyBhYm92ZQotQEAgLTEwMiw4ICsxMDMsNyBAQCBmb3Jl YWNoIG5hbWUsIHJlcXMgOiB7Ci0gICAnZm9udF91bmlmb250JzogW10sCi0gICAnZm9udF9mcmVl dHlwZSc6IFtmcmVldHlwZV9kZXBzLCBmb250Y29uZmlnX2RlcHNdLAotICAgJ2ZvbnRfcGFuZ28n OiBbcGFuZ29fZGVwc10sCi0tICAnc2Vzc2lvbl9kdW1teSc6IFtdLAotLSAgJ3Nlc3Npb25fdGVy bWluYWwnOiBbXSwKLSsgICdkYnVzJzogW2RidXNfZGVwc10sCi0gfQotICAgZm91bmQgPSB0cnVl Ci0gICBmb3JlYWNoIHJlcSA6IHJlcXMKLUBAIC0xOTUsMTAgKzE5NSw2IEBAIGVsc2UKLSAgIGRp cnNfaW5mby5zZXQoJ1BBTV9DRkcnLCAnJykKLSBlbmRpZgotIGZvcmVhY2ggZmlsZW5hbWUsIGt3 YXJncyA6IHsKLS0gICdzY3JpcHRzL2ttc2Nvbi5pbic6IHsKLS0gICAgJ2luc3RhbGxfZGlyJzog YmluZGlyLAotLSAgICAnaW5zdGFsbF9tb2RlJzogJ3J3eHIteHIteCcsCi0tICB9LAotICAgJ3Nj cmlwdHMva21zY29uLWxhdW5jaC1ndWkuc2gnOiB7Ci0gICAgICdpbnN0YWxsX2Rpcic6IGJpbmRp ciwKLSAgICAgJ2luc3RhbGxfbW9kZSc6ICdyd3hyLXhyLXgnLAotZGlmZiAtLWdpdCBhL21lc29u Lm9wdGlvbnMgYi9tZXNvbi5vcHRpb25zCi1pbmRleCA1Y2FmYTYwLi5hZmE1YjMyIDEwMDY0NAot LS0tIGEvbWVzb24ub3B0aW9ucwotKysrIGIvbWVzb24ub3B0aW9ucwotQEAgLTI5LDggKzI5LDYg QEAgb3B0aW9uKCdmb250X2ZyZWV0eXBlJywgdHlwZTogJ2ZlYXR1cmUnLCB2YWx1ZTogJ2F1dG8n LAotIG9wdGlvbignZm9udF9wYW5nbycsIHR5cGU6ICdmZWF0dXJlJywgdmFsdWU6ICdhdXRvJywK LSAgIGRlc2NyaXB0aW9uOiAncGFuZ28gZm9udCBiYWNrZW5kJykKLSAKLS0jIGttc2NvbiBzZXNz aW9ucwotLW9wdGlvbignc2Vzc2lvbl9kdW1teScsIHR5cGU6ICdmZWF0dXJlJywgdmFsdWU6ICdh dXRvJywKLS0gIGRlc2NyaXB0aW9uOiAnZHVtbXkgc2Vzc2lvbicpCi0tb3B0aW9uKCdzZXNzaW9u X3Rlcm1pbmFsJywgdHlwZTogJ2ZlYXR1cmUnLCB2YWx1ZTogJ2F1dG8nLAotLSAgZGVzY3JpcHRp b246ICd0ZXJtaW5hbCBzZXNzaW9uJykKLSsjIGRidXMgaW50ZWdyYXRpb24KLStvcHRpb24oJ2Ri dXMnLCB0eXBlOiAnZmVhdHVyZScsIHZhbHVlOiAnYXV0bycsCi0rICBkZXNjcmlwdGlvbjogJ2Ri dXMgaW50ZWdyYXRpb24nKQotZGlmZiAtLWdpdCBhL3NjcmlwdHMvZXRjL2ttc2Nvbi5jb25mLmV4 YW1wbGUgYi9zY3JpcHRzL2V0Yy9rbXNjb24uY29uZi5leGFtcGxlCi1pbmRleCBjYTIyMzJlLi5i ZTQ1YTRhIDEwMDY0NAotLS0tIGEvc2NyaXB0cy9ldGMva21zY29uLmNvbmYuZXhhbXBsZQotKysr IGIvc2NyaXB0cy9ldGMva21zY29uLmNvbmYuZXhhbXBsZQotQEAgLTY2LDcgKzY2LDYgQEAKLSAj Z3JhYi16b29tLW91dD08Q3RybD5NaW51cwotICNncmFiLXNlc3Npb24tbmV4dD08Q3RybD48TG9n bz5SaWdodAotICNncmFiLXNlc3Npb24tcHJldj08Q3RybD48TG9nbz5MZWZ0Ci0tI2dyYWItc2Vz c2lvbi1kdW1teT08Q3RybD48TG9nbz5Fc2NhcGUKLSAjZ3JhYi1zZXNzaW9uLWNsb3NlPTxDdHJs PjxMb2dvPkJhY2tTcGFjZQotICNncmFiLXRlcm1pbmFsLW5ldz08Q3RybD48TG9nbz5SZXR1cm4K LSAjZ3JhYi1yb3RhdGUtY3c9PExvZ28+UGx1cwotZGlmZiAtLWdpdCBhL3NjcmlwdHMva21zY29u LmluIGIvc2NyaXB0cy9rbXNjb24uaW4KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQotaW5kZXgg NjU0NTM5OS4uMDAwMDAwMAotLS0tIGEvc2NyaXB0cy9rbXNjb24uaW4KLSsrKyAvZGV2L251bGwK LUBAIC0xLDYzICswLDAgQEAKLS0jIS9iaW4vc2gKLS0jCi0tIyBDb3B5cmlnaHQgKGMpIDIwMTgg QWV0ZiA8YWV0ZkB1bmxpbWl0ZWRjb2Rld29ya3MueHl6PgotLSMgQ29weXJpZ2h0IChjKSAyMDE4 IEZhYmlhbiBWb2d0IDxmdm9ndEBzdXNlLmNvbT4KLS0jCi0tIyBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5 Ci0tIyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotLSMgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLSMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LCBhbmQvb3Igc2VsbAotLSMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0tIyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotLSMKLS0jIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbAotLSMgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy ZS4KLS0jCi0tIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotLSMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0tIyBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF VkVOVCBTSEFMTCBUSEUKLS0jIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLS0jIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s Ci0tIyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF IE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQotLSMgU09GVFdBUkUuCi0tCi0tIyBjb25maWd1cmF0 aW9uIHBhdGgKLS1oZWxwZXJkaXI9QGxpYmV4ZWNkaXJACi0tCi0tIyBHZXQgYSBwcm9wZXJ0eSBm cm9tIG9yZy5mcmVlZGVza3RvcC5sb2NhbGUxCi0tcXVlcnlMb2NhbGVkYnVzKCkgewotLSAgICBk YnVzLXNlbmQgLS1zeXN0ZW0gLS1wcmludC1yZXBseT1saXRlcmFsIC0tZGVzdD1vcmcuZnJlZWRl c2t0b3AubG9jYWxlMSAvb3JnL2ZyZWVkZXNrdG9wL2xvY2FsZTEgb3JnLmZyZWVkZXNrdG9wLkRC dXMuUHJvcGVydGllcy5HZXQgInN0cmluZzpvcmcuZnJlZWRlc2t0b3AubG9jYWxlMSIgInN0cmlu ZzpYMTEkMSIgMj4vZGV2L251bGwgfCBhd2sgJ3twcmludCAkMn0nCi0tfQotLQotLXF1ZXJ5TG9j YWxlY3RsKCkgewotLSAgICBsb2NhbGVjdGwgc3RhdHVzIHwgYXdrICIvWDExICQxLyB7cHJpbnQg XCQzfSIKLS19Ci0tCi0tIyBRdWVyeSBhbmQgc2V0dXAgc3lzdGVtIGxvY2FsZSBzZXR0aW5ncyBi ZWZvcmUgc3RhcnQga21zY29uCi0tc2V0dXBMb2NhbGUoKSB7Ci0tICAgICMgRG9uJ3Qgb3ZlcnJp ZGUgZXhpc3RpbmcgdmFsdWVzLiBBbHNvIHRoZXJlIGlzIG5vIHBvaW50IGluIHNldHRpbmcgb25s eSBzb21lIG9mIHRoZW0KLS0gICAgIyBhcyB0aGVuIHRoZXkgd291bGQgbm90IG1hdGNoIGFueW1v cmUuCi0tICAgIGlmIHRlc3QgLW4gIiR7WEtCX0RFRkFVTFRfTU9ERUx9IiAtbyAtbiAiJHtYS0Jf REVGQVVMVF9MQVlPVVR9IiAtbyAtbiAiJHtYS0JfREVGQVVMVF9WQVJJQU5UfSIgLW8gLW4gIiR7 WEtCX0RFRkFVTFRfT1BUSU9OU30iOyB0aGVuCi0tICAgICAgICByZXR1cm4KLS0gICAgZmkKLS0K LS0gICAgaWYgY29tbWFuZCAtdiBkYnVzLXNlbmQgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhl bgotLSAgICAgICAgcXVlcnljbWQ9InF1ZXJ5TG9jYWxlZGJ1cyIKLS0gICAgZWxpZiBjb21tYW5k IC12IGxvY2FsZWN0bCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCi0tICAgICAgICBxdWVy eWNtZD0icXVlcnlMb2NhbGVjdGwiCi0tICAgIGVsc2UKLS0gICAgICAgIHJldHVybgotLSAgICBm aQotLQotLSAgICBYMTFNT0RFTD0iJCgke3F1ZXJ5Y21kfSBNb2RlbCkiCi0tICAgIFgxMUxBWU9V VD0iJCgke3F1ZXJ5Y21kfSBMYXlvdXQpIgotLSAgICBYMTFWQVJJQU5UPSIkKCR7cXVlcnljbWR9 IFZhcmlhbnQpIgotLSAgICBYMTFPUFRJT05TPSIkKCR7cXVlcnljbWR9IE9wdGlvbnMpIgotLSAg ICBbIC1uICIke1gxMU1PREVMfSIgXSAmJiBleHBvcnQgWEtCX0RFRkFVTFRfTU9ERUw9IiR7WDEx TU9ERUx9IgotLSAgICBbIC1uICIke1gxMUxBWU9VVH0iIF0gJiYgZXhwb3J0IFhLQl9ERUZBVUxU X0xBWU9VVD0iJHtYMTFMQVlPVVR9IgotLSAgICBbIC1uICIke1gxMVZBUklBTlR9IiBdICYmIGV4 cG9ydCBYS0JfREVGQVVMVF9WQVJJQU5UPSIke1gxMVZBUklBTlR9IgotLSAgICBbIC1uICIke1gx MU9QVElPTlN9IiBdICYmIGV4cG9ydCBYS0JfREVGQVVMVF9PUFRJT05TPSIke1gxMU9QVElPTlN9 IgotLX0KLS0KLS1zZXR1cExvY2FsZQotLWV4ZWMgJHtoZWxwZXJkaXJ9L2ttc2NvbiAiJEAiCi1k aWZmIC0tZ2l0IGEvc3JjL2RidXMuYyBiL3NyYy9kYnVzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci1pbmRleCAwMDAwMDAwLi44NGM0NjdkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvZGJ1cy5j Ci1AQCAtMCwwICsxLDM2OCBAQAotKy8qCi0rICogZGJ1cyAtIEQtQnVzIHN1cHBvcnQKLSsgKgot KyAqIENvcHlyaWdodCAoYykgMjAyNiBSZWQgSGF0LgotKyAqIEF1dGhvcjogSm9jZWx5biBGYWxl bXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgotKyAqCi0rICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0rICogYSBj b3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcwot KyAqICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZwotKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSsgKiBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSsgKiBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8KLSsgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rICoKLSsgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi ZSBpbmNsdWRlZAotKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlIFNvZnR3YXJlLgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSsgKiBPUiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0rICogTUVSQ0hB TlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULgotKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCi0rICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKLSsgKiBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQot KyAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJF LgotKyAqLwotKwotKyNpbmNsdWRlIDxkYnVzL2RidXMuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4K LSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpbmNsdWRl ICJkYnVzLmgiCi0rI2luY2x1ZGUgInNobC9lbG9vcC5oIgotKyNpbmNsdWRlICJzaGwvbG9nLmgi Ci0rCi0rI2RlZmluZSBMT0dfU1VCU1lTVEVNICJkYnVzIgotKwotK3N0cnVjdCBybWx2byB7Ci0r CWNvbnN0IGNoYXIgKm1vZGVsOwotKwljb25zdCBjaGFyICpsYXlvdXQ7Ci0rCWNvbnN0IGNoYXIg KnZhcmlhbnQ7Ci0rCWNvbnN0IGNoYXIgKm9wdGlvbnM7Ci0rfTsKLSsKLStzdHJ1Y3Qga21zY29u X2RidXMgewotKwlEQnVzQ29ubmVjdGlvbiAqY29ubjsKLSsJc3RydWN0IGV2X2Vsb29wICplbG9v cDsKLSsJc3RydWN0IGV2X2ZkICp3YXRjaF9mZDsKLSsJZGJ1c191cGRhdGVfeGtiX2xheW91dF9j YiBjYjsKLSsJdm9pZCAqZGF0YTsKLSt9OwotKwotK3N0YXRpYyB2b2lkIHNldF9lbnZfZnJvbV9s b2NhbGUxX3Byb3BlcnRpZXMoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIGNvbnN0IGNoYXIgKnByb3Bl cnR5X25hbWUsCi0rCQkJCQkgICAgY29uc3QgY2hhciAqZW52X25hbWUpCi0rewotKwlEQnVzRXJy b3IgZXJyb3I7Ci0rCURCdXNNZXNzYWdlICptc2c7Ci0rCURCdXNNZXNzYWdlICpyZXBseTsKLSsJ REJ1c01lc3NhZ2VJdGVyIGFyZ3MsIHZhcmlhbnRfaXRlcjsKLSsJY29uc3QgY2hhciAqaW50ZXJm YWNlX25hbWUgPSAib3JnLmZyZWVkZXNrdG9wLmxvY2FsZTEiOwotKwljaGFyICp2YWx1ZSA9IE5V TEw7Ci0rCi0rCWRidXNfZXJyb3JfaW5pdCgmZXJyb3IpOwotKwotKwltc2cgPSBkYnVzX21lc3Nh Z2VfbmV3X21ldGhvZF9jYWxsKCJvcmcuZnJlZWRlc2t0b3AubG9jYWxlMSIsICIvb3JnL2ZyZWVk ZXNrdG9wL2xvY2FsZTEiLAotKwkJCQkJICAgIm9yZy5mcmVlZGVza3RvcC5EQnVzLlByb3BlcnRp ZXMiLCAiR2V0Iik7Ci0rCWlmICghbXNnKQotKwkJcmV0dXJuOwotKwotKwlkYnVzX21lc3NhZ2Vf aXRlcl9pbml0X2FwcGVuZChtc2csICZhcmdzKTsKLSsJaWYgKCFkYnVzX21lc3NhZ2VfaXRlcl9h cHBlbmRfYmFzaWMoJmFyZ3MsIERCVVNfVFlQRV9TVFJJTkcsICZpbnRlcmZhY2VfbmFtZSkgfHwK LSsJICAgICFkYnVzX21lc3NhZ2VfaXRlcl9hcHBlbmRfYmFzaWMoJmFyZ3MsIERCVVNfVFlQRV9T VFJJTkcsICZwcm9wZXJ0eV9uYW1lKSkgewotKwkJZGJ1c19tZXNzYWdlX3VucmVmKG1zZyk7Ci0r CQlyZXR1cm47Ci0rCX0KLSsKLSsJcmVwbHkgPSBkYnVzX2Nvbm5lY3Rpb25fc2VuZF93aXRoX3Jl cGx5X2FuZF9ibG9jayhjb25uLCBtc2csIDIwMDAsICZlcnJvcik7Ci0rCWRidXNfbWVzc2FnZV91 bnJlZihtc2cpOwotKwotKwlpZiAoZGJ1c19lcnJvcl9oYXNfbmFtZSgmZXJyb3IsIERCVVNfRVJS T1JfVU5LTk9XTl9JTlRFUkZBQ0UpIHx8Ci0rCSAgICBkYnVzX2Vycm9yX2hhc19uYW1lKCZlcnJv ciwgREJVU19FUlJPUl9VTktOT1dOX1BST1BFUlRZKSkgewotKwkJLyogVGhpcyBpcyBub3JtYWwg aWYgdGhlIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzeXN0ZW0gKi8KLSsJCWRi dXNfZXJyb3JfZnJlZSgmZXJyb3IpOwotKwkJcmV0dXJuOwotKwl9IGVsc2UgaWYgKGRidXNfZXJy b3JfaXNfc2V0KCZlcnJvcikpIHsKLSsJCWxvZ193YXJuaW5nKCJkYnVzIGVycm9yOiAlcyAvICVz IiwgZXJyb3IubmFtZSwgZXJyb3IubWVzc2FnZSk7Ci0rCQlkYnVzX2Vycm9yX2ZyZWUoJmVycm9y KTsKLSsJCXJldHVybjsKLSsJfSBlbHNlIGlmICghcmVwbHkpIHsKLSsJCWxvZ193YXJuaW5nKCJu byByZXBseSBmcm9tIGRidXMiKTsKLSsJCXJldHVybjsKLSsJfQotKwotKwlpZiAoIWRidXNfbWVz c2FnZV9pdGVyX2luaXQocmVwbHksICZhcmdzKSkgewotKwkJbG9nX2RlYnVnKCJSZXBseSBtZXNz YWdlIGhhcyBubyBhcmd1bWVudHMuXG4iKTsKLSsJfSBlbHNlIGlmIChkYnVzX21lc3NhZ2VfaXRl cl9nZXRfYXJnX3R5cGUoJmFyZ3MpICE9IERCVVNfVFlQRV9WQVJJQU5UKSB7Ci0rCQlsb2dfZGVi dWcoIlJlcGx5IGFyZ3VtZW50IGlzIG5vdCBhIHZhcmlhbnQuXG4iKTsKLSsJfSBlbHNlIHsKLSsJ CWRidXNfbWVzc2FnZV9pdGVyX3JlY3Vyc2UoJmFyZ3MsICZ2YXJpYW50X2l0ZXIpOwotKwotKwkJ aWYgKGRidXNfbWVzc2FnZV9pdGVyX2dldF9hcmdfdHlwZSgmdmFyaWFudF9pdGVyKSA9PSBEQlVT X1RZUEVfU1RSSU5HKSB7Ci0rCQkJZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2Jhc2ljKCZ2YXJpYW50 X2l0ZXIsICZ2YWx1ZSk7Ci0rCQkJaWYgKHN0cmxlbih2YWx1ZSkgPiAwKSB7Ci0rCQkJCXNldGVu dihlbnZfbmFtZSwgdmFsdWUsIDApOwotKwkJCQlsb2dfZGVidWcoIlNldCAlcyB0byAlc1xuIiwg ZW52X25hbWUsIHZhbHVlKTsKLSsJCQl9Ci0rCQl9IGVsc2UgewotKwkJCWxvZ19kZWJ1ZygiVW5l eHBlY3RlZCBpbm5lciBkYXRhIHR5cGUgaW4gdmFyaWFudC5cbiIpOwotKwkJfQotKwl9Ci0rCi0r CWRidXNfbWVzc2FnZV91bnJlZihyZXBseSk7Ci0rCXJldHVybjsKLSt9Ci0rCi0rc3RhdGljIGJv b2wgaXNfeGtiX2Vudl9zZXQodm9pZCkKLSt7Ci0rCXJldHVybiBnZXRlbnYoIlhLQl9ERUZBVUxU X01PREVMIikgfHwgZ2V0ZW52KCJYS0JfREVGQVVMVF9MQVlPVVQiKSB8fAotKwkgICAgICAgZ2V0 ZW52KCJYS0JfREVGQVVMVF9WQVJJQU5UIikgfHwgZ2V0ZW52KCJYS0JfREVGQVVMVF9PUFRJT05T Iik7Ci0rfQotKwotKy8qIFRoaXMgaXMgY2FsbGVkIG9uY2UgYXQgc3RhcnR1cCB0byBzZXQgdGhl IFhLQiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbSB0aGUgbG9jYWxlMSBwcm9wZXJ0aWVzLgot KyAqLwotK3ZvaWQga21zY29uX2RidXNfc2V0X3hrYl9lbnZfZnJvbV9sb2NhbGUxKHN0cnVjdCBr bXNjb25fZGJ1cyAqZGJ1cykKLSt7Ci0rCURCdXNFcnJvciBlcnJvcjsKLSsKLSsJaWYgKGlzX3hr Yl9lbnZfc2V0KCkpCi0rCQlyZXR1cm47Ci0rCi0rCWRidXNfZXJyb3JfaW5pdCgmZXJyb3IpOwot KwotKwlzZXRfZW52X2Zyb21fbG9jYWxlMV9wcm9wZXJ0aWVzKGRidXMtPmNvbm4sICJYMTFNb2Rl bCIsICJYS0JfREVGQVVMVF9NT0RFTCIpOwotKwlzZXRfZW52X2Zyb21fbG9jYWxlMV9wcm9wZXJ0 aWVzKGRidXMtPmNvbm4sICJYMTFMYXlvdXQiLCAiWEtCX0RFRkFVTFRfTEFZT1VUIik7Ci0rCXNl dF9lbnZfZnJvbV9sb2NhbGUxX3Byb3BlcnRpZXMoZGJ1cy0+Y29ubiwgIlgxMVZhcmlhbnQiLCAi WEtCX0RFRkFVTFRfVkFSSUFOVCIpOwotKwlzZXRfZW52X2Zyb21fbG9jYWxlMV9wcm9wZXJ0aWVz KGRidXMtPmNvbm4sICJYMTFPcHRpb25zIiwgIlhLQl9ERUZBVUxUX09QVElPTlMiKTsKLSt9Ci0r Ci0rc3RydWN0IGttc2Nvbl9kYnVzICprbXNjb25fZGJ1c19uZXcoc3RydWN0IGV2X2Vsb29wICpl bG9vcCkKLSt7Ci0rCXN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1czsKLSsJREJ1c0Vycm9yIGVycm9y OwotKwotKwlkYnVzID0gbWFsbG9jKHNpemVvZigqZGJ1cykpOwotKwlpZiAoIWRidXMpCi0rCQly ZXR1cm4gTlVMTDsKLSsJbWVtc2V0KGRidXMsIDAsIHNpemVvZigqZGJ1cykpOwotKwotKwlkYnVz LT5lbG9vcCA9IGVsb29wOwotKwotKwlkYnVzX2Vycm9yX2luaXQoJmVycm9yKTsKLSsJZGJ1cy0+ Y29ubiA9IGRidXNfYnVzX2dldChEQlVTX0JVU19TWVNURU0sICZlcnJvcik7Ci0rCWlmIChkYnVz X2Vycm9yX2lzX3NldCgmZXJyb3IpKSB7Ci0rCQlsb2dfZGVidWcoIkNvbm5lY3Rpb24gRXJyb3I6 ICVzXG4iLCBlcnJvci5tZXNzYWdlKTsKLSsJCWRidXNfZXJyb3JfZnJlZSgmZXJyb3IpOwotKwkJ cmV0dXJuIE5VTEw7Ci0rCX0KLSsJcmV0dXJuIGRidXM7Ci0rfQotKwotK3ZvaWQga21zY29uX2Ri dXNfZnJlZShzdHJ1Y3Qga21zY29uX2RidXMgKmRidXMpCi0rewotKwlpZiAoIWRidXMpCi0rCQly ZXR1cm47Ci0rCWRidXNfY29ubmVjdGlvbl91bnJlZihkYnVzLT5jb25uKTsKLSsJZnJlZShkYnVz KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgc2V0X3JtbHZvX3Byb3BlcnR5KHN0cnVjdCBybWx2byAq cm1sdm8sIGNvbnN0IGNoYXIgKnByb3BlcnR5X25hbWUsCi0rCQkJICAgICAgIGNvbnN0IGNoYXIg KnByb3BlcnR5X3ZhbHVlKQotK3sKLSsJaWYgKCFzdHJjbXAocHJvcGVydHlfbmFtZSwgIlgxMU1v ZGVsIikpIHsKLSsJCXJtbHZvLT5tb2RlbCA9IHByb3BlcnR5X3ZhbHVlOwotKwl9IGVsc2UgaWYg KCFzdHJjbXAocHJvcGVydHlfbmFtZSwgIlgxMUxheW91dCIpKSB7Ci0rCQlybWx2by0+bGF5b3V0 ID0gcHJvcGVydHlfdmFsdWU7Ci0rCX0gZWxzZSBpZiAoIXN0cmNtcChwcm9wZXJ0eV9uYW1lLCAi WDExVmFyaWFudCIpKSB7Ci0rCQlybWx2by0+dmFyaWFudCA9IHByb3BlcnR5X3ZhbHVlOwotKwl9 IGVsc2UgaWYgKCFzdHJjbXAocHJvcGVydHlfbmFtZSwgIlgxMU9wdGlvbnMiKSkgewotKwkJcm1s dm8tPm9wdGlvbnMgPSBwcm9wZXJ0eV92YWx1ZTsKLSsJfQotK30KLSsKLSsvKiBQYXJzZSB0aGUg bG9jYWxlMSBwcm9wZXJ0aWVzIGNoYW5nZWQgbWVzc2FnZSBhbmQgdXBkYXRlIHRoZSBybWx2byBz dHJ1Y3QgKi8KLSt2b2lkIHBhcnNlX2xvY2FsZV9wcm9wZXJ0aWVzKERCdXNNZXNzYWdlICptc2cs IHN0cnVjdCBybWx2byAqcm1sdm8pCi0rewotKwlEQnVzTWVzc2FnZUl0ZXIgcm9vdF9pdGVyOwot KwlEQnVzTWVzc2FnZUl0ZXIgZGljdF9pdGVyOwotKwlEQnVzTWVzc2FnZUl0ZXIgZW50cnlfaXRl cjsKLSsJREJ1c01lc3NhZ2VJdGVyIHZhcmlhbnRfaXRlcjsKLSsJY2hhciAqcHJvcGVydHlfbmFt ZTsKLSsJY2hhciAqcHJvcGVydHlfdmFsdWU7Ci0rCi0rCWlmICghZGJ1c19tZXNzYWdlX2l0ZXJf aW5pdChtc2csICZyb290X2l0ZXIpKSB7Ci0rCQlsb2dfZGVidWcoIk1lc3NhZ2UgaGFzIG5vIGFy Z3VtZW50cy5cbiIpOwotKwkJcmV0dXJuOwotKwl9Ci0rCi0rCWRidXNfbWVzc2FnZV9pdGVyX25l eHQoJnJvb3RfaXRlcik7Ci0rCWlmIChkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYXJnX3R5cGUoJnJv b3RfaXRlcikgIT0gREJVU19UWVBFX0FSUkFZKSB7Ci0rCQlsb2dfZGVidWcoIk5vdCB0aGUgY29u dGFpbmVyIHR5cGUgd2UgZXhwZWN0XG4iKTsKLSsJCXJldHVybjsKLSsJfQotKwotKwlkYnVzX21l c3NhZ2VfaXRlcl9yZWN1cnNlKCZyb290X2l0ZXIsICZkaWN0X2l0ZXIpOwotKwl3aGlsZSAoZGJ1 c19tZXNzYWdlX2l0ZXJfZ2V0X2FyZ190eXBlKCZkaWN0X2l0ZXIpID09IERCVVNfVFlQRV9ESUNU X0VOVFJZKSB7Ci0rCi0rCQlkYnVzX21lc3NhZ2VfaXRlcl9yZWN1cnNlKCZkaWN0X2l0ZXIsICZl bnRyeV9pdGVyKTsKLSsKLSsJCWRidXNfbWVzc2FnZV9pdGVyX2dldF9iYXNpYygmZW50cnlfaXRl ciwgJnByb3BlcnR5X25hbWUpOwotKwotKwkJZGJ1c19tZXNzYWdlX2l0ZXJfbmV4dCgmZW50cnlf aXRlcik7Ci0rCi0rCQlpZiAoZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2FyZ190eXBlKCZlbnRyeV9p dGVyKSA9PSBEQlVTX1RZUEVfVkFSSUFOVCkgewotKwotKwkJCWRidXNfbWVzc2FnZV9pdGVyX3Jl Y3Vyc2UoJmVudHJ5X2l0ZXIsICZ2YXJpYW50X2l0ZXIpOwotKwotKwkJCWlmIChkYnVzX21lc3Nh Z2VfaXRlcl9nZXRfYXJnX3R5cGUoJnZhcmlhbnRfaXRlcikgPT0gREJVU19UWVBFX1NUUklORykg ewotKwkJCQlkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYmFzaWMoJnZhcmlhbnRfaXRlciwgJnByb3Bl cnR5X3ZhbHVlKTsKLSsJCQkJc2V0X3JtbHZvX3Byb3BlcnR5KHJtbHZvLCBwcm9wZXJ0eV9uYW1l LCBwcm9wZXJ0eV92YWx1ZSk7Ci0rCQkJCWxvZ19kZWJ1ZygicHJvcGVydHkgJXM6ICVzXG4iLCBw cm9wZXJ0eV9uYW1lLCBwcm9wZXJ0eV92YWx1ZSk7Ci0rCQkJfQotKwkJfQotKwkJZGJ1c19tZXNz YWdlX2l0ZXJfbmV4dCgmZGljdF9pdGVyKTsKLSsJfQotK30KLSsKLStzdGF0aWMgdm9pZCBoYW5k bGVfZGlzcGF0Y2hfc3RhdHVzKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzRGlzcGF0Y2hTdGF0 dXMgc3RhdHVzLCB2b2lkICpkYXRhKQotK3sKLSsJc3RydWN0IGttc2Nvbl9kYnVzICpkYnVzID0g ZGF0YTsKLSsJc3RydWN0IHJtbHZvIHJtbHZvID0ge05VTEwsIE5VTEwsIE5VTEwsIE5VTEx9Owot KwotKwlpZiAoc3RhdHVzID09IERCVVNfRElTUEFUQ0hfREFUQV9SRU1BSU5TKSB7Ci0rCQlEQnVz TWVzc2FnZSAqbXNnID0gZGJ1c19jb25uZWN0aW9uX3BvcF9tZXNzYWdlKGRidXMtPmNvbm4pOwot KwkJaWYgKG1zZykgewotKwkJCWxvZ19kZWJ1ZygiUmVjZWl2ZWQgbWVzc2FnZSAlc1xuIiwgZGJ1 c19tZXNzYWdlX2dldF9zaWduYXR1cmUobXNnKSk7Ci0rCQkJaWYgKGRidXNfbWVzc2FnZV9pc19z aWduYWwobXNnLCAib3JnLmZyZWVkZXNrdG9wLkRCdXMuUHJvcGVydGllcyIsCi0rCQkJCQkJICAg IlByb3BlcnRpZXNDaGFuZ2VkIikpIHsKLSsJCQkJcGFyc2VfbG9jYWxlX3Byb3BlcnRpZXMobXNn LCAmcm1sdm8pOwotKwkJCQlpZiAoZGJ1cy0+Y2IpCi0rCQkJCQlkYnVzLT5jYihybWx2by5tb2Rl bCwgcm1sdm8ubGF5b3V0LCBybWx2by52YXJpYW50LAotKwkJCQkJCSBybWx2by5vcHRpb25zLCBk YnVzLT5kYXRhKTsKLSsJCQl9Ci0rCQkJZGJ1c19tZXNzYWdlX3VucmVmKG1zZyk7Ci0rCQl9Ci0r CX0KLSt9Ci0rCi0rc3RhdGljIHZvaWQgbG9jYWxlMV9wcm9wZXJ0aWVzX2NoYW5nZWQoc3RydWN0 IGV2X2ZkICpmZCwgaW50IG1hc2ssIHZvaWQgKmRhdGEpCi0rewotKwlzdHJ1Y3QgREJ1c1dhdGNo ICp3YXRjaCA9IGRhdGE7Ci0rCXN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cyA9IGRidXNfd2F0Y2hf Z2V0X2RhdGEod2F0Y2gpOwotKwotKwl1bnNpZ25lZCBpbnQgZmxhZ3MgPSAwOwotKwotKwlsb2df ZGVidWcoImxvY2FsZTEgcHJvcGVydHkgY2hhbmdlZFxuIik7Ci0rCi0rCWlmIChtYXNrICYgRVZf UkVBREFCTEUpCi0rCQlmbGFncyB8PSBEQlVTX1dBVENIX1JFQURBQkxFOwotKwlpZiAobWFzayAm IEVWX1dSSVRFQUJMRSkKLSsJCWZsYWdzIHw9IERCVVNfV0FUQ0hfV1JJVEFCTEU7Ci0rCi0rCWRi dXNfd2F0Y2hfaGFuZGxlKHdhdGNoLCBmbGFncyk7Ci0rCi0rCXdoaWxlIChkYnVzX2Nvbm5lY3Rp b25fZ2V0X2Rpc3BhdGNoX3N0YXR1cyhkYnVzLT5jb25uKSA9PSBEQlVTX0RJU1BBVENIX0RBVEFf UkVNQUlOUykgewotKwkJZGJ1c19jb25uZWN0aW9uX2Rpc3BhdGNoKGRidXMtPmNvbm4pOwotKwkJ Ly8gREJVUy0xIEFQSSBpcyBhIHBhaW4sIGJ1dCBhdCBsZWFzdCB0aGF0IHdvcmtzIGZvciB0aGlz IHNpbXBsZSB1c2UgY2FzZQotKwkJaGFuZGxlX2Rpc3BhdGNoX3N0YXR1cyhkYnVzLT5jb25uLCBE QlVTX0RJU1BBVENIX0RBVEFfUkVNQUlOUywgZGJ1cyk7Ci0rCX0KLSt9Ci0rCi0rLyogT25seSBy ZWdpc3RlciBvbmUgcmVhZCB3YXRjaCwgYXMgd2UncmUgbm90IGludGVyZXN0ZWQgaW4gd3JpdGVz ICovCi0rc3RhdGljIHVuc2lnbmVkIGludCBkYnVzX2FkZF93YXRjaChEQnVzV2F0Y2ggKndhdGNo LCB2b2lkICpkYXRhKQotK3sKLSsJc3RydWN0IGttc2Nvbl9kYnVzICpkYnVzID0gZGF0YTsKLSsJ aW50IGZkID0gZGJ1c193YXRjaF9nZXRfdW5peF9mZCh3YXRjaCk7Ci0rCXVuc2lnbmVkIGludCBm bGFncyA9IGRidXNfd2F0Y2hfZ2V0X2ZsYWdzKHdhdGNoKTsKLSsJdW5zaWduZWQgaW50IGV2X2Zs YWdzID0gMDsKLSsJaW50IHJldCA9IDA7Ci0rCi0rCWxvZ19kZWJ1ZygiQWRkaW5nIHdhdGNoIGZv ciBmZCAlZCB3aXRoIGZsYWdzICVkICVwICVkXG4iLCBmZCwgZmxhZ3MsIHdhdGNoLAotKwkJICBk YnVzX3dhdGNoX2dldF9lbmFibGVkKHdhdGNoKSk7Ci0rCi0rCWlmICghZGJ1c193YXRjaF9nZXRf ZW5hYmxlZCh3YXRjaCkpCi0rCQlyZXR1cm4gVFJVRTsKLSsKLSsJaWYgKGRidXMtPndhdGNoX2Zk KSB7Ci0rCQlsb2dfd2FybmluZygiZGJ1cyB3YXRjaCBhbHJlYWR5IHJlZ2lzdGVyZWQiKTsKLSsJ CXJldHVybiBUUlVFOwotKwl9Ci0rCWlmIChmbGFncyAmIERCVVNfV0FUQ0hfV1JJVEFCTEUpCi0r CQlldl9mbGFncyB8PSBFVl9XUklURUFCTEU7Ci0rCWlmIChmbGFncyAmIERCVVNfV0FUQ0hfUkVB REFCTEUpCi0rCQlldl9mbGFncyB8PSBFVl9SRUFEQUJMRTsKLSsKLSsJcmV0ID0gZXZfZWxvb3Bf bmV3X2ZkKGRidXMtPmVsb29wLCAmZGJ1cy0+d2F0Y2hfZmQsIGZkLCBldl9mbGFncywKLSsJCQkg ICAgICBsb2NhbGUxX3Byb3BlcnRpZXNfY2hhbmdlZCwgd2F0Y2gpOwotKwotKwlkYnVzX3dhdGNo X3NldF9kYXRhKHdhdGNoLCBkYnVzLCBOVUxMKTsKLSsKLSsJaWYgKHJldCkKLSsJCWxvZ19lcnJv cigiY2Fubm90IGFkZCB3YXRjaCBmb3IgZmQgJWQ6ICVkICVkICVwIiwgZmQsIHJldCwgZXZfZmxh Z3MsIHdhdGNoKTsKLSsJcmV0dXJuIFRSVUU7Ci0rfQotKwotK3N0YXRpYyB2b2lkIGRidXNfcmVt b3ZlX3dhdGNoKERCdXNXYXRjaCAqd2F0Y2gsIHZvaWQgKmRhdGEpCi0rewotKwlzdHJ1Y3Qga21z Y29uX2RidXMgKmRidXMgPSBkYXRhOwotKwlsb2dfZGVidWcoIlJlbW92aW5nIHdhdGNoIGZvciBm ZCAlZFxuIiwgZGJ1c193YXRjaF9nZXRfdW5peF9mZCh3YXRjaCkpOwotKwotKwlpZiAoZGJ1c193 YXRjaF9nZXRfZGF0YSh3YXRjaCkgIT0gZGJ1cykKLSsJCXJldHVybjsKLSsKLSsJZXZfZWxvb3Bf cm1fZmQoZGJ1cy0+d2F0Y2hfZmQpOwotKwlkYnVzLT53YXRjaF9mZCA9IE5VTEw7Ci0rCWRidXNf d2F0Y2hfc2V0X2RhdGEod2F0Y2gsIE5VTEwsIE5VTEwpOwotKwlyZXR1cm47Ci0rfQotKwotK3N0 YXRpYyB2b2lkIGRidXNfdG9nZ2xlX3dhdGNoKERCdXNXYXRjaCAqd2F0Y2gsIHZvaWQgKmRhdGEp Ci0rewotKwlsb2dfZGVidWcoIlRvZ2dsaW5nIHdhdGNoIGZvciBmZCAlZFxuIiwgZGJ1c193YXRj aF9nZXRfdW5peF9mZCh3YXRjaCkpOwotKwotKwlpZiAoZGJ1c193YXRjaF9nZXRfZW5hYmxlZCh3 YXRjaCkpCi0rCQlkYnVzX2FkZF93YXRjaCh3YXRjaCwgZGF0YSk7Ci0rCWVsc2UKLSsJCWRidXNf cmVtb3ZlX3dhdGNoKHdhdGNoLCBkYXRhKTsKLSt9Ci0rCi0rLyogTGlzdGVuIHRvIGxvY2FsZTEg cHJvcGVydGllcyBjaGFuZ2VkLCBhbmQgdXBkYXRlIHRoZSBYS0IgbGF5b3V0IGlmIG5lZWRlZCAq LwotK2ludCBrbXNjb25fZGJ1c19saXN0ZW5fbG9jYWxlMShzdHJ1Y3Qga21zY29uX2RidXMgKmRi dXMsIGRidXNfdXBkYXRlX3hrYl9sYXlvdXRfY2IgY2IsIHZvaWQgKmRhdGEpCi0rewotKwlEQnVz RXJyb3IgZXJyb3I7Ci0rCi0rCWxvZ19kZWJ1ZygiTGlzdGVuaW5nIHRvIGxvY2FsZTFcbiIpOwot KwotKwlpZiAoIWNiKQotKwkJcmV0dXJuIC1FSU5WQUw7Ci0rCi0rCWRidXMtPmNiID0gY2I7Ci0r CWRidXMtPmRhdGEgPSBkYXRhOwotKwotKwlkYnVzX2Vycm9yX2luaXQoJmVycm9yKTsKLSsKLSsJ ZGJ1c19jb25uZWN0aW9uX3NldF93YXRjaF9mdW5jdGlvbnMoZGJ1cy0+Y29ubiwgZGJ1c19hZGRf d2F0Y2gsIGRidXNfcmVtb3ZlX3dhdGNoLAotKwkJCQkJICAgIGRidXNfdG9nZ2xlX3dhdGNoLCBk YnVzLCBOVUxMKTsKLSsKLSsJZGJ1c19jb25uZWN0aW9uX3NldF9kaXNwYXRjaF9zdGF0dXNfZnVu Y3Rpb24oZGJ1cy0+Y29ubiwgaGFuZGxlX2Rpc3BhdGNoX3N0YXR1cywgZGJ1cywKLSsJCQkJCQkg ICAgIE5VTEwpOwotKwotKwljb25zdCBjaGFyICptYXRjaF9ydWxlID0gInR5cGU9J3NpZ25hbCcs IgotKwkJCQkgInNlbmRlcj0nb3JnLmZyZWVkZXNrdG9wLmxvY2FsZTEnLCIKLSsJCQkJICJwYXRo PScvb3JnL2ZyZWVkZXNrdG9wL2xvY2FsZTEnLCIKLSsJCQkJICJpbnRlcmZhY2U9J29yZy5mcmVl ZGVza3RvcC5EQnVzLlByb3BlcnRpZXMnLCIKLSsJCQkJICJtZW1iZXI9J1Byb3BlcnRpZXNDaGFu Z2VkJyI7Ci0rCi0rCWRidXNfYnVzX2FkZF9tYXRjaChkYnVzLT5jb25uLCBtYXRjaF9ydWxlLCAm ZXJyb3IpOwotKwotKwlpZiAoZGJ1c19lcnJvcl9pc19zZXQoJmVycm9yKSkgewotKwkJbG9nX2Rl YnVnKCJFcnJvciBhZGRpbmcgbWF0Y2g6ICVzXG4iLCBlcnJvci5tZXNzYWdlKTsKLSsJCWRidXNf ZXJyb3JfZnJlZSgmZXJyb3IpOwotKwkJcmV0dXJuIC1FSU87Ci0rCX0KLSsJZGJ1c19jb25uZWN0 aW9uX2ZsdXNoKGRidXMtPmNvbm4pOwotKwotKwlsb2dfaW5mbygiTGlzdGVuaW5nIHRvIGxvY2Fs ZTEgY2hhbmdlcyIpOwotKwotKwlyZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3JjL2ttc2Nv bl9kdW1teS5oIGIvc3JjL2RidXMuaAotc2ltaWxhcml0eSBpbmRleCA1MCUKLXJlbmFtZSBmcm9t IHNyYy9rbXNjb25fZHVtbXkuaAotcmVuYW1lIHRvIHNyYy9kYnVzLmgKLWluZGV4IGI0ZjNhYTIu LjI3MjQzNGYgMTAwNjQ0Ci0tLS0gYS9zcmMva21zY29uX2R1bW15LmgKLSsrKyBiL3NyYy9kYnVz LmgKLUBAIC0xLDcgKzEsOCBAQAotIC8qCi0tICoga21zY29uIC0gRHVtbXkgU2Vzc2lvbgotKyAq IGRidXMgLSBELUJ1cyBzdXBwb3J0Ci0gICoKLS0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgRGF2aWQg SGVycm1hbm4gPGRoLmhlcnJtYW5uQGdvb2dsZW1haWwuY29tPgotKyAqIENvcHlyaWdodCAoYykg MjAyNiBSZWQgSGF0LgotKyAqIEF1dGhvcjogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRo YXQuY29tPgotICAqCi0gICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICogYSBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcwotQEAgLTIzLDI4ICsyNCwzOCBA QAotICAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRX QVJFLgotICAqLwotIAotLS8qCi0tICogRHVtbXkgU2Vzc2lvbgotLSAqLwotLQotLSNpZm5kZWYg S01TQ09OX0RVTU1ZX0gKLS0jZGVmaW5lIEtNU0NPTl9EVU1NWV9ICi0rI2lmbmRlZiBfS01TQ09O X0RCVVNfSAotKyNkZWZpbmUgX0tNU0NPTl9EQlVTX0gKLSAKLS0jaW5jbHVkZSA8ZXJybm8uaD4K LS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgImttc2Nvbl9zZWF0LmgiCi0rc3RydWN0 IGV2X2Vsb29wOwotK3N0cnVjdCBrbXNjb25fZGJ1czsKLSAKLS0jaWZkZWYgQlVJTERfRU5BQkxF X1NFU1NJT05fRFVNTVkKLSt0eXBlZGVmIHZvaWQgKCpkYnVzX3VwZGF0ZV94a2JfbGF5b3V0X2Ni KShjb25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hhciAqbGF5b3V0LAotKwkJCQkJICBjb25zdCBj aGFyICp2YXJpYW50LCBjb25zdCBjaGFyICpvcHRpb25zLCB2b2lkICpkYXRhKTsKLSAKLS1pbnQg a21zY29uX2R1bW15X3JlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqKm91dCwgc3RydWN0 IGttc2Nvbl9zZWF0ICpzZWF0KTsKLSsjaWZkZWYgQlVJTERfRU5BQkxFX0RCVVMKLSt2b2lkIGtt c2Nvbl9kYnVzX3NldF94a2JfZW52X2Zyb21fbG9jYWxlMShzdHJ1Y3Qga21zY29uX2RidXMgKmRi dXMpOwotK3N0cnVjdCBrbXNjb25fZGJ1cyAqa21zY29uX2RidXNfbmV3KHN0cnVjdCBldl9lbG9v cCAqZWxvb3ApOwotK3ZvaWQga21zY29uX2RidXNfZnJlZShzdHJ1Y3Qga21zY29uX2RidXMgKmRi dXMpOwotK2ludCBrbXNjb25fZGJ1c19saXN0ZW5fbG9jYWxlMShzdHJ1Y3Qga21zY29uX2RidXMg KmRidXMsIGRidXNfdXBkYXRlX3hrYl9sYXlvdXRfY2IgY2IsIHZvaWQgKmRhdGEpOwotIAotLSNl bHNlIC8qICFCVUlMRF9FTkFCTEVfU0VTU0lPTl9EVU1NWSAqLwotLQotLXN0YXRpYyBpbmxpbmUg aW50IGttc2Nvbl9kdW1teV9yZWdpc3RlcihzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKipvdXQsIHN0 cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLSsjZWxzZQotK3N0YXRpYyBpbmxpbmUgdm9pZCBrbXNj b25fZGJ1c19zZXRfeGtiX2Vudl9mcm9tX2xvY2FsZTEoc3RydWN0IGttc2Nvbl9kYnVzICpkYnVz KQotIHsKLS0JcmV0dXJuIC1FT1BOT1RTVVBQOwotKwlyZXR1cm47Ci0gfQotLQotLSNlbmRpZiAv KiBCVUlMRF9FTkFCTEVfU0VTU0lPTl9EVU1NWSAqLwotLQotLSNlbmRpZiAvKiBLTVNDT05fRFVN TVlfSCAqLwotK3N0YXRpYyBpbmxpbmUgc3RydWN0IGttc2Nvbl9kYnVzICprbXNjb25fZGJ1c19u ZXcoc3RydWN0IGV2X2Vsb29wICplbG9vcCkKLSt7Ci0rCXJldHVybiBOVUxMOwotK30KLStzdGF0 aWMgaW5saW5lIHZvaWQga21zY29uX2RidXNfZnJlZShzdHJ1Y3Qga21zY29uX2RidXMgKmRidXMp Ci0rewotKwlyZXR1cm47Ci0rfQotK3N0YXRpYyBpbmxpbmUgaW50IGttc2Nvbl9kYnVzX2xpc3Rl bl9sb2NhbGUxKHN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cywgZGJ1c191cGRhdGVfeGtiX2xheW91 dF9jYiBjYiwKLSsJCQkJCSAgICAgdm9pZCAqZGF0YSkKLSt7Ci0rCXJldHVybiAwOwotK30KLSsj ZW5kaWYgLyogQlVJTERfRU5BQkxFX0RCVVMgKi8KLSsjZW5kaWYgLyogX0tNU0NPTl9EQlVTX0gg Ki8KLVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotZGlmZiAtLWdpdCBhL3NyYy9mb250L2Zv bnRfZnJlZXR5cGUuYyBiL3NyYy9mb250L2ZvbnRfZnJlZXR5cGUuYwotaW5kZXggYTg3OWQ2NC4u ZDBlM2VlOSAxMDA2NDQKLS0tLSBhL3NyYy9mb250L2ZvbnRfZnJlZXR5cGUuYwotKysrIGIvc3Jj L2ZvbnQvZm9udF9mcmVldHlwZS5jCi1AQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyBpbnQgZm9u dF9nZXRfd2lkdGgoRlRfRmFjZSBmYWNlKQotIHsKLSAJRlRfVUludCBnbHlwaF9pbmRleCA9IEZU X0dldF9DaGFyX0luZGV4KGZhY2UsICdNJyk7Ci0gCi0tCWlmIChGVF9Mb2FkX0dseXBoKGZhY2Us IGdseXBoX2luZGV4LCBGVF9MT0FEX0RFRkFVTFQpKQotKwlpZiAoRlRfTG9hZF9HbHlwaChmYWNl LCBnbHlwaF9pbmRleCwgRlRfTE9BRF9UQVJHRVRfTElHSFQpKQotIAkJcmV0dXJuIC0xOwotIAot IAlpZiAoRlRfUmVuZGVyX0dseXBoKGZhY2UtPmdseXBoLCBGVF9SRU5ERVJfTU9ERV9OT1JNQUwp KQotQEAgLTM3Nyw3ICszNzcsNyBAQCBzdGF0aWMgc3RydWN0IGttc2Nvbl9nbHlwaCAqcmVuZGVy X2dseXBoKEZUX0ZhY2UgZmFjZSwgRlRfVUludCBpbmRleCwgY29uc3QgdWludAotIAlpZiAoIWN3 aWR0aCkKLSAJCXJldHVybiBOVUxMOwotIAotLQlpZiAoRlRfTG9hZF9HbHlwaChmYWNlLCBpbmRl eCwgRlRfTE9BRF9OT19ISU5USU5HKSkgewotKwlpZiAoRlRfTG9hZF9HbHlwaChmYWNlLCBpbmRl eCwgRlRfTE9BRF9UQVJHRVRfTElHSFQpKSB7Ci0gCQlsb2dfZXJyKCJGYWlsZWQgdG8gbG9hZCBn bHlwaFxuIik7Ci0gCQlyZXR1cm4gTlVMTDsKLSAJfQotZGlmZiAtLWdpdCBhL3NyYy9mb250L21l c29uLmJ1aWxkIGIvc3JjL2ZvbnQvbWVzb24uYnVpbGQKLWluZGV4IGRkNWQ5ZGMuLmQyNjViYjAg MTAwNjQ0Ci0tLS0gYS9zcmMvZm9udC9tZXNvbi5idWlsZAotKysrIGIvc3JjL2ZvbnQvbWVzb24u YnVpbGQKLUBAIC0yMiw3ICsyMiw3IEBAIGZvbnRfZGVwcyA9IGRlY2xhcmVfZGVwZW5kZW5jeSgK LSAjIFVuaWZvbnQgR2VuZXJhdG9yCi0gIyBUaGlzIGdlbmVyYXRlcyB0aGUgdW5pZm9udCBzb3Vy Y2VzIGZyb20gcmF3IGhleC1lbmNvZGVkIGZvbnQgZGF0YS4KLSAjCi0tZ2VudW5pZm9udCA9IGV4 ZWN1dGFibGUoJ2dlbnVuaWZvbnQnLCAnZ2VudW5pZm9udC5jJywgZGVwZW5kZW5jaWVzOiBbemxp Yl9kZXBzXSwgbmF0aXZlOiB0cnVlKQotK2dlbnVuaWZvbnQgPSBleGVjdXRhYmxlKCdnZW51bmlm b250JywgJ2dlbnVuaWZvbnQuYycsIGRlcGVuZGVuY2llczogW3psaWJfZGVwc19uYXRpdmVdLCBu YXRpdmU6IHRydWUpCi0gCi0gdW5pZm9udF9iaW4gPSBjdXN0b21fdGFyZ2V0KCd1bmlmb250LWJp bicsCi0gICBpbnB1dDogWydmb250X3VuaWZvbnRfZGF0YS5oZXgnXSwKLUBAIC02OCw0ICs2OCw0 IEBAIGlmIGVuYWJsZV9mb250X3BhbmdvCi0gICAgIGluc3RhbGw6IHRydWUsCi0gICAgIGluc3Rh bGxfZGlyOiBtb2R1bGVkaXIsCi0gICApCi0tZW5kaWYKLVwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQotK2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3JjL2lucHV0L2lucHV0LmMgYi9zcmMvaW5wdXQv aW5wdXQuYwotaW5kZXggNjVjMWQ2Zi4uNzFhMDUzYiAxMDA2NDQKLS0tLSBhL3NyYy9pbnB1dC9p bnB1dC5jCi0rKysgYi9zcmMvaW5wdXQvaW5wdXQuYwotQEAgLTUwNCwyMyArNTA0LDQ4IEBAIGVy cl9mcmVlOgotIAotIFNITF9FWFBPUlQKLSBpbnQgaW5wdXRfc2V0X2tleW1hcChzdHJ1Y3QgaW5w dXQgKmlucHV0LCBjb25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hhciAqbGF5b3V0LAotLQkJICAg ICBjb25zdCBjaGFyICp2YXJpYW50LCBjb25zdCBjaGFyICpvcHRpb25zLCBjb25zdCBjaGFyICps b2NhbGUsCi0tCQkgICAgIGNvbnN0IGNoYXIgKmtleW1hcCwgY29uc3QgY2hhciAqY29tcG9zZV9m aWxlLCBzaXplX3QgY29tcG9zZV9maWxlX2xlbikKLS17Ci0tCS8qIHhrYmNvbW1vbiB3b24ndCB1 c2UgdGhlIFhLQl9ERUZBVUxUX09QVElPTlMgZW52aXJvbm1lbnQKLS0JICogdmFyaWFibGUgaWYg b3B0aW9ucyBpcyBhbiBlbXB0eSBzdHJpbmcuCi0tCSAqIFNvIGlmIGFsbCB2YXJpYWJsZXMgYXJl IGVtcHR5LCB1c2UgTlVMTCBpbnN0ZWFkLgotLQkgKi8KLS0JaWYgKG1vZGVsICYmICptb2RlbCA9 PSAwICYmIGxheW91dCAmJiAqbGF5b3V0ID09IDAgJiYgdmFyaWFudCAmJiAqdmFyaWFudCA9PSAw ICYmIG9wdGlvbnMgJiYKLS0JICAgICpvcHRpb25zID09IDApIHsKLS0JCW1vZGVsID0gTlVMTDsK LS0JCWxheW91dCA9IE5VTEw7Ci0tCQl2YXJpYW50ID0gTlVMTDsKLS0JCW9wdGlvbnMgPSBOVUxM OwotLQl9Ci0rCQkgICAgIGNvbnN0IGNoYXIgKnZhcmlhbnQsIGNvbnN0IGNoYXIgKm9wdGlvbnMs IGNvbnN0IGNoYXIgKmtleW1hcCkKLSt7Ci0rCXJldHVybiB1eGtiX2xheW91dF9pbml0KGlucHV0 LCBtb2RlbCwgbGF5b3V0LCB2YXJpYW50LCBvcHRpb25zLCBrZXltYXApOwotK30KLSAKLS0JcmV0 dXJuIHV4a2JfZGVzY19pbml0KGlucHV0LCBtb2RlbCwgbGF5b3V0LCB2YXJpYW50LCBvcHRpb25z LCBsb2NhbGUsIGtleW1hcCwgY29tcG9zZV9maWxlLAotLQkJCSAgICAgIGNvbXBvc2VfZmlsZV9s ZW4pOwotK1NITF9FWFBPUlQKLSt2b2lkIGlucHV0X3NldF9jb21wb3NlKHN0cnVjdCBpbnB1dCAq aW5wdXQsIGNvbnN0IGNoYXIgKmxvY2FsZSwgY29uc3QgY2hhciAqY29tcG9zZV9maWxlLAotKwkJ ICAgICAgIHNpemVfdCBjb21wb3NlX2ZpbGVfbGVuKQotK3sKLSsJdXhrYl9jb21wb3NlX3RhYmxl X2luaXQoaW5wdXQsIGNvbXBvc2VfZmlsZSwgY29tcG9zZV9maWxlX2xlbiwgbG9jYWxlKTsKLSt9 Ci0rCi0rU0hMX0VYUE9SVAotK2ludCBpbnB1dF91cGRhdGVfa2V5bWFwKHN0cnVjdCBpbnB1dCAq aW5wdXQsIGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsCi0rCQkJY29uc3Qg Y2hhciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucykKLSt7Ci0rCXN0cnVjdCBzaGxfZGxp c3QgKml0ZXI7Ci0rCXN0cnVjdCBpbnB1dF9kZXYgKmRldjsKLSsKLSsJaWYgKGlucHV0LT5jdHgp IHsKLSsJCXNobF9kbGlzdF9mb3JfZWFjaChpdGVyLCAmaW5wdXQtPmRldmljZXMpCi0rCQl7Ci0r CQkJZGV2ID0gc2hsX2RsaXN0X2VudHJ5KGl0ZXIsIHN0cnVjdCBpbnB1dF9kZXYsIGxpc3QpOwot KwkJCWlmIChkZXYtPmNhcGFiaWxpdGllcyAmIERFVklDRV9IQVNfS0VZUykgewotKwkJCQlpbnB1 dF9zbGVlcF9kZXYoZGV2KTsKLSsJCQkJaW5wdXRfZXhpdF9rZXlib2FyZChkZXYpOwotKwkJCX0K LSsJCX0KLSsJfQotKwl1eGtiX2NvbXBvc2VfdGFibGVfZGVzdHJveShpbnB1dCk7Ci0rCXV4a2Jf bGF5b3V0X2Rlc3Ryb3koaW5wdXQpOwotKwl1eGtiX2xheW91dF9pbml0KGlucHV0LCBtb2RlbCwg bGF5b3V0LCB2YXJpYW50LCBvcHRpb25zLCBOVUxMKTsKLSsJc2hsX2RsaXN0X2Zvcl9lYWNoKGl0 ZXIsICZpbnB1dC0+ZGV2aWNlcykKLSsJewotKwkJZGV2ID0gc2hsX2RsaXN0X2VudHJ5KGl0ZXIs IHN0cnVjdCBpbnB1dF9kZXYsIGxpc3QpOwotKwkJaWYgKGRldi0+Y2FwYWJpbGl0aWVzICYgREVW SUNFX0hBU19LRVlTKSB7Ci0rCQkJaW5wdXRfaW5pdF9rZXlib2FyZChkZXYpOwotKwkJCWlmIChp bnB1dC0+YXdha2UpCi0rCQkJCWlucHV0X3dha2VfdXBfZGV2KGRldik7Ci0rCQl9Ci0rCX0KLSsJ cmV0dXJuIDA7Ci0gfQotIAotIFNITF9FWFBPUlQKLUBAIC01NjUsNyArNTkwLDggQEAgdm9pZCBp bnB1dF91bnJlZihzdHJ1Y3QgaW5wdXQgKmlucHV0KQotIAkJaW5wdXRfZnJlZV9kZXYoZGV2KTsK LSAJfQotIAotLQl1eGtiX2Rlc2NfZGVzdHJveShpbnB1dCk7Ci0rCXV4a2JfY29tcG9zZV90YWJs ZV9kZXN0cm95KGlucHV0KTsKLSsJdXhrYl9sYXlvdXRfZGVzdHJveShpbnB1dCk7Ci0gCXNobF9o b29rX2ZyZWUoaW5wdXQtPmtleV9ob29rKTsKLSAJc2hsX2hvb2tfZnJlZShpbnB1dC0+cG9pbnRl cl9ob29rKTsKLSAJZXZfZWxvb3Bfcm1fdGltZXIoaW5wdXQtPmhpZGVfcG9pbnRlcik7Ci1kaWZm IC0tZ2l0IGEvc3JjL2lucHV0L2lucHV0LmggYi9zcmMvaW5wdXQvaW5wdXQuaAotaW5kZXggOGI4 MWUwMC4uOWYyNjlmZiAxMDA2NDQKLS0tLSBhL3NyYy9pbnB1dC9pbnB1dC5oCi0rKysgYi9zcmMv aW5wdXQvaW5wdXQuaAotQEAgLTkyLDggKzkyLDExIEBAIHR5cGVkZWYgdm9pZCAoKnV0ZXJtX2Ns b3NlX2NiKShpbnQgZmQsIGludCBmZF9pZCwgdm9pZCAqZGF0YSk7Ci0gCi0gaW50IGlucHV0X25l dyhzdHJ1Y3QgaW5wdXQgKipvdXQsIHN0cnVjdCBldl9lbG9vcCAqZWxvb3ApOwotIGludCBpbnB1 dF9zZXRfa2V5bWFwKHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0IGNoYXIgKm1vZGVsLCBjb25z dCBjaGFyICpsYXlvdXQsCi0tCQkgICAgIGNvbnN0IGNoYXIgKnZhcmlhbnQsIGNvbnN0IGNoYXIg Km9wdGlvbnMsIGNvbnN0IGNoYXIgKmxvY2FsZSwKLS0JCSAgICAgY29uc3QgY2hhciAqa2V5bWFw LCBjb25zdCBjaGFyICpjb21wb3NlX2ZpbGUsIHNpemVfdCBjb21wb3NlX2ZpbGVfbGVuKTsKLSsJ CSAgICAgY29uc3QgY2hhciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucywgY29uc3QgY2hh ciAqa2V5bWFwKTsKLSt2b2lkIGlucHV0X3NldF9jb21wb3NlKHN0cnVjdCBpbnB1dCAqaW5wdXQs IGNvbnN0IGNoYXIgKmxvY2FsZSwgY29uc3QgY2hhciAqY29tcG9zZV9maWxlLAotKwkJICAgICAg IHNpemVfdCBjb21wb3NlX2ZpbGVfbGVuKTsKLStpbnQgaW5wdXRfdXBkYXRlX2tleW1hcChzdHJ1 Y3QgaW5wdXQgKmlucHV0LCBjb25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hhciAqbGF5b3V0LAot KwkJCWNvbnN0IGNoYXIgKnZhcmlhbnQsIGNvbnN0IGNoYXIgKm9wdGlvbnMpOwotIHZvaWQgaW5w dXRfc2V0X2NvbmYoc3RydWN0IGlucHV0ICppbnB1dCwgdW5zaWduZWQgaW50IHJlcGVhdF9kZWxh eSwgdW5zaWduZWQgaW50IHJlcGVhdF9yYXRlLAotIAkJICAgIGJvb2wgbW91c2VfZW5hYmxlZCk7 Ci0gdm9pZCBpbnB1dF9yZWYoc3RydWN0IGlucHV0ICppbnB1dCk7Ci1kaWZmIC0tZ2l0IGEvc3Jj L2lucHV0L2lucHV0X2ludGVybmFsLmggYi9zcmMvaW5wdXQvaW5wdXRfaW50ZXJuYWwuaAotaW5k ZXggNTU5ZThlYy4uZmM5MzJmYSAxMDA2NDQKLS0tLSBhL3NyYy9pbnB1dC9pbnB1dF9pbnRlcm5h bC5oCi0rKysgYi9zcmMvaW5wdXQvaW5wdXRfaW50ZXJuYWwuaAotQEAgLTE0MCwxMCArMTQwLDEy IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnB1dF9iaXRfaXNfc2V0KGNvbnN0IHVuc2lnbmVkIGxv bmcgKmFycmF5LCBpbnQgYml0KQotIAlyZXR1cm4gISEoYXJyYXlbYml0IC8gTE9OR19CSVRdICYg KDFVTCA8PCAoYml0ICUgTE9OR19CSVQpKSk7Ci0gfQotIAotLWludCB1eGtiX2Rlc2NfaW5pdChz dHJ1Y3QgaW5wdXQgKmlucHV0LCBjb25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hhciAqbGF5b3V0 LCBjb25zdCBjaGFyICp2YXJpYW50LAotLQkJICAgY29uc3QgY2hhciAqb3B0aW9ucywgY29uc3Qg Y2hhciAqbG9jYWxlLCBjb25zdCBjaGFyICprZXltYXAsCi0tCQkgICBjb25zdCBjaGFyICpjb21w b3NlX2ZpbGUsIHNpemVfdCBjb21wb3NlX2ZpbGVfbGVuKTsKLS12b2lkIHV4a2JfZGVzY19kZXN0 cm95KHN0cnVjdCBpbnB1dCAqaW5wdXQpOwotK2ludCB1eGtiX2xheW91dF9pbml0KHN0cnVjdCBp bnB1dCAqaW5wdXQsIGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsCi0rCQkg ICAgIGNvbnN0IGNoYXIgKnZhcmlhbnQsIGNvbnN0IGNoYXIgKm9wdGlvbnMsIGNvbnN0IGNoYXIg KmtleW1hcCk7Ci0rdm9pZCB1eGtiX2NvbXBvc2VfdGFibGVfaW5pdChzdHJ1Y3QgaW5wdXQgKmlu cHV0LCBjb25zdCBjaGFyICpjb21wb3NlX2ZpbGUsIHNpemVfdCBjb21wb3NlX2ZpbGVfbGVuLAot KwkJCSAgICAgY29uc3QgY2hhciAqbG9jYWxlKTsKLSt2b2lkIHV4a2JfbGF5b3V0X2Rlc3Ryb3ko c3RydWN0IGlucHV0ICppbnB1dCk7Ci0rdm9pZCB1eGtiX2NvbXBvc2VfdGFibGVfZGVzdHJveShz dHJ1Y3QgaW5wdXQgKmlucHV0KTsKLSAKLSBpbnQgdXhrYl9kZXZfaW5pdChzdHJ1Y3QgaW5wdXRf ZGV2ICpkZXYpOwotIHZvaWQgdXhrYl9kZXZfZGVzdHJveShzdHJ1Y3QgaW5wdXRfZGV2ICpkZXYp OwotZGlmZiAtLWdpdCBhL3NyYy9pbnB1dC9pbnB1dF91eGtiLmMgYi9zcmMvaW5wdXQvaW5wdXRf dXhrYi5jCi1pbmRleCAzNzdlOTM1Li4xYWUyNTY1IDEwMDY0NAotLS0tIGEvc3JjL2lucHV0L2lu cHV0X3V4a2IuYwotKysrIGIvc3JjL2lucHV0L2lucHV0X3V4a2IuYwotQEAgLTY5LDExICs2OSwx MCBAQCBzdGF0aWMgdm9pZCB1eGtiX2xvZyhzdHJ1Y3QgeGtiX2NvbnRleHQgKmNvbnRleHQsIGVu dW0geGtiX2xvZ19sZXZlbCBsZXZlbCwgY29ucwotIAlsb2dfc3VibWl0KExPR19ERUZBVUxULCBz ZXYsIGZvcm1hdCwgYXJncyk7Ci0gfQotIAotLWludCB1eGtiX2Rlc2NfaW5pdChzdHJ1Y3QgaW5w dXQgKmlucHV0LCBjb25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hhciAqbGF5b3V0LCBjb25zdCBj aGFyICp2YXJpYW50LAotLQkJICAgY29uc3QgY2hhciAqb3B0aW9ucywgY29uc3QgY2hhciAqbG9j YWxlLCBjb25zdCBjaGFyICprZXltYXAsCi0tCQkgICBjb25zdCBjaGFyICpjb21wb3NlX2ZpbGUs IHNpemVfdCBjb21wb3NlX2ZpbGVfbGVuKQotK2ludCB1eGtiX2xheW91dF9pbml0KHN0cnVjdCBp bnB1dCAqaW5wdXQsIGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsCi0rCQkg ICAgIGNvbnN0IGNoYXIgKnZhcmlhbnQsIGNvbnN0IGNoYXIgKm9wdGlvbnMsIGNvbnN0IGNoYXIg KmtleW1hcCkKLSB7Ci0tCWludCByZXQ7Ci0rCWludCByZXQgPSAwOwotIAlzdHJ1Y3QgeGtiX3J1 bGVfbmFtZXMgcm1sdm8gPSB7Ci0gCQkucnVsZXMgPSAiZXZkZXYiLAotIAkJLm1vZGVsID0gbW9k ZWwsCi1AQCAtMTQwLDcgKzEzOSwxNSBAQCBpbnQgdXhrYl9kZXNjX2luaXQoc3RydWN0IGlucHV0 ICppbnB1dCwgY29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwgYwotIAkJbG9n X2RlYnVnKCJuZXcga2V5Ym9hcmQgZGVzY3JpcHRpb24gKCVzLCAlcywgJXMsICVzKSIsIG1vZGVs LCBsYXlvdXQsIHZhcmlhbnQsCi0gCQkJICBvcHRpb25zKTsKLSAJfQotKwlyZXR1cm4gMDsKLStl cnJfY3R4OgotKwl4a2JfY29udGV4dF91bnJlZihpbnB1dC0+Y3R4KTsKLSsJcmV0dXJuIHJldDsK LSt9Ci0gCi0rdm9pZCB1eGtiX2NvbXBvc2VfdGFibGVfaW5pdChzdHJ1Y3QgaW5wdXQgKmlucHV0 LCBjb25zdCBjaGFyICpjb21wb3NlX2ZpbGUsIHNpemVfdCBjb21wb3NlX2ZpbGVfbGVuLAotKwkJ CSAgICAgY29uc3QgY2hhciAqbG9jYWxlKQotK3sKLSAJaWYgKGNvbXBvc2VfZmlsZSAmJiAqY29t cG9zZV9maWxlKSB7Ci0gCQlpbnB1dC0+Y29tcG9zZV90YWJsZSA9IHhrYl9jb21wb3NlX3RhYmxl X25ld19mcm9tX2J1ZmZlcigKLSAJCQlpbnB1dC0+Y3R4LCBjb21wb3NlX2ZpbGUsIGNvbXBvc2Vf ZmlsZV9sZW4sIGxvY2FsZSwKLUBAIC0xNjEsMTkgKzE2OCwyMCBAQCBpbnQgdXhrYl9kZXNjX2lu aXQoc3RydWN0IGlucHV0ICppbnB1dCwgY29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxh eW91dCwgYwotIAkJCQkgInRhYmxlLCBkaXNhYmxpbmcgY29tcG9zZSBzdXBwb3J0Iik7Ci0gCQl9 Ci0gCX0KLS0KLS0JcmV0dXJuIDA7Ci0tCi0tZXJyX2N0eDoKLS0JeGtiX2NvbnRleHRfdW5yZWYo aW5wdXQtPmN0eCk7Ci0tCXJldHVybiByZXQ7Ci0gfQotIAotLXZvaWQgdXhrYl9kZXNjX2Rlc3Ry b3koc3RydWN0IGlucHV0ICppbnB1dCkKLSt2b2lkIHV4a2JfY29tcG9zZV90YWJsZV9kZXN0cm95 KHN0cnVjdCBpbnB1dCAqaW5wdXQpCi0gewotIAl4a2JfY29tcG9zZV90YWJsZV91bnJlZihpbnB1 dC0+Y29tcG9zZV90YWJsZSk7Ci0rCWlucHV0LT5jb21wb3NlX3RhYmxlID0gTlVMTDsKLSt9Ci0r Ci0rdm9pZCB1eGtiX2xheW91dF9kZXN0cm95KHN0cnVjdCBpbnB1dCAqaW5wdXQpCi0rewotIAl4 a2Jfa2V5bWFwX3VucmVmKGlucHV0LT5rZXltYXApOwotIAl4a2JfY29udGV4dF91bnJlZihpbnB1 dC0+Y3R4KTsKLSsJaW5wdXQtPmtleW1hcCA9IE5VTEw7Ci0rCWlucHV0LT5jdHggPSBOVUxMOwot IH0KLSAKLSBzdGF0aWMgdm9pZCB0aW1lcl9ldmVudChzdHJ1Y3QgZXZfdGltZXIgKnRpbWVyLCB1 aW50NjRfdCBudW0sIHZvaWQgKmRhdGEpCi1AQCAtMjE4LDYgKzIyNiw5IEBAIHZvaWQgdXhrYl9k ZXZfZGVzdHJveShzdHJ1Y3QgaW5wdXRfZGV2ICpkZXYpCi0gCXhrYl9jb21wb3NlX3N0YXRlX3Vu cmVmKGRldi0+Y29tcG9zZV9zdGF0ZSk7Ci0gCXhrYl9zdGF0ZV91bnJlZihkZXYtPnN0YXRlKTsK LSAJZXZfZWxvb3Bfcm1fdGltZXIoZGV2LT5yZXBlYXRfdGltZXIpOwotKwlkZXYtPmNvbXBvc2Vf c3RhdGUgPSBOVUxMOwotKwlkZXYtPnN0YXRlID0gTlVMTDsKLSsJZGV2LT5yZXBlYXRfdGltZXIg PSBOVUxMOwotIH0KLSAKLSAjZGVmaW5lIEVWREVWX0tFWUNPREVfT0ZGU0VUIDgKLWRpZmYgLS1n aXQgYS9zcmMva21zY29uX2NvbmYuYyBiL3NyYy9rbXNjb25fY29uZi5jCi1pbmRleCA2YTg3Mjhh Li40YjAxZDRhIDEwMDY0NAotLS0tIGEvc3JjL2ttc2Nvbl9jb25mLmMKLSsrKyBiL3NyYy9rbXNj b25fY29uZi5jCi1AQCAtMzQsNiArMzQsNyBAQAotICNpbmNsdWRlIDx4a2Jjb21tb24veGtiY29t bW9uLWtleXN5bXMuaD4KLSAjaW5jbHVkZSAiY29uZi5oIgotICNpbmNsdWRlICJrbXNjb25fY29u Zi5oIgotKyNpbmNsdWRlICJrbXNjb25faXNzdWUuaCIKLSAjaW5jbHVkZSAic2hsL2dpdGhlYWQu aCIKLSAjaW5jbHVkZSAic2hsL2xvZy5oIgotICNpbmNsdWRlICJzaGwvbWlzYy5oIgotQEAgLTc4 LDE0ICs3OSwxMyBAQCBzdGF0aWMgdm9pZCBwcmludF9oZWxwKCkKLSAJCSJTZXNzaW9uIE9wdGlv bnM6XG4iCi0gCQkiXHQgICAgLS1zZXNzaW9uLW1heCA8bWF4PiAgICAgICAgIFs1MF0gIE1heGlt dW0gbnVtYmVyIG9mIHNlc3Npb25zXG4iCi0gCQkiXHQgICAgLS1zZXNzaW9uLWNvbnRyb2wgICAg ICAgICAgIFtvZmZdIEFsbG93IGtleWJvYXJkIHNlc3Npb24tY29udHJvbFxuIgotLQkJIlx0ICAg IC0tdGVybWluYWwtc2Vzc2lvbiAgICAgICAgICBbb25dICBFbmFibGUgdGVybWluYWwgc2Vzc2lv blxuIgotIAkJIlxuIgotIAkJIlRlcm1pbmFsIE9wdGlvbnM6XG4iCi0gCQkiXHQgICAgLS1pc3N1 ZSAgICAgICAgICAgICAgICAgW29uXVxuIgotIAkJIlx0ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRGlzcGxheSBpc3N1ZSBmaWxlcyBiZWZvcmUgdGhlXG4iCi0gCQkiXHQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsb2dpbiBwcm9tcHQuIFVzZSAtLW5vLWlzc3VlIHRvXG4iCi0g CQkiXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGhlIGxvZ2luIHByb2Nlc3Mg aGFuZGxlIGl0LlxuIgotLQkJIlx0ICAgIC0taXNzdWUtcGF0aCA8cGF0aD4gICAgIFsvZXRjL2lz c3VlOi9ldGMvaXNzdWUuZF1cbiIKLSsJCSJcdCAgICAtLWlzc3VlLXBhdGggPHBhdGg+ICAgICBb IiBJU1NVRV9ERUZBVUxUX1BBVEggIl1cbiIKLSAJCSJcdCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIGlzc3VlXG4iCi0gCQkiXHQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gcmVhZFxuIgotIAkJ Ilx0LWwsIC0tbG9naW4gICAgICAgICAgICAgICAgIFsvYmluL2xvZ2luIC1wXVxuIgotQEAgLTE0 OCw4ICsxNDgsNiBAQCBzdGF0aWMgdm9pZCBwcmludF9oZWxwKCkKLSAJCSJcdCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTd2l0Y2ggdG8gdGhlIG5leHQgc2Vzc2lvblxuIgotIAkJ Ilx0ICAgIC0tZ3JhYi1zZXNzaW9uLXByZXYgPGdyYWI+ICBbPEN0cmw+PExvZ28+TGVmdF1cbiIK LSAJCSJcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTd2l0Y2ggdG8gdGhlIHBy ZXZpb3VzIHNlc3Npb25cbiIKLS0JCSJcdCAgICAtLWdyYWItc2Vzc2lvbi1kdW1teSA8Z3JhYj4g WzxDdHJsPjxMb2dvPkVzY2FwZV1cbiIKLS0JCSJcdCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTd2l0Y2ggdG8gYSBkdW1teSBzZXNzaW9uXG4iCi0gCQkiXHQgICAgLS1ncmFiLXNl c3Npb24tY2xvc2UgPGdyYWI+IFs8Q3RybD48TG9nbz5CYWNrU3BhY2VdXG4iCi0gCQkiXHQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2UgY3VycmVudCBzZXNzaW9uXG4iCi0g CQkiXHQgICAgLS1ncmFiLXRlcm1pbmFsLW5ldyA8Z3JhYj4gIFs8Q3RybD48TG9nbz5SZXR1cm5d XG4iCi1AQCAtNjU5LDkgKzY1Nyw2IEBAIHN0YXRpYyBzdHJ1Y3QgY29uZl9ncmFiIGRlZl9ncmFi X3Nlc3Npb25fbmV4dCA9Ci0gc3RhdGljIHN0cnVjdCBjb25mX2dyYWIgZGVmX2dyYWJfc2Vzc2lv bl9wcmV2ID0KLSAJQ09ORl9TSU5HTEVfR1JBQihTSExfQ09OVFJPTF9NQVNLIHwgU0hMX0xPR09f TUFTSywgWEtCX0tFWV9MZWZ0KTsKLSAKLS1zdGF0aWMgc3RydWN0IGNvbmZfZ3JhYiBkZWZfZ3Jh Yl9zZXNzaW9uX2R1bW15ID0KLS0JQ09ORl9TSU5HTEVfR1JBQihTSExfQ09OVFJPTF9NQVNLIHwg U0hMX0xPR09fTUFTSywgWEtCX0tFWV9Fc2NhcGUpOwotLQotIHN0YXRpYyBzdHJ1Y3QgY29uZl9n cmFiIGRlZl9ncmFiX3Nlc3Npb25fY2xvc2UgPQotIAlDT05GX1NJTkdMRV9HUkFCKFNITF9DT05U Uk9MX01BU0sgfCBTSExfTE9HT19NQVNLLCBYS0JfS0VZX0JhY2tTcGFjZSk7Ci0gCi1AQCAtNzI4 LDExICs3MjMsMTAgQEAgaW50IGttc2Nvbl9jb25mX25ldyhzdHJ1Y3QgY29uZl9jdHggKipvdXQp Ci0gCQkvKiBTZXNzaW9uIE9wdGlvbnMgKi8KLSAJCUNPTkZfT1BUSU9OX1VJTlQoMCwgInNlc3Np b24tbWF4IiwgJmNvbmYtPnNlc3Npb25fbWF4LCA1MCksCi0gCQlDT05GX09QVElPTl9CT09MKDAs ICJzZXNzaW9uLWNvbnRyb2wiLCAmY29uZi0+c2Vzc2lvbl9jb250cm9sLCBmYWxzZSksCi0tCQlD T05GX09QVElPTl9CT09MKDAsICJ0ZXJtaW5hbC1zZXNzaW9uIiwgJmNvbmYtPnRlcm1pbmFsX3Nl c3Npb24sIHRydWUpLAotIAotIAkJLyogVGVybWluYWwgT3B0aW9ucyAqLwotIAkJQ09ORl9PUFRJ T05fQk9PTCgwLCAiaXNzdWUiLCAmY29uZi0+aXNzdWUsIHRydWUpLAotLQkJQ09ORl9PUFRJT05f U1RSSU5HKDAsICJpc3N1ZS1wYXRoIiwgJmNvbmYtPmlzc3VlX3BhdGgsICIvZXRjL2lzc3VlOi9l dGMvaXNzdWUuZCIpLAotKwkJQ09ORl9PUFRJT05fU1RSSU5HKDAsICJpc3N1ZS1wYXRoIiwgJmNv bmYtPmlzc3VlX3BhdGgsIElTU1VFX0RFRkFVTFRfUEFUSCksCi0gCQlDT05GX09QVElPTigwLCAn bCcsICJsb2dpbiIsICZjb25mX2xvZ2luLCBhZnRlcmNoZWNrX2xvZ2luLCBOVUxMLCBmaWxlX2xv Z2luLAotIAkJCSAgICAmY29uZi0+bG9naW4sIGZhbHNlKSwKLSAJCUNPTkZfT1BUSU9OX1NUUklO RygndCcsICJ0ZXJtIiwgJmNvbmYtPnRlcm0sICJrbXNjb24iKSwKLUBAIC03NDIsMTIgKzczNiwx MiBAQCBpbnQga21zY29uX2NvbmZfbmV3KHN0cnVjdCBjb25mX2N0eCAqKm91dCkKLSAJCUNPTkZf T1BUSU9OX0JPT0woMCwgImJlbGwiLCAmY29uZi0+YmVsbCwgZmFsc2UpLAotIAotIAkJLyogSW5w dXQgT3B0aW9ucyAqLwotLQkJQ09ORl9PUFRJT05fU1RSSU5HKDAsICJ4a2ItbW9kZWwiLCAmY29u Zi0+eGtiX21vZGVsLCAiIiksCi0tCQlDT05GX09QVElPTl9TVFJJTkcoMCwgInhrYi1sYXlvdXQi LCAmY29uZi0+eGtiX2xheW91dCwgIiIpLAotLQkJQ09ORl9PUFRJT05fU1RSSU5HKDAsICJ4a2It dmFyaWFudCIsICZjb25mLT54a2JfdmFyaWFudCwgIiIpLAotLQkJQ09ORl9PUFRJT05fU1RSSU5H KDAsICJ4a2Itb3B0aW9ucyIsICZjb25mLT54a2Jfb3B0aW9ucywgIiIpLAotLQkJQ09ORl9PUFRJ T05fU1RSSU5HKDAsICJ4a2Ita2V5bWFwIiwgJmNvbmYtPnhrYl9rZXltYXAsICIiKSwKLS0JCUNP TkZfT1BUSU9OX1NUUklORygwLCAieGtiLWNvbXBvc2UtZmlsZSIsICZjb25mLT54a2JfY29tcG9z ZV9maWxlLCAiIiksCi0rCQlDT05GX09QVElPTl9TVFJJTkcoMCwgInhrYi1tb2RlbCIsICZjb25m LT54a2JfbW9kZWwsIE5VTEwpLAotKwkJQ09ORl9PUFRJT05fU1RSSU5HKDAsICJ4a2ItbGF5b3V0 IiwgJmNvbmYtPnhrYl9sYXlvdXQsIE5VTEwpLAotKwkJQ09ORl9PUFRJT05fU1RSSU5HKDAsICJ4 a2ItdmFyaWFudCIsICZjb25mLT54a2JfdmFyaWFudCwgTlVMTCksCi0rCQlDT05GX09QVElPTl9T VFJJTkcoMCwgInhrYi1vcHRpb25zIiwgJmNvbmYtPnhrYl9vcHRpb25zLCBOVUxMKSwKLSsJCUNP TkZfT1BUSU9OX1NUUklORygwLCAieGtiLWtleW1hcCIsICZjb25mLT54a2Jfa2V5bWFwLCBOVUxM KSwKLSsJCUNPTkZfT1BUSU9OX1NUUklORygwLCAieGtiLWNvbXBvc2UtZmlsZSIsICZjb25mLT54 a2JfY29tcG9zZV9maWxlLCBOVUxMKSwKLSAJCUNPTkZfT1BUSU9OX1VJTlQoMCwgInhrYi1yZXBl YXQtZGVsYXkiLCAmY29uZi0+eGtiX3JlcGVhdF9kZWxheSwgMjUwKSwKLSAJCUNPTkZfT1BUSU9O X1VJTlQoMCwgInhrYi1yZXBlYXQtcmF0ZSIsICZjb25mLT54a2JfcmVwZWF0X3JhdGUsIDUwKSwK LSAJCUNPTkZfT1BUSU9OX0JPT0woMCwgIm1vdXNlIiwgJmNvbmYtPm1vdXNlLCB0cnVlKSwKLUBA IC03NjcsOCArNzYxLDYgQEAgaW50IGttc2Nvbl9jb25mX25ldyhzdHJ1Y3QgY29uZl9jdHggKipv dXQpCi0gCQkJCSAmZGVmX2dyYWJfc2Vzc2lvbl9uZXh0KSwKLSAJCUNPTkZfT1BUSU9OX0dSQUIo MCwgImdyYWItc2Vzc2lvbi1wcmV2IiwgJmNvbmYtPmdyYWJfc2Vzc2lvbl9wcmV2LAotIAkJCQkg JmRlZl9ncmFiX3Nlc3Npb25fcHJldiksCi0tCQlDT05GX09QVElPTl9HUkFCKDAsICJncmFiLXNl c3Npb24tZHVtbXkiLCAmY29uZi0+Z3JhYl9zZXNzaW9uX2R1bW15LAotLQkJCQkgJmRlZl9ncmFi X3Nlc3Npb25fZHVtbXkpLAotIAkJQ09ORl9PUFRJT05fR1JBQigwLCAiZ3JhYi1zZXNzaW9uLWNs b3NlIiwgJmNvbmYtPmdyYWJfc2Vzc2lvbl9jbG9zZSwKLSAJCQkJICZkZWZfZ3JhYl9zZXNzaW9u X2Nsb3NlKSwKLSAJCUNPTkZfT1BUSU9OX0dSQUIoMCwgImdyYWItdGVybWluYWwtbmV3IiwgJmNv bmYtPmdyYWJfdGVybWluYWxfbmV3LAotZGlmZiAtLWdpdCBhL3NyYy9rbXNjb25fY29uZi5oIGIv c3JjL2ttc2Nvbl9jb25mLmgKLWluZGV4IDhkYzdhZmQuLjM3N2Y4YTMgMTAwNjQ0Ci0tLS0gYS9z cmMva21zY29uX2NvbmYuaAotKysrIGIvc3JjL2ttc2Nvbl9jb25mLmgKLUBAIC03OSw4ICs3OSw2 IEBAIHN0cnVjdCBrbXNjb25fY29uZl90IHsKLSAJdW5zaWduZWQgaW50IHNlc3Npb25fbWF4Owot IAkvKiBhbGxvdyBrZXlib2FyZCBzZXNzaW9uIGNvbnRyb2wgKi8KLSAJYm9vbCBzZXNzaW9uX2Nv bnRyb2w7Ci0tCS8qIHJ1biB0ZXJtaW5hbCBzZXNzaW9uICovCi0tCWJvb2wgdGVybWluYWxfc2Vz c2lvbjsKLSAKLSAJLyogVGVybWluYWwgT3B0aW9ucyAqLwotIAkvKiBkaXNwbGF5IC9ldGMvaXNz dWUgYmVmb3JlIGxvZ2luIHByb21wdCAqLwotQEAgLTE0NSw4ICsxNDMsNiBAQCBzdHJ1Y3Qga21z Y29uX2NvbmZfdCB7Ci0gCXN0cnVjdCBjb25mX2dyYWIgKmdyYWJfc2Vzc2lvbl9uZXh0OwotIAkv KiBzZXNzaW9uLXByZXYgZ3JhYiAqLwotIAlzdHJ1Y3QgY29uZl9ncmFiICpncmFiX3Nlc3Npb25f cHJldjsKLS0JLyogc2Vzc2lvbi1kdW1teSBncmFiICovCi0tCXN0cnVjdCBjb25mX2dyYWIgKmdy YWJfc2Vzc2lvbl9kdW1teTsKLSAJLyogc2Vzc2lvbi1jbG9zZSBncmFiICovCi0gCXN0cnVjdCBj b25mX2dyYWIgKmdyYWJfc2Vzc2lvbl9jbG9zZTsKLSAJLyogdGVybWluYWwtbmV3IGdyYWIgKi8K LWRpZmYgLS1naXQgYS9zcmMva21zY29uX2R1bW15LmMgYi9zcmMva21zY29uX2R1bW15LmMKLWRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZmNhZmI2Yy4uMDAwMDAwMAotLS0tIGEvc3Jj L2ttc2Nvbl9kdW1teS5jCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxNTQgKzAsMCBAQAotLS8qCi0t ICoga21zY29uIC0gRHVtbXkgU2Vzc2lvbgotLSAqCi0tICogQ29weXJpZ2h0IChjKSAyMDEyIERh dmlkIEhlcnJtYW5uIDxkaC5oZXJybWFubkBnb29nbGVtYWlsLmNvbT4KLS0gKgotLSAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZwotLSAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMKLS0gKiAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLS0gKiB3aXRob3V0IGxpbWl0YXRp b24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0tICog ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvCi0tICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0tICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25z OgotLSAqCi0tICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv biBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLS0gKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS0gKgotLSAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0t ICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRgotLSAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLS0gKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQotLSAqIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs Ci0tICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUKLS0gKiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT IElOIFRIRSBTT0ZUV0FSRS4KLS0gKi8KLS0KLS0vKgotLSAqIER1bW15IFNlc3Npb24KLS0gKi8K LS0KLS0jaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUg PHN0cmluZy5oPgotLSNpbmNsdWRlICJrbXNjb25fZHVtbXkuaCIKLS0jaW5jbHVkZSAia21zY29u X3NlYXQuaCIKLS0jaW5jbHVkZSAic2hsL2RsaXN0LmgiCi0tI2luY2x1ZGUgInNobC9sb2cuaCIK LS0jaW5jbHVkZSAidmlkZW8vdmlkZW8uaCIKLS0KLS0jZGVmaW5lIExPR19TVUJTWVNURU0gImR1 bW15IgotLQotLXN0cnVjdCBkaXNwbGF5IHsKLS0Jc3RydWN0IHNobF9kbGlzdCBsaXN0OwotLQlz dHJ1Y3QgZGlzcGxheSAqZGlzcDsKLS19OwotLQotLXN0cnVjdCBrbXNjb25fZHVtbXkgewotLQlz dHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3Npb247Ci0tCXN0cnVjdCBzaGxfZGxpc3QgZGlzcGxh eXM7Ci0tCWJvb2wgYWN0aXZlOwotLX07Ci0tCi0tc3RhdGljIHZvaWQgZHVtbXlfcmVkcmF3KHN0 cnVjdCBrbXNjb25fZHVtbXkgKmR1bW15LCBzdHJ1Y3QgZGlzcGxheSAqZCkKLS17Ci0tCWRpc3Bs YXlfY2xlYXIoZC0+ZGlzcCwgMCwgMCwgMCk7Ci0tCWRpc3BsYXlfc3dhcChkLT5kaXNwKTsKLS19 Ci0tCi0tc3RhdGljIGludCBkdW1teV9zZXNzaW9uX2V2ZW50KHN0cnVjdCBrbXNjb25fc2Vzc2lv biAqc2Vzc2lvbiwgc3RydWN0IGttc2Nvbl9zZXNzaW9uX2V2ZW50ICpldiwKLS0JCQkgICAgICAg dm9pZCAqZGF0YSkKLS17Ci0tCXN0cnVjdCBrbXNjb25fZHVtbXkgKmR1bW15ID0gZGF0YTsKLS0J c3RydWN0IGRpc3BsYXkgKmQ7Ci0tCXN0cnVjdCBzaGxfZGxpc3QgKml0ZXI7Ci0tCi0tCXN3aXRj aCAoZXYtPnR5cGUpIHsKLS0JY2FzZSBLTVNDT05fU0VTU0lPTl9ESVNQTEFZX05FVzoKLS0JCWQg PSBtYWxsb2Moc2l6ZW9mKCpkKSk7Ci0tCQlpZiAoIWQpIHsKLS0JCQlsb2dfZXJyb3IoImNhbm5v dCBhbGxvY2F0ZSBtZW1vcnkgZm9yIG5ldyBkaXNwbGF5Iik7Ci0tCQkJYnJlYWs7Ci0tCQl9Ci0t CQltZW1zZXQoZCwgMCwgc2l6ZW9mKCpkKSk7Ci0tCQlkLT5kaXNwID0gZXYtPmRpc3A7Ci0tCQlz aGxfZGxpc3RfbGlua190YWlsKCZkdW1teS0+ZGlzcGxheXMsICZkLT5saXN0KTsKLS0JCWlmIChk dW1teS0+YWN0aXZlKQotLQkJCWR1bW15X3JlZHJhdyhkdW1teSwgZCk7Ci0tCQlicmVhazsKLS0J Y2FzZSBLTVNDT05fU0VTU0lPTl9ESVNQTEFZX0dPTkU6Ci0tCQlzaGxfZGxpc3RfZm9yX2VhY2go aXRlciwgJmR1bW15LT5kaXNwbGF5cykKLS0JCXsKLS0JCQlkID0gc2hsX2RsaXN0X2VudHJ5KGl0 ZXIsIHN0cnVjdCBkaXNwbGF5LCBsaXN0KTsKLS0JCQlpZiAoZC0+ZGlzcCAhPSBldi0+ZGlzcCkK LS0JCQkJY29udGludWU7Ci0tCi0tCQkJc2hsX2RsaXN0X3VubGluaygmZC0+bGlzdCk7Ci0tCQkJ ZnJlZShkKTsKLS0JCQlicmVhazsKLS0JCX0KLS0JCWJyZWFrOwotLQljYXNlIEtNU0NPTl9TRVNT SU9OX0RJU1BMQVlfUkVGUkVTSDoKLS0JCXNobF9kbGlzdF9mb3JfZWFjaChpdGVyLCAmZHVtbXkt PmRpc3BsYXlzKQotLQkJewotLQkJCWQgPSBzaGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0IGRp c3BsYXksIGxpc3QpOwotLQkJCWlmIChkLT5kaXNwICE9IGV2LT5kaXNwKQotLQkJCQljb250aW51 ZTsKLS0KLS0JCQlpZiAoZHVtbXktPmFjdGl2ZSkKLS0JCQkJZHVtbXlfcmVkcmF3KGR1bW15LCBk KTsKLS0JCQlicmVhazsKLS0JCX0KLS0JCWJyZWFrOwotLQljYXNlIEtNU0NPTl9TRVNTSU9OX0FD VElWQVRFOgotLQkJZHVtbXktPmFjdGl2ZSA9IHRydWU7Ci0tCQlzaGxfZGxpc3RfZm9yX2VhY2go aXRlciwgJmR1bW15LT5kaXNwbGF5cykKLS0JCXsKLS0JCQlkID0gc2hsX2RsaXN0X2VudHJ5KGl0 ZXIsIHN0cnVjdCBkaXNwbGF5LCBsaXN0KTsKLS0JCQlkdW1teV9yZWRyYXcoZHVtbXksIGQpOwot LQkJfQotLQkJYnJlYWs7Ci0tCWNhc2UgS01TQ09OX1NFU1NJT05fREVBQ1RJVkFURToKLS0JCWR1 bW15LT5hY3RpdmUgPSBmYWxzZTsKLS0JCWJyZWFrOwotLQljYXNlIEtNU0NPTl9TRVNTSU9OX1VO UkVHSVNURVI6Ci0tCQl3aGlsZSAoIXNobF9kbGlzdF9lbXB0eSgmZHVtbXktPmRpc3BsYXlzKSkg ewotLQkJCWQgPSBzaGxfZGxpc3RfZW50cnkoZHVtbXktPmRpc3BsYXlzLnByZXYsIHN0cnVjdCBk aXNwbGF5LCBsaXN0KTsKLS0JCQlzaGxfZGxpc3RfdW5saW5rKCZkLT5saXN0KTsKLS0JCQlmcmVl KGQpOwotLQkJfQotLQotLQkJZnJlZShkdW1teSk7Ci0tCQlicmVhazsKLS0JfQotLQotLQlyZXR1 cm4gMDsKLS19Ci0tCi0taW50IGttc2Nvbl9kdW1teV9yZWdpc3RlcihzdHJ1Y3Qga21zY29uX3Nl c3Npb24gKipvdXQsIHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLS17Ci0tCXN0cnVjdCBrbXNj b25fZHVtbXkgKmR1bW15OwotLQlpbnQgcmV0OwotLQotLQlpZiAoIW91dCB8fCAhc2VhdCkKLS0J CXJldHVybiAtRUlOVkFMOwotLQotLQlkdW1teSA9IG1hbGxvYyhzaXplb2YoKmR1bW15KSk7Ci0t CWlmICghZHVtbXkpCi0tCQlyZXR1cm4gLUVOT01FTTsKLS0JbWVtc2V0KGR1bW15LCAwLCBzaXpl b2YoKmR1bW15KSk7Ci0tCXNobF9kbGlzdF9pbml0KCZkdW1teS0+ZGlzcGxheXMpOwotLQotLQly ZXQgPSBrbXNjb25fc2VhdF9yZWdpc3Rlcl9zZXNzaW9uKHNlYXQsICZkdW1teS0+c2Vzc2lvbiwg ZHVtbXlfc2Vzc2lvbl9ldmVudCwgZHVtbXkpOwotLQlpZiAocmV0KSB7Ci0tCQlsb2dfZXJyb3Io ImNhbm5vdCByZWdpc3RlciBzZXNzaW9uIGZvciBkdW1teTogJWQiLCByZXQpOwotLQkJZ290byBl cnJfZnJlZTsKLS0JfQotLQotLQkqb3V0ID0gZHVtbXktPnNlc3Npb247Ci0tCWxvZ19kZWJ1Zygi bmV3IGR1bW15IG9iamVjdCAlcCIsIGR1bW15KTsKLS0JcmV0dXJuIDA7Ci0tCi0tZXJyX2ZyZWU6 Ci0tCWZyZWUoZHVtbXkpOwotLQlyZXR1cm4gcmV0OwotLX0KLWRpZmYgLS1naXQgYS9zcmMva21z Y29uX2lzc3VlLmMgYi9zcmMva21zY29uX2lzc3VlLmMKLWluZGV4IDM4NDZmODkuLmJmZmI3OTIg MTAwNjQ0Ci0tLS0gYS9zcmMva21zY29uX2lzc3VlLmMKLSsrKyBiL3NyYy9rbXNjb25faXNzdWUu YwotQEAgLTM2LDE2ICszNiw2IEBACi0gLyogQ2FwIHRvdGFsIGNvbGxlY3RlZCBpc3N1ZSB0ZXh0 IHRvIHByZXZlbnQgcnVuYXdheSBhbGxvY2F0aW9uLiAqLwotICNkZWZpbmUgSVNTVUVfTUFYX1NJ WkUgKDI1NnUgKiAxMDI0dSkKLSAKLS0vKgotLSAqIERlZmF1bHQgc2VhcmNoIHBhdGgsIG1hdGNo aW5nIGFnZXR0eSdzIGRlZmF1bHQ6Ci0tICogICAvZXRjL2lzc3VlOi9ldGMvaXNzdWUuZAotLSAq Ci0tICogRGlzdHJvcyBjYW4gb3ZlcnJpZGUgdGhpcyB3aXRoIC0taXNzdWUtcGF0aCBvciB0aGUg aXNzdWUtcGF0aCBjb25maWcKLS0gKiBvcHRpb24gdXNpbmcgYSBjb2xvbi1zZXBhcmF0ZWQgbGlz dC4gIFBsYWluIGZpbGVzIGFyZSByZWFkIGRpcmVjdGx5OwotLSAqIGRpcmVjdG9yaWVzIGFyZSBz Y2FubmVkIGZvciAqLmlzc3VlIGZpbGVzIGluIGxleGljb2dyYXBoaWMgb3JkZXIuCi0tICovCi0t I2RlZmluZSBJU1NVRV9ERUZBVUxUX1BBVEggIi9ldGMvaXNzdWU6L2V0Yy9pc3N1ZS5kIgotLQot IC8qIENvbG9yIGVzY2FwZSBjb2RlcyAqLwotIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAjZGVmaW5l IFVMX0NPTE9SX1JFU0VUCQkiWzBtIgotZGlmZiAtLWdpdCBhL3NyYy9rbXNjb25faXNzdWUuaCBi L3NyYy9rbXNjb25faXNzdWUuaAotaW5kZXggZjc0MzgyYS4uODkwMGM5NSAxMDA2NDQKLS0tLSBh L3NyYy9rbXNjb25faXNzdWUuaAotKysrIGIvc3JjL2ttc2Nvbl9pc3N1ZS5oCi1AQCAtMjksNiAr MjksMTUgQEAKLSAjaW5jbHVkZSA8bGlidHNtLmg+Ci0gI2luY2x1ZGUgInB0eS5oIgotIAotKy8q Ci0rICogRGVmYXVsdCBzZWFyY2ggcGF0aCwgbWF0Y2hpbmcgYWdldHR5J3MgZGVmYXVsdC4KLSsg KgotKyAqIERpc3Ryb3MgY2FuIG92ZXJyaWRlIHRoaXMgd2l0aCAtLWlzc3VlLXBhdGggb3IgdGhl IGlzc3VlLXBhdGggY29uZmlnCi0rICogb3B0aW9uIHVzaW5nIGEgY29sb24tc2VwYXJhdGVkIGxp c3QuICBQbGFpbiBmaWxlcyBhcmUgcmVhZCBkaXJlY3RseTsKLSsgKiBkaXJlY3RvcmllcyBhcmUg c2Nhbm5lZCBmb3IgKi5pc3N1ZSBmaWxlcyBpbiBsZXhpY29ncmFwaGljIG9yZGVyLgotKyAqLwot KyNkZWZpbmUgSVNTVUVfREVGQVVMVF9QQVRIICIvZXRjL2lzc3VlOi9ldGMvaXNzdWUuZCIKLSsK LSB2b2lkIGttc2Nvbl9pc3N1ZV93cml0ZShzdHJ1Y3QgdHNtX3Z0ZSAqdnRlLCBzdHJ1Y3Qga21z Y29uX3B0eSAqcHR5LCBjb25zdCBjaGFyICpzZWFyY2hfcGF0aCk7Ci0gCi0gI2VuZGlmIC8qIEtN U0NPTl9JU1NVRV9IICovCi1kaWZmIC0tZ2l0IGEvc3JjL2ttc2Nvbl9tYWluLmMgYi9zcmMva21z Y29uX21haW4uYwotaW5kZXggNmZiNTdhOC4uODEzNDNmNCAxMDA2NDQKLS0tLSBhL3NyYy9rbXNj b25fbWFpbi5jCi0rKysgYi9zcmMva21zY29uX21haW4uYwotQEAgLTMxLDYgKzMxLDcgQEAKLSAj aW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN5cy9zaWduYWxmZC5oPgotICNpbmNsdWRl ICJjb25mLmgiCi0rI2luY2x1ZGUgImRidXMuaCIKLSAjaW5jbHVkZSAia21zY29uX2NvbmYuaCIK LSAjaW5jbHVkZSAia21zY29uX3NlYXQuaCIKLSAjaW5jbHVkZSAicmVuZGVyL3RleHQuaCIKLUBA IC0zOSw2ICs0MCw4IEBACi0gI2luY2x1ZGUgInNobC9tb2R1bGUuaCIKLSAjaW5jbHVkZSAidmlk ZW8vdmlkZW8uaCIKLSAKLSsjZGVmaW5lIExPR19TVUJTWVNURU0gImttc2NvbiIKLSsKLSBzdHJ1 Y3Qga21zY29uX2FwcCB7Ci0gCXN0cnVjdCBjb25mX2N0eCAqY29uZl9jdHg7Ci0gCXN0cnVjdCBr bXNjb25fY29uZl90ICpjb25mOwotQEAgLTQ5LDYgKzUyLDcgQEAgc3RydWN0IGttc2Nvbl9hcHAg ewotIAlzdHJ1Y3QgY29uZl9jdHggKnNlYXRfY3R4OwotIAlzdHJ1Y3Qga21zY29uX2NvbmZfdCAq c2VhdF9jb25mOwotIAlzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQ7Ci0rCXN0cnVjdCBrbXNjb25f ZGJ1cyAqZGJ1czsKLSB9OwotIAotIHN0YXRpYyBpbnQgYXBwX3NlYXRfZXZlbnQoc3RydWN0IGtt c2Nvbl9zZWF0ICpzLCB1bnNpZ25lZCBpbnQgZXZlbnQsIHZvaWQgKmRhdGEpCi1AQCAtMTEyLDYg KzExNiwzMCBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2FwcChzdHJ1Y3Qga21zY29uX2FwcCAqYXBw KQotIAlldl9lbG9vcF91bnJlZ2lzdGVyX3NpZ25hbF9jYihhcHAtPmVsb29wLCBTSUdJTlQsIGFw cF9zaWdfZ2VuZXJpYywgYXBwKTsKLSAJZXZfZWxvb3BfdW5yZWdpc3Rlcl9zaWduYWxfY2IoYXBw LT5lbG9vcCwgU0lHVEVSTSwgYXBwX3NpZ19nZW5lcmljLCBhcHApOwotIAlldl9lbG9vcF91bnJl ZihhcHAtPmVsb29wKTsKLSsJa21zY29uX2RidXNfZnJlZShhcHAtPmRidXMpOwotK30KLSsKLStz dGF0aWMgdm9pZCB1cGRhdGVfeGtiX2xheW91dChjb25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hh ciAqbGF5b3V0LCBjb25zdCBjaGFyICp2YXJpYW50LAotKwkJCSAgICAgIGNvbnN0IGNoYXIgKm9w dGlvbnMsIHZvaWQgKmRhdGEpCi0rewotKwlzdHJ1Y3Qga21zY29uX2FwcCAqYXBwID0gZGF0YTsK LSsKLSsJbG9nX2RlYnVnKCJ1cGRhdGluZyB4a2IgbGF5b3V0OiAlcywgJXMsICVzLCAlcyIsIG1v ZGVsLCBsYXlvdXQsIHZhcmlhbnQsIG9wdGlvbnMpOwotKwlpZiAoa21zY29uX3NlYXRfdXBkYXRl X3hrYl9sYXlvdXQoYXBwLT5zZWF0LCBtb2RlbCwgbGF5b3V0LCB2YXJpYW50LCBvcHRpb25zKSkK LSsJCWxvZ19lcnJvcigiY2Fubm90IHVwZGF0ZSB4a2IgbGF5b3V0Iik7Ci0rfQotKwotK3N0YXRp YyB2b2lkIGxpc3Rlbl90b19kYnVzX2xvY2FsZTEoc3RydWN0IGttc2Nvbl9hcHAgKmFwcCkKLSt7 Ci0rCWludCByZXQ7Ci0rCi0rCWlmIChhcHAtPmNvbmYtPnhrYl9rZXltYXAgfHwgYXBwLT5jb25m LT54a2JfbW9kZWwgfHwgYXBwLT5jb25mLT54a2JfbGF5b3V0IHx8Ci0rCSAgICBhcHAtPmNvbmYt PnhrYl92YXJpYW50IHx8IGFwcC0+Y29uZi0+eGtiX29wdGlvbnMpCi0rCQlyZXR1cm47Ci0rCi0r CXJldCA9IGttc2Nvbl9kYnVzX2xpc3Rlbl9sb2NhbGUxKGFwcC0+ZGJ1cywgdXBkYXRlX3hrYl9s YXlvdXQsIGFwcCk7Ci0rCWlmIChyZXQpCi0rCQlsb2dfd2FybmluZygiY2Fubm90IGxpc3RlbiB0 byBsb2NhbGUxOiAlZCIsIHJldCk7Ci0gfQotIAotIHN0YXRpYyBpbnQgc2V0dXBfYXBwKHN0cnVj dCBrbXNjb25fYXBwICphcHApCi1AQCAtMTQyLDYgKzE3MCwxMSBAQCBzdGF0aWMgaW50IHNldHVw X2FwcChzdHJ1Y3Qga21zY29uX2FwcCAqYXBwKQotIAkJZ290byBlcnJfYXBwOwotIAl9Ci0gCi0r CWFwcC0+ZGJ1cyA9IGttc2Nvbl9kYnVzX25ldyhhcHAtPmVsb29wKTsKLSsJaWYgKGFwcC0+ZGJ1 cykgewotKwkJa21zY29uX2RidXNfc2V0X3hrYl9lbnZfZnJvbV9sb2NhbGUxKGFwcC0+ZGJ1cyk7 Ci0rCQlsaXN0ZW5fdG9fZGJ1c19sb2NhbGUxKGFwcCk7Ci0rCX0KLSAJcmV0dXJuIDA7Ci0gCi0g ZXJyX2FwcDoKLWRpZmYgLS1naXQgYS9zcmMva21zY29uX3NlYXQuYyBiL3NyYy9rbXNjb25fc2Vh dC5jCi1pbmRleCA3YjY3NTlhLi45MWI4ZGI4IDEwMDY0NAotLS0tIGEvc3JjL2ttc2Nvbl9zZWF0 LmMKLSsrKyBiL3NyYy9rbXNjb25fc2VhdC5jCi1AQCAtMzksNyArMzksNiBAQAotICNpbmNsdWRl ICJjb25mLmgiCi0gI2luY2x1ZGUgImlucHV0L2lucHV0LmgiCi0gI2luY2x1ZGUgImttc2Nvbl9j b25mLmgiCi0tI2luY2x1ZGUgImttc2Nvbl9kdW1teS5oIgotICNpbmNsdWRlICJrbXNjb25fc2Vh dC5oIgotICNpbmNsdWRlICJrbXNjb25fdGVybWluYWwuaCIKLSAjaW5jbHVkZSAic2hsL2RsaXN0 LmgiCi1AQCAtNTMsMTcgKzUyLDEyIEBACi0gCi0gc3RydWN0IGttc2Nvbl9zZXNzaW9uIHsKLSAJ c3RydWN0IHNobF9kbGlzdCBsaXN0OwotLQl1bnNpZ25lZCBsb25nIHJlZjsKLSAJc3RydWN0IGtt c2Nvbl9zZWF0ICpzZWF0OwotIAotLQlib29sIGVuYWJsZWQ7Ci0gCWJvb2wgZm9yZWdyb3VuZDsK LS0JYm9vbCBkZWFjdGl2YXRpbmc7Ci0gCi0gCXN0cnVjdCBldl90aW1lciAqdGltZXI7Ci0tCi0t CWttc2Nvbl9zZXNzaW9uX2NiX3QgY2I7Ci0tCXZvaWQgKmRhdGE7Ci0rCXN0cnVjdCBrbXNjb25f dGVybWluYWwgKnRlcm07Ci0gfTsKLSAKLSBzdHJ1Y3Qga21zY29uX2Rpc3BsYXkgewotQEAgLTg1 LDEyICs3OSw2IEBAIHN0cnVjdCBrbXNjb25fdmlkZW8gewotIAlib29sIGF3YWtlOwotIH07Ci0g Ci0tZW51bSBrbXNjb25fYXN5bmNfc2NoZWR1bGUgewotLQlTQ0hFRFVMRV9TV0lUQ0gsCi0tCVND SEVEVUxFX1ZULAotLQlTQ0hFRFVMRV9VTlJFR0lTVEVSLAotLX07Ci0tCi0gc3RydWN0IGttc2Nv bl9zZWF0IHsKLSAJc3RydWN0IGV2X2Vsb29wICplbG9vcDsKLSAJc3RydWN0IGNvbmZfY3R4ICpj b25mX2N0eDsKLUBAIC0xMTAsMTAgKzk4LDYgQEAgc3RydWN0IGttc2Nvbl9zZWF0IHsKLSAJYm9v bCBhd2FrZTsKLSAJYm9vbCBmb3JlZ3JvdW5kOwotIAlzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKmN1 cnJlbnRfc2VzczsKLS0Jc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzY2hlZHVsZWRfc2VzczsKLS0J c3RydWN0IGttc2Nvbl9zZXNzaW9uICpkdW1teV9zZXNzOwotLQotLQl1bnNpZ25lZCBpbnQgYXN5 bmNfc2NoZWR1bGU7Ci0gCi0gCS8qIERQTVMgdGltZW91dCBtYW5hZ2VtZW50ICovCi0gCXN0cnVj dCBldl90aW1lciAqZHBtc190aW1lcjsKLUBAIC0xMzMsNDggKzExNywxMCBAQCBzdGF0aWMgaW50 IGttc2Nvbl9zZWF0X2FkZF92aWRlbyhzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIGVudW0gdXRl cm1fbW9uaXRvcl9kZQotIHN0YXRpYyB2b2lkIGttc2Nvbl9zZWF0X3JlbW92ZV92aWRlbyhzdHJ1 Y3Qga21zY29uX3NlYXQgKnNlYXQsIHZvaWQgKmRhdGEpOwotIHN0YXRpYyB2b2lkIGttc2Nvbl9z ZWF0X3BvbGxfdmlkZW8odm9pZCAqZGF0YSk7Ci0gCi0tc3RhdGljIGludCBzZXNzaW9uX2NhbGwo c3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzLCB1bnNpZ25lZCBpbnQgZXZlbnQsIHN0cnVjdCBk aXNwbGF5ICpkaXNwKQotLXsKLS0Jc3RydWN0IGttc2Nvbl9zZXNzaW9uX2V2ZW50IGV2OwotLQot LQlpZiAoIXNlc3MtPmNiKQotLQkJcmV0dXJuIDA7Ci0tCi0tCW1lbXNldCgmZXYsIDAsIHNpemVv ZihldikpOwotLQlldi50eXBlID0gZXZlbnQ7Ci0tCWV2LmRpc3AgPSBkaXNwOwotLQlyZXR1cm4g c2Vzcy0+Y2Ioc2VzcywgJmV2LCBzZXNzLT5kYXRhKTsKLS19Ci0tCi0tc3RhdGljIGludCBzZXNz aW9uX2NhbGxfYWN0aXZhdGUoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQotLXsKLS0JbG9n X2RlYnVnKCJhY3RpdmF0ZSBzZXNzaW9uICVwIiwgc2Vzcyk7Ci0tCXJldHVybiBzZXNzaW9uX2Nh bGwoc2VzcywgS01TQ09OX1NFU1NJT05fQUNUSVZBVEUsIE5VTEwpOwotLX0KLS0KLS1zdGF0aWMg aW50IHNlc3Npb25fY2FsbF9kZWFjdGl2YXRlKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcykK LS17Ci0tCWxvZ19kZWJ1ZygiZGVhY3RpdmF0ZSBzZXNzaW9uICVwIiwgc2Vzcyk7Ci0tCXJldHVy biBzZXNzaW9uX2NhbGwoc2VzcywgS01TQ09OX1NFU1NJT05fREVBQ1RJVkFURSwgTlVMTCk7Ci0t fQotLQotLXN0YXRpYyB2b2lkIHNlc3Npb25fY2FsbF9kaXNwbGF5X25ldyhzdHJ1Y3Qga21zY29u X3Nlc3Npb24gKnNlc3MsIHN0cnVjdCBkaXNwbGF5ICpkaXNwKQotLXsKLS0Jc2Vzc2lvbl9jYWxs KHNlc3MsIEtNU0NPTl9TRVNTSU9OX0RJU1BMQVlfTkVXLCBkaXNwKTsKLS19Ci0tCi0tc3RhdGlj IHZvaWQgc2Vzc2lvbl9jYWxsX2Rpc3BsYXlfZ29uZShzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNl c3MsIHN0cnVjdCBkaXNwbGF5ICpkaXNwKQotLXsKLS0Jc2Vzc2lvbl9jYWxsKHNlc3MsIEtNU0NP Tl9TRVNTSU9OX0RJU1BMQVlfR09ORSwgZGlzcCk7Ci0tfQotLQotLXN0YXRpYyB2b2lkIHNlc3Np b25fY2FsbF9kaXNwbGF5X3JlZnJlc2goc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzLCBzdHJ1 Y3QgZGlzcGxheSAqZGlzcCkKLS17Ci0tCXNlc3Npb25fY2FsbChzZXNzLCBLTVNDT05fU0VTU0lP Tl9ESVNQTEFZX1JFRlJFU0gsIGRpc3ApOwotLX0KLS0KLSAvKiBGb3J3YXJkIGRlY2xhcmF0aW9u ICovCi0gc3RhdGljIHZvaWQgc2VhdF9kcG1zX3Jlc2V0X3RpbWVyKHN0cnVjdCBrbXNjb25fc2Vh dCAqc2VhdCk7Ci0rc3RhdGljIHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqa21zY29uX3NlYXRfbmV3 X3Nlc3Npb24oc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KTsKLStzdGF0aWMgdm9pZCBrbXNjb25f c2Vzc2lvbl91bnJlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcyk7Ci0gCi0gc3Rh dGljIHZvaWQgYWN0aXZhdGVfZGlzcGxheShzdHJ1Y3Qga21zY29uX2Rpc3BsYXkgKmQpCi0gewot QEAgLTIwMywxMiArMTQ5LDEyIEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlX2Rpc3BsYXkoc3RydWN0 IGttc2Nvbl9kaXNwbGF5ICpkKQotIAkJc2hsX2RsaXN0X2Zvcl9lYWNoX3NhZmUoaXRlciwgdG1w LCAmc2VhdC0+c2Vzc2lvbnMpCi0gCQl7Ci0gCQkJcyA9IHNobF9kbGlzdF9lbnRyeShpdGVyLCBz dHJ1Y3Qga21zY29uX3Nlc3Npb24sIGxpc3QpOwotLQkJCXNlc3Npb25fY2FsbF9kaXNwbGF5X25l dyhzLCBkLT5kaXNwKTsKLSsJCQl0ZXJtaW5hbF9hZGRfZGlzcGxheShzLT50ZXJtLCBkLT5kaXNw KTsKLSAJCX0KLSAJfQotIH0KLSAKLS1zdGF0aWMgaW50IHNlYXRfZ29fZm9yZWdyb3VuZChzdHJ1 Y3Qga21zY29uX3NlYXQgKnNlYXQsIGJvb2wgZm9yY2UpCi0rc3RhdGljIGludCBzZWF0X2dvX2Zv cmVncm91bmQoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQotIHsKLSAJc3RydWN0IHNobF9kbGlz dCAqaXRlciwgKnRtcDsKLSAJc3RydWN0IGttc2Nvbl92aWRlbyAqdmlkOwotQEAgLTIxNyw3ICsx NjMsNyBAQCBzdGF0aWMgaW50IHNlYXRfZ29fZm9yZWdyb3VuZChzdHJ1Y3Qga21zY29uX3NlYXQg KnNlYXQsIGJvb2wgZm9yY2UpCi0gCi0gCWlmIChzZWF0LT5mb3JlZ3JvdW5kKQotIAkJcmV0dXJu IDA7Ci0tCWlmICghc2VhdC0+YXdha2UgfHwgKCFmb3JjZSAmJiBzZWF0LT5jdXJyZW50X3Nlc3Mp KQotKwlpZiAoIXNlYXQtPmF3YWtlKQotIAkJcmV0dXJuIC1FQlVTWTsKLSAKLSAJc2VhdC0+Zm9y ZWdyb3VuZCA9IHRydWU7Ci1AQCAtMjUxLDE0ICsxOTcsMTQgQEAgc3RhdGljIGludCBzZWF0X2dv X2ZvcmVncm91bmQoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LCBib29sIGZvcmNlKQotIAlyZXR1 cm4gMDsKLSB9Ci0gCi0tc3RhdGljIGludCBzZWF0X2dvX2JhY2tncm91bmQoc3RydWN0IGttc2Nv bl9zZWF0ICpzZWF0LCBib29sIGZvcmNlKQotK3N0YXRpYyBpbnQgc2VhdF9nb19iYWNrZ3JvdW5k KHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLSB7Ci0gCXN0cnVjdCBzaGxfZGxpc3QgKml0ZXI7 Ci0gCXN0cnVjdCBrbXNjb25fdmlkZW8gKnZpZDsKLSAKLSAJaWYgKCFzZWF0LT5mb3JlZ3JvdW5k KQotIAkJcmV0dXJuIDA7Ci0tCWlmICghc2VhdC0+YXdha2UgfHwgKCFmb3JjZSAmJiBzZWF0LT5j dXJyZW50X3Nlc3MpKQotKwlpZiAoIXNlYXQtPmF3YWtlKQotIAkJcmV0dXJuIC1FQlVTWTsKLSAK LSAJc2hsX2RsaXN0X2Zvcl9lYWNoKGl0ZXIsICZzZWF0LT52aWRlb3MpCi1AQCAtMjcxLDI1ICsy MTcsMTUgQEAgc3RhdGljIGludCBzZWF0X2dvX2JhY2tncm91bmQoc3RydWN0IGttc2Nvbl9zZWF0 ICpzZWF0LCBib29sIGZvcmNlKQotIAlyZXR1cm4gMDsKLSB9Ci0gCi0tc3RhdGljIGludCBzZWF0 X2dvX2FzbGVlcChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIGJvb2wgZm9yY2UpCi0rc3RhdGlj IGludCBzZWF0X2dvX2FzbGVlcChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCi0gewotLQlpbnQg ZXJyID0gMDsKLS0KLSAJaWYgKCFzZWF0LT5hd2FrZSkKLSAJCXJldHVybiAwOwotLQlpZiAoc2Vh dC0+Y3VycmVudF9zZXNzIHx8IHNlYXQtPmZvcmVncm91bmQpIHsKLS0JCWlmIChmb3JjZSkgewot LQkJCXNlYXQtPmZvcmVncm91bmQgPSBmYWxzZTsKLS0JCQlzZWF0LT5jdXJyZW50X3Nlc3MgPSBO VUxMOwotLQkJCWVyciA9IC1FQlVTWTsKLS0JCX0gZWxzZSB7Ci0tCQkJcmV0dXJuIC1FQlVTWTsK LS0JCX0KLS0JfQotKwotIAlzZWF0LT5hd2FrZSA9IGZhbHNlOwotIAlpbnB1dF9zbGVlcChzZWF0 LT5pbnB1dCk7Ci0gCi0tCXJldHVybiBlcnI7Ci0rCXJldHVybiAwOwotIH0KLSAKLSBzdGF0aWMg aW50IHNlYXRfZ29fYXdha2Uoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQotQEAgLTMxMywxOTYg KzI0OSw1MiBAQCBzdGF0aWMgaW50IHNlYXRfZ29fYXdha2Uoc3RydWN0IGttc2Nvbl9zZWF0ICpz ZWF0KQotIAlyZXR1cm4gMDsKLSB9Ci0gCi0tc3RhdGljIGludCBzZWF0X3J1bihzdHJ1Y3Qga21z Y29uX3NlYXQgKnNlYXQpCi0rc3RhdGljIHZvaWQgc2VhdF9zd2l0Y2goc3RydWN0IGttc2Nvbl9z ZWF0ICpzZWF0LCBzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKm5ldykKLSB7Ci0tCWludCByZXQ7Ci0t CXN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzc2lvbjsKLS0KLS0JaWYgKCFzZWF0LT5hd2FrZSkK LS0JCXJldHVybiAtRUJVU1k7Ci0tCWlmIChzZWF0LT5jdXJyZW50X3Nlc3MpCi0tCQlyZXR1cm4g MDsKLS0KLS0JaWYgKCFzZWF0LT5zY2hlZHVsZWRfc2VzcykgewotLQkJbG9nX2RlYnVnKCJubyBz ZXNzaW9uIHNjaGVkdWxlZCB0byBydW4gKG51bSAlenUpIiwgc2VhdC0+c2Vzc2lvbl9jb3VudCk7 Ci0tCQlyZXR1cm4gLUVOT0VOVDsKLS0JfQotLQlzZXNzaW9uID0gc2VhdC0+c2NoZWR1bGVkX3Nl c3M7Ci0tCi0tCWlmIChzZXNzaW9uLT5mb3JlZ3JvdW5kICYmICFzZWF0LT5mb3JlZ3JvdW5kKSB7 Ci0tCQlyZXQgPSBzZWF0X2dvX2ZvcmVncm91bmQoc2VhdCwgZmFsc2UpOwotLQkJaWYgKHJldCkg ewotLQkJCWxvZ193YXJuaW5nKCJjYW5ub3QgcHV0IHNlYXQgJXMgaW50byBmb3JlZ3JvdW5kIGZv ciBzZXNzaW9uICVwIiwgc2VhdC0+bmFtZSwKLS0JCQkJICAgIHNlc3Npb24pOwotLQkJCXJldHVy biByZXQ7Ci0tCQl9Ci0tCX0gZWxzZSBpZiAoIXNlc3Npb24tPmZvcmVncm91bmQgJiYgc2VhdC0+ Zm9yZWdyb3VuZCkgewotLQkJcmV0ID0gc2VhdF9nb19iYWNrZ3JvdW5kKHNlYXQsIGZhbHNlKTsK LS0JCWlmIChyZXQpIHsKLS0JCQlsb2dfd2FybmluZygiY2Fubm90IHB1dCBzZWF0ICVzIGludG8g YmFja2dyb3VuZCBmb3Igc2Vzc2lvbiAlcCIsIHNlYXQtPm5hbWUsCi0tCQkJCSAgICBzZXNzaW9u KTsKLS0JCQlyZXR1cm4gcmV0OwotLQkJfQotLQl9Ci0tCi0tCXJldCA9IHNlc3Npb25fY2FsbF9h Y3RpdmF0ZShzZXNzaW9uKTsKLS0JaWYgKHJldCkgewotLQkJbG9nX3dhcm5pbmcoImNhbm5vdCBh Y3RpdmF0ZSBzZXNzaW9uICVwOiAlZCIsIHNlc3Npb24sIHJldCk7Ci0tCQlyZXR1cm4gcmV0Owot LQl9Ci0tCi0tCXNlYXQtPmN1cnJlbnRfc2VzcyA9IHNlc3Npb247Ci0tCi0tCXJldHVybiAwOwot LX0KLS0KLS1zdGF0aWMgdm9pZCBzZXNzaW9uX2RlYWN0aXZhdGUoc3RydWN0IGttc2Nvbl9zZXNz aW9uICpzZXNzKQotLXsKLS0JaWYgKHNlc3MtPnNlYXQtPmN1cnJlbnRfc2VzcyAhPSBzZXNzKQot KwlpZiAoc2VhdC0+Y3VycmVudF9zZXNzID09IG5ldykKLSAJCXJldHVybjsKLSAKLS0Jc2Vzcy0+ c2VhdC0+YXN5bmNfc2NoZWR1bGUgPSBTQ0hFRFVMRV9TV0lUQ0g7Ci0tCXNlc3MtPmRlYWN0aXZh dGluZyA9IGZhbHNlOwotLQlzZXNzLT5zZWF0LT5jdXJyZW50X3Nlc3MgPSBOVUxMOwotLX0KLS0K LS1zdGF0aWMgaW50IHNlYXRfcGF1c2Uoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LCBib29sIGZv cmNlKQotLXsKLS0JaW50IHJldDsKLS0KLS0JaWYgKCFzZWF0LT5jdXJyZW50X3Nlc3MpCi0tCQly ZXR1cm4gMDsKLS0KLS0Jc2VhdC0+Y3VycmVudF9zZXNzLT5kZWFjdGl2YXRpbmcgPSB0cnVlOwot LQlyZXQgPSBzZXNzaW9uX2NhbGxfZGVhY3RpdmF0ZShzZWF0LT5jdXJyZW50X3Nlc3MpOwotLQlp ZiAocmV0KSB7Ci0tCQlpZiAocmV0ID09IC1FSU5QUk9HUkVTUykKLS0JCQlsb2dfZGVidWcoInBl bmRpbmcgZGVhY3RpdmF0aW9uIGZvciBzZXNzaW9uICVwIiwgc2VhdC0+Y3VycmVudF9zZXNzKTsK LS0JCWVsc2UKLS0JCQlsb2dfd2FybmluZygiY2Fubm90IGRlYWN0aXZhdGUgc2Vzc2lvbiAlcDog JWQiLCBzZWF0LT5jdXJyZW50X3Nlc3MsIHJldCk7Ci0tCQlpZiAoIWZvcmNlKQotLQkJCXJldHVy biByZXQ7Ci0tCX0KLS0KLS0Jc2Vzc2lvbl9kZWFjdGl2YXRlKHNlYXQtPmN1cnJlbnRfc2Vzcyk7 Ci0tCi0tCXJldHVybiByZXQ7Ci0tfQotLQotLXN0YXRpYyB2b2lkIHNlYXRfcmVzY2hlZHVsZShz dHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCi0tewotLQlzdHJ1Y3Qgc2hsX2RsaXN0ICppdGVyLCAq c3RhcnQ7Ci0tCXN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzczsKLS0KLS0JaWYgKHNlYXQtPnNj aGVkdWxlZF9zZXNzICYmIHNlYXQtPnNjaGVkdWxlZF9zZXNzLT5lbmFibGVkKQotLQkJcmV0dXJu OwotLQotLQlpZiAoc2VhdC0+Y3VycmVudF9zZXNzICYmIHNlYXQtPmN1cnJlbnRfc2Vzcy0+ZW5h YmxlZCkgewotLQkJc2VhdC0+c2NoZWR1bGVkX3Nlc3MgPSBzZWF0LT5jdXJyZW50X3Nlc3M7Ci0t CQlyZXR1cm47Ci0tCX0KLSsJbG9nX2RlYnVnKCJzd2l0Y2ggc2Vzc2lvbiBmcm9tICVwIHRvICVw IG9uIHNlYXQgJXMiLCBzZWF0LT5jdXJyZW50X3Nlc3MsIG5ldywgc2VhdC0+bmFtZSk7Ci0gCi0g CWlmIChzZWF0LT5jdXJyZW50X3Nlc3MpCi0tCQlzdGFydCA9ICZzZWF0LT5jdXJyZW50X3Nlc3Mt Pmxpc3Q7Ci0tCWVsc2UKLS0JCXN0YXJ0ID0gJnNlYXQtPnNlc3Npb25zOwotLQotLQlzaGxfZGxp c3RfZm9yX2VhY2hfYnV0X29uZShpdGVyLCBzdGFydCwgJnNlYXQtPnNlc3Npb25zKQotLQl7Ci0t CQlzZXNzID0gc2hsX2RsaXN0X2VudHJ5KGl0ZXIsIHN0cnVjdCBrbXNjb25fc2Vzc2lvbiwgbGlz dCk7Ci0tCQlpZiAoc2VzcyA9PSBzZWF0LT5kdW1teV9zZXNzIHx8ICFzZXNzLT5lbmFibGVkKQot LQkJCWNvbnRpbnVlOwotLQkJc2VhdC0+c2NoZWR1bGVkX3Nlc3MgPSBzZXNzOwotLQkJcmV0dXJu OwotKwkJdGVybWluYWxfZGVhY3RpdmF0ZShzZWF0LT5jdXJyZW50X3Nlc3MtPnRlcm0pOwotKwlp ZiAobmV3KSB7Ci0rCQlpZiAobmV3LT5mb3JlZ3JvdW5kICYmICFzZWF0LT5mb3JlZ3JvdW5kKSB7 Ci0rCQkJc2VhdF9nb19mb3JlZ3JvdW5kKHNlYXQpOwotKwkJfSBlbHNlIGlmICghbmV3LT5mb3Jl Z3JvdW5kICYmIHNlYXQtPmZvcmVncm91bmQpIHsKLSsJCQlzZWF0X2dvX2JhY2tncm91bmQoc2Vh dCk7Ci0rCQl9Ci0rCQl0ZXJtaW5hbF9hY3RpdmF0ZShuZXctPnRlcm0pOwotIAl9Ci0tCi0tCWlm IChzZWF0LT5kdW1teV9zZXNzICYmIHNlYXQtPmR1bW15X3Nlc3MtPmVuYWJsZWQpCi0tCQlzZWF0 LT5zY2hlZHVsZWRfc2VzcyA9IHNlYXQtPmR1bW15X3Nlc3M7Ci0tCWVsc2UKLS0JCXNlYXQtPnNj aGVkdWxlZF9zZXNzID0gTlVMTDsKLS19Ci0tCi0tc3RhdGljIGJvb2wgc2VhdF9oYXNfc2NoZWR1 bGUoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQotLXsKLS0JcmV0dXJuIHNlYXQtPnNjaGVkdWxl ZF9zZXNzICYmIHNlYXQtPnNjaGVkdWxlZF9zZXNzICE9IHNlYXQtPmN1cnJlbnRfc2VzczsKLS19 Ci0tCi0tc3RhdGljIGludCBzZWF0X3N3aXRjaChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCi0t ewotLQlpbnQgcmV0OwotLQotLQlzZWF0LT5hc3luY19zY2hlZHVsZSA9IFNDSEVEVUxFX1NXSVRD SDsKLS0JcmV0ID0gc2VhdF9wYXVzZShzZWF0LCBmYWxzZSk7Ci0tCWlmIChyZXQpCi0tCQlyZXR1 cm4gcmV0OwotLQotLQlyZXR1cm4gc2VhdF9ydW4oc2VhdCk7Ci0rCXNlYXQtPmN1cnJlbnRfc2Vz cyA9IG5ldzsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgc2VhdF9uZXh0KHN0cnVjdCBrbXNjb25fc2Vh dCAqc2VhdCkKLSB7Ci0tCXN0cnVjdCBzaGxfZGxpc3QgKmN1ciwgKml0ZXI7Ci0tCXN0cnVjdCBr bXNjb25fc2Vzc2lvbiAqcywgKm5leHQ7Ci0rCXN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqbmV4dCA9 IE5VTEw7Ci0gCi0gCWlmIChzZWF0LT5jdXJyZW50X3Nlc3MpCi0tCQljdXIgPSAmc2VhdC0+Y3Vy cmVudF9zZXNzLT5saXN0OwotLQllbHNlIGlmIChzZWF0LT5zZXNzaW9uX2NvdW50KQotLQkJY3Vy ID0gJnNlYXQtPnNlc3Npb25zOwotLQllbHNlCi0tCQlyZXR1cm47Ci0tCi0tCW5leHQgPSBOVUxM OwotLQlpZiAoIXNlYXQtPmN1cnJlbnRfc2VzcyAmJiBzZWF0LT5kdW1teV9zZXNzICYmIHNlYXQt PmR1bW15X3Nlc3MtPmVuYWJsZWQpCi0tCQluZXh0ID0gc2VhdC0+ZHVtbXlfc2VzczsKLS0KLS0J c2hsX2RsaXN0X2Zvcl9lYWNoX2J1dF9vbmUoaXRlciwgY3VyLCAmc2VhdC0+c2Vzc2lvbnMpCi0t CXsKLS0JCXMgPSBzaGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0IGttc2Nvbl9zZXNzaW9uLCBs aXN0KTsKLS0JCWlmICghcy0+ZW5hYmxlZCB8fCBzZWF0LT5kdW1teV9zZXNzID09IHMpCi0tCQkJ Y29udGludWU7Ci0tCi0tCQluZXh0ID0gczsKLS0JCWJyZWFrOwotLQl9Ci0tCi0rCQluZXh0ID0g c2hsX2RsaXN0X25leHQoc2VhdC0+Y3VycmVudF9zZXNzLCAmc2VhdC0+c2Vzc2lvbnMsIGxpc3Qp OwotIAlpZiAoIW5leHQpCi0tCQlyZXR1cm47Ci0rCQluZXh0ID0gc2hsX2RsaXN0X2ZpcnN0KCZz ZWF0LT5zZXNzaW9ucywgc3RydWN0IGttc2Nvbl9zZXNzaW9uLCBsaXN0KTsKLSsJaWYgKG5leHQg JiYgbmV4dCA9PSBzZWF0LT5jdXJyZW50X3Nlc3MpCi0rCQluZXh0ID0gTlVMTDsKLSAKLS0Jc2Vh dC0+c2NoZWR1bGVkX3Nlc3MgPSBuZXh0OwotLQlzZWF0X3N3aXRjaChzZWF0KTsKLSsJc2VhdF9z d2l0Y2goc2VhdCwgbmV4dCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkIHNlYXRfcHJldihzdHJ1Y3Qg a21zY29uX3NlYXQgKnNlYXQpCi0gewotLQlzdHJ1Y3Qgc2hsX2RsaXN0ICpjdXIsICppdGVyOwot LQlzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnMsICpwcmV2OwotKwlzdHJ1Y3Qga21zY29uX3Nlc3Np b24gKnByZXYgPSBOVUxMOwotIAotIAlpZiAoc2VhdC0+Y3VycmVudF9zZXNzKQotLQkJY3VyID0g JnNlYXQtPmN1cnJlbnRfc2Vzcy0+bGlzdDsKLS0JZWxzZSBpZiAoc2VhdC0+c2Vzc2lvbl9jb3Vu dCkKLS0JCWN1ciA9ICZzZWF0LT5zZXNzaW9uczsKLS0JZWxzZQotLQkJcmV0dXJuOwotLQotLQlw cmV2ID0gTlVMTDsKLS0JaWYgKCFzZWF0LT5jdXJyZW50X3Nlc3MgJiYgc2VhdC0+ZHVtbXlfc2Vz cyAmJiBzZWF0LT5kdW1teV9zZXNzLT5lbmFibGVkKQotLQkJcHJldiA9IHNlYXQtPmR1bW15X3Nl c3M7Ci0tCi0tCXNobF9kbGlzdF9mb3JfZWFjaF9yZXZlcnNlX2J1dF9vbmUoaXRlciwgY3VyLCAm c2VhdC0+c2Vzc2lvbnMpCi0tCXsKLS0JCXMgPSBzaGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0 IGttc2Nvbl9zZXNzaW9uLCBsaXN0KTsKLS0JCWlmICghcy0+ZW5hYmxlZCB8fCBzZWF0LT5kdW1t eV9zZXNzID09IHMpCi0tCQkJY29udGludWU7Ci0tCi0tCQlwcmV2ID0gczsKLS0JCWJyZWFrOwot LQl9Ci0tCi0rCQlwcmV2ID0gc2hsX2RsaXN0X3ByZXYoc2VhdC0+Y3VycmVudF9zZXNzLCAmc2Vh dC0+c2Vzc2lvbnMsIGxpc3QpOwotIAlpZiAoIXByZXYpCi0tCQlyZXR1cm47Ci0rCQlwcmV2ID0g c2hsX2RsaXN0X2xhc3QoJnNlYXQtPnNlc3Npb25zLCBzdHJ1Y3Qga21zY29uX3Nlc3Npb24sIGxp c3QpOwotKwlpZiAocHJldiAmJiBwcmV2ID09IHNlYXQtPmN1cnJlbnRfc2VzcykKLSsJCXByZXYg PSBOVUxMOwotIAotLQlzZWF0LT5zY2hlZHVsZWRfc2VzcyA9IHByZXY7Ci0tCXNlYXRfc3dpdGNo KHNlYXQpOwotKwlzZWF0X3N3aXRjaChzZWF0LCBwcmV2KTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQg c2VhdF9hZGRfZGlzcGxheShzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIHN0cnVjdCBkaXNwbGF5 ICpkaXNwKQotQEAgLTUzNiw3ICszMjgsNyBAQCBzdGF0aWMgdm9pZCBzZWF0X3JlbW92ZV9kaXNw bGF5KHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgc3RydWN0IGttc2Nvbl9kaXNwbGF5Ci0gCQlz aGxfZGxpc3RfZm9yX2VhY2hfc2FmZShpdGVyLCB0bXAsICZzZWF0LT5zZXNzaW9ucykKLSAJCXsK LSAJCQlzID0gc2hsX2RsaXN0X2VudHJ5KGl0ZXIsIHN0cnVjdCBrbXNjb25fc2Vzc2lvbiwgbGlz dCk7Ci0tCQkJc2Vzc2lvbl9jYWxsX2Rpc3BsYXlfZ29uZShzLCBkLT5kaXNwKTsKLSsJCQl0ZXJt aW5hbF9ybV9kaXNwbGF5KHMtPnRlcm0sIGQtPmRpc3ApOwotIAkJfQotIAl9Ci0gCi1AQCAtNTY5 LDcgKzM2MSw3IEBAIHN0YXRpYyB2b2lkIHNlYXRfcmVmcmVzaF9kaXNwbGF5KHN0cnVjdCBrbXNj b25fc2VhdCAqc2VhdCwgc3RydWN0IGttc2Nvbl9kaXNwbGF5Ci0gCQlzaGxfZGxpc3RfZm9yX2Vh Y2goaXRlciwgJnNlYXQtPnNlc3Npb25zKQotIAkJewotIAkJCXMgPSBzaGxfZGxpc3RfZW50cnko aXRlciwgc3RydWN0IGttc2Nvbl9zZXNzaW9uLCBsaXN0KTsKLS0JCQlzZXNzaW9uX2NhbGxfZGlz cGxheV9yZWZyZXNoKHMsIGQtPmRpc3ApOwotKwkJCXRlcm1pbmFsX3JlZnJlc2hfZGlzcGxheXMo cy0+dGVybSk7Ci0gCQl9Ci0gCX0KLSB9Ci1AQCAtNTc4LDkgKzM3MCwxNCBAQCBzdGF0aWMgdm9p ZCBzZWF0X3Z0X2FjdGl2YXRlKHN0cnVjdCB1dGVybV92dCAqdnQsIHZvaWQgKmRhdGEpCi0gewot IAlzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQgPSBkYXRhOwotIAotKwlsb2dfZGVidWcoIlZUICVk IGFjdGl2YXRlZCBvbiBzZWF0ICVzIiwgdXRlcm1fdnRfZ2V0X251bSh2dCksIHNlYXQtPm5hbWUp OwotKwotIAlpZiAoc2VhdF9nb19hd2FrZShzZWF0KSkKLSAJCXJldHVybjsKLS0Jc2VhdF9ydW4o c2VhdCk7Ci0rCWlmIChzZWF0X2dvX2ZvcmVncm91bmQoc2VhdCkpCi0rCQlyZXR1cm47Ci0rCWlm IChzZWF0LT5jdXJyZW50X3Nlc3MpCi0rCQl0ZXJtaW5hbF9hY3RpdmF0ZShzZWF0LT5jdXJyZW50 X3Nlc3MtPnRlcm0pOwotIH0KLSAKLSBzdGF0aWMgaW50IHNlYXRfdnRfZGVhY3RpdmF0ZShzdHJ1 Y3QgdXRlcm1fdnQgKnZ0LCBib29sIGZvcmNlLCB2b2lkICpkYXRhKQotQEAgLTU4OCwxNCArMzg1 LDEzIEBAIHN0YXRpYyBpbnQgc2VhdF92dF9kZWFjdGl2YXRlKHN0cnVjdCB1dGVybV92dCAqdnQs IGJvb2wgZm9yY2UsIHZvaWQgKmRhdGEpCi0gCXN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCA9IGRh dGE7Ci0gCWludCByZXQ7Ci0gCi0tCXNlYXQtPmFzeW5jX3NjaGVkdWxlID0gU0NIRURVTEVfVlQ7 Ci0tCXJldCA9IHNlYXRfcGF1c2Uoc2VhdCwgZmFsc2UpOwotLQlpZiAocmV0KQotLQkJcmV0dXJu IHJldDsKLS0JcmV0ID0gc2VhdF9nb19iYWNrZ3JvdW5kKHNlYXQsIGZhbHNlKTsKLSsJaWYgKHNl YXQtPmN1cnJlbnRfc2VzcykKLSsJCXRlcm1pbmFsX2RlYWN0aXZhdGUoc2VhdC0+Y3VycmVudF9z ZXNzLT50ZXJtKTsKLSsKLSsJcmV0ID0gc2VhdF9nb19iYWNrZ3JvdW5kKHNlYXQpOwotIAlpZiAo cmV0KQotIAkJcmV0dXJuIHJldDsKLS0JcmV0ID0gc2VhdF9nb19hc2xlZXAoc2VhdCwgZmFsc2Up OwotKwlyZXQgPSBzZWF0X2dvX2FzbGVlcChzZWF0KTsKLSAJaWYgKHJldCkKLSAJCXJldHVybiBy ZXQ7Ci0gCXJldHVybiAwOwotQEAgLTcyNiw3ICs1MjIsNiBAQCBzdGF0aWMgdm9pZCBzZWF0X2lu cHV0X2V2ZW50KHN0cnVjdCBpbnB1dCAqaW5wdXQsIHN0cnVjdCBpbnB1dF9rZXlfZXZlbnQgKmV2 LCB2bwotIHsKLSAJc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0ID0gZGF0YTsKLSAJc3RydWN0IGtt c2Nvbl9zZXNzaW9uICpzOwotLQlpbnQgcmV0OwotIAotIAkvKiBSZXNldCBEUE1TIHRpbWVyIG9u IGFueSBpbnB1dCBldmVudCAqLwotIAlzZWF0X2RwbXNfcmVzZXRfdGltZXIoc2VhdCk7Ci1AQCAt NzM2LDQ5ICs1MzEsMjcgQEAgc3RhdGljIHZvaWQgc2VhdF9pbnB1dF9ldmVudChzdHJ1Y3QgaW5w dXQgKmlucHV0LCBzdHJ1Y3QgaW5wdXRfa2V5X2V2ZW50ICpldiwgdm8KLSAKLSAJaWYgKGNvbmZf Z3JhYl9tYXRjaGVzKHNlYXQtPmNvbmYtPmdyYWJfc2Vzc2lvbl9uZXh0LCBldi0+bW9kcywgZXYt Pm51bV9zeW1zLCBldi0+a2V5c3ltcykpIHsKLSAJCWV2LT5oYW5kbGVkID0gdHJ1ZTsKLS0JCWlm ICghc2VhdC0+Y29uZi0+c2Vzc2lvbl9jb250cm9sKQotKwkJaWYgKCFzZWF0LT5jb25mLT5zZXNz aW9uX2NvbnRyb2wgfHwgc2VhdC0+c2Vzc2lvbl9jb3VudCA8IDIpCi0gCQkJcmV0dXJuOwotIAkJ c2VhdF9uZXh0KHNlYXQpOwotIAkJcmV0dXJuOwotIAl9Ci0gCWlmIChjb25mX2dyYWJfbWF0Y2hl cyhzZWF0LT5jb25mLT5ncmFiX3Nlc3Npb25fcHJldiwgZXYtPm1vZHMsIGV2LT5udW1fc3ltcywg ZXYtPmtleXN5bXMpKSB7Ci0gCQlldi0+aGFuZGxlZCA9IHRydWU7Ci0tCQlpZiAoIXNlYXQtPmNv bmYtPnNlc3Npb25fY29udHJvbCkKLSsJCWlmICghc2VhdC0+Y29uZi0+c2Vzc2lvbl9jb250cm9s IHx8IHNlYXQtPnNlc3Npb25fY291bnQgPCAyKQotIAkJCXJldHVybjsKLSAJCXNlYXRfcHJldihz ZWF0KTsKLSAJCXJldHVybjsKLSAJfQotLQlpZiAoY29uZl9ncmFiX21hdGNoZXMoc2VhdC0+Y29u Zi0+Z3JhYl9zZXNzaW9uX2R1bW15LCBldi0+bW9kcywgZXYtPm51bV9zeW1zLAotLQkJCSAgICAg IGV2LT5rZXlzeW1zKSkgewotLQkJZXYtPmhhbmRsZWQgPSB0cnVlOwotLQkJaWYgKCFzZWF0LT5j b25mLT5zZXNzaW9uX2NvbnRyb2wpCi0tCQkJcmV0dXJuOwotLQkJc2VhdC0+c2NoZWR1bGVkX3Nl c3MgPSBzZWF0LT5kdW1teV9zZXNzOwotLQkJc2VhdF9zd2l0Y2goc2VhdCk7Ci0tCQlyZXR1cm47 Ci0tCX0KLSsKLSAJaWYgKGNvbmZfZ3JhYl9tYXRjaGVzKHNlYXQtPmNvbmYtPmdyYWJfc2Vzc2lv bl9jbG9zZSwgZXYtPm1vZHMsIGV2LT5udW1fc3ltcywKLSAJCQkgICAgICBldi0+a2V5c3ltcykp IHsKLSAJCWV2LT5oYW5kbGVkID0gdHJ1ZTsKLS0JCWlmICghc2VhdC0+Y29uZi0+c2Vzc2lvbl9j b250cm9sKQotKwkJaWYgKCFzZWF0LT5jb25mLT5zZXNzaW9uX2NvbnRyb2wgfHwgc2VhdC0+c2Vz c2lvbl9jb3VudCA8IDIpCi0gCQkJcmV0dXJuOwotIAkJcyA9IHNlYXQtPmN1cnJlbnRfc2VzczsK LSAJCWlmICghcykKLSAJCQlyZXR1cm47Ci0tCQlpZiAocyA9PSBzZWF0LT5kdW1teV9zZXNzKQot LQkJCXJldHVybjsKLS0KLS0JCS8qIEZpcnN0IHRpbWUgdGhpcyBpcyBpbnZva2VkIG9uIGEgc2Vz c2lvbiwgd2Ugc2ltcGx5IHRyeQotLQkJICogdW5sb2FkaW5nIGl0LiBJZiBpdCBmYWlscywgd2Ug Z2l2ZSBpdCBzb21lIHRpbWUuIElmIHRoaXMgaXMKLS0JCSAqIGludm9rZWQgYSBzZWNvbmQgdGlt ZSwgd2Ugbm90aWNlIHRoYXQgd2UgYWxyZWFkeSB0cmllZAotLQkJICogcmVtb3ZpbmcgaXQgYW5k IHNvIHdlIGdvIHN0cmFpZ2h0IHRvIHVucmVnaXN0ZXJpbmcgdGhlCi0tCQkgKiBzZXNzaW9uIHVu Y29uZGl0aW9uYWxseS4gKi8KLS0JCWlmICghcy0+ZGVhY3RpdmF0aW5nKSB7Ci0tCQkJc2VhdC0+ YXN5bmNfc2NoZWR1bGUgPSBTQ0hFRFVMRV9VTlJFR0lTVEVSOwotLQkJCXJldCA9IHNlYXRfcGF1 c2Uoc2VhdCwgZmFsc2UpOwotLQkJCWlmIChyZXQpCi0tCQkJCXJldHVybjsKLS0JCX0KLSAKLSAJ CWttc2Nvbl9zZXNzaW9uX3VucmVnaXN0ZXIocyk7Ci0gCQlyZXR1cm47Ci1AQCAtNzg3LDE2ICs1 NjAsOSBAQCBzdGF0aWMgdm9pZCBzZWF0X2lucHV0X2V2ZW50KHN0cnVjdCBpbnB1dCAqaW5wdXQs IHN0cnVjdCBpbnB1dF9rZXlfZXZlbnQgKmV2LCB2bwotIAkJZXYtPmhhbmRsZWQgPSB0cnVlOwot IAkJaWYgKCFzZWF0LT5jb25mLT5zZXNzaW9uX2NvbnRyb2wpCi0gCQkJcmV0dXJuOwotLQkJcmV0 ID0ga21zY29uX3Rlcm1pbmFsX3JlZ2lzdGVyKCZzLCBzZWF0LCB1dGVybV92dF9nZXRfbnVtKHNl YXQtPnZ0KSk7Ci0tCQlpZiAocmV0ID09IC1FT1BOT1RTVVBQKSB7Ci0tCQkJbG9nX25vdGljZSgi dGVybWluYWwgc3VwcG9ydCBub3QgY29tcGlsZWQgaW4iKTsKLS0JCX0gZWxzZSBpZiAocmV0KSB7 Ci0tCQkJbG9nX2Vycm9yKCJjYW5ub3QgcmVnaXN0ZXIgdGVybWluYWwgc2Vzc2lvbjogJWQiLCBy ZXQpOwotLQkJfSBlbHNlIHsKLS0JCQlzLT5lbmFibGVkID0gdHJ1ZTsKLS0JCQlzZWF0LT5zY2hl ZHVsZWRfc2VzcyA9IHM7Ci0tCQkJc2VhdF9zd2l0Y2goc2VhdCk7Ci0tCQl9Ci0rCQlzID0ga21z Y29uX3NlYXRfbmV3X3Nlc3Npb24oc2VhdCk7Ci0rCQlpZiAocykKLSsJCQlzZWF0X3N3aXRjaChz ZWF0LCBzKTsKLSAJCXJldHVybjsKLSAJfQotIAlpZiAoc2VhdC0+Y29uZi0+Z3JhYl9yZWJvb3Qg JiYKLUBAIC04MjksMTIgKzU5NSw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpmaW5kX2xvY2FsZSh2 b2lkKQotIAotIHN0YXRpYyBpbnQga21zY29uX3NlYXRfc2V0X2tleW1hcChzdHJ1Y3Qga21zY29u X3NlYXQgKnNlYXQpCi0gewotLQljb25zdCBjaGFyICpsb2NhbGU7Ci0tCWNoYXIgKmtleW1hcCwg KmNvbXBvc2VfZmlsZTsKLS0Jc2l6ZV90IGNvbXBvc2VfZmlsZV9sZW47Ci0tCWludCByZXQ7Ci0g Ci0tCWxvY2FsZSA9IGZpbmRfbG9jYWxlKCk7Ci0rCWNoYXIgKmtleW1hcDsKLSsJaW50IHJldDsK LSAKLSAJLyogVE9ETzogVGhlIFhLQi1BUEkgY3VycmVudGx5IHJlcXVpcmVzIHplcm8tdGVybWlu YXRlZCBzdHJpbmdzIGFzCi0gCSAqIGtleW1hcCBpbnB1dC4gSGVuY2UsIHdlIGhhdmUgdG8gcmVh ZCBpdCBpbiBpbnN0ZWFkIG9mIHVzaW5nIG1tYXAoKS4KLUBAIC04NDYsMjEgKzYwOSw0OSBAQCBz dGF0aWMgaW50IGttc2Nvbl9zZWF0X3NldF9rZXltYXAoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0 KQotIAkJCWxvZ19lcnJvcigiY2Fubm90IHJlYWQga2V5bWFwIGZpbGUgJXM6ICVkIiwgc2VhdC0+ Y29uZi0+eGtiX2tleW1hcCwgcmV0KTsKLSAJfQotIAotKwlyZXQgPSBpbnB1dF9zZXRfa2V5bWFw KHNlYXQtPmlucHV0LCBzZWF0LT5jb25mLT54a2JfbW9kZWwsIHNlYXQtPmNvbmYtPnhrYl9sYXlv dXQsCi0rCQkJICAgICAgIHNlYXQtPmNvbmYtPnhrYl92YXJpYW50LCBzZWF0LT5jb25mLT54a2Jf b3B0aW9ucywga2V5bWFwKTsKLSsJaWYgKHJldCkKLSsJCWxvZ19lcnJvcigiY2Fubm90IHNldCBr ZXltYXA6ICVkIiwgcmV0KTsKLSsKLSsJZnJlZShrZXltYXApOwotKwlyZXR1cm4gcmV0OwotK30K LSsKLStzdGF0aWMgdm9pZCBrbXNjb25fc2VhdF9zZXRfY29tcG9zZShzdHJ1Y3Qga21zY29uX3Nl YXQgKnNlYXQpCi0rewotKwljb25zdCBjaGFyICpsb2NhbGU7Ci0rCWNoYXIgKmNvbXBvc2VfZmls ZTsKLSsJc2l6ZV90IGNvbXBvc2VfZmlsZV9sZW47Ci0rCWludCByZXQ7Ci0rCi0rCWxvY2FsZSA9 IGZpbmRfbG9jYWxlKCk7Ci0rCi0gCWNvbXBvc2VfZmlsZSA9IE5VTEw7Ci0gCWNvbXBvc2VfZmls ZV9sZW4gPSAwOwotIAlpZiAoc2VhdC0+Y29uZi0+eGtiX2NvbXBvc2VfZmlsZSAmJiAqc2VhdC0+ Y29uZi0+eGtiX2NvbXBvc2VfZmlsZSkgewotIAkJcmV0ID0gc2hsX3JlYWRfZmlsZShzZWF0LT5j b25mLT54a2JfY29tcG9zZV9maWxlLCAmY29tcG9zZV9maWxlLCAmY29tcG9zZV9maWxlX2xlbik7 Ci0tCQlpZiAocmV0KQotKwkJaWYgKHJldCkgewotIAkJCWxvZ19lcnJvcigiY2Fubm90IHJlYWQg Y29tcG9zZSBmaWxlICVzOiAlZCIsIHNlYXQtPmNvbmYtPnhrYl9jb21wb3NlX2ZpbGUsCi0gCQkJ CSAgcmV0KTsKLSsJCQlyZXR1cm47Ci0rCQl9Ci0gCX0KLS0JcmV0ID0gaW5wdXRfc2V0X2tleW1h cChzZWF0LT5pbnB1dCwgc2VhdC0+Y29uZi0+eGtiX21vZGVsLCBzZWF0LT5jb25mLT54a2JfbGF5 b3V0LAotLQkJCSAgICAgICBzZWF0LT5jb25mLT54a2JfdmFyaWFudCwgc2VhdC0+Y29uZi0+eGti X29wdGlvbnMsIGxvY2FsZSwga2V5bWFwLAotLQkJCSAgICAgICBjb21wb3NlX2ZpbGUsIGNvbXBv c2VfZmlsZV9sZW4pOwotLQlpZiAocmV0KQotLQkJbG9nX2Vycm9yKCJjYW5ub3Qgc2V0IGtleW1h cDogJWQiLCByZXQpOwotKwlpbnB1dF9zZXRfY29tcG9zZShzZWF0LT5pbnB1dCwgbG9jYWxlLCBj b21wb3NlX2ZpbGUsIGNvbXBvc2VfZmlsZV9sZW4pOwotK30KLSAKLS0JZnJlZShrZXltYXApOwot K2ludCBrbXNjb25fc2VhdF91cGRhdGVfeGtiX2xheW91dChzdHJ1Y3Qga21zY29uX3NlYXQgKnNl YXQsIGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsCi0rCQkJCSAgY29uc3Qg Y2hhciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucykKLSt7Ci0rCWludCByZXQ7Ci0rCi0r CXJldCA9IGlucHV0X3VwZGF0ZV9rZXltYXAoc2VhdC0+aW5wdXQsIG1vZGVsLCBsYXlvdXQsIHZh cmlhbnQsIG9wdGlvbnMpOwotKwlpZiAocmV0KSB7Ci0rCQlsb2dfZXJyb3IoImNhbm5vdCB1cGRh dGUga2V5bWFwOiAlZCIsIHJldCk7Ci0rCQlyZXR1cm4gcmV0OwotKwl9Ci0rCS8qIENvbXBvc2Ug dGFibGUgaXMgbG9zdCB3aGVuIHVwZGF0aW5nIHRoZSBrZXltYXAsIHNvIHdlIG5lZWQgdG8gc2V0 IGl0IGFnYWluICovCi0rCWttc2Nvbl9zZWF0X3NldF9jb21wb3NlKHNlYXQpOwotIAlyZXR1cm4g cmV0OwotIH0KLSAKLUBAIC05OTMsNiArNzg0LDggQEAgaW50IGttc2Nvbl9zZWF0X25ldyhzdHJ1 Y3Qga21zY29uX3NlYXQgKipvdXQsIHN0cnVjdCBjb25mX2N0eCAqbWFpbl9jb25mLAotIAlpZiAo cmV0KQotIAkJZ290byBlcnJfY29uZjsKLSAKLSsJa21zY29uX3NlYXRfc2V0X2NvbXBvc2Uoc2Vh dCk7Ci0rCi0gCXJldCA9IHV0ZXJtX21vbml0b3JfbmV3KCZzZWF0LT5tb24sIHNlYXQtPmVsb29w LCAmc2VhdF9tb25pdG9yX2NiLCBzZWF0KTsKLSAJaWYgKHJldCkgewotIAkJbG9nX2Vycm9yKCJj YW5ub3QgY3JlYXRlIGRldmljZSBtb25pdG9yOiAlZCIsIHJldCk7Ci1AQCAtMTA2MywxMiArODU2 LDkgQEAgdm9pZCBrbXNjb25fc2VhdF9mcmVlKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLSAJ aWYgKCFzZWF0KQotIAkJcmV0dXJuOwotIAotLQlyZXQgPSBzZWF0X3BhdXNlKHNlYXQsIHRydWUp OwotLQlpZiAocmV0KQotLQkJbG9nX3dhcm5pbmcoImRlc3Ryb3lpbmcgc2VhdCAlcyB3aGlsZSBz ZXNzaW9uICVwIGlzIGFjdGl2ZSIsIHNlYXQtPm5hbWUsCi0tCQkJICAgIHNlYXQtPmN1cnJlbnRf c2Vzcyk7Ci0rCXNlYXRfc3dpdGNoKHNlYXQsIE5VTEwpOwotIAotLQlyZXQgPSBzZWF0X2dvX2Fz bGVlcChzZWF0LCB0cnVlKTsKLSsJcmV0ID0gc2VhdF9nb19hc2xlZXAoc2VhdCk7Ci0gCWlmIChy ZXQpCi0gCQlsb2dfd2FybmluZygiZGVzdHJveWluZyBzZWF0ICVzIHdoaWxlIHN0aWxsIGF3YWtl OiAlZCIsIHNlYXQtPm5hbWUsIHJldCk7Ci0gCi1AQCAtMTMwNiwzMSArMTA5NiwxOCBAQCBzdGF0 aWMgdm9pZCBrbXNjb25fc2VhdF9wb2xsX3ZpZGVvKHZvaWQgKmRhdGEpCi0gCi0gdm9pZCBrbXNj b25fc2VhdF9zdGFydHVwKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLSB7Ci0tCWludCByZXQ7 Ci0gCXN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqczsKLSAKLSAJaWYgKCFzZWF0KQotIAkJcmV0dXJu OwotIAotLQlyZXQgPSBrbXNjb25fZHVtbXlfcmVnaXN0ZXIoJnMsIHNlYXQpOwotLQlpZiAocmV0 ID09IC1FT1BOT1RTVVBQKSB7Ci0tCQlsb2dfbm90aWNlKCJkdW1teSBzZXNzaW9ucyBub3QgY29t cGlsZWQgaW4iKTsKLS0JfSBlbHNlIGlmIChyZXQpIHsKLS0JCWxvZ19lcnJvcigiY2Fubm90IHJl Z2lzdGVyIGR1bW15IHNlc3Npb246ICVkIiwgcmV0KTsKLS0JfSBlbHNlIHsKLS0JCXNlYXQtPmR1 bW15X3Nlc3MgPSBzOwotLQkJa21zY29uX3Nlc3Npb25fZW5hYmxlKHMpOwotLQl9Ci0rCXNlYXRf Z29fYXdha2Uoc2VhdCk7Ci0gCi0tCWlmIChzZWF0LT5jb25mLT50ZXJtaW5hbF9zZXNzaW9uKSB7 Ci0tCQlyZXQgPSBrbXNjb25fdGVybWluYWxfcmVnaXN0ZXIoJnMsIHNlYXQsIHV0ZXJtX3Z0X2dl dF9udW0oc2VhdC0+dnQpKTsKLS0JCWlmIChyZXQgPT0gLUVPUE5PVFNVUFApCi0tCQkJbG9nX25v dGljZSgidGVybWluYWwgc3VwcG9ydCBub3QgY29tcGlsZWQgaW4iKTsKLS0JCWVsc2UgaWYgKHJl dCkKLS0JCQlsb2dfZXJyb3IoImNhbm5vdCByZWdpc3RlciB0ZXJtaW5hbCBzZXNzaW9uIik7Ci0t CQllbHNlCi0tCQkJa21zY29uX3Nlc3Npb25fZW5hYmxlKHMpOwotLQl9Ci0rCXMgPSBrbXNjb25f c2VhdF9uZXdfc2Vzc2lvbihzZWF0KTsKLSsJaWYgKHMpCi0rCQlzZWF0X3N3aXRjaChzZWF0LCBz KTsKLSsJZWxzZQotKwkJbG9nX2Vycm9yKCJjYW5ub3QgY3JlYXRlIG5ldyBzZXNzaW9uIG9uIHNl YXQgJXMiLCBzZWF0LT5uYW1lKTsKLSAKLSAJaWYgKHNlYXQtPmNvbmYtPnN3aXRjaHZ0IHx8IHV0 ZXJtX3Z0X2dldF9udW0oc2VhdC0+dnQpID09IDApCi0gCQl1dGVybV92dF9hY3RpdmF0ZShzZWF0 LT52dCk7Ci1AQCAtMTMzOSwzMCArMTExNiw2IEBAIHZvaWQga21zY29uX3NlYXRfc3RhcnR1cChz dHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCi0gCXV0ZXJtX21vbml0b3Jfc2NhbihzZWF0LT5tb24s IHNlYXQtPm5hbWUpOwotIH0KLSAKLS1jb25zdCBjaGFyICprbXNjb25fc2VhdF9nZXRfbmFtZShz dHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCi0tewotLQlpZiAoIXNlYXQpCi0tCQlyZXR1cm4gTlVM TDsKLS0KLS0JcmV0dXJuIHNlYXQtPm5hbWU7Ci0tfQotLQotLXN0cnVjdCBpbnB1dCAqa21zY29u X3NlYXRfZ2V0X2lucHV0KHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLS17Ci0tCWlmICghc2Vh dCkKLS0JCXJldHVybiBOVUxMOwotLQotLQlyZXR1cm4gc2VhdC0+aW5wdXQ7Ci0tfQotLQotLXN0 cnVjdCBldl9lbG9vcCAqa21zY29uX3NlYXRfZ2V0X2Vsb29wKHN0cnVjdCBrbXNjb25fc2VhdCAq c2VhdCkKLS17Ci0tCWlmICghc2VhdCkKLS0JCXJldHVybiBOVUxMOwotLQotLQlyZXR1cm4gc2Vh dC0+ZWxvb3A7Ci0tfQotLQotIHN0cnVjdCBjb25mX2N0eCAqa21zY29uX3NlYXRfZ2V0X2NvbmYo c3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQotIHsKLSAJaWYgKCFzZWF0KQotQEAgLTEzNzEsMzYg KzExMjQsMzkgQEAgc3RydWN0IGNvbmZfY3R4ICprbXNjb25fc2VhdF9nZXRfY29uZihzdHJ1Y3Qg a21zY29uX3NlYXQgKnNlYXQpCi0gCXJldHVybiBzZWF0LT5jb25mX2N0eDsKLSB9Ci0gCi0taW50 IGttc2Nvbl9zZWF0X3JlZ2lzdGVyX3Nlc3Npb24oc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LCBz dHJ1Y3Qga21zY29uX3Nlc3Npb24gKipvdXQsCi0tCQkJCSBrbXNjb25fc2Vzc2lvbl9jYl90IGNi LCB2b2lkICpkYXRhKQotK3N0YXRpYyBzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKmttc2Nvbl9zZWF0 X25ld19zZXNzaW9uKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLSB7Ci0gCXN0cnVjdCBrbXNj b25fc2Vzc2lvbiAqc2VzczsKLSAJc3RydWN0IHNobF9kbGlzdCAqaXRlcjsKLSAJc3RydWN0IGtt c2Nvbl9kaXNwbGF5ICpkOwotIAotLQlpZiAoIXNlYXQgfHwgIW91dCkKLS0JCXJldHVybiAtRUlO VkFMOwotKwlpZiAoIXNlYXQpCi0rCQlyZXR1cm4gTlVMTDsKLSAKLSAJaWYgKHNlYXQtPmNvbmYt PnNlc3Npb25fbWF4ICYmIHNlYXQtPnNlc3Npb25fY291bnQgPj0gc2VhdC0+Y29uZi0+c2Vzc2lv bl9tYXgpIHsKLSAJCWxvZ193YXJuaW5nKCJtYXhpbXVtIG51bWJlciBvZiBzZXNzaW9ucyByZWFj aGVkICglZCksIGRyb3BwaW5nIG5ldyBzZXNzaW9uIiwKLSAJCQkgICAgc2VhdC0+Y29uZi0+c2Vz c2lvbl9tYXgpOwotLQkJcmV0dXJuIC1FT1ZFUkZMT1c7Ci0rCQlyZXR1cm4gTlVMTDsKLSAJfQot IAotIAlzZXNzID0gbWFsbG9jKHNpemVvZigqc2VzcykpOwotIAlpZiAoIXNlc3MpIHsKLSAJCWxv Z19lcnJvcigiY2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgbmV3IHNlc3Npb24gb24gc2VhdCAl cyIsIHNlYXQtPm5hbWUpOwotLQkJcmV0dXJuIC1FTk9NRU07Ci0rCQlyZXR1cm4gTlVMTDsKLSAJ fQotIAotIAlsb2dfZGVidWcoInJlZ2lzdGVyIHNlc3Npb24gJXAiLCBzZXNzKTsKLSAKLSAJbWVt c2V0KHNlc3MsIDAsIHNpemVvZigqc2VzcykpOwotLQlzZXNzLT5yZWYgPSAxOwotIAlzZXNzLT5z ZWF0ID0gc2VhdDsKLS0Jc2Vzcy0+Y2IgPSBjYjsKLS0Jc2Vzcy0+ZGF0YSA9IGRhdGE7Ci0gCXNl c3MtPmZvcmVncm91bmQgPSB0cnVlOwotKwlzZXNzLT50ZXJtID0gdGVybWluYWxfbmV3KHNlc3Ms IHV0ZXJtX3Z0X2dldF9udW0oc2VhdC0+dnQpLCBzZWF0LT5jb25mX2N0eCwgc2VhdC0+ZWxvb3As Ci0rCQkJCSAgc2VhdC0+aW5wdXQsIHNlYXQtPm5hbWUpOwotKwlpZiAoIXNlc3MtPnRlcm0pIHsK LSsJCWxvZ19lcnJvcigiY2Fubm90IGNyZWF0ZSB0ZXJtaW5hbCBmb3IgbmV3IHNlc3Npb24gb24g c2VhdCAlcyIsIHNlYXQtPm5hbWUpOwotKwkJZnJlZShzZXNzKTsKLSsJCXJldHVybiBOVUxMOwot Kwl9Ci0gCi0gCS8qIHJlZ2lzdGVyIG5ldyBzZXNzaW9ucyBuZXh0IHRvIHRoZSBjdXJyZW50IG9u ZSAqLwotIAlpZiAoc2VhdC0+Y3VycmVudF9zZXNzKQotQEAgLTE0MDksMzkgKzExNjUsMTggQEAg aW50IGttc2Nvbl9zZWF0X3JlZ2lzdGVyX3Nlc3Npb24oc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0 LCBzdHJ1Y3Qga21zY29uX3Nlc3Npb24KLSAJCXNobF9kbGlzdF9saW5rX3RhaWwoJnNlYXQtPnNl c3Npb25zLCAmc2Vzcy0+bGlzdCk7Ci0gCi0gCSsrc2VhdC0+c2Vzc2lvbl9jb3VudDsKLS0JKm91 dCA9IHNlc3M7Ci0gCi0gCXNobF9kbGlzdF9mb3JfZWFjaChpdGVyLCAmc2VhdC0+ZGlzcGxheXMp Ci0gCXsKLSAJCWQgPSBzaGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0IGttc2Nvbl9kaXNwbGF5 LCBsaXN0KTsKLS0JCXNlc3Npb25fY2FsbF9kaXNwbGF5X25ldyhzZXNzLCBkLT5kaXNwKTsKLSsJ CXRlcm1pbmFsX2FkZF9kaXNwbGF5KHNlc3MtPnRlcm0sIGQtPmRpc3ApOwotIAl9Ci0tCi0tCXJl dHVybiAwOwotLX0KLS0KLS12b2lkIGttc2Nvbl9zZXNzaW9uX3JlZihzdHJ1Y3Qga21zY29uX3Nl c3Npb24gKnNlc3MpCi0tewotLQlpZiAoIXNlc3MgfHwgIXNlc3MtPnJlZikKLS0JCXJldHVybjsK LS0KLS0JKytzZXNzLT5yZWY7Ci0rCXJldHVybiBzZXNzOwotIH0KLSAKLS12b2lkIGttc2Nvbl9z ZXNzaW9uX3VucmVmKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcykKLS17Ci0tCWlmICghc2Vz cyB8fCAhc2Vzcy0+cmVmIHx8IC0tc2Vzcy0+cmVmKQotLQkJcmV0dXJuOwotLQotLQlrbXNjb25f c2Vzc2lvbl91bnJlZ2lzdGVyKHNlc3MpOwotLQlmcmVlKHNlc3MpOwotLX0KLS0KLS12b2lkIGtt c2Nvbl9zZXNzaW9uX3VucmVnaXN0ZXIoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQotK3N0 YXRpYyB2b2lkIGttc2Nvbl9zZXNzaW9uX3VucmVnaXN0ZXIoc3RydWN0IGttc2Nvbl9zZXNzaW9u ICpzZXNzKQotIHsKLSAJc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0OwotLQlpbnQgcmV0OwotLQli b29sIGZvcmNlZCA9IGZhbHNlOwotIAotIAlpZiAoIXNlc3MgfHwgIXNlc3MtPnNlYXQpCi0gCQly ZXR1cm47Ci1AQCAtMTQ0OSw0NyArMTE4NCwxOCBAQCB2b2lkIGttc2Nvbl9zZXNzaW9uX3VucmVn aXN0ZXIoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQotIAlsb2dfZGVidWcoInVucmVnaXN0 ZXIgc2Vzc2lvbiAlcCIsIHNlc3MpOwotIAotIAlzZWF0ID0gc2Vzcy0+c2VhdDsKLS0Jc2Vzcy0+ ZW5hYmxlZCA9IGZhbHNlOwotLQlpZiAoc2VhdC0+ZHVtbXlfc2VzcyA9PSBzZXNzKQotLQkJc2Vh dC0+ZHVtbXlfc2VzcyA9IE5VTEw7Ci0tCXNlYXRfcmVzY2hlZHVsZShzZWF0KTsKLSAKLSAJaWYg KHNlYXQtPmN1cnJlbnRfc2VzcyA9PSBzZXNzKSB7Ci0tCQlyZXQgPSBzZWF0X3BhdXNlKHNlYXQs IHRydWUpOwotLQkJaWYgKHJldCkgewotLQkJCWZvcmNlZCA9IHRydWU7Ci0tCQkJbG9nX3dhcm5p bmcoInVucmVnaXN0ZXJpbmcgYWN0aXZlIHNlc3Npb24gJXA7IHNraXBwaW5nIGF1dG9tYXRpYyAi Ci0tCQkJCSAgICAic2Vzc2lvbi1zd2l0Y2giLAotLQkJCQkgICAgc2Vzcyk7Ci0tCQl9Ci0rCQl0 ZXJtaW5hbF9kZWFjdGl2YXRlKHNlYXQtPmN1cnJlbnRfc2Vzcy0+dGVybSk7Ci0rCQlzZWF0X25l eHQoc2VhdCk7Ci0gCX0KLSAKLSAJc2hsX2RsaXN0X3VubGluaygmc2Vzcy0+bGlzdCk7Ci0gCS0t c2VhdC0+c2Vzc2lvbl9jb3VudDsKLSAJc2Vzcy0+c2VhdCA9IE5VTEw7Ci0gCi0tCXNlc3Npb25f Y2FsbChzZXNzLCBLTVNDT05fU0VTU0lPTl9VTlJFR0lTVEVSLCBOVUxMKTsKLS0Ja21zY29uX3Nl c3Npb25fdW5yZWYoc2Vzcyk7Ci0tCi0tCS8qIElmIHRoaXMgc2Vzc2lvbiB3YXMgYWN0aXZlIGFu ZCB3ZSBjb3VsZG4ndCBkZWFjdGl2YXRlIGl0LCB0aGVuIGl0Ci0tCSAqIG1pZ2h0IHN0aWxsIGhh dmUgcmVzb3VyY2VzIGFsbG9jYXRlZCB0aGF0IGNvdWxkbid0IGdldCBmcmVlZC4gSW4gdGhpcwot LQkgKiBjYXNlIHdlIHNob3VsZCBub3QgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5leHQg c2Vzc2lvbiBhcyBpdCBpcwotLQkgKiB2ZXJ5IGxpa2VseSB0aGF0IGl0IHdpbGwgbm90IGJlIGFi bGUgdG8gc3RhcnQuCi0tCSAqIEluc3RlYWQsIHdlIHN0YXkgaW5hY3RpdmUgYW5kIHdhaXQgZm9y IHVzZXIvZXh0ZXJuYWwgaW5wdXQgdG8gc3dpdGNoCi0tCSAqIHRvIGFub3RoZXIgc2Vzc2lvbi4g VGhpcyBkZWxheSB3aWxsIHRoZW4gaG9wZWZ1bGx5IGJlIGxvbmcgZW5vdWdoIHNvCi0tCSAqIGFs bCByZXNvdXJjZXMgZ290IGZyZWVkLiAqLwotLQlpZiAoIWZvcmNlZCkKLS0JCXNlYXRfcnVuKHNl YXQpOwotLX0KLS0KLS1ib29sIGttc2Nvbl9zZXNzaW9uX2lzX3JlZ2lzdGVyZWQoc3RydWN0IGtt c2Nvbl9zZXNzaW9uICpzZXNzKQotLXsKLS0JcmV0dXJuIHNlc3MgJiYgc2Vzcy0+c2VhdDsKLS19 Ci0tCi0tYm9vbCBrbXNjb25fc2Vzc2lvbl9pc19hY3RpdmUoc3RydWN0IGttc2Nvbl9zZXNzaW9u ICpzZXNzKQotLXsKLS0JcmV0dXJuIHNlc3MgJiYgc2Vzcy0+c2VhdCAmJiBzZXNzLT5zZWF0LT5j dXJyZW50X3Nlc3MgPT0gc2VzczsKLSsJdGVybWluYWxfZGVzdHJveShzZXNzLT50ZXJtKTsKLSsJ ZnJlZShzZXNzKTsKLSB9Ci0gCi0gaW50IGttc2Nvbl9zZXNzaW9uX3NldF9mb3JlZ3JvdW5kKHN0 cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcykKLUBAIC0xNTA4LDcgKzEyMTQsNyBAQCBpbnQga21z Y29uX3Nlc3Npb25fc2V0X2ZvcmVncm91bmQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQot IAkJaWYgKHJldCkKLSAJCQlyZXR1cm4gcmV0OwotIAotLQkJcmV0ID0gc2VhdF9nb19mb3JlZ3Jv dW5kKHNlYXQsIHRydWUpOwotKwkJcmV0ID0gc2VhdF9nb19mb3JlZ3JvdW5kKHNlYXQpOwotIAkJ aWYgKHJldCkKLSAJCQlyZXR1cm4gcmV0OwotIAl9Ci1AQCAtMTUyOSw3ICsxMjM1LDcgQEAgaW50 IGttc2Nvbl9zZXNzaW9uX3NldF9iYWNrZ3JvdW5kKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vz cykKLSAKLSAJc2VhdCA9IHNlc3MtPnNlYXQ7Ci0gCWlmIChzZWF0ICYmIHNlYXQtPmN1cnJlbnRf c2VzcyA9PSBzZXNzICYmIHNlYXQtPmZvcmVncm91bmQpIHsKLS0JCXJldCA9IHNlYXRfZ29fYmFj a2dyb3VuZChzZWF0LCB0cnVlKTsKLSsJCXJldCA9IHNlYXRfZ29fYmFja2dyb3VuZChzZWF0KTsK LSAJCWlmIChyZXQpCi0gCQkJcmV0dXJuIHJldDsKLSAJfQotQEAgLTE1NDMsMzUgKzEyNDksNiBA QCBib29sIGttc2Nvbl9zZXNzaW9uX2dldF9mb3JlZ3JvdW5kKHN0cnVjdCBrbXNjb25fc2Vzc2lv biAqc2VzcykKLSAJcmV0dXJuIHNlc3MtPmZvcmVncm91bmQ7Ci0gfQotIAotLXZvaWQga21zY29u X3Nlc3Npb25fZW5hYmxlKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcykKLS17Ci0tCWlmICgh c2VzcyB8fCBzZXNzLT5lbmFibGVkKQotLQkJcmV0dXJuOwotLQotLQlsb2dfZGVidWcoImVuYWJs ZSBzZXNzaW9uICVwIiwgc2Vzcyk7Ci0tCXNlc3MtPmVuYWJsZWQgPSB0cnVlOwotLQlpZiAoc2Vz cy0+c2VhdCAmJgotLQkgICAgKCFzZXNzLT5zZWF0LT5jdXJyZW50X3Nlc3MgfHwgc2Vzcy0+c2Vh dC0+Y3VycmVudF9zZXNzID09IHNlc3MtPnNlYXQtPmR1bW15X3Nlc3MpKSB7Ci0tCQlzZXNzLT5z ZWF0LT5zY2hlZHVsZWRfc2VzcyA9IHNlc3M7Ci0tCQlpZiAoc2VhdF9oYXNfc2NoZWR1bGUoc2Vz cy0+c2VhdCkpCi0tCQkJc2VhdF9zd2l0Y2goc2Vzcy0+c2VhdCk7Ci0tCX0KLS19Ci0tCi0tdm9p ZCBrbXNjb25fc2Vzc2lvbl9kaXNhYmxlKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcykKLS17 Ci0tCWlmICghc2VzcyB8fCAhc2Vzcy0+ZW5hYmxlZCkKLS0JCXJldHVybjsKLS0KLS0JbG9nX2Rl YnVnKCJkaXNhYmxlIHNlc3Npb24gJXAiLCBzZXNzKTsKLS0Jc2Vzcy0+ZW5hYmxlZCA9IGZhbHNl OwotLX0KLS0KLS1ib29sIGttc2Nvbl9zZXNzaW9uX2lzX2VuYWJsZWQoc3RydWN0IGttc2Nvbl9z ZXNzaW9uICpzZXNzKQotLXsKLS0JcmV0dXJuIHNlc3MgJiYgc2Vzcy0+ZW5hYmxlZDsKLS19Ci0t Ci0gdm9pZCBrbXNjb25fc2Vzc2lvbl9iZWxsKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcykK LSB7Ci0gCWlmICghc2VzcyB8fCAhc2Vzcy0+c2VhdCkKLUBAIC0xNTg4LDM2ICsxMjY1LDMgQEAg dm9pZCBrbXNjb25fc2Vzc2lvbl9zZXRfbGVkcyhzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3Ms IHVuc2lnbmVkIGludCBzY3JvbGxfbG8KLSAKLSAJaW5wdXRfc2V0X2xlZHMoc2Vzcy0+c2VhdC0+ aW5wdXQsIHNjcm9sbF9sb2NrLCBudW1fbG9jaywgY2Fwc19sb2NrKTsKLSB9Ci0tCi0tdm9pZCBr bXNjb25fc2Vzc2lvbl9ub3RpZnlfZGVhY3RpdmF0ZWQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpz ZXNzKQotLXsKLS0Jc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0OwotLQlpbnQgcmV0OwotLQl1bnNp Z25lZCBpbnQgc2NoZWQ7Ci0tCi0tCWlmICghc2VzcyB8fCAhc2Vzcy0+c2VhdCkKLS0JCXJldHVy bjsKLS0KLS0Jc2VhdCA9IHNlc3MtPnNlYXQ7Ci0tCWlmIChzZWF0LT5jdXJyZW50X3Nlc3MgIT0g c2VzcykKLS0JCXJldHVybjsKLS0KLS0Jc2NoZWQgPSBzZWF0LT5hc3luY19zY2hlZHVsZTsKLS0J bG9nX2RlYnVnKCJzZXNzaW9uICVwIG5vdGlmaWVkIGNvcmUgYWJvdXQgZGVhY3RpdmF0aW9uIChz Y2hlZHVsZTogJXUpIiwgc2Vzcywgc2NoZWQpOwotLQlzZXNzaW9uX2RlYWN0aXZhdGUoc2Vzcyk7 Ci0tCXNlYXRfcmVzY2hlZHVsZShzZWF0KTsKLS0KLS0JaWYgKHNjaGVkID09IFNDSEVEVUxFX1ZU KSB7Ci0tCQlyZXQgPSBzZWF0X2dvX2JhY2tncm91bmQoc2VhdCwgZmFsc2UpOwotLQkJaWYgKHJl dCkKLS0JCQlyZXR1cm47Ci0tCQlyZXQgPSBzZWF0X2dvX2FzbGVlcChzZWF0LCBmYWxzZSk7Ci0t CQlpZiAocmV0KQotLQkJCXJldHVybjsKLS0JCXV0ZXJtX3Z0X3JldHJ5KHNlYXQtPnZ0KTsKLS0J fSBlbHNlIGlmIChzY2hlZCA9PSBTQ0hFRFVMRV9VTlJFR0lTVEVSKSB7Ci0tCQlrbXNjb25fc2Vz c2lvbl91bnJlZ2lzdGVyKHNlc3MpOwotLQl9IGVsc2UgewotLQkJc2VhdF9zd2l0Y2goc2VhdCk7 Ci0tCX0KLS19Ci1kaWZmIC0tZ2l0IGEvc3JjL2ttc2Nvbl9zZWF0LmggYi9zcmMva21zY29uX3Nl YXQuaAotaW5kZXggYzNmYTcwNy4uMzFlODgwOCAxMDA2NDQKLS0tLSBhL3NyYy9rbXNjb25fc2Vh dC5oCi0rKysgYi9zcmMva21zY29uX3NlYXQuaAotQEAgLTMzLDE0ICszMyw5IEBACi0gI2RlZmlu ZSBLTVNDT05fU0VBVF9ICi0gCi0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLS0jaW5jbHVkZSA8c3Rk bGliLmg+Ci0gI2luY2x1ZGUgImNvbmYuaCIKLS0jaW5jbHVkZSAiaW5wdXQvaW5wdXQuaCIKLSAj aW5jbHVkZSAia21zY29uX2NvbmYuaCIKLSAjaW5jbHVkZSAic2hsL2Vsb29wLmgiCi0tI2luY2x1 ZGUgInV0ZXJtX21vbml0b3IuaCIKLS0jaW5jbHVkZSAidXRlcm1fdnQuaCIKLS0jaW5jbHVkZSAi dmlkZW8vdmlkZW8uaCIKLSAKLSBzdHJ1Y3Qga21zY29uX3NlYXQ7Ci0gc3RydWN0IGttc2Nvbl9z ZXNzaW9uOwotQEAgLTUzLDU0ICs0OCwyMiBAQCBlbnVtIGttc2Nvbl9zZWF0X2V2ZW50IHsKLSAK LSB0eXBlZGVmIGludCAoKmttc2Nvbl9zZWF0X2NiX3QpKHN0cnVjdCBrbXNjb25fc2VhdCAqc2Vh dCwgdW5zaWduZWQgaW50IGV2ZW50LCB2b2lkICpkYXRhKTsKLSAKLS1lbnVtIGttc2Nvbl9zZXNz aW9uX2V2ZW50X3R5cGUgewotLQlLTVNDT05fU0VTU0lPTl9ESVNQTEFZX05FVywKLS0JS01TQ09O X1NFU1NJT05fRElTUExBWV9HT05FLAotLQlLTVNDT05fU0VTU0lPTl9ESVNQTEFZX1JFRlJFU0gs Ci0tCUtNU0NPTl9TRVNTSU9OX0FDVElWQVRFLAotLQlLTVNDT05fU0VTU0lPTl9ERUFDVElWQVRF LAotLQlLTVNDT05fU0VTU0lPTl9VTlJFR0lTVEVSLAotLX07Ci0tCi0tc3RydWN0IGttc2Nvbl9z ZXNzaW9uX2V2ZW50IHsKLS0JdW5zaWduZWQgaW50IHR5cGU7Ci0tCXN0cnVjdCBkaXNwbGF5ICpk aXNwOwotLX07Ci0tCi0tdHlwZWRlZiBpbnQgKCprbXNjb25fc2Vzc2lvbl9jYl90KShzdHJ1Y3Qg a21zY29uX3Nlc3Npb24gKnNlc3Npb24sCi0tCQkJCSAgIHN0cnVjdCBrbXNjb25fc2Vzc2lvbl9l dmVudCAqZXZlbnQsIHZvaWQgKmRhdGEpOwotLQotIGludCBrbXNjb25fc2VhdF9uZXcoc3RydWN0 IGttc2Nvbl9zZWF0ICoqb3V0LCBzdHJ1Y3QgY29uZl9jdHggKm1haW5fY29uZiwKLSAJCSAgICBz dHJ1Y3Qga21zY29uX2NvbmZfdCAqY29uZiwgc3RydWN0IGV2X2Vsb29wICplbG9vcCwga21zY29u X3NlYXRfY2JfdCBjYiwKLSAJCSAgICB2b2lkICpkYXRhKTsKLSB2b2lkIGttc2Nvbl9zZWF0X2Zy ZWUoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KTsKLSB2b2lkIGttc2Nvbl9zZWF0X3N0YXJ0dXAo c3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KTsKLStpbnQga21zY29uX3NlYXRfdXBkYXRlX3hrYl9s YXlvdXQoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LCBjb25zdCBjaGFyICptb2RlbCwgY29uc3Qg Y2hhciAqbGF5b3V0LAotKwkJCQkgIGNvbnN0IGNoYXIgKnZhcmlhbnQsIGNvbnN0IGNoYXIgKm9w dGlvbnMpOwotIAotLWNvbnN0IGNoYXIgKmttc2Nvbl9zZWF0X2dldF9uYW1lKHN0cnVjdCBrbXNj b25fc2VhdCAqc2VhdCk7Ci0tc3RydWN0IGlucHV0ICprbXNjb25fc2VhdF9nZXRfaW5wdXQoc3Ry dWN0IGttc2Nvbl9zZWF0ICpzZWF0KTsKLS1zdHJ1Y3QgZXZfZWxvb3AgKmttc2Nvbl9zZWF0X2dl dF9lbG9vcChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpOwotIHN0cnVjdCBjb25mX2N0eCAqa21z Y29uX3NlYXRfZ2V0X2NvbmYoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KTsKLSAKLS1pbnQga21z Y29uX3NlYXRfcmVnaXN0ZXJfc2Vzc2lvbihzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIHN0cnVj dCBrbXNjb25fc2Vzc2lvbiAqKm91dCwKLS0JCQkJIGttc2Nvbl9zZXNzaW9uX2NiX3QgY2IsIHZv aWQgKmRhdGEpOwotLQotLXZvaWQga21zY29uX3Nlc3Npb25fcmVmKHN0cnVjdCBrbXNjb25fc2Vz c2lvbiAqc2Vzcyk7Ci0tdm9pZCBrbXNjb25fc2Vzc2lvbl91bnJlZihzdHJ1Y3Qga21zY29uX3Nl c3Npb24gKnNlc3MpOwotLXZvaWQga21zY29uX3Nlc3Npb25fdW5yZWdpc3RlcihzdHJ1Y3Qga21z Y29uX3Nlc3Npb24gKnNlc3MpOwotLWJvb2wga21zY29uX3Nlc3Npb25faXNfcmVnaXN0ZXJlZChz dHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpOwotLQotLWJvb2wga21zY29uX3Nlc3Npb25faXNf YWN0aXZlKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcyk7Ci0gaW50IGttc2Nvbl9zZXNzaW9u X3NldF9mb3JlZ3JvdW5kKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcyk7Ci0gaW50IGttc2Nv bl9zZXNzaW9uX3NldF9iYWNrZ3JvdW5kKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcyk7Ci0g Ym9vbCBrbXNjb25fc2Vzc2lvbl9nZXRfZm9yZWdyb3VuZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24g KnNlc3MpOwotIAotLXZvaWQga21zY29uX3Nlc3Npb25fZW5hYmxlKHN0cnVjdCBrbXNjb25fc2Vz c2lvbiAqc2Vzcyk7Ci0tdm9pZCBrbXNjb25fc2Vzc2lvbl9kaXNhYmxlKHN0cnVjdCBrbXNjb25f c2Vzc2lvbiAqc2Vzcyk7Ci0tYm9vbCBrbXNjb25fc2Vzc2lvbl9pc19lbmFibGVkKHN0cnVjdCBr bXNjb25fc2Vzc2lvbiAqc2Vzcyk7Ci0gdm9pZCBrbXNjb25fc2Vzc2lvbl9iZWxsKHN0cnVjdCBr bXNjb25fc2Vzc2lvbiAqc2Vzcyk7Ci0gdm9pZCBrbXNjb25fc2Vzc2lvbl9zZXRfbGVkcyhzdHJ1 Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MsIHVuc2lnbmVkIGludCBzY3JvbGxfbG9jaywKLSAJCQkg ICAgIHVuc2lnbmVkIGludCBudW1fbG9jaywgdW5zaWduZWQgaW50IGNhcHNfbG9jayk7Ci0gCi0t dm9pZCBrbXNjb25fc2Vzc2lvbl9ub3RpZnlfZGVhY3RpdmF0ZWQoc3RydWN0IGttc2Nvbl9zZXNz aW9uICpzZXNzKTsKLS0KLSAjZW5kaWYgLyogS01TQ09OX1NFQVRfSCAqLwotZGlmZiAtLWdpdCBh L3NyYy9rbXNjb25fdGVybWluYWwuYyBiL3NyYy9rbXNjb25fdGVybWluYWwuYwotaW5kZXggMzkx Y2Q1My4uYzU1NjJmNiAxMDA2NDQKLS0tLSBhL3NyYy9rbXNjb25fdGVybWluYWwuYwotKysrIGIv c3JjL2ttc2Nvbl90ZXJtaW5hbC5jCi1AQCAtNjQ1LDcgKzY0NSw3IEBAIHN0YXRpYyB2b2lkIHJv dGF0ZV9jY3dfYWxsKHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0pCi0gCXVwZGF0ZV9wb2lu dGVyX21heF9hbGwodGVybSk7Ci0gfQotIAotLXN0YXRpYyBpbnQgYWRkX2Rpc3BsYXkoc3RydWN0 IGttc2Nvbl90ZXJtaW5hbCAqdGVybSwgc3RydWN0IGRpc3BsYXkgKmRpc3ApCi0raW50IHRlcm1p bmFsX2FkZF9kaXNwbGF5KHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0sIHN0cnVjdCBkaXNw bGF5ICpkaXNwKQotIHsKLSAJc3RydWN0IHNobF9kbGlzdCAqaXRlcjsKLSAJc3RydWN0IHNjcmVl biAqc2NyOwotQEAgLTc0MSw3ICs3NDEsNyBAQCBzdGF0aWMgdm9pZCBmcmVlX3NjcmVlbihzdHJ1 Y3Qgc2NyZWVuICpzY3IsIGJvb2wgdXBkYXRlKQotIAl0ZXJtaW5hbF91cGRhdGVfc2l6ZV9ub3Rp ZnkodGVybSk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIHJtX2Rpc3BsYXkoc3RydWN0IGttc2Nvbl90 ZXJtaW5hbCAqdGVybSwgc3RydWN0IGRpc3BsYXkgKmRpc3ApCi0rdm9pZCB0ZXJtaW5hbF9ybV9k aXNwbGF5KHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0sIHN0cnVjdCBkaXNwbGF5ICpkaXNw KQotIHsKLSAJc3RydWN0IHNobF9kbGlzdCAqaXRlcjsKLSAJc3RydWN0IHNjcmVlbiAqc2NyOwot QEAgLTEwODAsNyArMTA4MCwzMCBAQCBzdGF0aWMgdm9pZCB0ZXJtaW5hbF9jbG9zZShzdHJ1Y3Qg a21zY29uX3Rlcm1pbmFsICp0ZXJtKQotIAl0ZXJtLT5vcGVuZWQgPSBmYWxzZTsKLSB9Ci0gCi0t c3RhdGljIHZvaWQgdGVybWluYWxfZGVzdHJveShzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJt KQotK3ZvaWQgdGVybWluYWxfcmVmcmVzaF9kaXNwbGF5cyhzdHJ1Y3Qga21zY29uX3Rlcm1pbmFs ICp0ZXJtKQotK3sKLSsJaWYgKHRlcm0tPnBvaW50ZXIudmlzaWJsZSkKLSsJCWh3X2N1cnNvcl9z aG93KHRlcm0sIHRlcm0tPnBvaW50ZXIueCwgdGVybS0+cG9pbnRlci55KTsKLSsJcmVkcmF3X2Fs bF90ZXh0KHRlcm0pOwotK30KLSsKLSt2b2lkIHRlcm1pbmFsX2FjdGl2YXRlKHN0cnVjdCBrbXNj b25fdGVybWluYWwgKnRlcm0pCi0rewotKwl0ZXJtLT5hd2FrZSA9IHRydWU7Ci0rCWlmICghdGVy bS0+b3BlbmVkKQotKwkJdGVybWluYWxfb3Blbih0ZXJtKTsKLSsJaWYgKHRlcm0tPnBvaW50ZXIu dmlzaWJsZSkKLSsJCWh3X2N1cnNvcl9zaG93KHRlcm0sIHRlcm0tPnBvaW50ZXIueCwgdGVybS0+ cG9pbnRlci55KTsKLSsJcmVkcmF3X2FsbF90ZXh0KHRlcm0pOwotK30KLSsKLSt2b2lkIHRlcm1p bmFsX2RlYWN0aXZhdGUoc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybSkKLSt7Ci0rCXRlcm0t PmF3YWtlID0gZmFsc2U7Ci0rCWh3X2N1cnNvcl9oaWRlKHRlcm0pOwotK30KLSsKLSt2b2lkIHRl cm1pbmFsX2Rlc3Ryb3koc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybSkKLSB7Ci0gCWxvZ19k ZWJ1ZygiZnJlZSB0ZXJtaW5hbCBvYmplY3QgJXAiLCB0ZXJtKTsKLSAKLUBAIC0xMDk5LDQzICsx MTIyLDYgQEAgc3RhdGljIHZvaWQgdGVybWluYWxfZGVzdHJveShzdHJ1Y3Qga21zY29uX3Rlcm1p bmFsICp0ZXJtKQotIAlmcmVlKHRlcm0pOwotIH0KLSAKLS1zdGF0aWMgaW50IHNlc3Npb25fZXZl bnQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qga21zY29uX3Nlc3Npb25f ZXZlbnQgKmV2LAotLQkJCSB2b2lkICpkYXRhKQotLXsKLS0Jc3RydWN0IGttc2Nvbl90ZXJtaW5h bCAqdGVybSA9IGRhdGE7Ci0tCi0tCXN3aXRjaCAoZXYtPnR5cGUpIHsKLS0JY2FzZSBLTVNDT05f U0VTU0lPTl9ESVNQTEFZX05FVzoKLS0JCWFkZF9kaXNwbGF5KHRlcm0sIGV2LT5kaXNwKTsKLS0J CWJyZWFrOwotLQljYXNlIEtNU0NPTl9TRVNTSU9OX0RJU1BMQVlfR09ORToKLS0JCXJtX2Rpc3Bs YXkodGVybSwgZXYtPmRpc3ApOwotLQkJYnJlYWs7Ci0tCWNhc2UgS01TQ09OX1NFU1NJT05fRElT UExBWV9SRUZSRVNIOgotLQkJaWYgKHRlcm0tPnBvaW50ZXIudmlzaWJsZSkKLS0JCQlod19jdXJz b3Jfc2hvdyh0ZXJtLCB0ZXJtLT5wb2ludGVyLngsIHRlcm0tPnBvaW50ZXIueSk7Ci0tCQlyZWRy YXdfYWxsX3RleHQodGVybSk7Ci0tCQlicmVhazsKLS0JY2FzZSBLTVNDT05fU0VTU0lPTl9BQ1RJ VkFURToKLS0JCXRlcm0tPmF3YWtlID0gdHJ1ZTsKLS0JCWlmICghdGVybS0+b3BlbmVkKQotLQkJ CXRlcm1pbmFsX29wZW4odGVybSk7Ci0tCQlpZiAodGVybS0+cG9pbnRlci52aXNpYmxlKQotLQkJ CWh3X2N1cnNvcl9zaG93KHRlcm0sIHRlcm0tPnBvaW50ZXIueCwgdGVybS0+cG9pbnRlci55KTsK LS0JCXJlZHJhd19hbGxfdGV4dCh0ZXJtKTsKLS0JCWJyZWFrOwotLQljYXNlIEtNU0NPTl9TRVNT SU9OX0RFQUNUSVZBVEU6Ci0tCQl0ZXJtLT5hd2FrZSA9IGZhbHNlOwotLQkJaHdfY3Vyc29yX2hp ZGUodGVybSk7Ci0tCQlicmVhazsKLS0JY2FzZSBLTVNDT05fU0VTU0lPTl9VTlJFR0lTVEVSOgot LQkJdGVybWluYWxfZGVzdHJveSh0ZXJtKTsKLS0JCWJyZWFrOwotLQl9Ci0tCi0tCXJldHVybiAw OwotLX0KLS0KLSBzdGF0aWMgdm9pZCBwdHlfaW5wdXQoc3RydWN0IGttc2Nvbl9wdHkgKnB0eSwg Y29uc3QgY2hhciAqdTgsIHNpemVfdCBsZW4sIHZvaWQgKmRhdGEpCi0gewotIAlzdHJ1Y3Qga21z Y29uX3Rlcm1pbmFsICp0ZXJtID0gZGF0YTsKLUBAIC0xMTYzLDI2ICsxMTQ5LDI1IEBAIHN0YXRp YyB2b2lkIHdyaXRlX2V2ZW50KHN0cnVjdCB0c21fdnRlICp2dGUsIGNvbnN0IGNoYXIgKnU4LCBz aXplX3QgbGVuLCB2b2lkICpkCi0gCWttc2Nvbl9wdHlfd3JpdGUodGVybS0+cHR5LCB1OCwgbGVu KTsKLSB9Ci0gCi0taW50IGttc2Nvbl90ZXJtaW5hbF9yZWdpc3RlcihzdHJ1Y3Qga21zY29uX3Nl c3Npb24gKipvdXQsIHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwKLS0JCQkgICAgIHVuc2lnbmVk IGludCB2dG5yKQotK3N0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm1pbmFsX25ldyhzdHJ1Y3Qg a21zY29uX3Nlc3Npb24gKnNlc3Npb24sIHVuc2lnbmVkIGludCB2dG5yLAotKwkJCQkgICAgIHN0 cnVjdCBjb25mX2N0eCAqY29uZl9jdHgsIHN0cnVjdCBldl9lbG9vcCAqZWxvb3AsCi0rCQkJCSAg ICAgc3RydWN0IGlucHV0ICppbnB1dCwgY29uc3QgY2hhciAqc2VhdF9uYW1lKQotIHsKLSAJc3Ry dWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybTsKLSAJaW50IHJldDsKLSAKLS0JaWYgKCFvdXQgfHwg IXNlYXQpCi0tCQlyZXR1cm4gLUVJTlZBTDsKLS0KLSAJdGVybSA9IG1hbGxvYyhzaXplb2YoKnRl cm0pKTsKLSAJaWYgKCF0ZXJtKQotLQkJcmV0dXJuIC1FTk9NRU07Ci0rCQlyZXR1cm4gTlVMTDsK LSAKLSAJbWVtc2V0KHRlcm0sIDAsIHNpemVvZigqdGVybSkpOwotIAl0ZXJtLT5yZWYgPSAxOwot LQl0ZXJtLT5lbG9vcCA9IGttc2Nvbl9zZWF0X2dldF9lbG9vcChzZWF0KTsKLS0JdGVybS0+aW5w dXQgPSBrbXNjb25fc2VhdF9nZXRfaW5wdXQoc2VhdCk7Ci0rCXRlcm0tPnNlc3Npb24gPSBzZXNz aW9uOwotKwl0ZXJtLT5lbG9vcCA9IGVsb29wOwotKwl0ZXJtLT5pbnB1dCA9IGlucHV0OwotIAlz aGxfZGxpc3RfaW5pdCgmdGVybS0+c2NyZWVucyk7Ci0gCi0tCXRlcm0tPmNvbmZfY3R4ID0ga21z Y29uX3NlYXRfZ2V0X2NvbmYoc2VhdCk7Ci0rCXRlcm0tPmNvbmZfY3R4ID0gY29uZl9jdHg7Ci0g CXRlcm0tPmNvbmYgPSBjb25mX2N0eF9nZXRfbWVtKHRlcm0tPmNvbmZfY3R4KTsKLSAKLSAJc3Ry bmNweSh0ZXJtLT5mb250X2F0dHIubmFtZSwgdGVybS0+Y29uZi0+Zm9udF9uYW1lLCBLTVNDT05f Rk9OVF9NQVhfTkFNRSAtIDEpOwotQEAgLTEyMjEsNyArMTIwNiw3IEBAIGludCBrbXNjb25fdGVy bWluYWxfcmVnaXN0ZXIoc3RydWN0IGttc2Nvbl9zZXNzaW9uICoqb3V0LCBzdHJ1Y3Qga21zY29u X3NlYXQgKnNlCi0gCQlnb3RvIGVycl9mb250OwotIAotIAlyZXQgPSBrbXNjb25fcHR5X3NldF9j b25mKHRlcm0tPnB0eSwgdGVybS0+Y29uZi0+dGVybSwgInRydWVjb2xvciIsIHRlcm0tPmNvbmYt PmFyZ3YsCi0tCQkJCSAga21zY29uX3NlYXRfZ2V0X25hbWUoc2VhdCksIHZ0bnIsIHRlcm0tPmNv bmYtPnJlc2V0X2VudiwKLSsJCQkJICBzZWF0X25hbWUsIHZ0bnIsIHRlcm0tPmNvbmYtPnJlc2V0 X2VudiwKLSAJCQkJICB0ZXJtLT5jb25mLT5iYWNrc3BhY2VfZGVsZXRlKTsKLSAJaWYgKHJldCkK LSAJCWdvdG8gZXJyX3B0eTsKLUBAIC0xMjQxLDIwICsxMjI2LDExIEBAIGludCBrbXNjb25fdGVy bWluYWxfcmVnaXN0ZXIoc3RydWN0IGttc2Nvbl9zZXNzaW9uICoqb3V0LCBzdHJ1Y3Qga21zY29u X3NlYXQgKnNlCi0gCQkJZ290byBlcnJfaW5wdXQ7Ci0gCX0KLSAKLS0JcmV0ID0ga21zY29uX3Nl YXRfcmVnaXN0ZXJfc2Vzc2lvbihzZWF0LCAmdGVybS0+c2Vzc2lvbiwgc2Vzc2lvbl9ldmVudCwg dGVybSk7Ci0tCWlmIChyZXQpIHsKLS0JCWxvZ19lcnJvcigiY2Fubm90IHJlZ2lzdGVyIHNlc3Np b24gZm9yIHRlcm1pbmFsOiAlZCIsIHJldCk7Ci0tCQlnb3RvIGVycl9wb2ludGVyOwotLQl9Ci0t Ci0gCWV2X2Vsb29wX3JlZih0ZXJtLT5lbG9vcCk7Ci0gCWlucHV0X3JlZih0ZXJtLT5pbnB1dCk7 Ci0tCSpvdXQgPSB0ZXJtLT5zZXNzaW9uOwotIAlsb2dfZGVidWcoIm5ldyB0ZXJtaW5hbCBvYmpl Y3QgJXAiLCB0ZXJtKTsKLS0JcmV0dXJuIDA7Ci0rCXJldHVybiB0ZXJtOwotIAotLWVycl9wb2lu dGVyOgotLQlpbnB1dF91bnJlZ2lzdGVyX3BvaW50ZXJfY2IodGVybS0+aW5wdXQsIHBvaW50ZXJf ZXZlbnQsIHRlcm0pOwotIGVycl9pbnB1dDoKLSAJaW5wdXRfdW5yZWdpc3Rlcl9rZXlfY2IodGVy bS0+aW5wdXQsIGlucHV0X2V2ZW50LCB0ZXJtKTsKLSBlcnJfcHR5ZmQ6Ci1AQCAtMTI2OSw1ICsx MjQ1LDUgQEAgZXJyX2NvbjoKLSAJdHNtX3NjcmVlbl91bnJlZih0ZXJtLT5jb25zb2xlKTsKLSBl cnJfZnJlZToKLSAJZnJlZSh0ZXJtKTsKLS0JcmV0dXJuIHJldDsKLSsJcmV0dXJuIE5VTEw7Ci0g fQotZGlmZiAtLWdpdCBhL3NyYy9rbXNjb25fdGVybWluYWwuaCBiL3NyYy9rbXNjb25fdGVybWlu YWwuaAotaW5kZXggY2Q3NGJhYi4uNTUyMjQyYyAxMDA2NDQKLS0tLSBhL3NyYy9rbXNjb25fdGVy bWluYWwuaAotKysrIGIvc3JjL2ttc2Nvbl90ZXJtaW5hbC5oCi1AQCAtMzMsMjMgKzMzLDIxIEBA Ci0gI2lmbmRlZiBLTVNDT05fVEVSTUlOQUxfSAotICNkZWZpbmUgS01TQ09OX1RFUk1JTkFMX0gK LSAKLS0jaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUg Imttc2Nvbl9zZWF0LmgiCi0tCi0tI2lmZGVmIEJVSUxEX0VOQUJMRV9TRVNTSU9OX1RFUk1JTkFM Ci0tCi0taW50IGttc2Nvbl90ZXJtaW5hbF9yZWdpc3RlcihzdHJ1Y3Qga21zY29uX3Nlc3Npb24g KipvdXQsIHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwKLS0JCQkgICAgIHVuc2lnbmVkIGludCB2 dG5yKTsKLS0KLS0jZWxzZSAvKiAhQlVJTERfRU5BQkxFX1NFU1NJT05fVEVSTUlOQUwgKi8KLS0K LS1zdGF0aWMgaW5saW5lIGludCBrbXNjb25fdGVybWluYWxfcmVnaXN0ZXIoc3RydWN0IGttc2Nv bl9zZXNzaW9uICoqb3V0LCBzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsCi0tCQkJCQkgICB1bnNp Z25lZCBpbnQgdnRucikKLS17Ci0tCXJldHVybiAtRU9QTk9UU1VQUDsKLS19Ci0tCi0tI2VuZGlm IC8qIEJVSUxEX0VOQUJMRV9TRVNTSU9OX1RFUk1JTkFMICovCi0rc3RydWN0IGNvbmZfY3R4Owot K3N0cnVjdCBkaXNwbGF5OwotK3N0cnVjdCBldl9lbG9vcDsKLStzdHJ1Y3Qga21zY29uX3Rlcm1p bmFsOwotK3N0cnVjdCBrbXNjb25fc2Vzc2lvbjsKLStzdHJ1Y3QgaW5wdXQ7Ci0rCi0rc3RydWN0 IGttc2Nvbl90ZXJtaW5hbCAqdGVybWluYWxfbmV3KHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vz c2lvbiwgdW5zaWduZWQgaW50IHZ0bnIsCi0rCQkJCSAgICAgc3RydWN0IGNvbmZfY3R4ICpjb25m X2N0eCwgc3RydWN0IGV2X2Vsb29wICplbG9vcCwKLSsJCQkJICAgICBzdHJ1Y3QgaW5wdXQgKmlu cHV0LCBjb25zdCBjaGFyICpzZWF0X25hbWUpOwotK3ZvaWQgdGVybWluYWxfZGVzdHJveShzdHJ1 Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtKTsKLStpbnQgdGVybWluYWxfYWRkX2Rpc3BsYXkoc3Ry dWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybSwgc3RydWN0IGRpc3BsYXkgKmRpc3ApOwotK3ZvaWQg dGVybWluYWxfcm1fZGlzcGxheShzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtLCBzdHJ1Y3Qg ZGlzcGxheSAqZGlzcCk7Ci0rdm9pZCB0ZXJtaW5hbF9yZWZyZXNoX2Rpc3BsYXlzKHN0cnVjdCBr bXNjb25fdGVybWluYWwgKnRlcm0pOwotK3ZvaWQgdGVybWluYWxfYWN0aXZhdGUoc3RydWN0IGtt c2Nvbl90ZXJtaW5hbCAqdGVybSk7Ci0rdm9pZCB0ZXJtaW5hbF9kZWFjdGl2YXRlKHN0cnVjdCBr bXNjb25fdGVybWluYWwgKnRlcm0pOwotIAotICNlbmRpZiAvKiBLTVNDT05fVEVSTUlOQUxfSCAq LwotZGlmZiAtLWdpdCBhL3NyYy9tZXNvbi5idWlsZCBiL3NyYy9tZXNvbi5idWlsZAotaW5kZXgg OTU0N2ZlMS4uMWM0YmExMiAxMDA2NDQKLS0tLSBhL3NyYy9tZXNvbi5idWlsZAotKysrIGIvc3Jj L21lc29uLmJ1aWxkCi1AQCAtODgsMTYgKzg4LDI3IEBAIGttc2Nvbl9zcmNzID0gWwotICAgJ2tt c2Nvbl9jb25mLmMnLAotICAgJ2ttc2Nvbl9pc3N1ZS5jJywKLSAgICdrbXNjb25fbWFpbi5jJywK LSsgICdrbXNjb25fdGVybWluYWwuYycsCi0gXQotLWlmIGVuYWJsZV9zZXNzaW9uX2R1bW15Ci0t ICBrbXNjb25fc3JjcyArPSAna21zY29uX2R1bW15LmMnCi0tZW5kaWYKLS1pZiBlbmFibGVfc2Vz c2lvbl90ZXJtaW5hbAotLSAga21zY29uX3NyY3MgKz0gJ2ttc2Nvbl90ZXJtaW5hbC5jJwotK2tt c2Nvbl9kZXAgPSBbeGtiY29tbW9uX2RlcHMsCi0rICBsaWJ0c21fZGVwcywKLSsgIHRocmVhZHNf ZGVwcywKLSsgIGRsX2RlcHMsCi0rICBjb25mX2RlcHMsCi0rICBzaGxfZGVwcywKLSsgIGVsb29w X2RlcHMsCi0rICB1dGVybV9kZXBzLAotKyAgcmVuZGVyX2RlcHMsCi0rICBmb250X2RlcHMsCi0r XQotKwotK2lmIGVuYWJsZV9kYnVzCi0rICBrbXNjb25fc3JjcyArPSAnZGJ1cy5jJwotKyAga21z Y29uX2RlcCArPSBkYnVzX2RlcHMKLSBlbmRpZgotIGttc2NvbiA9IGV4ZWN1dGFibGUoJ2ttc2Nv bicsIGttc2Nvbl9zcmNzLAotLSAgZGVwZW5kZW5jaWVzOiBbeGtiY29tbW9uX2RlcHMsIGxpYnRz bV9kZXBzLCB0aHJlYWRzX2RlcHMsIGRsX2RlcHMsIGNvbmZfZGVwcywgc2hsX2RlcHMsIGVsb29w X2RlcHMsIHV0ZXJtX2RlcHMsIHJlbmRlcl9kZXBzLCBmb250X2RlcHNdLAotKyAgZGVwZW5kZW5j aWVzOiBrbXNjb25fZGVwLAotICAgZXhwb3J0X2R5bmFtaWM6IHRydWUsCi0gICBpbnN0YWxsOiB0 cnVlLAotLSAgaW5zdGFsbF9kaXI6IGxpYmV4ZWNkaXIsCi0rICBpbnN0YWxsX2RpcjogYmluZGly LAotICkKLWRpZmYgLS1naXQgYS9zcmMvc2hsL2RsaXN0LmggYi9zcmMvc2hsL2RsaXN0LmgKLWlu ZGV4IDgzY2QyMzMuLjBhZjUwOTQgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hsL2RsaXN0LmgKLSsrKyBi L3NyYy9zaGwvZGxpc3QuaAotQEAgLTEwMiw2ICsxMDIsMTYgQEAgc3RhdGljIGlubGluZSBib29s IHNobF9kbGlzdF9lbXB0eShzdHJ1Y3Qgc2hsX2RsaXN0ICpoZWFkKQotIAotICNkZWZpbmUgc2hs X2RsaXN0X2xhc3QoaGVhZCwgdHlwZSwgbWVtYmVyKSBzaGxfZGxpc3RfZW50cnkoKGhlYWQpLT5w cmV2LCB0eXBlLCBtZW1iZXIpCi0gCi0rI2RlZmluZSBzaGxfZGxpc3RfbmV4dChpdGVyLCBoZWFk LCBtZW1iZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKwkoKGl0ZXIpLT5tZW1iZXIubmV4dCA9PSAoaGVhZCkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwkJID8g TlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rCQkgOiBzaGxfZGxpc3RfZW50cnkoKGl0ZXIpLT5t ZW1iZXIubmV4dCwgdHlwZW9mKCppdGVyKSwgbGlzdCkpCi0rCi0rI2RlZmluZSBzaGxfZGxpc3Rf cHJldihpdGVyLCBoZWFkLCBtZW1iZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKwkoKGl0ZXIpLT5tZW1iZXIucHJldiA9PSAoaGVh ZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKwkJID8gTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rCQkgOiBzaGxfZGxpc3Rf ZW50cnkoKGl0ZXIpLT5tZW1iZXIucHJldiwgdHlwZW9mKCppdGVyKSwgbGlzdCkpCi0rCi0gI2Rl ZmluZSBzaGxfZGxpc3RfZm9yX2VhY2goaXRlciwgaGVhZCkgZm9yIChpdGVyID0gKGhlYWQpLT5u ZXh0OyBpdGVyICE9IChoZWFkKTsgaXRlciA9IGl0ZXItPm5leHQpCi0gCi0gI2RlZmluZSBzaGxf ZGxpc3RfZm9yX2VhY2hfYnV0X29uZShpdGVyLCBzdGFydCwgaGVhZCkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3Rf aW5wdXQuYyBiL3Rlc3RzL3Rlc3RfaW5wdXQuYwotaW5kZXggMGVjZWZjMC4uYjIxOGVkYyAxMDA2 NDQKLS0tLSBhL3Rlc3RzL3Rlc3RfaW5wdXQuYwotKysrIGIvdGVzdHMvdGVzdF9pbnB1dC5jCi1A QCAtMTI4LDExICsxMjgsMTIgQEAgc3RhdGljIHZvaWQgc2V0dXBfaW5wdXQoc3RydWN0IHV0ZXJt X21vbml0b3IgKm1vbikKLSAJaWYgKHJldCkKLSAJCXJldHVybjsKLSAJcmV0ID0gaW5wdXRfc2V0 X2tleW1hcChpbnB1dCwgaW5wdXRfY29uZi54a2JfbW9kZWwsIGlucHV0X2NvbmYueGtiX2xheW91 dCwKLS0JCQkgICAgICAgaW5wdXRfY29uZi54a2JfdmFyaWFudCwgaW5wdXRfY29uZi54a2Jfb3B0 aW9ucywgaW5wdXRfY29uZi5sb2NhbGUsCi0tCQkJICAgICAgIGlucHV0X2NvbmYueGtiX2tleW1h cCwgaW5wdXRfY29uZi54a2JfY29tcG9zZV9maWxlLAotLQkJCSAgICAgICBjb21wb3NlX2ZpbGVf bGVuKTsKLSsJCQkgICAgICAgaW5wdXRfY29uZi54a2JfdmFyaWFudCwgaW5wdXRfY29uZi54a2Jf b3B0aW9ucywKLSsJCQkgICAgICAgaW5wdXRfY29uZi54a2Jfa2V5bWFwKTsKLSAJaWYgKHJldCkK LSAJCXJldHVybjsKLSsKLSsJaW5wdXRfc2V0X2NvbXBvc2UoaW5wdXQsIGlucHV0X2NvbmYubG9j YWxlLCBjb21wb3NlX2ZpbGUsIGNvbXBvc2VfZmlsZV9sZW4pOwotIAlpbnB1dF9zZXRfY29uZihp bnB1dCwgMjUwLCA1MCwgdHJ1ZSk7Ci0gCXJldCA9IGlucHV0X3JlZ2lzdGVyX2tleV9jYihpbnB1 dCwgaW5wdXRfYXJyaXZlZCwgTlVMTCk7Ci0gCWlmIChyZXQpCi0tLSAKLTIuNTQuMAotCgpkaWZm IC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggZDI1OTliMS4uNzQ0ZjI1MCAxMDA2NDQK LS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDIgKzEgQEAKLVNIQTUxMiAoa21zY29u LTEwLjAuMC50YXIuZ3opID0gZGEzYjdmMmQ4YWFhNjI0NTYxMzY5OTM5OTI4ZGJjNDc5ZGE0YWJk OTYwMGY2MjNkM2ViNDlhNDY3NDY3NGI4NGYyMDBjNzI2MThmYTU3OTk2YmI3MzliNWIwNjAwZWFi ZDlmZjI3YjQ2YzM4MDhlMGM1MmJjODA0MTZlMDk2YjUKLVNIQTUxMiAoa21zY29uLTkuMy41LnRh ci5neikgPSAzNTk1ZmVmOWFmNWFlYTkzZGFlNWM4ZmFkMmI5NzQzZjE2N2QwMjI0YmVjNjJhNWYz OGYyMGEzODU4MzJhYTRhZmI4ZjI2OGI3NzdiNTIzYzllYzU1ZGIwZTlmODhlODVjZWNiZGRiNzNj NDA0NDE1OThkMTUxY2M2Y2Y2NTFlNAorU0hBNTEyIChrbXNjb24tMTAuMC4xLnRhci5neikgPSA5 ZGIwNzY1MWU0MjY3NjNiZmViMDVhN2FmMDEzOTQ1ZjEzNzI3YjM3MzY5YjBhNWMxZmFlZjI4MTk4 ZTk2Y2YwZDI3ZWRkNTBiNjFkM2Q0MzQxMTFkMzE1ODA4ZjhmMzAxNDY1Y2JmOGQxMDczNGQyOWJh OTY4OTBmMWQ5MzBkZgo=