From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 6D51C46085 for ; Wed, 29 May 2024 04:28:24 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BB9CE68D441; Wed, 29 May 2024 07:28:21 +0300 (EEST) Received: from out203-205-251-60.mail.qq.com (out203-205-251-60.mail.qq.com [203.205.251.60]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1646068C296 for ; Wed, 29 May 2024 07:28:12 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1716956887; bh=dF1UY6sQ87AOISgJ15f78duTLQUt38Cji/Qk2LVE0IU=; h=From:Subject:Date:References:Cc:In-Reply-To:To; b=s4SaotgCAtMXSrktKtNvXriDUZaUhoX3fM3dVufg4FQunnqikDPYGiT4/Gxfb58x2 kCTFhQbvDscqr1wqZRlG65VAuDso2+YYht+rSH6k9TS1/ZSOzemuSqCHUbvT8S0qCa 1YhUU/b5szG8ssOhtKKq1nDdl0yI1D3dL9GbHrM0= Received: from smtpclient.apple ([59.37.125.101]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id 4EE08CFD; Wed, 29 May 2024 12:19:46 +0800 X-QQ-mid: xmsmtpt1716956386t17xlexxd Message-ID: X-QQ-XMAILINFO: OZsapEVPoiO6oJ4tb18AP/Pj5qGZ5rydJwaN5NjoEfw0eHELRcue7ZoneyCUaN CwhoTUc37KzLOYee5sOj+1bKbM6B946sZlFpn6dzEOEwTnxMFGExgXXb++qaobRvrQAD5QfRcxf2 pKP/IcB7KC0nKj4+5fKN7MPrZBEKdNxaFR8Gb6qT4xiDZA+wpjA+aoBVr06Xgg0BwoqlhhAFt5nJ pizrPwx15m15yP01v4yNZhO9Qif6sAO4wLJCNPFGGA6Ra2tn1gay8mTHvYllpEqiBAOmS4tM1geP Vk19M4M0gFCKyuKEOMXdQCE1wUnzo3Rl5Z3oaz1JbUUXZMT3Kd+/jbm726ihLGAzX0XN8tDhrVJq WlxdAHc5GbH9nmOkW99ki4HtpXcwY551TD3OyPem54lPEYcLjeQ0XEA+6TB3M8w7Toq8jFwu4QIM z4jW7YKaK+pJYgfX22epDPuC5utubAc8oDXrhEf29MUAznTB5w8UOAMS3evb+6VY0WuYZlCEPWsJ eP3zbtjQNOxj+agZdOhYtlCOw47BcrrlLwPqLVSykXl8lF9EUBGeVaYfwMPSVRTPm6IroG0E7kbl PsW3rdJ0JSWWMS9NYV/+VOmu/VZr+qTj61PT/0xxmymzb3IkBHqEURRtmKUSEMi17JAHNO6XwvKS nq+XNxdjl+EU0+gHyxPXNKYYg5wKy+LKMVHZG5nfXWMjPCfPRXhlZdT5Qpw16iKiuFirvbs4uvjh 6S4zo7ZKqQe2CcdAy1TR7/g56/cyWIvzHeoP9KS3S0CBR7zz62rRNelI8nbuYmpb37doE1hUFEGN HaN9I/mDKAWATS9P+ys74l74ZJGg0JPrdxULwee5T3JUDvAl+VEVWujSKK/rKASfy3+lBkUO4K3G n1nFKPFV1ucdtvuq6esiIHyHxBh+ye+XmNtP+AqHWLhrfty0qXy+8UbGN+je+n/2Pgr+fcp2X/MP r1vRGp9wuQQMU4FQnuI2CrNRVESMl06Tf/ANYx2Jny/MbQCxlXmQ== X-QQ-XMRINFO: OD9hHCdaPRBwq3WW+NvGbIU= From: Zhao Zhili Mime-Version: 1.0 (1.0) Date: Wed, 29 May 2024 12:19:36 +0800 X-OQ-MSGID: <5413EBA3-E4E1-4A1A-B121-D77D6226237D@foxmail.com> References: <20240528215607.62554-2-xaionaro@dx.center> In-Reply-To: <20240528215607.62554-2-xaionaro@dx.center> To: FFmpeg development discussions and patches X-Mailer: iPhone Mail (21B101) Subject: Re: [FFmpeg-devel] [PATCH] avcodec/mediacodec: Add support of dynamic bitrate X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Dmitrii Okunev , Dmitrii Okunev Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Cj4g5ZyoIDIwMjTlubQ15pyIMjnml6XvvIzkuIrljYg1OjU277yMRG1pdHJpaSBPa3VuZXYgPHhh aW9uYXJvQGdtYWlsLmNvbT4g5YaZ6YGT77yaCj4gCj4g77u/TWVkaWFDb2RlYyBzdXBwb3J0cyBw YXJhbWV0ZXIgInZpZGVvLWJpdHJhdGUiIHRvIGNoYW5nZSB0aGUgYml0cmF0ZQo+IG9uIGZseS4g VGhpcyBjb21taXQgYWRkcyBjYXBhYmlsaXR5IHRvIHVzZSBpdC4KPiAKPiBJdCBhZGRzIG9wdGlv biAtYml0cmF0ZV9jdHJsX3NvY2tldCB0byB0aGUgZW5jb2RlciB3aGljaCBtYWtlcwo+IHRoZSBl bmNvZGVyIHRvIGNyZWF0ZSBhbiBVTklYIHNvY2tldCBhbmQgbGlzdGVuIGZvciBtZXNzYWdlcwo+ IHRvIGNoYW5nZSB0aGUgYml0cmF0ZS4KClRoYW5rIHlvdSBmb3IgeW91ciBjb250cmlidXRpb24u IEhvd2V2ZXIsIGxpYmF2Y29kZWMgYXMgYSBsaWJyYXJ5IGhhcyBhIGNsZWFyIGRlZmluZSBvZiBt YXJnaW4sIElPIHN1Y2ggYXMgc29ja2V0IGNhbm5vdCBiZSBwdXQgaW50byBsaWJhdmNvZGVjLiBS ZWNvbmZpZ3VyZSBiaXRyYXRlIHNob3VsZCBiZSBkb25lIHZpYSBsaWJhdmNvZGVjIEFQSS4KCj4g Cj4gQW4gZXhhbXBsZSBvZiBmZm1wZWcgZXhlY3V0aW9uOgo+IAo+ICAgIGZmbXBlZyAtZiBmbHYg LWkgcnRtcDovLzAuMC4wLjA6MTkzNS9saXZlL215U3RyZWFtIC1jOnYgaGV2Y19tZWRpYWNvZGVj IC1iaXRyYXRlX2N0cmxfc29ja2V0IC9ydW4vYml0cmF0ZS5zb2NrIC1iOnYgOE0gLWYgZmx2IHJ0 bXA6Ly8xMjcuMC4wLjE6MTkzNS9saXZlL3JlRW5jb2RlZAo+IAo+IEFuIGV4YW1wbGUgb2YgY2hh bmdpbmcgdGhlIGJpdHJhdGUgdG8gMTAwMCBLYnBzOgo+IAo+ICAgIHByaW50ZiAnJTAxNlgnIDEw MDAwMDAgfCB4eGQgLXIgLXAgfCBzb2NhdCAtdSBTVERJTiBVTklYOi9ydW4vYml0cmF0ZS5zb2Nr Cj4gCj4gU2lnbmVkLW9mZi1ieTogRG1pdHJpaSBPa3VuZXYgPHhhaW9uYXJvQGdtYWlsLmNvbT4K PiAtLS0KPiBsaWJhdmNvZGVjL01ha2VmaWxlICAgICAgICAgICAgIHwgICAyICstCj4gbGliYXZj b2RlYy9tZWRpYWNvZGVjX3dyYXBwZXIuYyB8ICA1MCArKysrKysrKwo+IGxpYmF2Y29kZWMvbWVk aWFjb2RlY193cmFwcGVyLmggfCAgMTIgKysKPiBsaWJhdmNvZGVjL21lZGlhY29kZWNlbmMuYyAg ICAgIHwgMTI4ICsrKysrKysrKystLS0tLS0tLS0tLQo+IGxpYmF2Y29kZWMvbWVkaWFjb2RlY2Vu Yy5oICAgICAgfCAgOTcgKysrKysrKysrKysrKysrKwo+IGxpYmF2Y29kZWMvbWVkaWFjb2RlY2Vu Y19jdHJsLmMgfCAxOTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiBsaWJhdmNv ZGVjL21lZGlhY29kZWNlbmNfY3RybC5oIHwgIDUwICsrKysrKysrCj4gNyBmaWxlcyBjaGFuZ2Vk LCA0NjkgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCj4gY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYmF2Y29kZWMvbWVkaWFjb2RlY2VuYy5oCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29k ZWMvbWVkaWFjb2RlY2VuY19jdHJsLmMKPiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9t ZWRpYWNvZGVjZW5jX2N0cmwuaAo+IAo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxl IGIvbGliYXZjb2RlYy9NYWtlZmlsZQo+IGluZGV4IDI0NDNkMmM2ZmQuLjM5Mzg3N2M4YzYgMTAw NjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy9NYWtlZmlsZQo+ICsrKyBiL2xpYmF2Y29kZWMvTWFrZWZp bGUKPiBAQCAtMjU4LDcgKzI1OCw3IEBAIE9CSlMtJChDT05GSUdfQVVSQTJfREVDT0RFUikgICAg ICAgICAgICs9IGF1cmEubwo+IE9CSlMtJChDT05GSUdfQVYxX0RFQ09ERVIpICAgICAgICAgICAg ICs9IGF2MWRlYy5vIGF2MV9wYXJzZS5vCj4gT0JKUy0kKENPTkZJR19BVjFfQ1VWSURfREVDT0RF UikgICAgICAgKz0gY3V2aWRkZWMubwo+IE9CSlMtJChDT05GSUdfQVYxX01FRElBQ09ERUNfREVD T0RFUikgICs9IG1lZGlhY29kZWNkZWMubwo+IC1PQkpTLSQoQ09ORklHX0FWMV9NRURJQUNPREVD X0VOQ09ERVIpICArPSBtZWRpYWNvZGVjZW5jLm8KPiArT0JKUy0kKENPTkZJR19BVjFfTUVESUFD T0RFQ19FTkNPREVSKSAgKz0gbWVkaWFjb2RlY2VuYy5vIG1lZGlhY29kZWNlbmNfY3RybC5vCj4g T0JKUy0kKENPTkZJR19BVjFfTlZFTkNfRU5DT0RFUikgICAgICAgKz0gbnZlbmNfYXYxLm8gbnZl bmMubwo+IE9CSlMtJChDT05GSUdfQVYxX1FTVl9FTkNPREVSKSAgICAgICAgICs9IHFzdmVuY19h djEubwo+IE9CSlMtJChDT05GSUdfQVYxX1ZBQVBJX0VOQ09ERVIpICAgICAgICs9IHZhYXBpX2Vu Y29kZV9hdjEubyBhdjFfbGV2ZWxzLm8KPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tZWRpYWNv ZGVjX3dyYXBwZXIuYyBiL2xpYmF2Y29kZWMvbWVkaWFjb2RlY193cmFwcGVyLmMKPiBpbmRleCA5 NmM4ODY2NjZhLi5mZTBlMjkxY2FkIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvbWVkaWFjb2Rl Y193cmFwcGVyLmMKPiArKysgYi9saWJhdmNvZGVjL21lZGlhY29kZWNfd3JhcHBlci5jCj4gQEAg LTE3NCw2ICsxNzQsNyBAQCBzdHJ1Y3QgSk5JQU1lZGlhQ29kZWNGaWVsZHMgewo+ICAgICBqbWV0 aG9kSUQgZ2V0X25hbWVfaWQ7Cj4gCj4gICAgIGptZXRob2RJRCBjb25maWd1cmVfaWQ7Cj4gKyAg ICBqbWV0aG9kSUQgc2V0X3BhcmFtZXRlcnNfaWQ7Cj4gICAgIGptZXRob2RJRCBzdGFydF9pZDsK PiAgICAgam1ldGhvZElEIGZsdXNoX2lkOwo+ICAgICBqbWV0aG9kSUQgc3RvcF9pZDsKPiBAQCAt MjQ3LDYgKzI0OCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgRkZKbmlGaWVsZCBqbmlfYW1lZGlh Y29kZWNfbWFwcGluZ1tdID0gewo+IAo+ICAgICAgICAgeyAiYW5kcm9pZC9tZWRpYS9NZWRpYUNv ZGVjIiwgInNldElucHV0U3VyZmFjZSIsICIoTGFuZHJvaWQvdmlldy9TdXJmYWNlOylWIiwgRkZf Sk5JX01FVEhPRCwgT0ZGU0VUKHNldF9pbnB1dF9zdXJmYWNlX2lkKSwgMCB9LAo+ICAgICAgICAg eyAiYW5kcm9pZC9tZWRpYS9NZWRpYUNvZGVjIiwgInNpZ25hbEVuZE9mSW5wdXRTdHJlYW0iLCAi KClWIiwgRkZfSk5JX01FVEhPRCwgT0ZGU0VUKHNpZ25hbF9lbmRfb2ZfaW5wdXRfc3RyZWFtX2lk KSwgMCB9LAo+ICsjaWYgX19BTkRST0lEX0FQSV9fID49IDI2Cj4gKyAgICAgICAgeyAiYW5kcm9p ZC9tZWRpYS9NZWRpYUNvZGVjIiwgInNldFBhcmFtZXRlcnMiLCAiKExhbmRyb2lkL21lZGlhL01l ZGlhRm9ybWF0OylWIiwgRkZfSk5JX01FVEhPRCwgT0ZGU0VUKHNldF9wYXJhbWV0ZXJzX2lkKSwg MSB9LAo+ICsjZW5kaWYKPiAKPiAgICAgeyAiYW5kcm9pZC9tZWRpYS9NZWRpYUNvZGVjJEJ1ZmZl ckluZm8iLCBOVUxMLCBOVUxMLCBGRl9KTklfQ0xBU1MsIE9GRlNFVChtZWRpYWluZm9fY2xhc3Mp LCAxIH0sCj4gCj4gQEAgLTE0MTEsNiArMTQxNSwyNyBAQCBmYWlsOgo+ICAgICByZXR1cm4gcmV0 Owo+IH0KPiAKPiArI2lmIF9fQU5EUk9JRF9BUElfXyA+PSAyNgo+ICtzdGF0aWMgaW50IG1lZGlh Y29kZWNfam5pX3NldFBhcmFtZXRlcnMoRkZBTWVkaWFDb2RlYyAqY3R4LAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGRkFNZWRpYUZvcm1hdCAqZm9ybWF0X2N0 eCkKPiArewo+ICsgICAgaW50IHJldCA9IDA7Cj4gKyAgICBKTklFbnYgKmVudiA9IE5VTEw7Cj4g KyAgICBGRkFNZWRpYUNvZGVjSm5pICpjb2RlYyA9IChGRkFNZWRpYUNvZGVjSm5pICopY3R4Owo+ ICsgICAgY29uc3QgRkZBTWVkaWFGb3JtYXRKbmkgKmZvcm1hdCA9IChGRkFNZWRpYUZvcm1hdEpu aSAqKWZvcm1hdF9jdHg7Cj4gKwo+ICsgICAgSk5JX0dFVF9FTlZfT1JfUkVUVVJOKGVudiwgY29k ZWMsIEFWRVJST1JfRVhURVJOQUwpOwo+ICsKPiArICAgICgqZW52KS0+Q2FsbFZvaWRNZXRob2Qo ZW52LCBjb2RlYy0+b2JqZWN0LCBjb2RlYy0+amZpZWxkcy5zZXRfcGFyYW1ldGVyc19pZCwgZm9y bWF0LT5vYmplY3QpOwo+ICsKPiArICAgIGlmIChmZl9qbmlfZXhjZXB0aW9uX2NoZWNrKGVudiwg MSwgY29kZWMpIDwgMCkgewo+ICsgICAgICAgIHJldCA9IEFWRVJST1JfRVhURVJOQUw7Cj4gKyAg ICB9Cj4gKwo+ICsgICAgcmV0dXJuIHJldDsKPiArfQo+ICsjZW5kaWYgLy8gX19BTkRST0lEX0FQ SV9fID49IDI2Cj4gKwo+IHN0YXRpYyBpbnQgbWVkaWFjb2RlY19qbmlfc3RhcnQoRkZBTWVkaWFD b2RlYyogY3R4KQo+IHsKPiAgICAgaW50IHJldCA9IDA7Cj4gQEAgLTE4MjEsNiArMTg0NiwxMCBA QCBzdGF0aWMgY29uc3QgRkZBTWVkaWFDb2RlYyBtZWRpYV9jb2RlY19qbmkgPSB7Cj4gICAgIC5n ZXRDb25maWd1cmVGbGFnRW5jb2RlID0gbWVkaWFjb2RlY19qbmlfZ2V0Q29uZmlndXJlRmxhZ0Vu Y29kZSwKPiAgICAgLmNsZWFuT3V0cHV0QnVmZmVycyA9IG1lZGlhY29kZWNfam5pX2NsZWFuT3V0 cHV0QnVmZmVycywKPiAgICAgLnNpZ25hbEVuZE9mSW5wdXRTdHJlYW0gPSBtZWRpYWNvZGVjX2pu aV9zaWduYWxFbmRPZklucHV0U3RyZWFtLAo+ICsKPiArI2lmIF9fQU5EUk9JRF9BUElfXyA+PSAy Ngo+ICsgICAgLnNldFBhcmFtZXRlcnMgPSBtZWRpYWNvZGVjX2puaV9zZXRQYXJhbWV0ZXJzLAo+ ICsjZW5kaWYgLy9fX0FORFJPSURfQVBJX18gPj0gMjYKPiB9Owo+IAo+IHR5cGVkZWYgc3RydWN0 IEZGQU1lZGlhRm9ybWF0TmRrIHsKPiBAQCAtMjE3OCw2ICsyMjA3LDIzIEBAIHN0YXRpYyBpbnQg bWVkaWFjb2RlY19uZGtfY29uZmlndXJlKEZGQU1lZGlhQ29kZWMqIGN0eCwKPiAgICAgcmV0dXJu IDA7Cj4gfQo+IAo+ICsjaWYgX19BTkRST0lEX0FQSV9fID49IDI2Cj4gK3N0YXRpYyBpbnQgbWVk aWFjb2RlY19uZGtfc2V0UGFyYW1ldGVycyhGRkFNZWRpYUNvZGVjICpjdHgsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZGQU1lZGlhRm9ybWF0ICpmb3JtYXRf Y3R4KQo+ICt7Cj4gKyAgICBGRkFNZWRpYUNvZGVjTmRrICpjb2RlYyA9IChGRkFNZWRpYUNvZGVj TmRrICopY3R4Owo+ICsgICAgRkZBTWVkaWFGb3JtYXROZGsgKmZvcm1hdCA9IChGRkFNZWRpYUZv cm1hdE5kayAqKWZvcm1hdF9jdHg7Cj4gKwo+ICsgICAgaW50IHN0YXR1cyA9IEFNZWRpYUNvZGVj X3NldFBhcmFtZXRlcnMoY29kZWMtPmltcGwsIGZvcm1hdC0+aW1wbCk7Cj4gKyAgICBpZiAoc3Rh dHVzICE9IEFNRURJQV9PSykgewo+ICsgICAgICAgIGF2X2xvZyhjb2RlYywgQVZfTE9HX0VSUk9S LCAiY29kZWMgc2V0UGFyYW1ldGVycyBmYWlsZWQsICVkXG4iLCBzdGF0dXMpOwo+ICsgICAgICAg IHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOwo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiAwOwo+ ICt9Cj4gKyNlbmRpZiAvL19fQU5EUk9JRF9BUElfXyA+PSAyNgo+ICsKPiAjZGVmaW5lIE1FRElB Q09ERUNfTkRLX1dSQVBQRVIobWV0aG9kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAo+IHN0YXRpYyBpbnQgbWVkaWFjb2RlY19uZGtfICMjIG1ldGhvZChGRkFNZWRpYUNvZGVj KiBjdHgpICAgICAgICAgICAgICAgICBcCj4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiBAQCAtMjM5Niw2 ICsyNDQyLDEwIEBAIHN0YXRpYyBjb25zdCBGRkFNZWRpYUNvZGVjIG1lZGlhX2NvZGVjX25kayA9 IHsKPiAgICAgLmdldENvbmZpZ3VyZUZsYWdFbmNvZGUgPSBtZWRpYWNvZGVjX25ka19nZXRDb25m aWd1cmVGbGFnRW5jb2RlLAo+ICAgICAuY2xlYW5PdXRwdXRCdWZmZXJzID0gbWVkaWFjb2RlY19u ZGtfY2xlYW5PdXRwdXRCdWZmZXJzLAo+ICAgICAuc2lnbmFsRW5kT2ZJbnB1dFN0cmVhbSA9IG1l ZGlhY29kZWNfbmRrX3NpZ25hbEVuZE9mSW5wdXRTdHJlYW0sCj4gKwo+ICsjaWYgX19BTkRST0lE X0FQSV9fID49IDI2Cj4gKyAgICAuc2V0UGFyYW1ldGVycyA9IG1lZGlhY29kZWNfbmRrX3NldFBh cmFtZXRlcnMsCj4gKyNlbmRpZiAvL19fQU5EUk9JRF9BUElfXyA+PSAyNgo+IH07Cj4gCj4gRkZB TWVkaWFGb3JtYXQgKmZmX0FNZWRpYUZvcm1hdF9uZXcoaW50IG5kaykKPiBkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy9tZWRpYWNvZGVjX3dyYXBwZXIuaCBiL2xpYmF2Y29kZWMvbWVkaWFjb2RlY193 cmFwcGVyLmgKPiBpbmRleCAxMWE0MjYwNDk3Li45YjVkYmZiOGRkIDEwMDY0NAo+IC0tLSBhL2xp YmF2Y29kZWMvbWVkaWFjb2RlY193cmFwcGVyLmgKPiArKysgYi9saWJhdmNvZGVjL21lZGlhY29k ZWNfd3JhcHBlci5oCj4gQEAgLTIxOSw2ICsyMTksMTAgQEAgc3RydWN0IEZGQU1lZGlhQ29kZWMg ewo+IAo+ICAgICAvLyBGb3IgZW5jb2RlciB3aXRoIEZGQU5hdGl2ZVdpbmRvdyBhcyBpbnB1dC4K PiAgICAgaW50ICgqc2lnbmFsRW5kT2ZJbnB1dFN0cmVhbSkoRkZBTWVkaWFDb2RlYyAqKTsKPiAr Cj4gKyNpZiBfX0FORFJPSURfQVBJX18gPj0gMjYKPiArICAgIGludCAoKnNldFBhcmFtZXRlcnMp KEZGQU1lZGlhQ29kZWMqIGNvZGVjLCBjb25zdCBGRkFNZWRpYUZvcm1hdCogZm9ybWF0KTsKPiAr I2VuZGlmIC8vX19BTkRST0lEX0FQSV9fID49IDI2Cj4gfTsKPiAKPiBzdGF0aWMgaW5saW5lIGNo YXIgKmZmX0FNZWRpYUNvZGVjX2dldE5hbWUoRkZBTWVkaWFDb2RlYyAqY29kZWMpCj4gQEAgLTIz OCw2ICsyNDIsMTQgQEAgc3RhdGljIGlubGluZSBpbnQgZmZfQU1lZGlhQ29kZWNfY29uZmlndXJl KEZGQU1lZGlhQ29kZWMgKmNvZGVjLAo+ICAgICByZXR1cm4gY29kZWMtPmNvbmZpZ3VyZShjb2Rl YywgZm9ybWF0LCBzdXJmYWNlLCBjcnlwdG8sIGZsYWdzKTsKPiB9Cj4gCj4gKyNpZiBfX0FORFJP SURfQVBJX18gPj0gMjYKPiArc3RhdGljIGlubGluZSBpbnQgZmZfQU1lZGlhQ29kZWNfc2V0UGFy YW1ldGVycyhGRkFNZWRpYUNvZGVjICpjb2RlYywKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IEZGQU1lZGlhRm9ybWF0ICpmb3JtYXQpCj4gK3sKPiAr ICAgIHJldHVybiBjb2RlYy0+c2V0UGFyYW1ldGVycyhjb2RlYywgZm9ybWF0KTsKPiArfQo+ICsj ZW5kaWYgLy9fX0FORFJPSURfQVBJX18gPj0gMjYKPiArCj4gc3RhdGljIGlubGluZSBpbnQgZmZf QU1lZGlhQ29kZWNfc3RhcnQoRkZBTWVkaWFDb2RlYyogY29kZWMpCj4gewo+ICAgICByZXR1cm4g Y29kZWMtPnN0YXJ0KGNvZGVjKTsKPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tZWRpYWNvZGVj ZW5jLmMgYi9saWJhdmNvZGVjL21lZGlhY29kZWNlbmMuYwo+IGluZGV4IGJiZjU3MGU3YmUuLmI5 NTM0NTdhNWEgMTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy9tZWRpYWNvZGVjZW5jLmMKPiArKysg Yi9saWJhdmNvZGVjL21lZGlhY29kZWNlbmMuYwo+IEBAIC0yOSw3NiArMjksMTYgQEAKPiAjaW5j bHVkZSAibGliYXZ1dGlsL21lbS5oIgo+ICNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCj4gCj4g LSNpbmNsdWRlICJhdmNvZGVjLmgiCj4gLSNpbmNsdWRlICJic2YuaCIKPiAjaW5jbHVkZSAiY29k ZWNfaW50ZXJuYWwuaCIKPiAjaW5jbHVkZSAiZW5jb2RlLmgiCj4gI2luY2x1ZGUgImh3Y29uZmln LmgiCj4gI2luY2x1ZGUgImpuaS5oIgo+ICNpbmNsdWRlICJtZWRpYWNvZGVjLmgiCj4gLSNpbmNs dWRlICJtZWRpYWNvZGVjX3dyYXBwZXIuaCIKPiAjaW5jbHVkZSAibWVkaWFjb2RlY2RlY19jb21t b24uaCIKPiArI2luY2x1ZGUgIm1lZGlhY29kZWNlbmNfY3RybC5oIgo+ICNpbmNsdWRlICJwcm9m aWxlcy5oIgo+IC0KPiAtI2RlZmluZSBJTlBVVF9ERVFVRVVFX1RJTUVPVVRfVVMgODAwMAo+IC0j ZGVmaW5lIE9VVFBVVF9ERVFVRVVFX1RJTUVPVVRfVVMgODAwMAo+IC0KPiAtZW51bSBCaXRyYXRl TW9kZSB7Cj4gLSAgICAvKiBDb25zdGFudCBxdWFsaXR5IG1vZGUgKi8KPiAtICAgIEJJVFJBVEVf TU9ERV9DUSA9IDAsCj4gLSAgICAvKiBWYXJpYWJsZSBiaXRyYXRlIG1vZGUgKi8KPiAtICAgIEJJ VFJBVEVfTU9ERV9WQlIgPSAxLAo+IC0gICAgLyogQ29uc3RhbnQgYml0cmF0ZSBtb2RlICovCj4g LSAgICBCSVRSQVRFX01PREVfQ0JSID0gMiwKPiAtICAgIC8qIENvbnN0YW50IGJpdHJhdGUgbW9k ZSB3aXRoIGZyYW1lIGRyb3BzICovCj4gLSAgICBCSVRSQVRFX01PREVfQ0JSX0ZEID0gMywKPiAt fTsKPiAtCj4gLXR5cGVkZWYgc3RydWN0IE1lZGlhQ29kZWNFbmNDb250ZXh0IHsKPiAtICAgIEFW Q2xhc3MgKmF2Y2xhc3M7Cj4gLSAgICBGRkFNZWRpYUNvZGVjICpjb2RlYzsKPiAtICAgIGludCB1 c2VfbmRrX2NvZGVjOwo+IC0gICAgY29uc3QgY2hhciAqbmFtZTsKPiAtICAgIEZGQU5hdGl2ZVdp bmRvdyAqd2luZG93Owo+IC0KPiAtICAgIGludCBmcHM7Cj4gLSAgICBpbnQgd2lkdGg7Cj4gLSAg ICBpbnQgaGVpZ2h0Owo+IC0KPiAtICAgIHVpbnQ4X3QgKmV4dHJhZGF0YTsKPiAtICAgIGludCBl eHRyYWRhdGFfc2l6ZTsKPiAtICAgIGludCBlb2Zfc2VudDsKPiAtCj4gLSAgICBBVkZyYW1lICpm cmFtZTsKPiAtICAgIEFWQlNGQ29udGV4dCAqYnNmOwo+IC0KPiAtICAgIGludCBiaXRyYXRlX21v ZGU7Cj4gLSAgICBpbnQgbGV2ZWw7Cj4gLSAgICBpbnQgcHRzX2FzX2R0czsKPiAtICAgIGludCBl eHRyYWN0X2V4dHJhZGF0YTsKPiAtfSBNZWRpYUNvZGVjRW5jQ29udGV4dDsKPiAtCj4gLWVudW0g ewo+IC0gICAgQ09MT1JfRm9ybWF0WVVWNDIwUGxhbmFyICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPSAweDEzLAo+IC0gICAgQ09MT1JfRm9ybWF0WVVWNDIwU2VtaVBsYW5hciAgICAgICAg ICAgICAgICAgICAgICAgICAgPSAweDE1LAo+IC0gICAgQ09MT1JfRm9ybWF0U3VyZmFjZSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDdGMDAwNzg5LAo+IC19Owo+IC0KPiAt c3RhdGljIGNvbnN0IHN0cnVjdCB7Cj4gLSAgICBpbnQgY29sb3JfZm9ybWF0Owo+IC0gICAgZW51 bSBBVlBpeGVsRm9ybWF0IHBpeF9mbXQ7Cj4gLX0gY29sb3JfZm9ybWF0c1tdID0gewo+IC0gICAg eyBDT0xPUl9Gb3JtYXRZVVY0MjBQbGFuYXIsICAgICAgICAgQVZfUElYX0ZNVF9ZVVY0MjBQIH0s Cj4gLSAgICB7IENPTE9SX0Zvcm1hdFlVVjQyMFNlbWlQbGFuYXIsICAgICBBVl9QSVhfRk1UX05W MTIgICAgfSwKPiAtICAgIHsgQ09MT1JfRm9ybWF0U3VyZmFjZSwgICAgICAgICAgICAgIEFWX1BJ WF9GTVRfTUVESUFDT0RFQyB9LAo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IGVudW0gQVZQaXhl bEZvcm1hdCBhdmNfcGl4X2ZtdHNbXSA9IHsKPiAtICAgIEFWX1BJWF9GTVRfTUVESUFDT0RFQywK PiAtICAgIEFWX1BJWF9GTVRfWVVWNDIwUCwKPiAtICAgIEFWX1BJWF9GTVRfTlYxMiwKPiAtICAg IEFWX1BJWF9GTVRfTk9ORQo+IC19Owo+ICsjaW5jbHVkZSAibWVkaWFjb2RlY2VuYy5oIgo+ICsj aW5jbHVkZSAibWVkaWFjb2RlY2VuY19jdHJsLmgiCj4gCj4gc3RhdGljIHZvaWQgbWVkaWFjb2Rl Y19vdXRwdXRfZm9ybWF0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKPiB7Cj4gQEAgLTMwNyw2ICsy NDcsMjAgQEAgc3RhdGljIGF2X2NvbGQgaW50IG1lZGlhY29kZWNfaW5pdChBVkNvZGVjQ29udGV4 dCAqYXZjdHgpCj4gICAgICAgICBpZiAocy0+Yml0cmF0ZV9tb2RlID09IEJJVFJBVEVfTU9ERV9D USAmJiBhdmN0eC0+Z2xvYmFsX3F1YWxpdHkgPiAwKQo+ICAgICAgICAgICAgIGZmX0FNZWRpYUZv cm1hdF9zZXRJbnQzMihmb3JtYXQsICJxdWFsaXR5IiwgYXZjdHgtPmdsb2JhbF9xdWFsaXR5KTsK PiAgICAgfQo+ICsKPiArICAgIGlmIChzdHJsZW4ocy0+Yml0cmF0ZV9jdHJsX3NvY2tldCkgIT0g MCkgewo+ICsjaWYgX19BTkRST0lEX0FQSV9fID49IDI2Cj4gKyAgICAgICAgaW50IGVycm9yID0g bWVkaWFjb2RlY2VuY19jdHJsX2luaXQoYXZjdHgsIGZvcm1hdCk7Cj4gKyAgICAgICAgaWYgKGVy cm9yKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAidW5hYmxl IHRvIGluaXRpYWxpemUgdGhlIGNvbnRyb2wgc29ja2V0ICclcycgZm9yIE1lZGlhQ29kZWMgYml0 cmF0ZTogZXJyY29kZTolZCwgZGVzY3JpcHRpb246JyVzJ1xuIiwgcy0+Yml0cmF0ZV9jdHJsX3Nv Y2tldCwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7Cj4gKyAgICAgICAgICAgIGdvdG8gYmFpbG91 dDsKPiArICAgICAgICB9Cj4gKyNlbHNlCj4gKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0df RVJST1IsICJmZm1wZWcgd2FzIGNvbXBpbGVkIGFnYWluc3QgQW5kcm9pZCBBUEkgdmVyc2lvbiAl ZCwgYnV0IG9wdGlvbiAtYml0cmF0ZV9jdHJsX3NvY2tldCByZXF1aXJlcyB2ZXJzaW9uIDI2XG4i LCBfX0FORFJPSURfQVBJX18pOwo+ICsgICAgICAgIGdvdG8gYmFpbG91dDsKPiArI2VuZGlmIC8v X19BTkRST0lEX0FQSV9fID49IDI2Cj4gKyAgICB9Cj4gKwo+ICAgICAvLyBmcmFtZS1yYXRlIGFu ZCBpLWZyYW1lLWludGVydmFsIGFyZSByZXF1aXJlZCB0byBjb25maWd1cmUgY29kZWMKPiAgICAg aWYgKGF2Y3R4LT5mcmFtZXJhdGUubnVtID49IGF2Y3R4LT5mcmFtZXJhdGUuZGVuICYmIGF2Y3R4 LT5mcmFtZXJhdGUuZGVuID4gMCkgewo+ICAgICAgICAgcy0+ZnBzID0gYXZjdHgtPmZyYW1lcmF0 ZS5udW0gLyBhdmN0eC0+ZnJhbWVyYXRlLmRlbjsKPiBAQCAtMzg1LDYgKzMzOSwzNyBAQCBiYWls b3V0Ogo+ICAgICByZXR1cm4gcmV0Owo+IH0KPiAKPiArI2lmIF9fQU5EUk9JRF9BUElfXyA+PSAy Ngo+ICtzdGF0aWMgdm9pZCB1cGRhdGVfYml0cmF0ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpIHsK PiArICAgIE1lZGlhQ29kZWNFbmNDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiArCj4g KyAgICB1aW50NjRfdCBiaXRyYXRlX25ldyA9IF9fYXRvbWljX2xvYWRfbigmcy0+Y3RybF9jdHgu Yml0cmF0ZV9uZXh0LCBfX0FUT01JQ19TRVFfQ1NUKTsKPiArICAgIGlmIChiaXRyYXRlX25ldyA9 PSBzLT5jdHJsX2N0eC5iaXRyYXRlX2N1cikgewo+ICsgICAgICAgIHJldHVybjsKPiArICAgIH0K PiArCj4gKyAgICBpZiAoYml0cmF0ZV9uZXcgPCAxKSB7Cj4gKyAgICAgICAgcmV0dXJuOwo+ICsg ICAgfQo+ICsKPiArICAgIGlmIChiaXRyYXRlX25ldyA+IFVJTlQzMl9NQVgpIHsKPiArICAgICAg ICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgInRoZSByZXF1ZXN0ZWQgYml0cmF0ZSAlbHUg b3ZlcmZsb3dzIGEgMzJiaXQgaW50ZWdlcjogJWx1ID4gJXVcbiIsIGJpdHJhdGVfbmV3LCBiaXRy YXRlX25ldywgVUlOVDMyX01BWCk7Cj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAgfQo+ICsKPiAr ICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAic2VuZGluZyBhIG1lc3NhZ2UgdG8gdXBk YXRlIHRoZSBiaXRyYXRlIHRocm91Z2ggZm9ybWF0ICVwIHVzaW5nIG1ldGhvZCAlcFxuIiwgcy0+ Y3RybF9jdHgub3V0X2Zvcm1hdCwgcy0+Y3RybF9jdHgub3V0X2Zvcm1hdC0+c2V0SW50MzIpOwo+ ICsKPiArICAgIGZmX0FNZWRpYUZvcm1hdF9zZXRJbnQzMihzLT5jdHJsX2N0eC5vdXRfZm9ybWF0 LCAoY2hhciAqKSJ2aWRlby1iaXRyYXRlIiwgYml0cmF0ZV9uZXcpOwo+ICsgICAgaWYgKGZmX0FN ZWRpYUNvZGVjX3NldFBhcmFtZXRlcnMocy0+Y29kZWMsIHMtPmN0cmxfY3R4Lm91dF9mb3JtYXQp KSB7Cj4gKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJ1bmFibGUgdG8gc2V0 IHRoZSBiaXRyYXRlIHRvICVsdVxuIiwgYml0cmF0ZV9uZXcpOwo+ICsgICAgICAgIHJldHVybjsK PiArICAgIH0KPiArCj4gKyAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19JTkZPLCAiY2hhbmdlZCB0 aGUgYml0cmF0ZTogJWx1IC0+ICVsdVxuIiwgcy0+Y3RybF9jdHguYml0cmF0ZV9jdXIsIGJpdHJh dGVfbmV3KTsKPiArICAgIF9fYXRvbWljX3N0b3JlX24oJnMtPmN0cmxfY3R4LmJpdHJhdGVfY3Vy LCBiaXRyYXRlX25ldywgX19BVE9NSUNfU0VRX0NTVCk7Cj4gK30KPiArI2VuZGlmIC8vX19BTkRS T0lEX0FQSV9fID49IDI2Cj4gKwo+IHN0YXRpYyBpbnQgbWVkaWFjb2RlY19yZWNlaXZlKEFWQ29k ZWNDb250ZXh0ICphdmN0eCwgQVZQYWNrZXQgKnBrdCkKPiB7Cj4gICAgIE1lZGlhQ29kZWNFbmND b250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiBAQCAtMzk1LDYgKzM4MCw3IEBAIHN0YXRp YyBpbnQgbWVkaWFjb2RlY19yZWNlaXZlKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZQYWNrZXQg KnBrdCkKPiAgICAgaW50IHJldDsKPiAgICAgaW50IGV4dHJhZGF0YV9zaXplID0gMDsKPiAgICAg aW50NjRfdCB0aW1lb3V0X3VzID0gcy0+ZW9mX3NlbnQgPyBPVVRQVVRfREVRVUVVRV9USU1FT1VU X1VTIDogMDsKPiArCj4gICAgIHNzaXplX3QgaW5kZXggPSBmZl9BTWVkaWFDb2RlY19kZXF1ZXVl T3V0cHV0QnVmZmVyKGNvZGVjLCAmb3V0X2luZm8sIHRpbWVvdXRfdXMpOwo+IAo+ICAgICBpZiAo ZmZfQU1lZGlhQ29kZWNfaW5mb1RyeUFnYWluTGF0ZXIoY29kZWMsIGluZGV4KSkKPiBAQCAtNTYz LDYgKzU0OSwxMyBAQCBzdGF0aWMgaW50IG1lZGlhY29kZWNfZW5jb2RlKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwgQVZQYWNrZXQgKnBrdCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gICAg ICAgICB9Cj4gCj4gKyNpZiBfX0FORFJPSURfQVBJX18gPj0gMjYKPiArICAgICAgICBpZiAoc3Ry bGVuKHMtPmJpdHJhdGVfY3RybF9zb2NrZXQpICE9IDAgJiYgcy0+Y3RybF9jdHguYml0cmF0ZV9u ZXh0ICE9IHMtPmN0cmxfY3R4LmJpdHJhdGVfY3VyKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX1RSQUNFLCAiY2FsbGluZyB1cGRhdGVfYml0cmF0ZVxuIik7Cj4gKyAgICAg ICAgICAgIHVwZGF0ZV9iaXRyYXRlKGF2Y3R4KTsKPiArICAgICAgICB9Cj4gKyNlbmRpZiAvL19f QU5EUk9JRF9BUElfXyA+PSAyNgo+ICsKPiAgICAgICAgIGlmIChyZXQgPCAwICYmIHJldCAhPSBB VkVSUk9SKEVBR0FJTikpCj4gICAgICAgICAgICAgcmV0dXJuIHJldDsKPiAKPiBAQCAtNjg5LDYg KzY4MiwxMyBAQCBiYWlsb3V0Ogo+IHN0YXRpYyBhdl9jb2xkIGludCBtZWRpYWNvZGVjX2Nsb3Nl KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKPiB7Cj4gICAgIE1lZGlhQ29kZWNFbmNDb250ZXh0ICpz ID0gYXZjdHgtPnByaXZfZGF0YTsKPiArCj4gKyNpZiBfX0FORFJPSURfQVBJX18gPj0gMjYKPiAr ICAgIGlmIChzdHJsZW4ocy0+Yml0cmF0ZV9jdHJsX3NvY2tldCkgIT0gMCkgewo+ICsgICAgICAg IG1lZGlhY29kZWNlbmNfY3RybF9kZWluaXQoYXZjdHgpOwo+ICsgICAgfQo+ICsjZW5kaWYgLy9f X0FORFJPSURfQVBJX18gPj0gMjYKPiArCj4gICAgIGlmIChzLT5jb2RlYykgewo+ICAgICAgICAg ZmZfQU1lZGlhQ29kZWNfc3RvcChzLT5jb2RlYyk7Cj4gICAgICAgICBmZl9BTWVkaWFDb2RlY19k ZWxldGUocy0+Y29kZWMpOwo+IEBAIC03MzcsNiArNzM3LDggQEAgc3RhdGljIGNvbnN0IEFWQ29k ZWNIV0NvbmZpZ0ludGVybmFsICpjb25zdCBtZWRpYWNvZGVjX2h3X2NvbmZpZ3NbXSA9IHsKPiAg ICAgICAgICAgICAgICAgICAgIE9GRlNFVChuYW1lKSwgQVZfT1BUX1RZUEVfU1RSSU5HLCB7MH0s IDAsIDAsIFZFIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAg IHsgImJpdHJhdGVfbW9kZSIsICJCaXRyYXRlIGNvbnRyb2wgbWV0aG9kIiwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAg ICAgICAgICAgICAgICAgT0ZGU0VUKGJpdHJhdGVfbW9kZSksIEFWX09QVF9UWVBFX0lOVCwgey5p NjQgPSAtMX0sIC0xLCBJTlRfTUFYLCBWRSwgLnVuaXQgPSAiYml0cmF0ZV9tb2RlIiB9LCAgXAo+ ICsgICAgeyAiYml0cmF0ZV9jdHJsX3NvY2tldCIsICJFbmFibGUgKGFuZCBzZXQgcGF0aCB0bykg YSBjb250cm9sIFVOSVggc29ja2V0IHRoYXQgcmVjZWl2ZXMgdWludDY0X3QgYmlnLWVuZGlhbiBt ZXNzYWdlcyB0aGF0IGR5bmFtaWNhbGx5IG92ZXJyaWRlIHRoZSBiaXRyYXRlOyB0aGUgdmFsdWUg aXMgZ2l2ZW4gaW4gYml0cyBwZXIgc2Vjb25kLiIsIFwKPiArICAgICAgICAgICAgICAgICAgICBP RkZTRVQoYml0cmF0ZV9jdHJsX3NvY2tldCksIEFWX09QVF9UWVBFX1NUUklORywgey5zdHIgPSAi In0sIDAsIDAsIFZFIH0sIFwKPiAgICAgeyAiY3EiLCAiQ29uc3RhbnQgcXVhbGl0eSBtb2RlIiwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAgICAgICAgICAgICAgIDAsIEFWX09QVF9U WVBFX0NPTlNULCB7Lmk2NCA9IEJJVFJBVEVfTU9ERV9DUX0sIDAsIDAsIFZFLCAudW5pdCA9ICJi aXRyYXRlX21vZGUiIH0sICAgICAgICAgICAgIFwKPiAgICAgeyAidmJyIiwgIlZhcmlhYmxlIGJp dHJhdGUgbW9kZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiBkaWZmIC0tZ2l0IGEvbGliYXZj b2RlYy9tZWRpYWNvZGVjZW5jLmggYi9saWJhdmNvZGVjL21lZGlhY29kZWNlbmMuaAo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMC4uODkxNWM5OWY1NAo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9saWJhdmNvZGVjL21lZGlhY29kZWNlbmMuaAo+IEBAIC0wLDAgKzEsOTcg QEAKPiArLyoKPiArICogQW5kcm9pZCBNZWRpYUNvZGVjIGVuY29kZXJzCj4gKyAqCj4gKyAqIENv cHlyaWdodCAoYykgMjAyMiBaaGFvIFpoaWxpIDx6aGlsaXpoYW9AdGVuY2VudC5jb20+Cj4gKyAq IENvcHlyaWdodCAoYykgMjAyNCBEbWl0cmlpIE9rdW5ldiA8eGFpb25hcm9AZ21haWwuY29tPgo+ ICsgKgo+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBl ZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICog bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp Ywo+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIKPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVQo+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1w ZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwg SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0x MzAxIFVTQQo+ICsgKi8KPiArCj4gKyNpZm5kZWYgQVZDT0RFQ19NRURJQUNPREVDRU5DX0gKPiAr I2RlZmluZSBBVkNPREVDX01FRElBQ09ERUNFTkNfSAo+ICsKPiArI2luY2x1ZGUgImF2Y29kZWMu aCIKPiArI2luY2x1ZGUgImJzZi5oIgo+ICsjaW5jbHVkZSAibWVkaWFjb2RlY193cmFwcGVyLmgi Cj4gKyNpbmNsdWRlICJtZWRpYWNvZGVjZW5jX2N0cmwuaCIKPiArCj4gKyNkZWZpbmUgSU5QVVRf REVRVUVVRV9USU1FT1VUX1VTIDgwMDAKPiArI2RlZmluZSBPVVRQVVRfREVRVUVVRV9USU1FT1VU X1VTIDgwMDAKPiArCj4gK2VudW0gQml0cmF0ZU1vZGUgewo+ICsgICAgLyogQ29uc3RhbnQgcXVh bGl0eSBtb2RlICovCj4gKyAgICBCSVRSQVRFX01PREVfQ1EgPSAwLAo+ICsgICAgLyogVmFyaWFi bGUgYml0cmF0ZSBtb2RlICovCj4gKyAgICBCSVRSQVRFX01PREVfVkJSID0gMSwKPiArICAgIC8q IENvbnN0YW50IGJpdHJhdGUgbW9kZSAqLwo+ICsgICAgQklUUkFURV9NT0RFX0NCUiA9IDIsCj4g KyAgICAvKiBDb25zdGFudCBiaXRyYXRlIG1vZGUgd2l0aCBmcmFtZSBkcm9wcyAqLwo+ICsgICAg QklUUkFURV9NT0RFX0NCUl9GRCA9IDMsCj4gK307Cj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBNZWRp YUNvZGVjRW5jQ29udGV4dCB7Cj4gKyAgICBBVkNsYXNzICphdmNsYXNzOwo+ICsgICAgRkZBTWVk aWFDb2RlYyAqY29kZWM7Cj4gKyAgICBpbnQgdXNlX25ka19jb2RlYzsKPiArICAgIGNvbnN0IGNo YXIgKm5hbWU7Cj4gKyAgICBGRkFOYXRpdmVXaW5kb3cgKndpbmRvdzsKPiArCj4gKyAgICBpbnQg ZnBzOwo+ICsgICAgaW50IHdpZHRoOwo+ICsgICAgaW50IGhlaWdodDsKPiArCj4gKyAgICB1aW50 OF90ICpleHRyYWRhdGE7Cj4gKyAgICBpbnQgZXh0cmFkYXRhX3NpemU7Cj4gKyAgICBpbnQgZW9m X3NlbnQ7Cj4gKwo+ICsgICAgQVZGcmFtZSAqZnJhbWU7Cj4gKyAgICBBVkJTRkNvbnRleHQgKmJz ZjsKPiArCj4gKyAgICBpbnQgYml0cmF0ZV9tb2RlOwo+ICsgICAgY2hhciAqYml0cmF0ZV9jdHJs X3NvY2tldDsKPiArICAgIGludCBsZXZlbDsKPiArICAgIGludCBwdHNfYXNfZHRzOwo+ICsgICAg aW50IGV4dHJhY3RfZXh0cmFkYXRhOwo+ICsKPiArI2lmIF9fQU5EUk9JRF9BUElfXyA+PSAyNgo+ ICsgICAgTWVkaWFDb2RlY0VuY0NvbnRyb2xDb250ZXh0IGN0cmxfY3R4Owo+ICsjZW5kaWYgLy9f X0FORFJPSURfQVBJX18gPj0gMjYKPiArfSBNZWRpYUNvZGVjRW5jQ29udGV4dDsKPiArCj4gK2Vu dW0gewo+ICsgICAgQ09MT1JfRm9ybWF0WVVWNDIwUGxhbmFyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPSAweDEzLAo+ICsgICAgQ09MT1JfRm9ybWF0WVVWNDIwU2VtaVBsYW5hciAgICAg ICAgICAgICAgICAgICAgICAgICAgPSAweDE1LAo+ICsgICAgQ09MT1JfRm9ybWF0U3VyZmFjZSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDdGMDAwNzg5LAo+ICt9Owo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCB7Cj4gKyAgICBpbnQgY29sb3JfZm9ybWF0Owo+ICsgICAg ZW51bSBBVlBpeGVsRm9ybWF0IHBpeF9mbXQ7Cj4gK30gY29sb3JfZm9ybWF0c1tdID0gewo+ICsg ICAgeyBDT0xPUl9Gb3JtYXRZVVY0MjBQbGFuYXIsICAgICAgICAgQVZfUElYX0ZNVF9ZVVY0MjBQ IH0sCj4gKyAgICB7IENPTE9SX0Zvcm1hdFlVVjQyMFNlbWlQbGFuYXIsICAgICBBVl9QSVhfRk1U X05WMTIgICAgfSwKPiArICAgIHsgQ09MT1JfRm9ybWF0U3VyZmFjZSwgICAgICAgICAgICAgIEFW X1BJWF9GTVRfTUVESUFDT0RFQyB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IGVudW0gQVZQ aXhlbEZvcm1hdCBhdmNfcGl4X2ZtdHNbXSA9IHsKPiArICAgIEFWX1BJWF9GTVRfTUVESUFDT0RF QywKPiArICAgIEFWX1BJWF9GTVRfWVVWNDIwUCwKPiArICAgIEFWX1BJWF9GTVRfTlYxMiwKPiAr ICAgIEFWX1BJWF9GTVRfTk9ORQo+ICt9Owo+ICsKPiArI2VuZGlmIC8qIEFWQ09ERUNfTUVESUFD T0RFQ0VOQ19IICovCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWVkaWFjb2RlY2VuY19jdHJs LmMgYi9saWJhdmNvZGVjL21lZGlhY29kZWNlbmNfY3RybC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwLi5hNzMyNTk0ZWNkCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2xpYmF2Y29kZWMvbWVkaWFjb2RlY2VuY19jdHJsLmMKPiBAQCAtMCwwICsxLDE5NCBAQAo+ICsv Kgo+ICsgKiBBbmRyb2lkIE1lZGlhQ29kZWMgZW5jb2RlcnMKPiArICoKPiArICogQ29weXJpZ2h0 IChjKSAyMDI0IERtaXRyaWkgT2t1bmV2IDx4YWlvbmFyb0BnbWFpbC5jb20+Cj4gKyAqCj4gKyAq IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl cgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V Cj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4g KyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCj4g KyAqLwo+ICsKPiArI2lmIF9fQU5EUk9JRF9BUElfXyA+PSAyNgo+ICsKPiArI2luY2x1ZGUgPGVu ZGlhbi5oPgo+ICsjaW5jbHVkZSA8c3RkYXRvbWljLmg+Cj4gKyNpbmNsdWRlIDxzdGRpby5oPgo+ ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4KPiArI2luY2x1ZGUg PHN5cy9zb2NrZXQuaD4KPiArI2luY2x1ZGUgPHN5cy91bi5oPgo+ICsjaW5jbHVkZSA8dW5pc3Rk Lmg+Cj4gKyNpbmNsdWRlIDxwdGhyZWFkLmg+Cj4gKwo+ICsjaW5jbHVkZSAibWVkaWFjb2RlY2Vu Y19jdHJsLmgiCj4gKyNpbmNsdWRlICJtZWRpYWNvZGVjZW5jLmgiCj4gKwo+ICt0eXBlZGVmIHN0 cnVjdCBtZWRpYWNvZGVjZW5jX2N0cmxfaGFuZGxlX2Nvbm5lY3Rpb25fY29udGV4dCB7Cj4gKyAg ICBpbnQgY2xpZW50X3NvY2tfZmQ7Cj4gKyAgICBBVkNvZGVjQ29udGV4dCAqYXZjdHg7Cj4gK30g bWVkaWFjb2RlY2VuY19jdHJsX2hhbmRsZV9jb25uZWN0aW9uX2NvbnRleHRfdDsKPiArCj4gK3N0 YXRpYyB2b2lkICptZWRpYWNvZGVjZW5jX2N0cmxfaGFuZGxlX2Nvbm5lY3Rpb24odm9pZCAqYXJn KSB7Cj4gKyAgICBtZWRpYWNvZGVjZW5jX2N0cmxfaGFuZGxlX2Nvbm5lY3Rpb25fY29udGV4dF90 ICpoY3R4ID0gYXJnOwo+ICsgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4ID0gaGN0eC0+YXZjdHg7 Cj4gKyAgICBNZWRpYUNvZGVjRW5jQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4gKwo+ ICsgICAgd2hpbGUgKDEpIHsKPiArICAgICAgICB1aW50NjRfdCByZWNlaXZlZF92YWx1ZSwgYml0 cmF0ZV9vbGQsIGJpdHJhdGVfbmV3Owo+ICsgICAgICAgIHNzaXplX3QgbnVtX2J5dGVzID0gcmVj dihoY3R4LT5jbGllbnRfc29ja19mZCwgJnJlY2VpdmVkX3ZhbHVlLCBzaXplb2YocmVjZWl2ZWRf dmFsdWUpLCBNU0dfQ01TR19DTE9FWEVDKTsKPiArICAgICAgICBpZiAobnVtX2J5dGVzIDw9IDAp IHsKPiArICAgICAgICAgICAgc3dpdGNoIChlcnJubykgewo+ICsgICAgICAgICAgICBjYXNlIDA6 Cj4gKyAgICAgICAgICAgIGNhc2UgRUNPTk5SRVNFVDoKPiArICAgICAgICAgICAgY2FzZSBFUElQ RToKPiArICAgICAgICAgICAgY2FzZSBFQkFERjoKPiArICAgICAgICAgICAgICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX0lORk8sICJUaGUgTWVkaWFDb2RlYyBjb250cm9sIGNvbm5lY3Rpb24gd2Fz IGNsb3NlZDogZXJybm86JWQ6ICVzXG4iLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKPiArICAg ICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAg ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJBIGZhaWx1cmUgb2YgYSBNZWRpYUNv ZGVjIGNvbnRyb2wgY29ubmVjdGlvbjogZXJybm86JWQ6ICVzXG4iLCBlcnJubywgc3RyZXJyb3Io ZXJybm8pKTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAg ICB9Cj4gKwo+ICsgICAgICAgIGJpdHJhdGVfbmV3ID0gYmU2NHRvaChyZWNlaXZlZF92YWx1ZSk7 Cj4gKwo+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX1RSQUNFLCAiUmVjZWl2ZWQgYSBt ZXNzYWdlIHRvIGNoYW5nZSB0aGUgYml0cmF0ZSB0byAlbHUuXG4iLCBiaXRyYXRlX25ldyk7Cj4g Kwo+ICsgICAgICAgIGJpdHJhdGVfb2xkID0gX19hdG9taWNfbG9hZF9uKCZzLT5jdHJsX2N0eC5i aXRyYXRlX2N1ciwgX19BVE9NSUNfU0VRX0NTVCk7Cj4gKyAgICAgICAgaWYgKGJpdHJhdGVfbmV3 ID09IGJpdHJhdGVfb2xkKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0lO Rk8sICJSZWNlaXZlZCBhIG1lc3NhZ2UgdG8gY2hhbmdlIHRoZSBiaXRyYXRlLCBidXQgdGhlIGJp dHJhdGUgaXMgYWxyZWFkeSAlbHUsIG5vdCBjaGFuZ2luZy5cbiIsIGJpdHJhdGVfb2xkKTsKPiAr ICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBhdl9sb2co YXZjdHgsIEFWX0xPR19JTkZPLCAiUmVjZWl2ZWQgYSBtZXNzYWdlIHRvIGNoYW5nZSB0aGUgYml0 cmF0ZSBmcm9tICVsdSB0byAlbHUuXG4iLCBiaXRyYXRlX29sZCwgYml0cmF0ZV9uZXcpOwo+ICsg ICAgICAgIF9fYXRvbWljX3N0b3JlX24oJnMtPmN0cmxfY3R4LmJpdHJhdGVfbmV4dCwgYml0cmF0 ZV9uZXcsIF9fQVRPTUlDX1NFUV9DU1QpOwo+ICsgICAgfQo+ICsKPiArICAgIGNsb3NlKGhjdHgt PmNsaWVudF9zb2NrX2ZkKTsKPiArICAgIGZyZWUoaGN0eCk7Cj4gKyAgICBwdGhyZWFkX2V4aXQo TlVMTCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkICptZWRpYWNvZGVjZW5jX2N0cmxfaGFuZGxl X2xpc3RlbmVyKHZvaWQgKl9hdmN0eCkgewo+ICsgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4ID0g X2F2Y3R4Owo+ICsgICAgTWVkaWFDb2RlY0VuY0NvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRh Owo+ICsKPiArICAgIGlmIChsaXN0ZW4ocy0+Y3RybF9jdHguc2VydmVyX3NvY2tfZmQsIDUpIDwg MCkgewo+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHN0 YXJ0IGxpc3RlbmluZyBzb2NrZXQgJyVzJzogZXJybm86JWQ6ICVzXG4iLCBzLT5jdHJsX2N0eC5z ZXJ2ZXJfc29ja19wYXRoLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKPiArICAgICAgICBnb3Rv IG1lZGlhY29kZWNlbmNfY3RybF9oYW5kbGVfbGlzdGVuZXJfZW5kOwo+ICsgICAgfQo+ICsKPiAr ICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX1RSQUNFLCAiTGlzdGVuaW5nIHNvY2tldCAnJXMnXG4i LCBzLT5jdHJsX2N0eC5zZXJ2ZXJfc29ja19wYXRoKTsKPiArCj4gKyAgICBzLT5jdHJsX2N0eC5s aXN0ZW5lcl9zdGF0dXMgPSBtY2xzX3J1bm5pbmc7Cj4gKyAgICB3aGlsZSAocy0+Y3RybF9jdHgu bGlzdGVuZXJfc3RhdHVzID09IG1jbHNfcnVubmluZykgewo+ICsgICAgICAgIHB0aHJlYWRfdCBj bGllbnRfdGhyZWFkX2lkOwo+ICsgICAgICAgIGludCBwdGhyZWFkX2Vycm9yOwo+ICsgICAgICAg IG1lZGlhY29kZWNlbmNfY3RybF9oYW5kbGVfY29ubmVjdGlvbl9jb250ZXh0X3QgKmhjdHg7Cj4g Kwo+ICsgICAgICAgIGludCBjbGllbnRfc29ja19mZCA9IGFjY2VwdChzLT5jdHJsX2N0eC5zZXJ2 ZXJfc29ja19mZCwgTlVMTCwgTlVMTCk7Cj4gKyAgICAgICAgaWYgKGNsaWVudF9zb2NrX2ZkIDwg MCkgewo+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0 byBhY2NlcHQgYSBjb25uZWN0aW9uIHRvIHNvY2tldCAnJXMnOiBjb2RlOiVkOiBkZXNjcmlwdGlv bjolc1xuIiwgcy0+Y3RybF9jdHguc2VydmVyX3NvY2tfcGF0aCwgZXJybm8sIHN0cmVycm9yKGVy cm5vKSk7Cj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAg ICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfVFJBQ0UsICJBY2NlcHRlZCBhIGNvbm5lY3Rpb24gdG8g JyVzJ1xuIiwgcy0+Y3RybF9jdHguc2VydmVyX3NvY2tfcGF0aCk7Cj4gKwo+ICsgICAgICAgIGhj dHggPSBtYWxsb2Moc2l6ZW9mKG1lZGlhY29kZWNlbmNfY3RybF9oYW5kbGVfY29ubmVjdGlvbl9j b250ZXh0X3QpKTsKPiArICAgICAgICBoY3R4LT5jbGllbnRfc29ja19mZCA9IGNsaWVudF9zb2Nr X2ZkOwo+ICsgICAgICAgIGhjdHgtPmF2Y3R4ID0gYXZjdHg7Cj4gKwo+ICsgICAgICAgIHB0aHJl YWRfZXJyb3IgPSBwdGhyZWFkX2NyZWF0ZSgmY2xpZW50X3RocmVhZF9pZCwgTlVMTCwgbWVkaWFj b2RlY2VuY19jdHJsX2hhbmRsZV9jb25uZWN0aW9uLCBoY3R4KTsKPiArICAgICAgICBpZiAocHRo cmVhZF9lcnJvciAhPSAwKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VS Uk9SLCAiRmFpbGVkIHRvIGFjY2VwdCBhIGNvbm5lY3Rpb24gdG8gc29ja2V0ICclcyc6IGNvZGU6 JWQ6IGRlc2NyaXB0aW9uOiVzXG4iLCBzLT5jdHJsX2N0eC5zZXJ2ZXJfc29ja19wYXRoLCBwdGhy ZWFkX2Vycm9yLCBzdHJlcnJvcihwdGhyZWFkX2Vycm9yKSk7Cj4gKyAgICAgICAgICAgIGZyZWUo aGN0eCk7Cj4gKyAgICAgICAgICAgIGNsb3NlKGNsaWVudF9zb2NrX2ZkKTsKPiArICAgICAgICAg ICAgY29udGludWU7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICAvLyBtZWRpYWNvZGVjZW5j X2N0cmxfaGFuZGxlX2Nvbm5lY3Rpb24gdGFrZXMgb3duZXJzaGlwIG9mIGhjdHggYW5kIGZyZWVz IGl0IHdoZW4gZmluaXNoZWQsCj4gKyAgICAgICAgLy8gc28gd2UgYXJlIG9ubHkgZGV0YWNoaW5n IGhlcmUgYW5kIHRoYXQncyBpdC4KPiArICAgICAgICBwdGhyZWFkX2Vycm9yID0gcHRocmVhZF9k ZXRhY2goY2xpZW50X3RocmVhZF9pZCk7Cj4gKyAgICAgICAgaWYgKHB0aHJlYWRfZXJyb3IgIT0g MCkgewo+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIlVuYWJsZSB0 byBkZXRhY2ggdGhlIGNsaWVudCBoYW5kbGVyIHRocmVhZDogY29kZTolZDogZGVzY3JpcHRpb246 JXNcbiIsIHB0aHJlYWRfZXJyb3IsIHN0cmVycm9yKHB0aHJlYWRfZXJyb3IpKTsKPiArICAgICAg ICB9Cj4gKyAgICB9Cj4gKwo+ICttZWRpYWNvZGVjZW5jX2N0cmxfaGFuZGxlX2xpc3RlbmVyX2Vu ZDoKPiArICAgIGNsb3NlKHMtPmN0cmxfY3R4LnNlcnZlcl9zb2NrX2ZkKTsKPiArICAgIHVubGlu ayhzLT5jdHJsX2N0eC5zZXJ2ZXJfc29ja19wYXRoKTsKPiArICAgIHMtPmN0cmxfY3R4Lmxpc3Rl bmVyX3N0YXR1cyA9IG1jbHNfc3RvcHBlZDsKPiArICAgIHB0aHJlYWRfZXhpdChOVUxMKTsKPiAr fQo+ICsKPiAraW50IG1lZGlhY29kZWNlbmNfY3RybF9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0 eCwgRkZBTWVkaWFGb3JtYXQgKmZvcm1hdCkgewo+ICsgICAgTWVkaWFDb2RlY0VuY0NvbnRleHQg KnMgPSBhdmN0eC0+cHJpdl9kYXRhOwo+ICsgICAgY2hhciAqc29ja2V0X3BhdGggPSBzLT5iaXRy YXRlX2N0cmxfc29ja2V0Owo+ICsgICAgaW50IHNlcnZlcl9zb2NrX2ZkOwo+ICsgICAgc3RydWN0 IHNvY2thZGRyX3VuIHNlcnZlcl9hZGRyOwo+ICsgICAgaW50IHB0aHJlYWRfZXJyb3I7Cj4gKwo+ ICsgICAgcy0+Y3RybF9jdHguYml0cmF0ZV9jdXIgPSBhdmN0eC0+Yml0X3JhdGU7Cj4gKyAgICBz LT5jdHJsX2N0eC5iaXRyYXRlX25leHQgPSBzLT5jdHJsX2N0eC5iaXRyYXRlX2N1cjsKPiArICAg IHMtPmN0cmxfY3R4Lm91dF9mb3JtYXQgPSBmb3JtYXQ7Cj4gKwo+ICsgICAgc2VydmVyX3NvY2tf ZmQgPSBzb2NrZXQoQUZfVU5JWCwgU09DS19TVFJFQU0sIDApOwo+ICsgICAgaWYgKHNlcnZlcl9z b2NrX2ZkIDwgMCkgewo+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFp bGVkIHRvIGNyZWF0ZSBzb2NrZXQgJyVzJzogZXJybm86JWQ6ICVzXG4iLCBzb2NrZXRfcGF0aCwg ZXJybm8sIHN0cmVycm9yKGVycm5vKSk7Cj4gKyAgICAgICAgcmV0dXJuIGVycm5vOwo+ICsgICAg fQo+ICsKPiArICAgIG1lbXNldCgmc2VydmVyX2FkZHIsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2Fk ZHJfdW4pKTsKPiArICAgIHNlcnZlcl9hZGRyLnN1bl9mYW1pbHkgPSBBRl9VTklYOwo+ICsgICAg c3RybmNweShzZXJ2ZXJfYWRkci5zdW5fcGF0aCwgc29ja2V0X3BhdGgsIHNpemVvZihzZXJ2ZXJf YWRkci5zdW5fcGF0aCkgLSAxKTsKPiArCj4gKyAgICBpZiAoYmluZChzZXJ2ZXJfc29ja19mZCwg KHN0cnVjdCBzb2NrYWRkciAqKSZzZXJ2ZXJfYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl91 bikpIDwgMCkgewo+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVk IHRvIGJpbmQgdG8gdGhlIHNvY2tldCAnJXMnOiBlcnJubzolZDogJXNcbiIsIHNvY2tldF9wYXRo LCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKPiArICAgICAgICByZXR1cm4gZXJybm87Cj4gKyAg ICB9Cj4gKyAgICBzLT5jdHJsX2N0eC5zZXJ2ZXJfc29ja19wYXRoID0gc29ja2V0X3BhdGg7Cj4g KyAgICBzLT5jdHJsX2N0eC5zZXJ2ZXJfc29ja19mZCA9IHNlcnZlcl9zb2NrX2ZkOwo+ICsKPiAr ICAgIHB0aHJlYWRfZXJyb3IgPSBwdGhyZWFkX2NyZWF0ZSgmcy0+Y3RybF9jdHgubGlzdGVuZXJf dGhyZWFkX2lkLCBOVUxMLCBtZWRpYWNvZGVjZW5jX2N0cmxfaGFuZGxlX2xpc3RlbmVyLCBhdmN0 eCk7Cj4gKyAgICBpZiAocHRocmVhZF9lcnJvciAhPSAwKSB7Cj4gKyAgICAgICAgYXZfbG9nKGF2 Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gY3JlYXRlIGEgdGhyZWFkIHRvIGxpc3RlbiB0 aGUgc29ja2V0ICclcyc6IGVycm5vOiVkOiAlc1xuIiwgc29ja2V0X3BhdGgsIHB0aHJlYWRfZXJy b3IsIHN0cmVycm9yKHB0aHJlYWRfZXJyb3IpKTsKPiArICAgICAgICByZXR1cm4gcHRocmVhZF9l cnJvcjsKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IG1lZGlh Y29kZWNlbmNfY3RybF9kZWluaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KSB7Cj4gKyAgICBNZWRp YUNvZGVjRW5jQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4gKyAgICB2b2lkICpyZXR2 YWw7Cj4gKyAgICBpbnQgcHRocmVhZF9lcnJvcjsKPiArICAgIGlmIChzLT5jdHJsX2N0eC5saXN0 ZW5lcl90aHJlYWRfaWQgIT0gMCkgewo+ICsgICAgICAgIHJldHVybiAwOwo+ICsgICAgfQo+ICsK PiArICAgIHMtPmN0cmxfY3R4Lmxpc3RlbmVyX3N0YXR1cyA9IG1jbHNfc3RvcHBpbmc7Cj4gKyAg ICBjbG9zZShzLT5jdHJsX2N0eC5zZXJ2ZXJfc29ja19mZCk7Cj4gKwo+ICsgICAgcHRocmVhZF9l cnJvciA9IHB0aHJlYWRfam9pbihzLT5jdHJsX2N0eC5saXN0ZW5lcl90aHJlYWRfaWQsICZyZXR2 YWwpOwo+ICsgICAgaWYgKHB0aHJlYWRfZXJyb3IgIT0gMCkgewo+ICsgICAgICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGRldGFjaCBmcm9tIHRoZSBsaXN0ZW5lciB0 aHJlYWQgb2YgdGhlIHNvY2tldCAnJXMnOiBlcnJubzolZDogJXNcbiIsIHMtPmN0cmxfY3R4LnNl cnZlcl9zb2NrX3BhdGgsIHB0aHJlYWRfZXJyb3IsIHN0cmVycm9yKHB0aHJlYWRfZXJyb3IpKTsK PiArICAgICAgICByZXR1cm4gcHRocmVhZF9lcnJvcjsKPiArICAgIH0KPiArCj4gKyAgICBmZl9B TWVkaWFGb3JtYXRfZGVsZXRlKHMtPmN0cmxfY3R4Lm91dF9mb3JtYXQpOwo+ICsgICAgcmV0dXJu IDA7Cj4gK30KPiArCj4gKyNlbmRpZiAvL19fQU5EUk9JRF9BUElfXyA+PSAyNgo+IGRpZmYgLS1n aXQgYS9saWJhdmNvZGVjL21lZGlhY29kZWNlbmNfY3RybC5oIGIvbGliYXZjb2RlYy9tZWRpYWNv ZGVjZW5jX2N0cmwuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMC4u YTVkZjIwMzYzOQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJhdmNvZGVjL21lZGlhY29kZWNl bmNfY3RybC5oCj4gQEAgLTAsMCArMSw1MCBAQAo+ICsvKgo+ICsgKiBBbmRyb2lkIE1lZGlhQ29k ZWMgZW5jb2RlcnMKPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDI0IERtaXRyaWkgT2t1bmV2 IDx4YWlvbmFyb0BnbWFpbC5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZG bXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoK PiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICog TGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs b29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBBVkNP REVDX01FRElBQ09ERUNFTkNfQ1RSTF9ICj4gKyNkZWZpbmUgQVZDT0RFQ19NRURJQUNPREVDRU5D X0NUUkxfSAo+ICsjaWYgX19BTkRST0lEX0FQSV9fID49IDI2Cj4gKwo+ICsjaW5jbHVkZSAiYXZj b2RlYy5oIgo+ICsjaW5jbHVkZSAibWVkaWFjb2RlY193cmFwcGVyLmgiCj4gKwo+ICt0eXBlZGVm IGVudW0gbWVkaWFjb2RlY2VuY19jdHJsX2xpc3RlbmVyX3N0YXR1cyB7Cj4gKyAgICBtY2xzX3N0 b3BwZWQgPSAwLAo+ICsgICAgbWNsc19ydW5uaW5nID0gMSwKPiArICAgIG1jbHNfc3RvcHBpbmcg PSAyLAo+ICt9IG1lZGlhY29kZWNlbmNfY3RybF9saXN0ZW5lcl9zdGF0dXNfdDsKPiArCj4gK3R5 cGVkZWYgc3RydWN0IG1lZGlhY29kZWNlbmNfY3RybF9jdHggewo+ICsgICAgY2hhciAqc2VydmVy X3NvY2tfcGF0aDsKPiArICAgIGludCBzZXJ2ZXJfc29ja19mZDsKPiArICAgIHB0aHJlYWRfdCBs aXN0ZW5lcl90aHJlYWRfaWQ7Cj4gKyAgICBtZWRpYWNvZGVjZW5jX2N0cmxfbGlzdGVuZXJfc3Rh dHVzX3QgbGlzdGVuZXJfc3RhdHVzOwo+ICsgICAgdWludDY0X3QgYml0cmF0ZV9jdXI7Cj4gKyAg ICB1aW50NjRfdCBiaXRyYXRlX25leHQ7Cj4gKyAgICBGRkFNZWRpYUZvcm1hdCAqb3V0X2Zvcm1h dDsKPiArfSBNZWRpYUNvZGVjRW5jQ29udHJvbENvbnRleHQ7Cj4gKwo+ICtleHRlcm4gaW50IG1l ZGlhY29kZWNlbmNfY3RybF9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgRkZBTWVkaWFGb3Jt YXQgKmZvcm1hdCk7Cj4gK2V4dGVybiBpbnQgbWVkaWFjb2RlY2VuY19jdHJsX2RlaW5pdChBVkNv ZGVjQ29udGV4dCAqYXZjdHgpOwo+ICsKPiArI2VuZGlmIC8vX19BTkRST0lEX0FQSV9fID49IDI2 Cj4gKyNlbmRpZiAvKiBBVkNPREVDX01FRElBQ09ERUNFTkNfQ1RSTF9IICovCj4gLS0gCj4gMi40 My4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiBo dHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPiAKPiBUbyB1 bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QK ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGlu Zm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1h aWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2Ny aWJlIi4K