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 1AF01CD1292 for ; Tue, 9 Apr 2024 02:08:56 +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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=9lFQTXTlu6zhqiFCR+Ici2Ru0zkUA83xq3hvSrquYJU=; b=EXa9kkDbDE7fq8 gb6NyFw3dFd7Sc8BoFYNdBrR4w3T3zTxkZri5lH92vRKQO+1vVlC8NfRPm3Pw0DKOGqHZAbfGdske i89vL+COGbR5ROX9uHY51a79lrutl5aXdWtO/OcRIWaFqp+/mS/QfATNyq+uVSF15NtU3fjMDKA19 OH/FHxVYSqq1EEMDJSzorkRgQ4nN47qj1i4Fb13DFViJrNTK4NcHYdhvkqy7CXkqQGUmX2/yOzP2F YnppEXyuI4VQHzA077NBdHgAa+UC9eTSQ5xiAer8uezA353BpBS9N8B7wdHwy68RhBWekHMEx382B qSpM40zpAuWw8Pf3mBCw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1ru0ue-0000000HVWm-3ouu; Tue, 09 Apr 2024 02:08:40 +0000 Received: from pidgin.makrotopia.org ([185.142.180.65]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1ru0uW-0000000HVUK-3jDI; Tue, 09 Apr 2024 02:08:39 +0000 Received: from local by pidgin.makrotopia.org with esmtpsa (TLS1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.96.2) (envelope-from ) id 1ru0u9-0007Tf-11; Tue, 09 Apr 2024 02:08:09 +0000 Date: Tue, 9 Apr 2024 03:08:05 +0100 From: Daniel Golle To: arinc.unal@arinc9.com Cc: DENG Qingfang , Sean Wang , Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno , Bartel Eerdekens , mithat.guner@xeront.com, erkin.bozoglu@xeront.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Subject: Re: [PATCH net] net: dsa: mt7530: trap link-local frames regardless of ST Port State Message-ID: References: <20240407-b4-for-net-mt7530-fix-link-local-when-stp-discarding-v1-1-b4b20ac93457@arinc9.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240407-b4-for-net-mt7530-fix-link-local-when-stp-discarding-v1-1-b4b20ac93457@arinc9.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240408_190836_805005_4E24F15A X-CRM114-Status: GOOD ( 49.96 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gU3VuLCBBcHIgMDcsIDIwMjQgYXQgMDk6MTE6MTFQTSArMDMwMCwgQXLEsW7DpyDDnE5BTCB2 aWEgQjQgUmVsYXkgd3JvdGU6Cj4gRnJvbTogQXLEsW7DpyDDnE5BTCA8YXJpbmMudW5hbEBhcmlu YzkuY29tPgo+IAo+IEluIENsYXVzZSA1IG9mIElFRUUgU3RkIDgwMi0yMDE0LCB0d28gc3VibGF5 ZXJzIG9mIHRoZSBkYXRhIGxpbmsgbGF5ZXIKPiAoRExMKSBvZiB0aGUgT3BlbiBTeXN0ZW1zIElu dGVyY29ubmVjdGlvbiBiYXNpYyByZWZlcmVuY2UgbW9kZWwgKE9TSS9STSkKPiBhcmUgZGVzY3Jp YmVkOyB0aGUgbWVkaXVtIGFjY2VzcyBjb250cm9sIChNQUMpIGFuZCBsb2dpY2FsIGxpbmsgY29u dHJvbAo+IChMTEMpIHN1YmxheWVycy4gVGhlIE1BQyBzdWJsYXllciBpcyB0aGUgb25lIGZhY2lu ZyB0aGUgcGh5c2ljYWwgbGF5ZXIuCj4gCj4gSW4gOC4yIG9mIElFRUUgU3RkIDgwMi4xUS0yMDIy LCB0aGUgQnJpZGdlIGFyY2hpdGVjdHVyZSBpcyBkZXNjcmliZWQuIEEKPiBCcmlkZ2UgY29tcG9u ZW50IGNvbXByaXNlcyBhIE1BQyBSZWxheSBFbnRpdHkgZm9yIGludGVyY29ubmVjdGluZyB0aGUg UG9ydHMKPiBvZiB0aGUgQnJpZGdlLCBhdCBsZWFzdCB0d28gUG9ydHMsIGFuZCBoaWdoZXIgbGF5 ZXIgZW50aXRpZXMgd2l0aCBhdCBsZWFzdAo+IGEgU3Bhbm5pbmcgVHJlZSBQcm90b2NvbCBFbnRp dHkgaW5jbHVkZWQuCj4gCj4gRWFjaCBCcmlkZ2UgUG9ydCBhbHNvIGZ1bmN0aW9ucyBhcyBhbiBl bmQgc3RhdGlvbiBhbmQgc2hhbGwgcHJvdmlkZSB0aGUgTUFDCj4gU2VydmljZSB0byBhbiBMTEMg RW50aXR5LiBFYWNoIGluc3RhbmNlIG9mIHRoZSBNQUMgU2VydmljZSBpcyBwcm92aWRlZCB0byBh Cj4gZGlzdGluY3QgTExDIEVudGl0eSB0aGF0IHN1cHBvcnRzIHByb3RvY29sIGlkZW50aWZpY2F0 aW9uLCBtdWx0aXBsZXhpbmcsCj4gYW5kIGRlbXVsdGlwbGV4aW5nLCBmb3IgcHJvdG9jb2wgZGF0 YSB1bml0IChQRFUpIHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uCj4gYnkgb25lIG9yIG1vcmUg aGlnaGVyIGxheWVyIGVudGl0aWVzLgo+IAo+IEl0IGlzIGRlc2NyaWJlZCBpbiA4LjEzLjkgb2Yg SUVFRSBTdGQgODAyLjFRLTIwMjIgdGhhdCBpbiBhIEJyaWRnZSwgdGhlIExMQwo+IEVudGl0eSBh c3NvY2lhdGVkIHdpdGggZWFjaCBCcmlkZ2UgUG9ydCBpcyBtb2RlbGVkIGFzIGJlaW5nIGRpcmVj dGx5Cj4gY29ubmVjdGVkIHRvIHRoZSBhdHRhY2hlZCBMb2NhbCBBcmVhIE5ldHdvcmsgKExBTiku Cj4gCj4gT24gdGhlIHN3aXRjaCB3aXRoIENQVSBwb3J0IGFyY2hpdGVjdHVyZSwgQ1BVIHBvcnQg ZnVuY3Rpb25zIGFzIE1hbmFnZW1lbnQKPiBQb3J0LCBhbmQgdGhlIE1hbmFnZW1lbnQgUG9ydCBm dW5jdGlvbmFsaXR5IGlzIHByb3ZpZGVkIGJ5IHNvZnR3YXJlIHdoaWNoCj4gZnVuY3Rpb25zIGFz IGFuIGVuZCBzdGF0aW9uLiBTb2Z0d2FyZSBpcyBjb25uZWN0ZWQgdG8gYW4gSUVFRSA4MDIgTEFO IHRoYXQKPiBpcyB3aG9sbHkgY29udGFpbmVkIHdpdGhpbiB0aGUgc3lzdGVtIHRoYXQgaW5jb3Jw b3JhdGVzIHRoZSBCcmlkZ2UuCj4gU29mdHdhcmUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBMTEMg RW50aXR5IGFzc29jaWF0ZWQgd2l0aCBlYWNoIEJyaWRnZSBQb3J0Cj4gYnkgdGhlIHZhbHVlIG9m IHRoZSBzb3VyY2UgcG9ydCBmaWVsZCBvbiB0aGUgc3BlY2lhbCB0YWcgb24gdGhlIGZyYW1lCj4g cmVjZWl2ZWQgYnkgc29mdHdhcmUuCj4gCj4gV2UgY2FsbCBmcmFtZXMgdGhhdCBjYXJyeSBjb250 cm9sIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSB0aGUgYWN0aXZlCj4gdG9wb2xvZ3kgYW5kIGN1 cnJlbnQgZXh0ZW50IG9mIGVhY2ggVmlydHVhbCBMb2NhbCBBcmVhIE5ldHdvcmsgKFZMQU4pLAo+ IGkuZS4sIHNwYW5uaW5nIHRyZWUgb3IgU2hvcnRlc3QgUGF0aCBCcmlkZ2luZyAoU1BCKSBhbmQg TXVsdGlwbGUgVkxBTgo+IFJlZ2lzdHJhdGlvbiBQcm90b2NvbCBEYXRhIFVuaXRzIChNVlJQRFVz KSwgYW5kIGZyYW1lcyBmcm9tIG90aGVyIGxpbmsKPiBjb25zdHJhaW5lZCBwcm90b2NvbHMsIHN1 Y2ggYXMgRXh0ZW5zaWJsZSBBdXRoZW50aWNhdGlvbiBQcm90b2NvbCBvdmVyIExBTgo+IChFQVBP TCkgYW5kIExpbmsgTGF5ZXIgRGlzY292ZXJ5IFByb3RvY29sIChMTERQKSwgbGluay1sb2NhbCBm cmFtZXMuIFRoZXkKPiBhcmUgbm90IGZvcndhcmRlZCBieSBhIEJyaWRnZS4gUGVybWFuZW50bHkg Y29uZmlndXJlZCBlbnRyaWVzIGluIHRoZQo+IGZpbHRlcmluZyBkYXRhYmFzZSAoRkRCKSBlbnN1 cmUgdGhhdCBzdWNoIGZyYW1lcyBhcmUgZGlzY2FyZGVkIGJ5IHRoZQo+IEZvcndhcmRpbmcgUHJv Y2Vzcy4gSW4gOC42LjMgb2YgSUVFRSBTdGQgODAyLjFRLTIwMjIsIHRoaXMgaXMgZGVzY3JpYmVk IGluCj4gZGV0YWlsOgo+IAo+IEVhY2ggb2YgdGhlIHJlc2VydmVkIE1BQyBhZGRyZXNzZXMgc3Bl Y2lmaWVkIGluIFRhYmxlIDgtMQo+ICgwMS04MC1DMi0wMC0wMC1bMDAsMDEsMDIsMDMsMDQsMDUs MDYsMDcsMDgsMDksMEEsMEIsMEMsMEQsMEUsMEZdKSBzaGFsbCBiZQo+IHBlcm1hbmVudGx5IGNv bmZpZ3VyZWQgaW4gdGhlIEZEQiBpbiBDLVZMQU4gY29tcG9uZW50cyBhbmQgRVJzLgo+IAo+IEVh Y2ggb2YgdGhlIHJlc2VydmVkIE1BQyBhZGRyZXNzZXMgc3BlY2lmaWVkIGluIFRhYmxlIDgtMgo+ ICgwMS04MC1DMi0wMC0wMC1bMDEsMDIsMDMsMDQsMDUsMDYsMDcsMDgsMDksMEEsMEVdKSBzaGFs bCBiZSBwZXJtYW5lbnRseQo+IGNvbmZpZ3VyZWQgaW4gdGhlIEZEQiBpbiBTLVZMQU4gY29tcG9u ZW50cy4KPiAKPiBFYWNoIG9mIHRoZSByZXNlcnZlZCBNQUMgYWRkcmVzc2VzIHNwZWNpZmllZCBp biBUYWJsZSA4LTMKPiAoMDEtODAtQzItMDAtMDAtWzAxLDAyLDA0LDBFXSkgc2hhbGwgYmUgcGVy bWFuZW50bHkgY29uZmlndXJlZCBpbiB0aGUgRkRCCj4gaW4gVFBNUiBjb21wb25lbnRzLgo+IAo+ IFRoZSBGREIgZW50cmllcyBmb3IgcmVzZXJ2ZWQgTUFDIGFkZHJlc3NlcyBzaGFsbCBzcGVjaWZ5 IGZpbHRlcmluZyBmb3IgYWxsCj4gQnJpZGdlIFBvcnRzIGFuZCBhbGwgVklEcy4gTWFuYWdlbWVu dCBzaGFsbCBub3QgcHJvdmlkZSB0aGUgY2FwYWJpbGl0eSB0bwo+IG1vZGlmeSBvciByZW1vdmUg ZW50cmllcyBmb3IgcmVzZXJ2ZWQgTUFDIGFkZHJlc3Nlcy4KPiAKPiBUaGUgYWRkcmVzc2VzIGlu IFRhYmxlIDgtMSwgVGFibGUgOC0yLCBhbmQgVGFibGUgOC0zIGRldGVybWluZSB0aGUgc2NvcGUg b2YKPiBwcm9wYWdhdGlvbiBvZiBQRFVzIHdpdGhpbiBhIEJyaWRnZWQgTmV0d29yaywgYXMgZm9s bG93czoKPiAKPiAgIFRoZSBOZWFyZXN0IEJyaWRnZSBncm91cCBhZGRyZXNzICgwMS04MC1DMi0w MC0wMC0wRSkgaXMgYW4gYWRkcmVzcyB0aGF0Cj4gICBubyBjb25mb3JtYW50IFR3by1Qb3J0IE1B QyBSZWxheSAoVFBNUikgY29tcG9uZW50LCBTZXJ2aWNlIFZMQU4gKFMtVkxBTikKPiAgIGNvbXBv bmVudCwgQ3VzdG9tZXIgVkxBTiAoQy1WTEFOKSBjb21wb25lbnQsIG9yIE1BQyBCcmlkZ2UgY2Fu IGZvcndhcmQuCj4gICBQRFVzIHRyYW5zbWl0dGVkIHVzaW5nIHRoaXMgZGVzdGluYXRpb24gYWRk cmVzcywgb3IgYW55IG90aGVyIGFkZHJlc3Nlcwo+ICAgdGhhdCBhcHBlYXIgaW4gVGFibGUgOC0x LCBUYWJsZSA4LTIsIGFuZCBUYWJsZSA4LTMKPiAgICgwMS04MC1DMi0wMC0wMC1bMDAsMDEsMDIs MDMsMDQsMDUsMDYsMDcsMDgsMDksMEEsMEIsMEMsMEQsMEUsMEZdKSwgY2FuCj4gICB0aGVyZWZv cmUgdHJhdmVsIG5vIGZ1cnRoZXIgdGhhbiB0aG9zZSBzdGF0aW9ucyB0aGF0IGNhbiBiZSByZWFj aGVkIHZpYSBhCj4gICBzaW5nbGUgaW5kaXZpZHVhbCBMQU4gZnJvbSB0aGUgb3JpZ2luYXRpbmcg c3RhdGlvbi4KPiAKPiAgIFRoZSBOZWFyZXN0IG5vbi1UUE1SIEJyaWRnZSBncm91cCBhZGRyZXNz ICgwMS04MC1DMi0wMC0wMC0wMyksIGlzIGFuCj4gICBhZGRyZXNzIHRoYXQgbm8gY29uZm9ybWFu dCBTLVZMQU4gY29tcG9uZW50LCBDLVZMQU4gY29tcG9uZW50LCBvciBNQUMKPiAgIEJyaWRnZSBj YW4gZm9yd2FyZDsgaG93ZXZlciwgdGhpcyBhZGRyZXNzIGlzIHJlbGF5ZWQgYnkgYSBUUE1SIGNv bXBvbmVudC4KPiAgIFBEVXMgdXNpbmcgdGhpcyBkZXN0aW5hdGlvbiBhZGRyZXNzLCBvciBhbnkg b2YgdGhlIG90aGVyIGFkZHJlc3NlcyB0aGF0Cj4gICBhcHBlYXIgaW4gYm90aCBUYWJsZSA4LTEg YW5kIFRhYmxlIDgtMiBidXQgbm90IGluIFRhYmxlIDgtMwo+ICAgKDAxLTgwLUMyLTAwLTAwLVsw MCwwMywwNSwwNiwwNywwOCwwOSwwQSwwQiwwQywwRCwwRl0pLCB3aWxsIGJlIHJlbGF5ZWQKPiAg IGJ5IGFueSBUUE1ScyBidXQgd2lsbCBwcm9wYWdhdGUgbm8gZnVydGhlciB0aGFuIHRoZSBuZWFy ZXN0IFMtVkxBTgo+ICAgY29tcG9uZW50LCBDLVZMQU4gY29tcG9uZW50LCBvciBNQUMgQnJpZGdl Lgo+IAo+ICAgVGhlIE5lYXJlc3QgQ3VzdG9tZXIgQnJpZGdlIGdyb3VwIGFkZHJlc3MgKDAxLTgw LUMyLTAwLTAwLTAwKSBpcyBhbgo+ICAgYWRkcmVzcyB0aGF0IG5vIGNvbmZvcm1hbnQgQy1WTEFO IGNvbXBvbmVudCwgTUFDIEJyaWRnZSBjYW4gZm9yd2FyZDsKPiAgIGhvd2V2ZXIsIGl0IGlzIHJl bGF5ZWQgYnkgVFBNUiBjb21wb25lbnRzIGFuZCBTLVZMQU4gY29tcG9uZW50cy4gUERVcwo+ICAg dXNpbmcgdGhpcyBkZXN0aW5hdGlvbiBhZGRyZXNzLCBvciBhbnkgb2YgdGhlIG90aGVyIGFkZHJl c3NlcyB0aGF0IGFwcGVhcgo+ICAgaW4gVGFibGUgOC0xIGJ1dCBub3QgaW4gZWl0aGVyIFRhYmxl IDgtMiBvciBUYWJsZSA4LTMKPiAgICgwMS04MC1DMi0wMC0wMC1bMDAsMEIsMEMsMEQsMEZdKSwg d2lsbCBiZSByZWxheWVkIGJ5IFRQTVIgY29tcG9uZW50cyBhbmQKPiAgIFMtVkxBTiBjb21wb25l bnRzIGJ1dCB3aWxsIHByb3BhZ2F0ZSBubyBmdXJ0aGVyIHRoYW4gdGhlIG5lYXJlc3QgQy1WTEFO Cj4gICBjb21wb25lbnQgb3IgTUFDIEJyaWRnZS4KPiAKPiBCZWNhdXNlIHRoZSBMTEMgRW50aXR5 IGFzc29jaWF0ZWQgd2l0aCBlYWNoIEJyaWRnZSBQb3J0IGlzIHByb3ZpZGVkIHZpYSBDUFUKPiBw b3J0LCB3ZSBtdXN0IG5vdCBmaWx0ZXIgdGhlc2UgZnJhbWVzIGJ1dCBmb3J3YXJkIHRoZW0gdG8g Q1BVIHBvcnQuCj4gCj4gSW4gYSBCcmlkZ2UsIHRoZSB0cmFuc21pc3Npb24gUG9ydCBpcyBtYWpv cmx5IGRlY2lkZWQgYnkgaW5ncmVzcyBhbmQgZWdyZXNzCj4gcnVsZXMsIEZEQiwgYW5kIHNwYW5u aW5nIHRyZWUgUG9ydCBTdGF0ZSBmdW5jdGlvbnMgb2YgdGhlIEZvcndhcmRpbmcKPiBQcm9jZXNz LiBGb3IgbGluay1sb2NhbCBmcmFtZXMsIG9ubHkgQ1BVIHBvcnQgc2hvdWxkIGJlIGRlc2lnbmF0 ZWQgYXMKPiBkZXN0aW5hdGlvbiBwb3J0IGluIHRoZSBGREIsIGFuZCB0aGUgb3RoZXIgZnVuY3Rp b25zIG9mIHRoZSBGb3J3YXJkaW5nCj4gUHJvY2VzcyBtdXN0IG5vdCBpbnRlcmZlcmUgd2l0aCB0 aGUgZGVjaXNpb24gb2YgdGhlIHRyYW5zbWlzc2lvbiBQb3J0LiBXZQo+IGNhbGwgdGhpcyBwcm9j ZXNzIHRyYXBwaW5nIGZyYW1lcyB0byBDUFUgcG9ydC4KPiAKPiBUaGVyZWZvcmUsIG9uIHRoZSBz d2l0Y2ggd2l0aCBDUFUgcG9ydCBhcmNoaXRlY3R1cmUsIGxpbmstbG9jYWwgZnJhbWVzIG11c3QK PiBiZSB0cmFwcGVkIHRvIENQVSBwb3J0LCBhbmQgY2VydGFpbiBsaW5rLWxvY2FsIGZyYW1lcyBy ZWNlaXZlZCBieSBhIFBvcnQgb2YKPiBhIEJyaWRnZSBjb21wcmlzaW5nIGEgVFBNUiBjb21wb25l bnQgb3IgYW4gUy1WTEFOIGNvbXBvbmVudCBtdXN0IGJlCj4gZXhjbHVkZWQgZnJvbSBpdC4KPiAK PiBBIEJyaWRnZSBvZiB0aGUgc3dpdGNoIHdpdGggQ1BVIGFyY2hpdGVjdHVyZSBjYW5ub3QgY29t cHJpc2UgYSBub24tVHdvLVBvcnQKPiBNQUMgUmVsYXkgKFRQTVIpIGNvbXBvbmVudCBhcyBUUE1S IGNvbXBvbmVudCBpcyBvbmx5IHN1cHBvc2VkIHRvIHN1cHBvcnQgYQo+IHN1YnNldCBvZiB0aGUg ZnVuY3Rpb25hbGl0eSBvZiBhIE1BQyBCcmlkZ2UuIEEgQnJpZGdlIGNvbXByaXNpbmcgdHdvIHBv cnRzCj4gKE1hbmFnZW1lbnQgUG9ydCBkb2Vzbid0IGNvdW50KSBvZiB0aGlzIGFyY2hpdGVjdHVy ZSB3aWxsIGVpdGhlciBmdW5jdGlvbgo+IGFzIGEgc3RhbmRhcmQgTUFDIEJyaWRnZSBvciBhIHN0 YW5kYXJkIFZMQU4gQnJpZGdlLgo+IAo+IFRoZXJlZm9yZSwgYSBCcmlkZ2Ugb2YgdGhpcyBhcmNo aXRlY3R1cmUgY2FuIG9ubHkgY29tcHJpc2UgUy1WTEFOCj4gY29tcG9uZW50cywgQy1WTEFOIGNv bXBvbmVudHMsIG9yIE1BQyBCcmlkZ2UgY29tcG9uZW50cy4gU2luY2UgdGhlcmUncyBubwo+IFRQ TVIgY29tcG9uZW50LCB3ZSBkb24ndCBuZWVkIHRvIHJlbGF5IFBEVXMgdXNpbmcgdGhlIGRlc3Rp bmF0aW9uIGFkZHJlc3Nlcwo+IHNwZWNpZmllZCBvbiB0aGUgTmVhcmVzdCBub24tVFBNUiBzZWN0 aW9uLCBhbmQgdGhlIHByb3BvcnRpb24gb2YgdGhlCj4gTmVhcmVzdCBDdXN0b21lciBCcmlkZ2Ug c2VjdGlvbiB3aGVyZSB0aGV5IG11c3QgYmUgcmVsYXllZCBieSBUUE1SCj4gY29tcG9uZW50cy4K PiAKPiBPbmUgb3B0aW9uIHRvIHRyYXAgbGluay1sb2NhbCBmcmFtZXMgdG8gQ1BVIHBvcnQgaXMg dG8gYWRkIHN0YXRpYyBGREIKPiBlbnRyaWVzIHdpdGggQ1BVIHBvcnQgZGVzaWduYXRlZCBhcyBk ZXN0aW5hdGlvbiBwb3J0LiBIb3dldmVyLCBiZWNhdXNlIHRoYXQKPiBJbmRlcGVuZGVudCBWTEFO IExlYXJuaW5nIChJVkwpIGlzIGJlaW5nIHVzZWQgb24gZXZlcnkgVklELCBlYWNoIGVudHJ5IG9u bHkKPiBhcHBsaWVzIHRvIGEgc2luZ2xlIFZMQU4gSWRlbnRpZmllciAoVklEKS4gRm9yIGEgQnJp ZGdlIGNvbXByaXNpbmcgYSBNQUMKPiBCcmlkZ2UgY29tcG9uZW50IG9yIGEgQy1WTEFOIGNvbXBv bmVudCwgdGhlcmUgd291bGQgaGF2ZSB0byBiZSAxNiB0aW1lcwo+IDQwOTYgZW50cmllcy4gVGhp cyBzd2l0Y2ggaW50ZWxsZWN0dWFsIHByb3BlcnR5IGNhbiBvbmx5IGhvbGQgYSBtYXhpbXVtIG9m Cj4gMjA0OCBlbnRyaWVzLiBVc2luZyB0aGlzIG9wdGlvbiwgdGhlcmUgYWxzbyBpc24ndCBhIG1l Y2hhbmlzbSB0byBwcmV2ZW50Cj4gbGluay1sb2NhbCBmcmFtZXMgZnJvbSBiZWluZyBkaXNjYXJk ZWQgd2hlbiB0aGUgc3Bhbm5pbmcgdHJlZSBQb3J0IFN0YXRlIG9mCj4gdGhlIHJlY2VwdGlvbiBQ b3J0IGlzIGRpc2NhcmRpbmcuCj4gCj4gVGhlIHJlbWFpbmluZyBvcHRpb24gaXMgdG8gdXRpbGlz ZSB0aGUgQlBDLCBSR0FDMSwgUkdBQzIsIFJHQUMzLCBhbmQgUkdBQzQKPiByZWdpc3RlcnMuIFdo aWxzdCB0aGlzIGFwcGxpZXMgdG8gZXZlcnkgVklELCBpdCBkb2Vzbid0IGNvbnRhaW4gYWxsIG9m IHRoZQo+IHJlc2VydmVkIE1BQyBhZGRyZXNzZXMgd2l0aG91dCBhZmZlY3RpbmcgdGhlIHJlbWFp bmluZyBTdGFuZGFyZCBHcm91cCBNQUMKPiBBZGRyZXNzZXMuIFRoZSBSRVZfVU4gZnJhbWUgdGFn IHV0aWxpc2VkIHVzaW5nIHRoZSBSR0FDNCByZWdpc3RlciBjb3ZlcnMKPiB0aGUgcmVtYWluaW5n IDAxLTgwLUMyLTAwLTAwLVswNCwwNSwwNiwwNywwOCwwOSwwQSwwQiwwQywwRCwwRl0gZGVzdGlu YXRpb24KPiBhZGRyZXNzZXMuIEl0IGFsc28gaW5jbHVkZXMgdGhlIDAxLTgwLUMyLTAwLTAwLTIy IHRvIDAxLTgwLUMyLTAwLTAwLUZGCj4gZGVzdGluYXRpb24gYWRkcmVzc2VzIHdoaWNoIG1heSBi ZSByZWxheWVkIGJ5IE1BQyBCcmlkZ2VzIG9yIFZMQU4gQnJpZGdlcy4KPiBUaGUgbGF0dGVyIG9w dGlvbiBwcm92aWRlcyBiZXR0ZXIgYnV0IG5vdCBjb21wbGV0ZSBjb25mb3JtYW5jZS4KPiAKPiBU aGlzIHN3aXRjaCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgYWxzbyBkb2VzIG5vdCBwcm92aWRlIGEg bWVjaGFuaXNtIHRvIHRyYXAKPiBsaW5rLWxvY2FsIGZyYW1lcyB3aXRoIHNwZWNpZmljIGRlc3Rp bmF0aW9uIGFkZHJlc3NlcyB0byBDUFUgcG9ydCBieQo+IEJyaWRnZSwgdG8gY29uZm9ybSB0byB0 aGUgZmlsdGVyaW5nIHJ1bGVzIGZvciB0aGUgZGlzdGluY3QgQnJpZGdlCj4gY29tcG9uZW50cy4K PiAKPiBUaGVyZWZvcmUsIHJlZ2FyZGxlc3Mgb2YgdGhlIHR5cGUgb2YgdGhlIEJyaWRnZSBjb21w b25lbnQsIGxpbmstbG9jYWwKPiBmcmFtZXMgd2l0aCB0aGVzZSBkZXN0aW5hdGlvbiBhZGRyZXNz ZXMgd2lsbCBiZSB0cmFwcGVkIHRvIENQVSBwb3J0Ogo+IAo+IDAxLTgwLUMyLTAwLTAwLVswMCww MSwwMiwwMywwRV0KPiAKPiBJbiBhIEJyaWRnZSBjb21wcmlzaW5nIGEgTUFDIEJyaWRnZSBjb21w b25lbnQgb3IgYSBDLVZMQU4gY29tcG9uZW50Ogo+IAo+ICAgTGluay1sb2NhbCBmcmFtZXMgd2l0 aCB0aGVzZSBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgd29uJ3QgYmUgdHJhcHBlZCB0bwo+ICAgQ1BV IHBvcnQgd2hpY2ggd29uJ3QgY29uZm9ybSB0byBJRUVFIFN0ZCA4MDIuMVEtMjAyMjoKPiAKPiAg IDAxLTgwLUMyLTAwLTAwLVswNCwwNSwwNiwwNywwOCwwOSwwQSwwQiwwQywwRCwwRl0KPiAKPiBJ biBhIEJyaWRnZSBjb21wcmlzaW5nIGFuIFMtVkxBTiBjb21wb25lbnQ6Cj4gCj4gICBMaW5rLWxv Y2FsIGZyYW1lcyB3aXRoIHRoZXNlIGRlc3RpbmF0aW9uIGFkZHJlc3NlcyB3aWxsIGJlIHRyYXBw ZWQgdG8gQ1BVCj4gICBwb3J0IHdoaWNoIHdvbid0IGNvbmZvcm0gdG8gSUVFRSBTdGQgODAyLjFR LTIwMjI6Cj4gCj4gICAwMS04MC1DMi0wMC0wMC0wMAo+IAo+ICAgTGluay1sb2NhbCBmcmFtZXMg d2l0aCB0aGVzZSBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgd29uJ3QgYmUgdHJhcHBlZCB0bwo+ICAg Q1BVIHBvcnQgd2hpY2ggd29uJ3QgY29uZm9ybSB0byBJRUVFIFN0ZCA4MDIuMVEtMjAyMjoKPiAK PiAgIDAxLTgwLUMyLTAwLTAwLVswNCwwNSwwNiwwNywwOCwwOSwwQV0KPiAKPiBDdXJyZW50bHkg b24gdGhpcyBzd2l0Y2ggaW50ZWxsZWN0dWFsIHByb3BlcnR5LCBpZiB0aGUgc3Bhbm5pbmcgdHJl ZSBQb3J0Cj4gU3RhdGUgb2YgdGhlIHJlY2VwdGlvbiBQb3J0IGlzIGRpc2NhcmRpbmcsIGxpbmst bG9jYWwgZnJhbWVzIHdpbGwgYmUKPiBkaXNjYXJkZWQuCj4gCj4gVG8gdHJhcCBsaW5rLWxvY2Fs IGZyYW1lcyByZWdhcmRsZXNzIG9mIHRoZSBzcGFubmluZyB0cmVlIFBvcnQgU3RhdGUsIG1ha2UK PiB0aGUgc3dpdGNoIHJlZ2FyZCB0aGVtIGFzIEJQRFUuIFRoaXMgc3dpdGNoIGludGVsbGVjdHVh bCBwcm9wZXJ0eSBvbmx5IGxldHMKPiB0aGUgZnJhbWVzIHJlZ2FyZGVkIGFzIEJQRFUgYnlwYXNz IHRoZSBzcGFubmluZyB0cmVlIFBvcnQgU3RhdGUgZnVuY3Rpb24gb2YKPiB0aGUgRm9yd2FyZGlu ZyBQcm9jZXNzLgo+IAo+IFdpdGggdGhpcyBjaGFuZ2UsIHRoZSBvbmx5IHJlbWFpbmluZyBpbnRl cmZlcmVuY2UgbGVmdCBpcyB0aGUgaW5ncmVzcwo+IHJ1bGVzLiBXaGVuIHRoZSByZWNlcHRpb24g UG9ydCBoYXMgbm8gUFZJRCBhc3NpZ25lZCBvbiBzb2Z0d2FyZSwKPiBWTEFOLXVudGFnZ2VkIGZy YW1lcyB3b24ndCBiZSBhbGxvd2VkIGluLiBUaGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYQo+IG1l Y2hhbmlzbSBvbiB0aGUgc3dpdGNoIGludGVsbGVjdHVhbCBwcm9wZXJ0eSB0byBoYXZlIGxpbmst bG9jYWwgZnJhbWVzCj4gYnlwYXNzIHRoaXMgZnVuY3Rpb24gb2YgdGhlIEZvcndhcmRpbmcgUHJv Y2Vzcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBcsSxbsOnIMOcTkFMIDxhcmluYy51bmFsQGFyaW5j OS5jb20+CgpSZXZpZXdlZC1ieTogRGFuaWVsIEdvbGxlIDxkYW5pZWxAbWFrcm90b3BpYS5vcmc+ CgpUaGFuayB5b3UgZm9yIHRoZSBleGNlbGxlbnQgd3JpdGUgdXAhCgo+IC0tLQo+ICBkcml2ZXJz L25ldC9kc2EvbXQ3NTMwLmMgfCAyMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0KPiAgZHJpdmVycy9uZXQvZHNhL210NzUzMC5oIHwgICA1ICsrCj4gIDIg ZmlsZXMgY2hhbmdlZCwgMjAwIGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3 NTMwLmMKPiBpbmRleCAxMDM1ODIwYzIzNzcuLjI1NDUwMWY2MzczMSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMKPiArKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMK PiBAQCAtOTUwLDIwICs5NTAsMTczIEBAIHN0YXRpYyB2b2lkIG10NzUzMF9zZXR1cF9wb3J0NShz dHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCj4gIAltdXRl eF91bmxvY2soJnByaXYtPnJlZ19tdXRleCk7Cj4gIH0KPiAgCj4gLS8qIE9uIHBhZ2UgMjA1LCBz ZWN0aW9uICI4LjYuMyBGcmFtZSBmaWx0ZXJpbmciIG9mIHRoZSBhY3RpdmUgc3RhbmRhcmQsIElF RUUgU3RkCj4gLSAqIDgwMi4xUeKEoi0yMDIyLCBpdCBpcyBzdGF0ZWQgdGhhdCBmcmFtZXMgd2l0 aCAwMTo4MDpDMjowMDowMDowMC0wRiBhcyBNQUMgREEKPiAtICogbXVzdCBvbmx5IGJlIHByb3Bh Z2F0ZWQgdG8gQy1WTEFOIGFuZCBNQUMgQnJpZGdlIGNvbXBvbmVudHMuIFRoYXQgbWVhbnMKPiAt ICogVkxBTi1hd2FyZSBhbmQgVkxBTi11bmF3YXJlIGJyaWRnZXMuIE9uIHRoZSBzd2l0Y2ggZGVz aWducyB3aXRoIENQVSBwb3J0cywKPiAtICogdGhlc2UgZnJhbWVzIGFyZSBzdXBwb3NlZCB0byBi ZSBwcm9jZXNzZWQgYnkgdGhlIENQVSAoc29mdHdhcmUpLiBTbyB3ZSBtYWtlCj4gLSAqIHRoZSBz d2l0Y2ggb25seSBmb3J3YXJkIHRoZW0gdG8gdGhlIENQVSBwb3J0LiBBbmQgaWYgcmVjZWl2ZWQg ZnJvbSBhIENQVQo+IC0gKiBwb3J0LCBmb3J3YXJkIHRvIGEgc2luZ2xlIHBvcnQuIFRoZSBzb2Z0 d2FyZSBpcyByZXNwb25zaWJsZSBvZiBtYWtpbmcgdGhlCj4gLSAqIHN3aXRjaCBjb25mb3JtIHRv IHRoZSBsYXR0ZXIgYnkgc2V0dGluZyBhIHNpbmdsZSBwb3J0IGFzIGRlc3RpbmF0aW9uIHBvcnQg b24KPiAtICogdGhlIHNwZWNpYWwgdGFnLgo+ICsvKiBJbiBDbGF1c2UgNSBvZiBJRUVFIFN0ZCA4 MDItMjAxNCwgdHdvIHN1YmxheWVycyBvZiB0aGUgZGF0YSBsaW5rIGxheWVyIChETEwpCj4gKyAq IG9mIHRoZSBPcGVuIFN5c3RlbXMgSW50ZXJjb25uZWN0aW9uIGJhc2ljIHJlZmVyZW5jZSBtb2Rl bCAoT1NJL1JNKSBhcmUKPiArICogZGVzY3JpYmVkOyB0aGUgbWVkaXVtIGFjY2VzcyBjb250cm9s IChNQUMpIGFuZCBsb2dpY2FsIGxpbmsgY29udHJvbCAoTExDKQo+ICsgKiBzdWJsYXllcnMuIFRo ZSBNQUMgc3VibGF5ZXIgaXMgdGhlIG9uZSBmYWNpbmcgdGhlIHBoeXNpY2FsIGxheWVyLgo+ICAg Kgo+IC0gKiBUaGlzIHN3aXRjaCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgY2Fubm90IGNvbmZvcm0g dG8gdGhpcyBwYXJ0IG9mIHRoZSBzdGFuZGFyZAo+IC0gKiBmdWxseS4gV2hpbHN0IHRoZSBSRVZf VU4gZnJhbWUgdGFnIGNvdmVycyB0aGUgcmVtYWluaW5nIDowNC0wRCBhbmQgOjBGIE1BQwo+IC0g KiBEQXMsIGl0IGFsc28gaW5jbHVkZXMgOjIyLUZGIHdoaWNoIHRoZSBzY29wZSBvZiBwcm9wYWdh dGlvbiBpcyBub3Qgc3VwcG9zZWQKPiAtICogdG8gYmUgcmVzdHJpY3RlZCBmb3IgdGhlc2UgTUFD IERBcy4KPiArICogSW4gOC4yIG9mIElFRUUgU3RkIDgwMi4xUS0yMDIyLCB0aGUgQnJpZGdlIGFy Y2hpdGVjdHVyZSBpcyBkZXNjcmliZWQuIEEKPiArICogQnJpZGdlIGNvbXBvbmVudCBjb21wcmlz ZXMgYSBNQUMgUmVsYXkgRW50aXR5IGZvciBpbnRlcmNvbm5lY3RpbmcgdGhlIFBvcnRzCj4gKyAq IG9mIHRoZSBCcmlkZ2UsIGF0IGxlYXN0IHR3byBQb3J0cywgYW5kIGhpZ2hlciBsYXllciBlbnRp dGllcyB3aXRoIGF0IGxlYXN0IGEKPiArICogU3Bhbm5pbmcgVHJlZSBQcm90b2NvbCBFbnRpdHkg aW5jbHVkZWQuCj4gKyAqCj4gKyAqIEVhY2ggQnJpZGdlIFBvcnQgYWxzbyBmdW5jdGlvbnMgYXMg YW4gZW5kIHN0YXRpb24gYW5kIHNoYWxsIHByb3ZpZGUgdGhlIE1BQwo+ICsgKiBTZXJ2aWNlIHRv IGFuIExMQyBFbnRpdHkuIEVhY2ggaW5zdGFuY2Ugb2YgdGhlIE1BQyBTZXJ2aWNlIGlzIHByb3Zp ZGVkIHRvIGEKPiArICogZGlzdGluY3QgTExDIEVudGl0eSB0aGF0IHN1cHBvcnRzIHByb3RvY29s IGlkZW50aWZpY2F0aW9uLCBtdWx0aXBsZXhpbmcsIGFuZAo+ICsgKiBkZW11bHRpcGxleGluZywg Zm9yIHByb3RvY29sIGRhdGEgdW5pdCAoUERVKSB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbiBi eQo+ICsgKiBvbmUgb3IgbW9yZSBoaWdoZXIgbGF5ZXIgZW50aXRpZXMuCj4gKyAqCj4gKyAqIEl0 IGlzIGRlc2NyaWJlZCBpbiA4LjEzLjkgb2YgSUVFRSBTdGQgODAyLjFRLTIwMjIgdGhhdCBpbiBh IEJyaWRnZSwgdGhlIExMQwo+ICsgKiBFbnRpdHkgYXNzb2NpYXRlZCB3aXRoIGVhY2ggQnJpZGdl IFBvcnQgaXMgbW9kZWxlZCBhcyBiZWluZyBkaXJlY3RseQo+ICsgKiBjb25uZWN0ZWQgdG8gdGhl IGF0dGFjaGVkIExvY2FsIEFyZWEgTmV0d29yayAoTEFOKS4KPiArICoKPiArICogT24gdGhlIHN3 aXRjaCB3aXRoIENQVSBwb3J0IGFyY2hpdGVjdHVyZSwgQ1BVIHBvcnQgZnVuY3Rpb25zIGFzIE1h bmFnZW1lbnQKPiArICogUG9ydCwgYW5kIHRoZSBNYW5hZ2VtZW50IFBvcnQgZnVuY3Rpb25hbGl0 eSBpcyBwcm92aWRlZCBieSBzb2Z0d2FyZSB3aGljaAo+ICsgKiBmdW5jdGlvbnMgYXMgYW4gZW5k IHN0YXRpb24uIFNvZnR3YXJlIGlzIGNvbm5lY3RlZCB0byBhbiBJRUVFIDgwMiBMQU4gdGhhdCBp cwo+ICsgKiB3aG9sbHkgY29udGFpbmVkIHdpdGhpbiB0aGUgc3lzdGVtIHRoYXQgaW5jb3Jwb3Jh dGVzIHRoZSBCcmlkZ2UuIFNvZnR3YXJlCj4gKyAqIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgTExD IEVudGl0eSBhc3NvY2lhdGVkIHdpdGggZWFjaCBCcmlkZ2UgUG9ydCBieSB0aGUKPiArICogdmFs dWUgb2YgdGhlIHNvdXJjZSBwb3J0IGZpZWxkIG9uIHRoZSBzcGVjaWFsIHRhZyBvbiB0aGUgZnJh bWUgcmVjZWl2ZWQgYnkKPiArICogc29mdHdhcmUuCj4gKyAqCj4gKyAqIFdlIGNhbGwgZnJhbWVz IHRoYXQgY2FycnkgY29udHJvbCBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgdGhlIGFjdGl2ZQo+ ICsgKiB0b3BvbG9neSBhbmQgY3VycmVudCBleHRlbnQgb2YgZWFjaCBWaXJ0dWFsIExvY2FsIEFy ZWEgTmV0d29yayAoVkxBTiksIGkuZS4sCj4gKyAqIHNwYW5uaW5nIHRyZWUgb3IgU2hvcnRlc3Qg UGF0aCBCcmlkZ2luZyAoU1BCKSBhbmQgTXVsdGlwbGUgVkxBTiBSZWdpc3RyYXRpb24KPiArICog UHJvdG9jb2wgRGF0YSBVbml0cyAoTVZSUERVcyksIGFuZCBmcmFtZXMgZnJvbSBvdGhlciBsaW5r IGNvbnN0cmFpbmVkCj4gKyAqIHByb3RvY29scywgc3VjaCBhcyBFeHRlbnNpYmxlIEF1dGhlbnRp Y2F0aW9uIFByb3RvY29sIG92ZXIgTEFOIChFQVBPTCkgYW5kCj4gKyAqIExpbmsgTGF5ZXIgRGlz Y292ZXJ5IFByb3RvY29sIChMTERQKSwgbGluay1sb2NhbCBmcmFtZXMuIFRoZXkgYXJlIG5vdAo+ ICsgKiBmb3J3YXJkZWQgYnkgYSBCcmlkZ2UuIFBlcm1hbmVudGx5IGNvbmZpZ3VyZWQgZW50cmll cyBpbiB0aGUgZmlsdGVyaW5nCj4gKyAqIGRhdGFiYXNlIChGREIpIGVuc3VyZSB0aGF0IHN1Y2gg ZnJhbWVzIGFyZSBkaXNjYXJkZWQgYnkgdGhlIEZvcndhcmRpbmcKPiArICogUHJvY2Vzcy4gSW4g OC42LjMgb2YgSUVFRSBTdGQgODAyLjFRLTIwMjIsIHRoaXMgaXMgZGVzY3JpYmVkIGluIGRldGFp bDoKPiArICoKPiArICogRWFjaCBvZiB0aGUgcmVzZXJ2ZWQgTUFDIGFkZHJlc3NlcyBzcGVjaWZp ZWQgaW4gVGFibGUgOC0xCj4gKyAqICgwMS04MC1DMi0wMC0wMC1bMDAsMDEsMDIsMDMsMDQsMDUs MDYsMDcsMDgsMDksMEEsMEIsMEMsMEQsMEUsMEZdKSBzaGFsbCBiZQo+ICsgKiBwZXJtYW5lbnRs eSBjb25maWd1cmVkIGluIHRoZSBGREIgaW4gQy1WTEFOIGNvbXBvbmVudHMgYW5kIEVScy4KPiAr ICoKPiArICogRWFjaCBvZiB0aGUgcmVzZXJ2ZWQgTUFDIGFkZHJlc3NlcyBzcGVjaWZpZWQgaW4g VGFibGUgOC0yCj4gKyAqICgwMS04MC1DMi0wMC0wMC1bMDEsMDIsMDMsMDQsMDUsMDYsMDcsMDgs MDksMEEsMEVdKSBzaGFsbCBiZSBwZXJtYW5lbnRseQo+ICsgKiBjb25maWd1cmVkIGluIHRoZSBG REIgaW4gUy1WTEFOIGNvbXBvbmVudHMuCj4gKyAqCj4gKyAqIEVhY2ggb2YgdGhlIHJlc2VydmVk IE1BQyBhZGRyZXNzZXMgc3BlY2lmaWVkIGluIFRhYmxlIDgtMwo+ICsgKiAoMDEtODAtQzItMDAt MDAtWzAxLDAyLDA0LDBFXSkgc2hhbGwgYmUgcGVybWFuZW50bHkgY29uZmlndXJlZCBpbiB0aGUg RkRCIGluCj4gKyAqIFRQTVIgY29tcG9uZW50cy4KPiArICoKPiArICogVGhlIEZEQiBlbnRyaWVz IGZvciByZXNlcnZlZCBNQUMgYWRkcmVzc2VzIHNoYWxsIHNwZWNpZnkgZmlsdGVyaW5nIGZvciBh bGwKPiArICogQnJpZGdlIFBvcnRzIGFuZCBhbGwgVklEcy4gTWFuYWdlbWVudCBzaGFsbCBub3Qg cHJvdmlkZSB0aGUgY2FwYWJpbGl0eSB0bwo+ICsgKiBtb2RpZnkgb3IgcmVtb3ZlIGVudHJpZXMg Zm9yIHJlc2VydmVkIE1BQyBhZGRyZXNzZXMuCj4gKyAqCj4gKyAqIFRoZSBhZGRyZXNzZXMgaW4g VGFibGUgOC0xLCBUYWJsZSA4LTIsIGFuZCBUYWJsZSA4LTMgZGV0ZXJtaW5lIHRoZSBzY29wZSBv Zgo+ICsgKiBwcm9wYWdhdGlvbiBvZiBQRFVzIHdpdGhpbiBhIEJyaWRnZWQgTmV0d29yaywgYXMg Zm9sbG93czoKPiArICoKPiArICogICBUaGUgTmVhcmVzdCBCcmlkZ2UgZ3JvdXAgYWRkcmVzcyAo MDEtODAtQzItMDAtMDAtMEUpIGlzIGFuIGFkZHJlc3MgdGhhdCBubwo+ICsgKiAgIGNvbmZvcm1h bnQgVHdvLVBvcnQgTUFDIFJlbGF5IChUUE1SKSBjb21wb25lbnQsIFNlcnZpY2UgVkxBTiAoUy1W TEFOKQo+ICsgKiAgIGNvbXBvbmVudCwgQ3VzdG9tZXIgVkxBTiAoQy1WTEFOKSBjb21wb25lbnQs IG9yIE1BQyBCcmlkZ2UgY2FuIGZvcndhcmQuCj4gKyAqICAgUERVcyB0cmFuc21pdHRlZCB1c2lu ZyB0aGlzIGRlc3RpbmF0aW9uIGFkZHJlc3MsIG9yIGFueSBvdGhlciBhZGRyZXNzZXMKPiArICog ICB0aGF0IGFwcGVhciBpbiBUYWJsZSA4LTEsIFRhYmxlIDgtMiwgYW5kIFRhYmxlIDgtMwo+ICsg KiAgICgwMS04MC1DMi0wMC0wMC1bMDAsMDEsMDIsMDMsMDQsMDUsMDYsMDcsMDgsMDksMEEsMEIs MEMsMEQsMEUsMEZdKSwgY2FuCj4gKyAqICAgdGhlcmVmb3JlIHRyYXZlbCBubyBmdXJ0aGVyIHRo YW4gdGhvc2Ugc3RhdGlvbnMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgYQo+ICsgKiAgIHNpbmds ZSBpbmRpdmlkdWFsIExBTiBmcm9tIHRoZSBvcmlnaW5hdGluZyBzdGF0aW9uLgo+ICsgKgo+ICsg KiAgIFRoZSBOZWFyZXN0IG5vbi1UUE1SIEJyaWRnZSBncm91cCBhZGRyZXNzICgwMS04MC1DMi0w MC0wMC0wMyksIGlzIGFuCj4gKyAqICAgYWRkcmVzcyB0aGF0IG5vIGNvbmZvcm1hbnQgUy1WTEFO IGNvbXBvbmVudCwgQy1WTEFOIGNvbXBvbmVudCwgb3IgTUFDCj4gKyAqICAgQnJpZGdlIGNhbiBm b3J3YXJkOyBob3dldmVyLCB0aGlzIGFkZHJlc3MgaXMgcmVsYXllZCBieSBhIFRQTVIgY29tcG9u ZW50Lgo+ICsgKiAgIFBEVXMgdXNpbmcgdGhpcyBkZXN0aW5hdGlvbiBhZGRyZXNzLCBvciBhbnkg b2YgdGhlIG90aGVyIGFkZHJlc3NlcyB0aGF0Cj4gKyAqICAgYXBwZWFyIGluIGJvdGggVGFibGUg OC0xIGFuZCBUYWJsZSA4LTIgYnV0IG5vdCBpbiBUYWJsZSA4LTMKPiArICogICAoMDEtODAtQzIt MDAtMDAtWzAwLDAzLDA1LDA2LDA3LDA4LDA5LDBBLDBCLDBDLDBELDBGXSksIHdpbGwgYmUgcmVs YXllZCBieQo+ICsgKiAgIGFueSBUUE1ScyBidXQgd2lsbCBwcm9wYWdhdGUgbm8gZnVydGhlciB0 aGFuIHRoZSBuZWFyZXN0IFMtVkxBTiBjb21wb25lbnQsCj4gKyAqICAgQy1WTEFOIGNvbXBvbmVu dCwgb3IgTUFDIEJyaWRnZS4KPiArICoKPiArICogICBUaGUgTmVhcmVzdCBDdXN0b21lciBCcmlk Z2UgZ3JvdXAgYWRkcmVzcyAoMDEtODAtQzItMDAtMDAtMDApIGlzIGFuIGFkZHJlc3MKPiArICog ICB0aGF0IG5vIGNvbmZvcm1hbnQgQy1WTEFOIGNvbXBvbmVudCwgTUFDIEJyaWRnZSBjYW4gZm9y d2FyZDsgaG93ZXZlciwgaXQgaXMKPiArICogICByZWxheWVkIGJ5IFRQTVIgY29tcG9uZW50cyBh bmQgUy1WTEFOIGNvbXBvbmVudHMuIFBEVXMgdXNpbmcgdGhpcwo+ICsgKiAgIGRlc3RpbmF0aW9u IGFkZHJlc3MsIG9yIGFueSBvZiB0aGUgb3RoZXIgYWRkcmVzc2VzIHRoYXQgYXBwZWFyIGluIFRh YmxlIDgtMQo+ICsgKiAgIGJ1dCBub3QgaW4gZWl0aGVyIFRhYmxlIDgtMiBvciBUYWJsZSA4LTMg KDAxLTgwLUMyLTAwLTAwLVswMCwwQiwwQywwRCwwRl0pLAo+ICsgKiAgIHdpbGwgYmUgcmVsYXll ZCBieSBUUE1SIGNvbXBvbmVudHMgYW5kIFMtVkxBTiBjb21wb25lbnRzIGJ1dCB3aWxsIHByb3Bh Z2F0ZQo+ICsgKiAgIG5vIGZ1cnRoZXIgdGhhbiB0aGUgbmVhcmVzdCBDLVZMQU4gY29tcG9uZW50 IG9yIE1BQyBCcmlkZ2UuCj4gKyAqCj4gKyAqIEJlY2F1c2UgdGhlIExMQyBFbnRpdHkgYXNzb2Np YXRlZCB3aXRoIGVhY2ggQnJpZGdlIFBvcnQgaXMgcHJvdmlkZWQgdmlhIENQVQo+ICsgKiBwb3J0 LCB3ZSBtdXN0IG5vdCBmaWx0ZXIgdGhlc2UgZnJhbWVzIGJ1dCBmb3J3YXJkIHRoZW0gdG8gQ1BV IHBvcnQuCj4gKyAqCj4gKyAqIEluIGEgQnJpZGdlLCB0aGUgdHJhbnNtaXNzaW9uIFBvcnQgaXMg bWFqb3JseSBkZWNpZGVkIGJ5IGluZ3Jlc3MgYW5kIGVncmVzcwo+ICsgKiBydWxlcywgRkRCLCBh bmQgc3Bhbm5pbmcgdHJlZSBQb3J0IFN0YXRlIGZ1bmN0aW9ucyBvZiB0aGUgRm9yd2FyZGluZyBQ cm9jZXNzLgo+ICsgKiBGb3IgbGluay1sb2NhbCBmcmFtZXMsIG9ubHkgQ1BVIHBvcnQgc2hvdWxk IGJlIGRlc2lnbmF0ZWQgYXMgZGVzdGluYXRpb24gcG9ydAo+ICsgKiBpbiB0aGUgRkRCLCBhbmQg dGhlIG90aGVyIGZ1bmN0aW9ucyBvZiB0aGUgRm9yd2FyZGluZyBQcm9jZXNzIG11c3Qgbm90Cj4g KyAqIGludGVyZmVyZSB3aXRoIHRoZSBkZWNpc2lvbiBvZiB0aGUgdHJhbnNtaXNzaW9uIFBvcnQu IFdlIGNhbGwgdGhpcyBwcm9jZXNzCj4gKyAqIHRyYXBwaW5nIGZyYW1lcyB0byBDUFUgcG9ydC4K PiArICoKPiArICogVGhlcmVmb3JlLCBvbiB0aGUgc3dpdGNoIHdpdGggQ1BVIHBvcnQgYXJjaGl0 ZWN0dXJlLCBsaW5rLWxvY2FsIGZyYW1lcyBtdXN0Cj4gKyAqIGJlIHRyYXBwZWQgdG8gQ1BVIHBv cnQsIGFuZCBjZXJ0YWluIGxpbmstbG9jYWwgZnJhbWVzIHJlY2VpdmVkIGJ5IGEgUG9ydCBvZiBh Cj4gKyAqIEJyaWRnZSBjb21wcmlzaW5nIGEgVFBNUiBjb21wb25lbnQgb3IgYW4gUy1WTEFOIGNv bXBvbmVudCBtdXN0IGJlIGV4Y2x1ZGVkCj4gKyAqIGZyb20gaXQuCj4gKyAqCj4gKyAqIEEgQnJp ZGdlIG9mIHRoZSBzd2l0Y2ggd2l0aCBDUFUgYXJjaGl0ZWN0dXJlIGNhbm5vdCBjb21wcmlzZSBh IG5vbi1Ud28tUG9ydAo+ICsgKiBNQUMgUmVsYXkgKFRQTVIpIGNvbXBvbmVudCBhcyBUUE1SIGNv bXBvbmVudCBpcyBvbmx5IHN1cHBvc2VkIHRvIHN1cHBvcnQgYQo+ICsgKiBzdWJzZXQgb2YgdGhl IGZ1bmN0aW9uYWxpdHkgb2YgYSBNQUMgQnJpZGdlLiBBIEJyaWRnZSBjb21wcmlzaW5nIHR3byBw b3J0cwo+ICsgKiAoTWFuYWdlbWVudCBQb3J0IGRvZXNuJ3QgY291bnQpIG9mIHRoaXMgYXJjaGl0 ZWN0dXJlIHdpbGwgZWl0aGVyIGZ1bmN0aW9uIGFzCj4gKyAqIGEgc3RhbmRhcmQgTUFDIEJyaWRn ZSBvciBhIHN0YW5kYXJkIFZMQU4gQnJpZGdlLgo+ICsgKgo+ICsgKiBUaGVyZWZvcmUsIGEgQnJp ZGdlIG9mIHRoaXMgYXJjaGl0ZWN0dXJlIGNhbiBvbmx5IGNvbXByaXNlIFMtVkxBTiBjb21wb25l bnRzLAo+ICsgKiBDLVZMQU4gY29tcG9uZW50cywgb3IgTUFDIEJyaWRnZSBjb21wb25lbnRzLiBT aW5jZSB0aGVyZSdzIG5vIFRQTVIgY29tcG9uZW50LAo+ICsgKiB3ZSBkb24ndCBuZWVkIHRvIHJl bGF5IFBEVXMgdXNpbmcgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3NlcyBzcGVjaWZpZWQgb24gdGhl Cj4gKyAqIE5lYXJlc3Qgbm9uLVRQTVIgc2VjdGlvbiwgYW5kIHRoZSBwcm9wb3J0aW9uIG9mIHRo ZSBOZWFyZXN0IEN1c3RvbWVyIEJyaWRnZQo+ICsgKiBzZWN0aW9uIHdoZXJlIHRoZXkgbXVzdCBi ZSByZWxheWVkIGJ5IFRQTVIgY29tcG9uZW50cy4KPiArICoKPiArICogT25lIG9wdGlvbiB0byB0 cmFwIGxpbmstbG9jYWwgZnJhbWVzIHRvIENQVSBwb3J0IGlzIHRvIGFkZCBzdGF0aWMgRkRCIGVu dHJpZXMKPiArICogd2l0aCBDUFUgcG9ydCBkZXNpZ25hdGVkIGFzIGRlc3RpbmF0aW9uIHBvcnQu IEhvd2V2ZXIsIGJlY2F1c2UgdGhhdAo+ICsgKiBJbmRlcGVuZGVudCBWTEFOIExlYXJuaW5nIChJ VkwpIGlzIGJlaW5nIHVzZWQgb24gZXZlcnkgVklELCBlYWNoIGVudHJ5IG9ubHkKPiArICogYXBw bGllcyB0byBhIHNpbmdsZSBWTEFOIElkZW50aWZpZXIgKFZJRCkuIEZvciBhIEJyaWRnZSBjb21w cmlzaW5nIGEgTUFDCj4gKyAqIEJyaWRnZSBjb21wb25lbnQgb3IgYSBDLVZMQU4gY29tcG9uZW50 LCB0aGVyZSB3b3VsZCBoYXZlIHRvIGJlIDE2IHRpbWVzIDQwOTYKPiArICogZW50cmllcy4gVGhp cyBzd2l0Y2ggaW50ZWxsZWN0dWFsIHByb3BlcnR5IGNhbiBvbmx5IGhvbGQgYSBtYXhpbXVtIG9m IDIwNDgKPiArICogZW50cmllcy4gVXNpbmcgdGhpcyBvcHRpb24sIHRoZXJlIGFsc28gaXNuJ3Qg YSBtZWNoYW5pc20gdG8gcHJldmVudAo+ICsgKiBsaW5rLWxvY2FsIGZyYW1lcyBmcm9tIGJlaW5n IGRpc2NhcmRlZCB3aGVuIHRoZSBzcGFubmluZyB0cmVlIFBvcnQgU3RhdGUgb2YKPiArICogdGhl IHJlY2VwdGlvbiBQb3J0IGlzIGRpc2NhcmRpbmcuCj4gKyAqCj4gKyAqIFRoZSByZW1haW5pbmcg b3B0aW9uIGlzIHRvIHV0aWxpc2UgdGhlIEJQQywgUkdBQzEsIFJHQUMyLCBSR0FDMywgYW5kIFJH QUM0Cj4gKyAqIHJlZ2lzdGVycy4gV2hpbHN0IHRoaXMgYXBwbGllcyB0byBldmVyeSBWSUQsIGl0 IGRvZXNuJ3QgY29udGFpbiBhbGwgb2YgdGhlCj4gKyAqIHJlc2VydmVkIE1BQyBhZGRyZXNzZXMg d2l0aG91dCBhZmZlY3RpbmcgdGhlIHJlbWFpbmluZyBTdGFuZGFyZCBHcm91cCBNQUMKPiArICog QWRkcmVzc2VzLiBUaGUgUkVWX1VOIGZyYW1lIHRhZyB1dGlsaXNlZCB1c2luZyB0aGUgUkdBQzQg cmVnaXN0ZXIgY292ZXJzIHRoZQo+ICsgKiByZW1haW5pbmcgMDEtODAtQzItMDAtMDAtWzA0LDA1 LDA2LDA3LDA4LDA5LDBBLDBCLDBDLDBELDBGXSBkZXN0aW5hdGlvbgo+ICsgKiBhZGRyZXNzZXMu IEl0IGFsc28gaW5jbHVkZXMgdGhlIDAxLTgwLUMyLTAwLTAwLTIyIHRvIDAxLTgwLUMyLTAwLTAw LUZGCj4gKyAqIGRlc3RpbmF0aW9uIGFkZHJlc3NlcyB3aGljaCBtYXkgYmUgcmVsYXllZCBieSBN QUMgQnJpZGdlcyBvciBWTEFOIEJyaWRnZXMuCj4gKyAqIFRoZSBsYXR0ZXIgb3B0aW9uIHByb3Zp ZGVzIGJldHRlciBidXQgbm90IGNvbXBsZXRlIGNvbmZvcm1hbmNlLgo+ICsgKgo+ICsgKiBUaGlz IHN3aXRjaCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgYWxzbyBkb2VzIG5vdCBwcm92aWRlIGEgbWVj aGFuaXNtIHRvIHRyYXAKPiArICogbGluay1sb2NhbCBmcmFtZXMgd2l0aCBzcGVjaWZpYyBkZXN0 aW5hdGlvbiBhZGRyZXNzZXMgdG8gQ1BVIHBvcnQgYnkgQnJpZGdlLAo+ICsgKiB0byBjb25mb3Jt IHRvIHRoZSBmaWx0ZXJpbmcgcnVsZXMgZm9yIHRoZSBkaXN0aW5jdCBCcmlkZ2UgY29tcG9uZW50 cy4KPiArICoKPiArICogVGhlcmVmb3JlLCByZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mIHRoZSBC cmlkZ2UgY29tcG9uZW50LCBsaW5rLWxvY2FsIGZyYW1lcwo+ICsgKiB3aXRoIHRoZXNlIGRlc3Rp bmF0aW9uIGFkZHJlc3NlcyB3aWxsIGJlIHRyYXBwZWQgdG8gQ1BVIHBvcnQ6Cj4gKyAqCj4gKyAq IDAxLTgwLUMyLTAwLTAwLVswMCwwMSwwMiwwMywwRV0KPiArICoKPiArICogSW4gYSBCcmlkZ2Ug Y29tcHJpc2luZyBhIE1BQyBCcmlkZ2UgY29tcG9uZW50IG9yIGEgQy1WTEFOIGNvbXBvbmVudDoK PiArICoKPiArICogICBMaW5rLWxvY2FsIGZyYW1lcyB3aXRoIHRoZXNlIGRlc3RpbmF0aW9uIGFk ZHJlc3NlcyB3b24ndCBiZSB0cmFwcGVkIHRvIENQVQo+ICsgKiAgIHBvcnQgd2hpY2ggd29uJ3Qg Y29uZm9ybSB0byBJRUVFIFN0ZCA4MDIuMVEtMjAyMjoKPiArICoKPiArICogICAwMS04MC1DMi0w MC0wMC1bMDQsMDUsMDYsMDcsMDgsMDksMEEsMEIsMEMsMEQsMEZdCj4gKyAqCj4gKyAqIEluIGEg QnJpZGdlIGNvbXByaXNpbmcgYW4gUy1WTEFOIGNvbXBvbmVudDoKPiArICoKPiArICogICBMaW5r LWxvY2FsIGZyYW1lcyB3aXRoIHRoZXNlIGRlc3RpbmF0aW9uIGFkZHJlc3NlcyB3aWxsIGJlIHRy YXBwZWQgdG8gQ1BVCj4gKyAqICAgcG9ydCB3aGljaCB3b24ndCBjb25mb3JtIHRvIElFRUUgU3Rk IDgwMi4xUS0yMDIyOgo+ICsgKgo+ICsgKiAgIDAxLTgwLUMyLTAwLTAwLTAwCj4gKyAqCj4gKyAq ICAgTGluay1sb2NhbCBmcmFtZXMgd2l0aCB0aGVzZSBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgd29u J3QgYmUgdHJhcHBlZCB0byBDUFUKPiArICogICBwb3J0IHdoaWNoIHdvbid0IGNvbmZvcm0gdG8g SUVFRSBTdGQgODAyLjFRLTIwMjI6Cj4gKyAqCj4gKyAqICAgMDEtODAtQzItMDAtMDAtWzA0LDA1 LDA2LDA3LDA4LDA5LDBBXQo+ICsgKgo+ICsgKiBUbyB0cmFwIGxpbmstbG9jYWwgZnJhbWVzIHRv IENQVSBwb3J0IGFzIGNvbmZvcm1hbnQgYXMgdGhpcyBzd2l0Y2gKPiArICogaW50ZWxsZWN0dWFs IHByb3BlcnR5IGNhbiBhbGxvdywgbGluay1sb2NhbCBmcmFtZXMgYXJlIG1hZGUgdG8gYmUgcmVn YXJkZWQgYXMKPiArICogQlBEVS4gVGhpcyBpcyBiZWNhdXNlIHRoaXMgc3dpdGNoIGludGVsbGVj dHVhbCBwcm9wZXJ0eSBvbmx5IGxldHMgdGhlIGZyYW1lcwo+ICsgKiByZWdhcmRlZCBhcyBCUERV IGJ5cGFzcyB0aGUgc3Bhbm5pbmcgdHJlZSBQb3J0IFN0YXRlIGZ1bmN0aW9uIG9mIHRoZQo+ICsg KiBGb3J3YXJkaW5nIFByb2Nlc3MuCj4gKyAqCj4gKyAqIFRoZSBvbmx5IHJlbWFpbmluZyBpbnRl cmZlcmVuY2UgbGVmdCBpcyB0aGUgaW5ncmVzcyBydWxlcy4gV2hlbiB0aGUgcmVjZXB0aW9uCj4g KyAqIFBvcnQgaGFzIG5vIFBWSUQgYXNzaWduZWQgb24gc29mdHdhcmUsIFZMQU4tdW50YWdnZWQg ZnJhbWVzIHdvbid0IGJlIGFsbG93ZWQKPiArICogaW4uIFRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBi ZSBhIG1lY2hhbmlzbSBvbiB0aGUgc3dpdGNoIGludGVsbGVjdHVhbCBwcm9wZXJ0eQo+ICsgKiB0 byBoYXZlIGxpbmstbG9jYWwgZnJhbWVzIGJ5cGFzcyB0aGlzIGZ1bmN0aW9uIG9mIHRoZSBGb3J3 YXJkaW5nIFByb2Nlc3MuCj4gICAqLwo+ICBzdGF0aWMgdm9pZAo+ICBtdDc1M3hfdHJhcF9mcmFt ZXMoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KQo+IEBAIC05NzEsMzUgKzExMjQsNDMgQEAgbXQ3 NTN4X3RyYXBfZnJhbWVzKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdikKPiAgCS8qIFRyYXAgODAy LjFYIFBBRSBmcmFtZXMgYW5kIEJQRFVzIHRvIHRoZSBDUFUgcG9ydChzKSBhbmQgZWdyZXNzIHRo ZW0KPiAgCSAqIFZMQU4tdW50YWdnZWQuCj4gIAkgKi8KPiAtCW10NzUzMF9ybXcocHJpdiwgTVQ3 NTNYX0JQQywgTVQ3NTNYX1BBRV9FR19UQUdfTUFTSyB8Cj4gLQkJICAgTVQ3NTNYX1BBRV9QT1JU X0ZXX01BU0sgfCBNVDc1M1hfQlBEVV9FR19UQUdfTUFTSyB8Cj4gLQkJICAgTVQ3NTNYX0JQRFVf UE9SVF9GV19NQVNLLAo+IC0JCSAgIE1UNzUzWF9QQUVfRUdfVEFHKE1UNzUzMF9WTEFOX0VHX1VO VEFHR0VEKSB8Cj4gLQkJICAgTVQ3NTNYX1BBRV9QT1JUX0ZXKE1UNzUzWF9CUERVX0NQVV9PTkxZ KSB8Cj4gLQkJICAgTVQ3NTNYX0JQRFVfRUdfVEFHKE1UNzUzMF9WTEFOX0VHX1VOVEFHR0VEKSB8 Cj4gLQkJICAgTVQ3NTNYX0JQRFVfQ1BVX09OTFkpOwo+ICsJbXQ3NTMwX3Jtdyhwcml2LCBNVDc1 M1hfQlBDLAo+ICsJCSAgIE1UNzUzWF9QQUVfQlBEVV9GUiB8IE1UNzUzWF9QQUVfRUdfVEFHX01B U0sgfAo+ICsJCQkgICBNVDc1M1hfUEFFX1BPUlRfRldfTUFTSyB8IE1UNzUzWF9CUERVX0VHX1RB R19NQVNLIHwKPiArCQkJICAgTVQ3NTNYX0JQRFVfUE9SVF9GV19NQVNLLAo+ICsJCSAgIE1UNzUz WF9QQUVfQlBEVV9GUiB8Cj4gKwkJCSAgIE1UNzUzWF9QQUVfRUdfVEFHKE1UNzUzMF9WTEFOX0VH X1VOVEFHR0VEKSB8Cj4gKwkJCSAgIE1UNzUzWF9QQUVfUE9SVF9GVyhNVDc1M1hfQlBEVV9DUFVf T05MWSkgfAo+ICsJCQkgICBNVDc1M1hfQlBEVV9FR19UQUcoTVQ3NTMwX1ZMQU5fRUdfVU5UQUdH RUQpIHwKPiArCQkJICAgTVQ3NTNYX0JQRFVfQ1BVX09OTFkpOwo+ICAKPiAgCS8qIFRyYXAgZnJh bWVzIHdpdGggOjAxIGFuZCA6MDIgTUFDIERBcyB0byB0aGUgQ1BVIHBvcnQocykgYW5kIGVncmVz cwo+ICAJICogdGhlbSBWTEFOLXVudGFnZ2VkLgo+ICAJICovCj4gLQltdDc1MzBfcm13KHByaXYs IE1UNzUzWF9SR0FDMSwgTVQ3NTNYX1IwMl9FR19UQUdfTUFTSyB8Cj4gLQkJICAgTVQ3NTNYX1Iw Ml9QT1JUX0ZXX01BU0sgfCBNVDc1M1hfUjAxX0VHX1RBR19NQVNLIHwKPiAtCQkgICBNVDc1M1hf UjAxX1BPUlRfRldfTUFTSywKPiAtCQkgICBNVDc1M1hfUjAyX0VHX1RBRyhNVDc1MzBfVkxBTl9F R19VTlRBR0dFRCkgfAo+IC0JCSAgIE1UNzUzWF9SMDJfUE9SVF9GVyhNVDc1M1hfQlBEVV9DUFVf T05MWSkgfAo+IC0JCSAgIE1UNzUzWF9SMDFfRUdfVEFHKE1UNzUzMF9WTEFOX0VHX1VOVEFHR0VE KSB8Cj4gLQkJICAgTVQ3NTNYX0JQRFVfQ1BVX09OTFkpOwo+ICsJbXQ3NTMwX3Jtdyhwcml2LCBN VDc1M1hfUkdBQzEsCj4gKwkJICAgTVQ3NTNYX1IwMl9CUERVX0ZSIHwgTVQ3NTNYX1IwMl9FR19U QUdfTUFTSyB8Cj4gKwkJCSAgIE1UNzUzWF9SMDJfUE9SVF9GV19NQVNLIHwgTVQ3NTNYX1IwMV9C UERVX0ZSIHwKPiArCQkJICAgTVQ3NTNYX1IwMV9FR19UQUdfTUFTSyB8IE1UNzUzWF9SMDFfUE9S VF9GV19NQVNLLAo+ICsJCSAgIE1UNzUzWF9SMDJfQlBEVV9GUiB8Cj4gKwkJCSAgIE1UNzUzWF9S MDJfRUdfVEFHKE1UNzUzMF9WTEFOX0VHX1VOVEFHR0VEKSB8Cj4gKwkJCSAgIE1UNzUzWF9SMDJf UE9SVF9GVyhNVDc1M1hfQlBEVV9DUFVfT05MWSkgfAo+ICsJCQkgICBNVDc1M1hfUjAxX0JQRFVf RlIgfAo+ICsJCQkgICBNVDc1M1hfUjAxX0VHX1RBRyhNVDc1MzBfVkxBTl9FR19VTlRBR0dFRCkg fAo+ICsJCQkgICBNVDc1M1hfQlBEVV9DUFVfT05MWSk7Cj4gIAo+ICAJLyogVHJhcCBmcmFtZXMg d2l0aCA6MDMgYW5kIDowRSBNQUMgREFzIHRvIHRoZSBDUFUgcG9ydChzKSBhbmQgZWdyZXNzCj4g IAkgKiB0aGVtIFZMQU4tdW50YWdnZWQuCj4gIAkgKi8KPiAtCW10NzUzMF9ybXcocHJpdiwgTVQ3 NTNYX1JHQUMyLCBNVDc1M1hfUjBFX0VHX1RBR19NQVNLIHwKPiAtCQkgICBNVDc1M1hfUjBFX1BP UlRfRldfTUFTSyB8IE1UNzUzWF9SMDNfRUdfVEFHX01BU0sgfAo+IC0JCSAgIE1UNzUzWF9SMDNf UE9SVF9GV19NQVNLLAo+IC0JCSAgIE1UNzUzWF9SMEVfRUdfVEFHKE1UNzUzMF9WTEFOX0VHX1VO VEFHR0VEKSB8Cj4gLQkJICAgTVQ3NTNYX1IwRV9QT1JUX0ZXKE1UNzUzWF9CUERVX0NQVV9PTkxZ KSB8Cj4gLQkJICAgTVQ3NTNYX1IwM19FR19UQUcoTVQ3NTMwX1ZMQU5fRUdfVU5UQUdHRUQpIHwK PiAtCQkgICBNVDc1M1hfQlBEVV9DUFVfT05MWSk7Cj4gKwltdDc1MzBfcm13KHByaXYsIE1UNzUz WF9SR0FDMiwKPiArCQkgICBNVDc1M1hfUjBFX0JQRFVfRlIgfCBNVDc1M1hfUjBFX0VHX1RBR19N QVNLIHwKPiArCQkJICAgTVQ3NTNYX1IwRV9QT1JUX0ZXX01BU0sgfCBNVDc1M1hfUjAzX0JQRFVf RlIgfAo+ICsJCQkgICBNVDc1M1hfUjAzX0VHX1RBR19NQVNLIHwgTVQ3NTNYX1IwM19QT1JUX0ZX X01BU0ssCj4gKwkJICAgTVQ3NTNYX1IwRV9CUERVX0ZSIHwKPiArCQkJICAgTVQ3NTNYX1IwRV9F R19UQUcoTVQ3NTMwX1ZMQU5fRUdfVU5UQUdHRUQpIHwKPiArCQkJICAgTVQ3NTNYX1IwRV9QT1JU X0ZXKE1UNzUzWF9CUERVX0NQVV9PTkxZKSB8Cj4gKwkJCSAgIE1UNzUzWF9SMDNfQlBEVV9GUiB8 Cj4gKwkJCSAgIE1UNzUzWF9SMDNfRUdfVEFHKE1UNzUzMF9WTEFOX0VHX1VOVEFHR0VEKSB8Cj4g KwkJCSAgIE1UNzUzWF9CUERVX0NQVV9PTkxZKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5oIGIvZHJpdmVycy9uZXQvZHNhL210 NzUzMC5oCj4gaW5kZXggZDE3YjMxOGU2ZWU0Li4yZGVmZmU3NDE0ODQgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9uZXQvZHNhL210NzUzMC5oCj4gKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5o Cj4gQEAgLTY1LDYgKzY1LDcgQEAgZW51bSBtdDc1M3hfaWQgewo+ICAKPiAgLyogUmVnaXN0ZXJz IGZvciBCUERVIGFuZCBQQUUgZnJhbWUgY29udHJvbCovCj4gICNkZWZpbmUgTVQ3NTNYX0JQQwkJ CTB4MjQKPiArI2RlZmluZSAgTVQ3NTNYX1BBRV9CUERVX0ZSCQlCSVQoMjUpCj4gICNkZWZpbmUg IE1UNzUzWF9QQUVfRUdfVEFHX01BU0sJCUdFTk1BU0soMjQsIDIyKQo+ICAjZGVmaW5lICBNVDc1 M1hfUEFFX0VHX1RBRyh4KQkJRklFTERfUFJFUChNVDc1M1hfUEFFX0VHX1RBR19NQVNLLCB4KQo+ ICAjZGVmaW5lICBNVDc1M1hfUEFFX1BPUlRfRldfTUFTSwlHRU5NQVNLKDE4LCAxNikKPiBAQCAt NzUsMjAgKzc2LDI0IEBAIGVudW0gbXQ3NTN4X2lkIHsKPiAgCj4gIC8qIFJlZ2lzdGVyIGZvciA6 MDEgYW5kIDowMiBNQUMgREEgZnJhbWUgY29udHJvbCAqLwo+ICAjZGVmaW5lIE1UNzUzWF9SR0FD MQkJCTB4MjgKPiArI2RlZmluZSAgTVQ3NTNYX1IwMl9CUERVX0ZSCQlCSVQoMjUpCj4gICNkZWZp bmUgIE1UNzUzWF9SMDJfRUdfVEFHX01BU0sJCUdFTk1BU0soMjQsIDIyKQo+ICAjZGVmaW5lICBN VDc1M1hfUjAyX0VHX1RBRyh4KQkJRklFTERfUFJFUChNVDc1M1hfUjAyX0VHX1RBR19NQVNLLCB4 KQo+ICAjZGVmaW5lICBNVDc1M1hfUjAyX1BPUlRfRldfTUFTSwlHRU5NQVNLKDE4LCAxNikKPiAg I2RlZmluZSAgTVQ3NTNYX1IwMl9QT1JUX0ZXKHgpCQlGSUVMRF9QUkVQKE1UNzUzWF9SMDJfUE9S VF9GV19NQVNLLCB4KQo+ICsjZGVmaW5lICBNVDc1M1hfUjAxX0JQRFVfRlIJCUJJVCg5KQo+ICAj ZGVmaW5lICBNVDc1M1hfUjAxX0VHX1RBR19NQVNLCQlHRU5NQVNLKDgsIDYpCj4gICNkZWZpbmUg IE1UNzUzWF9SMDFfRUdfVEFHKHgpCQlGSUVMRF9QUkVQKE1UNzUzWF9SMDFfRUdfVEFHX01BU0ss IHgpCj4gICNkZWZpbmUgIE1UNzUzWF9SMDFfUE9SVF9GV19NQVNLCUdFTk1BU0soMiwgMCkKPiAg Cj4gIC8qIFJlZ2lzdGVyIGZvciA6MDMgYW5kIDowRSBNQUMgREEgZnJhbWUgY29udHJvbCAqLwo+ ICAjZGVmaW5lIE1UNzUzWF9SR0FDMgkJCTB4MmMKPiArI2RlZmluZSAgTVQ3NTNYX1IwRV9CUERV X0ZSCQlCSVQoMjUpCj4gICNkZWZpbmUgIE1UNzUzWF9SMEVfRUdfVEFHX01BU0sJCUdFTk1BU0so MjQsIDIyKQo+ICAjZGVmaW5lICBNVDc1M1hfUjBFX0VHX1RBRyh4KQkJRklFTERfUFJFUChNVDc1 M1hfUjBFX0VHX1RBR19NQVNLLCB4KQo+ICAjZGVmaW5lICBNVDc1M1hfUjBFX1BPUlRfRldfTUFT SwlHRU5NQVNLKDE4LCAxNikKPiAgI2RlZmluZSAgTVQ3NTNYX1IwRV9QT1JUX0ZXKHgpCQlGSUVM RF9QUkVQKE1UNzUzWF9SMEVfUE9SVF9GV19NQVNLLCB4KQo+ICsjZGVmaW5lICBNVDc1M1hfUjAz X0JQRFVfRlIJCUJJVCg5KQo+ICAjZGVmaW5lICBNVDc1M1hfUjAzX0VHX1RBR19NQVNLCQlHRU5N QVNLKDgsIDYpCj4gICNkZWZpbmUgIE1UNzUzWF9SMDNfRUdfVEFHKHgpCQlGSUVMRF9QUkVQKE1U NzUzWF9SMDNfRUdfVEFHX01BU0ssIHgpCj4gICNkZWZpbmUgIE1UNzUzWF9SMDNfUE9SVF9GV19N QVNLCUdFTk1BU0soMiwgMCkKPiAKPiAtLS0KPiBiYXNlLWNvbW1pdDogMzY1YWY3YWNlMDE0ZWYz ZmM2ZjVkMGEzNzNjOTZjYzcxOTNkYjRjZQo+IGNoYW5nZS1pZDogMjAyNDA0MDEtYjQtZm9yLW5l dC1tdDc1MzAtZml4LWxpbmstbG9jYWwtd2hlbi1zdHAtZGlzY2FyZGluZy02ZTJhNGUzZTg2N2EK PiAKPiBCZXN0IHJlZ2FyZHMsCj4gLS0gCj4gQXLEsW7DpyDDnE5BTCA8YXJpbmMudW5hbEBhcmlu YzkuY29tPgo+IAo+IAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtYXJtLWtlcm5lbAo=