From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id E5DE0D814ED for ; Wed, 14 Feb 2024 17:16:21 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=zzxG/HXBYiCTcbv62aG3Jfk867Nk2InvbIS/CYLUr0A=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1707930980; v=1; b=gZPnOF5FK39Ri8g+1apIWaNC13Y01A2IW6GDUrc+1acMEqle8qnIEu7IklYfFSrbROYCegVH +gfw4lLNyk/LdoqHb+4qPvzYu4mBBKfTHJM3cKCDbplJJjI0JVeoT5ROcvK277EBwvDnmxLoUcl f9vEl5EHjv7aBAQ1FPCx6iPk= X-Received: by 127.0.0.2 with SMTP id f7uFYY7687511x2trX2XsgQy; Wed, 14 Feb 2024 09:16:20 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) by mx.groups.io with SMTP id smtpd.web10.46585.1707930979966906774 for ; Wed, 14 Feb 2024 09:16:20 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10984"; a="2114539" X-IronPort-AV: E=Sophos;i="6.06,160,1705392000"; d="scan'208";a="2114539" X-Received: from orviesa010.jf.intel.com ([10.64.159.150]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Feb 2024 09:16:19 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,160,1705392000"; d="scan'208";a="3325108" X-Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orviesa010.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 14 Feb 2024 09:16:18 -0800 X-Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 14 Feb 2024 09:16:18 -0800 X-Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Wed, 14 Feb 2024 09:16:18 -0800 X-Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.101) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Wed, 14 Feb 2024 09:16:17 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VEcew8uBIiOJ0MIkZkfTEf/VUpF2oBY0fCIF/DCVO7XQ3Gi33PTluBeOiWnDLd5S+C3QixQW88MCghjMDiKlRXYdvShrESaVyYMR5LsIWLB725Ab3Cf9yXT1TFgjmXlZOZCZBvvPMWXbliVaLbzMmjLCC6iN88hyUfZpxRILZVLjUkbRfgA0CIFDHEKR6ZYRvd8gmyzSQ/T9Az70P/zMb51pCW3RUyob1rQFv9Y+dxHROcEOsvSJWGl2E0sGSjmyVsIZ9MN4DO109+NwR0hkmhvMcujLvqnDJYF9J7KnIYG/ZvPHhn91x/Ioi1b5QQLecfZMynlrL7EebwqcZiWIEw== 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=AUWmpFZesLVPvTp1ljeJeBPS3KPVyxRd4EO48h69S+o=; b=AaNdZWn8ylL88peKF8ss8f9V9hOMm+rwm+009phAzNdyau74+LnQE1XJ1DJX6w63PwM7WoTxr2KzW6aayzxCgmUu6bQgr18L0q37m9gcqf8RgTTeGIqzhcYn1XTZQ89s4IuWvMIdlDrfx4U5N8QVAYQSLw15ggJyYNFjVik96e6r1l3kXXuLotqhkzc9cp6HD5TcHaY0empmVuuSHH+EKesFUSTCeLpgd+e45PqxYyCXffgjCjqhn1K+P220HyF9WY87jXiB7nJX/1zR4TH0MBEXATspun1dTEboif/vmC/yvG4oa/vFcY4t7KGQ9KSWHnC2AJlDBAcf4UVQFbW77A== 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 X-Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by CH0PR11MB8189.namprd11.prod.outlook.com (2603:10b6:610:18d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.39; Wed, 14 Feb 2024 17:16:15 +0000 X-Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::7e42:1633:d0a6:9c00]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::7e42:1633:d0a6:9c00%6]) with mapi id 15.20.7292.026; Wed, 14 Feb 2024 17:16:15 +0000 From: "Michael D Kinney" To: Leif Lindholm , Ard Biesheuvel CC: "devel@edk2.groups.io" , Rebecca Cran , Liming Gao , "Feng, Bob C" , "Chen, Christine" , "Michael Kubacki" , "Kinney, Michael D" Subject: Re: [edk2-devel] [Patch 1/1] BaseTools/Scripts/PatchCheck: Error if commit modifies multiple packages Thread-Topic: [edk2-devel] [Patch 1/1] BaseTools/Scripts/PatchCheck: Error if commit modifies multiple packages Thread-Index: AQHaXuQqx7J44iJzj0WXPiKrQX7he7EJbFEAgACQikCAAALSgIAACUgAgAAJDOA= Date: Wed, 14 Feb 2024 17:16:15 +0000 Message-ID: References: <20240214011751.2529-1-michael.d.kinney@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|CH0PR11MB8189:EE_ x-ms-office365-filtering-correlation-id: f9642a23-3ae9-42b9-de3e-08dc2d80a6e2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: ytze6cJPPplA272j6Sty4NinyewJPL7Dlxq9f6Ls5J6PoVqJtT95pMlLwSNaR0wAPmy8hUZd5wPSPnUVtwsjg/n7acFbB2cwYDRFS+ks8lBdnpoP1UIxsNUmVlwwvif5AXlfqGv7zao5tcmtO7RTkncJy0BSD64USo0NMZpMF9CNSBkuE6wqvuPPTeLm7S34DbtK0ZWxviri2YbsVQlH5yKT1B+tKe/LsnQEof0wJSoD7IuxZ3+tCY8xTePlF3j7L2jRbn3U3hLnHd+8s30MdrfKQzps3z3Y9P3iMNNuHbOGblHeohrrxf1XsSTa/zDy0VoC3mBdIA8aEmOomMe3GG6pl5fhNCOhgKtemJUndjpWSIExr0wWWIU4RceFe5ztsdXWJG/ZzpbI52pwc9U7ZdYc3w7X4wkmHNO5cfcQcZiuySE5ggv4H/h16Jl8CSaUyW5r+nbjF4QEHEqHxbw/FTQgEDQNjwY+6YmGUnCyOAwUkZVCxR0duvMQYX8ezO5B6pfD+yZYzd+cV1rao8HRAafQYXk7LWrVOiHckbTZjuw0C6r8l1k07B7rLmYiaM9Tv7by9Sm03vjDGG4MDroYvntFxlkBctkZLSmSENXYeU3uDEVdAkNpQ9BK3AIPBpliKmoGB7tUit/DSeMh2LxX8A== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UStid0h5YXQyZUgyVlV0NFl2T2x0OGJJKzFOK0YwanZQaWdCS1VKQ0FNb001?= =?utf-8?B?NE9Oay9GV1grY2RMOG54ZlNQaW15Z2NEK3FjbUw5VitsMitUSDQ2UkFxM3ZR?= =?utf-8?B?M1ZpL29ucUZ5cm12dFB6bDQ4TVZINStUQ21HcW1Vc1g5azIzc3gwZWRSNDZ3?= =?utf-8?B?NGpjR29MbXVkcE96K1RXSXJrNSszNnRZNjBTU3RHOWI1YUlDOENhamU0ekc0?= =?utf-8?B?RDFxVDZZSW9Wa3ZhaWJ1OWwyMkpremR6WTl6QjRkb3lhUnV4Y1pEQ2h1Uk80?= =?utf-8?B?azBWYk03RjZSc1hKb0VhYXpObENuajNYakpqK3NkNVM3eDk4dWMyS0M2S2tI?= =?utf-8?B?RncraXlCbzl6YTdnYkVjbXNjUFgrVnJ3QTVuSmRNNmE1cVNaWDZOR04wL2VS?= =?utf-8?B?QlZUYWc3b0hXRk8weDlFYTRydXNNS2hMK0o0UTA0anFlUHdnc0FWVzMwUFcx?= =?utf-8?B?WnFYa0paV01ldUYrdGtvSjZkVURxSnowTFI1Z1F1NW5KVmVCcm5FSmMwWElG?= =?utf-8?B?OFBMdDNyRVVqVVM4V1p4dzc3MllqSklKZ21xS2hxR0V5QUhKbUZaU1BxY0Zn?= =?utf-8?B?MXdLbHBLNll2OWlCb3g0N1crSWY0TTFQKytnVHZxTmhTQmRiSUJkQzNpeFB6?= =?utf-8?B?bFJFRmUwNWRLM3dVQ2g4MVFLMjJZaTRvcnJjUTJob0p0NFhBNHdGUzREbzFP?= =?utf-8?B?cHUrN1IyR2ZibXR1SUpJZWwzdFljOVAyaURWTlUzRVM2Mm55d2t3Z2t3Nks1?= =?utf-8?B?ZVJmUjRHYU5RZGtySHpPTUFiQlIvS2g4UnVmQVYyUTU5c2V5Z25lMFVUUWN3?= =?utf-8?B?di83ZDZhMzJRb1FYK2d5U2wrQUtyRXZFME4wZ0pOZGdRcjBXbTJ6USsySDVu?= =?utf-8?B?U2VuL1R2Q1oxWkZRNVg5NUxiMXdaZlJUS1hkRFg4UVRrK2o1SUtRS2RJb2s5?= =?utf-8?B?TEJHZ09hK2N5UDFpeGxFVnZwZWp3SWwvemZJS25YKzdPbTl3MXBuS25LVFp1?= =?utf-8?B?c2p1RjYvM2tXeStMYmlXWFpuUVd2cktTZHR5UEFsTkpQRWhmZHhub1hRYWd1?= =?utf-8?B?QmduaGZDUzZCb0RkODZCcDJraWRIcHpEN3ZaeWE4NkNEd0p6Vnc3M1Jab3NF?= =?utf-8?B?ZHIyUGtrMVl4QWNFVDZkNDdvVUJPcStod20vd3RQMzNxMGt2cHIxQ09LM0JE?= =?utf-8?B?NlFmd1RBWWNzWXRwL2Q3Y0tsSjJzUjhxZzlKS1l3Wkg2YXJSNytYTE5PdVFM?= =?utf-8?B?MDVNV0Mrcnk1Y3VscnNpYnpYTWJtbHVsYVczYmVYZnVNc1dmQm5MYUxxMmw5?= =?utf-8?B?NUVPbm5RRDdyMmZuT0tWVVJoR3ZKUko5cVNuZkxScldMNEpFd2MwWDdCRVNi?= =?utf-8?B?TGlhSkMrbmNFYTRxMkIwMWRvSTFxU1U5UkQ2UExqWlk4VUVCUm9jN0pmQU10?= =?utf-8?B?Mk0vNUZxMzVvZ3cwWnV2TUsrbGRXYWRmQjl3enBRa3lPOE1CTkxjQ3dNSVg0?= =?utf-8?B?bzlUbkIvWnBPUE5xNlZQa3U2bHZ0U0ZOSXp6ZGFEZ2hSSWZqMHMxcldkN1Nh?= =?utf-8?B?ekxHT3ZaZkxSME1MVGVlZC95T1czamFYWlhnN0FKQkdMYkdsSUE0YkkrT0o1?= =?utf-8?B?aG1ua0Fha3BzZFZwRytTWDVIaWxWdnBGdWZMZGJuZ3d5cnArcjJTRWluVTRn?= =?utf-8?B?VEI5MHkyYldWVitsNDYxNTFRaVVWSUN0NEJqemg2aWRUbC9VNWk2bCtOa0Fy?= =?utf-8?B?U1JIckZLK1VlTkdRQWZUNFRQcU5QdldOWElLdGhhNzU4MUNMU0xweGRpODBN?= =?utf-8?B?OWt2MnBjODN1V2luSkNGUUZpTEJKc2RGK0VkV1ZYZnBTSEtQb0I5d2I1MEhm?= =?utf-8?B?SWxReDVhWmVWMnpXamViZzJuWU9EcnFkMDBlUGNzRlJxR2JLSWNrSHlqeG1Z?= =?utf-8?B?L0kxMFFnc0p1WWpGaXlpeXNGQ25qdGRFTWt2Y0h4cjFLNmVMd1IwNVNwV3hu?= =?utf-8?B?dlNnUnJrNldKVC81MGdDMUxmRVlTYnJkdmd5YmVpaHRTOWJKQkxsQmUwNVA0?= =?utf-8?B?UFptV3BuNnlqUjFTcjQxQVlrd2tvMERPWG1uWkZ0R1JSbEFmMmswT21INGdj?= =?utf-8?B?ak94K1NEdTdqODZubGFvem9mUWNTc2oxaDJPTHc4MXNYTVptNnNwYXBFYjdD?= =?utf-8?B?Ync9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9642a23-3ae9-42b9-de3e-08dc2d80a6e2 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Feb 2024 17:16:15.8127 (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: GdlpVv19VmdqpqLjKJIAtK2wkGK7zgVhN/2Sd8+m2R1gpI1J8gW95kmXhbK+1MuyFAAh1hUAjalqSEAz8J3uD2H+YAX76Ms1ENT2XM7is+4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR11MB8189 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,michael.d.kinney@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: TTvwWg3vXHPau5ynBYXFajStx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=gZPnOF5F; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") SGkgQXJkIGFuZCBMZWlmLA0KDQpUb2RheSBpbiBDSSB3ZSBkbyBub3QgaGF2ZSBmaW5lIGdyYWlu IGNvbnRyb2wgdG8gaWdub3JlIHNwZWNpZmljDQpDSSBjaGVjayBmYWlsdXJlcyB3aGVuIG1lcmdp bmcuDQoNCkNJIGNoZWNrcyBjYW4gZWl0aGVyIGJlIGluZm9ybWF0aXZlIG9ubHkgaW4gdGhlIGxv ZyBvciBibG9ja2luZy4NCg0KRm9yIGNhc2VzIHdoZXJlIGEgY29tbWl0IHJlYWxseSBzaG91bGQg YmUgYnJva2VuIHVwIGludG8gbXVsdGlwbGUNCmNvbW1pdHMsIHRoZSBpbmZvcm1hdGl2ZSBhcHBy b2FjaCBpbiBhIGxvZyBjYW4gYmUgZWFzaWx5IG1pc3NlZCANCmJ5IGF1dGhvcnMvcmV2aWV3ZXJz L21haW50YWluZXJzLg0KDQpGb3IgdGhlIHN1Z2dlc3Rpb24gdG8gb3ZlcnJpZGUgYSBDSSBjaGVj aywgd2Ugd291bGQgbmVlZCBhIHdheSANCnRvIHJlLXJ1biBDSSB3aXRoIGlucHV0IGZyb20gYSBt YWludGFpbmVyIHRvIHJlbGF4IHNwZWNpZmljIENJDQpjaGVjayhzKS4gIFRoZSBkZWZhdWx0IGNv dWxkIGJlIGFsbCBjaGVja3MgZW5hYmxlZC4gU29tZSBjaGVja3MNCmNhbiBiZSBlbmFibGVkL2Rp c2FibGVkIGF0IHRoZSBwYWNrYWdlIHNjb3BlIHRocm91Z2ggY2kueWFtbCANCmZpbGUgc2V0dGlu Z3MuIFRoaXMgc3BlY2lmaWMgY2hlY2sgaXMgZm9yIHRoZSBjb250ZW50cyBvZiBvbmUNCm9mIG1v cmUgY29tbWl0cyB1bmRlciByZXZpZXcsIHNvIHRoZSBjaS55YW1sIGF0IHBhY2thZ2Ugc2NvcGUN CmRvZXMgbm90IGFwcGx5Lg0KDQpBIGNvdXBsZSBpZGVhcw0KDQoxKSBNYWtlIHRoaXMgaW5pdGlh bCB2ZXJzaW9uIG9mIHRoaXMgY2hlY2sgaW5mb3JtYXRpdmUgb25seSBhbmQNCiAgIGZpZ3VyZSBv dXQgaG93IHRvIG1ha2UgdGhlIHJlc3VsdHMgbW9yZSB2aXNpYmxlIHRvIHRoZSANCiAgIGF1dGhv ci9yZXZpZXdlcnMvbWFpbnRhaW5lcnMuDQoyKSBJbnZlc3RpZ2F0ZSBhIG1lY2hhbmlzbSBmb3Ig YSBtYWludGFpbmVyIHRvIGRpc2FibGUgYSBzcGVjaWZpYw0KICAgY2hlY2sgYW5kIHJlLXJ1biBD SSB3aXRoIHRoYXQgY2hlY2sgZGlzYWJsZWQuDQogICBhKSBQZXJoYXBzIGEgZmxhZyBpbiB0aGUg Y29tbWl0IG1lc3NhZ2UNCiAgIGIpIFBlcmhhcHMgYSBsYWJlbCBpbiB0aGUgUFINCg0KSXQgd291 bGQgYWxzbyBiZSBoZWxwZnVsIGlmIGEgZmV3IGV4YW1wbGVzIGZyb20gdGhlIGVkazIgY29tbWl0 DQpoaXN0b3J5IHdoZXJlIHRoaXMgcHJvcG9zZWQgQ0kgY2hlY2sgZXh0ZW5zaW9uIHdvdWxkIHJl cG9ydCBhIA0KZmFpbHVyZSBhbmQgaXQgd291bGQgbm90IGJlIHBvc3NpYmxlIHRvIHJlb3JnYW5p emUgdGhlIGNvbW1pdHMgaW50bw0KYSBwYXNzaW5nIGNvbmRpdGlvbi4gVGhhdCB3b3VsZCBoZWxw IHN1cHBvcnQgdGhlIGhhcmQgcmVxdWlyZW1lbnQNCmZvciB0aGUgbmVlZCB0byBieXBhc3MgdGhl IGNoZWNrLg0KDQpCZXN0IHJlZ2FyZHMsDQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBMZWlmIExpbmRob2xtIDxxdWljX2xsaW5kaG9sQHF1aWNpbmMuY29t Pg0KPiBTZW50OiBXZWRuZXNkYXksIEZlYnJ1YXJ5IDE0LCAyMDI0IDg6MzIgQU0NCj4gVG86IEFy ZCBCaWVzaGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+OyBLaW5uZXksIE1pY2hhZWwgRA0KPiA8bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgUmVi ZWNjYSBDcmFuIDxyZWJlY2NhQGJzZGlvLmNvbT47IExpbWluZyBHYW8NCj4gPGdhb2xpbWluZ0Bi eW9zb2Z0LmNvbS5jbj47IEZlbmcsIEJvYiBDIDxib2IuYy5mZW5nQGludGVsLmNvbT47IENoZW4s DQo+IENocmlzdGluZSA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+OyBNaWNoYWVsIEt1YmFja2kNCj4g PG1pa3ViYWNrQGxpbnV4Lm1pY3Jvc29mdC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZl bF0gW1BhdGNoIDEvMV0gQmFzZVRvb2xzL1NjcmlwdHMvUGF0Y2hDaGVjazoNCj4gRXJyb3IgaWYg Y29tbWl0IG1vZGlmaWVzIG11bHRpcGxlIHBhY2thZ2VzDQo+IA0KPiBPbiAyMDI0LTAyLTE0IDE1 OjU5LCBBcmQgQmllc2hldXZlbCB3cm90ZToNCj4gPiAoY2MgTGVpZikNCj4gPg0KPiA+IE9uIFdl ZCwgMTQgRmViIDIwMjQgYXQgMTY6NTEsIEtpbm5leSwgTWljaGFlbCBEDQo+ID4gPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPiB3cm90ZToNCj4gPj4NCj4gPj4gSGkgQXJkLA0KPiA+Pg0KPiA+ PiBQbGVhc2UgcmV2aWV3IHRoZSBhbmFseXNpcyBhbmQgcHJvcG9zYWwgaW4gdGhlIEJaIGFuZCBw cm92aWRlDQo+ID4+IGFsdGVybmF0ZSBwcm9wb3NhbHMgZm9yIHRoZSBydWxlcy4NCj4gPj4NCj4g Pg0KPiA+IEhpIE1pa2UsDQo+ID4NCj4gPiBJIHRoaW5rIHRoZSBsb2dpYyBpcyBmaW5lIGluIHBy aW5jaXBsZS4gQnV0IEkgZG8gaGF2ZSBhIHByb2JsZW0gd2l0aA0KPiBhDQo+ID4gcmlnaWQgYXBw bGljYXRpb24gb2YgdGhpcyBsb2dpYyBpbiB0aGUgR2l0SHViIENJIHdvcmtmbG93LiBBcyBhDQo+ ID4gcGFja2FnZSBtYWludGFpbmVyLCBJIGhhdmUgdG8gYmFsYW5jZSB0aGlzIHJlcXVpcmVtZW50 IGFnYWluc3Qgb3RoZXINCj4gPiByZXF1aXJlbWVudHMsIHN1Y2ggYXMgYmlzZWN0LWFiaWxpdHks IHNvIGlmIHRoaXMgY2hhbmdlIHJlbW92ZXMgbXkNCj4gPiBhYmlsaXR5IHRvIG92ZXJyaWRlIHRo aXMgZGVjaXNpb24sIEkgc3Ryb25nbHkgb2JqZWN0IHRvIGl0Lg0KPiANCj4gSSBhZ3JlZS4NCj4g SSB0aGluayBpdCdzIHJlYWxseSBnb29kIHRvIGhhdmUgdGhpcyB0ZXN0LCBhbmQgSSBhZ3JlZSB3 aXRoIHRoaXMNCj4gZ3VpZGVsaW5lLCBidXQgbWFpbnRhaW5lcnMgbmVlZCB0aGUgYWJpbGl0eSB0 byBvdmVycmlkZSBmb3IgdGhlIHNtYWxsDQo+IHN1YnNldCBvZiBjYXNlcyB3aGVyZSB0aGUgZ3Vp ZGVsaW5lIGNyZWF0ZXMgbW9yZSBwcm9ibGVtcyB0aGFuIGl0DQo+IHNvbHZlcy4NCj4gDQo+IFJl Z2FyZHMsDQo+IA0KPiBMZWlmDQo+IA0KPiA+IFRoYW5rcywNCj4gPiBBcmQuDQo+ID4NCj4gPg0K PiA+DQo+ID4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4gRnJvbTogQXJkIEJp ZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4NCj4gPj4+IFNlbnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5 IDEzLCAyMDI0IDExOjEyIFBNDQo+ID4+PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IEtpbm5l eSwgTWljaGFlbCBEDQo+ID4+PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4+PiBD YzogUmViZWNjYSBDcmFuIDxyZWJlY2NhQGJzZGlvLmNvbT47IExpbWluZyBHYW8NCj4gPj4+IDxn YW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5j b20+Ow0KPiBDaGVuLA0KPiA+Pj4gQ2hyaXN0aW5lIDx5dXdlaS5jaGVuQGludGVsLmNvbT47IE1p Y2hhZWwgS3ViYWNraQ0KPiA+Pj4gPG1pa3ViYWNrQGxpbnV4Lm1pY3Jvc29mdC5jb20+DQo+ID4+ PiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQYXRjaCAxLzFdIEJhc2VUb29scy9TY3JpcHRz L1BhdGNoQ2hlY2s6DQo+ID4+PiBFcnJvciBpZiBjb21taXQgbW9kaWZpZXMgbXVsdGlwbGUgcGFj a2FnZXMNCj4gPj4+DQo+ID4+PiBPbiBXZWQsIDE0IEZlYiAyMDI0IGF0IDAyOjE4LCBNaWNoYWVs IEQgS2lubmV5DQo+ID4+PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+IHdyb3RlOg0KPiA+ Pj4+DQo+ID4+Pj4gUkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcu Y2dpP2lkPTQ2NzkNCj4gPj4+Pg0KPiA+Pj4+IFVwZGF0ZSBQYXRjaENoZWNrLnB5IHRvIGV2YWx1 YXRlIGFsbCB0aGUgZmlsZXMgbW9kaWZpZWQgaW4NCj4gPj4+PiBlYWNoIGNvbW1pdCBhbmQgZ2Vu ZXJhdGUgYW4gZXJyb3IgaWY6DQo+ID4+Pj4gKiBBIHNpbmdsZSBjb21taXQgbW9kaWZpZXMgZmls ZXMgaW4gbXVsdGlwbGUgcGFja2FnZXMNCj4gPj4+PiAqIEEgc2luZ2xlIGNvbW1pdCBtb2RpZmll cyBmaWxlcyBpbiBtdWx0aXBsZSBub24tcGFja2FnZSBkaXJzDQo+ID4+Pj4gKiBBIHNpbmdsZSBj b21taXQgbW9kaWZpZXMgZmlsZXMgaW4gYm90aCBhIHBhY2thZ2UgYW5kIGENCj4gPj4+PiAgICBu b24tcGFja2FnZSBkaXIuDQo+ID4+Pj4NCj4gPj4+PiBNb2RpZmljYXRpb25zIHRvIGZpbGVzIGlu IHRoZSByb290IG9mIHRoZSByZXBvc2l0b3J5IGFyZSBub3QNCj4gPj4+PiBldmFsdWF0ZWQuDQo+ ID4+Pj4NCj4gPj4+PiBUaGUgc2V0IG9mIHBhY2thZ2VzIGFyZSBmb3VuZCBieSBzZWFyY2ggZm9y IERFQyBmaWxlcyBpbiB0aGUNCj4gPj4+PiByZXBvc2l0b3J5LiBUaGUgbGlzdCBvZiBERUMgZmls ZXMgaW4gdGhlIHJlcG9zaXRvcnkgaXMgY29sbGVjdGVkDQo+ID4+Pj4gd2l0aCB0aGUgZm9sbG93 aW5nIGdpdCBjb21tYW5kOg0KPiA+Pj4+DQo+ID4+Pj4gICAgZ2l0IGxzLWZpbGVzICouZGVjDQo+ ID4+Pj4NCj4gPj4+PiBUaGUgc2V0IG9mIGZpbGVzIGFkZGVkL21vZGlmaWVkIGJ5IGVhY2ggY29t bWl0IGlzIGZvdW5kIHVzaW5nDQo+ID4+Pj4gdGhlIGZvbGxvd2luZyBnaXQgY29tbWFuZDoNCj4g Pj4+Pg0KPiA+Pj4+ICAgIGdpdCBkaWZmLXRyZWUgLS1uby1jb21taXQtaWQgLS1uYW1lLW9ubHkg LS1kaWZmLWZpbHRlcj1BTSAtcg0KPiA+Pj4gPGNvbW1pdD4NCj4gPj4+Pg0KPiA+Pj4+IFRoZSBz ZXQgb2YgZmlsZXMgZGVsZXRlZCBieSBlYWNoIGNvbW1pdCBpcyBmb3VuZCB1c2luZyB0aGUNCj4g Pj4+PiBmb2xsb3dpbmcgZ2l0IGNvbW1hbmQ6DQo+ID4+Pj4NCj4gPj4+PiAgICBnaXQgZGlmZi10 cmVlIC0tbm8tY29tbWl0LWlkIC0tbmFtZS1vbmx5IC0tZGlmZi1maWx0ZXI9RCAtcg0KPiA+Pj4g PGNvbW1pdD4NCj4gPj4+Pg0KPiA+Pj4+IENjOiBSZWJlY2NhIENyYW4gPHJlYmVjY2FAYnNkaW8u Y29tPg0KPiA+Pj4+IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+ ID4+Pj4gQ2M6IEJvYiBGZW5nIDxib2IuYy5mZW5nQGludGVsLmNvbT4NCj4gPj4+PiBDYzogWXV3 ZWkgQ2hlbiA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+DQo+ID4+Pj4gQ2M6IE1pY2hhZWwgS3ViYWNr aSA8bWlrdWJhY2tAbGludXgubWljcm9zb2Z0LmNvbT4NCj4gPj4+PiBTaWduZWQtb2ZmLWJ5OiBN aWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPj4+DQo+ID4+ PiBXaWxsIHRoaXMgdHJpZ2dlciBwcmUtbWVyZ2UgQ0kgZmFpbHVyZXMgaWYgdGhlIHBhdGNoIHRv dWNoZXMgbW9yZQ0KPiB0aGFuDQo+ID4+PiBvbmUgcGFja2FnZT8NCj4gPj4+DQo+ID4+PiBJZiBz bywgSSB3aWxsIG5lZWQgYW4gb3B0LW91dC9vdmVycmlkZSBmb3IgdGhpcy4NCj4gPj4+DQo+ID4+ Pg0KPiA+Pj4+IC0tLQ0KPiA+Pj4+ICAgQmFzZVRvb2xzL1NjcmlwdHMvUGF0Y2hDaGVjay5weSB8 IDQ5DQo+ID4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPj4+PiAgIDEg ZmlsZSBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspDQo+ID4+Pj4NCj4gPj4+PiBkaWZmIC0tZ2l0 IGEvQmFzZVRvb2xzL1NjcmlwdHMvUGF0Y2hDaGVjay5weQ0KPiA+Pj4gYi9CYXNlVG9vbHMvU2Ny aXB0cy9QYXRjaENoZWNrLnB5DQo+ID4+Pj4gaW5kZXggMTY3NWRjYmQ3MzIxLi45ODhmMTUyZTM4 ZDcgMTAwNzU1DQo+ID4+Pj4gLS0tIGEvQmFzZVRvb2xzL1NjcmlwdHMvUGF0Y2hDaGVjay5weQ0K PiA+Pj4+ICsrKyBiL0Jhc2VUb29scy9TY3JpcHRzL1BhdGNoQ2hlY2sucHkNCj4gPj4+PiBAQCAt NjY1LDYgKzY2NSw3IEBAIGNsYXNzIENoZWNrR2l0Q29tbWl0czoNCj4gPj4+PiAgICAgICAiIiIN Cj4gPj4+Pg0KPiA+Pj4+ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXZfc3BlYywgbWF4X2Nv dW50KToNCj4gPj4+PiArICAgICAgICBkZWNfZmlsZXMgPSBzZWxmLnJlYWRfZGVjX2ZpbGVzX2Zy b21fZ2l0KCkNCj4gPj4+PiAgICAgICAgICAgY29tbWl0cyA9IHNlbGYucmVhZF9jb21taXRfbGlz dF9mcm9tX2dpdChyZXZfc3BlYywNCj4gPj4+IG1heF9jb3VudCkNCj4gPj4+PiAgICAgICAgICAg aWYgbGVuKGNvbW1pdHMpID09IDEgYW5kIFZlcmJvc2UubGV2ZWwgPg0KPiBWZXJib3NlLk9ORUxJ TkU6DQo+ID4+Pj4gICAgICAgICAgICAgICBjb21taXRzID0gWyByZXZfc3BlYyBdDQo+ID4+Pj4g QEAgLTY4MSw5ICs2ODIsNTcgQEAgY2xhc3MgQ2hlY2tHaXRDb21taXRzOg0KPiA+Pj4+ICAgICAg ICAgICAgICAgc2VsZi5vayAmPSBFbWFpbEFkZHJlc3NDaGVjayhlbWFpbCwgJ0NvbW1pdHRlcicp Lm9rDQo+ID4+Pj4gICAgICAgICAgICAgICBwYXRjaCA9IHNlbGYucmVhZF9wYXRjaF9mcm9tX2dp dChjb21taXQpDQo+ID4+Pj4gICAgICAgICAgICAgICBzZWxmLm9rICY9IENoZWNrT25lUGF0Y2go Y29tbWl0LCBwYXRjaCkub2sNCj4gPj4+PiArICAgICAgICAgICAgc2VsZi5vayAmPSBzZWxmLmNo ZWNrX3BhcmVudF9wYWNrYWdlcyAoZGVjX2ZpbGVzLA0KPiA+Pj4gY29tbWl0KQ0KPiA+Pj4+ICsN Cj4gPj4+PiAgICAgICAgICAgaWYgbm90IGNvbW1pdHM6DQo+ID4+Pj4gICAgICAgICAgICAgICBw cmludCgiQ291bGRuJ3QgZmluZCBjb21taXQgbWF0Y2hpbmc6DQo+ID4+PiAne30nIi5mb3JtYXQo cmV2X3NwZWMpKQ0KPiA+Pj4+DQo+ID4+Pj4gKyAgICBkZWYgZ2V0X3BhcmVudF9wYWNrYWdlcyhz ZWxmLCBkZWNfZmlsZXMsIGNvbW1pdCwgZmlsdGVyKToNCj4gPj4+PiArICAgICAgICBmaWxlbGlz dCA9IHNlbGYucmVhZF9maWxlc19tb2RpZmllZF9mcm9tX2dpdCAoY29tbWl0LA0KPiA+Pj4gZmls dGVyKQ0KPiA+Pj4+ICsgICAgICAgIHBhcmVudHMgPSBzZXQoKQ0KPiA+Pj4+ICsgICAgICAgIGZv ciBmaWxlIGluIGZpbGVsaXN0Og0KPiA+Pj4+ICsgICAgICAgICAgICBkZWNfZm91bmQgPSBGYWxz ZQ0KPiA+Pj4+ICsgICAgICAgICAgICBmb3IgZGVjX2ZpbGUgaW4gZGVjX2ZpbGVzOg0KPiA+Pj4+ ICsgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5jb21tb25wYXRoKFtkZWNfZmlsZSwgZmlsZV0p Og0KPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgIGRlY19mb3VuZCA9IFRydWUNCj4gPj4+PiAr ICAgICAgICAgICAgICAgICAgICBwYXJlbnRzLmFkZChkZWNfZmlsZSkNCj4gPj4+PiArICAgICAg ICAgICAgaWYgbm90IGRlY19mb3VuZCBhbmQgb3MucGF0aC5kaXJuYW1lIChmaWxlKToNCj4gPj4+ PiArICAgICAgICAgICAgICAgICMgTm8gREVDIGZpbGUgZm91bmQgYW5kIGZpbGUgaXMgaW4gYSBz dWJkaXINCj4gPj4+PiArICAgICAgICAgICAgICAgICMgQ292ZXJzIEJhc2VUb29scywgLmdpdGh1 YiwgLmF6dXJlcGlwZWxpbmVzLA0KPiA+Pj4gLnB5dG9vbA0KPiA+Pj4+ICsgICAgICAgICAgICAg ICAgcGFyZW50cy5hZGQoZmlsZS5zcGxpdCgnLycpWzBdKQ0KPiA+Pj4+ICsgICAgICAgIHJldHVy biBsaXN0KHBhcmVudHMpDQo+ID4+Pj4gKw0KPiA+Pj4+ICsgICAgZGVmIGNoZWNrX3BhcmVudF9w YWNrYWdlcyhzZWxmLCBkZWNfZmlsZXMsIGNvbW1pdCk6DQo+ID4+Pj4gKyAgICAgICAgbW9kaWZp ZWQgPSBzZWxmLmdldF9wYXJlbnRfcGFja2FnZXMgKGRlY19maWxlcywgY29tbWl0LA0KPiA+Pj4g J0FNJykNCj4gPj4+PiArICAgICAgICBpZiBsZW4gKG1vZGlmaWVkKSA+IDE6DQo+ID4+Pj4gKyAg ICAgICAgICAgIHByaW50KCJUaGUgY29tbWl0IGFkZHMvbW9kaWZpZXMgZmlsZXMgaW4gbXVsdGlw bGUNCj4gPj4+IHBhY2thZ2VzOlxuICoiLA0KPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAnXG4g KiAnLmpvaW4obW9kaWZpZWQpKQ0KPiA+Pj4+ICsgICAgICAgICAgICBzZWxmLm9rID0gRmFsc2UN Cj4gPj4+PiArICAgICAgICBkZWxldGVkID0gc2VsZi5nZXRfcGFyZW50X3BhY2thZ2VzIChkZWNf ZmlsZXMsIGNvbW1pdCwNCj4gJ0QnKQ0KPiA+Pj4+ICsgICAgICAgIGlmIGxlbiAoZGVsZXRlZCkg PiAxOg0KPiA+Pj4+ICsgICAgICAgICAgICBwcmludCgiVGhlIGNvbW1pdCBkZWxldGVzIGZpbGVz IGZyb20gbXVsdGlwbGUNCj4gPj4+IHBhY2thZ2VzOlxuICoiLA0KPiA+Pj4+ICsgICAgICAgICAg ICAgICAgICAnXG4gKiAnLmpvaW4oZGVsZXRlZCkpDQo+ID4+Pj4gKyAgICAgICAgICAgIHNlbGYu b2sgPSBGYWxzZQ0KPiA+Pj4+ICsgICAgICAgIHJldHVybiBzZWxmLm9rDQo+ID4+Pj4gKw0KPiA+ Pj4+ICsgICAgZGVmIHJlYWRfZGVjX2ZpbGVzX2Zyb21fZ2l0KHNlbGYpOg0KPiA+Pj4+ICsgICAg ICAgICMgcnVuIGdpdCBscy1maWxlcyAqLmRlYw0KPiA+Pj4+ICsgICAgICAgIG91dCA9IHNlbGYu cnVuX2dpdCgnbHMtZmlsZXMnLCAnKi5kZWMnKQ0KPiA+Pj4+ICsgICAgICAgICMgcmV0dXJuIGxp c3Qgb2YgLmRlYyBmaWxlcw0KPiA+Pj4+ICsgICAgICAgIHRyeToNCj4gPj4+PiArICAgICAgICAg ICAgcmV0dXJuIG91dC5zcGxpdCgpDQo+ID4+Pj4gKyAgICAgICAgZXhjZXB0Og0KPiA+Pj4+ICsg ICAgICAgICAgICByZXR1cm4gW10NCj4gPj4+PiArDQo+ID4+Pj4gKyAgICBkZWYgcmVhZF9maWxl c19tb2RpZmllZF9mcm9tX2dpdChzZWxmLCBjb21taXQsIGZpbHRlcik6DQo+ID4+Pj4gKyAgICAg ICAgIyBydW4gZ2l0IGRpZmYtdHJlZSAtLW5vLWNvbW1pdC1pZCAtLW5hbWUtb25seSAtcg0KPiA8 Y29tbWl0Pg0KPiA+Pj4+ICsgICAgICAgIG91dCA9IHNlbGYucnVuX2dpdCgnZGlmZi10cmVlJywg Jy0tbm8tY29tbWl0LWlkJywgJy0tDQo+IG5hbWUtDQo+ID4+PiBvbmx5JywNCj4gPj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgJy0tZGlmZi1maWx0ZXI9JyArIGZpbHRlciwgJy1yJywN Cj4gY29tbWl0KQ0KPiA+Pj4+ICsgICAgICAgIHRyeToNCj4gPj4+PiArICAgICAgICAgICAgcmV0 dXJuIG91dC5zcGxpdCgpDQo+ID4+Pj4gKyAgICAgICAgZXhjZXB0Og0KPiA+Pj4+ICsgICAgICAg ICAgICByZXR1cm4gW10NCj4gPj4+PiArDQo+ID4+Pj4gICAgICAgZGVmIHJlYWRfY29tbWl0X2xp c3RfZnJvbV9naXQoc2VsZiwgcmV2X3NwZWMsIG1heF9jb3VudCk6DQo+ID4+Pj4gICAgICAgICAg ICMgUnVuIGdpdCB0byBnZXQgdGhlIGNvbW1pdCBwYXRjaA0KPiA+Pj4+ICAgICAgICAgICBjbWQg PSBbICdyZXYtbGlzdCcsICctLWFiYnJldi1jb21taXQnLCAnLS1uby13YWxrJyBdDQo+ID4+Pj4g LS0NCj4gPj4+PiAyLjQwLjEud2luZG93cy4xDQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+ Pj4gDQo+ID4+Pj4NCj4gPj4+Pg0KDQoNCgotPS09LT0tPS09LT0tPS09LT0tPS09LQpHcm91cHMu aW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAuClZp ZXcvUmVwbHkgT25saW5lICgjMTE1NDY3KTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVs L21lc3NhZ2UvMTE1NDY3Ck11dGUgVGhpcyBUb3BpYzogaHR0cHM6Ly9ncm91cHMuaW8vbXQvMTA0 MzQ1NTA5Lzc2ODYxNzYKR3JvdXAgT3duZXI6IGRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvClVu c3Vic2NyaWJlOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdW5zdWIgW3JlYmVjY2FA b3BlbmZ3LmlvXQotPS09LT0tPS09LT0tPS09LT0tPS09LQoKDQo=