From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web10.43091.1578940719926994797 for ; Mon, 13 Jan 2020 10:38:40 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: michael.d.kinney@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Jan 2020 10:38:39 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,429,1571727600"; d="scan'208";a="247785600" Received: from orsmsx103.amr.corp.intel.com ([10.22.225.130]) by fmsmga004.fm.intel.com with ESMTP; 13 Jan 2020 10:38:39 -0800 Received: from orsmsx159.amr.corp.intel.com (10.22.240.24) by ORSMSX103.amr.corp.intel.com (10.22.225.130) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 13 Jan 2020 10:38:38 -0800 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.100]) by ORSMSX159.amr.corp.intel.com ([169.254.11.41]) with mapi id 14.03.0439.000; Mon, 13 Jan 2020 10:38:38 -0800 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "lersek@redhat.com" , "Kinney, Michael D" CC: "Feng, Bob C" , "Gao, Liming" , "Justen, Jordan L" Subject: Re: [edk2-devel] [Patch] BaseTools/Scripts/PatchCheck: Address false error conditions Thread-Topic: [edk2-devel] [Patch] BaseTools/Scripts/PatchCheck: Address false error conditions Thread-Index: AQHVyAjaiLM5QEPoBkuBJ958CINoOafpZKsA//+LqyA= Date: Mon, 13 Jan 2020 18:38:38 +0000 Message-ID: References: <20200110225358.8204-1-michael.d.kinney@intel.com> <2f7d61eb-7acf-6f6b-fc89-c784a45dd2a6@redhat.com> In-Reply-To: <2f7d61eb-7acf-6f6b-fc89-c784a45dd2a6@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.22.254.139] MIME-Version: 1.0 Return-Path: michael.d.kinney@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGFzemxvLA0KDQpUaGlzIHBhdGNoIGhhcyBiZWVuIHB1c2hlZC4NCg0KICAgIGh0dHBzOi8v Z2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9wdWxsLzI5Nw0KDQpJIGFsc28gZW50ZXJlZCBhIG5l dyBCWiB0byByZWxheCBDVkUgcGF0dGVybiBjaGVjay4NCg0KICAgIGh0dHBzOi8vYnVnemlsbGEu dGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2Mg0KDQpNaWtlDQoNCj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVk azIuZ3JvdXBzLmlvPiBPbg0KPiBCZWhhbGYgT2YgTGFzemxvIEVyc2VrDQo+IFNlbnQ6IE1vbmRh eSwgSmFudWFyeSAxMywgMjAyMCA5OjMyIEFNDQo+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzog RmVuZywgQm9iIEMgPGJvYi5jLmZlbmdAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcNCj4gPGxpbWlu Zy5nYW9AaW50ZWwuY29tPjsgSnVzdGVuLCBKb3JkYW4gTA0KPiA8am9yZGFuLmwuanVzdGVuQGlu dGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUGF0Y2hdDQo+IEJhc2VUb29s cy9TY3JpcHRzL1BhdGNoQ2hlY2s6IEFkZHJlc3MgZmFsc2UgZXJyb3INCj4gY29uZGl0aW9ucw0K PiANCj4gSGVsbG8gTWlrZSwNCj4gDQo+IHRoYW5rcyBhIGxvdCBmb3IgdGhpcyBwYXRjaCENCj4g DQo+IENvbW1lbnRzIGJlbG93Og0KPiANCj4gT24gMDEvMTAvMjAgMjM6NTMsIE1pY2hhZWwgRCBL aW5uZXkgd3JvdGU6DQo+ID4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVn LmNnaT9pZD0yNDA2DQo+ID4NCj4gPiAqIEFsd2F5cyBwcmludCBzdWJqZWN0IGxpbmUgYWZ0ZXIg dGhlIGdpdCBjb21taXQgaWQNCj4gdG8gbWFrZQ0KPiA+ICAgaXQgZWFzaWVyIHRvIGtub3cgdGhl IGNvbnRleHQgb2Ygd2FybmluZ3Mgb3INCj4gZXJyb3JzLg0KPiA+ICogQWxsb3cgVVRGLTggY2hh cmFjdGVycyBpbiBzdWJqZWN0IGxpbmUNCj4gPiAqIEVycm9yIGlmIHN1YmplY3QgbGluZSBsZW5n dGggPiA3NSB3aXRob3V0IENWRS14eHgtDQo+IHh4eHh4IHByZXNlbnQNCj4gPiAqIEVycm9yIGlm IHN1YmplY3QgbGluZSBsZW5ndGggPiA5MiB3aXRoIENWRS14eHh4LQ0KPiB4eHh4eCBwcmVzZW50 DQo+ID4gKiBJZiBib2R5IGxpbmUgbGVuZ3RoIGlzID4gNzUsIHRoZW4gcHJpbnQgd2FybmluZw0K PiBpbnN0ZWFkIG9mIGVycm9yLg0KPiA+DQo+ID4gQ2M6IEJvYiBGZW5nIDxib2IuYy5mZW5nQGlu dGVsLmNvbT4NCj4gPiBDYzogTGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID4g Q2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4gQ2M6IEpvcmRhbiBKdXN0 ZW4gPGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogTWljaGFl bCBEIEtpbm5leQ0KPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4g IEJhc2VUb29scy9TY3JpcHRzL1BhdGNoQ2hlY2sucHkgfCA1Nw0KPiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0NCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyks IDYgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NjcmlwdHMv UGF0Y2hDaGVjay5weQ0KPiBiL0Jhc2VUb29scy9TY3JpcHRzL1BhdGNoQ2hlY2sucHkNCj4gPiBp bmRleCA5NjY4MDI1Nzk4Li5mZjQ1NzJiYjdjIDEwMDc1NQ0KPiA+IC0tLSBhL0Jhc2VUb29scy9T Y3JpcHRzL1BhdGNoQ2hlY2sucHkNCj4gPiArKysgYi9CYXNlVG9vbHMvU2NyaXB0cy9QYXRjaENo ZWNrLnB5DQo+ID4gQEAgLTEsNyArMSw3IEBADQo+ID4gICMjIEBmaWxlDQo+ID4gICMgIENoZWNr IGEgcGF0Y2ggZm9yIHZhcmlvdXMgZm9ybWF0IGlzc3Vlcw0KPiA+ICAjDQo+ID4gLSMgIENvcHly aWdodCAoYykgMjAxNSAtIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4gPiArIyAgQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAyMCwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICAjDQo+ID4gICMgIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gICMNCj4gPiBA QCAtMzUsNiArMzUsOCBAQCBjbGFzcyBDb21taXRNZXNzYWdlQ2hlY2s6DQo+ID4gICAgICAgICAg c2VsZi5zdWJqZWN0ID0gc3ViamVjdA0KPiA+ICAgICAgICAgIHNlbGYubXNnID0gbWVzc2FnZQ0K PiA+DQo+ID4gKyAgICAgICAgcHJpbnQgKHN1YmplY3QpDQo+ID4gKw0KPiA+ICAgICAgICAgIHNl bGYuY2hlY2tfY29udHJpYnV0ZWRfdW5kZXIoKQ0KPiA+ICAgICAgICAgIHNlbGYuY2hlY2tfc2ln bmVkX29mZl9ieSgpDQo+ID4gICAgICAgICAgc2VsZi5jaGVja19taXNjX3NpZ25hdHVyZXMoKQ0K PiA+IEBAIC0xNzksNiArMTgxLDggQEAgY2xhc3MgQ29tbWl0TWVzc2FnZUNoZWNrOg0KPiA+ICAg ICAgICAgIGZvciBzaWcgaW4gc2VsZi5zaWdfdHlwZXM6DQo+ID4gICAgICAgICAgICAgIHNlbGYu ZmluZF9zaWduYXR1cmVzKHNpZykNCj4gPg0KPiA+ICsgICAgY3ZlX3JlID0gcmUuY29tcGlsZSgn Q1ZFLVswLTldezR9LVswLTldezV9W14wLQ0KPiA5XScpDQo+ID4gKw0KPiANCj4gKDEpIEkgc3Vn Z2VzdCB3ZSBwZXJtaXQgQ1ZFIElEcyB3aXRoIDQgYXJiaXRyYXJ5IGRpZ2l0cw0KPiB0b28uIFRo YXQgaXM6DQo+IA0KPiAgIENWRS1bMC05XXs0fS1bMC05XXs0LDV9W14wLTldDQo+ICAgICAgICAg ICAgICAgICAgICAgXl5eXl4NCj4gDQo+IEJlY2F1c2Ugb2Y6DQo+IA0KPiANCj4gaHR0cHM6Ly9j dmUubWl0cmUub3JnL2N2ZS9pZGVudGlmaWVycy9zeW50YXhjaGFuZ2UuaHRtbA0KPiAjbmV3DQo+ IA0KPiBGb3IgZXhhbXBsZSwgIkNWRS0yMDIwLTAwMDEiIGlzIGFuIGV4aXN0ZW50IENWRToNCj4g DQo+ICAgaHR0cHM6Ly9jdmUubWl0cmUub3JnL2NnaS1iaW4vY3ZlbmFtZS5jZ2k/bmFtZT1DVkUt DQo+IDIwMjAtMDAwMQ0KPiANCj4gYW5kIGVkazIgY291bGQgZ2V0IGEgQ1ZFIGFzc2lnbmVkIGZv ciB3aGljaCBvbmx5IDQNCj4gImFyYml0cmFyeSBkaWdpdHMiDQo+IHdlcmUgbmVjZXNzYXJ5LiAo SW4gdGhhdCBjYXNlLCB0aGUgQ05BIHdvdWxkIG5vdCBwYWQNCj4gdGhhdCBzZXF1ZW5jZSB0byA1 DQo+IGRpZ2l0cy4pDQo+IA0KPiBOb3csIEkgd291bGRuJ3QgbGlrZSB0byBvdmVyY29tcGxpY2F0 ZSB0aGlzLCB0aGVyZWZvcmUNCj4gSSdtIG5vdA0KPiByZXF1ZXN0aW5nIHRoYXQgaW4gc3VjaCBj YXNlcywgd2UgYWxzbyBsb3dlciB0aGUNCj4gaW5jbHVzaXZlIGxpbWl0IGZyb20gOTINCj4gdG8g OTEgY2hhcmFjdGVycywgaW4gdGhlIHN1YmplY3QgbGluZS4NCj4gDQo+IChJIHRoaW5rIHRoYXQg dGhpcyBzdWdnZXN0ZWQgdXBkYXRlIHRvIHRoZSBzY3JpcHQvcGF0Y2gNCj4gZG9lcyBub3QgcmVx dWlyZQ0KPiBhIHJlcG9zdGluZy4gQW5vdGhlciBjb21tZW50IGJlbG93LikNCj4gDQo+IA0KPiA+ ICAgICAgZGVmIGNoZWNrX292ZXJhbGxfZm9ybWF0KHNlbGYpOg0KPiA+ICAgICAgICAgIGxpbmVz ID0gc2VsZi5tc2cuc3BsaXRsaW5lcygpDQo+ID4NCj4gPiBAQCAtMTk2LDkgKzIwMCwyNiBAQCBj bGFzcyBDb21taXRNZXNzYWdlQ2hlY2s6DQo+ID4gICAgICAgICAgICAgIHNlbGYuZXJyb3IoJ0Vt cHR5IGNvbW1pdCBtZXNzYWdlIScpDQo+ID4gICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+ID4g LSAgICAgICAgaWYgY291bnQgPj0gMSBhbmQgbGVuKGxpbmVzWzBdLnJzdHJpcCgpKSA+PQ0KPiA3 MjoNCj4gPiAtICAgICAgICAgICAgc2VsZi5lcnJvcignRmlyc3QgbGluZSBvZiBjb21taXQgbWVz c2FnZQ0KPiAoc3ViamVjdCBsaW5lKSAnICsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAn aXMgdG9vIGxvbmcuJykNCj4gPiArICAgICAgICBpZiBjb3VudCA+PSAxIGFuZCByZS5zZWFyY2go c2VsZi5jdmVfcmUsDQo+IGxpbmVzWzBdKToNCj4gPiArICAgICAgICAgICAgIw0KPiA+ICsgICAg ICAgICAgICAjIElmIENWRS14eHh4LXh4eHh4IGlzIHByZXNlbnQgaW4NCj4gc3ViamVjdCBsaW5l LCB0aGVuIGxpbWl0IGxlbmd0aCBvZg0KPiA+ICsgICAgICAgICAgICAjIHN1YmplY3QgbGluZSB0 byA5MiBjaGFyYWN0ZXJzDQo+ID4gKyAgICAgICAgICAgICMNCj4gPiArICAgICAgICAgICAgaWYg bGVuKGxpbmVzWzBdLnJzdHJpcCgpKSA+PSA5MzoNCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu ZXJyb3IoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgJ0ZpcnN0IGxpbmUgb2YgY29tbWl0IG1l c3NhZ2UNCj4gKHN1YmplY3QgbGluZSkgaXMgdG9vIGxvbmcgKCVkID49IDkzKS4nICUNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAobGVuKGxpbmVzWzBdLnJzdHJpcCgpKSkNCj4gPiArICAgICAg ICAgICAgICAgICAgICApDQo+ID4gKyAgICAgICAgZWxzZToNCj4gPiArICAgICAgICAgICAgIw0K PiA+ICsgICAgICAgICAgICAjIElmIENWRS14eHh4LXh4eHh4IGlzIG5vdCBwcmVzZW50IGluDQo+ IHN1YmplY3QgbGluZSwgdGhlbiBsaW1pdA0KPiA+ICsgICAgICAgICAgICAjIGxlbmd0aCBvZiBz dWJqZWN0IGxpbmUgdG8gNzUNCj4gY2hhcmFjdGVycw0KPiA+ICsgICAgICAgICAgICAjDQo+ID4g KyAgICAgICAgICAgIGlmIGxlbihsaW5lc1swXS5yc3RyaXAoKSkgPj0gNzY6DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmVycm9yKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICdGaXJzdCBs aW5lIG9mIGNvbW1pdCBtZXNzYWdlDQo+IChzdWJqZWN0IGxpbmUpIGlzIHRvbyBsb25nICglZCA+ PSA3NikuJyAlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKGxlbihsaW5lc1swXS5yc3RyaXAo KSkpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gICAgICAgICAgaWYgY291 bnQgPj0gMSBhbmQgbGVuKGxpbmVzWzBdLnN0cmlwKCkpID09DQo+IDA6DQo+ID4gICAgICAgICAg ICAgIHNlbGYuZXJyb3IoJ0ZpcnN0IGxpbmUgb2YgY29tbWl0IG1lc3NhZ2UNCj4gKHN1YmplY3Qg bGluZSkgJyArDQo+ID4gQEAgLTIxMiw3ICsyMzMsMTQgQEAgY2xhc3MgQ29tbWl0TWVzc2FnZUNo ZWNrOg0KPiA+ICAgICAgICAgICAgICBpZiAobGVuKGxpbmVzW2ldKSA+PSA3NiBhbmQNCj4gPiAg ICAgICAgICAgICAgICAgIGxlbihsaW5lc1tpXS5zcGxpdCgpKSA+IDEgYW5kDQo+ID4gICAgICAg ICAgICAgICAgICBub3QgbGluZXNbaV0uc3RhcnRzd2l0aCgnZ2l0LXN2bi0NCj4gaWQ6JykpOg0K PiA+IC0gICAgICAgICAgICAgICAgc2VsZi5lcnJvcignTGluZSAlZCBvZiBjb21taXQNCj4gbWVz c2FnZSBpcyB0b28gbG9uZy4nICUgKGkgKyAxKSkNCj4gPiArICAgICAgICAgICAgICAgICMNCj4g PiArICAgICAgICAgICAgICAgICMgUHJpbnQgYSB3YXJuaW5nIGlmIGJvZHkgbGluZSBpcw0KPiBs b25nZXIgdGhhbiA3NSBjaGFyYWN0ZXJzDQo+ID4gKyAgICAgICAgICAgICAgICAjDQo+ID4gKyAg ICAgICAgICAgICAgICBwcmludCgNCj4gPiArICAgICAgICAgICAgICAgICAgICAnV0FSTklORyAt IExpbmUgJWQgb2YgY29tbWl0DQo+IG1lc3NhZ2UgaXMgdG9vIGxvbmcgKCVkID49IDc2KS4nICUN Cj4gPiArICAgICAgICAgICAgICAgICAgICAoaSArIDEsIGxlbihsaW5lc1tpXSkpDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgKQ0KPiA+ICsgICAgICAgICAgICAgICAgcHJpbnQobGluZXNbaV0p DQo+ID4NCj4gPiAgICAgICAgICBsYXN0X3NpZ19saW5lID0gTm9uZQ0KPiA+ICAgICAgICAgIGZv ciBpIGluIHJhbmdlKGNvdW50IC0gMSwgMCwgLTEpOg0KPiA+IEBAIC01MDMsOCArNTMxLDI1IEBA IGNsYXNzIENoZWNrT25lUGF0Y2g6DQo+ID4gICAgICAgICAgZWxzZToNCj4gPiAgICAgICAgICAg ICAgc2VsZi5zdGF0ID0gbW8uZ3JvdXAoJ3N0YXQnKQ0KPiA+ICAgICAgICAgICAgICBzZWxmLmNv bW1pdF9tc2cgPQ0KPiBtby5ncm91cCgnY29tbWl0X21lc3NhZ2UnKQ0KPiA+ICsgICAgICAgICMN Cj4gPiArICAgICAgICAjIFBhcnNlIHN1YmplY3QgbGluZSBmcm9tIGVtYWlsIGhlYWRlci4gIFRo ZQ0KPiBzdWJqZWN0IGxpbmUgbWF5IGJlDQo+ID4gKyAgICAgICAgIyBjb21wb3NlZCBvZiBtdWx0 aXBsZSBwYXJ0cyB3aXRoIGRpZmZlcmVudA0KPiBlbmNvZGluZ3MuICBEZWNvZGUgYW5kDQo+ID4g KyAgICAgICAgIyBjb21iaW5lIGFsbCB0aGUgcGFydHMgdG8gcHJvZHVjZSBhIHNpbmdsZQ0KPiBz dHJpbmcgd2l0aCB0aGUgY29udGVudHMgb2YNCj4gPiArICAgICAgICAjIHRoZSBkZWNvZGVkIHN1 YmplY3QgbGluZS4NCj4gPiArICAgICAgICAjDQo+ID4gKyAgICAgICAgcGFydHMgPQ0KPiBlbWFp bC5oZWFkZXIuZGVjb2RlX2hlYWRlcihwbWFpbC5nZXQoJ3N1YmplY3QnKSkNCj4gPiArICAgICAg ICBzdWJqZWN0ID0gJycNCj4gPiArICAgICAgICBmb3IgKHBhcnQsIGVuY29kaW5nKSBpbiBwYXJ0 czoNCj4gPiArICAgICAgICAgICAgaWYgZW5jb2Rpbmc6DQo+ID4gKyAgICAgICAgICAgICAgICBw YXJ0ID0gcGFydC5kZWNvZGUoZW5jb2RpbmcpDQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4g KyAgICAgICAgICAgICAgICB0cnk6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcGFydCA9IHBh cnQuZGVjb2RlKCkNCj4gPiArICAgICAgICAgICAgICAgIGV4Y2VwdDoNCj4gPiArICAgICAgICAg ICAgICAgICAgICBwYXNzDQo+ID4gKyAgICAgICAgICAgIHN1YmplY3QgPSBzdWJqZWN0ICsgcGFy dA0KPiA+DQo+ID4gLSAgICAgICAgc2VsZi5jb21taXRfc3ViamVjdCA9DQo+IHBtYWlsWydzdWJq ZWN0J10ucmVwbGFjZSgnXHJcbicsICcnKQ0KPiA+ICsgICAgICAgIHNlbGYuY29tbWl0X3N1Ympl Y3QgPQ0KPiBzdWJqZWN0LnJlcGxhY2UoJ1xyXG4nLCAnJykNCj4gPiAgICAgICAgICBzZWxmLmNv bW1pdF9zdWJqZWN0ID0NCj4gc2VsZi5jb21taXRfc3ViamVjdC5yZXBsYWNlKCdcbicsICcnKQ0K PiA+ICAgICAgICAgIHNlbGYuY29tbWl0X3N1YmplY3QgPQ0KPiBzZWxmLnN1YmplY3RfcHJlZml4 X3JlLnN1YignJywgc2VsZi5jb21taXRfc3ViamVjdCwgMSkNCj4gPg0KPiA+DQo+IA0KPiBTbyBJ J3ZlIGFwcGxpZWQgdGhpcyBwYXRjaCBsb2NhbGx5LCBzdWNoIHRoYXQgdGhlIG1vc3QNCj4gcmVj ZW50IHByaW9yDQo+IHBhdGNoIGZvciAiQmFzZVRvb2xzL1NjcmlwdHMvUGF0Y2hDaGVjay5weSIg aGFzIGJlZW4NCj4gY29tbWl0IDI2NDlhNzM1YjI0OQ0KPiAoIkJhc2VUb29scy9QYXRjaENoZWNr LnB5OiBJZ25vcmUgQ1IgYW5kIExGIGNoYXJhY3RlcnMNCj4gaW4gc3ViamVjdA0KPiBsZW5ndGgi LCAyMDIwLTAxLTA5KS4gQW5kIEkndmUgYXR0ZW1wdGVkIHRvIHRlc3QgaXQNCj4gYWdhaW5zdCB0 d28gcGF0Y2gNCj4gc2V0cyBJIGhhdmUgcGVuZGluZyBvbiB0aGUgbGlzdDoNCj4gDQo+IFtlZGsy LWRldmVsXSBbUEFUQ0ggMC8yXQ0KPiBVZWZpQm9vdE1hbmFnZXJMaWIsIEh0dHBEeGU6IHR3ZWFr cyBmb3IgbGFyZ2UgSFRUUChTKQ0KPiBkb3dubG9hZHMNCj4gDQo+IFtlZGsyLWRldmVsXSBbUEFU Q0hdDQo+IFVlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW06IGZpeCAyTS0+NEsgcGFnZSBzcGxpdHRp bmcNCj4gcmVncmVzc2lvbiBmb3IgUERFcw0KPiANCj4gKDIpIFRoZSB1cGRhdGUgc2VlbXMgdG8g YnJlYWsgcHl0aG9uMiBjb21wYXRpYmlsaXR5Og0KPiANCj4gPiBUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6DQo+ID4gICBGaWxlICJCYXNlVG9vbHMvU2NyaXB0cy9QYXRjaENoZWNr LnB5IiwgbGluZSA2ODgsDQo+IGluIDxtb2R1bGU+DQo+ID4gICAgIHN5cy5leGl0KFBhdGNoQ2hl Y2tBcHAoKS5yZXR2YWwpDQo+ID4gICBGaWxlICJCYXNlVG9vbHMvU2NyaXB0cy9QYXRjaENoZWNr LnB5IiwgbGluZSA2NDgsDQo+IGluIF9faW5pdF9fDQo+ID4gICAgIHNlbGYucHJvY2Vzc19vbmVf YXJnKHBhdGNoKQ0KPiA+ICAgRmlsZSAiQmFzZVRvb2xzL1NjcmlwdHMvUGF0Y2hDaGVjay5weSIs IGxpbmUgNjY1LA0KPiBpbiBwcm9jZXNzX29uZV9hcmcNCj4gPiAgICAgc2VsZi5vayAmPSBDaGVj a09uZUFyZyhhcmcsIHNlbGYuY291bnQpLm9rDQo+ID4gICBGaWxlICJCYXNlVG9vbHMvU2NyaXB0 cy9QYXRjaENoZWNrLnB5IiwgbGluZSA2MzIsDQo+IGluIF9faW5pdF9fDQo+ID4gICAgIGNoZWNr ZXIgPSBDaGVja0dpdENvbW1pdHMocGFyYW0sIG1heF9jb3VudCkNCj4gPiAgIEZpbGUgIkJhc2VU b29scy9TY3JpcHRzL1BhdGNoQ2hlY2sucHkiLCBsaW5lIDU3NiwNCj4gaW4gX19pbml0X18NCj4g PiAgICAgc2VsZi5vayAmPSBDaGVja09uZVBhdGNoKGNvbW1pdCwgcGF0Y2gpLm9rDQo+ID4gICBG aWxlICJCYXNlVG9vbHMvU2NyaXB0cy9QYXRjaENoZWNrLnB5IiwgbGluZSA0NTEsDQo+IGluIF9f aW5pdF9fDQo+ID4gICAgIHNlbGYuZmluZF9wYXRjaF9waWVjZXMoKQ0KPiA+ICAgRmlsZSAiQmFz ZVRvb2xzL1NjcmlwdHMvUGF0Y2hDaGVjay5weSIsIGxpbmUgNTQwLA0KPiBpbiBmaW5kX3BhdGNo X3BpZWNlcw0KPiA+ICAgICBwYXJ0cyA9DQo+IGVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyKHBt YWlsLmdldCgnc3ViamVjdCcpKQ0KPiA+IEF0dHJpYnV0ZUVycm9yOiAnbW9kdWxlJyBvYmplY3Qg aGFzIG5vIGF0dHJpYnV0ZQ0KPiAnaGVhZGVyJw0KPiANCj4gSG93ZXZlciwgdGhlIHBhdGNoIHdv cmtzIHZlcnkgd2VsbCB3aXRoIHB5dGhvbjMuDQo+IA0KPiBJJ3ZlIGFsc28gY2hlY2tlZCBhIGxv Y2FsIG9uZS1vZmYgY29tbWl0IHdpdGggYSBidW5jaA0KPiBvZiBVVEYtOCBzZXF1ZW5jZXMNCj4g aW4gdGhlIHN1YmplY3QgbGluZS4gKEluIEh1bmdhcmlhbiB3ZSBoYXZlIHRoZQ0KPiBub25zZW5z aWNhbCBwaHJhc2UNCj4gIsOhcnbDrXp0xbFyxZEgdMO8a8O2cmbDunLDs2fDqXAgw4FSVsONWlTF sFLFkCBUw5xLw5ZSRsOaUsOTR8OJUCIgZm9yDQo+IGVhc2lseSB0ZXN0aW5nIGFsbA0KPiB0aGUg SHVuZ2FyaWFuIGRpYWNyaXRpY2FsIG1hcmtzLCB3aGljaCBhcmUgcGFydCBvZg0KPiBsYXRpbjIu IFZlcmJhdGltLCBpdA0KPiBtZWFucyAiZmxvb2QgdG9sZXJhbnQgbWlycm9yIGRyaWxsIiA6KSAp DQo+IA0KPiBJbiBvcmRlciB0byB1bmJsb2NrIHNvbWUgcGVuZGluZyBwYXRjaGVzIHdydC4gdGhl IGVkazINCj4gQ0kgc3lzdGVtLCBJJ2QNCj4gc3VnZ2VzdCBwdXNoaW5nIHRoaXMgcGF0Y2ggYXQg b25jZS4gRm9yIHRoYXQ6DQo+IA0KPiBUZXN0ZWQtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJl ZGhhdC5jb20+DQo+IA0KPiBUaGVuLCB0aGUgcmVnZXggaW1wcm92ZW1lbnQgZm9yICgxKSBjb3Vs ZCBiZSBhDQo+IHNlcGFyYXRlLCBmdXR1cmUgcGF0Y2guDQo+IChOb3JtYWxseSBJJ2QgcHJvcG9z ZSBpbXBsZW1lbnRpbmcgdGhhdCBzbWFsbCBjaGFuZ2UNCj4gcmlnaHQgYmVmb3JlDQo+IHB1c2hp bmcsIGJ1dCB0aGVuIG15IFRlc3RlZC1ieSB3b3VsZCBub3QgYmUgdmFsaWQgYW55DQo+IGxvbmdl ci4NCj4gIlJldmlld2VkLWJ5IiBjYW4gc3Vydml2ZSBzbWFsbCBjaGFuZ2VzLCBidXQgIlRlc3Rl ZC0NCj4gYnkiIGNhbid0LikNCj4gDQo+IFNpbWlsYXJseSwgcHl0aG9uMiBzdXBwb3J0ICgyKSAo KmlmKiB3ZSBjYXJlIC0tIG5vdA0KPiBzYXlpbmcgd2Ugc2hvdWxkDQo+IG5lY2Vzc2FyaWx5IGNh cmUpIGNvdWxkIGJlIGFkZGVkIGFzIGEgc3Vic2VxdWVudCBwYXRjaC4NCj4gDQo+IEluIHN1bW1h cnkgSSdkIGJlIHRoYW5rZnVsIGlmIHRoZSBwYXRjaCBjb3VsZCBiZSBwdXNoZWQNCj4gYXMtaXMs IHdpdGggbXkNCj4gVGVzdGVkLWJ5IChhbmQgd2l0aCBhbiBSLWIgZnJvbSBhIEJhc2VUb29scyBt YWludGFpbmVyLA0KPiBvZiBjb3Vyc2UpLg0KPiANCj4gVGhhbmsgeW91IQ0KPiBMYXN6bG8NCj4g DQo+IA0KPiANCg0K