ZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5jCmluZGV4IDJkYmJiMjIuLjNjYjNiZDcgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAtNjEyLDYgKzYxMiw3IEBACiBzdGF0aWMgdm9pZCBmX3N5c3RlbSBfX0FSR1MoKHR5cHZhbF9UICphcmd2YXJzLCB0eXB2YWxfVCAqcmV0dHYpKTsKIHN0YXRpYyB2b2lkIGZfdGFnbGlzdCBfX0FSR1MoKHR5cHZhbF9UICphcmd2YXJzLCB0eXB2YWxfVCAqcmV0dHYpKTsKIHN0YXRpYyB2b2lkIGZfdGVtcG5hbWUgX19BUkdTKCh0eXB2YWxfVCAqYXJndmFycywgdHlwdmFsX1QgKnJldHR2KSk7CitzdGF0aWMgdm9pZCBmX3Rlc3QgX19BUkdTKCh0eXB2YWxfVCAqYXJndmFycywgdHlwdmFsX1QgKnJldHR2KSk7CiBzdGF0aWMgdm9pZCBmX3RvbG93ZXIgX19BUkdTKCh0eXB2YWxfVCAqYXJndmFycywgdHlwdmFsX1QgKnJldHR2KSk7CiBzdGF0aWMgdm9pZCBmX3RvdXBwZXIgX19BUkdTKCh0eXB2YWxfVCAqYXJndmFycywgdHlwdmFsX1QgKnJldHR2KSk7CiBzdGF0aWMgdm9pZCBmX3RyIF9fQVJHUygodHlwdmFsX1QgKmFyZ3ZhcnMsIHR5cHZhbF9UICpyZXR0dikpOwpAQCAtNjg0OSw2ICs2ODUwLDcgQEAKICAgICB7InN5c3RlbSIsCQkxLCAyLCBmX3N5c3RlbX0sCiAgICAgeyJ0YWdsaXN0IiwJCTEsIDEsIGZfdGFnbGlzdH0sCiAgICAgeyJ0ZW1wbmFtZSIsCTAsIDAsIGZfdGVtcG5hbWV9LAorICAgIHsidGVzdCIsCQkxLCAxLCBmX3Rlc3R9LAogICAgIHsidG9sb3dlciIsCQkxLCAxLCBmX3RvbG93ZXJ9LAogICAgIHsidG91cHBlciIsCQkxLCAxLCBmX3RvdXBwZXJ9LAogICAgIHsidHIiLAkJMywgMywgZl90cn0sCkBAIC0xMTk1Miw3ICsxMTk1NCw3IEBACiB7CiAgICAgcmV0dHYtPnZfdHlwZSA9IFZBUl9TVFJJTkc7CiAgICAgcmV0dHYtPnZ2YWwudl9zdHJpbmcgPSBOVUxMOwotI2lmZGVmIEhBVkVfU1REQVJHX0gKKyNpZmRlZiBIQVZFX1NUREFSR19ICSAgICAvKiBvbmx5IHZlcnkgb2xkIGNvbXBpbGVycyBjYW4ndCBkbyB0aGlzICovCiAgICAgewogCWNoYXJfdQlidWZbTlVNQlVGTEVOXTsKIAlpbnQJbGVuOwpAQCAtMTE5NjEsMTAgKzExOTYzLDggQEAKIAljaGFyCSpmbXQ7CiAJdmFfbGlzdAlhcDsgLyogZHVtbXkgKi8KIAotIyBpZmRlZiBMSU5UCi0JLyogYXZvaWQgd2FybmluZyBmb3IgImFwIiB1c2VkIGJlZm9yZSBzZXQ7IGl0IGlzIHVudXNlZC4gKi8KKwkvKiBBdm9pZCB3YXJuaW5nIGZvciAiYXAiIHVzZWQgYmVmb3JlIHNldDsgaXQncyB1bnVzZWQuICovCiAJdmFfc3RhcnQoYXAsIHJldHR2KTsKLSMgZW5kaWYKIAogCS8qIEdldCB0aGUgcmVxdWlyZWQgbGVuZ3RoLCBhbGxvY2F0ZSB0aGUgYnVmZmVyIGFuZCBkbyBpdCBmb3IgcmVhbC4gKi8KIAlkaWRfZW1zZyA9IEZBTFNFOwpAQCAtMTQ0OTAsNiArMTQ0OTAsMzggQEAKIH0KIAogLyoKKyAqICJ0ZXN0KGxpc3QpIiBmdW5jdGlvbjogSnVzdCBjaGVja2luZyB0aGUgd2FsbHMuLi4KKyAqLworLypBUkdTVVNFRCovCisgICAgc3RhdGljIHZvaWQKK2ZfdGVzdChhcmd2YXJzLCByZXR0dikKKyAgICB0eXB2YWxfVAkqYXJndmFyczsKKyAgICB0eXB2YWxfVAkqcmV0dHY7Cit7CisgICAgLyogVXNlZCBmb3IgdW5pdCB0ZXN0aW5nLiAgQ2hhbmdlIHRoZSBjb2RlIGJlbG93IHRvIHlvdXIgbGlraW5nLiAqLworI2lmIDAKKyAgICBsaXN0aXRlbV9UCSpsaTsKKyAgICBsaXN0X1QJKmw7CisgICAgY2hhcl91CSpiYWQsICpnb29kOworCisgICAgaWYgKGFyZ3ZhcnNbMF0udl90eXBlICE9IFZBUl9MSVNUKQorCXJldHVybjsKKyAgICBsID0gYXJndmFyc1swXS52dmFsLnZfbGlzdDsKKyAgICBpZiAobCA9PSBOVUxMKQorCXJldHVybjsKKyAgICBsaSA9IGwtPmx2X2ZpcnN0OworICAgIGlmIChsaSA9PSBOVUxMKQorCXJldHVybjsKKyAgICBiYWQgPSBnZXRfdHZfc3RyaW5nKCZsaS0+bGlfdHYpOworICAgIGxpID0gbGktPmxpX25leHQ7CisgICAgaWYgKGxpID09IE5VTEwpCisJcmV0dXJuOworICAgIGdvb2QgPSBnZXRfdHZfc3RyaW5nKCZsaS0+bGlfdHYpOworICAgIHJldHR2LT52dmFsLnZfbnVtYmVyID0gdGVzdF9lZGl0X3Njb3JlKGJhZCwgZ29vZCk7CisjZW5kaWYKK30KKworLyoKICAqICJ0b2xvd2VyKHN0cmluZykiIGZ1bmN0aW9uCiAgKi8KICAgICBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdDU4LmluIGIvc3JjL3Rlc3RkaXIvdGVzdDU4LmluCmluZGV4IGUwNTMyNjEuLjFiZWI0NTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3Q1OC5pbgorKysgYi9zcmMvdGVzdGRpci90ZXN0NTguaW4KQEAgLTEwNSwxMiArMTA1LDMxIEBACiA6bWtzcGVsbCEgWHRlc3QgWHRlc3QKIDpzZXQgc3BlbGxmaWxlPQogOnNldCBzcGw9WHRlc3QubGF0aW4xLnNwbAotOm1lc3MKIDpzcGVsbGR1bXAKIDFHeUc6cQogOiRwdXQKIDpjYWxsIFNwZWxsVGVzdCgpCiA6IgorOiIgQ29tcG91bmRpbmcKK2dnOi9eY29tcGFmZnN0YXJ0LysxLC9eY29tcGFmZmVuZC8tMXchIFh0ZXN0LmFmZgorZ2c6L15jb21wZGljc3RhcnQvKzEsL15jb21wZGljZW5kLy0xdyEgWHRlc3QuZGljCis6bWtzcGVsbCEgWHRlc3QgWHRlc3QKKzpzZXQgc3BlbGxmaWxlPQorOnNldCBzcGw9WHRlc3QubGF0aW4xLnNwbAorOnNwZWxsZHVtcAorMUd5RzpxCis6JHB1dAorL15jb21wdGVzdDoKKzpmb3IgaSBpbiByYW5nZSgxMikKK25vcm1hbCBdc21tCitsZXQgc3RyID0gc3BlbGxiYWR3b3JkKCkKKyRwdXQgPXN0cgorbm9ybWFsIGBtCitsZXQgbHN0ID0gc3BlbGxzdWdnZXN0KHN0ciwgMykKKyRwdXQgPXN0cmluZyhsc3QpCitub3JtYWwgYG0KK2VuZGZvcgorOiIKIGdnOi9edGVzdCBvdXRwdXQ6Lywkd3EhIHRlc3Qub3V0CiBFTkRURVNUCiAKQEAgLTM4NCw2ICs0MDMsNjEgQEAKIGTp9HIKIGRpY2VuZAogCitjb21wYWZmc3RhcnQKK1NFVCBJU084ODU5LTEKKworRk9MICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/worTE9XICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/worVVBQICDAwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d7f/worCitDT01QT1VOREZMQUdTIG0rCitDT01QT1VOREZMQUdTIHNtKmUKK0NPTVBPVU5ERkxBR1Mgc20rCitDT01QT1VORE1JTiAzCitDT01QT1VORE1BWCAzCisKK0NPTVBPVU5EU1lMTUFYIDUKK1NZTExBQkxFIGHhZelp7W/z9vV1+vz7eS9hYS9hdS9lYS9lZS9laS9pZS9vYS9vZS9vby9vdS91dS91aQorCitNQVAgOQorTUFQIGHg4eLj5OUKK01BUCBl6Onq6worTUFQIGns7e7vCitNQVAgb/Lz9PX2CitNQVAgdfn6+/wKK01BUCBu8QorTUFQIGPnCitNQVAgef/9CitNQVAgc98KKworTkVFREFGRklYIHgKKworUEZYUE9TVFBPTkUKKworTUlEV09SRCAnLQorCitTRlggcSBOIDEKK1NGWCBxICAgMCAgICAtb2sgLgorCitTRlggYSBZIDIKK1NGWCBhIDAgcyAuCitTRlggYSAwIGl6ZSAuIG5vY29tcAorCitQRlggcCBOIDEKK1BGWCBwIDAgcHJlIC4KK2NvbXBhZmZlbmQKKworY29tcGRpY3N0YXJ0CisxMjM0Cit3b3JkL20KK3V0aWwvYW0KK3Byby94cQordG9tYXRvL20KK2JvcmsvbXAKK3N0YXJ0L3MKK2VuZC9lCitjb21wZGljZW5kCisKIGFkZHN0YXJ0CiAvcmVnaW9ucz11c2dibnoKIGVsZXF1aW50LzIKQEAgLTQwMiw1ICs0NzYsMTUgQEAKIHRlc3QyOgogZWxlcXVpbnQgdGVzdCBlbGVrd2ludCB0ZXN0IGVsZWt3ZW50IGFzZGYKIAorY29tcHRlc3Q6Cit3b3JkIHV0aWwKK3dvcmR1dGlsIHdvcmR1dGlscyB3b3JkdXRpbGl6ZQorcHJvIHByby1vaworYm9yayBib3JrYm9yayBib3JrYm9ya2JvcmsgYm9ya2Jvcmtib3JrYm9yayBib3JrYm9ya2Jvcmtib3JrYm9yawordG9tYXRvIHRvbWF0b3RvbWF0byB0b21hdG90b21hdG90b21hdG8KK3N0YXJ0ZW5kIGVuZHN0YXJ0IGVuZGVuZCBzdGFydHN0YXJ0CitzdGFydHdvcmQgc3RhcnR3b3Jkd29yZCB3b3Jkc3RhcnQgc3RhcnR3b3JkZW5kIHN0YXJ0d29yZHdvcmRlbmQKK3ByZWJvcmsgcHJlYm9ya3ByZWJvcmsgcHJlYm9ya2JvcmtwcmVib3JrIHByZWJvcmtwcmVib3JrYm9yaworYm9ya3ByZWJvcmtwcmVib3JrYm9yawogCiB0ZXN0IG91dHB1dDoK