From: Marc Alff Date: August 10 2011 12:43am Subject: bzr push into mysql-trunk branch (marc.alff:3350 to 3351) Bug#12346211 List-Archive: http://lists.mysql.com/commits/140559 X-Bug: 12346211 Message-Id: <201108100043.p7A0hWc8007155@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDMzNTEgTWFyYyBBbGZmCTIwMTEtMDgtMDkKICAgICAgQnVnIzEyMzQ2MjExIC0gUEVSRiBJTVBB Q1QgT0YgUEVSRk9STUFOQ0UtU0NIRU1BIFdJVEggRElTQUJMRUQgSU5TVFJVTUVOVFMvQ09OU1VN RVJTCiAgICAgIAogICAgICBQZXJmb3JtYW5jZSBpbXByb3ZlbWVudCAjMzogQmV0dGVyIGFsbG9j YXRpb24uCiAgICAgIAogICAgICBCZWZvcmUgdGhpcyBmaXgsIHRoZSBwZXJmb3JtYW5jZSBzY2hl bWEgYWxsb2NhdGlvbiBhbGdvcml0aG0gdXNlZCwKICAgICAgZm9yIGV4YW1wbGUgd2hlbiBjcmVh dGluZyBhIG11dGV4LCB3YXM6CiAgICAgIC0gY29tcHV0ZSBhIHJhbmRvbSBudW1iZXIgSSBiZXR3 ZWVuIDAgYW5kIE4KICAgICAgLSBzdGFydCB0byBzY2FuIGZvciBhbiBlbXB0eSBzbG90IGF0IHBv c2l0aW9uIEkgbW9kdWxvIE4sCiAgICAgICBJKzEgbW9kdWxvIE4sIEkrMiBtb2R1bG8gTiAuLi4K ICAgICAgYW5kIHRoaXMgZm9yIGVhY2ggY29tcGV0aW5nIHRocmVhZC4KICAgICAgCiAgICAgIFdo ZW4gb25seSBhIGZldyB0aHJlYWRzIGFyZSBydW5uaW5nLCBhbmQgd2hlbiB0aGUgc2xvdHMgYXJl IG1vc3RseSBlbXB0eSwKICAgICAgdGhpcyB3b3JrcyB3ZWxsIHNpbmNlIGZldyBjb2xsaXNpb25z IGhhcHBlbi4KICAgICAgCiAgICAgIFdoZW4gdGhlIG51bWJlciBvZiBjb21wZXRpbmcgdGhyZWFk cyBhdWdtZW50cywgYW5kIHdoZW4gdGhlIHNsb3RzIGFyZSBtb3N0bHkKICAgICAgb2NjdXBpZWQs IHRoaXMgY29kZSBjYW4gcG90ZW50aWFsbHkgY3JlYXRlIGEgbG90IG9mIGNvbXBldGl0aW9uIGJl dHdlZW4KICAgICAgdGhyZWFkcywgd2hlbiBkb2luZyBhdG9taWMgb3BlcmF0aW9ucyBhZ2FpbnN0 IGVhY2ggc2xvdCBpbnRlcm5hbCBsb2NrLgogICAgICAKICAgICAgV2l0aCB0aGlzIGZpeCwgdGhl IGFsbG9jYXRpb24gaXMgY2hhbmdlZCB0bzoKICAgICAgLSBrZWVwIGEgc3RhdGljIG1vbm90b25p YyBjb3VudGVyIGZvciBlYWNoIGJ1ZmZlciwgSQogICAgICAtIGF0b21pY2FsbHkgaW5jcmVtZW50 IEkKICAgICAgLSBsb29rIGZvciBhbiBlbXB0eSBzbG90IGF0IEkgbW9kdWxvIE4KICAgICAgLSBy ZXBlYXQgaWYgbmVjZXNzYXJ5LgogICAgICAKICAgICAgQmVjYXVzZSB0aGUgbW9ub3RvbmljIGNv dW50ZXIgaXMgc2hhcmVkIGJldHdlZW4gYWxsIHRocmVhZHMsCiAgICAgIGNvbXBldGluZyB0aHJl YWRzIGVuZCB1cCBhY3R1YWxseSBsb29raW5nIGZvciBkaWZmZXJlbnQgc2xvdHMgYXQgSTAsIEkw KzEsCiAgICAgIEkwKzIgZXRjLCB3aGljaCBwcmV2ZW50cyBjb21wZXRpdGlvbiBvbiBlYWNoIHNs b3QgaW50ZXJuYWwgbG9jay4KICAgICAgQWxzbywgYmVjYXVzZSByZWNvcmRzIGFyZSBhbGxvY2F0 ZWQgaW4gY2lyY3VsYXIgZmFzaGlvbiwgc3RhcnRpbmcgdG8gbG9vawogICAgICBmb3IgYW4gZW1w dHkgc2xvdCBhZnRlciB0aGUgbGFzdCBzbG90IGZvdW5kIGluY3JlYXNlcyB0aGUgcHJvYmFiaWxp dHkgdG8KICAgICAgZmluZCBhdmFpbGFibGUgc2xvdHMsIGFuZCByZWR1Y2VzIHRoZSBudW1iZXIg b2YgbG9vcHMgZHVyaW5nIHRoZSBzY2FuLgogICAgICAKICAgICAgV2hpbGUgZGlmZmljdWx0IHRv IG1lYXN1cmUsIHRoaXMgZml4IGlzIGV4cGVjdGVkIHRvIGltcHJvdmUgdGhlIHNjYWxhYmlsaXR5 CiAgICAgIG9mIHRoZSBwZXJmb3JtYW5jZSBzY2hlbWEgYWxsb2NhdGlvbiBjb2RlLCB3aGljaCBp cyB1c2VkIGZvcjoKICAgICAgLSBjcmVhdGluZyBhIG11dGV4LAogICAgICAtIGNyZWF0aW5nIGEg cndsb2NrLAogICAgICAtIGNyZWF0aW5nIGEgY29uZCwKICAgICAgLSBvcGVuaW5nIGEgZmlsZSwK ICAgICAgLSBvcGVuaW5nIGEgdGFibGUKICAgICAgd2hpY2ggYXJlIGFsbCBvcGVyYXRpb25zIHRo YXQgY2FuIG9jY3VyIGZyZXF1ZW50bHkgd2hlbiB0aGUgc2VydmVyIGlzCiAgICAgIHJ1bm5pbmcu CgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvcGVyZnNjaGVtYS9wZnNfaW5zdHIuY2MKICAg ICAgc3RvcmFnZS9wZXJmc2NoZW1hL3Bmc19pbnN0cl9jbGFzcy5jYwogICAgICBzdG9yYWdlL3Bl cmZzY2hlbWEvcGZzX3NldHVwX2FjdG9yLmNjCiAgICAgIHN0b3JhZ2UvcGVyZnNjaGVtYS9wZnNf c2V0dXBfb2JqZWN0LmNjCiAzMzUwIE1hcmtvIE3DpGtlbMOkCTIwMTEtMDgtMDggW21lcmdlXQog ICAgICBNZXJnZSBteXNxbC01LjUgdG8gbXlzcWwtdHJ1bmsuCgogICAgbW9kaWZpZWQ6CiAgICAg IG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiLXppcC5yZXN1bHQKICAgICAgbXlzcWwt dGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGItemlwLnRlc3QKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9oYW5kbGVyL2hhX2lubm9kYi5jYwogICAgICBzdXBwb3J0LWZpbGVzL215c3FsLnNwZWMuc2gK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvcGVyZnNjaGVtYS9wZnNfaW5zdHIuY2MnCi0tLSBh L3N0b3JhZ2UvcGVyZnNjaGVtYS9wZnNfaW5zdHIuY2MJMjAxMS0wNy0xNCAwODoxMTowNyArMDAw MAorKysgYi9zdG9yYWdlL3BlcmZzY2hlbWEvcGZzX2luc3RyLmNjCTIwMTEtMDgtMDkgMTY6Mzk6 MTYgKzAwMDAKQEAgLTU2NCwzNCArNTY0LDUyIEBAIHZvaWQgUEZTX3NjYW46OmluaXQodWludCBy YW5kb20sIHVpbnQgbWEKICovCiBQRlNfbXV0ZXgqIGNyZWF0ZV9tdXRleChQRlNfbXV0ZXhfY2xh c3MgKmtsYXNzLCBjb25zdCB2b2lkICppZGVudGl0eSkKIHsKLSAgUEZTX3NjYW4gc2NhbjsKLSAg dWludCByYW5kb209IHJhbmRvbWl6ZWRfaW5kZXgoaWRlbnRpdHksIG11dGV4X21heCk7CisgIHN0 YXRpYyB1aW50IG11dGV4X21vbm90b25pY19pbmRleD0gMDsKKyAgdWludCBpbmRleDsKKyAgdWlu dCBhdHRlbXB0cz0gMDsKKyAgUEZTX211dGV4ICpwZnM7CisKKyAgd2hpbGUgKCsrYXR0ZW1wdHMg PD0gbXV0ZXhfbWF4KQorICB7CisgICAgLyoKKyAgICAgIFByb2JsZW06CisgICAgICBNdWx0aXBs ZSB0aHJlYWRzIHJ1bm5pbmcgY29uY3VycmVudGx5IG1heSBuZWVkIHRvIGNyZWF0ZSBhIG5ldwor ICAgICAgaW5zdHJ1bWVudGVkIG11dGV4LCBhbmQgZmluZCBhbiBlbXB0eSBzbG90IGluIG11dGV4 X2FycmF5W10uCisgICAgICBXaXRoIE4xIHRocmVhZHMgcnVubmluZyBvbiBhIE4yIGNvcmUgaGFy ZHdhcmU6CisgICAgICAtIHVwIHRvIE4yIGhhcmR3YXJlIHRocmVhZHMgY2FuIHJ1biBjb25jdXJy ZW50bHksCisgICAgICBjYXVzaW5nIGNvbnRlbnRpb24gaWYgbG9va2luZyBhdCB0aGUgc2FtZSBh cnJheVtpXSBzbG90LgorICAgICAgLSB1cCB0byBOMSB0aHJlYWRzIGNhbiBydW4gYWxtb3N0IGNv bmN1cnJlbnRseSAod2l0aCB0aHJlYWQgc2NoZWR1bGluZyksCisgICAgICBzY2FubmluZyBtYXli ZSBvdmVybGFwcGluZyByZWdpb25zIGluIHRoZSBbMC1tdXRleF9tYXhdIGFycmF5LgorCisgICAg ICBTb2x1dGlvbjoKKyAgICAgIEluc3RlYWQgb2YgbGV0dGluZyBkaWZmZXJlbnQgdGhyZWFkcyBj b21wZXRlIG9uIHRoZSBzYW1lIGFycmF5W2ldIGVudHJ5LAorICAgICAgdGhpcyBjb2RlIGZvcmNl cyBhbGwgdGhyZWFkcyB0byBjb29wZXJhdGUgd2l0aCB0aGUgbW9ub3RvbmljX2luZGV4LgorICAg ICAgT25seSBvbmUgdGhyZWFkIHdpbGwgYmUgYWxsb3dlZCB0byB0ZXN0IGEgZ2l2ZW4gYXJyYXlb aV0gc2xvdC4KKyAgICAgIEFsbCB0aHJlYWRzIGRvIHNjYW4gZnJvbSB0aGUgc2FtZSByZWdpb24s IHN0YXJ0aW5nIGF0IG1vbm90b25pY19pbmRleC4KKyAgICAgIFNlcmlhbGl6aW5nIG9uIG1vbm90 b25pY19pbmRleCBlbnN1cmVzIHRoYXQgd2hlbiBhIHNsb3QgaXMgZm91bmQgb2NjdXBpZWQKKyAg ICAgIGluIGEgZ2l2ZW4gbG9vcCBieSBhIGdpdmVuIHRocmVhZCwgb3RoZXIgdGhyZWFkcyB3aWxs IG5vdCBhdHRlbXB0IHRoaXMKKyAgICAgIHNsb3QuCisgICAgKi8KKyAgICBQRlNfYXRvbWljOjph ZGRfdTMyKCYgbXV0ZXhfbW9ub3RvbmljX2luZGV4LCAxKTsKKyAgICBpbmRleD0gbXV0ZXhfbW9u b3RvbmljX2luZGV4ICUgbXV0ZXhfbWF4OworICAgIHBmcz0gbXV0ZXhfYXJyYXkgKyBpbmRleDsK IAotICBmb3IgKHNjYW4uaW5pdChyYW5kb20sIG11dGV4X21heCk7Ci0gICAgICAgc2Nhbi5oYXNf cGFzcygpOwotICAgICAgIHNjYW4ubmV4dF9wYXNzKCkpCi0gIHsKLSAgICBQRlNfbXV0ZXggKnBm cz0gbXV0ZXhfYXJyYXkgKyBzY2FuLmZpcnN0KCk7Ci0gICAgUEZTX211dGV4ICpwZnNfbGFzdD0g bXV0ZXhfYXJyYXkgKyBzY2FuLmxhc3QoKTsKLSAgICBmb3IgKCA7IHBmcyA8IHBmc19sYXN0OyBw ZnMrKykKKyAgICBpZiAocGZzLT5tX2xvY2suaXNfZnJlZSgpKQogICAgIHsKLSAgICAgIGlmIChw ZnMtPm1fbG9jay5pc19mcmVlKCkpCisgICAgICBpZiAocGZzLT5tX2xvY2suZnJlZV90b19kaXJ0 eSgpKQogICAgICAgewotICAgICAgICBpZiAocGZzLT5tX2xvY2suZnJlZV90b19kaXJ0eSgpKQot ICAgICAgICB7Ci0gICAgICAgICAgcGZzLT5tX2lkZW50aXR5PSBpZGVudGl0eTsKLSAgICAgICAg ICBwZnMtPm1fY2xhc3M9IGtsYXNzOwotICAgICAgICAgIHBmcy0+bV9lbmFibGVkPSBrbGFzcy0+ bV9lbmFibGVkICYmIGZsYWdfZ2xvYmFsX2luc3RydW1lbnRhdGlvbjsKLSAgICAgICAgICBwZnMt Pm1fdGltZWQ9IGtsYXNzLT5tX3RpbWVkOwotICAgICAgICAgIHBmcy0+bV93YWl0X3N0YXQucmVz ZXQoKTsKLSAgICAgICAgICBwZnMtPm1fbG9ja19zdGF0LnJlc2V0KCk7Ci0gICAgICAgICAgcGZz LT5tX293bmVyPSBOVUxMOwotICAgICAgICAgIHBmcy0+bV9sYXN0X2xvY2tlZD0gMDsKLSAgICAg ICAgICBwZnMtPm1fbG9jay5kaXJ0eV90b19hbGxvY2F0ZWQoKTsKLSAgICAgICAgICBpZiAoa2xh c3MtPmlzX3NpbmdsZXRvbigpKQotICAgICAgICAgICAga2xhc3MtPm1fc2luZ2xldG9uPSBwZnM7 Ci0gICAgICAgICAgcmV0dXJuIHBmczsKLSAgICAgICAgfQorICAgICAgICBwZnMtPm1faWRlbnRp dHk9IGlkZW50aXR5OworICAgICAgICBwZnMtPm1fY2xhc3M9IGtsYXNzOworICAgICAgICBwZnMt Pm1fZW5hYmxlZD0ga2xhc3MtPm1fZW5hYmxlZCAmJiBmbGFnX2dsb2JhbF9pbnN0cnVtZW50YXRp b247CisgICAgICAgIHBmcy0+bV90aW1lZD0ga2xhc3MtPm1fdGltZWQ7CisgICAgICAgIHBmcy0+ bV93YWl0X3N0YXQucmVzZXQoKTsKKyAgICAgICAgcGZzLT5tX2xvY2tfc3RhdC5yZXNldCgpOwor ICAgICAgICBwZnMtPm1fb3duZXI9IE5VTEw7CisgICAgICAgIHBmcy0+bV9sYXN0X2xvY2tlZD0g MDsKKyAgICAgICAgcGZzLT5tX2xvY2suZGlydHlfdG9fYWxsb2NhdGVkKCk7CisgICAgICAgIGlm IChrbGFzcy0+aXNfc2luZ2xldG9uKCkpCisgICAgICAgICAga2xhc3MtPm1fc2luZ2xldG9uPSBw ZnM7CisgICAgICAgIHJldHVybiBwZnM7CiAgICAgICB9CiAgICAgfQogICB9CkBAIC02MjUsMzcg KzY0MywzNyBAQCB2b2lkIGRlc3Ryb3lfbXV0ZXgoUEZTX211dGV4ICpwZnMpCiAqLwogUEZTX3J3 bG9jayogY3JlYXRlX3J3bG9jayhQRlNfcndsb2NrX2NsYXNzICprbGFzcywgY29uc3Qgdm9pZCAq aWRlbnRpdHkpCiB7Ci0gIFBGU19zY2FuIHNjYW47Ci0gIHVpbnQgcmFuZG9tPSByYW5kb21pemVk X2luZGV4KGlkZW50aXR5LCByd2xvY2tfbWF4KTsKKyAgc3RhdGljIHVpbnQgcndsb2NrX21vbm90 b25pY19pbmRleD0gMDsKKyAgdWludCBpbmRleDsKKyAgdWludCBhdHRlbXB0cz0gMDsKKyAgUEZT X3J3bG9jayAqcGZzOwogCi0gIGZvciAoc2Nhbi5pbml0KHJhbmRvbSwgcndsb2NrX21heCk7Ci0g ICAgICAgc2Nhbi5oYXNfcGFzcygpOwotICAgICAgIHNjYW4ubmV4dF9wYXNzKCkpCi0gIHsKLSAg ICBQRlNfcndsb2NrICpwZnM9IHJ3bG9ja19hcnJheSArIHNjYW4uZmlyc3QoKTsKLSAgICBQRlNf cndsb2NrICpwZnNfbGFzdD0gcndsb2NrX2FycmF5ICsgc2Nhbi5sYXN0KCk7Ci0gICAgZm9yICgg OyBwZnMgPCBwZnNfbGFzdDsgcGZzKyspCisgIHdoaWxlICgrK2F0dGVtcHRzIDw9IHJ3bG9ja19t YXgpCisgIHsKKyAgICAvKiBTZWUgY3JlYXRlX211dGV4KCkgKi8KKyAgICBQRlNfYXRvbWljOjph ZGRfdTMyKCYgcndsb2NrX21vbm90b25pY19pbmRleCwgMSk7CisgICAgaW5kZXg9IHJ3bG9ja19t b25vdG9uaWNfaW5kZXggJSByd2xvY2tfbWF4OworICAgIHBmcz0gcndsb2NrX2FycmF5ICsgaW5k ZXg7CisKKyAgICBpZiAocGZzLT5tX2xvY2suaXNfZnJlZSgpKQogICAgIHsKLSAgICAgIGlmIChw ZnMtPm1fbG9jay5pc19mcmVlKCkpCisgICAgICBpZiAocGZzLT5tX2xvY2suZnJlZV90b19kaXJ0 eSgpKQogICAgICAgewotICAgICAgICBpZiAocGZzLT5tX2xvY2suZnJlZV90b19kaXJ0eSgpKQot ICAgICAgICB7Ci0gICAgICAgICAgcGZzLT5tX2lkZW50aXR5PSBpZGVudGl0eTsKLSAgICAgICAg ICBwZnMtPm1fY2xhc3M9IGtsYXNzOwotICAgICAgICAgIHBmcy0+bV9lbmFibGVkPSBrbGFzcy0+ bV9lbmFibGVkICYmIGZsYWdfZ2xvYmFsX2luc3RydW1lbnRhdGlvbjsKLSAgICAgICAgICBwZnMt Pm1fdGltZWQ9IGtsYXNzLT5tX3RpbWVkOwotICAgICAgICAgIHBmcy0+bV93YWl0X3N0YXQucmVz ZXQoKTsKLSAgICAgICAgICBwZnMtPm1fbG9jay5kaXJ0eV90b19hbGxvY2F0ZWQoKTsKLSAgICAg ICAgICBwZnMtPm1fcmVhZF9sb2NrX3N0YXQucmVzZXQoKTsKLSAgICAgICAgICBwZnMtPm1fd3Jp dGVfbG9ja19zdGF0LnJlc2V0KCk7Ci0gICAgICAgICAgcGZzLT5tX3dyaXRlcj0gTlVMTDsKLSAg ICAgICAgICBwZnMtPm1fcmVhZGVycz0gMDsKLSAgICAgICAgICBwZnMtPm1fbGFzdF93cml0dGVu PSAwOwotICAgICAgICAgIHBmcy0+bV9sYXN0X3JlYWQ9IDA7Ci0gICAgICAgICAgaWYgKGtsYXNz LT5pc19zaW5nbGV0b24oKSkKLSAgICAgICAgICAgIGtsYXNzLT5tX3NpbmdsZXRvbj0gcGZzOwot ICAgICAgICAgIHJldHVybiBwZnM7Ci0gICAgICAgIH0KKyAgICAgICAgcGZzLT5tX2lkZW50aXR5 PSBpZGVudGl0eTsKKyAgICAgICAgcGZzLT5tX2NsYXNzPSBrbGFzczsKKyAgICAgICAgcGZzLT5t X2VuYWJsZWQ9IGtsYXNzLT5tX2VuYWJsZWQgJiYgZmxhZ19nbG9iYWxfaW5zdHJ1bWVudGF0aW9u OworICAgICAgICBwZnMtPm1fdGltZWQ9IGtsYXNzLT5tX3RpbWVkOworICAgICAgICBwZnMtPm1f d2FpdF9zdGF0LnJlc2V0KCk7CisgICAgICAgIHBmcy0+bV9sb2NrLmRpcnR5X3RvX2FsbG9jYXRl ZCgpOworICAgICAgICBwZnMtPm1fcmVhZF9sb2NrX3N0YXQucmVzZXQoKTsKKyAgICAgICAgcGZz LT5tX3dyaXRlX2xvY2tfc3RhdC5yZXNldCgpOworICAgICAgICBwZnMtPm1fd3JpdGVyPSBOVUxM OworICAgICAgICBwZnMtPm1fcmVhZGVycz0gMDsKKyAgICAgICAgcGZzLT5tX2xhc3Rfd3JpdHRl bj0gMDsKKyAgICAgICAgcGZzLT5tX2xhc3RfcmVhZD0gMDsKKyAgICAgICAgaWYgKGtsYXNzLT5p c19zaW5nbGV0b24oKSkKKyAgICAgICAgICBrbGFzcy0+bV9zaW5nbGV0b249IHBmczsKKyAgICAg ICAgcmV0dXJuIHBmczsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTY4OSwzMyArNzA3LDMzIEBA IHZvaWQgZGVzdHJveV9yd2xvY2soUEZTX3J3bG9jayAqcGZzKQogKi8KIFBGU19jb25kKiBjcmVh dGVfY29uZChQRlNfY29uZF9jbGFzcyAqa2xhc3MsIGNvbnN0IHZvaWQgKmlkZW50aXR5KQogewot ICBQRlNfc2NhbiBzY2FuOwotICB1aW50IHJhbmRvbT0gcmFuZG9taXplZF9pbmRleChpZGVudGl0 eSwgY29uZF9tYXgpOworICBzdGF0aWMgdWludCBjb25kX21vbm90b25pY19pbmRleD0gMDsKKyAg dWludCBpbmRleDsKKyAgdWludCBhdHRlbXB0cz0gMDsKKyAgUEZTX2NvbmQgKnBmczsKKworICB3 aGlsZSAoKythdHRlbXB0cyA8PSBjb25kX21heCkKKyAgeworICAgIC8qIFNlZSBjcmVhdGVfbXV0 ZXgoKSAqLworICAgIFBGU19hdG9taWM6OmFkZF91MzIoJiBjb25kX21vbm90b25pY19pbmRleCwg MSk7CisgICAgaW5kZXg9IGNvbmRfbW9ub3RvbmljX2luZGV4ICUgY29uZF9tYXg7CisgICAgcGZz PSBjb25kX2FycmF5ICsgaW5kZXg7CiAKLSAgZm9yIChzY2FuLmluaXQocmFuZG9tLCBjb25kX21h eCk7Ci0gICAgICAgc2Nhbi5oYXNfcGFzcygpOwotICAgICAgIHNjYW4ubmV4dF9wYXNzKCkpCi0g IHsKLSAgICBQRlNfY29uZCAqcGZzPSBjb25kX2FycmF5ICsgc2Nhbi5maXJzdCgpOwotICAgIFBG U19jb25kICpwZnNfbGFzdD0gY29uZF9hcnJheSArIHNjYW4ubGFzdCgpOwotICAgIGZvciAoIDsg cGZzIDwgcGZzX2xhc3Q7IHBmcysrKQorICAgIGlmIChwZnMtPm1fbG9jay5pc19mcmVlKCkpCiAg ICAgewotICAgICAgaWYgKHBmcy0+bV9sb2NrLmlzX2ZyZWUoKSkKKyAgICAgIGlmIChwZnMtPm1f bG9jay5mcmVlX3RvX2RpcnR5KCkpCiAgICAgICB7Ci0gICAgICAgIGlmIChwZnMtPm1fbG9jay5m cmVlX3RvX2RpcnR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBwZnMtPm1faWRlbnRpdHk9IGlk ZW50aXR5OwotICAgICAgICAgIHBmcy0+bV9jbGFzcz0ga2xhc3M7Ci0gICAgICAgICAgcGZzLT5t X2VuYWJsZWQ9IGtsYXNzLT5tX2VuYWJsZWQgJiYgZmxhZ19nbG9iYWxfaW5zdHJ1bWVudGF0aW9u OwotICAgICAgICAgIHBmcy0+bV90aW1lZD0ga2xhc3MtPm1fdGltZWQ7Ci0gICAgICAgICAgcGZz LT5tX2NvbmRfc3RhdC5tX3NpZ25hbF9jb3VudD0gMDsKLSAgICAgICAgICBwZnMtPm1fY29uZF9z dGF0Lm1fYnJvYWRjYXN0X2NvdW50PSAwOwotICAgICAgICAgIHBmcy0+bV93YWl0X3N0YXQucmVz ZXQoKTsKLSAgICAgICAgICBwZnMtPm1fbG9jay5kaXJ0eV90b19hbGxvY2F0ZWQoKTsKLSAgICAg ICAgICBpZiAoa2xhc3MtPmlzX3NpbmdsZXRvbigpKQotICAgICAgICAgICAga2xhc3MtPm1fc2lu Z2xldG9uPSBwZnM7Ci0gICAgICAgICAgcmV0dXJuIHBmczsKLSAgICAgICAgfQorICAgICAgICBw ZnMtPm1faWRlbnRpdHk9IGlkZW50aXR5OworICAgICAgICBwZnMtPm1fY2xhc3M9IGtsYXNzOwor ICAgICAgICBwZnMtPm1fZW5hYmxlZD0ga2xhc3MtPm1fZW5hYmxlZCAmJiBmbGFnX2dsb2JhbF9p bnN0cnVtZW50YXRpb247CisgICAgICAgIHBmcy0+bV90aW1lZD0ga2xhc3MtPm1fdGltZWQ7Cisg ICAgICAgIHBmcy0+bV9jb25kX3N0YXQubV9zaWduYWxfY291bnQ9IDA7CisgICAgICAgIHBmcy0+ bV9jb25kX3N0YXQubV9icm9hZGNhc3RfY291bnQ9IDA7CisgICAgICAgIHBmcy0+bV93YWl0X3N0 YXQucmVzZXQoKTsKKyAgICAgICAgcGZzLT5tX2xvY2suZGlydHlfdG9fYWxsb2NhdGVkKCk7Cisg ICAgICAgIGlmIChrbGFzcy0+aXNfc2luZ2xldG9uKCkpCisgICAgICAgICAga2xhc3MtPm1fc2lu Z2xldG9uPSBwZnM7CisgICAgICAgIHJldHVybiBwZnM7CiAgICAgICB9CiAgICAgfQogICB9CkBA IC03NTksMTE2ICs3NzcsMTE1IEBAIFBGU190aHJlYWQqIFBGU190aHJlYWQ6OmdldF9jdXJyZW50 X3RocmUKIFBGU190aHJlYWQqIGNyZWF0ZV90aHJlYWQoUEZTX3RocmVhZF9jbGFzcyAqa2xhc3Ms IGNvbnN0IHZvaWQgKmlkZW50aXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZyB0 aHJlYWRfaWQpCiB7Ci0gIFBGU19zY2FuIHNjYW47CisgIHN0YXRpYyB1aW50IHRocmVhZF9tb25v dG9uaWNfaW5kZXg9IDA7CiAgIHVpbnQgaW5kZXg7Ci0gIHVpbnQgcmFuZG9tPSByYW5kb21pemVk X2luZGV4KGlkZW50aXR5LCB0aHJlYWRfbWF4KTsKKyAgdWludCBhdHRlbXB0cz0gMDsKKyAgUEZT X3RocmVhZCAqcGZzOworCisgIHdoaWxlICgrK2F0dGVtcHRzIDw9IHRocmVhZF9tYXgpCisgIHsK KyAgICAvKiBTZWUgY3JlYXRlX211dGV4KCkgKi8KKyAgICBQRlNfYXRvbWljOjphZGRfdTMyKCYg dGhyZWFkX21vbm90b25pY19pbmRleCwgMSk7CisgICAgaW5kZXg9IHRocmVhZF9tb25vdG9uaWNf aW5kZXggJSB0aHJlYWRfbWF4OworICAgIHBmcz0gdGhyZWFkX2FycmF5ICsgaW5kZXg7CiAKLSAg Zm9yIChzY2FuLmluaXQocmFuZG9tLCB0aHJlYWRfbWF4KTsKLSAgICAgICBzY2FuLmhhc19wYXNz KCk7Ci0gICAgICAgc2Nhbi5uZXh0X3Bhc3MoKSkKLSAgewotICAgIFBGU190aHJlYWQgKnBmcz0g dGhyZWFkX2FycmF5ICsgc2Nhbi5maXJzdCgpOwotICAgIFBGU190aHJlYWQgKnBmc19sYXN0PSB0 aHJlYWRfYXJyYXkgKyBzY2FuLmxhc3QoKTsKLSAgICBmb3IgKCA7IHBmcyA8IHBmc19sYXN0OyBw ZnMrKykKKyAgICBpZiAocGZzLT5tX2xvY2suaXNfZnJlZSgpKQogICAgIHsKLSAgICAgIGlmIChw ZnMtPm1fbG9jay5pc19mcmVlKCkpCisgICAgICBpZiAocGZzLT5tX2xvY2suZnJlZV90b19kaXJ0 eSgpKQogICAgICAgewotICAgICAgICBpZiAocGZzLT5tX2xvY2suZnJlZV90b19kaXJ0eSgpKQot ICAgICAgICB7Ci0gICAgICAgICAgcGZzLT5tX3RocmVhZF9pbnRlcm5hbF9pZD0KLSAgICAgICAg ICAgIFBGU19hdG9taWM6OmFkZF91MzIoJnRocmVhZF9pbnRlcm5hbF9pZF9jb3VudGVyLCAxKTsK LSAgICAgICAgICBwZnMtPm1fcGFyZW50X3RocmVhZF9pbnRlcm5hbF9pZD0gMDsKLSAgICAgICAg ICBwZnMtPm1fdGhyZWFkX2lkPSB0aHJlYWRfaWQ7Ci0gICAgICAgICAgcGZzLT5tX2V2ZW50X2lk PSAxOwotICAgICAgICAgIHBmcy0+bV9lbmFibGVkPSB0cnVlOwotICAgICAgICAgIHBmcy0+bV9j bGFzcz0ga2xhc3M7Ci0gICAgICAgICAgcGZzLT5tX2V2ZW50c193YWl0c19jb3VudD0gV0FJVF9T VEFDS19CT1RUT007Ci0gICAgICAgICAgcGZzLT5tX3dhaXRzX2hpc3RvcnlfZnVsbD0gZmFsc2U7 Ci0gICAgICAgICAgcGZzLT5tX3dhaXRzX2hpc3RvcnlfaW5kZXg9IDA7Ci0gICAgICAgICAgcGZz LT5tX3N0YWdlc19oaXN0b3J5X2Z1bGw9IGZhbHNlOwotICAgICAgICAgIHBmcy0+bV9zdGFnZXNf aGlzdG9yeV9pbmRleD0gMDsKLSAgICAgICAgICBwZnMtPm1fc3RhdGVtZW50c19oaXN0b3J5X2Z1 bGw9IGZhbHNlOwotICAgICAgICAgIHBmcy0+bV9zdGF0ZW1lbnRzX2hpc3RvcnlfaW5kZXg9IDA7 Ci0KLSAgICAgICAgICBwZnMtPnJlc2V0X3N0YXRzKCk7Ci0KLSAgICAgICAgICBwZnMtPm1fZmls ZW5hbWVfaGFzaF9waW5zPSBOVUxMOwotICAgICAgICAgIHBmcy0+bV90YWJsZV9zaGFyZV9oYXNo X3BpbnM9IE5VTEw7Ci0gICAgICAgICAgcGZzLT5tX3NldHVwX2FjdG9yX2hhc2hfcGlucz0gTlVM TDsKLSAgICAgICAgICBwZnMtPm1fc2V0dXBfb2JqZWN0X2hhc2hfcGlucz0gTlVMTDsKLQotICAg ICAgICAgIHBmcy0+bV91c2VybmFtZV9sZW5ndGg9IDA7Ci0gICAgICAgICAgcGZzLT5tX2hvc3Ru YW1lX2xlbmd0aD0gMDsKLSAgICAgICAgICBwZnMtPm1fZGJuYW1lX2xlbmd0aD0gMDsKLSAgICAg ICAgICBwZnMtPm1fY29tbWFuZD0gMDsKLSAgICAgICAgICBwZnMtPm1fc3RhcnRfdGltZT0gMDsK LSAgICAgICAgICBwZnMtPm1fcHJvY2Vzc2xpc3Rfc3RhdGVfbGVuZ3RoPSAwOwotICAgICAgICAg IHBmcy0+bV9wcm9jZXNzbGlzdF9pbmZvX2xlbmd0aD0gMDsKKyAgICAgICAgcGZzLT5tX3RocmVh ZF9pbnRlcm5hbF9pZD0KKyAgICAgICAgICBQRlNfYXRvbWljOjphZGRfdTMyKCZ0aHJlYWRfaW50 ZXJuYWxfaWRfY291bnRlciwgMSk7CisgICAgICAgIHBmcy0+bV9wYXJlbnRfdGhyZWFkX2ludGVy bmFsX2lkPSAwOworICAgICAgICBwZnMtPm1fdGhyZWFkX2lkPSB0aHJlYWRfaWQ7CisgICAgICAg IHBmcy0+bV9ldmVudF9pZD0gMTsKKyAgICAgICAgcGZzLT5tX2VuYWJsZWQ9IHRydWU7CisgICAg ICAgIHBmcy0+bV9jbGFzcz0ga2xhc3M7CisgICAgICAgIHBmcy0+bV9ldmVudHNfd2FpdHNfY291 bnQ9IFdBSVRfU1RBQ0tfQk9UVE9NOworICAgICAgICBwZnMtPm1fd2FpdHNfaGlzdG9yeV9mdWxs PSBmYWxzZTsKKyAgICAgICAgcGZzLT5tX3dhaXRzX2hpc3RvcnlfaW5kZXg9IDA7CisgICAgICAg IHBmcy0+bV9zdGFnZXNfaGlzdG9yeV9mdWxsPSBmYWxzZTsKKyAgICAgICAgcGZzLT5tX3N0YWdl c19oaXN0b3J5X2luZGV4PSAwOworICAgICAgICBwZnMtPm1fc3RhdGVtZW50c19oaXN0b3J5X2Z1 bGw9IGZhbHNlOworICAgICAgICBwZnMtPm1fc3RhdGVtZW50c19oaXN0b3J5X2luZGV4PSAwOwor CisgICAgICAgIHBmcy0+cmVzZXRfc3RhdHMoKTsKKworICAgICAgICBwZnMtPm1fZmlsZW5hbWVf aGFzaF9waW5zPSBOVUxMOworICAgICAgICBwZnMtPm1fdGFibGVfc2hhcmVfaGFzaF9waW5zPSBO VUxMOworICAgICAgICBwZnMtPm1fc2V0dXBfYWN0b3JfaGFzaF9waW5zPSBOVUxMOworICAgICAg ICBwZnMtPm1fc2V0dXBfb2JqZWN0X2hhc2hfcGlucz0gTlVMTDsKKworICAgICAgICBwZnMtPm1f dXNlcm5hbWVfbGVuZ3RoPSAwOworICAgICAgICBwZnMtPm1faG9zdG5hbWVfbGVuZ3RoPSAwOwor ICAgICAgICBwZnMtPm1fZGJuYW1lX2xlbmd0aD0gMDsKKyAgICAgICAgcGZzLT5tX2NvbW1hbmQ9 IDA7CisgICAgICAgIHBmcy0+bV9zdGFydF90aW1lPSAwOworICAgICAgICBwZnMtPm1fcHJvY2Vz c2xpc3Rfc3RhdGVfbGVuZ3RoPSAwOworICAgICAgICBwZnMtPm1fcHJvY2Vzc2xpc3RfaW5mb19s ZW5ndGg9IDA7CiAKLSAgICAgICAgICBQRlNfZXZlbnRzX3dhaXRzICpjaGlsZF93YWl0OwotICAg ICAgICAgIGZvciAoaW5kZXg9IDA7IGluZGV4IDwgV0FJVF9TVEFDS19TSVpFOyBpbmRleCsrKQot ICAgICAgICAgIHsKLSAgICAgICAgICAgIGNoaWxkX3dhaXQ9ICYgcGZzLT5tX2V2ZW50c193YWl0 c19zdGFja1tpbmRleF07Ci0gICAgICAgICAgICBjaGlsZF93YWl0LT5tX3RocmVhZF9pbnRlcm5h bF9pZD0gcGZzLT5tX3RocmVhZF9pbnRlcm5hbF9pZDsKLSAgICAgICAgICAgIGNoaWxkX3dhaXQt Pm1fZXZlbnRfaWQ9IDA7Ci0gICAgICAgICAgICBjaGlsZF93YWl0LT5tX2V2ZW50X3R5cGU9IEVW RU5UX1RZUEVfU1RBVEVNRU5UOwotICAgICAgICAgICAgY2hpbGRfd2FpdC0+bV93YWl0X2NsYXNz PSBOT19XQUlUX0NMQVNTOwotICAgICAgICAgIH0KLQotICAgICAgICAgIFBGU19ldmVudHNfc3Rh Z2VzICpjaGlsZF9zdGFnZT0gJiBwZnMtPm1fc3RhZ2VfY3VycmVudDsKLSAgICAgICAgICBjaGls ZF9zdGFnZS0+bV90aHJlYWRfaW50ZXJuYWxfaWQ9IHBmcy0+bV90aHJlYWRfaW50ZXJuYWxfaWQ7 Ci0gICAgICAgICAgY2hpbGRfc3RhZ2UtPm1fZXZlbnRfaWQ9IDA7Ci0gICAgICAgICAgY2hpbGRf c3RhZ2UtPm1fZXZlbnRfdHlwZT0gRVZFTlRfVFlQRV9TVEFURU1FTlQ7Ci0gICAgICAgICAgY2hp bGRfc3RhZ2UtPm1fY2xhc3M9IE5VTEw7Ci0gICAgICAgICAgY2hpbGRfc3RhZ2UtPm1fdGltZXJf c3RhcnQ9IDA7Ci0gICAgICAgICAgY2hpbGRfc3RhZ2UtPm1fdGltZXJfZW5kPSAwOwotICAgICAg ICAgIGNoaWxkX3N0YWdlLT5tX3NvdXJjZV9maWxlPSBOVUxMOwotICAgICAgICAgIGNoaWxkX3N0 YWdlLT5tX3NvdXJjZV9saW5lPSAwOworICAgICAgICBQRlNfZXZlbnRzX3dhaXRzICpjaGlsZF93 YWl0OworICAgICAgICBmb3IgKGluZGV4PSAwOyBpbmRleCA8IFdBSVRfU1RBQ0tfU0laRTsgaW5k ZXgrKykKKyAgICAgICAgeworICAgICAgICAgIGNoaWxkX3dhaXQ9ICYgcGZzLT5tX2V2ZW50c193 YWl0c19zdGFja1tpbmRleF07CisgICAgICAgICAgY2hpbGRfd2FpdC0+bV90aHJlYWRfaW50ZXJu YWxfaWQ9IHBmcy0+bV90aHJlYWRfaW50ZXJuYWxfaWQ7CisgICAgICAgICAgY2hpbGRfd2FpdC0+ bV9ldmVudF9pZD0gMDsKKyAgICAgICAgICBjaGlsZF93YWl0LT5tX2V2ZW50X3R5cGU9IEVWRU5U X1RZUEVfU1RBVEVNRU5UOworICAgICAgICAgIGNoaWxkX3dhaXQtPm1fd2FpdF9jbGFzcz0gTk9f V0FJVF9DTEFTUzsKKyAgICAgICAgfQogCi0gICAgICAgICAgUEZTX2V2ZW50c19zdGF0ZW1lbnRz ICpjaGlsZF9zdGF0ZW1lbnQ7Ci0gICAgICAgICAgZm9yIChpbmRleD0gMDsgaW5kZXggPCBzdGF0 ZW1lbnRfc3RhY2tfbWF4OyBpbmRleCsrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGNoaWxk X3N0YXRlbWVudD0gJiBwZnMtPm1fc3RhdGVtZW50X3N0YWNrW2luZGV4XTsKLSAgICAgICAgICAg IGNoaWxkX3N0YXRlbWVudC0+bV90aHJlYWRfaW50ZXJuYWxfaWQ9IHBmcy0+bV90aHJlYWRfaW50 ZXJuYWxfaWQ7Ci0gICAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fZXZlbnRfaWQ9IDA7Ci0g ICAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fZXZlbnRfdHlwZT0gRVZFTlRfVFlQRV9TVEFU RU1FTlQ7Ci0gICAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fY2xhc3M9IE5VTEw7Ci0gICAg ICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fdGltZXJfc3RhcnQ9IDA7Ci0gICAgICAgICAgICBj aGlsZF9zdGF0ZW1lbnQtPm1fdGltZXJfZW5kPSAwOwotICAgICAgICAgICAgY2hpbGRfc3RhdGVt ZW50LT5tX2xvY2tfdGltZT0gMDsKLSAgICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+bV9zb3Vy Y2VfZmlsZT0gTlVMTDsKLSAgICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+bV9zb3VyY2VfbGlu ZT0gMDsKLSAgICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+bV9jdXJyZW50X3NjaGVtYV9uYW1l X2xlbmd0aD0gMDsKLSAgICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+bV9zcWx0ZXh0X2xlbmd0 aD0gMDsKLQotICAgICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX21lc3NhZ2VfdGV4dFswXT0g J1wwJzsKLSAgICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+bV9zcWxfZXJybm89IDA7Ci0gICAg ICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fc3Fsc3RhdGVbMF09ICdcMCc7Ci0gICAgICAgICAg ICBjaGlsZF9zdGF0ZW1lbnQtPm1fZXJyb3JfY291bnQ9IDA7Ci0gICAgICAgICAgICBjaGlsZF9z dGF0ZW1lbnQtPm1fd2FybmluZ19jb3VudD0gMDsKLSAgICAgICAgICAgIGNoaWxkX3N0YXRlbWVu dC0+bV9yb3dzX2FmZmVjdGVkPSAwOwotCi0gICAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1f cm93c19zZW50PSAwOwotICAgICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX3Jvd3NfZXhhbWlu ZWQ9IDA7Ci0gICAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fY3JlYXRlZF90bXBfZGlza190 YWJsZXM9IDA7Ci0gICAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fY3JlYXRlZF90bXBfdGFi bGVzPSAwOwotICAgICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX3NlbGVjdF9mdWxsX2pvaW49 IDA7Ci0gICAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fc2VsZWN0X2Z1bGxfcmFuZ2Vfam9p bj0gMDsKLSAgICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+bV9zZWxlY3RfcmFuZ2U9IDA7Ci0g ICAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fc2VsZWN0X3JhbmdlX2NoZWNrPSAwOwotICAg ICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX3NlbGVjdF9zY2FuPSAwOwotICAgICAgICAgICAg Y2hpbGRfc3RhdGVtZW50LT5tX3NvcnRfbWVyZ2VfcGFzc2VzPSAwOwotICAgICAgICAgICAgY2hp bGRfc3RhdGVtZW50LT5tX3NvcnRfcmFuZ2U9IDA7Ci0gICAgICAgICAgICBjaGlsZF9zdGF0ZW1l bnQtPm1fc29ydF9yb3dzPSAwOwotICAgICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX3NvcnRf c2Nhbj0gMDsKLSAgICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+bV9ub19pbmRleF91c2VkPSAw OwotICAgICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX25vX2dvb2RfaW5kZXhfdXNlZD0gMDsK LSAgICAgICAgICB9Ci0gICAgICAgICAgcGZzLT5tX2V2ZW50c19zdGF0ZW1lbnRzX2NvdW50PSAw OworICAgICAgICBQRlNfZXZlbnRzX3N0YWdlcyAqY2hpbGRfc3RhZ2U9ICYgcGZzLT5tX3N0YWdl X2N1cnJlbnQ7CisgICAgICAgIGNoaWxkX3N0YWdlLT5tX3RocmVhZF9pbnRlcm5hbF9pZD0gcGZz LT5tX3RocmVhZF9pbnRlcm5hbF9pZDsKKyAgICAgICAgY2hpbGRfc3RhZ2UtPm1fZXZlbnRfaWQ9 IDA7CisgICAgICAgIGNoaWxkX3N0YWdlLT5tX2V2ZW50X3R5cGU9IEVWRU5UX1RZUEVfU1RBVEVN RU5UOworICAgICAgICBjaGlsZF9zdGFnZS0+bV9jbGFzcz0gTlVMTDsKKyAgICAgICAgY2hpbGRf c3RhZ2UtPm1fdGltZXJfc3RhcnQ9IDA7CisgICAgICAgIGNoaWxkX3N0YWdlLT5tX3RpbWVyX2Vu ZD0gMDsKKyAgICAgICAgY2hpbGRfc3RhZ2UtPm1fc291cmNlX2ZpbGU9IE5VTEw7CisgICAgICAg IGNoaWxkX3N0YWdlLT5tX3NvdXJjZV9saW5lPSAwOwogCi0gICAgICAgICAgcGZzLT5tX2xvY2su ZGlydHlfdG9fYWxsb2NhdGVkKCk7Ci0gICAgICAgICAgcmV0dXJuIHBmczsKKyAgICAgICAgUEZT X2V2ZW50c19zdGF0ZW1lbnRzICpjaGlsZF9zdGF0ZW1lbnQ7CisgICAgICAgIGZvciAoaW5kZXg9 IDA7IGluZGV4IDwgc3RhdGVtZW50X3N0YWNrX21heDsgaW5kZXgrKykKKyAgICAgICAgeworICAg ICAgICAgIGNoaWxkX3N0YXRlbWVudD0gJiBwZnMtPm1fc3RhdGVtZW50X3N0YWNrW2luZGV4XTsK KyAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fdGhyZWFkX2ludGVybmFsX2lkPSBwZnMtPm1f dGhyZWFkX2ludGVybmFsX2lkOworICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+bV9ldmVudF9p ZD0gMDsKKyAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fZXZlbnRfdHlwZT0gRVZFTlRfVFlQ RV9TVEFURU1FTlQ7CisgICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX2NsYXNzPSBOVUxMOwor ICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+bV90aW1lcl9zdGFydD0gMDsKKyAgICAgICAgICBj aGlsZF9zdGF0ZW1lbnQtPm1fdGltZXJfZW5kPSAwOworICAgICAgICAgIGNoaWxkX3N0YXRlbWVu dC0+bV9sb2NrX3RpbWU9IDA7CisgICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX3NvdXJjZV9m aWxlPSBOVUxMOworICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+bV9zb3VyY2VfbGluZT0gMDsK KyAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fY3VycmVudF9zY2hlbWFfbmFtZV9sZW5ndGg9 IDA7CisgICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX3NxbHRleHRfbGVuZ3RoPSAwOworCisg ICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX21lc3NhZ2VfdGV4dFswXT0gJ1wwJzsKKyAgICAg ICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fc3FsX2Vycm5vPSAwOworICAgICAgICAgIGNoaWxkX3N0 YXRlbWVudC0+bV9zcWxzdGF0ZVswXT0gJ1wwJzsKKyAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQt Pm1fZXJyb3JfY291bnQ9IDA7CisgICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX3dhcm5pbmdf Y291bnQ9IDA7CisgICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX3Jvd3NfYWZmZWN0ZWQ9IDA7 CisKKyAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fcm93c19zZW50PSAwOworICAgICAgICAg IGNoaWxkX3N0YXRlbWVudC0+bV9yb3dzX2V4YW1pbmVkPSAwOworICAgICAgICAgIGNoaWxkX3N0 YXRlbWVudC0+bV9jcmVhdGVkX3RtcF9kaXNrX3RhYmxlcz0gMDsKKyAgICAgICAgICBjaGlsZF9z dGF0ZW1lbnQtPm1fY3JlYXRlZF90bXBfdGFibGVzPSAwOworICAgICAgICAgIGNoaWxkX3N0YXRl bWVudC0+bV9zZWxlY3RfZnVsbF9qb2luPSAwOworICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+ bV9zZWxlY3RfZnVsbF9yYW5nZV9qb2luPSAwOworICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+ bV9zZWxlY3RfcmFuZ2U9IDA7CisgICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX3NlbGVjdF9y YW5nZV9jaGVjaz0gMDsKKyAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fc2VsZWN0X3NjYW49 IDA7CisgICAgICAgICAgY2hpbGRfc3RhdGVtZW50LT5tX3NvcnRfbWVyZ2VfcGFzc2VzPSAwOwor ICAgICAgICAgIGNoaWxkX3N0YXRlbWVudC0+bV9zb3J0X3JhbmdlPSAwOworICAgICAgICAgIGNo aWxkX3N0YXRlbWVudC0+bV9zb3J0X3Jvd3M9IDA7CisgICAgICAgICAgY2hpbGRfc3RhdGVtZW50 LT5tX3NvcnRfc2Nhbj0gMDsKKyAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fbm9faW5kZXhf dXNlZD0gMDsKKyAgICAgICAgICBjaGlsZF9zdGF0ZW1lbnQtPm1fbm9fZ29vZF9pbmRleF91c2Vk PSAwOwogICAgICAgICB9CisgICAgICAgIHBmcy0+bV9ldmVudHNfc3RhdGVtZW50c19jb3VudD0g MDsKKworICAgICAgICBwZnMtPm1fbG9jay5kaXJ0eV90b19hbGxvY2F0ZWQoKTsKKyAgICAgICAg cmV0dXJuIHBmczsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTk3NCw3ICs5OTEsNiBAQCBmaW5k X29yX2NyZWF0ZV9maWxlKFBGU190aHJlYWQgKnRocmVhZCwKICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnQgbGVuKQogewogICBQRlNfZmlsZSAqcGZzOwotICBQ RlNfc2NhbiBzY2FuOwogCiAgIGlmICghIGZpbGVuYW1lX2hhc2hfaW5pdGVkKQogICB7CkBAIC0x MDc2LDYgKzEwOTIsMTAgQEAgZmluZF9vcl9jcmVhdGVfZmlsZShQRlNfdGhyZWFkICp0aHJlYWQs CiAgIFBGU19maWxlICoqZW50cnk7CiAgIHVpbnQgcmV0cnlfY291bnQ9IDA7CiAgIGNvbnN0IHVp bnQgcmV0cnlfbWF4PSAzOworICBzdGF0aWMgdWludCBmaWxlX21vbm90b25pY19pbmRleD0gMDsK KyAgdWludCBpbmRleDsKKyAgdWludCBhdHRlbXB0cz0gMDsKKwogc2VhcmNoOgogICBlbnRyeT0g cmVpbnRlcnByZXRfY2FzdDxQRlNfZmlsZSoqPgogICAgIChsZl9oYXNoX3NlYXJjaCgmZmlsZW5h bWVfaGFzaCwgdGhyZWFkLT5tX2ZpbGVuYW1lX2hhc2hfcGlucywKQEAgLTEwODgsNjAgKzExMDgs NTYgQEAgc2VhcmNoOgogICAgIHJldHVybiBwZnM7CiAgIH0KIAotICAvKiBmaWxlbmFtZSBpcyBu b3QgY29uc3RhbnQsIGp1c3QgdXNpbmcgaXQgZm9yIG5vaXNlIG9uIGNyZWF0ZSAqLwotICB1aW50 IHJhbmRvbT0gcmFuZG9taXplZF9pbmRleChmaWxlbmFtZSwgZmlsZV9tYXgpOwogCi0gIGZvciAo c2Nhbi5pbml0KHJhbmRvbSwgZmlsZV9tYXgpOwotICAgICAgIHNjYW4uaGFzX3Bhc3MoKTsKLSAg ICAgICBzY2FuLm5leHRfcGFzcygpKQotICB7Ci0gICAgcGZzPSBmaWxlX2FycmF5ICsgc2Nhbi5m aXJzdCgpOwotICAgIFBGU19maWxlICpwZnNfbGFzdD0gZmlsZV9hcnJheSArIHNjYW4ubGFzdCgp OwotICAgIGZvciAoIDsgcGZzIDwgcGZzX2xhc3Q7IHBmcysrKQorICB3aGlsZSAoKythdHRlbXB0 cyA8PSBmaWxlX21heCkKKyAgeworICAgIC8qIFNlZSBjcmVhdGVfbXV0ZXgoKSAqLworICAgIFBG U19hdG9taWM6OmFkZF91MzIoJiBmaWxlX21vbm90b25pY19pbmRleCwgMSk7CisgICAgaW5kZXg9 IGZpbGVfbW9ub3RvbmljX2luZGV4ICUgZmlsZV9tYXg7CisgICAgcGZzPSBmaWxlX2FycmF5ICsg aW5kZXg7CisKKyAgICBpZiAocGZzLT5tX2xvY2suaXNfZnJlZSgpKQogICAgIHsKLSAgICAgIGlm IChwZnMtPm1fbG9jay5pc19mcmVlKCkpCisgICAgICBpZiAocGZzLT5tX2xvY2suZnJlZV90b19k aXJ0eSgpKQogICAgICAgewotICAgICAgICBpZiAocGZzLT5tX2xvY2suZnJlZV90b19kaXJ0eSgp KQorICAgICAgICBwZnMtPm1fY2xhc3M9IGtsYXNzOworICAgICAgICBwZnMtPm1fZW5hYmxlZD0g a2xhc3MtPm1fZW5hYmxlZCAmJiBmbGFnX2dsb2JhbF9pbnN0cnVtZW50YXRpb247CisgICAgICAg IHBmcy0+bV90aW1lZD0ga2xhc3MtPm1fdGltZWQ7CisgICAgICAgIHN0cm5jcHkocGZzLT5tX2Zp bGVuYW1lLCBub3JtYWxpemVkX2ZpbGVuYW1lLCBub3JtYWxpemVkX2xlbmd0aCk7CisgICAgICAg IHBmcy0+bV9maWxlbmFtZVtub3JtYWxpemVkX2xlbmd0aF09ICdcMCc7CisgICAgICAgIHBmcy0+ bV9maWxlbmFtZV9sZW5ndGg9IG5vcm1hbGl6ZWRfbGVuZ3RoOworICAgICAgICBwZnMtPm1fd2Fp dF9zdGF0LnJlc2V0KCk7CisgICAgICAgIHBmcy0+bV9maWxlX3N0YXQubV9vcGVuX2NvdW50PSAx OworICAgICAgICBwZnMtPm1fZmlsZV9zdGF0Lm1faW9fc3RhdC5yZXNldCgpOworCisgICAgICAg IGludCByZXM7CisgICAgICAgIHJlcz0gbGZfaGFzaF9pbnNlcnQoJmZpbGVuYW1lX2hhc2gsIHRo cmVhZC0+bV9maWxlbmFtZV9oYXNoX3BpbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnBmcyk7CisgICAgICAgIGlmIChsaWtlbHkocmVzID09IDApKQogICAgICAgICB7Ci0gICAgICAg ICAgcGZzLT5tX2NsYXNzPSBrbGFzczsKLSAgICAgICAgICBwZnMtPm1fZW5hYmxlZD0ga2xhc3Mt Pm1fZW5hYmxlZCAmJiBmbGFnX2dsb2JhbF9pbnN0cnVtZW50YXRpb247Ci0gICAgICAgICAgcGZz LT5tX3RpbWVkPSBrbGFzcy0+bV90aW1lZDsKLSAgICAgICAgICBzdHJuY3B5KHBmcy0+bV9maWxl bmFtZSwgbm9ybWFsaXplZF9maWxlbmFtZSwgbm9ybWFsaXplZF9sZW5ndGgpOwotICAgICAgICAg IHBmcy0+bV9maWxlbmFtZVtub3JtYWxpemVkX2xlbmd0aF09ICdcMCc7Ci0gICAgICAgICAgcGZz LT5tX2ZpbGVuYW1lX2xlbmd0aD0gbm9ybWFsaXplZF9sZW5ndGg7Ci0gICAgICAgICAgcGZzLT5t X3dhaXRfc3RhdC5yZXNldCgpOwotICAgICAgICAgIHBmcy0+bV9maWxlX3N0YXQubV9vcGVuX2Nv dW50PSAxOwotICAgICAgICAgIHBmcy0+bV9maWxlX3N0YXQubV9pb19zdGF0LnJlc2V0KCk7Ci0K LSAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgIHJlcz0gbGZfaGFzaF9pbnNlcnQoJmZpbGVu YW1lX2hhc2gsIHRocmVhZC0+bV9maWxlbmFtZV9oYXNoX3BpbnMsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmcGZzKTsKLSAgICAgICAgICBpZiAobGlrZWx5KHJlcyA9PSAwKSkKLSAg ICAgICAgICB7Ci0gICAgICAgICAgICBwZnMtPm1fbG9jay5kaXJ0eV90b19hbGxvY2F0ZWQoKTsK LSAgICAgICAgICAgIGlmIChrbGFzcy0+aXNfc2luZ2xldG9uKCkpCi0gICAgICAgICAgICAgIGts YXNzLT5tX3NpbmdsZXRvbj0gcGZzOwotICAgICAgICAgICAgcmV0dXJuIHBmczsKLSAgICAgICAg ICB9CisgICAgICAgICAgcGZzLT5tX2xvY2suZGlydHlfdG9fYWxsb2NhdGVkKCk7CisgICAgICAg ICAgaWYgKGtsYXNzLT5pc19zaW5nbGV0b24oKSkKKyAgICAgICAgICAgIGtsYXNzLT5tX3Npbmds ZXRvbj0gcGZzOworICAgICAgICAgIHJldHVybiBwZnM7CisgICAgICAgIH0KIAotICAgICAgICAg IHBmcy0+bV9sb2NrLmRpcnR5X3RvX2ZyZWUoKTsKKyAgICAgICAgcGZzLT5tX2xvY2suZGlydHlf dG9fZnJlZSgpOwogCi0gICAgICAgICAgaWYgKHJlcyA+IDApCisgICAgICAgIGlmIChyZXMgPiAw KQorICAgICAgICB7CisgICAgICAgICAgLyogRHVwbGljYXRlIGluc2VydCBieSBhbm90aGVyIHRo cmVhZCAqLworICAgICAgICAgIGlmICgrK3JldHJ5X2NvdW50ID4gcmV0cnlfbWF4KQogICAgICAg ICAgIHsKLSAgICAgICAgICAgIC8qIER1cGxpY2F0ZSBpbnNlcnQgYnkgYW5vdGhlciB0aHJlYWQg Ki8KLSAgICAgICAgICAgIGlmICgrK3JldHJ5X2NvdW50ID4gcmV0cnlfbWF4KQotICAgICAgICAg ICAgewotICAgICAgICAgICAgICAvKiBBdm9pZCBpbmZpbml0ZSBsb29wcyAqLwotICAgICAgICAg ICAgICBmaWxlX2xvc3QrKzsKLSAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAg ICB9Ci0gICAgICAgICAgICBnb3RvIHNlYXJjaDsKKyAgICAgICAgICAgIC8qIEF2b2lkIGluZmlu aXRlIGxvb3BzICovCisgICAgICAgICAgICBmaWxlX2xvc3QrKzsKKyAgICAgICAgICAgIHJldHVy biBOVUxMOwogICAgICAgICAgIH0KLQotICAgICAgICAgIC8qIE9PTSBpbiBsZl9oYXNoX2luc2Vy dCAqLwotICAgICAgICAgIGZpbGVfbG9zdCsrOwotICAgICAgICAgIHJldHVybiBOVUxMOworICAg ICAgICAgIGdvdG8gc2VhcmNoOwogICAgICAgICB9CisKKyAgICAgICAgLyogT09NIGluIGxmX2hh c2hfaW5zZXJ0ICovCisgICAgICAgIGZpbGVfbG9zdCsrOworICAgICAgICByZXR1cm4gTlVMTDsK ICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTExOTgsMzUgKzEyMTQsMzUgQEAgdm9pZCBkZXN0cm95 X2ZpbGUoUEZTX3RocmVhZCAqdGhyZWFkLCBQRgogUEZTX3RhYmxlKiBjcmVhdGVfdGFibGUoUEZT X3RhYmxlX3NoYXJlICpzaGFyZSwgUEZTX3RocmVhZCAqb3BlbmluZ190aHJlYWQsCiAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppZGVudGl0eSkKIHsKLSAgUEZTX3NjYW4gc2Nh bjsKLSAgdWludCByYW5kb209IHJhbmRvbWl6ZWRfaW5kZXgoaWRlbnRpdHksIHRhYmxlX21heCk7 CisgIHN0YXRpYyB1aW50IHRhYmxlX21vbm90b25pY19pbmRleD0gMDsKKyAgdWludCBpbmRleDsK KyAgdWludCBhdHRlbXB0cz0gMDsKKyAgUEZTX3RhYmxlICpwZnM7CisKKyAgd2hpbGUgKCsrYXR0 ZW1wdHMgPD0gdGFibGVfbWF4KQorICB7CisgICAgLyogU2VlIGNyZWF0ZV9tdXRleCgpICovCisg ICAgUEZTX2F0b21pYzo6YWRkX3UzMigmIHRhYmxlX21vbm90b25pY19pbmRleCwgMSk7CisgICAg aW5kZXg9IHRhYmxlX21vbm90b25pY19pbmRleCAlIHRhYmxlX21heDsKKyAgICBwZnM9IHRhYmxl X2FycmF5ICsgaW5kZXg7CiAKLSAgZm9yIChzY2FuLmluaXQocmFuZG9tLCB0YWJsZV9tYXgpOwot ICAgICAgIHNjYW4uaGFzX3Bhc3MoKTsKLSAgICAgICBzY2FuLm5leHRfcGFzcygpKQotICB7Ci0g ICAgUEZTX3RhYmxlICpwZnM9IHRhYmxlX2FycmF5ICsgc2Nhbi5maXJzdCgpOwotICAgIFBGU190 YWJsZSAqcGZzX2xhc3Q9IHRhYmxlX2FycmF5ICsgc2Nhbi5sYXN0KCk7Ci0gICAgZm9yICggOyBw ZnMgPCBwZnNfbGFzdDsgcGZzKyspCisgICAgaWYgKHBmcy0+bV9sb2NrLmlzX2ZyZWUoKSkKICAg ICB7Ci0gICAgICBpZiAocGZzLT5tX2xvY2suaXNfZnJlZSgpKQorICAgICAgaWYgKHBmcy0+bV9s b2NrLmZyZWVfdG9fZGlydHkoKSkKICAgICAgIHsKLSAgICAgICAgaWYgKHBmcy0+bV9sb2NrLmZy ZWVfdG9fZGlydHkoKSkKLSAgICAgICAgewotICAgICAgICAgIHBmcy0+bV9pZGVudGl0eT0gaWRl bnRpdHk7Ci0gICAgICAgICAgcGZzLT5tX3NoYXJlPSBzaGFyZTsKLSAgICAgICAgICBwZnMtPm1f aW9fZW5hYmxlZD0gc2hhcmUtPm1fZW5hYmxlZCAmJgotICAgICAgICAgICAgZmxhZ19nbG9iYWxf aW5zdHJ1bWVudGF0aW9uICYmIGdsb2JhbF90YWJsZV9pb19jbGFzcy5tX2VuYWJsZWQ7Ci0gICAg ICAgICAgcGZzLT5tX2lvX3RpbWVkPSBzaGFyZS0+bV90aW1lZCAmJiBnbG9iYWxfdGFibGVfaW9f Y2xhc3MubV90aW1lZDsKLSAgICAgICAgICBwZnMtPm1fbG9ja19lbmFibGVkPSBzaGFyZS0+bV9l bmFibGVkICYmCi0gICAgICAgICAgICBmbGFnX2dsb2JhbF9pbnN0cnVtZW50YXRpb24gJiYgZ2xv YmFsX3RhYmxlX2xvY2tfY2xhc3MubV9lbmFibGVkOwotICAgICAgICAgIHBmcy0+bV9sb2NrX3Rp bWVkPSBzaGFyZS0+bV90aW1lZCAmJiBnbG9iYWxfdGFibGVfbG9ja19jbGFzcy5tX3RpbWVkOwot ICAgICAgICAgIHNoYXJlLT5pbmNfcmVmY291bnQoKTsKLSAgICAgICAgICBwZnMtPm1fdGFibGVf c3RhdC5yZXNldCgpOwotICAgICAgICAgIHBmcy0+bV90aHJlYWRfb3duZXI9IG9wZW5pbmdfdGhy ZWFkOwotICAgICAgICAgIHBmcy0+bV9sb2NrLmRpcnR5X3RvX2FsbG9jYXRlZCgpOwotICAgICAg ICAgIHJldHVybiBwZnM7Ci0gICAgICAgIH0KKyAgICAgICAgcGZzLT5tX2lkZW50aXR5PSBpZGVu dGl0eTsKKyAgICAgICAgcGZzLT5tX3NoYXJlPSBzaGFyZTsKKyAgICAgICAgcGZzLT5tX2lvX2Vu YWJsZWQ9IHNoYXJlLT5tX2VuYWJsZWQgJiYKKyAgICAgICAgICBmbGFnX2dsb2JhbF9pbnN0cnVt ZW50YXRpb24gJiYgZ2xvYmFsX3RhYmxlX2lvX2NsYXNzLm1fZW5hYmxlZDsKKyAgICAgICAgcGZz LT5tX2lvX3RpbWVkPSBzaGFyZS0+bV90aW1lZCAmJiBnbG9iYWxfdGFibGVfaW9fY2xhc3MubV90 aW1lZDsKKyAgICAgICAgcGZzLT5tX2xvY2tfZW5hYmxlZD0gc2hhcmUtPm1fZW5hYmxlZCAmJgor ICAgICAgICAgIGZsYWdfZ2xvYmFsX2luc3RydW1lbnRhdGlvbiAmJiBnbG9iYWxfdGFibGVfbG9j a19jbGFzcy5tX2VuYWJsZWQ7CisgICAgICAgIHBmcy0+bV9sb2NrX3RpbWVkPSBzaGFyZS0+bV90 aW1lZCAmJiBnbG9iYWxfdGFibGVfbG9ja19jbGFzcy5tX3RpbWVkOworICAgICAgICBzaGFyZS0+ aW5jX3JlZmNvdW50KCk7CisgICAgICAgIHBmcy0+bV90YWJsZV9zdGF0LnJlc2V0KCk7CisgICAg ICAgIHBmcy0+bV90aHJlYWRfb3duZXI9IG9wZW5pbmdfdGhyZWFkOworICAgICAgICBwZnMtPm1f bG9jay5kaXJ0eV90b19hbGxvY2F0ZWQoKTsKKyAgICAgICAgcmV0dXJuIHBmczsKICAgICAgIH0K ICAgICB9CiAgIH0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL3BlcmZzY2hlbWEvcGZzX2lu c3RyX2NsYXNzLmNjJwotLS0gYS9zdG9yYWdlL3BlcmZzY2hlbWEvcGZzX2luc3RyX2NsYXNzLmNj CTIwMTEtMDgtMDMgMDc6MDI6MDUgKzAwMDAKKysrIGIvc3RvcmFnZS9wZXJmc2NoZW1hL3Bmc19p bnN0cl9jbGFzcy5jYwkyMDExLTA4LTA5IDE2OjM5OjE2ICswMDAwCkBAIC0xMDQ1LDYgKzEwNDUs MTAgQEAgUEZTX3RhYmxlX3NoYXJlKiBmaW5kX29yX2NyZWF0ZV90YWJsZV9zaAogICBjb25zdCB1 aW50IHJldHJ5X21heD0gMzsKICAgYm9vbCBlbmFibGVkPSB0cnVlOwogICBib29sIHRpbWVkPSB0 cnVlOworICBzdGF0aWMgdWludCB0YWJsZV9zaGFyZV9tb25vdG9uaWNfaW5kZXg9IDA7CisgIHVp bnQgaW5kZXg7CisgIHVpbnQgYXR0ZW1wdHM9IDA7CisgIFBGU190YWJsZV9zaGFyZSAqcGZzOwog CiBzZWFyY2g6CiAgIGVudHJ5PSByZWludGVycHJldF9jYXN0PFBGU190YWJsZV9zaGFyZSoqPgpA QCAtMTA1Miw3ICsxMDU2LDYgQEAgc2VhcmNoOgogICAgICAgICAgICAgICAgICAgICBrZXkubV9o YXNoX2tleSwga2V5Lm1fa2V5X2xlbmd0aCkpOwogICBpZiAoZW50cnkgJiYgKGVudHJ5ICE9IE1Z X0VSUlBUUikpCiAgIHsKLSAgICBQRlNfdGFibGVfc2hhcmUgKnBmczsKICAgICBwZnM9ICplbnRy eTsKICAgICBwZnMtPmluY19yZWZjb3VudCgpIDsKICAgICBpZiAoY29tcGFyZV9rZXlzKHBmcywg c2hhcmUpICE9IDApCkBAIC0xMDgwLDU4ICsxMDgzLDUzIEBAIHNlYXJjaDoKICAgICAqLwogICB9 CiAKLSAgUEZTX3NjYW4gc2NhbjsKLSAgdWludCByYW5kb209IHJhbmRvbWl6ZWRfaW5kZXgodGFi bGVfbmFtZSwgdGFibGVfc2hhcmVfbWF4KTsKLQotICBmb3IgKHNjYW4uaW5pdChyYW5kb20sIHRh YmxlX3NoYXJlX21heCk7Ci0gICAgICAgc2Nhbi5oYXNfcGFzcygpOwotICAgICAgIHNjYW4ubmV4 dF9wYXNzKCkpCisgIHdoaWxlICgrK2F0dGVtcHRzIDw9IHRhYmxlX3NoYXJlX21heCkKICAgewot ICAgIFBGU190YWJsZV9zaGFyZSAqcGZzPSB0YWJsZV9zaGFyZV9hcnJheSArIHNjYW4uZmlyc3Qo KTsKLSAgICBQRlNfdGFibGVfc2hhcmUgKnBmc19sYXN0PSB0YWJsZV9zaGFyZV9hcnJheSArIHNj YW4ubGFzdCgpOwotICAgIGZvciAoIDsgcGZzIDwgcGZzX2xhc3Q7IHBmcysrKQorICAgIC8qIFNl ZSBjcmVhdGVfbXV0ZXgoKSAqLworICAgIFBGU19hdG9taWM6OmFkZF91MzIoJiB0YWJsZV9zaGFy ZV9tb25vdG9uaWNfaW5kZXgsIDEpOworICAgIGluZGV4PSB0YWJsZV9zaGFyZV9tb25vdG9uaWNf aW5kZXggJSB0YWJsZV9zaGFyZV9tYXg7CisgICAgcGZzPSB0YWJsZV9zaGFyZV9hcnJheSArIGlu ZGV4OworCisgICAgaWYgKHBmcy0+bV9sb2NrLmlzX2ZyZWUoKSkKICAgICB7Ci0gICAgICBpZiAo cGZzLT5tX2xvY2suaXNfZnJlZSgpKQorICAgICAgaWYgKHBmcy0+bV9sb2NrLmZyZWVfdG9fZGly dHkoKSkKICAgICAgIHsKLSAgICAgICAgaWYgKHBmcy0+bV9sb2NrLmZyZWVfdG9fZGlydHkoKSkK KyAgICAgICAgcGZzLT5tX2tleT0ga2V5OworICAgICAgICBwZnMtPm1fc2NoZW1hX25hbWU9ICZw ZnMtPm1fa2V5Lm1faGFzaF9rZXlbMV07CisgICAgICAgIHBmcy0+bV9zY2hlbWFfbmFtZV9sZW5n dGg9IHNjaGVtYV9uYW1lX2xlbmd0aDsKKyAgICAgICAgcGZzLT5tX3RhYmxlX25hbWU9ICZwZnMt Pm1fa2V5Lm1faGFzaF9rZXlbc2NoZW1hX25hbWVfbGVuZ3RoICsgMl07CisgICAgICAgIHBmcy0+ bV90YWJsZV9uYW1lX2xlbmd0aD0gdGFibGVfbmFtZV9sZW5ndGg7CisgICAgICAgIHBmcy0+bV9l bmFibGVkPSBlbmFibGVkOworICAgICAgICBwZnMtPm1fdGltZWQ9IHRpbWVkOworICAgICAgICBw ZnMtPmluaXRfcmVmY291bnQoKTsKKyAgICAgICAgcGZzLT5tX3RhYmxlX3N0YXQucmVzZXQoKTsK KyAgICAgICAgc2V0X2tleXMocGZzLCBzaGFyZSk7CisKKyAgICAgICAgaW50IHJlczsKKyAgICAg ICAgcmVzPSBsZl9oYXNoX2luc2VydCgmdGFibGVfc2hhcmVfaGFzaCwgcGlucywgJnBmcyk7Cisg ICAgICAgIGlmIChsaWtlbHkocmVzID09IDApKQogICAgICAgICB7Ci0gICAgICAgICAgcGZzLT5t X2tleT0ga2V5OwotICAgICAgICAgIHBmcy0+bV9zY2hlbWFfbmFtZT0gJnBmcy0+bV9rZXkubV9o YXNoX2tleVsxXTsKLSAgICAgICAgICBwZnMtPm1fc2NoZW1hX25hbWVfbGVuZ3RoPSBzY2hlbWFf bmFtZV9sZW5ndGg7Ci0gICAgICAgICAgcGZzLT5tX3RhYmxlX25hbWU9ICZwZnMtPm1fa2V5Lm1f aGFzaF9rZXlbc2NoZW1hX25hbWVfbGVuZ3RoICsgMl07Ci0gICAgICAgICAgcGZzLT5tX3RhYmxl X25hbWVfbGVuZ3RoPSB0YWJsZV9uYW1lX2xlbmd0aDsKLSAgICAgICAgICBwZnMtPm1fZW5hYmxl ZD0gZW5hYmxlZDsKLSAgICAgICAgICBwZnMtPm1fdGltZWQ9IHRpbWVkOwotICAgICAgICAgIHBm cy0+aW5pdF9yZWZjb3VudCgpOwotICAgICAgICAgIHBmcy0+bV90YWJsZV9zdGF0LnJlc2V0KCk7 Ci0gICAgICAgICAgc2V0X2tleXMocGZzLCBzaGFyZSk7Ci0KLSAgICAgICAgICBpbnQgcmVzOwot ICAgICAgICAgIHJlcz0gbGZfaGFzaF9pbnNlcnQoJnRhYmxlX3NoYXJlX2hhc2gsIHBpbnMsICZw ZnMpOwotICAgICAgICAgIGlmIChsaWtlbHkocmVzID09IDApKQotICAgICAgICAgIHsKLSAgICAg ICAgICAgIHBmcy0+bV9sb2NrLmRpcnR5X3RvX2FsbG9jYXRlZCgpOwotICAgICAgICAgICAgcmV0 dXJuIHBmczsKLSAgICAgICAgICB9CisgICAgICAgICAgcGZzLT5tX2xvY2suZGlydHlfdG9fYWxs b2NhdGVkKCk7CisgICAgICAgICAgcmV0dXJuIHBmczsKKyAgICAgICAgfQogCi0gICAgICAgICAg cGZzLT5tX2xvY2suZGlydHlfdG9fZnJlZSgpOworICAgICAgICBwZnMtPm1fbG9jay5kaXJ0eV90 b19mcmVlKCk7CiAKLSAgICAgICAgICBpZiAocmVzID4gMCkKKyAgICAgICAgaWYgKHJlcyA+IDAp CisgICAgICAgIHsKKyAgICAgICAgICAvKiBEdXBsaWNhdGUgaW5zZXJ0IGJ5IGFub3RoZXIgdGhy ZWFkICovCisgICAgICAgICAgaWYgKCsrcmV0cnlfY291bnQgPiByZXRyeV9tYXgpCiAgICAgICAg ICAgewotICAgICAgICAgICAgLyogRHVwbGljYXRlIGluc2VydCBieSBhbm90aGVyIHRocmVhZCAq LwotICAgICAgICAgICAgaWYgKCsrcmV0cnlfY291bnQgPiByZXRyeV9tYXgpCi0gICAgICAgICAg ICB7Ci0gICAgICAgICAgICAgIC8qIEF2b2lkIGluZmluaXRlIGxvb3BzICovCi0gICAgICAgICAg ICAgIHRhYmxlX3NoYXJlX2xvc3QrKzsKLSAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAg ICAgICAgICB9Ci0gICAgICAgICAgICBnb3RvIHNlYXJjaDsKKyAgICAgICAgICAgIC8qIEF2b2lk IGluZmluaXRlIGxvb3BzICovCisgICAgICAgICAgICB0YWJsZV9zaGFyZV9sb3N0Kys7CisgICAg ICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICB9Ci0KLSAgICAgICAgICAvKiBPT00gaW4g bGZfaGFzaF9pbnNlcnQgKi8KLSAgICAgICAgICB0YWJsZV9zaGFyZV9sb3N0Kys7Ci0gICAgICAg ICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgZ290byBzZWFyY2g7CiAgICAgICAgIH0KKworICAg ICAgICAvKiBPT00gaW4gbGZfaGFzaF9pbnNlcnQgKi8KKyAgICAgICAgdGFibGVfc2hhcmVfbG9z dCsrOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgIH0KICAgICB9CiAgIH0KCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL3BlcmZzY2hlbWEvcGZzX3NldHVwX2FjdG9yLmNjJwotLS0gYS9z dG9yYWdlL3BlcmZzY2hlbWEvcGZzX3NldHVwX2FjdG9yLmNjCTIwMTEtMDYtMzAgMTU6NTA6NDUg KzAwMDAKKysrIGIvc3RvcmFnZS9wZXJmc2NoZW1hL3Bmc19zZXR1cF9hY3Rvci5jYwkyMDExLTA4 LTA5IDE2OjM5OjE2ICswMDAwCkBAIC0xNjMsNDggKzE2Myw0NSBAQCBpbnQgaW5zZXJ0X3NldHVw X2FjdG9yKGNvbnN0IFN0cmluZyAqdXNlCiAgIGlmICh1bmxpa2VseShwaW5zID09IE5VTEwpKQog ICAgIHJldHVybiBIQV9FUlJfT1VUX09GX01FTTsKIAotICAvKiB1c2VyIGlzIG5vdCBjb25zdGFu dCwganVzdCB1c2luZyBpdCBmb3Igbm9pc2Ugb24gaW5zZXJ0ICovCi0gIHVpbnQgaT0gcmFuZG9t aXplZF9pbmRleCh1c2VyLCBzZXR1cF9hY3Rvcl9tYXgpOworICBzdGF0aWMgdWludCBzZXR1cF9h Y3Rvcl9tb25vdG9uaWNfaW5kZXg9IDA7CisgIHVpbnQgaW5kZXg7CisgIHVpbnQgYXR0ZW1wdHM9 IDA7CisgIFBGU19zZXR1cF9hY3RvciAqcGZzOwogCi0gIC8qCi0gICAgUGFzcyAxOiBbcmFuZG9t LCBzZXR1cF9hY3Rvcl9tYXggLSAxXQotICAgIFBhc3MgMjogWzAsIHNldHVwX2FjdG9yX21heCAt IDFdCi0gICovCi0gIGludCBwYXNzOwotICBmb3IgKHBhc3M9IDE7IHBhc3MgPD0gMjsgaT0wLCBw YXNzKyspCisgIHdoaWxlICgrK2F0dGVtcHRzIDw9IHNldHVwX2FjdG9yX21heCkKICAgewotICAg IFBGU19zZXR1cF9hY3RvciAqcGZzPSBzZXR1cF9hY3Rvcl9hcnJheSArIGk7Ci0gICAgUEZTX3Nl dHVwX2FjdG9yICpwZnNfbGFzdD0gc2V0dXBfYWN0b3JfYXJyYXkgKyBzZXR1cF9hY3Rvcl9tYXg7 Ci0gICAgZm9yICggOyBwZnMgPCBwZnNfbGFzdDsgcGZzKyspCisgICAgLyogU2VlIGNyZWF0ZV9t dXRleCgpICovCisgICAgUEZTX2F0b21pYzo6YWRkX3UzMigmIHNldHVwX2FjdG9yX21vbm90b25p Y19pbmRleCwgMSk7CisgICAgaW5kZXg9IHNldHVwX2FjdG9yX21vbm90b25pY19pbmRleCAlIHNl dHVwX2FjdG9yX21heDsKKyAgICBwZnM9IHNldHVwX2FjdG9yX2FycmF5ICsgaW5kZXg7CisKKyAg ICBpZiAocGZzLT5tX2xvY2suaXNfZnJlZSgpKQogICAgIHsKLSAgICAgIGlmIChwZnMtPm1fbG9j ay5pc19mcmVlKCkpCisgICAgICBpZiAocGZzLT5tX2xvY2suZnJlZV90b19kaXJ0eSgpKQogICAg ICAgewotICAgICAgICBpZiAocGZzLT5tX2xvY2suZnJlZV90b19kaXJ0eSgpKQotICAgICAgICB7 Ci0gICAgICAgICAgc2V0X3NldHVwX2FjdG9yX2tleSgmcGZzLT5tX2tleSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVzZXItPnB0cigpLCB1c2VyLT5sZW5ndGgoKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGhvc3QtPnB0cigpLCBob3N0LT5sZW5ndGgoKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUtPnB0cigpLCByb2xlLT5sZW5ndGgoKSk7Ci0g ICAgICAgICAgcGZzLT5tX3VzZXJuYW1lPSAmcGZzLT5tX2tleS5tX2hhc2hfa2V5WzBdOwotICAg ICAgICAgIHBmcy0+bV91c2VybmFtZV9sZW5ndGg9IHVzZXItPmxlbmd0aCgpOwotICAgICAgICAg IHBmcy0+bV9ob3N0bmFtZT0gcGZzLT5tX3VzZXJuYW1lICsgcGZzLT5tX3VzZXJuYW1lX2xlbmd0 aCArIDE7Ci0gICAgICAgICAgcGZzLT5tX2hvc3RuYW1lX2xlbmd0aD0gaG9zdC0+bGVuZ3RoKCk7 Ci0gICAgICAgICAgcGZzLT5tX3JvbGVuYW1lPSBwZnMtPm1faG9zdG5hbWUgKyBwZnMtPm1faG9z dG5hbWVfbGVuZ3RoICsgMTsKLSAgICAgICAgICBwZnMtPm1fcm9sZW5hbWVfbGVuZ3RoPSByb2xl LT5sZW5ndGgoKTsKLQotICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgcmVzPSBsZl9oYXNo X2luc2VydCgmc2V0dXBfYWN0b3JfaGFzaCwgcGlucywgJnBmcyk7Ci0gICAgICAgICAgaWYgKGxp a2VseShyZXMgPT0gMCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgcGZzLT5tX2xvY2suZGly dHlfdG9fYWxsb2NhdGVkKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICB9Cisg ICAgICAgIHNldF9zZXR1cF9hY3Rvcl9rZXkoJnBmcy0+bV9rZXksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdXNlci0+cHRyKCksIHVzZXItPmxlbmd0aCgpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGhvc3QtPnB0cigpLCBob3N0LT5sZW5ndGgoKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICByb2xlLT5wdHIoKSwgcm9sZS0+bGVuZ3RoKCkpOworICAgICAgICBwZnMt Pm1fdXNlcm5hbWU9ICZwZnMtPm1fa2V5Lm1faGFzaF9rZXlbMF07CisgICAgICAgIHBmcy0+bV91 c2VybmFtZV9sZW5ndGg9IHVzZXItPmxlbmd0aCgpOworICAgICAgICBwZnMtPm1faG9zdG5hbWU9 IHBmcy0+bV91c2VybmFtZSArIHBmcy0+bV91c2VybmFtZV9sZW5ndGggKyAxOworICAgICAgICBw ZnMtPm1faG9zdG5hbWVfbGVuZ3RoPSBob3N0LT5sZW5ndGgoKTsKKyAgICAgICAgcGZzLT5tX3Jv bGVuYW1lPSBwZnMtPm1faG9zdG5hbWUgKyBwZnMtPm1faG9zdG5hbWVfbGVuZ3RoICsgMTsKKyAg ICAgICAgcGZzLT5tX3JvbGVuYW1lX2xlbmd0aD0gcm9sZS0+bGVuZ3RoKCk7CiAKLSAgICAgICAg ICBwZnMtPm1fbG9jay5kaXJ0eV90b19mcmVlKCk7Ci0gICAgICAgICAgaWYgKHJlcyA+IDApCi0g ICAgICAgICAgICByZXR1cm4gSEFfRVJSX0ZPVU5EX0RVUFBfS0VZOwotICAgICAgICAgIHJldHVy biBIQV9FUlJfT1VUX09GX01FTTsKKyAgICAgICAgaW50IHJlczsKKyAgICAgICAgcmVzPSBsZl9o YXNoX2luc2VydCgmc2V0dXBfYWN0b3JfaGFzaCwgcGlucywgJnBmcyk7CisgICAgICAgIGlmIChs aWtlbHkocmVzID09IDApKQorICAgICAgICB7CisgICAgICAgICAgcGZzLT5tX2xvY2suZGlydHlf dG9fYWxsb2NhdGVkKCk7CisgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KKworICAgICAg ICBwZnMtPm1fbG9jay5kaXJ0eV90b19mcmVlKCk7CisgICAgICAgIGlmIChyZXMgPiAwKQorICAg ICAgICAgIHJldHVybiBIQV9FUlJfRk9VTkRfRFVQUF9LRVk7CisgICAgICAgIHJldHVybiBIQV9F UlJfT1VUX09GX01FTTsKICAgICAgIH0KICAgICB9CiAgIH0KCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL3BlcmZzY2hlbWEvcGZzX3NldHVwX29iamVjdC5jYycKLS0tIGEvc3RvcmFnZS9wZXJm c2NoZW1hL3Bmc19zZXR1cF9vYmplY3QuY2MJMjAxMS0wNS0wNSAwNjoxMTo0OSArMDAwMAorKysg Yi9zdG9yYWdlL3BlcmZzY2hlbWEvcGZzX3NldHVwX29iamVjdC5jYwkyMDExLTA4LTA5IDE2OjM5 OjE2ICswMDAwCkBAIC0xNTcsNDcgKzE1Nyw0NiBAQCBpbnQgaW5zZXJ0X3NldHVwX29iamVjdChl bnVtX29iamVjdF90eXBlCiAgIGlmICh1bmxpa2VseShwaW5zID09IE5VTEwpKQogICAgIHJldHVy biBIQV9FUlJfT1VUX09GX01FTTsKIAotICBQRlNfc2NhbiBzY2FuOwotICB1aW50IHJhbmRvbT0g cmFuZG9taXplZF9pbmRleChvYmplY3QsIHNldHVwX29iamVjdF9tYXgpOworICBzdGF0aWMgdWlu dCBzZXR1cF9vYmplY3RfbW9ub3RvbmljX2luZGV4PSAwOworICB1aW50IGluZGV4OworICB1aW50 IGF0dGVtcHRzPSAwOworICBQRlNfc2V0dXBfb2JqZWN0ICpwZnM7CiAKLSAgZm9yIChzY2FuLmlu aXQocmFuZG9tLCBzZXR1cF9vYmplY3RfbWF4KTsKLSAgICAgICBzY2FuLmhhc19wYXNzKCk7Ci0g ICAgICAgc2Nhbi5uZXh0X3Bhc3MoKSkKKyAgd2hpbGUgKCsrYXR0ZW1wdHMgPD0gc2V0dXBfb2Jq ZWN0X21heCkKICAgewotICAgIFBGU19zZXR1cF9vYmplY3QgKnBmcz0gc2V0dXBfb2JqZWN0X2Fy cmF5ICsgc2Nhbi5maXJzdCgpOwotICAgIFBGU19zZXR1cF9vYmplY3QgKnBmc19sYXN0PSBzZXR1 cF9vYmplY3RfYXJyYXkgKyBzY2FuLmxhc3QoKTsKKyAgICAvKiBTZWUgY3JlYXRlX211dGV4KCkg Ki8KKyAgICBQRlNfYXRvbWljOjphZGRfdTMyKCYgc2V0dXBfb2JqZWN0X21vbm90b25pY19pbmRl eCwgMSk7CisgICAgaW5kZXg9IHNldHVwX29iamVjdF9tb25vdG9uaWNfaW5kZXggJSBzZXR1cF9v YmplY3RfbWF4OworICAgIHBmcz0gc2V0dXBfb2JqZWN0X2FycmF5ICsgaW5kZXg7CiAKLSAgICBm b3IgKCA7IHBmcyA8IHBmc19sYXN0OyBwZnMrKykKKyAgICBpZiAocGZzLT5tX2xvY2suaXNfZnJl ZSgpKQogICAgIHsKLSAgICAgIGlmIChwZnMtPm1fbG9jay5pc19mcmVlKCkpCisgICAgICBpZiAo cGZzLT5tX2xvY2suZnJlZV90b19kaXJ0eSgpKQogICAgICAgewotICAgICAgICBpZiAocGZzLT5t X2xvY2suZnJlZV90b19kaXJ0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgc2V0X3NldHVwX29i amVjdF9rZXkoJnBmcy0+bV9rZXksIG9iamVjdF90eXBlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNjaGVtYS0+cHRyKCksIHNjaGVtYS0+bGVuZ3RoKCksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2JqZWN0LT5wdHIoKSwgb2JqZWN0LT5sZW5ndGgoKSk7Ci0gICAg ICAgICAgcGZzLT5tX3NjaGVtYV9uYW1lPSAmcGZzLT5tX2tleS5tX2hhc2hfa2V5WzFdOwotICAg ICAgICAgIHBmcy0+bV9zY2hlbWFfbmFtZV9sZW5ndGg9IHNjaGVtYS0+bGVuZ3RoKCk7Ci0gICAg ICAgICAgcGZzLT5tX29iamVjdF9uYW1lPSBwZnMtPm1fc2NoZW1hX25hbWUgKyBwZnMtPm1fc2No ZW1hX25hbWVfbGVuZ3RoICsgMTsKLSAgICAgICAgICBwZnMtPm1fb2JqZWN0X25hbWVfbGVuZ3Ro PSBvYmplY3QtPmxlbmd0aCgpOwotICAgICAgICAgIHBmcy0+bV9lbmFibGVkPSBlbmFibGVkOwot ICAgICAgICAgIHBmcy0+bV90aW1lZD0gdGltZWQ7Ci0KLSAgICAgICAgICBpbnQgcmVzOwotICAg ICAgICAgIHJlcz0gbGZfaGFzaF9pbnNlcnQoJnNldHVwX29iamVjdF9oYXNoLCBwaW5zLCAmcGZz KTsKLSAgICAgICAgICBpZiAobGlrZWx5KHJlcyA9PSAwKSkKLSAgICAgICAgICB7Ci0gICAgICAg ICAgICBwZnMtPm1fbG9jay5kaXJ0eV90b19hbGxvY2F0ZWQoKTsKLSAgICAgICAgICAgIHNldHVw X29iamVjdHNfdmVyc2lvbisrOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgfQor ICAgICAgICBzZXRfc2V0dXBfb2JqZWN0X2tleSgmcGZzLT5tX2tleSwgb2JqZWN0X3R5cGUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYS0+cHRyKCksIHNjaGVtYS0+bGVuZ3Ro KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+cHRyKCksIG9iamVjdC0+ bGVuZ3RoKCkpOworICAgICAgICBwZnMtPm1fc2NoZW1hX25hbWU9ICZwZnMtPm1fa2V5Lm1faGFz aF9rZXlbMV07CisgICAgICAgIHBmcy0+bV9zY2hlbWFfbmFtZV9sZW5ndGg9IHNjaGVtYS0+bGVu Z3RoKCk7CisgICAgICAgIHBmcy0+bV9vYmplY3RfbmFtZT0gcGZzLT5tX3NjaGVtYV9uYW1lICsg cGZzLT5tX3NjaGVtYV9uYW1lX2xlbmd0aCArIDE7CisgICAgICAgIHBmcy0+bV9vYmplY3RfbmFt ZV9sZW5ndGg9IG9iamVjdC0+bGVuZ3RoKCk7CisgICAgICAgIHBmcy0+bV9lbmFibGVkPSBlbmFi bGVkOworICAgICAgICBwZnMtPm1fdGltZWQ9IHRpbWVkOwogCi0gICAgICAgICAgcGZzLT5tX2xv Y2suZGlydHlfdG9fZnJlZSgpOwotICAgICAgICAgIGlmIChyZXMgPiAwKQotICAgICAgICAgICAg cmV0dXJuIEhBX0VSUl9GT1VORF9EVVBQX0tFWTsKLSAgICAgICAgICAvKiBPT00gaW4gbGZfaGFz aF9pbnNlcnQgKi8KLSAgICAgICAgICByZXR1cm4gSEFfRVJSX09VVF9PRl9NRU07CisgICAgICAg IGludCByZXM7CisgICAgICAgIHJlcz0gbGZfaGFzaF9pbnNlcnQoJnNldHVwX29iamVjdF9oYXNo LCBwaW5zLCAmcGZzKTsKKyAgICAgICAgaWYgKGxpa2VseShyZXMgPT0gMCkpCisgICAgICAgIHsK KyAgICAgICAgICBwZnMtPm1fbG9jay5kaXJ0eV90b19hbGxvY2F0ZWQoKTsKKyAgICAgICAgICBz ZXR1cF9vYmplY3RzX3ZlcnNpb24rKzsKKyAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQor CisgICAgICAgIHBmcy0+bV9sb2NrLmRpcnR5X3RvX2ZyZWUoKTsKKyAgICAgICAgaWYgKHJlcyA+ IDApCisgICAgICAgICAgcmV0dXJuIEhBX0VSUl9GT1VORF9EVVBQX0tFWTsKKyAgICAgICAgLyog T09NIGluIGxmX2hhc2hfaW5zZXJ0ICovCisgICAgICAgIHJldHVybiBIQV9FUlJfT1VUX09GX01F TTsKICAgICAgIH0KICAgICB9CiAgIH0KCk5vIGJ1bmRsZSAocmVhc29uOiB1c2VsZXNzIGZvciBw dXNoIGVtYWlscyku