From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.92.72.72; helo=eur03-ve1-obe.outbound.protection.outlook.com; envelope-from=marvin.haeuser@outlook.com; receiver=edk2-devel@lists.01.org Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-oln040092072072.outbound.protection.outlook.com [40.92.72.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6F3CE209603F9 for ; Tue, 15 May 2018 08:38:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=33SIa7o5Rd/4xubhs+mnc/O4crRPqvUtXQrchDmTj74=; b=aR6spgGb2vjERw0h8kMSmTlTWx6IUDeIuKlL53Luwk6WcxvWFlkZCE9OwlcXiH0mHlhzqigWJ6Ys4NVO7wEjj/4f03A8H/ko2nTH5T9qPRoM4s5Zs3c+gM10pf3bX4XkKERCVmAiH8CJO95VyYRbZwZvFhE2tnwuSS4yoZpCZipznhhXYjI3J92Ff0tDhjHvruWabshxa+PtayOAF6O8vJsgEVMNdZuMnYQrlQEqmPkq1RNzGECgRjpiJqfq4h3/2WsErn6jmQA4GU8vtpLKLVqd2ctyB7ESx+1EC+QyDeksdYIn9jO5CVcIsHeeXf2inmU3QiMB9oz0H8ijYSvy0Q== Received: from DB5EUR03FT056.eop-EUR03.prod.protection.outlook.com (10.152.20.59) by DB5EUR03HT153.eop-EUR03.prod.protection.outlook.com (10.152.21.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.735.16; Tue, 15 May 2018 15:38:53 +0000 Received: from VI1PR0801MB1790.eurprd08.prod.outlook.com (10.152.20.54) by DB5EUR03FT056.mail.protection.outlook.com (10.152.21.124) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.735.16 via Frontend Transport; Tue, 15 May 2018 15:38:53 +0000 Received: from VI1PR0801MB1790.eurprd08.prod.outlook.com ([fe80::7c79:584b:2e12:783e]) by VI1PR0801MB1790.eurprd08.prod.outlook.com ([fe80::7c79:584b:2e12:783e%17]) with mapi id 15.20.0755.018; Tue, 15 May 2018 15:38:53 +0000 From: =?utf-8?B?TWFydmluIEjDpHVzZXI=?= To: "edk2-devel@lists.01.org" , Laszlo Ersek CC: "gsomlo@gmail.com" , "ard.biesheuvel@linaro.org" , "ruiyu.ni@intel.com" , "eric.dong@intel.com" , "star.zeng@intel.com" , "jordan.l.justen@intel.com" Thread-Topic: [edk2] Proposition of a BmEnumerateBootOptions() hook. Thread-Index: AdPrsgMo2EIXJLdYQImjwNC1Y2yr9AAc9lEAAABs7yAACxpkAAACocsg Date: Tue, 15 May 2018 15:38:53 +0000 Message-ID: References: <12b0e557-4f3b-3766-1e52-c069c02b692e@redhat.com> <9d7aa3e0-d342-ab5a-f54b-2a853a5fcf57@redhat.com> In-Reply-To: <9d7aa3e0-d342-ab5a-f54b-2a853a5fcf57@redhat.com> Accept-Language: de-DE, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:7A657C9554DCF05771D807624875E74A206D4307618882B91994E17A92AB7F45; UpperCasedChecksum:BD1BDAB89840BBABA5CB99C896FFD52754143A8E25254D5A18C64D6D1E436ABF; SizeAsReceived:7609; Count:46 x-tmn: [wHfqg7TAgRWTeJafEsiprP6PiKqELgBf] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB5EUR03HT153; 7:+7Zek1mqmY59TsoxjS/SRR9GDdwG0xbv2/j/2LZrYa8TrE1MGUFdSmEUnfT/AApHAkdbfv7kJlBfEwepstPF2m17q6hsjFKG1EPqGtszerXu6xcSPhWtjvgph4H+KOTRW9OuTY2lfZQ49F79YDwDb8KPvouw+qe9S5hE0HFLf2tMheInd6TlcnZo+TsTLMpmYNX68wGYbviWAXc++ket3cHPX8+0RERcQcH3E4YArRAWx9cW41a/nXIEHLRrMtBd x-incomingheadercount: 46 x-eopattributedmessage: 0 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(201702061078)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1603101448)(1601125464)(1701031045); SRVR:DB5EUR03HT153; x-ms-traffictypediagnostic: DB5EUR03HT153: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(444000031); SRVR:DB5EUR03HT153; BCL:0; PCL:0; RULEID:; SRVR:DB5EUR03HT153; x-forefront-prvs: 0673F5BE31 x-forefront-antispam-report: SFV:NSPM; SFS:(7070007)(6029001)(53234004)(189003)(199004)(51444003)(13464003)(82202002)(39060400002)(2501003)(3660700001)(5660300001)(74316002)(33656002)(6346003)(87572001)(486006)(99286004)(72206003)(26005)(5250100002)(55016002)(14454004)(305945005)(6246003)(68736007)(3280700002)(25786009)(5890100001)(85182001)(229853002)(2900100001)(20460500001)(4326008)(446003)(426003)(7696005)(11346002)(6436002)(97736004)(105586002)(476003)(76176011)(93886005)(81156014)(53546011)(54906003)(8676002)(59450400001)(110136005)(85202003)(86362001)(8936002)(104016004)(102836004)(106356001); DIR:OUT; SFP:1901; SCL:1; SRVR:DB5EUR03HT153; H:VI1PR0801MB1790.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:; received-spf: None (protection.outlook.com: outlook.com does not designate permitted sender hosts) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Marvin.Haeuser@outlook.com; x-microsoft-antispam-message-info: 1gFF6FjQFgPS3h5P0TJ7GNtxpZM/id4hzd8FnPnwwtvhX64g03BXFJb0MdEqMnrWxulVjmcKw+V0iSZXcek8HQZyB+4sAoC1UgX4Qnt9UDmGzkNOd5NWgIjMx89sLSsyYNN77PWbXSkA+h3YL+wPUDbgorK2Ge0NSXHaDeA92jxNy52AIie987ofARodXhvL MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 9d621934-ec11-42ab-f1a4-08d5ba79f6e7 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 7181d4b0-87d6-4f4e-ba33-0d3746212cec X-MS-Exchange-CrossTenant-Network-Message-Id: 9d621934-ec11-42ab-f1a4-08d5ba79f6e7 X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 7181d4b0-87d6-4f4e-ba33-0d3746212cec X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2018 15:38:53.8529 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5EUR03HT153 Subject: Re: Proposition of a BmEnumerateBootOptions() hook. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 May 2018 15:38:58 -0000 Content-Language: de-DE Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNl a0ByZWRoYXQuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBNYXkgMTUsIDIwMTggMzo1MyBQTQ0KPiBU bzogTWFydmluIEjDpHVzZXIgPE1hcnZpbi5IYWV1c2VyQG91dGxvb2suY29tPjsgZWRrMi0NCj4g ZGV2ZWxAbGlzdHMuMDEub3JnDQo+IENjOiBlcmljLmRvbmdAaW50ZWwuY29tOyBzdGFyLnplbmdA aW50ZWwuY29tOyBqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tOw0KPiBhcmQuYmllc2hldXZlbEBs aW5hcm8ub3JnOyBydWl5dS5uaUBpbnRlbC5jb207IEdhYnJpZWwgTC4gU29tbG8gKEdNYWlsKQ0K PiA8Z3NvbWxvQGdtYWlsLmNvbT47IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPg0K PiBTdWJqZWN0OiBSZTogW2VkazJdIFByb3Bvc2l0aW9uIG9mIGEgQm1FbnVtZXJhdGVCb290T3B0 aW9ucygpIGhvb2suDQo+IA0KPiBPbiAwNS8xNS8xOCAxNTowMiwgTWFydmluIEjDpHVzZXIgd3Jv dGU6DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IExhc3psbyBF cnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4+IFNlbnQ6IFR1ZXNkYXksIE1heSAxNSwgMjAx OCAxMDoyMiBBTQ0KPiA+PiBUbzogTWFydmluIEjDpHVzZXIgPE1hcnZpbi5IYWV1c2VyQG91dGxv b2suY29tPjsgZWRrMi0NCj4gPj4gZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4+IENjOiBlcmljLmRv bmdAaW50ZWwuY29tOyBzdGFyLnplbmdAaW50ZWwuY29tDQo+ID4+IFN1YmplY3Q6IFJlOiBbZWRr Ml0gUHJvcG9zaXRpb24gb2YgYSBCbUVudW1lcmF0ZUJvb3RPcHRpb25zKCkgaG9vay4NCj4gPj4N Cj4gPj4gT24gMDUvMTQvMTggMjE6MDAsIE1hcnZpbiBIw6R1c2VyIHdyb3RlOg0KPiA+Pj4gWy4u Ll0gdGhlcmUgaXMgYQ0KPiA+Pj4gZnVuY3Rpb24gaW4gdGhlIFVlZmlCb290TWFuYWdlckxpYiwg IkJtRW51bWVyYXRlQm9vdE9wdGlvbnMoKSIsDQo+ID4+PiB3aGljaCBpcyBjYWxsZWQgcHJpb3Ig dG8gZW50ZXJpbmcgdGhlIEJvb3QgTWVudSBhbmQsIGluIG15IG9waW5pb24sDQo+ID4+PiB3b3Vs ZCBiZSB0aGUgcGVyZmVjdCBwbGFjZSB0byBpbnRyb2R1Y2UgYW5vdGhlcg0KPiA+Pj4gUGxhdGZv cm1Cb290TWFuYWdlckxpYiBob29rLCB3aGljaCByZXRyaWV2ZXMgcGxhdGZvcm0tc3BlY2lmaWMg Ym9vdA0KPiA+Pj4gb3B0aW9ucywgc3VjaCBhcyBhbiBVRUZJIFNoZWxsIG9yIG90aGVyIHV0aWxp dGllcyBsaWtlIGEgTWVtb3J5IFRlc3QNCj4gPj4+IGFwcGxpY2F0aW9uLg0KPiA+Pg0KPiA+PiBI bW1tLCBJJ20gbm90IHN1cmUuIFRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgY2FsbHMNCj4gPj4gQm1F bnVtZXJhdGVCb290T3B0aW9ucygpIGlzIEVmaUJvb3RNYW5hZ2VyUmVmcmVzaEFsbEJvb3RPcHRp b24oKS4NCj4gVGhlDQo+ID4+IGxhdHRlciBpcyBhIHB1YmxpYyBVZWZpQm9vdE1hbmFnZXJMaWIg QVBJIHRoYXQgc2V2ZXJhbA0KPiA+PiBQbGF0Zm9ybUJvb3RNYW5hZ2VyTGliIGluc3RhbmNlcyBj YWxsLCB1c3VhbGx5IGZyb20NCj4gPj4gUGxhdGZvcm1Cb290TWFuYWdlckFmdGVyQ29uc29sZSgp Lg0KPiBQbGF0Zm9ybUJvb3RNYW5hZ2VyQWZ0ZXJDb25zb2xlKCkNCj4gPg0KPiA+IEkgaGF2ZSBt aXN1bmRlcnN0b29kIHRoZSBjdXJyZW50IGVkazIgbG9naWMgdG8gYmUgd2hhdCBJIGV4cGVjdGVk DQo+ID4gKHBhcnRpYWxseSksIGhvd2V2ZXIgSSBoYXZlIGp1c3QgZGlzY292ZXJlZCB0aGF0IHNj YW5uZWQgYm9vdCBvcHRpb25zDQo+ID4gYXJlIGFkZGVkIHRvIE5WIGFuZCB0byBCb290T3JkZXIu DQo+IA0KPiBUaGlzIGlzIG5vdCBhIGNvaW5jaWRlbmNlLiBUaGF0J3Mgd2hhdCB0aGUNCj4gRWZp Qm9vdE1hbmFnZXJSZWZyZXNoQWxsQm9vdE9wdGlvbigpIEFQSSBkb2VzLCBieSBkZXNpZ24sIGFu ZCB0aGF0J3MgdGhlDQo+IGZ1bmN0aW9uYWxpdHkgZm9yIHdoaWNoIHBsYXRmb3JtcyBjYWxsIHRo ZSBBUEkuDQo+IA0KPiA+IEZ1cnRoZXJtb3JlLCBJIGRpZCBub3QgbWVudGlvbiBhbm90aGVyIHVz YWdlIGNhc2UgZm9yIHRoZSBwcm9wb3NlZA0KPiA+IGhvb2sgYXMgSSB0aG91Z2h0IGl0IHdhcyBw cmFjdGljYWxseSBpcnJlbGV2YW50IHRvIHRoZSBlZGsyIGNvbW11bml0eToNCj4gPiBTdXBwb3J0 aW5nIEFwcGxlJ3MgYmxlc3MgYm9vdCBjb25jZXB0LiAoRm9yIHRob3NlIHdobyB3b25kZXIsDQo+ ID4gdmlydHVhbGl6aW5nIG1hY09TIG9uIEFwcGxlIGhhcmR3YXJlIGlzIHBlcmZlY3RseSBsZWdh bCkuIFNvLCBJIHdpbGwNCj4gPiBoYXZlIHRvIGV4cGxhaW4gYSBiaXQgbW9yZSBpbiBkZXRhaWws IGluIHR3byBwYXJ0cy4NCj4gPg0KPiA+IFVFRkkgQk9PVA0KPiA+DQo+ID4gV2hhdCBJIGltYWdp bmVkIHRvIGJlIHRoZSBib290IGZsb3csIGJ5IHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBieSBteQ0K PiA+IHBlcnNvbmFsIHRhc3RlLCBpcyB0aGUgZm9sbG93aW5nOg0KPiA+IDEuIEJvb3QgQm9vdE9y ZGVyW10gb25lLWJ5LW9uZS4gVGhpcyBjb25uZWN0cyB0aGUgcmVmZXJlbmNlZCBkcml2ZSBhbmQN Cj4gPiAgICBhdHRlbXB0cyB0byBzdGFydCB0aGUgc3BlY2lmaWVkIGZpbGUuIFRoaXMgaXMgdGhl IGNhc2UgdG9kYXkuDQo+ID4gMi4gQm9vdCAqUmVjb3ZlcnlbXS4gVGhpcyBpcyB0aGUgY2FzZSB0 b2RheS4NCj4gPiAzLiBUaGVyZSBhcmUgdHdvIGFsdGVybmF0aXZlcyBoZXJlLCBiYXNlZCBvbiBw bGF0Zm9ybSBwcmVmZXJlbmNlLg0KPiA+IDMuMS4gQm9vdCBlbnVtZXJhdGVkIGRyaXZlcyAodmlh IHRoZSBhbGdvcml0aG0gZGVmaW5lZCBpbiB0aGUgVUVGSQ0KPiA+ICAgICAgc3BlYykuIEkgdGhp bmsgdGhpcyBpcyBub3QgdGhlIGNhc2UgdG9kYXkuDQo+ID4gMy4yLiBFbnVtZXJhdGUgdGhlIGRy aXZlcyAodmlhIHRoZSBhbGdvcml0aG0gZGVmaW5lZCBpbiB0aGUgVUVGSSBzcGVjKQ0KPiA+ICAg ICAgYW5kIHNob3cgdGhlbSBpbiBCb290TWFuYWdlck1lbnVBcHAuIEkgdGhpbmsgdGhpcyBpcyBk b25lIHRvZGF5DQo+ID4gICAgICBhbmQgaXMgd2hhdCBJIHdvdWxkIHByZWZlciB0b28uDQo+ID4N Cj4gPiBXaGF0IEkgYmFzaWNhbGx5IGRvIG5vdCBhZ3JlZSB3aXRoIGluIHRoZSBsaXN0IGFib3Zl IGFyZSB0d28gbnVhbmNlcy4NCj4gPiAzLjEgYW5kIDMuMjogSSB3b3VsZCBsaWtlIHRvIHNlZSBz dXBwb3J0IGZvciBhIHBsYXRmb3JtLWRlZmluZWQgbG9naWMNCj4gPiBvZiBlbnVtZXJhdGluZyBp biBhZGRpdGlvbiB0byB0aGUgb25lIGRlZmluZWQgaW4gdGhlIFVFRkkgc3BlYy4gVGhpcw0KPiA+ IGNhbiBiZSB1c2VkIGZvciBVRUZJIFNoZWxsLCBwbGF0Zm9ybSBkaWFnbm9zdGljIGFwcHMgYW5k IEFwcGxlIGJsZXNzLg0KPiANCj4gSSB0aGluayBwbGF0Zm9ybS1zcGVjaWZpYyBib290IG9wdGlv biBnZW5lcmF0aW9uIC0tIGVudW1lcmF0aW9uIG9mIHZhcmlvdXMNCj4gcHJvdG9jb2xzIHRoYXQg c3RhbmQgZm9yIGRpZmZlcmVudCBraW5kcyBvZiBkZXZpY2VzLCBhbmQgZ2VuZXJhdGluZyBib290 DQo+IG9wdGlvbnMgZnJvbSB0aGVtIC0tIGlzIGFscmVhZHkgcG9zc2libGUgdG9kYXkuDQo+IFBs YXRmb3JtcyBjYWxsIEVmaUJvb3RNYW5hZ2VyUmVmcmVzaEFsbEJvb3RPcHRpb24oKSBiZWNhdXNl IChhKSBpdCdzIGVhc3kgdG8NCj4gY2FsbCwgKGIpIGl0IGdlbmVyYWxseSBkb2VzIHRoZSByaWdo dCB0aGluZy4NCg0KSXQgc3VyZWx5IGlzIHBvc3NpYmxlIHRvZGF5LCB0aGUgcHJvcG9zaXRpb24g aXMgbW9yZSBjb25jZXJuZWQgYWJvdXQgcGVyZm9ybWFuY2UgYW5kICJiZXN0IHByYWN0aWNlIi4N Ckkgc2ltcGx5IGRvbid0IHNlZSBhIGdvb2QgcmVhc29uIHRvIHBlcmZvcm0gc2Nhbm5pbmcgYW5k IGJvb3Qgb3B0aW9uIHdyaXRpbmcgd2hlbiB0aGVyZSBpcyBubyBjb2RlIHRvIHJlYWQgdGhhdCAo eWV0KS4NCk9mIGNvdXJzZSB0aGlzIG1ha2VzIGl0IGNvbWUgZG93biB0byBtYWludGFpbmVyJ3Mg cHJlZmVyZW5jZSBiZWNhdXNlIHRoZXJlIGlzIG5vIHNpZ25pZmljYW50IGRlbWFuZC4NCg0KPiAN Cj4gKE5vdGUgdGhhdCB0aGlzIEFQSSBkb2VzIG5vdCBjb25uZWN0IGRldmljZXM7IGl0IGp1c3Qg c2NhbnMgZGV2aWNlcyBhbmQgdHVybnMNCj4gd2hhdGV2ZXIgaXQgZmluZHMgaW50byBib290IG9w dGlvbnMuKQ0KPiANCj4gTm90aGluZyBzdG9wcyBhIHBsYXRmb3JtIGZyb20gKm5vdCogY2FsbGlu Zw0KPiBFZmlCb290TWFuYWdlclJlZnJlc2hBbGxCb290T3B0aW9uKCkgLS0gdGhlIHBsYXRmb3Jt IGNhbiBzaW1wbHkgc2tpcCB0aGF0DQo+IGFuZCBnZW5lcmF0ZSBvdGhlciBvcHRpb25zLiBPciB0 aGUgcGxhdGZvcm0gbWF5IGdlbmVyYXRlIG9wdGlvbnMgaW4NCj4gYWRkaXRpb24gdG8gdGhvc2Ug dGhhdCBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBBUEkuDQoNClRoYXQgaXMgcGVyZmVjdGx5IHZhbGlk IGZvciB0aGUgU3RhdHVzIFF1bywgaG93ZXZlciBpZiBteSBOViB2cyB2b2xhdGlsZSBjb21tZW50 IHNob3VsZCBiZSBjb25zaWRlcmVkLCBpdCB3aWxsIG5vdCBiZSBiZWNhdXNlIGl0IHJlbGllcyBv biBhIHByb2FjdGl2ZSBCb290TWVudUFwcCBjYWxsICh3aGljaCBoYXBwZW5zIHRvIGJlIHRvIEVm aUJvb3RNYW5hZ2VyUmVmcmVzaEFsbEJvb3RPcHRpb24oKSkuDQoNCj4gDQo+ID4gMy4yOiBJIHRo aW5rIGFkZGluZyB0aGVtIGFzIHZvbGF0aWxlIHZhcmlhYmxlcyBpcyB0aGUgYmV0dGVyIGFwcHJv YWNoLA0KPiA+IGV4Y2VwdCBmb3IgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSwgd2hpY2ggc2hvdWxk IGJlIGNhcGFibGUgb2YgYWRkaW5nDQo+ID4gTlYgb3B0aW9ucy4gVGhlIHJlYXNvbmluZyBiZWhp bmQgdGhpcyBpcyB0aGF0IHVzdWFsbHkgdGhlIGZvdW5kDQo+ID4gdm9sdW1lcyBhcmUgcmVtb3Zh YmxlIHZvbHVtZXMgKHN1Y2ggYXMgVVNCIEZsYXNoIERyaXZlcykgYW5kIHdpbGwgYmUNCj4gPiBj bGVhbmVkIGF3YXkgc29vbiBhZ2FpbiBhbnl3YXkuICJFeHRyYSB3aXNoZXMiIGZvciBib290IG9w dGlvbnMgc2hvdWxkDQo+ID4gYmUgYWRkZWQgdmlhIHRoZSBVRUZJIFNldHVwIG1lbnUgb3IgVUVG SSBTaGVsbC4NCj4gDQo+IEkgY2FuJ3QgcmVhbGx5IGNvbW1lbnQgb24gdGhpcyAtLSB0aGUgZmFj dCB0aGF0IEJvb3QjIyMjIG9wdGlvbnMgYXJlIG5vbi0NCj4gdm9sYXRpbGUgY29tZXMgZnJvbSB0 aGUgVUVGSSBzcGVjLiBJJ20gbm90IGltbWVkaWF0ZWx5IHN1cmUgd2hhdCBJIHRoaW5rIG9mDQo+ IHRoZWlyIHN1Z2dlc3RlZCB2b2xhdGlsaXR5LCBidXQgdGhpcyBpcyBsaWtlbHkgc29tZXRoaW5n IGZvciB0aGUgVVNXRyB0byBkaXNjdXNzLg0KDQpJIHRoaW5rIEkgbWlnaHQgaGF2ZSBiZWVuIHVu Y2xlYXIgaGVyZSwgSSB3YXMgc29sZWx5IHJlZmVycmluZyB0byB0aGUgQm9vdCBvcHRpb25zIGNy ZWF0ZWQgYnkgdGhlIGVudW1lcmF0aW9uIHByb2Nlc3MgYW5kIG5vdCBCb290IyMjIyBpbiBnZW5l cmFsLg0KSSB3b3VsZG4ndCBrbm93IG9mIGFueXRoaW5nIHJlc3RyaWN0aW5nIGFsbCBCb290IyMj IyB2YXJpYWJsZXMgdG8gYmUgTlYsIGRvIHlvdSBoYXBwZW4gdG8gaGF2ZSBhIHF1b3RlPw0KDQo+ IA0KPiA+IFRoZSByZWFzb24gd2h5IEkgc3RpbGwgd2lzaCBmb3IgcGxhdGZvcm0gY29kZSB0byBi ZSBhYmxlIHRvIGFkZCBOVg0KPiA+IG9wdGlvbnMgYXMgcGFydCBvZiBlbnVtZXJhdGlvbiBpcyB0 aGF0IEZWLWVtYmVkZGVkIHRvb2xzIGFyZSBpbmRlZWQgTlYNCj4gPiAoU2hlbGwgZXRjLikgYW5k IHdpbGwgbm90IG5lZWQgdG8gYmUgY2xlYW5lZCB1cCwgYXMgd2VsbCBhcyB0aGF0IHdlJ3JlDQo+ ID4gbm90IGluIGFuIHV0b3BpYS4gU29tZXRpbWVzIGFuIHVud2FudGVkIHB1cmdlIG9mIGJvb3Qg b3B0aW9uIGhhcHBlbnMNCj4gPiAoIkNNT1MgcmVzZXQiIG9uIGJvYXJkcywgZXRjKSBhbmQgY29u c3VtZXIgcGxhdGZvcm0gcHJvdmlkZXMgZG8gbm90DQo+ID4gd2FudCB0byBsZWF2ZSB0aGVpciB1 c2VycyB3aXRoIGEgY29uc3RhbnQgYm9vdCB0byBCb290TWVudSBvciBubw0KPiA+IG9wdGlvbiBh dCBhbGwuIFBsYXRmb3JtIGNvZGUgb2Z0ZW4gZG9lcyBjdXJyZW50bHkgYW5kIHByb2JhYmx5IHNo b3VsZA0KPiA+IGFkZCBhIE5WIFdpbmRvd3MgYm9vdCBvcHRpb24gaW4gdGhlIHByb3Bvc2VkIGhv b2sgKHRoaXMgc2hvdWxkIG9mDQo+ID4gY291cnNlIG5vdCBiZSBwYXJ0IG9mIGVkazIpLiBGdXJ0 aGVybW9yZSwgaWYgYW4gT1MgYm9vdCBvcHRpb24gaXMNCj4gPiByZW5kZXJlZCBpbnZhbGlkLCB1 c3VhbGx5IHRoZXJlIGlzIG5vIE9zUmVjb3Zlcnkgb3B0aW9uIGF2YWlsYWJsZSBhcw0KPiA+IHBy b3Bvc2VkIGluIHRoZSBzcGVjaWZpY2F0aW9uLg0KPiA+DQo+ID4gQ29uc2lkZXJpbmcgdGhlIGJv b3QgcHJvdG9jb2wgSSBqdXN0IGRlc2NyaWJlZCwgSSB0aGluayB0aGF0IHRoZSBjYWxsDQo+ID4g aW4gUGxhdGZvcm1Cb290TWFuYWdlckFmdGVyQ29uc29sZSgpIGlzIG5vdCBhIGdvb2QgaWRlYSwg YmVjYXVzZSBpdA0KPiA+IHJlZnJlc2hlcyBib290IG9wdGlvbnMgdW5jb25kaXRpb25hbGx5LiBX aGVuIHRoZSBmaXJzdCBlbGVtZW50IG9mDQo+ID4gQm9vdE9yZGVyW10gY2FuIGJlIGJvb3RlZCwg dGhlcmUgaXMgbm8gcmVhc29uIHRvIGRvIHNvIGFuZCBpdCBjb3N0cw0KPiA+IHRpbWUuIFN1Y2gg YSByZWZyZXNoIG1ha2VzIHNlbnNlIHdoZW4gYm9vdGluZyB0aGUgZmlyc3Qgb3B0aW9uIGZhaWxz DQo+ID4gdGhvdWdoICh0byBtYWtlIHN1cmUgaXQgaXMgcHVyZ2VkIHRvIG5vdCBkZWxheSBib290 IGFnYWluKS4NCj4gDQo+IEkgdGhpbmsgdGhlcmUgYXJlIHR3byBwb3NzaWJpbGl0aWVzIGZvciBk aXNhZ3JlZW1lbnQgaGVyZS4gRmlyc3QsIGlmIHRoZSBmaXJzdCBib290DQo+IG9wdGlvbiBjYXJl cyBhYm91dCB0aGUgZnVsbCBzZXQgb2YgQm9vdCMjIyMgb3B0aW9ucyAoZm9yIHdoYXRldmVyIHJl YXNvbnMpLA0KPiB0aGVuIHRoaXMgaXMgYW4gaW5jb21wYXRpYmxlIGNoYW5nZS4NCg0KVGhpcyBp cyBkZWZpbml0ZWx5IHRydWUsIGhvd2V2ZXIgSSdtIG5vdCBzdXJlIGFib3V0IHRoZSBkaWZmZXJl bmNlICJhbGwgY3VycmVudGx5IHZhbGlkIG9wdGlvbnMiIGFuZCAiYWxsIGN1cnJlbnRseSBzZXQg b3B0aW9ucyIuDQpJZiB0aGF0IGJvb3Qgb3B0aW9uIGhhcHBlbnMgdG8gYmUgYSBCb290IE1lbnUg ZWRpdG9yIG9mIHNvbWUgc29ydCwgdGhlIHByb3Bvc2VkIGJlaGF2aW9yIHdvdWxkIHJlbWFpbiBm aW5lLCBpbiBteSBvcGluaW9uLg0KT3RoZXJ3aXNlLCB5b3UncmUgcmlnaHQgd2l0aCB5b3VyIGNv bW1lbnQsIHN1Y2ggYXMgaWYgYSBjdXN0b20gQm9vdCBNZW51IEdVSSBpcyBpbnZva2VkIGFuZCBy ZWxpZXMgb24gYWxsIEJvb3QjIyMjIHRvIGJlIHNldC4NCkkgZG9uJ3QgYWN0dWFsbHkgdGhpbmsg dGhlIHNwZWNpZmljYXRpb24gZGVtYW5kcyBhbGwgb3B0aW9ucyB0byBiZSB1cC10by1kYXRlLCBz byBtYXliZSB0aGUgaWRlYSBvZiBhIHByb3RvY29sIGhhbmRsaW5nIHN1Y2ggdGhpbmdzIGlzIGdy ZWF0IGFmdGVyIGFsbD8NCg0KPiANCj4gU2Vjb25kLCBqdXN0IGJlY2F1c2UgYSBib290IG9wdGlv biBmYWlscywgaXQgc2hvdWxkIG5vdCBiZSByZW1vdmVkLiBGb3INCj4gZXhhbXBsZSwgYSBuZXRi b290IG9wdGlvbiBjb3VsZCBmYWlsLCBvciBhIFVTQiBkcml2ZSBtaWdodCBub3QgYmUgY29ubmVj dGVkDQo+ICh0ZW1wb3JhcmlseSkuIEkgZG9uJ3QgdGhpbmsgdGhhdCdzIGdyb3VuZHMgZW5vdWdo IGZvciBzdW1tYXJpbHkgcmVtb3ZpbmcgYQ0KPiBib290IG9wdGlvbiwgaW4gc2hhcmVkIHJlZmVy ZW5jZSBjb2RlLg0KDQpPaCwgSSB3YXMganVzdCB0YWxraW5nIGFib3V0IHRoZSBwb3NzaWJpbGl0 eSwgYmVjYXVzZSB0aGUgY3VycmVudCBjb2RlIGRvZXMgcmVtb3ZlIG9wdGlvbnMgdW5kZXIgY2Vy dGFpbiBjb25kaXRpb25zLg0KSG93ZXZlciwgZm9yIFVTQiBkZXZpY2VzIGFzIHlvdSBoYXZlIG1l bnRpb25lZCwgSSBkbyBzZWUgdGhpcyBnb29kIHByYWN0aWNlIHNvIGxvbmcgYXMgdGhlIG9wdGlv biBpcyB2b2xhdGlsZS4NClRoZXJlIGlzIG5vIHBvaW50IGluIGV4cG9zaW5nIGEgYm9vdCBvcHRp b24gdG8gYSByZW1vdmFibGUgZGV2aWNlIHRoYXQgaXMgbm90IGF0dGFjaGVkIGlmIG5vdCB0byBw cmV2ZW50IHVubmVjZXNzYXJ5IEZsYXNoIGN5Y2xlcyBhcyBmYXIgYXMgSSBjYW4gdGhpbmsuDQpE byB5b3UgaGFwcGVuIHRvIGhhdmUgd29ycmllcyBhYm91dCBhIHNjZW5hcmlvIEkgZGlkIG5vdCBj b25zaWRlcj8NCg0KPiANCj4gPiBUaGUgZnVuY3Rpb24gaXMgYWxzbyBjYWxsZWQgYnkgQm9vdE1h bmFnZXJNZW51QXBwIGluIHRoZSBlbnRyeSBwb2ludCwNCj4gPiB3aGljaCBtYWtlcyBhIGxvdCBv ZiBzZW5zZS4gSW4gdGhlIHNjZW5hcmlvIGRlc2NyaWJlZCBhYm92ZSwgInNjYW5uZWQiDQo+ID4g Ym9vdCBvcHRpb25zIGFyZSBhZGRlZCBvbmx5IHdoZW4gdGhlIE5WIG9uZXMgY2Fubm90IGJlIGJv b3RlZCBhbmQNCj4gPiBNZW51QXBwIGlzIHJlbmRlcmVkIGluIGNvbnNlcXVlbmNlLiBJdCBiYXNp Y2FsbHkgbW92ZXMgdGhlIHNjYW5uaW5nDQo+ID4gZGVsYXkgZnJvbSB0aGUgIk5WIHBoYXNlIiB0 byB0aGUgZm9sbG93aW5nICJzY2FubmluZyBwaGFzZSIsIHdoaWNoIGlzDQo+ID4gbm90IHN1cHBv c2VkIHRvIGJlIGVudGVyZWQgd2hlbiBib290aW5nIGEgInNhbmUiIHBsYXRmb3JtLg0KPiANCj4g Rm9yIE9WTUYgc3BlY2lmaWNhbGx5LCBjYWxsaW5nIEVmaUJvb3RNYW5hZ2VyUmVmcmVzaEFsbEJv b3RPcHRpb24oKSBhdA0KPiBldmVyeSBib290IGlzIG5lY2Vzc2FyeS4gVGhlIHNldCBvZiBib290 YWJsZSBkZXZpY2VzIGFuZCB0aGVpciBkZXNpcmVkIGJvb3QNCj4gb3JkZXIgbWF5IGNoYW5nZSBh dCBldmVyeSBib290LCBhbmQgdGhlIGJvb3Qgb3JkZXIgc3BlYyB0aGF0IGNvbWVzIGZyb20NCj4g UUVNVSBpc24ndCBleHByZXNzaXZlIGVub3VnaCBmb3IgdGhlICpnZW5lcmF0aW9uKiBvZiBib290 IG9wdGlvbnM7IGl0J3MNCj4gZXhwcmVzc2l2ZSBlbm91Z2ggb25seSBmb3IgdGhlICpmaWx0ZXJp bmcqIGFuZCByZW9yZGVyaW5nIG9mIGJvb3Qgb3B0aW9ucy4NCg0KU3VyZSwgdGhhdCBjb21tZW50 IHdhcyBtb3N0bHkgZm9yIGVuZC11c2VyIHBsYXRmb3Jtcy4NCg0KPiANCj4gPiBBUFBMRSBCTEVT Uw0KPiA+DQo+ID4gVGhpcyBtaWdodCBiZSBpbnRlcmVzdGluZyBmb3IgdGhlIE9WTUYgbWFpbnRh aW5lcnMuDQo+ID4gSSBkaWQgbm90IHdhbnQgdG8gbWVudGlvbiB0aGlzIGNvbmNlcHQgYXQgZmly c3QsIGJlY2F1c2UgSSBkb24ndCB0aGluaw0KPiA+IHRoZXJlIGlzIGEgdGVycmlibGUgaHVnZSBk ZW1hbmQgb3IgaW50ZXJlc3QsIGhvd2V2ZXIgSSB3b3VsZCBsaWtlIHRvDQo+ID4gYmUgYWJsZSB0 byBpbXBsZW1lbnQgQXBwbGUgYmxlc3Mgc3VwcG9ydCBmb3IgT1ZNRiB3aXRob3V0IGhhdmluZyB0 bw0KPiA+IGZvcmsgYW5kIG1vZGlmeSBlZGsyIGRyaXZlcnMuDQo+ID4gSSBkaWQgbm90IGNoZWNr IGFib3V0IGEgY29uY3JldGUgd2F5IG9mIGltcGxlbWVudGF0aW9uLCBob3dldmVyIEkgd2lsbA0K PiA+IHNob3J0bHkgZGVzY3JpYmUgd2hhdCBuZWVkcyB0byBiZSBpbnZvbHZlZC4NCj4gPg0KPiA+ IFNlY29uZGFyeSBwYXJ0aXRpb25zOiBTdXBwb3J0aW5nIHRoaXMgd2lsbCBiZSBlYXN5IHdoZW4g YWNjZXB0aW5nIHRoZQ0KPiA+IGhvb2sgcHJvcG9zZWQgYWJvdmUgYW5kIGNvbnNpZGVyaW5nIG15 IGNvbW1lbnRzIHJlZ2FyZGluZyBOViB2cw0KPiA+IHZvbGF0aWxlIHZhcmlhYmxlcy4gTm8gYm9v dCBvcHRpb25zIGFyZSBwcm9hY3RpdmVseSBhZGRlZCBmb3IgdGhvc2UNCj4gPiBpbnN0YWxscyBh bmQgdGhleSBhcmUgc2Nhbm5lZCBvbiBkZW1hbmQsIHdoaWNoIGNhbiBiZSBkb25lIGVudGlyZWx5 IGluDQo+ID4gdGhlIHByb3Bvc2VkIGhvb2sgZnVuY3Rpb24uDQo+IA0KPiBJIHRoaW5rIGl0IGNv dWxkIGFsc28gYmUgZG9uZSBpbiBBZnRlckNvbnNvbGUoKS4gSSByZWFsaXplIGl0IG1pZ2h0IGlu Y3VyIG1vcmUNCj4gcGZsYXNoIHRyYWZmaWMgLS0gbGlrZSBhbnkgb3RoZXIgQm9vdCMjIyMgb3B0 aW9uIGdlbmVyYXRpb24NCj4gLS0gdGhhbiB3aGF0IHlvdSBtaWdodCBjb25zaWRlciBvcHRpbWFs LCBidXQgZnVuY3Rpb25hbGx5IHRoYXQgc2hvdWxkbid0IGJlIGENCj4gYmFycmllci4NCg0KWWVz LCB0aG9zZSBvcHRpb25zIHdvdWxkIGJhc2ljYWxseSB0byBiZSByZXdyaXR0ZW4gb3IgYXQgbGVh c3QgdmVyaWZpZWQgb24gZXZlcnkgYm9vdCAod2hpY2ggcmVxdWlyZXMgYSBib290IG9wdGlvbiBy ZWZyZXNoKS4NClZlcmlmaWNhdGlvbiBoYXMgdGhlIGRpc2FkdmFudGFnZSB0aGF0IGl0IG1pZ2h0 IGNhdGNoIHVzZXItY3JlYXRlZCBvcHRpb25zLCBob3dldmVyIEkgc2F3IHRoZSBCTSBjb2RlIGF0 dGFjaGluZyBvd24gT3B0aW9uYWxEYXRhLCB3aGljaCBtaWdodCBiZSBzdWZmaWNpZW50IHRvIGRp c3Rpbmd1aXNoLg0KDQo+IA0KPiA+IFByaW1hcnkgcGFydGl0aW9uOiBUaGUgc28tY2FsbGVkICJT dGFydHVwIFZvbHVtZSIgdW5mb3J0dW5hdGVseSBpcyBhDQo+ID4gYml0IHRyaWNraWVyLiBGb3Ig aXQsIGEgcHJhY3RpY2FsbHkgaW52YWxpZCBCb290IE9wdGlvbiBpcyBhZGRlZCwNCj4gPiB3aGlj aCBpcyBhbiBleHBhbmRlZCBkZXZpY2UgcGF0aCB0byB0aGUgdm9sdW1lIHRvIGJlIGJvb3RlZCwg aG93ZXZlcg0KPiA+IHdpdGhvdXQgaGF2aW5nIGEgRmlsZSBEZXZpY2UgUGF0aCBOb2RlIGFwcGVu ZGVkLg0KPiANCj4gVGhpcyBkb2Vzbid0IGltbWVkaWF0ZWx5IHNlZW0gaW52YWxpZCAtLSBpZiBt ZW1vcnkgc2VydmVzLCB5b3UgY2FuIGhhdmUNCj4gXEVGSVxCT09UXEJPT1Q8YXJjaD4uZWZpIG9u IGZpeGVkIG1lZGlhIGFzIHdlbGwsIGFuZCBpZiBhIGJvb3Qgb3B0aW9uIG9ubHkNCj4gbmFtZXMg dGhlIEhEKCkgaW4gcXVlc3Rpb24sIHRoYXQgZGVmYXVsdCBib290IHBhdGggd2lsbCBiZSBsYXVu Y2hlZCBvZmYgb2YgaXQuDQoNCkkgdGhpbmsgZm9yIGEgQm9vdCMjIyMgb3B0aW9uLCBpdCBpcyBh bHdheXMgaW52YWxpZCwgYmVjYXVzZSB0aGUgZGVmYXVsdCBwYXRoIGlzIGRlZmluZWQgdG8gYmUg dXNlZCBpbiB0aGUgInNjYW5uaW5nIHBoYXNlIiBvbmNlIG5vIEJvb3QjIyMjIHZhcmlhYmxlIGNv dWxkIGJlIGZvdW5kLg0KQWxzbywgdW5mb3J0dW5hdGVseSB0aGUgcGF0aCBpcyBhbHNvIHN0b3Jl ZCB2aWEgYmxlc3MgYW5kIGRlZmluaXRlbHkgbmV2ZXIgdGhlIFVFRkkgc3RhbmRhcmQgb25lLCBz byBzdXBwb3J0aW5nIHRoaXMgdmVuZG9yLXNwZWNpZmljIHNjZW5hcmlvIGRlZmluaXRlbHkgcmVx dWlyZXMgc3BlY2lhbCBoYW5kbGluZy4NCkRvIHlvdSBoYXZlIGFueSBvcGluaW9uIG9uIHRoZSBw cm9wb3NlZCBzZWNvbmQgaG9vaz8NCg0KPiANCj4gPiBJIGhhZCBob3BlZCB0byBiZSBhYmxlIHRv IHVzZSBFRklfTE9BRF9GSUxFX1BST1RPQ09MLCBob3dldmVyDQo+ID4gb2J2aW91c2x5IEVGSV9T SU1QTEVfRklMRV9TWVNURU1fUFJPVE9DT0wgd2lsbCBhdHRhY2ggdG8gdGhlDQo+IG1lbnRpb25l ZA0KPiA+IERldmljZVBhdGgsIHdoaWNoIG1lYW5zIExvYWRGaWxlIHdpbGwgbm90IGJlIGNhbGxl ZC4gU3VwcG9ydCBmb3IgdGhpcw0KPiA+IHdvdWxkIG5lZWQgdG8gYmUgZG9uZSB2aWEgYSBwbGF0 Zm9ybS1zcGVjaWZpYyBlcnJvciBoYW5kbGVyIGZvciB3aGVuDQo+ID4gdGhlIERldmljZVBhdGgg aXMgZGV0ZXJtaW5lZCB0byBiZSBpbnZhbGlkLCB3aGljaCBjYW4gdGhlbiBlaXRoZXIgZml4DQo+ ID4gaXQgdXAgYW5kIHJldHVybiBzdWNjZXNzIG9yIGZhaWwgYXMgd2VsbC4gSSBoYXZlIG5vdCBs b29rZWQgaW50byB0aGlzDQo+ID4gaW4gZGV0YWlsIGFuZCBJIGNhbiB1bmRlcnN0YW5kIGlmIHlv dSBhcmUgbm90IGludGVyZXN0ZWQgaW4gc3VwcG9ydGluZw0KPiA+IHN1Y2ggYSBzY2VuYXJpby4g SG93ZXZlciBpZiB5b3UgZG8sIEkgd2lsbCBsb29rIGludG8gaXQgYXMgc29vbiBhcw0KPiA+IHBv c3NpYmxlIGFuZCBwcm9iYWJseSBwZXJmb3JtIGEgZmV3IHRlc3RzIGluIE9WTUYuDQo+IA0KPiBJ IGhhdmUgYSBtb3JlIGdlbmVyYWwgY29tbWVudCBpbiB0aGUgZW5kOiBJIGRvdWJ0IEkgY291bGQg bGVnYWxseSB0ZXN0IGFuIE9TWA0KPiBndWVzdCBvbiBub24tQXBwbGUgaGFyZHdhcmUsIHNvIEkg d29uJ3QgdHJ5IChhbmQgSSdsbCBtb3N0IGxpa2VseSBub3QgYnV5IG9yDQo+IG90aGVyd2lzZSBw cm9jdXJlIE9TWCwgbGV0IGFsb25lIEFwcGxlIGhhcmR3YXJlLCBqdXN0IGZvciB0aGlzKS4gVGhh dCBtZWFucywNCj4gaWYgeW91IHBvc3QgcGF0Y2hlcywgbXkgbWFpbiBmb2N1cyB3aWxsIGJlIG9u IGtlZXBpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3INCj4gcmVncmVzc2lvbi1mcmVlLCBhbmQgKHNl Y29uZGFyaWx5KSB0aGUgaW1wbGVtZW50YXRpb24gcHJlZmVyYWJseSBzaW1wbGUgJg0KPiBzZXBh cmF0ZWQuDQoNClRoYW5rIHlvdSB0aGF0IHlvdSBhcmUgcmVhZHkgdG8gbWVyZ2UgY2hhbmdlcyB5 b3UgY2Fubm90IGV2ZW4gcmVhbGx5IHRlc3QuDQpUaGlzIGlzIHByb2JhYmx5IG9mZiB0byBzb21l IHBvaW50IGluIHRoZSBmdXR1cmUgdG8gbWFrZSBzdXJlIHRvIHN1cHBseSB3ZWxsLXRlc3RlZCBw YXRjaGVzLg0KDQo+IA0KPiBJJ3ZlIGFkZGVkIEdhYnJpZWwgYW5kIEdlcmQgdG8gdGhlIENDIGxp c3QgYmVjYXVzZSBJIGJlbGlldmUgdGhleSBtaWdodCBiZQ0KPiBpbnRlcmVzdGVkIGluIE9TWCBn dWVzdHMgKEkgc2VlbSB0byByZW1lbWJlciB0aGF0IGEgc2l6ZWFibGUgb3V0LW9mLXRyZWUNCj4g cGF0Y2hzZXQgaXMgbmVjZXNzYXJ5IGZvciBPU1ggZ3Vlc3RzIGFueXdheSkuDQo+IA0KPiBUaGFu a3MsDQo+IExhc3psbw0K