From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 96DB74DFC3 for ; Sun, 6 Jul 2025 09:02:05 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 9F107690FE6; Sun, 6 Jul 2025 12:02:01 +0300 (EEST) Received: from out203-205-221-205.mail.qq.com (out203-205-221-205.mail.qq.com [203.205.221.205]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 31855690049 for ; Sun, 6 Jul 2025 12:01:53 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1751792510; bh=t0wzputyt5I3mVmd3BJwY7fx5PeId7fjw4rgckpEy6I=; h=From:Subject:Date:References:In-Reply-To:To; b=cPbYt+GOtu0av8a593cyKvvc1ocwhF1au/X62F6JmjgBq662M+HjW0wSoeQIvKqA6 rjNfDV+LDB1IcS9SA/Qod80Jffab/PmBA8wkAEHPb1Or8OYPP86Pbno/InocicHq6g isPAC9ibaTTjWWxxSv01b9VIrvPCOUVGMRPLYUuc= Received: from smtpclient.apple ([240e:47e:3251:2dd4:a889:ffd:8568:4c4a]) by newxmesmtplogicsvrsza36-0.qq.com (NewEsmtp) with SMTP id 70B4E02; Sun, 06 Jul 2025 17:01:48 +0800 X-QQ-mid: xmsmtpt1751792508tprob8diq Message-ID: X-QQ-XMAILINFO: NePjysvE7mpjJ3Uko9JX4suwZc863IUOsrpGR+1imKOgOU3FOQh/XSQAamscG0 UN42s3wOYhi648wAMdshBKRhfyK+LrAU+1tc7S4OrZzzmkfuJbi+WTIHPA3dS62/o4r9Y5OYgYGf NcPgHm3kgmj6nY5h3KdvT7wbMQzh0fMJ96PkrrcS5iPsRldmsrX7BrBi/icx/EZqW9o00zng8iyJ IQELEdKUBT9cTqvUVO15+3lnly+v7grh5iEngL3lr6fKWvBhI6QTlirB7pbDviB8BfolIhyYVoS1 beN0BRMvnevzbxGVcqOgIY3jWERE+BNUXxFmPHZVTurQ5jbCIMoBk1/J0bfYkLBrzf7yF/xjh6ET jUU+d06Ikfc7j+7R6Odn6x2IxBqr0FKHigATbQONQ3US5sexf3AXCI6X8fyBvJtIc1/0cQHySjFd caLx/RlRem+muNoHMOvmokWFE4aqWwjYjNo1vpgbDuGiWpJgEGvn6zdXDL3decg2U9hzLhwDGrbd YDtJ6qbkSUIdIx0GqMk+J8i2/TFaLJ7U+yZ0stvVe+4gGMSAQ0stavWXknpJXE1b+ojjOCndphXd IJE3meATALdgWu8RiRgZCuBAWWLNm9ClMjWcVib6sZACyWvNwymabUEzzrW0eXoSYnh3lf51zSf6 /qxA36ICew6SHuntgikwr9tjtcVazG+3F2ChKBQovRAUvTLdC2rba1qmZF0k02qNJIwVhpLSze9o 39qeJIZYqB1QqGaeHlwBrTSwfDcuXrIyknrTtQ4OBHRv++QAkbM1vo+Pbt85haRCIKvV+2+UwjFY EjrmjrnkttLM8+sbMMatZv8tZLcW1uO6c+azjkEeWK2VfLM/1s1uRa/koI9lwRcl5V8kFJG2N+p1 AzTv78oJWKIa9tVbglvngUj7wlO+yMazJnSLpnM/+yfRyJexvH6OVBCcQM61wKRCkV5eQpwy50SY n2tr70Sg+6j76ueaZxqamXa7dK5M4cM85bqzNxW58kYRV1Z7y3kzv1s9hFeC3FPDJFoYCPmXI= X-QQ-XMRINFO: NI4Ajvh11aEj8Xl/2s1/T8w= From: Zhao Zhili Mime-Version: 1.0 (1.0) Date: Sun, 6 Jul 2025 17:01:38 +0800 X-OQ-MSGID: <39F71404-6322-46AF-8BD7-879224AF6C08@foxmail.com> References: In-Reply-To: To: ffmpeg-devel@ffmpeg.org X-Mailer: iPhone Mail (22F76) Subject: Re: [FFmpeg-devel] [PATCH v2 3/3] avcodec/ohenc: Add h264/hevc OpenHarmony encoders 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 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: Cj4g5ZyoIDIwMjXlubQ35pyINuaXpe+8jOS4i+WNiDQ6MDbvvIxaaGFvIFpoaWxpIDxxdWlua2Js YWNrQGZveG1haWwuY29tPiDlhpnpgZPvvJoKPiAKPiDvu79Gcm9tOiBaaGFvIFpoaWxpIDx6aGls aXpoYW9AdGVuY2VudC5jb20+Cj4gCj4gLS0tCj4gQ2hhbmdlbG9nICAgICAgICAgICAgICB8ICAg MSArCj4gY29uZmlndXJlICAgICAgICAgICAgICB8ICAgNyArLQo+IGxpYmF2Y29kZWMvTWFrZWZp bGUgICAgfCAgIDIgKwo+IGxpYmF2Y29kZWMvYWxsY29kZWNzLmMgfCAgIDIgKwo+IGxpYmF2Y29k ZWMvb2hjb2RlYy5jICAgfCAgIDggKwo+IGxpYmF2Y29kZWMvb2hjb2RlYy5oICAgfCAgIDEgKwo+ IGxpYmF2Y29kZWMvb2hlbmMuYyAgICAgfCA2OTMgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiBsaWJhdmNvZGVjL3ZlcnNpb24uaCAgIHwgICAyICstCj4gOCBmaWxl cyBjaGFuZ2VkLCA3MTMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliYXZjb2RlYy9vaGVuYy5jCj4gCj4gZGlmZiAtLWdpdCBhL0NoYW5nZWxvZyBi L0NoYW5nZWxvZwo+IGluZGV4IGY1ZWM5ZWFmYzMuLjRhOGUwZWY2MGQgMTAwNjQ0Cj4gLS0tIGEv Q2hhbmdlbG9nCj4gKysrIGIvQ2hhbmdlbG9nCj4gQEAgLTIxLDYgKzIxLDcgQEAgdmVyc2lvbiA8 bmV4dD46Cj4gLSBHLjcyOCBkZWNvZGVyCj4gLSBwYWRfY3VkYSBmaWx0ZXIKPiAtIFNhbnlvIExE LUFEUENNIGRlY29kZXIKPiArLSBPcGVuSGFybW9ueSBoYXJkd2FyZSBkZWNvZGVyL2VuY29kZXIK PiAKPiAKPiB2ZXJzaW9uIDcuMToKPiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJl Cj4gaW5kZXggYTJhY2UzNmNkYy4uMjI1YWFhZWU5OSAxMDA3NTUKPiAtLS0gYS9jb25maWd1cmUK PiArKysgYi9jb25maWd1cmUKPiBAQCAtMzQxMiw2ICszNDEyLDcgQEAgaDI2NF9udmVuY19lbmNv ZGVyX2RlcHM9Im52ZW5jIgo+IGgyNjRfbnZlbmNfZW5jb2Rlcl9zZWxlY3Q9ImF0c2NfYTUzIgo+ IGgyNjRfb2hfZGVjb2Rlcl9kZXBzPSJvaGNvZGVjIgo+IGgyNjRfb2hfZGVjb2Rlcl9zZWxlY3Q9 ImgyNjRfbXA0dG9hbm5leGJfYnNmIgo+ICtoMjY0X29oX2VuY29kZXJfZGVwcz0ib2hjb2RlYyIK PiBoMjY0X29teF9lbmNvZGVyX2RlcHM9Im9teCIKPiBoMjY0X3Fzdl9kZWNvZGVyX3NlbGVjdD0i aDI2NF9tcDR0b2FubmV4Yl9ic2YgcXN2ZGVjIgo+IGgyNjRfcXN2X2VuY29kZXJfc2VsZWN0PSJh dHNjX2E1MyBxc3ZlbmMiCj4gQEAgLTM0MzYsNiArMzQzNyw3IEBAIGhldmNfbnZlbmNfZW5jb2Rl cl9kZXBzPSJudmVuYyIKPiBoZXZjX252ZW5jX2VuY29kZXJfc2VsZWN0PSJhdHNjX2E1MyIKPiBo ZXZjX29oX2RlY29kZXJfZGVwcz0ib2hjb2RlYyIKPiBoZXZjX29oX2RlY29kZXJfc2VsZWN0PSJo ZXZjX21wNHRvYW5uZXhiX2JzZiIKPiAraGV2Y19vaF9lbmNvZGVyX2RlcHM9Im9oY29kZWMiCj4g aGV2Y19xc3ZfZGVjb2Rlcl9zZWxlY3Q9ImhldmNfbXA0dG9hbm5leGJfYnNmIHFzdmRlYyIKPiBo ZXZjX3Fzdl9lbmNvZGVyX3NlbGVjdD0iaGV2Y3BhcnNlIHFzdmVuYyIKPiBoZXZjX3JrbXBwX2Rl Y29kZXJfZGVwcz0icmttcHAiCj4gQEAgLTcxNzEsOCArNzE3Myw5IEBAIGVuYWJsZWQgbW1hbCAg ICAgICAgICAgICAgJiYgeyBjaGVja19saWIgbW1hbCBpbnRlcmZhY2UvbW1hbC9tbWFsLmggbW1h bF9wb3J0X2NvCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfbGliIG1t YWwgaW50ZXJmYWNlL21tYWwvbW1hbC5oIG1tYWxfcG9ydF9jb25uZWN0IC1sbW1hbF9jb3JlIC1s bW1hbF91dGlsIC1sbW1hbF92Y19jbGllbnQgLWxiY21faG9zdDsgfSB8fAo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkaWUgIkVSUk9SOiBtbWFsIG5vdCBmb3VuZCIgJiYKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZnVuY19oZWFkZXJzIGludGVyZmFjZS9t bWFsL21tYWwuaCAiTU1BTF9QQVJBTUVURVJfVklERU9fTUFYX05VTV9DQUxMQkFDS1MiOyB9Cj4g LWVuYWJsZWQgb2hjb2RlYyAgICAgICAgICAgJiYgeyBjaGVja19saWIgb2hjb2RlYyAibXVsdGlt ZWRpYS9wbGF5ZXJfZnJhbWV3b3JrL25hdGl2ZV9hdmNvZGVjX3ZpZGVvZGVjb2Rlci5oIiBcCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9IX1ZpZGVvRGVjb2Rlcl9DcmVh dGVCeU5hbWUgLWxuYXRpdmVfbWVkaWFfY29kZWNiYXNlIC1sbmF0aXZlX21lZGlhX2NvcmUgLWxu YXRpdmVfbWVkaWFfdmRlYyB8fAo+ICtlbmFibGVkIG9oY29kZWMgICAgICAgICAgICYmIHsgY2hl Y2tfbGliIG9oY29kZWMgIm11bHRpbWVkaWEvcGxheWVyX2ZyYW1ld29yay9uYXRpdmVfYXZjb2Rl Y192aWRlb2RlY29kZXIuaCBtdWx0aW1lZGlhL3BsYXllcl9mcmFtZXdvcmsvbmF0aXZlX2F2Y29k ZWNfdmlkZW9lbmNvZGVyLmgiIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIk9IX1ZpZGVvRGVjb2Rlcl9DcmVhdGVCeU5hbWUgT0hfVmlkZW9FbmNvZGVyX0NyZWF0ZUJ5 TmFtZSIgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbG5hdGl2ZV9t ZWRpYV92ZGVjIC1sbmF0aXZlX21lZGlhX3ZlbmMgLWxuYXRpdmVfbWVkaWFfY29kZWNiYXNlIC1s bmF0aXZlX21lZGlhX2NvcmUgfHwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGll ICJFUlJPUjogbWlzc2luZyBuYXRpdmVfbWVkaWEgbGlicyI7IH0KPiBlbmFibGVkIG9wZW5hbCAg ICAgICAgICAgICYmIHsgY2hlY2tfcGtnX2NvbmZpZyBvcGVuYWwgIm9wZW5hbCA+PSAxLjEiICJB TC9hbC5oIiBhbEdldEVycm9yIHx8Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg Zm9yIGFsX2V4dHJhbGlicyBpbiAiJHtPUEVOQUxfTElCU30iICItbG9wZW5hbCIgIi1sT3BlbkFM MzIiOyBkbwo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9N YWtlZmlsZQo+IGluZGV4IGI3ODRiZjNmN2UuLmY5MzVjZmJlMGQgMTAwNjQ0Cj4gLS0tIGEvbGli YXZjb2RlYy9NYWtlZmlsZQo+ICsrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiBAQCAtNDI5LDYg KzQyOSw3IEBAIE9CSlMtJChDT05GSUdfSDI2NF9NRl9FTkNPREVSKSAgICAgICAgICs9IG1mZW5j Lm8gbWZfdXRpbHMubwo+IE9CSlMtJChDT05GSUdfSDI2NF9NTUFMX0RFQ09ERVIpICAgICAgICs9 IG1tYWxkZWMubwo+IE9CSlMtJChDT05GSUdfSDI2NF9OVkVOQ19FTkNPREVSKSAgICAgICs9IG52 ZW5jX2gyNjQubyBudmVuYy5vCj4gT0JKUy0kKENPTkZJR19IMjY0X09IX0RFQ09ERVIpICAgICAg ICAgKz0gb2hjb2RlYy5vIG9oZGVjLm8KPiArT0JKUy0kKENPTkZJR19IMjY0X09IX0VOQ09ERVIp ICAgICAgICAgKz0gb2hjb2RlYy5vIG9oZW5jLm8KPiBPQkpTLSQoQ09ORklHX0gyNjRfT01YX0VO Q09ERVIpICAgICAgICArPSBvbXgubwo+IE9CSlMtJChDT05GSUdfSDI2NF9RU1ZfREVDT0RFUikg ICAgICAgICs9IHFzdmRlYy5vCj4gT0JKUy0kKENPTkZJR19IMjY0X1FTVl9FTkNPREVSKSAgICAg ICAgKz0gcXN2ZW5jX2gyNjQubwo+IEBAIC00NTgsNiArNDU5LDcgQEAgT0JKUy0kKENPTkZJR19I RVZDX01FRElBQ09ERUNfRU5DT0RFUikgKz0gbWVkaWFjb2RlY2VuYy5vCj4gT0JKUy0kKENPTkZJ R19IRVZDX01GX0VOQ09ERVIpICAgICAgICAgKz0gbWZlbmMubyBtZl91dGlscy5vCj4gT0JKUy0k KENPTkZJR19IRVZDX05WRU5DX0VOQ09ERVIpICAgICAgKz0gbnZlbmNfaGV2Yy5vIG52ZW5jLm8K PiBPQkpTLSQoQ09ORklHX0hFVkNfT0hfREVDT0RFUikgICAgICAgICArPSBvaGNvZGVjLm8gb2hk ZWMubwo+ICtPQkpTLSQoQ09ORklHX0hFVkNfT0hfRU5DT0RFUikgICAgICAgICArPSBvaGNvZGVj Lm8gb2hlbmMubwo+IE9CSlMtJChDT05GSUdfSEVWQ19RU1ZfREVDT0RFUikgICAgICAgICs9IHFz dmRlYy5vCj4gT0JKUy0kKENPTkZJR19IRVZDX1FTVl9FTkNPREVSKSAgICAgICAgKz0gcXN2ZW5j X2hldmMubyBoZXZjL3BzX2VuYy5vCj4gT0JKUy0kKENPTkZJR19IRVZDX1JLTVBQX0RFQ09ERVIp ICAgICAgKz0gcmttcHBkZWMubwo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5j IGIvbGliYXZjb2RlYy9hbGxjb2RlY3MuYwo+IGluZGV4IDgyNmNjZjczMjkuLjNhYWEzNTExNTcg MTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy9hbGxjb2RlY3MuYwo+ICsrKyBiL2xpYmF2Y29kZWMv YWxsY29kZWNzLmMKPiBAQCAtODYxLDYgKzg2MSw3IEBAIGV4dGVybiBjb25zdCBGRkNvZGVjIGZm X2gyNjRfY3V2aWRfZGVjb2RlcjsKPiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9oMjY0X21mX2Vu Y29kZXI7Cj4gZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfaDI2NF9udmVuY19lbmNvZGVyOwo+IGV4 dGVybiBjb25zdCBGRkNvZGVjIGZmX2gyNjRfb2hfZGVjb2RlcjsKPiArZXh0ZXJuIGNvbnN0IEZG Q29kZWMgZmZfaDI2NF9vaF9lbmNvZGVyOwo+IGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2gyNjRf b214X2VuY29kZXI7Cj4gZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfaDI2NF9xc3ZfZW5jb2RlcjsK PiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9oMjY0X3Y0bDJtMm1fZW5jb2RlcjsKPiBAQCAtODc2 LDYgKzg3Nyw3IEBAIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2hldmNfbWVkaWFjb2RlY19lbmNv ZGVyOwo+IGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2hldmNfbWZfZW5jb2RlcjsKPiBleHRlcm4g Y29uc3QgRkZDb2RlYyBmZl9oZXZjX252ZW5jX2VuY29kZXI7Cj4gZXh0ZXJuIGNvbnN0IEZGQ29k ZWMgZmZfaGV2Y19vaF9kZWNvZGVyOwo+ICtleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9oZXZjX29o X2VuY29kZXI7Cj4gZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfaGV2Y19xc3ZfZW5jb2RlcjsKPiBl eHRlcm4gY29uc3QgRkZDb2RlYyBmZl9oZXZjX3Y0bDJtMm1fZW5jb2RlcjsKPiBleHRlcm4gY29u c3QgRkZDb2RlYyBmZl9oZXZjX3ZhYXBpX2VuY29kZXI7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvb2hjb2RlYy5jIGIvbGliYXZjb2RlYy9vaGNvZGVjLmMKPiBpbmRleCAyODRmZjFiMmVjLi5m OGE2ZmFhYmE1IDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvb2hjb2RlYy5jCj4gKysrIGIvbGli YXZjb2RlYy9vaGNvZGVjLmMKPiBAQCAtNjksMyArNjksMTEgQEAgZW51bSBBVlBpeGVsRm9ybWF0 IGZmX29oX3BpeF90b19mZl9waXgoT0hfQVZQaXhlbEZvcm1hdCBvaF9waXgpCj4gICAgIHJldHVy biBBVl9QSVhfRk1UX05PTkU7Cj4gfQo+IAo+ICtpbnQgZmZfb2hfcGl4X2Zyb21fZmZfcGl4KGVu dW0gQVZQaXhlbEZvcm1hdCBwaXgpCj4gK3sKPiArICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg RkZfQVJSQVlfRUxFTVMob2hfcGl4X21hcCk7IGkrKykKPiArICAgICAgICBpZiAob2hfcGl4X21h cFtpXS5waXggPT0gcGl4KQo+ICsgICAgICAgICAgICByZXR1cm4gb2hfcGl4X21hcFtpXS5vaF9w aXg7Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9v aGNvZGVjLmggYi9saWJhdmNvZGVjL29oY29kZWMuaAo+IGluZGV4IDIzNmRkYmE2N2UuLjA3NDc0 NzI0N2IgMTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy9vaGNvZGVjLmgKPiArKysgYi9saWJhdmNv ZGVjL29oY29kZWMuaAo+IEBAIC01Miw1ICs1Miw2IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hh ciAqZmZfb2hfbWltZShlbnVtIEFWQ29kZWNJRCBjb2RlY19pZCwgdm9pZCAqbG9nKQo+IH0KPiAK PiBlbnVtIEFWUGl4ZWxGb3JtYXQgZmZfb2hfcGl4X3RvX2ZmX3BpeChPSF9BVlBpeGVsRm9ybWF0 IG9oX3BpeCk7Cj4gK2ludCBmZl9vaF9waXhfZnJvbV9mZl9waXgoZW51bSBBVlBpeGVsRm9ybWF0 IHBpeCk7Cj4gCj4gI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvb2hlbmMuYyBiL2xp YmF2Y29kZWMvb2hlbmMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAw MC4uNzBiMTdkYzAyOQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJhdmNvZGVjL29oZW5jLmMK PiBAQCAtMCwwICsxLDY5MyBAQAo+ICsvKgo+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1w ZWcuCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAyNSBaaGFvIFpoaWxpIDxxdWlua2JsYWNr QGZveG1haWwuY29tPgo+ICsgKgo+ICsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gKyAqIHZlcnNpb24g Mi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u Lgo+ICsgKgo+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPiArICogTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp Ywo+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlCj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKPiArICovCj4gKwo+ICsjaW5j bHVkZSAiY29uZmlnX2NvbXBvbmVudHMuaCIKPiArCj4gKyNpbmNsdWRlIDxzdGRib29sLmg+Cj4g KyNpbmNsdWRlIDxtdWx0aW1lZGlhL3BsYXllcl9mcmFtZXdvcmsvbmF0aXZlX2F2Y2FwYWJpbGl0 eS5oPgo+ICsjaW5jbHVkZSA8bXVsdGltZWRpYS9wbGF5ZXJfZnJhbWV3b3JrL25hdGl2ZV9hdmNv ZGVjX3ZpZGVvZW5jb2Rlci5oPgo+ICsKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9maWZvLmgiCj4g KyNpbmNsdWRlICJsaWJhdnV0aWwvaW1ndXRpbHMuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9t ZW0uaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRp bC90aHJlYWQuaCIKPiArCj4gKyNpbmNsdWRlICJhdmNvZGVjLmgiCj4gKyNpbmNsdWRlICJjb2Rl Y19pbnRlcm5hbC5oIgo+ICsjaW5jbHVkZSAiZW5jb2RlLmgiCj4gKyNpbmNsdWRlICJod2NvbmZp Zy5oIgo+ICsjaW5jbHVkZSAib2hjb2RlYy5oIgo+ICsKPiArdHlwZWRlZiBzdHJ1Y3QgT0hDb2Rl Y0VuY0NvbnRleHQgewo+ICsgICAgQVZDbGFzcyAqYXZjbGFzczsKPiArICAgIE9IX0FWQ29kZWMg KmVuYzsKPiArCj4gKyAgICBBVk11dGV4IGlucHV0X211dGV4Owo+ICsgICAgQVZDb25kIGlucHV0 X2NvbmQ7Cj4gKyAgICBBVkZpZm8gKmlucHV0X3F1ZXVlOwo+ICsKPiArICAgIEFWTXV0ZXggb3V0 cHV0X211dGV4Owo+ICsgICAgQVZDb25kIG91dHB1dF9jb25kOwo+ICsgICAgQVZGaWZvICpvdXRw dXRfcXVldWU7Cj4gKwo+ICsgICAgQVZGcmFtZSAqZnJhbWU7Cj4gKyAgICB1aW50OF90ICpleHRy YWRhdGE7Cj4gKyAgICBpbnQgZXh0cmFkYXRhX3NpemU7Cj4gKwo+ICsgICAgaW50IGVuY29kZV9z dGF0dXM7Cj4gKyAgICBib29sIGVvZl9zZW50Owo+ICsKPiArICAgIGJvb2wgZ290X3N0cmVhbV9p bmZvOwo+ICsgICAgaW50IHN0cmlkZTsKPiArICAgIGludCBzbGljZV9oZWlnaHQ7Cj4gKwo+ICsg ICAgdWludDY0X3QgbmF0aXZlX3dpbmRvdzsKPiArICAgIGNoYXIgKm5hbWU7Cj4gKyAgICBpbnQg YWxsb3dfc3c7Cj4gKyAgICBpbnQgYml0cmF0ZV9tb2RlOwo+ICt9IE9IQ29kZWNFbmNDb250ZXh0 Owo+ICsKPiArc3RhdGljIGNvbnN0IGVudW0gQVZQaXhlbEZvcm1hdCBvaGNvZGVjX3BpeF9mbXRz W10gPSB7Cj4gKyAgICBBVl9QSVhfRk1UX09IQ09ERUMsCj4gKyAgICBBVl9QSVhfRk1UX05WMTIs Cj4gKyAgICBBVl9QSVhfRk1UX05PTkUKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgb2hfZW5jb2Rl X2NyZWF0ZShPSENvZGVjRW5jQ29udGV4dCAqcywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQo+ICt7 Cj4gKyAgICBjb25zdCBjaGFyICpuYW1lID0gcy0+bmFtZTsKPiArCj4gKyAgICBpZiAoIW5hbWUp IHsKPiArICAgICAgICBjb25zdCBjaGFyICptaW1lID0gZmZfb2hfbWltZShhdmN0eC0+Y29kZWNf aWQsIGF2Y3R4KTsKPiArICAgICAgICBpZiAoIW1pbWUpCj4gKyAgICAgICAgICAgIHJldHVybiBB VkVSUk9SX0JVRzsKPiArICAgICAgICBPSF9BVkNhcGFiaWxpdHkgKmNhcCA9IE9IX0FWQ29kZWNf R2V0Q2FwYWJpbGl0eUJ5Q2F0ZWdvcnkobWltZSwgdHJ1ZSwgSEFSRFdBUkUpOwo+ICsgICAgICAg IGlmICghY2FwKSB7Cj4gKyAgICAgICAgICAgIGlmICghcy0+YWxsb3dfc3cpIHsKPiArICAgICAg ICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGdldCBoYXJk d2FyZSBjb2RlYyAlc1xuIiwgbWltZSk7Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJP Ul9FWFRFUk5BTDsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgs IEFWX0xPR19XQVJOSU5HLAo+ICsgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBnZXQgaGFy ZHdhcmUgY29kZWMgJXMsIHRyeSBzb2Z0d2FyZSBiYWNrZW5kXG4iLCBtaW1lKTsKPiArICAgICAg ICAgICAgY2FwID0gT0hfQVZDb2RlY19HZXRDYXBhYmlsaXR5QnlDYXRlZ29yeShtaW1lLCB0cnVl LCBTT0ZUV0FSRSk7Cj4gKyAgICAgICAgICAgIGlmICghY2FwKSB7Cj4gKyAgICAgICAgICAgICAg ICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBnZXQgc29mdHdhcmUgY29k ZWMgJXNcbiIsIG1pbWUpOwo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJO QUw7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICAgICAgbmFtZSA9IE9IX0FW Q2FwYWJpbGl0eV9HZXROYW1lKGNhcCk7Cj4gKyAgICAgICAgaWYgKCFuYW1lKQo+ICsgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKPiArICAgIH0KPiArCj4gKyAgICBzLT5lbmMg PSBPSF9WaWRlb0VuY29kZXJfQ3JlYXRlQnlOYW1lKG5hbWUpOwo+ICsgICAgaWYgKCFzLT5lbmMp IHsKPiArICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkNyZWF0ZSBlbmNvZGVy IHdpdGggbmFtZSAlcyBmYWlsZWRcbiIsIG5hbWUpOwo+ICsgICAgICAgIHJldHVybiBBVkVSUk9S X0VYVEVSTkFMOwo+ICsgICAgfQo+ICsgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJD cmVhdGUgZW5jb2RlciAlcyBzdWNjZXNzXG4iLCBuYW1lKTsKPiArCj4gKyAgICByZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIGludCBvaF9lbmNvZGVfc2V0X2Zvcm1hdChPSENvZGVjRW5jQ29u dGV4dCAqcywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQo+ICt7Cj4gKyAgICBpbnQgcmV0Owo+ICsK PiArICAgIE9IX0FWRm9ybWF0ICpmb3JtYXQgPSBPSF9BVkZvcm1hdF9DcmVhdGUoKTsKPiArICAg IGlmICghZm9ybWF0KQo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKwo+ICsg ICAgYm9vbCBiID0gT0hfQVZGb3JtYXRfU2V0SW50VmFsdWUoZm9ybWF0LCBPSF9NRF9LRVlfV0lE VEgsIGF2Y3R4LT53aWR0aCk7Cj4gKyAgICBiID0gYiAmJiBPSF9BVkZvcm1hdF9TZXRJbnRWYWx1 ZShmb3JtYXQsIE9IX01EX0tFWV9IRUlHSFQsIGF2Y3R4LT5oZWlnaHQpOwo+ICsgICAgaWYgKCFi KSB7Cj4gKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJTZXQgd2lkdGgvaGVp Z2h0ICglZHglZCkgZmFpbGVkXG4iLAo+ICsgICAgICAgICAgICAgICBhdmN0eC0+d2lkdGgsIGF2 Y3R4LT5oZWlnaHQpOwo+ICsgICAgICAgIHJldCA9IEFWRVJST1JfRVhURVJOQUw7Cj4gKyAgICAg ICAgZ290byBvdXQ7Cj4gKyAgICB9Cj4gKyAgICBpZiAoYXZjdHgtPmZyYW1lcmF0ZS5udW0gJiYg YXZjdHgtPmZyYW1lcmF0ZS5kZW4pCj4gKyAgICAgICAgT0hfQVZGb3JtYXRfU2V0RG91YmxlVmFs dWUoZm9ybWF0LCBPSF9NRF9LRVlfRlJBTUVfUkFURSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhdl9xMmQoYXZjdHgtPmZyYW1lcmF0ZSkpOwo+ICsgICAgaW50IHBpeCA9 IGZmX29oX3BpeF9mcm9tX2ZmX3BpeChhdmN0eC0+cGl4X2ZtdCk7Cj4gKyAgICBpZiAoIXBpeCkg ewo+ICsgICAgICAgIHJldCA9IEFWRVJST1JfQlVHOwo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsg ICAgfQo+ICsgICAgYiA9IE9IX0FWRm9ybWF0X1NldEludFZhbHVlKGZvcm1hdCwgT0hfTURfS0VZ X1BJWEVMX0ZPUk1BVCwgcGl4KTsKPiArICAgIGlmICghYikgewo+ICsgICAgICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX0VSUk9SLCAiU2V0IHBpeGVsIGZvcm1hdCB0byAlZCBmYWlsZWRcbiIsIHBp eCk7Cj4gKyAgICAgICAgcmV0ID0gQVZFUlJPUl9FWFRFUk5BTDsKPiArICAgICAgICBnb3RvIG91 dDsKPiArICAgIH0KPiArCj4gKyAgICBpZiAocy0+Yml0cmF0ZV9tb2RlICE9IC0xKSB7Cj4gKyAg ICAgICAgYiA9IE9IX0FWRm9ybWF0X1NldEludFZhbHVlKGZvcm1hdCwgT0hfTURfS0VZX1ZJREVP X0VOQ09ERV9CSVRSQVRFX01PREUsIHMtPmJpdHJhdGVfbW9kZSk7Cj4gKyAgICAgICAgaWYgKCFi KSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiU2V0IGJpdHJh dGUgbW9kZSB0byAlZCBmYWlsZWRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICBzLT5iaXRyYXRl X21vZGUpOwo+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SX0VYVEVSTkFMOwo+ICsgICAgICAg ICAgICBnb3RvIG91dDsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKyAgICBPSF9BVkZvcm1hdF9T ZXRMb25nVmFsdWUoZm9ybWF0LCBPSF9NRF9LRVlfQklUUkFURSwgYXZjdHgtPmJpdF9yYXRlKTsK PiArCj4gKyAgICBpZiAoYXZjdHgtPmdvcF9zaXplID4gMCkgewo+ICsgICAgICAgIGlmIChhdmN0 eC0+ZnJhbWVyYXRlLm51bSA+IDAgJiYgYXZjdHgtPmZyYW1lcmF0ZS5kZW4gPiAwKSB7Cj4gKyAg ICAgICAgICAgIC8vIEluIG1pbGxpc2Vjb25kcwo+ICsgICAgICAgICAgICBpbnQgZ29wID0gYXZf cmVzY2FsZV9xKGF2Y3R4LT5nb3Bfc2l6ZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhdl9tYWtlX3EoYXZjdHgtPmZyYW1lcmF0ZS5kZW4sCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5mcmFtZXJhdGUubnVtKSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdl9tYWtlX3EoMSwgMTAwMCkpOwo+ ICsgICAgICAgICAgICBPSF9BVkZvcm1hdF9TZXRJbnRWYWx1ZShmb3JtYXQsIE9IX01EX0tFWV9J X0ZSQU1FX0lOVEVSVkFMLCBnb3ApOwo+ICsgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAg IGF2X2xvZyhhdmN0eCwgQVZfTE9HX1dBUk5JTkcsICJTa2lwIHNldHRpbmcgZ29wIHdpdGhvdXQg ZnJhbWVyYXRlXG4iKTsKPiArICAgICAgICB9Cj4gKyAgICB9IGVsc2UgaWYgKCFhdmN0eC0+Z29w X3NpemUpIHsKPiArICAgICAgICAvLyBBbGwgZnJhbWVzIGFyZSBrZXkgZnJhbWUKPiArICAgICAg ICBPSF9BVkZvcm1hdF9TZXRJbnRWYWx1ZShmb3JtYXQsIE9IX01EX0tFWV9JX0ZSQU1FX0lOVEVS VkFMLCAwKTsKPiArICAgIH0gZWxzZSBpZiAoYXZjdHgtPmdvcF9zaXplID09IC0xKSB7Cj4gKyAg ICAgICAgLy8gSW5maW5pdGUgZ29wCj4gKyAgICAgICAgT0hfQVZGb3JtYXRfU2V0SW50VmFsdWUo Zm9ybWF0LCBPSF9NRF9LRVlfSV9GUkFNRV9JTlRFUlZBTCwgLTEpOwo+ICsgICAgfQo+ICsKPiAr ICAgIE9IX0FWRXJyQ29kZSBlcnIgPSBPSF9WaWRlb0VuY29kZXJfQ29uZmlndXJlKHMtPmVuYywg Zm9ybWF0KTsKPiArICAgIGlmIChlcnIgIT0gQVZfRVJSX09LKSB7Cj4gKyAgICAgICAgcmV0ID0g ZmZfb2hfZXJyX3RvX2ZmX2VycihlcnIpOwo+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9H X0VSUk9SLCAiRGVjb2RlciBjb25maWd1cmUgZmFpbGVkLCAlZCwgJXNcbiIsCj4gKyAgICAgICAg ICAgICAgIGVyciwgYXZfZXJyMnN0cihyZXQpKTsKPiArICAgICAgICBnb3RvIG91dDsKPiArICAg IH0KPiArCj4gKyAgICBpZiAoYXZjdHgtPnBpeF9mbXQgPT0gQVZfUElYX0ZNVF9PSENPREVDKSB7 Cj4gKyAgICAgICAgT0hOYXRpdmVXaW5kb3cgKndpbmRvdzsKPiArICAgICAgICBlcnIgPSBPSF9W aWRlb0VuY29kZXJfR2V0U3VyZmFjZShzLT5lbmMsICZ3aW5kb3cpOwo+ICsgICAgICAgIGlmIChl cnIgIT0gQVZfRVJSX09LKSB7Cj4gKyAgICAgICAgICAgIHJldCA9IGZmX29oX2Vycl90b19mZl9l cnIoZXJyKTsKPiArICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJHZXQg c3VyZmFjZSBmYWlsZWQsICVkLCAlc1xuIiwKPiArICAgICAgICAgICAgICAgICAgIGVyciwgYXZf ZXJyMnN0cihyZXQpKTsKPiArICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICAgfQo+ICsg ICAgICAgIHMtPm5hdGl2ZV93aW5kb3cgPSAodWludHB0cl90KXdpbmRvdzsKPiArICAgICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19JTkZPLCAibmF0aXZlIHdpbmRvdyAlcFxuIiwgd2luZG93KTsK CknigJl2ZSBnaXZlbiBpdCBzb21lIG1vcmUgdGhvdWdodCwgbmF0aXZlIHdpbmRvd3MgY291bGQg YmUgZXhwb3J0ZWQgdmlhIGh3Y29udGV4dCBkZXZpY2UuIEl04oCZcyBsZXNzIGhhY2sgdGhhbiB0 aGlzLiBXaWxsIGJlIGZpeGVkIGluIHYzLgoKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gMDsK PiArb3V0Ogo+ICsgICAgT0hfQVZGb3JtYXRfRGVzdHJveShmb3JtYXQpOwo+ICsgICAgcmV0dXJu IHJldDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgb2hfZW5jb2RlX29uX2VycihPSF9BVkNvZGVj ICpjb2RlYywgaW50MzJfdCBlcnIsIHZvaWQgKnVzZXJkYXRhKQo+ICt7Cj4gKyAgICBBVkNvZGVj Q29udGV4dCAqYXZjdHggPSB1c2VyZGF0YTsKPiArICAgIE9IQ29kZWNFbmNDb250ZXh0ICpzID0g YXZjdHgtPnByaXZfZGF0YTsKPiArCj4gKyAgICAvLyBDYXJlZnVsIG9uIHRoZSBsb2NrIG9yZGVy Lgo+ICsgICAgLy8gQWx3YXlzIGxvY2sgaW5wdXQgZmlyc3QuCj4gKyAgICBmZl9tdXRleF9sb2Nr KCZzLT5pbnB1dF9tdXRleCk7Cj4gKyAgICBmZl9tdXRleF9sb2NrKCZzLT5vdXRwdXRfbXV0ZXgp Owo+ICsgICAgcy0+ZW5jb2RlX3N0YXR1cyA9IGZmX29oX2Vycl90b19mZl9lcnIoZXJyKTsKPiAr ICAgIGZmX211dGV4X3VubG9jaygmcy0+b3V0cHV0X211dGV4KTsKPiArICAgIGZmX211dGV4X3Vu bG9jaygmcy0+aW5wdXRfbXV0ZXgpOwo+ICsKPiArICAgIGZmX2NvbmRfc2lnbmFsKCZzLT5vdXRw dXRfY29uZCk7Cj4gKyAgICBmZl9jb25kX3NpZ25hbCgmcy0+aW5wdXRfY29uZCk7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIG9oX2VuY29kZV9vbl9zdHJlYW1fY2hhbmdlZChPSF9BVkNvZGVjICpj b2RlYywgT0hfQVZGb3JtYXQgKmZvcm1hdCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZvaWQgKnVzZXJkYXRhKQo+ICt7Cj4gKyAgICBBVkNvZGVjQ29udGV4dCAq YXZjdHggPSB1c2VyZGF0YTsKPiArICAgIE9IQ29kZWNFbmNDb250ZXh0ICpzID0gYXZjdHgtPnBy aXZfZGF0YTsKPiArCj4gKyAgICBpZiAoIU9IX0FWRm9ybWF0X0dldEludFZhbHVlKGZvcm1hdCwg T0hfTURfS0VZX1ZJREVPX1NUUklERSwgJnMtPnN0cmlkZSkpCj4gKyAgICAgICAgcy0+c3RyaWRl ID0gYXZjdHgtPndpZHRoOwo+ICsgICAgaWYgKCFPSF9BVkZvcm1hdF9HZXRJbnRWYWx1ZShmb3Jt YXQsIE9IX01EX0tFWV9WSURFT19TTElDRV9IRUlHSFQsICZzLT5zbGljZV9oZWlnaHQpKQo+ICsg ICAgICAgIHMtPnNsaWNlX2hlaWdodCA9IGF2Y3R4LT5oZWlnaHQ7Cj4gKwo+ICsgICAgcy0+Z290 X3N0cmVhbV9pbmZvID0gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgb2hfZW5jb2RlX29u X25lZWRfaW5wdXQoT0hfQVZDb2RlYyAqY29kZWMsIHVpbnQzMl90IGluZGV4LAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSF9BVkJ1ZmZlciAqYnVmZmVyLCB2b2lkICp1 c2VyZGF0YSkKPiArewo+ICsgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4ID0gdXNlcmRhdGE7Cj4g KyAgICBPSENvZGVjRW5jQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4gKyAgICBPSEJ1 ZmZlclF1ZXVlSXRlbSBpdGVtID0gewo+ICsgICAgICAgIGluZGV4LCBidWZmZXIsCj4gKyAgICB9 Owo+ICsKPiArICAgIGZmX211dGV4X2xvY2soJnMtPmlucHV0X211dGV4KTsKPiArICAgIGludCBy ZXQgPSBhdl9maWZvX3dyaXRlKHMtPmlucHV0X3F1ZXVlLCAmaXRlbSwgMSk7Cj4gKyAgICBpZiAo cmV0ID49IDApCj4gKyAgICAgICAgZmZfY29uZF9zaWduYWwoJnMtPmlucHV0X2NvbmQpOwo+ICsg ICAgZmZfbXV0ZXhfdW5sb2NrKCZzLT5pbnB1dF9tdXRleCk7Cj4gKwo+ICsgICAgaWYgKHJldCA8 IDApCj4gKyAgICAgICAgb2hfZW5jb2RlX29uX2Vycihjb2RlYywgQVZfRVJSX05PX01FTU9SWSwg dXNlcmRhdGEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBvaF9lbmNvZGVfb25fb3V0cHV0KE9I X0FWQ29kZWMgKmNvZGVjLCB1aW50MzJfdCBpbmRleCwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPSF9BVkJ1ZmZlciAqYnVmZmVyLCB2b2lkICp1c2VyZGF0YSkKPiArewo+ICsg ICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4ID0gdXNlcmRhdGE7Cj4gKyAgICBPSENvZGVjRW5jQ29u dGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4gKyAgICBPSEJ1ZmZlclF1ZXVlSXRlbSBpdGVt ID0gewo+ICsgICAgICAgIGluZGV4LCBidWZmZXIsCj4gKyAgICB9Owo+ICsKPiArICAgIGZmX211 dGV4X2xvY2soJnMtPm91dHB1dF9tdXRleCk7Cj4gKyAgICBpbnQgcmV0ID0gYXZfZmlmb193cml0 ZShzLT5vdXRwdXRfcXVldWUsICZpdGVtLCAxKTsKPiArICAgIGlmIChyZXQgPj0gMCkKPiArICAg ICAgICBmZl9jb25kX3NpZ25hbCgmcy0+b3V0cHV0X2NvbmQpOwo+ICsgICAgZmZfbXV0ZXhfdW5s b2NrKCZzLT5vdXRwdXRfbXV0ZXgpOwo+ICsKPiArICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAg IG9oX2VuY29kZV9vbl9lcnIoY29kZWMsIEFWX0VSUl9OT19NRU1PUlksIHVzZXJkYXRhKTsKPiAr fQo+ICsKPiArc3RhdGljIGludCBvaF9lbmNvZGVfc3RhcnQoT0hDb2RlY0VuY0NvbnRleHQgKnMs IEFWQ29kZWNDb250ZXh0ICphdmN0eCkKPiArewo+ICsgICAgaW50IHJldDsKPiArICAgIE9IX0FW RXJyQ29kZSBlcnI7Cj4gKyAgICBPSF9BVkNvZGVjQ2FsbGJhY2sgY2IgPSB7Cj4gKyAgICAgICAg Lm9uRXJyb3IgPSBvaF9lbmNvZGVfb25fZXJyLAo+ICsgICAgICAgIC5vblN0cmVhbUNoYW5nZWQg PSBvaF9lbmNvZGVfb25fc3RyZWFtX2NoYW5nZWQsCj4gKyAgICAgICAgLm9uTmVlZElucHV0QnVm ZmVyID0gb2hfZW5jb2RlX29uX25lZWRfaW5wdXQsCj4gKyAgICAgICAgLm9uTmV3T3V0cHV0QnVm ZmVyID0gb2hfZW5jb2RlX29uX291dHB1dCwKPiArICAgIH07Cj4gKwo+ICsgICAgZXJyID0gT0hf VmlkZW9FbmNvZGVyX1JlZ2lzdGVyQ2FsbGJhY2socy0+ZW5jLCBjYiwgYXZjdHgpOwo+ICsgICAg aWYgKGVyciAhPSBBVl9FUlJfT0spIHsKPiArICAgICAgICByZXQgPSBmZl9vaF9lcnJfdG9fZmZf ZXJyKGVycik7Cj4gKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJSZWdpc3Rl ciBjYWxsYmFjayBmYWlsZWQsICVkLCAlc1xuIiwKPiArICAgICAgICAgICAgICAgZXJyLCBhdl9l cnIyc3RyKHJldCkpOwo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICB9Cj4gKyAgICBlcnIg PSBPSF9WaWRlb0VuY29kZXJfUHJlcGFyZShzLT5lbmMpOwo+ICsgICAgaWYgKGVyciAhPSBBVl9F UlJfT0spIHsKPiArICAgICAgICByZXQgPSBmZl9vaF9lcnJfdG9fZmZfZXJyKGVycik7Cj4gKyAg ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJQcmVwYXJlIGZhaWxlZCwgJWQsICVz XG4iLAo+ICsgICAgICAgICAgICAgICBlcnIsIGF2X2VycjJzdHIocmV0KSk7Cj4gKyAgICAgICAg cmV0dXJuIHJldDsKPiArICAgIH0KPiArICAgIGVyciA9IE9IX1ZpZGVvRW5jb2Rlcl9TdGFydChz LT5lbmMpOwo+ICsgICAgaWYgKGVyciAhPSBBVl9FUlJfT0spIHsKPiArICAgICAgICByZXQgPSBm Zl9vaF9lcnJfdG9fZmZfZXJyKGVycik7Cj4gKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0df RVJST1IsICJTdGFydCBmYWlsZWQsICVkLCAlc1xuIiwKPiArICAgICAgICAgICAgICAgZXJyLCBh dl9lcnIyc3RyKHJldCkpOwo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICB9Cj4gKwo+ICsg ICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBhdl9jb2xkIGludCBvaF9lbmNvZGVfaW5p dChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCj4gK3sKPiArICAgIE9IQ29kZWNFbmNDb250ZXh0ICpz ID0gYXZjdHgtPnByaXZfZGF0YTsKPiArCj4gKyAgICAvLyBJbml0aWFsaXplIHRoZXNlIGZpZWxk cyBmaXJzdCwgc28gb2hfZGVjb2RlX2Nsb3NlIGNhbiBkZXN0cm95IHRoZW0gc2FmZWx5Cj4gKyAg ICBmZl9tdXRleF9pbml0KCZzLT5pbnB1dF9tdXRleCwgTlVMTCk7Cj4gKyAgICBmZl9jb25kX2lu aXQoJnMtPmlucHV0X2NvbmQsIE5VTEwpOwo+ICsgICAgZmZfbXV0ZXhfaW5pdCgmcy0+b3V0cHV0 X211dGV4LCBOVUxMKTsKPiArICAgIGZmX2NvbmRfaW5pdCgmcy0+b3V0cHV0X2NvbmQsIE5VTEwp Owo+ICsKPiArICAgIGludCByZXQgPSBvaF9lbmNvZGVfY3JlYXRlKHMsIGF2Y3R4KTsKPiArICAg IGlmIChyZXQgPCAwKQo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICByZXQgPSBvaF9lbmNv ZGVfc2V0X2Zvcm1hdChzLCBhdmN0eCk7Cj4gKyAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICBy ZXR1cm4gcmV0Owo+ICsKPiArICAgIHNpemVfdCBmaWZvX3NpemUgPSAxNjsKPiArICAgIHMtPmlu cHV0X3F1ZXVlID0gYXZfZmlmb19hbGxvYzIoZmlmb19zaXplLCBzaXplb2YoT0hCdWZmZXJRdWV1 ZUl0ZW0pLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVl9GSUZPX0ZM QUdfQVVUT19HUk9XKTsKPiArICAgIHMtPm91dHB1dF9xdWV1ZSA9IGF2X2ZpZm9fYWxsb2MyKGZp Zm9fc2l6ZSwgc2l6ZW9mKE9IQnVmZmVyUXVldWVJdGVtKSwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEFWX0ZJRk9fRkxBR19BVVRPX0dST1cpOwo+ICsgICAgcy0+ZnJh bWUgPSBhdl9mcmFtZV9hbGxvYygpOwo+ICsgICAgaWYgKCFzLT5pbnB1dF9xdWV1ZSB8fCAhcy0+ b3V0cHV0X3F1ZXVlIHx8ICFzLT5mcmFtZSkKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9N RU0pOwo+ICsKPiArICAgIHJldCA9IG9oX2VuY29kZV9zdGFydChzLCBhdmN0eCk7Cj4gKyAgICBp ZiAocmV0IDwgMCkKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgIHJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgYXZfY29sZCBpbnQgb2hfZW5jb2RlX2Nsb3NlKEFWQ29kZWNDb250 ZXh0ICphdmN0eCkKPiArewo+ICsgICAgT0hDb2RlY0VuY0NvbnRleHQgKnMgPSBhdmN0eC0+cHJp dl9kYXRhOwo+ICsKPiArICAgIGlmIChzLT5lbmMpIHsKPiArICAgICAgICBPSF9WaWRlb0VuY29k ZXJfU3RvcChzLT5lbmMpOwo+ICsgICAgICAgIE9IX0FWRXJyQ29kZSBlcnIgPSBPSF9WaWRlb0Vu Y29kZXJfRGVzdHJveShzLT5lbmMpOwo+ICsgICAgICAgIGlmIChlcnIgPT0gQVZfRVJSX09LKQo+ ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIkRlc3Ryb3kgZW5jb2Rl ciBzdWNjZXNzXG4iKTsKPiArICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgIGF2X2xvZyhhdmN0 eCwgQVZfTE9HX0VSUk9SLCAiRGVzdHJveSBkZWNvZGVyIGZhaWxlZCwgJWQsICVzXG4iLAo+ICsg ICAgICAgICAgICAgICAgICAgZXJyLCBhdl9lcnIyc3RyKGZmX29oX2Vycl90b19mZl9lcnIoZXJy KSkpOwo+ICsgICAgfQo+ICsKPiArICAgIGF2X2ZyZWVwKCZzLT5leHRyYWRhdGEpOwo+ICsgICAg YXZfZnJhbWVfZnJlZSgmcy0+ZnJhbWUpOwo+ICsKPiArICAgIGZmX211dGV4X2Rlc3Ryb3koJnMt PmlucHV0X211dGV4KTsKPiArICAgIGZmX2NvbmRfZGVzdHJveSgmcy0+aW5wdXRfY29uZCk7Cj4g KyAgICBhdl9maWZvX2ZyZWVwMigmcy0+aW5wdXRfcXVldWUpOwo+ICsKPiArICAgIGZmX211dGV4 X2Rlc3Ryb3koJnMtPm91dHB1dF9tdXRleCk7Cj4gKyAgICBmZl9jb25kX2Rlc3Ryb3koJnMtPm91 dHB1dF9jb25kKTsKPiArICAgIGF2X2ZpZm9fZnJlZXAyKCZzLT5vdXRwdXRfcXVldWUpOwo+ICsK PiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG9oX2VuY29kZV9vdXRwdXRf cGFja2V0KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZQYWNrZXQgKnBrdCwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE9IQnVmZmVyUXVldWVJdGVtICpvdXRwdXQpCj4gK3sK PiArICAgIE9IQ29kZWNFbmNDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiArICAgIHVp bnQ4X3QgKnA7Cj4gKyAgICBPSF9BVkNvZGVjQnVmZmVyQXR0ciBhdHRyOwo+ICsgICAgaW50IHJl dDsKPiArCj4gKyAgICBPSF9BVkVyckNvZGUgZXJyID0gT0hfQVZCdWZmZXJfR2V0QnVmZmVyQXR0 cihvdXRwdXQtPmJ1ZmZlciwgJmF0dHIpOwo+ICsgICAgaWYgKGVyciAhPSBBVl9FUlJfT0spIHsK PiArICAgICAgICByZXQgPSBmZl9vaF9lcnJfdG9fZmZfZXJyKGVycik7Cj4gKyAgICAgICAgZ290 byBvdXQ7Cj4gKyAgICB9Cj4gKyAgICBpZiAoYXR0ci5mbGFncyAmIEFWQ09ERUNfQlVGRkVSX0ZM QUdTX0VPUykgewo+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiQnVmZmVy IGZsYWcgZW9zXG4iKTsKPiArICAgICAgICByZXQgPSBBVkVSUk9SX0VPRjsKPiArICAgICAgICBn b3RvIG91dDsKPiArICAgIH0KPiArCj4gKyAgICBwID0gT0hfQVZCdWZmZXJfR2V0QWRkcihvdXRw dXQtPmJ1ZmZlcik7Cj4gKyAgICBpZiAoIXApIHsKPiArICAgICAgICBhdl9sb2coYXZjdHgsIEFW X0xPR19FUlJPUiwgIkZhaWxlZCB0byBnZXQgb3V0cHV0IGJ1ZmZlciBhZGRyXG4iKTsKPiArICAg ICAgICByZXQgPSBBVkVSUk9SX0VYVEVSTkFMOwo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsgICAg fQo+ICsgICAgaWYgKGF0dHIuZmxhZ3MgJiBBVkNPREVDX0JVRkZFUl9GTEFHU19DT0RFQ19EQVRB KSB7Cj4gKyAgICAgICAgYXZfZnJlZXAoJnMtPmV4dHJhZGF0YSk7Cj4gKyAgICAgICAgcy0+ZXh0 cmFkYXRhID0gYXZfbWFsbG9jKGF0dHIuc2l6ZSArIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJ WkUpOwo+ICsgICAgICAgIGlmICghcy0+ZXh0cmFkYXRhKSB7Cj4gKyAgICAgICAgICAgIHJldCA9 IEFWRVJST1IoRU5PTUVNKTsKPiArICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICAgfQo+ ICsgICAgICAgIG1lbXNldChzLT5leHRyYWRhdGEgKyBhdHRyLnNpemUsIDAsIEFWX0lOUFVUX0JV RkZFUl9QQURESU5HX1NJWkUpOwo+ICsgICAgICAgIG1lbWNweShzLT5leHRyYWRhdGEsIHAgKyBh dHRyLm9mZnNldCwgYXR0ci5zaXplKTsKPiArICAgICAgICBzLT5leHRyYWRhdGFfc2l6ZSA9IGF0 dHIuc2l6ZTsKPiArICAgICAgICByZXQgPSAwOwo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsgICAg fQo+ICsKPiArICAgIGludDY0X3QgZXh0cmFkYXRhX3NpemUgPSBzLT5leHRyYWRhdGFfc2l6ZTsK PiArICAgIHMtPmV4dHJhZGF0YV9zaXplID0gMDsKPiArCj4gKyAgICBpZiAoZXh0cmFkYXRhX3Np emUgJiYgKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfR0xPQkFMX0hFQURFUikpIHsKPiAr ICAgICAgICByZXQgPSBhdl9wYWNrZXRfYWRkX3NpZGVfZGF0YShwa3QsIEFWX1BLVF9EQVRBX05F V19FWFRSQURBVEEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+ ZXh0cmFkYXRhLCBleHRyYWRhdGFfc2l6ZSk7Cj4gKyAgICAgICAgaWYgKHJldCA8IDApCj4gKyAg ICAgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgICAgIHMtPmV4dHJhZGF0YSA9IE5VTEw7Cj4gKyAg ICAgICAgZXh0cmFkYXRhX3NpemUgPSAwOwo+ICsgICAgfQo+ICsKPiArICAgIHJldCA9IGZmX2dl dF9lbmNvZGVfYnVmZmVyKGF2Y3R4LCBwa3QsIGF0dHIuc2l6ZSArIGV4dHJhZGF0YV9zaXplLCAw KTsKPiArICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsKPiArICAgIGlm IChleHRyYWRhdGFfc2l6ZSkKPiArICAgICAgICBtZW1jcHkocGt0LT5kYXRhLCBzLT5leHRyYWRh dGEsIGV4dHJhZGF0YV9zaXplKTsKPiArCj4gKyAgICBtZW1jcHkocGt0LT5kYXRhICsgZXh0cmFk YXRhX3NpemUsIHAgKyBhdHRyLm9mZnNldCwgYXR0ci5zaXplKTsKPiArICAgIHBrdC0+cHRzID0g YXZfcmVzY2FsZV9xKGF0dHIucHRzLCBBVl9USU1FX0JBU0VfUSwgYXZjdHgtPnRpbWVfYmFzZSk7 Cj4gKyAgICBpZiAoYXR0ci5mbGFncyAmIEFWQ09ERUNfQlVGRkVSX0ZMQUdTX1NZTkNfRlJBTUUp Cj4gKyAgICAgICAgcGt0LT5mbGFncyB8PSBBVl9QS1RfRkxBR19LRVk7Cj4gKyAgICByZXQgPSAw Owo+ICtvdXQ6Cj4gKyAgICBPSF9WaWRlb0VuY29kZXJfRnJlZU91dHB1dEJ1ZmZlcihzLT5lbmMs IG91dHB1dC0+aW5kZXgpOwo+ICsgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGlu dCBvaF9lbmNvZGVfc2VuZF9od19mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCj4gK3sKPiAr ICAgIE9IQ29kZWNFbmNDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiArCj4gKyAgICBp ZiAocy0+ZW9mX3NlbnQpCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgaWYgKHMtPmZy YW1lLT5idWZbMF0pIHsKPiArICAgICAgICBhdl9mcmFtZV91bnJlZihzLT5mcmFtZSk7Cj4gKyAg ICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgT0hfQVZFcnJDb2RlIGVyciA9IE9I X1ZpZGVvRW5jb2Rlcl9Ob3RpZnlFbmRPZlN0cmVhbShzLT5lbmMpOwo+ICsgICAgcy0+ZW9mX3Nl bnQgPSB0cnVlOwo+ICsgICAgcmV0dXJuIGZmX29oX2Vycl90b19mZl9lcnIoZXJyKTsKPiArfQo+ ICsKPiArc3RhdGljIGludCBvaF9lbmNvZGVfc2VuZF9zd19mcmFtZShBVkNvZGVjQ29udGV4dCAq YXZjdHgsIE9IQnVmZmVyUXVldWVJdGVtICppbnB1dCkKPiArewo+ICsgICAgT0hDb2RlY0VuY0Nv bnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOwo+ICsgICAgQVZGcmFtZSAqZnJhbWUgPSBzLT5m cmFtZTsKPiArICAgIE9IX0FWRXJyQ29kZSBlcnI7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAg IGlmICghcy0+Z290X3N0cmVhbV9pbmZvKSB7Cj4gKyAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3Qg aGFwcGVuLCBhZGQgYSB3YXJuaW5nIG1lc3NhZ2UuCj4gKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBB Vl9MT0dfV0FSTklORywKPiArICAgICAgICAgICAgICAgImRlY29kZXIgZGlkbid0IG5vdGlmeSBz dHJlYW0gaW5mbywgdHJ5IGdldCBmb3JtYXQgZXhwbGljaXRseVxuIik7Cj4gKwo+ICsgICAgICAg IE9IX0FWRm9ybWF0ICpmb3JtYXQgPSBPSF9WaWRlb0VuY29kZXJfR2V0T3V0cHV0RGVzY3JpcHRp b24ocy0+ZW5jKTsKPiArICAgICAgICBpZiAoIWZvcm1hdCkgewo+ICsgICAgICAgICAgICBhdl9s b2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkdldE91dHB1dERlc2NyaXB0aW9uIGZhaWxlZFxuIik7 Cj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOwo+ICsgICAgICAgIH0KPiAr Cj4gKyAgICAgICAgb2hfZW5jb2RlX29uX3N0cmVhbV9jaGFuZ2VkKHMtPmVuYywgZm9ybWF0LCBh dmN0eCk7Cj4gKyAgICAgICAgT0hfQVZGb3JtYXRfRGVzdHJveShmb3JtYXQpOwo+ICsgICAgICAg IGlmICghcy0+Z290X3N0cmVhbV9pbmZvKQo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9F WFRFUk5BTDsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoIWZyYW1lLT5idWZbMF0gJiYgIXMtPmVv Zl9zZW50KSB7Cj4gKyAgICAgICAgT0hfQVZDb2RlY0J1ZmZlckF0dHIgYXR0ciA9IHsKPiArICAg ICAgICAgICAgLmZsYWdzID0gQVZDT0RFQ19CVUZGRVJfRkxBR1NfRU9TLAo+ICsgICAgICAgIH07 Cj4gKyAgICAgICAgZXJyID0gT0hfQVZCdWZmZXJfU2V0QnVmZmVyQXR0cihpbnB1dC0+YnVmZmVy LCAmYXR0cik7Cj4gKyAgICAgICAgaWYgKGVyciAhPSBBVl9FUlJfT0spCj4gKyAgICAgICAgICAg IHJldHVybiBmZl9vaF9lcnJfdG9fZmZfZXJyKGVycik7Cj4gKyAgICAgICAgZXJyID0gT0hfVmlk ZW9FbmNvZGVyX1B1c2hJbnB1dEJ1ZmZlcihzLT5lbmMsIGlucHV0LT5pbmRleCk7Cj4gKyAgICAg ICAgaWYgKGVyciAhPSBBVl9FUlJfT0spCj4gKyAgICAgICAgICAgIHJldHVybiBmZl9vaF9lcnJf dG9fZmZfZXJyKGVycik7Cj4gKyAgICAgICAgcy0+ZW9mX3NlbnQgPSB0cnVlOwo+ICsgICAgICAg IHJldHVybiAwOwo+ICsgICAgfQo+ICsKPiArICAgIHVpbnQ4X3QgKnAgPSBPSF9BVkJ1ZmZlcl9H ZXRBZGRyKGlucHV0LT5idWZmZXIpOwo+ICsgICAgaW50MzJfdCBuID0gT0hfQVZCdWZmZXJfR2V0 Q2FwYWNpdHkoaW5wdXQtPmJ1ZmZlcik7Cj4gKyAgICBpZiAoIXAgfHwgbiA8PSAwKSB7Cj4gKyAg ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsCj4gKyAgICAgICAgICAgICAgICJGYWls ZWQgdG8gZ2V0IGJ1ZmZlciBhZGRyICglcCkgb3IgY2FwYWNpdHkgKCVkKVxuIiwKPiArICAgICAg ICAgICAgICAgcCwgbik7Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7Cj4gKyAg ICB9Cj4gKwo+ICsgICAgdWludDhfdCAqZHN0WzRdID0gezB9Owo+ICsgICAgaW50IGRzdF9saW5l c2l6ZXNbNF0gPSB7MH07Cj4gKyAgICByZXQgPSBhdl9pbWFnZV9maWxsX2xpbmVzaXplcyhkc3Rf bGluZXNpemVzLCBmcmFtZS0+Zm9ybWF0LCBzLT5zdHJpZGUpOwo+ICsgICAgaWYgKHJldCA8IDAp Cj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArICAgIHJldCA9IGF2X2ltYWdlX2ZpbGxfcG9pbnRl cnMoZHN0LCBmcmFtZS0+Zm9ybWF0LCBzLT5zbGljZV9oZWlnaHQsIHAsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRzdF9saW5lc2l6ZXMpOwo+ICsgICAgaWYgKHJldCA8IDAp Cj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICBhdl9pbWFnZV9jb3B5Mihkc3QsIGRz dF9saW5lc2l6ZXMsIGZyYW1lLT5kYXRhLCBmcmFtZS0+bGluZXNpemUsCj4gKyAgICAgICAgICAg ICAgICAgICBmcmFtZS0+Zm9ybWF0LCBmcmFtZS0+d2lkdGgsIGZyYW1lLT5oZWlnaHQpOwo+ICsg ICAgT0hfQVZDb2RlY0J1ZmZlckF0dHIgYXR0ciA9IHsKPiArICAgICAgICAuc2l6ZSA9IG4sCj4g KyAgICAgICAgLm9mZnNldCA9IDAsCj4gKyAgICAgICAgLnB0cyA9IGF2X3Jlc2NhbGVfcShzLT5m cmFtZS0+cHRzLCBhdmN0eC0+cGt0X3RpbWViYXNlLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQVZfVElNRV9CQVNFX1EpLAo+ICsgICAgICAgIC5mbGFncyA9IChzLT5mcmFtZS0+Zmxh Z3MgJiBBVl9GUkFNRV9GTEFHX0tFWSkKPiArICAgICAgICAgICAgICAgICA/IEFWQ09ERUNfQlVG RkVSX0ZMQUdTX1NZTkNfRlJBTUUgOiAwLAo+ICsgICAgfTsKPiArCj4gKyAgICBlcnIgPSBPSF9B VkJ1ZmZlcl9TZXRCdWZmZXJBdHRyKGlucHV0LT5idWZmZXIsICZhdHRyKTsKPiArICAgIGlmIChl cnIgIT0gQVZfRVJSX09LKSB7Cj4gKyAgICAgICAgcmV0ID0gZmZfb2hfZXJyX3RvX2ZmX2Vycihl cnIpOwo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICB9Cj4gKyAgICBlcnIgPSBPSF9WaWRl b0VuY29kZXJfUHVzaElucHV0QnVmZmVyKHMtPmVuYywgaW5wdXQtPmluZGV4KTsKPiArICAgIGlm IChlcnIgIT0gQVZfRVJSX09LKSB7Cj4gKyAgICAgICAgcmV0ID0gZmZfb2hfZXJyX3RvX2ZmX2Vy cihlcnIpOwo+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiUHVzaCBpbnB1 dCBidWZmZXIgZmFpbGVkLCAlZCwgJXNcbiIsCj4gKyAgICAgICAgICAgICAgIGVyciwgYXZfZXJy MnN0cihyZXQpKTsKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgfQo+ICsgICAgYXZfZnJh bWVfdW5yZWYocy0+ZnJhbWUpOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IG9oX2VuY29kZV9yZWNlaXZlKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZQYWNrZXQg KnBrdCkKPiArewo+ICsgICAgT0hDb2RlY0VuY0NvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRh Owo+ICsKPiArICAgIHdoaWxlICgxKSB7Cj4gKyAgICAgICAgT0hCdWZmZXJRdWV1ZUl0ZW0gYnVm ZmVyID0gezB9Owo+ICsgICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAgICAgIC8vIFRyeSBnZXQg b3V0cHV0Cj4gKyAgICAgICAgZmZfbXV0ZXhfbG9jaygmcy0+b3V0cHV0X211dGV4KTsKPiArICAg ICAgICB3aGlsZSAoIXMtPmVuY29kZV9zdGF0dXMpIHsKPiArICAgICAgICAgICAgaWYgKGF2X2Zp Zm9fcmVhZChzLT5vdXRwdXRfcXVldWUsICZidWZmZXIsIDEpID49IDApCj4gKyAgICAgICAgICAg ICAgICBicmVhazsKPiArICAgICAgICAgICAgLy8gT25seSB3YWl0IGFmdGVyIHNlbmQgRU9GCj4g KyAgICAgICAgICAgIGlmIChzLT5lb2Zfc2VudCAmJiAhcy0+ZW5jb2RlX3N0YXR1cykKPiArICAg ICAgICAgICAgICAgIGZmX2NvbmRfd2FpdCgmcy0+b3V0cHV0X2NvbmQsICZzLT5vdXRwdXRfbXV0 ZXgpOwo+ICsgICAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICBicmVhazsKPiArICAg ICAgICB9Cj4gKwo+ICsgICAgICAgIHJldCA9IHMtPmVuY29kZV9zdGF0dXM7Cj4gKyAgICAgICAg ZmZfbXV0ZXhfdW5sb2NrKCZzLT5vdXRwdXRfbXV0ZXgpOwo+ICsKPiArICAgICAgICAvLyBHb3Qg YSBwYWNrZXQKPiArICAgICAgICBpZiAoYnVmZmVyLmJ1ZmZlcikKPiArICAgICAgICAgICAgcmV0 dXJuIG9oX2VuY29kZV9vdXRwdXRfcGFja2V0KGF2Y3R4LCBwa3QsICZidWZmZXIpOwo+ICsgICAg ICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgICAg ICBpZiAoIXMtPmZyYW1lLT5idWZbMF0pIHsKPiArICAgICAgICAgICAgLyogZmV0Y2ggbmV3IGZy YW1lIG9yIGVvZiAqLwo+ICsgICAgICAgICAgICByZXQgPSBmZl9lbmNvZGVfZ2V0X2ZyYW1lKGF2 Y3R4LCBzLT5mcmFtZSk7Cj4gKyAgICAgICAgICAgIGlmIChyZXQgPCAwICYmIHJldCAhPSBBVkVS Uk9SX0VPRikKPiArICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICAgfQo+ICsK PiArICAgICAgICBpZiAocy0+bmF0aXZlX3dpbmRvdykgewo+ICsgICAgICAgICAgICByZXQgPSBv aF9lbmNvZGVfc2VuZF9od19mcmFtZShhdmN0eCk7Cj4gKyAgICAgICAgICAgIGlmIChyZXQgPCAw KQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgICAgICAgY29udGludWU7 Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICAvLyBXYWl0IGlucHV0IGJ1ZmZlcgo+ICsgICAg ICAgIGZmX211dGV4X2xvY2soJnMtPmlucHV0X211dGV4KTsKPiArICAgICAgICB3aGlsZSAoIXMt PmVuY29kZV9zdGF0dXMpIHsKPiArICAgICAgICAgICAgaWYgKGF2X2ZpZm9fcmVhZChzLT5pbnB1 dF9xdWV1ZSwgJmJ1ZmZlciwgMSkgPj0gMCkKPiArICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsg ICAgICAgICAgICBmZl9jb25kX3dhaXQoJnMtPmlucHV0X2NvbmQsICZzLT5pbnB1dF9tdXRleCk7 Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICByZXQgPSBzLT5lbmNvZGVfc3RhdHVzOwo+ICsg ICAgICAgIGZmX211dGV4X3VubG9jaygmcy0+aW5wdXRfbXV0ZXgpOwo+ICsKPiArICAgICAgICBp ZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICAgICAgcmV0 ID0gb2hfZW5jb2RlX3NlbmRfc3dfZnJhbWUoYXZjdHgsICZidWZmZXIpOwo+ICsgICAgICAgIGlm IChyZXQgPCAwKQo+ICsgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgfQo+ICsKPiArICAg IHJldHVybiBBVkVSUk9SKEVBR0FJTik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG9oX2VuY29k ZV9mbHVzaChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCj4gK3sKPiArICAgIE9IQ29kZWNFbmNDb250 ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiArCj4gKyAgICBPSF9WaWRlb0VuY29kZXJfRmx1 c2gocy0+ZW5jKTsKPiArCj4gKyAgICBmZl9tdXRleF9sb2NrKCZzLT5pbnB1dF9tdXRleCk7Cj4g KyAgICBmZl9tdXRleF9sb2NrKCZzLT5vdXRwdXRfbXV0ZXgpOwo+ICsgICAgYXZfZmlmb19yZXNl dDIocy0+aW5wdXRfcXVldWUpOwo+ICsgICAgYXZfZmlmb19yZXNldDIocy0+b3V0cHV0X3F1ZXVl KTsKPiArICAgIHMtPmVuY29kZV9zdGF0dXMgPSAwOwo+ICsgICAgcy0+ZW9mX3NlbnQgPSBmYWxz ZTsKPiArICAgIGZmX211dGV4X3VubG9jaygmcy0+b3V0cHV0X211dGV4KTsKPiArICAgIGZmX211 dGV4X3VubG9jaygmcy0+aW5wdXRfbXV0ZXgpOwo+ICsKPiArICAgIE9IX1ZpZGVvRW5jb2Rlcl9T dGFydChzLT5lbmMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3QgQVZDb2RlY0hXQ29uZmlnSW50 ZXJuYWwgKmNvbnN0IG9oX2h3X2NvbmZpZ3NbXSA9IHsKPiArICAgICYoY29uc3QgQVZDb2RlY0hX Q29uZmlnSW50ZXJuYWwpIHsKPiArICAgICAgICAucHVibGljID0gewo+ICsgICAgICAgICAgICAu cGl4X2ZtdCA9IEFWX1BJWF9GTVRfT0hDT0RFQywKPiArICAgICAgICAgICAgLm1ldGhvZHMgPSBB Vl9DT0RFQ19IV19DT05GSUdfTUVUSE9EX0FEX0hPQywKPiArICAgICAgICB9LAo+ICsgICAgICAg IC5od2FjY2VsID0gTlVMTCwKPiArICAgIH0sCj4gKyAgICBOVUxMCj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3QgRkZDb2RlY0RlZmF1bHQgb2hjb2RlY19kZWZhdWx0c1tdID0gewo+ICsgICAgeyJn IiwgIi0yIn0sCj4gKyAgICB7TlVMTH0sCj4gK307Cj4gKwo+ICsjZGVmaW5lIE9GRlNFVCh4KSBv ZmZzZXRvZihPSENvZGVjRW5jQ29udGV4dCwgeCkKPiArI2RlZmluZSBWRSBBVl9PUFRfRkxBR19W SURFT19QQVJBTSB8IEFWX09QVF9GTEFHX0VOQ09ESU5HX1BBUkFNCj4gK3N0YXRpYyBjb25zdCBB Vk9wdGlvbiBvaGNvZGVjX3ZlbmNfb3B0aW9uc1tdID0gewo+ICsgICAgeyJjb2RlY19uYW1lIiwg IlNlbGVjdCBjb2RlYyBieSBuYW1lIiwKPiArICAgICAgICBPRkZTRVQobmFtZSksIEFWX09QVF9U WVBFX1NUUklORywgLmZsYWdzID0gVkV9LAo+ICsgICAgeyJhbGxvd19zdyIsICJBbGxvdyBzb2Z0 d2FyZSBlbmNvZGluZyIsCj4gKyAgICAgICAgT0ZGU0VUKGFsbG93X3N3KSwgQVZfT1BUX1RZUEVf Qk9PTCwgey5pNjQgPSAwfSwgMCwgMSwgVkV9LAo+ICsgICAgeyJuYXRpdmVfd2luZG93IiwgIkV4 cG9ydCBuYXRpdmUgd2luZG93IGNyZWF0ZWQgYnkgZW5jb2RlciIsCj4gKyAgICAgICAgT0ZGU0VU KG5hdGl2ZV93aW5kb3cpLCBBVl9PUFRfVFlQRV9VSU5UNjQsIC5mbGFncyA9IFZFIHwgQVZfT1BU X0ZMQUdfRVhQT1JUIHwgQVZfT1BUX0ZMQUdfUkVBRE9OTFl9LAo+ICsgICAgeyAiYml0cmF0ZV9t b2RlIiwgIkJpdHJhdGUgY29udHJvbCBtZXRob2QiLAo+ICsgICAgICAgIE9GRlNFVChiaXRyYXRl X21vZGUpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gLTF9LCAtMSwgSU5UX01BWCwgVkUsIC51 bml0ID0gImJpdHJhdGVfbW9kZSIgfSwKPiArICAgICAgICB7ImNiciIsICJDb25zdGFudCBiaXRy YXRlIG1vZGUiLAo+ICsgICAgICAgICAgICAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSBD QlJ9LCAwLCAwLCBWRSwgLnVuaXQgPSAiYml0cmF0ZV9tb2RlIn0sCj4gKyAgICAgICAgeyJ2YnIi LCAiVmFyaWFibGUgYml0cmF0ZSBtb2RlIiwKPiArICAgICAgICAgICAgMCwgQVZfT1BUX1RZUEVf Q09OU1QsIHsuaTY0ID0gVkJSfSwgMCwgMCwgVkUsIC51bml0ID0gImJpdHJhdGVfbW9kZSJ9LAo+ ICsgICAgICAgIHsiY3EiLCAiQ29uc3RhbnQgcXVhbGl0eSBtb2RlIiwKPiArICAgICAgICAgICAg MCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gQ1F9LCAwLCAwLCBWRSwgLnVuaXQgPSAiYml0 cmF0ZV9tb2RlIn0sCj4gKyAgICB7TlVMTH0sCj4gK307Cj4gKwo+ICsjZGVmaW5lIERFQ0xBUkVf T0hDT0RFQ19DTEFTUyhuYW1lKSAgICAgICAgICAgICAgICAgXAo+ICtzdGF0aWMgY29uc3QgQVZD bGFzcyBuYW1lICMjIF9vaF9lbmNfY2xhc3MgPSB7ICAgICAgXAo+ICsgICAgLmNsYXNzX25hbWUg PSAjbmFtZSAiX29oY29kZWMiLCAgICAgICAgICAgICAgICAgXAo+ICsgICAgLml0ZW1fbmFtZSAg PSBhdl9kZWZhdWx0X2l0ZW1fbmFtZSwgICAgICAgICAgICAgXAo+ICsgICAgLm9wdGlvbiAgICAg PSBvaGNvZGVjX3ZlbmNfb3B0aW9ucywgICAgICAgICAgICAgXAo+ICsgICAgLnZlcnNpb24gICAg PSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsICAgICAgICAgICAgXAo+ICt9OyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsKPiArI2RlZmluZSBERUNM QVJFX09IQ09ERUNfRU5DT0RFUihzaG9ydF9uYW1lLCBsb25nX25hbWUsIGNvZGVjX2lkKSAgICAg ICAgXAo+ICtERUNMQVJFX09IQ09ERUNfQ0xBU1Moc2hvcnRfbmFtZSkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4gK2NvbnN0IEZGQ29kZWMgZmZfICMjIHNob3J0X25h bWUgIyMgX29oX2VuY29kZXIgPSB7ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIC5wLm5h bWUgICAgICAgICAgID0gI3Nob3J0X25hbWUgIl9vaGNvZGVjIiwgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICsgICAgQ09ERUNfTE9OR19OQU1FKGxvbmdfbmFtZSAiIE9wZW5IYXJtb255IENv ZGVjIiksICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAucC50eXBlICAgICAgICAgICA9IEFW TUVESUFfVFlQRV9WSURFTywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIC5w LmlkICAgICAgICAgICAgID0gY29kZWNfaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ICsgICAgLnAuY2FwYWJpbGl0aWVzICAgPSBBVl9DT0RFQ19DQVBfRFIxIHwg QVZfQ09ERUNfQ0FQX0RFTEFZIHwgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IEFWX0NPREVDX0NBUF9IQVJEV0FSRSB8ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgQVZfQ09ERUNfQ0FQX0VOQ09ERVJfRkxVU0gsICAgICAgICAg ICAgICAgICAgICAgXAo+ICsgICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoT0hDb2RlY0Vu Y0NvbnRleHQpLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICBDT0RFQ19QSVhGTVRTX0FS UkFZKG9oY29kZWNfcGl4X2ZtdHMpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAr ICAgIC5jb2xvcl9yYW5nZXMgICAgID0gQVZDT0xfUkFOR0VfTVBFRyB8IEFWQ09MX1JBTkdFX0pQ RUcsICAgICAgICAgICAgXAo+ICsgICAgLmRlZmF1bHRzICAgICAgICAgPSBvaGNvZGVjX2RlZmF1 bHRzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAuaW5pdCAgICAgICAg ICAgICA9IG9oX2VuY29kZV9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK PiArICAgIEZGX0NPREVDX1JFQ0VJVkVfUEFDS0VUX0NCKG9oX2VuY29kZV9yZWNlaXZlKSwgICAg ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgLmNsb3NlICAgICAgICAgICAgPSBvaF9lbmNvZGVf Y2xvc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAuZmx1c2ggICAg ICAgICAgICA9IG9oX2VuY29kZV9mbHVzaCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKPiArICAgIC5wLnByaXZfY2xhc3MgICAgID0gJnNob3J0X25hbWUgIyMgX29oX2VuY19jbGFz cywgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgLmNhcHNfaW50ZXJuYWwgICAgPSBGRl9DT0RF Q19DQVBfSU5JVF9DTEVBTlVQLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAucC53cmFw cGVyX25hbWUgICA9ICJvaGNvZGVjIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKPiArICAgIC5od19jb25maWdzICAgICAgID0gb2hfaHdfY29uZmlncywgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICt9OyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKwo+ICsjaWYg Q09ORklHX0gyNjRfT0hfRU5DT0RFUgo+ICtERUNMQVJFX09IQ09ERUNfRU5DT0RFUihoMjY0LCAi SC4yNjQiLCBBVl9DT0RFQ19JRF9IMjY0KQo+ICsjZW5kaWYgIC8vIENPTkZJR19IMjY0X09IX0VO Q09ERVIKPiArCj4gKyNpZiBDT05GSUdfSEVWQ19PSF9FTkNPREVSCj4gK0RFQ0xBUkVfT0hDT0RF Q19FTkNPREVSKGhldmMsICJILjI2NSIsIEFWX0NPREVDX0lEX0hFVkMpCj4gKyNlbmRpZiAgLy8g Q09ORklHX0hFVkNfT0hfRU5DT0RFUgo+ICsKPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92ZXJz aW9uLmggYi9saWJhdmNvZGVjL3ZlcnNpb24uaAo+IGluZGV4IGRhNTRmODc4ODcuLjdhY2IyNjFi YjMgMTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy92ZXJzaW9uLmgKPiArKysgYi9saWJhdmNvZGVj L3ZlcnNpb24uaAo+IEBAIC0yOSw3ICsyOSw3IEBACj4gCj4gI2luY2x1ZGUgInZlcnNpb25fbWFq b3IuaCIKPiAKPiAtI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgICA2Cj4gKyNkZWZp bmUgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SICAgNwo+ICNkZWZpbmUgTElCQVZDT0RFQ19WRVJT SU9OX01JQ1JPIDEwMAo+IAo+ICNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX0lOVCAgQVZfVkVS U0lPTl9JTlQoTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SLCBcCj4gLS0KPiAyLjQ2LjAKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGZmbXBlZy1k ZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZt cGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+IAo+IFRvIHVuc3Vic2NyaWJl LCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBl Zy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBl Zy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Zm bXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZm bXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIu Cg==