From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jakub Filak To: git-commits@fedoraproject.org Subject: [rpms/abrt] update-2.17.9-f44: systemd-journal koops, python exceptions without traceback Date: Mon, 03 Aug 2026 11:04:11 GMT Message-ID: <178575505176.1.8500532367860412558.rpms-abrt-f4e24995ef9f@fedoraproject.org> List-ID: X-Git-Repo: rpms/abrt X-Git-Branch: update-2.17.9-f44 X-Git-Rev: f4e24995ef9f0681f1f548a15e9f0e333b0e5d12 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvYWJydApCcmFuY2gg OiB1cGRhdGUtMi4xNy45LWY0NApDb21taXQgOiBmNGUyNDk5NWVmOWYwNjgxZjFmNTQ4YTE1ZTlm MGUzMzNiMGU1ZDEyCkF1dGhvciA6IEpha3ViIEZpbGFrIDxqZmlsYWtAcmVkaGF0LmNvbT4KRGF0 ZSAgIDogMjAxNC0wNy0xNlQxNTozOTozMyswMjowMApTdGF0cyAgOiArMjA4MC8tMSBpbiA0IGZp bGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9hYnJ0L2Mv ZjRlMjQ5OTVlZjlmMDY4MWYxZjU0OGExNWU5ZjBlMzMzYjBlNWQxMj9icmFuY2g9dXBkYXRlLTIu MTcuOS1mNDQKCkxvZzoKc3lzdGVtZC1qb3VybmFsIGtvb3BzLCBweXRob24gZXhjZXB0aW9ucyB3 aXRob3V0IHRyYWNlYmFjawoKLS0tCmRpZmYgLS1naXQgYS8wMDAyLXB5dGhvbi1zdXBwb3J0LWV4 Y2VwdGlvbnMtd2l0aG91dC10cmFjZWJhY2sucGF0Y2ggYi8wMDAyLXB5dGhvbi1zdXBwb3J0LWV4 Y2VwdGlvbnMtd2l0aG91dC10cmFjZWJhY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMWIwYjJhMAotLS0gL2Rldi9udWxsCisrKyBiLzAwMDItcHl0aG9uLXN1cHBv cnQtZXhjZXB0aW9ucy13aXRob3V0LXRyYWNlYmFjay5wYXRjaApAQCAtMCwwICsxLDQwIEBACitG cm9tIDZiNTdjZWViYjEzNjZlMjMzMjFiMWZlNDBkMTUyODU3MDhlMTY4NjkgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBKYWt1YiBGaWxhayA8amZpbGFrQHJlZGhhdC5jb20+CitEYXRl OiBXZWQsIDkgSnVsIDIwMTQgMTc6NTU6MzYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzldIHB5 dGhvbjogc3VwcG9ydCBleGNlcHRpb25zIHdpdGhvdXQgdHJhY2ViYWNrCisKK2UuZy4gU3ludGF4 RXJyb3IgKHB5dGhvbi0yLjcuNS0xMy5mYzIwLCBweXRob24tMi43LjctMi5mYzIxKQorCitTaWdu ZWQtb2ZmLWJ5OiBKYWt1YiBGaWxhayA8amZpbGFrQHJlZGhhdC5jb20+CistLS0KKyBzcmMvaG9v a3MvYWJydF9leGNlcHRpb25faGFuZGxlci5weS5pbiB8IDE0ICsrKysrKysrLS0tLS0tCisgMSBm aWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdp dCBhL3NyYy9ob29rcy9hYnJ0X2V4Y2VwdGlvbl9oYW5kbGVyLnB5LmluIGIvc3JjL2hvb2tzL2Fi cnRfZXhjZXB0aW9uX2hhbmRsZXIucHkuaW4KK2luZGV4IGNiMzJlMTQuLmZhNGYzNGYgMTAwNjQ0 CistLS0gYS9zcmMvaG9va3MvYWJydF9leGNlcHRpb25faGFuZGxlci5weS5pbgorKysrIGIvc3Jj L2hvb2tzL2FicnRfZXhjZXB0aW9uX2hhbmRsZXIucHkuaW4KK0BAIC01NSwxMiArNTUsMTQgQEAg ZGVmIHdyaXRlX2R1bXAodGJfdGV4dCwgdGIpOgorICAgICAgICAgZXhlY3V0YWJsZSA9IHN5cy5h cmd2WzBdCisgCisgICAgIGRzb19saXN0ID0gTm9uZQorLSAgICB0cnk6CistICAgICAgICBpbXBv cnQgcnBtCistICAgICAgICBkc29fbGlzdCA9IGdldF9kc29fbGlzdCh0YikKKy0gICAgZXhjZXB0 IEltcG9ydEVycm9yIGFzIGltcGVycjoKKy0gICAgICAgIHN5c2xvZygiUlBNIG1vZHVsZSBub3Qg YXZhaWxhYmxlLCBjYW5ub3QgcXVlcnkgUlBNIGRiIGZvciBwYWNrYWdlICJcCistICAgICAgICAg ICAgICAgIm5hbWVzIikKKysgICAgIyBUcmFjZSBiYWNrIGlzIE5vbmUgaW4gY2FzZSBvZiBTeW50 YXhFcnJvciBleGNlcHRpb24uCisrICAgIGlmIHRiOgorKyAgICAgICAgdHJ5OgorKyAgICAgICAg ICAgIGltcG9ydCBycG0KKysgICAgICAgICAgICBkc29fbGlzdCA9IGdldF9kc29fbGlzdCh0YikK KysgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBpbXBlcnI6CisrICAgICAgICAgICAgc3lz bG9nKCJSUE0gbW9kdWxlIG5vdCBhdmFpbGFibGUsIGNhbm5vdCBxdWVyeSBSUE0gZGIgZm9yIHBh Y2thZ2UgIlwKKysgICAgICAgICAgICAgICAgICAgIm5hbWVzIikKKyAKKyAgICAgIyBPcGVuIEFC UlQgZGFlbW9uJ3Mgc29ja2V0IGFuZCB3cml0ZSBkYXRhIHRvIGl0CisgICAgIHRyeToKKy0tIAor MS45LjMKKwoKZGlmZiAtLWdpdCBhLzAwMDQta29vcHMtZHVtcC1vb3BzZXMtZnJvbS1zeXN0ZW1k LWpvdXJuYWwucGF0Y2ggYi8wMDA0LWtvb3BzLWR1bXAtb29wc2VzLWZyb20tc3lzdGVtZC1qb3Vy bmFsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZTA0ODcKLS0t IC9kZXYvbnVsbAorKysgYi8wMDA0LWtvb3BzLWR1bXAtb29wc2VzLWZyb20tc3lzdGVtZC1qb3Vy bmFsLnBhdGNoCkBAIC0wLDAgKzEsMTk4NyBAQAorRnJvbSBjMDM2NjA5ZDM0ZGZiZmRlZDk4OTFi ZTgzZDVlNDNkYjBhOWZlYWUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFrdWIg RmlsYWsgPGpmaWxha0ByZWRoYXQuY29tPgorRGF0ZTogTW9uLCA3IEp1bCAyMDE0IDE4OjExOjEz ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggNC85XSBrb29wczogZHVtcCBvb3BzZXMgZnJvbSBzeXN0 ZW1kLWpvdXJuYWwKKworUmVzb2x2ZXMgcmhieiMxMDU5NzI0CistLS0KKyBjb25maWd1cmUuYWMg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKworIGRvYy9NYWtlZmlsZS5hbSAgICAgICAg ICAgICAgICAgICAgICB8ICAgMSArCisgZG9jL2FicnQtZHVtcC1qb3VybmFsLW9vcHMudHh0ICAg ICAgIHwgIDY4ICsrKysrKworIGluaXQtc2NyaXB0cy9hYnJ0LW9vcHMuc2VydmljZSAgICAgICB8 ICAgNCArLQorIHBvL1BPVEZJTEVTLmluICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCisg c3JjL2luY2x1ZGUvbGliYWJydC5oICAgICAgICAgICAgICAgIHwgIDE5ICsrCisgc3JjL2xpYi9r ZXJuZWwuYyAgICAgICAgICAgICAgICAgICAgIHwgMTAzICsrKysrLS0tLQorIHNyYy9wbHVnaW5z L01ha2VmaWxlLmFtICAgICAgICAgICAgICB8ICAyMyArKworIHNyYy9wbHVnaW5zL2FicnQtZHVt cC1qb3VybmFsLW9vcHMuYyB8IDM5NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KworIHNyYy9wbHVnaW5zL2FicnQtZHVtcC1vb3BzLmMgICAgICAgICB8IDMxMyArKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL3BsdWdpbnMvYWJydC1qb3VybmFsLmMgICAgICAgICAg IHwgMjk1ICsrKysrKysrKysrKysrKysrKysrKysrKysrCisgc3JjL3BsdWdpbnMvYWJydC1qb3Vy bmFsLmggICAgICAgICAgIHwgMTEwICsrKysrKysrKysKKyBzcmMvcGx1Z2lucy9vb3BzLXV0aWxz LmMgICAgICAgICAgICAgfCAyNzkgKysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9wbHVn aW5zL29vcHMtdXRpbHMuaCAgICAgICAgICAgICB8ICA0OCArKysrKworIDE1IGZpbGVzIGNoYW5n ZWQsIDEzNTMgaW5zZXJ0aW9ucygrKSwgMzEwIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEw MDY0NCBkb2MvYWJydC1kdW1wLWpvdXJuYWwtb29wcy50eHQKKyBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3BsdWdpbnMvYWJydC1kdW1wLWpvdXJuYWwtb29wcy5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9wbHVnaW5zL2FicnQtam91cm5hbC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9wbHVn aW5zL2FicnQtam91cm5hbC5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9wbHVnaW5zL29vcHMt dXRpbHMuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcGx1Z2lucy9vb3BzLXV0aWxzLmgKKwor ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYzA1MWVjNS4u MDM4ODJlOSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitA QCAtMTQwLDYgKzE0MCw3IEBAIFBLR19DSEVDS19NT0RVTEVTKFtMSUJSRVBPUlRfR1RLXSwgW2xp YnJlcG9ydC1ndGtdKQorIFBLR19DSEVDS19NT0RVTEVTKFtQT0xLSVRdLCBbcG9sa2l0LWdvYmpl Y3QtMV0pCisgUEtHX0NIRUNLX01PRFVMRVMoW0dJT10sIFtnaW8tMi4wXSkKKyBQS0dfQ0hFQ0tf TU9EVUxFUyhbU0FUWVJdLCBbc2F0eXJdKQorK1BLR19DSEVDS19NT0RVTEVTKFtTWVNURU1EX0pP VVJOQUxdLCBbbGlic3lzdGVtZC1qb3VybmFsXSkKKyAKKyBQS0dfUFJPR19QS0dfQ09ORklHCisg QUNfQVJHX1dJVEgoW3N5c3RlbWRzeXN0ZW11bml0ZGlyXSwKK0BAIC0xNjcsNiArMTY4LDcgQEAg QUNfQ0hFQ0tfSEVBREVSUyhbbG9jYWxlLmhdKQorIENPTkZfRElSPScke3N5c2NvbmZkaXJ9LyR7 UEFDS0FHRV9OQU1FfScKKyBERUZBVUxUX0NPTkZfRElSPScke2RhdGFkaXJ9LyR7UEFDS0FHRV9O QU1FfS9jb25mLmQnCisgVkFSX1JVTj0nJHtsb2NhbHN0YXRlZGlyfS9ydW4nCisrVkFSX1NUQVRF PScke2xvY2Fsc3RhdGVkaXJ9L2xpYi8ke1BBQ0tBR0VfTkFNRX0nCisgUExVR0lOU19DT05GX0RJ Uj0nJHtzeXNjb25mZGlyfS8ke1BBQ0tBR0VfTkFNRX0vcGx1Z2lucycKKyBERUZBVUxUX1BMVUdJ TlNfQ09ORl9ESVI9JyR7ZGF0YWRpcn0vJHtQQUNLQUdFX05BTUV9L2NvbmYuZC9wbHVnaW5zJwor IEVWRU5UU19ESVI9JyR7ZGF0YWRpcn0vbGlicmVwb3J0L2V2ZW50cycKK0BAIC0yNTUsNiArMjU3 LDcgQEAgQUNfQVJHX0VOQUJMRShbbmF0aXZlLXVud2luZGVyXSwKKyBBQ19TVUJTVChDT05GX0RJ UikKKyBBQ19TVUJTVChERUZBVUxUX0NPTkZfRElSKQorIEFDX1NVQlNUKFZBUl9SVU4pCisrQUNf U1VCU1QoVkFSX1NUQVRFKQorIEFDX1NVQlNUKFBMVUdJTlNfQ09ORl9ESVIpCisgQUNfU1VCU1Qo REVGQVVMVF9QTFVHSU5TX0NPTkZfRElSKQorIEFDX1NVQlNUKEVWRU5UU19DT05GX0RJUikKK2Rp ZmYgLS1naXQgYS9kb2MvTWFrZWZpbGUuYW0gYi9kb2MvTWFrZWZpbGUuYW0KK2luZGV4IDU1Y2Iw ZjMuLjA2NGUyYmEgMTAwNjQ0CistLS0gYS9kb2MvTWFrZWZpbGUuYW0KKysrKyBiL2RvYy9NYWtl ZmlsZS5hbQorQEAgLTE5LDYgKzE5LDcgQEAgTUFOMV9UWFQgKz0gYWJydC1hY3Rpb24tcGVyZm9y bS1jY3BwLWFuYWx5c2lzLnR4dAorIE1BTjFfVFhUICs9IGFicnQtYWN0aW9uLW5vdGlmeS50eHQK KyBNQU4xX1RYVCArPSBhYnJ0LWFwcGxldC50eHQKKyBNQU4xX1RYVCArPSBhYnJ0LWR1bXAtb29w cy50eHQKKytNQU4xX1RYVCArPSBhYnJ0LWR1bXAtam91cm5hbC1vb3BzLnR4dAorIE1BTjFfVFhU ICs9IGFicnQtZHVtcC14b3JnLnR4dAorIE1BTjFfVFhUICs9IGFicnQtYXV0by1yZXBvcnRpbmcu dHh0CisgTUFOMV9UWFQgKz0gYWJydC1yZXRyYWNlLWNsaWVudC50eHQKK2RpZmYgLS1naXQgYS9k b2MvYWJydC1kdW1wLWpvdXJuYWwtb29wcy50eHQgYi9kb2MvYWJydC1kdW1wLWpvdXJuYWwtb29w cy50eHQKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lMGI4ZDc5CistLS0g L2Rldi9udWxsCisrKysgYi9kb2MvYWJydC1kdW1wLWpvdXJuYWwtb29wcy50eHQKK0BAIC0wLDAg KzEsNjggQEAKKythYnJ0LWR1bXAtam91cm5hbC1vb3BzKDEpCisrPT09PT09PT09PT09PT09PT09 PT09PT09PQorKworK05BTUUKKystLS0tCisrYWJydC1kdW1wLWpvdXJuYWwtb29wcyAtIEV4dHJh Y3Qgb29wcyBmcm9tIHN5c3RlbWQtam91cm5hbAorKworK1NZTk9QU0lTCisrLS0tLS0tLS0KKysn YWJydC1kdW1wLWpvdXJuYWwtb29wcycgWy12c294dGZdIFstZV0vWy1jIENVUlNPUl0gWy1kIERJ Ul0vWy1EXQorKworK0RFU0NSSVBUSU9OCisrLS0tLS0tLS0tLS0KKytUaGlzIHRvb2wgY3JlYXRl cyBwcm9ibGVtIGRpcmVjdG9yeSBmcm9tIG9vcHMgZXh0cmFjdGVkIGZyb20gc3lzdGVtZC1qb3Vy bmFsLgorK1RoZSB0b29sIGNhbiBmb2xsb3cgc3lzdGVtZC1qb3VybmFsIGFuZCBleHRyYWN0IG9v cHNlcyBpbiB0aW1lIG9mIHRoZWlyCisrb2NjdXJyZW5jZS4KKysKKytUaGUgZm9sbG93aW5nIHN0 YXJ0IGZyb20gdGhlIGxhc3Qgc2VlbiBjdXJzb3IuIElmIHRoZSBsYXN0IHNlZW4gY3Vyc29yIGZp bGUKKytkb2VzIG5vdCBleGlzdCwgdGhlIGZvbGxvd2luZyBzdGFydCBieSBzY2FubmluZyB0aGUg ZW50aXJlIHN5dGVtZC1qb3VybmFsIG9yCisrZnJvbSB0aGUgZW5kIGlmICctZScgb3B0aW9uIGlz IHNwZWNpZmllZC4KKysKKytGSUxFUworKy0tLS0tCisrL2V0Yy9hYnJ0L3BsdWdpbnMvb29wcy5j b25mOjoKKysgICBDb25maWd1cmF0aW9uIGZpbGUgd2hlcmUgdXNlciBjYW4gZGlzYWJsZSBkZXRl Y3Rpb24gb2Ygbm9uLWZhdGFsIE1DRXMKKysKKysvdmFyL2xpYi9hYnJ0L2FicnQtZHVtcC1qb3Vy bmFsLW9vcHMuc3RhdGU6OgorKyAgIFN0YXRlIGZpbGUgd2hlcmUgc3lzdGVtZC1qb3VybmFsIGN1 cnNvciB0byB0aGUgbGFzdCBzZWVuIG1lc3NhZ2UgaXMgc2F2ZWQKKysKKytPUFRJT05TCisrLS0t LS0tLQorKy12LCAtLXZlcmJvc2U6OgorKyAgIEJlIG1vcmUgdmVyYm9zZS4gQ2FuIGJlIGdpdmVu IG11bHRpcGxlIHRpbWVzLgorKworKy1zOjoKKysgICBMb2cgdG8gc3lzbG9nCisrCisrLW86Ogor KyAgIFByaW50IGZvdW5kIG9vcHNlcyBvbiBzdGFuZGFyZCBvdXRwdXQKKysKKystZCBESVI6Ogor KyAgIENyZWF0ZSBuZXcgcHJvYmxlbSBkaXJlY3RvcnkgaW4gRElSIGZvciBldmVyeSBvb3BzIGZv dW5kCisrCisrLUQ6OgorKyAgIFNhbWUgYXMgLWQgRHVtcExvY2F0aW9uLCBEdW1wTG9jYXRpb24g aXMgc3BlY2lmaWVkIGluIGFicnQuY29uZgorKworKy1zIENVUlNPUjo6CisrICAgU3RhcnRzIHNj YW5uaWcgc3lzdGVtZC1qb3VybmFsIGZyb20gQ1VSU09SCisrCisrLWU6OgorKyAgIFN0YXJ0cyBm b2xsb3dpbmcgc3lzdGVtZC1qb3VybmFsIGZyb20gdGhlIGVuZAorKworKy14OjoKKysgICBNYWtl IHRoZSBwcm9ibGVtIGRpcmVjdG9yeSB3b3JsZCByZWFkYWJsZS4gVXNhYmxlIG9ubHkgd2l0aCAt ZC8tRAorKworKy10OjoKKysgICBUaHJvdHRsZSBwcm9ibGVtIGRpcmVjdG9yeSBjcmVhdGlvbiB0 byAxIHBlciBzZWNvbmQKKysKKystZjo6CisrICAgRm9sbG93IHN5c3RlbWQtam91cm5hbAorKwor K1NFRSBBTFNPCisrLS0tLS0tLS0KKythYnJ0LmNvbmYoNSkKKysKKytBVVRIT1JTCisrLS0tLS0t LQorKyogQUJSVCB0ZWFtCitkaWZmIC0tZ2l0IGEvaW5pdC1zY3JpcHRzL2FicnQtb29wcy5zZXJ2 aWNlIGIvaW5pdC1zY3JpcHRzL2FicnQtb29wcy5zZXJ2aWNlCitpbmRleCBkOGFjMDI4Li42OWFh YWE5IDEwMDY0NAorLS0tIGEvaW5pdC1zY3JpcHRzL2FicnQtb29wcy5zZXJ2aWNlCisrKysgYi9p bml0LXNjcmlwdHMvYWJydC1vb3BzLnNlcnZpY2UKK0BAIC00LDggKzQsOCBAQCBBZnRlcj1hYnJ0 ZC5zZXJ2aWNlCisgUmVxdWlzaXRlPWFicnRkLnNlcnZpY2UKKyAKKyBbU2VydmljZV0KKy0jIFRP RE86IGRvIHdlIHJlYWxseSBuZWVkIGFic29sdXRlIHBhdGhzIGhlcmU/CistRXhlY1N0YXJ0PS9i aW4vc2ggLWMgJy9iaW4vZG1lc2cgfCAvdXNyL2Jpbi9hYnJ0LWR1bXAtb29wcyAteEQ7IGV4ZWMg L3Vzci9iaW4vYWJydC13YXRjaC1sb2cgLUYgImAvdXNyL2Jpbi9hYnJ0LWR1bXAtb29wcyAtbWAi IC92YXIvbG9nL21lc3NhZ2VzIC0tIC91c3IvYmluL2FicnQtZHVtcC1vb3BzIC14dEQnCisrIyBz eXN0ZW1kIHJlcXVpcmVzIGFic29sdXRlIHBhdGhzIHRvIGV4ZWN1dGFibGVzCisrRXhlY1N0YXJ0 PS91c3IvYmluL2FicnQtZHVtcC1qb3VybmFsLW9vcHMgLWZ4dEQKKyAKKyBbSW5zdGFsbF0KKyBX YW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAorZGlmZiAtLWdpdCBhL3BvL1BPVEZJTEVTLmluIGIv cG8vUE9URklMRVMuaW4KK2luZGV4IGZmOWI5N2EuLjE2MGNkOGIgMTAwNjQ0CistLS0gYS9wby9Q T1RGSUxFUy5pbgorKysrIGIvcG8vUE9URklMRVMuaW4KK0BAIC0zNSwxMiArMzUsMTQgQEAgc3Jj L3BsdWdpbnMvYWJydC1hY3Rpb24tdHJpbS1maWxlcy5jCisgc3JjL3BsdWdpbnMvYWJydC1nZGIt ZXhwbG9pdGFibGUKKyBzcmMvcGx1Z2lucy9hYnJ0LXdhdGNoLWxvZy5jCisgc3JjL3BsdWdpbnMv YWJydC1kdW1wLW9vcHMuYworK3NyYy9wbHVnaW5zL2FicnQtZHVtcC1qb3VybmFsLW9vcHMuYwor IHNyYy9wbHVnaW5zL2FicnQtZHVtcC14b3JnLmMKKyBzcmMvcGx1Z2lucy9hYnJ0LXJldHJhY2Ut Y2xpZW50LmMKKyBzcmMvcGx1Z2lucy9hbmFseXplX0xvY2FsR0RCLnhtbC5pbgorIHNyYy9wbHVn aW5zL2FuYWx5emVfUmV0cmFjZVNlcnZlci54bWwuaW4KKyBzcmMvcGx1Z2lucy9jb2xsZWN0X3hz ZXNzaW9uX2Vycm9ycy54bWwuaW4KKyBzcmMvcGx1Z2lucy9odHRwcy11dGlscy5jCisrc3JjL3Bs dWdpbnMvb29wcy11dGlscy5jCisgc3JjL3BsdWdpbnMvYm9kaGkuYworIAorIHNyYy9ob29rcy9h YnJ0LW1lcmdlLXBzdG9yZW9vcHMuYworZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYmFicnQu aCBiL3NyYy9pbmNsdWRlL2xpYmFicnQuaAoraW5kZXggZDZlYjRhNS4uMzc3MDRkZCAxMDA2NDQK Ky0tLSBhL3NyYy9pbmNsdWRlL2xpYmFicnQuaAorKysrIGIvc3JjL2luY2x1ZGUvbGliYWJydC5o CitAQCAtMTA5LDggKzEwOSwyNyBAQCBjaGFyICprZXJuZWxfdGFpbnRlZF9sb25nKGNvbnN0IGNo YXIgKnRhaW50ZWRfc2hvcnQpOworIGludCBrb29wc19oYXNoX3N0cl9leHQoY2hhciBoYXNoX3N0 cltTSEExX1JFU1VMVF9MRU4qMiArIDFdLCBjb25zdCBjaGFyICpvb3BzX2J1ZiwgaW50IGZyYW1l X2NvdW50LCBpbnQgZHVwaGFzX2ZsYWdzKTsKKyAjZGVmaW5lIGtvb3BzX2hhc2hfc3RyIGFicnRf a29vcHNfaGFzaF9zdHIKKyBpbnQga29vcHNfaGFzaF9zdHIoY2hhciBoYXNoX3N0cltTSEExX1JF U1VMVF9MRU4qMiArIDFdLCBjb25zdCBjaGFyICpvb3BzX2J1Zik7CisrCisrCisrI2RlZmluZSBr b29wc19saW5lX3NraXBfbGV2ZWwgYWJydF9rb29wc19saW5lX3NraXBfbGV2ZWwKKytpbnQga29v cHNfbGluZV9za2lwX2xldmVsKGNvbnN0IGNoYXIgKipjKTsKKysjZGVmaW5lIGtvb3BzX2xpbmVf c2tpcF9qaWZmaWVzIGFicnRfa29vcHNfbGluZV9za2lwX2ppZmZpZXMKKyt2b2lkIGtvb3BzX2xp bmVfc2tpcF9qaWZmaWVzKGNvbnN0IGNoYXIgKipjKTsKKysKKysvKgorKyAqIGV4dHJhY3Rfb29w cyB0cmllcyB0byBmaW5kIG9vcHMgc2lnbmF0dXJlcyBpbiBhIGxvZworKyAqLworK3N0cnVjdCBh YnJ0X2tvb3BzX2xpbmVfaW5mbyB7CisrICAgIGNoYXIgKnB0cjsKKysgICAgaW50IGxldmVsOwor K307CisrCisrI2RlZmluZSBrb29wc19leHRyYWN0X29vcHNlc19mcm9tX2xpbmVzIGFicnRfa29v cHNfZXh0cmFjdF9vb3BzZXNfZnJvbV9saW5lcworK3ZvaWQga29vcHNfZXh0cmFjdF9vb3BzZXNf ZnJvbV9saW5lcyhHTGlzdCAqKm9vcHNfbGlzdCwgY29uc3Qgc3RydWN0IGFicnRfa29vcHNfbGlu ZV9pbmZvICpsaW5lc19pbmZvLCBpbnQgbGluZXNfaW5mb19zaXplKTsKKyAjZGVmaW5lIGtvb3Bz X2V4dHJhY3Rfb29wc2VzIGFicnRfa29vcHNfZXh0cmFjdF9vb3BzZXMKKyB2b2lkIGtvb3BzX2V4 dHJhY3Rfb29wc2VzKEdMaXN0ICoqb29wc19saXN0LCBjaGFyICpidWZmZXIsIHNpemVfdCBidWZs ZW4pOworKyNkZWZpbmUga29vcHNfc3VzcGljaW91c19zdHJpbmdzX2xpc3QgYWJydF9rb29wc19z dXNwaWNpb3VzX3N0cmluZ3NfbGlzdAorK0dMaXN0ICprb29wc19zdXNwaWNpb3VzX3N0cmluZ3Nf bGlzdCh2b2lkKTsKKyAjZGVmaW5lIGtvb3BzX3ByaW50X3N1c3BpY2lvdXNfc3RyaW5ncyBhYnJ0 X2tvb3BzX3ByaW50X3N1c3BpY2lvdXNfc3RyaW5ncworIHZvaWQga29vcHNfcHJpbnRfc3VzcGlj aW91c19zdHJpbmdzKHZvaWQpOworIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9saWIva2VybmVsLmMg Yi9zcmMvbGliL2tlcm5lbC5jCitpbmRleCBiMmQ3MmI2Li5iZTgwY2JjIDEwMDY0NAorLS0tIGEv c3JjL2xpYi9rZXJuZWwuYworKysrIGIvc3JjL2xpYi9rZXJuZWwuYworQEAgLTIyLDIxICsyMiwx MiBAQAorICNkZWZpbmUgX0dOVV9TT1VSQ0UgMSAvKiBmb3Igc3RyY2FzZXN0ciAqLworICNpbmNs dWRlICJsaWJhYnJ0LmgiCisgCistLyoKKy0gKiBleHRyYWN0X29vcHMgdHJpZXMgdG8gZmluZCBv b3BzIHNpZ25hdHVyZXMgaW4gYSBsb2cKKy0gKi8KKy0KKy1zdHJ1Y3QgbGluZV9pbmZvIHsKKy0g ICAgY2hhciAqcHRyOworLSAgICBjaGFyIGxldmVsOworLX07CistCisgLyogVXNlZCB0byBiZSAx MDAsIGJ1dCBzb21lIE1DRSBvb3BzZXMgYXJlIHNob3J0OgorICAqICJDUFUgMDogTWFjaGluZSBD aGVjayBFeGNlcHRpb246IDAwMDAwMDAwMDAwMDAwMDciCisgICovCisgI2RlZmluZSBTQU5FX01J Tl9PT1BTX0xFTiAzMAorIAorLXN0YXRpYyB2b2lkIHJlY29yZF9vb3BzKEdMaXN0ICoqb29wc19s aXN0LCBzdHJ1Y3QgbGluZV9pbmZvKiBsaW5lc19pbmZvLCBpbnQgb29wc3N0YXJ0LCBpbnQgb29w c2VuZCkKKytzdGF0aWMgdm9pZCByZWNvcmRfb29wcyhHTGlzdCAqKm9vcHNfbGlzdCwgY29uc3Qg c3RydWN0IGFicnRfa29vcHNfbGluZV9pbmZvKiBsaW5lc19pbmZvLCBpbnQgb29wc3N0YXJ0LCBp bnQgb29wc2VuZCkKKyB7CisgICAgIGludCBxOworICAgICBpbnQgbGVuOworQEAgLTE2MSw2ICsx NTIsMTUgQEAgdm9pZCBrb29wc19wcmludF9zdXNwaWNpb3VzX3N0cmluZ3Modm9pZCkKKyAgICAg a29vcHNfcHJpbnRfc3VzcGljaW91c19zdHJpbmdzX2ZpbHRlcmVkKE5VTEwpOworIH0KKyAKKytH TGlzdCAqa29vcHNfc3VzcGljaW91c19zdHJpbmdzX2xpc3Qodm9pZCkKKyt7CisrICAgIEdMaXN0 ICpzdHJpbmdzID0gTlVMTDsKKysgICAgZm9yIChjb25zdCBjaGFyICpjb25zdCAqc3RyID0gc19r b29wc19zdXNwaWNpb3VzX3N0cmluZ3M7ICpzdHI7ICsrc3RyKQorKyAgICAgICAgc3RyaW5ncyA9 IGdfbGlzdF9wcmVwZW5kKHN0cmluZ3MsIChncG9pbnRlcikqc3RyKTsKKysKKysgICAgcmV0dXJu IHN0cmluZ3M7CisrfQorKworIHN0YXRpYyBib29sIG1hdGNoX2FueShjb25zdCByZWdleF90ICoq cmVzLCBjb25zdCBjaGFyICpzdHIpCisgeworICAgICBmb3IgKGNvbnN0IHJlZ2V4X3QgKipyID0g cmVzOyAqciAhPSBOVUxMOyArK3IpCitAQCAtMTg5LDEyICsxODksNTcgQEAgdm9pZCBrb29wc19w cmludF9zdXNwaWNpb3VzX3N0cmluZ3NfZmlsdGVyZWQoY29uc3QgcmVnZXhfdCAqKmZpbHRlcm91 dCkKKyAgICAgfQorIH0KKyAKKysKKyt2b2lkIGtvb3BzX2xpbmVfc2tpcF9qaWZmaWVzKGNvbnN0 IGNoYXIgKipjKQorK3sKKysgICAgLyogcmVtb3ZlIGppZmZpZXMgdGltZSBzdGFtcCBjb3VudGVy IGlmIHByZXNlbnQKKysgICAgICogamlmZmllcyBhcmUgdW5zaWduZWQgbG9uZywgc28gaXQgY2Fu IGJlIDJeNjQgbG9uZywgd2hpY2ggaXMKKysgICAgICogMjAgZGVjaW1hbCBkaWdpdHMKKysgICAg ICovCisrICAgIGlmICgqKmMgPT0gJ1snKQorKyAgICB7CisrICAgICAgICBjb25zdCBjaGFyICpj MiA9IHN0cmNocigqYywgJy4nKTsKKysgICAgICAgIGNvbnN0IGNoYXIgKmMzID0gc3RyY2hyKCpj LCAnXScpOworKyAgICAgICAgaWYgKGMyICYmIGMzICYmIChjMiA8IGMzKSAmJiAoYzMtKmMpIDwg MjEpCisrICAgICAgICB7CisrICAgICAgICAgICAgKmMgPSBjMyArIDE7CisrICAgICAgICAgICAg aWYgKCoqYyA9PSAnICcpCisrICAgICAgICAgICAgICAgICgqYykrKzsKKysgICAgICAgIH0KKysg ICAgfQorK30KKysKKytpbnQga29vcHNfbGluZV9za2lwX2xldmVsKGNvbnN0IGNoYXIgKipjKQor K3sKKysgICAgaW50IGxpbmVsZXZlbCA9IDA7CisrICAgIGlmICgqKmMgPT0gJzwnKQorKyAgICB7 CisrICAgICAgICBjb25zdCBjaGFyICpwdHIgPSAqYyArIDE7CisrICAgICAgICB3aGlsZSAoaXNk aWdpdCgqcHRyKSkKKysgICAgICAgICAgICArK3B0cjsKKysKKysgICAgICAgIGlmICgqcHRyID09 ICc+JyAmJiAocHRyIC0gKmMgPiAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBjb25zdCBj aGFyICpjb25zdCBiY2sgPSBwdHIgKyAxOworKyAgICAgICAgICAgIHVuc2lnbmVkIGV4cCA9IDE7 CisrICAgICAgICAgICAgd2hpbGUgKC0tcHRyICE9ICpjKQorKyAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgbGluZWxldmVsICs9ICgqcHRyIC0gJzAnKSAqIGV4cDsKKysgICAgICAgICAg ICAgICAgZXhwICo9IDEwOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICAqYyA9IGJjazsK KysgICAgICAgIH0KKysgICAgfQorKworKyAgICByZXR1cm4gbGluZWxldmVsOworK30KKysKKyB2 b2lkIGtvb3BzX2V4dHJhY3Rfb29wc2VzKEdMaXN0ICoqb29wc19saXN0LCBjaGFyICpidWZmZXIs IHNpemVfdCBidWZsZW4pCisgeworICAgICBjaGFyICpjOworICAgICBpbnQgbGluZWNvdW50ID0g MDsKKyAgICAgaW50IGxpbmVzX2luZm9fc2l6ZSA9IDA7CistICAgIHN0cnVjdCBsaW5lX2luZm8g KmxpbmVzX2luZm8gPSBOVUxMOworKyAgICBzdHJ1Y3QgYWJydF9rb29wc19saW5lX2luZm8gKmxp bmVzX2luZm8gPSBOVUxMOworIAorICAgICAvKiBTcGxpdCBidWZmZXIgaW50byBsaW5lcyAqLwor IAorQEAgLTI1NCwyOCArMjk5LDEwIEBAIHZvaWQga29vcHNfZXh0cmFjdF9vb3BzZXMoR0xpc3Qg Kipvb3BzX2xpc3QsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGJ1ZmxlbikKKyAgICAgICAgICAgICBj ID0ga2VybmVsX3N0ciArIHNpemVvZigia2VybmVsOiAiKS0xOworICAgICAgICAgfQorIAorLSAg ICAgICAgbGluZWxldmVsID0gMDsKKyAgICAgICAgIC8qIHN0b3JlIGFuZCByZW1vdmUga2VybmVs IGxvZyBsZXZlbCAqLworLSAgICAgICAgaWYgKCpjID09ICc8JyAmJiBjWzFdICYmIGNbMl0gPT0g Jz4nKQorLSAgICAgICAgeworLSAgICAgICAgICAgIGxpbmVsZXZlbCA9IGNbMV07CistICAgICAg ICAgICAgYyArPSAzOworLSAgICAgICAgfQorLSAgICAgICAgLyogcmVtb3ZlIGppZmZpZXMgdGlt ZSBzdGFtcCBjb3VudGVyIGlmIHByZXNlbnQKKy0gICAgICAgICAqIGppZmZpZXMgYXJlIHVuc2ln bmVkIGxvbmcsIHNvIGl0IGNhbiBiZSAyXjY0IGxvbmcsIHdoaWNoIGlzCistICAgICAgICAgKiAy MCBkZWNpbWFsIGRpZ2l0cworLSAgICAgICAgICovCistICAgICAgICBpZiAoKmMgPT0gJ1snKQor LSAgICAgICAgeworLSAgICAgICAgICAgIGNoYXIgKmMyID0gc3RyY2hyKGMsICcuJyk7CistICAg ICAgICAgICAgY2hhciAqYzMgPSBzdHJjaHIoYywgJ10nKTsKKy0gICAgICAgICAgICBpZiAoYzIg JiYgYzMgJiYgKGMyIDwgYzMpICYmIChjMy1jKSA8IDIxKQorLSAgICAgICAgICAgIHsKKy0gICAg ICAgICAgICAgICAgYyA9IGMzICsgMTsKKy0gICAgICAgICAgICAgICAgaWYgKCpjID09ICcgJykK Ky0gICAgICAgICAgICAgICAgICAgIGMrKzsKKy0gICAgICAgICAgICB9CistICAgICAgICB9Cisr ICAgICAgICBsaW5lbGV2ZWwgPSBrb29wc19saW5lX3NraXBfbGV2ZWwoKGNvbnN0IGNoYXIgKiop JmMpOworKyAgICAgICAga29vcHNfbGluZV9za2lwX2ppZmZpZXMoKGNvbnN0IGNoYXIgKiopJmMp OworKworICAgICAgICAgaWYgKChsaW5lc19pbmZvX3NpemUgJiAweGZmZikgPT0gMCkKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICBsaW5lc19pbmZvID0geHJlYWxsb2MobGluZXNfaW5mbywgKGxp bmVzX2luZm9fc2l6ZSArIDB4MTAwMCkgKiBzaXplb2YobGluZXNfaW5mb1swXSkpOworQEAgLTI4 Nyw2ICszMTQsMTIgQEAgbmV4dF9saW5lOgorICAgICAgICAgYyA9IGM5ICsgMTsKKyAgICAgfQor IAorKyAgICBrb29wc19leHRyYWN0X29vcHNlc19mcm9tX2xpbmVzKG9vcHNfbGlzdCwgbGluZXNf aW5mbywgbGluZXNfaW5mb19zaXplKTsKKysgICAgZnJlZShsaW5lc19pbmZvKTsKKyt9CisrCisr dm9pZCBrb29wc19leHRyYWN0X29vcHNlc19mcm9tX2xpbmVzKEdMaXN0ICoqb29wc19saXN0LCBj b25zdCBzdHJ1Y3QgYWJydF9rb29wc19saW5lX2luZm8gKmxpbmVzX2luZm8sIGludCBsaW5lc19p bmZvX3NpemUpCisreworICAgICAvKiBBbmFseXplIGxpbmVzICovCisgCisgICAgIGludCBpOwor QEAgLTMyMyw4ICszNTYsNiBAQCBuZXh0X2xpbmU6CisgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAvKiBkZWJ1ZyBpbmZvcm1hdGlvbiAqLworICAgICAgICAgICAgICAgICBsb2dfZGVi dWcoIkZvdW5kIG9vcHMgYXQgbGluZSAlZDogJyVzJyIsIG9vcHNzdGFydCwgbGluZXNfaW5mb1tv b3Bzc3RhcnRdLnB0cik7CistICAgICAgICAgICAgICAgIGlmIChvb3Bzc3RhcnQgIT0gaSkKKy0g ICAgICAgICAgICAgICAgICAgICAgICBsb2dfZGVidWcoIlRyaWdnZXIgbGluZSBpcyAlZDogJyVz JyIsIGksIGMpOworICAgICAgICAgICAgICAgICAvKiB0cnkgdG8gZmluZCB0aGUgZW5kIG1hcmtl ciAqLworICAgICAgICAgICAgICAgICBpbnQgaTIgPSBpICsgMTsKKyAgICAgICAgICAgICAgICAg d2hpbGUgKGkyIDwgbGluZXNfaW5mb19zaXplICYmIGkyIDwgKGkrNTApKQorQEAgLTQ3MSwxMCAr NTAyLDcgQEAgbmV4dF9saW5lOgorICAgICAgICAgICAgIHJlY29yZF9vb3BzKG9vcHNfbGlzdCwg bGluZXNfaW5mbywgb29wc3N0YXJ0LCBvb3Bzc3RhcnQpOworICAgICAgICAgfQorICAgICB9Cist CistICAgIGZyZWUobGluZXNfaW5mbyk7CisgfQorLQorIGludCBrb29wc19oYXNoX3N0cl9leHQo Y2hhciByZXN1bHRbU0hBMV9SRVNVTFRfTEVOKjIgKyAxXSwgY29uc3QgY2hhciAqb29wc19idWYs IGludCBmcmFtZV9jb3VudCwgaW50IGR1cGhhc2hfZmxhZ3MpCisgeworICAgICBjaGFyICpoYXNo X3N0ciA9IE5VTEwsICplcnJvciA9IE5VTEw7CitAQCAtNTA3LDYgKzUzNSw3IEBAIGludCBrb29w c19oYXNoX3N0cl9leHQoY2hhciByZXN1bHRbU0hBMV9SRVNVTFRfTEVOKjIgKyAxXSwgY29uc3Qg Y2hhciAqb29wc19idWYsCisgICAgICAgICBlbHNlCisgICAgICAgICAgICAgbG9nKCJOb3RoaW5n IHVzZWZ1bCBmb3IgZHVwaGFzaCIpOworIAorKworICAgICAgICAgZnJlZShoYXNoX3N0cik7Cisg ICAgIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9NYWtlZmlsZS5hbSBiL3NyYy9wbHVn aW5zL01ha2VmaWxlLmFtCitpbmRleCAxNGI2ZmUwLi5hODA0ZjgyIDEwMDY0NAorLS0tIGEvc3Jj L3BsdWdpbnMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9wbHVnaW5zL01ha2VmaWxlLmFtCitAQCAt MTUsNiArMTUsNyBAQCBiaW5fU0NSSVBUUyA9IFwKKyBiaW5fUFJPR1JBTVMgPSBcCisgICAgIGFi cnQtd2F0Y2gtbG9nIFwKKyAgICAgYWJydC1kdW1wLW9vcHMgXAorKyAgICBhYnJ0LWR1bXAtam91 cm5hbC1vb3BzIFwKKyAgICAgYWJydC1kdW1wLXhvcmcgXAorICAgICBhYnJ0LWFjdGlvbi1hbmFs eXplLWMgXAorICAgICBhYnJ0LWFjdGlvbi1hbmFseXplLXB5dGhvbiBcCitAQCAtOTcsNiArOTgs OCBAQCBFWFRSQV9ESVNUID0gXAorICAgICBhYnJ0LWFjdGlvbi11cmVwb3J0IFwKKyAgICAgYWJy dC1nZGItZXhwbG9pdGFibGUgXAorICAgICBodHRwcy11dGlscy5oIFwKKysgICAgb29wcy11dGls cy5oIFwKKysgICAgYWJydC1qb3VybmFsLmggXAorICAgICBwb3N0X3JlcG9ydC54bWwuaW4gXAor ICAgICBhYnJ0LWFjdGlvbi1hbmFseXplLWNjcHAtbG9jYWwuaW4KKyAKK0BAIC0xMjAsNiArMTIz LDcgQEAgYWJydF93YXRjaF9sb2dfTERBREQgPSBcCisgICAgIC4uL2xpYi9saWJhYnJ0LmxhCisg CisgYWJydF9kdW1wX29vcHNfU09VUkNFUyA9IFwKKysgICAgb29wcy11dGlscy5jIFwKKyAgICAg YWJydC1kdW1wLW9vcHMuYworIGFicnRfZHVtcF9vb3BzX0NQUEZMQUdTID0gXAorICAgICAtSSQo c3JjZGlyKS8uLi9pbmNsdWRlIFwKK0BAIC0xMzMsNiArMTM3LDI1IEBAIGFicnRfZHVtcF9vb3Bz X0xEQUREID0gXAorICAgICAkKExJQlJFUE9SVF9MSUJTKSBcCisgICAgIC4uL2xpYi9saWJhYnJ0 LmxhCisgCisrYWJydF9kdW1wX2pvdXJuYWxfb29wc19TT1VSQ0VTID0gXAorKyAgICBvb3BzLXV0 aWxzLmMgXAorKyAgICBhYnJ0LWpvdXJuYWwuYyBcCisrICAgIGFicnQtZHVtcC1qb3VybmFsLW9v cHMuYworK2FicnRfZHVtcF9qb3VybmFsX29vcHNfQ1BQRkxBR1MgPSBcCisrICAgIC1JJChzcmNk aXIpLy4uL2luY2x1ZGUgXAorKyAgICAtSSQoc3JjZGlyKS8uLi9saWIgXAorKyAgICAkKEdMSUJf Q0ZMQUdTKSBcCisrICAgICQoTElCUkVQT1JUX0NGTEFHUykgXAorKyAgICAkKFNZU1RFTURfSk9V Uk5BTF9DRkxBR1MpIFwKKysgICAgLURERUZBVUxUX0RVTVBfRElSX01PREU9JChERUZBVUxUX0RV TVBfRElSX01PREUpIFwKKysgICAgLURWQVJfU1RBVEU9XCIkKFZBUl9TVEFURSlcIiBcCisrICAg IC1EX0dOVV9TT1VSQ0UKKythYnJ0X2R1bXBfam91cm5hbF9vb3BzX0xEQUREID0gXAorKyAgICAk KEdMSUJfTElCUykgXAorKyAgICAkKExJQlJFUE9SVF9MSUJTKSBcCisrICAgICQoU1lTVEVNRF9K T1VSTkFMX0xJQlMpIFwKKysgICAgLi4vbGliL2xpYmFicnQubGEKKysKKyBhYnJ0X2R1bXBfeG9y Z19TT1VSQ0VTID0gXAorICAgICBhYnJ0LWR1bXAteG9yZy5jCisgYWJydF9kdW1wX3hvcmdfQ1BQ RkxBR1MgPSBcCitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvYWJydC1kdW1wLWpvdXJuYWwtb29w cy5jIGIvc3JjL3BsdWdpbnMvYWJydC1kdW1wLWpvdXJuYWwtb29wcy5jCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMC4uM2YxZjQxOQorLS0tIC9kZXYvbnVsbAorKysrIGIvc3Jj L3BsdWdpbnMvYWJydC1kdW1wLWpvdXJuYWwtb29wcy5jCitAQCAtMCwwICsxLDM5NCBAQAorKy8q CisrICogQ29weXJpZ2h0IChDKSAyMDE0ICBBQlJUIHRlYW0KKysgKiBDb3B5cmlnaHQgKEMpIDIw MTQgIFJlZEhhdCBJbmMKKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysg KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgorKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoK KysgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqLworKyNpbmNsdWRlICJsaWJhYnJ0LmgiCisr I2luY2x1ZGUgImFicnQtam91cm5hbC5oIgorKyNpbmNsdWRlICJvb3BzLXV0aWxzLmgiCisrCisr I2RlZmluZSBBQlJUX0pPVVJOQUxfV0FUQ0hfU1RBVEVfRklMRSBWQVJfU1RBVEUiL2FicnQtZHVt cC1qb3VybmFsLW9vcHMuc3RhdGUiCisrI2RlZmluZSBBQlJUX0pPVVJOQUxfV0FUQ0hfU1RBVEVf RklMRV9NT0RFIDA2MDAKKysjZGVmaW5lIEFCUlRfSk9VUk5BTF9XQVRDSF9TVEFURV9GSUxFX01B WF9TWiAoNCAqIDEwMjQpCisrCisrLyogTGltaXQgbnVtYmVyIG9mIGJ1ZmZlcmVkIGxpbmVzICov CisrI2RlZmluZSBBQlJUX0pPVVJOQUxfTUFYX1JFQURfTElORVMgKDEwMjQgKiAxMDI0KQorKwor Ky8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCisrc3RhdGljIHZvaWQgc2F2ZV9hYnJ0X2pvdXJu YWxfd2F0Y2hfcG9zaXRpb24oYWJydF9qb3VybmFsX3QgKmpvdXJuYWwsIGNvbnN0IGNoYXIgKmZp bGVfbmFtZSk7CisrCisrLyoKKysgKiBLb29wcyBleHRyYWN0b3IKKysgKi8KKysKKytzdGF0aWMg R0xpc3QqIGFicnRfam91cm5hbF9leHRyYWN0X2tlcm5lbF9vb3BzKGFicnRfam91cm5hbF90ICpq b3VybmFsKQorK3sKKysgICAgc2l6ZV90IGxpbmVzX2luZm9fY291bnQgPSAwOworKyAgICBzaXpl X3QgbGluZXNfaW5mb19zaXplID0gMzI7CisrICAgIHN0cnVjdCBhYnJ0X2tvb3BzX2xpbmVfaW5m byAqbGluZXNfaW5mbyA9IHhtYWxsb2MobGluZXNfaW5mb19zaXplICogc2l6ZW9mKGxpbmVzX2lu Zm9bMF0pKTsKKysKKysgICAgZG8KKysgICAgeworKyAgICAgICAgY29uc3QgY2hhciAqbGluZSA9 IE5VTEw7CisrICAgICAgICBpZiAoYWJydF9qb3VybmFsX2dldF9sb2dfbGluZShqb3VybmFsLCAm bGluZSkgPCAwKQorKyAgICAgICAgICAgIGVycm9yX21zZ19hbmRfZGllKF8oIkNhbm5vdCByZWFk IGpvdXJuYWwgZGF0YS4iKSk7CisrCisrICAgICAgICBpZiAobGluZXNfaW5mb19jb3VudCA9PSBs aW5lc19pbmZvX3NpemUpCisrICAgICAgICB7CisrICAgICAgICAgICAgbGluZXNfaW5mb19zaXpl ICo9IDI7CisrICAgICAgICAgICAgbGluZXNfaW5mbyA9IHhyZWFsbG9jKGxpbmVzX2luZm8sIGxp bmVzX2luZm9fc2l6ZSAqIHNpemVvZihsaW5lc19pbmZvWzBdKSk7CisrICAgICAgICB9CisrCisr ICAgICAgICBsaW5lc19pbmZvW2xpbmVzX2luZm9fY291bnRdLmxldmVsID0ga29vcHNfbGluZV9z a2lwX2xldmVsKCZsaW5lKTsKKysgICAgICAgIGtvb3BzX2xpbmVfc2tpcF9qaWZmaWVzKCZsaW5l KTsKKysKKysgICAgICAgIGxpbmVzX2luZm9bbGluZXNfaW5mb19jb3VudF0ucHRyID0geHN0cmR1 cChsaW5lKTsKKysKKysgICAgICAgICsrbGluZXNfaW5mb19jb3VudDsKKysgICAgfQorKyAgICB3 aGlsZSAobGluZXNfaW5mb19jb3VudCA8IEFCUlRfSk9VUk5BTF9NQVhfUkVBRF9MSU5FUworKyAg ICAgICAgICAgICYmIGFicnRfam91cm5hbF9uZXh0KGpvdXJuYWwpID4gMCk7CisrCisrICAgIEdM aXN0ICpvb3BzX2xpc3QgPSBOVUxMOworKyAgICBrb29wc19leHRyYWN0X29vcHNlc19mcm9tX2xp bmVzKCZvb3BzX2xpc3QsIGxpbmVzX2luZm8sIGxpbmVzX2luZm9fY291bnQpOworKworKyAgICBs b2dfZGVidWcoIkV4dHJhY3RlZDogJWQgb29wc2VzIiwgZ19saXN0X2xlbmd0aChvb3BzX2xpc3Qp KTsKKysKKysgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaW5lc19pbmZvX2NvdW50OyArK2kp CisrICAgICAgICBmcmVlKGxpbmVzX2luZm9baV0ucHRyKTsKKysKKysgICAgZnJlZShsaW5lc19p bmZvKTsKKysKKysgICAgcmV0dXJuIG9vcHNfbGlzdDsKKyt9CisrCisrLyoKKysgKiBBbiBhZGF0 YXB0ZXIgb2YgYWJydF9qb3VybmFsX2V4dHJhY3Rfa2VybmVsX29vcHMgZm9yIGFicnRfam91cm5h bF93YXRjaF9jYWxsYmFjaworKyAqLworK3N0cnVjdCB3YXRjaF9qb3VybmFsZF9zZXR0aW5ncwor K3sKKysgICAgY29uc3QgY2hhciAqZHVtcF9sb2NhdGlvbjsKKysgICAgaW50IG9vcHNfdXRpbHNf ZmxhZ3M7CisrfTsKKysKKytzdGF0aWMgdm9pZCBhYnJ0X2pvdXJuYWxfd2F0Y2hfZXh0cmFjdF9r ZXJuZWxfb29wcyhhYnJ0X2pvdXJuYWxfd2F0Y2hfdCAqd2F0Y2gsIHZvaWQgKmRhdGEpCisrewor KyAgICBjb25zdCBzdHJ1Y3Qgd2F0Y2hfam91cm5hbGRfc2V0dGluZ3MgKmNvbmYgPSAoY29uc3Qg c3RydWN0IHdhdGNoX2pvdXJuYWxkX3NldHRpbmdzICopZGF0YTsKKysKKysgICAgYWJydF9qb3Vy bmFsX3QgKmpvdXJuYWwgPSBhYnJ0X2pvdXJuYWxfd2F0Y2hfZ2V0X2pvdXJuYWwod2F0Y2gpOwor KworKyAgICAvKiBHaXZlIHN5c3RlbWQtam91cm5hbCBvbmUgc2Vjb25kIHRvIHN1Y2sgaW4gYWxs IGtlcm5lbCdzIHN0cmluZ3MgKi8KKysgICAgaWYgKGFicnRfb29wc19zaWduYWxlZF9zbGVlcCgx KSA+IDApCisrICAgIHsKKysgICAgICAgIGFicnRfam91cm5hbF93YXRjaF9zdG9wKHdhdGNoKTsK KysgICAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgICBHTGlzdCAqb29wc2VzID0gYWJydF9q b3VybmFsX2V4dHJhY3Rfa2VybmVsX29vcHMoam91cm5hbCk7CisrICAgIGFicnRfb29wc19wcm9j ZXNzX2xpc3Qob29wc2VzLCBjb25mLT5kdW1wX2xvY2F0aW9uLCBjb25mLT5vb3BzX3V0aWxzX2Zs YWdzKTsKKysgICAgZ19saXN0X2ZyZWVfZnVsbChvb3BzZXMsIChHRGVzdHJveU5vdGlmeSlmcmVl KTsKKysKKysgICAgLyogU2tpcCBzdHVmZiB3aGljaCBhcHBlYXJlZCB3aGlsZSBwcm9jZXNzaW5n IG9vcHMgYXMgaXQgaXMgbm90IG5lY2Vzc2FyeSAqLworKyAgICAvKiB0byBjYXRjaCBhbGwgY29u c2VjdXRpdmUgb29wc2VzIChhbnl3YXkgc3VjaCBvb3BzZXMgYXJlIGFsbW9zdCAqLworKyAgICAv KiBjZXJ0YWlubHkgZHVwbGljYXRlcyBvZiB0aGUgYWxyZWFkeSBleHRyYWN0ZWQgb25lcykgKi8K KysgICAgYWJydF9qb3VybmFsX3NlZWtfdGFpbChqb3VybmFsKTsKKysKKysgICAgLyogSW4gY2Fz ZSBvZiBkaXNhc3RlciwgbGV0cyBtYWtlIHN1cmUgd2Ugd29uJ3QgcmVhZCB0aGUgam91cm5hbCBt ZXNzYWdlcyAqLworKyAgICAvKiBhZ2Fpbi4gKi8KKysgICAgc2F2ZV9hYnJ0X2pvdXJuYWxfd2F0 Y2hfcG9zaXRpb24oam91cm5hbCwgQUJSVF9KT1VSTkFMX1dBVENIX1NUQVRFX0ZJTEUpOworKwor KyAgICBpZiAoZ19hYnJ0X29vcHNfc2xlZXBfd29rZV91cF9vbl9zaWduYWwgPiAwKQorKyAgICAg ICAgYWJydF9qb3VybmFsX3dhdGNoX3N0b3Aod2F0Y2gpOworK30KKysKKysvKgorKyAqIEtvb3Bz IGV4dHJhY3RvciBlbmQKKysgKi8KKysKKytzdGF0aWMgdm9pZCB0cnlfcmVzdG9yZV9hYnJ0X2pv dXJuYWxfd2F0Y2hfcG9zaXRpb24oYWJydF9qb3VybmFsX3QgKmpvdXJuYWwsIGNvbnN0IGNoYXIg KmZpbGVfbmFtZSkKKyt7CisrICAgIHN0cnVjdCBzdGF0IGJ1ZjsKKysgICAgaWYgKGxzdGF0KGZp bGVfbmFtZSwgJmJ1ZikgPCAwKQorKyAgICB7CisrICAgICAgICBpZiAoZXJybm8gPT0gRU5PRU5U KQorKyAgICAgICAgeworKyAgICAgICAgICAgIC8qIE9ubHkgbm90aWNlIGJlY2F1c2UgdGhpcyBp cyBleHBlY3RlZCAqLworKyAgICAgICAgICAgIGxvZ19ub3RpY2UoXygiTm90IHJlc3RvcmluZyBq b3VybmFsIHdhdGNoJ3MgcG9zaXRpb246IGZpbGUgJyVzJyBkb2VzIG5vdCBleGlzdCIpLCBmaWxl X25hbWUpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysKKysgICAgICAgIHBl cnJvcl9tc2coXygiQ2Fubm90IHJlc3RvcmUgam91cm5hbCB3YXRjaCdzIHBvc2l0aW9uIGZvcm0g ZmlsZSAnJXMnIiksIGZpbGVfbmFtZSk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKysg ICAgaWYgKCEoYnVmLnN0X21vZGUgJiBTX0lGUkVHKSkKKysgICAgeworKyAgICAgICAgZXJyb3Jf bXNnKF8oIkNhbm5vdCByZXN0b3JlIGpvdXJuYWwgd2F0Y2gncyBwb3NpdGlvbjogcGF0aCAnJXMn IGlzIG5vdCByZWd1bGFyIGZpbGUiKSwgZmlsZV9uYW1lKTsKKysgICAgICAgIHJldHVybjsKKysg ICAgfQorKworKyAgICBpZiAoYnVmLnN0X3NpemUgPiBBQlJUX0pPVVJOQUxfV0FUQ0hfU1RBVEVf RklMRV9NQVhfU1opCisrICAgIHsKKysgICAgICAgIGVycm9yX21zZyhfKCJDYW5ub3QgcmVzdG9y ZSBqb3VybmFsIHdhdGNoJ3MgcG9zaXRpb246IGZpbGUgJyVzJyBleGNlZWRzICVkQiBzaXplIGxp bWl0IiksCisrICAgICAgICAgICAgICAgIGZpbGVfbmFtZSwgQUJSVF9KT1VSTkFMX1dBVENIX1NU QVRFX0ZJTEVfTUFYX1NaKTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgICBpbnQg c3RhdGVfZmQgPSBvcGVuKGZpbGVfbmFtZSwgT19SRE9OTFkgfCBPX05PRk9MTE9XKTsKKysgICAg aWYgKHN0YXRlX2ZkIDwgMCkKKysgICAgeworKyAgICAgICAgcGVycm9yX21zZyhfKCJDYW5ub3Qg cmVzdG9yZSBqb3VybmFsIHdhdGNoJ3MgcG9zaXRpb246IG9wZW4oJyVzJykiKSwgZmlsZV9uYW1l KTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgICBjaGFyICpjcnNyID0geG1hbGxv YyhidWYuc3Rfc2l6ZSArIDEpOworKworKyAgICBjb25zdCBpbnQgc3ogPSBmdWxsX3JlYWQoc3Rh dGVfZmQsIGNyc3IsIGJ1Zi5zdF9zaXplKTsKKysgICAgaWYgKHN6ICE9IGJ1Zi5zdF9zaXplKQor KyAgICB7CisrICAgICAgICBlcnJvcl9tc2coXygiQ2Fubm90IHJlc3RvcmUgam91cm5hbCB3YXRj aCdzIHBvc2l0aW9uOiBjYW5ub3QgcmVhZCBlbnRpcmUgZmlsZSAnJXMnIiksIGZpbGVfbmFtZSk7 CisrICAgICAgICBjbG9zZShzdGF0ZV9mZCk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysK KysgICAgY3Jzcltzel0gPSAnXDAnOworKyAgICBjbG9zZShzdGF0ZV9mZCk7CisrCisrICAgIGNv bnN0IGludCByID0gYWJydF9qb3VybmFsX3NldF9jdXJzb3Ioam91cm5hbCwgY3Jzcik7CisrICAg IGlmIChyIDwgMCkKKysgICAgeworKyAgICAgICAgLyogYWJydF9qb3VybmFsX3NldF9jdXJzb3Io KSBwcmludHMgZXJyb3IgbWVzc2FnZSBpbiB2ZXJib3NlIG1vZGUgKi8KKysgICAgICAgIGVycm9y X21zZyhfKCJGYWlsZWQgdG8gbW92ZSB0aGUgam91cm5hbCB0byBhIGN1cnNvciBmcm9tIGZpbGUg JyVzJyIpLCBmaWxlX25hbWUpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAgIGZy ZWUoY3Jzcik7CisrfQorKworK3N0YXRpYyB2b2lkIHNhdmVfYWJydF9qb3VybmFsX3dhdGNoX3Bv c2l0aW9uKGFicnRfam91cm5hbF90ICpqb3VybmFsLCBjb25zdCBjaGFyICpmaWxlX25hbWUpCisr eworKyAgICBjaGFyICpjcnNyID0gTlVMTDsKKysgICAgY29uc3QgaW50IHIgPSBhYnJ0X2pvdXJu YWxfZ2V0X2N1cnNvcihqb3VybmFsLCAmY3Jzcik7CisrCisrICAgIGlmIChyIDwgMCkKKysgICAg eworKyAgICAgICAgLyogYWJydF9qb3VybmFsX3NldF9jdXJzb3IoKSBwcmludHMgZXJyb3IgbWVz c2FnZSBpbiB2ZXJib3NlIG1vZGUgKi8KKysgICAgICAgIGVycm9yX21zZyhfKCJDYW5ub3Qgc2F2 ZSBqb3VybmFsIHdhdGNoJ3MgcG9zaXRpb24iKSk7CisrICAgICAgICByZXR1cm47CisrICAgIH0K KysKKysgICAgaW50IHN0YXRlX2ZkID0gb3BlbihmaWxlX25hbWUsCisrICAgICAgICAgICAgT19X Uk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyB8IE9fTk9GT0xMT1csCisrICAgICAgICAgICAgQUJS VF9KT1VSTkFMX1dBVENIX1NUQVRFX0ZJTEVfTU9ERSk7CisrCisrICAgIGlmIChzdGF0ZV9mZCA8 IDApCisrICAgIHsKKysgICAgICAgIHBlcnJvcl9tc2coXygiQ2Fubm90IHNhdmUgam91cm5hbCB3 YXRjaCdzIHBvc2l0aW9uOiBvcGVuKCclcycpIiksIGZpbGVfbmFtZSk7CisrICAgICAgICByZXR1 cm47CisrICAgIH0KKysKKysgICAgZnVsbF93cml0ZV9zdHIoc3RhdGVfZmQsIGNyc3IpOworKyAg ICBjbG9zZShzdGF0ZV9mZCk7CisrCisrICAgIGZyZWUoY3Jzcik7CisrfQorKworK3N0YXRpYyB2 b2lkIHdhdGNoX2pvdXJuYWxkKGFicnRfam91cm5hbF90ICpqb3VybmFsLCBjb25zdCBjaGFyICpk dW1wX2xvY2F0aW9uLCBpbnQgZmxhZ3MpCisreworKyAgICBHTGlzdCAqa29vcHNfc3RyaW5ncyA9 IGtvb3BzX3N1c3BpY2lvdXNfc3RyaW5nc19saXN0KCk7CisrCisrICAgIGNoYXIgKm9vcHNfc3Ry aW5nX2ZpbHRlcl9yZWdleCA9IGFicnRfb29wc19zdHJpbmdfZmlsdGVyX3JlZ2V4KCk7CisrICAg IGlmIChvb3BzX3N0cmluZ19maWx0ZXJfcmVnZXgpCisrICAgIHsKKysgICAgICAgIHJlZ2V4X3Qg ZmlsdGVyX3JlOworKyAgICAgICAgaWYgKHJlZ2NvbXAoJmZpbHRlcl9yZSwgb29wc19zdHJpbmdf ZmlsdGVyX3JlZ2V4LCBSRUdfTk9TVUIpICE9IDApCisrICAgICAgICAgICAgcGVycm9yX21zZ19h bmRfZGllKF8oIkZhaWxlZCB0byBjb21waWxlIHJlZ2V4IikpOworKworKyAgICAgICAgR0xpc3Qg Kml0ZXIgPSBrb29wc19zdHJpbmdzOworKyAgICAgICAgd2hpbGUoaXRlciAhPSBOVUxMKQorKyAg ICAgICAgeworKyAgICAgICAgICAgIEdMaXN0ICpuZXh0ID0gZ19saXN0X25leHQoaXRlcik7Cisr CisrICAgICAgICAgICAgY29uc3QgaW50IHJldGkgPSByZWdleGVjKCZmaWx0ZXJfcmUsIChjb25z dCBjaGFyICopaXRlci0+ZGF0YSwgMCwgTlVMTCwgMCk7CisrICAgICAgICAgICAgaWYgKHJldGkg PT0gMCkKKysgICAgICAgICAgICAgICAga29vcHNfc3RyaW5ncyA9IGdfbGlzdF9kZWxldGVfbGlu ayhrb29wc19zdHJpbmdzLCBpdGVyKTsKKysgICAgICAgICAgICBlbHNlIGlmIChyZXRpICE9IFJF R19OT01BVENIKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgY2hhciBtc2didWZb MTAwXTsKKysgICAgICAgICAgICAgICAgcmVnZXJyb3IocmV0aSwgJmZpbHRlcl9yZSwgbXNnYnVm LCBzaXplb2YobXNnYnVmKSk7CisrICAgICAgICAgICAgICAgIGVycm9yX21zZ19hbmRfZGllKCJS ZWdleCBtYXRjaCBmYWlsZWQ6ICVzIiwgbXNnYnVmKTsKKysgICAgICAgICAgICB9CisrCisrICAg ICAgICAgICAgaXRlciA9IG5leHQ7CisrICAgICAgICB9CisrCisrICAgICAgICByZWdmcmVlKCZm aWx0ZXJfcmUpOworKyAgICAgICAgZnJlZShvb3BzX3N0cmluZ19maWx0ZXJfcmVnZXgpOworKyAg ICB9CisrCisrICAgIHN0cnVjdCB3YXRjaF9qb3VybmFsZF9zZXR0aW5ncyB3YXRjaF9jb25mID0g eworKyAgICAgICAgLmR1bXBfbG9jYXRpb24gPSBkdW1wX2xvY2F0aW9uLAorKyAgICAgICAgLm9v cHNfdXRpbHNfZmxhZ3MgPSBmbGFncywKKysgICAgfTsKKysKKysgICAgc3RydWN0IGFicnRfam91 cm5hbF93YXRjaF9ub3RpZnlfc3RyaW5ncyBub3RpZnlfc3RyaW5nc19jb25mID0geworKyAgICAg ICAgLmRlY29yYXRlZF9jYiA9IGFicnRfam91cm5hbF93YXRjaF9leHRyYWN0X2tlcm5lbF9vb3Bz LAorKyAgICAgICAgLmRlY29yYXRlZF9jYl9kYXRhID0gJndhdGNoX2NvbmYsCisrICAgICAgICAu c3RyaW5ncyA9IGtvb3BzX3N0cmluZ3MsCisrICAgIH07CisrCisrICAgIGFicnRfam91cm5hbF93 YXRjaF90ICp3YXRjaCA9IE5VTEw7CisrICAgIGlmIChhYnJ0X2pvdXJuYWxfd2F0Y2hfbmV3KCZ3 YXRjaCwgam91cm5hbCwgYWJydF9qb3VybmFsX3dhdGNoX25vdGlmeV9zdHJpbmdzLCAmbm90aWZ5 X3N0cmluZ3NfY29uZikgPCAwKQorKyAgICAgICAgZXJyb3JfbXNnX2FuZF9kaWUoXygiRmFpbGVk IHRvIGluaXRpYWxpemUgc3lzdGVtZC1qb3VybmFsIHdhdGNoIikpOworKworKyAgICBhYnJ0X2pv dXJuYWxfd2F0Y2hfcnVuX3N5bmMod2F0Y2gpOworKyAgICBhYnJ0X2pvdXJuYWxfd2F0Y2hfZnJl ZSh3YXRjaCk7CisrCisrICAgIGdfbGlzdF9mcmVlKGtvb3BzX3N0cmluZ3MpOworK30KKysKKytp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorK3sKKysgICAgLyogSTE4biAqLworKyAg ICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisrI2lmIEVOQUJMRV9OTFMKKysgICAgYmluZHRleHRk b21haW4oUEFDS0FHRSwgTE9DQUxFRElSKTsKKysgICAgdGV4dGRvbWFpbihQQUNLQUdFKTsKKysj ZW5kaWYKKysKKysgICAgYWJydF9pbml0KGFyZ3YpOworKworKyAgICAvKiBDYW4ndCBrZWVwIHRo ZXNlIHN0cmluZ3Mvc3RydWN0cyBzdGF0aWM6IF8oKSBkb2Vzbid0IHN1cHBvcnQgdGhhdCAqLwor KyAgICBjb25zdCBjaGFyICpwcm9ncmFtX3VzYWdlX3N0cmluZyA9IF8oCisrICAgICAgICAiJiBb LXZzb3h0Zl0gWy1lXS9bLWMgQ1VSU09SXSBbLWQgRElSXS9bLURdXG4iCisrICAgICAgICAiXG4i CisrICAgICAgICAiRXh0cmFjdCBvb3BzIGZyb20gc3lzdGVtZC1qb3VybmFsXG4iCisrICAgICAg ICAiXG4iCisrICAgICAgICAiLWMgYW5kIC1lIG9wdGlvbnMgY29uZmxpY3RzIGJlY2F1c2UgYm90 aCBzcGVjaWZpZXMgdGhlIGZpcnN0IHJlYWQgbWVzc2FnZS5cbiIKKysgICAgICAgICJcbiIKKysg ICAgICAgICItZSBpcyB1c2VmdWwgb25seSBmb3IgLWYgYmVjYXVzZSB0aGUgZm9sbG93aW5nIG9m IGpvdXJuYWwgc3RhcnRzIGJ5IHJlYWRpbmcgXG4iCisrICAgICAgICAidGhlIGVudGlyZSBqb3Vy bmFsIGlmIHRoZSBsYXN0IHNlZW4gcG9zc2l0aW9uIGlzIG5vdCBhdmFpbGFibGUuXG4iCisrICAg ICAgICAiXG4iCisrICAgICAgICAiVGhlIGxhc3Qgc2VlbiBwb3NpdGlvbiBpcyBzYXZlZCBpbiAi QUJSVF9KT1VSTkFMX1dBVENIX1NUQVRFX0ZJTEUiXG4iCisrICAgICk7CisrICAgIGVudW0gewor KyAgICAgICAgT1BUX3YgPSAxIDw8IDAsCisrICAgICAgICBPUFRfcyA9IDEgPDwgMSwKKysgICAg ICAgIE9QVF9vID0gMSA8PCAyLAorKyAgICAgICAgT1BUX2QgPSAxIDw8IDMsCisrICAgICAgICBP UFRfRCA9IDEgPDwgNCwKKysgICAgICAgIE9QVF94ID0gMSA8PCA1LAorKyAgICAgICAgT1BUX3Qg PSAxIDw8IDYsCisrICAgICAgICBPUFRfYyA9IDEgPDwgNywKKysgICAgICAgIE9QVF9lID0gMSA8 PCA4LAorKyAgICAgICAgT1BUX2YgPSAxIDw8IDksCisrICAgIH07CisrCisrICAgIGNoYXIgKmN1 cnNvciA9IE5VTEw7CisrICAgIGNoYXIgKmR1bXBfbG9jYXRpb24gPSBOVUxMOworKworKyAgICAv KiBLZWVwIGVudW0gYWJvdmUgYW5kIG9yZGVyIG9mIG9wdGlvbnMgYmVsb3cgaW4gc3luYyEgKi8K KysgICAgc3RydWN0IG9wdGlvbnMgcHJvZ3JhbV9vcHRpb25zW10gPSB7CisrICAgICAgICBPUFRf X1ZFUkJPU0UoJmdfdmVyYm9zZSksCisrICAgICAgICBPUFRfQk9PTCggICdzJywgTlVMTCwgTlVM TCwgXygiTG9nIHRvIHN5c2xvZyIpKSwKKysgICAgICAgIE9QVF9CT09MKCAgJ28nLCBOVUxMLCBO VUxMLCBfKCJQcmludCBmb3VuZCBvb3BzZXMgb24gc3RhbmRhcmQgb3V0cHV0IikpLAorKyAgICAg ICAgLyogb29wc2VzIGRvbid0IGNvbnRhaW4gYW55IHNlbnNpdGl2ZSBpbmZvLCBhbmQgZXZlbgor KyAgICAgICAgICogdGhlIG9sZCBrb29wcyBhcHAgd2FzIHNob3dpbmcgdGhlIG9vcHNlcyB0byBh bGwgdXNlcnMKKysgICAgICAgICAqLworKyAgICAgICAgT1BUX1NUUklORygnZCcsIE5VTEwsICZk dW1wX2xvY2F0aW9uLCAiRElSIiwgXygiQ3JlYXRlIG5ldyBwcm9ibGVtIGRpcmVjdG9yeSBpbiBE SVIgZm9yIGV2ZXJ5IG9vcHMgZm91bmQiKSksCisrICAgICAgICBPUFRfQk9PTCggICdEJywgTlVM TCwgTlVMTCwgXygiU2FtZSBhcyAtZCBEdW1wTG9jYXRpb24sIER1bXBMb2NhdGlvbiBpcyBzcGVj aWZpZWQgaW4gYWJydC5jb25mIikpLAorKyAgICAgICAgT1BUX0JPT0woICAneCcsIE5VTEwsIE5V TEwsIF8oIk1ha2UgdGhlIHByb2JsZW0gZGlyZWN0b3J5IHdvcmxkIHJlYWRhYmxlIikpLAorKyAg ICAgICAgT1BUX0JPT0woICAndCcsIE5VTEwsIE5VTEwsIF8oIlRocm90dGxlIHByb2JsZW0gZGly ZWN0b3J5IGNyZWF0aW9uIHRvIDEgcGVyIHNlY29uZCIpKSwKKysgICAgICAgIE9QVF9TVFJJTkco J2MnLCBOVUxMLCAmY3Vyc29yLCAiQ1VSU09SIiwgXygiU3RhcnQgcmVhZGluZyBzeXN0ZW1kLWpv dXJuYWwgZnJvbSB0aGUgQ1VSU09SIHBvc2l0aW9uIikpLAorKyAgICAgICAgT1BUX0JPT0woICAn ZScsIE5VTEwsIE5VTEwsIF8oIlN0YXJ0IHJlYWRpbmcgc3lzdGVtZC1qb3VybmFsIGZyb20gdGhl IGVuZCIpKSwKKysgICAgICAgIE9QVF9CT09MKCAgJ2YnLCBOVUxMLCBOVUxMLCBfKCJGb2xsb3cg c3lzdGVtZC1qb3VybmFsIGZyb20gdGhlIGxhc3Qgc2VlbiBwb3NpdGlvbiAoaWYgYXZhaWxhYmxl KSIpKSwKKysgICAgICAgIE9QVF9FTkQoKQorKyAgICB9OworKyAgICB1bnNpZ25lZCBvcHRzID0g cGFyc2Vfb3B0cyhhcmdjLCBhcmd2LCBwcm9ncmFtX29wdGlvbnMsIHByb2dyYW1fdXNhZ2Vfc3Ry aW5nKTsKKysKKysgICAgZXhwb3J0X2FicnRfZW52dmFycygwKTsKKysKKysgICAgbXNnX3ByZWZp eCA9IGdfcHJvZ25hbWU7CisrICAgIGlmICgob3B0cyAmIE9QVF9zKSB8fCBnZXRlbnYoIkFCUlRf U1lTTE9HIikpCisrICAgIHsKKysgICAgICAgIGxvZ21vZGUgPSBMT0dNT0RFX0pPVVJOQUw7Cisr ICAgIH0KKysKKysgICAgaWYgKChvcHRzICYgT1BUX2MpICYmIChvcHRzICYgT1BUX2UpKQorKyAg ICAgICAgZXJyb3JfbXNnX2FuZF9kaWUoXygiWW91IG5lZWQgdG8gc3BlY2lmeSBlaXRoZXIgLWMg Q1VSU09SIG9yIC1lIikpOworKworKyAgICBpZiAob3B0cyAmIE9QVF9EKQorKyAgICB7CisrICAg ICAgICBpZiAob3B0cyAmIE9QVF9kKQorKyAgICAgICAgICAgIHNob3dfdXNhZ2VfYW5kX2RpZShw cm9ncmFtX3VzYWdlX3N0cmluZywgcHJvZ3JhbV9vcHRpb25zKTsKKysgICAgICAgIGxvYWRfYWJy dF9jb25mKCk7CisrICAgICAgICBkdW1wX2xvY2F0aW9uID0gZ19zZXR0aW5nc19kdW1wX2xvY2F0 aW9uOworKyAgICAgICAgZ19zZXR0aW5nc19kdW1wX2xvY2F0aW9uID0gTlVMTDsKKysgICAgICAg IGZyZWVfYWJydF9jb25mX2RhdGEoKTsKKysgICAgfQorKworKyAgICBpbnQgb29wc191dGlsc19m bGFncyA9IDA7CisrICAgIGlmICgob3B0cyAmIE9QVF94KSkKKysgICAgICAgIG9vcHNfdXRpbHNf ZmxhZ3MgfD0gQUJSVF9PT1BTX1dPUkxEX1JFQURBQkxFOworKworKyAgICBpZiAoKG9wdHMgJiBP UFRfdCkpCisrICAgICAgICBvb3BzX3V0aWxzX2ZsYWdzIHw9IEFCUlRfT09QU19USFJPVFRMRV9D UkVBVElPTjsKKysKKysgICAgaWYgKChvcHRzICYgT1BUX28pKQorKyAgICAgICAgb29wc191dGls c19mbGFncyB8PSBBQlJUX09PUFNfUFJJTlRfU1RET1VUOworKworKyAgICBjb25zdCBjaGFyICpj b25zdCBlbnZfam91cm5hbF9maWx0ZXIgPSBnZXRlbnYoIkFCUlRfRFVNUF9KT1VSTkFMX09PUFNf REVCVUdfRklMVEVSIik7CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICprZXJuZWxfam91cm5hbF9m aWx0ZXJbMl0gPSB7IDAgfTsKKysgICAga2VybmVsX2pvdXJuYWxfZmlsdGVyWzBdID0gKGVudl9q b3VybmFsX2ZpbHRlciA/IGVudl9qb3VybmFsX2ZpbHRlciA6ICJTWVNMT0dfSURFTlRJRklFUj1r ZXJuZWwiKTsKKysgICAgbG9nX2RlYnVnKCJVc2luZyBqb3VybmFsIG1hdGNoOiAnJXMnIiwga2Vy bmVsX2pvdXJuYWxfZmlsdGVyWzBdKTsKKysKKysgICAgYWJydF9qb3VybmFsX3QgKmpvdXJuYWwg PSBOVUxMOworKyAgICBpZiAoYWJydF9qb3VybmFsX25ldygmam91cm5hbCkpCisrICAgICAgICBl cnJvcl9tc2dfYW5kX2RpZShfKCJDYW5ub3Qgb3BlbiBzeXN0ZW1kLWpvdXJuYWwiKSk7CisrCisr ICAgIGlmIChhYnJ0X2pvdXJuYWxfc2V0X2pvdXJuYWxfZmlsdGVyKGpvdXJuYWwsIGtlcm5lbF9q b3VybmFsX2ZpbHRlcikgPCAwKQorKyAgICAgICAgZXJyb3JfbXNnX2FuZF9kaWUoXygiQ2Fubm90 IGZpbHRlciBzeXN0ZW1kLWpvdXJuYWwgdG8ga2VybmVsIGRhdGEgb25seSIpKTsKKysKKysgICAg aWYgKChvcHRzICYgT1BUX2UpICYmIGFicnRfam91cm5hbF9zZWVrX3RhaWwoam91cm5hbCkgPCAw KQorKyAgICAgICAgZXJyb3JfbXNnX2FuZF9kaWUoXygiQ2Fubm90IHNlZWsgdG8gdGhlIGVuZCBv ZiBqb3VybmFsIikpOworKworKyAgICBpZiAoKG9wdHMgJiBPUFRfZikpCisrICAgIHsKKysgICAg ICAgIGlmICghY3Vyc29yKQorKyAgICAgICAgICAgIHRyeV9yZXN0b3JlX2FicnRfam91cm5hbF93 YXRjaF9wb3NpdGlvbihqb3VybmFsLCBBQlJUX0pPVVJOQUxfV0FUQ0hfU1RBVEVfRklMRSk7Cisr ICAgICAgICBlbHNlIGlmKGFicnRfam91cm5hbF9zZXRfY3Vyc29yKGpvdXJuYWwsIGN1cnNvcikp CisrICAgICAgICAgICAgZXJyb3JfbXNnX2FuZF9kaWUoXygiRmFpbGVkIHRvIHN0YXJ0IHdhdGNo IGZyb20gY3Vyc29yICclcyciKSwgY3Vyc29yKTsKKysKKysgICAgICAgIHdhdGNoX2pvdXJuYWxk KGpvdXJuYWwsIGR1bXBfbG9jYXRpb24sIG9vcHNfdXRpbHNfZmxhZ3MpOworKworKyAgICAgICAg c2F2ZV9hYnJ0X2pvdXJuYWxfd2F0Y2hfcG9zaXRpb24oam91cm5hbCwgQUJSVF9KT1VSTkFMX1dB VENIX1NUQVRFX0ZJTEUpOworKyAgICB9CisrICAgIGVsc2UKKysgICAgeworKyAgICAgICAgaWYg KGN1cnNvciAmJiBhYnJ0X2pvdXJuYWxfc2V0X2N1cnNvcihqb3VybmFsLCBjdXJzb3IpKQorKyAg ICAgICAgICAgIGVycm9yX21zZ19hbmRfZGllKF8oIkZhaWxlZCB0byBzZXQgc3lzdGVtZC1qb3Vy bmFsIGN1cnNvciAnJXMnIiksIGN1cnNvcik7CisrCisrICAgICAgICAvKiBDb21wYXRpYmlsaXR5 IGhhY2ssIGEgd2F0Y2gncyBjYWxsYmFjayBnZXRzIHRoZSBqb3VybmFsIGFscmVhZHkgbW92ZWQK KysgICAgICAgICAqIHRvIGEgbmV4dCBtZXNzYWdlLiovCisrICAgICAgICBhYnJ0X2pvdXJuYWxf bmV4dChqb3VybmFsKTsKKysKKysgICAgICAgIEdMaXN0ICpvb3BzZXMgPSBhYnJ0X2pvdXJuYWxf ZXh0cmFjdF9rZXJuZWxfb29wcyhqb3VybmFsKTsKKysgICAgICAgIGNvbnN0IGludCBlcnJvcnMg PSBhYnJ0X29vcHNfcHJvY2Vzc19saXN0KG9vcHNlcywgZHVtcF9sb2NhdGlvbiwgb29wc191dGls c19mbGFncyk7CisrICAgICAgICBnX2xpc3RfZnJlZV9mdWxsKG9vcHNlcywgKEdEZXN0cm95Tm90 aWZ5KWZyZWUpOworKworKyAgICAgICAgcmV0dXJuIGVycm9yczsKKysgICAgfQorKworKyAgICBh YnJ0X2pvdXJuYWxfZnJlZShqb3VybmFsKTsKKysKKysgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsK Kyt9CitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvYWJydC1kdW1wLW9vcHMuYyBiL3NyYy9wbHVn aW5zL2FicnQtZHVtcC1vb3BzLmMKK2luZGV4IDlmMGRjODcuLmIxMDMxZWEgMTAwNjQ0CistLS0g YS9zcmMvcGx1Z2lucy9hYnJ0LWR1bXAtb29wcy5jCisrKysgYi9zcmMvcGx1Z2lucy9hYnJ0LWR1 bXAtb29wcy5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKgorLSAgICBDb3B5cmlnaHQgKEMpIDIwMTEg IEFCUlQgdGVhbQorLSAgICBDb3B5cmlnaHQgKEMpIDIwMTEgIFJlZEhhdCBJbmMKKysgICAgQ29w eXJpZ2h0IChDKSAyMDExLDIwMTQgIEFCUlQgdGVhbQorKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEs MjAxNCAgUmVkSGF0IEluYworIAorICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor QEAgLTE4LDE2ICsxOCw3IEBACisgICovCisgI2luY2x1ZGUgPHN5c2xvZy5oPgorICNpbmNsdWRl ICJsaWJhYnJ0LmgiCistCistLyogSG93IG1hbnkgcHJvYmxlbSBkaXJzIHRvIGNyZWF0ZSBhdCBt b3N0PworLSAqIEFsc28gY2F1c2VzIGNvb2xkb3duIHNsZWVwIHdpdGggLXQgaWYgZXhjZWVkZWQg LQorLSAqIHVzZWZ1bCB3aGVuIGNhbGxlZCBmcm9tIGEgbG9nIHdhdGNoZXIuCistICovCistI2Rl ZmluZSBNQVhfRFVNUEVEX0REX0NPVU5UICA1CistCistc3RhdGljIGJvb2wgd29ybGRfcmVhZGFi bGVfZHVtcCA9IGZhbHNlOworLXN0YXRpYyBib29sIHRocm90dGxlX2RkX2NyZWF0aW9uID0gZmFs c2U7Cistc3RhdGljIGNvbnN0IGNoYXIgKmRlYnVnX2R1bXBzX2RpciA9ICIuIjsKKysjaW5jbHVk ZSAib29wcy11dGlscy5oIgorIAorICNkZWZpbmUgTUFYX1NDQU5fQkxPQ0sgICg0KjEwMjQqMTAy NCkKKyAjZGVmaW5lIFJFQURfQUhFQUQgICAgICAgICAgKDEwKjEwMjQpCitAQCAtNjksMTc1ICs2 MCw2IEBAIHN0YXRpYyB2b2lkIHNjYW5fc3lzbG9nX2ZpbGUoR0xpc3QgKipvb3BzX2xpc3QsIGlu dCBmZCkKKyAgICAgZnJlZShidWZmZXIpOworIH0KKyAKKy1zdGF0aWMgY2hhciAqbGlzdF9vZl90 YWludGVkX21vZHVsZXMoY29uc3QgY2hhciAqcHJvY19tb2R1bGVzKQorLXsKKy0gICAgc3RydWN0 IHN0cmJ1ZiAqcmVzdWx0ID0gc3RyYnVmX25ldygpOworLQorLSAgICBjb25zdCBjaGFyICpwID0g cHJvY19tb2R1bGVzOworLSAgICBmb3IgKDs7KQorLSAgICB7CistICAgICAgICBjb25zdCBjaGFy ICplbmQgPSBzdHJjaHJudWwocCwgJ1xuJyk7CistICAgICAgICBjb25zdCBjaGFyICpwYXJlbiA9 IHN0cmNocm51bChwLCAnKCcpOworLSAgICAgICAgLyogV2UgbG9vayBmb3IgYSBsaW5lIHdpdGgg dGhpcyBmb3JtYXQ6CistICAgICAgICAgKiAia3ZtX2ludGVsIDEyNjI4OSAwIC0gTGl2ZSAweGY4 MjllMDAwICh0YWludF9mbGFncykiCistICAgICAgICAgKiB3aGVyZSB0YWludF9mbGFncyBoYXZl IGxldHRlcnMKKy0gICAgICAgICAqIChmbGFncyAnKycgYW5kICctJyBpbmRpY2F0ZSAodW4pbG9h ZGluZywgd2UgbXVzdCBpZ25vcmUgdGhlbSkuCistICAgICAgICAgKi8KKy0gICAgICAgIHdoaWxl ICgrK3BhcmVuIDwgZW5kKQorLSAgICAgICAgeworLSAgICAgICAgICAgIGlmICgodW5zaWduZWQp KHRvdXBwZXIoKnBhcmVuKSAtICdBJykgPD0gJ1onLSdBJykKKy0gICAgICAgICAgICB7CistICAg ICAgICAgICAgICAgIHN0cmJ1Zl9hcHBlbmRfc3RyZihyZXN1bHQsIHJlc3VsdC0+bGVuID09IDAg PyAiJS4qcyIgOiAiLCUuKnMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHN0cmNo cm51bChwLCcgJykgLSBwKSwgcAorLSAgICAgICAgICAgICAgICApOworLSAgICAgICAgICAgICAg ICBicmVhazsKKy0gICAgICAgICAgICB9CistICAgICAgICAgICAgaWYgKCpwYXJlbiA9PSAnKScp CistICAgICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgfQorLQorLSAgICAgICAgaWYgKCpl bmQgPT0gJ1wwJykKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIHAgPSBlbmQgKyAxOwor LSAgICB9CistCistICAgIGlmIChyZXN1bHQtPmxlbiA9PSAwKQorLSAgICB7CistICAgICAgICBz dHJidWZfZnJlZShyZXN1bHQpOworLSAgICAgICAgcmV0dXJuIE5VTEw7CistICAgIH0KKy0gICAg cmV0dXJuIHN0cmJ1Zl9mcmVlX25vYnVmKHJlc3VsdCk7CistfQorLQorLXN0YXRpYyB2b2lkIHNh dmVfb29wc19kYXRhX2luX2R1bXBfZGlyKHN0cnVjdCBkdW1wX2RpciAqZGQsIGNoYXIgKm9vcHMs IGNvbnN0IGNoYXIgKnByb2NfbW9kdWxlcykKKy17CistICAgIGNoYXIgKmZpcnN0X2xpbmUgPSBv b3BzOworLSAgICBjaGFyICpzZWNvbmRfbGluZSA9IChjaGFyKilzdHJjaHIoZmlyc3RfbGluZSwg J1xuJyk7IC8qIG5ldmVyIE5VTEwgKi8KKy0gICAgKnNlY29uZF9saW5lKysgPSAnXDAnOworLQor LSAgICBpZiAoZmlyc3RfbGluZVswXSkKKy0gICAgICAgIGRkX3NhdmVfdGV4dChkZCwgRklMRU5B TUVfS0VSTkVMLCBmaXJzdF9saW5lKTsKKy0gICAgZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9C QUNLVFJBQ0UsIHNlY29uZF9saW5lKTsKKy0KKy0gICAgLyogY2hlY2sgaWYgdHJhY2UgZG9lc24n dCBoYXZlIGxpbmU6ICdZb3VyIEJJT1MgaXMgYnJva2VuJyAqLworLSAgICBpZiAoc3Ryc3RyKHNl Y29uZF9saW5lLCAiWW91ciBCSU9TIGlzIGJyb2tlbiIpKQorLSAgICAgICAgZGRfc2F2ZV90ZXh0 KGRkLCBGSUxFTkFNRV9OT1RfUkVQT1JUQUJMRSwKKy0gICAgICAgICAgICAgICAgXygiQSBrZXJu ZWwgcHJvYmxlbSBvY2N1cnJlZCBiZWNhdXNlIG9mIGJyb2tlbiBCSU9TLiAiCistICAgICAgICAg ICAgICAgICAgIlVuZm9ydHVuYXRlbHksIHN1Y2ggcHJvYmxlbXMgYXJlIG5vdCBmaXhhYmxlIGJ5 IGtlcm5lbCBtYWludGFpbmVycy4iKSk7CistICAgIC8qIGNoZWNrIGlmIHRyYWNlIGRvZXNuJ3Qg aGF2ZSBsaW5lOiAnWW91ciBoYXJkd2FyZSBpcyB1bnN1cHBvcnRlZCcgKi8KKy0gICAgZWxzZSBp ZiAoc3Ryc3RyKHNlY29uZF9saW5lLCAiWW91ciBoYXJkd2FyZSBpcyB1bnN1cHBvcnRlZCIpKQor LSAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9OT1RfUkVQT1JUQUJMRSwKKy0gICAg ICAgICAgICAgICAgXygiQSBrZXJuZWwgcHJvYmxlbSBvY2N1cnJlZCwgYnV0IHlvdXIgaGFyZHdh cmUgaXMgdW5zdXBwb3J0ZWQsICIKKy0gICAgICAgICAgICAgICAgICAidGhlcmVmb3JlIGtlcm5l bCBtYWludGFpbmVycyBhcmUgdW5hYmxlIHRvIGZpeCB0aGlzIHByb2JsZW0uIikpOworLSAgICBl bHNlCistICAgIHsKKy0gICAgICAgIGNoYXIgKnRhaW50ZWRfc2hvcnQgPSBrZXJuZWxfdGFpbnRl ZF9zaG9ydChzZWNvbmRfbGluZSk7CistICAgICAgICBpZiAodGFpbnRlZF9zaG9ydCkKKy0gICAg ICAgIHsKKy0gICAgICAgICAgICBsb2dfbm90aWNlKCJLZXJuZWwgaXMgdGFpbnRlZCAnJXMnIiwg dGFpbnRlZF9zaG9ydCk7CistICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9U QUlOVEVEX1NIT1JULCB0YWludGVkX3Nob3J0KTsKKy0KKy0gICAgICAgICAgICBjaGFyICp0bnRf bG9uZyA9IGtlcm5lbF90YWludGVkX2xvbmcodGFpbnRlZF9zaG9ydCk7CistICAgICAgICAgICAg ZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9UQUlOVEVEX0xPTkcsIHRudF9sb25nKTsKKy0gICAg ICAgICAgICBmcmVlKHRudF9sb25nKTsKKy0KKy0gICAgICAgICAgICBzdHJ1Y3Qgc3RyYnVmICpy ZWFzb24gPSBzdHJidWZfbmV3KCk7CistICAgICAgICAgICAgY29uc3QgY2hhciAqZm10ID0gXygi QSBrZXJuZWwgcHJvYmxlbSBvY2N1cnJlZCwgYnV0IHlvdXIga2VybmVsIGhhcyBiZWVuICIKKy0g ICAgICAgICAgICAgICAgICAgICJ0YWludGVkIChmbGFnczolcykuIEtlcm5lbCBtYWludGFpbmVy cyBhcmUgdW5hYmxlIHRvICIKKy0gICAgICAgICAgICAgICAgICAgICJkaWFnbm9zZSB0YWludGVk IHJlcG9ydHMuIik7CistICAgICAgICAgICAgc3RyYnVmX2FwcGVuZF9zdHJmKHJlYXNvbiwgZm10 LCB0YWludGVkX3Nob3J0KTsKKy0KKy0gICAgICAgICAgICBjaGFyICptb2RsaXN0ID0gIXByb2Nf bW9kdWxlcyA/IE5VTEwgOiBsaXN0X29mX3RhaW50ZWRfbW9kdWxlcyhwcm9jX21vZHVsZXMpOwor LSAgICAgICAgICAgIGlmIChtb2RsaXN0KQorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAg ICAgc3RyYnVmX2FwcGVuZF9zdHJmKHJlYXNvbiwgXygiIFRhaW50ZWQgbW9kdWxlczogJXMuIiks IG1vZGxpc3QpOworLSAgICAgICAgICAgICAgICBmcmVlKG1vZGxpc3QpOworLSAgICAgICAgICAg IH0KKy0KKy0gICAgICAgICAgICBkZF9zYXZlX3RleHQoZGQsIEZJTEVOQU1FX05PVF9SRVBPUlRB QkxFLCByZWFzb24tPmJ1Zik7CistICAgICAgICAgICAgc3RyYnVmX2ZyZWUocmVhc29uKTsKKy0g ICAgICAgICAgICBmcmVlKHRhaW50ZWRfc2hvcnQpOworLSAgICAgICAgfQorLSAgICB9CistCist ICAgIC8vIFRPRE86IGFkZCAiS2VybmVsIG9vcHM6ICIgcHJlZml4LCBzbyB0aGF0IGFsbCBvb3Bz ZXMgaGF2ZSByZWNvZ25pemFibGUgRklMRU5BTUVfUkVBU09OPworLSAgICAvLyBrZXJuZWwgb29w cyAxc3QgbGluZSBtYXkgbG9vayBxdWl0ZSBwdXp6bGluZyBvdGhlcndpc2UuLi4KKy0gICAgc3Ry Y2hybnVsKHNlY29uZF9saW5lLCAnXG4nKVswXSA9ICdcMCc7CistICAgIGRkX3NhdmVfdGV4dChk ZCwgRklMRU5BTUVfUkVBU09OLCBzZWNvbmRfbGluZSk7CistfQorLQorLS8qIHJldHVybnMgbnVt YmVyIG9mIGVycm9ycyAqLworLXN0YXRpYyB1bnNpZ25lZCBjcmVhdGVfb29wc19kdW1wX2RpcnMo R0xpc3QgKm9vcHNfbGlzdCwgdW5zaWduZWQgb29wc19jbnQpCisteworLSAgICB1bnNpZ25lZCBj b3VudGRvd24gPSBNQVhfRFVNUEVEX0REX0NPVU5UOyAvKiBkbyBub3QgcmVwb3J0IGh1bmRyZWRz IG9mIG9vcHNlcyAqLworLQorLSAgICBsb2dfbm90aWNlKCJTYXZpbmcgJXUgb29wc2VzIGFzIHBy b2JsZW0gZGlycyIsIG9vcHNfY250ID49IGNvdW50ZG93biA/IGNvdW50ZG93biA6IG9vcHNfY250 KTsKKy0KKy0gICAgY2hhciAqY21kbGluZV9zdHIgPSB4bWFsbG9jX2ZvcGVuX2ZnZXRsaW5lX2Zj bG9zZSgiL3Byb2MvY21kbGluZSIpOworLSAgICBjaGFyICpmaXBzX2VuYWJsZWQgPSB4bWFsbG9j X2ZvcGVuX2ZnZXRsaW5lX2ZjbG9zZSgiL3Byb2Mvc3lzL2NyeXB0by9maXBzX2VuYWJsZWQiKTsK Ky0gICAgY2hhciAqcHJvY19tb2R1bGVzID0geG1hbGxvY19vcGVuX3JlYWRfY2xvc2UoIi9wcm9j L21vZHVsZXMiLCAvKm1heHNpemU6Ki8gTlVMTCk7CistICAgIGNoYXIgKnN1c3BlbmRfc3RhdHMg PSB4bWFsbG9jX29wZW5fcmVhZF9jbG9zZSgiL3N5cy9rZXJuZWwvZGVidWcvc3VzcGVuZF9zdGF0 cyIsIC8qbWF4c2l6ZToqLyBOVUxMKTsKKy0KKy0gICAgdGltZV90IHQgPSB0aW1lKE5VTEwpOwor LSAgICBjb25zdCBjaGFyICppc29fZGF0ZSA9IGlzb19kYXRlX3N0cmluZygmdCk7CistICAgIC8q IGR1bXAgc2hvdWxkIGJlIHJlYWRhYmxlIGJ5IGFsbCBpZiB3ZSdyZSBydW4gd2l0aCAteCAqLwor LSAgICB1aWRfdCBteV9ldWlkID0gKHVpZF90KS0xTDsKKy0gICAgbW9kZV90IG1vZGUgPSBERUZB VUxUX0RVTVBfRElSX01PREUgfCBTX0lST1RIOworLSAgICAvKiBhbmQgcmVhZGFibGUgb25seSBm b3IgdGhlIG93bmVyIG90aGVyd2lzZSAqLworLSAgICBpZiAoIXdvcmxkX3JlYWRhYmxlX2R1bXAp CistICAgIHsKKy0gICAgICAgIG1vZGUgPSBERUZBVUxUX0RVTVBfRElSX01PREU7CistICAgICAg ICBteV9ldWlkID0gZ2V0ZXVpZCgpOworLSAgICB9CistCistICAgIHBpZF90IG15X3BpZCA9IGdl dHBpZCgpOworLSAgICB1bnNpZ25lZCBpZHggPSAwOworLSAgICB1bnNpZ25lZCBlcnJvcnMgPSAw OworLSAgICB3aGlsZSAoaWR4IDwgb29wc19jbnQpCistICAgIHsKKy0gICAgICAgIGNoYXIgYmFz ZVtzaXplb2YoIm9vcHMtWVlZWS1NTS1ERC1oaDptbTpzcy0lbHUtJWx1IikgKyAyICogc2l6ZW9m KGxvbmcpKjNdOworLSAgICAgICAgc3ByaW50ZihiYXNlLCAib29wcy0lcy0lbHUtJWx1IiwgaXNv X2RhdGUsIChsb25nKW15X3BpZCwgKGxvbmcpaWR4KTsKKy0gICAgICAgIGNoYXIgKnBhdGggPSBj b25jYXRfcGF0aF9maWxlKGRlYnVnX2R1bXBzX2RpciwgYmFzZSk7CistCistICAgICAgICBzdHJ1 Y3QgZHVtcF9kaXIgKmRkID0gZGRfY3JlYXRlKHBhdGgsIC8qdWlkOiovIG15X2V1aWQsIG1vZGUp OworLSAgICAgICAgaWYgKGRkKQorLSAgICAgICAgeworLSAgICAgICAgICAgIGRkX2NyZWF0ZV9i YXNpY19maWxlcyhkZCwgLyp1aWQ6Ki8gbXlfZXVpZCwgTlVMTCk7CistICAgICAgICAgICAgc2F2 ZV9vb3BzX2RhdGFfaW5fZHVtcF9kaXIoZGQsIChjaGFyKilnX2xpc3RfbnRoX2RhdGEob29wc19s aXN0LCBpZHgrKyksIHByb2NfbW9kdWxlcyk7CistICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRk LCBGSUxFTkFNRV9BQlJUX1ZFUlNJT04sIFZFUlNJT04pOworLSAgICAgICAgICAgIGRkX3NhdmVf dGV4dChkZCwgRklMRU5BTUVfQU5BTFlaRVIsICJLZXJuZWxvb3BzIik7CistICAgICAgICAgICAg ZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9UWVBFLCAiS2VybmVsb29wcyIpOworLSAgICAgICAg ICAgIGlmIChjbWRsaW5lX3N0cikKKy0gICAgICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCBG SUxFTkFNRV9DTURMSU5FLCBjbWRsaW5lX3N0cik7CistICAgICAgICAgICAgaWYgKHByb2NfbW9k dWxlcykKKy0gICAgICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCAicHJvY19tb2R1bGVzIiwg cHJvY19tb2R1bGVzKTsKKy0gICAgICAgICAgICBpZiAoZmlwc19lbmFibGVkICYmIHN0cmNtcChm aXBzX2VuYWJsZWQsICIwIikgIT0gMCkKKy0gICAgICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRk LCAiZmlwc19lbmFibGVkIiwgZmlwc19lbmFibGVkKTsKKy0gICAgICAgICAgICBpZiAoc3VzcGVu ZF9zdGF0cykKKy0gICAgICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCAic3VzcGVuZF9zdGF0 cyIsIHN1c3BlbmRfc3RhdHMpOworLSAgICAgICAgICAgIGRkX2Nsb3NlKGRkKTsKKy0gICAgICAg ICAgICBub3RpZnlfbmV3X3BhdGgocGF0aCk7CistICAgICAgICB9CistICAgICAgICBlbHNlCist ICAgICAgICAgICAgZXJyb3JzKys7CistCistICAgICAgICBmcmVlKHBhdGgpOworLQorLSAgICAg ICAgaWYgKC0tY291bnRkb3duID09IDApCistICAgICAgICAgICAgYnJlYWs7CistCistICAgICAg ICBpZiAoZGQgJiYgdGhyb3R0bGVfZGRfY3JlYXRpb24pCistICAgICAgICAgICAgc2xlZXAoMSk7 CistICAgIH0KKy0KKy0gICAgZnJlZShjbWRsaW5lX3N0cik7CistICAgIGZyZWUocHJvY19tb2R1 bGVzKTsKKy0gICAgZnJlZShmaXBzX2VuYWJsZWQpOworLSAgICBmcmVlKHN1c3BlbmRfc3RhdHMp OworLQorLSAgICByZXR1cm4gZXJyb3JzOworLX0KKy0KKyBpbnQgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCisgeworICAgICAvKiBJMThuICovCitAQCAtMjY3LDYgKzg5LDcgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgT1BUX20gPSAxIDw8IDgsCisgICAg IH07CisgICAgIGNoYXIgKnByb2JsZW1fZGlyID0gTlVMTDsKKysgICAgY2hhciAqZHVtcF9sb2Nh dGlvbiA9IE5VTEw7CisgICAgIC8qIEtlZXAgZW51bSBhYm92ZSBhbmQgb3JkZXIgb2Ygb3B0aW9u cyBiZWxvdyBpbiBzeW5jISAqLworICAgICBzdHJ1Y3Qgb3B0aW9ucyBwcm9ncmFtX29wdGlvbnNb XSA9IHsKKyAgICAgICAgIE9QVF9fVkVSQk9TRSgmZ192ZXJib3NlKSwKK0BAIC0yNzUsNyArOTgs NyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAvKiBvb3BzZXMg ZG9uJ3QgY29udGFpbiBhbnkgc2Vuc2l0aXZlIGluZm8sIGFuZCBldmVuCisgICAgICAgICAgKiB0 aGUgb2xkIGtvb3BzIGFwcCB3YXMgc2hvd2luZyB0aGUgb29wc2VzIHRvIGFsbCB1c2VycworICAg ICAgICAgICovCistICAgICAgICBPUFRfU1RSSU5HKCdkJywgTlVMTCwgJmRlYnVnX2R1bXBzX2Rp ciwgIkRJUiIsIF8oIkNyZWF0ZSBuZXcgcHJvYmxlbSBkaXJlY3RvcnkgaW4gRElSIGZvciBldmVy eSBvb3BzIGZvdW5kIikpLAorKyAgICAgICAgT1BUX1NUUklORygnZCcsIE5VTEwsICZkdW1wX2xv Y2F0aW9uLCAiRElSIiwgXygiQ3JlYXRlIG5ldyBwcm9ibGVtIGRpcmVjdG9yeSBpbiBESVIgZm9y IGV2ZXJ5IG9vcHMgZm91bmQiKSksCisgICAgICAgICBPUFRfQk9PTCggICdEJywgTlVMTCwgTlVM TCwgXygiU2FtZSBhcyAtZCBEdW1wTG9jYXRpb24sIER1bXBMb2NhdGlvbiBpcyBzcGVjaWZpZWQg aW4gYWJydC5jb25mIikpLAorICAgICAgICAgT1BUX1NUUklORygndScsIE5VTEwsICZwcm9ibGVt X2RpciwgIlBST0JMRU0iLCBfKCJTYXZlIHRoZSBleHRyYWN0ZWQgaW5mb3JtYXRpb24gaW4gUFJP QkxFTSIpKSwKKyAgICAgICAgIE9QVF9CT09MKCAgJ3gnLCBOVUxMLCBOVUxMLCBfKCJNYWtlIHRo ZSBwcm9ibGVtIGRpcmVjdG9yeSB3b3JsZCByZWFkYWJsZSIpKSwKK0BAIC0yOTUsMjYgKzExOCwx OSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCisgICAgIGlmIChvcHRzICYg T1BUX20pCisgICAgIHsKKy0gICAgICAgIG1hcF9zdHJpbmdfdCAqc2V0dGluZ3MgPSBuZXdfbWFw X3N0cmluZygpOworLQorLSAgICAgICAgbG9hZF9hYnJ0X3BsdWdpbl9jb25mX2ZpbGUoIm9vcHMu Y29uZiIsIHNldHRpbmdzKTsKKy0KKy0gICAgICAgIGludCBvbmx5X2ZhdGFsX21jZSA9IDE7Cist ICAgICAgICB0cnlfZ2V0X21hcF9zdHJpbmdfaXRlbV9hc19ib29sKHNldHRpbmdzLCAiT25seUZh dGFsTUNFIiwgJm9ubHlfZmF0YWxfbWNlKTsKKy0KKy0gICAgICAgIGZyZWVfbWFwX3N0cmluZyhz ZXR0aW5ncyk7CistCistICAgICAgICBpZiAob25seV9mYXRhbF9tY2UpCisrICAgICAgICBjaGFy ICpvb3BzX3N0cmluZ19maWx0ZXJfcmVnZXggPSBhYnJ0X29vcHNfc3RyaW5nX2ZpbHRlcl9yZWdl eCgpOworKyAgICAgICAgaWYgKG9vcHNfc3RyaW5nX2ZpbHRlcl9yZWdleCkKKyAgICAgICAgIHsK Ky0gICAgICAgICAgICByZWdleF90IG1jZV9yZTsKKy0gICAgICAgICAgICBpZiAocmVnY29tcCgm bWNlX3JlLCAiXk1hY2hpbmUgLiokIiwgUkVHX05PU1VCKSAhPSAwKQorKyAgICAgICAgICAgIHJl Z2V4X3QgZmlsdGVyX3JlOworKyAgICAgICAgICAgIGlmIChyZWdjb21wKCZmaWx0ZXJfcmUsIG9v cHNfc3RyaW5nX2ZpbHRlcl9yZWdleCwgUkVHX05PU1VCKSAhPSAwKQorICAgICAgICAgICAgICAg ICBwZXJyb3JfbXNnX2FuZF9kaWUoXygiRmFpbGVkIHRvIGNvbXBpbGUgcmVnZXgiKSk7CisgCist ICAgICAgICAgICAgY29uc3QgcmVnZXhfdCAqZmlsdGVyW10gPSB7ICZtY2VfcmUsIE5VTEwgfTsK KysgICAgICAgICAgICBjb25zdCByZWdleF90ICpmaWx0ZXJbXSA9IHsgJmZpbHRlcl9yZSwgTlVM TCB9OworIAorICAgICAgICAgICAgIGtvb3BzX3ByaW50X3N1c3BpY2lvdXNfc3RyaW5nc19maWx0 ZXJlZChmaWx0ZXIpOworIAorLSAgICAgICAgICAgIHJlZ2ZyZWUoJm1jZV9yZSk7CisrICAgICAg ICAgICAgcmVnZnJlZSgmZmlsdGVyX3JlKTsKKysgICAgICAgICAgICBmcmVlKG9vcHNfc3RyaW5n X2ZpbHRlcl9yZWdleCk7CisgICAgICAgICB9CisgICAgICAgICBlbHNlCisgICAgICAgICAgICAg a29vcHNfcHJpbnRfc3VzcGljaW91c19zdHJpbmdzKCk7CitAQCAtMzI3LDEwMCArMTQzLDU1IEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgIGlmIChvcHRzICYgT1BU X2QpCisgICAgICAgICAgICAgc2hvd191c2FnZV9hbmRfZGllKHByb2dyYW1fdXNhZ2Vfc3RyaW5n LCBwcm9ncmFtX29wdGlvbnMpOworICAgICAgICAgbG9hZF9hYnJ0X2NvbmYoKTsKKy0gICAgICAg IGRlYnVnX2R1bXBzX2RpciA9IGdfc2V0dGluZ3NfZHVtcF9sb2NhdGlvbjsKKysgICAgICAgIGR1 bXBfbG9jYXRpb24gPSBnX3NldHRpbmdzX2R1bXBfbG9jYXRpb247CisgICAgICAgICBnX3NldHRp bmdzX2R1bXBfbG9jYXRpb24gPSBOVUxMOworICAgICAgICAgZnJlZV9hYnJ0X2NvbmZfZGF0YSgp OworICAgICB9CisgCisrICAgIGludCBvb3BzX3V0aWxzX2ZsYWdzID0gMDsKKysgICAgaWYgKChv cHRzICYgT1BUX3gpKQorKyAgICAgICAgb29wc191dGlsc19mbGFncyB8PSBBQlJUX09PUFNfV09S TERfUkVBREFCTEU7CisrCisrICAgIGlmICgob3B0cyAmIE9QVF90KSkKKysgICAgICAgIG9vcHNf dXRpbHNfZmxhZ3MgfD0gQUJSVF9PT1BTX1RIUk9UVExFX0NSRUFUSU9OOworKworKyAgICBpZiAo KG9wdHMgJiBPUFRfbykpCisrICAgICAgICBvb3BzX3V0aWxzX2ZsYWdzIHw9IEFCUlRfT09QU19Q UklOVF9TVERPVVQ7CisrCisgICAgIGFyZ3YgKz0gb3B0aW5kOworICAgICBpZiAoYXJndlswXSkK KyAgICAgICAgIHhtb3ZlX2ZkKHhvcGVuKGFyZ3ZbMF0sIE9fUkRPTkxZKSwgU1RESU5fRklMRU5P KTsKKyAKKy0gICAgd29ybGRfcmVhZGFibGVfZHVtcCA9IChvcHRzICYgT1BUX3gpOworLSAgICB0 aHJvdHRsZV9kZF9jcmVhdGlvbiA9IChvcHRzICYgT1BUX3QpOworLSAgICB1bnNpZ25lZCBlcnJv cnMgPSAwOworICAgICBHTGlzdCAqb29wc19saXN0ID0gTlVMTDsKKyAgICAgc2Nhbl9zeXNsb2df ZmlsZSgmb29wc19saXN0LCBTVERJTl9GSUxFTk8pOworIAorLSAgICBpbnQgb29wc19jbnQgPSBn X2xpc3RfbGVuZ3RoKG9vcHNfbGlzdCk7CistICAgIGlmIChvb3BzX2NudCAhPSAwKQorKyAgICB1 bnNpZ25lZCBlcnJvcnMgPSAwOworKyAgICBpZiAob3B0cyAmIE9QVF91KQorICAgICB7CistICAg ICAgICBsb2coIkZvdW5kIG9vcHNlczogJWQiLCBvb3BzX2NudCk7CistICAgICAgICBpZiAob3B0 cyAmIE9QVF9vKQorLSAgICAgICAgeworLSAgICAgICAgICAgIGludCBpID0gMDsKKy0gICAgICAg ICAgICB3aGlsZSAoaSA8IG9vcHNfY250KQorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAg ICAgY2hhciAqa2VybmVsX2J0ID0gKGNoYXIqKWdfbGlzdF9udGhfZGF0YShvb3BzX2xpc3QsIGkr Kyk7CistICAgICAgICAgICAgICAgIGNoYXIgKnRhaW50ZWRfc2hvcnQgPSBrZXJuZWxfdGFpbnRl ZF9zaG9ydChrZXJuZWxfYnQpOworLSAgICAgICAgICAgICAgICBpZiAodGFpbnRlZF9zaG9ydCkK Ky0gICAgICAgICAgICAgICAgICAgIGxvZygiS2VybmVsIGlzIHRhaW50ZWQgJyVzJyIsIHRhaW50 ZWRfc2hvcnQpOworLQorLSAgICAgICAgICAgICAgICBmcmVlKHRhaW50ZWRfc2hvcnQpOworLSAg ICAgICAgICAgICAgICBwcmludGYoIlxuVmVyc2lvbjogJXMiLCBrZXJuZWxfYnQpOworLSAgICAg ICAgICAgIH0KKy0gICAgICAgIH0KKy0gICAgICAgIGlmIChvcHRzICYgKE9QVF9kfE9QVF9EKSkK Ky0gICAgICAgIHsKKy0gICAgICAgICAgICBpZiAob3B0cyAmIE9QVF9EKQorLSAgICAgICAgICAg IHsKKy0gICAgICAgICAgICAgICAgbG9hZF9hYnJ0X2NvbmYoKTsKKy0gICAgICAgICAgICAgICAg ZGVidWdfZHVtcHNfZGlyID0gZ19zZXR0aW5nc19kdW1wX2xvY2F0aW9uOworLSAgICAgICAgICAg IH0KKy0KKy0gICAgICAgICAgICBsb2coIkNyZWF0aW5nIHByb2JsZW0gZGlyZWN0b3JpZXMiKTsK Ky0gICAgICAgICAgICBlcnJvcnMgPSBjcmVhdGVfb29wc19kdW1wX2RpcnMob29wc19saXN0LCBv b3BzX2NudCk7CistICAgICAgICAgICAgaWYgKGVycm9ycykKKy0gICAgICAgICAgICAgICAgbG9n KCIlZCBlcnJvcnMgd2hpbGUgZHVtcGluZyBvb3BzZXMiLCBlcnJvcnMpOworLSAgICAgICAgICAg IC8qCistICAgICAgICAgICAgICogVGhpcyBtYXJrZXIgaW4gc3lzbG9nIGZpbGUgcHJldmVudHMg dXMgZnJvbQorLSAgICAgICAgICAgICAqIHJlLXBhcnNpbmcgb2xkIG9vcHNlcy4gVGhlIG9ubHkg cHJvYmxlbSBpcyB0aGF0IHdlCistICAgICAgICAgICAgICogY2FuJ3QgYmUgc3VyZSBoZXJlIHRo YXQgdGhlIGZpbGUgd2UgYXJlIHdhdGNoaW5nCistICAgICAgICAgICAgICogaXMgdGhlIHNhbWUg ZmlsZSB3aGVyZSBzeXNsb2coeHh4KSBzdHVmZiBlbmRzIHVwLgorLSAgICAgICAgICAgICAqLwor LSAgICAgICAgICAgIHN5c2xvZyhMT0dfV0FSTklORywKKy0gICAgICAgICAgICAgICAgICAgICJS ZXBvcnRlZCAldSBrZXJuZWwgb29wc2VzIHRvIEFicnQiLAorLSAgICAgICAgICAgICAgICAgICAg b29wc19jbnQKKy0gICAgICAgICAgICApOworLSAgICAgICAgfQorLSAgICAgICAgaWYgKG9wdHMg JiBPUFRfdSkKKysgICAgICAgIGxvZygiVXBkYXRpbmcgcHJvYmxlbSBkaXJlY3RvcnkiKTsKKysg ICAgICAgIHN3aXRjaCAoZ19saXN0X2xlbmd0aChvb3BzX2xpc3QpKQorICAgICAgICAgeworLSAg ICAgICAgICAgIGxvZygiVXBkYXRpbmcgcHJvYmxlbSBkaXJlY3RvcnkiKTsKKy0gICAgICAgICAg ICBzd2l0Y2ggKG9vcHNfY250KQorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgY2Fz ZSAxOgorKyAgICAgICAgICAgIGNhc2UgMToKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGR1bXBfZGlyICpkZCA9IGRkX29wZW5kaXIocHJvYmxlbV9kaXIs IC8qb3BlbiBmb3Igd3JpdGluZyovMCk7CisrICAgICAgICAgICAgICAgICAgICBpZiAoZGQpCisg ICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGR1 bXBfZGlyICpkZCA9IGRkX29wZW5kaXIocHJvYmxlbV9kaXIsIC8qb3BlbiBmb3Igd3JpdGluZyov MCk7CistICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRkKQorLSAgICAgICAgICAgICAgICAg ICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZV9vb3BzX2RhdGFfaW5f ZHVtcF9kaXIoZGQsIChjaGFyICopb29wc19saXN0LT5kYXRhLCAvKm5vIHByb2MgbW9kdWxlcyov TlVMTCk7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkX2Nsb3NlKGRkKTsKKy0gICAg ICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICAgICAgYWJydF9vb3Bz X3NhdmVfZGF0YV9pbl9kdW1wX2RpcihkZCwgKGNoYXIgKilvb3BzX2xpc3QtPmRhdGEsIC8qbm8g cHJvYyBtb2R1bGVzKi9OVUxMKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBkZF9jbG9zZShk ZCk7CisgICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICBicmVhazsK Ky0gICAgICAgICAgICAgICAgZGVmYXVsdDoKKy0gICAgICAgICAgICAgICAgICAgIGVycm9yX21z ZyhfKCJDYW4ndCB1cGRhdGUgdGhlIHByb2JsZW06IG1vcmUgdGhhbiBvbmUgb29wcyBmb3VuZCIp KTsKKy0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAgIH0KKysgICAgICAg ICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICBkZWZhdWx0 OgorKyAgICAgICAgICAgICAgICBlcnJvcl9tc2coXygiQ2FuJ3QgdXBkYXRlIHRoZSBwcm9ibGVt OiBtb3JlIHRoYW4gb25lIG9vcHMgZm91bmQiKSk7CisrICAgICAgICAgICAgICAgIGVycm9ycyA9 IDE7CisrICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICB9CisrICAgIGVs c2UKKysgICAgICAgIGVycm9ycyA9IGFicnRfb29wc19wcm9jZXNzX2xpc3Qob29wc19saXN0LCBk dW1wX2xvY2F0aW9uLCBvb3BzX3V0aWxzX2ZsYWdzKTsKKysKKyAgICAgbGlzdF9mcmVlX3dpdGhf ZnJlZShvb3BzX2xpc3QpOworICAgICAvL29vcHNfbGlzdCA9IE5VTEw7CisgCistICAgIC8qIElm IHdlIGFyZSBydW4gYnkgYSBsb2cgd2F0Y2hlciwgdGhpcyBkZWxheXMgbG9nIHJlc2NhbgorLSAg ICAgKiAoYmVjYXVzZSBsb2cgd2F0Y2hlciB3YWl0cyB0byB1cyB0byB0ZXJtaW5hdGUpCistICAg ICAqIGFuZCBwb3NzaWJseSBwcmV2ZW50cyBkcmVhZGVkICJhYnJ0IHN0b3JtIi4KKy0gICAgICov CistICAgIGludCB1bnJlcG9ydGVkX2NudCA9IG9vcHNfY250IC0gTUFYX0RVTVBFRF9ERF9DT1VO VDsKKy0gICAgaWYgKHVucmVwb3J0ZWRfY250ID4gMCAmJiB0aHJvdHRsZV9kZF9jcmVhdGlvbikK Ky0gICAgeworLSAgICAgICAgLyogUXVhZHJhdGljIHRocm90dGxlIHRpbWUgZ3Jvd3RoLCBidXQg Y2FyZWZ1bCB0byBub3Qgb3ZlcmZsb3cgaW4gIm4qbiIgKi8KKy0gICAgICAgIGludCBuID0gdW5y ZXBvcnRlZF9jbnQgPiAzMCA/IDMwIDogdW5yZXBvcnRlZF9jbnQ7CistICAgICAgICBuID0gbiAq IG47CistICAgICAgICBpZiAobiA+IDkpCistICAgICAgICAgICAgbG9nKF8oIlNsZWVwaW5nIGZv ciAlZCBzZWNvbmRzIiksIG4pOworLSAgICAgICAgc2xlZXAobik7IC8qIG1heCAxNSBtaW5zICov CistICAgIH0KKy0KKyAgICAgcmV0dXJuIGVycm9yczsKKyB9CitkaWZmIC0tZ2l0IGEvc3JjL3Bs dWdpbnMvYWJydC1qb3VybmFsLmMgYi9zcmMvcGx1Z2lucy9hYnJ0LWpvdXJuYWwuYworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQ3MjM1N2QKKy0tLSAvZGV2L251bGwKKysr KyBiL3NyYy9wbHVnaW5zL2FicnQtam91cm5hbC5jCitAQCAtMCwwICsxLDI5NSBAQAorKy8qCisr ICogQ29weXJpZ2h0IChDKSAyMDE0ICBBQlJUIHRlYW0KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTQg IFJlZEhhdCBJbmMKKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgKiB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgorKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysg KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqLworKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5j bHVkZSA8c2lnbmFsLmg+CisrI2luY2x1ZGUgPHBvbGwuaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+ CisrI2luY2x1ZGUgPGFicnQvbGliYWJydC5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKworKyNp bmNsdWRlICJhYnJ0LWpvdXJuYWwuaCIKKysKKysjaW5jbHVkZSA8c3lzdGVtZC9zZC1qb3VybmFs Lmg+CisrCisrCisrc3RydWN0IGFicnRfam91cm5hbAorK3sKKysgICAgc2Rfam91cm5hbCAqajsK Kyt9OworKworK2ludCBhYnJ0X2pvdXJuYWxfbmV3KGFicnRfam91cm5hbF90ICoqam91cm5hbCkK Kyt7CisrICAgIHNkX2pvdXJuYWwgKmo7CisrICAgIGNvbnN0IGludCByID0gc2Rfam91cm5hbF9v cGVuKCZqLCBTRF9KT1VSTkFMX0xPQ0FMX09OTFkpOworKyAgICBpZiAociA8IDApCisrICAgIHsK KysgICAgICAgIGxvZ19ub3RpY2UoIkZhaWxlZCB0byBvcGVuIGpvdXJuYWw6ICVzIiwgc3RyZXJy b3IoLXIpKTsKKysgICAgICAgIHJldHVybiByOworKyAgICB9CisrCisrICAgICpqb3VybmFsID0g eHphbGxvYyhzaXplb2YoKipqb3VybmFsKSk7CisrICAgICgqam91cm5hbCktPmogPSBqOworKwor KyAgICByZXR1cm4gMDsKKyt9CisrCisrdm9pZCBhYnJ0X2pvdXJuYWxfZnJlZShhYnJ0X2pvdXJu YWxfdCAqam91cm5hbCkKKyt7CisrICAgIHNkX2pvdXJuYWxfY2xvc2Uoam91cm5hbC0+aik7Cisr ICAgIGpvdXJuYWwtPmogPSAodm9pZCAqKTB4REVBREJFQUY7CisrCisrICAgIGZyZWUoam91cm5h bCk7CisrfQorKworK2ludCBhYnJ0X2pvdXJuYWxfc2V0X2pvdXJuYWxfZmlsdGVyKGFicnRfam91 cm5hbF90ICpqb3VybmFsLCBjb25zdCBjaGFyICpjb25zdCAqam91cm5hbF9maWx0ZXJfbGlzdCkK Kyt7CisrICAgIGNvbnN0IGNoYXIgKmNvbnN0ICpjdXJzb3IgPSBqb3VybmFsX2ZpbHRlcl9saXN0 OworKworKyAgICB3aGlsZSAoKmN1cnNvcikKKysgICAgeworKyAgICAgICAgY29uc3QgaW50IHIg PSBzZF9qb3VybmFsX2FkZF9tYXRjaChqb3VybmFsLT5qLCAqY3Vyc29yLCBzdHJsZW4oKmN1cnNv cikpOworKyAgICAgICAgaWYgKHIgPCAwKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGxvZ19u b3RpY2UoIkZhaWxlZCB0byBzZXQgam91cm5hbCBmaWx0ZXI6ICVzIiwgc3RyZXJyb3IoLXIpKTsK KysgICAgICAgICAgICByZXR1cm4gcjsKKysgICAgICAgIH0KKysKKysgICAgICAgICsrY3Vyc29y OworKyAgICB9CisrCisrICAgIHJldHVybiAwOworK30KKysKKytpbnQgYWJydF9qb3VybmFsX2dl dF9maWVsZChhYnJ0X2pvdXJuYWxfdCAqam91cm5hbCwgY29uc3QgY2hhciAqZmllbGQsIGNvbnN0 IHZvaWQgKip2YWx1ZSwgc2l6ZV90ICp2YWx1ZV9sZW4pCisreworKyAgICBjb25zdCBpbnQgciA9 IHNkX2pvdXJuYWxfZ2V0X2RhdGEoam91cm5hbC0+aiwgZmllbGQsIHZhbHVlLCB2YWx1ZV9sZW4p OworKyAgICBpZiAociA8IDApCisrICAgIHsKKysgICAgICAgIGxvZ19ub3RpY2UoIkZhaWxlZCB0 byByZWFkICclcycgZmllbGQ6ICVzIiwgZmllbGQsIHN0cmVycm9yKC1yKSk7CisrICAgICAgICBy ZXR1cm4gcjsKKysgICAgfQorKworKyAgICByZXR1cm4gMDsKKyt9CisrCisraW50IGFicnRfam91 cm5hbF9nZXRfc3RyaW5nX2ZpZWxkKGFicnRfam91cm5hbF90ICpqb3VybmFsLCBjb25zdCBjaGFy ICpmaWVsZCwgY29uc3QgY2hhciAqKnZhbHVlKQorK3sKKysgICAgc2l6ZV90IHZhbHVlX2xlbjsK KysgICAgY29uc3QgaW50IHIgPSBhYnJ0X2pvdXJuYWxfZ2V0X2ZpZWxkKGpvdXJuYWwsIGZpZWxk LCAoY29uc3Qgdm9pZCAqKil2YWx1ZSwgJnZhbHVlX2xlbik7CisrICAgIGlmIChyIDwgMCkKKysg ICAgeworKyAgICAgICAgcmV0dXJuIHI7CisrICAgIH0KKysKKysgICAgY29uc3Qgc2l6ZV90IHBm eF9sZW4gPSBzdHJsZW4oZmllbGQpICsgMTsKKysgICAgaWYgKHZhbHVlX2xlbiA8IHBmeF9sZW4p CisrICAgIHsKKysgICAgICAgIGVycm9yX21zZygiSW52YWxpZCBkYXRhIGZvcm1hdCBmcm9tIGpv dXJuYWw6IGZpZWxkIGRhdGEgYXJlIG5vdCBwcmVmaXhlZCB3aXRoIGZpZWxkIG5hbWUiKTsKKysg ICAgICAgIHJldHVybiAtRUJBRE1TRzsKKysgICAgfQorKworKyAgICAqdmFsdWUgKz0gcGZ4X2xl bjsKKysgICAgcmV0dXJuIDA7CisrfQorKworK2ludCBhYnJ0X2pvdXJuYWxfZ2V0X2xvZ19saW5l KGFicnRfam91cm5hbF90ICpqb3VybmFsLCBjb25zdCBjaGFyICoqbGluZSkKKyt7CisrICAgIGNv bnN0IGludCByID0gYWJydF9qb3VybmFsX2dldF9zdHJpbmdfZmllbGQoam91cm5hbCwgIk1FU1NB R0UiLCBsaW5lKTsKKysgICAgaWYgKHIgPCAwKQorKyAgICAgICAgbG9nX25vdGljZSgiQ2Fubm90 IHJlYWQgam91cm5hbCBkYXRhLiBFeGl0aW5nIik7CisrCisrICAgIHJldHVybiByOworK30KKysK KytpbnQgYWJydF9qb3VybmFsX2dldF9jdXJzb3IoYWJydF9qb3VybmFsX3QgKmpvdXJuYWwsIGNo YXIgKipjdXJzb3IpCisreworKyAgICBjb25zdCBpbnQgciA9IHNkX2pvdXJuYWxfZ2V0X2N1cnNv cihqb3VybmFsLT5qLCBjdXJzb3IpOworKworKyAgICBpZiAociA8IDApCisrICAgIHsKKysgICAg ICAgIGxvZ19ub3RpY2UoIkNvdWxkIG5vdCBnZXQgam91cm5hbCBjdXJzb3I6ICclcyciLCBzdHJl cnJvcigtcikpOworKyAgICAgICAgcmV0dXJuIHI7CisrICAgIH0KKysKKysgICAgcmV0dXJuIDA7 CisrfQorKworK2ludCBhYnJ0X2pvdXJuYWxfc2V0X2N1cnNvcihhYnJ0X2pvdXJuYWxfdCAqam91 cm5hbCwgY29uc3QgY2hhciAqY3Vyc29yKQorK3sKKysgICAgY29uc3QgaW50IHIgPSBzZF9qb3Vy bmFsX3NlZWtfY3Vyc29yKGpvdXJuYWwtPmosIGN1cnNvcik7CisrICAgIGlmIChyIDwgMCkKKysg ICAgeworKyAgICAgICAgbG9nX25vdGljZSgiRmFpbGVkIHRvIHNlZWsgam91cm5hbCB0byBjdXJz b3IgJyVzJzogJXNcbiIsIGN1cnNvciwgc3RyZXJyb3IoLXIpKTsKKysgICAgICAgIHJldHVybiBy OworKyAgICB9CisrCisrICAgIHJldHVybiAwOworK30KKysKKytpbnQgYWJydF9qb3VybmFsX3Nl ZWtfdGFpbChhYnJ0X2pvdXJuYWxfdCAqam91cm5hbCkKKyt7CisrICAgIGNvbnN0IGludCByID0g c2Rfam91cm5hbF9zZWVrX3RhaWwoam91cm5hbC0+aik7CisrICAgIGlmIChyIDwgMCkKKysgICAg eworKyAgICAgICAgbG9nX25vdGljZSgiRmFpbGVkIHRvIHNlZWsgam91cm5hbCB0byB0aGUgZW5k OiAlc1xuIiwgc3RyZXJyb3IoLXIpKTsKKysgICAgICAgIHJldHVybiByOworKyAgICB9CisrCisr ICAgIC8qIEJVRzogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD05 Nzk0ODcgKi8KKysgICAgc2Rfam91cm5hbF9wcmV2aW91c19za2lwKGpvdXJuYWwtPmosIDEpOwor KyAgICByZXR1cm4gMDsKKyt9CisrCisraW50IGFicnRfam91cm5hbF9uZXh0KGFicnRfam91cm5h bF90ICpqb3VybmFsKQorK3sKKysgICAgY29uc3QgaW50IHIgPSBzZF9qb3VybmFsX25leHQoam91 cm5hbC0+aik7CisrICAgIGlmIChyIDwgMCkKKysgICAgICAgIGxvZ19ub3RpY2UoIkZhaWxlZCB0 byBpdGVyYXRlIHRvIG5leHQgZW50cnk6ICVzIiwgc3RyZXJyb3IoLXIpKTsKKysgICAgcmV0dXJu IHI7CisrfQorKworKy8qCisrICogQUJSVCBzeXN0ZW1kLWpvdXJuYWwgd3JhcHBlciBlbmQKKysg Ki8KKysKKytzdGF0aWMgdm9sYXRpbGUgaW50IHNfbG9vcF90ZXJtaW5hdGVkOworK3ZvaWQgc2ln bmFsX2xvb3BfdG9fdGVybWluYXRlKGludCBzaWdudW0pCisreworKyAgICBzaWdudW0gPSBzaWdu dW07CisrICAgIHNfbG9vcF90ZXJtaW5hdGVkID0gMTsKKyt9CisrCisrZW51bSBhYnJ0X2pvdXJu YWxfd2F0Y2hfc3RhdGUKKyt7CisrICAgIEFCUlRfSk9VUk5BTF9XQVRDSF9SRUFEWSwKKysgICAg QUJSVF9KT1VSTkFMX1dBVENIX1NUT1BQRUQsCisrfTsKKysKKytzdHJ1Y3QgYWJydF9qb3VybmFs X3dhdGNoCisreworKyAgICBhYnJ0X2pvdXJuYWxfdCAqajsKKysgICAgaW50IHN0YXRlOworKwor KyAgICBhYnJ0X2pvdXJuYWxfd2F0Y2hfY2FsbGJhY2sgY2FsbGJhY2s7CisrICAgIHZvaWQgKmNh bGxiYWNrX2RhdGE7CisrfTsKKysKKytpbnQgYWJydF9qb3VybmFsX3dhdGNoX25ldyhhYnJ0X2pv dXJuYWxfd2F0Y2hfdCAqKndhdGNoLCBhYnJ0X2pvdXJuYWxfdCAqam91cm5hbCwgYWJydF9qb3Vy bmFsX3dhdGNoX2NhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICpjYWxsYmFja19kYXRhKQorK3sKKysg ICAgYXNzZXJ0KGNhbGxiYWNrICE9IE5VTEwgfHwgISJBQlJUIHdhdGNoIG5lZWRzIHZhbGlkIGNh bGxiYWNrIHB0ciIpOworKworKyAgICAqd2F0Y2ggPSB4emFsbG9jKHNpemVvZigqKndhdGNoKSk7 CisrICAgICgqd2F0Y2gpLT5qID0gam91cm5hbDsKKysgICAgKCp3YXRjaCktPmNhbGxiYWNrID0g Y2FsbGJhY2s7CisrICAgICgqd2F0Y2gpLT5jYWxsYmFja19kYXRhID0gY2FsbGJhY2tfZGF0YTsK KysKKysgICAgcmV0dXJuIDA7CisrfQorKworK3ZvaWQgYWJydF9qb3VybmFsX3dhdGNoX2ZyZWUo YWJydF9qb3VybmFsX3dhdGNoX3QgKndhdGNoKQorK3sKKysgICAgd2F0Y2gtPmogPSAodm9pZCAq KTB4REVBREJFQUY7CisrICAgIGZyZWUod2F0Y2gpOworK30KKysKKythYnJ0X2pvdXJuYWxfdCAq YWJydF9qb3VybmFsX3dhdGNoX2dldF9qb3VybmFsKGFicnRfam91cm5hbF93YXRjaF90ICp3YXRj aCkKKyt7CisrICAgIHJldHVybiB3YXRjaC0+ajsKKyt9CisrCisraW50IGFicnRfam91cm5hbF93 YXRjaF9ydW5fc3luYyhhYnJ0X2pvdXJuYWxfd2F0Y2hfdCAqd2F0Y2gpCisreworKyAgICBzaWdz ZXRfdCBtYXNrOworKyAgICBzaWdmaWxsc2V0KCZtYXNrKTsKKysKKysgICAgLyogRXhpdCBncmFj ZWZ1bGx5OiAqLworKyAgICAvKiBzZXJ2aWNlcyB1c3VhbGx5IGV4aXQgb24gU0lHVEVSTSBhbmQg U0lHSFVQICovCisrICAgIHNpZ2RlbHNldCgmbWFzaywgU0lHVEVSTSk7CisrICAgIHNpZ25hbChT SUdURVJNLCBzaWduYWxfbG9vcF90b190ZXJtaW5hdGUpOworKyAgICBzaWdkZWxzZXQoJm1hc2ss IFNJR0hVUCk7CisrICAgIHNpZ25hbChTSUdIVVAsIHNpZ25hbF9sb29wX3RvX3Rlcm1pbmF0ZSk7 CisrICAgIC8qIEN0cmwtQyBmb3IgZWFzaWVyIGRlYnVnZ2luZyAqLworKyAgICBzaWdkZWxzZXQo Jm1hc2ssIFNJR0lOVCk7CisrICAgIHNpZ25hbChTSUdJTlQsIHNpZ25hbF9sb29wX3RvX3Rlcm1p bmF0ZSk7CisrCisrICAgIC8qIERpZSBvbiBraWxsICRQSUQgKi8KKysgICAgc2lnZGVsc2V0KCZt YXNrLCBTSUdLSUxMKTsKKysKKysgICAgc3RydWN0IHBvbGxmZCBwb2xsZmQ7CisrICAgIHBvbGxm ZC5mZCA9IHNkX2pvdXJuYWxfZ2V0X2ZkKHdhdGNoLT5qLT5qKTsKKysgICAgcG9sbGZkLmV2ZW50 cyA9IHNkX2pvdXJuYWxfZ2V0X2V2ZW50cyh3YXRjaC0+ai0+aik7CisrCisrICAgIGludCByID0g MDsKKysKKysgICAgd2hpbGUgKCFzX2xvb3BfdGVybWluYXRlZCAmJiB3YXRjaC0+c3RhdGUgPT0g QUJSVF9KT1VSTkFMX1dBVENIX1JFQURZKQorKyAgICB7CisrICAgICAgICByID0gc2Rfam91cm5h bF9uZXh0KHdhdGNoLT5qLT5qKTsKKysgICAgICAgIGlmIChyIDwgMCkKKysgICAgICAgIHsKKysg ICAgICAgICAgICBsb2dfd2FybmluZygiRmFpbGVkIHRvIGl0ZXJhdGUgdG8gbmV4dCBlbnRyeTog JXMiLCBzdHJlcnJvcigtcikpOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAg ICAgICAgZWxzZSBpZiAociA9PSAwKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHBwb2xsKCZw b2xsZmQsIDEsIE5VTEwsICZtYXNrKTsKKysgICAgICAgICAgICByID0gc2Rfam91cm5hbF9wcm9j ZXNzKHdhdGNoLT5qLT5qKTsKKysgICAgICAgICAgICBpZiAociA8IDApCisrICAgICAgICAgICAg eworKyAgICAgICAgICAgICAgICBsb2dfd2FybmluZygiRmFpbGVkIHRvIGdldCBqb3VybmFsIGNo YW5nZXM6ICVzXG4iLCBzdHJlcnJvcigtcikpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysg ICAgICAgICAgICB9CisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9CisrCisrICAg ICAgICB3YXRjaC0+Y2FsbGJhY2sod2F0Y2gsIHdhdGNoLT5jYWxsYmFja19kYXRhKTsKKysgICAg fQorKworKyAgICByZXR1cm4gcjsKKyt9CisrCisrdm9pZCBhYnJ0X2pvdXJuYWxfd2F0Y2hfc3Rv cChhYnJ0X2pvdXJuYWxfd2F0Y2hfdCAqd2F0Y2gpCisreworKyAgICB3YXRjaC0+c3RhdGUgPSBB QlJUX0pPVVJOQUxfV0FUQ0hfU1RPUFBFRDsKKyt9CisrCisrLyoKKysgKiBBQlJUIHN5c3RlbWQt am91cm5hbCB3YXRjaCAtIGVuZAorKyAqLworKworK3ZvaWQgYWJydF9qb3VybmFsX3dhdGNoX25v dGlmeV9zdHJpbmdzKGFicnRfam91cm5hbF93YXRjaF90ICp3YXRjaCwgdm9pZCAqZGF0YSkKKyt7 CisrICAgIHN0cnVjdCBhYnJ0X2pvdXJuYWxfd2F0Y2hfbm90aWZ5X3N0cmluZ3MgKmNvbmYgPSAo c3RydWN0IGFicnRfam91cm5hbF93YXRjaF9ub3RpZnlfc3RyaW5ncyAqKWRhdGE7CisrCisrICAg IGNvbnN0IGNoYXIgKm1lc3NhZ2UgPSBOVUxMOworKworKyAgICBpZiAoYWJydF9qb3VybmFsX2dl dF9zdHJpbmdfZmllbGQoYWJydF9qb3VybmFsX3dhdGNoX2dldF9qb3VybmFsKHdhdGNoKSwgIk1F U1NBR0UiLCAmbWVzc2FnZSkgPCAwKQorKyAgICAgICAgZXJyb3JfbXNnX2FuZF9kaWUoIkNhbm5v dCByZWFkIGpvdXJuYWwgZGF0YS4iKTsKKysKKysgICAgR0xpc3QgKmN1ciA9IGNvbmYtPnN0cmlu Z3M7CisrICAgIHdoaWxlIChjdXIpCisrICAgIHsKKysgICAgICAgIGlmIChzdHJzdHIobWVzc2Fn ZSwgY3VyLT5kYXRhKSAhPSBOVUxMKQorKyAgICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAg Y3VyID0gZ19saXN0X25leHQoY3VyKTsKKysgICAgfQorKworKyAgICBpZiAoY3VyKQorKyAgICAg ICAgY29uZi0+ZGVjb3JhdGVkX2NiKHdhdGNoLCBjb25mLT5kZWNvcmF0ZWRfY2JfZGF0YSk7Cisr fQorKworKy8qCisrICogQUJSVCBzeXN0ZW1kLWpvdXJuYWwgc3RyaW5ncyBub3RpZmllciAtIGVu ZAorKyAqLworZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2FicnQtam91cm5hbC5oIGIvc3JjL3Bs dWdpbnMvYWJydC1qb3VybmFsLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw Li4yMTljZjYwCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvcGx1Z2lucy9hYnJ0LWpvdXJuYWwu aAorQEAgLTAsMCArMSwxMTAgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAxNCAgQUJSVCB0 ZWFtCisrICogQ29weXJpZ2h0IChDKSAyMDE0ICBSZWRIYXQgSW5jCisrICoKKysgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKi8K KysjaWZuZGVmIF9BQlJUX0pPVVJOQUxfSF8KKysjZGVmaW5lIF9BQlJUX0pPVVJOQUxfSF8KKysK KysjaW5jbHVkZSA8Z2xpYi5oPgorKworKyNpZmRlZiBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIg eworKyNlbmRpZgorKworKy8qCisrICogQSBzeXN0ZW1kLWpvdXJuYWwgd3JhcHBlcgorKyAqIChp c29sYXRlcyBzeXN0ZW1kIEFQSSBpbiBhIHNpbmdsZSBjb21waWxlIHVuaXQpCisrICovCisrc3Ry dWN0IGFicnRfam91cm5hbDsKKyt0eXBlZGVmIHN0cnVjdCBhYnJ0X2pvdXJuYWwgYWJydF9qb3Vy bmFsX3Q7CisrCisraW50IGFicnRfam91cm5hbF9uZXcoYWJydF9qb3VybmFsX3QgKipqb3VybmFs KTsKKysKKyt2b2lkIGFicnRfam91cm5hbF9mcmVlKGFicnRfam91cm5hbF90ICpqb3VybmFsKTsK KysKKytpbnQgYWJydF9qb3VybmFsX3NldF9qb3VybmFsX2ZpbHRlcihhYnJ0X2pvdXJuYWxfdCAq am91cm5hbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICpjb25zdCAqam91cm5hbF9maWx0ZXJfbGlzdCk7CisrCisraW50IGFicnRfam91cm5hbF9nZXRf ZmllbGQoYWJydF9qb3VybmFsX3QgKmpvdXJuYWwsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqZmllbGQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dm9pZCAqKnZhbHVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqdmFsdWVf bGVuKTsKKysKKytpbnQgYWJydF9qb3VybmFsX2dldF9zdHJpbmdfZmllbGQoYWJydF9qb3VybmFs X3QgKmpvdXJuYWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKmZpZWxkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICoqdmFsdWUpOworKworK2ludCBhYnJ0X2pvdXJuYWxfZ2V0X2xvZ19saW5lKGFicnRfam91cm5h bF90ICpqb3VybmFsLCBjb25zdCBjaGFyICoqbGluZSk7CisrCisraW50IGFicnRfam91cm5hbF9n ZXRfY3Vyc29yKGFicnRfam91cm5hbF90ICpqb3VybmFsLCBjaGFyICoqY3Vyc29yKTsKKysKKytp bnQgYWJydF9qb3VybmFsX3NldF9jdXJzb3IoYWJydF9qb3VybmFsX3QgKmpvdXJuYWwsIGNvbnN0 IGNoYXIgKmN1cnNvcik7CisrCisraW50IGFicnRfam91cm5hbF9zZWVrX3RhaWwoYWJydF9qb3Vy bmFsX3QgKmpvdXJuYWwpOworKworK2ludCBhYnJ0X2pvdXJuYWxfbmV4dChhYnJ0X2pvdXJuYWxf dCAqam91cm5hbCk7CisrCisrLyoKKysgKiBBIHN5c3RlbWQtam91cm5hbCBsaXN0ZW5lciB3aGlj aCB3YWl0cyBmb3IgbmV3IG1lc3NhZ2VzIGEgbG9vcCBhbmQgbm90aWZpZXMKKysgKiB0aGVtIHZp YSBhIGNhbGwgYmFjaworKyAqLworK3N0cnVjdCBhYnJ0X2pvdXJuYWxfd2F0Y2g7CisrdHlwZWRl ZiBzdHJ1Y3QgYWJydF9qb3VybmFsX3dhdGNoIGFicnRfam91cm5hbF93YXRjaF90OworKworK3R5 cGVkZWYgdm9pZCAoKiBhYnJ0X2pvdXJuYWxfd2F0Y2hfY2FsbGJhY2spKHN0cnVjdCBhYnJ0X2pv dXJuYWxfd2F0Y2ggKndhdGNoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZvaWQgKmRhdGEpOworKworK2ludCBhYnJ0X2pvdXJuYWxfd2F0Y2hfbmV3KGFi cnRfam91cm5hbF93YXRjaF90ICoqd2F0Y2gsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg YWJydF9qb3VybmFsX3QgKmpvdXJuYWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJy dF9qb3VybmFsX3dhdGNoX2NhbGxiYWNrIGNhbGxiYWNrLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgKmNhbGxiYWNrX2RhdGEpOworKworK3ZvaWQgYWJydF9qb3VybmFsX3dhdGNo X2ZyZWUoYWJydF9qb3VybmFsX3dhdGNoX3QgKndhdGNoKTsKKysKKysvKgorKyAqIFJldHVybnMg dGhlIHdhdGNoZWQgam91cm5hbC4KKysgKi8KKythYnJ0X2pvdXJuYWxfdCAqYWJydF9qb3VybmFs X3dhdGNoX2dldF9qb3VybmFsKGFicnRfam91cm5hbF93YXRjaF90ICp3YXRjaCk7CisrCisrLyoK KysgKiBTdGFydHMgcmVhZGluZyBqb3VybmFsIG1lc3NhZ2VzIGFuZCB3YWl0aW5nIGZvciBuZXcg bWVzc2FnZXMgaW4gYSBsb29wLgorKyAqCisrICogU0lHVEVSTSBhbmQgU0lHSU5UIHRlcm1pbmF0 ZXMgdGhlIGxvb3AgZ3JhY2VmdWxseS4KKysgKi8KKytpbnQgYWJydF9qb3VybmFsX3dhdGNoX3J1 bl9zeW5jKGFicnRfam91cm5hbF93YXRjaF90ICp3YXRjaCk7CisrCisrLyoKKysgKiBDYW4gYmUg dXNlZCB0byB0ZXJtaW5hdGUgdGhlIGxvb3AgaW4gYWJydF9qb3VybmFsX3dhdGNoX3J1bl9zeW5j KCkKKysgKi8KKyt2b2lkIGFicnRfam91cm5hbF93YXRjaF9zdG9wKGFicnRfam91cm5hbF93YXRj aF90ICp3YXRjaCk7CisrCisrCisrLyoKKysgKiBBIGRlY29yYXRvciBmb3IgYWJydF9qb3VybmFs X3dhdGNoIGNhbGwgYmFja3Mgd2hpY2ggY2FsbHMgdGhlIGRlY29yYXRlZCBjYWxsCisrICogYmFj ayBpbiBjYXNlIHdoZXJlIGpvdXJuYWwgbWVzc2FnZSBjb250YWlucyBhIHN0cmluZyBmcm9tIHRo ZSBpbnRlcmVzdGVkCisrICogbGlzdC4KKysgKi8KKytzdHJ1Y3QgYWJydF9qb3VybmFsX3dhdGNo X25vdGlmeV9zdHJpbmdzCisreworKyAgICBhYnJ0X2pvdXJuYWxfd2F0Y2hfY2FsbGJhY2sgZGVj b3JhdGVkX2NiOworKyAgICB2b2lkICpkZWNvcmF0ZWRfY2JfZGF0YTsKKysgICAgR0xpc3QgKnN0 cmluZ3M7CisrfTsKKysKKyt2b2lkIGFicnRfam91cm5hbF93YXRjaF9ub3RpZnlfc3RyaW5ncyhh YnJ0X2pvdXJuYWxfd2F0Y2hfdCAqd2F0Y2gsIHZvaWQgKmRhdGEpOworKworKyNpZmRlZiBfX2Nw bHVzcGx1cworK30KKysjZW5kaWYKKysKKysjZW5kaWYgLypfQUJSVF9KT1VSTkFMX0hfKi8KK2Rp ZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9vb3BzLXV0aWxzLmMgYi9zcmMvcGx1Z2lucy9vb3BzLXV0 aWxzLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi45ZTIzNTVlCistLS0g L2Rldi9udWxsCisrKysgYi9zcmMvcGx1Z2lucy9vb3BzLXV0aWxzLmMKK0BAIC0wLDAgKzEsMjc5 IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTQgIEFCUlQgdGVhbQorKyAqIENvcHlyaWdo dCAoQykgMjAxNCAgUmVkSGF0IEluYworKyAqCisrICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yCisrICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICovCisrI2luY2x1ZGUgIm9vcHMt dXRpbHMuaCIKKysjaW5jbHVkZSAibGliYWJydC5oIgorKworK2ludCBhYnJ0X29vcHNfcHJvY2Vz c19saXN0KEdMaXN0ICpvb3BzX2xpc3QsIGNvbnN0IGNoYXIgKmR1bXBfbG9jYXRpb24sIGludCBm bGFncykKKyt7CisrICAgIHVuc2lnbmVkIGVycm9ycyA9IDA7CisrCisrICAgIGludCBvb3BzX2Nu dCA9IGdfbGlzdF9sZW5ndGgob29wc19saXN0KTsKKysgICAgaWYgKG9vcHNfY250ICE9IDApCisr ICAgIHsKKysgICAgICAgIGxvZygiRm91bmQgb29wc2VzOiAlZCIsIG9vcHNfY250KTsKKysgICAg ICAgIGlmICgoZmxhZ3MgJiBBQlJUX09PUFNfUFJJTlRfU1RET1VUKSkKKysgICAgICAgIHsKKysg ICAgICAgICAgICBpbnQgaSA9IDA7CisrICAgICAgICAgICAgd2hpbGUgKGkgPCBvb3BzX2NudCkK KysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGNoYXIgKmtlcm5lbF9idCA9IChjaGFy KilnX2xpc3RfbnRoX2RhdGEob29wc19saXN0LCBpKyspOworKyAgICAgICAgICAgICAgICBjaGFy ICp0YWludGVkX3Nob3J0ID0ga2VybmVsX3RhaW50ZWRfc2hvcnQoa2VybmVsX2J0KTsKKysgICAg ICAgICAgICAgICAgaWYgKHRhaW50ZWRfc2hvcnQpCisrICAgICAgICAgICAgICAgICAgICBsb2co Iktlcm5lbCBpcyB0YWludGVkICclcyciLCB0YWludGVkX3Nob3J0KTsKKysKKysgICAgICAgICAg ICAgICAgZnJlZSh0YWludGVkX3Nob3J0KTsKKysgICAgICAgICAgICAgICAgcHJpbnRmKCJcblZl cnNpb246ICVzIiwga2VybmVsX2J0KTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAg ICAgICBpZiAoZHVtcF9sb2NhdGlvbiAhPSBOVUxMKQorKyAgICAgICAgeworKyAgICAgICAgICAg IGxvZygiQ3JlYXRpbmcgcHJvYmxlbSBkaXJlY3RvcmllcyIpOworKyAgICAgICAgICAgIGVycm9y cyA9IGFicnRfb29wc19jcmVhdGVfZHVtcF9kaXJzKG9vcHNfbGlzdCwgZHVtcF9sb2NhdGlvbiwg ZmxhZ3MpOworKyAgICAgICAgICAgIGlmIChlcnJvcnMpCisrICAgICAgICAgICAgICAgIGxvZygi JWQgZXJyb3JzIHdoaWxlIGR1bXBpbmcgb29wc2VzIiwgZXJyb3JzKTsKKysgICAgICAgICAgICAv KgorKyAgICAgICAgICAgICAqIFRoaXMgbWFya2VyIGluIHN5c2xvZyBmaWxlIHByZXZlbnRzIHVz IGZyb20KKysgICAgICAgICAgICAgKiByZS1wYXJzaW5nIG9sZCBvb3BzZXMuIFRoZSBvbmx5IHBy b2JsZW0gaXMgdGhhdCB3ZQorKyAgICAgICAgICAgICAqIGNhbid0IGJlIHN1cmUgaGVyZSB0aGF0 IHRoZSBmaWxlIHdlIGFyZSB3YXRjaGluZworKyAgICAgICAgICAgICAqIGlzIHRoZSBzYW1lIGZp bGUgd2hlcmUgc3lzbG9nKHh4eCkgc3R1ZmYgZW5kcyB1cC4KKysgICAgICAgICAgICAgKi8KKysg ICAgICAgICAgICBzeXNsb2coTE9HX1dBUk5JTkcsCisrICAgICAgICAgICAgICAgICAgICAiUmVw b3J0ZWQgJXUga2VybmVsIG9vcHNlcyB0byBBYnJ0IiwKKysgICAgICAgICAgICAgICAgICAgIG9v cHNfY250CisrICAgICAgICAgICAgKTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICAvKiBJ ZiB3ZSBhcmUgcnVuIGJ5IGEgbG9nIHdhdGNoZXIsIHRoaXMgZGVsYXlzIGxvZyByZXNjYW4KKysg ICAgICogKGJlY2F1c2UgbG9nIHdhdGNoZXIgd2FpdHMgdG8gdXMgdG8gdGVybWluYXRlKQorKyAg ICAgKiBhbmQgcG9zc2libHkgcHJldmVudHMgZHJlYWRlZCAiYWJydCBzdG9ybSIuCisrICAgICAq LworKyAgICBpbnQgdW5yZXBvcnRlZF9jbnQgPSBvb3BzX2NudCAtIEFCUlRfT09QU19NQVhfRFVN UEVEX0NPVU5UOworKyAgICBpZiAoZ19hYnJ0X29vcHNfc2xlZXBfd29rZV91cF9vbl9zaWduYWwg PD0gMCAmJgorKyAgICAgICAgICAgICh1bnJlcG9ydGVkX2NudCA+IDAgJiYgKGZsYWdzICYgQUJS VF9PT1BTX1RIUk9UVExFX0NSRUFUSU9OKSkpCisrICAgIHsKKysgICAgICAgIC8qIFF1YWRyYXRp YyB0aHJvdHRsZSB0aW1lIGdyb3d0aCwgYnV0IGNhcmVmdWwgdG8gbm90IG92ZXJmbG93IGluICJu Km4iICovCisrICAgICAgICBpbnQgbiA9IHVucmVwb3J0ZWRfY250ID4gMzAgPyAzMCA6IHVucmVw b3J0ZWRfY250OworKyAgICAgICAgbiA9IG4gKiBuOworKyAgICAgICAgaWYgKG4gPiA5KQorKyAg ICAgICAgICAgIGxvZyhfKCJTbGVlcGluZyBmb3IgJWQgc2Vjb25kcyIpLCBuKTsKKysgICAgICAg IGFicnRfb29wc19zaWduYWxlZF9zbGVlcChuKTsgLyogbWF4IDE1IG1pbnMgKi8KKysgICAgfQor KworKyAgICByZXR1cm4gZXJyb3JzOworK30KKysKKysvKiByZXR1cm5zIG51bWJlciBvZiBlcnJv cnMgKi8KKyt1bnNpZ25lZCBhYnJ0X29vcHNfY3JlYXRlX2R1bXBfZGlycyhHTGlzdCAqb29wc19s aXN0LCBjb25zdCBjaGFyICpkdW1wX2xvY2F0aW9uLCBpbnQgZmxhZ3MpCisreworKyAgICBjb25z dCBpbnQgb29wc19jbnQgPSBnX2xpc3RfbGVuZ3RoKG9vcHNfbGlzdCk7CisrICAgIHVuc2lnbmVk IGNvdW50ZG93biA9IEFCUlRfT09QU19NQVhfRFVNUEVEX0NPVU5UOyAvKiBkbyBub3QgcmVwb3J0 IGh1bmRyZWRzIG9mIG9vcHNlcyAqLworKworKyAgICBsb2dfbm90aWNlKCJTYXZpbmcgJXUgb29w c2VzIGFzIHByb2JsZW0gZGlycyIsIG9vcHNfY250ID49IGNvdW50ZG93biA/IGNvdW50ZG93biA6 IG9vcHNfY250KTsKKysKKysgICAgY2hhciAqY21kbGluZV9zdHIgPSB4bWFsbG9jX2ZvcGVuX2Zn ZXRsaW5lX2ZjbG9zZSgiL3Byb2MvY21kbGluZSIpOworKyAgICBjaGFyICpmaXBzX2VuYWJsZWQg PSB4bWFsbG9jX2ZvcGVuX2ZnZXRsaW5lX2ZjbG9zZSgiL3Byb2Mvc3lzL2NyeXB0by9maXBzX2Vu YWJsZWQiKTsKKysgICAgY2hhciAqcHJvY19tb2R1bGVzID0geG1hbGxvY19vcGVuX3JlYWRfY2xv c2UoIi9wcm9jL21vZHVsZXMiLCAvKm1heHNpemU6Ki8gTlVMTCk7CisrICAgIGNoYXIgKnN1c3Bl bmRfc3RhdHMgPSB4bWFsbG9jX29wZW5fcmVhZF9jbG9zZSgiL3N5cy9rZXJuZWwvZGVidWcvc3Vz cGVuZF9zdGF0cyIsIC8qbWF4c2l6ZToqLyBOVUxMKTsKKysKKysgICAgdGltZV90IHQgPSB0aW1l KE5VTEwpOworKyAgICBjb25zdCBjaGFyICppc29fZGF0ZSA9IGlzb19kYXRlX3N0cmluZygmdCk7 CisrICAgIC8qIGR1bXAgc2hvdWxkIGJlIHJlYWRhYmxlIGJ5IGFsbCBpZiB3ZSdyZSBydW4gd2l0 aCAteCAqLworKyAgICB1aWRfdCBteV9ldWlkID0gKHVpZF90KS0xTDsKKysgICAgbW9kZV90IG1v ZGUgPSBERUZBVUxUX0RVTVBfRElSX01PREUgfCBTX0lST1RIOworKyAgICAvKiBhbmQgcmVhZGFi bGUgb25seSBmb3IgdGhlIG93bmVyIG90aGVyd2lzZSAqLworKyAgICBpZiAoIShmbGFncyAmIEFC UlRfT09QU19XT1JMRF9SRUFEQUJMRSkpCisrICAgIHsKKysgICAgICAgIG1vZGUgPSBERUZBVUxU X0RVTVBfRElSX01PREU7CisrICAgICAgICBteV9ldWlkID0gZ2V0ZXVpZCgpOworKyAgICB9Cisr CisrICAgIHBpZF90IG15X3BpZCA9IGdldHBpZCgpOworKyAgICB1bnNpZ25lZCBpZHggPSAwOwor KyAgICB1bnNpZ25lZCBlcnJvcnMgPSAwOworKyAgICB3aGlsZSAoaWR4IDwgb29wc19jbnQpCisr ICAgIHsKKysgICAgICAgIGNoYXIgYmFzZVtzaXplb2YoIm9vcHMtWVlZWS1NTS1ERC1oaDptbTpz cy0lbHUtJWx1IikgKyAyICogc2l6ZW9mKGxvbmcpKjNdOworKyAgICAgICAgc3ByaW50ZihiYXNl LCAib29wcy0lcy0lbHUtJWx1IiwgaXNvX2RhdGUsIChsb25nKW15X3BpZCwgKGxvbmcpaWR4KTsK KysgICAgICAgIGNoYXIgKnBhdGggPSBjb25jYXRfcGF0aF9maWxlKGR1bXBfbG9jYXRpb24sIGJh c2UpOworKworKyAgICAgICAgc3RydWN0IGR1bXBfZGlyICpkZCA9IGRkX2NyZWF0ZShwYXRoLCAv KnVpZDoqLyBteV9ldWlkLCBtb2RlKTsKKysgICAgICAgIGlmIChkZCkKKysgICAgICAgIHsKKysg ICAgICAgICAgICBkZF9jcmVhdGVfYmFzaWNfZmlsZXMoZGQsIC8qdWlkOiovIG15X2V1aWQsIE5V TEwpOworKyAgICAgICAgICAgIGFicnRfb29wc19zYXZlX2RhdGFfaW5fZHVtcF9kaXIoZGQsIChj aGFyKilnX2xpc3RfbnRoX2RhdGEob29wc19saXN0LCBpZHgrKyksIHByb2NfbW9kdWxlcyk7Cisr ICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9BQlJUX1ZFUlNJT04sIFZFUlNJ T04pOworKyAgICAgICAgICAgIGRkX3NhdmVfdGV4dChkZCwgRklMRU5BTUVfQU5BTFlaRVIsICJL ZXJuZWxvb3BzIik7CisrICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9UWVBF LCAiS2VybmVsb29wcyIpOworKyAgICAgICAgICAgIGlmIChjbWRsaW5lX3N0cikKKysgICAgICAg ICAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9DTURMSU5FLCBjbWRsaW5lX3N0cik7 CisrICAgICAgICAgICAgaWYgKHByb2NfbW9kdWxlcykKKysgICAgICAgICAgICAgICAgZGRfc2F2 ZV90ZXh0KGRkLCAicHJvY19tb2R1bGVzIiwgcHJvY19tb2R1bGVzKTsKKysgICAgICAgICAgICBp ZiAoZmlwc19lbmFibGVkICYmIHN0cmNtcChmaXBzX2VuYWJsZWQsICIwIikgIT0gMCkKKysgICAg ICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCAiZmlwc19lbmFibGVkIiwgZmlwc19lbmFibGVk KTsKKysgICAgICAgICAgICBpZiAoc3VzcGVuZF9zdGF0cykKKysgICAgICAgICAgICAgICAgZGRf c2F2ZV90ZXh0KGRkLCAic3VzcGVuZF9zdGF0cyIsIHN1c3BlbmRfc3RhdHMpOworKyAgICAgICAg ICAgIGRkX2Nsb3NlKGRkKTsKKysgICAgICAgICAgICBub3RpZnlfbmV3X3BhdGgocGF0aCk7Cisr ICAgICAgICB9CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgZXJyb3JzKys7CisrCisrICAg ICAgICBmcmVlKHBhdGgpOworKworKyAgICAgICAgaWYgKC0tY291bnRkb3duID09IDApCisrICAg ICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICBpZiAoZGQgJiYgKGZsYWdzICYgQUJSVF9PT1BT X1RIUk9UVExFX0NSRUFUSU9OKSkKKysgICAgICAgICAgICBpZiAoYWJydF9vb3BzX3NpZ25hbGVk X3NsZWVwKDEpID4gMCkKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgICAg ZnJlZShjbWRsaW5lX3N0cik7CisrICAgIGZyZWUocHJvY19tb2R1bGVzKTsKKysgICAgZnJlZShm aXBzX2VuYWJsZWQpOworKyAgICBmcmVlKHN1c3BlbmRfc3RhdHMpOworKworKyAgICByZXR1cm4g ZXJyb3JzOworK30KKysKKytzdGF0aWMgY2hhciAqYWJydF9vb3BzX2xpc3Rfb2ZfdGFpbnRlZF9t b2R1bGVzKGNvbnN0IGNoYXIgKnByb2NfbW9kdWxlcykKKyt7CisrICAgIHN0cnVjdCBzdHJidWYg KnJlc3VsdCA9IHN0cmJ1Zl9uZXcoKTsKKysKKysgICAgY29uc3QgY2hhciAqcCA9IHByb2NfbW9k dWxlczsKKysgICAgZm9yICg7OykKKysgICAgeworKyAgICAgICAgY29uc3QgY2hhciAqZW5kID0g c3RyY2hybnVsKHAsICdcbicpOworKyAgICAgICAgY29uc3QgY2hhciAqcGFyZW4gPSBzdHJjaHJu dWwocCwgJygnKTsKKysgICAgICAgIC8qIFdlIGxvb2sgZm9yIGEgbGluZSB3aXRoIHRoaXMgZm9y bWF0OgorKyAgICAgICAgICogImt2bV9pbnRlbCAxMjYyODkgMCAtIExpdmUgMHhmODI5ZTAwMCAo dGFpbnRfZmxhZ3MpIgorKyAgICAgICAgICogd2hlcmUgdGFpbnRfZmxhZ3MgaGF2ZSBsZXR0ZXJz CisrICAgICAgICAgKiAoZmxhZ3MgJysnIGFuZCAnLScgaW5kaWNhdGUgKHVuKWxvYWRpbmcsIHdl IG11c3QgaWdub3JlIHRoZW0pLgorKyAgICAgICAgICovCisrICAgICAgICB3aGlsZSAoKytwYXJl biA8IGVuZCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBpZiAoKHVuc2lnbmVkKSh0b3VwcGVy KCpwYXJlbikgLSAnQScpIDw9ICdaJy0nQScpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAg ICAgICBzdHJidWZfYXBwZW5kX3N0cmYocmVzdWx0LCByZXN1bHQtPmxlbiA9PSAwID8gIiUuKnMi IDogIiwlLipzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShzdHJjaHJudWwocCwn ICcpIC0gcCksIHAKKysgICAgICAgICAgICAgICAgKTsKKysgICAgICAgICAgICAgICAgYnJlYWs7 CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGlmICgqcGFyZW4gPT0gJyknKQorKyAgICAg ICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICgqZW5kID09ICdc MCcpCisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBwID0gZW5kICsgMTsKKysgICAgfQor KworKyAgICBpZiAocmVzdWx0LT5sZW4gPT0gMCkKKysgICAgeworKyAgICAgICAgc3RyYnVmX2Zy ZWUocmVzdWx0KTsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9CisrICAgIHJldHVybiBz dHJidWZfZnJlZV9ub2J1ZihyZXN1bHQpOworK30KKysKKyt2b2lkIGFicnRfb29wc19zYXZlX2Rh dGFfaW5fZHVtcF9kaXIoc3RydWN0IGR1bXBfZGlyICpkZCwgY2hhciAqb29wcywgY29uc3QgY2hh ciAqcHJvY19tb2R1bGVzKQorK3sKKysgICAgY2hhciAqZmlyc3RfbGluZSA9IG9vcHM7CisrICAg IGNoYXIgKnNlY29uZF9saW5lID0gKGNoYXIqKXN0cmNocihmaXJzdF9saW5lLCAnXG4nKTsgLyog bmV2ZXIgTlVMTCAqLworKyAgICAqc2Vjb25kX2xpbmUrKyA9ICdcMCc7CisrCisrICAgIGlmIChm aXJzdF9saW5lWzBdKQorKyAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9LRVJORUws IGZpcnN0X2xpbmUpOworKyAgICBkZF9zYXZlX3RleHQoZGQsIEZJTEVOQU1FX0JBQ0tUUkFDRSwg c2Vjb25kX2xpbmUpOworKworKyAgICAvKiBjaGVjayBpZiB0cmFjZSBkb2Vzbid0IGhhdmUgbGlu ZTogJ1lvdXIgQklPUyBpcyBicm9rZW4nICovCisrICAgIGlmIChzdHJzdHIoc2Vjb25kX2xpbmUs ICJZb3VyIEJJT1MgaXMgYnJva2VuIikpCisrICAgICAgICBkZF9zYXZlX3RleHQoZGQsIEZJTEVO QU1FX05PVF9SRVBPUlRBQkxFLAorKyAgICAgICAgICAgICAgICBfKCJBIGtlcm5lbCBwcm9ibGVt IG9jY3VycmVkIGJlY2F1c2Ugb2YgYnJva2VuIEJJT1MuICIKKysgICAgICAgICAgICAgICAgICAi VW5mb3J0dW5hdGVseSwgc3VjaCBwcm9ibGVtcyBhcmUgbm90IGZpeGFibGUgYnkga2VybmVsIG1h aW50YWluZXJzLiIpKTsKKysgICAgLyogY2hlY2sgaWYgdHJhY2UgZG9lc24ndCBoYXZlIGxpbmU6 ICdZb3VyIGhhcmR3YXJlIGlzIHVuc3VwcG9ydGVkJyAqLworKyAgICBlbHNlIGlmIChzdHJzdHIo c2Vjb25kX2xpbmUsICJZb3VyIGhhcmR3YXJlIGlzIHVuc3VwcG9ydGVkIikpCisrICAgICAgICBk ZF9zYXZlX3RleHQoZGQsIEZJTEVOQU1FX05PVF9SRVBPUlRBQkxFLAorKyAgICAgICAgICAgICAg ICBfKCJBIGtlcm5lbCBwcm9ibGVtIG9jY3VycmVkLCBidXQgeW91ciBoYXJkd2FyZSBpcyB1bnN1 cHBvcnRlZCwgIgorKyAgICAgICAgICAgICAgICAgICJ0aGVyZWZvcmUga2VybmVsIG1haW50YWlu ZXJzIGFyZSB1bmFibGUgdG8gZml4IHRoaXMgcHJvYmxlbS4iKSk7CisrICAgIGVsc2UKKysgICAg eworKyAgICAgICAgY2hhciAqdGFpbnRlZF9zaG9ydCA9IGtlcm5lbF90YWludGVkX3Nob3J0KHNl Y29uZF9saW5lKTsKKysgICAgICAgIGlmICh0YWludGVkX3Nob3J0KQorKyAgICAgICAgeworKyAg ICAgICAgICAgIGxvZ19ub3RpY2UoIktlcm5lbCBpcyB0YWludGVkICclcyciLCB0YWludGVkX3No b3J0KTsKKysgICAgICAgICAgICBkZF9zYXZlX3RleHQoZGQsIEZJTEVOQU1FX1RBSU5URURfU0hP UlQsIHRhaW50ZWRfc2hvcnQpOworKworKyAgICAgICAgICAgIGNoYXIgKnRudF9sb25nID0ga2Vy bmVsX3RhaW50ZWRfbG9uZyh0YWludGVkX3Nob3J0KTsKKysgICAgICAgICAgICBkZF9zYXZlX3Rl eHQoZGQsIEZJTEVOQU1FX1RBSU5URURfTE9ORywgdG50X2xvbmcpOworKyAgICAgICAgICAgIGZy ZWUodG50X2xvbmcpOworKworKyAgICAgICAgICAgIHN0cnVjdCBzdHJidWYgKnJlYXNvbiA9IHN0 cmJ1Zl9uZXcoKTsKKysgICAgICAgICAgICBjb25zdCBjaGFyICpmbXQgPSBfKCJBIGtlcm5lbCBw cm9ibGVtIG9jY3VycmVkLCBidXQgeW91ciBrZXJuZWwgaGFzIGJlZW4gIgorKyAgICAgICAgICAg ICAgICAgICAgInRhaW50ZWQgKGZsYWdzOiVzKS4gS2VybmVsIG1haW50YWluZXJzIGFyZSB1bmFi bGUgdG8gIgorKyAgICAgICAgICAgICAgICAgICAgImRpYWdub3NlIHRhaW50ZWQgcmVwb3J0cy4i KTsKKysgICAgICAgICAgICBzdHJidWZfYXBwZW5kX3N0cmYocmVhc29uLCBmbXQsIHRhaW50ZWRf c2hvcnQpOworKworKyAgICAgICAgICAgIGNoYXIgKm1vZGxpc3QgPSAhcHJvY19tb2R1bGVzID8g TlVMTCA6IGFicnRfb29wc19saXN0X29mX3RhaW50ZWRfbW9kdWxlcyhwcm9jX21vZHVsZXMpOwor KyAgICAgICAgICAgIGlmIChtb2RsaXN0KQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgc3RyYnVmX2FwcGVuZF9zdHJmKHJlYXNvbiwgXygiIFRhaW50ZWQgbW9kdWxlczogJXMuIiks IG1vZGxpc3QpOworKyAgICAgICAgICAgICAgICBmcmVlKG1vZGxpc3QpOworKyAgICAgICAgICAg IH0KKysKKysgICAgICAgICAgICBkZF9zYXZlX3RleHQoZGQsIEZJTEVOQU1FX05PVF9SRVBPUlRB QkxFLCByZWFzb24tPmJ1Zik7CisrICAgICAgICAgICAgc3RyYnVmX2ZyZWUocmVhc29uKTsKKysg ICAgICAgICAgICBmcmVlKHRhaW50ZWRfc2hvcnQpOworKyAgICAgICAgfQorKyAgICB9CisrCisr ICAgIC8vIFRPRE86IGFkZCAiS2VybmVsIG9vcHM6ICIgcHJlZml4LCBzbyB0aGF0IGFsbCBvb3Bz ZXMgaGF2ZSByZWNvZ25pemFibGUgRklMRU5BTUVfUkVBU09OPworKyAgICAvLyBrZXJuZWwgb29w cyAxc3QgbGluZSBtYXkgbG9vayBxdWl0ZSBwdXp6bGluZyBvdGhlcndpc2UuLi4KKysgICAgc3Ry Y2hybnVsKHNlY29uZF9saW5lLCAnXG4nKVswXSA9ICdcMCc7CisrICAgIGRkX3NhdmVfdGV4dChk ZCwgRklMRU5BTUVfUkVBU09OLCBzZWNvbmRfbGluZSk7CisrfQorKworK2ludCBhYnJ0X29vcHNf c2lnbmFsZWRfc2xlZXAoaW50IHNlY29uZHMpCisreworKyAgICBzaWdzZXRfdCBzZXQ7CisrICAg IHNpZ2VtcHR5c2V0KCZzZXQpOworKyAgICBzaWdhZGRzZXQoJnNldCwgU0lHVEVSTSk7CisrICAg IHNpZ2FkZHNldCgmc2V0LCBTSUdJTlQpOworKyAgICBzaWdhZGRzZXQoJnNldCwgU0lHSFVQKTsK KysKKysgICAgc3RydWN0IHRpbWVzcGVjIHRpbWVvdXQ7CisrICAgIHRpbWVvdXQudHZfc2VjID0g c2Vjb25kczsKKysgICAgdGltZW91dC50dl9uc2VjID0gMDsKKysKKysgICAgcmV0dXJuIGdfYWJy dF9vb3BzX3NsZWVwX3dva2VfdXBfb25fc2lnbmFsID0gc2lndGltZWR3YWl0KCZzZXQsIE5VTEws ICZ0aW1lb3V0KTsKKyt9CisrCisrY2hhciAqYWJydF9vb3BzX3N0cmluZ19maWx0ZXJfcmVnZXgo dm9pZCkKKyt7CisrICAgIG1hcF9zdHJpbmdfdCAqc2V0dGluZ3MgPSBuZXdfbWFwX3N0cmluZygp OworKworKyAgICBsb2FkX2FicnRfcGx1Z2luX2NvbmZfZmlsZSgib29wcy5jb25mIiwgc2V0dGlu Z3MpOworKworKyAgICBpbnQgb25seV9mYXRhbF9tY2UgPSAxOworKyAgICB0cnlfZ2V0X21hcF9z dHJpbmdfaXRlbV9hc19ib29sKHNldHRpbmdzLCAiT25seUZhdGFsTUNFIiwgJm9ubHlfZmF0YWxf bWNlKTsKKysKKysgICAgZnJlZV9tYXBfc3RyaW5nKHNldHRpbmdzKTsKKysKKysgICAgaWYgKG9u bHlfZmF0YWxfbWNlKQorKyAgICAgICAgcmV0dXJuIHhzdHJkdXAoIl5NYWNoaW5lIC4qJCIpOwor KworKyAgICByZXR1cm4gTlVMTDsKKyt9CitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvb29wcy11 dGlscy5oIGIvc3JjL3BsdWdpbnMvb29wcy11dGlscy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMC4uOTQ3ZjY1MgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL3BsdWdpbnMv b29wcy11dGlscy5oCitAQCAtMCwwICsxLDQ4IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIw MTQgIEFCUlQgdGVhbQorKyAqIENvcHlyaWdodCAoQykgMjAxNCAgUmVkSGF0IEluYworKyAqCisr ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICogKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrICovCisrI2lmbmRlZiBfQUJSVF9PT1BTX1VUSUxTX0hfCisrI2RlZmluZSBfQUJSVF9P T1BTX1VUSUxTX0hfCisrCisrI2luY2x1ZGUgImxpYmFicnQuaCIKKysKKysvKiBIb3cgbWFueSBw cm9ibGVtIGRpcnMgdG8gY3JlYXRlIGF0IG1vc3Q/CisrICogQWxzbyBjYXVzZXMgY29vbGRvd24g c2xlZXAgd2l0aCAtdCBpZiBleGNlZWRlZCAtCisrICogdXNlZnVsIHdoZW4gY2FsbGVkIGZyb20g YSBsb2cgd2F0Y2hlci4KKysgKi8KKysjZGVmaW5lIEFCUlRfT09QU19NQVhfRFVNUEVEX0NPVU5U ICA1CisrCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7CisrI2VuZGlmCisrCisr ZW51bSB7CisrICAgIEFCUlRfT09QU19USFJPVFRMRV9DUkVBVElPTiA9IDEgPDwgMCwKKysgICAg QUJSVF9PT1BTX1dPUkxEX1JFQURBQkxFICAgID0gMSA8PCAxLAorKyAgICBBQlJUX09PUFNfUFJJ TlRfU1RET1VUICAgICAgPSAxIDw8IDIsCisrfTsKKysKKytpbnQgZ19hYnJ0X29vcHNfc2xlZXBf d29rZV91cF9vbl9zaWduYWw7CisrCisraW50IGFicnRfb29wc19wcm9jZXNzX2xpc3QoR0xpc3Qg Km9vcHNfbGlzdCwgY29uc3QgY2hhciAqZHVtcF9sb2NhdGlvbiwgaW50IGZsYWdzKTsKKyt1bnNp Z25lZCBhYnJ0X29vcHNfY3JlYXRlX2R1bXBfZGlycyhHTGlzdCAqb29wc19saXN0LCBjb25zdCBj aGFyICpkdW1wX2xvY2F0aW9uLCBpbnQgZmxhZ3MpOworK3ZvaWQgYWJydF9vb3BzX3NhdmVfZGF0 YV9pbl9kdW1wX2RpcihzdHJ1Y3QgZHVtcF9kaXIgKmRkLCBjaGFyICpvb3BzLCBjb25zdCBjaGFy ICpwcm9jX21vZHVsZXMpOworK2ludCBhYnJ0X29vcHNfc2lnbmFsZWRfc2xlZXAoaW50IHNlY29u ZHMpOworK2NoYXIgKmFicnRfb29wc19zdHJpbmdfZmlsdGVyX3JlZ2V4KHZvaWQpOworKworKyNp ZmRlZiBfX2NwbHVzcGx1cworK30KKysjZW5kaWYKKysKKysjZW5kaWYgLypfQUJSVF9PT1BTX1VU SUxTX0hfKi8KKy0tIAorMS45LjMKKwoKZGlmZiAtLWdpdCBhLzAwMDgtYWJydC1qb3VybmFsLWZp eC1pbmNsdWRlcy5wYXRjaCBiLzAwMDgtYWJydC1qb3VybmFsLWZpeC1pbmNsdWRlcy5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGU5N2U4Ci0tLSAvZGV2L251bGwK KysrIGIvMDAwOC1hYnJ0LWpvdXJuYWwtZml4LWluY2x1ZGVzLnBhdGNoCkBAIC0wLDAgKzEsMzEg QEAKK0Zyb20gNjU4MWFhOWEyNTMzNGFhYTlhYmQxZTQwNjc2NjY0NjAyYjM0ZWEwYiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpha3ViIEZpbGFrIDxqZmlsYWtAcmVkaGF0LmNvbT4K K0RhdGU6IFR1ZSwgMTUgSnVsIDIwMTQgMTM6MTA6MDQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCA4 LzldIGFicnQtam91cm5hbDogZml4IGluY2x1ZGVzCisKK1JlbGF0ZWQgdG8gcmhieiMxMDU5NzI0 CisKK1NpZ25lZC1vZmYtYnk6IEpha3ViIEZpbGFrIDxqZmlsYWtAcmVkaGF0LmNvbT4KKy0tLQor IHNyYy9wbHVnaW5zL2FicnQtam91cm5hbC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvYWJy dC1qb3VybmFsLmMgYi9zcmMvcGx1Z2lucy9hYnJ0LWpvdXJuYWwuYworaW5kZXggNDcyMzU3ZC4u ODljODM5MyAxMDA2NDQKKy0tLSBhL3NyYy9wbHVnaW5zL2FicnQtam91cm5hbC5jCisrKysgYi9z cmMvcGx1Z2lucy9hYnJ0LWpvdXJuYWwuYworQEAgLTE2LDEwICsxNiwxMCBAQAorICNpbmNsdWRl IDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8cG9sbC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0j aW5jbHVkZSA8YWJydC9saWJhYnJ0Lmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgCisgI2luY2x1 ZGUgImFicnQtam91cm5hbC5oIgorKyNpbmNsdWRlICJsaWJhYnJ0LmgiCisgCisgI2luY2x1ZGUg PHN5c3RlbWQvc2Qtam91cm5hbC5oPgorIAorLS0gCisxLjkuMworCgpkaWZmIC0tZ2l0IGEvYWJy dC5zcGVjIGIvYWJydC5zcGVjCmluZGV4IDBkNDAzM2MuLjFjZDJlYmUgMTAwNjQ0Ci0tLSBhL2Fi cnQuc3BlYworKysgYi9hYnJ0LnNwZWMKQEAgLTQwLDcgKzQwLDcgQEAKIFN1bW1hcnk6IEF1dG9t YXRpYyBidWcgZGV0ZWN0aW9uIGFuZCByZXBvcnRpbmcgdG9vbAogTmFtZTogYWJydAogVmVyc2lv bjogMi4yLjIKLVJlbGVhc2U6IDMlez9kaXN0fQorUmVsZWFzZTogNCV7P2Rpc3R9CiBMaWNlbnNl OiBHUEx2MisKIEdyb3VwOiBBcHBsaWNhdGlvbnMvU3lzdGVtCiBVUkw6IGh0dHBzOi8vZmVkb3Jh aG9zdGVkLm9yZy9hYnJ0LwpAQCAtNDgsNiArNDgsMTYgQEAgU291cmNlOiBodHRwczovL2ZlZG9y YWhvc3RlZC5vcmcvcmVsZWFzZWQvJXtuYW1lfS8le25hbWV9LSV7dmVyc2lvbn0udGFyLmd6CiAj IGRvbid0IHJlbW92ZSB0aGlzIHBhdGNoLCBwYWNrYWdlcyBpbiByYXdoaWRlIGFyZSBub3Qgc2ln bmVkIQogUGF0Y2gwOiBkaXNhYmxlLU9wZW5HUEdDaGVjay1pbi1GZWRvcmEtUmF3aGlkZS5wYXRj aAogCisjUGF0Y2gxOiAwMDAxLXVwZGF0ZS0uZ2l0aWdub3JlLnBhdGNoCitQYXRjaDI6IDAwMDIt cHl0aG9uLXN1cHBvcnQtZXhjZXB0aW9ucy13aXRob3V0LXRyYWNlYmFjay5wYXRjaAorI1BhdGNo MzogMDAwMy11c2Utc2F0eXItd2l0aC1uYXRpdmUtdW53aWRlci5wYXRjaAorUGF0Y2g0OiAwMDA0 LWtvb3BzLWR1bXAtb29wc2VzLWZyb20tc3lzdGVtZC1qb3VybmFsLnBhdGNoCisjUGF0Y2g1OiAw MDA1LXNwZWMtYWRkLXRoZS1qb3VybmFsLW9vcHMtc3R1ZmYucGF0Y2gKKyNQYXRjaDY6IDAwMDYt dGVzdHN1aXRlLWFkZC10ZXN0cy1mb3ItYWJydC1kdW1wLWpvdXJuYWwtb29wcy5wYXRjaAorI1Bh dGNoNzogMDAwNy1zcGVjLWFkZC1hLWJ1aWxkLXJlcXVpcmUtaXRlbS1mb3Itc3lzdGVtZC1qb3Vy bmFsLnBhdGNoCitQYXRjaDg6IDAwMDgtYWJydC1qb3VybmFsLWZpeC1pbmNsdWRlcy5wYXRjaAor I1BhdGNoOTogMDAwOS1zcGVjLWRvbi10LXVzZS1uYXRpdmUtdW53aW5kZXItb24tYXJtLWFyY2gu cGF0Y2gKKwogIyAnJSVhdXRvc2V0dXAgLVMgZ2l0JyAtPiBnaXQKIEJ1aWxkUmVxdWlyZXM6IGdp dAogCkBAIC0xODEsNiArMTkxLDcgQEAgd2hpY2ggaXMgYWJsZSB0byBhbmFseXplIEMvQysrIGNy YXNoZXMgcmVtb3RlbHkuCiAlcGFja2FnZSBhZGRvbi1rZXJuZWxvb3BzCiBTdW1tYXJ5OiAle25h bWV9J3Mga2VybmVsb29wcyBhZGRvbgogR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJp ZXMKK0J1aWxkUmVxdWlyZXM6IHN5c3RlbWQtZGV2ZWwKIFJlcXVpcmVzOiBjdXJsCiBSZXF1aXJl czogJXtuYW1lfSA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQogJWlmIDAleyE/cmhlbDoxfQpAQCAt NDU5LDYgKzQ3MCw3IEBAIG1rZGlyIC1wICRSUE1fQlVJTERfUk9PVC92YXIvY2FjaGUvYWJydC1k aQogbWtkaXIgLXAgJFJQTV9CVUlMRF9ST09UL3Zhci9ydW4vYWJydAogbWtkaXIgLXAgJFJQTV9C VUlMRF9ST09UL3Zhci90bXAvYWJydAogbWtkaXIgLXAgJFJQTV9CVUlMRF9ST09UL3Zhci9zcG9v bC9hYnJ0LXVwbG9hZAorbWtkaXIgLXAgJFJQTV9CVUlMRF9ST09UJXtfbG9jYWxzdGF0ZWRpcn0v bGliL2FicnQKIAogZGVza3RvcC1maWxlLWluc3RhbGwgXAogICAgICAgICAtLWRpciAke1JQTV9C VUlMRF9ST09UfSV7X2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyBcCkBAIC03OTgsMTAgKzgxMCwxNSBA QCBndGstdXBkYXRlLWljb24tY2FjaGUgJXtfZGF0YWRpcn0vaWNvbnMvaGljb2xvciAmPi9kZXYv bnVsbCB8fCA6CiAlZWxzZQogJXtfaW5pdHJkZGlyfS9hYnJ0LW9vcHMKICVlbmRpZgorCislZGly ICV7X2xvY2Fsc3RhdGVkaXJ9L2xpYi9hYnJ0CisKICV7X2JpbmRpcn0vYWJydC1kdW1wLW9vcHMK KyV7X2JpbmRpcn0vYWJydC1kdW1wLWpvdXJuYWwtb29wcwogJXtfYmluZGlyfS9hYnJ0LWFjdGlv bi1hbmFseXplLW9vcHMKICV7X2JpbmRpcn0vYWJydC1hY3Rpb24tc2F2ZS1rZXJuZWwtZGF0YQog JXtfbWFuZGlyfS9tYW4xL2FicnQtZHVtcC1vb3BzLjEqCisle19tYW5kaXJ9L21hbjEvYWJydC1k dW1wLWpvdXJuYWwtb29wcy4xKgogJXtfbWFuZGlyfS9tYW4xL2FicnQtYWN0aW9uLWFuYWx5emUt b29wcy4xKgogJXtfbWFuZGlyfS9tYW4xL2FicnQtYWN0aW9uLXNhdmUta2VybmVsLWRhdGEuMSoK IApAQCAtOTI3LDYgKzk0NCwxMCBAQCBndGstdXBkYXRlLWljb24tY2FjaGUgJXtfZGF0YWRpcn0v aWNvbnMvaGljb2xvciAmPi9kZXYvbnVsbCB8fCA6CiAlY29uZmlnKG5vcmVwbGFjZSkgJXtfc3lz Y29uZmRpcn0vcHJvZmlsZS5kL2FicnQtY29uc29sZS1ub3RpZmljYXRpb24uc2gKIAogJWNoYW5n ZWxvZworKiBXZWQgSnVsIDE2IDIwMTQgSmFrdWIgRmlsYWsgPGpmaWxha0ByZWRoYXQuY29tPiAy LjIuMi00CistIGR1bXAga2VybmVsIG9vcHNlcyBmcm9tIHN5c3RlbWQtam91cm5hbAorLSBzdXBw b3J0IFN5bnRheEVycm9yIFB5dGhvbiBleGNlcHRpb25zCisKICogV2VkIEp1bCAxNiAyMDE0IEph a3ViIEZpbGFrIDxqZmlsYWtAcmVkaGF0LmNvbT4gMi4yLjItMwogLSBkb24ndCB1c2UgbmF0aXZl IHVud2luZGVyIG9uIGFybQogCg==