From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6D2E0C4332F for ; Mon, 25 Oct 2021 11:31:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 53DA360F4F for ; Mon, 25 Oct 2021 11:31:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232847AbhJYLdb (ORCPT ); Mon, 25 Oct 2021 07:33:31 -0400 Received: from frasgout.his.huawei.com ([185.176.79.56]:4027 "EHLO frasgout.his.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230267AbhJYLdR (ORCPT ); Mon, 25 Oct 2021 07:33:17 -0400 Received: from fraeml710-chm.china.huawei.com (unknown [172.18.147.226]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4HdCNk19pCz67NwX; Mon, 25 Oct 2021 19:27:34 +0800 (CST) Received: from fraeml714-chm.china.huawei.com (10.206.15.33) by fraeml710-chm.china.huawei.com (10.206.15.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.15; Mon, 25 Oct 2021 13:30:45 +0200 Received: from fraeml714-chm.china.huawei.com ([10.206.15.33]) by fraeml714-chm.china.huawei.com ([10.206.15.33]) with mapi id 15.01.2308.015; Mon, 25 Oct 2021 13:30:45 +0200 From: Roberto Sassu To: "deven.desai@linux.microsoft.com" , "corbet@lwn.net" , "axboe@kernel.dk" , "agk@redhat.com" , "snitzer@redhat.com" , "ebiggers@kernel.org" , "tytso@mit.edu" , "paul@paul-moore.com" , "eparis@redhat.com" , "jmorris@namei.org" , "serge@hallyn.com" CC: "jannh@google.com" , "dm-devel@redhat.com" , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-block@vger.kernel.org" , "linux-fscrypt@vger.kernel.org" , "linux-audit@redhat.com" , "linux-security-module@vger.kernel.org" , "linux-integrity@vger.kernel.org" Subject: RE: [RFC PATCH v7 00/16] Integrity Policy Enforcement (IPE) Thread-Topic: [RFC PATCH v7 00/16] Integrity Policy Enforcement (IPE) Thread-Index: AQHXwGWW2AQMU2k7W0iAf+goQ1/2GavjhjlA Date: Mon, 25 Oct 2021 11:30:45 +0000 Message-ID: <0a61327839b841a1a9d915a09d1d8b8c@huawei.com> References: <1634151995-16266-1-git-send-email-deven.desai@linux.microsoft.com> In-Reply-To: <1634151995-16266-1-git-send-email-deven.desai@linux.microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.221.98.153] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-fscrypt@vger.kernel.org PiBGcm9tOiBkZXZlbi5kZXNhaUBsaW51eC5taWNyb3NvZnQuY29tDQo+IFttYWlsdG86ZGV2ZW4u ZGVzYWlAbGludXgubWljcm9zb2Z0LmNvbV0NCj4gRnJvbTogRGV2ZW4gQm93ZXJzIDxkZXZlbi5k ZXNhaUBsaW51eC5taWNyb3NvZnQuY29tPg0KPiANCj4gT3ZlcnZpZXc6DQo+IC0tLS0tLS0tLQ0K PiANCj4gSVBFIGlzIGEgTGludXggU2VjdXJpdHkgTW9kdWxlIHdoaWNoIHRha2VzIGEgY29tcGxp bWVudGFyeSBhcHByb2FjaCB0bw0KPiBhY2Nlc3MgY29udHJvbC4gV2hlcmVhcyBleGlzdGluZyBz eXN0ZW1zIGFwcHJvYWNoIHVzZSBsYWJlbHMgb3IgcGF0aHMNCj4gd2hpY2ggY29udHJvbCBhY2Nl c3MgdG8gYSByZXNvdXJjZSwgSVBFIGNvbnRyb2xzIGFjY2VzcyB0byBhIHJlc291cmNlDQo+IGJh c2VkIG9uIHRoZSBzeXN0ZW0ncyB0cnVzdCBvZiBzYWlkIHJlc291cmNlLg0KDQpUbyBtZSwgaXQg ZG9lcyBub3QgZ2l2ZSBhIHBhcnRpY3VsYXJseSBwcmVjaXNlIGlkZWEgb2Ygd2hhdCBJUEUgaXMg YWJvdXQuDQoNCkl0IHdvdWxkIGhhdmUgYmVlbiBtb3JlIGNsZWFyLCBhc3N1bWluZyB0aGF0IEkg dW5kZXJzdG9vZCBpdCBjb3JyZWN0bHksDQppZiB5b3UgaGF2ZSBzYWlkOg0KDQpXaGVyZWFzIGV4 aXN0aW5nIG1hbmRhdG9yeSBhY2Nlc3MgY29udHJvbCBtZWNoYW5pc21zIGJhc2UgdGhlaXINCmRl Y2lzaW9ucyBvbiBsYWJlbHMgYW5kIHBhdGhzLCBJUEUgaW5zdGVhZCBkZXRlcm1pbmVzIHdoZXRo ZXIgb3Igbm90DQphbiBvcGVyYXRpb24gc2hvdWxkIGJlIGFsbG93ZWQgYmFzZWQgb24gaW1tdXRh YmxlIHNlY3VyaXR5IHByb3BlcnRpZXMNCm9mIHRoZSBzeXN0ZW0gY29tcG9uZW50IHRoZSBvcGVy YXRpb24gaXMgYmVpbmcgcGVyZm9ybWVkIG9uLg0KDQpJUEUgaXRzZWxmIGRvZXMgbm90IG1hbmRh dGUgaG93IHRoZSBzZWN1cml0eSBwcm9wZXJ0eSBzaG91bGQgYmUNCmV2YWx1YXRlZCwgYnV0IHJl bGllcyBvbiBhbiBleHRlbnNpYmxlIHNldCBvZiBleHRlcm5hbCBwcm9wZXJ0eSBwcm92aWRlcnMN CnRvIGV2YWx1YXRlIHRoZSBjb21wb25lbnQuIElQRSBtYWtlcyBpdHMgZGVjaXNpb24gYmFzZWQg b24gcmVmZXJlbmNlDQp2YWx1ZXMgZm9yIHRoZSBzZWxlY3RlZCBwcm9wZXJ0aWVzLCBzcGVjaWZp ZWQgaW4gdGhlIElQRSBwb2xpY3kuDQoNClRoZSByZWZlcmVuY2UgdmFsdWVzIHJlcHJlc2VudCB0 aGUgdmFsdWUgdGhhdCB0aGUgcG9saWN5IHdyaXRlciBhbmQgdGhlDQpsb2NhbCBzeXN0ZW0gYWRt aW5pc3RyYXRvciAoYmFzZWQgb24gdGhlIHBvbGljeSBzaWduYXR1cmUpIHRydXN0IGZvciB0aGUN CnN5c3RlbSB0byBhY2NvbXBsaXNoIHRoZSBkZXNpcmVkIHRhc2tzLg0KDQpPbmUgc3VjaCBwcm92 aWRlciBpcyBmb3IgZXhhbXBsZSBkbS12ZXJpdHksIHdoaWNoIGlzIGFibGUgdG8gcmVwcmVzZW50 DQp0aGUgaW50ZWdyaXR5IHByb3BlcnR5IG9mIGEgcGFydGl0aW9uIChpdHMgaW1tdXRhYmxlIHN0 YXRlKSB3aXRoIGEgZGlnZXN0Lg0KDQo+IFRydXN0IHJlcXVpcmVtZW50cyBhcmUgZXN0YWJsaXNo ZWQgdmlhIElQRSdzIHBvbGljeSwgc291cmNpbmcgbXVsdGlwbGUNCj4gZGlmZmVyZW50IGltcGxl bWVudGF0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbCB0byBidWlsZCBhIGNvaGVzaXZlIHRydXN0DQo+ IG1vZGVsLCBiYXNlZCBvbiBob3cgdGhlIHN5c3RlbSB3YXMgYnVpbHQuDQo+IA0KPiBUcnVzdCwg d2l0aCByZXNwZWN0IHRvIGNvbXB1dGluZywgaXMgYSBjb25jZXB0IHRoYXQgZGVzaWduYXRlcyBh IHNldA0KPiBvZiBlbnRpdGllcyB3aG8gd2lsbCBlbmRvcnNlIGEgc2V0IG9mIHJlc291cmNlcyBh cyBub24tbWFsaWNpb3VzLg0KPiBUcmFkaXRpb25hbGx5LCB0aGlzIGlzIGRvbmUgdmlhIHNpZ25h dHVyZXMsIHdoaWNoIGlzIHRoZSBhY3Qgb2YgZW5kb3JzaW5nDQo+IGEgcmVzb3VyY2UuDQo+IA0K PiBJbnRlZ3JpdHksIG9uIHRoZSBvdGhlciBoYW5kLCBpcyB0aGUgY29uY2VwdCBvZiBlbnN1cmlu ZyB0aGF0IGEgcmVzb3VyY2UNCj4gaGFzIG5vdCBiZWVuIG1vZGlmaWVkIHNpbmNlIGEgcG9pbnQg b2YgdGltZS4gVGhpcyBpcyB0eXBpY2FsbHkgZG9uZSB0aHJvdWdoDQo+IGNyeXB0b2dyYXBoaWMg aGFzaGVzIG9yIHNpZ25hdHVyZXMuDQo+IA0KPiBUcnVzdCBhbmQgaW50ZWdyaXR5IGFyZSB2ZXJ5 IGNsb3NlbHkgdGllZCB0b2dldGhlciBjb25jZXB0cywgYXMgaW50ZWdyaXR5DQo+IGlzIHRoZSB3 YXkgeW91IGNhbiBwcm92ZSB0cnVzdCBmb3IgYSByZXNvdXJjZTsgb3RoZXJ3aXNlIGl0IGNvdWxk IGhhdmUNCj4gYmVlbiBtb2RpZmllZCBieSBhbiBlbnRpdHkgd2hvIGlzIHVudHJ1c3RlZC4NCj4g DQo+IElQRSBwcm92aWRlcyBhIHdheSBmb3IgYSB1c2VyIHRvIGV4cHJlc3MgdHJ1c3QgcmVxdWly ZW1lbnRzIG9mIHJlc291cmNlcywNCj4gYnkgdXNpbmcgcHJlLWV4aXN0aW5nIHN5c3RlbXMgd2hp Y2ggcHJvdmlkZSB0aGUgaW50ZWdyaXR5IGhhbGYgb2YgdGhlDQo+IGVxdWF0aW9uLg0KPiANCj4g SVBFIGlzIGNvbXBpbGVkIHVuZGVyIENPTkZJR19TRUNVUklUWV9JUEUuDQo+IA0KPiBVc2UgQ2Fz ZXMNCj4gLS0tLS0tLS0tDQo+IA0KPiBJUEUgd29ya3MgYmVzdCBpbiBmaXhlZC1mdW5jdGlvbiBk ZXZpY2VzOiBEZXZpY2VzIGluIHdoaWNoIHRoZWlyIHB1cnBvc2UNCj4gaXMgY2xlYXJseSBkZWZp bmVkIGFuZCBub3Qgc3VwcG9zZWQgdG8gYmUgY2hhbmdlZCAoZS5nLiBuZXR3b3JrIGZpcmV3YWxs DQo+IGRldmljZSBpbiBhIGRhdGEgY2VudGVyLCBhbiBJb1QgZGV2aWNlLCBldGNldGVyYSksIHdo ZXJlIGFsbCBzb2Z0d2FyZSBhbmQNCj4gY29uZmlndXJhdGlvbiBpcyBidWlsdCBhbmQgcHJvdmlz aW9uZWQgYnkgdGhlIHN5c3RlbSBvd25lci4NCj4gDQo+IElQRSBpcyBhIGxvbmctd2F5IG9mZiBm b3IgdXNlIGluIGdlbmVyYWwtcHVycG9zZSBjb21wdXRpbmc6DQo+IHRoZSBMaW51eCBjb21tdW5p dHkgYXMgYSB3aG9sZSB0ZW5kcyB0byBmb2xsb3cgYSBkZWNlbnRyYWxpemVkIHRydXN0DQo+IG1v ZGVsLCBrbm93biBhcyB0aGUgV2ViIG9mIFRydXN0LCB3aGljaCBJUEUgaGFzIG5vIHN1cHBvcnQg Zm9yIGFzIG9mIHlldC4NCj4gSW5zdGVhZCwgSVBFIHN1cHBvcnRzIHRoZSBQS0kgVHJ1c3QgTW9k ZWwsIHdoaWNoIGdlbmVyYWxseSBkZXNpZ25hdGVzIGENCj4gc2V0IG9mIGVudGl0aWVzIHRoYXQg cHJvdmlkZSBhIG1lYXN1cmUgYWJzb2x1dGUgdHJ1c3QuDQoNCkl0IGlzIHRydWUgdGhhdCBwYWNr YWdlcyBhcmUgc2lnbmVkIHdpdGggUEdQLCB3aGljaCBpcyBkZWNlbnRyYWxpemVkLA0KYnV0IHRo ZXJlIGlzIGEgc3BlY2lhbCBjYXNlIHdoZXJlIExpbnV4IGRpc3RyaWJ1dGlvbiB2ZW5kb3JzIHRy dXN0DQp0aGVpciBvd24ga2V5cy4gVGhpcywgYXQgbGVhc3QsIHdvdWxkIGFsbG93IHRvIHRydXN0 IHRoZSBzb2Z0d2FyZSBidWlsdA0KYnkgYSBwYXJ0aWN1bGFyIHZlbmRvciAoSSBwb3J0ZWQgRGF2 aWQgSG93ZWxscydzIHdvcmsgb24gUEdQIGtleXMgYW5kDQpzaWduYXR1cmUgdG8gdGhlIGN1cnJl bnQga2VybmVsKS4NCg0KPiBBZGRpdGlvbmFsbHksIHdoaWxlIG1vc3QgcGFja2FnZXMgYXJlIHNp Z25lZCB0b2RheSwgdGhlIGZpbGVzIGluc2lkZQ0KPiB0aGUgcGFja2FnZXMgKGZvciBpbnN0YW5j ZSwgdGhlIGV4ZWN1dGFibGVzKSwgdGVuZCB0byBiZSB1bnNpZ25lZC4gVGhpcw0KPiBtYWtlcyBp dCBkaWZmaWN1bHQgdG8gdXRpbGl6ZSBJUEUgaW4gc3lzdGVtcyB3aGVyZSBhIHBhY2thZ2UgbWFu YWdlciBpcw0KPiBleHBlY3RlZCB0byBiZSBmdW5jdGlvbmFsLCB3aXRob3V0IG1ham9yIGNoYW5n ZXMgdG8gdGhlIHBhY2thZ2UgbWFuYWdlcg0KPiBhbmQgZWNvc3lzdGVtIGJlaGluZCBpdC4NCg0K WWVzLCBSUE1zIGRvbid0IGhhdmUgcGVyIGZpbGUgc2lnbmF0dXJlcyBidXQgaGF2ZSBhIHNpZ25h dHVyZSBvZiB0aGUNCmxpc3Qgb2YgZmlsZSBkaWdlc3RzLCB3aGljaCBpcyBlcXVpdmFsZW50LiBU aGV5IGNvdWxkIGhhdmUgYWxzbyB0aGUgZnN2ZXJpdHkNCmRpZ2VzdHMgKGluc3RlYWQgb2YgdGhl IGZzdmVyaXR5IHNpZ25hdHVyZXMpIHRvIHJlZHVjZSBzaXplIG92ZXJoZWFkLg0KDQpHaXZlbiB0 aGF0IHRoZSBhdXRoZW50aWNpdHkgb2YgUlBNcyBoZWFkZXJzIGNhbiBiZSB2ZXJpZmllZCwgaWYg dGhlDQpQR1Aga2V5IG9mIHRoZSB2ZW5kb3IgaXMgaW5jbHVkZWQgaW4gdGhlIHByaW1hcnkga2V5 cmluZyBvZiB0aGUga2VybmVsLA0KYmVpbmcgYWJsZSB0byBwcm90ZWN0IGZpbGUgb3IgZnN2ZXJp dHkgZGlnZXN0cyBhZ2FpbnN0IHRhbXBlcmluZyBieQ0KdXNlciBzcGFjZSBhbmQgYmVpbmcgYWJs ZSB0byBxdWVyeSB0aGVtIChlLmcuIHdpdGggRElHTElNKSBleHRlbmRzDQp0aGUgYXBwbGljYWJp bGl0eSBvZiBJUEUgdG8gZ2VuZXJhbCBwdXJwb3NlIE9TZXMuDQoNCj4gUG9saWN5Og0KPiAtLS0t LS0tDQo+IA0KPiBJUEUgcG9saWN5IGlzIGEgcGxhaW4tdGV4dCBbI11fIHBvbGljeSBjb21wb3Nl ZCBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzDQo+IG92ZXIgc2V2ZXJhbCBsaW5lcy4gVGhlcmUgaXMg b25lIHJlcXVpcmVkIGxpbmUsIGF0IHRoZSB0b3Agb2YgdGhlDQo+IHBvbGljeSwgaW5kaWNhdGlu ZyB0aGUgcG9saWN5IG5hbWUsIGFuZCB0aGUgcG9saWN5IHZlcnNpb24sIGZvcg0KPiBpbnN0YW5j ZToNCj4gDQo+ICAgcG9saWN5X25hbWU9IkV4IFBvbGljeSIgcG9saWN5X3ZlcnNpb249MC4wLjAN Cj4gDQo+IFRoZSBwb2xpY3kgdmVyc2lvbiBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgdmVyc2lvbiBv ZiB0aGUgcG9saWN5IChOT1QgdGhlDQo+IHBvbGljeSBzeW50YXggdmVyc2lvbikuIFRoaXMgaXMg dXNlZCB0byBwcmV2ZW50IHJvbGwtYmFjayBvZiBwb2xpY3kgdG8NCj4gcG90ZW50aWFsbHkgaW5z ZWN1cmUgcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIHBvbGljeS4NCj4gDQo+IFRoZSBuZXh0IHBv cnRpb24gb2YgSVBFIHBvbGljeSwgYXJlIHJ1bGVzLiBSdWxlcyBhcmUgZm9ybWVkIGJ5IGtleT12 YWx1ZQ0KPiBwYWlycywga25vd24gYXMgcHJvcGVydGllcy4gSVBFIHJ1bGVzIHJlcXVpcmUgdHdv IHByb3BlcnRpZXM6ICJhY3Rpb24iLA0KDQpCZXR0ZXI6DQoNCklQRSBydWxlcyByZXF1aXJlIHR3 byBrZXlzOg0KDQo+IHdoaWNoIGRldGVybWluZXMgd2hhdCBJUEUgZG9lcyB3aGVuIGl0IGVuY291 bnRlcnMgYSBtYXRjaCBhZ2FpbnN0IHRoZQ0KPiBwb2xpY3ksIGFuZCAib3AiLCB3aGljaCBkZXRl cm1pbmVzIHdoZW4gdGhhdCBydWxlIHNob3VsZCBiZSBldmFsdWF0ZWQuDQo+IFRodXMsIGEgbWlu aW1hbCBydWxlIGlzOg0KPiANCj4gICBvcD1FWEVDVVRFIGFjdGlvbj1BTExPVw0KPiANCj4gVGhp cyBleGFtcGxlIHdpbGwgYWxsb3cgYW55IGV4ZWN1dGlvbi4gQWRkaXRpb25hbCBwcm9wZXJ0aWVz IGFyZSB1c2VkIHRvDQo+IHJlc3RyaWN0IGF0dHJpYnV0ZXMgYWJvdXQgdGhlIGZpbGVzIGJlaW5n IGV2YWx1YXRlZC4gVGhlc2UgcHJvcGVydGllcyBhcmUNCj4gaW50ZW5kZWQgdG8gYmUgZGV0ZXJt aW5pc3RpYyBhdHRyaWJ1dGVzIHRoYXQgYXJlIHJlc2lkZW50IGluIHRoZSBrZXJuZWwuDQo+IEF2 YWlsYWJsZSBwcm9wZXJ0aWVzIGZvciBJUEUgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9u IHBhdGNoIG9mIHRoaXMNCj4gc2VyaWVzLg0KPiANCj4gQSBydWxlIGlzIHJlcXVpcmVkIHRvIGhh dmUgdGhlICJvcCIgcHJvcGVydHkgYXMgdGhlIGZpcnN0IHRva2VuIG9mIGEgcnVsZSwNCj4gYW5k IHRoZSAiYWN0aW9uIiBhcyB0aGUgbGFzdCB0b2tlbiBvZiB0aGUgcnVsZS4gUnVsZXMgYXJlIGV2 YWx1YXRlZA0KPiB0b3AtdG8tYm90dG9tLiBBcyBhIHJlc3VsdCwgYW55IHJldm9jYXRpb24gcnVs ZXMsIG9yIGRlbmllcyBzaG91bGQgYmUNCj4gcGxhY2VkIGVhcmx5IGluIHRoZSBmaWxlIHRvIGVu c3VyZSB0aGF0IHRoZXNlIHJ1bGVzIGFyZSBldmFsdWF0ZWQgYmVmb3JlDQo+IGEgcnVsZSB3aXRo ICJhY3Rpb249QUxMT1ciIGlzIGhpdC4NCj4gDQo+IEFueSB1bmtub3duIHN5bnRheCBpbiBJUEUg cG9saWN5IHdpbGwgcmVzdWx0IGluIGEgZmF0YWwgZXJyb3IgdG8gcGFyc2UNCj4gdGhlIHBvbGlj eS4gVXNlciBtb2RlIGNhbiBpbnRlcnJvZ2F0ZSB0aGUga2VybmVsIHRvIHVuZGVyc3RhbmQgd2hh dA0KPiBwcm9wZXJ0aWVzIGFuZCB0aGUgYXNzb2NpYXRlZCB2ZXJzaW9ucyB0aHJvdWdoIHRoZSBz ZWN1cml0eWZzIG5vZGUsDQo+ICRzZWN1cml0eWZzL2lwZS9jb25maWcsIHdoaWNoIHdpbGwgcmV0 dXJuIGEgc3RyaW5nIG9mIGZvcm06DQo+IA0KPiAgIGtleTE9dmVyc2lvbjENCj4gICBrZXkyPXZl cnNpb24yDQo+ICAgLg0KPiAgIC4NCj4gICAuDQo+ICAga2V5Tj12ZXJzaW9uTg0KPiANCj4gVXNl ci1tb2RlIHNob3VsZCBjb3JyZWxhdGUgdGhlc2UgdmVyc2lvbnMgd2l0aCB0aGUgc3VwcG9ydGVk IHZhbHVlcw0KPiBpZGVudGlmaWVkIGluIHRoZSBkb2N1bWVudGF0aW9uIHRvIGRldGVybWluZSB3 aGV0aGVyIGEgcG9saWN5IHNob3VsZA0KPiBiZSBhY2NlcHRlZCBieSB0aGUgc3lzdGVtIHdpdGhv dXQgYWN0dWFsbHkgdHJ5aW5nIHRvIGRlcGxveSB0aGUgcG9saWN5Lg0KPiANCj4gQWRkaXRpb25h bGx5LCBhIERFRkFVTFQgb3BlcmF0aW9uIG11c3QgYmUgc2V0IGZvciBhbGwgdW5kZXJzdG9vZA0K PiBvcGVyYXRpb25zIHdpdGhpbiBJUEUuIEZvciBwb2xpY2llcyB0byByZW1haW4gY29tcGxldGVs eSBmb3J3YXJkcw0KPiBjb21wYXRpYmxlLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHVzZXJzIGFk ZCBhICJERUZBVUxUIGFjdGlvbj1BTExPVyINCj4gYW5kIG92ZXJyaWRlIHRoZSBkZWZhdWx0cyBv biBhIHBlci1vcGVyYXRpb24gYmFzaXMuDQo+IA0KPiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91 dCB0aGUgcG9saWN5IHN5bnRheCwgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uDQo+IHBhZ2UuDQo+ IA0KPiBFYXJseSBVc2VybW9kZSBQcm90ZWN0aW9uOg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiANCj4gSVBFIGNhbiBiZSBwcm92aWRlZCB3aXRoIGEgcG9saWN5IGF0IHN0YXJ0dXAg dG8gbG9hZCBhbmQgZW5mb3JjZS4NCj4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSBhIG1pbmltYWwg cG9saWN5IHRvIGdldCB0aGUgc3lzdGVtIHRvIGEgc3RhdGUNCj4gd2hlcmUgdXNlcmxhbmQgaXMg c2V0dXAgYW5kIHJlYWR5IHRvIHJlY2VpdmUgY29tbWFuZHMsIGF0IHdoaWNoDQo+IHBvaW50IGEg cG9saWN5IGNhbiBiZSBkZXBsb3llZCB2aWEgc2VjdXJpdHlmcy4gVGhpcyAiYm9vdCBwb2xpY3ki IGNhbiBiZQ0KPiBzcGVjaWZpZWQgdmlhIHRoZSBjb25maWcsIFNFQ1VSSVRZX0lQRV9CT09UX1BP TElDWSwgd2hpY2ggYWNjZXB0cyBhIHBhdGgNCj4gdG8gYSBwbGFpbi10ZXh0IHZlcnNpb24gb2Yg dGhlIElQRSBwb2xpY3kgdG8gYXBwbHkuIFRoaXMgcG9saWN5IHdpbGwgYmUNCj4gY29tcGlsZWQg aW50byB0aGUga2VybmVsLiBJZiBub3Qgc3BlY2lmaWVkLCBJUEUgd2lsbCBiZSBkaXNhYmxlZCB1 bnRpbCBhDQo+IHBvbGljeSBpcyBkZXBsb3llZCBhbmQgYWN0aXZhdGVkIHRocm91Z2ggdGhlIG1l dGhvZCBhYm92ZS4NCj4gDQo+IFBvbGljeSBFeGFtcGxlczoNCj4gLS0tLS0tLS0tLS0tLS0tLQ0K PiANCj4gQWxsb3cgYWxsOg0KPiANCj4gICBwb2xpY3lfbmFtZT0iQWxsb3cgQWxsIiBwb2xpY3lf dmVyc2lvbj0wLjAuMA0KPiAgIERFRkFVTFQgYWN0aW9uPUFMTE9XDQo+IA0KPiBBbGxvdyBvbmx5 IGluaXRpYWwgc3VwZXJibG9jazoNCj4gDQo+ICAgcG9saWN5X25hbWU9IkFsbG93IEFsbCBJbml0 aWFsIFNCIiBwb2xpY3lfdmVyc2lvbj0wLjAuMA0KPiAgIERFRkFVTFQgYWN0aW9uPURFTlkNCj4g DQo+ICAgb3A9RVhFQ1VURSBib290X3ZlcmlmaWVkPVRSVUUgYWN0aW9uPUFMTE9XDQo+IA0KPiBB bGxvdyBhbnkgc2lnbmVkIGRtLXZlcml0eSB2b2x1bWUgYW5kIHRoZSBpbml0aWFsIHN1cGVyYmxv Y2s6DQo+IA0KPiAgIHBvbGljeV9uYW1lPSJBbGxvd1NpZ25lZEFuZEluaXRpYWwiIHBvbGljeV92 ZXJzaW9uPTAuMC4wDQo+ICAgREVGQVVMVCBhY3Rpb249REVOWQ0KPiANCj4gICBvcD1FWEVDVVRF IGJvb3RfdmVyaWZpZWQ9VFJVRSBhY3Rpb249QUxMT1cNCj4gICBvcD1FWEVDVVRFIGRtdmVyaXR5 X3NpZ25hdHVyZT1UUlVFIGFjdGlvbj1BTExPVw0KPiANCj4gUHJvaGliaXQgZXhlY3V0aW9uIGZy b20gYSBzcGVjaWZpYyBkbS12ZXJpdHkgdm9sdW1lOg0KPiANCj4gICBwb2xpY3lfbmFtZT0iQWxs b3dTaWduZWRBbmRJbml0aWFsIiBwb2xpY3lfdmVyc2lvbj0wLjAuMA0KPiAgIERFRkFVTFQgYWN0 aW9uPURFTlkNCj4gDQo+ICAgb3A9RVhFQ1VURQ0KPiBkbXZlcml0eV9yb290aGFzaD00MDFmY2Vj NTk0NDgyM2FlMTJmNjI3MjZlODE4NDQwN2E1ZmE5NTk5NzgzZjAzMGRlYw0KPiAxNDY5MzggYWN0 aW9uPURFTlkNCj4gICBvcD1FWEVDVVRFIGJvb3RfdmVyaWZpZWQ9VFJVRSBhY3Rpb249QUxMT1cN Cj4gICBvcD1FWEVDVVRFIGRtdmVyaXR5X3NpZ25hdHVyZT1UUlVFIGFjdGlvbj1BTExPVw0KPiAN Cj4gQWxsb3cgb25seSBhIHNwZWNpZmljIGRtLXZlcml0eSB2b2x1bWU6DQo+IA0KPiAgIHBvbGlj eV9uYW1lPSJBbGxvd1NpZ25lZEFuZEluaXRpYWwiIHBvbGljeV92ZXJzaW9uPTAuMC4wDQo+ICAg REVGQVVMVCBhY3Rpb249REVOWQ0KPiANCj4gICBvcD1FWEVDVVRFDQo+IGRtdmVyaXR5X3Jvb3Ro YXNoPTQwMWZjZWM1OTQ0ODIzYWUxMmY2MjcyNmU4MTg0NDA3YTVmYTk1OTk3ODNmMDMwZGVjDQo+ IDE0NjkzOCBhY3Rpb249QUxMT1cNCj4gDQo+IERlcGxveWluZyBQb2xpY2llczoNCj4gLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiANCj4gRmlyc3Qgc2lnbiBhIHBsYWluIHRleHQgcG9saWN5LCB3aXRo IGEgY2VydGlmaWNhdGUgdGhhdCBpcyBwcmVzZW50IGluDQo+IHRoZSBTWVNURU1fVFJVU1RFRF9L RVlSSU5HIG9mIHlvdXIgdGVzdCBtYWNoaW5lLiBUaHJvdWdoIG9wZW5zc2wsIHRoZQ0KPiBzaWdu aW5nIGNhbiBiZSBkb25lIHZpYToNCj4gDQo+ICAgb3BlbnNzbCBzbWltZSAtc2lnbiAtaW4gIiRN WV9QT0xJQ1kiIC1zaWduZXIgIiRNWV9DRVJUSUZJQ0FURSIgXA0KPiAgICAgLWlua2V5ICIkTVlf UFJJVkFURV9LRVkiIC1iaW5hcnkgLW91dGZvcm0gZGVyIC1ub2F0dHIgLW5vZGV0YWNoIFwNCj4g ICAgIC1vdXQgIiRNWV9QT0xJQ1kucDdzIg0KPiANCj4gVGhlbiwgc2ltcGx5IGNhdCB0aGUgZmls ZSBpbnRvIHRoZSBJUEUncyAibmV3X3BvbGljeSIgc2VjdXJpdHlmcyBub2RlOg0KPiANCj4gICBj YXQgIiRNWV9QT0xJQ1kucDdzIiA+IC9zeXMva2VybmVsL3NlY3VyaXR5L2lwZS9uZXdfcG9saWN5 DQo+IA0KPiBUaGUgcG9saWN5IHNob3VsZCBub3cgYmUgcHJlc2VudCB1bmRlciB0aGUgcG9saWNp ZXMvIHN1YmRpcmVjdG9yeSwgdW5kZXINCj4gaXRzICJwb2xpY3lfbmFtZSIgYXR0cmlidXRlLg0K PiANCj4gVGhlIHBvbGljeSBpcyBub3cgcHJlc2VudCBpbiB0aGUga2VybmVsIGFuZCBjYW4gYmUg bWFya2VkIGFzIGFjdGl2ZSwNCj4gdmlhIHRoZSBzZWN1cml0eWZzIG5vZGU6DQo+IA0KPiAgIGVj aG8gIjEiID4gIi9zeXMva2VybmVsL3NlY3VyaXR5L2lwZS8kTVlfUE9MSUNZX05BTUUvYWN0aXZl Ig0KPiANCj4gVGhpcyB3aWxsIG5vdyBtYXJrIHRoZSBwb2xpY3kgYXMgYWN0aXZlIGFuZCB0aGUg c3lzdGVtIHdpbGwgYmUgZW5mb3JjaW5nDQo+ICRNWV9QT0xJQ1lfTkFNRS4NCj4gDQo+IFRoZXJl IGlzIG9uZSByZXF1aXJlbWVudCB3aGVuIG1hcmtpbmcgYSBwb2xpY3kgYXMgYWN0aXZlLCB0aGUg cG9saWN5X3ZlcnNpb24NCj4gYXR0cmlidXRlIG11c3QgZWl0aGVyIGluY3JlYXNlLCBvciByZW1h aW4gdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnRseSBydW5uaW5nDQo+IHBvbGljeS4NCj4gDQo+IFBv bGljaWVzIGNhbiBiZSB1cGRhdGVkIHZpYToNCj4gDQo+ICAgY2F0ICIkTVlfVVBEQVRFRF9QT0xJ Q1kucDdzIiA+IFwNCj4gICAgICIvc3lzL2tlcm5lbC9zZWN1cml0eS9pcGUvcG9saWNpZXMvJE1Z X1BPTElDWV9OQU1FL3VwZGF0ZSINCj4gDQo+IEFkZGl0aW9uYWxseSwgcG9saWNpZXMgY2FuIGJl IGRlbGV0ZWQgdmlhIHRoZSAiZGVsZXRlIiBzZWN1cml0eWZzDQo+IG5vZGUuIFNpbXBseSB3cml0 ZSAiMSIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbm9kZSBpbiB0aGUgcG9saWN5IGZvbGRlcjoNCj4g DQo+ICAgZWNobyAiMSIgPiAiL3N5cy9rZXJuZWwvc2VjdXJpdHkvaXBlL3BvbGljaWVzLyRNWV9Q T0xJQ1lfTkFNRS9kZWxldGUiDQo+IA0KPiBUaGVyZSBpcyBvbmx5IG9uZSByZXF1aXJlbWVudCB0 byBkZWxldGUgcG9saWNpZXMsIHRoZSBwb2xpY3kgYmVpbmcNCj4gZGVsZXRlZCBtdXN0IG5vdCBi ZSB0aGUgYWN0aXZlIHBvbGljeS4NCj4gDQo+IE5PVEU6IFRoZSBzZWN1cml0eWZzIGNvbW1hbmRz IHdpbGwgcmVxdWlyZSBDQVBfTUFDX0FETUlOLg0KPiANCj4gSW50ZWdyYXRpb25zOg0KPiAtLS0t LS0tLS0tLS0tDQo+IA0KPiBUaGlzIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIGZzdmVy aXR5IHZpYSBkaWdlc3QgYW5kIHNpZ25hdHVyZQ0KPiAoZnN2ZXJpdHlfc2lnbmF0dXJlIGFuZCBm c3Zlcml0eV9kaWdlc3QpLCBkbS12ZXJpdHkgYnkgZGlnZXN0IGFuZA0KPiBzaWduYXR1cmUgKGRt dmVyaXR5X3NpZ25hdHVyZSBhbmQgZG12ZXJpdHlfcm9vdGhhc2gpLCBhbmQgdHJ1c3QgZm9yDQo+ IHRoZSBpbml0cmFtZnMgKGJvb3RfdmVyaWZpZWQpLg0KDQpWZXJpZnlpbmcgdGhlIGluaXRpYWwg cmFtIGRpc2sgbG9va3MgbGlrZSBhIGJpZyBwcm9ibGVtLiBPbiBnZW5lcmFsDQpwdXJwb3NlIE9T ZXMsIGhhdmluZyBhIHJlZmVyZW5jZSB2YWx1ZSBmb3IgaXQgd291bGQgYmUgdmVyeSBoYXJkLg0K DQpJbnN0ZWFkLCB3ZSB3b3VsZCBzdGlsbCBiZSBhYmxlIHRvIHVzZSBwZXIgZmlsZSByZWZlcmVu Y2UgdmFsdWVzLg0KRXhlY3V0YWJsZSBhbmQgc2hhcmVkIGxpYnJhcmllcyBpbiB0aGUgaW5pdGlh bCByYW0gZGlzayBhcmUgY29waWVkDQpmcm9tIHRoZSBtYWluIE9TLiBXaXRob3V0IGZzdmVyaXR5 IHN1cHBvcnQgaW4gdG1wZnMsIEkgd29uZGVyDQppZiBpdCB3b3VsZCBiZSBzdGlsbCBwb3NzaWJs ZSB0byBtYXJrIHRoZSBmaWxlIGFzIGltbXV0YWJsZSBhbmQgZG8NCmFuIG9uIHRoZSBmbHkgY2Fs Y3VsYXRpb24gb2YgdGhlIHJvb3QgZGlnZXN0Lg0KDQpBcyBhbiBhbHRlcm5hdGl2ZSwgdGhlIElN QSBhcHByb2FjaCBvZiBjYWxjdWxhdGluZyB0aGUgZmlsZSBkaWdlc3QNCmNvdWxkIGJlIHVzZWQg KG9yIElQRSBjb3VsZCBnZXQgdGhlIGZpbGUgZGlnZXN0IGFzIGEgcHJvcGVydHkgZnJvbQ0KdGhl IGludGVncml0eSBzdWJzeXN0ZW0pLg0KDQpSb2JlcnRvDQoNCkhVQVdFSSBURUNITk9MT0dJRVMg RHVlc3NlbGRvcmYgR21iSCwgSFJCIDU2MDYzDQpNYW5hZ2luZyBEaXJlY3RvcjogTGkgUGVuZywg WmhvbmcgUm9uZ2h1YQ0KDQo+IFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gcGF0Y2ggZm9y IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlDQo+IGludGVncmF0aW9ucyBhdmFpbGFibGUuDQo+ IA0KPiBUZXN0aW5nOg0KPiAtLS0tLS0tLQ0KPiANCj4gS1VuaXQgVGVzdHMgYXJlIGF2YWlsYWJs ZS4gUmVjb21tZW5kZWQga3VuaXRjb25maWc6DQo+IA0KPiAgICAgQ09ORklHX0tVTklUPXkNCj4g ICAgIENPTkZJR19TRUNVUklUWT15DQo+ICAgICBDT05GSUdfU0VDVVJJVFlGUz15DQo+ICAgICBD T05GSUdfUEtDUzdfTUVTU0FHRV9QQVJTRVI9eQ0KPiAgICAgQ09ORklHX1NZU1RFTV9EQVRBX1ZF UklGSUNBVElPTj15DQo+ICAgICBDT05GSUdfRlNfVkVSSVRZPXkNCj4gICAgIENPTkZJR19GU19W RVJJVFlfQlVJTFRJTl9TSUdOQVRVUkVTPXkNCj4gICAgIENPTkZJR19CTE9DSz15DQo+ICAgICBD T05GSUdfTUQ9eQ0KPiAgICAgQ09ORklHX0JMS19ERVZfRE09eQ0KPiAgICAgQ09ORklHX0RNX1ZF UklUWT15DQo+ICAgICBDT05GSUdfRE1fVkVSSVRZX1ZFUklGWV9ST09USEFTSF9TSUc9eQ0KPiAN Cj4gICAgIENPTkZJR19TRUNVUklUWV9JUEU9eQ0KPiAgICAgQ09ORklHX1NFQ1VSSVRZX0lQRV9L VU5JVF9URVNUPXkNCj4gICAgIENPTkZJR19JUEVfUFJPUF9CT09UX1ZFUklGSUVEPXkNCj4gICAg IENPTkZJR19JUEVfUFJPUF9ETV9WRVJJVFlfU0lHTkFUVVJFPXkNCj4gICAgIENPTkZJR19JUEVf UFJPUF9ETV9WRVJJVFlfUk9PVEhBU0g9eQ0KPiAgICAgQ09ORklHX0lQRV9QUk9QX0ZTX1ZFUklU WV9TSUdOQVRVUkU9eQ0KPiAgICAgQ09ORklHX0lQRV9QUk9QX0ZTX1ZFUklUWV9ESUdFU1Q9eQ0K PiANCj4gU2ltcGx5IHJ1bjoNCj4gDQo+ICAgICBtYWtlIEFSQ0g9dW0gbXJwcm9wZXINCj4gICAg IC4vdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdC5weSBydW4gLS1rdW5pdGNvbmZpZyA8cGF0aC90 by9jb25maWc+DQo+IA0KPiBBbmQgdGhlIHRlc3RzIHdpbGwgZXhlY3V0ZSBhbmQgcmVwb3J0IHRo ZSByZXN1bHQuIEZvciBtb3JlIGluZGVwdGggdGVzdGluZywNCj4gaXQgd2lsbCByZXF1aXJlIHlv dSB0byBjcmVhdGUgYW5kIG1vdW50IGEgZG0tdmVyaXR5IHZvbHVtZSBvciBmcy12ZXJpdHkNCj4g ZW5hYmxlZCBmaWxlLg0KPiANCj4gRG9jdW1lbnRhdGlvbjoNCj4gLS0tLS0tLS0tLS0tLS0NCj4g DQo+IFRoZXJlIGlzIGJvdGggZG9jdW1lbnRhdGlvbiBhdmFpbGFibGUgb24gZ2l0aHViIGF0DQo+ IGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9pcGUsIGFuZCBEb2N1bWVudGF0aW9uIGluIHRo aXMgcGF0Y2ggc2VyaWVzLA0KPiB0byBiZSBhZGRlZCBpbi10cmVlLiBUaGlzIGluY2x1ZGVzIGFy Y2hpdGVjdHVyYWwgYmxvY2sgZGlhZ3JhbXMuDQo+IA0KPiBLbm93biBHYXBzOg0KPiAtLS0tLS0t LS0tLQ0KPiANCj4gSVBFIGhhcyB0d28ga25vd24gZ2FwczoNCj4gDQo+IDEuIElQRSBjYW5ub3Qg dmVyaWZ5IHRoZSBpbnRlZ3JpdHkgb2YgYW5vbnltb3VzIGV4ZWN1dGFibGUgbWVtb3J5LCBzdWNo IGFzDQo+ICAgdGhlIHRyYW1wb2xpbmVzIGNyZWF0ZWQgYnkgZ2NjIGNsb3N1cmVzIGFuZCBsaWJm ZmkgKDwzLjQuMiksIG9yIEpJVCdkIGNvZGUuDQo+ICAgVW5mb3J0dW5hdGVseSwgYXMgdGhpcyBp cyBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY29kZSwgdGhlcmUgaXMgbm8gd2F5DQo+ICAgZm9yIElQ RSB0byBlbnN1cmUgdGhlIGludGVncml0eSBvZiB0aGlzIGNvZGUgdG8gZm9ybSBhIHRydXN0IGJh c2lzLiBJbiBhbGwNCj4gICBjYXNlcywgdGhlIHJldHVybiByZXN1bHQgZm9yIHRoZXNlIG9wZXJh dGlvbnMgd2lsbCBiZSB3aGF0ZXZlciB0aGUgYWRtaW4NCj4gICBjb25maWd1cmVzIHRoZSBERUZB VUxUIGFjdGlvbiBmb3IgIkVYRUNVVEUiLg0KPiANCj4gMi4gSVBFIGNhbm5vdCB2ZXJpZnkgdGhl IGludGVncml0eSBvZiBpbnRlcnByZXRlZCBsYW5ndWFnZXMnIHByb2dyYW1zIHdoZW4NCj4gICB0 aGVzZSBzY3JpcHRzIGludm9rZWQgdmlhIGBgPGludGVycHJldGVyPiA8ZmlsZT5gYC4gVGhpcyBp cyBiZWNhdXNlIHRoZQ0KPiAgIHdheSBpbnRlcnByZXRlcnMgZXhlY3V0ZSB0aGVzZSBmaWxlcywg dGhlIHNjcmlwdHMgdGhlbXNlbHZlcyBhcmUgbm90DQo+ICAgZXZhbHVhdGVkIGFzIGV4ZWN1dGFi bGUgY29kZSB0aHJvdWdoIG9uZSBvZiBJUEUncyBob29rcy4gSW50ZXJwcmV0ZXJzDQo+ICAgY2Fu IGJlIGVubGlnaHRlbmVkIHRvIHRoZSB1c2FnZSBvZiBJUEUgYnkgdHJ5aW5nIHRvIG1tYXAgYSBm aWxlIGludG8NCj4gICBleGVjdXRhYmxlIG1lbW9yeSAoK1gpLCBhZnRlciBvcGVuaW5nIHRoZSBm aWxlIGFuZCByZXNwb25kaW5nIHRvIHRoZQ0KPiAgIGVycm9yIGNvZGUgYXBwcm9wcmlhdGVseS4g VGhpcyBhbHNvIGFwcGxpZXMgdG8gaW5jbHVkZWQgZmlsZXMsIG9yIGhpZ2gNCj4gICB2YWx1ZSBm aWxlcywgc3VjaCBhcyBjb25maWd1cmF0aW9uIGZpbGVzIG9mIGNyaXRpY2FsIHN5c3RlbSBjb21w b25lbnRzLg0KPiAgIEhvd2V2ZXIsIHRoZXJlIGlzIGEgcGF0Y2hzZXQgdGhhdCBpcyBsb29raW5n IHRvIGFkZHJlc3MgdGhpcyBnYXAgWzFdLg0KPiANCj4gQXBwZW5kaXg6DQo+IC0tLS0tLS0tLQ0K PiANCj4gQS4gSVBFIEdpdGh1YiBSZXBvc2l0b3J5OiBodHRwczovL2dpdGh1Yi5jb20vbWljcm9z b2Z0L2lwZQ0KPiBCLiBJUEUgVXNlcnMnIEd1aWRlOiBEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRl L0xTTS9pcGUucnN0DQo+IA0KPiBSZWZlcmVuY2VzOg0KPiAtLS0tLS0tLS0tLQ0KPiANCj4gWzFd IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIxMTAxMjE5MjQxMC4yMzU2MDkwLTEtbWlj QGRpZ2lrb2QubmV0Lw0KPiANCj4gRkFROg0KPiAtLS0tDQo+IA0KPiBROiBXaGF0J3MgdGhlIGRp ZmZlcmVuY2UgYmV0d2VlbiBvdGhlciBMU01zIHdoaWNoIHByb3ZpZGUgdHJ1c3QtYmFzZWQNCj4g ICBhY2Nlc3MgY29udHJvbCwgZm9yIGluc3RhbmNlLCBJTUE/DQo+IA0KPiBBOiBJTUEgaXMgYSBm YW50YXN0aWMgb3B0aW9uIHdoZW4gbmVlZGluZyBtZWFzdXJlbWVudCBpbiBhZGRpdGlvbiB0byB0 aGUNCj4gICB0cnVzdC1iYXNlZCBhY2Nlc3MgbW9kZWwuIEFsbCBvZiBJTUEgaXMgY2VudGVyZWQg YXJvdW5kIHRoZWlyIG1lYXN1cmVtZW50DQo+ICAgaGFzaGVzLCBzbyB5b3Ugc2F2ZSB0aW1lIHdo ZW4gZG9pbmcgYm90aCBhY3Rpb25zLiBJUEUsIG9uIHRoZSBvdGhlciBoYW5kLA0KPiAgIGlzIGEg aGlnaGx5IHBlcmZvcm1hbnQgc3lzdGVtIHRoYXQgZG9lcyBub3QgcmVseSAoYW5kIGV4cGxpY2l0 bHkgcHJvaGliaXRzKSwNCj4gICBnZW5lcmF0aW5nIGl0cyBvd24gaW50ZWdyaXR5IG1lY2hhbmlz bXMgLSBzZXBhcmF0aW5nIG1lYXN1cmVtZW50IGFuZCBhY2Nlc3MNCj4gICBjb250cm9sLiBTaW1w bHkgcHV0LCBJUEUgcHJvdmlkZXMgb25seSB0aGUgZW5mb3JjZW1lbnQgb2YgdHJ1c3QsIHdoaWxl IG90aGVyDQo+ICAgc3Vic3lzdGVtcyBwcm92aWRlIHRoZSBpbnRlZ3JpdHkgZ3VhcmFudGVlIHRo YXQgSVBFIG5lZWRzIHRvIGRldGVybWluZSB0aGUNCj4gICB0cnVzdCBvZiBhIHJlc291cmNlLiBJ TUEgcHJvdmlkZXMgYm90aCB0aGUgaW50ZWdyaXR5IGd1YXJhbnRlZSwgdGhlDQo+ICAgZW5mb3Jj ZW1lbnQgb2YgdHJ1c3QsIGFuZCBhIHdob2xlIGhvc3Qgb2Ygb3RoZXIgZmVhdHVyZXMgdGhhdCBt YXkgbm90IGJlDQo+ICAgbmVlZGVkLg0KPiANCj4gQ2hhbmdlbG9nOg0KPiAtLS0tLS0tLS0tDQo+ IA0KPiBDaGFuZ2VzIHNpbmNlIHYxOg0KPiAgIFNwbGl0IHRoZSBzZWNvbmQgcGF0Y2ggb2YgdGhl IHByZXZpb3VzIHNlcmllcyBpbnRvIHR3by4NCj4gICBNaW5vciBjb3JyZWN0aW9ucyBpbiB0aGUg Y292ZXItbGV0dGVyIGFuZCBkb2N1bWVudGF0aW9uDQo+ICAgY29tbWVudHMgcmVnYXJkaW5nIENB UF9NQUNfQURNSU4gY2hlY2tzIGluIElQRS4NCj4gDQo+IENoYW5nZXMgc2luY2UgdjI6DQo+ICAg QWRkcmVzcyB2YXJpb3VzIGNvbW1lbnRzIGJ5IEphbm4gSG9ybi4gSGlnaGxpZ2h0czoNCj4gICAg IFN3aXRjaCB2YXJpb3VzIGF1ZGl0IGFsbG9jYXRvcnMgdG8gR0ZQX0tFUk5FTC4NCj4gICAgIFV0 aWxpemUgcmN1X2FjY2Vzc19wb2ludGVyKCkgaW4gdmFyaW91cyBsb2NhdGlvbnMuDQo+ICAgICBT dHJpcCBvdXQgdGhlIGNhY2hpbmcgc3lzdGVtIGZvciBwcm9wZXJ0aWVzDQo+ICAgICBTdHJpcCBj b21tZW50cyBmcm9tIGhlYWRlcnMNCj4gICAgIE1vdmUgZnVuY3Rpb25zIGFyb3VuZCBpbiBwYXRj aGVzDQo+ICAgICBSZW1vdmUga2VybmVsIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzDQo+ICAgICBS ZWNvbmNpbGUgdGhlIHJhY2UgY29uZGl0aW9uIG9uIHRoZSBkZWxldGUgbm9kZSBmb3IgcG9saWN5 IGJ5DQo+ICAgICAgIGV4cGFuZGluZyB0aGUgcG9saWN5IGNyaXRpY2FsIHNlY3Rpb24uDQo+IA0K PiAgIEFkZHJlc3MgYSBmZXcgY29tbWVudHMgYnkgSm9uYXRoYW4gQ29yYmV0IGFyb3VuZCB0aGUg ZG9jdW1lbnRhdGlvbg0KPiAgICAgcGFnZXMgZm9yIElQRS4NCj4gDQo+ICAgRml4IGFuIGlzc3Vl IHdpdGggdGhlIGluaXRpYWxpemF0aW9uIG9mIElQRSBwb2xpY3kgd2l0aCBhICItMCINCj4gICAg IHZlcnNpb24sIGNhdXNlZCBieSBub3QgaW5pdGlhbGl6aW5nIHRoZSBobGlzdCBlbnRyaWVzIGJl Zm9yZQ0KPiAgICAgZnJlZWluZy4NCj4gDQo+IENoYW5nZXMgc2luY2UgdjM6DQo+ICAgQWRkcmVz cyBhIGNvbmNlcm4gYXJvdW5kIElQRSdzIGJlaGF2aW9yIHdpdGggdW5rbm93biBzeW50YXguDQo+ ICAgICBTcGVjaWZpY2FsbHksIG1ha2UgYW55IHVua25vd24gc3ludGF4IGEgZmF0YWwgZXJyb3Ig aW5zdGVhZCBvZiBhDQo+ICAgICB3YXJuaW5nLCBhcyBzdWdnZXN0ZWQgYnkgTWlja2HDq2wgU2Fs YcO8bi4NCj4gICBJbnRyb2R1Y2UgYSBuZXcgc2VjdXJpdHlmcyBub2RlLCAkc2VjdXJpdHlmcy9p cGUvcHJvcGVydHlfY29uZmlnLA0KPiAgICAgd2hpY2ggcHJvdmlkZXMgYSBsaXN0aW5nIG9mIHdo YXQgcHJvcGVydGllcyBhcmUgZW5hYmxlZCBieSB0aGUNCj4gICAgIGtlcm5lbCBhbmQgdGhlaXIg dmVyc2lvbnMuIFRoaXMgYWxsb3dzIHVzZXJtb2RlIHRvIHByZWRpY3Qgd2hhdA0KPiAgICAgcG9s aWNpZXMgc2hvdWxkIGJlIGFsbG93ZWQuDQo+ICAgU3RyaXAgc29tZSBjb21tZW50cyBmcm9tIGMg ZmlsZXMgdGhhdCBJIG1pc3NlZC4NCj4gICBDbGFyaWZ5IHNvbWUgZG9jdW1lbnRhdGlvbiBjb21t ZW50cyBhcm91bmQgJ2Jvb3RfdmVyaWZpZWQnLg0KPiAgICAgV2hpbGUgdGhpcyBjdXJyZW50bHkg ZG9lcyBub3QgZnVuY3Rpb25hbGx5IGNoYW5nZSB0aGUgcHJvcGVydHkNCj4gICAgIGl0c2VsZiwg dGhlIGRpc3RpbmN0aW9uIGlzIGltcG9ydGFudCB3aGVuIElQRSBjYW4gZW5mb3JjZSB2ZXJpZmll ZA0KPiAgICAgcmVhZHMuIEFkZGl0aW9uYWxseSwgJ0tFUk5FTF9SRUFEJyB3YXMgb21pdHRlZCBm cm9tIHRoZSBkb2N1bWVudGF0aW9uLg0KPiAgICAgVGhpcyBoYXMgYmVlbiBjb3JyZWN0ZWQuDQo+ ICAgQ2hhbmdlIFNlY3VyaXR5RlMgYW5kIFNIQTEgdG8gYSByZXZlcnNlIGRlcGVuZGVuY3kuDQo+ ICAgVXBkYXRlIHRoZSBjb3Zlci1sZXR0ZXIgd2l0aCB0aGUgdXBkYXRlZCBiZWhhdmlvciBvZiB1 bmtub3duIHN5bnRheC4NCj4gICBSZW1vdmUgYWxsIHN5c2N0bHMsIG1ha2luZyBhbiBlcXVpdmFs ZW50IGZ1bmN0aW9uIGluIHNlY3VyaXR5ZnMuDQo+ICAgUmV3b3JrIHRoZSBhY3RpdmUvZGVsZXRl IG1lY2hhbmlzbSB0byBiZSBhIG5vZGUgdW5kZXIgdGhlIHBvbGljeSBpbg0KPiAgICAgJHNlY3Vy aXR5ZnMvaXBlL3BvbGljaWVzLg0KPiAgIFRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHBhcmFtZXRl cnMgaXBlLmVuZm9yY2UgYW5kIGlwZS5zdWNjZXNzX2F1ZGl0DQo+ICAgICBoYXZlIHJldHVybmVk IGFzIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBubyBsb25nZXIgZXhwb3NlZCB0aHJvdWdoDQo+ICAg ICBzeXNmcy4NCj4gDQo+IENoYW5nZXMgc2luY2UgdjQ6DQo+ICAgQ29ycmVjdCBzb21lIGdyYW1t YXRpY2FsIGVycm9ycyByZXBvcnRlZCBieSBSYW5keSBEdW5sYXAuDQo+ICAgRml4IHNvbWUgd2Fy bmluZ3MgcmVwb3J0ZWQgYnkga2VybmVsIHRlc3QgYm90Lg0KPiAgIENoYW5nZSBjb252ZW50aW9u IGFyb3VuZCBzZWN1cml0eV9iZGV2X3NldHNlY3VyaXR5LiAtRU5PU1lTDQo+ICAgICBpcyBub3cg ZXhwZWN0ZWQgaWYgYW4gTFNNIGRvZXMgbm90IGltcGxlbWVudCBhIHBhcnRpY3VsYXIgQG5hbWUs DQo+ICAgICBhcyBzdWdnZXN0ZWQgYnkgQ2FzZXkgU2NoYXVmbGVyLg0KPiAgIE1pbm9yIHN0cmlu ZyBjb3JyZWN0aW9ucyByZWxhdGVkIHRvIHRoZSBtb3ZlIGZyb20gc3lzZnMgdG8gc2VjdXJpdHlm cw0KPiAgIENvcnJlY3QgYSBzcGVsbGluZyBvZiBhbiAjaWZkZWYgZm9yIHRoZSBwZXJtaXNzaXZl IGFyZ3VtZW50Lg0KPiAgIEFkZCB0aGUga2VybmVsIHBhcmFtZXRlcnMgcmUtYWRkZWQgdG8gdGhl IGRvY3VtZW50YXRpb24uDQo+ICAgRml4IGEgbWlub3IgYnVnIHdoZXJlIHRoZSBtb2RlIGJlaW5n IGF1ZGl0ZWQgb24gcGVybWlzc2l2ZSBzd2l0Y2gNCj4gICAgIHdhcyB0aGUgb3JpZ2luYWwgbW9k ZSwgbm90IHRoZSBtb2RlIGJlaW5nIHN3YXBwZWQgdG8uDQo+ICAgQ2xlYW51cCBkb2MgY29tbWVu dHMsIGZpeCBzb21lIHdoaXRlc3BhY2UgYWxpZ25tZW50IGlzc3Vlcy4NCj4gDQo+IENoYW5nZXMg c2luY2UgdjU6DQo+ICAgQ2hhbmdlIGlmIHN0YXRlbWVudCBjb25kaXRpb24gaW4gc2VjdXJpdHlf YmRldl9zZXRzZWN1cml0eSB0byBiZQ0KPiAgICAgbW9yZSBjb25jaXNlLCBhcyBzdWdnZXN0ZWQg YnkgQ2FzZXkgU2NoYXVmbGVyIGFuZCBBbCBWaXJvDQo+ICAgRHJvcCB0aGUgNnRoIHBhdGNoIGlu IHRoZSBzZXJpZXMsICJkbS12ZXJpdHkgbW92ZSBzaWduYXR1cmUgY2hlY2suLi4iDQo+ICAgICBk dWUgdG8gbnVtZXJvdXMgaXNzdWVzLCBhbmQgaXQgdWx0aW1hdGVseSBwcm92aWRpbmcgbm8gcmVh bCB2YWx1ZS4NCj4gICBGaXggdGhlIHBhdGNoIHRyZWUgLSB0aGUgcHJldmlvdXMgaXRlcmF0aW9u IGFwcGVhcnMgdG8gaGF2ZSBiZWVuIGluIGENCj4gICAgIHRvcm4gc3RhdGUgKHBhdGNoZXMgOCs5 IHdlcmUgbWVyZ2VkKS4gVGhpcyBoYXMgc2luY2UgYmVlbiBjb3JyZWN0ZWQuDQo+IA0KPiBDaGFu Z2VzIHNpbmNlIHY2Og0KPiAgICogUmV3b3JkIGNvdmVyIGxldHRlciB0byBtb3JlIGFjY3VyYXRl IGNvbnZleSBJUEUncyBwdXJwb3NlDQo+ICAgICBhbmQgbGF0ZXN0IHVwZGF0ZXMuDQo+ICAgKiBS ZWZhY3RvciBzZXJpZXMgdG86DQo+ICAgICAgIDEuIFN1cHBvcnQgYSBjb250ZXh0IHN0cnVjdHVy ZSwgZW5hYmxpbmc6DQo+ICAgICAgICAgICAxLiBFYXNpZXIgVGVzdGluZyB2aWEgS1VOSVQNCj4g ICAgICAgICAgIDIuIEEgYmV0dGVyIGFyY2hpdGVjdHVyZSBmb3IgZnV0dXJlIGRlc2lnbnMNCj4g ICAgICAgMi4gTWFrZSBwYXJzZXIgY29kZSBjbGVhbmVyDQo+ICAgKiBNb3ZlIHBhdGNoIDAxLzEy IHRvIFsxNC8xNl0gb2YgdGhlIHNlcmllcw0KPiAgICogU3BsaXQgdXAgcGF0Y2ggMDIvMTIgaW50 byBmb3VyIHBhcnRzOg0KPiAgICAgICAxLiBjb250ZXh0IGNyZWF0aW9uIFswMS8xNl0NCj4gICAg ICAgMi4gYXVkaXQgWzA3LzE2XQ0KPiAgICAgICAzLiBldmFsdWF0aW9uIGxvb3AgWzAzLzE2XQ0K PiAgICAgICA0LiBhY2Nlc3MgY29udHJvbCBob29rcyBbMDUvMTZdDQo+ICAgICAgIDUuIHBlcm1p c3NpdmUgbW9kZSBbMDgvMTZdDQo+ICAgKiBTcGxpdCB1cCBwYXRjaCAwMy8xMiBpbnRvIHR3byBw YXJ0czoNCj4gICAgICAgMS4gcGFyc2VyIFswMi8xNl0NCj4gICAgICAgMi4gdXNlcnNwYWNlIGlu dGVyZmFjZSBbMDQvMTZdDQo+ICAgKiBSZXdvcmQgYW5kIHJlZmFjdG9yIHBhdGNoIDA0LzEyIHRv IFswOS8xNl0NCj4gICAqIFNxdWFzaCBwYXRjaCAwNS8xMiwgMDcvMTIsIDA5LzEyIHRvIFsxMC8x Nl0NCj4gICAqIFNxdWFzaCBwYXRjaCAwOC8xMiwgMTAvMTIgdG8gWzExLzE2XQ0KPiAgICogQ2hh bmdlIGF1ZGl0IHJlY29yZHMgdG8gTUFDIHJlZ2lvbiAoMTRYWCkgZnJvbSBJbnRlZ3JpdHkgcmVn aW9uICgxOFhYKQ0KPiAgICogQWRkIEZTVmVyaXR5IFN1cHBvcnQNCj4gICAqIEludGVyZmFjZSBj aGFuZ2VzOg0KPiAgICAgICAxLiAicmF3IiB3YXMgcmVuYW1lZCB0byAicGtjczciIGFuZCBtYWRl IHJlYWQgb25seQ0KPiAgICAgICAyLiAicmF3IidzIHdyaXRlIGZ1bmN0aW9uYWxpdHkgKHVwZGF0 ZSBhIHBvbGljeSkgbW92ZWQgdG8gInVwZGF0ZSINCj4gICAgICAgMy4gaW50cm9kdWNlZCAidmVy c2lvbiIsICJwb2xpY3lfbmFtZSIgbm9kZXMuDQo+ICAgICAgIDQuICJjb250ZW50IiByZW5hbWVk IHRvICJwb2xpY3kiDQo+ICAgICAgIDUuIFRoZSBib290IHBvbGljeSBjYW4gbm93IGJlIHVwZGF0 ZWQgbGlrZSBhbnkgb3RoZXIgcG9saWN5Lg0KPiAgICogQWRkIGFkZGl0aW9uYWwgZGV2ZWxvcGVy LWxldmVsIGRvY3VtZW50YXRpb24NCj4gICAqIFVwZGF0ZSBhZG1pbi1ndWlkZSBkb2NzIHRvIHJl ZmxlY3QgY2hhbmdlcy4NCj4gICAqIEt1bml0IHRlc3RzDQo+ICAgKiBEcm9wcGVkIENPTkZJR19T RUNVUklUWV9JUEVfUEVSTUlTU0lWRV9TV0lUQ0ggLSBmdW5jdGlvbmFsaXR5IGNhbg0KPiAgICAg ZWFzaWx5IGNvbWUgbGF0ZXIgd2l0aCBhIHNtYWxsIHBhdGNoLg0KPiAgICogVXNlIHBhcnRpdGlv bjAgZm9yIGJsb2NrX2RldmljZSBmb3IgZG0tdmVyaXR5IHBhdGNoDQo+IA0KPiBEZXZlbiBCb3dl cnMgKDE0KToNCj4gICBzZWN1cml0eTogYWRkIGlwZSBsc20gJiBpbml0aWFsIGNvbnRleHQgY3Jl YXRpb24NCj4gICBpcGU6IGFkZCBwb2xpY3kgcGFyc2VyDQo+ICAgaXBlOiBhZGQgZXZhbHVhdGlv biBsb29wDQo+ICAgaXBlOiBhZGQgdXNlcnNwYWNlIGludGVyZmFjZQ0KPiAgIGlwZTogYWRkIExT TSBob29rcyBvbiBleGVjdXRpb24gYW5kIGtlcm5lbCByZWFkDQo+ICAgdWFwaXxhdWRpdDogYWRk IHRydXN0IGF1ZGl0IG1lc3NhZ2UgZGVmaW5pdGlvbnMNCj4gICBpcGU6IGFkZCBhdWRpdGluZyBz dXBwb3J0DQo+ICAgaXBlOiBhZGQgcGVybWlzc2l2ZSB0b2dnbGUNCj4gICBpcGU6IGludHJvZHVj ZSAnYm9vdF92ZXJpZmllZCcgYXMgYSB0cnVzdCBwcm92aWRlcg0KPiAgIGZzfGRtLXZlcml0eTog YWRkIGJsb2NrX2RldiBMU00gYmxvYiBhbmQgc3VibWl0IGRtLXZlcml0eSBkYXRhDQo+ICAgaXBl OiBhZGQgc3VwcG9ydCBmb3IgZG0tdmVyaXR5IGFzIGEgdHJ1c3QgcHJvdmlkZXINCj4gICBzY3Jp cHRzOiBhZGQgYm9vdCBwb2xpY3kgZ2VuZXJhdGlvbiBwcm9ncmFtDQo+ICAgaXBlOiBrdW5pdCB0 ZXN0cw0KPiAgIGRvY3VtZW50YXRpb246IGFkZCBpcGUgZG9jdW1lbnRhdGlvbg0KPiANCj4gRmFu IFd1ICgyKToNCj4gICBmc3Zlcml0eXxzZWN1cml0eTogYWRkIHNlY3VyaXR5IGhvb2tzIHRvIGZz dmVyaXR5IGRpZ2VzdCBhbmQgc2lnbmF0dXJlDQo+ICAgaXBlOiBlbmFibGUgc3VwcG9ydCBmb3Ig ZnMtdmVyaXR5IGFzIGEgdHJ1c3QgcHJvdmlkZXINCj4gDQo+ICBEb2N1bWVudGF0aW9uL2FkbWlu LWd1aWRlL0xTTS9pbmRleC5yc3QgICAgICAgfCAgICAxICsNCj4gIERvY3VtZW50YXRpb24vYWRt aW4tZ3VpZGUvTFNNL2lwZS5yc3QgICAgICAgICB8ICA1ODcgKysrKysrKysrKw0KPiAgLi4uL2Fk bWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCAgICAgICAgIHwgICAxMiArDQo+ICBEb2N1 bWVudGF0aW9uL3NlY3VyaXR5L2luZGV4LnJzdCAgICAgICAgICAgICAgfCAgICAxICsNCj4gIERv Y3VtZW50YXRpb24vc2VjdXJpdHkvaXBlLnJzdCAgICAgICAgICAgICAgICB8ICAzMzkgKysrKysr DQo+ICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5 ICsNCj4gIGJsb2NrL2JkZXYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDcgKw0KPiAgZHJpdmVycy9tZC9kbS12ZXJpdHktdGFyZ2V0LmMgICAgICAgICAgICAgICAgIHwg ICAyMCArLQ0KPiAgZHJpdmVycy9tZC9kbS12ZXJpdHktdmVyaWZ5LXNpZy5jICAgICAgICAgICAg IHwgICAxNiArLQ0KPiAgZHJpdmVycy9tZC9kbS12ZXJpdHktdmVyaWZ5LXNpZy5oICAgICAgICAg ICAgIHwgICAxMCArLQ0KPiAgZnMvdmVyaXR5L29wZW4uYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAxMiArDQo+ICBmcy92ZXJpdHkvc2lnbmF0dXJlLmMgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICA1ICstDQo+ICBpbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgg ICAgICAgICAgICAgfCAgIDE2ICsNCj4gIGluY2x1ZGUvbGludXgvYmxrX3R5cGVzLmggICAgICAg ICAgICAgICAgICAgICB8ICAgIDEgKw0KPiAgaW5jbHVkZS9saW51eC9kZXZpY2UtbWFwcGVyLmgg ICAgICAgICAgICAgICAgIHwgICAgMyArDQo+ICBpbmNsdWRlL2xpbnV4L2ZzdmVyaXR5LmggICAg ICAgICAgICAgICAgICAgICAgfCAgICAzICsNCj4gIGluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVm cy5oICAgICAgICAgICAgICAgICB8ICAgIDUgKw0KPiAgaW5jbHVkZS9saW51eC9sc21faG9va3Mu aCAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArDQo+ICBpbmNsdWRlL2xpbnV4L3NlY3VyaXR5 LmggICAgICAgICAgICAgICAgICAgICAgfCAgIDIyICsNCj4gIGluY2x1ZGUvdWFwaS9saW51eC9h dWRpdC5oICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKw0KPiAgc2NyaXB0cy9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArDQo+ICBzY3JpcHRzL2lwZS9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsNCj4gIHNjcmlwdHMvaXBlL3Bv bGdlbi8uZ2l0aWdub3JlICAgICAgICAgICAgICAgICB8ICAgIDEgKw0KPiAgc2NyaXB0cy9pcGUv cG9sZ2VuL01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwgICAgNiArDQo+ICBzY3JpcHRzL2lw ZS9wb2xnZW4vcG9sZ2VuLmMgICAgICAgICAgICAgICAgICAgfCAgMTQ1ICsrKw0KPiAgc2VjdXJp dHkvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArLQ0KPiAgc2Vj dXJpdHkvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArDQo+ICBz ZWN1cml0eS9pcGUvLmdpdGlnbm9yZSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsNCj4g IHNlY3VyaXR5L2lwZS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMDAgKysN Cj4gIHNlY3VyaXR5L2lwZS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzkg Kw0KPiAgc2VjdXJpdHkvaXBlL2F1ZGl0LmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMw NCArKysrKw0KPiAgc2VjdXJpdHkvaXBlL2F1ZGl0LmggICAgICAgICAgICAgICAgICAgICAgICAg IHwgICA0MSArDQo+ICBzZWN1cml0eS9pcGUvY3R4LmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMzgxICsrKysrKw0KPiAgc2VjdXJpdHkvaXBlL2N0eC5oICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA0MyArDQo+ICBzZWN1cml0eS9pcGUvY3R4X3Rlc3QuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAgNzMyICsrKysrKysrKysrKw0KPiAgc2VjdXJpdHkvaXBlL2V2YWwuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIzNyArKysrDQo+ICBzZWN1cml0eS9pcGUvZXZh bC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDU3ICsNCj4gIHNlY3VyaXR5L2lwZS9m cy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMjcgKysrKysrDQo+ICBzZWN1cml0 eS9pcGUvZnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsNCj4gIHNlY3Vy aXR5L2lwZS9ob29rcy5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMjggKysrKysrDQo+ ICBzZWN1cml0eS9pcGUvaG9va3MuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDU2ICsN Cj4gIHNlY3VyaXR5L2lwZS9pcGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNDMg KysrDQo+ICBzZWN1cml0eS9pcGUvaXBlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDI3ICsNCj4gIHNlY3VyaXR5L2lwZS9pcGVfcGFyc2VyLmggICAgICAgICAgICAgICAgICAgICB8 ICAgNTkgKw0KPiAgc2VjdXJpdHkvaXBlL21vZHVsZXMuYyAgICAgICAgICAgICAgICAgICAgICAg IHwgIDEzNCArKysNCj4gIHNlY3VyaXR5L2lwZS9tb2R1bGVzLmggICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMTcgKw0KPiAgc2VjdXJpdHkvaXBlL21vZHVsZXMvS2NvbmZpZyAgICAgICAgICAg ICAgICAgIHwgICA2NiArKw0KPiAgc2VjdXJpdHkvaXBlL21vZHVsZXMvTWFrZWZpbGUgICAgICAg ICAgICAgICAgIHwgICAxMiArDQo+ICBzZWN1cml0eS9pcGUvbW9kdWxlcy9ib290X3ZlcmlmaWVk LmMgICAgICAgICAgfCAgIDI0ICsNCj4gIHNlY3VyaXR5L2lwZS9tb2R1bGVzL2RtdmVyaXR5X3Jv b3RoYXNoLmMgICAgICB8ICAgODAgKysNCj4gIHNlY3VyaXR5L2lwZS9tb2R1bGVzL2RtdmVyaXR5 X3NpZ25hdHVyZS5jICAgICB8ICAgMjUgKw0KPiAgc2VjdXJpdHkvaXBlL21vZHVsZXMvZnN2ZXJp dHlfZGlnZXN0LmMgICAgICAgIHwgICA4MCArKw0KPiAgc2VjdXJpdHkvaXBlL21vZHVsZXMvZnN2 ZXJpdHlfc2lnbmF0dXJlLmMgICAgIHwgICAzMyArDQo+ICBzZWN1cml0eS9pcGUvbW9kdWxlcy9p cGVfbW9kdWxlLmggICAgICAgICAgICAgfCAgIDQwICsNCj4gIHNlY3VyaXR5L2lwZS9wYXJzZXJz LmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMzkgKysrDQo+ICBzZWN1cml0eS9pcGUvcGFy c2Vycy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEyICsNCj4gIHNlY3VyaXR5L2lwZS9w YXJzZXJzL2RlZmF1bHQuYyAgICAgICAgICAgICAgICB8ICAxMDYgKysNCj4gIHNlY3VyaXR5L2lw ZS9wYXJzZXJzL3BvbGljeV9oZWFkZXIuYyAgICAgICAgICB8ICAxMjYgKysNCj4gIHNlY3VyaXR5 L2lwZS9wb2xpY3kuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwMzcgKysrKysrKysrKysr KysrKysNCj4gIHNlY3VyaXR5L2lwZS9wb2xpY3kuaCAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAxMTMgKysNCj4gIHNlY3VyaXR5L2lwZS9wb2xpY3lfcGFyc2VyX3Rlc3RzLmMgICAgICAgICAg ICB8ICAyOTkgKysrKysNCj4gIHNlY3VyaXR5L2lwZS9wb2xpY3lmcy5jICAgICAgICAgICAgICAg ICAgICAgICB8ICA1MjggKysrKysrKysrDQo+ICBzZWN1cml0eS9zZWN1cml0eS5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDc2ICstDQo+ICA2MyBmaWxlcyBjaGFuZ2VkLCA3MDY5IGlu c2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3Vt ZW50YXRpb24vYWRtaW4tZ3VpZGUvTFNNL2lwZS5yc3QNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBE b2N1bWVudGF0aW9uL3NlY3VyaXR5L2lwZS5yc3QNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzY3Jp cHRzL2lwZS9NYWtlZmlsZQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNjcmlwdHMvaXBlL3BvbGdl bi8uZ2l0aWdub3JlDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2NyaXB0cy9pcGUvcG9sZ2VuL01h a2VmaWxlDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2NyaXB0cy9pcGUvcG9sZ2VuL3BvbGdlbi5j DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlLy5naXRpZ25vcmUNCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvS2NvbmZpZw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IHNlY3VyaXR5L2lwZS9NYWtlZmlsZQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lw ZS9hdWRpdC5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL2F1ZGl0LmgNCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvY3R4LmMNCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBzZWN1cml0eS9pcGUvY3R4LmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9p cGUvY3R4X3Rlc3QuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9ldmFsLmMN Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvZXZhbC5oDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgc2VjdXJpdHkvaXBlL2ZzLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0 eS9pcGUvZnMuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9ob29rcy5jDQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL2hvb2tzLmgNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzZWN1cml0eS9pcGUvaXBlLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0 eS9pcGUvaXBlLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvaXBlX3BhcnNl ci5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL21vZHVsZXMuYw0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9tb2R1bGVzLmgNCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBzZWN1cml0eS9pcGUvbW9kdWxlcy9LY29uZmlnDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg c2VjdXJpdHkvaXBlL21vZHVsZXMvTWFrZWZpbGUNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1 cml0eS9pcGUvbW9kdWxlcy9ib290X3ZlcmlmaWVkLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBz ZWN1cml0eS9pcGUvbW9kdWxlcy9kbXZlcml0eV9yb290aGFzaC5jDQo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgc2VjdXJpdHkvaXBlL21vZHVsZXMvZG12ZXJpdHlfc2lnbmF0dXJlLmMNCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvbW9kdWxlcy9mc3Zlcml0eV9kaWdlc3QuYw0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9tb2R1bGVzL2ZzdmVyaXR5X3NpZ25hdHVy ZS5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL21vZHVsZXMvaXBlX21vZHVs ZS5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL3BhcnNlcnMuYw0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9wYXJzZXJzL01ha2VmaWxlDQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL3BhcnNlcnMvZGVmYXVsdC5jDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgc2VjdXJpdHkvaXBlL3BhcnNlcnMvcG9saWN5X2hlYWRlci5jDQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL3BvbGljeS5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg c2VjdXJpdHkvaXBlL3BvbGljeS5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBl L3BvbGljeV9wYXJzZXJfdGVzdHMuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lw ZS9wb2xpY3lmcy5jDQo+IA0KPiAtLQ0KPiAyLjMzLjANCg0K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C249C433F5 for ; Mon, 25 Oct 2021 11:31:08 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 939E660F46 for ; Mon, 25 Oct 2021 11:31:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 939E660F46 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=redhat.com Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-166-wyOY-VlKOYmQE-GSqdzjeg-1; Mon, 25 Oct 2021 07:31:03 -0400 X-MC-Unique: wyOY-VlKOYmQE-GSqdzjeg-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 640F018D6A37; Mon, 25 Oct 2021 11:30:58 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4A75B5D6D5; Mon, 25 Oct 2021 11:30:57 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 510D64A703; Mon, 25 Oct 2021 11:30:55 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 19PBUqn5020529 for ; Mon, 25 Oct 2021 07:30:52 -0400 Received: by smtp.corp.redhat.com (Postfix) id 455A540CFD10; Mon, 25 Oct 2021 11:30:52 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3F35640CFD0E for ; Mon, 25 Oct 2021 11:30:52 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1DDFE899EC3 for ; Mon, 25 Oct 2021 11:30:52 +0000 (UTC) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-444-OiQ5KGLbOCu-ylv2XGe1XQ-1; Mon, 25 Oct 2021 07:30:48 -0400 X-MC-Unique: OiQ5KGLbOCu-ylv2XGe1XQ-1 Received: from fraeml710-chm.china.huawei.com (unknown [172.18.147.226]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4HdCNk19pCz67NwX; Mon, 25 Oct 2021 19:27:34 +0800 (CST) Received: from fraeml714-chm.china.huawei.com (10.206.15.33) by fraeml710-chm.china.huawei.com (10.206.15.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.15; Mon, 25 Oct 2021 13:30:45 +0200 Received: from fraeml714-chm.china.huawei.com ([10.206.15.33]) by fraeml714-chm.china.huawei.com ([10.206.15.33]) with mapi id 15.01.2308.015; Mon, 25 Oct 2021 13:30:45 +0200 From: Roberto Sassu To: "deven.desai@linux.microsoft.com" , "corbet@lwn.net" , "axboe@kernel.dk" , "agk@redhat.com" , "snitzer@redhat.com" , "ebiggers@kernel.org" , "tytso@mit.edu" , "paul@paul-moore.com" , "eparis@redhat.com" , "jmorris@namei.org" , "serge@hallyn.com" Thread-Topic: [RFC PATCH v7 00/16] Integrity Policy Enforcement (IPE) Thread-Index: AQHXwGWW2AQMU2k7W0iAf+goQ1/2GavjhjlA Date: Mon, 25 Oct 2021 11:30:45 +0000 Message-ID: <0a61327839b841a1a9d915a09d1d8b8c@huawei.com> References: <1634151995-16266-1-git-send-email-deven.desai@linux.microsoft.com> In-Reply-To: <1634151995-16266-1-git-send-email-deven.desai@linux.microsoft.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.221.98.153] MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-MIME-Autoconverted: from base64 to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 19PBUqn5020529 X-loop: dm-devel@redhat.com Cc: "linux-security-module@vger.kernel.org" , "linux-doc@vger.kernel.org" , "jannh@google.com" , "linux-fscrypt@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-block@vger.kernel.org" , "dm-devel@redhat.com" , "linux-audit@redhat.com" , "linux-integrity@vger.kernel.org" Subject: Re: [dm-devel] [RFC PATCH v7 00/16] Integrity Policy Enforcement (IPE) X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dm-devel-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiBGcm9tOiBkZXZlbi5kZXNhaUBsaW51eC5taWNyb3NvZnQuY29tCj4gW21haWx0bzpkZXZlbi5k ZXNhaUBsaW51eC5taWNyb3NvZnQuY29tXQo+IEZyb206IERldmVuIEJvd2VycyA8ZGV2ZW4uZGVz YWlAbGludXgubWljcm9zb2Z0LmNvbT4KPiAKPiBPdmVydmlldzoKPiAtLS0tLS0tLS0KPiAKPiBJ UEUgaXMgYSBMaW51eCBTZWN1cml0eSBNb2R1bGUgd2hpY2ggdGFrZXMgYSBjb21wbGltZW50YXJ5 IGFwcHJvYWNoIHRvCj4gYWNjZXNzIGNvbnRyb2wuIFdoZXJlYXMgZXhpc3Rpbmcgc3lzdGVtcyBh cHByb2FjaCB1c2UgbGFiZWxzIG9yIHBhdGhzCj4gd2hpY2ggY29udHJvbCBhY2Nlc3MgdG8gYSBy ZXNvdXJjZSwgSVBFIGNvbnRyb2xzIGFjY2VzcyB0byBhIHJlc291cmNlCj4gYmFzZWQgb24gdGhl IHN5c3RlbSdzIHRydXN0IG9mIHNhaWQgcmVzb3VyY2UuCgpUbyBtZSwgaXQgZG9lcyBub3QgZ2l2 ZSBhIHBhcnRpY3VsYXJseSBwcmVjaXNlIGlkZWEgb2Ygd2hhdCBJUEUgaXMgYWJvdXQuCgpJdCB3 b3VsZCBoYXZlIGJlZW4gbW9yZSBjbGVhciwgYXNzdW1pbmcgdGhhdCBJIHVuZGVyc3Rvb2QgaXQg Y29ycmVjdGx5LAppZiB5b3UgaGF2ZSBzYWlkOgoKV2hlcmVhcyBleGlzdGluZyBtYW5kYXRvcnkg YWNjZXNzIGNvbnRyb2wgbWVjaGFuaXNtcyBiYXNlIHRoZWlyCmRlY2lzaW9ucyBvbiBsYWJlbHMg YW5kIHBhdGhzLCBJUEUgaW5zdGVhZCBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90CmFuIG9wZXJh dGlvbiBzaG91bGQgYmUgYWxsb3dlZCBiYXNlZCBvbiBpbW11dGFibGUgc2VjdXJpdHkgcHJvcGVy dGllcwpvZiB0aGUgc3lzdGVtIGNvbXBvbmVudCB0aGUgb3BlcmF0aW9uIGlzIGJlaW5nIHBlcmZv cm1lZCBvbi4KCklQRSBpdHNlbGYgZG9lcyBub3QgbWFuZGF0ZSBob3cgdGhlIHNlY3VyaXR5IHBy b3BlcnR5IHNob3VsZCBiZQpldmFsdWF0ZWQsIGJ1dCByZWxpZXMgb24gYW4gZXh0ZW5zaWJsZSBz ZXQgb2YgZXh0ZXJuYWwgcHJvcGVydHkgcHJvdmlkZXJzCnRvIGV2YWx1YXRlIHRoZSBjb21wb25l bnQuIElQRSBtYWtlcyBpdHMgZGVjaXNpb24gYmFzZWQgb24gcmVmZXJlbmNlCnZhbHVlcyBmb3Ig dGhlIHNlbGVjdGVkIHByb3BlcnRpZXMsIHNwZWNpZmllZCBpbiB0aGUgSVBFIHBvbGljeS4KClRo ZSByZWZlcmVuY2UgdmFsdWVzIHJlcHJlc2VudCB0aGUgdmFsdWUgdGhhdCB0aGUgcG9saWN5IHdy aXRlciBhbmQgdGhlCmxvY2FsIHN5c3RlbSBhZG1pbmlzdHJhdG9yIChiYXNlZCBvbiB0aGUgcG9s aWN5IHNpZ25hdHVyZSkgdHJ1c3QgZm9yIHRoZQpzeXN0ZW0gdG8gYWNjb21wbGlzaCB0aGUgZGVz aXJlZCB0YXNrcy4KCk9uZSBzdWNoIHByb3ZpZGVyIGlzIGZvciBleGFtcGxlIGRtLXZlcml0eSwg d2hpY2ggaXMgYWJsZSB0byByZXByZXNlbnQKdGhlIGludGVncml0eSBwcm9wZXJ0eSBvZiBhIHBh cnRpdGlvbiAoaXRzIGltbXV0YWJsZSBzdGF0ZSkgd2l0aCBhIGRpZ2VzdC4KCj4gVHJ1c3QgcmVx dWlyZW1lbnRzIGFyZSBlc3RhYmxpc2hlZCB2aWEgSVBFJ3MgcG9saWN5LCBzb3VyY2luZyBtdWx0 aXBsZQo+IGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwgdG8gYnVp bGQgYSBjb2hlc2l2ZSB0cnVzdAo+IG1vZGVsLCBiYXNlZCBvbiBob3cgdGhlIHN5c3RlbSB3YXMg YnVpbHQuCj4gCj4gVHJ1c3QsIHdpdGggcmVzcGVjdCB0byBjb21wdXRpbmcsIGlzIGEgY29uY2Vw dCB0aGF0IGRlc2lnbmF0ZXMgYSBzZXQKPiBvZiBlbnRpdGllcyB3aG8gd2lsbCBlbmRvcnNlIGEg c2V0IG9mIHJlc291cmNlcyBhcyBub24tbWFsaWNpb3VzLgo+IFRyYWRpdGlvbmFsbHksIHRoaXMg aXMgZG9uZSB2aWEgc2lnbmF0dXJlcywgd2hpY2ggaXMgdGhlIGFjdCBvZiBlbmRvcnNpbmcKPiBh IHJlc291cmNlLgo+IAo+IEludGVncml0eSwgb24gdGhlIG90aGVyIGhhbmQsIGlzIHRoZSBjb25j ZXB0IG9mIGVuc3VyaW5nIHRoYXQgYSByZXNvdXJjZQo+IGhhcyBub3QgYmVlbiBtb2RpZmllZCBz aW5jZSBhIHBvaW50IG9mIHRpbWUuIFRoaXMgaXMgdHlwaWNhbGx5IGRvbmUgdGhyb3VnaAo+IGNy eXB0b2dyYXBoaWMgaGFzaGVzIG9yIHNpZ25hdHVyZXMuCj4gCj4gVHJ1c3QgYW5kIGludGVncml0 eSBhcmUgdmVyeSBjbG9zZWx5IHRpZWQgdG9nZXRoZXIgY29uY2VwdHMsIGFzIGludGVncml0eQo+ IGlzIHRoZSB3YXkgeW91IGNhbiBwcm92ZSB0cnVzdCBmb3IgYSByZXNvdXJjZTsgb3RoZXJ3aXNl IGl0IGNvdWxkIGhhdmUKPiBiZWVuIG1vZGlmaWVkIGJ5IGFuIGVudGl0eSB3aG8gaXMgdW50cnVz dGVkLgo+IAo+IElQRSBwcm92aWRlcyBhIHdheSBmb3IgYSB1c2VyIHRvIGV4cHJlc3MgdHJ1c3Qg cmVxdWlyZW1lbnRzIG9mIHJlc291cmNlcywKPiBieSB1c2luZyBwcmUtZXhpc3Rpbmcgc3lzdGVt cyB3aGljaCBwcm92aWRlIHRoZSBpbnRlZ3JpdHkgaGFsZiBvZiB0aGUKPiBlcXVhdGlvbi4KPiAK PiBJUEUgaXMgY29tcGlsZWQgdW5kZXIgQ09ORklHX1NFQ1VSSVRZX0lQRS4KPiAKPiBVc2UgQ2Fz ZXMKPiAtLS0tLS0tLS0KPiAKPiBJUEUgd29ya3MgYmVzdCBpbiBmaXhlZC1mdW5jdGlvbiBkZXZp Y2VzOiBEZXZpY2VzIGluIHdoaWNoIHRoZWlyIHB1cnBvc2UKPiBpcyBjbGVhcmx5IGRlZmluZWQg YW5kIG5vdCBzdXBwb3NlZCB0byBiZSBjaGFuZ2VkIChlLmcuIG5ldHdvcmsgZmlyZXdhbGwKPiBk ZXZpY2UgaW4gYSBkYXRhIGNlbnRlciwgYW4gSW9UIGRldmljZSwgZXRjZXRlcmEpLCB3aGVyZSBh bGwgc29mdHdhcmUgYW5kCj4gY29uZmlndXJhdGlvbiBpcyBidWlsdCBhbmQgcHJvdmlzaW9uZWQg YnkgdGhlIHN5c3RlbSBvd25lci4KPiAKPiBJUEUgaXMgYSBsb25nLXdheSBvZmYgZm9yIHVzZSBp biBnZW5lcmFsLXB1cnBvc2UgY29tcHV0aW5nOgo+IHRoZSBMaW51eCBjb21tdW5pdHkgYXMgYSB3 aG9sZSB0ZW5kcyB0byBmb2xsb3cgYSBkZWNlbnRyYWxpemVkIHRydXN0Cj4gbW9kZWwsIGtub3du IGFzIHRoZSBXZWIgb2YgVHJ1c3QsIHdoaWNoIElQRSBoYXMgbm8gc3VwcG9ydCBmb3IgYXMgb2Yg eWV0Lgo+IEluc3RlYWQsIElQRSBzdXBwb3J0cyB0aGUgUEtJIFRydXN0IE1vZGVsLCB3aGljaCBn ZW5lcmFsbHkgZGVzaWduYXRlcyBhCj4gc2V0IG9mIGVudGl0aWVzIHRoYXQgcHJvdmlkZSBhIG1l YXN1cmUgYWJzb2x1dGUgdHJ1c3QuCgpJdCBpcyB0cnVlIHRoYXQgcGFja2FnZXMgYXJlIHNpZ25l ZCB3aXRoIFBHUCwgd2hpY2ggaXMgZGVjZW50cmFsaXplZCwKYnV0IHRoZXJlIGlzIGEgc3BlY2lh bCBjYXNlIHdoZXJlIExpbnV4IGRpc3RyaWJ1dGlvbiB2ZW5kb3JzIHRydXN0CnRoZWlyIG93biBr ZXlzLiBUaGlzLCBhdCBsZWFzdCwgd291bGQgYWxsb3cgdG8gdHJ1c3QgdGhlIHNvZnR3YXJlIGJ1 aWx0CmJ5IGEgcGFydGljdWxhciB2ZW5kb3IgKEkgcG9ydGVkIERhdmlkIEhvd2VsbHMncyB3b3Jr IG9uIFBHUCBrZXlzIGFuZApzaWduYXR1cmUgdG8gdGhlIGN1cnJlbnQga2VybmVsKS4KCj4gQWRk aXRpb25hbGx5LCB3aGlsZSBtb3N0IHBhY2thZ2VzIGFyZSBzaWduZWQgdG9kYXksIHRoZSBmaWxl cyBpbnNpZGUKPiB0aGUgcGFja2FnZXMgKGZvciBpbnN0YW5jZSwgdGhlIGV4ZWN1dGFibGVzKSwg dGVuZCB0byBiZSB1bnNpZ25lZC4gVGhpcwo+IG1ha2VzIGl0IGRpZmZpY3VsdCB0byB1dGlsaXpl IElQRSBpbiBzeXN0ZW1zIHdoZXJlIGEgcGFja2FnZSBtYW5hZ2VyIGlzCj4gZXhwZWN0ZWQgdG8g YmUgZnVuY3Rpb25hbCwgd2l0aG91dCBtYWpvciBjaGFuZ2VzIHRvIHRoZSBwYWNrYWdlIG1hbmFn ZXIKPiBhbmQgZWNvc3lzdGVtIGJlaGluZCBpdC4KClllcywgUlBNcyBkb24ndCBoYXZlIHBlciBm aWxlIHNpZ25hdHVyZXMgYnV0IGhhdmUgYSBzaWduYXR1cmUgb2YgdGhlCmxpc3Qgb2YgZmlsZSBk aWdlc3RzLCB3aGljaCBpcyBlcXVpdmFsZW50LiBUaGV5IGNvdWxkIGhhdmUgYWxzbyB0aGUgZnN2 ZXJpdHkKZGlnZXN0cyAoaW5zdGVhZCBvZiB0aGUgZnN2ZXJpdHkgc2lnbmF0dXJlcykgdG8gcmVk dWNlIHNpemUgb3ZlcmhlYWQuCgpHaXZlbiB0aGF0IHRoZSBhdXRoZW50aWNpdHkgb2YgUlBNcyBo ZWFkZXJzIGNhbiBiZSB2ZXJpZmllZCwgaWYgdGhlClBHUCBrZXkgb2YgdGhlIHZlbmRvciBpcyBp bmNsdWRlZCBpbiB0aGUgcHJpbWFyeSBrZXlyaW5nIG9mIHRoZSBrZXJuZWwsCmJlaW5nIGFibGUg dG8gcHJvdGVjdCBmaWxlIG9yIGZzdmVyaXR5IGRpZ2VzdHMgYWdhaW5zdCB0YW1wZXJpbmcgYnkK dXNlciBzcGFjZSBhbmQgYmVpbmcgYWJsZSB0byBxdWVyeSB0aGVtIChlLmcuIHdpdGggRElHTElN KSBleHRlbmRzCnRoZSBhcHBsaWNhYmlsaXR5IG9mIElQRSB0byBnZW5lcmFsIHB1cnBvc2UgT1Nl cy4KCj4gUG9saWN5Ogo+IC0tLS0tLS0KPiAKPiBJUEUgcG9saWN5IGlzIGEgcGxhaW4tdGV4dCBb I11fIHBvbGljeSBjb21wb3NlZCBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzCj4gb3ZlciBzZXZlcmFs IGxpbmVzLiBUaGVyZSBpcyBvbmUgcmVxdWlyZWQgbGluZSwgYXQgdGhlIHRvcCBvZiB0aGUKPiBw b2xpY3ksIGluZGljYXRpbmcgdGhlIHBvbGljeSBuYW1lLCBhbmQgdGhlIHBvbGljeSB2ZXJzaW9u LCBmb3IKPiBpbnN0YW5jZToKPiAKPiAgIHBvbGljeV9uYW1lPSJFeCBQb2xpY3kiIHBvbGljeV92 ZXJzaW9uPTAuMC4wCj4gCj4gVGhlIHBvbGljeSB2ZXJzaW9uIGluZGljYXRlcyB0aGUgY3VycmVu dCB2ZXJzaW9uIG9mIHRoZSBwb2xpY3kgKE5PVCB0aGUKPiBwb2xpY3kgc3ludGF4IHZlcnNpb24p LiBUaGlzIGlzIHVzZWQgdG8gcHJldmVudCByb2xsLWJhY2sgb2YgcG9saWN5IHRvCj4gcG90ZW50 aWFsbHkgaW5zZWN1cmUgcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIHBvbGljeS4KPiAKPiBUaGUg bmV4dCBwb3J0aW9uIG9mIElQRSBwb2xpY3ksIGFyZSBydWxlcy4gUnVsZXMgYXJlIGZvcm1lZCBi eSBrZXk9dmFsdWUKPiBwYWlycywga25vd24gYXMgcHJvcGVydGllcy4gSVBFIHJ1bGVzIHJlcXVp cmUgdHdvIHByb3BlcnRpZXM6ICJhY3Rpb24iLAoKQmV0dGVyOgoKSVBFIHJ1bGVzIHJlcXVpcmUg dHdvIGtleXM6Cgo+IHdoaWNoIGRldGVybWluZXMgd2hhdCBJUEUgZG9lcyB3aGVuIGl0IGVuY291 bnRlcnMgYSBtYXRjaCBhZ2FpbnN0IHRoZQo+IHBvbGljeSwgYW5kICJvcCIsIHdoaWNoIGRldGVy bWluZXMgd2hlbiB0aGF0IHJ1bGUgc2hvdWxkIGJlIGV2YWx1YXRlZC4KPiBUaHVzLCBhIG1pbmlt YWwgcnVsZSBpczoKPiAKPiAgIG9wPUVYRUNVVEUgYWN0aW9uPUFMTE9XCj4gCj4gVGhpcyBleGFt cGxlIHdpbGwgYWxsb3cgYW55IGV4ZWN1dGlvbi4gQWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFyZSB1 c2VkIHRvCj4gcmVzdHJpY3QgYXR0cmlidXRlcyBhYm91dCB0aGUgZmlsZXMgYmVpbmcgZXZhbHVh dGVkLiBUaGVzZSBwcm9wZXJ0aWVzIGFyZQo+IGludGVuZGVkIHRvIGJlIGRldGVybWluaXN0aWMg YXR0cmlidXRlcyB0aGF0IGFyZSByZXNpZGVudCBpbiB0aGUga2VybmVsLgo+IEF2YWlsYWJsZSBw cm9wZXJ0aWVzIGZvciBJUEUgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uIHBhdGNoIG9m IHRoaXMKPiBzZXJpZXMuCj4gCj4gQSBydWxlIGlzIHJlcXVpcmVkIHRvIGhhdmUgdGhlICJvcCIg cHJvcGVydHkgYXMgdGhlIGZpcnN0IHRva2VuIG9mIGEgcnVsZSwKPiBhbmQgdGhlICJhY3Rpb24i IGFzIHRoZSBsYXN0IHRva2VuIG9mIHRoZSBydWxlLiBSdWxlcyBhcmUgZXZhbHVhdGVkCj4gdG9w LXRvLWJvdHRvbS4gQXMgYSByZXN1bHQsIGFueSByZXZvY2F0aW9uIHJ1bGVzLCBvciBkZW5pZXMg c2hvdWxkIGJlCj4gcGxhY2VkIGVhcmx5IGluIHRoZSBmaWxlIHRvIGVuc3VyZSB0aGF0IHRoZXNl IHJ1bGVzIGFyZSBldmFsdWF0ZWQgYmVmb3JlCj4gYSBydWxlIHdpdGggImFjdGlvbj1BTExPVyIg aXMgaGl0Lgo+IAo+IEFueSB1bmtub3duIHN5bnRheCBpbiBJUEUgcG9saWN5IHdpbGwgcmVzdWx0 IGluIGEgZmF0YWwgZXJyb3IgdG8gcGFyc2UKPiB0aGUgcG9saWN5LiBVc2VyIG1vZGUgY2FuIGlu dGVycm9nYXRlIHRoZSBrZXJuZWwgdG8gdW5kZXJzdGFuZCB3aGF0Cj4gcHJvcGVydGllcyBhbmQg dGhlIGFzc29jaWF0ZWQgdmVyc2lvbnMgdGhyb3VnaCB0aGUgc2VjdXJpdHlmcyBub2RlLAo+ICRz ZWN1cml0eWZzL2lwZS9jb25maWcsIHdoaWNoIHdpbGwgcmV0dXJuIGEgc3RyaW5nIG9mIGZvcm06 Cj4gCj4gICBrZXkxPXZlcnNpb24xCj4gICBrZXkyPXZlcnNpb24yCj4gICAuCj4gICAuCj4gICAu Cj4gICBrZXlOPXZlcnNpb25OCj4gCj4gVXNlci1tb2RlIHNob3VsZCBjb3JyZWxhdGUgdGhlc2Ug dmVyc2lvbnMgd2l0aCB0aGUgc3VwcG9ydGVkIHZhbHVlcwo+IGlkZW50aWZpZWQgaW4gdGhlIGRv Y3VtZW50YXRpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBwb2xpY3kgc2hvdWxkCj4gYmUgYWNj ZXB0ZWQgYnkgdGhlIHN5c3RlbSB3aXRob3V0IGFjdHVhbGx5IHRyeWluZyB0byBkZXBsb3kgdGhl IHBvbGljeS4KPiAKPiBBZGRpdGlvbmFsbHksIGEgREVGQVVMVCBvcGVyYXRpb24gbXVzdCBiZSBz ZXQgZm9yIGFsbCB1bmRlcnN0b29kCj4gb3BlcmF0aW9ucyB3aXRoaW4gSVBFLiBGb3IgcG9saWNp ZXMgdG8gcmVtYWluIGNvbXBsZXRlbHkgZm9yd2FyZHMKPiBjb21wYXRpYmxlLCBpdCBpcyByZWNv bW1lbmRlZCB0aGF0IHVzZXJzIGFkZCBhICJERUZBVUxUIGFjdGlvbj1BTExPVyIKPiBhbmQgb3Zl cnJpZGUgdGhlIGRlZmF1bHRzIG9uIGEgcGVyLW9wZXJhdGlvbiBiYXNpcy4KPiAKPiBGb3IgbW9y ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcG9saWN5IHN5bnRheCwgdGhlIGtlcm5lbCBkb2N1bWVu dGF0aW9uCj4gcGFnZS4KPiAKPiBFYXJseSBVc2VybW9kZSBQcm90ZWN0aW9uOgo+IC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCj4gCj4gSVBFIGNhbiBiZSBwcm92aWRlZCB3aXRoIGEgcG9saWN5 IGF0IHN0YXJ0dXAgdG8gbG9hZCBhbmQgZW5mb3JjZS4KPiBUaGlzIGlzIGludGVuZGVkIHRvIGJl IGEgbWluaW1hbCBwb2xpY3kgdG8gZ2V0IHRoZSBzeXN0ZW0gdG8gYSBzdGF0ZQo+IHdoZXJlIHVz ZXJsYW5kIGlzIHNldHVwIGFuZCByZWFkeSB0byByZWNlaXZlIGNvbW1hbmRzLCBhdCB3aGljaAo+ IHBvaW50IGEgcG9saWN5IGNhbiBiZSBkZXBsb3llZCB2aWEgc2VjdXJpdHlmcy4gVGhpcyAiYm9v dCBwb2xpY3kiIGNhbiBiZQo+IHNwZWNpZmllZCB2aWEgdGhlIGNvbmZpZywgU0VDVVJJVFlfSVBF X0JPT1RfUE9MSUNZLCB3aGljaCBhY2NlcHRzIGEgcGF0aAo+IHRvIGEgcGxhaW4tdGV4dCB2ZXJz aW9uIG9mIHRoZSBJUEUgcG9saWN5IHRvIGFwcGx5LiBUaGlzIHBvbGljeSB3aWxsIGJlCj4gY29t cGlsZWQgaW50byB0aGUga2VybmVsLiBJZiBub3Qgc3BlY2lmaWVkLCBJUEUgd2lsbCBiZSBkaXNh YmxlZCB1bnRpbCBhCj4gcG9saWN5IGlzIGRlcGxveWVkIGFuZCBhY3RpdmF0ZWQgdGhyb3VnaCB0 aGUgbWV0aG9kIGFib3ZlLgo+IAo+IFBvbGljeSBFeGFtcGxlczoKPiAtLS0tLS0tLS0tLS0tLS0t Cj4gCj4gQWxsb3cgYWxsOgo+IAo+ICAgcG9saWN5X25hbWU9IkFsbG93IEFsbCIgcG9saWN5X3Zl cnNpb249MC4wLjAKPiAgIERFRkFVTFQgYWN0aW9uPUFMTE9XCj4gCj4gQWxsb3cgb25seSBpbml0 aWFsIHN1cGVyYmxvY2s6Cj4gCj4gICBwb2xpY3lfbmFtZT0iQWxsb3cgQWxsIEluaXRpYWwgU0Ii IHBvbGljeV92ZXJzaW9uPTAuMC4wCj4gICBERUZBVUxUIGFjdGlvbj1ERU5ZCj4gCj4gICBvcD1F WEVDVVRFIGJvb3RfdmVyaWZpZWQ9VFJVRSBhY3Rpb249QUxMT1cKPiAKPiBBbGxvdyBhbnkgc2ln bmVkIGRtLXZlcml0eSB2b2x1bWUgYW5kIHRoZSBpbml0aWFsIHN1cGVyYmxvY2s6Cj4gCj4gICBw b2xpY3lfbmFtZT0iQWxsb3dTaWduZWRBbmRJbml0aWFsIiBwb2xpY3lfdmVyc2lvbj0wLjAuMAo+ ICAgREVGQVVMVCBhY3Rpb249REVOWQo+IAo+ICAgb3A9RVhFQ1VURSBib290X3ZlcmlmaWVkPVRS VUUgYWN0aW9uPUFMTE9XCj4gICBvcD1FWEVDVVRFIGRtdmVyaXR5X3NpZ25hdHVyZT1UUlVFIGFj dGlvbj1BTExPVwo+IAo+IFByb2hpYml0IGV4ZWN1dGlvbiBmcm9tIGEgc3BlY2lmaWMgZG0tdmVy aXR5IHZvbHVtZToKPiAKPiAgIHBvbGljeV9uYW1lPSJBbGxvd1NpZ25lZEFuZEluaXRpYWwiIHBv bGljeV92ZXJzaW9uPTAuMC4wCj4gICBERUZBVUxUIGFjdGlvbj1ERU5ZCj4gCj4gICBvcD1FWEVD VVRFCj4gZG12ZXJpdHlfcm9vdGhhc2g9NDAxZmNlYzU5NDQ4MjNhZTEyZjYyNzI2ZTgxODQ0MDdh NWZhOTU5OTc4M2YwMzBkZWMKPiAxNDY5MzggYWN0aW9uPURFTlkKPiAgIG9wPUVYRUNVVEUgYm9v dF92ZXJpZmllZD1UUlVFIGFjdGlvbj1BTExPVwo+ICAgb3A9RVhFQ1VURSBkbXZlcml0eV9zaWdu YXR1cmU9VFJVRSBhY3Rpb249QUxMT1cKPiAKPiBBbGxvdyBvbmx5IGEgc3BlY2lmaWMgZG0tdmVy aXR5IHZvbHVtZToKPiAKPiAgIHBvbGljeV9uYW1lPSJBbGxvd1NpZ25lZEFuZEluaXRpYWwiIHBv bGljeV92ZXJzaW9uPTAuMC4wCj4gICBERUZBVUxUIGFjdGlvbj1ERU5ZCj4gCj4gICBvcD1FWEVD VVRFCj4gZG12ZXJpdHlfcm9vdGhhc2g9NDAxZmNlYzU5NDQ4MjNhZTEyZjYyNzI2ZTgxODQ0MDdh NWZhOTU5OTc4M2YwMzBkZWMKPiAxNDY5MzggYWN0aW9uPUFMTE9XCj4gCj4gRGVwbG95aW5nIFBv bGljaWVzOgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0KPiAKPiBGaXJzdCBzaWduIGEgcGxhaW4gdGV4 dCBwb2xpY3ksIHdpdGggYSBjZXJ0aWZpY2F0ZSB0aGF0IGlzIHByZXNlbnQgaW4KPiB0aGUgU1lT VEVNX1RSVVNURURfS0VZUklORyBvZiB5b3VyIHRlc3QgbWFjaGluZS4gVGhyb3VnaCBvcGVuc3Ns LCB0aGUKPiBzaWduaW5nIGNhbiBiZSBkb25lIHZpYToKPiAKPiAgIG9wZW5zc2wgc21pbWUgLXNp Z24gLWluICIkTVlfUE9MSUNZIiAtc2lnbmVyICIkTVlfQ0VSVElGSUNBVEUiIFwKPiAgICAgLWlu a2V5ICIkTVlfUFJJVkFURV9LRVkiIC1iaW5hcnkgLW91dGZvcm0gZGVyIC1ub2F0dHIgLW5vZGV0 YWNoIFwKPiAgICAgLW91dCAiJE1ZX1BPTElDWS5wN3MiCj4gCj4gVGhlbiwgc2ltcGx5IGNhdCB0 aGUgZmlsZSBpbnRvIHRoZSBJUEUncyAibmV3X3BvbGljeSIgc2VjdXJpdHlmcyBub2RlOgo+IAo+ ICAgY2F0ICIkTVlfUE9MSUNZLnA3cyIgPiAvc3lzL2tlcm5lbC9zZWN1cml0eS9pcGUvbmV3X3Bv bGljeQo+IAo+IFRoZSBwb2xpY3kgc2hvdWxkIG5vdyBiZSBwcmVzZW50IHVuZGVyIHRoZSBwb2xp Y2llcy8gc3ViZGlyZWN0b3J5LCB1bmRlcgo+IGl0cyAicG9saWN5X25hbWUiIGF0dHJpYnV0ZS4K PiAKPiBUaGUgcG9saWN5IGlzIG5vdyBwcmVzZW50IGluIHRoZSBrZXJuZWwgYW5kIGNhbiBiZSBt YXJrZWQgYXMgYWN0aXZlLAo+IHZpYSB0aGUgc2VjdXJpdHlmcyBub2RlOgo+IAo+ICAgZWNobyAi MSIgPiAiL3N5cy9rZXJuZWwvc2VjdXJpdHkvaXBlLyRNWV9QT0xJQ1lfTkFNRS9hY3RpdmUiCj4g Cj4gVGhpcyB3aWxsIG5vdyBtYXJrIHRoZSBwb2xpY3kgYXMgYWN0aXZlIGFuZCB0aGUgc3lzdGVt IHdpbGwgYmUgZW5mb3JjaW5nCj4gJE1ZX1BPTElDWV9OQU1FLgo+IAo+IFRoZXJlIGlzIG9uZSBy ZXF1aXJlbWVudCB3aGVuIG1hcmtpbmcgYSBwb2xpY3kgYXMgYWN0aXZlLCB0aGUgcG9saWN5X3Zl cnNpb24KPiBhdHRyaWJ1dGUgbXVzdCBlaXRoZXIgaW5jcmVhc2UsIG9yIHJlbWFpbiB0aGUgc2Ft ZSBhcyB0aGUgY3VycmVudGx5IHJ1bm5pbmcKPiBwb2xpY3kuCj4gCj4gUG9saWNpZXMgY2FuIGJl IHVwZGF0ZWQgdmlhOgo+IAo+ICAgY2F0ICIkTVlfVVBEQVRFRF9QT0xJQ1kucDdzIiA+IFwKPiAg ICAgIi9zeXMva2VybmVsL3NlY3VyaXR5L2lwZS9wb2xpY2llcy8kTVlfUE9MSUNZX05BTUUvdXBk YXRlIgo+IAo+IEFkZGl0aW9uYWxseSwgcG9saWNpZXMgY2FuIGJlIGRlbGV0ZWQgdmlhIHRoZSAi ZGVsZXRlIiBzZWN1cml0eWZzCj4gbm9kZS4gU2ltcGx5IHdyaXRlICIxIiB0byB0aGUgY29ycmVz cG9uZGluZyBub2RlIGluIHRoZSBwb2xpY3kgZm9sZGVyOgo+IAo+ICAgZWNobyAiMSIgPiAiL3N5 cy9rZXJuZWwvc2VjdXJpdHkvaXBlL3BvbGljaWVzLyRNWV9QT0xJQ1lfTkFNRS9kZWxldGUiCj4g Cj4gVGhlcmUgaXMgb25seSBvbmUgcmVxdWlyZW1lbnQgdG8gZGVsZXRlIHBvbGljaWVzLCB0aGUg cG9saWN5IGJlaW5nCj4gZGVsZXRlZCBtdXN0IG5vdCBiZSB0aGUgYWN0aXZlIHBvbGljeS4KPiAK PiBOT1RFOiBUaGUgc2VjdXJpdHlmcyBjb21tYW5kcyB3aWxsIHJlcXVpcmUgQ0FQX01BQ19BRE1J Ti4KPiAKPiBJbnRlZ3JhdGlvbnM6Cj4gLS0tLS0tLS0tLS0tLQo+IAo+IFRoaXMgcGF0Y2ggc2Vy aWVzIGFkZHMgc3VwcG9ydCBmb3IgZnN2ZXJpdHkgdmlhIGRpZ2VzdCBhbmQgc2lnbmF0dXJlCj4g KGZzdmVyaXR5X3NpZ25hdHVyZSBhbmQgZnN2ZXJpdHlfZGlnZXN0KSwgZG0tdmVyaXR5IGJ5IGRp Z2VzdCBhbmQKPiBzaWduYXR1cmUgKGRtdmVyaXR5X3NpZ25hdHVyZSBhbmQgZG12ZXJpdHlfcm9v dGhhc2gpLCBhbmQgdHJ1c3QgZm9yCj4gdGhlIGluaXRyYW1mcyAoYm9vdF92ZXJpZmllZCkuCgpW ZXJpZnlpbmcgdGhlIGluaXRpYWwgcmFtIGRpc2sgbG9va3MgbGlrZSBhIGJpZyBwcm9ibGVtLiBP biBnZW5lcmFsCnB1cnBvc2UgT1NlcywgaGF2aW5nIGEgcmVmZXJlbmNlIHZhbHVlIGZvciBpdCB3 b3VsZCBiZSB2ZXJ5IGhhcmQuCgpJbnN0ZWFkLCB3ZSB3b3VsZCBzdGlsbCBiZSBhYmxlIHRvIHVz ZSBwZXIgZmlsZSByZWZlcmVuY2UgdmFsdWVzLgpFeGVjdXRhYmxlIGFuZCBzaGFyZWQgbGlicmFy aWVzIGluIHRoZSBpbml0aWFsIHJhbSBkaXNrIGFyZSBjb3BpZWQKZnJvbSB0aGUgbWFpbiBPUy4g V2l0aG91dCBmc3Zlcml0eSBzdXBwb3J0IGluIHRtcGZzLCBJIHdvbmRlcgppZiBpdCB3b3VsZCBi ZSBzdGlsbCBwb3NzaWJsZSB0byBtYXJrIHRoZSBmaWxlIGFzIGltbXV0YWJsZSBhbmQgZG8KYW4g b24gdGhlIGZseSBjYWxjdWxhdGlvbiBvZiB0aGUgcm9vdCBkaWdlc3QuCgpBcyBhbiBhbHRlcm5h dGl2ZSwgdGhlIElNQSBhcHByb2FjaCBvZiBjYWxjdWxhdGluZyB0aGUgZmlsZSBkaWdlc3QKY291 bGQgYmUgdXNlZCAob3IgSVBFIGNvdWxkIGdldCB0aGUgZmlsZSBkaWdlc3QgYXMgYSBwcm9wZXJ0 eSBmcm9tCnRoZSBpbnRlZ3JpdHkgc3Vic3lzdGVtKS4KClJvYmVydG8KCkhVQVdFSSBURUNITk9M T0dJRVMgRHVlc3NlbGRvcmYgR21iSCwgSFJCIDU2MDYzCk1hbmFnaW5nIERpcmVjdG9yOiBMaSBQ ZW5nLCBaaG9uZyBSb25naHVhCgo+IFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gcGF0Y2gg Zm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCj4gaW50ZWdyYXRpb25zIGF2YWlsYWJsZS4K PiAKPiBUZXN0aW5nOgo+IC0tLS0tLS0tCj4gCj4gS1VuaXQgVGVzdHMgYXJlIGF2YWlsYWJsZS4g UmVjb21tZW5kZWQga3VuaXRjb25maWc6Cj4gCj4gICAgIENPTkZJR19LVU5JVD15Cj4gICAgIENP TkZJR19TRUNVUklUWT15Cj4gICAgIENPTkZJR19TRUNVUklUWUZTPXkKPiAgICAgQ09ORklHX1BL Q1M3X01FU1NBR0VfUEFSU0VSPXkKPiAgICAgQ09ORklHX1NZU1RFTV9EQVRBX1ZFUklGSUNBVElP Tj15Cj4gICAgIENPTkZJR19GU19WRVJJVFk9eQo+ICAgICBDT05GSUdfRlNfVkVSSVRZX0JVSUxU SU5fU0lHTkFUVVJFUz15Cj4gICAgIENPTkZJR19CTE9DSz15Cj4gICAgIENPTkZJR19NRD15Cj4g ICAgIENPTkZJR19CTEtfREVWX0RNPXkKPiAgICAgQ09ORklHX0RNX1ZFUklUWT15Cj4gICAgIENP TkZJR19ETV9WRVJJVFlfVkVSSUZZX1JPT1RIQVNIX1NJRz15Cj4gCj4gICAgIENPTkZJR19TRUNV UklUWV9JUEU9eQo+ICAgICBDT05GSUdfU0VDVVJJVFlfSVBFX0tVTklUX1RFU1Q9eQo+ICAgICBD T05GSUdfSVBFX1BST1BfQk9PVF9WRVJJRklFRD15Cj4gICAgIENPTkZJR19JUEVfUFJPUF9ETV9W RVJJVFlfU0lHTkFUVVJFPXkKPiAgICAgQ09ORklHX0lQRV9QUk9QX0RNX1ZFUklUWV9ST09USEFT SD15Cj4gICAgIENPTkZJR19JUEVfUFJPUF9GU19WRVJJVFlfU0lHTkFUVVJFPXkKPiAgICAgQ09O RklHX0lQRV9QUk9QX0ZTX1ZFUklUWV9ESUdFU1Q9eQo+IAo+IFNpbXBseSBydW46Cj4gCj4gICAg IG1ha2UgQVJDSD11bSBtcnByb3Blcgo+ICAgICAuL3Rvb2xzL3Rlc3Rpbmcva3VuaXQva3VuaXQu cHkgcnVuIC0ta3VuaXRjb25maWcgPHBhdGgvdG8vY29uZmlnPgo+IAo+IEFuZCB0aGUgdGVzdHMg d2lsbCBleGVjdXRlIGFuZCByZXBvcnQgdGhlIHJlc3VsdC4gRm9yIG1vcmUgaW5kZXB0aCB0ZXN0 aW5nLAo+IGl0IHdpbGwgcmVxdWlyZSB5b3UgdG8gY3JlYXRlIGFuZCBtb3VudCBhIGRtLXZlcml0 eSB2b2x1bWUgb3IgZnMtdmVyaXR5Cj4gZW5hYmxlZCBmaWxlLgo+IAo+IERvY3VtZW50YXRpb246 Cj4gLS0tLS0tLS0tLS0tLS0KPiAKPiBUaGVyZSBpcyBib3RoIGRvY3VtZW50YXRpb24gYXZhaWxh YmxlIG9uIGdpdGh1YiBhdAo+IGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9pcGUsIGFuZCBE b2N1bWVudGF0aW9uIGluIHRoaXMgcGF0Y2ggc2VyaWVzLAo+IHRvIGJlIGFkZGVkIGluLXRyZWUu IFRoaXMgaW5jbHVkZXMgYXJjaGl0ZWN0dXJhbCBibG9jayBkaWFncmFtcy4KPiAKPiBLbm93biBH YXBzOgo+IC0tLS0tLS0tLS0tCj4gCj4gSVBFIGhhcyB0d28ga25vd24gZ2FwczoKPiAKPiAxLiBJ UEUgY2Fubm90IHZlcmlmeSB0aGUgaW50ZWdyaXR5IG9mIGFub255bW91cyBleGVjdXRhYmxlIG1l bW9yeSwgc3VjaCBhcwo+ICAgdGhlIHRyYW1wb2xpbmVzIGNyZWF0ZWQgYnkgZ2NjIGNsb3N1cmVz IGFuZCBsaWJmZmkgKDwzLjQuMiksIG9yIEpJVCdkIGNvZGUuCj4gICBVbmZvcnR1bmF0ZWx5LCBh cyB0aGlzIGlzIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBjb2RlLCB0aGVyZSBpcyBubyB3YXkKPiAg IGZvciBJUEUgdG8gZW5zdXJlIHRoZSBpbnRlZ3JpdHkgb2YgdGhpcyBjb2RlIHRvIGZvcm0gYSB0 cnVzdCBiYXNpcy4gSW4gYWxsCj4gICBjYXNlcywgdGhlIHJldHVybiByZXN1bHQgZm9yIHRoZXNl IG9wZXJhdGlvbnMgd2lsbCBiZSB3aGF0ZXZlciB0aGUgYWRtaW4KPiAgIGNvbmZpZ3VyZXMgdGhl IERFRkFVTFQgYWN0aW9uIGZvciAiRVhFQ1VURSIuCj4gCj4gMi4gSVBFIGNhbm5vdCB2ZXJpZnkg dGhlIGludGVncml0eSBvZiBpbnRlcnByZXRlZCBsYW5ndWFnZXMnIHByb2dyYW1zIHdoZW4KPiAg IHRoZXNlIHNjcmlwdHMgaW52b2tlZCB2aWEgYGA8aW50ZXJwcmV0ZXI+IDxmaWxlPmBgLiBUaGlz IGlzIGJlY2F1c2UgdGhlCj4gICB3YXkgaW50ZXJwcmV0ZXJzIGV4ZWN1dGUgdGhlc2UgZmlsZXMs IHRoZSBzY3JpcHRzIHRoZW1zZWx2ZXMgYXJlIG5vdAo+ICAgZXZhbHVhdGVkIGFzIGV4ZWN1dGFi bGUgY29kZSB0aHJvdWdoIG9uZSBvZiBJUEUncyBob29rcy4gSW50ZXJwcmV0ZXJzCj4gICBjYW4g YmUgZW5saWdodGVuZWQgdG8gdGhlIHVzYWdlIG9mIElQRSBieSB0cnlpbmcgdG8gbW1hcCBhIGZp bGUgaW50bwo+ICAgZXhlY3V0YWJsZSBtZW1vcnkgKCtYKSwgYWZ0ZXIgb3BlbmluZyB0aGUgZmls ZSBhbmQgcmVzcG9uZGluZyB0byB0aGUKPiAgIGVycm9yIGNvZGUgYXBwcm9wcmlhdGVseS4gVGhp cyBhbHNvIGFwcGxpZXMgdG8gaW5jbHVkZWQgZmlsZXMsIG9yIGhpZ2gKPiAgIHZhbHVlIGZpbGVz LCBzdWNoIGFzIGNvbmZpZ3VyYXRpb24gZmlsZXMgb2YgY3JpdGljYWwgc3lzdGVtIGNvbXBvbmVu dHMuCj4gICBIb3dldmVyLCB0aGVyZSBpcyBhIHBhdGNoc2V0IHRoYXQgaXMgbG9va2luZyB0byBh ZGRyZXNzIHRoaXMgZ2FwIFsxXS4KPiAKPiBBcHBlbmRpeDoKPiAtLS0tLS0tLS0KPiAKPiBBLiBJ UEUgR2l0aHViIFJlcG9zaXRvcnk6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvaXBlCj4g Qi4gSVBFIFVzZXJzJyBHdWlkZTogRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9MU00vaXBlLnJz dAo+IAo+IFJlZmVyZW5jZXM6Cj4gLS0tLS0tLS0tLS0KPiAKPiBbMV0gaHR0cHM6Ly9sb3JlLmtl cm5lbC5vcmcvYWxsLzIwMjExMDEyMTkyNDEwLjIzNTYwOTAtMS1taWNAZGlnaWtvZC5uZXQvCj4g Cj4gRkFROgo+IC0tLS0KPiAKPiBROiBXaGF0J3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvdGhl ciBMU01zIHdoaWNoIHByb3ZpZGUgdHJ1c3QtYmFzZWQKPiAgIGFjY2VzcyBjb250cm9sLCBmb3Ig aW5zdGFuY2UsIElNQT8KPiAKPiBBOiBJTUEgaXMgYSBmYW50YXN0aWMgb3B0aW9uIHdoZW4gbmVl ZGluZyBtZWFzdXJlbWVudCBpbiBhZGRpdGlvbiB0byB0aGUKPiAgIHRydXN0LWJhc2VkIGFjY2Vz cyBtb2RlbC4gQWxsIG9mIElNQSBpcyBjZW50ZXJlZCBhcm91bmQgdGhlaXIgbWVhc3VyZW1lbnQK PiAgIGhhc2hlcywgc28geW91IHNhdmUgdGltZSB3aGVuIGRvaW5nIGJvdGggYWN0aW9ucy4gSVBF LCBvbiB0aGUgb3RoZXIgaGFuZCwKPiAgIGlzIGEgaGlnaGx5IHBlcmZvcm1hbnQgc3lzdGVtIHRo YXQgZG9lcyBub3QgcmVseSAoYW5kIGV4cGxpY2l0bHkgcHJvaGliaXRzKSwKPiAgIGdlbmVyYXRp bmcgaXRzIG93biBpbnRlZ3JpdHkgbWVjaGFuaXNtcyAtIHNlcGFyYXRpbmcgbWVhc3VyZW1lbnQg YW5kIGFjY2Vzcwo+ICAgY29udHJvbC4gU2ltcGx5IHB1dCwgSVBFIHByb3ZpZGVzIG9ubHkgdGhl IGVuZm9yY2VtZW50IG9mIHRydXN0LCB3aGlsZSBvdGhlcgo+ICAgc3Vic3lzdGVtcyBwcm92aWRl IHRoZSBpbnRlZ3JpdHkgZ3VhcmFudGVlIHRoYXQgSVBFIG5lZWRzIHRvIGRldGVybWluZSB0aGUK PiAgIHRydXN0IG9mIGEgcmVzb3VyY2UuIElNQSBwcm92aWRlcyBib3RoIHRoZSBpbnRlZ3JpdHkg Z3VhcmFudGVlLCB0aGUKPiAgIGVuZm9yY2VtZW50IG9mIHRydXN0LCBhbmQgYSB3aG9sZSBob3N0 IG9mIG90aGVyIGZlYXR1cmVzIHRoYXQgbWF5IG5vdCBiZQo+ICAgbmVlZGVkLgo+IAo+IENoYW5n ZWxvZzoKPiAtLS0tLS0tLS0tCj4gCj4gQ2hhbmdlcyBzaW5jZSB2MToKPiAgIFNwbGl0IHRoZSBz ZWNvbmQgcGF0Y2ggb2YgdGhlIHByZXZpb3VzIHNlcmllcyBpbnRvIHR3by4KPiAgIE1pbm9yIGNv cnJlY3Rpb25zIGluIHRoZSBjb3Zlci1sZXR0ZXIgYW5kIGRvY3VtZW50YXRpb24KPiAgIGNvbW1l bnRzIHJlZ2FyZGluZyBDQVBfTUFDX0FETUlOIGNoZWNrcyBpbiBJUEUuCj4gCj4gQ2hhbmdlcyBz aW5jZSB2MjoKPiAgIEFkZHJlc3MgdmFyaW91cyBjb21tZW50cyBieSBKYW5uIEhvcm4uIEhpZ2hs aWdodHM6Cj4gICAgIFN3aXRjaCB2YXJpb3VzIGF1ZGl0IGFsbG9jYXRvcnMgdG8gR0ZQX0tFUk5F TC4KPiAgICAgVXRpbGl6ZSByY3VfYWNjZXNzX3BvaW50ZXIoKSBpbiB2YXJpb3VzIGxvY2F0aW9u cy4KPiAgICAgU3RyaXAgb3V0IHRoZSBjYWNoaW5nIHN5c3RlbSBmb3IgcHJvcGVydGllcwo+ICAg ICBTdHJpcCBjb21tZW50cyBmcm9tIGhlYWRlcnMKPiAgICAgTW92ZSBmdW5jdGlvbnMgYXJvdW5k IGluIHBhdGNoZXMKPiAgICAgUmVtb3ZlIGtlcm5lbCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycwo+ ICAgICBSZWNvbmNpbGUgdGhlIHJhY2UgY29uZGl0aW9uIG9uIHRoZSBkZWxldGUgbm9kZSBmb3Ig cG9saWN5IGJ5Cj4gICAgICAgZXhwYW5kaW5nIHRoZSBwb2xpY3kgY3JpdGljYWwgc2VjdGlvbi4K PiAKPiAgIEFkZHJlc3MgYSBmZXcgY29tbWVudHMgYnkgSm9uYXRoYW4gQ29yYmV0IGFyb3VuZCB0 aGUgZG9jdW1lbnRhdGlvbgo+ICAgICBwYWdlcyBmb3IgSVBFLgo+IAo+ICAgRml4IGFuIGlzc3Vl IHdpdGggdGhlIGluaXRpYWxpemF0aW9uIG9mIElQRSBwb2xpY3kgd2l0aCBhICItMCIKPiAgICAg dmVyc2lvbiwgY2F1c2VkIGJ5IG5vdCBpbml0aWFsaXppbmcgdGhlIGhsaXN0IGVudHJpZXMgYmVm b3JlCj4gICAgIGZyZWVpbmcuCj4gCj4gQ2hhbmdlcyBzaW5jZSB2MzoKPiAgIEFkZHJlc3MgYSBj b25jZXJuIGFyb3VuZCBJUEUncyBiZWhhdmlvciB3aXRoIHVua25vd24gc3ludGF4Lgo+ICAgICBT cGVjaWZpY2FsbHksIG1ha2UgYW55IHVua25vd24gc3ludGF4IGEgZmF0YWwgZXJyb3IgaW5zdGVh ZCBvZiBhCj4gICAgIHdhcm5pbmcsIGFzIHN1Z2dlc3RlZCBieSBNaWNrYcOrbCBTYWxhw7xuLgo+ ICAgSW50cm9kdWNlIGEgbmV3IHNlY3VyaXR5ZnMgbm9kZSwgJHNlY3VyaXR5ZnMvaXBlL3Byb3Bl cnR5X2NvbmZpZywKPiAgICAgd2hpY2ggcHJvdmlkZXMgYSBsaXN0aW5nIG9mIHdoYXQgcHJvcGVy dGllcyBhcmUgZW5hYmxlZCBieSB0aGUKPiAgICAga2VybmVsIGFuZCB0aGVpciB2ZXJzaW9ucy4g VGhpcyBhbGxvd3MgdXNlcm1vZGUgdG8gcHJlZGljdCB3aGF0Cj4gICAgIHBvbGljaWVzIHNob3Vs ZCBiZSBhbGxvd2VkLgo+ICAgU3RyaXAgc29tZSBjb21tZW50cyBmcm9tIGMgZmlsZXMgdGhhdCBJ IG1pc3NlZC4KPiAgIENsYXJpZnkgc29tZSBkb2N1bWVudGF0aW9uIGNvbW1lbnRzIGFyb3VuZCAn Ym9vdF92ZXJpZmllZCcuCj4gICAgIFdoaWxlIHRoaXMgY3VycmVudGx5IGRvZXMgbm90IGZ1bmN0 aW9uYWxseSBjaGFuZ2UgdGhlIHByb3BlcnR5Cj4gICAgIGl0c2VsZiwgdGhlIGRpc3RpbmN0aW9u IGlzIGltcG9ydGFudCB3aGVuIElQRSBjYW4gZW5mb3JjZSB2ZXJpZmllZAo+ICAgICByZWFkcy4g QWRkaXRpb25hbGx5LCAnS0VSTkVMX1JFQUQnIHdhcyBvbWl0dGVkIGZyb20gdGhlIGRvY3VtZW50 YXRpb24uCj4gICAgIFRoaXMgaGFzIGJlZW4gY29ycmVjdGVkLgo+ICAgQ2hhbmdlIFNlY3VyaXR5 RlMgYW5kIFNIQTEgdG8gYSByZXZlcnNlIGRlcGVuZGVuY3kuCj4gICBVcGRhdGUgdGhlIGNvdmVy LWxldHRlciB3aXRoIHRoZSB1cGRhdGVkIGJlaGF2aW9yIG9mIHVua25vd24gc3ludGF4Lgo+ICAg UmVtb3ZlIGFsbCBzeXNjdGxzLCBtYWtpbmcgYW4gZXF1aXZhbGVudCBmdW5jdGlvbiBpbiBzZWN1 cml0eWZzLgo+ICAgUmV3b3JrIHRoZSBhY3RpdmUvZGVsZXRlIG1lY2hhbmlzbSB0byBiZSBhIG5v ZGUgdW5kZXIgdGhlIHBvbGljeSBpbgo+ICAgICAkc2VjdXJpdHlmcy9pcGUvcG9saWNpZXMuCj4g ICBUaGUga2VybmVsIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzIGlwZS5lbmZvcmNlIGFuZCBpcGUu c3VjY2Vzc19hdWRpdAo+ICAgICBoYXZlIHJldHVybmVkIGFzIHRoaXMgZnVuY3Rpb25hbGl0eSBp cyBubyBsb25nZXIgZXhwb3NlZCB0aHJvdWdoCj4gICAgIHN5c2ZzLgo+IAo+IENoYW5nZXMgc2lu Y2UgdjQ6Cj4gICBDb3JyZWN0IHNvbWUgZ3JhbW1hdGljYWwgZXJyb3JzIHJlcG9ydGVkIGJ5IFJh bmR5IER1bmxhcC4KPiAgIEZpeCBzb21lIHdhcm5pbmdzIHJlcG9ydGVkIGJ5IGtlcm5lbCB0ZXN0 IGJvdC4KPiAgIENoYW5nZSBjb252ZW50aW9uIGFyb3VuZCBzZWN1cml0eV9iZGV2X3NldHNlY3Vy aXR5LiAtRU5PU1lTCj4gICAgIGlzIG5vdyBleHBlY3RlZCBpZiBhbiBMU00gZG9lcyBub3QgaW1w bGVtZW50IGEgcGFydGljdWxhciBAbmFtZSwKPiAgICAgYXMgc3VnZ2VzdGVkIGJ5IENhc2V5IFNj aGF1Zmxlci4KPiAgIE1pbm9yIHN0cmluZyBjb3JyZWN0aW9ucyByZWxhdGVkIHRvIHRoZSBtb3Zl IGZyb20gc3lzZnMgdG8gc2VjdXJpdHlmcwo+ICAgQ29ycmVjdCBhIHNwZWxsaW5nIG9mIGFuICNp ZmRlZiBmb3IgdGhlIHBlcm1pc3NpdmUgYXJndW1lbnQuCj4gICBBZGQgdGhlIGtlcm5lbCBwYXJh bWV0ZXJzIHJlLWFkZGVkIHRvIHRoZSBkb2N1bWVudGF0aW9uLgo+ICAgRml4IGEgbWlub3IgYnVn IHdoZXJlIHRoZSBtb2RlIGJlaW5nIGF1ZGl0ZWQgb24gcGVybWlzc2l2ZSBzd2l0Y2gKPiAgICAg d2FzIHRoZSBvcmlnaW5hbCBtb2RlLCBub3QgdGhlIG1vZGUgYmVpbmcgc3dhcHBlZCB0by4KPiAg IENsZWFudXAgZG9jIGNvbW1lbnRzLCBmaXggc29tZSB3aGl0ZXNwYWNlIGFsaWdubWVudCBpc3N1 ZXMuCj4gCj4gQ2hhbmdlcyBzaW5jZSB2NToKPiAgIENoYW5nZSBpZiBzdGF0ZW1lbnQgY29uZGl0 aW9uIGluIHNlY3VyaXR5X2JkZXZfc2V0c2VjdXJpdHkgdG8gYmUKPiAgICAgbW9yZSBjb25jaXNl LCBhcyBzdWdnZXN0ZWQgYnkgQ2FzZXkgU2NoYXVmbGVyIGFuZCBBbCBWaXJvCj4gICBEcm9wIHRo ZSA2dGggcGF0Y2ggaW4gdGhlIHNlcmllcywgImRtLXZlcml0eSBtb3ZlIHNpZ25hdHVyZSBjaGVj ay4uLiIKPiAgICAgZHVlIHRvIG51bWVyb3VzIGlzc3VlcywgYW5kIGl0IHVsdGltYXRlbHkgcHJv dmlkaW5nIG5vIHJlYWwgdmFsdWUuCj4gICBGaXggdGhlIHBhdGNoIHRyZWUgLSB0aGUgcHJldmlv dXMgaXRlcmF0aW9uIGFwcGVhcnMgdG8gaGF2ZSBiZWVuIGluIGEKPiAgICAgdG9ybiBzdGF0ZSAo cGF0Y2hlcyA4Kzkgd2VyZSBtZXJnZWQpLiBUaGlzIGhhcyBzaW5jZSBiZWVuIGNvcnJlY3RlZC4K PiAKPiBDaGFuZ2VzIHNpbmNlIHY2Ogo+ICAgKiBSZXdvcmQgY292ZXIgbGV0dGVyIHRvIG1vcmUg YWNjdXJhdGUgY29udmV5IElQRSdzIHB1cnBvc2UKPiAgICAgYW5kIGxhdGVzdCB1cGRhdGVzLgo+ ICAgKiBSZWZhY3RvciBzZXJpZXMgdG86Cj4gICAgICAgMS4gU3VwcG9ydCBhIGNvbnRleHQgc3Ry dWN0dXJlLCBlbmFibGluZzoKPiAgICAgICAgICAgMS4gRWFzaWVyIFRlc3RpbmcgdmlhIEtVTklU Cj4gICAgICAgICAgIDIuIEEgYmV0dGVyIGFyY2hpdGVjdHVyZSBmb3IgZnV0dXJlIGRlc2lnbnMK PiAgICAgICAyLiBNYWtlIHBhcnNlciBjb2RlIGNsZWFuZXIKPiAgICogTW92ZSBwYXRjaCAwMS8x MiB0byBbMTQvMTZdIG9mIHRoZSBzZXJpZXMKPiAgICogU3BsaXQgdXAgcGF0Y2ggMDIvMTIgaW50 byBmb3VyIHBhcnRzOgo+ICAgICAgIDEuIGNvbnRleHQgY3JlYXRpb24gWzAxLzE2XQo+ICAgICAg IDIuIGF1ZGl0IFswNy8xNl0KPiAgICAgICAzLiBldmFsdWF0aW9uIGxvb3AgWzAzLzE2XQo+ICAg ICAgIDQuIGFjY2VzcyBjb250cm9sIGhvb2tzIFswNS8xNl0KPiAgICAgICA1LiBwZXJtaXNzaXZl IG1vZGUgWzA4LzE2XQo+ICAgKiBTcGxpdCB1cCBwYXRjaCAwMy8xMiBpbnRvIHR3byBwYXJ0czoK PiAgICAgICAxLiBwYXJzZXIgWzAyLzE2XQo+ICAgICAgIDIuIHVzZXJzcGFjZSBpbnRlcmZhY2Ug WzA0LzE2XQo+ICAgKiBSZXdvcmQgYW5kIHJlZmFjdG9yIHBhdGNoIDA0LzEyIHRvIFswOS8xNl0K PiAgICogU3F1YXNoIHBhdGNoIDA1LzEyLCAwNy8xMiwgMDkvMTIgdG8gWzEwLzE2XQo+ICAgKiBT cXVhc2ggcGF0Y2ggMDgvMTIsIDEwLzEyIHRvIFsxMS8xNl0KPiAgICogQ2hhbmdlIGF1ZGl0IHJl Y29yZHMgdG8gTUFDIHJlZ2lvbiAoMTRYWCkgZnJvbSBJbnRlZ3JpdHkgcmVnaW9uICgxOFhYKQo+ ICAgKiBBZGQgRlNWZXJpdHkgU3VwcG9ydAo+ICAgKiBJbnRlcmZhY2UgY2hhbmdlczoKPiAgICAg ICAxLiAicmF3IiB3YXMgcmVuYW1lZCB0byAicGtjczciIGFuZCBtYWRlIHJlYWQgb25seQo+ICAg ICAgIDIuICJyYXciJ3Mgd3JpdGUgZnVuY3Rpb25hbGl0eSAodXBkYXRlIGEgcG9saWN5KSBtb3Zl ZCB0byAidXBkYXRlIgo+ICAgICAgIDMuIGludHJvZHVjZWQgInZlcnNpb24iLCAicG9saWN5X25h bWUiIG5vZGVzLgo+ICAgICAgIDQuICJjb250ZW50IiByZW5hbWVkIHRvICJwb2xpY3kiCj4gICAg ICAgNS4gVGhlIGJvb3QgcG9saWN5IGNhbiBub3cgYmUgdXBkYXRlZCBsaWtlIGFueSBvdGhlciBw b2xpY3kuCj4gICAqIEFkZCBhZGRpdGlvbmFsIGRldmVsb3Blci1sZXZlbCBkb2N1bWVudGF0aW9u Cj4gICAqIFVwZGF0ZSBhZG1pbi1ndWlkZSBkb2NzIHRvIHJlZmxlY3QgY2hhbmdlcy4KPiAgICog S3VuaXQgdGVzdHMKPiAgICogRHJvcHBlZCBDT05GSUdfU0VDVVJJVFlfSVBFX1BFUk1JU1NJVkVf U1dJVENIIC0gZnVuY3Rpb25hbGl0eSBjYW4KPiAgICAgZWFzaWx5IGNvbWUgbGF0ZXIgd2l0aCBh IHNtYWxsIHBhdGNoLgo+ICAgKiBVc2UgcGFydGl0aW9uMCBmb3IgYmxvY2tfZGV2aWNlIGZvciBk bS12ZXJpdHkgcGF0Y2gKPiAKPiBEZXZlbiBCb3dlcnMgKDE0KToKPiAgIHNlY3VyaXR5OiBhZGQg aXBlIGxzbSAmIGluaXRpYWwgY29udGV4dCBjcmVhdGlvbgo+ICAgaXBlOiBhZGQgcG9saWN5IHBh cnNlcgo+ICAgaXBlOiBhZGQgZXZhbHVhdGlvbiBsb29wCj4gICBpcGU6IGFkZCB1c2Vyc3BhY2Ug aW50ZXJmYWNlCj4gICBpcGU6IGFkZCBMU00gaG9va3Mgb24gZXhlY3V0aW9uIGFuZCBrZXJuZWwg cmVhZAo+ICAgdWFwaXxhdWRpdDogYWRkIHRydXN0IGF1ZGl0IG1lc3NhZ2UgZGVmaW5pdGlvbnMK PiAgIGlwZTogYWRkIGF1ZGl0aW5nIHN1cHBvcnQKPiAgIGlwZTogYWRkIHBlcm1pc3NpdmUgdG9n Z2xlCj4gICBpcGU6IGludHJvZHVjZSAnYm9vdF92ZXJpZmllZCcgYXMgYSB0cnVzdCBwcm92aWRl cgo+ICAgZnN8ZG0tdmVyaXR5OiBhZGQgYmxvY2tfZGV2IExTTSBibG9iIGFuZCBzdWJtaXQgZG0t dmVyaXR5IGRhdGEKPiAgIGlwZTogYWRkIHN1cHBvcnQgZm9yIGRtLXZlcml0eSBhcyBhIHRydXN0 IHByb3ZpZGVyCj4gICBzY3JpcHRzOiBhZGQgYm9vdCBwb2xpY3kgZ2VuZXJhdGlvbiBwcm9ncmFt Cj4gICBpcGU6IGt1bml0IHRlc3RzCj4gICBkb2N1bWVudGF0aW9uOiBhZGQgaXBlIGRvY3VtZW50 YXRpb24KPiAKPiBGYW4gV3UgKDIpOgo+ICAgZnN2ZXJpdHl8c2VjdXJpdHk6IGFkZCBzZWN1cml0 eSBob29rcyB0byBmc3Zlcml0eSBkaWdlc3QgYW5kIHNpZ25hdHVyZQo+ICAgaXBlOiBlbmFibGUg c3VwcG9ydCBmb3IgZnMtdmVyaXR5IGFzIGEgdHJ1c3QgcHJvdmlkZXIKPiAKPiAgRG9jdW1lbnRh dGlvbi9hZG1pbi1ndWlkZS9MU00vaW5kZXgucnN0ICAgICAgIHwgICAgMSArCj4gIERvY3VtZW50 YXRpb24vYWRtaW4tZ3VpZGUvTFNNL2lwZS5yc3QgICAgICAgICB8ICA1ODcgKysrKysrKysrKwo+ ICAuLi4vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0ICAgICAgICAgfCAgIDEyICsK PiAgRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9pbmRleC5yc3QgICAgICAgICAgICAgIHwgICAgMSAr Cj4gIERvY3VtZW50YXRpb24vc2VjdXJpdHkvaXBlLnJzdCAgICAgICAgICAgICAgICB8ICAzMzkg KysrKysrCj4gIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDkgKwo+ICBibG9jay9iZGV2LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICA3ICsKPiAgZHJpdmVycy9tZC9kbS12ZXJpdHktdGFyZ2V0LmMgICAgICAgICAgICAgICAg IHwgICAyMCArLQo+ICBkcml2ZXJzL21kL2RtLXZlcml0eS12ZXJpZnktc2lnLmMgICAgICAgICAg ICAgfCAgIDE2ICstCj4gIGRyaXZlcnMvbWQvZG0tdmVyaXR5LXZlcmlmeS1zaWcuaCAgICAgICAg ICAgICB8ICAgMTAgKy0KPiAgZnMvdmVyaXR5L29wZW4uYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAxMiArCj4gIGZzL3Zlcml0eS9zaWduYXR1cmUuYyAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDUgKy0KPiAgaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oICAg ICAgICAgICAgIHwgICAxNiArCj4gIGluY2x1ZGUvbGludXgvYmxrX3R5cGVzLmggICAgICAgICAg ICAgICAgICAgICB8ICAgIDEgKwo+ICBpbmNsdWRlL2xpbnV4L2RldmljZS1tYXBwZXIuaCAgICAg ICAgICAgICAgICAgfCAgICAzICsKPiAgaW5jbHVkZS9saW51eC9mc3Zlcml0eS5oICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMyArCj4gIGluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oICAg ICAgICAgICAgICAgICB8ICAgIDUgKwo+ICBpbmNsdWRlL2xpbnV4L2xzbV9ob29rcy5oICAgICAg ICAgICAgICAgICAgICAgfCAgIDEyICsKPiAgaW5jbHVkZS9saW51eC9zZWN1cml0eS5oICAgICAg ICAgICAgICAgICAgICAgIHwgICAyMiArCj4gIGluY2x1ZGUvdWFwaS9saW51eC9hdWRpdC5oICAg ICAgICAgICAgICAgICAgICB8ICAgIDQgKwo+ICBzY3JpcHRzL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgc2NyaXB0cy9pcGUvTWFrZWZpbGUgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMiArCj4gIHNjcmlwdHMvaXBlL3BvbGdlbi8uZ2l0aWdu b3JlICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ICBzY3JpcHRzL2lwZS9wb2xnZW4vTWFrZWZp bGUgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKPiAgc2NyaXB0cy9pcGUvcG9sZ2VuL3BvbGdl bi5jICAgICAgICAgICAgICAgICAgIHwgIDE0NSArKysKPiAgc2VjdXJpdHkvS2NvbmZpZyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArLQo+ICBzZWN1cml0eS9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgc2VjdXJpdHkvaXBlLy5naXRp Z25vcmUgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCj4gIHNlY3VyaXR5L2lwZS9LY29u ZmlnICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMDAgKysKPiAgc2VjdXJpdHkvaXBlL01h a2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzOSArCj4gIHNlY3VyaXR5L2lwZS9h dWRpdC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMDQgKysrKysKPiAgc2VjdXJpdHkv aXBlL2F1ZGl0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MSArCj4gIHNlY3VyaXR5 L2lwZS9jdHguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzODEgKysrKysrCj4gIHNl Y3VyaXR5L2lwZS9jdHguaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDMgKwo+ICBz ZWN1cml0eS9pcGUvY3R4X3Rlc3QuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNzMyICsrKysr KysrKysrKwo+ICBzZWN1cml0eS9pcGUvZXZhbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMjM3ICsrKysKPiAgc2VjdXJpdHkvaXBlL2V2YWwuaCAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICA1NyArCj4gIHNlY3VyaXR5L2lwZS9mcy5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAzMjcgKysrKysrCj4gIHNlY3VyaXR5L2lwZS9mcy5oICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMTMgKwo+ICBzZWN1cml0eS9pcGUvaG9va3MuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMzI4ICsrKysrKwo+ICBzZWN1cml0eS9pcGUvaG9va3MuaCAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDU2ICsKPiAgc2VjdXJpdHkvaXBlL2lwZS5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDE0MyArKysKPiAgc2VjdXJpdHkvaXBlL2lwZS5oICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArCj4gIHNlY3VyaXR5L2lwZS9pcGVfcGFyc2Vy LmggICAgICAgICAgICAgICAgICAgICB8ICAgNTkgKwo+ICBzZWN1cml0eS9pcGUvbW9kdWxlcy5j ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTM0ICsrKwo+ICBzZWN1cml0eS9pcGUvbW9kdWxl cy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICsKPiAgc2VjdXJpdHkvaXBlL21vZHVs ZXMvS2NvbmZpZyAgICAgICAgICAgICAgICAgIHwgICA2NiArKwo+ICBzZWN1cml0eS9pcGUvbW9k dWxlcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEyICsKPiAgc2VjdXJpdHkvaXBlL21v ZHVsZXMvYm9vdF92ZXJpZmllZC5jICAgICAgICAgIHwgICAyNCArCj4gIHNlY3VyaXR5L2lwZS9t b2R1bGVzL2RtdmVyaXR5X3Jvb3RoYXNoLmMgICAgICB8ICAgODAgKysKPiAgc2VjdXJpdHkvaXBl L21vZHVsZXMvZG12ZXJpdHlfc2lnbmF0dXJlLmMgICAgIHwgICAyNSArCj4gIHNlY3VyaXR5L2lw ZS9tb2R1bGVzL2ZzdmVyaXR5X2RpZ2VzdC5jICAgICAgICB8ICAgODAgKysKPiAgc2VjdXJpdHkv aXBlL21vZHVsZXMvZnN2ZXJpdHlfc2lnbmF0dXJlLmMgICAgIHwgICAzMyArCj4gIHNlY3VyaXR5 L2lwZS9tb2R1bGVzL2lwZV9tb2R1bGUuaCAgICAgICAgICAgICB8ICAgNDAgKwo+ICBzZWN1cml0 eS9pcGUvcGFyc2Vycy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTM5ICsrKwo+ICBzZWN1 cml0eS9pcGUvcGFyc2Vycy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEyICsKPiAgc2Vj dXJpdHkvaXBlL3BhcnNlcnMvZGVmYXVsdC5jICAgICAgICAgICAgICAgIHwgIDEwNiArKwo+ICBz ZWN1cml0eS9pcGUvcGFyc2Vycy9wb2xpY3lfaGVhZGVyLmMgICAgICAgICAgfCAgMTI2ICsrCj4g IHNlY3VyaXR5L2lwZS9wb2xpY3kuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwMzcgKysr KysrKysrKysrKysrKysKPiAgc2VjdXJpdHkvaXBlL3BvbGljeS5oICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDExMyArKwo+ICBzZWN1cml0eS9pcGUvcG9saWN5X3BhcnNlcl90ZXN0cy5jICAg ICAgICAgICAgfCAgMjk5ICsrKysrCj4gIHNlY3VyaXR5L2lwZS9wb2xpY3lmcy5jICAgICAgICAg ICAgICAgICAgICAgICB8ICA1MjggKysrKysrKysrCj4gIHNlY3VyaXR5L3NlY3VyaXR5LmMgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzYgKy0KPiAgNjMgZmlsZXMgY2hhbmdlZCwgNzA2 OSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IERv Y3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvTFNNL2lwZS5yc3QKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IERvY3VtZW50YXRpb24vc2VjdXJpdHkvaXBlLnJzdAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2Ny aXB0cy9pcGUvTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNjcmlwdHMvaXBlL3BvbGdl bi8uZ2l0aWdub3JlCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzY3JpcHRzL2lwZS9wb2xnZW4vTWFr ZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNjcmlwdHMvaXBlL3BvbGdlbi9wb2xnZW4uYwo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlLy5naXRpZ25vcmUKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9LY29uZmlnCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1 cml0eS9pcGUvTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9hdWRp dC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvYXVkaXQuaAo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL2N0eC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1 cml0eS9pcGUvY3R4LmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9jdHhfdGVz dC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvZXZhbC5jCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvZXZhbC5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1 cml0eS9pcGUvZnMuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL2ZzLmgKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9ob29rcy5jCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBzZWN1cml0eS9pcGUvaG9va3MuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkv aXBlL2lwZS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvaXBlLmgKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9pcGVfcGFyc2VyLmgKPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IHNlY3VyaXR5L2lwZS9tb2R1bGVzLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3Vy aXR5L2lwZS9tb2R1bGVzLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9tb2R1 bGVzL0tjb25maWcKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9tb2R1bGVzL01h a2VmaWxlCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvbW9kdWxlcy9ib290X3Zl cmlmaWVkLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9tb2R1bGVzL2RtdmVy aXR5X3Jvb3RoYXNoLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9tb2R1bGVz L2RtdmVyaXR5X3NpZ25hdHVyZS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUv bW9kdWxlcy9mc3Zlcml0eV9kaWdlc3QuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkv aXBlL21vZHVsZXMvZnN2ZXJpdHlfc2lnbmF0dXJlLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNl Y3VyaXR5L2lwZS9tb2R1bGVzL2lwZV9tb2R1bGUuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2Vj dXJpdHkvaXBlL3BhcnNlcnMuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL3Bh cnNlcnMvTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9wYXJzZXJz L2RlZmF1bHQuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL3BhcnNlcnMvcG9s aWN5X2hlYWRlci5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvcG9saWN5LmMK PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9wb2xpY3kuaAo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgc2VjdXJpdHkvaXBlL3BvbGljeV9wYXJzZXJfdGVzdHMuYwo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgc2VjdXJpdHkvaXBlL3BvbGljeWZzLmMKPiAKPiAtLQo+IDIuMzMuMAoKCi0tCmRt LWRldmVsIG1haWxpbmcgbGlzdApkbS1kZXZlbEByZWRoYXQuY29tCmh0dHBzOi8vbGlzdG1hbi5y ZWRoYXQuY29tL21haWxtYW4vbGlzdGluZm8vZG0tZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C2B9C433F5 for ; Mon, 25 Oct 2021 13:31:06 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D673360555 for ; Mon, 25 Oct 2021 13:31:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org D673360555 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=redhat.com Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-346-SAcSH8ibPgudkfXIacvnew-1; Mon, 25 Oct 2021 09:31:01 -0400 X-MC-Unique: SAcSH8ibPgudkfXIacvnew-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F17291922962; Mon, 25 Oct 2021 13:30:57 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A82765D6BA; Mon, 25 Oct 2021 13:30:57 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id AB97F1801241; Mon, 25 Oct 2021 13:30:55 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 19PBUt02020537 for ; Mon, 25 Oct 2021 07:30:55 -0400 Received: by smtp.corp.redhat.com (Postfix) id 11A9451E1; Mon, 25 Oct 2021 11:30:55 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0BCC551DD for ; Mon, 25 Oct 2021 11:30:52 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1D3B0106655D for ; Mon, 25 Oct 2021 11:30:52 +0000 (UTC) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-444-OiQ5KGLbOCu-ylv2XGe1XQ-1; Mon, 25 Oct 2021 07:30:48 -0400 X-MC-Unique: OiQ5KGLbOCu-ylv2XGe1XQ-1 Received: from fraeml710-chm.china.huawei.com (unknown [172.18.147.226]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4HdCNk19pCz67NwX; Mon, 25 Oct 2021 19:27:34 +0800 (CST) Received: from fraeml714-chm.china.huawei.com (10.206.15.33) by fraeml710-chm.china.huawei.com (10.206.15.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.15; Mon, 25 Oct 2021 13:30:45 +0200 Received: from fraeml714-chm.china.huawei.com ([10.206.15.33]) by fraeml714-chm.china.huawei.com ([10.206.15.33]) with mapi id 15.01.2308.015; Mon, 25 Oct 2021 13:30:45 +0200 From: Roberto Sassu To: "deven.desai@linux.microsoft.com" , "corbet@lwn.net" , "axboe@kernel.dk" , "agk@redhat.com" , "snitzer@redhat.com" , "ebiggers@kernel.org" , "tytso@mit.edu" , "paul@paul-moore.com" , "eparis@redhat.com" , "jmorris@namei.org" , "serge@hallyn.com" Subject: RE: [RFC PATCH v7 00/16] Integrity Policy Enforcement (IPE) Thread-Topic: [RFC PATCH v7 00/16] Integrity Policy Enforcement (IPE) Thread-Index: AQHXwGWW2AQMU2k7W0iAf+goQ1/2GavjhjlA Date: Mon, 25 Oct 2021 11:30:45 +0000 Message-ID: <0a61327839b841a1a9d915a09d1d8b8c@huawei.com> References: <1634151995-16266-1-git-send-email-deven.desai@linux.microsoft.com> In-Reply-To: <1634151995-16266-1-git-send-email-deven.desai@linux.microsoft.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.221.98.153] MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from base64 to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 19PBUt02020537 X-loop: linux-audit@redhat.com X-Mailman-Approved-At: Mon, 25 Oct 2021 09:30:53 -0400 Cc: "linux-security-module@vger.kernel.org" , "linux-doc@vger.kernel.org" , "jannh@google.com" , "linux-fscrypt@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-block@vger.kernel.org" , "dm-devel@redhat.com" , "linux-audit@redhat.com" , "linux-integrity@vger.kernel.org" X-BeenThere: linux-audit@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Linux Audit Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-audit-bounces@redhat.com Errors-To: linux-audit-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=linux-audit-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiBGcm9tOiBkZXZlbi5kZXNhaUBsaW51eC5taWNyb3NvZnQuY29tCj4gW21haWx0bzpkZXZlbi5k ZXNhaUBsaW51eC5taWNyb3NvZnQuY29tXQo+IEZyb206IERldmVuIEJvd2VycyA8ZGV2ZW4uZGVz YWlAbGludXgubWljcm9zb2Z0LmNvbT4KPiAKPiBPdmVydmlldzoKPiAtLS0tLS0tLS0KPiAKPiBJ UEUgaXMgYSBMaW51eCBTZWN1cml0eSBNb2R1bGUgd2hpY2ggdGFrZXMgYSBjb21wbGltZW50YXJ5 IGFwcHJvYWNoIHRvCj4gYWNjZXNzIGNvbnRyb2wuIFdoZXJlYXMgZXhpc3Rpbmcgc3lzdGVtcyBh cHByb2FjaCB1c2UgbGFiZWxzIG9yIHBhdGhzCj4gd2hpY2ggY29udHJvbCBhY2Nlc3MgdG8gYSBy ZXNvdXJjZSwgSVBFIGNvbnRyb2xzIGFjY2VzcyB0byBhIHJlc291cmNlCj4gYmFzZWQgb24gdGhl IHN5c3RlbSdzIHRydXN0IG9mIHNhaWQgcmVzb3VyY2UuCgpUbyBtZSwgaXQgZG9lcyBub3QgZ2l2 ZSBhIHBhcnRpY3VsYXJseSBwcmVjaXNlIGlkZWEgb2Ygd2hhdCBJUEUgaXMgYWJvdXQuCgpJdCB3 b3VsZCBoYXZlIGJlZW4gbW9yZSBjbGVhciwgYXNzdW1pbmcgdGhhdCBJIHVuZGVyc3Rvb2QgaXQg Y29ycmVjdGx5LAppZiB5b3UgaGF2ZSBzYWlkOgoKV2hlcmVhcyBleGlzdGluZyBtYW5kYXRvcnkg YWNjZXNzIGNvbnRyb2wgbWVjaGFuaXNtcyBiYXNlIHRoZWlyCmRlY2lzaW9ucyBvbiBsYWJlbHMg YW5kIHBhdGhzLCBJUEUgaW5zdGVhZCBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90CmFuIG9wZXJh dGlvbiBzaG91bGQgYmUgYWxsb3dlZCBiYXNlZCBvbiBpbW11dGFibGUgc2VjdXJpdHkgcHJvcGVy dGllcwpvZiB0aGUgc3lzdGVtIGNvbXBvbmVudCB0aGUgb3BlcmF0aW9uIGlzIGJlaW5nIHBlcmZv cm1lZCBvbi4KCklQRSBpdHNlbGYgZG9lcyBub3QgbWFuZGF0ZSBob3cgdGhlIHNlY3VyaXR5IHBy b3BlcnR5IHNob3VsZCBiZQpldmFsdWF0ZWQsIGJ1dCByZWxpZXMgb24gYW4gZXh0ZW5zaWJsZSBz ZXQgb2YgZXh0ZXJuYWwgcHJvcGVydHkgcHJvdmlkZXJzCnRvIGV2YWx1YXRlIHRoZSBjb21wb25l bnQuIElQRSBtYWtlcyBpdHMgZGVjaXNpb24gYmFzZWQgb24gcmVmZXJlbmNlCnZhbHVlcyBmb3Ig dGhlIHNlbGVjdGVkIHByb3BlcnRpZXMsIHNwZWNpZmllZCBpbiB0aGUgSVBFIHBvbGljeS4KClRo ZSByZWZlcmVuY2UgdmFsdWVzIHJlcHJlc2VudCB0aGUgdmFsdWUgdGhhdCB0aGUgcG9saWN5IHdy aXRlciBhbmQgdGhlCmxvY2FsIHN5c3RlbSBhZG1pbmlzdHJhdG9yIChiYXNlZCBvbiB0aGUgcG9s aWN5IHNpZ25hdHVyZSkgdHJ1c3QgZm9yIHRoZQpzeXN0ZW0gdG8gYWNjb21wbGlzaCB0aGUgZGVz aXJlZCB0YXNrcy4KCk9uZSBzdWNoIHByb3ZpZGVyIGlzIGZvciBleGFtcGxlIGRtLXZlcml0eSwg d2hpY2ggaXMgYWJsZSB0byByZXByZXNlbnQKdGhlIGludGVncml0eSBwcm9wZXJ0eSBvZiBhIHBh cnRpdGlvbiAoaXRzIGltbXV0YWJsZSBzdGF0ZSkgd2l0aCBhIGRpZ2VzdC4KCj4gVHJ1c3QgcmVx dWlyZW1lbnRzIGFyZSBlc3RhYmxpc2hlZCB2aWEgSVBFJ3MgcG9saWN5LCBzb3VyY2luZyBtdWx0 aXBsZQo+IGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwgdG8gYnVp bGQgYSBjb2hlc2l2ZSB0cnVzdAo+IG1vZGVsLCBiYXNlZCBvbiBob3cgdGhlIHN5c3RlbSB3YXMg YnVpbHQuCj4gCj4gVHJ1c3QsIHdpdGggcmVzcGVjdCB0byBjb21wdXRpbmcsIGlzIGEgY29uY2Vw dCB0aGF0IGRlc2lnbmF0ZXMgYSBzZXQKPiBvZiBlbnRpdGllcyB3aG8gd2lsbCBlbmRvcnNlIGEg c2V0IG9mIHJlc291cmNlcyBhcyBub24tbWFsaWNpb3VzLgo+IFRyYWRpdGlvbmFsbHksIHRoaXMg aXMgZG9uZSB2aWEgc2lnbmF0dXJlcywgd2hpY2ggaXMgdGhlIGFjdCBvZiBlbmRvcnNpbmcKPiBh IHJlc291cmNlLgo+IAo+IEludGVncml0eSwgb24gdGhlIG90aGVyIGhhbmQsIGlzIHRoZSBjb25j ZXB0IG9mIGVuc3VyaW5nIHRoYXQgYSByZXNvdXJjZQo+IGhhcyBub3QgYmVlbiBtb2RpZmllZCBz aW5jZSBhIHBvaW50IG9mIHRpbWUuIFRoaXMgaXMgdHlwaWNhbGx5IGRvbmUgdGhyb3VnaAo+IGNy eXB0b2dyYXBoaWMgaGFzaGVzIG9yIHNpZ25hdHVyZXMuCj4gCj4gVHJ1c3QgYW5kIGludGVncml0 eSBhcmUgdmVyeSBjbG9zZWx5IHRpZWQgdG9nZXRoZXIgY29uY2VwdHMsIGFzIGludGVncml0eQo+ IGlzIHRoZSB3YXkgeW91IGNhbiBwcm92ZSB0cnVzdCBmb3IgYSByZXNvdXJjZTsgb3RoZXJ3aXNl IGl0IGNvdWxkIGhhdmUKPiBiZWVuIG1vZGlmaWVkIGJ5IGFuIGVudGl0eSB3aG8gaXMgdW50cnVz dGVkLgo+IAo+IElQRSBwcm92aWRlcyBhIHdheSBmb3IgYSB1c2VyIHRvIGV4cHJlc3MgdHJ1c3Qg cmVxdWlyZW1lbnRzIG9mIHJlc291cmNlcywKPiBieSB1c2luZyBwcmUtZXhpc3Rpbmcgc3lzdGVt cyB3aGljaCBwcm92aWRlIHRoZSBpbnRlZ3JpdHkgaGFsZiBvZiB0aGUKPiBlcXVhdGlvbi4KPiAK PiBJUEUgaXMgY29tcGlsZWQgdW5kZXIgQ09ORklHX1NFQ1VSSVRZX0lQRS4KPiAKPiBVc2UgQ2Fz ZXMKPiAtLS0tLS0tLS0KPiAKPiBJUEUgd29ya3MgYmVzdCBpbiBmaXhlZC1mdW5jdGlvbiBkZXZp Y2VzOiBEZXZpY2VzIGluIHdoaWNoIHRoZWlyIHB1cnBvc2UKPiBpcyBjbGVhcmx5IGRlZmluZWQg YW5kIG5vdCBzdXBwb3NlZCB0byBiZSBjaGFuZ2VkIChlLmcuIG5ldHdvcmsgZmlyZXdhbGwKPiBk ZXZpY2UgaW4gYSBkYXRhIGNlbnRlciwgYW4gSW9UIGRldmljZSwgZXRjZXRlcmEpLCB3aGVyZSBh bGwgc29mdHdhcmUgYW5kCj4gY29uZmlndXJhdGlvbiBpcyBidWlsdCBhbmQgcHJvdmlzaW9uZWQg YnkgdGhlIHN5c3RlbSBvd25lci4KPiAKPiBJUEUgaXMgYSBsb25nLXdheSBvZmYgZm9yIHVzZSBp biBnZW5lcmFsLXB1cnBvc2UgY29tcHV0aW5nOgo+IHRoZSBMaW51eCBjb21tdW5pdHkgYXMgYSB3 aG9sZSB0ZW5kcyB0byBmb2xsb3cgYSBkZWNlbnRyYWxpemVkIHRydXN0Cj4gbW9kZWwsIGtub3du IGFzIHRoZSBXZWIgb2YgVHJ1c3QsIHdoaWNoIElQRSBoYXMgbm8gc3VwcG9ydCBmb3IgYXMgb2Yg eWV0Lgo+IEluc3RlYWQsIElQRSBzdXBwb3J0cyB0aGUgUEtJIFRydXN0IE1vZGVsLCB3aGljaCBn ZW5lcmFsbHkgZGVzaWduYXRlcyBhCj4gc2V0IG9mIGVudGl0aWVzIHRoYXQgcHJvdmlkZSBhIG1l YXN1cmUgYWJzb2x1dGUgdHJ1c3QuCgpJdCBpcyB0cnVlIHRoYXQgcGFja2FnZXMgYXJlIHNpZ25l ZCB3aXRoIFBHUCwgd2hpY2ggaXMgZGVjZW50cmFsaXplZCwKYnV0IHRoZXJlIGlzIGEgc3BlY2lh bCBjYXNlIHdoZXJlIExpbnV4IGRpc3RyaWJ1dGlvbiB2ZW5kb3JzIHRydXN0CnRoZWlyIG93biBr ZXlzLiBUaGlzLCBhdCBsZWFzdCwgd291bGQgYWxsb3cgdG8gdHJ1c3QgdGhlIHNvZnR3YXJlIGJ1 aWx0CmJ5IGEgcGFydGljdWxhciB2ZW5kb3IgKEkgcG9ydGVkIERhdmlkIEhvd2VsbHMncyB3b3Jr IG9uIFBHUCBrZXlzIGFuZApzaWduYXR1cmUgdG8gdGhlIGN1cnJlbnQga2VybmVsKS4KCj4gQWRk aXRpb25hbGx5LCB3aGlsZSBtb3N0IHBhY2thZ2VzIGFyZSBzaWduZWQgdG9kYXksIHRoZSBmaWxl cyBpbnNpZGUKPiB0aGUgcGFja2FnZXMgKGZvciBpbnN0YW5jZSwgdGhlIGV4ZWN1dGFibGVzKSwg dGVuZCB0byBiZSB1bnNpZ25lZC4gVGhpcwo+IG1ha2VzIGl0IGRpZmZpY3VsdCB0byB1dGlsaXpl IElQRSBpbiBzeXN0ZW1zIHdoZXJlIGEgcGFja2FnZSBtYW5hZ2VyIGlzCj4gZXhwZWN0ZWQgdG8g YmUgZnVuY3Rpb25hbCwgd2l0aG91dCBtYWpvciBjaGFuZ2VzIHRvIHRoZSBwYWNrYWdlIG1hbmFn ZXIKPiBhbmQgZWNvc3lzdGVtIGJlaGluZCBpdC4KClllcywgUlBNcyBkb24ndCBoYXZlIHBlciBm aWxlIHNpZ25hdHVyZXMgYnV0IGhhdmUgYSBzaWduYXR1cmUgb2YgdGhlCmxpc3Qgb2YgZmlsZSBk aWdlc3RzLCB3aGljaCBpcyBlcXVpdmFsZW50LiBUaGV5IGNvdWxkIGhhdmUgYWxzbyB0aGUgZnN2 ZXJpdHkKZGlnZXN0cyAoaW5zdGVhZCBvZiB0aGUgZnN2ZXJpdHkgc2lnbmF0dXJlcykgdG8gcmVk dWNlIHNpemUgb3ZlcmhlYWQuCgpHaXZlbiB0aGF0IHRoZSBhdXRoZW50aWNpdHkgb2YgUlBNcyBo ZWFkZXJzIGNhbiBiZSB2ZXJpZmllZCwgaWYgdGhlClBHUCBrZXkgb2YgdGhlIHZlbmRvciBpcyBp bmNsdWRlZCBpbiB0aGUgcHJpbWFyeSBrZXlyaW5nIG9mIHRoZSBrZXJuZWwsCmJlaW5nIGFibGUg dG8gcHJvdGVjdCBmaWxlIG9yIGZzdmVyaXR5IGRpZ2VzdHMgYWdhaW5zdCB0YW1wZXJpbmcgYnkK dXNlciBzcGFjZSBhbmQgYmVpbmcgYWJsZSB0byBxdWVyeSB0aGVtIChlLmcuIHdpdGggRElHTElN KSBleHRlbmRzCnRoZSBhcHBsaWNhYmlsaXR5IG9mIElQRSB0byBnZW5lcmFsIHB1cnBvc2UgT1Nl cy4KCj4gUG9saWN5Ogo+IC0tLS0tLS0KPiAKPiBJUEUgcG9saWN5IGlzIGEgcGxhaW4tdGV4dCBb I11fIHBvbGljeSBjb21wb3NlZCBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzCj4gb3ZlciBzZXZlcmFs IGxpbmVzLiBUaGVyZSBpcyBvbmUgcmVxdWlyZWQgbGluZSwgYXQgdGhlIHRvcCBvZiB0aGUKPiBw b2xpY3ksIGluZGljYXRpbmcgdGhlIHBvbGljeSBuYW1lLCBhbmQgdGhlIHBvbGljeSB2ZXJzaW9u LCBmb3IKPiBpbnN0YW5jZToKPiAKPiAgIHBvbGljeV9uYW1lPSJFeCBQb2xpY3kiIHBvbGljeV92 ZXJzaW9uPTAuMC4wCj4gCj4gVGhlIHBvbGljeSB2ZXJzaW9uIGluZGljYXRlcyB0aGUgY3VycmVu dCB2ZXJzaW9uIG9mIHRoZSBwb2xpY3kgKE5PVCB0aGUKPiBwb2xpY3kgc3ludGF4IHZlcnNpb24p LiBUaGlzIGlzIHVzZWQgdG8gcHJldmVudCByb2xsLWJhY2sgb2YgcG9saWN5IHRvCj4gcG90ZW50 aWFsbHkgaW5zZWN1cmUgcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIHBvbGljeS4KPiAKPiBUaGUg bmV4dCBwb3J0aW9uIG9mIElQRSBwb2xpY3ksIGFyZSBydWxlcy4gUnVsZXMgYXJlIGZvcm1lZCBi eSBrZXk9dmFsdWUKPiBwYWlycywga25vd24gYXMgcHJvcGVydGllcy4gSVBFIHJ1bGVzIHJlcXVp cmUgdHdvIHByb3BlcnRpZXM6ICJhY3Rpb24iLAoKQmV0dGVyOgoKSVBFIHJ1bGVzIHJlcXVpcmUg dHdvIGtleXM6Cgo+IHdoaWNoIGRldGVybWluZXMgd2hhdCBJUEUgZG9lcyB3aGVuIGl0IGVuY291 bnRlcnMgYSBtYXRjaCBhZ2FpbnN0IHRoZQo+IHBvbGljeSwgYW5kICJvcCIsIHdoaWNoIGRldGVy bWluZXMgd2hlbiB0aGF0IHJ1bGUgc2hvdWxkIGJlIGV2YWx1YXRlZC4KPiBUaHVzLCBhIG1pbmlt YWwgcnVsZSBpczoKPiAKPiAgIG9wPUVYRUNVVEUgYWN0aW9uPUFMTE9XCj4gCj4gVGhpcyBleGFt cGxlIHdpbGwgYWxsb3cgYW55IGV4ZWN1dGlvbi4gQWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFyZSB1 c2VkIHRvCj4gcmVzdHJpY3QgYXR0cmlidXRlcyBhYm91dCB0aGUgZmlsZXMgYmVpbmcgZXZhbHVh dGVkLiBUaGVzZSBwcm9wZXJ0aWVzIGFyZQo+IGludGVuZGVkIHRvIGJlIGRldGVybWluaXN0aWMg YXR0cmlidXRlcyB0aGF0IGFyZSByZXNpZGVudCBpbiB0aGUga2VybmVsLgo+IEF2YWlsYWJsZSBw cm9wZXJ0aWVzIGZvciBJUEUgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uIHBhdGNoIG9m IHRoaXMKPiBzZXJpZXMuCj4gCj4gQSBydWxlIGlzIHJlcXVpcmVkIHRvIGhhdmUgdGhlICJvcCIg cHJvcGVydHkgYXMgdGhlIGZpcnN0IHRva2VuIG9mIGEgcnVsZSwKPiBhbmQgdGhlICJhY3Rpb24i IGFzIHRoZSBsYXN0IHRva2VuIG9mIHRoZSBydWxlLiBSdWxlcyBhcmUgZXZhbHVhdGVkCj4gdG9w LXRvLWJvdHRvbS4gQXMgYSByZXN1bHQsIGFueSByZXZvY2F0aW9uIHJ1bGVzLCBvciBkZW5pZXMg c2hvdWxkIGJlCj4gcGxhY2VkIGVhcmx5IGluIHRoZSBmaWxlIHRvIGVuc3VyZSB0aGF0IHRoZXNl IHJ1bGVzIGFyZSBldmFsdWF0ZWQgYmVmb3JlCj4gYSBydWxlIHdpdGggImFjdGlvbj1BTExPVyIg aXMgaGl0Lgo+IAo+IEFueSB1bmtub3duIHN5bnRheCBpbiBJUEUgcG9saWN5IHdpbGwgcmVzdWx0 IGluIGEgZmF0YWwgZXJyb3IgdG8gcGFyc2UKPiB0aGUgcG9saWN5LiBVc2VyIG1vZGUgY2FuIGlu dGVycm9nYXRlIHRoZSBrZXJuZWwgdG8gdW5kZXJzdGFuZCB3aGF0Cj4gcHJvcGVydGllcyBhbmQg dGhlIGFzc29jaWF0ZWQgdmVyc2lvbnMgdGhyb3VnaCB0aGUgc2VjdXJpdHlmcyBub2RlLAo+ICRz ZWN1cml0eWZzL2lwZS9jb25maWcsIHdoaWNoIHdpbGwgcmV0dXJuIGEgc3RyaW5nIG9mIGZvcm06 Cj4gCj4gICBrZXkxPXZlcnNpb24xCj4gICBrZXkyPXZlcnNpb24yCj4gICAuCj4gICAuCj4gICAu Cj4gICBrZXlOPXZlcnNpb25OCj4gCj4gVXNlci1tb2RlIHNob3VsZCBjb3JyZWxhdGUgdGhlc2Ug dmVyc2lvbnMgd2l0aCB0aGUgc3VwcG9ydGVkIHZhbHVlcwo+IGlkZW50aWZpZWQgaW4gdGhlIGRv Y3VtZW50YXRpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBwb2xpY3kgc2hvdWxkCj4gYmUgYWNj ZXB0ZWQgYnkgdGhlIHN5c3RlbSB3aXRob3V0IGFjdHVhbGx5IHRyeWluZyB0byBkZXBsb3kgdGhl IHBvbGljeS4KPiAKPiBBZGRpdGlvbmFsbHksIGEgREVGQVVMVCBvcGVyYXRpb24gbXVzdCBiZSBz ZXQgZm9yIGFsbCB1bmRlcnN0b29kCj4gb3BlcmF0aW9ucyB3aXRoaW4gSVBFLiBGb3IgcG9saWNp ZXMgdG8gcmVtYWluIGNvbXBsZXRlbHkgZm9yd2FyZHMKPiBjb21wYXRpYmxlLCBpdCBpcyByZWNv bW1lbmRlZCB0aGF0IHVzZXJzIGFkZCBhICJERUZBVUxUIGFjdGlvbj1BTExPVyIKPiBhbmQgb3Zl cnJpZGUgdGhlIGRlZmF1bHRzIG9uIGEgcGVyLW9wZXJhdGlvbiBiYXNpcy4KPiAKPiBGb3IgbW9y ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcG9saWN5IHN5bnRheCwgdGhlIGtlcm5lbCBkb2N1bWVu dGF0aW9uCj4gcGFnZS4KPiAKPiBFYXJseSBVc2VybW9kZSBQcm90ZWN0aW9uOgo+IC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCj4gCj4gSVBFIGNhbiBiZSBwcm92aWRlZCB3aXRoIGEgcG9saWN5 IGF0IHN0YXJ0dXAgdG8gbG9hZCBhbmQgZW5mb3JjZS4KPiBUaGlzIGlzIGludGVuZGVkIHRvIGJl IGEgbWluaW1hbCBwb2xpY3kgdG8gZ2V0IHRoZSBzeXN0ZW0gdG8gYSBzdGF0ZQo+IHdoZXJlIHVz ZXJsYW5kIGlzIHNldHVwIGFuZCByZWFkeSB0byByZWNlaXZlIGNvbW1hbmRzLCBhdCB3aGljaAo+ IHBvaW50IGEgcG9saWN5IGNhbiBiZSBkZXBsb3llZCB2aWEgc2VjdXJpdHlmcy4gVGhpcyAiYm9v dCBwb2xpY3kiIGNhbiBiZQo+IHNwZWNpZmllZCB2aWEgdGhlIGNvbmZpZywgU0VDVVJJVFlfSVBF X0JPT1RfUE9MSUNZLCB3aGljaCBhY2NlcHRzIGEgcGF0aAo+IHRvIGEgcGxhaW4tdGV4dCB2ZXJz aW9uIG9mIHRoZSBJUEUgcG9saWN5IHRvIGFwcGx5LiBUaGlzIHBvbGljeSB3aWxsIGJlCj4gY29t cGlsZWQgaW50byB0aGUga2VybmVsLiBJZiBub3Qgc3BlY2lmaWVkLCBJUEUgd2lsbCBiZSBkaXNh YmxlZCB1bnRpbCBhCj4gcG9saWN5IGlzIGRlcGxveWVkIGFuZCBhY3RpdmF0ZWQgdGhyb3VnaCB0 aGUgbWV0aG9kIGFib3ZlLgo+IAo+IFBvbGljeSBFeGFtcGxlczoKPiAtLS0tLS0tLS0tLS0tLS0t Cj4gCj4gQWxsb3cgYWxsOgo+IAo+ICAgcG9saWN5X25hbWU9IkFsbG93IEFsbCIgcG9saWN5X3Zl cnNpb249MC4wLjAKPiAgIERFRkFVTFQgYWN0aW9uPUFMTE9XCj4gCj4gQWxsb3cgb25seSBpbml0 aWFsIHN1cGVyYmxvY2s6Cj4gCj4gICBwb2xpY3lfbmFtZT0iQWxsb3cgQWxsIEluaXRpYWwgU0Ii IHBvbGljeV92ZXJzaW9uPTAuMC4wCj4gICBERUZBVUxUIGFjdGlvbj1ERU5ZCj4gCj4gICBvcD1F WEVDVVRFIGJvb3RfdmVyaWZpZWQ9VFJVRSBhY3Rpb249QUxMT1cKPiAKPiBBbGxvdyBhbnkgc2ln bmVkIGRtLXZlcml0eSB2b2x1bWUgYW5kIHRoZSBpbml0aWFsIHN1cGVyYmxvY2s6Cj4gCj4gICBw b2xpY3lfbmFtZT0iQWxsb3dTaWduZWRBbmRJbml0aWFsIiBwb2xpY3lfdmVyc2lvbj0wLjAuMAo+ ICAgREVGQVVMVCBhY3Rpb249REVOWQo+IAo+ICAgb3A9RVhFQ1VURSBib290X3ZlcmlmaWVkPVRS VUUgYWN0aW9uPUFMTE9XCj4gICBvcD1FWEVDVVRFIGRtdmVyaXR5X3NpZ25hdHVyZT1UUlVFIGFj dGlvbj1BTExPVwo+IAo+IFByb2hpYml0IGV4ZWN1dGlvbiBmcm9tIGEgc3BlY2lmaWMgZG0tdmVy aXR5IHZvbHVtZToKPiAKPiAgIHBvbGljeV9uYW1lPSJBbGxvd1NpZ25lZEFuZEluaXRpYWwiIHBv bGljeV92ZXJzaW9uPTAuMC4wCj4gICBERUZBVUxUIGFjdGlvbj1ERU5ZCj4gCj4gICBvcD1FWEVD VVRFCj4gZG12ZXJpdHlfcm9vdGhhc2g9NDAxZmNlYzU5NDQ4MjNhZTEyZjYyNzI2ZTgxODQ0MDdh NWZhOTU5OTc4M2YwMzBkZWMKPiAxNDY5MzggYWN0aW9uPURFTlkKPiAgIG9wPUVYRUNVVEUgYm9v dF92ZXJpZmllZD1UUlVFIGFjdGlvbj1BTExPVwo+ICAgb3A9RVhFQ1VURSBkbXZlcml0eV9zaWdu YXR1cmU9VFJVRSBhY3Rpb249QUxMT1cKPiAKPiBBbGxvdyBvbmx5IGEgc3BlY2lmaWMgZG0tdmVy aXR5IHZvbHVtZToKPiAKPiAgIHBvbGljeV9uYW1lPSJBbGxvd1NpZ25lZEFuZEluaXRpYWwiIHBv bGljeV92ZXJzaW9uPTAuMC4wCj4gICBERUZBVUxUIGFjdGlvbj1ERU5ZCj4gCj4gICBvcD1FWEVD VVRFCj4gZG12ZXJpdHlfcm9vdGhhc2g9NDAxZmNlYzU5NDQ4MjNhZTEyZjYyNzI2ZTgxODQ0MDdh NWZhOTU5OTc4M2YwMzBkZWMKPiAxNDY5MzggYWN0aW9uPUFMTE9XCj4gCj4gRGVwbG95aW5nIFBv bGljaWVzOgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0KPiAKPiBGaXJzdCBzaWduIGEgcGxhaW4gdGV4 dCBwb2xpY3ksIHdpdGggYSBjZXJ0aWZpY2F0ZSB0aGF0IGlzIHByZXNlbnQgaW4KPiB0aGUgU1lT VEVNX1RSVVNURURfS0VZUklORyBvZiB5b3VyIHRlc3QgbWFjaGluZS4gVGhyb3VnaCBvcGVuc3Ns LCB0aGUKPiBzaWduaW5nIGNhbiBiZSBkb25lIHZpYToKPiAKPiAgIG9wZW5zc2wgc21pbWUgLXNp Z24gLWluICIkTVlfUE9MSUNZIiAtc2lnbmVyICIkTVlfQ0VSVElGSUNBVEUiIFwKPiAgICAgLWlu a2V5ICIkTVlfUFJJVkFURV9LRVkiIC1iaW5hcnkgLW91dGZvcm0gZGVyIC1ub2F0dHIgLW5vZGV0 YWNoIFwKPiAgICAgLW91dCAiJE1ZX1BPTElDWS5wN3MiCj4gCj4gVGhlbiwgc2ltcGx5IGNhdCB0 aGUgZmlsZSBpbnRvIHRoZSBJUEUncyAibmV3X3BvbGljeSIgc2VjdXJpdHlmcyBub2RlOgo+IAo+ ICAgY2F0ICIkTVlfUE9MSUNZLnA3cyIgPiAvc3lzL2tlcm5lbC9zZWN1cml0eS9pcGUvbmV3X3Bv bGljeQo+IAo+IFRoZSBwb2xpY3kgc2hvdWxkIG5vdyBiZSBwcmVzZW50IHVuZGVyIHRoZSBwb2xp Y2llcy8gc3ViZGlyZWN0b3J5LCB1bmRlcgo+IGl0cyAicG9saWN5X25hbWUiIGF0dHJpYnV0ZS4K PiAKPiBUaGUgcG9saWN5IGlzIG5vdyBwcmVzZW50IGluIHRoZSBrZXJuZWwgYW5kIGNhbiBiZSBt YXJrZWQgYXMgYWN0aXZlLAo+IHZpYSB0aGUgc2VjdXJpdHlmcyBub2RlOgo+IAo+ICAgZWNobyAi MSIgPiAiL3N5cy9rZXJuZWwvc2VjdXJpdHkvaXBlLyRNWV9QT0xJQ1lfTkFNRS9hY3RpdmUiCj4g Cj4gVGhpcyB3aWxsIG5vdyBtYXJrIHRoZSBwb2xpY3kgYXMgYWN0aXZlIGFuZCB0aGUgc3lzdGVt IHdpbGwgYmUgZW5mb3JjaW5nCj4gJE1ZX1BPTElDWV9OQU1FLgo+IAo+IFRoZXJlIGlzIG9uZSBy ZXF1aXJlbWVudCB3aGVuIG1hcmtpbmcgYSBwb2xpY3kgYXMgYWN0aXZlLCB0aGUgcG9saWN5X3Zl cnNpb24KPiBhdHRyaWJ1dGUgbXVzdCBlaXRoZXIgaW5jcmVhc2UsIG9yIHJlbWFpbiB0aGUgc2Ft ZSBhcyB0aGUgY3VycmVudGx5IHJ1bm5pbmcKPiBwb2xpY3kuCj4gCj4gUG9saWNpZXMgY2FuIGJl IHVwZGF0ZWQgdmlhOgo+IAo+ICAgY2F0ICIkTVlfVVBEQVRFRF9QT0xJQ1kucDdzIiA+IFwKPiAg ICAgIi9zeXMva2VybmVsL3NlY3VyaXR5L2lwZS9wb2xpY2llcy8kTVlfUE9MSUNZX05BTUUvdXBk YXRlIgo+IAo+IEFkZGl0aW9uYWxseSwgcG9saWNpZXMgY2FuIGJlIGRlbGV0ZWQgdmlhIHRoZSAi ZGVsZXRlIiBzZWN1cml0eWZzCj4gbm9kZS4gU2ltcGx5IHdyaXRlICIxIiB0byB0aGUgY29ycmVz cG9uZGluZyBub2RlIGluIHRoZSBwb2xpY3kgZm9sZGVyOgo+IAo+ICAgZWNobyAiMSIgPiAiL3N5 cy9rZXJuZWwvc2VjdXJpdHkvaXBlL3BvbGljaWVzLyRNWV9QT0xJQ1lfTkFNRS9kZWxldGUiCj4g Cj4gVGhlcmUgaXMgb25seSBvbmUgcmVxdWlyZW1lbnQgdG8gZGVsZXRlIHBvbGljaWVzLCB0aGUg cG9saWN5IGJlaW5nCj4gZGVsZXRlZCBtdXN0IG5vdCBiZSB0aGUgYWN0aXZlIHBvbGljeS4KPiAK PiBOT1RFOiBUaGUgc2VjdXJpdHlmcyBjb21tYW5kcyB3aWxsIHJlcXVpcmUgQ0FQX01BQ19BRE1J Ti4KPiAKPiBJbnRlZ3JhdGlvbnM6Cj4gLS0tLS0tLS0tLS0tLQo+IAo+IFRoaXMgcGF0Y2ggc2Vy aWVzIGFkZHMgc3VwcG9ydCBmb3IgZnN2ZXJpdHkgdmlhIGRpZ2VzdCBhbmQgc2lnbmF0dXJlCj4g KGZzdmVyaXR5X3NpZ25hdHVyZSBhbmQgZnN2ZXJpdHlfZGlnZXN0KSwgZG0tdmVyaXR5IGJ5IGRp Z2VzdCBhbmQKPiBzaWduYXR1cmUgKGRtdmVyaXR5X3NpZ25hdHVyZSBhbmQgZG12ZXJpdHlfcm9v dGhhc2gpLCBhbmQgdHJ1c3QgZm9yCj4gdGhlIGluaXRyYW1mcyAoYm9vdF92ZXJpZmllZCkuCgpW ZXJpZnlpbmcgdGhlIGluaXRpYWwgcmFtIGRpc2sgbG9va3MgbGlrZSBhIGJpZyBwcm9ibGVtLiBP biBnZW5lcmFsCnB1cnBvc2UgT1NlcywgaGF2aW5nIGEgcmVmZXJlbmNlIHZhbHVlIGZvciBpdCB3 b3VsZCBiZSB2ZXJ5IGhhcmQuCgpJbnN0ZWFkLCB3ZSB3b3VsZCBzdGlsbCBiZSBhYmxlIHRvIHVz ZSBwZXIgZmlsZSByZWZlcmVuY2UgdmFsdWVzLgpFeGVjdXRhYmxlIGFuZCBzaGFyZWQgbGlicmFy aWVzIGluIHRoZSBpbml0aWFsIHJhbSBkaXNrIGFyZSBjb3BpZWQKZnJvbSB0aGUgbWFpbiBPUy4g V2l0aG91dCBmc3Zlcml0eSBzdXBwb3J0IGluIHRtcGZzLCBJIHdvbmRlcgppZiBpdCB3b3VsZCBi ZSBzdGlsbCBwb3NzaWJsZSB0byBtYXJrIHRoZSBmaWxlIGFzIGltbXV0YWJsZSBhbmQgZG8KYW4g b24gdGhlIGZseSBjYWxjdWxhdGlvbiBvZiB0aGUgcm9vdCBkaWdlc3QuCgpBcyBhbiBhbHRlcm5h dGl2ZSwgdGhlIElNQSBhcHByb2FjaCBvZiBjYWxjdWxhdGluZyB0aGUgZmlsZSBkaWdlc3QKY291 bGQgYmUgdXNlZCAob3IgSVBFIGNvdWxkIGdldCB0aGUgZmlsZSBkaWdlc3QgYXMgYSBwcm9wZXJ0 eSBmcm9tCnRoZSBpbnRlZ3JpdHkgc3Vic3lzdGVtKS4KClJvYmVydG8KCkhVQVdFSSBURUNITk9M T0dJRVMgRHVlc3NlbGRvcmYgR21iSCwgSFJCIDU2MDYzCk1hbmFnaW5nIERpcmVjdG9yOiBMaSBQ ZW5nLCBaaG9uZyBSb25naHVhCgo+IFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gcGF0Y2gg Zm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCj4gaW50ZWdyYXRpb25zIGF2YWlsYWJsZS4K PiAKPiBUZXN0aW5nOgo+IC0tLS0tLS0tCj4gCj4gS1VuaXQgVGVzdHMgYXJlIGF2YWlsYWJsZS4g UmVjb21tZW5kZWQga3VuaXRjb25maWc6Cj4gCj4gICAgIENPTkZJR19LVU5JVD15Cj4gICAgIENP TkZJR19TRUNVUklUWT15Cj4gICAgIENPTkZJR19TRUNVUklUWUZTPXkKPiAgICAgQ09ORklHX1BL Q1M3X01FU1NBR0VfUEFSU0VSPXkKPiAgICAgQ09ORklHX1NZU1RFTV9EQVRBX1ZFUklGSUNBVElP Tj15Cj4gICAgIENPTkZJR19GU19WRVJJVFk9eQo+ICAgICBDT05GSUdfRlNfVkVSSVRZX0JVSUxU SU5fU0lHTkFUVVJFUz15Cj4gICAgIENPTkZJR19CTE9DSz15Cj4gICAgIENPTkZJR19NRD15Cj4g ICAgIENPTkZJR19CTEtfREVWX0RNPXkKPiAgICAgQ09ORklHX0RNX1ZFUklUWT15Cj4gICAgIENP TkZJR19ETV9WRVJJVFlfVkVSSUZZX1JPT1RIQVNIX1NJRz15Cj4gCj4gICAgIENPTkZJR19TRUNV UklUWV9JUEU9eQo+ICAgICBDT05GSUdfU0VDVVJJVFlfSVBFX0tVTklUX1RFU1Q9eQo+ICAgICBD T05GSUdfSVBFX1BST1BfQk9PVF9WRVJJRklFRD15Cj4gICAgIENPTkZJR19JUEVfUFJPUF9ETV9W RVJJVFlfU0lHTkFUVVJFPXkKPiAgICAgQ09ORklHX0lQRV9QUk9QX0RNX1ZFUklUWV9ST09USEFT SD15Cj4gICAgIENPTkZJR19JUEVfUFJPUF9GU19WRVJJVFlfU0lHTkFUVVJFPXkKPiAgICAgQ09O RklHX0lQRV9QUk9QX0ZTX1ZFUklUWV9ESUdFU1Q9eQo+IAo+IFNpbXBseSBydW46Cj4gCj4gICAg IG1ha2UgQVJDSD11bSBtcnByb3Blcgo+ICAgICAuL3Rvb2xzL3Rlc3Rpbmcva3VuaXQva3VuaXQu cHkgcnVuIC0ta3VuaXRjb25maWcgPHBhdGgvdG8vY29uZmlnPgo+IAo+IEFuZCB0aGUgdGVzdHMg d2lsbCBleGVjdXRlIGFuZCByZXBvcnQgdGhlIHJlc3VsdC4gRm9yIG1vcmUgaW5kZXB0aCB0ZXN0 aW5nLAo+IGl0IHdpbGwgcmVxdWlyZSB5b3UgdG8gY3JlYXRlIGFuZCBtb3VudCBhIGRtLXZlcml0 eSB2b2x1bWUgb3IgZnMtdmVyaXR5Cj4gZW5hYmxlZCBmaWxlLgo+IAo+IERvY3VtZW50YXRpb246 Cj4gLS0tLS0tLS0tLS0tLS0KPiAKPiBUaGVyZSBpcyBib3RoIGRvY3VtZW50YXRpb24gYXZhaWxh YmxlIG9uIGdpdGh1YiBhdAo+IGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9pcGUsIGFuZCBE b2N1bWVudGF0aW9uIGluIHRoaXMgcGF0Y2ggc2VyaWVzLAo+IHRvIGJlIGFkZGVkIGluLXRyZWUu IFRoaXMgaW5jbHVkZXMgYXJjaGl0ZWN0dXJhbCBibG9jayBkaWFncmFtcy4KPiAKPiBLbm93biBH YXBzOgo+IC0tLS0tLS0tLS0tCj4gCj4gSVBFIGhhcyB0d28ga25vd24gZ2FwczoKPiAKPiAxLiBJ UEUgY2Fubm90IHZlcmlmeSB0aGUgaW50ZWdyaXR5IG9mIGFub255bW91cyBleGVjdXRhYmxlIG1l bW9yeSwgc3VjaCBhcwo+ICAgdGhlIHRyYW1wb2xpbmVzIGNyZWF0ZWQgYnkgZ2NjIGNsb3N1cmVz IGFuZCBsaWJmZmkgKDwzLjQuMiksIG9yIEpJVCdkIGNvZGUuCj4gICBVbmZvcnR1bmF0ZWx5LCBh cyB0aGlzIGlzIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBjb2RlLCB0aGVyZSBpcyBubyB3YXkKPiAg IGZvciBJUEUgdG8gZW5zdXJlIHRoZSBpbnRlZ3JpdHkgb2YgdGhpcyBjb2RlIHRvIGZvcm0gYSB0 cnVzdCBiYXNpcy4gSW4gYWxsCj4gICBjYXNlcywgdGhlIHJldHVybiByZXN1bHQgZm9yIHRoZXNl IG9wZXJhdGlvbnMgd2lsbCBiZSB3aGF0ZXZlciB0aGUgYWRtaW4KPiAgIGNvbmZpZ3VyZXMgdGhl IERFRkFVTFQgYWN0aW9uIGZvciAiRVhFQ1VURSIuCj4gCj4gMi4gSVBFIGNhbm5vdCB2ZXJpZnkg dGhlIGludGVncml0eSBvZiBpbnRlcnByZXRlZCBsYW5ndWFnZXMnIHByb2dyYW1zIHdoZW4KPiAg IHRoZXNlIHNjcmlwdHMgaW52b2tlZCB2aWEgYGA8aW50ZXJwcmV0ZXI+IDxmaWxlPmBgLiBUaGlz IGlzIGJlY2F1c2UgdGhlCj4gICB3YXkgaW50ZXJwcmV0ZXJzIGV4ZWN1dGUgdGhlc2UgZmlsZXMs IHRoZSBzY3JpcHRzIHRoZW1zZWx2ZXMgYXJlIG5vdAo+ICAgZXZhbHVhdGVkIGFzIGV4ZWN1dGFi bGUgY29kZSB0aHJvdWdoIG9uZSBvZiBJUEUncyBob29rcy4gSW50ZXJwcmV0ZXJzCj4gICBjYW4g YmUgZW5saWdodGVuZWQgdG8gdGhlIHVzYWdlIG9mIElQRSBieSB0cnlpbmcgdG8gbW1hcCBhIGZp bGUgaW50bwo+ICAgZXhlY3V0YWJsZSBtZW1vcnkgKCtYKSwgYWZ0ZXIgb3BlbmluZyB0aGUgZmls ZSBhbmQgcmVzcG9uZGluZyB0byB0aGUKPiAgIGVycm9yIGNvZGUgYXBwcm9wcmlhdGVseS4gVGhp cyBhbHNvIGFwcGxpZXMgdG8gaW5jbHVkZWQgZmlsZXMsIG9yIGhpZ2gKPiAgIHZhbHVlIGZpbGVz LCBzdWNoIGFzIGNvbmZpZ3VyYXRpb24gZmlsZXMgb2YgY3JpdGljYWwgc3lzdGVtIGNvbXBvbmVu dHMuCj4gICBIb3dldmVyLCB0aGVyZSBpcyBhIHBhdGNoc2V0IHRoYXQgaXMgbG9va2luZyB0byBh ZGRyZXNzIHRoaXMgZ2FwIFsxXS4KPiAKPiBBcHBlbmRpeDoKPiAtLS0tLS0tLS0KPiAKPiBBLiBJ UEUgR2l0aHViIFJlcG9zaXRvcnk6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvaXBlCj4g Qi4gSVBFIFVzZXJzJyBHdWlkZTogRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9MU00vaXBlLnJz dAo+IAo+IFJlZmVyZW5jZXM6Cj4gLS0tLS0tLS0tLS0KPiAKPiBbMV0gaHR0cHM6Ly9sb3JlLmtl cm5lbC5vcmcvYWxsLzIwMjExMDEyMTkyNDEwLjIzNTYwOTAtMS1taWNAZGlnaWtvZC5uZXQvCj4g Cj4gRkFROgo+IC0tLS0KPiAKPiBROiBXaGF0J3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvdGhl ciBMU01zIHdoaWNoIHByb3ZpZGUgdHJ1c3QtYmFzZWQKPiAgIGFjY2VzcyBjb250cm9sLCBmb3Ig aW5zdGFuY2UsIElNQT8KPiAKPiBBOiBJTUEgaXMgYSBmYW50YXN0aWMgb3B0aW9uIHdoZW4gbmVl ZGluZyBtZWFzdXJlbWVudCBpbiBhZGRpdGlvbiB0byB0aGUKPiAgIHRydXN0LWJhc2VkIGFjY2Vz cyBtb2RlbC4gQWxsIG9mIElNQSBpcyBjZW50ZXJlZCBhcm91bmQgdGhlaXIgbWVhc3VyZW1lbnQK PiAgIGhhc2hlcywgc28geW91IHNhdmUgdGltZSB3aGVuIGRvaW5nIGJvdGggYWN0aW9ucy4gSVBF LCBvbiB0aGUgb3RoZXIgaGFuZCwKPiAgIGlzIGEgaGlnaGx5IHBlcmZvcm1hbnQgc3lzdGVtIHRo YXQgZG9lcyBub3QgcmVseSAoYW5kIGV4cGxpY2l0bHkgcHJvaGliaXRzKSwKPiAgIGdlbmVyYXRp bmcgaXRzIG93biBpbnRlZ3JpdHkgbWVjaGFuaXNtcyAtIHNlcGFyYXRpbmcgbWVhc3VyZW1lbnQg YW5kIGFjY2Vzcwo+ICAgY29udHJvbC4gU2ltcGx5IHB1dCwgSVBFIHByb3ZpZGVzIG9ubHkgdGhl IGVuZm9yY2VtZW50IG9mIHRydXN0LCB3aGlsZSBvdGhlcgo+ICAgc3Vic3lzdGVtcyBwcm92aWRl IHRoZSBpbnRlZ3JpdHkgZ3VhcmFudGVlIHRoYXQgSVBFIG5lZWRzIHRvIGRldGVybWluZSB0aGUK PiAgIHRydXN0IG9mIGEgcmVzb3VyY2UuIElNQSBwcm92aWRlcyBib3RoIHRoZSBpbnRlZ3JpdHkg Z3VhcmFudGVlLCB0aGUKPiAgIGVuZm9yY2VtZW50IG9mIHRydXN0LCBhbmQgYSB3aG9sZSBob3N0 IG9mIG90aGVyIGZlYXR1cmVzIHRoYXQgbWF5IG5vdCBiZQo+ICAgbmVlZGVkLgo+IAo+IENoYW5n ZWxvZzoKPiAtLS0tLS0tLS0tCj4gCj4gQ2hhbmdlcyBzaW5jZSB2MToKPiAgIFNwbGl0IHRoZSBz ZWNvbmQgcGF0Y2ggb2YgdGhlIHByZXZpb3VzIHNlcmllcyBpbnRvIHR3by4KPiAgIE1pbm9yIGNv cnJlY3Rpb25zIGluIHRoZSBjb3Zlci1sZXR0ZXIgYW5kIGRvY3VtZW50YXRpb24KPiAgIGNvbW1l bnRzIHJlZ2FyZGluZyBDQVBfTUFDX0FETUlOIGNoZWNrcyBpbiBJUEUuCj4gCj4gQ2hhbmdlcyBz aW5jZSB2MjoKPiAgIEFkZHJlc3MgdmFyaW91cyBjb21tZW50cyBieSBKYW5uIEhvcm4uIEhpZ2hs aWdodHM6Cj4gICAgIFN3aXRjaCB2YXJpb3VzIGF1ZGl0IGFsbG9jYXRvcnMgdG8gR0ZQX0tFUk5F TC4KPiAgICAgVXRpbGl6ZSByY3VfYWNjZXNzX3BvaW50ZXIoKSBpbiB2YXJpb3VzIGxvY2F0aW9u cy4KPiAgICAgU3RyaXAgb3V0IHRoZSBjYWNoaW5nIHN5c3RlbSBmb3IgcHJvcGVydGllcwo+ICAg ICBTdHJpcCBjb21tZW50cyBmcm9tIGhlYWRlcnMKPiAgICAgTW92ZSBmdW5jdGlvbnMgYXJvdW5k IGluIHBhdGNoZXMKPiAgICAgUmVtb3ZlIGtlcm5lbCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycwo+ ICAgICBSZWNvbmNpbGUgdGhlIHJhY2UgY29uZGl0aW9uIG9uIHRoZSBkZWxldGUgbm9kZSBmb3Ig cG9saWN5IGJ5Cj4gICAgICAgZXhwYW5kaW5nIHRoZSBwb2xpY3kgY3JpdGljYWwgc2VjdGlvbi4K PiAKPiAgIEFkZHJlc3MgYSBmZXcgY29tbWVudHMgYnkgSm9uYXRoYW4gQ29yYmV0IGFyb3VuZCB0 aGUgZG9jdW1lbnRhdGlvbgo+ICAgICBwYWdlcyBmb3IgSVBFLgo+IAo+ICAgRml4IGFuIGlzc3Vl IHdpdGggdGhlIGluaXRpYWxpemF0aW9uIG9mIElQRSBwb2xpY3kgd2l0aCBhICItMCIKPiAgICAg dmVyc2lvbiwgY2F1c2VkIGJ5IG5vdCBpbml0aWFsaXppbmcgdGhlIGhsaXN0IGVudHJpZXMgYmVm b3JlCj4gICAgIGZyZWVpbmcuCj4gCj4gQ2hhbmdlcyBzaW5jZSB2MzoKPiAgIEFkZHJlc3MgYSBj b25jZXJuIGFyb3VuZCBJUEUncyBiZWhhdmlvciB3aXRoIHVua25vd24gc3ludGF4Lgo+ICAgICBT cGVjaWZpY2FsbHksIG1ha2UgYW55IHVua25vd24gc3ludGF4IGEgZmF0YWwgZXJyb3IgaW5zdGVh ZCBvZiBhCj4gICAgIHdhcm5pbmcsIGFzIHN1Z2dlc3RlZCBieSBNaWNrYcOrbCBTYWxhw7xuLgo+ ICAgSW50cm9kdWNlIGEgbmV3IHNlY3VyaXR5ZnMgbm9kZSwgJHNlY3VyaXR5ZnMvaXBlL3Byb3Bl cnR5X2NvbmZpZywKPiAgICAgd2hpY2ggcHJvdmlkZXMgYSBsaXN0aW5nIG9mIHdoYXQgcHJvcGVy dGllcyBhcmUgZW5hYmxlZCBieSB0aGUKPiAgICAga2VybmVsIGFuZCB0aGVpciB2ZXJzaW9ucy4g VGhpcyBhbGxvd3MgdXNlcm1vZGUgdG8gcHJlZGljdCB3aGF0Cj4gICAgIHBvbGljaWVzIHNob3Vs ZCBiZSBhbGxvd2VkLgo+ICAgU3RyaXAgc29tZSBjb21tZW50cyBmcm9tIGMgZmlsZXMgdGhhdCBJ IG1pc3NlZC4KPiAgIENsYXJpZnkgc29tZSBkb2N1bWVudGF0aW9uIGNvbW1lbnRzIGFyb3VuZCAn Ym9vdF92ZXJpZmllZCcuCj4gICAgIFdoaWxlIHRoaXMgY3VycmVudGx5IGRvZXMgbm90IGZ1bmN0 aW9uYWxseSBjaGFuZ2UgdGhlIHByb3BlcnR5Cj4gICAgIGl0c2VsZiwgdGhlIGRpc3RpbmN0aW9u IGlzIGltcG9ydGFudCB3aGVuIElQRSBjYW4gZW5mb3JjZSB2ZXJpZmllZAo+ICAgICByZWFkcy4g QWRkaXRpb25hbGx5LCAnS0VSTkVMX1JFQUQnIHdhcyBvbWl0dGVkIGZyb20gdGhlIGRvY3VtZW50 YXRpb24uCj4gICAgIFRoaXMgaGFzIGJlZW4gY29ycmVjdGVkLgo+ICAgQ2hhbmdlIFNlY3VyaXR5 RlMgYW5kIFNIQTEgdG8gYSByZXZlcnNlIGRlcGVuZGVuY3kuCj4gICBVcGRhdGUgdGhlIGNvdmVy LWxldHRlciB3aXRoIHRoZSB1cGRhdGVkIGJlaGF2aW9yIG9mIHVua25vd24gc3ludGF4Lgo+ICAg UmVtb3ZlIGFsbCBzeXNjdGxzLCBtYWtpbmcgYW4gZXF1aXZhbGVudCBmdW5jdGlvbiBpbiBzZWN1 cml0eWZzLgo+ICAgUmV3b3JrIHRoZSBhY3RpdmUvZGVsZXRlIG1lY2hhbmlzbSB0byBiZSBhIG5v ZGUgdW5kZXIgdGhlIHBvbGljeSBpbgo+ICAgICAkc2VjdXJpdHlmcy9pcGUvcG9saWNpZXMuCj4g ICBUaGUga2VybmVsIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzIGlwZS5lbmZvcmNlIGFuZCBpcGUu c3VjY2Vzc19hdWRpdAo+ICAgICBoYXZlIHJldHVybmVkIGFzIHRoaXMgZnVuY3Rpb25hbGl0eSBp cyBubyBsb25nZXIgZXhwb3NlZCB0aHJvdWdoCj4gICAgIHN5c2ZzLgo+IAo+IENoYW5nZXMgc2lu Y2UgdjQ6Cj4gICBDb3JyZWN0IHNvbWUgZ3JhbW1hdGljYWwgZXJyb3JzIHJlcG9ydGVkIGJ5IFJh bmR5IER1bmxhcC4KPiAgIEZpeCBzb21lIHdhcm5pbmdzIHJlcG9ydGVkIGJ5IGtlcm5lbCB0ZXN0 IGJvdC4KPiAgIENoYW5nZSBjb252ZW50aW9uIGFyb3VuZCBzZWN1cml0eV9iZGV2X3NldHNlY3Vy aXR5LiAtRU5PU1lTCj4gICAgIGlzIG5vdyBleHBlY3RlZCBpZiBhbiBMU00gZG9lcyBub3QgaW1w bGVtZW50IGEgcGFydGljdWxhciBAbmFtZSwKPiAgICAgYXMgc3VnZ2VzdGVkIGJ5IENhc2V5IFNj aGF1Zmxlci4KPiAgIE1pbm9yIHN0cmluZyBjb3JyZWN0aW9ucyByZWxhdGVkIHRvIHRoZSBtb3Zl IGZyb20gc3lzZnMgdG8gc2VjdXJpdHlmcwo+ICAgQ29ycmVjdCBhIHNwZWxsaW5nIG9mIGFuICNp ZmRlZiBmb3IgdGhlIHBlcm1pc3NpdmUgYXJndW1lbnQuCj4gICBBZGQgdGhlIGtlcm5lbCBwYXJh bWV0ZXJzIHJlLWFkZGVkIHRvIHRoZSBkb2N1bWVudGF0aW9uLgo+ICAgRml4IGEgbWlub3IgYnVn IHdoZXJlIHRoZSBtb2RlIGJlaW5nIGF1ZGl0ZWQgb24gcGVybWlzc2l2ZSBzd2l0Y2gKPiAgICAg d2FzIHRoZSBvcmlnaW5hbCBtb2RlLCBub3QgdGhlIG1vZGUgYmVpbmcgc3dhcHBlZCB0by4KPiAg IENsZWFudXAgZG9jIGNvbW1lbnRzLCBmaXggc29tZSB3aGl0ZXNwYWNlIGFsaWdubWVudCBpc3N1 ZXMuCj4gCj4gQ2hhbmdlcyBzaW5jZSB2NToKPiAgIENoYW5nZSBpZiBzdGF0ZW1lbnQgY29uZGl0 aW9uIGluIHNlY3VyaXR5X2JkZXZfc2V0c2VjdXJpdHkgdG8gYmUKPiAgICAgbW9yZSBjb25jaXNl LCBhcyBzdWdnZXN0ZWQgYnkgQ2FzZXkgU2NoYXVmbGVyIGFuZCBBbCBWaXJvCj4gICBEcm9wIHRo ZSA2dGggcGF0Y2ggaW4gdGhlIHNlcmllcywgImRtLXZlcml0eSBtb3ZlIHNpZ25hdHVyZSBjaGVj ay4uLiIKPiAgICAgZHVlIHRvIG51bWVyb3VzIGlzc3VlcywgYW5kIGl0IHVsdGltYXRlbHkgcHJv dmlkaW5nIG5vIHJlYWwgdmFsdWUuCj4gICBGaXggdGhlIHBhdGNoIHRyZWUgLSB0aGUgcHJldmlv dXMgaXRlcmF0aW9uIGFwcGVhcnMgdG8gaGF2ZSBiZWVuIGluIGEKPiAgICAgdG9ybiBzdGF0ZSAo cGF0Y2hlcyA4Kzkgd2VyZSBtZXJnZWQpLiBUaGlzIGhhcyBzaW5jZSBiZWVuIGNvcnJlY3RlZC4K PiAKPiBDaGFuZ2VzIHNpbmNlIHY2Ogo+ICAgKiBSZXdvcmQgY292ZXIgbGV0dGVyIHRvIG1vcmUg YWNjdXJhdGUgY29udmV5IElQRSdzIHB1cnBvc2UKPiAgICAgYW5kIGxhdGVzdCB1cGRhdGVzLgo+ ICAgKiBSZWZhY3RvciBzZXJpZXMgdG86Cj4gICAgICAgMS4gU3VwcG9ydCBhIGNvbnRleHQgc3Ry dWN0dXJlLCBlbmFibGluZzoKPiAgICAgICAgICAgMS4gRWFzaWVyIFRlc3RpbmcgdmlhIEtVTklU Cj4gICAgICAgICAgIDIuIEEgYmV0dGVyIGFyY2hpdGVjdHVyZSBmb3IgZnV0dXJlIGRlc2lnbnMK PiAgICAgICAyLiBNYWtlIHBhcnNlciBjb2RlIGNsZWFuZXIKPiAgICogTW92ZSBwYXRjaCAwMS8x MiB0byBbMTQvMTZdIG9mIHRoZSBzZXJpZXMKPiAgICogU3BsaXQgdXAgcGF0Y2ggMDIvMTIgaW50 byBmb3VyIHBhcnRzOgo+ICAgICAgIDEuIGNvbnRleHQgY3JlYXRpb24gWzAxLzE2XQo+ICAgICAg IDIuIGF1ZGl0IFswNy8xNl0KPiAgICAgICAzLiBldmFsdWF0aW9uIGxvb3AgWzAzLzE2XQo+ICAg ICAgIDQuIGFjY2VzcyBjb250cm9sIGhvb2tzIFswNS8xNl0KPiAgICAgICA1LiBwZXJtaXNzaXZl IG1vZGUgWzA4LzE2XQo+ICAgKiBTcGxpdCB1cCBwYXRjaCAwMy8xMiBpbnRvIHR3byBwYXJ0czoK PiAgICAgICAxLiBwYXJzZXIgWzAyLzE2XQo+ICAgICAgIDIuIHVzZXJzcGFjZSBpbnRlcmZhY2Ug WzA0LzE2XQo+ICAgKiBSZXdvcmQgYW5kIHJlZmFjdG9yIHBhdGNoIDA0LzEyIHRvIFswOS8xNl0K PiAgICogU3F1YXNoIHBhdGNoIDA1LzEyLCAwNy8xMiwgMDkvMTIgdG8gWzEwLzE2XQo+ICAgKiBT cXVhc2ggcGF0Y2ggMDgvMTIsIDEwLzEyIHRvIFsxMS8xNl0KPiAgICogQ2hhbmdlIGF1ZGl0IHJl Y29yZHMgdG8gTUFDIHJlZ2lvbiAoMTRYWCkgZnJvbSBJbnRlZ3JpdHkgcmVnaW9uICgxOFhYKQo+ ICAgKiBBZGQgRlNWZXJpdHkgU3VwcG9ydAo+ICAgKiBJbnRlcmZhY2UgY2hhbmdlczoKPiAgICAg ICAxLiAicmF3IiB3YXMgcmVuYW1lZCB0byAicGtjczciIGFuZCBtYWRlIHJlYWQgb25seQo+ICAg ICAgIDIuICJyYXciJ3Mgd3JpdGUgZnVuY3Rpb25hbGl0eSAodXBkYXRlIGEgcG9saWN5KSBtb3Zl ZCB0byAidXBkYXRlIgo+ICAgICAgIDMuIGludHJvZHVjZWQgInZlcnNpb24iLCAicG9saWN5X25h bWUiIG5vZGVzLgo+ICAgICAgIDQuICJjb250ZW50IiByZW5hbWVkIHRvICJwb2xpY3kiCj4gICAg ICAgNS4gVGhlIGJvb3QgcG9saWN5IGNhbiBub3cgYmUgdXBkYXRlZCBsaWtlIGFueSBvdGhlciBw b2xpY3kuCj4gICAqIEFkZCBhZGRpdGlvbmFsIGRldmVsb3Blci1sZXZlbCBkb2N1bWVudGF0aW9u Cj4gICAqIFVwZGF0ZSBhZG1pbi1ndWlkZSBkb2NzIHRvIHJlZmxlY3QgY2hhbmdlcy4KPiAgICog S3VuaXQgdGVzdHMKPiAgICogRHJvcHBlZCBDT05GSUdfU0VDVVJJVFlfSVBFX1BFUk1JU1NJVkVf U1dJVENIIC0gZnVuY3Rpb25hbGl0eSBjYW4KPiAgICAgZWFzaWx5IGNvbWUgbGF0ZXIgd2l0aCBh IHNtYWxsIHBhdGNoLgo+ICAgKiBVc2UgcGFydGl0aW9uMCBmb3IgYmxvY2tfZGV2aWNlIGZvciBk bS12ZXJpdHkgcGF0Y2gKPiAKPiBEZXZlbiBCb3dlcnMgKDE0KToKPiAgIHNlY3VyaXR5OiBhZGQg aXBlIGxzbSAmIGluaXRpYWwgY29udGV4dCBjcmVhdGlvbgo+ICAgaXBlOiBhZGQgcG9saWN5IHBh cnNlcgo+ICAgaXBlOiBhZGQgZXZhbHVhdGlvbiBsb29wCj4gICBpcGU6IGFkZCB1c2Vyc3BhY2Ug aW50ZXJmYWNlCj4gICBpcGU6IGFkZCBMU00gaG9va3Mgb24gZXhlY3V0aW9uIGFuZCBrZXJuZWwg cmVhZAo+ICAgdWFwaXxhdWRpdDogYWRkIHRydXN0IGF1ZGl0IG1lc3NhZ2UgZGVmaW5pdGlvbnMK PiAgIGlwZTogYWRkIGF1ZGl0aW5nIHN1cHBvcnQKPiAgIGlwZTogYWRkIHBlcm1pc3NpdmUgdG9n Z2xlCj4gICBpcGU6IGludHJvZHVjZSAnYm9vdF92ZXJpZmllZCcgYXMgYSB0cnVzdCBwcm92aWRl cgo+ICAgZnN8ZG0tdmVyaXR5OiBhZGQgYmxvY2tfZGV2IExTTSBibG9iIGFuZCBzdWJtaXQgZG0t dmVyaXR5IGRhdGEKPiAgIGlwZTogYWRkIHN1cHBvcnQgZm9yIGRtLXZlcml0eSBhcyBhIHRydXN0 IHByb3ZpZGVyCj4gICBzY3JpcHRzOiBhZGQgYm9vdCBwb2xpY3kgZ2VuZXJhdGlvbiBwcm9ncmFt Cj4gICBpcGU6IGt1bml0IHRlc3RzCj4gICBkb2N1bWVudGF0aW9uOiBhZGQgaXBlIGRvY3VtZW50 YXRpb24KPiAKPiBGYW4gV3UgKDIpOgo+ICAgZnN2ZXJpdHl8c2VjdXJpdHk6IGFkZCBzZWN1cml0 eSBob29rcyB0byBmc3Zlcml0eSBkaWdlc3QgYW5kIHNpZ25hdHVyZQo+ICAgaXBlOiBlbmFibGUg c3VwcG9ydCBmb3IgZnMtdmVyaXR5IGFzIGEgdHJ1c3QgcHJvdmlkZXIKPiAKPiAgRG9jdW1lbnRh dGlvbi9hZG1pbi1ndWlkZS9MU00vaW5kZXgucnN0ICAgICAgIHwgICAgMSArCj4gIERvY3VtZW50 YXRpb24vYWRtaW4tZ3VpZGUvTFNNL2lwZS5yc3QgICAgICAgICB8ICA1ODcgKysrKysrKysrKwo+ ICAuLi4vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0ICAgICAgICAgfCAgIDEyICsK PiAgRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9pbmRleC5yc3QgICAgICAgICAgICAgIHwgICAgMSAr Cj4gIERvY3VtZW50YXRpb24vc2VjdXJpdHkvaXBlLnJzdCAgICAgICAgICAgICAgICB8ICAzMzkg KysrKysrCj4gIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDkgKwo+ICBibG9jay9iZGV2LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICA3ICsKPiAgZHJpdmVycy9tZC9kbS12ZXJpdHktdGFyZ2V0LmMgICAgICAgICAgICAgICAg IHwgICAyMCArLQo+ICBkcml2ZXJzL21kL2RtLXZlcml0eS12ZXJpZnktc2lnLmMgICAgICAgICAg ICAgfCAgIDE2ICstCj4gIGRyaXZlcnMvbWQvZG0tdmVyaXR5LXZlcmlmeS1zaWcuaCAgICAgICAg ICAgICB8ICAgMTAgKy0KPiAgZnMvdmVyaXR5L29wZW4uYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAxMiArCj4gIGZzL3Zlcml0eS9zaWduYXR1cmUuYyAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDUgKy0KPiAgaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oICAg ICAgICAgICAgIHwgICAxNiArCj4gIGluY2x1ZGUvbGludXgvYmxrX3R5cGVzLmggICAgICAgICAg ICAgICAgICAgICB8ICAgIDEgKwo+ICBpbmNsdWRlL2xpbnV4L2RldmljZS1tYXBwZXIuaCAgICAg ICAgICAgICAgICAgfCAgICAzICsKPiAgaW5jbHVkZS9saW51eC9mc3Zlcml0eS5oICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMyArCj4gIGluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oICAg ICAgICAgICAgICAgICB8ICAgIDUgKwo+ICBpbmNsdWRlL2xpbnV4L2xzbV9ob29rcy5oICAgICAg ICAgICAgICAgICAgICAgfCAgIDEyICsKPiAgaW5jbHVkZS9saW51eC9zZWN1cml0eS5oICAgICAg ICAgICAgICAgICAgICAgIHwgICAyMiArCj4gIGluY2x1ZGUvdWFwaS9saW51eC9hdWRpdC5oICAg ICAgICAgICAgICAgICAgICB8ICAgIDQgKwo+ICBzY3JpcHRzL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgc2NyaXB0cy9pcGUvTWFrZWZpbGUgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMiArCj4gIHNjcmlwdHMvaXBlL3BvbGdlbi8uZ2l0aWdu b3JlICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ICBzY3JpcHRzL2lwZS9wb2xnZW4vTWFrZWZp bGUgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKPiAgc2NyaXB0cy9pcGUvcG9sZ2VuL3BvbGdl bi5jICAgICAgICAgICAgICAgICAgIHwgIDE0NSArKysKPiAgc2VjdXJpdHkvS2NvbmZpZyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArLQo+ICBzZWN1cml0eS9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgc2VjdXJpdHkvaXBlLy5naXRp Z25vcmUgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCj4gIHNlY3VyaXR5L2lwZS9LY29u ZmlnICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMDAgKysKPiAgc2VjdXJpdHkvaXBlL01h a2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzOSArCj4gIHNlY3VyaXR5L2lwZS9h dWRpdC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMDQgKysrKysKPiAgc2VjdXJpdHkv aXBlL2F1ZGl0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MSArCj4gIHNlY3VyaXR5 L2lwZS9jdHguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzODEgKysrKysrCj4gIHNl Y3VyaXR5L2lwZS9jdHguaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDMgKwo+ICBz ZWN1cml0eS9pcGUvY3R4X3Rlc3QuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNzMyICsrKysr KysrKysrKwo+ICBzZWN1cml0eS9pcGUvZXZhbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMjM3ICsrKysKPiAgc2VjdXJpdHkvaXBlL2V2YWwuaCAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICA1NyArCj4gIHNlY3VyaXR5L2lwZS9mcy5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAzMjcgKysrKysrCj4gIHNlY3VyaXR5L2lwZS9mcy5oICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMTMgKwo+ICBzZWN1cml0eS9pcGUvaG9va3MuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMzI4ICsrKysrKwo+ICBzZWN1cml0eS9pcGUvaG9va3MuaCAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDU2ICsKPiAgc2VjdXJpdHkvaXBlL2lwZS5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDE0MyArKysKPiAgc2VjdXJpdHkvaXBlL2lwZS5oICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArCj4gIHNlY3VyaXR5L2lwZS9pcGVfcGFyc2Vy LmggICAgICAgICAgICAgICAgICAgICB8ICAgNTkgKwo+ICBzZWN1cml0eS9pcGUvbW9kdWxlcy5j ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTM0ICsrKwo+ICBzZWN1cml0eS9pcGUvbW9kdWxl cy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICsKPiAgc2VjdXJpdHkvaXBlL21vZHVs ZXMvS2NvbmZpZyAgICAgICAgICAgICAgICAgIHwgICA2NiArKwo+ICBzZWN1cml0eS9pcGUvbW9k dWxlcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEyICsKPiAgc2VjdXJpdHkvaXBlL21v ZHVsZXMvYm9vdF92ZXJpZmllZC5jICAgICAgICAgIHwgICAyNCArCj4gIHNlY3VyaXR5L2lwZS9t b2R1bGVzL2RtdmVyaXR5X3Jvb3RoYXNoLmMgICAgICB8ICAgODAgKysKPiAgc2VjdXJpdHkvaXBl L21vZHVsZXMvZG12ZXJpdHlfc2lnbmF0dXJlLmMgICAgIHwgICAyNSArCj4gIHNlY3VyaXR5L2lw ZS9tb2R1bGVzL2ZzdmVyaXR5X2RpZ2VzdC5jICAgICAgICB8ICAgODAgKysKPiAgc2VjdXJpdHkv aXBlL21vZHVsZXMvZnN2ZXJpdHlfc2lnbmF0dXJlLmMgICAgIHwgICAzMyArCj4gIHNlY3VyaXR5 L2lwZS9tb2R1bGVzL2lwZV9tb2R1bGUuaCAgICAgICAgICAgICB8ICAgNDAgKwo+ICBzZWN1cml0 eS9pcGUvcGFyc2Vycy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTM5ICsrKwo+ICBzZWN1 cml0eS9pcGUvcGFyc2Vycy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEyICsKPiAgc2Vj dXJpdHkvaXBlL3BhcnNlcnMvZGVmYXVsdC5jICAgICAgICAgICAgICAgIHwgIDEwNiArKwo+ICBz ZWN1cml0eS9pcGUvcGFyc2Vycy9wb2xpY3lfaGVhZGVyLmMgICAgICAgICAgfCAgMTI2ICsrCj4g IHNlY3VyaXR5L2lwZS9wb2xpY3kuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwMzcgKysr KysrKysrKysrKysrKysKPiAgc2VjdXJpdHkvaXBlL3BvbGljeS5oICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDExMyArKwo+ICBzZWN1cml0eS9pcGUvcG9saWN5X3BhcnNlcl90ZXN0cy5jICAg ICAgICAgICAgfCAgMjk5ICsrKysrCj4gIHNlY3VyaXR5L2lwZS9wb2xpY3lmcy5jICAgICAgICAg ICAgICAgICAgICAgICB8ICA1MjggKysrKysrKysrCj4gIHNlY3VyaXR5L3NlY3VyaXR5LmMgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzYgKy0KPiAgNjMgZmlsZXMgY2hhbmdlZCwgNzA2 OSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IERv Y3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvTFNNL2lwZS5yc3QKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IERvY3VtZW50YXRpb24vc2VjdXJpdHkvaXBlLnJzdAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2Ny aXB0cy9pcGUvTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNjcmlwdHMvaXBlL3BvbGdl bi8uZ2l0aWdub3JlCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzY3JpcHRzL2lwZS9wb2xnZW4vTWFr ZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNjcmlwdHMvaXBlL3BvbGdlbi9wb2xnZW4uYwo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlLy5naXRpZ25vcmUKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9LY29uZmlnCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1 cml0eS9pcGUvTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9hdWRp dC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvYXVkaXQuaAo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL2N0eC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1 cml0eS9pcGUvY3R4LmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9jdHhfdGVz dC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvZXZhbC5jCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvZXZhbC5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1 cml0eS9pcGUvZnMuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL2ZzLmgKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9ob29rcy5jCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBzZWN1cml0eS9pcGUvaG9va3MuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkv aXBlL2lwZS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvaXBlLmgKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9pcGVfcGFyc2VyLmgKPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IHNlY3VyaXR5L2lwZS9tb2R1bGVzLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3Vy aXR5L2lwZS9tb2R1bGVzLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9tb2R1 bGVzL0tjb25maWcKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9tb2R1bGVzL01h a2VmaWxlCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvbW9kdWxlcy9ib290X3Zl cmlmaWVkLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9tb2R1bGVzL2RtdmVy aXR5X3Jvb3RoYXNoLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9tb2R1bGVz L2RtdmVyaXR5X3NpZ25hdHVyZS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUv bW9kdWxlcy9mc3Zlcml0eV9kaWdlc3QuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkv aXBlL21vZHVsZXMvZnN2ZXJpdHlfc2lnbmF0dXJlLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNl Y3VyaXR5L2lwZS9tb2R1bGVzL2lwZV9tb2R1bGUuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2Vj dXJpdHkvaXBlL3BhcnNlcnMuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL3Bh cnNlcnMvTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9wYXJzZXJz L2RlZmF1bHQuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvaXBlL3BhcnNlcnMvcG9s aWN5X2hlYWRlci5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9pcGUvcG9saWN5LmMK PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2lwZS9wb2xpY3kuaAo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgc2VjdXJpdHkvaXBlL3BvbGljeV9wYXJzZXJfdGVzdHMuYwo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgc2VjdXJpdHkvaXBlL3BvbGljeWZzLmMKPiAKPiAtLQo+IDIuMzMuMAoKCi0tCkxp bnV4LWF1ZGl0IG1haWxpbmcgbGlzdApMaW51eC1hdWRpdEByZWRoYXQuY29tCmh0dHBzOi8vbGlz dG1hbi5yZWRoYXQuY29tL21haWxtYW4vbGlzdGluZm8vbGludXgtYXVkaXQ=