From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.37.126; helo=nam02-cy1-obe.outbound.protection.outlook.com; envelope-from=christopher.co@microsoft.com; receiver=edk2-devel@lists.01.org Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0126.outbound.protection.outlook.com [104.47.37.126]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 9F8C121BADAB9 for ; Wed, 8 Aug 2018 22:42:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6BgQvNptx/vphKNBc8OIlexgbDVDW203jXPcrjOm0SI=; b=aoJATYIvWm9mqMHf6Xq3rw9+Ec/g+V7cvW5xXgPk2wYd0zsqNXSdu2a9KJtjPv25DVmriV92ZdrXFhlneTcXkF5vJK3qeS2yMFzo6vBdwL5T4cL8VbT5ktNUw+v37Tmp9W8SZc345WwHOTRKABSpOvhCib4bkCpLg9JPgqB2c/g= Received: from DM5PR2101MB1128.namprd21.prod.outlook.com (52.132.133.20) by DM5PR2101MB1047.namprd21.prod.outlook.com (52.132.128.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1059.5; Thu, 9 Aug 2018 05:42:02 +0000 Received: from DM5PR2101MB1128.namprd21.prod.outlook.com ([fe80::95a8:6c24:9ca4:e80e]) by DM5PR2101MB1128.namprd21.prod.outlook.com ([fe80::95a8:6c24:9ca4:e80e%4]) with mapi id 15.20.1059.010; Thu, 9 Aug 2018 05:42:02 +0000 From: Chris Co To: Leif Lindholm CC: "edk2-devel@lists.01.org" , Michael D Kinney , Ard Biesheuvel Thread-Topic: [PATCH edk2-platforms 1/4] Platform/Solidrun: Add Hummingboard SmBios Thread-Index: AQHUIVuVMzcpjlw1/0CNTDKx+vZL/KS0V4uAgAKWFmA= Date: Thu, 9 Aug 2018 05:42:02 +0000 Message-ID: References: <20180722013021.10788-1-christopher.co@microsoft.com> <20180722013021.10788-2-christopher.co@microsoft.com> <20180807124951.qohmw6a3mvtvxyoh@bivouac.eciton.net> In-Reply-To: <20180807124951.qohmw6a3mvtvxyoh@bivouac.eciton.net> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=True; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Owner=chrco@microsoft.com; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2018-08-09T05:41:59.4282205Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=General; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Application=Microsoft Azure Information Protection; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Extended_MSFT_Method=Automatic; Sensitivity=General x-originating-ip: [2001:4898:80e8:f:c1c5:c90d:e68f:7b96] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DM5PR2101MB1047; 6:tvp2GSllg9T0J4cevmej5vdz3BEnRWYh074mp+iw1SYjLxAEMuQZpc02yx6Mp2nBZn4QOoGFFc9qrmrOLdGVgOJ94yUbzSv+9IaFAV3+5m0H3kQzTDizLVYe34dmG+qDAgPzPzokNUeWVPYS2uIsf2ZOZ5tEvKYGmWNNqrcciUXRRXp8l2fIOcnbwAb2c2dh2mbEOk7o1r3yuNp9QdPZn+ZI1JOSQCGygNWfhLuuIooTX+bDL9EgW+mZDYNM/vX+YGJOY8zn682T9RR8KA+cjpmI8JfX7MHHrPjSJ5fNuSsNeHjac/+fKtr0Ung2TKOSr8VUDMnLaA0klKwa3OC1EkLZ1XF/h8o+4+H+yDwOQjF8uKXV/m4YQDZ0I9NObDWuPcVQi30spVb13C6cmLZA2DqIO5ScSGj+5OBdhQK1pZX79BTdRf9ZS3Aql3euXX0oII/XfY5VtF4eQ/dK7ONxzw==; 5:5+PDaFKV/GQ84kYz6h2jTGg9+Viz+3UFuFoPobk6UQ/rsU9p/EhNVYKrbljyERqS115fVfVYHPvSl++PUy5crT2RpGoEKpHE3AB8KxSeGECEl5xqKsm6DiGIfk6zohv2HjlR/T0gDa7mjdQHR4RQibQp0croCVfRWhtY7S096bs=; 7:a6pdVZB6ivXLBWgKIQRM+dBnJOcxwAmdrXZNX7HzyQIwQS4LHZbVBXBZJsH4z5UlL1syWMNyFUYTUoWUMQQQUnKDvvoKrk5nzxNCwPHWM2uX13w7V2m1ZgOGNTXxEOsEU74FNKKLauOSjrdYlvLH9aX6aDFeNZ32nYSOmL/sa5gCBOq3ApwV7GNUctyb2l2G1JL1bc+N6DncYCdWd5yD7ckXECf2vQScBJfAly8vdCOiG6qAgHalb6O4CG14Ae2L x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 2693eb08-6b39-4d0c-a656-08d5fdbad519 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7193020); SRVR:DM5PR2101MB1047; x-ms-traffictypediagnostic: DM5PR2101MB1047: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Christopher.Co@microsoft.com; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171)(189930954265078)(162533806227266)(219752817060721)(228905959029699); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(3231311)(944501410)(52105095)(2018427008)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123562045)(20161123560045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:DM5PR2101MB1047; BCL:0; PCL:0; RULEID:; SRVR:DM5PR2101MB1047; x-forefront-prvs: 0759F7A50A x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6029001)(39860400002)(376002)(346002)(136003)(396003)(366004)(13464003)(40224003)(199004)(189003)(53936002)(229853002)(10090500001)(4326008)(8990500004)(2900100001)(2906002)(9686003)(105586002)(6916009)(106356001)(6436002)(25786009)(14454004)(33656002)(68736007)(966005)(6306002)(6246003)(345774005)(53946003)(16200700003)(72206003)(478600001)(86362001)(55016002)(575784001)(10290500003)(86612001)(5250100002)(19627235002)(45954006)(54906003)(53546011)(6506007)(14444005)(102836004)(99286004)(6116002)(256004)(81166006)(186003)(81156014)(8676002)(11346002)(76176011)(8936002)(74316002)(5660300001)(446003)(7696005)(97736004)(16799955002)(476003)(7736002)(316002)(22452003)(305945005)(46003)(486006)(579004)(569006); DIR:OUT; SFP:1102; SCL:1; SRVR:DM5PR2101MB1047; H:DM5PR2101MB1128.namprd21.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: YkGfcvtSWOWWtbr/BIZmNW+rWl//KqgbFidZYxg7wc1MM/TfCqS1MbcFDourIXevGzRz0nnVVnWOXxEkMjMn02tqKKOjMEsjkAgN0jXAZSDFiKrgxzEfegqrsyXHz/v5tQRehaHySwetPlt6gfpyDa2qGZk2t56CcEwt6xMJTqLygZok0AEbTKFod0RtLNfrod3R109RweJghB/JlMdDnn9SGEMv2GtphkJWSvniJ+YR0/Yb1nfheX26q/31mAUItOBpUs8I9vAZzasNegjoosYQ2fssKdshTEiOupro7ICCbp52FQVlQ+pMYpeTU9/AkmckgDRvFaYL22uE3zuXZs8l+Q6oB+opofzaDsBdmrc= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2693eb08-6b39-4d0c-a656-08d5fdbad519 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Aug 2018 05:42:02.1684 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR2101MB1047 Subject: Re: [PATCH edk2-platforms 1/4] Platform/Solidrun: Add Hummingboard SmBios X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Aug 2018 05:42:04 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGVpZiwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMZWlmIExp bmRob2xtIDxsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc+DQo+IFNlbnQ6IFR1ZXNkYXksIEF1Z3Vz dCA3LCAyMDE4IDU6NTAgQU0NCj4gVG86IENocmlzIENvIDxDaHJpc3RvcGhlci5Db0BtaWNyb3Nv ZnQuY29tPg0KPiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IE1pY2hhZWwgRCBLaW5uZXkN Cj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVz aGV1dmVsQGxpbmFyby5vcmc+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggZWRrMi1wbGF0Zm9ybXMg MS80XSBQbGF0Zm9ybS9Tb2xpZHJ1bjogQWRkDQo+IEh1bW1pbmdib2FyZCBTbUJpb3MNCj4gDQo+ IEknbGwgc3RhcnQgdHJpY2tsaW5nIHRocm91Z2ggc29tZSBnZW5lcmljIGNvbW1lbnRzIG9uIHRo ZSBjb2RlLCBhcGFydCBmcm9tDQo+IHRoZSBnZW5lcmFsIG9uZXMgSSBtYWRlIGJlZm9yZS4NCj4g DQoNClRoYW5rIHlvdSBmb3IgdGhlc2UgY29tbWVudHMgYW5kIGNvbnRpbnVpbmcgd2l0aCB0aGUg cmV2aWV3LiAgSSBkbyBzaW5jZXJlbHkgYXBvbG9naXplIGFib3V0IGFsbCB0aGUgY29kZSBzdHls ZSBpc3N1ZXMuICBJIHNob3VsZCBoYXZlIGJlZW4gbW9yZSByaWdvcm91cyBhYm91dCBlbmZvcmNp bmcgY29kZSBzdHlsZSBiZWZvcmUgc2VuZGluZyBpdCB1cCAoSXQgd2FzIGEgbG90IHdvcnNlIGJl Zm9yZSA6LSggKQ0KSSBhbSB3b3JraW5nIG9uIGdlbmVyYXRpbmcgdGhlIG5ldyBwYXRjaCBzZXQu ICBDdXJyZW50bHkgYWJvdXQgaGFsZndheSB0aG91Z2guICBJIHdpbGwgaW5jb3Jwb3JhdGUgdGhl c2UgY29tbWVudHMgaW50byBpdC4gIFNob3VsZCBoYXZlIGl0IHJlYWR5IGJ5IGVhcmx5IG5leHQg d2Vlay4gIFRoYXQgc2FpZCwgaWYgeW91IGRvIGhhdmUgbW9yZSBmZWVkYmFjayBvbiBvdGhlciBw YXRjaGVzLCBJIHdvdWxkIGJlIGdsYWQgdG8gaW5jb3Jwb3JhdGUgdGhlbSBpbiBhcyBzb29uIGFz IHRoZXkgYXJlIGF2YWlsYWJsZS4NCg0KPiBPbiBTdW4sIEp1bCAyMiwgMjAxOCBhdCAwMTozMDoz NEFNICswMDAwLCBDaHJpcyBDbyB3cm90ZToNCj4gPiBUaGlzIGFkZHMgU01CSU9TIHN1cHBvcnQg Zm9yIFNvbGlkUnVuJ3MgaS5NWDZRIEh1bW1pbmdib2FyZCBFZGdlLg0KPiA+DQo+ID4gQ29udHJp YnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiA+IFNp Z25lZC1vZmYtYnk6IENocmlzdG9waGVyIENvIDxjaHJpc3RvcGhlci5jb0BtaWNyb3NvZnQuY29t Pg0KPiA+IENjOiBNaWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4N Cj4gPiBDYzogQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+DQo+ID4g Q2M6IExlaWYgTGluZGhvbG0gPGxlaWYubGluZGhvbG1AbGluYXJvLm9yZz4NCj4gPiAtLS0NCj4g Pg0KPiA+ICsgIHsgICAgICAgLy8gQklPU0NoYXJhY3RlcmlzdGljc0V4dGVuc2lvbkJ5dGVzW10N Cj4gPiArICAgIDB4ODEsIC8vICBBY3BpSXNTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgOjE7 DQo+ID4gKyAgICAgICAgICAvLyAgVXNiTGVnYWN5SXNTdXBwb3J0ZWQgICAgICAgICAgICAgIDox Ow0KPiA+ICsgICAgICAgICAgLy8gIEFncElzU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICA6 MTsNCj4gPiArICAgICAgICAgIC8vICBJMk9Cb290SXNTdXBwb3J0ZWQgICAgICAgICAgICAgICAg OjE7DQo+ID4gKyAgICAgICAgICAvLyAgTHMxMjBCb290SXNTdXBwb3J0ZWQgICAgICAgICAgICAg IDoxOw0KPiA+ICsgICAgICAgICAgLy8gIEF0YXBpWmlwRHJpdmVCb290SXNTdXBwb3J0ZWQgICAg ICA6MTsNCj4gPiArICAgICAgICAgIC8vICBCb290MTM5NElzU3VwcG9ydGVkICAgICAgICAgICAg ICAgOjE7DQo+ID4gKyAgICAgICAgICAvLyAgU21hcnRCYXR0ZXJ5SXNTdXBwb3J0ZWQgICAgICAg ICAgIDoxOw0KPiA+ICsgICAgMHgwZSwgLy8gIEJpb3NCb290U3BlY0lzU3VwcG9ydGVkICAgICAg ICAgICA6MTsNCj4gPiArICAgICAgICAgIC8vICBGdW5jdGlvbktleU5ldHdvcmtCb290SXNTdXBw b3J0ZWQgOjE7DQo+ID4gKyAgICAgICAgICAvLyAgVGFyZ2V0Q29udGVudERpc3RyaWJ1dGlvbkVu YWJsZWQgIDoxOw0KPiA+ICsgICAgICAgICAgLy8gIFVlZmlTcGVjaWZpY2F0aW9uU3VwcG9ydGVk ICAgICAgICA6MTsNCj4gPiArICAgICAgICAgIC8vICBWaXJ0dWFsTWFjaGluZVN1cHBvcnRlZCAg ICAgICAgICAgOjE7DQo+ID4gKyAgICAgICAgICAvLyAgRXh0ZW5zaW9uQnl0ZTJSZXNlcnZlZCAg ICAgICAgICAgIDozOw0KPiA+ICsgIH0sDQo+ID4gKyAgMHgwMCwgICAgICAgICAgICAgICAgICAg IC8vIFN5c3RlbUJpb3NNYWpvclJlbGVhc2UNCj4gPiArICAweDAxLCAgICAgICAgICAgICAgICAg ICAgLy8gU3lzdGVtQmlvc01pbm9yUmVsZWFzZQ0KPiA+ICsgIDB4RkYsICAgICAgICAgICAgICAg ICAgICAvLyBFbWJlZGRlZENvbnRyb2xsZXJGaXJtd2FyZU1ham9yUmVsZWFzZQ0KPiA+ICsgIDB4 RkYsICAgICAgICAgICAgICAgICAgICAvLyBFbWJlZGRlZENvbnRyb2xsZXJGaXJtd2FyZU1pbm9y UmVsZWFzZQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArQ0hBUjggKm1CSU9TSW5mb1R5cGUwU3RyaW5n c1tdID0gew0KPiA+ICsgICJUbyBiZSBmaWxsZWQgYnkgTy5FLk0uIiwgLy8gVmVuZG9yIFN0cmlu Zw0KPiA+ICsgICIwLjEiLCAgICAgICAgICAgICAgICAgICAgLy8gQmlvc1ZlcnNpb24gU3RyaW5n DQo+ID4gKyAgX19EQVRFX18sICAgICAgICAgICAgICAgICAvLyBCaW9zUmVsZWFzZURhdGUgU3Ry aW5nDQo+ID4gKyAgTlVMTA0KPiA+ICt9Ow0KPiANCj4gQ291bGQgd2UgYWN0dWFsbHkgZmlsbCB0 aGlzIGluIGluc3RlYWQ/DQo+IFZlbmRvciBTdHJpbmcgaXMgYXJndWFibHkgVGlhbm9Db3JlLg0K PiBXZSBjb3VsZCBkbyBzb21ldGhpbmcgc2ltaWxhciB0byB0aGUgSGlzaWxpY29uIHBsYXRmb3Jt cyBhbmQgdXNlDQo+IGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RGaXJtd2FyZVZl bmRvciBhbmQNCj4gZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEZpcm13YXJlVmVy c2lvblN0cmluZywNCj4gdGhlbiB0d2Vha2VkIGluIHRoZSBwbGF0Zm9ybSAuZHNjLg0KPiANCg0K SSB3aWxsIG1ha2UgdGhpcyBjaGFuZ2UgYW5kIHVzZSBQQ0RzLiAgTXVjaCBjbGVhbmVyIHdpdGgg UENEcy4NCg0KPiA+ICsNCj4gPiArU01CSU9TX1RBQkxFX1RZUEUxIG1TeXNJbmZvVHlwZTEgPSB7 DQo+ID4gKyAgeyBFRklfU01CSU9TX1RZUEVfU1lTVEVNX0lORk9STUFUSU9OLCBzaXplb2YNCj4g KFNNQklPU19UQUJMRV9UWVBFMSksIDAgfSwNCj4gPiArICAxLCAgICAvLyBNYW51ZmFjdHVyZXIg U3RyaW5nDQo+ID4gKyAgMiwgICAgLy8gUHJvZHVjdE5hbWUgU3RyaW5nDQo+ID4gKyAgMywgICAg Ly8gVmVyc2lvbiBTdHJpbmcNCj4gPiArICA0LCAgICAvLyBTZXJpYWxOdW1iZXIgU3RyaW5nDQo+ ID4gKyAgeyAweDI1RUYwMjgwLCAweEVDODIsIDB4NDJCMCwgeyAweDhGLCAweEI2LCAweDEwLCAw eEFELCAweENDLCAweEM2LA0KPiA+ICsweDdDLCAweDAyIH0gfSwNCj4gPiArICBTeXN0ZW1XYWtl dXBUeXBlUG93ZXJTd2l0Y2gsDQo+ID4gKyAgNSwgICAgLy8gU0tVTnVtYmVyIFN0cmluZw0KPiA+ ICsgIDYsICAgIC8vIEZhbWlseSBTdHJpbmcNCj4gPiArfTsNCj4gPiArQ0hBUjggICptU3lzSW5m b1R5cGUxU3RyaW5nc1tdID0gew0KPiA+ICsgICJTb2xpZFJ1biIsDQo+ID4gKyAgIkh1bW1pbmdC b2FyZC1FZGdlIGk0UHJvIiwNCj4gPiArICAiMi4wIiwNCj4gPiArICAiU3lzdGVtIFNlcmlhbCMi LA0KPiA+ICsgICJoYjA0dy1lLTExMC0wMC0wMDQtMCIsDQo+IA0KPiBEbyB3ZSBoYXZlIGFueSB3 YXkgb2Ygb2J0YWluaW5nIHRoZSB0aHJlZSBhYm92ZSBwcm9ncmFtbWF0aWNhbGx5Pw0KPiANCg0K VGhpcyBpcyB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSBmb3IgU3lzaW5mbywgd2hpY2ggZ2V0cyBvdmVy d3JpdHRlbiBhdCBydW50aW1lLiAgR2l2ZW4gdGhhdCB3ZSBhcmUgb3ZlcndyaXRpbmcgdGhpcyB0 YWJsZSBhdCBydW50aW1lLCBJJ20gdGhpbmtpbmcgaXQgd291bGQgYmUgYmV0dGVyIHRvIGp1c3Qg Z2VuZXJhdGUgdGhlIHRhYmxlIHJ1bnRpbWUgYW5kIGF2b2lkIGNvbmZ1c2lvbiBieSBoYXZpbmcg dGhpcyB0ZW1wbGF0ZS4NCg0KPiA+ICsgICJlZGsyIiwNCj4gDQo+IEZhbWlseSBhcyAnZWRrMic/ DQo+IA0KDQpEZWZpbml0ZWx5IHNob3VsZCBub3QgYmUgZWRrMi4gIFdpbGwgZml4IHRoaXMuDQoN Cj4gPiArICBOVUxMDQo+ID4gK307DQo+ID4gKw0KPiA+ICtTTUJJT1NfVEFCTEVfVFlQRTIgIG1C b2FyZEluZm9UeXBlMiA9IHsNCj4gPiArICB7IEVGSV9TTUJJT1NfVFlQRV9CQVNFQk9BUkRfSU5G T1JNQVRJT04sIHNpemVvZg0KPiAoU01CSU9TX1RBQkxFX1RZUEUyKSwgMCB9LA0KPiA+ICsgIDEs ICAgIC8vIE1hbnVmYWN0dXJlciBTdHJpbmcNCj4gPiArICAyLCAgICAvLyBQcm9kdWN0TmFtZSBT dHJpbmcNCj4gPiArICAzLCAgICAvLyBWZXJzaW9uIFN0cmluZw0KPiA+ICsgIDQsICAgIC8vIFNl cmlhbE51bWJlciBTdHJpbmcNCj4gPiArICA1LCAgICAvLyBBc3NldFRhZyBTdHJpbmcNCj4gPiAr ICB7ICAgICAvLyBGZWF0dXJlRmxhZw0KPiA+ICsgICAgMSwgICAgLy8gIE1vdGhlcmJvYXJkICAg ICAgICAgICA6MTsNCj4gPiArICAgIDAsICAgIC8vICBSZXF1aXJlc0RhdWdodGVyQ2FyZCAgOjE7 DQo+ID4gKyAgICAwLCAgICAvLyAgUmVtb3ZhYmxlICAgICAgICAgICAgIDoxOw0KPiA+ICsgICAg MCwgICAgLy8gIFJlcGxhY2VhYmxlICAgICAgICAgICA6MTsNCj4gPiArICAgIDAsICAgIC8vICBI b3RTd2FwcGFibGUgICAgICAgICAgOjE7DQo+ID4gKyAgICAwLCAgICAvLyAgUmVzZXJ2ZWQgICAg ICAgICAgICAgIDozOw0KPiA+ICsgIH0sDQo+ID4gKyAgNiwgICAgICAgICAgICAgICAgICAgICAg ICAvLyBMb2NhdGlvbkluQ2hhc3NpcyBTdHJpbmcNCj4gPiArICAwLCAgICAgICAgICAgICAgICAg ICAgICAgIC8vIENoYXNzaXNIYW5kbGU7DQo+ID4gKyAgQmFzZUJvYXJkVHlwZU1vdGhlckJvYXJk LCAvLyBCb2FyZFR5cGU7DQo+ID4gKyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvLyBOdW1i ZXJPZkNvbnRhaW5lZE9iamVjdEhhbmRsZXM7DQo+ID4gKyAgeyAwIH0gICAgICAgICAgICAgICAg ICAgICAvLyBDb250YWluZWRPYmplY3RIYW5kbGVzWzFdOw0KPiA+ICt9Ow0KPiA+ICtDSEFSOCAg Km1Cb2FyZEluZm9UeXBlMlN0cmluZ3NbXSA9IHsNCj4gPiArICAiU29saWRSdW4iLA0KPiA+ICsg ICJIdW1taW5nQm9hcmQtRWRnZSBpNFBybyIsDQo+ID4gKyAgIjIuMCIsDQo+ID4gKyAgIkJhc2Ug Qm9hcmQgU2VyaWFsIyIsDQo+ID4gKyAgIkJhc2UgQm9hcmQgQXNzZXQgVGFnIyIsDQo+ID4gKyAg ImhiMDR3LWUtMTEwLTAwLTAwNC0wIiwNCj4gDQo+IERvIHdlIGhhdmUgYW55IHdheSBvZiBvYnRh aW5pbmcgdGhlIGZvdXIgYWJvdmUgcHJvZ3JhbW1hdGljYWxseT8NCj4gDQo+ID4gKyAgTlVMTA0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArU01CSU9TX1RBQkxFX1RZUEUzICBtRW5jbG9zdXJlSW5mb1R5 cGUzID0gew0KPiA+ICsgIHsgRUZJX1NNQklPU19UWVBFX1NZU1RFTV9FTkNMT1NVUkUsIHNpemVv Zg0KPiAoU01CSU9TX1RBQkxFX1RZUEUzKSwgMCB9LA0KPiA+ICsgIDEsICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBNYW51ZmFjdHVyZXIgU3RyaW5nDQo+ID4gKyAgTWlzY0NoYXNzaXNUeXBl T3RoZXIsICAgICAgIC8vIFR5cGU7DQo+ID4gKyAgMiwgICAgICAgICAgICAgICAgICAgICAgICAg IC8vIFZlcnNpb24gU3RyaW5nDQo+ID4gKyAgMywgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IFNlcmlhbE51bWJlciBTdHJpbmcNCj4gPiArICA0LCAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gQXNzZXRUYWcgU3RyaW5nDQo+ID4gKyAgQ2hhc3Npc1N0YXRlU2FmZSwgICAgICAgICAgIC8v IEJvb3R1cFN0YXRlOw0KPiA+ICsgIENoYXNzaXNTdGF0ZVNhZmUsICAgICAgICAgICAvLyBQb3dl clN1cHBseVN0YXRlOw0KPiA+ICsgIENoYXNzaXNTdGF0ZVNhZmUsICAgICAgICAgICAvLyBUaGVy bWFsU3RhdGU7DQo+ID4gKyAgQ2hhc3Npc1NlY3VyaXR5U3RhdHVzTm9uZSwgIC8vIFNlY3VyaXR5 U3RhdHVzOw0KPiA+ICsgIHsgMCwgMCwgMCwgMCB9LCAgICAgICAgICAgICAvLyBPZW1EZWZpbmVk WzRdOw0KPiA+ICsgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIZWlnaHQ7DQo+ID4g KyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE51bWJlcm9mUG93ZXJDb3JkczsNCj4g PiArICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udGFpbmVkRWxlbWVudENvdW50 Ow0KPiA+ICsgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250YWluZWRFbGVtZW50 UmVjb3JkTGVuZ3RoOw0KPiA+ICsgIHsgeyAwIH0gfSwgICAgICAgICAgICAgICAgICAvLyBDb250 YWluZWRFbGVtZW50c1sxXTsNCj4gPiArfTsNCj4gPiArQ0hBUjggICptRW5jbG9zdXJlSW5mb1R5 cGUzU3RyaW5nc1tdID0gew0KPiA+ICsgICJTb2xpZFJ1biIsDQo+ID4gKyAgIjIuMCIsDQo+ID4g KyAgIkNoYXNzaXMgQm9hcmQgU2VyaWFsIyIsDQo+ID4gKyAgIkNoYXNzaXMgQm9hcmQgQXNzZXQg VGFnIyIsDQo+IA0KPiBEbyB3ZSBoYXZlIGFueSB3YXkgb2Ygb2J0YWluaW5nIHRoZSB0aHJlZSBh Ym92ZSBwcm9ncmFtbWF0aWNhbGx5Pw0KPiANCj4gPiArICBOVUxMDQo+ID4gK307DQo+ID4gKw0K PiA+ICtTTUJJT1NfVEFCTEVfVFlQRTQgbVByb2Nlc3NvckluZm9UeXBlNCA9IHsNCj4gPiArICB7 IEVGSV9TTUJJT1NfVFlQRV9QUk9DRVNTT1JfSU5GT1JNQVRJT04sIHNpemVvZg0KPiAoU01CSU9T X1RBQkxFX1RZUEU0KSwgMH0sDQo+ID4gKyAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vIFNvY2tldCBTdHJpbmc7DQo+ID4gKyAgQ2VudHJhbFByb2Nlc3NvciwgICAgICAgICAg ICAgICAgIC8vIFByb2Nlc3NvclR5cGU7DQo+ID4gKyAgUHJvY2Vzc29yRmFtaWx5SW5kaWNhdG9y RmFtaWx5MiwgIC8vIFByb2Nlc3NvckZhbWlseTsNCj4gPiArICAyLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gUHJvY2Vzc29yTWFudWZhY3R1cmUgU3RyaW5nOw0KPiA+ICsgIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcm9jZXNzb3JJZDsNCj4gPiArICAg IHsgICAgIC8vIFBST0NFU1NPUl9TSUdOQVRVUkUNCj4gPiArICAgICAgMCwgIC8vICBQcm9jZXNz b3JTdGVwcGluZ0lkOjQ7DQo+ID4gKyAgICAgIDAsICAvLyAgUHJvY2Vzc29yTW9kZWw6ICAgICA0 Ow0KPiA+ICsgICAgICAwLCAgLy8gIFByb2Nlc3NvckZhbWlseTogICAgNDsNCj4gPiArICAgICAg MCwgIC8vICBQcm9jZXNzb3JUeXBlOiAgICAgIDI7DQo+ID4gKyAgICAgIDAsICAvLyAgUHJvY2Vz c29yUmVzZXJ2ZWQxOiAyOw0KPiA+ICsgICAgICAwLCAgLy8gIFByb2Nlc3NvclhNb2RlbDogICAg NDsNCj4gPiArICAgICAgMCwgIC8vICBQcm9jZXNzb3JYRmFtaWx5OiAgIDg7DQo+ID4gKyAgICAg IDAsICAvLyAgUHJvY2Vzc29yUmVzZXJ2ZWQyOiA0Ow0KPiA+ICsgICAgfSwNCj4gPiArICAgIHsg ICAgIC8vIFBST0NFU1NPUl9GRUFUVVJFX0ZMQUdTDQo+ID4gKyAgICAgIDAsICAvLyAgUHJvY2Vz c29yRnB1ICAgICAgIDoxOw0KPiA+ICsgICAgICAwLCAgLy8gIFByb2Nlc3NvclZtZSAgICAgICA6 MTsNCj4gPiArICAgICAgMCwgIC8vICBQcm9jZXNzb3JEZSAgICAgICAgOjE7DQo+ID4gKyAgICAg IDAsICAvLyAgUHJvY2Vzc29yUHNlICAgICAgIDoxOw0KPiA+ICsgICAgICAwLCAgLy8gIFByb2Nl c3NvclRzYyAgICAgICA6MTsNCj4gPiArICAgICAgMCwgIC8vICBQcm9jZXNzb3JNc3IgICAgICAg OjE7DQo+ID4gKyAgICAgIDAsICAvLyAgUHJvY2Vzc29yUGFlICAgICAgIDoxOw0KPiA+ICsgICAg ICAwLCAgLy8gIFByb2Nlc3Nvck1jZSAgICAgICA6MTsNCj4gPiArICAgICAgMCwgIC8vICBQcm9j ZXNzb3JDeDggICAgICAgOjE7DQo+ID4gKyAgICAgIDAsICAvLyAgUHJvY2Vzc29yQXBpYyAgICAg IDoxOw0KPiA+ICsgICAgICAwLCAgLy8gIFByb2Nlc3NvclJlc2VydmVkMSA6MTsNCj4gPiArICAg ICAgMCwgIC8vICBQcm9jZXNzb3JTZXAgICAgICAgOjE7DQo+ID4gKyAgICAgIDAsICAvLyAgUHJv Y2Vzc29yTXRyciAgICAgIDoxOw0KPiA+ICsgICAgICAwLCAgLy8gIFByb2Nlc3NvclBnZSAgICAg ICA6MTsNCj4gPiArICAgICAgMCwgIC8vICBQcm9jZXNzb3JNY2EgICAgICAgOjE7DQo+ID4gKyAg ICAgIDAsICAvLyAgUHJvY2Vzc29yQ21vdiAgICAgIDoxOw0KPiA+ICsgICAgICAwLCAgLy8gIFBy b2Nlc3NvclBhdCAgICAgICA6MTsNCj4gPiArICAgICAgMCwgIC8vICBQcm9jZXNzb3JQc2UzNiAg ICAgOjE7DQo+ID4gKyAgICAgIDAsICAvLyAgUHJvY2Vzc29yUHNuICAgICAgIDoxOw0KPiA+ICsg ICAgICAwLCAgLy8gIFByb2Nlc3NvckNsZnNoICAgICA6MTsNCj4gPiArICAgICAgMCwgIC8vICBQ cm9jZXNzb3JSZXNlcnZlZDIgOjE7DQo+ID4gKyAgICAgIDAsICAvLyAgUHJvY2Vzc29yRHMgICAg ICAgIDoxOw0KPiA+ICsgICAgICAwLCAgLy8gIFByb2Nlc3NvckFjcGkgICAgICA6MTsNCj4gPiAr ICAgICAgMCwgIC8vICBQcm9jZXNzb3JNbXggICAgICAgOjE7DQo+ID4gKyAgICAgIDAsICAvLyAg UHJvY2Vzc29yRnhzciAgICAgIDoxOw0KPiA+ICsgICAgICAwLCAgLy8gIFByb2Nlc3NvclNzZSAg ICAgICA6MTsNCj4gPiArICAgICAgMCwgIC8vICBQcm9jZXNzb3JTc2UyICAgICAgOjE7DQo+ID4g KyAgICAgIDAsICAvLyAgUHJvY2Vzc29yU3MgICAgICAgIDoxOw0KPiA+ICsgICAgICAwLCAgLy8g IFByb2Nlc3NvclJlc2VydmVkMyA6MTsNCj4gPiArICAgICAgMCwgIC8vICBQcm9jZXNzb3JUbSAg ICAgICAgOjE7DQo+ID4gKyAgICAgIDAsICAvLyAgUHJvY2Vzc29yUmVzZXJ2ZWQ0IDoyOw0KPiA+ ICsgICAgfQ0KPiA+ICsgIH0sDQo+ID4gKyAgMywgICAgLy8gUHJvY2Vzc29yVmVyc2lvbiBTdHJp bmc7DQo+ID4gKyAgeyAgICAgLy8gVm9sdGFnZTsNCj4gPiArICAgIDEsICAvLyBQcm9jZXNzb3JW b2x0YWdlQ2FwYWJpbGl0eTVWICAgICAgICA6MTsNCj4gPiArICAgIDEsICAvLyBQcm9jZXNzb3JW b2x0YWdlQ2FwYWJpbGl0eTNfM1YgICAgICA6MTsNCj4gPiArICAgIDEsICAvLyBQcm9jZXNzb3JW b2x0YWdlQ2FwYWJpbGl0eTJfOVYgICAgICA6MTsNCj4gPiArICAgIDAsICAvLyBQcm9jZXNzb3JW b2x0YWdlQ2FwYWJpbGl0eVJlc2VydmVkICA6MTsNCj4gPiArICAgIDAsICAvLyBQcm9jZXNzb3JW b2x0YWdlUmVzZXJ2ZWQgICAgICAgICAgICA6MzsNCj4gPiArICAgIDAgICAvLyBQcm9jZXNzb3JW b2x0YWdlSW5kaWNhdGVMZWdhY3kgICAgICA6MTsNCj4gPiArICB9LA0KPiA+ICsgIDAsICAgICAg ICAgICAgICAgICAgICAgIC8vIEV4dGVybmFsQ2xvY2s7DQo+ID4gKyAgMTIwMCwgICAgICAgICAg ICAgICAgICAgLy8gTWF4U3BlZWQ7DQo+ID4gKyAgNzkyLCAgICAgICAgICAgICAgICAgICAgLy8g Q3VycmVudFNwZWVkOw0KPiA+ICsgIDB4NDEsICAgICAgICAgICAgICAgICAgIC8vIFN0YXR1czsN Cj4gPiArICBQcm9jZXNzb3JVcGdyYWRlT3RoZXIsICAvLyBQcm9jZXNzb3JVcGdyYWRlOw0KPiA+ ICsgIDAsICAgICAgICAgICAgICAgICAgICAgIC8vIEwxQ2FjaGVIYW5kbGU7DQo+ID4gKyAgMCwg ICAgICAgICAgICAgICAgICAgICAgLy8gTDJDYWNoZUhhbmRsZTsNCj4gPiArICAwLCAgICAgICAg ICAgICAgICAgICAgICAvLyBMM0NhY2hlSGFuZGxlOw0KPiA+ICsgIDQsICAgICAgICAgICAgICAg ICAgICAgIC8vIFNlcmlhbE51bWJlcjsNCj4gPiArICA1LCAgICAgICAgICAgICAgICAgICAgICAv LyBBc3NldFRhZzsNCj4gPiArICA2LCAgICAgICAgICAgICAgICAgICAgICAvLyBQYXJ0TnVtYmVy Ow0KPiA+ICsgIDAsICAgICAgICAgICAgICAgICAgICAgIC8vIENvcmVDb3VudDsNCj4gPiArICAw LCAgICAgICAgICAgICAgICAgICAgICAvLyBFbmFibGVkQ29yZUNvdW50Ow0KPiA+ICsgIDAsICAg ICAgICAgICAgICAgICAgICAgIC8vIFRocmVhZENvdW50Ow0KPiA+ICsgIDAsICAgICAgICAgICAg ICAgICAgICAgIC8vIFByb2Nlc3NvckNoYXJhY3RlcmlzdGljczsNCj4gPiArICBQcm9jZXNzb3JG YW1pbHlBUk12NywgICAvLyBQcm9jZXNzb3JGYW1pbHkyOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr Q0hBUjggKm1Qcm9jZXNzb3JJbmZvVHlwZTRTdHJpbmdzW10gPSB7DQo+ID4gKyAgIlNvTSIsDQo+ ID4gKyAgIk5YUCIsDQo+ID4gKyAgImkuTVggNlF1YWQiLA0KPiANCj4gaS5NWDYgUXVhZD8NCj4N Cg0KWWVwLiAgV2lsbCBmaXguDQogDQo+ID4gKyAgIjEuMCIsDQo+ID4gKyAgIjEuMCIsDQo+ID4g KyAgIjEuMCIsDQo+ID4gKyAgTlVMTA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArU01CSU9TX1RBQkxF X1RZUEU3ICBtQ2FjaGVJbmZvVHlwZTdJMSA9IHsNCj4gPiArICB7IEVGSV9TTUJJT1NfVFlQRV9D QUNIRV9JTkZPUk1BVElPTiwgc2l6ZW9mDQo+IChTTUJJT1NfVEFCTEVfVFlQRTcpLCAwIH0sDQo+ ID4gKyAgMSwgICAgICAvLyBTb2NrZXREZXNpZ25hdGlvbiBTdHJpbmcNCj4gPiArICAweDAxOEEs IC8vIENhY2hlIENvbmZpZ3VyYXRpb24NCj4gPiArICAweDAwMjAsIC8vIE1heGltdW0gU2l6ZSAz MmsNCj4gPiArICAweDAwMjAsIC8vIEluc3RhbGwgU2l6ZSAzMmsNCj4gPiArICB7ICAgICAgIC8v IFN1cHBvcnRlZCBTUkFNIFR5cGUNCj4gPiArICAgIDAsICAgIC8vT3RoZXIgICAgICAgICAgICAg OjENCj4gPiArICAgIDAsICAgIC8vVW5rbm93biAgICAgICAgICAgOjENCj4gPiArICAgIDAsICAg IC8vTm9uQnVyc3QgICAgICAgICAgOjENCj4gPiArICAgIDEsICAgIC8vQnVyc3QgICAgICAgICAg ICAgOjENCj4gPiArICAgIDAsICAgIC8vUGlwbGVsaW5lQnVyc3QgICAgOjENCj4gPiArICAgIDEs ICAgIC8vU3luY2hyb25vdXMgICAgICAgOjENCj4gPiArICAgIDAsICAgIC8vQXN5bmNocm9ub3Vz ICAgICAgOjENCj4gPiArICAgIDAgICAgIC8vUmVzZXJ2ZWQgICAgICAgICAgOjkNCj4gPiArICB9 LA0KPiA+ICsgIHsgICAgICAgLy8gQ3VycmVudCBTUkFNIFR5cGUNCj4gPiArICAgIDAsICAgIC8v T3RoZXIgICAgICAgICAgICAgOjENCj4gPiArICAgIDAsICAgIC8vVW5rbm93biAgICAgICAgICAg OjENCj4gPiArICAgIDAsICAgIC8vTm9uQnVyc3QgICAgICAgICAgOjENCj4gPiArICAgIDEsICAg IC8vQnVyc3QgICAgICAgICAgICAgOjENCj4gPiArICAgIDAsICAgIC8vUGlwbGVsaW5lQnVyc3Qg ICAgOjENCj4gPiArICAgIDEsICAgIC8vU3luY2hyb25vdXMgICAgICAgOjENCj4gPiArICAgIDAs ICAgIC8vQXN5bmNocm9ub3VzICAgICAgOjENCj4gPiArICAgIDAgICAgIC8vUmVzZXJ2ZWQgICAg ICAgICAgOjkNCj4gPiArICB9LA0KPiA+ICsgIDAsICAgICAgICAgICAgICAgICAgICAgIC8vIENh Y2hlIFNwZWVkIHVua25vd24NCj4gPiArICBDYWNoZUVycm9yTXVsdGlCaXQsICAgICAvLyBFcnJv ciBDb3JyZWN0aW9uIE11bHRpDQo+ID4gKyAgQ2FjaGVUeXBlSW5zdHJ1Y3Rpb24sICAgLy8gU3lz dGVtIENhY2hlIFR5cGUNCj4gPiArICBDYWNoZUFzc29jaWF0aXZpdHkyV2F5ICAvLyBBc3NvY2lh dGl2aXR5IH07DQo+ID4gK0NIQVI4ICAqbUNhY2hlSW5mb1R5cGU3STFTdHJpbmdzW10gPSB7DQo+ ID4gKyAgIkwxIElDYWNoZSIsDQo+ID4gKyAgTlVMTA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArU01C SU9TX1RBQkxFX1RZUEU3ICBtQ2FjaGVJbmZvVHlwZTdEMSA9IHsNCj4gPiArICB7IEVGSV9TTUJJ T1NfVFlQRV9DQUNIRV9JTkZPUk1BVElPTiwgc2l6ZW9mDQo+IChTTUJJT1NfVEFCTEVfVFlQRTcp LCAwIH0sDQo+ID4gKyAgMSwgICAgICAvLyBTb2NrZXREZXNpZ25hdGlvbiBTdHJpbmcNCj4gPiAr ICAweDAxOEEsIC8vIENhY2hlIENvbmZpZ3VyYXRpb24NCj4gPiArICAweDAwMjAsIC8vIE1heGlt dW0gU2l6ZSAzMmsNCj4gPiArICAweDAwMjAsIC8vIEluc3RhbGwgU2l6ZSAzMmsNCj4gPiArICB7 ICAgICAgIC8vIFN1cHBvcnRlZCBTUkFNIFR5cGUNCj4gPiArICAgIDAsICAgIC8vT3RoZXIgICAg ICAgICAgICAgOjENCj4gPiArICAgIDAsICAgIC8vVW5rbm93biAgICAgICAgICAgOjENCj4gPiAr ICAgIDAsICAgIC8vTm9uQnVyc3QgICAgICAgICAgOjENCj4gPiArICAgIDEsICAgIC8vQnVyc3Qg ICAgICAgICAgICAgOjENCj4gPiArICAgIDAsICAgIC8vUGlwbGVsaW5lQnVyc3QgICAgOjENCj4g PiArICAgIDEsICAgIC8vU3luY2hyb25vdXMgICAgICAgOjENCj4gPiArICAgIDAsICAgIC8vQXN5 bmNocm9ub3VzICAgICAgOjENCj4gPiArICAgIDAgICAgIC8vUmVzZXJ2ZWQgICAgICAgICAgOjkN Cj4gPiArICB9LA0KPiA+ICsgIHsgICAgICAgLy8gQ3VycmVudCBTUkFNIFR5cGUNCj4gPiArICAg IDAsICAgIC8vT3RoZXIgICAgICAgICAgICAgOjENCj4gPiArICAgIDAsICAgIC8vVW5rbm93biAg ICAgICAgICAgOjENCj4gPiArICAgIDAsICAgIC8vTm9uQnVyc3QgICAgICAgICAgOjENCj4gPiAr ICAgIDEsICAgIC8vQnVyc3QgICAgICAgICAgICAgOjENCj4gPiArICAgIDAsICAgIC8vUGlwbGVs aW5lQnVyc3QgICAgOjENCj4gPiArICAgIDEsICAgIC8vU3luY2hyb25vdXMgICAgICAgOjENCj4g PiArICAgIDAsICAgIC8vQXN5bmNocm9ub3VzICAgICAgOjENCj4gPiArICAgIDAgICAgIC8vUmVz ZXJ2ZWQgICAgICAgICAgOjkNCj4gPiArICB9LA0KPiA+ICsgIDAsICAgICAgICAgICAgICAgICAg ICAgIC8vIENhY2hlIFNwZWVkIHVua25vd24NCj4gPiArICBDYWNoZUVycm9yTXVsdGlCaXQsICAg ICAvLyBFcnJvciBDb3JyZWN0aW9uIE11bHRpDQo+ID4gKyAgQ2FjaGVUeXBlRGF0YSwgICAgICAg ICAgLy8gU3lzdGVtIENhY2hlIFR5cGUNCj4gPiArICBDYWNoZUFzc29jaWF0aXZpdHkyV2F5ICAv LyBBc3NvY2lhdGl2aXR5IH07DQo+ID4gK0NIQVI4ICAqbUNhY2hlSW5mb1R5cGU3RDFTdHJpbmdz W10gPSB7DQo+ID4gKyAgIkwxIERDYWNoZSIsDQo+ID4gKyAgTlVMTA0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArU01CSU9TX1RBQkxFX1RZUEU3ICBtQ2FjaGVJbmZvVHlwZTdVMiA9IHsNCj4gPiArICB7 IEVGSV9TTUJJT1NfVFlQRV9DQUNIRV9JTkZPUk1BVElPTiwgc2l6ZW9mDQo+IChTTUJJT1NfVEFC TEVfVFlQRTcpLCAwIH0sDQo+ID4gKyAgMSwgICAgICAvLyBTb2NrZXREZXNpZ25hdGlvbiBTdHJp bmcNCj4gPiArICAweDAxOEEsIC8vIENhY2hlIENvbmZpZ3VyYXRpb24NCj4gPiArICAweDA0MDAs IC8vIE1heGltdW0gU2l6ZSAxTQ0KPiA+ICsgIDB4MDQwMCwgLy8gSW5zdGFsbCBTaXplIDFNDQo+ ID4gKyAgeyAgICAgICAvLyBTdXBwb3J0ZWQgU1JBTSBUeXBlDQo+ID4gKyAgICAwLCAgICAvL090 aGVyICAgICAgICAgICAgIDoxDQo+ID4gKyAgICAwLCAgICAvL1Vua25vd24gICAgICAgICAgIDox DQo+ID4gKyAgICAwLCAgICAvL05vbkJ1cnN0ICAgICAgICAgIDoxDQo+ID4gKyAgICAxLCAgICAv L0J1cnN0ICAgICAgICAgICAgIDoxDQo+ID4gKyAgICAwLCAgICAvL1BpcGxlbGluZUJ1cnN0ICAg IDoxDQo+ID4gKyAgICAxLCAgICAvL1N5bmNocm9ub3VzICAgICAgIDoxDQo+ID4gKyAgICAwLCAg ICAvL0FzeW5jaHJvbm91cyAgICAgIDoxDQo+ID4gKyAgICAwICAgICAvL1Jlc2VydmVkICAgICAg ICAgIDo5DQo+ID4gKyAgfSwNCj4gPiArICB7ICAgICAgIC8vIEN1cnJlbnQgU1JBTSBUeXBlDQo+ ID4gKyAgICAwLCAgICAvL090aGVyICAgICAgICAgICAgIDoxDQo+ID4gKyAgICAwLCAgICAvL1Vu a25vd24gICAgICAgICAgIDoxDQo+ID4gKyAgICAwLCAgICAvL05vbkJ1cnN0ICAgICAgICAgIDox DQo+ID4gKyAgICAxLCAgICAvL0J1cnN0ICAgICAgICAgICAgIDoxDQo+ID4gKyAgICAwLCAgICAv L1BpcGxlbGluZUJ1cnN0ICAgIDoxDQo+ID4gKyAgICAxLCAgICAvL1N5bmNocm9ub3VzICAgICAg IDoxDQo+ID4gKyAgICAwLCAgICAvL0FzeW5jaHJvbm91cyAgICAgIDoxDQo+ID4gKyAgICAwICAg ICAvL1Jlc2VydmVkICAgICAgICAgIDo5DQo+ID4gKyAgfSwNCj4gPiArICAwLCAgICAgICAgICAg ICAgICAgICAgICAvLyBDYWNoZSBTcGVlZCB1bmtub3duDQo+ID4gKyAgQ2FjaGVFcnJvck11bHRp Qml0LCAgICAgLy8gRXJyb3IgQ29ycmVjdGlvbiBNdWx0aQ0KPiA+ICsgIENhY2hlVHlwZVVuaWZp ZWQsICAgICAgIC8vIFN5c3RlbSBDYWNoZSBUeXBlDQo+ID4gKyAgQ2FjaGVBc3NvY2lhdGl2aXR5 MldheSAgLy8gQXNzb2NpYXRpdml0eSB9Ow0KPiA+ICtDSEFSOCAgKm1DYWNoZUluZm9UeXBlN1Uy U3RyaW5nc1tdID0gew0KPiA+ICsgICJMMiBVQ2FjaGUgKFBMMzEwKSIsDQo+ID4gKyAgTlVMTA0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArU01CSU9TX1RBQkxFX1RZUEU5ICBtU3lzU2xvdEluZm9UeXBl OSA9IHsNCj4gPiArICB7IEVGSV9TTUJJT1NfVFlQRV9TWVNURU1fU0xPVFMsIHNpemVvZiAoU01C SU9TX1RBQkxFX1RZUEU5KSwgMCB9LA0KPiA+ICsgIDEsICAgICAgICAgICAgICAgICAgICAgIC8v IFNsb3REZXNpZ25hdGlvbiBTdHJpbmcNCj4gPiArICBTbG90VHlwZU90aGVyLCAgICAgICAgICAv LyBTbG90VHlwZTsNCj4gPiArICBTbG90RGF0YUJ1c1dpZHRoT3RoZXIsICAvLyBTbG90RGF0YUJ1 c1dpZHRoOw0KPiA+ICsgIFNsb3RVc2FnZUF2YWlsYWJsZSwgICAgIC8vIEN1cnJlbnRVc2FnZTsN Cj4gPiArICBTbG90TGVuZ3RoT3RoZXIsICAgICAgICAvLyBTbG90TGVuZ3RoOw0KPiA+ICsgIDAs ICAgIC8vIFNsb3RJRDsNCj4gPiArICB7ICAgICAvLyBTbG90Q2hhcmFjdGVyaXN0aWNzMTsNCj4g PiArICAgIDEsICAvLyBDaGFyYWN0ZXJpc3RpY3NVbmtub3duICA6MTsNCj4gPiArICAgIDAsICAv LyBQcm92aWRlczUwVm9sdHMgICAgICAgICA6MTsNCj4gPiArICAgIDAsICAvLyBQcm92aWRlczMz Vm9sdHMgICAgICAgICA6MTsNCj4gPiArICAgIDAsICAvLyBTaGFyZWRTbG90ICAgICAgICAgICAg ICA6MTsNCj4gPiArICAgIDAsICAvLyBQY0NhcmQxNlN1cHBvcnRlZCAgICAgICA6MTsNCj4gPiAr ICAgIDAsICAvLyBDYXJkQnVzU3VwcG9ydGVkICAgICAgICA6MTsNCj4gPiArICAgIDAsICAvLyBa b29tVmlkZW9TdXBwb3J0ZWQgICAgICA6MTsNCj4gPiArICAgIDAsICAvLyBNb2RlbVJpbmdSZXN1 bWVTdXBwb3J0ZWQ6MTsNCj4gPiArICB9LA0KPiA+ICsgIHsgICAgIC8vIFNsb3RDaGFyYWN0ZXJp c3RpY3MyOw0KPiA+ICsgICAgMCwgIC8vIFBtZVNpZ25hbFN1cHBvcnRlZCAgICAgIDoxOw0KPiA+ ICsgICAgMCwgIC8vIEhvdFBsdWdEZXZpY2VzU3VwcG9ydGVkIDoxOw0KPiA+ICsgICAgMCwgIC8v IFNtYnVzU2lnbmFsU3VwcG9ydGVkICAgIDoxOw0KPiA+ICsgICAgMCwgIC8vIFJlc2VydmVkICAg ICAgICAgICAgICAgIDo1Ow0KPiA+ICsgIH0sDQo+ID4gKyAgMCwgICAgLy8gU2VnbWVudEdyb3Vw TnVtOw0KPiA+ICsgIDAsICAgIC8vIEJ1c051bTsNCj4gPiArICAwLCAgICAvLyBEZXZGdW5jTnVt Ow0KPiA+ICt9Ow0KPiA+ICtDSEFSOCAgKm1TeXNTbG90SW5mb1R5cGU5U3RyaW5nc1tdID0gew0K PiA+ICsgICJTRCBDYXJkIiwNCj4gPiArICBOVUxMDQo+ID4gK307DQo+ID4gKw0KPiA+ICtTTUJJ T1NfVEFCTEVfVFlQRTE2IG1QaHlNZW1BcnJheUluZm9UeXBlMTYgPSB7DQo+ID4gKyAgeyBFRklf U01CSU9TX1RZUEVfUEhZU0lDQUxfTUVNT1JZX0FSUkFZLCBzaXplb2YNCj4gPiArKFNNQklPU19U QUJMRV9UWVBFMTYpLCAwIH0sDQo+ID4gKyAgTWVtb3J5QXJyYXlMb2NhdGlvblN5c3RlbUJvYXJk LCAvLyBMb2NhdGlvbjsNCj4gPiArICBNZW1vcnlBcnJheVVzZVN5c3RlbU1lbW9yeSwgICAgIC8v IFVzZTsNCj4gPiArICBNZW1vcnlFcnJvckNvcnJlY3Rpb25Vbmtub3duLCAgIC8vIE1lbW9yeUVy cm9yQ29ycmVjdGlvbjsNCj4gPiArICAweDgwMDAwMDAwLCAgICAgICAgICAgICAgICAgICAgIC8v IE1heGltdW1DYXBhY2l0eSAoMiBHQik7DQo+ID4gKyAgMHhGRkZFLCAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBNZW1vcnlFcnJvckluZm9ybWF0aW9uSGFuZGxlOw0KPiA+ICsgIDEsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTnVtYmVyT2ZNZW1vcnlEZXZpY2VzOw0KPiA+ICsg IDB4ODAwMDAwMDBVTEwsICAgICAgICAgICAgICAgICAgLy8gRXh0ZW5kZWRNYXhpbXVtQ2FwYWNp dHkgKDIgR0IpDQo+ID4gK307DQo+ID4gK0NIQVI4ICptUGh5TWVtQXJyYXlJbmZvVHlwZTE2U3Ry aW5nc1tdID0gew0KPiA+ICsgIE5VTEwNCj4gPiArfTsNCj4gPiArDQo+ID4gK1NNQklPU19UQUJM RV9UWVBFMTcgbU1lbURldkluZm9UeXBlMTcgPSB7DQo+ID4gKyAgeyBFRklfU01CSU9TX1RZUEVf TUVNT1JZX0RFVklDRSwgc2l6ZW9mIChTTUJJT1NfVEFCTEVfVFlQRTE3KSwNCj4gMCB9LA0KPiA+ ICsgIDAsICAgICAgICAgIC8vIE1lbW9yeUFycmF5SGFuZGxlOyBNYXRjaGVzIFNNQklPU19UQUJM RV9UWVBFMTYuSGFuZGxlLA0KPiBzZWUgUGh5TWVtQXJyYXlJbmZvVXBkYXRlU21iaW9zVHlwZTE2 KCkNCj4gPiArICAweEZGRkUsICAgICAvLyBNZW1vcnlFcnJvckluZm9ybWF0aW9uSGFuZGxlOw0K PiA+ICsgIDB4RkZGRiwgICAgIC8vIFRvdGFsV2lkdGg7DQo+ID4gKyAgMHhGRkZGLCAgICAgLy8g RGF0YVdpZHRoOw0KPiA+ICsgIDB4MDgwMCwgICAgIC8vIFNpemU7IC8vIFdoZW4gYml0IDE1IGlz IDA6IFNpemUgaW4gTUINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIGJpdCAx NSBpcyAxOiBTaXplIGluIEtCLCBhbmQgY29udGludWVzDQo+ID4gK2luIEV4dGVuZGVkU2l6ZQ0K PiA+ICsgIE1lbW9yeUZvcm1GYWN0b3JVbmtub3duLCAgLy8gRm9ybUZhY3RvcjsNCj4gPiArICAw eGZmLCAgICAgICAgICAgICAgICAgICAgIC8vIERldmljZVNldDsNCj4gPiArICAxLCAgICAgICAg ICAgICAgICAgICAgICAgIC8vIERldmljZUxvY2F0b3IgU3RyaW5nDQo+ID4gKyAgMiwgICAgICAg ICAgICAgICAgICAgICAgICAvLyBCYW5rTG9jYXRvciBTdHJpbmcNCj4gPiArICBNZW1vcnlUeXBl RHJhbSwgICAgICAgICAgIC8vIE1lbW9yeVR5cGU7DQo+ID4gKyAgeyAgICAgLy8gVHlwZURldGFp bDsNCj4gPiArICAgIDAsICAvLyBSZXNlcnZlZCAgICAgICAgOjE7DQo+ID4gKyAgICAwLCAgLy8g T3RoZXIgICAgICAgICAgIDoxOw0KPiA+ICsgICAgMSwgIC8vIFVua25vd24gICAgICAgICA6MTsN Cj4gPiArICAgIDAsICAvLyBGYXN0UGFnZWQgICAgICAgOjE7DQo+ID4gKyAgICAwLCAgLy8gU3Rh dGljQ29sdW1uICAgIDoxOw0KPiA+ICsgICAgMCwgIC8vIFBzZXVkb1N0YXRpYyAgICA6MTsNCj4g PiArICAgIDAsICAvLyBSYW1idXMgICAgICAgICAgOjE7DQo+ID4gKyAgICAwLCAgLy8gU3luY2hy b25vdXMgICAgIDoxOw0KPiA+ICsgICAgMCwgIC8vIENtb3MgICAgICAgICAgICA6MTsNCj4gPiAr ICAgIDAsICAvLyBFZG8gICAgICAgICAgICAgOjE7DQo+ID4gKyAgICAwLCAgLy8gV2luZG93RHJh bSAgICAgIDoxOw0KPiA+ICsgICAgMCwgIC8vIENhY2hlRHJhbSAgICAgICA6MTsNCj4gPiArICAg IDAsICAvLyBOb252b2xhdGlsZSAgICAgOjE7DQo+ID4gKyAgICAwLCAgLy8gUmVnaXN0ZXJlZCAg ICAgIDoxOw0KPiA+ICsgICAgMCwgIC8vIFVuYnVmZmVyZWQgICAgICA6MTsNCj4gPiArICAgIDAs ICAvLyBSZXNlcnZlZDEgICAgICAgOjE7DQo+ID4gKyAgfSwNCj4gPiArICAwLCAgICAgICAgICAv LyBTcGVlZDsNCj4gPiArICAzLCAgICAgICAgICAvLyBNYW51ZmFjdHVyZXIgU3RyaW5nDQo+ID4g KyAgMCwgICAgICAgICAgLy8gU2VyaWFsTnVtYmVyIFN0cmluZw0KPiA+ICsgIDAsICAgICAgICAg IC8vIEFzc2V0VGFnIFN0cmluZw0KPiA+ICsgIDAsICAgICAgICAgIC8vIFBhcnROdW1iZXIgU3Ry aW5nDQo+ID4gKyAgMCwgICAgICAgICAgLy8gQXR0cmlidXRlczsNCj4gPiArICAwLCAgICAgICAg ICAvLyBFeHRlbmRlZFNpemU7DQo+ID4gKyAgMCwgICAgICAgICAgLy8gQ29uZmlndXJlZE1lbW9y eUNsb2NrU3BlZWQ7DQo+ID4gK307DQo+ID4gK0NIQVI4ICptTWVtRGV2SW5mb1R5cGUxN1N0cmlu Z3NbXSA9IHsNCj4gPiArICAiT1MgVmlydHVhbCBNZW1vcnkiLA0KPiA+ICsgICJtYWxsb2MiLA0K PiA+ICsgICJPU1YiLA0KPiA+ICsgIE5VTEwNCj4gPiArfTsNCj4gPiArDQo+ID4gK1NNQklPU19U QUJMRV9UWVBFMTkgbU1lbUFyck1hcEluZm9UeXBlMTkgPSB7DQo+ID4gKyAgeyBFRklfU01CSU9T X1RZUEVfTUVNT1JZX0FSUkFZX01BUFBFRF9BRERSRVNTLCBzaXplb2YNCj4gPiArKFNNQklPU19U QUJMRV9UWVBFMTkpLCAwIH0sDQo+ID4gKyAgMHgxMDAwMDAwMCwgLy8gU3RhcnRpbmdBZGRyZXNz Ow0KPiA+ICsgIDB4OGZmZmZmZmYsIC8vIEVuZGluZ0FkZHJlc3M7DQo+ID4gKyAgMCwgICAgICAg ICAgLy8gTWVtb3J5QXJyYXlIYW5kbGU7DQo+ID4gKyAgMSwgICAgICAgICAgLy8gUGFydGl0aW9u V2lkdGg7DQo+ID4gKyAgMCwgICAgICAgICAgLy8gRXh0ZW5kZWRTdGFydGluZ0FkZHJlc3M7DQo+ ID4gKyAgMCwgICAgICAgICAgLy8gRXh0ZW5kZWRFbmRpbmdBZGRyZXNzOw0KPiA+ICt9Ow0KPiA+ ICtDSEFSOCAqbU1lbUFyck1hcEluZm9UeXBlMTlTdHJpbmdzW10gPSB7DQo+ID4gKyAgTlVMTA0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArU01CSU9TX1RBQkxFX1RZUEUzMiBtQm9vdEluZm9UeXBlMzIg PSB7DQo+ID4gKyAgeyBFRklfU01CSU9TX1RZUEVfU1lTVEVNX0JPT1RfSU5GT1JNQVRJT04sIHNp emVvZg0KPiAoU01CSU9TX1RBQkxFX1RZUEUzMiksIDAgfSwNCj4gPiArICB7IDAsIDAsIDAsIDAs IDAsIDAgfSwgICAgICAgICAvLyBSZXNlcnZlZFs2XTsNCj4gPiArICBCb290SW5mb3JtYXRpb25T dGF0dXNOb0Vycm9yICAvLyBCb290U3RhdHVzIH07DQo+ID4gKw0KPiA+ICtDSEFSOCAqbUJvb3RJ bmZvVHlwZTMyU3RyaW5nc1tdID0gew0KPiA+ICsgIE5VTEwNCj4gPiArfTsNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsNCj4gPiArICBDcmVhdGUgU01CSU9TIHJlY29yZC4NCj4gPiArDQo+ID4gKyAg Q29udmVydHMgYSBmaXhlZCBTTUJJT1Mgc3RydWN0dXJlIGFuZCBhbiBhcnJheSBvZiBwb2ludGVy cyB0bw0KPiA+ICsgc3RyaW5ncyBpbnRvICBhbiBTTUJJT1MgcmVjb3JkIHdoZXJlIHRoZSBzdHJp bmdzIGFyZSBjYXQnZWQgb24gdGhlDQo+ID4gKyBlbmQgb2YgdGhlIGZpeGVkIHJlY29yZCAgYW5k IHRlcm1pbmF0ZWQgdmlhIGEgZG91YmxlIE5VTEwgYW5kIGFkZCB0bw0KPiBTTUJJT1MgdGFibGUu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgVGVtcGxhdGUgICAgRml4ZWQgU01CSU9TIHN0cnVjdHVy ZSwgcmVxdWlyZWQuDQo+ID4gKyAgQHBhcmFtICBTdHJpbmdQYWNrICBBcnJheSBvZiBzdHJpbmdz IHRvIGNvbnZlcnQgdG8gYW4gU01CSU9TIHN0cmluZyBwYWNrLg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgTlVMTCBpcyBPSy4NCj4gPiArICBAcGFyYW0gIERhdGFTbWJpb3NIYW5kbGUgIFRo ZSBuZXcgU01CSU9TIHJlY29yZCBoYW5kbGUgLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg TlVMTCBpcyBPSy4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4g K0xvZ1NtYmlvc0RhdGEgKA0KPiA+ICsgIElOICBFRklfU01CSU9TX1RBQkxFX0hFQURFUiAqVGVt cGxhdGUsDQo+ID4gKyAgSU4gIENIQVI4ICAgICAgICAgICAgICAgICAgICoqU3RyaW5nUGFjaywN Cj4gPiArICBPVVQgRUZJX1NNQklPU19IQU5ETEUgICAgICAgKkRhdGFTbWJpb3NIYW5kbGUNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsN Cj4gPiArICBFRklfU01CSU9TX1BST1RPQ09MICAgICAgICpTbWJpb3M7DQo+ID4gKyAgRUZJX1NN QklPU19IQU5ETEUgICAgICAgICBTbWJpb3NIYW5kbGU7DQo+ID4gKyAgRUZJX1NNQklPU19UQUJM RV9IRUFERVIgICAqUmVjb3JkOw0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgSW5k ZXg7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBTdHJpbmdTaXplOw0KPiA+ICsg IFVJTlROICAgICAgICAgICAgICAgICAgICAgU2l6ZTsNCj4gPiArICBDSEFSOCAgICAgICAgICAg ICAgICAgICAgICpTdHI7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+TG9jYXRlUHJvdG9j b2wgKCZnRWZpU21iaW9zUHJvdG9jb2xHdWlkLCBOVUxMLCAoVk9JRA0KPiA+ICsgKiopJlNtYmlv cyk7ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8gQ2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBmaXhl ZCByZWNvcmQgYW5kIG9wdGlvbmFsIHN0cmluZyBwYWNrDQo+ID4gKyBTaXplID0gVGVtcGxhdGUt Pkxlbmd0aDsgIGlmIChTdHJpbmdQYWNrID09IE5VTEwpIHsNCj4gPiArICAgIC8vIEF0IGxlYXN0 IGEgZG91YmxlIG51bGwgaXMgcmVxdWlyZWQNCj4gPiArICAgIFNpemUgKz0gMjsNCj4gPiArICB9 IGVsc2Ugew0KPiA+ICsgICAgZm9yIChJbmRleCA9IDA7IFN0cmluZ1BhY2tbSW5kZXhdICE9IE5V TEw7IEluZGV4KyspIHsNCj4gPiArICAgICAgU3RyaW5nU2l6ZSA9IEFzY2lpU3RyU2l6ZSAoU3Ry aW5nUGFja1tJbmRleF0pOw0KPiA+ICsgICAgICBTaXplICs9IFN0cmluZ1NpemU7DQo+ID4gKyAg ICB9DQo+ID4gKyAgaWYgKFN0cmluZ1BhY2tbMF0gPT0gTlVMTCkgew0KPiA+ICsgICAgLy8gQXQg bGVhc3QgYSBkb3VibGUgbnVsbCBpcyByZXF1aXJlZA0KPiA+ICsgICAgU2l6ZSArPSAxOw0KPiA+ ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIC8vIERvbid0IGZvcmdldCB0aGUgdGVybWluYXRpbmcg ZG91YmxlIG51bGwNCj4gPiArICAgIFNpemUgKz0gMTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IC8vIENvcHkgb3ZlciBUZW1wbGF0ZQ0KPiA+ICsgIFJlY29yZCA9IChFRklfU01CSU9TX1RBQkxF X0hFQURFUiAqKUFsbG9jYXRlWmVyb1Bvb2wgKFNpemUpOyAgaWYNCj4gPiArIChSZWNvcmQgPT0g TlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICsgIH0N Cj4gPiArICBDb3B5TWVtIChSZWNvcmQsIFRlbXBsYXRlLCBUZW1wbGF0ZS0+TGVuZ3RoKTsNCj4g PiArDQo+ID4gKyAgLy8gQXBwZW5kIHN0cmluZyBwYWNrDQo+ID4gKyAgU3RyID0gKChDSEFSOCAq KVJlY29yZCkgKyBSZWNvcmQtPkxlbmd0aDsNCj4gPiArDQo+ID4gKyAgZm9yIChJbmRleCA9IDA7 IFN0cmluZ1BhY2tbSW5kZXhdICE9IE5VTEw7IEluZGV4KyspIHsNCj4gPiArICAgIFN0cmluZ1Np emUgPSBBc2NpaVN0clNpemUgKFN0cmluZ1BhY2tbSW5kZXhdKTsNCj4gPiArICAgIENvcHlNZW0g KFN0ciwgU3RyaW5nUGFja1tJbmRleF0sIFN0cmluZ1NpemUpOw0KPiA+ICsgICAgU3RyICs9IFN0 cmluZ1NpemU7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAqU3RyID0gMDsNCj4gPiArICBTbWJp b3NIYW5kbGUgPSBTTUJJT1NfSEFORExFX1BJX1JFU0VSVkVEOyAgU3RhdHVzID0gU21iaW9zLT5B ZGQNCj4gKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBTbWJpb3MsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIGdJbWFnZUhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgJlNt Ymlvc0hhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgUmVjb3JkDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpICYm IChEYXRhU21iaW9zSGFuZGxlICE9IE5VTEwpKSB7DQo+ID4gKyAgICAgICpEYXRhU21iaW9zSGFu ZGxlID0gU21iaW9zSGFuZGxlOyAgfQ0KPiA+ICsNCj4gPiArICBBU1NFUlRfRUZJX0VSUk9SIChT dGF0dXMpOw0KPiA+ICsgIEZyZWVQb29sIChSZWNvcmQpOw0KPiA+ICsgIHJldHVybiBTdGF0dXM7 DQo+ID4gK30NCj4gPiArDQo+ID4gK1ZPSUQNCj4gPiArQklPU0luZm9VcGRhdGVTbWJpb3NUeXBl MCAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIExvZ1NtYmlvc0RhdGEg KChFRklfU01CSU9TX1RBQkxFX0hFQURFUiAqKSZtQklPU0luZm9UeXBlMCwNCj4gPiArbUJJT1NJ bmZvVHlwZTBTdHJpbmdzLCBOVUxMKTsgfQ0KPiA+ICsNCj4gPiArVk9JRA0KPiA+ICtJNjRUb0hl eFN0cmluZygNCj4gDQo+IEhtbS4gV2UgYWxyZWFkeSBoYXZlIHNldmVyYWwgY29waWVzIG9mIGZ1 bmN0aW9ucyBkb2luZyBleGFjdGx5IHRoaXMgaW4gRURLMi4NCj4gSnVzdCBubyBjZW50cmFsbHkg cmV1c2FibGUgb25lLiBNYXliZSB3b3J0aCBhZGRpbmcgdG8gQmFzZUxpYj8NCj4gDQo+IFJlZ2Fy ZGxlc3MsIGl0IHNob3VsZCBwcm9iYWJsdCBiZSBjYWxsZWQgVUlOVDY0VG9IZXhTdHJpbmcgb3Ig c3VjaGxpa2UuDQo+IA0KDQpJJ2xsIHJlbmFtZSBpdCB0byBVSU5UNjRUb0hleFN0cmluZyBmb3Ig dGhlIG5leHQgcGF0Y2ggc2V0LCB0aGVuIHdpbGwgbG9vayBpbnRvIG1ha2luZyBhIGNlbnRyYWxs eSByZXVzYWJsZSB2ZXJzaW9uLg0KDQo+IEFuZCBhIHNwYWNlIGJlZm9yZSAoLg0KPiANCg0KQXV0 b2Zvcm1hdHRlciAoQVN0eWxlKSBkb2VzIGNhdGNoIGFuZCBmaXggdGhpcyBzY2VuYXJpby4NCg0K PiA+ICsgICAgSU4gT1VUIENIQVI4KiBUYXJnZXRTdHJpbmdTeiwNCj4gPiArICAgIElOIFVJTlQz MiBUYXJnZXRTdHJpbmdTaXplLA0KPiANCj4gT25lIHBhcmFtZXRlciBjYWxsZWQgU3osIGFuZCBh bm90aGVyIGNhbGxlZCBTaXplPw0KPiBBbmQgdGhlIGZpcnN0IG9uZSBpcyB3aGVyZSB0aGUgc3Ry aW5nIGdvZXM/DQo+DQoNCldpbGwgcmVuYW1lIFN6LCBJbngsIGV0YyB0byBiZSBzdGFuZGFyZCBu YW1lcy4gIE5vdCBleGFjdGx5IHN1cmUgd2h5IG9uZSBvZiBvdXIgZGV2cyBkZWNpZGVkIHRvIHVz ZSB0aGlzIG5vdGF0aW9uLi4uDQoNCj4gPiArICAgIElOIFVJTlQ2NCBWYWx1ZQ0KPiA+ICsgICAg KQ0KPiA+ICt7DQo+ID4gKyAgICBzdGF0aWMgQ0hBUjggSXRvSFtdID0gew0KPiA+ICsnMCcsJzEn LCcyJywnMycsJzQnLCc1JywnNicsJzcnLCc4JywnOScsJ0EnLCdCJywnQycsJ0QnLCdFJywnRicg fTsNCj4gDQo+IFNUQVRJQw0KPiBJdG9IIGlzIHdoYXQgSSBvZnRlbiBzZWUgdGhpcyBmdW5jaW9u IG5hbWVkLg0KPiBIZXhDaGFyYWN0ZXJzIHdvdWxkIGJlIGEgbW9yZSBzdWl0YWJsZSBDYW1lbENh c2UgbmFtZS4NCj4gDQoNCldpbGwgY2hhbmdlIHRvIEhleENoYXJhY3RlcnMuDQoNCj4gPiArICAg IFVJTlQ4IFN0cmluZ0lueDsNCj4gPiArICAgIElOVDggTmliYmxlSW54Ow0KPiANCj4gSW54LT5J bmRleC4NCj4gDQo+ID4gKw0KPiA+ICsgICAgWmVyb01lbSgodm9pZCopVGFyZ2V0U3RyaW5nU3os IFRhcmdldFN0cmluZ1NpemUpOw0KPiANCj4gU3BhY2UgYmVmb3JlICguDQo+IChWT0lEICopDQo+ IA0KDQpBU3R5bGUgZml4ZXMgdGhlIHNwYWNpbmcgYmVmb3JlICggYW5kIGFyb3VuZCBvcGVyYXRv cnMuICBJJ2xsIGFsc28gY2hhbmdlIHZvaWQgLT4gVk9JRA0KDQo+ID4gKw0KPiA+ICsgICAgLy8N Cj4gPiArICAgIC8vIENvbnZlcnQgZWFjaCBuaWJibGUgdG8gaGV4IHN0cmluZywgc3RhcnRpbmcg ZnJvbQ0KPiA+ICsgICAgLy8gdGhlIGhpZ2hlc3Qgbm9uLXplcm8gbmliYmxlLg0KPiA+ICsgICAg Ly8NCj4gPiArICAgIFN0cmluZ0lueCA9IDA7DQo+ID4gKyAgICBmb3IgKE5pYmJsZUlueCA9IHNp emVvZihVSU5UNjQpICogMjsgTmliYmxlSW54ID4gMDsgLS1OaWJibGVJbngpIHsNCj4gPiArICAg ICAgICBVSU5UNjQgTmliYmxlTWFzayA9ICgoKFVJTlQ2NCkweEYpIDw8ICgoTmliYmxlSW54IC0g MSkgKiA0KSk7DQo+ID4gKyAgICAgICAgVUlOVDggTmliYmxlID0gKFVJTlQ4KSgoVmFsdWUgJiBO aWJibGVNYXNrKSA+PiAoKE5pYmJsZUlueCAtDQo+ID4gKyAxKSAqIDQpKTsNCj4gPiArDQo+ID4g KyAgICAgICAgQVNTRVJUKE5pYmJsZSA8PSAweEYpOw0KPiANCj4gVGhpcyBhc3NlcnQgY2hlY2tz IG9ubHkgd2hldGhlciB0aGUgYWxnb3JpdGhtIGlzIGNvcnJlY3Qgb3Igd2hldGhlciB0aGUNCj4g Y29tcGlsZXIgZ2VuZXJhdGVzIGNvZGUgY29ycmVjdGx5LiBJZiB0aGUgZm9ybWVyIGlzIGEgcHJv YmxlbSwgSSByZWNvbW1lbmQgYQ0KPiBzaW1wbGVyIGFsZ29yaXRobS4NCj4gTWVhbndoaWxlLCBJ IGRvbid0IHNlZSBhbiBBU1NFUlQgdmVyaWZ5aW5nIHRoYXQgdGhlIG91dHB1dCBidWZmZXIgaXMg bGFyZ2UNCj4gZW5vdWdoLg0KPiANCg0KV2lsbCBmaXggdGhpcyBpbXBsZW1lbnRhdGlvbiBhbmQg YWRkIHRoZSBBU1NFUlQgb3V0cHV0IGJ1ZmZlciBzaXplLg0KDQo+ID4gKw0KPiA+ICsgICAgICAg IGlmIChTdHJpbmdJbnggPCAoVGFyZ2V0U3RyaW5nU2l6ZS0xKSkgew0KPiANCj4gU3BhY2VzIGFy b3VuZCAnLScuDQo+IA0KPiA+ICsgICAgICAgICAgICBUYXJnZXRTdHJpbmdTeltTdHJpbmdJbngr K10gPSBJdG9IW05pYmJsZV07DQo+ID4gKyAgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAg ICAgYnJlYWs7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ ICtVSU5UNjQgT2J0YWluUGxhdGZvcm1JZChWT0lEKQ0KPiANCj4gRm9ybWF0IGxpa2UgQklPU0lu Zm9VcGRhdGVTbWJpb3NUeXBlMCBhYm92ZS4NCj4gDQoNCldpbGwgZml4Lg0KDQo+ID4gK3sNCj4g PiArICAgVUlOVDY0IEJvYXJkU2VyaWFsPShVSU5UNjQpMDsNCj4gDQo+IFNwYWNlcyBhcm91bmQg Jz0nLiAoSWYgd2UgZG9uJ3QgYnJpbmcgdXAgdGhlICJubyBhc3NpZ25tZW50IG9uIGRlZmluaXRp b24iDQo+IHJ1bGUgZnJvbSB0aGUgY29kaW5nIHN0eWxlLg0KPiANCg0KVGhlIG5leHQgcGF0Y2gg c2V0IHdpbGwgZm9sbG93IHRoZSAibm8gYXNzaWdubWVudCBvbiBkZWZpbml0aW9uIiBydWxlLg0K DQo+IFdoeSBjYXN0IHRoYXQgemVybz8NCj4gDQoNCldpbGwgZml4Lg0KDQo+ID4gKw0KPiA+ICsg ICAvLyBzZWUgaU1YNiByZWZlcmVuY2UgbWFudWFsIHNlY3Rpb24gNDYuNS4xMCBmb3IgT1RQIENG RyByZWdpc3RlcnMNCj4gZGVzY3JpcHRpb24NCj4gPiArICAgY29uc3QgVUlOVDMyIFJlZ09DT1RQ X0NGRzBBZGRyPTB4MDIxQkM0MTA7IC8vIE9UUCBCYW5rMCBXb3JkMQ0KPiBjb250YWlucyBsb3dl ciAzMiBiaXRzIG9mIHRoZSBVbmlxdWUgSUQgYW5kIFNKQ19DSEFMTEVOR0UgZmllbGQNCj4gPiAr ICAgY29uc3QgVUlOVDMyIFJlZ09DT1RQX0NGRzFBZGRyPTB4MDIxQkM0MjA7IC8vIE9UUCBCYW5r MCBXb3JkMg0KPiA+ICsgY29udGFpbnMgdXBwZXIgMzIgYml0cyBvZiB0aGUgVW5pcXVlIElEIGFu ZCBTSkNfQ0hBTExFTkdFIGZpZWxkDQo+IA0KPiBDT05TVC4NCj4gU3BhY2VzIGFyb3VuZCAnPScu DQo+IExpbmVzIHRvbyBsb25nLiAoTW92ZSBDb21tZW50cyB0byBzZXBhcmF0ZSBsaW5lcy4pDQo+ IA0KPiBQbGVhc2UgcHV0IHRoZXNlIGFkZHJlc3NlcyBhcyAjZGVmaW5lcyBpbiBhIGxvY2FsIC5o IGZpbGUgaW5zdGVhZCAodW5sZXNzDQo+IHRoZXJlJ3MgYSBnbG9iYWwgaS5NWDYgLmggZmlsZSB0 aGV5J2QgZml0IGJldHRlciBpbikuDQo+IA0KDQpXaWxsIG1vdmUgdGhlIHJlZ2lzdGVyIGRlZmlu ZXMgaW50byBvdXIgZ2xvYmFsIGkuTVg2LmggaW4gb3VyIHNpbGljb24gcGFja2FnZS4NCg0KPiA+ ICsgICBCb2FyZFNlcmlhbCA9ICgoVUlOVDY0KShNbWlvUmVhZDMyKFJlZ09DT1RQX0NGRzFBZGRy KSkpIDw8IDMyOw0KPiA+ICsgICBCb2FyZFNlcmlhbCA9IEJvYXJkU2VyaWFsIHwNCj4gPiArICgo VUlOVDY0KShNbWlvUmVhZDMyKFJlZ09DT1RQX0NGRzBBZGRyKSkpOw0KPiANCj4gTW1pb1JlYWQz MiAoDQo+IEEgYml0IGhlYXZ5IG9uIHRoZSBwYXJhbnRoZXNlcy4NCj4gDQoNCldpbGwgZml4Lg0K DQo+ID4gKw0KPiA+ICsgICBERUJVRygoREVCVUdfSU5GTywgIkh1bW1pbmdib2FyZCBFZGdlIHNl ciBubyAlMDhYJTA4WGggXHJcbiIsDQo+ID4gKyAoVUlOVDMyKShCb2FyZFNlcmlhbD4+MzIpLCAo VUlOVDMyKUJvYXJkU2VyaWFsKSk7DQo+IA0KPiBTcGFjZXMgYXJvdW5kICc8PCcuDQo+IFdyYXAg bG9uZyBsaW5lLg0KPiANCg0KQVN0eWxlIGFsc28gaGVscHMgaWRlbnRpZnkgbG9uZyBsaW5lIHNp dHVhdGlvbnMuICBXaWxsIGZpeCBpdC4NCg0KPiA+ICsgICByZXR1cm4gQm9hcmRTZXJpYWw7DQo+ ID4gK30NCj4gPiArDQo+ID4gK1ZPSUQNCj4gPiArU3lzSW5mb1VwZGF0ZVNtYmlvc1R5cGUxICgN Cj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgIFVJTlQ2NCBCb2FyZFNlcmlh bD0oVUlOVDY0KTA7DQo+IA0KPiBTcGFjZXMgYXJvdW5kICc9JyAocGxlYXNlIGFkZHJlc3MgdGhy b3VnaG91dCkuDQo+IA0KPiA+ICsgICBVSU5UMzIgQmFuazBXb3JkMz0wOw0KPiA+ICsgICBzdGF0 aWMgQ0hBUjggQm9hcmRTZXJpYWxTdHJpbmdbc2l6ZW9mKEJvYXJkU2VyaWFsKSAqIDIgKw0KPiA+ ICsgMV09ezB4MDB9Ow0KPiANCj4gU1RBVElDLg0KPiANCj4gPiArICAgaW50IGs9MDsNCj4gDQo+ IEk/DQo+IA0KDQpXaWxsIGZpeCBhbmQgdXNlIElOVDMyLg0KDQo+ID4gKw0KPiA+ICsgICBjb25z dCBVSU5UMzIgUmVnT0NPVFBfQ0ZHMkFkZHI9MHgwMjFCQzQzMDsNCj4gDQo+IFBsZWFzZSBwdXQg dGhlc2UgYWRkcmVzc2VzIGFzICNkZWZpbmVzIGluIGEgbG9jYWwgLmggZmlsZSBpbnN0ZWFkICh1 bmxlc3MNCj4gdGhlcmUncyBhIGdsb2JhbCBpLk1YNiAuaCBmaWxlIHRoZXknZCBmaXQgYmV0dGVy IGluKS4NCj4gDQo+ID4gKyAgIEJvYXJkU2VyaWFsID0gT2J0YWluUGxhdGZvcm1JZCgpOw0KPiAN Cj4gU3BhY2UgYmVmb3JlICguDQo+IA0KPiA+ICsNCj4gPiArICAgLy8gVXBkYXRlIHRoZSBTbWJp b3MgVHlwZTEgaW5mb3JtYXRpb24gd2l0aCB0aGUgYm9hcmQgc2VyaWFsIHN0cmluZw0KPiA+ICsg ICBJNjRUb0hleFN0cmluZygmQm9hcmRTZXJpYWxTdHJpbmdbMF0sIHNpemVvZihCb2FyZFNlcmlh bFN0cmluZyksDQo+ID4gKyBCb2FyZFNlcmlhbCk7DQo+IA0KPiBTcGFjZSBiZWZvcmUgKC4NCj4g DQo+ID4gKyAgIG1TeXNJbmZvVHlwZTFTdHJpbmdzW21TeXNJbmZvVHlwZTEuU2VyaWFsTnVtYmVy IC0gMV0gPQ0KPiA+ICsgJkJvYXJkU2VyaWFsU3RyaW5nWzBdOw0KPiA+ICsNCj4gPiArICAgQmFu azBXb3JkMyA9IE1taW9SZWFkMzIoUmVnT0NPVFBfQ0ZHMkFkZHIpOw0KPiA+ICsgICAvLyBDb25z dHJ1Y3Qgc3RyaW5nIHRvIG1ha2UgVVVJRDogZml4ZWQgcHJlZml4ICsgYm9hcmQgc2VyaWFsIG51 bWJlcg0KPiBwcmludGVkIGluIGhleA0KPiA+ICsgICBtU3lzSW5mb1R5cGUxLlV1aWQuRGF0YTE9 KChVSU5UMzIpJ0gnPDwyNCkgfCAoKFVJTlQzMiknTSc8PDE2KSB8DQo+ICgoVUlOVDMyKSdCJzw8 OCkgfCAoVUlOVDMyKSdFJyA7DQo+ID4gKyAgIG1TeXNJbmZvVHlwZTEuVXVpZC5EYXRhMj0oVUlO VDE2KUJhbmswV29yZDM7DQo+ID4gKyAgIG1TeXNJbmZvVHlwZTEuVXVpZC5EYXRhMz0oVUlOVDE2 KShCYW5rMFdvcmQzPj4xNik7DQo+ID4gKw0KPiA+ICsgICBmb3Ioaz03OyBrPj0wOyBrLS0pIHsN Cj4gPiArICAgICAgbVN5c0luZm9UeXBlMS5VdWlkLkRhdGE0Wzcta109KFVJTlQ4KShCb2FyZFNl cmlhbD4+KGsqOCkpOw0KPiANCj4gU3BhY2VzIGFyb3VuZCAnPj0nLCAnLScsICc+PicsICcqJy4N Cj4gDQo+IFRoZSBTTUJJT1Mgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIHRoZSBmb3JtYXQgZm9yIHRo aXMgZmllbGQsIGFuZCB0aGlzIGlzIG5vdCBpdC4NCj4gT25seSB0aGUgbGFzdCA2IGJ5dGVzIHNo b3VsZCBiZSBub2RlLXNwZWNpZmljIC0gdGhlIHJlc3Qgc2hvdWxkIGJlIGdlbmVyYXRlZA0KPiBv bmNlIGFuZCByZXVzZWQgZm9yIGFsbCBIdW1taW5nYm9hcmQgc3lzdGVtcy4gKEZvciBleGFtcGxl IGJ5IHVzaW5nDQo+IGh0dHBzOi8vbmEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNv bS8/dXJsPWh0dHBzJTNBJTJGJTJGd3d3Lg0KPiBndWlkZ2VuZXJhdG9yLmNvbSUyRm9ubGluZS1n dWlkLQ0KPiBnZW5lcmF0b3IuYXNweCZhbXA7ZGF0YT0wMiU3QzAxJTdDQ2hyaXN0b3BoZXIuQ28l NDBtaWNyb3NvZnQuY29tJQ0KPiA3QzYzNWM3MDBiMTFkYjRjOGRjZmQ3MDhkNWZjNjQ0NmZhJTdD NzJmOTg4YmY4NmYxNDFhZjkxYWIyZDdjZDAxMWRiDQo+IDQ3JTdDMSU3QzAlN0M2MzY2OTI0Mjk5 OTMwODEzNzgmYW1wO3NkYXRhPXd1ZEVYNWJPS0kzN1R2S0w0OSUyDQo+IEJRaWtzRDl2VWJmUklx WDFvRlhBaFVsdW8lM0QmYW1wO3Jlc2VydmVkPTAuKQ0KPiANCj4gUkZDNDEyMiwgc2VjdGlvbiA0 LjEuNiwgYWxzbyBtZW50aW9ucyBpZiB5b3UncmUgX25vdF8gdXNpbmcgYSBNQUMgYWRkcmVzcyBm b3INCj4gdGhpcywgeW91IHNob3VsZCBzZXQgdGhlIG11bHRpY2FzdCBiaXQgdG8gYXZvaWQgY2xh c2hlcy4NCj4gKEJ1dCBiYXNpY2FsbHksIG15IHN1Z2dlc3Rpb24gd291bGQgYmUgdG8gdXNlIHRo ZSBNQUMgYWRkcmVzcyBpZiB5b3UgaGF2ZQ0KPiBhY2Nlc3MgdG8gaXQgZnJvbSBoZXJlLikNCj4g DQoNCk5vdCBzdXJlIHdoZXJlIHRoZSBwcmV2aW91cyBkZXYgY2FtZSB1cCB3aXRoIHRoaXMuICBJ J2xsIHN3aXRjaCBpdCB0byB1c2UgdGhlIE1BQyBmb3IgdGhlIGxhc3QgNiBieXRlcyBzaW5jZSB3 ZSBkbyBoYXZlIGFjY2VzcyB0byBpdCBhdCB0aGlzIHN0YWdlLg0KDQpUaGFua3MsDQpDaHJpcw0K DQo+ID4gKyAgIH0NCj4gPiArDQo+ID4gKyAgIExvZ1NtYmlvc0RhdGEgKChFRklfU01CSU9TX1RB QkxFX0hFQURFUiopJm1TeXNJbmZvVHlwZTEsDQo+ID4gKyBtU3lzSW5mb1R5cGUxU3RyaW5ncywg TlVMTCk7DQo+ID4gKw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtWT0lEDQo+ID4gK0JvYXJkSW5mb1Vw ZGF0ZVNtYmlvc1R5cGUyICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg TG9nU21iaW9zRGF0YSAoKEVGSV9TTUJJT1NfVEFCTEVfSEVBREVSICopJm1Cb2FyZEluZm9UeXBl MiwNCj4gPiArbUJvYXJkSW5mb1R5cGUyU3RyaW5ncywgTlVMTCk7IH0NCj4gPiArDQo+ID4gK1ZP SUQNCj4gPiArRW5jbG9zdXJlSW5mb1VwZGF0ZVNtYmlvc1R5cGUzICgNCj4gPiArICBWT0lEDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDggQ2hhc3Npc1NlcmlhbE5vPTB4RkY7DQo+ID4g KyAgc3RhdGljIENIQVI4IENoYXNzaXNCb2FyZFNlcmlhbFN0cmluZ1tzaXplb2YoQ2hhc3Npc1Nl cmlhbE5vKSAqIDIgKw0KPiA+ICsxXT17MHgwMH07DQo+IA0KPiBTVEFUSUMuIChQbGVhc2UgYWRk cmVzcyB0aHJvdWdob3V0LikNCj4gU1thY2UgYmVmb3JlICguDQo+IA0KPiA+ICsNCj4gPiArICAv LyBHZW5lcmF0ZSBjaGFzc2lzIG51bWJlciBmcm9tIHNhbWUgcGxhdGZvcm0gaWQuDQo+ID4gKyAg Q2hhc3Npc1NlcmlhbE5vID0gKFVJTlQ4KShPYnRhaW5QbGF0Zm9ybUlkKCkgPj4gNDApOw0KPiA+ ICsgREVCVUcoKERFQlVHX0lORk8sICJDaGFzc2lzIEJvYXJkIFNlcmlhbCAlMDJYaCBcclxuIiwN Cj4gPiArIENoYXNzaXNTZXJpYWxObykpOw0KPiA+ICsNCj4gPiArICBJNjRUb0hleFN0cmluZygm Q2hhc3Npc0JvYXJkU2VyaWFsU3RyaW5nWzBdLA0KPiA+ICsgc2l6ZW9mKENoYXNzaXNCb2FyZFNl cmlhbFN0cmluZyksIENoYXNzaXNTZXJpYWxObyk7DQo+IA0KPiBTcGFjZSBhZnRlciAoLg0KPiBX cmFwIGxvbmcgbGluZS4NCj4gDQo+ID4gKyAgbUVuY2xvc3VyZUluZm9UeXBlM1N0cmluZ3NbbUVu Y2xvc3VyZUluZm9UeXBlMy5TZXJpYWxOdW1iZXIgLSAxXSA9DQo+ID4gKyAmQ2hhc3Npc0JvYXJk U2VyaWFsU3RyaW5nWzBdOw0KPiA+ICsNCj4gPiArICBMb2dTbWJpb3NEYXRhICgoRUZJX1NNQklP U19UQUJMRV9IRUFERVINCj4gKikmbUVuY2xvc3VyZUluZm9UeXBlMywNCj4gPiArIG1FbmNsb3N1 cmVJbmZvVHlwZTNTdHJpbmdzLCBOVUxMKTsNCj4gDQo+IFBsZWFzZSB3cmFwIGxvbmcgbGluZXMu DQo+IA0KPiA+ICt9DQo+ID4gKw0KPiA+ICtWT0lEDQo+ID4gK1Byb2Nlc3NvckluZm9VcGRhdGVT bWJpb3NUeXBlNCAoDQo+ID4gKyAgSU4gVUlOVE4gTWF4Q3B1cw0KPiA+ICsgICkNCj4gPiArew0K PiA+ICsgIG1Qcm9jZXNzb3JJbmZvVHlwZTQuQ29yZUNvdW50ICAgICAgICA9IChVSU5UOCkgTWF4 Q3B1czsNCj4gPiArICBtUHJvY2Vzc29ySW5mb1R5cGU0LkVuYWJsZWRDb3JlQ291bnQgPSAoVUlO VDgpIE1heENwdXM7DQo+ID4gKyAgbVByb2Nlc3NvckluZm9UeXBlNC5UaHJlYWRDb3VudCAgICAg ID0gKFVJTlQ4KSBNYXhDcHVzOw0KPiA+ICsNCj4gPiArICBMb2dTbWJpb3NEYXRhICgoRUZJX1NN QklPU19UQUJMRV9IRUFERVINCj4gKikmbVByb2Nlc3NvckluZm9UeXBlNCwNCj4gPiArIG1Qcm9j ZXNzb3JJbmZvVHlwZTRTdHJpbmdzLCBOVUxMKTsNCj4gDQo+IFdyYXAgbG9uZyBsaW5lLg0KPiAN Cj4gPiArfQ0KPiA+ICsNCj4gPiArVk9JRA0KPiA+ICtDYWNoZUluZm9VcGRhdGVTbWJpb3NUeXBl NyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIExvZ1NtYmlvc0RhdGEg KChFRklfU01CSU9TX1RBQkxFX0hFQURFUiAqKSZtQ2FjaGVJbmZvVHlwZTdJMSwNCj4gPiArbUNh Y2hlSW5mb1R5cGU3STFTdHJpbmdzLCBOVUxMKTsNCj4gPiArICBMb2dTbWJpb3NEYXRhICgoRUZJ X1NNQklPU19UQUJMRV9IRUFERVIgKikmbUNhY2hlSW5mb1R5cGU3RDEsDQo+ID4gK21DYWNoZUlu Zm9UeXBlN0QxU3RyaW5ncywgTlVMTCk7DQo+ID4gKyAgTG9nU21iaW9zRGF0YSAoKEVGSV9TTUJJ T1NfVEFCTEVfSEVBREVSICopJm1DYWNoZUluZm9UeXBlN1UyLA0KPiA+ICttQ2FjaGVJbmZvVHlw ZTdVMlN0cmluZ3MsIE5VTEwpOw0KPiANCj4gUGxlYXNlIHdyYXAgbG9uZyBsaW5lcy4NCj4gDQo+ ID4gK30NCj4gPiArDQo+ID4gK1ZPSUQNCj4gPiArU3lzU2xvdEluZm9VcGRhdGVTbWJpb3NUeXBl OSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIExvZ1NtYmlvc0RhdGEg KChFRklfU01CSU9TX1RBQkxFX0hFQURFUiAqKSZtU3lzU2xvdEluZm9UeXBlOSwNCj4gPiArbVN5 c1Nsb3RJbmZvVHlwZTlTdHJpbmdzLCBOVUxMKTsNCj4gDQo+IFdyYXAgbG9uZyBsaW5lLg0KPiAN Cj4gPiArfQ0KPiA+ICsNCj4gPiArVk9JRA0KPiA+ICtQaHlNZW1BcnJheUluZm9VcGRhdGVTbWJp b3NUeXBlMTYgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU01C SU9TX0hBTkRMRSBNZW1BcnJheVNtYmlvc0hhbmRsZTsNCj4gPiArICBMb2dTbWJpb3NEYXRhICgo RUZJX1NNQklPU19UQUJMRV9IRUFERVINCj4gKikmbVBoeU1lbUFycmF5SW5mb1R5cGUxNiwNCj4g PiArbVBoeU1lbUFycmF5SW5mb1R5cGUxNlN0cmluZ3MsICZNZW1BcnJheVNtYmlvc0hhbmRsZSk7 DQo+IA0KPiBXcmFwIGxvbmcgbGluZS4NCj4gDQo+ID4gKw0KPiA+ICsgIC8vIFVwZGF0ZSB0aGUg bWVtb3J5IGRldmljZSBpbmZvcm1hdGlvbg0KPiA+ICsgIG1NZW1EZXZJbmZvVHlwZTE3Lk1lbW9y eUFycmF5SGFuZGxlID0gTWVtQXJyYXlTbWJpb3NIYW5kbGU7DQo+IH0NCj4gPiArDQo+ID4gK1ZP SUQNCj4gPiArTWVtRGV2SW5mb1VwZGF0ZVNtYmlvc1R5cGUxNyAoDQo+ID4gKyAgVk9JRA0KPiA+ ICsgICkNCj4gPiArew0KPiA+ICsgIExvZ1NtYmlvc0RhdGEgKChFRklfU01CSU9TX1RBQkxFX0hF QURFUg0KPiAqKSZtTWVtRGV2SW5mb1R5cGUxNywNCj4gPiArbU1lbURldkluZm9UeXBlMTdTdHJp bmdzLCBOVUxMKTsNCj4gDQo+IFdyYXAgbG9uZyBsaW5lLg0KPiANCj4gPiArfQ0KPiA+ICsNCj4g PiArVk9JRA0KPiA+ICtNZW1BcnJNYXBJbmZvVXBkYXRlU21iaW9zVHlwZTE5ICgNCj4gPiArICBW T0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgTG9nU21iaW9zRGF0YSAoKEVGSV9TTUJJT1Nf VEFCTEVfSEVBREVSDQo+ICopJm1NZW1BcnJNYXBJbmZvVHlwZTE5LA0KPiA+ICttTWVtQXJyTWFw SW5mb1R5cGUxOVN0cmluZ3MsIE5VTEwpOw0KPiANCj4gV3JhcCBsb25nIGxpbmUuDQo+IA0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtWT0lEDQo+ID4gK0Jvb3RJbmZvVXBkYXRlU21iaW9zVHlwZTMyICgN Cj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgTG9nU21iaW9zRGF0YSAoKEVG SV9TTUJJT1NfVEFCTEVfSEVBREVSICopJm1Cb290SW5mb1R5cGUzMiwNCj4gPiArbUJvb3RJbmZv VHlwZTMyU3RyaW5ncywgTlVMTCk7DQo+IA0KPiBXcmFwIGxvbmcgbGluZS4NCj4gDQo+ID4gK30N Cj4gPiArDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1BsYXRmb3JtU21iaW9z RHJpdmVyRW50cnlQb2ludCAoDQo+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5k bGUsDQo+ID4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgQklPU0luZm9VcGRhdGVTbWJpb3NUeXBlMCgpOw0KPiA+ICsNCj4gPiAr ICBTeXNJbmZvVXBkYXRlU21iaW9zVHlwZTEoKTsNCj4gPiArDQo+ID4gKyAgQm9hcmRJbmZvVXBk YXRlU21iaW9zVHlwZTIoKTsNCj4gPiArDQo+ID4gKyAgRW5jbG9zdXJlSW5mb1VwZGF0ZVNtYmlv c1R5cGUzKCk7DQo+ID4gKw0KPiA+ICsgIFByb2Nlc3NvckluZm9VcGRhdGVTbWJpb3NUeXBlNCAo Rml4ZWRQY2RHZXQzMihQY2RDb3JlQ291bnQpKTsNCj4gPiArDQo+ID4gKyAgQ2FjaGVJbmZvVXBk YXRlU21iaW9zVHlwZTcoKTsNCj4gPiArDQo+ID4gKyAgU3lzU2xvdEluZm9VcGRhdGVTbWJpb3NU eXBlOSgpOw0KPiA+ICsNCj4gPiArICBQaHlNZW1BcnJheUluZm9VcGRhdGVTbWJpb3NUeXBlMTYo KTsNCj4gPiArDQo+ID4gKyAgTWVtRGV2SW5mb1VwZGF0ZVNtYmlvc1R5cGUxNygpOw0KPiA+ICsN Cj4gPiArICBNZW1BcnJNYXBJbmZvVXBkYXRlU21iaW9zVHlwZTE5KCk7DQo+ID4gKw0KPiA+ICsg IEJvb3RJbmZvVXBkYXRlU21iaW9zVHlwZTMyKCk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1BsYXRmb3JtL1NvbGlk UnVuL0h1bW1pbmdib2FyZEVkZ2VfaU1YNlFfMkdCL0RyaXZlcnMvUGxhdGZvcm1TbQ0KPiBiaW9z RA0KPiA+IHhlL1BsYXRmb3JtU21iaW9zRHhlLmluZg0KPiA+DQo+IGIvUGxhdGZvcm0vU29saWRS dW4vSHVtbWluZ2JvYXJkRWRnZV9pTVg2UV8yR0IvRHJpdmVycy9QbGF0Zm9ybVNtDQo+IGJpb3NE DQo+ID4geGUvUGxhdGZvcm1TbWJpb3NEeGUuaW5mDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjRlZmNkNzZmZmI0Nw0KPiA+IC0tLSAvZGV2L251bGwN Cj4gPiArKysNCj4gYi9QbGF0Zm9ybS9Tb2xpZFJ1bi9IdW1taW5nYm9hcmRFZGdlX2lNWDZRXzJH Qi9Ecml2ZXJzL1BsYXRmb3JtU20NCj4gYg0KPiA+ICsrKyBpb3NEeGUvUGxhdGZvcm1TbWJpb3NE eGUuaW5mDQo+ID4gQEAgLTAsMCArMSw1NCBAQA0KPiA+ICsjLyoqIEBmaWxlDQo+ID4gKyMNCj4g PiArIyAgQ29weXJpZ2h0IChjKSAyMDEzIExpbmFyby5vcmcNCj4gPiArIyAgQ29weXJpZ2h0IChj KSwgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsjDQo+ ID4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIyAgYXJl IGxpY2Vuc2VkIGFuZA0KPiA+ICttYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlICMNCj4gPiArd2hpY2ggYWNjb21wYW5pZXMgdGhp cyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlDQo+ID4gK21heSBi ZSBmb3VuZCBhdCAjDQo+ID4NCj4gK2h0dHBzOi8vbmEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5v dXRsb29rLmNvbS8/dXJsPWh0dHAlM0ElMkYlMkZvcGVucw0KPiA+ICtvdXJjZS5vcmclMkZsaWNl bnNlcyUyRmJzZC0NCj4gbGljZW5zZS5waHAmYW1wO2RhdGE9MDIlN0MwMSU3Q0NocmlzdG9waGVy DQo+ID4NCj4gKy5DbyU0MG1pY3Jvc29mdC5jb20lN0M2MzVjNzAwYjExZGI0YzhkY2ZkNzA4ZDVm YzY0NDZmYSU3QzcyZjk4OGJmDQo+IDg2ZjENCj4gPg0KPiArNDFhZjkxYWIyZDdjZDAxMWRiNDcl N0MxJTdDMCU3QzYzNjY5MjQyOTk5MzA4MTM3OCZhbXA7c2RhdGE9c1MNCj4gVzZ6NGI0Vg0KPiA+ ICtSSSUyQkdHbkowbER5RHgzQVhIT0gwU3I2NElJU3A4RzNRWFUlM0QmYW1wO3Jlc2VydmVkPTAN Cj4gPiArIw0KPiA+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiA+ICtCQVNJUywgIyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwNCj4gRUlUSEVSIEVYUFJFU1MgT1IgSU1Q TElFRC4NCj4gPiArIw0KPiA+ICsjKiovDQo+ID4gKw0KPiA+ICtbRGVmaW5lc10NCj4gPiArICBJ TkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1DQo+IA0KPiAwMDFhDQo+ IA0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFBsYXRmb3JtU21iaW9z RHhlDQo+ID4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gMzg0N0QyM0YtMUQ5 NS00NzcyLUI2MEMtNEJCRkJDNEQ1MzJGDQo+ID4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAg ICAgICAgID0gRFhFX0RSSVZFUg0KPiA+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAg ICA9IDEuMA0KPiA+ICsgIEVOVFJZX1BPSU5UICAgICAgICAgICAgICAgICAgICA9IFBsYXRmb3Jt U21iaW9zRHJpdmVyRW50cnlQb2ludA0KPiA+ICsNCj4gPiArW1NvdXJjZXNdDQo+ID4gKyAgUGxh dGZvcm1TbWJpb3NEeGUuYw0KPiA+ICsNCj4gPiArW1BhY2thZ2VzXQ0KPiA+ICsgIE1kZVBrZy9N ZGVQa2cuZGVjDQo+ID4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiArICBB cm1Qa2cvQXJtUGtnLmRlYw0KPiA+ICsgIEFybVBsYXRmb3JtUGtnL0FybVBsYXRmb3JtUGtnLmRl Yw0KPiA+ICsgIFNpbGljb24vTlhQL2lNWDZQa2cvaU1YNlBrZy5kZWMNCj4gDQo+IFBsZWFzZSBz b3J0IGFscGhhYmV0aWNhbGx5Lg0KPiANCj4gPiArDQo+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4g PiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gPiArICBNZW1vcnlBbGxvY2F0aW9uTGli DQo+ID4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+ICsgIEJhc2VMaWINCj4gPiArICBVZWZpTGliDQo+ ID4gKyAgVWVmaURyaXZlckVudHJ5UG9pbnQNCj4gPiArICBJb0xpYg0KPiA+ICsgIERlYnVnTGli DQo+ID4gKyAgSW9MaWINCj4gDQo+IFBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5Lg0KPiBJIHRo aW5rIG9uZSBJb0xpYiBpcyBlbm91Z2guDQo+IA0KPiAvDQo+ICAgICBMZWlmDQo+IA0KPiA+ICsN Cj4gPiArW1Byb3RvY29sc10NCj4gPiArICBnRWZpU21iaW9zUHJvdG9jb2xHdWlkICAgICAgICAg ICAgICAgICAgICAgICAgIyBQUk9UT0NPTA0KPiBTT01FVElNRVNfQ09OU1VNRUQNCj4gPiArDQo+ ID4gK1tHdWlkc10NCj4gPiArDQo+ID4gK1tGaXhlZFBjZF0NCj4gPiArIGdBcm1QbGF0Zm9ybVRv a2VuU3BhY2VHdWlkLlBjZENvcmVDb3VudA0KPiA+ICsNCj4gPiArW0RlcGV4XQ0KPiA+ICsgIGdF ZmlTbWJpb3NQcm90b2NvbEd1aWQNCj4gPiAtLQ0KPiA+IDIuMTYuMi5ndmZzLjEuMzMuZ2Y1Mzcw ZjENCj4gPg0K