From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jocelyn Falempe To: git-commits@fedoraproject.org Subject: [rpms/kmscon] rawhide: Add localectl runtime support Date: Fri, 05 Jun 2026 11:19:01 GMT Message-ID: <178065834185.1.5393917173154296891.rpms-kmscon-acf9652b0f61@fedoraproject.org> List-ID: X-Git-Repo: rpms/kmscon X-Git-Branch: rawhide X-Git-Rev: acf9652b0f61ec90ae0042e92b6282c65f89d0d0 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMva21zY29uCiAgICAgICAgICAgIEJyYW5jaCA6IHJhd2hpZGUKICAgICAgICAg ICAgQ29tbWl0IDogYWNmOTY1MmIwZjYxZWM5MGFlMDA0MmU5MmI2MjgyYzY1Zjg5ZDBkMAogICAg ICAgICAgICBBdXRob3IgOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+CiAg ICAgICAgICAgIERhdGUgICA6IDIwMjYtMDYtMDVUMTM6MTc6MjQrMDI6MDAKICAgICAgICAgICAg U3RhdHMgIDogKzI4MTAvLTMgaW4gMiBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBz Oi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMva21zY29uL2MvYWNmOTY1MmIwZjYxZWM5MGFl MDA0MmU5MmI2MjgyYzY1Zjg5ZDBkMD9icmFuY2g9cmF3aGlkZQoKICAgICAgICAgICAgTG9nOgog ICAgICAgICAgICBBZGQgbG9jYWxlY3RsIHJ1bnRpbWUgc3VwcG9ydAoKVGhpcyBhbGxvd3MgdG8g Y2hhbmdlIHRoZSBrZXlib2FyZCBsYXlvdXQgYXQgcnVudGltZSB1c2luZyBsb2NhbGVjdGwuCk9w ZW5RQSBzY3JpcHRzIHVzZSBsb2Fka2V5cyBvbiBmYmNvbiBWVCwgYW5kIG5lZWQgYSBzaW1pbGFy CmZ1bmN0aW9uYWxpdHkgb24ga21zY29uCgpTaWduZWQtb2ZmLWJ5OiBKb2NlbHluIEZhbGVtcGUg PGpmYWxlbXBlQHJlZGhhdC5jb20+CgotLS0KZGlmZiAtLWdpdCBhL2ttc2Nvbi5zcGVjIGIva21z Y29uLnNwZWMKaW5kZXggOTRlOTRmNS4uNzg3NWNhOSAxMDA2NDQKLS0tIGEva21zY29uLnNwZWMK KysrIGIva21zY29uLnNwZWMKQEAgLTIxLDcgKzIxLDcgQEAgQnVpbGRSZXF1aXJlczogIHBrZ2Nv bmZpZyhmcmVldHlwZTIpCiBCdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKGdibSkKIEJ1aWxkUmVx dWlyZXM6ICBwa2djb25maWcoZ2xlc3YyKQogQnVpbGRSZXF1aXJlczogIHBrZ2NvbmZpZyhsaWJk cm0pCi1CdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKGxpYnN5c3RlbWQpCitCdWlsZFJlcXVpcmVz OiAgcGtnY29uZmlnKGRidXMtMSkKIEJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWcobGlidWRldikg Pj0gMTcyCiBCdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKHBhbmdvKQogQnVpbGRSZXF1aXJlczog IHBrZ2NvbmZpZyhwYW5nb2Z0MikKQEAgLTI5LDYgKzI5LDggQEAgQnVpbGRSZXF1aXJlczogIHBr Z2NvbmZpZyhzeXN0ZW1kKQogQnVpbGRSZXF1aXJlczogIHBrZ2NvbmZpZyh4a2Jjb21tb24pID49 IDAuNS4wCiBCdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKHpsaWIpCiAKK1BhdGNoOiBsb2NhbGVj dGxfc3VwcG9ydC5wYXRjaAorCiAlZGVzY3JpcHRpb24KIEttc2NvbiBpcyBhIHNpbXBsZSB0ZXJt aW5hbCBlbXVsYXRvciBiYXNlZCBvbiBsaW51eCBrZXJuZWwgbW9kZSBzZXR0aW5nIChLTVMpLgog SXQgaXMgYW4gYXR0ZW1wdCB0byByZXBsYWNlIHRoZSBpbi1rZXJuZWwgVlQgaW1wbGVtZW50YXRp b24gd2l0aCBhIHVzZXJzcGFjZQpAQCAtOTEsOCArOTMsNiBAQCBtb2QtZ2x0ZXguc28KICV7X2Jp bmRpcn0vJXtuYW1lfQogJXtfYmluZGlyfS9rbXNjb24tbGF1bmNoLWd1aQogJXtfbGliZGlyfS9r bXNjb24vbW9kLXVuaWZvbnQuc28KLSVkaXIgJXtfbGliZXhlY2Rpcn0va21zY29uCi0le19saWJl eGVjZGlyfS9rbXNjb24va21zY29uCiAle19tYW5kaXJ9L21hbjEva21zY29uLjEqCiAle19tYW5k aXJ9L21hbjUva21zY29uLmNvbmYuNSoKICV7X3VuaXRkaXJ9L2ttc2Nvbi5zZXJ2aWNlCgpkaWZm IC0tZ2l0IGEvbG9jYWxlY3RsX3N1cHBvcnQucGF0Y2ggYi9sb2NhbGVjdGxfc3VwcG9ydC5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmQ1MTdkCi0tLSAvZGV2L251 bGwKKysrIGIvbG9jYWxlY3RsX3N1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwyODA3IEBACitGcm9t IDUxOWE1N2I4NTQ2OTc3ZDAzNzhhYzQ5MTA2NTc5N2QzMDQwZjkxNGEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+CitE YXRlOiBGcmksIDUgSnVuIDIwMjYgMTI6MDg6NTYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gU3F1 YXNoZWQgY29tbWl0IG9mIHRoZSBmb2xsb3dpbmc6CisKK2NvbW1pdCAyMWE3ZjQxMjY2YTg4MTE2 OTYwOTQ1MmQzZDNkNzYyM2MxMDQwNGFlCitBdXRob3I6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVt cGVAcmVkaGF0LmNvbT4KK0RhdGU6ICAgRnJpIEp1biA1IDExOjExOjQyIDIwMjYgKzAyMDAKKwor ICAgIGRidXM6IExpc3RlbiB0byBsb2NhbGUxIHByb3BlcnR5IGNoYW5nZXMKKworICAgIEFuZCB1 cGRhdGUgdGhlIGtleWJvYXJkIGxheW91dCBhY2NvcmRpbmdseS4KKworICAgIERvbid0IGxpc3Rl biB0byBsb2NhbGUxIHByb3BlcnR5IGNoYW5nZXMgaWYgdGhlIGtleWJvYXJkIGxheW91dCB3YXMK KyAgICBzZXQgaW4gdGhlIGNvbmZpZyBmaWxlIG9yIGluIGNvbW1hbmQgbGluZSBhcmd1bWVudC4K KworICAgIFRoaXMgYWxsb3dzIHRvIHVzZSBgbG9jYWxlY3RsIHNldC1rZXltYXBgIHRvIGNoYW5n ZSB0aGUga2V5Ym9hcmQKKyAgICBsYXlvdXQgYXQgcnVudGltZS4KKyAgICBPbmUgZGlmZmVyZW5j ZSBmcm9tICJsb2Fka2V5cyIgaXMgdGhhdCB0aGlzIGlzIGEgc3lzdGVtLXdpZGUgc2V0dGluZywK KyAgICBhbmQgdGhhdCBpdCB3aWxsIGFmZmVjdCBhbGwga21zY29uIGluc3RhbmNlIG9uIGFsbCB0 dHkuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhh dC5jb20+CisKK2NvbW1pdCA5OWI1ZTdlODQwMDM1ZjlmNmE0MzdjYjRkMWM1MDZiZTA4NWNiZDky CitBdXRob3I6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KK0RhdGU6ICAg RnJpIEp1biA1IDEwOjQ4OjIxIDIwMjYgKzAyMDAKKworICAgIGNvbmY6IFVzZSBOVUxMIGZvciBk ZWZhdWx0IHhrYiBjb25maWcgdmFyaWFibGUKKworICAgIFRoaXMgYmV0dGVyIGZpdCBsaWJ4a2Jj b21tb24gQVBJCisgICAgUmVtb3ZlIHRoZSB3b3JrYXJvdW5kIGluIGlucHV0LCBhcyBpdCdzIG5v IGxvbmdlciBuZWNlc3NhcnkuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKb2NlbHluIEZhbGVtcGUg PGpmYWxlbXBlQHJlZGhhdC5jb20+CisKK2NvbW1pdCAzMDEwMDA4YzVkODEwYTc5NGI0N2UzOGJl ZmJkNzgwZjQwNmM0OTA0CitBdXRob3I6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0 LmNvbT4KK0RhdGU6ICAgRnJpIEp1biA1IDEwOjIyOjAxIDIwMjYgKzAyMDAKKworICAgIGlucHV0 OiBBZGQgaW5wdXRfdXBkYXRlX2tleW1hcCgpIHRvIGNoYW5nZSB0aGUga2V5bWFwIGF0IHJ1bnRp bWUKKworICAgIFNpZ25lZC1vZmYtYnk6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0 LmNvbT4KKworY29tbWl0IGQ3MTZkNzJjYWU2MzMxZTY4MWEwZjBhMzdkZmE0YWQyY2M0OTM2NmQK K0F1dGhvcjogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgorRGF0ZTogICBG cmkgSnVuIDUgMTA6MTY6MDkgMjAyNiArMDIwMAorCisgICAgaW5wdXQ6IHNwbGl0IGtleWJvYXJk IGxheW91dCBhbmQgY29tcG9zZSBpbml0aWFsaXphdGlvbgorCisgICAgU2lnbmVkLW9mZi1ieTog Sm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgorCitjb21taXQgMGRmZmJkN2Ey N2RiN2YyMzgwNmNmYWIwZWNkNTM2OWU1ZjdiMTVjYQorQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUg PGpmYWxlbXBlQHJlZGhhdC5jb20+CitEYXRlOiAgIFRodSBKdW4gNCAwMDozODoyMCAyMDI2ICsw MjAwCisKKyAgICBzZXNzaW9uOiBTaW1wbGlmeSBzZXNzaW9uIG1hbmFnZW1lbnQKKworICAgIERp cmVjdGx5IHN3aXRjaCBmcm9tIG9uZSBzZXNzaW9uIHRvIGFub3RoZXIuCisKKyAgICBTaWduZWQt b2ZmLWJ5OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+CisKK2NvbW1pdCBm YTQyZDZkMGFkZjgwNmEwNTM0OWVmZWRjZWFhODAxZGY3N2FjYTZkCitBdXRob3I6IEpvY2VseW4g RmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KK0RhdGU6ICAgV2VkIEp1biAzIDE3OjM3OjQ3 IDIwMjYgKzAyMDAKKworICAgIHRlcm1pbmFsOiBwYXNzIGRpcmVjdGx5IHRoZSBzZWF0IGlucHV0 LCBjb25mLCBuYW1lIGFuZCBlbG9vcAorCisgICAgVGhpcyBhdm9pZCB0byB1c2Uga21zY29uX3Nl YXRfZ2V0X3h4eCgpIGZvciBlYWNoLgorCisgICAgU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxl bXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgorCitjb21taXQgMjEwMTFiMTU2MWM5MTk5ZmRhZTJh MTU2NmQyN2U0M2I2N2JjYzBiNgorQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJl ZGhhdC5jb20+CitEYXRlOiAgIFdlZCBKdW4gMyAxNjoyNDoyNCAyMDI2ICswMjAwCisKKyAgICBz ZXNzaW9uOiBSZW1vdmUgc2Vzc2lvbiBjYWxsYmFjaworCisgICAgQXMgdGVybWluYWwgc2Vzc2lv bnMgYXJlIHRoZSBvbmx5IHNlc3Npb24gYXZhaWxhYmxlLCByZW1vdmUgdGhlCisgICAgY2FsbGJh Y2tzLCBhbmQgY2FsbCBkaXJlY3RseSB0aGUgY29ycmVzcG9uZGluZyB0ZXJtaW5hbCBmdW5jdGlv bnMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhh dC5jb20+CisKK2NvbW1pdCAxMmMxMDcyZDI1NGU2YjA0ODE5ODUwNjMwZGVmOTAyOGUwY2Y4ZDE5 CitBdXRob3I6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KK0RhdGU6ICAg V2VkIEp1biAzIDEyOjI2OjEzIDIwMjYgKzAyMDAKKworICAgIGR1bW15X3Nlc3Npb246IFJlbW92 ZSBkdW1teSBzZXNzaW9ucworCisgICAgS21zY29uIHdhbnRlZCB0byBwcm92aWRlIGRpZmZlcmVu dCB0eXBlIG9mIHNlc3Npb24sIGJ1dCBvbmx5IHRoZQorICAgIHRlcm1pbmFsIHNlc3Npb24gaXMg dXNlZC4KKyAgICBEdW1teSBzZXNzaW9uIGlzIGp1c3QgYSBibGFjayBzY3JlZW4sIHNvIGhhcyBu byByZWFsIHVzYWdlLgorCisgICAgTGV0J3MgZm9jdXMgb24gdGVybWluYWwgc2Vzc2lvbnMsIGFu ZCByZW1vdmUgdGhlIGR1bW15IHNlc3Npb24uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKb2NlbHlu IEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+CisKK2NvbW1pdCBhNmU3ODE1M2E1NjkwNjU5 ZDk5ZTU4N2ZlNzcwZWNhNGI1NmQwOWFkCitBdXRob3I6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVt cGVAcmVkaGF0LmNvbT4KK0RhdGU6ICAgTW9uIEp1biAxIDIzOjQxOjMyIDIwMjYgKzAyMDAKKwor ICAgIFJlbW92ZSBzdGFydHVwIHNjcmlwdCwgYXMgaXQgaXMgbm8gbW9yZSBuZWNlc3NhcnkKKwor ICAgIGttc2NvbiBub3cgcmV0cmlldmUgeGtiIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGlyZWN0 bHkgZm9ybSBkYnVzLAorICAgIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoZSBzdGFydHVwIHNj cmlwdC4KKworICAgIFNpZ25lZC1vZmYtYnk6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVk aGF0LmNvbT4KKworY29tbWl0IDA2YmI3NDEzMjkyZDdjNTU2ZmZjODE3YmMzMDc1YzNjM2M5NmZi MGMKK0F1dGhvcjogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgorRGF0ZTog ICBUaHUgTWF5IDIxIDE4OjA5OjUxIDIwMjYgKzAyMDAKKworICAgIFVzZSBsaWJkYnVzIGRpcmVj dGx5IHRvIGdldCBsb2NhbGUKKworICAgIFNpZ25lZC1vZmYtYnk6IEpvY2VseW4gRmFsZW1wZSA8 amZhbGVtcGVAcmVkaGF0LmNvbT4KKworY29tbWl0IDg0NTAxNjg0ZGI3ZGRhNjA2MjA5YzRjN2Fl MDRmN2U2NmQ5NjQ4MDkKK0F1dGhvcjogRmFiaWFuIFZvZ3QgPGZ2b2d0QHN1c2UuZGU+CitEYXRl OiAgIFR1ZSBKdW4gMiAxMjozMTowNSAyMDI2ICswMjAwCisKKyAgICBmcmVldHlwZTogRW5hYmxl IGxpZ2h0IGhpbnRpbmcKKworICAgIE5vdCBoaW50aW5nIGF0IGFsbCByZXN1bHRzIGluIGJsdXJy eSBlZGdlcywgZXNwZWNpYWxseSB2aXNpYmxlIHdpdGggc3RyYWlnaHQKKyAgICBsaW5lcyBpbiBj b21tb24gY2hhcmFjdGVycyBzdWNoIGFzICItW10iLgorCisgICAgTGlnaHQgaGludGluZyBpbiBG cmVlVHlwZSBoYXMgdGhlIG5pY2UgcHJvcGVydHkgdGhhdCBpdCBvbmx5IHRyaWVzIHRvCisgICAg YWxpZ24gZWRnZXMgdmVydGljYWxseSwgc28gdGhlIHdpZHRoIG9mIGdseXBocyBkb2VzIG5vdCBj aGFuZ2UsIHByZXNlcnZpbmcKKyAgICBtb25vc3BhY2VuZXNzLgorCitjb21taXQgZDc4OWQxYzM1 MTdkOTk3ZjEyNzFhMzhiNDU5NGMyOTg5OGVhZjE5OQorQXV0aG9yOiBGYWJpYW4gVm9ndCA8ZnZv Z3RAc3VzZS5kZT4KK0RhdGU6ICAgTW9uIEp1biAxIDE3OjAzOjQ3IDIwMjYgKzAyMDAKKworICAg IERlZmluZSBkZWZhdWx0IGlzc3VlIHNlYXJjaCBwYXRoIGluIGEgc2luZ2xlIHBsYWNlCisKKyAg ICBJdCB3YXMgaGFyZGNvZGVkIGluIGZvdXIgZGlmZmVyZW50IHBsYWNlcywgb2Ygd2hpY2ggb25s eSBvbmUgaGFzIGFuIGFjdHVhbAorICAgIGVmZmVjdC4gQ29uc29saWRhdGUgaXQuCisKK2NvbW1p dCA0NGMwZGYxMmZmMjAyZWI4NDM5NGVhMGM4ZTA1OTg5NDU2M2ZlNTAxCitBdXRob3I6IEFkYW0g RHVza2V0dCA8YWRhbS5kdXNrZXR0QGFtYXJ1bGFzb2x1dGlvbnMuY29tPgorRGF0ZTogICBUaHUg TWF5IDIxIDE2OjI0OjIzIDIwMjYgKzAyMDAKKworICAgIGZpeCB6bGliIGNyb3NzLWNvbXBpbGlu ZyBlcnJvcnMKKworICAgIHpsaWIgY29tcHJlc3Npb24gd2FzIGludHJvZHVjZWQgaW4gdmVyc2lv biA5LjMuMy4gSG93ZXZlciwgd2hlbgorICAgIGNyb3NzLWNvbXBpbGluZyBrbXNjb24gZm9yIGFu IGFyY2hpdGVjdHVyZSBvdGhlciB0aGFuIHg4Nl82NCwgdGhlCisgICAgZ2VudW5pZm9udCBleGVj dXRhYmxlIHRyaWVzIHRvIHVzZSB0aGUgYnVpbGQtc3lzdGVtcyB6bGliIGluc3RlYWQKKyAgICBv ZiB0aGUgaG9zdHMgemxpYi4KKworICAgIFRoaXMgbGVhZHMgdG8gdGhlIGZvbGxvd2luZyBlcnJv ciBkdXJpbmcgY29tcGlsaW5nOgorICAgIGxpYnouc286IGVycm9yIGFkZGluZyBzeW1ib2xzOiBm aWxlIGluIHdyb25nIGZvcm1hdAorCisgICAgRml4IHRoaXMgYnkgYWRkaW5nIGEgbmV3IG5hdGl2 ZSB6bGliIGRlcGVuZGVuY3kgc3BlY2lmaWNhbGx5IGZvciB0aGUKKyAgICBnZW51bmlmb250IGV4 ZWN1dGFibGUuCistLS0KKyBSRUFETUUubWQgICAgICAgICAgICAgICAgICAgICAgIHwgICAyIC0K KyBkb2NzL21hbi9rbXNjb24uMS54bWwuaW4gICAgICAgIHwgIDI5ICstCisgZG9jcy9tYW4va21z Y29uLmNvbmYuNS54bWwuaW4gICB8ICAxNCAtCisgbWVzb24uYnVpbGQgICAgICAgICAgICAgICAg ICAgICB8ICAxMCArLQorIG1lc29uLm9wdGlvbnMgICAgICAgICAgICAgICAgICAgfCAgIDggKy0K KyBzY3JpcHRzL2V0Yy9rbXNjb24uY29uZi5leGFtcGxlIHwgICAxIC0KKyBzY3JpcHRzL2ttc2Nv bi5pbiAgICAgICAgICAgICAgIHwgIDYzIC0tLS0KKyBzcmMvZGJ1cy5jICAgICAgICAgICAgICAg ICAgICAgIHwgMzY4ICsrKysrKysrKysrKysrKysrKysKKyBzcmMve2ttc2Nvbl9kdW1teS5oID0+ IGRidXMuaH0gIHwgIDUzICstLQorIHNyYy9mb250L2ZvbnRfZnJlZXR5cGUuYyAgICAgICAgfCAg IDQgKy0KKyBzcmMvZm9udC9tZXNvbi5idWlsZCAgICAgICAgICAgIHwgICA0ICstCisgc3JjL2lu cHV0L2lucHV0LmMgICAgICAgICAgICAgICB8ICA2MCArKystCisgc3JjL2lucHV0L2lucHV0Lmgg ICAgICAgICAgICAgICB8ICAgNyArLQorIHNyYy9pbnB1dC9pbnB1dF9pbnRlcm5hbC5oICAgICAg fCAgMTAgKy0KKyBzcmMvaW5wdXQvaW5wdXRfdXhrYi5jICAgICAgICAgIHwgIDMzICstCisgc3Jj L2ttc2Nvbl9jb25mLmMgICAgICAgICAgICAgICB8ICAyNiArLQorIHNyYy9rbXNjb25fY29uZi5o ICAgICAgICAgICAgICAgfCAgIDQgLQorIHNyYy9rbXNjb25fZHVtbXkuYyAgICAgICAgICAgICAg fCAxNTQgLS0tLS0tLS0KKyBzcmMva21zY29uX2lzc3VlLmMgICAgICAgICAgICAgIHwgIDEwIC0K KyBzcmMva21zY29uX2lzc3VlLmggICAgICAgICAgICAgIHwgICA5ICsKKyBzcmMva21zY29uX21h aW4uYyAgICAgICAgICAgICAgIHwgIDMzICsrCisgc3JjL2ttc2Nvbl9zZWF0LmMgICAgICAgICAg ICAgICB8IDYwMiArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9rbXNjb25f c2VhdC5oICAgICAgICAgICAgICAgfCAgNDEgKy0tCisgc3JjL2ttc2Nvbl90ZXJtaW5hbC5jICAg ICAgICAgICB8ICA5OCArKy0tLS0KKyBzcmMva21zY29uX3Rlcm1pbmFsLmggICAgICAgICAgIHwg IDM0ICstCisgc3JjL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8ICAyNSArLQorIHNyYy9z aGwvZGxpc3QuaCAgICAgICAgICAgICAgICAgfCAgMTAgKworIHRlc3RzL3Rlc3RfaW5wdXQuYyAg ICAgICAgICAgICAgfCAgIDcgKy0KKyAyOCBmaWxlcyBjaGFuZ2VkLCA3NTEgaW5zZXJ0aW9ucygr KSwgOTY4IGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDc1NSBzY3JpcHRzL2ttc2Nvbi5p bgorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZGJ1cy5jCisgcmVuYW1lIHNyYy97a21zY29uX2R1 bW15LmggPT4gZGJ1cy5ofSAoNTAlKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMva21zY29uX2R1 bW15LmMKKworZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAoraW5kZXggODY3NTQx My4uM2JmNDkxMiAxMDA2NDQKKy0tLSBhL1JFQURNRS5tZAorKysrIGIvUkVBRE1FLm1kCitAQCAt ODIsOCArODIsNiBAQCBleHBsaWNpdGx5IGVuYWJsZSBpdCB2aWEgY29tbWFuZCBsaW5lOgorIHxg Zm9udF9mcmVldHlwZWB8IGBhdXRvYCB8IEZyZWV0eXBlMiBiYXNlZCBzY2FsYWJsZSBmb250IHJl bmRlcmVyLCBhbHNvIGhhbmRsZSBiaXRtYXAgZm9udHMgfAorIHxgZm9udF9wYW5nb2B8IGBhdXRv YCB8IFBhbmdvIGJhc2VkIHNjYWxhYmxlIGZvbnQgcmVuZGVyZXIgfAorIHxgcmVuZGVyZXJfZ2x0 ZXhgfCBgYXV0b2AgfCBPcGVuR0xFU3YyIGFjY2VsZXJhdGVkIHJlbmRlcmVyIHwKKy18YHNlc3Np b25fZHVtbXlgfCBgYXV0b2AgfCBEdW1teSBmYWxsYmFjayBzZXNzaW9uIHwKKy18YHNlc3Npb25f dGVybWluYWxgfCBgYXV0b2AgfCBUZXJtaW5hbC1lbXVsYXRvciBzZXNzaW9ucyB8CisgfGBkb2Nz YHxgYXV0b2B8IEJ1aWxkIG1hbnBhZ2VzIGFuZCBkb2N1bWVudGF0aW9uIHwKKyAKKyAKK2RpZmYg LS1naXQgYS9kb2NzL21hbi9rbXNjb24uMS54bWwuaW4gYi9kb2NzL21hbi9rbXNjb24uMS54bWwu aW4KK2luZGV4IDA1MzgxODYuLjI1Y2YyOWEgMTAwNjQ0CistLS0gYS9kb2NzL21hbi9rbXNjb24u MS54bWwuaW4KKysrKyBiL2RvY3MvbWFuL2ttc2Nvbi4xLnhtbC5pbgorQEAgLTE4NywxNCArMTg3 LDYgQEAKKyAgICAgICAgICAgICAgICAgc2Vzc2lvbnMgdmlhIGtleWJvYXJkIGlucHV0LiAoZGVm YXVsdDogb2ZmKTwvcGFyYT4KKyAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC92YXJsaXN0 ZW50cnk+CistCistICAgICAgPHZhcmxpc3RlbnRyeT4KKy0gICAgICAgIDx0ZXJtPjxvcHRpb24+ LS10ZXJtaW5hbC1zZXNzaW9uPC9vcHRpb24+PC90ZXJtPgorLSAgICAgICAgPGxpc3RpdGVtPgor LSAgICAgICAgICA8cGFyYT5TdGFydCBhIHRlcm1pbmFsIHNlc3Npb24gYWZ0ZXIgc2V0dXAgaXMg ZG9uZS4KKy0gICAgICAgICAgICAgICAgKGRlZmF1bHQ6IG9uKTwvcGFyYT4KKy0gICAgICAgIDwv bGlzdGl0ZW0+CistICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgIDwvdmFyaWFibGVsaXN0Pgor IAorICAgICA8cGFyYT5UZXJtaW5hbCBPcHRpb25zOjwvcGFyYT4KK0BAIC00NjMsMTQgKzQ1NSw2 IEBACisgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlzdGVudHJ5PgorIAorLSAg ICAgIDx2YXJsaXN0ZW50cnk+CistICAgICAgICA8dGVybT48b3B0aW9uPi0tZ3JhYi1zZXNzaW9u LWR1bW15IHtncmFifTwvb3B0aW9uPjwvdGVybT4KKy0gICAgICAgIDxsaXN0aXRlbT4KKy0gICAg ICAgICAgPHBhcmE+U3dpdGNoIHRvIGEgZHVtbXkgc2Vzc2lvbiAoYmxhbmsgc2NyZWVuKS4KKy0g ICAgICAgICAgICAgICAgKGRlZmF1bHQ6ICZsdDtDdHJsJmd0OyZsdDtMb2dvJmd0O0VzY2FwZSk8 L3BhcmE+CistICAgICAgICA8L2xpc3RpdGVtPgorLSAgICAgIDwvdmFybGlzdGVudHJ5PgorLQor ICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICA8dGVybT48b3B0aW9uPi0tZ3JhYi1zZXNz aW9uLWNsb3NlIHtncmFifTwvb3B0aW9uPjwvdGVybT4KKyAgICAgICAgIDxsaXN0aXRlbT4KK0BA IC04ODYsMTYgKzg3MCwxMSBAQAorICAgPHJlZnNlY3QxPgorICAgICA8dGl0bGU+U2Vzc2lvbnM8 L3RpdGxlPgorICAgICA8cGFyYT5JZiBLTVNDT04gaXMgYWN0aXZlIG9uIGEgc2VhdCwgdGhlIGlu dGVybmFsIHNlc3Npb24tbWFuYWdlciBpcyB3b2tlbgorLSAgICAgICAgICB1cC4gQXQgbW9zdCB0 aW1lcywgb25seSB0aGUgdGVybWluYWwtc2Vzc2lvbiBpcyBhY3RpdmUsIGJ1dCBLTVNDT04gY2Fu CistICAgICAgICAgIGFsc28gc3VwcG9ydCBhbnkgb3RoZXIgc2Vzc2lvbiB0eXBlLiBZb3UgY2Fu IHN3aXRjaCBiZXR3ZWVuIHNlc3Npb25zCistICAgICAgICAgIHdpdGgga2V5Ym9hcmQtc2hvcnRj dXRzIGFuZCB5b3UgY2FuIGNyZWF0ZS9kZXN0cm95IHNlc3Npb25zIGR1cmluZworLSAgICAgICAg ICBydW50aW1lLjwvcGFyYT4KKy0KKy0gICAgPHBhcmE+RHVtbXkgc2Vzc2lvbnMgc2ltcGx5IHNo b3cgYSBibGFjayBzY3JlZW4gYW5kIGFyZSB1c2VkIGlmIG5vIG90aGVyCistICAgICAgICAgIHNl c3Npb24gaXMgYXZhaWxhYmxlLiBPdGhlcndpc2UsIGR1bW15IHNlc3Npb25zIGFyZSBoaWRkZW4g ZnJvbSB0aGUKKy0gICAgICAgICAgdXNlciBzbyB0aGV5IGNhbm5vdCBzd2l0Y2ggdG8gaXQuPC9w YXJhPgorKyAgICAgICAgICB1cC4gQXQgbW9zdCB0aW1lcywgb25seSB0aGUgdGVybWluYWwtc2Vz c2lvbiBpcyBhY3RpdmUuIFlvdSBjYW4gc3dpdGNoCisrICAgICAgICAgIGJldHdlZW4gc2Vzc2lv bnMgd2l0aCBrZXlib2FyZC1zaG9ydGN1dHMgYW5kIHlvdSBjYW4gY3JlYXRlL2Rlc3Ryb3kKKysg ICAgICAgICAgdGVybWluYWwgc2Vzc2lvbnMgZHVyaW5nIHJ1bnRpbWUuPC9wYXJhPgorIAorLSAg ICA8cGFyYT5UZXJtaW5hbCBzZXNzaW9ucyBwcm92aWRlIGEgdGVybWluYWwgZW11bGF0b3IuIFRo ZXkgYXJlIHRoZSBtYWluCisrICAgIDxwYXJhPlRlcm1pbmFsIHNlc3Npb25zIHByb3ZpZGUgYSB0 ZXJtaW5hbCBlbXVsYXRvci4gVGhleSBhcmUgdGhlIG9ubHkKKyAgICAgICAgICAgc2Vzc2lvbiB0 eXBlIGFuZCBwcm92aWRlIGFsbCB0aGUgdGVybWluYWwtZW11bGF0aW9uCisgICAgICAgICAgIGZ1 bmN0aW9uYWxpdHkuPC9wYXJhPgorICAgPC9yZWZzZWN0MT4KK2RpZmYgLS1naXQgYS9kb2NzL21h bi9rbXNjb24uY29uZi41LnhtbC5pbiBiL2RvY3MvbWFuL2ttc2Nvbi5jb25mLjUueG1sLmluCitp bmRleCBkY2EwNTZkLi44YWY0NTgwIDEwMDY0NAorLS0tIGEvZG9jcy9tYW4va21zY29uLmNvbmYu NS54bWwuaW4KKysrKyBiL2RvY3MvbWFuL2ttc2Nvbi5jb25mLjUueG1sLmluCitAQCAtMTYxLDEz ICsxNjEsNiBAQCBmb250LW5hbWU9VWJ1bnR1IE1vbm8KKyAgICAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgICAgPC92YXJsaXN0ZW50cnk+CisgCistICAgICAgPHZhcmxpc3RlbnRyeT4KKy0gICAgICAg IDx0ZXJtPjxvcHRpb24+dGVybWluYWwtc2Vzc2lvbjwvb3B0aW9uPjwvdGVybT4KKy0gICAgICAg IDxsaXN0aXRlbT4KKy0gICAgICAgICAgPHBhcmE+RW5hYmxlIHRlcm1pbmFsIHNlc3Npb24uIChk ZWZhdWx0OiBvbik8L3BhcmE+CistICAgICAgICA8L2xpc3RpdGVtPgorLSAgICAgIDwvdmFybGlz dGVudHJ5PgorLQorICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICA8dGVybT48b3B0aW9u PmxvZ2luPC9vcHRpb24+PC90ZXJtPgorICAgICAgICAgPGxpc3RpdGVtPgorQEAgLTM2OCwxMyAr MzYxLDYgQEAgZm9udC1uYW1lPVVidW50dSBNb25vCisgICAgICAgICA8L2xpc3RpdGVtPgorICAg ICAgIDwvdmFybGlzdGVudHJ5PgorIAorLSAgICAgIDx2YXJsaXN0ZW50cnk+CistICAgICAgICA8 dGVybT48b3B0aW9uPmdyYWItc2Vzc2lvbi1kdW1teTwvb3B0aW9uPjwvdGVybT4KKy0gICAgICAg IDxsaXN0aXRlbT4KKy0gICAgICAgICAgPHBhcmE+U3dpdGNoIHRvIGR1bW15IHNlc3Npb24uIChk ZWZhdWx0OiAmbHQ7Q3RybCZndDsmbHQ7TG9nbyZndDtFc2NhcGUpPC9wYXJhPgorLSAgICAgICAg PC9saXN0aXRlbT4KKy0gICAgICA8L3Zhcmxpc3RlbnRyeT4KKy0KKyAgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgICAgPHRlcm0+PG9wdGlvbj5ncmFiLXNlc3Npb24tY2xvc2U8L29wdGlvbj48 L3Rlcm0+CisgICAgICAgICA8bGlzdGl0ZW0+CitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9t ZXNvbi5idWlsZAoraW5kZXggZGU4OWQ3Mi4uMWFhNzJmMiAxMDA2NDQKKy0tLSBhL21lc29uLmJ1 aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTUzLDYgKzUzLDcgQEAgbGlidWRldl9kZXBzID0g ZGVwZW5kZW5jeSgnbGlidWRldicsIHZlcnNpb246ICc+PTE3MicpCisgZGxfZGVwcyA9IGRlcGVu ZGVuY3koJ2RsJykKKyB0aHJlYWRzX2RlcHMgPSBkZXBlbmRlbmN5KCd0aHJlYWRzJykKKyB6bGli X2RlcHMgPSBkZXBlbmRlbmN5KCd6bGliJykKKyt6bGliX2RlcHNfbmF0aXZlID0gZGVwZW5kZW5j eSgnemxpYicsIG5hdGl2ZTogdHJ1ZSkKKyAKKyBweXRob24gPSBmaW5kX3Byb2dyYW0oJ3B5dGhv bjMnKQorIAorQEAgLTc1LDYgKzc2LDcgQEAgZ2xlc3YyX2RlcHMgPSBkZXBlbmRlbmN5KCdnbGVz djInLCBkaXNhYmxlcjogdHJ1ZSwgcmVxdWlyZWQ6IHJlcXVpcmVfZ2xlc3YyKQorIHBhbmdvX2Rl cHMgPSBkZXBlbmRlbmN5KCdwYW5nb2Z0MicsIGRpc2FibGVyOiB0cnVlLCByZXF1aXJlZDogZ2V0 X29wdGlvbignZm9udF9wYW5nbycpKQorIGZyZWV0eXBlX2RlcHMgPSBkZXBlbmRlbmN5KCdmcmVl dHlwZTInLCBkaXNhYmxlcjogdHJ1ZSwgcmVxdWlyZWQ6IGdldF9vcHRpb24oJ2ZvbnRfZnJlZXR5 cGUnKSkKKyBmb250Y29uZmlnX2RlcHMgPSBkZXBlbmRlbmN5KCdmb250Y29uZmlnJywgZGlzYWJs ZXI6IHRydWUsIHJlcXVpcmVkOiBnZXRfb3B0aW9uKCdmb250X2ZyZWV0eXBlJykpCisrZGJ1c19k ZXBzID0gZGVwZW5kZW5jeSgnZGJ1cy0xJywgZGlzYWJsZXI6IHRydWUsIHJlcXVpcmVkOiBnZXRf b3B0aW9uKCdkYnVzJykpCisgeHNsdHByb2MgPSBmaW5kX3Byb2dyYW0oJ3hzbHRwcm9jJywgbmF0 aXZlOiB0cnVlLCBkaXNhYmxlcjogdHJ1ZSwgcmVxdWlyZWQ6IGdldF9vcHRpb24oJ2RvY3MnKSkK KyBjaGVja19kZXBzID0gZGVwZW5kZW5jeSgnY2hlY2snLCBkaXNhYmxlcjogdHJ1ZSwgcmVxdWly ZWQ6IGdldF9vcHRpb24oJ3Rlc3RzJykpCisgdGljID0gZmluZF9wcm9ncmFtKCd0aWMnLCByZXF1 aXJlZDogZmFsc2UpCitAQCAtODksNyArOTEsNiBAQCBzZWN0aW9ucyA9IHsKKyAgICd2aWRlbyc6 ICdWaWRlbyBCYWNrZW5kcycsCisgICAnZm9udCc6ICdGb250IEJhY2tlbmRzJywKKyAgICdyZW5k ZXJlcic6ICdSZW5kZXJlcnMnLAorLSAgJ3Nlc3Npb24nOiAnU2Vzc2lvbiBUeXBlcycsCisgfQor IGNvbmZpZyA9IGNvbmZpZ3VyYXRpb25fZGF0YSgpCisgIyBOb3RlOiBrZWVwIHRoaXMgaW4gc3lu YyB3aXRoIHRoZSBkZXBlbmRlbmNpZXMgYWJvdmUKK0BAIC0xMDIsOCArMTAzLDcgQEAgZm9yZWFj aCBuYW1lLCByZXFzIDogeworICAgJ2ZvbnRfdW5pZm9udCc6IFtdLAorICAgJ2ZvbnRfZnJlZXR5 cGUnOiBbZnJlZXR5cGVfZGVwcywgZm9udGNvbmZpZ19kZXBzXSwKKyAgICdmb250X3BhbmdvJzog W3BhbmdvX2RlcHNdLAorLSAgJ3Nlc3Npb25fZHVtbXknOiBbXSwKKy0gICdzZXNzaW9uX3Rlcm1p bmFsJzogW10sCisrICAnZGJ1cyc6IFtkYnVzX2RlcHNdLAorIH0KKyAgIGZvdW5kID0gdHJ1ZQor ICAgZm9yZWFjaCByZXEgOiByZXFzCitAQCAtMTk1LDEwICsxOTUsNiBAQCBlbHNlCisgICBkaXJz X2luZm8uc2V0KCdQQU1fQ0ZHJywgJycpCisgZW5kaWYKKyBmb3JlYWNoIGZpbGVuYW1lLCBrd2Fy Z3MgOiB7CistICAnc2NyaXB0cy9rbXNjb24uaW4nOiB7CistICAgICdpbnN0YWxsX2Rpcic6IGJp bmRpciwKKy0gICAgJ2luc3RhbGxfbW9kZSc6ICdyd3hyLXhyLXgnLAorLSAgfSwKKyAgICdzY3Jp cHRzL2ttc2Nvbi1sYXVuY2gtZ3VpLnNoJzogeworICAgICAnaW5zdGFsbF9kaXInOiBiaW5kaXIs CisgICAgICdpbnN0YWxsX21vZGUnOiAncnd4ci14ci14JywKK2RpZmYgLS1naXQgYS9tZXNvbi5v cHRpb25zIGIvbWVzb24ub3B0aW9ucworaW5kZXggNWNhZmE2MC4uYWZhNWIzMiAxMDA2NDQKKy0t LSBhL21lc29uLm9wdGlvbnMKKysrKyBiL21lc29uLm9wdGlvbnMKK0BAIC0yOSw4ICsyOSw2IEBA IG9wdGlvbignZm9udF9mcmVldHlwZScsIHR5cGU6ICdmZWF0dXJlJywgdmFsdWU6ICdhdXRvJywK KyBvcHRpb24oJ2ZvbnRfcGFuZ28nLCB0eXBlOiAnZmVhdHVyZScsIHZhbHVlOiAnYXV0bycsCisg ICBkZXNjcmlwdGlvbjogJ3BhbmdvIGZvbnQgYmFja2VuZCcpCisgCistIyBrbXNjb24gc2Vzc2lv bnMKKy1vcHRpb24oJ3Nlc3Npb25fZHVtbXknLCB0eXBlOiAnZmVhdHVyZScsIHZhbHVlOiAnYXV0 bycsCistICBkZXNjcmlwdGlvbjogJ2R1bW15IHNlc3Npb24nKQorLW9wdGlvbignc2Vzc2lvbl90 ZXJtaW5hbCcsIHR5cGU6ICdmZWF0dXJlJywgdmFsdWU6ICdhdXRvJywKKy0gIGRlc2NyaXB0aW9u OiAndGVybWluYWwgc2Vzc2lvbicpCisrIyBkYnVzIGludGVncmF0aW9uCisrb3B0aW9uKCdkYnVz JywgdHlwZTogJ2ZlYXR1cmUnLCB2YWx1ZTogJ2F1dG8nLAorKyAgZGVzY3JpcHRpb246ICdkYnVz IGludGVncmF0aW9uJykKK2RpZmYgLS1naXQgYS9zY3JpcHRzL2V0Yy9rbXNjb24uY29uZi5leGFt cGxlIGIvc2NyaXB0cy9ldGMva21zY29uLmNvbmYuZXhhbXBsZQoraW5kZXggY2EyMjMyZS4uYmU0 NWE0YSAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvZXRjL2ttc2Nvbi5jb25mLmV4YW1wbGUKKysrKyBi L3NjcmlwdHMvZXRjL2ttc2Nvbi5jb25mLmV4YW1wbGUKK0BAIC02Niw3ICs2Niw2IEBACisgI2dy YWItem9vbS1vdXQ9PEN0cmw+TWludXMKKyAjZ3JhYi1zZXNzaW9uLW5leHQ9PEN0cmw+PExvZ28+ UmlnaHQKKyAjZ3JhYi1zZXNzaW9uLXByZXY9PEN0cmw+PExvZ28+TGVmdAorLSNncmFiLXNlc3Np b24tZHVtbXk9PEN0cmw+PExvZ28+RXNjYXBlCisgI2dyYWItc2Vzc2lvbi1jbG9zZT08Q3RybD48 TG9nbz5CYWNrU3BhY2UKKyAjZ3JhYi10ZXJtaW5hbC1uZXc9PEN0cmw+PExvZ28+UmV0dXJuCisg I2dyYWItcm90YXRlLWN3PTxMb2dvPlBsdXMKK2RpZmYgLS1naXQgYS9zY3JpcHRzL2ttc2Nvbi5p biBiL3NjcmlwdHMva21zY29uLmluCitkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKK2luZGV4IDY1 NDUzOTkuLjAwMDAwMDAKKy0tLSBhL3NjcmlwdHMva21zY29uLmluCisrKysgL2Rldi9udWxsCitA QCAtMSw2MyArMCwwIEBACistIyEvYmluL3NoCistIworLSMgQ29weXJpZ2h0IChjKSAyMDE4IEFl dGYgPGFldGZAdW5saW1pdGVkY29kZXdvcmtzLnh5ej4KKy0jIENvcHlyaWdodCAoYykgMjAxOCBG YWJpYW4gVm9ndCA8ZnZvZ3RAc3VzZS5jb20+CistIworLSMgUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQor LSMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy0jIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKy0jIHRvIHVz ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg YW5kL29yIHNlbGwKKy0jIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy c29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLSMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy0jCistIyBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBp biBhbGwKKy0jIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu CistIworLSMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy0jIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLSMgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF TlQgU0hBTEwgVEhFCistIyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCistIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAor LSMgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKy0jIFNPRlRXQVJFLgorLQorLSMgY29uZmlndXJhdGlv biBwYXRoCistaGVscGVyZGlyPUBsaWJleGVjZGlyQAorLQorLSMgR2V0IGEgcHJvcGVydHkgZnJv bSBvcmcuZnJlZWRlc2t0b3AubG9jYWxlMQorLXF1ZXJ5TG9jYWxlZGJ1cygpIHsKKy0gICAgZGJ1 cy1zZW5kIC0tc3lzdGVtIC0tcHJpbnQtcmVwbHk9bGl0ZXJhbCAtLWRlc3Q9b3JnLmZyZWVkZXNr dG9wLmxvY2FsZTEgL29yZy9mcmVlZGVza3RvcC9sb2NhbGUxIG9yZy5mcmVlZGVza3RvcC5EQnVz LlByb3BlcnRpZXMuR2V0ICJzdHJpbmc6b3JnLmZyZWVkZXNrdG9wLmxvY2FsZTEiICJzdHJpbmc6 WDExJDEiIDI+L2Rldi9udWxsIHwgYXdrICd7cHJpbnQgJDJ9JworLX0KKy0KKy1xdWVyeUxvY2Fs ZWN0bCgpIHsKKy0gICAgbG9jYWxlY3RsIHN0YXR1cyB8IGF3ayAiL1gxMSAkMS8ge3ByaW50IFwk M30iCistfQorLQorLSMgUXVlcnkgYW5kIHNldHVwIHN5c3RlbSBsb2NhbGUgc2V0dGluZ3MgYmVm b3JlIHN0YXJ0IGttc2NvbgorLXNldHVwTG9jYWxlKCkgeworLSAgICAjIERvbid0IG92ZXJyaWRl IGV4aXN0aW5nIHZhbHVlcy4gQWxzbyB0aGVyZSBpcyBubyBwb2ludCBpbiBzZXR0aW5nIG9ubHkg c29tZSBvZiB0aGVtCistICAgICMgYXMgdGhlbiB0aGV5IHdvdWxkIG5vdCBtYXRjaCBhbnltb3Jl LgorLSAgICBpZiB0ZXN0IC1uICIke1hLQl9ERUZBVUxUX01PREVMfSIgLW8gLW4gIiR7WEtCX0RF RkFVTFRfTEFZT1VUfSIgLW8gLW4gIiR7WEtCX0RFRkFVTFRfVkFSSUFOVH0iIC1vIC1uICIke1hL Ql9ERUZBVUxUX09QVElPTlN9IjsgdGhlbgorLSAgICAgICAgcmV0dXJuCistICAgIGZpCistCist ICAgIGlmIGNvbW1hbmQgLXYgZGJ1cy1zZW5kID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4K Ky0gICAgICAgIHF1ZXJ5Y21kPSJxdWVyeUxvY2FsZWRidXMiCistICAgIGVsaWYgY29tbWFuZCAt diBsb2NhbGVjdGwgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorLSAgICAgICAgcXVlcnlj bWQ9InF1ZXJ5TG9jYWxlY3RsIgorLSAgICBlbHNlCistICAgICAgICByZXR1cm4KKy0gICAgZmkK Ky0KKy0gICAgWDExTU9ERUw9IiQoJHtxdWVyeWNtZH0gTW9kZWwpIgorLSAgICBYMTFMQVlPVVQ9 IiQoJHtxdWVyeWNtZH0gTGF5b3V0KSIKKy0gICAgWDExVkFSSUFOVD0iJCgke3F1ZXJ5Y21kfSBW YXJpYW50KSIKKy0gICAgWDExT1BUSU9OUz0iJCgke3F1ZXJ5Y21kfSBPcHRpb25zKSIKKy0gICAg WyAtbiAiJHtYMTFNT0RFTH0iIF0gJiYgZXhwb3J0IFhLQl9ERUZBVUxUX01PREVMPSIke1gxMU1P REVMfSIKKy0gICAgWyAtbiAiJHtYMTFMQVlPVVR9IiBdICYmIGV4cG9ydCBYS0JfREVGQVVMVF9M QVlPVVQ9IiR7WDExTEFZT1VUfSIKKy0gICAgWyAtbiAiJHtYMTFWQVJJQU5UfSIgXSAmJiBleHBv cnQgWEtCX0RFRkFVTFRfVkFSSUFOVD0iJHtYMTFWQVJJQU5UfSIKKy0gICAgWyAtbiAiJHtYMTFP UFRJT05TfSIgXSAmJiBleHBvcnQgWEtCX0RFRkFVTFRfT1BUSU9OUz0iJHtYMTFPUFRJT05TfSIK Ky19CistCistc2V0dXBMb2NhbGUKKy1leGVjICR7aGVscGVyZGlyfS9rbXNjb24gIiRAIgorZGlm ZiAtLWdpdCBhL3NyYy9kYnVzLmMgYi9zcmMvZGJ1cy5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMC4uODRjNDY3ZAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2RidXMuYwor QEAgLTAsMCArMSwzNjggQEAKKysvKgorKyAqIGRidXMgLSBELUJ1cyBzdXBwb3J0CisrICoKKysg KiBDb3B5cmlnaHQgKGMpIDIwMjYgUmVkIEhhdC4KKysgKiBBdXRob3I6IEpvY2VseW4gRmFsZW1w ZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KKysgKgorKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworKyAqIGEgY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMKKysg KiAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcKKysgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisrICogZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisrICogcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvCisrICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorKyAqCisrICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUg aW5jbHVkZWQKKysgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZSBTb2Z0d2FyZS4KKysgKgorKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCisrICogT1IgSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorKyAqIE1FUkNIQU5U QUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4KKysgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWQorKyAqIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCisrICogVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKysg KiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K KysgKi8KKysKKysjaW5jbHVkZSA8ZGJ1cy9kYnVzLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+Cisr I2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSAi ZGJ1cy5oIgorKyNpbmNsdWRlICJzaGwvZWxvb3AuaCIKKysjaW5jbHVkZSAic2hsL2xvZy5oIgor KworKyNkZWZpbmUgTE9HX1NVQlNZU1RFTSAiZGJ1cyIKKysKKytzdHJ1Y3Qgcm1sdm8geworKwlj b25zdCBjaGFyICptb2RlbDsKKysJY29uc3QgY2hhciAqbGF5b3V0OworKwljb25zdCBjaGFyICp2 YXJpYW50OworKwljb25zdCBjaGFyICpvcHRpb25zOworK307CisrCisrc3RydWN0IGttc2Nvbl9k YnVzIHsKKysJREJ1c0Nvbm5lY3Rpb24gKmNvbm47CisrCXN0cnVjdCBldl9lbG9vcCAqZWxvb3A7 CisrCXN0cnVjdCBldl9mZCAqd2F0Y2hfZmQ7CisrCWRidXNfdXBkYXRlX3hrYl9sYXlvdXRfY2Ig Y2I7CisrCXZvaWQgKmRhdGE7CisrfTsKKysKKytzdGF0aWMgdm9pZCBzZXRfZW52X2Zyb21fbG9j YWxlMV9wcm9wZXJ0aWVzKERCdXNDb25uZWN0aW9uICpjb25uLCBjb25zdCBjaGFyICpwcm9wZXJ0 eV9uYW1lLAorKwkJCQkJICAgIGNvbnN0IGNoYXIgKmVudl9uYW1lKQorK3sKKysJREJ1c0Vycm9y IGVycm9yOworKwlEQnVzTWVzc2FnZSAqbXNnOworKwlEQnVzTWVzc2FnZSAqcmVwbHk7CisrCURC dXNNZXNzYWdlSXRlciBhcmdzLCB2YXJpYW50X2l0ZXI7CisrCWNvbnN0IGNoYXIgKmludGVyZmFj ZV9uYW1lID0gIm9yZy5mcmVlZGVza3RvcC5sb2NhbGUxIjsKKysJY2hhciAqdmFsdWUgPSBOVUxM OworKworKwlkYnVzX2Vycm9yX2luaXQoJmVycm9yKTsKKysKKysJbXNnID0gZGJ1c19tZXNzYWdl X25ld19tZXRob2RfY2FsbCgib3JnLmZyZWVkZXNrdG9wLmxvY2FsZTEiLCAiL29yZy9mcmVlZGVz a3RvcC9sb2NhbGUxIiwKKysJCQkJCSAgICJvcmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0aWVz IiwgIkdldCIpOworKwlpZiAoIW1zZykKKysJCXJldHVybjsKKysKKysJZGJ1c19tZXNzYWdlX2l0 ZXJfaW5pdF9hcHBlbmQobXNnLCAmYXJncyk7CisrCWlmICghZGJ1c19tZXNzYWdlX2l0ZXJfYXBw ZW5kX2Jhc2ljKCZhcmdzLCBEQlVTX1RZUEVfU1RSSU5HLCAmaW50ZXJmYWNlX25hbWUpIHx8Cisr CSAgICAhZGJ1c19tZXNzYWdlX2l0ZXJfYXBwZW5kX2Jhc2ljKCZhcmdzLCBEQlVTX1RZUEVfU1RS SU5HLCAmcHJvcGVydHlfbmFtZSkpIHsKKysJCWRidXNfbWVzc2FnZV91bnJlZihtc2cpOworKwkJ cmV0dXJuOworKwl9CisrCisrCXJlcGx5ID0gZGJ1c19jb25uZWN0aW9uX3NlbmRfd2l0aF9yZXBs eV9hbmRfYmxvY2soY29ubiwgbXNnLCAyMDAwLCAmZXJyb3IpOworKwlkYnVzX21lc3NhZ2VfdW5y ZWYobXNnKTsKKysKKysJaWYgKGRidXNfZXJyb3JfaGFzX25hbWUoJmVycm9yLCBEQlVTX0VSUk9S X1VOS05PV05fSU5URVJGQUNFKSB8fAorKwkgICAgZGJ1c19lcnJvcl9oYXNfbmFtZSgmZXJyb3Is IERCVVNfRVJST1JfVU5LTk9XTl9QUk9QRVJUWSkpIHsKKysJCS8qIFRoaXMgaXMgbm9ybWFsIGlm IHRoZSBpbnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc3lzdGVtICovCisrCQlkYnVz X2Vycm9yX2ZyZWUoJmVycm9yKTsKKysJCXJldHVybjsKKysJfSBlbHNlIGlmIChkYnVzX2Vycm9y X2lzX3NldCgmZXJyb3IpKSB7CisrCQlsb2dfd2FybmluZygiZGJ1cyBlcnJvcjogJXMgLyAlcyIs IGVycm9yLm5hbWUsIGVycm9yLm1lc3NhZ2UpOworKwkJZGJ1c19lcnJvcl9mcmVlKCZlcnJvcik7 CisrCQlyZXR1cm47CisrCX0gZWxzZSBpZiAoIXJlcGx5KSB7CisrCQlsb2dfd2FybmluZygibm8g cmVwbHkgZnJvbSBkYnVzIik7CisrCQlyZXR1cm47CisrCX0KKysKKysJaWYgKCFkYnVzX21lc3Nh Z2VfaXRlcl9pbml0KHJlcGx5LCAmYXJncykpIHsKKysJCWxvZ19kZWJ1ZygiUmVwbHkgbWVzc2Fn ZSBoYXMgbm8gYXJndW1lbnRzLlxuIik7CisrCX0gZWxzZSBpZiAoZGJ1c19tZXNzYWdlX2l0ZXJf Z2V0X2FyZ190eXBlKCZhcmdzKSAhPSBEQlVTX1RZUEVfVkFSSUFOVCkgeworKwkJbG9nX2RlYnVn KCJSZXBseSBhcmd1bWVudCBpcyBub3QgYSB2YXJpYW50LlxuIik7CisrCX0gZWxzZSB7CisrCQlk YnVzX21lc3NhZ2VfaXRlcl9yZWN1cnNlKCZhcmdzLCAmdmFyaWFudF9pdGVyKTsKKysKKysJCWlm IChkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYXJnX3R5cGUoJnZhcmlhbnRfaXRlcikgPT0gREJVU19U WVBFX1NUUklORykgeworKwkJCWRidXNfbWVzc2FnZV9pdGVyX2dldF9iYXNpYygmdmFyaWFudF9p dGVyLCAmdmFsdWUpOworKwkJCWlmIChzdHJsZW4odmFsdWUpID4gMCkgeworKwkJCQlzZXRlbnYo ZW52X25hbWUsIHZhbHVlLCAwKTsKKysJCQkJbG9nX2RlYnVnKCJTZXQgJXMgdG8gJXNcbiIsIGVu dl9uYW1lLCB2YWx1ZSk7CisrCQkJfQorKwkJfSBlbHNlIHsKKysJCQlsb2dfZGVidWcoIlVuZXhw ZWN0ZWQgaW5uZXIgZGF0YSB0eXBlIGluIHZhcmlhbnQuXG4iKTsKKysJCX0KKysJfQorKworKwlk YnVzX21lc3NhZ2VfdW5yZWYocmVwbHkpOworKwlyZXR1cm47CisrfQorKworK3N0YXRpYyBib29s IGlzX3hrYl9lbnZfc2V0KHZvaWQpCisreworKwlyZXR1cm4gZ2V0ZW52KCJYS0JfREVGQVVMVF9N T0RFTCIpIHx8IGdldGVudigiWEtCX0RFRkFVTFRfTEFZT1VUIikgfHwKKysJICAgICAgIGdldGVu digiWEtCX0RFRkFVTFRfVkFSSUFOVCIpIHx8IGdldGVudigiWEtCX0RFRkFVTFRfT1BUSU9OUyIp OworK30KKysKKysvKiBUaGlzIGlzIGNhbGxlZCBvbmNlIGF0IHN0YXJ0dXAgdG8gc2V0IHRoZSBY S0IgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZyb20gdGhlIGxvY2FsZTEgcHJvcGVydGllcy4KKysg Ki8KKyt2b2lkIGttc2Nvbl9kYnVzX3NldF94a2JfZW52X2Zyb21fbG9jYWxlMShzdHJ1Y3Qga21z Y29uX2RidXMgKmRidXMpCisreworKwlEQnVzRXJyb3IgZXJyb3I7CisrCisrCWlmIChpc194a2Jf ZW52X3NldCgpKQorKwkJcmV0dXJuOworKworKwlkYnVzX2Vycm9yX2luaXQoJmVycm9yKTsKKysK KysJc2V0X2Vudl9mcm9tX2xvY2FsZTFfcHJvcGVydGllcyhkYnVzLT5jb25uLCAiWDExTW9kZWwi LCAiWEtCX0RFRkFVTFRfTU9ERUwiKTsKKysJc2V0X2Vudl9mcm9tX2xvY2FsZTFfcHJvcGVydGll cyhkYnVzLT5jb25uLCAiWDExTGF5b3V0IiwgIlhLQl9ERUZBVUxUX0xBWU9VVCIpOworKwlzZXRf ZW52X2Zyb21fbG9jYWxlMV9wcm9wZXJ0aWVzKGRidXMtPmNvbm4sICJYMTFWYXJpYW50IiwgIlhL Ql9ERUZBVUxUX1ZBUklBTlQiKTsKKysJc2V0X2Vudl9mcm9tX2xvY2FsZTFfcHJvcGVydGllcyhk YnVzLT5jb25uLCAiWDExT3B0aW9ucyIsICJYS0JfREVGQVVMVF9PUFRJT05TIik7CisrfQorKwor K3N0cnVjdCBrbXNjb25fZGJ1cyAqa21zY29uX2RidXNfbmV3KHN0cnVjdCBldl9lbG9vcCAqZWxv b3ApCisreworKwlzdHJ1Y3Qga21zY29uX2RidXMgKmRidXM7CisrCURCdXNFcnJvciBlcnJvcjsK KysKKysJZGJ1cyA9IG1hbGxvYyhzaXplb2YoKmRidXMpKTsKKysJaWYgKCFkYnVzKQorKwkJcmV0 dXJuIE5VTEw7CisrCW1lbXNldChkYnVzLCAwLCBzaXplb2YoKmRidXMpKTsKKysKKysJZGJ1cy0+ ZWxvb3AgPSBlbG9vcDsKKysKKysJZGJ1c19lcnJvcl9pbml0KCZlcnJvcik7CisrCWRidXMtPmNv bm4gPSBkYnVzX2J1c19nZXQoREJVU19CVVNfU1lTVEVNLCAmZXJyb3IpOworKwlpZiAoZGJ1c19l cnJvcl9pc19zZXQoJmVycm9yKSkgeworKwkJbG9nX2RlYnVnKCJDb25uZWN0aW9uIEVycm9yOiAl c1xuIiwgZXJyb3IubWVzc2FnZSk7CisrCQlkYnVzX2Vycm9yX2ZyZWUoJmVycm9yKTsKKysJCXJl dHVybiBOVUxMOworKwl9CisrCXJldHVybiBkYnVzOworK30KKysKKyt2b2lkIGttc2Nvbl9kYnVz X2ZyZWUoc3RydWN0IGttc2Nvbl9kYnVzICpkYnVzKQorK3sKKysJaWYgKCFkYnVzKQorKwkJcmV0 dXJuOworKwlkYnVzX2Nvbm5lY3Rpb25fdW5yZWYoZGJ1cy0+Y29ubik7CisrCWZyZWUoZGJ1cyk7 CisrfQorKworK3N0YXRpYyB2b2lkIHNldF9ybWx2b19wcm9wZXJ0eShzdHJ1Y3Qgcm1sdm8gKnJt bHZvLCBjb25zdCBjaGFyICpwcm9wZXJ0eV9uYW1lLAorKwkJCSAgICAgICBjb25zdCBjaGFyICpw cm9wZXJ0eV92YWx1ZSkKKyt7CisrCWlmICghc3RyY21wKHByb3BlcnR5X25hbWUsICJYMTFNb2Rl bCIpKSB7CisrCQlybWx2by0+bW9kZWwgPSBwcm9wZXJ0eV92YWx1ZTsKKysJfSBlbHNlIGlmICgh c3RyY21wKHByb3BlcnR5X25hbWUsICJYMTFMYXlvdXQiKSkgeworKwkJcm1sdm8tPmxheW91dCA9 IHByb3BlcnR5X3ZhbHVlOworKwl9IGVsc2UgaWYgKCFzdHJjbXAocHJvcGVydHlfbmFtZSwgIlgx MVZhcmlhbnQiKSkgeworKwkJcm1sdm8tPnZhcmlhbnQgPSBwcm9wZXJ0eV92YWx1ZTsKKysJfSBl bHNlIGlmICghc3RyY21wKHByb3BlcnR5X25hbWUsICJYMTFPcHRpb25zIikpIHsKKysJCXJtbHZv LT5vcHRpb25zID0gcHJvcGVydHlfdmFsdWU7CisrCX0KKyt9CisrCisrLyogUGFyc2UgdGhlIGxv Y2FsZTEgcHJvcGVydGllcyBjaGFuZ2VkIG1lc3NhZ2UgYW5kIHVwZGF0ZSB0aGUgcm1sdm8gc3Ry dWN0ICovCisrdm9pZCBwYXJzZV9sb2NhbGVfcHJvcGVydGllcyhEQnVzTWVzc2FnZSAqbXNnLCBz dHJ1Y3Qgcm1sdm8gKnJtbHZvKQorK3sKKysJREJ1c01lc3NhZ2VJdGVyIHJvb3RfaXRlcjsKKysJ REJ1c01lc3NhZ2VJdGVyIGRpY3RfaXRlcjsKKysJREJ1c01lc3NhZ2VJdGVyIGVudHJ5X2l0ZXI7 CisrCURCdXNNZXNzYWdlSXRlciB2YXJpYW50X2l0ZXI7CisrCWNoYXIgKnByb3BlcnR5X25hbWU7 CisrCWNoYXIgKnByb3BlcnR5X3ZhbHVlOworKworKwlpZiAoIWRidXNfbWVzc2FnZV9pdGVyX2lu aXQobXNnLCAmcm9vdF9pdGVyKSkgeworKwkJbG9nX2RlYnVnKCJNZXNzYWdlIGhhcyBubyBhcmd1 bWVudHMuXG4iKTsKKysJCXJldHVybjsKKysJfQorKworKwlkYnVzX21lc3NhZ2VfaXRlcl9uZXh0 KCZyb290X2l0ZXIpOworKwlpZiAoZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2FyZ190eXBlKCZyb290 X2l0ZXIpICE9IERCVVNfVFlQRV9BUlJBWSkgeworKwkJbG9nX2RlYnVnKCJOb3QgdGhlIGNvbnRh aW5lciB0eXBlIHdlIGV4cGVjdFxuIik7CisrCQlyZXR1cm47CisrCX0KKysKKysJZGJ1c19tZXNz YWdlX2l0ZXJfcmVjdXJzZSgmcm9vdF9pdGVyLCAmZGljdF9pdGVyKTsKKysJd2hpbGUgKGRidXNf bWVzc2FnZV9pdGVyX2dldF9hcmdfdHlwZSgmZGljdF9pdGVyKSA9PSBEQlVTX1RZUEVfRElDVF9F TlRSWSkgeworKworKwkJZGJ1c19tZXNzYWdlX2l0ZXJfcmVjdXJzZSgmZGljdF9pdGVyLCAmZW50 cnlfaXRlcik7CisrCisrCQlkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYmFzaWMoJmVudHJ5X2l0ZXIs ICZwcm9wZXJ0eV9uYW1lKTsKKysKKysJCWRidXNfbWVzc2FnZV9pdGVyX25leHQoJmVudHJ5X2l0 ZXIpOworKworKwkJaWYgKGRidXNfbWVzc2FnZV9pdGVyX2dldF9hcmdfdHlwZSgmZW50cnlfaXRl cikgPT0gREJVU19UWVBFX1ZBUklBTlQpIHsKKysKKysJCQlkYnVzX21lc3NhZ2VfaXRlcl9yZWN1 cnNlKCZlbnRyeV9pdGVyLCAmdmFyaWFudF9pdGVyKTsKKysKKysJCQlpZiAoZGJ1c19tZXNzYWdl X2l0ZXJfZ2V0X2FyZ190eXBlKCZ2YXJpYW50X2l0ZXIpID09IERCVVNfVFlQRV9TVFJJTkcpIHsK KysJCQkJZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2Jhc2ljKCZ2YXJpYW50X2l0ZXIsICZwcm9wZXJ0 eV92YWx1ZSk7CisrCQkJCXNldF9ybWx2b19wcm9wZXJ0eShybWx2bywgcHJvcGVydHlfbmFtZSwg cHJvcGVydHlfdmFsdWUpOworKwkJCQlsb2dfZGVidWcoInByb3BlcnR5ICVzOiAlc1xuIiwgcHJv cGVydHlfbmFtZSwgcHJvcGVydHlfdmFsdWUpOworKwkJCX0KKysJCX0KKysJCWRidXNfbWVzc2Fn ZV9pdGVyX25leHQoJmRpY3RfaXRlcik7CisrCX0KKyt9CisrCisrc3RhdGljIHZvaWQgaGFuZGxl X2Rpc3BhdGNoX3N0YXR1cyhEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c0Rpc3BhdGNoU3RhdHVz IHN0YXR1cywgdm9pZCAqZGF0YSkKKyt7CisrCXN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cyA9IGRh dGE7CisrCXN0cnVjdCBybWx2byBybWx2byA9IHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfTsKKysK KysJaWYgKHN0YXR1cyA9PSBEQlVTX0RJU1BBVENIX0RBVEFfUkVNQUlOUykgeworKwkJREJ1c01l c3NhZ2UgKm1zZyA9IGRidXNfY29ubmVjdGlvbl9wb3BfbWVzc2FnZShkYnVzLT5jb25uKTsKKysJ CWlmIChtc2cpIHsKKysJCQlsb2dfZGVidWcoIlJlY2VpdmVkIG1lc3NhZ2UgJXNcbiIsIGRidXNf bWVzc2FnZV9nZXRfc2lnbmF0dXJlKG1zZykpOworKwkJCWlmIChkYnVzX21lc3NhZ2VfaXNfc2ln bmFsKG1zZywgIm9yZy5mcmVlZGVza3RvcC5EQnVzLlByb3BlcnRpZXMiLAorKwkJCQkJCSAgICJQ cm9wZXJ0aWVzQ2hhbmdlZCIpKSB7CisrCQkJCXBhcnNlX2xvY2FsZV9wcm9wZXJ0aWVzKG1zZywg JnJtbHZvKTsKKysJCQkJaWYgKGRidXMtPmNiKQorKwkJCQkJZGJ1cy0+Y2Iocm1sdm8ubW9kZWws IHJtbHZvLmxheW91dCwgcm1sdm8udmFyaWFudCwKKysJCQkJCQkgcm1sdm8ub3B0aW9ucywgZGJ1 cy0+ZGF0YSk7CisrCQkJfQorKwkJCWRidXNfbWVzc2FnZV91bnJlZihtc2cpOworKwkJfQorKwl9 CisrfQorKworK3N0YXRpYyB2b2lkIGxvY2FsZTFfcHJvcGVydGllc19jaGFuZ2VkKHN0cnVjdCBl dl9mZCAqZmQsIGludCBtYXNrLCB2b2lkICpkYXRhKQorK3sKKysJc3RydWN0IERCdXNXYXRjaCAq d2F0Y2ggPSBkYXRhOworKwlzdHJ1Y3Qga21zY29uX2RidXMgKmRidXMgPSBkYnVzX3dhdGNoX2dl dF9kYXRhKHdhdGNoKTsKKysKKysJdW5zaWduZWQgaW50IGZsYWdzID0gMDsKKysKKysJbG9nX2Rl YnVnKCJsb2NhbGUxIHByb3BlcnR5IGNoYW5nZWRcbiIpOworKworKwlpZiAobWFzayAmIEVWX1JF QURBQkxFKQorKwkJZmxhZ3MgfD0gREJVU19XQVRDSF9SRUFEQUJMRTsKKysJaWYgKG1hc2sgJiBF Vl9XUklURUFCTEUpCisrCQlmbGFncyB8PSBEQlVTX1dBVENIX1dSSVRBQkxFOworKworKwlkYnVz X3dhdGNoX2hhbmRsZSh3YXRjaCwgZmxhZ3MpOworKworKwl3aGlsZSAoZGJ1c19jb25uZWN0aW9u X2dldF9kaXNwYXRjaF9zdGF0dXMoZGJ1cy0+Y29ubikgPT0gREJVU19ESVNQQVRDSF9EQVRBX1JF TUFJTlMpIHsKKysJCWRidXNfY29ubmVjdGlvbl9kaXNwYXRjaChkYnVzLT5jb25uKTsKKysJCS8v IERCVVMtMSBBUEkgaXMgYSBwYWluLCBidXQgYXQgbGVhc3QgdGhhdCB3b3JrcyBmb3IgdGhpcyBz aW1wbGUgdXNlIGNhc2UKKysJCWhhbmRsZV9kaXNwYXRjaF9zdGF0dXMoZGJ1cy0+Y29ubiwgREJV U19ESVNQQVRDSF9EQVRBX1JFTUFJTlMsIGRidXMpOworKwl9CisrfQorKworKy8qIE9ubHkgcmVn aXN0ZXIgb25lIHJlYWQgd2F0Y2gsIGFzIHdlJ3JlIG5vdCBpbnRlcmVzdGVkIGluIHdyaXRlcyAq LworK3N0YXRpYyB1bnNpZ25lZCBpbnQgZGJ1c19hZGRfd2F0Y2goREJ1c1dhdGNoICp3YXRjaCwg dm9pZCAqZGF0YSkKKyt7CisrCXN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cyA9IGRhdGE7CisrCWlu dCBmZCA9IGRidXNfd2F0Y2hfZ2V0X3VuaXhfZmQod2F0Y2gpOworKwl1bnNpZ25lZCBpbnQgZmxh Z3MgPSBkYnVzX3dhdGNoX2dldF9mbGFncyh3YXRjaCk7CisrCXVuc2lnbmVkIGludCBldl9mbGFn cyA9IDA7CisrCWludCByZXQgPSAwOworKworKwlsb2dfZGVidWcoIkFkZGluZyB3YXRjaCBmb3Ig ZmQgJWQgd2l0aCBmbGFncyAlZCAlcCAlZFxuIiwgZmQsIGZsYWdzLCB3YXRjaCwKKysJCSAgZGJ1 c193YXRjaF9nZXRfZW5hYmxlZCh3YXRjaCkpOworKworKwlpZiAoIWRidXNfd2F0Y2hfZ2V0X2Vu YWJsZWQod2F0Y2gpKQorKwkJcmV0dXJuIFRSVUU7CisrCisrCWlmIChkYnVzLT53YXRjaF9mZCkg eworKwkJbG9nX3dhcm5pbmcoImRidXMgd2F0Y2ggYWxyZWFkeSByZWdpc3RlcmVkIik7CisrCQly ZXR1cm4gVFJVRTsKKysJfQorKwlpZiAoZmxhZ3MgJiBEQlVTX1dBVENIX1dSSVRBQkxFKQorKwkJ ZXZfZmxhZ3MgfD0gRVZfV1JJVEVBQkxFOworKwlpZiAoZmxhZ3MgJiBEQlVTX1dBVENIX1JFQURB QkxFKQorKwkJZXZfZmxhZ3MgfD0gRVZfUkVBREFCTEU7CisrCisrCXJldCA9IGV2X2Vsb29wX25l d19mZChkYnVzLT5lbG9vcCwgJmRidXMtPndhdGNoX2ZkLCBmZCwgZXZfZmxhZ3MsCisrCQkJICAg ICAgbG9jYWxlMV9wcm9wZXJ0aWVzX2NoYW5nZWQsIHdhdGNoKTsKKysKKysJZGJ1c193YXRjaF9z ZXRfZGF0YSh3YXRjaCwgZGJ1cywgTlVMTCk7CisrCisrCWlmIChyZXQpCisrCQlsb2dfZXJyb3Io ImNhbm5vdCBhZGQgd2F0Y2ggZm9yIGZkICVkOiAlZCAlZCAlcCIsIGZkLCByZXQsIGV2X2ZsYWdz LCB3YXRjaCk7CisrCXJldHVybiBUUlVFOworK30KKysKKytzdGF0aWMgdm9pZCBkYnVzX3JlbW92 ZV93YXRjaChEQnVzV2F0Y2ggKndhdGNoLCB2b2lkICpkYXRhKQorK3sKKysJc3RydWN0IGttc2Nv bl9kYnVzICpkYnVzID0gZGF0YTsKKysJbG9nX2RlYnVnKCJSZW1vdmluZyB3YXRjaCBmb3IgZmQg JWRcbiIsIGRidXNfd2F0Y2hfZ2V0X3VuaXhfZmQod2F0Y2gpKTsKKysKKysJaWYgKGRidXNfd2F0 Y2hfZ2V0X2RhdGEod2F0Y2gpICE9IGRidXMpCisrCQlyZXR1cm47CisrCisrCWV2X2Vsb29wX3Jt X2ZkKGRidXMtPndhdGNoX2ZkKTsKKysJZGJ1cy0+d2F0Y2hfZmQgPSBOVUxMOworKwlkYnVzX3dh dGNoX3NldF9kYXRhKHdhdGNoLCBOVUxMLCBOVUxMKTsKKysJcmV0dXJuOworK30KKysKKytzdGF0 aWMgdm9pZCBkYnVzX3RvZ2dsZV93YXRjaChEQnVzV2F0Y2ggKndhdGNoLCB2b2lkICpkYXRhKQor K3sKKysJbG9nX2RlYnVnKCJUb2dnbGluZyB3YXRjaCBmb3IgZmQgJWRcbiIsIGRidXNfd2F0Y2hf Z2V0X3VuaXhfZmQod2F0Y2gpKTsKKysKKysJaWYgKGRidXNfd2F0Y2hfZ2V0X2VuYWJsZWQod2F0 Y2gpKQorKwkJZGJ1c19hZGRfd2F0Y2god2F0Y2gsIGRhdGEpOworKwllbHNlCisrCQlkYnVzX3Jl bW92ZV93YXRjaCh3YXRjaCwgZGF0YSk7CisrfQorKworKy8qIExpc3RlbiB0byBsb2NhbGUxIHBy b3BlcnRpZXMgY2hhbmdlZCwgYW5kIHVwZGF0ZSB0aGUgWEtCIGxheW91dCBpZiBuZWVkZWQgKi8K KytpbnQga21zY29uX2RidXNfbGlzdGVuX2xvY2FsZTEoc3RydWN0IGttc2Nvbl9kYnVzICpkYnVz LCBkYnVzX3VwZGF0ZV94a2JfbGF5b3V0X2NiIGNiLCB2b2lkICpkYXRhKQorK3sKKysJREJ1c0Vy cm9yIGVycm9yOworKworKwlsb2dfZGVidWcoIkxpc3RlbmluZyB0byBsb2NhbGUxXG4iKTsKKysK KysJaWYgKCFjYikKKysJCXJldHVybiAtRUlOVkFMOworKworKwlkYnVzLT5jYiA9IGNiOworKwlk YnVzLT5kYXRhID0gZGF0YTsKKysKKysJZGJ1c19lcnJvcl9pbml0KCZlcnJvcik7CisrCisrCWRi dXNfY29ubmVjdGlvbl9zZXRfd2F0Y2hfZnVuY3Rpb25zKGRidXMtPmNvbm4sIGRidXNfYWRkX3dh dGNoLCBkYnVzX3JlbW92ZV93YXRjaCwKKysJCQkJCSAgICBkYnVzX3RvZ2dsZV93YXRjaCwgZGJ1 cywgTlVMTCk7CisrCisrCWRidXNfY29ubmVjdGlvbl9zZXRfZGlzcGF0Y2hfc3RhdHVzX2Z1bmN0 aW9uKGRidXMtPmNvbm4sIGhhbmRsZV9kaXNwYXRjaF9zdGF0dXMsIGRidXMsCisrCQkJCQkJICAg ICBOVUxMKTsKKysKKysJY29uc3QgY2hhciAqbWF0Y2hfcnVsZSA9ICJ0eXBlPSdzaWduYWwnLCIK KysJCQkJICJzZW5kZXI9J29yZy5mcmVlZGVza3RvcC5sb2NhbGUxJywiCisrCQkJCSAicGF0aD0n L29yZy9mcmVlZGVza3RvcC9sb2NhbGUxJywiCisrCQkJCSAiaW50ZXJmYWNlPSdvcmcuZnJlZWRl c2t0b3AuREJ1cy5Qcm9wZXJ0aWVzJywiCisrCQkJCSAibWVtYmVyPSdQcm9wZXJ0aWVzQ2hhbmdl ZCciOworKworKwlkYnVzX2J1c19hZGRfbWF0Y2goZGJ1cy0+Y29ubiwgbWF0Y2hfcnVsZSwgJmVy cm9yKTsKKysKKysJaWYgKGRidXNfZXJyb3JfaXNfc2V0KCZlcnJvcikpIHsKKysJCWxvZ19kZWJ1 ZygiRXJyb3IgYWRkaW5nIG1hdGNoOiAlc1xuIiwgZXJyb3IubWVzc2FnZSk7CisrCQlkYnVzX2Vy cm9yX2ZyZWUoJmVycm9yKTsKKysJCXJldHVybiAtRUlPOworKwl9CisrCWRidXNfY29ubmVjdGlv bl9mbHVzaChkYnVzLT5jb25uKTsKKysKKysJbG9nX2luZm8oIkxpc3RlbmluZyB0byBsb2NhbGUx IGNoYW5nZXMiKTsKKysKKysJcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL3NyYy9rbXNjb25f ZHVtbXkuaCBiL3NyYy9kYnVzLmgKK3NpbWlsYXJpdHkgaW5kZXggNTAlCityZW5hbWUgZnJvbSBz cmMva21zY29uX2R1bW15LmgKK3JlbmFtZSB0byBzcmMvZGJ1cy5oCitpbmRleCBiNGYzYWEyLi4y NzI0MzRmIDEwMDY0NAorLS0tIGEvc3JjL2ttc2Nvbl9kdW1teS5oCisrKysgYi9zcmMvZGJ1cy5o CitAQCAtMSw3ICsxLDggQEAKKyAvKgorLSAqIGttc2NvbiAtIER1bW15IFNlc3Npb24KKysgKiBk YnVzIC0gRC1CdXMgc3VwcG9ydAorICAqCistICogQ29weXJpZ2h0IChjKSAyMDEyIERhdmlkIEhl cnJtYW5uIDxkaC5oZXJybWFubkBnb29nbGVtYWlsLmNvbT4KKysgKiBDb3B5cmlnaHQgKGMpIDIw MjYgUmVkIEhhdC4KKysgKiBBdXRob3I6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0 LmNvbT4KKyAgKgorICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworICAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMKK0BAIC0yMywyOCArMjQsMzggQEAK KyAgKiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FS RS4KKyAgKi8KKyAKKy0vKgorLSAqIER1bW15IFNlc3Npb24KKy0gKi8KKy0KKy0jaWZuZGVmIEtN U0NPTl9EVU1NWV9ICistI2RlZmluZSBLTVNDT05fRFVNTVlfSAorKyNpZm5kZWYgX0tNU0NPTl9E QlVTX0gKKysjZGVmaW5lIF9LTVNDT05fREJVU19ICisgCistI2luY2x1ZGUgPGVycm5vLmg+Cist I2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlICJrbXNjb25fc2VhdC5oIgorK3N0cnVjdCBl dl9lbG9vcDsKKytzdHJ1Y3Qga21zY29uX2RidXM7CisgCistI2lmZGVmIEJVSUxEX0VOQUJMRV9T RVNTSU9OX0RVTU1ZCisrdHlwZWRlZiB2b2lkICgqZGJ1c191cGRhdGVfeGtiX2xheW91dF9jYiko Y29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwKKysJCQkJCSAgY29uc3QgY2hh ciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucywgdm9pZCAqZGF0YSk7CisgCistaW50IGtt c2Nvbl9kdW1teV9yZWdpc3RlcihzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKipvdXQsIHN0cnVjdCBr bXNjb25fc2VhdCAqc2VhdCk7CisrI2lmZGVmIEJVSUxEX0VOQUJMRV9EQlVTCisrdm9pZCBrbXNj b25fZGJ1c19zZXRfeGtiX2Vudl9mcm9tX2xvY2FsZTEoc3RydWN0IGttc2Nvbl9kYnVzICpkYnVz KTsKKytzdHJ1Y3Qga21zY29uX2RidXMgKmttc2Nvbl9kYnVzX25ldyhzdHJ1Y3QgZXZfZWxvb3Ag KmVsb29wKTsKKyt2b2lkIGttc2Nvbl9kYnVzX2ZyZWUoc3RydWN0IGttc2Nvbl9kYnVzICpkYnVz KTsKKytpbnQga21zY29uX2RidXNfbGlzdGVuX2xvY2FsZTEoc3RydWN0IGttc2Nvbl9kYnVzICpk YnVzLCBkYnVzX3VwZGF0ZV94a2JfbGF5b3V0X2NiIGNiLCB2b2lkICpkYXRhKTsKKyAKKy0jZWxz ZSAvKiAhQlVJTERfRU5BQkxFX1NFU1NJT05fRFVNTVkgKi8KKy0KKy1zdGF0aWMgaW5saW5lIGlu dCBrbXNjb25fZHVtbXlfcmVnaXN0ZXIoc3RydWN0IGttc2Nvbl9zZXNzaW9uICoqb3V0LCBzdHJ1 Y3Qga21zY29uX3NlYXQgKnNlYXQpCisrI2Vsc2UKKytzdGF0aWMgaW5saW5lIHZvaWQga21zY29u X2RidXNfc2V0X3hrYl9lbnZfZnJvbV9sb2NhbGUxKHN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cykK KyB7CistCXJldHVybiAtRU9QTk9UU1VQUDsKKysJcmV0dXJuOworIH0KKy0KKy0jZW5kaWYgLyog QlVJTERfRU5BQkxFX1NFU1NJT05fRFVNTVkgKi8KKy0KKy0jZW5kaWYgLyogS01TQ09OX0RVTU1Z X0ggKi8KKytzdGF0aWMgaW5saW5lIHN0cnVjdCBrbXNjb25fZGJ1cyAqa21zY29uX2RidXNfbmV3 KHN0cnVjdCBldl9lbG9vcCAqZWxvb3ApCisreworKwlyZXR1cm4gTlVMTDsKKyt9Cisrc3RhdGlj IGlubGluZSB2b2lkIGttc2Nvbl9kYnVzX2ZyZWUoc3RydWN0IGttc2Nvbl9kYnVzICpkYnVzKQor K3sKKysJcmV0dXJuOworK30KKytzdGF0aWMgaW5saW5lIGludCBrbXNjb25fZGJ1c19saXN0ZW5f bG9jYWxlMShzdHJ1Y3Qga21zY29uX2RidXMgKmRidXMsIGRidXNfdXBkYXRlX3hrYl9sYXlvdXRf Y2IgY2IsCisrCQkJCQkgICAgIHZvaWQgKmRhdGEpCisreworKwlyZXR1cm4gMDsKKyt9CisrI2Vu ZGlmIC8qIEJVSUxEX0VOQUJMRV9EQlVTICovCisrI2VuZGlmIC8qIF9LTVNDT05fREJVU19IICov CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9zcmMvZm9udC9mb250 X2ZyZWV0eXBlLmMgYi9zcmMvZm9udC9mb250X2ZyZWV0eXBlLmMKK2luZGV4IGE4NzlkNjQuLmQw ZTNlZTkgMTAwNjQ0CistLS0gYS9zcmMvZm9udC9mb250X2ZyZWV0eXBlLmMKKysrKyBiL3NyYy9m b250L2ZvbnRfZnJlZXR5cGUuYworQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgaW50IGZvbnRf Z2V0X3dpZHRoKEZUX0ZhY2UgZmFjZSkKKyB7CisgCUZUX1VJbnQgZ2x5cGhfaW5kZXggPSBGVF9H ZXRfQ2hhcl9JbmRleChmYWNlLCAnTScpOworIAorLQlpZiAoRlRfTG9hZF9HbHlwaChmYWNlLCBn bHlwaF9pbmRleCwgRlRfTE9BRF9ERUZBVUxUKSkKKysJaWYgKEZUX0xvYWRfR2x5cGgoZmFjZSwg Z2x5cGhfaW5kZXgsIEZUX0xPQURfVEFSR0VUX0xJR0hUKSkKKyAJCXJldHVybiAtMTsKKyAKKyAJ aWYgKEZUX1JlbmRlcl9HbHlwaChmYWNlLT5nbHlwaCwgRlRfUkVOREVSX01PREVfTk9STUFMKSkK K0BAIC0zNzcsNyArMzc3LDcgQEAgc3RhdGljIHN0cnVjdCBrbXNjb25fZ2x5cGggKnJlbmRlcl9n bHlwaChGVF9GYWNlIGZhY2UsIEZUX1VJbnQgaW5kZXgsIGNvbnN0IHVpbnQKKyAJaWYgKCFjd2lk dGgpCisgCQlyZXR1cm4gTlVMTDsKKyAKKy0JaWYgKEZUX0xvYWRfR2x5cGgoZmFjZSwgaW5kZXgs IEZUX0xPQURfTk9fSElOVElORykpIHsKKysJaWYgKEZUX0xvYWRfR2x5cGgoZmFjZSwgaW5kZXgs IEZUX0xPQURfVEFSR0VUX0xJR0hUKSkgeworIAkJbG9nX2VycigiRmFpbGVkIHRvIGxvYWQgZ2x5 cGhcbiIpOworIAkJcmV0dXJuIE5VTEw7CisgCX0KK2RpZmYgLS1naXQgYS9zcmMvZm9udC9tZXNv bi5idWlsZCBiL3NyYy9mb250L21lc29uLmJ1aWxkCitpbmRleCBkZDVkOWRjLi5kMjY1YmIwIDEw MDY0NAorLS0tIGEvc3JjL2ZvbnQvbWVzb24uYnVpbGQKKysrKyBiL3NyYy9mb250L21lc29uLmJ1 aWxkCitAQCAtMjIsNyArMjIsNyBAQCBmb250X2RlcHMgPSBkZWNsYXJlX2RlcGVuZGVuY3koCisg IyBVbmlmb250IEdlbmVyYXRvcgorICMgVGhpcyBnZW5lcmF0ZXMgdGhlIHVuaWZvbnQgc291cmNl cyBmcm9tIHJhdyBoZXgtZW5jb2RlZCBmb250IGRhdGEuCisgIworLWdlbnVuaWZvbnQgPSBleGVj dXRhYmxlKCdnZW51bmlmb250JywgJ2dlbnVuaWZvbnQuYycsIGRlcGVuZGVuY2llczogW3psaWJf ZGVwc10sIG5hdGl2ZTogdHJ1ZSkKKytnZW51bmlmb250ID0gZXhlY3V0YWJsZSgnZ2VudW5pZm9u dCcsICdnZW51bmlmb250LmMnLCBkZXBlbmRlbmNpZXM6IFt6bGliX2RlcHNfbmF0aXZlXSwgbmF0 aXZlOiB0cnVlKQorIAorIHVuaWZvbnRfYmluID0gY3VzdG9tX3RhcmdldCgndW5pZm9udC1iaW4n LAorICAgaW5wdXQ6IFsnZm9udF91bmlmb250X2RhdGEuaGV4J10sCitAQCAtNjgsNCArNjgsNCBA QCBpZiBlbmFibGVfZm9udF9wYW5nbworICAgICBpbnN0YWxsOiB0cnVlLAorICAgICBpbnN0YWxs X2RpcjogbW9kdWxlZGlyLAorICAgKQorLWVuZGlmCitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKKytlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9pbnB1dC9pbnB1dC5jIGIvc3JjL2lucHV0L2lu cHV0LmMKK2luZGV4IDY1YzFkNmYuLjcxYTA1M2IgMTAwNjQ0CistLS0gYS9zcmMvaW5wdXQvaW5w dXQuYworKysrIGIvc3JjL2lucHV0L2lucHV0LmMKK0BAIC01MDQsMjMgKzUwNCw0OCBAQCBlcnJf ZnJlZToKKyAKKyBTSExfRVhQT1JUCisgaW50IGlucHV0X3NldF9rZXltYXAoc3RydWN0IGlucHV0 ICppbnB1dCwgY29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwKKy0JCSAgICAg Y29uc3QgY2hhciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucywgY29uc3QgY2hhciAqbG9j YWxlLAorLQkJICAgICBjb25zdCBjaGFyICprZXltYXAsIGNvbnN0IGNoYXIgKmNvbXBvc2VfZmls ZSwgc2l6ZV90IGNvbXBvc2VfZmlsZV9sZW4pCisteworLQkvKiB4a2Jjb21tb24gd29uJ3QgdXNl IHRoZSBYS0JfREVGQVVMVF9PUFRJT05TIGVudmlyb25tZW50CistCSAqIHZhcmlhYmxlIGlmIG9w dGlvbnMgaXMgYW4gZW1wdHkgc3RyaW5nLgorLQkgKiBTbyBpZiBhbGwgdmFyaWFibGVzIGFyZSBl bXB0eSwgdXNlIE5VTEwgaW5zdGVhZC4KKy0JICovCistCWlmIChtb2RlbCAmJiAqbW9kZWwgPT0g MCAmJiBsYXlvdXQgJiYgKmxheW91dCA9PSAwICYmIHZhcmlhbnQgJiYgKnZhcmlhbnQgPT0gMCAm JiBvcHRpb25zICYmCistCSAgICAqb3B0aW9ucyA9PSAwKSB7CistCQltb2RlbCA9IE5VTEw7Cist CQlsYXlvdXQgPSBOVUxMOworLQkJdmFyaWFudCA9IE5VTEw7CistCQlvcHRpb25zID0gTlVMTDsK Ky0JfQorKwkJICAgICBjb25zdCBjaGFyICp2YXJpYW50LCBjb25zdCBjaGFyICpvcHRpb25zLCBj b25zdCBjaGFyICprZXltYXApCisreworKwlyZXR1cm4gdXhrYl9sYXlvdXRfaW5pdChpbnB1dCwg bW9kZWwsIGxheW91dCwgdmFyaWFudCwgb3B0aW9ucywga2V5bWFwKTsKKyt9CisgCistCXJldHVy biB1eGtiX2Rlc2NfaW5pdChpbnB1dCwgbW9kZWwsIGxheW91dCwgdmFyaWFudCwgb3B0aW9ucywg bG9jYWxlLCBrZXltYXAsIGNvbXBvc2VfZmlsZSwKKy0JCQkgICAgICBjb21wb3NlX2ZpbGVfbGVu KTsKKytTSExfRVhQT1JUCisrdm9pZCBpbnB1dF9zZXRfY29tcG9zZShzdHJ1Y3QgaW5wdXQgKmlu cHV0LCBjb25zdCBjaGFyICpsb2NhbGUsIGNvbnN0IGNoYXIgKmNvbXBvc2VfZmlsZSwKKysJCSAg ICAgICBzaXplX3QgY29tcG9zZV9maWxlX2xlbikKKyt7CisrCXV4a2JfY29tcG9zZV90YWJsZV9p bml0KGlucHV0LCBjb21wb3NlX2ZpbGUsIGNvbXBvc2VfZmlsZV9sZW4sIGxvY2FsZSk7CisrfQor KworK1NITF9FWFBPUlQKKytpbnQgaW5wdXRfdXBkYXRlX2tleW1hcChzdHJ1Y3QgaW5wdXQgKmlu cHV0LCBjb25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hhciAqbGF5b3V0LAorKwkJCWNvbnN0IGNo YXIgKnZhcmlhbnQsIGNvbnN0IGNoYXIgKm9wdGlvbnMpCisreworKwlzdHJ1Y3Qgc2hsX2RsaXN0 ICppdGVyOworKwlzdHJ1Y3QgaW5wdXRfZGV2ICpkZXY7CisrCisrCWlmIChpbnB1dC0+Y3R4KSB7 CisrCQlzaGxfZGxpc3RfZm9yX2VhY2goaXRlciwgJmlucHV0LT5kZXZpY2VzKQorKwkJeworKwkJ CWRldiA9IHNobF9kbGlzdF9lbnRyeShpdGVyLCBzdHJ1Y3QgaW5wdXRfZGV2LCBsaXN0KTsKKysJ CQlpZiAoZGV2LT5jYXBhYmlsaXRpZXMgJiBERVZJQ0VfSEFTX0tFWVMpIHsKKysJCQkJaW5wdXRf c2xlZXBfZGV2KGRldik7CisrCQkJCWlucHV0X2V4aXRfa2V5Ym9hcmQoZGV2KTsKKysJCQl9Cisr CQl9CisrCX0KKysJdXhrYl9jb21wb3NlX3RhYmxlX2Rlc3Ryb3koaW5wdXQpOworKwl1eGtiX2xh eW91dF9kZXN0cm95KGlucHV0KTsKKysJdXhrYl9sYXlvdXRfaW5pdChpbnB1dCwgbW9kZWwsIGxh eW91dCwgdmFyaWFudCwgb3B0aW9ucywgTlVMTCk7CisrCXNobF9kbGlzdF9mb3JfZWFjaChpdGVy LCAmaW5wdXQtPmRldmljZXMpCisrCXsKKysJCWRldiA9IHNobF9kbGlzdF9lbnRyeShpdGVyLCBz dHJ1Y3QgaW5wdXRfZGV2LCBsaXN0KTsKKysJCWlmIChkZXYtPmNhcGFiaWxpdGllcyAmIERFVklD RV9IQVNfS0VZUykgeworKwkJCWlucHV0X2luaXRfa2V5Ym9hcmQoZGV2KTsKKysJCQlpZiAoaW5w dXQtPmF3YWtlKQorKwkJCQlpbnB1dF93YWtlX3VwX2RldihkZXYpOworKwkJfQorKwl9CisrCXJl dHVybiAwOworIH0KKyAKKyBTSExfRVhQT1JUCitAQCAtNTY1LDcgKzU5MCw4IEBAIHZvaWQgaW5w dXRfdW5yZWYoc3RydWN0IGlucHV0ICppbnB1dCkKKyAJCWlucHV0X2ZyZWVfZGV2KGRldik7Cisg CX0KKyAKKy0JdXhrYl9kZXNjX2Rlc3Ryb3koaW5wdXQpOworKwl1eGtiX2NvbXBvc2VfdGFibGVf ZGVzdHJveShpbnB1dCk7CisrCXV4a2JfbGF5b3V0X2Rlc3Ryb3koaW5wdXQpOworIAlzaGxfaG9v a19mcmVlKGlucHV0LT5rZXlfaG9vayk7CisgCXNobF9ob29rX2ZyZWUoaW5wdXQtPnBvaW50ZXJf aG9vayk7CisgCWV2X2Vsb29wX3JtX3RpbWVyKGlucHV0LT5oaWRlX3BvaW50ZXIpOworZGlmZiAt LWdpdCBhL3NyYy9pbnB1dC9pbnB1dC5oIGIvc3JjL2lucHV0L2lucHV0LmgKK2luZGV4IDhiODFl MDAuLjlmMjY5ZmYgMTAwNjQ0CistLS0gYS9zcmMvaW5wdXQvaW5wdXQuaAorKysrIGIvc3JjL2lu cHV0L2lucHV0LmgKK0BAIC05Miw4ICs5MiwxMSBAQCB0eXBlZGVmIHZvaWQgKCp1dGVybV9jbG9z ZV9jYikoaW50IGZkLCBpbnQgZmRfaWQsIHZvaWQgKmRhdGEpOworIAorIGludCBpbnB1dF9uZXco c3RydWN0IGlucHV0ICoqb3V0LCBzdHJ1Y3QgZXZfZWxvb3AgKmVsb29wKTsKKyBpbnQgaW5wdXRf c2V0X2tleW1hcChzdHJ1Y3QgaW5wdXQgKmlucHV0LCBjb25zdCBjaGFyICptb2RlbCwgY29uc3Qg Y2hhciAqbGF5b3V0LAorLQkJICAgICBjb25zdCBjaGFyICp2YXJpYW50LCBjb25zdCBjaGFyICpv cHRpb25zLCBjb25zdCBjaGFyICpsb2NhbGUsCistCQkgICAgIGNvbnN0IGNoYXIgKmtleW1hcCwg Y29uc3QgY2hhciAqY29tcG9zZV9maWxlLCBzaXplX3QgY29tcG9zZV9maWxlX2xlbik7CisrCQkg ICAgIGNvbnN0IGNoYXIgKnZhcmlhbnQsIGNvbnN0IGNoYXIgKm9wdGlvbnMsIGNvbnN0IGNoYXIg KmtleW1hcCk7Cisrdm9pZCBpbnB1dF9zZXRfY29tcG9zZShzdHJ1Y3QgaW5wdXQgKmlucHV0LCBj b25zdCBjaGFyICpsb2NhbGUsIGNvbnN0IGNoYXIgKmNvbXBvc2VfZmlsZSwKKysJCSAgICAgICBz aXplX3QgY29tcG9zZV9maWxlX2xlbik7CisraW50IGlucHV0X3VwZGF0ZV9rZXltYXAoc3RydWN0 IGlucHV0ICppbnB1dCwgY29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwKKysJ CQljb25zdCBjaGFyICp2YXJpYW50LCBjb25zdCBjaGFyICpvcHRpb25zKTsKKyB2b2lkIGlucHV0 X3NldF9jb25mKHN0cnVjdCBpbnB1dCAqaW5wdXQsIHVuc2lnbmVkIGludCByZXBlYXRfZGVsYXks IHVuc2lnbmVkIGludCByZXBlYXRfcmF0ZSwKKyAJCSAgICBib29sIG1vdXNlX2VuYWJsZWQpOwor IHZvaWQgaW5wdXRfcmVmKHN0cnVjdCBpbnB1dCAqaW5wdXQpOworZGlmZiAtLWdpdCBhL3NyYy9p bnB1dC9pbnB1dF9pbnRlcm5hbC5oIGIvc3JjL2lucHV0L2lucHV0X2ludGVybmFsLmgKK2luZGV4 IDU1OWU4ZWMuLmZjOTMyZmEgMTAwNjQ0CistLS0gYS9zcmMvaW5wdXQvaW5wdXRfaW50ZXJuYWwu aAorKysrIGIvc3JjL2lucHV0L2lucHV0X2ludGVybmFsLmgKK0BAIC0xNDAsMTAgKzE0MCwxMiBA QCBzdGF0aWMgaW5saW5lIGJvb2wgaW5wdXRfYml0X2lzX3NldChjb25zdCB1bnNpZ25lZCBsb25n ICphcnJheSwgaW50IGJpdCkKKyAJcmV0dXJuICEhKGFycmF5W2JpdCAvIExPTkdfQklUXSAmICgx VUwgPDwgKGJpdCAlIExPTkdfQklUKSkpOworIH0KKyAKKy1pbnQgdXhrYl9kZXNjX2luaXQoc3Ry dWN0IGlucHV0ICppbnB1dCwgY29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwg Y29uc3QgY2hhciAqdmFyaWFudCwKKy0JCSAgIGNvbnN0IGNoYXIgKm9wdGlvbnMsIGNvbnN0IGNo YXIgKmxvY2FsZSwgY29uc3QgY2hhciAqa2V5bWFwLAorLQkJICAgY29uc3QgY2hhciAqY29tcG9z ZV9maWxlLCBzaXplX3QgY29tcG9zZV9maWxlX2xlbik7Cistdm9pZCB1eGtiX2Rlc2NfZGVzdHJv eShzdHJ1Y3QgaW5wdXQgKmlucHV0KTsKKytpbnQgdXhrYl9sYXlvdXRfaW5pdChzdHJ1Y3QgaW5w dXQgKmlucHV0LCBjb25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hhciAqbGF5b3V0LAorKwkJICAg ICBjb25zdCBjaGFyICp2YXJpYW50LCBjb25zdCBjaGFyICpvcHRpb25zLCBjb25zdCBjaGFyICpr ZXltYXApOworK3ZvaWQgdXhrYl9jb21wb3NlX3RhYmxlX2luaXQoc3RydWN0IGlucHV0ICppbnB1 dCwgY29uc3QgY2hhciAqY29tcG9zZV9maWxlLCBzaXplX3QgY29tcG9zZV9maWxlX2xlbiwKKysJ CQkgICAgIGNvbnN0IGNoYXIgKmxvY2FsZSk7Cisrdm9pZCB1eGtiX2xheW91dF9kZXN0cm95KHN0 cnVjdCBpbnB1dCAqaW5wdXQpOworK3ZvaWQgdXhrYl9jb21wb3NlX3RhYmxlX2Rlc3Ryb3koc3Ry dWN0IGlucHV0ICppbnB1dCk7CisgCisgaW50IHV4a2JfZGV2X2luaXQoc3RydWN0IGlucHV0X2Rl diAqZGV2KTsKKyB2b2lkIHV4a2JfZGV2X2Rlc3Ryb3koc3RydWN0IGlucHV0X2RldiAqZGV2KTsK K2RpZmYgLS1naXQgYS9zcmMvaW5wdXQvaW5wdXRfdXhrYi5jIGIvc3JjL2lucHV0L2lucHV0X3V4 a2IuYworaW5kZXggMzc3ZTkzNS4uMWFlMjU2NSAxMDA2NDQKKy0tLSBhL3NyYy9pbnB1dC9pbnB1 dF91eGtiLmMKKysrKyBiL3NyYy9pbnB1dC9pbnB1dF91eGtiLmMKK0BAIC02OSwxMSArNjksMTAg QEAgc3RhdGljIHZvaWQgdXhrYl9sb2coc3RydWN0IHhrYl9jb250ZXh0ICpjb250ZXh0LCBlbnVt IHhrYl9sb2dfbGV2ZWwgbGV2ZWwsIGNvbnMKKyAJbG9nX3N1Ym1pdChMT0dfREVGQVVMVCwgc2V2 LCBmb3JtYXQsIGFyZ3MpOworIH0KKyAKKy1pbnQgdXhrYl9kZXNjX2luaXQoc3RydWN0IGlucHV0 ICppbnB1dCwgY29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwgY29uc3QgY2hh ciAqdmFyaWFudCwKKy0JCSAgIGNvbnN0IGNoYXIgKm9wdGlvbnMsIGNvbnN0IGNoYXIgKmxvY2Fs ZSwgY29uc3QgY2hhciAqa2V5bWFwLAorLQkJICAgY29uc3QgY2hhciAqY29tcG9zZV9maWxlLCBz aXplX3QgY29tcG9zZV9maWxlX2xlbikKKytpbnQgdXhrYl9sYXlvdXRfaW5pdChzdHJ1Y3QgaW5w dXQgKmlucHV0LCBjb25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hhciAqbGF5b3V0LAorKwkJICAg ICBjb25zdCBjaGFyICp2YXJpYW50LCBjb25zdCBjaGFyICpvcHRpb25zLCBjb25zdCBjaGFyICpr ZXltYXApCisgeworLQlpbnQgcmV0OworKwlpbnQgcmV0ID0gMDsKKyAJc3RydWN0IHhrYl9ydWxl X25hbWVzIHJtbHZvID0geworIAkJLnJ1bGVzID0gImV2ZGV2IiwKKyAJCS5tb2RlbCA9IG1vZGVs LAorQEAgLTE0MCw3ICsxMzksMTUgQEAgaW50IHV4a2JfZGVzY19pbml0KHN0cnVjdCBpbnB1dCAq aW5wdXQsIGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsIGMKKyAJCWxvZ19k ZWJ1ZygibmV3IGtleWJvYXJkIGRlc2NyaXB0aW9uICglcywgJXMsICVzLCAlcykiLCBtb2RlbCwg bGF5b3V0LCB2YXJpYW50LAorIAkJCSAgb3B0aW9ucyk7CisgCX0KKysJcmV0dXJuIDA7CisrZXJy X2N0eDoKKysJeGtiX2NvbnRleHRfdW5yZWYoaW5wdXQtPmN0eCk7CisrCXJldHVybiByZXQ7Cisr fQorIAorK3ZvaWQgdXhrYl9jb21wb3NlX3RhYmxlX2luaXQoc3RydWN0IGlucHV0ICppbnB1dCwg Y29uc3QgY2hhciAqY29tcG9zZV9maWxlLCBzaXplX3QgY29tcG9zZV9maWxlX2xlbiwKKysJCQkg ICAgIGNvbnN0IGNoYXIgKmxvY2FsZSkKKyt7CisgCWlmIChjb21wb3NlX2ZpbGUgJiYgKmNvbXBv c2VfZmlsZSkgeworIAkJaW5wdXQtPmNvbXBvc2VfdGFibGUgPSB4a2JfY29tcG9zZV90YWJsZV9u ZXdfZnJvbV9idWZmZXIoCisgCQkJaW5wdXQtPmN0eCwgY29tcG9zZV9maWxlLCBjb21wb3NlX2Zp bGVfbGVuLCBsb2NhbGUsCitAQCAtMTYxLDE5ICsxNjgsMjAgQEAgaW50IHV4a2JfZGVzY19pbml0 KHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlv dXQsIGMKKyAJCQkJICJ0YWJsZSwgZGlzYWJsaW5nIGNvbXBvc2Ugc3VwcG9ydCIpOworIAkJfQor IAl9CistCistCXJldHVybiAwOworLQorLWVycl9jdHg6CistCXhrYl9jb250ZXh0X3VucmVmKGlu cHV0LT5jdHgpOworLQlyZXR1cm4gcmV0OworIH0KKyAKKy12b2lkIHV4a2JfZGVzY19kZXN0cm95 KHN0cnVjdCBpbnB1dCAqaW5wdXQpCisrdm9pZCB1eGtiX2NvbXBvc2VfdGFibGVfZGVzdHJveShz dHJ1Y3QgaW5wdXQgKmlucHV0KQorIHsKKyAJeGtiX2NvbXBvc2VfdGFibGVfdW5yZWYoaW5wdXQt PmNvbXBvc2VfdGFibGUpOworKwlpbnB1dC0+Y29tcG9zZV90YWJsZSA9IE5VTEw7CisrfQorKwor K3ZvaWQgdXhrYl9sYXlvdXRfZGVzdHJveShzdHJ1Y3QgaW5wdXQgKmlucHV0KQorK3sKKyAJeGti X2tleW1hcF91bnJlZihpbnB1dC0+a2V5bWFwKTsKKyAJeGtiX2NvbnRleHRfdW5yZWYoaW5wdXQt PmN0eCk7CisrCWlucHV0LT5rZXltYXAgPSBOVUxMOworKwlpbnB1dC0+Y3R4ID0gTlVMTDsKKyB9 CisgCisgc3RhdGljIHZvaWQgdGltZXJfZXZlbnQoc3RydWN0IGV2X3RpbWVyICp0aW1lciwgdWlu dDY0X3QgbnVtLCB2b2lkICpkYXRhKQorQEAgLTIxOCw2ICsyMjYsOSBAQCB2b2lkIHV4a2JfZGV2 X2Rlc3Ryb3koc3RydWN0IGlucHV0X2RldiAqZGV2KQorIAl4a2JfY29tcG9zZV9zdGF0ZV91bnJl ZihkZXYtPmNvbXBvc2Vfc3RhdGUpOworIAl4a2Jfc3RhdGVfdW5yZWYoZGV2LT5zdGF0ZSk7Cisg CWV2X2Vsb29wX3JtX3RpbWVyKGRldi0+cmVwZWF0X3RpbWVyKTsKKysJZGV2LT5jb21wb3NlX3N0 YXRlID0gTlVMTDsKKysJZGV2LT5zdGF0ZSA9IE5VTEw7CisrCWRldi0+cmVwZWF0X3RpbWVyID0g TlVMTDsKKyB9CisgCisgI2RlZmluZSBFVkRFVl9LRVlDT0RFX09GRlNFVCA4CitkaWZmIC0tZ2l0 IGEvc3JjL2ttc2Nvbl9jb25mLmMgYi9zcmMva21zY29uX2NvbmYuYworaW5kZXggNmE4NzI4YS4u NGIwMWQ0YSAxMDA2NDQKKy0tLSBhL3NyYy9rbXNjb25fY29uZi5jCisrKysgYi9zcmMva21zY29u X2NvbmYuYworQEAgLTM0LDYgKzM0LDcgQEAKKyAjaW5jbHVkZSA8eGtiY29tbW9uL3hrYmNvbW1v bi1rZXlzeW1zLmg+CisgI2luY2x1ZGUgImNvbmYuaCIKKyAjaW5jbHVkZSAia21zY29uX2NvbmYu aCIKKysjaW5jbHVkZSAia21zY29uX2lzc3VlLmgiCisgI2luY2x1ZGUgInNobC9naXRoZWFkLmgi CisgI2luY2x1ZGUgInNobC9sb2cuaCIKKyAjaW5jbHVkZSAic2hsL21pc2MuaCIKK0BAIC03OCwx NCArNzksMTMgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVscCgpCisgCQkiU2Vzc2lvbiBPcHRpb25z OlxuIgorIAkJIlx0ICAgIC0tc2Vzc2lvbi1tYXggPG1heD4gICAgICAgICBbNTBdICBNYXhpbXVt IG51bWJlciBvZiBzZXNzaW9uc1xuIgorIAkJIlx0ICAgIC0tc2Vzc2lvbi1jb250cm9sICAgICAg ICAgICBbb2ZmXSBBbGxvdyBrZXlib2FyZCBzZXNzaW9uLWNvbnRyb2xcbiIKKy0JCSJcdCAgICAt LXRlcm1pbmFsLXNlc3Npb24gICAgICAgICAgW29uXSAgRW5hYmxlIHRlcm1pbmFsIHNlc3Npb25c biIKKyAJCSJcbiIKKyAJCSJUZXJtaW5hbCBPcHRpb25zOlxuIgorIAkJIlx0ICAgIC0taXNzdWUg ICAgICAgICAgICAgICAgIFtvbl1cbiIKKyAJCSJcdCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERpc3BsYXkgaXNzdWUgZmlsZXMgYmVmb3JlIHRoZVxuIgorIAkJIlx0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbG9naW4gcHJvbXB0LiBVc2UgLS1uby1pc3N1ZSB0b1xuIgorIAkJ Ilx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRoZSBsb2dpbiBwcm9jZXNzIGhh bmRsZSBpdC5cbiIKKy0JCSJcdCAgICAtLWlzc3VlLXBhdGggPHBhdGg+ICAgICBbL2V0Yy9pc3N1 ZTovZXRjL2lzc3VlLmRdXG4iCisrCQkiXHQgICAgLS1pc3N1ZS1wYXRoIDxwYXRoPiAgICAgWyIg SVNTVUVfREVGQVVMVF9QQVRIICJdXG4iCisgCQkiXHQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBpc3N1ZVxuIgorIAkJIlx0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHJlYWRcbiIKKyAJCSJc dC1sLCAtLWxvZ2luICAgICAgICAgICAgICAgICBbL2Jpbi9sb2dpbiAtcF1cbiIKK0BAIC0xNDgs OCArMTQ4LDYgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVscCgpCisgCQkiXHQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU3dpdGNoIHRvIHRoZSBuZXh0IHNlc3Npb25cbiIKKyAJCSJc dCAgICAtLWdyYWItc2Vzc2lvbi1wcmV2IDxncmFiPiAgWzxDdHJsPjxMb2dvPkxlZnRdXG4iCisg CQkiXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3dpdGNoIHRvIHRoZSBwcmV2 aW91cyBzZXNzaW9uXG4iCistCQkiXHQgICAgLS1ncmFiLXNlc3Npb24tZHVtbXkgPGdyYWI+IFs8 Q3RybD48TG9nbz5Fc2NhcGVdXG4iCistCQkiXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3dpdGNoIHRvIGEgZHVtbXkgc2Vzc2lvblxuIgorIAkJIlx0ICAgIC0tZ3JhYi1zZXNz aW9uLWNsb3NlIDxncmFiPiBbPEN0cmw+PExvZ28+QmFja1NwYWNlXVxuIgorIAkJIlx0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb3NlIGN1cnJlbnQgc2Vzc2lvblxuIgorIAkJ Ilx0ICAgIC0tZ3JhYi10ZXJtaW5hbC1uZXcgPGdyYWI+ICBbPEN0cmw+PExvZ28+UmV0dXJuXVxu IgorQEAgLTY1OSw5ICs2NTcsNiBAQCBzdGF0aWMgc3RydWN0IGNvbmZfZ3JhYiBkZWZfZ3JhYl9z ZXNzaW9uX25leHQgPQorIHN0YXRpYyBzdHJ1Y3QgY29uZl9ncmFiIGRlZl9ncmFiX3Nlc3Npb25f cHJldiA9CisgCUNPTkZfU0lOR0xFX0dSQUIoU0hMX0NPTlRST0xfTUFTSyB8IFNITF9MT0dPX01B U0ssIFhLQl9LRVlfTGVmdCk7CisgCistc3RhdGljIHN0cnVjdCBjb25mX2dyYWIgZGVmX2dyYWJf c2Vzc2lvbl9kdW1teSA9CistCUNPTkZfU0lOR0xFX0dSQUIoU0hMX0NPTlRST0xfTUFTSyB8IFNI TF9MT0dPX01BU0ssIFhLQl9LRVlfRXNjYXBlKTsKKy0KKyBzdGF0aWMgc3RydWN0IGNvbmZfZ3Jh YiBkZWZfZ3JhYl9zZXNzaW9uX2Nsb3NlID0KKyAJQ09ORl9TSU5HTEVfR1JBQihTSExfQ09OVFJP TF9NQVNLIHwgU0hMX0xPR09fTUFTSywgWEtCX0tFWV9CYWNrU3BhY2UpOworIAorQEAgLTcyOCwx MSArNzIzLDEwIEBAIGludCBrbXNjb25fY29uZl9uZXcoc3RydWN0IGNvbmZfY3R4ICoqb3V0KQor IAkJLyogU2Vzc2lvbiBPcHRpb25zICovCisgCQlDT05GX09QVElPTl9VSU5UKDAsICJzZXNzaW9u LW1heCIsICZjb25mLT5zZXNzaW9uX21heCwgNTApLAorIAkJQ09ORl9PUFRJT05fQk9PTCgwLCAi c2Vzc2lvbi1jb250cm9sIiwgJmNvbmYtPnNlc3Npb25fY29udHJvbCwgZmFsc2UpLAorLQkJQ09O Rl9PUFRJT05fQk9PTCgwLCAidGVybWluYWwtc2Vzc2lvbiIsICZjb25mLT50ZXJtaW5hbF9zZXNz aW9uLCB0cnVlKSwKKyAKKyAJCS8qIFRlcm1pbmFsIE9wdGlvbnMgKi8KKyAJCUNPTkZfT1BUSU9O X0JPT0woMCwgImlzc3VlIiwgJmNvbmYtPmlzc3VlLCB0cnVlKSwKKy0JCUNPTkZfT1BUSU9OX1NU UklORygwLCAiaXNzdWUtcGF0aCIsICZjb25mLT5pc3N1ZV9wYXRoLCAiL2V0Yy9pc3N1ZTovZXRj L2lzc3VlLmQiKSwKKysJCUNPTkZfT1BUSU9OX1NUUklORygwLCAiaXNzdWUtcGF0aCIsICZjb25m LT5pc3N1ZV9wYXRoLCBJU1NVRV9ERUZBVUxUX1BBVEgpLAorIAkJQ09ORl9PUFRJT04oMCwgJ2wn LCAibG9naW4iLCAmY29uZl9sb2dpbiwgYWZ0ZXJjaGVja19sb2dpbiwgTlVMTCwgZmlsZV9sb2dp biwKKyAJCQkgICAgJmNvbmYtPmxvZ2luLCBmYWxzZSksCisgCQlDT05GX09QVElPTl9TVFJJTkco J3QnLCAidGVybSIsICZjb25mLT50ZXJtLCAia21zY29uIiksCitAQCAtNzQyLDEyICs3MzYsMTIg QEAgaW50IGttc2Nvbl9jb25mX25ldyhzdHJ1Y3QgY29uZl9jdHggKipvdXQpCisgCQlDT05GX09Q VElPTl9CT09MKDAsICJiZWxsIiwgJmNvbmYtPmJlbGwsIGZhbHNlKSwKKyAKKyAJCS8qIElucHV0 IE9wdGlvbnMgKi8KKy0JCUNPTkZfT1BUSU9OX1NUUklORygwLCAieGtiLW1vZGVsIiwgJmNvbmYt PnhrYl9tb2RlbCwgIiIpLAorLQkJQ09ORl9PUFRJT05fU1RSSU5HKDAsICJ4a2ItbGF5b3V0Iiwg JmNvbmYtPnhrYl9sYXlvdXQsICIiKSwKKy0JCUNPTkZfT1BUSU9OX1NUUklORygwLCAieGtiLXZh cmlhbnQiLCAmY29uZi0+eGtiX3ZhcmlhbnQsICIiKSwKKy0JCUNPTkZfT1BUSU9OX1NUUklORygw LCAieGtiLW9wdGlvbnMiLCAmY29uZi0+eGtiX29wdGlvbnMsICIiKSwKKy0JCUNPTkZfT1BUSU9O X1NUUklORygwLCAieGtiLWtleW1hcCIsICZjb25mLT54a2Jfa2V5bWFwLCAiIiksCistCQlDT05G X09QVElPTl9TVFJJTkcoMCwgInhrYi1jb21wb3NlLWZpbGUiLCAmY29uZi0+eGtiX2NvbXBvc2Vf ZmlsZSwgIiIpLAorKwkJQ09ORl9PUFRJT05fU1RSSU5HKDAsICJ4a2ItbW9kZWwiLCAmY29uZi0+ eGtiX21vZGVsLCBOVUxMKSwKKysJCUNPTkZfT1BUSU9OX1NUUklORygwLCAieGtiLWxheW91dCIs ICZjb25mLT54a2JfbGF5b3V0LCBOVUxMKSwKKysJCUNPTkZfT1BUSU9OX1NUUklORygwLCAieGti LXZhcmlhbnQiLCAmY29uZi0+eGtiX3ZhcmlhbnQsIE5VTEwpLAorKwkJQ09ORl9PUFRJT05fU1RS SU5HKDAsICJ4a2Itb3B0aW9ucyIsICZjb25mLT54a2Jfb3B0aW9ucywgTlVMTCksCisrCQlDT05G X09QVElPTl9TVFJJTkcoMCwgInhrYi1rZXltYXAiLCAmY29uZi0+eGtiX2tleW1hcCwgTlVMTCks CisrCQlDT05GX09QVElPTl9TVFJJTkcoMCwgInhrYi1jb21wb3NlLWZpbGUiLCAmY29uZi0+eGti X2NvbXBvc2VfZmlsZSwgTlVMTCksCisgCQlDT05GX09QVElPTl9VSU5UKDAsICJ4a2ItcmVwZWF0 LWRlbGF5IiwgJmNvbmYtPnhrYl9yZXBlYXRfZGVsYXksIDI1MCksCisgCQlDT05GX09QVElPTl9V SU5UKDAsICJ4a2ItcmVwZWF0LXJhdGUiLCAmY29uZi0+eGtiX3JlcGVhdF9yYXRlLCA1MCksCisg CQlDT05GX09QVElPTl9CT09MKDAsICJtb3VzZSIsICZjb25mLT5tb3VzZSwgdHJ1ZSksCitAQCAt NzY3LDggKzc2MSw2IEBAIGludCBrbXNjb25fY29uZl9uZXcoc3RydWN0IGNvbmZfY3R4ICoqb3V0 KQorIAkJCQkgJmRlZl9ncmFiX3Nlc3Npb25fbmV4dCksCisgCQlDT05GX09QVElPTl9HUkFCKDAs ICJncmFiLXNlc3Npb24tcHJldiIsICZjb25mLT5ncmFiX3Nlc3Npb25fcHJldiwKKyAJCQkJICZk ZWZfZ3JhYl9zZXNzaW9uX3ByZXYpLAorLQkJQ09ORl9PUFRJT05fR1JBQigwLCAiZ3JhYi1zZXNz aW9uLWR1bW15IiwgJmNvbmYtPmdyYWJfc2Vzc2lvbl9kdW1teSwKKy0JCQkJICZkZWZfZ3JhYl9z ZXNzaW9uX2R1bW15KSwKKyAJCUNPTkZfT1BUSU9OX0dSQUIoMCwgImdyYWItc2Vzc2lvbi1jbG9z ZSIsICZjb25mLT5ncmFiX3Nlc3Npb25fY2xvc2UsCisgCQkJCSAmZGVmX2dyYWJfc2Vzc2lvbl9j bG9zZSksCisgCQlDT05GX09QVElPTl9HUkFCKDAsICJncmFiLXRlcm1pbmFsLW5ldyIsICZjb25m LT5ncmFiX3Rlcm1pbmFsX25ldywKK2RpZmYgLS1naXQgYS9zcmMva21zY29uX2NvbmYuaCBiL3Ny Yy9rbXNjb25fY29uZi5oCitpbmRleCA4ZGM3YWZkLi4zNzdmOGEzIDEwMDY0NAorLS0tIGEvc3Jj L2ttc2Nvbl9jb25mLmgKKysrKyBiL3NyYy9rbXNjb25fY29uZi5oCitAQCAtNzksOCArNzksNiBA QCBzdHJ1Y3Qga21zY29uX2NvbmZfdCB7CisgCXVuc2lnbmVkIGludCBzZXNzaW9uX21heDsKKyAJ LyogYWxsb3cga2V5Ym9hcmQgc2Vzc2lvbiBjb250cm9sICovCisgCWJvb2wgc2Vzc2lvbl9jb250 cm9sOworLQkvKiBydW4gdGVybWluYWwgc2Vzc2lvbiAqLworLQlib29sIHRlcm1pbmFsX3Nlc3Np b247CisgCisgCS8qIFRlcm1pbmFsIE9wdGlvbnMgKi8KKyAJLyogZGlzcGxheSAvZXRjL2lzc3Vl IGJlZm9yZSBsb2dpbiBwcm9tcHQgKi8KK0BAIC0xNDUsOCArMTQzLDYgQEAgc3RydWN0IGttc2Nv bl9jb25mX3QgeworIAlzdHJ1Y3QgY29uZl9ncmFiICpncmFiX3Nlc3Npb25fbmV4dDsKKyAJLyog c2Vzc2lvbi1wcmV2IGdyYWIgKi8KKyAJc3RydWN0IGNvbmZfZ3JhYiAqZ3JhYl9zZXNzaW9uX3By ZXY7CistCS8qIHNlc3Npb24tZHVtbXkgZ3JhYiAqLworLQlzdHJ1Y3QgY29uZl9ncmFiICpncmFi X3Nlc3Npb25fZHVtbXk7CisgCS8qIHNlc3Npb24tY2xvc2UgZ3JhYiAqLworIAlzdHJ1Y3QgY29u Zl9ncmFiICpncmFiX3Nlc3Npb25fY2xvc2U7CisgCS8qIHRlcm1pbmFsLW5ldyBncmFiICovCitk aWZmIC0tZ2l0IGEvc3JjL2ttc2Nvbl9kdW1teS5jIGIvc3JjL2ttc2Nvbl9kdW1teS5jCitkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGZjYWZiNmMuLjAwMDAwMDAKKy0tLSBhL3NyYy9r bXNjb25fZHVtbXkuYworKysrIC9kZXYvbnVsbAorQEAgLTEsMTU0ICswLDAgQEAKKy0vKgorLSAq IGttc2NvbiAtIER1bW15IFNlc3Npb24KKy0gKgorLSAqIENvcHlyaWdodCAoYykgMjAxMiBEYXZp ZCBIZXJybWFubiA8ZGguaGVycm1hbm5AZ29vZ2xlbWFpbC5jb20+CistICoKKy0gKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcKKy0gKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzCistICogKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCistICogd2l0aG91dCBsaW1pdGF0aW9u IHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorLSAqIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0bworLSAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworLSAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK Ky0gKgorLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCistICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCistICoKKy0gKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworLSAq IE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YKKy0gKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuCistICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKy0gKiBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAor LSAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFCistICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJ TiBUSEUgU09GVFdBUkUuCistICovCistCistLyoKKy0gKiBEdW1teSBTZXNzaW9uCistICovCist CistI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxz dHJpbmcuaD4KKy0jaW5jbHVkZSAia21zY29uX2R1bW15LmgiCistI2luY2x1ZGUgImttc2Nvbl9z ZWF0LmgiCistI2luY2x1ZGUgInNobC9kbGlzdC5oIgorLSNpbmNsdWRlICJzaGwvbG9nLmgiCist I2luY2x1ZGUgInZpZGVvL3ZpZGVvLmgiCistCistI2RlZmluZSBMT0dfU1VCU1lTVEVNICJkdW1t eSIKKy0KKy1zdHJ1Y3QgZGlzcGxheSB7CistCXN0cnVjdCBzaGxfZGxpc3QgbGlzdDsKKy0Jc3Ry dWN0IGRpc3BsYXkgKmRpc3A7CistfTsKKy0KKy1zdHJ1Y3Qga21zY29uX2R1bW15IHsKKy0Jc3Ry dWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzaW9uOworLQlzdHJ1Y3Qgc2hsX2RsaXN0IGRpc3BsYXlz OworLQlib29sIGFjdGl2ZTsKKy19OworLQorLXN0YXRpYyB2b2lkIGR1bW15X3JlZHJhdyhzdHJ1 Y3Qga21zY29uX2R1bW15ICpkdW1teSwgc3RydWN0IGRpc3BsYXkgKmQpCisteworLQlkaXNwbGF5 X2NsZWFyKGQtPmRpc3AsIDAsIDAsIDApOworLQlkaXNwbGF5X3N3YXAoZC0+ZGlzcCk7CistfQor LQorLXN0YXRpYyBpbnQgZHVtbXlfc2Vzc2lvbl9ldmVudChzdHJ1Y3Qga21zY29uX3Nlc3Npb24g KnNlc3Npb24sIHN0cnVjdCBrbXNjb25fc2Vzc2lvbl9ldmVudCAqZXYsCistCQkJICAgICAgIHZv aWQgKmRhdGEpCisteworLQlzdHJ1Y3Qga21zY29uX2R1bW15ICpkdW1teSA9IGRhdGE7CistCXN0 cnVjdCBkaXNwbGF5ICpkOworLQlzdHJ1Y3Qgc2hsX2RsaXN0ICppdGVyOworLQorLQlzd2l0Y2gg KGV2LT50eXBlKSB7CistCWNhc2UgS01TQ09OX1NFU1NJT05fRElTUExBWV9ORVc6CistCQlkID0g bWFsbG9jKHNpemVvZigqZCkpOworLQkJaWYgKCFkKSB7CistCQkJbG9nX2Vycm9yKCJjYW5ub3Qg YWxsb2NhdGUgbWVtb3J5IGZvciBuZXcgZGlzcGxheSIpOworLQkJCWJyZWFrOworLQkJfQorLQkJ bWVtc2V0KGQsIDAsIHNpemVvZigqZCkpOworLQkJZC0+ZGlzcCA9IGV2LT5kaXNwOworLQkJc2hs X2RsaXN0X2xpbmtfdGFpbCgmZHVtbXktPmRpc3BsYXlzLCAmZC0+bGlzdCk7CistCQlpZiAoZHVt bXktPmFjdGl2ZSkKKy0JCQlkdW1teV9yZWRyYXcoZHVtbXksIGQpOworLQkJYnJlYWs7CistCWNh c2UgS01TQ09OX1NFU1NJT05fRElTUExBWV9HT05FOgorLQkJc2hsX2RsaXN0X2Zvcl9lYWNoKGl0 ZXIsICZkdW1teS0+ZGlzcGxheXMpCistCQl7CistCQkJZCA9IHNobF9kbGlzdF9lbnRyeShpdGVy LCBzdHJ1Y3QgZGlzcGxheSwgbGlzdCk7CistCQkJaWYgKGQtPmRpc3AgIT0gZXYtPmRpc3ApCist CQkJCWNvbnRpbnVlOworLQorLQkJCXNobF9kbGlzdF91bmxpbmsoJmQtPmxpc3QpOworLQkJCWZy ZWUoZCk7CistCQkJYnJlYWs7CistCQl9CistCQlicmVhazsKKy0JY2FzZSBLTVNDT05fU0VTU0lP Tl9ESVNQTEFZX1JFRlJFU0g6CistCQlzaGxfZGxpc3RfZm9yX2VhY2goaXRlciwgJmR1bW15LT5k aXNwbGF5cykKKy0JCXsKKy0JCQlkID0gc2hsX2RsaXN0X2VudHJ5KGl0ZXIsIHN0cnVjdCBkaXNw bGF5LCBsaXN0KTsKKy0JCQlpZiAoZC0+ZGlzcCAhPSBldi0+ZGlzcCkKKy0JCQkJY29udGludWU7 CistCistCQkJaWYgKGR1bW15LT5hY3RpdmUpCistCQkJCWR1bW15X3JlZHJhdyhkdW1teSwgZCk7 CistCQkJYnJlYWs7CistCQl9CistCQlicmVhazsKKy0JY2FzZSBLTVNDT05fU0VTU0lPTl9BQ1RJ VkFURToKKy0JCWR1bW15LT5hY3RpdmUgPSB0cnVlOworLQkJc2hsX2RsaXN0X2Zvcl9lYWNoKGl0 ZXIsICZkdW1teS0+ZGlzcGxheXMpCistCQl7CistCQkJZCA9IHNobF9kbGlzdF9lbnRyeShpdGVy LCBzdHJ1Y3QgZGlzcGxheSwgbGlzdCk7CistCQkJZHVtbXlfcmVkcmF3KGR1bW15LCBkKTsKKy0J CX0KKy0JCWJyZWFrOworLQljYXNlIEtNU0NPTl9TRVNTSU9OX0RFQUNUSVZBVEU6CistCQlkdW1t eS0+YWN0aXZlID0gZmFsc2U7CistCQlicmVhazsKKy0JY2FzZSBLTVNDT05fU0VTU0lPTl9VTlJF R0lTVEVSOgorLQkJd2hpbGUgKCFzaGxfZGxpc3RfZW1wdHkoJmR1bW15LT5kaXNwbGF5cykpIHsK Ky0JCQlkID0gc2hsX2RsaXN0X2VudHJ5KGR1bW15LT5kaXNwbGF5cy5wcmV2LCBzdHJ1Y3QgZGlz cGxheSwgbGlzdCk7CistCQkJc2hsX2RsaXN0X3VubGluaygmZC0+bGlzdCk7CistCQkJZnJlZShk KTsKKy0JCX0KKy0KKy0JCWZyZWUoZHVtbXkpOworLQkJYnJlYWs7CistCX0KKy0KKy0JcmV0dXJu IDA7CistfQorLQorLWludCBrbXNjb25fZHVtbXlfcmVnaXN0ZXIoc3RydWN0IGttc2Nvbl9zZXNz aW9uICoqb3V0LCBzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCisteworLQlzdHJ1Y3Qga21zY29u X2R1bW15ICpkdW1teTsKKy0JaW50IHJldDsKKy0KKy0JaWYgKCFvdXQgfHwgIXNlYXQpCistCQly ZXR1cm4gLUVJTlZBTDsKKy0KKy0JZHVtbXkgPSBtYWxsb2Moc2l6ZW9mKCpkdW1teSkpOworLQlp ZiAoIWR1bW15KQorLQkJcmV0dXJuIC1FTk9NRU07CistCW1lbXNldChkdW1teSwgMCwgc2l6ZW9m KCpkdW1teSkpOworLQlzaGxfZGxpc3RfaW5pdCgmZHVtbXktPmRpc3BsYXlzKTsKKy0KKy0JcmV0 ID0ga21zY29uX3NlYXRfcmVnaXN0ZXJfc2Vzc2lvbihzZWF0LCAmZHVtbXktPnNlc3Npb24sIGR1 bW15X3Nlc3Npb25fZXZlbnQsIGR1bW15KTsKKy0JaWYgKHJldCkgeworLQkJbG9nX2Vycm9yKCJj YW5ub3QgcmVnaXN0ZXIgc2Vzc2lvbiBmb3IgZHVtbXk6ICVkIiwgcmV0KTsKKy0JCWdvdG8gZXJy X2ZyZWU7CistCX0KKy0KKy0JKm91dCA9IGR1bW15LT5zZXNzaW9uOworLQlsb2dfZGVidWcoIm5l dyBkdW1teSBvYmplY3QgJXAiLCBkdW1teSk7CistCXJldHVybiAwOworLQorLWVycl9mcmVlOgor LQlmcmVlKGR1bW15KTsKKy0JcmV0dXJuIHJldDsKKy19CitkaWZmIC0tZ2l0IGEvc3JjL2ttc2Nv bl9pc3N1ZS5jIGIvc3JjL2ttc2Nvbl9pc3N1ZS5jCitpbmRleCAzODQ2Zjg5Li5iZmZiNzkyIDEw MDY0NAorLS0tIGEvc3JjL2ttc2Nvbl9pc3N1ZS5jCisrKysgYi9zcmMva21zY29uX2lzc3VlLmMK K0BAIC0zNiwxNiArMzYsNiBAQAorIC8qIENhcCB0b3RhbCBjb2xsZWN0ZWQgaXNzdWUgdGV4dCB0 byBwcmV2ZW50IHJ1bmF3YXkgYWxsb2NhdGlvbi4gKi8KKyAjZGVmaW5lIElTU1VFX01BWF9TSVpF ICgyNTZ1ICogMTAyNHUpCisgCistLyoKKy0gKiBEZWZhdWx0IHNlYXJjaCBwYXRoLCBtYXRjaGlu ZyBhZ2V0dHkncyBkZWZhdWx0OgorLSAqICAgL2V0Yy9pc3N1ZTovZXRjL2lzc3VlLmQKKy0gKgor LSAqIERpc3Ryb3MgY2FuIG92ZXJyaWRlIHRoaXMgd2l0aCAtLWlzc3VlLXBhdGggb3IgdGhlIGlz c3VlLXBhdGggY29uZmlnCistICogb3B0aW9uIHVzaW5nIGEgY29sb24tc2VwYXJhdGVkIGxpc3Qu ICBQbGFpbiBmaWxlcyBhcmUgcmVhZCBkaXJlY3RseTsKKy0gKiBkaXJlY3RvcmllcyBhcmUgc2Nh bm5lZCBmb3IgKi5pc3N1ZSBmaWxlcyBpbiBsZXhpY29ncmFwaGljIG9yZGVyLgorLSAqLworLSNk ZWZpbmUgSVNTVUVfREVGQVVMVF9QQVRIICIvZXRjL2lzc3VlOi9ldGMvaXNzdWUuZCIKKy0KKyAv KiBDb2xvciBlc2NhcGUgY29kZXMgKi8KKyAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgI2RlZmluZSBV TF9DT0xPUl9SRVNFVAkJIlswbSIKK2RpZmYgLS1naXQgYS9zcmMva21zY29uX2lzc3VlLmggYi9z cmMva21zY29uX2lzc3VlLmgKK2luZGV4IGY3NDM4MmEuLjg5MDBjOTUgMTAwNjQ0CistLS0gYS9z cmMva21zY29uX2lzc3VlLmgKKysrKyBiL3NyYy9rbXNjb25faXNzdWUuaAorQEAgLTI5LDYgKzI5 LDE1IEBACisgI2luY2x1ZGUgPGxpYnRzbS5oPgorICNpbmNsdWRlICJwdHkuaCIKKyAKKysvKgor KyAqIERlZmF1bHQgc2VhcmNoIHBhdGgsIG1hdGNoaW5nIGFnZXR0eSdzIGRlZmF1bHQuCisrICoK KysgKiBEaXN0cm9zIGNhbiBvdmVycmlkZSB0aGlzIHdpdGggLS1pc3N1ZS1wYXRoIG9yIHRoZSBp c3N1ZS1wYXRoIGNvbmZpZworKyAqIG9wdGlvbiB1c2luZyBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0 LiAgUGxhaW4gZmlsZXMgYXJlIHJlYWQgZGlyZWN0bHk7CisrICogZGlyZWN0b3JpZXMgYXJlIHNj YW5uZWQgZm9yICouaXNzdWUgZmlsZXMgaW4gbGV4aWNvZ3JhcGhpYyBvcmRlci4KKysgKi8KKysj ZGVmaW5lIElTU1VFX0RFRkFVTFRfUEFUSCAiL2V0Yy9pc3N1ZTovZXRjL2lzc3VlLmQiCisrCisg dm9pZCBrbXNjb25faXNzdWVfd3JpdGUoc3RydWN0IHRzbV92dGUgKnZ0ZSwgc3RydWN0IGttc2Nv bl9wdHkgKnB0eSwgY29uc3QgY2hhciAqc2VhcmNoX3BhdGgpOworIAorICNlbmRpZiAvKiBLTVND T05fSVNTVUVfSCAqLworZGlmZiAtLWdpdCBhL3NyYy9rbXNjb25fbWFpbi5jIGIvc3JjL2ttc2Nv bl9tYWluLmMKK2luZGV4IDZmYjU3YTguLjgxMzQzZjQgMTAwNjQ0CistLS0gYS9zcmMva21zY29u X21haW4uYworKysrIGIvc3JjL2ttc2Nvbl9tYWluLmMKK0BAIC0zMSw2ICszMSw3IEBACisgI2lu Y2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzeXMvc2lnbmFsZmQuaD4KKyAjaW5jbHVkZSAi Y29uZi5oIgorKyNpbmNsdWRlICJkYnVzLmgiCisgI2luY2x1ZGUgImttc2Nvbl9jb25mLmgiCisg I2luY2x1ZGUgImttc2Nvbl9zZWF0LmgiCisgI2luY2x1ZGUgInJlbmRlci90ZXh0LmgiCitAQCAt MzksNiArNDAsOCBAQAorICNpbmNsdWRlICJzaGwvbW9kdWxlLmgiCisgI2luY2x1ZGUgInZpZGVv L3ZpZGVvLmgiCisgCisrI2RlZmluZSBMT0dfU1VCU1lTVEVNICJrbXNjb24iCisrCisgc3RydWN0 IGttc2Nvbl9hcHAgeworIAlzdHJ1Y3QgY29uZl9jdHggKmNvbmZfY3R4OworIAlzdHJ1Y3Qga21z Y29uX2NvbmZfdCAqY29uZjsKK0BAIC00OSw2ICs1Miw3IEBAIHN0cnVjdCBrbXNjb25fYXBwIHsK KyAJc3RydWN0IGNvbmZfY3R4ICpzZWF0X2N0eDsKKyAJc3RydWN0IGttc2Nvbl9jb25mX3QgKnNl YXRfY29uZjsKKyAJc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0OworKwlzdHJ1Y3Qga21zY29uX2Ri dXMgKmRidXM7CisgfTsKKyAKKyBzdGF0aWMgaW50IGFwcF9zZWF0X2V2ZW50KHN0cnVjdCBrbXNj b25fc2VhdCAqcywgdW5zaWduZWQgaW50IGV2ZW50LCB2b2lkICpkYXRhKQorQEAgLTExMiw2ICsx MTYsMzAgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9hcHAoc3RydWN0IGttc2Nvbl9hcHAgKmFwcCkK KyAJZXZfZWxvb3BfdW5yZWdpc3Rlcl9zaWduYWxfY2IoYXBwLT5lbG9vcCwgU0lHSU5ULCBhcHBf c2lnX2dlbmVyaWMsIGFwcCk7CisgCWV2X2Vsb29wX3VucmVnaXN0ZXJfc2lnbmFsX2NiKGFwcC0+ ZWxvb3AsIFNJR1RFUk0sIGFwcF9zaWdfZ2VuZXJpYywgYXBwKTsKKyAJZXZfZWxvb3BfdW5yZWYo YXBwLT5lbG9vcCk7CisrCWttc2Nvbl9kYnVzX2ZyZWUoYXBwLT5kYnVzKTsKKyt9CisrCisrc3Rh dGljIHZvaWQgdXBkYXRlX3hrYl9sYXlvdXQoY29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIg KmxheW91dCwgY29uc3QgY2hhciAqdmFyaWFudCwKKysJCQkgICAgICBjb25zdCBjaGFyICpvcHRp b25zLCB2b2lkICpkYXRhKQorK3sKKysJc3RydWN0IGttc2Nvbl9hcHAgKmFwcCA9IGRhdGE7Cisr CisrCWxvZ19kZWJ1ZygidXBkYXRpbmcgeGtiIGxheW91dDogJXMsICVzLCAlcywgJXMiLCBtb2Rl bCwgbGF5b3V0LCB2YXJpYW50LCBvcHRpb25zKTsKKysJaWYgKGttc2Nvbl9zZWF0X3VwZGF0ZV94 a2JfbGF5b3V0KGFwcC0+c2VhdCwgbW9kZWwsIGxheW91dCwgdmFyaWFudCwgb3B0aW9ucykpCisr CQlsb2dfZXJyb3IoImNhbm5vdCB1cGRhdGUgeGtiIGxheW91dCIpOworK30KKysKKytzdGF0aWMg dm9pZCBsaXN0ZW5fdG9fZGJ1c19sb2NhbGUxKHN0cnVjdCBrbXNjb25fYXBwICphcHApCisrewor KwlpbnQgcmV0OworKworKwlpZiAoYXBwLT5jb25mLT54a2Jfa2V5bWFwIHx8IGFwcC0+Y29uZi0+ eGtiX21vZGVsIHx8IGFwcC0+Y29uZi0+eGtiX2xheW91dCB8fAorKwkgICAgYXBwLT5jb25mLT54 a2JfdmFyaWFudCB8fCBhcHAtPmNvbmYtPnhrYl9vcHRpb25zKQorKwkJcmV0dXJuOworKworKwly ZXQgPSBrbXNjb25fZGJ1c19saXN0ZW5fbG9jYWxlMShhcHAtPmRidXMsIHVwZGF0ZV94a2JfbGF5 b3V0LCBhcHApOworKwlpZiAocmV0KQorKwkJbG9nX3dhcm5pbmcoImNhbm5vdCBsaXN0ZW4gdG8g bG9jYWxlMTogJWQiLCByZXQpOworIH0KKyAKKyBzdGF0aWMgaW50IHNldHVwX2FwcChzdHJ1Y3Qg a21zY29uX2FwcCAqYXBwKQorQEAgLTE0Miw2ICsxNzAsMTEgQEAgc3RhdGljIGludCBzZXR1cF9h cHAoc3RydWN0IGttc2Nvbl9hcHAgKmFwcCkKKyAJCWdvdG8gZXJyX2FwcDsKKyAJfQorIAorKwlh cHAtPmRidXMgPSBrbXNjb25fZGJ1c19uZXcoYXBwLT5lbG9vcCk7CisrCWlmIChhcHAtPmRidXMp IHsKKysJCWttc2Nvbl9kYnVzX3NldF94a2JfZW52X2Zyb21fbG9jYWxlMShhcHAtPmRidXMpOwor KwkJbGlzdGVuX3RvX2RidXNfbG9jYWxlMShhcHApOworKwl9CisgCXJldHVybiAwOworIAorIGVy cl9hcHA6CitkaWZmIC0tZ2l0IGEvc3JjL2ttc2Nvbl9zZWF0LmMgYi9zcmMva21zY29uX3NlYXQu YworaW5kZXggN2I2NzU5YS4uOTFiOGRiOCAxMDA2NDQKKy0tLSBhL3NyYy9rbXNjb25fc2VhdC5j CisrKysgYi9zcmMva21zY29uX3NlYXQuYworQEAgLTM5LDcgKzM5LDYgQEAKKyAjaW5jbHVkZSAi Y29uZi5oIgorICNpbmNsdWRlICJpbnB1dC9pbnB1dC5oIgorICNpbmNsdWRlICJrbXNjb25fY29u Zi5oIgorLSNpbmNsdWRlICJrbXNjb25fZHVtbXkuaCIKKyAjaW5jbHVkZSAia21zY29uX3NlYXQu aCIKKyAjaW5jbHVkZSAia21zY29uX3Rlcm1pbmFsLmgiCisgI2luY2x1ZGUgInNobC9kbGlzdC5o IgorQEAgLTUzLDE3ICs1MiwxMiBAQAorIAorIHN0cnVjdCBrbXNjb25fc2Vzc2lvbiB7CisgCXN0 cnVjdCBzaGxfZGxpc3QgbGlzdDsKKy0JdW5zaWduZWQgbG9uZyByZWY7CisgCXN0cnVjdCBrbXNj b25fc2VhdCAqc2VhdDsKKyAKKy0JYm9vbCBlbmFibGVkOworIAlib29sIGZvcmVncm91bmQ7Cist CWJvb2wgZGVhY3RpdmF0aW5nOworIAorIAlzdHJ1Y3QgZXZfdGltZXIgKnRpbWVyOworLQorLQlr bXNjb25fc2Vzc2lvbl9jYl90IGNiOworLQl2b2lkICpkYXRhOworKwlzdHJ1Y3Qga21zY29uX3Rl cm1pbmFsICp0ZXJtOworIH07CisgCisgc3RydWN0IGttc2Nvbl9kaXNwbGF5IHsKK0BAIC04NSwx MiArNzksNiBAQCBzdHJ1Y3Qga21zY29uX3ZpZGVvIHsKKyAJYm9vbCBhd2FrZTsKKyB9OworIAor LWVudW0ga21zY29uX2FzeW5jX3NjaGVkdWxlIHsKKy0JU0NIRURVTEVfU1dJVENILAorLQlTQ0hF RFVMRV9WVCwKKy0JU0NIRURVTEVfVU5SRUdJU1RFUiwKKy19OworLQorIHN0cnVjdCBrbXNjb25f c2VhdCB7CisgCXN0cnVjdCBldl9lbG9vcCAqZWxvb3A7CisgCXN0cnVjdCBjb25mX2N0eCAqY29u Zl9jdHg7CitAQCAtMTEwLDEwICs5OCw2IEBAIHN0cnVjdCBrbXNjb25fc2VhdCB7CisgCWJvb2wg YXdha2U7CisgCWJvb2wgZm9yZWdyb3VuZDsKKyAJc3RydWN0IGttc2Nvbl9zZXNzaW9uICpjdXJy ZW50X3Nlc3M7CistCXN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2NoZWR1bGVkX3Nlc3M7CistCXN0 cnVjdCBrbXNjb25fc2Vzc2lvbiAqZHVtbXlfc2VzczsKKy0KKy0JdW5zaWduZWQgaW50IGFzeW5j X3NjaGVkdWxlOworIAorIAkvKiBEUE1TIHRpbWVvdXQgbWFuYWdlbWVudCAqLworIAlzdHJ1Y3Qg ZXZfdGltZXIgKmRwbXNfdGltZXI7CitAQCAtMTMzLDQ4ICsxMTcsMTAgQEAgc3RhdGljIGludCBr bXNjb25fc2VhdF9hZGRfdmlkZW8oc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LCBlbnVtIHV0ZXJt X21vbml0b3JfZGUKKyBzdGF0aWMgdm9pZCBrbXNjb25fc2VhdF9yZW1vdmVfdmlkZW8oc3RydWN0 IGttc2Nvbl9zZWF0ICpzZWF0LCB2b2lkICpkYXRhKTsKKyBzdGF0aWMgdm9pZCBrbXNjb25fc2Vh dF9wb2xsX3ZpZGVvKHZvaWQgKmRhdGEpOworIAorLXN0YXRpYyBpbnQgc2Vzc2lvbl9jYWxsKHN0 cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcywgdW5zaWduZWQgaW50IGV2ZW50LCBzdHJ1Y3QgZGlz cGxheSAqZGlzcCkKKy17CistCXN0cnVjdCBrbXNjb25fc2Vzc2lvbl9ldmVudCBldjsKKy0KKy0J aWYgKCFzZXNzLT5jYikKKy0JCXJldHVybiAwOworLQorLQltZW1zZXQoJmV2LCAwLCBzaXplb2Yo ZXYpKTsKKy0JZXYudHlwZSA9IGV2ZW50OworLQlldi5kaXNwID0gZGlzcDsKKy0JcmV0dXJuIHNl c3MtPmNiKHNlc3MsICZldiwgc2Vzcy0+ZGF0YSk7CistfQorLQorLXN0YXRpYyBpbnQgc2Vzc2lv bl9jYWxsX2FjdGl2YXRlKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcykKKy17CistCWxvZ19k ZWJ1ZygiYWN0aXZhdGUgc2Vzc2lvbiAlcCIsIHNlc3MpOworLQlyZXR1cm4gc2Vzc2lvbl9jYWxs KHNlc3MsIEtNU0NPTl9TRVNTSU9OX0FDVElWQVRFLCBOVUxMKTsKKy19CistCistc3RhdGljIGlu dCBzZXNzaW9uX2NhbGxfZGVhY3RpdmF0ZShzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCist eworLQlsb2dfZGVidWcoImRlYWN0aXZhdGUgc2Vzc2lvbiAlcCIsIHNlc3MpOworLQlyZXR1cm4g c2Vzc2lvbl9jYWxsKHNlc3MsIEtNU0NPTl9TRVNTSU9OX0RFQUNUSVZBVEUsIE5VTEwpOworLX0K Ky0KKy1zdGF0aWMgdm9pZCBzZXNzaW9uX2NhbGxfZGlzcGxheV9uZXcoc3RydWN0IGttc2Nvbl9z ZXNzaW9uICpzZXNzLCBzdHJ1Y3QgZGlzcGxheSAqZGlzcCkKKy17CistCXNlc3Npb25fY2FsbChz ZXNzLCBLTVNDT05fU0VTU0lPTl9ESVNQTEFZX05FVywgZGlzcCk7CistfQorLQorLXN0YXRpYyB2 b2lkIHNlc3Npb25fY2FsbF9kaXNwbGF5X2dvbmUoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNz LCBzdHJ1Y3QgZGlzcGxheSAqZGlzcCkKKy17CistCXNlc3Npb25fY2FsbChzZXNzLCBLTVNDT05f U0VTU0lPTl9ESVNQTEFZX0dPTkUsIGRpc3ApOworLX0KKy0KKy1zdGF0aWMgdm9pZCBzZXNzaW9u X2NhbGxfZGlzcGxheV9yZWZyZXNoKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcywgc3RydWN0 IGRpc3BsYXkgKmRpc3ApCisteworLQlzZXNzaW9uX2NhbGwoc2VzcywgS01TQ09OX1NFU1NJT05f RElTUExBWV9SRUZSRVNILCBkaXNwKTsKKy19CistCisgLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAq LworIHN0YXRpYyB2b2lkIHNlYXRfZHBtc19yZXNldF90aW1lcihzdHJ1Y3Qga21zY29uX3NlYXQg KnNlYXQpOworK3N0YXRpYyBzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKmttc2Nvbl9zZWF0X25ld19z ZXNzaW9uKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCk7Cisrc3RhdGljIHZvaWQga21zY29uX3Nl c3Npb25fdW5yZWdpc3RlcihzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpOworIAorIHN0YXRp YyB2b2lkIGFjdGl2YXRlX2Rpc3BsYXkoc3RydWN0IGttc2Nvbl9kaXNwbGF5ICpkKQorIHsKK0BA IC0yMDMsMTIgKzE0OSwxMiBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZV9kaXNwbGF5KHN0cnVjdCBr bXNjb25fZGlzcGxheSAqZCkKKyAJCXNobF9kbGlzdF9mb3JfZWFjaF9zYWZlKGl0ZXIsIHRtcCwg JnNlYXQtPnNlc3Npb25zKQorIAkJeworIAkJCXMgPSBzaGxfZGxpc3RfZW50cnkoaXRlciwgc3Ry dWN0IGttc2Nvbl9zZXNzaW9uLCBsaXN0KTsKKy0JCQlzZXNzaW9uX2NhbGxfZGlzcGxheV9uZXco cywgZC0+ZGlzcCk7CisrCQkJdGVybWluYWxfYWRkX2Rpc3BsYXkocy0+dGVybSwgZC0+ZGlzcCk7 CisgCQl9CisgCX0KKyB9CisgCistc3RhdGljIGludCBzZWF0X2dvX2ZvcmVncm91bmQoc3RydWN0 IGttc2Nvbl9zZWF0ICpzZWF0LCBib29sIGZvcmNlKQorK3N0YXRpYyBpbnQgc2VhdF9nb19mb3Jl Z3JvdW5kKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKKyB7CisgCXN0cnVjdCBzaGxfZGxpc3Qg Kml0ZXIsICp0bXA7CisgCXN0cnVjdCBrbXNjb25fdmlkZW8gKnZpZDsKK0BAIC0yMTcsNyArMTYz LDcgQEAgc3RhdGljIGludCBzZWF0X2dvX2ZvcmVncm91bmQoc3RydWN0IGttc2Nvbl9zZWF0ICpz ZWF0LCBib29sIGZvcmNlKQorIAorIAlpZiAoc2VhdC0+Zm9yZWdyb3VuZCkKKyAJCXJldHVybiAw OworLQlpZiAoIXNlYXQtPmF3YWtlIHx8ICghZm9yY2UgJiYgc2VhdC0+Y3VycmVudF9zZXNzKSkK KysJaWYgKCFzZWF0LT5hd2FrZSkKKyAJCXJldHVybiAtRUJVU1k7CisgCisgCXNlYXQtPmZvcmVn cm91bmQgPSB0cnVlOworQEAgLTI1MSwxNCArMTk3LDE0IEBAIHN0YXRpYyBpbnQgc2VhdF9nb19m b3JlZ3JvdW5kKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgYm9vbCBmb3JjZSkKKyAJcmV0dXJu IDA7CisgfQorIAorLXN0YXRpYyBpbnQgc2VhdF9nb19iYWNrZ3JvdW5kKHN0cnVjdCBrbXNjb25f c2VhdCAqc2VhdCwgYm9vbCBmb3JjZSkKKytzdGF0aWMgaW50IHNlYXRfZ29fYmFja2dyb3VuZChz dHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCisgeworIAlzdHJ1Y3Qgc2hsX2RsaXN0ICppdGVyOwor IAlzdHJ1Y3Qga21zY29uX3ZpZGVvICp2aWQ7CisgCisgCWlmICghc2VhdC0+Zm9yZWdyb3VuZCkK KyAJCXJldHVybiAwOworLQlpZiAoIXNlYXQtPmF3YWtlIHx8ICghZm9yY2UgJiYgc2VhdC0+Y3Vy cmVudF9zZXNzKSkKKysJaWYgKCFzZWF0LT5hd2FrZSkKKyAJCXJldHVybiAtRUJVU1k7CisgCisg CXNobF9kbGlzdF9mb3JfZWFjaChpdGVyLCAmc2VhdC0+dmlkZW9zKQorQEAgLTI3MSwyNSArMjE3 LDE1IEBAIHN0YXRpYyBpbnQgc2VhdF9nb19iYWNrZ3JvdW5kKHN0cnVjdCBrbXNjb25fc2VhdCAq c2VhdCwgYm9vbCBmb3JjZSkKKyAJcmV0dXJuIDA7CisgfQorIAorLXN0YXRpYyBpbnQgc2VhdF9n b19hc2xlZXAoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LCBib29sIGZvcmNlKQorK3N0YXRpYyBp bnQgc2VhdF9nb19hc2xlZXAoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQorIHsKKy0JaW50IGVy ciA9IDA7CistCisgCWlmICghc2VhdC0+YXdha2UpCisgCQlyZXR1cm4gMDsKKy0JaWYgKHNlYXQt PmN1cnJlbnRfc2VzcyB8fCBzZWF0LT5mb3JlZ3JvdW5kKSB7CistCQlpZiAoZm9yY2UpIHsKKy0J CQlzZWF0LT5mb3JlZ3JvdW5kID0gZmFsc2U7CistCQkJc2VhdC0+Y3VycmVudF9zZXNzID0gTlVM TDsKKy0JCQllcnIgPSAtRUJVU1k7CistCQl9IGVsc2UgeworLQkJCXJldHVybiAtRUJVU1k7Cist CQl9CistCX0KKysKKyAJc2VhdC0+YXdha2UgPSBmYWxzZTsKKyAJaW5wdXRfc2xlZXAoc2VhdC0+ aW5wdXQpOworIAorLQlyZXR1cm4gZXJyOworKwlyZXR1cm4gMDsKKyB9CisgCisgc3RhdGljIGlu dCBzZWF0X2dvX2F3YWtlKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKK0BAIC0zMTMsMTk2ICsy NDksNTIgQEAgc3RhdGljIGludCBzZWF0X2dvX2F3YWtlKHN0cnVjdCBrbXNjb25fc2VhdCAqc2Vh dCkKKyAJcmV0dXJuIDA7CisgfQorIAorLXN0YXRpYyBpbnQgc2VhdF9ydW4oc3RydWN0IGttc2Nv bl9zZWF0ICpzZWF0KQorK3N0YXRpYyB2b2lkIHNlYXRfc3dpdGNoKHN0cnVjdCBrbXNjb25fc2Vh dCAqc2VhdCwgc3RydWN0IGttc2Nvbl9zZXNzaW9uICpuZXcpCisgeworLQlpbnQgcmV0OworLQlz dHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3Npb247CistCistCWlmICghc2VhdC0+YXdha2UpCist CQlyZXR1cm4gLUVCVVNZOworLQlpZiAoc2VhdC0+Y3VycmVudF9zZXNzKQorLQkJcmV0dXJuIDA7 CistCistCWlmICghc2VhdC0+c2NoZWR1bGVkX3Nlc3MpIHsKKy0JCWxvZ19kZWJ1Zygibm8gc2Vz c2lvbiBzY2hlZHVsZWQgdG8gcnVuIChudW0gJXp1KSIsIHNlYXQtPnNlc3Npb25fY291bnQpOwor LQkJcmV0dXJuIC1FTk9FTlQ7CistCX0KKy0Jc2Vzc2lvbiA9IHNlYXQtPnNjaGVkdWxlZF9zZXNz OworLQorLQlpZiAoc2Vzc2lvbi0+Zm9yZWdyb3VuZCAmJiAhc2VhdC0+Zm9yZWdyb3VuZCkgewor LQkJcmV0ID0gc2VhdF9nb19mb3JlZ3JvdW5kKHNlYXQsIGZhbHNlKTsKKy0JCWlmIChyZXQpIHsK Ky0JCQlsb2dfd2FybmluZygiY2Fubm90IHB1dCBzZWF0ICVzIGludG8gZm9yZWdyb3VuZCBmb3Ig c2Vzc2lvbiAlcCIsIHNlYXQtPm5hbWUsCistCQkJCSAgICBzZXNzaW9uKTsKKy0JCQlyZXR1cm4g cmV0OworLQkJfQorLQl9IGVsc2UgaWYgKCFzZXNzaW9uLT5mb3JlZ3JvdW5kICYmIHNlYXQtPmZv cmVncm91bmQpIHsKKy0JCXJldCA9IHNlYXRfZ29fYmFja2dyb3VuZChzZWF0LCBmYWxzZSk7Cist CQlpZiAocmV0KSB7CistCQkJbG9nX3dhcm5pbmcoImNhbm5vdCBwdXQgc2VhdCAlcyBpbnRvIGJh Y2tncm91bmQgZm9yIHNlc3Npb24gJXAiLCBzZWF0LT5uYW1lLAorLQkJCQkgICAgc2Vzc2lvbik7 CistCQkJcmV0dXJuIHJldDsKKy0JCX0KKy0JfQorLQorLQlyZXQgPSBzZXNzaW9uX2NhbGxfYWN0 aXZhdGUoc2Vzc2lvbik7CistCWlmIChyZXQpIHsKKy0JCWxvZ193YXJuaW5nKCJjYW5ub3QgYWN0 aXZhdGUgc2Vzc2lvbiAlcDogJWQiLCBzZXNzaW9uLCByZXQpOworLQkJcmV0dXJuIHJldDsKKy0J fQorLQorLQlzZWF0LT5jdXJyZW50X3Nlc3MgPSBzZXNzaW9uOworLQorLQlyZXR1cm4gMDsKKy19 CistCistc3RhdGljIHZvaWQgc2Vzc2lvbl9kZWFjdGl2YXRlKHN0cnVjdCBrbXNjb25fc2Vzc2lv biAqc2VzcykKKy17CistCWlmIChzZXNzLT5zZWF0LT5jdXJyZW50X3Nlc3MgIT0gc2VzcykKKysJ aWYgKHNlYXQtPmN1cnJlbnRfc2VzcyA9PSBuZXcpCisgCQlyZXR1cm47CisgCistCXNlc3MtPnNl YXQtPmFzeW5jX3NjaGVkdWxlID0gU0NIRURVTEVfU1dJVENIOworLQlzZXNzLT5kZWFjdGl2YXRp bmcgPSBmYWxzZTsKKy0Jc2Vzcy0+c2VhdC0+Y3VycmVudF9zZXNzID0gTlVMTDsKKy19CistCist c3RhdGljIGludCBzZWF0X3BhdXNlKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgYm9vbCBmb3Jj ZSkKKy17CistCWludCByZXQ7CistCistCWlmICghc2VhdC0+Y3VycmVudF9zZXNzKQorLQkJcmV0 dXJuIDA7CistCistCXNlYXQtPmN1cnJlbnRfc2Vzcy0+ZGVhY3RpdmF0aW5nID0gdHJ1ZTsKKy0J cmV0ID0gc2Vzc2lvbl9jYWxsX2RlYWN0aXZhdGUoc2VhdC0+Y3VycmVudF9zZXNzKTsKKy0JaWYg KHJldCkgeworLQkJaWYgKHJldCA9PSAtRUlOUFJPR1JFU1MpCistCQkJbG9nX2RlYnVnKCJwZW5k aW5nIGRlYWN0aXZhdGlvbiBmb3Igc2Vzc2lvbiAlcCIsIHNlYXQtPmN1cnJlbnRfc2Vzcyk7Cist CQllbHNlCistCQkJbG9nX3dhcm5pbmcoImNhbm5vdCBkZWFjdGl2YXRlIHNlc3Npb24gJXA6ICVk Iiwgc2VhdC0+Y3VycmVudF9zZXNzLCByZXQpOworLQkJaWYgKCFmb3JjZSkKKy0JCQlyZXR1cm4g cmV0OworLQl9CistCistCXNlc3Npb25fZGVhY3RpdmF0ZShzZWF0LT5jdXJyZW50X3Nlc3MpOwor LQorLQlyZXR1cm4gcmV0OworLX0KKy0KKy1zdGF0aWMgdm9pZCBzZWF0X3Jlc2NoZWR1bGUoc3Ry dWN0IGttc2Nvbl9zZWF0ICpzZWF0KQorLXsKKy0Jc3RydWN0IHNobF9kbGlzdCAqaXRlciwgKnN0 YXJ0OworLQlzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3M7CistCistCWlmIChzZWF0LT5zY2hl ZHVsZWRfc2VzcyAmJiBzZWF0LT5zY2hlZHVsZWRfc2Vzcy0+ZW5hYmxlZCkKKy0JCXJldHVybjsK Ky0KKy0JaWYgKHNlYXQtPmN1cnJlbnRfc2VzcyAmJiBzZWF0LT5jdXJyZW50X3Nlc3MtPmVuYWJs ZWQpIHsKKy0JCXNlYXQtPnNjaGVkdWxlZF9zZXNzID0gc2VhdC0+Y3VycmVudF9zZXNzOworLQkJ cmV0dXJuOworLQl9CisrCWxvZ19kZWJ1Zygic3dpdGNoIHNlc3Npb24gZnJvbSAlcCB0byAlcCBv biBzZWF0ICVzIiwgc2VhdC0+Y3VycmVudF9zZXNzLCBuZXcsIHNlYXQtPm5hbWUpOworIAorIAlp ZiAoc2VhdC0+Y3VycmVudF9zZXNzKQorLQkJc3RhcnQgPSAmc2VhdC0+Y3VycmVudF9zZXNzLT5s aXN0OworLQllbHNlCistCQlzdGFydCA9ICZzZWF0LT5zZXNzaW9uczsKKy0KKy0Jc2hsX2RsaXN0 X2Zvcl9lYWNoX2J1dF9vbmUoaXRlciwgc3RhcnQsICZzZWF0LT5zZXNzaW9ucykKKy0JeworLQkJ c2VzcyA9IHNobF9kbGlzdF9lbnRyeShpdGVyLCBzdHJ1Y3Qga21zY29uX3Nlc3Npb24sIGxpc3Qp OworLQkJaWYgKHNlc3MgPT0gc2VhdC0+ZHVtbXlfc2VzcyB8fCAhc2Vzcy0+ZW5hYmxlZCkKKy0J CQljb250aW51ZTsKKy0JCXNlYXQtPnNjaGVkdWxlZF9zZXNzID0gc2VzczsKKy0JCXJldHVybjsK KysJCXRlcm1pbmFsX2RlYWN0aXZhdGUoc2VhdC0+Y3VycmVudF9zZXNzLT50ZXJtKTsKKysJaWYg KG5ldykgeworKwkJaWYgKG5ldy0+Zm9yZWdyb3VuZCAmJiAhc2VhdC0+Zm9yZWdyb3VuZCkgewor KwkJCXNlYXRfZ29fZm9yZWdyb3VuZChzZWF0KTsKKysJCX0gZWxzZSBpZiAoIW5ldy0+Zm9yZWdy b3VuZCAmJiBzZWF0LT5mb3JlZ3JvdW5kKSB7CisrCQkJc2VhdF9nb19iYWNrZ3JvdW5kKHNlYXQp OworKwkJfQorKwkJdGVybWluYWxfYWN0aXZhdGUobmV3LT50ZXJtKTsKKyAJfQorLQorLQlpZiAo c2VhdC0+ZHVtbXlfc2VzcyAmJiBzZWF0LT5kdW1teV9zZXNzLT5lbmFibGVkKQorLQkJc2VhdC0+ c2NoZWR1bGVkX3Nlc3MgPSBzZWF0LT5kdW1teV9zZXNzOworLQllbHNlCistCQlzZWF0LT5zY2hl ZHVsZWRfc2VzcyA9IE5VTEw7CistfQorLQorLXN0YXRpYyBib29sIHNlYXRfaGFzX3NjaGVkdWxl KHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKKy17CistCXJldHVybiBzZWF0LT5zY2hlZHVsZWRf c2VzcyAmJiBzZWF0LT5zY2hlZHVsZWRfc2VzcyAhPSBzZWF0LT5jdXJyZW50X3Nlc3M7CistfQor LQorLXN0YXRpYyBpbnQgc2VhdF9zd2l0Y2goc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQorLXsK Ky0JaW50IHJldDsKKy0KKy0Jc2VhdC0+YXN5bmNfc2NoZWR1bGUgPSBTQ0hFRFVMRV9TV0lUQ0g7 CistCXJldCA9IHNlYXRfcGF1c2Uoc2VhdCwgZmFsc2UpOworLQlpZiAocmV0KQorLQkJcmV0dXJu IHJldDsKKy0KKy0JcmV0dXJuIHNlYXRfcnVuKHNlYXQpOworKwlzZWF0LT5jdXJyZW50X3Nlc3Mg PSBuZXc7CisgfQorIAorIHN0YXRpYyB2b2lkIHNlYXRfbmV4dChzdHJ1Y3Qga21zY29uX3NlYXQg KnNlYXQpCisgeworLQlzdHJ1Y3Qgc2hsX2RsaXN0ICpjdXIsICppdGVyOworLQlzdHJ1Y3Qga21z Y29uX3Nlc3Npb24gKnMsICpuZXh0OworKwlzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKm5leHQgPSBO VUxMOworIAorIAlpZiAoc2VhdC0+Y3VycmVudF9zZXNzKQorLQkJY3VyID0gJnNlYXQtPmN1cnJl bnRfc2Vzcy0+bGlzdDsKKy0JZWxzZSBpZiAoc2VhdC0+c2Vzc2lvbl9jb3VudCkKKy0JCWN1ciA9 ICZzZWF0LT5zZXNzaW9uczsKKy0JZWxzZQorLQkJcmV0dXJuOworLQorLQluZXh0ID0gTlVMTDsK Ky0JaWYgKCFzZWF0LT5jdXJyZW50X3Nlc3MgJiYgc2VhdC0+ZHVtbXlfc2VzcyAmJiBzZWF0LT5k dW1teV9zZXNzLT5lbmFibGVkKQorLQkJbmV4dCA9IHNlYXQtPmR1bW15X3Nlc3M7CistCistCXNo bF9kbGlzdF9mb3JfZWFjaF9idXRfb25lKGl0ZXIsIGN1ciwgJnNlYXQtPnNlc3Npb25zKQorLQl7 CistCQlzID0gc2hsX2RsaXN0X2VudHJ5KGl0ZXIsIHN0cnVjdCBrbXNjb25fc2Vzc2lvbiwgbGlz dCk7CistCQlpZiAoIXMtPmVuYWJsZWQgfHwgc2VhdC0+ZHVtbXlfc2VzcyA9PSBzKQorLQkJCWNv bnRpbnVlOworLQorLQkJbmV4dCA9IHM7CistCQlicmVhazsKKy0JfQorLQorKwkJbmV4dCA9IHNo bF9kbGlzdF9uZXh0KHNlYXQtPmN1cnJlbnRfc2VzcywgJnNlYXQtPnNlc3Npb25zLCBsaXN0KTsK KyAJaWYgKCFuZXh0KQorLQkJcmV0dXJuOworKwkJbmV4dCA9IHNobF9kbGlzdF9maXJzdCgmc2Vh dC0+c2Vzc2lvbnMsIHN0cnVjdCBrbXNjb25fc2Vzc2lvbiwgbGlzdCk7CisrCWlmIChuZXh0ICYm IG5leHQgPT0gc2VhdC0+Y3VycmVudF9zZXNzKQorKwkJbmV4dCA9IE5VTEw7CisgCistCXNlYXQt PnNjaGVkdWxlZF9zZXNzID0gbmV4dDsKKy0Jc2VhdF9zd2l0Y2goc2VhdCk7CisrCXNlYXRfc3dp dGNoKHNlYXQsIG5leHQpOworIH0KKyAKKyBzdGF0aWMgdm9pZCBzZWF0X3ByZXYoc3RydWN0IGtt c2Nvbl9zZWF0ICpzZWF0KQorIHsKKy0Jc3RydWN0IHNobF9kbGlzdCAqY3VyLCAqaXRlcjsKKy0J c3RydWN0IGttc2Nvbl9zZXNzaW9uICpzLCAqcHJldjsKKysJc3RydWN0IGttc2Nvbl9zZXNzaW9u ICpwcmV2ID0gTlVMTDsKKyAKKyAJaWYgKHNlYXQtPmN1cnJlbnRfc2VzcykKKy0JCWN1ciA9ICZz ZWF0LT5jdXJyZW50X3Nlc3MtPmxpc3Q7CistCWVsc2UgaWYgKHNlYXQtPnNlc3Npb25fY291bnQp CistCQljdXIgPSAmc2VhdC0+c2Vzc2lvbnM7CistCWVsc2UKKy0JCXJldHVybjsKKy0KKy0JcHJl diA9IE5VTEw7CistCWlmICghc2VhdC0+Y3VycmVudF9zZXNzICYmIHNlYXQtPmR1bW15X3Nlc3Mg JiYgc2VhdC0+ZHVtbXlfc2Vzcy0+ZW5hYmxlZCkKKy0JCXByZXYgPSBzZWF0LT5kdW1teV9zZXNz OworLQorLQlzaGxfZGxpc3RfZm9yX2VhY2hfcmV2ZXJzZV9idXRfb25lKGl0ZXIsIGN1ciwgJnNl YXQtPnNlc3Npb25zKQorLQl7CistCQlzID0gc2hsX2RsaXN0X2VudHJ5KGl0ZXIsIHN0cnVjdCBr bXNjb25fc2Vzc2lvbiwgbGlzdCk7CistCQlpZiAoIXMtPmVuYWJsZWQgfHwgc2VhdC0+ZHVtbXlf c2VzcyA9PSBzKQorLQkJCWNvbnRpbnVlOworLQorLQkJcHJldiA9IHM7CistCQlicmVhazsKKy0J fQorLQorKwkJcHJldiA9IHNobF9kbGlzdF9wcmV2KHNlYXQtPmN1cnJlbnRfc2VzcywgJnNlYXQt PnNlc3Npb25zLCBsaXN0KTsKKyAJaWYgKCFwcmV2KQorLQkJcmV0dXJuOworKwkJcHJldiA9IHNo bF9kbGlzdF9sYXN0KCZzZWF0LT5zZXNzaW9ucywgc3RydWN0IGttc2Nvbl9zZXNzaW9uLCBsaXN0 KTsKKysJaWYgKHByZXYgJiYgcHJldiA9PSBzZWF0LT5jdXJyZW50X3Nlc3MpCisrCQlwcmV2ID0g TlVMTDsKKyAKKy0Jc2VhdC0+c2NoZWR1bGVkX3Nlc3MgPSBwcmV2OworLQlzZWF0X3N3aXRjaChz ZWF0KTsKKysJc2VhdF9zd2l0Y2goc2VhdCwgcHJldik7CisgfQorIAorIHN0YXRpYyB2b2lkIHNl YXRfYWRkX2Rpc3BsYXkoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LCBzdHJ1Y3QgZGlzcGxheSAq ZGlzcCkKK0BAIC01MzYsNyArMzI4LDcgQEAgc3RhdGljIHZvaWQgc2VhdF9yZW1vdmVfZGlzcGxh eShzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIHN0cnVjdCBrbXNjb25fZGlzcGxheQorIAkJc2hs X2RsaXN0X2Zvcl9lYWNoX3NhZmUoaXRlciwgdG1wLCAmc2VhdC0+c2Vzc2lvbnMpCisgCQl7Cisg CQkJcyA9IHNobF9kbGlzdF9lbnRyeShpdGVyLCBzdHJ1Y3Qga21zY29uX3Nlc3Npb24sIGxpc3Qp OworLQkJCXNlc3Npb25fY2FsbF9kaXNwbGF5X2dvbmUocywgZC0+ZGlzcCk7CisrCQkJdGVybWlu YWxfcm1fZGlzcGxheShzLT50ZXJtLCBkLT5kaXNwKTsKKyAJCX0KKyAJfQorIAorQEAgLTU2OSw3 ICszNjEsNyBAQCBzdGF0aWMgdm9pZCBzZWF0X3JlZnJlc2hfZGlzcGxheShzdHJ1Y3Qga21zY29u X3NlYXQgKnNlYXQsIHN0cnVjdCBrbXNjb25fZGlzcGxheQorIAkJc2hsX2RsaXN0X2Zvcl9lYWNo KGl0ZXIsICZzZWF0LT5zZXNzaW9ucykKKyAJCXsKKyAJCQlzID0gc2hsX2RsaXN0X2VudHJ5KGl0 ZXIsIHN0cnVjdCBrbXNjb25fc2Vzc2lvbiwgbGlzdCk7CistCQkJc2Vzc2lvbl9jYWxsX2Rpc3Bs YXlfcmVmcmVzaChzLCBkLT5kaXNwKTsKKysJCQl0ZXJtaW5hbF9yZWZyZXNoX2Rpc3BsYXlzKHMt PnRlcm0pOworIAkJfQorIAl9CisgfQorQEAgLTU3OCw5ICszNzAsMTQgQEAgc3RhdGljIHZvaWQg c2VhdF92dF9hY3RpdmF0ZShzdHJ1Y3QgdXRlcm1fdnQgKnZ0LCB2b2lkICpkYXRhKQorIHsKKyAJ c3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0ID0gZGF0YTsKKyAKKysJbG9nX2RlYnVnKCJWVCAlZCBh Y3RpdmF0ZWQgb24gc2VhdCAlcyIsIHV0ZXJtX3Z0X2dldF9udW0odnQpLCBzZWF0LT5uYW1lKTsK KysKKyAJaWYgKHNlYXRfZ29fYXdha2Uoc2VhdCkpCisgCQlyZXR1cm47CistCXNlYXRfcnVuKHNl YXQpOworKwlpZiAoc2VhdF9nb19mb3JlZ3JvdW5kKHNlYXQpKQorKwkJcmV0dXJuOworKwlpZiAo c2VhdC0+Y3VycmVudF9zZXNzKQorKwkJdGVybWluYWxfYWN0aXZhdGUoc2VhdC0+Y3VycmVudF9z ZXNzLT50ZXJtKTsKKyB9CisgCisgc3RhdGljIGludCBzZWF0X3Z0X2RlYWN0aXZhdGUoc3RydWN0 IHV0ZXJtX3Z0ICp2dCwgYm9vbCBmb3JjZSwgdm9pZCAqZGF0YSkKK0BAIC01ODgsMTQgKzM4NSwx MyBAQCBzdGF0aWMgaW50IHNlYXRfdnRfZGVhY3RpdmF0ZShzdHJ1Y3QgdXRlcm1fdnQgKnZ0LCBi b29sIGZvcmNlLCB2b2lkICpkYXRhKQorIAlzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQgPSBkYXRh OworIAlpbnQgcmV0OworIAorLQlzZWF0LT5hc3luY19zY2hlZHVsZSA9IFNDSEVEVUxFX1ZUOwor LQlyZXQgPSBzZWF0X3BhdXNlKHNlYXQsIGZhbHNlKTsKKy0JaWYgKHJldCkKKy0JCXJldHVybiBy ZXQ7CistCXJldCA9IHNlYXRfZ29fYmFja2dyb3VuZChzZWF0LCBmYWxzZSk7CisrCWlmIChzZWF0 LT5jdXJyZW50X3Nlc3MpCisrCQl0ZXJtaW5hbF9kZWFjdGl2YXRlKHNlYXQtPmN1cnJlbnRfc2Vz cy0+dGVybSk7CisrCisrCXJldCA9IHNlYXRfZ29fYmFja2dyb3VuZChzZWF0KTsKKyAJaWYgKHJl dCkKKyAJCXJldHVybiByZXQ7CistCXJldCA9IHNlYXRfZ29fYXNsZWVwKHNlYXQsIGZhbHNlKTsK KysJcmV0ID0gc2VhdF9nb19hc2xlZXAoc2VhdCk7CisgCWlmIChyZXQpCisgCQlyZXR1cm4gcmV0 OworIAlyZXR1cm4gMDsKK0BAIC03MjYsNyArNTIyLDYgQEAgc3RhdGljIHZvaWQgc2VhdF9pbnB1 dF9ldmVudChzdHJ1Y3QgaW5wdXQgKmlucHV0LCBzdHJ1Y3QgaW5wdXRfa2V5X2V2ZW50ICpldiwg dm8KKyB7CisgCXN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCA9IGRhdGE7CisgCXN0cnVjdCBrbXNj b25fc2Vzc2lvbiAqczsKKy0JaW50IHJldDsKKyAKKyAJLyogUmVzZXQgRFBNUyB0aW1lciBvbiBh bnkgaW5wdXQgZXZlbnQgKi8KKyAJc2VhdF9kcG1zX3Jlc2V0X3RpbWVyKHNlYXQpOworQEAgLTcz Niw0OSArNTMxLDI3IEBAIHN0YXRpYyB2b2lkIHNlYXRfaW5wdXRfZXZlbnQoc3RydWN0IGlucHV0 ICppbnB1dCwgc3RydWN0IGlucHV0X2tleV9ldmVudCAqZXYsIHZvCisgCisgCWlmIChjb25mX2dy YWJfbWF0Y2hlcyhzZWF0LT5jb25mLT5ncmFiX3Nlc3Npb25fbmV4dCwgZXYtPm1vZHMsIGV2LT5u dW1fc3ltcywgZXYtPmtleXN5bXMpKSB7CisgCQlldi0+aGFuZGxlZCA9IHRydWU7CistCQlpZiAo IXNlYXQtPmNvbmYtPnNlc3Npb25fY29udHJvbCkKKysJCWlmICghc2VhdC0+Y29uZi0+c2Vzc2lv bl9jb250cm9sIHx8IHNlYXQtPnNlc3Npb25fY291bnQgPCAyKQorIAkJCXJldHVybjsKKyAJCXNl YXRfbmV4dChzZWF0KTsKKyAJCXJldHVybjsKKyAJfQorIAlpZiAoY29uZl9ncmFiX21hdGNoZXMo c2VhdC0+Y29uZi0+Z3JhYl9zZXNzaW9uX3ByZXYsIGV2LT5tb2RzLCBldi0+bnVtX3N5bXMsIGV2 LT5rZXlzeW1zKSkgeworIAkJZXYtPmhhbmRsZWQgPSB0cnVlOworLQkJaWYgKCFzZWF0LT5jb25m LT5zZXNzaW9uX2NvbnRyb2wpCisrCQlpZiAoIXNlYXQtPmNvbmYtPnNlc3Npb25fY29udHJvbCB8 fCBzZWF0LT5zZXNzaW9uX2NvdW50IDwgMikKKyAJCQlyZXR1cm47CisgCQlzZWF0X3ByZXYoc2Vh dCk7CisgCQlyZXR1cm47CisgCX0KKy0JaWYgKGNvbmZfZ3JhYl9tYXRjaGVzKHNlYXQtPmNvbmYt PmdyYWJfc2Vzc2lvbl9kdW1teSwgZXYtPm1vZHMsIGV2LT5udW1fc3ltcywKKy0JCQkgICAgICBl di0+a2V5c3ltcykpIHsKKy0JCWV2LT5oYW5kbGVkID0gdHJ1ZTsKKy0JCWlmICghc2VhdC0+Y29u Zi0+c2Vzc2lvbl9jb250cm9sKQorLQkJCXJldHVybjsKKy0JCXNlYXQtPnNjaGVkdWxlZF9zZXNz ID0gc2VhdC0+ZHVtbXlfc2VzczsKKy0JCXNlYXRfc3dpdGNoKHNlYXQpOworLQkJcmV0dXJuOwor LQl9CisrCisgCWlmIChjb25mX2dyYWJfbWF0Y2hlcyhzZWF0LT5jb25mLT5ncmFiX3Nlc3Npb25f Y2xvc2UsIGV2LT5tb2RzLCBldi0+bnVtX3N5bXMsCisgCQkJICAgICAgZXYtPmtleXN5bXMpKSB7 CisgCQlldi0+aGFuZGxlZCA9IHRydWU7CistCQlpZiAoIXNlYXQtPmNvbmYtPnNlc3Npb25fY29u dHJvbCkKKysJCWlmICghc2VhdC0+Y29uZi0+c2Vzc2lvbl9jb250cm9sIHx8IHNlYXQtPnNlc3Np b25fY291bnQgPCAyKQorIAkJCXJldHVybjsKKyAJCXMgPSBzZWF0LT5jdXJyZW50X3Nlc3M7Cisg CQlpZiAoIXMpCisgCQkJcmV0dXJuOworLQkJaWYgKHMgPT0gc2VhdC0+ZHVtbXlfc2VzcykKKy0J CQlyZXR1cm47CistCistCQkvKiBGaXJzdCB0aW1lIHRoaXMgaXMgaW52b2tlZCBvbiBhIHNlc3Np b24sIHdlIHNpbXBseSB0cnkKKy0JCSAqIHVubG9hZGluZyBpdC4gSWYgaXQgZmFpbHMsIHdlIGdp dmUgaXQgc29tZSB0aW1lLiBJZiB0aGlzIGlzCistCQkgKiBpbnZva2VkIGEgc2Vjb25kIHRpbWUs IHdlIG5vdGljZSB0aGF0IHdlIGFscmVhZHkgdHJpZWQKKy0JCSAqIHJlbW92aW5nIGl0IGFuZCBz byB3ZSBnbyBzdHJhaWdodCB0byB1bnJlZ2lzdGVyaW5nIHRoZQorLQkJICogc2Vzc2lvbiB1bmNv bmRpdGlvbmFsbHkuICovCistCQlpZiAoIXMtPmRlYWN0aXZhdGluZykgeworLQkJCXNlYXQtPmFz eW5jX3NjaGVkdWxlID0gU0NIRURVTEVfVU5SRUdJU1RFUjsKKy0JCQlyZXQgPSBzZWF0X3BhdXNl KHNlYXQsIGZhbHNlKTsKKy0JCQlpZiAocmV0KQorLQkJCQlyZXR1cm47CistCQl9CisgCisgCQlr bXNjb25fc2Vzc2lvbl91bnJlZ2lzdGVyKHMpOworIAkJcmV0dXJuOworQEAgLTc4NywxNiArNTYw LDkgQEAgc3RhdGljIHZvaWQgc2VhdF9pbnB1dF9ldmVudChzdHJ1Y3QgaW5wdXQgKmlucHV0LCBz dHJ1Y3QgaW5wdXRfa2V5X2V2ZW50ICpldiwgdm8KKyAJCWV2LT5oYW5kbGVkID0gdHJ1ZTsKKyAJ CWlmICghc2VhdC0+Y29uZi0+c2Vzc2lvbl9jb250cm9sKQorIAkJCXJldHVybjsKKy0JCXJldCA9 IGttc2Nvbl90ZXJtaW5hbF9yZWdpc3Rlcigmcywgc2VhdCwgdXRlcm1fdnRfZ2V0X251bShzZWF0 LT52dCkpOworLQkJaWYgKHJldCA9PSAtRU9QTk9UU1VQUCkgeworLQkJCWxvZ19ub3RpY2UoInRl cm1pbmFsIHN1cHBvcnQgbm90IGNvbXBpbGVkIGluIik7CistCQl9IGVsc2UgaWYgKHJldCkgewor LQkJCWxvZ19lcnJvcigiY2Fubm90IHJlZ2lzdGVyIHRlcm1pbmFsIHNlc3Npb246ICVkIiwgcmV0 KTsKKy0JCX0gZWxzZSB7CistCQkJcy0+ZW5hYmxlZCA9IHRydWU7CistCQkJc2VhdC0+c2NoZWR1 bGVkX3Nlc3MgPSBzOworLQkJCXNlYXRfc3dpdGNoKHNlYXQpOworLQkJfQorKwkJcyA9IGttc2Nv bl9zZWF0X25ld19zZXNzaW9uKHNlYXQpOworKwkJaWYgKHMpCisrCQkJc2VhdF9zd2l0Y2goc2Vh dCwgcyk7CisgCQlyZXR1cm47CisgCX0KKyAJaWYgKHNlYXQtPmNvbmYtPmdyYWJfcmVib290ICYm CitAQCAtODI5LDEyICs1OTUsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqZmluZF9sb2NhbGUodm9p ZCkKKyAKKyBzdGF0aWMgaW50IGttc2Nvbl9zZWF0X3NldF9rZXltYXAoc3RydWN0IGttc2Nvbl9z ZWF0ICpzZWF0KQorIHsKKy0JY29uc3QgY2hhciAqbG9jYWxlOworLQljaGFyICprZXltYXAsICpj b21wb3NlX2ZpbGU7CistCXNpemVfdCBjb21wb3NlX2ZpbGVfbGVuOworLQlpbnQgcmV0OworIAor LQlsb2NhbGUgPSBmaW5kX2xvY2FsZSgpOworKwljaGFyICprZXltYXA7CisrCWludCByZXQ7Cisg CisgCS8qIFRPRE86IFRoZSBYS0ItQVBJIGN1cnJlbnRseSByZXF1aXJlcyB6ZXJvLXRlcm1pbmF0 ZWQgc3RyaW5ncyBhcworIAkgKiBrZXltYXAgaW5wdXQuIEhlbmNlLCB3ZSBoYXZlIHRvIHJlYWQg aXQgaW4gaW5zdGVhZCBvZiB1c2luZyBtbWFwKCkuCitAQCAtODQ2LDIxICs2MDksNDkgQEAgc3Rh dGljIGludCBrbXNjb25fc2VhdF9zZXRfa2V5bWFwKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkK KyAJCQlsb2dfZXJyb3IoImNhbm5vdCByZWFkIGtleW1hcCBmaWxlICVzOiAlZCIsIHNlYXQtPmNv bmYtPnhrYl9rZXltYXAsIHJldCk7CisgCX0KKyAKKysJcmV0ID0gaW5wdXRfc2V0X2tleW1hcChz ZWF0LT5pbnB1dCwgc2VhdC0+Y29uZi0+eGtiX21vZGVsLCBzZWF0LT5jb25mLT54a2JfbGF5b3V0 LAorKwkJCSAgICAgICBzZWF0LT5jb25mLT54a2JfdmFyaWFudCwgc2VhdC0+Y29uZi0+eGtiX29w dGlvbnMsIGtleW1hcCk7CisrCWlmIChyZXQpCisrCQlsb2dfZXJyb3IoImNhbm5vdCBzZXQga2V5 bWFwOiAlZCIsIHJldCk7CisrCisrCWZyZWUoa2V5bWFwKTsKKysJcmV0dXJuIHJldDsKKyt9Cisr Cisrc3RhdGljIHZvaWQga21zY29uX3NlYXRfc2V0X2NvbXBvc2Uoc3RydWN0IGttc2Nvbl9zZWF0 ICpzZWF0KQorK3sKKysJY29uc3QgY2hhciAqbG9jYWxlOworKwljaGFyICpjb21wb3NlX2ZpbGU7 CisrCXNpemVfdCBjb21wb3NlX2ZpbGVfbGVuOworKwlpbnQgcmV0OworKworKwlsb2NhbGUgPSBm aW5kX2xvY2FsZSgpOworKworIAljb21wb3NlX2ZpbGUgPSBOVUxMOworIAljb21wb3NlX2ZpbGVf bGVuID0gMDsKKyAJaWYgKHNlYXQtPmNvbmYtPnhrYl9jb21wb3NlX2ZpbGUgJiYgKnNlYXQtPmNv bmYtPnhrYl9jb21wb3NlX2ZpbGUpIHsKKyAJCXJldCA9IHNobF9yZWFkX2ZpbGUoc2VhdC0+Y29u Zi0+eGtiX2NvbXBvc2VfZmlsZSwgJmNvbXBvc2VfZmlsZSwgJmNvbXBvc2VfZmlsZV9sZW4pOwor LQkJaWYgKHJldCkKKysJCWlmIChyZXQpIHsKKyAJCQlsb2dfZXJyb3IoImNhbm5vdCByZWFkIGNv bXBvc2UgZmlsZSAlczogJWQiLCBzZWF0LT5jb25mLT54a2JfY29tcG9zZV9maWxlLAorIAkJCQkg IHJldCk7CisrCQkJcmV0dXJuOworKwkJfQorIAl9CistCXJldCA9IGlucHV0X3NldF9rZXltYXAo c2VhdC0+aW5wdXQsIHNlYXQtPmNvbmYtPnhrYl9tb2RlbCwgc2VhdC0+Y29uZi0+eGtiX2xheW91 dCwKKy0JCQkgICAgICAgc2VhdC0+Y29uZi0+eGtiX3ZhcmlhbnQsIHNlYXQtPmNvbmYtPnhrYl9v cHRpb25zLCBsb2NhbGUsIGtleW1hcCwKKy0JCQkgICAgICAgY29tcG9zZV9maWxlLCBjb21wb3Nl X2ZpbGVfbGVuKTsKKy0JaWYgKHJldCkKKy0JCWxvZ19lcnJvcigiY2Fubm90IHNldCBrZXltYXA6 ICVkIiwgcmV0KTsKKysJaW5wdXRfc2V0X2NvbXBvc2Uoc2VhdC0+aW5wdXQsIGxvY2FsZSwgY29t cG9zZV9maWxlLCBjb21wb3NlX2ZpbGVfbGVuKTsKKyt9CisgCistCWZyZWUoa2V5bWFwKTsKKytp bnQga21zY29uX3NlYXRfdXBkYXRlX3hrYl9sYXlvdXQoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0 LCBjb25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hhciAqbGF5b3V0LAorKwkJCQkgIGNvbnN0IGNo YXIgKnZhcmlhbnQsIGNvbnN0IGNoYXIgKm9wdGlvbnMpCisreworKwlpbnQgcmV0OworKworKwly ZXQgPSBpbnB1dF91cGRhdGVfa2V5bWFwKHNlYXQtPmlucHV0LCBtb2RlbCwgbGF5b3V0LCB2YXJp YW50LCBvcHRpb25zKTsKKysJaWYgKHJldCkgeworKwkJbG9nX2Vycm9yKCJjYW5ub3QgdXBkYXRl IGtleW1hcDogJWQiLCByZXQpOworKwkJcmV0dXJuIHJldDsKKysJfQorKwkvKiBDb21wb3NlIHRh YmxlIGlzIGxvc3Qgd2hlbiB1cGRhdGluZyB0aGUga2V5bWFwLCBzbyB3ZSBuZWVkIHRvIHNldCBp dCBhZ2FpbiAqLworKwlrbXNjb25fc2VhdF9zZXRfY29tcG9zZShzZWF0KTsKKyAJcmV0dXJuIHJl dDsKKyB9CisgCitAQCAtOTkzLDYgKzc4NCw4IEBAIGludCBrbXNjb25fc2VhdF9uZXcoc3RydWN0 IGttc2Nvbl9zZWF0ICoqb3V0LCBzdHJ1Y3QgY29uZl9jdHggKm1haW5fY29uZiwKKyAJaWYgKHJl dCkKKyAJCWdvdG8gZXJyX2NvbmY7CisgCisrCWttc2Nvbl9zZWF0X3NldF9jb21wb3NlKHNlYXQp OworKworIAlyZXQgPSB1dGVybV9tb25pdG9yX25ldygmc2VhdC0+bW9uLCBzZWF0LT5lbG9vcCwg JnNlYXRfbW9uaXRvcl9jYiwgc2VhdCk7CisgCWlmIChyZXQpIHsKKyAJCWxvZ19lcnJvcigiY2Fu bm90IGNyZWF0ZSBkZXZpY2UgbW9uaXRvcjogJWQiLCByZXQpOworQEAgLTEwNjMsMTIgKzg1Niw5 IEBAIHZvaWQga21zY29uX3NlYXRfZnJlZShzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCisgCWlm ICghc2VhdCkKKyAJCXJldHVybjsKKyAKKy0JcmV0ID0gc2VhdF9wYXVzZShzZWF0LCB0cnVlKTsK Ky0JaWYgKHJldCkKKy0JCWxvZ193YXJuaW5nKCJkZXN0cm95aW5nIHNlYXQgJXMgd2hpbGUgc2Vz c2lvbiAlcCBpcyBhY3RpdmUiLCBzZWF0LT5uYW1lLAorLQkJCSAgICBzZWF0LT5jdXJyZW50X3Nl c3MpOworKwlzZWF0X3N3aXRjaChzZWF0LCBOVUxMKTsKKyAKKy0JcmV0ID0gc2VhdF9nb19hc2xl ZXAoc2VhdCwgdHJ1ZSk7CisrCXJldCA9IHNlYXRfZ29fYXNsZWVwKHNlYXQpOworIAlpZiAocmV0 KQorIAkJbG9nX3dhcm5pbmcoImRlc3Ryb3lpbmcgc2VhdCAlcyB3aGlsZSBzdGlsbCBhd2FrZTog JWQiLCBzZWF0LT5uYW1lLCByZXQpOworIAorQEAgLTEzMDYsMzEgKzEwOTYsMTggQEAgc3RhdGlj IHZvaWQga21zY29uX3NlYXRfcG9sbF92aWRlbyh2b2lkICpkYXRhKQorIAorIHZvaWQga21zY29u X3NlYXRfc3RhcnR1cChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCisgeworLQlpbnQgcmV0Owor IAlzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnM7CisgCisgCWlmICghc2VhdCkKKyAJCXJldHVybjsK KyAKKy0JcmV0ID0ga21zY29uX2R1bW15X3JlZ2lzdGVyKCZzLCBzZWF0KTsKKy0JaWYgKHJldCA9 PSAtRU9QTk9UU1VQUCkgeworLQkJbG9nX25vdGljZSgiZHVtbXkgc2Vzc2lvbnMgbm90IGNvbXBp bGVkIGluIik7CistCX0gZWxzZSBpZiAocmV0KSB7CistCQlsb2dfZXJyb3IoImNhbm5vdCByZWdp c3RlciBkdW1teSBzZXNzaW9uOiAlZCIsIHJldCk7CistCX0gZWxzZSB7CistCQlzZWF0LT5kdW1t eV9zZXNzID0gczsKKy0JCWttc2Nvbl9zZXNzaW9uX2VuYWJsZShzKTsKKy0JfQorKwlzZWF0X2dv X2F3YWtlKHNlYXQpOworIAorLQlpZiAoc2VhdC0+Y29uZi0+dGVybWluYWxfc2Vzc2lvbikgewor LQkJcmV0ID0ga21zY29uX3Rlcm1pbmFsX3JlZ2lzdGVyKCZzLCBzZWF0LCB1dGVybV92dF9nZXRf bnVtKHNlYXQtPnZ0KSk7CistCQlpZiAocmV0ID09IC1FT1BOT1RTVVBQKQorLQkJCWxvZ19ub3Rp Y2UoInRlcm1pbmFsIHN1cHBvcnQgbm90IGNvbXBpbGVkIGluIik7CistCQllbHNlIGlmIChyZXQp CistCQkJbG9nX2Vycm9yKCJjYW5ub3QgcmVnaXN0ZXIgdGVybWluYWwgc2Vzc2lvbiIpOworLQkJ ZWxzZQorLQkJCWttc2Nvbl9zZXNzaW9uX2VuYWJsZShzKTsKKy0JfQorKwlzID0ga21zY29uX3Nl YXRfbmV3X3Nlc3Npb24oc2VhdCk7CisrCWlmIChzKQorKwkJc2VhdF9zd2l0Y2goc2VhdCwgcyk7 CisrCWVsc2UKKysJCWxvZ19lcnJvcigiY2Fubm90IGNyZWF0ZSBuZXcgc2Vzc2lvbiBvbiBzZWF0 ICVzIiwgc2VhdC0+bmFtZSk7CisgCisgCWlmIChzZWF0LT5jb25mLT5zd2l0Y2h2dCB8fCB1dGVy bV92dF9nZXRfbnVtKHNlYXQtPnZ0KSA9PSAwKQorIAkJdXRlcm1fdnRfYWN0aXZhdGUoc2VhdC0+ dnQpOworQEAgLTEzMzksMzAgKzExMTYsNiBAQCB2b2lkIGttc2Nvbl9zZWF0X3N0YXJ0dXAoc3Ry dWN0IGttc2Nvbl9zZWF0ICpzZWF0KQorIAl1dGVybV9tb25pdG9yX3NjYW4oc2VhdC0+bW9uLCBz ZWF0LT5uYW1lKTsKKyB9CisgCistY29uc3QgY2hhciAqa21zY29uX3NlYXRfZ2V0X25hbWUoc3Ry dWN0IGttc2Nvbl9zZWF0ICpzZWF0KQorLXsKKy0JaWYgKCFzZWF0KQorLQkJcmV0dXJuIE5VTEw7 CistCistCXJldHVybiBzZWF0LT5uYW1lOworLX0KKy0KKy1zdHJ1Y3QgaW5wdXQgKmttc2Nvbl9z ZWF0X2dldF9pbnB1dChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCisteworLQlpZiAoIXNlYXQp CistCQlyZXR1cm4gTlVMTDsKKy0KKy0JcmV0dXJuIHNlYXQtPmlucHV0OworLX0KKy0KKy1zdHJ1 Y3QgZXZfZWxvb3AgKmttc2Nvbl9zZWF0X2dldF9lbG9vcChzdHJ1Y3Qga21zY29uX3NlYXQgKnNl YXQpCisteworLQlpZiAoIXNlYXQpCistCQlyZXR1cm4gTlVMTDsKKy0KKy0JcmV0dXJuIHNlYXQt PmVsb29wOworLX0KKy0KKyBzdHJ1Y3QgY29uZl9jdHggKmttc2Nvbl9zZWF0X2dldF9jb25mKHN0 cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKKyB7CisgCWlmICghc2VhdCkKK0BAIC0xMzcxLDM2ICsx MTI0LDM5IEBAIHN0cnVjdCBjb25mX2N0eCAqa21zY29uX3NlYXRfZ2V0X2NvbmYoc3RydWN0IGtt c2Nvbl9zZWF0ICpzZWF0KQorIAlyZXR1cm4gc2VhdC0+Y29uZl9jdHg7CisgfQorIAorLWludCBr bXNjb25fc2VhdF9yZWdpc3Rlcl9zZXNzaW9uKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgc3Ry dWN0IGttc2Nvbl9zZXNzaW9uICoqb3V0LAorLQkJCQkga21zY29uX3Nlc3Npb25fY2JfdCBjYiwg dm9pZCAqZGF0YSkKKytzdGF0aWMgc3RydWN0IGttc2Nvbl9zZXNzaW9uICprbXNjb25fc2VhdF9u ZXdfc2Vzc2lvbihzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCisgeworIAlzdHJ1Y3Qga21zY29u X3Nlc3Npb24gKnNlc3M7CisgCXN0cnVjdCBzaGxfZGxpc3QgKml0ZXI7CisgCXN0cnVjdCBrbXNj b25fZGlzcGxheSAqZDsKKyAKKy0JaWYgKCFzZWF0IHx8ICFvdXQpCistCQlyZXR1cm4gLUVJTlZB TDsKKysJaWYgKCFzZWF0KQorKwkJcmV0dXJuIE5VTEw7CisgCisgCWlmIChzZWF0LT5jb25mLT5z ZXNzaW9uX21heCAmJiBzZWF0LT5zZXNzaW9uX2NvdW50ID49IHNlYXQtPmNvbmYtPnNlc3Npb25f bWF4KSB7CisgCQlsb2dfd2FybmluZygibWF4aW11bSBudW1iZXIgb2Ygc2Vzc2lvbnMgcmVhY2hl ZCAoJWQpLCBkcm9wcGluZyBuZXcgc2Vzc2lvbiIsCisgCQkJICAgIHNlYXQtPmNvbmYtPnNlc3Np b25fbWF4KTsKKy0JCXJldHVybiAtRU9WRVJGTE9XOworKwkJcmV0dXJuIE5VTEw7CisgCX0KKyAK KyAJc2VzcyA9IG1hbGxvYyhzaXplb2YoKnNlc3MpKTsKKyAJaWYgKCFzZXNzKSB7CisgCQlsb2df ZXJyb3IoImNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIG5ldyBzZXNzaW9uIG9uIHNlYXQgJXMi LCBzZWF0LT5uYW1lKTsKKy0JCXJldHVybiAtRU5PTUVNOworKwkJcmV0dXJuIE5VTEw7CisgCX0K KyAKKyAJbG9nX2RlYnVnKCJyZWdpc3RlciBzZXNzaW9uICVwIiwgc2Vzcyk7CisgCisgCW1lbXNl dChzZXNzLCAwLCBzaXplb2YoKnNlc3MpKTsKKy0Jc2Vzcy0+cmVmID0gMTsKKyAJc2Vzcy0+c2Vh dCA9IHNlYXQ7CistCXNlc3MtPmNiID0gY2I7CistCXNlc3MtPmRhdGEgPSBkYXRhOworIAlzZXNz LT5mb3JlZ3JvdW5kID0gdHJ1ZTsKKysJc2Vzcy0+dGVybSA9IHRlcm1pbmFsX25ldyhzZXNzLCB1 dGVybV92dF9nZXRfbnVtKHNlYXQtPnZ0KSwgc2VhdC0+Y29uZl9jdHgsIHNlYXQtPmVsb29wLAor KwkJCQkgIHNlYXQtPmlucHV0LCBzZWF0LT5uYW1lKTsKKysJaWYgKCFzZXNzLT50ZXJtKSB7Cisr CQlsb2dfZXJyb3IoImNhbm5vdCBjcmVhdGUgdGVybWluYWwgZm9yIG5ldyBzZXNzaW9uIG9uIHNl YXQgJXMiLCBzZWF0LT5uYW1lKTsKKysJCWZyZWUoc2Vzcyk7CisrCQlyZXR1cm4gTlVMTDsKKysJ fQorIAorIAkvKiByZWdpc3RlciBuZXcgc2Vzc2lvbnMgbmV4dCB0byB0aGUgY3VycmVudCBvbmUg Ki8KKyAJaWYgKHNlYXQtPmN1cnJlbnRfc2VzcykKK0BAIC0xNDA5LDM5ICsxMTY1LDE4IEBAIGlu dCBrbXNjb25fc2VhdF9yZWdpc3Rlcl9zZXNzaW9uKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwg c3RydWN0IGttc2Nvbl9zZXNzaW9uCisgCQlzaGxfZGxpc3RfbGlua190YWlsKCZzZWF0LT5zZXNz aW9ucywgJnNlc3MtPmxpc3QpOworIAorIAkrK3NlYXQtPnNlc3Npb25fY291bnQ7CistCSpvdXQg PSBzZXNzOworIAorIAlzaGxfZGxpc3RfZm9yX2VhY2goaXRlciwgJnNlYXQtPmRpc3BsYXlzKQor IAl7CisgCQlkID0gc2hsX2RsaXN0X2VudHJ5KGl0ZXIsIHN0cnVjdCBrbXNjb25fZGlzcGxheSwg bGlzdCk7CistCQlzZXNzaW9uX2NhbGxfZGlzcGxheV9uZXcoc2VzcywgZC0+ZGlzcCk7CisrCQl0 ZXJtaW5hbF9hZGRfZGlzcGxheShzZXNzLT50ZXJtLCBkLT5kaXNwKTsKKyAJfQorLQorLQlyZXR1 cm4gMDsKKy19CistCistdm9pZCBrbXNjb25fc2Vzc2lvbl9yZWYoc3RydWN0IGttc2Nvbl9zZXNz aW9uICpzZXNzKQorLXsKKy0JaWYgKCFzZXNzIHx8ICFzZXNzLT5yZWYpCistCQlyZXR1cm47Cist CistCSsrc2Vzcy0+cmVmOworKwlyZXR1cm4gc2VzczsKKyB9CisgCistdm9pZCBrbXNjb25fc2Vz c2lvbl91bnJlZihzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCisteworLQlpZiAoIXNlc3Mg fHwgIXNlc3MtPnJlZiB8fCAtLXNlc3MtPnJlZikKKy0JCXJldHVybjsKKy0KKy0Ja21zY29uX3Nl c3Npb25fdW5yZWdpc3RlcihzZXNzKTsKKy0JZnJlZShzZXNzKTsKKy19CistCistdm9pZCBrbXNj b25fc2Vzc2lvbl91bnJlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcykKKytzdGF0 aWMgdm9pZCBrbXNjb25fc2Vzc2lvbl91bnJlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAq c2VzcykKKyB7CisgCXN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdDsKKy0JaW50IHJldDsKKy0JYm9v bCBmb3JjZWQgPSBmYWxzZTsKKyAKKyAJaWYgKCFzZXNzIHx8ICFzZXNzLT5zZWF0KQorIAkJcmV0 dXJuOworQEAgLTE0NDksNDcgKzExODQsMTggQEAgdm9pZCBrbXNjb25fc2Vzc2lvbl91bnJlZ2lz dGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcykKKyAJbG9nX2RlYnVnKCJ1bnJlZ2lzdGVy IHNlc3Npb24gJXAiLCBzZXNzKTsKKyAKKyAJc2VhdCA9IHNlc3MtPnNlYXQ7CistCXNlc3MtPmVu YWJsZWQgPSBmYWxzZTsKKy0JaWYgKHNlYXQtPmR1bW15X3Nlc3MgPT0gc2VzcykKKy0JCXNlYXQt PmR1bW15X3Nlc3MgPSBOVUxMOworLQlzZWF0X3Jlc2NoZWR1bGUoc2VhdCk7CisgCisgCWlmIChz ZWF0LT5jdXJyZW50X3Nlc3MgPT0gc2VzcykgeworLQkJcmV0ID0gc2VhdF9wYXVzZShzZWF0LCB0 cnVlKTsKKy0JCWlmIChyZXQpIHsKKy0JCQlmb3JjZWQgPSB0cnVlOworLQkJCWxvZ193YXJuaW5n KCJ1bnJlZ2lzdGVyaW5nIGFjdGl2ZSBzZXNzaW9uICVwOyBza2lwcGluZyBhdXRvbWF0aWMgIgor LQkJCQkgICAgInNlc3Npb24tc3dpdGNoIiwKKy0JCQkJICAgIHNlc3MpOworLQkJfQorKwkJdGVy bWluYWxfZGVhY3RpdmF0ZShzZWF0LT5jdXJyZW50X3Nlc3MtPnRlcm0pOworKwkJc2VhdF9uZXh0 KHNlYXQpOworIAl9CisgCisgCXNobF9kbGlzdF91bmxpbmsoJnNlc3MtPmxpc3QpOworIAktLXNl YXQtPnNlc3Npb25fY291bnQ7CisgCXNlc3MtPnNlYXQgPSBOVUxMOworIAorLQlzZXNzaW9uX2Nh bGwoc2VzcywgS01TQ09OX1NFU1NJT05fVU5SRUdJU1RFUiwgTlVMTCk7CistCWttc2Nvbl9zZXNz aW9uX3VucmVmKHNlc3MpOworLQorLQkvKiBJZiB0aGlzIHNlc3Npb24gd2FzIGFjdGl2ZSBhbmQg d2UgY291bGRuJ3QgZGVhY3RpdmF0ZSBpdCwgdGhlbiBpdAorLQkgKiBtaWdodCBzdGlsbCBoYXZl IHJlc291cmNlcyBhbGxvY2F0ZWQgdGhhdCBjb3VsZG4ndCBnZXQgZnJlZWQuIEluIHRoaXMKKy0J ICogY2FzZSB3ZSBzaG91bGQgbm90IGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRvIHRoZSBuZXh0IHNl c3Npb24gYXMgaXQgaXMKKy0JICogdmVyeSBsaWtlbHkgdGhhdCBpdCB3aWxsIG5vdCBiZSBhYmxl IHRvIHN0YXJ0LgorLQkgKiBJbnN0ZWFkLCB3ZSBzdGF5IGluYWN0aXZlIGFuZCB3YWl0IGZvciB1 c2VyL2V4dGVybmFsIGlucHV0IHRvIHN3aXRjaAorLQkgKiB0byBhbm90aGVyIHNlc3Npb24uIFRo aXMgZGVsYXkgd2lsbCB0aGVuIGhvcGVmdWxseSBiZSBsb25nIGVub3VnaCBzbworLQkgKiBhbGwg cmVzb3VyY2VzIGdvdCBmcmVlZC4gKi8KKy0JaWYgKCFmb3JjZWQpCistCQlzZWF0X3J1bihzZWF0 KTsKKy19CistCistYm9vbCBrbXNjb25fc2Vzc2lvbl9pc19yZWdpc3RlcmVkKHN0cnVjdCBrbXNj b25fc2Vzc2lvbiAqc2VzcykKKy17CistCXJldHVybiBzZXNzICYmIHNlc3MtPnNlYXQ7CistfQor LQorLWJvb2wga21zY29uX3Nlc3Npb25faXNfYWN0aXZlKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAq c2VzcykKKy17CistCXJldHVybiBzZXNzICYmIHNlc3MtPnNlYXQgJiYgc2Vzcy0+c2VhdC0+Y3Vy cmVudF9zZXNzID09IHNlc3M7CisrCXRlcm1pbmFsX2Rlc3Ryb3koc2Vzcy0+dGVybSk7CisrCWZy ZWUoc2Vzcyk7CisgfQorIAorIGludCBrbXNjb25fc2Vzc2lvbl9zZXRfZm9yZWdyb3VuZChzdHJ1 Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCitAQCAtMTUwOCw3ICsxMjE0LDcgQEAgaW50IGttc2Nv bl9zZXNzaW9uX3NldF9mb3JlZ3JvdW5kKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcykKKyAJ CWlmIChyZXQpCisgCQkJcmV0dXJuIHJldDsKKyAKKy0JCXJldCA9IHNlYXRfZ29fZm9yZWdyb3Vu ZChzZWF0LCB0cnVlKTsKKysJCXJldCA9IHNlYXRfZ29fZm9yZWdyb3VuZChzZWF0KTsKKyAJCWlm IChyZXQpCisgCQkJcmV0dXJuIHJldDsKKyAJfQorQEAgLTE1MjksNyArMTIzNSw3IEBAIGludCBr bXNjb25fc2Vzc2lvbl9zZXRfYmFja2dyb3VuZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3Mp CisgCisgCXNlYXQgPSBzZXNzLT5zZWF0OworIAlpZiAoc2VhdCAmJiBzZWF0LT5jdXJyZW50X3Nl c3MgPT0gc2VzcyAmJiBzZWF0LT5mb3JlZ3JvdW5kKSB7CistCQlyZXQgPSBzZWF0X2dvX2JhY2tn cm91bmQoc2VhdCwgdHJ1ZSk7CisrCQlyZXQgPSBzZWF0X2dvX2JhY2tncm91bmQoc2VhdCk7Cisg CQlpZiAocmV0KQorIAkJCXJldHVybiByZXQ7CisgCX0KK0BAIC0xNTQzLDM1ICsxMjQ5LDYgQEAg Ym9vbCBrbXNjb25fc2Vzc2lvbl9nZXRfZm9yZWdyb3VuZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24g KnNlc3MpCisgCXJldHVybiBzZXNzLT5mb3JlZ3JvdW5kOworIH0KKyAKKy12b2lkIGttc2Nvbl9z ZXNzaW9uX2VuYWJsZShzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCisteworLQlpZiAoIXNl c3MgfHwgc2Vzcy0+ZW5hYmxlZCkKKy0JCXJldHVybjsKKy0KKy0JbG9nX2RlYnVnKCJlbmFibGUg c2Vzc2lvbiAlcCIsIHNlc3MpOworLQlzZXNzLT5lbmFibGVkID0gdHJ1ZTsKKy0JaWYgKHNlc3Mt PnNlYXQgJiYKKy0JICAgICghc2Vzcy0+c2VhdC0+Y3VycmVudF9zZXNzIHx8IHNlc3MtPnNlYXQt PmN1cnJlbnRfc2VzcyA9PSBzZXNzLT5zZWF0LT5kdW1teV9zZXNzKSkgeworLQkJc2Vzcy0+c2Vh dC0+c2NoZWR1bGVkX3Nlc3MgPSBzZXNzOworLQkJaWYgKHNlYXRfaGFzX3NjaGVkdWxlKHNlc3Mt PnNlYXQpKQorLQkJCXNlYXRfc3dpdGNoKHNlc3MtPnNlYXQpOworLQl9CistfQorLQorLXZvaWQg a21zY29uX3Nlc3Npb25fZGlzYWJsZShzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCistewor LQlpZiAoIXNlc3MgfHwgIXNlc3MtPmVuYWJsZWQpCistCQlyZXR1cm47CistCistCWxvZ19kZWJ1 ZygiZGlzYWJsZSBzZXNzaW9uICVwIiwgc2Vzcyk7CistCXNlc3MtPmVuYWJsZWQgPSBmYWxzZTsK Ky19CistCistYm9vbCBrbXNjb25fc2Vzc2lvbl9pc19lbmFibGVkKHN0cnVjdCBrbXNjb25fc2Vz c2lvbiAqc2VzcykKKy17CistCXJldHVybiBzZXNzICYmIHNlc3MtPmVuYWJsZWQ7CistfQorLQor IHZvaWQga21zY29uX3Nlc3Npb25fYmVsbChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCisg eworIAlpZiAoIXNlc3MgfHwgIXNlc3MtPnNlYXQpCitAQCAtMTU4OCwzNiArMTI2NSwzIEBAIHZv aWQga21zY29uX3Nlc3Npb25fc2V0X2xlZHMoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzLCB1 bnNpZ25lZCBpbnQgc2Nyb2xsX2xvCisgCisgCWlucHV0X3NldF9sZWRzKHNlc3MtPnNlYXQtPmlu cHV0LCBzY3JvbGxfbG9jaywgbnVtX2xvY2ssIGNhcHNfbG9jayk7CisgfQorLQorLXZvaWQga21z Y29uX3Nlc3Npb25fbm90aWZ5X2RlYWN0aXZhdGVkKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vz cykKKy17CistCXN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdDsKKy0JaW50IHJldDsKKy0JdW5zaWdu ZWQgaW50IHNjaGVkOworLQorLQlpZiAoIXNlc3MgfHwgIXNlc3MtPnNlYXQpCistCQlyZXR1cm47 CistCistCXNlYXQgPSBzZXNzLT5zZWF0OworLQlpZiAoc2VhdC0+Y3VycmVudF9zZXNzICE9IHNl c3MpCistCQlyZXR1cm47CistCistCXNjaGVkID0gc2VhdC0+YXN5bmNfc2NoZWR1bGU7CistCWxv Z19kZWJ1Zygic2Vzc2lvbiAlcCBub3RpZmllZCBjb3JlIGFib3V0IGRlYWN0aXZhdGlvbiAoc2No ZWR1bGU6ICV1KSIsIHNlc3MsIHNjaGVkKTsKKy0Jc2Vzc2lvbl9kZWFjdGl2YXRlKHNlc3MpOwor LQlzZWF0X3Jlc2NoZWR1bGUoc2VhdCk7CistCistCWlmIChzY2hlZCA9PSBTQ0hFRFVMRV9WVCkg eworLQkJcmV0ID0gc2VhdF9nb19iYWNrZ3JvdW5kKHNlYXQsIGZhbHNlKTsKKy0JCWlmIChyZXQp CistCQkJcmV0dXJuOworLQkJcmV0ID0gc2VhdF9nb19hc2xlZXAoc2VhdCwgZmFsc2UpOworLQkJ aWYgKHJldCkKKy0JCQlyZXR1cm47CistCQl1dGVybV92dF9yZXRyeShzZWF0LT52dCk7CistCX0g ZWxzZSBpZiAoc2NoZWQgPT0gU0NIRURVTEVfVU5SRUdJU1RFUikgeworLQkJa21zY29uX3Nlc3Np b25fdW5yZWdpc3RlcihzZXNzKTsKKy0JfSBlbHNlIHsKKy0JCXNlYXRfc3dpdGNoKHNlYXQpOwor LQl9CistfQorZGlmZiAtLWdpdCBhL3NyYy9rbXNjb25fc2VhdC5oIGIvc3JjL2ttc2Nvbl9zZWF0 LmgKK2luZGV4IGMzZmE3MDcuLjMxZTg4MDggMTAwNjQ0CistLS0gYS9zcmMva21zY29uX3NlYXQu aAorKysrIGIvc3JjL2ttc2Nvbl9zZWF0LmgKK0BAIC0zMywxNCArMzMsOSBAQAorICNkZWZpbmUg S01TQ09OX1NFQVRfSAorIAorICNpbmNsdWRlIDxzdGRib29sLmg+CistI2luY2x1ZGUgPHN0ZGxp Yi5oPgorICNpbmNsdWRlICJjb25mLmgiCistI2luY2x1ZGUgImlucHV0L2lucHV0LmgiCisgI2lu Y2x1ZGUgImttc2Nvbl9jb25mLmgiCisgI2luY2x1ZGUgInNobC9lbG9vcC5oIgorLSNpbmNsdWRl ICJ1dGVybV9tb25pdG9yLmgiCistI2luY2x1ZGUgInV0ZXJtX3Z0LmgiCistI2luY2x1ZGUgInZp ZGVvL3ZpZGVvLmgiCisgCisgc3RydWN0IGttc2Nvbl9zZWF0OworIHN0cnVjdCBrbXNjb25fc2Vz c2lvbjsKK0BAIC01Myw1NCArNDgsMjIgQEAgZW51bSBrbXNjb25fc2VhdF9ldmVudCB7CisgCisg dHlwZWRlZiBpbnQgKCprbXNjb25fc2VhdF9jYl90KShzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQs IHVuc2lnbmVkIGludCBldmVudCwgdm9pZCAqZGF0YSk7CisgCistZW51bSBrbXNjb25fc2Vzc2lv bl9ldmVudF90eXBlIHsKKy0JS01TQ09OX1NFU1NJT05fRElTUExBWV9ORVcsCistCUtNU0NPTl9T RVNTSU9OX0RJU1BMQVlfR09ORSwKKy0JS01TQ09OX1NFU1NJT05fRElTUExBWV9SRUZSRVNILAor LQlLTVNDT05fU0VTU0lPTl9BQ1RJVkFURSwKKy0JS01TQ09OX1NFU1NJT05fREVBQ1RJVkFURSwK Ky0JS01TQ09OX1NFU1NJT05fVU5SRUdJU1RFUiwKKy19OworLQorLXN0cnVjdCBrbXNjb25fc2Vz c2lvbl9ldmVudCB7CistCXVuc2lnbmVkIGludCB0eXBlOworLQlzdHJ1Y3QgZGlzcGxheSAqZGlz cDsKKy19OworLQorLXR5cGVkZWYgaW50ICgqa21zY29uX3Nlc3Npb25fY2JfdCkoc3RydWN0IGtt c2Nvbl9zZXNzaW9uICpzZXNzaW9uLAorLQkJCQkgICBzdHJ1Y3Qga21zY29uX3Nlc3Npb25fZXZl bnQgKmV2ZW50LCB2b2lkICpkYXRhKTsKKy0KKyBpbnQga21zY29uX3NlYXRfbmV3KHN0cnVjdCBr bXNjb25fc2VhdCAqKm91dCwgc3RydWN0IGNvbmZfY3R4ICptYWluX2NvbmYsCisgCQkgICAgc3Ry dWN0IGttc2Nvbl9jb25mX3QgKmNvbmYsIHN0cnVjdCBldl9lbG9vcCAqZWxvb3AsIGttc2Nvbl9z ZWF0X2NiX3QgY2IsCisgCQkgICAgdm9pZCAqZGF0YSk7Cisgdm9pZCBrbXNjb25fc2VhdF9mcmVl KHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCk7Cisgdm9pZCBrbXNjb25fc2VhdF9zdGFydHVwKHN0 cnVjdCBrbXNjb25fc2VhdCAqc2VhdCk7CisraW50IGttc2Nvbl9zZWF0X3VwZGF0ZV94a2JfbGF5 b3V0KHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgY29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNo YXIgKmxheW91dCwKKysJCQkJICBjb25zdCBjaGFyICp2YXJpYW50LCBjb25zdCBjaGFyICpvcHRp b25zKTsKKyAKKy1jb25zdCBjaGFyICprbXNjb25fc2VhdF9nZXRfbmFtZShzdHJ1Y3Qga21zY29u X3NlYXQgKnNlYXQpOworLXN0cnVjdCBpbnB1dCAqa21zY29uX3NlYXRfZ2V0X2lucHV0KHN0cnVj dCBrbXNjb25fc2VhdCAqc2VhdCk7Cistc3RydWN0IGV2X2Vsb29wICprbXNjb25fc2VhdF9nZXRf ZWxvb3Aoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KTsKKyBzdHJ1Y3QgY29uZl9jdHggKmttc2Nv bl9zZWF0X2dldF9jb25mKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCk7CisgCistaW50IGttc2Nv bl9zZWF0X3JlZ2lzdGVyX3Nlc3Npb24oc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LCBzdHJ1Y3Qg a21zY29uX3Nlc3Npb24gKipvdXQsCistCQkJCSBrbXNjb25fc2Vzc2lvbl9jYl90IGNiLCB2b2lk ICpkYXRhKTsKKy0KKy12b2lkIGttc2Nvbl9zZXNzaW9uX3JlZihzdHJ1Y3Qga21zY29uX3Nlc3Np b24gKnNlc3MpOworLXZvaWQga21zY29uX3Nlc3Npb25fdW5yZWYoc3RydWN0IGttc2Nvbl9zZXNz aW9uICpzZXNzKTsKKy12b2lkIGttc2Nvbl9zZXNzaW9uX3VucmVnaXN0ZXIoc3RydWN0IGttc2Nv bl9zZXNzaW9uICpzZXNzKTsKKy1ib29sIGttc2Nvbl9zZXNzaW9uX2lzX3JlZ2lzdGVyZWQoc3Ry dWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKTsKKy0KKy1ib29sIGttc2Nvbl9zZXNzaW9uX2lzX2Fj dGl2ZShzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpOworIGludCBrbXNjb25fc2Vzc2lvbl9z ZXRfZm9yZWdyb3VuZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpOworIGludCBrbXNjb25f c2Vzc2lvbl9zZXRfYmFja2dyb3VuZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpOworIGJv b2wga21zY29uX3Nlc3Npb25fZ2V0X2ZvcmVncm91bmQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpz ZXNzKTsKKyAKKy12b2lkIGttc2Nvbl9zZXNzaW9uX2VuYWJsZShzdHJ1Y3Qga21zY29uX3Nlc3Np b24gKnNlc3MpOworLXZvaWQga21zY29uX3Nlc3Npb25fZGlzYWJsZShzdHJ1Y3Qga21zY29uX3Nl c3Npb24gKnNlc3MpOworLWJvb2wga21zY29uX3Nlc3Npb25faXNfZW5hYmxlZChzdHJ1Y3Qga21z Y29uX3Nlc3Npb24gKnNlc3MpOworIHZvaWQga21zY29uX3Nlc3Npb25fYmVsbChzdHJ1Y3Qga21z Y29uX3Nlc3Npb24gKnNlc3MpOworIHZvaWQga21zY29uX3Nlc3Npb25fc2V0X2xlZHMoc3RydWN0 IGttc2Nvbl9zZXNzaW9uICpzZXNzLCB1bnNpZ25lZCBpbnQgc2Nyb2xsX2xvY2ssCisgCQkJICAg ICB1bnNpZ25lZCBpbnQgbnVtX2xvY2ssIHVuc2lnbmVkIGludCBjYXBzX2xvY2spOworIAorLXZv aWQga21zY29uX3Nlc3Npb25fbm90aWZ5X2RlYWN0aXZhdGVkKHN0cnVjdCBrbXNjb25fc2Vzc2lv biAqc2Vzcyk7CistCisgI2VuZGlmIC8qIEtNU0NPTl9TRUFUX0ggKi8KK2RpZmYgLS1naXQgYS9z cmMva21zY29uX3Rlcm1pbmFsLmMgYi9zcmMva21zY29uX3Rlcm1pbmFsLmMKK2luZGV4IDM5MWNk NTMuLmM1NTYyZjYgMTAwNjQ0CistLS0gYS9zcmMva21zY29uX3Rlcm1pbmFsLmMKKysrKyBiL3Ny Yy9rbXNjb25fdGVybWluYWwuYworQEAgLTY0NSw3ICs2NDUsNyBAQCBzdGF0aWMgdm9pZCByb3Rh dGVfY2N3X2FsbChzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtKQorIAl1cGRhdGVfcG9pbnRl cl9tYXhfYWxsKHRlcm0pOworIH0KKyAKKy1zdGF0aWMgaW50IGFkZF9kaXNwbGF5KHN0cnVjdCBr bXNjb25fdGVybWluYWwgKnRlcm0sIHN0cnVjdCBkaXNwbGF5ICpkaXNwKQorK2ludCB0ZXJtaW5h bF9hZGRfZGlzcGxheShzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtLCBzdHJ1Y3QgZGlzcGxh eSAqZGlzcCkKKyB7CisgCXN0cnVjdCBzaGxfZGxpc3QgKml0ZXI7CisgCXN0cnVjdCBzY3JlZW4g KnNjcjsKK0BAIC03NDEsNyArNzQxLDcgQEAgc3RhdGljIHZvaWQgZnJlZV9zY3JlZW4oc3RydWN0 IHNjcmVlbiAqc2NyLCBib29sIHVwZGF0ZSkKKyAJdGVybWluYWxfdXBkYXRlX3NpemVfbm90aWZ5 KHRlcm0pOworIH0KKyAKKy1zdGF0aWMgdm9pZCBybV9kaXNwbGF5KHN0cnVjdCBrbXNjb25fdGVy bWluYWwgKnRlcm0sIHN0cnVjdCBkaXNwbGF5ICpkaXNwKQorK3ZvaWQgdGVybWluYWxfcm1fZGlz cGxheShzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtLCBzdHJ1Y3QgZGlzcGxheSAqZGlzcCkK KyB7CisgCXN0cnVjdCBzaGxfZGxpc3QgKml0ZXI7CisgCXN0cnVjdCBzY3JlZW4gKnNjcjsKK0BA IC0xMDgwLDcgKzEwODAsMzAgQEAgc3RhdGljIHZvaWQgdGVybWluYWxfY2xvc2Uoc3RydWN0IGtt c2Nvbl90ZXJtaW5hbCAqdGVybSkKKyAJdGVybS0+b3BlbmVkID0gZmFsc2U7CisgfQorIAorLXN0 YXRpYyB2b2lkIHRlcm1pbmFsX2Rlc3Ryb3koc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybSkK Kyt2b2lkIHRlcm1pbmFsX3JlZnJlc2hfZGlzcGxheXMoc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAq dGVybSkKKyt7CisrCWlmICh0ZXJtLT5wb2ludGVyLnZpc2libGUpCisrCQlod19jdXJzb3Jfc2hv dyh0ZXJtLCB0ZXJtLT5wb2ludGVyLngsIHRlcm0tPnBvaW50ZXIueSk7CisrCXJlZHJhd19hbGxf dGV4dCh0ZXJtKTsKKyt9CisrCisrdm9pZCB0ZXJtaW5hbF9hY3RpdmF0ZShzdHJ1Y3Qga21zY29u X3Rlcm1pbmFsICp0ZXJtKQorK3sKKysJdGVybS0+YXdha2UgPSB0cnVlOworKwlpZiAoIXRlcm0t Pm9wZW5lZCkKKysJCXRlcm1pbmFsX29wZW4odGVybSk7CisrCWlmICh0ZXJtLT5wb2ludGVyLnZp c2libGUpCisrCQlod19jdXJzb3Jfc2hvdyh0ZXJtLCB0ZXJtLT5wb2ludGVyLngsIHRlcm0tPnBv aW50ZXIueSk7CisrCXJlZHJhd19hbGxfdGV4dCh0ZXJtKTsKKyt9CisrCisrdm9pZCB0ZXJtaW5h bF9kZWFjdGl2YXRlKHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0pCisreworKwl0ZXJtLT5h d2FrZSA9IGZhbHNlOworKwlod19jdXJzb3JfaGlkZSh0ZXJtKTsKKyt9CisrCisrdm9pZCB0ZXJt aW5hbF9kZXN0cm95KHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0pCisgeworIAlsb2dfZGVi dWcoImZyZWUgdGVybWluYWwgb2JqZWN0ICVwIiwgdGVybSk7CisgCitAQCAtMTA5OSw0MyArMTEy Miw2IEBAIHN0YXRpYyB2b2lkIHRlcm1pbmFsX2Rlc3Ryb3koc3RydWN0IGttc2Nvbl90ZXJtaW5h bCAqdGVybSkKKyAJZnJlZSh0ZXJtKTsKKyB9CisgCistc3RhdGljIGludCBzZXNzaW9uX2V2ZW50 KHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IGttc2Nvbl9zZXNzaW9uX2V2 ZW50ICpldiwKKy0JCQkgdm9pZCAqZGF0YSkKKy17CistCXN0cnVjdCBrbXNjb25fdGVybWluYWwg KnRlcm0gPSBkYXRhOworLQorLQlzd2l0Y2ggKGV2LT50eXBlKSB7CistCWNhc2UgS01TQ09OX1NF U1NJT05fRElTUExBWV9ORVc6CistCQlhZGRfZGlzcGxheSh0ZXJtLCBldi0+ZGlzcCk7CistCQli cmVhazsKKy0JY2FzZSBLTVNDT05fU0VTU0lPTl9ESVNQTEFZX0dPTkU6CistCQlybV9kaXNwbGF5 KHRlcm0sIGV2LT5kaXNwKTsKKy0JCWJyZWFrOworLQljYXNlIEtNU0NPTl9TRVNTSU9OX0RJU1BM QVlfUkVGUkVTSDoKKy0JCWlmICh0ZXJtLT5wb2ludGVyLnZpc2libGUpCistCQkJaHdfY3Vyc29y X3Nob3codGVybSwgdGVybS0+cG9pbnRlci54LCB0ZXJtLT5wb2ludGVyLnkpOworLQkJcmVkcmF3 X2FsbF90ZXh0KHRlcm0pOworLQkJYnJlYWs7CistCWNhc2UgS01TQ09OX1NFU1NJT05fQUNUSVZB VEU6CistCQl0ZXJtLT5hd2FrZSA9IHRydWU7CistCQlpZiAoIXRlcm0tPm9wZW5lZCkKKy0JCQl0 ZXJtaW5hbF9vcGVuKHRlcm0pOworLQkJaWYgKHRlcm0tPnBvaW50ZXIudmlzaWJsZSkKKy0JCQlo d19jdXJzb3Jfc2hvdyh0ZXJtLCB0ZXJtLT5wb2ludGVyLngsIHRlcm0tPnBvaW50ZXIueSk7Cist CQlyZWRyYXdfYWxsX3RleHQodGVybSk7CistCQlicmVhazsKKy0JY2FzZSBLTVNDT05fU0VTU0lP Tl9ERUFDVElWQVRFOgorLQkJdGVybS0+YXdha2UgPSBmYWxzZTsKKy0JCWh3X2N1cnNvcl9oaWRl KHRlcm0pOworLQkJYnJlYWs7CistCWNhc2UgS01TQ09OX1NFU1NJT05fVU5SRUdJU1RFUjoKKy0J CXRlcm1pbmFsX2Rlc3Ryb3kodGVybSk7CistCQlicmVhazsKKy0JfQorLQorLQlyZXR1cm4gMDsK Ky19CistCisgc3RhdGljIHZvaWQgcHR5X2lucHV0KHN0cnVjdCBrbXNjb25fcHR5ICpwdHksIGNv bnN0IGNoYXIgKnU4LCBzaXplX3QgbGVuLCB2b2lkICpkYXRhKQorIHsKKyAJc3RydWN0IGttc2Nv bl90ZXJtaW5hbCAqdGVybSA9IGRhdGE7CitAQCAtMTE2MywyNiArMTE0OSwyNSBAQCBzdGF0aWMg dm9pZCB3cml0ZV9ldmVudChzdHJ1Y3QgdHNtX3Z0ZSAqdnRlLCBjb25zdCBjaGFyICp1OCwgc2l6 ZV90IGxlbiwgdm9pZCAqZAorIAlrbXNjb25fcHR5X3dyaXRlKHRlcm0tPnB0eSwgdTgsIGxlbik7 CisgfQorIAorLWludCBrbXNjb25fdGVybWluYWxfcmVnaXN0ZXIoc3RydWN0IGttc2Nvbl9zZXNz aW9uICoqb3V0LCBzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsCistCQkJICAgICB1bnNpZ25lZCBp bnQgdnRucikKKytzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtaW5hbF9uZXcoc3RydWN0IGtt c2Nvbl9zZXNzaW9uICpzZXNzaW9uLCB1bnNpZ25lZCBpbnQgdnRuciwKKysJCQkJICAgICBzdHJ1 Y3QgY29uZl9jdHggKmNvbmZfY3R4LCBzdHJ1Y3QgZXZfZWxvb3AgKmVsb29wLAorKwkJCQkgICAg IHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0IGNoYXIgKnNlYXRfbmFtZSkKKyB7CisgCXN0cnVj dCBrbXNjb25fdGVybWluYWwgKnRlcm07CisgCWludCByZXQ7CisgCistCWlmICghb3V0IHx8ICFz ZWF0KQorLQkJcmV0dXJuIC1FSU5WQUw7CistCisgCXRlcm0gPSBtYWxsb2Moc2l6ZW9mKCp0ZXJt KSk7CisgCWlmICghdGVybSkKKy0JCXJldHVybiAtRU5PTUVNOworKwkJcmV0dXJuIE5VTEw7Cisg CisgCW1lbXNldCh0ZXJtLCAwLCBzaXplb2YoKnRlcm0pKTsKKyAJdGVybS0+cmVmID0gMTsKKy0J dGVybS0+ZWxvb3AgPSBrbXNjb25fc2VhdF9nZXRfZWxvb3Aoc2VhdCk7CistCXRlcm0tPmlucHV0 ID0ga21zY29uX3NlYXRfZ2V0X2lucHV0KHNlYXQpOworKwl0ZXJtLT5zZXNzaW9uID0gc2Vzc2lv bjsKKysJdGVybS0+ZWxvb3AgPSBlbG9vcDsKKysJdGVybS0+aW5wdXQgPSBpbnB1dDsKKyAJc2hs X2RsaXN0X2luaXQoJnRlcm0tPnNjcmVlbnMpOworIAorLQl0ZXJtLT5jb25mX2N0eCA9IGttc2Nv bl9zZWF0X2dldF9jb25mKHNlYXQpOworKwl0ZXJtLT5jb25mX2N0eCA9IGNvbmZfY3R4OworIAl0 ZXJtLT5jb25mID0gY29uZl9jdHhfZ2V0X21lbSh0ZXJtLT5jb25mX2N0eCk7CisgCisgCXN0cm5j cHkodGVybS0+Zm9udF9hdHRyLm5hbWUsIHRlcm0tPmNvbmYtPmZvbnRfbmFtZSwgS01TQ09OX0ZP TlRfTUFYX05BTUUgLSAxKTsKK0BAIC0xMjIxLDcgKzEyMDYsNyBAQCBpbnQga21zY29uX3Rlcm1p bmFsX3JlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqKm91dCwgc3RydWN0IGttc2Nvbl9z ZWF0ICpzZQorIAkJZ290byBlcnJfZm9udDsKKyAKKyAJcmV0ID0ga21zY29uX3B0eV9zZXRfY29u Zih0ZXJtLT5wdHksIHRlcm0tPmNvbmYtPnRlcm0sICJ0cnVlY29sb3IiLCB0ZXJtLT5jb25mLT5h cmd2LAorLQkJCQkgIGttc2Nvbl9zZWF0X2dldF9uYW1lKHNlYXQpLCB2dG5yLCB0ZXJtLT5jb25m LT5yZXNldF9lbnYsCisrCQkJCSAgc2VhdF9uYW1lLCB2dG5yLCB0ZXJtLT5jb25mLT5yZXNldF9l bnYsCisgCQkJCSAgdGVybS0+Y29uZi0+YmFja3NwYWNlX2RlbGV0ZSk7CisgCWlmIChyZXQpCisg CQlnb3RvIGVycl9wdHk7CitAQCAtMTI0MSwyMCArMTIyNiwxMSBAQCBpbnQga21zY29uX3Rlcm1p bmFsX3JlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqKm91dCwgc3RydWN0IGttc2Nvbl9z ZWF0ICpzZQorIAkJCWdvdG8gZXJyX2lucHV0OworIAl9CisgCistCXJldCA9IGttc2Nvbl9zZWF0 X3JlZ2lzdGVyX3Nlc3Npb24oc2VhdCwgJnRlcm0tPnNlc3Npb24sIHNlc3Npb25fZXZlbnQsIHRl cm0pOworLQlpZiAocmV0KSB7CistCQlsb2dfZXJyb3IoImNhbm5vdCByZWdpc3RlciBzZXNzaW9u IGZvciB0ZXJtaW5hbDogJWQiLCByZXQpOworLQkJZ290byBlcnJfcG9pbnRlcjsKKy0JfQorLQor IAlldl9lbG9vcF9yZWYodGVybS0+ZWxvb3ApOworIAlpbnB1dF9yZWYodGVybS0+aW5wdXQpOwor LQkqb3V0ID0gdGVybS0+c2Vzc2lvbjsKKyAJbG9nX2RlYnVnKCJuZXcgdGVybWluYWwgb2JqZWN0 ICVwIiwgdGVybSk7CistCXJldHVybiAwOworKwlyZXR1cm4gdGVybTsKKyAKKy1lcnJfcG9pbnRl cjoKKy0JaW5wdXRfdW5yZWdpc3Rlcl9wb2ludGVyX2NiKHRlcm0tPmlucHV0LCBwb2ludGVyX2V2 ZW50LCB0ZXJtKTsKKyBlcnJfaW5wdXQ6CisgCWlucHV0X3VucmVnaXN0ZXJfa2V5X2NiKHRlcm0t PmlucHV0LCBpbnB1dF9ldmVudCwgdGVybSk7CisgZXJyX3B0eWZkOgorQEAgLTEyNjksNSArMTI0 NSw1IEBAIGVycl9jb246CisgCXRzbV9zY3JlZW5fdW5yZWYodGVybS0+Y29uc29sZSk7CisgZXJy X2ZyZWU6CisgCWZyZWUodGVybSk7CistCXJldHVybiByZXQ7CisrCXJldHVybiBOVUxMOworIH0K K2RpZmYgLS1naXQgYS9zcmMva21zY29uX3Rlcm1pbmFsLmggYi9zcmMva21zY29uX3Rlcm1pbmFs LmgKK2luZGV4IGNkNzRiYWIuLjU1MjI0MmMgMTAwNjQ0CistLS0gYS9zcmMva21zY29uX3Rlcm1p bmFsLmgKKysrKyBiL3NyYy9rbXNjb25fdGVybWluYWwuaAorQEAgLTMzLDIzICszMywyMSBAQAor ICNpZm5kZWYgS01TQ09OX1RFUk1JTkFMX0gKKyAjZGVmaW5lIEtNU0NPTl9URVJNSU5BTF9ICisg CistI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlICJr bXNjb25fc2VhdC5oIgorLQorLSNpZmRlZiBCVUlMRF9FTkFCTEVfU0VTU0lPTl9URVJNSU5BTAor LQorLWludCBrbXNjb25fdGVybWluYWxfcmVnaXN0ZXIoc3RydWN0IGttc2Nvbl9zZXNzaW9uICoq b3V0LCBzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsCistCQkJICAgICB1bnNpZ25lZCBpbnQgdnRu cik7CistCistI2Vsc2UgLyogIUJVSUxEX0VOQUJMRV9TRVNTSU9OX1RFUk1JTkFMICovCistCist c3RhdGljIGlubGluZSBpbnQga21zY29uX3Rlcm1pbmFsX3JlZ2lzdGVyKHN0cnVjdCBrbXNjb25f c2Vzc2lvbiAqKm91dCwgc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LAorLQkJCQkJICAgdW5zaWdu ZWQgaW50IHZ0bnIpCisteworLQlyZXR1cm4gLUVPUE5PVFNVUFA7CistfQorLQorLSNlbmRpZiAv KiBCVUlMRF9FTkFCTEVfU0VTU0lPTl9URVJNSU5BTCAqLworK3N0cnVjdCBjb25mX2N0eDsKKytz dHJ1Y3QgZGlzcGxheTsKKytzdHJ1Y3QgZXZfZWxvb3A7Cisrc3RydWN0IGttc2Nvbl90ZXJtaW5h bDsKKytzdHJ1Y3Qga21zY29uX3Nlc3Npb247Cisrc3RydWN0IGlucHV0OworKworK3N0cnVjdCBr bXNjb25fdGVybWluYWwgKnRlcm1pbmFsX25ldyhzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3Np b24sIHVuc2lnbmVkIGludCB2dG5yLAorKwkJCQkgICAgIHN0cnVjdCBjb25mX2N0eCAqY29uZl9j dHgsIHN0cnVjdCBldl9lbG9vcCAqZWxvb3AsCisrCQkJCSAgICAgc3RydWN0IGlucHV0ICppbnB1 dCwgY29uc3QgY2hhciAqc2VhdF9uYW1lKTsKKyt2b2lkIHRlcm1pbmFsX2Rlc3Ryb3koc3RydWN0 IGttc2Nvbl90ZXJtaW5hbCAqdGVybSk7CisraW50IHRlcm1pbmFsX2FkZF9kaXNwbGF5KHN0cnVj dCBrbXNjb25fdGVybWluYWwgKnRlcm0sIHN0cnVjdCBkaXNwbGF5ICpkaXNwKTsKKyt2b2lkIHRl cm1pbmFsX3JtX2Rpc3BsYXkoc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybSwgc3RydWN0IGRp c3BsYXkgKmRpc3ApOworK3ZvaWQgdGVybWluYWxfcmVmcmVzaF9kaXNwbGF5cyhzdHJ1Y3Qga21z Y29uX3Rlcm1pbmFsICp0ZXJtKTsKKyt2b2lkIHRlcm1pbmFsX2FjdGl2YXRlKHN0cnVjdCBrbXNj b25fdGVybWluYWwgKnRlcm0pOworK3ZvaWQgdGVybWluYWxfZGVhY3RpdmF0ZShzdHJ1Y3Qga21z Y29uX3Rlcm1pbmFsICp0ZXJtKTsKKyAKKyAjZW5kaWYgLyogS01TQ09OX1RFUk1JTkFMX0ggKi8K K2RpZmYgLS1naXQgYS9zcmMvbWVzb24uYnVpbGQgYi9zcmMvbWVzb24uYnVpbGQKK2luZGV4IDk1 NDdmZTEuLjFjNGJhMTIgMTAwNjQ0CistLS0gYS9zcmMvbWVzb24uYnVpbGQKKysrKyBiL3NyYy9t ZXNvbi5idWlsZAorQEAgLTg4LDE2ICs4OCwyNyBAQCBrbXNjb25fc3JjcyA9IFsKKyAgICdrbXNj b25fY29uZi5jJywKKyAgICdrbXNjb25faXNzdWUuYycsCisgICAna21zY29uX21haW4uYycsCisr ICAna21zY29uX3Rlcm1pbmFsLmMnLAorIF0KKy1pZiBlbmFibGVfc2Vzc2lvbl9kdW1teQorLSAg a21zY29uX3NyY3MgKz0gJ2ttc2Nvbl9kdW1teS5jJworLWVuZGlmCistaWYgZW5hYmxlX3Nlc3Np b25fdGVybWluYWwKKy0gIGttc2Nvbl9zcmNzICs9ICdrbXNjb25fdGVybWluYWwuYycKKytrbXNj b25fZGVwID0gW3hrYmNvbW1vbl9kZXBzLAorKyAgbGlidHNtX2RlcHMsCisrICB0aHJlYWRzX2Rl cHMsCisrICBkbF9kZXBzLAorKyAgY29uZl9kZXBzLAorKyAgc2hsX2RlcHMsCisrICBlbG9vcF9k ZXBzLAorKyAgdXRlcm1fZGVwcywKKysgIHJlbmRlcl9kZXBzLAorKyAgZm9udF9kZXBzLAorK10K KysKKytpZiBlbmFibGVfZGJ1cworKyAga21zY29uX3NyY3MgKz0gJ2RidXMuYycKKysgIGttc2Nv bl9kZXAgKz0gZGJ1c19kZXBzCisgZW5kaWYKKyBrbXNjb24gPSBleGVjdXRhYmxlKCdrbXNjb24n LCBrbXNjb25fc3JjcywKKy0gIGRlcGVuZGVuY2llczogW3hrYmNvbW1vbl9kZXBzLCBsaWJ0c21f ZGVwcywgdGhyZWFkc19kZXBzLCBkbF9kZXBzLCBjb25mX2RlcHMsIHNobF9kZXBzLCBlbG9vcF9k ZXBzLCB1dGVybV9kZXBzLCByZW5kZXJfZGVwcywgZm9udF9kZXBzXSwKKysgIGRlcGVuZGVuY2ll czoga21zY29uX2RlcCwKKyAgIGV4cG9ydF9keW5hbWljOiB0cnVlLAorICAgaW5zdGFsbDogdHJ1 ZSwKKy0gIGluc3RhbGxfZGlyOiBsaWJleGVjZGlyLAorKyAgaW5zdGFsbF9kaXI6IGJpbmRpciwK KyApCitkaWZmIC0tZ2l0IGEvc3JjL3NobC9kbGlzdC5oIGIvc3JjL3NobC9kbGlzdC5oCitpbmRl eCA4M2NkMjMzLi4wYWY1MDk0IDEwMDY0NAorLS0tIGEvc3JjL3NobC9kbGlzdC5oCisrKysgYi9z cmMvc2hsL2RsaXN0LmgKK0BAIC0xMDIsNiArMTAyLDE2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBz aGxfZGxpc3RfZW1wdHkoc3RydWN0IHNobF9kbGlzdCAqaGVhZCkKKyAKKyAjZGVmaW5lIHNobF9k bGlzdF9sYXN0KGhlYWQsIHR5cGUsIG1lbWJlcikgc2hsX2RsaXN0X2VudHJ5KChoZWFkKS0+cHJl diwgdHlwZSwgbWVtYmVyKQorIAorKyNkZWZpbmUgc2hsX2RsaXN0X25leHQoaXRlciwgaGVhZCwg bWVtYmVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysJKChpdGVyKS0+bWVtYmVyLm5leHQgPT0gKGhlYWQpICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysJCSA/IE5V TEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKwkJIDogc2hsX2RsaXN0X2VudHJ5KChpdGVyKS0+bWVt YmVyLm5leHQsIHR5cGVvZigqaXRlciksIGxpc3QpKQorKworKyNkZWZpbmUgc2hsX2RsaXN0X3By ZXYoaXRlciwgaGVhZCwgbWVtYmVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysJKChpdGVyKS0+bWVtYmVyLnByZXYgPT0gKGhlYWQp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKysJCSA/IE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKwkJIDogc2hsX2RsaXN0X2Vu dHJ5KChpdGVyKS0+bWVtYmVyLnByZXYsIHR5cGVvZigqaXRlciksIGxpc3QpKQorKworICNkZWZp bmUgc2hsX2RsaXN0X2Zvcl9lYWNoKGl0ZXIsIGhlYWQpIGZvciAoaXRlciA9IChoZWFkKS0+bmV4 dDsgaXRlciAhPSAoaGVhZCk7IGl0ZXIgPSBpdGVyLT5uZXh0KQorIAorICNkZWZpbmUgc2hsX2Rs aXN0X2Zvcl9lYWNoX2J1dF9vbmUoaXRlciwgc3RhcnQsIGhlYWQpICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0X2lu cHV0LmMgYi90ZXN0cy90ZXN0X2lucHV0LmMKK2luZGV4IDBlY2VmYzAuLmIyMThlZGMgMTAwNjQ0 CistLS0gYS90ZXN0cy90ZXN0X2lucHV0LmMKKysrKyBiL3Rlc3RzL3Rlc3RfaW5wdXQuYworQEAg LTEyOCwxMSArMTI4LDEyIEBAIHN0YXRpYyB2b2lkIHNldHVwX2lucHV0KHN0cnVjdCB1dGVybV9t b25pdG9yICptb24pCisgCWlmIChyZXQpCisgCQlyZXR1cm47CisgCXJldCA9IGlucHV0X3NldF9r ZXltYXAoaW5wdXQsIGlucHV0X2NvbmYueGtiX21vZGVsLCBpbnB1dF9jb25mLnhrYl9sYXlvdXQs CistCQkJICAgICAgIGlucHV0X2NvbmYueGtiX3ZhcmlhbnQsIGlucHV0X2NvbmYueGtiX29wdGlv bnMsIGlucHV0X2NvbmYubG9jYWxlLAorLQkJCSAgICAgICBpbnB1dF9jb25mLnhrYl9rZXltYXAs IGlucHV0X2NvbmYueGtiX2NvbXBvc2VfZmlsZSwKKy0JCQkgICAgICAgY29tcG9zZV9maWxlX2xl bik7CisrCQkJICAgICAgIGlucHV0X2NvbmYueGtiX3ZhcmlhbnQsIGlucHV0X2NvbmYueGtiX29w dGlvbnMsCisrCQkJICAgICAgIGlucHV0X2NvbmYueGtiX2tleW1hcCk7CisgCWlmIChyZXQpCisg CQlyZXR1cm47CisrCisrCWlucHV0X3NldF9jb21wb3NlKGlucHV0LCBpbnB1dF9jb25mLmxvY2Fs ZSwgY29tcG9zZV9maWxlLCBjb21wb3NlX2ZpbGVfbGVuKTsKKyAJaW5wdXRfc2V0X2NvbmYoaW5w dXQsIDI1MCwgNTAsIHRydWUpOworIAlyZXQgPSBpbnB1dF9yZWdpc3Rlcl9rZXlfY2IoaW5wdXQs IGlucHV0X2Fycml2ZWQsIE5VTEwpOworIAlpZiAocmV0KQorLS0gCisyLjU0LjAKKwo=