From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ola Liljedahl Subject: Re: [PATCH v3 1/3] ring: read tail using atomic load Date: Mon, 8 Oct 2018 10:39:10 +0000 Message-ID: <5630E77E-370D-4EFF-B79D-D23F863800C5@arm.com> References: <1555626C-F2B8-44EB-98A3-79B1F7002587@arm.com> <60055965-A7C8-4E9F-8668-0AE1DCE57515@arm.com> <20181006074126.GA16715@jerin> <20181007040243.GA1850@jerin> <7A156041-23EC-4CCB-B129-3607AF34A992@arm.com> <20181008060629.GA5228@jerin> <063A95EC-CFC1-42F7-B864-DFB9C6718AC8@arm.com> <20181008100004.GB11081@jerin> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "dev@dpdk.org" , Honnappa Nagarahalli , "Ananyev, Konstantin" , Steve Capper , nd , "stable@dpdk.org" To: "Gavin Hu (Arm Technology China)" , Jerin Jacob Return-path: In-Reply-To: Content-Language: en-US Content-ID: <30936B920E04354E84F5363DAE9AD7E9@eurprd08.prod.outlook.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" T24gMDgvMTAvMjAxOCwgMTI6MzMsICJHYXZpbiBIdSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIiA8 R2F2aW4uSHVAYXJtLmNvbT4gd3JvdGU6DQoNCiAgICBJIGRpZCBiZW5jaG1hcmtpbmcgdy9vIGFu ZCB3LyB0aGUgcGF0Y2gsIGl0IGRpZCBub3Qgc2hvdyBhbnkgbm90aWNlYWJsZSBkaWZmZXJlbmNl cyBpbiB0ZXJtcyBvZiBsYXRlbmN5Lg0KV2hpY2ggcGxhdGZvcm0gaXMgdGhpcz8NCg0KDQogICAg SGVyZSBpcyB0aGUgZnVsbCBsb2coIDMgcnVucyB3L28gdGhlIHBhdGNoIGFuZCAyIHJ1bnMgdy8g dGhlIHBhdGNoKS4NCiAgICANCiAgICBzdWRvIC4vdGVzdC90ZXN0L3Rlc3QgLWwgMTYtMTksNDQt NDcsNzItNzUsMTAwLTEwMyAtbiA0IC0tc29ja2V0LW1lbT0xMDI0ICAtLSAtaQ0KICAgIA0KICAg IFJURT4+cmluZ19wZXJmX2F1dG90ZXN0ICgjMSBydW4gb2YgdGVzdCB3aXRob3V0IHRoZSBwYXRj aCkNCiAgICAjIyMgVGVzdGluZyBzaW5nbGUgZWxlbWVudCBhbmQgYnVyc3QgZW5xL2RlcSAjIyMN CiAgICBTUC9TQyBzaW5nbGUgZW5xL2RlcXVldWU6IDgNCiAgICBNUC9NQyBzaW5nbGUgZW5xL2Rl cXVldWU6IDEwDQogICAgU1AvU0MgYnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxDQogICAg TVAvTUMgYnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxDQogICAgU1AvU0MgYnVyc3QgZW5x L2RlcXVldWUgKHNpemU6IDMyKTogMA0KICAgIE1QL01DIGJ1cnN0IGVucS9kZXF1ZXVlIChzaXpl OiAzMik6IDANCiAgICANCiAgICAjIyMgVGVzdGluZyBlbXB0eSBkZXF1ZXVlICMjIw0KICAgIFND IGVtcHR5IGRlcXVldWU6IDAuMjQNCiAgICBNQyBlbXB0eSBkZXF1ZXVlOiAwLjI0DQogICAgDQog ICAgIyMjIFRlc3RpbmcgdXNpbmcgYSBzaW5nbGUgbGNvcmUgIyMjDQogICAgU1AvU0MgYnVsayBl bnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDEuNDANCiAgICBNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChz aXplOiA4KTogMS43NA0KICAgIFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMC41 OQ0KICAgIE1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMC42OA0KICAgIA0KICAg ICMjIyBUZXN0aW5nIHVzaW5nIHR3byBoeXBlcnRocmVhZHMgIyMjDQogICAgU1AvU0MgYnVsayBl bnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDIuNDkNCiAgICBNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChz aXplOiA4KTogMy4wOQ0KICAgIFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMS4w Nw0KICAgIE1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMS4xMw0KICAgIA0KICAg ICMjIyBUZXN0aW5nIHVzaW5nIHR3byBwaHlzaWNhbCBjb3JlcyAjIyMNCiAgICBTUC9TQyBidWxr IGVucS9kZXF1ZXVlIChzaXplOiA4KTogNi41NQ0KICAgIE1QL01DIGJ1bGsgZW5xL2RlcXVldWUg KHNpemU6IDgpOiAxMi45OQ0KICAgIFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTog MS45Nw0KICAgIE1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMy40MQ0KICAgIA0K ICAgIFJURT4+cmluZ19wZXJmX2F1dG90ZXN0KCMyIHJ1biBvZiB0ZXN0IHdpdGhvdXQgdGhlIHBh dGNoKQ0KICAgICMjIyBUZXN0aW5nIHNpbmdsZSBlbGVtZW50IGFuZCBidXJzdCBlbnEvZGVxICMj Iw0KICAgIFNQL1NDIHNpbmdsZSBlbnEvZGVxdWV1ZTogOA0KICAgIE1QL01DIHNpbmdsZSBlbnEv ZGVxdWV1ZTogMTANCiAgICBTUC9TQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDENCiAg ICBNUC9NQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDENCiAgICBTUC9TQyBidXJzdCBl bnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAwDQogICAgTVAvTUMgYnVyc3QgZW5xL2RlcXVldWUgKHNp emU6IDMyKTogMA0KICAgIA0KICAgICMjIyBUZXN0aW5nIGVtcHR5IGRlcXVldWUgIyMjDQogICAg U0MgZW1wdHkgZGVxdWV1ZTogMC4yNA0KICAgIE1DIGVtcHR5IGRlcXVldWU6IDAuMjQNCiAgICAN CiAgICAjIyMgVGVzdGluZyB1c2luZyBhIHNpbmdsZSBsY29yZSAjIyMNCiAgICBTUC9TQyBidWxr IGVucS9kZXF1ZXVlIChzaXplOiA4KTogMS40MA0KICAgIE1QL01DIGJ1bGsgZW5xL2RlcXVldWUg KHNpemU6IDgpOiAxLjc0DQogICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAw LjU5DQogICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAwLjY4DQogICAgDQog ICAgIyMjIFRlc3RpbmcgdXNpbmcgdHdvIGh5cGVydGhyZWFkcyAjIyMNCiAgICBTUC9TQyBidWxr IGVucS9kZXF1ZXVlIChzaXplOiA4KTogMi41MA0KICAgIE1QL01DIGJ1bGsgZW5xL2RlcXVldWUg KHNpemU6IDgpOiAzLjA4DQogICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAx LjA3DQogICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAxLjEzDQogICAgDQog ICAgIyMjIFRlc3RpbmcgdXNpbmcgdHdvIHBoeXNpY2FsIGNvcmVzICMjIw0KICAgIFNQL1NDIGJ1 bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiA2LjU3DQogICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1 ZSAoc2l6ZTogOCk6IDEzLjAwDQogICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIp OiAxLjk4DQogICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAzLjQxDQogICAg VGVzdCBPSw0KICAgIA0KICAgIFJURT4+cmluZ19wZXJmX2F1dG90ZXN0KCMzIHJ1biBvZiB0ZXN0 IHdpdGhvdXQgdGhlIHBhdGNoKQ0KICAgICMjIyBUZXN0aW5nIHNpbmdsZSBlbGVtZW50IGFuZCBi dXJzdCBlbnEvZGVxICMjIw0KICAgIFNQL1NDIHNpbmdsZSBlbnEvZGVxdWV1ZTogOA0KICAgIE1Q L01DIHNpbmdsZSBlbnEvZGVxdWV1ZTogMTANCiAgICBTUC9TQyBidXJzdCBlbnEvZGVxdWV1ZSAo c2l6ZTogOCk6IDENCiAgICBNUC9NQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDENCiAg ICBTUC9TQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAwDQogICAgTVAvTUMgYnVyc3Qg ZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMA0KICAgIA0KICAgICMjIyBUZXN0aW5nIGVtcHR5IGRl cXVldWUgIyMjDQogICAgU0MgZW1wdHkgZGVxdWV1ZTogMC4yNA0KICAgIE1DIGVtcHR5IGRlcXVl dWU6IDAuMjQNCiAgICANCiAgICAjIyMgVGVzdGluZyB1c2luZyBhIHNpbmdsZSBsY29yZSAjIyMN CiAgICBTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMS40MA0KICAgIE1QL01DIGJ1 bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxLjc0DQogICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1 ZSAoc2l6ZTogMzIpOiAwLjU5DQogICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIp OiAwLjY4DQogICAgDQogICAgIyMjIFRlc3RpbmcgdXNpbmcgdHdvIGh5cGVydGhyZWFkcyAjIyMN CiAgICBTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMi40OQ0KICAgIE1QL01DIGJ1 bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAzLjA4DQogICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1 ZSAoc2l6ZTogMzIpOiAxLjA3DQogICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIp OiAxLjEzDQogICAgDQogICAgIyMjIFRlc3RpbmcgdXNpbmcgdHdvIHBoeXNpY2FsIGNvcmVzICMj Iw0KICAgIFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiA2LjU1DQogICAgTVAvTUMg YnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDEyLjk2DQogICAgU1AvU0MgYnVsayBlbnEvZGVx dWV1ZSAoc2l6ZTogMzIpOiAxLjk5DQogICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTog MzIpOiAzLjM3DQogICAgDQogICAgDQogICAgUlRFPj5yaW5nX3BlcmZfYXV0b3Rlc3QoIzEgcnVu IG9mIHRoZSB0ZXN0IHdpdGggdGhlIHBhdGNoKQ0KICAgICMjIyBUZXN0aW5nIHNpbmdsZSBlbGVt ZW50IGFuZCBidXJzdCBlbnEvZGVxICMjIw0KICAgIFNQL1NDIHNpbmdsZSBlbnEvZGVxdWV1ZTog OA0KICAgIE1QL01DIHNpbmdsZSBlbnEvZGVxdWV1ZTogMTANCiAgICBTUC9TQyBidXJzdCBlbnEv ZGVxdWV1ZSAoc2l6ZTogOCk6IDENCiAgICBNUC9NQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6ZTog OCk6IDENCiAgICBTUC9TQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAwDQogICAgTVAv TUMgYnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMA0KICAgIA0KICAgICMjIyBUZXN0aW5n IGVtcHR5IGRlcXVldWUgIyMjDQogICAgU0MgZW1wdHkgZGVxdWV1ZTogMC4yNA0KICAgIE1DIGVt cHR5IGRlcXVldWU6IDAuMzINCiAgICANCiAgICAjIyMgVGVzdGluZyB1c2luZyBhIHNpbmdsZSBs Y29yZSAjIyMNCiAgICBTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMS40Mw0KICAg IE1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxLjc0DQogICAgU1AvU0MgYnVsayBl bnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAwLjYwDQogICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAo c2l6ZTogMzIpOiAwLjY4DQogICAgDQogICAgIyMjIFRlc3RpbmcgdXNpbmcgdHdvIGh5cGVydGhy ZWFkcyAjIyMNCiAgICBTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMi41Mw0KICAg IE1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAzLjA5DQogICAgU1AvU0MgYnVsayBl bnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAxLjA2DQogICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAo c2l6ZTogMzIpOiAxLjE4DQogICAgDQogICAgIyMjIFRlc3RpbmcgdXNpbmcgdHdvIHBoeXNpY2Fs IGNvcmVzICMjIw0KICAgIFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiA2LjU3DQog ICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDEyLjkzDQogICAgU1AvU0MgYnVs ayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAxLjk4DQogICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1 ZSAoc2l6ZTogMzIpOiAzLjQ0DQogICAgVGVzdCBPSw0KICAgIFJURT4+cmluZ19wZXJmX2F1dG90 ZXN0ICgjMSBydW4gb2YgdGhlIHRlc3Qgd2l0aCB0aGUgcGF0Y2gpDQogICAgIyMjIFRlc3Rpbmcg c2luZ2xlIGVsZW1lbnQgYW5kIGJ1cnN0IGVucS9kZXEgIyMjDQogICAgU1AvU0Mgc2luZ2xlIGVu cS9kZXF1ZXVlOiA4DQogICAgTVAvTUMgc2luZ2xlIGVucS9kZXF1ZXVlOiAxMA0KICAgIFNQL1ND IGJ1cnN0IGVucS9kZXF1ZXVlIChzaXplOiA4KTogMQ0KICAgIE1QL01DIGJ1cnN0IGVucS9kZXF1 ZXVlIChzaXplOiA4KTogMQ0KICAgIFNQL1NDIGJ1cnN0IGVucS9kZXF1ZXVlIChzaXplOiAzMik6 IDANCiAgICBNUC9NQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAwDQogICAgDQogICAg IyMjIFRlc3RpbmcgZW1wdHkgZGVxdWV1ZSAjIyMNCiAgICBTQyBlbXB0eSBkZXF1ZXVlOiAwLjI0 DQogICAgTUMgZW1wdHkgZGVxdWV1ZTogMC4zMg0KICAgIA0KICAgICMjIyBUZXN0aW5nIHVzaW5n IGEgc2luZ2xlIGxjb3JlICMjIw0KICAgIFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgp OiAxLjQzDQogICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDEuNzQNCiAgICBT UC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDAuNjANCiAgICBNUC9NQyBidWxrIGVu cS9kZXF1ZXVlIChzaXplOiAzMik6IDAuNjgNCiAgICANCiAgICAjIyMgVGVzdGluZyB1c2luZyB0 d28gaHlwZXJ0aHJlYWRzICMjIw0KICAgIFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgp OiAyLjUzDQogICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDMuMDkNCiAgICBT UC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDEuMDYNCiAgICBNUC9NQyBidWxrIGVu cS9kZXF1ZXVlIChzaXplOiAzMik6IDEuMTgNCiAgICANCiAgICAjIyMgVGVzdGluZyB1c2luZyB0 d28gcGh5c2ljYWwgY29yZXMgIyMjDQogICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTog OCk6IDYuNTcNCiAgICBNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMTIuOTMNCiAg ICBTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDEuOTgNCiAgICBNUC9NQyBidWxr IGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDMuNDYNCiAgICBUZXN0IE9LDQogICAgDQogICAgPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KICAgID4gRnJvbTogT2xhIExpbGplZGFobA0KICAg ID4gU2VudDogTW9uZGF5LCBPY3RvYmVyIDgsIDIwMTggNjoyNiBQTQ0KICAgID4gVG86IEplcmlu IEphY29iIDxqZXJpbi5qYWNvYkBjYXZpdW1uZXR3b3Jrcy5jb20+DQogICAgPiBDYzogZGV2QGRw ZGsub3JnOyBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KICAgID4gPEhvbm5hcHBhLk5hZ2FyYWhhbGxp QGFybS5jb20+OyBBbmFueWV2LCBLb25zdGFudGluDQogICAgPiA8a29uc3RhbnRpbi5hbmFueWV2 QGludGVsLmNvbT47IEdhdmluIEh1IChBcm0gVGVjaG5vbG9neSBDaGluYSkNCiAgICA+IDxHYXZp bi5IdUBhcm0uY29tPjsgU3RldmUgQ2FwcGVyIDxTdGV2ZS5DYXBwZXJAYXJtLmNvbT47IG5kDQog ICAgPiA8bmRAYXJtLmNvbT47IHN0YWJsZUBkcGRrLm9yZw0KICAgID4gU3ViamVjdDogUmU6IFtQ QVRDSCB2MyAxLzNdIHJpbmc6IHJlYWQgdGFpbCB1c2luZyBhdG9taWMgbG9hZA0KICAgID4gDQog ICAgPiANCiAgICA+IA0KICAgID4gT24gMDgvMTAvMjAxOCwgMTI6MDAsICJKZXJpbiBKYWNvYiIg PGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4NCiAgICA+IHdyb3RlOg0KICAgID4gDQog ICAgPiAgICAgLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCiAgICA+ICAgICA+IERhdGU6IE1v biwgOCBPY3QgMjAxOCAwOToyMjowNSArMDAwMA0KICAgID4gICAgID4gRnJvbTogT2xhIExpbGpl ZGFobCA8T2xhLkxpbGplZGFobEBhcm0uY29tPg0KICAgID4gICAgID4gVG86IEplcmluIEphY29i IDxqZXJpbi5qYWNvYkBjYXZpdW1uZXR3b3Jrcy5jb20+DQogICAgPiAgICAgPiBDQzogImRldkBk cGRrLm9yZyIgPGRldkBkcGRrLm9yZz4sIEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQogICAgPiAgICAg PiAgPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+LCAiQW5hbnlldiwgS29uc3RhbnRpbiIN CiAgICA+ICAgICA+ICA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4sICJHYXZpbiBIdSAo QXJtIFRlY2hub2xvZ3kgQ2hpbmEpIg0KICAgID4gICAgID4gIDxHYXZpbi5IdUBhcm0uY29tPiwg U3RldmUgQ2FwcGVyIDxTdGV2ZS5DYXBwZXJAYXJtLmNvbT4sIG5kDQogICAgPiA8bmRAYXJtLmNv bT4sDQogICAgPiAgICAgPiAgInN0YWJsZUBkcGRrLm9yZyIgPHN0YWJsZUBkcGRrLm9yZz4NCiAg ICA+ICAgICA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMS8zXSByaW5nOiByZWFkIHRhaWwgdXNp bmcgYXRvbWljIGxvYWQNCiAgICA+ICAgICA+IHVzZXItYWdlbnQ6IE1pY3Jvc29mdC1NYWNPdXRs b29rLzEwLjExLjAuMTgwOTA5DQogICAgPiAgICAgPg0KICAgID4gICAgID4gRXh0ZXJuYWwgRW1h aWwNCiAgICA+ICAgICA+DQogICAgPiAgICAgPiBPbiAwOC8xMC8yMDE4LCAwODowNiwgIkplcmlu IEphY29iIiA8amVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3MuY29tPg0KICAgID4gd3JvdGU6DQog ICAgPiAgICAgPg0KICAgID4gICAgID4gICAgIC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQog ICAgPiAgICAgPiAgICAgPiBEYXRlOiBTdW4sIDcgT2N0IDIwMTggMjA6NDQ6NTQgKzAwMDANCiAg ICA+ICAgICA+ICAgICA+IEZyb206IE9sYSBMaWxqZWRhaGwgPE9sYS5MaWxqZWRhaGxAYXJtLmNv bT4NCiAgICA+ICAgICA+ICAgICA+IFRvOiBKZXJpbiBKYWNvYiA8amVyaW4uamFjb2JAY2F2aXVt bmV0d29ya3MuY29tPg0KICAgID4gICAgID4gICAgID4gQ0M6ICJkZXZAZHBkay5vcmciIDxkZXZA ZHBkay5vcmc+LCBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KICAgID4gICAgID4gICAgID4gIDxIb25u YXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPiwgIkFuYW55ZXYsIEtvbnN0YW50aW4iDQogICAgPiAg ICAgPiAgICAgPiAgPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+LCAiR2F2aW4gSHUgKEFy bSBUZWNobm9sb2d5DQogICAgPiBDaGluYSkiDQogICAgPiAgICAgPiAgICAgPiAgPEdhdmluLkh1 QGFybS5jb20+LCBTdGV2ZSBDYXBwZXIgPFN0ZXZlLkNhcHBlckBhcm0uY29tPiwgbmQNCiAgICA+ IDxuZEBhcm0uY29tPiwNCiAgICA+ICAgICA+ICAgICA+ICAic3RhYmxlQGRwZGsub3JnIiA8c3Rh YmxlQGRwZGsub3JnPg0KICAgID4gICAgID4gICAgID4gU3ViamVjdDogUmU6IFtQQVRDSCB2MyAx LzNdIHJpbmc6IHJlYWQgdGFpbCB1c2luZyBhdG9taWMgbG9hZA0KICAgID4gICAgID4gICAgID4g dXNlci1hZ2VudDogTWljcm9zb2Z0LU1hY091dGxvb2svMTAuMTEuMC4xODA5MDkNCiAgICA+ICAg ICA+ICAgICA+DQogICAgPiAgICAgPg0KICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICBDb3Vs ZCB5b3UgcGxlYXNlIGZpeCB0aGUgZW1haWwgY2xpZW50IGZvciBpbmxpbmUgcmVwbHkuDQogICAg PiAgICAgPiBTb3JyeSB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBiZSBwb3NzaWJsZSB3aXRoIE91dGxv b2sgZm9yIE1hYyAxNiBvcg0KICAgID4gT2ZmaWNlMzY1LiBUaGUgb2ZmaWNpYWwgT2ZmaWNlMzY1 L091dGxvb2sNCiAgICA+ICAgICA+IGRvY3VtZW50YXRpb24gZG9lc24ndCBtYXRjaCB0aGUgYWN0 dWFsIHVzZXIgaW50ZXJmYWNlLi4uDQogICAgPiAgICAgPg0KICAgID4gICAgID4NCiAgICA+ICAg ICA+DQogICAgPiAgICAgPiAgICAgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC92NC4x OS1yYzcvcHJvY2Vzcy9lbWFpbC0NCiAgICA+IGNsaWVudHMuaHRtbA0KICAgID4gICAgID4NCiAg ICA+ICAgICA+DQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gT24gMDcvMTAv MjAxOCwgMDY6MDMsICJKZXJpbiBKYWNvYiINCiAgICA+IDxqZXJpbi5qYWNvYkBjYXZpdW1uZXR3 b3Jrcy5jb20+IHdyb3RlOg0KICAgID4gICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICA+ICAg ICBJbiBhcm02NCBjYXNlLCBpdCB3aWxsIGhhdmUgQVRPTUlDX1JFTEFYRUQgZm9sbG93ZWQgYnkg YXNtDQogICAgPiB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iikgb2YgcnRlX3BhdXNlKCkuDQogICAg PiAgICAgPiAgICAgPiAgICAgSSB3b3VsZCBuJ3QgaGF2ZSBhbnkgaXNzdWUsIGlmIHRoZSBnZW5l cmF0ZWQgY29kZSBjb2RlIGlzIHNhbWUgb3INCiAgICA+IGJldHRlciB0aGFuIHRoZSBleGl0aW5n IGNhc2UuIGJ1dCBpdCBub3QgdGhlIGNhc2UsIFJpZ2h0Pw0KICAgID4gICAgID4gICAgID4gVGhl IGV4aXN0aW5nIGNhc2UgaXMgYWN0dWFsbHkgbm90IGludGVyZXN0aW5nIChJTU8pIGFzIGl0IGV4 cG9zZXMNCiAgICA+IHVuZGVmaW5lZCBiZWhhdmlvdXIgd2hpY2ggYWxsb3dzIHRoZSBjb21waWxl ciB0byBkbyBhbnl0aGluZy4gQnV0IHlvdQ0KICAgID4gc2VlbSB0byBiZSBzYXRpc2ZpZWQgd2l0 aCAid29ya3MgZm9yIG1lLCByaWdodCBoZXJlIHJpZ2h0IG5vdyIuIEkgdGhpbmsgdGhlDQogICAg PiBjb3N0IG9mIGF2b2lkaW5nIHVuZGVmaW5lZCBiZWhhdmlvdXIgaXMgYWNjZXB0YWJsZSAoYWN0 dWFsbHkgSSBkb24ndCB0aGluayBpdA0KICAgID4gZXZlbiB3aWxsIGJlIG5vdGljZWFibGUpLg0K ICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICBJIGFtIG5vdCBjb252aW5jZWQgYmVjYXVzZSBv ZiB1c2Ugb2Ygdm9sYXRpbGUgaW4gaGVhZCBhbmQgdGFpbCBpbmRleGVzLg0KICAgID4gICAgID4g ICAgIEZvciBtZSB0aGF0IGJyaW5ncyB0aGUgZGVmaW5lZCBiZWhhdmlvci4NCiAgICA+ICAgICA+ IEFzIGxvbmcgYXMgeW91IGRvbid0IG1peCBpbiBDMTEgYXRvbWljIGFjY2Vzc2VzIChqdXN0IHVz ZSAicGxhaW4iIGFjY2Vzc2VzDQogICAgPiB0byB2b2xhdGlsZSBvYmplY3RzKSwNCiAgICA+ICAg ICA+IGl0IGlzIEFGQUlLIGRlZmluZWQgYmVoYXZpb3VyIChidXQgbm90IG5lY2Vzc2FyaWx5IHVz aW5nIGF0b21pYyBsb2FkcyBhbmQNCiAgICA+IHN0b3JlcykuIEJ1dCBJIHF1b3RlZA0KICAgID4g ICAgID4gdGhlIEMxMSBzcGVjIHdoZXJlIGl0IGV4cGxpY2l0bHkgbWVudGlvbnMgdGhhdCBtaXhp bmcgYXRvbWljIGFuZCBub24tDQogICAgPiBhdG9taWMgYWNjZXNzZXMgdG8gdGhlIHNhbWUNCiAg ICA+ICAgICA+IG9iamVjdCBpcyB1bmRlZmluZWQgYmVoYXZpb3VyLiBEb24ndCBhcmd1ZSB3aXRo IG1lLCBhcmd1ZSB3aXRoIHRoZSBDMTENCiAgICA+IHNwZWMuDQogICAgPiAgICAgPiBJZiB5b3Ug d2FudCB0byBkaXNvYmV5IHRoZSBzcGVjLCB0aGlzIHNob3VsZCBhdCBsZWFzdCBiZSBjYWxsZWQg b3V0IGZvciBpbg0KICAgID4gdGhlIGNvZGUgd2l0aCBhIGNvbW1lbnQuDQogICAgPiANCiAgICA+ ICAgICBUaGF0J3MgYm9pbHMgZG93biBvbmx5IG9uZSBxdWVzdGlvbiwgc2hvdWxkIHdlIGZvbGxv dyBDMTEgc3BlYz8gV2h5IG5vdA0KICAgID4gb25seSB0YWtlIGxvYWQNCiAgICA+ICAgICBhY3F1 aXJlIGFuZCBzdG9yZSByZWxlYXNlIHNlbWFudGljcyBvbmx5IGp1c3QgbGlrZSBMaW51eCBrZXJu ZWwgYW5kIEZyZWVCU0QuDQogICAgPiBBbmQgaW50cm9kdWNlIGV2ZW4gbW9yZSB1bmRlZmluZWQg YmVoYXZpb3VyPw0KICAgID4gDQogICAgPiAgICAgRG9lcyBub3QgbG9vayBsaWtlIEMxMSBtZW1v cnkgbW9kZWwgaXMgc3VwZXIgZWZmaWNpZW50IGluIHRlcm0gb2YgZ2NjDQogICAgPiAgICAgaW1w bGVtZW50YXRpb24uDQogICAgPiBZb3UgYXJlIG1ha2luZyBhIGNoaWNrZW4gb3V0IG9mIGEgZmVh dGhlci4NCiAgICA+IA0KICAgID4gSSB0aGluayB0aGlzICJwcm9ibGVtIiB3aXRoIG9uZSBhZGRp dGlvbmFsIEFERCBpbnN0cnVjdGlvbiB3aWxsIG9ubHkgY29uY2Vybg0KICAgID4gX19hdG9taWNf bG9hZF9uKF9fQVRPTUlDX1JFTEFYRUQpIGFuZA0KICAgID4gX19hdG9taWNfc3RvcmVfbihfX0FU T01JQ19SRUxBWEVEKSBiZWNhdXNlIHRoZSBjb21waWxlciBzZXBhcmF0ZXMNCiAgICA+IHRoZSBh ZGRyZXNzIGdlbmVyYXRpb24gKGFkZCBvZmZzZXQgb2Ygc3RydWN0IG1lbWJlcikgZnJvbSB0aGUg bG9hZCBvciBzdG9yZQ0KICAgID4gaXRzZWxmLiBGb3Igb3RoZXIgYXRvbWljIG9wZXJhdGlvbnMg YW5kIG1lbW9yeSBvcmRlcmluZ3MgKGUuZy4NCiAgICA+IF9fYXRvbWljX2xvYWRfbihfX0FUT01J Q19BQ1FVSVJFKSwgdGhlIGV4dHJhIEFERCBpbnN0cnVjdGlvbiB3aWxsIGJlDQogICAgPiBpbmNs dWRlZCBhbnl3YXkgKGFzIGxvbmcgYXMgd2UgYWNjZXNzIGEgbm9uLWZpcnN0IHN0cnVjdCBtZW1i ZXIpIGJlY2F1c2UNCiAgICA+IGUuZy4gTERBUiBvbmx5IGFjY2VwdHMgYSBiYXNlIHJlZ2lzdGVy IHdpdGggbm8gb2Zmc2V0Lg0KICAgID4gDQogICAgPiBJIHN1Z2dlc3QgbWluaW1pc2luZyB0aGUg aW1wb3NlZCBtZW1vcnkgb3JkZXJpbmdzIGNhbiBoYXZlIGEgbXVjaCBsYXJnZXINCiAgICA+IChw b3NpdGl2ZSkgZWZmZWN0IG9uIHBlcmZvcm1hbmNlIGNvbXBhcmVkIHRvIGF2b2lkaW5nIG9uZSBB REQgaW5zdHJ1Y3Rpb24NCiAgICA+IChtZW1vcnkgYWNjZXNzZXMgYXJlIG11Y2ggc2xvd2VyIHRo YW4gQ1BVIEFMVSBpbnN0cnVjdGlvbnMpLg0KICAgID4gVXNpbmcgQzExIG1lbW9yeSBtb2RlbCBh bmQgaWRlbnRpZnlpbmcgZXhhY3RseSB3aGljaCBvYmplY3RzIGFyZSB1c2VkIGZvcg0KICAgID4g c3luY2hyb25pc2F0aW9uIGFuZCB3aGV0aGVyIChhbnkpIHVwZGF0ZXMgdG8gc2hhcmVkIG1lbW9y eSBhcmUgYWNxdWlyZWQNCiAgICA+IG9yIHJlbGVhc2VkIChubyB1cGRhdGVzIHRvIHNoYXJlZCBt ZW1vcnkgbWVhbnMgcmVsYXhlZCBvcmRlciBjYW4gYmUgdXNlZCkNCiAgICA+IHdpbGwgcHJvdmlk ZSBtYXhpbXVtIGZyZWVkb20gdG8gdGhlIGNvbXBpbGVyIGFuZCBoYXJkd2FyZSB0byBnZXQgdGhl IGJlc3QNCiAgICA+IHJlc3VsdC4NCiAgICA+IA0KICAgID4gVGhlIEZyZWVCU0QgYW5kIERQREsg cmluZyBidWZmZXJzIHNob3cgc29tZSBmdW5kYW1lbnRhbA0KICAgID4gbWlzdW5kZXJzdGFuZGlu Z3MgaGVyZS4gSW5zdGVhZCBleGNlc3NpdmUgb3JkZXJpbmdzIGFuZCBleHBsaWNpdCBiYXJyaWVy cw0KICAgID4gaGF2ZSBiZWVuIHVzZWQgYXMgYmFuZC1haWRzLCB3aXRoIHVua25vd24gZWZmZWN0 cyBvbiBwZXJmb3JtYW5jZS4NCiAgICA+IA0KICAgID4gDQogICAgPiAgICAgPg0KICAgID4gICAg ID4NCiAgICA+ICAgICA+ICAgICBUaGF0IHRoZSByZWFzb24gd2h5IEkgc2hhcmVkDQogICAgPiAg ICAgPiAgICAgdGhlIGdlbmVyYXRlZCBhc3NlbWJseSBjb2RlLiBJZiB5b3UgdGhpbmsgb3RoZXIg d2F5LCBQaWNrIGFueSBjb21waWxlcg0KICAgID4gICAgID4gICAgIGFuZCBzZWUgZ2VuZXJhdGVk IG91dHB1dC4NCiAgICA+ICAgICA+IFRoaXMgaXMgd2hhdCBvbmUgY29tcGlsZXIgZm9yIG9uZSBh cmNoaXRlY3R1cmUgZ2VuZXJhdGVzIHRvZGF5LiBUaGVzZQ0KICAgID4gdGhpbmdzIGNoYW5nZS4g T3RoZXIgdGhpbmdzDQogICAgPiAgICAgPiB0aGF0IHVzZWQgdG8gd29yayBvciB3b3JrZWQgZm9y IHNvbWUgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIGhhcyBzdG9wcGVkDQogICAgPiB3b3JraW5nIGlu IG5ld2VyIHZlcnNpb25zIG9mDQogICAgPiAgICAgPiB0aGUgY29tcGlsZXIuDQogICAgPiAgICAg Pg0KICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICBBbmQNCiAgICA+ICAgICA+DQogICAgPiAg ICAgPiAgICAgRnJlZWJzZCBpbXBsZW1lbnRhdGlvbiBvZiByaW5nIGJ1ZmZlcihXaGljaCBEUERL IGRlcml2ZWQgZnJvbSksDQogICAgPiBEb24ndCBoYXZlDQogICAgPiAgICAgPiAgICAgc3VjaCBs b2dpYywgU2VlDQogICAgPiBodHRwczovL2dpdGh1Yi5jb20vZnJlZWJzZC9mcmVlYnNkL2Jsb2Iv bWFzdGVyL3N5cy9zeXMvYnVmX3JpbmcuaCNMMTA4DQogICAgPiAgICAgPiBJdCBsb29rcyBsaWtl IEZyZWVCU0QgdXNlcyBzb21lIGtpbmQgb2YgQzExIGF0b21pYyBtZW1vcnkgbW9kZWwtDQogICAg PiBpbnNwaXJlZCBBUEkgYWx0aG91Z2ggSSBkb24ndCBzZWUNCiAgICA+ICAgICA+IGV4YWN0bHkg aG93IGUuZy4gYXRvbWljX3N0b3JlX3JlbF9pbnQoKSBpcyBpbXBsZW1lbnRlZC4gVGhlIGNvZGUg YWxzbw0KICAgID4gbWl4ZXMgaW4gZXhwbGljaXQgYmFycmllcnMNCiAgICA+ICAgICA+IHNvIGRl ZmluaXRpdmVseSBub3QgcHVyZSBDMTEgbWVtb3J5IG1vZGVsIHVzYWdlLiBBbmQgZmluYWxseSwg aXQgZG9lc24ndA0KICAgID4gZXN0YWJsaXNoIHRoZSBwcm9wZXINCiAgICA+ICAgICA+IGxvYWQt YWNxdWlyZS9zdG9yZS1yZWxlYXNlIHJlbGF0aW9uc2hpcHMgKGUuZy4gc3RvcmUtcmVsZWFzZSBj b25zX3RhaWwNCiAgICA+IHJlcXVpcmVzIGEgbG9hZC1hY3F1aXJlIGNvbnNfdGFpbCwNCiAgICA+ ICAgICA+IHNhbWUgZm9yIHByb2RfdGFpbCkuDQogICAgPiAgICAgPg0KICAgID4gICAgID4gIiog bXVsdGktcHJvZHVjZXIgc2FmZSBsb2NrLWZyZWUgcmluZyBidWZmZXIgZW5xdWV1ZSINCiAgICA+ ICAgICA+IFRoZSBjb21tZW50IGlzIGFsc28gd3JvbmcuIFRoaXMgZGVzaWduIGlzIG5vdCBsb2Nr LWZyZWUsIGhvdyBjb3VsZCBpdCBiZQ0KICAgID4gd2hlbiB0aGVyZSBpcyBzcGlubmluZw0KICAg ID4gICAgID4gKHdhaXRpbmcpIGZvciBvdGhlciB0aHJlYWRzIGluIHRoZSBjb2RlPyBJZiBhIHRo cmVhZCBtdXN0IHdhaXQgZm9yIG90aGVyDQogICAgPiB0aHJlYWRzLCB0aGVuIGJ5IGRlZmluaXRp b24NCiAgICA+ICAgICA+IHRoZSBkZXNpZ24gaXMgYmxvY2tpbmcuDQogICAgPiAgICAgPg0KICAg ID4gICAgID4gU28geW91IGFyZSBzYXlpbmcgdGhhdCBiZWNhdXNlIEZyZWVCU0QgaXMgZG9pbmcg aXQgd3JvbmcsIERQREsgY2FuIGFsc28NCiAgICA+IGRvIGl0IHdyb25nPw0KICAgID4gICAgID4N CiAgICA+ICAgICA+DQogICAgPiAgICAgPiAgICAgU2VlIGJlbG93IHRvby4NCiAgICA+ICAgICA+ DQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gU2tpcHBpbmcgdGhlIGNvbXBp bGVyIG1lbW9yeSBiYXJyaWVyIGluIHJ0ZV9wYXVzZSgpIHBvdGVudGlhbGx5DQogICAgPiBhbGxv d3MgZm9yIG9wdGltaXNhdGlvbnMgdGhhdCBwcm92aWRlIG11Y2ggbW9yZSBiZW5lZml0LCBlLmcu IGhpZGluZyBzb21lDQogICAgPiBjYWNoZSBtaXNzIGxhdGVuY3kgZm9yIGxhdGVyIGxvYWRzLiBU aGUgRFBESyByaW5nIGJ1ZmZlciBpbXBsZW1lbnRhdGlvbiBpcw0KICAgID4gZGVmaW5lZCBzbyB0 byBlbmFibGUgaW5saW5pbmcgb2YgZW5xdWV1ZS9kZXF1ZXVlIGZ1bmN0aW9ucyBpbnRvIHRoZSBj YWxsZXIsDQogICAgPiBhbnkgY29kZSBjb3VsZCBpbW1lZGlhdGVseSBmb2xsb3cgdGhlc2UgY2Fs bHMuDQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gRnJvbSBJTlRFUk5BVElP TkFMIFNUQU5EQVJEIMKpSVNPL0lFQyBJU08vSUVDIDk4OTk6MjAxeA0KICAgID4gICAgID4gICAg ID4gUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIOKAlCBDDQogICAgPiAgICAgPiAgICAgPg0KICAgID4g ICAgID4gICAgID4gNS4xLjIuNA0KICAgID4gICAgID4gICAgID4gNCBUd28gZXhwcmVzc2lvbiBl dmFsdWF0aW9ucyBjb25mbGljdCBpZiBvbmUgb2YgdGhlbSBtb2RpZmllcyBhDQogICAgPiBtZW1v cnkgbG9jYXRpb24gYW5kIHRoZSBvdGhlciBvbmUgcmVhZHMgb3IgbW9kaWZpZXMgdGhlIHNhbWUg bWVtb3J5DQogICAgPiBsb2NhdGlvbi4NCiAgICA+ICAgICA+ICAgICA+DQogICAgPiAgICAgPiAg ICAgPiAyNSBUaGUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbSBjb250YWlucyBhIGRhdGEgcmFjZSBp ZiBpdCBjb250YWlucyB0d28NCiAgICA+IGNvbmZsaWN0aW5nIGFjdGlvbnMgaW4gZGlmZmVyZW50 IHRocmVhZHMsIGF0IGxlYXN0IG9uZSBvZiB3aGljaCBpcyBub3QgYXRvbWljLA0KICAgID4gYW5k IG5laXRoZXIgaGFwcGVucyBiZWZvcmUgdGhlIG90aGVyLiBBbnkgc3VjaCBkYXRhIHJhY2UgcmVz dWx0cyBpbg0KICAgID4gdW5kZWZpbmVkIGJlaGF2aW9yLg0KICAgID4gICAgID4NCiAgICA+ICAg ICA+ICAgICBJTU8sIEJvdGggY29uZGl0aW9uIHdpbGwgc2F0aXNmeSBpZiB0aGUgdmFyaWFibGUg aXMgdm9sYXRpbGUgYW5kIDMyYml0IHJlYWQNCiAgICA+IHdpbGwgYXRvbWljDQogICAgPiAgICAg PiAgICAgZm9yIDMyYiBhbmQgNjRiIG1hY2hpbmVzLiBJZiBub3QsIHRoZSBwcm9ibGVtIHBlcnNp c3QgZm9yIGdlbmVyaWMgY2FzZQ0KICAgID4gICAgID4gICAgIGFzIHdlbGwobGliL2xpYnJ0ZV9y aW5nL3J0ZV9yaW5nX2dlbmVyaWMuaCkNCiAgICA+ICAgICA+IFRoZSByZWFkIGZyb20gYSB2b2xh dGlsZSBvYmplY3QgaXMgbm90IGFuIGF0b21pYyBhY2Nlc3MgcGVyIHRoZSBDMTEgc3BlYy4gSXQN CiAgICA+IGp1c3QgaGFwcGVucyB0bw0KICAgID4gICAgID4gYmUgdHJhbnNsYXRlZCB0byBhbiBp bnN0cnVjdGlvbiAob24geDg2LTY0IGFuZCBBQXJjaDY0L0E2NCkgdGhhdA0KICAgID4gaW1wbGVt ZW50cyBhbiBhdG9taWMgbG9hZC4NCiAgICA+ICAgICA+IEkgZG9uJ3QgdGhpbmsgYW55IGNvbXBp bGVyIHdvdWxkIGNoYW5nZSB0aGlzIGNvZGUgZ2VuZXJhdGlvbiBhbmQNCiAgICA+IHN1ZGRlbmx5 IGdlbmVyYXRlIHNvbWUNCiAgICA+ICAgICA+IG5vbi1hdG9taWMgbG9hZCBpbnN0cnVjdGlvbiBm b3IgYSBwcm9ncmFtIHRoYXQgKm9ubHkqIHVzZXMgdm9sYXRpbGUgdG8gZG8NCiAgICA+ICJhdG9t aWMiIGFjY2Vzc2VzLg0KICAgID4gICAgID4gQnV0IGEgZnV0dXJlIGNvbXBpbGVyIGNvdWxkIGRl dGVjdCB0aGUgbWl4IG9mIGF0b21pYyBhbmQgbm9uLWF0b21pYw0KICAgID4gYWNjZXNzZXMgYW5k IG1hcmsgdGhpcw0KICAgID4gICAgID4gZXhwcmVzc2lvbiBhcyBjYXVzaW5nIHVuZGVmaW5lZCBi ZWhhdmlvdXIgYW5kIHRoYXQgd291bGQgaGF2ZQ0KICAgID4gY29uc2VxdWVuY2VzIGZvciBjb2Rl IGdlbmVyYXRpb24uDQogICAgPiAgICAgPg0KICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICBJ IGFncmVlIHdpdGggeW91IG9uIEMxMSBtZW1vcnkgbW9kZWwgc2VtYW50aWNzIHVzYWdlLiBUaGUg cmVhc29uDQogICAgPiB3aHkgSQ0KICAgID4gICAgID4gICAgIHByb3Bvc2UgbmFtZSBmb3IgdGhl IGZpbGUgYXMgcnRlX3JpbmdfYzExX21lbS5oIGFzIERQREsgaXQgc2VsZiBkaWQNCiAgICA+IG5v dA0KICAgID4gICAgID4gICAgIGhhZCBkZWZpbml0aW9ucyBmb3IgbG9hZCBhY3F1aXJlIGFuZCBz dG9yZSByZWxlYXNlIHNlbWFudGljcy4NCiAgICA+ICAgICA+ICAgICBJIHdhcyBsb29raW5nIGZv ciB0YWtpbmcgbG9hZCBhY3F1aXJlIGFuZCBzdG9yZSByZWxlYXNlIHNlbWFudGljcw0KICAgID4g ICAgID4gICAgIGZyb20gQzExIGluc3RlYWQgb2YgY3JlYXRpbmcgbmV3IEFQSSBsaWtlIExpbnV4 IGtlcm5lbCBmb3IgRnJlZUJTRChBUElzDQogICAgPiAgICAgPiAgICAgbGlrZSAgYXRvbWljX2xv YWRfYWNxXzMyKCksIGF0b21pY19zdG9yZV9yZWxfMzIoKSkuIElmIHRoZSBmaWxlIG5hbWUgaXMN CiAgICA+IHlvdXINCiAgICA+ICAgICA+ICAgICBjb25jZXJuIHRoZW4gd2UgY291bGQgY3JlYXRl IG5ldyBhYnN0cmFjdGlvbnMgYXMgd2VsbC4gVGhhdCB3b3VsZA0KICAgID4gaGVscA0KICAgID4g ICAgID4gICAgIGV4aXRpbmcgS05JIHByb2JsZW0gYXMgd2VsbC4NCiAgICA+ICAgICA+IEkgYXBw cmVjaWF0ZSB5b3VyIGVtYnJhY2Ugb2YgdGhlIEMxMSBtZW1vcnkgbW9kZWwuIEkgdGhpbmsgaXQg aXMgYmV0dGVyDQogICAgPiBmb3IgZGVzY3JpYmluZw0KICAgID4gICAgID4gKGJvdGggdG8gdGhl IGNvbXBpbGVyIGFuZCB0byBodW1hbnMpIHdoaWNoIGFuZCBob3cgb2JqZWN0cyBhcmUgdXNlZA0K ICAgID4gZm9yIHN5bmNocm9uaXNhdGlvbi4NCiAgICA+ICAgICA+DQogICAgPiAgICAgPiBIb3dl dmVyLCBJIGRvbid0IHRoaW5rIGFuIEFQSSBhcyB5b3Ugc3VnZ2VzdCAoYW5kIG90aGVycyBoYXZl IHN1Z2dlc3RlZA0KICAgID4gYmVmb3JlLCBlLmcuIGFzDQogICAgPiAgICAgPiBkb25lIGluIE9E UCkgaXMgYSBnb29kIGlkZWEuIFRoZXJlIGlzIGFuIGluZmluaXRlIGFtb3VudCBvZiBwb3NzaWJs ZSBiYXNlDQogICAgPiB0eXBlcywgYW4NCiAgICA+ICAgICA+IGluY3JlYXNpbmcgbnVtYmVyIG9m IG9wZXJhdGlvbnMgYW5kIGEgYnVuY2ggb2YgZGlmZmVyZW50IG1lbW9yeQ0KICAgID4gb3JkZXJp bmdzLCBhICJjb21wbGV0ZSINCiAgICA+ICAgICA+IEFQSSB3b3VsZCBiZSB2ZXJ5IGxhcmdlIGFu ZCBkaWZmaWN1bHQgdG8gdGVzdCwgYW5kIG1vc3QgbWVtYmVycyBvZiB0aGUNCiAgICA+IEFQSSB3 b3VsZCBuZXZlciBiZSB1c2VkLg0KICAgID4gICAgID4gR0NDIGFuZCBDbGFuZyBib3RoIHN1cHBv cnQgdGhlIF9fYXRvbWljIGludHJpbnNpY3MuIFRoaXMgQVBJIGF2b2lkcyB0aGUNCiAgICA+IHBy b2JsZW1zIEkNCiAgICA+ICAgICA+IGRlc2NyaWJlZCBhYm92ZS4gT3Igd2UgY291bGQgdXNlIHRo ZSBvZmZpY2lhbCBDMTEgc3ludGF4IChzdGRhdG9taWMuaCkuDQogICAgPiBCdXQgdGhlbiB3ZQ0K ICAgID4gICAgID4gaGF2ZSB0aGUgcHJvYmxlbSB3aXRoIHVzaW5nIHByZS1DMTEgY29tcGlsZXJz Li4uDQogICAgPiANCiAgICA+ICAgICBJIGhhdmUgbm8gb2JqZWN0aW9uLCBpZiBldmVyeW9uZSBh Z3JlZXMgdG8gbW92ZSBDMTEgbWVtb3J5IG1vZGVsDQogICAgPiAgICAgd2l0aCBfX2F0b21pYyBp bnRyaW5zaWNzLiBCdXQgaWYgd2UgbmVlZCB0byBrZWVwIGJvdGggaGF2ZSB0aGVuDQogICAgPiAg ICAgYXRvbWljX2xvYWRfYWNxXzMyKCkga2luZCBvZiBBUEkgbWFrZSBzZW5zZS4NCiAgICA+IA0K ICAgID4gDQogICAgPiAgICAgPg0KICAgID4gICAgID4NCiAgICA+ICAgICA+DQogICAgPiAgICAg Pg0KICAgID4gICAgID4gICAgIEkgdGhpbmssIGN1cnJlbnRseSBpdCBtaXhlZCB1c2FnZSBiZWNh dXNlLCB0aGUgc2FtZSB2YXJpYWJsZSBkZWNsYXJhdGlvbg0KICAgID4gICAgID4gICAgIHVzZWQg Zm9yIEMxMSB2cyBub24gQzExIHVzYWdlLklkZWFsbHkgd2Ugd29udCBuZWVkICJ2b2xhdGlsZSIg Zm9yIEMxMQ0KICAgID4gICAgID4gICAgIGNhc2UuIEVpdGhlciB3ZSBuZWVkIHRvIGNoYW5nZSBv bmx5IHRvIEMxMSBtb2RlIE9SIGhhdmUgQVBJcyBmb3INCiAgICA+ICAgICA+ICAgICBhdG9taWNf bG9hZF9hY3FfKCkgYW5kIGF0b21pY19zdG9yZV9yZWxfKCkgdG8gYWxsb3cgYm90aCBtb2RlbHMg bGlrZQ0KICAgID4gICAgID4gICAgIExpbnV4IGtlcm5lbCBhbmQgRnJlZUJTRC4NCiAgICA+ICAg ICA+DQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gLS0gT2xhDQogICAgPiAg ICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICA+DQogICAgPiAg ICAgPg0KICAgID4gICAgID4NCiAgICA+IA0KICAgIA0KICAgIA0KDQo=