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: Neal Gompa To: git-commits@fedoraproject.org Subject: [rpms/ffmpeg] epel9-next: Add patches to support enhanced RTMP and AV1 encoding through VA-API Date: Mon, 20 Jul 2026 17:31:11 GMT Message-ID: <178456867116.1.11468140611632299272.rpms-ffmpeg-d30a3b67b368@fedoraproject.org> List-ID: X-Git-Repo: rpms/ffmpeg X-Git-Branch: epel9-next X-Git-Rev: d30a3b67b3683d62ac44a073e0cc730e4089fb1d ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZmZtcGVnCiAgICAgICAgICAgIEJyYW5jaCA6IGVwZWw5LW5leHQKICAgICAg ICAgICAgQ29tbWl0IDogZDMwYTNiNjdiMzY4M2Q2MmFjNDRhMDczZTBjYzczMGU0MDg5ZmIxZAog ICAgICAgICAgICBBdXRob3IgOiBOZWFsIEdvbXBhIDxuZ29tcGFAZmVkb3JhcHJvamVjdC5vcmc+ CiAgICAgICAgICAgIERhdGUgICA6IDIwMjMtMTEtMTBUMDc6MTM6MzEtMDU6MDAKICAgICAgICAg ICAgU3RhdHMgIDogKzUyMzAvLTIgaW4gNSBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0 dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZmZtcGVnL2MvZDMwYTNiNjdiMzY4M2Q2 MmFjNDRhMDczZTBjYzczMGU0MDg5ZmIxZD9icmFuY2g9ZXBlbDktbmV4dAoKICAgICAgICAgICAg TG9nOgogICAgICAgICAgICBBZGQgcGF0Y2hlcyB0byBzdXBwb3J0IGVuaGFuY2VkIFJUTVAgYW5k IEFWMSBlbmNvZGluZyB0aHJvdWdoIFZBLUFQSQoKLSBGb3JjZSBBQUMgZGVjb2RpbmcgdGhyb3Vn aCBmZGstYWFjLWZyZWUKCi0tLQpkaWZmIC0tZ2l0IGEvRkZtcGVnLWRldmVsLXYxMC1TdXBwb3J0 LWVuaGFuY2VkLWZsdi1pbi1GRm1wZWcucGF0Y2ggYi9GRm1wZWctZGV2ZWwtdjEwLVN1cHBvcnQt ZW5oYW5jZWQtZmx2LWluLUZGbXBlZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4yOGZmN2JiCi0tLSAvZGV2L251bGwKKysrIGIvRkZtcGVnLWRldmVsLXYxMC1TdXBw b3J0LWVuaGFuY2VkLWZsdi1pbi1GRm1wZWcucGF0Y2gKQEAgLTAsMCArMSwxMjMwIEBACitGcm9t IHBhdGNod29yayBNb24gTWF5IDE1IDA4OjMxOjU2IDIwMjMKK0NvbnRlbnQtVHlwZTogdGV4dC9w bGFpbjsgY2hhcnNldD0idXRmLTgiCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UcmFuc2Zl ci1FbmNvZGluZzogN2JpdAorWC1QYXRjaHdvcmstU3VibWl0dGVyOiBTdGV2ZW4gTGl1IDxscUBj aGluYWZmbXBlZy5vcmc+CitYLVBhdGNod29yay1JZDogNDE2MTUKK0RlbGl2ZXJlZC1UbzogZmZt cGVncGF0Y2h3b3JrMkBnbWFpbC5jb20KK1JlY2VpdmVkOiBieSAyMDAyOmEwNTo2YTIwOmJhOTE6 YjA6MTA1OmZlYjo3MWYyIHdpdGggU01UUCBpZAorIGZiMTdjc3AxNDQzODk2cHpiOworICAgICAg ICBNb24sIDE1IE1heSAyMDIzIDAxOjMzOjAxIC0wNzAwIChQRFQpCitYLUdvb2dsZS1TbXRwLVNv dXJjZTogCisgQUNISFVaNjlQZ0c2ZnEvS0Y2SUllS29WVjI5ZmtnN2NBSmZtUEQzTG5uVG1JOVlZ VkFQby9hbFptN0IrN2YrRm9PZ245ckhkWVVvNQorWC1SZWNlaXZlZDogYnkgMjAwMjphMTc6OTA3 Ojk3Y2I6YjA6OTZhOjQ2NTQ6OWE1NyB3aXRoIFNNVFAgaWQKKyBqczExLTIwMDIwYTE3MDkwNzk3 Y2IwMGIwMDk2YTQ2NTQ5YTU3bXIxNjg2OTc1OGVqYy41NC4xNjg0MTM5NTgwOTUxOworICAgICAg ICBNb24sIDE1IE1heSAyMDIzIDAxOjMzOjAwIC0wNzAwIChQRFQpCitBUkMtU2VhbDogaT0xOyBh PXJzYS1zaGEyNTY7IHQ9MTY4NDEzOTU4MDsgY3Y9bm9uZTsKKyAgICAgICAgZD1nb29nbGUuY29t OyBzPWFyYy0yMDE2MDgxNjsKKyAgICAgICAgYj1pT1JFVWt2V0RMcVNKbDQwdHJNN3dnM3VmRVEy M0ZPQkxqcHNsWHNkczVIV3lLNDhiLzc2bEZnUXdSZkhKYkhxYmgKKyAgICAgICAgIHZjNE42RG9w QjVtc1JpMFZLL3BKbkRBZHR1eVFSMnRxRWdMdmJacEhKempLMXpIVUtSVjVKSGxtVmhOdlFPZllX cE1SCisgICAgICAgICBWTC8xT01tYlRjdEV6YTJaNy9WWXNyVkxITHk0UU9sTGg0dy9KZFJjeC83 cmhpT0ExaXhwTXhDNHFVYjVJR01obnFlbgorICAgICAgICAgUDJkRGJBb3FkbUdVWnRtQTRWT2Z4 a2drSG5JYWVGditVZmZKR0laczFMeWI3YzN6eXR3ZHBMTGllelJ6VkxXUWFTdFcKKyAgICAgICAg IFRWZGNEazQ1cE9yQTI5bFo0NlRxOFlOSlA3TzV6ZlNldkZJcXJCODVtVWpTTm95WmkyNGd6MTl5 eEphLzA5TzFxYitvCisgICAgICAgICB0aHp3PT0KK0FSQy1NZXNzYWdlLVNpZ25hdHVyZTogaT0x OyBhPXJzYS1zaGEyNTY7IGM9cmVsYXhlZC9yZWxheGVkOyBkPWdvb2dsZS5jb207Cisgcz1hcmMt MjAxNjA4MTY7CisgICAgICAgIGg9c2VuZGVyOmVycm9ycy10bzpjb250ZW50LXRyYW5zZmVyLWVu Y29kaW5nOmNjOnJlcGx5LXRvCisgICAgICAgICA6bGlzdC1zdWJzY3JpYmU6bGlzdC1oZWxwOmxp c3QtcG9zdDpsaXN0LWFyY2hpdmU6bGlzdC11bnN1YnNjcmliZQorICAgICAgICAgOmxpc3QtaWQ6 cHJlY2VkZW5jZTpzdWJqZWN0OmZlZWRiYWNrLWlkOm1pbWUtdmVyc2lvbjpyZWZlcmVuY2VzCisg ICAgICAgICA6aW4tcmVwbHktdG86bWVzc2FnZS1pZDpkYXRlOnRvOmZyb206ZGVsaXZlcmVkLXRv OworICAgICAgICBiaD1RZzd1dWdPNnVxUUNYNjcrU2RORUxWWUYzOS9XRFBSREZ0MStIN3RvUStz PTsKKyAgICAgICAgYj1iMWN4ZHFTVkcxT2MxNTdIbE5VQStMZkpoa25VL25yM2c1d25TTFhtUDdE clIrUlFwMkNGd0dmalYrd1RrZldMb2sKKyAgICAgICAgIFd5ZHVta1lHMmJpT3BtaE1pK21HNGNp NVd2VTJSOWJ2MXFwS0dyZVJwc0ltR21qdWJReHU1Q0M5Z3dtZW56M2MrMXY4CisgICAgICAgICBw dStxa3cxNDJ3OXVNZXJqT3BhdzZvV3ZhSHE5aFdHVnk2VW5pMzNBcU1KaGZqOVdxU3dCQ2V6azYy a3J4ekJhci9WTgorICAgICAgICAgWE5ienpwQU1JdVhjajBEY0hTNzBvREhPVGJ0THE0dURMR3Br UXduQnBZYnN3ZkdEMGg4TitCK0JTQ3MzWnFOL2w1SmMKKyAgICAgICAgIGp1SVFZNGkzamEyVzF5 SG02Wmx6ZTJxVThsRlJQelJ3VkJaQnY5dnJvODhWeUZpYzBVWng5d1J1SXFKQjlCWkliMGgvCisg ICAgICAgICB2a2lBPT0KK0FSQy1BdXRoZW50aWNhdGlvbi1SZXN1bHRzOiBpPTE7IG14Lmdvb2ds ZS5jb207CisgICAgICAgc3BmPXBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1wZWctZGV2 ZWwtYm91bmNlc0BmZm1wZWcub3JnCisgZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBlcm1p dHRlZCBzZW5kZXIpCisgc210cC5tYWlsZnJvbT1mZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcu b3JnCitSZXR1cm4tUGF0aDogPGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+CitSZWNl aXZlZDogZnJvbSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChmZmJveDAtYmcuZmZtcGVnLm9yZy4g Wzc5LjEyNC4xNy4xMDBdKQorICAgICAgICBieSBteC5nb29nbGUuY29tIHdpdGggRVNNVFAgaWQK KyBndDM3LTIwMDIwYTE3MDkwNzJkYTUwMGIwMDk2YjFjMzg0NThkc2kyODI4MTE2ZWpjLjQwOS4y MDIzLjA1LjE1LjAxLjMzLjAwOworICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjMzOjAwIC0w NzAwIChQRFQpCitSZWNlaXZlZC1TUEY6IHBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1w ZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCisgZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFz IHBlcm1pdHRlZCBzZW5kZXIpIGNsaWVudC1pcD03OS4xMjQuMTcuMTAwOworQXV0aGVudGljYXRp b24tUmVzdWx0czogbXguZ29vZ2xlLmNvbTsKKyAgICAgICBzcGY9cGFzcyAoZ29vZ2xlLmNvbTog ZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKKyBkZXNpZ25hdGVzIDc5 LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRlcikKKyBzbXRwLm1haWxmcm9tPWZmbXBlZy1k ZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKK1JlY2VpdmVkOiBmcm9tIFsxMjcuMC4xLjFdIChsb2Nh bGhvc3QgWzEyNy4wLjAuMV0pCisJYnkgZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoUG9zdGZpeCkg d2l0aCBFU01UUCBpZCBEOTMwNTY4QkUwQzsKKwlNb24sIDE1IE1heSAyMDIzIDExOjMyOjU3ICsw MzAwIChFRVNUKQorWC1PcmlnaW5hbC1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK0RlbGl2 ZXJlZC1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK1JlY2VpdmVkOiBmcm9tIGJnNC5leG1h aWwucXEuY29tIChiZzQuZXhtYWlsLnFxLmNvbSBbNDMuMTU1LjY3LjE1OF0pCisgYnkgZmZib3gw LWJnLm1wbGF5ZXJocS5odSAoUG9zdGZpeCkgd2l0aCBFU01UUFMgaWQgNTIyRjc2ODAyNzQKKyBm b3IgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPjsgTW9uLCAxNSBNYXkgMjAyMyAxMTozMjo0OSAr MDMwMCAoRUVTVCkKK1gtUVEtbWlkOiBiaXplc210cDY4dDE2ODQxMzk1NjR0ZzY0MnBibAorUmVj ZWl2ZWQ6IGZyb20gbG9jYWxob3N0ICggWzEwMy4xMDIuMjAzLjIwNF0pIGJ5IGJpemVzbXRwLnFx LmNvbSAoRVNNVFApIHdpdGgKKyBpZCA7IE1vbiwgMTUgTWF5IDIwMjMgMTY6MzI6NDIgKzA4MDAg KENTVCkKK1gtUVEtU1NGOiAwMTEwMDAwMDAwMDAwMFowWjAwMDAwMEEwMDAwMDAwCitYLVFRLUZF QVQ6IG5DTVQwWUtTM2kxTVU3SVhTc2lTMVJ3ZGU2aS80UnEya3VQTzJQb1h3M092dEpCMjRNVStZ Mkd3ZEVnNFkKKyBwZzBaZlNnZ00zVkJtUkNrSEkzaW9TT0gybXZWeVlHOUxnd2hoeWZpeFBhRkl0 Y3BGNEVGNnhvWmVwUXBhMUg1djFCRGk3cworIGl3Q3dGM3NoZ0g4ZGw5NmlKS0tyeVQ0VHRqVVRu WVJvUmhDUHRMQ0dmVXRoYU0vUjQ0eGRxeFJ2akRxSVZuMUJVTWI1R1B1CisgRE11YXNrek84UVFD Rnh2ZHVVdm92a1hqSmM1djE3S3JtMmxmOTQ1VG1tL3BJcFYvcUxqQWdBaFlIcU9veHJnQkdIWkRZ V1kKKyAwWGVTN1J2WWtLVFIyNHo5bTlTazc1dmVPVEt0Rnprc25iTEpZa0lEWWordm9BZDFkalhQ Sld0dUIyZWxobS9ESWE5KzVsVworIDJEbktySi9CYjJPazEzZ2dYb0M2MDBqSGN4a0xidU9xRHVL NWs1RGh1YjdFQ09UUEp5dGhrTVYrRllRQ3c9PQorWC1RUS1Hb29kQmc6IDAKK1gtQklaTUFJTC1J RDogMTQ1NDczNDgxNTYyODA2Mzg3OTEKK0Zyb206IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVn Lm9yZz4KK1RvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZworRGF0ZTogTW9uLCAxNSBNYXkgMjAy MyAxNjozMTo1NiArMDgwMAorTWVzc2FnZS1JZDogPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTItbHFA Y2hpbmFmZm1wZWcub3JnPgorWC1NYWlsZXI6IGdpdC1zZW5kLWVtYWlsIDIuNDAuMAorSW4tUmVw bHktVG86IDwyMDIzMDUxNTA4MzIwMS40ODIwMS0xLWxxQGNoaW5hZmZtcGVnLm9yZz4KK1JlZmVy ZW5jZXM6IAorIDxDQUVnLUplLXZZRDk3S25iYXFUa0s1PVVKOVQzaHRtdEgzUXlrY3dvMytyTkN4 PXcralFAbWFpbC5nbWFpbC5jb20+CisgPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTEtbHFAY2hpbmFm Zm1wZWcub3JnPgorTUlNRS1WZXJzaW9uOiAxLjAKK1gtUVEtU0VORFNJWkU6IDUyMAorRmVlZGJh Y2stSUQ6IGJpemVzbXRwOmNoaW5hZmZtcGVnLm9yZzpxeWJnbG9naWNzdnJzejpxeWJnbG9naWNz dnJzejNhLTMKK1N1YmplY3Q6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSCB2MTAgMS82XSBhdmZvcm1h dC9mbHZlbmM6IHN1cHBvcnQgbXV4IGhldmMgaW4KKyBlbmhhbmNlZCBmbHYKK1gtQmVlblRoZXJl OiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZworWC1NYWlsbWFuLVZlcnNpb246IDIuMS4yOQorUHJl Y2VkZW5jZTogbGlzdAorTGlzdC1JZDogRkZtcGVnIGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFu ZCBwYXRjaGVzIDxmZm1wZWctZGV2ZWwuZmZtcGVnLm9yZz4KK0xpc3QtVW5zdWJzY3JpYmU6IDxo dHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9vcHRpb25zL2ZmbXBlZy1kZXZlbD4sCisgPG1haWx0 bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+CitM aXN0LUFyY2hpdmU6IDxodHRwczovL2ZmbXBlZy5vcmcvcGlwZXJtYWlsL2ZmbXBlZy1kZXZlbD4K K0xpc3QtUG9zdDogPG1haWx0bzpmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4KK0xpc3QtSGVscDog PG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9aGVscD4KK0xp c3QtU3Vic2NyaWJlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVn LWRldmVsPiwKKyA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVj dD1zdWJzY3JpYmU+CitSZXBseS1UbzogRkZtcGVnIGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFu ZCBwYXRjaGVzIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4KK0NjOiBTdGV2ZW4gTGl1IDxscUBj aGluYWZmbXBlZy5vcmc+CitFcnJvcnMtVG86IGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5v cmcKK1NlbmRlcjogImZmbXBlZy1kZXZlbCIgPGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5v cmc+CitYLVRVSUQ6IFdVaEhDNC9kWHVrKworCitTaWduZWQtb2ZmLWJ5OiBTdGV2ZW4gTGl1IDxs cUBjaGluYWZmbXBlZy5vcmc+CistLS0KKyBsaWJhdmZvcm1hdC9NYWtlZmlsZSB8ICAyICstCisg bGliYXZmb3JtYXQvZmx2LmggICAgfCAxNSArKysrKysrKysrKysrKysKKyBsaWJhdmZvcm1hdC9m bHZlbmMuYyB8IDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMyBm aWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAt LWdpdCBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKK2luZGV4 IGY4YWQ3YzZhMTEuLjFlZjNkMTU0NjcgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9NYWtlZmls ZQorKysrIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKK0BAIC0yMTQsNyArMjE0LDcgQEAgT0JKUy0k KENPTkZJR19GTEFDX01VWEVSKSAgICAgICAgICAgICAgICArPSBmbGFjZW5jLm8gZmxhY2VuY19o ZWFkZXIubyBcCisgT0JKUy0kKENPTkZJR19GTElDX0RFTVVYRVIpICAgICAgICAgICAgICArPSBm bGljLm8KKyBPQkpTLSQoQ09ORklHX0ZMVl9ERU1VWEVSKSAgICAgICAgICAgICAgICs9IGZsdmRl Yy5vCisgT0JKUy0kKENPTkZJR19MSVZFX0ZMVl9ERU1VWEVSKSAgICAgICAgICArPSBmbHZkZWMu bworLU9CSlMtJChDT05GSUdfRkxWX01VWEVSKSAgICAgICAgICAgICAgICAgKz0gZmx2ZW5jLm8g YXZjLm8KKytPQkpTLSQoQ09ORklHX0ZMVl9NVVhFUikgICAgICAgICAgICAgICAgICs9IGZsdmVu Yy5vIGF2Yy5vIGhldmMubworIE9CSlMtJChDT05GSUdfRk9VUlhNX0RFTVVYRVIpICAgICAgICAg ICAgKz0gNHhtLm8KKyBPQkpTLSQoQ09ORklHX0ZSQU1FQ1JDX01VWEVSKSAgICAgICAgICAgICs9 IGZyYW1lY3JjZW5jLm8gZnJhbWVoYXNoLm8KKyBPQkpTLSQoQ09ORklHX0ZSQU1FSEFTSF9NVVhF UikgICAgICAgICAgICs9IGhhc2hlbmMubyBmcmFtZWhhc2gubworZGlmZiAtLWdpdCBhL2xpYmF2 Zm9ybWF0L2Zsdi5oIGIvbGliYXZmb3JtYXQvZmx2LmgKK2luZGV4IDM1NzFiOTAyNzkuLjkxZTBh NDE0MGMgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9mbHYuaAorKysrIGIvbGliYXZmb3JtYXQv Zmx2LmgKK0BAIC0zNSw2ICszNSwxMiBAQAorIAorICNkZWZpbmUgRkxWX1ZJREVPX0ZSQU1FVFlQ RV9PRkZTRVQgICA0CisgCisrLyogRXh0ZW5kZWQgVmlkZW9UYWdIZWFkZXIKKysgKiBkZWZpbmVk IGluIHJlZmVyZW5jZSBsaW5rOgorKyAqIGh0dHBzOi8vZ2l0aHViLmNvbS92ZW92ZXJhL2VuaGFu Y2VkLXJ0bXAvYmxvYi9tYWluL2VuaGFuY2VkLXJ0bXAtdjEucGRmCisrICogKi8KKysjZGVmaW5l IEZMVl9JU19FWF9IRUFERVIgICAgICAgICAgMHg4MAorKworIC8qIGJpdG1hc2tzIHRvIGlzb2xh dGUgc3BlY2lmaWMgdmFsdWVzICovCisgI2RlZmluZSBGTFZfQVVESU9fQ0hBTk5FTF9NQVNLICAg IDB4MDEKKyAjZGVmaW5lIEZMVl9BVURJT19TQU1QTEVTSVpFX01BU0sgMHgwMgorQEAgLTExMiw2 ICsxMTgsMTUgQEAgZW51bSB7CisgICAgIEZMVl9DT0RFQ0lEX01QRUc0ICAgPSA5LAorIH07Cisg CisrZW51bSB7CisrICAgIFBhY2tldFR5cGVTZXF1ZW5jZVN0YXJ0ICAgICAgICAgPSAwLAorKyAg ICBQYWNrZXRUeXBlQ29kZWRGcmFtZXMgICAgICAgICAgID0gMSwKKysgICAgUGFja2V0VHlwZVNl cXVlbmNlRW5kICAgICAgICAgICA9IDIsCisrICAgIFBhY2tldFR5cGVDb2RlZEZyYW1lc1ggICAg ICAgICAgPSAzLAorKyAgICBQYWNrZXRUeXBlTWV0YWRhdGEgICAgICAgICAgICAgID0gNCwKKysg ICAgUGFja2V0VHlwZU1QRUcyVFNTZXF1ZW5jZVN0YXJ0ICA9IDUsCisrfTsKKysKKyBlbnVtIHsK KyAgICAgRkxWX0ZSQU1FX0tFWSAgICAgICAgICAgID0gMSA8PCBGTFZfVklERU9fRlJBTUVUWVBF X09GRlNFVCwgLy8vPCBrZXkgZnJhbWUgKGZvciBBVkMsIGEgc2Vla2FibGUgZnJhbWUpCisgICAg IEZMVl9GUkFNRV9JTlRFUiAgICAgICAgICA9IDIgPDwgRkxWX1ZJREVPX0ZSQU1FVFlQRV9PRkZT RVQsIC8vLzwgaW50ZXIgZnJhbWUgKGZvciBBVkMsIGEgbm9uLXNlZWthYmxlIGZyYW1lKQorZGlm ZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jIGIvbGliYXZmb3JtYXQvZmx2ZW5jLmMKK2lu ZGV4IDcyMWYwNjI4MTEuLjM1ZTE5OGZhMTUgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9mbHZl bmMuYworKysrIGIvbGliYXZmb3JtYXQvZmx2ZW5jLmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2lu Y2x1ZGUgImxpYmF2Y29kZWMvbXBlZzRhdWRpby5oIgorICNpbmNsdWRlICJhdmlvLmgiCisgI2lu Y2x1ZGUgImF2Yy5oIgorKyNpbmNsdWRlICJoZXZjLmgiCisgI2luY2x1ZGUgImF2Zm9ybWF0Lmgi CisgI2luY2x1ZGUgImZsdi5oIgorICNpbmNsdWRlICJpbnRlcm5hbC5oIgorQEAgLTQ2LDYgKzQ3 LDcgQEAgc3RhdGljIGNvbnN0IEFWQ29kZWNUYWcgZmx2X3ZpZGVvX2NvZGVjX2lkc1tdID0gewor ICAgICB7IEFWX0NPREVDX0lEX1ZQNiwgICAgICBGTFZfQ09ERUNJRF9WUDYgfSwKKyAgICAgeyBB Vl9DT0RFQ19JRF9WUDZBLCAgICAgRkxWX0NPREVDSURfVlA2QSB9LAorICAgICB7IEFWX0NPREVD X0lEX0gyNjQsICAgICBGTFZfQ09ERUNJRF9IMjY0IH0sCisrICAgIHsgQVZfQ09ERUNfSURfSEVW QywgICAgIE1LQkVUQUcoJ2gnLCAndicsICdjJywgJzEnKSB9LAorICAgICB7IEFWX0NPREVDX0lE X05PTkUsICAgICAwIH0KKyB9OworIAorQEAgLTQ4OSw3ICs0OTEsNyBAQCBzdGF0aWMgdm9pZCBm bHZfd3JpdGVfY29kZWNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCogcywgQVZDb2RlY1BhcmFtZXRl cnMqIHBhciwgaQorICAgICBGTFZDb250ZXh0ICpmbHYgPSBzLT5wcml2X2RhdGE7CisgCisgICAg IGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQyB8fCBwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX0gyNjQKKy0gICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX01QRUc0KSB7CisrICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9NUEVHNCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKKyAgICAg ICAgIGludDY0X3QgcG9zOworICAgICAgICAgYXZpb193OChwYiwKKyAgICAgICAgICAgICAgICAg cGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTyA/CitAQCAtNTMyLDEwICs1MzQs MTkgQEAgc3RhdGljIHZvaWQgZmx2X3dyaXRlX2NvZGVjX2hlYWRlcihBVkZvcm1hdENvbnRleHQq IHMsIEFWQ29kZWNQYXJhbWV0ZXJzKiBwYXIsIGkKKyAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgYXZpb193cml0ZShwYiwgcGFyLT5leHRyYWRhdGEsIHBhci0+ZXh0cmFkYXRhX3NpemUpOwor ICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICBhdmlvX3c4KHBiLCBwYXItPmNvZGVjX3Rh ZyB8IEZMVl9GUkFNRV9LRVkpOyAvLyBmbGFncworLSAgICAgICAgICAgIGF2aW9fdzgocGIsIDAp OyAvLyBBVkMgc2VxdWVuY2UgaGVhZGVyCistICAgICAgICAgICAgYXZpb193YjI0KHBiLCAwKTsg Ly8gY29tcG9zaXRpb24gdGltZQorLSAgICAgICAgICAgIGZmX2lzb21fd3JpdGVfYXZjYyhwYiwg cGFyLT5leHRyYWRhdGEsIHBhci0+ZXh0cmFkYXRhX3NpemUpOworKyAgICAgICAgICAgIGlmIChw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKKysgICAgICAgICAgICAgICAgYXZp b193OChwYiwgRkxWX0lTX0VYX0hFQURFUiB8IFBhY2tldFR5cGVTZXF1ZW5jZVN0YXJ0KTsgLy8g RXhWaWRlb1RhZ0hlYWRlciBtb2RlIHdpdGggUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQKKysgICAg ICAgICAgICAgICAgYXZpb193cml0ZShwYiwgImh2YzEiLCA0KTsKKysgICAgICAgICAgICB9IGVs c2UgeworKyAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBwYXItPmNvZGVjX3RhZyB8IEZMVl9G UkFNRV9LRVkpOyAvLyBmbGFncworKyAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCAwKTsgLy8g QVZDIHNlcXVlbmNlIGhlYWRlcgorKyAgICAgICAgICAgICAgICBhdmlvX3diMjQocGIsIDApOyAv LyBjb21wb3NpdGlvbiB0aW1lCisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIGlmIChw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpCisrICAgICAgICAgICAgICAgIGZmX2lz b21fd3JpdGVfaHZjYyhwYiwgcGFyLT5leHRyYWRhdGEsIHBhci0+ZXh0cmFkYXRhX3NpemUsIDAp OworKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgZmZfaXNvbV93cml0ZV9hdmNj KHBiLCBwYXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSk7CisgICAgICAgICB9Cisg ICAgICAgICBkYXRhX3NpemUgPSBhdmlvX3RlbGwocGIpIC0gcG9zOworICAgICAgICAgYXZpb19z ZWVrKHBiLCAtZGF0YV9zaXplIC0gMTAsIFNFRUtfQ1VSKTsKK0BAIC04MzIsMTMgKzg0MywxMyBA QCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tl dCAqcGt0KQorICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDZGIHx8IHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2QSB8fAorICAgICAgICAgcGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9WUDYgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFD KQorICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDI7CistICAgIGVsc2UgaWYgKHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfSDI2NCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0 KQorKyAgICBlbHNlIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgcGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX0hFVkMpCisgICAgICAgICBmbGFnc19zaXplID0gNTsKKyAgICAgZWxzZQorICAgICAg ICAgZmxhZ3Nfc2l6ZSA9IDE7CisgCisgICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVD X0lEX0FBQyB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQKKy0gICAgICAgICAg ICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0KSB7CisrICAgICAgICAgICAg fHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fCBwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX0hFVkMpIHsKKyAgICAgICAgIHNpemVfdCBzaWRlX3NpemU7CisgICAgICAg ICB1aW50OF90ICpzaWRlID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEocGt0LCBBVl9QS1RfREFU QV9ORVdfRVhUUkFEQVRBLCAmc2lkZV9zaXplKTsKKyAgICAgICAgIGlmIChzaWRlICYmIHNpZGVf c2l6ZSA+IDAgJiYgKHNpZGVfc2l6ZSAhPSBwYXItPmV4dHJhZGF0YV9zaXplIHx8IG1lbWNtcChz aWRlLCBwYXItPmV4dHJhZGF0YSwgc2lkZV9zaXplKSkpIHsKK0BAIC04NTgsNyArODY5LDcgQEAg c3RhdGljIGludCBmbHZfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQg KnBrdCkKKyAgICAgICAgICAgICAgICAiUGFja2V0cyBhcmUgbm90IGluIHRoZSBwcm9wZXIgb3Jk ZXIgd2l0aCByZXNwZWN0IHRvIERUU1xuIik7CisgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5W QUwpOworICAgICB9CistICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQg fHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkgeworKyAgICBpZiAocGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfTVBFRzQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7CisgICAgICAg ICBpZiAocGt0LT5wdHMgPT0gQVZfTk9QVFNfVkFMVUUpIHsKKyAgICAgICAgICAgICBhdl9sb2co cywgQVZfTE9HX0VSUk9SLCAiUGFja2V0IGlzIG1pc3NpbmcgUFRTXG4iKTsKKyAgICAgICAgICAg ICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworQEAgLTkwMyw2ICs5MTQsMTAgQEAgc3RhdGljIGlu dCBmbHZfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKKyAg ICAgICAgIGlmIChwYXItPmV4dHJhZGF0YV9zaXplID4gMCAmJiAqKHVpbnQ4X3QqKXBhci0+ZXh0 cmFkYXRhICE9IDEpCisgICAgICAgICAgICAgaWYgKChyZXQgPSBmZl9hdmNfcGFyc2VfbmFsX3Vu aXRzX2J1Zihwa3QtPmRhdGEsICZkYXRhLCAmc2l6ZSkpIDwgMCkKKyAgICAgICAgICAgICAgICAg cmV0dXJuIHJldDsKKysgICAgfSBlbHNlIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X0hFVkMpIHsKKysgICAgICAgIGlmIChwYXItPmV4dHJhZGF0YV9zaXplID4gMCAmJiAqKHVpbnQ4 X3QqKXBhci0+ZXh0cmFkYXRhICE9IDEpCisrICAgICAgICAgICAgaWYgKChyZXQgPSBmZl9oZXZj X2FubmV4YjJtcDRfYnVmKHBrdC0+ZGF0YSwgJmRhdGEsICZzaXplLCAwLCBOVUxMKSkgPCAwKQor KyAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICB9IGVsc2UgaWYgKHBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfQUFDICYmIHBrdC0+c2l6ZSA+IDIgJiYKKyAgICAgICAgICAgICAg ICAoQVZfUkIxNihwa3QtPmRhdGEpICYgMHhmZmYwKSA9PSAweGZmZjApIHsKKyAgICAgICAgIGlm ICghcy0+c3RyZWFtc1twa3QtPnN0cmVhbV9pbmRleF0tPm5iX2ZyYW1lcykgeworQEAgLTk2NCw3 ICs5NzksMTIgQEAgc3RhdGljIGludCBmbHZfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAq cywgQVZQYWNrZXQgKnBrdCkKKyAgICAgICAgIGF2aW9fd2IzMihwYiwgZGF0YV9zaXplICsgMTEp OworICAgICB9IGVsc2UgeworICAgICAgICAgYXZfYXNzZXJ0MShmbGFncz49MCk7CistICAgICAg ICBhdmlvX3c4KHBiLGZsYWdzKTsKKysgICAgICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX0hFVkMpIHsKKysgICAgICAgICAgICBhdmlvX3c4KHBiLCBGTFZfSVNfRVhfSEVBREVS IHwgUGFja2V0VHlwZUNvZGVkRnJhbWVzWCk7IC8vIEV4VmlkZW9UYWdIZWFkZXIgbW9kZSB3aXRo IFBhY2tldFR5cGVDb2RlZEZyYW1lc1gKKysgICAgICAgICAgICBhdmlvX3dyaXRlKHBiLCAiaHZj MSIsIDQpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBhdmlvX3c4KHBiLCBmbGFn cyk7CisrICAgICAgICB9CisgICAgICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9WUDYpCisgICAgICAgICAgICAgYXZpb193OChwYiwwKTsKKyAgICAgICAgIGlmIChwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNkYgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9WUDZBKSB7CisKK0Zyb20gcGF0Y2h3b3JrIE1vbiBNYXkgMTUgMDg6MzE6NTcgMjAyMworQ29u dGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKK01JTUUtVmVyc2lvbjogMS4w CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CitYLVBhdGNod29yay1TdWJtaXR0ZXI6 IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KK1gtUGF0Y2h3b3JrLUlkOiA0MTYxNgor RGVsaXZlcmVkLVRvOiBmZm1wZWdwYXRjaHdvcmsyQGdtYWlsLmNvbQorUmVjZWl2ZWQ6IGJ5IDIw MDI6YTA1OjZhMjA6YmE5MTpiMDoxMDU6ZmViOjcxZjIgd2l0aCBTTVRQIGlkCisgZmIxN2NzcDE0 NDQxMjNwemI7CisgICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6MzM6MjIgLTA3MDAgKFBEVCkK K1gtR29vZ2xlLVNtdHAtU291cmNlOiAKKyBBQ0hIVVo0cVNxbkhBUkFUWXZOVE9pWGhNSUlnR1dV SG82MTJ3TjNVaTFyM2NZUFFkNTdFK0I5a2lDUllpakRoemdPYktNS2tEbTU0CitYLVJlY2VpdmVk OiBieSAyMDAyOmExNzo5MDc6NmU4ZTpiMDo5NGY6MzUyMTozOTYgd2l0aCBTTVRQIGlkCisgc2gx NC0yMDAyMGExNzA5MDc2ZThlMDBiMDA5NGYzNTIxMDM5Nm1yMzU3NDA4ODNlamMuMjMuMTY4NDEz OTYwMjAxMTsKKyAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozMzoyMiAtMDcwMCAoUERUKQor QVJDLVNlYWw6IGk9MTsgYT1yc2Etc2hhMjU2OyB0PTE2ODQxMzk2MDE7IGN2PW5vbmU7CisgICAg ICAgIGQ9Z29vZ2xlLmNvbTsgcz1hcmMtMjAxNjA4MTY7CisgICAgICAgIGI9RUZKZ3g5Y201ZXcy K1BJcFRlSGk3UUN6b3MvL29PczVxL0huZFF4YzArZEhZbGp1NVg0clZTQUNtZms5TDBESDNqCisg ICAgICAgICArY0cwbjIvM3dBc2d1QTFyQzNCOGErcVhrUmZBWEMxcm9wdWhEd0tDWkNkdzBJdjQw Vm00SmVIb2xFUVdSbmk4S28rRgorICAgICAgICAgTWhXWTdBdnhyWDRHc08wcHA0U2ZLc1ZGYUpk bzE4ZGxwbitCVWQ5Rlg1TjdWNmxVVGFkUXNWY0pZSkJkMkIyTUlSVWkKKyAgICAgICAgIG1KYUVQ cDhXcFJraVM5MkRnV2hQelVDOUVMbndyeVNuTkwwbU9vOURDZDljakZYUTlLWFc2cWpSb1AwYmxi TDhOMndzCisgICAgICAgICBCbFkyZEpWbVNNMzZuL0dLOWdaYis2ZlVnM3hWdWZEVWZkUnIwbTRq cGEvSUxEOTMvbndBWnNxaGszazRqMDBzZStDTworICAgICAgICAgN1Zydz09CitBUkMtTWVzc2Fn ZS1TaWduYXR1cmU6IGk9MTsgYT1yc2Etc2hhMjU2OyBjPXJlbGF4ZWQvcmVsYXhlZDsgZD1nb29n bGUuY29tOworIHM9YXJjLTIwMTYwODE2OworICAgICAgICBoPXNlbmRlcjplcnJvcnMtdG86Y29u dGVudC10cmFuc2Zlci1lbmNvZGluZzpjYzpyZXBseS10bworICAgICAgICAgOmxpc3Qtc3Vic2Ny aWJlOmxpc3QtaGVscDpsaXN0LXBvc3Q6bGlzdC1hcmNoaXZlOmxpc3QtdW5zdWJzY3JpYmUKKyAg ICAgICAgIDpsaXN0LWlkOnByZWNlZGVuY2U6c3ViamVjdDpmZWVkYmFjay1pZDptaW1lLXZlcnNp b246cmVmZXJlbmNlcworICAgICAgICAgOmluLXJlcGx5LXRvOm1lc3NhZ2UtaWQ6ZGF0ZTp0bzpm cm9tOmRlbGl2ZXJlZC10bzsKKyAgICAgICAgYmg9eWdVYjYwVHI1TGJQbmhpUzFBcytoTCtxWDQ1 S0lJK29jcFk5WDNKcTRUST07CisgICAgICAgIGI9VXBHaHFiZm8vK205V1c1cUU5MkxLT2RPbHhr Q1d5eTJRVnFpWENqWHB4ZXBkRGQwSUtraEdxU3NwdGU5ekpyVVQ4CisgICAgICAgICBRV2c4SWlE SzZKVG5HbnZwK2hPNmRvWmpoWGMxR3l5VHg2Y01RUVgrMkp6cVR0YldGMDNTOTRHd0JnbU4vVTJS SUs5TQorICAgICAgICAgZjk4MFNTZ2ZOWlJTSkY1a0orZE8yaXg0TTVXSVdoeEVZQi9NUnpuL1Ji eEF2WWt3TE5HMWdNTUJUTmltb2diRnNYUm8KKyAgICAgICAgIGg1V2dHeE80azhteC94OFBCcnRO djFhUFo4NkZBY1hDM0FpZWFvN2FWblJEdldqZXBFdXM1akVmR3UyUXVxbnZNMnFLCisgICAgICAg ICBXSWpVeUZycHBKTC9jckFOdGdSK3RGY0w4Mzk1YlJHWU9iWXRJQmJsVVEvZzVkZEh6anNhQ2xK LzQycjNoMXZlejM5cQorICAgICAgICAgblBqUT09CitBUkMtQXV0aGVudGljYXRpb24tUmVzdWx0 czogaT0xOyBteC5nb29nbGUuY29tOworICAgICAgIHNwZj1wYXNzIChnb29nbGUuY29tOiBkb21h aW4gb2YgZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworIGRlc2lnbmF0ZXMgNzkuMTI0 LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKQorIHNtdHAubWFpbGZyb209ZmZtcGVnLWRldmVs LWJvdW5jZXNAZmZtcGVnLm9yZworUmV0dXJuLVBhdGg6IDxmZm1wZWctZGV2ZWwtYm91bmNlc0Bm Zm1wZWcub3JnPgorUmVjZWl2ZWQ6IGZyb20gZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoZmZib3gw LWJnLmZmbXBlZy5vcmcuIFs3OS4xMjQuMTcuMTAwXSkKKyAgICAgICAgYnkgbXguZ29vZ2xlLmNv bSB3aXRoIEVTTVRQIGlkCisgdjIxLTIwMDIwYTE3MDkwNjBiNTUwMGIwMDk1ZWM1NGEyMmJjc2kx MDkwNzU5NWVqZy4xMDYuMjAyMy4wNS4xNS4wMS4zMy4yMTsKKyAgICAgICAgTW9uLCAxNSBNYXkg MjAyMyAwMTozMzoyMSAtMDcwMCAoUERUKQorUmVjZWl2ZWQtU1BGOiBwYXNzIChnb29nbGUuY29t OiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworIGRlc2lnbmF0ZXMg NzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKSBjbGllbnQtaXA9NzkuMTI0LjE3LjEw MDsKK0F1dGhlbnRpY2F0aW9uLVJlc3VsdHM6IG14Lmdvb2dsZS5jb207CisgICAgICAgc3BmPXBh c3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3Jn CisgZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpCisgc210cC5t YWlsZnJvbT1mZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCitSZWNlaXZlZDogZnJvbSBb MTI3LjAuMS4xXSAobG9jYWxob3N0IFsxMjcuMC4wLjFdKQorCWJ5IGZmYm94MC1iZy5tcGxheWVy aHEuaHUgKFBvc3RmaXgpIHdpdGggRVNNVFAgaWQgRDNGNzY2OEMwOTI7CisJTW9uLCAxNSBNYXkg MjAyMyAxMTozMzoxOCArMDMwMCAoRUVTVCkKK1gtT3JpZ2luYWwtVG86IGZmbXBlZy1kZXZlbEBm Zm1wZWcub3JnCitEZWxpdmVyZWQtVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCitSZWNlaXZl ZDogZnJvbSBiZzQuZXhtYWlsLnFxLmNvbSAoYmc0LmV4bWFpbC5xcS5jb20gWzQzLjE1NS42Ny4x NThdKQorIGJ5IGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKFBvc3RmaXgpIHdpdGggRVNNVFBTIGlk IDgxODAzNjhDMDA0CisgZm9yIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz47IE1vbiwgMTUgTWF5 IDIwMjMgMTE6MzM6MTEgKzAzMDAgKEVFU1QpCitYLVFRLW1pZDogYml6ZXNtdHA2MnQxNjg0MTM5 NTg1dHhocDMyb3UKK1JlY2VpdmVkOiBmcm9tIGxvY2FsaG9zdCAoIFsxMDMuMTAyLjIwMy4yMDRd KSBieSBiaXplc210cC5xcS5jb20gKEVTTVRQKSB3aXRoCisgaWQgOyBNb24sIDE1IE1heSAyMDIz IDE2OjMzOjA0ICswODAwIChDU1QpCitYLVFRLVNTRjogMDExMDAwMDAwMDAwMDBaMFowMDAwMDBB MDAwMDAwMAorWC1RUS1GRUFUOiA2QXJudVNESitpblZDMDZNSDFuckpldTU2KzM1ZGlwdFczZENk SHQzYk1heUZab0N5RThReVVPMFFZOXptCisgaVk2MkpDU3BTS1lFSzRjYTJrcHhrQjk5UEk1MEZp V2ZOdHpMRForVnpVVHkwMTNHTXBMd2gxQ1dlVlg1Y0YxNVJ5RUFJQzkKKyB1M096ZzdJWThtditH aUR0ZjZGRGdTeXVtRTFEOTNxeFYxUjJzSjV2MzhWM05iTlBjaWtnMGFEeFpYT2xDK0hyK0xkaHNa aQorIDRYNXREaTNOb3ZocENmKzhXbytaYWVqSE9yRThNVWNVR3BiaDhkSFJldzZkbm1rZGtLNXl0 U0hTWkV5ZThSc1habk1kcDRBCisgbXFCWnFJREd3MWE0ZTA0SkFjL05EQ3M3cXE0cXRoeE1GQjFz a2hhT3Y2RExjTCtFcVYyUUZ3bkpuN1Y1T29mN0J3ZmphVEcKKyBtRUFWcGlaRG5RaEZ2T2dIZW1I MXY2MUJsdWIybkNuQXVyckdoR01heXdJekZYVDg3YU9TTENEbEZwclNnPT0KK1gtUVEtR29vZEJn OiAwCitYLUJJWk1BSUwtSUQ6IDExMjEwODM5MTkxMjkyNTg3MzU3CitGcm9tOiBTdGV2ZW4gTGl1 IDxscUBjaGluYWZmbXBlZy5vcmc+CitUbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK0RhdGU6 IE1vbiwgMTUgTWF5IDIwMjMgMTY6MzE6NTcgKzA4MDAKK01lc3NhZ2UtSWQ6IDwyMDIzMDUxNTA4 MzIwMS40ODIwMS0zLWxxQGNoaW5hZmZtcGVnLm9yZz4KK1gtTWFpbGVyOiBnaXQtc2VuZC1lbWFp bCAyLjQwLjAKK0luLVJlcGx5LVRvOiA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMS1scUBjaGluYWZm bXBlZy5vcmc+CitSZWZlcmVuY2VzOiAKKyA8Q0FFZy1KZS12WUQ5N0tuYmFxVGtLNT1VSjlUM2h0 bXRIM1F5a2N3bzMrck5DeD13K2pRQG1haWwuZ21haWwuY29tPgorIDwyMDIzMDUxNTA4MzIwMS40 ODIwMS0xLWxxQGNoaW5hZmZtcGVnLm9yZz4KK01JTUUtVmVyc2lvbjogMS4wCitYLVFRLVNFTkRT SVpFOiA1MjAKK0ZlZWRiYWNrLUlEOiBiaXplc210cDpjaGluYWZmbXBlZy5vcmc6cXliZ2xvZ2lj c3Zyc3o6cXliZ2xvZ2ljc3Zyc3ozYS0zCitTdWJqZWN0OiBbRkZtcGVnLWRldmVsXSBbUEFUQ0gg djEwIDIvNl0gYXZmb3JtYXQvZmx2ZGVjOiBzdXBwb3J0IGRlbXV4IGhldmMKKyBpbiBlbmhhbmNl ZCBmbHYKK1gtQmVlblRoZXJlOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZworWC1NYWlsbWFuLVZl cnNpb246IDIuMS4yOQorUHJlY2VkZW5jZTogbGlzdAorTGlzdC1JZDogRkZtcGVnIGRldmVsb3Bt ZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVzIDxmZm1wZWctZGV2ZWwuZmZtcGVnLm9yZz4KK0xp c3QtVW5zdWJzY3JpYmU6IDxodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9vcHRpb25zL2ZmbXBl Zy1kZXZlbD4sCisgPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1Ympl Y3Q9dW5zdWJzY3JpYmU+CitMaXN0LUFyY2hpdmU6IDxodHRwczovL2ZmbXBlZy5vcmcvcGlwZXJt YWlsL2ZmbXBlZy1kZXZlbD4KK0xpc3QtUG9zdDogPG1haWx0bzpmZm1wZWctZGV2ZWxAZmZtcGVn Lm9yZz4KK0xpc3QtSGVscDogPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3Jn P3N1YmplY3Q9aGVscD4KK0xpc3QtU3Vic2NyaWJlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL21haWxt YW4vbGlzdGluZm8vZmZtcGVnLWRldmVsPiwKKyA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0 QGZmbXBlZy5vcmc/c3ViamVjdD1zdWJzY3JpYmU+CitSZXBseS1UbzogRkZtcGVnIGRldmVsb3Bt ZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVzIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4KK0Nj OiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+CitFcnJvcnMtVG86IGZmbXBlZy1kZXZl bC1ib3VuY2VzQGZmbXBlZy5vcmcKK1NlbmRlcjogImZmbXBlZy1kZXZlbCIgPGZmbXBlZy1kZXZl bC1ib3VuY2VzQGZmbXBlZy5vcmc+CitYLVRVSUQ6IFNGc2pITUh1MklTbAorCitTaWduZWQtb2Zm LWJ5OiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+CistLS0KKyBsaWJhdmZvcm1hdC9m bHZkZWMuYyB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t CisgMSBmaWxlIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2Rp ZmYgLS1naXQgYS9saWJhdmZvcm1hdC9mbHZkZWMuYyBiL2xpYmF2Zm9ybWF0L2ZsdmRlYy5jCitp bmRleCBkODNlZGZmNzI3Li5jOGU2Y2FkZjFjIDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvZmx2 ZGVjLmMKKysrKyBiL2xpYmF2Zm9ybWF0L2ZsdmRlYy5jCitAQCAtNzksNiArNzksOCBAQCB0eXBl ZGVmIHN0cnVjdCBGTFZDb250ZXh0IHsKKyAgICAgaW50NjRfdCBsYXN0X3RzOworICAgICBpbnQ2 NF90IHRpbWVfb2Zmc2V0OworICAgICBpbnQ2NF90IHRpbWVfcG9zOworKworKyAgICB1aW50OF90 IGV4aGVhZGVyOworIH0gRkxWQ29udGV4dDsKKyAKKyAvKiBBTUYgZGF0ZSB0eXBlICovCitAQCAt MzAyLDEzICszMDQsMjUgQEAgc3RhdGljIHZvaWQgZmx2X3NldF9hdWRpb19jb2RlYyhBVkZvcm1h dENvbnRleHQgKnMsIEFWU3RyZWFtICphc3RyZWFtLAorICAgICB9CisgfQorIAorLXN0YXRpYyBp bnQgZmx2X3NhbWVfdmlkZW9fY29kZWMoQVZDb2RlY1BhcmFtZXRlcnMgKnZwYXIsIGludCBmbGFn cykKKytzdGF0aWMgaW50IGZsdl9zYW1lX3ZpZGVvX2NvZGVjKEFWRm9ybWF0Q29udGV4dCAqcywg QVZDb2RlY1BhcmFtZXRlcnMgKnZwYXIsIGludCBmbGFncykKKyB7CisgICAgIGludCBmbHZfY29k ZWNpZCA9IGZsYWdzICYgRkxWX1ZJREVPX0NPREVDSURfTUFTSzsKKysgICAgRkxWQ29udGV4dCAq Zmx2ID0gcy0+cHJpdl9kYXRhOworIAorICAgICBpZiAoIXZwYXItPmNvZGVjX2lkICYmICF2cGFy LT5jb2RlY190YWcpCisgICAgICAgICByZXR1cm4gMTsKKyAKKysgICAgaWYgKGZsdi0+ZXhoZWFk ZXIpIHsKKysgICAgICAgIHVpbnQ4X3QgKmNvZGVjX2lkX3N0ciA9ICh1aW50OF90ICopcy0+cGIt PmJ1Zl9wdHI7CisrICAgICAgICB1aW50MzJfdCBjb2RlY19pZCA9IGNvZGVjX2lkX3N0clszXSB8 IGNvZGVjX2lkX3N0clsyXSA8PCA4IHwgY29kZWNfaWRfc3RyWzFdIDw8IDE2IHwgY29kZWNfaWRf c3RyWzBdIDw8IDI0OworKyAgICAgICAgc3dpdGNoKGNvZGVjX2lkKSB7CisrICAgICAgICAgICAg Y2FzZSBNS0JFVEFHKCdoJywgJ3YnLCAnYycsICcxJyk6CisrICAgICAgICAgICAgICAgIHJldHVy biB2cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDOworKyAgICAgICAgICAgIGRlZmF1 bHQ6CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICB9CisrCisgICAg IHN3aXRjaCAoZmx2X2NvZGVjaWQpIHsKKyAgICAgY2FzZSBGTFZfQ09ERUNJRF9IMjYzOgorICAg ICAgICAgcmV0dXJuIHZwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0ZMVjE7CitAQCAtMzMx LDkgKzM0NSwyNCBAQCBzdGF0aWMgaW50IGZsdl9zZXRfdmlkZW9fY29kZWMoQVZGb3JtYXRDb250 ZXh0ICpzLCBBVlN0cmVhbSAqdnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IGZsdl9jb2RlY2lkLCBpbnQgcmVhZCkKKyB7CisgICAgIEZGU3RyZWFtICpjb25zdCB2 c3RyZWFtaSA9IGZmc3RyZWFtKHZzdHJlYW0pOworKyAgICBGTFZDb250ZXh0ICpmbHYgPSBzLT5w cml2X2RhdGE7CisgICAgIGludCByZXQgPSAwOworICAgICBBVkNvZGVjUGFyYW1ldGVycyAqcGFy ID0gdnN0cmVhbS0+Y29kZWNwYXI7CisgICAgIGVudW0gQVZDb2RlY0lEIG9sZF9jb2RlY19pZCA9 IHZzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZDsKKysgICAgZmx2X2NvZGVjaWQgJj0gRkxWX1ZJ REVPX0NPREVDSURfTUFTSzsKKysKKysgICAgaWYgKGZsdi0+ZXhoZWFkZXIpIHsKKysgICAgICAg IHVpbnQzMl90IGNvZGVjX2lkID0gYXZpb19yYjMyKHMtPnBiKTsKKysKKysgICAgICAgIHN3aXRj aChjb2RlY19pZCkgeworKyAgICAgICAgICAgIGNhc2UgTUtCRVRBRygnaCcsICd2JywgJ2MnLCAn MScpOgorKyAgICAgICAgICAgICAgICBwYXItPmNvZGVjX2lkID0gQVZfQ09ERUNfSURfSEVWQzsK KysgICAgICAgICAgICAgICAgdnN0cmVhbWktPm5lZWRfcGFyc2luZyA9IEFWU1RSRUFNX1BBUlNF X0hFQURFUlM7CisrICAgICAgICAgICAgICAgIHJldHVybiA0OworKyAgICAgICAgICAgIGRlZmF1 bHQ6CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICB9CisgICAgIHN3 aXRjaCAoZmx2X2NvZGVjaWQpIHsKKyAgICAgY2FzZSBGTFZfQ09ERUNJRF9IMjYzOgorICAgICAg ICAgcGFyLT5jb2RlY19pZCA9IEFWX0NPREVDX0lEX0ZMVjE7CitAQCAtNzk2LDYgKzgyNSw3IEBA IHN0YXRpYyBpbnQgZmx2X3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKKyAgICAgcy0+ c3RhcnRfdGltZSA9IDA7CisgICAgIGZsdi0+c3VtX2Zsdl90YWdfc2l6ZSA9IDA7CisgICAgIGZs di0+bGFzdF9rZXlmcmFtZV9zdHJlYW1faW5kZXggPSAtMTsKKysgICAgZmx2LT5leGhlYWRlciA9 IDA7CisgCisgICAgIHJldHVybiAwOworIH0KK0BAIC0xMDcxLDYgKzExMDEsMTEgQEAgcmV0cnk6 CisgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBGTFZfVEFHX1RZUEVfVklERU8pIHsKKyAgICAgICAg IHN0cmVhbV90eXBlID0gRkxWX1NUUkVBTV9UWVBFX1ZJREVPOworICAgICAgICAgZmxhZ3MgICAg PSBhdmlvX3I4KHMtPnBiKTsKKysgICAgICAgIC8qCisrICAgICAgICAgKiBSZWZlcmVuY2UgRW5o YW5jaW5nIEZMViAyMDIzLTAzLXYxLjAuMC1CLjgKKysgICAgICAgICAqIGh0dHBzOi8vZ2l0aHVi LmNvbS92ZW92ZXJhL2VuaGFuY2VkLXJ0bXAvYmxvYi9tYWluL2VuaGFuY2VkLXJ0bXAtdjEucGRm CisrICAgICAgICAgKiAqLworKyAgICAgICAgZmx2LT5leGhlYWRlciA9IChmbGFncyA+PiA3KSAm IDE7CisgICAgICAgICBzaXplLS07CisgICAgICAgICBpZiAoKGZsYWdzICYgRkxWX1ZJREVPX0ZS QU1FVFlQRV9NQVNLKSA9PSBGTFZfRlJBTUVfVklERU9fSU5GT19DTUQpCisgICAgICAgICAgICAg Z290byBza2lwOworQEAgLTExMjksNyArMTE2NCw3IEBAIHNraXA6CisgICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgfSBlbHNlIGlmIChzdHJlYW1fdHlwZSA9PSBGTFZfU1RSRUFNX1RZ UEVfVklERU8pIHsKKyAgICAgICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09 IEFWTUVESUFfVFlQRV9WSURFTyAmJgorLSAgICAgICAgICAgICAgICAocy0+dmlkZW9fY29kZWNf aWQgfHwgZmx2X3NhbWVfdmlkZW9fY29kZWMoc3QtPmNvZGVjcGFyLCBmbGFncykpKQorKyAgICAg ICAgICAgICAgICAocy0+dmlkZW9fY29kZWNfaWQgfHwgZmx2X3NhbWVfdmlkZW9fY29kZWMocywg c3QtPmNvZGVjcGFyLCBmbGFncykpKQorICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg IH0gZWxzZSBpZiAoc3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9UWVBFX1NVQlRJVExFKSB7Cisg ICAgICAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVf U1VCVElUTEUpCitAQCAtMTIzMCw3ICsxMjY1LDcgQEAgcmV0cnlfZHVyYXRpb246CisgICAgICAg ICAgICAgYXZjb2RlY19wYXJhbWV0ZXJzX2ZyZWUoJnBhcik7CisgICAgICAgICB9CisgICAgIH0g ZWxzZSBpZiAoc3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9UWVBFX1ZJREVPKSB7CistICAgICAg ICBpbnQgcmV0ID0gZmx2X3NldF92aWRlb19jb2RlYyhzLCBzdCwgZmxhZ3MgJiBGTFZfVklERU9f Q09ERUNJRF9NQVNLLCAxKTsKKysgICAgICAgIGludCByZXQgPSBmbHZfc2V0X3ZpZGVvX2NvZGVj KHMsIHN0LCBmbGFncywgMSk7CisgICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgICBy ZXR1cm4gcmV0OworICAgICAgICAgc2l6ZSAtPSByZXQ7CitAQCAtMTI0MiwxNiArMTI3NywyMyBA QCByZXRyeV9kdXJhdGlvbjoKKyAKKyAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfQUFDIHx8CisgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX0gyNjQgfHwKKy0gICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfTVBFRzQpIHsKKy0gICAgICAgIGludCB0eXBlID0gYXZpb19yOChzLT5wYik7Cist ICAgICAgICBzaXplLS07CisrICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX01QRUc0IHx8CisrICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX0hFVkMpIHsKKysgICAgICAgIGludCB0eXBlID0gMDsKKysgICAgICAgIGlmIChmbHYt PmV4aGVhZGVyICYmIHN0cmVhbV90eXBlID09IEZMVl9TVFJFQU1fVFlQRV9WSURFTykgeworKyAg ICAgICAgICAgIHR5cGUgPSBmbGFncyAmIDB4MEY7CisrICAgICAgICB9IGVsc2UgeworKyAgICAg ICAgICAgIHR5cGUgPSBhdmlvX3I4KHMtPnBiKTsKKysgICAgICAgICAgICBzaXplLS07CisrICAg ICAgICB9CisgCisgICAgICAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgICAgICByZXQgPSBB VkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICAgICAgIGdvdG8gbGVhdmU7CisgICAgICAgICB9 CisgCistICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9I MjY0IHx8IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQpIHsKKysg ICAgICAgIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwg c3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fAorKyAgICAgICAg ICAgIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMgJiYgdHlwZSA9 PSBQYWNrZXRUeXBlQ29kZWRGcmFtZXMpKSB7CisgICAgICAgICAgICAgLy8gc2lnbiBleHRlbnNp b24KKyAgICAgICAgICAgICBpbnQzMl90IGN0cyA9IChhdmlvX3JiMjQocy0+cGIpICsgMHhmZjgw MDAwMCkgXiAweGZmODAwMDAwOworICAgICAgICAgICAgIHB0cyA9IGF2X3NhdF9hZGQ2NChkdHMs IGN0cyk7CitAQCAtMTI2Nyw3ICsxMzA5LDcgQEAgcmV0cnlfZHVyYXRpb246CisgICAgICAgICAg ICAgfQorICAgICAgICAgfQorICAgICAgICAgaWYgKHR5cGUgPT0gMCAmJiAoIXN0LT5jb2RlY3Bh ci0+ZXh0cmFkYXRhIHx8IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFD IHx8CistICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9I MjY0KSkgeworKyAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfSDI2NCB8fCBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpKSB7 CisgICAgICAgICAgICAgQVZEaWN0aW9uYXJ5RW50cnkgKnQ7CisgCisgICAgICAgICAgICAgaWYg KHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhKSB7CisKK0Zyb20gcGF0Y2h3b3JrIE1vbiBNYXkgMTUg MDg6MzE6NTggMjAyMworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIK K01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CitYLVBh dGNod29yay1TdWJtaXR0ZXI6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KK1gtUGF0 Y2h3b3JrLUlkOiA0MTYxNworRGVsaXZlcmVkLVRvOiBmZm1wZWdwYXRjaHdvcmsyQGdtYWlsLmNv bQorUmVjZWl2ZWQ6IGJ5IDIwMDI6YTA1OjZhMjA6YmE5MTpiMDoxMDU6ZmViOjcxZjIgd2l0aCBT TVRQIGlkCisgZmIxN2NzcDE0NDQyMDlwemI7CisgICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6 MzM6MzEgLTA3MDAgKFBEVCkKK1gtR29vZ2xlLVNtdHAtU291cmNlOiAKKyBBQ0hIVVo1Ti9NV2xk OWZYem9ra1JWUzFlMTNBWWFra1J5SC9SdnlCaUo3eEE1MTJFV2RXZ3JHRTRmZXJ1Z2NUUm9ITmFo dmpheUM5CitYLVJlY2VpdmVkOiBieSAyMDAyOmExNzo5MDc6OTcyNDpiMDo5NmE6MTI2MDpkYmY1 IHdpdGggU01UUCBpZAorIGpnMzYtMjAwMjBhMTcwOTA3OTcyNDAwYjAwOTZhMTI2MGRiZjVtcjE4 MDgyNTU0ZWpjLjQ1LjE2ODQxMzk2MTE0NDc7CisgICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6 MzM6MzEgLTA3MDAgKFBEVCkKK0FSQy1TZWFsOiBpPTE7IGE9cnNhLXNoYTI1NjsgdD0xNjg0MTM5 NjExOyBjdj1ub25lOworICAgICAgICBkPWdvb2dsZS5jb207IHM9YXJjLTIwMTYwODE2OworICAg ICAgICBiPW9wNlhsM1lpbk9TZDhkL1lhNFlwUWpIU2JKeDB0N2ZIYUNIdnZxdmtKZ1RiS2ZqbVRK akRGc01Xa2VUL2NlQTFsQQorICAgICAgICAgeFY5WTFKR3JBbFptdWRwZ2FKdFhIdWtMSmVzc25C cnFhQnk1Z20wbFg2YkowWDRBS0p0L0Y3R0IzRlIzT1BJU3E3OXcKKyAgICAgICAgIDdkamVIVXgy VkF4ZlduMWF3Q2NGcmN5eU1QckdCMkdQTWRvWHhjVVZteVNOTkswb2h1cm9RMkpoVlJhandqMHNJ QkZnCisgICAgICAgICBmMHB1N3ZYWDljdDQ5OXRGbDVySEVkLy8yWGwzclk2a05IZlBsTU9jSkVj bFQrMzVUVWFUV0U4OCtySk9EYWlNQXJjWgorICAgICAgICAgUmFGSzh4cWZBT0pqdzBYOXQ2WWl3 QmsxS2wvc0ZLRWo3MUZ4dTVraGc3SXZoRjdrelJEU1pYTENrS1c5VXZQWWhHT2wKKyAgICAgICAg IDI1Qnc9PQorQVJDLU1lc3NhZ2UtU2lnbmF0dXJlOiBpPTE7IGE9cnNhLXNoYTI1NjsgYz1yZWxh eGVkL3JlbGF4ZWQ7IGQ9Z29vZ2xlLmNvbTsKKyBzPWFyYy0yMDE2MDgxNjsKKyAgICAgICAgaD1z ZW5kZXI6ZXJyb3JzLXRvOmNvbnRlbnQtdHJhbnNmZXItZW5jb2Rpbmc6Y2M6cmVwbHktdG8KKyAg ICAgICAgIDpsaXN0LXN1YnNjcmliZTpsaXN0LWhlbHA6bGlzdC1wb3N0Omxpc3QtYXJjaGl2ZTps aXN0LXVuc3Vic2NyaWJlCisgICAgICAgICA6bGlzdC1pZDpwcmVjZWRlbmNlOnN1YmplY3Q6ZmVl ZGJhY2staWQ6bWltZS12ZXJzaW9uOnJlZmVyZW5jZXMKKyAgICAgICAgIDppbi1yZXBseS10bzpt ZXNzYWdlLWlkOmRhdGU6dG86ZnJvbTpkZWxpdmVyZWQtdG87CisgICAgICAgIGJoPTBPMGtVR0Q1 cjhsZ1hFaUMyUlVmaVoxY2NWUlBkMDNsV2RzMGRxZFZFcTA9OworICAgICAgICBiPU9BdlpBVGVv TnEvQkkzcEpkMjFYejJuS2grWkk4WmtvZmU0T2I2VVN1MVpFT3laeksyeHhndHhMNlNqSkF4ZWNH NgorICAgICAgICAgTmZFQ2c4ZTEzRExiblZBQjVPbk1LOFRZL0hWLzROL2lxUGtzbjZQYkpTa0N5 YWZScWc0NzcrU1JzN3RPbDg5YzNpc3IKKyAgICAgICAgIENwOG8rajd0K2dXMmZrVjlZNkw4TVph OWV0SnB1c2EwTFlYVkJMUERzK3RITmdYTmVjOVVUQTFZbm9TeU1xRXJyaDU4CisgICAgICAgICBj aE1oNkI2UCs1YVJjS3JCZktaWTFGOFdBek1qcGhkUTc4YzNZWitpa2dHZmtvUGdSS1RFVXEreFFB TW03VVhpck1jbgorICAgICAgICAgcXRuZGVEaVF5cE4xZWc3TGlFYkFzTGhqN0syamliSWxEbXdV ays2SkRFMUFTejA1RlZpQWJrM25GZld5ZE5QOGlVbGgKKyAgICAgICAgIHorQ1E9PQorQVJDLUF1 dGhlbnRpY2F0aW9uLVJlc3VsdHM6IGk9MTsgbXguZ29vZ2xlLmNvbTsKKyAgICAgICBzcGY9cGFz cyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcK KyBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRlcikKKyBzbXRwLm1h aWxmcm9tPWZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKK1JldHVybi1QYXRoOiA8ZmZt cGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4KK1JlY2VpdmVkOiBmcm9tIGZmYm94MC1iZy5t cGxheWVyaHEuaHUgKGZmYm94MC1iZy5mZm1wZWcub3JnLiBbNzkuMTI0LjE3LjEwMF0pCisgICAg ICAgIGJ5IG14Lmdvb2dsZS5jb20gd2l0aCBFU01UUCBpZAorIHJ2MjItMjAwMjBhMTcwOTA3MTBk NjAwYjAwOTY1ZThjNjdkN2RzaTExMzk5MTkyZWpiLjI4NS4yMDIzLjA1LjE1LjAxLjMzLjMxOwor ICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjMzOjMxIC0wNzAwIChQRFQpCitSZWNlaXZlZC1T UEY6IHBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1w ZWcub3JnCisgZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpIGNs aWVudC1pcD03OS4xMjQuMTcuMTAwOworQXV0aGVudGljYXRpb24tUmVzdWx0czogbXguZ29vZ2xl LmNvbTsKKyAgICAgICBzcGY9cGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZl bC1ib3VuY2VzQGZmbXBlZy5vcmcKKyBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0 dGVkIHNlbmRlcikKKyBzbXRwLm1haWxmcm9tPWZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5v cmcKK1JlY2VpdmVkOiBmcm9tIFsxMjcuMC4xLjFdIChsb2NhbGhvc3QgWzEyNy4wLjAuMV0pCisJ YnkgZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoUG9zdGZpeCkgd2l0aCBFU01UUCBpZCBDQUYzNjY4 QzA4QjsKKwlNb24sIDE1IE1heSAyMDIzIDExOjMzOjIyICswMzAwIChFRVNUKQorWC1PcmlnaW5h bC1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK0RlbGl2ZXJlZC1UbzogZmZtcGVnLWRldmVs QGZmbXBlZy5vcmcKK1JlY2VpdmVkOiBmcm9tIGJnNC5leG1haWwucXEuY29tIChiZzQuZXhtYWls LnFxLmNvbSBbNDMuMTU1LjY3LjE1OF0pCisgYnkgZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoUG9z dGZpeCkgd2l0aCBFU01UUFMgaWQgNTYxMzA2OEMwOEIKKyBmb3IgPGZmbXBlZy1kZXZlbEBmZm1w ZWcub3JnPjsgTW9uLCAxNSBNYXkgMjAyMyAxMTozMzoxNiArMDMwMCAoRUVTVCkKK1gtUVEtbWlk OiBiaXplc210cDYydDE2ODQxMzk1OTF0NXZmNWlzcworUmVjZWl2ZWQ6IGZyb20gbG9jYWxob3N0 ICggWzEwMy4xMDIuMjAzLjIwNF0pIGJ5IGJpemVzbXRwLnFxLmNvbSAoRVNNVFApIHdpdGgKKyBp ZCA7IE1vbiwgMTUgTWF5IDIwMjMgMTY6MzM6MDkgKzA4MDAgKENTVCkKK1gtUVEtU1NGOiAwMTEw MDAwMDAwMDAwMFowWjAwMDAwMEEwMDAwMDAwCitYLVFRLUZFQVQ6IDBWWVdMTENmNHJkOHNmNEIw eGRJNDV5TzlwYTdjQTVMa1VONXI4anJ5bC85SFVUY0VPY0RucTZzRUZMcFUKKyBwWi9KbndTSXFm cUZ0UkI4QnE4KzAzMldjd1pJQmRHV21PVXBJWkxjRGxCUEhWdFM5WXdTTzU2cDd0ZTA5MzJtaFFI UVZXcgorIDJNSjYwRWhQY3hmaFhHM004OVFTeXNZRGdMalVJUmJiL2NQL0JyMDVtQ0owNWMrUTRO eld3bFJ3d2VPRzBsVUo0YU1ObGk5CisgaTNRZjhsU0FLOGhLM0pXWVpQMEZnNjZKYUZrWnZ3Nll6 Nk40RVNWZjRWcDg1cndXS1BmcEJ6NTM4SWlDemUvZVBiVmdaV0IKKyB6dmJVMW1WQWthcFQwNWNU THlxQWx2N3RlZmZsZ29ZY3JXNzlaK09weTJ3U1lEWkxwQ2tSSWUrdzR5V0c3ZUNnNzFkVWduYwor IDc5RCtNVnlIU0pqdVhTL3NRTGFlRmFuUzFWNTVXSzRpenk5Si9iRkhkU3BybXlTd21wazhoZjV6 aElaT1E9PQorWC1RUS1Hb29kQmc6IDAKK1gtQklaTUFJTC1JRDogNTM3Nzk5NjE2NTM0MDUyNTYx OQorRnJvbTogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgorVG86IGZmbXBlZy1kZXZl bEBmZm1wZWcub3JnCitEYXRlOiBNb24sIDE1IE1heSAyMDIzIDE2OjMxOjU4ICswODAwCitNZXNz YWdlLUlkOiA8MjAyMzA1MTUwODMyMDEuNDgyMDEtNC1scUBjaGluYWZmbXBlZy5vcmc+CitYLU1h aWxlcjogZ2l0LXNlbmQtZW1haWwgMi40MC4wCitJbi1SZXBseS1UbzogPDIwMjMwNTE1MDgzMjAx LjQ4MjAxLTEtbHFAY2hpbmFmZm1wZWcub3JnPgorUmVmZXJlbmNlczogCisgPENBRWctSmUtdllE OTdLbmJhcVRrSzU9VUo5VDNodG10SDNReWtjd28zK3JOQ3g9dytqUUBtYWlsLmdtYWlsLmNvbT4K KyA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMS1scUBjaGluYWZmbXBlZy5vcmc+CitNSU1FLVZlcnNp b246IDEuMAorWC1RUS1TRU5EU0laRTogNTIwCitGZWVkYmFjay1JRDogYml6ZXNtdHA6Y2hpbmFm Zm1wZWcub3JnOnF5Ymdsb2dpY3N2cnN6OnF5Ymdsb2dpY3N2cnN6M2EtMworU3ViamVjdDogW0ZG bXBlZy1kZXZlbF0gW1BBVENIIHYxMCAzLzZdIGF2Zm9ybWF0L2ZsdmVuYzogc3VwcG9ydCBtdXgg YXYxIGluCisgZW5oYW5jZWQgZmx2CitYLUJlZW5UaGVyZTogZmZtcGVnLWRldmVsQGZmbXBlZy5v cmcKK1gtTWFpbG1hbi1WZXJzaW9uOiAyLjEuMjkKK1ByZWNlZGVuY2U6IGxpc3QKK0xpc3QtSWQ6 IEZGbXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBhbmQgcGF0Y2hlcyA8ZmZtcGVnLWRldmVs LmZmbXBlZy5vcmc+CitMaXN0LVVuc3Vic2NyaWJlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL21haWxt YW4vb3B0aW9ucy9mZm1wZWctZGV2ZWw+LAorIDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RA ZmZtcGVnLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgorTGlzdC1BcmNoaXZlOiA8aHR0cHM6Ly9m Zm1wZWcub3JnL3BpcGVybWFpbC9mZm1wZWctZGV2ZWw+CitMaXN0LVBvc3Q6IDxtYWlsdG86ZmZt cGVnLWRldmVsQGZmbXBlZy5vcmc+CitMaXN0LUhlbHA6IDxtYWlsdG86ZmZtcGVnLWRldmVsLXJl cXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PWhlbHA+CitMaXN0LVN1YnNjcmliZTogPGh0dHBzOi8v ZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbD4sCisgPG1haWx0bzpmZm1w ZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9c3Vic2NyaWJlPgorUmVwbHktVG86 IEZGbXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBhbmQgcGF0Y2hlcyA8ZmZtcGVnLWRldmVs QGZmbXBlZy5vcmc+CitDYzogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgorRXJyb3Jz LVRvOiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCitTZW5kZXI6ICJmZm1wZWctZGV2 ZWwiIDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPgorWC1UVUlEOiBkUmZQZHNJdmV4 emgKKworU2lnbmVkLW9mZi1ieTogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgorLS0t CisgbGliYXZmb3JtYXQvTWFrZWZpbGUgfCAgMiArLQorIGxpYmF2Zm9ybWF0L2ZsdmVuYy5jIHwg MjIgKysrKysrKysrKysrKysrKysrLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9u cygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L01ha2VmaWxl IGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKK2luZGV4IDFlZjNkMTU0NjcuLmM4NjhlMTYyNmMgMTAw NjQ0CistLS0gYS9saWJhdmZvcm1hdC9NYWtlZmlsZQorKysrIGIvbGliYXZmb3JtYXQvTWFrZWZp bGUKK0BAIC0yMTQsNyArMjE0LDcgQEAgT0JKUy0kKENPTkZJR19GTEFDX01VWEVSKSAgICAgICAg ICAgICAgICArPSBmbGFjZW5jLm8gZmxhY2VuY19oZWFkZXIubyBcCisgT0JKUy0kKENPTkZJR19G TElDX0RFTVVYRVIpICAgICAgICAgICAgICArPSBmbGljLm8KKyBPQkpTLSQoQ09ORklHX0ZMVl9E RU1VWEVSKSAgICAgICAgICAgICAgICs9IGZsdmRlYy5vCisgT0JKUy0kKENPTkZJR19MSVZFX0ZM Vl9ERU1VWEVSKSAgICAgICAgICArPSBmbHZkZWMubworLU9CSlMtJChDT05GSUdfRkxWX01VWEVS KSAgICAgICAgICAgICAgICAgKz0gZmx2ZW5jLm8gYXZjLm8gaGV2Yy5vCisrT0JKUy0kKENPTkZJ R19GTFZfTVVYRVIpICAgICAgICAgICAgICAgICArPSBmbHZlbmMubyBhdmMubyBoZXZjLm8gYXYx Lm8KKyBPQkpTLSQoQ09ORklHX0ZPVVJYTV9ERU1VWEVSKSAgICAgICAgICAgICs9IDR4bS5vCisg T0JKUy0kKENPTkZJR19GUkFNRUNSQ19NVVhFUikgICAgICAgICAgICArPSBmcmFtZWNyY2VuYy5v IGZyYW1laGFzaC5vCisgT0JKUy0kKENPTkZJR19GUkFNRUhBU0hfTVVYRVIpICAgICAgICAgICAr PSBoYXNoZW5jLm8gZnJhbWVoYXNoLm8KK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9mbHZlbmMu YyBiL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jCitpbmRleCAzNWUxOThmYTE1Li5jMTc4NGIzMzJkIDEw MDY0NAorLS0tIGEvbGliYXZmb3JtYXQvZmx2ZW5jLmMKKysrKyBiL2xpYmF2Zm9ybWF0L2ZsdmVu Yy5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWc0YXVkaW8u aCIKKyAjaW5jbHVkZSAiYXZpby5oIgorICNpbmNsdWRlICJhdmMuaCIKKysjaW5jbHVkZSAiYXYx LmgiCisgI2luY2x1ZGUgImhldmMuaCIKKyAjaW5jbHVkZSAiYXZmb3JtYXQuaCIKKyAjaW5jbHVk ZSAiZmx2LmgiCitAQCAtNDgsNiArNDksNyBAQCBzdGF0aWMgY29uc3QgQVZDb2RlY1RhZyBmbHZf dmlkZW9fY29kZWNfaWRzW10gPSB7CisgICAgIHsgQVZfQ09ERUNfSURfVlA2QSwgICAgIEZMVl9D T0RFQ0lEX1ZQNkEgfSwKKyAgICAgeyBBVl9DT0RFQ19JRF9IMjY0LCAgICAgRkxWX0NPREVDSURf SDI2NCB9LAorICAgICB7IEFWX0NPREVDX0lEX0hFVkMsICAgICBNS0JFVEFHKCdoJywgJ3YnLCAn YycsICcxJykgfSwKKysgICAgeyBBVl9DT0RFQ19JRF9BVjEsICAgICAgTUtCRVRBRygnYScsICd2 JywgJzAnLCAnMScpIH0sCisgICAgIHsgQVZfQ09ERUNfSURfTk9ORSwgICAgIDAgfQorIH07Cisg CitAQCAtNDkxLDcgKzQ5Myw4IEBAIHN0YXRpYyB2b2lkIGZsdl93cml0ZV9jb2RlY19oZWFkZXIo QVZGb3JtYXRDb250ZXh0KiBzLCBBVkNvZGVjUGFyYW1ldGVycyogcGFyLCBpCisgICAgIEZMVkNv bnRleHQgKmZsdiA9IHMtPnByaXZfZGF0YTsKKyAKKyAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfQUFDIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NAorLSAg ICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgfHwgcGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7CisrICAgICAgICAgICAgfHwgcGFyLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X0hFVkMKKysgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkg eworICAgICAgICAgaW50NjRfdCBwb3M7CisgICAgICAgICBhdmlvX3c4KHBiLAorICAgICAgICAg ICAgICAgICBwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPID8KK0BAIC01Mzcs NiArNTQwLDkgQEAgc3RhdGljIHZvaWQgZmx2X3dyaXRlX2NvZGVjX2hlYWRlcihBVkZvcm1hdENv bnRleHQqIHMsIEFWQ29kZWNQYXJhbWV0ZXJzKiBwYXIsIGkKKyAgICAgICAgICAgICBpZiAocGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7CisgICAgICAgICAgICAgICAgIGF2aW9f dzgocGIsIEZMVl9JU19FWF9IRUFERVIgfCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydCk7IC8vIEV4 VmlkZW9UYWdIZWFkZXIgbW9kZSB3aXRoIFBhY2tldFR5cGVTZXF1ZW5jZVN0YXJ0CisgICAgICAg ICAgICAgICAgIGF2aW9fd3JpdGUocGIsICJodmMxIiwgNCk7CisrICAgICAgICAgICAgfSBlbHNl IGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgeworKyAgICAgICAgICAgICAg ICBhdmlvX3c4KHBiLCBGTFZfSVNfRVhfSEVBREVSIHwgUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQp OworKyAgICAgICAgICAgICAgICBhdmlvX3dyaXRlKHBiLCAiYXYwMSIsIDQpOworICAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIHBhci0+Y29kZWNfdGFn IHwgRkxWX0ZSQU1FX0tFWSk7IC8vIGZsYWdzCisgICAgICAgICAgICAgICAgIGF2aW9fdzgocGIs IDApOyAvLyBBVkMgc2VxdWVuY2UgaGVhZGVyCitAQCAtNTQ1LDYgKzU1MSw4IEBAIHN0YXRpYyB2 b2lkIGZsdl93cml0ZV9jb2RlY19oZWFkZXIoQVZGb3JtYXRDb250ZXh0KiBzLCBBVkNvZGVjUGFy YW1ldGVycyogcGFyLCBpCisgCisgICAgICAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfSEVWQykKKyAgICAgICAgICAgICAgICAgZmZfaXNvbV93cml0ZV9odmNjKHBiLCBw YXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSwgMCk7CisrICAgICAgICAgICAgZWxz ZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpCisrICAgICAgICAgICAgICAg IGZmX2lzb21fd3JpdGVfYXYxYyhwYiwgcGFyLT5leHRyYWRhdGEsIHBhci0+ZXh0cmFkYXRhX3Np emUsIDEpOworICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgZmZfaXNvbV93cml0 ZV9hdmNjKHBiLCBwYXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSk7CisgICAgICAg ICB9CitAQCAtODQzLDEzICs4NTEsMTUgQEAgc3RhdGljIGludCBmbHZfd3JpdGVfcGFja2V0KEFW Rm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKKyAgICAgaWYgKHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfVlA2RiB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNkEg fHwKKyAgICAgICAgIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2ICB8fCBwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQykKKyAgICAgICAgIGZsYWdzX3NpemUgPSAyOworLSAg ICBlbHNlIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgcGFyLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X0hFVkMpCisrICAgIGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8 fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8CisrICAgICAgICAgICAgIHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX0FWMSkKKyAgICAgICAgIGZsYWdzX3NpemUgPSA1OworICAgICBlbHNlCisgICAgICAg ICBmbGFnc19zaXplID0gMTsKKyAKKyAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfQUFDIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NAorLSAgICAgICAgICAg IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgfHwgcGFyLT5jb2RlY19pZCA9 PSBBVl9DT0RFQ19JRF9IRVZDKSB7CisrICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9NUEVHNCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMKKysg ICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgeworICAgICAg ICAgc2l6ZV90IHNpZGVfc2l6ZTsKKyAgICAgICAgIHVpbnQ4X3QgKnNpZGUgPSBhdl9wYWNrZXRf Z2V0X3NpZGVfZGF0YShwa3QsIEFWX1BLVF9EQVRBX05FV19FWFRSQURBVEEsICZzaWRlX3NpemUp OworICAgICAgICAgaWYgKHNpZGUgJiYgc2lkZV9zaXplID4gMCAmJiAoc2lkZV9zaXplICE9IHBh ci0+ZXh0cmFkYXRhX3NpemUgfHwgbWVtY21wKHNpZGUsIHBhci0+ZXh0cmFkYXRhLCBzaWRlX3Np emUpKSkgeworQEAgLTg2OSw3ICs4NzksOCBAQCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQo QVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQorICAgICAgICAgICAgICAgICJQYWNr ZXRzIGFyZSBub3QgaW4gdGhlIHByb3BlciBvcmRlciB3aXRoIHJlc3BlY3QgdG8gRFRTXG4iKTsK KyAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisgICAgIH0KKy0gICAgaWYgKHBhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVD X0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykgeworKyAgICBp ZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHBhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfTVBFRzQgfHwKKysgICAgICAgIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfSEVWQyB8fCAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKKyAgICAgICAg IGlmIChwa3QtPnB0cyA9PSBBVl9OT1BUU19WQUxVRSkgeworICAgICAgICAgICAgIGF2X2xvZyhz LCBBVl9MT0dfRVJST1IsICJQYWNrZXQgaXMgbWlzc2luZyBQVFNcbiIpOworICAgICAgICAgICAg IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CitAQCAtOTgyLDYgKzk5Myw5IEBAIHN0YXRpYyBpbnQg Zmx2X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCisgICAg ICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7CisgICAgICAgICAg ICAgYXZpb193OChwYiwgRkxWX0lTX0VYX0hFQURFUiB8IFBhY2tldFR5cGVDb2RlZEZyYW1lc1gp OyAvLyBFeFZpZGVvVGFnSGVhZGVyIG1vZGUgd2l0aCBQYWNrZXRUeXBlQ29kZWRGcmFtZXNYCisg ICAgICAgICAgICAgYXZpb193cml0ZShwYiwgImh2YzEiLCA0KTsKKysgICAgICAgIH0gZWxzZSBp ZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKKysgICAgICAgICAgICBhdmlv X3c4KHBiLCBGTFZfSVNfRVhfSEVBREVSIHwgUGFja2V0VHlwZUNvZGVkRnJhbWVzKTsKKysgICAg ICAgICAgICBhdmlvX3dyaXRlKHBiLCAiYXYwMSIsIDQpOworICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICBhdmlvX3c4KHBiLCBmbGFncyk7CisgICAgICAgICB9CisKK0Zyb20gcGF0Y2h3 b3JrIE1vbiBNYXkgMTUgMDg6MzE6NTkgMjAyMworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBj aGFyc2V0PSJ1dGYtOCIKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVRyYW5zZmVyLUVuY29k aW5nOiA3Yml0CitYLVBhdGNod29yay1TdWJtaXR0ZXI6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZt cGVnLm9yZz4KK1gtUGF0Y2h3b3JrLUlkOiA0MTYxOAorRGVsaXZlcmVkLVRvOiBmZm1wZWdwYXRj aHdvcmsyQGdtYWlsLmNvbQorUmVjZWl2ZWQ6IGJ5IDIwMDI6YTA1OjZhMjA6YmE5MTpiMDoxMDU6 ZmViOjcxZjIgd2l0aCBTTVRQIGlkCisgZmIxN2NzcDE0NDQyOTBwemI7CisgICAgICAgIE1vbiwg MTUgTWF5IDIwMjMgMDE6MzM6NDEgLTA3MDAgKFBEVCkKK1gtR29vZ2xlLVNtdHAtU291cmNlOiAK KyBBQ0hIVVo3azVIU1lWcEtsdXREQ0gzQlZOMDNvUTFlUTlOV2pLd0JlYkxHdjVmSzBkMnFWR0dn Q3RCbzNYZEVHbERURFV1dmxEelJYCitYLVJlY2VpdmVkOiBieSAyMDAyOmExNzo5MDc6OTM0Nzpi MDo5NGY6MzIyZDo5MDljIHdpdGggU01UUCBpZAorIGJ2Ny0yMDAyMGExNzA5MDc5MzQ3MDBiMDA5 NGYzMjJkOTA5Y21yMjY5OTQxMThlamMuMzQuMTY4NDEzOTYyMDk4NjsKKyAgICAgICAgTW9uLCAx NSBNYXkgMjAyMyAwMTozMzo0MCAtMDcwMCAoUERUKQorQVJDLVNlYWw6IGk9MTsgYT1yc2Etc2hh MjU2OyB0PTE2ODQxMzk2MjA7IGN2PW5vbmU7CisgICAgICAgIGQ9Z29vZ2xlLmNvbTsgcz1hcmMt MjAxNjA4MTY7CisgICAgICAgIGI9QkJTZ2VnWFIxdTBLNzY3UjlNQXhRZGR0NDloWk5oRFMrWWdD SEdZbzBCMDdDbHRlSzAxODczOVRLOXR1cFZoN3BLCisgICAgICAgICB3dXZrL2d6a0VwSVpwZjJJ M0xRbnBheHZReDBabmxsU0t5eit4KzU2MHdFVktrUXc1dGx3cGdyNHFBM20wQXBCQm1RUgorICAg ICAgICAgMlpVdTZXUnBCblZlWEpiVDVuK3ltSVRyTGQxTlZYTE5QcW96N2tMMGlETUwwYjJpQzlQ cUNvR1JUSEY2ekpaRnRDSDIKKyAgICAgICAgIFpZVXE0T2RjYmZsdnFxTEJ2S3ZTZ0V3dVZvZjBi cUR3RDhrZnE5bm9LVGY3d3J4NWJjZElicTZYTVlHMW42QW5QcTdSCisgICAgICAgICBSK2VrbWhv c0ZvWjdJZ29oQWtqOWs4ajZsNGlwQ2M2eVZOMk04VE4xVGZUd1JDMDF2enorU1JZT1haV0xOYjBl cVp6aAorICAgICAgICAgWnAyQT09CitBUkMtTWVzc2FnZS1TaWduYXR1cmU6IGk9MTsgYT1yc2Et c2hhMjU2OyBjPXJlbGF4ZWQvcmVsYXhlZDsgZD1nb29nbGUuY29tOworIHM9YXJjLTIwMTYwODE2 OworICAgICAgICBoPXNlbmRlcjplcnJvcnMtdG86Y29udGVudC10cmFuc2Zlci1lbmNvZGluZzpj YzpyZXBseS10bworICAgICAgICAgOmxpc3Qtc3Vic2NyaWJlOmxpc3QtaGVscDpsaXN0LXBvc3Q6 bGlzdC1hcmNoaXZlOmxpc3QtdW5zdWJzY3JpYmUKKyAgICAgICAgIDpsaXN0LWlkOnByZWNlZGVu Y2U6c3ViamVjdDpmZWVkYmFjay1pZDptaW1lLXZlcnNpb246cmVmZXJlbmNlcworICAgICAgICAg OmluLXJlcGx5LXRvOm1lc3NhZ2UtaWQ6ZGF0ZTp0bzpmcm9tOmRlbGl2ZXJlZC10bzsKKyAgICAg ICAgYmg9SjVoSXQ4LzZsNzk4M0hXUU9BR0ExcXk2bWpXbU1XdTZESjJSWlJmSmV1UT07CisgICAg ICAgIGI9clg4OGtXSEp0VWlxbk51dEVRQ093VXZmbDVsVi9GVkh2aWFESElzaWF0dkI5MlhHNzFw Z2VGVlhvcFRqSitzdDNGCisgICAgICAgICBsdSsvcktuWUtBVlhGcUY0V0hNUDZidTBWVDViRkUy QTk4MDZnVEQ1UmYxRDJ5R1ZqS1dSSDhmaFk2SmwyS2hFaFFBKworICAgICAgICAgRWZjNmZNWjJx WlJtZHg1UzJJTkUyaytzWTN6Z1dac0ZrdjJORG93Rkxuam5wbVRHbmVWVzgyeWJDYkwwNkRSSDdK dHMKKyAgICAgICAgIHd4V0RmRmZUcW5wMlZOd0QwQzQ2MmY1b2dMQjhjSDdmOXVvRnZpVG92RVlj WGM4aUxwSFAzOGNKYTNoZEF1Smc5NzJTCisgICAgICAgICBjZ2pKU3VaVWFRMzhicW13N3RoMk1E a2FGU3pyeWNrMHdhZm5lUmRKVXh5S0c3bHRid2s0aGdBejg5eXpVQjduWmVVNgorICAgICAgICAg eXVjQT09CitBUkMtQXV0aGVudGljYXRpb24tUmVzdWx0czogaT0xOyBteC5nb29nbGUuY29tOwor ICAgICAgIHNwZj1wYXNzIChnb29nbGUuY29tOiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5j ZXNAZmZtcGVnLm9yZworIGRlc2lnbmF0ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2Vu ZGVyKQorIHNtdHAubWFpbGZyb209ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworUmV0 dXJuLVBhdGg6IDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPgorUmVjZWl2ZWQ6IGZy b20gZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoZmZib3gwLWJnLmZmbXBlZy5vcmcuIFs3OS4xMjQu MTcuMTAwXSkKKyAgICAgICAgYnkgbXguZ29vZ2xlLmNvbSB3aXRoIEVTTVRQIGlkCisgZ3Y0MS0y MDAyMGExNzA5MDcyYmU5MDBiMDA5NjVmMTcxNTQzZXNpMTE1NzUxNDhlamMuMTQ4LjIwMjMuMDUu MTUuMDEuMzMuNDA7CisgICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6MzM6NDAgLTA3MDAgKFBE VCkKK1JlY2VpdmVkLVNQRjogcGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZl bC1ib3VuY2VzQGZmbXBlZy5vcmcKKyBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0 dGVkIHNlbmRlcikgY2xpZW50LWlwPTc5LjEyNC4xNy4xMDA7CitBdXRoZW50aWNhdGlvbi1SZXN1 bHRzOiBteC5nb29nbGUuY29tOworICAgICAgIHNwZj1wYXNzIChnb29nbGUuY29tOiBkb21haW4g b2YgZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworIGRlc2lnbmF0ZXMgNzkuMTI0LjE3 LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKQorIHNtdHAubWFpbGZyb209ZmZtcGVnLWRldmVsLWJv dW5jZXNAZmZtcGVnLm9yZworUmVjZWl2ZWQ6IGZyb20gWzEyNy4wLjEuMV0gKGxvY2FsaG9zdCBb MTI3LjAuMC4xXSkKKwlieSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChQb3N0Zml4KSB3aXRoIEVT TVRQIGlkIEQ2NUFENjhDMEE4OworCU1vbiwgMTUgTWF5IDIwMjMgMTE6MzM6MjkgKzAzMDAgKEVF U1QpCitYLU9yaWdpbmFsLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZworRGVsaXZlcmVkLVRv OiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZworUmVjZWl2ZWQ6IGZyb20gYmc0LmV4bWFpbC5xcS5j b20gKGJnNC5leG1haWwucXEuY29tIFs0My4xNTUuNjcuMTU4XSkKKyBieSBmZmJveDAtYmcubXBs YXllcmhxLmh1IChQb3N0Zml4KSB3aXRoIEVTTVRQUyBpZCA1QUE2NzY4QzA5RgorIGZvciA8ZmZt cGVnLWRldmVsQGZmbXBlZy5vcmc+OyBNb24sIDE1IE1heSAyMDIzIDExOjMzOjIyICswMzAwIChF RVNUKQorWC1RUS1taWQ6IGJpemVzbXRwNzV0MTY4NDEzOTU5NnQ0b2tmODZtCitSZWNlaXZlZDog ZnJvbSBsb2NhbGhvc3QgKCBbMTAzLjEwMi4yMDMuMjA0XSkgYnkgYml6ZXNtdHAucXEuY29tIChF U01UUCkgd2l0aAorIGlkIDsgTW9uLCAxNSBNYXkgMjAyMyAxNjozMzoxNSArMDgwMCAoQ1NUKQor WC1RUS1TU0Y6IDAxMTAwMDAwMDAwMDAwWjBaMDAwMDAwQTAwMDAwMDAKK1gtUVEtRkVBVDogS3Z2 d1IvaGNQQTN3WTZIODR1WDFaNE9oVzlJMmJRMVFWMzV6bkJ6NDRoOEdaL29VdU1hRnBEY3JUM2RT ZworIE1Va1RWVE1FeWhYaEhOeDJKSU14Znc1K3EvM1RDVXR2bktYc3hMWnRRc3kvME5xL3krcDB4 VnNISnpRbU04Q3ZiVDZMNlEzCisgT214d3ZHQU82bGp2SS9pQStTWFUrMytIVU55ZXRERThVVFJX MVpHQ3RHOWlKUmJLOXdYUG9pQU16TGVwVDIrQ0hHTzJicnEKKyBDd0g2UkEvZTkvSTR4T0hMbGV5 d3RDNG9EbFB1eUhvdnh6emVkc0JUclhZaWM1dGIwK0Q2NWFiYzZOamZIcjd6cllEL0RRdQorIEhZ ME5Od2VYOVlQL2pFOGpKMFRQTGhjeDd3aWdodytLREZiWWYrVWNVdWFQSGh6ZkFaaDJmNmFwbGli elZ1dlY3OE9QcTJTCisgdGhRL1hlTUdmL1c5Qy9PeTRFcTE0NStHK3BVUTd6eC9PS1k4SmovMzNk bXZ3WmtVcjg9CitYLVFRLUdvb2RCZzogMAorWC1CSVpNQUlMLUlEOiA5NTMwMzg3OTk1OTMwMTIw OTMyCitGcm9tOiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+CitUbzogZmZtcGVnLWRl dmVsQGZmbXBlZy5vcmcKK0RhdGU6IE1vbiwgMTUgTWF5IDIwMjMgMTY6MzE6NTkgKzA4MDAKK01l c3NhZ2UtSWQ6IDwyMDIzMDUxNTA4MzIwMS40ODIwMS01LWxxQGNoaW5hZmZtcGVnLm9yZz4KK1gt TWFpbGVyOiBnaXQtc2VuZC1lbWFpbCAyLjQwLjAKK0luLVJlcGx5LVRvOiA8MjAyMzA1MTUwODMy MDEuNDgyMDEtMS1scUBjaGluYWZmbXBlZy5vcmc+CitSZWZlcmVuY2VzOiAKKyA8Q0FFZy1KZS12 WUQ5N0tuYmFxVGtLNT1VSjlUM2h0bXRIM1F5a2N3bzMrck5DeD13K2pRQG1haWwuZ21haWwuY29t PgorIDwyMDIzMDUxNTA4MzIwMS40ODIwMS0xLWxxQGNoaW5hZmZtcGVnLm9yZz4KK01JTUUtVmVy c2lvbjogMS4wCitYLVFRLVNFTkRTSVpFOiA1MjAKK0ZlZWRiYWNrLUlEOiBiaXplc210cDpjaGlu YWZmbXBlZy5vcmc6cXliZ2xvZ2ljc3Zyc3o6cXliZ2xvZ2ljc3Zyc3ozYS0zCitTdWJqZWN0OiBb RkZtcGVnLWRldmVsXSBbUEFUQ0ggdjEwIDQvNl0gYXZmb3JtYXQvZmx2ZGVjOiBzdXBwb3J0IGRl bXV4IGF2MQorIGluIGVuaGFuY2VkIGZsdgorWC1CZWVuVGhlcmU6IGZmbXBlZy1kZXZlbEBmZm1w ZWcub3JnCitYLU1haWxtYW4tVmVyc2lvbjogMi4xLjI5CitQcmVjZWRlbmNlOiBsaXN0CitMaXN0 LUlkOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vzc2lvbnMgYW5kIHBhdGNoZXMgPGZmbXBlZy1k ZXZlbC5mZm1wZWcub3JnPgorTGlzdC1VbnN1YnNjcmliZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9t YWlsbWFuL29wdGlvbnMvZmZtcGVnLWRldmVsPiwKKyA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1 ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD11bnN1YnNjcmliZT4KK0xpc3QtQXJjaGl2ZTogPGh0dHBz Oi8vZmZtcGVnLm9yZy9waXBlcm1haWwvZmZtcGVnLWRldmVsPgorTGlzdC1Qb3N0OiA8bWFpbHRv OmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgorTGlzdC1IZWxwOiA8bWFpbHRvOmZmbXBlZy1kZXZl bC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD1oZWxwPgorTGlzdC1TdWJzY3JpYmU6IDxodHRw czovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWw+LAorIDxtYWlsdG86 ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PXN1YnNjcmliZT4KK1JlcGx5 LVRvOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vzc2lvbnMgYW5kIHBhdGNoZXMgPGZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnPgorQ2M6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KK0Vy cm9ycy1UbzogZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworU2VuZGVyOiAiZmZtcGVn LWRldmVsIiA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4KK1gtVFVJRDogTUtxalZp bml3SXkrCisKK1NpZ25lZC1vZmYtYnk6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4K Ky0tLQorIGxpYmF2Zm9ybWF0L2ZsdmRlYy5jIHwgMTIgKysrKysrKysrKy0tCisgMSBmaWxlIGNo YW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9s aWJhdmZvcm1hdC9mbHZkZWMuYyBiL2xpYmF2Zm9ybWF0L2ZsdmRlYy5jCitpbmRleCBjOGU2Y2Fk ZjFjLi5hMDM2MmZmMTFjIDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvZmx2ZGVjLmMKKysrKyBi L2xpYmF2Zm9ybWF0L2ZsdmRlYy5jCitAQCAtMzE4LDYgKzMxOCw4IEBAIHN0YXRpYyBpbnQgZmx2 X3NhbWVfdmlkZW9fY29kZWMoQVZGb3JtYXRDb250ZXh0ICpzLCBBVkNvZGVjUGFyYW1ldGVycyAq dnBhciwgaW50CisgICAgICAgICBzd2l0Y2goY29kZWNfaWQpIHsKKyAgICAgICAgICAgICBjYXNl IE1LQkVUQUcoJ2gnLCAndicsICdjJywgJzEnKToKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHZw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkM7CisrICAgICAgICAgICAgY2FzZSBNS0JF VEFHKCdhJywgJ3YnLCAnMCcsICcxJyk6CisrICAgICAgICAgICAgICAgIHJldHVybiB2cGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjE7CisgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitAQCAtMzU5LDYgKzM2MSwxMCBAQCBzdGF0 aWMgaW50IGZsdl9zZXRfdmlkZW9fY29kZWMoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAq dnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgcGFyLT5jb2RlY19pZCA9IEFWX0NPREVDX0lEX0hF VkM7CisgICAgICAgICAgICAgICAgIHZzdHJlYW1pLT5uZWVkX3BhcnNpbmcgPSBBVlNUUkVBTV9Q QVJTRV9IRUFERVJTOworICAgICAgICAgICAgICAgICByZXR1cm4gNDsKKysgICAgICAgICAgICBj YXNlIE1LQkVUQUcoJ2EnLCAndicsICcwJywgJzEnKToKKysgICAgICAgICAgICAgICAgcGFyLT5j b2RlY19pZCA9IEFWX0NPREVDX0lEX0FWMTsKKysgICAgICAgICAgICAgICAgdnN0cmVhbWktPm5l ZWRfcGFyc2luZyA9IEFWU1RSRUFNX1BBUlNFX0hFQURFUlM7CisrICAgICAgICAgICAgICAgIHJl dHVybiA0OworICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgfQorQEAgLTEyNzgsNyArMTI4NCw4IEBAIHJldHJ5X2R1cmF0aW9uOgorICAgICBp ZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BQUMgfHwKKyAgICAgICAg IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fAorICAgICAgICAg c3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fAorLSAgICAgICAg c3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7CisrICAgICAgICBz dC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMgfHwKKysgICAgICAgIHN0 LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7CisgICAgICAgICBpbnQg dHlwZSA9IDA7CisgICAgICAgICBpZiAoZmx2LT5leGhlYWRlciAmJiBzdHJlYW1fdHlwZSA9PSBG TFZfU1RSRUFNX1RZUEVfVklERU8pIHsKKyAgICAgICAgICAgICB0eXBlID0gZmxhZ3MgJiAweDBG OworQEAgLTEzMDksNyArMTMxNiw4IEBAIHJldHJ5X2R1cmF0aW9uOgorICAgICAgICAgICAgIH0K KyAgICAgICAgIH0KKyAgICAgICAgIGlmICh0eXBlID09IDAgJiYgKCFzdC0+Y29kZWNwYXItPmV4 dHJhZGF0YSB8fCBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQyB8fAor LSAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8 fCBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpKSB7CisrICAgICAg ICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHN0LT5j b2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyB8fAorKyAgICAgICAgICAgIHN0 LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSkgeworICAgICAgICAgICAg IEFWRGljdGlvbmFyeUVudHJ5ICp0OworIAorICAgICAgICAgICAgIGlmIChzdC0+Y29kZWNwYXIt PmV4dHJhZGF0YSkgeworCitGcm9tIHBhdGNod29yayBNb24gTWF5IDE1IDA4OjMyOjAwIDIwMjMK K0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCitNSU1FLVZlcnNpb246 IDEuMAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAorWC1QYXRjaHdvcmstU3VibWl0 dGVyOiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+CitYLVBhdGNod29yay1JZDogNDE2 MTkKK0RlbGl2ZXJlZC1UbzogZmZtcGVncGF0Y2h3b3JrMkBnbWFpbC5jb20KK1JlY2VpdmVkOiBi eSAyMDAyOmEwNTo2YTIwOmJhOTE6YjA6MTA1OmZlYjo3MWYyIHdpdGggU01UUCBpZAorIGZiMTdj c3AxNDQ0NTMycHpiOworICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjM0OjEwIC0wNzAwIChQ RFQpCitYLUdvb2dsZS1TbXRwLVNvdXJjZTogCisgQUNISFVaNFFsRnFYTWEwV05ISzNaM0hMZ1Bt MlVza3VRWlgyd21iRmhZbStaTDBCc0RSUGhMeEpib0cwWWhEUEZpOTk5YVZDUVpFKworWC1SZWNl aXZlZDogYnkgMjAwMjphMDU6NjQwMjoxNGMzOmIwOjUwZDpmY2ZiOjg2MzMgd2l0aCBTTVRQIGlk CisgZjMtMjAwMjBhMDU2NDAyMTRjMzAwYjAwNTBkZmNmYjg2MzNtcjk2MTM3ODllZHguOS4xNjg0 MTM5NjUwMTk2OworICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjM0OjEwIC0wNzAwIChQRFQp CitBUkMtU2VhbDogaT0xOyBhPXJzYS1zaGEyNTY7IHQ9MTY4NDEzOTY1MDsgY3Y9bm9uZTsKKyAg ICAgICAgZD1nb29nbGUuY29tOyBzPWFyYy0yMDE2MDgxNjsKKyAgICAgICAgYj1zamZtNHhoVFBx akdOeUhseFMzL2tNUGlseDEzRUIrN1MwWXhqT0k1bFI5TU1nOFN5M0tnTDE4N0M2dHVacVV3b1oK KyAgICAgICAgIGRKbzdBM3E0MUVLNFdKeVdUVFV5cVVPcjhxOEpQamJCVENKcFZzRVJ1TXVNV3BI cmhReHZ3RURpYnZmdURJMFpJMnZLCisgICAgICAgICB5NXBxUloyM09NTlpMQ0MrZnNjODVnUURL UGd2a1laVFlpc1NPc1dWUmlaUUdsMDRUaXBmWkUxVXphOFI3WkVYUmdkSAorICAgICAgICAgWlc3 NzBZY2Z6VlhtS0t6cmFsSDR0aFNGaEdmTVpScFg3a2o2b0J0bXBVY280WjZpdTQybzNpQlRjYWlv R0J6ZFdkUFkKKyAgICAgICAgIEtMOTRXQUlhTW5DeU8xSkphVUFKR3pFY1FUR2hQYlhVekc3SnZt cUV3U2ExNjhHQlNFalFKM3FKYzhvT3IrVVZXY3ZuCisgICAgICAgICBIdmFRPT0KK0FSQy1NZXNz YWdlLVNpZ25hdHVyZTogaT0xOyBhPXJzYS1zaGEyNTY7IGM9cmVsYXhlZC9yZWxheGVkOyBkPWdv b2dsZS5jb207Cisgcz1hcmMtMjAxNjA4MTY7CisgICAgICAgIGg9c2VuZGVyOmVycm9ycy10bzpj b250ZW50LXRyYW5zZmVyLWVuY29kaW5nOmNjOnJlcGx5LXRvCisgICAgICAgICA6bGlzdC1zdWJz Y3JpYmU6bGlzdC1oZWxwOmxpc3QtcG9zdDpsaXN0LWFyY2hpdmU6bGlzdC11bnN1YnNjcmliZQor ICAgICAgICAgOmxpc3QtaWQ6cHJlY2VkZW5jZTpzdWJqZWN0OmZlZWRiYWNrLWlkOm1pbWUtdmVy c2lvbjpyZWZlcmVuY2VzCisgICAgICAgICA6aW4tcmVwbHktdG86bWVzc2FnZS1pZDpkYXRlOnRv OmZyb206ZGVsaXZlcmVkLXRvOworICAgICAgICBiaD1iMVNwNW9xWkFNd2FrSTdhM1p2dzRNZG5L UHlvbVpvOGNYcURueUphbWpnPTsKKyAgICAgICAgYj1qY0ZKT2xpMTZOUHFHUG5NRGNKVkVSM1RF a1dyZU5KMlZ1NzcxMUdoSmhGa21YTE5GaFMyRlVBb1Q5UUJUeStKV20KKyAgICAgICAgIGp4YUJq aVZ2czFNTVErYTNrM3lUN0F6VlNVTU1ERFNhZ2lFL2pXelErdkJOOWRyL2pRT010Sld4d2ZtNG9U YkJjMC9yCisgICAgICAgICBHY0hUZ1BLQjJIdkVpTE9XYUo0Q1NmWmNZQnZvc29ldy9JZlBnS20w NlAyQnRtYytmYVNYTENaNjNuS0VWVHE3TkNweAorICAgICAgICAgcWxsSlBrRm12bHdCLytzb3hO N25aZ1R6WG0vdXVyU09CTWFqSW1SR1BPWlVPWlFFMUk1VGs4T3RKWFpQNlF0bFN2WFQKKyAgICAg ICAgIFpjZ2xld2hUWXVIbEFYYnBUNHNZeWRkTXdLZzl5UHU2L1dtcm9sL3dnM1FwWFBaMGxWdExl VG96dXMvMlVUSVNKclI1CisgICAgICAgICBMcDNRPT0KK0FSQy1BdXRoZW50aWNhdGlvbi1SZXN1 bHRzOiBpPTE7IG14Lmdvb2dsZS5jb207CisgICAgICAgc3BmPXBhc3MgKGdvb2dsZS5jb206IGRv bWFpbiBvZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCisgZGVzaWduYXRlcyA3OS4x MjQuMTcuMTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpCisgc210cC5tYWlsZnJvbT1mZm1wZWctZGV2 ZWwtYm91bmNlc0BmZm1wZWcub3JnCitSZXR1cm4tUGF0aDogPGZmbXBlZy1kZXZlbC1ib3VuY2Vz QGZmbXBlZy5vcmc+CitSZWNlaXZlZDogZnJvbSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChmZmJv eDAtYmcuZmZtcGVnLm9yZy4gWzc5LjEyNC4xNy4xMDBdKQorICAgICAgICBieSBteC5nb29nbGUu Y29tIHdpdGggRVNNVFAgaWQKKyBmMjUtMjAwMjBhMDU2NDAyMTUxOTAwYjAwNTBiZDM3Mjc4ZDlz aTExODU2OTI1ZWR3LjQzNS4yMDIzLjA1LjE1LjAxLjM0LjA5OworICAgICAgICBNb24sIDE1IE1h eSAyMDIzIDAxOjM0OjEwIC0wNzAwIChQRFQpCitSZWNlaXZlZC1TUEY6IHBhc3MgKGdvb2dsZS5j b206IGRvbWFpbiBvZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCisgZGVzaWduYXRl cyA3OS4xMjQuMTcuMTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpIGNsaWVudC1pcD03OS4xMjQuMTcu MTAwOworQXV0aGVudGljYXRpb24tUmVzdWx0czogbXguZ29vZ2xlLmNvbTsKKyAgICAgICBzcGY9 cGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5v cmcKKyBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRlcikKKyBzbXRw Lm1haWxmcm9tPWZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKK1JlY2VpdmVkOiBmcm9t IFsxMjcuMC4xLjFdIChsb2NhbGhvc3QgWzEyNy4wLjAuMV0pCisJYnkgZmZib3gwLWJnLm1wbGF5 ZXJocS5odSAoUG9zdGZpeCkgd2l0aCBFU01UUCBpZCAwREI2NTY4QzA5MjsKKwlNb24sIDE1IE1h eSAyMDIzIDExOjM0OjA3ICswMzAwIChFRVNUKQorWC1PcmlnaW5hbC1UbzogZmZtcGVnLWRldmVs QGZmbXBlZy5vcmcKK0RlbGl2ZXJlZC1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK1JlY2Vp dmVkOiBmcm9tIGJnNC5leG1haWwucXEuY29tIChiZzQuZXhtYWlsLnFxLmNvbSBbNDMuMTU0LjIy MS41OF0pCisgYnkgZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoUG9zdGZpeCkgd2l0aCBFU01UUFMg aWQgOTZBMTQ2ODAyNzQKKyBmb3IgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPjsgTW9uLCAxNSBN YXkgMjAyMyAxMTozMzo1OSArMDMwMCAoRUVTVCkKK1gtUVEtbWlkOiBiaXplc210cDc2dDE2ODQx Mzk2MzR0ZzgzYmV1MAorUmVjZWl2ZWQ6IGZyb20gbG9jYWxob3N0ICggWzEwMy4xMDIuMjAzLjIw NF0pIGJ5IGJpemVzbXRwLnFxLmNvbSAoRVNNVFApIHdpdGgKKyBpZCA7IE1vbiwgMTUgTWF5IDIw MjMgMTY6MzM6NTIgKzA4MDAgKENTVCkKK1gtUVEtU1NGOiAwMTEwMDAwMDAwMDAwMFowWjAwMDAw MEEwMDAwMDAwCitYLVFRLUZFQVQ6IERXU0Njd1cvYVFiODNVNUJxOU4wMHcza2tJdW9mTmlVdmxR YmdSMHNnR2pGRWFzK3ZoN3dYeVJ5Y0ZUL3oKKyB3MzNTSDd1TlJYOGxtUCs4K2l5NmpRSC9nc2FR UlZBYXUyejhLMHV0ZHg5R3VaTXZZMGU1U1pmQjB6QmZuY2IxTmRCWkp4QgorIFB0dmliYXZuajJy RGxxckdMTzlkdkZFZm1ZajFLNDhIWXA2cmRqQ2IreFJQZnlPdG5jdDNacTZTVDdGMUR4VTErS210 OGN3CisgMnFWZ2VBNzlETkhtMUpiY0R6aS8yVy9TcHpXSFdrL2phbU40Y0FRZkt5UDlCNEF2TVBh RmQ4a2RsNmFrWWJSMFE4NEg3M00KKyBQY3g4VVh6Nml3NHNDVFNQRnpmMHpyc0k0K3NobHk5S0Zw NFVFU1RmUmJERUo0NnBjeXc4KzZVeitRN3crN0NSdFBsT3NtcworIEs2SUFiY0x3aWNmL3Y4Um0y bkhkck5Qb3RjYU1nWTVwN0lxbWtZL1kvYjJmZXFLaUFNPQorWC1RUS1Hb29kQmc6IDAKK1gtQkla TUFJTC1JRDogNDYxMTcxODQ4MzA1Njc4OTM2NAorRnJvbTogU3RldmVuIExpdSA8bHFAY2hpbmFm Zm1wZWcub3JnPgorVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCitEYXRlOiBNb24sIDE1IE1h eSAyMDIzIDE2OjMyOjAwICswODAwCitNZXNzYWdlLUlkOiA8MjAyMzA1MTUwODMyMDEuNDgyMDEt Ni1scUBjaGluYWZmbXBlZy5vcmc+CitYLU1haWxlcjogZ2l0LXNlbmQtZW1haWwgMi40MC4wCitJ bi1SZXBseS1UbzogPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTEtbHFAY2hpbmFmZm1wZWcub3JnPgor UmVmZXJlbmNlczogCisgPENBRWctSmUtdllEOTdLbmJhcVRrSzU9VUo5VDNodG10SDNReWtjd28z K3JOQ3g9dytqUUBtYWlsLmdtYWlsLmNvbT4KKyA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMS1scUBj aGluYWZmbXBlZy5vcmc+CitNSU1FLVZlcnNpb246IDEuMAorWC1RUS1TRU5EU0laRTogNTIwCitG ZWVkYmFjay1JRDogYml6ZXNtdHA6Y2hpbmFmZm1wZWcub3JnOnF5Ymdsb2dpY3N2cnN6OnF5Ymds b2dpY3N2cnN6M2EtMworU3ViamVjdDogW0ZGbXBlZy1kZXZlbF0gW1BBVENIIHYxMCA1LzZdIGF2 Zm9ybWF0L2ZsdmVuYzogc3VwcG9ydCBtdXggdnA5IGluCisgZW5oYW5jZWQgZmx2CitYLUJlZW5U aGVyZTogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK1gtTWFpbG1hbi1WZXJzaW9uOiAyLjEuMjkK K1ByZWNlZGVuY2U6IGxpc3QKK0xpc3QtSWQ6IEZGbXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9u cyBhbmQgcGF0Y2hlcyA8ZmZtcGVnLWRldmVsLmZmbXBlZy5vcmc+CitMaXN0LVVuc3Vic2NyaWJl OiA8aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vb3B0aW9ucy9mZm1wZWctZGV2ZWw+LAorIDxt YWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJl PgorTGlzdC1BcmNoaXZlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL3BpcGVybWFpbC9mZm1wZWctZGV2 ZWw+CitMaXN0LVBvc3Q6IDxtYWlsdG86ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+CitMaXN0LUhl bHA6IDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PWhlbHA+ CitMaXN0LVN1YnNjcmliZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Zm bXBlZy1kZXZlbD4sCisgPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1 YmplY3Q9c3Vic2NyaWJlPgorUmVwbHktVG86IEZGbXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9u cyBhbmQgcGF0Y2hlcyA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+CitDYzogU3RldmVuIExpdSA8 bHFAY2hpbmFmZm1wZWcub3JnPgorRXJyb3JzLVRvOiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1w ZWcub3JnCitTZW5kZXI6ICJmZm1wZWctZGV2ZWwiIDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1w ZWcub3JnPgorWC1UVUlEOiBhcHBjeUxVSmVlRlcKKworU2lnbmVkLW9mZi1ieTogU3RldmVuIExp dSA8bHFAY2hpbmFmZm1wZWcub3JnPgorLS0tCisgbGliYXZmb3JtYXQvTWFrZWZpbGUgfCAgMiAr LQorIGxpYmF2Zm9ybWF0L2ZsdmVuYy5jIHwgMjIgKysrKysrKysrKysrKystLS0tLS0tLQorIDIg ZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAt LWdpdCBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKK2luZGV4 IGM4NjhlMTYyNmMuLjE2Y2ZlMTA3ZWEgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9NYWtlZmls ZQorKysrIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKK0BAIC0yMTQsNyArMjE0LDcgQEAgT0JKUy0k KENPTkZJR19GTEFDX01VWEVSKSAgICAgICAgICAgICAgICArPSBmbGFjZW5jLm8gZmxhY2VuY19o ZWFkZXIubyBcCisgT0JKUy0kKENPTkZJR19GTElDX0RFTVVYRVIpICAgICAgICAgICAgICArPSBm bGljLm8KKyBPQkpTLSQoQ09ORklHX0ZMVl9ERU1VWEVSKSAgICAgICAgICAgICAgICs9IGZsdmRl Yy5vCisgT0JKUy0kKENPTkZJR19MSVZFX0ZMVl9ERU1VWEVSKSAgICAgICAgICArPSBmbHZkZWMu bworLU9CSlMtJChDT05GSUdfRkxWX01VWEVSKSAgICAgICAgICAgICAgICAgKz0gZmx2ZW5jLm8g YXZjLm8gaGV2Yy5vIGF2MS5vCisrT0JKUy0kKENPTkZJR19GTFZfTVVYRVIpICAgICAgICAgICAg ICAgICArPSBmbHZlbmMubyBhdmMubyBoZXZjLm8gYXYxLm8gdnBjYy5vCisgT0JKUy0kKENPTkZJ R19GT1VSWE1fREVNVVhFUikgICAgICAgICAgICArPSA0eG0ubworIE9CSlMtJChDT05GSUdfRlJB TUVDUkNfTVVYRVIpICAgICAgICAgICAgKz0gZnJhbWVjcmNlbmMubyBmcmFtZWhhc2gubworIE9C SlMtJChDT05GSUdfRlJBTUVIQVNIX01VWEVSKSAgICAgICAgICAgKz0gaGFzaGVuYy5vIGZyYW1l aGFzaC5vCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvZmx2ZW5jLmMgYi9saWJhdmZvcm1hdC9m bHZlbmMuYworaW5kZXggYzE3ODRiMzMyZC4uNDc1ZGQwYmY0NCAxMDA2NDQKKy0tLSBhL2xpYmF2 Zm9ybWF0L2ZsdmVuYy5jCisrKysgYi9saWJhdmZvcm1hdC9mbHZlbmMuYworQEAgLTI5LDYgKzI5 LDcgQEAKKyAjaW5jbHVkZSAiYXZpby5oIgorICNpbmNsdWRlICJhdmMuaCIKKyAjaW5jbHVkZSAi YXYxLmgiCisrI2luY2x1ZGUgInZwY2MuaCIKKyAjaW5jbHVkZSAiaGV2Yy5oIgorICNpbmNsdWRl ICJhdmZvcm1hdC5oIgorICNpbmNsdWRlICJmbHYuaCIKK0BAIC01MCw2ICs1MSw3IEBAIHN0YXRp YyBjb25zdCBBVkNvZGVjVGFnIGZsdl92aWRlb19jb2RlY19pZHNbXSA9IHsKKyAgICAgeyBBVl9D T0RFQ19JRF9IMjY0LCAgICAgRkxWX0NPREVDSURfSDI2NCB9LAorICAgICB7IEFWX0NPREVDX0lE X0hFVkMsICAgICBNS0JFVEFHKCdoJywgJ3YnLCAnYycsICcxJykgfSwKKyAgICAgeyBBVl9DT0RF Q19JRF9BVjEsICAgICAgTUtCRVRBRygnYScsICd2JywgJzAnLCAnMScpIH0sCisrICAgIHsgQVZf Q09ERUNfSURfVlA5LCAgICAgIE1LQkVUQUcoJ3YnLCAncCcsICcwJywgJzknKSB9LAorICAgICB7 IEFWX0NPREVDX0lEX05PTkUsICAgICAwIH0KKyB9OworIAorQEAgLTQ5NCw3ICs0OTYsNyBAQCBz dGF0aWMgdm9pZCBmbHZfd3JpdGVfY29kZWNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCogcywgQVZD b2RlY1BhcmFtZXRlcnMqIHBhciwgaQorIAorICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9BQUMgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0CisgICAgICAg ICAgICAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fCBwYXItPmNvZGVj X2lkID09IEFWX0NPREVDX0lEX0hFVkMKKy0gICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX0FWMSkgeworKyAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfQVYxIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KSB7CisgICAg ICAgICBpbnQ2NF90IHBvczsKKyAgICAgICAgIGF2aW9fdzgocGIsCisgICAgICAgICAgICAgICAg IHBhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8gPworQEAgLTU0MCw5ICs1NDIs OSBAQCBzdGF0aWMgdm9pZCBmbHZfd3JpdGVfY29kZWNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCog cywgQVZDb2RlY1BhcmFtZXRlcnMqIHBhciwgaQorICAgICAgICAgICAgIGlmIChwYXItPmNvZGVj X2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKKyAgICAgICAgICAgICAgICAgYXZpb193OChwYiwg RkxWX0lTX0VYX0hFQURFUiB8IFBhY2tldFR5cGVTZXF1ZW5jZVN0YXJ0KTsgLy8gRXhWaWRlb1Rh Z0hlYWRlciBtb2RlIHdpdGggUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQKKyAgICAgICAgICAgICAg ICAgYXZpb193cml0ZShwYiwgImh2YzEiLCA0KTsKKy0gICAgICAgICAgICB9IGVsc2UgaWYgKHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7CisrICAgICAgICAgICAgfSBlbHNlIGlm IChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSB8fCBwYXItPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX1ZQOSkgeworICAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBGTFZfSVNfRVhf SEVBREVSIHwgUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQpOworLSAgICAgICAgICAgICAgICBhdmlv X3dyaXRlKHBiLCAiYXYwMSIsIDQpOworKyAgICAgICAgICAgICAgICBhdmlvX3dyaXRlKHBiLCBw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSA/ICJhdjAxIiA6ICJ2cDA5IiwgNCk7Cisg ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgYXZpb193OChwYiwgcGFyLT5j b2RlY190YWcgfCBGTFZfRlJBTUVfS0VZKTsgLy8gZmxhZ3MKKyAgICAgICAgICAgICAgICAgYXZp b193OChwYiwgMCk7IC8vIEFWQyBzZXF1ZW5jZSBoZWFkZXIKK0BAIC01NTMsNiArNTU1LDggQEAg c3RhdGljIHZvaWQgZmx2X3dyaXRlX2NvZGVjX2hlYWRlcihBVkZvcm1hdENvbnRleHQqIHMsIEFW Q29kZWNQYXJhbWV0ZXJzKiBwYXIsIGkKKyAgICAgICAgICAgICAgICAgZmZfaXNvbV93cml0ZV9o dmNjKHBiLCBwYXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSwgMCk7CisgICAgICAg ICAgICAgZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpCisgICAgICAg ICAgICAgICAgIGZmX2lzb21fd3JpdGVfYXYxYyhwYiwgcGFyLT5leHRyYWRhdGEsIHBhci0+ZXh0 cmFkYXRhX3NpemUsIDEpOworKyAgICAgICAgICAgIGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfVlA5KQorKyAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX3ZwY2Mocywg cGIsIHBhci0+ZXh0cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplLCBwYXIpOworICAgICAgICAg ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgZmZfaXNvbV93cml0ZV9hdmNjKHBiLCBwYXItPmV4 dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSk7CisgICAgICAgICB9CitAQCAtODUyLDE0ICs4 NTYsMTUgQEAgc3RhdGljIGludCBmbHZfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywg QVZQYWNrZXQgKnBrdCkKKyAgICAgICAgIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2 ICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQykKKyAgICAgICAgIGZsYWdzX3Np emUgPSAyOworICAgICBlbHNlIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQg fHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fAorLSAgICAgICAgICAgICBw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9BVjEpCisrICAgICAgICAgICAgIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf SEVWQyB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSB8fAorKyAgICAgICAgICAg ICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOSkKKyAgICAgICAgIGZsYWdzX3NpemUg PSA1OworICAgICBlbHNlCisgICAgICAgICBmbGFnc19zaXplID0gMTsKKyAKKyAgICAgaWYgKHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFDIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfSDI2NAorICAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf TVBFRzQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDCistICAgICAgICAgICAg fHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKKysgICAgICAgICAgICB8fCBw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX1ZQOSkgeworICAgICAgICAgc2l6ZV90IHNpZGVfc2l6ZTsKKyAgICAgICAgIHVpbnQ4 X3QgKnNpZGUgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YShwa3QsIEFWX1BLVF9EQVRBX05FV19F WFRSQURBVEEsICZzaWRlX3NpemUpOworICAgICAgICAgaWYgKHNpZGUgJiYgc2lkZV9zaXplID4g MCAmJiAoc2lkZV9zaXplICE9IHBhci0+ZXh0cmFkYXRhX3NpemUgfHwgbWVtY21wKHNpZGUsIHBh ci0+ZXh0cmFkYXRhLCBzaWRlX3NpemUpKSkgeworQEAgLTg4MCw3ICs4ODUsOCBAQCBzdGF0aWMg aW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQor ICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAgICAgfQorICAgICBpZiAocGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfTVBFRzQgfHwKKy0gICAgICAgIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyB8 fCAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKKysgICAgICAgIHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyB8fCAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9BVjEgfHwKKysgICAgICAgIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KSB7Cisg ICAgICAgICBpZiAocGt0LT5wdHMgPT0gQVZfTk9QVFNfVkFMVUUpIHsKKyAgICAgICAgICAgICBh dl9sb2cocywgQVZfTE9HX0VSUk9SLCAiUGFja2V0IGlzIG1pc3NpbmcgUFRTXG4iKTsKKyAgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworQEAgLTk5Myw5ICs5OTksOSBAQCBzdGF0 aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0 KQorICAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykgeworICAg ICAgICAgICAgIGF2aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIgfCBQYWNrZXRUeXBlQ29kZWRG cmFtZXNYKTsgLy8gRXhWaWRlb1RhZ0hlYWRlciBtb2RlIHdpdGggUGFja2V0VHlwZUNvZGVkRnJh bWVzWAorICAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsICJodmMxIiwgNCk7CistICAgICAgICB9 IGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7CisrICAgICAgICB9 IGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxIHx8IHBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfVlA5KSB7CisgICAgICAgICAgICAgYXZpb193OChwYiwgRkxWX0lT X0VYX0hFQURFUiB8IFBhY2tldFR5cGVDb2RlZEZyYW1lcyk7CistICAgICAgICAgICAgYXZpb193 cml0ZShwYiwgImF2MDEiLCA0KTsKKysgICAgICAgICAgICBhdmlvX3dyaXRlKHBiLCBwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSA/ICJhdjAxIiA6ICJ2cDA5IiwgNCk7CisgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgIGF2aW9fdzgocGIsIGZsYWdzKTsKKyAgICAgICAgIH0K KworRnJvbSBwYXRjaHdvcmsgTW9uIE1heSAxNSAwODozMjowMSAyMDIzCitDb250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQt VHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKK1gtUGF0Y2h3b3JrLVN1Ym1pdHRlcjogU3RldmVuIExp dSA8bHFAY2hpbmFmZm1wZWcub3JnPgorWC1QYXRjaHdvcmstSWQ6IDQxNjIwCitEZWxpdmVyZWQt VG86IGZmbXBlZ3BhdGNod29yazJAZ21haWwuY29tCitSZWNlaXZlZDogYnkgMjAwMjphMDU6NmEy MDpiYTkxOmIwOjEwNTpmZWI6NzFmMiB3aXRoIFNNVFAgaWQKKyBmYjE3Y3NwMTQ0NDYxNnB6YjsK KyAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozNDoxOSAtMDcwMCAoUERUKQorWC1Hb29nbGUt U210cC1Tb3VyY2U6IAorIEFDSEhVWjRLNmVPSnd3bjdqUGZ5MGRoVFA0SVFyMlh6REI4UGZCN0Vy NmFRdHJDcnhuZGRpUklnZEJxWkI3MmRIaHlxZmJJTFhkNUUKK1gtUmVjZWl2ZWQ6IGJ5IDIwMDI6 YTE3OjkwNjplZThlOmIwOjk1ZTpjNTQ5OjlhY2Ugd2l0aCBTTVRQIGlkCisgd3QxNC0yMDAyMGEx NzA5MDZlZThlMDBiMDA5NWVjNTQ5OWFjZW1yMjgwODIxODJlamIuNjIuMTY4NDEzOTY1OTQ5NjsK KyAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozNDoxOSAtMDcwMCAoUERUKQorQVJDLVNlYWw6 IGk9MTsgYT1yc2Etc2hhMjU2OyB0PTE2ODQxMzk2NTk7IGN2PW5vbmU7CisgICAgICAgIGQ9Z29v Z2xlLmNvbTsgcz1hcmMtMjAxNjA4MTY7CisgICAgICAgIGI9Rk05U1Fia1ltcVdhT0FhOFlSS3Nk b2ozQlNvTk4vU3NEcVhnRWFSTDhsQ3lnSnVhaENUMXlib2NWMUlxbVVTVHhTCisgICAgICAgICBs NUFjVUpHYlpibDJCZU5oSzVtWDQzYUNmS0JTU0YzRExobVJDTUJDOHBVMmlQbXY3VHVTVjU4a1Jm TFk2cjgzajhJYworICAgICAgICAgZFY1NlFVWVl0TitWZTBCV25hSEZPeml2U05BZ0h4d2VQc3RR TDA0M0xIRDJybitCNUN5TnZxN2wyQ2FobmhNSjhKVUcKKyAgICAgICAgIHpKTlNCZS9MRkYwTGhr eW1xZDg3N3ZrSit4K1VqU1dFSWRvbUlKZEFjQXQyRDA2akR4d0lGL25uTERESG12UWVueTJOCisg ICAgICAgICA4eHFzc0U0MDFRY1lDcTZHdFJpMFVUQXlNcllpRFU0UlVQT2g4S2piNVlvTVhZcGJJ K0JDc3I2VkpsaDYvRjZjRkQ1OAorICAgICAgICAgWVN0dz09CitBUkMtTWVzc2FnZS1TaWduYXR1 cmU6IGk9MTsgYT1yc2Etc2hhMjU2OyBjPXJlbGF4ZWQvcmVsYXhlZDsgZD1nb29nbGUuY29tOwor IHM9YXJjLTIwMTYwODE2OworICAgICAgICBoPXNlbmRlcjplcnJvcnMtdG86Y29udGVudC10cmFu c2Zlci1lbmNvZGluZzpjYzpyZXBseS10bworICAgICAgICAgOmxpc3Qtc3Vic2NyaWJlOmxpc3Qt aGVscDpsaXN0LXBvc3Q6bGlzdC1hcmNoaXZlOmxpc3QtdW5zdWJzY3JpYmUKKyAgICAgICAgIDps aXN0LWlkOnByZWNlZGVuY2U6c3ViamVjdDpmZWVkYmFjay1pZDptaW1lLXZlcnNpb246cmVmZXJl bmNlcworICAgICAgICAgOmluLXJlcGx5LXRvOm1lc3NhZ2UtaWQ6ZGF0ZTp0bzpmcm9tOmRlbGl2 ZXJlZC10bzsKKyAgICAgICAgYmg9SkNLZnF0eW5QODVVeU40T0c1UFF1QzJHT000NUVDNzVyUGEv VE45UGtpcz07CisgICAgICAgIGI9TUY3OGhnKzBLa2pVTnE1Qmp6NmI0cmpjSkRKcXJGdWZXSGhE V3pLZ1dDR28xNWZ2blZnM1VZOFBEdnBzVVl4eFNBCisgICAgICAgICBTWFFKUDF1cnZ1eEx2Sjlt Nk4yMC9tQkNnck45Q3FjYTUzN29pV1dOYmF5QU9CTHVpaFhQTkRQWkxxWWdEOXlnKzAzVQorICAg ICAgICAgUW80NnJLczhCeGt1elRLc3FmRnUxY2Y4YjNxZ3FwMnd0Mm1PRkZuUlU4cDlKNWZvQTVI Q3BIb0VCMVNXbzhLcUtqcXoKKyAgICAgICAgIE5lRm95aDRrL0NIazhReTJyaFEvYWh1Tm8wekJ5 WEVWdUdxQkVLMUdha1c4YkM2RHBYL2dYOVBuc0U3QnZwT3JPLyt6CisgICAgICAgICBpRUp4VWQx UnlVRkRSRVRqZGNxZkxlUmxFQk8wTmJGaTlHVFJqZzBvWTdtMk9NOGdoOXp3N1RJT29LZkthQ1Zl cGErMQorICAgICAgICAgenMrZz09CitBUkMtQXV0aGVudGljYXRpb24tUmVzdWx0czogaT0xOyBt eC5nb29nbGUuY29tOworICAgICAgIHNwZj1wYXNzIChnb29nbGUuY29tOiBkb21haW4gb2YgZmZt cGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworIGRlc2lnbmF0ZXMgNzkuMTI0LjE3LjEwMCBh cyBwZXJtaXR0ZWQgc2VuZGVyKQorIHNtdHAubWFpbGZyb209ZmZtcGVnLWRldmVsLWJvdW5jZXNA ZmZtcGVnLm9yZworUmV0dXJuLVBhdGg6IDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3Jn PgorUmVjZWl2ZWQ6IGZyb20gZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoZmZib3gwLWJnLmZmbXBl Zy5vcmcuIFs3OS4xMjQuMTcuMTAwXSkKKyAgICAgICAgYnkgbXguZ29vZ2xlLmNvbSB3aXRoIEVT TVRQIGlkCisgZjIxLTIwMDIwYTE3MDkwNjgyNTUwMGIwMDk2NWM1NWM3MWQ5c2kxMDQ5Mjg3NmVq eC45ODguMjAyMy4wNS4xNS4wMS4zNC4xOTsKKyAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMToz NDoxOSAtMDcwMCAoUERUKQorUmVjZWl2ZWQtU1BGOiBwYXNzIChnb29nbGUuY29tOiBkb21haW4g b2YgZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworIGRlc2lnbmF0ZXMgNzkuMTI0LjE3 LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKSBjbGllbnQtaXA9NzkuMTI0LjE3LjEwMDsKK0F1dGhl bnRpY2F0aW9uLVJlc3VsdHM6IG14Lmdvb2dsZS5jb207CisgICAgICAgc3BmPXBhc3MgKGdvb2ds ZS5jb206IGRvbWFpbiBvZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCisgZGVzaWdu YXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpCisgc210cC5tYWlsZnJvbT1m Zm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCitSZWNlaXZlZDogZnJvbSBbMTI3LjAuMS4x XSAobG9jYWxob3N0IFsxMjcuMC4wLjFdKQorCWJ5IGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKFBv c3RmaXgpIHdpdGggRVNNVFAgaWQgMzQ4NjQ2OEMwNzI7CisJTW9uLCAxNSBNYXkgMjAyMyAxMToz NDoxMyArMDMwMCAoRUVTVCkKK1gtT3JpZ2luYWwtVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3Jn CitEZWxpdmVyZWQtVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCitSZWNlaXZlZDogZnJvbSBi ZzQuZXhtYWlsLnFxLmNvbSAoYmc0LmV4bWFpbC5xcS5jb20gWzQzLjE1NC4yMjEuNThdKQorIGJ5 IGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKFBvc3RmaXgpIHdpdGggRVNNVFBTIGlkIDY0ODJCNjhD MEEwCisgZm9yIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz47IE1vbiwgMTUgTWF5IDIwMjMgMTE6 MzQ6MDUgKzAzMDAgKEVFU1QpCitYLVFRLW1pZDogYml6ZXNtdHA3MXQxNjg0MTM5NjM5dHNmcDZv c3EKK1JlY2VpdmVkOiBmcm9tIGxvY2FsaG9zdCAoIFsxMDMuMTAyLjIwMy4yMDRdKSBieSBiaXpl c210cC5xcS5jb20gKEVTTVRQKSB3aXRoCisgaWQgOyBNb24sIDE1IE1heSAyMDIzIDE2OjMzOjU4 ICswODAwIChDU1QpCitYLVFRLVNTRjogMDExMDAwMDAwMDAwMDBaMFowMDAwMDBBMDAwMDAwMAor WC1RUS1GRUFUOiB2MlRCQWh0eWk1SG1PSThSSDYyWVhXVmFtbDB1Tlh4Y3NKd3RYcnFWelhkcEp3 SnBrWWNwS1Mwak9uNWI4CisgdnB1dENZSzFGTkNsQk5PbXY5QXpFTGpUL0syNmNGT3NVWUtCcEF1 ZHJmOEFsL0ttd2w4Q2p5VDZuREswNlFCeXJIdTY3QTQKKyBzWDhWUXJheklYTzZaUElyZkE5RWx1 c1h0c3NtUjIyZThqdTBuWFg3b055L0FTNHQwYlprdUpSVm1ZQ29IU0NuTHFudkY5cgorIFlib1Zk bWcwWmJMb3ZyWEJ5MjZiZ1FyOTQ0Ry90UVJUZUFHb3JBd0U2MUxmOXRxbFJLdVQ4VE84L0JBL1Y3 ekJ1YVpUU3hBCisgbmdobDYxYXdQb2R1WTR2ZDlOZXB3NDNWMkN1bjR3ZlBUdkFNSm45RVFocmRV Z2U0c0lOMFE0RXVXa0JkOWRDL25UT3dWS1YKKyBXc2pMeGJ5TDZhcEZlMDhYbXllUzlNREprTCti Rk4zeWtwREpxYmxCZzhDMUFZT2pWeVlGUzJZdC9hdGNRPT0KK1gtUVEtR29vZEJnOiAwCitYLUJJ Wk1BSUwtSUQ6IDE0MjIxNTk1MDUxNjAzMDIyOTg3CitGcm9tOiBTdGV2ZW4gTGl1IDxscUBjaGlu YWZmbXBlZy5vcmc+CitUbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK0RhdGU6IE1vbiwgMTUg TWF5IDIwMjMgMTY6MzI6MDEgKzA4MDAKK01lc3NhZ2UtSWQ6IDwyMDIzMDUxNTA4MzIwMS40ODIw MS03LWxxQGNoaW5hZmZtcGVnLm9yZz4KK1gtTWFpbGVyOiBnaXQtc2VuZC1lbWFpbCAyLjQwLjAK K0luLVJlcGx5LVRvOiA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMS1scUBjaGluYWZmbXBlZy5vcmc+ CitSZWZlcmVuY2VzOiAKKyA8Q0FFZy1KZS12WUQ5N0tuYmFxVGtLNT1VSjlUM2h0bXRIM1F5a2N3 bzMrck5DeD13K2pRQG1haWwuZ21haWwuY29tPgorIDwyMDIzMDUxNTA4MzIwMS40ODIwMS0xLWxx QGNoaW5hZmZtcGVnLm9yZz4KK01JTUUtVmVyc2lvbjogMS4wCitYLVFRLVNFTkRTSVpFOiA1MjAK K0ZlZWRiYWNrLUlEOiBiaXplc210cDpjaGluYWZmbXBlZy5vcmc6cXliZ2xvZ2ljc3Zyc3o6cXli Z2xvZ2ljc3Zyc3ozYS0zCitTdWJqZWN0OiBbRkZtcGVnLWRldmVsXSBbUEFUQ0ggdjEwIDYvNl0g YXZmb3JtYXQvZmx2ZGVjOiBzdXBwb3J0IGRlbXV4IHZwOQorIGluIGVuaGFuY2VkIGZsdgorWC1C ZWVuVGhlcmU6IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCitYLU1haWxtYW4tVmVyc2lvbjogMi4x LjI5CitQcmVjZWRlbmNlOiBsaXN0CitMaXN0LUlkOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vz c2lvbnMgYW5kIHBhdGNoZXMgPGZmbXBlZy1kZXZlbC5mZm1wZWcub3JnPgorTGlzdC1VbnN1YnNj cmliZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL29wdGlvbnMvZmZtcGVnLWRldmVsPiwK KyA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD11bnN1YnNj cmliZT4KK0xpc3QtQXJjaGl2ZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9waXBlcm1haWwvZmZtcGVn LWRldmVsPgorTGlzdC1Qb3N0OiA8bWFpbHRvOmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgorTGlz dC1IZWxwOiA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD1o ZWxwPgorTGlzdC1TdWJzY3JpYmU6IDxodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5m by9mZm1wZWctZGV2ZWw+LAorIDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9y Zz9zdWJqZWN0PXN1YnNjcmliZT4KK1JlcGx5LVRvOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vz c2lvbnMgYW5kIHBhdGNoZXMgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgorQ2M6IFN0ZXZlbiBM aXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KK0Vycm9ycy1UbzogZmZtcGVnLWRldmVsLWJvdW5jZXNA ZmZtcGVnLm9yZworU2VuZGVyOiAiZmZtcGVnLWRldmVsIiA8ZmZtcGVnLWRldmVsLWJvdW5jZXNA ZmZtcGVnLm9yZz4KK1gtVFVJRDogd090dlR6ayt6aGR3CisKK1NpZ25lZC1vZmYtYnk6IFN0ZXZl biBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KKy0tLQorIGxpYmF2Zm9ybWF0L2ZsdmRlYy5jIHwg MTEgKysrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvZmx2ZGVjLmMgYi9saWJhdmZvcm1h dC9mbHZkZWMuYworaW5kZXggYTAzNjJmZjExYy4uYTZhOTRhNDAyMSAxMDA2NDQKKy0tLSBhL2xp YmF2Zm9ybWF0L2ZsdmRlYy5jCisrKysgYi9saWJhdmZvcm1hdC9mbHZkZWMuYworQEAgLTMyMCw2 ICszMjAsOCBAQCBzdGF0aWMgaW50IGZsdl9zYW1lX3ZpZGVvX2NvZGVjKEFWRm9ybWF0Q29udGV4 dCAqcywgQVZDb2RlY1BhcmFtZXRlcnMgKnZwYXIsIGludAorICAgICAgICAgICAgICAgICByZXR1 cm4gdnBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQzsKKyAgICAgICAgICAgICBjYXNl IE1LQkVUQUcoJ2EnLCAndicsICcwJywgJzEnKToKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHZw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMTsKKysgICAgICAgICAgICBjYXNlIE1LQkVU QUcoJ3YnLCAncCcsICcwJywgJzknKToKKysgICAgICAgICAgICAgICAgcmV0dXJuIHZwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOTsKKyAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KK0BAIC0zNjUsNiArMzY3LDEwIEBAIHN0YXRp YyBpbnQgZmx2X3NldF92aWRlb19jb2RlYyhBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICp2 c3RyZWFtLAorICAgICAgICAgICAgICAgICBwYXItPmNvZGVjX2lkID0gQVZfQ09ERUNfSURfQVYx OworICAgICAgICAgICAgICAgICB2c3RyZWFtaS0+bmVlZF9wYXJzaW5nID0gQVZTVFJFQU1fUEFS U0VfSEVBREVSUzsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7CisrICAgICAgICAgICAgY2Fz ZSBNS0JFVEFHKCd2JywgJ3AnLCAnMCcsICc5Jyk6CisrICAgICAgICAgICAgICAgIHBhci0+Y29k ZWNfaWQgPSBBVl9DT0RFQ19JRF9WUDk7CisrICAgICAgICAgICAgICAgIHZzdHJlYW1pLT5uZWVk X3BhcnNpbmcgPSBBVlNUUkVBTV9QQVJTRV9IRUFERVJTOworKyAgICAgICAgICAgICAgICByZXR1 cm4gNDsKKyAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgIH0KK0BAIC0xMjg1LDcgKzEyOTEsOCBAQCByZXRyeV9kdXJhdGlvbjoKKyAgICAgICAg IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fAorICAgICAgICAg c3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fAorICAgICAgICAg c3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8CistICAgICAgICBz dC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgeworKyAgICAgICAgc3Qt PmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEgfHwKKysgICAgICAgIHN0LT5j b2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KSB7CisgICAgICAgICBpbnQgdHlw ZSA9IDA7CisgICAgICAgICBpZiAoZmx2LT5leGhlYWRlciAmJiBzdHJlYW1fdHlwZSA9PSBGTFZf U1RSRUFNX1RZUEVfVklERU8pIHsKKyAgICAgICAgICAgICB0eXBlID0gZmxhZ3MgJiAweDBGOwor QEAgLTEzMTcsNyArMTMyNCw3IEBAIHJldHJ5X2R1cmF0aW9uOgorICAgICAgICAgfQorICAgICAg ICAgaWYgKHR5cGUgPT0gMCAmJiAoIXN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhIHx8IHN0LT5jb2Rl Y3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFDIHx8CisgICAgICAgICAgICAgc3QtPmNv ZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHN0LT5jb2RlY3Bhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyB8fAorLSAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSkgeworKyAgICAgICAgICAgIHN0LT5jb2RlY3Bh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxIHx8IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfVlA5KSkgeworICAgICAgICAgICAgIEFWRGljdGlvbmFyeUVudHJ5ICp0 OworIAorICAgICAgICAgICAgIGlmIChzdC0+Y29kZWNwYXItPmV4dHJhZGF0YSkgewoKZGlmZiAt LWdpdCBhL2VuYWJsZV9kZWNvZGVycyBiL2VuYWJsZV9kZWNvZGVycwppbmRleCAyOTZjM2EzLi5l YTFjMzhlIDEwMDY0NAotLS0gYS9lbmFibGVfZGVjb2RlcnMKKysrIGIvZW5hYmxlX2RlY29kZXJz CkBAIC0xLDUgKzEsNCBAQAogIyMgbW9kdWxlIG5hbWUgIyByZWFzb24gZm9yIGVuYWJsZW1lbnQg aW4gZmZtcGVnICh1c3VhbGx5IHRoZXJlIGlzIGFub3RoZXIgcGFja2FnZSB0aGF0IGFscmVhZHkg Z290IGxlZ2FsIHJldmlldykKLWFhYwogYWFzYwogbGliZmRrX2FhYyAjIGZkay1hYWMtZnJlZQog YWMzCgpkaWZmIC0tZ2l0IGEvZW5hYmxlX2VuY29kZXJzIGIvZW5hYmxlX2VuY29kZXJzCmluZGV4 IGUwZjNjZmIuLjEwZGQ1M2EgMTAwNjQ0Ci0tLSBhL2VuYWJsZV9lbmNvZGVycworKysgYi9lbmFi bGVfZW5jb2RlcnMKQEAgLTMwLDYgKzMwLDcgQEAgYXN2MgogYXYxX2FtZgogYXYxX252ZW5jCiBh djFfcXN2CithdjFfdmFhcGkKIGF5dXYgIyB0cml2YWwKIGJpdHBhY2tlZCAjIHRyaXZpYWwKIGJt cCAjIHRyaXZpYWwKCmRpZmYgLS1naXQgYS9mZm1wZWctZ2UtYXYxLXZhYXBpLWVuY29kZS1zdXBw b3J0LnBhdGNoIGIvZmZtcGVnLWdlLWF2MS12YWFwaS1lbmNvZGUtc3VwcG9ydC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWU4MjU4Ci0tLSAvZGV2L251bGwKKysr IGIvZmZtcGVnLWdlLWF2MS12YWFwaS1lbmNvZGUtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDM5 ODQgQEAKK0Zyb20gN2MyZWE0NTA1M2I3YTNkNDE5M2JiMGFiYjljMGYzYjBjZGJlZWM3YSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdsb3Jpb3VzRWdncm9sbCA8Z2xvcmlvdXNlZ2dy b2xsQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgOSBOb3YgMjAyMyAxNzo1MToxOSAtMDcwMAorU3Vi amVjdDogW1BBVENIXSBiYWNrcG9ydCBhdjEgZW5jb2RlIHN1cHBvcnQKKworQWRhcHRlZCBmcm9t IGh0dHBzOi8vcGF0Y2h3b3JrLmZmbXBlZy5vcmcvcHJvamVjdC9mZm1wZWcvbGlzdC8/c2VyaWVz PTk1OTQKKworLS0tCisgY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAz ICsKKyBkb2MvZW5jb2RlcnMudGV4aSAgICAgICAgICAgICAgICAgICAgfCAgMTQgKworIGxpYmF2 Y29kZWMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8ICAgMiArCisgbGliYXZjb2RlYy9hbGxj b2RlY3MuYyAgICAgICAgICAgICAgIHwgICAxICsKKyBsaWJhdmNvZGVjL2F2MS5oICAgICAgICAg ICAgICAgICAgICAgfCAgIDcgKworIGxpYmF2Y29kZWMvYXYxX2xldmVscy5jICAgICAgICAgICAg ICB8ICA5MiArKysKKyBsaWJhdmNvZGVjL2F2MV9sZXZlbHMuaCAgICAgICAgICAgICAgfCAgNTgg KysKKyBsaWJhdmNvZGVjL2Nicy5jICAgICAgICAgICAgICAgICAgICAgfCAxNTUgKysrLS0KKyBs aWJhdmNvZGVjL2Nicy5oICAgICAgICAgICAgICAgICAgICAgfCAgODggKystCisgbGliYXZjb2Rl Yy9jYnNfYXYxLmMgICAgICAgICAgICAgICAgIHwgMjYyICsrKy0tLS0tCisgbGliYXZjb2RlYy9j YnNfYXYxLmggICAgICAgICAgICAgICAgIHwgICAxICsKKyBsaWJhdmNvZGVjL2Nic19hdjFfc3lu dGF4X3RlbXBsYXRlLmMgfCAgIDQgKy0KKyBsaWJhdmNvZGVjL2Nic19ic2YuYyAgICAgICAgICAg ICAgICAgfCAgIDUgKworIGxpYmF2Y29kZWMvY2JzX2gyNjQ1LmMgICAgICAgICAgICAgICB8IDE0 OSArKy0tLQorIGxpYmF2Y29kZWMvY2JzX2ludGVybmFsLmggICAgICAgICAgICB8ICA5NiArKy0K KyBsaWJhdmNvZGVjL2Nic19tcGVnMi5jICAgICAgICAgICAgICAgfCAgMTUgKy0KKyBsaWJhdmNv ZGVjL2Nic192cDkuYyAgICAgICAgICAgICAgICAgfCAxMjIgKystLQorIGxpYmF2Y29kZWMvZXh0 cmFjdF9leHRyYWRhdGFfYnNmLmMgICB8ICAgNyArLQorIGxpYmF2Y29kZWMvdHJhY2VfaGVhZGVy c19ic2YuYyAgICAgICB8ICAgMiArCisgbGliYXZjb2RlYy92YWFwaV9lbmNvZGUuYyAgICAgICAg ICAgIHwgMzcwICsrKysrKysrLS0tCisgbGliYXZjb2RlYy92YWFwaV9lbmNvZGUuaCAgICAgICAg ICAgIHwgIDM5ICstCisgbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfYXYxLmMgICAgICAgIHwgOTQ5 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKworIGxpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX2gy NjQuYyAgICAgICB8ICA5NCArLS0KKyBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY1LmMgICAg ICAgfCAgNzYgKystCisgbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfbXBlZzIuYyAgICAgIHwgICA2 ICstCisgbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfdnA4LmMgICAgICAgIHwgICA2ICstCisgbGli YXZjb2RlYy92YWFwaV9lbmNvZGVfdnA5LmMgICAgICAgIHwgIDI2ICstCisgMjcgZmlsZXMgY2hh bmdlZCwgMjA1NCBpbnNlcnRpb25zKCspLCA1OTUgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUg MTAwNjQ0IGxpYmF2Y29kZWMvYXYxX2xldmVscy5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2 Y29kZWMvYXYxX2xldmVscy5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvdmFhcGlf ZW5jb2RlX2F2MS5jCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4 IGI2NjE2ZjAuLmY1YTkxYjYgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3Vy ZQorQEAgLTMyNTksNiArMzI1OSw4IEBAIGF2MV9xc3ZfZGVjb2Rlcl9zZWxlY3Q9InFzdmRlYyIK KyBhdjFfcXN2X2VuY29kZXJfc2VsZWN0PSJxc3ZlbmMiCisgYXYxX3Fzdl9lbmNvZGVyX2RlcHM9 ImxpYnZwbCIKKyBhdjFfYW1mX2VuY29kZXJfZGVwcz0iYW1mIgorK2F2MV92YWFwaV9lbmNvZGVy X2RlcHM9IlZBRW5jUGljdHVyZVBhcmFtZXRlckJ1ZmZlckFWMSIKKythdjFfdmFhcGlfZW5jb2Rl cl9zZWxlY3Q9ImNic19hdjEgdmFhcGlfZW5jb2RlIgorIAorICMgcGFyc2VycworIGFhY19wYXJz ZXJfc2VsZWN0PSJhZHRzX2hlYWRlciBtcGVnNGF1ZGlvIgorQEAgLTY5NzMsNiArNjk3NSw3IEBA IGlmIGVuYWJsZWQgdmFhcGk7IHRoZW4KKyAgICAgY2hlY2tfdHlwZSAidmEvdmEuaCB2YS92YV9l bmNfanBlZy5oIiAiVkFFbmNQaWN0dXJlUGFyYW1ldGVyQnVmZmVySlBFRyIKKyAgICAgY2hlY2tf dHlwZSAidmEvdmEuaCB2YS92YV9lbmNfdnA4LmgiICAiVkFFbmNQaWN0dXJlUGFyYW1ldGVyQnVm ZmVyVlA4IgorICAgICBjaGVja190eXBlICJ2YS92YS5oIHZhL3ZhX2VuY192cDkuaCIgICJWQUVu Y1BpY3R1cmVQYXJhbWV0ZXJCdWZmZXJWUDkiCisrICAgIGNoZWNrX3R5cGUgInZhL3ZhLmggdmEv dmFfZW5jX2F2MS5oIiAgIlZBRW5jUGljdHVyZVBhcmFtZXRlckJ1ZmZlckFWMSIKKyBmaQorIAor IGlmIGVuYWJsZWRfYWxsIG9wZW5jbCBsaWJkcm0gOyB0aGVuCitkaWZmIC0tZ2l0IGEvZG9jL2Vu Y29kZXJzLnRleGkgYi9kb2MvZW5jb2RlcnMudGV4aQoraW5kZXggYjAyNzM3Yi4uOTk0ZTI3ZiAx MDA2NDQKKy0tLSBhL2RvYy9lbmNvZGVycy50ZXhpCisrKysgYi9kb2MvZW5jb2RlcnMudGV4aQor QEAgLTM5NjUsNiArMzk2NSwyMCBAQCBBdmVyYWdlIHZhcmlhYmxlIGJpdHJhdGUuCisgRWFjaCBl bmNvZGVyIGFsc28gaGFzIGl0cyBvd24gc3BlY2lmaWMgb3B0aW9uczoKKyBAdGFibGUgQG9wdGlv bgorIAorK0BpdGVtIGF2MV92YWFwaQorK0BvcHRpb257cHJvZmlsZX0gc2V0cyB0aGUgdmFsdWUg b2YgQGVtcGh7c2VxX3Byb2ZpbGV9LgorK0BvcHRpb257dGllcn0gc2V0cyB0aGUgdmFsdWUgb2Yg QGVtcGh7c2VxX3RpZXJ9LgorK0BvcHRpb257bGV2ZWx9IHNldHMgdGhlIHZhbHVlIG9mIEBlbXBo e3NlcV9sZXZlbF9pZHh9LgorKworK0B0YWJsZSBAb3B0aW9uCisrQGl0ZW0gdGlsZXMKKytTZXQg dGhlIG51bWJlciBvZiB0aWxlcyB0byBlbmNvZGUgdGhlIGlucHV0IHZpZGVvIHdpdGgsIGFzIGNv bHVtbnMgeCByb3dzLgorKyhkZWZhdWx0IGlzIGF1dG8sIHdoaWNoIG1lYW5zIHVzZSBtaW5pbWFs IHRpbGUgY29sdW1uL3JvdyBudW1iZXIpLgorK0BpdGVtIHRpbGVfZ3JvdXBzCisrU2V0IHRpbGUg Z3JvdXBzIG51bWJlci4gQWxsIHRoZSB0aWxlcyB3aWxsIGJlIGRpc3RyaWJ1dGVkIGFzIGV2ZW5s eSBhcyBwb3NzaWJsZSB0bworK2VhY2ggdGlsZSBncm91cC4gKGRlZmF1bHQgaXMgMSkuCisrQGVu ZCB0YWJsZQorKworIEBpdGVtIGgyNjRfdmFhcGkKKyBAb3B0aW9ue3Byb2ZpbGV9IHNldHMgdGhl IHZhbHVlIG9mIEBlbXBoe3Byb2ZpbGVfaWRjfSBhbmQgdGhlIEBlbXBoe2NvbnN0cmFpbnRfc2V0 Kl9mbGFnfXMuCisgQG9wdGlvbntsZXZlbH0gc2V0cyB0aGUgdmFsdWUgb2YgQGVtcGh7bGV2ZWxf aWRjfS4KK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9NYWtl ZmlsZQoraW5kZXggMzg5MjUzZi4uNWY2MjBlNiAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvTWFr ZWZpbGUKKysrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKK0BAIC0yNTUsNiArMjU1LDcgQEAgT0JK Uy0kKENPTkZJR19BVjFfQ1VWSURfREVDT0RFUikgICAgICAgKz0gY3V2aWRkZWMubworIE9CSlMt JChDT05GSUdfQVYxX01FRElBQ09ERUNfREVDT0RFUikgICs9IG1lZGlhY29kZWNkZWMubworIE9C SlMtJChDT05GSUdfQVYxX05WRU5DX0VOQ09ERVIpICAgICAgICs9IG52ZW5jX2F2MS5vIG52ZW5j Lm8KKyBPQkpTLSQoQ09ORklHX0FWMV9RU1ZfRU5DT0RFUikgICAgICAgICArPSBxc3ZlbmNfYXYx Lm8KKytPQkpTLSQoQ09ORklHX0FWMV9WQUFQSV9FTkNPREVSKSAgICAgICArPSB2YWFwaV9lbmNv ZGVfYXYxLm8gYXYxX2xldmVscy5vCisgT0JKUy0kKENPTkZJR19BVlJOX0RFQ09ERVIpICAgICAg ICAgICAgKz0gYXZybmRlYy5vCisgT0JKUy0kKENPTkZJR19BVlJQX0RFQ09ERVIpICAgICAgICAg ICAgKz0gcjIxMGRlYy5vCisgT0JKUy0kKENPTkZJR19BVlJQX0VOQ09ERVIpICAgICAgICAgICAg Kz0gcjIxMGVuYy5vCitAQCAtMTI5OCw2ICsxMjk5LDcgQEAgVEVTVFBST0dTID0gYXZjb2RlYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgIGpwZWcyMDAwZHd0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICBtYXRob3BzICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAKKytURVNUUFJPR1MtJChDT05GSUdf QVYxX1ZBQVBJX0VOQ09ERVIpICAgICArPSBhdjFfbGV2ZWxzCisgVEVTVFBST0dTLSQoQ09ORklH X0NBQkFDKSAgICAgICAgICAgICAgICAgKz0gY2FiYWMKKyBURVNUUFJPR1MtJChDT05GSUdfRENU KSAgICAgICAgICAgICAgICAgICArPSBhdmZmdAorIFRFU1RQUk9HUy0kKENPTkZJR19GRlQpICAg ICAgICAgICAgICAgICAgICs9IGZmdCBmZnQtZml4ZWQzMgorZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvYWxsY29kZWNzLmMgYi9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCitpbmRleCBlNTkzYWQxLi40 NzA2ZmMzIDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy9hbGxjb2RlY3MuYworKysrIGIvbGliYXZj b2RlYy9hbGxjb2RlY3MuYworQEAgLTgzOCw2ICs4MzgsNyBAQCBleHRlcm4gY29uc3QgRkZDb2Rl YyBmZl9hdjFfbnZlbmNfZW5jb2RlcjsKKyBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9hdjFfcXN2 X2RlY29kZXI7CisgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfYXYxX3Fzdl9lbmNvZGVyOworIGV4 dGVybiBjb25zdCBGRkNvZGVjIGZmX2F2MV9hbWZfZW5jb2RlcjsKKytleHRlcm4gY29uc3QgRkZD b2RlYyBmZl9hdjFfdmFhcGlfZW5jb2RlcjsKKyBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJv cGVuaDI2NF9lbmNvZGVyOworIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYm9wZW5oMjY0X2Rl Y29kZXI7CisgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfaDI2NF9hbWZfZW5jb2RlcjsKK2RpZmYg LS1naXQgYS9saWJhdmNvZGVjL2F2MS5oIGIvbGliYXZjb2RlYy9hdjEuaAoraW5kZXggMzg0Zjdj ZC4uODcwNGJjNCAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvYXYxLmgKKysrKyBiL2xpYmF2Y29k ZWMvYXYxLmgKK0BAIC0xNzUsNiArMTc1LDEzIEBAIGVudW0geworICAgICBBVjFfUkVTVE9SRV9T V0lUQ0hBQkxFID0gMywKKyB9OworIAorKy8vIFRYIG1vZGUgKHNlY3Rpb24gNi44LjIxKQorK2Vu dW0geworKyAgICBBVjFfT05MWV80WDQgICAgICAgID0gMCwKKysgICAgQVYxX1RYX01PREVfTEFS R0VTVCA9IDEsCisrICAgIEFWMV9UWF9NT0RFX1NFTEVDVCAgPSAyLAorK307CisrCisgLy8gU2Vx dWVuY2UgSGVhZGVycyBhcmUgYWN0dWFsbHkgdW5ib3VuZGVkIGJlY2F1c2Ugb25lIGNhbiB1c2UK KyAvLyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGxlYWRpbmcgemVyb2VzIHdoZW4gZW5jb2Rpbmcg dmlhIHV2bGMuCisgLy8gVGhlIGZvbGxvd2luZyBlc3RpbWF0ZSBpcyBiYXNlZCBhcm91bmQgdXNp bmcgdGhlIGxvd2VzdCBudW1iZXIKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2F2MV9sZXZlbHMu YyBiL2xpYmF2Y29kZWMvYXYxX2xldmVscy5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMC4uMTliNmVlMQorLS0tIC9kZXYvbnVsbAorKysrIGIvbGliYXZjb2RlYy9hdjFfbGV2 ZWxzLmMKK0BAIC0wLDAgKzEsOTIgQEAKKysvKgorKyAqIENvcHlyaWdodCAoYykgMjAyMyBJbnRl bCBDb3Jwb3JhdGlvbgorKyAqCisrICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorKyAq CisrICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3Ig KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIEZGbXBlZyBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1w ZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0aW9uLCBJ bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEz MDEgVVNBCisrICovCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKyNpbmNsdWRlICJsaWJhdnV0 aWwvbWFjcm9zLmgiCisrI2luY2x1ZGUgImF2MV9sZXZlbHMuaCIKKysKKysvKiogaWdub3JlIGVu dHJpZXMgd2hpY2ggbmFtZWQgaW4gc3BlYyBidXQgbm8gZGV0YWlscy4gTGlrZSBsZXZlbCAyLjIg YW5kIDcuMC4gKi8KKytzdGF0aWMgY29uc3QgQVYxTGV2ZWxEZXNjcmlwdG9yIGF2MV9sZXZlbHNb XSA9IHsKKysgICAgLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICBNYXhWU2l6ZSAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1haW5NYnBzICAgICAgICAgICAgICBNYXhUaWxlcworKyAgICAv LyB8ICBsZXZlbF9pZHggICAgICAgICAgICAgICAgIHwgTWF4RGlzcGxheVJhdGUgICAgICAgICAg ICAgICAgICAgIHwgSGlnaE1icHMgICAgICAgICB8IE1heFRpbGVDb2xzCisrICAgIC8vIHwgICAg ICB8ICAgTWF4UGljU2l6ZSAgICAgICAgfCAgICAgICB8ICAgICBNYXhEZWNvZGVSYXRlICAgICAg ICAgfCAgICB8ICAgTWFpbkNSICAgIHwgICB8CisrICAgIC8vIHwgICAgICB8ICAgICB8ICAgIE1h eEhTaXplICAgfCAgICAgICB8ICAgICAgICAgICB8IE1heEhlYWRlclJhdGUgfCAgICB8ICAgICB8 IEhpZ2hDUnwgICB8CisrICAgIC8vIHwgICAgICB8ICAgICB8ICAgICAgICB8ICAgICAgfCAgICAg ICB8ICAgICAgICAgICB8ICAgICAgIHwgICAgICAgfCAgICB8ICAgICB8ICB8ICAgIHwgICB8Cisr ICAgIHsgIjIuMCIsICAwLCAgIDE0NzQ1NiwgIDIwNDgsIDExNTIsICAgNDQyMzY4MCwgICAgIDU1 Mjk2MDAsIDE1MCwgICAxLjUsICAgICAwLCAyLCAwLCAgIDgsICA0IH0sCisrICAgIHsgIjIuMSIs ICAxLCAgIDI3ODc4NCwgIDI4MTYsIDE1ODQsICAgODM2MzUyMCwgICAgMTA0NTQ0MDAsIDE1MCwg ICAzLjAsICAgICAwLCAyLCAwLCAgIDgsICA0IH0sCisrICAgIHsgIjMuMCIsICA0LCAgIDY2NTg1 NiwgIDQzNTIsIDI0NDgsICAxOTk3NTY4MCwgICAgMjQ5Njk2MDAsIDE1MCwgICA2LjAsICAgICAw LCAyLCAwLCAgMTYsICA2IH0sCisrICAgIHsgIjMuMSIsICA1LCAgMTA2NTAyNCwgIDU1MDQsIDMw OTYsICAzMTk1MDcyMCwgICAgMzk5Mzg0MDAsIDE1MCwgIDEwLjAsICAgICAwLCAyLCAwLCAgMTYs ICA2IH0sCisrICAgIHsgIjQuMCIsICA4LCAgMjM1OTI5NiwgIDYxNDQsIDM0NTYsICA3MDc3ODg4 MCwgICAgNzc4NTY3NjgsIDMwMCwgIDEyLjAsICAzMC4wLCA0LCA0LCAgMzIsICA4IH0sCisrICAg IHsgIjQuMSIsICA5LCAgMjM1OTI5NiwgIDYxNDQsIDM0NTYsICAxNDE1NTc3NjAsICAxNTU3MTM1 MzYsIDMwMCwgIDIwLjAsICA1MC4wLCA0LCA0LCAgMzIsICA4IH0sCisrICAgIHsgIjUuMCIsIDEy LCAgODkxMjg5NiwgIDgxOTIsIDQzNTIsICAyNjczODY4ODAsICAyNzM3MTUyMDAsIDMwMCwgIDMw LjAsIDEwMC4wLCA2LCA0LCAgNjQsICA4IH0sCisrICAgIHsgIjUuMSIsIDEzLCAgODkxMjg5Niwg IDgxOTIsIDQzNTIsICA1MzQ3NzM3NjAsICA1NDc0MzA0MDAsIDMwMCwgIDQwLjAsIDE2MC4wLCA4 LCA0LCAgNjQsICA4IH0sCisrICAgIHsgIjUuMiIsIDE0LCAgODkxMjg5NiwgIDgxOTIsIDQzNTIs IDEwNjk1NDc1MjAsIDEwOTQ4NjA4MDAsIDMwMCwgIDYwLjAsIDI0MC4wLCA4LCA0LCAgNjQsICA4 IH0sCisrICAgIHsgIjUuMyIsIDE1LCAgODkxMjg5NiwgIDgxOTIsIDQzNTIsIDEwNjk1NDc1MjAs IDExNzY1MDIyNzIsIDMwMCwgIDYwLjAsIDI0MC4wLCA4LCA0LCAgNjQsICA4IH0sCisrICAgIHsg IjYuMCIsIDE2LCAzNTY1MTU4NCwgMTYzODQsIDg3MDQsIDEwNjk1NDc1MjAsIDExNzY1MDIyNzIs IDMwMCwgIDYwLjAsIDI0MC4wLCA4LCA0LCAxMjgsIDE2IH0sCisrICAgIHsgIjYuMSIsIDE3LCAz NTY1MTU4NCwgMTYzODQsIDg3MDQsIDIxMzkwOTUwNDAsIDIxODk3MjE2MDAsIDMwMCwgMTAwLjAs IDQ4MC4wLCA4LCA0LCAxMjgsIDE2IH0sCisrICAgIHsgIjYuMiIsIDE4LCAzNTY1MTU4NCwgMTYz ODQsIDg3MDQsIDQyNzgxOTAwODAsIDQzNzk0NDMyMDAsIDMwMCwgMTYwLjAsIDgwMC4wLCA4LCA0 LCAxMjgsIDE2IH0sCisrICAgIHsgIjYuMyIsIDE5LCAzNTY1MTU4NCwgMTYzODQsIDg3MDQsIDQy NzgxOTAwODAsIDQ3MDYwMDkwODgsIDMwMCwgMTYwLjAsIDgwMC4wLCA4LCA0LCAxMjgsIDE2IH0s CisrfTsKKysKKytjb25zdCBBVjFMZXZlbERlc2NyaXB0b3IgKmZmX2F2MV9ndWVzc19sZXZlbChp bnQ2NF90IGJpdHJhdGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IHRpZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IHdpZHRoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBoZWlnaHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHRpbGVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCB0aWxlX2NvbHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZmxvYXQgZnBzKQorK3sKKysgICAgaW50IHBpY19zaXplOworKyAgICB1 aW50NjRfdCBkaXNwbGF5X3JhdGU7CisrICAgIGZsb2F0IG1heF9icjsKKysKKysgICAgcGljX3Np emUgPSB3aWR0aCAqIGhlaWdodDsKKysgICAgZGlzcGxheV9yYXRlID0gKHVpbnQ2NF90KXBpY19z aXplICogZnBzOworKworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKGF2 MV9sZXZlbHMpOyBpKyspIHsKKysgICAgICAgIGNvbnN0IEFWMUxldmVsRGVzY3JpcHRvciAqbGV2 ZWwgPSAmYXYxX2xldmVsc1tpXTsKKysgICAgICAgIC8vIExpbWl0YXRpb246IGRlY29kZSByYXRl LCBoZWFkZXIgcmF0ZSwgY29tcHJlc3MgcmF0ZSwgZXRjLiBhcmUgbm90IGNvbnNpZGVyZWQuCisr ICAgICAgICBpZiAocGljX3NpemUgPiBsZXZlbC0+bWF4X3BpY19zaXplKQorKyAgICAgICAgICAg IGNvbnRpbnVlOworKyAgICAgICAgaWYgKHdpZHRoID4gbGV2ZWwtPm1heF9oX3NpemUpCisrICAg ICAgICAgICAgY29udGludWU7CisrICAgICAgICBpZiAoaGVpZ2h0ID4gbGV2ZWwtPm1heF92X3Np emUpCisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICBpZiAoZGlzcGxheV9yYXRlID4g bGV2ZWwtPm1heF9kaXNwbGF5X3JhdGUpCisrICAgICAgICAgICAgY29udGludWU7CisrCisrICAg ICAgICBpZiAodGllcikKKysgICAgICAgICAgICBtYXhfYnIgPSBsZXZlbC0+aGlnaF9tYnBzOwor KyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIG1heF9iciA9IGxldmVsLT5tYWluX21icHM7Cisr ICAgICAgICBpZiAoIW1heF9icikKKysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIGlm IChiaXRyYXRlID4gKGludDY0X3QpKDEwMDAwMDAuMCAqIG1heF9icikpCisrICAgICAgICAgICAg Y29udGludWU7CisrCisrICAgICAgICBpZiAodGlsZXMgPiBsZXZlbC0+bWF4X3RpbGVzKQorKyAg ICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgaWYgKHRpbGVfY29scyA+IGxldmVsLT5tYXhf dGlsZV9jb2xzKQorKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgcmV0dXJuIGxldmVs OworKyAgICB9CisrCisrICAgIHJldHVybiBOVUxMOworK30KK2RpZmYgLS1naXQgYS9saWJhdmNv ZGVjL2F2MV9sZXZlbHMuaCBiL2xpYmF2Y29kZWMvYXYxX2xldmVscy5oCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMTY0Y2I4NworLS0tIC9kZXYvbnVsbAorKysrIGIvbGli YXZjb2RlYy9hdjFfbGV2ZWxzLmgKK0BAIC0wLDAgKzEsNTggQEAKKysvKgorKyAqIENvcHlyaWdo dCAoYykgMjAyMyBJbnRlbCBDb3Jwb3JhdGlvbgorKyAqCisrICogVGhpcyBmaWxlIGlzIHBhcnQg b2YgRkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgor KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2Ug YWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysg KiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0 b24sIE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisrI2lmbmRlZiBBVkNPREVDX0FWMV9MRVZF TFNfSAorKyNkZWZpbmUgQVZDT0RFQ19BVjFfTEVWRUxTX0gKKysKKysjaW5jbHVkZSA8c3RkaW50 Lmg+CisrCisrdHlwZWRlZiBzdHJ1Y3QgQVYxTGV2ZWxEZXNjcmlwdG9yIHsKKysgICAgY2hhciAg ICAgbmFtZVs0XTsKKysgICAgdWludDhfdCAgbGV2ZWxfaWR4OworKworKyAgICB1aW50MzJfdCBt YXhfcGljX3NpemU7CisrICAgIHVpbnQzMl90IG1heF9oX3NpemU7CisrICAgIHVpbnQzMl90IG1h eF92X3NpemU7CisrICAgIHVpbnQ2NF90IG1heF9kaXNwbGF5X3JhdGU7CisrICAgIHVpbnQ2NF90 IG1heF9kZWNvZGVfcmF0ZTsKKysKKysgICAgdWludDMyX3QgbWF4X2hlYWRlcl9yYXRlOworKyAg ICBmbG9hdCAgICBtYWluX21icHM7CisrICAgIGZsb2F0ICAgIGhpZ2hfbWJwczsKKysgICAgdWlu dDMyX3QgbWFpbl9jcjsKKysgICAgdWludDMyX3QgaGlnaF9jcjsKKysgICAgdWludDMyX3QgbWF4 X3RpbGVzOworKyAgICB1aW50MzJfdCBtYXhfdGlsZV9jb2xzOworK30gQVYxTGV2ZWxEZXNjcmlw dG9yOworKworKy8qKgorKyAqIEd1ZXNzIHRoZSBsZXZlbCBvZiBhIHN0cmVhbSBmcm9tIHNvbWUg cGFyYW1ldGVycy4KKysgKgorKyAqIFVua25vd24gcGFyYW1ldGVycyBtYXkgYmUgemVybywgaW4g d2hpY2ggY2FzZSB0aGV5IHdpbGwgYmUgaWdub3JlZC4KKysgKi8KKytjb25zdCBBVjFMZXZlbERl c2NyaXB0b3IgKmZmX2F2MV9ndWVzc19sZXZlbChpbnQ2NF90IGJpdHJhdGUsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRpZXIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoZWlnaHQsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRpbGVfcm93cywKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGlsZV9jb2xz LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGZw cyk7CisrCisrI2VuZGlmIC8qIEFWQ09ERUNfQVYxX0xFVkVMU19IICovCitkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy9jYnMuYyBiL2xpYmF2Y29kZWMvY2JzLmMKK2luZGV4IDUwNDE5N2UuLjY0Yjlh ZWUgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL2Nicy5jCisrKysgYi9saWJhdmNvZGVjL2Nicy5j CitAQCAtMTExLDggKzExMSw5IEBAIGF2X2NvbGQgaW50IGZmX2Nic19pbml0KENvZGVkQml0c3Ry ZWFtQ29udGV4dCAqKmN0eF9wdHIsCisgCisgICAgIGN0eC0+ZGVjb21wb3NlX3VuaXRfdHlwZXMg PSBOVUxMOworIAorLSAgICBjdHgtPnRyYWNlX2VuYWJsZSA9IDA7CistICAgIGN0eC0+dHJhY2Vf bGV2ZWwgID0gQVZfTE9HX1RSQUNFOworKyAgICBjdHgtPnRyYWNlX2VuYWJsZSAgPSAwOworKyAg ICBjdHgtPnRyYWNlX2xldmVsICAgPSBBVl9MT0dfVFJBQ0U7CisrICAgIGN0eC0+dHJhY2VfY29u dGV4dCA9IGN0eDsKKyAKKyAgICAgKmN0eF9wdHIgPSBjdHg7CisgICAgIHJldHVybiAwOworQEAg LTQ5MCwxOSArNDkxLDI3IEBAIHZvaWQgZmZfY2JzX3RyYWNlX2hlYWRlcihDb2RlZEJpdHN0cmVh bUNvbnRleHQgKmN0eCwKKyAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgY3R4LT50cmFjZV9sZXZl bCwgIiVzXG4iLCBuYW1lKTsKKyB9CisgCistdm9pZCBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1l bnQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIGludCBwb3NpdGlvbiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIsIGNvbnN0IGludCAqc3Vic2Ny aXB0cywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpiaXRz LCBpbnQ2NF90IHZhbHVlKQorK3ZvaWQgZmZfY2JzX3RyYWNlX3JlYWRfbG9nKHZvaWQgKnRyYWNl X2NvbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Qml0Q29udGV4dCAqZ2Jj LCBpbnQgbGVuZ3RoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0 ciwgY29uc3QgaW50ICpzdWJzY3JpcHRzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dDY0X3QgdmFsdWUpCisgeworKyAgICBDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCA9IHRyYWNl X2NvbnRleHQ7CisgICAgIGNoYXIgbmFtZVsyNTZdOworKyAgICBjaGFyIGJpdHNbMjU2XTsKKyAg ICAgc2l6ZV90IG5hbWVfbGVuLCBiaXRzX2xlbjsKKyAgICAgaW50IHBhZCwgc3VicywgaSwgaiwg aywgbjsKKy0KKy0gICAgaWYgKCFjdHgtPnRyYWNlX2VuYWJsZSkKKy0gICAgICAgIHJldHVybjsK KysgICAgaW50IHBvc2l0aW9uOworIAorICAgICBhdl9hc3NlcnQwKHZhbHVlID49IElOVF9NSU4g JiYgdmFsdWUgPD0gVUlOVDMyX01BWCk7CisgCisrICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291 bnQoZ2JjKTsKKysKKysgICAgYXZfYXNzZXJ0MChsZW5ndGggPCAyNTYpOworKyAgICBmb3IgKGkg PSAwOyBpIDwgbGVuZ3RoOyBpKyspCisrICAgICAgICBiaXRzW2ldID0gZ2V0X2JpdHMxKGdiYykg PyAnMScgOiAnMCc7CisrICAgIGJpdHNbbGVuZ3RoXSA9IDA7CisrCisgICAgIHN1YnMgPSBzdWJz Y3JpcHRzID8gc3Vic2NyaXB0c1swXSA6IDA7CisgICAgIG4gPSAwOworICAgICBmb3IgKGkgPSBq ID0gMDsgc3RyW2ldOykgeworQEAgLTUyOSw3ICs1MzgsNyBAQCB2b2lkIGZmX2Nic190cmFjZV9z eW50YXhfZWxlbWVudChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgaW50IHBvc2l0aW9uLAor ICAgICBhdl9hc3NlcnQwKG4gPT0gc3Vicyk7CisgCisgICAgIG5hbWVfbGVuID0gc3RybGVuKG5h bWUpOworLSAgICBiaXRzX2xlbiA9IHN0cmxlbihiaXRzKTsKKysgICAgYml0c19sZW4gPSBsZW5n dGg7CisgCisgICAgIGlmIChuYW1lX2xlbiArIGJpdHNfbGVuID4gNjApCisgICAgICAgICBwYWQg PSBiaXRzX2xlbiArIDI7CitAQCAtNTQwLDE0ICs1NDksNDggQEAgdm9pZCBmZl9jYnNfdHJhY2Vf c3ludGF4X2VsZW1lbnQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIGludCBwb3NpdGlvbiwK KyAgICAgICAgICAgIHBvc2l0aW9uLCBuYW1lLCBwYWQsIGJpdHMsIHZhbHVlKTsKKyB9CisgCist aW50IGZmX2Nic19yZWFkX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRC aXRDb250ZXh0ICpnYmMsCistICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwgY29u c3QgY2hhciAqbmFtZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJz Y3JpcHRzLCB1aW50MzJfdCAqd3JpdGVfdG8sCistICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQzMl90IHJhbmdlX21pbiwgdWludDMyX3QgcmFuZ2VfbWF4KQorK3ZvaWQgZmZfY2JzX3RyYWNl X3dyaXRlX2xvZyh2b2lkICp0cmFjZV9jb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdXRCaXRDb250ZXh0ICpwYmMsIGludCBsZW5ndGgsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgaW50ICpzdWJzY3JpcHRzLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlKQorIHsKKy0gICAgdWludDMyX3Qg dmFsdWU7CisrICAgIENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4ID0gdHJhY2VfY29udGV4dDsK KysKKysgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHN5bnRheCBlbGVtZW50IGlzIHdyaXR0ZW4gdG8g dGhlIG91dHB1dCBidWZmZXIsCisrICAgIC8vIG1ha2UgYSBHZXRCaXRDb250ZXh0IHBvaW50ZWQg YXQgdGhlIHN0YXJ0IHBvc2l0aW9uLCB0aGVuIGNhbGwgdGhlCisrICAgIC8vIHJlYWQgbG9nIGZ1 bmN0aW9uIHdoaWNoIGNhbiByZWFkIHRoZSBiaXRzIGJhY2sgdG8gbG9nIHRoZW0uCisrCisrICAg IEdldEJpdENvbnRleHQgZ2JjOworICAgICBpbnQgcG9zaXRpb247CisgCisrICAgIGlmIChsZW5n dGggPiAwKSB7CisrICAgICAgICBQdXRCaXRDb250ZXh0IGZsdXNoOworKyAgICAgICAgZmx1c2gg PSAqcGJjOworKyAgICAgICAgZmx1c2hfcHV0X2JpdHMoJmZsdXNoKTsKKysgICAgfQorKworKyAg ICBwb3NpdGlvbiA9IHB1dF9iaXRzX2NvdW50KHBiYyk7CisrICAgIGF2X2Fzc2VydDAocG9zaXRp b24gPj0gbGVuZ3RoKTsKKysKKysgICAgaW5pdF9nZXRfYml0cygmZ2JjLCBwYmMtPmJ1ZiwgcG9z aXRpb24pOworKworKyAgICBza2lwX2JpdHNfbG9uZygmZ2JjLCBwb3NpdGlvbiAtIGxlbmd0aCk7 CisrCisrICAgIGZmX2Nic190cmFjZV9yZWFkX2xvZyhjdHgsICZnYmMsIGxlbmd0aCwgc3RyLCBz dWJzY3JpcHRzLCB2YWx1ZSk7CisrfQorKworK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lIGludCBj YnNfcmVhZF91bnNpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Qml0Q29udGV4dCAqZ2JjLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgs IGNvbnN0IGNoYXIgKm5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKndyaXRlX3RvLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9taW4sCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJh bmdlX21heCkKKyt7CisrICAgIHVpbnQzMl90IHZhbHVlOworKworKyAgICBDQlNfVFJBQ0VfUkVB RF9TVEFSVCgpOworKworICAgICBhdl9hc3NlcnQwKHdpZHRoID4gMCAmJiB3aWR0aCA8PSAzMik7 CisgCisgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiYykgPCB3aWR0aCkgeworQEAgLTU1NiwyMSAr NTk5LDkgQEAgaW50IGZmX2Nic19yZWFkX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAq Y3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCisgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKKyAgICAgfQorIAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCistICAgICAgICBw b3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdiYyk7CistCisgICAgIHZhbHVlID0gZ2V0X2JpdHNf bG9uZyhnYmMsIHdpZHRoKTsKKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7CistICAg ICAgICBjaGFyIGJpdHNbMzNdOworLSAgICAgICAgaW50IGk7CistICAgICAgICBmb3IgKGkgPSAw OyBpIDwgd2lkdGg7IGkrKykKKy0gICAgICAgICAgICBiaXRzW2ldID0gdmFsdWUgPj4gKHdpZHRo IC0gaSAtIDEpICYgMSA/ICcxJyA6ICcwJzsKKy0gICAgICAgIGJpdHNbaV0gPSAwOworLQorLSAg ICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sIG5hbWUsIHN1 YnNjcmlwdHMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0cywgdmFs dWUpOworLSAgICB9CisrICAgIENCU19UUkFDRV9SRUFEX0VORCgpOworIAorICAgICBpZiAodmFs dWUgPCByYW5nZV9taW4gfHwgdmFsdWUgPiByYW5nZV9tYXgpIHsKKyAgICAgICAgIGF2X2xvZyhj dHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgorQEAgLTU4Mywx MSArNjE0LDI5IEBAIGludCBmZl9jYnNfcmVhZF91bnNpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRl eHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAorICAgICByZXR1cm4gMDsKKyB9CisgCisraW50 IGZmX2Nic19yZWFkX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRD b250ZXh0ICpnYmMsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwgY29uc3Qg Y2hhciAqbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3Jp cHRzLCB1aW50MzJfdCAqd3JpdGVfdG8sCisrICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IHJhbmdlX21pbiwgdWludDMyX3QgcmFuZ2VfbWF4KQorK3sKKysgICAgcmV0dXJuIGNic19y ZWFkX3Vuc2lnbmVkKGN0eCwgZ2JjLCB3aWR0aCwgbmFtZSwgc3Vic2NyaXB0cywKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX3RvLCByYW5nZV9taW4sIHJhbmdlX21heCk7Cisr fQorKworK2ludCBmZl9jYnNfcmVhZF9zaW1wbGVfdW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250 ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCB3aWR0aCwgY29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgKndyaXRlX3RvKQor K3sKKysgICAgcmV0dXJuIGNic19yZWFkX3Vuc2lnbmVkKGN0eCwgZ2JjLCB3aWR0aCwgbmFtZSwg TlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX3RvLCAwLCBVSU5UMzJf TUFYKTsKKyt9CisrCisgaW50IGZmX2Nic193cml0ZV91bnNpZ25lZChDb2RlZEJpdHN0cmVhbUNv bnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IHdpZHRoLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCB1aW50MzJfdCB2YWx1ZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IHJhbmdlX21pbiwgdWludDMyX3QgcmFuZ2VfbWF4KQorIHsK KysgICAgQ0JTX1RSQUNFX1dSSVRFX1NUQVJUKCk7CisrCisgICAgIGF2X2Fzc2VydDAod2lkdGgg PiAwICYmIHdpZHRoIDw9IDMyKTsKKyAKKyAgICAgaWYgKHZhbHVlIDwgcmFuZ2VfbWluIHx8IHZh bHVlID4gcmFuZ2VfbWF4KSB7CitAQCAtNjAwLDMyICs2NDksMzEgQEAgaW50IGZmX2Nic193cml0 ZV91bnNpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJj LAorICAgICBpZiAocHV0X2JpdHNfbGVmdChwYmMpIDwgd2lkdGgpCisgICAgICAgICByZXR1cm4g QVZFUlJPUihFTk9TUEMpOworIAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKKy0gICAg ICAgIGNoYXIgYml0c1szM107CistICAgICAgICBpbnQgaTsKKy0gICAgICAgIGZvciAoaSA9IDA7 IGkgPCB3aWR0aDsgaSsrKQorLSAgICAgICAgICAgIGJpdHNbaV0gPSB2YWx1ZSA+PiAod2lkdGgg LSBpIC0gMSkgJiAxID8gJzEnIDogJzAnOworLSAgICAgICAgYml0c1tpXSA9IDA7CistCistICAg ICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwdXRfYml0c19jb3VudChwYmMp LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YnNjcmlwdHMs IGJpdHMsIHZhbHVlKTsKKy0gICAgfQorLQorICAgICBpZiAod2lkdGggPCAzMikKKyAgICAgICAg IHB1dF9iaXRzKHBiYywgd2lkdGgsIHZhbHVlKTsKKyAgICAgZWxzZQorICAgICAgICAgcHV0X2Jp dHMzMihwYmMsIHZhbHVlKTsKKyAKKysgICAgQ0JTX1RSQUNFX1dSSVRFX0VORCgpOworKworICAg ICByZXR1cm4gMDsKKyB9CisgCisraW50IGZmX2Nic193cml0ZV9zaW1wbGVfdW5zaWduZWQoQ29k ZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQz Ml90IHZhbHVlKQorK3sKKysgICAgcmV0dXJuIGZmX2Nic193cml0ZV91bnNpZ25lZChjdHgsIHBi Yywgd2lkdGgsIG5hbWUsIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dmFsdWUsIDAsIE1BWF9VSU5UX0JJVFMod2lkdGgpKTsKKyt9CisrCisgaW50IGZmX2Nic19yZWFk X3NpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAor ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBjb25zdCBjaGFyICpuYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCBpbnQzMl90ICp3cml0 ZV90bywKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcmFuZ2VfbWluLCBpbnQzMl90 IHJhbmdlX21heCkKKyB7CisgICAgIGludDMyX3QgdmFsdWU7CistICAgIGludCBwb3NpdGlvbjsK KysKKysgICAgQ0JTX1RSQUNFX1JFQURfU1RBUlQoKTsKKyAKKyAgICAgYXZfYXNzZXJ0MCh3aWR0 aCA+IDAgJiYgd2lkdGggPD0gMzIpOworIAorQEAgLTYzNSwyMSArNjgzLDkgQEAgaW50IGZmX2Ni c19yZWFkX3NpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAq Z2JjLAorICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgIH0KKyAKKy0g ICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQorLSAgICAgICAgcG9zaXRpb24gPSBnZXRfYml0c19j b3VudChnYmMpOworLQorICAgICB2YWx1ZSA9IGdldF9zYml0c19sb25nKGdiYywgd2lkdGgpOwor IAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKKy0gICAgICAgIGNoYXIgYml0c1szM107 CistICAgICAgICBpbnQgaTsKKy0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0aDsgaSsrKQor LSAgICAgICAgICAgIGJpdHNbaV0gPSB2YWx1ZSAmICgxVSA8PCAod2lkdGggLSBpIC0gMSkpID8g JzEnIDogJzAnOworLSAgICAgICAgYml0c1tpXSA9IDA7CistCistICAgICAgICBmZl9jYnNfdHJh Y2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgc3Vic2NyaXB0cywKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7CistICAgIH0KKysg ICAgQ0JTX1RSQUNFX1JFQURfRU5EKCk7CisgCisgICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8 fCB2YWx1ZSA+IHJhbmdlX21heCkgeworICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZf TE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCitAQCAtNjY3LDYgKzcwMyw4IEBAIGludCBm Zl9jYnNfd3JpdGVfc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250 ZXh0ICpwYmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRz LCBpbnQzMl90IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcmFuZ2Vf bWluLCBpbnQzMl90IHJhbmdlX21heCkKKyB7CisrICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgp OworKworICAgICBhdl9hc3NlcnQwKHdpZHRoID4gMCAmJiB3aWR0aCA8PSAzMik7CisgCisgICAg IGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgeworQEAgLTY3OSwy MiArNzE3LDEzIEBAIGludCBmZl9jYnNfd3JpdGVfc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4 dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCisgICAgIGlmIChwdXRfYml0c19sZWZ0KHBiYykg PCB3aWR0aCkKKyAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1NQQyk7CisgCistICAgIGlmIChj dHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAgY2hhciBiaXRzWzMzXTsKKy0gICAgICAgIGlu dCBpOworLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspCistICAgICAgICAgICAg Yml0c1tpXSA9IHZhbHVlICYgKDFVIDw8ICh3aWR0aCAtIGkgLSAxKSkgPyAnMScgOiAnMCc7Cist ICAgICAgICBiaXRzW2ldID0gMDsKKy0KKy0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxl bWVudChjdHgsIHB1dF9iaXRzX2NvdW50KHBiYyksCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgYml0cywgdmFsdWUpOworLSAgICB9CistCisg ICAgIGlmICh3aWR0aCA8IDMyKQorICAgICAgICAgcHV0X3NiaXRzKHBiYywgd2lkdGgsIHZhbHVl KTsKKyAgICAgZWxzZQorICAgICAgICAgcHV0X2JpdHMzMihwYmMsIHZhbHVlKTsKKyAKKysgICAg Q0JTX1RSQUNFX1dSSVRFX0VORCgpOworKworICAgICByZXR1cm4gMDsKKyB9CisgCitkaWZmIC0t Z2l0IGEvbGliYXZjb2RlYy9jYnMuaCBiL2xpYmF2Y29kZWMvY2JzLmgKK2luZGV4IGVlMjE2MjMu LmY2NTA5YTIgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL2Nicy5oCisrKysgYi9saWJhdmNvZGVj L2Nicy5oCitAQCAtMTY3LDYgKzE2Nyw1MSBAQCB0eXBlZGVmIHN0cnVjdCBDb2RlZEJpdHN0cmVh bUZyYWdtZW50IHsKKyAgICAgQ29kZWRCaXRzdHJlYW1Vbml0ICp1bml0czsKKyB9IENvZGVkQml0 c3RyZWFtRnJhZ21lbnQ7CisgCisrCisrc3RydWN0IENvZGVkQml0c3RyZWFtQ29udGV4dDsKKytz dHJ1Y3QgR2V0Qml0Q29udGV4dDsKKytzdHJ1Y3QgUHV0Qml0Q29udGV4dDsKKysKKysvKioKKysg KiBDYWxsYmFjayB0eXBlIGZvciByZWFkIHRyYWNpbmcuCisrICoKKysgKiBAcGFyYW0gY3R4ICAg ICAgICAgVXNlci1zZXQgdHJhY2UgY29udGV4dC4KKysgKiBAcGFyYW0gZ2JjICAgICAgICAgQSBH ZXRCaXRDb250ZXh0IHNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHN5bnRheAorKyAqICAgICAgICAg ICAgICAgICAgICBlbGVtZW50LiAgVGhpcyBpcyBhIGNvcHksIHRoZSBjYWxsZWUgZG9lcyBub3QK KysgKiAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBwcmVzZXJ2ZSBpdC4KKysgKiBAcGFyYW0g bGVuZ3RoICAgICAgTGVuZ3RoIGluIGJpdHMgb2YgdGhlIHN5bnRheCBlbGVtZW50LgorKyAqIEBw YXJhbSBuYW1lICAgICAgICBTdHJpbmcgbmFtZSBvZiB0aGUgc3ludGF4IGVsZW1lbnRzLgorKyAq IEBwYXJhbSBzdWJzY3JpcHRzICBJZiB0aGUgc3ludGF4IGVsZW1lbnQgaXMgYW4gYXJyYXksIGEg cG9pbnRlciB0bworKyAqICAgICAgICAgICAgICAgICAgICBhbiBhcnJheSBvZiBzdWJzY3JpcHRz IGludG8gdGhlIGFycmF5LgorKyAqIEBwYXJhbSB2YWx1ZSAgICAgICBQYXJzZWQgdmFsdWUgb2Yg dGhlIHN5bnRheCBlbGVtZW50LgorKyAqLworK3R5cGVkZWYgdm9pZCAoKkNCU1RyYWNlUmVhZENh bGxiYWNrKSh2b2lkICp0cmFjZV9jb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgR2V0Qml0Q29udGV4dCAqZ2JjLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRfcG9zaXRpb24sCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSk7CisrCisrLyoqCisrICog Q2FsbGJhY2sgdHlwZSBmb3Igd3JpdGUgdHJhY2luZy4KKysgKgorKyAqIEBwYXJhbSBjdHggICAg ICAgICBVc2VyLXNldCB0cmFjZSBjb250ZXh0LgorKyAqIEBwYXJhbSBwYmMgICAgICAgICBBIFB1 dEJpdENvbnRleHQgc2V0IGF0IHRoZSBlbmQgb2YgdGhlIHN5bnRheAorKyAqICAgICAgICAgICAg ICAgICAgICBlbGVtZW50LiAgVGhlIHVzZXIgbXVzdCBub3QgbW9kaWZ5IHRoaXMsIGJ1dCBtYXkK KysgKiAgICAgICAgICAgICAgICAgICAgaW5zcGVjdCBpdCB0byBkZXRlcm1pbmUgc3RhdGUuCisr ICogQHBhcmFtIGxlbmd0aCAgICAgIExlbmd0aCBpbiBiaXRzIG9mIHRoZSBzeW50YXggZWxlbWVu dC4KKysgKiBAcGFyYW0gbmFtZSAgICAgICAgU3RyaW5nIG5hbWUgb2YgdGhlIHN5bnRheCBlbGVt ZW50cy4KKysgKiBAcGFyYW0gc3Vic2NyaXB0cyAgSWYgdGhlIHN5bnRheCBlbGVtZW50IGlzIGFu IGFycmF5LCBhIHBvaW50ZXIgdG8KKysgKiAgICAgICAgICAgICAgICAgICAgYW4gYXJyYXkgb2Yg c3Vic2NyaXB0cyBpbnRvIHRoZSBhcnJheS4KKysgKiBAcGFyYW0gdmFsdWUgICAgICAgV3JpdHRl biB2YWx1ZSBvZiB0aGUgc3ludGF4IGVsZW1lbnQuCisrICovCisrdHlwZWRlZiB2b2lkICgqQ0JT VHJhY2VXcml0ZUNhbGxiYWNrKSh2b2lkICp0cmFjZV9jb250ZXh0LAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFB1dEJpdENvbnRleHQgKnBiYywKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydF9wb3NpdGlvbiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlw dHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVl KTsKKysKKyAvKioKKyAgKiBDb250ZXh0IHN0cnVjdHVyZSBmb3IgY29kZWQgYml0c3RyZWFtIG9w ZXJhdGlvbnMuCisgICovCitAQCAtMjEwLDExICsyNTUsMjkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29k ZWRCaXRzdHJlYW1Db250ZXh0IHsKKyAgICAgICovCisgICAgIGludCB0cmFjZV9lbmFibGU7Cisg ICAgIC8qKgorLSAgICAgKiBMb2cgbGV2ZWwgdG8gdXNlIGZvciB0cmFjZSBvdXRwdXQuCisrICAg ICAqIExvZyBsZXZlbCB0byB1c2UgZm9yIGRlZmF1bHQgdHJhY2Ugb3V0cHV0LgorICAgICAgKgor ICAgICAgKiBGcm9tIEFWX0xPR18qOyBkZWZhdWx0cyB0byBBVl9MT0dfVFJBQ0UuCisgICAgICAq LworICAgICBpbnQgdHJhY2VfbGV2ZWw7CisrICAgIC8qKgorKyAgICAgKiBVc2VyIGNvbnRleHQg cG9pbnRlciB0byBwYXNzIHRvIHRyYWNlIGNhbGxiYWNrcy4KKysgICAgICovCisrICAgIHZvaWQg KnRyYWNlX2NvbnRleHQ7CisrICAgIC8qKgorKyAgICAgKiBDYWxsYmFjayBmb3IgcmVhZCB0cmFj aW5nLgorKyAgICAgKgorKyAgICAgKiBJZiB0cmFjaW5nIGlzIGVuYWJsZWQgdGhlbiB0aGlzIGlz IGNhbGxlZCBvbmNlIGZvciBlYWNoIHN5bnRheAorKyAgICAgKiBlbGVtZW50IHBhcnNlZC4KKysg ICAgICovCisrICAgIENCU1RyYWNlUmVhZENhbGxiYWNrICB0cmFjZV9yZWFkX2NhbGxiYWNrOwor KyAgICAvKioKKysgICAgICogQ2FsbGJhY2sgZm9yIHdyaXRlIHRyYWNpbmcuCisrICAgICAqCisr ICAgICAqIElmIHRyYWNpbmcgaXMgZW5hYmxlZCB0aGVuIHRoaXMgaXMgY2FsbGVkIG9uY2UgZm9y IGVhY2ggc3ludGF4CisrICAgICAqIGVsZW1lbnQgd3JpdHRlbi4KKysgICAgICovCisrICAgIENC U1RyYWNlV3JpdGVDYWxsYmFjayB0cmFjZV93cml0ZV9jYWxsYmFjazsKKyAKKyAgICAgLyoqCisg ICAgICAqIFdyaXRlIGJ1ZmZlci4gVXNlZCBhcyBpbnRlcm1lZGlhdGUgYnVmZmVyIHdoZW4gd3Jp dGluZyB1bml0cy4KK0BAIC00MzMsNCArNDk2LDI3IEBAIGludCBmZl9jYnNfbWFrZV91bml0X3dy aXRhYmxlKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENvZGVkQml0c3RyZWFtVW5pdCAqdW5pdCk7CisgCisgCisrCisrLyoqCisrICog SGVscGVyIGZ1bmN0aW9uIGZvciByZWFkIHRyYWNpbmcgd2hpY2ggZm9ybWF0cyB0aGUgc3ludGF4 IGVsZW1lbnQKKysgKiBhbmQgbG9ncyB0aGUgcmVzdWx0LgorKyAqCisrICogVHJhY2UgY29udGV4 dCBzaG91bGQgYmUgc2V0IHRvIHRoZSBDb2RlZEJpdHN0cmVhbUNvbnRleHQuCisrICovCisrdm9p ZCBmZl9jYnNfdHJhY2VfcmVhZF9sb2codm9pZCAqdHJhY2VfY29udGV4dCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgR2V0Qml0Q29udGV4dCAqZ2JjLCBpbnQgbGVuZ3RoLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgaW50ICpz dWJzY3JpcHRzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdmFsdWUpOwor KworKy8qKgorKyAqIEhlbHBlciBmdW5jdGlvbiBmb3Igd3JpdGUgdHJhY2luZyB3aGljaCBmb3Jt YXRzIHRoZSBzeW50YXggZWxlbWVudAorKyAqIGFuZCBsb2dzIHRoZSByZXN1bHQuCisrICoKKysg KiBUcmFjZSBjb250ZXh0IHNob3VsZCBiZSBzZXQgdG8gdGhlIENvZGVkQml0c3RyZWFtQ29udGV4 dC4KKysgKi8KKyt2b2lkIGZmX2Nic190cmFjZV93cml0ZV9sb2codm9pZCAqdHJhY2VfY29udGV4 dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFB1dEJpdENvbnRleHQgKnBi YywgaW50IGxlbmd0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq c3RyLCBjb25zdCBpbnQgKnN1YnNjcmlwdHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludDY0X3QgdmFsdWUpOworKworICNlbmRpZiAvKiBBVkNPREVDX0NCU19IICovCitkaWZmIC0t Z2l0IGEvbGliYXZjb2RlYy9jYnNfYXYxLmMgYi9saWJhdmNvZGVjL2Nic19hdjEuYworaW5kZXgg NDVlMTI4OC4uNjA5OGM5NyAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvY2JzX2F2MS5jCisrKysg Yi9saWJhdmNvZGVjL2Nic19hdjEuYworQEAgLTMxLDEwICszMSw4IEBAIHN0YXRpYyBpbnQgY2Jz X2F2MV9yZWFkX3V2bGMoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQg KmdiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJhbmdlX21pbiwg dWludDMyX3QgcmFuZ2VfbWF4KQorIHsKKyAgICAgdWludDMyX3QgemVyb2VzLCBiaXRzX3ZhbHVl LCB2YWx1ZTsKKy0gICAgaW50IHBvc2l0aW9uOworIAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFi bGUpCistICAgICAgICBwb3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdiYyk7CisrICAgIENCU19U UkFDRV9SRUFEX1NUQVJUKCk7CisgCisgICAgIHplcm9lcyA9IDA7CisgICAgIHdoaWxlICgxKSB7 CitAQCAtNTAsNiArNDgsOSBAQCBzdGF0aWMgaW50IGNic19hdjFfcmVhZF91dmxjKENvZGVkQml0 c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCisgICAgIH0KKyAKKyAgICAg aWYgKHplcm9lcyA+PSAzMikgeworKyAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBzcGVjIGFsbG93 cyBhbiBhcmJpdHJhcmlseSBsYXJnZSBudW1iZXIgb2YKKysgICAgICAgIC8vIHplcm8gYml0cyBm b2xsb3dlZCBieSBhIG9uZSBiaXQgaW4gdGhpcyBjYXNlLCBidXQgdGhlCisrICAgICAgICAvLyBs aWJhb20gaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgIHZhbHVl ID0gTUFYX1VJTlRfQklUUygzMik7CisgICAgIH0gZWxzZSB7CisgICAgICAgICBpZiAoZ2V0X2Jp dHNfbGVmdChnYmMpIDwgemVyb2VzKSB7CitAQCAtNjIsMzYgKzYzLDcgQEAgc3RhdGljIGludCBj YnNfYXYxX3JlYWRfdXZsYyhDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4 dCAqZ2JjLAorICAgICAgICAgdmFsdWUgPSBiaXRzX3ZhbHVlICsgKFVJTlQzMl9DKDEpIDw8IHpl cm9lcykgLSAxOworICAgICB9CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeworLSAg ICAgICAgY2hhciBiaXRzWzY1XTsKKy0gICAgICAgIGludCBpLCBqLCBrOworLQorLSAgICAgICAg aWYgKHplcm9lcyA+PSAzMikgeworLSAgICAgICAgICAgIHdoaWxlICh6ZXJvZXMgPiAzMikgewor LSAgICAgICAgICAgICAgICBrID0gRkZNSU4oemVyb2VzIC0gMzIsIDMyKTsKKy0gICAgICAgICAg ICAgICAgZm9yIChpID0gMDsgaSA8IGs7IGkrKykKKy0gICAgICAgICAgICAgICAgICAgIGJpdHNb aV0gPSAnMCc7CistICAgICAgICAgICAgICAgIGJpdHNbaV0gPSAwOworLSAgICAgICAgICAgICAg ICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGJpdHMsIDApOwor LSAgICAgICAgICAgICAgICB6ZXJvZXMgLT0gazsKKy0gICAgICAgICAgICAgICAgcG9zaXRpb24g Kz0gazsKKy0gICAgICAgICAgICB9CistICAgICAgICB9CistCistICAgICAgICBmb3IgKGkgPSAw OyBpIDwgemVyb2VzOyBpKyspCistICAgICAgICAgICAgYml0c1tpXSA9ICcwJzsKKy0gICAgICAg IGJpdHNbaSsrXSA9ICcxJzsKKy0KKy0gICAgICAgIGlmICh6ZXJvZXMgPCAzMikgeworLSAgICAg ICAgICAgIGZvciAoaiA9IDA7IGogPCB6ZXJvZXM7IGorKykKKy0gICAgICAgICAgICAgICAgYml0 c1tpKytdID0gKGJpdHNfdmFsdWUgPj4gKHplcm9lcyAtIGogLSAxKSAmIDEpID8gJzEnIDogJzAn OworLSAgICAgICAgfQorLQorLSAgICAgICAgYml0c1tpXSA9IDA7CistICAgICAgICBmZl9jYnNf dHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBiaXRzLCB2YWx1ZSk7CistICAgIH0KKysgICAg Q0JTX1RSQUNFX1JFQURfRU5EX05PX1NVQlNDUklQVFMoKTsKKyAKKyAgICAgaWYgKHZhbHVlIDwg cmFuZ2VfbWluIHx8IHZhbHVlID4gcmFuZ2VfbWF4KSB7CisgICAgICAgICBhdl9sb2coY3R4LT5s b2dfY3R4LCBBVl9MT0dfRVJST1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKK0BAIC0xMDksNyArODEs OSBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfdXZsYyhDb2RlZEJpdHN0cmVhbUNvbnRleHQg KmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IHJhbmdlX21pbiwgdWludDMyX3QgcmFuZ2VfbWF4KQorIHsKKyAgICAgdWludDMy X3QgdjsKKy0gICAgaW50IHBvc2l0aW9uLCB6ZXJvZXM7CisrICAgIGludCB6ZXJvZXM7CisrCisr ICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOworIAorICAgICBpZiAodmFsdWUgPCByYW5nZV9t aW4gfHwgdmFsdWUgPiByYW5nZV9tYXgpIHsKKyAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgs IEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgorQEAgLTExOCwyOCArOTIsMTcgQEAg c3RhdGljIGludCBjYnNfYXYxX3dyaXRlX3V2bGMoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgs IFB1dEJpdENvbnRleHQgKnBiYywKKyAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRB OworICAgICB9CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKKy0gICAgICAgIHBvc2l0 aW9uID0gcHV0X2JpdHNfY291bnQocGJjKTsKKy0KKyAgICAgemVyb2VzID0gYXZfbG9nMih2YWx1 ZSArIDEpOworICAgICB2ID0gdmFsdWUgLSAoMVUgPDwgemVyb2VzKSArIDE7CisrCisrICAgIGlm IChwdXRfYml0c19sZWZ0KHBiYykgPCAyICogemVyb2VzICsgMSkKKysgICAgICAgIHJldHVybiBB VkVSUk9SKEVOT1NQQyk7CisrCisgICAgIHB1dF9iaXRzKHBiYywgemVyb2VzLCAwKTsKKyAgICAg cHV0X2JpdHMocGJjLCAxLCAxKTsKKyAgICAgcHV0X2JpdHMocGJjLCB6ZXJvZXMsIHYpOworIAor LSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKKy0gICAgICAgIGNoYXIgYml0c1s2NV07Cist ICAgICAgICBpbnQgaSwgajsKKy0gICAgICAgIGkgPSAwOworLSAgICAgICAgZm9yIChqID0gMDsg aiA8IHplcm9lczsgaisrKQorLSAgICAgICAgICAgIGJpdHNbaSsrXSA9ICcwJzsKKy0gICAgICAg IGJpdHNbaSsrXSA9ICcxJzsKKy0gICAgICAgIGZvciAoaiA9IDA7IGogPCB6ZXJvZXM7IGorKykK Ky0gICAgICAgICAgICBiaXRzW2krK10gPSAodiA+PiAoemVyb2VzIC0gaiAtIDEpICYgMSkgPyAn MScgOiAnMCc7CistICAgICAgICBiaXRzW2krK10gPSAwOworLSAgICAgICAgZmZfY2JzX3RyYWNl X3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sIG5hbWUsIE5VTEwsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYml0cywgdmFsdWUpOworLSAgICB9CisrICAgIENCU19U UkFDRV9XUklURV9FTkRfTk9fU1VCU0NSSVBUUygpOworIAorICAgICByZXR1cm4gMDsKKyB9CitA QCAtMTQ4LDIwICsxMTEsMTkgQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRfbGViMTI4KENvZGVk Qml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NF90ICp3cml0ZV90bykK KyB7CisgICAgIHVpbnQ2NF90IHZhbHVlOworLSAgICBpbnQgcG9zaXRpb24sIGVyciwgaTsKKysg ICAgdWludDMyX3QgYnl0ZTsKKysgICAgaW50IGk7CisgCistICAgIGlmIChjdHgtPnRyYWNlX2Vu YWJsZSkKKy0gICAgICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKKysgICAgQ0JT X1RSQUNFX1JFQURfU1RBUlQoKTsKKyAKKyAgICAgdmFsdWUgPSAwOworICAgICBmb3IgKGkgPSAw OyBpIDwgODsgaSsrKSB7CistICAgICAgICBpbnQgc3Vic2NyaXB0WzJdID0geyAxLCBpIH07Cist ICAgICAgICB1aW50MzJfdCBieXRlOworLSAgICAgICAgZXJyID0gZmZfY2JzX3JlYWRfdW5zaWdu ZWQoY3R4LCBnYmMsIDgsICJsZWIxMjhfYnl0ZVtpXSIsIHN1YnNjcmlwdCwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlLCAweDAwLCAweGZmKTsKKy0gICAgICAgIGlm IChlcnIgPCAwKQorLSAgICAgICAgICAgIHJldHVybiBlcnI7CistCisrICAgICAgICBpZiAoZ2V0 X2JpdHNfbGVmdChnYmMpIDwgOCkgeworKyAgICAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgs IEFWX0xPR19FUlJPUiwgIkludmFsaWQgbGViMTI4IGF0ICIKKysgICAgICAgICAgICAgICAgICAg IiVzOiBiaXRzdHJlYW0gZW5kZWQuXG4iLCBuYW1lKTsKKysgICAgICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKKysgICAgICAgIH0KKysgICAgICAgIGJ5dGUgPSBnZXRfYml0cyhn YmMsIDgpOworICAgICAgICAgdmFsdWUgfD0gKHVpbnQ2NF90KShieXRlICYgMHg3ZikgPDwgKGkg KiA3KTsKKyAgICAgICAgIGlmICghKGJ5dGUgJiAweDgwKSkKKyAgICAgICAgICAgICBicmVhazsK K0BAIC0xNzAsMzkgKzEzMiwzOCBAQCBzdGF0aWMgaW50IGNic19hdjFfcmVhZF9sZWIxMjgoQ29k ZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKKyAgICAgaWYgKHZh bHVlID4gVUlOVDMyX01BWCkKKyAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwor IAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCistICAgICAgICBmZl9jYnNfdHJhY2Vfc3lu dGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgTlVMTCwgIiIsIHZhbHVlKTsKKysgICAg Q0JTX1RSQUNFX1JFQURfRU5EX05PX1NVQlNDUklQVFMoKTsKKyAKKyAgICAgKndyaXRlX3RvID0g dmFsdWU7CisgICAgIHJldHVybiAwOworIH0KKyAKKysvKiogTWluaW11bSBieXRlIGxlbmd0aCB3 aWxsIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhlIGxlbjEyOCBvZiB2YWx1ZSBpZiBieXRlX2xlbiBp cyAwLiAqLworIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9sZWIxMjgoQ29kZWRCaXRzdHJlYW1D b250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NF90IHZhbHVlKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgdWludDY0X3QgdmFsdWUsIHVp bnQ4X3QgYnl0ZV9sZW4pCisgeworLSAgICBpbnQgcG9zaXRpb24sIGVyciwgbGVuLCBpOworKyAg ICBpbnQgbGVuLCBpOworICAgICB1aW50OF90IGJ5dGU7CisgCistICAgIGxlbiA9IChhdl9sb2cy KHZhbHVlKSArIDcpIC8gNzsKKysgICAgQ0JTX1RSQUNFX1dSSVRFX1NUQVJUKCk7CisrCisrICAg IGlmIChieXRlX2xlbikKKysgICAgICAgIGF2X2Fzc2VydDAoYnl0ZV9sZW4gPj0gKGF2X2xvZzIo dmFsdWUpICsgNykgLyA3KTsKKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQorLSAgICAg ICAgcG9zaXRpb24gPSBwdXRfYml0c19jb3VudChwYmMpOworKyAgICBsZW4gPSBieXRlX2xlbiA/ IGJ5dGVfbGVuIDogKGF2X2xvZzIodmFsdWUpICsgNykgLyA3OworIAorICAgICBmb3IgKGkgPSAw OyBpIDwgbGVuOyBpKyspIHsKKy0gICAgICAgIGludCBzdWJzY3JpcHRbMl0gPSB7IDEsIGkgfTsK KysgICAgICAgIGlmIChwdXRfYml0c19sZWZ0KHBiYykgPCA4KQorKyAgICAgICAgICAgIHJldHVy biBBVkVSUk9SKEVOT1NQQyk7CisgCisgICAgICAgICBieXRlID0gdmFsdWUgPj4gKDcgKiBpKSAm IDB4N2Y7CisgICAgICAgICBpZiAoaSA8IGxlbiAtIDEpCisgICAgICAgICAgICAgYnl0ZSB8PSAw eDgwOworIAorLSAgICAgICAgZXJyID0gZmZfY2JzX3dyaXRlX3Vuc2lnbmVkKGN0eCwgcGJjLCA4 LCAibGViMTI4X2J5dGVbaV0iLCBzdWJzY3JpcHQsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnl0ZSwgMHgwMCwgMHhmZik7CistICAgICAgICBpZiAoZXJyIDwgMCkKKy0g ICAgICAgICAgICByZXR1cm4gZXJyOworKyAgICAgICAgcHV0X2JpdHMocGJjLCA4LCBieXRlKTsK KyAgICAgfQorIAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCistICAgICAgICBmZl9jYnNf dHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgTlVMTCwgIiIsIHZhbHVl KTsKKysgICAgQ0JTX1RSQUNFX1dSSVRFX0VORF9OT19TVUJTQ1JJUFRTKCk7CisgCisgICAgIHJl dHVybiAwOworIH0KK0BAIC0yMTIsMTIgKzE3MywxMSBAQCBzdGF0aWMgaW50IGNic19hdjFfcmVh ZF9ucyhDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywgdWludDMyX3Qg KndyaXRlX3RvKQorIHsKKyAgICAgdWludDMyX3QgbSwgdiwgZXh0cmFfYml0LCB2YWx1ZTsKKy0g ICAgaW50IHBvc2l0aW9uLCB3OworKyAgICBpbnQgdzsKKyAKKy0gICAgYXZfYXNzZXJ0MChuID4g MCk7CisrICAgIENCU19UUkFDRV9SRUFEX1NUQVJUKCk7CisgCistICAgIGlmIChjdHgtPnRyYWNl X2VuYWJsZSkKKy0gICAgICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKKysgICAg YXZfYXNzZXJ0MChuID4gMCk7CisgCisgICAgIHcgPSBhdl9sb2cyKG4pICsgMTsKKyAgICAgbSA9 ICgxIDw8IHcpIC0gbjsKK0BAIC0yNDAsMTggKzIwMCw3IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9y ZWFkX25zKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCisg ICAgICAgICB2YWx1ZSA9ICh2IDw8IDEpIC0gbSArIGV4dHJhX2JpdDsKKyAgICAgfQorIAorLSAg ICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKKy0gICAgICAgIGNoYXIgYml0c1szM107CistICAg ICAgICBpbnQgaTsKKy0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB3IC0gMTsgaSsrKQorLSAgICAg ICAgICAgIGJpdHNbaV0gPSAodiA+PiBpICYgMSkgPyAnMScgOiAnMCc7CistICAgICAgICBpZiAo diA+PSBtKQorLSAgICAgICAgICAgIGJpdHNbaSsrXSA9IGV4dHJhX2JpdCA/ICcxJyA6ICcwJzsK Ky0gICAgICAgIGJpdHNbaV0gPSAwOworLQorLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9l bGVtZW50KGN0eCwgcG9zaXRpb24sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmFtZSwgc3Vic2NyaXB0cywgYml0cywgdmFsdWUpOworLSAgICB9CisrICAgIENCU19UUkFD RV9SRUFEX0VORCgpOworIAorICAgICAqd3JpdGVfdG8gPSB2YWx1ZTsKKyAgICAgcmV0dXJuIDA7 CitAQCAtMjYyLDcgKzIxMSw4IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9ucyhDb2RlZEJp dHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIHVpbnQzMl90IHZhbHVlKQorIHsK KyAgICAgdWludDMyX3QgdywgbSwgdiwgZXh0cmFfYml0OworLSAgICBpbnQgcG9zaXRpb247Cisr CisrICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOworIAorICAgICBpZiAodmFsdWUgPiBuKSB7 CisgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICIlcyBvdXQgb2Yg cmFuZ2U6ICIKK0BAIC0yNzEsOSArMjIxLDYgQEAgc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX25z KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCisgICAgICAg ICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgfQorIAorLSAgICBpZiAoY3R4LT50 cmFjZV9lbmFibGUpCistICAgICAgICBwb3NpdGlvbiA9IHB1dF9iaXRzX2NvdW50KHBiYyk7Cist CisgICAgIHcgPSBhdl9sb2cyKG4pICsgMTsKKyAgICAgbSA9ICgxIDw8IHcpIC0gbjsKKyAKK0BA IC0yOTAsMTggKzIzNyw3IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9ucyhDb2RlZEJpdHN0 cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorICAgICAgICAgcHV0X2JpdHMo cGJjLCAxLCBleHRyYV9iaXQpOworICAgICB9CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJs ZSkgeworLSAgICAgICAgY2hhciBiaXRzWzMzXTsKKy0gICAgICAgIGludCBpOworLSAgICAgICAg Zm9yIChpID0gMDsgaSA8IHcgLSAxOyBpKyspCistICAgICAgICAgICAgYml0c1tpXSA9ICh2ID4+ IGkgJiAxKSA/ICcxJyA6ICcwJzsKKy0gICAgICAgIGlmICh2YWx1ZSA+PSBtKQorLSAgICAgICAg ICAgIGJpdHNbaSsrXSA9IGV4dHJhX2JpdCA/ICcxJyA6ICcwJzsKKy0gICAgICAgIGJpdHNbaV0g PSAwOworLQorLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRp b24sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0 cywgYml0cywgdmFsdWUpOworLSAgICB9CisrICAgIENCU19UUkFDRV9XUklURV9FTkQoKTsKKyAK KyAgICAgcmV0dXJuIDA7CisgfQorQEAgLTMxMSwzMyArMjQ3LDI0IEBAIHN0YXRpYyBpbnQgY2Jz X2F2MV9yZWFkX2luY3JlbWVudChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29u dGV4dCAqZ2JjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg Km5hbWUsIHVpbnQzMl90ICp3cml0ZV90bykKKyB7CisgICAgIHVpbnQzMl90IHZhbHVlOworLSAg ICBpbnQgcG9zaXRpb24sIGk7CistICAgIGNoYXIgYml0c1szM107CisgCistICAgIGF2X2Fzc2Vy dDAocmFuZ2VfbWluIDw9IHJhbmdlX21heCAmJiByYW5nZV9tYXggLSByYW5nZV9taW4gPCBzaXpl b2YoYml0cykgLSAxKTsKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQorLSAgICAgICAgcG9z aXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOworKyAgICBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgp OworKworKyAgICBhdl9hc3NlcnQwKHJhbmdlX21pbiA8PSByYW5nZV9tYXggJiYgcmFuZ2VfbWF4 IC0gcmFuZ2VfbWluIDwgMzIpOworIAorLSAgICBmb3IgKGkgPSAwLCB2YWx1ZSA9IHJhbmdlX21p bjsgdmFsdWUgPCByYW5nZV9tYXg7KSB7CisrICAgIGZvciAodmFsdWUgPSByYW5nZV9taW47IHZh bHVlIDwgcmFuZ2VfbWF4OykgeworICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IDEp IHsKKyAgICAgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJbnZh bGlkIGluY3JlbWVudCB2YWx1ZSBhdCAiCisgICAgICAgICAgICAgICAgICAgICIlczogYml0c3Ry ZWFtIGVuZGVkLlxuIiwgbmFtZSk7CisgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7CisgICAgICAgICB9CistICAgICAgICBpZiAoZ2V0X2JpdHMxKGdiYykpIHsKKy0gICAg ICAgICAgICBiaXRzW2krK10gPSAnMSc7CisrICAgICAgICBpZiAoZ2V0X2JpdHMxKGdiYykpCisg ICAgICAgICAgICAgKyt2YWx1ZTsKKy0gICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgYml0 c1tpKytdID0gJzAnOworKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIGJyZWFrOworLSAgICAg ICAgfQorICAgICB9CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAg Yml0c1tpXSA9IDA7CistICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBw b3NpdGlvbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBOVUxM LCBiaXRzLCB2YWx1ZSk7CistICAgIH0KKysgICAgQ0JTX1RSQUNFX1JFQURfRU5EX05PX1NVQlND UklQVFMoKTsKKyAKKyAgICAgKndyaXRlX3RvID0gdmFsdWU7CisgICAgIHJldHVybiAwOworQEAg LTM0OSw2ICsyNzYsOCBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfaW5jcmVtZW50KENvZGVk Qml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYgorIHsKKyAgICAgaW50IGxl bjsKKyAKKysgICAgQ0JTX1RSQUNFX1dSSVRFX1NUQVJUKCk7CisrCisgICAgIGF2X2Fzc2VydDAo cmFuZ2VfbWluIDw9IHJhbmdlX21heCAmJiByYW5nZV9tYXggLSByYW5nZV9taW4gPCAzMik7Cisg ICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgeworICAgICAg ICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAi CitAQCAtMzY0LDIzICsyOTMsMTEgQEAgc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX2luY3JlbWVu dChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGIKKyAgICAgaWYg KHB1dF9iaXRzX2xlZnQocGJjKSA8IGxlbikKKyAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1NQ Qyk7CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAgY2hhciBiaXRz WzMzXTsKKy0gICAgICAgIGludCBpOworLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsr KSB7CistICAgICAgICAgICAgaWYgKHJhbmdlX21pbiArIGkgPT0gdmFsdWUpCistICAgICAgICAg ICAgICAgIGJpdHNbaV0gPSAnMCc7CistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAg ICBiaXRzW2ldID0gJzEnOworLSAgICAgICAgfQorLSAgICAgICAgYml0c1tpXSA9IDA7CistICAg ICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwdXRfYml0c19jb3VudChwYmMp LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIE5VTEwsIGJpdHMs IHZhbHVlKTsKKy0gICAgfQorLQorICAgICBpZiAobGVuID4gMCkKKyAgICAgICAgIHB1dF9iaXRz KHBiYywgbGVuLCAoMSA8PCBsZW4pIC0gMSAtICh2YWx1ZSAhPSByYW5nZV9tYXgpKTsKKyAKKysg ICAgQ0JTX1RSQUNFX1dSSVRFX0VORF9OT19TVUJTQ1JJUFRTKCk7CisrCisgICAgIHJldHVybiAw OworIH0KKyAKK0BAIC0zODgsMTIgKzMwNSwxMCBAQCBzdGF0aWMgaW50IGNic19hdjFfcmVhZF9z dWJleHAoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmFuZ2VfbWF4LCBjb25zdCBj aGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1 YnNjcmlwdHMsIHVpbnQzMl90ICp3cml0ZV90bykKKyB7CistICAgIHVpbnQzMl90IHZhbHVlOwor LSAgICBpbnQgcG9zaXRpb24sIGVycjsKKy0gICAgdWludDMyX3QgbWF4X2xlbiwgbGVuLCByYW5n ZV9vZmZzZXQsIHJhbmdlX2JpdHM7CisrICAgIHVpbnQzMl90IHZhbHVlLCBtYXhfbGVuLCBsZW4s IHJhbmdlX29mZnNldCwgcmFuZ2VfYml0czsKKysgICAgaW50IGVycjsKKyAKKy0gICAgaWYgKGN0 eC0+dHJhY2VfZW5hYmxlKQorLSAgICAgICAgcG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMp OworKyAgICBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgpOworIAorICAgICBhdl9hc3NlcnQwKHJhbmdl X21heCA+IDApOworICAgICBtYXhfbGVuID0gYXZfbG9nMihyYW5nZV9tYXggLSAxKSAtIDM7CitA QCAtNDEyLDkgKzMyNyw4IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX3N1YmV4cChDb2RlZEJp dHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAorICAgICB9CisgCisgICAg IGlmIChsZW4gPCBtYXhfbGVuKSB7CistICAgICAgICBlcnIgPSBmZl9jYnNfcmVhZF91bnNpZ25l ZChjdHgsIGdiYywgcmFuZ2VfYml0cywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJzdWJleHBfYml0cyIsIE5VTEwsICZ2YWx1ZSwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDAsIE1BWF9VSU5UX0JJVFMocmFuZ2VfYml0cykpOworKyAgICAgICAgZXJy ID0gZmZfY2JzX3JlYWRfc2ltcGxlX3Vuc2lnbmVkKGN0eCwgZ2JjLCByYW5nZV9iaXRzLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWJleHBfYml0cyIsICZ2 YWx1ZSk7CisgICAgICAgICBpZiAoZXJyIDwgMCkKKyAgICAgICAgICAgICByZXR1cm4gZXJyOwor IAorQEAgLTQyNiw5ICszNDAsNyBAQCBzdGF0aWMgaW50IGNic19hdjFfcmVhZF9zdWJleHAoQ29k ZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKKyAgICAgfQorICAg ICB2YWx1ZSArPSByYW5nZV9vZmZzZXQ7CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkK Ky0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YnNjcmlwdHMsICIiLCB2 YWx1ZSk7CisrICAgIENCU19UUkFDRV9SRUFEX0VORF9WQUxVRV9PTkxZKCk7CisgCisgICAgICp3 cml0ZV90byA9IHZhbHVlOworICAgICByZXR1cm4gZXJyOworQEAgLTQzOCw5ICszNTAsMTEgQEAg c3RhdGljIGludCBjYnNfYXYxX3dyaXRlX3N1YmV4cChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0 eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDMyX3QgcmFuZ2VfbWF4LCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCB1aW50MzJfdCB2YWx1ZSkKKyB7 CistICAgIGludCBwb3NpdGlvbiwgZXJyOworKyAgICBpbnQgZXJyOworICAgICB1aW50MzJfdCBt YXhfbGVuLCBsZW4sIHJhbmdlX29mZnNldCwgcmFuZ2VfYml0czsKKyAKKysgICAgQ0JTX1RSQUNF X1dSSVRFX1NUQVJUKCk7CisrCisgICAgIGlmICh2YWx1ZSA+IHJhbmdlX21heCkgeworICAgICAg ICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAi CisgICAgICAgICAgICAgICAgIiUiUFJJdTMyIiwgYnV0IG11c3QgYmUgaW4gWzAsJSJQUkl1MzIi XS5cbiIsCitAQCAtNDQ4LDkgKzM2Miw2IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9zdWJl eHAoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKKyAgICAg ICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICB9CisgCistICAgIGlmIChjdHgt PnRyYWNlX2VuYWJsZSkKKy0gICAgICAgIHBvc2l0aW9uID0gcHV0X2JpdHNfY291bnQocGJjKTsK Ky0KKyAgICAgYXZfYXNzZXJ0MChyYW5nZV9tYXggPiAwKTsKKyAgICAgbWF4X2xlbiA9IGF2X2xv ZzIocmFuZ2VfbWF4IC0gMSkgLSAzOworIAorQEAgLTQ3NiwxMCArMzg3LDkgQEAgc3RhdGljIGlu dCBjYnNfYXYxX3dyaXRlX3N1YmV4cChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0 Q29udGV4dCAqcGJjLAorICAgICAgICAgcmV0dXJuIGVycjsKKyAKKyAgICAgaWYgKGxlbiA8IG1h eF9sZW4pIHsKKy0gICAgICAgIGVyciA9IGZmX2Nic193cml0ZV91bnNpZ25lZChjdHgsIHBiYywg cmFuZ2VfYml0cywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ViZXhw X2JpdHMiLCBOVUxMLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl IC0gcmFuZ2Vfb2Zmc2V0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs IE1BWF9VSU5UX0JJVFMocmFuZ2VfYml0cykpOworKyAgICAgICAgZXJyID0gZmZfY2JzX3dyaXRl X3NpbXBsZV91bnNpZ25lZChjdHgsIHBiYywgcmFuZ2VfYml0cywKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YmV4cF9iaXRzIiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgLSByYW5nZV9vZmZzZXQpOworICAg ICAgICAgaWYgKGVyciA8IDApCisgICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAKK0BAIC00OTEs OSArNDAxLDcgQEAgc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX3N1YmV4cChDb2RlZEJpdHN0cmVh bUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorICAgICAgICAgICAgIHJldHVybiBl cnI7CisgICAgIH0KKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQorLSAgICAgICAgZmZf Y2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgIiIsIHZhbHVlKTsKKysgICAg Q0JTX1RSQUNFX1dSSVRFX0VORF9WQUxVRV9PTkxZKCk7CisgCisgICAgIHJldHVybiBlcnI7Cisg fQorQEAgLTU0Niw4ICs0NTQsNiBAQCBzdGF0aWMgc2l6ZV90IGNic19hdjFfZ2V0X3BheWxvYWRf Ynl0ZXNfbGVmdChHZXRCaXRDb250ZXh0ICpnYmMpCisgCisgI2RlZmluZSBTVUJTQ1JJUFRTKHN1 YnMsIC4uLikgKHN1YnMgPiAwID8gKChpbnRbc3VicyArIDFdKXsgc3VicywgX19WQV9BUkdTX18g fSkgOiBOVUxMKQorIAorLSNkZWZpbmUgZmIod2lkdGgsIG5hbWUpIFwKKy0gICAgICAgIHhmKHdp ZHRoLCBuYW1lLCBjdXJyZW50LT5uYW1lLCAwLCBNQVhfVUlOVF9CSVRTKHdpZHRoKSwgMCwgKQor ICNkZWZpbmUgZmMod2lkdGgsIG5hbWUsIHJhbmdlX21pbiwgcmFuZ2VfbWF4KSBcCisgICAgICAg ICB4Zih3aWR0aCwgbmFtZSwgY3VycmVudC0+bmFtZSwgcmFuZ2VfbWluLCByYW5nZV9tYXgsIDAs ICkKKyAjZGVmaW5lIGZsYWcobmFtZSkgZmIoMSwgbmFtZSkKK0BAIC01NzMsNiArNDc5LDEzIEBA IHN0YXRpYyBzaXplX3QgY2JzX2F2MV9nZXRfcGF5bG9hZF9ieXRlc19sZWZ0KEdldEJpdENvbnRl eHQgKmdiYykKKyAjZGVmaW5lIFJFQURXUklURSByZWFkCisgI2RlZmluZSBSV0NvbnRleHQgR2V0 Qml0Q29udGV4dAorIAorKyNkZWZpbmUgZmIod2lkdGgsIG5hbWUpIGRvIHsgXAorKyAgICAgICAg dWludDMyX3QgdmFsdWU7IFwKKysgICAgICAgIENIRUNLKGZmX2Nic19yZWFkX3NpbXBsZV91bnNp Z25lZChjdHgsIHJ3LCB3aWR0aCwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICNuYW1lLCAmdmFsdWUpKTsgXAorKyAgICAgICAgY3VycmVudC0+bmFtZSA9IHZh bHVlOyBcCisrICAgIH0gd2hpbGUgKDApCisrCisgI2RlZmluZSB4Zih3aWR0aCwgbmFtZSwgdmFy LCByYW5nZV9taW4sIHJhbmdlX21heCwgc3VicywgLi4uKSBkbyB7IFwKKyAgICAgICAgIHVpbnQz Ml90IHZhbHVlOyBcCisgICAgICAgICBDSEVDSyhmZl9jYnNfcmVhZF91bnNpZ25lZChjdHgsIHJ3 LCB3aWR0aCwgI25hbWUsIFwKK0BAIC02NDUsNiArNTU4LDcgQEAgc3RhdGljIHNpemVfdCBjYnNf YXYxX2dldF9wYXlsb2FkX2J5dGVzX2xlZnQoR2V0Qml0Q29udGV4dCAqZ2JjKQorICN1bmRlZiBS RUFECisgI3VuZGVmIFJFQURXUklURQorICN1bmRlZiBSV0NvbnRleHQKKysjdW5kZWYgZmIKKyAj dW5kZWYgeGYKKyAjdW5kZWYgeHN1CisgI3VuZGVmIHV2bGMKK0BAIC02NjEsNiArNTc1LDExIEBA IHN0YXRpYyBzaXplX3QgY2JzX2F2MV9nZXRfcGF5bG9hZF9ieXRlc19sZWZ0KEdldEJpdENvbnRl eHQgKmdiYykKKyAjZGVmaW5lIFJFQURXUklURSB3cml0ZQorICNkZWZpbmUgUldDb250ZXh0IFB1 dEJpdENvbnRleHQKKyAKKysjZGVmaW5lIGZiKHdpZHRoLCBuYW1lKSBkbyB7IFwKKysgICAgICAg IENIRUNLKGZmX2Nic193cml0ZV9zaW1wbGVfdW5zaWduZWQoY3R4LCBydywgd2lkdGgsICNuYW1l LCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQt Pm5hbWUpKTsgXAorKyAgICB9IHdoaWxlICgwKQorKworICNkZWZpbmUgeGYod2lkdGgsIG5hbWUs IHZhciwgcmFuZ2VfbWluLCByYW5nZV9tYXgsIHN1YnMsIC4uLikgZG8geyBcCisgICAgICAgICBD SEVDSyhmZl9jYnNfd3JpdGVfdW5zaWduZWQoY3R4LCBydywgd2lkdGgsICNuYW1lLCBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VCU0NSSVBUUyhzdWJzLCBfX1ZBX0FS R1NfXyksIFwKK0BAIC03MDMsNyArNjIyLDcgQEAgc3RhdGljIHNpemVfdCBjYnNfYXYxX2dldF9w YXlsb2FkX2J5dGVzX2xlZnQoR2V0Qml0Q29udGV4dCAqZ2JjKQorICAgICB9IHdoaWxlICgwKQor IAorICNkZWZpbmUgbGViMTI4KG5hbWUpIGRvIHsgXAorLSAgICAgICAgQ0hFQ0soY2JzX2F2MV93 cml0ZV9sZWIxMjgoY3R4LCBydywgI25hbWUsIGN1cnJlbnQtPm5hbWUpKTsgXAorKyAgICAgICAg Q0hFQ0soY2JzX2F2MV93cml0ZV9sZWIxMjgoY3R4LCBydywgI25hbWUsIGN1cnJlbnQtPm5hbWUs IDApKTsgXAorICAgICB9IHdoaWxlICgwKQorIAorICNkZWZpbmUgaW5mZXIobmFtZSwgdmFsdWUp IGRvIHsgXAorQEAgLTcyMyw2ICs2NDIsNyBAQCBzdGF0aWMgc2l6ZV90IGNic19hdjFfZ2V0X3Bh eWxvYWRfYnl0ZXNfbGVmdChHZXRCaXRDb250ZXh0ICpnYmMpCisgI3VuZGVmIFdSSVRFCisgI3Vu ZGVmIFJFQURXUklURQorICN1bmRlZiBSV0NvbnRleHQKKysjdW5kZWYgZmIKKyAjdW5kZWYgeGYK KyAjdW5kZWYgeHN1CisgI3VuZGVmIHV2bGMKK0BAIC0xMDg2LDkgKzEwMDYsMTQgQEAgc3RhdGlj IGludCBjYnNfYXYxX3dyaXRlX29idShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwKKyAKKyAg ICAgaWYgKG9idS0+aGVhZGVyLm9idV9oYXNfc2l6ZV9maWVsZCkgeworICAgICAgICAgcGJjX3Rt cCA9ICpwYmM7CistICAgICAgICAvLyBBZGQgc3BhY2UgZm9yIHRoZSBzaXplIGZpZWxkIHRvIGZp bGwgbGF0ZXIuCistICAgICAgICBwdXRfYml0czMyKHBiYywgMCk7CistICAgICAgICBwdXRfYml0 czMyKHBiYywgMCk7CisrICAgICAgICBpZiAob2J1LT5vYnVfc2l6ZV9ieXRlX2xlbikgeworKyAg ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2J1LT5vYnVfc2l6ZV9ieXRlX2xlbjsgaSsr KQorKyAgICAgICAgICAgICAgICBwdXRfYml0cyhwYmMsIDgsIDApOworKyAgICAgICAgfSBlbHNl IHsKKysgICAgICAgICAgICAvLyBBZGQgc3BhY2UgZm9yIHRoZSBzaXplIGZpZWxkIHRvIGZpbGwg bGF0ZXIuCisrICAgICAgICAgICAgcHV0X2JpdHMzMihwYmMsIDApOworKyAgICAgICAgICAgIHB1 dF9iaXRzMzIocGJjLCAwKTsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICB0ZCA9IE5VTEw7 CitAQCAtMTIwOCw3ICsxMTMzLDcgQEAgc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX29idShDb2Rl ZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwKKyAgICAgZW5kX3BvcyAgIC89IDg7CisgCisgICAgICpw YmMgPSBwYmNfdG1wOworLSAgICBlcnIgPSBjYnNfYXYxX3dyaXRlX2xlYjEyOChjdHgsIHBiYywg Im9idV9zaXplIiwgb2J1LT5vYnVfc2l6ZSk7CisrICAgIGVyciA9IGNic19hdjFfd3JpdGVfbGVi MTI4KGN0eCwgcGJjLCAib2J1X3NpemUiLCBvYnUtPm9idV9zaXplLCBvYnUtPm9idV9zaXplX2J5 dGVfbGVuKTsKKyAgICAgaWYgKGVyciA8IDApCisgICAgICAgICBnb3RvIGVycm9yOworIAorQEAg LTEyMjUsOCArMTE1MCwxMSBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfb2J1KENvZGVkQml0 c3RyZWFtQ29udGV4dCAqY3R4LAorICAgICB9CisgCisgICAgIGlmIChvYnUtPm9idV9zaXplID4g MCkgeworLSAgICAgICAgbWVtbW92ZShwYmMtPmJ1ZiArIGRhdGFfcG9zLAorLSAgICAgICAgICAg ICAgICBwYmMtPmJ1ZiArIHN0YXJ0X3BvcywgaGVhZGVyX3NpemUpOworKyAgICAgICAgaWYgKCFv YnUtPm9idV9zaXplX2J5dGVfbGVuKSB7CisrICAgICAgICAgICAgb2J1LT5vYnVfc2l6ZV9ieXRl X2xlbiA9IHN0YXJ0X3BvcyAtIGRhdGFfcG9zOworKyAgICAgICAgICAgIG1lbW1vdmUocGJjLT5i dWYgKyBkYXRhX3BvcywKKysgICAgICAgICAgICAgICAgICAgIHBiYy0+YnVmICsgc3RhcnRfcG9z LCBoZWFkZXJfc2l6ZSk7CisrICAgICAgICB9CisgICAgICAgICBza2lwX3B1dF9ieXRlcyhwYmMs IGhlYWRlcl9zaXplKTsKKyAKKyAgICAgICAgIGlmICh0ZCkgeworZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvY2JzX2F2MS5oIGIvbGliYXZjb2RlYy9jYnNfYXYxLmgKK2luZGV4IDFmYzgwZGMuLmM1 ZGFlM2MgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL2Nic19hdjEuaAorKysrIGIvbGliYXZjb2Rl Yy9jYnNfYXYxLmgKK0BAIC0zOTIsNiArMzkyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQVYxUmF3T0JV IHsKKyAgICAgQVYxUmF3T0JVSGVhZGVyIGhlYWRlcjsKKyAKKyAgICAgc2l6ZV90IG9idV9zaXpl OworKyAgICB1aW50OF90IG9idV9zaXplX2J5dGVfbGVuOworIAorICAgICB1bmlvbiB7CisgICAg ICAgICBBVjFSYXdTZXF1ZW5jZUhlYWRlciBzZXF1ZW5jZV9oZWFkZXI7CitkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy9jYnNfYXYxX3N5bnRheF90ZW1wbGF0ZS5jIGIvbGliYXZjb2RlYy9jYnNfYXYx X3N5bnRheF90ZW1wbGF0ZS5jCitpbmRleCBlOTU5MjVhLi5jZjJlMjU5IDEwMDY0NAorLS0tIGEv bGliYXZjb2RlYy9jYnNfYXYxX3N5bnRheF90ZW1wbGF0ZS5jCisrKysgYi9saWJhdmNvZGVjL2Ni c19hdjFfc3ludGF4X3RlbXBsYXRlLmMKK0BAIC0xMDE4LDkgKzEwMTgsOSBAQCBzdGF0aWMgaW50 IEZVTkMocmVhZF90eF9tb2RlKShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUldDb250ZXh0 ICpydywKKyAgICAgaW50IGVycjsKKyAKKyAgICAgaWYgKHByaXYtPmNvZGVkX2xvc3NsZXNzKQor LSAgICAgICAgaW5mZXIodHhfbW9kZSwgMCk7CisrICAgICAgICBpbmZlcih0eF9tb2RlLCBBVjFf T05MWV80WDQpOworICAgICBlbHNlCistICAgICAgICBpbmNyZW1lbnQodHhfbW9kZSwgMSwgMik7 CisrICAgICAgICBpbmNyZW1lbnQodHhfbW9kZSwgQVYxX1RYX01PREVfTEFSR0VTVCwgQVYxX1RY X01PREVfU0VMRUNUKTsKKyAKKyAgICAgcmV0dXJuIDA7CisgfQorZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvY2JzX2JzZi5jIGIvbGliYXZjb2RlYy9jYnNfYnNmLmMKK2luZGV4IDA2OWY2ZTkuLmIy NTI4NTQgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL2Nic19ic2YuYworKysrIGIvbGliYXZjb2Rl Yy9jYnNfYnNmLmMKK0BAIC0xMjMsNiArMTIzLDExIEBAIGludCBmZl9jYnNfYnNmX2dlbmVyaWNf aW5pdChBVkJTRkNvbnRleHQgKmJzZiwgY29uc3QgQ0JTQlNGVHlwZSAqdHlwZSkKKyAgICAgaWYg KGVyciA8IDApCisgICAgICAgICByZXR1cm4gZXJyOworIAorKyAgICBjdHgtPm91dHB1dC0+dHJh Y2VfZW5hYmxlID0gMTsKKysgICAgY3R4LT5vdXRwdXQtPnRyYWNlX2xldmVsICA9IEFWX0xPR19U UkFDRTsKKysgICAgY3R4LT5vdXRwdXQtPnRyYWNlX2NvbnRleHQgPSBjdHgtPm91dHB1dDsKKysg ICAgY3R4LT5vdXRwdXQtPnRyYWNlX3dyaXRlX2NhbGxiYWNrID0gZmZfY2JzX3RyYWNlX3dyaXRl X2xvZzsKKysKKyAgICAgaWYgKGJzZi0+cGFyX2luLT5leHRyYWRhdGEpIHsKKyAgICAgICAgIGVy ciA9IGZmX2Nic19yZWFkX2V4dHJhZGF0YShjdHgtPmlucHV0LCBmcmFnLCBic2YtPnBhcl9pbik7 CisgICAgICAgICBpZiAoZXJyIDwgMCkgeworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzX2gy NjQ1LmMgYi9saWJhdmNvZGVjL2Nic19oMjY0NS5jCitpbmRleCA4MGU0ODgyLi4zNTVmNGQ1IDEw MDY0NAorLS0tIGEvbGliYXZjb2RlYy9jYnNfaDI2NDUuYworKysrIGIvbGliYXZjb2RlYy9jYnNf aDI2NDUuYworQEAgLTM0LDQxICszNCwzOCBAQCBzdGF0aWMgaW50IGNic19yZWFkX3VlX2dvbG9t YihDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICp3cml0ZV90bywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9taW4sIHVpbnQzMl90IHJhbmdlX21h eCkKKyB7CistICAgIHVpbnQzMl90IHZhbHVlOworLSAgICBpbnQgcG9zaXRpb24sIGksIGo7Cist ICAgIHVuc2lnbmVkIGludCBrOworLSAgICBjaGFyIGJpdHNbNjVdOworKyAgICB1aW50MzJfdCBs ZWFkaW5nX2JpdHMsIHZhbHVlOworKyAgICBpbnQgbWF4X2xlbmd0aCwgbGVhZGluZ196ZXJvZXM7 CisgCistICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKKysgICAgQ0JTX1RSQUNF X1JFQURfU1RBUlQoKTsKKyAKKy0gICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHsKKy0gICAg ICAgIGlmIChnZXRfYml0c19sZWZ0KGdiYykgPCBpICsgMSkgeworKyAgICBtYXhfbGVuZ3RoID0g RkZNSU4oZ2V0X2JpdHNfbGVmdChnYmMpLCAzMik7CisrCisrICAgIGxlYWRpbmdfYml0cyA9IHNo b3dfYml0c19sb25nKGdiYywgbWF4X2xlbmd0aCk7CisrICAgIGlmIChsZWFkaW5nX2JpdHMgPT0g MCkgeworKyAgICAgICAgaWYgKG1heF9sZW5ndGggPj0gMzIpIHsKKysgICAgICAgICAgICBhdl9s b2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHVlLWdvbG9tYiBjb2RlIGF0 ICIKKysgICAgICAgICAgICAgICAgICAgIiVzOiBtb3JlIHRoYW4gMzEgemVyb2VzLlxuIiwgbmFt ZSk7CisrICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisrICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwg IkludmFsaWQgdWUtZ29sb21iIGNvZGUgYXQgIgorICAgICAgICAgICAgICAgICAgICAiJXM6IGJp dHN0cmVhbSBlbmRlZC5cbiIsIG5hbWUpOworICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lO VkFMSUREQVRBOworICAgICAgICAgfQorLSAgICAgICAgayA9IGdldF9iaXRzMShnYmMpOworLSAg ICAgICAgYml0c1tpXSA9IGsgPyAnMScgOiAnMCc7CistICAgICAgICBpZiAoaykKKy0gICAgICAg ICAgICBicmVhazsKKyAgICAgfQorLSAgICBpZiAoaSA+PSAzMikgeworKworKyAgICBsZWFkaW5n X3plcm9lcyA9IG1heF9sZW5ndGggLSAxIC0gYXZfbG9nMihsZWFkaW5nX2JpdHMpOworKyAgICBz a2lwX2JpdHNfbG9uZyhnYmMsIGxlYWRpbmdfemVyb2VzKTsKKysKKysgICAgaWYgKGdldF9iaXRz X2xlZnQoZ2JjKSA8IGxlYWRpbmdfemVyb2VzICsgMSkgeworICAgICAgICAgYXZfbG9nKGN0eC0+ bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCB1ZS1nb2xvbWIgY29kZSBhdCAiCistICAg ICAgICAgICAgICAgIiVzOiBtb3JlIHRoYW4gMzEgemVyb2VzLlxuIiwgbmFtZSk7CisrICAgICAg ICAgICAgICAgIiVzOiBiaXRzdHJlYW0gZW5kZWQuXG4iLCBuYW1lKTsKKyAgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICB9CistICAgIHZhbHVlID0gMTsKKy0gICAgZm9y IChqID0gMDsgaiA8IGk7IGorKykgeworLSAgICAgICAgayA9IGdldF9iaXRzMShnYmMpOworLSAg ICAgICAgYml0c1tpICsgaiArIDFdID0gayA/ICcxJyA6ICcwJzsKKy0gICAgICAgIHZhbHVlID0g dmFsdWUgPDwgMSB8IGs7CistICAgIH0KKy0gICAgYml0c1tpICsgaiArIDFdID0gMDsKKy0gICAg LS12YWx1ZTsKKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQorLSAgICAgICAgZmZfY2Jz X3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sIG5hbWUsIHN1YnNjcmlwdHMsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0cywgdmFsdWUpOworKyAgICB2 YWx1ZSA9IGdldF9iaXRzX2xvbmcoZ2JjLCBsZWFkaW5nX3plcm9lcyArIDEpIC0gMTsKKysKKysg ICAgQ0JTX1RSQUNFX1JFQURfRU5EKCk7CisgCisgICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8 fCB2YWx1ZSA+IHJhbmdlX21heCkgeworICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZf TE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCitAQCAtODYsNDUgKzgzLDQ0IEBAIHN0YXRp YyBpbnQgY2JzX3JlYWRfc2VfZ29sb21iKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRC aXRDb250ZXh0ICpnYmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAq d3JpdGVfdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCByYW5nZV9t aW4sIGludDMyX3QgcmFuZ2VfbWF4KQorIHsKKysgICAgdWludDMyX3QgbGVhZGluZ19iaXRzLCB1 bnNpZ25lZF92YWx1ZTsKKysgICAgaW50IG1heF9sZW5ndGgsIGxlYWRpbmdfemVyb2VzOworICAg ICBpbnQzMl90IHZhbHVlOworLSAgICBpbnQgcG9zaXRpb24sIGksIGo7CistICAgIHVuc2lnbmVk IGludCBrOworLSAgICB1aW50MzJfdCB2OworLSAgICBjaGFyIGJpdHNbNjVdOworIAorLSAgICBw b3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdiYyk7CisrICAgIENCU19UUkFDRV9SRUFEX1NUQVJU KCk7CisgCistICAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7CistICAgICAgICBpZiAoZ2V0 X2JpdHNfbGVmdChnYmMpIDwgaSArIDEpIHsKKysgICAgbWF4X2xlbmd0aCA9IEZGTUlOKGdldF9i aXRzX2xlZnQoZ2JjKSwgMzIpOworKworKyAgICBsZWFkaW5nX2JpdHMgPSBzaG93X2JpdHNfbG9u ZyhnYmMsIG1heF9sZW5ndGgpOworKyAgICBpZiAobGVhZGluZ19iaXRzID09IDApIHsKKysgICAg ICAgIGlmIChtYXhfbGVuZ3RoID49IDMyKSB7CisrICAgICAgICAgICAgYXZfbG9nKGN0eC0+bG9n X2N0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBzZS1nb2xvbWIgY29kZSBhdCAiCisrICAgICAg ICAgICAgICAgICAgICIlczogbW9yZSB0aGFuIDMxIHplcm9lcy5cbiIsIG5hbWUpOworKyAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworKyAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHNl LWdvbG9tYiBjb2RlIGF0ICIKKyAgICAgICAgICAgICAgICAgICAgIiVzOiBiaXRzdHJlYW0gZW5k ZWQuXG4iLCBuYW1lKTsKKyAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsK KyAgICAgICAgIH0KKy0gICAgICAgIGsgPSBnZXRfYml0czEoZ2JjKTsKKy0gICAgICAgIGJpdHNb aV0gPSBrID8gJzEnIDogJzAnOworLSAgICAgICAgaWYgKGspCistICAgICAgICAgICAgYnJlYWs7 CisgICAgIH0KKy0gICAgaWYgKGkgPj0gMzIpIHsKKysKKysgICAgbGVhZGluZ196ZXJvZXMgPSBt YXhfbGVuZ3RoIC0gMSAtIGF2X2xvZzIobGVhZGluZ19iaXRzKTsKKysgICAgc2tpcF9iaXRzX2xv bmcoZ2JjLCBsZWFkaW5nX3plcm9lcyk7CisrCisrICAgIGlmIChnZXRfYml0c19sZWZ0KGdiYykg PCBsZWFkaW5nX3plcm9lcyArIDEpIHsKKyAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFW X0xPR19FUlJPUiwgIkludmFsaWQgc2UtZ29sb21iIGNvZGUgYXQgIgorLSAgICAgICAgICAgICAg ICIlczogbW9yZSB0aGFuIDMxIHplcm9lcy5cbiIsIG5hbWUpOworKyAgICAgICAgICAgICAgICIl czogYml0c3RyZWFtIGVuZGVkLlxuIiwgbmFtZSk7CisgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKKyAgICAgfQorLSAgICB2ID0gMTsKKy0gICAgZm9yIChqID0gMDsgaiA8IGk7 IGorKykgeworLSAgICAgICAgayA9IGdldF9iaXRzMShnYmMpOworLSAgICAgICAgYml0c1tpICsg aiArIDFdID0gayA/ICcxJyA6ICcwJzsKKy0gICAgICAgIHYgPSB2IDw8IDEgfCBrOworLSAgICB9 CistICAgIGJpdHNbaSArIGogKyAxXSA9IDA7CistICAgIGlmICh2ICYgMSkKKy0gICAgICAgIHZh bHVlID0gLShpbnQzMl90KSh2IC8gMik7CisrCisrICAgIHVuc2lnbmVkX3ZhbHVlID0gZ2V0X2Jp dHNfbG9uZyhnYmMsIGxlYWRpbmdfemVyb2VzICsgMSk7CisrCisrICAgIGlmICh1bnNpZ25lZF92 YWx1ZSAmIDEpCisrICAgICAgICB2YWx1ZSA9IC0oaW50MzJfdCkodW5zaWduZWRfdmFsdWUgLyAy KTsKKyAgICAgZWxzZQorLSAgICAgICAgdmFsdWUgPSB2IC8gMjsKKysgICAgICAgIHZhbHVlID0g dW5zaWduZWRfdmFsdWUgLyAyOworIAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCistICAg ICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgc3Vi c2NyaXB0cywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1 ZSk7CisrICAgIENCU19UUkFDRV9SRUFEX0VORCgpOworIAorICAgICBpZiAodmFsdWUgPCByYW5n ZV9taW4gfHwgdmFsdWUgPiByYW5nZV9tYXgpIHsKKyAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19j dHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgorQEAgLTE0NCw2ICsxNDAsOCBA QCBzdGF0aWMgaW50IGNic193cml0ZV91ZV9nb2xvbWIoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpj dHgsIFB1dEJpdENvbnRleHQgKnBiYywKKyB7CisgICAgIGludCBsZW47CisgCisrICAgIENCU19U UkFDRV9XUklURV9TVEFSVCgpOworKworICAgICBpZiAodmFsdWUgPCByYW5nZV9taW4gfHwgdmFs dWUgPiByYW5nZV9tYXgpIHsKKyAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19F UlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgorICAgICAgICAgICAgICAgICIlIlBSSXUzMiIsIGJ1 dCBtdXN0IGJlIGluIFslIlBSSXUzMiIsJSJQUkl1MzIiXS5cbiIsCitAQCAtMTU2LDI3ICsxNTQs MTQgQEAgc3RhdGljIGludCBjYnNfd3JpdGVfdWVfZ29sb21iKENvZGVkQml0c3RyZWFtQ29udGV4 dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCisgICAgIGlmIChwdXRfYml0c19sZWZ0KHBiYykg PCAyICogbGVuICsgMSkKKyAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1NQQyk7CisgCistICAg IGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAgY2hhciBiaXRzWzY1XTsKKy0gICAg ICAgIGludCBpOworLQorLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorLSAgICAg ICAgICAgIGJpdHNbaV0gPSAnMCc7CistICAgICAgICBiaXRzW2xlbl0gPSAnMSc7CistICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCistICAgICAgICAgICAgYml0c1tsZW4gKyBpICsg MV0gPSAodmFsdWUgKyAxKSA+PiAobGVuIC0gaSAtIDEpICYgMSA/ICcxJyA6ICcwJzsKKy0gICAg ICAgIGJpdHNbbGVuICsgbGVuICsgMV0gPSAwOworLQorLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5 bnRheF9lbGVtZW50KGN0eCwgcHV0X2JpdHNfY291bnQocGJjKSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCBiaXRzLCB2YWx1ZSk7CistICAg IH0KKy0KKyAgICAgcHV0X2JpdHMocGJjLCBsZW4sIDApOworICAgICBpZiAobGVuICsgMSA8IDMy KQorICAgICAgICAgcHV0X2JpdHMocGJjLCBsZW4gKyAxLCB2YWx1ZSArIDEpOworICAgICBlbHNl CisgICAgICAgICBwdXRfYml0czMyKHBiYywgdmFsdWUgKyAxKTsKKyAKKysgICAgQ0JTX1RSQUNF X1dSSVRFX0VORCgpOworKworICAgICByZXR1cm4gMDsKKyB9CisgCitAQCAtMTg4LDYgKzE3Myw4 IEBAIHN0YXRpYyBpbnQgY2JzX3dyaXRlX3NlX2dvbG9tYihDb2RlZEJpdHN0cmVhbUNvbnRleHQg KmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorICAgICBpbnQgbGVuOworICAgICB1aW50MzJfdCB1 dmFsdWU7CisgCisrICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOworKworICAgICBpZiAodmFs dWUgPCByYW5nZV9taW4gfHwgdmFsdWUgPiByYW5nZV9tYXgpIHsKKyAgICAgICAgIGF2X2xvZyhj dHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgorICAgICAgICAg ICAgICAgICIlIlBSSWQzMiIsIGJ1dCBtdXN0IGJlIGluIFslIlBSSWQzMiIsJSJQUklkMzIiXS5c biIsCitAQCAtMjA3LDI3ICsxOTQsMTQgQEAgc3RhdGljIGludCBjYnNfd3JpdGVfc2VfZ29sb21i KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCisgICAgIGlm IChwdXRfYml0c19sZWZ0KHBiYykgPCAyICogbGVuICsgMSkKKyAgICAgICAgIHJldHVybiBBVkVS Uk9SKEVOT1NQQyk7CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAg Y2hhciBiaXRzWzY1XTsKKy0gICAgICAgIGludCBpOworLQorLSAgICAgICAgZm9yIChpID0gMDsg aSA8IGxlbjsgaSsrKQorLSAgICAgICAgICAgIGJpdHNbaV0gPSAnMCc7CistICAgICAgICBiaXRz W2xlbl0gPSAnMSc7CistICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCistICAgICAg ICAgICAgYml0c1tsZW4gKyBpICsgMV0gPSAodXZhbHVlICsgMSkgPj4gKGxlbiAtIGkgLSAxKSAm IDEgPyAnMScgOiAnMCc7CistICAgICAgICBiaXRzW2xlbiArIGxlbiArIDFdID0gMDsKKy0KKy0g ICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHB1dF9iaXRzX2NvdW50KHBi YyksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0 cywgYml0cywgdmFsdWUpOworLSAgICB9CistCisgICAgIHB1dF9iaXRzKHBiYywgbGVuLCAwKTsK KyAgICAgaWYgKGxlbiArIDEgPCAzMikKKyAgICAgICAgIHB1dF9iaXRzKHBiYywgbGVuICsgMSwg dXZhbHVlICsgMSk7CisgICAgIGVsc2UKKyAgICAgICAgIHB1dF9iaXRzMzIocGJjLCB1dmFsdWUg KyAxKTsKKyAKKysgICAgQ0JTX1RSQUNFX1dSSVRFX0VORCgpOworKworICAgICByZXR1cm4gMDsK KyB9CisgCitAQCAtMjYxLDggKzIzNSw2IEBAIHN0YXRpYyBpbnQgY2JzX2gyNjVfcGF5bG9hZF9l eHRlbnNpb25fcHJlc2VudChHZXRCaXRDb250ZXh0ICpnYmMsIHVpbnQzMl90IHBheWxvCisgCisg I2RlZmluZSB1KHdpZHRoLCBuYW1lLCByYW5nZV9taW4sIHJhbmdlX21heCkgXAorICAgICAgICAg eHUod2lkdGgsIG5hbWUsIGN1cnJlbnQtPm5hbWUsIHJhbmdlX21pbiwgcmFuZ2VfbWF4LCAwLCAp CistI2RlZmluZSB1Yih3aWR0aCwgbmFtZSkgXAorLSAgICAgICAgeHUod2lkdGgsIG5hbWUsIGN1 cnJlbnQtPm5hbWUsIDAsIE1BWF9VSU5UX0JJVFMod2lkdGgpLCAwLCApCisgI2RlZmluZSBmbGFn KG5hbWUpIHViKDEsIG5hbWUpCisgI2RlZmluZSB1ZShuYW1lLCByYW5nZV9taW4sIHJhbmdlX21h eCkgXAorICAgICAgICAgeHVlKG5hbWUsIGN1cnJlbnQtPm5hbWUsIHJhbmdlX21pbiwgcmFuZ2Vf bWF4LCAwLCApCitAQCAtMjk4LDYgKzI3MCwxMiBAQCBzdGF0aWMgaW50IGNic19oMjY1X3BheWxv YWRfZXh0ZW5zaW9uX3ByZXNlbnQoR2V0Qml0Q29udGV4dCAqZ2JjLCB1aW50MzJfdCBwYXlsbwor ICNkZWZpbmUgUkVBRFdSSVRFIHJlYWQKKyAjZGVmaW5lIFJXQ29udGV4dCBHZXRCaXRDb250ZXh0 CisgCisrI2RlZmluZSB1Yih3aWR0aCwgbmFtZSkgZG8geyBcCisrICAgICAgICB1aW50MzJfdCB2 YWx1ZTsgXAorKyAgICAgICAgQ0hFQ0soZmZfY2JzX3JlYWRfc2ltcGxlX3Vuc2lnbmVkKGN0eCwg cncsIHdpZHRoLCAjbmFtZSwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZ2YWx1ZSkpOyBcCisrICAgICAgICBjdXJyZW50LT5uYW1lID0gdmFsdWU7IFwKKysg ICAgfSB3aGlsZSAoMCkKKyAjZGVmaW5lIHh1KHdpZHRoLCBuYW1lLCB2YXIsIHJhbmdlX21pbiwg cmFuZ2VfbWF4LCBzdWJzLCAuLi4pIGRvIHsgXAorICAgICAgICAgdWludDMyX3QgdmFsdWU7IFwK KyAgICAgICAgIENIRUNLKGZmX2Nic19yZWFkX3Vuc2lnbmVkKGN0eCwgcncsIHdpZHRoLCAjbmFt ZSwgXAorQEAgLTM3Miw2ICszNTAsNyBAQCBzdGF0aWMgaW50IGNic19oMjY0NV9yZWFkX21vcmVf cmJzcF9kYXRhKEdldEJpdENvbnRleHQgKmdiYykKKyAjdW5kZWYgUkVBRAorICN1bmRlZiBSRUFE V1JJVEUKKyAjdW5kZWYgUldDb250ZXh0CisrI3VuZGVmIHViCisgI3VuZGVmIHh1CisgI3VuZGVm IHhpCisgI3VuZGVmIHh1ZQorQEAgLTM4Nyw2ICszNjYsMTEgQEAgc3RhdGljIGludCBjYnNfaDI2 NDVfcmVhZF9tb3JlX3Jic3BfZGF0YShHZXRCaXRDb250ZXh0ICpnYmMpCisgI2RlZmluZSBSRUFE V1JJVEUgd3JpdGUKKyAjZGVmaW5lIFJXQ29udGV4dCBQdXRCaXRDb250ZXh0CisgCisrI2RlZmlu ZSB1Yih3aWR0aCwgbmFtZSkgZG8geyBcCisrICAgICAgICB1aW50MzJfdCB2YWx1ZSA9IGN1cnJl bnQtPm5hbWU7IFwKKysgICAgICAgIENIRUNLKGZmX2Nic193cml0ZV9zaW1wbGVfdW5zaWduZWQo Y3R4LCBydywgd2lkdGgsICNuYW1lLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZhbHVlKSk7IFwKKysgICAgfSB3aGlsZSAoMCkKKyAjZGVmaW5lIHh1KHdp ZHRoLCBuYW1lLCB2YXIsIHJhbmdlX21pbiwgcmFuZ2VfbWF4LCBzdWJzLCAuLi4pIGRvIHsgXAor ICAgICAgICAgdWludDMyX3QgdmFsdWUgPSB2YXI7IFwKKyAgICAgICAgIENIRUNLKGZmX2Nic193 cml0ZV91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwKK0BAIC00NTAsNiArNDM0LDcg QEAgc3RhdGljIGludCBjYnNfaDI2NDVfcmVhZF9tb3JlX3Jic3BfZGF0YShHZXRCaXRDb250ZXh0 ICpnYmMpCisgI3VuZGVmIFdSSVRFCisgI3VuZGVmIFJFQURXUklURQorICN1bmRlZiBSV0NvbnRl eHQKKysjdW5kZWYgdWIKKyAjdW5kZWYgeHUKKyAjdW5kZWYgeGkKKyAjdW5kZWYgeHVlCitkaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy9jYnNfaW50ZXJuYWwuaCBiL2xpYmF2Y29kZWMvY2JzX2ludGVy bmFsLmgKK2luZGV4IGU1ODVjNzcuLjYwZTMxZWIgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL2Ni c19pbnRlcm5hbC5oCisrKysgYi9saWJhdmNvZGVjL2Nic19pbnRlcm5hbC5oCitAQCAtMTUxLDI0 ICsxNTEsMjkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29kZWRCaXRzdHJlYW1UeXBlIHsKKyB2b2lkIGZm X2Nic190cmFjZV9oZWFkZXIoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOworIAorLXZvaWQgZmZfY2JzX3RyYWNl X3N5bnRheF9lbGVtZW50KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBpbnQgcG9zaXRpb24s CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY29u c3QgaW50ICpzdWJzY3JpcHRzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKmJpdHN0cmluZywgaW50NjRfdCB2YWx1ZSk7CistCisgCisgLy8gSGVscGVyIGZ1 bmN0aW9ucyBmb3IgcmVhZC93cml0ZSBvZiBjb21tb24gYml0c3RyZWFtIGVsZW1lbnRzLCBpbmNs dWRpbmcKKy0vLyBnZW5lcmF0aW9uIG9mIHRyYWNlIG91dHB1dC4KKysvLyBnZW5lcmF0aW9uIG9m IHRyYWNlIG91dHB1dC4gVGhlIHNpbXBsZSBmdW5jdGlvbnMgYXJlIGVxdWl2YWxlbnQgdG8KKysv LyB0aGVpciBub24tc2ltcGxlIGNvdW50ZXJwYXJ0cyBleGNlcHQgdGhhdCB0aGVpciByYW5nZSBp cyB1bnJlc3RyaWN0ZWQKKysvLyAoaS5lLiBvbmx5IGxpbWl0ZWQgYnkgdGhlIGFtb3VudCBvZiBi aXRzIHVzZWQpIGFuZCB0aGV5IGxhY2sKKysvLyB0aGUgYWJpbGl0eSB0byB1c2Ugc3Vic2NyaXB0 cy4KKyAKKyBpbnQgZmZfY2JzX3JlYWRfdW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpj dHgsIEdldEJpdENvbnRleHQgKmdiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdp ZHRoLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp bnQgKnN1YnNjcmlwdHMsIHVpbnQzMl90ICp3cml0ZV90bywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgcmFuZ2VfbWluLCB1aW50MzJfdCByYW5nZV9tYXgpOworIAorK2ludCBm Zl9jYnNfcmVhZF9zaW1wbGVfdW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdl dEJpdENvbnRleHQgKmdiYywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3 aWR0aCwgY29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgKndyaXRlX3RvKTsKKysKKyBpbnQgZmZf Y2JzX3dyaXRlX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250 ZXh0ICpwYmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGNvbnN0IGNo YXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlw dHMsIHVpbnQzMl90IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg cmFuZ2VfbWluLCB1aW50MzJfdCByYW5nZV9tYXgpOworIAorK2ludCBmZl9jYnNfd3JpdGVfc2lt cGxlX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpw YmMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBjb25zdCBj aGFyICpuYW1lLCB1aW50MzJfdCB2YWx1ZSk7CisrCisgaW50IGZmX2Nic19yZWFkX3NpZ25lZChD b2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAorICAgICAgICAg ICAgICAgICAgICAgICAgaW50IHdpZHRoLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCBpbnQzMl90ICp3cml0ZV90bywKK0BA IC0xOTEsNiArMTk2LDg3IEBAIGludCBmZl9jYnNfd3JpdGVfc2lnbmVkKENvZGVkQml0c3RyZWFt Q29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCisgLy8gcmFuZ2VfbWluIGluIHRoZSBh Ym92ZSBmdW5jdGlvbnMuCisgI2RlZmluZSBNSU5fSU5UX0JJVFMobGVuZ3RoKSAoLShJTlQ2NF9D KDEpIDw8ICgobGVuZ3RoKSAtIDEpKSkKKyAKKysKKysvLyBTdGFydCBvZiBhIHN5bnRheCBlbGVt ZW50IGR1cmluZyByZWFkIHRyYWNpbmcuCisrI2RlZmluZSBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgp IFwKKysgICAgR2V0Qml0Q29udGV4dCB0cmFjZV9zdGFydDsgXAorKyAgICBkbyB7IFwKKysgICAg ICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgXAorKyAgICAgICAgICAgIHRyYWNlX3N0YXJ0ID0g KmdiYzsgXAorKyAgICB9IHdoaWxlICgwKQorKworKy8vIEVuZCBvZiBhIHN5bnRheCBlbGVtZW50 IGZvciB0cmFjaW5nLCBtYWtlIGNhbGxiYWNrLgorKyNkZWZpbmUgQ0JTX1RSQUNFX1JFQURfRU5E KCkgXAorKyAgICBkbyB7IFwKKysgICAgICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeyBcCisr ICAgICAgICAgICAgaW50IHN0YXJ0X3Bvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQoJnRyYWNlX3N0 YXJ0KTsgXAorKyAgICAgICAgICAgIGludCBlbmRfcG9zaXRpb24gICA9IGdldF9iaXRzX2NvdW50 KGdiYyk7IFwKKysgICAgICAgICAgICBhdl9hc3NlcnQwKHN0YXJ0X3Bvc2l0aW9uIDw9IGVuZF9w b3NpdGlvbik7IFwKKysgICAgICAgICAgICBjdHgtPnRyYWNlX3JlYWRfY2FsbGJhY2soY3R4LT50 cmFjZV9jb250ZXh0LCAmdHJhY2Vfc3RhcnQsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZW5kX3Bvc2l0aW9uIC0gc3RhcnRfcG9zaXRpb24sIFwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgdmFsdWUpOyBcCisr ICAgICAgICB9IFwKKysgICAgfSB3aGlsZSAoMCkKKysKKysvLyBFbmQgb2YgYSBzeW50YXggZWxl bWVudCB3aXRoIG5vIHN1YnNjcmlwdCBlbnRyaWVzLgorKyNkZWZpbmUgQ0JTX1RSQUNFX1JFQURf RU5EX05PX1NVQlNDUklQVFMoKSBcCisrICAgIGRvIHsgXAorKyAgICAgICAgY29uc3QgaW50ICpz dWJzY3JpcHRzID0gTlVMTDsgXAorKyAgICAgICAgQ0JTX1RSQUNFX1JFQURfRU5EKCk7IFwKKysg ICAgfSB3aGlsZSAoMCkKKysKKysvLyBFbmQgb2YgYSBzeW50YXggZWxlbWVudCB3aGljaCBpcyBt YWRlIHVwIG9mIHN1YmVsZW1lbnRzIHdoaWNoCisrLy8gYXJlIGFsZWFkeSB0cmFjZWQsIHNvIHdl IGFyZSBvbmx5IHNob3dpbmcgdGhlIHZhbHVlLgorKyNkZWZpbmUgQ0JTX1RSQUNFX1JFQURfRU5E X1ZBTFVFX09OTFkoKSBcCisrICAgIGRvIHsgXAorKyAgICAgICAgaWYgKGN0eC0+dHJhY2VfZW5h YmxlKSB7IFwKKysgICAgICAgICAgICBjdHgtPnRyYWNlX3JlYWRfY2FsbGJhY2soY3R4LT50cmFj ZV9jb250ZXh0LCAmdHJhY2Vfc3RhcnQsIDAsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgdmFsdWUpOyBcCisrICAgICAgICB9IFwKKysg ICAgfSB3aGlsZSAoMCkKKysKKysvLyBTdGFydCBvZiBhIHN5bnRheCBlbGVtZW50IGR1cmluZyB3 cml0ZSB0cmFjaW5nLgorKyNkZWZpbmUgQ0JTX1RSQUNFX1dSSVRFX1NUQVJUKCkgXAorKyAgICBp bnQgc3RhcnRfcG9zaXRpb247IFwKKysgICAgZG8geyBcCisrICAgICAgICBpZiAoY3R4LT50cmFj ZV9lbmFibGUpIFwKKysgICAgICAgICAgICBzdGFydF9wb3NpdGlvbiA9IHB1dF9iaXRzX2NvdW50 KHBiYyk7OyBcCisrICAgIH0gd2hpbGUgKDApCisrCisrLy8gRW5kIG9mIGEgc3ludGF4IGVsZW1l bnQgZm9yIHRyYWNpbmcsIG1ha2UgY2FsbGJhY2suCisrI2RlZmluZSBDQlNfVFJBQ0VfV1JJVEVf RU5EKCkgXAorKyAgICBkbyB7IFwKKysgICAgICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeyBc CisrICAgICAgICAgICAgaW50IGVuZF9wb3NpdGlvbiAgID0gcHV0X2JpdHNfY291bnQocGJjKTsg XAorKyAgICAgICAgICAgIGF2X2Fzc2VydDAoc3RhcnRfcG9zaXRpb24gPD0gZW5kX3Bvc2l0aW9u KTsgXAorKyAgICAgICAgICAgIGN0eC0+dHJhY2Vfd3JpdGVfY2FsbGJhY2soY3R4LT50cmFjZV9j b250ZXh0LCBwYmMsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu ZF9wb3NpdGlvbiAtIHN0YXJ0X3Bvc2l0aW9uLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCB2YWx1ZSk7IFwKKysgICAgICAgIH0gXAor KyAgICB9IHdoaWxlICgwKQorKworKy8vIEVuZCBvZiBhIHN5bnRheCBlbGVtZW50IHdpdGggbm8g c3Vic2NyaXB0IGVudHJpZXMuCisrI2RlZmluZSBDQlNfVFJBQ0VfV1JJVEVfRU5EX05PX1NVQlND UklQVFMoKSBcCisrICAgIGRvIHsgXAorKyAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzID0g TlVMTDsgXAorKyAgICAgICAgQ0JTX1RSQUNFX1dSSVRFX0VORCgpOyBcCisrICAgIH0gd2hpbGUg KDApCisrCisrLy8gRW5kIG9mIGEgc3ludGF4IGVsZW1lbnQgd2hpY2ggaXMgbWFkZSB1cCBvZiBz dWJlbGVtZW50cyB3aGljaCBhcmUKKysvLyBhbGVhZHkgdHJhY2VkLCBzbyB3ZSBhcmUgb25seSBz aG93aW5nIHRoZSB2YWx1ZS4gIFRoaXMgZm9yZ2VzIGEKKysvLyBQdXRCaXRDb250ZXh0IHRvIHBv aW50IHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgc3RhcnQgb2YgdGhlIHN5bnRheAorKy8vIGVsZW1l bnQsIGJ1dCB0aGUgb3RoZXIgc3RhdGUgZG9lc24ndCBtYXR0ZXIgYmVjYXVzZSBsZW5ndGggaXMg emVyby4KKysjZGVmaW5lIENCU19UUkFDRV9XUklURV9FTkRfVkFMVUVfT05MWSgpIFwKKysgICAg ZG8geyBcCisrICAgICAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsgXAorKyAgICAgICAgICAg IFB1dEJpdENvbnRleHQgdG1wOyBcCisrICAgICAgICAgICAgaW5pdF9wdXRfYml0cygmdG1wLCBw YmMtPmJ1Ziwgc3RhcnRfcG9zaXRpb24pOyBcCisrICAgICAgICAgICAgc2tpcF9wdXRfYml0cygm dG1wLCBzdGFydF9wb3NpdGlvbik7IFwKKysgICAgICAgICAgICBjdHgtPnRyYWNlX3dyaXRlX2Nh bGxiYWNrKGN0eC0+dHJhY2VfY29udGV4dCwgJnRtcCwgMCwgXAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgdmFsdWUpOyBcCisrICAgICAg ICB9IFwKKysgICAgfSB3aGlsZSAoMCkKKysKKyAjZGVmaW5lIFRZUEVfTElTVCguLi4pIHsgX19W QV9BUkdTX18gfQorICNkZWZpbmUgQ0JTX1VOSVRfVFlQRV9QT0QodHlwZV8sIHN0cnVjdHVyZSkg eyBcCisgICAgICAgICAubmJfdW5pdF90eXBlcyAgPSAxLCBcCitkaWZmIC0tZ2l0IGEvbGliYXZj b2RlYy9jYnNfbXBlZzIuYyBiL2xpYmF2Y29kZWMvY2JzX21wZWcyLmMKK2luZGV4IDA0YjBjN2Yu LjM3ZmMyOGEgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL2Nic19tcGVnMi5jCisrKysgYi9saWJh dmNvZGVjL2Nic19tcGVnMi5jCitAQCAtNDAsOCArNDAsNiBAQAorIAorICNkZWZpbmUgU1VCU0NS SVBUUyhzdWJzLCAuLi4pIChzdWJzID4gMCA/ICgoaW50W3N1YnMgKyAxXSl7IHN1YnMsIF9fVkFf QVJHU19fIH0pIDogTlVMTCkKKyAKKy0jZGVmaW5lIHVpKHdpZHRoLCBuYW1lKSBcCistICAgICAg ICB4dWkod2lkdGgsIG5hbWUsIGN1cnJlbnQtPm5hbWUsIDAsIE1BWF9VSU5UX0JJVFMod2lkdGgp LCAwLCApCisgI2RlZmluZSB1aXIod2lkdGgsIG5hbWUpIFwKKyAgICAgICAgIHh1aSh3aWR0aCwg bmFtZSwgY3VycmVudC0+bmFtZSwgMSwgTUFYX1VJTlRfQklUUyh3aWR0aCksIDAsICkKKyAjZGVm aW5lIHVpcyh3aWR0aCwgbmFtZSwgc3VicywgLi4uKSBcCitAQCAtNjUsNiArNjMsMTIgQEAKKyAj ZGVmaW5lIFJFQURXUklURSByZWFkCisgI2RlZmluZSBSV0NvbnRleHQgR2V0Qml0Q29udGV4dAor IAorKyNkZWZpbmUgdWkod2lkdGgsIG5hbWUpIGRvIHsgXAorKyAgICAgICAgdWludDMyX3QgdmFs dWU7IFwKKysgICAgICAgIENIRUNLKGZmX2Nic19yZWFkX3NpbXBsZV91bnNpZ25lZChjdHgsIHJ3 LCB3aWR0aCwgI25hbWUsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmdmFsdWUpKTsgXAorKyAgICAgICAgY3VycmVudC0+bmFtZSA9IHZhbHVlOyBcCisrICAg IH0gd2hpbGUgKDApCisgI2RlZmluZSB4dWlhKHdpZHRoLCBzdHJpbmcsIHZhciwgcmFuZ2VfbWlu LCByYW5nZV9tYXgsIHN1YnMsIC4uLikgZG8geyBcCisgICAgICAgICB1aW50MzJfdCB2YWx1ZTsg XAorICAgICAgICAgQ0hFQ0soZmZfY2JzX3JlYWRfdW5zaWduZWQoY3R4LCBydywgd2lkdGgsIHN0 cmluZywgXAorQEAgLTk1LDYgKzk5LDcgQEAKKyAjdW5kZWYgUkVBRAorICN1bmRlZiBSRUFEV1JJ VEUKKyAjdW5kZWYgUldDb250ZXh0CisrI3VuZGVmIHVpCisgI3VuZGVmIHh1aWEKKyAjdW5kZWYg eHNpCisgI3VuZGVmIG5leHRiaXRzCitAQCAtMTA1LDYgKzExMCwxMSBAQAorICNkZWZpbmUgUkVB RFdSSVRFIHdyaXRlCisgI2RlZmluZSBSV0NvbnRleHQgUHV0Qml0Q29udGV4dAorIAorKyNkZWZp bmUgdWkod2lkdGgsIG5hbWUpIGRvIHsgXAorKyAgICAgICAgQ0hFQ0soZmZfY2JzX3dyaXRlX3Np bXBsZV91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC0+bmFtZSkpOyBcCisrICAgIH0gd2hp bGUgKDApCisrCisgI2RlZmluZSB4dWlhKHdpZHRoLCBzdHJpbmcsIHZhciwgcmFuZ2VfbWluLCBy YW5nZV9tYXgsIHN1YnMsIC4uLikgZG8geyBcCisgICAgICAgICBDSEVDSyhmZl9jYnNfd3JpdGVf dW5zaWduZWQoY3R4LCBydywgd2lkdGgsIHN0cmluZywgXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNVQlNDUklQVFMoc3VicywgX19WQV9BUkdTX18pLCBcCitAQCAtMTM0 LDYgKzE0NCw3IEBACisgI3VuZGVmIFdSSVRFCisgI3VuZGVmIFJFQURXUklURQorICN1bmRlZiBS V0NvbnRleHQKKysjdW5kZWYgdWkKKyAjdW5kZWYgeHVpYQorICN1bmRlZiB4c2kKKyAjdW5kZWYg bmV4dGJpdHMKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Nic192cDkuYyBiL2xpYmF2Y29kZWMv Y2JzX3ZwOS5jCitpbmRleCAxODRmZGNhLi44MTZkMDZkIDEwMDY0NAorLS0tIGEvbGliYXZjb2Rl Yy9jYnNfdnA5LmMKKysrKyBiL2xpYmF2Y29kZWMvY2JzX3ZwOS5jCitAQCAtMjgsMTEgKzI4LDEw IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV9yZWFkX3MoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgs IEdldEJpdENvbnRleHQgKmdiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu dCAqc3Vic2NyaXB0cywgaW50MzJfdCAqd3JpdGVfdG8pCisgeworICAgICB1aW50MzJfdCBtYWdu aXR1ZGU7CistICAgIGludCBwb3NpdGlvbiwgc2lnbjsKKysgICAgaW50IHNpZ247CisgICAgIGlu dDMyX3QgdmFsdWU7CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKKy0gICAgICAgIHBv c2l0aW9uID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKKysgICAgQ0JTX1RSQUNFX1JFQURfU1RBUlQo KTsKKyAKKyAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IHdpZHRoICsgMSkgeworICAgICAg ICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBzaWduZWQgdmFs dWUgYXQgIgorQEAgLTQ0LDE3ICs0Myw3IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV9yZWFkX3MoQ29k ZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKKyAgICAgc2lnbiAg ICAgID0gZ2V0X2JpdHMxKGdiYyk7CisgICAgIHZhbHVlICAgICA9IHNpZ24gPyAtKGludDMyX3Qp bWFnbml0dWRlIDogbWFnbml0dWRlOworIAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsK Ky0gICAgICAgIGNoYXIgYml0c1szM107CistICAgICAgICBpbnQgaTsKKy0gICAgICAgIGZvciAo aSA9IDA7IGkgPCB3aWR0aDsgaSsrKQorLSAgICAgICAgICAgIGJpdHNbaV0gPSBtYWduaXR1ZGUg Pj4gKHdpZHRoIC0gaSAtIDEpICYgMSA/ICcxJyA6ICcwJzsKKy0gICAgICAgIGJpdHNbaV0gPSBz aWduID8gJzEnIDogJzAnOworLSAgICAgICAgYml0c1tpICsgMV0gPSAwOworLQorLSAgICAgICAg ZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sIG5hbWUsIHN1YnNjcmlw dHMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0cywgdmFsdWUpOwor LSAgICB9CisrICAgIENCU19UUkFDRV9SRUFEX0VORCgpOworIAorICAgICAqd3JpdGVfdG8gPSB2 YWx1ZTsKKyAgICAgcmV0dXJuIDA7CitAQCAtNjcsMjcgKzU2LDE5IEBAIHN0YXRpYyBpbnQgY2Jz X3ZwOV93cml0ZV9zKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpw YmMsCisgICAgIHVpbnQzMl90IG1hZ25pdHVkZTsKKyAgICAgaW50IHNpZ247CisgCisrICAgIENC U19UUkFDRV9XUklURV9TVEFSVCgpOworKworICAgICBpZiAocHV0X2JpdHNfbGVmdChwYmMpIDwg d2lkdGggKyAxKQorICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BDKTsKKyAKKyAgICAgc2ln biAgICAgID0gdmFsdWUgPCAwOworICAgICBtYWduaXR1ZGUgPSBzaWduID8gLXZhbHVlIDogdmFs dWU7CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAgY2hhciBiaXRz WzMzXTsKKy0gICAgICAgIGludCBpOworLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBp KyspCistICAgICAgICAgICAgYml0c1tpXSA9IG1hZ25pdHVkZSA+PiAod2lkdGggLSBpIC0gMSkg JiAxID8gJzEnIDogJzAnOworLSAgICAgICAgYml0c1tpXSA9IHNpZ24gPyAnMScgOiAnMCc7Cist ICAgICAgICBiaXRzW2kgKyAxXSA9IDA7CistCistICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4 X2VsZW1lbnQoY3R4LCBwdXRfYml0c19jb3VudChwYmMpLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5hbWUsIHN1YnNjcmlwdHMsIGJpdHMsIHZhbHVlKTsKKy0gICAgfQor LQorICAgICBwdXRfYml0cyhwYmMsIHdpZHRoLCBtYWduaXR1ZGUpOworICAgICBwdXRfYml0cyhw YmMsIDEsIHNpZ24pOworIAorKyAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EKCk7CisrCisgICAgIHJl dHVybiAwOworIH0KKyAKK0BAIC05NiwzMiArNzcsMjQgQEAgc3RhdGljIGludCBjYnNfdnA5X3Jl YWRfaW5jcmVtZW50KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpn YmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwg dWludDMyX3QgKndyaXRlX3RvKQorIHsKKyAgICAgdWludDMyX3QgdmFsdWU7CistICAgIGludCBw b3NpdGlvbiwgaTsKKy0gICAgY2hhciBiaXRzWzhdOworIAorLSAgICBhdl9hc3NlcnQwKHJhbmdl X21pbiA8PSByYW5nZV9tYXggJiYgcmFuZ2VfbWF4IC0gcmFuZ2VfbWluIDwgc2l6ZW9mKGJpdHMp IC0gMSk7CistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKKy0gICAgICAgIHBvc2l0aW9uID0g Z2V0X2JpdHNfY291bnQoZ2JjKTsKKysgICAgQ0JTX1RSQUNFX1JFQURfU1RBUlQoKTsKKysKKysg ICAgYXZfYXNzZXJ0MChyYW5nZV9taW4gPD0gcmFuZ2VfbWF4ICYmIHJhbmdlX21heCAtIHJhbmdl X21pbiA8IDMyKTsKKyAKKy0gICAgZm9yIChpID0gMCwgdmFsdWUgPSByYW5nZV9taW47IHZhbHVl IDwgcmFuZ2VfbWF4OykgeworKyAgICBmb3IgKHZhbHVlID0gcmFuZ2VfbWluOyB2YWx1ZSA8IHJh bmdlX21heDspIHsKKyAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiYykgPCAxKSB7CisgICAg ICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBpbmNy ZW1lbnQgdmFsdWUgYXQgIgorICAgICAgICAgICAgICAgICAgICAiJXM6IGJpdHN0cmVhbSBlbmRl ZC5cbiIsIG5hbWUpOworICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwor ICAgICAgICAgfQorLSAgICAgICAgaWYgKGdldF9iaXRzMShnYmMpKSB7CistICAgICAgICAgICAg Yml0c1tpKytdID0gJzEnOworKyAgICAgICAgaWYgKGdldF9iaXRzMShnYmMpKQorICAgICAgICAg ICAgICsrdmFsdWU7CistICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgIGJpdHNbaSsrXSA9 ICcwJzsKKysgICAgICAgIGVsc2UKKyAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgIH0KKyAg ICAgfQorIAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKKy0gICAgICAgIGJpdHNbaV0g PSAwOworLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24s IG5hbWUsIE5VTEwsIGJpdHMsIHZhbHVlKTsKKy0gICAgfQorKyAgICBDQlNfVFJBQ0VfUkVBRF9F TkRfTk9fU1VCU0NSSVBUUygpOworIAorICAgICAqd3JpdGVfdG8gPSB2YWx1ZTsKKyAgICAgcmV0 dXJuIDA7CitAQCAtMTMzLDYgKzEwNiw4IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93cml0ZV9pbmNy ZW1lbnQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiCisgewor ICAgICBpbnQgbGVuOworIAorKyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQoKTsKKysKKyAgICAg YXZfYXNzZXJ0MChyYW5nZV9taW4gPD0gcmFuZ2VfbWF4ICYmIHJhbmdlX21heCAtIHJhbmdlX21p biA8IDgpOworICAgICBpZiAodmFsdWUgPCByYW5nZV9taW4gfHwgdmFsdWUgPiByYW5nZV9tYXgp IHsKKyAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBv ZiByYW5nZTogIgorQEAgLTE0OCwyMyArMTIzLDExIEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93cml0 ZV9pbmNyZW1lbnQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBi CisgICAgIGlmIChwdXRfYml0c19sZWZ0KHBiYykgPCBsZW4pCisgICAgICAgICByZXR1cm4gQVZF UlJPUihFTk9TUEMpOworIAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKKy0gICAgICAg IGNoYXIgYml0c1s4XTsKKy0gICAgICAgIGludCBpOworLSAgICAgICAgZm9yIChpID0gMDsgaSA8 IGxlbjsgaSsrKSB7CistICAgICAgICAgICAgaWYgKHJhbmdlX21pbiArIGkgPT0gdmFsdWUpCist ICAgICAgICAgICAgICAgIGJpdHNbaV0gPSAnMCc7CistICAgICAgICAgICAgZWxzZQorLSAgICAg ICAgICAgICAgICBiaXRzW2ldID0gJzEnOworLSAgICAgICAgfQorLSAgICAgICAgYml0c1tpXSA9 IDA7CistICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwdXRfYml0c19j b3VudChwYmMpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIE5V TEwsIGJpdHMsIHZhbHVlKTsKKy0gICAgfQorLQorICAgICBpZiAobGVuID4gMCkKKyAgICAgICAg IHB1dF9iaXRzKHBiYywgbGVuLCAoMSA8PCBsZW4pIC0gMSAtICh2YWx1ZSAhPSByYW5nZV9tYXgp KTsKKyAKKysgICAgQ0JTX1RSQUNFX1dSSVRFX0VORF9OT19TVUJTQ1JJUFRTKCk7CisrCisgICAg IHJldHVybiAwOworIH0KKyAKK0BAIC0xNzMsMTIgKzEzNiwxMSBAQCBzdGF0aWMgaW50IGNic192 cDlfcmVhZF9sZShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2Jj LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywgdWlu dDMyX3QgKndyaXRlX3RvKQorIHsKKyAgICAgdWludDMyX3QgdmFsdWU7CistICAgIGludCBwb3Np dGlvbiwgYjsKKysgICAgaW50IGI7CisgCistICAgIGF2X2Fzc2VydDAod2lkdGggJSA4ID09IDAp OworKyAgICBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgpOworIAorLSAgICBpZiAoY3R4LT50cmFjZV9l bmFibGUpCistICAgICAgICBwb3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdiYyk7CisrICAgIGF2 X2Fzc2VydDAod2lkdGggJSA4ID09IDApOworIAorICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYmMp IDwgd2lkdGgpIHsKKyAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwg IkludmFsaWQgbGUgdmFsdWUgYXQgIgorQEAgLTE5MCwxNyArMTUyLDcgQEAgc3RhdGljIGludCBj YnNfdnA5X3JlYWRfbGUoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQg KmdiYywKKyAgICAgZm9yIChiID0gMDsgYiA8IHdpZHRoOyBiICs9IDgpCisgICAgICAgICB2YWx1 ZSB8PSBnZXRfYml0cyhnYmMsIDgpIDw8IGI7CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJs ZSkgeworLSAgICAgICAgY2hhciBiaXRzWzMzXTsKKy0gICAgICAgIGludCBpOworLSAgICAgICAg Zm9yIChiID0gMDsgYiA8IHdpZHRoOyBiICs9IDgpCistICAgICAgICAgICAgZm9yIChpID0gMDsg aSA8IDg7IGkrKykKKy0gICAgICAgICAgICAgICAgYml0c1tiICsgaV0gPSB2YWx1ZSA+PiAoYiAr IGkpICYgMSA/ICcxJyA6ICcwJzsKKy0gICAgICAgIGJpdHNbYl0gPSAwOworLQorLSAgICAgICAg ZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sIG5hbWUsIHN1YnNjcmlw dHMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0cywgdmFsdWUpOwor LSAgICB9CisrICAgIENCU19UUkFDRV9SRUFEX0VORCgpOworIAorICAgICAqd3JpdGVfdG8gPSB2 YWx1ZTsKKyAgICAgcmV0dXJuIDA7CitAQCAtMjEyLDI2ICsxNjQsMTggQEAgc3RhdGljIGludCBj YnNfdnA5X3dyaXRlX2xlKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0 ICpwYmMsCisgeworICAgICBpbnQgYjsKKyAKKysgICAgQ0JTX1RSQUNFX1dSSVRFX1NUQVJUKCk7 CisrCisgICAgIGF2X2Fzc2VydDAod2lkdGggJSA4ID09IDApOworIAorICAgICBpZiAocHV0X2Jp dHNfbGVmdChwYmMpIDwgd2lkdGgpCisgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TUEMpOwor IAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKKy0gICAgICAgIGNoYXIgYml0c1szM107 CistICAgICAgICBpbnQgaTsKKy0gICAgICAgIGZvciAoYiA9IDA7IGIgPCB3aWR0aDsgYiArPSA4 KQorLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCistICAgICAgICAgICAgICAg IGJpdHNbYiArIGldID0gdmFsdWUgPj4gKGIgKyBpKSAmIDEgPyAnMScgOiAnMCc7CistICAgICAg ICBiaXRzW2JdID0gMDsKKy0KKy0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChj dHgsIHB1dF9iaXRzX2NvdW50KHBiYyksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmFtZSwgc3Vic2NyaXB0cywgYml0cywgdmFsdWUpOworLSAgICB9CistCisgICAgIGZv ciAoYiA9IDA7IGIgPCB3aWR0aDsgYiArPSA4KQorICAgICAgICAgcHV0X2JpdHMocGJjLCA4LCB2 YWx1ZSA+PiBiICYgMHhmZik7CisgCisrICAgIENCU19UUkFDRV9XUklURV9FTkQoKTsKKysKKyAg ICAgcmV0dXJuIDA7CisgfQorIAorQEAgLTI1MSw4ICsxOTUsNiBAQCBzdGF0aWMgaW50IGNic192 cDlfd3JpdGVfbGUoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBi YywKKyAKKyAjZGVmaW5lIFNVQlNDUklQVFMoc3VicywgLi4uKSAoc3VicyA+IDAgPyAoKGludFtz dWJzICsgMV0peyBzdWJzLCBfX1ZBX0FSR1NfXyB9KSA6IE5VTEwpCisgCistI2RlZmluZSBmKHdp ZHRoLCBuYW1lKSBcCistICAgICAgICB4Zih3aWR0aCwgbmFtZSwgY3VycmVudC0+bmFtZSwgMCwg KQorICNkZWZpbmUgcyh3aWR0aCwgbmFtZSkgXAorICAgICAgICAgeHMod2lkdGgsIG5hbWUsIGN1 cnJlbnQtPm5hbWUsIDAsICkKKyAjZGVmaW5lIGZzKHdpZHRoLCBuYW1lLCBzdWJzLCAuLi4pIFwK K0BAIC0yNjQsNiArMjA2LDEyIEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93cml0ZV9sZShDb2RlZEJp dHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorICNkZWZpbmUgUkVBRFdS SVRFIHJlYWQKKyAjZGVmaW5lIFJXQ29udGV4dCBHZXRCaXRDb250ZXh0CisgCisrI2RlZmluZSBm KHdpZHRoLCBuYW1lKSBkbyB7IFwKKysgICAgICAgIHVpbnQzMl90IHZhbHVlOyBcCisrICAgICAg ICBDSEVDSyhmZl9jYnNfcmVhZF9zaW1wbGVfdW5zaWduZWQoY3R4LCBydywgd2lkdGgsICNuYW1l LCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVlKSk7 IFwKKysgICAgICAgIGN1cnJlbnQtPm5hbWUgPSB2YWx1ZTsgXAorKyAgICB9IHdoaWxlICgwKQor ICNkZWZpbmUgeGYod2lkdGgsIG5hbWUsIHZhciwgc3VicywgLi4uKSBkbyB7IFwKKyAgICAgICAg IHVpbnQzMl90IHZhbHVlOyBcCisgICAgICAgICBDSEVDSyhmZl9jYnNfcmVhZF91bnNpZ25lZChj dHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwKK0BAIC0zMjksNiArMjc3LDcgQEAgc3RhdGljIGludCBj YnNfdnA5X3dyaXRlX2xlKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0 ICpwYmMsCisgI3VuZGVmIFJFQUQKKyAjdW5kZWYgUkVBRFdSSVRFCisgI3VuZGVmIFJXQ29udGV4 dAorKyN1bmRlZiBmCisgI3VuZGVmIHhmCisgI3VuZGVmIHhzCisgI3VuZGVmIGluY3JlbWVudAor QEAgLTM0NCw2ICsyOTMsMTAgQEAgc3RhdGljIGludCBjYnNfdnA5X3dyaXRlX2xlKENvZGVkQml0 c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCisgI2RlZmluZSBSRUFEV1JJ VEUgd3JpdGUKKyAjZGVmaW5lIFJXQ29udGV4dCBQdXRCaXRDb250ZXh0CisgCisrI2RlZmluZSBm KHdpZHRoLCBuYW1lKSBkbyB7IFwKKysgICAgICAgIENIRUNLKGZmX2Nic193cml0ZV9zaW1wbGVf dW5zaWduZWQoY3R4LCBydywgd2lkdGgsICNuYW1lLCBcCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQtPm5hbWUpKTsgXAorKyAgICB9IHdoaWxlICgw KQorICNkZWZpbmUgeGYod2lkdGgsIG5hbWUsIHZhciwgc3VicywgLi4uKSBkbyB7IFwKKyAgICAg ICAgIENIRUNLKGZmX2Nic193cml0ZV91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVUJTQ1JJUFRTKHN1YnMsIF9f VkFfQVJHU19fKSwgXAorQEAgLTM5Niw2ICszNDksNyBAQCBzdGF0aWMgaW50IGNic192cDlfd3Jp dGVfbGUoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKKyAj dW5kZWYgV1JJVEUKKyAjdW5kZWYgUkVBRFdSSVRFCisgI3VuZGVmIFJXQ29udGV4dAorKyN1bmRl ZiBmCisgI3VuZGVmIHhmCisgI3VuZGVmIHhzCisgI3VuZGVmIGluY3JlbWVudAorZGlmZiAtLWdp dCBhL2xpYmF2Y29kZWMvZXh0cmFjdF9leHRyYWRhdGFfYnNmLmMgYi9saWJhdmNvZGVjL2V4dHJh Y3RfZXh0cmFkYXRhX2JzZi5jCitpbmRleCAzMjliMWE2Li43ZWVkYjE2IDEwMDY0NAorLS0tIGEv bGliYXZjb2RlYy9leHRyYWN0X2V4dHJhZGF0YV9ic2YuYworKysrIGIvbGliYXZjb2RlYy9leHRy YWN0X2V4dHJhZGF0YV9ic2YuYworQEAgLTQ4LDEwICs0OCw5IEBAIHR5cGVkZWYgc3RydWN0IEV4 dHJhY3RFeHRyYWRhdGFDb250ZXh0IHsKKyAgICAgaW50IHJlbW92ZTsKKyB9IEV4dHJhY3RFeHRy YWRhdGFDb250ZXh0OworIAorLXN0YXRpYyBpbnQgdmFsX2luX2FycmF5KGNvbnN0IGludCAqYXJy LCBpbnQgbGVuLCBpbnQgdmFsKQorK3N0YXRpYyBpbnQgdmFsX2luX2FycmF5KGNvbnN0IGludCAq YXJyLCBzaXplX3QgbGVuLCBpbnQgdmFsKQorIHsKKy0gICAgaW50IGk7CistICAgIGZvciAoaSA9 IDA7IGkgPCBsZW47IGkrKykKKysgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW47IGkrKykK KyAgICAgICAgIGlmIChhcnJbaV0gPT0gdmFsKQorICAgICAgICAgICAgIHJldHVybiAxOworICAg ICByZXR1cm4gMDsKK0BAIC0xNDUsNyArMTQ0LDcgQEAgc3RhdGljIGludCBleHRyYWN0X2V4dHJh ZGF0YV9oMjY0NShBVkJTRkNvbnRleHQgKmN0eCwgQVZQYWNrZXQgKnBrdCwKKyAKKyAgICAgaW50 IGV4dHJhZGF0YV9zaXplID0gMCwgZmlsdGVyZWRfc2l6ZSA9IDA7CisgICAgIGNvbnN0IGludCAq ZXh0cmFkYXRhX25hbF90eXBlczsKKy0gICAgaW50IG5iX2V4dHJhZGF0YV9uYWxfdHlwZXM7Cisr ICAgIHNpemVfdCBuYl9leHRyYWRhdGFfbmFsX3R5cGVzOworICAgICBpbnQgaSwgaGFzX3NwcyA9 IDAsIGhhc192cHMgPSAwLCByZXQgPSAwOworIAorICAgICBpZiAoY3R4LT5wYXJfaW4tPmNvZGVj X2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL3RyYWNl X2hlYWRlcnNfYnNmLmMgYi9saWJhdmNvZGVjL3RyYWNlX2hlYWRlcnNfYnNmLmMKK2luZGV4IDAy OGIwYTEuLjg3ODFmNWYgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3RyYWNlX2hlYWRlcnNfYnNm LmMKKysrKyBiL2xpYmF2Y29kZWMvdHJhY2VfaGVhZGVyc19ic2YuYworQEAgLTQ0LDYgKzQ0LDgg QEAgc3RhdGljIGludCB0cmFjZV9oZWFkZXJzX2luaXQoQVZCU0ZDb250ZXh0ICpic2YpCisgCisg ICAgIGN0eC0+Y2JjLT50cmFjZV9lbmFibGUgPSAxOworICAgICBjdHgtPmNiYy0+dHJhY2VfbGV2 ZWwgID0gQVZfTE9HX0lORk87CisrICAgIGN0eC0+Y2JjLT50cmFjZV9jb250ZXh0ID0gY3R4LT5j YmM7CisrICAgIGN0eC0+Y2JjLT50cmFjZV9yZWFkX2NhbGxiYWNrID0gZmZfY2JzX3RyYWNlX3Jl YWRfbG9nOworIAorICAgICBpZiAoYnNmLT5wYXJfaW4tPmV4dHJhZGF0YSkgeworICAgICAgICAg Q29kZWRCaXRzdHJlYW1GcmFnbWVudCAqZnJhZyA9ICZjdHgtPmZyYWdtZW50OworZGlmZiAtLWdp dCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlLmMgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5j CitpbmRleCBiZmNhMzE1Li5mNWJmNWFiIDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy92YWFwaV9l bmNvZGUuYworKysrIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGUuYworQEAgLTI3NiwyMSArMjc2 LDM0IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2lzc3VlKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwKKyAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJJc3N1aW5nIGVuY29kZSBmb3Ig cGljICUiUFJJZDY0Ii8lIlBSSWQ2NCIgIgorICAgICAgICAgICAgImFzIHR5cGUgJXMuXG4iLCBw aWMtPmRpc3BsYXlfb3JkZXIsIHBpYy0+ZW5jb2RlX29yZGVyLAorICAgICAgICAgICAgcGljdHVy ZV90eXBlX25hbWVbcGljLT50eXBlXSk7CistICAgIGlmIChwaWMtPm5iX3JlZnMgPT0gMCkgewor KyAgICBpZiAocGljLT5uYl9yZWZzWzBdID09IDAgJiYgcGljLT5uYl9yZWZzWzFdID09IDApIHsK KyAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiTm8gcmVmZXJlbmNlIHBpY3R1 cmVzLlxuIik7CisgICAgIH0gZWxzZSB7CistICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19E RUJVRywgIlJlZmVycyB0bzoiKTsKKy0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3Jl ZnM7IGkrKykgeworKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJMMCByZWZl cnMgdG8iKTsKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMF07IGkrKykg eworICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiICUiUFJJZDY0Ii8l IlBSSWQ2NCwKKy0gICAgICAgICAgICAgICAgICAgcGljLT5yZWZzW2ldLT5kaXNwbGF5X29yZGVy LCBwaWMtPnJlZnNbaV0tPmVuY29kZV9vcmRlcik7CisrICAgICAgICAgICAgICAgICAgIHBpYy0+ cmVmc1swXVtpXS0+ZGlzcGxheV9vcmRlciwgcGljLT5yZWZzWzBdW2ldLT5lbmNvZGVfb3JkZXIp OworICAgICAgICAgfQorICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICIuXG4i KTsKKysKKysgICAgICAgIGlmIChwaWMtPm5iX3JlZnNbMV0pIHsKKysgICAgICAgICAgICBhdl9s b2coYXZjdHgsIEFWX0xPR19ERUJVRywgIkwxIHJlZmVycyB0byIpOworKyAgICAgICAgICAgIGZv ciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMV07IGkrKykgeworKyAgICAgICAgICAgICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIiAlIlBSSWQ2NCIvJSJQUklkNjQsCisrICAgICAg ICAgICAgICAgICAgICAgICBwaWMtPnJlZnNbMV1baV0tPmRpc3BsYXlfb3JkZXIsIHBpYy0+cmVm c1sxXVtpXS0+ZW5jb2RlX29yZGVyKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgYXZf bG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICIuXG4iKTsKKysgICAgICAgIH0KKyAgICAgfQorIAor ICAgICBhdl9hc3NlcnQwKCFwaWMtPmVuY29kZV9pc3N1ZWQpOworLSAgICBmb3IgKGkgPSAwOyBp IDwgcGljLT5uYl9yZWZzOyBpKyspIHsKKy0gICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzW2ld KTsKKy0gICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzW2ldLT5lbmNvZGVfaXNzdWVkKTsKKysg ICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7CisrICAgICAgICBhdl9h c3NlcnQwKHBpYy0+cmVmc1swXVtpXSk7CisrICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1sw XVtpXS0+ZW5jb2RlX2lzc3VlZCk7CisrICAgIH0KKysgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+ bmJfcmVmc1sxXTsgaSsrKSB7CisrICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1sxXVtpXSk7 CisrICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1sxXVtpXS0+ZW5jb2RlX2lzc3VlZCk7Cisg ICAgIH0KKyAKKyAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJJbnB1dCBzdXJmYWNl IGlzICUjeC5cbiIsIHBpYy0+aW5wdXRfc3VyZmFjZSk7CitAQCAtNjUwLDc5ICs2NjMsMjAwIEBA IGZhaWxfYXRfZW5kOgorICAgICByZXR1cm4gZXJyOworIH0KKyAKKy1zdGF0aWMgaW50IHZhYXBp X2VuY29kZV9vdXRwdXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYywgQVZQYWNrZXQgKnBrdCkKKytz dGF0aWMgaW50IHZhYXBpX2VuY29kZV9zZXRfb3V0cHV0X3Byb3BlcnR5KEFWQ29kZWNDb250ZXh0 ICphdmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZB QVBJRW5jb2RlUGljdHVyZSAqcGljLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQVZQYWNrZXQgKnBrdCkKKyt7CisrICAgIFZBQVBJRW5jb2RlQ29udGV4dCAq Y3R4ID0gYXZjdHgtPnByaXZfZGF0YTsKKysKKysgICAgaWYgKHBpYy0+dHlwZSA9PSBQSUNUVVJF X1RZUEVfSURSKQorKyAgICAgICAgcGt0LT5mbGFncyB8PSBBVl9QS1RfRkxBR19LRVk7CisrCisr ICAgIHBrdC0+cHRzID0gcGljLT5wdHM7CisrICAgIHBrdC0+ZHVyYXRpb24gPSBwaWMtPmR1cmF0 aW9uOworKworKyAgICAvLyBmb3Igbm8tZGVsYXkgZW5jb2RlcnMgdGhpcyBpcyBoYW5kbGVkIGlu IGdlbmVyaWMgY29kZWMKKysgICAgaWYgKGF2Y3R4LT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZf Q09ERUNfQ0FQX0RFTEFZICYmCisrICAgICAgICBhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFH X0NPUFlfT1BBUVVFKSB7CisrICAgICAgICBwa3QtPm9wYXF1ZSAgICAgPSBwaWMtPm9wYXF1ZTsK KysgICAgICAgIHBrdC0+b3BhcXVlX3JlZiA9IHBpYy0+b3BhcXVlX3JlZjsKKysgICAgICAgIHBp Yy0+b3BhcXVlX3JlZiA9IE5VTEw7CisrICAgIH0KKysKKysgICAgaWYgKGN0eC0+Y29kZWMtPmZs YWdzICYgRkxBR19USU1FU1RBTVBfTk9fREVMQVkpIHsKKysgICAgICAgIHBrdC0+ZHRzID0gcGt0 LT5wdHM7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICBpZiAoY3R4LT5vdXRw dXRfZGVsYXkgPT0gMCkgeworKyAgICAgICAgcGt0LT5kdHMgPSBwa3QtPnB0czsKKysgICAgfSBl bHNlIGlmIChwaWMtPmVuY29kZV9vcmRlciA8IGN0eC0+ZGVjb2RlX2RlbGF5KSB7CisrICAgICAg ICBpZiAoY3R4LT50c19yaW5nW3BpYy0+ZW5jb2RlX29yZGVyXSA8IElOVDY0X01JTiArIGN0eC0+ ZHRzX3B0c19kaWZmKQorKyAgICAgICAgICAgIHBrdC0+ZHRzID0gSU5UNjRfTUlOOworKyAgICAg ICAgZWxzZQorKyAgICAgICAgICAgIHBrdC0+ZHRzID0gY3R4LT50c19yaW5nW3BpYy0+ZW5jb2Rl X29yZGVyXSAtIGN0eC0+ZHRzX3B0c19kaWZmOworKyAgICB9IGVsc2UgeworKyAgICAgICAgcGt0 LT5kdHMgPSBjdHgtPnRzX3JpbmdbKHBpYy0+ZW5jb2RlX29yZGVyIC0gY3R4LT5kZWNvZGVfZGVs YXkpICUKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzICogY3R4LT5vdXRwdXRf ZGVsYXkgKyBjdHgtPmFzeW5jX2RlcHRoKV07CisrICAgIH0KKysKKysgICAgcmV0dXJuIDA7Cisr fQorKworK3N0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2dldF9jb2RlZF9idWZmZXJfc2l6ZShBVkNv ZGVjQ29udGV4dCAqYXZjdHgsIFZBQnVmZmVySUQgYnVmX2lkKQorIHsKKyAgICAgVkFBUElFbmNv ZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOworICAgICBWQUNvZGVkQnVmZmVyU2Vn bWVudCAqYnVmX2xpc3QsICpidWY7CisrICAgIGludCBzaXplID0gMDsKKyAgICAgVkFTdGF0dXMg dmFzOworLSAgICBpbnQgdG90YWxfc2l6ZSA9IDA7CistICAgIHVpbnQ4X3QgKnB0cjsKKyAgICAg aW50IGVycjsKKyAKKy0gICAgZXJyID0gdmFhcGlfZW5jb2RlX3dhaXQoYXZjdHgsIHBpYyk7Cist ICAgIGlmIChlcnIgPCAwKQorLSAgICAgICAgcmV0dXJuIGVycjsKKy0KKy0gICAgYnVmX2xpc3Qg PSBOVUxMOworLSAgICB2YXMgPSB2YU1hcEJ1ZmZlcihjdHgtPmh3Y3R4LT5kaXNwbGF5LCBwaWMt Pm91dHB1dF9idWZmZXIsCisrICAgIHZhcyA9IHZhTWFwQnVmZmVyKGN0eC0+aHdjdHgtPmRpc3Bs YXksIGJ1Zl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKikmYnVmX2xpc3QpOwor ICAgICBpZiAodmFzICE9IFZBX1NUQVRVU19TVUNDRVNTKSB7CisgICAgICAgICBhdl9sb2coYXZj dHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBtYXAgb3V0cHV0IGJ1ZmZlcnM6ICIKKyAgICAg ICAgICAgICAgICAiJWQgKCVzKS5cbiIsIHZhcywgdmFFcnJvclN0cih2YXMpKTsKKyAgICAgICAg IGVyciA9IEFWRVJST1IoRUlPKTsKKy0gICAgICAgIGdvdG8gZmFpbDsKKysgICAgICAgIHJldHVy biBlcnI7CisgICAgIH0KKyAKKyAgICAgZm9yIChidWYgPSBidWZfbGlzdDsgYnVmOyBidWYgPSBi dWYtPm5leHQpCistICAgICAgICB0b3RhbF9zaXplICs9IGJ1Zi0+c2l6ZTsKKysgICAgICAgIHNp emUgKz0gYnVmLT5zaXplOworIAorLSAgICBlcnIgPSBmZl9nZXRfZW5jb2RlX2J1ZmZlcihhdmN0 eCwgcGt0LCB0b3RhbF9zaXplLCAwKTsKKy0gICAgcHRyID0gcGt0LT5kYXRhOworKyAgICB2YXMg PSB2YVVubWFwQnVmZmVyKGN0eC0+aHdjdHgtPmRpc3BsYXksIGJ1Zl9pZCk7CisrICAgIGlmICh2 YXMgIT0gVkFfU1RBVFVTX1NVQ0NFU1MpIHsKKysgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9H X0VSUk9SLCAiRmFpbGVkIHRvIHVubWFwIG91dHB1dCBidWZmZXJzOiAiCisrICAgICAgICAgICAg ICAgIiVkICglcykuXG4iLCB2YXMsIHZhRXJyb3JTdHIodmFzKSk7CisrICAgICAgICBlcnIgPSBB VkVSUk9SKEVJTyk7CisrICAgICAgICByZXR1cm4gZXJyOworKyAgICB9CisgCistICAgIGlmIChl cnIgPCAwKQorLSAgICAgICAgZ290byBmYWlsX21hcHBlZDsKKysgICAgcmV0dXJuIHNpemU7Cisr fQorKworK3N0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2dldF9jb2RlZF9idWZmZXJfZGF0YShBVkNv ZGVjQ29udGV4dCAqYXZjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFZBQnVmZmVySUQgYnVmX2lkLCB1aW50OF90ICoqZHN0KQorK3sKKysgICAgVkFB UElFbmNvZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOworKyAgICBWQUNvZGVkQnVm ZmVyU2VnbWVudCAqYnVmX2xpc3QsICpidWY7CisrICAgIFZBU3RhdHVzIHZhczsKKysgICAgaW50 IGVycjsKKysKKysgICAgdmFzID0gdmFNYXBCdWZmZXIoY3R4LT5od2N0eC0+ZGlzcGxheSwgYnVm X2lkLAorKyAgICAgICAgICAgICAgICAgICAgICAodm9pZCoqKSZidWZfbGlzdCk7CisrICAgIGlm ICh2YXMgIT0gVkFfU1RBVFVTX1NVQ0NFU1MpIHsKKysgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZf TE9HX0VSUk9SLCAiRmFpbGVkIHRvIG1hcCBvdXRwdXQgYnVmZmVyczogIgorKyAgICAgICAgICAg ICAgICIlZCAoJXMpLlxuIiwgdmFzLCB2YUVycm9yU3RyKHZhcykpOworKyAgICAgICAgZXJyID0g QVZFUlJPUihFSU8pOworKyAgICAgICAgcmV0dXJuIGVycjsKKysgICAgfQorIAorICAgICBmb3Ig KGJ1ZiA9IGJ1Zl9saXN0OyBidWY7IGJ1ZiA9IGJ1Zi0+bmV4dCkgeworICAgICAgICAgYXZfbG9n KGF2Y3R4LCBBVl9MT0dfREVCVUcsICJPdXRwdXQgYnVmZmVyOiAldSBieXRlcyAiCisgICAgICAg ICAgICAgICAgIihzdGF0dXMgJTA4eCkuXG4iLCBidWYtPnNpemUsIGJ1Zi0+c3RhdHVzKTsKKyAK Ky0gICAgICAgIG1lbWNweShwdHIsIGJ1Zi0+YnVmLCBidWYtPnNpemUpOworLSAgICAgICAgcHRy ICs9IGJ1Zi0+c2l6ZTsKKysgICAgICAgIG1lbWNweSgqZHN0LCBidWYtPmJ1ZiwgYnVmLT5zaXpl KTsKKysgICAgICAgICpkc3QgKz0gYnVmLT5zaXplOworICAgICB9CisgCistICAgIGlmIChwaWMt PnR5cGUgPT0gUElDVFVSRV9UWVBFX0lEUikKKy0gICAgICAgIHBrdC0+ZmxhZ3MgfD0gQVZfUEtU X0ZMQUdfS0VZOworLQorLSAgICBwa3QtPnB0cyA9IHBpYy0+cHRzOworLSAgICBwa3QtPmR1cmF0 aW9uID0gcGljLT5kdXJhdGlvbjsKKy0KKy0gICAgdmFzID0gdmFVbm1hcEJ1ZmZlcihjdHgtPmh3 Y3R4LT5kaXNwbGF5LCBwaWMtPm91dHB1dF9idWZmZXIpOworKyAgICB2YXMgPSB2YVVubWFwQnVm ZmVyKGN0eC0+aHdjdHgtPmRpc3BsYXksIGJ1Zl9pZCk7CisgICAgIGlmICh2YXMgIT0gVkFfU1RB VFVTX1NVQ0NFU1MpIHsKKyAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFp bGVkIHRvIHVubWFwIG91dHB1dCBidWZmZXJzOiAiCisgICAgICAgICAgICAgICAgIiVkICglcyku XG4iLCB2YXMsIHZhRXJyb3JTdHIodmFzKSk7CisgICAgICAgICBlcnIgPSBBVkVSUk9SKEVJTyk7 CistICAgICAgICBnb3RvIGZhaWw7CisrICAgICAgICByZXR1cm4gZXJyOworICAgICB9CisgCist ICAgIC8vIGZvciBuby1kZWxheSBlbmNvZGVycyB0aGlzIGlzIGhhbmRsZWQgaW4gZ2VuZXJpYyBj b2RlYworLSAgICBpZiAoYXZjdHgtPmNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBf REVMQVkgJiYKKy0gICAgICAgIGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQ09QWV9PUEFR VUUpIHsKKy0gICAgICAgIHBrdC0+b3BhcXVlICAgICA9IHBpYy0+b3BhcXVlOworLSAgICAgICAg cGt0LT5vcGFxdWVfcmVmID0gcGljLT5vcGFxdWVfcmVmOworLSAgICAgICAgcGljLT5vcGFxdWVf cmVmID0gTlVMTDsKKysgICAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQgdmFhcGlfZW5j b2RlX2dldF9jb2RlZF9kYXRhKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYywgQVZQYWNr ZXQgKnBrdCkKKyt7CisrICAgIFZBQVBJRW5jb2RlQ29udGV4dCAqY3R4ID0gYXZjdHgtPnByaXZf ZGF0YTsKKysgICAgVkFCdWZmZXJJRCBvdXRwdXRfYnVmZmVyX3ByZXY7CisrICAgIGludCB0b3Rh bF9zaXplID0gMDsKKysgICAgdWludDhfdCAqcHRyOworKyAgICBpbnQgcmV0OworKworKyAgICBp ZiAoY3R4LT5jb2RlZF9idWZmZXJfcmVmKSB7CisrICAgICAgICBvdXRwdXRfYnVmZmVyX3ByZXYg PSAoVkFCdWZmZXJJRCkodWludHB0cl90KWN0eC0+Y29kZWRfYnVmZmVyX3JlZi0+ZGF0YTsKKysg ICAgICAgIHJldCA9IHZhYXBpX2VuY29kZV9nZXRfY29kZWRfYnVmZmVyX3NpemUoYXZjdHgsIG91 dHB1dF9idWZmZXJfcHJldik7CisrICAgICAgICBpZiAocmV0IDwgMCkKKysgICAgICAgICAgICBn b3RvIGVuZDsKKysgICAgICAgIHRvdGFsX3NpemUgKz0gcmV0OworKyAgICB9CisrCisrICAgIHJl dCA9IHZhYXBpX2VuY29kZV9nZXRfY29kZWRfYnVmZmVyX3NpemUoYXZjdHgsIHBpYy0+b3V0cHV0 X2J1ZmZlcik7CisrICAgIGlmIChyZXQgPCAwKQorKyAgICAgICAgZ290byBlbmQ7CisrICAgIHRv dGFsX3NpemUgKz0gcmV0OworKworKyAgICByZXQgPSBmZl9nZXRfZW5jb2RlX2J1ZmZlcihhdmN0 eCwgcGt0LCB0b3RhbF9zaXplLCAwKTsKKysgICAgaWYgKHJldCA8IDApCisrICAgICAgICBnb3Rv IGVuZDsKKysgICAgcHRyID0gcGt0LT5kYXRhOworKworKyAgICBpZiAoY3R4LT5jb2RlZF9idWZm ZXJfcmVmKSB7CisrICAgICAgICByZXQgPSB2YWFwaV9lbmNvZGVfZ2V0X2NvZGVkX2J1ZmZlcl9k YXRhKGF2Y3R4LCBvdXRwdXRfYnVmZmVyX3ByZXYsICZwdHIpOworKyAgICAgICAgaWYgKHJldCA8 IDApCisrICAgICAgICAgICAgZ290byBlbmQ7CisgICAgIH0KKyAKKysgICAgcmV0ID0gdmFhcGlf ZW5jb2RlX2dldF9jb2RlZF9idWZmZXJfZGF0YShhdmN0eCwgcGljLT5vdXRwdXRfYnVmZmVyLCAm cHRyKTsKKysgICAgaWYgKHJldCA8IDApCisrICAgICAgICBnb3RvIGVuZDsKKysKKytlbmQ6Cisr ICAgIGlmIChjdHgtPmNvZGVkX2J1ZmZlcl9yZWYpIHsKKysgICAgICAgIGF2X2J1ZmZlcl91bnJl ZigmY3R4LT5jb2RlZF9idWZmZXJfcmVmKTsKKysgICAgfQorICAgICBhdl9idWZmZXJfdW5yZWYo JnBpYy0+b3V0cHV0X2J1ZmZlcl9yZWYpOworICAgICBwaWMtPm91dHB1dF9idWZmZXIgPSBWQV9J TlZBTElEX0lEOworIAorKyAgICByZXR1cm4gcmV0OworK30KKysKKytzdGF0aWMgaW50IHZhYXBp X2VuY29kZV9vdXRwdXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYywgQVZQYWNrZXQgKnBrdCkKKyt7 CisrICAgIFZBQVBJRW5jb2RlQ29udGV4dCAqY3R4ID0gYXZjdHgtPnByaXZfZGF0YTsKKysgICAg QVZQYWNrZXQgKnBrdF9wdHIgPSBwa3Q7CisrICAgIGludCBlcnI7CisrCisrICAgIGVyciA9IHZh YXBpX2VuY29kZV93YWl0KGF2Y3R4LCBwaWMpOworKyAgICBpZiAoZXJyIDwgMCkKKysgICAgICAg IHJldHVybiBlcnI7CisrCisrICAgIGlmIChwaWMtPm5vbl9pbmRlcGVuZGVudF9mcmFtZSkgewor KyAgICAgICAgYXZfYXNzZXJ0MCghY3R4LT5jb2RlZF9idWZmZXJfcmVmKTsKKysgICAgICAgIGN0 eC0+Y29kZWRfYnVmZmVyX3JlZiA9IGF2X2J1ZmZlcl9yZWYocGljLT5vdXRwdXRfYnVmZmVyX3Jl Zik7CisrCisrICAgICAgICBpZiAocGljLT50YWlsX3NpemUpIHsKKysgICAgICAgICAgICBpZiAo Y3R4LT50YWlsX3BrdC0+c2l6ZSkgeworKyAgICAgICAgICAgICAgICBlcnIgPSBBVkVSUk9SKEFW RVJST1JfQlVHKTsKKysgICAgICAgICAgICAgICAgZ290byBlbmQ7CisrICAgICAgICAgICAgfQor KworKyAgICAgICAgICAgIGVyciA9IGZmX2dldF9lbmNvZGVfYnVmZmVyKGF2Y3R4LCBjdHgtPnRh aWxfcGt0LCBwaWMtPnRhaWxfc2l6ZSwgMCk7CisrICAgICAgICAgICAgaWYgKGVyciA8IDApCisr ICAgICAgICAgICAgICAgIGdvdG8gZW5kOworKworKyAgICAgICAgICAgIG1lbWNweShjdHgtPnRh aWxfcGt0LT5kYXRhLCBwaWMtPnRhaWxfZGF0YSwgcGljLT50YWlsX3NpemUpOworKyAgICAgICAg ICAgIHBrdF9wdHIgPSBjdHgtPnRhaWxfcGt0OworKyAgICAgICAgfQorKyAgICB9IGVsc2Ugewor KyAgICAgICAgZXJyID0gdmFhcGlfZW5jb2RlX2dldF9jb2RlZF9kYXRhKGF2Y3R4LCBwaWMsIHBr dCk7CisrICAgICAgICBpZiAoZXJyIDwgMCkKKysgICAgICAgICAgICBnb3RvIGVuZDsKKysgICAg fQorKworICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIk91dHB1dCByZWFkIGZvciBw aWMgJSJQUklkNjQiLyUiUFJJZDY0Ii5cbiIsCisgICAgICAgICAgICBwaWMtPmRpc3BsYXlfb3Jk ZXIsIHBpYy0+ZW5jb2RlX29yZGVyKTsKKy0gICAgcmV0dXJuIDA7CisgCistZmFpbF9tYXBwZWQ6 CistICAgIHZhVW5tYXBCdWZmZXIoY3R4LT5od2N0eC0+ZGlzcGxheSwgcGljLT5vdXRwdXRfYnVm ZmVyKTsKKy1mYWlsOgorKyAgICB2YWFwaV9lbmNvZGVfc2V0X291dHB1dF9wcm9wZXJ0eShhdmN0 eCwgcGljLCBwa3RfcHRyKTsKKysKKytlbmQ6CisgICAgIGF2X2J1ZmZlcl91bnJlZigmcGljLT5v dXRwdXRfYnVmZmVyX3JlZik7CisgICAgIHBpYy0+b3V0cHV0X2J1ZmZlciA9IFZBX0lOVkFMSURf SUQ7CisgICAgIHJldHVybiBlcnI7CitAQCAtODExLDggKzk0NSwxMiBAQCBzdGF0aWMgdm9pZCB2 YWFwaV9lbmNvZGVfYWRkX3JlZihBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgCisgICAgIGlmIChp c19yZWYpIHsKKyAgICAgICAgIGF2X2Fzc2VydDAocGljICE9IHRhcmdldCk7CistICAgICAgICBh dl9hc3NlcnQwKHBpYy0+bmJfcmVmcyA8IE1BWF9QSUNUVVJFX1JFRkVSRU5DRVMpOworLSAgICAg ICAgcGljLT5yZWZzW3BpYy0+bmJfcmVmcysrXSA9IHRhcmdldDsKKysgICAgICAgIGF2X2Fzc2Vy dDAocGljLT5uYl9yZWZzWzBdIDwgTUFYX1BJQ1RVUkVfUkVGRVJFTkNFUyAmJgorKyAgICAgICAg ICAgICAgICAgICBwaWMtPm5iX3JlZnNbMV0gPCBNQVhfUElDVFVSRV9SRUZFUkVOQ0VTKTsKKysg ICAgICAgIGlmICh0YXJnZXQtPmRpc3BsYXlfb3JkZXIgPCBwaWMtPmRpc3BsYXlfb3JkZXIpCisr ICAgICAgICAgICAgcGljLT5yZWZzWzBdW3BpYy0+bmJfcmVmc1swXSsrXSA9IHRhcmdldDsKKysg ICAgICAgIGVsc2UKKysgICAgICAgICAgICBwaWMtPnJlZnNbMV1bcGljLT5uYl9yZWZzWzFdKytd ID0gdGFyZ2V0OworICAgICAgICAgKytyZWZzOworICAgICB9CisgCitAQCAtODQxLDEwICs5Nzks MTYgQEAgc3RhdGljIHZvaWQgdmFhcGlfZW5jb2RlX3JlbW92ZV9yZWZzKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwKKyAgICAgaWYgKHBpYy0+cmVmX3JlbW92ZWRbbGV2ZWxdKQorICAgICAgICAgcmV0 dXJuOworIAorLSAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBpKyspIHsKKy0gICAg ICAgIGF2X2Fzc2VydDAocGljLT5yZWZzW2ldKTsKKy0gICAgICAgIC0tcGljLT5yZWZzW2ldLT5y ZWZfY291bnRbbGV2ZWxdOworLSAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbaV0tPnJlZl9j b3VudFtsZXZlbF0gPj0gMCk7CisrICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMF07 IGkrKykgeworKyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbMF1baV0pOworKyAgICAgICAg LS1waWMtPnJlZnNbMF1baV0tPnJlZl9jb3VudFtsZXZlbF07CisrICAgICAgICBhdl9hc3NlcnQw KHBpYy0+cmVmc1swXVtpXS0+cmVmX2NvdW50W2xldmVsXSA+PSAwKTsKKysgICAgfQorKworKyAg ICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzWzFdOyBpKyspIHsKKysgICAgICAgIGF2X2Fz c2VydDAocGljLT5yZWZzWzFdW2ldKTsKKysgICAgICAgIC0tcGljLT5yZWZzWzFdW2ldLT5yZWZf Y291bnRbbGV2ZWxdOworKyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbMV1baV0tPnJlZl9j b3VudFtsZXZlbF0gPj0gMCk7CisgICAgIH0KKyAKKyAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+ bmJfZHBiX3BpY3M7IGkrKykgeworQEAgLTg4OSw3ICsxMDMzLDcgQEAgc3RhdGljIHZvaWQgdmFh cGlfZW5jb2RlX3NldF9iX3BpY3R1cmVzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAgICAgICAg ICAgICB2YWFwaV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBlbmQsICAgMSwgMSwgMCk7Cisg ICAgICAgICAgICAgdmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgcHJldiwgIDAsIDAs IDEpOworIAorLSAgICAgICAgICAgIGZvciAocmVmID0gZW5kLT5yZWZzWzFdOyByZWY7IHJlZiA9 IHJlZi0+cmVmc1sxXSkKKysgICAgICAgICAgICBmb3IgKHJlZiA9IGVuZC0+cmVmc1sxXVswXTsg cmVmOyByZWYgPSByZWYtPnJlZnNbMV1bMF0pCisgICAgICAgICAgICAgICAgIHZhYXBpX2VuY29k ZV9hZGRfcmVmKGF2Y3R4LCBwaWMsIHJlZiwgMCwgMSwgMCk7CisgICAgICAgICB9CisgICAgICAg ICAqbGFzdCA9IHByZXY7CitAQCAtOTEyLDcgKzEwNTYsNyBAQCBzdGF0aWMgdm9pZCB2YWFwaV9l bmNvZGVfc2V0X2JfcGljdHVyZXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorICAgICAgICAgdmFh cGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgZW5kLCAgIDEsIDEsIDApOworICAgICAgICAg dmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgcHJldiwgIDAsIDAsIDEpOworIAorLSAg ICAgICAgZm9yIChyZWYgPSBlbmQtPnJlZnNbMV07IHJlZjsgcmVmID0gcmVmLT5yZWZzWzFdKQor KyAgICAgICAgZm9yIChyZWYgPSBlbmQtPnJlZnNbMV1bMF07IHJlZjsgcmVmID0gcmVmLT5yZWZz WzFdWzBdKQorICAgICAgICAgICAgIHZhYXBpX2VuY29kZV9hZGRfcmVmKGF2Y3R4LCBwaWMsIHJl ZiwgMCwgMSwgMCk7CisgCisgICAgICAgICBpZiAoaSA+IDEpCitAQCAtOTI2LDExICsxMDcwLDQ0 IEBAIHN0YXRpYyB2b2lkIHZhYXBpX2VuY29kZV9zZXRfYl9waWN0dXJlcyhBVkNvZGVjQ29udGV4 dCAqYXZjdHgsCisgICAgIH0KKyB9CisgCisrc3RhdGljIHZvaWQgdmFhcGlfZW5jb2RlX2FkZF9u ZXh0X3ByZXYoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljKQorK3sKKysgICAgVkFBUElF bmNvZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOworKyAgICBpbnQgaTsKKysKKysg ICAgaWYgKCFwaWMpCisrICAgICAgICByZXR1cm47CisrCisrICAgIGlmIChwaWMtPnR5cGUgPT0g UElDVFVSRV9UWVBFX0lEUikgeworKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGN0eC0+bmJfbmV4 dF9wcmV2OyBpKyspIHsKKysgICAgICAgICAgICAtLWN0eC0+bmV4dF9wcmV2W2ldLT5yZWZfY291 bnRbMF07CisrICAgICAgICAgICAgY3R4LT5uZXh0X3ByZXZbaV0gPSBOVUxMOworKyAgICAgICAg fQorKyAgICAgICAgY3R4LT5uZXh0X3ByZXZbMF0gPSBwaWM7CisrICAgICAgICArK3BpYy0+cmVm X2NvdW50WzBdOworKyAgICAgICAgY3R4LT5uYl9uZXh0X3ByZXYgPSAxOworKworKyAgICAgICAg cmV0dXJuOworKyAgICB9CisrCisrICAgIGlmIChjdHgtPm5iX25leHRfcHJldiA8IE1BWF9QSUNU VVJFX1JFRkVSRU5DRVMpIHsKKysgICAgICAgIGN0eC0+bmV4dF9wcmV2W2N0eC0+bmJfbmV4dF9w cmV2KytdID0gcGljOworKyAgICAgICAgKytwaWMtPnJlZl9jb3VudFswXTsKKysgICAgfSBlbHNl IHsKKysgICAgICAgIC0tY3R4LT5uZXh0X3ByZXZbMF0tPnJlZl9jb3VudFswXTsKKysgICAgICAg IGZvciAoaSA9IDA7IGkgPCBNQVhfUElDVFVSRV9SRUZFUkVOQ0VTIC0gMTsgaSsrKQorKyAgICAg ICAgICAgIGN0eC0+bmV4dF9wcmV2W2ldID0gY3R4LT5uZXh0X3ByZXZbaSArIDFdOworKyAgICAg ICAgY3R4LT5uZXh0X3ByZXZbaV0gPSBwaWM7CisrICAgICAgICArK3BpYy0+cmVmX2NvdW50WzBd OworKyAgICB9CisrfQorKworIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX3BpY2tfbmV4dChBVkNv ZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZB QVBJRW5jb2RlUGljdHVyZSAqKnBpY19vdXQpCisgeworICAgICBWQUFQSUVuY29kZUNvbnRleHQg KmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7CistICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljID0g TlVMTCwgKm5leHQsICpzdGFydDsKKysgICAgVkFBUElFbmNvZGVQaWN0dXJlICpwaWMgPSBOVUxM LCAqcHJldiA9IE5VTEwsICpuZXh0LCAqc3RhcnQ7CisgICAgIGludCBpLCBiX2NvdW50ZXIsIGNs b3NlZF9nb3BfZW5kOworIAorICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IEItZnJhbWVzIGFscmVh ZHkgcXVldWVkLCB0aGUgbmV4dCBvbmUgdG8gZW5jb2RlCitAQCAtOTQxLDExICsxMTE4LDE4IEBA IHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX3BpY2tfbmV4dChBVkNvZGVjQ29udGV4dCAqYXZjdHgs CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICBpZiAocGljLT50eXBlICE9IFBJQ1RV UkVfVFlQRV9CKQorICAgICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgZm9yIChpID0gMDsg aSA8IHBpYy0+bmJfcmVmczsgaSsrKSB7CistICAgICAgICAgICAgaWYgKCFwaWMtPnJlZnNbaV0t PmVuY29kZV9pc3N1ZWQpCisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzWzBd OyBpKyspIHsKKysgICAgICAgICAgICBpZiAoIXBpYy0+cmVmc1swXVtpXS0+ZW5jb2RlX2lzc3Vl ZCkKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgICAgICBpZiAoaSAh PSBwaWMtPm5iX3JlZnNbMF0pCisrICAgICAgICAgICAgY29udGludWU7CisrCisrICAgICAgICBm b3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzWzFdOyBpKyspIHsKKysgICAgICAgICAgICBpZiAo IXBpYy0+cmVmc1sxXVtpXS0+ZW5jb2RlX2lzc3VlZCkKKyAgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICB9CistICAgICAgICBpZiAoaSA9PSBwaWMtPm5iX3JlZnMpCisrICAgICAgICBp ZiAoaSA9PSBwaWMtPm5iX3JlZnNbMV0pCisgICAgICAgICAgICAgYnJlYWs7CisgICAgIH0KKyAK K0BAIC0xMDQ0LDIxICsxMjI4LDMwIEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX3BpY2tfbmV4 dChBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgCisgICAgIHZhYXBpX2VuY29kZV9hZGRfcmVmKGF2 Y3R4LCBwaWMsIHBpYywgMCwgMSwgMCk7CisgICAgIGlmIChwaWMtPnR5cGUgIT0gUElDVFVSRV9U WVBFX0lEUikgeworLSAgICAgICAgdmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgc3Rh cnQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWMtPnR5cGUgPT0gUElDVFVSRV9U WVBFX1AsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiX2NvdW50ZXIgPiAwLCAwKTsK Ky0gICAgICAgIHZhYXBpX2VuY29kZV9hZGRfcmVmKGF2Y3R4LCBwaWMsIGN0eC0+bmV4dF9wcmV2 LCAwLCAwLCAxKTsKKysgICAgICAgIC8vIFRPRE86IGFwcGx5IGJvdGggcHJldmlvdXMgYW5kIGZv cndhcmQgbXVsdGkgcmVmZXJlbmNlIGZvciBhbGwgdmFhcGkgZW5jb2RlcnMuCisrICAgICAgICAv LyBBbmQgTDAvTDEgcmVmZXJlbmNlIGZyYW1lIG51bWJlciBjYW4gYmUgc2V0IGR5bmFtaWNhbGx5 IHRocm91Z2ggcXVlcnkKKysgICAgICAgIC8vIFZBQ29uZmlnQXR0cmliRW5jTWF4UmVmRnJhbWVz IGF0dHJpYnV0ZS4KKysgICAgICAgIGlmIChhdmN0eC0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf QVYxKSB7CisrICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGN0eC0+bmJfbmV4dF9wcmV2OyBp KyspCisrICAgICAgICAgICAgICAgIHZhYXBpX2VuY29kZV9hZGRfcmVmKGF2Y3R4LCBwaWMsIGN0 eC0+bmV4dF9wcmV2W2ldLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw aWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX1AsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJfY291bnRlciA+IDAsIDApOworKyAgICAgICAgfSBlbHNlCisrICAgICAgICAg ICAgdmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgc3RhcnQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9QLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJfY291bnRlciA+IDAsIDApOworKworKyAgICAg ICAgdmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgY3R4LT5uZXh0X3ByZXZbY3R4LT5u Yl9uZXh0X3ByZXYgLSAxXSwgMCwgMCwgMSk7CisgICAgIH0KKy0gICAgaWYgKGN0eC0+bmV4dF9w cmV2KQorLSAgICAgICAgLS1jdHgtPm5leHRfcHJldi0+cmVmX2NvdW50WzBdOworIAorICAgICBp ZiAoYl9jb3VudGVyID4gMCkgeworICAgICAgICAgdmFhcGlfZW5jb2RlX3NldF9iX3BpY3R1cmVz KGF2Y3R4LCBzdGFydCwgcGljLCBwaWMsIDEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmN0eC0+bmV4dF9wcmV2KTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmcHJldik7CisgICAgIH0gZWxzZSB7CistICAgICAgICBjdHgtPm5leHRfcHJldiA9 IHBpYzsKKysgICAgICAgIHByZXYgPSBwaWM7CisgICAgIH0KKy0gICAgKytjdHgtPm5leHRfcHJl di0+cmVmX2NvdW50WzBdOworKyAgICB2YWFwaV9lbmNvZGVfYWRkX25leHRfcHJldihhdmN0eCwg cHJldik7CisrCisgICAgIHJldHVybiAwOworIH0KKyAKK0BAIC0xMjA1LDEwICsxMzk4LDIzIEBA IGZhaWw6CisgaW50IGZmX3ZhYXBpX2VuY29kZV9yZWNlaXZlX3BhY2tldChBVkNvZGVjQ29udGV4 dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QpCisgeworICAgICBWQUFQSUVuY29kZUNvbnRleHQgKmN0 eCA9IGF2Y3R4LT5wcml2X2RhdGE7CistICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljOworKyAg ICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYyA9IE5VTEw7CisgICAgIEFWRnJhbWUgKmZyYW1lID0g Y3R4LT5mcmFtZTsKKyAgICAgaW50IGVycjsKKyAKKytzdGFydDoKKysgICAgLyoqIGlmIG5vIEIg ZnJhbWUgYmVmb3JlIHJlcGVhdCBQIGZyYW1lLCBzZW50IHJlcGVhdCBQIGZyYW1lIG91dC4gKi8K KysgICAgaWYgKGN0eC0+dGFpbF9wa3QtPnNpemUpIHsKKysgICAgICAgIGZvciAoVkFBUElFbmNv ZGVQaWN0dXJlICp0bXAgPSBjdHgtPnBpY19zdGFydDsgdG1wOyB0bXAgPSB0bXAtPm5leHQpIHsK KysgICAgICAgICAgICBpZiAodG1wLT50eXBlID09IFBJQ1RVUkVfVFlQRV9CICYmIHRtcC0+cHRz IDwgY3R4LT50YWlsX3BrdC0+cHRzKQorKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAg ICAgICBlbHNlIGlmICghdG1wLT5uZXh0KSB7CisrICAgICAgICAgICAgICAgIGF2X3BhY2tldF9t b3ZlX3JlZihwa3QsIGN0eC0+dGFpbF9wa3QpOworKyAgICAgICAgICAgICAgICBnb3RvIGVuZDsK KysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysKKyAgICAgZXJyID0gZmZfZW5j b2RlX2dldF9mcmFtZShhdmN0eCwgZnJhbWUpOworICAgICBpZiAoZXJyIDwgMCAmJiBlcnIgIT0g QVZFUlJPUl9FT0YpCisgICAgICAgICByZXR1cm4gZXJyOworQEAgLTEyMjgsOCArMTQzNCw2IEBA IGludCBmZl92YWFwaV9lbmNvZGVfcmVjZWl2ZV9wYWNrZXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LCBBVlBhY2tldCAqcGt0KQorICAgICB9CisgCisgICAgIGlmIChjdHgtPmhhc19zeW5jX2J1ZmZl cl9mdW5jKSB7CistICAgICAgICBwaWMgPSBOVUxMOworLQorICAgICAgICAgaWYgKGF2X2ZpZm9f Y2FuX3dyaXRlKGN0eC0+ZW5jb2RlX2ZpZm8pKSB7CisgICAgICAgICAgICAgZXJyID0gdmFhcGlf ZW5jb2RlX3BpY2tfbmV4dChhdmN0eCwgJnBpYyk7CisgICAgICAgICAgICAgaWYgKCFlcnIpIHsK K0BAIC0xMjU1LDcgKzE0NTksNiBAQCBpbnQgZmZfdmFhcGlfZW5jb2RlX3JlY2VpdmVfcGFja2V0 KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZQYWNrZXQgKnBrdCkKKyAgICAgICAgIGF2X2ZpZm9f cmVhZChjdHgtPmVuY29kZV9maWZvLCAmcGljLCAxKTsKKyAgICAgICAgIGN0eC0+ZW5jb2RlX29y ZGVyID0gcGljLT5lbmNvZGVfb3JkZXIgKyAxOworICAgICB9IGVsc2UgeworLSAgICAgICAgcGlj ID0gTlVMTDsKKyAgICAgICAgIGVyciA9IHZhYXBpX2VuY29kZV9waWNrX25leHQoYXZjdHgsICZw aWMpOworICAgICAgICAgaWYgKGVyciA8IDApCisgICAgICAgICAgICAgcmV0dXJuIGVycjsKK0BA IC0xMjc2LDI3ICsxNDc5LDIxIEBAIGludCBmZl92YWFwaV9lbmNvZGVfcmVjZWl2ZV9wYWNrZXQo QVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlBhY2tldCAqcGt0KQorICAgICAgICAgcmV0dXJuIGVy cjsKKyAgICAgfQorIAorLSAgICBpZiAoY3R4LT5vdXRwdXRfZGVsYXkgPT0gMCkgeworLSAgICAg ICAgcGt0LT5kdHMgPSBwa3QtPnB0czsKKy0gICAgfSBlbHNlIGlmIChwaWMtPmVuY29kZV9vcmRl ciA8IGN0eC0+ZGVjb2RlX2RlbGF5KSB7CistICAgICAgICBpZiAoY3R4LT50c19yaW5nW3BpYy0+ ZW5jb2RlX29yZGVyXSA8IElOVDY0X01JTiArIGN0eC0+ZHRzX3B0c19kaWZmKQorLSAgICAgICAg ICAgIHBrdC0+ZHRzID0gSU5UNjRfTUlOOworLSAgICAgICAgZWxzZQorLSAgICAgICAgICAgIHBr dC0+ZHRzID0gY3R4LT50c19yaW5nW3BpYy0+ZW5jb2RlX29yZGVyXSAtIGN0eC0+ZHRzX3B0c19k aWZmOworLSAgICB9IGVsc2UgeworLSAgICAgICAgcGt0LT5kdHMgPSBjdHgtPnRzX3JpbmdbKHBp Yy0+ZW5jb2RlX29yZGVyIC0gY3R4LT5kZWNvZGVfZGVsYXkpICUKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgzICogY3R4LT5vdXRwdXRfZGVsYXkgKyBjdHgtPmFzeW5jX2RlcHRo KV07CistICAgIH0KKy0gICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJPdXRwdXQgcGFj a2V0OiBwdHMgJSJQUklkNjQiIGR0cyAlIlBSSWQ2NCIuXG4iLAorLSAgICAgICAgICAgcGt0LT5w dHMsIHBrdC0+ZHRzKTsKKy0KKyAgICAgY3R4LT5vdXRwdXRfb3JkZXIgPSBwaWMtPmVuY29kZV9v cmRlcjsKKyAgICAgdmFhcGlfZW5jb2RlX2NsZWFyX29sZChhdmN0eCk7CisgCisrICAgIC8qKiBs b29wIHRvIGdldCBhbiBhdmFpbGFibGUgcGt0IGluIGVuY29kZXIgZmx1c2hpbmcuICovCisrICAg IGlmIChjdHgtPmVuZF9vZl9zdHJlYW0gJiYgIXBrdC0+c2l6ZSkKKysgICAgICAgIGdvdG8gc3Rh cnQ7CisrCisrZW5kOgorKyAgICBpZiAocGt0LT5zaXplKQorKyAgICAgICAgYXZfbG9nKGF2Y3R4 LCBBVl9MT0dfREVCVUcsICJPdXRwdXQgcGFja2V0OiBwdHMgJSJQUklkNjQiLCBkdHMgJSJQUklk NjQiLCAiCisrICAgICAgICAgICAgICAgInNpemUgJWQgYnl0ZXMuXG4iLCBwa3QtPnB0cywgcGt0 LT5kdHMsIHBrdC0+c2l6ZSk7CisrCisgICAgIHJldHVybiAwOworIH0KKyAKKy0KKyBzdGF0aWMg YXZfY29sZCB2b2lkIHZhYXBpX2VuY29kZV9hZGRfZ2xvYmFsX3BhcmFtKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwgaW50IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2b2lkICpidWZmZXIsIHNpemVfdCBzaXplKQorIHsKK0BAIC0yNTk3LDYg KzI3OTQsMTIgQEAgYXZfY29sZCBpbnQgZmZfdmFhcGlfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4KQorICAgICBjdHgtPmRldmljZSA9IChBVkhXRGV2aWNlQ29udGV4dCopY3R4LT5k ZXZpY2VfcmVmLT5kYXRhOworICAgICBjdHgtPmh3Y3R4ID0gY3R4LT5kZXZpY2UtPmh3Y3R4Owor IAorKyAgICBjdHgtPnRhaWxfcGt0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghY3R4 LT50YWlsX3BrdCkgeworKyAgICAgICAgZXJyID0gQVZFUlJPUihFTk9NRU0pOworKyAgICAgICAg Z290byBmYWlsOworKyAgICB9CisrCisgICAgIGVyciA9IHZhYXBpX2VuY29kZV9wcm9maWxlX2Vu dHJ5cG9pbnQoYXZjdHgpOworICAgICBpZiAoZXJyIDwgMCkKKyAgICAgICAgIGdvdG8gZmFpbDsK K0BAIC0yNzg5LDYgKzI5OTIsNyBAQCBhdl9jb2xkIGludCBmZl92YWFwaV9lbmNvZGVfY2xvc2Uo QVZDb2RlY0NvbnRleHQgKmF2Y3R4KQorICAgICB9CisgCisgICAgIGF2X2ZyYW1lX2ZyZWUoJmN0 eC0+ZnJhbWUpOworKyAgICBhdl9wYWNrZXRfZnJlZSgmY3R4LT50YWlsX3BrdCk7CisgCisgICAg IGF2X2ZyZWVwKCZjdHgtPmNvZGVjX3NlcXVlbmNlX3BhcmFtcyk7CisgICAgIGF2X2ZyZWVwKCZj dHgtPmNvZGVjX3BpY3R1cmVfcGFyYW1zKTsKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBp X2VuY29kZS5oIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGUuaAoraW5kZXggYTFlNjM5Zi4uNDE2 YTNjZSAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlLmgKKysrKyBiL2xpYmF2 Y29kZWMvdmFhcGlfZW5jb2RlLmgKK0BAIC00OSw2ICs0OSw3IEBAIGVudW0geworICAgICAvLyBB LjQuMTogdGFibGUgQS42IGFsbG93cyBhdCBtb3N0IDIwIHRpbGUgY29sdW1ucyBmb3IgYW55IGxl dmVsLgorICAgICBNQVhfVElMRV9DT0xTICAgICAgICAgID0gMjAsCisgICAgIE1BWF9BU1lOQ19E RVBUSCAgICAgICAgPSA2NCwKKysgICAgTUFYX1JFRkVSRU5DRV9MSVNUX05VTSA9IDIsCisgfTsK KyAKKyBleHRlcm4gY29uc3QgQVZDb2RlY0hXQ29uZmlnSW50ZXJuYWwgKmNvbnN0IGZmX3ZhYXBp X2VuY29kZV9od19jb25maWdzW107CitAQCAtMTE2LDEwICsxMTcsMTEgQEAgdHlwZWRlZiBzdHJ1 Y3QgVkFBUElFbmNvZGVQaWN0dXJlIHsKKyAgICAgLy8gYnV0IG5vdCBpZiBpdCBpc24ndC4KKyAg ICAgaW50ICAgICAgICAgICAgICAgICAgICAgbmJfZHBiX3BpY3M7CisgICAgIHN0cnVjdCBWQUFQ SUVuY29kZVBpY3R1cmUgKmRwYltNQVhfRFBCX1NJWkVdOworLSAgICAvLyBUaGUgcmVmZXJlbmNl IHBpY3R1cmVzIHVzZWQgaW4gZGVjb2RpbmcgdGhpcyBwaWN0dXJlLiAgSWYgdGhleSBhcmUKKy0g ICAgLy8gdXNlZCBieSBsYXRlciBwaWN0dXJlcyB0aGV5IHdpbGwgYWxzbyBhcHBlYXIgaW4gdGhl IERQQi4KKy0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgbmJfcmVmczsKKy0gICAgc3RydWN0 IFZBQVBJRW5jb2RlUGljdHVyZSAqcmVmc1tNQVhfUElDVFVSRV9SRUZFUkVOQ0VTXTsKKysgICAg Ly8gVGhlIHJlZmVyZW5jZSBwaWN0dXJlcyB1c2VkIGluIGRlY29kaW5nIHRoaXMgcGljdHVyZS4g SWYgdGhleSBhcmUKKysgICAgLy8gdXNlZCBieSBsYXRlciBwaWN0dXJlcyB0aGV5IHdpbGwgYWxz byBhcHBlYXIgaW4gdGhlIERQQi4gcmVmWzBdW10gZm9yCisrICAgIC8vIHByZXZpb3VzIHJlZmVy ZW5jZSBmcmFtZXMuIHJlZlsxXVtdIGZvciBmdXR1cmUgcmVmZXJlbmNlIGZyYW1lcy4KKysgICAg aW50ICAgICAgICAgICAgICAgICAgICAgbmJfcmVmc1tNQVhfUkVGRVJFTkNFX0xJU1RfTlVNXTsK KysgICAgc3RydWN0IFZBQVBJRW5jb2RlUGljdHVyZSAqcmVmc1tNQVhfUkVGRVJFTkNFX0xJU1Rf TlVNXVtNQVhfUElDVFVSRV9SRUZFUkVOQ0VTXTsKKyAgICAgLy8gVGhlIHByZXZpb3VzIHJlZmVy ZW5jZSBwaWN0dXJlIGluIGVuY29kZSBvcmRlci4gIE11c3QgYmUgaW4gYXQgbGVhc3QKKyAgICAg Ly8gb25lIG9mIHRoZSByZWZlcmVuY2UgbGlzdCBhbmQgRFBCIGxpc3QuCisgICAgIHN0cnVjdCBW QUFQSUVuY29kZVBpY3R1cmUgKnByZXY7CitAQCAtMTMxLDYgKzEzMywxNyBAQCB0eXBlZGVmIHN0 cnVjdCBWQUFQSUVuY29kZVBpY3R1cmUgeworIAorICAgICBpbnQgICAgICAgICAgbmJfc2xpY2Vz OworICAgICBWQUFQSUVuY29kZVNsaWNlICpzbGljZXM7CisrCisrICAgIC8qKgorKyAgICAgKiBp bmRpY2F0ZSBpZiBjdXJyZW50IGZyYW1lIGlzIGFuIGluZGVwZW5kZW50IGZyYW1lIHRoYXQgdGhl IGNvZGVkIGRhdGEKKysgICAgICogY2FuIGJlIHB1c2hlZCB0byBkb3duc3RyZWFtIGRpcmVjdGx5 LiBDb2RlZCBvZiBub24taW5kZXBlbmRlbnQgZnJhbWUKKysgICAgICogZGF0YSB3aWxsIGJlIGNv bmNhdGVuYXRlZCBpbnRvIG5leHQgaW5kZXBlbmRlbnQgZnJhbWUuCisrICAgICAqLworKyAgICBp bnQgbm9uX2luZGVwZW5kZW50X2ZyYW1lOworKyAgICAvKiogVGFpbCBkYXRhIG9mIGN1cnJlbnQg cGljLCB1c2VkIG9ubHkgZm9yIHJlcGVhdCBoZWFkZXIgb2YgQVYxLiAqLworKyAgICBjaGFyIHRh aWxfZGF0YVtNQVhfUEFSQU1fQlVGRkVSX1NJWkVdOworKyAgICAvKiogQnl0ZSBsZW5ndGggb2Yg dGFpbF9kYXRhLiAqLworKyAgICBzaXplX3QgdGFpbF9zaXplOworIH0gVkFBUElFbmNvZGVQaWN0 dXJlOworIAorIHR5cGVkZWYgc3RydWN0IFZBQVBJRW5jb2RlUHJvZmlsZSB7CitAQCAtMjkwLDgg KzMwMyw5IEBAIHR5cGVkZWYgc3RydWN0IFZBQVBJRW5jb2RlQ29udGV4dCB7CisgICAgIC8vIEN1 cnJlbnQgZW5jb2Rpbmcgd2luZG93LCBpbiBkaXNwbGF5IChpbnB1dCkgb3JkZXIuCisgICAgIFZB QVBJRW5jb2RlUGljdHVyZSAqcGljX3N0YXJ0LCAqcGljX2VuZDsKKyAgICAgLy8gVGhlIG5leHQg cGljdHVyZSB0byB1c2UgYXMgdGhlIHByZXZpb3VzIHJlZmVyZW5jZSBwaWN0dXJlIGluCistICAg IC8vIGVuY29kaW5nIG9yZGVyLgorLSAgICBWQUFQSUVuY29kZVBpY3R1cmUgKm5leHRfcHJldjsK KysgICAgLy8gZW5jb2Rpbmcgb3JkZXIuIE9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2UgaW4gZW5j b2Rpbmcgb3JkZXIuCisrICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqbmV4dF9wcmV2W01BWF9QSUNU VVJFX1JFRkVSRU5DRVNdOworKyAgICBpbnQgICAgICAgICAgICAgICAgIG5iX25leHRfcHJldjsK KyAKKyAgICAgLy8gTmV4dCBpbnB1dCBvcmRlciBpbmRleCAoZGlzcGxheSBvcmRlcikuCisgICAg IGludDY0X3QgICAgICAgICBpbnB1dF9vcmRlcjsKK0BAIC0zNjQsNiArMzc4LDE2IEBAIHR5cGVk ZWYgc3RydWN0IFZBQVBJRW5jb2RlQ29udGV4dCB7CisgICAgIEFWRmlmbyAgICAgICAgICAqZW5j b2RlX2ZpZm87CisgICAgIC8vIE1heCBudW1iZXIgb2YgZnJhbWUgYnVmZmVyZWQgaW4gZW5jb2Rl ci4KKyAgICAgaW50ICAgICAgICAgICAgIGFzeW5jX2RlcHRoOworKworKyAgICAvKiogSGVhZCBk YXRhIGZvciBjdXJyZW50IG91dHB1dCBwa3QsIHVzZWQgb25seSBmb3IgQVYxLiAqLworKyAgICAv L3ZvaWQgICpoZWFkZXJfZGF0YTsKKysgICAgLy9zaXplX3QgaGVhZGVyX2RhdGFfc2l6ZTsKKysK KysgICAgLyoqIEJ1ZmZlcmVkIGNvZGVkIGRhdGEgb2YgYSBwaWMgaWYgaXQgaXMgYW4gbm9uLWlu ZGVwZW5kZW50IGZyYW1lLiAqLworKyAgICBBVkJ1ZmZlclJlZiAgICAgKmNvZGVkX2J1ZmZlcl9y ZWY7CisrCisrICAgIC8qKiBUYWlsIGRhdGEgb2YgYSBwaWMsIG5vdyBvbmx5IHVzZWQgZm9yIGF2 MSByZXBlYXQgZnJhbWUgaGVhZGVyLiAqLworKyAgICBBVlBhY2tldCAgICAgICAgKnRhaWxfcGt0 OworIH0gVkFBUElFbmNvZGVDb250ZXh0OworIAorIGVudW0geworQEAgLTM4MCw2ICs0MDQsOSBA QCBlbnVtIHsKKyAgICAgLy8gQ29kZWMgc3VwcG9ydHMgbm9uLUlEUiBrZXkgcGljdHVyZXMgKHRo YXQgaXMsIGtleSBwaWN0dXJlcyBkbworICAgICAvLyBub3QgbmVjZXNzYXJpbHkgZW1wdHkgdGhl IERQQikuCisgICAgIEZMQUdfTk9OX0lEUl9LRVlfUElDVFVSRVMgID0gMSA8PCA1LAorKyAgICAv LyBDb2RlYyBvdXRwdXQgcGFja2V0IHdpdGhvdXQgdGltZXN0YW1wIGRlbGF5LCB3aGljaCBtZWFu cyB0aGUKKysgICAgLy8gb3V0cHV0IHBhY2tldCBoYXMgc2FtZSBQVFMgYW5kIERUUy4KKysgICAg RkxBR19USU1FU1RBTVBfTk9fREVMQVkgICAgPSAxIDw8IDYsCisgfTsKKyAKKyB0eXBlZGVmIHN0 cnVjdCBWQUFQSUVuY29kZVR5cGUgeworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5j b2RlX2F2MS5jIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfYXYxLmMKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwLi45ZDEwMWZhCistLS0gL2Rldi9udWxsCisrKysgYi9saWJh dmNvZGVjL3ZhYXBpX2VuY29kZV9hdjEuYworQEAgLTAsMCArMSw5NDkgQEAKKysvKgorKyAqIENv cHlyaWdodCAoYykgMjAyMyBJbnRlbCBDb3Jwb3JhdGlvbgorKyAqCisrICogVGhpcyBmaWxlIGlz IHBhcnQgb2YgRkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIu MSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KysgKgorKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExp Y2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y LCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisrI2luY2x1ZGUgPHZhL3ZhLmg+ CisrI2luY2x1ZGUgPHZhL3ZhX2VuY19hdjEuaD4KKysKKysjaW5jbHVkZSAibGliYXZ1dGlsL3Bp eGRlc2MuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgorKworKyNpbmNsdWRlICJjYnNf YXYxLmgiCisrI2luY2x1ZGUgInB1dF9iaXRzLmgiCisrI2luY2x1ZGUgImNvZGVjX2ludGVybmFs LmgiCisrI2luY2x1ZGUgImF2MV9sZXZlbHMuaCIKKysjaW5jbHVkZSAidmFhcGlfZW5jb2RlLmgi CisrCisrI2RlZmluZSBBVjFfTUFYX1FVQU5UIDI1NQorKworK3R5cGVkZWYgc3RydWN0IFZBQVBJ RW5jb2RlQVYxUGljdHVyZSB7CisrICAgIGludDY0X3QgbGFzdF9pZHJfZnJhbWU7CisrICAgIGlu dCBzbG90OworK30gVkFBUElFbmNvZGVBVjFQaWN0dXJlOworKworK3R5cGVkZWYgc3RydWN0IFZB QVBJRW5jb2RlQVYxQ29udGV4dCB7CisrICAgIFZBQVBJRW5jb2RlQ29udGV4dCBjb21tb247Cisr ICAgIEFWMVJhd09CVSBzaDsgLyoqPCBzZXF1ZW5jZSBoZWFkZXIuKi8KKysgICAgQVYxUmF3T0JV IGZoOyAvKio8IGZyYW1lIGhlYWRlci4qLworKyAgICBDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmNi YzsKKysgICAgQ29kZWRCaXRzdHJlYW1GcmFnbWVudCBjdXJyZW50X29idTsKKysgICAgVkFDb25m aWdBdHRyaWJWYWxFbmNBVjEgYXR0cjsKKysgICAgVkFDb25maWdBdHRyaWJWYWxFbmNBVjFFeHQx IGF0dHJfZXh0MTsKKysgICAgVkFDb25maWdBdHRyaWJWYWxFbmNBVjFFeHQyIGF0dHJfZXh0MjsK KysKKysgICAgY2hhciBzaF9kYXRhW01BWF9QQVJBTV9CVUZGRVJfU0laRV07IC8qKjwgY29kZWQg c2VxdWVuY2UgaGVhZGVyIGRhdGEuICovCisrICAgIHNpemVfdCBzaF9kYXRhX2xlbjsgLyoqPCBi aXQgbGVuZ3RoIG9mIHNoX2RhdGEuICovCisrICAgIGNoYXIgZmhfZGF0YVtNQVhfUEFSQU1fQlVG RkVSX1NJWkVdOyAvKio8IGNvZGVkIGZyYW1lIGhlYWRlciBkYXRhLiAqLworKyAgICBzaXplX3Qg ZmhfZGF0YV9sZW47IC8qKjwgYml0IGxlbmd0aCBvZiBmaF9kYXRhLiAqLworKworKyAgICB1aW50 OF90IHVuaWZvcm1fdGlsZTsKKysgICAgdWludDhfdCB1c2VfMTI4eDEyOF9zdXBlcmJsb2NrOwor KyAgICBpbnQgc2JfY29sczsKKysgICAgaW50IHNiX3Jvd3M7CisrICAgIGludCB0aWxlX2NvbHNf bG9nMjsKKysgICAgaW50IHRpbGVfcm93c19sb2cyOworKyAgICBpbnQgbWF4X3RpbGVfd2lkdGhf c2I7CisrICAgIGludCBtYXhfdGlsZV9oZWlnaHRfc2I7CisrICAgIHVpbnQ4X3Qgd2lkdGhfaW5f c2JzX21pbnVzXzFbQVYxX01BWF9USUxFX0NPTFNdOworKyAgICB1aW50OF90IGhlaWdodF9pbl9z YnNfbWludXNfMVtBVjFfTUFYX1RJTEVfUk9XU107CisrCisrICAgIGludCBtaW5fbG9nMl90aWxl X2NvbHM7CisrICAgIGludCBtYXhfbG9nMl90aWxlX2NvbHM7CisrICAgIGludCBtaW5fbG9nMl90 aWxlX3Jvd3M7CisrICAgIGludCBtYXhfbG9nMl90aWxlX3Jvd3M7CisrCisrICAgIGludCBxX2lk eF9pZHI7CisrICAgIGludCBxX2lkeF9wOworKyAgICBpbnQgcV9pZHhfYjsKKysKKysgICAgLyoq IGJpdCBwb3NpdGlvbnMgaW4gY3VycmVudCBmcmFtZSBoZWFkZXIgKi8KKysgICAgaW50IHFpbmRl eF9vZmZzZXQ7CisrICAgIGludCBsb29wZmlsdGVyX29mZnNldDsKKysgICAgaW50IGNkZWZfc3Rh cnRfb2Zmc2V0OworKyAgICBpbnQgY2RlZl9wYXJhbV9zaXplOworKworKyAgICAvKiogdXNlciBv cHRpb25zICovCisrICAgIGludCBwcm9maWxlOworKyAgICBpbnQgbGV2ZWw7CisrICAgIGludCB0 aWVyOworKyAgICBpbnQgdGlsZV9jb2xzLCB0aWxlX3Jvd3M7CisrICAgIGludCB0aWxlX2dyb3Vw czsKKyt9IFZBQVBJRW5jb2RlQVYxQ29udGV4dDsKKysKKytzdGF0aWMgdm9pZCB2YWFwaV9lbmNv ZGVfYXYxX3RyYWNlX3dyaXRlX2xvZyh2b2lkICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHV0Qml0Q29udGV4dCAqcGJjLCBpbnQgbGVuZ3RoLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KnN0ciwgY29uc3QgaW50ICpzdWJzY3JpcHRzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludDY0X3QgdmFsdWUpCisreworKyAgICBWQUFQSUVuY29kZUFW MUNvbnRleHQgKnByaXYgPSBjdHg7CisrICAgIGludCBwb3NpdGlvbjsKKysKKysgICAgcG9zaXRp b24gPSBwdXRfYml0c19jb3VudChwYmMpOworKyAgICBhdl9hc3NlcnQwKHBvc2l0aW9uID49IGxl bmd0aCk7CisrCisrICAgIGlmICghc3RyY21wKHN0ciwgImJhc2VfcV9pZHgiKSkKKysgICAgICAg IHByaXYtPnFpbmRleF9vZmZzZXQgPSBwb3NpdGlvbiAtIGxlbmd0aDsKKysgICAgZWxzZSBpZiAo IXN0cmNtcChzdHIsICJsb29wX2ZpbHRlcl9sZXZlbFswXSIpKQorKyAgICAgICAgcHJpdi0+bG9v cGZpbHRlcl9vZmZzZXQgPSBwb3NpdGlvbiAtIGxlbmd0aDsKKysgICAgZWxzZSBpZiAoIXN0cmNt cChzdHIsICJjZGVmX2RhbXBpbmdfbWludXNfMyIpKQorKyAgICAgICAgcHJpdi0+Y2RlZl9zdGFy dF9vZmZzZXQgPSBwb3NpdGlvbiAtIGxlbmd0aDsKKysgICAgZWxzZSBpZiAoIXN0cmNtcChzdHIs ICJjZGVmX3V2X3NlY19zdHJlbmd0aFtpXSIpKQorKyAgICAgICAgcHJpdi0+Y2RlZl9wYXJhbV9z aXplID0gcG9zaXRpb24gLSBwcml2LT5jZGVmX3N0YXJ0X29mZnNldDsKKyt9CisrCisrc3RhdGlj IGF2X2NvbGQgaW50IHZhYXBpX2VuY29kZV9hdjFfZ2V0X2VuY29kZXJfY2FwcyhBVkNvZGVjQ29u dGV4dCAqYXZjdHgpCisreworKyAgICBWQUFQSUVuY29kZUNvbnRleHQgKmN0eCA9IGF2Y3R4LT5w cml2X2RhdGE7CisrICAgIFZBQVBJRW5jb2RlQVYxQ29udGV4dCAqcHJpdiA9IGF2Y3R4LT5wcml2 X2RhdGE7CisrCisrICAgIC8vIFN1cmZhY2VzIG11c3QgYmUgYWxpZ25lZCB0byBzdXBlcmJsb2Nr IGJvdW5kYXJpZXMuCisrICAgIGN0eC0+c3VyZmFjZV93aWR0aCAgPSBGRkFMSUdOKGF2Y3R4LT53 aWR0aCwgIHByaXYtPnVzZV8xMjh4MTI4X3N1cGVyYmxvY2sgPyAxMjggOiA2NCk7CisrICAgIGN0 eC0+c3VyZmFjZV9oZWlnaHQgPSBGRkFMSUdOKGF2Y3R4LT5oZWlnaHQsIHByaXYtPnVzZV8xMjh4 MTI4X3N1cGVyYmxvY2sgPyAxMjggOiA2NCk7CisrCisrICAgIHJldHVybiAwOworK30KKysKKytz dGF0aWMgYXZfY29sZCBpbnQgdmFhcGlfZW5jb2RlX2F2MV9jb25maWd1cmUoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4KQorK3sKKysgICAgVkFBUElFbmNvZGVDb250ZXh0ICAgICAqY3R4ID0gYXZjdHgt PnByaXZfZGF0YTsKKysgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0ICpwcml2ID0gYXZjdHgtPnBy aXZfZGF0YTsKKysgICAgaW50IHJldDsKKysKKysgICAgcmV0ID0gZmZfY2JzX2luaXQoJnByaXYt PmNiYywgQVZfQ09ERUNfSURfQVYxLCBhdmN0eCk7CisrICAgIGlmIChyZXQgPCAwKQorKyAgICAg ICAgcmV0dXJuIHJldDsKKysgICAgcHJpdi0+Y2JjLT50cmFjZV9lbmFibGUgID0gMTsKKysgICAg cHJpdi0+Y2JjLT50cmFjZV9sZXZlbCAgID0gQVZfTE9HX0RFQlVHOworKyAgICBwcml2LT5jYmMt PnRyYWNlX2NvbnRleHQgPSBjdHg7CisrICAgIHByaXYtPmNiYy0+dHJhY2Vfd3JpdGVfY2FsbGJh Y2sgPSB2YWFwaV9lbmNvZGVfYXYxX3RyYWNlX3dyaXRlX2xvZzsKKysKKysgICAgaWYgKGN0eC0+ cmNfbW9kZS0+cXVhbGl0eSkgeworKyAgICAgICAgcHJpdi0+cV9pZHhfcCA9IGF2X2NsaXAoY3R4 LT5yY19xdWFsaXR5LCAwLCBBVjFfTUFYX1FVQU5UKTsKKysgICAgICAgIGlmIChmYWJzKGF2Y3R4 LT5pX3F1YW50X2ZhY3RvcikgPiAwLjApCisrICAgICAgICAgICAgcHJpdi0+cV9pZHhfaWRyID0K KysgICAgICAgICAgICAgICAgYXZfY2xpcCgoZmFicyhhdmN0eC0+aV9xdWFudF9mYWN0b3IpICog cHJpdi0+cV9pZHhfcCAgKworKyAgICAgICAgICAgICAgICAgICAgICAgICBhdmN0eC0+aV9xdWFu dF9vZmZzZXQpICsgMC41LAorKyAgICAgICAgICAgICAgICAgICAgICAgIDAsIEFWMV9NQVhfUVVB TlQpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHByaXYtPnFfaWR4X2lkciA9IHByaXYt PnFfaWR4X3A7CisrCisrICAgICAgICBpZiAoZmFicyhhdmN0eC0+Yl9xdWFudF9mYWN0b3IpID4g MC4wKQorKyAgICAgICAgICAgIHByaXYtPnFfaWR4X2IgPQorKyAgICAgICAgICAgICAgICBhdl9j bGlwKChmYWJzKGF2Y3R4LT5iX3F1YW50X2ZhY3RvcikgKiBwcml2LT5xX2lkeF9wICArCisrICAg ICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5iX3F1YW50X29mZnNldCkgKyAwLjUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgMCwgQVYxX01BWF9RVUFOVCk7CisrICAgICAgICBlbHNlCisr ICAgICAgICAgICAgcHJpdi0+cV9pZHhfYiA9IHByaXYtPnFfaWR4X3A7CisrICAgIH0gZWxzZSB7 CisrICAgICAgICAvKiogQXJiaXRyYXJ5IHZhbHVlICovCisrICAgICAgICBwcml2LT5xX2lkeF9p ZHIgPSBwcml2LT5xX2lkeF9wID0gcHJpdi0+cV9pZHhfYiA9IDEyODsKKysgICAgfQorKworKyAg ICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCB2YWFwaV9lbmNvZGVfYXYxX2FkZF9vYnUo QVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIENvZGVkQml0c3RyZWFtRnJhZ21lbnQgKmF1LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ4X3QgdHlwZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICpvYnVfdW5pdCkKKyt7CisrICAgIGludCByZXQ7CisrCisrICAgIHJldCA9 IGZmX2Nic19pbnNlcnRfdW5pdF9jb250ZW50KGF1LCAtMSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdHlwZSwgb2J1X3VuaXQsIE5VTEwpOworKyAgICBpZiAocmV0IDwg MCkgeworKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gYWRk IE9CVSB1bml0OiAiCisrICAgICAgICAgICAgICAgInR5cGUgPSAlZC5cbiIsIHR5cGUpOworKyAg ICAgICAgcmV0dXJuIHJldDsKKysgICAgfQorKworKyAgICByZXR1cm4gMDsKKyt9CisrCisrc3Rh dGljIGludCB2YWFwaV9lbmNvZGVfYXYxX3dyaXRlX29idShBVkNvZGVjQ29udGV4dCAqYXZjdHgs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpkYXRhLCBzaXpl X3QgKmRhdGFfbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29k ZWRCaXRzdHJlYW1GcmFnbWVudCAqYnMpCisreworKyAgICBWQUFQSUVuY29kZUFWMUNvbnRleHQg KnByaXYgPSBhdmN0eC0+cHJpdl9kYXRhOworKyAgICBpbnQgcmV0OworKworKyAgICByZXQgPSBm Zl9jYnNfd3JpdGVfZnJhZ21lbnRfZGF0YShwcml2LT5jYmMsIGJzKTsKKysgICAgaWYgKHJldCA8 IDApIHsKKysgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHdy aXRlIHBhY2tlZCBoZWFkZXIuXG4iKTsKKysgICAgICAgIHJldHVybiByZXQ7CisrICAgIH0KKysK KysgICAgaWYgKChzaXplX3QpOCAqIE1BWF9QQVJBTV9CVUZGRVJfU0laRSA8IDggKiBicy0+ZGF0 YV9zaXplIC0gYnMtPmRhdGFfYml0X3BhZGRpbmcpIHsKKysgICAgICAgIGF2X2xvZyhhdmN0eCwg QVZfTE9HX0VSUk9SLCAiQWNjZXNzIHVuaXQgdG9vIGxhcmdlOiAiCisrICAgICAgICAgICAgICAg IiV6dSA8ICV6dS5cbiIsIChzaXplX3QpOCAqIE1BWF9QQVJBTV9CVUZGRVJfU0laRSwKKysgICAg ICAgICAgICAgICA4ICogYnMtPmRhdGFfc2l6ZSAtIGJzLT5kYXRhX2JpdF9wYWRkaW5nKTsKKysg ICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1NQQyk7CisrICAgIH0KKysKKysgICAgbWVtY3B5KGRh dGEsIGJzLT5kYXRhLCBicy0+ZGF0YV9zaXplKTsKKysgICAgKmRhdGFfbGVuID0gOCAqIGJzLT5k YXRhX3NpemUgLSBicy0+ZGF0YV9iaXRfcGFkZGluZzsKKysKKysgICAgcmV0dXJuIDA7CisrfQor KworK3N0YXRpYyBpbnQgdGlsZV9sb2cyKGludCBibGtTaXplLCBpbnQgdGFyZ2V0KSB7CisrICAg IGludCBrOworKyAgICBmb3IgKGsgPSAwOyAoYmxrU2l6ZSA8PCBrKSA8IHRhcmdldDsgaysrKTsK KysgICAgcmV0dXJuIGs7CisrfQorKworK3N0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2F2MV9zZXRf dGlsZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCisreworKyAgICBWQUFQSUVuY29kZUFWMUNvbnRl eHQgKnByaXYgPSBhdmN0eC0+cHJpdl9kYXRhOworKyAgICBpbnQgbWlfY29scywgbWlfcm93cywg c2Jfc2hpZnQsIHNiX3NpemU7CisrICAgIGludCBtYXhfdGlsZV9hcmVhX3NiLCBtYXhfdGlsZV9h cmVhX3NiX3ZhcmllZDsKKysgICAgaW50IHRpbGVfd2lkdGhfc2IsIHRpbGVfaGVpZ2h0X3NiLCB3 aWRlc3RfdGlsZV9zYjsKKysgICAgaW50IHRpbGVfY29scywgdGlsZV9yb3dzOworKyAgICBpbnQg bWluX2xvZzJfdGlsZXM7CisrICAgIGludCBpOworKworKyAgICBpZiAocHJpdi0+dGlsZV9jb2xz ID4gQVYxX01BWF9USUxFX0NPTFMgfHwKKysgICAgICAgIHByaXYtPnRpbGVfcm93cyA+IEFWMV9N QVhfVElMRV9ST1dTKSB7CisrICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIklu dmFsaWQgdGlsZSBudW1iZXIgJWR4JWQsIHNob3VsZCBsZXNzIHRoYW4gJWR4JWQuXG4iLAorKyAg ICAgICAgICAgICAgIHByaXYtPnRpbGVfY29scywgcHJpdi0+dGlsZV9yb3dzLCBBVjFfTUFYX1RJ TEVfQ09MUywgQVYxX01BWF9USUxFX1JPV1MpOworKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlO VkFMKTsKKysgICAgfQorKworKyAgICBtaV9jb2xzID0gMiAqICgoYXZjdHgtPndpZHRoICsgNykg Pj4gMyk7CisrICAgIG1pX3Jvd3MgPSAyICogKChhdmN0eC0+aGVpZ2h0ICsgNykgPj4gMyk7Cisr ICAgIHByaXYtPnNiX2NvbHMgPSBwcml2LT51c2VfMTI4eDEyOF9zdXBlcmJsb2NrID8KKysgICAg ICAgICAgICAgICAgICAgICgobWlfY29scyArIDMxKSA+PiA1KSA6ICgobWlfY29scyArIDE1KSA+ PiA0KTsKKysgICAgcHJpdi0+c2Jfcm93cyA9IHByaXYtPnVzZV8xMjh4MTI4X3N1cGVyYmxvY2sg PworKyAgICAgICAgICAgICAgICAgICAgKChtaV9yb3dzICsgMzEpID4+IDUpIDogKChtaV9yb3dz ICsgMTUpID4+IDQpOworKyAgICBzYl9zaGlmdCA9IHByaXYtPnVzZV8xMjh4MTI4X3N1cGVyYmxv Y2sgPyA1IDogNDsKKysgICAgc2Jfc2l6ZSAgPSBzYl9zaGlmdCArIDI7CisrICAgIHByaXYtPm1h eF90aWxlX3dpZHRoX3NiID0gQVYxX01BWF9USUxFX1dJRFRIID4+IHNiX3NpemU7CisrICAgIG1h eF90aWxlX2FyZWFfc2IgPSBBVjFfTUFYX1RJTEVfQVJFQSAgPj4gKDIgKiBzYl9zaXplKTsKKysK KysgICAgcHJpdi0+bWluX2xvZzJfdGlsZV9jb2xzID0gdGlsZV9sb2cyKHByaXYtPm1heF90aWxl X3dpZHRoX3NiLCBwcml2LT5zYl9jb2xzKTsKKysgICAgcHJpdi0+bWF4X2xvZzJfdGlsZV9jb2xz ID0gdGlsZV9sb2cyKDEsIEZGTUlOKHByaXYtPnNiX2NvbHMsIEFWMV9NQVhfVElMRV9DT0xTKSk7 CisrICAgIHByaXYtPm1heF9sb2cyX3RpbGVfcm93cyA9IHRpbGVfbG9nMigxLCBGRk1JTihwcml2 LT5zYl9yb3dzLCBBVjFfTUFYX1RJTEVfUk9XUykpOworKyAgICBtaW5fbG9nMl90aWxlcyA9IEZG TUFYKHByaXYtPm1pbl9sb2cyX3RpbGVfY29scywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aWxlX2xvZzIobWF4X3RpbGVfYXJlYV9zYiwgcHJpdi0+c2Jfcm93cyAqIHByaXYtPnNiX2Nv bHMpKTsKKysKKysgICAgdGlsZV9jb2xzID0gYXZfY2xpcChwcml2LT50aWxlX2NvbHMsIChwcml2 LT5zYl9jb2xzICsgcHJpdi0+bWF4X3RpbGVfd2lkdGhfc2IgLSAxKSAvIHByaXYtPm1heF90aWxl X3dpZHRoX3NiLCBwcml2LT5zYl9jb2xzKTsKKysKKysgICAgaWYgKCFwcml2LT50aWxlX2NvbHMp CisrICAgICAgICBwcml2LT50aWxlX2NvbHMgPSB0aWxlX2NvbHM7CisrICAgIGVsc2UgaWYgKHBy aXYtPnRpbGVfY29scyAhPSB0aWxlX2NvbHMpeworKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9M T0dfRVJST1IsICJJbnZhbGlkIHRpbGUgY29scyAlZCwgc2hvdWxkIGJlIGluIHJhbmdlIG9mICVk fiVkXG4iLAorKyAgICAgICAgICAgICAgIHByaXYtPnRpbGVfY29scywKKysgICAgICAgICAgICAg ICAocHJpdi0+c2JfY29scyArIHByaXYtPm1heF90aWxlX3dpZHRoX3NiIC0gMSkgLyBwcml2LT5t YXhfdGlsZV93aWR0aF9zYiwKKysgICAgICAgICAgICAgICBwcml2LT5zYl9jb2xzKTsKKysgICAg ICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisrICAgIH0KKysKKysgICAgcHJpdi0+dGlsZV9j b2xzX2xvZzIgPSB0aWxlX2xvZzIoMSwgcHJpdi0+dGlsZV9jb2xzKTsKKysgICAgdGlsZV93aWR0 aF9zYiA9IChwcml2LT5zYl9jb2xzICsgKDEgPDwgcHJpdi0+dGlsZV9jb2xzX2xvZzIpIC0gMSkg Pj4KKysgICAgICAgICAgICAgICAgICAgIHByaXYtPnRpbGVfY29sc19sb2cyOworKworKyAgICBp ZiAocHJpdi0+dGlsZV9yb3dzID4gcHJpdi0+c2Jfcm93cykgeworKyAgICAgICAgYXZfbG9nKGF2 Y3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHRpbGUgcm93cyAlZCwgc2hvdWxkIGJlIGxlc3Mg dGhhbiAlZC5cbiIsCisrICAgICAgICAgICAgICAgcHJpdi0+dGlsZV9yb3dzLCBwcml2LT5zYl9y b3dzKTsKKysgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisrICAgIH0KKysKKysgICAg LyoqIFRyeSB1c2VyIHNldHRpbmcgdGlsZSByb3dzIG51bWJlciBmaXJzdC4gKi8KKysgICAgdGls ZV9yb3dzID0gcHJpdi0+dGlsZV9yb3dzID8gcHJpdi0+dGlsZV9yb3dzIDogMTsKKysgICAgZm9y ICg7IHRpbGVfcm93cyA8PSBwcml2LT5zYl9yb3dzICYmIHRpbGVfcm93cyA8PSBBVjFfTUFYX1RJ TEVfUk9XUzsgdGlsZV9yb3dzKyspIHsKKysgICAgICAgIC8qKiB0cnkgdW5pZm9ybWVkIHRpbGUu ICovCisrICAgICAgICBwcml2LT50aWxlX3Jvd3NfbG9nMiA9IHRpbGVfbG9nMigxLCB0aWxlX3Jv d3MpOworKyAgICAgICAgaWYgKChwcml2LT5zYl9jb2xzICsgdGlsZV93aWR0aF9zYiAtIDEpIC8g dGlsZV93aWR0aF9zYiA9PSBwcml2LT50aWxlX2NvbHMpIHsKKysgICAgICAgICAgICBmb3IgKGkg PSAwOyBpIDwgcHJpdi0+dGlsZV9jb2xzIC0gMTsgaSsrKQorKyAgICAgICAgICAgICAgICBwcml2 LT53aWR0aF9pbl9zYnNfbWludXNfMVtpXSA9IHRpbGVfd2lkdGhfc2IgLSAxOworKyAgICAgICAg ICAgIHByaXYtPndpZHRoX2luX3Nic19taW51c18xW2ldID0gcHJpdi0+c2JfY29scyAtIChwcml2 LT50aWxlX2NvbHMgLSAxKSAqIHRpbGVfd2lkdGhfc2IgLSAxOworKworKyAgICAgICAgICAgIHRp bGVfaGVpZ2h0X3NiID0gKHByaXYtPnNiX3Jvd3MgKyAoMSA8PCBwcml2LT50aWxlX3Jvd3NfbG9n MikgLSAxKSA+PgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+dGlsZV9yb3dz X2xvZzI7CisrCisrICAgICAgICAgICAgaWYgKChwcml2LT5zYl9yb3dzICsgdGlsZV9oZWlnaHRf c2IgLSAxKSAvIHRpbGVfaGVpZ2h0X3NiID09IHRpbGVfcm93cyAmJgorKyAgICAgICAgICAgICAg ICB0aWxlX2hlaWdodF9zYiA8PSBtYXhfdGlsZV9hcmVhX3NiIC8gdGlsZV93aWR0aF9zYikgewor KyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGlsZV9yb3dzIC0gMTsgaSsrKQorKyAg ICAgICAgICAgICAgICAgICAgcHJpdi0+aGVpZ2h0X2luX3Nic19taW51c18xW2ldID0gdGlsZV9o ZWlnaHRfc2IgLSAxOworKyAgICAgICAgICAgICAgICBwcml2LT5oZWlnaHRfaW5fc2JzX21pbnVz XzFbaV0gPSBwcml2LT5zYl9yb3dzIC0gKHRpbGVfcm93cyAtIDEpICogdGlsZV9oZWlnaHRfc2Ig LSAxOworKworKyAgICAgICAgICAgICAgICBwcml2LT51bmlmb3JtX3RpbGUgPSAxOworKyAgICAg ICAgICAgICAgICBwcml2LT5taW5fbG9nMl90aWxlX3Jvd3MgPSBGRk1BWChtaW5fbG9nMl90aWxl cyAtIHByaXYtPnRpbGVfY29sc19sb2cyLCAwKTsKKysKKysgICAgICAgICAgICAgICAgYnJlYWs7 CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAgICAgLyoqIHRyeSBub24tdW5p Zm9ybWVkIHRpbGUuICovCisrICAgICAgICB3aWRlc3RfdGlsZV9zYiA9IDA7CisrICAgICAgICBm b3IgKGkgPSAwOyBpIDwgcHJpdi0+dGlsZV9jb2xzOyBpKyspIHsKKysgICAgICAgICAgICBwcml2 LT53aWR0aF9pbl9zYnNfbWludXNfMVtpXSA9IChpICsgMSkgKiBwcml2LT5zYl9jb2xzIC8gcHJp di0+dGlsZV9jb2xzIC0gaSAqIHByaXYtPnNiX2NvbHMgLyBwcml2LT50aWxlX2NvbHMgLSAxOwor KyAgICAgICAgICAgIHdpZGVzdF90aWxlX3NiID0gRkZNQVgod2lkZXN0X3RpbGVfc2IsIHByaXYt PndpZHRoX2luX3Nic19taW51c18xW2ldICsgMSk7CisrICAgICAgICB9CisrCisrICAgICAgICBp ZiAobWluX2xvZzJfdGlsZXMpCisrICAgICAgICAgICAgbWF4X3RpbGVfYXJlYV9zYl92YXJpZWQg PSAocHJpdi0+c2Jfcm93cyAqIHByaXYtPnNiX2NvbHMpID4+IChtaW5fbG9nMl90aWxlcyArIDEp OworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIG1heF90aWxlX2FyZWFfc2JfdmFyaWVkID0g cHJpdi0+c2Jfcm93cyAqIHByaXYtPnNiX2NvbHM7CisrICAgICAgICBwcml2LT5tYXhfdGlsZV9o ZWlnaHRfc2IgPSBGRk1BWCgxLCBtYXhfdGlsZV9hcmVhX3NiX3ZhcmllZCAvIHdpZGVzdF90aWxl X3NiKTsKKysKKysgICAgICAgIGlmICh0aWxlX3Jvd3MgPT0gYXZfY2xpcCh0aWxlX3Jvd3MsIChw cml2LT5zYl9yb3dzICsgcHJpdi0+bWF4X3RpbGVfaGVpZ2h0X3NiIC0gMSkgLyBwcml2LT5tYXhf dGlsZV9oZWlnaHRfc2IsIHByaXYtPnNiX3Jvd3MpKSB7CisrICAgICAgICAgICAgZm9yIChpID0g MDsgaSA8IHRpbGVfcm93czsgaSsrKQorKyAgICAgICAgICAgICAgICBwcml2LT5oZWlnaHRfaW5f c2JzX21pbnVzXzFbaV0gPSAoaSArIDEpICogcHJpdi0+c2Jfcm93cyAvIHRpbGVfcm93cyAtIGkg KiBwcml2LT5zYl9yb3dzIC8gdGlsZV9yb3dzIC0gMTsKKysKKysgICAgICAgICAgICBicmVhazsK KysgICAgICAgIH0KKysKKysgICAgICAgIC8qKiBSZXR1cm4gaW52YWxpZCBwYXJhbWV0ZXIgaWYg ZXhwbGljaXQgdGlsZSByb3dzIGlzIHNldC4gKi8KKysgICAgICAgIGlmIChwcml2LT50aWxlX3Jv d3MpIHsKKysgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQg dGlsZSByb3dzICVkLlxuIiwgcHJpdi0+dGlsZV9yb3dzKTsKKysgICAgICAgICAgICByZXR1cm4g QVZFUlJPUihFSU5WQUwpOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHByaXYtPnRpbGVf cm93cyA9IHRpbGVfcm93czsKKysgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJTZXR0 aW5nIHRpbGUgY29scy9yb3dzIHRvICVkLyVkLlxuIiwKKysgICAgICAgICAgIHByaXYtPnRpbGVf Y29scywgcHJpdi0+dGlsZV9yb3dzKTsKKysKKysgICAgLyoqIGNoZWNrIGlmIHRpbGUgY29scy9y b3dzIGlzIHN1cHBvcnRlZCBieSBkcml2ZXIuICovCisrICAgIGlmIChwcml2LT5hdHRyX2V4dDIu Yml0cy5tYXhfdGlsZV9udW1fbWludXMxKSB7CisrICAgICAgICBpZiAoKHByaXYtPnRpbGVfY29s cyAqIHByaXYtPnRpbGVfcm93cyAtIDEpID4gcHJpdi0+YXR0cl9leHQyLmJpdHMubWF4X3RpbGVf bnVtX21pbnVzMSkgeworKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAi VW5zdXBwb3J0ZWQgdGlsZSBudW0gJWQgKiAlZCA9ICVkIGJ5IGRyaXZlciwgIgorKyAgICAgICAg ICAgICAgICAgICAic2hvdWxkIGJlIGF0IG1vc3QgJWQuXG4iLCBwcml2LT50aWxlX2NvbHMsIHBy aXYtPnRpbGVfcm93cywKKysgICAgICAgICAgICAgICAgICAgcHJpdi0+dGlsZV9jb2xzICogcHJp di0+dGlsZV9yb3dzLAorKyAgICAgICAgICAgICAgICAgICBwcml2LT5hdHRyX2V4dDIuYml0cy5t YXhfdGlsZV9udW1fbWludXMxICsgMSk7CisrICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlO VkFMKTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICAvKiogY2hlY2sgaWYgdGlsZSBncm91 cCBudW1iZXJzIGlzIHZhbGlkLiAqLworKyAgICBpZiAocHJpdi0+dGlsZV9ncm91cHMgPiBwcml2 LT50aWxlX2NvbHMgKiBwcml2LT50aWxlX3Jvd3MpIHsKKysgICAgICAgIGF2X2xvZyhhdmN0eCwg QVZfTE9HX1dBUk5JTkcsICJJbnZhbGlkIHRpbGUgZ3JvdXBzIG51bWJlciAlZCwgIgorKyAgICAg ICAgImNvcnJlY3QgdG8gJWQuXG4iLCBwcml2LT50aWxlX2dyb3VwcywgcHJpdi0+dGlsZV9jb2xz ICogcHJpdi0+dGlsZV9yb3dzKTsKKysgICAgICAgIHByaXYtPnRpbGVfZ3JvdXBzID0gcHJpdi0+ dGlsZV9jb2xzICogcHJpdi0+dGlsZV9yb3dzOworKyAgICB9CisrCisrICAgIHJldHVybiAwOwor K30KKysKKytzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9hdjFfd3JpdGVfc2VxdWVuY2VfaGVhZGVy KEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNoYXIgKmRhdGEsIHNpemVfdCAqZGF0YV9sZW4pCisreworKyAg ICBWQUFQSUVuY29kZUFWMUNvbnRleHQgKnByaXYgPSBhdmN0eC0+cHJpdl9kYXRhOworKworKyAg ICBtZW1jcHkoZGF0YSwgJnByaXYtPnNoX2RhdGEsIE1BWF9QQVJBTV9CVUZGRVJfU0laRSAqIHNp emVvZihjaGFyKSk7CisrICAgICpkYXRhX2xlbiA9IHByaXYtPnNoX2RhdGFfbGVuOworKworKyAg ICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCB2YWFwaV9lbmNvZGVfYXYxX2luaXRfc2Vx dWVuY2VfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKKyt7CisrICAgIFZBQVBJRW5jb2Rl Q29udGV4dCAgICAgICAgICAgICAgICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOworKyAgICBWQUFQ SUVuY29kZUFWMUNvbnRleHQgICAgICAgICAgICpwcml2ID0gYXZjdHgtPnByaXZfZGF0YTsKKysg ICAgQVYxUmF3T0JVICAgICAgICAgICAgICAgICAgICAgKnNoX29idSA9ICZwcml2LT5zaDsKKysg ICAgQVYxUmF3U2VxdWVuY2VIZWFkZXIgICAgICAgICAgICAgICpzaCA9ICZzaF9vYnUtPm9idS5z ZXF1ZW5jZV9oZWFkZXI7CisrICAgIFZBRW5jU2VxdWVuY2VQYXJhbWV0ZXJCdWZmZXJBVjEgKnZz ZXEgPSBjdHgtPmNvZGVjX3NlcXVlbmNlX3BhcmFtczsKKysgICAgQ29kZWRCaXRzdHJlYW1GcmFn bWVudCAgICAgICAgICAgKm9idSA9ICZwcml2LT5jdXJyZW50X29idTsKKysgICAgY29uc3QgQVZQ aXhGbXREZXNjcmlwdG9yICpkZXNjOworKyAgICBpbnQgcmV0OworKworKyAgICBtZW1zZXQoc2hf b2J1LCAwLCBzaXplb2YoKnNoX29idSkpOworKyAgICBzaF9vYnUtPmhlYWRlci5vYnVfdHlwZSA9 IEFWMV9PQlVfU0VRVUVOQ0VfSEVBREVSOworKworKyAgICBkZXNjID0gYXZfcGl4X2ZtdF9kZXNj X2dldChwcml2LT5jb21tb24uaW5wdXRfZnJhbWVzLT5zd19mb3JtYXQpOworKyAgICBhdl9hc3Nl cnQwKGRlc2MpOworKworKyAgICBzaC0+c2VxX3Byb2ZpbGUgID0gYXZjdHgtPnByb2ZpbGU7Cisr ICAgIGlmICghc2gtPnNlcV9mb3JjZV9zY3JlZW5fY29udGVudF90b29scykKKysgICAgICAgIHNo LT5zZXFfZm9yY2VfaW50ZWdlcl9tdiA9IEFWMV9TRUxFQ1RfSU5URUdFUl9NVjsKKysgICAgc2gt PmZyYW1lX3dpZHRoX2JpdHNfbWludXNfMSAgPSBhdl9sb2cyKGF2Y3R4LT53aWR0aCk7CisrICAg IHNoLT5mcmFtZV9oZWlnaHRfYml0c19taW51c18xID0gYXZfbG9nMihhdmN0eC0+aGVpZ2h0KTsK KysgICAgc2gtPm1heF9mcmFtZV93aWR0aF9taW51c18xICAgPSBhdmN0eC0+d2lkdGggLSAxOwor KyAgICBzaC0+bWF4X2ZyYW1lX2hlaWdodF9taW51c18xICA9IGF2Y3R4LT5oZWlnaHQgLSAxOwor KyAgICBzaC0+c2VxX3RpZXJbMF0gICAgICAgICAgICAgICA9IHByaXYtPnRpZXI7CisrICAgIC8q KiBlbmFibGUgb3JkZXIgaGludCBhbmQgcmVzZXJ2ZSBtYXhpbXVtIDggYml0cyBmb3IgaXQgYnkg ZGVmYXVsdC4gKi8KKysgICAgc2gtPmVuYWJsZV9vcmRlcl9oaW50ICAgICAgICAgPSAxOworKyAg ICBzaC0+b3JkZXJfaGludF9iaXRzX21pbnVzXzEgICA9IDc7CisrCisrICAgIHNoLT5jb2xvcl9j b25maWcgPSAoQVYxUmF3Q29sb3JDb25maWcpIHsKKysgICAgICAgIC5oaWdoX2JpdGRlcHRoICAg ICAgICAgICAgICAgICAgPSBkZXNjLT5jb21wWzBdLmRlcHRoID09IDggPyAwIDogMSwKKysgICAg ICAgIC5jb2xvcl9wcmltYXJpZXMgICAgICAgICAgICAgICAgPSBhdmN0eC0+Y29sb3JfcHJpbWFy aWVzLAorKyAgICAgICAgLnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcyAgICAgICA9IGF2Y3R4LT5j b2xvcl90cmMsCisrICAgICAgICAubWF0cml4X2NvZWZmaWNpZW50cyAgICAgICAgICAgID0gYXZj dHgtPmNvbG9yc3BhY2UsCisrICAgICAgICAuY29sb3JfZGVzY3JpcHRpb25fcHJlc2VudF9mbGFn ID0gKGF2Y3R4LT5jb2xvcl9wcmltYXJpZXMgIT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVEIHx8Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5jb2xvcl90 cmMgICAgICAgIT0gQVZDT0xfVFJDX1VOU1BFQ0lGSUVEIHx8CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5jb2xvcnNwYWNlICAgICAgIT0gQVZDT0xf U1BDX1VOU1BFQ0lGSUVEKSwKKysgICAgICAgIC5jb2xvcl9yYW5nZSAgICAgICAgICAgICAgICAg ICAgPSBhdmN0eC0+Y29sb3JfcmFuZ2UgPT0gQVZDT0xfUkFOR0VfSlBFRywKKysgICAgICAgIC5z dWJzYW1wbGluZ194ICAgICAgICAgICAgICAgICAgPSBkZXNjLT5sb2cyX2Nocm9tYV93LAorKyAg ICAgICAgLnN1YnNhbXBsaW5nX3kgICAgICAgICAgICAgICAgICA9IGRlc2MtPmxvZzJfY2hyb21h X2gsCisrICAgIH07CisrCisrICAgIHN3aXRjaCAoYXZjdHgtPmNocm9tYV9zYW1wbGVfbG9jYXRp b24pIHsKKysgICAgICAgIGNhc2UgQVZDSFJPTUFfTE9DX0xFRlQ6CisrICAgICAgICAgICAgc2gt PmNvbG9yX2NvbmZpZy5jaHJvbWFfc2FtcGxlX3Bvc2l0aW9uID0gQVYxX0NTUF9WRVJUSUNBTDsK KysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgQVZDSFJPTUFfTE9DX1RPUExFRlQ6 CisrICAgICAgICAgICAgc2gtPmNvbG9yX2NvbmZpZy5jaHJvbWFfc2FtcGxlX3Bvc2l0aW9uID0g QVYxX0NTUF9DT0xPQ0FURUQ7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBkZWZhdWx0 OgorKyAgICAgICAgICAgIHNoLT5jb2xvcl9jb25maWcuY2hyb21hX3NhbXBsZV9wb3NpdGlvbiA9 IEFWMV9DU1BfVU5LTk9XTjsKKysgICAgICAgICAgICBicmVhazsKKysgICAgfQorKworKyAgICBp ZiAoYXZjdHgtPmxldmVsICE9IEZGX1BST0ZJTEVfVU5LTk9XTikgeworKyAgICAgICAgc2gtPnNl cV9sZXZlbF9pZHhbMF0gPSBhdmN0eC0+bGV2ZWw7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBj b25zdCBBVjFMZXZlbERlc2NyaXB0b3IgKmxldmVsOworKyAgICAgICAgZmxvYXQgZnJhbWVyYXRl OworKworKyAgICAgICAgaWYgKGF2Y3R4LT5mcmFtZXJhdGUubnVtID4gMCAmJiBhdmN0eC0+ZnJh bWVyYXRlLmRlbiA+IDApCisrICAgICAgICAgICAgZnJhbWVyYXRlID0gYXZjdHgtPmZyYW1lcmF0 ZS5udW0gLyBhdmN0eC0+ZnJhbWVyYXRlLmRlbjsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAg ICBmcmFtZXJhdGUgPSAwOworKworKyAgICAgICAgbGV2ZWwgPSBmZl9hdjFfZ3Vlc3NfbGV2ZWwo YXZjdHgtPmJpdF9yYXRlLCBwcml2LT50aWVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3R4LT5zdXJmYWNlX3dpZHRoLCBjdHgtPnN1cmZhY2VfaGVpZ2h0LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+dGlsZV9yb3dzICogcHJpdi0+dGls ZV9jb2xzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+dGlsZV9j b2xzLCBmcmFtZXJhdGUpOworKyAgICAgICAgaWYgKGxldmVsKSB7CisrICAgICAgICAgICAgYXZf bG9nKGF2Y3R4LCBBVl9MT0dfVkVSQk9TRSwgIlVzaW5nIGxldmVsICVzLlxuIiwgbGV2ZWwtPm5h bWUpOworKyAgICAgICAgICAgIHNoLT5zZXFfbGV2ZWxfaWR4WzBdID0gbGV2ZWwtPmxldmVsX2lk eDsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0df VkVSQk9TRSwgIlN0cmVhbSB3aWxsIG5vdCBjb25mb3JtIHRvICIKKysgICAgICAgICAgICAgICAg ICAgImFueSBub3JtYWwgbGV2ZWwsIHVzaW5nIG1heGltdW0gcGFyYW1ldGVycyBsZXZlbCBieSBk ZWZhdWx0LlxuIik7CisrICAgICAgICAgICAgc2gtPnNlcV9sZXZlbF9pZHhbMF0gPSAzMTsKKysg ICAgICAgICAgICBzaC0+c2VxX3RpZXJbMF0gPSAxOworKyAgICAgICAgfQorKyAgICB9CisrICAg IHZzZXEtPnNlcV9wcm9maWxlICAgICAgICAgICAgID0gc2gtPnNlcV9wcm9maWxlOworKyAgICB2 c2VxLT5zZXFfbGV2ZWxfaWR4ICAgICAgICAgICA9IHNoLT5zZXFfbGV2ZWxfaWR4WzBdOworKyAg ICB2c2VxLT5zZXFfdGllciAgICAgICAgICAgICAgICA9IHNoLT5zZXFfdGllclswXTsKKysgICAg dnNlcS0+b3JkZXJfaGludF9iaXRzX21pbnVzXzEgPSBzaC0+b3JkZXJfaGludF9iaXRzX21pbnVz XzE7CisrICAgIHZzZXEtPmludHJhX3BlcmlvZCAgICAgICAgICAgID0gY3R4LT5nb3Bfc2l6ZTsK KysgICAgdnNlcS0+aXBfcGVyaW9kICAgICAgICAgICAgICAgPSBjdHgtPmJfcGVyX3AgKyAxOwor KworKyAgICB2c2VxLT5zZXFfZmllbGRzLmJpdHMuZW5hYmxlX29yZGVyX2hpbnQgPSBzaC0+ZW5h YmxlX29yZGVyX2hpbnQ7CisrCisrICAgIGlmICghKGN0eC0+dmFfcmNfbW9kZSAmIFZBX1JDX0NR UCkpIHsKKysgICAgICAgIHZzZXEtPmJpdHNfcGVyX3NlY29uZCA9IGN0eC0+dmFfYml0X3JhdGU7 CisrICAgICAgICB2c2VxLT5zZXFfZmllbGRzLmJpdHMuZW5hYmxlX2NkZWYgPSBzaC0+ZW5hYmxl X2NkZWYgPSAxOworKyAgICB9CisrCisrICAgIHJldCA9IHZhYXBpX2VuY29kZV9hdjFfYWRkX29i dShhdmN0eCwgb2J1LCBBVjFfT0JVX1NFUVVFTkNFX0hFQURFUiwgJnByaXYtPnNoKTsKKysgICAg aWYgKHJldCA8IDApCisrICAgICAgICBnb3RvIGVuZDsKKysKKysgICAgcmV0ID0gdmFhcGlfZW5j b2RlX2F2MV93cml0ZV9vYnUoYXZjdHgsIHByaXYtPnNoX2RhdGEsICZwcml2LT5zaF9kYXRhX2xl biwgb2J1KTsKKysgICAgaWYgKHJldCA8IDApCisrICAgICAgICBnb3RvIGVuZDsKKysKKytlbmQ6 CisrICAgIGZmX2Nic19mcmFnbWVudF9yZXNldChvYnUpOworKyAgICByZXR1cm4gcmV0OworK30K KysKKytzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9hdjFfaW5pdF9waWN0dXJlX3BhcmFtcyhBVkNv ZGVjQ29udGV4dCAqYXZjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICpwaWMpCisreworKyAgICBWQUFQSUVuY29k ZUNvbnRleHQgICAgICAgICAgICAgICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOworKyAgICBWQUFQ SUVuY29kZUFWMUNvbnRleHQgICAgICAgICAgKnByaXYgPSBhdmN0eC0+cHJpdl9kYXRhOworKyAg ICBWQUFQSUVuY29kZUFWMVBpY3R1cmUgICAgICAgICAgKmhwaWMgPSBwaWMtPnByaXZfZGF0YTsK KysgICAgQVYxUmF3T0JVICAgICAgICAgICAgICAgICAgICAqZmhfb2J1ID0gJnByaXYtPmZoOwor KyAgICBBVjFSYXdGcmFtZUhlYWRlciAgICAgICAgICAgICAgICAqZmggPSAmZmhfb2J1LT5vYnUu ZnJhbWUuaGVhZGVyOworKyAgICBWQUVuY1BpY3R1cmVQYXJhbWV0ZXJCdWZmZXJBVjEgKnZwaWMg PSBwaWMtPmNvZGVjX3BpY3R1cmVfcGFyYW1zOworKyAgICBDb2RlZEJpdHN0cmVhbUZyYWdtZW50 ICAgICAgICAgICpvYnUgPSAmcHJpdi0+Y3VycmVudF9vYnU7CisrICAgIFZBQVBJRW5jb2RlUGlj dHVyZSAgICAqcmVmOworKyAgICBWQUFQSUVuY29kZUFWMVBpY3R1cmUgKmhyZWY7CisrICAgIGlu dCBzbG90LCBpOworKyAgICBpbnQgcmV0OworKyAgICBzdGF0aWMgY29uc3QgaW50OF90IGRlZmF1 bHRfbG9vcF9maWx0ZXJfcmVmX2RlbHRhc1tBVjFfVE9UQUxfUkVGU19QRVJfRlJBTUVdID0KKysg ICAgICAgIHsgMSwgMCwgMCwgMCwgLTEsIDAsIC0xLCAtMSB9OworKworKyAgICBtZW1zZXQoZmhf b2J1LCAwLCBzaXplb2YoKmZoX29idSkpOworKyAgICBwaWMtPm5iX3NsaWNlcyA9IHByaXYtPnRp bGVfZ3JvdXBzOworKyAgICBwaWMtPm5vbl9pbmRlcGVuZGVudF9mcmFtZSA9IHBpYy0+ZW5jb2Rl X29yZGVyIDwgcGljLT5kaXNwbGF5X29yZGVyOworKyAgICBmaF9vYnUtPmhlYWRlci5vYnVfdHlw ZSA9IEFWMV9PQlVfRlJBTUVfSEVBREVSOworKyAgICBmaF9vYnUtPmhlYWRlci5vYnVfaGFzX3Np emVfZmllbGQgPSAxOworKworKyAgICBzd2l0Y2ggKHBpYy0+dHlwZSkgeworKyAgICBjYXNlIFBJ Q1RVUkVfVFlQRV9JRFI6CisrICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmc1swXSA9PSAw IHx8IHBpYy0+bmJfcmVmc1sxXSk7CisrICAgICAgICBmaC0+ZnJhbWVfdHlwZSA9IEFWMV9GUkFN RV9LRVk7CisrICAgICAgICBmaC0+cmVmcmVzaF9mcmFtZV9mbGFncyA9IDB4RkY7CisrICAgICAg ICBmaC0+YmFzZV9xX2lkeCA9IHByaXYtPnFfaWR4X2lkcjsKKysgICAgICAgIGhwaWMtPnNsb3Qg PSAwOworKyAgICAgICAgaHBpYy0+bGFzdF9pZHJfZnJhbWUgPSBwaWMtPmRpc3BsYXlfb3JkZXI7 CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBQSUNUVVJFX1RZUEVfUDoKKysgICAgICAgIGF2 X2Fzc2VydDAocGljLT5uYl9yZWZzWzBdKTsKKysgICAgICAgIGZoLT5mcmFtZV90eXBlID0gQVYx X0ZSQU1FX0lOVEVSOworKyAgICAgICAgZmgtPmJhc2VfcV9pZHggPSBwcml2LT5xX2lkeF9wOwor KyAgICAgICAgcmVmID0gcGljLT5yZWZzWzBdW3BpYy0+bmJfcmVmc1swXSAtIDFdOworKyAgICAg ICAgaHJlZiA9IHJlZi0+cHJpdl9kYXRhOworKyAgICAgICAgaHBpYy0+c2xvdCA9ICFocmVmLT5z bG90OworKyAgICAgICAgaHBpYy0+bGFzdF9pZHJfZnJhbWUgPSBocmVmLT5sYXN0X2lkcl9mcmFt ZTsKKysgICAgICAgIGZoLT5yZWZyZXNoX2ZyYW1lX2ZsYWdzID0gMSA8PCBocGljLT5zbG90Owor KworKyAgICAgICAgLyoqIHNldCB0aGUgbmVhcmVzdCBmcmFtZSBpbiBMMCBhcyBhbGwgcmVmZXJl bmNlIGZyYW1lLiAqLworKyAgICAgICAgZm9yIChpID0gMDsgaSA8IEFWMV9SRUZTX1BFUl9GUkFN RTsgaSsrKSB7CisrICAgICAgICAgICAgZmgtPnJlZl9mcmFtZV9pZHhbaV0gPSBocmVmLT5zbG90 OworKyAgICAgICAgfQorKyAgICAgICAgZmgtPnByaW1hcnlfcmVmX2ZyYW1lID0gaHJlZi0+c2xv dDsKKysgICAgICAgIGZoLT5yZWZfb3JkZXJfaGludFtocmVmLT5zbG90XSA9IHJlZi0+ZGlzcGxh eV9vcmRlciAtIGhyZWYtPmxhc3RfaWRyX2ZyYW1lOworKyAgICAgICAgdnBpYy0+cmVmX2ZyYW1l X2N0cmxfbDAuZmllbGRzLnNlYXJjaF9pZHgwID0gQVYxX1JFRl9GUkFNRV9MQVNUOworKworKyAg ICAgICAgLyoqIHNldCB0aGUgMm5kIG5lYXJlc3QgZnJhbWUgaW4gTDAgYXMgR29sZGVuIGZyYW1l LiAqLworKyAgICAgICAgaWYgKHBpYy0+bmJfcmVmc1swXSA+IDEpIHsKKysgICAgICAgICAgICBy ZWYgPSBwaWMtPnJlZnNbMF1bcGljLT5uYl9yZWZzWzBdIC0gMl07CisrICAgICAgICAgICAgaHJl ZiA9IHJlZi0+cHJpdl9kYXRhOworKyAgICAgICAgICAgIGZoLT5yZWZfZnJhbWVfaWR4WzNdID0g aHJlZi0+c2xvdDsKKysgICAgICAgICAgICBmaC0+cmVmX29yZGVyX2hpbnRbaHJlZi0+c2xvdF0g PSByZWYtPmRpc3BsYXlfb3JkZXIgLSBocmVmLT5sYXN0X2lkcl9mcmFtZTsKKysgICAgICAgICAg ICB2cGljLT5yZWZfZnJhbWVfY3RybF9sMC5maWVsZHMuc2VhcmNoX2lkeDEgPSBBVjFfUkVGX0ZS QU1FX0dPTERFTjsKKysgICAgICAgIH0KKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBJQ1RV UkVfVFlQRV9COgorKyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPm5iX3JlZnNbMF0gJiYgcGljLT5u Yl9yZWZzWzFdKTsKKysgICAgICAgIGZoLT5mcmFtZV90eXBlID0gQVYxX0ZSQU1FX0lOVEVSOwor KyAgICAgICAgZmgtPmJhc2VfcV9pZHggPSBwcml2LT5xX2lkeF9iOworKyAgICAgICAgZmgtPnJl ZnJlc2hfZnJhbWVfZmxhZ3MgPSAweDA7CisrICAgICAgICBmaC0+cmVmZXJlbmNlX3NlbGVjdCA9 IDE7CisrCisrICAgICAgICAvKiogQiBmcmFtZSB3aWxsIG5vdCBiZSByZWZlcmVuY2VkLCBkaXNh YmxlIGl0cyByZWNvbiBmcmFtZS4gKi8KKysgICAgICAgIHZwaWMtPnBpY3R1cmVfZmxhZ3MuYml0 cy5kaXNhYmxlX2ZyYW1lX3JlY29uID0gMTsKKysKKysgICAgICAgIC8qKiBVc2UgTEFTVF9GUkFN RSBhbmQgQldEUkVGX0ZSQU1FIGZvciByZWZlcmVuY2UuICovCisrICAgICAgICB2cGljLT5yZWZf ZnJhbWVfY3RybF9sMC5maWVsZHMuc2VhcmNoX2lkeDAgPSBBVjFfUkVGX0ZSQU1FX0xBU1Q7Cisr ICAgICAgICB2cGljLT5yZWZfZnJhbWVfY3RybF9sMS5maWVsZHMuc2VhcmNoX2lkeDAgPSBBVjFf UkVGX0ZSQU1FX0JXRFJFRjsKKysKKysgICAgICAgIHJlZiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA9IHBpYy0+cmVmc1swXVtwaWMtPm5iX3JlZnNbMF0gLSAxXTsKKysgICAgICAgIGhyZWYg ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHJlZi0+cHJpdl9kYXRhOworKyAgICAgICAgaHBp Yy0+bGFzdF9pZHJfZnJhbWUgICAgICAgICAgID0gaHJlZi0+bGFzdF9pZHJfZnJhbWU7CisrICAg ICAgICBmaC0+cHJpbWFyeV9yZWZfZnJhbWUgICAgICAgICAgPSBocmVmLT5zbG90OworKyAgICAg ICAgZmgtPnJlZl9vcmRlcl9oaW50W2hyZWYtPnNsb3RdID0gcmVmLT5kaXNwbGF5X29yZGVyIC0g aHJlZi0+bGFzdF9pZHJfZnJhbWU7CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVYxX1JFRl9G UkFNRV9HT0xERU47IGkrKykgeworKyAgICAgICAgICAgIGZoLT5yZWZfZnJhbWVfaWR4W2ldID0g aHJlZi0+c2xvdDsKKysgICAgICAgIH0KKysKKysgICAgICAgIHJlZiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA9IHBpYy0+cmVmc1sxXVtwaWMtPm5iX3JlZnNbMV0gLSAxXTsKKysgICAgICAg IGhyZWYgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHJlZi0+cHJpdl9kYXRhOworKyAgICAg ICAgZmgtPnJlZl9vcmRlcl9oaW50W2hyZWYtPnNsb3RdID0gcmVmLT5kaXNwbGF5X29yZGVyIC0g aHJlZi0+bGFzdF9pZHJfZnJhbWU7CisrICAgICAgICBmb3IgKGkgPSBBVjFfUkVGX0ZSQU1FX0dP TERFTjsgaSA8IEFWMV9SRUZTX1BFUl9GUkFNRTsgaSsrKSB7CisrICAgICAgICAgICAgZmgtPnJl Zl9mcmFtZV9pZHhbaV0gPSBocmVmLT5zbG90OworKyAgICAgICAgfQorKyAgICAgICAgYnJlYWs7 CisrICAgIGRlZmF1bHQ6CisrICAgICAgICBhdl9hc3NlcnQwKDAgJiYgImludmFsaWQgcGljdHVy ZSB0eXBlIik7CisrICAgIH0KKysKKysgICAgZmgtPnNob3dfZnJhbWUgICAgICAgICAgICAgICAg PSBwaWMtPmRpc3BsYXlfb3JkZXIgPD0gcGljLT5lbmNvZGVfb3JkZXI7CisrICAgIGZoLT5zaG93 YWJsZV9mcmFtZSAgICAgICAgICAgID0gZmgtPmZyYW1lX3R5cGUgIT0gQVYxX0ZSQU1FX0tFWTsK KysgICAgZmgtPmZyYW1lX3dpZHRoX21pbnVzXzEgICAgICAgPSBhdmN0eC0+d2lkdGggLSAxOwor KyAgICBmaC0+ZnJhbWVfaGVpZ2h0X21pbnVzXzEgICAgICA9IGF2Y3R4LT5oZWlnaHQgLSAxOwor KyAgICBmaC0+cmVuZGVyX3dpZHRoX21pbnVzXzEgICAgICA9IGZoLT5mcmFtZV93aWR0aF9taW51 c18xOworKyAgICBmaC0+cmVuZGVyX2hlaWdodF9taW51c18xICAgICA9IGZoLT5mcmFtZV9oZWln aHRfbWludXNfMTsKKysgICAgZmgtPm9yZGVyX2hpbnQgICAgICAgICAgICAgICAgPSBwaWMtPmRp c3BsYXlfb3JkZXIgLSBocGljLT5sYXN0X2lkcl9mcmFtZTsKKysgICAgZmgtPnRpbGVfY29scyAg ICAgICAgICAgICAgICAgPSBwcml2LT50aWxlX2NvbHM7CisrICAgIGZoLT50aWxlX3Jvd3MgICAg ICAgICAgICAgICAgID0gcHJpdi0+dGlsZV9yb3dzOworKyAgICBmaC0+dGlsZV9jb2xzX2xvZzIg ICAgICAgICAgICA9IHByaXYtPnRpbGVfY29sc19sb2cyOworKyAgICBmaC0+dGlsZV9yb3dzX2xv ZzIgICAgICAgICAgICA9IHByaXYtPnRpbGVfcm93c19sb2cyOworKyAgICBmaC0+dW5pZm9ybV90 aWxlX3NwYWNpbmdfZmxhZyA9IHByaXYtPnVuaWZvcm1fdGlsZTsKKysgICAgZmgtPnRpbGVfc2l6 ZV9ieXRlc19taW51czEgICAgPSBwcml2LT5hdHRyX2V4dDIuYml0cy50aWxlX3NpemVfYnl0ZXNf bWludXMxOworKworKyAgICAvKiogaWdub3JlIE9OTFlfNHg0IG1vZGUgZm9yIGNvZGVkbG9zc2xl c3MgaXMgbm90IGZ1bGx5IGltcGxlbWVudGVkLiAqLworKyAgICBpZiAocHJpdi0+YXR0cl9leHQy LmJpdHMudHhfbW9kZV9zdXBwb3J0ICYgMHgwNCkKKysgICAgICAgIGZoLT50eF9tb2RlID0gQVYx X1RYX01PREVfU0VMRUNUOworKyAgICBlbHNlIGlmIChwcml2LT5hdHRyX2V4dDIuYml0cy50eF9t b2RlX3N1cHBvcnQgJiAweDAyKQorKyAgICAgICAgZmgtPnR4X21vZGUgPSBBVjFfVFhfTU9ERV9M QVJHRVNUOworKyAgICBlbHNlIHsKKysgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9S LCAiTm8gYXZhaWxhYmxlIHR4IG1vZGUgZm91bmQuXG4iKTsKKysgICAgICAgIHJldHVybiBBVkVS Uk9SKEVJTlZBTCk7CisrICAgIH0KKysKKysgICAgZm9yIChpID0gMDsgaSA8IGZoLT50aWxlX2Nv bHM7IGkrKykKKysgICAgICAgIGZoLT53aWR0aF9pbl9zYnNfbWludXNfMVtpXSA9IHZwaWMtPndp ZHRoX2luX3Nic19taW51c18xW2ldID0gcHJpdi0+d2lkdGhfaW5fc2JzX21pbnVzXzFbaV07Cisr CisrICAgIGZvciAoaSA9IDA7IGkgPCBmaC0+dGlsZV9yb3dzOyBpKyspCisrICAgICAgICBmaC0+ aGVpZ2h0X2luX3Nic19taW51c18xW2ldID0gdnBpYy0+aGVpZ2h0X2luX3Nic19taW51c18xW2ld ID0gcHJpdi0+aGVpZ2h0X2luX3Nic19taW51c18xW2ldOworKworKyAgICBtZW1jcHkoZmgtPmxv b3BfZmlsdGVyX3JlZl9kZWx0YXMsIGRlZmF1bHRfbG9vcF9maWx0ZXJfcmVmX2RlbHRhcywKKysg ICAgICAgICAgIEFWMV9UT1RBTF9SRUZTX1BFUl9GUkFNRSAqIHNpemVvZihpbnQ4X3QpKTsKKysK KysgICAgaWYgKGZoLT5mcmFtZV90eXBlID09IEFWMV9GUkFNRV9LRVkgJiYgZmgtPnNob3dfZnJh bWUpIHsKKysgICAgICAgIGZoLT5lcnJvcl9yZXNpbGllbnRfbW9kZSA9IDE7CisrICAgIH0KKysK KysgICAgaWYgKGZoLT5mcmFtZV90eXBlID09IEFWMV9GUkFNRV9LRVkgfHwgZmgtPmVycm9yX3Jl c2lsaWVudF9tb2RlKQorKyAgICAgICAgZmgtPnByaW1hcnlfcmVmX2ZyYW1lID0gQVYxX1BSSU1B UllfUkVGX05PTkU7CisrCisrICAgIHZwaWMtPmJhc2VfcWluZGV4ICAgICAgICAgID0gZmgtPmJh c2VfcV9pZHg7CisrICAgIHZwaWMtPmZyYW1lX3dpZHRoX21pbnVzXzEgID0gZmgtPmZyYW1lX3dp ZHRoX21pbnVzXzE7CisrICAgIHZwaWMtPmZyYW1lX2hlaWdodF9taW51c18xID0gZmgtPmZyYW1l X2hlaWdodF9taW51c18xOworKyAgICB2cGljLT5wcmltYXJ5X3JlZl9mcmFtZSAgICA9IGZoLT5w cmltYXJ5X3JlZl9mcmFtZTsKKysgICAgdnBpYy0+cmVjb25zdHJ1Y3RlZF9mcmFtZSAgPSBwaWMt PnJlY29uX3N1cmZhY2U7CisrICAgIHZwaWMtPmNvZGVkX2J1ZiAgICAgICAgICAgID0gcGljLT5v dXRwdXRfYnVmZmVyOworKyAgICB2cGljLT50aWxlX2NvbHMgICAgICAgICAgICA9IGZoLT50aWxl X2NvbHM7CisrICAgIHZwaWMtPnRpbGVfcm93cyAgICAgICAgICAgID0gZmgtPnRpbGVfcm93czsK KysgICAgdnBpYy0+b3JkZXJfaGludCAgICAgICAgICAgPSBmaC0+b3JkZXJfaGludDsKKysjaWYg VkFfQ0hFQ0tfVkVSU0lPTigxLCAxNSwgMCkKKysgICAgdnBpYy0+cmVmcmVzaF9mcmFtZV9mbGFn cyAgPSBmaC0+cmVmcmVzaF9mcmFtZV9mbGFnczsKKysjZW5kaWYKKysKKysgICAgdnBpYy0+cGlj dHVyZV9mbGFncy5iaXRzLmVuYWJsZV9mcmFtZV9vYnUgICAgID0gMDsKKysgICAgdnBpYy0+cGlj dHVyZV9mbGFncy5iaXRzLmZyYW1lX3R5cGUgICAgICAgICAgID0gZmgtPmZyYW1lX3R5cGU7Cisr ICAgIHZwaWMtPnBpY3R1cmVfZmxhZ3MuYml0cy5yZWR1Y2VkX3R4X3NldCAgICAgICA9IGZoLT5y ZWR1Y2VkX3R4X3NldDsKKysgICAgdnBpYy0+cGljdHVyZV9mbGFncy5iaXRzLmVycm9yX3Jlc2ls aWVudF9tb2RlID0gZmgtPmVycm9yX3Jlc2lsaWVudF9tb2RlOworKworKyAgICAvKiogbGV0IGRy aXZlciBkZWNpZGUgdG8gdXNlIHNpbmdsZSBvciBjb21wb3VuZCByZWZlcmVuY2UgcHJlZGljdGlv biBtb2RlLiAqLworKyAgICB2cGljLT5tb2RlX2NvbnRyb2xfZmxhZ3MuYml0cy5yZWZlcmVuY2Vf bW9kZSA9IGZoLT5yZWZlcmVuY2Vfc2VsZWN0ID8gMiA6IDA7CisrICAgIHZwaWMtPm1vZGVfY29u dHJvbF9mbGFncy5iaXRzLnR4X21vZGUgPSBmaC0+dHhfbW9kZTsKKysKKysgICAgdnBpYy0+dGls ZV9ncm91cF9vYnVfaGRyX2luZm8uYml0cy5vYnVfaGFzX3NpemVfZmllbGQgPSAxOworKworKyAg ICAvKiogc2V0IHJlZmVyZW5jZS4gKi8KKysgICAgZm9yIChpID0gMDsgaSA8IEFWMV9SRUZTX1BF Ul9GUkFNRTsgaSsrKQorKyAgICAgICAgdnBpYy0+cmVmX2ZyYW1lX2lkeFtpXSA9IGZoLT5yZWZf ZnJhbWVfaWR4W2ldOworKworKyAgICBmb3IgKGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVModnBp Yy0+cmVmZXJlbmNlX2ZyYW1lcyk7IGkrKykKKysgICAgICAgIHZwaWMtPnJlZmVyZW5jZV9mcmFt ZXNbaV0gPSBWQV9JTlZBTElEX1NVUkZBQ0U7CisrCisrICAgIGZvciAoaSA9IDA7IGkgPCBNQVhf UkVGRVJFTkNFX0xJU1RfTlVNOyBpKyspIHsKKysgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwg cGljLT5uYl9yZWZzW2ldOyBqKyspIHsKKysgICAgICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUg KnJlZl9waWMgPSBwaWMtPnJlZnNbaV1bal07CisrCisrICAgICAgICAgICAgc2xvdCA9ICgoVkFB UElFbmNvZGVBVjFQaWN0dXJlKilyZWZfcGljLT5wcml2X2RhdGEpLT5zbG90OworKyAgICAgICAg ICAgIGF2X2Fzc2VydDAodnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tzbG90XSA9PSBWQV9JTlZBTElE X1NVUkZBQ0UpOworKworKyAgICAgICAgICAgIHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNbc2xvdF0g PSByZWZfcGljLT5yZWNvbl9zdXJmYWNlOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGZo X29idS0+b2J1X3NpemVfYnl0ZV9sZW4gPSBwcml2LT5hdHRyX2V4dDIuYml0cy5vYnVfc2l6ZV9i eXRlc19taW51czEgKyAxOworKyAgICByZXQgPSB2YWFwaV9lbmNvZGVfYXYxX2FkZF9vYnUoYXZj dHgsIG9idSwgQVYxX09CVV9GUkFNRV9IRUFERVIsICZwcml2LT5maCk7CisrICAgIGlmIChyZXQg PCAwKQorKyAgICAgICAgZ290byBlbmQ7CisrCisrICAgIHJldCA9IHZhYXBpX2VuY29kZV9hdjFf d3JpdGVfb2J1KGF2Y3R4LCBwcml2LT5maF9kYXRhLCAmcHJpdi0+ZmhfZGF0YV9sZW4sIG9idSk7 CisrICAgIGlmIChyZXQgPCAwKQorKyAgICAgICAgZ290byBlbmQ7CisrCisrICAgIGlmICghKGN0 eC0+dmFfcmNfbW9kZSAmIFZBX1JDX0NRUCkpIHsKKysgICAgICAgIHZwaWMtPm1pbl9iYXNlX3Fp bmRleCA9IGF2X2NsaXAoYXZjdHgtPnFtaW4sIDEsIEFWMV9NQVhfUVVBTlQpOworKyAgICAgICAg dnBpYy0+bWF4X2Jhc2VfcWluZGV4ID0gYXZfY2xpcChhdmN0eC0+cW1heCwgMSwgQVYxX01BWF9R VUFOVCk7CisrCisrICAgICAgICB2cGljLT5iaXRfb2Zmc2V0X3FpbmRleCAgICAgICAgICAgICAg PSBwcml2LT5xaW5kZXhfb2Zmc2V0OworKyAgICAgICAgdnBpYy0+Yml0X29mZnNldF9sb29wZmls dGVyX3BhcmFtcyAgID0gcHJpdi0+bG9vcGZpbHRlcl9vZmZzZXQ7CisrICAgICAgICB2cGljLT5i aXRfb2Zmc2V0X2NkZWZfcGFyYW1zICAgICAgICAgPSBwcml2LT5jZGVmX3N0YXJ0X29mZnNldDsK KysgICAgICAgIHZwaWMtPnNpemVfaW5fYml0c19jZGVmX3BhcmFtcyAgICAgICA9IHByaXYtPmNk ZWZfcGFyYW1fc2l6ZTsKKysgICAgICAgIHZwaWMtPnNpemVfaW5fYml0c19mcmFtZV9oZHJfb2J1 ICAgICA9IHByaXYtPmZoX2RhdGFfbGVuOworKyAgICAgICAgdnBpYy0+Ynl0ZV9vZmZzZXRfZnJh bWVfaGRyX29idV9zaXplID0gKCgocGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9JRFIpID8KKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPnNoX2Rh dGFfbGVuIC8gOCA6IDApICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChmaF9vYnUtPmhlYWRlci5vYnVfZXh0ZW5zaW9uX2ZsYWcgPworKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiA6IDEpKTsKKysgICAgfQor KworK2VuZDoKKysgICAgZmZfY2JzX2ZyYWdtZW50X3Jlc2V0KG9idSk7CisrICAgIHJldHVybiBy ZXQ7CisrfQorKworK3N0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2F2MV9pbml0X3NsaWNlX3BhcmFt cyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUFQSUVuY29kZVNsaWNlICpzbGljZSkK Kyt7CisrICAgIFZBQVBJRW5jb2RlQVYxQ29udGV4dCAgICAgICpwcml2ID0gYXZjdHgtPnByaXZf ZGF0YTsKKysgICAgVkFFbmNUaWxlR3JvdXBCdWZmZXJBVjEgICp2c2xpY2UgPSBzbGljZS0+Y29k ZWNfc2xpY2VfcGFyYW1zOworKyAgICBDb2RlZEJpdHN0cmVhbUFWMUNvbnRleHQgICpjYmN0eCA9 IHByaXYtPmNiYy0+cHJpdl9kYXRhOworKyAgICBpbnQgZGl2OworKworKyAgICAvKiogU2V0IHRp bGUgZ3JvdXAgaW5mby4gKi8KKysgICAgZGl2ID0gcHJpdi0+dGlsZV9jb2xzICogcHJpdi0+dGls ZV9yb3dzIC8gcHJpdi0+dGlsZV9ncm91cHM7CisrICAgIHZzbGljZS0+dGdfc3RhcnQgPSBzbGlj ZS0+aW5kZXggKiBkaXY7CisrICAgIGlmIChzbGljZS0+aW5kZXggPT0gKHByaXYtPnRpbGVfZ3Jv dXBzIC0gMSkpIHsKKysgICAgICAgIHZzbGljZS0+dGdfZW5kID0gcHJpdi0+dGlsZV9jb2xzICog cHJpdi0+dGlsZV9yb3dzIC0gMTsKKysgICAgICAgIGNiY3R4LT5zZWVuX2ZyYW1lX2hlYWRlciA9 IDA7CisrICAgIH0gZWxzZSB7CisrICAgICAgICB2c2xpY2UtPnRnX2VuZCA9IChzbGljZS0+aW5k ZXggKyAxKSAqIGRpdiAtIDE7CisrICAgIH0KKysKKysgICAgcmV0dXJuIDA7CisrfQorKworK3N0 YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2F2MV93cml0ZV9waWN0dXJlX2hlYWRlcihBVkNvZGVjQ29u dGV4dCAqYXZjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpkYXRhLCBzaXplX3QgKmRhdGFfbGVuKQor K3sKKysgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0ICAgICAqcHJpdiA9IGF2Y3R4LT5wcml2X2Rh dGE7CisrICAgIENvZGVkQml0c3RyZWFtRnJhZ21lbnQgICAgICpvYnUgPSAmcHJpdi0+Y3VycmVu dF9vYnU7CisrICAgIENvZGVkQml0c3RyZWFtQVYxQ29udGV4dCAqY2JjdHggPSBwcml2LT5jYmMt PnByaXZfZGF0YTsKKysgICAgQVYxUmF3T0JVICAgICAgICAgICAgICAgKmZoX29idSA9ICZwcml2 LT5maDsKKysgICAgQVYxUmF3RnJhbWVIZWFkZXIgICAgICAgKnJlcF9maCA9ICZmaF9vYnUtPm9i dS5mcmFtZV9oZWFkZXI7CisrICAgIFZBQVBJRW5jb2RlQVYxUGljdHVyZSAqaHJlZjsKKysgICAg aW50IHJldCA9IDA7CisrCisrICAgIHBpYy0+dGFpbF9zaXplID0gMDsKKysgICAgLyoqIFBhY2sg cmVwZWF0IGZyYW1lIGhlYWRlci4gKi8KKysgICAgaWYgKHBpYy0+ZGlzcGxheV9vcmRlciA+IHBp Yy0+ZW5jb2RlX29yZGVyKSB7CisrICAgICAgICBtZW1zZXQoZmhfb2J1LCAwLCBzaXplb2YoKmZo X29idSkpOworKyAgICAgICAgaHJlZiA9IHBpYy0+cmVmc1swXVtwaWMtPm5iX3JlZnNbMF0gLSAx XS0+cHJpdl9kYXRhOworKyAgICAgICAgZmhfb2J1LT5oZWFkZXIub2J1X3R5cGUgPSBBVjFfT0JV X0ZSQU1FX0hFQURFUjsKKysgICAgICAgIGZoX29idS0+aGVhZGVyLm9idV9oYXNfc2l6ZV9maWVs ZCA9IDE7CisrCisrICAgICAgICByZXBfZmgtPnNob3dfZXhpc3RpbmdfZnJhbWUgICA9IDE7Cisr ICAgICAgICByZXBfZmgtPmZyYW1lX3RvX3Nob3dfbWFwX2lkeCA9IGhyZWYtPnNsb3QgPT0gMDsK KysgICAgICAgIHJlcF9maC0+ZnJhbWVfdHlwZSAgICAgICAgICAgID0gQVYxX0ZSQU1FX0lOVEVS OworKyAgICAgICAgcmVwX2ZoLT5mcmFtZV93aWR0aF9taW51c18xICAgPSBhdmN0eC0+d2lkdGgg LSAxOworKyAgICAgICAgcmVwX2ZoLT5mcmFtZV9oZWlnaHRfbWludXNfMSAgPSBhdmN0eC0+aGVp Z2h0IC0gMTsKKysgICAgICAgIHJlcF9maC0+cmVuZGVyX3dpZHRoX21pbnVzXzEgID0gcmVwX2Zo LT5mcmFtZV93aWR0aF9taW51c18xOworKyAgICAgICAgcmVwX2ZoLT5yZW5kZXJfaGVpZ2h0X21p bnVzXzEgPSByZXBfZmgtPmZyYW1lX2hlaWdodF9taW51c18xOworKworKyAgICAgICAgY2JjdHgt PnNlZW5fZnJhbWVfaGVhZGVyID0gMDsKKysKKysgICAgICAgIHJldCA9IHZhYXBpX2VuY29kZV9h djFfYWRkX29idShhdmN0eCwgb2J1LCBBVjFfT0JVX0ZSQU1FX0hFQURFUiwgJnByaXYtPmZoKTsK KysgICAgICAgIGlmIChyZXQgPCAwKQorKyAgICAgICAgICAgIGdvdG8gZW5kOworKworKyAgICAg ICAgcmV0ID0gdmFhcGlfZW5jb2RlX2F2MV93cml0ZV9vYnUoYXZjdHgsIHBpYy0+dGFpbF9kYXRh LCAmcGljLT50YWlsX3NpemUsIG9idSk7CisrICAgICAgICBpZiAocmV0IDwgMCkKKysgICAgICAg ICAgICBnb3RvIGVuZDsKKysKKysgICAgICAgIHBpYy0+dGFpbF9zaXplIC89IDg7CisrICAgIH0K KysKKysgICAgbWVtY3B5KGRhdGEsICZwcml2LT5maF9kYXRhLCBNQVhfUEFSQU1fQlVGRkVSX1NJ WkUgKiBzaXplb2YoY2hhcikpOworKyAgICAqZGF0YV9sZW4gPSBwcml2LT5maF9kYXRhX2xlbjsK KysKKytlbmQ6CisrICAgIGZmX2Nic19mcmFnbWVudF9yZXNldChvYnUpOworKyAgICByZXR1cm4g cmV0OworK30KKysKKytzdGF0aWMgY29uc3QgVkFBUElFbmNvZGVQcm9maWxlIHZhYXBpX2VuY29k ZV9hdjFfcHJvZmlsZXNbXSA9IHsKKysgICAgeyBGRl9QUk9GSUxFX0FWMV9NQUlOLCAgOCwgMywg MSwgMSwgVkFQcm9maWxlQVYxUHJvZmlsZTAgfSwKKysgICAgeyBGRl9QUk9GSUxFX0FWMV9NQUlO LCAxMCwgMywgMSwgMSwgVkFQcm9maWxlQVYxUHJvZmlsZTAgfSwKKysgICAgeyBGRl9QUk9GSUxF X1VOS05PV04gfQorK307CisrCisrc3RhdGljIGNvbnN0IFZBQVBJRW5jb2RlVHlwZSB2YWFwaV9l bmNvZGVfdHlwZV9hdjEgPSB7CisrICAgIC5wcm9maWxlcyAgICAgICAgPSB2YWFwaV9lbmNvZGVf YXYxX3Byb2ZpbGVzLAorKyAgICAuZmxhZ3MgICAgICAgICAgID0gRkxBR19CX1BJQ1RVUkVTIHwg RkxBR19USU1FU1RBTVBfTk9fREVMQVksCisrICAgIC5kZWZhdWx0X3F1YWxpdHkgPSAyNSwKKysK KysgICAgLmdldF9lbmNvZGVyX2NhcHMgPSAmdmFhcGlfZW5jb2RlX2F2MV9nZXRfZW5jb2Rlcl9j YXBzLAorKyAgICAuY29uZmlndXJlICAgICAgICA9ICZ2YWFwaV9lbmNvZGVfYXYxX2NvbmZpZ3Vy ZSwKKysKKysgICAgLnNlcXVlbmNlX2hlYWRlcl90eXBlICA9IFZBRW5jUGFja2VkSGVhZGVyU2Vx dWVuY2UsCisrICAgIC5zZXF1ZW5jZV9wYXJhbXNfc2l6ZSAgPSBzaXplb2YoVkFFbmNTZXF1ZW5j ZVBhcmFtZXRlckJ1ZmZlckFWMSksCisrICAgIC5pbml0X3NlcXVlbmNlX3BhcmFtcyAgPSAmdmFh cGlfZW5jb2RlX2F2MV9pbml0X3NlcXVlbmNlX3BhcmFtcywKKysgICAgLndyaXRlX3NlcXVlbmNl X2hlYWRlciA9ICZ2YWFwaV9lbmNvZGVfYXYxX3dyaXRlX3NlcXVlbmNlX2hlYWRlciwKKysKKysg ICAgLnBpY3R1cmVfcHJpdl9kYXRhX3NpemUgPSBzaXplb2YoVkFBUElFbmNvZGVBVjFQaWN0dXJl KSwKKysgICAgLnBpY3R1cmVfaGVhZGVyX3R5cGUgICAgPSBWQUVuY1BhY2tlZEhlYWRlclBpY3R1 cmUsCisrICAgIC5waWN0dXJlX3BhcmFtc19zaXplICAgID0gc2l6ZW9mKFZBRW5jUGljdHVyZVBh cmFtZXRlckJ1ZmZlckFWMSksCisrICAgIC5pbml0X3BpY3R1cmVfcGFyYW1zICAgID0gJnZhYXBp X2VuY29kZV9hdjFfaW5pdF9waWN0dXJlX3BhcmFtcywKKysgICAgLndyaXRlX3BpY3R1cmVfaGVh ZGVyICAgPSAmdmFhcGlfZW5jb2RlX2F2MV93cml0ZV9waWN0dXJlX2hlYWRlciwKKysKKysgICAg LnNsaWNlX3BhcmFtc19zaXplID0gc2l6ZW9mKFZBRW5jVGlsZUdyb3VwQnVmZmVyQVYxKSwKKysg ICAgLmluaXRfc2xpY2VfcGFyYW1zID0gJnZhYXBpX2VuY29kZV9hdjFfaW5pdF9zbGljZV9wYXJh bXMsCisrfTsKKysKKytzdGF0aWMgYXZfY29sZCBpbnQgdmFhcGlfZW5jb2RlX2F2MV9pbml0KEFW Q29kZWNDb250ZXh0ICphdmN0eCkKKyt7CisrICAgIFZBQVBJRW5jb2RlQ29udGV4dCAgICAgICpj dHggPSBhdmN0eC0+cHJpdl9kYXRhOworKyAgICBWQUFQSUVuY29kZUFWMUNvbnRleHQgICpwcml2 ID0gYXZjdHgtPnByaXZfZGF0YTsKKysgICAgVkFDb25maWdBdHRyaWIgYXR0cjsKKysgICAgVkFT dGF0dXMgdmFzOworKyAgICBpbnQgcmV0OworKworKyAgICBjdHgtPmNvZGVjID0gJnZhYXBpX2Vu Y29kZV90eXBlX2F2MTsKKysKKysgICAgY3R4LT5kZXNpcmVkX3BhY2tlZF9oZWFkZXJzID0KKysg ICAgICAgIFZBX0VOQ19QQUNLRURfSEVBREVSX1NFUVVFTkNFIHwKKysgICAgICAgIFZBX0VOQ19Q QUNLRURfSEVBREVSX1BJQ1RVUkU7CisrCisrICAgIGlmIChhdmN0eC0+cHJvZmlsZSA9PSBGRl9Q Uk9GSUxFX1VOS05PV04pCisrICAgICAgICBhdmN0eC0+cHJvZmlsZSA9IHByaXYtPnByb2ZpbGU7 CisrICAgIGlmIChhdmN0eC0+bGV2ZWwgPT0gRkZfUFJPRklMRV9VTktOT1dOKQorKyAgICAgICAg YXZjdHgtPmxldmVsID0gcHJpdi0+bGV2ZWw7CisrCisrICAgIGlmIChhdmN0eC0+bGV2ZWwgIT0g RkZfUFJPRklMRV9VTktOT1dOICYmIGF2Y3R4LT5sZXZlbCAmIH4weDFmKSB7CisrICAgICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgbGV2ZWwgJWRcbiIsIGF2Y3R4LT5s ZXZlbCk7CisrICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworKyAgICB9CisrCisrICAg IHJldCA9IGZmX3ZhYXBpX2VuY29kZV9pbml0KGF2Y3R4KTsKKysgICAgaWYgKHJldCA8IDApCisr ICAgICAgICByZXR1cm4gcmV0OworKworKyAgICBhdHRyLnR5cGUgPSBWQUNvbmZpZ0F0dHJpYkVu Y0FWMTsKKysgICAgdmFzID0gdmFHZXRDb25maWdBdHRyaWJ1dGVzKGN0eC0+aHdjdHgtPmRpc3Bs YXksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnZhX3Byb2ZpbGUsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnZhX2VudHJ5cG9pbnQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXR0ciwgMSk7CisrICAgIGlmICh2YXMgIT0g VkFfU1RBVFVTX1NVQ0NFU1MpIHsKKysgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9S LCAiRmFpbGVkIHRvIHF1ZXJ5ICIKKysgICAgICAgICAgICAgICAiY29uZmlnIGF0dHJpYnV0ZTog JWQgKCVzKS5cbiIsIHZhcywgdmFFcnJvclN0cih2YXMpKTsKKysgICAgICAgIHJldHVybiBBVkVS Uk9SX0VYVEVSTkFMOworKyAgICB9IGVsc2UgaWYgKGF0dHIudmFsdWUgPT0gVkFfQVRUUklCX05P VF9TVVBQT1JURUQpIHsKKysgICAgICAgIHByaXYtPmF0dHIudmFsdWUgPSAwOworKyAgICAgICAg YXZfbG9nKGF2Y3R4LCBBVl9MT0dfV0FSTklORywgIkF0dHJpYnV0ZSB0eXBlOiVkIGlzIG5vdCAi CisrICAgICAgICAgICAgICAgInN1cHBvcnRlZC5cbiIsIGF0dHIudHlwZSk7CisrICAgIH0gZWxz ZSB7CisrICAgICAgICBwcml2LT5hdHRyLnZhbHVlID0gYXR0ci52YWx1ZTsKKysgICAgfQorKwor KyAgICBhdHRyLnR5cGUgPSBWQUNvbmZpZ0F0dHJpYkVuY0FWMUV4dDE7CisrICAgIHZhcyA9IHZh R2V0Q29uZmlnQXR0cmlidXRlcyhjdHgtPmh3Y3R4LT5kaXNwbGF5LAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY3R4LT52YV9wcm9maWxlLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY3R4LT52YV9lbnRyeXBvaW50LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmF0dHIsIDEpOworKyAgICBpZiAodmFzICE9IFZBX1NUQVRVU19TVUNDRVNTKSB7 CisrICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBxdWVyeSAi CisrICAgICAgICAgICAgICAgImNvbmZpZyBhdHRyaWJ1dGU6ICVkICglcykuXG4iLCB2YXMsIHZh RXJyb3JTdHIodmFzKSk7CisrICAgICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKKysgICAg fSBlbHNlIGlmIChhdHRyLnZhbHVlID09IFZBX0FUVFJJQl9OT1RfU1VQUE9SVEVEKSB7CisrICAg ICAgICBwcml2LT5hdHRyX2V4dDEudmFsdWUgPSAwOworKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBB Vl9MT0dfV0FSTklORywgIkF0dHJpYnV0ZSB0eXBlOiVkIGlzIG5vdCAiCisrICAgICAgICAgICAg ICAgInN1cHBvcnRlZC5cbiIsIGF0dHIudHlwZSk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBw cml2LT5hdHRyX2V4dDEudmFsdWUgPSBhdHRyLnZhbHVlOworKyAgICB9CisrCisrICAgIC8qKiBU aGlzIGF0dHIgcHJvdmlkZXMgZXNzZW50aWFsIGluZGljYXRvcnMsIHJldHVybiBlcnJvciBpZiBu b3Qgc3VwcG9ydC4gKi8KKysgICAgYXR0ci50eXBlID0gVkFDb25maWdBdHRyaWJFbmNBVjFFeHQy OworKyAgICB2YXMgPSB2YUdldENvbmZpZ0F0dHJpYnV0ZXMoY3R4LT5od2N0eC0+ZGlzcGxheSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+dmFfcHJvZmlsZSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+dmFfZW50cnlwb2ludCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZhdHRyLCAxKTsKKysgICAgaWYgKHZhcyAhPSBWQV9T VEFUVVNfU1VDQ0VTUyB8fCBhdHRyLnZhbHVlID09IFZBX0FUVFJJQl9OT1RfU1VQUE9SVEVEKSB7 CisrICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBxdWVyeSAi CisrICAgICAgICAgICAgICAgImNvbmZpZyBhdHRyaWJ1dGU6ICVkICglcykuXG4iLCB2YXMsIHZh RXJyb3JTdHIodmFzKSk7CisrICAgICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKKysgICAg fSBlbHNlIHsKKysgICAgICAgIHByaXYtPmF0dHJfZXh0Mi52YWx1ZSA9IGF0dHIudmFsdWU7Cisr ICAgIH0KKysKKysgICAgcmV0ID0gdmFhcGlfZW5jb2RlX2F2MV9zZXRfdGlsZShhdmN0eCk7Cisr ICAgIGlmIChyZXQgPCAwKQorKyAgICAgICAgcmV0dXJuIHJldDsKKysKKysgICAgcmV0dXJuIDA7 CisrfQorKworK3N0YXRpYyBhdl9jb2xkIGludCB2YWFwaV9lbmNvZGVfYXYxX2Nsb3NlKEFWQ29k ZWNDb250ZXh0ICphdmN0eCkKKyt7CisrICAgIFZBQVBJRW5jb2RlQVYxQ29udGV4dCAqcHJpdiA9 IGF2Y3R4LT5wcml2X2RhdGE7CisrCisrICAgIGZmX2Nic19mcmFnbWVudF9mcmVlKCZwcml2LT5j dXJyZW50X29idSk7CisrICAgIGZmX2Nic19jbG9zZSgmcHJpdi0+Y2JjKTsKKysKKysgICAgcmV0 dXJuIGZmX3ZhYXBpX2VuY29kZV9jbG9zZShhdmN0eCk7CisrfQorKworKyNkZWZpbmUgT0ZGU0VU KHgpIG9mZnNldG9mKFZBQVBJRW5jb2RlQVYxQ29udGV4dCwgeCkKKysjZGVmaW5lIEZMQUdTIChB Vl9PUFRfRkxBR19WSURFT19QQVJBTSB8IEFWX09QVF9GTEFHX0VOQ09ESU5HX1BBUkFNKQorKwor K3N0YXRpYyBjb25zdCBBVk9wdGlvbiB2YWFwaV9lbmNvZGVfYXYxX29wdGlvbnNbXSA9IHsKKysg ICAgVkFBUElfRU5DT0RFX0NPTU1PTl9PUFRJT05TLAorKyAgICBWQUFQSV9FTkNPREVfUkNfT1BU SU9OUywKKysgICAgeyAicHJvZmlsZSIsICJTZXQgcHJvZmlsZSAoc2VxX3Byb2ZpbGUpIiwKKysg ICAgICBPRkZTRVQocHJvZmlsZSksIEFWX09QVF9UWVBFX0lOVCwKKysgICAgICB7IC5pNjQgPSBG Rl9QUk9GSUxFX1VOS05PV04gfSwgRkZfUFJPRklMRV9VTktOT1dOLCAweGZmLCBGTEFHUywgInBy b2ZpbGUiIH0sCisrCisrI2RlZmluZSBQUk9GSUxFKG5hbWUsIHZhbHVlKSAgbmFtZSwgTlVMTCwg MCwgQVZfT1BUX1RZUEVfQ09OU1QsIFwKKysgICAgeyAuaTY0ID0gdmFsdWUgfSwgMCwgMCwgRkxB R1MsICJwcm9maWxlIgorKyAgICB7IFBST0ZJTEUoIm1haW4iLCAgICAgICAgICAgICAgIEZGX1BS T0ZJTEVfQVYxX01BSU4pIH0sCisrICAgIHsgUFJPRklMRSgiaGlnaCIsICAgICAgICAgICAgICAg RkZfUFJPRklMRV9BVjFfSElHSCkgfSwKKysgICAgeyBQUk9GSUxFKCJwcm9mZXNzaW9uYWwiLCAg ICAgICBGRl9QUk9GSUxFX0FWMV9QUk9GRVNTSU9OQUwpIH0sCisrI3VuZGVmIFBST0ZJTEUKKysK KysgICAgeyAidGllciIsICJTZXQgdGllciAoc2VxX3RpZXIpIiwKKysgICAgICBPRkZTRVQodGll ciksIEFWX09QVF9UWVBFX0lOVCwgeyAuaTY0ID0gMCB9LCAwLCAxLCBGTEFHUywgInRpZXIiIH0s CisrICAgIHsgIm1haW4iLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwKKysgICAgICB7IC5p NjQgPSAwIH0sIDAsIDAsIEZMQUdTLCAidGllciIgfSwKKysgICAgeyAiaGlnaCIsIE5VTEwsIDAs IEFWX09QVF9UWVBFX0NPTlNULAorKyAgICAgIHsgLmk2NCA9IDEgfSwgMCwgMCwgRkxBR1MsICJ0 aWVyIiB9LAorKyAgICB7ICJsZXZlbCIsICJTZXQgbGV2ZWwgKHNlcV9sZXZlbF9pZHgpIiwKKysg ICAgICBPRkZTRVQobGV2ZWwpLCBBVl9PUFRfVFlQRV9JTlQsCisrICAgICAgeyAuaTY0ID0gRkZf UFJPRklMRV9VTktOT1dOIH0sIEZGX1BST0ZJTEVfVU5LTk9XTiwgMHgxZiwgRkxBR1MsICJsZXZl bCIgfSwKKysKKysjZGVmaW5lIExFVkVMKG5hbWUsIHZhbHVlKSBuYW1lLCBOVUxMLCAwLCBBVl9P UFRfVFlQRV9DT05TVCwgXAorKyAgICAgIHsgLmk2NCA9IHZhbHVlIH0sIDAsIDAsIEZMQUdTLCAi bGV2ZWwiCisrICAgIHsgTEVWRUwoIjIuMCIsICAwKSB9LAorKyAgICB7IExFVkVMKCIyLjEiLCAg MSkgfSwKKysgICAgeyBMRVZFTCgiMy4wIiwgIDQpIH0sCisrICAgIHsgTEVWRUwoIjMuMSIsICA1 KSB9LAorKyAgICB7IExFVkVMKCI0LjAiLCAgOCkgfSwKKysgICAgeyBMRVZFTCgiNC4xIiwgIDkp IH0sCisrICAgIHsgTEVWRUwoIjUuMCIsIDEyKSB9LAorKyAgICB7IExFVkVMKCI1LjEiLCAxMykg fSwKKysgICAgeyBMRVZFTCgiNS4yIiwgMTQpIH0sCisrICAgIHsgTEVWRUwoIjUuMyIsIDE1KSB9 LAorKyAgICB7IExFVkVMKCI2LjAiLCAxNikgfSwKKysgICAgeyBMRVZFTCgiNi4xIiwgMTcpIH0s CisrICAgIHsgTEVWRUwoIjYuMiIsIDE4KSB9LAorKyAgICB7IExFVkVMKCI2LjMiLCAxOSkgfSwK KysjdW5kZWYgTEVWRUwKKysKKysgICAgeyAidGlsZXMiLCAiVGlsZSBjb2x1bW5zIHggcm93cyAo VXNlIG1pbmltYWwgdGlsZSBjb2x1bW4vcm93IG51bWJlciBhdXRvbWF0aWNhbGx5IGJ5IGRlZmF1 bHQpIiwKKysgICAgICBPRkZTRVQodGlsZV9jb2xzKSwgQVZfT1BUX1RZUEVfSU1BR0VfU0laRSwg eyAuc3RyID0gTlVMTCB9LCAwLCAwLCBGTEFHUyB9LAorKyAgICB7ICJ0aWxlX2dyb3VwcyIsICJO dW1iZXIgb2YgdGlsZSBncm91cHMgZm9yIGVuY29kaW5nIiwKKysgICAgICBPRkZTRVQodGlsZV9n cm91cHMpLCBBVl9PUFRfVFlQRV9JTlQsIHsgLmk2NCA9IDEgfSwgMSwgQVYxX01BWF9USUxFX1JP V1MgKiBBVjFfTUFYX1RJTEVfQ09MUywgRkxBR1MgfSwKKysKKysgICAgeyBOVUxMIH0sCisrfTsK KysKKytzdGF0aWMgY29uc3QgRkZDb2RlY0RlZmF1bHQgdmFhcGlfZW5jb2RlX2F2MV9kZWZhdWx0 c1tdID0geworKyAgICB7ICJiIiwgICAgICAgICAgICAgICIwIiAgIH0sCisrICAgIHsgImJmIiwg ICAgICAgICAgICAgIjIiICAgfSwKKysgICAgeyAiZyIsICAgICAgICAgICAgICAiMTIwIiB9LAor KyAgICB7ICJxbWluIiwgICAgICAgICAgICIxIiAgIH0sCisrICAgIHsgInFtYXgiLCAgICAgICAg ICAgIjI1NSIgfSwKKysgICAgeyBOVUxMIH0sCisrfTsKKysKKytzdGF0aWMgY29uc3QgQVZDbGFz cyB2YWFwaV9lbmNvZGVfYXYxX2NsYXNzID0geworKyAgICAuY2xhc3NfbmFtZSA9ICJhdjFfdmFh cGkiLAorKyAgICAuaXRlbV9uYW1lICA9IGF2X2RlZmF1bHRfaXRlbV9uYW1lLAorKyAgICAub3B0 aW9uICAgICA9IHZhYXBpX2VuY29kZV9hdjFfb3B0aW9ucywKKysgICAgLnZlcnNpb24gICAgPSBM SUJBVlVUSUxfVkVSU0lPTl9JTlQsCisrfTsKKysKKytjb25zdCBGRkNvZGVjIGZmX2F2MV92YWFw aV9lbmNvZGVyID0geworKyAgICAucC5uYW1lICAgICAgICAgPSAiYXYxX3ZhYXBpIiwKKysgICAg Q09ERUNfTE9OR19OQU1FKCJBVjEgKFZBQVBJKSIpLAorKyAgICAucC50eXBlICAgICAgICAgPSBB Vk1FRElBX1RZUEVfVklERU8sCisrICAgIC5wLmlkICAgICAgICAgICA9IEFWX0NPREVDX0lEX0FW MSwKKysgICAgLnByaXZfZGF0YV9zaXplID0gc2l6ZW9mKFZBQVBJRW5jb2RlQVYxQ29udGV4dCks CisrICAgIC5pbml0ICAgICAgICAgICA9ICZ2YWFwaV9lbmNvZGVfYXYxX2luaXQsCisrICAgIEZG X0NPREVDX1JFQ0VJVkVfUEFDS0VUX0NCKCZmZl92YWFwaV9lbmNvZGVfcmVjZWl2ZV9wYWNrZXQp LAorKyAgICAuY2xvc2UgICAgICAgICAgPSAmdmFhcGlfZW5jb2RlX2F2MV9jbG9zZSwKKysgICAg LnAucHJpdl9jbGFzcyAgID0gJnZhYXBpX2VuY29kZV9hdjFfY2xhc3MsCisrICAgIC5wLmNhcGFi aWxpdGllcyA9IEFWX0NPREVDX0NBUF9ERUxBWSB8IEFWX0NPREVDX0NBUF9IQVJEV0FSRSB8Cisr ICAgICAgICAgICAgICAgICAgICAgIEFWX0NPREVDX0NBUF9EUjEgfCBBVl9DT0RFQ19DQVBfRU5D T0RFUl9SRU9SREVSRURfT1BBUVVFLAorKyAgICAuY2Fwc19pbnRlcm5hbCAgPSBGRl9DT0RFQ19D QVBfTk9UX0lOSVRfVEhSRUFEU0FGRSB8CisrICAgICAgICAgICAgICAgICAgICAgIEZGX0NPREVD X0NBUF9JTklUX0NMRUFOVVAsCisrICAgIC5kZWZhdWx0cyAgICAgICA9IHZhYXBpX2VuY29kZV9h djFfZGVmYXVsdHMsCisrICAgIC5wLnBpeF9mbXRzID0gKGNvbnN0IGVudW0gQVZQaXhlbEZvcm1h dFtdKSB7CisrICAgICAgICBBVl9QSVhfRk1UX1ZBQVBJLAorKyAgICAgICAgQVZfUElYX0ZNVF9O T05FLAorKyAgICB9LAorKyAgICAuaHdfY29uZmlncyAgICAgPSBmZl92YWFwaV9lbmNvZGVfaHdf Y29uZmlncywKKysgICAgLnAud3JhcHBlcl9uYW1lID0gInZhYXBpIiwKKyt9OworZGlmZiAtLWdp dCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX2gyNjQuYyBiL2xpYmF2Y29kZWMvdmFhcGlfZW5j b2RlX2gyNjQuYworaW5kZXggNjQ1ZjZhOS4uYzIwNWQxZSAxMDA2NDQKKy0tLSBhL2xpYmF2Y29k ZWMvdmFhcGlfZW5jb2RlX2gyNjQuYworKysrIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2 NC5jCitAQCAtNjE0LDcgKzYxNCw3IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjRfaW5p dF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgIFZBQVBJRW5jb2Rl UGljdHVyZSAgICAgICAgICAgICAgKnByZXYgPSBwaWMtPnByZXY7CisgICAgIFZBQVBJRW5jb2Rl SDI2NFBpY3R1cmUgICAgICAgICAqaHByZXYgPSBwcmV2ID8gcHJldi0+cHJpdl9kYXRhIDogTlVM TDsKKyAgICAgVkFFbmNQaWN0dXJlUGFyYW1ldGVyQnVmZmVySDI2NCAqdnBpYyA9IHBpYy0+Y29k ZWNfcGljdHVyZV9wYXJhbXM7CistICAgIGludCBpOworKyAgICBpbnQgaSwgaiA9IDA7CisgCisg ICAgIGlmIChwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0lEUikgeworICAgICAgICAgYXZfYXNz ZXJ0MChwaWMtPmRpc3BsYXlfb3JkZXIgPT0gcGljLT5lbmNvZGVfb3JkZXIpOworQEAgLTcxNSwy NCArNzE1LDI2IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjRfaW5pdF9waWN0dXJlX3Bh cmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAgICAuVG9wRmllbGRPcmRlckNudCAg ICA9IGhwaWMtPnBpY19vcmRlcl9jbnQsCisgICAgICAgICAuQm90dG9tRmllbGRPcmRlckNudCA9 IGhwaWMtPnBpY19vcmRlcl9jbnQsCisgICAgIH07CistCistICAgIGZvciAoaSA9IDA7IGkgPCBw aWMtPm5iX3JlZnM7IGkrKykgeworLSAgICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICAgICAgKnJl ZiA9IHBpYy0+cmVmc1tpXTsKKy0gICAgICAgIFZBQVBJRW5jb2RlSDI2NFBpY3R1cmUgKmhyZWY7 CistCistICAgICAgICBhdl9hc3NlcnQwKHJlZiAmJiByZWYtPmVuY29kZV9vcmRlciA8IHBpYy0+ ZW5jb2RlX29yZGVyKTsKKy0gICAgICAgIGhyZWYgPSByZWYtPnByaXZfZGF0YTsKKy0KKy0gICAg ICAgIHZwaWMtPlJlZmVyZW5jZUZyYW1lc1tpXSA9IChWQVBpY3R1cmVIMjY0KSB7CistICAgICAg ICAgICAgLnBpY3R1cmVfaWQgICAgICAgICAgPSByZWYtPnJlY29uX3N1cmZhY2UsCistICAgICAg ICAgICAgLmZyYW1lX2lkeCAgICAgICAgICAgPSBocmVmLT5mcmFtZV9udW0sCistICAgICAgICAg ICAgLmZsYWdzICAgICAgICAgICAgICAgPSBWQV9QSUNUVVJFX0gyNjRfU0hPUlRfVEVSTV9SRUZF UkVOQ0UsCistICAgICAgICAgICAgLlRvcEZpZWxkT3JkZXJDbnQgICAgPSBocmVmLT5waWNfb3Jk ZXJfY250LAorLSAgICAgICAgICAgIC5Cb3R0b21GaWVsZE9yZGVyQ250ID0gaHJlZi0+cGljX29y ZGVyX2NudCwKKy0gICAgICAgIH07CisrICAgIGZvciAoaW50IGsgPSAwOyBrIDwgTUFYX1JFRkVS RU5DRV9MSVNUX05VTTsgaysrKSB7CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9y ZWZzW2tdOyBpKyspIHsKKysgICAgICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgICAgICAqcmVm ID0gcGljLT5yZWZzW2tdW2ldOworKyAgICAgICAgICAgIFZBQVBJRW5jb2RlSDI2NFBpY3R1cmUg KmhyZWY7CisrCisrICAgICAgICAgICAgYXZfYXNzZXJ0MChyZWYgJiYgcmVmLT5lbmNvZGVfb3Jk ZXIgPCBwaWMtPmVuY29kZV9vcmRlcik7CisrICAgICAgICAgICAgaHJlZiA9IHJlZi0+cHJpdl9k YXRhOworKworKyAgICAgICAgICAgIHZwaWMtPlJlZmVyZW5jZUZyYW1lc1tqKytdID0gKFZBUGlj dHVyZUgyNjQpIHsKKysgICAgICAgICAgICAgICAgLnBpY3R1cmVfaWQgICAgICAgICAgPSByZWYt PnJlY29uX3N1cmZhY2UsCisrICAgICAgICAgICAgICAgIC5mcmFtZV9pZHggICAgICAgICAgID0g aHJlZi0+ZnJhbWVfbnVtLAorKyAgICAgICAgICAgICAgICAuZmxhZ3MgICAgICAgICAgICAgICA9 IFZBX1BJQ1RVUkVfSDI2NF9TSE9SVF9URVJNX1JFRkVSRU5DRSwKKysgICAgICAgICAgICAgICAg LlRvcEZpZWxkT3JkZXJDbnQgICAgPSBocmVmLT5waWNfb3JkZXJfY250LAorKyAgICAgICAgICAg ICAgICAuQm90dG9tRmllbGRPcmRlckNudCA9IGhyZWYtPnBpY19vcmRlcl9jbnQsCisrICAgICAg ICAgICAgfTsKKysgICAgICAgIH0KKyAgICAgfQorLSAgICBmb3IgKDsgaSA8IEZGX0FSUkFZX0VM RU1TKHZwaWMtPlJlZmVyZW5jZUZyYW1lcyk7IGkrKykgeworLSAgICAgICAgdnBpYy0+UmVmZXJl bmNlRnJhbWVzW2ldID0gKFZBUGljdHVyZUgyNjQpIHsKKysKKysgICAgZm9yICg7IGogPCBGRl9B UlJBWV9FTEVNUyh2cGljLT5SZWZlcmVuY2VGcmFtZXMpOyBqKyspIHsKKysgICAgICAgIHZwaWMt PlJlZmVyZW5jZUZyYW1lc1tqXSA9IChWQVBpY3R1cmVIMjY0KSB7CisgICAgICAgICAgICAgLnBp Y3R1cmVfaWQgPSBWQV9JTlZBTElEX0lELAorICAgICAgICAgICAgIC5mbGFncyAgICAgID0gVkFf UElDVFVSRV9IMjY0X0lOVkFMSUQsCisgICAgICAgICB9OworQEAgLTkzNCwxNyArOTM2LDE3IEBA IHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjRfaW5pdF9zbGljZV9wYXJhbXMoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4LAorIAorICAgICAgICAgaWYgKHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVf UCkgeworICAgICAgICAgICAgIGludCBuZWVkX3JwbG0gPSAwOworLSAgICAgICAgICAgIGZvciAo aSA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7IGkrKykgeworLSAgICAgICAgICAgICAgICBhdl9hc3Nl cnQwKHBpYy0+cmVmc1tpXSk7CistICAgICAgICAgICAgICAgIGlmIChwaWMtPnJlZnNbaV0gIT0g ZGVmX2wwW2ldKQorKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMF07 IGkrKykgeworKyAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1swXVtpXSk7Cisr ICAgICAgICAgICAgICAgIGlmIChwaWMtPnJlZnNbMF1baV0gIT0gZGVmX2wwW2ldKQorICAgICAg ICAgICAgICAgICAgICAgbmVlZF9ycGxtID0gMTsKKyAgICAgICAgICAgICB9CisgCisgICAgICAg ICAgICAgc2gtPnJlZl9waWNfbGlzdF9tb2RpZmljYXRpb25fZmxhZ19sMCA9IG5lZWRfcnBsbTsK KyAgICAgICAgICAgICBpZiAobmVlZF9ycGxtKSB7CisgICAgICAgICAgICAgICAgIGludCBwaWNf bnVtID0gaHBpYy0+ZnJhbWVfbnVtOworLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg cGljLT5uYl9yZWZzOyBpKyspIHsKKy0gICAgICAgICAgICAgICAgICAgIGhyZWYgPSBwaWMtPnJl ZnNbaV0tPnByaXZfZGF0YTsKKysgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+ bmJfcmVmc1swXTsgaSsrKSB7CisrICAgICAgICAgICAgICAgICAgICBocmVmID0gcGljLT5yZWZz WzBdW2ldLT5wcml2X2RhdGE7CisgICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKGhyZWYt PmZyYW1lX251bSAhPSBwaWNfbnVtKTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChocmVmLT5m cmFtZV9udW0gPCBwaWNfbnVtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgc2gtPnJwbG1f bDBbaV0ubW9kaWZpY2F0aW9uX29mX3BpY19udW1zX2lkYyA9IDA7CitAQCAtOTYzLDI4ICs5NjUs MjkgQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NF9pbml0X3NsaWNlX3BhcmFtcyhBVkNv ZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIGludCBu ZWVkX3JwbG1fbDAgPSAwLCBuZWVkX3JwbG1fbDEgPSAwOworICAgICAgICAgICAgIGludCBuMCA9 IDAsIG4xID0gMDsKKy0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBp KyspIHsKKy0gICAgICAgICAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbaV0pOworLSAgICAg ICAgICAgICAgICBocmVmID0gcGljLT5yZWZzW2ldLT5wcml2X2RhdGE7CistICAgICAgICAgICAg ICAgIGF2X2Fzc2VydDAoaHJlZi0+cGljX29yZGVyX2NudCAhPSBocGljLT5waWNfb3JkZXJfY250 KTsKKy0gICAgICAgICAgICAgICAgaWYgKGhyZWYtPnBpY19vcmRlcl9jbnQgPCBocGljLT5waWNf b3JkZXJfY250KSB7CistICAgICAgICAgICAgICAgICAgICBpZiAocGljLT5yZWZzW2ldICE9IGRl Zl9sMFtuMF0pCistICAgICAgICAgICAgICAgICAgICAgICAgbmVlZF9ycGxtX2wwID0gMTsKKy0g ICAgICAgICAgICAgICAgICAgICsrbjA7CistICAgICAgICAgICAgICAgIH0gZWxzZSB7CistICAg ICAgICAgICAgICAgICAgICBpZiAocGljLT5yZWZzW2ldICE9IGRlZl9sMVtuMV0pCistICAgICAg ICAgICAgICAgICAgICAgICAgbmVlZF9ycGxtX2wxID0gMTsKKy0gICAgICAgICAgICAgICAgICAg ICsrbjE7CistICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg cGljLT5uYl9yZWZzWzBdOyBpKyspIHsKKysgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MChwaWMt PnJlZnNbMF1baV0pOworKyAgICAgICAgICAgICAgICBocmVmID0gcGljLT5yZWZzWzBdW2ldLT5w cml2X2RhdGE7CisrICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAoaHJlZi0+cGljX29yZGVyX2Nu dCA8IGhwaWMtPnBpY19vcmRlcl9jbnQpOworKyAgICAgICAgICAgICAgICBpZiAocGljLT5yZWZz WzBdW2ldICE9IGRlZl9sMFtuMF0pCisrICAgICAgICAgICAgICAgICAgICBuZWVkX3JwbG1fbDAg PSAxOworKyAgICAgICAgICAgICAgICArK24wOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzWzFdOyBpKyspIHsKKysgICAgICAgICAg ICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbMV1baV0pOworKyAgICAgICAgICAgICAgICBocmVm ID0gcGljLT5yZWZzWzFdW2ldLT5wcml2X2RhdGE7CisrICAgICAgICAgICAgICAgIGF2X2Fzc2Vy dDAoaHJlZi0+cGljX29yZGVyX2NudCA+IGhwaWMtPnBpY19vcmRlcl9jbnQpOworKyAgICAgICAg ICAgICAgICBpZiAocGljLT5yZWZzWzFdW2ldICE9IGRlZl9sMVtuMV0pCisrICAgICAgICAgICAg ICAgICAgICBuZWVkX3JwbG1fbDEgPSAxOworKyAgICAgICAgICAgICAgICArK24xOworICAgICAg ICAgICAgIH0KKyAKKyAgICAgICAgICAgICBzaC0+cmVmX3BpY19saXN0X21vZGlmaWNhdGlvbl9m bGFnX2wwID0gbmVlZF9ycGxtX2wwOworICAgICAgICAgICAgIGlmIChuZWVkX3JwbG1fbDApIHsK KyAgICAgICAgICAgICAgICAgaW50IHBpY19udW0gPSBocGljLT5mcmFtZV9udW07CistICAgICAg ICAgICAgICAgIGZvciAoaSA9IGogPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBpKyspIHsKKy0gICAg ICAgICAgICAgICAgICAgIGhyZWYgPSBwaWMtPnJlZnNbaV0tPnByaXZfZGF0YTsKKy0gICAgICAg ICAgICAgICAgICAgIGlmIChocmVmLT5waWNfb3JkZXJfY250ID4gaHBpYy0+cGljX29yZGVyX2Nu dCkKKy0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAg Zm9yIChpID0gaiA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMF07IGkrKykgeworKyAgICAgICAgICAg ICAgICAgICAgaHJlZiA9IHBpYy0+cmVmc1swXVtpXS0+cHJpdl9kYXRhOworICAgICAgICAgICAg ICAgICAgICAgYXZfYXNzZXJ0MChocmVmLT5mcmFtZV9udW0gIT0gcGljX251bSk7CisgICAgICAg ICAgICAgICAgICAgICBpZiAoaHJlZi0+ZnJhbWVfbnVtIDwgcGljX251bSkgeworICAgICAgICAg ICAgICAgICAgICAgICAgIHNoLT5ycGxtX2wwW2pdLm1vZGlmaWNhdGlvbl9vZl9waWNfbnVtc19p ZGMgPSAwOworQEAgLTEwMDUsMTAgKzEwMDgsOCBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9o MjY0X2luaXRfc2xpY2VfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAgICAgICAgICAg ICBzaC0+cmVmX3BpY19saXN0X21vZGlmaWNhdGlvbl9mbGFnX2wxID0gbmVlZF9ycGxtX2wxOwor ICAgICAgICAgICAgIGlmIChuZWVkX3JwbG1fbDEpIHsKKyAgICAgICAgICAgICAgICAgaW50IHBp Y19udW0gPSBocGljLT5mcmFtZV9udW07CistICAgICAgICAgICAgICAgIGZvciAoaSA9IGogPSAw OyBpIDwgcGljLT5uYl9yZWZzOyBpKyspIHsKKy0gICAgICAgICAgICAgICAgICAgIGhyZWYgPSBw aWMtPnJlZnNbaV0tPnByaXZfZGF0YTsKKy0gICAgICAgICAgICAgICAgICAgIGlmIChocmVmLT5w aWNfb3JkZXJfY250IDwgaHBpYy0+cGljX29yZGVyX2NudCkKKy0gICAgICAgICAgICAgICAgICAg ICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgZm9yIChpID0gaiA9IDA7IGkgPCBwaWMt Pm5iX3JlZnNbMV07IGkrKykgeworKyAgICAgICAgICAgICAgICAgICAgaHJlZiA9IHBpYy0+cmVm c1sxXVtpXS0+cHJpdl9kYXRhOworICAgICAgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MChocmVm LT5mcmFtZV9udW0gIT0gcGljX251bSk7CisgICAgICAgICAgICAgICAgICAgICBpZiAoaHJlZi0+ ZnJhbWVfbnVtIDwgcGljX251bSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIHNoLT5ycGxt X2wxW2pdLm1vZGlmaWNhdGlvbl9vZl9waWNfbnVtc19pZGMgPSAwOworQEAgLTEwNDgsMTQgKzEw NDksMTMgQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NF9pbml0X3NsaWNlX3BhcmFtcyhB VkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAgICB2c2xpY2UtPlJlZlBpY0xpc3QxW2ldLmZs YWdzICAgICAgPSBWQV9QSUNUVVJFX0gyNjRfSU5WQUxJRDsKKyAgICAgfQorIAorLSAgICBhdl9h c3NlcnQwKHBpYy0+bmJfcmVmcyA8PSAyKTsKKy0gICAgaWYgKHBpYy0+bmJfcmVmcyA+PSAxKSB7 CisrICAgIGlmIChwaWMtPm5iX3JlZnNbMF0pIHsKKyAgICAgICAgIC8vIEJhY2t3YXJkIHJlZmVy ZW5jZSBmb3IgUC0gb3IgQi1mcmFtZS4KKyAgICAgICAgIGF2X2Fzc2VydDAocGljLT50eXBlID09 IFBJQ1RVUkVfVFlQRV9QIHx8CisgICAgICAgICAgICAgICAgICAgIHBpYy0+dHlwZSA9PSBQSUNU VVJFX1RZUEVfQik7CisgICAgICAgICB2c2xpY2UtPlJlZlBpY0xpc3QwWzBdID0gdnBpYy0+UmVm ZXJlbmNlRnJhbWVzWzBdOworICAgICB9CistICAgIGlmIChwaWMtPm5iX3JlZnMgPj0gMikgewor KyAgICBpZiAocGljLT5uYl9yZWZzWzFdKSB7CisgICAgICAgICAvLyBGb3J3YXJkIHJlZmVyZW5j ZSBmb3IgQi1mcmFtZS4KKyAgICAgICAgIGF2X2Fzc2VydDAocGljLT50eXBlID09IFBJQ1RVUkVf VFlQRV9CKTsKKyAgICAgICAgIHZzbGljZS0+UmVmUGljTGlzdDFbMF0gPSB2cGljLT5SZWZlcmVu Y2VGcmFtZXNbMV07CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NS5j IGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NS5jCitpbmRleCBhYTdlNTMyLi5mMDE1ZTZm IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NS5jCisrKysgYi9saWJh dmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY1LmMKK0BAIC03NjQsNyArNzY0LDcgQEAgc3RhdGljIGlu dCB2YWFwaV9lbmNvZGVfaDI2NV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICph dmN0eCwKKyAgICAgVkFBUElFbmNvZGVQaWN0dXJlICAgICAgICAgICAgICAqcHJldiA9IHBpYy0+ cHJldjsKKyAgICAgVkFBUElFbmNvZGVIMjY1UGljdHVyZSAgICAgICAgICpocHJldiA9IHByZXYg PyBwcmV2LT5wcml2X2RhdGEgOiBOVUxMOworICAgICBWQUVuY1BpY3R1cmVQYXJhbWV0ZXJCdWZm ZXJIRVZDICp2cGljID0gcGljLT5jb2RlY19waWN0dXJlX3BhcmFtczsKKy0gICAgaW50IGk7Cisr ICAgIGludCBpLCBqID0gMDsKKyAKKyAgICAgaWYgKHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVf SURSKSB7CisgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+ZGlzcGxheV9vcmRlciA9PSBwaWMtPmVu Y29kZV9vcmRlcik7CitAQCAtNzg5LDggKzc4OSw4IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2Rl X2gyNjVfaW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAg ICAgICAgaHBpYy0+cGljX3R5cGUgICAgICAgPSAxOworICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgKmlyYXBfcmVmOworLSAgICAgICAgICAgIGF2X2Fz c2VydDAocGljLT5yZWZzWzBdICYmIHBpYy0+cmVmc1sxXSk7CistICAgICAgICAgICAgZm9yIChp cmFwX3JlZiA9IHBpYzsgaXJhcF9yZWY7IGlyYXBfcmVmID0gaXJhcF9yZWYtPnJlZnNbMV0pIHsK KysgICAgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1swXVswXSAmJiBwaWMtPnJlZnNbMV1b MF0pOworKyAgICAgICAgICAgIGZvciAoaXJhcF9yZWYgPSBwaWM7IGlyYXBfcmVmOyBpcmFwX3Jl ZiA9IGlyYXBfcmVmLT5yZWZzWzFdWzBdKSB7CisgICAgICAgICAgICAgICAgIGlmIChpcmFwX3Jl Zi0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfSSkKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgIH0KK0BAIC05MTUsMjQgKzkxNSwyNyBAQCBzdGF0aWMgaW50IHZhYXBpX2Vu Y29kZV9oMjY1X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorICAg ICAgICAgLmZsYWdzICAgICAgICAgPSAwLAorICAgICB9OworIAorLSAgICBmb3IgKGkgPSAwOyBp IDwgcGljLT5uYl9yZWZzOyBpKyspIHsKKy0gICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAgICAg ICpyZWYgPSBwaWMtPnJlZnNbaV07CistICAgICAgICBWQUFQSUVuY29kZUgyNjVQaWN0dXJlICpo cmVmOworLQorLSAgICAgICAgYXZfYXNzZXJ0MChyZWYgJiYgcmVmLT5lbmNvZGVfb3JkZXIgPCBw aWMtPmVuY29kZV9vcmRlcik7CistICAgICAgICBocmVmID0gcmVmLT5wcml2X2RhdGE7CistCist ICAgICAgICB2cGljLT5yZWZlcmVuY2VfZnJhbWVzW2ldID0gKFZBUGljdHVyZUhFVkMpIHsKKy0g ICAgICAgICAgICAucGljdHVyZV9pZCAgICA9IHJlZi0+cmVjb25fc3VyZmFjZSwKKy0gICAgICAg ICAgICAucGljX29yZGVyX2NudCA9IGhyZWYtPnBpY19vcmRlcl9jbnQsCistICAgICAgICAgICAg LmZsYWdzID0gKHJlZi0+ZGlzcGxheV9vcmRlciA8IHBpYy0+ZGlzcGxheV9vcmRlciA/CistICAg ICAgICAgICAgICAgICAgICAgIFZBX1BJQ1RVUkVfSEVWQ19SUFNfU1RfQ1VSUl9CRUZPUkUgOiAw KSB8CistICAgICAgICAgICAgICAgICAgICAgKHJlZi0+ZGlzcGxheV9vcmRlciA+IHBpYy0+ZGlz cGxheV9vcmRlciA/CistICAgICAgICAgICAgICAgICAgICAgIFZBX1BJQ1RVUkVfSEVWQ19SUFNf U1RfQ1VSUl9BRlRFUiAgOiAwKSwKKy0gICAgICAgIH07CisrICAgIGZvciAoaW50IGsgPSAwOyBr IDwgTUFYX1JFRkVSRU5DRV9MSVNUX05VTTsgaysrKSB7CisrICAgICAgICBmb3IgKGkgPSAwOyBp IDwgcGljLT5uYl9yZWZzW2tdOyBpKyspIHsKKysgICAgICAgICAgICBWQUFQSUVuY29kZVBpY3R1 cmUgICAgICAqcmVmID0gcGljLT5yZWZzW2tdW2ldOworKyAgICAgICAgICAgIFZBQVBJRW5jb2Rl SDI2NVBpY3R1cmUgKmhyZWY7CisrCisrICAgICAgICAgICAgYXZfYXNzZXJ0MChyZWYgJiYgcmVm LT5lbmNvZGVfb3JkZXIgPCBwaWMtPmVuY29kZV9vcmRlcik7CisrICAgICAgICAgICAgaHJlZiA9 IHJlZi0+cHJpdl9kYXRhOworKworKyAgICAgICAgICAgIHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNb aisrXSA9IChWQVBpY3R1cmVIRVZDKSB7CisrICAgICAgICAgICAgICAgIC5waWN0dXJlX2lkICAg ID0gcmVmLT5yZWNvbl9zdXJmYWNlLAorKyAgICAgICAgICAgICAgICAucGljX29yZGVyX2NudCA9 IGhyZWYtPnBpY19vcmRlcl9jbnQsCisrICAgICAgICAgICAgICAgIC5mbGFncyA9IChyZWYtPmRp c3BsYXlfb3JkZXIgPCBwaWMtPmRpc3BsYXlfb3JkZXIgPworKyAgICAgICAgICAgICAgICAgICAg ICAgICAgVkFfUElDVFVSRV9IRVZDX1JQU19TVF9DVVJSX0JFRk9SRSA6IDApIHwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgIChyZWYtPmRpc3BsYXlfb3JkZXIgPiBwaWMtPmRpc3BsYXlfb3Jk ZXIgPworKyAgICAgICAgICAgICAgICAgICAgICAgICAgVkFfUElDVFVSRV9IRVZDX1JQU19TVF9D VVJSX0FGVEVSICA6IDApLAorKyAgICAgICAgICAgIH07CisrICAgICAgICB9CisgICAgIH0KKy0g ICAgZm9yICg7IGkgPCBGRl9BUlJBWV9FTEVNUyh2cGljLT5yZWZlcmVuY2VfZnJhbWVzKTsgaSsr KSB7CistICAgICAgICB2cGljLT5yZWZlcmVuY2VfZnJhbWVzW2ldID0gKFZBUGljdHVyZUhFVkMp IHsKKysKKysgICAgZm9yICg7IGogPCBGRl9BUlJBWV9FTEVNUyh2cGljLT5yZWZlcmVuY2VfZnJh bWVzKTsgaisrKSB7CisrICAgICAgICB2cGljLT5yZWZlcmVuY2VfZnJhbWVzW2pdID0gKFZBUGlj dHVyZUhFVkMpIHsKKyAgICAgICAgICAgICAucGljdHVyZV9pZCA9IFZBX0lOVkFMSURfSUQsCisg ICAgICAgICAgICAgLmZsYWdzICAgICAgPSBWQV9QSUNUVVJFX0hFVkNfSU5WQUxJRCwKKyAgICAg ICAgIH07CitAQCAtMTAxNiwyMSArMTAxOSwzMyBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9o MjY1X2luaXRfc2xpY2VfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAgICAgICAgIG1l bXNldChycHMsIDAsIHNpemVvZigqcnBzKSk7CisgCisgICAgICAgICBycHNfcGljcyA9IDA7Cist ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBpKyspIHsKKy0gICAgICAgICAg ICBzdHJwID0gcGljLT5yZWZzW2ldLT5wcml2X2RhdGE7CistICAgICAgICAgICAgcnBzX3BvY1ty cHNfcGljc10gID0gc3RycC0+cGljX29yZGVyX2NudDsKKy0gICAgICAgICAgICBycHNfdXNlZFty cHNfcGljc10gPSAxOworLSAgICAgICAgICAgICsrcnBzX3BpY3M7CisrICAgICAgICBmb3IgKGkg PSAwOyBpIDwgTUFYX1JFRkVSRU5DRV9MSVNUX05VTTsgaSsrKSB7CisrICAgICAgICAgICAgZm9y IChqID0gMDsgaiA8IHBpYy0+bmJfcmVmc1tpXTsgaisrKSB7CisrICAgICAgICAgICAgICAgIHN0 cnAgPSBwaWMtPnJlZnNbaV1bal0tPnByaXZfZGF0YTsKKysgICAgICAgICAgICAgICAgcnBzX3Bv Y1tycHNfcGljc10gID0gc3RycC0+cGljX29yZGVyX2NudDsKKysgICAgICAgICAgICAgICAgcnBz X3VzZWRbcnBzX3BpY3NdID0gMTsKKysgICAgICAgICAgICAgICAgKytycHNfcGljczsKKysgICAg ICAgICAgICB9CisgICAgICAgICB9CisrCisgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5u Yl9kcGJfcGljczsgaSsrKSB7CisgICAgICAgICAgICAgaWYgKHBpYy0+ZHBiW2ldID09IHBpYykK KyAgICAgICAgICAgICAgICAgY29udGludWU7CistICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8 IHBpYy0+bmJfcmVmczsgaisrKSB7CistICAgICAgICAgICAgICAgIGlmIChwaWMtPmRwYltpXSA9 PSBwaWMtPnJlZnNbal0pCisrCisrICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHBpYy0+bmJf cmVmc1swXTsgaisrKSB7CisrICAgICAgICAgICAgICAgIGlmIChwaWMtPmRwYltpXSA9PSBwaWMt PnJlZnNbMF1bal0pCisrICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9 CisrICAgICAgICAgICAgaWYgKGogPCBwaWMtPm5iX3JlZnNbMF0pCisrICAgICAgICAgICAgICAg IGNvbnRpbnVlOworKworKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBwaWMtPm5iX3JlZnNb MV07IGorKykgeworKyAgICAgICAgICAgICAgICBpZiAocGljLT5kcGJbaV0gPT0gcGljLT5yZWZz WzFdW2pdKQorICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgfQorLSAg ICAgICAgICAgIGlmIChqIDwgcGljLT5uYl9yZWZzKQorKyAgICAgICAgICAgIGlmIChqIDwgcGlj LT5uYl9yZWZzWzFdKQorICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysKKyAgICAgICAgICAg ICBzdHJwID0gcGljLT5kcGJbaV0tPnByaXZfZGF0YTsKKyAgICAgICAgICAgICBycHNfcG9jW3Jw c19waWNzXSAgPSBzdHJwLT5waWNfb3JkZXJfY250OworICAgICAgICAgICAgIHJwc191c2VkW3Jw c19waWNzXSA9IDA7CitAQCAtMTE1NSw4ICsxMTcwLDcgQEAgc3RhdGljIGludCB2YWFwaV9lbmNv ZGVfaDI2NV9pbml0X3NsaWNlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAg ICB2c2xpY2UtPnJlZl9waWNfbGlzdDFbaV0uZmxhZ3MgICAgICA9IFZBX1BJQ1RVUkVfSEVWQ19J TlZBTElEOworICAgICB9CisgCistICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZzIDw9IDIpOwor LSAgICBpZiAocGljLT5uYl9yZWZzID49IDEpIHsKKysgICAgaWYgKHBpYy0+bmJfcmVmc1swXSkg eworICAgICAgICAgLy8gQmFja3dhcmQgcmVmZXJlbmNlIGZvciBQLSBvciBCLWZyYW1lLgorICAg ICAgICAgYXZfYXNzZXJ0MChwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX1AgfHwKKyAgICAgICAg ICAgICAgICAgICAgcGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9CKTsKK0BAIC0xMTY1LDcgKzEx NzksNyBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9oMjY1X2luaXRfc2xpY2VfcGFyYW1zKEFW Q29kZWNDb250ZXh0ICphdmN0eCwKKyAgICAgICAgICAgICAvLyBSZWZlcmVuY2UgZm9yIEdQQiBC LWZyYW1lLCBMMCA9PSBMMQorICAgICAgICAgICAgIHZzbGljZS0+cmVmX3BpY19saXN0MVswXSA9 IHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNbMF07CisgICAgIH0KKy0gICAgaWYgKHBpYy0+bmJfcmVm cyA+PSAyKSB7CisrICAgIGlmIChwaWMtPm5iX3JlZnNbMV0pIHsKKyAgICAgICAgIC8vIEZvcndh cmQgcmVmZXJlbmNlIGZvciBCLWZyYW1lLgorICAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnR5cGUg PT0gUElDVFVSRV9UWVBFX0IpOworICAgICAgICAgdnNsaWNlLT5yZWZfcGljX2xpc3QxWzBdID0g dnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1sxXTsKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBp X2VuY29kZV9tcGVnMi5jIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfbXBlZzIuYworaW5kZXgg OTI2MWQxOS4uODAwMGFlMSAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX21w ZWcyLmMKKysrKyBiL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX21wZWcyLmMKK0BAIC00NTgsMTIg KzQ1OCwxMiBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9tcGVnMl9pbml0X3BpY3R1cmVfcGFy YW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFBJ Q1RVUkVfVFlQRV9QOgorICAgICAgICAgdnBpYy0+cGljdHVyZV90eXBlID0gVkFFbmNQaWN0dXJl VHlwZVByZWRpY3RpdmU7CistICAgICAgICB2cGljLT5mb3J3YXJkX3JlZmVyZW5jZV9waWN0dXJl ID0gcGljLT5yZWZzWzBdLT5yZWNvbl9zdXJmYWNlOworKyAgICAgICAgdnBpYy0+Zm9yd2FyZF9y ZWZlcmVuY2VfcGljdHVyZSA9IHBpYy0+cmVmc1swXVswXS0+cmVjb25fc3VyZmFjZTsKKyAgICAg ICAgIGJyZWFrOworICAgICBjYXNlIFBJQ1RVUkVfVFlQRV9COgorICAgICAgICAgdnBpYy0+cGlj dHVyZV90eXBlID0gVkFFbmNQaWN0dXJlVHlwZUJpZGlyZWN0aW9uYWw7CistICAgICAgICB2cGlj LT5mb3J3YXJkX3JlZmVyZW5jZV9waWN0dXJlICA9IHBpYy0+cmVmc1swXS0+cmVjb25fc3VyZmFj ZTsKKy0gICAgICAgIHZwaWMtPmJhY2t3YXJkX3JlZmVyZW5jZV9waWN0dXJlID0gcGljLT5yZWZz WzFdLT5yZWNvbl9zdXJmYWNlOworKyAgICAgICAgdnBpYy0+Zm9yd2FyZF9yZWZlcmVuY2VfcGlj dHVyZSAgPSBwaWMtPnJlZnNbMF1bMF0tPnJlY29uX3N1cmZhY2U7CisrICAgICAgICB2cGljLT5i YWNrd2FyZF9yZWZlcmVuY2VfcGljdHVyZSA9IHBpYy0+cmVmc1sxXVswXS0+cmVjb25fc3VyZmFj ZTsKKyAgICAgICAgIGJyZWFrOworICAgICBkZWZhdWx0OgorICAgICAgICAgYXZfYXNzZXJ0MCgw ICYmICJpbnZhbGlkIHBpY3R1cmUgdHlwZSIpOworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFh cGlfZW5jb2RlX3ZwOC5jIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfdnA4LmMKK2luZGV4IGFl NmE4ZDMuLmI5NmU0Y2QgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDgu YworKysrIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfdnA4LmMKK0BAIC04Niw3ICs4Niw3IEBA IHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX3ZwOF9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWND b250ZXh0ICphdmN0eCwKKyAgICAgc3dpdGNoIChwaWMtPnR5cGUpIHsKKyAgICAgY2FzZSBQSUNU VVJFX1RZUEVfSURSOgorICAgICBjYXNlIFBJQ1RVUkVfVFlQRV9JOgorLSAgICAgICAgYXZfYXNz ZXJ0MChwaWMtPm5iX3JlZnMgPT0gMCk7CisrICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVm c1swXSA9PSAwICYmIHBpYy0+bmJfcmVmc1sxXSA9PSAwKTsKKyAgICAgICAgIHZwaWMtPnJlZl9m bGFncy5iaXRzLmZvcmNlX2tmID0gMTsKKyAgICAgICAgIHZwaWMtPnJlZl9sYXN0X2ZyYW1lID0K KyAgICAgICAgIHZwaWMtPnJlZl9nZl9mcmFtZSAgID0KK0BAIC05NCwxNCArOTQsMTQgQEAgc3Rh dGljIGludCB2YWFwaV9lbmNvZGVfdnA4X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LAorICAgICAgICAgICAgIFZBX0lOVkFMSURfU1VSRkFDRTsKKyAgICAgICAgIGJy ZWFrOworICAgICBjYXNlIFBJQ1RVUkVfVFlQRV9QOgorLSAgICAgICAgYXZfYXNzZXJ0MChwaWMt Pm5iX3JlZnMgPT0gMSk7CisrICAgICAgICBhdl9hc3NlcnQwKCFwaWMtPm5iX3JlZnNbMV0pOwor ICAgICAgICAgdnBpYy0+cmVmX2ZsYWdzLmJpdHMubm9fcmVmX2xhc3QgPSAwOworICAgICAgICAg dnBpYy0+cmVmX2ZsYWdzLmJpdHMubm9fcmVmX2dmICAgPSAxOworICAgICAgICAgdnBpYy0+cmVm X2ZsYWdzLmJpdHMubm9fcmVmX2FyZiAgPSAxOworICAgICAgICAgdnBpYy0+cmVmX2xhc3RfZnJh bWUgPQorICAgICAgICAgdnBpYy0+cmVmX2dmX2ZyYW1lICAgPQorICAgICAgICAgdnBpYy0+cmVm X2FyZl9mcmFtZSAgPQorLSAgICAgICAgICAgIHBpYy0+cmVmc1swXS0+cmVjb25fc3VyZmFjZTsK KysgICAgICAgICAgICBwaWMtPnJlZnNbMF1bMF0tPnJlY29uX3N1cmZhY2U7CisgICAgICAgICBi cmVhazsKKyAgICAgZGVmYXVsdDoKKyAgICAgICAgIGF2X2Fzc2VydDAoMCAmJiAiaW52YWxpZCBw aWN0dXJlIHR5cGUiKTsKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDku YyBiL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX3ZwOS5jCitpbmRleCBhZjEzNTNjLi5kOWU4YmE2 IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfdnA5LmMKKysrKyBiL2xpYmF2 Y29kZWMvdmFhcGlfZW5jb2RlX3ZwOS5jCitAQCAtOTYsMTUgKzk2LDE1IEBAIHN0YXRpYyBpbnQg dmFhcGlfZW5jb2RlX3ZwOV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwKKyAKKyAgICAgc3dpdGNoIChwaWMtPnR5cGUpIHsKKyAgICAgY2FzZSBQSUNUVVJFX1RZUEVf SURSOgorLSAgICAgICAgYXZfYXNzZXJ0MChwaWMtPm5iX3JlZnMgPT0gMCk7CisrICAgICAgICBh dl9hc3NlcnQwKHBpYy0+bmJfcmVmc1swXSA9PSAwICYmIHBpYy0+bmJfcmVmc1sxXSA9PSAwKTsK KyAgICAgICAgIHZwaWMtPnJlZl9mbGFncy5iaXRzLmZvcmNlX2tmID0gMTsKKyAgICAgICAgIHZw aWMtPnJlZnJlc2hfZnJhbWVfZmxhZ3MgPSAweGZmOworICAgICAgICAgaHBpYy0+c2xvdCA9IDA7 CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBQSUNUVVJFX1RZUEVfUDoKKy0gICAgICAgIGF2 X2Fzc2VydDAocGljLT5uYl9yZWZzID09IDEpOworKyAgICAgICAgYXZfYXNzZXJ0MCghcGljLT5u Yl9yZWZzWzFdKTsKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBWQUFQSUVuY29kZVZQOVBpY3R1 cmUgKmhyZWYgPSBwaWMtPnJlZnNbMF0tPnByaXZfZGF0YTsKKysgICAgICAgICAgICBWQUFQSUVu Y29kZVZQOVBpY3R1cmUgKmhyZWYgPSBwaWMtPnJlZnNbMF1bMF0tPnByaXZfZGF0YTsKKyAgICAg ICAgICAgICBhdl9hc3NlcnQwKGhyZWYtPnNsb3QgPT0gMCB8fCBocmVmLT5zbG90ID09IDEpOwor IAorICAgICAgICAgICAgIGlmIChjdHgtPm1heF9iX2RlcHRoID4gMCkgeworQEAgLTEyMCwxMCAr MTIwLDEwIEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX3ZwOV9pbml0X3BpY3R1cmVfcGFyYW1z KEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworICAg ICBjYXNlIFBJQ1RVUkVfVFlQRV9COgorLSAgICAgICAgYXZfYXNzZXJ0MChwaWMtPm5iX3JlZnMg PT0gMik7CisrICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmc1swXSAmJiBwaWMtPm5iX3Jl ZnNbMV0pOworICAgICAgICAgeworLSAgICAgICAgICAgIFZBQVBJRW5jb2RlVlA5UGljdHVyZSAq aHJlZjAgPSBwaWMtPnJlZnNbMF0tPnByaXZfZGF0YSwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKmhyZWYxID0gcGljLT5yZWZzWzFdLT5wcml2X2RhdGE7CisrICAgICAgICAg ICAgVkFBUElFbmNvZGVWUDlQaWN0dXJlICpocmVmMCA9IHBpYy0+cmVmc1swXVswXS0+cHJpdl9k YXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqaHJlZjEgPSBwaWMtPnJl ZnNbMV1bMF0tPnByaXZfZGF0YTsKKyAgICAgICAgICAgICBhdl9hc3NlcnQwKGhyZWYwLT5zbG90 IDwgcGljLT5iX2RlcHRoICsgMSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjEtPnNs b3QgPCBwaWMtPmJfZGVwdGggKyAxKTsKKyAKK0BAIC0xNTcsMTIgKzE1NywxNCBAQCBzdGF0aWMg aW50IHZhYXBpX2VuY29kZV92cDlfaW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAq YXZjdHgsCisgICAgIGZvciAoaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyh2cGljLT5yZWZlcmVu Y2VfZnJhbWVzKTsgaSsrKQorICAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tpXSA9IFZB X0lOVkFMSURfU1VSRkFDRTsKKyAKKy0gICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmczsg aSsrKSB7CistICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnJlZl9waWMgPSBwaWMtPnJlZnNb aV07CistICAgICAgICBpbnQgc2xvdDsKKy0gICAgICAgIHNsb3QgPSAoKFZBQVBJRW5jb2RlVlA5 UGljdHVyZSopcmVmX3BpYy0+cHJpdl9kYXRhKS0+c2xvdDsKKy0gICAgICAgIGF2X2Fzc2VydDAo dnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tzbG90XSA9PSBWQV9JTlZBTElEX1NVUkZBQ0UpOworLSAg ICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tzbG90XSA9IHJlZl9waWMtPnJlY29uX3N1cmZh Y2U7CisrICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfUkVGRVJFTkNFX0xJU1RfTlVNOyBpKyspIHsK KysgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcGljLT5uYl9yZWZzW2ldOyBqKyspIHsKKysg ICAgICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnJlZl9waWMgPSBwaWMtPnJlZnNbaV1bal07 CisrICAgICAgICAgICAgaW50IHNsb3Q7CisrICAgICAgICAgICAgc2xvdCA9ICgoVkFBUElFbmNv ZGVWUDlQaWN0dXJlKilyZWZfcGljLT5wcml2X2RhdGEpLT5zbG90OworKyAgICAgICAgICAgIGF2 X2Fzc2VydDAodnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tzbG90XSA9PSBWQV9JTlZBTElEX1NVUkZB Q0UpOworKyAgICAgICAgICAgIHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNbc2xvdF0gPSByZWZfcGlj LT5yZWNvbl9zdXJmYWNlOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIHZwaWMtPnBpY19m bGFncy5iaXRzLmZyYW1lX3R5cGUgPSAocGljLT50eXBlICE9IFBJQ1RVUkVfVFlQRV9JRFIpOwor LS0gCisyLjQxLjAKKwoKZGlmZiAtLWdpdCBhL2ZmbXBlZy5zcGVjIGIvZmZtcGVnLnNwZWMKaW5k ZXggZDY4NzA0Yi4uNGEyMDY0NCAxMDA2NDQKLS0tIGEvZmZtcGVnLnNwZWMKKysrIGIvZmZtcGVn LnNwZWMKQEAgLTkyLDcgKzkyLDcgQEAgTmFtZTogICAgICAgICAgIGZmbXBlZwogJWdsb2JhbCBw a2dfbmFtZSAle25hbWV9JXs/cGtnX3N1ZmZpeH0KIAogVmVyc2lvbjogICAgICAgIDYuMAotUmVs ZWFzZTogICAgICAgIDE1JXs/ZGlzdH0KK1JlbGVhc2U6ICAgICAgICAxNiV7P2Rpc3R9CiBTdW1t YXJ5OiAgICAgICAgQSBjb21wbGV0ZSBzb2x1dGlvbiB0byByZWNvcmQsIGNvbnZlcnQgYW5kIHN0 cmVhbSBhdWRpbyBhbmQgdmlkZW8KIExpY2Vuc2U6ICAgICAgICBHUEwtMy4wLW9yLWxhdGVyCiBV Ukw6ICAgICAgICAgICAgaHR0cHM6Ly9mZm1wZWcub3JnLwpAQCAtMTI5LDYgKzEyOSwxNiBAQCBQ YXRjaDY6ICAgICAgICAgMDAwMS1hdmNvZGVjLXg4Ni1tYXRob3BzLWNsaXAtY29uc3RhbnRzLXVz ZWQtd2l0aC1zaGlmdC1pLnBhdGNoCiAjIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5ycG1mdXNpb24u b3JnL3Nob3dfYnVnLmNnaT9pZD02NzczCiBQYXRjaDc6ICAgICAgICAgMDAwMS1mZnRvb2xzLWZm bXBlZ19maWx0ZXItaW5pdGlhbGl6ZS10aGUtby10by1zaWxlbmNlLXRoLnBhdGNoCiAKKyMgQmFj a3BvcnQgcGF0Y2hlcyBmb3IgZW5oYW5jZWQgcnRtcCBzdXBwb3J0CisjIENmLiBodHRwczovL3Bh dGNod29yay5mZm1wZWcub3JnL3Byb2plY3QvZmZtcGVnL2xpc3QvP3Nlcmllcz04OTI2CisjIyBG cm9tOiBodHRwczovL3BhdGNod29yay5mZm1wZWcub3JnL3Nlcmllcy84OTI2L21ib3gvCitQYXRj aDg6ICAgICAgICAgRkZtcGVnLWRldmVsLXYxMC1TdXBwb3J0LWVuaGFuY2VkLWZsdi1pbi1GRm1w ZWcucGF0Y2gKKworIyBCYWNrcG9ydCBBVjEgVkEtQVBJIGVuY29kZSBzdXBwb3J0CisjIENvdXJ0 ZXN5IG9mIEdsb3Jpb3VzRWdncm9sbAorIyMgQWRhcHRlZCBmcm9tOiBodHRwczovL3BhdGNod29y ay5mZm1wZWcub3JnL3Byb2plY3QvZmZtcGVnL2xpc3QvP3Nlcmllcz05NTk0CitQYXRjaDk6ICAg ICAgICAgZmZtcGVnLWdlLWF2MS12YWFwaS1lbmNvZGUtc3VwcG9ydC5wYXRjaAorCiAjIFNldCB1 cCBkbG9wZW4gZm9yIG9wZW5oMjY0CiBQYXRjaDEwMDE6ICAgICAgZmZtcGVnLWRsb3Blbi1vcGVu aDI2NC5wYXRjaAogCkBAIC04NjEsNiArODcxLDEwIEBAIHJtIC1yZiAle2J1aWxkcm9vdH0le19k YXRhZGlyfS8le25hbWV9L2V4YW1wbGVzCiAle19tYW5kaXJ9L21hbjMvbGlic3dzY2FsZS4zKgog CiAlY2hhbmdlbG9nCisqIEZyaSBOb3YgMTAgMjAyMyBOZWFsIEdvbXBhIDxuZ29tcGFAZmVkb3Jh cHJvamVjdC5vcmc+IC0gNi4wLTE2CistIEFkZCBwYXRjaGVzIHRvIHN1cHBvcnQgZW5oYW5jZWQg UlRNUCBhbmQgQVYxIGVuY29kaW5nIHRocm91Z2ggVkEtQVBJCistIEZvcmNlIEFBQyBkZWNvZGlu ZyB0aHJvdWdoIGZkay1hYWMtZnJlZQorCiAqIFN1biBPY3QgMDggMjAyMyBEb21pbmlrIE1pZXJ6 ZWpld3NraSA8ZG9taW5pa0BncmV5c2VjdG9yLm5ldD4gLSA2LjAtMTUKIC0gQmFja3BvcnQgdXBz dHJlYW0gcGF0Y2ggdG8gZml4IHNlZ2ZhdWx0IHdoZW4gcGFzc2luZyBub24tZXhpc3RlbnQgZmls dGVyCiAgIG9wdGlvbiAocmZieiM2NzczKQo=