From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F1F39EEB580 for ; Sat, 9 Sep 2023 14:36:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:References:Cc:To:From:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=VfSaUa9lzaB5cfl1rNNwsQC5p0MACvUfv8XipiUb0ss=; b=sAwyandklpNcyX QKtnSXz3EB1/H378G37daktkMkaisiDD4k4v1NhFlAdEtnSIFtzU/BoLUbP/UiE7Vscaku+WaEId8 8KdjbCLyx2rHyQSG6Jo0ifdae9kLPYlJ7tVf7ZnS0xsQYSQGKk/mzzsxqWrXWhSdDffqw/yuBTj7v 4U1TaIumHJRDxqYNO8eq1IvrNGzte5p9kbpCcaN6KUw9hgBWijhhx65kqW34U8EqvoCsnG82c3vuh qSbAo6OTuHTULVrEG3D3eFIrb2tB/dQpS/pIe6mMhSuUQCxJQ/LlQBIyq6xpaMZsPV/ejlOksEgvg 1mnO3NlY7zAN58wNAxWw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qez3t-00FZ83-3D; Sat, 09 Sep 2023 14:35:50 +0000 Received: from relay2-d.mail.gandi.net ([2001:4b98:dc4:8::222]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qez3n-00FZ7W-0s; Sat, 09 Sep 2023 14:35:47 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 5909A40007; Sat, 9 Sep 2023 14:35:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arinc9.com; s=gm1; t=1694270139; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZgKt0KfRtjy75lA3hgiSgqZA25UH4h9a6kqnq56mzYA=; b=EHCXl5N5pBHPzUqCgESDuhAqERUl/pPg72CH0GEAIDGqVuGRQiCP7esIT89Vj6OTWXQSWy /PlfE/3Mm+/xf7GciPMsRH2MijgHWN6dWgpQdNF6GMiwOp6bIGkIc+7lJ7QHxwKzlLu84M b7GWzkhkzs6heFcUsDm7P3Mn2pqEA5V5EeLWLibdNbXyNRuj2XYeirx2DiKoxipG0PaE02 GWPJ6w5GAZ+qcH0o77H+QIts5F5OapCebcSjStlN0+PzoKldKnNkku7uk0vXdHog/Mwm4K onOzcOjGc3XtnPP+Tmft2qQedop2p2tS8PYsFyffUGj3+pg7I4VYD23luW9o9A== Message-ID: Date: Sat, 9 Sep 2023 17:35:27 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/4] dt-bindings: net: dsa: document internal MDIO bus From: =?UTF-8?B?QXLEsW7DpyDDnE5BTA==?= To: Vladimir Oltean Cc: Andrew Lunn , Florian Fainelli , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Woojung Huh , UNGLinuxDriver@microchip.com, Linus Walleij , =?UTF-8?Q?Alvin_=C5=A0ipraga?= , Daniel Golle , Landen Chao , DENG Qingfang , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , mithat.guner@xeront.com, erkin.bozoglu@xeront.com, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org References: <20230812091708.34665-3-arinc.unal@arinc9.com> <47b61929-5c2d-4906-b153-2046a94858c8@arinc9.com> <47b61929-5c2d-4906-b153-2046a94858c8@arinc9.com> <20230813112026.ohsx6srbt2staxma@skbuf> <8a8e14f1-0493-4298-a2cc-6e7ae7929334@arinc9.com> <20230813190157.4y3zoro53qsz43pe@skbuf> <20230814143601.mnpxtcm2zybnbvoh@skbuf> <0cee0928-74c9-4048-8cd8-70bfbfafd9b2@arinc9.com> <20230827121235.zog4c3ehu2cyd3jy@skbuf> <676d1a2b-6ffa-4aff-8bed-a749c373f5b3@arinc9.com> <87325ce9-595a-4dda-a6a1-b5927d25719b@arinc9.com> Content-Language: en-US In-Reply-To: <87325ce9-595a-4dda-a6a1-b5927d25719b@arinc9.com> X-GND-Sasl: arinc.unal@arinc9.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230909_073543_614450_36BFD234 X-CRM114-Status: GOOD ( 45.37 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gOS4wOS4yMDIzIDExOjUzLCBBcsSxbsOnIMOcTkFMIHdyb3RlOgo+IE9uIDQuMDkuMjAyMyAx NDozMywgQXLEsW7DpyDDnE5BTCB3cm90ZToKPj4gSGV5IFZsYWRpbWlyLAo+Pgo+PiBPbiAyNy4w OC4yMDIzIDE1OjEyLCBWbGFkaW1pciBPbHRlYW4gd3JvdGU6Cj4+PiBIaSBBcsSxbsOnLAo+Pj4K Pj4+IEkgYW0gb24gdmFjYXRpb24gYW5kIEkgd2lsbCBqdXN0IHJlcGx5IHdpdGggc29tZSBjbGFy aWZpY2F0aW9uIGFzcGVjdHMsCj4+PiB3aXRob3V0IGhhdmluZyBkb25lIGFueSBmdXJ0aGVyIHJl c2VhcmNoIG9uIHRoZSB0b3BpYyBzaW5jZSBteSBsYXN0IHJlcGx5Lgo+Pj4KPj4+IE9uIFN1biwg QXVnIDI3LCAyMDIzIGF0IDExOjMzOjE2QU0gKzAzMDAsIEFyxLFuw6cgw5xOQUwgd3JvdGU6Cj4+ Pj4gQmVmb3JlIEkgY29udGludWUgY29tbWVudGluZywgSSdkIGxpa2UgdG8gc3RhdGUgbXkgdW5k ZXJzdGFuZGluZyBzbyB3ZSBjYW4KPj4+PiBtYWtlIHN1cmUgd2UncmUgb24gdGhlIHNhbWUgcGFn ZS4gSWYgYSBkcml2ZXIgZG9lc24ndCB1c2UKPj4+PiBkcy0+c2xhdmVfbWlpX2J1cywgdGhlIHN3 aXRjaCBpdCBjb250cm9scyBtdXN0IG5vdCBoYXZlIGFueSBpbnRlcm5hbCBNRElPCj4+Pj4gYnVz ZXMuIE90aGVyd2lzZSB0aGUgUEhZcyBvbiB0aGVzZSBidXNlcyBjb3VsZG4ndCBmdW5jdGlvbiwg YW5kIGFuIGltcHJvcGVyCj4+Pj4gZHJpdmVyIGxpa2UgdGhpcyB3b3VsZCBub3QgYmUgb24gdGhl IG9mZmljaWFsIExpbnV4IHNvdXJjZSBjb2RlLgo+Pj4KPj4+IEEgRFNBIHN3aXRjaCBwb3J0LCBs aWtlIGFueSBPRi1iYXNlZCBldGhlcm5ldC1jb250cm9sbGVyIHdoaWNoIHVzZXMKPj4+IHBoeWxp bmssIHdpbGwgdXNlIG9uZSBvZiB0aGUgcGh5LWhhbmRsZSwgZml4ZWQtbGluayBvciBtYW5hZ2Vk IHByb3BlcnRpZXMKPj4+IHRvIGRlc2NyaWJlIHRoZSBpbnRlcmZhY2UgY29ubmVjdGluZyB0aGUg TUFDL01BQy1zaWRlIFBDUyB0byB0aGUgUEhZLgo+Pj4KPj4+IEF0IGl0cyBjb3JlLCBkcy0+c2xh dmVfbWlpX2J1cyBpcyBub3RoaW5nIG1vcmUgdGhhbiBhIG1lY2hhbmlzbSB0byBtYWtlCj4+PiBz ZW5zZSBvZiBkZXZpY2UgdHJlZXMgd2hlcmUgdGhlIGFib3ZlIDMgcGh5bGluayBwcm9wZXJ0aWVz IGFyZSBub3QgcHJlc2VudC4KPj4+Cj4+PiBJdCBpcyBjb21wbGV0ZWx5IGZhbHNlIHRvIHNheSB0 aGF0IGlmIGEgZHJpdmVyIGRvZXNuJ3QgaGF2ZSBkcy0+c2xhdmVfbWlpX2J1cywKPj4+IGl0IG11 c3Qgbm90IGhhdmUgYW4gaW50ZXJuYWwgTURJTyBidXMuIEJlY2F1c2UgeW91IGNvdWxkIHN0aWxs IGRlc2NyaWJlCj4+PiB0aGF0IGludGVybmFsIE1ESU8gYnVzIGxpa2UgYmVsb3csIHdpdGhvdXQg bWFraW5nIGFueSB1c2Ugb2YgdGhlIHNvbGUgcHJvcGVydHkKPj4+IHRoYXQgbWFrZXMgZHMtPnNs YXZlX21paV9idXMgdXNlZnVsIGZyb20gYSBkdC1iaW5kaW5ncyBwZXJzcGVjdGl2ZS4KPj4+Cj4+ PiBldGhlcm5ldC1zd2l0Y2ggewo+Pj4gwqDCoMKgwqBldGhlcm5ldC1wb3J0cyB7Cj4+PiDCoMKg wqDCoMKgwqDCoCBwb3J0QDAgewo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWcgPSA8MD47 Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBoeS1oYW5kbGUgPSA8JnBvcnQwX3BoeT47Cj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBoeS1tb2RlID0gImludGVybmFsIjsKPj4+IMKgwqDC oMKgwqDCoMKgIH07Cj4+PiDCoMKgwqDCoH07Cj4+Pgo+Pj4gwqDCoMKgwqBtZGlvIHsKPj4+IMKg wqDCoMKgwqDCoMKgIHBvcnQwX3BoeTogZXRoZXJuZXQtcGh5QDAgewo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZWcgPSA8MD47Cj4+PiDCoMKgwqDCoMKgwqDCoCB9Owo+Pj4gwqDCoMKgwqB9 Owo+Pj4gfTsKPj4+Cj4+PiBUaGlzIGlzIHRoZSBtb3JlIHVuaXZlcnNhbCB3YXkgb2YgZGVzY3Jp YmluZyB0aGUgcG9ydCBzZXR1cCBpbiBhbgo+Pj4gT0YtYmFzZWQgd2F5LiBUaGVyZSBpcyBhbHNv IHRoZSBEU0Etc3BlY2lmaWMgKGFuZCBvbGQtc3R5bGUsIGJlZm9yZSBwaHlsaW5rKQo+Pj4gd2F5 IG9mIGRlc2NyaWJpbmcgdGhlIHNhbWUgdGhpbmcsIHdoaWNoIHJlbGllcyBvbiB0aGUgbm9uLU9G LWJhc2VkCj4+PiBkcy0+c2xhdmVfbWlpX2J1cywgd2l0aCBiaW5kaW5ncyB0aGF0IGxvb2sgbGlr ZSB0aGlzOgo+Pj4KPj4+IGV0aGVybmV0LXN3aXRjaCB7Cj4+PiDCoMKgwqDCoGV0aGVybmV0LXBv cnRzIHsKPj4+IMKgwqDCoMKgwqDCoMKgIHBvcnRAMCB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJlZyA9IDwwPjsKPj4+IMKgwqDCoMKgwqDCoMKgIH07Cj4+PiDCoMKgwqDCoH07Cj4+PiB9 Owo+Pj4KPj4+IEJ1dCwgSSB3b3VsZCBzYXkgdGhhdCB0aGUgZmlyc3QgdmFyaWFudCBvZiB0aGUg YmluZGluZyBpcyBwcmVmZXJhYmxlLAo+Pj4gc2luY2UgaXQgaXMgbW9yZSB1bml2ZXJzYWwuCj4+ Pgo+Pj4gTm90IGFsbCBzd2l0Y2hlcyB0aGF0IGhhdmUgYW4gaW50ZXJuYWwgTURJTyBidXMgc3Vw cG9ydCB0aGUgc2Vjb25kCj4+PiB2YXJpYW50IG9mIHRoZSBkdC1iaW5kaW5nICh0aGUgb25lcyB0 aGF0IGRvbid0IGhhdmUgZHMtPnNsYXZlX21paV9idXMgZG9uJ3QpLgo+Pj4gQnV0LCB0aGV5IHN1 cHBvcnQgdGhlIHNhbWUgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZSBmaXJzdCBmb3JtLgo+Pgo+ PiBVbmRlcnN0b29kLgo+Pgo+Pj4KPj4+IEZ1cnRoZXJtb3JlLCBvbiB0aGUgVS1Cb290IG1haWxp bmcgbGlzdHMsIEkgaGF2ZSBiZWVuIHN1Z2dlc3RpbmcgdGhhdAo+Pj4gdGhlIERNX0RTQSBkcml2 ZXIgZm9yIG12ODhlNnh4eCBzaG91bGQgbm90IGJvdGhlciB0byBzdXBwb3J0IHRoZSBzZWNvbmQK Pj4+IHZlcnNpb24gb2YgdGhlIGJpbmRpbmcsIHNpbmNlIGl0IGlzIGp1c3QgbW9yZSBjb2RlIHRv IGJlIGFkZGVkIHRvIGhhbmRsZQo+Pj4gYSBjYXNlIHdoaWNoIGNhbiBhbHJlYWR5IGJlIGRlc2Ny aWJlZCB3aXRoIHRoZSBtb3JlIHVuaXZlcnNhbCBmaXJzdCBiaW5kaW5nLgo+Pgo+PiBUaGF0IG1h a2VzIHNlbnNlLgo+Pgo+Pj4KPj4+PiBJJ3ZlIGNoZWNrZWQgbXNjYyx2c2M3NTE0LXN3aXRjaC4g V2hhdCBJIHNlZSBpcywgdGhlIGFyY2hpdGVjdHVyZSBpcyBhbiBTb0MKPj4+PiB3aXRoIGEgc3dp dGNoIGNvbXBvbmVudC4gU2luY2UgdGhlIHN3aXRjaCBjb21wb25lbnQgaXMgbm90IGRlc2lnbmVk IHRvIGJlIGEKPj4+PiBzdGFuZGFsb25lIElDLCB0aGUgTURJTyBidXMgb2YgdGhlIFNvQyBjb3Vs ZCBqdXN0IGFzIHdlbGwgYmUgdXNlZCB3aXRob3V0Cj4+Pj4gdGhlIG5lZWQgdG8gZGVzaWduIGFu IE1ESU8gY29udHJvbGxlciBzcGVjaWZpYyB0byB0aGUgc3dpdGNoIGNvbXBvbmVudCwgdG8KPj4+ PiBtYW5hZ2UgdGhlIFBIWXMuIFNvIEkgc2VlIHRoaXMgc3dpdGNoIGFzIGp1c3QgYW5vdGhlciBj YXNlIG9mIGEgc3dpdGNoCj4+Pj4gd2l0aG91dCBhbiBpbnRlcm5hbCBNRElPIGJ1cy4KPj4+Cj4+ PiBXZWxsLCB3ZSBuZWVkIHRvIGNsYXJpZnkgdGhlIHNlbWFudGljcyBvZiBhbiAiaW50ZXJuYWwi IE1ESU8gYnVzLgo+Pj4KPj4+IEkgd291bGQgc2F5IG1vc3QgZGlzY3JldGUgY2hpcHMgd2l0aCBE U0Egc3dpdGNoZXMgaGF2ZSB0aGlzIFNvQy1zdHlsZQo+Pj4gYXJjaGl0ZWN0dXJlLCB3aXRoIHNl cGFyYXRlIGFkZHJlc3Mgc3BhY2VzIGZvciB0aGUgc3dpdGNoaW5nIElQLCBNRElPCj4+PiBidXMs IEdQSU8gY29udHJvbGxlciwgSVJRIGNvbnRyb2xsZXJzLCB0ZW1wZXJhdHVyZSBzZW5zb3JzIGV0 YyAoc2VlCj4+PiAibXNjYyx2c2M3NTEyLXN3aXRjaCIgd2hpY2ggaXMgbGlrZSAibXNjYyx2c2M3 NTE0LXN3aXRjaCIsIGJ1dCBpdCBpcwo+Pj4gY29udHJvbGxlZCBvdmVyIFNQSU8gaW5zdGVhZCBv ZiBNTUlPKS4gVGhlIGR0LWJpbmRpbmdzIG9mIG1vc3QgRFNBCj4+PiBzd2l0Y2hlcyBtYXkgb3Ig bWF5IG5vdCByZWZsZWN0IHRoYXQgZGlzY3JldGUgY2hpcCBvcmdhbml6YXRpb24uIFRob3NlCj4+ PiBkcml2ZXJzIGFuZCBkdC1iaW5kaW5ncyBjb3VsZCBiZSByZWltYWdpbmVkIHNvIHRoYXQgRFNB IGlzIG5vdCB0aGUKPj4+IHRvcC1sZXZlbCBkcml2ZXIuCj4+Pgo+Pj4gWWV0LCBJIHdvdWxkIGFy Z3VlIHRoYXQgaXQncyB3cm9uZyB0byBzYXkgdGhhdCBiZWNhdXNlIGl0IGlzbid0IGFuIE9GCj4+ PiBjaGlsZCBvZiB0aGUgc3dpdGNoLCB0aGUgTURJTyBidXMgb2YgdGhlIFZTQzc1MTQgaXMgbm90 IGludGVybmFsIGluIHRoZQo+Pj4gc2FtZSB3YXkgdGhhdCB0aGUgUmVhbHRlayBNRElPIGJ1cyBp cyBpbnRlcm5hbC4gVGhlIHN3aXRjaCBwb3J0cyBhcmUKPj4+IGNvbm5lY3RlZCB0byBpbnRlcm5h bCBQSFlzIG9uIHRoaXMgTURJTyBidXMsIGFuZCB0aGVyZSBhcmVuJ3QgUEhZcyBvbgo+Pj4gdGhp cyBNRElPIGJ1cyB0aGF0IGdvIHRvIG90aGVyIE1BQ3MgdGhhbiB0aGUgc3dpdGNoIHBvcnRzLiBT bywgdGhlCj4+PiBWU0M3NTE0IE1ESU8gYnVzIGNvdWxkIGxlZ2FsbHkgYmUgY2FsbGVkIHRoZSBp bnRlcm5hbCBNRElPIGJ1cyBvZiB0aGUKPj4+IHN3aXRjaCwgZXZlbiBpZiB0aGVyZSBpc24ndCBh IHBhcmVudC9jaGlsZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVtLgo+Pgo+PiBHb29kIHBvaW50 LCBJIGhhZCBiZWxpZXZlZCB0aGF0IHRoZSBtYW5hZ2VtZW50IGludGVyZmFjZSBvZiBhbGwgb2Yg dGhlIFBIWXMKPj4gYmVpbmcgY29ubmVjdGVkIHRvIHRoZSBNRElPIGJ1cyAtIHdoaWNoIGlzIG5v dCBwYXJ0IG9mIHRoZSBzd2l0Y2hpbmcgSVAKPj4gYWRkcmVzcyBzcGFjZSAtIHdvdWxkIGJlIGVu b3VnaCB0byBjbGFzc2lmeSB0aGUgTURJTyBidXMgYXMgbm9uLWludGVybmFsLgo+Pgo+PiBIb3dl dmVyLCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHNlcGFyYXRlIGFkZHJlc3Mgc3BhY2VzIGZvciB0aGUg c3dpdGNoaW5nIElQCj4+IGFuZCBNRElPIGJ1cyBpcyB1c2VkIG9uIGFueSB0eXBlIG9mIElDIHdp dGggdGhlIHN3aXRjaGluZyBmZWF0dXJlLgo+PiBUaGVyZWZvcmUsIHRoaXMgY2hhcmFjdGVyaXN0 aWMgY2Fubm90IGJlIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd2hldGhlciBhbgo+PiBNRElPIGJ1cyBp cyBvZiBhIHN3aXRjaC4KPj4KPj4gV2hhdCB3ZSBjYW4gcmVmZXIgdG8gdG8gY2xhc3NpZnkgYW4g aW50ZXJuYWwgTURJTyBidXMgaXMgYnkgY29uZmlybWluZyB0aGUKPj4gZGF0YSBpbnRlcmZhY2Ug b2YgYWxsIFBIWXMgb24gdGhlIE1ESU8gYnVzIGlzIGNvbm5lY3RlZCB0byB0aGUgc3dpdGNoIHBv cnQKPj4gTUFDcywgYXMgeW91IGhhdmUgcG9pbnRlZCBvdXQgaGVyZS4KPj4KPj4gQmVjYXVzZSB0 aGUgYXJjaGl0ZWN0dXJlIG9mIHNlcGFyYXRlIGFkZHJlc3Mgc3BhY2VzIGZvciB0aGUgc3dpdGNo aW5nIElQCj4+IGFuZCBNRElPIGJ1cyBpcyB1c2VkIG9uIGFueSB0eXBlIG9mIElDIHdpdGggdGhl IHN3aXRjaGluZyBmZWF0dXJlLCBpdCBjYW4KPj4gZGlmZmVyIGJ5IGRyaXZlciBob3cgdGhlIE1E SU8gYnVzIGlzIGRlZmluZWQgb24gdGhlIGR0LWJpbmRpbmdzLiBTbyB3ZQo+PiBjYW4ndCBtYWtl IHVuaXZlcnNhbCBiaW5kaW5ncyBvZiBhbiBpbnRlcm5hbCBNRElPIGJ1cyBvZiBhIHN3aXRjaCB0 aGF0Cj4+IGFwcGx5IHRvIGV2ZXJ5IHN3aXRjaC4KPj4KPj4gU28sIHRoZSBjb3JyZWN0IGFwcHJv YWNoIGlzIHRvIGRlZmluZSB0aGluZ3MgdW5kZXIgdGhlIHN3aXRjaC1zcGVjaWZpYwo+PiBzY2hl bWEgd2hpY2ggaXMgYWZmaW5lIHRvIHRoZSBkcml2ZXIsIGFzIHlvdSBoYXZlIGFscmVhZHkgcG9p bnRlZCBvdXQuCj4+IFdoaWNoIHNjaGVtYXMgdG8gZGVmaW5lIHdoYXQgd2lsbCBvZiBjb3Vyc2Ug ZGlmZmVyLgo+Pgo+Pj4KPj4+IFNvLCB3aGF0IEknbSBkaXNhZ3JlZWluZyB3aXRoIGlzIHlvdXIg aW5zaXN0ZW5jZSB0byBjb3JyZWxhdGUgeW91cgo+Pj4gcHJvYmxlbSB3aXRoIGludGVybmFsIE1E SU8gYnVzZXMuIFRoZSB3YXkgaW4gd2hpY2ggdGhlIHByb2JsZW0gaXMKPj4+IGZvcm11bGF0ZWQg ZGljdGF0ZXMgd2hhdCBwcm9ibGVtIGdldHMgc29sdmVkLCBhbmQgdGhlIHByb2JsZW0gaXMgbm90 Cj4+PiBjb3JyZWN0bHkgZm9ybXVsYXRlZCBoZXJlLiBJdCBpcyBwdXJlbHkgYWJvdXQgZHMtPnNs YXZlX21paV9idXMgYW5kIGl0cwo+Pj4gZHJpdmVyLWRlZmluZWQgT0YgcHJlc2VuY2UvYWJzZW5j ZS4gSXQgaXMgYSBEU0Etc3BlY2lmaWMgYmluZGluZyBhc3BlY3QKPj4+IHdoaWNoIG5vdCBldmVu IGFsbCBEU0Egc3dpdGNoZXMgaW5oZXJpdCwgbGV0IGFsb25lIGJpbmRpbmdzIG91dHNpZGUgRFNB Lgo+Pgo+PiBHb3QgaXQuCj4+Cj4+Pgo+Pj4+PiBGb3Igc3dpdGNoZXMgaW4gdGhlIHNlY29uZCBj YXRlZ29yeSwgaXQgYWxsIGRlcGVuZHMgb24gdGhlIHdheSBpbiB3aGljaAo+Pj4+PiB0aGUgZHJp dmVyIGZpbmRzIHRoZSBub2RlIGZvciBvZl9tZGlvYnVzX3JlZ2lzdGVyKCkuCj4+Pj4KPj4+PiBP aywgc28gc29tZSBkcml2ZXJzIHJlcXVpcmUgdGhlIG1kaW8gY2hpbGQgbm9kZS4gU29tZSByZXF1 aXJlIGl0IGFuZCB0aGUKPj4+PiBjb21wYXRpYmxlIHByb3BlcnR5IHdpdGggYSBjZXJ0YWluIHN0 cmluZy4KPj4+Pgo+Pj4+IE1ESU8gY29udHJvbGxlZCBSZWFsdGVrIHN3aXRjaGVzIGRvIG5vdCBu ZWVkIHRoZSBjb21wYXRpYmxlIHByb3BlcnR5IHVuZGVyCj4+Pj4gdGhlIG1kaW8gY2hpbGQgbm9k ZS4gVGhlcmUncmUgbm8gY29tcGF0aWJsZSBzdHJpbmdzIHRvIG1ha2UgYSBkaXN0aW5jdGlvbgo+ Pj4+IGJldHdlZW4gdGhlIFNNSSBhbmQgTURJTyBjb250cm9sbGVkIHN3aXRjaGVzIHNvIHRoZSBi ZXN0IHdlIGNhbiBkbyBpcyBrZWVwCj4+Pj4gaXQgdGhlIHdheSBpdCBjdXJyZW50bHkgaXMuIERl ZmluZSByZWFsdGVrLHNtaS1tZGlvIGFzIGEgY29tcGF0aWJsZSBzdHJpbmcKPj4+PiBidXQga2Vl cCB0aGUgY29tcGF0aWJsZSBwcm9wZXJ0eSBvcHRpb25hbC4gSSBkaWQgc3RhdGUgdGhpcyBvbiBt eSByZXBseSB0bwo+Pj4+IHBhdGNoIDMgYnV0IHN0aWxsIHJlY2VpdmVkIHJldmlld2VkLWJ5cyBy ZWdhcmRsZXNzLgo+Pj4KPj4+IFllcywgYmVjYXVzZS4uLi4gWzFdCj4+Pgo+Pj4+PiBIYXZpbmcg aWRlbnRpZmllZCBhbGwgc3dpdGNoZXMgd2hpY2ggbWFrZSBzb21lIHNvcnQgb2YgdXNlIG9mCj4+ Pj4+IGRzLT5zbGF2ZV9taWlfYnVzLCB0aGUgcnVsZSB3b3VsZCBzb3VuZCBsaWtlIHRoaXM6Cj4+ Pj4+Cj4+Pj4+IDEuIElmIHRoZSBzY2hlbWEgaXMgdGhhdCBvZiAobmVlZCB0byByZXBsYWNlIHRo aXMgd2l0aCBjb21wYXRpYmxlCj4+Pj4+IMKgwqDCoMKgIHN0cmluZ3MsIEknbSB0b28gbGF6eSBm b3IgdGhhdCk6Cj4+Pj4+Cj4+Pj4+IMKgwqDCoMKgIC0ga3N6X3N3aXRjaF9vcHMKPj4+Pj4gwqDC oMKgwqAgLSBtdjg4ZTYwNjBfc3dpdGNoX29wcwo+Pj4+PiDCoMKgwqDCoCAtIGxhbjkzMDNfc3dp dGNoX29wcwo+Pj4+PiDCoMKgwqDCoCAtIHJ0bDgzNjVtYl9zd2l0Y2hfb3BzX21kaW8KPj4+Pj4g wqDCoMKgwqAgLSBiNTNfc3dpdGNoX29wcwo+Pj4+PiDCoMKgwqDCoCAtIHZzYzczeHhfZHNfb3Bz Cj4+Pj4+IMKgwqDCoMKgIC0gbXY4OGU2eHh4Cj4+Pj4+IMKgwqDCoMKgIC0gcWNhOGsKPj4+Pj4K Pj4+Pj4gwqDCoMKgwqAgYW5kIHdlIGhhdmUgYW4gIm1kaW8iIGNoaWxkLCB0aGVuIHBoeWxpbmsg YmluZGluZ3MgYXJlIG1hbmRhdG9yeSBvbiB1c2VyIHBvcnRzLgo+Pj4+Pgo+Pj4+PiAyLiBJZiB0 aGUgc2NoZW1hIGlzIHRoYXQgb2YgZ3N3aXBfbWRpbyBhbmQgd2UgaGF2ZSBhIGNoaWxkIG5vZGUg b2YgImxhbnRpcSx4cngyMDAtbWRpbyIsCj4+Pj4+IMKgwqDCoMKgIHRoZW4gcGh5bGluayBiaW5k aW5ncyBhcmUgbWFuZGF0b3J5IG9uIHVzZXIgcG9ydHMgKEkgaGF2ZW4ndCBjaGVja2VkLAo+Pj4+ PiDCoMKgwqDCoCBidXQgaXQgbWlnaHQgYmUgdGhhdCB0aGUgImxhbnRpcSx4cngyMDAtbWRpbyIg Y2hpbGQgaXMgbWFuZGF0b3J5LCBhbmQKPj4+Pj4gwqDCoMKgwqAgaW4gdGhhdCBjYXNlLCB0aGlz IGdvZXMgdG8gY2F0ZWdvcnkgNCBiZWxvdykuCj4+Pj4+Cj4+Pj4+IDMuIElmIHRoZSBzY2hlbWEg aXMgdGhhdCBvZiByZWFsdGVrX3NtaV9zZXR1cF9tZGlvIGFuZCB3ZSBoYXZlIGEgY2hpbGQgbm9k ZSBvZgo+Pj4+PiDCoMKgwqDCoCAicmVhbHRlayxzbWktbWRpbyIsIHRoZW4gcGh5bGluayBiaW5k aW5ncyBhcmUgbWFuZGF0b3J5IG9uIHVzZXIgcG9ydHMKPj4+Pj4gwqDCoMKgwqAgKHNhbWUgY29t bWVudCBhYm91dCB0aGUgY2hpbGQgTURJTyBub3RlIG1heWJlIGJlaW5nIG1hbmRhdG9yeSkuCj4+ Pj4+Cj4+Pj4+IDQuIElmIHRoZSBzd2l0Y2ggZGlkbid0IGFwcGVhciBpbiB0aGUgYWJvdmUgc2V0 IG9mIHJ1bGVzLCB0aGVuIHBoeWxpbmsKPj4+Pj4gwqDCoMKgwqAgYmluZGluZ3MgYXJlIHVuY29u ZGl0aW9uYWxseSBtYW5kYXRvcnkgb24gdXNlciBwb3J0cy4KPj4+Pj4KPj4+Pj4gV2UgZG9uJ3Qg Y2FyZSBhdCBhbGwgd2hhdCB0aGUgZHJpdmVycyB0aGF0IGRvbid0IHVzZSBkcy0+c2xhdmVfbWlp X2J1cwo+Pj4+PiBkbyB3aXRoIHRoZSAibWRpbyIgY2hpbGQgbm9kZS4gSXQgZG9lc24ndCBjaGFu Z2UgdGhlIGZhY3QgdGhhdCB0aGVpcgo+Pj4+PiB1c2VyIHBvcnRzIGNhbid0IGhhdmUgbWlzc2lu ZyBwaHlsaW5rIGJpbmRpbmdzLgo+Pj4+Cj4+Pj4gSSBwYXJ0aWFsbHkgYWdyZWUuIEkgc2F5LCBm b3IgdGhlIHN3aXRjaGVzIHdpdGhvdXQgYW4gaW50ZXJuYWwgTURJTyBidXMsCj4+Pj4gaW52YWxp ZGF0ZSB0aGUgbWRpbyBjaGlsZCBub2RlLCBhbmQgZW5mb3JjZSB0aGUgcGh5bGluayBiaW5kaW5n cyBvbiB0aGUKPj4+PiB1c2VyIHBvcnRzLiBTdWNoIGFzIG1zY2MsdnNjNzUxNC1zd2l0Y2ggYW5k IG54cCxzamExMTA1eC4gRm9yIG54cCxzamExMTEweCwKPj4+PiBpbnZhbGlkYXRlIHRoZSBtZGlv IGNoaWxkIG5vZGUsIGFuZCBlbmZvcmNlIHRoZSBwaHlsaW5rIGJpbmRpbmdzIG9uIHRoZQo+Pj4+ IHVzZXIgcG9ydHMgaWYgdGhlIG1kaW9zIHByb3BlcnR5IGlzIHVzZWQuCj4+Pgo+Pj4gV2h5ICJp ZiB0aGUgbWRpb3MgcHJvcGVydHkgaXMgdXNlZCIgYW5kIG5vdCAiYWx3YXlzIj8gOi0vCj4+Pgo+ Pj4gVG8gc2F5IGl0IGFnYWluOiBiZWNhdXNlIHRoZSBzamExMTA1IGRyaXZlciBkb2VzIG5vdCB1 c2UgZHMtPnNsYXZlX21paV9idXMsCj4+PiBpdCBjYW4gbWFrZSBubyBzZW5zZSBvZiBkdC1iaW5k aW5ncyBvbiB1c2VyIHBvcnRzIHdoaWNoIGxhY2sgcGh5bGluayBwcm9wZXJ0aWVzLgo+Pj4gU28g dGhleSBhcmUgKmFsd2F5cyogbmVlZGVkLiBUaGUgIm1kaW9zIiBwcm9wZXJ0eSBjaGFuZ2VzIG5v dGhpbmcgaW4gdGhhdCByZWdhcmQuCj4+Cj4+IEdvdCBpdC4KPj4KPj4+Cj4+Pj4KPj4+PiBJJ2Qg bGlrZSB0byBhZGQgdGhpcyBiZWZvcmUgSSBjb25jbHVkZS4gVGhlIHdheSBJIHVuZGVyc3RhbmQg ZHQtYmluZGluZ3MgaXMKPj4+PiB0aGF0IGEgYmluZGluZyBkb2VzIG5vdCBoYXZlIHRvIHRyYW5z bGF0ZSB0byBhbiBhY3Rpb24gb24gdGhlIGRyaXZlci4KPj4+PiBEb2N1bWVudGluZyBiaW5kaW5n cyBmb3IgdGhlIHNvbGUgcHVycG9zZSBvZiBkZXNjcmliaW5nIGhhcmR3YXJlIGlzIGEgdmFsaWQK Pj4+PiBjYXNlLgo+Pj4KPj4+IFsxXSAuLi50aGlzLiBUaGUgU01JLWNvbnRyb2xsZWQgYW5kIE1E SU8tY29udHJvbGxlZCBSZWFsdGVrIHN3aXRjaGVzIGFyZQo+Pj4gb3RoZXJ3aXNlIHRoZSBzYW1l LCByaWdodD8gU28gd2h5IHdvdWxkIHRoZXkgaGF2ZSBkaWZmZXJlbnQgZHQtYmluZGluZ3M/Cj4+ Cj4+IEhvbmVzdGx5LCBJJ20gd29uZGVyaW5nIHRoZSBhbnN3ZXIgdG8gdGhpcyBhcyB3ZWxsLiBG b3Igc29tZSByZWFzb24sIHdoZW4KPj4gcHJvYmluZyB0aGUgU01JIGNvbnRyb2xsZWQgUmVhbHRl ayBzd2l0Y2hlcywgaW5zdGVhZCBvZiBqdXN0IGxldHRpbmcKPj4gZHNhX3N3aXRjaF9zZXR1cCgp IHBvcHVsYXRlIGRzLT5zbGF2ZV9taWlfYnVzLCBvbiByZWFsdGVrX3NtaV9zZXR1cF9tZGlvKCkK Pj4gb24gcmVhbHRlay1zbWkuYzoKPj4KPj4gLSBwcml2LT5zbGF2ZV9taWlfYnVzIGlzIGFsbG9j YXRlZC4KPj4gLSBtZGlvX25wID0gb2ZfZ2V0X2NvbXBhdGlibGVfY2hpbGQocHJpdi0+ZGV2LT5v Zl9ub2RlLCAicmVhbHRlayxzbWktbWRpbyIpOwo+PiAtIHByaXYtPnNsYXZlX21paV9idXMtPmRl di5vZl9ub2RlID0gbWRpb19ucDsKPj4gLSBkcy0+c2xhdmVfbWlpX2J1cyA9IHByaXYtPnNsYXZl X21paV9idXM7Cj4+Cj4+Pgo+Pj4+IEZvciBleGFtcGxlLCBjdXJyZW50bHksIHRoZSBNVDc1M1gg RFNBIHN1YmRyaXZlciB3b24ndCwgaW4gYW55IHdheSwKPj4+PiByZWdpc3RlciB0aGUgYnVzIE9G LWJhc2VkLiBTdGlsbCwgdGhlIG1kaW8gcHJvcGVydHkgZm9yIHRoZSBzd2l0Y2hlcyB3aGljaAo+ Pj4+IHRoaXMgZHJpdmVyIGNvbnRyb2xzIGNhbiBiZSBkb2N1bWVudGVkIGJlY2F1c2UgdGhlIGlu dGVybmFsIG1kaW8gYnVzIGRvZXMKPj4+PiBleGlzdCBvbiB0aGUgaGFyZHdhcmUuCj4+Pgo+Pj4g SXQgY2FuLCBidXQgdGhlIHdob2xlIHBvaW50IGlzOiBpZiBkcy0+c2xhdmVfbWlpX2J1cyBnYWlu cyBhbiBPRiBwcmVzZW5jZSwKPj4+IHRoZW4gaXQgbG9zZXMgaXRzIGNvcmUgZnVuY3Rpb25hbGl0 eSAodGhhdCB1c2VyIHBvcnRzIGNhbiBsYWNrIHBoeWxpbmsKPj4+IGJpbmRpbmdzKS4gVGhpcyBp cyB0aGUgZW50aXJlIGVzc2VuY2Ugb2Ygd2hhdCB0aGlzIGRpc2N1c3Npb24gc2hvdWxkIGNhcHR1 cmUuCj4+Cj4+IFVuZGVyc3Rvb2QuCj4+Cj4+Pgo+Pj4+Cj4+Pj4gU28gSSdkIGxpa2UgdG8ga2Vl cCB0aGUgbWRpbyBwcm9wZXJ0eSB2YWxpZCBmb3IgdGhlIHN3aXRjaGVzIHdoaWNoIHRoZWlyCj4+ Pj4gZHJpdmVycyBjYW4gb25seSByZWdpc3RlciBub24tT0YtYmFzZWQgZHMtPnNsYXZlX21paV9i dXMuCj4+Pj4KPj4+PiBJbiBjb25jbHVzaW9uLCB3aGF0IHRvIGRvOgo+Pj4+Cj4+Pj4gLSBEZWZp bmUgInRoZSBtZGlvIHByb3BlcnR5IiBhbmQgInRoZSBlbmZvcmNlbWVudCBvZiBwaHlsaW5rIGJp bmRpbmdzIGZvcgo+Pj4+IMKgwqAgdXNlciBwb3J0cyBpZiBtZGlvIHByb3BlcnR5IGlzIHVzZWQi IG9uIGV0aGVybmV0LXN3aXRjaC55YW1sLgo+Pj4+IMKgwqDCoMKgIC0gSW52YWxpZGF0ZSB0aGUg bWRpbyBwcm9wZXJ0eSBvbiB0aGUgc3dpdGNoZXMgd2l0aG91dCBhbiBpbnRlcm5hbCBNRElPCj4+ Pj4gwqDCoMKgwqDCoMKgIGJ1cy4KPj4+PiAtIERlZmluZSAidGhlIGVuZm9yY2VtZW50IG9mIHBo eWxpbmsgYmluZGluZ3MgZm9yIHVzZXIgcG9ydHMiIG9uIHRoZQo+Pj4+IMKgwqAgc3dpdGNoZXMg d2l0aG91dCBhbiBpbnRlcm5hbCBNRElPIGJ1cy4KPj4+PiAtIFJlcXVpcmUgInRoZSBtZGlvIHBy b3BlcnR5IiBmb3IgdGhlIHN3aXRjaGVzIHdoaWNoIHRoZWlyIGRyaXZlciByZXF1aXJlcwo+Pj4+ IMKgwqAgaXQgdG8gZnVuY3Rpb24uCj4+Pj4gLSBSZXF1aXJlICJ0aGUgbWRpbyBwcm9wZXJ0eSIg YW5kICJ0aGUgY29tcGF0aWJsZSBzdHJpbmcgb2YgdGhlIG1kaW8KPj4+PiDCoMKgIHByb3BlcnR5 IiBmb3IgdGhlIHN3aXRjaGVzIHdoaWNoIHRoZWlyIGRyaXZlciByZXF1aXJlcyB0aGVtIHRvIGZ1 bmN0aW9uLgo+Pj4+Cj4+Pj4gVGhlcmUncyBubyAxOjEgc3dpdGNoIHRvIHN3aXRjaCBjb21wYXRp YmxlIHN0cmluZyByZWxhdGlvbiwgYXMgc2VlbiBvbgo+Pj4+IFJlYWx0ZWsgc3dpdGNoZXMgc28g SSdsbCBoYXZlIHRvIGZpZ3VyZSB0aGF0IG91dCBhcyBJIGdvLgo+Pj4+Cj4+Pj4gSSdtIG9wZW4g dG8geW91ciBjb21tZW50cyB0byB0aGlzIG1haWwgYnV0IHRoZSBnYXAgYmV0d2VlbiBkaXNjdXNz aW9uIGFuZAo+Pj4+IGVuZCByZXN1bHQgaGFzIHdpZGVuZWQgYSBsb3Qgb24gdGhpcyBwYXRjaCBz ZXJpZXMgc28gSSdkIGxpa2UgdG8gZmlyc3QKPj4+PiBvZmZsb2FkIHRoaXMgY29udmVyc2F0aW9u IGJ5IHByZXBhcmluZyB2MiB3aXRoIHdoYXQgSSBzYWlkIGhlcmUgYW5kIGRpc2N1c3MKPj4+PiBm dXJ0aGVyIHRoZXJlLgo+Pj4KPj4+IEhvbmVzdGx5LCBmcm9tIG15IHNpZGUsIGEgdmVyYmFsIGNv bW1lbnQgaW4gdGhlIGR0LWJpbmRpbmdzIGRvY3VtZW50Cj4+PiB3b3VsZCBoYXZlIGJlZW4ganVz dCBmaW5lLCBhcyBsb25nIGFzIGl0IGlzIHRydXRoZnVsIHRvIHRoZSByZWFsaXR5IGl0Cj4+PiBk ZXNjcmliZXMuCj4+Pgo+Pj4gWW91IHdhbnRlZCB0byBvdmVyLWNvbXBsaWNhdGUgdGhpbmdzIHdp dGggYW4gYWN0dWFsIHNjaGVtYSB2YWxpZGF0aW9uLAo+Pj4gYW5kIHRoZW4gaG9va2luZyBvbnRv IHRoaW5ncyB0aGF0IGFyZSB1bnJlbGF0ZWQgd2l0aCB0aGUgcGhlbm9tZW5vbiB0aGF0Cj4+PiBu ZWVkcyB0byBiZSBjYXB0dXJlZCAobGlrZSB0aGUgIm1kaW8iIGNoaWxkIG5vZGUsIHdpdGhvdXQg ZXhwbGljaXQKPj4+IHJlZ2FyZCB0byB3aGV0aGVyIGl0IGlzIHRoZSBkcy0+c2xhdmVfbWlpX2J1 cyBvciBub3QpLgo+Pj4KPj4+IEl0J3Mgbm90IGFib3V0IGludGVybmFsIE1ESU8gYnVzZXMgaW4g Z2VuZXJhbCwgaXQncyBhYm91dCB3aGV0aGVyIHRob3NlCj4+PiBpbnRlcm5hbCBNRElPIGJ1c2Vz IGFyZSB1c2VkIGluIGRzLT5zbGF2ZV9taWlfYnVzLCBhbmQgdGhlaXIgT0YKPj4+IHByZXNlbmNl L2Fic2VuY2UhIFRoYXQgaXMgYWJzb2x1dGVseSBkcml2ZXItc3BlY2lmaWMgYW5kIEkgd291bGQg b25seQo+Pj4gZXhwZWN0IGEgZHJpdmVyLXNwZWNpZmljIHdheSBvZiBlbmZvcmNpbmcgaXQuIEkg ZGlkbid0IHNheSBpdCdzIG5vdAo+Pj4gaGFyZCwgYW5kIEkgZGlkbid0IGFzayB0byBlbmZvcmNl IGl0LCBlaXRoZXIuCj4+Cj4+IE9LLCBJIGJlbGlldmUgd2UncmUgb24gdGhlIHNhbWUgcGFnZSBu b3csIEkgd2lsbCBzdGFydCB3b3JraW5nIG9uIHByb3Blcmx5Cj4+IGVuZm9yY2luZyB0aGlzLgo+ IAo+IEknbSB3cml0aW5nIGJlbG93IGFzIGEgbWl4IG9mIHBhdGNoIGxvZyBhbmQgZGlzY3Vzc2lv bi4KPiAKPiBQaHlsaW5rIGJpbmRpbmdzIGFyZSByZXF1aXJlZCBmb3IgcG9ydHMgdGhhdCBhcmUg Y29udHJvbGxlZCBieSBPRi1iYXNlZAo+IGJ1c2VzLiBEU0EsIGxpa2UgYW55IG90aGVyIGRyaXZl ciB1dGlsaXNpbmcgdGhlIExpbnV4IE1ESU8gaW5mcmFzdHJ1Y3R1cmUsCj4gY2FuIHJlZ2lzdGVy IGEgYnVzLiBJZiBJIHVuZGVyc3RhbmQgY29ycmVjdGx5LCBub24tT0YtYmFzZWQgcmVnaXN0cmF0 aW9uIG9mCj4gT3BlbkZpcm13YXJlIE1ESU8gYnVzZXMgaXMgYSBmZWF0dXJlIHNwZWNpZmljIHRv IERTQSB3aGljaCBjZXJ0YWluIERTQQo+IHN1YmRyaXZlcnMgbWFrZSB1c2Ugb2YuCj4gCj4gVGhl cmUncyBubyB3YXkgdG8gZGlzdGluZ3Vpc2ggd2hpY2ggcG9ydCBpcyBjb250cm9sbGVkIGJ5IHdo aWNoIGRyaXZlcidzCj4gTURJTyBidXMgb24gdGhlIGJpbmRpbmdzIHNvIHdlIGNhbid0IGVuZm9y Y2UgcGh5bGluayBiaW5kaW5ncyBmb3IgYWxsIHVzZXIKPiBwb3J0cyBhcyB0aGlzIHdvdWxkIGFs c28gZW5mb3JjZSBwaHlsaW5rIGJpbmRpbmdzIG9uIHVzZXIgcG9ydHMgY29udHJvbGxlZAo+IGJ5 IGEgbm9uLU9GLWJhc2VkIGJ1cy4KPiAKPiBCdXQgd2UgY2FuIGtub3cgd2hlbiBEU0Egd29uJ3Qg Y3JlYXRlIGEgbm9uLU9GLWJhc2VkIGJ1cy4gVGhhdCBsZWF2ZXMgdXMKPiB3aXRoIG9ubHkgT0Yt YmFzZWQgYnVzZXMgaW4gd2hpY2ggY2FzZSB3ZSBjYW4gZW5mb3JjZSBwaHlsaW5rIGJpbmRpbmdz IGZvcgo+IGFsbCB1c2VyIHBvcnRzLiBTbyB3ZSBuZWVkIHRvIGNoZWNrIGVhY2ggRFNBIHN1YmRy aXZlciB0byBzZWUgd2hlbiBhbGwKPiBidXNlcyB3aWxsIGJlIE9GLWJhc2VkLgo+IAo+IEEgRFNB IHN1YmRyaXZlciBjYW4gZWl0aGVyIGxldCB0aGUgbWFpbiBEU0EgZHJpdmVyIHJlZ2lzdGVyIHRo ZSBidXMgb3IgaXQKPiBjYW4gcmVnaXN0ZXIgYSBidXMgb3IgYnVzZXMgaXRzZWxmLgo+IAo+IFRo ZSBhdHRyaWJ1dGVzIG9mIGEgRFNBIHN1YmRyaXZlciB0aGF0IGxldHMgdGhlIERTQSBkcml2ZXIg cmVnaXN0ZXIgdGhlCj4gYnVzOgo+IC0gZHMtPm9wcy0+cGh5X3JlYWQoKSBhbmQgZHMtPm9wcy0+ cGh5X3dyaXRlKCkgYXJlIHByZXNlbnQuCj4gLSBkcy0+c2xhdmVfbWlpX2J1cyBpcyBub3QgcG9w dWxhdGVkIGJ5IHRoZSBEU0Egc3ViZHJpdmVyLgo+IC0gVGhlIGJ1cyBpcyByZWdpc3RlcmVkIG5v bi1PRi1iYXNlZCBvciBPRi1iYXNlZC4gUmVnaXN0ZXJlZCBPRi1iYXNlZCBpZgo+ICDCoCAibWRp byIgY2hpbGQgbm9kZSBpcyBkZWZpbmVkLgo+IAo+IEhvdyBlYWNoIERTQSBzdWJkcml2ZXIgYmVo YXZlcyBpcyBkb2N1bWVudGVkIGJlbG93Lgo+IAo+IC0tLQo+IAo+IC0gbXNjYyx2c2M3NTE0LXN3 aXRjaC55YW1sCj4gIMKgIC0gbXNjYyx2c2M3NTE0LXN3aXRjaAo+ICDCoCAtIG1zY2MsdnNjNzUx Mi1zd2l0Y2gKPiAKPiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF92c2M3NTE0LmM6 Cj4gLSBOb3QgYSBEU0Egc3ViZHJpdmVyLgo+IC0gTURJT19NU0NDX01JSU0sIGEgZHJpdmVyIHV0 aWxpc2luZyB0aGUgTGludXggTURJTyBpbmZyYXN0cnVjdHVyZSBpcyB1c2VkCj4gIMKgIHRvIHJl Z2lzdGVyIGEgYnVzLgo+IAo+IGRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvb2NlbG90X2V4dC5jOgo+ IC0gVGhlIERTQSBzdWJkcml2ZXIgd29uJ3QgbGV0IHRoZSBEU0EgZHJpdmVyIHJlZ2lzdGVyIHRo ZSBidXMuCj4gIMKgIC0gTm8gZHMtPm9wcy0+cGh5X3JlYWQoKSBvciBkcy0+b3BzLT5waHlfd3Jp dGUoKS4KPiAtIE1ESU9fTVNDQ19NSUlNLCBhIGRyaXZlciB1dGlsaXNpbmcgdGhlIExpbnV4IE1E SU8gaW5mcmFzdHJ1Y3R1cmUgaXMgdXNlZAo+ICDCoCB0byByZWdpc3RlciBhIGJ1cy4KPiAKPiBX aGF0IHRvIGRvOgo+IC0gRm9yIG1zY2MsdnNjNzUxNC1zd2l0Y2gsIGVuZm9yY2UgcGh5bGluayBi aW5kaW5ncyBmb3IgcG9ydHMuCj4gLSBGb3IgbXNjYyx2c2M3NTEyLXN3aXRjaCwgZW5mb3JjZSBw aHlsaW5rIGJpbmRpbmdzIGZvciB1c2VyIHBvcnRzLgo+IAo+IC0tLQo+IAo+IC0gcmVuZXNhcyxy em4xLWE1cHN3LnlhbWwKPiAgwqAgLSByZW5lc2FzLHI5YTA2ZzAzMi1hNXBzdywgcmVuZXNhcyxy em4xLWE1cHN3Cj4gCj4gZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoKPiAtIFRoZSBEU0Eg c3ViZHJpdmVyIHdvbid0IGxldCB0aGUgRFNBIGRyaXZlciByZWdpc3RlciB0aGUgYnVzLgo+ICDC oCAtIE5vIGRzLT5vcHMtPnBoeV9yZWFkKCkgb3IgZHMtPm9wcy0+cGh5X3dyaXRlKCkuCj4gLSBS ZWdpc3RlcnMgdGhlIGJ1cyBPRi1iYXNlZCBvbmx5LiBSZWdpc3RlcnMgdGhlIGJ1cyB3aGVuICJt ZGlvIiBjaGlsZCBub2RlCj4gIMKgIGlzIGRlZmluZWQuCj4gIMKgIC3CoMKgwqAgbWRpbyA9IG9m X2dldF9jaGlsZF9ieV9uYW1lKGRldi0+b2Zfbm9kZSwgIm1kaW8iKTsKPiAgwqDCoMKgIGlmIChv Zl9kZXZpY2VfaXNfYXZhaWxhYmxlKG1kaW8pKQo+ICDCoMKgwqDCoMKgIHJldCA9IGE1cHN3X3By b2JlX21kaW8oYTVwc3csIG1kaW8pOwo+IAo+IFdoYXQgdG8gZG86Cj4gLSBEb2N1bWVudCAibWRp byIuCj4gLSBFbmZvcmNlIHBoeWxpbmsgYmluZGluZ3MgZm9yIHVzZXIgcG9ydHMuCj4gCj4gLS0t Cj4gCj4gLSByZWFsdGVrLnlhbWwKPiAgwqAgLSByZWFsdGVrLHJ0bDgzNjVtYgo+ICDCoCAtIHJl YWx0ZWsscnRsODM2NnJiCj4gCj4gZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWku YzoKPiAtIFRoZSBEU0Egc3ViZHJpdmVyIHdvbid0IGxldCB0aGUgRFNBIGRyaXZlciByZWdpc3Rl ciB0aGUgYnVzLiBSZWdpc3RlcnMKPiAgwqAgdGhlIGJ1cyBPRi1iYXNlZCBvbmx5LiBSZWdpc3Rl cmluZyB0aGUgYnVzIGlzIG1hbmRhdG9yeS4gUmVnaXN0ZXJzIHRoZQo+ICDCoCBidXMgd2hlbiBj b21wYXRpYmxlIHN0cmluZyAicmVhbHRlayxzbWktbWRpbyIgb24gYSBjaGlsZCBub2RlIGlzIGRl ZmluZWQuCj4gIMKgIC0gbWRpb19ucCA9IG9mX2dldF9jb21wYXRpYmxlX2NoaWxkKHByaXYtPmRl di0+b2Zfbm9kZSwgInJlYWx0ZWssc21pLW1kaW8iKTsKPiAgwqDCoMKgIGlmICghbWRpb19ucCkK PiAgwqDCoMKgwqDCoCByZXR1cm4gLUVOT0RFVjsKPiAgwqDCoMKgIGRzLT5zbGF2ZV9taWlfYnVz ID0gcHJpdi0+c2xhdmVfbWlpX2J1czsKPiAKPiBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFs dGVrLW1kaW8uYzoKPiAtIFRoZSBEU0Egc3ViZHJpdmVyIGxldHMgdGhlIERTQSBkcml2ZXIgcmVn aXN0ZXIgdGhlIGJ1cy4KPiAKPiBXaGF0IHRvIGRvOgo+IC0gRG9jdW1lbnQgIm1kaW8iLgo+ICDC oCAtIFJlcXVpcmUgIm1kaW8iLiAoQ2FuJ3QgZG8gYmVjYXVzZSBpdCdzIG5vdCByZXF1aXJlZCBm b3IgTURJTyBjb250cm9sbGVkCj4gIMKgwqDCoCBzd2l0Y2hlcyB0aGF0IHNoYXJlIHRoZSBjb21w YXRpYmxlIHN0cmluZyB3aXRoIFNNSSBjb250cm9sbGVkIHN3aXRjaGVzLgo+ICDCoMKgwqAgVGhp cyBpcyB3aHkgSSB3b3VsZCBsaWtlIEx1aXogdG8gdW5pZnkgdGhlIGJ1cyByZWdpc3RlcmF0aW9u IHByb2Nlc3MuKQo+IC0gRG9jdW1lbnQgY29tcGF0aWJsZSBzdHJpbmcgInJlYWx0ZWssc21pLW1k aW8iIG9uICJtZGlvIiBjaGlsZCBub2RlLgo+ICDCoCAtIFJlcXVpcmUgY29tcGF0aWJsZS4gKENh bid0IGRvIGJlY2F1c2UgdGhlIHNhbWUgYXMgYWJvdmUuKQo+IC0gRW5mb3JjZSBwaHlsaW5rIGJp bmRpbmdzIGZvciB1c2VyIHBvcnRzLiAoQ2FuJ3QgZG8gYmVjYXVzZSB0aGUgc2FtZSBhcwo+ICDC oCBhYm92ZS4pCj4gIMKgIC0gRW5mb3JjZSBwaHlsaW5rIGJpbmRpbmdzIGZvciB1c2VyIHBvcnRz IGlmICJtZGlvIiBpcyBkZWZpbmVkLgoKSSByZWRpc2NvdmVyZWQgdGhhdCB0aGUgcmVnIHByb3Bl cnR5IGNhbiBiZSB1c2VkIHRvIGRpc3Rpbmd1aXNoIHRoZSBTTUkgYW5kCk1ESU8gY29udHJvbGxl ZCBSZWFsdGVrIHN3aXRjaGVzLiBTbyBJIGNhbiBpbmRlZWQgd3JpdGUgYSBwcm9wZXIgc2NoZW1h LgpJJ2Qgc3RpbGwgbGlrZSB0aGUgYnVzIHJlZ2lzdHJhdGlvbiB0byBiZSB1bmlmaWVkIHRvIGVs aW1pbmF0ZSB1bm5lY2Vzc2FyeQpjb21wbGV4aXR5LgoKPiAKPiAtLS0KPiAKPiAtIHFjYThrLnlh bWwKPiAgwqAgLSBxY2EscWNhODMyNwo+ICDCoCAtIHFjYSxxY2E4MzI4Cj4gIMKgIC0gcWNhLHFj YTgzMzQKPiAgwqAgLSBxY2EscWNhODMzNwo+IAo+IGRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGst OHh4eC5jOgo+IC0gVGhlIERTQSBzdWJkcml2ZXIgd29uJ3QgbGV0IHRoZSBEU0EgZHJpdmVyIHJl Z2lzdGVyIHRoZSBidXMuCj4gIMKgIC0gTm8gZHMtPm9wcy0+cGh5X3JlYWQoKSBvciBkcy0+b3Bz LT5waHlfd3JpdGUoKS4KPiAtIFJlZ2lzdGVycyB0aGUgYnVzIG5vbi1PRi1iYXNlZCBvciBPRi1i YXNlZC4gUmVnaXN0ZXJzIE9GLWJhc2VkIGlmICJtZGlvIgo+ICDCoCBjaGlsZCBub2RlIGlzIGRl ZmluZWQuCj4gIMKgIC0gbWRpbyA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKHByaXYtPmRldi0+b2Zf bm9kZSwgIm1kaW8iKTsKPiAKPiBXaGF0IHRvIGRvOgo+IC0gRG9jdW1lbnQgIm1kaW8iLgo+IC0g RW5mb3JjZSBwaHlsaW5rIGJpbmRpbmdzIGZvciB1c2VyIHBvcnRzIGlmICJtZGlvIiBpcyBkZWZp bmVkLgo+IAo+IC0tLQo+IAo+IC0gbnhwLHNqYTExMDUueWFtbAo+ICDCoCAtIG54cCxzamExMTA1 ZQo+ICDCoCAtIG54cCxzamExMTA1dAo+ICDCoCAtIG54cCxzamExMTA1cAo+ICDCoCAtIG54cCxz amExMTA1cQo+ICDCoCAtIG54cCxzamExMTA1cgo+ICDCoCAtIG54cCxzamExMTA1cwo+ICDCoCAt IG54cCxzamExMTEwYQo+ICDCoCAtIG54cCxzamExMTEwYgo+ICDCoCAtIG54cCxzamExMTEwYwo+ ICDCoCAtIG54cCxzamExMTEwZAo+IAo+IGRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVf bWRpby5jOgo+IC0gVGhlIERTQSBzdWJkcml2ZXIgd29uJ3QgbGV0IHRoZSBEU0EgZHJpdmVyIHJl Z2lzdGVyIHRoZSBidXMuCj4gIMKgIC0gTm8gZHMtPm9wcy0+cGh5X3JlYWQoKSBvciBkcy0+b3Bz LT5waHlfd3JpdGUoKS4KPiAtIFJlZ2lzdGVycyBtdWx0aXBsZSBidXNlcyBPRi1iYXNlZCBvbmx5 LiBSZWdpc3RlcnMgdGhlIGJ1c2VzIHdoZW4gIm1kaW9zIgo+ICDCoCBjaGlsZCBub2RlIGFuZCAi bnhwLHNqYTExMTAtYmFzZS10eC1tZGlvIiBhbmQgIm54cCxzamExMTEwLWJhc2UtdDEtbWRpbyIK PiAgwqAgY29tcGF0aWJsZSBzdHJpbmdzIHBlciBjaGlsZCBub2RlIHVuZGVyICJtZGlvcyIgaXMg ZGVmaW5lZC4KPiAgwqAgLSBtZGlvX25vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShzd2l0Y2hf bm9kZSwgIm1kaW9zIik7Cj4gIMKgwqDCoCBpZiAoIW1kaW9fbm9kZSkKPiAgwqDCoMKgwqDCoCBy ZXR1cm4gMDsKPiAgwqAgLSBucCA9IG9mX2dldF9jb21wYXRpYmxlX2NoaWxkKG1kaW9fbm9kZSwg Im54cCxzamExMTEwLWJhc2UtdHgtbWRpbyIpOwo+ICDCoMKgwqAgaWYgKCFucCkKPiAgwqDCoMKg wqDCoCByZXR1cm4gMDsKPiAgwqAgLSBucCA9IG9mX2dldF9jb21wYXRpYmxlX2NoaWxkKG1kaW9f bm9kZSwgIm54cCxzamExMTEwLWJhc2UtdDEtbWRpbyIpOwo+ICDCoMKgwqAgaWYgKCFucCkKPiAg wqDCoMKgwqDCoCByZXR1cm4gMDsKPiAKPiBXaGF0IHRvIGRvOgo+IC0gRG9jdW1lbnQgIm1kaW9z Ii4KPiAgwqAgLSBEb2N1bWVudCBjaGlsZCBub2RlIHBhdHRlcm4gcHJvcGVydHkgdW5kZXIgIm1k aW9zIi4KPiAgwqDCoMKgIC0gRG9jdW1lbnQgIm54cCxzamExMTEwLWJhc2UtdHgtbWRpbyIgYW5k ICJueHAsc2phMTExMC1iYXNlLXQxLW1kaW8iCj4gIMKgwqDCoMKgwqAgY29tcGF0aWJsZSBzdHJp bmdzLgo+IC0gRW5mb3JjZSBwaHlsaW5rIGJpbmRpbmdzIGZvciB1c2VyIHBvcnRzLgo+IAo+IC0t LQo+IAo+IC0gbXNjYyxvY2Vsb3QueWFtbAo+ICDCoCAtIG1zY2MsdnNjOTk1My1zd2l0Y2gKPiAg wqAgLSBwY2kxOTU3LGVlZjAKPiAKPiBkcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNj OTk1My5jOgo+IC0gVGhlIERTQSBzdWJkcml2ZXIgd29uJ3QgbGV0IHRoZSBEU0EgZHJpdmVyIHJl Z2lzdGVyIHRoZSBidXMuCj4gIMKgIC0gTm8gZHMtPm9wcy0+cGh5X3JlYWQoKSBvciBkcy0+b3Bz LT5waHlfd3JpdGUoKS4KPiAtIE1ESU9fTVNDQ19NSUlNLCBhIGRyaXZlciB1dGlsaXNpbmcgdGhl IExpbnV4IE1ESU8gaW5mcmFzdHJ1Y3R1cmUgaXMgdXNlZAo+ICDCoCB0byByZWdpc3RlciBhIGJ1 cy4KPiAKPiBkcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoKPiAtIFRoZSBE U0Egc3ViZHJpdmVyIHdvbid0IGxldCB0aGUgRFNBIGRyaXZlciByZWdpc3RlciB0aGUgYnVzLgo+ ICDCoCAtIE5vIGRzLT5vcHMtPnBoeV9yZWFkKCkgb3IgZHMtPm9wcy0+cGh5X3dyaXRlKCkuCj4g LSBGU0xfRU5FVENfTURJTywgYSBkcml2ZXIgdXRpbGlzaW5nIHRoZSBMaW51eCBNRElPIGluZnJh c3RydWN0dXJlIGlzIHVzZWQKPiAgwqAgdG8gcmVnaXN0ZXIgYSBidXMuCj4gCj4gV2hhdCB0byBk bzoKPiAtIEVuZm9yY2UgcGh5bGluayBiaW5kaW5ncyBmb3IgdXNlciBwb3J0cy4KPiAKPiAtLS0K PiAKPiAtIG1pY3JvY2hpcCxsYW45Mzd4LnlhbWwKPiAgwqAgLSBtaWNyb2NoaXAsbGFuOTM3MAo+ ICDCoCAtIG1pY3JvY2hpcCxsYW45MzcxCj4gIMKgIC0gbWljcm9jaGlwLGxhbjkzNzIKPiAgwqAg LSBtaWNyb2NoaXAsbGFuOTM3Mwo+ICDCoCAtIG1pY3JvY2hpcCxsYW45Mzc0Cj4gLSBtaWNyb2No aXAsa3N6LnlhbWwKPiAgwqAgLSBtaWNyb2NoaXAsa3N6ODc2NQo+ICDCoCAtIG1pY3JvY2hpcCxr c3o4Nzk0Cj4gIMKgIC0gbWljcm9jaGlwLGtzejg3OTUKPiAgwqAgLSBtaWNyb2NoaXAsa3N6ODg2 Mwo+ICDCoCAtIG1pY3JvY2hpcCxrc3o4ODczCj4gIMKgIC0gbWljcm9jaGlwLGtzejk0NzcKPiAg wqAgLSBtaWNyb2NoaXAsa3N6OTg5Nwo+ICDCoCAtIG1pY3JvY2hpcCxrc3o5ODk2Cj4gIMKgIC0g bWljcm9jaGlwLGtzejk1NjcKPiAgwqAgLSBtaWNyb2NoaXAsa3N6ODU2NQo+ICDCoCAtIG1pY3Jv Y2hpcCxrc3o5ODkzCj4gIMKgIC0gbWljcm9jaGlwLGtzejk1NjMKPiAgwqAgLSBtaWNyb2NoaXAs a3N6ODU2Mwo+IAo+IGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOgo+IC0g VGhlIERTQSBzdWJkcml2ZXIgd29uJ3QgbGV0IHRoZSBEU0EgZHJpdmVyIHJlZ2lzdGVyIHRoZSBi dXMgd2hlbiAibWRpbyIKPiAgwqAgY2hpbGQgbm9kZSBpcyBkZWZpbmVkLiBSZWdpc3RlcnMgdGhl IGJ1cyBPRi1iYXNlZCBvbmx5LiBSZWdpc3RlcnMgdGhlIGJ1cwo+ICDCoCB3aGVuICJtZGlvIiBj aGlsZCBub2RlIGlzIGRlZmluZWQuCj4gIMKgIC0gbWRpb19ucCA9IG9mX2dldF9jaGlsZF9ieV9u YW1lKGRldi0+ZGV2LT5vZl9ub2RlLCAibWRpbyIpOwo+ICDCoMKgwqAgaWYgKCFtZGlvX25wKQo+ ICDCoMKgwqDCoMKgIHJldHVybiAwOwo+ICDCoMKgwqAgZHMtPnNsYXZlX21paV9idXMgPSBidXM7 Cj4gCj4gV2hhdCB0byBkbzoKPiAtIERvY3VtZW50ICJtZGlvIi4KPiAtIEVuZm9yY2UgcGh5bGlu ayBiaW5kaW5ncyBmb3IgdXNlciBwb3J0cyBpZiAibWRpbyIgaXMgZGVmaW5lZC4KPiAKPiAtLS0K PiAKPiAtIGhpcnNjaG1hbm4saGVsbGNyZWVrLnlhbWwKPiAgwqAgLSBoaXJzY2htYW5uLGhlbGxj cmVlay1kZTFzb2MtcjEKPiAKPiBkcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsu YzoKPiAtIFRoZSBEU0Egc3ViZHJpdmVyIHdvbid0IGxldCB0aGUgRFNBIGRyaXZlciByZWdpc3Rl ciB0aGUgYnVzLgo+ICDCoCAtIE5vIGRzLT5vcHMtPnBoeV9yZWFkKCkgb3IgZHMtPm9wcy0+cGh5 X3dyaXRlKCkuCj4gCj4gV2hhdCB0byBkbzoKPiAtIEVuZm9yY2UgcGh5bGluayBiaW5kaW5ncyBm b3IgdXNlciBwb3J0cy4KPiAKPiAtLS0KPiAKPiAtIG1lZGlhdGVrLG10NzUzMC55YW1sCj4gIMKg IC0gbWVkaWF0ZWssbXQ3NTMwCj4gIMKgIC0gbWVkaWF0ZWssbXQ3NTMxCj4gIMKgIC0gbWVkaWF0 ZWssbXQ3NjIxCj4gIMKgIC0gbWVkaWF0ZWssbXQ3OTg4LXN3aXRjaAo+IAo+IGRyaXZlcnMvbmV0 L2RzYS9tdDc1MzAuYzoKPiAtIFRoZSBEU0Egc3ViZHJpdmVyIHdvbid0IGxldCB0aGUgRFNBIGRy aXZlciByZWdpc3RlciB0aGUgYnVzLgo+ICDCoCAtIE5vIGRzLT5vcHMtPnBoeV9yZWFkKCkgb3Ig ZHMtPm9wcy0+cGh5X3dyaXRlKCkuCj4gLSBSZWdpc3RlcnMgdGhlIGJ1cyBub24tT0YtYmFzZWQg b3IgT0YtYmFzZWQuIFJlZ2lzdGVycyBPRi1iYXNlZCBpZiAibWRpbyIKPiAgwqAgY2hpbGQgbm9k ZSBpcyBkZWZpbmVkLiAoVGhpcyBpcyBhZnRlciB0aGUgcGF0Y2ggZm9yIHRoZSBNVDc1MzAgRFNB Cj4gIMKgIHN1YmRyaXZlciBpcyBhcHBsaWVkLikKPiAKPiBXaGF0IHRvIGRvOgo+IC0gRG9jdW1l bnQgIm1kaW8iLgo+IC0gRW5mb3JjZSBwaHlsaW5rIGJpbmRpbmdzIGZvciB1c2VyIHBvcnRzIGlm ICJtZGlvIiBpcyBkZWZpbmVkLgo+IAo+IC0tLQo+IAo+IC0gYnJjbSxzZjIueWFtbAo+ICDCoCAt IGJyY20sYmNtNDkwOC1zd2l0Y2gKPiAgwqAgLSBicmNtLGJjbTcyNzgtc3dpdGNoLXY0LjAKPiAg wqAgLSBicmNtLGJjbTcyNzgtc3dpdGNoLXY0LjgKPiAgwqAgLSBicmNtLGJjbTc0NDUtc3dpdGNo LXY0LjAKPiAKPiBkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOgo+IC0gVGhlIERTQSBzdWJkcml2 ZXIgd29uJ3QgbGV0IHRoZSBEU0EgZHJpdmVyIHJlZ2lzdGVyIHRoZSBidXMuCj4gIMKgIC0gTm8g ZHMtPm9wcy0+cGh5X3JlYWQoKSBvciBkcy0+b3BzLT5waHlfd3JpdGUoKS4KPiAtIFJlcXVpcmVz IE1ESU9fQkNNX1VOSU1BQywgYSBkcml2ZXIgdXRpbGlzaW5nIHRoZSBMaW51eCBNRElPCj4gIMKg IGluZnJhc3RydWN0dXJlIHRvIHJlZ2lzdGVyIGEgYnVzLgo+ICDCoCAtIGRuID0gb2ZfZmluZF9j b21wYXRpYmxlX25vZGUoTlVMTCwgTlVMTCwgImJyY20sdW5pbWFjLW1kaW8iKTsKPiAgwqDCoMKg IHByaXYtPm1hc3Rlcl9taWlfYnVzID0gb2ZfbWRpb19maW5kX2J1cyhkbik7Cj4gIMKgwqDCoCBp ZiAoIXByaXYtPm1hc3Rlcl9taWlfYnVzKSB7Cj4gIMKgwqDCoMKgwqAgb2Zfbm9kZV9wdXQoZG4p Owo+ICDCoMKgwqDCoMKgIHJldHVybiAtRVBST0JFX0RFRkVSOwo+ICDCoMKgwqAgfQo+IAo+IFdo YXQgdG8gZG86Cj4gLSBFbmZvcmNlIHBoeWxpbmsgYmluZGluZ3MgZm9yIHVzZXIgcG9ydHMuCj4g Cj4gLS0tCj4gCj4gLSBicmNtLGI1My55YW1sCj4gIMKgIC0gYnJjbSxiY201MzI1Cj4gIMKgIC0g YnJjbSxiY201MzExNQo+ICDCoCAtIGJyY20sYmNtNTMxMjUKPiAgwqAgLSBicmNtLGJjbTUzMTI4 Cj4gIMKgIC0gYnJjbSxiY201MzEzNAo+ICDCoCAtIGJyY20sYmNtNTM2NQo+ICDCoCAtIGJyY20s YmNtNTM5NQo+ICDCoCAtIGJyY20sYmNtNTM4OQo+ICDCoCAtIGJyY20sYmNtNTM5Nwo+ICDCoCAt IGJyY20sYmNtNTM5OAo+ICDCoCAtIGJyY20sYmNtMTEzNjAtc3JhYiwgYnJjbSxjeWdudXMtc3Jh Ygo+ICDCoCAtIGJyY20sYmNtNTMwMTAtc3JhYiwgYnJjbSxiY201MzAxeC1zcmFiCj4gIMKgIC0g YnJjbSxiY201MzAxMS1zcmFiLCBicmNtLGJjbTUzMDF4LXNyYWIKPiAgwqAgLSBicmNtLGJjbTUz MDEyLXNyYWIsIGJyY20sYmNtNTMwMXgtc3JhYgo+ICDCoCAtIGJyY20sYmNtNTMwMTgtc3JhYiwg YnJjbSxiY201MzAxeC1zcmFiCj4gIMKgIC0gYnJjbSxiY201MzAxOS1zcmFiLCBicmNtLGJjbTUz MDF4LXNyYWIKPiAgwqAgLSBicmNtLGJjbTExNDA0LXNyYWIsIGJyY20sb21lZ2Etc3JhYgo+ICDC oCAtIGJyY20sYmNtMTE0MDctc3JhYiwgYnJjbSxvbWVnYS1zcmFiCj4gIMKgIC0gYnJjbSxiY20x MTQwOS1zcmFiLCBicmNtLG9tZWdhLXNyYWIKPiAgwqAgLSBicmNtLGJjbTU4MzEwLXNyYWIsIGJy Y20sb21lZ2Etc3JhYgo+ICDCoCAtIGJyY20sYmNtNTgzMTEtc3JhYiwgYnJjbSxvbWVnYS1zcmFi Cj4gIMKgIC0gYnJjbSxiY201ODMxMy1zcmFiLCBicmNtLG9tZWdhLXNyYWIKPiAgwqAgLSBicmNt LGJjbTU4NTIyLXNyYWIsIGJyY20sbnNwLXNyYWIKPiAgwqAgLSBicmNtLGJjbTU4NTIzLXNyYWIs IGJyY20sbnNwLXNyYWIKPiAgwqAgLSBicmNtLGJjbTU4NTI1LXNyYWIsIGJyY20sbnNwLXNyYWIK PiAgwqAgLSBicmNtLGJjbTU4NjIyLXNyYWIsIGJyY20sbnNwLXNyYWIKPiAgwqAgLSBicmNtLGJj bTU4NjIzLXNyYWIsIGJyY20sbnNwLXNyYWIKPiAgwqAgLSBicmNtLGJjbTU4NjI1LXNyYWIsIGJy Y20sbnNwLXNyYWIKPiAgwqAgLSBicmNtLGJjbTg4MzEyLXNyYWIsIGJyY20sbnNwLXNyYWIKPiAg wqAgLSBicmNtLGJjbTMzODQtc3dpdGNoLCBicmNtLGJjbTYzeHgtc3dpdGNoCj4gIMKgIC0gYnJj bSxiY202MzE4LXN3aXRjaCwgYnJjbSxiY202M3h4LXN3aXRjaAo+ICDCoCAtIGJyY20sYmNtNjMy OC1zd2l0Y2gsIGJyY20sYmNtNjN4eC1zd2l0Y2gKPiAgwqAgLSBicmNtLGJjbTYzNjItc3dpdGNo LCBicmNtLGJjbTYzeHgtc3dpdGNoCj4gIMKgIC0gYnJjbSxiY202MzY4LXN3aXRjaCwgYnJjbSxi Y202M3h4LXN3aXRjaAo+ICDCoCAtIGJyY20sYmNtNjMyNjgtc3dpdGNoLCBicmNtLGJjbTYzeHgt c3dpdGNoCj4gCj4gZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6Cj4gLSBUaGUgRFNB IHN1YmRyaXZlciBsZXRzIHRoZSBEU0EgZHJpdmVyIHJlZ2lzdGVyIHRoZSBidXMuCj4gCj4gV2hh dCB0byBkbzoKPiAtIERvY3VtZW50ICJtZGlvIi4KPiAtIEVuZm9yY2UgcGh5bGluayBiaW5kaW5n cyBmb3IgdXNlciBwb3J0cyBpZiAibWRpbyIgaXMgZGVmaW5lZC4KPiAKPiAtLS0KPiAKPiAtIGFy cm93LHhyczcwMHgueWFtbAo+ICDCoCAtIGFycm93LHhyczcwMDNlCj4gIMKgIC0gYXJyb3cseHJz NzAwM2YKPiAgwqAgLSBhcnJvdyx4cnM3MDA0ZQo+ICDCoCAtIGFycm93LHhyczcwMDRmCj4gCj4g ZHJpdmVycy9uZXQvZHNhL3hyczcwMHgveHJzNzAweC5jOgo+IC0gVGhlIERTQSBzdWJkcml2ZXIg d29uJ3QgbGV0IHRoZSBEU0EgZHJpdmVyIHJlZ2lzdGVyIHRoZSBidXMuCj4gIMKgIC0gTm8gZHMt Pm9wcy0+cGh5X3JlYWQoKSBvciBkcy0+b3BzLT5waHlfd3JpdGUoKS4KPiAKPiBXaGF0IHRvIGRv Ogo+IC0gRW5mb3JjZSBwaHlsaW5rIGJpbmRpbmdzIGZvciB1c2VyIHBvcnRzLgo+IAo+IC0tLQo+ IAo+IFRleHQgZG9jdW1lbnRzLiBJIHdpbGwgaGFuZGxlIHRoZXNlIHdoZW4gSSByZXBsYWNlIHRo ZW0gd2l0aCBqc29uLXNjaGVtYQo+IGRvY3VtZW50cy4KPiAKPiAtIGFyOTMzMS50eHQKPiAgwqAg LSBxY2EsYXI5MzMxLXN3aXRjaAo+IAo+IGRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6Cj4g LSBUaGUgRFNBIHN1YmRyaXZlciB3b24ndCBsZXQgdGhlIERTQSBkcml2ZXIgcmVnaXN0ZXIgdGhl IGJ1cy4KPiAgwqAgLSBObyBkcy0+b3BzLT5waHlfcmVhZCgpIG9yIGRzLT5vcHMtPnBoeV93cml0 ZSgpLgo+IC0gUmVnaXN0ZXJzIHRoZSBidXMgT0YtYmFzZWQgb25seS4gUmVnaXN0ZXJpbmcgdGhl IGJ1cyBpcyBtYW5kYXRvcnkuCj4gIMKgIFJlZ2lzdGVycyB0aGUgYnVzIHdoZW4gIm1kaW8iIGNo aWxkIG5vZGUgaXMgZGVmaW5lZC4KPiAgwqAgLSBtbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShu cCwgIm1kaW8iKTsKPiAgwqDCoMKgIGlmICghbW5wKQo+ICDCoMKgwqDCoMKgIHJldHVybiAtRU5P REVWOwo+IAo+IFdoYXQgdG8gZG86Cj4gLSBEb2N1bWVudCAibWRpbyIuCj4gIMKgIC0gUmVxdWly ZSAibWRpbyIuCj4gLSBFbmZvcmNlIHBoeWxpbmsgYmluZGluZ3MgZm9yIHVzZXIgcG9ydHMuCj4g Cj4gLS0tCj4gCj4gLSBsYW45MzAzLnR4dAo+ICDCoCAtIHNtc2MsbGFuOTMwMy1pMmMKPiAgwqAg LSBzbXNjLGxhbjkzMDMtbWRpbwo+IAo+IGRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoK PiAtIFRoZSBEU0Egc3ViZHJpdmVyIGxldHMgdGhlIERTQSBkcml2ZXIgcmVnaXN0ZXIgdGhlIGJ1 cy4KPiAKPiBXaGF0IHRvIGRvOgo+IC0gRG9jdW1lbnQgIm1kaW8iLgo+IC0gRW5mb3JjZSBwaHls aW5rIGJpbmRpbmdzIGZvciB1c2VyIHBvcnRzIGlmICJtZGlvIiBpcyBkZWZpbmVkLgo+IAo+IC0t LQo+IAo+IC0gbGFudGlxLWdzd2lwLnR4dAo+ICDCoCAtIGxhbnRpcSx4cngyMDAtZ3N3aXAKPiAg wqAgLSBsYW50aXEseHJ4MzAwLWdzd2lwCj4gIMKgIC0gbGFudGlxLHhyeDMzMC1nc3dpcAo+IAo+ IGRyaXZlcnMvbmV0L2RzYS9sYW50aXFfZ3N3aXAuYzoKPiAtIFRoZSBEU0Egc3ViZHJpdmVyIHdv bid0IGxldCB0aGUgRFNBIGRyaXZlciByZWdpc3RlciB0aGUgYnVzLgo+ICDCoCAtIE5vIGRzLT5v cHMtPnBoeV9yZWFkKCkgb3IgZHMtPm9wcy0+cGh5X3dyaXRlKCkuCj4gLSBSZWdpc3RlcnMgdGhl IGJ1cyBPRi1iYXNlZCBvbmx5LiBSZWdpc3RlcnMgdGhlIGJ1cyB3aGVuIGNvbXBhdGlibGUgc3Ry aW5nCj4gIMKgICJsYW50aXEseHJ4MjAwLW1kaW8iIG9uIGEgY2hpbGQgbm9kZSBpcyBkZWZpbmVk Lgo+ICDCoCAtIG1kaW9fbnAgPSBvZl9nZXRfY29tcGF0aWJsZV9jaGlsZChkZXYtPm9mX25vZGUs ICJsYW50aXEseHJ4MjAwLW1kaW8iKTsKPiAgwqDCoMKgIGlmIChtZGlvX25wKQo+ICDCoMKgwqDC oMKgIGVyciA9IGdzd2lwX21kaW8ocHJpdiwgbWRpb19ucCk7Cj4gCj4gV2hhdCB0byBkbzoKPiAt IERvY3VtZW50ICJtZGlvIi4KPiAtIERvY3VtZW50IGNvbXBhdGlibGUgc3RyaW5nICJyZWFsdGVr LHNtaS1tZGlvIiBvbiAibWRpbyIgY2hpbGQgbm9kZS4KClRoaXMgc2hvdWxkIGJlICJsYW50aXEs eHJ4MjAwLW1kaW8iIGluc3RlYWQuCgpBcsSxbsOnCgo+ICDCoCAtIFJlcXVpcmUgY29tcGF0aWJs ZS4KPiAtIEVuZm9yY2UgcGh5bGluayBiaW5kaW5ncyBmb3IgdXNlciBwb3J0cy4KPiAKPiAtLS0K PiAKPiAtIG1hcnZlbGwudHh0Cj4gIMKgIC0gbWFydmVsbCxtdjg4ZTYwODUKPiAgwqAgLSBtYXJ2 ZWxsLG12ODhlNjE5MAo+ICDCoCAtIG1hcnZlbGwsbXY4OGU2MjUwCj4gCj4gZHJpdmVycy9uZXQv ZHNhL212ODhlNnh4eC9jaGlwLmM6Cj4gLSBUaGUgRFNBIHN1YmRyaXZlciB3b24ndCBsZXQgdGhl IERTQSBkcml2ZXIgcmVnaXN0ZXIgdGhlIGJ1cy4KPiAgwqAgLSBkcy0+c2xhdmVfbWlpX2J1cyA9 IG12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKGNoaXApOwo+IC0gUmVnaXN0ZXJzIHRoZSBidXMg bm9uLU9GLWJhc2VkIG9yIE9GLWJhc2VkLiBSZWdpc3RlcnMgT0YtYmFzZWQgaWYgIm1kaW8iCj4g IMKgIGNoaWxkIG5vZGUgaXMgZGVmaW5lZC4KPiAKPiBXaGF0IHRvIGRvOgo+IC0gRG9jdW1lbnQg Im1kaW8iLgo+IC0gRW5mb3JjZSBwaHlsaW5rIGJpbmRpbmdzIGZvciB1c2VyIHBvcnRzIGlmICJt ZGlvIiBpcyBkZWZpbmVkLgo+IAo+IC0tLQo+IAo+IC0gdml0ZXNzZSx2c2M3M3h4LnR4dAo+ICDC oCAtIHZpdGVzc2UsdnNjNzM4NQo+ICDCoCAtIHZpdGVzc2UsdnNjNzM4OAo+ICDCoCAtIHZpdGVz c2UsdnNjNzM5NQo+ICDCoCAtIHZpdGVzc2UsdnNjNzM5OAo+IAo+IGRyaXZlcnMvbmV0L2RzYS92 aXRlc3NlLXZzYzczeHgtY29yZS5jOgo+IC0gVGhlIERTQSBzdWJkcml2ZXIgbGV0cyB0aGUgRFNB IGRyaXZlciByZWdpc3RlciB0aGUgYnVzLgo+IAo+IFdoYXQgdG8gZG86Cj4gLSBEb2N1bWVudCAi bWRpbyIuCj4gLSBFbmZvcmNlIHBoeWxpbmsgYmluZGluZ3MgZm9yIHVzZXIgcG9ydHMgaWYgIm1k aW8iIGlzIGRlZmluZWQuCj4gCj4gQXLEsW7DpwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgt YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=