From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50437) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bLQDP-0008OR-Dg for qemu-devel@nongnu.org; Fri, 08 Jul 2016 03:28:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bLQDK-0002JZ-7J for qemu-devel@nongnu.org; Fri, 08 Jul 2016 03:28:46 -0400 Received: from szxga01-in.huawei.com ([58.251.152.64]:62616) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bLQDH-0002H2-UV for qemu-devel@nongnu.org; Fri, 08 Jul 2016 03:28:42 -0400 From: "Gonglei (Arei)" Date: Fri, 8 Jul 2016 07:27:59 +0000 Message-ID: <33183CC9F5247A488A2544077AF19020B0357FB1@SZXEMA503-MBS.china.huawei.com> References: <33183CC9F5247A488A2544077AF19020B034C1CE@SZXEMA503-MBS.china.huawei.com> In-Reply-To: <33183CC9F5247A488A2544077AF19020B034C1CE@SZXEMA503-MBS.china.huawei.com> Content-Language: zh-CN Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Qemu-devel] [RFC v4] virtio-crypto specification List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Gonglei (Arei)" , "virtio-dev@lists.oasis-open.org" , "qemu-devel@nongnu.org" Cc: "Hanweidong (Randy)" , Stefan Hajnoczi , Cornelia Huck , "mst@redhat.com" , Lingli Deng , Jani Kokkonen , "Huangpeng (Peter)" , "Zhoujian (jay, Euler)" , "'Ola Liljedahl@arm.com'" , Varun Sethi UGluZy4uLg0KDQpJJ2QgbGlrZSB0byBrbm93IHdoYXQncyB0aGUgcHJvY2VzcyBvZiBhIG5ldyB2 aXJ0aW8gZGV2aWNlIGNhbiBiZSBtZXJnZWQ/IA0KQW55Ym9keSBjYW4gdGVsbCBtZT8gVGhhbmtz IGEgbG90Lg0KDQpUYWtpbmcgVmlydGlvLWdwdSBhcyBhbiBleGFtcGxlLCB0aGUgdmlydGlvLWdw dSBoYWQgYmVlbiBtZXJnZWQgaW4gTGludXgga2VybmVsDQpBbmQgUWVtdSBjb21tdW5pdGllcywg YnV0IHRoZSBjb3JyZXNwb25kaW5nIHZpcnRpby1ncHUgc3BlYyBoYWRuJ3QgYmVlbiBtZXJnZWQN CnlldC4gV2h5IHdhcyB0aGF0PyBBbSBJIG1pc3Npbmcgc29tZSBydWxlcz8gVGhhbmtzLiANCg0K DQpSZWdhcmRzLA0KLUdvbmdsZWkNCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ IEZyb206IEdvbmdsZWkgKEFyZWkpDQo+IFNlbnQ6IFN1bmRheSwgSnVuZSAyNiwgMjAxNiA1OjM1 IFBNDQo+IFRvOiB2aXJ0aW8tZGV2QGxpc3RzLm9hc2lzLW9wZW4ub3JnOyBxZW11LWRldmVsQG5v bmdudS5vcmc7IEdvbmdsZWkgKEFyZWkpDQo+IENjOiBIYW53ZWlkb25nIChSYW5keSk7IFN0ZWZh biBIYWpub2N6aTsgQ29ybmVsaWEgSHVjazsgbXN0QHJlZGhhdC5jb207DQo+IExpbmdsaSBEZW5n OyBKYW5pIEtva2tvbmVuOyBMdW9uZW5nanVuOyBIdWFuZ3BlbmcgKFBldGVyKTsgWmhvdWppYW4g KGpheSwNCj4gRXVsZXIpOyBjaGVuc2hhbnhpIDAwMjIyNzM3OyAnT2xhIExpbGplZGFobEBhcm0u Y29tJzsgVmFydW4gU2V0aGkNCj4gU3ViamVjdDogW1JGQyB2NF0gdmlydGlvLWNyeXB0byBzcGVj aWZpY2F0aW9uDQo+IA0KPiBIaSBhbGwsDQo+IA0KPiBUaGlzIGlzIHRoZSBzcGVjaWZpY2F0aW9u ICh2ZXJzaW9uIDQpIGFib3V0IGEgbmV3IHZpcnRpbyBjcnlwdG8gZGV2aWNlLg0KPiANCj4gQ2hh bmdlcyBmcm9tIHYzOg0KPiAgLSBEb24ndCB1c2UgZW51bSBpcyB0aGUgc3BlYyBidXQgbWFjcm9z IGluIHNwZWNpZmljIHN0cnVjdHVyZXMuIFtNaWNoYWVsICYNCj4gU3RlZmFuXQ0KPiAgLSBBZGQg dHdvIGNvbXBsZXRlIHN0cnVjdHVyZXMgZm9yIHNlc3Npb24gY3JlYXRpb24gYW5kIGNsb3Npbmcs IHNvIHRoYXQNCj4gICB0aGUgc3BlYyBpcyBjbGVhciBvbiBob3cgdG8gbGF5IG91dCB0aGUgcmVx dWVzdC4gIFtTdGVmYW5dDQo+ICAtIERlZmluaXRlIHRoZSBjcnlwdG8gb3BlcmF0aW9uIHJlcXVl c3Qgd2l0aCBhc3NpZ25lZCBzdHJ1Y3R1cmUsIGluIHRoaXMgd2F5LA0KPiAgIGVhY2ggZGF0YSBy ZXF1ZXN0IG9ubHkgb2NjdXBpZXMgKm9uZSBlbnRyeSogb2YgdGhlIFZyaW5nIGRlc2NyaXB0b3Ig dGFibGUsDQo+ICAgd2hpY2ggKmltcHJvdmVzKiB0aGUgKnRocm91Z2hwdXQqIG9mIGRhdGEgdHJh bnNmZXJyaW5nLg0KPiANCj4gQ2hhbmdlcyBmcm9tIHYyOg0KPiAgLSBSZXNlcnZlIHZpcnRpbyBk ZXZpY2UgSUQgMjAgZm9yIGNyeXB0byBkZXZpY2UuIFtDb3JuZWxpYV0NCj4gIC0gRHJvcCBhbGwg ZmVhdHVyZSBiaXRzLCB0aG9zZSBjYXBhYmlsaXRpZXMgYXJlIG9mZmVyZWQgYnkgdGhlIGRldmlj ZSBhbGwgdGhlIHRpbWUuDQo+IFtTdGVmYW4gJiBDb3JuZWxpYV0NCj4gIC0gQWRkIGEgbmV3IHNl Y3Rpb24gMS40LjIgZm9yIGRyaXZlciByZXF1aXJlbWVudHMuIFtTdGVmYW5dDQo+ICAtIFVzZSBk ZWZpbml0ZSB0eXBlIGRlZmluaXRpb24gaW5zdGVhZCBvZiBlbnVtIHR5cGUgaW4gc29tZSBzdHJ1 Y3R1cmUuIFtTdGVmYW5dDQo+ICAtIEFkZCB2aXJ0aW9fY3J5cHRvX2NpcGhlcl9hbGcgZGVmaW5p dGlvbi4gW1N0ZWZhbl0NCj4gIC0gQWRkIGEgIkRldmljZSByZXF1aXJlbWVudHMiIHNlY3Rpb24g YXMgdXNpbmcgTVVTVC4gW1N0ZWZhbl0NCj4gIC0gU29tZSBncmFtbWFyIG5pdHMgZml4ZXMgYW5k IHR5cG8gZml4ZXMuIFtTdGVmYW4gJiBDb3JuZWxpYV0NCj4gIC0gQWRkIG9uZSBWSVJUSU9fQ1JZ UFRPX1NfU1RBUlRFRCBzdGF0dXMgZm9yIHRoZSBkcml2ZXIgYXMgdGhlIGZsYWcgb2YNCj4gdmly dGlvLWNyeXB0byBkZXZpY2Ugc3RhcnRlZCBhbmQgY2FuIHdvcmsgbm93Lg0KPiANCj4gR3JlYXQg dGhhbmtzIGZvciBTdGVmYW4gYW5kIENvcm5lbGlhIQ0KPiANCj4gQ2hhbmdlcyBmcm9tIHYxOg0K PiAgLSBEcm9wIHRoZSBmZWF0dXJlIGJpdCBkZWZpbml0aW9uIGZvciBlYWNoIGFsZ29yaXRobSwg YW5kIHVzaW5nIGNvbmZpZyBzcGFjZQ0KPiBpbnN0ZWFkICBbQ29ybmVsaWFdDQo+ICAtIEFkZCBt dWx0aXF1ZXVlIHN1cHBvcnQgYW5kIGFkZCBjb3JyZXNwb25kaW5nIGZlYXR1cmUgYml0DQo+ICAt IFVwZGF0ZSBFbmNyeXB0aW9uIHByb2Nlc3MgYW5kIGhlYWRlciBkZWZpbml0aW9uDQo+ICAtIEFk ZCBzZXNzaW9uIG9wZXJhdGlvbiBwcm9jZXNzIGFuZCBhZGQgY29ycmVzcG9uZGluZyBoZWFkZXIg ZGVzY3JpcHRpb24NCj4gIC0gT3RoZXIgYmV0dGVyIGRlc2NyaXB0aW9uIGluIG9yZGVyIHRvIGZp dCBmb3IgdmlydGlvIHNwZWMgIFtNaWNoYWVsXQ0KPiAgLSBTb21lIG90aGVyIHRyaXZpYWwgZml4 ZXMuDQo+IA0KPiBJZiB5b3UgaGF2ZSBhbnkgY29tbWVudHMsIHBsZWFzZSBsZXQgbWUga25vdywg dGhhbmtzIDopDQo+IA0KPiANCj4gVmlydGlvLWNyeXB0byBkZXZpY2UgU3BlYw0KPiAJCQkJCQkJ U2lnbmVkLW9mZi1ieTogR29uZ2xlaQ0KPiA8YXJlaS5nb25nbGVpQGh1YXdlaS5jb20+DQo+IA0K PiAxCUNyeXB0byBEZXZpY2UNCj4gVGhlIHZpcnRpbyBjcnlwdG8gZGV2aWNlIGlzIGEgdmlydHVh bCBjcnlwdG8gZGV2aWNlIChpZS4gaGFyZHdhcmUgY3J5cHRvDQo+IGFjY2VsZXJhdG9yIGNhcmQp LiBUaGUgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiByZXF1ZXN0cyBvZiBhcmUgcGxhY2VkIGlu IHRoZQ0KPiBkYXRhIHF1ZXVlLCBhbmQgaGFuZGxlZCBieSB0aGUgcmVhbCBoYXJkd2FyZSBjcnlw dG8gYWNjZWxlcmF0b3JzIGZpbmFsbHkuIFRoZQ0KPiBzZWNvbmQgcXVldWUgaXMgdGhlIGNvbnRy b2wgcXVldWUsIHdoaWNoIGlzIHVzZWQgdG8gY3JlYXRlIG9yIGRlc3Ryb3kgc2Vzc2lvbg0KPiBm b3Igc3ltbWV0cmljIGFsZ29yaXRobXMsIGFuZCB0byBjb250cm9sIHNvbWUgYWR2YW5jZWQgZmVh dHVyZXMgaW4gdGhlIGZ1dHVyZS4NCj4gMS4xCURldmljZSBJRA0KPiAyMA0KPiAxLjIJVmlydHF1 ZXVlcw0KPiAwICBkYXRhcQ0KPiDigKYNCj4gTi0xICBkYXRhcQ0KPiBOICBjb250cm9scQ0KPiBO IGlzIHNldCBieSBtYXhfdmlydHF1ZXVlcyAobWF4X3ZpcnRxdWV1ZXMgPj0gMSkuDQo+IDEuMwlG ZWF0dXJlIGJpdHMNCj4gVGhlcmUgYXJlIG5vIGZlYXR1cmUgYml0cyAoeWV0KS4NCj4gMS40CURl dmljZSBjb25maWd1cmF0aW9uIGxheW91dA0KPiBUaHJlZSBkcml2ZXItcmVhZC1vbmx5IGNvbmZp Z3VyYXRpb24gZmllbGRzIGFyZSBjdXJyZW50bHkgZGVmaW5lZC4gT25lIHJlYWQtb25seQ0KPiBi aXQgKGZvciB0aGUgZGV2aWNlKSBpcyBjdXJyZW50bHkgZGVmaW5lZCBmb3IgdGhlIHN0YXR1cyBm aWVsZDoNCj4gVklSVElPX0NSWVBUT19TX0hXX1JFQURZLiBPbmUgcmVhZC1vbmx5IGJpdCAoZm9y IHRoZSBkcml2ZXIpIGlzIGN1cnJlbnRseQ0KPiBkZWZpbmVkIGZvciB0aGUgc3RhdHVzIGZpZWxk OiBWSVJUSU9fQ1JZUFRPX1NfU1RBUlRFRC4NCj4gI2RlZmluZSBWSVJUSU9fQ1JZUFRPX1NfSFdf UkVBRFkgICgxIDw8IDApDQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19TX1NUQVJURUQgICgxIDw8 IDEpDQo+IA0KPiBUaGUgZm9sbG93aW5nIGRyaXZlci1yZWFkLW9ubHkgZmllbGQsIG1heF92aXJ0 cXVldWVzIHNwZWNpZmllcyB0aGUgbWF4aW11bQ0KPiBudW1iZXIgb2YgZGF0YSB2aXJ0cXVldWVz IChkYXRhcTEuIC4gLmRhdGFxTikgLg0KPiBzdHJ1Y3QgdmlydGlvX2NyeXB0b19jb25maWcgew0K PiAJbGUxNiBzdGF0dXM7DQo+IAlsZTE2IG1heF92aXJ0cXVldWVzOw0KPiAJbGUzMiBhbGdvcml0 aG1zOw0KPiB9Ow0KPiANCj4gVGhlIGxhc3QgZHJpdmVyLXJlYWQtb25seSBmaWVsZCwgYWxnb3Jp dGhtcyBzcGVjaWZpZXMgdGhlIGFsZ29yaXRobXMgd2hpY2ggdGhlDQo+IGRldmljZSBvZmZlcmVk LiBUd28gcmVhZC1vbmx5IGJpdHMgKGZvciB0aGUgZHJpdmVyKSBhcmUgY3VycmVudGx5IGRlZmlu ZWQgZm9yIHRoZQ0KPiBhbGdvcml0aG1zIGZpZWxkOiBWSVJUSU9fQ1JZUFRPX0FMR19TWU0gYW5k IFZJUlRJT19DUllQVE9fQUxHX0FTWU0uDQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19BTEdfU1lN ICAoMSA8PCAwKQ0KPiAjZGVmaW5lIFZJUlRJT19DUllQVE9fQUxHX0FTWU0gICgxIDw8IDEpDQo+ IDEuNC4xCURldmljZSBSZXF1aXJlbWVudHM6IERldmljZSBjb25maWd1cmF0aW9uIGxheW91dA0K PiBUaGUgZGV2aWNlIE1VU1Qgc2V0IG1heF92aXJ0cXVldWVzIHRvIGJldHdlZW4gMSBhbmQgNjU1 MzUgaW5jbHVzaXZlLg0KPiANCj4gVGhlIGRldmljZSBTSE9VTEQgc2V0IHN0YXR1cyBhY2NvcmRp bmcgdG8gdGhlIHN0YXR1cyBvZiB0aGUgaGFyZHdhcmUtYmFja2VkDQo+IGltcGxlbWVudGF0aW9u Lg0KPiANCj4gVGhlIGRldmljZSBNVVNUIHNldCBhbGdvcml0aG1zIGFjY29yZGluZyB0byB0aGUg YWxnb3JpdGhtcyB3aGljaCB0aGUgZGV2aWNlDQo+IG9mZmVyZWQuDQo+IDEuNC4yCURyaXZlciBS ZXF1aXJlbWVudHM6IERldmljZSBjb25maWd1cmF0aW9uIGxheW91dA0KPiBUaGUgZHJpdmVyIE1V U1QgcmVhZCB0aGUgcmVhZHkgc3RhdHVzIGZyb20gdGhlIGJvdHRvbSBiaXQgb2Ygc3RhdHVzIHRv IGNoZWNrDQo+IHdoZXRoZXIgdGhlIGhhcmR3YXJlLWJhY2tlZCBpbXBsZW1lbnRhdGlvbiBpcyBy ZWFkeSBvciBub3QuDQo+IFRoZSBkcml2ZXIgTVVTVCByZWFkIHRoZSBhbGdvcml0aG1zIHRvIGRp c2NvdmVyIHRoZSBhbGdvcml0aG1zIHdoaWNoIHRoZQ0KPiBkZXZpY2Ugc3VwcG9ydHMuDQo+IDEu NQlEZXZpY2UgSW5pdGlhbGl6YXRpb24NCj4gQSBkcml2ZXIgd291bGQgcGVyZm9ybSBhIHR5cGlj YWwgaW5pdGlhbGl6YXRpb24gcm91dGluZSBsaWtlIHNvOg0KPiAxLiBJZGVudGlmeSBhbmQgaW5p dGlhbGl6ZSBkYXRhIHZpcnRxdWV1ZSwgdXAgdG8gbWF4X3ZpcnRxdWV1ZXMuDQo+IDIuIElkZW50 aWZ5IHRoZSBjb250cm9sIHZpcnRxdWV1ZS4NCj4gMy4gSWRlbnRpZnkgdGhlIHJlYWR5IHN0YXR1 cyBvZiBoYXJkd2FyZS1iYWNrZW5kIGNvbWVzIGZyb20gdGhlIGJvdHRvbSBiaXQgb2YNCj4gc3Rh dHVzLg0KPiA0LiBSZWFkIHRoZSBzdXBwb3J0ZWQgYWxnb3JpdGhtcyBmcm9tIGJpdHMgb2YgYWxn b3JpdGhtcy4NCj4gMS42CURldmljZSBPcGVyYXRpb24NCj4gMS42LjEJU2Vzc2lvbiBvcGVyYXRp b24NCj4gVGhlIHN5bW1ldHJpYyBhbGdvcml0aG1zIGhhdmUgdGhlIGNvbmNlcHQgb2Ygc2Vzc2lv bnMuIEEgc2Vzc2lvbiBpcyBhIGhhbmRsZQ0KPiB3aGljaCBkZXNjcmliZXMgdGhlDQo+IGNyeXB0 b2dyYXBoaWMgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVkIHRvIGEgbnVtYmVyIG9mIGJ1ZmZlcnMu IFRoZSBkYXRhIHdpdGhpbg0KPiBhIHNlc3Npb24gaGFuZGxlIGluY2x1ZGVzIHRoZSBmb2xsb3dp bmc6DQo+IOKAojEuIFRoZSBvcGVyYXRpb24gKGNpcGhlciwgaGFzaCBvciBib3RoLCBhbmQgaWYg Ym90aCwgdGhlIG9yZGVyIGluIHdoaWNoIHRoZQ0KPiBhbGdvcml0aG1zIHNob3VsZCBiZSBhcHBs aWVkKS4NCj4g4oCiMi4gVGhlIGNpcGhlciBzZXR1cCBkYXRhLCBpbmNsdWRpbmcgdGhlIGNpcGhl ciBhbGdvcml0aG0gYW5kIG1vZGUsIHRoZSBrZXkNCj4gYW5kIGl0cyBsZW5ndGgsIGFuZCB0aGUg ZGlyZWN0aW9uIChlbmNyeXB0IG9yIGRlY3J5cHQpLg0KPiDigKIzLiBUaGUgaGFzaCBzZXR1cCBk YXRhLCBpbmNsdWRpbmcgdGhlIGhhc2ggYWxnb3JpdGhtLCBtb2RlIChwbGFpbiwgbmVzdGVkIG9y DQo+IGF1dGhlbnRpY2F0ZWQpLCBhbmQgZGlnZXN0IHJlc3VsdCBsZW5ndGggKHRvIGFsbG93IGZv ciB0cnVuY2F0aW9uKS4NCj4g74GsCe+ArSBBdXRoZW50aWNhdGVkIG1vZGUgY2FuIHJlZmVyIHRv IEhNQUMsIHdoaWNoIHJlcXVpcmVzIHRoYXQgdGhlIGtleSBhbmQNCj4gaXRzIGxlbmd0aCBhcmUg YWxzbyBzcGVjaWZpZWQuIEl0IGlzIGFsc28gdXNlZCBmb3IgR0NNIGFuZCBDQ00gYXV0aGVudGlj YXRlZA0KPiBlbmNyeXB0aW9uLCBpbiB3aGljaCBjYXNlIHRoZSBBQUQgbGVuZ3RoIGlzIGFsc28g c3BlY2lmaWVkLg0KPiDvgawJ74CtIEZvciBuZXN0ZWQgbW9kZSwgdGhlIGlubmVyIGFuZCBvdXRl ciBwcmVmaXggZGF0YSBhbmQgbGVuZ3RoIGFyZQ0KPiBzcGVjaWZpZWQsIGFzIHdlbGwgYXMgdGhl IG91dGVyIGhhc2ggYWxnb3JpdGhtLg0KPiANCj4gVGhlIGNvbnRyb2xxIHZpcnRxdWV1ZSBpcyB1 c2VkIHRvIGNvbnRyb2wgc2Vzc2lvbiBvcGVyYXRpb25zLCBpbmNsdWRpbmcgY3JlYXRpb24NCj4g b3IgY2xvc2UuIFRoZSByZXF1ZXN0IGlzIHByZWNlZGVkIGJ5IGEgaGVhZGVyOg0KPiBzdHJ1Y3Qg dmlydGlvX2NyeXB0b19zeW1fY3RsaGRyIHsNCj4gICAgIC8qIGNvbnRyb2wgdHlwZSAgKi8NCj4g ICAgIHU4IHR5cGU7DQo+IH07DQo+IFR3byBiaXRzIGFyZSBjdXJyZW50bHkgZGVmaW5lZCBmb3Ig dGhlIGNvbnRyb2wgaGVhZGVyIHR5cGU6DQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19DVFJMX0NS RUFURV9TRVNTSU9OICAxDQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19DVFJMX0NMT1NFX1NFU1NJ T04gIDINCj4gDQo+IDEuNi4xLjEgU2Vzc2lvbiBjcmVhdGlvbiBvcGVyYXRpb24NCj4gQSByZXF1 ZXN0IG9mIGNyZWF0aW5nIGEgc2Vzc2lvbiBpbmNsdWRpbmcgdGhlIGZvbGxvd2luZyBpbmZvcm1h dGlvbjoNCj4gc3RydWN0IHZpcnRpb19jcnlwdG9fc3ltX3Nlc3Npb25fY3JlYXRpb24gew0KPiAJ c3RydWN0IHZpcnRpb19jcnlwdG9fc3ltX2N0bGhkciAgIGN0bGhkcjsgIC8qIE9VVCAqLw0KPiAJ c3RydWN0IHZpcnRpb19jcnlwdG9fc3ltX3Nlc3Npb25fb3AgIHNlc3Npb25fb3A7ICAvKiBPVVQg Ki8NCj4gCXN0cnVjdCB2aXJ0aW9fY3J5cHRvX3N5bV9zZXNzaW9uX29wX2luaGRyICBpbmhkcjsg IC8qIElOICovDQo+IH07DQo+IFRoZSBkZXRhaWxzIG9mIHNwZWNpZmljIHN0cnVjdHVyZSwgaW5j bHVkaW5nIHN0cnVjdCB2aXJ0aW9fY3J5cHRvX3N5bV9zZXNzaW9uX29wDQo+IGFuZCBzdHJ1Y3Qg dmlydGlvX2NyeXB0b19zeW1fc2Vzc2lvbl9vcF9pbmhkciAgYXJlIGRlZmluZWQgYnkgdGhlIGZv bGxvd2luZw0KPiBzZWN0aW9ucy4NCj4gMS42LjEuMS4xIERyaXZlciBSZXF1aXJlbWVudHM6IFNl c3Npb24gY3JlYXRpb24gb3BlcmF0aW9uDQo+IFRoZSBkcml2ZXIgTVVTVCBzZXQgdGhlIGNvbnRy b2wgdHlwZSB3aXRoDQo+IFZJUlRJT19DUllQVE9fQ1RSTF9DUkVBVEVfU0VTU0lPTiBiZWZvcmUg dGhlIHJlcXVlc3QgaXMgcHJlY2VkZWQgYnkgYW4NCj4gb3BlcmF0aW9uIGhlYWRlciB3aGVuIGV4 ZWN1dGluZyBzZXNzaW9uIGNyZWF0aW9uOg0KPiB0eXBlZGVmIHN0cnVjdCB2aXJ0aW9fY3J5cHRv X3N5bV9zZXNzaW9uX29wIHsNCj4gLyoqPCBObyBvcGVyYXRpb24gKi8NCj4gI2RlZmluZSBWSVJU SU9fQ1JZUFRPX1NZTV9PUF9OT05FICAgIDANCj4gLyoqPCBDaXBoZXIgb25seSBvcGVyYXRpb24g b24gdGhlIGRhdGEgKi8NCj4gI2RlZmluZSBWSVJUSU9fQ1JZUFRPX1NZTV9PUF9DSVBIRVIgICAg MQ0KPiAvKio8IEhhc2ggb25seSBvcGVyYXRpb24gb24gdGhlIGRhdGEgKi8NCj4gI2RlZmluZSBW SVJUSU9fQ1JZUFRPX1NZTV9PUF9IQVNIICAgICAyDQo+IC8qKjwgQ2hhaW4gYW55IGNpcGhlciB3 aXRoIGFueSBoYXNoIG9wZXJhdGlvbiAqLw0KPiAjZGVmaW5lIFZJUlRJT19DUllQVE9fU1lNX09Q X0FMR09SSVRITV9DSEFJTklORyAgICAzDQo+IAl1OCBvcF90eXBlOyAvKiBPcGVyYXRpb24gdHlw ZSAqLw0KPiAgICAgdmlydGlvX2NyeXB0b19zeW1fY2lwaGVyX3QgY2lwaGVyX3NldHVwX2RhdGE7 DQo+IAl2aXJ0aW9fY3J5cHRvX3N5bV9oYXNoX3QgaGFzaF9zZXR1cF9kYXRhOw0KPiAvKiBQZXJm b3JtIHRoZSBoYXNoIG9wZXJhdGlvbiBmb2xsb3dlZCBieSB0aGUgY2lwaGVyIG9wZXJhdGlvbiAq Lw0KPiAjZGVmaW5lIFZJUlRJT19DUllQVE9fU1lNX0FMR19DSEFJTl9PUkRFUl9IQVNIX1RIRU5f Q0lQSEVSDQo+IAkxDQo+IC8qIFBlcmZvcm0gdGhlIGNpcGhlciBvcGVyYXRpb24gZm9sbG93ZWQg YnkgdGhlIGhhc2ggb3BlcmF0aW9uICovDQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19TWU1fQUxH X0NIQUlOX09SREVSX0NJUEhFUl9USEVOX0hBU0gNCj4gCTINCj4gICAgIHU4IGFsZ19jaGFpbl9v cmRlcjsNCj4gfSB2aXJ0aW9fY3J5cHRvX3N5bV9zZXNzaW9uX29wX3Q7DQo+IEFuZCB0aGUgc3Ry dWN0dXJlcyBkZWZpbml0aW9uIGRldGFpbHMgYXJlOg0KPiB0eXBlZGVmIHN0cnVjdCB2aXJ0aW9f Y3J5cHRvX3N5bV9oYXNoX2F1dGhfbW9kZSB7DQo+IAkvKiBsZW5ndGggb2YgYXV0aGVudGljYXRl ZCBrZXkgKi8NCj4gIAlsZTMyIGF1dGhfa2V5X2xlbjsNCj4gIAkvKiBUaGUgbGVuZ3RoIG9mIHRo ZSBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0ZWQgZGF0YSAoQUFEKSBpbiBieXRlcyAqLw0KPiAgCWxl MzIgYWFkX2xlbjsNCj4gfSB2aXJ0aW9fY3J5cHRvX3N5bV9oYXNoX2F1dGhfbW9kZV90Ow0KPiAN Cj4gdHlwZWRlZiBzdHJ1Y3QgdmlydGlvX2NyeXB0b19zeW1fY2lwaGVyIHsNCj4gLyogT3B0aW9u IHRvIG5vdCBkbyBhbnkgY3J5cHRvZ3JhcGh5ICovDQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19O T19DSVBIRVIJMA0KPiAjZGVmaW5lIFZJUlRJT19DUllQVE9fQ0lQSEVSX0RFUwkxDQo+ICNkZWZp bmUgVklSVElPX0NSWVBUT19DSVBIRVJfREVTX0NCQwkyDQo+ICNkZWZpbmUgVklSVElPX0NSWVBU T19DSVBIRVJfREVTMwkzDQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19DSVBIRVJfREVTM19DQkMJ NA0KPiAjZGVmaW5lIFZJUlRJT19DUllQVE9fQ0lQSEVSX0FFUwk1DQo+ICNkZWZpbmUgVklSVElP X0NSWVBUT19DSVBIRVJfQUVTX0NCQwk2DQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19DSVBIRVJf S0FTVU1JX0Y4CTcNCj4gICAgIGxlMzIgYWxnOyAgLyogY2lwaGVyIGFsZ29yaXRobSB0eXBlIChp ZS4gYWVzLWNiYyApICovDQo+ICAgICAvKiBsZW5ndGggb2Yga2V5ICovDQo+ICAgICBsZTMyIGtl eWxlbjsNCj4gI2RlZmluZSBWSVJUSU9fQ1JZUFRPX0RFQ1JZUFQJMA0KPiAjZGVmaW5lIFZJUlRJ T19DUllQVE9fRU5DUllQVAkxDQo+IAl1OCBvcDsgLyogZW5jcnlwdCBvciBkZWNyeXB0ICovDQo+ IH0gdmlydGlvX2NyeXB0b19zeW1fY2lwaGVyX3Q7DQo+IA0KPiB0eXBlZGVmIHN0cnVjdCB2aXJ0 aW9fY3J5cHRvX3N5bV9oYXNoIHsNCj4gLyogT3B0aW9uIHRvIG5vdCBkbyBhbnkgaGFzaCAqLw0K PiAjZGVmaW5lIFZJUlRJT19DUllQVE9fTk9fSEFTSAkwDQo+ICNkZWZpbmUgVklSVElPX0NSWVBU T19IQVNIX01ENQkxDQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19IQVNIX1NIQTEJMg0KPiAjZGVm aW5lIFZJUlRJT19DUllQVE9fSEFTSF9TSEExXzk2CTMNCj4gI2RlZmluZSBWSVJUSU9fQ1JZUFRP X0hBU0hfU0hBMjI0CTQNCj4gI2RlZmluZSBWSVJUSU9fQ1JZUFRPX0hBU0hfU0hBMjU2CTUNCj4g I2RlZmluZSBWSVJUSU9fQ1JZUFRPX0hBU0hfU0hBMzg0CTYNCj4gI2RlZmluZSBWSVJUSU9fQ1JZ UFRPX0hBU0hfU0hBNTEyCTcNCj4gI2RlZmluZSBWSVJUSU9fQ1JZUFRPX0hBU0hfQUVTX1hDQkMJ ICAgOA0KPiAjZGVmaW5lIFZJUlRJT19DUllQVE9fSEFTSF9BRVNfWENCQ185NiAgOQ0KPiAjZGVm aW5lIFZJUlRJT19DUllQVE9fSEFTSF9LQVNVTUlfRjkJMTANCj4gICAgIGxlMzIgaGFzaF9hbGc7 ICAvKiBoYXNoIGFsZ29yaXRobSB0eXBlICovDQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19TWU1f SEFTSF9NT0RFX1BMQUlOCTENCj4gI2RlZmluZSBWSVJUSU9fQ1JZUFRPX1NZTV9IQVNIX01PREVf QVVUSAkyDQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19TWU1fSEFTSF9NT0RFX05FU1RFRAkzDQo+ IHU4IGhhc2hfbW9kZTsgLyogbW9kZSBvZiBoYXNoIG9wZXJhdGlvbiwgaW5jbHVkaW5nDQo+IGF1 dGhlbnRpY2F0ZWQvcGxhaW4vbmVzdGVkIGhhc2ggKi8NCj4gCS8qIGhhc2ggcmVzdWx0IGxlbmd0 aCAqLw0KPiAgICAgbGUzMiBoYXNoX3Jlc3VsdF9sZW47DQo+ICAgICB2aXJ0aW9fY3J5cHRvX3N5 bV9oYXNoX2F1dGhfbW9kZV90IGF1dGhfbW9kZV9zZXR1cF9kYXRhOw0KPiB9IHZpcnRpb19jcnlw dG9fc3ltX2hhc2hfdDsNCj4gVGhlIGRyaXZlciBNVVNUIHNldCB0aGUgY29udHJvbCB0eXBlIHdp dGgNCj4gVklSVElPX0NSWVBUT19DVFJMX0NMT1NFX1NFU1NJT04gYW5kIHBhc3MgdGhlIHNlc3Np b25faWQgdG8gdGhlIGRldmljZQ0KPiB3aGVuIGV4ZWN1dGluZyBzZXNzaW9uIGNsb3NlLg0KPiAx LjYuMS4xLjIgRGV2aWNlIFJlcXVpcmVtZW50czogU2Vzc2lvbiBjcmVhdGlvbiBvcGVyYXRpb24N Cj4gVGhlIGRldmljZSBNVVNUIHJldHVybiBhIHNlc3Npb24gaWRlbnRpZmllciB0byB0aGUgZHJp dmVyIHdoZW4gdGhlIGRldmljZQ0KPiBmaW5pc2hlcyB0aGUgcHJvY2Vzc2luZyBvZiBzZXNzaW9u IGNsb3NlLiBUaGUgc2Vzc2lvbiBjcmVhdGlvbiByZXF1ZXN0IE1VU1QNCj4gZW5kIGJ5IGEgdGFp bGVyOg0KPiB0eXBlZGVmIHN0cnVjdCB2aXJ0aW9fY3J5cHRvX3N5bV9zZXNzaW9uX29wX2luaGRy IHsNCj4gCXU4ICAgICBzdGF0dXM7DQo+IAlsZTY0ICAgIHNlc3Npb25faWQ7DQo+IH0gdmlydGlv X2NyeXB0b19zeW1fc2Vzc2lvbl9vcF9pbmhkcl90Ow0KPiBCb3RoIHN0YXR1cyBhbmQgc2Vzc2lv bl9pZCBhcmUgd3JpdHRlbiBieSB0aGUgZGV2aWNlOiBlaXRoZXINCj4gVklSVElPX0NSWVBUT19D VFJMX09LIGZvciBzdWNjZXNzLCBWSVJUSU9fQ1JZUFRPX0NUUkxfRVJSIGZvcg0KPiBjcmVhdGlv biBmYWlsZWQgb3IgZGV2aWNlIGVycm9yLg0KPiAjZGVmaW5lIFZJUlRJT19DUllQVE9fQ1RSTF9P SwkwDQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19DVFJMX0VSUgkxDQo+IDEuNi4xLjIgU2Vzc2lv biBjbG9zaW5nIG9wZXJhdGlvbg0KPiBBIHJlcXVlc3Qgb2YgY2xvc2luZyBhIHNlc3Npb24gaW5j bHVkaW5nIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246DQo+IHN0cnVjdCB2aXJ0aW9fY3J5cHRv X3N5bV9zZXNzaW9uX2NyZWF0aW9uIHsNCj4gCXN0cnVjdCB2aXJ0aW9fY3J5cHRvX3N5bV9jdGxo ZHIgICBjdGxoZHI7ICAvKiBPVVQgKi8NCj4gCWxlNjQgIHNlc3Npb25faWQ7ICAvKiBPVVQgKi8N Cj4gCXU4IHN0YXR1czsgIC8qIElOICovDQo+IH07DQo+IDEuNi4xLjIuMSBEcml2ZXIgUmVxdWly ZW1lbnRzOiBTZXNzaW9uIGNsb3Npbmcgb3BlcmF0aW9uDQo+IFRoZSBkcml2ZXIgTVVTVCBzZXQg dGhlIGNvbnRyb2wgdHlwZSB3aXRoDQo+IFZJUlRJT19DUllQVE9fQ1RSTF9DTE9TRV9TRVNTSU9O LCBhbmQgdGhlIHNlc3Npb25faWQgTVVTVCBiZSBhIHZhbGlkDQo+IHZhbHVlIHdoaWNoIGFzc2ln bmVkIGJ5IHRoZSBkZXZpY2Ugd2hlbiBhIHNlc3Npb24gd2FzIGNyZWF0ZWQuDQo+IDEuNi4xLjIu MiBEZXZpY2UgUmVxdWlyZW1lbnRzOiBTZXNzaW9uIGNsb3Npbmcgb3BlcmF0aW9uDQo+IFN0YXR1 cyBpcyB3cml0dGVuIGJ5IHRoZSBkZXZpY2U6IGVpdGhlciBWSVJUSU9fQ1JZUFRPX0NUUkxfT0sg Zm9yIHN1Y2Nlc3MsDQo+IFZJUlRJT19DUllQVE9fQ1RSTF9FUlIgZm9yIGNyZWF0aW9uIGZhaWxl ZCBvciBkZXZpY2UgZXJyb3IuDQo+ICNkZWZpbmUgVklSVElPX0NSWVBUT19DVFJMX09LCTANCj4g I2RlZmluZSBWSVJUSU9fQ1JZUFRPX0NUUkxfRVJSCTENCj4gMS42LjIJRW5jcnlwdGlvbiBvcGVy YXRpb24NCj4gMS42LjIuMSBEcml2ZXIgUmVxdWlyZW1lbnRzOiBFbmNyeXB0aW9uIG9wZXJhdGlv bg0KPiBUaGUgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiByZXF1ZXN0cyBhbmQgdGhlIGNvcnJl c3BvbmRpbmcgcmVzdWx0cyBhcmUNCj4gdHJhbnNtaXR0ZWQgYnkgcGxhY2luZyB0aGVtIGluIGRh dGFxLiBUaGUgc3ltbWV0cmljIGFsZ29yaXRobXMgcmVxdWVzdHMgYXJlDQo+IHByZWNlZGVkIGJ5 IGEgaGVhZGVyOg0KPiBzdHJ1Y3QgdmlydGlvX2NyeXB0b19zeW1fb3BfaGRyIHsNCj4gCS8qIHRo ZSBiYWNrZW5kIHJldHVybmVkIHNlc3Npb24gaWRlbnRpZmllciAqLw0KPiAJbGU2NCBzZXNzaW9u X2lkOw0KPiAJLyogbGVuZ3RoIG9mIGluaXRpYWwgdmVjdG9yICovDQo+IAlsZTMyIGl2X2xlbjsN Cj4gCS8qIGl2IG9mZnNldCBpbiB0aGUgd2hvbGUgY3J5cHRvIGRhdGEgbWVtb3J5ICovDQo+IAls ZTMyIGl2X29mZnNldDsNCj4gCS8qIGxlbmd0aCBvZiBhZGRpdGlvbmFsIGF1dGggZGF0YSAqLw0K PiAJbGUzMiBhdXRoX2xlbjsNCj4gCS8qIGFkZGl0aW9uYWwgYXV0aCBkYXRhIG9mZnNldCBpbiB0 aGUgd2hvbGUgY3J5cHRvIGRhdGEgbWVtb3J5ICovDQo+IAlsZTMyIGFkZGl0aW9uYWxfYXV0aF9v ZmZzZXQ7DQo+IAkvKiBjaXBoZXIgc3RhcnQgc291cmNlIG9mZmVzdCAqLw0KPiAJbGUzMiBjaXBo ZXJfc3RhcnRfc3JjX29mZnNldDsNCj4gCWxlMzIgbGVuX3RvX2NpcGhlcjsNCj4gCS8qIGhhc2gg c3RhcnQgc291cmNlIG9mZmVzdCAqLw0KPiAJbGUzMiBoYXNoX3N0YXJ0X3NyY19vZmZzZXQ7DQo+ IAlsZTMyIGxlbl90b19oYXNoOw0KPiAJLyogbGVuZ3RoIG9mIHNvdXJjZSBkYXRhICovDQo+IAls ZTMyIHNvdXJjZV9sZW47DQo+IH0gOw0KPiBUaGUgZW5jcnlwdGlvbiByZXF1ZXN0IE1VU1QgZW5k IGJ5IGEgdGFpbGVyOg0KPiB0eXBlZGVmIHN0cnVjdCB2aXJ0aW9fY3J5cHRvX3N5bV9vcF9pbmhk ciB7DQo+IAl1OCAgICAgc3RhdHVzOw0KPiB9IHZpcnRpb19jcnlwdG9fc3ltIF9vcF9pbmhkcl90 Ow0KPiBUaGUgc3BlY2lmaWMgY29udGVudCBvZiBzeW1tZXRyaWMgYWxnb3JpdGhtcyByZXF1ZXN0 cyBTSE9VTEQgYmUgc2FtZSBhcw0KPiBiZWxvdzoNCj4gc3RydWN0IHZpcnRpb19jcnlwdG9fc3lt X29wX2RhdGEgew0KPiAJc3RydWN0IHZpcnRpb19jcnlwdG9fc3ltX29wX2hkciAgaGRyX2luZm87 DQo+IAlsZTY0IGl2X2FkZHI7IC8qIGl2IGd1ZXN0IGFkZHJlc3MgKi8NCj4gCWxlNjQgYXV0aF9k YXRhX2FkZHI7IC8qIGFzc29jaWF0ZWQgZGF0YSBndWVzdCBhZGRyZXNzICovDQo+IAlsZTY0IHNy Y19kYXRhX2FkZHI7IC8qIHNvdXJjZSBkYXRhIGd1ZXN0IGFkZHJlc3MgKi8NCj4gCWxlNjQgZHN0 X2RhdGFfYWRkcjsgLyogZGVzdGluYXRpb24gZGF0YSBndWVzdCBhZGRyZXNzICovDQo+IAlsZTY0 IGRpZ2VzdF9yZXN1bHRfYWRkcjsgLyogZGlnZXN0IHJlc3VsdCBndWVzdCBhZGRyZXNzICovDQo+ IAlsZTY0IGluaGRyX2FkZHI7IC8qIGluLWhlYWRlciBndWVzdCBhZGRyZXNzICovDQo+IH07DQo+ IEluIHRoaXMgd2F5LCBlYWNoIGRhdGEgcmVxdWVzdCBvbmx5IG9jY3VwaWVzIG9uZSBlbnRyeSBv ZiB0aGUgVnJpbmcgZGVzY3JpcHRvcg0KPiB0YWJsZSwgd2hpY2ggaW1wcm92ZXMgdGhlIHRocm91 Z2hwdXQgb2YgZGF0YSB0cmFuc2ZlcnJpbmcuDQo+IDEuNi4yLjIgRGV2aWNlIFJlcXVpcmVtZW50 czogRW5jcnlwdGlvbiBvcGVyYXRpb24NCj4gVGhlIHN0cnVjdCB2aXJ0aW9fY3J5cHRvX3N5bV9v cF9pbmhkcuKAmXMgc3RhdHVzIGJ5dGUgaXMgd3JpdHRlbiBieSB0aGUgZGV2aWNlOg0KPiBlaXRo ZXIgVklSVElPX0NSWVBUT19TX09LIGZvciBzdWNjZXNzLCBWSVJUSU9fQ1JZUFRPX1NfRVJSIGZv ciBkZXZpY2Ugb3INCj4gZHJpdmVyIGVycm9yLCBWSVJUSU9fQ1JZUFRPX1NfQkFETVNHIGZvciB2 ZXJpZmljYXRpb24gZmFpbGVkIHdoZW4gZGVjcnlwdA0KPiBBRUFEIGFsZ29yaXRobXM6DQo+ICNk ZWZpbmUgVklSVElPX0NSWVBUT19TX09LICAgIDANCj4gI2RlZmluZSBWSVJUSU9fQ1JZUFRPX1Nf RVJSICAgIDENCj4gI2RlZmluZSBWSVJUSU9fQ1JZUFRPX1NfQkFETVNHICAgIDINCj4gDQo+IDEu Ni4yLjMgU3RlcHMgb2YgZW5jcnlwdGlvbiBPcGVyYXRpb24NCj4gU3RlcDE6IENyZWF0ZSBhIHNl c3Npb246DQo+IDEuCVRoZSBkcml2ZXIgZmlsbHMgb3V0IHRoZSBjb250ZXh0IG1lc3NhZ2UsIGlu Y2x1ZGluZyBhbGdvcml0aG0gbmFtZSwga2V5LA0KPiBrZXlsZW4gZXRjOw0KPiAyLglUaGUgZHJp dmVyIHNlbmRzIGEgY29udGV4dCBtZXNzYWdlIHRvIHRoZSBiYWNrZW5kIGRldmljZSBieSBjb250 cm9scTsNCj4gMy4JVGhlIGRldmljZSBjcmVhdGVzIGEgc2Vzc2lvbiB1c2luZyB0aGUgbWVzc2Fn ZSB0cmFuc21pdHRlZCBieSBjb250cm9scTsNCj4gNC4JUmV0dXJuIHRoZSBzZXNzaW9uIGlkIHRv IHRoZSBkcml2ZXIuDQo+IFN0ZXAgMjogRXhlY3V0ZSB0aGUgZGV0YWlsIGVuY3J5cHRpb24gb3Bl cmF0aW9uOg0KPiAxLglUaGUgZHJpdmVyIGZpbGxzIG91dCB0aGUgZW5jcnlwdCByZXF1ZXN0czsN Cj4gMi4JUHV0IHRoZSByZXF1ZXN0cyBpbnRvIGRhdGFxIGFuZCBraWNrIHRoZSB2aXJ0cXVldWU7 DQo+IDMuCVRoZSBkZXZpY2UgZXhlY3V0ZXMgdGhlIGVuY3J5cHRpb24gb3BlcmF0aW9uIGFjY29y ZGluZyB0aGUgcmVxdWVzdHMnDQo+IGFyZ3VtZW50czsNCj4gNC4JVGhlIGRldmljZSByZXR1cm5z IHRoZSBlbmNyeXB0aW9uIHJlc3VsdCB0byB0aGUgZHJpdmVyIGJ5IGRhdGFxOw0KPiA1LglUaGUg ZHJpdmVyIGNhbGxiYWNrIGhhbmRsZSB0aGUgcmVzdWx0IGFuZCBvdmVyLg0KPiANCj4gTm90ZTog dGhlIGRyaXZlciBNQVkgc3VwcG9ydCBib3RoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMg ZW5jcnlwdGlvbi4NCj4gVGhlbiB0aGUgcGVyZm9ybWFuY2UgaXMgcG9vciBpbiBzeW5jaHJvbm91 cyBvcGVyYXRpb24gYmVjYXVzZSBmcmVxdWVudA0KPiBjb250ZXh0IHN3aXRjaGluZyBhbmQgdmly dHVhbGl6YXRpb24gb3ZlcmhlYWQuIFRoZSBkcml2ZXIgU0hPVUxEIGJ5DQo+IHByZWZlcmVuY2Ug dXNlIGFzeW5jaHJvbm91cyBlbmNyeXB0aW9uLg0KPiAxLjYuMwlEZWNyeXB0aW9uIE9wZXJhdGlv bg0KPiBUaGUgZGVjcnlwdGlvbiBwcm9jZXNzIGlzIHRoZSBzYW1lIHdpdGggZW5jcnlwdGlvbi4N Cj4gMS42LjMuMSBEZXZpY2UgUmVxdWlyZW1lbnRzOiBEZWNyeXB0aW9uIG9wZXJhdGlvbg0KPiBU aGUgZGV2aWNlIE1VU1QgdmVyaWZ5IGFuZCByZXR1cm4gdGhlIHZlcmlmeSByZXN1bHQgdG8gdGhl IGRyaXZlci4gSWYgdGhlIHZlcmlmeQ0KPiByZXN1bHQgaXMgbm90IGNvcnJlY3QsIFZJUlRJT19D UllQVE9fU19CQURNU0cgKGJhZCBtZXNzYWdlKSBNVVNUIGJlDQo+IHJldHVybmVkIHRoZSBkcml2 ZXIuDQo+IA0KPiBSZWdhcmRzLA0KPiAtR29uZ2xlaQ0KPiANCj4gDQo+IA0KDQo=