Return-Path: linux-nfs-owner@vger.kernel.org Received: from am1ehsobe004.messaging.microsoft.com ([213.199.154.207]:1093 "EHLO am1outboundpool.messaging.microsoft.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758286Ab2HQQUU (ORCPT ); Fri, 17 Aug 2012 12:20:20 -0400 From: Shai Lazmi To: "Myklebust, Trond" CC: William Dauchy , "Schumaker, Bryan" , "linux-nfs@vger.kernel.org" Date: Fri, 17 Aug 2012 09:20:13 -0700 Subject: RE: [PATCH 1/2] NFS: Clear key construction data if the idmap upcall fails Message-ID: <21641D3714F5AF449DC483E699E1124E86E6409621@AVEXMB2.qlogic.org> References: <1345148622-10845-1-git-send-email-Trond.Myklebust@netapp.com> <21641D3714F5AF449DC483E699E1124E86E640957F@AVEXMB2.qlogic.org> <4FA345DA4F4AE44899BD2B03EEEC2FA93B542B@SACEXCMBX04-PRD.hq.netapp.com> <21641D3714F5AF449DC483E699E1124E86E6409585@AVEXMB2.qlogic.org> <4FA345DA4F4AE44899BD2B03EEEC2FA93B54EC@SACEXCMBX04-PRD.hq.netapp.com> <21641D3714F5AF449DC483E699E1124E86E640958D@AVEXMB2.qlogic.org> <4FA345DA4F4AE44899BD2B03EEEC2FA93B5646@SACEXCMBX04-PRD.hq.netapp.com> <21641D3714F5AF449DC483E699E1124E86E6409593@AVEXMB2.qlogic.org> <4FA345DA4F4AE44899BD2B03EEEC2FA93B56F2@SACEXCMBX04-PRD.hq.netapp.com> In-Reply-To: <4FA345DA4F4AE44899BD2B03EEEC2FA93B56F2@SACEXCMBX04-PRD.hq.netapp.com> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org List-ID: Tm8gbHVjayAuLi4NCi0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQ0Ka2VybmVs IEJVRyBhdCBmcy9uZnMvaWRtYXAuYzo2ODEhDQpBQ1BJOiBJbnZhbGlkIFBvd2VyIFJlc291cmNl IHRvIHJlZ2lzdGVyIQ0KaW52YWxpZCBvcGNvZGU6IDAwMDAgWyMxXSBTTVANCk1vZHVsZXMgbGlu a2VkIGluOg0KUGlkOiAxNDUsIGNvbW06IG1vdW50Lm5mcyBOb3QgdGFpbnRlZCAzLjYuMC1yYzIg IzIyIFN5c3RlbSBtYW51ZmFjdHVyZXIgU3lzdGVtIFByb2R1Y3QgTmFtZS9LOE4tREwNCkVJUDog MDA2MDpbPGMwNTk2OTU4Pl0gRUZMQUdTOiAwMDAxMDI4NiBDUFU6IDENCkVJUCBpcyBhdCBuZnNf aWRtYXBfbGVnYWN5X3VwY2FsbCsweGYzLzB4MTQ2DQpFQVg6IGY1YjVlMWUwIEVCWDogZjU4N2U4 NDAgRUNYOiBmNWI1ZTAwMCBFRFg6IDAwMDAwMDEwDQpFU0k6IDAwMDAwMDEwIEVESTogZjViNWUx ZjggRUJQOiBmNWI3N2E2YyBFU1A6IGY1Yjc3YTRjDQogRFM6IDAwN2IgRVM6IDAwN2IgRlM6IDAw ZDggR1M6IDAwMzMgU1M6IDAwNjgNCkNSMDogODAwNTAwM2IgQ1IyOiAwODMxZTAwMCBDUjM6IDM1 YjVjMDAwIENSNDogMDAwMDA3ZDANCkRSMDogMDAwMDAwMDAgRFIxOiAwMDAwMDAwMCBEUjI6IDAw MDAwMDAwIERSMzogMDAwMDAwMDANCkRSNjogZmZmZjBmZjAgRFI3OiAwMDAwMDQwMA0KUHJvY2Vz cyBtb3VudC5uZnMgKHBpZDogMTQ1LCB0aT1mNWI3NjAwMCB0YXNrPWY1YjUzMGMwIHRhc2sudGk9 ZjViNzYwMDApDQpTdGFjazoNCiBmNWI1ZTAwMCBmNTk2OWE2MCBmNWI1ZTFlMCBmNWI1ZTFhNCBm NWI1ZTFiNCBjMDU5Njg2NSBmNTlkMGEwMCBmNTk2OWE2MA0KIGY1Yjc3YWEwIGMwNjAwODMxIGMw OWU2MjZjIGMwYTlkNzRjIGY1YjVlMTgwIGY2MWRjZDgwIGMwYTlkNzU4IGY1OTcwZjgwDQogZjYx ZGNlMDAgMDAwMDAwMDAgMDAwMDAwMDMgZjYzZDdmODAgZjViNWUxOTQgZjViNzdhYzAgYzA2MDA4 ZjAgMDAwMDAwMDANCkNhbGwgVHJhY2U6DQogWzxjMDU5Njg2NT5dID8gaWRtYXBfcGlwZV9kZXN0 cm95X21zZysweDFkLzB4MWQNCiBbPGMwNjAwODMxPl0gcmVxdWVzdF9rZXlfYW5kX2xpbmsrMHgy OTcvMHgzMGMNCiBbPGMwNjAwOGYwPl0gcmVxdWVzdF9rZXlfd2l0aF9hdXhkYXRhKzB4MTkvMHg0 NA0KIFs8YzA1OTZhNDQ+XSBuZnNfaWRtYXBfcmVxdWVzdF9rZXkrMHg5OS8weDEyOA0KIFs8YzA1 OTZiYmQ+XSBuZnNfaWRtYXBfbG9va3VwX2lkKzB4NWEvMHg5NQ0KIFs8YzA1OTcyY2M+XSBuZnNf bWFwX2dyb3VwX3RvX2dpZCsweDNkLzB4NDcNCiBbPGMwNTkwMGIzPl0gZGVjb2RlX2dldGZhdHRy X2F0dHJzKzB4NTM5LzB4YTFiDQogWzxjMDU5MzNhYz5dIGRlY29kZV9nZXRmYXR0cl9nZW5lcmlj LmNvbnN0cHJvcC42NCsweDYzLzB4N2YNCiBbPGMwNTkzM2Q4Pl0gZGVjb2RlX2dldGZhdHRyKzB4 MTAvMHgxMg0KIFs8YzA1OTM1YzA+XSBuZnM0X3hkcl9kZWNfbG9va3VwX3Jvb3QrMHg0OS8weDUw DQogWzxjMDU5MzU3Nz5dID8gbmZzNF94ZHJfZGVjX2xpbmsrMHg5OC8weDk4DQogWzxjMDdmNzY1 Yz5dIHJwY2F1dGhfdW53cmFwX3Jlc3ArMHg0OC8weDUwDQogWzxjMDdmMDZhZj5dIGNhbGxfZGVj b2RlKzB4MjYwLzB4MmEzDQogWzxjMDU5MzU3Nz5dID8gbmZzNF94ZHJfZGVjX2xpbmsrMHg5OC8w eDk4DQogWzxjMDdmNjkxZT5dIF9fcnBjX2V4ZWN1dGUrMHg3Yy8weDFkOQ0KIFs8YzA3ZjA0NGY+ XSA/IGNhbGxfdHJhbnNtaXRfc3RhdHVzKzB4N2MvMHg3Yw0KIFs8YzA3ZjA0NGY+XSA/IGNhbGxf dHJhbnNtaXRfc3RhdHVzKzB4N2MvMHg3Yw0KIFs8YzA0NDBjMzU+XSA/IHdha2VfdXBfYml0KzB4 MWMvMHgyMA0KIFs8YzA3ZjZiMDY+XSBycGNfZXhlY3V0ZSsweDUwLzB4NTgNCiBbPGMwN2YxNjE4 Pl0gcnBjX3J1bl90YXNrKzB4NjcvMHg2ZA0KIFs8YzA3ZjE3MDY+XSBycGNfY2FsbF9zeW5jKzB4 NDAvMHg1Yg0KIFs8YzA1OGE1MTg+XSBfbmZzNF9jYWxsX3N5bmMrMHgxMS8weDEzDQogWzxjMDU4 YTNhYz5dIG5mczRfY2FsbF9zeW5jKzB4MTgvMHgxZA0KIFs8YzA1OGRhZmM+XSBuZnM0X2xvb2t1 cF9yb290KzB4OGQvMHhiOQ0KIFs8YzA1OGU3NWM+XSBuZnM0X3Byb2NfZ2V0X3Jvb3RmaCsweDIy LzB4ODYNCiBbPGMwNTk4NGQ1Pl0gbmZzNF9nZXRfcm9vdGZoKzB4MzEvMHhhNA0KIFs8YzA0YmZm NzY+XSA/IGttZW1fY2FjaGVfYWxsb2NfdHJhY2UrMHhjNS8weGNmDQogWzxjMDU3ZTYyND5dID8g bmZzX2FsbG9jX2ZhdHRyKzB4MjEvMHgzYQ0KIFs8YzA3ZjZiZWI+XSA/IHJwY2lvZF91cCsweGYv MHgxOA0KIFs8YzA1N2U1ZTY+XSA/IG5mc19mYXR0cl9pbml0KzB4MjEvMHgzZQ0KIFs8YzA1OTg2 MDg+XSBuZnM0X3NlcnZlcl9jb21tb25fc2V0dXArMHg0NS8weGFiDQogWzxjMDU5OGI5NT5dIG5m czRfY3JlYXRlX3NlcnZlcisweDE0Yi8weDE3MQ0KWzxjMDU5NWI5Zj5dIG5mczRfcmVtb3RlX21v dW50KzB4MjYvMHg0Ng0KIFs8YzA0YzdlNTU+XSBtb3VudF9mcysweDEzLzB4OWENCiBbPGMwNGQ4 YzUxPl0gdmZzX2tlcm5fbW91bnQrMHg0Zi8weGExDQogWzxjMDU5NWEyMj5dIG5mc19kb19yb290 X21vdW50KzB4NzMvMHg4ZA0KIFs8YzA1OTViZWU+XSBuZnM0X3RyeV9tb3VudCsweDJmLzB4NDUN CiBbPGMwNTgwODRiPl0gbmZzX2ZzX21vdW50KzB4NWNjLzB4NjI3DQogWzxjMDU4MGMzMz5dID8g bmZzX2Nsb25lX3N1cGVyKzB4NjAvMHg2MA0KIFs8YzA1N2VhMmM+XSA/IG5mc19zZXRhdHRyKzB4 MTA3LzB4MTA3DQogWzxjMDRjN2U1NT5dIG1vdW50X2ZzKzB4MTMvMHg5YQ0KIFs8YzA0ZDhjNTE+ XSB2ZnNfa2Vybl9tb3VudCsweDRmLzB4YTENCiBbPGMwNGQ4ZjYzPl0gZG9fa2Vybl9tb3VudCsw eDM0LzB4YjINCiBbPGMwNGRhNTFiPl0gZG9fbW91bnQrMHg1ZDgvMHg2MjYNCiBbPGMwNGRhNWNm Pl0gc3lzX21vdW50KzB4NjYvMHg5OQ0KIFs8YzA4MjIwOWM+XSBzeXNlbnRlcl9kb19jYWxsKzB4 MTIvMHgyYw0KQ29kZTogMDAgOGQgOTMgODQgMDAgMDAgMDAgOGQgNDUgZWMgZTggNDIgZDAgMDkg MDAgODkgYzYgOGIgNDUgZTggODUgZjYgODkgNTggMDggYzcgNDAgMGMgOGMgMDAgMDAgMDAgNzgg MmIgOGIgNGQgZTAgODMgNzkgMDQgMDAgNzQgMDIgPDBmPiAwYiA4YiA0NSBlNCA4YiA0ZCBlMCA4 YiA1NSBlOCA4OSA0MSAwNCA4YiAwMSBlOCBlOCA5NCAyNiAwMA0KRUlQOiBbPGMwNTk2OTU4Pl0g bmZzX2lkbWFwX2xlZ2FjeV91cGNhbGwrMHhmMy8weDE0NiBTUzpFU1AgMDA2ODpmNWI3N2E0Yw0K LS0tWyBlbmQgdHJhY2UgOWFkZWUwYTgwODYwYTA1ZiBdLS0tDQoNCi0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQpGcm9tOiBNeWtsZWJ1c3QsIFRyb25kIFttYWlsdG86VHJvbmQuTXlrbGVidXN0 QG5ldGFwcC5jb21dDQpTZW50OiBUaHVyc2RheSwgQXVndXN0IDE2LCAyMDEyIDU6MjIgUE0NClRv OiBTaGFpIExhem1pDQpDYzogV2lsbGlhbSBEYXVjaHk7IFNjaHVtYWtlciwgQnJ5YW47IGxpbnV4 LW5mc0B2Z2VyLmtlcm5lbC5vcmcNClN1YmplY3Q6IFJlOiBbUEFUQ0ggMS8yXSBORlM6IENsZWFy IGtleSBjb25zdHJ1Y3Rpb24gZGF0YSBpZiB0aGUgaWRtYXAgdXBjYWxsIGZhaWxzDQoNCk9uIFRo dSwgMjAxMi0wOC0xNiBhdCAxNzoxNSAtMDcwMCwgU2hhaSBMYXptaSB3cm90ZToNCj4gZ2l0IGFw cGx5IC0tY2hlY2sgMDAwMS1ORlMtQ2xlYXIta2V5LWNvbnN0cnVjdGlvbi1kYXRhLWlmLXRoZS1p ZG1hcC11cGNhbGwtLnBhdGNoDQo+IGVycm9yOiBwYXRjaCBmYWlsZWQ6IGZzL25mcy9pZG1hcC5j OjYxDQo+IGVycm9yOiBmcy9uZnMvaWRtYXAuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkNCj4NCj4N Cj4gaWRtYXAuYw0KPiBkZWZpbmUgTkZTX1VJTlRfTUFYTEVOIDExDQo+DQo+IHN0YXRpYyBjb25z dCBzdHJ1Y3QgY3JlZCAqaWRfcmVzb2x2ZXJfY2FjaGU7DQo+IHN0YXRpYyBzdHJ1Y3Qga2V5X3R5 cGUga2V5X3R5cGVfaWRfcmVzb2x2ZXJfbGVnYWN5Ow0KPg0KPiBzdHJ1Y3QgaWRtYXAgew0KPiAg ICAgICAgIHN0cnVjdCBycGNfcGlwZSAgICAgICAgICppZG1hcF9waXBlOw0KPiAgICAgICAgIHN0 cnVjdCBrZXlfY29uc3RydWN0aW9uICppZG1hcF9rZXlfY29uczsNCj4gICAgICAgICBzdHJ1Y3Qg bXV0ZXggICAgICAgICAgICBpZG1hcF9tdXRleDsNCj4gfTsNCg0KVGhhdCdzIGhvdyBpdCBzaG91 bGQgbW9yZSBvciBsZXNzIGxvb2sgYWZ0ZXIgYXBwbHlpbmcgdGhlIHBhdGNoLiBJJ20NCmd1ZXNz aW5nIHRoYXQgb25lIG9mIHlvdXIgcHJldmlvdXMgYXR0ZW1wdHMgaGFzIHBhcnRpYWxseSB3b3Jr ZWQsIGFuZA0KaGFzIGxlZnQgeW91ciBjaGVja2VkIG91dCBnaXQgdHJlZSBpbiBhICJkaXJ0eSIg c3RhdGUuDQoNClBsZWFzZSB0cnkgdGhlIGZvbGxvd2luZzoNCg0KJCBnaXQgcmVzZXQgLS1oYXJk IEhFQUQNCiQgZ2l0IGFwcGx5IC0tY2hlY2sgMDAwMS1ORlMtQ2xlYXIta2V5LWNvbnN0cnVjdGlv bi1kYXRhLWlmLXRoZS1pZG1hcC11cGNhbGwtLnBhdGNoDQokIGdpdCBhcHBseSAtLWNoZWNrIDAw MDItTkZTLXJldHVybi1FTk9LRVktd2hlbi10aGUtdXBjYWxsLWZhaWxzLXRvLW1hcC10aGUtbi5w YXRjaA0KDQoNCj4NCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTXlrbGVi dXN0LCBUcm9uZCBbbWFpbHRvOlRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tXQ0KPiBTZW50OiBU aHVyc2RheSwgQXVndXN0IDE2LCAyMDEyIDU6MTQgUE0NCj4gVG86IFNoYWkgTGF6bWkNCj4gQ2M6 IFdpbGxpYW0gRGF1Y2h5OyBTY2h1bWFrZXIsIEJyeWFuOyBsaW51eC1uZnNAdmdlci5rZXJuZWwu b3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS8yXSBORlM6IENsZWFyIGtleSBjb25zdHJ1Y3Rp b24gZGF0YSBpZiB0aGUgaWRtYXAgdXBjYWxsIGZhaWxzDQo+DQo+IE9uIFRodSwgMjAxMi0wOC0x NiBhdCAxNzowNyAtMDcwMCwgU2hhaSBMYXptaSB3cm90ZToNCj4gPiBTb3JyeSAtIGNvbXBhbnkn cyBwb2xpY3kgLi4uDQo+ID4gV2hhdCBpZG1hcCB2ZXJzaW9uIHdhcyB0aGlzIHBhdGNoIHVzZWQg YWdhaW5zdD8gVGhlIG9uZSBJIGhhdmUgKGI3MDEzNThjKSBzZWVtcyB0byBiZSBhIGJpdCBkaWZm ZXJlbnQgKEkgdXNlZCBsYXRlc3QgcHVsbCBjb21taXQgZGRmMzQzZjYzNWZlNDQ0MGNhZDUyOGUx MmY5NmYyOGJkNTBhYTA5OSksIGhlbmNlIHRoZSBwYXRjaCBmYWlscyBhZ2Fpbg0KPg0KPiBJdCB3 b3JrcyBmaW5lIGZvciBtZSBhZ2FpbnN0IGNvbW1pdCBkZGYzNDNmNjM1ZmU0NDQwY2FkNTI4ZTEy Zjk2ZjI4YmQ1MGFhMDk5Og0KPg0KPiBbdHJvbmRteUBsYWRlIGxpbnV4LW5mc10kIGdpdCBicmFu Y2ggdGVzdC1hcHBseSBkZGYzNDNmNjM1ZmU0NDQwY2FkNTI4ZTEyZjk2ZjI4YmQ1MGFhMDk5DQo+ IFt0cm9uZG15QGxhZGUgbGludXgtbmZzXSQgZ2l0IGNoZWNrb3V0IHRlc3QtYXBwbHkNCj4gU3dp dGNoZWQgdG8gYnJhbmNoICd0ZXN0LWFwcGx5Jw0KPiBbdHJvbmRteUBsYWRlIGxpbnV4LW5mc10k IGdpdCBhbSB+L0Rlc2t0b3AvZm9yX3NoYWkvMDAwMS1ORlMtQ2xlYXIta2V5LWNvbnN0cnVjdGlv bi1kYXRhLWlmLXRoZS1pZG1hcC11cGNhbGwtLnBhdGNoDQo+IEFwcGx5aW5nOiBORlM6IENsZWFy IGtleSBjb25zdHJ1Y3Rpb24gZGF0YSBpZiB0aGUgaWRtYXAgdXBjYWxsIGZhaWxzDQo+IFt0cm9u ZG15QGxhZGUgbGludXgtbmZzXSQgZ2l0IGFtIH4vRGVza3RvcC9mb3Jfc2hhaS8wMDAyLU5GUy1y ZXR1cm4tRU5PS0VZLXdoZW4tdGhlLXVwY2FsbC1mYWlscy10by1tYXAtdGhlLW4ucGF0Y2gNCj4g QXBwbHlpbmc6IE5GUzogcmV0dXJuIC1FTk9LRVkgd2hlbiB0aGUgdXBjYWxsIGZhaWxzIHRvIG1h cCB0aGUgbmFtZQ0KPg0KPiBXaGF0IGVycm9yIG1lc3NhZ2VzIGFyZSB5b3Ugc2VlaW5nPw0KPg0K PiBDaGVlcnMNCj4gICBUcm9uZA0KPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4gRnJvbTogTXlrbGVidXN0LCBUcm9uZCBbbWFpbHRvOlRyb25kLk15a2xlYnVzdEBuZXRhcHAu Y29tXQ0KPiA+IFNlbnQ6IFRodXJzZGF5LCBBdWd1c3QgMTYsIDIwMTIgNDo1NyBQTQ0KPiA+IFRv OiBTaGFpIExhem1pDQo+ID4gQ2M6IFdpbGxpYW0gRGF1Y2h5OyBTY2h1bWFrZXIsIEJyeWFuOyBs aW51eC1uZnNAdmdlci5rZXJuZWwub3JnDQo+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzJdIE5G UzogQ2xlYXIga2V5IGNvbnN0cnVjdGlvbiBkYXRhIGlmIHRoZSBpZG1hcCB1cGNhbGwgZmFpbHMN Cj4gPg0KPiA+IE9uIFRodSwgMjAxMi0wOC0xNiBhdCAxNjo1MCAtMDcwMCwgU2hhaSBMYXptaSB3 cm90ZToNCj4gPiA+IE1TIG91dGxvb2sNCj4gPg0KPiA+IERvbid0IGV2ZXIgdXNlIExvb2tPdXQg Zm9yIHBhdGNoZXMuIEl0cyAiSSBqdXN0IHJlZm9ybWF0dGVkIHlvdXIgZW1haWwiDQo+ID4gd29u ZGVyIGZlYXR1cmUgYnJlYWtzIGFsbCB0aGUgd2hpdGVzcGFjZS4NCj4gPg0KPiA+ID4gQmVzdCB0 aGluZyBpcyB0byBhdHRhY2hlZCB0aGUgcGF0Y2gNCj4gPg0KPiA+IFdlIGRvIG5vdCBub3JtYWxs eSB1c2UgYXR0YWNobWVudHMgb24gdGhlIG1haWxpbmcgbGlzdCBiZWNhdXNlIGl0IG1ha2VzIGl0 IGltcG9zc2libGUgdG8gY29tbWVudCB0aGUgcGF0Y2hlcyBpbmxpbmUuIEFoIHdlbGwsIGhlcmUg Z29lcy4uLg0KPiA+DQo+ID4gLS0NCj4gPiBUcm9uZCBNeWtsZWJ1c3QNCj4gPiBMaW51eCBORlMg Y2xpZW50IG1haW50YWluZXINCj4gPg0KPiA+IE5ldEFwcA0KPiA+IFRyb25kLk15a2xlYnVzdEBu ZXRhcHAuY29tDQo+ID4gd3d3Lm5ldGFwcC5jb20NCj4gPg0KPiA+DQo+ID4gVGhpcyBtZXNzYWdl IGFuZCBhbnkgYXR0YWNoZWQgZG9jdW1lbnRzIGNvbnRhaW4gaW5mb3JtYXRpb24gZnJvbSBRTG9n aWMgQ29ycG9yYXRpb24gb3IgaXRzIHdob2xseS1vd25lZCBzdWJzaWRpYXJpZXMgdGhhdCBtYXkg YmUgY29uZmlkZW50aWFsLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCB5 b3UgbWF5IG5vdCByZWFkLCBjb3B5LCBkaXN0cmlidXRlLCBvciB1c2UgdGhpcyBpbmZvcm1hdGlv bi4gSWYgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB0cmFuc21pc3Npb24gaW4gZXJyb3IsIHBsZWFz ZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBieSByZXBseSBlLW1haWwgYW5kIHRoZW4g ZGVsZXRlIHRoaXMgbWVzc2FnZS4NCj4NCj4gLS0NCj4gVHJvbmQgTXlrbGVidXN0DQo+IExpbnV4 IE5GUyBjbGllbnQgbWFpbnRhaW5lcg0KPg0KPiBOZXRBcHANCj4gVHJvbmQuTXlrbGVidXN0QG5l dGFwcC5jb20NCj4gd3d3Lm5ldGFwcC5jb20NCj4NCj4NCj4gVGhpcyBtZXNzYWdlIGFuZCBhbnkg YXR0YWNoZWQgZG9jdW1lbnRzIGNvbnRhaW4gaW5mb3JtYXRpb24gZnJvbSBRTG9naWMgQ29ycG9y YXRpb24gb3IgaXRzIHdob2xseS1vd25lZCBzdWJzaWRpYXJpZXMgdGhhdCBtYXkgYmUgY29uZmlk ZW50aWFsLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCB5b3UgbWF5IG5v dCByZWFkLCBjb3B5LCBkaXN0cmlidXRlLCBvciB1c2UgdGhpcyBpbmZvcm1hdGlvbi4gSWYgeW91 IGhhdmUgcmVjZWl2ZWQgdGhpcyB0cmFuc21pc3Npb24gaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkg dGhlIHNlbmRlciBpbW1lZGlhdGVseSBieSByZXBseSBlLW1haWwgYW5kIHRoZW4gZGVsZXRlIHRo aXMgbWVzc2FnZS4NCg0KLS0NClRyb25kIE15a2xlYnVzdA0KTGludXggTkZTIGNsaWVudCBtYWlu dGFpbmVyDQoNCk5ldEFwcA0KVHJvbmQuTXlrbGVidXN0QG5ldGFwcC5jb20NCnd3dy5uZXRhcHAu Y29tDQoNCg0KVGhpcyBtZXNzYWdlIGFuZCBhbnkgYXR0YWNoZWQgZG9jdW1lbnRzIGNvbnRhaW4g aW5mb3JtYXRpb24gZnJvbSBRTG9naWMgQ29ycG9yYXRpb24gb3IgaXRzIHdob2xseS1vd25lZCBz dWJzaWRpYXJpZXMgdGhhdCBtYXkgYmUgY29uZmlkZW50aWFsLiBJZiB5b3UgYXJlIG5vdCB0aGUg aW50ZW5kZWQgcmVjaXBpZW50LCB5b3UgbWF5IG5vdCByZWFkLCBjb3B5LCBkaXN0cmlidXRlLCBv ciB1c2UgdGhpcyBpbmZvcm1hdGlvbi4gSWYgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB0cmFuc21p c3Npb24gaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBieSBy ZXBseSBlLW1haWwgYW5kIHRoZW4gZGVsZXRlIHRoaXMgbWVzc2FnZS4NCg==