From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6B54521A18AA9 for ; Mon, 29 May 2017 08:26:51 -0700 (PDT) Received: from 172.30.72.56 (EHLO DGGEMA401-HUB.china.huawei.com) ([172.30.72.56]) by dggrg03-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id AOM35970; Mon, 29 May 2017 23:27:27 +0800 (CST) Received: from DGGEMA503-MBS.china.huawei.com ([169.254.2.131]) by DGGEMA401-HUB.china.huawei.com ([10.3.20.42]) with mapi id 14.03.0301.000; Mon, 29 May 2017 23:27:12 +0800 From: gengdongjiu To: "ard.biesheuvel@linaro.org" , "edk2-devel@lists.01.org" , "qemu-devel@nongnu.org" , Zhaoshenglong , "James Morse" , Christoffer Dall , Xiexiuqi , Marc Zyngier , "catalin.marinas@arm.com" , "will.deacon@arm.com" , "christoffer.dall@linaro.org" , "rkrcmar@redhat.com" , "suzuki.poulose@arm.com" , "andre.przywara@arm.com" , "mark.rutland@arm.com" , "vladimir.murzin@arm.com" , "linux-arm-kernel@lists.infradead.org" , "kvmarm@lists.cs.columbia.edu" , "kvm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "wangxiongfeng (C)" , Wuquanming , Huangshaoyu , "Leif.Lindholm@linaro.com" , "nd@arm.com" , Michael Tsirkin , Igor Mammedov Thread-Topic: [Qemu-devel] [PATCH v3 1/4] ACPI: Add APEI GHES Table Generation support Thread-Index: AdLYjsbBQ6QWR+BGTsupXf5hyyzJuQ== Date: Mon, 29 May 2017 15:27:11 +0000 Message-ID: <0184EA26B2509940AA629AE1405DD7F2014105CD@DGGEMA503-MBS.china.huawei.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.46.136.40] MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A090206.592C3DE4.0002, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=169.254.2.131, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 1a5984a084f2ba03b9580f8fffa70458 Subject: Re: [Qemu-devel] [PATCH v3 1/4] ACPI: Add APEI GHES Table Generation support X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 May 2017 15:26:53 -0000 Content-Language: zh-CN Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RGVhciBMYXN6bG8sDQogIFRoYW5rIHlvdXIgdmVyeSBtdWNoIGZvciB5b3VyIHJldmlldyBhbmQg ZGV0YWlsZWQgY29tbWVudC4gYW5kIHZlcnkgc29ycnkgZm9yIHRoZSBsYXRlIHJlc3BvbnNlIGR1 ZSB0byByZWNlbnRseSBkZWJ1ZyB0aGUgd2hvbGVzIFJBUyBzb2x1dGlvbi4gDQoNCk9uIDIwMTcv NS8yMiAyMjoyMywgTGFzemxvIEVyc2VrIHdyb3RlOg0KPiBLZWVwaW5nIHNvbWUgY29udGV4dDoN Cj4gDQo+IE9uIDA1LzEyLzE3IDIzOjAwLCBMYXN6bG8gRXJzZWsgd3JvdGU6DQo+PiBPbiAwNC8z MC8xNyAwNzozNSwgRG9uZ2ppdSBHZW5nIHdyb3RlOg0KPj4+IFRoaXMgaW1wbGVtZW50cyBBUEVJ IEdIRVMgVGFibGUgYnkgcGFzc2luZyB0aGUgZXJyb3IgY3BlciBpbmZvIHRvIA0KPj4+IHRoZSBn dWVzdCB2aWEgYSBmd19jZmdfYmxvYi4gQWZ0ZXIgYSBDUEVSIGluZm8gaXMgYWRkZWQsIGFuIFNF QS9TRUkgDQo+Pj4gZXhjZXB0aW9uIHdpbGwgYmUgaW5qZWN0ZWQgaW50byB0aGUgZ3Vlc3QgT1Mu DQo+Pj4NCj4+PiBCZWxvdyBpcyB0aGUgdGFibGUgbGF5b3V0LCB0aGUgbWF4IG51bWJlciBvZiBl cnJvciBzb3VyZSBpcyAxMSwgDQo+Pj4gd2hpY2ggaXMgY2xhc3NpZmllZCBieSBub3RpZmljYXRp b24gdHlwZS4NCj4+Pg0KPj4+IGV0Yy9hY3BpL3RhYmxlcyAgICAgICAgICAgICAgICAgZXRjL2hh cmR3YXJlX2Vycm9ycw0KPj4+ID09PT09PT09PT09PT09PT0gICAgID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPj4+ICAgICAgICAgICAgICAgICAgICAgICstLS0t LS0tLS0tLSsNCj4+PiArLS0tLS0tLS0tLS0tLS0rICAgICB8IGFkZHJlc3MgICB8ICAgICAgICAg Ky0+ICstLS0tLS0tLS0tLS0tLSsNCj4+PiB8ICAgIEhFU1QgICAgICArICAgICB8IHJlZ2lzdGVy cyB8ICAgICAgICAgfCAgIHwgRXJyb3IgU3RhdHVzIHwNCj4+PiArICstLS0tLS0tLS0tLS0rICAg ICB8ICstLS0tLS0tLS0rICAgICAgICAgfCAgIHwgRGF0YSBCbG9jayAxIHwNCj4+PiB8IHwgR0hF UzEgICAgICB8IC0tPiB8IHxhZGRyZXNzMSB8IC0tLS0tLS0tKyAgIHwgKy0tLS0tLS0tLS0tLSsN Cj4+PiB8IHwgR0hFUzIgICAgICB8IC0tPiB8IHxhZGRyZXNzMiB8IC0tLS0tLSsgICAgIHwgfCAg Q1BFUiAgICAgIHwNCj4+PiB8IHwgR0hFUzMgICAgICB8IC0tPiB8IHxhZGRyZXNzMyB8IC0tLS0r IHwgICAgIHwgfCAgQ1BFUiAgICAgIHwNCj4+PiB8IHwgIC4uLi4gICAgICB8IC0tPiB8IHwgLi4u Li4uLiB8ICAgICB8IHwgICAgIHwgfCAgQ1BFUiAgICAgIHwNCj4+PiB8IHwgR0hFUzEwICAgICB8 IC0tPiB8IHxhZGRyZXNzMTB8IC0rICB8IHwgICAgIHwgfCAgQ1BFUiAgICAgIHwNCj4+PiArLSst LS0tLS0tLS0tLS0rICAgICArLSstLS0tLS0tLS0rICB8ICB8IHwgICAgICstKy0tLS0tLS0tLS0t LSsNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8IHwNCj4+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICstLS0+ICstLS0tLS0tLS0t LS0tLSsNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAg IHwgRXJyb3IgU3RhdHVzIHwNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICB8ICAgICAgIHwgRGF0YSBCbG9jayAyIHwNCj4+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICB8ICAgICAgIHwgKy0tLS0tLS0tLS0tLSsNCj4+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgIHwgfCAgQ1BFUiAgICAgIHwNCj4+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgIHwgfCAgQ1BF UiAgICAgIHwNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICAg ICAgICstKy0tLS0tLS0tLS0tLSsNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICB8DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgKy0t LS0tPiArLS0tLS0tLS0tLS0tLS0rDQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICB8IEVycm9yIFN0YXR1cyB8DQo+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8IERhdGEgQmxvY2sgMyB8DQo+Pj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICstLS0tLS0tLS0tLS0r DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8IHwg IENQRVIgICAgICB8DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICArLSstLS0tLS0tLS0tLS0rDQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgIC4uLi4uLi4uLi4uDQo+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tPiArLS0tLS0tLS0tLS0tLS0rDQo+Pj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVycm9yIFN0YXR1cyB8 DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERh dGEgQmxvY2sgMTB8DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICstLS0tLS0tLS0tLS0rDQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IHwgIENQRVIgICAgICB8DQo+Pj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgIENQRVIgICAgICB8DQo+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgIENQRVIgICAg ICB8DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr LSstLS0tLS0tLS0tLS0rDQo+Pj4NCj4+PiBTaWduZWQtb2ZmLWJ5OiBEb25naml1IEdlbmcgPGdl bmdkb25naml1QGh1YXdlaS5jb20+DQo+Pj4gLS0tDQo+Pj4gIGRlZmF1bHQtY29uZmlncy9hcm0t c29mdG1tdS5tYWsgfCAgIDEgKw0KPj4+ICBody9hY3BpL01ha2VmaWxlLm9ianMgICAgICAgICAg IHwgICAxICsNCj4+PiAgaHcvYWNwaS9hbWwtYnVpbGQuYyAgICAgICAgICAgICB8ICAgMiArDQo+ Pj4gIGh3L2FjcGkvaGVzdF9naGVzLmMgICAgICAgICAgICAgfCAyMDMgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysNCj4+PiAgaHcvYXJtL3ZpcnQtYWNwaS1idWlsZC5jICAgICAg ICB8ICAgNiArKw0KPj4+ICBpbmNsdWRlL2h3L2FjcGkvYWNwaS1kZWZzLmggICAgIHwgMjI3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+PiAgaW5jbHVkZS9ody9h Y3BpL2FtbC1idWlsZC5oICAgICB8ICAgMSArDQo+Pj4gIGluY2x1ZGUvaHcvYWNwaS9oZXN0X2do ZXMuaCAgICAgfCAgNDMgKysrKysrKysNCj4+PiAgOCBmaWxlcyBjaGFuZ2VkLCA0ODQgaW5zZXJ0 aW9ucygrKQ0KPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaHcvYWNwaS9oZXN0X2doZXMuYyAgY3Jl YXRlIG1vZGUgMTAwNjQ0IA0KPj4+IGluY2x1ZGUvaHcvYWNwaS9oZXN0X2doZXMuaA0KPiANCj4+ IE5leHQgZmlsZToNCj4+DQo+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcvYWNwaS9oZXN0X2do ZXMuaCANCj4+PiBiL2luY2x1ZGUvaHcvYWNwaS9oZXN0X2doZXMuaCBuZXcgZmlsZSBtb2RlIDEw MDY0NCBpbmRleCANCj4+PiAwMDAwMDAwLi4wY2FkYzJiDQo+Pj4gLS0tIC9kZXYvbnVsbA0KPj4+ ICsrKyBiL2luY2x1ZGUvaHcvYWNwaS9oZXN0X2doZXMuaA0KPj4+IEBAIC0wLDAgKzEsNDMgQEAN Cj4+PiArI2lmbmRlZiBBQ1BJX0dIRVNfSA0KPj4+ICsjZGVmaW5lIEFDUElfR0hFU19IDQo+Pj4g Kw0KPj4+ICsjaW5jbHVkZSAiaHcvYWNwaS9iaW9zLWxpbmtlci1sb2FkZXIuaCINCj4+PiArDQo+ Pj4gKyNkZWZpbmUgR0hFU19FUlJPUlNfRldfQ0ZHX0ZJTEUgICAgICAiZXRjL2hhcmR3YXJlX2Vy cm9ycyINCj4+PiArI2RlZmluZSBHSEVTX0RBVEFfQUREUl9GV19DRkdfRklMRSAgICAgICJldGMv aGFyZHdhcmVfZXJyb3JzX2FkZHIiDQo+Pj4gKw0KPj4+ICsjZGVmaW5lIEdBU19BRERSRVNTX09G RlNFVCAgICAgICAgICAgICAgNA0KPj4+ICsjZGVmaW5lIEVSUk9SX1NUQVRVU19BRERSRVNTX09G RlNFVCAgICAgMjANCj4+PiArI2RlZmluZSBOT1RJRklDQVRJT05fU1RSVUNUVVJFICAgICAgICAg IDMyDQo+Pj4gKw0KPj4+ICsjZGVmaW5lIEJGQVBFSV9PSyAgIDANCj4+PiArI2RlZmluZSBCRkFQ RUlfRkFJTCAxDQo+Pj4gKw0KPj4+ICsvKiBUaGUgbWF4IG51bWJlciBvZiBlcnJvciBzb3VyY2Us IHRoZSBlcnJvciBzb3VyY2VzDQo+Pj4gKyAqIGFyZSBjbGFzc2lmaWVkIGJ5IG5vdGlmaWNhdGlv biB0eXBlLCBiZWxvdyBpcyB0aGUgZGVmaW5pdGlvbg0KPj4+ICsgKiAwIC0gUG9sbGVkDQo+Pj4g KyAqIDEgLSBFeHRlcm5hbCBJbnRlcnJ1cHQNCj4+PiArICogMiAtIExvY2FsIEludGVycnVwdA0K Pj4+ICsgKiAzIC0gU0NJDQo+Pj4gKyAqIDQgLSBOTUkNCj4+PiArICogNSAtIENNQ0kNCj4+PiAr ICogNiAtIE1DRQ0KPj4+ICsgKiA3IC0gR1BJTy1TaWduYWwNCj4+PiArICogOCAtIEFSTXY4IFNF QQ0KPj4+ICsgKiA5IC0gQVJNdjggU0VJDQo+Pj4gKyAqIDEwIC0gRXh0ZXJuYWwgSW50ZXJydXB0 IC0gR1NJVg0KPj4+ICsgKi8NCj4+PiArI2RlZmluZSBNQVhfRVJST1JfU09VUkNFX0NPVU5UX1Y2 ICAgICAgICAgICAxMQ0KPj4NCj4+IEknbGwgaGF2ZSB0byByZXZpZXcgdGhpcyBoZWFkZXIgZmls ZSBtb3JlIHRob3JvdWdobHksIG9uY2UgSSBzZWUgdGhlIA0KPj4gY29kZSB0aGF0IHJlZmVyZW5j ZXMgdGhlc2UgbWFjcm9zLiBGb3Igbm93LCBJIGhhdmUgb25lIGNvbW1lbnQ6DQo+Pg0KPj4gKDQy KSBJIHRoaW5rIHRoZSBub3RpZmljYXRpb24gdHlwZSBsaXN0IHNob3VsZCBiZSByZW1vdmVkIGZy b20gdGhpcyANCj4+IGxvY2F0aW9uLiBBbHNvLCB0aGUgb3Blbi1jb2RlZCB2YWx1ZSAxMSBzaG91 bGQgYmUgcmVwbGFjZWQgd2l0aCB0aGUgDQo+PiBBQ1BJX0hFU1RfTk9USUZZX1JFU0VSVkVEIGVu dW1lcmF0aW9uIGNvbnN0YW50Lg0KPj4NCj4+IEkgd2lsbCB0cnkgdG8gY29udGludWUgcmV2aWV3 aW5nIHRoaXMgcGF0Y2ggc29tZXRpbWUgbmV4dCB3ZWVrIA0KPj4gKHNlY29uZCBoYWxmIG9mIHRo ZSB3ZWVrIGF0IHRoZSBlYXJsaWVzdCwgSSB0aGluaykuDQo+IA0KPiAoNDMpIEkgdGhpbmsgYWxs IG1hY3JvcyBpbnRyb2R1Y2VkIGluIHRoaXMgaGVhZGVyIHNob3VsZCBhbGwgc3RhcnQgDQo+IHdp dGggIkdIRVNfIi4NCiAgIE9rLg0KPiANCj4+DQo+Pj4gKy8qIFRoZSBtYXggc2l6ZSBpbiBCeXRl cyBmb3Igb25lIGVycm9yIGJsb2NrICovDQo+Pj4gKyNkZWZpbmUgTUFYX1JBV19EQVRBX0xFTkdU SCAgICAgICAgICAgICAgICAgMHgxMDAwDQo+Pj4gKw0KPj4+ICt0eXBlZGVmIHN0cnVjdCBHaGVz RXJyb3JTdGF0ZSB7DQo+Pj4gKyAgICB1aW50NjRfdCBwaHlzaWNhbF9hZGRyOw0KPj4+ICsgICAg dWludDY0X3QgZ2hlc19hZGRyX2xlWzhdOw0KPj4+ICt9IEdoZXNFcnJvclN0YXRlOw0KPiANCj4g KDQ0KSBTaG91bGQgdGhpcyBiZSBjYWxsZWQgIkdoZXNTdGF0ZSIgaW5zdGVhZCAoZHJvcHBpbmcg IkVycm9yIik/DQpnb29kIHN1Z2dlc3Rpb24uDQoNCj4gDQo+ICg0NSkgKFRoaXMgaXMgYSBxdWVz dGlvbiBmb3Igb3RoZXIgcmV2aWV3ZXJzKSBJIGhhdmUgbm8gaWRlYSBpZiB0aGlzIA0KPiBhYnN0 cmFjdGlvbiBzaG91bGQgYmUgYSBkZXZpY2UgKHN5c2J1cyBvciBvdGhlcndpc2UpLiBTaG91bGQg aXQgYmUgYSANCj4gZGV2aWNlPyBCZWxvdyB3ZSBoYXZlIGEgc3RhdGljICgiZ2xvYmFsIikgdmFy aWFibGUgb2YgdGhpcyB0eXBlLCB3aGljaCANCj4gaXMgcXVpdGUgdW51c3VhbC4NCiBCZWZvcmUg SSBhbHNvIGluZGVlZCBjb25zaWRlciB0aGlzIHF1ZXN0aW9uIHRoYXQgd2hldGhlciB0aGlzIGFi c3RyYWN0aW9uIHNob3VsZCAgYmUgYSBkZXZpY2UsIG1heWJlIGdsb2JhbCB2YXJpYWJsZSBpcyBj bGVhbi4gYW55d2F5IEkgd2lsbCBjb25zaWRlciBhZ2FpbiBhYm91dCB0aGlzIHBvaW50Lg0KDQo+ IA0KPiAoNDYpIFdoYXQgaXMgInBoeXNpY2FsX2FkZHIiIGdvb2QgZm9yPyBCZWxvdyBJIGNhbiBv bmx5IHNlZSBhbiANCj4gYXNzaWdubWVudCB0byBpdCwgaW4gZ2hlc191cGRhdGVfZ3Vlc3QoKS4g V2hlcmUgaXMgdGhlIGZpZWxkIHJlYWQ/DQogICB0aGlzICJwaHlzaWNhbF9hZGRyIiBhZGRyZXNz IGlzIHRoZSBwaHlzaWNhbCBlcnJvciBhZGRyZXNzIGluIHRoZSBDUEVSLg0Kc3VjaCBhcyB0aGUg cGh5c2ljYWwgYWRkcmVzcyB0aGF0IGhhcHBlbiBod3BvaXNvbiwgdGhpcyBhZGRyZXNzIGlzIGRl bGl2ZXJlZCBieSB0aGUgS1ZNIGFuZCBRRU1VIHRyYW5zZmVyIHRoaXMgYWRkcmVzcyB0byBwaHlz aWNhbC4NCg0KPiANCj4gKDQ3KSAiZ2hlc19hZGRyX2xlIiBzaG91bGQgYmUgYW4gYXJyYXkgb2Yg ZWlnaHQgdWludDhfdCBlbGVtZW50cyAoZm9yIA0KPiByZXByZXNlbnRpbmcgYSBzaW5nbGUgdWlu dDY0X3QgaW4gbGl0dGxlIGVuZGlhbikuIFRoZSBkZWNsYXJhdGlvbiANCj4gYWJvdmUgaGFzIGEg dHlwbzsgdGhlIGVsZW1lbnQgdHlwZSBpcyBjdXJyZW50bHkgc3BlY2lmaWVkIGFzIHVpbnQ2NF90 Lg0KPiANCj4gSXQgc3VmZmljZXMgZm9yIHRoZSBmaXJtd2FyZSB0byBwYXNzIHRoZSBiYXNlIGFk ZHJlc3Mgb2YgDQo+ICJldGMvaGFyZHdhcmVfZXJyb3JzIiBiYWNrIHRvIFFFTVUsIGFsbCB0aGUg b3RoZXIgYWRkcmVzc2VzIGNhbiBiZSANCj4gY29tcHV0ZWQgaW4gUUVNVSBhcyBuZWVkZWQuDQo+ IA0KPiAoSWYsIGZvciBzb21lIHJlYXNvbiB5b3UgKmRvKiBuZWVkIHRvIHBhc3MgYmFjayBtdWx0 aXBsZSBhZGRyZXNzZXMsIA0KPiB0aGVuIHlvdSBzaG91bGQgdXNlDQo+IA0KPiAgIHVpbnQ4X3Qg eHh4eF9hZGRyX2xlW05dWzhdOw0KPiANCj4gQnV0IGV2ZW4gaW4gdGhpcyBjYXNlLCBzZXR0aW5n IE4gdG8gOCBkb2Vzbid0IGxvb2sgdXNlZnVsLCBiZWNhdXNlIHdlIA0KPiBoYXZlIDExIGVycm9y IHNvdXJjZXMgLyBub3RpZmljYXRpb24gdHlwZXMuKQ0KICBUaGFua3MgZm9yIHRoaXMgc3VnZ2Vz dGlvbi4gaXQgc2VlbXMgZ29vZC4NCg0KPiANCj4+PiArDQo+Pj4gK3ZvaWQgZ2hlc19idWlsZF9h Y3BpKEdBcnJheSAqdGFibGVfZGF0YSwgR0FycmF5ICpoYXJkd2FyZV9lcnJvciwNCj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEJJT1NMaW5rZXIgKmxpbmtlcik7IHZvaWQgDQo+Pj4g K2doZXNfYWRkX2Z3X2NmZyhGV0NmZ1N0YXRlICpzLCBHQXJyYXkgKmd1aWQpOw0KPiANCj4gKDQ4 KSBUaGUgc2Vjb25kIHBhcmFtZXRlciBzaG91bGQgYmUgY2FsbGVkICJoYXJkd2FyZV9lcnJvcnMi LCBub3QgDQo+ICJndWlkIi4NCiAgIE9rLCB3aWxsIGNoYW5nZSBpdC4NCg0KPiANCj4+PiArdm9p ZCBnaGVzX3VwZGF0ZV9ndWVzdCh1aW50MzJfdCBub3RpZnksIHVpbnQ2NF90IHBoeXNpY2FsX2Fk ZHJlc3MpOw0KPiANCj4gKDQ5KSBDYW4geW91IGNhbGwgdGhlIHNlY29uZCBwYXJhbWV0ZXIgImVy cm9yX3BoeXNpY2FsX2FkZHIiPw0KT2ssIHdpbGwgY2hhbmdlIGl0Lg0KDQo+IA0KPj4+ICsjZW5k aWYNCj4+Pg0KPiANCj4+PiBkaWZmIC0tZ2l0IGEvZGVmYXVsdC1jb25maWdzL2FybS1zb2Z0bW11 Lm1hayANCj4+PiBiL2RlZmF1bHQtY29uZmlncy9hcm0tc29mdG1tdS5tYWsgaW5kZXggMWUzYmQy Yi4uZDVmMTU1MiAxMDA2NDQNCj4+PiAtLS0gYS9kZWZhdWx0LWNvbmZpZ3MvYXJtLXNvZnRtbXUu bWFrDQo+Pj4gKysrIGIvZGVmYXVsdC1jb25maWdzL2FybS1zb2Z0bW11Lm1haw0KPj4+IEBAIC0x MjEsMyArMTIxLDQgQEAgQ09ORklHX0FDUEk9eQ0KPj4+ICBDT05GSUdfU01CSU9TPXkNCj4+PiAg Q09ORklHX0FTUEVFRF9TT0M9eQ0KPj4+ICBDT05GSUdfR1BJT19LRVk9eQ0KPj4+ICtDT05GSUdf QUNQSV9BUEVJX0dFTkVSQVRJT049eQ0KPiANCj4+PiBkaWZmIC0tZ2l0IGEvaHcvYWNwaS9NYWtl ZmlsZS5vYmpzIGIvaHcvYWNwaS9NYWtlZmlsZS5vYmpzIGluZGV4IA0KPj4+IDExYzM1YmMuLjc3 NmI0NmUgMTAwNjQ0DQo+Pj4gLS0tIGEvaHcvYWNwaS9NYWtlZmlsZS5vYmpzDQo+Pj4gKysrIGIv aHcvYWNwaS9NYWtlZmlsZS5vYmpzDQo+Pj4gQEAgLTYsNiArNiw3IEBAIGNvbW1vbi1vYmotJChD T05GSUdfQUNQSV9NRU1PUllfSE9UUExVRykgKz0gDQo+Pj4gbWVtb3J5X2hvdHBsdWcubw0KPj4+ ICBjb21tb24tb2JqLSQoQ09ORklHX0FDUElfQ1BVX0hPVFBMVUcpICs9IGNwdS5vDQo+Pj4gIGNv bW1vbi1vYmotJChDT05GSUdfQUNQSV9OVkRJTU0pICs9IG52ZGltbS5vDQo+Pj4gIGNvbW1vbi1v YmotJChDT05GSUdfQUNQSV9WTUdFTklEKSArPSB2bWdlbmlkLm8NCj4+PiArY29tbW9uLW9iai0k KENPTkZJR19BQ1BJX0FQRUlfR0VORVJBVElPTikgKz0gaGVzdF9naGVzLm8NCj4+PiAgY29tbW9u LW9iai0kKGNhbGwgbG5vdCwkKENPTkZJR19BQ1BJX1g4NikpICs9IGFjcGktc3R1Yi5vDQo+Pj4N Cj4+PiAgY29tbW9uLW9iai15ICs9IGFjcGlfaW50ZXJmYWNlLm8NCj4gDQo+ICg1MCkgSSB0aGlu ayAiQ09ORklHX0FDUElfQVBFSSIgd291bGQgYmUgbW9yZSBzdWNjaW5jdC4NCk9LLCBJIHdpbGwg Y2hhbmdlIGl0Lg0KPiANCj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody9hY3BpL2FtbC1idWls ZC5oIA0KPj4+IGIvaW5jbHVkZS9ody9hY3BpL2FtbC1idWlsZC5oIGluZGV4IDAwYzIxZjEuLmMx ZDE1YjMgMTAwNjQ0DQo+Pj4gLS0tIGEvaW5jbHVkZS9ody9hY3BpL2FtbC1idWlsZC5oDQo+Pj4g KysrIGIvaW5jbHVkZS9ody9hY3BpL2FtbC1idWlsZC5oDQo+Pj4gQEAgLTIxMSw2ICsyMTEsNyBA QCBzdHJ1Y3QgQWNwaUJ1aWxkVGFibGVzIHsNCj4+PiAgICAgIEdBcnJheSAqcnNkcDsNCj4+PiAg ICAgIEdBcnJheSAqdGNwYWxvZzsNCj4+PiAgICAgIEdBcnJheSAqdm1nZW5pZDsNCj4+PiArICAg IEdBcnJheSAqaGFyZHdhcmVfZXJyb3JzOw0KPj4+ICAgICAgQklPU0xpbmtlciAqbGlua2VyOw0K Pj4+ICB9IEFjcGlCdWlsZFRhYmxlczsNCj4+Pg0KPiANCj4+PiBkaWZmIC0tZ2l0IGEvaHcvYWNw aS9hbWwtYnVpbGQuYyBiL2h3L2FjcGkvYW1sLWJ1aWxkLmMgaW5kZXggDQo+Pj4gYzZmMjAzMi4u ODAyYjk4ZCAxMDA2NDQNCj4+PiAtLS0gYS9ody9hY3BpL2FtbC1idWlsZC5jDQo+Pj4gKysrIGIv aHcvYWNwaS9hbWwtYnVpbGQuYw0KPj4+IEBAIC0xNTYwLDYgKzE1NjAsNyBAQCB2b2lkIGFjcGlf YnVpbGRfdGFibGVzX2luaXQoQWNwaUJ1aWxkVGFibGVzICp0YWJsZXMpDQo+Pj4gICAgICB0YWJs ZXMtPnRhYmxlX2RhdGEgPSBnX2FycmF5X25ldyhmYWxzZSwgdHJ1ZSAvKiBjbGVhciAqLywgMSk7 DQo+Pj4gICAgICB0YWJsZXMtPnRjcGFsb2cgPSBnX2FycmF5X25ldyhmYWxzZSwgdHJ1ZSAvKiBj bGVhciAqLywgMSk7DQo+Pj4gICAgICB0YWJsZXMtPnZtZ2VuaWQgPSBnX2FycmF5X25ldyhmYWxz ZSwgdHJ1ZSAvKiBjbGVhciAqLywgMSk7DQo+Pj4gKyAgICB0YWJsZXMtPmhhcmR3YXJlX2Vycm9y cyA9IGdfYXJyYXlfbmV3KGZhbHNlLCB0cnVlIC8qIGNsZWFyICovLCANCj4+PiArIDEpOw0KPj4+ ICAgICAgdGFibGVzLT5saW5rZXIgPSBiaW9zX2xpbmtlcl9sb2FkZXJfaW5pdCgpOyAgfQ0KPj4+ DQo+Pj4gQEAgLTE1NzAsNiArMTU3MSw3IEBAIHZvaWQgYWNwaV9idWlsZF90YWJsZXNfY2xlYW51 cChBY3BpQnVpbGRUYWJsZXMgKnRhYmxlcywgYm9vbCBtZnJlKQ0KPj4+ICAgICAgZ19hcnJheV9m cmVlKHRhYmxlcy0+dGFibGVfZGF0YSwgdHJ1ZSk7DQo+Pj4gICAgICBnX2FycmF5X2ZyZWUodGFi bGVzLT50Y3BhbG9nLCBtZnJlKTsNCj4+PiAgICAgIGdfYXJyYXlfZnJlZSh0YWJsZXMtPnZtZ2Vu aWQsIG1mcmUpOw0KPj4+ICsgICAgZ19hcnJheV9mcmVlKHRhYmxlcy0+aGFyZHdhcmVfZXJyb3Jz LCBtZnJlKTsNCj4+PiAgfQ0KPj4+DQo+Pj4gIC8qIEJ1aWxkIHJzZHQgdGFibGUgKi8NCj4gDQo+ IExvb2tzIGdvb2QgdG8gbWUuDQogdGhhbmtzLg0KDQo+IA0KPj4+IGRpZmYgLS1naXQgYS9ody9h cm0vdmlydC1hY3BpLWJ1aWxkLmMgYi9ody9hcm0vdmlydC1hY3BpLWJ1aWxkLmMgDQo+Pj4gaW5k ZXggMDgzNWU1OS4uZTdhYjVkYyAxMDA2NDQNCj4+PiAtLS0gYS9ody9hcm0vdmlydC1hY3BpLWJ1 aWxkLmMNCj4+PiArKysgYi9ody9hcm0vdmlydC1hY3BpLWJ1aWxkLmMNCj4+PiBAQCAtNDUsNiAr NDUsOCBAQA0KPj4+ICAjaW5jbHVkZSAiaHcvYXJtL3ZpcnQuaCINCj4+PiAgI2luY2x1ZGUgInN5 c2VtdS9udW1hLmgiDQo+Pj4gICNpbmNsdWRlICJrdm1fYXJtLmgiDQo+Pj4gKyNpbmNsdWRlICJo dy9hY3BpL3ZtZ2VuaWQuaCINCj4gDQo+ICg1MSkgSSB0aGluayB0aGlzIGluY2x1ZGUgZGlyZWN0 aXZlIGlzIG5vdCBuZWNlc3NhcnkuDQogIHNvcnJ5LCB0aGlzIGlzIG15IHR5cG8gZXJyb3IsIHdp bGwgcmVtb3ZlIGl0Lg0KDQo+IA0KPj4+ICsjaW5jbHVkZSAiaHcvYWNwaS9oZXN0X2doZXMuaCIN Cj4+Pg0KPj4+ICAjZGVmaW5lIEFSTV9TUElfQkFTRSAzMg0KPj4+ICAjZGVmaW5lIEFDUElfUE9X RVJfQlVUVE9OX0RFVklDRSAiUFdSQiINCj4+PiBAQCAtNzc4LDYgKzc4MCw5IEBAIHZvaWQgdmly dF9hY3BpX2J1aWxkKFZpcnRNYWNoaW5lU3RhdGUgKnZtcywgQWNwaUJ1aWxkVGFibGVzICp0YWJs ZXMpDQo+Pj4gICAgICBhY3BpX2FkZF90YWJsZSh0YWJsZV9vZmZzZXRzLCB0YWJsZXNfYmxvYik7 DQo+Pj4gICAgICBidWlsZF9zcGNyKHRhYmxlc19ibG9iLCB0YWJsZXMtPmxpbmtlciwgdm1zKTsN Cj4+Pg0KPj4+ICsgICAgYWNwaV9hZGRfdGFibGUodGFibGVfb2Zmc2V0cywgdGFibGVzX2Jsb2Ip Ow0KPj4+ICsgICAgZ2hlc19idWlsZF9hY3BpKHRhYmxlc19ibG9iLCB0YWJsZXMtPmhhcmR3YXJl X2Vycm9ycywgDQo+Pj4gKyB0YWJsZXMtPmxpbmtlcik7DQo+Pj4gKw0KPj4+ICAgICAgaWYgKG5i X251bWFfbm9kZXMgPiAwKSB7DQo+Pj4gICAgICAgICAgYWNwaV9hZGRfdGFibGUodGFibGVfb2Zm c2V0cywgdGFibGVzX2Jsb2IpOw0KPj4+ICAgICAgICAgIGJ1aWxkX3NyYXQodGFibGVzX2Jsb2Is IHRhYmxlcy0+bGlua2VyLCB2bXMpOyBAQCAtODkyLDYgDQo+Pj4gKzg5Nyw3IEBAIHZvaWQgdmly dF9hY3BpX3NldHVwKFZpcnRNYWNoaW5lU3RhdGUgKnZtcykNCj4+Pg0KPj4+ICAgICAgYnVpbGRf c3RhdGUtPnJzZHBfbXIgPSBhY3BpX2FkZF9yb21fYmxvYihidWlsZF9zdGF0ZSwgdGFibGVzLnJz ZHAsDQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB Q1BJX0JVSUxEX1JTRFBfRklMRSwgDQo+Pj4gMCk7DQo+Pj4gKyAgICBnaGVzX2FkZF9md19jZmco dm1zLT5md19jZmcsIHRhYmxlcy5oYXJkd2FyZV9lcnJvcnMpOw0KPj4+DQo+Pj4gICAgICBxZW11 X3JlZ2lzdGVyX3Jlc2V0KHZpcnRfYWNwaV9idWlsZF9yZXNldCwgYnVpbGRfc3RhdGUpOw0KPj4+ ICAgICAgdmlydF9hY3BpX2J1aWxkX3Jlc2V0KGJ1aWxkX3N0YXRlKTsNCj4gDQo+ICg1MikgSSB0 aGluayBmb3IgY29uc2lzdGVuY3kgd2l0aCBleGlzdGluZyBjb2RlLCB0aGlzIGZ1bmN0aW9uIGNh bGwgDQo+IHNob3VsZCBiZSBwbGFjZWQgYmV0d2VlbiB0aGUgQUNQSV9CVUlMRF9UUE1MT0dfRklM RSBsaW5lIGFuZCB0aGUNCj4gYWNwaV9hZGRfcm9tX2Jsb2IoKSBsaW5lLg0KT0suDQoNCj4gDQo+ Pj4gZGlmZiAtLWdpdCBhL2h3L2FjcGkvaGVzdF9naGVzLmMgYi9ody9hY3BpL2hlc3RfZ2hlcy5j IG5ldyBmaWxlIG1vZGUgDQo+Pj4gMTAwNjQ0IGluZGV4IDAwMDAwMDAuLjkxZDM4MmUNCj4+PiAt LS0gL2Rldi9udWxsDQo+Pj4gKysrIGIvaHcvYWNwaS9oZXN0X2doZXMuYw0KPj4+IEBAIC0wLDAg KzEsMjAzIEBADQo+Pj4gKy8qDQo+Pj4gKyAqICBBUEVJIEdIRVMgdGFibGUgR2VuZXJhdGlvbg0K Pj4+ICsgKg0KPj4+ICsgKiAgQ29weXJpZ2h0IChDKSAyMDE3IGh1YXdlaS4NCj4+PiArICoNCj4+ PiArICogIEF1dGhvcjogRG9uZ2ppdSBHZW5nIDxnZW5nZG9uZ2ppdUBodWF3ZWkuY29tPg0KPj4+ ICsgKg0KPj4+ICsgKiBUaGlzIHdvcmsgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR1BMLCB2ZXJzaW9uIDIgb3IgbGF0ZXIuDQo+Pj4gKyAqIFNlZSB0aGUgQ09QWUlORyBm aWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5Lg0KPj4+ICsgKg0KPj4+ICsgKi8NCj4+PiAr DQo+Pj4gKyNpbmNsdWRlICJxZW11L29zZGVwLmgiDQo+Pj4gKyNpbmNsdWRlICJxbXAtY29tbWFu ZHMuaCINCj4+PiArI2luY2x1ZGUgImh3L2FjcGkvYWNwaS5oIg0KPj4+ICsjaW5jbHVkZSAiaHcv YWNwaS9hbWwtYnVpbGQuaCINCj4+PiArI2luY2x1ZGUgImh3L2FjcGkvaGVzdF9naGVzLmgiDQo+ Pj4gKyNpbmNsdWRlICJody9udnJhbS9md19jZmcuaCINCj4+PiArI2luY2x1ZGUgInN5c2VtdS9z eXNlbXUuaCINCj4+PiArDQo+Pj4gK3N0YXRpYyBpbnQgZ2hlc19nZW5lcmF0ZV9jcGVyX3JlY29y ZCh1aW50NjRfdCBibG9ja19lcnJvcl9hZGRyZXNzLA0KPj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50NjRfdCBlcnJvcl9waHlzaWNhbF9hZGRyKSB7DQo+Pj4gKyAg ICBBY3BpR2VuZXJpY0Vycm9yU3RhdHVzIGJsb2NrOw0KPj4+ICsgICAgQWNwaUdlbmVyaWNFcnJv ckRhdGEgKmdkYXRhOw0KPj4+ICsgICAgc3RydWN0IGNwZXJfc2VjX21lbV9lcnIgKm1lbV9lcnI7 DQo+Pj4gKyAgICB1aW50NjRfdCBibG9ja19kYXRhX2xlbmd0aDsNCj4+PiArICAgIHVuc2lnbmVk IGNoYXIgKmJ1ZmZlcjsNCj4+PiArDQo+Pj4gKyAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3JlYWQo YmxvY2tfZXJyb3JfYWRkcmVzcywgJmJsb2NrLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVvZihBY3BpR2VuZXJpY0Vycm9yU3RhdHVzKSk7DQo+Pj4gKw0KPj4+ICsg ICAgYmxvY2tfZGF0YV9sZW5ndGggPSBzaXplb2YoQWNwaUdlbmVyaWNFcnJvclN0YXR1cykgKyAN Cj4+PiArIGJsb2NrLmRhdGFfbGVuZ3RoOw0KPiANCj4gKDUzKSAiYmxvY2suZGF0YV9sZW5ndGgi IG11c3Qgc3VyZWx5IGJlIGNvbnZlcnRlZCBmcm9tIExFIHRvIA0KPiBob3N0LWVuZGlhbiwgc28g cGxlYXNlIHdyYXAgaXQgd2l0aCBsZTMyX3RvX2NwdSgpLg0KT0suDQoNCj4gDQo+Pj4gKw0KPj4+ ICsgICAgLyogSWYgdGhlIEdlbmVyaWMgRXJyb3IgU3RhdHVzIEJsb2NrIGlzIE5VTEwsIHVwZGF0 ZQ0KPj4+ICsgICAgICogdGhlIGJsb2NrIGhlYWRlcg0KPj4+ICsgICAgICovDQo+Pj4gKyAgICBp ZiAoIWJsb2NrLmJsb2NrX3N0YXR1cykgew0KPj4+ICsgICAgICAgIGJsb2NrLmJsb2NrX3N0YXR1 cyA9IEFDUElfQkVSVF9VTkNPUlJFQ1RBQkxFOw0KPj4+ICsgICAgICAgIGJsb2NrLmVycm9yX3Nl dmVyaXR5ID0gQ1BFUl9TRVZfRkFUQUw7DQo+Pj4gKyAgICB9DQo+Pj4gKw0KPj4+ICsgICAgYmxv Y2suZGF0YV9sZW5ndGggKz0gc2l6ZW9mKEFjcGlHZW5lcmljRXJyb3JEYXRhKTsNCj4+PiArICAg IGJsb2NrLmRhdGFfbGVuZ3RoICs9IHNpemVvZihzdHJ1Y3QgY3Blcl9zZWNfbWVtX2Vycik7DQo+ IA0KPiAoNTQpIENvbnZlcnNpb24gYmV0d2VlbiBMRSBhbmQgaG9zdC1lbmRpYW4gaXMgbWlzc2lu Zy4NCiBPSy4NCj4gDQo+ICg1NSkgV2hhdCBoYXBwZW5zIGlmIHlvdSBydW4gb3V0IG9mIHRoZSBw cmVhbGxvY2F0ZWQgbWVtb3J5Pw0KICAgaWYgaXQgcnVuIG91dCBvZiB0aGUgcHJlYWxsb2NhdGVk IG1lbW9yeS4gaXQgd2lsbCBvdmVyd3JpdGUgb3RoZXINCiAgICBlcnJvciBzb3VyY2UuIGV2ZXJ5 IGJsb2NrJ3Mgc2l6ZSBpcyBmaXhlZC4gc28gaXQgZG9lcyBub3QgZWFzeSBkeW5hbWljYWxseSBl eHRlbmQgdGhlIHNpemUgaWYgaXQgaXMgb3ZlcmZsb3cuDQogICBBbnl3YXkgSSB3aWxsIGFkZCBh IGVycm9yIHJlcG9ydCBpZiBpdCBoYXBwZW5zIG92ZXJ3cml0ZS4NCg0KPiANCj4+PiArDQo+Pj4g KyAgICAvKiBXcml0ZSBiYWNrIHRoZSBHZW5lcmljIEVycm9yIFN0YXR1cyBCbG9jayB0byBndWVz dCBtZW1vcnkgKi8NCj4+PiArICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfd3JpdGUoYmxvY2tfZXJy b3JfYWRkcmVzcywgJmJsb2NrLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yo QWNwaUdlbmVyaWNFcnJvclN0YXR1cykpOw0KPj4+ICsNCj4+PiArICAgIC8qIEZpbGwgaW4gR2Vu ZXJpYyBFcnJvciBEYXRhIEVudHJ5ICovDQo+Pj4gKyAgICBidWZmZXIgPSBnX21hbGxvYyhzaXpl b2YoQWNwaUdlbmVyaWNFcnJvckRhdGEpICsgc2l6ZW9mKGNwZXJfc2VjX21lbV9lcnIpKTsNCj4+ PiArICAgIG1lbXNldChidWZmZXIsIDAsIHNpemVvZihBY3BpR2VuZXJpY0Vycm9yRGF0YSkgKyAN Cj4+PiArIHNpemVvZihjcGVyX3NlY19tZW1fZXJyKSk7DQo+IA0KPiAoNTYpIFBsZWFzZSB1c2Ug Z19tYWxsb2MwKCkgaW5zdGVhZC4NCk9rLg0KDQo+IA0KPj4+ICsgICAgZ2RhdGEgPSAoQWNwaUdl bmVyaWNFcnJvckRhdGEgKilidWZmZXI7DQo+Pj4gKw0KPj4+ICsgICAgbWVtY3B5KGdkYXRhLT5z ZWN0aW9uX3R5cGUsICh2b2lkICopICZDUEVSX1NFQ19QTEFURk9STV9NRU0sDQo+Pj4gKyAgICAg ICAgICAgICAgICBzaXplb2YodXVpZF9sZSkpOw0KPj4+ICsgICAgZ2RhdGEtPmVycm9yX2RhdGFf bGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBjcGVyX3NlY19tZW1fZXJyKTsNCj4gDQo+ICg1NykgRW5k aWFubmVzcyBjb252ZXJzaW9uIG1pc3NpbmcgKGNwdV90b19sZTMyKCkpLg0KVGhhbmtzIGZvciB0 aGUgcmVtaW5kZXIuDQoNCj4gDQo+Pj4gKw0KPj4+ICsgICAgbWVtX2VyciA9IChzdHJ1Y3QgY3Bl cl9zZWNfbWVtX2VyciAqKSAoZ2RhdGEgKyAxKTsNCj4+PiArDQo+Pj4gKyAgICAvKiBJbiBvcmRl ciB0byBzaW1wbGlmeSBzaW11bGF0aW9uLCBoYXJkY29kZSB0aGUgQ1BFUiBzZWN0aW9uIHRvIG1l bW9yeQ0KPj4+ICsgICAgICogc2VjdGlvbi4NCj4+PiArICAgICAqLw0KPj4+ICsgICAgbWVtX2Vy ci0+dmFsaWRhdGlvbl9iaXRzIHw9IENQRVJfTUVNX1ZBTElEX0VSUk9SX1RZUEU7DQo+Pj4gKyAg ICBtZW1fZXJyLT5lcnJvcl90eXBlID0gMzsNCj4gDQo+ICg1OCkgSXMgdGhpcyBzdXBwb3NlZCB0 byBzdGFuZCBmb3IgIk11bHRpLWJpdCBFQ0MiIChmcm9tICJOLjIuNSBNZW1vcnkgDQo+IEVycm9y IFNlY3Rpb24iIGluIFVFRkkgMi42KT8gU2hvdWxkIHdlIGhhdmUgYSBtYWNybyBmb3IgdGhhdD8N CiAgWWVzLCBpdCBpcy4gV2hhdCBkbyB5b3UgbWVhbiBhIG1hY3JvPyBGb3IgYWxsIHRoZSBlcnJv cnMgdGhhdCBoYXBwZW4gaW4gdGhlIGd1ZXN0IE9TLA0KICBpbiBvcmRlciB0byBzaW11bGF0ZSBl YXN5LCBJIGFic3RyYWN0IGFsbCB0aGUgZXJyb3Igc2VjdGlvbiB0byBtZW1vcnkgc2VjdGlvbiwg ZXZlbiB0aG91Z2ggdGhlIGVycm9yIHNlY3Rpb24gaXMgcHJvY2Vzc29yIG9yIG90aGVyIHNlY3Rp b24uDQogIEkgZG8gbm90IGtub3cgd2hldGhlciBkbyB5b3UgaGF2ZSBzb21lIHN1Z2dlc3Rpb24g Zm9yIHRoYXQuDQoNCj4+PiArDQo+Pj4gKyAgICBtZW1fZXJyLT52YWxpZGF0aW9uX2JpdHMgfD0g Q1BFUl9NRU1fVkFMSURfUEE7DQo+Pj4gKyAgICBtZW1fZXJyLT5waHlzaWNhbF9hZGRyID0gZXJy b3JfcGh5c2ljYWxfYWRkcjsNCj4gDQo+ICg1OSkgQ29udmVyc2lvbiBiZXR3ZWVuIGhvc3QgYW5k IGxpdHRsZSBlbmRpYW4gaXMgbWlzc2luZyBvbiBhbGwgZm91ciANCj4gbGluZXMgYWJvdmUuDQog VGhhbmtzLg0KPiANCj4+PiArDQo+Pj4gKyAgICBtZW1fZXJyLT52YWxpZGF0aW9uX2JpdHMgfD0g Q1BFUl9NRU1fVkFMSURfQ0FSRCB8IENQRVJfTUVNX1ZBTElEX01PRFVMRSB8DQo+Pj4gKyAgICAg ICAgICAgIENQRVJfTUVNX1ZBTElEX0JBTksgfCBDUEVSX01FTV9WQUxJRF9ST1cgfA0KPj4+ICsg ICAgICAgICAgICBDUEVSX01FTV9WQUxJRF9DT0xVTU4gfCBDUEVSX01FTV9WQUxJRF9CSVRfUE9T SVRJT047DQo+Pj4gKyAgICBtZW1fZXJyLT5jYXJkID0gMTsNCj4+PiArICAgIG1lbV9lcnItPm1v ZHVsZSA9IDI7DQo+Pj4gKyAgICBtZW1fZXJyLT5iYW5rID0gMzsNCj4+PiArICAgIG1lbV9lcnIt PnJvdyA9IDE7DQo+Pj4gKyAgICBtZW1fZXJyLT5jb2x1bW4gPSAyOw0KPj4+ICsgICAgbWVtX2Vy ci0+Yml0X3BvcyA9IDU7DQo+IA0KPiAoNjApIEkgaGF2ZSBubyBpZGVhIHdoZXJlIHRoZXNlIHZh bHVlcyBjb21lIGZyb20uDQpGb3IgYWxsIHRoZSBlcnJvcnMgdGhhdCBoYXBwZW4gaW4gdGhlIGd1 ZXN0IE9TLA0KICBpbiBvcmRlciB0byBzaW11bGF0ZSBlYXN5LCBJIGFic3RyYWN0IGFsbCB0aGUg ZXJyb3Igc2VjdGlvbiB0byBtZW1vcnkgc2VjdGlvbiwgYW5kIGhhcmQgY29kZSB0aGUgbWVtb3J5 IHNlY3Rpb24gZXJyb3IgdmFsdWUgYXMgYWJvdmUuDQogIA0KDQo+IA0KPj4+ICsNCj4+PiArICAg IG1lbV9lcnItPnZhbGlkYXRpb25fYml0cyB8PSBDUEVSX01FTV9WQUxJRF9FUlJPUl9TVEFUVVM7 DQo+Pj4gKyAgICBtZW1fZXJyLT5lcnJvcl9zdGF0dXMgPSA0IDw8IDg7DQo+Pj4gKw0KPj4+ICsg ICAgLyogV3JpdGUgYmFjayB0aGUgR2VuZXJpYyBFcnJvciBEYXRhIEVudHJ5IHRvIGd1ZXN0IG1l bW9yeSAqLw0KPj4+ICsgICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZShibG9ja19lcnJvcl9h ZGRyZXNzICsgYmxvY2tfZGF0YV9sZW5ndGgsIGJ1ZmZlciwNCj4+PiArICAgICAgICAgICAgICAg ICAgICBzaXplb2YoQWNwaUdlbmVyaWNFcnJvckRhdGEpICsgDQo+Pj4gKyBzaXplb2YoY3Blcl9z ZWNfbWVtX2VycikpOw0KPiANCj4gKDYxKSBQbGVhc2UgY2hvb3NlIGEgYmV0dGVyIG5hbWUgZm9y ICJibG9ja19kYXRhX2xlbmd0aCIgLS0gaXQgc3RhbmRzIA0KPiBmb3IgdGhlIGxlbmd0aCAqYmVm b3JlKiB0aGUgaW5jcmVtZW50Lg0KIE9LLCB0aGFua3MgZm9yIHRoZSBzdWdnZXN0aW9uLg0KPiAN Cj4gKDYyKSBJcyBpdCBzYWZlIHRvIHdyaXRlIG91dCB0aGUgaW5jcmVhc2VkIGJsb2NrIGxlbmd0 aCBiZWZvcmUgd3JpdGluZyANCj4gdGhlIG5ldyBDUEVSIGRhdGE/DQogSXQgaW5kZWVkIG5lZWRz IHRvIGFkZCBhIGp1ZGdtZW50IHRvIGF2b2lkIHRoZSBkYXRhIG92ZXJmbG93LCBpZiBvdmVyZmxv dywgcmVwb3J0IGFuIGVycm9yLg0KQXMgd2UgdGFsayBiZWZvcmUsIHRoZSB0b3RhbCBzaXplIGZv ciBhIGJsb2NrIGlzIGZpeGVkLiBTbyBjYW5ub3QgZHluYW1pYyBleHRlbmQgdGhlIHRvdGFsIHNp emUuIFNvIGlmIGlzIG92ZXJmbG93ZWQsIHdpbGwgbGV0IHRoZSBDUEVSIGFkZGluZyBpcyBmYWls ZWQuDQoNCg0KPiANCj4+PiArDQo+Pj4gKyAgICBnX2ZyZWUoYnVmZmVyKTsNCj4+PiArICAgIHJl dHVybiBCRkFQRUlfT0s7DQo+Pj4gK30NCj4gDQo+ICg2MykgVGhpcyByZXR1cm4gY29kZSBpcyBu b3QgdXNlZC4gQ2FuIHdlIHJlbW92ZSBpdCBwZXJoYXBzICh0b2dldGhlciANCj4gd2l0aCB0aGUg QkZBUEVJXyogbWFjcm9zKT8NCiBPSy4gVGhhbmtzIExhc3psby4gV2lsbCByZW1vdmUgaXQuDQoN Cj4gDQo+Pj4gKw0KPj4+ICt2b2lkIGdoZXNfYnVpbGRfYWNwaShHQXJyYXkgKnRhYmxlX2RhdGEs IEdBcnJheSAqaGFyZHdhcmVfZXJyb3IsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQklPU0xpbmtlciAqbGlua2VyKSB7DQo+Pj4gKyAgICBBbWwgKmhl c3Q7DQo+Pj4gKyAgICB1aW50MzJfdCBhZGRyZXNzX3JlZ2lzdGVyc19vZmZzZXQ7DQo+Pj4gKyAg ICBBY3BpVGFibGVIZWFkZXIgKmhlYWRlcjsNCj4+PiArICAgIEFjcGlHZW5lcmljSGFyZHdhcmVF cnJvclNvdXJjZSAqZXJyb3Jfc291cmNlOw0KPj4+ICsgICAgaW50IGk7DQo+Pj4gKw0KPj4+ICsg ICAgaW50IGJsb2NrX3JlcXJfc2l6ZSA9IHNpemVvZih1aW50NjRfdCkgKyBNQVhfUkFXX0RBVEFf TEVOR1RIOw0KPiANCj4gKDY0KSBXaGF0IGRvZXMgInJlcXIiIHN0YW5kIGZvcj8NCiAgSXQgc3Rh bmQgZm9yIHRoZSByZXF1ZXN0IHNpemUuDQoNCj4gDQo+Pj4gKw0KPj4+ICsgICAgLyogTmV3IGFk ZHJlc3MgcmVnaXN0ZXIgYW5kIEVycm9yIHN0YXR1cyBibG9jayB0YWJsZSBzaXplKi8NCj4+PiAr ICAgIGdfYXJyYXlfc2V0X3NpemUoaGFyZHdhcmVfZXJyb3IsIE1BWF9FUlJPUl9TT1VSQ0VfQ09V TlRfVjYNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYmxv Y2tfcmVxcl9zaXplKTsNCj4gDQo+ICg2NSkgVGhlIFFFTVUgY29kaW5nIHN0eWxlIGlzDQo+IA0K PiAgICAgZ19hcnJheV9zZXRfc2l6ZShoYXJkd2FyZV9lcnJvciwgTUFYX0VSUk9SX1NPVVJDRV9D T1VOVF9WNiAqDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja19y ZXFyX3NpemUpOw0KPiANCj4gVGhhdCBpcywgdGhlIG9wZXJhdG9yIGlzIGF0IHRoZSBlbmQgb2Yg dGhlIGxpbmUuDQo+IA0KPiBTZXZlcmFsIGZ1bmN0aW9uIGNhbGxzIGJlbG93IGFyZSBhZmZlY3Rl ZCBieSB0aGlzOyBwbGVhc2UgZml4IHRoZW0gYWxsIA0KPiB1cC4NCj4gDQo+IFJ1bm5pbmcgInNj cmlwdHMvY2hlY2twYXRjaC5wbCIgb24gdGhlIHBhdGNoZXMgYmVmb3JlIHlvdSBwb3N0IHRoZW0g DQo+IHNob3VsZCBoZWxwIGNhdGNoIHRoaXMga2luZCBvZiBwcm9ibGVtIGVhcmx5Lg0KSSBoYXZl IHJhbiB0aGUgInNjcmlwdHMvY2hlY2twYXRjaC5wbCIgYmVmb3JlIHBvc3QgdGhlc2UgcGF0Y2hl cywgaXQgZG9lcyBub3QgcmVtaW5kIHN1Y2ggZXJyb3JzLiBhbnl3YXkgSSB3aWxsIG1vZGlmaWVk IGl0Lg0KPiANCj4+PiArDQo+Pj4gKyAgICAvKiBQdXQgdGhpcyBpbiBhIEhFU1QgdGFibGUgKi8N Cj4+PiArICAgIGhlc3QgPSBpbml0X2FtbF9hbGxvY2F0b3IoKTsNCj4+PiArICAgIGFkZHJlc3Nf cmVnaXN0ZXJzX29mZnNldCA9IHRhYmxlX2RhdGEtPmxlbg0KPj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsgc2l6ZW9mKEFjcGlIYXJkd2FyZUVycm9yU291cmNlVGFibGUpDQo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBFUlJPUl9TVEFUVVNfQUREUkVT U19PRkZTRVQNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIEdBU19BRERS RVNTX09GRlNFVDsNCj4gDQo+ICg2NikgUGxlYXNlIGRyb3AgdGhlIEVSUk9SX1NUQVRVU19BRERS RVNTX09GRlNFVCBhbmQgDQo+IEdBU19BRERSRVNTX09GRlNFVCBtYWNyb3MgKGZyb20gdGhlIGhl YWRlciBmaWxlIGFzIHdlbGwpLCBhbmQgdXNlIHRoZSANCj4gZm9sbG93aW5nIGV4cHJlc3Npb25z DQo+IGluc3RlYWQ6DQo+IA0KPiAgIC4uLg0KPiAgIG9mZnNldG9mKEFjcGlHZW5lcmljSGFyZHdh cmVFcnJvclNvdXJjZSwgZXJyb3Jfc3RhdHVzX2FkZHJlc3MpICsNCj4gICBvZmZzZXRvZihBY3Bp R2VuZXJpY0FkZHJlc3MsIGFkZHJlc3MpOw0KR29vZCBzdWdnZXN0aW9uIGFuZCBwb2ludC4NCg0K PiANCj4+PiArICAgIC8qIFJlc2VydmUgc3BhY2UgZm9yIEhFU1QgdGFibGUgc2l6ZSovDQo+Pj4g KyAgICBhY3BpX2RhdGFfcHVzaChoZXN0LT5idWYsIHNpemVvZihBY3BpSGFyZHdhcmVFcnJvclNv dXJjZVRhYmxlKQ0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgTUFYX0VS Uk9SX1NPVVJDRV9DT1VOVF9WNg0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICogDQo+Pj4gKyBzaXplb2YoQWNwaUdlbmVyaWNIYXJkd2FyZUVycm9yU291cmNlKSk7DQo+Pj4g Kw0KPj4+ICsgICAgZ19hcnJheV9hcHBlbmRfdmFscyh0YWJsZV9kYXRhLCBoZXN0LT5idWYtPmRh dGEsIA0KPj4+ICsgaGVzdC0+YnVmLT5sZW4pOw0KPiANCj4gKDY3KSBIRVNUIGlzIGEgZGF0YSB0 YWJsZSwgaXQgY29udGFpbnMgbm8gQU1MLiBBY2NvcmRpbmdseSwgeW91IHVzZSANCj4gImhlc3Qi ICpvbmx5KiBmb3IgcHVzaGluZyB6ZXJvIGJ5dGVzIHRvICJ0YWJsZV9kYXRhIi4NCj4gDQo+IEJ1 dCB0aGF0J3Mgbm90IGEgZ29vZCBlbm91Z2ggcmVhc29uIHRvIGhhdmUgImhlc3QiIGF0IGFsbCwg b3IgdG8gY2FsbA0KPiBpbml0X2FtbF9hbGxvY2F0b3IoKSAvIGZyZWVfYW1sX2FsbG9jYXRvcigp LiBJbnN0ZWFkLCBwbGVhc2UganVzdCANCj4gY2FsY3VsYXRlIHRoZSBuZWVkZWQgc2l6ZSwgYW5k IHB1c2ggdGhhdCBtYW55IGJ5dGVzIGRpcmVjdGx5IHRvIA0KPiAidGFibGVfZGF0YSIuDQpUaGUg aGVzdCB0YWJsZSBpbmRlZWQgZG9lcyBub3QgaW5jbHVkZSBBTUwsIHNvIHdpbGwgZG8gaXQgYWNj b3JkaW5nIHRvIHlvdXIgc3VnZ2VzdGlvbi4gDQoNCj4gDQo+IFlvdXIgY3VycmVudCBjb2RlIGFs cmVhZHkgcG9wdWxhdGVzIHRob3NlIGJ5dGVzIHdpdGhpbiAidGFibGVfZGF0YSIsIA0KPiBzbyB0 aGF0J3MgZ29vZC4NCj4gDQo+Pj4gKyAgICAvKiBBbGxvY2F0ZSBndWVzdCBtZW1vcnkgZm9yIHRo ZSBEYXRhIGZ3X2NmZyBibG9iICovDQo+Pj4gKyAgICBiaW9zX2xpbmtlcl9sb2FkZXJfYWxsb2Mo bGlua2VyLCBHSEVTX0VSUk9SU19GV19DRkdfRklMRSwNCj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGhhcmR3YXJlX2Vycm9yLCA0MDk2LA0KPj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmFsc2UgLyogcGFnZSBib3VuZGFyeSwgaGlnaCBtZW1vcnkgDQo+Pj4gKyAqLyk7 DQo+IA0KPiAoNjgpIEluIHRoZSBjb2RlIGJlbG93LCB5b3UgYXJlIG5vdCB0YWtpbmcgYW4gIk9W TUYgaGVhZGVyIHByb2JlIA0KPiBzdXBwcmVzc29yIiBpbnRvIGFjY291bnQuDQo+IA0KPiBCdXQs IHdlIGhhdmUgYWxyZWFkeSBwbGFubmVkIHRvIHJlcGxhY2UgdGhhdCBxdWlyayB3aXRoIGEgc2Vw YXJhdGUsIA0KPiBkZWRpY2F0ZWQgYWxsb2NhdGlvbiBoaW50IG9yIGNvbW1hbmQsIHNvIEknbSBu b3QgZ29pbmcgdG8gZGVzY3JpYmUgDQo+IHdoYXQgYW4gIk9WTUYgaGVhZGVyIHByb2JlIHN1cHBy ZXNzb3IiIGlzOyBpbnN0ZWFkLCBJJ2xsIGRlc2NyaWJlIHRoZSANCj4gcmVwbGFjZW1lbnQgZm9y IGl0Lg0KPiANCj4gU28gcGxlYXNlIGFkZCBhIG5ldyBwYXRjaCB0byB0aGUgc2VyaWVzIHRoYXQg ZG9lcyB0aGUgZm9sbG93aW5nOg0KT0suDQoNCj4gDQo+IC0gSW4gImh3L2FjcGkvYmlvcy1saW5r ZXItbG9hZGVyLmMiLCBtb2RpZnkgdGhlIGRvY3VtZW50YXRpb24gb2YNCj4gICAiQmlvc0xpbmtl ckxvYWRlckVudHJ5LmFsbG9jLnpvbmUiLiBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQgKGkuZS4s DQo+ICAgYml0IDcpLCB3aGVuIHNldCwgc2hvdWxkIG1lYW4gdGhhdCBAYWxsb2MuZmlsZSBjb250 YWlucyBubyBBQ1BJDQo+ICAgdGFibGVzLiBXaGVuIHRoZSBiaXQgaXMgY2xlYXIsIG5vIGluZm9y bWF0aW9uIGlzIGdpdmVuIGFib3V0IHRoZQ0KPiAgIGNvbnRlbnRzIG9mIEBhbGxvYy5maWxlIChp LmUuLCBzYW1lIGFzIG5vdykuDQo+IA0KPiAtIFRoaXMgd2lsbCByZXF1aXJlIGEgc21hbGwgcGF0 Y2ggZm9yIFNlYUJJT1M6IG1hc2sgb2ZmIGJpdCA3IG9mDQo+ICAgImVudHJ5LT5hbGxvYy56b25l IiBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudCBpbg0KPiAgIHJvbWZpbGVfbG9hZGVyX2FsbG9jYXRl KCksICJzcmMvZncvcm9tZmlsZV9sb2FkZXIuYyIuIFNlYUJJT1MgZG9lcyBub3QNCj4gICBoYXZl IHRvIGNhcmUgYWJvdXQgdGhpcyBiaXQuDQogWW91ciBkZXNjcmlwdGlvbiBpcyBkZXRhaWxlZCwg dGhhbmtzIGFnYWluLCBJIHdpbGwgZG8gdGhhdC4NCg0KPiANCj4gLSBPVk1GIHdpbGwgbmVlZCBz b21lIGNvZGUgdG8gaGFuZGxlIHRoaXMgYml0IHNwZWNpYWxseSwgYnV0IEkgd2lsbA0KPiAgIHdy aXRlIHRoYXQuDQpPaywgaXQgaXMgZ29vZC4NCg0KPiANCj4gLSBJbiBRRU1VLCBwbGVhc2UgbW9k aWZ5IHRoZSBiaW9zX2xpbmtlcl9sb2FkZXJfYWxsb2MoKSBmdW5jdGlvbiBzbyB0aGF0DQo+ICAg aXQgdGFrZXMgYSAibm9hY3BpIiBib29sZWFuIGFzIHdlbGwsIGFuZCBzZXQgdGhlIGhpZ2ggYml0 IG9mDQo+ICAgImVudHJ5LmFsbG9jLnpvbmUiIGZyb20gaXQuIFRoZSBkZWZhdWx0IHZhbHVlIGZv ciAibm9hY3BpIiBzaG91bGQgYmUNCj4gICBmYWxzZSwgYXQgYWxsIGN1cnJlbnRseSBleGlzdGlu ZyBjYWxsIHNpdGVzLg0KPiANCj4gLSBBbmQgZmluYWxseSwgaW4gdGhpcyBwYXRjaCwgd2Ugc2hv dWxkIHBhc3MgInRydWUiIGFzICJub2FjcGkiLg0KSSBiYXNpY2FsbHkgdW5kZXJzdGFuZCB5b3Vy IGlkZWEuDQoNCj4gDQo+Pj4gKyAgICBoZWFkZXIgPSAoQWNwaVRhYmxlSGVhZGVyICopKHRhYmxl X2RhdGEtPmRhdGENCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgKyB0YWJsZV9kYXRhLT5s ZW4gLSBoZXN0LT5idWYtPmxlbik7DQo+Pj4gKyAgICAqKHVpbnQzMl90ICopKGhlYWRlciArIDEp ID0gTUFYX0VSUk9SX1NPVVJDRV9DT1VOVF9WNjsNCj4gDQo+ICg2OSkgVWdoLCB0aGlzIGlzIHVn bHkuIFBsZWFzZSBhY2Nlc3MgdGhlIGVycm9yIHNvdXJjZSBjb3VudCBmaWVsZCANCj4gdGhyb3Vn aCAiQWNwaUhhcmR3YXJlRXJyb3JTb3VyY2VUYWJsZS5lcnJvcl9zb3VyY2VfY291bnQiLg0KT0su DQoNCg0KPiANCj4+PiArICAgIGVycm9yX3NvdXJjZSA9IChBY3BpR2VuZXJpY0hhcmR3YXJlRXJy b3JTb3VyY2UgKikoKGNoYXIgKiloZWFkZXINCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKyANCj4+PiArIHNpemVvZihBY3BpSGFyZHdhcmVFcnJvclNvdXJjZVRhYmxl KSk7DQo+Pj4gKw0KPj4+ICsgICAgZm9yIChpID0gMDsgaSA8IE1BWF9FUlJPUl9TT1VSQ0VfQ09V TlRfVjY7IGkrKykgew0KPj4+ICsgICAgICAgIGVycm9yX3NvdXJjZS0+dHlwZSA9IEFDUElfSEVT VF9UWVBFX0dFTkVSSUNfRVJST1I7DQo+Pj4gKyAgICAgICAgZXJyb3Jfc291cmNlLT5zb3VyY2Vf aWQgPSAwOw0KPiANCj4gKDcwKSBJIHRoaW5rIHRoaXMgaXMgd3JvbmcsIHRoaXMgaWRlbnRpZmll ciBzaG91bGQgYmUgdW5pcXVlIGFtb25nIGFsbCANCj4gZXJyb3Igc291cmNlcy4gWW91IHNob3Vs ZCBhc3NpZ24gY3B1X3RvX2xlMTYoaSkuDQpUaGFua3MgZm9yIHRoZSBwb2ludCwgeW91IGFyZSBy aWdodCwgdGhpcyBpcyB3cm9uZywgdGhlIHNvdXJjZSBpZCBpcyBVbmlxdWVseSBpZGVudGlmeQ0K DQo+IA0KPj4+ICsgICAgICAgIGVycm9yX3NvdXJjZS0+cmVsYXRlZF9zb3VyY2VfaWQgPSAweGZm ZmY7DQo+Pj4gKyAgICAgICAgZXJyb3Jfc291cmNlLT5mbGFncyA9IDA7DQo+Pj4gKyAgICAgICAg ZXJyb3Jfc291cmNlLT5lbmFibGVkID0gMTsNCj4+PiArICAgICAgICBlcnJvcl9zb3VyY2UtPm51 bWJlcl9vZl9yZWNvcmRzID0gMTsNCj4gDQo+ICg3MSkgV2h5IGRvIHdlIHByZS1hbGxvYyBvbmx5 IG9uZSByZWNvcmQ/IERvbid0IHNldmVyYWwgQ1BFUiBvYmplY3RzIA0KPiBmaXQgaW4gYW4gZXJy b3Igc3RhdHVzIGRhdGEgYmxvY2sgKG9mIHNpemUgTUFYX1JBV19EQVRBX0xFTkdUSCwgMHgxMDAw KT8NCg0KRnJvbSBteSB1bmRlcnN0YW5kaW5nLCBudW1iZXJfb2ZfcmVjb3JkcyBzdGFuZHMgZm9y IHRoZSBudW1iZXIgb2YgZXJyb3IgZGF0YSBzdGF0dXMgZGF0YSBibG9jay4NCkhlcmUgc2V0dGlu ZyB0aGUgbnVtYmVyX29mX3JlY29yZHMgdG8gMSBtZWFucyB0aGF0IG9uZSBlcnJvciBzb3VyY2Ug aW5jbHVkZXMgb25lIGVycm9yIHNvdXJjZSBzdGF0dXMgZGF0YSBibG9jay4NCkJ1dCBPbmUgZXJy b3Igc291cmNlIHN0YXR1cyBkYXRhIGJsb2NrIGNhbiBpbmNsdWRlcyBtYW55IENQRVIgb2JqZWN0 cy4gU28gYWx0aG91Z2ggcHJlLWFsbG9jIG9ubHkgb25lIHJlY29yZCwgYnV0IGl0IGNhbiBzdGls bA0KSW5jbHVkZXMgc2V2ZXJhbCBDUEVSIG9iamVjdHMuDQoNCg0KPiANCj4+PiArICAgICAgICBl cnJvcl9zb3VyY2UtPm1heF9zZWN0aW9uc19wZXJfcmVjb3JkID0gMTsNCj4+PiArICAgICAgICBl cnJvcl9zb3VyY2UtPm1heF9yYXdfZGF0YV9sZW5ndGggPSBNQVhfUkFXX0RBVEFfTEVOR1RIOw0K Pj4+ICsgICAgICAgIGVycm9yX3NvdXJjZS0+ZXJyb3Jfc3RhdHVzX2FkZHJlc3Muc3BhY2VfaWQg PQ0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ1BJX0FEUl9TUEFD RV9TWVNURU1fTUVNT1JZOw0KPj4+ICsgICAgICAgIGVycm9yX3NvdXJjZS0+ZXJyb3Jfc3RhdHVz X2FkZHJlc3MuYml0X3dpZHRoID0gNjQ7DQo+Pj4gKyAgICAgICAgZXJyb3Jfc291cmNlLT5lcnJv cl9zdGF0dXNfYWRkcmVzcy5iaXRfb2Zmc2V0ID0gMDsNCj4+PiArICAgICAgICBlcnJvcl9zb3Vy Y2UtPmVycm9yX3N0YXR1c19hZGRyZXNzLmFjY2Vzc193aWR0aCA9IDQ7DQo+Pj4gKyAgICAgICAg ZXJyb3Jfc291cmNlLT5ub3RpZnkudHlwZSA9IGk7DQo+IA0KPiBPSywgdGhpcyBpcyBvbmUgYnl0 ZSB3aWRlIG9ubHkuDQo+IA0KPj4+ICsgICAgICAgIGVycm9yX3NvdXJjZS0+bm90aWZ5Lmxlbmd0 aCA9IA0KPj4+ICsgc2l6ZW9mKEFjcGlHZW5lcmljSGFyZHdhcmVFcnJvclNvdXJjZSk7DQo+IA0K PiAoNzIpIFRoaXMgc2VlbXMgdG8gYmUgd3JvbmcuIFRoZSByaWdodCBoYW5kIHNpZGUgc2hvdWxk IGJlIA0KPiBzaXplb2YoQWNwaUhlc3ROb3RpZnkpLg0KVGhhbmtzIExhc3psbydzIGNhcmVmdWxs eSByZXZpZXcsIHRoaXMgaXMgd3JvbmcsIGl0IHNob3VsZCBiZSBzaXplb2YoQWNwaUhlc3ROb3Rp ZnkpLg0KDQoNCj4gDQo+Pj4gKw0KPj4+ICsgICAgICAgIGJpb3NfbGlua2VyX2xvYWRlcl9hZGRf cG9pbnRlcihsaW5rZXIsIEdIRVNfRVJST1JTX0ZXX0NGR19GSUxFLA0KPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih1aW50NjRfdCkgKiBpLCBzaXplb2YodWludDY0 X3QpLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdIRVNfRVJST1JTX0ZX X0NGR19GSUxFLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9FUlJP Ul9TT1VSQ0VfQ09VTlRfVjYgKiBzaXplb2YodWludDY0X3QpICsNCj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpICogTUFYX1JBV19EQVRBX0xFTkdUSCk7DQo+IA0KPiAoNzMp IExvb2tzIGdvb2QsIGJ1dCBwbGVhc2UgaW5kZW50IHRoZSBhcmd1bWVudHMgMSBwb3NpdGlvbiBy ZWxhdGl2ZSANCj4gdG8gdGhlIG9wZW5pbmcgcGFyZW4uDQpPaywgdGhhbmtzIGZvciB0aGUgY29t bWVudC4NCg0KPiANCj4+PiArICAgICAgICBiaW9zX2xpbmtlcl9sb2FkZXJfYWRkX3BvaW50ZXIo bGlua2VyLCBBQ1BJX0JVSUxEX1RBQkxFX0ZJTEUsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAg YWRkcmVzc19yZWdpc3RlcnNfb2Zmc2V0DQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgKyBpICog c2l6ZW9mKEFjcGlHZW5lcmljSGFyZHdhcmVFcnJvclNvdXJjZSksDQo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSwgR0hFU19FUlJPUlNfRldfQ0ZHX0ZJTEUsDQo+Pj4g KyAgICAgICAgICAgICAgICAgICAgaSAqIHNpemVvZih1aW50NjRfdCkpOw0KPiANCj4gKDc0KSBQ YXNzaW5nICJzaXplb2YodWludDMyX3QpIiBhcyAiZHN0X3BhdGNoZWRfc2l6ZSIgaXMgd3Jvbmcu IFRoZSANCj4gYWRkcmVzcyByZWdpc3RlcnMgYXQgdGhlIHN0YXJ0IG9mIHRoZSAiZXRjL2hhcmR3 YXJlX2Vycm9ycyIgYmxvYiBhcmUgDQo+IDY0LWJpdCB3aWRlIGVhY2guDQp0aGFua3MgYSBsb3Qg Zm9yIHRoZSBwb2ludCwgeW91IGFyZSByaWdodC4gSSBhbSB3cm9uZy4NCg0KDQo+IA0KPj4+ICsN Cj4+PiArICAgICAgICBiaW9zX2xpbmtlcl9sb2FkZXJfd3JpdGVfcG9pbnRlcihsaW5rZXIsIEdI RVNfREFUQV9BRERSX0ZXX0NGR19GSUxFLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGkgKiBzaXplb2YodWludDY0X3QpLCBzaXplb2YodWludDY0X3QpLA0KPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdIRVNfRVJST1JTX0ZXX0NGR19GSUxFLA0KPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9FUlJPUl9TT1VSQ0VfQ09VTlRf VjYgKiBzaXplb2YodWludDY0X3QpICsNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpICogTUFYX1JBV19EQVRBX0xFTkdUSCk7DQo+IA0KPiAoNzUpIFdlIHNob3VsZCBjcmVh dGUgb25seSBvbmUgV1JJVEVfUE9JTlRFUiBjb21tYW5kLCBmb3IgdGhlIGJhc2UgDQo+IGFkZHJl c3Mgb2YgImV0Yy9oYXJkd2FyZV9lcnJvcnMiLiBUaGlzIHNob3VsZCBiZSBkb25lIG91dHNpZGUg b2YgdGhlIA0KPiBsb29wLg0KPiANCj4gVGhlIGJhc2UgYWRkcmVzc2VzIG9mIHRoZSBpbmRpdmlk dWFsIGVycm9yIHN0YXR1cyBkYXRhIGJsb2NrcyBzaG91bGQgDQo+IGJlIGNhbGN1bGF0ZWQgaW4g Z2hlc191cGRhdGVfZ3Vlc3QoKSwgYmFzZWQgb24gdGhlIGVycm9yIHNvdXJjZSAvIA0KPiBub3Rp ZmljYXRpb24gdHlwZS4NClRoYW5rcyBhIGxvdCBmb3IgdGhlIHJldmlldywgeW91IGFyZSByaWdo dCwgSSB3aWxsIG1vZGlmeSBpdC4NCg0KPiANCj4+PiArICAgICAgICAgZXJyb3Jfc291cmNlKys7 DQo+Pj4gKyAgICB9DQo+Pj4gKw0KPj4+ICsgICAgIGJ1aWxkX2hlYWRlcihsaW5rZXIsIHRhYmxl X2RhdGEsDQo+Pj4gKyAgICAgICAgKHZvaWQgKiloZWFkZXIsICJIRVNUIiwgaGVzdC0+YnVmLT5s ZW4sIDEsIE5VTEwsICJHSEVTIik7DQo+IA0KPiAoNzYpIEFueSBwYXJ0aWN1bGFyIHJlYXNvbiBm b3Igbm90IHBhc3NpbmcgTlVMTCBpbiAib2VtX3RhYmxlX2lkIj8NCj4gDQoNCg0KPj4+ICsNCj4+ PiArICAgIGZyZWVfYW1sX2FsbG9jYXRvcigpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMg R2hlc0Vycm9yU3RhdGUgZ2VzOw0KPj4+ICt2b2lkIGdoZXNfYWRkX2Z3X2NmZyhGV0NmZ1N0YXRl ICpzLCBHQXJyYXkgKmhhcmR3YXJlX2Vycm9yKSB7DQo+Pj4gKw0KPj4+ICsgICAgaW50IGJsb2Nr X3JlcXJfc2l6ZSA9IHNpemVvZih1aW50NjRfdCkgKyBNQVhfUkFXX0RBVEFfTEVOR1RIOw0KPj4+ ICsgICAgaW50IHNpemUgPSBNQVhfRVJST1JfU09VUkNFX0NPVU5UX1Y2ICogYmxvY2tfcmVxcl9z aXplOw0KPiANCj4gKDc3KSBUaGVzZSB2YXJpYWJsZSBzaG91bGQgaGF2ZSB0eXBlICJzaXplX3Qi Lg0KPiANCj4gKDc4KSBXaGF0IGRvZXMgInJlcXIiIHN0YW5kIGZvcj8NClJlcXIgaXMgcmVxdWVz dCBzaXplIGZvciBibG9jay4NCg0KDQo+IA0KPiAoNzkpIEkganVzdCBub3RpY2VkIHRoYXQgdGhl IGNvbW1pdCBtZXNzYWdlIGxpc3RzIGVycm9yIHNvdXJjZXMgLyANCj4gbm90aWZpY2F0aW9uIHR5 cGVzIDEgdGhyb3VnaCAxMCAoY291bnQ9MTAgaW4gdG90YWwpLiBIb3dldmVyLCB3ZSBoYXZlIA0K PiAxMSBlcnJvciBzb3VyY2VzIGFjdHVhbGx5LiBDYW4geW91IHVwZGF0ZSB0aGUgY29tbWl0IG1l c3NhZ2Ugc28gdGhhdCANCj4gaXQgbWVudGlvbnMgc291cmNlcyAwIHRocm91Z2ggMTA/DQpPSywg dGhhbmtzIHZlcnkgbXVjaCBmb3IgeW91ciBzdWdnZXN0aW9uLg0KPiANCj4+PiArDQo+Pj4gKyAg ICAvKiBDcmVhdGUgYSByZWFkLW9ubHkgZndfY2ZnIGZpbGUgZm9yIEdIRVMgKi8NCj4+PiArICAg IGZ3X2NmZ19hZGRfZmlsZShzLCBHSEVTX0VSUk9SU19GV19DRkdfRklMRSwgaGFyZHdhcmVfZXJy b3ItPmRhdGEsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgc2l6ZSk7DQo+Pj4gKyAgICAvKiBD cmVhdGUgYSByZWFkLXdyaXRlIGZ3X2NmZyBmaWxlIGZvciBBZGRyZXNzICovDQo+Pj4gKyAgICBm d19jZmdfYWRkX2ZpbGVfY2FsbGJhY2socywgR0hFU19EQVRBX0FERFJfRldfQ0ZHX0ZJTEUsIE5V TEwsIE5VTEwsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKGdlcy5naGVzX2Fk ZHJfbGVbMF0pLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVpbnQ2 NF90KSAqIE1BWF9FUlJPUl9TT1VSQ0VfQ09VTlRfVjYsDQo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmYWxzZSk7IH0NCj4+PiArDQo+IA0KPiAoODApIFRoZSBzaXplIGNhbGN1bGF0 aW9uIGZvciBHSEVTX0RBVEFfQUREUl9GV19DRkdfRklMRSBpcyBpbmNvcnJlY3QuDQo+IEZpcnN0 LCBpdCBkb2VzIG5vdCBtYXRjaCB0aGUgZWxlbWVudCBjb3VudCA4IHRoYXQgSSBoaWdobGlnaHRl ZCB1bmRlciANCj4gcmVtYXJrICg0NykuIFNlY29uZCAoYWdhaW4pLCBwYXNzaW5nIGJhY2sganVz dCB0aGUgYmFzZSBhZGRyZXNzIGlzIA0KPiBzdWZmaWNpZW50LCBzbyA4IHVpbnQ4X3QgZWxlbWVu dHMgKGZvciByZXByZXNlbnRpbmcgYSBzaW5nbGUgdWludDY0X3QgDQo+IGluDQo+IExFKSBhcmUg ZW5vdWdoLg0KPiANCj4gSW4gb3RoZXIgd29yZHMsIHRoZSBzaXplIGNhbGN1bGF0aW9uIHNob3Vs ZCBiZQ0KPiBBUlJBWV9TSVpFKGdlcy5naGVzX2FkZHJfbGUpIGhlcmUuDQpJIHdpbGwgY29uc2lk ZXIgeW91ciBzdWdnZXN0aW9uLCB0aGFua3MgdmVyeSBtdWNoLg0KDQoNCj4gDQo+Pj4gK3ZvaWQg Z2hlc191cGRhdGVfZ3Vlc3QodWludDMyX3Qgbm90aWZ5LCB1aW50NjRfdCBwaHlzaWNhbF9hZGRy ZXNzKSANCj4+PiArew0KPj4+ICsgICAgdWludDY0X3QgYmxvY2tfZXJyb3JfYWRkcjsNCj4+PiAr DQo+Pj4gKyAgICBpZiAocGh5c2ljYWxfYWRkcmVzcykgew0KPj4+ICsgICAgICAgIGdlcy5waHlz aWNhbF9hZGRyID0gcGh5c2ljYWxfYWRkcmVzczsNCj4+PiArICAgICAgICBibG9ja19lcnJvcl9h ZGRyID0gZ2VzLmdoZXNfYWRkcl9sZVtub3RpZnldOw0KPj4+ICsgICAgICAgIGJsb2NrX2Vycm9y X2FkZHIgPSBsZTMyX3RvX2NwdShibG9ja19lcnJvcl9hZGRyKTsNCj4+PiArDQo+Pj4gKyAgICAg ICAgLyogQSB6ZXJvIHZhbHVlIGluIGdoZXNfYWRkciBtZWFucyB0aGF0IEJJT1MgaGFzIG5vdCB5 ZXQgd3JpdHRlbg0KPj4+ICsgICAgICAgICAqIHRoZSBhZGRyZXNzDQo+Pj4gKyAgICAgICAgICov DQo+Pj4gKyAgICAgICAgaWYgKGJsb2NrX2Vycm9yX2FkZHIpIHsNCj4+PiArICAgICAgICAgICAg Z2hlc19nZW5lcmF0ZV9jcGVyX3JlY29yZChibG9ja19lcnJvcl9hZGRyLCBwaHlzaWNhbF9hZGRy ZXNzKTsNCj4+PiArICAgICAgICB9DQo+Pj4gKyAgICB9DQo+Pj4gK30NCj4gDQo+ICg4MSkgRmly c3QsIHRoZSB2YWx1ZSBvZiAibm90aWZ5IiBzaG91bGQgYmUgcmFuZ2UtY2hlY2tlZCBiZWZvcmUg dXNpbmcgDQo+IGl0IGFzIGFuIGFycmF5IHN1YnNjcmlwdC4gSWYgaXQgaXMgb3V0c2lkZSBvZiB0 aGUgcGVybWlzc2libGUgcmFuZ2UsIA0KPiBub3RoaW5nIHNob3VsZCBiZSBkb25lLiBTZWNvbmQs IGluIG9yZGVyIHRvIGxvY2F0ZSB0aGUgYWZmZWN0ZWQgZXJyb3IgDQo+IHN0YXR1cyBkYXRhIGJs b2NrLCB3ZSBzaG91bGQgbW92ZSB0aGUgb2Zmc2V0IGNhbGN1bGF0aW9uIGhlcmUsIGZyb20gDQo+ IGdoZXNfYnVpbGRfYWNwaSgpLg0KPiANClRoYW5rcyBMYXN6bG8sIEkgd2lsbCBjb25zaWRlciB5 b3VyIHN1Z2dlc3Rpb24uDQoNCg0KPiBUaGFua3MNCj4gTGFzemxvDQo+IA0KPiAuDQo+IA0KDQo=