From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id B4A021B8E9 for ; Thu, 10 May 2018 10:15:50 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 May 2018 01:15:50 -0700 Message-Id: <0590c7$1k5cg2@orsmga001.jf.intel.com> Date: 10 May 2018 01:15:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,384,1520924400"; d="scan'208";a="54702602" Received: from unknown (HELO [127.0.1.1]) ([10.240.176.154]) by orsmga001.jf.intel.com with ESMTP; 10 May 2018 01:15:49 -0700 Content-Type: multipart/alternative; boundary="===============5323606028770451400==" MIME-Version: 1.0 From: sys_stv@intel.com To: test-report@dpdk.org Cc: xinfengx.zhao@intel.com, zhaoyan.chen@intel.com, peipeix.lu@intel.com Subject: [dpdk-test-report] |FAILURE| pw37599[dpdk-dev, v4, 58/70] eal: share hugepage info primary and secondary X-BeenThere: test-report@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: automatic DPDK test reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 May 2018 08:15:51 -0000 --===============5323606028770451400== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGVzdC1MYWJlbDogSW50ZWwtY29tcGlsYXRpb24KVGVzdC1TdGF0dXM6IEZBSUxVUkUKaHR0cDov L2RwZGsub3JnL3BhdGNoLzM3NTk5CgpfYXBwbHkgaXNzdWVzXwoKU3VibWl0dGVyOiBBbmF0b2x5 IEJ1cmFrb3YgPGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+CkRhdGU6IDIwMTgtMDQtMDggMjA6 MTg6MzEKRFBESyBnaXQgYmFzZWxpbmU6CglSZXBvOmRwZGstbWFzdGVyLCBDb21taXRJRDogOGVh NDE0Mzg4MzJhMzYwYWVkMmI3YmE0OWZiNzVlMzEwYTJmZjFkYwoJUmVwbzpkcGRrLW5leHQtZXZl bnRkZXYsIENvbW1pdElEOiA2NDBiMGQxZTUxMGUxMTE2OTRjMjUxNDU0NjZmMzc4Njc0NTM4Mzdm CglSZXBvOmRwZGstbmV4dC1uZXQsIENvbW1pdElEOiA3NzRjMTg5MmM0MzRkYmEwOTk5OGNjYzc2 Yjk1NmZlYjcyMjI0NTcxCglSZXBvOmRwZGstbmV4dC1jcnlwdG8sIENvbW1pdElEOiA3MjhjYTli MGQ1YWJlYTgyY2QwMWRlZTY2NDU0NTZhOWQ1NjIxNWY3CglSZXBvOmRwZGstbmV4dC12aXJ0aW8s IENvbW1pdElEOiAwMzdjMDk5NmJjOTI3MzQyZjE1NzQyNjczOWUwY2I2M2YyZGI4Njg5CgoqUmVw bzogZHBkay1tYXN0ZXIKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9l YWwuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCglmb3IgKGkgPSAwOyBpIDwgaW50 ZXJuYWxfY29uZmlnLm51bV9odWdlcGFnZV9zaXplczsgaSsrKSB7CgkJc3RydWN0IGh1Z2VwYWdl X2luZm8gKmhwaSA9ICZpbnRlcm5hbF9jb25maWcuaHVnZXBhZ2VfaW5mb1tpXTsKCQlpZiAoaHBp LT5odWdlZGlyICE9IE5VTEwpIHsKCQkJZm9yIChqID0gMDsgaiA8IFJURV9NQVhfTlVNQV9OT0RF UzsgaisrKSB7CgkJCQlzaXplICs9IGhwaS0+aHVnZXBhZ2Vfc3ogKiBocGktPm51bV9wYWdlc1tq XTsKCQkJfQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9l YWwuYzoyODkKZXJyb3I6IGxpYi9saWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsLmM6IHBhdGNoIGRv ZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZWFsL2JzZGFwcC9lYWwvZWFs X2h1Z2VwYWdlX2luZm8uYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICogVXNlZCBp biB0aGlzIGZpbGUgdG8gc3RvcmUgdGhlIGh1Z2VwYWdlIGZpbGUgbWFwIG9uIGRpc2sKICovCnN0 YXRpYyB2b2lkICoKY3JlYXRlX3NoYXJlZF9tZW1vcnkoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNv bnN0IHNpemVfdCBtZW1fc2l6ZSkKewotLQoJaW50IGZkID0gb3BlbihmaWxlbmFtZSwgT19DUkVB VCB8IE9fUkRXUiwgMDY2Nik7CglpZiAoZmQgPCAwKQoJCXJldHVybiBOVUxMOwoJaWYgKGZ0cnVu Y2F0ZShmZCwgbWVtX3NpemUpIDwgMCkgewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xpYnJ0 ZV9lYWwvYnNkYXBwL2VhbC9lYWxfaHVnZXBhZ2VfaW5mby5jOjE5CmVycm9yOiBsaWIvbGlicnRl X2VhbC9ic2RhcHAvZWFsL2VhbF9odWdlcGFnZV9pbmZvLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5 CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsX21lbW9yeS5jLi4u CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpydGVfZWFsX2h1Z2VwYWdlX2F0dGFjaCh2b2lk KQp7Cgljb25zdCBzdHJ1Y3QgaHVnZXBhZ2VfaW5mbyAqaHBpOwoJaW50IGZkX2h1Z2VwYWdlX2lu Zm8sIGZkX2h1Z2VwYWdlID0gLTE7Cgl1bnNpZ25lZCBpbnQgaTsKLS0KCS8qIE1hcCB0aGUgc2hh cmVkIGh1Z2VwYWdlX2luZm8gaW50byB0aGUgcHJvY2VzcyBhZGRyZXNzIHNwYWNlcyAqLwoJaHBp ID0gbW1hcChOVUxMLCBzaXplb2YoaW50ZXJuYWxfY29uZmlnLmh1Z2VwYWdlX2luZm8pLAoJCQlQ Uk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZF9odWdlcGFnZV9pbmZvLCAwKTsKCWlmIChocGkgPT0g TUFQX0ZBSUxFRCkgewoJCVJURV9MT0coRVJSLCBFQUwsICJDb3VsZCBub3QgbW1hcCAlc1xuIiwg ZWFsX2h1Z2VwYWdlX2luZm9fcGF0aCgpKTsKCQlnb3RvIGVycm9yOwoJfQoKCWZvciAoaSA9IDA7 IGkgPCBpbnRlcm5hbF9jb25maWcubnVtX2h1Z2VwYWdlX3NpemVzOyBpKyspIHsKCQljb25zdCBz dHJ1Y3QgaHVnZXBhZ2VfaW5mbyAqY3VyX2hwaSA9ICZocGlbaV07CgplcnJvcjogcGF0Y2ggZmFp bGVkOiBsaWIvbGlicnRlX2VhbC9ic2RhcHAvZWFsL2VhbF9tZW1vcnkuYzoyNDAKZXJyb3I6IGxp Yi9saWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsX21lbW9yeS5jOiBwYXRjaCBkb2VzIG5vdCBhcHBs eQpDaGVja2luZyBwYXRjaCBsaWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2NvbW1vbl9vcHRpb25z LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6Cglmb3IgKGkgPSAwOyBpIDwgUlRFX01B WF9OVU1BX05PREVTOyBpKyspCgkJaW50ZXJuYWxfY2ZnLT5zb2NrZXRfbWVtW2ldID0gMDsKCS8q IHplcm8gb3V0IGh1Z2VkaXIgZGVzY3JpcHRvcnMgKi8KCWZvciAoaSA9IDA7IGkgPCBNQVhfSFVH RVBBR0VfU0laRVM7IGkrKykKCQlpbnRlcm5hbF9jZmctPmh1Z2VwYWdlX2luZm9baV0ubG9ja19k ZXNjcmlwdG9yID0gLTE7CglpbnRlcm5hbF9jZmctPmJhc2VfdmlydGFkZHIgPSAwOwoKCWludGVy bmFsX2NmZy0+c3lzbG9nX2ZhY2lsaXR5ID0gTE9HX0RBRU1PTjsKCmVycm9yOiBwYXRjaCBmYWls ZWQ6IGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfY29tbW9uX29wdGlvbnMuYzoxNzkKZXJyb3I6 IGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfY29tbW9uX29wdGlvbnMuYzogcGF0Y2ggZG9lcyBu b3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9maWxlc3lz dGVtLmguLi4KSHVuayAjMSBzdWNjZWVkZWQgYXQgMTAyIChvZmZzZXQgMTcgbGluZXMpLgpDaGVj a2luZyBwYXRjaCBsaWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2h1Z2VwYWdlcy5oLi4uCmVycm9y OiB3aGlsZSBzZWFyY2hpbmcgZm9yOgp9OwoKLyoqCiAqIFJlYWQgdGhlIGluZm9ybWF0aW9uIGZy b20gbGludXggb24gd2hhdCBodWdlcGFnZXMgYXJlIGF2YWlsYWJsZQogKiBmb3IgdGhlIEVBTCB0 byB1c2UKICovCmludCBlYWxfaHVnZXBhZ2VfaW5mb19pbml0KHZvaWQpOwoKI2VuZGlmIC8qIEVB TF9IVUdFUEFHRVNfSCAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xpYnJ0ZV9lYWwvY29t bW9uL2VhbF9odWdlcGFnZXMuaDoyNgplcnJvcjogbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9o dWdlcGFnZXMuaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0 ZV9lYWwvY29tbW9uL2VhbF9pbnRlcm5hbF9jZmcuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5n IGZvcjoKICovCnN0cnVjdCBodWdlcGFnZV9pbmZvIHsKCXVpbnQ2NF90IGh1Z2VwYWdlX3N6OyAg IC8qKjwgc2l6ZSBvZiBhIGh1Z2UgcGFnZSAqLwoJY29uc3QgY2hhciAqaHVnZWRpcjsgICAgLyoq PCBkaXIgd2hlcmUgaHVnZXRsYmZzIGlzIG1vdW50ZWQgKi8KCXVpbnQzMl90IG51bV9wYWdlc1tS VEVfTUFYX05VTUFfTk9ERVNdOwoJLyoqPCBudW1iZXIgb2YgaHVnZXBhZ2VzIG9mIHRoYXQgc2l6 ZSBvbiBlYWNoIHNvY2tldCAqLwoJaW50IGxvY2tfZGVzY3JpcHRvcjsgICAgLyoqPCBmaWxlIGRl c2NyaXB0b3IgZm9yIGh1Z2VwYWdlIGRpciAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xp YnJ0ZV9lYWwvY29tbW9uL2VhbF9pbnRlcm5hbF9jZmcuaDoyMQplcnJvcjogbGliL2xpYnJ0ZV9l YWwvY29tbW9uL2VhbF9pbnRlcm5hbF9jZmcuaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tp bmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFsL2VhbC5jLi4uCmVycm9yOiB3aGls ZSBzZWFyY2hpbmcgZm9yOgoJCQkiS05JIG1vZHVsZSBpbnNlcnRlZFxuIik7Cgl9CgoJaWYgKGlu dGVybmFsX2NvbmZpZy5ub19odWdldGxiZnMgPT0gMCAmJgoJCQlpbnRlcm5hbF9jb25maWcucHJv Y2Vzc190eXBlICE9IFJURV9QUk9DX1NFQ09OREFSWSAmJgotLQoJCXJldHVybiAtMTsKCX0KCglp ZiAoaW50ZXJuYWxfY29uZmlnLm1lbW9yeSA9PSAwICYmIGludGVybmFsX2NvbmZpZy5mb3JjZV9z b2NrZXRzID09IDApIHsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGxpYi9saWJydGVfZWFsL2xpbnV4 YXBwL2VhbC9lYWwuYzo4MDcKZXJyb3I6IGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2VhbC9lYWwu YzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvbGlu dXhhcHAvZWFsL2VhbF9odWdlcGFnZV9pbmZvLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6CiNpbmNsdWRlIDxzdGRhcmcuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8ZXJy bm8uaD4KI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPgojaW5jbHVkZSA8c3lzL3N0YXQuaD4KCgplcnJv cjogcGF0Y2ggZmFpbGVkOiBsaWIvbGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsX2h1Z2VwYWdl X2luZm8uYzoxNAplcnJvcjogbGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFsL2VhbF9odWdlcGFn ZV9pbmZvLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVf ZWFsL2xpbnV4YXBwL2VhbC9lYWxfbWVtb3J5LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6CgoJZm9yIChpID0gMDsgaSA8IGludGVybmFsX2NvbmZpZy5udW1faHVnZXBhZ2Vfc2l6ZXM7 IGkrKyl7CgkJc3RydWN0IGh1Z2VwYWdlX2luZm8gKmhwaSA9ICZpbnRlcm5hbF9jb25maWcuaHVn ZXBhZ2VfaW5mb1tpXTsKCQlpZiAoaHBpLT5odWdlZGlyICE9IE5VTEwpCgkJCXNpemUgKz0gaHBp LT5odWdlcGFnZV9zeiAqIGhwaS0+bnVtX3BhZ2VzW3NvY2tldF07Cgl9CgoKZXJyb3I6IHBhdGNo IGZhaWxlZDogbGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFsL2VhbF9tZW1vcnkuYzoxMDYwCmVy cm9yOiBsaWIvbGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsX21lbW9yeS5jOiBwYXRjaCBkb2Vz IG5vdCBhcHBseQoqUmVwbzogZHBkay1uZXh0LWV2ZW50ZGV2CkNoZWNraW5nIHBhdGNoIGxpYi9s aWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 CgoJZm9yIChpID0gMDsgaSA8IGludGVybmFsX2NvbmZpZy5udW1faHVnZXBhZ2Vfc2l6ZXM7IGkr KykgewoJCXN0cnVjdCBodWdlcGFnZV9pbmZvICpocGkgPSAmaW50ZXJuYWxfY29uZmlnLmh1Z2Vw YWdlX2luZm9baV07CgkJaWYgKGhwaS0+aHVnZWRpciAhPSBOVUxMKSB7CgkJCWZvciAoaiA9IDA7 IGogPCBSVEVfTUFYX05VTUFfTk9ERVM7IGorKykgewoJCQkJc2l6ZSArPSBocGktPmh1Z2VwYWdl X3N6ICogaHBpLT5udW1fcGFnZXNbal07CgkJCX0KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGxpYi9s aWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsLmM6Mjg5CmVycm9yOiBsaWIvbGlicnRlX2VhbC9ic2Rh cHAvZWFsL2VhbC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBsaWIvbGli cnRlX2VhbC9ic2RhcHAvZWFsL2VhbF9odWdlcGFnZV9pbmZvLmMuLi4KZXJyb3I6IHdoaWxlIHNl YXJjaGluZyBmb3I6CiAqIFVzZWQgaW4gdGhpcyBmaWxlIHRvIHN0b3JlIHRoZSBodWdlcGFnZSBm aWxlIG1hcCBvbiBkaXNrCiAqLwpzdGF0aWMgdm9pZCAqCmNyZWF0ZV9zaGFyZWRfbWVtb3J5KGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBzaXplX3QgbWVtX3NpemUpCnsKLS0KCWludCBmZCA9 IG9wZW4oZmlsZW5hbWUsIE9fQ1JFQVQgfCBPX1JEV1IsIDA2NjYpOwoJaWYgKGZkIDwgMCkKCQly ZXR1cm4gTlVMTDsKCWlmIChmdHJ1bmNhdGUoZmQsIG1lbV9zaXplKSA8IDApIHsKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGxpYi9saWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsX2h1Z2VwYWdlX2luZm8u YzoxOQplcnJvcjogbGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9lYWxfaHVnZXBhZ2VfaW5mby5j OiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBsaWIvbGlicnRlX2VhbC9ic2Rh cHAvZWFsL2VhbF9tZW1vcnkuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKcnRlX2Vh bF9odWdlcGFnZV9hdHRhY2godm9pZCkKewoJY29uc3Qgc3RydWN0IGh1Z2VwYWdlX2luZm8gKmhw aTsKCWludCBmZF9odWdlcGFnZV9pbmZvLCBmZF9odWdlcGFnZSA9IC0xOwoJdW5zaWduZWQgaW50 IGk7Ci0tCgkvKiBNYXAgdGhlIHNoYXJlZCBodWdlcGFnZV9pbmZvIGludG8gdGhlIHByb2Nlc3Mg YWRkcmVzcyBzcGFjZXMgKi8KCWhwaSA9IG1tYXAoTlVMTCwgc2l6ZW9mKGludGVybmFsX2NvbmZp Zy5odWdlcGFnZV9pbmZvKSwKCQkJUFJPVF9SRUFELCBNQVBfUFJJVkFURSwgZmRfaHVnZXBhZ2Vf aW5mbywgMCk7CglpZiAoaHBpID09IE1BUF9GQUlMRUQpIHsKCQlSVEVfTE9HKEVSUiwgRUFMLCAi Q291bGQgbm90IG1tYXAgJXNcbiIsIGVhbF9odWdlcGFnZV9pbmZvX3BhdGgoKSk7CgkJZ290byBl cnJvcjsKCX0KCglmb3IgKGkgPSAwOyBpIDwgaW50ZXJuYWxfY29uZmlnLm51bV9odWdlcGFnZV9z aXplczsgaSsrKSB7CgkJY29uc3Qgc3RydWN0IGh1Z2VwYWdlX2luZm8gKmN1cl9ocGkgPSAmaHBp W2ldOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9lYWxf bWVtb3J5LmM6MjQwCmVycm9yOiBsaWIvbGlicnRlX2VhbC9ic2RhcHAvZWFsL2VhbF9tZW1vcnku YzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvY29t bW9uL2VhbF9jb21tb25fb3B0aW9ucy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJ Zm9yIChpID0gMDsgaSA8IFJURV9NQVhfTlVNQV9OT0RFUzsgaSsrKQoJCWludGVybmFsX2NmZy0+ c29ja2V0X21lbVtpXSA9IDA7CgkvKiB6ZXJvIG91dCBodWdlZGlyIGRlc2NyaXB0b3JzICovCglm b3IgKGkgPSAwOyBpIDwgTUFYX0hVR0VQQUdFX1NJWkVTOyBpKyspCgkJaW50ZXJuYWxfY2ZnLT5o dWdlcGFnZV9pbmZvW2ldLmxvY2tfZGVzY3JpcHRvciA9IC0xOwoJaW50ZXJuYWxfY2ZnLT5iYXNl X3ZpcnRhZGRyID0gMDsKCglpbnRlcm5hbF9jZmctPnN5c2xvZ19mYWNpbGl0eSA9IExPR19EQUVN T047CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBsaWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2NvbW1v bl9vcHRpb25zLmM6MTc5CmVycm9yOiBsaWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2NvbW1vbl9v cHRpb25zLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVf ZWFsL2NvbW1vbi9lYWxfZmlsZXN5c3RlbS5oLi4uCkh1bmsgIzEgc3VjY2VlZGVkIGF0IDEwMiAo b2Zmc2V0IDE3IGxpbmVzKS4KQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2Vh bF9odWdlcGFnZXMuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKfTsKCi8qKgogKiBS ZWFkIHRoZSBpbmZvcm1hdGlvbiBmcm9tIGxpbnV4IG9uIHdoYXQgaHVnZXBhZ2VzIGFyZSBhdmFp bGFibGUKICogZm9yIHRoZSBFQUwgdG8gdXNlCiAqLwppbnQgZWFsX2h1Z2VwYWdlX2luZm9faW5p dCh2b2lkKTsKCiNlbmRpZiAvKiBFQUxfSFVHRVBBR0VTX0ggKi8KCmVycm9yOiBwYXRjaCBmYWls ZWQ6IGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfaHVnZXBhZ2VzLmg6MjYKZXJyb3I6IGxpYi9s aWJydGVfZWFsL2NvbW1vbi9lYWxfaHVnZXBhZ2VzLmg6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNo ZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfaW50ZXJuYWxfY2ZnLmguLi4K ZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiAqLwpzdHJ1Y3QgaHVnZXBhZ2VfaW5mbyB7Cgl1 aW50NjRfdCBodWdlcGFnZV9zejsgICAvKio8IHNpemUgb2YgYSBodWdlIHBhZ2UgKi8KCWNvbnN0 IGNoYXIgKmh1Z2VkaXI7ICAgIC8qKjwgZGlyIHdoZXJlIGh1Z2V0bGJmcyBpcyBtb3VudGVkICov Cgl1aW50MzJfdCBudW1fcGFnZXNbUlRFX01BWF9OVU1BX05PREVTXTsKCS8qKjwgbnVtYmVyIG9m IGh1Z2VwYWdlcyBvZiB0aGF0IHNpemUgb24gZWFjaCBzb2NrZXQgKi8KCWludCBsb2NrX2Rlc2Ny aXB0b3I7ICAgIC8qKjwgZmlsZSBkZXNjcmlwdG9yIGZvciBodWdlcGFnZSBkaXIgKi8KCmVycm9y OiBwYXRjaCBmYWlsZWQ6IGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfaW50ZXJuYWxfY2ZnLmg6 MjEKZXJyb3I6IGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfaW50ZXJuYWxfY2ZnLmg6IHBhdGNo IGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2Vh bC9lYWwuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkJIktOSSBtb2R1bGUgaW5z ZXJ0ZWRcbiIpOwoJfQoKCWlmIChpbnRlcm5hbF9jb25maWcubm9faHVnZXRsYmZzID09IDAgJiYK CQkJaW50ZXJuYWxfY29uZmlnLnByb2Nlc3NfdHlwZSAhPSBSVEVfUFJPQ19TRUNPTkRBUlkgJiYK LS0KCQlyZXR1cm4gLTE7Cgl9CgoJaWYgKGludGVybmFsX2NvbmZpZy5tZW1vcnkgPT0gMCAmJiBp bnRlcm5hbF9jb25maWcuZm9yY2Vfc29ja2V0cyA9PSAwKSB7CgplcnJvcjogcGF0Y2ggZmFpbGVk OiBsaWIvbGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsLmM6ODA3CmVycm9yOiBsaWIvbGlicnRl X2VhbC9saW51eGFwcC9lYWwvZWFsLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBh dGNoIGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2VhbC9lYWxfaHVnZXBhZ2VfaW5mby5jLi4uCmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgojaW5jbHVkZSA8c3RkYXJnLmg+CiNpbmNsdWRlIDx1 bmlzdGQuaD4KI2luY2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxzeXMvcXVldWUuaD4KI2luY2x1 ZGUgPHN5cy9zdGF0Lmg+CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xpYnJ0ZV9lYWwvbGlu dXhhcHAvZWFsL2VhbF9odWdlcGFnZV9pbmZvLmM6MTQKZXJyb3I6IGxpYi9saWJydGVfZWFsL2xp bnV4YXBwL2VhbC9lYWxfaHVnZXBhZ2VfaW5mby5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVj a2luZyBwYXRjaCBsaWIvbGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsX21lbW9yeS5jLi4uCmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCWZvciAoaSA9IDA7IGkgPCBpbnRlcm5hbF9jb25m aWcubnVtX2h1Z2VwYWdlX3NpemVzOyBpKyspewoJCXN0cnVjdCBodWdlcGFnZV9pbmZvICpocGkg PSAmaW50ZXJuYWxfY29uZmlnLmh1Z2VwYWdlX2luZm9baV07CgkJaWYgKGhwaS0+aHVnZWRpciAh PSBOVUxMKQoJCQlzaXplICs9IGhwaS0+aHVnZXBhZ2Vfc3ogKiBocGktPm51bV9wYWdlc1tzb2Nr ZXRdOwoJfQoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2Vh bC9lYWxfbWVtb3J5LmM6MTA2MAplcnJvcjogbGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFsL2Vh bF9tZW1vcnkuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKKlJlcG86IGRwZGstbmV4dC1uZXQKQ2hl Y2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9lYWwuYy4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKCglmb3IgKGkgPSAwOyBpIDwgaW50ZXJuYWxfY29uZmlnLm51bV9o dWdlcGFnZV9zaXplczsgaSsrKSB7CgkJc3RydWN0IGh1Z2VwYWdlX2luZm8gKmhwaSA9ICZpbnRl cm5hbF9jb25maWcuaHVnZXBhZ2VfaW5mb1tpXTsKCQlpZiAoaHBpLT5odWdlZGlyICE9IE5VTEwp IHsKCQkJZm9yIChqID0gMDsgaiA8IFJURV9NQVhfTlVNQV9OT0RFUzsgaisrKSB7CgkJCQlzaXpl ICs9IGhwaS0+aHVnZXBhZ2Vfc3ogKiBocGktPm51bV9wYWdlc1tqXTsKCQkJfQoKZXJyb3I6IHBh dGNoIGZhaWxlZDogbGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9lYWwuYzoyODkKZXJyb3I6IGxp Yi9saWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNr aW5nIHBhdGNoIGxpYi9saWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsX2h1Z2VwYWdlX2luZm8uYy4u LgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICogVXNlZCBpbiB0aGlzIGZpbGUgdG8gc3Rv cmUgdGhlIGh1Z2VwYWdlIGZpbGUgbWFwIG9uIGRpc2sKICovCnN0YXRpYyB2b2lkICoKY3JlYXRl X3NoYXJlZF9tZW1vcnkoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IHNpemVfdCBtZW1fc2l6 ZSkKewotLQoJaW50IGZkID0gb3BlbihmaWxlbmFtZSwgT19DUkVBVCB8IE9fUkRXUiwgMDY2Nik7 CglpZiAoZmQgPCAwKQoJCXJldHVybiBOVUxMOwoJaWYgKGZ0cnVuY2F0ZShmZCwgbWVtX3NpemUp IDwgMCkgewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9l YWxfaHVnZXBhZ2VfaW5mby5jOjE5CmVycm9yOiBsaWIvbGlicnRlX2VhbC9ic2RhcHAvZWFsL2Vh bF9odWdlcGFnZV9pbmZvLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGxp Yi9saWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsX21lbW9yeS5jLi4uCmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgpydGVfZWFsX2h1Z2VwYWdlX2F0dGFjaCh2b2lkKQp7Cgljb25zdCBzdHJ1Y3Qg aHVnZXBhZ2VfaW5mbyAqaHBpOwoJaW50IGZkX2h1Z2VwYWdlX2luZm8sIGZkX2h1Z2VwYWdlID0g LTE7Cgl1bnNpZ25lZCBpbnQgaTsKLS0KCS8qIE1hcCB0aGUgc2hhcmVkIGh1Z2VwYWdlX2luZm8g aW50byB0aGUgcHJvY2VzcyBhZGRyZXNzIHNwYWNlcyAqLwoJaHBpID0gbW1hcChOVUxMLCBzaXpl b2YoaW50ZXJuYWxfY29uZmlnLmh1Z2VwYWdlX2luZm8pLAoJCQlQUk9UX1JFQUQsIE1BUF9QUklW QVRFLCBmZF9odWdlcGFnZV9pbmZvLCAwKTsKCWlmIChocGkgPT0gTUFQX0ZBSUxFRCkgewoJCVJU RV9MT0coRVJSLCBFQUwsICJDb3VsZCBub3QgbW1hcCAlc1xuIiwgZWFsX2h1Z2VwYWdlX2luZm9f cGF0aCgpKTsKCQlnb3RvIGVycm9yOwoJfQoKCWZvciAoaSA9IDA7IGkgPCBpbnRlcm5hbF9jb25m aWcubnVtX2h1Z2VwYWdlX3NpemVzOyBpKyspIHsKCQljb25zdCBzdHJ1Y3QgaHVnZXBhZ2VfaW5m byAqY3VyX2hwaSA9ICZocGlbaV07CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBsaWIvbGlicnRlX2Vh bC9ic2RhcHAvZWFsL2VhbF9tZW1vcnkuYzoyNDAKZXJyb3I6IGxpYi9saWJydGVfZWFsL2JzZGFw cC9lYWwvZWFsX21lbW9yeS5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBs aWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2NvbW1vbl9vcHRpb25zLmMuLi4KZXJyb3I6IHdoaWxl IHNlYXJjaGluZyBmb3I6Cglmb3IgKGkgPSAwOyBpIDwgUlRFX01BWF9OVU1BX05PREVTOyBpKysp CgkJaW50ZXJuYWxfY2ZnLT5zb2NrZXRfbWVtW2ldID0gMDsKCS8qIHplcm8gb3V0IGh1Z2VkaXIg ZGVzY3JpcHRvcnMgKi8KCWZvciAoaSA9IDA7IGkgPCBNQVhfSFVHRVBBR0VfU0laRVM7IGkrKykK CQlpbnRlcm5hbF9jZmctPmh1Z2VwYWdlX2luZm9baV0ubG9ja19kZXNjcmlwdG9yID0gLTE7Cglp bnRlcm5hbF9jZmctPmJhc2VfdmlydGFkZHIgPSAwOwoKCWludGVybmFsX2NmZy0+c3lzbG9nX2Zh Y2lsaXR5ID0gTE9HX0RBRU1PTjsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGxpYi9saWJydGVfZWFs L2NvbW1vbi9lYWxfY29tbW9uX29wdGlvbnMuYzoxNzkKZXJyb3I6IGxpYi9saWJydGVfZWFsL2Nv bW1vbi9lYWxfY29tbW9uX29wdGlvbnMuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcg cGF0Y2ggbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9maWxlc3lzdGVtLmguLi4KSHVuayAjMSBz dWNjZWVkZWQgYXQgMTAyIChvZmZzZXQgMTcgbGluZXMpLgpDaGVja2luZyBwYXRjaCBsaWIvbGli cnRlX2VhbC9jb21tb24vZWFsX2h1Z2VwYWdlcy5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcg Zm9yOgp9OwoKLyoqCiAqIFJlYWQgdGhlIGluZm9ybWF0aW9uIGZyb20gbGludXggb24gd2hhdCBo dWdlcGFnZXMgYXJlIGF2YWlsYWJsZQogKiBmb3IgdGhlIEVBTCB0byB1c2UKICovCmludCBlYWxf aHVnZXBhZ2VfaW5mb19pbml0KHZvaWQpOwoKI2VuZGlmIC8qIEVBTF9IVUdFUEFHRVNfSCAqLwoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9odWdlcGFnZXMu aDoyNgplcnJvcjogbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9odWdlcGFnZXMuaDogcGF0Y2gg ZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9p bnRlcm5hbF9jZmcuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICovCnN0cnVjdCBo dWdlcGFnZV9pbmZvIHsKCXVpbnQ2NF90IGh1Z2VwYWdlX3N6OyAgIC8qKjwgc2l6ZSBvZiBhIGh1 Z2UgcGFnZSAqLwoJY29uc3QgY2hhciAqaHVnZWRpcjsgICAgLyoqPCBkaXIgd2hlcmUgaHVnZXRs YmZzIGlzIG1vdW50ZWQgKi8KCXVpbnQzMl90IG51bV9wYWdlc1tSVEVfTUFYX05VTUFfTk9ERVNd OwoJLyoqPCBudW1iZXIgb2YgaHVnZXBhZ2VzIG9mIHRoYXQgc2l6ZSBvbiBlYWNoIHNvY2tldCAq LwoJaW50IGxvY2tfZGVzY3JpcHRvcjsgICAgLyoqPCBmaWxlIGRlc2NyaXB0b3IgZm9yIGh1Z2Vw YWdlIGRpciAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2Vh bF9pbnRlcm5hbF9jZmcuaDoyMQplcnJvcjogbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9pbnRl cm5hbF9jZmcuaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0 ZV9lYWwvbGludXhhcHAvZWFsL2VhbC5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJ CQkiS05JIG1vZHVsZSBpbnNlcnRlZFxuIik7Cgl9CgoJaWYgKGludGVybmFsX2NvbmZpZy5ub19o dWdldGxiZnMgPT0gMCAmJgoJCQlpbnRlcm5hbF9jb25maWcucHJvY2Vzc190eXBlICE9IFJURV9Q Uk9DX1NFQ09OREFSWSAmJgotLQoJCXJldHVybiAtMTsKCX0KCglpZiAoaW50ZXJuYWxfY29uZmln Lm1lbW9yeSA9PSAwICYmIGludGVybmFsX2NvbmZpZy5mb3JjZV9zb2NrZXRzID09IDApIHsKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2VhbC9lYWwuYzo4MDcK ZXJyb3I6IGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2VhbC9lYWwuYzogcGF0Y2ggZG9lcyBub3Qg YXBwbHkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFsL2VhbF9odWdl cGFnZV9pbmZvLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNpbmNsdWRlIDxzdGRh cmcuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPHN5 cy9xdWV1ZS5oPgojaW5jbHVkZSA8c3lzL3N0YXQuaD4KCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBs aWIvbGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsX2h1Z2VwYWdlX2luZm8uYzoxNAplcnJvcjog bGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFsL2VhbF9odWdlcGFnZV9pbmZvLmM6IHBhdGNoIGRv ZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2VhbC9l YWxfbWVtb3J5LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJZm9yIChpID0gMDsg aSA8IGludGVybmFsX2NvbmZpZy5udW1faHVnZXBhZ2Vfc2l6ZXM7IGkrKyl7CgkJc3RydWN0IGh1 Z2VwYWdlX2luZm8gKmhwaSA9ICZpbnRlcm5hbF9jb25maWcuaHVnZXBhZ2VfaW5mb1tpXTsKCQlp ZiAoaHBpLT5odWdlZGlyICE9IE5VTEwpCgkJCXNpemUgKz0gaHBpLT5odWdlcGFnZV9zeiAqIGhw aS0+bnVtX3BhZ2VzW3NvY2tldF07Cgl9CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xpYnJ0 ZV9lYWwvbGludXhhcHAvZWFsL2VhbF9tZW1vcnkuYzoxMDYwCmVycm9yOiBsaWIvbGlicnRlX2Vh bC9saW51eGFwcC9lYWwvZWFsX21lbW9yeS5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQoqUmVwbzog ZHBkay1uZXh0LWNyeXB0bwpDaGVja2luZyBwYXRjaCBsaWIvbGlicnRlX2VhbC9ic2RhcHAvZWFs L2VhbC5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCWZvciAoaSA9IDA7IGkgPCBp bnRlcm5hbF9jb25maWcubnVtX2h1Z2VwYWdlX3NpemVzOyBpKyspIHsKCQlzdHJ1Y3QgaHVnZXBh Z2VfaW5mbyAqaHBpID0gJmludGVybmFsX2NvbmZpZy5odWdlcGFnZV9pbmZvW2ldOwoJCWlmICho cGktPmh1Z2VkaXIgIT0gTlVMTCkgewoJCQlmb3IgKGogPSAwOyBqIDwgUlRFX01BWF9OVU1BX05P REVTOyBqKyspIHsKCQkJCXNpemUgKz0gaHBpLT5odWdlcGFnZV9zeiAqIGhwaS0+bnVtX3BhZ2Vz W2pdOwoJCQl9CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBsaWIvbGlicnRlX2VhbC9ic2RhcHAvZWFs L2VhbC5jOjI4OQplcnJvcjogbGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9lYWwuYzogcGF0Y2gg ZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9l YWxfaHVnZXBhZ2VfaW5mby5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogKiBVc2Vk IGluIHRoaXMgZmlsZSB0byBzdG9yZSB0aGUgaHVnZXBhZ2UgZmlsZSBtYXAgb24gZGlzawogKi8K c3RhdGljIHZvaWQgKgpjcmVhdGVfc2hhcmVkX21lbW9yeShjb25zdCBjaGFyICpmaWxlbmFtZSwg Y29uc3Qgc2l6ZV90IG1lbV9zaXplKQp7Ci0tCglpbnQgZmQgPSBvcGVuKGZpbGVuYW1lLCBPX0NS RUFUIHwgT19SRFdSLCAwNjY2KTsKCWlmIChmZCA8IDApCgkJcmV0dXJuIE5VTEw7CglpZiAoZnRy dW5jYXRlKGZkLCBtZW1fc2l6ZSkgPCAwKSB7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBsaWIvbGli cnRlX2VhbC9ic2RhcHAvZWFsL2VhbF9odWdlcGFnZV9pbmZvLmM6MTkKZXJyb3I6IGxpYi9saWJy dGVfZWFsL2JzZGFwcC9lYWwvZWFsX2h1Z2VwYWdlX2luZm8uYzogcGF0Y2ggZG9lcyBub3QgYXBw bHkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9lYWxfbWVtb3J5LmMu Li4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CnJ0ZV9lYWxfaHVnZXBhZ2VfYXR0YWNoKHZv aWQpCnsKCWNvbnN0IHN0cnVjdCBodWdlcGFnZV9pbmZvICpocGk7CglpbnQgZmRfaHVnZXBhZ2Vf aW5mbywgZmRfaHVnZXBhZ2UgPSAtMTsKCXVuc2lnbmVkIGludCBpOwotLQoJLyogTWFwIHRoZSBz aGFyZWQgaHVnZXBhZ2VfaW5mbyBpbnRvIHRoZSBwcm9jZXNzIGFkZHJlc3Mgc3BhY2VzICovCglo cGkgPSBtbWFwKE5VTEwsIHNpemVvZihpbnRlcm5hbF9jb25maWcuaHVnZXBhZ2VfaW5mbyksCgkJ CVBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGZkX2h1Z2VwYWdlX2luZm8sIDApOwoJaWYgKGhwaSA9 PSBNQVBfRkFJTEVEKSB7CgkJUlRFX0xPRyhFUlIsIEVBTCwgIkNvdWxkIG5vdCBtbWFwICVzXG4i LCBlYWxfaHVnZXBhZ2VfaW5mb19wYXRoKCkpOwoJCWdvdG8gZXJyb3I7Cgl9CgoJZm9yIChpID0g MDsgaSA8IGludGVybmFsX2NvbmZpZy5udW1faHVnZXBhZ2Vfc2l6ZXM7IGkrKykgewoJCWNvbnN0 IHN0cnVjdCBodWdlcGFnZV9pbmZvICpjdXJfaHBpID0gJmhwaVtpXTsKCmVycm9yOiBwYXRjaCBm YWlsZWQ6IGxpYi9saWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsX21lbW9yeS5jOjI0MAplcnJvcjog bGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9lYWxfbWVtb3J5LmM6IHBhdGNoIGRvZXMgbm90IGFw cGx5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfY29tbW9uX29wdGlv bnMuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCWZvciAoaSA9IDA7IGkgPCBSVEVf TUFYX05VTUFfTk9ERVM7IGkrKykKCQlpbnRlcm5hbF9jZmctPnNvY2tldF9tZW1baV0gPSAwOwoJ LyogemVybyBvdXQgaHVnZWRpciBkZXNjcmlwdG9ycyAqLwoJZm9yIChpID0gMDsgaSA8IE1BWF9I VUdFUEFHRV9TSVpFUzsgaSsrKQoJCWludGVybmFsX2NmZy0+aHVnZXBhZ2VfaW5mb1tpXS5sb2Nr X2Rlc2NyaXB0b3IgPSAtMTsKCWludGVybmFsX2NmZy0+YmFzZV92aXJ0YWRkciA9IDA7CgoJaW50 ZXJuYWxfY2ZnLT5zeXNsb2dfZmFjaWxpdHkgPSBMT0dfREFFTU9OOwoKZXJyb3I6IHBhdGNoIGZh aWxlZDogbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9jb21tb25fb3B0aW9ucy5jOjE3OQplcnJv cjogbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9jb21tb25fb3B0aW9ucy5jOiBwYXRjaCBkb2Vz IG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBsaWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2ZpbGVz eXN0ZW0uaC4uLgpIdW5rICMxIHN1Y2NlZWRlZCBhdCAxMDIgKG9mZnNldCAxNyBsaW5lcykuCkNo ZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfaHVnZXBhZ2VzLmguLi4KZXJy b3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6Cn07CgovKioKICogUmVhZCB0aGUgaW5mb3JtYXRpb24g ZnJvbSBsaW51eCBvbiB3aGF0IGh1Z2VwYWdlcyBhcmUgYXZhaWxhYmxlCiAqIGZvciB0aGUgRUFM IHRvIHVzZQogKi8KaW50IGVhbF9odWdlcGFnZV9pbmZvX2luaXQodm9pZCk7CgojZW5kaWYgLyog RUFMX0hVR0VQQUdFU19IICovCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBsaWIvbGlicnRlX2VhbC9j b21tb24vZWFsX2h1Z2VwYWdlcy5oOjI2CmVycm9yOiBsaWIvbGlicnRlX2VhbC9jb21tb24vZWFs X2h1Z2VwYWdlcy5oOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBsaWIvbGli cnRlX2VhbC9jb21tb24vZWFsX2ludGVybmFsX2NmZy5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hp bmcgZm9yOgogKi8Kc3RydWN0IGh1Z2VwYWdlX2luZm8gewoJdWludDY0X3QgaHVnZXBhZ2Vfc3o7 ICAgLyoqPCBzaXplIG9mIGEgaHVnZSBwYWdlICovCgljb25zdCBjaGFyICpodWdlZGlyOyAgICAv Kio8IGRpciB3aGVyZSBodWdldGxiZnMgaXMgbW91bnRlZCAqLwoJdWludDMyX3QgbnVtX3BhZ2Vz W1JURV9NQVhfTlVNQV9OT0RFU107CgkvKio8IG51bWJlciBvZiBodWdlcGFnZXMgb2YgdGhhdCBz aXplIG9uIGVhY2ggc29ja2V0ICovCglpbnQgbG9ja19kZXNjcmlwdG9yOyAgICAvKio8IGZpbGUg ZGVzY3JpcHRvciBmb3IgaHVnZXBhZ2UgZGlyICovCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBsaWIv bGlicnRlX2VhbC9jb21tb24vZWFsX2ludGVybmFsX2NmZy5oOjIxCmVycm9yOiBsaWIvbGlicnRl X2VhbC9jb21tb24vZWFsX2ludGVybmFsX2NmZy5oOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVj a2luZyBwYXRjaCBsaWIvbGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsLmMuLi4KZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6CgkJCSJLTkkgbW9kdWxlIGluc2VydGVkXG4iKTsKCX0KCglpZiAo aW50ZXJuYWxfY29uZmlnLm5vX2h1Z2V0bGJmcyA9PSAwICYmCgkJCWludGVybmFsX2NvbmZpZy5w cm9jZXNzX3R5cGUgIT0gUlRFX1BST0NfU0VDT05EQVJZICYmCi0tCgkJcmV0dXJuIC0xOwoJfQoK CWlmIChpbnRlcm5hbF9jb25maWcubWVtb3J5ID09IDAgJiYgaW50ZXJuYWxfY29uZmlnLmZvcmNl X3NvY2tldHMgPT0gMCkgewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xpYnJ0ZV9lYWwvbGlu dXhhcHAvZWFsL2VhbC5jOjgwNwplcnJvcjogbGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFsL2Vh bC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBsaWIvbGlicnRlX2VhbC9s aW51eGFwcC9lYWwvZWFsX2h1Z2VwYWdlX2luZm8uYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5n IGZvcjoKI2luY2x1ZGUgPHN0ZGFyZy5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxl cnJuby5oPgojaW5jbHVkZSA8c3lzL3F1ZXVlLmg+CiNpbmNsdWRlIDxzeXMvc3RhdC5oPgoKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2VhbC9lYWxfaHVnZXBh Z2VfaW5mby5jOjE0CmVycm9yOiBsaWIvbGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsX2h1Z2Vw YWdlX2luZm8uYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0 ZV9lYWwvbGludXhhcHAvZWFsL2VhbF9tZW1vcnkuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5n IGZvcjoKCglmb3IgKGkgPSAwOyBpIDwgaW50ZXJuYWxfY29uZmlnLm51bV9odWdlcGFnZV9zaXpl czsgaSsrKXsKCQlzdHJ1Y3QgaHVnZXBhZ2VfaW5mbyAqaHBpID0gJmludGVybmFsX2NvbmZpZy5o dWdlcGFnZV9pbmZvW2ldOwoJCWlmIChocGktPmh1Z2VkaXIgIT0gTlVMTCkKCQkJc2l6ZSArPSBo cGktPmh1Z2VwYWdlX3N6ICogaHBpLT5udW1fcGFnZXNbc29ja2V0XTsKCX0KCgplcnJvcjogcGF0 Y2ggZmFpbGVkOiBsaWIvbGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsX21lbW9yeS5jOjEwNjAK ZXJyb3I6IGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2VhbC9lYWxfbWVtb3J5LmM6IHBhdGNoIGRv ZXMgbm90IGFwcGx5CipSZXBvOiBkcGRrLW5leHQtdmlydGlvCkNoZWNraW5nIHBhdGNoIGxpYi9s aWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 CgoJZm9yIChpID0gMDsgaSA8IGludGVybmFsX2NvbmZpZy5udW1faHVnZXBhZ2Vfc2l6ZXM7IGkr KykgewoJCXN0cnVjdCBodWdlcGFnZV9pbmZvICpocGkgPSAmaW50ZXJuYWxfY29uZmlnLmh1Z2Vw YWdlX2luZm9baV07CgkJaWYgKGhwaS0+aHVnZWRpciAhPSBOVUxMKSB7CgkJCWZvciAoaiA9IDA7 IGogPCBSVEVfTUFYX05VTUFfTk9ERVM7IGorKykgewoJCQkJc2l6ZSArPSBocGktPmh1Z2VwYWdl X3N6ICogaHBpLT5udW1fcGFnZXNbal07CgkJCX0KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGxpYi9s aWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsLmM6Mjg5CmVycm9yOiBsaWIvbGlicnRlX2VhbC9ic2Rh cHAvZWFsL2VhbC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBsaWIvbGli cnRlX2VhbC9ic2RhcHAvZWFsL2VhbF9odWdlcGFnZV9pbmZvLmMuLi4KZXJyb3I6IHdoaWxlIHNl YXJjaGluZyBmb3I6CiAqIFVzZWQgaW4gdGhpcyBmaWxlIHRvIHN0b3JlIHRoZSBodWdlcGFnZSBm aWxlIG1hcCBvbiBkaXNrCiAqLwpzdGF0aWMgdm9pZCAqCmNyZWF0ZV9zaGFyZWRfbWVtb3J5KGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBzaXplX3QgbWVtX3NpemUpCnsKLS0KCWludCBmZCA9 IG9wZW4oZmlsZW5hbWUsIE9fQ1JFQVQgfCBPX1JEV1IsIDA2NjYpOwoJaWYgKGZkIDwgMCkKCQly ZXR1cm4gTlVMTDsKCWlmIChmdHJ1bmNhdGUoZmQsIG1lbV9zaXplKSA8IDApIHsKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGxpYi9saWJydGVfZWFsL2JzZGFwcC9lYWwvZWFsX2h1Z2VwYWdlX2luZm8u YzoxOQplcnJvcjogbGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9lYWxfaHVnZXBhZ2VfaW5mby5j OiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBsaWIvbGlicnRlX2VhbC9ic2Rh cHAvZWFsL2VhbF9tZW1vcnkuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKcnRlX2Vh bF9odWdlcGFnZV9hdHRhY2godm9pZCkKewoJY29uc3Qgc3RydWN0IGh1Z2VwYWdlX2luZm8gKmhw aTsKCWludCBmZF9odWdlcGFnZV9pbmZvLCBmZF9odWdlcGFnZSA9IC0xOwoJdW5zaWduZWQgaW50 IGk7Ci0tCgkvKiBNYXAgdGhlIHNoYXJlZCBodWdlcGFnZV9pbmZvIGludG8gdGhlIHByb2Nlc3Mg YWRkcmVzcyBzcGFjZXMgKi8KCWhwaSA9IG1tYXAoTlVMTCwgc2l6ZW9mKGludGVybmFsX2NvbmZp Zy5odWdlcGFnZV9pbmZvKSwKCQkJUFJPVF9SRUFELCBNQVBfUFJJVkFURSwgZmRfaHVnZXBhZ2Vf aW5mbywgMCk7CglpZiAoaHBpID09IE1BUF9GQUlMRUQpIHsKCQlSVEVfTE9HKEVSUiwgRUFMLCAi Q291bGQgbm90IG1tYXAgJXNcbiIsIGVhbF9odWdlcGFnZV9pbmZvX3BhdGgoKSk7CgkJZ290byBl cnJvcjsKCX0KCglmb3IgKGkgPSAwOyBpIDwgaW50ZXJuYWxfY29uZmlnLm51bV9odWdlcGFnZV9z aXplczsgaSsrKSB7CgkJY29uc3Qgc3RydWN0IGh1Z2VwYWdlX2luZm8gKmN1cl9ocGkgPSAmaHBp W2ldOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xpYnJ0ZV9lYWwvYnNkYXBwL2VhbC9lYWxf bWVtb3J5LmM6MjQwCmVycm9yOiBsaWIvbGlicnRlX2VhbC9ic2RhcHAvZWFsL2VhbF9tZW1vcnku YzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvY29t bW9uL2VhbF9jb21tb25fb3B0aW9ucy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJ Zm9yIChpID0gMDsgaSA8IFJURV9NQVhfTlVNQV9OT0RFUzsgaSsrKQoJCWludGVybmFsX2NmZy0+ c29ja2V0X21lbVtpXSA9IDA7CgkvKiB6ZXJvIG91dCBodWdlZGlyIGRlc2NyaXB0b3JzICovCglm b3IgKGkgPSAwOyBpIDwgTUFYX0hVR0VQQUdFX1NJWkVTOyBpKyspCgkJaW50ZXJuYWxfY2ZnLT5o dWdlcGFnZV9pbmZvW2ldLmxvY2tfZGVzY3JpcHRvciA9IC0xOwoJaW50ZXJuYWxfY2ZnLT5iYXNl X3ZpcnRhZGRyID0gMDsKCglpbnRlcm5hbF9jZmctPnN5c2xvZ19mYWNpbGl0eSA9IExPR19EQUVN T047CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBsaWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2NvbW1v bl9vcHRpb25zLmM6MTc5CmVycm9yOiBsaWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2NvbW1vbl9v cHRpb25zLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVf ZWFsL2NvbW1vbi9lYWxfZmlsZXN5c3RlbS5oLi4uCkh1bmsgIzEgc3VjY2VlZGVkIGF0IDEwMiAo b2Zmc2V0IDE3IGxpbmVzKS4KQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2Vh bF9odWdlcGFnZXMuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKfTsKCi8qKgogKiBS ZWFkIHRoZSBpbmZvcm1hdGlvbiBmcm9tIGxpbnV4IG9uIHdoYXQgaHVnZXBhZ2VzIGFyZSBhdmFp bGFibGUKICogZm9yIHRoZSBFQUwgdG8gdXNlCiAqLwppbnQgZWFsX2h1Z2VwYWdlX2luZm9faW5p dCh2b2lkKTsKCiNlbmRpZiAvKiBFQUxfSFVHRVBBR0VTX0ggKi8KCmVycm9yOiBwYXRjaCBmYWls ZWQ6IGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfaHVnZXBhZ2VzLmg6MjYKZXJyb3I6IGxpYi9s aWJydGVfZWFsL2NvbW1vbi9lYWxfaHVnZXBhZ2VzLmg6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNo ZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfaW50ZXJuYWxfY2ZnLmguLi4K ZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiAqLwpzdHJ1Y3QgaHVnZXBhZ2VfaW5mbyB7Cgl1 aW50NjRfdCBodWdlcGFnZV9zejsgICAvKio8IHNpemUgb2YgYSBodWdlIHBhZ2UgKi8KCWNvbnN0 IGNoYXIgKmh1Z2VkaXI7ICAgIC8qKjwgZGlyIHdoZXJlIGh1Z2V0bGJmcyBpcyBtb3VudGVkICov Cgl1aW50MzJfdCBudW1fcGFnZXNbUlRFX01BWF9OVU1BX05PREVTXTsKCS8qKjwgbnVtYmVyIG9m IGh1Z2VwYWdlcyBvZiB0aGF0IHNpemUgb24gZWFjaCBzb2NrZXQgKi8KCWludCBsb2NrX2Rlc2Ny aXB0b3I7ICAgIC8qKjwgZmlsZSBkZXNjcmlwdG9yIGZvciBodWdlcGFnZSBkaXIgKi8KCmVycm9y OiBwYXRjaCBmYWlsZWQ6IGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfaW50ZXJuYWxfY2ZnLmg6 MjEKZXJyb3I6IGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfaW50ZXJuYWxfY2ZnLmg6IHBhdGNo IGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2Vh bC9lYWwuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkJIktOSSBtb2R1bGUgaW5z ZXJ0ZWRcbiIpOwoJfQoKCWlmIChpbnRlcm5hbF9jb25maWcubm9faHVnZXRsYmZzID09IDAgJiYK CQkJaW50ZXJuYWxfY29uZmlnLnByb2Nlc3NfdHlwZSAhPSBSVEVfUFJPQ19TRUNPTkRBUlkgJiYK LS0KCQlyZXR1cm4gLTE7Cgl9CgoJaWYgKGludGVybmFsX2NvbmZpZy5tZW1vcnkgPT0gMCAmJiBp bnRlcm5hbF9jb25maWcuZm9yY2Vfc29ja2V0cyA9PSAwKSB7CgplcnJvcjogcGF0Y2ggZmFpbGVk OiBsaWIvbGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsLmM6ODA3CmVycm9yOiBsaWIvbGlicnRl X2VhbC9saW51eGFwcC9lYWwvZWFsLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBh dGNoIGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2VhbC9lYWxfaHVnZXBhZ2VfaW5mby5jLi4uCmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgojaW5jbHVkZSA8c3RkYXJnLmg+CiNpbmNsdWRlIDx1 bmlzdGQuaD4KI2luY2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxzeXMvcXVldWUuaD4KI2luY2x1 ZGUgPHN5cy9zdGF0Lmg+CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogbGliL2xpYnJ0ZV9lYWwvbGlu dXhhcHAvZWFsL2VhbF9odWdlcGFnZV9pbmZvLmM6MTQKZXJyb3I6IGxpYi9saWJydGVfZWFsL2xp bnV4YXBwL2VhbC9lYWxfaHVnZXBhZ2VfaW5mby5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVj a2luZyBwYXRjaCBsaWIvbGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsX21lbW9yeS5jLi4uCmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCWZvciAoaSA9IDA7IGkgPCBpbnRlcm5hbF9jb25m aWcubnVtX2h1Z2VwYWdlX3NpemVzOyBpKyspewoJCXN0cnVjdCBodWdlcGFnZV9pbmZvICpocGkg PSAmaW50ZXJuYWxfY29uZmlnLmh1Z2VwYWdlX2luZm9baV07CgkJaWYgKGhwaS0+aHVnZWRpciAh PSBOVUxMKQoJCQlzaXplICs9IGhwaS0+aHVnZXBhZ2Vfc3ogKiBocGktPm51bV9wYWdlc1tzb2Nr ZXRdOwoJfQoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2Vh bC9lYWxfbWVtb3J5LmM6MTA2MAplcnJvcjogbGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFsL2Vh bF9tZW1vcnkuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKCkRQREsgU1RWIHRlYW0= --===============5323606028770451400==--