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 ESMTPS id A5BD04C2EE for ; Wed, 22 Jan 2025 21:49:25 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D085868B9C6; Wed, 22 Jan 2025 23:49:21 +0200 (EET) Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CF5AE68B52A for ; Wed, 22 Jan 2025 23:49:15 +0200 (EET) Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-4361f796586so2285935e9.3 for ; Wed, 22 Jan 2025 13:49:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737582555; x=1738187355; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ALCPQJcJz6NKMWkoN54nBtYsMmh7VMNfjRoHBGnJCIw=; b=IBJaqAr07VT/dk6OQRqmY1+k4jA9jSxXprv3N68fFw+2nCQwk+DplJfxCFofuhqL2n 5wrZcSbNnPqvfwlMYrXCUAr1JtxEOpQI4vaJIvOaQg98LyBZXd0sPOvxhpkUhqhTnlir HAqgqCa/EsKogu+rKkREbX07U1F1Z9hMNENAAAY8SQiOroiYJrl2StJ7QJPsvUc83xfS lYc3gClK842YGkgdoJHiAf4D4fVn3fc688HsKnTypyFAv8ZprJoEv06ncvU2A2nlESem 4YxIei7YyAKbNw00lbSIzxdeYH2LqWADwCQlZuPq7IitxZFrw/FXMGUstVXaqQ2TkG07 3iNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737582555; x=1738187355; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ALCPQJcJz6NKMWkoN54nBtYsMmh7VMNfjRoHBGnJCIw=; b=InPt3pSTmzzC2i3bi8F3dwCOz4rpnadM11xhV92n62okSmpkGeaKZEOQa+qelLyjj/ QJ/UDw85qSasAIB4wna0dRvSUc8+DdUxbKuWU5nAwerhcjkb6qxO0PSV+9FPv4RKmEce CyYAXMqskCr6oMUYM2+GWqjpd7pI/XU1E0zqigycUEc2vk7BgAKOsHnO5uaxNrfqUh9t tSaPCskv/7ut2FLN3rLBMTa5IYwNOpNtapLFZ5B+JcUw/uMGV5K11x54elvjKKGR4O+9 NwkYssVTC9ccvwPZaKERpgeOGKMrP5hcFUudA4GoXJB/cp4+wU464Q0yIJcHOlPEUjYd TYpg== X-Gm-Message-State: AOJu0Yw6AWJpJLLEd4YXYaWRB4CLIaDMoBLGQC8VM4skIq8WSc8zR/P5 YSmrNHe5JZv2mXiHlSizTuCipM7KZ3ZQ1ssGR744wFSam9Nch7cpTx40wg== X-Gm-Gg: ASbGnct7p3xyxlkRmRxfo9UGqQaJDE5jG7etriyN+pYSVgmt/a9juvh4UqFqmn1T3UW 4MLGyfZuhkewUm9SVYBW8BEOV1S0GdsaUl63AdnGOGRQDi/0HxJGqtbheeDmhjV6C14vyt/rqBC szi0AVdsRlPGodzLpf3vc1XpTa0mgQ4MBi0xTNJ7GFi0YanSdgMHTPKajv0V+u6V6ALAkGUK8RH jSJjc5E3fvXST7698zbZKatMYUUr9iBiDoxKrBogufYJguVQMByiTCkfJWVDS0bIETg7XggLtQN upRiPQGXfdN4o/AwpH6QA397hvwNF7dJ+tCYBvMXdO4z7kTnewdq6n9EgnotEXdsV1JvXgZINxf yBFTs1widGauksiM= X-Google-Smtp-Source: AGHT+IHpk/opXn6IBueelOFiU83mceikanTxEnPbDiqmBYOupwiyJTsDd52Ky5VLkfY9h1oLaHwpbg== X-Received: by 2002:a05:600c:6c95:b0:438:a1f5:3e41 with SMTP id 5b1f17b1804b1-438a1f53fa6mr183103355e9.12.1737582554545; Wed, 22 Jan 2025 13:49:14 -0800 (PST) Received: from [192.168.178.30] (p200300cccf399000d96e09593551d22b.dip0.t-ipconnect.de. [2003:cc:cf39:9000:d96e:959:3551:d22b]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438b31de036sm38059455e9.33.2025.01.22.13.49.12 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Jan 2025 13:49:13 -0800 (PST) From: epirat07@gmail.com To: FFmpeg development discussions and patches Date: Wed, 22 Jan 2025 22:49:11 +0100 X-Mailer: MailMate (1.14r6065) Message-ID: In-Reply-To: <20250122193255.1493-1-ovchinnikov.dmitrii@gmail.com> References: <20250122193255.1493-1-ovchinnikov.dmitrii@gmail.com> MIME-Version: 1.0 Subject: Re: [FFmpeg-devel] [PATCH v6 1/5] avutil: add hwcontext_amf. 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 Ovchinnikov 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: CgpPbiAyMiBKYW4gMjAyNSwgYXQgMjA6MzIsIERtaXRyaWkgT3ZjaGlubmlrb3Ygd3JvdGU6Cgo+ IEFkZHMgIGh3Y29udGV4dF9hbWYsIGVuYWJsaW5nIGEgc2hhcmVkIEFNRiBjb250ZXh0IGZvciBl bmNvZGVycywKPiBkZWNvZGVycywgYW5kIEFNRi1iYXNlZCBmaWx0ZXJzLCB3aXRob3V0IGNvcHkg dG8gdGhlIGhvc3QgbWVtb3J5Lgo+IENvZGUgYWxzbyB3YXMgdGVzdGVkIGluIEhhbmRCcmFrZS4K Pgo+IEJlbmVmaXRzOgo+ICAtIE9wdGltaXphdGlvbnMgZm9yIGRpcmVjdCB2aWRlbyBtZW1vcnkg YWNjZXNzIGZyb20gQ1BVCj4gIC0gU2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgYm9vc3QgaW4gZnVs bCBBTUYgcGlwZWxpbmVzIHdpdGggZmlsdGVycwo+ICAtIEludGVncmF0aW9uIG9mIEdQVSBmaWx0 ZXJzIGxpa2UgVlBQLCBTdXBlciBSZXNvbHV0aW9uLCBhbmQKPiAgICAgQ29tcHJlc3Npb24gQXJ0 ZWZhY3QgUmVtb3ZhbChpbiBmdXR1cmUgcGxhbnMpCj4gIC0gVkNOIHBvd2VyIG1hbmFnZW1lbnQg Y29udHJvbCBmb3IgZGVjb2RlcnMuCj4gIC0gQWJpbGl0eSB0byBzcGVjaWZ5IHdoaWNoIFZDTiBp bnN0YW5jZSB0byB1c2UgZm9yIGRlY29kaW5nCj4gICAgKGxpa2UgZm9yIGVuY29kZXIpCj4gIC0g QU1EIHdpbGwgc29vbiBpbnRyb2R1Y2UgZnVsbCBBTUYgQVBJIGZvciBtdWx0aW1lZGlhIGFjY2Vs ZXJhdG9yIE1BMzVECj4gICAgLSBXaXRoIEFNRiBBUEksIGludGVncmF0aW9uIHdpbGwgYmUgbXVj aCBlYXNpZXI6Cj4gICAgICAgR1BVIGFuZCB0aGUgYWNjZWxlcmF0b3Igd2lsbCBoYXZlIHRoZSBz YW1lIEFQSQo+ICAgIC0gaW5jbHVkaW5nIGVuY29kZXIsIGRlY29kZXIsIHNjYWxlciwgY29sb3Ig Y29udmVydGVyLAo+ICAgICAgIFdpbmRvd3MgYW5kIExpbnV4Lgo+ICAgIExlYXJuIG1vcmU6Cj4g ICAgICBodHRwczovL3d3dy5hbWQuY29tL2VuL3Byb2R1Y3RzL2FjY2VsZXJhdG9ycy9hbHZlby9t YTM1ZC5odG0KClRoYXTigJlzIDQwNCBhcyB0aGUgbCBvZiBodG1sIGlzIG1pc3NpbmcsIGFsc28g bm90IHN1cmUgaXQgYmVsb25ncyBpbiBhIGNvbW1pdCwKZ2l2ZW4gaXRzIGp1c3QgYSBwcm9kdWN0 IHBhZ2UgYW5kIG5vIHRlY2huaWNhbC9BUEkgcmVmZXJlbmNlLgoKRG8geW91IGhhdmUgYW55IGlu c3RydWN0aW9ucyBob3cgdG8gdGVzdCB0aGlzIHdpdGggdGhlIE1BMzVEIGNhcmQsIHNob3VsZCBp dApqdXN0IHdvcms/Cgo+Cj4gQ2hhbmdlcyBieSB2ZXJzaW9uczoKPiB2MjogSGVhZGVyIGZpbGUg Y2xlYW51cC4KPiB2MzogUmVtb3ZlZCBhbiB1bm5lY2Vzc2FyeSBjbGFzcy4KPiB2NDogY29kZSBj bGVhbnVwIGFuZCBpbXByb3ZlZCBlcnJvciBoYW5kbGluZwo+IHY1OiBGaXhlcyByZWxhdGVkIHRv IEhhbmRCcmFrZSBpbnRlZ3JhdGlvbi4KPiB2NjogU2VxdWVudGlhbCBmaWx0ZXJzIGVycm9yIGFu ZCBtZW1vcnkgbGVhayBoYXZlIGJlZW4gZml4ZWQuCj4gLS0tCj4gIGxpYmF2dXRpbC9NYWtlZmls ZSAgICAgICAgICAgICAgICAgfCAgIDQgKwo+ICBsaWJhdnV0aWwvaHdjb250ZXh0LmMgICAgICAg ICAgICAgIHwgICA0ICsKPiAgbGliYXZ1dGlsL2h3Y29udGV4dC5oICAgICAgICAgICAgICB8ICAg MSArCj4gIGxpYmF2dXRpbC9od2NvbnRleHRfYW1mLmMgICAgICAgICAgfCA2MTAgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgbGliYXZ1dGlsL2h3Y29udGV4dF9hbWYuaCAgICAgICAg ICB8ICA0NSArKysKPiAgbGliYXZ1dGlsL2h3Y29udGV4dF9hbWZfaW50ZXJuYWwuaCB8ICA0NCAr KysKPiAgbGliYXZ1dGlsL2h3Y29udGV4dF9pbnRlcm5hbC5oICAgICB8ICAgMSArCj4gIGxpYmF2 dXRpbC9waXhkZXNjLmMgICAgICAgICAgICAgICAgfCAgIDQgKwo+ICBsaWJhdnV0aWwvcGl4Zm10 LmggICAgICAgICAgICAgICAgIHwgICA1ICsKPiAgOSBmaWxlcyBjaGFuZ2VkLCA3MTggaW5zZXJ0 aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZ1dGlsL2h3Y29udGV4dF9hbWYuYwo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZ1dGlsL2h3Y29udGV4dF9hbWYuaAo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgbGliYXZ1dGlsL2h3Y29udGV4dF9hbWZfaW50ZXJuYWwuaAo+Cj4gZGlmZiAt LWdpdCBhL2xpYmF2dXRpbC9NYWtlZmlsZSBiL2xpYmF2dXRpbC9NYWtlZmlsZQo+IGluZGV4IGY4 MDMxODE1YmQuLjMwNzZiNTc1YTUgMTAwNjQ0Cj4gLS0tIGEvbGliYXZ1dGlsL01ha2VmaWxlCj4g KysrIGIvbGliYXZ1dGlsL01ha2VmaWxlCj4gQEAgLTQ3LDYgKzQ3LDcgQEAgSEVBREVSUyA9IGFk bGVyMzIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAo+ICAgICAgICAgICAgaHdjb250ZXh0X2QzZDEydmEuaCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAgICAgICBod2NvbnRleHRfZHJtLmggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAgICAg IGh3Y29udGV4dF9keHZhMi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICsgICAgICAgICAgaHdjb250ZXh0X2FtZi5oICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAgICAgICBod2NvbnRleHRfcXN2Lmgg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAg ICAgIGh3Y29udGV4dF9tZWRpYWNvZGVjLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ICAgICAgICAgICAgaHdjb250ZXh0X29wZW5jbC5oICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gQEAgLTIwMCw2ICsyMDEsNyBAQCBPQkpT LSQoQ09ORklHX0NVREEpICAgICAgICAgICAgICAgICAgICAgKz0gaHdjb250ZXh0X2N1ZGEubwo+ ICBPQkpTLSQoQ09ORklHX0QzRDExVkEpICAgICAgICAgICAgICAgICAgKz0gaHdjb250ZXh0X2Qz ZDExdmEubwo+ICBPQkpTLSQoQ09ORklHX0QzRDEyVkEpICAgICAgICAgICAgICAgICAgKz0gaHdj b250ZXh0X2QzZDEydmEubwo+ICBPQkpTLSQoQ09ORklHX0RYVkEyKSAgICAgICAgICAgICAgICAg ICAgKz0gaHdjb250ZXh0X2R4dmEyLm8KPiArT0JKUy0kKENPTkZJR19BTUYpICAgICAgICAgICAg ICAgICAgICAgICs9IGh3Y29udGV4dF9hbWYubwo+ICBPQkpTLSQoQ09ORklHX0xJQkRSTSkgICAg ICAgICAgICAgICAgICAgKz0gaHdjb250ZXh0X2RybS5vCj4gIE9CSlMtJChDT05GSUdfTUFDT1Nf S1BFUkYpICAgICAgICAgICAgICArPSBtYWNvc19rcGVyZi5vCj4gIE9CSlMtJChDT05GSUdfTUVE SUFDT0RFQykgICAgICAgICAgICAgICArPSBod2NvbnRleHRfbWVkaWFjb2RlYy5vCj4gQEAgLTIy NCw2ICsyMjYsOCBAQCBTS0lQSEVBREVSUy0kKENPTkZJR19DVURBKSAgICAgICAgICAgICArPSBo d2NvbnRleHRfY3VkYV9pbnRlcm5hbC5oICAgICBcCj4gIFNLSVBIRUFERVJTLSQoQ09ORklHX0Qz RDExVkEpICAgICAgICAgICs9IGh3Y29udGV4dF9kM2QxMXZhLmgKPiAgU0tJUEhFQURFUlMtJChD T05GSUdfRDNEMTJWQSkgICAgICAgICAgKz0gaHdjb250ZXh0X2QzZDEydmEuaAo+ICBTS0lQSEVB REVSUy0kKENPTkZJR19EWFZBMikgICAgICAgICAgICArPSBod2NvbnRleHRfZHh2YTIuaAo+ICtT S0lQSEVBREVSUy0kKENPTkZJR19BTUYpICAgICAgICAgICAgICArPSBod2NvbnRleHRfYW1mLmgg ICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGh3Y29udGV4dF9hbWZfaW50ZXJuYWwKPiAgU0tJUEhFQURFUlMtJChDT05GSUdfUVNWKSAg ICAgICAgICAgICAgKz0gaHdjb250ZXh0X3Fzdi5oCj4gIFNLSVBIRUFERVJTLSQoQ09ORklHX09Q RU5DTCkgICAgICAgICAgICs9IGh3Y29udGV4dF9vcGVuY2wuaAo+ICBTS0lQSEVBREVSUy0kKENP TkZJR19WQUFQSSkgICAgICAgICAgICArPSBod2NvbnRleHRfdmFhcGkuaAo+IGRpZmYgLS1naXQg YS9saWJhdnV0aWwvaHdjb250ZXh0LmMgYi9saWJhdnV0aWwvaHdjb250ZXh0LmMKPiBpbmRleCBm YTk5YTBkOGE0Li5mMDZkNDljNDVjIDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9od2NvbnRleHQu Ywo+ICsrKyBiL2xpYmF2dXRpbC9od2NvbnRleHQuYwo+IEBAIC02NSw2ICs2NSw5IEBAIHN0YXRp YyBjb25zdCBIV0NvbnRleHRUeXBlICogY29uc3QgaHdfdGFibGVbXSA9IHsKPiAgI2VuZGlmCj4g ICNpZiBDT05GSUdfVlVMS0FOCj4gICAgICAmZmZfaHdjb250ZXh0X3R5cGVfdnVsa2FuLAo+ICsj ZW5kaWYKPiArI2lmIENPTkZJR19BTUYKPiArICAgICZmZl9od2NvbnRleHRfdHlwZV9hbWYsCj4g ICNlbmRpZgo+ICAgICAgTlVMTCwKPiAgfTsKPiBAQCAtODIsNiArODUsNyBAQCBzdGF0aWMgY29u c3QgY2hhciAqY29uc3QgaHdfdHlwZV9uYW1lc1tdID0gewo+ICAgICAgW0FWX0hXREVWSUNFX1RZ UEVfVklERU9UT09MQk9YXSA9ICJ2aWRlb3Rvb2xib3giLAo+ICAgICAgW0FWX0hXREVWSUNFX1RZ UEVfTUVESUFDT0RFQ10gPSAibWVkaWFjb2RlYyIsCj4gICAgICBbQVZfSFdERVZJQ0VfVFlQRV9W VUxLQU5dID0gInZ1bGthbiIsCj4gKyAgICBbQVZfSFdERVZJQ0VfVFlQRV9BTUZdID0gImFtZiIs Cj4gIH07Cj4KPiAgdHlwZWRlZiBzdHJ1Y3QgRkZIV0RldmljZUNvbnRleHQgewo+IGRpZmYgLS1n aXQgYS9saWJhdnV0aWwvaHdjb250ZXh0LmggYi9saWJhdnV0aWwvaHdjb250ZXh0LmgKPiBpbmRl eCBiYWMzMGRlYmFlLi45NjA0MmJhMTk3IDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9od2NvbnRl eHQuaAo+ICsrKyBiL2xpYmF2dXRpbC9od2NvbnRleHQuaAo+IEBAIC0zOCw2ICszOCw3IEBAIGVu dW0gQVZIV0RldmljZVR5cGUgewo+ICAgICAgQVZfSFdERVZJQ0VfVFlQRV9NRURJQUNPREVDLAo+ ICAgICAgQVZfSFdERVZJQ0VfVFlQRV9WVUxLQU4sCj4gICAgICBBVl9IV0RFVklDRV9UWVBFX0Qz RDEyVkEsCj4gKyAgICBBVl9IV0RFVklDRV9UWVBFX0FNRiwKPiAgfTsKPgo+ICAvKioKPiBkaWZm IC0tZ2l0IGEvbGliYXZ1dGlsL2h3Y29udGV4dF9hbWYuYyBiL2xpYmF2dXRpbC9od2NvbnRleHRf YW1mLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLjhlMGNlMTky N2UKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliYXZ1dGlsL2h3Y29udGV4dF9hbWYuYwo+IEBA IC0wLDAgKzEsNjEwIEBACj4gKy8qCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4K PiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICog RkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Cj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5z ZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC b3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImJ1ZmZlci5o Igo+ICsjaW5jbHVkZSAiY29tbW9uLmgiCj4gKyNpbmNsdWRlICJod2NvbnRleHQuaCIKPiArI2lu Y2x1ZGUgImh3Y29udGV4dF9hbWYuaCIKPiArI2luY2x1ZGUgImh3Y29udGV4dF9pbnRlcm5hbC5o Igo+ICsjaW5jbHVkZSAiaHdjb250ZXh0X2FtZl9pbnRlcm5hbC5oIgo+ICsjaWYgQ09ORklHX1ZV TEtBTgo+ICsjaW5jbHVkZSAiaHdjb250ZXh0X3Z1bGthbi5oIgo+ICsjZW5kaWYKPiArI2lmIENP TkZJR19EM0QxMVZBCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaHdjb250ZXh0X2QzZDExdmEuaCIK PiArI2VuZGlmCj4gKyNpZiBDT05GSUdfRFhWQTIKPiArI2RlZmluZSBDT0JKTUFDUk9TCj4gKyNp bmNsdWRlICJsaWJhdnV0aWwvaHdjb250ZXh0X2R4dmEyLmgiCj4gKyNlbmRpZgo+ICsjaW5jbHVk ZSAibWVtLmgiCj4gKyNpbmNsdWRlICJwaXhkZXNjLmgiCj4gKyNpbmNsdWRlICJwaXhmbXQuaCIK PiArI2luY2x1ZGUgImltZ3V0aWxzLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQu aCIKPiArI2luY2x1ZGUgPEFNRi9jb3JlL1N1cmZhY2UuaD4KPiArI2luY2x1ZGUgPEFNRi9jb3Jl L1RyYWNlLmg+Cj4gKyNpZmRlZiBfV0lOMzIKPiArI2luY2x1ZGUgImNvbXBhdC93MzJkbGZjbi5o Igo+ICsjZWxzZQo+ICsjaW5jbHVkZSA8ZGxmY24uaD4KPiArI2VuZGlmCj4gKyNkZWZpbmUgRkZN UEVHX0FNRl9XUklURVJfSUQgTCJmZm1wZWdfYW1mIgo+ICsKPiArCj4gK3R5cGVkZWYgc3RydWN0 IEFtZlRyYWNlV3JpdGVyIHsKPiArICAgIEFNRlRyYWNlV3JpdGVyVnRibCAqdnRibHA7Cj4gKyAg ICB2b2lkICAgICAgICAgICAgICAgKmF2Y3R4Owo+ICsgICAgQU1GVHJhY2VXcml0ZXJWdGJsICB2 dGJsOwo+ICt9IEFtZlRyYWNlV3JpdGVyOwo+ICsKPiArc3RhdGljIHZvaWQgQU1GX0NERUNMX0NB TEwgQU1GVHJhY2VXcml0ZXJfV3JpdGUoQU1GVHJhY2VXcml0ZXIgKnBUaGlzLAo+ICsgICAgY29u c3Qgd2NoYXJfdCAqc2NvcGUsIGNvbnN0IHdjaGFyX3QgKm1lc3NhZ2UpCj4gK3sKPiArICAgIEFt ZlRyYWNlV3JpdGVyICp0cmFjZXIgPSAoQW1mVHJhY2VXcml0ZXIqKXBUaGlzOwo+ICsgICAgYXZf bG9nKHRyYWNlci0+YXZjdHgsIEFWX0xPR19ERUJVRywgIiVsczogJWxzIiwgc2NvcGUsIG1lc3Nh Z2UpOyAvLyBcbiBpcyBwcm92aWRlZCBmcm9tIEFNRgo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBB TUZfQ0RFQ0xfQ0FMTCBBTUZUcmFjZVdyaXRlcl9GbHVzaChBTUZUcmFjZVdyaXRlciAqcFRoaXMp Cj4gK3sKPiArfQo+ICsKPiArc3RhdGljIEFtZlRyYWNlV3JpdGVyICogYW1mX3dyaXRlcl9hbGxv Yyh2b2lkICAqYXZjdHgpCj4gK3sKPiArICAgIEFtZlRyYWNlV3JpdGVyICogd3JpdGVyID0gYXZf bWFsbG9jeihzaXplb2YoQW1mVHJhY2VXcml0ZXIpKTsKPiArICAgIGlmICghd3JpdGVyKQo+ICsg ICAgICAgIHJldHVybiBOVUxMOwo+ICsKPiArICAgIHdyaXRlci0+dnRibHAgPSAmd3JpdGVyLT52 dGJsOwo+ICsgICAgd3JpdGVyLT52dGJscC0+V3JpdGUgPSBBTUZUcmFjZVdyaXRlcl9Xcml0ZTsK PiArICAgIHdyaXRlci0+dnRibHAtPkZsdXNoID0gQU1GVHJhY2VXcml0ZXJfRmx1c2g7Cj4gKyAg ICB3cml0ZXItPmF2Y3R4ID0gYXZjdHg7Cj4gKwo+ICsgICAgcmV0dXJuIHdyaXRlcjsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgYW1mX3dyaXRlcl9mcmVlKHZvaWQgICpvcGFxdWUpCj4gK3sKPiAr ICAgIEFtZlRyYWNlV3JpdGVyICp3cml0ZXIgPSAoQW1mVHJhY2VXcml0ZXIgKilvcGFxdWU7Cj4g KyAgICBhdl9mcmVlcCgmd3JpdGVyKTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIFdlIHN0aWxsIG5l ZWQgQVZIV0ZyYW1lc0NvbnRleHQgdG8gdXRpbGl6ZSBvdXIgaGFyZHdhcmUgbWVtb3J5Cj4gKyAq IG90aGVyd2lzZSwgd2Ugd2lsbCByZWNlaXZlIHRoZSBlcnJvciAiSFcgZm9ybWF0IHJlcXVpcmVz IGh3X2ZyYW1lc19jdHggdG8gYmUgbm9uLU5VTEwiLgo+ICsgKiAobGliYXZmaWx0ZXJcYnVmZmVy c3JjLmMgZnVuY3Rpb24gcXVlcnlfZm9ybWF0cykKPiArKi8KPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ ICsgICAgdm9pZCAqZHVtbXk7Cj4gK30gQU1GRnJhbWVzQ29udGV4dDsKPiArCj4gK3R5cGVkZWYg c3RydWN0IEFWQU1GRm9ybWF0TWFwIHsKPiArICAgIGVudW0gQVZQaXhlbEZvcm1hdCAgICAgICBh dl9mb3JtYXQ7Cj4gKyAgICBlbnVtIEFNRl9TVVJGQUNFX0ZPUk1BVCAgYW1mX2Zvcm1hdDsKPiAr fSBGb3JtYXRNYXA7Cj4gKwo+ICtjb25zdCBGb3JtYXRNYXAgZm9ybWF0X21hcFtdID0KPiArewo+ ICsgICAgeyBBVl9QSVhfRk1UX05PTkUsICAgICAgICAgIEFNRl9TVVJGQUNFX1VOS05PV04gfSwK PiArICAgIHsgQVZfUElYX0ZNVF9OVjEyLCAgICAgICAgICBBTUZfU1VSRkFDRV9OVjEyIH0sCj4g KyAgICB7IEFWX1BJWF9GTVRfQkdSMCwgICAgICAgICAgQU1GX1NVUkZBQ0VfQkdSQSB9LAo+ICsg ICAgeyBBVl9QSVhfRk1UX1JHQjAsICAgICAgICAgIEFNRl9TVVJGQUNFX1JHQkEgfSwKPiArICAg IHsgQVZfUElYX0ZNVF9CR1JBLCAgICAgICAgICBBTUZfU1VSRkFDRV9CR1JBIH0sCj4gKyAgICB7 IEFWX1BJWF9GTVRfQVJHQiwgICAgICAgICAgQU1GX1NVUkZBQ0VfQVJHQiB9LAo+ICsgICAgeyBB Vl9QSVhfRk1UX1JHQkEsICAgICAgICAgIEFNRl9TVVJGQUNFX1JHQkEgfSwKPiArICAgIHsgQVZf UElYX0ZNVF9HUkFZOCwgICAgICAgICBBTUZfU1VSRkFDRV9HUkFZOCB9LAo+ICsgICAgeyBBVl9Q SVhfRk1UX1lVVjQyMFAsICAgICAgIEFNRl9TVVJGQUNFX1lVVjQyMFAgfSwKPiArICAgIHsgQVZf UElYX0ZNVF9ZVVlWNDIyLCAgICAgICBBTUZfU1VSRkFDRV9ZVVkyIH0sCj4gKyAgICB7IEFWX1BJ WF9GTVRfUDAxMCwgICAgICAgICAgQU1GX1NVUkZBQ0VfUDAxMCB9LAo+ICt9Owo+ICsKPiArZW51 bSBBTUZfU1VSRkFDRV9GT1JNQVQgYXZfYXZfdG9fYW1mX2Zvcm1hdChlbnVtIEFWUGl4ZWxGb3Jt YXQgZm10KQo+ICt7Cj4gKyAgICBpbnQgaTsKPiArICAgIGZvciAoaSA9IDA7IGkgPCBhbWZfY291 bnRvZihmb3JtYXRfbWFwKTsgaSsrKSB7Cj4gKyAgICAgICAgaWYgKGZvcm1hdF9tYXBbaV0uYXZf Zm9ybWF0ID09IGZtdCkgewo+ICsgICAgICAgICAgICByZXR1cm4gZm9ybWF0X21hcFtpXS5hbWZf Zm9ybWF0Owo+ICsgICAgICAgIH0KPiArICAgIH0KPiArICAgIHJldHVybiBBTUZfU1VSRkFDRV9V TktOT1dOOwo+ICt9Cj4gKwo+ICtlbnVtIEFWUGl4ZWxGb3JtYXQgYXZfYW1mX3RvX2F2X2Zvcm1h dChlbnVtIEFNRl9TVVJGQUNFX0ZPUk1BVCBmbXQpCj4gK3sKPiArICAgIGludCBpOwo+ICsgICAg Zm9yIChpID0gMDsgaSA8IGFtZl9jb3VudG9mKGZvcm1hdF9tYXApOyBpKyspIHsKPiArICAgICAg ICBpZiAoZm9ybWF0X21hcFtpXS5hbWZfZm9ybWF0ID09IGZtdCkgewo+ICsgICAgICAgICAgICBy ZXR1cm4gZm9ybWF0X21hcFtpXS5hdl9mb3JtYXQ7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsg ICAgcmV0dXJuIEFNRl9TVVJGQUNFX1VOS05PV047Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBl bnVtIEFWUGl4ZWxGb3JtYXQgc3VwcG9ydGVkX2Zvcm1hdHNbXSA9IHsKPiArICAgIEFWX1BJWF9G TVRfTlYxMiwKPiArICAgIEFWX1BJWF9GTVRfWVVWNDIwUCwKPiArICAgIEFWX1BJWF9GTVRfQkdS QSwKPiArICAgIEFWX1BJWF9GTVRfUkdCQSwKPiArICAgIEFWX1BJWF9GTVRfUDAxMCwKPiArI2lm IENPTkZJR19EM0QxMVZBCj4gKyAgICBBVl9QSVhfRk1UX0QzRDExLAo+ICsjZW5kaWYKPiArI2lm IENPTkZJR19EWFZBMgo+ICsgICAgQVZfUElYX0ZNVF9EWFZBMl9WTEQsCj4gKyNlbmRpZgo+ICt9 Owo+ICsKPiArc3RhdGljIGNvbnN0IGVudW0gQVZQaXhlbEZvcm1hdCBzdXBwb3J0ZWRfdHJhbnNm ZXJfZm9ybWF0c1tdID0gewo+ICsgICAgQVZfUElYX0ZNVF9OVjEyLAo+ICsgICAgQVZfUElYX0ZN VF9ZVVY0MjBQLAo+ICsgICAgQVZfUElYX0ZNVF9CR1JBLAo+ICsgICAgQVZfUElYX0ZNVF9SR0JB LAo+ICsgICAgQVZfUElYX0ZNVF9QMDEwLAo+ICsgICAgQVZfUElYX0ZNVF9OT05FLAo+ICt9Owo+ ICsKPiArc3RhdGljIGludCBhbWZfZnJhbWVzX2dldF9jb25zdHJhaW50cyhBVkhXRGV2aWNlQ29u dGV4dCAqY3R4LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB2b2lkICpod2NvbmZpZywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQVZIV0ZyYW1lc0NvbnN0cmFpbnRzICpjb25zdHJhaW50cykKPiArewo+ICsgICAgaW50IGk7 Cj4gKwo+ICsgICAgY29uc3RyYWludHMtPnZhbGlkX3N3X2Zvcm1hdHMgPSBhdl9tYWxsb2NfYXJy YXkoRkZfQVJSQVlfRUxFTVMoc3VwcG9ydGVkX2Zvcm1hdHMpICsgMSwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqY29uc3RyYWlu dHMtPnZhbGlkX3N3X2Zvcm1hdHMpKTsKPiArICAgIGlmICghY29uc3RyYWludHMtPnZhbGlkX3N3 X2Zvcm1hdHMpCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArCj4gKyAgICBm b3IgKGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMoc3VwcG9ydGVkX2Zvcm1hdHMpOyBpKyspCj4g KyAgICAgICAgY29uc3RyYWludHMtPnZhbGlkX3N3X2Zvcm1hdHNbaV0gPSBzdXBwb3J0ZWRfZm9y bWF0c1tpXTsKPiArICAgIGNvbnN0cmFpbnRzLT52YWxpZF9zd19mb3JtYXRzW0ZGX0FSUkFZX0VM RU1TKHN1cHBvcnRlZF9mb3JtYXRzKV0gPSBBVl9QSVhfRk1UX05PTkU7Cj4gKwo+ICsgICAgY29u c3RyYWludHMtPnZhbGlkX2h3X2Zvcm1hdHMgPSBhdl9tYWxsb2NfYXJyYXkoMiwgc2l6ZW9mKCpj b25zdHJhaW50cy0+dmFsaWRfaHdfZm9ybWF0cykpOwo+ICsgICAgaWYgKCFjb25zdHJhaW50cy0+ dmFsaWRfaHdfZm9ybWF0cykKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsK PiArICAgIGNvbnN0cmFpbnRzLT52YWxpZF9od19mb3JtYXRzWzBdID0gQVZfUElYX0ZNVF9BTUZf U1VSRkFDRTsKPiArICAgIGNvbnN0cmFpbnRzLT52YWxpZF9od19mb3JtYXRzWzFdID0gQVZfUElY X0ZNVF9OT05FOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBh bWZfZHVtbXlfZnJlZSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgKmRhdGEpCj4gK3sKPiArCj4gK30K PiArCj4gK3N0YXRpYyBBVkJ1ZmZlclJlZiAqYW1mX3Bvb2xfYWxsb2Modm9pZCAqb3BhcXVlLCBz aXplX3Qgc2l6ZSkKPiArewo+ICsgICAgQVZIV0ZyYW1lc0NvbnRleHQgKmh3ZmMgPSAoQVZIV0Zy YW1lc0NvbnRleHQgKilvcGFxdWU7Cj4gKyAgICBBVkJ1ZmZlclJlZiAqYnVmOwo+ICsKPiArICAg IGJ1ZiA9IGF2X2J1ZmZlcl9jcmVhdGUoTlVMTCwgMCwgYW1mX2R1bW15X2ZyZWUsIGh3ZmMsIEFW X0JVRkZFUl9GTEFHX1JFQURPTkxZKTsKPiArICAgIGlmICghYnVmKSB7Cj4gKyAgICAgICAgYXZf bG9nKGh3ZmMsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBjcmVhdGUgYnVmZmVyIGZvciBBTUYg Y29udGV4dC5cbiIpOwo+ICsgICAgICAgIHJldHVybiBOVUxMOwo+ICsgICAgfQo+ICsgICAgcmV0 dXJuIGJ1ZjsKPiArfQo+ICsKPiArc3RhdGljIGludCBhbWZfZnJhbWVzX2luaXQoQVZIV0ZyYW1l c0NvbnRleHQgKmN0eCkKPiArewo+ICsgICAgaW50IGk7Cj4gKwo+ICsgICAgZm9yIChpID0gMDsg aSA8IEZGX0FSUkFZX0VMRU1TKHN1cHBvcnRlZF9mb3JtYXRzKTsgaSsrKSB7Cj4gKyAgICAgICAg aWYgKGN0eC0+c3dfZm9ybWF0ID09IHN1cHBvcnRlZF9mb3JtYXRzW2ldKQo+ICsgICAgICAgICAg ICBicmVhazsKPiArICAgIH0KPiArICAgIGlmIChpID09IEZGX0FSUkFZX0VMRU1TKHN1cHBvcnRl ZF9mb3JtYXRzKSkgewo+ICsgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIlBpeGVs IGZvcm1hdCAnJXMnIGlzIG5vdCBzdXBwb3J0ZWRcbiIsCj4gKyAgICAgICAgICAgICAgIGF2X2dl dF9waXhfZm10X25hbWUoY3R4LT5zd19mb3JtYXQpKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJP UihFTk9TWVMpOwo+ICsgICAgfQo+ICsKPiArICAgIGZmaHdmcmFtZXNjdHgoY3R4KS0+cG9vbF9p bnRlcm5hbCA9Cj4gKyAgICAgICAgICAgIGF2X2J1ZmZlcl9wb29sX2luaXQyKHNpemVvZihBTUZT dXJmYWNlKSwgY3R4LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYW1mX3Bv b2xfYWxsb2MsIE5VTEwpOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsKPiArc3Rh dGljIGludCBhbWZfZ2V0X2J1ZmZlcihBVkhXRnJhbWVzQ29udGV4dCAqY3R4LCBBVkZyYW1lICpm cmFtZSkKPiArewo+ICsgICAgZnJhbWUtPmJ1ZlswXSA9IGF2X2J1ZmZlcl9wb29sX2dldChjdHgt PnBvb2wpOwo+ICsgICAgaWYgKCFmcmFtZS0+YnVmWzBdKQo+ICsgICAgICAgIHJldHVybiBBVkVS Uk9SKEVOT01FTSk7Cj4gKwo+ICsgICAgZnJhbWUtPmRhdGFbMF0gPSBmcmFtZS0+YnVmWzBdLT5k YXRhOwo+ICsgICAgZnJhbWUtPmZvcm1hdCAgPSBBVl9QSVhfRk1UX0FNRl9TVVJGQUNFOwo+ICsg ICAgZnJhbWUtPndpZHRoICAgPSBjdHgtPndpZHRoOwo+ICsgICAgZnJhbWUtPmhlaWdodCAgPSBj dHgtPmhlaWdodDsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFtZl90 cmFuc2Zlcl9nZXRfZm9ybWF0cyhBVkhXRnJhbWVzQ29udGV4dCAqY3R4LAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBBVkhXRnJhbWVUcmFuc2ZlckRpcmVjdGlv biBkaXIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIEFWUGl4 ZWxGb3JtYXQgKipmb3JtYXRzKQo+ICt7Cj4gKyAgICBlbnVtIEFWUGl4ZWxGb3JtYXQgKmZtdHM7 Cj4gKyAgICBpbnQgaTsKPiArCj4gKyAgICBmbXRzID0gYXZfbWFsbG9jX2FycmF5KEZGX0FSUkFZ X0VMRU1TKHN1cHBvcnRlZF90cmFuc2Zlcl9mb3JtYXRzKSwgc2l6ZW9mKCpmbXRzKSk7Cj4gKyAg ICBpZiAoIWZtdHMpCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArICAgIGZv ciAoaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhzdXBwb3J0ZWRfdHJhbnNmZXJfZm9ybWF0cyk7 IGkrKykKPiArICAgICAgICBmbXRzW2ldID0gc3VwcG9ydGVkX3RyYW5zZmVyX2Zvcm1hdHNbaV07 Cj4gKwo+ICsgICAgKmZvcm1hdHMgPSBmbXRzOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBhbWZfZnJlZV9hbWZzdXJmYWNlKHZvaWQgKm9wYXF1ZSwgdWludDhf dCAqZGF0YSkKPiArewo+ICsgICAgaWYoISFkYXRhKXsKPiArICAgICAgICBBTUZTdXJmYWNlICpz dXJmYWNlID0gKEFNRlN1cmZhY2UqKShkYXRhKTsKPiArICAgICAgICBzdXJmYWNlLT5wVnRibC0+ UmVsZWFzZShzdXJmYWNlKTsKPiArICAgIH0KPiArfQo+ICsKPiArc3RhdGljIGludCBhbWZfdHJh bnNmZXJfZGF0YV90byhBVkhXRnJhbWVzQ29udGV4dCAqY3R4LCBBVkZyYW1lICpkc3QsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFWRnJhbWUgKnNyYykKPiArewo+ ICsgICAgQU1GU3VyZmFjZSogc3VyZmFjZSA9IChBTUZTdXJmYWNlKilkc3QtPmRhdGFbMF07Cj4g KyAgICBBTUZQbGFuZSAqcGxhbmU7Cj4gKyAgICB1aW50OF90ICAqZHN0X2RhdGFbNF07Cj4gKyAg ICBpbnQgICAgICAgZHN0X2xpbmVzaXplWzRdOwo+ICsgICAgaW50ICAgICAgIHBsYW5lczsKPiAr ICAgIGludCAgICAgICBpOwo+ICsgICAgaW50ICAgICAgIHJlczsKPiArICAgIGludCB3ID0gRkZN SU4oZHN0LT53aWR0aCwgIHNyYy0+d2lkdGgpOwo+ICsgICAgaW50IGggPSBGRk1JTihkc3QtPmhl aWdodCwgc3JjLT5oZWlnaHQpOwo+ICsKPiArICAgIGlmICghc3VyZmFjZSkgewo+ICsgICAgICAg IEFWSFdEZXZpY2VDb250ZXh0ICAgKmh3ZGV2X2N0eCA9IGN0eC0+ZGV2aWNlX2N0eDsKPiArICAg ICAgICBBVkFNRkRldmljZUNvbnRleHQgICphbWZfZGV2aWNlX2N0eCA9IChBVkFNRkRldmljZUNv bnRleHQgKilod2Rldl9jdHgtPmh3Y3R4Owo+ICsgICAgICAgIEFNRl9TVVJGQUNFX0ZPUk1BVCAg Zm9ybWF0ID0gYXZfYXZfdG9fYW1mX2Zvcm1hdChjdHgtPnN3X2Zvcm1hdCk7Cj4gKyAgICAgICAg cmVzID0gYW1mX2RldmljZV9jdHgtPmNvbnRleHQtPnBWdGJsLT5BbGxvY1N1cmZhY2UoYW1mX2Rl dmljZV9jdHgtPmNvbnRleHQsIEFNRl9NRU1PUllfSE9TVCwgZm9ybWF0LCBkc3QtPndpZHRoLCBk c3QtPmhlaWdodCwgJnN1cmZhY2UpOwo+ICsgICAgICAgIEFNRl9SRVRVUk5fSUZfRkFMU0UoY3R4 LCByZXMgPT0gQU1GX09LLCBBVkVSUk9SKEVOT01FTSksICJBbGxvY1N1cmZhY2UoKSBmYWlsZWQg IHdpdGggZXJyb3IgJWRcbiIsIHJlcyk7Cj4gKyAgICAgICAgZHN0LT5kYXRhWzBdID0gKHVpbnQ4 X3QgKilzdXJmYWNlOwo+ICsgICAgICAgIGRzdC0+YnVmWzFdID0gYXZfYnVmZmVyX2NyZWF0ZSgo dWludDhfdCAqKXN1cmZhY2UsIHNpemVvZihzdXJmYWNlKSwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhbWZfZnJlZV9hbWZzdXJmYWNlLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfQlVGRkVSX0ZMQUdfUkVBRE9OTFkp Owo+ICsgICAgQU1GX1JFVFVSTl9JRl9GQUxTRShjdHgsICEhZHN0LT5idWZbMV0sIEFWRVJST1Io RU5PTUVNKSwgImF2X2J1ZmZlcl9jcmVhdGUgZm9yIGFtZiBzdXJmYWNlIGZhaWxlZC4iKTsKPiAr ICAgIH0KPiArCj4gKyAgICBwbGFuZXMgPSAoaW50KXN1cmZhY2UtPnBWdGJsLT5HZXRQbGFuZXND b3VudChzdXJmYWNlKTsKPiArICAgIGF2X2Fzc2VydDAocGxhbmVzIDwgRkZfQVJSQVlfRUxFTVMo ZHN0X2RhdGEpKTsKPiArCj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgcGxhbmVzOyBpKyspIHsKPiAr ICAgICAgICBwbGFuZSA9IHN1cmZhY2UtPnBWdGJsLT5HZXRQbGFuZUF0KHN1cmZhY2UsIGkpOwo+ ICsgICAgICAgIGRzdF9kYXRhW2ldID0gcGxhbmUtPnBWdGJsLT5HZXROYXRpdmUocGxhbmUpOwo+ ICsgICAgICAgIGRzdF9saW5lc2l6ZVtpXSA9IHBsYW5lLT5wVnRibC0+R2V0SFBpdGNoKHBsYW5l KTsKPiArICAgIH0KPiArICAgIGF2X2ltYWdlX2NvcHkyKGRzdF9kYXRhLCBkc3RfbGluZXNpemUs Cj4gKyAgICAgICAgICAgICAgICAgICBzcmMtPmRhdGEsIHNyYy0+bGluZXNpemUsIHNyYy0+Zm9y bWF0LAo+ICsgICAgICAgICAgICAgICAgICAgdywgaCk7Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgYW1mX3RyYW5zZmVyX2RhdGFfZnJvbShBVkhXRnJhbWVzQ29u dGV4dCAqY3R4LCBBVkZyYW1lICpkc3QsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IEFWRnJhbWUgKnNyYykKPiArewo+ICsgICAgQU1GU3VyZmFjZSogc3VyZmFj ZSA9IChBTUZTdXJmYWNlKilzcmMtPmRhdGFbMF07Cj4gKyAgICBBTUZQbGFuZSAqcGxhbmU7Cj4g KyAgICB1aW50OF90ICAqc3JjX2RhdGFbNF07Cj4gKyAgICBpbnQgICAgICAgc3JjX2xpbmVzaXpl WzRdOwo+ICsgICAgaW50ICAgICAgIHBsYW5lczsKPiArICAgIGludCAgICAgICBpOwo+ICsgICAg aW50IHcgPSBGRk1JTihkc3QtPndpZHRoLCAgc3JjLT53aWR0aCk7Cj4gKyAgICBpbnQgaCA9IEZG TUlOKGRzdC0+aGVpZ2h0LCBzcmMtPmhlaWdodCk7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAg IHJldCA9IHN1cmZhY2UtPnBWdGJsLT5Db252ZXJ0KHN1cmZhY2UsIEFNRl9NRU1PUllfSE9TVCk7 Cj4gKyAgICBBTUZfUkVUVVJOX0lGX0ZBTFNFKGN0eCwgcmV0ID09IEFNRl9PSywgQVZFUlJPUl9V TktOT1dOLCAiQ29udmVydChhbWY6OkFNRl9NRU1PUllfSE9TVCkgZmFpbGVkIHdpdGggZXJyb3Ig JWRcbiIsIEFWRVJST1JfVU5LTk9XTik7Cj4gKwo+ICsgICAgcGxhbmVzID0gKGludClzdXJmYWNl LT5wVnRibC0+R2V0UGxhbmVzQ291bnQoc3VyZmFjZSk7Cj4gKyAgICBhdl9hc3NlcnQwKHBsYW5l cyA8IEZGX0FSUkFZX0VMRU1TKHNyY19kYXRhKSk7Cj4gKwo+ICsgICAgZm9yIChpID0gMDsgaSA8 IHBsYW5lczsgaSsrKSB7Cj4gKyAgICAgICAgcGxhbmUgPSBzdXJmYWNlLT5wVnRibC0+R2V0UGxh bmVBdChzdXJmYWNlLCBpKTsKPiArICAgICAgICBzcmNfZGF0YVtpXSA9IHBsYW5lLT5wVnRibC0+ R2V0TmF0aXZlKHBsYW5lKTsKPiArICAgICAgICBzcmNfbGluZXNpemVbaV0gPSBwbGFuZS0+cFZ0 YmwtPkdldEhQaXRjaChwbGFuZSk7Cj4gKyAgICB9Cj4gKyAgICBhdl9pbWFnZV9jb3B5Mihkc3Qt PmRhdGEsIGRzdC0+bGluZXNpemUsCj4gKyAgICAgICAgICAgICAgICAgICBzcmNfZGF0YSwgc3Jj X2xpbmVzaXplLCBkc3QtPmZvcm1hdCwKPiArICAgICAgICAgICAgICAgICAgIHcsIGgpOwo+ICsg ICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gKwo+ICsKPiArc3RhdGljIHZvaWQgYW1mX2RldmljZV91 bmluaXQoQVZIV0RldmljZUNvbnRleHQgKmRldmljZV9jdHgpCj4gK3sKPiArICAgIEFWQU1GRGV2 aWNlQ29udGV4dCAgICAgICphbWZfY3R4ID0gZGV2aWNlX2N0eC0+aHdjdHg7Cj4gKyAgICBBTUZf UkVTVUxUICAgICAgICAgIHJlczsKPiArICAgIEFNRlRyYWNlICAgICAgICAgICAqdHJhY2U7Cj4g Kwo+ICsgICAgaWYgKGFtZl9jdHgtPmNvbnRleHQpIHsKPiArICAgICAgICBhbWZfY3R4LT5jb250 ZXh0LT5wVnRibC0+VGVybWluYXRlKGFtZl9jdHgtPmNvbnRleHQpOwo+ICsgICAgICAgIGFtZl9j dHgtPmNvbnRleHQtPnBWdGJsLT5SZWxlYXNlKGFtZl9jdHgtPmNvbnRleHQpOwo+ICsgICAgICAg IGFtZl9jdHgtPmNvbnRleHQgPSBOVUxMOwo+ICsgICAgfQo+ICsKPiArICAgIHJlcyA9IGFtZl9j dHgtPmZhY3RvcnktPnBWdGJsLT5HZXRUcmFjZShhbWZfY3R4LT5mYWN0b3J5LCAmdHJhY2UpOwo+ ICsgICAgaWYgKHJlcyA9PSBBTUZfT0spIHsKPiArICAgICAgICB0cmFjZS0+cFZ0YmwtPlVucmVn aXN0ZXJXcml0ZXIodHJhY2UsIEZGTVBFR19BTUZfV1JJVEVSX0lEKTsKPiArICAgIH0KPiArCj4g KyAgICBpZihhbWZfY3R4LT5saWJyYXJ5KSB7Cj4gKyAgICAgICAgZGxjbG9zZShhbWZfY3R4LT5s aWJyYXJ5KTsKPiArICAgICAgICBhbWZfY3R4LT5saWJyYXJ5ID0gTlVMTDsKPiArICAgIH0KPiAr ICAgIGlmIChhbWZfY3R4LT50cmFjZV93cml0ZXIpIHsKPiArICAgICAgICBhbWZfd3JpdGVyX2Zy ZWUoYW1mX2N0eC0+dHJhY2Vfd3JpdGVyKTsKPiArICAgIH0KPiArCj4gKyAgICBhbWZfY3R4LT52 ZXJzaW9uID0gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBhbWZfZGV2aWNlX2luaXQoQVZIV0Rl dmljZUNvbnRleHQgKmN0eCkKPiArewo+ICsgICAgQVZBTUZEZXZpY2VDb250ZXh0ICphbWZfY3R4 ID0gY3R4LT5od2N0eDsKPiArICAgIEFNRkNvbnRleHQxICpjb250ZXh0MSA9IE5VTEw7Cj4gKyAg ICBBTUZfUkVTVUxUIHJlczsKPiArCj4gKyNpZmRlZiBfV0lOMzIKPiArICAgIHJlcyA9IGFtZl9j dHgtPmNvbnRleHQtPnBWdGJsLT5Jbml0RFgxMShhbWZfY3R4LT5jb250ZXh0LCBOVUxMLCBBTUZf RFgxMV8xKTsKPiArICAgIGlmIChyZXMgPT0gQU1GX09LIHx8IHJlcyA9PSBBTUZfQUxSRUFEWV9J TklUSUFMSVpFRCkgewo+ICsgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19WRVJCT1NFLCAiQU1G IGluaXRpYWxpc2F0aW9uIHN1Y2NlZWRlZCB2aWEgRDNEMTEuXG4iKTsKPiArICAgIH0gZWxzZSB7 Cj4gKyAgICAgICAgcmVzID0gYW1mX2N0eC0+Y29udGV4dC0+cFZ0YmwtPkluaXREWDkoYW1mX2N0 eC0+Y29udGV4dCwgTlVMTCk7Cj4gKyAgICAgICAgaWYgKHJlcyA9PSBBTUZfT0spIHsKPiArICAg ICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX1ZFUkJPU0UsICJBTUYgaW5pdGlhbGlzYXRpb24g c3VjY2VlZGVkIHZpYSBEM0Q5LlxuIik7Cj4gKyAgICAgICAgfSBlbHNlIHsKPiArI2VuZGlmCj4g KyAgICAgICAgICAgIEFNRkd1aWQgZ3VpZCA9IElJRF9BTUZDb250ZXh0MSgpOwo+ICsgICAgICAg ICAgICByZXMgPSBhbWZfY3R4LT5jb250ZXh0LT5wVnRibC0+UXVlcnlJbnRlcmZhY2UoYW1mX2N0 eC0+Y29udGV4dCwgJmd1aWQsICh2b2lkKiopJmNvbnRleHQxKTsKPiArICAgICAgICAgICAgQU1G X1JFVFVSTl9JRl9GQUxTRShjdHgsIHJlcyA9PSBBTUZfT0ssIEFWRVJST1JfVU5LTk9XTiwgIkNy ZWF0ZUNvbnRleHQxKCkgZmFpbGVkIHdpdGggZXJyb3IgJWRcbiIsIHJlcyk7Cj4gKwo+ICsgICAg ICAgICAgICByZXMgPSBjb250ZXh0MS0+cFZ0YmwtPkluaXRWdWxrYW4oY29udGV4dDEsIE5VTEwp Owo+ICsgICAgICAgICAgICBjb250ZXh0MS0+cFZ0YmwtPlJlbGVhc2UoY29udGV4dDEpOwo+ICsg ICAgICAgICAgICBpZiAocmVzICE9IEFNRl9PSyAmJiByZXMgIT0gQU1GX0FMUkVBRFlfSU5JVElB TElaRUQpIHsKPiArICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gQU1GX05PVF9TVVBQT1JURUQp Cj4gKyAgICAgICAgICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiQU1GIHZp YSBWdWxrYW4gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgZ2l2ZW4gZGV2aWNlLlxuIik7Cj4gKyAg ICAgICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFW X0xPR19FUlJPUiwgIkFNRiBmYWlsZWQgdG8gaW5pdGlhbGlzZSBvbiB0aGUgZ2l2ZW4gVnVsa2Fu IGRldmljZTogJWQuXG4iLCByZXMpOwo+ICsgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9S KEVOT1NZUyk7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZf TE9HX1ZFUkJPU0UsICJBTUYgaW5pdGlhbGlzYXRpb24gc3VjY2VlZGVkIHZpYSBWdWxrYW4uXG4i KTsKPiArI2lmZGVmIF9XSU4zMgo+ICsgICAgICAgIH0KPiArICAgICB9Cj4gKyNlbmRpZgo+ICsg ICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFtZl9sb2FkX2xpYnJhcnkoQVZB TUZEZXZpY2VDb250ZXh0KiBhbWZfY3R4LCAgdm9pZCogYXZjbCkKPiArewo+ICsgICAgQU1GSW5p dF9GbiAgICAgICAgIGluaXRfZnVuOwo+ICsgICAgQU1GUXVlcnlWZXJzaW9uX0ZuIHZlcnNpb25f ZnVuOwo+ICsgICAgQU1GX1JFU1VMVCAgICAgICAgIHJlczsKPiArCj4gKyAgICBhbWZfY3R4LT5s aWJyYXJ5ID0gZGxvcGVuKEFNRl9ETExfTkFNRUEsIFJUTERfTk9XIHwgUlRMRF9MT0NBTCk7Cj4g KyAgICBBTUZfUkVUVVJOX0lGX0ZBTFNFKGF2Y2wsIGFtZl9jdHgtPmxpYnJhcnkgIT0gTlVMTCwK PiArICAgICAgICBBVkVSUk9SX1VOS05PV04sICJETEwgJXMgZmFpbGVkIHRvIG9wZW5cbiIsIEFN Rl9ETExfTkFNRUEpOwo+ICsKPiArICAgIGluaXRfZnVuID0gKEFNRkluaXRfRm4pZGxzeW0oYW1m X2N0eC0+bGlicmFyeSwgQU1GX0lOSVRfRlVOQ1RJT05fTkFNRSk7Cj4gKyAgICBBTUZfUkVUVVJO X0lGX0ZBTFNFKGF2Y2wsIGluaXRfZnVuICE9IE5VTEwsIEFWRVJST1JfVU5LTk9XTiwgIkRMTCAl cyBmYWlsZWQgdG8gZmluZCBmdW5jdGlvbiAlc1xuIiwgQU1GX0RMTF9OQU1FQSwgQU1GX0lOSVRf RlVOQ1RJT05fTkFNRSk7Cj4gKwo+ICsgICAgdmVyc2lvbl9mdW4gPSAoQU1GUXVlcnlWZXJzaW9u X0ZuKWRsc3ltKGFtZl9jdHgtPmxpYnJhcnksIEFNRl9RVUVSWV9WRVJTSU9OX0ZVTkNUSU9OX05B TUUpOwo+ICsgICAgQU1GX1JFVFVSTl9JRl9GQUxTRShhdmNsLCB2ZXJzaW9uX2Z1biAhPSBOVUxM LCBBVkVSUk9SX1VOS05PV04sICJETEwgJXMgZmFpbGVkIHRvIGZpbmQgZnVuY3Rpb24gJXNcbiIs IEFNRl9ETExfTkFNRUEsIEFNRl9RVUVSWV9WRVJTSU9OX0ZVTkNUSU9OX05BTUUpOwo+ICsKPiAr ICAgIHJlcyA9IHZlcnNpb25fZnVuKCZhbWZfY3R4LT52ZXJzaW9uKTsKPiArICAgIEFNRl9SRVRV Uk5fSUZfRkFMU0UoYXZjbCwgcmVzID09IEFNRl9PSywgQVZFUlJPUl9VTktOT1dOLCAiJXMgZmFp bGVkIHdpdGggZXJyb3IgJWRcbiIsIEFNRl9RVUVSWV9WRVJTSU9OX0ZVTkNUSU9OX05BTUUsIHJl cyk7Cj4gKyAgICByZXMgPSBpbml0X2Z1bihBTUZfRlVMTF9WRVJTSU9OLCAmYW1mX2N0eC0+ZmFj dG9yeSk7Cj4gKyAgICBBTUZfUkVUVVJOX0lGX0ZBTFNFKGF2Y2wsIHJlcyA9PSBBTUZfT0ssIEFW RVJST1JfVU5LTk9XTiwgIiVzIGZhaWxlZCB3aXRoIGVycm9yICVkXG4iLCBBTUZfSU5JVF9GVU5D VElPTl9OQU1FLCByZXMpOwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg YW1mX2RldmljZV9jcmVhdGUoQVZIV0RldmljZUNvbnRleHQgKmRldmljZV9jdHgsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRldmljZSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQVZEaWN0aW9uYXJ5ICpvcHRzLCBpbnQgZmxhZ3MpCj4gK3sK PiArICAgIEFWQU1GRGV2aWNlQ29udGV4dCAgICAgICAgKmN0eCA9IGRldmljZV9jdHgtPmh3Y3R4 Owo+ICsgICAgQU1GVHJhY2UgICAgICAgICAgICp0cmFjZTsKPiArICAgIGludCByZXQ7Cj4gKyAg ICBpZiAoKHJldCA9IGFtZl9sb2FkX2xpYnJhcnkoY3R4LCBkZXZpY2VfY3R4KSkgPT0gMCkgewo+ ICsgICAgICAgIHJldCA9IGN0eC0+ZmFjdG9yeS0+cFZ0YmwtPkdldFRyYWNlKGN0eC0+ZmFjdG9y eSwgJnRyYWNlKTsKPiArICAgICAgICBpZiAocmV0ID09IEFNRl9PSykgewo+ICsgICAgICAgICAg ICBpbnQgbGV2ZWxfZmYgPSBhdl9sb2dfZ2V0X2xldmVsKCk7Cj4gKyAgICAgICAgICAgIGludCBs ZXZlbF9hbWYgPSBBTUZfVFJBQ0VfVFJBQ0U7Cj4gKyAgICAgICAgICAgIGFtZl9ib29sIGVuYWJs ZV9sb2cgPSB0cnVlOwo+ICsgICAgICAgICAgICBzd2l0Y2gobGV2ZWxfZmYpCj4gKyAgICAgICAg ICAgIHsKPiArICAgICAgICAgICAgY2FzZSBBVl9MT0dfUVVJRVQ6Cj4gKyAgICAgICAgICAgICAg ICBsZXZlbF9hbWYgPSBBTUZfVFJBQ0VfRVJST1I7Cj4gKyAgICAgICAgICAgICAgICBlbmFibGVf bG9nID0gZmFsc2U7Cj4gKyAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgY2Fz ZSBBVl9MT0dfUEFOSUM6Cj4gKyAgICAgICAgICAgIGNhc2UgQVZfTE9HX0ZBVEFMOgo+ICsgICAg ICAgICAgICBjYXNlIEFWX0xPR19FUlJPUjoKPiArICAgICAgICAgICAgICAgIGxldmVsX2FtZiA9 IEFNRl9UUkFDRV9FUlJPUjsKPiArICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAg ICBjYXNlIEFWX0xPR19XQVJOSU5HOgo+ICsgICAgICAgICAgICBjYXNlIEFWX0xPR19JTkZPOgo+ ICsgICAgICAgICAgICAgICAgbGV2ZWxfYW1mID0gQU1GX1RSQUNFX1dBUk5JTkc7Cj4gKyAgICAg ICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgY2FzZSBBVl9MT0dfVkVSQk9TRToKPiAr ICAgICAgICAgICAgICAgIGxldmVsX2FtZiA9IEFNRl9UUkFDRV9JTkZPOwo+ICsgICAgICAgICAg ICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgIGNhc2UgQVZfTE9HX0RFQlVHOgo+ICsgICAgICAg ICAgICAgICAgbGV2ZWxfYW1mID0gQU1GX1RSQUNFX0RFQlVHOwo+ICsgICAgICAgICAgICAgICAg YnJlYWs7Cj4gKyAgICAgICAgICAgIGNhc2UgQVZfTE9HX1RSQUNFOgo+ICsgICAgICAgICAgICAg ICAgbGV2ZWxfYW1mID0gQU1GX1RSQUNFX1RSQUNFOwo+ICsgICAgICAgICAgICAgICAgYnJlYWs7 Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgaWYoY3R4LT52ZXJzaW9uID09IEFNRl9N QUtFX0ZVTExfVkVSU0lPTigxLCA0LCAzNSwgMCkpey8vIGdldCBhcm91bmQgYSBidWcgaW4gdHJh Y2UgaW4gQU1GIHJ1bnRpbWUgZHJpdmVyIDI0LjIwCj4gKyAgICAgICAgICAgICAgICBsZXZlbF9h bWYgPSBBTUZfVFJBQ0VfV0FSTklORzsKPiArICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAg ICAgdHJhY2UtPnBWdGJsLT5FbmFibGVXcml0ZXIodHJhY2UsIEFNRl9UUkFDRV9XUklURVJfQ09O U09MRSwgMCk7Cj4gKyAgICAgICAgICAgIHRyYWNlLT5wVnRibC0+U2V0R2xvYmFsTGV2ZWwodHJh Y2UsIGxldmVsX2FtZik7Cj4gKwo+ICsgICAgICAgICAgICAvLyBjb25uZWN0IEFNRiBsb2dnZXIg dG8gYXZfbG9nCj4gKyAgICAgICAgICAgIGN0eC0+dHJhY2Vfd3JpdGVyID0gYW1mX3dyaXRlcl9h bGxvYyhkZXZpY2VfY3R4KTsKPiArICAgICAgICAgICAgdHJhY2UtPnBWdGJsLT5SZWdpc3Rlcldy aXRlcih0cmFjZSwgRkZNUEVHX0FNRl9XUklURVJfSUQsIChBTUZUcmFjZVdyaXRlciopY3R4LT50 cmFjZV93cml0ZXIsIDEpOwo+ICsgICAgICAgICAgICB0cmFjZS0+cFZ0YmwtPlNldFdyaXRlckxl dmVsKHRyYWNlLCBGRk1QRUdfQU1GX1dSSVRFUl9JRCwgbGV2ZWxfYW1mKTsKPiArICAgICAgICAg ICAgdHJhY2UtPnBWdGJsLT5FbmFibGVXcml0ZXIodHJhY2UsIEZGTVBFR19BTUZfV1JJVEVSX0lE LCBlbmFibGVfbG9nKTsKPiArICAgICAgICAgICAgdHJhY2UtPnBWdGJsLT5TZXRXcml0ZXJMZXZl bCh0cmFjZSwgQU1GX1RSQUNFX1dSSVRFUl9ERUJVR19PVVRQVVQsIGxldmVsX2FtZik7Cj4gKyAg ICAgICAgICAgIHRyYWNlLT5wVnRibC0+RW5hYmxlV3JpdGVyKHRyYWNlLCBBTUZfVFJBQ0VfV1JJ VEVSX0RFQlVHX09VVFBVVCwgZW5hYmxlX2xvZyk7Cj4gKyAgICAgICAgfQo+ICsKPiArCj4gKyAg ICAgICAgcmV0ID0gY3R4LT5mYWN0b3J5LT5wVnRibC0+Q3JlYXRlQ29udGV4dChjdHgtPmZhY3Rv cnksICZjdHgtPmNvbnRleHQpOwo+ICsgICAgICAgIGlmIChyZXQgPT0gQU1GX09LKQo+ICsgICAg ICAgICAgICByZXR1cm4gMDsKPiArICAgICAgICBhdl9sb2coZGV2aWNlX2N0eCwgQVZfTE9HX0VS Uk9SLCAiQ3JlYXRlQ29udGV4dCgpIGZhaWxlZCB3aXRoIGVycm9yICVkLlxuIiwgcmV0KTsKPiAr ICAgIH0KPiArICAgIGFtZl9kZXZpY2VfdW5pbml0KGRldmljZV9jdHgpOwo+ICsgICAgcmV0dXJu IHJldDsKPiArfQo+ICsKPiArI2lmIENPTkZJR19EWFZBMgo+ICtzdGF0aWMgaW50IGFtZl9pbml0 X2Zyb21fZHh2YTJfZGV2aWNlKEFWQU1GRGV2aWNlQ29udGV4dCAqIGFtZl9jdHgsIEFWRFhWQTJE ZXZpY2VDb250ZXh0ICpod2N0eCkKPiArewo+ICsgICAgSURpcmVjdDNERGV2aWNlOSAgICAqZGV2 aWNlOwo+ICsgICAgSEFORExFICAgICAgICAgICAgICBkZXZpY2VfaGFuZGxlOwo+ICsgICAgSFJF U1VMVCAgICAgICAgICAgICBocjsKPiArICAgIEFNRl9SRVNVTFQgICAgICAgICAgcmVzOwo+ICsg ICAgaW50IHJldDsKPiArCj4gKyAgICBociA9IElEaXJlY3QzRERldmljZU1hbmFnZXI5X09wZW5E ZXZpY2VIYW5kbGUoaHdjdHgtPmRldm1nciwgJmRldmljZV9oYW5kbGUpOwo+ICsgICAgaWYgKEZB SUxFRChocikpIHsKPiArICAgICAgICBhdl9sb2coaHdjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxl ZCB0byBvcGVuIGRldmljZSBoYW5kbGUgZm9yIERpcmVjdDNEOSBkZXZpY2U6ICVseC5cbiIsICh1 bnNpZ25lZCBsb25nKWhyKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKPiAr ICAgIH0KPiArCj4gKyAgICBociA9IElEaXJlY3QzRERldmljZU1hbmFnZXI5X0xvY2tEZXZpY2Uo aHdjdHgtPmRldm1nciwgZGV2aWNlX2hhbmRsZSwgJmRldmljZSwgRkFMU0UpOwo+ICsgICAgaWYg KFNVQ0NFRURFRChocikpIHsKPiArICAgICAgICBJRGlyZWN0M0REZXZpY2VNYW5hZ2VyOV9Vbmxv Y2tEZXZpY2UoaHdjdHgtPmRldm1nciwgZGV2aWNlX2hhbmRsZSwgRkFMU0UpOwo+ICsgICAgICAg IHJldCA9IDA7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIGF2X2xvZyhod2N0eCwgQVZfTE9H X0VSUk9SLCAiRmFpbGVkIHRvIGxvY2sgZGV2aWNlIGhhbmRsZSBmb3IgRGlyZWN0M0Q5IGRldmlj ZTogJWx4LlxuIiwgKHVuc2lnbmVkIGxvbmcpaHIpOwo+ICsgICAgICAgIHJldCA9IEFWRVJST1Jf RVhURVJOQUw7Cj4gKyAgICB9Cj4gKwo+ICsKPiArICAgIElEaXJlY3QzRERldmljZU1hbmFnZXI5 X0Nsb3NlRGV2aWNlSGFuZGxlKGh3Y3R4LT5kZXZtZ3IsIGRldmljZV9oYW5kbGUpOwo+ICsKPiAr ICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKwo+ICsgICAgcmVzID0g YW1mX2N0eC0+Y29udGV4dC0+cFZ0YmwtPkluaXREWDkoYW1mX2N0eC0+Y29udGV4dCwgZGV2aWNl KTsKPiArCj4gKyAgICBJRGlyZWN0M0REZXZpY2U5X1JlbGVhc2UoZGV2aWNlKTsKPiArCj4gKyAg ICBpZiAocmVzICE9IEFNRl9PSyAmJiByZXMgIT0gQU1GX0FMUkVBRFlfSU5JVElBTElaRUQpIHsK PiArICAgICAgICBpZiAocmVzID09IEFNRl9OT1RfU1VQUE9SVEVEKQo+ICsgICAgICAgICAgICBh dl9sb2coaHdjdHgsIEFWX0xPR19FUlJPUiwgIkFNRiB2aWEgRDNEOSBpcyBub3Qgc3VwcG9ydGVk IG9uIHRoZSBnaXZlbiBkZXZpY2UuXG4iKTsKPiArICAgICAgICBlbHNlCj4gKyAgICAgICAgICAg IGF2X2xvZyhod2N0eCwgQVZfTE9HX0VSUk9SLCAiQU1GIGZhaWxlZCB0byBpbml0aWFsaXNlIG9u IGdpdmVuIEQzRDkgZGV2aWNlOiAlZC5cbiIsIHJlcyk7Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJS T1IoRU5PREVWKTsKPiArICAgIH0KPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKyNlbmRpZgo+ICsK PiArI2lmIENPTkZJR19EM0QxMVZBCj4gK3N0YXRpYyBpbnQgYW1mX2luaXRfZnJvbV9kM2QxMV9k ZXZpY2UoQVZBTUZEZXZpY2VDb250ZXh0KiBhbWZfY3R4LCBBVkQzRDExVkFEZXZpY2VDb250ZXh0 ICpod2N0eCkKPiArewo+ICsgICAgQU1GX1JFU1VMVCByZXM7Cj4gKyAgICByZXMgPSBhbWZfY3R4 LT5jb250ZXh0LT5wVnRibC0+SW5pdERYMTEoYW1mX2N0eC0+Y29udGV4dCwgaHdjdHgtPmRldmlj ZSwgQU1GX0RYMTFfMSk7Cj4gKyAgICBpZiAocmVzICE9IEFNRl9PSyAmJiByZXMgIT0gQU1GX0FM UkVBRFlfSU5JVElBTElaRUQpIHsKPiArICAgICAgICBpZiAocmVzID09IEFNRl9OT1RfU1VQUE9S VEVEKQo+ICsgICAgICAgICAgICBhdl9sb2coaHdjdHgsIEFWX0xPR19FUlJPUiwgIkFNRiB2aWEg RDNEMTEgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgZ2l2ZW4gZGV2aWNlLlxuIik7Cj4gKyAgICAg ICAgZWxzZQo+ICsgICAgICAgICAgICBhdl9sb2coaHdjdHgsIEFWX0xPR19FUlJPUiwgIkFNRiBm YWlsZWQgdG8gaW5pdGlhbGlzZSBvbiB0aGUgZ2l2ZW4gRDNEMTEgZGV2aWNlOiAlZC5cbiIsIHJl cyk7Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PREVWKTsKPiArICAgIH0KPiArICAgIHJl dHVybiAwOwo+ICt9Cj4gKyNlbmRpZgo+ICsKPiArc3RhdGljIGludCBhbWZfZGV2aWNlX2Rlcml2 ZShBVkhXRGV2aWNlQ29udGV4dCAqZGV2aWNlX2N0eCwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQVZIV0RldmljZUNvbnRleHQgKmNoaWxkX2RldmljZV9jdHgsIEFWRGljdGlvbmFy eSAqb3B0cywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKQo+ICt7 Cj4gKyNpZiBDT05GSUdfRFhWQTIgfHwgQ09ORklHX0QzRDExVkEKPiArICAgIEFWQU1GRGV2aWNl Q29udGV4dCAgICAgICAgKmFtZl9jdHggPSBkZXZpY2VfY3R4LT5od2N0eDsKPiArI2VuZGlmCj4g KyAgICBpbnQgcmV0Owo+ICsKPiArICAgIHJldCA9IGFtZl9kZXZpY2VfY3JlYXRlKGRldmljZV9j dHgsICIiLCBvcHRzLCBmbGFncyk7Cj4gKyAgICBpZihyZXQgPCAwKQo+ICsgICAgICAgIHJldHVy biByZXQ7Cj4gKwo+ICsgICAgc3dpdGNoIChjaGlsZF9kZXZpY2VfY3R4LT50eXBlKSB7Cj4gKwo+ ICsjaWYgQ09ORklHX0RYVkEyCj4gKyAgICBjYXNlIEFWX0hXREVWSUNFX1RZUEVfRFhWQTI6IHsK PiArICAgICAgICAgICAgQVZEWFZBMkRldmljZUNvbnRleHQgKmNoaWxkX2RldmljZV9od2N0eCA9 IGNoaWxkX2RldmljZV9jdHgtPmh3Y3R4Owo+ICsgICAgICAgICAgICByZXR1cm4gYW1mX2luaXRf ZnJvbV9keHZhMl9kZXZpY2UoYW1mX2N0eCwgY2hpbGRfZGV2aWNlX2h3Y3R4KTsKPiArICAgICAg ICB9Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyNlbmRpZgo+ICsKPiArI2lmIENPTkZJR19EM0QxMVZB Cj4gKyAgICBjYXNlIEFWX0hXREVWSUNFX1RZUEVfRDNEMTFWQTogewo+ICsgICAgICAgICAgICBB VkQzRDExVkFEZXZpY2VDb250ZXh0ICpjaGlsZF9kZXZpY2VfaHdjdHggPSBjaGlsZF9kZXZpY2Vf Y3R4LT5od2N0eDsKPiArICAgICAgICAgICAgcmV0dXJuIGFtZl9pbml0X2Zyb21fZDNkMTFfZGV2 aWNlKGFtZl9jdHgsIGNoaWxkX2RldmljZV9od2N0eCk7Cj4gKyAgICAgICAgfQo+ICsgICAgICAg IGJyZWFrOwo+ICsjZW5kaWYKPiArICAgIGRlZmF1bHQ6IHsKPiArICAgICAgICAgICAgYXZfbG9n KGNoaWxkX2RldmljZV9jdHgsIEFWX0xPR19FUlJPUiwgIkFNRiBpbml0aWFsaXNhdGlvbiBmcm9t IGEgJXMgZGV2aWNlIGlzIG5vdCBzdXBwb3J0ZWQuXG4iLAo+ICsgICAgICAgICAgICAgICAgYXZf aHdkZXZpY2VfZ2V0X3R5cGVfbmFtZShjaGlsZF9kZXZpY2VfY3R4LT50eXBlKSk7Cj4gKyAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1NZUyk7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsg ICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2NvbnN0IEhXQ29udGV4dFR5cGUgZmZfaHdjb250ZXh0 X3R5cGVfYW1mID0gewo+ICsgICAgLnR5cGUgICAgICAgICAgICAgICAgID0gQVZfSFdERVZJQ0Vf VFlQRV9BTUYsCj4gKyAgICAubmFtZSAgICAgICAgICAgICAgICAgPSAiQU1GIiwKPiArCj4gKyAg ICAuZGV2aWNlX2h3Y3R4X3NpemUgICAgPSBzaXplb2YoQVZBTUZEZXZpY2VDb250ZXh0KSwKPiAr ICAgIC5mcmFtZXNfaHdjdHhfc2l6ZSAgICA9IHNpemVvZihBTUZGcmFtZXNDb250ZXh0KSwKPiAr Cj4gKyAgICAuZGV2aWNlX2NyZWF0ZSAgICAgICAgPSBhbWZfZGV2aWNlX2NyZWF0ZSwKPiArICAg IC5kZXZpY2VfZGVyaXZlICAgICAgICA9IGFtZl9kZXZpY2VfZGVyaXZlLAo+ICsgICAgLmRldmlj ZV9pbml0ICAgICAgICAgID0gYW1mX2RldmljZV9pbml0LAo+ICsgICAgLmRldmljZV91bmluaXQg ICAgICAgID0gYW1mX2RldmljZV91bmluaXQsCj4gKyAgICAuZnJhbWVzX2dldF9jb25zdHJhaW50 cyA9IGFtZl9mcmFtZXNfZ2V0X2NvbnN0cmFpbnRzLAo+ICsgICAgLmZyYW1lc19pbml0ICAgICAg ICAgID0gYW1mX2ZyYW1lc19pbml0LAo+ICsgICAgLmZyYW1lc19nZXRfYnVmZmVyICAgID0gYW1m X2dldF9idWZmZXIsCj4gKyAgICAudHJhbnNmZXJfZ2V0X2Zvcm1hdHMgPSBhbWZfdHJhbnNmZXJf Z2V0X2Zvcm1hdHMsCj4gKyAgICAudHJhbnNmZXJfZGF0YV90byAgICAgPSBhbWZfdHJhbnNmZXJf ZGF0YV90bywKPiArICAgIC50cmFuc2Zlcl9kYXRhX2Zyb20gICA9IGFtZl90cmFuc2Zlcl9kYXRh X2Zyb20sCj4gKwo+ICsgICAgLnBpeF9mbXRzICAgICAgICAgICAgID0gKGNvbnN0IGVudW0gQVZQ aXhlbEZvcm1hdFtdKXsgQVZfUElYX0ZNVF9BTUZfU1VSRkFDRSwgQVZfUElYX0ZNVF9OT05FIH0s Cj4gK307Cj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9od2NvbnRleHRfYW1mLmggYi9saWJhdnV0 aWwvaHdjb250ZXh0X2FtZi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw MDAwLi41YWQyMjM3Zjc1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmF2dXRpbC9od2NvbnRl eHRfYW1mLmgKPiBAQCAtMCwwICsxLDQ1IEBACj4gKy8qCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEZGbXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIu MSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K PiArICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK PiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArCj4gKyNp Zm5kZWYgQVZVVElMX0hXQ09OVEVYVF9BTUZfSAo+ICsjZGVmaW5lIEFWVVRJTF9IV0NPTlRFWFRf QU1GX0gKPiArCj4gKyNpbmNsdWRlICJwaXhmbXQuaCIKPiArI2luY2x1ZGUgImh3Y29udGV4dC5o Igo+ICsjaW5jbHVkZSA8QU1GL2NvcmUvRmFjdG9yeS5oPgo+ICsjaW5jbHVkZSA8QU1GL2NvcmUv Q29udGV4dC5oPgo+ICsjaW5jbHVkZSA8QU1GL2NvcmUvVHJhY2UuaD4KPiArI2luY2x1ZGUgPEFN Ri9jb3JlL0RlYnVnLmg+Cj4gKwo+ICsvKioKPiArICogVGhpcyBzdHJ1Y3QgaXMgYWxsb2NhdGVk IGFzIEFWSFdEZXZpY2VDb250ZXh0Lmh3Y3R4Cj4gKyAqLwo+ICt0eXBlZGVmIHN0cnVjdCBBVkFN RkRldmljZUNvbnRleHQgewo+ICsgICAgdm9pZCAqICAgICAgICAgICAgICBsaWJyYXJ5Owo+ICsg ICAgQU1GRmFjdG9yeSAgICAgICAgICpmYWN0b3J5Owo+ICsgICAgdm9pZCAgICAgICAgICAgICAg ICp0cmFjZV93cml0ZXI7Cj4gKwo+ICsgICAgaW50NjRfdCAgICAgICAgICAgIHZlcnNpb247IC8v LzwgdmVyc2lvbiBvZiBBTUYgcnVudGltZQo+ICsgICAgQU1GQ29udGV4dCAgICAgICAgICpjb250 ZXh0Owo+ICt9IEFWQU1GRGV2aWNlQ29udGV4dDsKPiArCj4gK2VudW0gQU1GX1NVUkZBQ0VfRk9S TUFUIGF2X2F2X3RvX2FtZl9mb3JtYXQoZW51bSBBVlBpeGVsRm9ybWF0IGZtdCk7Cj4gK2VudW0g QVZQaXhlbEZvcm1hdCBhdl9hbWZfdG9fYXZfZm9ybWF0KGVudW0gQU1GX1NVUkZBQ0VfRk9STUFU IGZtdCk7Cj4gKwo+ICsjZW5kaWYgLyogQVZVVElMX0hXQ09OVEVYVF9BTUZfSCAqLwo+IGRpZmYg LS1naXQgYS9saWJhdnV0aWwvaHdjb250ZXh0X2FtZl9pbnRlcm5hbC5oIGIvbGliYXZ1dGlsL2h3 Y29udGV4dF9hbWZfaW50ZXJuYWwuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw MDAwMDAwMC4uYjk5MWYzNTdhNgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJhdnV0aWwvaHdj b250ZXh0X2FtZl9pbnRlcm5hbC5oCj4gQEAgLTAsMCArMSw0NCBAQAo+ICsvKgo+ICsgKiBUaGlz IGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiAr ICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsg KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQo+ICsgKi8K PiArCj4gKwo+ICsjaWZuZGVmIEFWVVRJTF9IV0NPTlRFWFRfQU1GX0lOVEVSTkFMX0gKPiArI2Rl ZmluZSBBVlVUSUxfSFdDT05URVhUX0FNRl9JTlRFUk5BTF9ICj4gKyNpbmNsdWRlIDxBTUYvY29y ZS9GYWN0b3J5Lmg+Cj4gKyNpbmNsdWRlIDxBTUYvY29yZS9Db250ZXh0Lmg+Cj4gKwo+ICsvKioK PiArKiBFcnJvciBoYW5kbGluZyBoZWxwZXIKPiArKi8KPiArI2RlZmluZSBBTUZfUkVUVVJOX0lG X0ZBTFNFKGF2Y3R4LCBleHAsIHJldF92YWx1ZSwgLyptZXNzYWdlLCovIC4uLikgXAo+ICsgICAg aWYgKCEoZXhwKSkgeyBcCj4gKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsIF9f VkFfQVJHU19fKTsgXAo+ICsgICAgICAgIHJldHVybiByZXRfdmFsdWU7IFwKPiArICAgIH0KPiAr Cj4gKyNkZWZpbmUgQU1GX0dPVE9fRkFJTF9JRl9GQUxTRShhdmN0eCwgZXhwLCByZXRfdmFsdWUs IC8qbWVzc2FnZSwqLyAuLi4pIFwKPiArICAgIGlmICghKGV4cCkpIHsgXAo+ICsgICAgICAgIGF2 X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCBfX1ZBX0FSR1NfXyk7IFwKPiArICAgICAgICByZXQg PSByZXRfdmFsdWU7IFwKPiArICAgICAgICBnb3RvIGZhaWw7IFwKPiArICAgIH0KPiArCgpOaXQ6 IE5vdCBhIGZhbiBvZiB0aGVzZSBlcnJvciBoYW5kbGluZyBtYWNyb3MgcGVyc29uYWxseS4KKEFs c28gSSBkb27igJl0IHRoaW5rIHlvdSBzaG91bGQgbG9nIGZvciBFTk9NRU0pCgo+ICsjZGVmaW5l IEFNRl9USU1FX0JBU0VfUSAgICAgICAgICAoQVZSYXRpb25hbCl7MSwgQU1GX1NFQ09ORH0KPiAr Cj4gKwo+ICsjZW5kaWYgLyogQVZVVElMX0hXQ09OVEVYVF9BTUZfSU5URVJOQUxfSCAqLwo+IFwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvaHdjb250 ZXh0X2ludGVybmFsLmggYi9saWJhdnV0aWwvaHdjb250ZXh0X2ludGVybmFsLmgKPiBpbmRleCBl MzJiNzg2MjM4Li5kYjIzNTc5YzllIDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9od2NvbnRleHRf aW50ZXJuYWwuaAo+ICsrKyBiL2xpYmF2dXRpbC9od2NvbnRleHRfaW50ZXJuYWwuaAo+IEBAIC0x NjMsNSArMTYzLDYgQEAgZXh0ZXJuIGNvbnN0IEhXQ29udGV4dFR5cGUgZmZfaHdjb250ZXh0X3R5 cGVfdmRwYXU7Cj4gIGV4dGVybiBjb25zdCBIV0NvbnRleHRUeXBlIGZmX2h3Y29udGV4dF90eXBl X3ZpZGVvdG9vbGJveDsKPiAgZXh0ZXJuIGNvbnN0IEhXQ29udGV4dFR5cGUgZmZfaHdjb250ZXh0 X3R5cGVfbWVkaWFjb2RlYzsKPiAgZXh0ZXJuIGNvbnN0IEhXQ29udGV4dFR5cGUgZmZfaHdjb250 ZXh0X3R5cGVfdnVsa2FuOwo+ICtleHRlcm4gY29uc3QgSFdDb250ZXh0VHlwZSBmZl9od2NvbnRl eHRfdHlwZV9hbWY7Cj4KPiAgI2VuZGlmIC8qIEFWVVRJTF9IV0NPTlRFWFRfSU5URVJOQUxfSCAq Lwo+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvcGl4ZGVzYy5jIGIvbGliYXZ1dGlsL3BpeGRlc2Mu Ywo+IGluZGV4IDIxNDhiZGQ1ZmIuLjZmZTgzY2QxNmIgMTAwNjQ0Cj4gLS0tIGEvbGliYXZ1dGls L3BpeGRlc2MuYwo+ICsrKyBiL2xpYmF2dXRpbC9waXhkZXNjLmMKPiBAQCAtMjEzMyw2ICsyMTMz LDEwIEBAIHN0YXRpYyBjb25zdCBBVlBpeEZtdERlc2NyaXB0b3IgYXZfcGl4X2ZtdF9kZXNjcmlw dG9yc1tBVl9QSVhfRk1UX05CXSA9IHsKPiAgICAgICAgICAubmFtZSA9ICJjdWRhIiwKPiAgICAg ICAgICAuZmxhZ3MgPSBBVl9QSVhfRk1UX0ZMQUdfSFdBQ0NFTCwKPiAgICAgIH0sCj4gKyAgICBb QVZfUElYX0ZNVF9BTUZfU1VSRkFDRV0gPSB7Cj4gKyAgICAgICAgLm5hbWUgPSAiYW1mIiwKPiAr ICAgICAgICAuZmxhZ3MgPSBBVl9QSVhfRk1UX0ZMQUdfSFdBQ0NFTCwKPiArICAgIH0sCj4gICAg ICBbQVZfUElYX0ZNVF9WWVU0NDRdID0gewo+ICAgICAgICAgIC5uYW1lID0gInZ5dTQ0NCIsCj4g ICAgICAgICAgLm5iX2NvbXBvbmVudHMgPSAzLAo+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvcGl4 Zm10LmggYi9saWJhdnV0aWwvcGl4Zm10LmgKPiBpbmRleCBiMGI2NGIyNzY2Li5hNjRkNDBhZDA3 IDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9waXhmbXQuaAo+ICsrKyBiL2xpYmF2dXRpbC9waXhm bXQuaAo+IEBAIC00NzEsNiArNDcxLDExIEBAIGVudW0gQVZQaXhlbEZvcm1hdCB7Cj4gICAgICBB Vl9QSVhfRk1UX0dSQVlGMTZCRSwgIC8vLzwgSUVFRS03NTQgaGFsZiBwcmVjaXNpb24gWSwgMTZi cHAsIGJpZy1lbmRpYW4KPiAgICAgIEFWX1BJWF9GTVRfR1JBWUYxNkxFLCAgLy8vPCBJRUVFLTc1 NCBoYWxmIHByZWNpc2lvbiBZLCAxNmJwcCwgbGl0dGxlLWVuZGlhbgo+Cj4gKyAgICAvKioKPiAr ICAgICAqIEhXIGFjY2VsZXJhdGlvbiB0aHJvdWdoIEFNRi4gZGF0YVswXSBjb250YWluIEFNRlN1 cmZhY2UgcG9pbnRlcgo+ICsgICAgICovCj4gKyAgICBBVl9QSVhfRk1UX0FNRl9TVVJGQUNFLAo+ ICsKPiAgICAgIEFWX1BJWF9GTVRfTkIgICAgICAgICAvLy88IG51bWJlciBvZiBwaXhlbCBmb3Jt YXRzLCBETyBOT1QgVVNFIFRISVMgaWYgeW91IHdhbnQgdG8gbGluayB3aXRoIHNoYXJlZCBsaWJh diogYmVjYXVzZSB0aGUgbnVtYmVyIG9mIGZvcm1hdHMgbWlnaHQgZGlmZmVyIGJldHdlZW4gdmVy c2lvbnMKPiAgfTsKPgo+IC0tIAo+IDIuNDcuMS53aW5kb3dzLjEKPgo+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcg bGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxt YW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBh Ym92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3Vi amVjdCAidW5zdWJzY3JpYmUiLgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcu b3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8g dW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1 ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==