This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --8323328-1172241426-967758510=:14051 Content-Type: TEXT/PLAIN; charset=US-ASCII hi, here is a new patch for kmines ... only bug fixes of course :) please review (if there is someone familiar with kmines ... which I doubt) and apply. thanks, Nicolas --8323328-1172241426-967758510=:14051 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="kmines_diff_2.0_b" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: SW5kZXg6IENIQU5HRUxPRw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNT IGZpbGU6IC9ob21lL2tkZS9rZGVnYW1lcy9rbWluZXMvQ0hBTkdFTE9HLHYN CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNA0KZGlmZiAtdSAtcjEuMjQgQ0hB TkdFTE9HDQotLS0gQ0hBTkdFTE9HCTIwMDAvMDgvMjMgMjA6MzQ6MzcJMS4y NA0KKysrIENIQU5HRUxPRwkyMDAwLzA4LzMxIDE5OjIxOjM0DQpAQCAtMSwz ICsxLDE1IEBADQorMi4wLjcNCisgKiBmaXhlZCBidWcgaW4gbWluZSBmaWVs ZCBkcmF3aW5nIHdpdGggc29tZSBzdHlsZXMgW2ZvdW5kIGJ5IEdlcmFyZCBE ZWxhZm9uZA0KKyAgIGFuZCBUb2JpYXMgS3JldHNjaG1hcl0gdGhhdCBpbmR1 Y2VzIGEgY29tcGxldGUgcmV3cml0ZSBvZiB0aGUgZHJhd2luZyBjb2RlLg0K KyAgIG5vdyBpdCBob25vcnMgdGhlIGdsb2JhbCBzdHlsZSAoYmVhdXRpZnVs IGluIG1hcmJsZSBzdHlsZSkgYW5kIGl0IGV2ZW4NCisgICBsZWFkcyB0byBj b2RlIHNpbXBsaWZpY2F0aW9uICENCisgKiB0aGUga2V5Ym9hcmQgY3Vyc29y IHVzZXMgbm93IHRoZSBmb2N1cyBkcmF3aW5nIG1ldGhvZC4NCisgKiBmaXhl ZCBidWcgd2hlbiBmaWVsZC53aWR0aCAhPSBmaWVsZC5oZWlnaHQgd2hlbiBl eHBsb2RpbmcNCisgKiBmaXhlZCBmb250IGluIHRoZSBwYXVzZSBidXR0b24g KHdpdGggbm9uIHN0YW5kYXJkIGNhc2Ugc2l6ZSkNCisgKiBmaXhlZCBiZWhh dmlvdXIgb2YgYnV0dG9uIGluIGhpZ2hzY29yZXMgZGlhbG9nIHdoZW4gZW50 ZXJpbmcgdGhlIHdpbm5lciBuYW1lDQorICAgW3Byb3Bvc2VkIGJ5IExvdHRh IElua292YWFyYSBmb3Iga3NpcnRldF0NCisgKiBrZXlib2FyZCBpcyBkaXNh YmxlZCBieSBkZWZhdWx0DQorDQogMi4wLjYNCiAgKiB1c2Ugb2YgS01haW5X aW5kb3cgKHJlcGxhY2UgS1RNYWluV2luZG93KSBidXQgdGhpcyBkb2VzIG5v dCBzb2x2ZSB0aGUNCiAgICByZXNpemluZyBwcm9ibGVtcyA6KA0KSW5kZXg6 IFRPRE8NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9t ZS9rZGUva2RlZ2FtZXMva21pbmVzL1RPRE8sdg0KcmV0cmlldmluZyByZXZp c2lvbiAxLjEyDQpkaWZmIC11IC1yMS4xMiBUT0RPDQotLS0gVE9ETwkyMDAw LzA4LzIzIDIwOjM0OjM3CTEuMTINCisrKyBUT0RPCTIwMDAvMDgvMzEgMTk6 MjE6MzQNCkBAIC05LDYgKzksNSBAQA0KIEtOT1dOIEJVR1M6DQogDQogICog bm9uZSAhDQotICogcmVtb3ZlIHRoZSBjb21tZW50IGFyb3VuZCB0aGUgSTE4 Tl9OT09QIGNhbGwgaW4gbWFpbi5jcHAgYWZ0ZXIgMi4wDQogDQogDQpJbmRl eDogZGlhbG9ncy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBm aWxlOiAvaG9tZS9rZGUva2RlZ2FtZXMva21pbmVzL2RpYWxvZ3MuY3BwLHYN CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMg0KZGlmZiAtdSAtcjEuMzIgZGlh bG9ncy5jcHANCi0tLSBkaWFsb2dzLmNwcAkyMDAwLzA4LzIzIDIwOjM0OjM3 CTEuMzINCisrKyBkaWFsb2dzLmNwcAkyMDAwLzA4LzMxIDE5OjIxOjM1DQpA QCAtMjQ5LDcgKzI0OSw2IEBADQogCQkJcWxlLT5zZXRNaW5pbXVtU2l6ZShx bGUtPmZvbnRNZXRyaWNzKCkubWF4V2lkdGgoKSoxMCwNCiAJCQkJCQkJCXFs ZS0+c2l6ZUhpbnQoKS5oZWlnaHQoKSk7DQogCQkJcWxlLT5zZXRGb2N1cygp Ow0KLQkJCWNvbm5lY3QocWxlLCBTSUdOQUwocmV0dXJuUHJlc3NlZCgpKSwg U0xPVCh3cml0ZU5hbWUoKSkpOw0KIAkJCWdsLT5hZGRXaWRnZXQocWxlLCBr LCAyKTsNCiAJCX0NCiANCkBAIC0yNjUsMjggKzI2NCwyNSBAQA0KIAkJZ2wt PmFkZFdpZGdldChsYWIsIGssIDMpOw0KIAl9DQogDQotCWlmIChzY29yZSkg ZW5hYmxlQnV0dG9uKENsb3NlLCBmYWxzZSk7DQorCWlmIChzY29yZSkgc2V0 QnV0dG9uVGV4dChDbG9zZSwgaTE4bigiU2V0IG5hbWUiKSk7DQorCV9jbG9z ZSA9ICFzY29yZTsNCiB9DQogDQotdm9pZCBXSGlnaFNjb3Jlczo6d3JpdGVO YW1lKCkNCi17DQotCUtDb25maWcgKmNvbmYgPSBrYXBwLT5jb25maWcoKTsN Ci0JY29uZi0+c2V0R3JvdXAoSFNfR1JQW3R5cGVdKTsNCi0JUVN0cmluZyBz dHIgPSBxbGUtPnRleHQoKTsNCi0JaWYgKCBzdHIubGVuZ3RoKCkgKSBjb25m LT53cml0ZUVudHJ5KEhTX05BTUUsIHN0cik7DQotCWNvbmYtPnN5bmMoKTsN Ci0Jc3RyID0gY29uZi0+cmVhZEVudHJ5KEhTX05BTUUpOw0KLQlxbGUtPnNl dFRleHQoc3RyKTsNCi0JZW5hYmxlQnV0dG9uKENsb3NlLCB0cnVlKTsNCi19 DQotDQogdm9pZCBXSGlnaFNjb3Jlczo6cmVqZWN0KCkNCiB7DQotCWlmICgg cWxlICYmIHFsZS0+aXNFbmFibGVkKCkgKSB7DQorCWlmIChfY2xvc2UpIEtE aWFsb2dCYXNlOjpyZWplY3QoKTsNCisJZWxzZSB7DQorCQlLQ29uZmlnICpj b25mID0ga2FwcC0+Y29uZmlnKCk7DQorCQljb25mLT5zZXRHcm91cChIU19H UlBbdHlwZV0pOw0KKwkJUVN0cmluZyBzdHIgPSBxbGUtPnRleHQoKTsNCisJ CWlmICggc3RyLmxlbmd0aCgpICkgY29uZi0+d3JpdGVFbnRyeShIU19OQU1F LCBzdHIpOw0KKwkJY29uZi0+c3luYygpOw0KKwkJc3RyID0gY29uZi0+cmVh ZEVudHJ5KEhTX05BTUUpOw0KKwkJcWxlLT5zZXRUZXh0KHN0cik7DQorCQlz ZXRCdXR0b25UZXh0KENsb3NlLCBpMThuKCJDbG9zZSIpKTsNCisJCV9jbG9z ZSA9IHRydWU7DQogCQlxbGUtPnNldEVuYWJsZWQoZmFsc2UpOw0KLQkJZm9j dXNOZXh0UHJldkNoaWxkKHRydWUpOyAvLyBzb3J0IG9mIGhhY2sgKHdvbmRl ciB3aHkgaXRzIGNhbGwgaW4NCi0JCSAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gc2V0RW5hYmxlZChmYWxzZSkgZG9lcyBub3RoaW5nIC4uLikNCi0J fSBlbHNlIEtEaWFsb2dCYXNlOjpyZWplY3QoKTsNCisJfQ0KIH0NCiANCiAv Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtNDMyLDcg KzQyOCw3IEBADQogDQogYm9vbCBPcHRpb25EaWFsb2c6OnJlYWRLZXlib2Fy ZCgpDQogew0KLQlyZXR1cm4gY29uZmlnKCktPnJlYWRCb29sRW50cnkoT1Bf S0VZQk9BUkQsIHRydWUpOw0KKwlyZXR1cm4gY29uZmlnKCktPnJlYWRCb29s RW50cnkoT1BfS0VZQk9BUkQsIGZhbHNlKTsNCiB9DQogDQogTGV2ZWwgT3B0 aW9uRGlhbG9nOjpyZWFkTGV2ZWwoKQ0KSW5kZXg6IGRpYWxvZ3MuaA0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9ob21lL2tkZS9rZGVn YW1lcy9rbWluZXMvZGlhbG9ncy5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24g MS4yMQ0KZGlmZiAtdSAtcjEuMjEgZGlhbG9ncy5oDQotLS0gZGlhbG9ncy5o CTIwMDAvMDgvMjMgMjA6MzQ6MzcJMS4yMQ0KKysrIGRpYWxvZ3MuaAkyMDAw LzA4LzMxIDE5OjIxOjM1DQpAQCAtMTA2LDEyICsxMDYsMTIgQEANCiAJc3Rh dGljIHVpbnQgdGltZShHYW1lVHlwZSk7DQogDQogIHByaXZhdGUgc2xvdHM6 DQotCXZvaWQgd3JpdGVOYW1lKCk7DQogCXZvaWQgcmVqZWN0KCk7DQogDQog IHByaXZhdGU6DQogCUdhbWVUeXBlICAgdHlwZTsNCiAJUUxpbmVFZGl0ICpx bGU7DQorCWJvb2wgICAgICAgX2Nsb3NlOw0KIH07DQogDQogLy8tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KSW5kZXg6IGZpZWxkLmNwcA0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9ob21lL2tkZS9r ZGVnYW1lcy9rbWluZXMvZmllbGQuY3BwLHYNCnJldHJpZXZpbmcgcmV2aXNp b24gMS4zMg0KZGlmZiAtdSAtcjEuMzIgZmllbGQuY3BwDQotLS0gZmllbGQu Y3BwCTIwMDAvMDgvMjMgMjA6MzQ6MzcJMS4zMg0KKysrIGZpZWxkLmNwcAky MDAwLzA4LzMxIDE5OjIxOjM2DQpAQCAtMSw4ICsxLDggQEANCiAjaW5jbHVk ZSAiZmllbGQuaCINCiANCi0jaW5jbHVkZSA8cWRyYXd1dGlsLmg+DQogI2lu Y2x1ZGUgPHFsYXlvdXQuaD4NCiAjaW5jbHVkZSA8cWJpdG1hcC5oPg0KKyNp bmNsdWRlIDxxYXBwbGljYXRpb24uaD4NCiANCiAjaW5jbHVkZSA8a2xvY2Fs ZS5oPg0KIA0KQEAgLTIyLDEzICsyMiwxNiBAQA0KIAljb25uZWN0KHBiLCBT SUdOQUwoY2xpY2tlZCgpKSwgdGhpcywgU0xPVChyZXN1bWUoKSkpOw0KIAl0 b3AtPmFkZFN0cmV0Y2goMSk7DQogDQotCVFGb250IGYgPSBmb250KCk7DQot CWYuc2V0Qm9sZCh0cnVlKTsNCi0Jc2V0Rm9udChmKTsNCisJZHVtbXkgPSBu ZXcgUVB1c2hCdXR0b24oMCk7DQogCQ0KIAlyZWFkU2V0dGluZ3MoKTsNCiB9 DQogDQorRmllbGQ6On5GaWVsZCgpDQorew0KKwlkZWxldGUgZHVtbXk7DQor fQ0KKw0KIHZvaWQgRmllbGQ6OnJlYWRTZXR0aW5ncygpDQogew0KIAlzZXRD YXNlUHJvcGVydGllcyhPcHRpb25EaWFsb2c6OnJlYWRDYXNlUHJvcGVydGll cygpKTsNCkBAIC00MSw2ICs0NCw3IEBADQogdm9pZCBGaWVsZDo6c2V0Q2Fz ZVByb3BlcnRpZXMoY29uc3QgQ2FzZVByb3BlcnRpZXMgJl9jcCkNCiB7DQog CWNwID0gX2NwOw0KKwlkdW1teS0+cmVzaXplKGNwLnNpemUsIGNwLnNpemUp Ow0KIAkNCiAJUUJpdG1hcCBtYXNrOw0KIA0KQEAgLTYwLDEyICs2NCw5IEBA DQogCW1pbmVQaXhtYXAocG1fZXJyb3IsIGZhbHNlLCBNYXJrZWQpOw0KIAlw bV9lcnJvci5zZXRNYXNrKG1hc2spOw0KIA0KLQljdXJzb3JQaXhtYXAobWFz aywgdHJ1ZSk7DQotCWN1cnNvclBpeG1hcChwbV9jdXJzb3IsIGZhbHNlKTsN Ci0JcG1fY3Vyc29yLnNldE1hc2sobWFzayk7DQotDQogCVFGb250IGYgPSBm b250KCk7DQogCWYuc2V0UG9pbnRTaXplKGNwLnNpemUtNik7DQorCWYuc2V0 Qm9sZCh0cnVlKTsNCiAJc2V0Rm9udChmKTsNCiANCiAJdXBkYXRlR2VvbWV0 cnkoKTsNCkBAIC04NywxNiArODgsNiBAQA0KIAlwLmRyYXdSZWN0KDQsIDMs IDYsIDUpOw0KIH0NCiANCi12b2lkIEZpZWxkOjpjdXJzb3JQaXhtYXAoUVBp eG1hcCAmcGl4LCBib29sIG1hc2spIGNvbnN0DQotew0KLQlwaXgucmVzaXpl KGNwLnNpemUsIGNwLnNpemUpOw0KLQlpZiAobWFzaykgcGl4LmZpbGwoY29s b3IwKTsNCi0JUVBhaW50ZXIgcCgmcGl4KTsNCi0JcC5zZXRXaW5kb3coMCwg MCwgMjAsIDIwKTsNCi0JcC5zZXRQZW4oIChtYXNrID8gY29sb3IxIDogYmxh Y2spICk7DQotCXAuZHJhd1JlY3QoMiwgMiwgMTYsIDE2KTsNCi19DQotDQog dm9pZCBGaWVsZDo6bWluZVBpeG1hcChRUGl4bWFwICZwaXgsIGJvb2wgbWFz aywgQ2FzZVN0YXRlIHR5cGUpIGNvbnN0DQogew0KIAlwaXgucmVzaXplKGNw LnNpemUsIGNwLnNpemUpOw0KQEAgLTE4NiwxMSArMTc3LDEyIEBADQogDQog CXN0YXRlID0gUGxheWluZzsNCiAJZmlyc3RfY2xpY2sgPSB0cnVlOw0KKwlp YyA9IGxldi53aWR0aC8yOw0KKwlqYyA9IGxldi5oZWlnaHQvMjsNCiANCiAJ X3BmaWVsZC5yZXNpemUoIChsZXYud2lkdGgrMikgKiAobGV2LmhlaWdodCsy KSApOw0KIAkNCi0JUVBhaW50ZXIgKnA7DQotCWlmIChyZXBhaW50KSBwID0g bmV3IFFQYWludGVyKHRoaXMpOw0KKwkNCiAJZm9yICh1aW50IGk9MDsgaTxs ZXYud2lkdGgrMjsgaSsrKQ0KIAkJZm9yICh1aW50IGo9MDsgajxsZXYuaGVp Z2h0KzI7IGorKykgew0KIAkJCUNhc2UgdG1wOw0KQEAgLTIwMCwyNyArMTky LDI0IEBADQogCQkJaWYgKCBwZmllbGQoaSwgaikubWluZT09ZmFsc2UgJiYg cGZpZWxkKGksIGopLnN0YXRlPT10bXAuc3RhdGUgKQ0KIAkJCQljb250aW51 ZTsNCiAJCQlwZmllbGQoaSwgaikgPSB0bXA7DQotCQkJaWYgKHJlcGFpbnQg JiYgdG1wLnN0YXRlPT1Db3ZlcmVkKSBkcmF3Q2FzZShpLCBqLCBwKTsNCisJ CQlpZiAocmVwYWludCAmJiB0bXAuc3RhdGU9PUNvdmVyZWQpIGRyYXdDYXNl KGksIGopOw0KIAkJfQ0KLQ0KLQlpZiAocmVwYWludCkgZHJhd0N1cnNvcihm YWxzZSwgcCk7DQotCWljID0gbGV2LndpZHRoLzI7DQotCWpjID0gbGV2Lmhl aWdodC8yOw0KLQlpZiAoIHJlcGFpbnQgJiYgY3Vyc29yICkgZHJhd0N1cnNv cih0cnVlLCBwKTsNCiB9DQogDQogdm9pZCBGaWVsZDo6cGFpbnRFdmVudChR UGFpbnRFdmVudCAqZSkNCiB7DQotCWlmICggc3RhdGU9PVBhdXNlZCApIHJl dHVybjsJCQ0KLQ0KIAlRUGFpbnRlciBwKHRoaXMpOw0KIAlkcmF3RnJhbWUo JnApOw0KKwlwLmVuZCgpOw0KKw0KKwlpZiAoIHN0YXRlPT1QYXVzZWQgKSBy ZXR1cm47DQorDQogCXVpbnQgaW1pbiA9ICh1aW50KVFNQVgoUU1JTih4VG9J KGUtPnJlY3QoKS5sZWZ0KCkpLCAoaW50KWxldi53aWR0aCksIDEpOw0KIAl1 aW50IGltYXggPSAodWludClRTUFYKFFNSU4oeFRvSShlLT5yZWN0KCkucmln aHQoKSksIChpbnQpbGV2LndpZHRoKSwgMSk7DQogCXVpbnQgam1pbiA9ICh1 aW50KVFNQVgoUU1JTih5VG9KKGUtPnJlY3QoKS50b3AoKSksIChpbnQpbGV2 LmhlaWdodCksIDEpOw0KIAl1aW50IGptYXggPSAodWludClRTUFYKFFNSU4o eVRvSihlLT5yZWN0KCkuYm90dG9tKCkpLCAoaW50KWxldi5oZWlnaHQpLCAx KTsNCiAJZm9yICh1aW50IGk9aW1pbjsgaTw9aW1heDsgaSsrKQ0KLQkgICAg Zm9yICh1aW50IGo9am1pbjsgajw9am1heDsgaisrKSBkcmF3Q2FzZShpLCBq LCAmcCk7DQorCSAgICBmb3IgKHVpbnQgaj1qbWluOyBqPD1qbWF4OyBqKysp IGRyYXdDYXNlKGksIGopOw0KIH0NCiANCiB2b2lkIEZpZWxkOjpjaGFuZ2VD YXNlU3RhdGUodWludCBpLCB1aW50IGosIENhc2VTdGF0ZSBuZXdfc3QpDQpA QCAtMjQ0LDcgKzIzMyw3IEBADQogDQogaW50IEZpZWxkOjp4VG9JKGludCB4 KSBjb25zdA0KIHsNCi0JLy8gdGhlIGNhc3QgaXMgbmVjZXNzYXJ5IHdoZW4g eC1mcmFtZVdpZHRoKCkgaXMgbmVnYXRpdmUgKCA/ICkNCisJLy8gdGhlIGNh c3QgaXMgbmVjZXNzYXJ5IHdoZW4geC1mcmFtZVdpZHRoKCkgaXMgbmVnYXRp dmUgKD8pDQogCXJldHVybiAoaW50KSgoZG91YmxlKSh4IC0gZnJhbWVXaWR0 aCgpKS9jcC5zaXplKSArIDE7DQogfQ0KIA0KQEAgLTI5NSw3ICsyODQsNyBA QA0KIAlzd2l0Y2ggKCBtYXBNb3VzZUJ1dHRvbihlKSApIHsNCiAJY2FzZSBS ZXZlYWw6DQogCQlfcmV2ZWFsID0gdHJ1ZTsNCi0JCWlmIChpbnNpZGUpIHBy ZXNzQ2FzZShpYywgamMsIGZhbHNlKTsNCisJCWlmIChpbnNpZGUpIHByZXNz Q2FzZShpYywgamMsIHRydWUpOw0KIAkJYnJlYWs7DQogCWNhc2UgTWFyazoN CiAJCWlmIChpbnNpZGUpIG1hcmsoKTsNCkBAIC0zMDUsNyArMjk0LDcgQEAN CiAJCWJyZWFrOw0KIAljYXNlIEF1dG9SZXZlYWw6DQogCQlfYXV0b3JldmVh bCA9IHRydWU7DQotCQlpZiAoaW5zaWRlKSBwcmVzc0NsZWFyRnVuY3Rpb24o aWMsIGpjLCBmYWxzZSk7DQorCQlpZiAoaW5zaWRlKSBwcmVzc0NsZWFyRnVu Y3Rpb24oaWMsIGpjLCB0cnVlKTsNCiAJCWJyZWFrOw0KIAl9DQogfQ0KQEAg LTMxNSwxMCArMzA0LDExIEBADQogCWlmICggc3RhdGUhPVBsYXlpbmcgKSBy ZXR1cm47DQogCXNldE1vb2QoU21pbGV5OjpOb3JtYWwpOw0KIA0KLQlpZiAo IGluc2lkZShpYywgamMpICkNCi0JCWlmIChfYXV0b3JldmVhbCkgcHJlc3ND bGVhckZ1bmN0aW9uKGljLCBqYywgdHJ1ZSk7DQorCWlmIChfYXV0b3JldmVh bCkgew0KKwkJcHJlc3NDbGVhckZ1bmN0aW9uKGljLCBqYywgZmFsc2UpOw0K KwkJX2F1dG9yZXZlYWwgPSBmYWxzZTsNCisJfQ0KIAlfcmV2ZWFsID0gZmFs c2U7DQotCV9hdXRvcmV2ZWFsID0gZmFsc2U7DQogCWlmICggIXBsYWNlQ3Vy c29yKHhUb0koZS0+cG9zKCkueCgpKSwgeVRvSihlLT5wb3MoKS55KCkpKSAp IHJldHVybjsNCiANCiAJc3dpdGNoICggbWFwTW91c2VCdXR0b24oZSkgKSB7 DQpAQCAtMzM4LDE1ICszMjgsMTEgQEANCiB7DQogCWlmICggc3RhdGUhPVBs YXlpbmcgKSByZXR1cm47DQogDQotCWlmICggaW5zaWRlKGljLCBqYykgKSB7 DQotCQlpZiAoX3JldmVhbCkgcHJlc3NDYXNlKGljLCBqYywgdHJ1ZSk7DQot CQlpZiAoX2F1dG9yZXZlYWwpIHByZXNzQ2xlYXJGdW5jdGlvbihpYywgamMs IHRydWUpOw0KLQl9DQotDQotCWlmICggIXBsYWNlQ3Vyc29yKHhUb0koZS0+ cG9zKCkueCgpKSwgeVRvSihlLT5wb3MoKS55KCkpKSApIHJldHVybjsNCi0N CiAJaWYgKF9yZXZlYWwpIHByZXNzQ2FzZShpYywgamMsIGZhbHNlKTsNCi0J ZWxzZSBpZiAoX2F1dG9yZXZlYWwpIHByZXNzQ2xlYXJGdW5jdGlvbihpYywg amMsIGZhbHNlKTsNCisJaWYgKF9hdXRvcmV2ZWFsKSBwcmVzc0NsZWFyRnVu Y3Rpb24oaWMsIGpjLCBmYWxzZSk7DQorCWlmICggIXBsYWNlQ3Vyc29yKHhU b0koZS0+cG9zKCkueCgpKSwgeVRvSihlLT5wb3MoKS55KCkpKSApIHJldHVy bjsNCisJaWYgKF9yZXZlYWwpIHByZXNzQ2FzZShpYywgamMsIHRydWUpOw0K KwllbHNlIGlmIChfYXV0b3JldmVhbCkgcHJlc3NDbGVhckZ1bmN0aW9uKGlj LCBqYywgdHJ1ZSk7DQogfQ0KIA0KIHZvaWQgRmllbGQ6OnNob3dNaW5lcygp DQpAQCAtMzU5LDIzICszNDUsMjIgQEANCiAJCX0NCiB9DQogDQotdm9pZCBG aWVsZDo6cHJlc3NDYXNlKHVpbnQgaSwgdWludCBqLCBib29sIHByZXNzZWQs IFFQYWludGVyICpwKQ0KK3ZvaWQgRmllbGQ6OnByZXNzQ2FzZSh1aW50IGks IHVpbnQgaiwgYm9vbCBwcmVzc2VkKQ0KIHsNCi0JaWYgKCBwZmllbGQoaSwg aikuc3RhdGU9PUNvdmVyZWQgKSBkcmF3Qm94KGlUb1goaSksIGpUb1koaiks IHByZXNzZWQsIHApOw0KKwlpZiAoIHBmaWVsZChpLCBqKS5zdGF0ZT09Q292 ZXJlZCApIGRyYXdCb3goaSwgaiwgcHJlc3NlZCk7DQogfQ0KIA0KIHZvaWQg RmllbGQ6OnByZXNzQ2xlYXJGdW5jdGlvbih1aW50IGksIHVpbnQgaiwgYm9v bCBwcmVzc2VkKQ0KIHsNCi0JUVBhaW50ZXIgcCh0aGlzKTsNCi0JcHJlc3ND YXNlKGktMSwgaisxLCBwcmVzc2VkLCAmcCk7DQotCXByZXNzQ2FzZShpLTEs ICAgaiwgcHJlc3NlZCwgJnApOw0KLQlwcmVzc0Nhc2UoaS0xLCBqLTEsIHBy ZXNzZWQsICZwKTsNCi0JcHJlc3NDYXNlKCAgaSwgaisxLCBwcmVzc2VkLCAm cCk7DQotCXByZXNzQ2FzZSggIGksICAgaiwgcHJlc3NlZCwgJnApOw0KLQlw cmVzc0Nhc2UoICBpLCBqLTEsIHByZXNzZWQsICZwKTsNCi0JcHJlc3NDYXNl KGkrMSwgai0xLCBwcmVzc2VkLCAmcCk7DQotCXByZXNzQ2FzZShpKzEsICAg aiwgcHJlc3NlZCwgJnApOw0KLQlwcmVzc0Nhc2UoaSsxLCBqKzEsIHByZXNz ZWQsICZwKTsNCisJcHJlc3NDYXNlKGktMSwgaisxLCBwcmVzc2VkKTsNCisJ cHJlc3NDYXNlKGktMSwgICBqLCBwcmVzc2VkKTsNCisJcHJlc3NDYXNlKGkt MSwgai0xLCBwcmVzc2VkKTsNCisJcHJlc3NDYXNlKCAgaSwgaisxLCBwcmVz c2VkKTsNCisJcHJlc3NDYXNlKCAgaSwgICBqLCBwcmVzc2VkKTsNCisJcHJl c3NDYXNlKCAgaSwgai0xLCBwcmVzc2VkKTsNCisJcHJlc3NDYXNlKGkrMSwg ai0xLCBwcmVzc2VkKTsNCisJcHJlc3NDYXNlKGkrMSwgICBqLCBwcmVzc2Vk KTsNCisJcHJlc3NDYXNlKGkrMSwgaisxLCBwcmVzc2VkKTsNCiB9DQogDQog I2RlZmluZSBNX09SX1UoaSwgaikgKCBwZmllbGQoaSwgaikuc3RhdGU9PU1h cmtlZCBcDQpAQCAtMzkwLDcgKzM3NSw2IEBADQogdm9pZCBGaWVsZDo6a2V5 Ym9hcmRBdXRvUmV2ZWFsU2xvdCgpDQogew0KIAlwcmVzc0NsZWFyRnVuY3Rp b24oaWMsIGpjLCB0cnVlKTsNCi0JZHJhd0N1cnNvcih0cnVlKTsNCiAJYXV0 b1JldmVhbCgpOw0KIH0NCiANCkBAIC00NDcsNyArNDMxLDcgQEANCiAJaWYg KCBzdGF0ZT09U3RvcHBlZCApIHJldHVybjsNCiAJLyogZmluZCBhbGwgZXJy b3JzICovDQogCWZvciAodWludCBpaT0xOyBpaTxsZXYud2lkdGgrMTsgaWkr KykNCi0JCWZvciAodWludCBqaj0xOyBqajxsZXYud2lkdGgrMTsgamorKykN CisJCWZvciAodWludCBqaj0xOyBqajxsZXYuaGVpZ2h0KzE7IGpqKyspDQog CQkJaWYgKCBwZmllbGQoaWksIGpqKS5zdGF0ZT09TWFya2VkICYmICFwZmll bGQoaWksIGpqKS5taW5lICkNCiAJCQkJY2hhbmdlQ2FzZVN0YXRlKGlpLCBq aiwgRXJyb3IpOw0KIAllbWl0IGVuZEdhbWUoKTsNCkBAIC00NjEsMTEgKzQ0 NSwxNCBAQA0KIAlpZiAoIHN0YXRlPT1QYXVzZWQgKSByZXN1bWUoKTsNCiAJ ZWxzZSB7DQogCQllbWl0IGZyZWV6ZVRpbWVyKCk7DQotCQllcmFzZUZpZWxk KCk7DQorCQlRRm9udCBmID0gUUFwcGxpY2F0aW9uOjpmb250KCk7DQorCQlm LnNldEJvbGQodHJ1ZSk7DQorCQlwYi0+c2V0Rm9udChmKTsNCiAJCXBiLT5z aG93KCk7DQogCQlwYi0+c2V0Rm9jdXMoKTsNCiAJCXN0YXRlID0gUGF1c2Vk Ow0KIAkJZW1pdCBnYW1lU3RhdGVDaGFuZ2VkKFBhdXNlZCk7DQorCQl1cGRh dGUoKTsNCiAJfQ0KIH0NCiANCkBAIC00ODAsMjIgKzQ2NywyMiBAQA0KIA0K IHZvaWQgRmllbGQ6OnVwKCkNCiB7DQotCXBsYWNlQ3Vyc29yKGljLCBqYy0x LCB0cnVlKTsNCisJcGxhY2VDdXJzb3IoaWMsIGpjLTEpOw0KIH0NCiANCiB2 b2lkIEZpZWxkOjpkb3duKCkNCiB7DQotCXBsYWNlQ3Vyc29yKGljLCBqYysx LCB0cnVlKTsNCisJcGxhY2VDdXJzb3IoaWMsIGpjKzEpOw0KIH0NCiANCiB2 b2lkIEZpZWxkOjpsZWZ0KCkNCiB7DQotCXBsYWNlQ3Vyc29yKGljLTEsIGpj LCB0cnVlKTsNCisJcGxhY2VDdXJzb3IoaWMtMSwgamMpOw0KIH0NCiANCiB2 b2lkIEZpZWxkOjpyaWdodCgpDQogew0KLQlwbGFjZUN1cnNvcihpYysxLCBq YywgdHJ1ZSk7DQorCXBsYWNlQ3Vyc29yKGljKzEsIGpjKTsNCiB9DQogDQog dm9pZCBGaWVsZDo6cmV2ZWFsKCkNCkBAIC01NDUsMTAwICs1MzIsNzQgQEAN CiAJfQ0KIH0NCiANCi1ib29sIEZpZWxkOjpwbGFjZUN1cnNvcihpbnQgaSwg aW50IGosIGJvb2wgY2hlY2spDQorYm9vbCBGaWVsZDo6cGxhY2VDdXJzb3Io aW50IGksIGludCBqKQ0KIHsNCi0JaWYgKCBjaGVjayAmJiAoc3RhdGUhPVBs YXlpbmcgfHwgIWluc2lkZShpLCBqKSkgKSByZXR1cm4gZmFsc2U7DQotCWlm ICggY3Vyc29yICYmIGluc2lkZShpYywgamMpICkgZHJhd0N1cnNvcihmYWxz ZSk7DQotCWljID0gaTsNCi0JamMgPSBqOw0KLQlpZiAoICFpbnNpZGUoaSwg aikgKSByZXR1cm4gZmFsc2U7DQotCWlmIChjdXJzb3IpIGRyYXdDdXJzb3Io dHJ1ZSk7DQorCWlmICggc3RhdGUhPVBsYXlpbmcgfHwgIWluc2lkZShpLCBq KSApIHJldHVybiBmYWxzZTsNCisJdWludCBvbGRJYyA9IGljOw0KKwl1aW50 IG9sZEpjID0gamM7DQorCWljID0gKHVpbnQpaTsNCisJamMgPSAodWludClq Ow0KKwlpZiAoY3Vyc29yKSB7DQorCQlkcmF3Q2FzZShvbGRJYywgb2xkSmMp Ow0KKwkJZHJhd0Nhc2UoaWMsIGpjKTsNCisJfQ0KIAlyZXR1cm4gdHJ1ZTsN CiB9DQogDQogdm9pZCBGaWVsZDo6c2V0Q3Vyc29yKGJvb2wgc2hvdykNCiB7 DQotCWlmICggc3RhdGU9PVBsYXlpbmcgJiYgaW5zaWRlKGljLCBqYykgKSB7 DQotCQlpZiAoIGN1cnNvciAmJiAhc2hvdyApIGRyYXdDdXJzb3IoZmFsc2Up Ow0KLQkJaWYgKCAhY3Vyc29yICYmIHNob3cpIGRyYXdDdXJzb3IodHJ1ZSk7 DQotCX0NCiAJY3Vyc29yID0gc2hvdzsNCisJaWYgKCBzdGF0ZT09UGxheWlu ZyApIGRyYXdDYXNlKGljLCBqYyk7DQogfQ0KIA0KIC8vIGRyYXcgbWV0aG9k cw0KLVFQYWludGVyICpGaWVsZDo6YmVnaW4oUVBhaW50ZXIgKnB0KQ0KK3Zv aWQgRmllbGQ6OmRyYXdCb3godWludCBpLCB1aW50IGosIGJvb2wgcHJlc3Nl ZCwNCisJCQkJCWNvbnN0IFFTdHJpbmcgJnRleHQsIGNvbnN0IFFDb2xvciAq dGV4dENvbG9yLA0KKwkJCQkJY29uc3QgUVBpeG1hcCAqcGl4bWFwKQ0KIHsN Ci0JcmV0dXJuIChwdCA/IHB0IDogbmV3IFFQYWludGVyKHRoaXMpKTsNCi19 DQorCVFQYWludGVyIHAodGhpcyk7DQorCWludCB4ID0gaVRvWChpKTsNCisJ aW50IHkgPSBqVG9ZKGopOw0KIA0KLXZvaWQgRmllbGQ6OmVuZChRUGFpbnRl ciAqcCwgY29uc3QgUVBhaW50ZXIgKnB0KQ0KLXsNCi0JaWYgKHB0PT0wKSBk ZWxldGUgcDsNCi19DQorCS8vIGRyYXcgYnV0dG9uDQorCXAudHJhbnNsYXRl KHgsIHkpOw0KKwlkdW1teS0+c2V0RG93bihwcmVzc2VkKTsNCisJc3R5bGUo KS5kcmF3UHVzaEJ1dHRvbihkdW1teSwgJnApOw0KKwlwLnJlc2V0WEZvcm0o KTsNCiANCi12b2lkIEZpZWxkOjpkcmF3Qm94KGludCB4LCBpbnQgeSwgYm9v bCBwcmVzc2VkLCBRUGFpbnRlciAqcHQpDQotew0KLQlRUGFpbnRlciAqcCA9 IGJlZ2luKHB0KTsNCi0JcC0+ZXJhc2VSZWN0KHgsIHksIGNwLnNpemUsIGNw LnNpemUpOw0KLQlxRHJhd1dpblBhbmVsKHAsIHgsIHksIGNwLnNpemUsIGNw LnNpemUsIGNvbG9yR3JvdXAoKSwgIXByZXNzZWQpOw0KLQllbmQocCwgcHQp Ow0KKwkvLyBkcmF3IHRleHQgYW5kIHBpeG1hcA0KKwlzdHlsZSgpLmRyYXdJ dGVtKCZwLCB4LCB5LCBjcC5zaXplLCBjcC5zaXplLCBBbGlnbkNlbnRlciwg Y29sb3JHcm91cCgpLA0KKwkJCQkJIHRydWUsIHBpeG1hcCwgdGV4dCwgLTEs IHRleHRDb2xvcik7DQorCQ0KKwkvLyBkcmF3IGN1cnNvcg0KKwlpZiAoIGN1 cnNvciAmJiBpPT1pYyAmJiBqPT1qYyApIHsNCisJCVFSZWN0IHIgPSBzdHls ZSgpLmJ1dHRvblJlY3QoeCsxLCB5KzEsIGNwLnNpemUtMiwgY3Auc2l6ZS0y KTsNCisJCXN0eWxlKCkuZHJhd0ZvY3VzUmVjdCgmcCwgciwgY29sb3JHcm91 cCgpKTsNCisJfQ0KIH0NCiANCi12b2lkIEZpZWxkOjpkcmF3Q2FzZSh1aW50 IGksIHVpbnQgaiwgUVBhaW50ZXIgKnB0KQ0KK3ZvaWQgRmllbGQ6OmRyYXdD YXNlKHVpbnQgaSwgdWludCBqKQ0KIHsNCi0JUVBhaW50ZXIgKnAgPSBiZWdp bihwdCk7DQotCWludCB4ID0gaVRvWChpKTsNCi0JaW50IHkgPSBqVG9ZKGop Ow0KLQ0KKwlBU1NFUlQoIGluc2lkZShpLCBqKSApOw0KIAlzd2l0Y2ggKHBm aWVsZChpLCBqKS5zdGF0ZSkgew0KLQljYXNlIENvdmVyZWQ6ICAgZHJhd0Jv eCh4LCB5LCB0cnVlLCBwKTsNCisJY2FzZSBDb3ZlcmVkOiAgIGRyYXdCb3go aSwgaiwgZmFsc2UpOw0KIAkJICAgICAgICAgICAgYnJlYWs7DQotCWNhc2Ug TWFya2VkOiAgICBkcmF3Qm94KHgsIHksIHRydWUsIHApOw0KLQkJICAgICAg ICAgICAgcC0+ZHJhd1BpeG1hcCh4LCB5LCBwbV9mbGFnKTsNCisJY2FzZSBN YXJrZWQ6ICAgIGRyYXdCb3goaSwgaiwgZmFsc2UsICZwbV9mbGFnKTsNCiAJ CSAgICAgICAgICAgIGJyZWFrOw0KLQljYXNlIEVycm9yOiAgICAgZHJhd0Jv eCh4LCB5LCB0cnVlLCBwKTsNCi0JCQkJCXAtPmRyYXdQaXhtYXAoeCwgeSwg cG1fZXJyb3IpOw0KKwljYXNlIEVycm9yOiAgICAgZHJhd0JveChpLCBqLCB0 cnVlLCAmcG1fZXJyb3IpOw0KIAkJICAgICAgICAgICAgYnJlYWs7DQotCWNh c2UgVW5jZXJ0YWluOiBkcmF3Qm94KHgsIHksIHRydWUsIHApOw0KLQkJICAg ICAgICAgICAgcC0+c2V0UGVuKGJsYWNrKTsNCi0JCQkJCXAtPmRyYXdUZXh0 KHgsIHksIGNwLnNpemUsIGNwLnNpemUsIEFsaWduQ2VudGVyLCAiPyIpOw0K KwljYXNlIFVuY2VydGFpbjogZHJhd0JveChpLCBqLCBmYWxzZSwgIj8iKTsN CiAJCQkJCWJyZWFrOw0KLQljYXNlIEV4cGxvZGVkOiAgZHJhd0JveCh4LCB5 LCBmYWxzZSwgcCk7DQotCQkgICAgICAgICAgICBwLT5kcmF3UGl4bWFwKHgs IHksIHBtX2V4cGxvZGVkKTsNCisJY2FzZSBFeHBsb2RlZDogIGRyYXdCb3go aSwgaiwgdHJ1ZSwgJnBtX2V4cGxvZGVkKTsNCiAJCQkJCWJyZWFrOw0KLQlj YXNlIFVuY292ZXJlZDogZHJhd0JveCh4LCB5LCBmYWxzZSwgcCk7DQotCQkg ICAgICAgICAgICBpZiAoIHBmaWVsZChpLCBqKS5taW5lICkgcC0+ZHJhd1Bp eG1hcCh4LCB5LCBwbV9taW5lKTsNCi0JCQkJCWVsc2Ugew0KKwljYXNlIFVu Y292ZXJlZDogaWYgKCBwZmllbGQoaSwgaikubWluZSApDQorCQkgICAgICAg ICAgICAgICAgZHJhd0JveChpLCBqLCB0cnVlLCAmcG1fbWluZSk7DQorCSAg ICAgICAgICAgICAgICBlbHNlIHsNCiAJCQkJCQl1aW50IG4gPSBjb21wdXRl TmVpZ2hib3VycyhpLCBqKTsNCi0JCQkJCQlpZiAobikgew0KLQkJCQkJCQlj aGFyIG5iWzJdID0gIjAiOw0KLQkJCQkJCQluYlswXSArPSBuOw0KLQkJCQkJ CQlwLT5zZXRQZW4oY3AubnVtYmVyQ29sb3JzW24tMV0pOw0KLQkJCQkJCQlw LT5kcmF3VGV4dCh4LCB5LCBjcC5zaXplLCBjcC5zaXplLA0KLQkJCQkJCQkJ CQlBbGlnbkNlbnRlciwgbmIpOw0KLQkJCQkJCX0NCisJCQkJCQlRU3RyaW5n IG5iOw0KKwkJCQkJCWlmIChuKSBuYi5zZXROdW0obik7DQorCQkJCQkJZHJh d0JveChpLCBqLCB0cnVlLCBuYiwNCisJCQkJCQkJCW4gPyAmY3AubnVtYmVy Q29sb3JzW24tMV0gOiAwKTsNCiAJCQkJCX0NCiAJfQ0KLQ0KLQlpZiAoIGN1 cnNvciAmJiAoaW50KWk9PWljICYmIChpbnQpaj09amMgKSBkcmF3Q3Vyc29y KHRydWUsIHApOw0KLQllbmQocCwgcHQpOw0KLX0NCi0NCi12b2lkIEZpZWxk OjplcmFzZUZpZWxkKCkNCi17DQotCVFQYWludGVyIHAodGhpcyk7DQotCXAu ZXJhc2VSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKTsNCi19DQotDQot dm9pZCBGaWVsZDo6ZHJhd0N1cnNvcihib29sIHNob3csIFFQYWludGVyICpw dCkNCi17DQotCVFQYWludGVyICpwID0gYmVnaW4ocHQpOw0KLQlpZiAoc2hv dykgcC0+ZHJhd1BpeG1hcChpVG9YKGljKSwgalRvWShqYyksIHBtX2N1cnNv cik7DQotCWVsc2Ugew0KLQkJYm9vbCBiID0gY3Vyc29yOw0KLQkJaWYgKGIp IGN1cnNvciA9IGZhbHNlOw0KLQkJZHJhd0Nhc2UoaWMsIGpjLCBwKTsNCi0J CWlmIChiKSBjdXJzb3IgPSB0cnVlOw0KLQl9DQotCWVuZChwLCBwdCk7DQog fQ0KSW5kZXg6IGZpZWxkLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD UyBmaWxlOiAvaG9tZS9rZGUva2RlZ2FtZXMva21pbmVzL2ZpZWxkLmgsdg0K cmV0cmlldmluZyByZXZpc2lvbiAxLjE2DQpkaWZmIC11IC1yMS4xNiBmaWVs ZC5oDQotLS0gZmllbGQuaAkyMDAwLzA2LzE0IDE4OjQ5OjEyCTEuMTYNCisr KyBmaWVsZC5oCTIwMDAvMDgvMzEgMTk6MjE6MzcNCkBAIC0xNyw2ICsxNyw3 IEBADQogCQ0KICBwdWJsaWM6DQogICAgIEZpZWxkKFFXaWRnZXQgKnBhcmVu dCwgY29uc3QgY2hhciAqbmFtZT0wKTsNCisJdmlydHVhbCB+RmllbGQoKTsN CiANCiAJUVNpemUgc2l6ZUhpbnQoKSBjb25zdDsNCiAJUVNpemVQb2xpY3kg c2l6ZVBvbGljeSgpIGNvbnN0Ow0KQEAgLTY5LDI1ICs3MCwyNCBAQA0KIAli b29sICAgICAgZmlyc3RfY2xpY2s7DQogCWJvb2wgICAgICB1X21hcmssIGN1 cnNvcjsNCiANCi0JaW50ICBpYywgamM7ICAgICAgICAgICAgICAgLy8gY3Vy cmVudCBwb3MNCisJdWludCAgaWMsIGpjOyAgICAgICAgICAgICAgLy8gY3Vy cmVudCBwb3MNCiAJYm9vbCBfcmV2ZWFsLCBfYXV0b3JldmVhbDsgLy8gbW91 c2UgYnV0dG9uIHByZXNzZWQNCiAJTW91c2VBY3Rpb24gbWJbM107ICAgICAg ICAgLy8gbW91c2UgYmluZGluZ3MNCiANCiAJQ2FzZVByb3BlcnRpZXMgY3A7 DQotCVFQaXhtYXAgICAgICAgIHBtX2ZsYWcsIHBtX21pbmUsIHBtX2V4cGxv ZGVkLCBwbV9lcnJvciwgcG1fY3Vyc29yOw0KLQlRUHVzaEJ1dHRvbiAgICpw YjsNCisJUVBpeG1hcCAgICAgICAgcG1fZmxhZywgcG1fbWluZSwgcG1fZXhw bG9kZWQsIHBtX2Vycm9yOw0KKwlRUHVzaEJ1dHRvbiAgICpwYiwgKmR1bW15 Ow0KIA0KIAl1aW50IGNvbXB1dGVOZWlnaGJvdXJzKHVpbnQsIHVpbnQpIGNv bnN0Ow0KIAl2b2lkIHVuY292ZXIodWludCwgdWludCk7DQogCXZvaWQgY2hh bmdlQ2FzZVN0YXRlKHVpbnQsIHVpbnQsIENhc2VTdGF0ZSk7DQogCXZvaWQg bWluZVBpeG1hcChRUGl4bWFwICYsIGJvb2wgbWFzaywgQ2FzZVN0YXRlKSBj b25zdDsNCi0Jdm9pZCBwcmVzc0Nhc2UodWludCwgdWludCwgYm9vbCwgUVBh aW50ZXIgKiA9IDApOw0KKwl2b2lkIHByZXNzQ2FzZSh1aW50LCB1aW50LCBi b29sKTsNCiAJdm9pZCBwcmVzc0NsZWFyRnVuY3Rpb24odWludCwgdWludCwg Ym9vbCk7DQogCXZvaWQgdW5jb3ZlckNhc2UodWludCwgdWludCk7DQogCWJv b2wgaW5zaWRlKGludCwgaW50KSBjb25zdDsNCi0JYm9vbCBwbGFjZUN1cnNv cihpbnQsIGludCwgYm9vbCBjaGVjayA9IGZhbHNlKTsNCisJYm9vbCBwbGFj ZUN1cnNvcihpbnQsIGludCk7DQogCXZvaWQgZmxhZ1BpeG1hcChRUGl4bWFw ICYsIGJvb2wgbWFzaykgY29uc3Q7DQotCXZvaWQgY3Vyc29yUGl4bWFwKFFQ aXhtYXAgJiwgYm9vbCBtYXNrKSBjb25zdDsNCiAJdm9pZCBhdXRvUmV2ZWFs KCk7DQogCXZvaWQgX2VuZEdhbWUoKTsNCiANCkBAIC05OCwxMiArOTgsMTIg QEANCiAJaW50IGlUb1godWludCBpKSBjb25zdDsNCiAJaW50IGpUb1kodWlu dCBqKSBjb25zdDsNCiANCi0JUVBhaW50ZXIgKmJlZ2luKFFQYWludGVyICop Ow0KLQl2b2lkIGVuZChRUGFpbnRlciAqLCBjb25zdCBRUGFpbnRlciAqKTsN Ci0Jdm9pZCBkcmF3Q2FzZSh1aW50LCB1aW50LCBRUGFpbnRlciAqID0gMCk7 DQotCXZvaWQgZHJhd0JveChpbnQsIGludCwgYm9vbCwgUVBhaW50ZXIgKiA9 IDApOw0KKwl2b2lkIGRyYXdDYXNlKHVpbnQsIHVpbnQpOw0KKwl2b2lkIGRy YXdCb3godWludCwgdWludCwgYm9vbCwgY29uc3QgUVN0cmluZyAmdGV4dCA9 IFFTdHJpbmc6Om51bGwsDQorCQkJCSBjb25zdCBRQ29sb3IgKmNvbG9yID0g MCwgY29uc3QgUVBpeG1hcCAqcGl4bWFwID0gMCk7DQorCXZvaWQgZHJhd0Jv eCh1aW50IGksIHVpbnQgaiwgYm9vbCBwcmVzc2VkLCBjb25zdCBRUGl4bWFw ICpwaXhtYXApDQorCQl7IGRyYXdCb3goaSwgaiwgcHJlc3NlZCwgUVN0cmlu Zzo6bnVsbCwgMCwgcGl4bWFwKTsgfQ0KIAl2b2lkIGVyYXNlRmllbGQoKTsN Ci0Jdm9pZCBkcmF3Q3Vyc29yKGJvb2wgc2hvdywgUVBhaW50ZXIgKiA9IDAp Ow0KIA0KIAl2b2lkIHNldFVNYXJrKGJvb2wgdW0pIHsgdV9tYXJrID0gdW07 IH0NCiAJdm9pZCBzZXRDYXNlUHJvcGVydGllcyhjb25zdCBDYXNlUHJvcGVy dGllcyAmKTsNCkluZGV4OiBtYWluLmNwcA0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KUkNTIGZpbGU6IC9ob21lL2tkZS9rZGVnYW1lcy9rbWluZXMvbWFp bi5jcHAsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjQ4DQpkaWZmIC11IC1y MS40OCBtYWluLmNwcA0KLS0tIG1haW4uY3BwCTIwMDAvMDgvMjMgMjA6MzQ6 MzcJMS40OA0KKysrIG1haW4uY3BwCTIwMDAvMDgvMzEgMTk6MjE6NDkNCkBA IC0yMDcsNyArMjA3LDcgQEANCiAJCQkJCQkgREVTQ1JJUFRJT04sIEtBYm91 dERhdGE6OkxpY2Vuc2VfR1BMLA0KIAkJCQkJCSBDT1BZTEVGVCwgMCwgSE9N RVBBR0UpOw0KICAgICBhYm91dERhdGEuYWRkQXV0aG9yKCJOaWNvbGFzIEhh ZGFjZWsiLCAwLCBFTUFJTCk7DQotCWFib3V0RGF0YS5hZGRDcmVkaXQoIkFu ZHJlYXMgWmVoZW5kZXIiLCAvKkkxOE5fTk9PUCgqLyJTbWlsZXkgcGl4bWFw cyIvKikqLyk7DQorCWFib3V0RGF0YS5hZGRDcmVkaXQoIkFuZHJlYXMgWmVo ZW5kZXIiLCBJMThOX05PT1AoIlNtaWxleSBwaXhtYXBzIikpOw0KICAgICBL Q21kTGluZUFyZ3M6OmluaXQoYXJnYywgYXJndiwgJmFib3V0RGF0YSk7DQog DQogICAgIEtBcHBsaWNhdGlvbiBhOw0KSW5kZXg6IHZlcnNpb24uaA0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9ob21lL2tkZS9rZGVn YW1lcy9rbWluZXMvdmVyc2lvbi5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24g MS4yNg0KZGlmZiAtdSAtcjEuMjYgdmVyc2lvbi5oDQotLS0gdmVyc2lvbi5o CTIwMDAvMDgvMjMgMjA6MzQ6MzcJMS4yNg0KKysrIHZlcnNpb24uaAkyMDAw LzA4LzMxIDE5OjIxOjQ5DQpAQCAtMSw1ICsxLDUgQEANCi0jZGVmaW5lIFZF UlNJT04JICAgICAiMi4wLjYiDQotI2RlZmluZSBMT05HX1ZFUlNJT04gIjIu MC42ICgyMSBBdWd1c3QgMjAwMCkiDQorI2RlZmluZSBWRVJTSU9OCSAgICAg IjIuMC43Ig0KKyNkZWZpbmUgTE9OR19WRVJTSU9OICIyLjAuNyAoMzEgQXVn dXN0IDIwMDApIg0KICNkZWZpbmUgQ09QWUxFRlQgICAgICIoYykgMTk5Ni0y MDAwLCBOaWNvbGFzIEhhZGFjZWsiDQogI2RlZmluZSBFTUFJTCAgICAgICAg ImhhZGFjZWtAa2RlLm9yZyINCiAjZGVmaW5lIEhPTUVQQUdFICAgICAiaHR0 cDovL2F6aHlkLmZyZWUuZnIvS0RFL2ttaW5lcy5waHAzIg0K --8323328-1172241426-967758510=:14051--