From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web10.9831.1596729964892593966 for ; Thu, 06 Aug 2020 09:06:05 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=xZccyy7V; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: iufwWBjALh1kQzaIAu7CvbIfX8kA7PQgDXtsSl7ARvNY18GEVottomU4ykpMyVQdBB4RiBoT9F GzBqzZ/EsFSQ== X-IronPort-AV: E=McAfee;i="6000,8403,9704"; a="217181793" X-IronPort-AV: E=Sophos;i="5.75,441,1589266800"; d="scan'208";a="217181793" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2020 09:06:03 -0700 IronPort-SDR: 2pMWTdMnje3PBBW6WYbDpL7JtL2tu1sUy1ZquMre7Y+CBfQdbKohU7ysqhdTLnmNzUZa/sl6fG Kk6kp4lih+uQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,441,1589266800"; d="scan'208";a="275119420" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by fmsmga007.fm.intel.com with ESMTP; 06 Aug 2020 09:06:03 -0700 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 6 Aug 2020 09:06:02 -0700 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 6 Aug 2020 09:06:02 -0700 Received: from FMSEDG002.ED.cps.intel.com (10.1.192.134) by fmsmsx156.amr.corp.intel.com (10.18.116.74) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 6 Aug 2020 09:06:02 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.103) by edgegateway.intel.com (192.55.55.69) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 6 Aug 2020 09:06:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Fe/SYAMcsYsBn1BfCRul5Bkda9ZbKFRPlqOQo+UYmmRM3KWhVBDe/f3BAunIwdCXWtxzVq+1hgyZZr62tkIMcMKM+V6oRsVKyfaEuQ8dtLxuM9zbwih/WrMhMhPOyK3HILUY5ozJ9stw9DhB2EWzye6bB7wRPK9r3tS3xsklpmNbqPMSLnbmHdFQi0A1PVlAx9sFAbVkhvtVnqu+14dPW/nkaLAhXROmQPKm+A0hUsF+reGK1e5xwgEUt9erHoe3VyLvbRQHix/iuf0rYMiqTkmRg+EQhpxijiZfiVzg23pTQRzc8KZXadusCuW8FCvPtjml0A5H5Gjv30G9pZl/iQ== 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-SenderADCheck; bh=Ult024F8Y0Z4q9KG3gGkhcHwyKHppd1td6UKp7PStVI=; b=PfM5BsLHfOwh6GsbrJgnN4gm7f0EJBpztTh1YxtxIvcvNgpGdirSY6oEvfuzoo5yVEurBOm83oOS86L11ogizQYIa4OYsIzRmhsOQq2Xns8r4DHBBcDrgbg/pFkCcAUhwTfvYh69oRM+5boOTBC/0A7SjTOFs5OPiMB2pqOxIMHpk8IeDZkSbzUOOz8whM8HjvD4GOnqDjATV4XvXznS7/hTaRuFBKGykSGJAqMqjcJqyA1jk566GqRNl2grF9OEyHMS3JmhaTU6akyTzRfULLHLse2LNZIYiPMYUgzLUKi92YOb9zHVZcNXrfTdQCwRL3xNlA9VGZwbUZO3/rpuxg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ult024F8Y0Z4q9KG3gGkhcHwyKHppd1td6UKp7PStVI=; b=xZccyy7Vz2DoEN+3+BRUeQpGLZwU8FdRejl7gv0Qnf5k9JN67/Hh4JROSg6KxdJQOOcHwp7fG/uWRUIHzWCgKSOGmsRoDw+x43umoM6Pz36B97sgqN/KWQm+S2dsFPKM8W5Po3R0guHElps1M4bcHoyEw9jBpaXheIaZFSlI3Pc= Received: from MN2PR11MB4461.namprd11.prod.outlook.com (2603:10b6:208:192::29) by MN2PR11MB4582.namprd11.prod.outlook.com (2603:10b6:208:265::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.16; Thu, 6 Aug 2020 16:06:01 +0000 Received: from MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::201e:29f2:a02:c260]) by MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::201e:29f2:a02:c260%4]) with mapi id 15.20.3261.019; Thu, 6 Aug 2020 16:06:00 +0000 From: "Michael D Kinney" To: Michael Kubacki , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "Gao, Liming" Subject: Re: [edk2-devel] [PATCH v1 7/7] FmpDevicePkg/FmpDxe: Improve function parameter validation Thread-Topic: [edk2-devel] [PATCH v1 7/7] FmpDevicePkg/FmpDxe: Improve function parameter validation Thread-Index: AQHWZujznt5/vD74c0eHQOmRqP+4eqkpwSbwgABC/QCAACzlcIAAEs6AgAEC39A= Date: Thu, 6 Aug 2020 16:06:00 +0000 Message-ID: References: <20200731031448.1103-1-michael.kubacki@outlook.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: outlook.com; dkim=none (message not signed) header.d=none;outlook.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [24.19.191.44] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7bb45529-88ad-490c-15df-08d83a229cea x-ms-traffictypediagnostic: MN2PR11MB4582: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: CNSg5lYmaS9GAosE8rzIeFVbGgehcXU9ECqRdM7CnfSN33NOJ1mk70/dUPd3cxoh3Ma3zGZ1i5YovJfxrsmgv84y5txeGADwHGBFzEiZtAZbzpRQYpmGD03s48IssgBUlkE0nsBWnf5QEC/gr7cUGXbxxrs27mTW5m7XCWr+4bzPB9cZO0roZaHTRjVhvDymNCWCMLpDTJHfp2ZKagtgzTTJeSj0t2FXncufQAeuxDPTbsBWTEK/3VqBSNVjUNSrPVWSL4oY1+Veu+oRPTH++OxuQPbBtBKGnhJfj8rxdRV2UAKeIivl+wyS6o4By5VZEYr0I862CcehJdGor7rhnU10ql/92xvHDoFEdqbFr4iBpxPEU4euLQyn6MaH4mz72VNNjnvG6CUt2abGhe9RTA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB4461.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(346002)(376002)(396003)(136003)(366004)(39860400002)(83380400001)(7696005)(30864003)(55016002)(110136005)(966005)(53546011)(26005)(86362001)(6506007)(9686003)(478600001)(52536014)(186003)(316002)(2906002)(5660300002)(71200400001)(107886003)(33656002)(4326008)(8676002)(8936002)(45080400002)(66946007)(66446008)(64756008)(66556008)(66476007)(76116006);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: vhlkKa1SGzJ4L/3ZF5D0DF+v/mesA6YF6YMhWsNbIdjshvmwQU6Fz8hiTVuJnkOf8l+UL55/J42D0zZZV+esAFt4dFt2LlroIqaj/h9VdWym0dk+rD2+tP9EVPWtuknEJzVXkkuDTHJiC3iV/I/sCO4i8dRNzdxnwysRlAslcIbaAiydaNKDkTI5URhoOxj0L8GOlkKm2dSWYErXNGYY43e8ukG/v5zJS+ST5124NOK3BFTsvZy+4mr7gD61NSCzRepTWDIu3conn2F5ZzY0WfIyvkPdT749V7E4H833+SCZ4oGlv9vP17UBJPABfsRxJJ/j1475BuRda1TSKNNlds+M+bWtKKAxUv3B3TCVdI+EsBtNr7ZRl5fOpnfXffrRad0c3sQtXjg1CtmWl9OaI75Hve4XHcQ8ETDB7vXX7dF3Vyy57ZnbFypCrUPQGukFd8xTjUU+pVidZ7gfqif9adRICGjWzTPNauzpwVZA/A8I5MIjYC0X4T5LdiRAcQDP+R1KnzsfaFHkldpLQSwgBrFq2zVOPahP9cORESiI9L+o+T+q5uncLzqGEPIfmGJK3WPQC3VV2pDMWBVsO7seEsDj+QcciBNauYjA+61HEV0CIpECBvlxNU9ySkDlcvBupMSmcnG2hoGnmNmwqcumIQ== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4461.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7bb45529-88ad-490c-15df-08d83a229cea X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Aug 2020 16:06:00.6592 (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: bvJqOHqbKkpM4Ca+LwHaPn9ofE7Mzzk52bfwTZO5ylqzHmNDyy7JGpKGaR6GQbLrjY4PFguoIGSDHXzIH3Fm0BtnXCrEqxPiPJgVZa5yKAM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4582 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TWljaGFlbCwNCg0KVGhlIGRlc2NyaXB0aW9uIG1hdGNoZXMgVUVGSSAyLjcuICBTbyB0aGVyZSBh cHBlYXJzIHRvIGJlIGEgd29yayBpdGVtIHRvIHVwZGF0ZSB0aGUgRk1QDQpmdW5jdGlvbiBkZXNj cmlwdGlvbnMgdG8gdGhlIGxhdGVzdCBVRUZJIDIuOCBzcGVjLiAgDQoNCkkgZG8gcmVjb21tZW5k IHlvdSBkbyBub3QgY2hhbmdlIGFueSBvZiB0aGVzZSBjb21tZW50cyBpbiB0aGUgY3VycmVudCBw YXRjaCBzZXJpZXMuDQpUaGUgdXBkYXRlIHRvIFVFRkkgMi44IGNhbiBiZSBhIG5ldyBCWi4NCg0K VGhlIFVFRkkgU3BlY2lmaWNhdGlvbnMgYWxsb3dzIGFuIGltcGxlbWVudGF0aW9uIHRvIHJldHVy biBhZGRpdGlvbmFsIGVycm9yIHJldHVybiBjb2Rlcw0KdGhhdCBhcmUgbm90IGxpc3RlZCBpbiB0 aGUgQVBJIGRlZmluaXRpb24uDQoNCg0KICBTdGF0dXMgQ29kZXMgUmV0dXJuZWQ6IEEgZGVzY3Jp cHRpb24gb2YgYW55IGNvZGVzIHJldHVybmVkIGJ5IHRoZSBpbnRlcmZhY2UuIFRoZQ0KICAgIHBy b2NlZHVyZSBpcyByZXF1aXJlZCB0byBpbXBsZW1lbnQgYW55IHN0YXR1cyBjb2Rlcw0KICAgIGxp c3RlZCBpbiB0aGlzIHRhYmxlLiBBZGRpdGlvbmFsIGVycm9yIGNvZGVzIG1heSBiZQ0KICAgIHJl dHVybmVkLCBidXQgdGhleSB3aWxsIG5vdCBiZSB0ZXN0ZWQgYnkgc3RhbmRhcmQNCiAgICBjb21w bGlhbmNlIHRlc3RzLCBhbmQgYW55IHNvZnR3YXJlIHRoYXQgdXNlcyB0aGUNCiAgICBwcm9jZWR1 cmUgY2Fubm90IGRlcGVuZCBvbiBhbnkgb2YgdGhlIGV4dGVuZGVkIGVycm9yDQogICAgY29kZXMg dGhhdCBhbiBpbXBsZW1lbnRhdGlvbiBtYXkgcHJvdmlkZS4NCg0KQmVzdCByZWdhcmRzLg0KDQpN aWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWljaGFlbCBLdWJh Y2tpIDxtaWNoYWVsLmt1YmFja2lAb3V0bG9vay5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgQXVn dXN0IDUsIDIwMjAgNTozMSBQTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IEtpbm5leSwg TWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gQ2M6IEdhbywgTGltaW5n IDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFU Q0ggdjEgNy83XSBGbXBEZXZpY2VQa2cvRm1wRHhlOiBJbXByb3ZlIGZ1bmN0aW9uIHBhcmFtZXRl ciB2YWxpZGF0aW9uDQo+IA0KPiBIaSBNaWtlLA0KPiANCj4gVGhlcmUncyBxdWl0ZSBhIGZldyBk aXNjcmVwYW5jaWVzIGF0IHRoZSBtb21lbnQgYmV0d2VlbiBmdW5jdGlvbnMgaW4NCj4gRm1wRHhl IHRoYXQgaW1wbGVtZW50IEVGSV9GSVJNV0FSRV9NQU5BR0VNRU5UX1BST1RPQ09MIGFuZCB0aGUN Cj4gY29ycmVzcG9uZGluZyBkZXNjcmlwdGlvbiBpbiB0aGUgVUVGSSBzcGVjLg0KPiANCj4gRm9y IGV4YW1wbGU6DQo+IA0KPiBVRUZJIFNwZWMgMi44QiAtIEVGSV9GSVJNV0FSRV9NQU5BR0VNRU5U X1BST1RPQ09MLkdldEltYWdlSW5mbygpOg0KPiANCj4gU3RhdHVzIENvZGVzIFJldHVybmVkDQo+ IA0KPiBFRklfU1VDQ0VTUyAgICAgICAgICAgICBUaGUgaW1hZ2UgaW5mb3JtYXRpb24gd2FzIHN1 Y2Nlc3NmdWxseSByZXR1cm5lZC4NCj4gRUZJX0JVRkZFUl9UT09fU01BTEwgICAgVGhlIEltYWdl SW5mbyBidWZmZXIgd2FzIHRvbyBzbWFsbC4gVGhlIGN1cnJlbnQNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgIGJ1ZmZlciBzaXplIG5lZWRlZCB0byBob2xkIHRoZSBpbWFnZShzKQ0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQgaW4gSW1hZ2VJbmZv U2l6ZS4NCj4gRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgSW1hZ2VJbmZvU2l6ZSBpcyBub3QgdG9v IHNtYWxsIGFuZCBJbWFnZUluZm8gaXMNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwu DQo+IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIEltYWdlSW5mb1NpemUgaXMgbm9uLXplcm8gYW5k IERlc2NyaXB0b3JWZXJzaW9uDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBOVUxMLg0K PiBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBJbWFnZUluZm9TaXplIGlzIG5vbi16ZXJvIGFuZCBE ZXNjcmlwdG9yQ291bnQgaXMNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwuDQo+IEVG SV9JTlZBTElEX1BBUkFNRVRFUiAgIEltYWdlSW5mb1NpemUgaXMgbm9uLXplcm8gYW5kIERlc2Ny aXB0b3JTaXplIGlzDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLg0KPiBFRklfSU5W QUxJRF9QQVJBTUVURVIgICBJbWFnZUluZm9TaXplIGlzIG5vbi16ZXJvIGFuZCBQYWNrYWdlVmVy c2lvbiBpcw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTC4NCj4gRUZJX0lOVkFMSURf UEFSQU1FVEVSICAgSW1hZ2VJbmZvU2l6ZSBpcyBub24temVybyBhbmQgUGFja2FnZVZlcnNpb25O YW1lDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBOVUxMLg0KPiBFRklfREVWSUNFX0VS Uk9SICAgICAgICBWYWxpZCBpbmZvcm1hdGlvbiBjb3VsZCBub3QgYmUgcmV0dXJuZWQuDQo+ICAg ICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZSBjb3JydXB0ZWQgaW1hZ2UuDQo+IA0KPiBB Y3R1YWwgLSBGbXBEeGUgLSBHZXRUaGVJbWFnZUluZm8oKToNCj4gDQo+ICAgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgICAgICAgVGhlIGRldmljZSB3YXMgc3VjY2Vzc2Z1bGx5IHVwZGF0 ZWQNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBuZXcg aW1hZ2UuDQo+ICAgIEByZXR2YWwgRUZJX0JVRkZFUl9UT09fU01BTEwgICAgICAgVGhlIEltYWdl SW5mbyBidWZmZXIgd2FzIHRvbyBzbWFsbC4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUaGUgY3VycmVudCBidWZmZXIgc2l6ZQ0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5lZWRlZCB0byBob2xkIHRoZSBpbWFnZShzKQ0KPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGlzIHJldHVybmVkIGlu DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VJbmZvU2l6ZS4N Cj4gICAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgICBJbWFnZUluZm9TaXplIGlz IE5VTEwuDQo+ICAgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICAgICAgVmFsaWQgaW5m b3JtYXRpb24gY291bGQgbm90IGJlDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuZWQuIFBvc3NpYmxlIGNvcnJ1cHRlZCBpbWFnZS4NCj4gDQo+IFRoZXJlJ3Mg Y2FzZXMgc3VjaCBhcyBpbiBHZXRUaGVJbWFnZSgpIHdoZXJlIHRoZSBjb2RlIGRlc2NyaWJlcw0K PiBFRklfSU5WQUxJRF9QQVJBTUVURVIgaXMgcmV0dXJuZWQgYXMgZm9sbG93czoNCj4gDQo+ICAg IEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBUaGUgSW1hZ2Ugd2FzIE5VTEwuDQo+IA0K PiBIb3dldmVyLCB0aGUgaW1wbGVtZW50YXRpb24gd2lsbCBhY3R1YWxseSByZXR1cm4gdGhlIHN0 YXR1cyBjb2RlIHVuZGVyDQo+IG90aGVyIGNvbmRpdGlvbnMgc3VjaCBhcyBhbiBpbnZhbGlkIElt YWdlSW5kZXggb3IgTlVMTCBJbWFnZVNpemUgcG9pbnRlci4NCj4gDQo+IEkgYWdyZWUgdGhlc2Ug c2hvdWxkIGJlIGNsZWFuZWQgdXAgc3VjaCB0aGF0IGltcGxlbWVudGF0aW9uIGFuZCBzcGVjDQo+ IG1hdGNoIGFuZCB0aGUgZGVzY3JpcHRpb25zIGFyZSBhY2N1cmF0ZSwgYnV0IHRoYXQgY291bGQg d2FycmFudCBpdHMgb3duDQo+IHNlcmllcy4NCj4gDQo+IEZvciB0aGlzIHNlcmllcywgaXMgdGhl IGFzayB0byBsZWF2ZSB0aGUgZGVzY3JpcHRpb25zIGFzLWlzPyBJZiBzbywgSQ0KPiBjYW4gZmls ZSBhIEJaIHRvIHJlc29sdmUgdGhlIGNvZGUvc3BlYyBkaXNjcmVwYW5jaWVzLg0KPiANCj4gVGhh bmtzLA0KPiBNaWNoYWVsDQo+IA0KPiBPbiA4LzUvMjAyMCA0OjMwIFBNLCBNaWNoYWVsIEQgS2lu bmV5IHdyb3RlOg0KPiA+IE1pY2hhZWwsDQo+ID4NCj4gPiBUaGF0IGlzIGEgZ29vZCBwb2ludC4g IEkgbWlzc2VkIHRoYXQgYmVoYXZpb3IgaW4gc29tZSBvZiB0aGUgQVBJcy4NCj4gPg0KPiA+IFdo YXQgSSBhbHNvIG1pc3NlZCB3YXMgdGhhdCB0aGVzZSBBUElzIGFyZSBkZWZpbmVkIGluIHRoZSBV RUZJIFNwZWMgYW5kIHRoZQ0KPiA+IGRlc2NyaXB0aW9uIG9mIHRoZSByZXR1cm4gY29kZXMgaXMg ZnJvbSB0aGVyZSBhbmQgc2hvdWxkIG1hdGNoIHRoZSBVRUZJIFNwZWMuDQo+ID4NCj4gPiBUaGUg aW1wbGVtZW50YXRpb24gc2hvdWxkIGJlIGNvbmZvcm1hbnQgd2l0aCB0aGUgVUVGSSBTcGVjLiAg SWYgeW91IG5vdGljZQ0KPiA+IGJlaGF2aW9yIHRoYXQgaXMgbm90IGNvbmZvcm1hbnQsIHRoZW4g d2UgbmVlZCB0byB1cGRhdGUgdGhlIGNvZGUgb3IgcG90ZW50aWFsbHkNCj4gPiB3b3JrIG9uIHNw ZWMgdXBkYXRlcy4NCj4gPg0KPiA+IEZvciB0aGlzIHBhdGNoIHNlcmllcywgbGV04oCZcyBtYWtl IHN1cmUgdGhlIEZpcm13YXJlIE1hbmFnZW1lbnQgUHJvdG9jb2wgc2VydmljZQ0KPiA+IGhlYWRl cnMgbWF0Y2ggdGhlIFVFRkkgU3BlYy4NCj4gPg0KPiA+IE1pa2UNCj4gPg0KPiA+PiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBNaWNoYWVsIEt1YmFja2kgPG1pY2hhZWwu a3ViYWNraUBvdXRsb29rLmNvbT4NCj4gPj4gU2VudDogV2VkbmVzZGF5LCBBdWd1c3QgNSwgMjAy MCAxOjQzIFBNDQo+ID4+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBp bnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+PiBDYzogR2FvLCBMaW1pbmcgPGxp bWluZy5nYW9AaW50ZWwuY29tPg0KPiA+PiBTdWJqZWN0OiBSZTogW1BBVENIIHYxIDcvN10gRm1w RGV2aWNlUGtnL0ZtcER4ZTogSW1wcm92ZSBmdW5jdGlvbiBwYXJhbWV0ZXIgdmFsaWRhdGlvbg0K PiA+Pg0KPiA+PiBIaSBNaWtlLA0KPiA+Pg0KPiA+PiBTb21lIG9mIHRob3NlIGZ1bmN0aW9ucyBj dXJyZW50bHkgcmV0dXJuIEVGSV9TVUNDRVNTIGlmIEltYWdlSW5kZXggaXMNCj4gPj4gaW52YWxp ZC4gRXhhbXBsZToNCj4gPj4gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL2Jsb2Iv bWFzdGVyL0ZtcERldmljZVBrZy9GbXBEeGUvRm1wRHhlLmMjTDg1MQ0KPiA+Pg0KPiA+PiBHaXZl biB0aGUgcmVxdWVzdCB0byB1cGRhdGUgdGhlIEVGSV9JTlZBTElEX1BBUkFNRVRFUiB0ZXh0IGZv ciB0aG9zZQ0KPiA+PiBvdGhlciBmdW5jdGlvbnMsIEknbSBhc3N1bWluZyB5b3UnZCBsaWtlIG1l IHRvIG1ha2UgdGhvc2UgcmV0dXJuDQo+ID4+IEVGSV9JTlZBTElEX1BBUkFNRVRFUiBsaWtlIHdo YXQgR2V0VGhlSW1hZ2UoKSBjdXJyZW50bHkgZG9lcyAtDQo+ID4+IGh0dHBzOi8vZ2l0aHViLmNv bS90aWFub2NvcmUvZWRrMi9ibG9iL21hc3Rlci9GbXBEZXZpY2VQa2cvRm1wRHhlL0ZtcER4ZS5j I0w1NzM/DQo+ID4+DQo+ID4+IFRoYW5rcywNCj4gPj4gTWljaGFlbA0KPiA+Pg0KPiA+PiBPbiA4 LzUvMjAyMCA5OjUxIEFNLCBLaW5uZXksIE1pY2hhZWwgRCB3cm90ZToNCj4gPj4+IEhpIE1pY2hh ZWwsDQo+ID4+Pg0KPiA+Pj4gQSBmZXcgbWlub3IgY29tbWVudHMgaW5jbHVkZWQgYmVsb3cuICBX aXRoIHRob3NlIHVwZGF0ZXMsDQo+ID4+Pg0KPiA+Pj4gUmV2aWV3ZWQtYnY6IE1pY2hhZWwgRCBL aW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+Pj4NCj4gPj4+IE1pa2UNCj4g Pj4+DQo+ID4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBtaWNo YWVsLmt1YmFja2lAb3V0bG9vay5jb20gPG1pY2hhZWwua3ViYWNraUBvdXRsb29rLmNvbT4NCj4g Pj4+PiBTZW50OiBUaHVyc2RheSwgSnVseSAzMCwgMjAyMCA4OjE1IFBNDQo+ID4+Pj4gVG86IGRl dmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4+Pj4gQ2M6IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGlu dGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4N Cj4gPj4+PiBTdWJqZWN0OiBbUEFUQ0ggdjEgNy83XSBGbXBEZXZpY2VQa2cvRm1wRHhlOiBJbXBy b3ZlIGZ1bmN0aW9uIHBhcmFtZXRlciB2YWxpZGF0aW9uDQo+ID4+Pj4NCj4gPj4+PiBGcm9tOiBN aWNoYWVsIEt1YmFja2kgPG1pY2hhZWwua3ViYWNraUBtaWNyb3NvZnQuY29tPg0KPiA+Pj4+DQo+ ID4+Pj4gUkVGOmh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9 Mjg2OQ0KPiA+Pj4+DQo+ID4+Pj4gTWFrZXMgc29tZSBtaW5vciBpbXByb3ZlbWVudHMgdG8gZnVu Y3Rpb24gcGFyYW1ldGVyIHZhbGlkYXRpb24NCj4gPj4+PiBpbiBGbXBEeGUsIGluIHBhcnRpY3Vs YXIgdG8gZXh0ZXJuYWxseSBleHBvc2VkIGZ1bmN0aW9ucyBzdWNoDQo+ID4+Pj4gYXMgdGhvc2Ug dGhhdCBiYWNrIEVGSV9GSVJNV0FSRV9NQU5BR0VNRU5UX1BST1RPQ09MLg0KPiA+Pj4+DQo+ID4+ Pj4gQ2M6IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+Pj4+IENjOiBNaWNo YWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPj4+PiBTaWduZWQt b2ZmLWJ5OiBNaWNoYWVsIEt1YmFja2kgPG1pY2hhZWwua3ViYWNraUBtaWNyb3NvZnQuY29tPg0K PiA+Pj4+IC0tLQ0KPiA+Pj4+ICAgIEZtcERldmljZVBrZy9GbXBEeGUvRm1wRHhlLmMgfCA1NiAr KysrKysrKysrKysrKysrKy0tLQ0KPiA+Pj4+ICAgIEZtcERldmljZVBrZy9GbXBEeGUvRm1wRHhl LmggfCAxMCArKy0tDQo+ID4+Pj4gICAgMiBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCsp LCAxMiBkZWxldGlvbnMoLSkNCj4gPj4+Pg0KPiA+Pj4+IGRpZmYgLS1naXQgYS9GbXBEZXZpY2VQ a2cvRm1wRHhlL0ZtcER4ZS5jIGIvRm1wRGV2aWNlUGtnL0ZtcER4ZS9GbXBEeGUuYw0KPiA+Pj4+ IGluZGV4IGEzZTM0MjU5MTkzNi4uOTU4ZDliMzk0YjcxIDEwMDY0NA0KPiA+Pj4+IC0tLSBhL0Zt cERldmljZVBrZy9GbXBEeGUvRm1wRHhlLmMNCj4gPj4+PiArKysgYi9GbXBEZXZpY2VQa2cvRm1w RHhlL0ZtcER4ZS5jDQo+ID4+Pj4gQEAgLTI3OCw2ICsyNzgsMTEgQEAgUG9wdWxhdGVEZXNjcmlw dG9yICgNCj4gPj4+PiAgICAgIEVGSV9TVEFUVVMgIFN0YXR1czsNCj4gPj4+PiAgICAgIFVJTlQz MiAgICAgIERlcGVuZGVuY2llc1NpemU7DQo+ID4+Pj4NCj4gPj4+PiArICBpZiAoUHJpdmF0ZSA9 PSBOVUxMKSB7DQo+ID4+Pj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRm1wRHhlKCVzKTog UG9wdWxhdGVEZXNjcmlwdG9yKCkgLSBQcml2YXRlIGlzIE5VTEwuXG4iLCBtSW1hZ2VJZE5hbWUp KTsNCj4gPj4+PiArICAgIHJldHVybjsNCj4gPj4+PiArICB9DQo+ID4+Pj4gKw0KPiA+Pj4+ICAg ICAgaWYgKFByaXZhdGUtPkRlc2NyaXB0b3JQb3B1bGF0ZWQpIHsNCj4gPj4+PiAgICAgICAgcmV0 dXJuOw0KPiA+Pj4+ICAgICAgfQ0KPiA+Pj4+IEBAIC00MjksNyArNDM0LDcgQEAgUG9wdWxhdGVE ZXNjcmlwdG9yICgNCj4gPj4+PiAgICAgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAg ICAgVGhlIGRldmljZSB3YXMgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgd2l0aCB0aGUgbmV3IGltYWdl Lg0KPiA+Pj4+ICAgICAgQHJldHZhbCBFRklfQlVGRkVSX1RPT19TTUFMTCAgICAgICBUaGUgSW1h Z2VJbmZvIGJ1ZmZlciB3YXMgdG9vIHNtYWxsLiBUaGUgY3VycmVudCBidWZmZXIgc2l6ZQ0KPiA+ Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkZWQgdG8gaG9s ZCB0aGUgaW1hZ2UocykgaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQgaW4gSW1hZ2VJbmZvU2l6ZS4N Cj4gPj4+PiAtICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAgIEltYWdlSW5mb1Np emUgaXMgTlVMTC4NCj4gPj4+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAg IEEgcmVxdWlyZWQgcG9pbnRlciBpcyBOVUxMLg0KPiA+Pj4+ICAgICAgQHJldHZhbCBFRklfREVW SUNFX0VSUk9SICAgICAgICAgICBWYWxpZCBpbmZvcm1hdGlvbiBjb3VsZCBub3QgYmUgcmV0dXJu ZWQuIFBvc3NpYmxlIGNvcnJ1cHRlZCBpbWFnZS4NCj4gPj4+Pg0KPiA+Pj4+ICAgICoqLw0KPiA+ Pj4+IEBAIC00NTEsNiArNDU2LDEyIEBAIEdldFRoZUltYWdlSW5mbyAoDQo+ID4+Pj4NCj4gPj4+ PiAgICAgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiA+Pj4+DQo+ID4+Pj4gKyAgaWYgKFRoaXMg PT0gTlVMTCkgew0KPiA+Pj4+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZtcER4ZSglcyk6 IEdldEltYWdlSW5mbygpIC0gVGhpcyBpcyBOVUxMLlxuIiwgbUltYWdlSWROYW1lKSk7DQo+ID4+ Pj4gKyAgICBTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+Pj4gKyAgICBnb3Rv IGNsZWFudXA7DQo+ID4+Pj4gKyAgfQ0KPiA+Pj4+ICsNCj4gPj4+PiAgICAgIC8vDQo+ID4+Pj4g ICAgICAvLyBSZXRyaWV2ZSB0aGUgcHJpdmF0ZSBjb250ZXh0IHN0cnVjdHVyZQ0KPiA+Pj4+ICAg ICAgLy8NCj4gPj4+PiBAQCAtNTM2LDcgKzU0Nyw3IEBAIEdldFRoZUltYWdlSW5mbyAoDQo+ID4+ Pj4gICAgICBAcmV0dmFsIEVGSV9CVUZGRVJfVE9PX1NNQUxMICAgVGhlIGJ1ZmZlciBzcGVjaWZp ZWQgYnkgSW1hZ2VTaXplIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZQ0KPiA+Pj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLiBUaGUgY3VycmVudCBidWZmZXIgc2l6 ZSBuZWVkZWQgdG8gaG9sZCB0aGUgaW1hZ2UgaXMgcmV0dXJuZWQNCj4gPj4+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBJbWFnZVNpemUuDQo+ID4+Pj4gLSAgQHJldHZh bCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIFRoZSBJbWFnZSB3YXMgTlVMTC4NCj4gPj4+PiArICBA cmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQSByZXF1aXJlZCBwb2ludGVyIGlzIE5VTEwg b3IgSW1hZ2VJbmRleCBpcyBpbnZhbGlkLg0KPiA+Pj4+ICAgICAgQHJldHZhbCBFRklfTk9UX0ZP VU5EICAgICAgICAgIFRoZSBjdXJyZW50IGltYWdlIGlzIG5vdCBjb3BpZWQgdG8gdGhlIGJ1ZmZl ci4NCj4gPj4+PiAgICAgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICBUaGUgb3BlcmF0 aW9uIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4+Pj4gICAgICBAcmV0dmFsIEVGSV9TRUNVUklUWV9W SU9MQVRJT04gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGR1ZSB0byBhbiBh dXRoZW50aWNhdGlvbiBmYWlsdXJlLg0KPiA+Pj4+IEBAIC01NjEsNiArNTcyLDEyIEBAIEdldFRo ZUltYWdlICgNCj4gPj4+Pg0KPiA+Pj4+ICAgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4+ Pj4NCj4gPj4+PiArICBpZiAoVGhpcyA9PSBOVUxMKSB7DQo+ID4+Pj4gKyAgICBERUJVRyAoKERF QlVHX0VSUk9SLCAiRm1wRHhlKCVzKTogR2V0SW1hZ2UoKSAtIFRoaXMgaXMgTlVMTC5cbiIsIG1J bWFnZUlkTmFtZSkpOw0KPiA+Pj4+ICsgICAgU3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVS Ow0KPiA+Pj4+ICsgICAgZ290byBjbGVhbnVwOw0KPiA+Pj4+ICsgIH0NCj4gPj4+PiArDQo+ID4+ Pj4gICAgICAvLw0KPiA+Pj4+ICAgICAgLy8gUmV0cmlldmUgdGhlIHByaXZhdGUgY29udGV4dCBz dHJ1Y3R1cmUNCj4gPj4+PiAgICAgIC8vDQo+ID4+Pj4gQEAgLTYxNSw3ICs2MzIsOCBAQCBHZXRU aGVJbWFnZSAoDQo+ID4+Pj4gICAgICBAcGFyYW1baW5dICAgSW1hZ2UgICAgICAgICAgICAgICAg IFBvaW50ZXIgdG8gdGhlIGltYWdlLg0KPiA+Pj4+ICAgICAgQHBhcmFtW2luXSAgIEltYWdlU2l6 ZSAgICAgICAgICAgICBTaXplIG9mIHRoZSBpbWFnZS4NCj4gPj4+PiAgICAgIEBwYXJhbVtpbl0g ICBBZGRpdGlvbmFsSGVhZGVyU2l6ZSAgU2l6ZSBvZiBhbnkgaGVhZGVycyB0aGF0IGNhbm5vdCBi ZSBjYWxjdWxhdGVkIGJ5IHRoaXMgZnVuY3Rpb24uDQo+ID4+Pj4gLSAgQHBhcmFtW291dF0gIFBh eWxvYWRTaXplDQo+ID4+Pj4gKyAgQHBhcmFtW291dF0gIFBheWxvYWRTaXplICAgICAgICAgICBB biBvcHRpb25hbCBwb2ludGVyIHRvIGEgVUlOVE4gdGhhdCBob2xkcyB0aGUgc2l6ZSBvZiB0aGUg cGF5bG9hZA0KPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlt YWdlIHNpemUgbWludXMgaGVhZGVycykNCj4gPj4+Pg0KPiA+Pj4+ICAgICAgQHJldHZhbCAgIU5V TEwgIFZhbGlkIHBvaW50ZXIgdG8gdGhlIGhlYWRlci4NCj4gPj4+PiAgICAgIEByZXR2YWwgIE5V TEwgICBTdHJ1Y3R1cmUgaXMgYmFkIGFuZCBwb2ludGVyIGNhbm5vdCBiZSBmb3VuZC4NCj4gPj4+ PiBAQCAtNjI2LDcgKzY0NCw3IEBAIEdldEZtcEhlYWRlciAoDQo+ID4+Pj4gICAgICBJTiAgQ09O U1QgRUZJX0ZJUk1XQVJFX0lNQUdFX0FVVEhFTlRJQ0FUSU9OICAqSW1hZ2UsDQo+ID4+Pj4gICAg ICBJTiAgQ09OU1QgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZVNpemUs DQo+ID4+Pj4gICAgICBJTiAgQ09OU1QgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBZGRpdGlvbmFsSGVhZGVyU2l6ZSwNCj4gPj4+PiAtICBPVVQgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqUGF5bG9hZFNpemUNCj4gPj4+PiArICBPVVQgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqUGF5bG9hZFNpemUgT1BUSU9OQUwN Cj4gPj4+PiAgICAgICkNCj4gPj4+PiAgICB7DQo+ID4+Pj4gICAgICAvLw0KPiA+Pj4+IEBAIC02 NDAsNyArNjU4LDEwIEBAIEdldEZtcEhlYWRlciAoDQo+ID4+Pj4gICAgICAgIHJldHVybiBOVUxM Ow0KPiA+Pj4+ICAgICAgfQ0KPiA+Pj4+DQo+ID4+Pj4gLSAgKlBheWxvYWRTaXplID0gSW1hZ2VT aXplIC0gKHNpemVvZiAoSW1hZ2UtPk1vbm90b25pY0NvdW50KSArIEltYWdlLT5BdXRoSW5mby5I ZHIuZHdMZW5ndGggKyBBZGRpdGlvbmFsSGVhZGVyU2l6ZSk7DQo+ID4+Pj4gKyAgaWYgKFBheWxv YWRTaXplICE9IE5VTEwpIHsNCj4gPj4+PiArICAgICpQYXlsb2FkU2l6ZSA9IEltYWdlU2l6ZSAt IChzaXplb2YgKEltYWdlLT5Nb25vdG9uaWNDb3VudCkgKyBJbWFnZS0+QXV0aEluZm8uSGRyLmR3 TGVuZ3RoICsgQWRkaXRpb25hbEhlYWRlclNpemUpOw0KPiA+Pj4+ICsgIH0NCj4gPj4+PiArDQo+ ID4+Pj4gICAgICByZXR1cm4gKFZPSUQgKikoKFVJTlQ4ICopSW1hZ2UgKyBzaXplb2YgKEltYWdl LT5Nb25vdG9uaWNDb3VudCkgKyBJbWFnZS0+QXV0aEluZm8uSGRyLmR3TGVuZ3RoICArIEFkZGl0 aW9uYWxIZWFkZXJTaXplKTsNCj4gPj4+PiAgICB9DQo+ID4+Pj4NCj4gPj4+PiBAQCAtNjYzLDYg KzY4NCwxMCBAQCBHZXRBbGxIZWFkZXJTaXplICgNCj4gPj4+PiAgICB7DQo+ID4+Pj4gICAgICBV SU5UMzIgIENhbGN1bGF0ZWRTaXplOw0KPiA+Pj4+DQo+ID4+Pj4gKyAgaWYgKEltYWdlID09IE5V TEwpIHsNCj4gPj4+DQo+ID4+PiBUaGlzIGlzIGFuIGludGVybmFsIGhlbHBlciBmdW5jdGlvbi4g IElmIEltYWdlIGlzIGV2ZXIgTlVMTCwgaXQgbXVzdCBiZSBhIGJ1ZyBpbiB0aGUNCj4gPj4+IEZt cER4ZSBkcml2ZXIuICBTaG91bGQgd2UgZG8gbW9yZSB0aGFuIGp1c3QgcmV0dXJuIDA/ICBQZXJo YXBzIGEgREVCVUdfRVJST1IgbWVzc2FnZSB0b28/DQo+ID4+Pg0KPiA+Pj4+ICsgICAgcmV0dXJu IDA7DQo+ID4+Pj4gKyAgfQ0KPiA+Pj4+ICsNCj4gPj4+PiAgICAgIENhbGN1bGF0ZWRTaXplID0g c2l6ZW9mIChJbWFnZS0+TW9ub3RvbmljQ291bnQpICsNCj4gPj4+PiAgICAgICAgICAgICAgICAg ICAgICAgQWRkaXRpb25hbEhlYWRlclNpemUgKw0KPiA+Pj4+ICAgICAgICAgICAgICAgICAgICAg ICBJbWFnZS0+QXV0aEluZm8uSGRyLmR3TGVuZ3RoOw0KPiA+Pj4+IEBAIC02OTgsNyArNzIzLDcg QEAgR2V0QWxsSGVhZGVyU2l6ZSAoDQo+ID4+Pj4NCj4gPj4+PiAgICAgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgICBUaGUgaW1hZ2Ugd2FzIHN1Y2Nlc3NmdWxseSBjaGVja2VkLg0KPiA+ Pj4+ICAgICAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gaXMg YWJvcnRlZC4NCj4gPj4+PiAtICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgVGhlIElt YWdlIHdhcyBOVUxMLg0KPiA+Pj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBB IHJlcXVpcmVkIHBvaW50ZXIgaXMgTlVMTC4NCj4gPj4+DQo+ID4+PiBUaGlzIGZ1bmN0aW9uIGFs c28gdXNlcyBJbWFnZUluZGV4LiAgU2ltaWxhciB0byB1cGRhdGVzIGFib3ZlLCBJIHRoaW5rIHRo aXMNCj4gPj4+IEByZXR2YWwgbGluZSBzaG91bGQgYmU6DQo+ID4+Pg0KPiA+Pj4gICAgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBBIHJlcXVpcmVkIHBvaW50ZXIgaXMgTlVMTCBvciBJ bWFnZUluZGV4IGlzIGludmFsaWQuDQo+ID4+Pg0KPiA+Pj4+ICAgICAgQHJldHZhbCBFRklfVU5T VVBQT1JURUQgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4NCj4gPj4+PiAg ICAgIEByZXR2YWwgRUZJX1NFQ1VSSVRZX1ZJT0xBVElPTiBUaGUgb3BlcmF0aW9uIGNvdWxkIG5v dCBiZSBwZXJmb3JtZWQgZHVlIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUuDQo+ID4+Pj4N Cj4gPj4+PiBAQCAtNzQzLDYgKzc2OCwxMiBAQCBDaGVja1RoZUltYWdlICgNCj4gPj4+PiAgICAg ICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPj4+PiAgICAgIH0NCj4gPj4+Pg0KPiA+Pj4+ ICsgIGlmIChUaGlzID09IE5VTEwpIHsNCj4gPj4+PiArICAgIERFQlVHICgoREVCVUdfRVJST1Is ICJGbXBEeGUoJXMpOiBDaGVja0ltYWdlKCkgLSBUaGlzIGlzIE5VTEwuXG4iLCBtSW1hZ2VJZE5h bWUpKTsNCj4gPj4+PiArICAgIFN0YXR1cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4+ PiArICAgIGdvdG8gY2xlYW51cDsNCj4gPj4+PiArICB9DQo+ID4+Pj4gKw0KPiA+Pj4+ICAgICAg Ly8NCj4gPj4+PiAgICAgIC8vIFJldHJpZXZlIHRoZSBwcml2YXRlIGNvbnRleHQgc3RydWN0dXJl DQo+ID4+Pj4gICAgICAvLw0KPiA+Pj4+IEBAIC05NzgsNyArMTAwOSw3IEBAIENoZWNrVGhlSW1h Z2UgKA0KPiA+Pj4+DQo+ID4+Pj4gICAgICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAg VGhlIGRldmljZSB3YXMgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgd2l0aCB0aGUgbmV3IGltYWdlLg0K PiA+Pj4+ICAgICAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAgICAgIFRoZSBvcGVyYXRpb24g aXMgYWJvcnRlZC4NCj4gPj4+PiAtICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgVGhl IEltYWdlIHdhcyBOVUxMLg0KPiA+Pj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS ICBBIHJlcXVpcmVkIHBvaW50ZXIgaXMgTlVMTC4NCj4gPj4+DQo+ID4+PiBUaGlzIGZ1bmN0aW9u IGFsc28gdXNlcyBJbWFnZUluZGV4LiAgU2ltaWxhciB0byB1cGRhdGVzIGFib3ZlLCBJIHRoaW5r IHRoaXMNCj4gPj4+IEByZXR2YWwgbGluZSBzaG91bGQgYmU6DQo+ID4+Pg0KPiA+Pj4gICAgIEBy ZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBBIHJlcXVpcmVkIHBvaW50ZXIgaXMgTlVMTCBv ciBJbWFnZUluZGV4IGlzIGludmFsaWQuDQo+ID4+Pg0KPiA+Pj4+ICAgICAgQHJldHZhbCBFRklf VU5TVVBQT1JURUQgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4NCj4gPj4+ PiAgICAgIEByZXR2YWwgRUZJX1NFQ1VSSVRZX1ZJT0xBVElPTiBUaGUgb3BlcmF0aW9uIGNvdWxk IG5vdCBiZSBwZXJmb3JtZWQgZHVlIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUuDQo+ID4+ Pj4NCj4gPj4+PiBAQCAtMTAyNiw2ICsxMDU3LDEyIEBAIFNldFRoZUltYWdlICgNCj4gPj4+PiAg ICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPj4+PiAgICAgIH0NCj4gPj4+Pg0KPiA+ Pj4+ICsgIGlmIChUaGlzID09IE5VTEwpIHsNCj4gPj4+PiArICAgIERFQlVHICgoREVCVUdfRVJS T1IsICJGbXBEeGUoJXMpOiBTZXRUaGVJbWFnZSgpIC0gVGhpcyBpcyBOVUxMLlxuIiwgbUltYWdl SWROYW1lKSk7DQo+ID4+Pj4gKyAgICBTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ ID4+Pj4gKyAgICBnb3RvIGNsZWFudXA7DQo+ID4+Pj4gKyAgfQ0KPiA+Pj4+ICsNCj4gPj4+PiAg ICAgIC8vDQo+ID4+Pj4gICAgICAvLyBSZXRyaWV2ZSB0aGUgcHJpdmF0ZSBjb250ZXh0IHN0cnVj dHVyZQ0KPiA+Pj4+ICAgICAgLy8NCj4gPj4+PiBAQCAtMTM4Miw2ICsxNDE5LDExIEBAIEZtcER4 ZUxvY2tFdmVudE5vdGlmeSAoDQo+ID4+Pj4gICAgICBFRklfU1RBVFVTICAgICAgICAgICAgICAg ICAgICAgICAgU3RhdHVzOw0KPiA+Pj4+ICAgICAgRklSTVdBUkVfTUFOQUdFTUVOVF9QUklWQVRF X0RBVEEgICpQcml2YXRlOw0KPiA+Pj4+DQo+ID4+Pj4gKyAgaWYgKENvbnRleHQgPT0gTlVMTCkg ew0KPiA+Pj4+ICsgICAgQVNTRVJUIChDb250ZXh0ICE9IE5VTEwpOw0KPiA+Pj4+ICsgICAgcmV0 dXJuOw0KPiA+Pj4+ICsgIH0NCj4gPj4+PiArDQo+ID4+Pj4gICAgICBQcml2YXRlID0gKEZJUk1X QVJFX01BTkFHRU1FTlRfUFJJVkFURV9EQVRBICopQ29udGV4dDsNCj4gPj4+Pg0KPiA+Pj4+ICAg ICAgaWYgKCFQcml2YXRlLT5GbXBEZXZpY2VMb2NrZWQpIHsNCj4gPj4+PiBkaWZmIC0tZ2l0IGEv Rm1wRGV2aWNlUGtnL0ZtcER4ZS9GbXBEeGUuaCBiL0ZtcERldmljZVBrZy9GbXBEeGUvRm1wRHhl LmgNCj4gPj4+PiBpbmRleCAzMDc1NGRlYTQ5NWUuLjRkZmVjMzE2YTU1OCAxMDA2NDQNCj4gPj4+ PiAtLS0gYS9GbXBEZXZpY2VQa2cvRm1wRHhlL0ZtcER4ZS5oDQo+ID4+Pj4gKysrIGIvRm1wRGV2 aWNlUGtnL0ZtcER4ZS9GbXBEeGUuaA0KPiA+Pj4+IEBAIC0zLDcgKzMsNyBAQA0KPiA+Pj4+ICAg ICAgaW1hZ2Ugc3RvcmVkIGluIGEgZmlybXdhcmUgZGV2aWNlIHdpdGggcGxhdGZvcm0gYW5kIGZp cm13YXJlIGRldmljZSBzcGVjaWZpYw0KPiA+Pj4+ICAgICAgaW5mb3JtYXRpb24gcHJvdmlkZWQg dGhyb3VnaCBQQ0RzIGFuZCBsaWJyYXJpZXMuDQo+ID4+Pj4NCj4gPj4+PiAtICBDb3B5cmlnaHQg KGMpIDIwMTYsIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+ID4+Pj4gKyAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uPEJSPg0KPiA+ Pj4+ICAgICAgQ29weXJpZ2h0IChjKSAyMDE4IC0gMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+Pj4+DQo+ID4+Pj4gICAgICBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+Pj4+IEBAIC0xMzIsNyArMTMyLDcg QEAgRGV0ZWN0VGVzdEtleSAoDQo+ID4+Pj4gICAgICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICAgICAgIFRoZSBkZXZpY2Ugd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkIHdpdGggdGhlIG5l dyBpbWFnZS4NCj4gPj4+PiAgICAgIEByZXR2YWwgRUZJX0JVRkZFUl9UT09fU01BTEwgICAgICAg VGhlIEltYWdlSW5mbyBidWZmZXIgd2FzIHRvbyBzbWFsbC4gVGhlIGN1cnJlbnQgYnVmZmVyIHNp emUNCj4gPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZGVk IHRvIGhvbGQgdGhlIGltYWdlKHMpIGluZm9ybWF0aW9uIGlzIHJldHVybmVkIGluIEltYWdlSW5m b1NpemUuDQo+ID4+Pj4gLSAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgICBJbWFn ZUluZm9TaXplIGlzIE5VTEwuDQo+ID4+Pj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgICAgICBBIHJlcXVpcmVkIHBvaW50ZXIgaXMgTlVMTC4NCj4gPj4+PiAgICAgIEByZXR2YWwg RUZJX0RFVklDRV9FUlJPUiAgICAgICAgICAgVmFsaWQgaW5mb3JtYXRpb24gY291bGQgbm90IGJl IHJldHVybmVkLiBQb3NzaWJsZSBjb3JydXB0ZWQgaW1hZ2UuDQo+ID4+Pj4NCj4gPj4+PiAgICAq Ki8NCj4gPj4+PiBAQCAtMTY2LDcgKzE2Niw3IEBAIEdldFRoZUltYWdlSW5mbyAoDQo+ID4+Pj4g ICAgICBAcmV0dmFsIEVGSV9CVUZGRVJfVE9PX1NNQUxMICAgVGhlIGJ1ZmZlciBzcGVjaWZpZWQg YnkgSW1hZ2VTaXplIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZQ0KPiA+Pj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLiBUaGUgY3VycmVudCBidWZmZXIgc2l6ZSBu ZWVkZWQgdG8gaG9sZCB0aGUgaW1hZ2UgaXMgcmV0dXJuZWQNCj4gPj4+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbiBJbWFnZVNpemUuDQo+ID4+Pj4gLSAgQHJldHZhbCBF RklfSU5WQUxJRF9QQVJBTUVURVIgIFRoZSBJbWFnZSB3YXMgTlVMTC4NCj4gPj4+PiArICBAcmV0 dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQSByZXF1aXJlZCBwb2ludGVyIGlzIE5VTEwgb3Ig SW1hZ2VJbmRleCBpcyBpbnZhbGlkLg0KPiA+Pj4+ICAgICAgQHJldHZhbCBFRklfTk9UX0ZPVU5E ICAgICAgICAgIFRoZSBjdXJyZW50IGltYWdlIGlzIG5vdCBjb3BpZWQgdG8gdGhlIGJ1ZmZlci4N Cj4gPj4+PiAgICAgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICBUaGUgb3BlcmF0aW9u IGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4+Pj4gICAgICBAcmV0dmFsIEVGSV9TRUNVUklUWV9WSU9M QVRJT04gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGR1ZSB0byBhbiBhdXRo ZW50aWNhdGlvbiBmYWlsdXJlLg0KPiA+Pj4+IEBAIC0xOTgsNyArMTk4LDcgQEAgR2V0VGhlSW1h Z2UgKA0KPiA+Pj4+DQo+ID4+Pj4gICAgICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAg VGhlIGltYWdlIHdhcyBzdWNjZXNzZnVsbHkgY2hlY2tlZC4NCj4gPj4+PiAgICAgIEByZXR2YWwg RUZJX0FCT1JURUQgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGFib3J0ZWQuDQo+ID4+Pj4g LSAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIFRoZSBJbWFnZSB3YXMgTlVMTC4NCj4g Pj4+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQSByZXF1aXJlZCBwb2ludGVy IGlzIE5VTEwuDQo+ID4+Pg0KPiA+Pj4gVGhpcyBmdW5jdGlvbiBhbHNvIHVzZXMgSW1hZ2VJbmRl eC4gIFNpbWlsYXIgdG8gdXBkYXRlcyBhYm92ZSwgSSB0aGluayB0aGlzDQo+ID4+PiBAcmV0dmFs IGxpbmUgc2hvdWxkIGJlOg0KPiA+Pj4NCj4gPj4+ICAgICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiAgQSByZXF1aXJlZCBwb2ludGVyIGlzIE5VTEwgb3IgSW1hZ2VJbmRleCBpcyBpbnZh bGlkLg0KPiA+Pj4NCj4gPj4+PiAgICAgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICBU aGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4+Pj4gICAgICBAcmV0dmFsIEVGSV9T RUNVUklUWV9WSU9MQVRJT04gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGR1 ZSB0byBhbiBhdXRoZW50aWNhdGlvbiBmYWlsdXJlLg0KPiA+Pj4+DQo+ID4+Pj4gQEAgLTI1NCw3 ICsyNTQsNyBAQCBDaGVja1RoZUltYWdlICgNCj4gPj4+Pg0KPiA+Pj4+ICAgICAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSBkZXZpY2Ugd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVk IHdpdGggdGhlIG5ldyBpbWFnZS4NCj4gPj4+PiAgICAgIEByZXR2YWwgRUZJX0FCT1JURUQgICAg ICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGFib3J0ZWQuDQo+ID4+Pj4gLSAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgIFRoZSBJbWFnZSB3YXMgTlVMTC4NCj4gPj4+PiArICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQSByZXF1aXJlZCBwb2ludGVyIGlzIE5VTEwuDQo+ID4+ Pg0KPiA+Pj4gVGhpcyBmdW5jdGlvbiBhbHNvIHVzZXMgSW1hZ2VJbmRleC4gIFNpbWlsYXIgdG8g dXBkYXRlcyBhYm92ZSwgSSB0aGluayB0aGlzDQo+ID4+PiBAcmV0dmFsIGxpbmUgc2hvdWxkIGJl Og0KPiA+Pj4NCj4gPj4+ICAgICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQSByZXF1 aXJlZCBwb2ludGVyIGlzIE5VTEwgb3IgSW1hZ2VJbmRleCBpcyBpbnZhbGlkLg0KPiA+Pj4NCj4g Pj4+PiAgICAgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICBUaGUgb3BlcmF0aW9uIGlz IG5vdCBzdXBwb3J0ZWQuDQo+ID4+Pj4gICAgICBAcmV0dmFsIEVGSV9TRUNVUklUWV9WSU9MQVRJ T04gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGR1ZSB0byBhbiBhdXRoZW50 aWNhdGlvbiBmYWlsdXJlLg0KPiA+Pj4+DQo+ID4+Pj4gLS0NCj4gPj4+PiAyLjI3LjAud2luZG93 cy4xDQo+ID4+Pg0KPiA+DQo+ID4gDQo+ID4NCg==