From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 951C0A0032; Fri, 29 Oct 2021 13:57:13 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4EF7A4111F; Fri, 29 Oct 2021 13:57:13 +0200 (CEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30048.outbound.protection.outlook.com [40.107.3.48]) by mails.dpdk.org (Postfix) with ESMTP id 611A3410E1 for ; Fri, 29 Oct 2021 13:57:11 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bNBmPu95DCZ4y7nFE4UkfIGk1KYAH4HLPYp1v70YEFDG/urqnlUNLP4RtR5k5A2i0m2mF7TtED0TWqs0JBuQuoarLECG5vl23kNO7PD6Q3RrmgyH4KCh5OMLz0+At0b9Os8GpJQx2kw4kPokiI8cCEfaBrrBRCujLlf8GtZswePxsPThqfpPzigiGpN9mXwo839a0uk9qt8WJjtylR6arjpFnuTM/hLlEH4FgADtZr+LKnGPeQwoo5yvH0wNkWSxpq8+0evw4iN43i8OxnApkl3m8lKzIEUtHxZjUP/6rKxERDVDg4I+GOi7u4UxVew5vW+P2IUAEajxHuDr9PF5ZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=i8GtIwvSX5o+vYWAVVPRxLMyvfbnFjla2SGTvAvPrm4=; b=LrPBkZdu/5UL5xKaX3xYhcip3e0lsB3LjvTLYTLDEb16K/+iYFkkCOB3j3PzwOUvlmIAT703Q7hnn5VEDNypunGDTvK1xr6UJfDZe/g0Pb2uxJ3FyB08KLj9xgDEA4SZKJx0Q5mSKr6Y0s69tRm5MgTc297L2Ahu4iDI6lEVeukW8EWibMtlJsyXFO+yTvI0YUUz0q3X+YjQqpIrkvNQyedzEGIw5nO74k+djQJQl+4O2o/MCmEufgQ3iO08dEO7djcRZLM1qgUxU/VrHYpKq+azexGZqHUdeReD2/7SvRPa0hAo1Ld1q4ebyNO4KMjbllz+s1qVXTeleycJX1GVFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ericsson.com; dmarc=pass action=none header.from=ericsson.com; dkim=pass header.d=ericsson.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=i8GtIwvSX5o+vYWAVVPRxLMyvfbnFjla2SGTvAvPrm4=; b=YvLFBWhnUrgqijfhbaSmF6MLremq6j0XU0t69mMMGFdiZkRAjgh137/Bck/5DF46ETeOplaCqV1fKEPDIAlwq7MKuV6Z8fCF7BZmixSM8dFq1LGmws8Ik6Uc3rtUaXBYa9lk5OBN09jTBKCGtVnA7xcOcJ4/6tEinHBAYLT4GyM= Received: from DB7PR07MB5978.eurprd07.prod.outlook.com (2603:10a6:10:80::15) by DB9PR07MB7324.eurprd07.prod.outlook.com (2603:10a6:10:215::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.6; Fri, 29 Oct 2021 11:57:08 +0000 Received: from DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::8b2:d48f:7cb7:8b3d]) by DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::8b2:d48f:7cb7:8b3d%6]) with mapi id 15.20.4669.005; Fri, 29 Oct 2021 11:57:08 +0000 From: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= To: Jerin Jacob CC: "jerinj@marvell.com" , "dev@dpdk.org" , "thomas@monjalon.net" , "ferruh.yigit@intel.com" , "ajit.khaparde@broadcom.com" , "aboyer@pensando.io" , "andrew.rybchenko@oktetlabs.ru" , "beilei.xing@intel.com" , "bruce.richardson@intel.com" , "chas3@att.com" , "chenbo.xia@intel.com" , "ciara.loftus@intel.com" , "dsinghrawat@marvell.com" , "ed.czeck@atomicrules.com" , "evgenys@amazon.com" , "grive@u256.net" , "g.singh@nxp.com" , "zhouguoyang@huawei.com" , "haiyue.wang@intel.com" , "hkalra@marvell.com" , "heinrich.kuhn@corigine.com" , "hemant.agrawal@nxp.com" , "hyonkim@cisco.com" , "igorch@amazon.com" , "irusskikh@marvell.com" , "jgrajcia@cisco.com" , "jasvinder.singh@intel.com" , "jianwang@trustnetic.com" , "jiawenwu@trustnetic.com" , "jingjing.wu@intel.com" , "johndale@cisco.com" , "john.miller@atomicrules.com" , "linville@tuxdriver.com" , "keith.wiles@intel.com" , "kirankumark@marvell.com" , "oulijun@huawei.com" , "lironh@marvell.com" , "longli@microsoft.com" , "mw@semihalf.com" , "spinler@cesnet.cz" , "matan@nvidia.com" , "matt.peters@windriver.com" , "maxime.coquelin@redhat.com" , "mk@semihalf.com" , "humin29@huawei.com" , "pnalla@marvell.com" , "ndabilpuram@marvell.com" , "qiming.yang@intel.com" , "qi.z.zhang@intel.com" , "radhac@marvell.com" , "rahul.lakkireddy@chelsio.com" , "rmody@marvell.com" , "rosen.xu@intel.com" , "sachin.saxena@oss.nxp.com" , "skoteshwar@marvell.com" , "shshaikh@marvell.com" , "shaibran@amazon.com" , "shepard.siegel@atomicrules.com" , "asomalap@amd.com" , "somnath.kotur@broadcom.com" , "sthemmin@microsoft.com" , "steven.webster@windriver.com" , "skori@marvell.com" , "mtetsuyah@gmail.com" , "vburru@marvell.com" , "viacheslavo@nvidia.com" , "xiao.w.wang@intel.com" , "cloud.wangxiaoyun@huawei.com" , "yisen.zhuang@huawei.com" , "yongwang@vmware.com" , "xuanziyang2@huawei.com" , "pkapoor@marvell.com" , "nadavh@marvell.com" , "sburla@marvell.com" , "pathreya@marvell.com" , "gakhil@marvell.com" , "mdr@ashroe.eu" , "dmitry.kozliuk@gmail.com" , "anatoly.burakov@intel.com" , "cristian.dumitrescu@intel.com" , "honnappa.nagarahalli@arm.com" , "ruifeng.wang@arm.com" , "drc@linux.vnet.ibm.com" , "konstantin.ananyev@intel.com" , "olivier.matz@6wind.com" , "jay.jayatheerthan@intel.com" , "asekhar@marvell.com" , "pbhagavatula@marvell.com" , Elana Agostini Thread-Topic: [dpdk-dev] [RFC PATCH 0/1] Dataplane Workload Accelerator library Thread-Index: AQHXxRXN3qkU/eag4k6Wyy9Y3hOgEKvjW6uAgAAYpgCABnm1AA== Date: Fri, 29 Oct 2021 11:57:08 +0000 Message-ID: <35f086cb-bef3-9a11-6a85-7e695c0b0e7c@ericsson.com> References: <20211019181459.1709976-1-jerinj@marvell.com> In-Reply-To: Accept-Language: en-US, sv-SE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.2.1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=ericsson.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 51bd357b-4d16-4e66-6cd3-08d99ad33c35 x-ms-traffictypediagnostic: DB9PR07MB7324: x-ld-processed: 92e84ceb-fbfd-47ab-be52-080c6b87953f,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2276; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nhuR3T3XwqWhhbzXbKwQFF0a+5lpj2kjNfpE1fbMOMjltbTt+LZLxALjcwH22FUURDT2AqR6548Eza2gm+NsqIGpSoDajm306cb6a6MZySR/adxZKUutUxFO0IiJwAoxnSYf8dKca3UQAihriETgQ0BeuaXhTn0mAl0kI32m7Z9eiVswz3OoNTU2bEN/E0GNR8eb/mJEU+VcWc8IC6BveOALIqCwPBsMurI/1hptehTlahEImNrb+fGDfEpZ026JEyaT9b9+33Ckheq1JdK1hfI0koVGuskfrSLIJD7vXlJViocqbKjoxKjF/ZQc0hD4LTKzfdOTpbFhCeCDQwGHrw4wi4PYDbAqYhSOyf3KoKbCEFDy/k3MUFmFWfb0L8+jlYjH3cCsIg42sAfapHlIGD9u2LlJ81Ou2Y7aBRdcr4N6TW3fxbM8HmEmNRK+LG5vjD8iE3plkSq2YD4TEuXE6TRl1rLp4bQhqyVl7qOqZMbuzGTbtno/rFLiU79x4O5Qkl48BLAJsPcSShLtMfe1o8A37ZYIfTIAFY7TBApeozD361eGHirYNqqc+SsSkmCFd5UIn0lNalIwvoO/1Ngu9GYHb8Lopfno3K1xMSyoDtgi18y8xkkceXyw4B+aZ8f7AmY62yTPnG6qpt8NE+llnonZa8SGmybfKE18xT920RkwVRf3rnvWNorGU99YQfbfcwiIUEh7C26fsDb5L76SqubH6hw6EVHVZ1q23wCIIOVbyYnONDm1NAQkc1IaikHibc3SPcpUQlTWXjqXqgqUBHDlKAw47m07qqFfYeN3kiR29cpIQsqCqGKePeXl1zP0TkgPUdYUPhieSsPcl92jovt/j9x1OeZhsSDxYuWpPTasZs/kQTHm+49T6ZHcP2Ol x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR07MB5978.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(38100700002)(38070700005)(5660300002)(71200400001)(8936002)(85182001)(4001150100001)(966005)(82960400001)(31696002)(36756003)(6486002)(66574015)(6512007)(86362001)(4326008)(316002)(26005)(31686004)(508600001)(54906003)(186003)(122000001)(2906002)(53546011)(6506007)(8676002)(7336002)(7366002)(7406005)(7416002)(85202003)(2616005)(66946007)(66476007)(76116006)(83380400001)(30864003)(66556008)(6916009)(66446008)(64756008)(11634003)(43740500002)(45980500001)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?b1A2VWRWNTVXS29wVEJIbEJPNUNCZ2Y2WGVZcFhFU1lkRHVOL1pha0FRSy9x?= =?utf-8?B?b09OWGpyNWd2dS8yZnNseDVWZGZLNDhIMU8xRzRpa1k2b3grcXhiMGNGQ1Vr?= =?utf-8?B?am1tSzlNL0RlaHRRL0tUcVBnSzhvT3NtejBDMlpQOFVlWmpMSjk0TktQbUpY?= =?utf-8?B?bWFqdEdsOTQvMGdWMEpLMTA0YnpLYlJHenJmTDNiVk11QXVhQzd3MWJ2blJO?= =?utf-8?B?azdYQ09kMXk0SDN5MFBwRnFMek5BRHZhUHBmNHEzRmxNR3Q0cWFVQTE1aVpr?= =?utf-8?B?Q3BNS1dUS2YxazdkZGw3K1A4L29PSkJNWXBXWURtb2ZiWkFYcGZBSC9BSFBX?= =?utf-8?B?Q1ZlQWw4bzJKV0M0cnk5ZXhkd09xSFFGcnlhUkpCbFRFd2FXTnN3eUNJRWw5?= =?utf-8?B?Z3pwZWRQelh5MGp6ZThrUWYvUVk4UVRvSFFkUjk0UVFDU3dyeHIzRVJNb1Vv?= =?utf-8?B?dmh0cFRQUmUxTHpnQWVtT2xGK0pOQ1ErWXp4c0NjYkNJVEpKWWlMNmNhTllE?= =?utf-8?B?MlZEREZSUUtENGszQm5tQ0NFM09Hdk04YjJtNlNnYjN5dDJOajh5cTFmVjRr?= =?utf-8?B?NEI0dEJYZnR2OU5WRGlFaU9zQVo4K0RUN2IxMFhWcE8vTWFzcDZJRFczUEZa?= =?utf-8?B?ZjNZbGNaMzVMcmxjZStIcUR4ZTdxOGx6TG5xR3VxaWl5RkhVTERvb00vcHNq?= =?utf-8?B?d1ZPeGNrTXpnZFlueUtrQWU4MW9kMzJSL1ArUGlSd0pPREs4clJXZ2p2SVVG?= =?utf-8?B?S3FXamVudlh3cTJPUEhRdWMyUDZZNkVzdlVSTytaSzFpS2ZINkF5MGFCTm9y?= =?utf-8?B?clhtcVhXLzl3TFZxaytmRmFNQUxuMkRRUWJEajFxY0ErVFVFZW5yWG5RY3N1?= =?utf-8?B?T2Q1dVUrUjRlTENJcmRBb2RUTFJJR1Y2U04ySE9LM0pkRjZwNjV4NkNHOUNK?= =?utf-8?B?YWRSbzNXMlRXSDZGbXdhajQ2VmNuQlgvOFJiTjBpbnp1b041bXZldlJ2ZXpH?= =?utf-8?B?TmV4Mzl6WGVOSDdmOHE4UmtkWFc4UGVUc1JKdW9kWmdCQ1lJVjN0UkhMcHpj?= =?utf-8?B?WDc3dXRJU3c1QUpiL0xGeFlIdUpmeTlnMTNIdTVpVEEvZ3VLZ0ZKdGsxaVFI?= =?utf-8?B?Q0hHMHloTjVWcWwzQy9DbEFkV2Z3SktBRFJsNmErUUtlU21HYzFKdjdtMkNq?= =?utf-8?B?Yk5jZU5CRVVDN2VSRWE4ek5tTldXZlplMnBzT2licmoxbDF0NGV1NlVremYw?= =?utf-8?B?V1JHNU5ELzltR0ZCUGNXYzZVZ2RKeFZRaUVkdlQ1M3RVZFZIdmZvV3RFWGpx?= =?utf-8?B?Zm1tOXU2ZkJTVlQxZDdCcEV1aXNrU2hEQ0hIdldFankySXQ4Ym0zVlUzRlh0?= =?utf-8?B?cjdURGZlKzFPbFh3bTlyM25FaDBjTFhDWURoQnJYL3F6VXJobzEzQnVDUFpw?= =?utf-8?B?RkdDUXFwcUcwTHlQRk9UYWdXYTQ4cmNGWDI1eU5oaXRCZGFCMUdNQ0pERGxN?= =?utf-8?B?MDl4SUYybWdjL01PelVhV2gwSUVZWkw0T2hIaWg3QTBjOENtUm13bG9TRUNT?= =?utf-8?B?OXVkbE9rRHVMQ3NHSDlBQjkvOHZGajJEeENrMTVEVlp4Rm4yYmJ6VkN5NlBs?= =?utf-8?B?OFQ5RVp0ckp6Y3cyb0RGSS96NEFBbnM4bS9LMGhjSit0eC9aOFdHN2xpd1Fn?= =?utf-8?B?enlJcFJPVlBBOTlOa1g3TGJ2enFnTlMvaFlzYU91clZXL1NRRWdOWHBEYVlD?= =?utf-8?B?d25GVytZTXRNVFNDcDRKZXlvdjJwRktocVdLbXRmVm56NFNwUHZUZHRUbzl6?= =?utf-8?B?a1pDMUp1SkNqdUR6OC9wempUZVNWenQzLzNqdGl0NUlJajF3KzJKZHh0MkRN?= =?utf-8?B?dFdLM1EvZXJWb3lmdlFnTFNKcmRUMkk3TU9TcEtKbmpIY3lFckRRNjJvRTQ0?= =?utf-8?B?cnB5U0NGeXR4S2JsN2JnMVpqTDJmTy9OcHVxay9uays1a1RpVmtOdGhmTnI5?= =?utf-8?B?dGU3Wk5pb3pRTUpkT2RyZjlYRklVZ0VsTWFVd2F3SjRyZUpvMUsvVHFuYjhE?= =?utf-8?B?eXRvY0RDL2thbWZNd0pVNStOUkpnR2l3WmFzR2R2Z0lUaURreUQ3K25XSEpT?= =?utf-8?B?ZDhXZ25QK2JaZldna2JhZmRZNXRqUE41bmt0M3ZIQ0ZPZksrbTRDZlpsdkZw?= =?utf-8?B?VFR4YTZieTBlaENFaW96aUwySXN0OEhwZ2p5amdBSFBsbkk4V01TTk91WGJt?= =?utf-8?B?akdFZVgvNnl4RzRzVVp2YjVDOFZ3PT0=?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: ericsson.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DB7PR07MB5978.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 51bd357b-4d16-4e66-6cd3-08d99ad33c35 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2021 11:57:08.6738 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Al5agPUs/b+FEp+iiGAMmNmHCb/kl8HWI3S+AJORaOI/yeVDh0mIPzv2xsImuiAjB2CSzgBWMdfK+SYwqb+vtNcgvS1MSoHW3VXHRqfifOs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR07MB7324 Subject: Re: [dpdk-dev] [RFC PATCH 0/1] Dataplane Workload Accelerator library X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" T24gMjAyMS0xMC0yNSAxMTowMywgSmVyaW4gSmFjb2Igd3JvdGU6DQo+IE9uIE1vbiwgT2N0IDI1 LCAyMDIxIGF0IDE6MDUgUE0gTWF0dGlhcyBSw7ZubmJsb20NCj4gPG1hdHRpYXMucm9ubmJsb21A ZXJpY3Nzb24uY29tPiB3cm90ZToNCj4+IE9uIDIwMjEtMTAtMTkgMjA6MTQsIGplcmluakBtYXJ2 ZWxsLmNvbSB3cm90ZToNCj4+PiBGcm9tOiBKZXJpbiBKYWNvYiA8amVyaW5qQG1hcnZlbGwuY29t Pg0KPj4+DQo+Pj4NCj4+PiBEYXRhcGxhbmUgV29ya2xvYWQgQWNjZWxlcmF0b3IgbGlicmFyeQ0K Pj4+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+Pj4NCj4+PiBEZWZp bml0aW9uIG9mIERhdGFwbGFuZSBXb3JrbG9hZCBBY2NlbGVyYXRvcg0KPj4+IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4gRGF0YXBsYW5lIFdvcmtsb2Fk IEFjY2VsZXJhdG9yKERXQSkgdHlwaWNhbGx5IGNvbnRhaW5zIGEgc2V0IG9mIENQVXMsDQo+Pj4g TmV0d29yayBjb250cm9sbGVycyBhbmQgcHJvZ3JhbW1hYmxlIGRhdGEgYWNjZWxlcmF0aW9uIGVu Z2luZXMgZm9yDQo+Pj4gcGFja2V0IHByb2Nlc3NpbmcsIGNyeXB0b2dyYXBoeSwgcmVnZXggZW5n aW5lcywgYmFzZWJhbmQgcHJvY2Vzc2luZywgZXRjLg0KPj4+IFRoaXMgYWxsb3dzIERXQSB0byBv ZmZsb2FkICBjb21wdXRlL3BhY2tldCBwcm9jZXNzaW5nL2Jhc2ViYW5kLw0KPj4+IGNyeXB0b2dy YXBoeS1yZWxhdGVkIHdvcmtsb2FkIGZyb20gdGhlIGhvc3QgQ1BVIHRvIHNhdmUgdGhlIGNvc3Qg YW5kIHBvd2VyLg0KPj4+IEFsc28gdG8gZW5hYmxlIHNjYWxpbmcgdGhlIHdvcmtsb2FkIGJ5IGFk ZGluZyBEV0FzIHRvIHRoZSBIb3N0IENQVSBhcyBuZWVkZWQuDQo+Pj4NCj4+PiBVbmxpa2Ugb3Ro ZXIgZGV2aWNlcyBpbiBEUERLLCB0aGUgRFdBIGRldmljZSBpcyBub3QgZml4ZWQtZnVuY3Rpb24N Cj4+PiBkdWUgdG8gdGhlIGZhY3QgdGhhdCBpdCBoYXMgQ1BVcyBhbmQgcHJvZ3JhbW1hYmxlIEhX IGFjY2VsZXJhdG9ycy4NCj4+DQo+PiBUaGVyZSBhcmUgYWxyZWFkeSBzZXZlcmFsIGluc3RhbmNl cyBvZiBEUERLIGRldmljZXMgd2l0aCBwdXJlLXNvZnR3YXJlDQo+PiBpbXBsZW1lbnRhdGlvbi4g SW4gdGhpcyByZWdhcmQsIGEgRFBVL1NtYXJ0TklDIHJlcHJlc2VudHMgbm90aGluZyBuZXcuDQo+ PiBXaGF0J3MgbmV3LCBpdCBzZWVtcyB0byBtZSwgaXMgYSBtdWNoLWluY3JlYXNlZCBuZWVkIHRv DQo+PiBjb25maWd1cmUvYXJyYW5nZSB0aGUgcHJvY2Vzc2luZyBpbiBjb21wbGV4IG1hbm5lcnMs IHRvIGF2b2lkIGJvdW5jaW5nDQo+PiBldmVyeXRoaW5nIHRvIHRoZSBob3N0IENQVS4NCj4gWWVz IGFuZCBOby4gSXQgd2lsbCBiZSBiYXNlZCBvbiB0aGUgcHJvZmlsZS4gVGhlIFRMViB0eXBlIFRZ UEVfVVNFUl9QTEFORSB3aWxsDQo+IGhhdmUgdXNlciBwbGFuZSB0cmFmZmljIGZyb20vdG8gaG9z dC4gRm9yIGV4YW1wbGUsIG9mZmxvYWRpbmcgT1JBTiBzcGxpdCA3LjINCj4gYmFzZWJhbmQgcHJv ZmlsZS4gVHJhbnNwb3J0IGJsb2NrcyBzZW50IHRvL2Zyb20gaG9zdCBhcyBUWVBFX1VTRVJfUExB TkUuDQo+DQo+PiBTb21ldGhpbmcgbGlrZSBQNCBvciBydGVfZmxvdy1iYXNlZCBob29rcyBvcg0K Pj4gc29tZSBvdGhlciBraW5kIG9mIGV4dGVuc2lvbi4gVGhlIGV2ZW50ZGV2IGFkYXB0ZXJzIHNv bHZlIHRoZSBzYW1lDQo+PiBwcm9ibGVtICh3aGVyZSBvbiBzb21lIHN5c3RlbXMgcGFja2V0cyBn byB0aHJvdWdoIHRoZSBob3N0IENQVSBvbiB0aGVpcg0KPj4gd2F5IHRvIHRoZSBldmVudCBkZXZp Y2UsIGFuZCBvdGhlcnMgZG8gbm90KSAtIGFsdGhvdWdoIG9uIGEgKm11Y2gqDQo+PiBzbWFsbGVy IHNjYWxlLg0KPiBZZXMuIEV2ZW50ZGV2IEFkYXB0ZXJzIG9ubHkgZm9yIGV2ZW50IGRldmljZSBw bHVtYmluZy4NCj4NCj4NCj4+DQo+PiAiTm90LWZpeGVkIGZ1bmN0aW9uIiBzZWVtcyB0byBjYWxs IGZvciBtb3JlIGhvdCBwbHVnIHN1cHBvcnQgaW4gdGhlDQo+PiBkZXZpY2UgQVBJcy4gU3VjaCBm dW5jdGlvbmFsaXR5IGNvdWxkIHRoZW4gYmUgcmV1c2VkIGJ5IGFueXRoaW5nIHRoYXQNCj4+IGNh biBiZSByZWNvbmZpZ3VyZWQgZHluYW1pY2FsbHkgKEZQR0FzLCBmaXJtd2FyZS1wcm9ncmFtbWVk DQo+PiBhY2NlbGVyYXRvcnMsIGV0Yy4pLA0KPiBZZXMuDQo+DQo+PiBidXQgd2hpY2ggbWF5IG5v dCBiZSBhYmxlIHRvIHNlcnZlIGFzIGEgUlBDDQo+PiBlbmRwb2ludCwgbGlrZSBhIFNtYXJ0TklD Lg0KPiBJdCBjYW4uIFRoYXQncyB0aGUgcmVhc29uIGZvciBjaG9vc2luZyBUTFZzLiBTbyB0aGF0 DQo+IGFueSBoaWdoZXIgbGV2ZWwgbGFuZ3VhZ2UgY2FuIHVzZSBUTFZzIGxpa2UgaHR0cHM6Ly9w cm90ZWN0Mi5maXJlZXllLmNvbS92MS91cmw/az05Njg4NmRhZi1jOTEzNTdiNi05Njg4MmQzNC04 NjgyYWFhMjJiYzAtYzk5NGE1ZGNiZGE1ZDllOCZxPTEmZT1lODljMGFjYS1hM2IzLTRmNzItYjYx Ni1iYTQ1NTBiODU2YjYmdT1odHRwcyUzQSUyRiUyRmdpdGh1Yi5jb20lMkZ1c3Ryb3BvJTJGdXR0 bHYNCj4gdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgYWNjZWxlcmF0b3IuICBUTFZzIGZvbGxvdyB0 aGUgcmVxdWVzdCBhbmQNCj4gcmVzcG9uc2Ugc2NoZW1lIGxpa2UgUlBDLiBTbyBpdCBjYW4gd2Fy cCBpdCB1bmRlciBhcHBsaWNhdGlvbiBpZiBuZWVkZWQuDQo+DQo+Pg0KPj4gRFdBIGNvdWxkIGJl IHNvbWUga2luZCBvZiBEUERLLWludGVybmFsIGZyYW1ld29yayBmb3IgbWFuYWdpbmcgY2VydGFp bg0KPj4gdHlwZSBvZiBEUFVzLCBidXQgc2hvdWxkIGl0IGJlIGV4cG9zZWQgdG8gdGhlIHVzZXIg YXBwbGljYXRpb24/DQo+DQo+IENvdWxkIHlvdSBjbGFyaWZ5IGEgYml0IG1vcmUuDQo+IFRoZSBv ZmZsb2FkIGlzIHJlcHJlc2VudGVkIGFzIGEgc2V0IG9mIFRMVnMgaW4gZ2VuZXJpYyBmYXNoaW9u LiBUaGVyZQ0KPiBpcyBubyBEUFUgc3BlY2lmaWMgYml0IGluIG9mZmxvYWQgcmVwcmVzZW50YXRp b24uIFNlZQ0KPiBydGVfZHdhX3Byb2ZpaWxlX2wzZndkLmggaGVhZGVyIGZpbGUuDQoNCg0KSXQg c2VlbXMgYSBiaXQgY3VtYmVyc29tZSB0byB3b3JrIHdpdGggVExWcyBvbiB0aGUgdXNlciBhcHBs aWNhdGlvbiANCnNpZGUuIFdvdWxkIGl0IGJlIGFuIGFsdGVybmF0aXZlIHRvIGhhdmUgdGhlIHBy b2ZpbGUgQVBJIGFzIGEgc2V0IG9mIEMgDQpBUElzIGluc3RlYWQgb2YgVExWLWJhc2VkIG1lc3Nh Z2luZyBpbnRlcmZhY2U/IFRoZSB1bmRlcmx5aW5nIA0KaW1wbGVtZW50YXRpb24gY291bGQgc3Rp bGwgYmUgLSBpbiBtYW55IG9yIGFsbCBjYXNlcyAtIGJlIFRMVnMgc2VudCBvdmVyIA0Kc29tZSBh cHByb3ByaWF0ZSB0cmFuc3BvcnQuDQoNCg0KU3VjaCBhIEMgQVBJIGNvdWxkIHN0aWxsIGJlIGFz eW5jaHJvbm91cywgYW5kIHN0aWxsIGJlIGEgcHJvZmlsZSBBUEkgDQoocmF0aGVyIHRoYW4gYSBz ZXQgb2YgbmV3IERQREsgZGV2aWNlIHR5cGVzKS4NCg0KDQpXaGF0IEkgdHJpZWQgdG8gYXNrIGR1 cmluZyB0aGUgbWVldGluZyBidXQgd2hlcmUgSSBkaWRuJ3QgZ2V0IGFuIGFuc3dlciANCihvciBh dCBsZWFzdCBvbmUgdGhhdCBJIGNvdWxkIHVuZGVyc3RhbmQpIHdhcyBob3cgdGhlIHByb2ZpbGVz IHdhcyB0byBiZSANCnNwZWNpZmllZCBhbmQvb3IgZG9jdW1lbnRlZC4gTWF5YmUgdGhlIGFib3Zl IGlzIHdoYXQgeW91IGhhZCBpbiBtaW5kIA0KYWxyZWFkeS4NCg0KDQo+IFRCIGhvc3RlZCBhIG1l ZXRpbmcgZm9yIHRoaXMgYXQgRGF0ZTogV2VkbmVzZGF5LCBPY3RvYmVyIDI3dGggVGltZToNCj4g M3BtIFVUQywgaHR0cHM6Ly9tZWV0LmppdC5zaS9EUERLDQo+IEZlZWwgZnJlZSB0byBqb2luLg0K Pg0KPg0KPj4NCj4+PiBUaGlzIGVuYWJsZXMgRFdBIHBlcnNvbmFsaXR5L3dvcmtsb2FkIHRvIGJl IGNvbXBsZXRlbHkgcHJvZ3JhbW1hYmxlLg0KPj4+IFR5cGljYWwgZXhhbXBsZXMgb2YgRFdBIG9m ZmxvYWRzIGFyZSBGbG93L1Nlc3Npb24gbWFuYWdlbWVudCwNCj4+PiBWaXJ0dWFsIHN3aXRjaCwg VExTIG9mZmxvYWQsIElQc2VjIG9mZmxvYWQsIGwzZndkIG9mZmxvYWQsIGV0Yy4NCj4+PiBNb3Rp dmF0aW9uIGZvciB0aGUgbmV3IGxpYnJhcnkNCj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4+PiBFdmVuIHRob3VnaCwgYSBsb3Qgb2Ygc2VtaWNvbmR1Y3RvciB2ZW5kb3JzIG9m ZmVycyBhIGRpZmZlcmVudCBmb3JtIG9mIERXQSwNCj4+PiBzdWNoIGFzIERQVShvZnRlbiBjYWxs ZWQgU21hcnQtTklDKSwgR1BVLCBJUFUsIFhQVSwgZXRjLiwNCj4+PiBEdWUgdG8gdGhlIGxhY2sg b2Ygc3RhbmRhcmQgQVBJcyB0byAiRGVmaW5lIHRoZSB3b3JrbG9hZCIgYW5kDQo+Pj4gIkNvbW11 bmljYXRpb24gYmV0d2VlbiBIT1NUIGFuZCBEV0EiLCBpdCBpcyBkaWZmaWN1bHQgZm9yIERQREsN Cj4+PiBjb25zdW1lcnMgdG8gdXNlIHRoZW0gaW4gYSBwb3J0YWJsZSB3YXkgYWNyb3NzIGRpZmZl cmVudCBEV0EgdmVuZG9ycw0KPj4+IGFuZCBlbmFibGUgaXQgaW4gY2xvdWQgZW52aXJvbm1lbnRz Lg0KPj4+DQo+Pj4NCj4+PiBDb250ZW50cyBvZiBSRkMNCj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0N Cj4+PiBUaGlzIFJGQyBhdHRlbXB0cyB0byBkZWZpbmUgc3RhbmRhcmQgQVBJcyBmb3I6DQo+Pj4N Cj4+PiAxKSBEZWZpbml0aW9uIG9mIFByb2ZpbGVzIGNvcnJlc3BvbmRpbmcgdG8gd2VsbCBkZWZp bmVkIHdvcmtsb2Fkcywgd2hpY2ggaW5jbHVkZXMNCj4+PiAgICAgIGEgc2V0IG9mIFRMVihNZXNz YWdlcykgYXMgYSByZXF1ZXN0ICBhbmQgcmVzcG9uc2Ugc2NoZW1lIHRvIGRlZmluZQ0KPj4+ICAg ICAgdGhlIGNvbnRyYWN0IGJldHdlZW4gaG9zdCBhbmQgRFdBIHRvIG9mZmxvYWQgYSB3b3JrbG9h ZC4NCj4+PiAgICAgIChTZWUgbGliL2R3YS9ydGVfZHdhX3Byb2ZpbGVfKiBoZWFkZXIgZmlsZXMp DQo+Pj4gMikgRGlzY292ZXJ5IG9mIGEgRFdBcyBjYXBhYmlsaXRpZXMgKGUuZy4gd2hpY2ggc3Bl Y2lmaWMgd29ya2xvYWRzIGl0IGNhbiBzdXBwb3J0KQ0KPj4+ICAgICAgaW4gYSB2ZW5kb3IgaW5k ZXBlbmRlbnQgZmFzaGlvbi4gKFNlZSBydGVfZHdhX2Rldl9kaXNjX3Byb2ZpbGVzKCkpDQo+Pj4g MykgQXR0YWNoaW5nIGEgc2V0IG9mIHByb2ZpbGVzIHRvIGEgRFdBIGRldmljZShTZWUgcnRlX2R3 YV9kZXZfYXR0YWNoKCkpDQo+Pj4gNCkgQSBjb21tdW5pY2F0aW9uIGZyYW1ld29yayBiZXR3ZWVu IEhvc3QgYW5kIERXQShTZWUgcnRlX2R3YV9jdHJsX29wKCkgZm9yDQo+Pj4gICAgICBjb250cm9s IHBsYW5lIGFuZCBydGVfZHdhX3BvcnRfaG9zdF8qIGZvciB1c2VyIHBsYW5lKQ0KPj4+IDUpIFZp cnR1YWxpemF0aW9uIG9mIERXQSBoYXJkd2FyZSBhbmQgZmlybXdhcmUgKFVzZSBzdGFuZGFyZCBE UERLIGRldmljZS9idXMgbW9kZWwpDQo+Pj4gNikgRW5hYmxlbWVudCBvZiBhZG1pbmlzdHJhdGl2 ZSBmdW5jdGlvbnMgc3VjaCBhcyBGVyB1cGRhdGVzLA0KPj4+ICAgICAgcmVzb3VyY2UgcGFydGl0 aW9uaW5nIGluIGEgRFdBIGxpa2UgaXRlbXMgaW4gZ2xvYmFsIGluDQo+Pj4gICAgICBuYXR1cmUg dGhhdCBpcyBhcHBsaWNhYmxlIGZvciBhbGwgRFdBIGRldmljZSB1bmRlciB0aGUgRFdBLg0KPj4+ ICAgICAgKFNlZSBydGVfZHdhX3Byb2ZpbGVfYWRtaW4uaCkNCj4+Pg0KPj4+IEFsc28sIHRoaXMg UkZDIGRlZmluZSB0aGUgTDNGV0QgcHJvZmlsZSB0byBvZmZsb2FkIEwzRldEIHdvcmtsb2FkIHRv IERXQS4NCj4+PiBUaGlzIFJGQyBkZWZpbmVzIGFuIGV0aGVybmV0LXN0eWxlIGhvc3QgcG9ydCBm b3IgSG9zdCB0byBEV0EgY29tbXVuaWNhdGlvbi4NCj4+PiBEaWZmZXJlbnQgaG9zdCBwb3J0IHR5 cGVzIG1heSBiZSByZXF1aXJlZCB0byBjb3ZlciB0aGUgbGFyZ2Ugc3BlY3RydW0gb2YgRFdBIHR5 cGVzIGFzDQo+Pj4gdHJhbnNwb3J0cyBsaWtlIFBDSWUgRE1BLCBTaGFyZWQgTWVtb3J5LCBvciBF dGhlcm5ldCBhcmUgZnVuZGFtZW50YWxseSBkaWZmZXJlbnQsDQo+Pj4gYW5kIG9wdGltYWwgcGVy Zm9ybWFuY2UgbmVlZCBob3N0IHBvcnQgc3BlY2lmaWMgQVBJcy4NCj4+Pg0KPj4+IFRoZSBmcmFt ZXdvcmsgZG9lcyBub3QgZm9yY2UgYW4gYWJzdHJhY3Qgb2YgZGlmZmVyZW50IHRyYW5zcG9ydCBp bnRlcmZhY2VzIGFzDQo+Pj4gc2luZ2xlIEFQSSwgaW5zdGVhZCwgZGVjb3VwbGVzIFRMViBmcm9t IHRoZSB0cmFuc3BvcnQgaW50ZXJmYWNlIGFuZCBmb2N1c2VzIG9uDQo+Pj4gZGVmaW5pbmcgdGhl IFRMVnMgYW5kIGxlYXZpbmcgdmVuZG9ycyB0byBzcGVjaWZ5IHRoZSBob3N0IHBvcnRzDQo+Pj4g c3BlY2lmaWMgdG8gdGhlaXIgRFdBIGFyY2hpdGVjdHVyZS4NCj4+Pg0KPj4+DQo+Pj4gUm9hZG1h cA0KPj4+IC0tLS0tLS0NCj4+PiAxKSBBZGRyZXNzIHRoZSBjb21tZW50cyBmb3IgdGhpcyBSRkMg YW5kIGVuYWJsZSB0aGUgY29tbW9uIGNvZGUNCj4+PiAyKSBTVyBkcml2ZXJzL2luZnJhc3RydWN0 dXJlIGZvciBgRFdBYCBhbmQgYERXQSBkZXZpY2VgDQo+Pj4gYXMgdHdvIHNlcGFyYXRlIERQREsg cHJvY2Vzc2VzIG92ZXIgYG1lbWlmYCBEUERLIGV0aGRldiBkcml2ZXIgZm9yDQo+Pj4gTDNGV0Qg b2ZmbG9hZC4gVGhpcyBpcyB0byBlbmFibGUgdGhlIGZyYW1ld29yayB3aXRob3V0IGFueSBzcGVj aWFsIEhXLg0KPj4+IDMpIEV4YW1wbGUgRFdBIGRldmljZSBhcHBsaWNhdGlvbiBmb3IgTDNGV0Qg cHJvZmlsZS4NCj4+PiA0KSBNYXJ2ZWxsIERXQSBEZXZpY2UgZHJpdmVycy4NCj4+PiA1KSBCYXNl ZCBvbiBjb21tdW5pdHkgaW50ZXJlc3QgbmV3IHByb2ZpbGUgY2FuIGJlIGFkZGVkIGluIHRoZSBm dXR1cmUuDQo+Pj4NCj4+Pg0KPj4+IERXQSBsaWJyYXJ5IGZyYW1ld29yaw0KPj4+IC0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPj4+DQo+Pj4gRFdBIGNvbXBvbmVudHM6DQo+Pj4NCj4+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tPiBydGVfZHdh X3BvcnRfaG9zdF8qKCkNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgKFVzZXIgUGxhbmUgdHJhZmZpYyBhcyBUTFYpDQo+Pj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4+PiAgICAg ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgfCAgICstLS0t LS0tLS0tLS0tLS0tLS0tLSsNCj4+PiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgfCAgIHwgRFBESyBEV0EgRGV2aWNlWzBdIHwNCj4+PiAgICAgICAg ICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0rICB8ICBIb3N0IFBvcnQgIHwgKy0tLS0t LS0tLS0tLS0tLS0rIHwNCj4+PiAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAg ICB8ICB8PD09PT09PT09Kz09PnwgfCAgICAgICAgICAgICAgICB8IHwNCj4+PiAgICAgICAgICAg ICAgICAgICAgfCAgfCAgIFByb2ZpbGUgMCAgICB8ICB8ICAgICAgICAgICAgIHwgfCAgIFByb2Zp bGUgWCAgICB8IHwNCj4+PiAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICB8 ICB8ICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICB8IHwNCj4+PiAgICAgPD09PT09PT09 PT09PT0+fCAgKy0tLS0tLS0tLS0tLS0tLS0rICB8IENvbnRyb2wgUG9ydHwgKy0tLS0tLS0tLS0t LS0tLS0rIHwNCj4+PiAgICAgICBEV0EgUG9ydDAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0rICB8 PD09PT09PT09Kz09PnwgICAgICAgICAgICAgICAgICAgIHwNCj4+PiAgICAgICAgICAgICAgICAg ICAgfCAgfCAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgfCAgICstLS0tLS0tLS0tLS0tLS0t LS0tLSsNCj4+PiAgICAgICAgICAgICAgICAgICAgfCAgfCAgIFByb2ZpbGUgMSAgICB8ICB8ICAg ICAgICAgfA0KPj4+ICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgIHwgIHwg ICAgICAgICArLS0+IHJ0ZV9kd2FfY3RybF9vcCgpDQo+Pj4gICAgICAgICAgICAgICAgICAgIHwg ICstLS0tLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgIChDb250cm9sIFBsYW5lIHRyYWZmaWMgYXMg VExWKQ0KPj4+ICAgICA8PT09PT09PT09PT09PT58ICAgICAgRGF0YXBsYW5lICAgICAgIHwNCj4+ PiAgICAgICBEV0EgUG9ydDEgICAgfCAgICAgIFdvcmtsb2FkICAgICAgICB8DQo+Pj4gICAgICAg ICAgICAgICAgICAgIHwgICAgICBBY2NlbGVyYXRvciAgICAgfCAgICAgICAgICAgICArLS0tLS0t LS0tLSAtLS0tLS0tLS0rDQo+Pj4gICAgICAgICAgICAgICAgICAgIHwgICAgICAoSFcvRlcvU1cp ICAgICAgfCAgICAgICAgICAgICB8IERQREsgRFdBIERldmljZVtOXSB8DQo+Pj4gICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAgSG9zdCBQb3J0ICB8ICstLS0tLS0t LS0tLS0tLS0tKyB8DQo+Pj4gICAgIDw9PT09PT09PT09PT09PnwgICstLS0tLS0tLS0tLS0tLS0t KyAgfDw9PT09PT09PT09PT58IHwgICAgICAgICAgICAgICAgfCB8DQo+Pj4gICAgICAgRFdBIFBv cnROICAgIHwgIHwgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICB8IHwgICBQcm9maWxl IFkgICAgfCB8DQo+Pj4gICAgICAgICAgICAgICAgICAgIHwgIHwgICAgUHJvZmlsZSBOICAgfCAg fCAgICAgICAgICAgICB8IHwgICAgICAgICAgIF4gICAgfCB8DQo+Pj4gICAgICAgICAgICAgICAg ICAgIHwgIHwgICAgICAgICAgICAgICAgfCAgfCBDb250cm9sIFBvcnR8ICstLS0tLS0tLS0tLXwt LS0tKyB8DQo+Pj4gICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tfC0tLS0tLS0tKyAgfDw9 PT09PT09PT09PT58ICAgICAgICAgICAgIHwgICAgICB8DQo+Pj4gICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLXwtLS0t LS0rDQo+Pj4gICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tfC0tLS0tLS0tLS0tKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rDQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXg0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArLS1ydGVfZHdhX2Rldl9hdHRhY2goKQ0KPj4+DQo+ Pj4NCj4+PiBEYXRhcGxhbmUgV29ya2xvYWQgQWNjZWxlcmF0b3I6IEl0IGlzIGFuIGFic3RyYWN0 IG1vZGVsLiBUaGUgbW9kZWwgaXMNCj4+PiBjYXBhYmxlIG9mIG9mZmxvYWRpbmcgdGhlIGRhdGFw bGFuZSB3b3JrbG9hZCBmcm9tIGFwcGxpY2F0aW9uIHZpYQ0KPj4+IERQREsgQVBJIG92ZXIgaG9z dCBhbmQgY29udHJvbCBwb3J0cyBvZiBhIERXQSBkZXZpY2UuDQo+Pj4gRGF0YXBsYW5lIFdvcmts b2FkIEFjY2VsZXJhdG9yKERXQSkgdHlwaWNhbGx5IGNvbnRhaW5zIGEgc2V0IG9mIENQVXMsDQo+ Pj4gTmV0d29yayBjb250cm9sbGVycywgYW5kIHByb2dyYW1tYWJsZSBkYXRhIGFjY2VsZXJhdGlv biBlbmdpbmVzIGZvcg0KPj4+IHBhY2tldCBwcm9jZXNzaW5nLCBjcnlwdG9ncmFwaHksIHJlZ2V4 IGVuZ2luZXMsIGJhc2UtYmFuZCBwcm9jZXNzaW5nLCBldGMuDQo+Pj4gVGhpcyBhbGxvd3MgRFdB IHRvIG9mZmxvYWQgY29tcHV0ZS9wYWNrZXQgcHJvY2Vzc2luZy9iYXNlLWJhbmQvY3J5cHRvZ3Jh cGh5LXJlbGF0ZWQNCj4+PiB3b3JrbG9hZCBmcm9tIHRoZSBob3N0IENQVSB0byBzYXZlIGNvc3Qg YW5kIHBvd2VyLiBBbHNvLA0KPj4+IGVuYWJsZSBzY2FsaW5nIHRoZSB3b3JrbG9hZCBieSBhZGRp bmcgRFdBcyB0byB0aGUgaG9zdCBDUFUgYXMgbmVlZGVkLg0KPj4+DQo+Pj4gRFdBIGRldmljZTog QSBEV0EgY2FuIGJlIHNsaWNlZCB0byBOIG51bWJlciBvZiBEUERLIERXQSBkZXZpY2UocykNCj4+ PiBiYXNlZCBvbiB0aGUgcmVzb3VyY2VzIGF2YWlsYWJsZSBpbiBEV0EuDQo+Pj4gVGhlIERQREsg QVBJIGludGVyZmFjZSBvcGVyYXRlcyBvbiB0aGUgRFBESyBEV0EgZGV2aWNlLg0KPj4+IEl0IGlz IGEgcmVwcmVzZW50YXRpb24gb2YgYSBzZXQgb2YgcmVzb3VyY2VzIGluIERXQS4NCj4+Pg0KPj4+ IFRMVjogVExWICh0YWctbGVuZ3RoLXZhbHVlKSBlbmNvZGVkIGRhdGEgc3RyZWFtIGNvbnRhaW4g dGFnIGFzDQo+Pj4gbWVzc2FnZSBJRCwgZm9sbG93ZWQgYnkgbWVzc2FnZSBsZW5ndGgsIGFuZCBm aW5hbGx5IHRoZSBtZXNzYWdlIHBheWxvYWQuDQo+Pj4gVGhlIDMyYml0IG1lc3NhZ2UgSUQgY29u c2lzdHMgb2YgdHdvIHBhcnRzLCAxNmJpdCBUYWcgYW5kIDE2Yml0IFN1YnRhZy4NCj4+PiBUaGUg dGFnIHJlcHJlc2VudHMgSUQgb2YgdGhlIGdyb3VwIG9mIHRoZSBzaW1pbGFyIG1lc3NhZ2UsDQo+ Pj4gd2hlcmVhcywgc3VidGFnIHJlcHJlc2VudHMgYSBtZXNzYWdlIHRhZyBJRCB1bmRlciB0aGUg Z3JvdXAuDQo+Pj4NCj4+PiBDb250cm9sIFBvcnQ6IFVzZWQgZm9yIHRyYW5zZmVycmluZyB0aGUg Y29udHJvbCBwbGFuZSBUTFZzLiBFdmVyeSBEUERLDQo+Pj4gRFdBIGRldmljZSBtdXN0IGhhdmUg YSBjb250cm9sIHBvcnQuIE9ubHkgb25lIG91dHN0YW5kaW5nIFRMViBjYW4gYmUNCj4+PiBwcm9j ZXNzZWQgdmlhIHRoaXMgcG9ydCBieSBhIHNpbmdsZSBEV0EgZGV2aWNlLiBUaGlzIG1ha2VzIHRo ZSBjb250cm9sDQo+Pj4gcG9ydCBzdWl0YWJsZSBmb3IgdGhlIGNvbnRyb2wgcGxhbmUuDQo+Pj4N Cj4+PiBIb3N0IFBvcnQ6IFVzZWQgZm9yIHRyYW5zZmVycmluZyB0aGUgdXNlciBwbGFuZSBUTFZz Lg0KPj4+IEV0aGVybmV0LCBQQ0llIERNQSwgU2hhcmVkIE1lbW9yeSwgZXRjLmFyZSB0aGUgZXhh bXBsZSBvZg0KPj4+IGRpZmZlcmVudCB0cmFuc3BvcnQgbWVjaGFuaXNtcyBhYnN0cmFjdGVkIHVu ZGVyIHRoZSBob3N0IHBvcnQuDQo+Pj4gVGhlIHByaW1hcnkgcHVycG9zZSBvZiBob3N0IHBvcnQg dG8gZGVjb3VwbGUgdGhlIHVzZXIgcGxhbmUgVExWcyB3aXRoDQo+Pj4gdW5kZXJuZWF0aCB0cmFu c3BvcnQgbWVjaGFuaXNtIGRpZmZlcmVuY2VzLg0KPj4+IFVubGlrZSBjb250cm9sIHBvcnQsIG1v cmUgdGhhbiBvbmUgb3V0c3RhbmRpbmcgVExWcyBjYW4gYmUgcHJvY2Vzc2VkIGJ5DQo+Pj4gYSBz aW5nbGUgRFdBIGRldmljZSB2aWEgdGhpcyBwb3J0Lg0KPj4+IFRoaXMgbWFrZXMsIHRoZSBob3N0 IHBvcnQgdHJhbnNmZXIgdG8gYmUgaW4gYXN5bmNocm9ub3VzIG5hdHVyZSwNCj4+PiB0byBzdXBw b3J0IGxhcmdlIHZvbHVtZXMgYW5kIGxlc3MgbGF0ZW5jeSB1c2VyIHBsYW5lIHRyYWZmaWMuDQo+ Pj4NCj4+PiBEV0EgUG9ydDogVXNlZCBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgYmV0d2VlbiB0aGUg ZXh0ZXJuYWwgc291cmNlIGFuZCBEV0EuDQo+Pj4gRXRoZXJuZXQsIGVDUFJJIGFyZSBleGFtcGxl cyBvZiBEV0EgcG9ydHMuIFVubGlrZSBob3N0IHBvcnRzLA0KPj4+IHRoZSBob3N0IENQVSBpcyBu b3QgaW52b2x2ZWQgaW4gdHJhbnNmZXJyaW5nIHRoZSBkYXRhIHRvL2Zyb20gRFdBIHBvcnRzLg0K Pj4+IFRoZXNlIHBvcnRzIHR5cGljYWxseSBjb25uZWN0ZWQgdG8gdGhlIE5ldHdvcmsgY29udHJv bGxlciBpbnNpZGUgdGhlDQo+Pj4gRFdBIHRvIHRyYW5zZmVyIHRoZSB0cmFmZmljIGZyb20gdGhl IGV4dGVybmFsIHNvdXJjZS4NCj4+Pg0KPj4+IFRMViBkaXJlY3Rpb246IGBIb3N0IHRvIERXQWAg YW5kIGBEV0EgdG8gSG9zdGAgYXJlIHRoZSBkaXJlY3Rpb25zDQo+Pj4gb2YgVExWIG1lc3NhZ2Vz LiBUaGUgZm9ybWVyIG9uZSBpcyBzcGVjaWZpZWQgYXMgSDJELCBhbmQgdGhlIGxhdGVyIG9uZSBp cw0KPj4+IHNwZWNpZmllZCBhcyBEMkguIFRoZSBIMkQgY29udHJvbCBUTFZzLCB1c2VkIGZvciBy ZXF1ZXN0aW5nIERXQSB0byBwZXJmb3JtDQo+Pj4gc3BlY2lmaWMgYWN0aW9uIGFuZCBEMkggY29u dHJvbCBUTFZzIGFyZSB1c2VkIHRvIHJlc3BvbmQgdG8gdGhlIHJlcXVlc3RlZA0KPj4+IGFjdGlv bnMuIFRoZSBIMkQgdXNlciBwbGFuZSBtZXNzYWdlcyBhcmUgdXNlZCBmb3IgdHJhbnNmZXJyaW5n IGRhdGEgZnJvbSB0aGUNCj4+PiBob3N0IHRvIHRoZSBEV0EuIFRoZSBEMkggdXNlciBwbGFuZSBt ZXNzYWdlcyBhcmUgdXNlZCBmb3IgdHJhbnNmZXJyaW5nDQo+Pj4gZGF0YSBmcm9tIHRoZSBEV0Eg dG8gdGhlIGhvc3QuDQo+Pj4NCj4+PiBEV0EgZGV2aWNlIHN0YXRlczogRm9sbG93aW5nIGFyZSB0 aGUgZGlmZmVyZW50IHN0YXRlcyBvZiBhIERXQSBkZXZpY2UuDQo+Pj4gLSBSRUFEWTogRFdBIERl dmljZSBpcyByZWFkeSB0byBhdHRhY2ggdGhlIHByb2ZpbGUuDQo+Pj4gU2VlIHJ0ZV9kd2FfZGV2 X2Rpc2NfcHJvZmlsZXMoKSBBUEkgdG8gZGlzY292ZXIgdGhlIHByb2ZpbGUuDQo+Pj4gLSBBVFRB Q0hFRDogRFdBIERldmljZSBhdHRhY2hlZCB0byBvbmUgb3IgbW9yZSBwcm9maWxlcy4NCj4+PiBT ZWUgcnRlX2R3YV9kZXZfYXR0YWNoKCkgQVBJIHRvIGF0dGFjaCB0aGUgcHJvZmlsZShzKS4NCj4+ PiAtIFNUT1BQRUQ6IFByb2ZpbGUgaXMgaW4gdGhlIHN0b3Agc3RhdGUuDQo+Pj4gVExWIHR5cGUg YFRZUEVfQVRUQUNIRURgYW5kIGBUWVBFX1NUT1BQRURgIG1lc3NhZ2VzIGFyZSB2YWxpZCBpbiB0 aGlzIHN0YXRlLg0KPj4+IEFmdGVyIHJ0ZV9kd2FfZGV2X2F0dGFjaCgpIG9yIGV4cGxpY2l0bHkg aW52b2tpbmcgdGhlIHJ0ZV9kd2Ffc3RvcCgpIEFQSQ0KPj4+IGJyaW5ncyBkZXZpY2UgdG8gdGhp cyBzdGF0ZS4NCj4+PiAtIFJVTk5JTkc6IEludm9raW5nIHJ0ZV9kd2Ffc3RhcnQoKSBicmluZ3Mg dGhlIGRldmljZSB0byB0aGlzIHN0YXRlLg0KPj4+IFRMViB0eXBlIGBUWVBFX1NUQVJURURgIGFu ZCBgVFlQRV9VU0VSX1BMQU5FYCBhcmUgdmFsaWQgaW4gdGhpcyBzdGF0ZS4NCj4+PiAtIERFVEFD SEVEOiBJbnZva2luZyBydGVfZHdhX2Rldl9kZXRhY2goKSBicmluZ3MgdGhlIGRldmljZSB0byB0 aGlzIHN0YXRlLg0KPj4+IFRoZSBkZXZpY2UgYW5kIHByb2ZpbGUgbXVzdCBiZSBpbiB0aGUgU1RP UFBFRCBzdGF0ZSBwcmlvciB0bw0KPj4+IGludm9raW5nIHRoZSBydGVfZHdhX2Rldl9kZXRhY2go KS4NCj4+PiAtIENMT1NFRDogQ2xvc2VkIGEgc3RvcHBlZC9kZXRhY2hlZCBEV0EgZGV2aWNlLlRo ZSBkZXZpY2UgY2Fubm90IGJlIHJlc3RhcnRlZCEuDQo+Pj4gSW52b2tpbmcgcnRlX2R3YV9kZXZf Y2xvc2UoKSBicmluZ3MgdGhlIGRldmljZSB0byB0aGlzIHN0YXRlLg0KPj4+DQo+Pj4gVExWIHR5 cGVzOiBGb2xsb3dpbmcgYXJlIHRoZSBkaWZmZXJlbnQgVExWIHR5cGVzDQo+Pj4gLSBUWVBFX0FU VEFDSEVEOiBWYWxpZCB3aGVuIHRoZSBkZXZpY2UgaXMgaW4gYEFUVEFDSEVEYCwgYFNUT1BQRURg IGFuZCBgUlVOTklOR2Agc3RhdGUuDQo+Pj4gLSBUWVBFX1NUT1BQRUQ6IFZhbGlkIHdoZW4gdGhl IGRldmljZSBpcyBpbiBgU1RPUFBFRGAgc3RhdGUuDQo+Pj4gLSBUWVBFX1NUQVJURUQ6IFZhbGlk IHdoZW4gdGhlIGRldmljZSBpcyBpbiBgUlVOTklOR2Agc3RhdGUuDQo+Pj4gLSBUWVBFX1VTRVJf UExBTkU6IFZhbGlkIHdoZW4gdGhlIGRldmljZSBpcyBpbiBgUlVOTklOR2Agc3RhdGUgYW5kDQo+ Pj4gdXNlZCB0byB0cmFuc2ZlciBvbmx5IHVzZXIgcGxhbmUgdHJhZmZpYy4NCj4+Pg0KPj4+IFBy b2ZpbGU6IFNwZWNpZmllcyBhIHdvcmtsb2FkIHRoYXQgZGF0YXBsYW5lIHdvcmtsb2FkIGFjY2Vs ZXJhdG9yDQo+Pj4gcHJvY2VzcyBvbiBiZWhhbGYgb2YgYSBEUERLIGFwcGxpY2F0aW9uIHRocm91 Z2ggYSBEUERLIERXQSBkZXZpY2UuDQo+Pj4gQSBwcm9maWxlIGlzIGV4cHJlc3NlZCBhcyBhIHNl dCBvZiBUTFYgbWVzc2FnZXMgZm9yIGNvbnRyb2wgcGxhbmUgYW5kIHVzZXIgcGxhbmUNCj4+PiBm dW5jdGlvbnMuIEVhY2ggVExWIG1lc3NhZ2UgbXVzdCBoYXZlIFRhZywgU3ViVGFnLCBEaXJlY3Rp b24sIFR5cGUsIFBheWxvYWQgYXR0cmlidXRlcy4NCj4+Pg0KPj4+IFByb2dyYW1taW5nIG1vZGVs OiBUeXBpY2FsIGFwcGxpY2F0aW9uIHByb2dyYW1taW5nIHNlcXVlbmNlIGlzIGFzIGZvbGxvd3Ms DQo+Pj4gMSkgSW4gdGhlIEVBTCBpbml0aWFsaXphdGlvbiBwaGFzZSwgdGhlIERXQSBkZXZpY2Vz IHNoYWxsIGJlIHByb2JlZCwNCj4+PiAgICAgIHRoZSBhcHBsaWNhdGlvbiBjYW4gcXVlcnkgdGhl IG51bWJlciBvZiBhdmFpbGFibGUgRFdBIGRldmljZXMgd2l0aA0KPj4+ICAgICAgcnRlX2R3YV9k ZXZfY291bnQoKSBBUEkuDQo+Pj4gMikgQXBwbGljYXRpb24gZGlzY292ZXJzIHRoZSBhdmFpbGFi bGUgcHJvZmlsZShzKSBpbiBhIERXQSBkZXZpY2UgdXNpbmcNCj4+PiAgICAgIHJ0ZV9kd2FfZGV2 X2Rpc2NfcHJvZmlsZXMoKSBBUEkuDQo+Pj4gMykgQXBwbGljYXRpb24gYXR0YWNoZXMgb25lIG9y IG1vcmUgcHJvZmlsZShzKSB0byBhIERXQSBkZXZpY2UgdXNpbmcNCj4+PiAgICAgIHJ0ZV9kd2Ff ZGV2X2F0dGFjaCgpLg0KPj4+IDQpIE9uY2UgdGhlIHByb2ZpbGUgaXMgYXR0YWNoZWQsIFRoZSBk ZXZpY2Ugc2hhbGwgYmUgaW4gdGhlIFNUT1BQRUQgc3RhdGUuDQo+Pj4gICAgICBDb25maWd1cmUg dGhlIHByb2ZpbGUocykgd2l0aCBgVFlQRV9BVFRBQ0hFRGBhbmQgYFRZUEVfU1RPUFBFRGANCj4+ PiAgICAgIHR5cGUgVExWcyB1c2luZyBydGVfZHdhX2N0cmxfb3AoKSBBUEkuDQo+Pj4gNSkgT25j ZSB0aGUgcHJvZmlsZSBpcyBjb25maWd1cmVkLCBtb3ZlIHRoZSBwcm9maWxlIHRvIHRoZSBgUlVO TklOR2Agc3RhdGUNCj4+PiAgICAgIGJ5IGludm9raW5nIHJ0ZV9kd2Ffc3RhcnQoKSBBUEkuDQo+ Pj4gNikgT25jZSB0aGUgcHJvZmlsZSBpcyBpbiBydW5uaW5nIHN0YXRlIGFuZCBpZiBpdCBoYXMg dXNlciBwbGFuZSBUTFYsDQo+Pj4gICAgICB0cmFuc2ZlciB0aG9zZSBUTFZzIHVzaW5nIHJ0ZV9k d2FfcG9ydF9ob3N0XygpIEFQSSBiYXNlZCBvbiB0aGUgYXZhaWxhYmxlDQo+Pj4gICAgICBob3N0 IHBvcnQgZm9yIHRoZSBnaXZlbiBwcm9maWxlIGF0dGFjaGVkLg0KPj4+IDcpIEFwcGxpY2F0aW9u IGNhbiBjaGFuZ2UgdGhlIGR5bmFtaWMgY29uZmlndXJhdGlvbiBhc3BlY3RzIGluDQo+Pj4gICAg ICBgUlVOTklOR2Agc3RhdGUgdXNpbmcgcnRlX2R3YV9jdHJsX29wKCkgQVBJIGJ5IGlzc3Vpbmcg YFRZUEVfU1RBUlRFRGAgdHlwZQ0KPj4+ICAgICAgb2YgVExWIG1lc3NhZ2VzLg0KPj4+IDgpIEZp bmFsbHksIHVzZSBydGVfZHdhX3N0b3AoKSwgcnRlX2R3YV9kZXZfZGV0YWNoKCksIHJ0ZV9kd2Ff ZGV2X2Nsb3NlKCkNCj4+PiAgICAgIHNlcXVlbmNlIGZvciB0ZWFyLWRvd24uDQo+Pj4NCj4+Pg0K Pj4+IEwzRldEIHByb2ZpbGUNCj4+PiAtLS0tLS0tLS0tLS0tDQo+Pj4NCj4+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tPi0tWzFdLS0tLS0tLS0tLS0tLS0r DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfA0KPj4+ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS18LS0t LS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgIHwNCj4+PiAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8DQo+Pj4gICAg ICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLXwtLS0tLS0tKyAgfCAgICAgICAgICAgICAgICAg ICAgICAgfA0KPj4+ICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgIHwgIHwg ICAgICAgICAgICAgICAgICAgICAgIHwNCj4+PiAgICAgICAgICAgICAgICAgICAgfCAgfCBMM0ZX RCBQcm9maWxlICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICB8DQo+Pj4gICAgICAgICBcICAg ICAgICAgIHwgIHwgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgfA0K Pj4+ICAgICA8PT09PVw9PT09PT09PT58ICArLS0tLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICAg ICAgICAgICAgICAgIHwNCj4+PiAgICAgICBEV0EgXFBvcnQwICAgfCAgICAgTG9va3VwIFRhYmxl ICAgICB8ICAgICAgICAgICAgICstLS0tLS0tLS18LS0tLS0tLS0tLSsNCj4+PiAgICAgICAgICAg IFwgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0rICB8ICAgICAgICAgICAgIHwgRFBESyBEV0F8 RGV2aWNlWzBdIHwNCj4+PiAgICAgICAgICAgICBcICAgICAgfCAgfCBJUCAgICB8IERwb3J0ICB8 ICB8ICBIb3N0IFBvcnQgIHwgKy0tLS0tLS18LS0tLS0tLS0rIHwNCj4+PiAgICAgICAgICAgICAg XCAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0rICB8PD09PT09PT09PT09PnwgfCAgICAgICB8ICAg ICAgICB8IHwNCj4+PiAgICAgICAgICAgICAgICt+WzNdfn5+fH5+fn5+fn58fn5+fn5+fn58fn5+ fn5+fn5+fn5+fn5+fn4+fC0+TDNGV0QgUHJvZmlsZSB8IHwNCj4+PiAgICAgPD09PT09PT09PT09 PT0+fCAgKy0tLS0tLS0tLS0tLS0tLS0rICB8ICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAg ICB8IHwNCj4+PiAgICAgICBEV0EgUG9ydDEgICAgfCAgfCAgICAgICB8ICAgICAgICB8ICB8IENv bnRyb2wgUG9ydHwgKy18LS0tLS0tLS0tfC0tLS0rIHwNCj4+PiAgICAgICAgICAgICAgICAgICAg fCAgKy0tLS0tLS0tLS0tLS0tLS0rICB8PD09PT09PT09PT09PnwgICB8ICAgICAgICAgfCAgICAg IHwNCj4+PiAgICAgICB+fn4+fn5bNV1+fn5+fH5+fH5+fisgICB8ICAgICAgICB8ICB8ICAgICAg ICAgICAgICstLS18LS0tLS0tLS0tfC0tLS0tLSsNCj4+PiAgICAgICAgICAgICAgICAgICAgfCAg Ky0tLSstLS0tLS0tLS0tLS0rICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgfA0KPj4+ICAg ICAgIH5+fjx+fn5+fn5+fn58fn58fn5+KyAgIHwgICAgICAgIHw8LXwtLS0tLS1bMl0tLS0tLS0t LSsgICAgICAgICB8DQo+Pj4gICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tLS0t KzwtfC0tLS0tLVs0XS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4+PiAgICAgICAgICAgICAgICAgICAg fCAgICBEYXRhcGxhbmUgICAgICAgICB8DQo+Pj4gICAgIDw9PT09PT09PT09PT09PnwgICAgV29y a2xvYWQgICAgICAgICAgfA0KPj4+ICAgICAgIERXQSBQb3J0TiAgICB8ICAgIEFjY2VsZXJhdG9y ICAgICAgIHwNCj4+PiAgICAgICAgICAgICAgICAgICAgfCAgICAoSFcvRlcvU1cpICAgICAgICB8 DQo+Pj4gICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPj4+DQo+ Pj4NCj4+PiBMM0ZXRCBwcm9maWxlIG9mZmxvYWRzIExheWVyLTMgZm9yd2FyZGluZyBiZXR3ZWVu IHRoZSBEV0EgRXRoZXJuZXQgcG9ydHMuDQo+Pj4NCj4+PiBUaGUgYWJvdmUgZGlhZ3JhbSBkZXBp Y3RzIHRoZSBwcm9maWxlIGFuZCBhcHBsaWNhdGlvbiBwcm9ncmFtbWluZyBzZXF1ZW5jZS4NCj4+ PiAxKSBEV0EgZGV2aWNlIGF0dGFjaGVzIHRoZSBMM0ZXRCBwcm9maWxlIHVzaW5nIHJ0ZV9kd2Ff ZGV2X2F0dGFjaCgpLg0KPj4+IDIpIENvbmZpZ3VyZSB0aGUgTDNGV0QgcHJvZmlsZToNCj4+PiBh KSBUaGUgYXBwbGljYXRpb24gcmVxdWVzdHMgTDNGV0QgcHJvZmlsZSBjYXBhYmlsaXRpZXMgb2Yg dGhlIERXQQ0KPj4+ICAgICAgYnkgdXNpbmcgUlRFX0RXQV9TVEFHX1BST0ZJTEVfTDNGV0RfSDJE X0lORk8sIE9uIHJlc3BvbnNlLA0KPj4+ICAgICAgdGhlIFJURV9EV0FfU1RBR19QUk9GSUxFX0wz RldEX0QySF9JTkZPIHJldHVybnMgdGhlIGxvb2t1cCBtb2Rlcw0KPj4+ICAgICAgc3VwcG9ydGVk LCBtYXggcnVsZXMgc3VwcG9ydGVkLCBhbmQgYXZhaWxhYmxlIGhvc3QgcG9ydHMgZm9yIHRoaXMg cHJvZmlsZS4NCj4+PiBiKSBUaGUgYXBwbGljYXRpb24gY29uZmlndXJlcyBhIHNldCBvZiBEV0Eg cG9ydHMgdG8gdXNlIGENCj4+PiAgICAgIGxvb2t1cCBtb2RlKEVNLCBMUE0sIG9yIEZJQikgdmlh IFJURV9EV0FfU1RBR19QUk9GSUxFX0wzRldEX0gyRF9DT05GSUcuDQo+Pj4gYykgVGhlIGFwcGxp Y2F0aW9uIGNvbmZpZ3VyZXMgYSB2YWxpZCBob3N0IHBvcnQgdG8gcmVjZWl2ZSBleGNlcHRpb24g cGFja2V0cy4NCj4+PiAzKSBUaGUgZXhjZXB0aW9uIHRoYXQgaXMgbm90IG1hdGNoaW5nIGZvcndh cmRpbmcgdGFibGUgZW50cnkgY29tZXMgYXMNCj4+PiAgICAgIFJURV9EV0FfU1RBR19QUk9GSUxF X0wzRldEX0QySF9FWENFUFRJT05fUEFDS0VUUyBUTFYgdG8gaG9zdC4gRFdBIHN0b3JlcyB0aGUg ZXhjZXB0aW9uDQo+Pj4gICAgICBwYWNrZXQgc2VuZCBiYWNrIGRlc3RpbmF0aW9uIHBvcnRzIGFm dGVyIGNvbXBsZXRpbmcgc3RlcCAoNCkuDQo+Pj4gNCkgUGFyc2UgdGhlIGV4Y2VwdGlvbiBwYWNr ZXQgYW5kIGFkZCBydWxlcyB0byB0aGUgRldEIHRhYmxlIHVzaW5nDQo+Pj4gICAgICBSVEVfRFdB X1NUQUdfUFJPRklMRV9MM0ZXRF9IMkRfTE9PS1VQX0FERC4gSWYgdGhlIGFwcGxpY2F0aW9uIGtu b3dzIHRoZSBydWxlcyBiZWZvcmVoYW5kLA0KPj4+ICAgICAgaXQgY2FuIGFkZCB0aGUgcnVsZXMg aW4gc3RlcCAyLg0KPj4+IDUpIFdoZW4gRFdBIHBvcnRzIHJlY2VpdmUgdGhlIG1hdGNoaW5nIGZs b3dzIGluIHRoZSBsb29rdXAgdGFibGUsIERXQSBmb3J3YXJkcw0KPj4+ICAgICAgdG8gRFdBIEV0 aGVybmV0IHBvcnRzIHdpdGhvdXQgaG9zdCBDUFUgaW50ZXJ2ZW50aW9uLg0KPj4+DQo+Pj4NCj4+ PiBFeGFtcGxlIGFwcGxpY2F0aW9uIHVzYWdlIHdpdGggTDNGV0QgcHJvZmlsZQ0KPj4+IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4gVGhpcyBleGFtcGxl IGFwcGxpY2F0aW9uIGlzIHRvIGRlbW9uc3RyYXRlIHRoZSBwcm9ncmFtbWluZyBtb2RlbCBvZiBE V0EgbGlicmFyeS4NCj4+PiBUaGlzIGV4YW1wbGUgb21pdHMgdGhlIGVycm9yIGNoZWNrcyB0byBz aW1wbHkgdGhlIGFwcGxpY2F0aW9uLg0KPj4+DQo+Pj4gdm9pZA0KPj4+IGR3YV9wcm9maWxlX2wz ZndkX2FkZF9ydWxlKHJ0ZV9kd2Ffb2JqX3Qgb2JqIG9iaiwgc3RydWN0IHJ0ZV9tYnVmICptYnVm KQ0KPj4+IHsNCj4+PiAgICAgICAgc3RydWN0IHJ0ZV9kd2FfcHJvZmlsZV9sM2Z3ZF9oMmRfbG9v a3VwX2FkZCAqbG9va3VwOw0KPj4+ICAgICAgICBzdHJ1Y3QgcnRlX2R3YV90bHYgKmgyZCwgKmQy aDsNCj4+PiAgICAgICAgc3RydWN0IHJ0ZV9ldGhlcl9oZHIgKmV0aF9oZHI7DQo+Pj4gICAgICAg IHN0cnVjdCBydGVfaXB2NF9oZHIgKmlwdjRfaGRyOw0KPj4+ICAgICAgICB1aW50MzJfdCBpZDsN Cj4+PiAgICAgICAgc2l6ZV90IGxlbjsNCj4+Pg0KPj4+ICAgICAgICBpZCA9IFJURV9EV0FfVExW X01LX0lEKFBST0ZJTEVfTDNGV0QsIEgyRF9MT09LVVBfQUREKTsNCj4+PiAgICAgICAgbGVuID0g c2l6ZW9mKHN0cnVjdCBydGVfZHdhX3Byb2ZpbGVfbDNmd2RfaDJkX2NvbmZpZyk7DQo+Pj4gICAg ICAgIGgyZCA9IG1hbGxvYyhSVEVfRFdBX1RMVl9IRFJfU1ogKyBsZW4pOw0KPj4+DQo+Pj4gICAg ICAgIGxvb2t1cCA9IGgyZC0+bXNnOw0KPj4+ICAgICAgICAgICAvKiBTaW1wbHkgaGFyZGNvZGUg dG8gSVB2NCBpbnN0ZWFkIG9mIGxvb2tpbmcgZm9yIFBhY2tldCB0eXBlIHRvIHNpbXBsaWZ5IGV4 YW1wbGUgKi8NCj4+PiAgICAgICAgbG9va3VwLT5ydWxlX3R5cGUgPSBSVEVfRFdBX1BST0ZJTEVf TDNGV0RfUlVMRV9UWVBFX0lQVjQ7DQo+Pj4gICAgICAgIGxvb2t1cC0+djRfcnVsZS5wcmVmaXgu ZGVwdGggPSAyNDsNCj4+Pg0KPj4+ICAgICAgICBldGhfaGRyID0gcnRlX3BrdG1idWZfbXRvZCht YnVmLCBzdHJ1Y3QgcnRlX2V0aGVyX2hkciAqKTsNCj4+PiAgICAgICAgaXB2NF9oZHIgPSAoc3Ry dWN0IHJ0ZV9pcHY0X2hkciAqKShldGhfaGRyICsgMSk7DQo+Pj4gICAgICAgIGxvb2t1cC0+djRf cnVsZS5wcmVmaXguaXBfZHN0ID0gcnRlX2JlX3RvX2NwdV8zMihpcHY0X2hkci0+ZHN0X2FkZHIp Ow0KPj4+ICAgICAgICBsb29rdXAtPmV0aF9wb3J0X2RzdCA9IG1idWYtPnBvcnQ7DQo+Pj4NCj4+ PiAgICAgICAgcnRlX2R3YV90bHZfZmlsbChoMmQsIGlkLCBsZW4sIGgyZCk7DQo+Pj4gICAgICAg IGQyaCA9IHJ0ZV9kd2FfY3RybF9vcChvYmosIGgyaCk7DQo+Pj4gICAgICAgIGZyZWUoaDJkKTsN Cj4+PiAgICAgICAgZnJlZShkMmgpOw0KPj4+IH0NCj4+Pg0KPj4+IHZvaWQNCj4+PiBkd2FfcHJv ZmlsZV9sM2Z3ZF9wb3J0X2hvc3RfZXRoZXJuZXRfd29ya2VyKHJ0ZV9kd2Ffb2JqX3Qgb2JqLCBz dHJ1Y3QgYXBwX2N0eCAqY3R4KQ0KPj4+IHsNCj4+PiAgICAgICAgc3RydWN0IHJ0ZV9kd2FfcHJv ZmlsZV9sM2Z3ZF9kMmhfZXhjZXB0aW9uX3BrdHMgKm1zZzsNCj4+PiAgICAgICAgc3RydWN0IHJ0 ZV9kd2FfdGx2ICp0bHY7DQo+Pj4gICAgICAgIHVpbnQxNl90IGksIHJjLCBuYl90bHZzOw0KPj4+ ICAgICAgICBzdHJ1Y3QgcnRlX21idWYgKm1idWY7DQo+Pj4NCj4+PiAgICAgICAgd2hpbGUgKCFj dHgtPmRvbmUpIHsNCj4+PiAgICAgICAgICAgICAgICByYyA9IHJ0ZV9kd2FfcG9ydF9ob3N0X2V0 aGVybmV0X3J4KG9iaiwgMCwgJnRsdiwgMSk7DQo+Pj4gICAgICAgICAgICAgICAgaWYgKCFyYykN Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4+DQo+Pj4gICAgICAgICAg ICAgICAgLyogU2luY2UgTDNGV0QgcHJvZmlsZSBoYXMgb25seSBvbmUgVXNlciBQbGFuZSBUTFYs IE1lc3NhZ2UgbXVzdCBiZQ0KPj4+ICAgICAgICAgICAgICAgICAqIFJURV9EV0FfU1RBR19QUk9G SUxFX0wzRldEX0QySF9FWENFUFRJT05fUEFDS0VUUyBtZXNzYWdlDQo+Pj4gICAgICAgICAgICAg ICAgICovDQo+Pj4gICAgICAgICAgICAgICAgbXNnID0gKHN0cnVjdCBydGVfZHdhX3Byb2ZpbGVf bDNmd2RfZDJoX2V4Y2VwdGlvbl9wa3RzICopdGx2LT5tc2c7DQo+Pj4gICAgICAgICAgICAgICAg Zm9yIChpID0gMDsgaSA8IG1zZy0+bmJfcGt0czsgaSsrKSB7DQo+Pj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1idWYgPSBtc2ctPnBrdHNbaV07DQo+Pj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIEdvdCBhIGV4Y2VwdGlvbiBwa3QgZnJvbSBEV0EsIGhhbmRsZSBp dCBieSBhZGRpbmcgYXMgbmV3IHJ1bGUgaW4NCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICogbG9va3VwIHRhYmxlIGluIERXQQ0KPj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKi8NCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHdhX3By b2ZpbGVfbDNmd2RfYWRkX3J1bGUob2JqLCBtYnVmKTsNCj4+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogRnJlZSB0aGUgbWJ1ZiB0byBwb29sICovDQo+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJ0ZV9wa3RtYnVmX2ZyZWUobWJ1Zik7DQo+Pj4gICAgICAgICAg ICAgICAgfQ0KPj4+DQo+Pj4gICAgICAgICAgICAgICAgLyogRG9uZSB3aXRoIFRMViBtYnVmIGNv bnRhaW5lciwgZnJlZSBpdCBiYWNrICovDQo+Pj4gICAgICAgICAgICAgICAgcnRlX21lbXBvb2xf b3BzX2VucXVldWVfYnVsayhjdHgtPnRsdl9wb29sLCB0bHYsIDEpOw0KPj4+IH0NCj4+Pg0KPj4+ IGJvb2wNCj4+PiBkd2FfcG9ydF9ob3N0X2V0aGVybmV0X2NvbmZpZyhydGVfZHdhX29ial90IG9i aiwgc3RydWN0IGFwcF9jdHggKmN0eCkNCj4+PiB7DQo+Pj4gICAgICAgIHN0cnVjdCBydGVfZHdh X3RsdiBpbmZvX2gyZCwgKmluZm9fZDJoLCAqaDJkID0gTlVMTCwgKmQyaDsNCj4+PiAgICAgICAg c3RydWN0IHJ0ZV9kd2FfcG9ydF9ob3N0X2V0aGVybmV0X2QyaF9pbmZvICppbmZvOw0KPj4+ICAg ICAgICBpbnQgdGx2X3Bvb2xfZWxlbWVudF9zejsNCj4+PiAgICAgICAgYm9vbCByYyA9IGZhbHNl Ow0KPj4+ICAgICAgICBzaXplX3QgbGVuOw0KPj4+DQo+Pj4gICAgICAgIC8qIEdldCB0aGUgRXRo ZXJuZXQgaG9zdCBwb3J0IGluZm8gKi8NCj4+PiAgICAgICAgaWQgPSBSVEVfRFdBX1RMVl9NS19J RChQT1JUX0hPU1RfRVRIRVJORVQsIEgyRF9JTkZPKTsNCj4+PiAgICAgICAgcnRlX2R3YV90bHZf ZmlsbCgmaW5mb19oMmQsIGlkLCAwLCBOVUxMKTsNCj4+PiAgICAgICAgaW5mb19kMmggPSBydGVf ZHdhX2N0cmxfb3Aob2JqLCAmaW5mb19oMmQpDQo+Pj4NCj4+PiAgICAgICAgaW5mbyA9IHJ0ZV9k d2FfdGx2X2QyaF90b19tc2coaW5mb19kMmgpOw0KPj4+ICAgICAgICBpZiAoaW5mbyA9PSBOVUxM KQ0KPj4+ICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsNCj4+PiAgICAgICAgLyogTmVlZCBtaW4g b25lIFJ4IHF1ZXVlIHRvIFJlY2VpdmUgZXhjZXB0aW9uIHRyYWZmaWMgKi8NCj4+PiAgICAgICAg aWYgKGluZm8tPm5iX3J4X3F1ZXVlcyA9PSAwKQ0KPj4+ICAgICAgICAgICAgICAgIGdvdG8gZmFp bDsNCj4+PiAgICAgICAgLyogRG9uZSB3aXRoIG1lc3NhZ2UgZnJvbSBEV0EuIEZyZWUgYmFjayB0 byBpbXBsZW1lbnRhdGlvbiAqLw0KPj4+ICAgICAgICBmcmVlKG9iaiwgaW5mb19kMmgpOw0KPj4+ DQo+Pj4gICAgICAgIC8qIEFsbG9jYXRlIGV4Y2VwdGlvbiBwYWNrZXQgcG9vbCAqLw0KPj4+ICAg ICAgICBjdHgtPnBrdF9wb29sID0gcnRlX3BrdG1idWZfcG9vbF9jcmVhdGUoImV4Y2VwdGlvbiBw b29sIiwgLyogTmFtZSAqLw0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj dHgtPnBrdF9wb29sX2RlcHRoLCAvKiBOdW1iZXIgb2YgZWxlbWVudHMqLw0KPj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA1MTIsIC8qIENhY2hlIHNpemUqLw0KPj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSVEVfTUJVRl9ERUZBVUxUX0JVRl9TSVpFLA0KPj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnNvY2tldF9pZCkpOw0KPj4+DQo+Pj4NCj4+PiAg ICAgICAgdGx2X3Bvb2xfZWxlbWVudF9zeiA9IERXQV9FWENFUFRJT05fUEFDS0VUU19QS1RfQlVS U1RfTUFYX1NaICogc2l6ZW9mKHJ0ZV9tYnVmICopOw0KPj4+ICAgICAgICB0bHZfcG9vbF9lbGVt ZW50X3N6ICArPSBzaXplb2YocnRlX2R3YV9wcm9maWxlX2wzZndkX2QyaF9leGNlcHRpb25fcGt0 cyk7DQo+Pj4NCj4+PiAgICAgICAgLyogQWxsb2NhdGUgVExWIHBvb2wgZm9yIFJURV9EV0FfU1RM Vl9QUk9GSUxFX0wzRldEX0QySF9FWENFUFRJT05fUEFDS0VUU19QQUNLRVRTIHRhZyAqLw0KPj4+ ICAgICAgICBjdHgtPnRsdl9wb29sID0gcnRlX21lbXBvb2xfY3JlYXRlKCJUTFYgcG9vbCIsIC8q IG1lbXBvb2wgbmFtZSAqLw0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj dHgtPnRsdl9wb29sX2RlcHRoLCAvKiBOdW1iZXIgb2YgZWxlbWVudHMqLw0KPj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0bHZfcG9vbF9lbGVtZW50X3N6LCAvKiBFbGVtZW50 IHNpemUqLw0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MTIsIC8qIGNh Y2hlIHNpemUqLw0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxM LCBOVUxMLCBOVUxMIC8qIE9iaiBjb25zdHJ1Y3RvciAqLywgTlVMTCwNCj4+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5zb2NrZXRfaWQsIDAgLyogZmxhZ3MgKik7DQo+ Pj4NCj4+Pg0KPj4+ICAgICAgICAvKiBDb25maWd1cmUgRXRoZXJuZXQgaG9zdCBwb3J0ICovDQo+ Pj4gICAgICAgIGlkID0gUlRFX0RXQV9UTFZfTUtfSUQoUE9SVF9IT1NUX0VUSEVSTkVULCBIMkRf Q09ORklHKTsNCj4+PiAgICAgICAgbGVuID0gc2l6ZW9mKHN0cnVjdCBydGVfZHdhX3BvcnRfaG9z dF9ldGhlcm5ldF9jb25maWcpOw0KPj4+ICAgICAgICBoMmQgPSBtYWxsb2MoUlRFX0RXQV9UTFZf SERSX1NaICsgbGVuKTsNCj4+Pg0KPj4+ICAgICAgICBjZmcgPSBoMmQtPm1zZzsNCj4+PiAgICAg ICAgLyogVXBkYXRlIHRoZSBFdGhlcm5ldCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgKi8NCj4+ PiAgICAgICAgY2ZnLT5uYl9yeF9xdWV1ZXMgPSAxOw0KPj4+ICAgICAgICBjZmctPm5iX3R4X3F1 ZXVlcyA9IDA7DQo+Pj4gICAgICAgIGNmZy0+bWF4X2J1cnN0ID0gRFdBX0VYQ0VQVElPTl9QQUNL RVRTX1BLVF9CVVJTVF9NQVhfU1o7DQo+Pj4gICAgICAgIGNmZy0+cGt0X3Bvb2wgPSBjdHgtPnBr dF9wb29sOw0KPj4+ICAgICAgICBjZmctPnRsdl9wb29sID0gY3R4LT50bHZfcG9vbDsNCj4+PiAg ICAgICAgcnRlX2R3YV90bHZfZmlsbChoMmQsIGlkLCBsZW4sIGgyZCk7DQo+Pj4gICAgICAgIGQy aCA9IHJ0ZV9kd2FfY3RybF9vcChvYmosIGgyZCk7DQo+Pj4gICAgICAgIGlmIChkMmggPT0gTlVM TCkpDQo+Pj4gICAgICAgICAgICAgICAgZ290byBmYWlsOw0KPj4+DQo+Pj4gICAgICAgIGZyZWUo aDJkKTsNCj4+Pg0KPj4+ICAgICAgICAvKiBDb25maWd1cmUgUnggcXVldWUgMCByZWNlaXZlIGV4 cGVjdGF0aW9uIHRyYWZmaWMgKi8NCj4+PiAgICAgICAgaWQgPSBSVEVfRFdBX1RMVl9NS19JRChQ T1JUX0hPU1RfRVRIRVJORVQsIEgyRF9RVUVVRV9DT05GSUcpOw0KPj4+ICAgICAgICBsZW4gPSBz aXplb2Yoc3RydWN0IHJ0ZV9kd2FfcG9ydF9ob3N0X2V0aGVybmV0X3F1ZXVlX2NvbmZpZyk7DQo+ Pj4gICAgICAgIGgyZCA9IG1hbGxvYyhSVEVfRFdBX1RMVl9IRFJfU1ogKyBsZW4pOw0KPj4+DQo+ Pj4gICAgICAgIGNmZyA9IGgyZC0+bXNnOw0KPj4+ICAgICAgICBjZmctPmlkID0gMDsgLyogMHRo IFF1ZXVlICovDQo+Pj4gICAgICAgIGNmZy0+ZW5hYmxlPSAxOw0KPj4+ICAgICAgICBjZmctPmlz X3R4ID0gMDsgLyogUnggcXVldWUgKi8NCj4+PiAgICAgICAgY2ZnLT5kZXB0aCA9IGN0eC0+cnhf cXVldWVfZGVwdGg7DQo+Pj4gICAgICAgIHJ0ZV9kd2FfdGx2X2ZpbGwoaDJkLCBpZCwgbGVuLCBo MmQpOw0KPj4+ICAgICAgICBkMmggPSBydGVfZHdhX2N0cmxfb3Aob2JqLCBoMmQpOw0KPj4+ICAg ICAgICBpZiAoZDJoID09IE5VTEwpKQ0KPj4+ICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsNCj4+ Pg0KPj4+ICAgICAgICBmcmVlKGgyZCk7DQo+Pj4NCj4+PiAgICAgICAgcmV0dXJuIHRydWU7DQo+ Pj4gZmFpbDoNCj4+PiAgICAgICAgaWYgKGgyZCkNCj4+PiAgICAgICAgICAgICAgICBmcmVlKGgy ZCk7DQo+Pj4gICAgICAgIHJldHVybiByYzsNCj4+PiB9DQo+Pj4NCj4+PiBib29sDQo+Pj4gZHdh X3Byb2ZpbGVfbDNmd2RfY29uZmlnKHJ0ZV9kd2Ffb2JqX3Qgb2JqLCBzdHJ1Y3QgYXBwX2N0eCAq Y3R4KQ0KPj4+IHsNCj4+PiAgICAgICAgc3RydWN0IHJ0ZV9kd2FfdGx2IGluZm9faDJkLCAqaW5m b19kMmggPSBOVUxMLCAqaDJkLCAqZDJoID0gTlVMTDsNCj4+PiAgICAgICAgc3RydWN0IHJ0ZV9k d2FfcG9ydF9kd2FfZXRoZXJuZXRfZDJoX2luZm8gKmluZm87DQo+Pj4gICAgICAgIHN0cnVjdCBy dGVfZHdhX3Byb2ZpbGVfbDNmd2RfaDJkX2NvbmZpZyAqY2ZnOw0KPj4+ICAgICAgICBib29sIHJj ID0gZmFsc2U7DQo+Pj4gICAgICAgIHVpbnQzMl90IGlkOw0KPj4+ICAgICAgICBzaXplX3QgbGVu Ow0KPj4+DQo+Pj4gICAgICAgIC8qIEdldCBEV0EgRXRoZXJuZXQgcG9ydCBpbmZvICovDQo+Pj4g ICAgICAgIGlkID0gUlRFX0RXQV9UTFZfTUtfSUQoUE9SVF9EV0FfRVRIRVJORVQsIEgyRF9JTkZP KTsNCj4+PiAgICAgICAgcnRlX2R3YV90bHZfZmlsbCgmaW5mb19oMmQsIGlkLCAwLCBOVUxMKTsN Cj4+PiAgICAgICAgaW5mb19kMmggPSBydGVfZHdhX2N0cmxfb3Aob2JqLCAmaW5mb19oMmQpOw0K Pj4+DQo+Pj4gICAgICAgIGluZm8gPSBydGVfZHdhX3Rsdl9kMmhfdG9fbXNnKGluZm9fZDJoKTsN Cj4+PiAgICAgICAgaWYgKGluZm8gPT0gTlVMTCkNCj4+PiAgICAgICAgICAgICAgICBnb3RvIGZh aWw7DQo+Pj4NCj4+PiAgICAgICAgLyogTm90IGZvdW5kIGFueSBEV0EgZXRoZXJuZXQgcG9ydHMg Ki8NCj4+PiAgICAgICAgaWYgKGluZm8tPm5iX3BvcnRzID09IDApDQo+Pj4gICAgICAgICAgICAg ICAgZ290byBmYWlsOw0KPj4+DQo+Pj4gICAgICAgIC8qIENvbmZpZ3VyZSBMM0ZXRCBwcm9maWxl ICovDQo+Pj4gICAgICAgIGlkID0gUlRFX0RXQV9UTFZfTUtfSUQoUFJPRklMRV9MM0ZXRCwgSDJE X0NPTkZJRyk7DQo+Pj4gICAgICAgIGxlbiA9IHNpemVvZihzdHJ1Y3QgcnRlX2R3YV9wcm9maWxl X2wzZndkX2gyZF9jb25maWcpICsgKHNpemVvZih1aW50MTZfdCkgKiBpbmZvLT5uYl9wb3J0cyk7 DQo+Pj4gICAgICAgIGgyZCA9IG1hbGxvYyhSVEVfRFdBX1RMVl9IRFJfU1ogKyBsZW4pOw0KPj4+ DQo+Pj4gICAgICAgIGNmZyA9IGgyZC0+bXNnOw0KPj4+ICAgICAgICAvKiBVcGRhdGUgdGhlIEwz RldEIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyAqLw0KPj4+ICAgICAgICBjZmctPm1vZGUgPSBj dHgtPm1vZGU7DQo+Pj4gICAgICAgIC8qIEF0dGFjaCBhbGwgRFdBIEV0aGVybmV0IHBvcnRzIG9u dG8gTDNGV0QgcHJvZmlsZSAqLw0KPj4+ICAgICAgICBjZmctPm5iX2V0aF9wb3J0cyA9IGluZm8t Pm5iX3BvcnRzOw0KPj4+ICAgICAgICBtZW1jcHkoY2ZnLT5ldGhfcG9ydHMsIGluZm8tPmF2YWls X3BvcnRzLCBzaXplb2YodWludDE2X3QpICogaW5mby0+bmJfcG9ydHMpOw0KPj4+DQo+Pj4gICAg ICAgIHJ0ZV9kd2FfdGx2X2ZpbGwoaDJkLCBpZCwgbGVuLCBoMmQpOw0KPj4+ICAgICAgICBkMmgg PSBydGVfZHdhX2N0cmxfb3Aob2JqLCBoMmQpOw0KPj4+ICAgICAgICBmcmVlKGgyZCk7DQo+Pj4N Cj4+PiAgICAgICAgLyogQWxsIGdvb2QgKi8NCj4+PiAgICAgICAgcmMgPSB0cnVlOw0KPj4+IGZh aWw6DQo+Pj4gICAgICAgIGlmIChpbmZvX2QyaCkNCj4+PiAgICAgICAgICAgICAgICBmcmVlKG9i aiwgaW5mb19kMmgpOw0KPj4+ICAgICAgICBpZiAoZDJoKQ0KPj4+ICAgICAgICAgICAgICAgIGZy ZWUob2JqLCBkMmgpOw0KPj4+DQo+Pj4gICAgICAgIHJldHVybiByYzsNCj4+PiB9DQo+Pj4NCj4+ PiBib29sDQo+Pj4gZHdhX3Byb2ZpbGVfbDNmd2RfaGFzX2NhcGEocnRlX2R3YV9vYmpfdCBvYmos IHN0cnVjdCBhcHBfY3R4ICpjdHgpDQo+Pj4gew0KPj4+ICAgICAgICBzdHJ1Y3QgcnRlX2R3YV9w cm9maWxlX2wzZndkX2QyaF9pbmZvICppbmZvOw0KPj4+ICAgICAgICBzdHJ1Y3QgcnRlX2R3YV90 bHYgaDJkLCAqZDJoOw0KPj4+ICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7DQo+Pj4gICAgICAg IHVpbnQzMl90IGlkOw0KPj4+DQo+Pj4gICAgICAgIC8qIEdldCBMM0ZXRCBwcm9maWxlIGluZm8g Ki8NCj4+PiAgICAgICAgaWQgPSBSVEVfRFdBX1RMVl9NS19JRChQUk9GSUxFX0wzRldELCBIMkRf SU5GTyk7DQo+Pj4gICAgICAgIHJ0ZV9kd2FfdGx2X2ZpbGwoJmgyZCwgaWQsIDAsIE5VTEwpOw0K Pj4+ICAgICAgICBkMmggPSBydGVfZHdhX2N0cmxfb3Aob2JqLCAmaDJkKTsNCj4+Pg0KPj4+ICAg ICAgICBpbmZvID0gcnRlX2R3YV90bHZfZDJoX3RvX21zZyhkMmgpOw0KPj4+ICAgICAgICAvKiBS ZXF1ZXN0IGZhaWxlZCAqLw0KPj4+ICAgICAgICBpZiAoaW5mbyA9PSBOVUxMKQ0KPj4+ICAgICAg ICAgICAgICAgIGdvdG8gZmFpbDsNCj4+PiAgICAgICAgLyogUmVxdWlyZWQgbG9va3VwIG1vZGVz IGlzIG5vdCBzdXBwb3J0ZWQgKi8NCj4+PiAgICAgICAgaWYgKCEoaW5mby0+bW9kZXNfc3VwcG9y dGVkICYgY3R4LT5tb2RlKSkNCj4+PiAgICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+Pj4NCj4+ PiAgICAgICAgLyogQ2hlY2sgcHJvZmlsZSBzdXBwb3J0cyBIT1NUX0VUSEVSTkVUIHBvcnQgYXMg dGhpcyBhcHBsaWNhdGlvbg0KPj4+ICAgICAgICAgICAgKiBzdXBwb3J0cyBvbmx5IGhvc3QgcG9y dCBhcyBFdGhlcm5ldA0KPj4+ICAgICAgICAgICAgKi8NCj4+PiAgICAgICAgZm9yIChpID0gMDsg aSA8IGluZm8tPm5iX2hvc3RfcG9ydHM7IGkrKykgew0KPj4+ICAgICAgICAgICAgICAgIGlmIChp bmZvLT5ob3N0X3BvcnRzW2ldID09IFJURV9EV0FfVEFHX1BPUlRfSE9TVF9FVEhFUk5FVCk7IHsN Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsNCj4+PiAgICAgICAgICAg ICAgICB9DQo+Pj4gICAgICAgIH0NCj4+Pg0KPj4+ICAgICAgICAvKiBEb25lIHdpdGggcmVzcG9u c2UsIEZyZWUgdGhlIGQyaCBtZW1vcnkgYWxsb2NhdGVkIGJ5IGltcGxlbWVudGF0aW9uICovDQo+ Pj4gICAgICAgIGZyZWUob2JqLCBkMmgpOw0KPj4+IGZhaWw6DQo+Pj4gICAgICAgIHJldHVybiBm b3VuZDsNCj4+PiB9DQo+Pj4NCj4+Pg0KPj4+IGJvb2wNCj4+PiBkd2FfaGFzX3Byb2ZpbGUoZW51 bSBydGVfZHdhX3RhZ19wcm9maWxlIHBmKQ0KPj4+IHsNCj4+PiAgICAgICAgZW51bSBydGVfZHdh X3Rsdl9wcm9maWxlICpwZnMgPSBOVUxMOw0KPj4+ICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7 DQo+Pj4gICAgICAgIGludCBuYl9wZnM7DQo+Pj4NCj4+PiAgICAgICAgLyogR2V0IHRoZSBudW1i ZXIgb2YgcHJvZmlsZXMgb24gdGhlIERXQSBkZXZpY2UgKi8NCj4+PiAgICAgICAgbmJfcGZzID0g cnRlX2R3YV9kZXZfZGlzY19wcm9maWxlcygwLCBOVUxMKTsNCj4+PiAgICAgICAgcGZzID0gbWFs bG9jKHNpemVvZihlbnVtIHJ0ZV9kd2FfdGFnX3Byb2ZpbGUpICAqIG5iX3Bmcyk7DQo+Pj4gICAg ICAgIC8qIEZldGNoIGFsbCB0aGUgcHJvZmlsZXMgKi8NCj4+PiAgICAgICAgbmJfcGZzID0gcnRl X2R3YV9kZXZfZGlzY19wcm9maWxlcygwLCBwZnMpOw0KPj4+DQo+Pj4gICAgICAgIC8qIENoZWNr IHRoZSBsaXN0IGhhcyByZXF1ZXN0ZWQgcHJvZmlsZSAqLw0KPj4+ICAgICAgICBmb3IgKGkgPSAw OyBpIDwgbmJfcGZzOyBpKyspIHsNCj4+PiAgICAgICAgICAgICAgICBpZiAocGZzW2ldID09IHBm KTsNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsNCj4+PiAgICAgICAg fQ0KPj4+ICAgICAgICBmcmVlKHBmcyk7DQo+Pj4NCj4+Pg0KPj4+ICAgICAgICByZXR1cm4gZm91 bmQ7DQo+Pj4gfQ0KPj4+DQo+Pj4NCj4+PiAjaW5jbHVkZSA8cnRlX2R3YS5oPg0KPj4+DQo+Pj4g I2RlZmluZSBEV0FfRVhDRVBUSU9OX1BBQ0tFVFNfUEtUX0JVUlNUX01BWF9TWiAgICAgICAgICAg ICAgICAzMg0KPj4+DQo+Pj4gc3RydWN0IGFwcF9jdHggew0KPj4+ICAgICAgICBib29sIGRvbmU7 DQo+Pj4gICAgICAgIHN0cnVjdCBydGVfbWVtcG9vbCAqcGt0X3Bvb2w7DQo+Pj4gICAgICAgIHN0 cnVjdCBydGVfbWVtcG9vbCAqdGx2X3Bvb2w7DQo+Pj4gICAgICAgIGVudW0gcnRlX2R3YV9wcm9m aWxlX2wzZndkX2xvb2t1cF9tb2RlIG1vZGU7DQo+Pj4gICAgICAgIGludCBzb2NrZXRfaWQ7DQo+ Pj4gICAgICAgIGludCBwa3RfcG9vbF9kZXB0aDsNCj4+PiAgICAgICAgaW50IHRsdl9wb29sX2Rl cHRoOw0KPj4+ICAgICAgICBpbnQgcnhfcXVldWVfZGVwdGg7DQo+Pj4gfSBfX3J0ZV9jYWNoZV9h bGlnbmVkOw0KPj4+DQo+Pj4gaW50DQo+Pj4gbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ Pj4gew0KPj4+ICAgICAgICBydGVfZHdhX29ial90IG9iaiA9IE5VTEw7DQo+Pj4gICAgICAgIHN0 cnVjdCBhcHBfY3R4IGN0eDsNCj4+PiAgICAgICAgaW50IHJjOw0KPj4+DQo+Pj4gICAgICAgIC8q IEluaXRpYWxpemUgRUFMICovDQo+Pj4gICAgICAgIHJjPSBydGVfZWFsX2luaXQoYXJnYywgYXJn dik7DQo+Pj4gICAgICAgICAgIGlmIChyYyA8IDApDQo+Pj4gICAgICAgICAgICAgICAgIHJ0ZV9l eGl0KEVYSVRfRkFJTFVSRSwgIkludmFsaWQgRUFMIGFyZ3VtZW50c1xuIik7DQo+Pj4gICAgICAg ICAgIGFyZ2MgLT0gcmV0Ow0KPj4+ICAgICAgICAgICBhcmd2ICs9IHJldDsNCj4+Pg0KPj4+DQo+ Pj4gICAgICAgIG1lbXNldCgmY3R4LCAwLCBzaXplb2YoY3R4KSk7DQo+Pj4gICAgICAgIC8qIFNl dCBhcHBsaWNhdGlvbiBkZWZhdWx0IHZhbHVlcyAqLw0KPj4+ICAgICAgICBjdHgtPm1vZGUgPSBS VEVfRFdBX1BST0ZJTEVfTDNGV0RfTU9ERV9MUE07DQo+Pj4gICAgICAgIGN0eC0+c29ja2V0X2lk ID0gU09DS0VUX0lEX0FOWTsNCj4+PiAgICAgICAgY3R4LT5wa3RfcG9vbF9kZXB0aCA9IDEwMDAw Ow0KPj4+ICAgICAgICBjdHgtPnRsdl9wb29sX2RlcHRoID0gMTAwMDA7DQo+Pj4gICAgICAgIGN0 eC0+cnhfcXVldWVfZGVwdGggPSAxMDAwMDsNCj4+Pg0KPj4+ICAgICAgICAvKiBTdGVwIDE6IENo ZWNrIGFueSBEV0EgZGV2aWNlcyBwcmVzZW50ICAqLw0KPj4+ICAgICAgICByYyA9IHJ0ZV9kd2Ff ZGV2X2NvdW50KCk7DQo+Pj4gICAgICAgIGlmIChyYyA8PSAwKQ0KPj4+ICAgICAgICAgICAgICAg IHJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgIkZhaWxlZCB0byBmaW5kIERXQSBkZXZpY2VzXG4iKTsN Cj4+Pg0KPj4+ICAgICAgICAvKiBTdGVwIDI6IENoZWNrIERXQSBkZXZpY2UgaGFzIEwzRldEIHBy b2ZpbGUgb3Igbm90ICovDQo+Pj4gICAgICAgIGlmICghZHdhX2hhc19wcm9maWxlKFJURV9EV0Ff VEFHX1BST0ZJTEVfTDNGV0QpKQ0KPj4+ICAgICAgICAgICAgICAgIHJ0ZV9leGl0KEVYSVRfRkFJ TFVSRSwgIkwzRldEIHByb2ZpbGUgbm90IGZvdW5kXG4iKTsNCj4+Pg0KPj4+ICAgICAgICAvKg0K Pj4+ICAgICAgICAgKiBTdGVwIDM6IE5vdyB0aGF0LCB3b3JrbG9hZCBhY2NlbGVyYXRvciBoYXMg TDNGV0QgcHJvZmlsZSwNCj4+PiAgICAgICAgICogb2ZmbG9hZCBMM0ZXRCB3b3JrbG9hZCB0byBh Y2NlbGVyYXRvciBieSBhdHRhY2hpbmcgdGhlIHByb2ZpbGUNCj4+PiAgICAgICAgICogdG8gYWNj ZWxlcmF0b3IuDQo+Pj4gICAgICAgICAqLw0KPj4+ICAgICAgICBlbnVtIHJ0ZV9kd2FfdGx2X3By b2ZpbGUgcHJvZmlsZVtdID0ge1JURV9EV0FfVEFHX1BST0ZJTEVfTDNGV0R9Ow0KPj4+ICAgICAg ICBvYmogPSBydGVfZHdhX2Rldl9hdHRhY2goMCwgIm15X2N1c3RvbV9hY2NlbGVyYXRvcl9kZXZp Y2UiLCBwcm9maWxlLCAxKS47DQo+Pj4NCj4+PiAgICAgICAgLyogU3RlcCA0OiBDaGVjayBBdHRh Y2hlZCBMM0ZXRCBwcm9maWxlIGhhcyByZXF1aXJlZCBjYXBhYmlsaXR5IHRvIHByb2NlZWQgKi8N Cj4+PiAgICAgICAgaWYgKCFkd2FfcHJvZmlsZV9sM2Z3ZF9oYXNfY2FwYShvYmosICZjdHgpKQ0K Pj4+ICAgICAgICAgICAgICAgIHJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgIkwzRldEIHByb2ZpbGUg ZG9lcyBub3QgaGF2ZSBlbm91Z2ggY2FwYWJpbGl0eSBcbiIpOw0KPj4+DQo+Pj4gICAgICAgIC8q IFN0ZXAgNTogQ29uZmlndXJlIGwzZndkIHByb2ZpbGUgKi8NCj4+PiAgICAgICAgaWYgKCFkd2Ff cHJvZmlsZV9sM2Z3ZF9jb25maWcob2JqLCAmY3R4KSkNCj4+PiAgICAgICAgICAgICAgICBydGVf ZXhpdChFWElUX0ZBSUxVUkUsICJMM0ZXRCBwcm9maWxlIGNvbmZpZ3VyZSBmYWlsZWQgXG4iKTsN Cj4+Pg0KPj4+ICAgICAgICAvKiBTdGVwIDY6IENvbmZpZ3VyZSBldGhlcm5ldCBob3N0IHBvcnQg dG8gcmVjZWl2ZSBleGNlcHRpb24gcGFja2V0cyAqLw0KPj4+ICAgICAgICBpZiAoIWR3YV9wb3J0 X2hvc3RfZXRoZXJuZXRfY29uZmlnKG9iaiwgJmN0eCkpDQo+Pj4gICAgICAgICAgICAgICAgcnRl X2V4aXQoRVhJVF9GQUlMVVJFLCAiTDNGV0QgcHJvZmlsZSBjb25maWd1cmUgZmFpbGVkIFxuIik7 DQo+Pj4NCj4+PiAgICAgICAgLyogU3RlcCA3IDogTW92ZSBEV0EgcHJvZmlsZXMgdG8gc3RhcnQg c3RhdGUgKi8NCj4+PiAgICAgICAgcnRlX2R3YV9zdGFydChvYmopOw0KPj4+DQo+Pj4gICAgICAg IC8qIFN0ZXAgODogSGFuZGxlIGV4cGVjdGF0aW9uIHBhY2tldHMgYW5kIGFkZCBsb29rdXAgcnVs ZXMgZm9yIGl0ICovDQo+Pj4gICAgICAgIGR3YV9wcm9maWxlX2wzZndkX3BvcnRfaG9zdF9ldGhl cm5ldF93b3JrZXIob2JqLCAmY3R4KTsNCj4+Pg0KPj4+ICAgICAgICAvKiBTdGVwIDk6IENsZWFu IHVwICovDQo+Pj4gICAgICAgIHJ0ZV9kd2Ffc3RvcChvYmopOw0KPj4+ICAgICAgICBydGVfZHdh X2Rldl9kZXRhY2goMCwgb2JqKTsNCj4+PiAgICAgICAgcnRlX2R3YV9kZXZfY2xvc2UoMCk7DQo+ Pj4NCj4+PiAgICAgICAgcmV0dXJuIDA7DQo+Pj4gfQ0KPj4+DQo+Pj4NCj4+PiBKZXJpbiBKYWNv YiAoMSk6DQo+Pj4gICAgIGR3YTogaW50cm9kdWNlIGRhdGFwbGFuZSB3b3JrbG9hZCBhY2NlbGVy YXRvciBzdWJzeXN0ZW0NCj4+Pg0KPj4+ICAgIGRvYy9hcGkvZG94eS1hcGktaW5kZXgubWQgICAg ICAgICAgICB8ICAxMyArDQo+Pj4gICAgZG9jL2FwaS9kb3h5LWFwaS5jb25mLmluICAgICAgICAg ICAgIHwgICAxICsNCj4+PiAgICBsaWIvZHdhL2R3YS5jICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDcgKw0KPj4+ICAgIGxpYi9kd2EvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8ICAx NyArKw0KPj4+ICAgIGxpYi9kd2EvcnRlX2R3YS5oICAgICAgICAgICAgICAgICAgICB8IDE4NCAr KysrKysrKysrKysrDQo+Pj4gICAgbGliL2R3YS9ydGVfZHdhX2NvcmUuaCAgICAgICAgICAgICAg IHwgMjY0ICsrKysrKysrKysrKysrKysrKysNCj4+PiAgICBsaWIvZHdhL3J0ZV9kd2FfZGV2Lmgg ICAgICAgICAgICAgICAgfCAxNTQgKysrKysrKysrKysNCj4+PiAgICBsaWIvZHdhL3J0ZV9kd2Ff cG9ydF9kd2FfZXRoZXJuZXQuaCAgfCAgNjggKysrKysNCj4+PiAgICBsaWIvZHdhL3J0ZV9kd2Ff cG9ydF9ob3N0X2V0aGVybmV0LmggfCAxNzggKysrKysrKysrKysrKw0KPj4+ICAgIGxpYi9kd2Ev cnRlX2R3YV9wcm9maWxlX2FkbWluLmggICAgICB8ICA4NSArKysrKysNCj4+PiAgICBsaWIvZHdh L3J0ZV9kd2FfcHJvZmlsZV9sM2Z3ZC5oICAgICAgfCAzNzggKysrKysrKysrKysrKysrKysrKysr KysrKysrDQo+Pj4gICAgbGliL2R3YS92ZXJzaW9uLm1hcCAgICAgICAgICAgICAgICAgIHwgICAz ICsNCj4+PiAgICBsaWIvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0K Pj4+ICAgIDEzIGZpbGVzIGNoYW5nZWQsIDEzNTMgaW5zZXJ0aW9ucygrKQ0KPj4+ICAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWIvZHdhL2R3YS5jDQo+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxp Yi9kd2EvbWVzb24uYnVpbGQNCj4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2R3YS9ydGVf ZHdhLmgNCj4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2R3YS9ydGVfZHdhX2NvcmUuaA0K Pj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvZHdhL3J0ZV9kd2FfZGV2LmgNCj4+PiAgICBj cmVhdGUgbW9kZSAxMDA2NDQgbGliL2R3YS9ydGVfZHdhX3BvcnRfZHdhX2V0aGVybmV0LmgNCj4+ PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2R3YS9ydGVfZHdhX3BvcnRfaG9zdF9ldGhlcm5l dC5oDQo+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9kd2EvcnRlX2R3YV9wcm9maWxlX2Fk bWluLmgNCj4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2R3YS9ydGVfZHdhX3Byb2ZpbGVf bDNmd2QuaA0KPj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvZHdhL3ZlcnNpb24ubWFwDQo+ Pj4NCg0K