From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgau1.qq.com (smtpbgau1.qq.com [54.206.16.166]) by dpdk.org (Postfix) with ESMTP id 977792BAC for ; Sun, 13 Mar 2016 17:43:04 +0100 (CET) X-QQ-mid: bizesmtp9t1457887378t117t035 Received: from wenhb-PC (unknown [58.210.212.139]) by esmtp4.qq.com (ESMTP) with SMTP id 0 for ; Mon, 14 Mar 2016 00:42:57 +0800 (CST) X-QQ-SSF: 00100000002000F0FM40B00A0000000 X-QQ-FEAT: 6dXuswn9i1XzqxYG34fkgcH43uOPcrrGrPgL4ExMXbNFdRm9UxqBkIZArkoBg tZdB/Ryut/9TsxrQG9sovXVZk3sHsxU0bcKHv65+GmubHQioLDnLvnJ1AXIxX8H2LR/XG5Y pwacX4pE4+dcpCn+vEklPMPjsKrK8K+gtWskHjfUlhEPSWErzhAn5ZrFqVDYvOGjNVOwVC+ DYwRVnaPweoeaCVQY2i4W5d0VRV/yv3xtXgjWvsqakLXsMbnUIPwHnLMryksFT/HAY5axoz xqqO1My69fZKTjDzid9NpidS5lNFNiZE8bNQ== X-QQ-GoodBg: 0 Date: Mon, 14 Mar 2016 00:43:03 +0800 From: "wenhb@techsure.com.cn" To: dev References: X-Priority: 3 X-GUID: E50FF925-64F6-402C-8B37-C1ABB796CAB7 X-Has-Attach: no X-Mailer: Foxmail 7, 1, 2, 36[cn] Mime-Version: 1.0 Message-ID: <201603140043021510571@techsure.com.cn> X-QQ-SENDSIZE: 520 X-QQ-Bgrelay: 1 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] dev Digest, Vol 83, Issue 176 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Mar 2016 16:43:06 -0000 5ZSu5ZCO5pyN5Yqh6ZyA6KaB5pS+5Yiw5a6e5pa95Zui6Zif5Lit44CCDQoNCumUgOWUruS4gOiI rOWIhuS4pOWdl++8mg0KMe+8ieS4muWKoeWRmA0KMu+8ieWUruWJjeW3peeoi+W4iA0KDQoNCg0K DQp3ZW5oYkB0ZWNoc3VyZS5jb20uY24NCg0KRnJvbTogZGV2LXJlcXVlc3QNCkRhdGU6IDIwMTYt MDMtMTMgMjM6MTcNClRvOiBkZXYNClN1YmplY3Q6IGRldiBEaWdlc3QsIFZvbCA4MywgSXNzdWUg MTc2DQpTZW5kIGRldiBtYWlsaW5nIGxpc3Qgc3VibWlzc2lvbnMgdG8NCmRldkBkcGRrLm9yZw0K DQpUbyBzdWJzY3JpYmUgb3IgdW5zdWJzY3JpYmUgdmlhIHRoZSBXb3JsZCBXaWRlIFdlYiwgdmlz aXQNCmh0dHA6Ly9kcGRrLm9yZy9tbC9saXN0aW5mby9kZXYNCm9yLCB2aWEgZW1haWwsIHNlbmQg YSBtZXNzYWdlIHdpdGggc3ViamVjdCBvciBib2R5ICdoZWxwJyB0bw0KZGV2LXJlcXVlc3RAZHBk ay5vcmcNCg0KWW91IGNhbiByZWFjaCB0aGUgcGVyc29uIG1hbmFnaW5nIHRoZSBsaXN0IGF0DQpk ZXYtb3duZXJAZHBkay5vcmcNCg0KV2hlbiByZXBseWluZywgcGxlYXNlIGVkaXQgeW91ciBTdWJq ZWN0IGxpbmUgc28gaXQgaXMgbW9yZSBzcGVjaWZpYw0KdGhhbiAiUmU6IENvbnRlbnRzIG9mIGRl diBkaWdlc3QuLi4iDQoNCg0KVG9kYXkncyBUb3BpY3M6DQoNCiAgIDEuIFJlOiBbUEFUQ0ggdjgg MS80XSBsaWIvZXRoZXI6IG9wdGltaXplIHN0cnVjdA0KICAgICAgcnRlX2V0aF90dW5uZWxfZmls dGVyX2NvbmYgKFRob21hcyBNb25qYWxvbikNCiAgIDIuIFJlOiBbUEFUQ0ggdjggMC80XSBUaGlz IHBhdGNoIHNldCBhZGRzIHR1bm5lbCBmaWx0ZXIgc3VwcG9ydA0KICAgICAgZm9yIElQIGluIEdS RSBvbiBpNDBlLiAoVGhvbWFzIE1vbmphbG9uKQ0KICAgMy4gZHBkayBoYXNoIGxvb2t1cCBmdW5j dGlvbiBjcmFzaGVkIChzZWdtZW50IGZhdWx0KSAoPz8pDQogICA0LiBSZTogW1BBVENIIHY0IDAv NF0gQWRkIFBDQVAgc3VwcG9ydCB0byBzb3VyY2UgYW5kIHNpbmsgcG9ydA0KICAgICAgKFRob21h cyBNb25qYWxvbikNCiAgIDUuIFJlOiBbUEFUQ0ggdjNdIGlwX3BpcGVsaW5lOiBhZGQgbG9hZCBi YWxhbmNpbmcgZnVuY3Rpb24gdG8NCiAgICAgIHBhc3MtdGhyb3VnaCBwaXBlbGluZSAoVGhvbWFz IE1vbmphbG9uKQ0KICAgNi4gUmU6IFtQQVRDSF0gYXBwL3Rlc3QtcG1kOiBhZGQgc3VwcG9ydCBm b3IgemVybyByeCBhbmQgdHgNCiAgICAgIHF1ZXVlcyAoVGhvbWFzIE1vbmphbG9uKQ0KDQoNCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCg0KTWVzc2FnZTogMQ0KRGF0ZTogU3VuLCAxMyBNYXIgMjAxNiAxMzowMTow NSArMDEwMA0KRnJvbTogVGhvbWFzIE1vbmphbG9uIDx0aG9tYXMubW9uamFsb25ANndpbmQuY29t Pg0KVG86IEppbmdqaW5nIFd1IDxqaW5namluZy53dUBpbnRlbC5jb20+LCB4dXRhby5zdW5AaW50 ZWwuY29tDQpDYzogZGV2QGRwZGsub3JnLCBoZWxpbi56aGFuZ0BpbnRlbC5jb20sIEppamlhbmcg TGl1DQo8amlqaWFuZy5saXVAaW50ZWwuY29tPg0KU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BB VENIIHY4IDEvNF0gbGliL2V0aGVyOiBvcHRpbWl6ZSBzdHJ1Y3QNCnJ0ZV9ldGhfdHVubmVsX2Zp bHRlcl9jb25mDQpNZXNzYWdlLUlEOiA8MzQ4ODQwOC5CeUh5WTNkeFA3QHhwczEzPg0KQ29udGVu dC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSINCg0KMjAxNi0wMy0xMCAxMTow NSwgSmluZ2ppbmcgV3U6DQo+IEZyb206IFh1dGFvIFN1biA8eHV0YW8uc3VuQGludGVsLmNvbT4N Cj4gDQo+IENoYW5nZSB0aGUgZmllbGRzIG9mIG91dGVyX21hYyBhbmQgaW5uZXJfbWFjIGluIHN0 cnVjdA0KPiBydGVfZXRoX3R1bm5lbF9maWx0ZXJfY29uZiBmcm9tIHBvaW50ZXIgdG8gc3RydWN0 IGluIG9yZGVyIHRvDQo+IGtlZXAgdGhlIGNvZGUncyByZWFkYWJpbGl0eS4NCg0KSXQgYnJlYWtz IGNvbXBpbGF0aW9uIG9mIGV4YW1wbGVzL3RlcF90ZXJtaW5hdGlvbi4NCg0KPiAtLS0gYS9hcHAv dGVzdC1wbWQvY21kbGluZS5jDQo+ICsrKyBiL2FwcC90ZXN0LXBtZC9jbWRsaW5lLmMNCj4gQEAg LTY2MjgsOCArNjYyOCwxMCBAQCBjbWRfdHVubmVsX2ZpbHRlcl9wYXJzZWQodm9pZCAqcGFyc2Vk X3Jlc3VsdCwNCj4gIHN0cnVjdCBydGVfZXRoX3R1bm5lbF9maWx0ZXJfY29uZiB0dW5uZWxfZmls dGVyX2NvbmY7DQo+ICBpbnQgcmV0ID0gMDsNCj4gIA0KPiAtIHR1bm5lbF9maWx0ZXJfY29uZi5v dXRlcl9tYWMgPSAmcmVzLT5vdXRlcl9tYWM7DQo+IC0gdHVubmVsX2ZpbHRlcl9jb25mLmlubmVy X21hYyA9ICZyZXMtPmlubmVyX21hYzsNCj4gKyBydGVfbWVtY3B5KCZ0dW5uZWxfZmlsdGVyX2Nv bmYub3V0ZXJfbWFjLCAmcmVzLT5vdXRlcl9tYWMsDQo+ICsgRVRIRVJfQUREUl9MRU4pOw0KPiAr IHJ0ZV9tZW1jcHkoJnR1bm5lbF9maWx0ZXJfY29uZi5pbm5lcl9tYWMsICZyZXMtPmlubmVyX21h YywNCj4gKyBFVEhFUl9BRERSX0xFTik7DQoNClBsZWFzZSB1c2UgZXRoZXJfYWRkcl9jb3B5KCku DQoNCj4gLS0tIGEvZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5jDQo+ICsrKyBiL2RyaXZl cnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuYw0KPiBAQCAtNTgzOSwxMCArNTgzOSwxMCBAQCBpNDBl X2Rldl90dW5uZWxfZmlsdGVyX3NldChzdHJ1Y3QgaTQwZV9wZiAqcGYsDQo+ICB9DQo+ICBwZmls dGVyID0gY2xkX2ZpbHRlcjsNCj4gIA0KPiAtICh2b2lkKXJ0ZV9tZW1jcHkoJnBmaWx0ZXItPm91 dGVyX21hYywgdHVubmVsX2ZpbHRlci0+b3V0ZXJfbWFjLA0KPiAtIHNpemVvZihzdHJ1Y3QgZXRo ZXJfYWRkcikpOw0KPiAtICh2b2lkKXJ0ZV9tZW1jcHkoJnBmaWx0ZXItPmlubmVyX21hYywgdHVu bmVsX2ZpbHRlci0+aW5uZXJfbWFjLA0KPiAtIHNpemVvZihzdHJ1Y3QgZXRoZXJfYWRkcikpOw0K PiArICh2b2lkKXJ0ZV9tZW1jcHkoJnBmaWx0ZXItPm91dGVyX21hYywgJnR1bm5lbF9maWx0ZXIt Pm91dGVyX21hYywNCj4gKyBFVEhFUl9BRERSX0xFTik7DQo+ICsgKHZvaWQpcnRlX21lbWNweSgm cGZpbHRlci0+aW5uZXJfbWFjLCAmdHVubmVsX2ZpbHRlci0+aW5uZXJfbWFjLA0KPiArIEVUSEVS X0FERFJfTEVOKTsNCg0KQXMgYWxyZWFkeSBjb21tZW50ZWQgaW4gSmFudWFyeSwgcGxlYXNlIHN0 b3AgdGhpcyB1c2VsZXNzIHJldHVybiBjYXN0Lg0KDQpUaGVyZSBpcyBhIGRlZGljYXRlZCBmdW5j dGlvbiB0byBjb3B5IE1BQyBhZGRyZXNzZXM6DQpldGhlcl9hZGRyX2NvcHkoKQ0KDQoNCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpNZXNzYWdlOiAyDQpEYXRlOiBTdW4sIDEzIE1h ciAyMDE2IDE1OjE4OjM3ICswMTAwDQpGcm9tOiBUaG9tYXMgTW9uamFsb24gPHRob21hcy5tb25q YWxvbkA2d2luZC5jb20+DQpUbzogSmluZ2ppbmcgV3UgPGppbmdqaW5nLnd1QGludGVsLmNvbT4s IHh1dGFvLnN1bkBpbnRlbC5jb20NCkNjOiBkZXZAZHBkay5vcmcsIGhlbGluLnpoYW5nQGludGVs LmNvbQ0KU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHY4IDAvNF0gVGhpcyBwYXRjaCBz ZXQgYWRkcyB0dW5uZWwNCmZpbHRlciBzdXBwb3J0IGZvciBJUCBpbiBHUkUgb24gaTQwZS4NCk1l c3NhZ2UtSUQ6IDwyMTMyMDgxLkdHSGMxVkFOQVRAeHBzMTM+DQpDb250ZW50LVR5cGU6IHRleHQv cGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIg0KDQoyMDE2LTAzLTEwIDExOjA1LCBKaW5namluZyBX dToNCj4gWHV0YW8gU3VuICg0KToNCj4gICBsaWIvZXRoZXI6IG9wdGltaXplIHRoZSdydGVfZXRo X3R1bm5lbF9maWx0ZXJfY29uZicgc3RydWN0dXJlDQo+ICAgbGliL2V0aGVyOiBhZGQgSVAgaW4g R1JFIHR5cGUNCj4gICBkcml2ZXIvaTQwZTogaW1wbGVtZW50IHR1bm5lbCBmaWx0ZXIgZm9yIElQ IGluIEdSRQ0KPiAgIGFwcC90ZXN0LXBtZDogdGVzdCB0dW5uZWwgZmlsdGVyIGZvciBJUCBpbiBH UkUNCg0KSSd2ZSBkb25lIHRoZSBjaGFuZ2VzIGZvciBldGhlcl9hZGRyX2NvcHkgYW5kIGZpeGVk IHRlcF90ZXJtaW5hdGlvbi4NCkFwcGxpZWQsIHRoYW5rcw0KDQoNCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KDQpNZXNzYWdlOiAzDQpEYXRlOiBTdW4sIDEzIE1hciAyMDE2IDIyOjM4 OjE0ICswODAwIChDU1QpDQpGcm9tOiA/PyA8emhhbmd3cWhAMTI2LmNvbT4NClRvOiBkZXZAZHBk ay5vcmcNClN1YmplY3Q6IFtkcGRrLWRldl0gZHBkayBoYXNoIGxvb2t1cCBmdW5jdGlvbiBjcmFz aGVkIChzZWdtZW50IGZhdWx0KQ0KTWVzc2FnZS1JRDogPDQ0MjQ1YjJhLjUwYmIuMTUzNzA2OWNh NTQuQ29yZW1haWwuemhhbmd3cWhAMTI2LmNvbT4NCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsg Y2hhcnNldD1HQksNCg0KSGkgYWxsLCANCldoZW4gSSB1c2UgdGhlIGRwZGsgbG9va3VwIGZ1bmN0 aW9uLCBJIG1ldCB0aGUgc2VnbWVudCBmYXVsdCBwcm9ibGVtLiBDYW4gIGFueWJvZHkgaGVscCB0 byBsb29rIGF0IHdoeSB0aGlzIGhhcHBlbnMuIEkgd2lsbCBwdXQgdGhlIGFpbSB3aGF0IEkgd2Fu dCB0byBkbyBhbmQgdGhlIHJlbGF0ZWQgcGllY2Ugb2YgY29kZSwgYW5kIG15IGRlYnVnIG1lc3Nh Z2UsIA0KDQoNClRoaXMgcHJvYmxlbSBpcyB0aGF0IGluIGRwZGsgbXVsdGkgcHJvY2VzcyAtIGNs aWVudCBhbmQgc2VydmVyIGV4YW1wbGUsIGRwZGstMi4yLjAvZXhhbXBsZXMvbXVsdGlfcHJvY2Vz cy9jbGllbnRfc2VydmVyX21wDQpNeSBhaW0gaXMgdGhhdCBzZXJ2ZXIgY3JlYXRlIGEgaGFzaCB0 YWJsZSwgdGhlbiBzaGFyZSBpdCB0byBjbGllbnQuIENsaWVudCB3aWxsIHdyaXRlIHRoZSBoYXNo ICB0YWJsZSwgc2VydmVyIHdpbGwgcmVhZCB0aGUgaGFzaCB0YWJsZS4gIEkgYW0gdXNpbmcgZHBk ayBoYXNoIHRhYmxlLiAgV2hhdCBJIGRpZCBpcyB0aGF0IHNlcnZlciBjcmVhdGUgYSBoYXNoIHRh YmxlICh0YWJsZSBhbmQgYXJyYXkgZW50cmllcyksIHJldHVybiB0aGUgdGFibGUgYWRkcmVzcy4g IEkgdXNlIG1lbXpvbmUgcGFzcyB0aGUgdGFibGUgYWRkcmVzcyB0byBjbGllbnQuICBJbiBjbGll bnQsIHRoZSBzZWNvbmQgbG9va3VwIGdldHMgc2VnbWVudCBmYXVsdC4gVGhlIHN5c3RlbSBnZXRz IGNyYXNoZWQuICBJIHdpbGwgcHV0IHNvbWUgcmVsYXRlZCBjb2RlIGhlcmUuIA0KY3JlYXRlIGhh c2ggdGFibGUgZnVuY3Rpb246DQoNCnN0cnVjdCBvbnZtX2Z0Kg0KDQpvbnZtX2Z0X2NyZWF0ZShp bnQgY250LCBpbnQgZW50cnlfc2l6ZSkgew0KDQogICAgICAgIHN0cnVjdCBydGVfaGFzaCogaGFz aDsNCg0KICAgICAgICBzdHJ1Y3Qgb252bV9mdCogZnQ7DQoNCiAgICAgICAgc3RydWN0IHJ0ZV9o YXNoX3BhcmFtZXRlcnMgaXB2NF9oYXNoX3BhcmFtcyA9IHsNCg0KICAgICAgICAgICAgLm5hbWUg PSBOVUxMLA0KDQogICAgICAgICAgICAuZW50cmllcyA9IGNudCwNCg0KICAgICAgICAgICAgLmtl eV9sZW4gPSBzaXplb2Yoc3RydWN0IG9udm1fZnRfaXB2NF81dHVwbGUpLA0KDQogICAgICAgICAg ICAuaGFzaF9mdW5jID0gTlVMTCwNCg0KICAgICAgICAgICAgLmhhc2hfZnVuY19pbml0X3ZhbCA9 IDAsDQoNCiAgICAgICAgfTsNCg0KDQoNCg0KICAgICAgICBjaGFyIHNbNjRdOw0KDQogICAgICAg IC8qIGNyZWF0ZSBpcHY0IGhhc2ggdGFibGUuIHVzZSBjb3JlIG51bWJlciBhbmQgY3ljbGUgY291 bnRlciB0byBnZXQgYSB1bmlxdWUgbmFtZS4gKi8NCg0KICAgICAgICBpcHY0X2hhc2hfcGFyYW1z Lm5hbWUgPSBzOw0KDQogICAgICAgIGlwdjRfaGFzaF9wYXJhbXMuc29ja2V0X2lkID0gcnRlX3Nv Y2tldF9pZCgpOw0KDQogICAgICAgIHNucHJpbnRmKHMsIHNpemVvZihzKSwgIm9udm1fZnRfJWQt JSJQUkl1NjQsIHJ0ZV9sY29yZV9pZCgpLCBydGVfZ2V0X3RzY19jeWNsZXMoKSk7DQoNCiAgICAg ICAgaGFzaCA9IHJ0ZV9oYXNoX2NyZWF0ZSgmaXB2NF9oYXNoX3BhcmFtcyk7DQoNCiAgICAgICAg aWYgKGhhc2ggPT0gTlVMTCkgew0KDQogICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQoNCiAg ICAgICAgfQ0KDQogICAgICAgIGZ0ID0gKHN0cnVjdCBvbnZtX2Z0KilydGVfY2FsbG9jKCJ0YWJs ZSIsIDEsIHNpemVvZihzdHJ1Y3Qgb252bV9mdCksIDApOw0KDQogICAgICAgIGlmIChmdCA9PSBO VUxMKSB7DQoNCiAgICAgICAgICAgICAgICBydGVfaGFzaF9mcmVlKGhhc2gpOw0KDQogICAgICAg ICAgICAgICAgcmV0dXJuIE5VTEw7DQoNCiAgICAgICAgfQ0KDQogICAgICAgIGZ0LT5oYXNoID0g aGFzaDsNCg0KICAgICAgICBmdC0+Y250ID0gY250Ow0KDQogICAgICAgIGZ0LT5lbnRyeV9zaXpl ID0gZW50cnlfc2l6ZTsNCg0KICAgICAgICAvKiBDcmVhdGUgZGF0YSBhcnJheSBmb3Igc3Rvcmlu ZyB2YWx1ZXMgKi8NCg0KICAgICAgICBmdC0+ZGF0YSA9IHJ0ZV9jYWxsb2MoImVudHJ5IiwgY250 LCBlbnRyeV9zaXplLCAwKTsNCg0KICAgICAgICBpZiAoZnQtPmRhdGEgPT0gTlVMTCkgew0KDQog ICAgICAgICAgICAgICAgcnRlX2hhc2hfZnJlZShoYXNoKTsNCg0KICAgICAgICAgICAgICAgIHJ0 ZV9mcmVlKGZ0KTsNCg0KICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KDQogICAgICAgIH0N Cg0KICAgICAgICByZXR1cm4gZnQ7DQoNCn0NCg0KDQoNCg0KcmVsYXRlZCBzdHJ1Y3R1cmU6DQoN CnN0cnVjdCBvbnZtX2Z0IHsNCg0KICAgICAgICBzdHJ1Y3QgcnRlX2hhc2gqIGhhc2g7DQoNCiAg ICAgICAgY2hhciogZGF0YTsNCg0KICAgICAgICBpbnQgY250Ow0KDQogICAgICAgIGludCBlbnRy eV9zaXplOw0KDQp9Ow0KDQoNCg0KDQppbiBzZXJ2ZXIgc2lkZSwgSSB3aWxsIGNhbGwgdGhlIGNy ZWF0ZSBmdW5jdGlvbiwgdXNlIG1lbXpvbmUgc2hhcmUgaXQgdG8gY2xpZW50LiBUaGUgZm9sbG93 aW5nIGlzIHdoYXQgSSBkbzoNCg0KcmVsYXRlZCB2YXJpYWJsZXM6DQoNCnN0cnVjdCBvbnZtX2Z0 ICpzZG5fZnQ7DQoNCnN0cnVjdCBvbnZtX2Z0ICoqc2RuX2Z0X3A7DQoNCmNvbnN0IHN0cnVjdCBy dGVfbWVtem9uZSAqbXpfZnRwOw0KDQoNCg0KDQogICAgICAgIHNkbl9mdCA9IG9udm1fZnRfY3Jl YXRlKDEwMjQsIHNpemVvZihzdHJ1Y3Qgb252bV9mbG93X2VudHJ5KSk7DQoNCiAgICAgICAgaWYo c2RuX2Z0ID09IE5VTEwpIHsNCg0KICAgICAgICAgICAgICAgIHJ0ZV9leGl0KEVYSVRfRkFJTFVS RSwgIlVuYWJsZSB0byBjcmVhdGUgZmxvdyB0YWJsZVxuIik7DQoNCiAgICAgICAgfQ0KDQogICAg ICAgIG16X2Z0cCA9IHJ0ZV9tZW16b25lX3Jlc2VydmUoTVpfRlRQX0lORk8sIHNpemVvZihzdHJ1 Y3Qgb252bV9mdCAqKSwNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9z b2NrZXRfaWQoKSwgTk9fRkxBR1MpOw0KDQogICAgICAgIGlmIChtel9mdHAgPT0gTlVMTCkgew0K DQogICAgICAgICAgICAgICAgcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiQ2Fub3QgcmVzZXJ2ZSBt ZW1vcnkgem9uZSBmb3IgZmxvdyB0YWJsZSBwb2ludGVyXG4iKTsNCg0KICAgICAgICB9DQoNCiAg ICAgICAgbWVtc2V0KG16X2Z0cC0+YWRkciwgMCwgc2l6ZW9mKHN0cnVjdCBvbnZtX2Z0ICopKTsN Cg0KICAgICAgICBzZG5fZnRfcCA9IG16X2Z0cC0+YWRkcjsNCg0KICAgICAgICAqc2RuX2Z0X3Ag PSBzZG5fZnQ7DQoNCg0KDQoNCkluIGNsaWVudCBzaWRlOg0KDQpzdHJ1Y3Qgb252bV9mdCAqc2Ru X2Z0Ow0KDQpzdGF0aWMgdm9pZA0KDQptYXBfZmxvd190YWJsZSh2b2lkKSB7DQoNCiAgICAgICAg Y29uc3Qgc3RydWN0IHJ0ZV9tZW16b25lICptel9mdHA7DQoNCiAgICAgICAgc3RydWN0IG9udm1f ZnQgKipmdHA7DQoNCg0KDQoNCiAgICAgICAgbXpfZnRwID0gcnRlX21lbXpvbmVfbG9va3VwKE1a X0ZUUF9JTkZPKTsNCg0KICAgICAgICBpZiAobXpfZnRwID09IE5VTEwpDQoNCiAgICAgICAgICAg ICAgICBydGVfZXhpdChFWElUX0ZBSUxVUkUsICJDYW5ub3QgZ2V0IGZsb3cgdGFibGUgcG9pbnRl clxuIik7DQoNCiAgICAgICAgZnRwID0gbXpfZnRwLT5hZGRyOw0KDQogICAgICAgIHNkbl9mdCA9 ICpmdHA7DQoNCn0NCg0KDQoNCg0KVGhlIGZvbGxvd2luZyBpcyBteSBkZWJ1ZyBtZXNzYWdlOiBJ IHNldCBhIGJyZWFrcG9pbnQgaW4gbG9va3VwIHRhYmxlIGxpbmUuIFRvIG5hcnJvdyBkb3duIHRo ZSBwcm9ibGVtLCBJIGp1c3Qgc2VuZCBvbmUgZmxvdy4gU28gdGhlIHNlY29uZCB0aW1lIGFuZCB0 aGUgZmlyc3QgdGltZSwgdGhlIHBhY2tldHMgYXJlIHRoZSBzYW1lLiAgDQoNCkZvciB0aGUgZmly c3QgdGltZSwgaXQgd29ya3MuIEkgcHJpbnQgb3V0IHRoZSBwYXJhbWV0ZXJzOiBpbnNpZGUgdGhl IG9udm1fZnRfbG9va3VwIGZ1bmN0aW9uLCBpZiB0aGVyZSBpcyBhIHJlbGF0ZWQgZW50cnksIGl0 IHdpbGwgcmV0dXJuIHRoZSBhZGRyZXNzIGJ5IGZsb3dfZW50cnkuIA0KDQpCcmVha3BvaW50IDEs IGRhdGFwYXRoX2hhbmRsZV9yZWFkIChkcD0weDdmZmZmMDAwMDhjMCkgYXQgL2hvbWUvemhhbmd3 ZWkxOTg0L29wZW5OZXRWTS1tYXN0ZXIvb3Blbk5ldFZNL2V4YW1wbGVzL2Zsb3dfdGFibGUvc2Ru LmM6MTkxDQoNCjE5MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IG9udm1f ZnRfbG9va3VwKHNkbl9mdCwgZmssIChjaGFyKiopJmZsb3dfZW50cnkpOw0KDQooZ2RiKSBwcmlu dCAqc2RuX2Z0IA0KDQokMSA9IHtoYXNoID0gMHg3ZmZmMzJjY2U3NDAsIGRhdGEgPSAweDdmZmYz MmNiMDQ4MCAiIiwgY250ID0gMTAyNCwgZW50cnlfc2l6ZSA9IDU2fQ0KDQooZ2RiKSBwcmludCAq ZmsNCg0KJDIgPSB7c3JjX2FkZHIgPSA0MTk0OTYyMDIsIGRzdF9hZGRyID0gNDUzMDUwNjM0LCBz cmNfcG9ydCA9IDUzNzY0LCBkc3RfcG9ydCA9IDExNzk4LCBwcm90byA9IDE3ICdcMDIxJ30NCg0K KGdkYikgcw0KDQpvbnZtX2Z0X2xvb2t1cCAodGFibGU9MHg3ZmZmMzJjYmU0YzAsIGtleT0weDdm ZmYzMmI5OWQwMCwgZGF0YT0weDdmZmZmNjhkMmIwMCkgYXQgL2hvbWUvemhhbmd3ZWkxOTg0L29w ZW5OZXRWTS1tYXN0ZXIvb3Blbk5ldFZNL29udm0vc2hhcmVkL29udm1fZmxvd190YWJsZS5jOjE1 MQ0KDQoxNTEgc29mdHJzcyA9IG9udm1fc29mdHJzcyhrZXkpOw0KDQooZ2RiKSBuDQoNCjE1MiAg ICAgICAgIHByaW50Zigic29mdHdhcmUgcnNzICVkXG4iLCBzb2Z0cnNzKTsNCg0KKGdkYikgDQoN CnNvZnR3YXJlIHJzcyA0MDMxODM2MjQNCg0KMTU0ICAgICAgICAgdGJsX2luZGV4ID0gcnRlX2hh c2hfbG9va3VwX3dpdGhfaGFzaCh0YWJsZS0+aGFzaCwgKGNvbnN0IHZvaWQgKilrZXksIHNvZnRy c3MpOw0KDQooZ2RiKSBwcmludCB0YWJsZS0+aGFzaA0KDQokMyA9IChzdHJ1Y3QgcnRlX2hhc2gg KikgMHg3ZmZmMzJjY2U3NDANCg0KKGdkYikgcHJpbnQgKmtleQ0KDQokNCA9IHtzcmNfYWRkciA9 IDQxOTQ5NjIwMiwgZHN0X2FkZHIgPSA0NTMwNTA2MzQsIHNyY19wb3J0ID0gNTM3NjQsIGRzdF9w b3J0ID0gMTE3OTgsIHByb3RvID0gMTcgJ1wwMjEnfQ0KDQooZ2RiKSBwcmludCBzb2Z0cnNzIA0K DQokNSA9IDQwMzE4MzYyNA0KDQooZ2RiKSBjDQoNCg0KDQoNCkFmdGVyIEkgaGl0IGMsIGl0IHdp bGwgZG8gdGhlIHNlY29uZCBsb29rdXAsDQoNCkJyZWFrcG9pbnQgMSwgZGF0YXBhdGhfaGFuZGxl X3JlYWQgKGRwPTB4N2ZmZmYwMDAwOGMwKSBhdCAvaG9tZS96aGFuZ3dlaTE5ODQvb3Blbk5ldFZN LW1hc3Rlci9vcGVuTmV0Vk0vZXhhbXBsZXMvZmxvd190YWJsZS9zZG4uYzoxOTENCg0KMTkxICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gb252bV9mdF9sb29rdXAoc2RuX2Z0 LCBmaywgKGNoYXIqKikmZmxvd19lbnRyeSk7DQoNCihnZGIpIHByaW50ICpzZG5fZnQNCg0KDQok NyA9IHtoYXNoID0gMHg3ZmZmMzJjY2U3NDAsIGRhdGEgPSAweDdmZmYzMmNiMDQ4MCAiIiwgY250 ID0gMTAyNCwgZW50cnlfc2l6ZSA9IDU2fQ0KDQooZ2RiKSBwcmludCAqZmsNCg0KJDggPSB7c3Jj X2FkZHIgPSA0MTk0OTYyMDIsIGRzdF9hZGRyID0gNDUzMDUwNjM0LCBzcmNfcG9ydCA9IDUzNzY0 LCBkc3RfcG9ydCA9IDExNzk4LCBwcm90byA9IDE3ICdcMDIxJ30NCg0KKGdkYikgcw0KDQpvbnZt X2Z0X2xvb2t1cCAodGFibGU9MHg3ZmZmMzJjYmU0YzAsIGtleT0weDdmZmYzMmI5OWMwMCwgZGF0 YT0weDdmZmZmNjhkMmIwMCkgYXQgL2hvbWUvemhhbmd3ZWkxOTg0L29wZW5OZXRWTS1tYXN0ZXIv b3Blbk5ldFZNL29udm0vc2hhcmVkL29udm1fZmxvd190YWJsZS5jOjE1MQ0KDQoxNTEgc29mdHJz cyA9IG9udm1fc29mdHJzcyhrZXkpOw0KDQooZ2RiKSBuDQoNCjE1MiAgICAgICAgIHByaW50Zigi c29mdHdhcmUgcnNzICVkXG4iLCBzb2Z0cnNzKTsNCg0KKGdkYikgbg0KDQpzb2Z0d2FyZSByc3Mg NDAzMTgzNjI0DQoNCjE1NCAgICAgICAgIHRibF9pbmRleCA9IHJ0ZV9oYXNoX2xvb2t1cF93aXRo X2hhc2godGFibGUtPmhhc2gsIChjb25zdCB2b2lkICopa2V5LCBzb2Z0cnNzKTsNCg0KKGdkYikg cHJpbnQgdGFibGUtPmhhc2gNCg0KJDkgPSAoc3RydWN0IHJ0ZV9oYXNoICopIDB4N2ZmZjMyY2Nl NzQwDQoNCihnZGIpIHByaW50ICprZXkgDQoNCiQxMCA9IHtzcmNfYWRkciA9IDQxOTQ5NjIwMiwg ZHN0X2FkZHIgPSA0NTMwNTA2MzQsIHNyY19wb3J0ID0gNTM3NjQsIGRzdF9wb3J0ID0gMTE3OTgs IHByb3RvID0gMTcgJ1wwMjEnfQ0KDQooZ2RiKSBwcmludCBzb2Z0cnNzDQoNCiQxMSA9IDQwMzE4 MzYyNA0KDQooZ2RiKSBuDQoNCg0KDQoNClByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR1NFR1Ys IFNlZ21lbnRhdGlvbiBmYXVsdC4NCg0KMHgwMDAwMDAwMDAwNDVmYjk3IGluIF9fcnRlX2hhc2hf bG9va3VwX2J1bGsgKCkNCg0KKGdkYikgYnQNCg0KIzAgIDB4MDAwMDAwMDAwMDQ1ZmI5NyBpbiBf X3J0ZV9oYXNoX2xvb2t1cF9idWxrICgpDQoNCiMxICAweDAwMDAwMDAwMDAwMDAwMDAgaW4gPz8g KCkNCg0KDQoNCg0KRnJvbSB0aGUgZGVidWcgbWVzc2FnZSwgdGhlIHBhcmFtZXRlcnMgYXJlIGV4 YWN0bHkgdGhlIHNhbWUuIEkgZG8gbm90IGtub3cgd2h5IGl0IGhhcyB0aGUgc2VnbWVudGF0aW9u IGZhdWx0LiANCg0KbXkgbG9va3VwIGZ1bmN0aW9uOg0KDQppbnQNCg0Kb252bV9mdF9sb29rdXAo c3RydWN0IG9udm1fZnQqIHRhYmxlLCBzdHJ1Y3Qgb252bV9mdF9pcHY0XzV0dXBsZSAqa2V5LCBj aGFyKiogZGF0YSkgew0KDQogICAgICAgIGludDMyX3QgdGJsX2luZGV4Ow0KDQogICAgICAgIHVp bnQzMl90IHNvZnRyc3M7DQoNCg0KDQoNCiAgICAgICAgc29mdHJzcyA9IG9udm1fc29mdHJzcyhr ZXkpOw0KDQogICAgICAgIHByaW50Zigic29mdHdhcmUgcnNzICVkXG4iLCBzb2Z0cnNzKTsNCg0K DQoNCg0KICAgICAgICB0YmxfaW5kZXggPSBydGVfaGFzaF9sb29rdXBfd2l0aF9oYXNoKHRhYmxl LT5oYXNoLCAoY29uc3Qgdm9pZCAqKWtleSwgc29mdHJzcyk7DQoNCiAgICAgICAgaWYgKHRibF9p bmRleCA+PSAwKSB7DQoNCiAgICAgICAgICAgICAgICAqZGF0YSA9IG9udm1fZnRfZ2V0X2RhdGEo dGFibGUsIHRibF9pbmRleCk7DQoNCiAgICAgICAgICAgICAgICByZXR1cm4gMDsNCg0KICAgICAg ICB9DQoNCiAgICAgICAgZWxzZSB7DQoNCiAgICAgICAgICAgICAgICByZXR1cm4gdGJsX2luZGV4 Ow0KDQogICAgICAgIH0NCg0KfQ0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0K TWVzc2FnZTogNA0KRGF0ZTogU3VuLCAxMyBNYXIgMjAxNiAxNTo1ODo0MyArMDEwMA0KRnJvbTog VGhvbWFzIE1vbmphbG9uIDx0aG9tYXMubW9uamFsb25ANndpbmQuY29tPg0KVG86IEZhbiBaaGFu ZyA8cm95LmZhbi56aGFuZ0BpbnRlbC5jb20+DQpDYzogZGV2QGRwZGsub3JnDQpTdWJqZWN0OiBS ZTogW2RwZGstZGV2XSBbUEFUQ0ggdjQgMC80XSBBZGQgUENBUCBzdXBwb3J0IHRvIHNvdXJjZSBh bmQNCnNpbmsgcG9ydA0KTWVzc2FnZS1JRDogPDE0Njg4MzguZ0dHWGxuOW5pS0B4cHMxMz4NCkNv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiDQoNCjIwMTYtMDMtMTEg MTc6MDgsIEZhbiBaaGFuZzoNCj4gVGhpcyBwYXRjaHNldCBhZGRzIGZlYXR1cmUgdG8gc291cmNl IGFuZCBzaW5rIHR5cGUgcG9ydCBpbiBsaWJydGVfcG9ydA0KPiBsaWJyYXJ5LCBhbmQgdG8gZXhh bXBsZXMvaXBfcGlwbGluZS4gT3JpZ2luYWxseSwgc291cmNlL3NpbmsgcG9ydHMgYWN0DQo+IGFz IGlucHV0IGFuZCBvdXRwdXQgb2YgTlVMTCBwYWNrZXRzIGdlbmVyYXRvci4gVGhpcyBwYXRjaHNl dCBlbmFibGVzDQo+IHRoZW0gcmVhZCBmcm9tIGFuZCB3cml0ZSB0byBzcGVjaWZpYyBQQ0FQIGZp bGUsIHRvIGdlbmVyYXRlIGFuZCBkdW1wDQo+IHBhY2tldHMuDQpbLi4uXQ0KPiBGYW4gWmhhbmcg KDQpOg0KPiAgIGxpYi9saWJydGVfcG9ydDogYWRkIFBDQVAgZmlsZSBzdXBwb3J0IHRvIHNvdXJj ZSBwb3J0DQo+ICAgZXhhbXBsZS9pcF9waXBlbGluZTogYWRkIFBDQVAgZmlsZSBzdXBwb3J0DQo+ ICAgbGliL2xpYnJ0ZV9wb3J0OiBhZGQgcGFja2V0IGR1bXBpbmcgdG8gUENBUCBmaWxlIHN1cHBv cnQgaW4gc2luayBwb3J0DQo+ICAgZXhhbXBsZXMvaXBfcGlwZWxpbmU6IGFkZCBwYWNrZXRzIGR1 bXBpbmcgdG8gUENBUCBmaWxlIHN1cHBvcnQNCg0KQXBwbGllZCwgdGhhbmtzDQoNCg0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCk1lc3NhZ2U6IDUNCkRhdGU6IFN1biwgMTMgTWFy IDIwMTYgMTY6MDk6MDUgKzAxMDANCkZyb206IFRob21hcyBNb25qYWxvbiA8dGhvbWFzLm1vbmph bG9uQDZ3aW5kLmNvbT4NClRvOiBKYXN2aW5kZXIgU2luZ2ggPGphc3ZpbmRlci5zaW5naEBpbnRl bC5jb20+DQpDYzogZGV2QGRwZGsub3JnDQpTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0gg djNdIGlwX3BpcGVsaW5lOiBhZGQgbG9hZCBiYWxhbmNpbmcNCmZ1bmN0aW9uIHRvIHBhc3MtdGhy b3VnaCBwaXBlbGluZQ0KTWVzc2FnZS1JRDogPDE2NDQyODkuTzU0SEpTS1RDTUB4cHMxMz4NCkNv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiDQoNCjIwMTYtMDMtMTAg MTU6MjksIEphc3ZpbmRlciBTaW5naDoNCj4gVGhlIHBhc3MtdGhyb3VnaCBwaXBlbGluZSBpbXBs ZW1lbnRhdGlvbiBpcyBleHRlbmRlZCB3aXRoIGxvYWQgYmFsYW5jaW5nDQo+IGZ1bmN0aW9uLiBU aGlzIGZ1bmN0aW9uIGFsbG93cyB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvZiB0aGUgcGFja2V0cyBh bW9uZw0KPiBpdHMgb3V0cHV0IHBvcnRzLiBGb3IgcGFja2V0cyBkaXN0cmlidXRpb24sIGFueSBh cHBsaWNhdGlvbiBsZXZlbCBsb2dpYw0KPiBjYW4gYmUgYXBwbGllZC4gRm9yIGluc3RhbmNlLCBp biB0aGlzIGltcGxlbWVudGF0aW9uLCBoYXNoIHZhbHVlDQo+IGNvbXB1dGVkIG92ZXIgc3BlY2lm aWMgaGVhZGVyIGZpZWxkcyBvZiB0aGUgaW5jb21pbmcgcGFja2V0cyBoYXMgYmVlbg0KPiB1c2Vk IHRvIHNwcmVhZCB0cmFmZmljIHVuaWZvcm1seSBhbW9uZyB0aGUgb3V0cHV0IHBvcnRzLg0KDQpB cHBsaWVkLCB0aGFua3MNCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KTWVz c2FnZTogNg0KRGF0ZTogU3VuLCAxMyBNYXIgMjAxNiAxNjoxNjoxMiArMDEwMA0KRnJvbTogVGhv bWFzIE1vbmphbG9uIDx0aG9tYXMubW9uamFsb25ANndpbmQuY29tPg0KVG86ICJQYXR0YW4sIFJl c2htYSIgPHJlc2htYS5wYXR0YW5AaW50ZWwuY29tPg0KQ2M6IGRldkBkcGRrLm9yZywgIkRlIExh cmEgR3VhcmNoLCBQYWJsbyINCjxwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20+DQpTdWJq ZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0hdIGFwcC90ZXN0LXBtZDogYWRkIHN1cHBvcnQgZm9y IHplcm8gcngNCmFuZCB0eCBxdWV1ZXMNCk1lc3NhZ2UtSUQ6IDwxNDgyMjY3LnZEU2tKVzFyUE1A eHBzMTM+DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIg0KDQo+ ID4gQWRkZWQgdGVzdHBtZCBzdXBwb3J0IHRvIHZhbGlkYXRlIHplcm8gbmJfcnhxL25iX3R4cQ0K PiA+IGNoYW5nZXMgb2YgbGlicnRlX2V0aGVyLg0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IFJl c2htYSBQYXR0YW4gPHJlc2htYS5wYXR0YW5AaW50ZWwuY29tPg0KPiANCj4gQWNrZWQtYnk6IFBh YmxvIGRlIExhcmEgPHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVsLmNvbT4NCg0KQXBwbGllZCwg dGhhbmtzDQoNCg0KRW5kIG9mIGRldiBEaWdlc3QsIFZvbCA4MywgSXNzdWUgMTc2DQoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKio=