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.web12.8097.1581824190122565243 for ; Sat, 15 Feb 2020 19:36:30 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: siyuan.fu@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Feb 2020 19:36:29 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,447,1574150400"; d="scan'208";a="268014351" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga002.fm.intel.com with ESMTP; 15 Feb 2020 19:36:29 -0800 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sat, 15 Feb 2020 19:36:29 -0800 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx111.amr.corp.intel.com (10.18.116.5) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sat, 15 Feb 2020 19:36:28 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.196]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.201]) with mapi id 14.03.0439.000; Sun, 16 Feb 2020 11:36:25 +0800 From: "Siyuan, Fu" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "Ni, Ray" , "Chaganty, Rangasai V" Subject: Re: [edk2-devel] [PATCH v3] IntelSiliconPkg: FIT based shadow microcode PPI support. Thread-Topic: [edk2-devel] [PATCH v3] IntelSiliconPkg: FIT based shadow microcode PPI support. Thread-Index: AQHV4T45Bh6YCeSru0+aVr0AkZ8zGqgYRB6ggAGdkVCAAOyrAIACYLXg Date: Sun, 16 Feb 2020 03:36:24 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNjdjM2MwMTQtZDgwMy00M2I3LTliY2YtOGEzMDFkMDYyNmE4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiWTBhRTBXdmpabkRHN0s5eW9CQmIrQTZHMURwVmE3N2JGY0pIemxENXdIUWZ0ZVJWOWxmRWVFUU5ub1FHQmlHbyJ9 dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: siyuan.fu@intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGksIE1pa2UNCg0KVGhlIEZJVFBvaW50ZXIgcG9pbnRzIHRvIHRoZSBGSVQgdGFibGUgYWRkcmVz cyBvbiBmbGFzaCAod2l0aGluIHRvcCAxNk1CIA0Kb2YgNEdCKS4gSXQncyBub3QgYSBtZW1vcnkg YWRkcmVzcyBhbmQgbm9ybWFsbHkgaXQncyBhbHdheXMgbGFyZ2UgdGhhbg0KdGhlIE1lbW9yeVRv cCBhZGRyZXNzIGluIFBISVQuIFNvIHdlIGNvdWxkbid0IHVzZSBQSElUIEhPQiB0byBjaGVjaw0K dGhlIEZJVCBwb2ludGVyLg0KDQoNCg0KQmVzdCBSZWdhcmRzDQpTaXl1YW4gDQoNCj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPg0KPiBTZW50OiAyMDIwxOoy1MIxNcjVIDc6MDcNCj4gVG86IEZ1 LCBTaXl1YW4gPHNpeXVhbi5mdUBpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgS2lu bmV5LA0KPiBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBDYzogTmks IFJheSA8cmF5Lm5pQGludGVsLmNvbT47IENoYWdhbnR5LCBSYW5nYXNhaSBWDQo+IDxyYW5nYXNh aS52LmNoYWdhbnR5QGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFU Q0ggdjNdIEludGVsU2lsaWNvblBrZzogRklUIGJhc2VkIHNoYWRvdw0KPiBtaWNyb2NvZGUgUFBJ IHN1cHBvcnQuDQo+IA0KPiBTaXl1YW4sDQo+IA0KPiBJZiB0aGUgRklUIGlzIG5vdCB2YWxpZCwg dGhlbiB0aGUgQVBJIHNob3VsZCBqdXN0IHJldHVybg0KPiBhbiBlcnJvciB3aXRob3V0IEFTU0VS VCgpLiAgTm90IGFsbCBzeXN0ZW0gc3VwcG9ydCBGSVQgb3INCj4gZmlsbCBpbiBGSVQuICBUaGUg Y29kZSBpcyBtb3JlIGdlbmVyaWMgaWYgaXQganVzdCBkb2VzDQo+IHRoZSBjaGVjayBhbmQgcmV0 dXJucyBhbiBlcnJvci4NCg0KVGhpcyBpcyBhbiBvcHRpb25hbCBQRUlNIGFuZCBvbmx5IHRoZXNl IHN5c3RlbXMgd2hpY2gNCnN1cHBvcnQgRklUIHNob3VsZCB1c2UgaXQuIE90aGVyIHBsYXRmb3Jt cyBzaG91bGQgbm90DQppbmNsdWRlIHRoaXMgUEVJTSBzbyBNcEluaXRMaWIgd2lsbCBzdGlsbCB1 c2UgdGhlIFBDRA0KYmFzZWQgbWljcm9jb2RlIHNoYWRvdyBhcyB1c3VhbC4NCkJ1dCBpdCdzIG9r IHRvIG1lIGlmIHlvdSB0aGluayBpdCdzIG5lY2Vzc2FyeSB0byByZW1vdmUNCnRoZXNlIEFTU0VS VCBzbyBhbnkgcGxhdGZvcm0gY2FuIGluY2x1ZGUgdGhpcyBQRUlNDQp3aXRob3V0IGFkZGl0aW9u YWwgY29uY2Vybi4gSSB3aWxsIHVwZGF0ZSBwYXRjaCBmb3IgdGhpcy4NCg0KPiANCj4gVGhlIGNo ZWNrIGxvb2tzIGluY29tcGxldGUgdG8gbWUuICBXZSBrbm93IHRoYXQgbWF4IHBoeXNpY2FsDQo+ IGFkZHJlc3Mgb2YgdGhlIENQVSBmcm9tIHRoZSBQSElUIEhPQi4gIElmIHRoZSBwaHlzaWNhbCBh ZGRyZXNzDQo+IHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4IHBoeXNpY2FsIGFkZHJlc3Ms IHRoZW4gdGhlDQo+IHBvaW50ZXIgaXMgaW52YWxpZC4gIFRoaXMgd291bGQgY292ZXIgdGhlIDIg cG9pbnQgY2FzZXMgb2YNCj4gYWxsIEZzIGFuZCBhbGwgRXMuDQoNClRoZSBGSVRQb2ludGVyIHBv aW50cyB0byB0aGUgRklUIHRhYmxlIGFkZHJlc3Mgb24gZmxhc2ggKHdpdGhpbiB0b3ANCjE2TUIg b2YgNEdCKS4gSXQncyBub3QgYSBtZW1vcnkgYWRkcmVzcyBhbmQgbm9ybWFsbHkgaXQncyBhbHdh eXMNCmxhcmdlciB0aGFuIHRoZSBNZW1vcnlUb3AgYWRkcmVzcyBpbiBQSElULiBTbyB3ZSBjb3Vs ZG4ndCB1c2UNClBISVQgSE9CIHRvIGNoZWNrIHRoZSBGSVQgcG9pbnRlci4NCg0KQmVzdCBSZWdh cmRzLA0KU2l5dWFuDQoNCj4gDQo+IE1pa2UNCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gPiBGcm9tOiBGdSwgU2l5dWFuIDxzaXl1YW4uZnVAaW50ZWwuY29tPg0KPiA+IFNl bnQ6IFRodXJzZGF5LCBGZWJydWFyeSAxMywgMjAyMCA1OjMzIFBNDQo+ID4gVG86IEtpbm5leSwg TWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47DQo+ID4gZGV2ZWxAZWRrMi5n cm91cHMuaW8NCj4gPiBDYzogTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IENoYWdhbnR5LCBS YW5nYXNhaSBWDQo+ID4gPHJhbmdhc2FpLnYuY2hhZ2FudHlAaW50ZWwuY29tPg0KPiA+IFN1Ympl Y3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYzXSBJbnRlbFNpbGljb25Qa2c6DQo+ID4gRklU IGJhc2VkIHNoYWRvdyBtaWNyb2NvZGUgUFBJIHN1cHBvcnQuDQo+ID4NCj4gPiBIaSBNaWtlDQo+ ID4NCj4gPiBTZWUgbXkgcmVwbHkgZm9yIHRoZSBBU1NFUlQgYW5kIG1hZ2ljIG51bWJlciBhcm91 bmQgRklUDQo+ID4gdGFibGUgcGFyc2luZyBjb2RlLg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPg0KPiA+ID4gU2VudDogMjAyMMTqMtTCMTPI1SA4OjU4DQo+ID4gPiBU bzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IEZ1LCBTaXl1YW4NCj4gPiA8c2l5dWFuLmZ1QGludGVs LmNvbT47IEtpbm5leSwgTWljaGFlbA0KPiA+ID4gRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+DQo+ID4gPiBDYzogTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IENoYWdhbnR5LCBSYW5n YXNhaSBWDQo+ID4gPiA8cmFuZ2FzYWkudi5jaGFnYW50eUBpbnRlbC5jb20+DQo+ID4gPiBTdWJq ZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCB2M10gSW50ZWxTaWxpY29uUGtnOg0KPiA+IEZJ VCBiYXNlZCBzaGFkb3cNCj4gPiA+IG1pY3JvY29kZSBQUEkgc3VwcG9ydC4NCj4gPiA+DQo+ID4g PiBTaXl1YW4sDQo+ID4gPg0KPiA+ID4gSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvU2hhZG93TWlj cm9jb2RlOg0KPiA+ID4NCj4gPiA+IEZvciBzaW1wbGUgbW9kdWxlcyB0aGF0IG9ubHkgaGF2ZSBh IHNpbmdsZSAuYyBmaWxlLA0KPiA+IHRoZXJlDQo+ID4gPiBJcyBub3QgbmVlZCB0byBzcGxpdCBv dXQgYSAuaCBmaWxlLiAgUGxlYXNlIG1lcmdlIHRoZQ0KPiA+IC5oDQo+ID4gPiBGaWxlIGNvbnRl bnQgaW50byB0aGUgLmMgZmlsZSBhbmQgZGVsZXRlIHRoZSAuaCBmaWxlLg0KPiA+ID4NCj4gPiA+ IE1vcmUgY29tbWVudHMgaW5saW5lIGJlbG93Lg0KPiA+ID4NCj4gPiA+IE1pa2UNCj4gPiA+DQo+ ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IGRldmVsQGVk azIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4gPiBPbg0KPiA+ID4gPiBCZWhh bGYgT2YgU2l5dWFuLCBGdQ0KPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBGZWJydWFyeSAxMSwgMjAy MCA0OjQ4IFBNDQo+ID4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ID4gPiBDYzog TmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IENoYWdhbnR5LCBSYW5nYXNhaQ0KPiA+IFYNCj4g PiA+ID4gPHJhbmdhc2FpLnYuY2hhZ2FudHlAaW50ZWwuY29tPg0KPiA+ID4gPiBTdWJqZWN0OiBb ZWRrMi1kZXZlbF0gW1BBVENIIHYzXSBJbnRlbFNpbGljb25Qa2c6DQo+ID4gRklUDQo+ID4gPiA+ IGJhc2VkIHNoYWRvdyBtaWNyb2NvZGUgUFBJIHN1cHBvcnQuDQo+ID4gPiA+DQo+ID4gPiA+IFYz IENoYW5nZXM6DQo+ID4gPiA+IFJlbW92ZSB0aGUgZmVhdHVyZSBQQ0QgUGNkQ3B1U2hhZG93TWlj cm9jb2RlQnlGaXQNCj4gPiA+ID4gYmVjYXVzZSB0aGUgd2hvbGUgRklUIG1pY3JvY29kZSBzaGFk b3cgY29kZSBpcw0KPiA+IG1vdmVkIHRvDQo+ID4gPiA+IHRoaXMgUEVJTSBzbyBwbGF0Zm9ybSBj b3VsZCBkaXNhYmxlIHRoaXMgZmVhdHVyZSBieQ0KPiA+IG5vdA0KPiA+ID4gPiBpbmNsdWRlIFBF SU0gbm93Lg0KPiA+ID4gPg0KPiA+ID4gPiBWMiBDaGFuZ2VzOg0KPiA+ID4gPiBSZW5hbWUgRURL SUlfUEVJX0NQVV9NSUNST0NPREVfSUQgdG8NCj4gPiA+ID4gRURLSUlfUEVJX01JQ1JPQ09ERV9D UFVfSUQuDQo+ID4gPiA+DQo+ID4gPiA+IFRoaXMgcGF0Y2ggYWRkcyBhIHBsYXRmb3JtIFBFSU0g Zm9yIEZJVCBiYXNlZA0KPiA+IHNoYWRvdw0KPiA+ID4gPiBtaWNyb2NvZGUgUFBJIHN1cHBvcnQu IEEgZGV0YWlsZWQgZGVzaWduIGRvYyBjYW4gYmUNCj4gPiA+ID4gZm91bmQgaGVyZToNCj4gPiA+ ID4NCj4gPiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvZmlsZXMvRGVzaWducy8yMDIw LzAyMTQvDQo+ID4gPiA+IFN1cHBvcnQlMjANCj4gPiA+ID4gdGhlJTIwMm5kJTIwTWljcm9jb2Rl JTIwRlYlMjBGbGFzaCUyMFJlZ2lvbi5wZGYNCj4gPiBUcmltIGxvbmcgcGF0Y2ggY29udGVudC4N Cj4gPg0KPiA+ID4gPiArDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ ID4gK1NoYWRvd01pY3JvY29kZVBhdGNoQnlGaXQgKA0KPiA+ID4gPiArICBJTiAgVUlOVE4NCj4g PiA+ID4gQ3B1SWRDb3VudCwNCj4gPiA+ID4gKyAgSU4gIEVES0lJX1BFSV9NSUNST0NPREVfQ1BV X0lEDQo+ID4gPiA+ICpNaWNyb2NvZGVDcHVJZCwNCj4gPiA+ID4gKyAgT1VUIFVJTlRODQo+ID4g PiA+ICpCdWZmZXJTaXplLA0KPiA+ID4gPiArICBPVVQgVk9JRA0KPiA+ICoqQnVmZmVyDQo+ID4g PiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEZpdFBvaW50ZXI7DQo+ID4gPiA+ICsgIEZJUk1XQVJFX0lOVEVSRkFDRV9UQUJM RV9FTlRSWSAgICAqRml0RW50cnk7DQo+ID4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFbnRyeU51bTsNCj4gPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEluZGV4Ow0KPiA+ID4gPiArICBNSUNST0NPREVfUEFUQ0hfSU5GTw0KPiA+ICpQ YXRjaEluZm9CdWZmZXI7DQo+ID4gPiA+ICsgIFVJTlRODQo+ID4gTWF4UGF0Y2hOdW1iZXI7DQo+ ID4gPiA+ICsgIENQVV9NSUNST0NPREVfSEVBREVSDQo+ID4gPiA+ICpNaWNyb2NvZGVFbnRyeVBv aW50Ow0KPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0Y2hD b3VudDsNCj4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFs U2l6ZTsNCj4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFs TG9hZFNpemU7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgRml0UG9pbnRlciA9ICooVUlOVDY0ICop IChVSU5UTikNCj4gPiA+ID4gRklUX1BPSU5URVJfQUREUkVTUzsgIGlmDQo+ID4gPiA+ICsgKChG aXRQb2ludGVyID09IDApIHx8DQo+ID4gPiA+ICsgICAgICAoRml0UG9pbnRlciA9PSAweEZGRkZG RkZGRkZGRkZGRkYpIHx8DQo+ID4gPiA+ICsgICAgICAoRml0UG9pbnRlciA9PSAweEVFRUVFRUVF RUVFRUVFRUUpKSB7DQo+ID4gPg0KPiA+ID4gQXJlIHRoZXNlIGNvbnN0YW50cyBkZWZpbmVkIGlu IHRoZSBGSVQgaW5jbHVkZSBmaWxlPw0KPiA+ID4gV291bGQgYmUgYmV0dGVyIGlmIHRoZXkgYXJl ICNkZWZpbmVzIGZyb20gRklUIGluY2x1ZGUNCj4gPiA+IGZpbGUgb3IgaW4gdGhpcyBtb2R1bGUu DQo+ID4NCj4gPiBUaGVzZSB2YWx1ZXMgYXJlIG5vdCBkZWZpbmVkIGluIEZJVCBpbmNsdWRlIGZp bGUgb3IgRklUDQo+ID4gc3BlY2lmaWNhdGlvbi4NCj4gPiBUaGUgb25seSB3YXkgdG8gaWRlbnRp ZnkgaWYgRklUIHRhYmxlIGlzIGV4aXN0IGluIEZJVA0KPiA+IHNwZWMgaXMgdGhlIF9GSVRfDQo+ ID4gc2lnbmF0dXJlLCB3aGljaCBkZWZpbmVkIGluIEZJVCBoZWFkZXIgZmlsZSBhcw0KPiA+IEZJ VF9UWVBFXzAwX1NJR05BVFVSRSBhbmQgY2hlY2sgYmVsb3cuDQo+ID4NCj4gPiBUaGlzIGlmIGNo ZWNrIGlzIGNvcGllZCBmcm9tIHRoZQ0KPiA+IEluaXRpYWxpemVGaXRNaWNyb2NvZGVJbmZvKCkg ZnVuY3Rpb24NCj4gPiBpbg0KPiA+IFNpbGljb25cSW50ZWxcSW50ZWxTaWxpY29uUGtnXEZlYXR1 cmVcQ2Fwc3VsZVxNaWNyb2NvZGUNCj4gPiBVcGRhdGVEeGVcTWljcm9jb2RlRm1wLmMuDQo+ID4g SSB0aGluayBpdCBqdXN0IGFzc3VtZXMgdGhlIGRlZmF1bHQgdmFsdWUgb2YgZmxhc2gNCj4gPiBj b250ZW50IGlzIDB4RkYNCj4gPiBvciAweEVFIGFuZCBjaGVjayB0aGF0Lg0KPiA+DQo+ID4gVGhp cyBpcyBhbHNvIHdoeSBJIHVzZSBBU1NFUlQgaWYgdGhlIGZsYXNoIGNvbnRlbnQNCj4gPiBkb2Vz bid0IHNlZW1zDQo+ID4gbGlrZSBhIHZhbGlkIEZJVCB0YWJsZSBpbiBiZWxvdyBpZiBjaGVja3Mu IEZJVCBib290IGlzDQo+ID4gY3JpdGljYWwgdG8NCj4gPiBwcm9jZXNzb3IgbWljcm9jb2RlIGxv YWQgYW5kIEJJT1MgUlRVIHNldHVwLiBBbmQNCj4gPiBpbmNsdWRpbmcNCj4gPiB0aGlzIFBFSU0g aW50byB0aGUgcGxhdGZvcm0gbWVhbnMgdGhlIHBsYXRmb3JtIG93bmVyDQo+ID4gd2FudCB0bw0K PiA+IHVzZSBGSVQgYmFzZWQgYm9vdCBhbmQgbWljcm9jb2RlIGxvYWRpbmcuIFRoZXNlIEFTU0VS VHMNCj4gPiB3b3VsZA0KPiA+IGJlIGhlbHBmdWwgdG8gbGV0IHRoZW0gaWYgdGhlIEZJVCB0YWJs ZSBjb250ZW50IGlzDQo+ID4gaW52YWxpZCBpbiBhIERFQlVHDQo+ID4gdmVyc2lvbiBCSU9TIGlt YWdlLg0KPiA+DQo+ID4gPg0KPiA+ID4gPiArICAgIC8vDQo+ID4gPiA+ICsgICAgLy8gTm8gRklU IHRhYmxlLg0KPiA+ID4gPiArICAgIC8vDQo+ID4gPiA+ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+ ID4gPg0KPiA+ID4gSXMgaXQgYXBwcm9wcmlhdGUgdG8gQVNTRVJUKCkgaGVyZT8gIENhbiB0aGlz IGJlDQo+ID4gcmVtb3ZlZD8NCj4gPiA+IFdvdWxkIGEgREVCVUdfRVJST1IgbWVzc2FnZSBiZSBi ZXR0ZXI/DQo+ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ID4g PiArICB9DQo+ID4gPiA+ICsgIEZpdEVudHJ5ID0gKEZJUk1XQVJFX0lOVEVSRkFDRV9UQUJMRV9F TlRSWSAqKQ0KPiA+ID4gPiAoVUlOVE4pIEZpdFBvaW50ZXI7ICBpZg0KPiA+ID4gPiArICgoRml0 RW50cnlbMF0uVHlwZSAhPSBGSVRfVFlQRV8wMF9IRUFERVIpIHx8DQo+ID4gPiA+ICsgICAgICAo Rml0RW50cnlbMF0uQWRkcmVzcyAhPQ0KPiA+IEZJVF9UWVBFXzAwX1NJR05BVFVSRSkpDQo+ID4g PiA+IHsNCj4gPiA+ID4gKyAgICAvLw0KPiA+ID4gPiArICAgIC8vIEludmFsaWQgRklUIHRhYmxl LCB0cmVhdCBpdCBhcyBubyBGSVQNCj4gPiB0YWJsZS4NCj4gPiA+ID4gKyAgICAvLw0KPiA+ID4g PiArICAgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4NCj4gPiA+IElzIGl0IGFwcHJvcHJpYXRlIHRv IEFTU0VSVCgpIGhlcmU/ICBDYW4gdGhpcyBiZQ0KPiA+IHJlbW92ZWQ/DQo+ID4gPiBXb3VsZCBh IERFQlVHX0VSUk9SIG1lc3NhZ2UgYmUgYmV0dGVyPw0KPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1 cm4gRUZJX05PVF9GT1VORDsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEVu dHJ5TnVtID0gKihVSU5UMzIgKikoJkZpdEVudHJ5WzBdLlNpemVbMF0pICYNCj4gPiA+ID4gMHhG RkZGRkY7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gKyAgLy8gQ2FsY3VsYXRl IG1pY3JvY29kZSBlbnRyeSBudW1iZXINCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gKyAgTWF4UGF0 Y2hOdW1iZXIgPSAwOw0KPiA+ID4gPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBFbnRyeU51 bTsgSW5kZXgrKykgew0KPiA+ID4gPiArICAgIGlmIChGaXRFbnRyeVtJbmRleF0uVHlwZSA9PQ0K PiA+IEZJVF9UWVBFXzAxX01JQ1JPQ09ERSkNCj4gPiA+ID4gew0KPiA+ID4gPiArICAgICAgTWF4 UGF0Y2hOdW1iZXIrKzsNCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKyAg aWYgKE1heFBhdGNoTnVtYmVyID09IDApIHsNCj4gPiA+ID4gKyAgICByZXR1cm4gRUZJX05PVF9G T1VORDsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIFBhdGNoSW5mb0J1ZmZl ciA9IEFsbG9jYXRlUG9vbCAoTWF4UGF0Y2hOdW1iZXIgKg0KPiA+ID4gPiBzaXplb2YNCj4gPiA+ ID4gKyAoTUlDUk9DT0RFX1BBVENIX0lORk8pKTsgIGlmIChQYXRjaEluZm9CdWZmZXIgPT0NCj4g PiA+ID4gTlVMTCkgew0KPiA+ID4gPiArICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsN Cj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ICsgIC8vIEZp bGwgdXAgbWljcm9jb2RlIHBhdGNoIGluZm8gYnVmZmVyIGFjY29yZGluZw0KPiA+IHRvDQo+ID4g PiA+IEZJVCB0YWJsZS4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gKyAgUGF0Y2hDb3VudCA9IDA7 DQo+ID4gPiA+ICsgIFRvdGFsTG9hZFNpemUgPSAwOw0KPiA+ID4gPiArICBmb3IgKEluZGV4ID0g MDsgSW5kZXggPCBFbnRyeU51bTsgSW5kZXgrKykgew0KPiA+ID4gPiArICAgIGlmIChGaXRFbnRy eVtJbmRleF0uVHlwZSA9PQ0KPiA+IEZJVF9UWVBFXzAxX01JQ1JPQ09ERSkNCj4gPiA+ID4gew0K PiA+ID4gPiArICAgICAgTWljcm9jb2RlRW50cnlQb2ludCA9IChDUFVfTUlDUk9DT0RFX0hFQURF Ug0KPiA+ICopDQo+ID4gPiA+IChVSU5UTikgRml0RW50cnlbSW5kZXhdLkFkZHJlc3M7DQo+ID4g PiA+ICsgICAgICBUb3RhbFNpemUgPSAoTWljcm9jb2RlRW50cnlQb2ludC0+RGF0YVNpemUNCj4g PiA9PSAwKQ0KPiA+ID4gPiA/IDIwNDggOiBNaWNyb2NvZGVFbnRyeVBvaW50LT5Ub3RhbFNpemU7 DQo+ID4gPiA+ICsgICAgICBpZiAoSXNNaWNyb2NvZGVQYXRjaE5lZWRMb2FkIChDcHVJZENvdW50 LA0KPiA+ID4gPiBNaWNyb2NvZGVDcHVJZCwgTWljcm9jb2RlRW50cnlQb2ludCkpIHsNCj4gPiA+ ID4gKyAgICAgICAgUGF0Y2hJbmZvQnVmZmVyW1BhdGNoQ291bnRdLkFkZHJlc3MgICAgID0NCj4g PiA+ID4gKFVJTlROKSBNaWNyb2NvZGVFbnRyeVBvaW50Ow0KPiA+ID4gPiArICAgICAgICBQYXRj aEluZm9CdWZmZXJbUGF0Y2hDb3VudF0uU2l6ZSAgICAgICAgPQ0KPiA+ID4gPiBUb3RhbFNpemU7 DQo+ID4gPiA+ICsgICAgICAgIFRvdGFsTG9hZFNpemUgKz0gVG90YWxTaXplOw0KPiA+ID4gPiAr ICAgICAgICBQYXRjaENvdW50Kys7DQo+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ICsgICAgfQ0K PiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaWYgKFBhdGNoQ291bnQgIT0gMCkg ew0KPiA+ID4gPiArICAgIERFQlVHICgoDQo+ID4gPiA+ICsgICAgICBERUJVR19JTkZPLA0KPiA+ ID4gPiArICAgICAgIiVhOiAweCV4IG1pY3JvY29kZSBwYXRjaGVzIHdpbGwgYmUgbG9hZGVkDQo+ ID4gaW50bw0KPiA+ID4gPiBtZW1vcnksIHdpdGggc2l6ZSAweCV4LlxuIiwNCj4gPiA+ID4gKyAg ICAgIF9fRlVOQ1RJT05fXywgUGF0Y2hDb3VudCwgVG90YWxMb2FkU2l6ZQ0KPiA+ID4gPiArICAg ICAgKSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICBTaGFkb3dNaWNyb2NvZGVQYXRjaFdvcmtl ciAoUGF0Y2hJbmZvQnVmZmVyLA0KPiA+ID4gPiBQYXRjaENvdW50LA0KPiA+ID4gPiArIFRvdGFs TG9hZFNpemUsIEJ1ZmZlclNpemUsIEJ1ZmZlcik7ICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAg RnJlZVBvb2wgKFBhdGNoSW5mb0J1ZmZlcik7DQo+ID4gPiA+ICsgIHJldHVybiBFRklfU1VDQ0VT UzsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ ID4gKyAgU2hhZG93IG1pY3JvY29kZSB1cGRhdGUgcGF0Y2hlcyB0byBtZW1vcnkuDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgVGhlIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIHNoYWRvd2luZyBtaWNyb2Nv ZGUNCj4gPiB1cGRhdGUNCj4gPiA+ID4gcGF0Y2hlcyB0byBhIGNvbnRpbnVvdXMgbWVtb3J5Lg0K PiA+ID4gPiArICBJdCBzaGFsbCBhbGxvY2F0ZSBtZW1vcnkgYnVmZmVyIGFuZCBvbmx5IHNoYWRv dw0KPiA+IHRoZQ0KPiA+ID4gPiBtaWNyb2NvZGUgcGF0Y2hlcw0KPiA+ID4gPiArIGZvciB0aG9z ZSAgcHJvY2Vzc29ycyBzcGVjaWZpZWQgYnkgTWljcm9jb2RlQ3B1SWQNCj4gPiA+ID4gYXJyYXku IFRoZSBjaGVja3N1bQ0KPiA+ID4gPiArIHZlcmlmaWNhdGlvbiBtYXkgYmUgIHNraXBlZCBpbiB0 aGlzIGZ1bmN0aW9uIHNvDQo+ID4gdGhlDQo+ID4gPiA+IGNhbGxlciBtdXN0DQo+ID4gPiA+ICsg cGVyZm9ybSBjaGVja3N1bSB2ZXJpZmljYXRpb24gYmVmb3JlICB1c2luZyB0aGUNCj4gPiA+ID4g bWljcm9jb2RlIHBhdGNoZXMgaW4gcmV0dXJuZWQgbWVtb3J5IGJ1ZmZlci4NCj4gPiA+ID4gKw0K PiA+ID4gPiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAgICAgICBUaGUgUFBJDQo+ID4g aW5zdGFuY2UNCj4gPiA+ID4gcG9pbnRlci4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQ3B1SWRD b3VudCAgICAgICAgICAgTnVtYmVyIG9mDQo+ID4gZWxlbWVudHMNCj4gPiA+ID4gaW4gTWljcm9j b2RlQ3B1SWQgYXJyYXkuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIE1pY3JvY29kZUNwdUlkICAg ICAgIEEgcG9pbnRlciB0byBhbg0KPiA+ID4gPiBhcnJheSBvZiBFREtJSV9QRUlfTUlDUk9DT0RF X0NQVV9JRA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3R1cmVzLg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCdWZmZXJTaXplICAgICAgICAgICBQb2lu dGVyIHRvDQo+ID4gcmVjZWl2ZQ0KPiA+ID4gPiB0aGUgdG90YWwgc2l6ZSBvZiBCdWZmZXIuDQo+ ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJ1ZmZlciAgICAgICAgICAgICAgIFBvaW50ZXIgdG8NCj4g PiByZWNlaXZlDQo+ID4gPiA+IGFkZHJlc3Mgb2YgYWxsb2NhdGVkIG1lbW9yeQ0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG1pY3JvY29kZQ0KPiA+ID4g PiBwYXRjaGVzIGRhdGEgaW4gaXQuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgICAgVGhlIG1pY3JvY29kZQ0KPiA+IGhhcw0KPiA+ID4gPiBiZWVu IHNoYWRvd2VkIHRvIG1lbW9yeS4NCj4gPiA+ID4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09V UkNFUyAgICAgVGhlIG9wZXJhdGlvbg0KPiA+IGZhaWxzDQo+ID4gPiA+IGR1ZSB0byBsYWNrIG9m IHJlc291cmNlcy4NCj4gPiA+ID4gKw0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtFRklfU1RBVFVT DQo+ID4gPiA+ICtTaGFkb3dNaWNyb2NvZGUgKA0KPiA+ID4gPiArICBJTiAgRURLSUlfUEVJX1NI QURPV19NSUNST0NPREVfUFBJICAgICAgICAqVGhpcywNCj4gPiA+ID4gKyAgSU4gIFVJTlRODQo+ ID4gPiA+IENwdUlkQ291bnQsDQo+ID4gPiA+ICsgIElOICBFREtJSV9QRUlfTUlDUk9DT0RFX0NQ VV9JRA0KPiA+ID4gPiAqTWljcm9jb2RlQ3B1SWQsDQo+ID4gPiA+ICsgIE9VVCBVSU5UTg0KPiA+ ID4gPiAqQnVmZmVyU2l6ZSwNCj4gPiA+ID4gKyAgT1VUIFZPSUQNCj4gPiAqKkJ1ZmZlcg0KPiA+ ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIGlmIChCdWZmZXJTaXplID09IE5VTEwg fHwgQnVmZmVyID09IE5VTEwpIHsNCj4gPiA+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFS QU1FVEVSOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgcmV0dXJuIFNoYWRv d01pY3JvY29kZVBhdGNoQnlGaXQgKENwdUlkQ291bnQsDQo+ID4gPiA+IE1pY3JvY29kZUNwdUlk LA0KPiA+ID4gPiArQnVmZmVyU2l6ZSwgQnVmZmVyKTsgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsN Cj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBQbGF0Zm9ybSBJbml0IFBFSSBtb2R1bGUgZW50cnkg cG9pbnQNCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBGaWxlSGFuZGxlICAgICAg ICAgICBOb3QgdXNlZC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgUGVpU2VydmljZXMgICAgICAg ICAgR2VuZXJhbCBwdXJwb3NlDQo+ID4gPiA+IHNlcnZpY2VzIGF2YWlsYWJsZSB0byBldmVyeSBQ RUlNLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgICAgIEVGSV9TVUNDRVNTICAgICAg ICAgIFRoZSBmdW5jdGlvbg0KPiA+ID4gPiBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5DQo+ID4gPiA+ ICsgIEByZXR2YWwgICAgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTIEluc3VmZmljaWVudA0KPiA+ID4g PiByZXNvdXJjZXMgdG8gY3JlYXRlIGRhdGFiYXNlDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0VG SV9TVEFUVVMNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArU2hhZG93TWljcm9jb2RlUGVpbUlu aXQgKA0KPiA+ID4gPiArICBJTiAgICAgICBFRklfUEVJX0ZJTEVfSEFORExFICBGaWxlSGFuZGxl LA0KPiA+ID4gPiArICBJTiBDT05TVCBFRklfUEVJX1NFUlZJQ0VTICAgICAqKlBlaVNlcnZpY2Vz DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ ICsgIC8vIEluc3RhbGwgRURLSUkgU2hhZG93IE1pY3JvY29kZSBQUEkgIC8vDQo+ID4gU3RhdHVz ID0NCj4gPiA+ID4gKw0KPiA+IFBlaVNlcnZpY2VzSW5zdGFsbFBwaShtUGVpU2hhZG93TWljcm9j b2RlUHBpTGlzdCk7DQo+ID4gPiA+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4g PiA+ICsNCj4gPiA+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ID4gK30NCj4gPiA+ID4gZGlm ZiAtLWdpdA0KPiA+ID4gPg0KPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVh dHVyZS9TaGFkb3dNaWNyb2NvZGUNCj4gPiA+ID4gL1NoYWRvd01pY3JvY29kZVBlaS5oDQo+ID4g PiA+DQo+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1NoYWRvd01p Y3JvY29kZQ0KPiA+ID4gPiAvU2hhZG93TWljcm9jb2RlUGVpLmgNCj4gPiA+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uMDRmZTdjYmZkMw0KPiA+ID4g PiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKw0KPiA+ID4gPg0KPiA+IGIvU2lsaWNvbi9JbnRl bC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9TaGFkb3dNaWNyb2NvZGUNCj4gPiA+ID4gL1NoYWRv d01pY3JvYw0KPiA+ID4gPiArKysgb2RlUGVpLmgNCj4gPiA+ID4gQEAgLTAsMCArMSw2MiBAQA0K PiA+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiA+ICsgIFNvdXJjZSBjb2RlIGZpbGUgZm9yIFBsYXRm b3JtIEluaXQgUEVJIG1vZHVsZQ0KPiA+ID4NCj4gPiA+IFRoaXMgZGVzY3JpcHRpb24gZG9lcyBu b3QgbWF0Y2ggdGhlIGNvbnRlbnQNCj4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4gK0NvcHlyaWdo dCAoYykgMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gcmVzZXJ2 ZWQuPEJSPg0KPiA+ID4gPiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gPiA+ID4gKw0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNpZm5k ZWYgX19TSEFET1dfTUlDUk9DT0RFX1BFSV9IX18NCj4gPiA+ID4gKyNkZWZpbmUgX19TSEFET1df TUlDUk9DT0RFX1BFSV9IX18NCj4gPiA+ID4gKw0KPiA+ID4gPiArDQo+ID4gPiA+ICsjaW5jbHVk ZSA8UGlQZWkuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxQcGkvU2hhZG93TWljcm9jb2RlLmg+DQo+ ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9QZWlTZXJ2aWNlc0xpYi5oPg0KPiA+ID4gPiArI2lu Y2x1ZGUgPExpYnJhcnkvSG9iTGliLmg+DQo+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1 Z0xpYi5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiA+ ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPiAjaW5jbHVkZQ0K PiA+ID4gPiArPEluZHVzdHJ5U3RhbmRhcmQvRmlybXdhcmVJbnRlcmZhY2VUYWJsZS5oPg0KPiA+ ID4gPiArI2luY2x1ZGUgPFJlZ2lzdGVyL0ludGVsL01pY3JvY29kZS5oPg0KPiA+ID4gPiArI2lu Y2x1ZGUgPFJlZ2lzdGVyL0ludGVsL0NwdWlkLmg+DQo+ID4gPiA+ICsjaW5jbHVkZSA8R3VpZC9N aWNyb2NvZGVTaGFkb3dJbmZvSG9iLmg+IC8vIC8vDQo+ID4gRGF0YQ0KPiA+ID4gPiBzdHJ1Y3R1 cmUgZm9yDQo+ID4gPiA+ICttaWNyb2NvZGUgcGF0Y2ggaW5mb3JtYXRpb24gLy8gdHlwZWRlZiBz dHJ1Y3Qgew0KPiA+ID4gPiArICBVSU5UTiAgICBBZGRyZXNzOw0KPiA+ID4gPiArICBVSU5UTiAg ICBTaXplOw0KPiA+ID4gPiArfSBNSUNST0NPREVfUEFUQ0hfSU5GTzsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArLyoqDQo+ID4gPiA+ICsgIFNoYWRvdyBtaWNyb2NvZGUgdXBkYXRlIHBhdGNoZXMgdG8g bWVtb3J5Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIFRoZSBmdW5jdGlvbiBpcyB1c2VkIGZvciBz aGFkb3dpbmcgbWljcm9jb2RlDQo+ID4gdXBkYXRlDQo+ID4gPiA+IHBhdGNoZXMgdG8gYSBjb250 aW51b3VzIG1lbW9yeS4NCj4gPiA+ID4gKyAgSXQgc2hhbGwgYWxsb2NhdGUgbWVtb3J5IGJ1ZmZl ciBhbmQgb25seSBzaGFkb3cNCj4gPiB0aGUNCj4gPiA+ID4gbWljcm9jb2RlIHBhdGNoZXMNCj4g PiA+ID4gKyBmb3IgdGhvc2UgIHByb2Nlc3NvcnMgc3BlY2lmaWVkIGJ5IE1pY3JvY29kZUNwdUlk DQo+ID4gPiA+IGFycmF5LiBUaGUgY2hlY2tzdW0NCj4gPiA+ID4gKyB2ZXJpZmljYXRpb24gbWF5 IGJlICBza2lwZWQgaW4gdGhpcyBmdW5jdGlvbiBzbw0KPiA+IHRoZQ0KPiA+ID4gPiBjYWxsZXIg bXVzdA0KPiA+ID4gPiArIHBlcmZvcm0gY2hlY2tzdW0gdmVyaWZpY2F0aW9uIGJlZm9yZSAgdXNp bmcgdGhlDQo+ID4gPiA+IG1pY3JvY29kZSBwYXRjaGVzIGluIHJldHVybmVkIG1lbW9yeSBidWZm ZXIuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAgICAgICAg ICAgVGhlIFBQSQ0KPiA+IGluc3RhbmNlDQo+ID4gPiA+IHBvaW50ZXIuDQo+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIENwdUlkQ291bnQgICAgICAgICAgIE51bWJlciBvZg0KPiA+IGVsZW1lbnRzDQo+ ID4gPiA+IGluIE1pY3JvY29kZUNwdUlkIGFycmF5Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBN aWNyb2NvZGVDcHVJZCAgICAgICBBIHBvaW50ZXIgdG8gYW4NCj4gPiA+ID4gYXJyYXkgb2YgRURL SUlfUEVJX01JQ1JPQ09ERV9DUFVfSUQNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0dXJlcy4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQnVmZmVyU2l6 ZSAgICAgICAgICAgUG9pbnRlciB0bw0KPiA+IHJlY2VpdmUNCj4gPiA+ID4gdGhlIHRvdGFsIHNp emUgb2YgQnVmZmVyLg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCdWZmZXIgICAgICAgICAgICAg ICBQb2ludGVyIHRvDQo+ID4gcmVjZWl2ZQ0KPiA+ID4gPiBhZGRyZXNzIG9mIGFsbG9jYXRlZCBt ZW1vcnkNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBt aWNyb2NvZGUNCj4gPiA+ID4gcGF0Y2hlcyBkYXRhIGluIGl0Lg0KPiA+ID4gPiArDQo+ID4gPiA+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIFRoZSBtaWNyb2NvZGUNCj4gPiBo YXMNCj4gPiA+ID4gYmVlbiBzaGFkb3dlZCB0byBtZW1vcnkuDQo+ID4gPiA+ICsgIEByZXR2YWwg RUZJX09VVF9PRl9SRVNPVVJDRVMgICAgIFRoZSBvcGVyYXRpb24NCj4gPiBmYWlscw0KPiA+ID4g PiBkdWUgdG8gbGFjayBvZiByZXNvdXJjZXMuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyoqLw0KPiA+ ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiArU2hhZG93TWljcm9jb2RlICgNCj4gPiA+ID4gKyAg SU4gIEVES0lJX1BFSV9TSEFET1dfTUlDUk9DT0RFX1BQSSAgICAgICAgKlRoaXMsDQo+ID4gPiA+ ICsgIElOICBVSU5UTg0KPiA+ID4gPiBDcHVJZENvdW50LA0KPiA+ID4gPiArICBJTiAgRURLSUlf UEVJX01JQ1JPQ09ERV9DUFVfSUQNCj4gPiA+ID4gKk1pY3JvY29kZUNwdUlkLA0KPiA+ID4gPiAr ICBPVVQgVUlOVE4NCj4gPiA+ID4gKkJ1ZmZlclNpemUsDQo+ID4gPiA+ICsgIE9VVCBWT0lEDQo+ ID4gKipCdWZmZXINCj4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArI2VuZGlmDQo+ ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4NCj4gPiBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxp Y29uUGtnL0ZlYXR1cmUvU2hhZG93TWljcm9jb2RlDQo+ID4gPiA+IC9TaGFkb3dNaWNyb2NvZGVQ ZWkuaW5mDQo+ID4gPiA+DQo+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0 dXJlL1NoYWRvd01pY3JvY29kZQ0KPiA+ID4gPiAvU2hhZG93TWljcm9jb2RlUGVpLmluZg0KPiA+ ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwLi5iMjc3 Mzk5OGNlDQo+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gKysrDQo+ID4gPiA+DQo+ID4g Yi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1NoYWRvd01pY3JvY29kZQ0K PiA+ID4gPiAvU2hhZG93TWljcm9jDQo+ID4gPiA+ICsrKyBvZGVQZWkuaW5mDQo+ID4gPiA+IEBA IC0wLDAgKzEsNDQgQEANCj4gPiA+ID4gKyMjIyBAZmlsZQ0KPiA+ID4gPiArIyBDb21wb25lbnQg aW5mb3JtYXRpb24gZmlsZSBmb3IgdGhlIFBsYXRmb3JtIEluaXQNCj4gPiBQRUkNCj4gPiA+ID4g bW9kdWxlLg0KPiA+ID4NCj4gPiA+IFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbWF0Y2ggdGhl IGZpbGUgY29udGVudHMuDQo+ID4gPg0KPiA+ID4gPiArIw0KPiA+ID4gPiArIyBDb3B5cmlnaHQg KGMpIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gPiByaWdodHMNCj4gPiA+ID4gcmVz ZXJ2ZWQuPEJSPiAjICMNCj4gPiA+ID4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50ICMgIyMjDQo+ID4gPiA+ICsNCj4gPiA+ID4gK1tEZWZpbmVzXQ0KPiA+ID4g PiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDE3DQo+ID4gPiA+ ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9DQo+ID4gU2hhZG93TWljcm9jb2Rl UGVpDQo+ID4gPiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDhhZjRjZjY4 LWViZTQtDQo+ID4gNGIyMS0NCj4gPiA+ID4gYTAwOC0wY2IzZGEyNzdiZTUNCj4gPiA+ID4gKyAg VkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ID4gPiA+ICsgIE1PRFVMRV9U WVBFICAgICAgICAgICAgICAgICAgICA9IFBFSU0NCj4gPiA+ID4gKyAgRU5UUllfUE9JTlQgICAg ICAgICAgICAgICAgICAgID0NCj4gPiA+ID4gU2hhZG93TWljcm9jb2RlUGVpbUluaXQNCj4gPiA+ ID4gKw0KPiA+ID4gPiArW1NvdXJjZXNdDQo+ID4gPiA+ICsgIFNoYWRvd01pY3JvY29kZVBlaS5j DQo+ID4gPiA+ICsgIFNoYWRvd01pY3JvY29kZVBlaS5oDQo+ID4gPiA+ICsNCj4gPiA+ID4gK1tM aWJyYXJ5Q2xhc3Nlc10NCj4gPiA+ID4gKyAgUGVpbUVudHJ5UG9pbnQNCj4gPiA+ID4gKyAgRGVi dWdMaWINCj4gPiA+ID4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiA+ID4gPiArICBCYXNlTWVt b3J5TGliDQo+ID4gPiA+ICsgIEhvYkxpYg0KPiA+ID4gPiArICBQZWlTZXJ2aWNlc0xpYg0KPiA+ ID4gPiArDQo+ID4gPiA+ICtbUGFja2FnZXNdDQo+ID4gPiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVj DQo+ID4gPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gPiA+ICsgIFVl ZmlDcHVQa2cvVWVmaUNwdVBrZy5kZWMNCj4gPiA+ID4gKyAgSW50ZWxTaWxpY29uUGtnL0ludGVs U2lsaWNvblBrZy5kZWMNCj4gPiA+ID4gKw0KPiA+ID4gPiArW1BwaXNdDQo+ID4gPiA+ICsgIGdF ZGtpaVBlaVNoYWRvd01pY3JvY29kZVBwaUd1aWQNCj4gPiA+ID4gIyMgUFJPRFVDRVMNCj4gPiA+ ID4gKw0KPiA+ID4gPiArW0d1aWRzXQ0KPiA+ID4gPiArICBnRWRraWlNaWNyb2NvZGVTaGFkb3dJ bmZvSG9iR3VpZA0KPiA+ID4gPiArICBnRWRraWlNaWNyb2NvZGVTdG9yYWdlVHlwZUZsYXNoR3Vp ZA0KPiA+ID4gPiArDQo+ID4gPiA+ICtbRGVwZXhdDQo+ID4gPiA+ICsgIFRSVUUNCj4gPiA+ID4g ZGlmZiAtLWdpdA0KPiA+ID4gPg0KPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cv SW5jbHVkZS9HdWlkL01pY3JvY29kZVMNCj4gPiA+ID4gaGFkb3dJbmZvSG9iLmgNCj4gPiA+ID4N Cj4gPiBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0luY2x1ZGUvR3VpZC9NaWNyb2Nv ZGVTDQo+ID4gPiA+IGhhZG93SW5mb0hvYi5oDQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLjU5YTM4Y2VlNzQNCj4gPiA+ID4gLS0tIC9kZXYv bnVsbA0KPiA+ID4gPiArKysNCj4gPiA+ID4NCj4gPiBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxp Y29uUGtnL0luY2x1ZGUvR3VpZC9NaWNyb2NvZGVTDQo+ID4gPiA+IGhhZG93SW5mb0hvYi4NCj4g PiA+ID4gKysrIGgNCj4gPiA+ID4gQEAgLTAsMCArMSw1NyBAQA0KPiA+ID4gPiArLyoqIEBmaWxl DQo+ID4gPiA+ICsgIFRoZSBkZWZpbml0aW9uIGZvciBWVEQgUE1SIFJlZ2lvbnMgSW5mb3JtYXRp b24NCj4gPiBIb2IuDQo+ID4gPg0KPiA+ID4gVGhpcyBkZXNjcmlwdGlvbiBkb2VzIG5vdCBtYXRj aCB0aGUgY29udGVudA0KPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBDb3B5cmlnaHQgKGMp IDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gPiByaWdodHMNCj4gPiA+ID4gcmVzZXJ2 ZWQuPEJSPg0KPiA+ID4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudCAqKi8NCj4gPiA+ID4gKw0KPiA+ID4gPiArDQo+ID4gPiA+ICsjaWZuZGVmIF9NSUNS T0NPREVfU0hBRE9XX0lORk9fSE9CX0hfDQo+ID4gPiA+ICsjZGVmaW5lIF9NSUNST0NPREVfU0hB RE9XX0lORk9fSE9CX0hfDQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8vLw0KPiA+ID4gPiArLy8vIFRo ZSBHbG9iYWwgSUQgb2YgYSBHVUlEZWQgSE9CIHVzZWQgdG8gcGFzcw0KPiA+ID4gPiBtaWNyb2Nv ZGUgc2hhZG93IGluZm8gdG8gRFhFIERyaXZlci4NCj4gPiA+ID4gKy8vLw0KPiA+ID4gPiArI2Rl ZmluZSBFREtJSV9NSUNST0NPREVfU0hBRE9XX0lORk9fSE9CX0dVSUQgXA0KPiA+ID4gPiArICB7 IFwNCj4gPiA+ID4gKyAgICAweDY1ODkwM2Y5LCAweGRhNjYsIDB4NDYwZCwgeyAweDhiLCAweGIw LA0KPiA+IDB4OWQsDQo+ID4gPiA+IDB4MmQsIDB4ZGYsIDB4NjUsDQo+ID4gPiA+ICsweDQ0LCAw eDU5IH0gXA0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2V4dGVybiBFRklfR1VJ RCBnRWRraWlNaWNyb2NvZGVTaGFkb3dJbmZvSG9iR3VpZDsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr dHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ID4gPiArICAvLw0KPiA+ID4gPiArICAvLyBOdW1iZXIgb2Yg dGhlIG1pY3JvY29kZSBwYXRjaGVzIHdoaWNoIGhhdmUNCj4gPiBiZWVuDQo+ID4gPiA+ICsgIC8v IHJlbG9jYXRlZCB0byBtZW1vcnkuDQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ICsgIFVJTlQ2NCAg ICBNaWNyb2NvZGVDb3VudDsNCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gKyAgLy8gQW4gRUZJX0dV SUQgdGhhdCBkZWZpbmVzIHRoZSBjb250ZW50cyBvZg0KPiA+ID4gPiBTdG9yYWdlQ29udGV4dC4N Cj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gKyAgR1VJRCAgICAgIFN0b3JhZ2VUeXBlOw0KPiA+ID4g PiArICAvLw0KPiA+ID4gPiArICAvLyBBbiBhcnJheSB3aXRoIE1pY3JvY29kZUNvdW50IGVsZW1l bnRzIHRoYXQNCj4gPiBzdG9yZXMNCj4gPiA+ID4gKyAgLy8gdGhlIHNoYWRvd2VkIG1pY3JvY29k ZSBwYXRjaCBhZGRyZXNzIGluDQo+ID4gbWVtb3J5Lg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPiAr ICBVSU5UNjQgICAgTWljcm9jb2RlQWRkckluTWVtb3J5WzBdOw0KPiA+ID4NCj4gPiA+IFNpbmNl IHRoaXMgaXMgdGhlIGxhc3QgZmllbGQgaW4gdGhlIHN0cnVjdHVyZSB2aXNpYmxlDQo+ID4gdG8g dGhlDQo+ID4gPiBDIGNvbXBpbGVyLCB5b3UgY2FuIHVzZSBbXSBpbnN0ZWFkIG9mIFswXSBzbyBp dCBpcw0KPiA+IGludGVycHJldGVkDQo+ID4gPiBieSB0aGUgY29tcGlsZXIgYXMgYSBmbGV4aWJs ZSBhcnJheSBtZW1iZXIuIFRoaXMgY2FuDQo+ID4gbWFrZQ0KPiA+ID4gY29kZSB0aGF0IHVzZXMg dGhpcyBzdHJ1Y3R1cmUgZWFzaWVyIHRvIHJlYWQuDQo+ID4gPg0KPiA+ID4gaHR0cHM6Ly9lbi53 aWtpcGVkaWEub3JnL3dpa2kvRmxleGlibGVfYXJyYXlfbWVtYmVyDQo+ID4gPg0KPiA+ID4NCj4g PiA+ID4gKyAgLy8NCj4gPiA+ID4gKyAgLy8gQSBidWZmZXIgd2hpY2ggY29udGFpbnMgZGV0YWls cyBhYm91dCB0aGUNCj4gPiBzdG9yYWdlDQo+ID4gPiA+IGluZm9ybWF0aW9uDQo+ID4gPiA+ICsg IC8vIHNwZWNpZmljIHRvIFN0b3JhZ2VUeXBlLg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPiArICAv LyBVSU5UOCAgU3RvcmFnZUNvbnRleHRbXTsNCj4gPiA+ID4gK30gRURLSUlfTUlDUk9DT0RFX1NI QURPV19JTkZPX0hPQjsNCj4gPiA+ID4gKw0KPiA+ID4gPiArLy8NCj4gPiA+ID4gKy8vIEFuIEVE S0lJX01JQ1JPQ09ERV9TSEFET1dfSU5GT19IT0Igd2l0aA0KPiA+IFN0b3JhZ2VUeXBlDQo+ID4g PiA+IHNldCB0byBiZWxvdw0KPiA+ID4gPiArR1VJRCB3aWxsIC8vIGhhdmUgdGhlIFN0b3JhZ2VD b250ZXh0IG9mIGFuIGFycmF5DQo+ID4gd2l0aA0KPiA+ID4gPiBNaWNyb2NvZGVDb3VudCBvZg0K PiA+ID4gPiArVUlOVDY0IGVsZW1lbnRzIC8vIHRoYXQgc3RvcmVzIHRoZSBvcmlnaW5hbA0KPiA+ IG1pY3JvY29kZQ0KPiA+ID4gPiBwYXRjaCBhZGRyZXNzIG9uDQo+ID4gPiA+ICtmbGFzaC4gVGhp cyBhZGRyZXNzIGlzIC8vIHBsYWNlZCBpbiBzYW1lIG9yZGVyIGFzDQo+ID4gdGhlDQo+ID4gPiA+ IG1pY3JvY29kZSBwYXRjaGVzIGluIE1pY3JvY29kZUFkZHJJbk1lbW9yeS4NCj4gPiA+ID4gKy8v DQo+ID4gPiA+ICsjZGVmaW5lIEVGSV9NSUNST0NPREVfU1RPUkFHRV9UUFlFX0ZMQVNIX0dVSUQg XA0KPiA+ID4NCj4gPiA+IFR5cG8uICAiVFBZRSIgc2hvdWxkIGJlICJUWVBFIi4NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gU2hvdWxkIGEgZGF0YSBzdHJ1Y3R1cmUgYmUgYWRkZWQgdGhhdCBpcyBhc3Nv Y2lhdGVkDQo+ID4gd2l0aA0KPiA+ID4gRUZJX01JQ1JPQ09ERV9TVE9SQUdFX1RZUEVfRkxBU0hf R1VJRCBzbyBpdCBjYW4gYmUNCj4gPiB1c2VkDQo+ID4gPiB0byBpbnRlcnByZXQgU3RvcmFnZUNv bnRleHQgZmllbGQgd2hlbiBTdG9yYWdlVHlwZQ0KPiA+IG1hdGNoZXMNCj4gPiA+IHRoaXMgR1VJ RCB2YWx1ZT8gIFRoaXMgd2F5LCB0aGUgdGV4dCBpbiB0aGUgY29tbWVudHMNCj4gPiBpcw0KPiA+ ID4gbm90IHJlcXVpcmVkIHRvIGtub3cgdGhlIGxheW91dCBvZiBTdG9yYWdlQ29udGV4dC4NCj4g PiA+DQo+ID4gPiAgIHR5cGVkZWYgc3RydWN0IHsNCj4gPiA+ICAgICBVSU5UNjQgIE1pY3JvY29k ZUFkZHJlc3NJbkZsYXNoW107DQo+ID4gPiAgIH0gRUZJX01JQ1JPQ09ERV9TVE9SQUdFX1RZUEVf RkxBU0hfQ09OVEVYVDsNCj4gPiA+DQo+ID4gPiBJbiBvcmRlciB0byBtYWtlIGV2ZXJ5dGhpbmcg YWxpZ25lZCBiZXR0ZXIgc2hvdWxkIHRoZQ0KPiA+ID4gU3RvcmFnZUd1aWQgYmUgbGlzdGVkIGJl Zm9yZSBNaWNyb2NvZGVDb3VudCwgc28gdGhlDQo+ID4gb3JkZXINCj4gPiA+IGlzIGZyb20gbGFy Z2VzdCB0byBzbWFsbGVzdC4gIFRoaXMgYWxzbyBndWFyYW50ZWVzDQo+ID4gdGhhdA0KPiA+ID4g U3RvcmFnZUNvbnRleHQgaXMgYWxpZ25lZCBvbiBhbiA4LWJ5dGUgYm91bmRhcnkgd2hpY2gNCj4g PiBpcw0KPiA+ID4gY29tcGF0aWJsZSB3aXRoIGEgdHlwZWNhc3QgdG8gYSBTdG9yYWdlVHlwZSBz cGVjaWZpYw0KPiA+IHN0cnVjdHVyZS4NCj4gPiA+DQo+ID4gPiA+ICsgIHsgXA0KPiA+ID4gPiAr ICAgIDB4MmNiYTAxYjMsIDB4ZDM5MSwgMHg0NTk4LCB7IDB4OGQsIDB4ODksDQo+ID4gMHhiNywN Cj4gPiA+ID4gMHhmYywgMHgzOSwgMHgyMiwNCj4gPiA+ID4gKzB4ZmQsIDB4NzEgfSBcDQo+ID4g PiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArZXh0ZXJuIEVGSV9HVUlEDQo+ID4gZ0Vka2lp TWljcm9jb2RlU3RvcmFnZVR5cGVGbGFzaEd1aWQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNlbmRp Zg0KPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGlj b25Qa2cvSW50ZWxTaWxpY29uUGtnLmRlYw0KPiA+ID4gPiBiL1NpbGljb24vSW50ZWwvSW50ZWxT aWxpY29uUGtnL0ludGVsU2lsaWNvblBrZy5kZWMNCj4gPiA+ID4gaW5kZXggMjJlYmYxOWM0ZS4u MmQ4ZTQwZjBiOCAxMDA2NDQNCj4gPiA+ID4gLS0tDQo+ID4gYS9TaWxpY29uL0ludGVsL0ludGVs U2lsaWNvblBrZy9JbnRlbFNpbGljb25Qa2cuZGVjDQo+ID4gPiA+ICsrKyBiL1NpbGljb24vSW50 ZWwvSW50ZWxTaWxpY29uUGtnLw0KPiA+IEludGVsU2lsaWNvblBrZy5kZWMNCj4gPiA+ID4gQEAg LTQ4LDYgKzQ4LDEyIEBADQo+ID4gPg0KPiA+ID4gSGVhZGVyIG9mIEludGVsU2lsaWNvblBrZy5k ZWMgbmVlZHMgdG8gaGF2ZSBjb3B5cmlnaHQNCj4gPiB1cGRhdGVkDQo+ID4gPiB0byAyMDIwLg0K PiA+ID4NCj4gPiA+ID4gICAgIyMgSE9CIEdVSUQgdG8gZ2V0IG1lbW9yeSBpbmZvcm1hdGlvbiBh ZnRlciBNUkMNCj4gPiBpcw0KPiA+ID4gPiBkb25lLiBUaGUgaG9iIGRhdGEgd2lsbCBiZSB1c2Vk IHRvIHNldCB0aGUgUE1SDQo+ID4gcmFuZ2VzDQo+ID4gPiA+ICAgIGdWdGRQbXJJbmZvRGF0YUhv Ykd1aWQgPSB7MHg2ZmI2MTY0NSwgMHhmMTY4LA0KPiA+ID4gPiAweDQ2YmUsIHsgMHg4MCwgMHhl YywgMHhiNSwgMHgwMiwgMHgzOCwgMHg1ZSwgMHhlNywNCj4gPiA+ID4gMHhlNyB9IH0NCj4gPiA+ ID4NCj4gPiA+ID4gKyAgIyMgSW5jbHVkZS9HdWlkL01pY3JvY29kZVNoYWRvd0luZm9Ib2IuaA0K PiA+ID4gPiArICBnRWRraWlNaWNyb2NvZGVTaGFkb3dJbmZvSG9iR3VpZCA9IHsgMHg2NTg5MDNm OSwNCj4gPiA+ID4gMHhkYTY2LCAweDQ2MGQsIHsNCj4gPiA+ID4gKyAweDhiLCAweGIwLCAweDlk LCAweDJkLCAweGRmLCAweDY1LCAweDQ0LCAweDU5IH0NCj4gPiB9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgIyMgSW5jbHVkZS9HdWlkL01pY3JvY29kZVNoYWRvd0luZm9Ib2IuaA0KPiA+ID4gPiAr ICBnRWRraWlNaWNyb2NvZGVTdG9yYWdlVHlwZUZsYXNoR3VpZCA9IHsNCj4gPiAweDJjYmEwMWIz LA0KPiA+ID4gPiAweGQzOTEsIDB4NDU5OCwgew0KPiA+ID4gPiArIDB4OGQsIDB4ODksIDB4Yjcs IDB4ZmMsIDB4MzksIDB4MjIsIDB4ZmQsIDB4NzEgfQ0KPiA+IH0NCj4gPiA+ID4gKw0KPiA+ID4g PiAgW1BwaXNdDQo+ID4gPiA+ICAgIGdFZGtpaVZUZEluZm9QcGlHdWlkID0geyAweDhhNTlmY2Iz LCAweGYxOTEsDQo+ID4gMHg0MDBjLA0KPiA+ID4gPiB7IDB4OTcsIDB4NjcsIDB4NjcsIDB4YWYs IDB4MmIsIDB4MjUsIDB4NjgsIDB4NGEgfQ0KPiA+IH0NCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAt LWdpdA0KPiA+ID4gPiBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ludGVsU2lsaWNv blBrZy5kc2MNCj4gPiA+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9JbnRlbFNp bGljb25Qa2cuZHNjDQo+ID4gPiA+IGluZGV4IDBhNjUwOWQ4YjMuLmY5OTU4ODM2OTEgMTAwNjQ0 DQo+ID4gPiA+IC0tLQ0KPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvSW50ZWxT aWxpY29uUGtnLmRzYw0KPiA+ID4gPiArKysNCj4gPiBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxp Y29uUGtnL0ludGVsU2lsaWNvblBrZy5kc2MNCj4gPiA+ID4gQEAgLTEsNyArMSw3IEBADQo+ID4g PiA+ICAjIyBAZmlsZQ0KPiA+ID4gPiAgIyBUaGlzIHBhY2thZ2UgcHJvdmlkZXMgY29tbW9uIG9w ZW4gc291cmNlIEludGVsDQo+ID4gPiA+IHNpbGljb24gbW9kdWxlcy4NCj4gPiA+ID4gICMNCj4g PiA+ID4gLSMgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uDQo+ ID4gQWxsDQo+ID4gPiA+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ICsjIENvcHlyaWdo dCAoYykgMjAxNyAtIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLg0KPiA+IEFsbA0KPiA+ID4gPiBy aWdodHMNCj4gPiA+ID4gK3Jlc2VydmVkLjxCUj4NCj4gPiA+ID4gICMNCj4gPiA+ID4gICMgICAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ID4gICMN Cj4gPiA+ID4gQEAgLTg0LDYgKzg0LDcgQEANCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiBJbnRlbFNp bGljb25Qa2cvRmVhdHVyZS9WVGQvUGxhdGZvcm1WVGRJbmZvU2FtcGxlUGVpL1BsDQo+ID4gPiA+ IGF0Zm9ybVZUZEluZm9TYW1wbGVQZWkuaW5mDQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gSW50ZWxT aWxpY29uUGtnL0ZlYXR1cmUvQ2Fwc3VsZS9NaWNyb2NvZGVVcGRhdGVEeGUvTWljcg0KPiA+ID4g PiBvY29kZVVwZGF0ZUR4ZS5pbmYNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiBJbnRlbFNpbGljb25Q a2cvRmVhdHVyZS9DYXBzdWxlL0xpYnJhcnkvTWljcm9jb2RlRmxhc2hBDQo+ID4gPiA+IGNjZXNz TGliTnVsbC9NaWNyb2NvZGVGbGFzaEFjY2Vzc0xpYk51bGwuaW5mDQo+ID4gPiA+ICsNCj4gPiA+ ID4NCj4gPiBJbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9TaGFkb3dNaWNyb2NvZGUvU2hhZG93TWlj cm9jb2RlDQo+ID4gPiA+IFBlaS5pbmYNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiBJbnRlbFNpbGlj b25Qa2cvTGlicmFyeS9QZWlEeGVTbW1Cb290TWVkaWFMaWIvUGVpRmlybXdhDQo+ID4gPiA+IHJl Qm9vdE1lZGlhTGliLmluZg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+IEludGVsU2lsaWNvblBrZy9M aWJyYXJ5L1BlaUR4ZVNtbUJvb3RNZWRpYUxpYi9EeGVTbW1GaXINCj4gPiA+ID4gbXdhcmVCb290 TWVkaWFMaWIuaW5mDQo+ID4gPiA+DQo+ID4gPiA+IC0tDQo+ID4gPiA+IDIuMTkuMS53aW5kb3dz LjENCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gDQoNCg==