From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web11.7019.1680033649664854876 for ; Tue, 28 Mar 2023 13:00:50 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=allGLfCY; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: andrei.warkentin@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1680033649; x=1711569649; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=XR6/k4m2LJqBbzxCDtADQqUZQ1mVq+MebtVXoz6wdW0=; b=allGLfCYJ22jmYqFPO77Y+Jgd3nfL9UYz3NghF/MxqJl3wD/C296FyJ2 x538jdGI88WmEbNAZPCxsyFuZGMogjq3DCAWJ0oxWjQSfvZWIkjHsxost IqAgQjOZgaCkIvVpH4pwBxSzlqdb98lrsLyJVkyMWm/6sYZ00/AE4oE8A 9cc0dfxZj5YcVCsRYAiQvxZQwpGgjSxMdyZxge8ZWDnSNkLh/KRE+/q7s A1cfMPZfZ4lplNrGEW7cFwrjg8aUwEKfT+B4jlrWNlmH+0qEWGy/GtFNC acLLSMnUhp6fk/pU7gkdR/qVJVuwubqKAlOni6iuMSl9MW0FWy73uE9k/ Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="343088127" X-IronPort-AV: E=Sophos;i="5.98,297,1673942400"; d="scan'208";a="343088127" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2023 13:00:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="930038506" X-IronPort-AV: E=Sophos;i="5.98,297,1673942400"; d="scan'208";a="930038506" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga006.fm.intel.com with ESMTP; 28 Mar 2023 13:00:32 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Mar 2023 13:00:31 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Tue, 28 Mar 2023 13:00:31 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.176) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Tue, 28 Mar 2023 13:00:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Hi/yZAwrBXssTkJ+9MEkoLixc/XaIBA+4mTyLavu2cxn9jXkaj3OiU/fYF9sHO/pFj/qqkGk1Kz8ZXpwakgF8YQoPZ0pq5isPXmf6h1M/xfQFw/TmTcNv6mFpNJ7gwBvX6MEQ3mvgUjNwgIBlUM9cfNx1k9n5u28q4MdgOcOjhTJNZ1VhokYcBJpOR0wOIpdqk7DhLSE0yR+XTVjawG0BvB2oQDvX8LTsZY1LxNbksBejk+AFgUsM5z3wU7AlCl0c6kxRWq+rJd99ODzTyaIs1YbW0tZZL4t0fXK+S4tqmH9TqGMRKNiuydRvaOFthn7sG2vSq4F5p+NQy2RyrX4ZA== 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=XR6/k4m2LJqBbzxCDtADQqUZQ1mVq+MebtVXoz6wdW0=; b=fEjU/flZNOTcXeUk52igE3advpCGGRt70Tx/jl31TlgRcFW75y3weebEI3viyTtlHurjwFk3KNKuMtDqF0VpQmZBPBf5J17Lo2nEOufSJTkIMsXFA9Pd0pQBns9+U53wk32psWxrqiDN38/QldchJ8QnJhHOgD5EX+klmj9GVL9koDN4E3VPTdmlvnb6IaAhhrBJ57CbyiXYvl8Khj4Sz/l4K55gID5d/91KU+u7IDHxLNPyd6Jjei7s3sEEnloRNSBpnsQL8ncW+1YFj39s8bTo2OlwAYvBhkykHC5oyq9bgOJedmkmNMnis5ha+XQcwV9+ePOBu0k7fTR5035YMw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH8PR11MB6856.namprd11.prod.outlook.com (2603:10b6:510:22b::7) by DM4PR11MB6215.namprd11.prod.outlook.com (2603:10b6:8:a9::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.30; Tue, 28 Mar 2023 20:00:29 +0000 Received: from PH8PR11MB6856.namprd11.prod.outlook.com ([fe80::f480:22ed:c915:13f1]) by PH8PR11MB6856.namprd11.prod.outlook.com ([fe80::f480:22ed:c915:13f1%4]) with mapi id 15.20.6222.033; Tue, 28 Mar 2023 20:00:28 +0000 From: "Andrei Warkentin" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "Gao, Liming" , "Liu, Zhiguang" Subject: Re: [PATCH v5 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V Thread-Topic: [PATCH v5 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V Thread-Index: AQHZU3KAVGzPlaHoyEG7qZm8cJJIT67+cWFggAAClwCAAArmAIAQbaEAgAHLPOA= Date: Tue, 28 Mar 2023 20:00:28 +0000 Message-ID: References: <20230310170456.5230-1-andrei.warkentin@intel.com> <20230310170456.5230-3-andrei.warkentin@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH8PR11MB6856:EE_|DM4PR11MB6215:EE_ x-ms-office365-filtering-correlation-id: f524b13f-c368-44e9-0ce6-08db2fc71437 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: RAXIXlG9VnoGP08CYmvnL6Z9O4dJQqA/yTTzuIQiBA9MsZrSow17t4x0gvhPWD0/mqhtqLyK0N633KDwQT6rHiJ5wlZOiJY3vEthWBE08XKEXXRQdPup/LL1hBYSeD3sVAYhq35Kc5XFDxF63Yoezal065wha9q1TJPgggOuPk8bsFAtfYwqvK6LhiYdvAFkYWLn2SAVvOzkOhY22fiJcb+oxKS6tA8sv25eYGVDi/f72Ms8JMC9kJ/s2pi6pMWTjrSsTxanxPyy2eiNzPTAlkv8Rey1hN+3S47JU62H/0YWyiWWz76HYCItZ2TiK1HHF6G7W8M8SUfoePyJ6ZwNSi45zkkjpzt/SDarH6WxwY+4dhcrfywz4SIqm+Js13md3qmHJJJDQNjJwPEmXwd960vP4gM+2l41ZPnE5GMUEEPrMAYKLdcLFt/YFX1JnxlK8YnQX1if3Y193uG256nFDRnmw8nM7pl+9YL1SOzYQMVHFXRItn+pOSCbyFKwfz04/qB0esqk8TIcbsq/yeZXalcF8SyiwUl7CYSE9JmSb4Lak5YyivApXvKwHXUmo9Yfb8ds+v0bFsPaRxhCtppbFbKw7FibMDwWO83GHAJSisCU4wnZ23ab+mwtnJUb87BM x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR11MB6856.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(376002)(366004)(346002)(396003)(136003)(39860400002)(451199021)(30864003)(122000001)(7696005)(52536014)(71200400001)(5660300002)(186003)(53546011)(6506007)(9686003)(55016003)(2906002)(26005)(86362001)(107886003)(83380400001)(33656002)(82960400001)(38070700005)(8936002)(66946007)(64756008)(4326008)(54906003)(66446008)(66476007)(8676002)(66556008)(41300700001)(76116006)(478600001)(38100700002)(110136005)(316002)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OWVGLy92dDdWTnVtNjY2ck93aGkxNEtpTVpYN1RLRmpsdGM5ZklnbVM0UWlR?= =?utf-8?B?NDVrWnZ4Q09DZ1VQNjc3Mi9NR3FNdHhBcG1mWmQ1K2FRMStUQ0oxVy96bUtS?= =?utf-8?B?TmJIbzdIZGZ4L2ZRRENEWkZBeVFDdzlMK3F0aVVXRGdJUHF5SEN3OU1QTVFU?= =?utf-8?B?QlJ6NWpQaXhFamFFWmZ5eFFVcjlKTnJlZ1NsaTF4aG5FUE52RmVzZWkxZ2FP?= =?utf-8?B?Y1drbysyYlpHa0p3OFNxTUl6TzBTSTlSVE9FcE5Mb3FlUmZaRnpDc3d0MzBk?= =?utf-8?B?SWVpTXpSaTI1cUc0VXFvNlFmREprZkJubEVwcnZac21IemhxZytkeHpOaU9o?= =?utf-8?B?SHJiK0pZQVN4K2QxTEUrM3ZUSnJLZlhYaUY2MmRKeEdRc3lKazBvcVIrK2JR?= =?utf-8?B?VVU1Ni9aVXFYUGNCa2lscU9nNDBHWGRLTUl5WkpMaUZBWXNJdko2M1MzeTNU?= =?utf-8?B?dnJqbGNDME13b3lSY2lIa0RZZE1pTlNLQTRXQS9FZXkwV2FVc1JWMWh0T1V4?= =?utf-8?B?aXlNSTVYeXdmT0VYVVVESkhhUWxtQVRMdkZYZUFtNEFpbWtLWVdRcTl4NDdD?= =?utf-8?B?Sk9ZUlpSOVh2N0tJWWEyVG5sWVJhTDlESFJnMmV1T1hFSkV1SElNbVF5eTJ4?= =?utf-8?B?dHhjdTNic0pSNEYzSzJIZGFLNWlwUGxJdHBPWUVMOEpScVdHQVJIR3BoQ0l3?= =?utf-8?B?M3ZkQUtKak8zWjlZcmNKQTIzL09JRE1yOWpWNi9VQWRTS2s0OSs0aWRpSmg0?= =?utf-8?B?UnZTNDZCbHRwUDRRMDI2SUYvaXZYdklnMTRlMzFlSlFiSHQ1ZXNyNW5QM05O?= =?utf-8?B?dlJ3aDIrNURSL1R3c3l2aXovcmRwb3IvTTlidEhkNFhuQ2JTKy9ZUDRVdWNl?= =?utf-8?B?YkJwbkU5bElBQ1Rtckl6SmYvb2pzMUs2c3dMWTZtL0tBbDZvNm0xR0xOQU5i?= =?utf-8?B?bDZNYk1ocTNBYUhydmtyK3J1Z1A2RUJVaTRLWEtUV2ZsMkViVGs5VDU3T1Bw?= =?utf-8?B?SEQ5RFdndTc0ODNtQi9Zalp5UGJ0NmRDM2twZGtVOFUxM1Z4bDFDdlNMQkR5?= =?utf-8?B?b3dYSjhFY0N1ZEVPQzBlWGgrVC8zOWdpOWxiR3ZhUGpxWGIvYVNPelZYN0RH?= =?utf-8?B?emtCcnRQb2h2L0tFYklTOTZVTnpCdUtCSlJNS2RMWm1VUFBveW5EVkdySTBx?= =?utf-8?B?OXFlNkJhUENIb1hZcW95dS83NnR1b3B0TmVCWkdsbHdacWN6R0hpNnhJUm4v?= =?utf-8?B?QUN4cXorZ2RkditVOXN5eEYzanowN1lvRVRxc1UwK283Tnl0N3NlL3J2VTRG?= =?utf-8?B?YmorWnRyVnVDdmdJZ0F5UG1HQ0N0WWFrMUVSSnd6VFpFTWZ0b2pnWitSNkNw?= =?utf-8?B?NWVLU05KRFVFdkJTN1YzaE42RWZMVVpCN0tIZnF2Z2F5enRKQklsY2FtbGZt?= =?utf-8?B?ZXFRL1kxRUYwUThwOG9PUnRxWGVtZ2pwTkRCYkEybzExeFVjOGpDeGFBcXc1?= =?utf-8?B?ODV2cUtwOFFOSlRCSm42NUxuSFgzMkF2UDBzQXlnU0lqcDNldTZYWjdrbzA5?= =?utf-8?B?dCs1cGliSitBVUFFR1BXc1Y1eGd4L3ZNNmZ3TE5TanEvV3FsZlpYMjRJWk9L?= =?utf-8?B?cTlNalFIeVlUcWZ1d1BVUkluRWRRSmQrM0dVU05KSHJqa2EyNXRVZkVwU0E0?= =?utf-8?B?dUlRbHJ1NzRZRVNrakNNTm90akdBWW9yU0U1MGx0WHB6MUhmdXlxVlJEdGVm?= =?utf-8?B?Ly84K0F2MU5aQUYzYkEzZjIwMTZ2UmdiRy9RbFpUMXc0dDArSUEyUlNDcHZ1?= =?utf-8?B?WEU1Mm5DYkdlZWtPK013S3BUOEs2MUNrWE1oOEYxOWxYVzkzSkcxUktNWVM2?= =?utf-8?B?d1VBU1hKemJCU1lHQzhicjlGbjZBUEhrbUpuaVFKdFFpRlVzR05WZDFLUXRq?= =?utf-8?B?YXRNelRuWDhpVU9NellWZUZGRVpvS1pRdHVTNk05TFBvSDNBZHNrWlBoRTd0?= =?utf-8?B?eUJuR2E5VmRYcHNKWnJaVENWalRialZVSWV4cjVhNWhscDBKeFdUSVovUTdp?= =?utf-8?B?QVpQVkNRMW1ROVM0eGtLcEdzYjdMVmFFOVdNUEk5QVdXR2tJL2pySXRTbDNw?= =?utf-8?B?aTIvai9rN3EzT3h5aWkrUHVFL1ZTNU9rekFHdXRKSG9UbTA5eE4wTGFndy9B?= =?utf-8?B?eHc9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH8PR11MB6856.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f524b13f-c368-44e9-0ce6-08db2fc71437 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Mar 2023 20:00:28.7107 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 88BOOv12iue5xJjeThLlcKlr78bfMpQ7kNfe8ntBRLvTLCqPiXgHXGGV4VWoy9EJT8oRYL+aq9KH2oryLDcuEJGyy79wEOeisxUGfeVrGLI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6215 Return-Path: andrei.warkentin@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U2VjIGlzbid0IGEgZ29vZCBmaXQsIGJlY2F1c2UgaXQgaGFzIGltcGxpY2F0aW9ucyBvbiB0aGUg ZW52aXJvbm1lbnQsIHdoaWNoIGlzIHdoeSB0aGUgY29udHJpYnV0aW9uIGFsc28gaW5jbHVkZXMg YSBzZXBhcmF0ZSBTZWNQZWkgdmFyaWFudCBhcyB3ZWxsLg0KDQpJbiBuYW1pbmcsIEkgZm9sbG93 ZWQgb3RoZXIgZWRrMiBleGFtcGxlcyBzdWNoIGFzIC4vRW1iZWRkZWRQa2cvTGlicmFyeS9QcmVQ aUV4dHJhY3RHdWlkZWRTZWN0aW9uTGliIGFuZCAuL0VtYmVkZGVkUGtnL0xpYnJhcnkvUHJlUGlN ZW1vcnlBbGxvY2F0aW9uTGkuIEkgd291bGQgcHJlZmVyIG5vdCB0byBtb3ZlIG9uZSBvZiB0aGVz ZSBsaWJyYXJpZXMgaW50byBFbWJlZGRlZFBrZyAtIHRoYXQgd291bGRuJ3QgbWFrZSBtdWNoIHNl bnNlIHRvIG1lIChlc3AuIHNpbmNlIHRoZXJlJ3Mgbm90aGluZyAiZW1iZWRkZWQiIGFib3V0IHRo ZSBhcHByb2FjaCBwZXIgc2UsIGl0IGNhbiBiZSB1c2VkIG9uIGFueSBpbXBsZW1lbnRhdGlvbiku DQoNCkENCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBLaW5uZXksIE1pY2hhZWwg RCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+IA0KU2VudDogTW9uZGF5LCBNYXJjaCAyNywg MjAyMyAxMTozMiBBTQ0KVG86IFdhcmtlbnRpbiwgQW5kcmVpIDxhbmRyZWkud2Fya2VudGluQGlu dGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQpDYzogR2FvLCBMaW1pbmcgPGdhb2xpbWlu Z0BieW9zb2Z0LmNvbS5jbj47IExpdSwgWmhpZ3VhbmcgPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+ OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQpTdWJqZWN0 OiBSRTogW1BBVENIIHY1IDIvM10gTWRlUGtnOiBhZGQgU0JJLWJhc2VkIFNlcmlhbFBvcnRMaWIg Zm9yIFJJU0MtVg0KDQpJIHRoaW5rIHRoYXQgd291bGQgc3RpbGwgYmUgY2FsbGVkIFNlYy4gIEFy ZSB0aGVyZSBhbnkgaXNzdWVzIHdpdGggdXNpbmcgU2VjIHByZWZpeD8NCg0KTWlrZQ0KDQo+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFdhcmtlbnRpbiwgQW5kcmVpIDxhbmRy ZWkud2Fya2VudGluQGludGVsLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIE1hcmNoIDE2LCAyMDIz IDEwOjQ1IFBNDQo+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRl bC5jb20+OyANCj4gZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IEdhbywgTGltaW5nIDxnYW9s aW1pbmdAYnlvc29mdC5jb20uY24+OyBMaXUsIFpoaWd1YW5nIA0KPiA8emhpZ3VhbmcubGl1QGlu dGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2NSAyLzNdIE1kZVBrZzogYWRkIFNCSS1i YXNlZCBTZXJpYWxQb3J0TGliIGZvciANCj4gUklTQy1WDQo+IA0KPiBQcmVQaSByZWZlcnMgdG8g YSBTRUMtbGlrZSBzdGFnZSBpbiBhIFRpYW5vIGltcGxlbWVudGF0aW9uIHRoYXQgc2tpcHMgDQo+ IHRoZSBQRUkgc3RhZ2UuIFJlYXNvbnMgZm9yIHNraXBwaW5nIFBFSSB1c3VhbGx5IGNlbnRlciBh cm91bmQgbWVtb3J5IA0KPiBpbml0aWFsaXphdGlvbiBiZWluZyBkb25lIGF0IGFuIGVhcmxpZXIg c3RhZ2Ugb2YgZmlybXdhcmUgDQo+IGluaXRpYWxpemF0aW9uIC0gZm9yIGV4YW1wbGUsIHByaW9y IG9yIHBhcnQgb2YgVEYtQSBmaXJtd2FyZSBvbg0KPiBBQXJjaDY0IG9yIHByaW9yIG9yIHBhcnQg b2YgU0JJIGltcGxlbWVudGF0aW9uIG9uIFJJU0MtVi4NCj4gDQo+IEUuZy4gQXJtVmlydFBrZy9Q cmVQaSBhbmQgT3ZtZlBrZy9SaXNjVlZpcnQvU2VjLiBUaGUgbGF0ZXIgaXMgbm90IGEgDQo+ICJT RUMiIGluIHRoZSBzZW5kIG9mIGhhbmRpbmcgb2ZmIHRvIFBlaUNvcmUsIGJ1dCBpbnN0ZWFkIGhh bmRzIG9mZiB0byBEeGVDb3JlLg0KPiANCj4gVGhlcmUgaXMgbm8gYmFzZSB0eXBlIGZvciBQcmVQ aS4gVGhlIHR5cGUgaXMgc3RpbGwgU0VDLiBCdXQgaXQgYSkgYXNzdW1lcyBSQU0gaXMgYXZhaWxh YmxlIGIpIGJ1aWxkcyBIT0JzIGFuZCBoYW5kcy1vZmYgdG8gRFhFLg0KPiANCj4gVGhlIG5hbWUg aGFzIGJlZW4gYXJvdW5kIGZvciBhdCBsZWFzdCBoYWxmIGEgZGVjYWRlIG5vdyBhbmQgbWFraW5n IGl0IA0KPiBhIHBhcnQgb2YgdGhlIFNlcmlhbFBvcnRMaWIgY29tcG9uZW50IG5hbWUgaXMgaW1w b3J0YW50IGFzIGl0IHNpZ25pZmllcyB0aGUgc2NlbmFyaW8gd2hlcmUgdGhlIGNvZGUgY2FuIGFw cGx5Lg0KPiANCj4gQQ0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTog S2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBTZW50OiBG cmlkYXksIE1hcmNoIDE3LCAyMDIzIDEyOjAxIEFNDQo+IFRvOiBXYXJrZW50aW4sIEFuZHJlaSA8 YW5kcmVpLndhcmtlbnRpbkBpbnRlbC5jb20+OyANCj4gZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4g Q2M6IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBMaXUsIFpoaWd1YW5n IA0KPiA8emhpZ3VhbmcubGl1QGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIA0KPiA8bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjUgMi8zXSBN ZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBmb3IgDQo+IFJJU0MtVg0KPiANCj4g V2hhdCBpcyB0aGUgZGVmaW5pdGlvbiBvZiAiUHJlUEkiPyAgVGhhdCBpcyBub3QgYSBwcmVmaXgg SSBoYXZlIHNlZW4gdXNlZCBiZWZvcmUuDQo+IA0KPiBNaWtlDQo+IA0KPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJr ZW50aW5AaW50ZWwuY29tPg0KPiA+IFNlbnQ6IFRodXJzZGF5LCBNYXJjaCAxNiwgMjAyMyA5OjUz IFBNDQo+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IEtpbm5leSwgTWljaGFl bCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IEdhbywgTGltaW5nIA0KPiA+IDxnYW9s aW1pbmdAYnlvc29mdC5jb20uY24+OyBMaXUsIFpoaWd1YW5nIDx6aGlndWFuZy5saXVAaW50ZWwu Y29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjUgMi8zXSBNZGVQa2c6IGFkZCBTQkktYmFz ZWQgU2VyaWFsUG9ydExpYiBmb3IgDQo+ID4gUklTQy1WDQo+ID4NCj4gPiBIaSBmb2xrcywNCj4g Pg0KPiA+IENhbiBJIGdldCBhIHJldmlldyBmb3IgdGhlIGNoYW5nZXMgdG8gTWRlUGtnLmRzYyB0 byBpbmNsdWRlIHRoZSBuZXcgDQo+ID4gbGlicyBvbiBSSVNDLVY/IFRoYXQncyB0aGUgbWlub3Ig dGhpbmcgcHJldmVudGluZyB0aGlzIHBhdGNoIHNldCBmcm9tIGJlaW5nIG1lcmdlZCDwn5iKLg0K PiA+DQo+ID4gQQ0KPiA+DQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9t OiBXYXJrZW50aW4sIEFuZHJlaSA8YW5kcmVpLndhcmtlbnRpbkBpbnRlbC5jb20+DQo+ID4gU2Vu dDogRnJpZGF5LCBNYXJjaCAxMCwgMjAyMyAxMTowNSBBTQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdy b3Vwcy5pbw0KPiA+IENjOiBXYXJrZW50aW4sIEFuZHJlaSA8YW5kcmVpLndhcmtlbnRpbkBpbnRl bC5jb20+OyBEYW5pZWwgU2NoYWVmZXIgDQo+ID4gPGdpdEBkYW5pZWxzY2hhZWZlci5tZT47IFN1 bmlsIFYgTCA8c3VuaWx2bEB2ZW50YW5hbWljcm8uY29tPjsgDQo+ID4gS2lubmV5LCBNaWNoYWVs IEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcgDQo+ID4gPGdhb2xp bWluZ0BieW9zb2Z0LmNvbS5jbj47IExpdSwgWmhpZ3VhbmcgPHpoaWd1YW5nLmxpdUBpbnRlbC5j b20+OyANCj4gPiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4NCj4gPiBTdWJqZWN0 OiBbUEFUQ0ggdjUgMi8zXSBNZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBmb3Ig DQo+ID4gUklTQy1WDQo+ID4NCj4gPiBUaGVzZSBhcmUgaW1wbGVtZW50YXRpb25zIG9mIFNlcmlh bFBvcnRMaWIgdXNpbmcgU0JJIGNvbnNvbGUgc2VydmljZXMuDQo+ID4gLSBTZWNQZWlSaXNjVlNl cmlhbFBvcnRMaWJTYmkgaXMgYXBwcm9wcmlhdGUgZm9yIFNFQy9QRUkgKFhJUCkgDQo+ID4gZW52 aXJvbm1lbnRzDQo+ID4gLSBQcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaSBpcyBhcHByb3By aWF0ZSBmb3IgUHJlUEkvRFhFIA0KPiA+IGVudmlyb25tZW50cw0KPiA+DQo+ID4gVGVzdGVkIHdp dGg6DQo+ID4gLSBRZW11IFJpc2NWVmlydCAobm9uLURCQ04gY2FzZSwgYmFja2VkIGJ5IFVBUlQp DQo+ID4gLSBUaW55RU1VICsgUmlzY1ZWaXJ0IChub24tREJDTiBjYXNlLCBIVElGKQ0KPiA+IC0g VGlueUVNVSArIFJpc2NWVmlydCAoREJDTiBjYXNlLCBIVElGKQ0KPiA+DQo+ID4gQ2M6IERhbmll bCBTY2hhZWZlciA8Z2l0QGRhbmllbHNjaGFlZmVyLm1lPg0KPiA+IENjOiBTdW5pbCBWIEwgPHN1 bmlsdmxAdmVudGFuYW1pY3JvLmNvbT4NCj4gPiBDYzogTWljaGFlbCBEIEtpbm5leSA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gQ2M6IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9z b2Z0LmNvbS5jbj4NCj4gPiBDYzogWmhpZ3VhbmcgTGl1IDx6aGlndWFuZy5saXVAaW50ZWwuY29t Pg0KPiA+IEFja2VkLWJ5OiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4NCj4gPiBT aWduZWQtb2ZmLWJ5OiBBbmRyZWkgV2Fya2VudGluIDxhbmRyZWkud2Fya2VudGluQGludGVsLmNv bT4NCj4gPiAtLS0NCj4gPiAgTWRlUGtnL01kZVBrZy5kc2MgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsNCj4gPiAgTWRl UGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNl cmlhbFBvcnRMaWJTYmkuaW5mIHwgIDM2ICsrKw0KPiA+ICBNZGVQa2cvTGlicmFyeS9TZWNQZWlS aXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpLmluZiAgICAg fCAgMzkgKysrDQo+ID4gIE1kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGli U2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpLmMgICB8IDI4OCArKysrKysrKysrKysr KysrKysrKw0KPiA+ICBNZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkv U2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpLmMgICAgICAgfCAyMzMgKysrKysrKysrKysrKysr Kw0KPiA+ICBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQ aUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS51bmkgfCAgMTYgKysNCj4gPiAgTWRlUGtnL0xpYnJh cnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNi aS51bmkgICAgIHwgIDE2ICsrDQo+ID4gIDcgZmlsZXMgY2hhbmdlZCwgNjMwIGluc2VydGlvbnMo KykNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvTWRlUGtnLmRzYyBiL01kZVBrZy9NZGVQ a2cuZHNjIGluZGV4IA0KPiA+IDBhYzc2MThiNDYyMy4uZmIzMTM0OTA0MmZiIDEwMDY0NA0KPiA+ IC0tLSBhL01kZVBrZy9NZGVQa2cuZHNjDQo+ID4gKysrIGIvTWRlUGtnL01kZVBrZy5kc2MNCj4g PiBAQCAtMTkyLDUgKzE5Miw3IEBAIFtDb21wb25lbnRzLkFSTSwgQ29tcG9uZW50cy5BQVJDSDY0 XQ0KPiA+DQo+ID4gIFtDb21wb25lbnRzLlJJU0NWNjRdDQo+ID4gICAgTWRlUGtnL0xpYnJhcnkv QmFzZVJpc2NWU2JpTGliL0Jhc2VSaXNjVlNiaUxpYi5pbmYNCj4gPiArDQo+ID4gKyBNZGVQa2cv TGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0 TGkNCj4gPiArIGJTDQo+ID4gKyBiaQ0KPiA+ICsgLmluZg0KPiA+ICsgTWRlUGtnL0xpYnJhcnkv UHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvDQo+ID4g KyBydA0KPiA+ICsgTGkNCj4gPiArIGJTYmkuaW5mDQo+ID4NCj4gPiAgW0J1aWxkT3B0aW9uc10N Cj4gPiBkaWZmIC0tZ2l0DQo+ID4gYS9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFs UG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG8NCj4gPiBydA0KPiA+IExpYlNiaS5pbmYN Cj4gPiBiL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBp RHhlUmlzY1ZTZXJpYWxQbw0KPiA+IHJ0DQo+ID4gTGliU2JpLmluZg0KPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4xZDg1NDQ3NTZiYjkNCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBv cnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmkNCj4gPiArKysgYWwNCj4gPiArKysgUG8NCj4gPiAr KysgcnRMaWJTYmkuaW5mDQo+ID4gQEAgLTAsMCArMSwzNiBAQA0KPiA+ICsjIyBAZmlsZQ0KPiA+ ICsjICBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4NCj4gPiArIw0K PiA+ICsjICBNZWFudCBmb3IgUHJlUGkgYW5kIERYRSBlbnZpcm9ubWVudHMgKHdoZXJlIGdsb2Jh bHMgYXJlIGFsbG93ZWQpLg0KPiA+ICtTZWUgIyAgU2VjUGVpU2VyaWFsUG9ydExpYlJpc2NWU2Jp IGZvciBhIHJlZHVjZWQgdmFyaWFudCANCj4gPiArYXBwcm9wcmlhdGUgZm9yIFNFQyAjICBhbmQg UEVJIChYSVApIGVudmlyb25tZW50cy4NCj4gPiArIw0KPiA+ICsjICBDb3B5cmlnaHQgKGMpIDIw MjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4gDQo+ID4gKyMg Iw0KPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAjICMg IyMNCj4gPiArDQo+ID4gK1tEZWZpbmVzXQ0KPiA+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAg ICAgICAgICA9IDB4MDAwMTAwMUINCj4gPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAg ICAgPSBQcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaQ0KPiA+ICsgIE1PRFVMRV9VTklfRklM RSAgICAgICAgICAgICAgICA9IFByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpLnVuaQ0KPiA+ ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDg3MmFmNzQzLWFiNTYtNDViNC1h MDY1LTYwMjU2N2Y0ODIwYw0KPiA+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9 IEJBU0UNCj4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gPiAr ICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBTZXJpYWxQb3J0TGliIHwgU0VDIERY RV9DT1JFIERYRV9EUklWRVIgRFhFX1JVTlRJTUVfRFJJVkVSIFVFRklfRFJJVkVSIFVFRklfQVBQ TElDQVRJT04NCj4gPiArDQo+ID4gKw0KPiA+ICsjDQo+ID4gKyMgIFZBTElEX0FSQ0hJVEVDVFVS RVMgICAgICAgICAgID0gUklTQ1Y2NA0KPiA+ICsjDQo+ID4gKw0KPiA+ICtbU291cmNlc10NCj4g PiArICBQcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS5jDQo+ID4gKw0KPiA+ICtbUGFja2Fn ZXNdDQo+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiArDQo+ID4gK1tMaWJyYXJ5Q2xhc3Nl c10NCj4gPiArICBSaXNjVlNiaUxpYg0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL01kZVBrZy9MaWJy YXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaQ0K PiA+IGJTDQo+ID4gYmkuaW5mDQo+ID4gYi9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlh bFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGkNCj4gPiBiUw0KPiA+IGJpLmluZg0K PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi43YmM3Y2Q0 N2MxMWMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVp UmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG8NCj4gPiArKysgcnQNCj4g PiArKysgTGkNCj4gPiArKysgYlNiaS5pbmYNCj4gPiBAQCAtMCwwICsxLDM5IEBADQo+ID4gKyMj IEBmaWxlDQo+ID4gKyMgIFNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xl Lg0KPiA+ICsjDQo+ID4gKyMgIE1lYW50IGZvciBTRUMgYW5kIFBFSSAoWElQKSBlbnZpcm9ubWVu dHMuDQo+ID4gKyMNCj4gPiArIyAgRHVlIHRvIGxpbWl0YXRpb25zIG9mIFNCSSBjb25zb2xlIGlu dGVyZmFjZSBhbmQgWElQIGVudmlyb25tZW50cyANCj4gPiArIyAob24gdXNlIG9mIGdsb2JhbHMp LCB0aGlzIGxpYnJhcnkgaW5zdGFuY2UgZG9lcyBub3QgaW1wbGVtZW50IA0KPiA+ICtyZWFkaW5n ICMgYW5kIHBvbGxpbmcgdGhlIHNlcmlhbCBwb3J0LiBTZWUgDQo+ID4gK1ByZVBpRHhlU2VyaWFs UG9ydExpYlJpc2NWU2JpIGZvciAjIHRoZSBmdWxsLWZlYXR1cmVkIHZhcmlhbnQgbWVhbnQgZm9y IFByZVBpIGFuZCBEWEUgZW52aXJvbm1lbnRzLg0KPiA+ICsjDQo+ID4gKyMgIENvcHlyaWdodCAo YykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPiANCj4g PiArIyAjDQo+ID4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 ICMgIyAjIw0KPiA+ICsNCj4gPiArW0RlZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAg ICAgICAgICAgICAgID0gMHgwMDAxMDAxQg0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAg ICAgICAgICA9IFNlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaQ0KPiA+ICsgIE1PRFVMRV9VTklf RklMRSAgICAgICAgICAgICAgICA9IFNlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS51bmkNCj4g PiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA2MzlmYWQzOC00YmZkLTRlYjkt OWYwOS1lOTdjNzk0N2Q0ODANCj4gPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAg PSBCQVNFDQo+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ID4g KyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gU2VyaWFsUG9ydExpYiB8IFNFQyBQ RUlfQ09SRSBQRUlNDQo+ID4gKw0KPiA+ICsNCj4gPiArIw0KPiA+ICsjICBWQUxJRF9BUkNISVRF Q1RVUkVTICAgICAgICAgICA9IFJJU0NWNjQNCj4gPiArIw0KPiA+ICsNCj4gPiArW1NvdXJjZXNd DQo+ID4gKyAgU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpLmMNCj4gPiArDQo+ID4gK1tQYWNr YWdlc10NCj4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ICsNCj4gPiArW0xpYnJhcnlDbGFz c2VzXQ0KPiA+ICsgIFJpc2NWU2JpTGliDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvTWRlUGtnL0xp YnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBv DQo+ID4gcnQNCj4gPiBMaWJTYmkuYw0KPiA+IGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNj VlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvDQo+ID4gcnQNCj4gPiBMaWJT YmkuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4w NThhNjU3M2VmMmQNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkv UHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmkNCj4gPiArKysg YWwNCj4gPiArKysgUG8NCj4gPiArKysgcnRMaWJTYmkuYw0KPiA+IEBAIC0wLDAgKzEsMjg4IEBA DQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNC SSBjb25zb2xlLg0KPiA+ICsNCj4gPiArICBNZWFudCBmb3IgUHJlUGkgYW5kIERYRSBlbnZpcm9u bWVudHMgKHdoZXJlIGdsb2JhbHMgYXJlIGFsbG93ZWQpLg0KPiA+ICsgU2VlIFNlY1BlaVNlcmlh bFBvcnRMaWJSaXNjVlNiaSBmb3IgYSByZWR1Y2VkIHZhcmlhbnQgYXBwcm9wcmlhdGUgDQo+ID4g KyBmb3IgU0VDIGFuZCBQRUkgKFhJUCkgZW52aXJvbm1lbnRzLg0KPiA+ICsNCj4gPiArICBDb3B5 cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8QmFzZS5oPg0KPiA+ICsjaW5j bHVkZSA8TGlicmFyeS9TZXJpYWxQb3J0TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jh c2VSaXNjVlNiaUxpYi5oPg0KPiA+ICsNCj4gPiArU1RBVElDIEJPT0xFQU4gIG1IYXZlRGJjbiAg ICAgICAgICA9IEZBTFNFOw0KPiA+ICtTVEFUSUMgQk9PTEVBTiAgbUhhdmVMZWdhY3lQdXRjaGFy ID0gRkFMU0U7IFNUQVRJQyBCT09MRUFOIA0KPiA+ICttSGF2ZUxlZ2FjeUdldGNoYXIgPSBGQUxT RTsNCj4gPiArU1RBVElDIElOVDY0ICAgIG1MYXN0R2V0Q2hhciAgICAgICA9IC0xOw0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgSW5pdGlhbGl6ZSB0aGUgc2VyaWFsIGRldmljZSBoYXJkd2FyZS4N Cj4gPiArDQo+ID4gKyAgSWYgbm8gaW5pdGlhbGl6YXRpb24gaXMgcmVxdWlyZWQsIHRoZW4gcmV0 dXJuIFJFVFVSTl9TVUNDRVNTLg0KPiA+ICsgIElmIHRoZSBzZXJpYWwgZGV2aWNlIHdhcyBzdWNj ZXNzZnVsbHkgaW5pdGlhbGl6ZWQsIHRoZW4gcmV0dXJuIFJFVFVSTl9TVUNDRVNTLg0KPiA+ICsg IElmIHRoZSBzZXJpYWwgZGV2aWNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZCwgdGhlbiByZXR1 cm4gUkVUVVJOX0RFVklDRV9FUlJPUi4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VD Q0VTUyAgICAgICAgVGhlIHNlcmlhbCBkZXZpY2Ugd2FzIGluaXRpYWxpemVkLg0KPiA+ICsgIEBy ZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJPUiAgIFRoZSBzZXJpYWwgZGV2aWNlIGNvdWxkIG5vdCBi ZSBpbml0aWFsaXplZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4g K0VGSUFQSQ0KPiA+ICtTZXJpYWxQb3J0SW5pdGlhbGl6ZSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIFNCSV9SRVQgIFJldDsNCj4gPiArDQo+ID4gKyAgUmV0ID0gU2Jp Q2FsbCAoU0JJX0VYVF9CQVNFLCBTQklfRVhUX0JBU0VfUFJPQkVfRVhULCAxLCANCj4gPiArIFNC SV9FWFRfREJDTik7ICBpZiAoKFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVGSV9TVUND RVNTKSAmJg0KPiA+ICsgICAgICAoUmV0LlZhbHVlICE9IDApKQ0KPiA+ICsgIHsNCj4gPiArICAg IG1IYXZlRGJjbiA9IFRSVUU7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIFJldCA9IFNiaUNh bGwgKFNCSV9FWFRfQkFTRSwgU0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMSwgU0JJX0VYVF8wXzFf Q09OU09MRV9QVVRDSEFSKTsNCj4gPiArICAgIGlmICgoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJv cikgPT0gRUZJX1NVQ0NFU1MpICYmDQo+ID4gKyAgICAgICAgKFJldC5WYWx1ZSAhPSAwKSkNCj4g PiArICAgIHsNCj4gPiArICAgICAgbUhhdmVMZWdhY3lQdXRjaGFyID0gVFJVRTsNCj4gPiArICAg IH0NCj4gPiArDQo+ID4gKyAgICBSZXQgPSBTYmlDYWxsIChTQklfRVhUX0JBU0UsIFNCSV9FWFRf QkFTRV9QUk9CRV9FWFQsIDEsIFNCSV9FWFRfMF8xX0NPTlNPTEVfR0VUQ0hBUik7DQo+ID4gKyAg ICBpZiAoKFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVGSV9TVUNDRVNTKSAmJg0KPiA+ ICsgICAgICAgIChSZXQuVmFsdWUgIT0gMCkpDQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIG1IYXZl TGVnYWN5R2V0Y2hhciA9IFRSVUU7DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAr ICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IFdyaXRlIGRhdGEgZnJvbSBidWZmZXIgdG8gc2VyaWFsIGRldmljZS4NCj4gPiArDQo+ID4gKyAg V3JpdGVzIE51bWJlck9mQnl0ZXMgZGF0YSBieXRlcyBmcm9tIEJ1ZmZlciB0byB0aGUgc2VyaWFs IGRldmljZS4NCj4gPiArICBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gdG8g dGhlIHNlcmlhbCBkZXZpY2UgaXMgcmV0dXJuZWQuDQo+ID4gKyAgSWYgdGhlIHJldHVybiB2YWx1 ZSBpcyBsZXNzIHRoYW4gTnVtYmVyT2ZCeXRlcywgdGhlbiB0aGUgd3JpdGUgb3BlcmF0aW9uIGZh aWxlZC4NCj4gPiArICBJZiBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJ ZiBOdW1iZXJPZkJ5dGVzIGlzIHplcm8sIHRoZW4gcmV0dXJuIDAuDQo+ID4gKw0KPiA+ICsgIEBw YXJhbSAgQnVmZmVyICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgZGF0YSBidWZmZXIgdG8g YmUgd3JpdHRlbi4NCj4gPiArICBAcGFyYW0gIE51bWJlck9mQnl0ZXMgICAgVGhlIG51bWJlciBv ZiBieXRlcyB0byB3cml0dGVuIHRvIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ICsNCj4gPiArICBA cmV0dmFsIDAgICAgICAgICAgICAgICAgTnVtYmVyT2ZCeXRlcyBpcyAwLg0KPiA+ICsgIEByZXR2 YWwgPjAgICAgICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIHNl cmlhbCBkZXZpY2UuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoaXMgdmFs dWUgaXMgbGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHdyaXRlIG9wZXJhdGlvbiBm YWlsZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1Nl cmlhbFBvcnRXcml0ZSAoDQo+ID4gKyAgSU4gVUlOVDggICpCdWZmZXIsDQo+ID4gKyAgSU4gVUlO VE4gIE51bWJlck9mQnl0ZXMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UTiAgSW5kZXg7 DQo+ID4gKw0KPiA+ICsgIGlmIChtSGF2ZURiY24pIHsNCj4gPiArICAgIFNCSV9SRVQgIFJldDsN Cj4gPiArICAgIFJldCA9IFNiaUNhbGwgKA0KPiA+ICsgICAgICAgICAgICBTQklfRVhUX0RCQ04s DQo+ID4gKyAgICAgICAgICAgIFNCSV9FWFRfREJDTl9XUklURSwNCj4gPiArICAgICAgICAgICAg MywNCj4gPiArICAgICAgICAgICAgTnVtYmVyT2ZCeXRlcywNCj4gPiArICAgICAgICAgICAgKChV SU5UTilCdWZmZXIpLA0KPiA+ICsgICAgICAgICAgICAwDQo+ID4gKyAgICAgICAgICAgICk7DQo+ ID4gKyAgICBpZiAoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgIT0gRUZJX1NVQ0NFU1MpIHsN Cj4gPiArICAgICAgcmV0dXJuIDA7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgcmV0dXJu IFJldC5WYWx1ZTsNCj4gPiArICB9IGVsc2UgaWYgKG1IYXZlTGVnYWN5UHV0Y2hhcikgew0KPiA+ ICsgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgTnVtYmVyT2ZCeXRlczsgSW5kZXgrKykgew0K PiA+ICsgICAgICBTYmlDYWxsIChTQklfRVhUXzBfMV9DT05TT0xFX1BVVENIQVIsIDAsIDEsIEJ1 ZmZlcltJbmRleF0pOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIHJldHVybiBJbmRleDsN Cj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8qDQo+ID4gKyAgICogTmVpdGhlciBEQkNOIG9yIGxl Z2FjeSBleHRlbnNpb24gd2VyZSBwcmVzZW50Lg0KPiA+ICsgICAqLw0KPiA+ICsgIHJldHVybiBO dW1iZXJPZkJ5dGVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZWFkIGRhdGEg ZnJvbSBzZXJpYWwgZGV2aWNlIGFuZCBzYXZlIHRoZSBkYXRhcyBpbiBidWZmZXIuDQo+ID4gKw0K PiA+ICsgIFJlYWRzIE51bWJlck9mQnl0ZXMgZGF0YSBieXRlcyBmcm9tIGEgc2VyaWFsIGRldmlj ZSBpbnRvIHRoZSANCj4gPiArIGJ1ZmZlciBzcGVjaWZpZWQgYnkgQnVmZmVyLiBUaGUgbnVtYmVy IG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgaXMgcmV0dXJuZWQuDQo+ID4gKyAgSWYgdGhlIHJldHVy biB2YWx1ZSBpcyBsZXNzIHRoYW4gTnVtYmVyT2ZCeXRlcywgdGhlbiB0aGUgcmVzdCBvcGVyYXRp b24gZmFpbGVkLg0KPiA+ICsgIElmIEJ1ZmZlciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ ICsgIElmIE51bWJlck9mQnl0ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4NCj4gPiArDQo+ID4g KyAgQHBhcmFtICBCdWZmZXIgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBkYXRhIGJ1ZmZl ciB0byBzdG9yZSB0aGUgZGF0YSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gKyAg QHBhcmFtICBOdW1iZXJPZkJ5dGVzICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggd2lsbCBi ZSByZWFkLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIDAgICAgICAgICAgICAgICAgUmVhZCBkYXRh IGZhaWxlZDsgTm8gZGF0YSBpcyB0byBiZSByZWFkLg0KPiA+ICsgIEByZXR2YWwgPjAgICAgICAg ICAgICAgICBUaGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gc2VyaWFsIGRldmlj ZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArU2VyaWFs UG9ydFJlYWQgKA0KPiA+ICsgIE9VVCBVSU5UOCAgKkJ1ZmZlciwNCj4gPiArICBJTiAgVUlOVE4g IE51bWJlck9mQnl0ZXMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UTiAgSW5kZXg7DQo+ ID4gKw0KPiA+ICsgIEluZGV4ID0gMDsNCj4gPiArICB3aGlsZSAoKEluZGV4IDwgTnVtYmVyT2ZC eXRlcykgJiYgU2VyaWFsUG9ydFBvbGwgKCkpIHsNCj4gPiArICAgIEJ1ZmZlcltJbmRleCsrXSA9 IChVSU5UOCltTGFzdEdldENoYXI7DQo+ID4gKyAgICBtTGFzdEdldENoYXIgICAgPSAtMTsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBJbmRleDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgUG9sbHMgYSBzZXJpYWwgZGV2aWNlIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkg ZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQuDQo+ID4gKw0KPiA+ICsgIFBvbGxzIGEgc2VyaWFsIGRl dmljZSB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGRhdGEgd2FpdGluZyB0byBiZSByZWFkLg0KPiA+ ICsgIElmIHRoZXJlIGlzIGRhdGEgd2FpdGluZyB0byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBk ZXZpY2UsIHRoZW4gVFJVRSBpcyByZXR1cm5lZC4NCj4gPiArICBJZiB0aGVyZSBpcyBubyBkYXRh IHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLCB0aGVuIEZBTFNFIGlz IHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgICAgRGF0YSBp cyB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiArICBAcmV0 dmFsIEZBTFNFICAgICAgICAgICAgVGhlcmUgaXMgbm8gZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQg ZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ ID4gK0VGSUFQSQ0KPiA+ICtTZXJpYWxQb3J0UG9sbCAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsgIC8qDQo+ID4gKyAgICogQ2FyZWZ1bC4gT3BlblNCSSB3aXRoIEhUSUYg Y29uc29sZSB3aWxsIHJldHVybiAtMSBmb2xsb3dlZCBieSAtMg0KPiA+ICsgICAqIGlmIHRoZXJl IGlzIG5vIGNoYXJhY3RlciByZWNlaXZlZC4gU28ganVzdCBjaGVjayBmb3IgdmFsdWVzID49IDAu DQo+ID4gKyAgICovDQo+ID4gKw0KPiA+ICsgIGlmIChtTGFzdEdldENoYXIgPj0gMCkgew0KPiA+ ICsgICAgcmV0dXJuIFRSVUU7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZiAobUhhdmVEYmNu KSB7DQo+ID4gKyAgICBVSU5UOCAgICBCdWZmZXI7DQo+ID4gKyAgICBTQklfUkVUICBSZXQ7DQo+ ID4gKw0KPiA+ICsgICAgUmV0ID0gU2JpQ2FsbCAoDQo+ID4gKyAgICAgICAgICAgIFNCSV9FWFRf REJDTiwNCj4gPiArICAgICAgICAgICAgU0JJX0VYVF9EQkNOX1JFQUQsDQo+ID4gKyAgICAgICAg ICAgIDMsDQo+ID4gKyAgICAgICAgICAgIDEsDQo+ID4gKyAgICAgICAgICAgICgoVUlOVE4pJkJ1 ZmZlciksDQo+ID4gKyAgICAgICAgICAgIDANCj4gPiArICAgICAgICAgICAgKTsNCj4gPiArICAg IGlmICgoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgPT0gRUZJX1NVQ0NFU1MpICYmDQo+ID4g KyAgICAgICAgKFJldC5WYWx1ZSA9PSAxKSkNCj4gPiArICAgIHsNCj4gPiArICAgICAgbUxhc3RH ZXRDaGFyID0gQnVmZmVyOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0gZWxzZSBpZiAobUhhdmVMZWdh Y3lHZXRjaGFyKSB7DQo+ID4gKyAgICBtTGFzdEdldENoYXIgPSAoSU5UNjQpU2JpQ2FsbCAoU0JJ X0VYVF8wXzFfQ09OU09MRV9HRVRDSEFSLCAwLCANCj4gPiArIDApLkVycm9yOyAgfQ0KPiA+ICsN Cj4gPiArICByZXR1cm4gbUxhc3RHZXRDaGFyID49IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFNldHMgdGhlIGNvbnRyb2wgYml0cyBvbiBhIHNlcmlhbCBkZXZpY2UuDQo+ID4g Kw0KPiA+ICsgIEBwYXJhbSBDb250cm9sICAgICAgICAgICAgICAgIFNldHMgdGhlIGJpdHMgb2Yg Q29udHJvbCB0aGF0IGFyZSBzZXR0YWJsZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5f U1VDQ0VTUyAgICAgICAgVGhlIG5ldyBjb250cm9sIGJpdHMgd2VyZSBzZXQgb24gdGhlIHNlcmlh bCBkZXZpY2UuDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fVU5TVVBQT1JURUQgICAgVGhlIHNlcmlh bCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbi4NCj4gPiArICBAcmV0dmFs IFJFVFVSTl9ERVZJQ0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3QgZnVuY3Rpb25p bmcgY29ycmVjdGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiAr RUZJQVBJDQo+ID4gK1NlcmlhbFBvcnRTZXRDb250cm9sICgNCj4gPiArICBJTiBVSU5UMzIgIENv bnRyb2wNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHJpZXZlIHRoZSBzdGF0dXMgb2YgdGhl IGNvbnRyb2wgYml0cyBvbiBhIHNlcmlhbCBkZXZpY2UuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBD b250cm9sICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byByZXR1cm4gdGhlIGN1cnJlbnQgY29u dHJvbCBzaWduYWxzIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgIFRoZSBjb250cm9sIGJpdHMgd2VyZSByZWFkIGZyb20g dGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fVU5TVVBQT1JURUQgICAg VGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbi4NCj4gPiAr ICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3Qg ZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1JFVFVSTl9TVEFU VVMNCj4gPiArRUZJQVBJDQo+ID4gK1NlcmlhbFBvcnRHZXRDb250cm9sICgNCj4gPiArICBPVVQg VUlOVDMyICAqQ29udHJvbA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgICpDb250cm9sID0gMDsN Cj4gPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFNldHMgdGhlIGJhdWQgcmF0ZSwgcmVjZWl2ZSBGSUZPIGRlcHRoLCB0cmFuc21pdC9y ZWNlaWNlIHRpbWUgDQo+ID4gK291dCwgcGFyaXR5LA0KPiA+ICsgIGRhdGEgYml0cywgYW5kIHN0 b3AgYml0cyBvbiBhIHNlcmlhbCBkZXZpY2UuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBCYXVkUmF0 ZSAgICAgICAgICAgVGhlIHJlcXVlc3RlZCBiYXVkIHJhdGUuIEEgQmF1ZFJhdGUgdmFsdWUgb2Yg MCB3aWxsIHVzZSB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSdz IGRlZmF1bHQgaW50ZXJmYWNlIHNwZWVkLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiA+ICsgIEBwYXJhbSBSZXZl aXZlRmlmb0RlcHRoICAgVGhlIHJlcXVlc3RlZCBkZXB0aCBvZiB0aGUgRklGTyBvbiB0aGUgcmVj ZWl2ZSBzaWRlIG9mIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFs IGludGVyZmFjZS4gQSBSZWNlaXZlRmlmb0RlcHRoIHZhbHVlIG9mIDAgd2lsbCB1c2UNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkZXZpY2UncyBkZWZhdWx0IEZJRk8gZGVw dGguDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1 ZSBhY3R1YWxseSBzZXQuDQo+ID4gKyAgQHBhcmFtIFRpbWVvdXQgICAgICAgICAgICBUaGUgcmVx dWVzdGVkIHRpbWUgb3V0IGZvciBhIHNpbmdsZSBjaGFyYWN0ZXIgaW4gbWljcm9zZWNvbmRzLg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0aW1lb3V0IGFwcGxpZXMgdG8g Ym90aCB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgc2lkZSBvZiB0aGUNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS4gQSBUaW1lb3V0IHZhbHVlIG9mIDAgd2lsbCB1 c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgdGltZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3V0IHZhbHVlLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0 cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiA+ICsgIEBwYXJhbSBQYXJpdHkgICAgICAg ICAgICAgVGhlIHR5cGUgb2YgcGFyaXR5IHRvIHVzZSBvbiB0aGlzIHNlcmlhbCBkZXZpY2UuIEEg UGFyaXR5IHZhbHVlIG9mDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0 UGFyaXR5IHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IHBhcml0eSB2YWx1ZS4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5 IHNldC4NCj4gPiArICBAcGFyYW0gRGF0YUJpdHMgICAgICAgICAgIFRoZSBudW1iZXIgb2YgZGF0 YSBiaXRzIHRvIHVzZSBvbiB0aGUgc2VyaWFsIGRldmljZS4gQSBEYXRhQml0cw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdmF1bGUgb2YgMCB3aWxsIHVzZSB0aGUgZGV2aWNlJ3Mg ZGVmYXVsdCBkYXRhIGJpdCBzZXR0aW5nLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiA+ICsgIEBwYXJhbSBTdG9w Qml0cyAgICAgICAgICAgVGhlIG51bWJlciBvZiBzdG9wIGJpdHMgdG8gdXNlIG9uIHRoaXMgc2Vy aWFsIGRldmljZS4gQSBTdG9wQml0cw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg dmFsdWUgb2YgRGVmYXVsdFN0b3BCaXRzIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IG51 bWJlciBvZg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCBiaXRzLg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFs bHkgc2V0Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFJFVFVSTl9TVUNDRVNTICAgICAgICAgICAg VGhlIG5ldyBhdHRyaWJ1dGVzIHdlcmUgc2V0IG9uIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ICsg IEByZXR2YWwgUkVUVVJOX1VOU1VQUE9SVEVEICAgICAgICBUaGUgc2VyaWFsIGRldmljZSBkb2Vz IG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSICBPbmUgb3IgbW9yZSBvZiB0aGUgYXR0cmlidXRlcyBoYXMgYW4gdW5zdXBw b3J0ZWQgdmFsdWUuDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgICAgIFRo ZSBzZXJpYWwgZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmluZyBjb3JyZWN0bHkuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArUkVUVVJOX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArU2VyaWFsUG9ydFNl dEF0dHJpYnV0ZXMgKA0KPiA+ICsgIElOIE9VVCBVSU5UNjQgICAgICAgICAgICAgICpCYXVkUmF0 ZSwNCj4gPiArICBJTiBPVVQgVUlOVDMyICAgICAgICAgICAgICAqUmVjZWl2ZUZpZm9EZXB0aCwN Cj4gPiArICBJTiBPVVQgVUlOVDMyICAgICAgICAgICAgICAqVGltZW91dCwNCj4gPiArICBJTiBP VVQgRUZJX1BBUklUWV9UWVBFICAgICAqUGFyaXR5LA0KPiA+ICsgIElOIE9VVCBVSU5UOCAgICAg ICAgICAgICAgICpEYXRhQml0cywNCj4gPiArICBJTiBPVVQgRUZJX1NUT1BfQklUU19UWVBFICAq U3RvcEJpdHMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7 DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0DQo+ID4gYS9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNj VlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGkNCj4gPiBiUw0KPiA+IGJp LmMNCj4gPiBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQ ZWlSaXNjVlNlcmlhbFBvcnRMaQ0KPiA+IGJTDQo+ID4gYmkuYw0KPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4wYWQ1OTMxYmUzYWUNCj4gPiAtLS0gL2Rl di9udWxsDQo+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGli U2JpL1NlY1BlaVJpc2NWU2VyaWFsUG8NCj4gPiArKysgcnQNCj4gPiArKysgTGkNCj4gPiArKysg YlNiaS5jDQo+ID4gQEAgLTAsMCArMSwyMzMgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgU2Vy aWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ID4gKw0KPiA+ICsgIE1l YW50IGZvciBTRUMgYW5kIFBFSSAoWElQKSBlbnZpcm9ubWVudHMuDQo+ID4gKw0KPiA+ICsgIER1 ZSB0byBsaW1pdGF0aW9ucyBvZiBTQkkgY29uc29sZSBpbnRlcmZhY2UgYW5kIFhJUCBlbnZpcm9u bWVudHMgDQo+ID4gKyAob24gdXNlIG9mIGdsb2JhbHMpLCB0aGlzIGxpYnJhcnkgaW5zdGFuY2Ug ZG9lcyBub3QgaW1wbGVtZW50IA0KPiA+ICsgcmVhZGluZyAgYW5kIHBvbGxpbmcgdGhlIHNlcmlh bCBwb3J0LiBTZWUgDQo+ID4gKyBQcmVQaUR4ZVNlcmlhbFBvcnRMaWJSaXNjVlNiaSBmb3IgIHRo ZSBmdWxsLWZlYXR1cmVkIHZhcmlhbnQgbWVhbnQgZm9yIFByZVBpIGFuZCBEWEUgZW52aXJvbm1l bnRzLg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8QmFzZS5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9TZXJpYWxQb3J0TGliLmg+DQo+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VSaXNjVlNiaUxpYi5oPg0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgSW5pdGlhbGl6ZSB0aGUgc2VyaWFsIGRldmljZSBoYXJkd2FyZS4NCj4gPiArDQo+ ID4gKyAgSWYgbm8gaW5pdGlhbGl6YXRpb24gaXMgcmVxdWlyZWQsIHRoZW4gcmV0dXJuIFJFVFVS Tl9TVUNDRVNTLg0KPiA+ICsgIElmIHRoZSBzZXJpYWwgZGV2aWNlIHdhcyBzdWNjZXNzZnVsbHkg aW5pdGlhbGl6ZWQsIHRoZW4gcmV0dXJuIFJFVFVSTl9TVUNDRVNTLg0KPiA+ICsgIElmIHRoZSBz ZXJpYWwgZGV2aWNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZCwgdGhlbiByZXR1cm4gUkVUVVJO X0RFVklDRV9FUlJPUi4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAg ICAgVGhlIHNlcmlhbCBkZXZpY2Ugd2FzIGluaXRpYWxpemVkLg0KPiA+ICsgIEByZXR2YWwgUkVU VVJOX0RFVklDRV9FUlJPUiAgIFRoZSBzZXJpYWwgZGV2aWNlIGNvdWxkIG5vdCBiZSBpbml0aWFs aXplZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gK0VGSUFQSQ0K PiA+ICtTZXJpYWxQb3J0SW5pdGlhbGl6ZSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgV3JpdGUgZGF0YSBmcm9tIGJ1ZmZlciB0byBzZXJpYWwgZGV2aWNlLg0KPiA+ICsN Cj4gPiArICBXcml0ZXMgTnVtYmVyT2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gQnVmZmVyIHRvIHRo ZSBzZXJpYWwgZGV2aWNlLg0KPiA+ICsgIFRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3Jp dHRlbiB0byB0aGUgc2VyaWFsIGRldmljZSBpcyByZXR1cm5lZC4NCj4gPiArICBJZiB0aGUgcmV0 dXJuIHZhbHVlIGlzIGxlc3MgdGhhbiBOdW1iZXJPZkJ5dGVzLCB0aGVuIHRoZSB3cml0ZSBvcGVy YXRpb24gZmFpbGVkLg0KPiA+ICsgIElmIEJ1ZmZlciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0K PiA+ICsgIElmIE51bWJlck9mQnl0ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtICBCdWZmZXIgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBkYXRhIGJ1 ZmZlciB0byBiZSB3cml0dGVuLg0KPiA+ICsgIEBwYXJhbSAgTnVtYmVyT2ZCeXRlcyAgICBUaGUg bnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXR0ZW4gdG8gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gKw0K PiA+ICsgIEByZXR2YWwgMCAgICAgICAgICAgICAgICBOdW1iZXJPZkJ5dGVzIGlzIDAuDQo+ID4g KyAgQHJldHZhbCA+MCAgICAgICAgICAgICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0 byB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYg dGhpcyB2YWx1ZSBpcyBsZXNzIHRoYW4gTnVtYmVyT2ZCeXRlcywgdGhlbiB0aGUgd3JpdGUgb3Bl cmF0aW9uIGZhaWxlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkN Cj4gPiArU2VyaWFsUG9ydFdyaXRlICgNCj4gPiArICBJTiBVSU5UOCAgKkJ1ZmZlciwNCj4gPiAr ICBJTiBVSU5UTiAgTnVtYmVyT2ZCeXRlcw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFNCSV9S RVQgIFJldDsNCj4gPiArICBVSU5UTiAgICBJbmRleDsNCj4gPiArDQo+ID4gKyAgUmV0ID0gU2Jp Q2FsbCAoU0JJX0VYVF9CQVNFLCBTQklfRVhUX0JBU0VfUFJPQkVfRVhULCAxLCANCj4gPiArIFNC SV9FWFRfREJDTik7ICBpZiAoKFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVGSV9TVUND RVNTKSAmJg0KPiA+ICsgICAgICAoUmV0LlZhbHVlICE9IDApKQ0KPiA+ICsgIHsNCj4gPiArICAg IFJldCA9IFNiaUNhbGwgKA0KPiA+ICsgICAgICAgICAgICBTQklfRVhUX0RCQ04sDQo+ID4gKyAg ICAgICAgICAgIFNCSV9FWFRfREJDTl9XUklURSwNCj4gPiArICAgICAgICAgICAgMywNCj4gPiAr ICAgICAgICAgICAgTnVtYmVyT2ZCeXRlcywNCj4gPiArICAgICAgICAgICAgKChVSU5UTilCdWZm ZXIpLA0KPiA+ICsgICAgICAgICAgICAwDQo+ID4gKyAgICAgICAgICAgICk7DQo+ID4gKyAgICBp ZiAoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgIT0gRUZJX1NVQ0NFU1MpIHsNCj4gPiArICAg ICAgcmV0dXJuIDA7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgcmV0dXJuIFJldC5WYWx1 ZTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFJldCA9IFNiaUNhbGwgKFNCSV9FWFRfQkFTRSwg U0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMSwgDQo+ID4gKyBTQklfRVhUXzBfMV9DT05TT0xFX1BV VENIQVIpOyAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykg JiYNCj4gPiArICAgICAgKFJldC5WYWx1ZSAhPSAwKSkNCj4gPiArICB7DQo+ID4gKyAgICBmb3Ig KEluZGV4ID0gMDsgSW5kZXggPCBOdW1iZXJPZkJ5dGVzOyBJbmRleCsrKSB7DQo+ID4gKyAgICAg IFNiaUNhbGwgKFNCSV9FWFRfMF8xX0NPTlNPTEVfUFVUQ0hBUiwgMCwgMSwgQnVmZmVyW0luZGV4 XSk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgcmV0dXJuIEluZGV4Ow0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgLyoNCj4gPiArICAgKiBOZWl0aGVyIERCQ04gb3IgbGVnYWN5IGV4dGVu c2lvbiB3ZXJlIHByZXNlbnQuDQo+ID4gKyAgICovDQo+ID4gKyAgcmV0dXJuIE51bWJlck9mQnl0 ZXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWQgZGF0YSBmcm9tIHNlcmlh bCBkZXZpY2UgYW5kIHNhdmUgdGhlIGRhdGFzIGluIGJ1ZmZlci4NCj4gPiArDQo+ID4gKyAgUmVh ZHMgTnVtYmVyT2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gYSBzZXJpYWwgZGV2aWNlIGludG8gdGhl IA0KPiA+ICsgYnVmZmVyIHNwZWNpZmllZCBieSBCdWZmZXIuIFRoZSBudW1iZXIgb2YgYnl0ZXMg YWN0dWFsbHkgcmVhZCBpcyByZXR1cm5lZC4NCj4gPiArICBJZiB0aGUgcmV0dXJuIHZhbHVlIGlz IGxlc3MgdGhhbiBOdW1iZXJPZkJ5dGVzLCB0aGVuIHRoZSByZXN0IG9wZXJhdGlvbiBmYWlsZWQu DQo+ID4gKyAgSWYgQnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYgTnVt YmVyT2ZCeXRlcyBpcyB6ZXJvLCB0aGVuIHJldHVybiAwLg0KPiA+ICsNCj4gPiArICBAcGFyYW0g IEJ1ZmZlciAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRhdGEgYnVmZmVyIHRvIHN0b3Jl IHRoZSBkYXRhIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiArICBAcGFyYW0gIE51 bWJlck9mQnl0ZXMgICAgVGhlIG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHJlYWQuDQo+ ID4gKw0KPiA+ICsgIEByZXR2YWwgMCAgICAgICAgICAgICAgICBSZWFkIGRhdGEgZmFpbGVkOyBO byBkYXRhIGlzIHRvIGJlIHJlYWQuDQo+ID4gKyAgQHJldHZhbCA+MCAgICAgICAgICAgICAgIFRo ZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgZnJvbSBzZXJpYWwgZGV2aWNlLg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtTZXJpYWxQb3J0UmVhZCAo DQo+ID4gKyAgT1VUIFVJTlQ4ICAqQnVmZmVyLA0KPiA+ICsgIElOICBVSU5UTiAgTnVtYmVyT2ZC eXRlcw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBQb2xscyBhIHNlcmlhbCBkZXZpY2UgdG8gc2VlIGlmIHRoZXJlIGlz IGFueSBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZC4NCj4gPiArDQo+ID4gKyAgUG9sbHMgYSBzZXJp YWwgZGV2aWNlIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQu DQo+ID4gKyAgSWYgdGhlcmUgaXMgZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2Vy aWFsIGRldmljZSwgdGhlbiBUUlVFIGlzIHJldHVybmVkLg0KPiA+ICsgIElmIHRoZXJlIGlzIG5v IGRhdGEgd2FpdGluZyB0byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UsIHRoZW4gRkFM U0UgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICAgICBE YXRhIGlzIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ICsg IEByZXR2YWwgRkFMU0UgICAgICAgICAgICBUaGVyZSBpcyBubyBkYXRhIHdhaXRpbmcgdG8gYmUg cmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0JPT0xF QU4NCj4gPiArRUZJQVBJDQo+ID4gK1NlcmlhbFBvcnRQb2xsICgNCj4gPiArICBWT0lEDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBTZXRzIHRoZSBjb250cm9sIGJpdHMgb24gYSBzZXJpYWwgZGV2aWNlLg0KPiA+ ICsNCj4gPiArICBAcGFyYW0gQ29udHJvbCAgICAgICAgICAgICAgICBTZXRzIHRoZSBiaXRzIG9m IENvbnRyb2wgdGhhdCBhcmUgc2V0dGFibGUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgUkVUVVJO X1NVQ0NFU1MgICAgICAgIFRoZSBuZXcgY29udHJvbCBiaXRzIHdlcmUgc2V0IG9uIHRoZSBzZXJp YWwgZGV2aWNlLg0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX1VOU1VQUE9SVEVEICAgIFRoZSBzZXJp YWwgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24uDQo+ID4gKyAgQHJldHZh bCBSRVRVUk5fREVWSUNFX0VSUk9SICAgVGhlIHNlcmlhbCBkZXZpY2UgaXMgbm90IGZ1bmN0aW9u aW5nIGNvcnJlY3RseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4g K0VGSUFQSQ0KPiA+ICtTZXJpYWxQb3J0U2V0Q29udHJvbCAoDQo+ID4gKyAgSU4gVUlOVDMyICBD b250cm9sDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXRyaWV2ZSB0aGUgc3RhdHVzIG9mIHRo ZSBjb250cm9sIGJpdHMgb24gYSBzZXJpYWwgZGV2aWNlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0g Q29udHJvbCAgICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gcmV0dXJuIHRoZSBjdXJyZW50IGNv bnRyb2wgc2lnbmFscyBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ICsNCj4gPiArICBAcmV0 dmFsIFJFVFVSTl9TVUNDRVNTICAgICAgICBUaGUgY29udHJvbCBiaXRzIHdlcmUgcmVhZCBmcm9t IHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX1VOU1VQUE9SVEVEICAg IFRoZSBzZXJpYWwgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24uDQo+ID4g KyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgVGhlIHNlcmlhbCBkZXZpY2UgaXMgbm90 IGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtSRVRVUk5fU1RB VFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtTZXJpYWxQb3J0R2V0Q29udHJvbCAoDQo+ID4gKyAgT1VU IFVJTlQzMiAgKkNvbnRyb2wNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICAqQ29udHJvbCA9IDA7 DQo+ID4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBTZXRzIHRoZSBiYXVkIHJhdGUsIHJlY2VpdmUgRklGTyBkZXB0aCwgdHJhbnNtaXQv cmVjZWljZSB0aW1lIA0KPiA+ICtvdXQsIHBhcml0eSwNCj4gPiArICBkYXRhIGJpdHMsIGFuZCBz dG9wIGJpdHMgb24gYSBzZXJpYWwgZGV2aWNlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gQmF1ZFJh dGUgICAgICAgICAgIFRoZSByZXF1ZXN0ZWQgYmF1ZCByYXRlLiBBIEJhdWRSYXRlIHZhbHVlIG9m IDAgd2lsbCB1c2UgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2Un cyBkZWZhdWx0IGludGVyZmFjZSBzcGVlZC4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gPiArICBAcGFyYW0gUmV2 ZWl2ZUZpZm9EZXB0aCAgIFRoZSByZXF1ZXN0ZWQgZGVwdGggb2YgdGhlIEZJRk8gb24gdGhlIHJl Y2VpdmUgc2lkZSBvZiB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlh bCBpbnRlcmZhY2UuIEEgUmVjZWl2ZUZpZm9EZXB0aCB2YWx1ZSBvZiAwIHdpbGwgdXNlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGV2aWNlJ3MgZGVmYXVsdCBGSUZPIGRl cHRoLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFs dWUgYWN0dWFsbHkgc2V0Lg0KPiA+ICsgIEBwYXJhbSBUaW1lb3V0ICAgICAgICAgICAgVGhlIHJl cXVlc3RlZCB0aW1lIG91dCBmb3IgYSBzaW5nbGUgY2hhcmFjdGVyIGluIG1pY3Jvc2Vjb25kcy4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGltZW91dCBhcHBsaWVzIHRv IGJvdGggdGhlIHRyYW5zbWl0IGFuZCByZWNlaXZlIHNpZGUgb2YgdGhlDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UuIEEgVGltZW91dCB2YWx1ZSBvZiAwIHdpbGwg dXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IHRpbWUNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG91dCB2YWx1ZS4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91 dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gPiArICBAcGFyYW0gUGFyaXR5ICAgICAg ICAgICAgIFRoZSB0eXBlIG9mIHBhcml0eSB0byB1c2Ugb24gdGhpcyBzZXJpYWwgZGV2aWNlLiBB IFBhcml0eSB2YWx1ZSBvZg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVs dFBhcml0eSB3aWxsIHVzZSB0aGUgZGV2aWNlJ3MgZGVmYXVsdCBwYXJpdHkgdmFsdWUuDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxs eSBzZXQuDQo+ID4gKyAgQHBhcmFtIERhdGFCaXRzICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGRh dGEgYml0cyB0byB1c2Ugb24gdGhlIHNlcmlhbCBkZXZpY2UuIEEgRGF0YUJpdHMNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZhdWxlIG9mIDAgd2lsbCB1c2UgdGhlIGRldmljZSdz IGRlZmF1bHQgZGF0YSBiaXQgc2V0dGluZy4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gPiArICBAcGFyYW0gU3Rv cEJpdHMgICAgICAgICAgIFRoZSBudW1iZXIgb2Ygc3RvcCBiaXRzIHRvIHVzZSBvbiB0aGlzIHNl cmlhbCBkZXZpY2UuIEEgU3RvcEJpdHMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZhbHVlIG9mIERlZmF1bHRTdG9wQml0cyB3aWxsIHVzZSB0aGUgZGV2aWNlJ3MgZGVmYXVsdCBu dW1iZXIgb2YNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgYml0cy4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVh bGx5IHNldC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgICAg IFRoZSBuZXcgYXR0cmlidXRlcyB3ZXJlIHNldCBvbiB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiAr ICBAcmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICAgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9l cyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbi4NCj4gPiArICBAcmV0dmFsIFJFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiAgT25lIG9yIG1vcmUgb2YgdGhlIGF0dHJpYnV0ZXMgaGFzIGFuIHVuc3Vw cG9ydGVkIHZhbHVlLg0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJPUiAgICAgICBU aGUgc2VyaWFsIGRldmljZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NlcmlhbFBvcnRT ZXRBdHRyaWJ1dGVzICgNCj4gPiArICBJTiBPVVQgVUlOVDY0ICAgICAgICAgICAgICAqQmF1ZFJh dGUsDQo+ID4gKyAgSU4gT1VUIFVJTlQzMiAgICAgICAgICAgICAgKlJlY2VpdmVGaWZvRGVwdGgs DQo+ID4gKyAgSU4gT1VUIFVJTlQzMiAgICAgICAgICAgICAgKlRpbWVvdXQsDQo+ID4gKyAgSU4g T1VUIEVGSV9QQVJJVFlfVFlQRSAgICAgKlBhcml0eSwNCj4gPiArICBJTiBPVVQgVUlOVDggICAg ICAgICAgICAgICAqRGF0YUJpdHMsDQo+ID4gKyAgSU4gT1VUIEVGSV9TVE9QX0JJVFNfVFlQRSAg KlN0b3BCaXRzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNT Ow0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVS aXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvDQo+ID4gcnQNCj4gPiBM aWJTYmkudW5pDQo+ID4gYi9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExp YlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG8NCj4gPiBydA0KPiA+IExpYlNiaS51bmkNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uN2IyMmNhYTVhMDkw DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlz Y1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpDQo+ID4gKysrIGFsDQo+ID4gKysr IFBvDQo+ID4gKysrIHJ0TGliU2JpLnVuaQ0KPiA+IEBAIC0wLDAgKzEsMTYgQEANCj4gPiArLy8g LyoqIEBmaWxlDQo+ID4gKy8vIFNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25z b2xlLg0KPiA+ICsvLw0KPiA+ICsvLyBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkg Y29uc29sZS4NCj4gPiArLy8NCj4gPiArLy8gQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jw b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+IA0KPiA+ICsvLyAvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAvLyAvLyAqKi8NCj4gPiArDQo+ID4g Kw0KPiA+ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAgICAgI2xhbmd1YWdl IGVuLVVTICJTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZSINCj4gPiAr DQo+ID4gKyNzdHJpbmcgU1RSX01PRFVMRV9ERVNDUklQVElPTiAgICAgICAgICAjbGFuZ3VhZ2Ug ZW4tVVMgIlNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlLiINCj4gPiAr DQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQ b3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpDQo+ID4gYlMNCj4gPiBiaS51bmkNCj4g PiBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNj VlNlcmlhbFBvcnRMaQ0KPiA+IGJTDQo+ID4gYmkudW5pDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjdiMjJjYWE1YTA5MA0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkv U2VjUGVpUmlzY1ZTZXJpYWxQbw0KPiA+ICsrKyBydA0KPiA+ICsrKyBMaWJTYmkudW5pDQo+ID4g QEAgLTAsMCArMSwxNiBAQA0KPiA+ICsvLyAvKiogQGZpbGUNCj4gPiArLy8gU2VyaWFsIFBvcnQg TGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ID4gKy8vDQo+ID4gKy8vIFNlcmlhbCBQ b3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlLg0KPiA+ICsvLw0KPiA+ICsvLyBDb3B5 cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4gDQo+ID4gKy8vIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50IC8vIC8vICoqLw0KPiA+ICsNCj4gPiArDQo+ID4gKyNzdHJpbmcgU1RSX01PRFVMRV9BQlNU UkFDVCAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlNlcmlhbCBQb3J0IExpYnJhcnkgYmFj a2VkIGJ5IFNCSSBjb25zb2xlIg0KPiA+ICsNCj4gPiArI3N0cmluZyBTVFJfTU9EVUxFX0RFU0NS SVBUSU9OICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNr ZWQgYnkgU0JJIGNvbnNvbGUuIg0KPiA+ICsNCj4gPiAtLQ0KPiA+IDIuMjUuMQ0KDQo=