From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Tremer To: development@lists.ipfire.org Subject: Re: [PATCH] squid 3.5.20: latest patches from upstream Date: Tue, 02 Aug 2016 16:14:49 +0100 Message-ID: <1470150889.2710.427.camel@ipfire.org> In-Reply-To: <20160724114425.28196-1-matthias.fischer@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5882895262401611461==" List-Id: --===============5882895262401611461== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhpcyBvbmUgd29uJ3QgYXBwbHkgb250byBuZXh0Li4uIDooCgpDb3VsZCB5b3UgcGxlYXNlIGNo ZWNrIHdoeT8KCk9uIFN1biwgMjAxNi0wNy0yNCBhdCAxMzo0NCArMDIwMCwgTWF0dGhpYXMgRmlz Y2hlciB3cm90ZToKPiBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGaXNjaGVyIDxtYXR0aGlhcy5m aXNjaGVyKGEpaXBmaXJlLm9yZz4KPiAtLS0KPiDCoGxmcy9zcXVpZMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDMgKwo+ IMKgc3JjL3BhdGNoZXMvc3F1aWQvc3F1aWQtMy41LTE0MDY3LnBhdGNoIHwgMzgxCj4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKPiDCoHNyYy9wYXRjaGVzL3NxdWlkL3NxdWlkLTMu NS0xNDA2OC5wYXRjaCB8wqDCoDM1ICsrKwo+IMKgc3JjL3BhdGNoZXMvc3F1aWQvc3F1aWQtMy41 LTE0MDY5LnBhdGNoIHzCoMKgMzAgKysrCj4gwqA0IGZpbGVzIGNoYW5nZWQsIDQ0OSBpbnNlcnRp b25zKCspCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3BhdGNoZXMvc3F1aWQvc3F1aWQtMy41 LTE0MDY3LnBhdGNoCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3BhdGNoZXMvc3F1aWQvc3F1 aWQtMy41LTE0MDY4LnBhdGNoCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3BhdGNoZXMvc3F1 aWQvc3F1aWQtMy41LTE0MDY5LnBhdGNoCj4gCj4gZGlmZiAtLWdpdCBhL2xmcy9zcXVpZCBiL2xm cy9zcXVpZAo+IGluZGV4IDViYzk3NmUuLmE4OGYwYzUgMTAwNjQ0Cj4gLS0tIGEvbGZzL3NxdWlk Cj4gKysrIGIvbGZzL3NxdWlkCj4gQEAgLTcwLDYgKzcwLDkgQEAgJChzdWJzdCAlLCVfTUQ1LCQo b2JqZWN0cykpIDoKPiDCoCQoVEFSR0VUKSA6ICQocGF0c3Vic3QgJSwkKERJUl9ETCkvJSwkKG9i amVjdHMpKQo+IMKgCUAkKFBSRUJVSUxEKQo+IMKgCUBybSAtcmYgJChESVJfQVBQKSAmJiBjZCAk KERJUl9TUkMpICYmIHRhciB4YWYgJChESVJfREwpLyQoRExfRklMRSkKPiArCWNkICQoRElSX0FQ UCkgJiYgcGF0Y2ggLU5wMCAtaSAkKERJUl9TUkMpL3NyYy9wYXRjaGVzL3NxdWlkL3NxdWlkLQo+ IDMuNS0xNDA2Ny5wYXRjaAo+ICsJY2QgJChESVJfQVBQKSAmJiBwYXRjaCAtTnAwIC1pICQoRElS X1NSQykvc3JjL3BhdGNoZXMvc3F1aWQvc3F1aWQtCj4gMy41LTE0MDY4LnBhdGNoCj4gKwljZCAk KERJUl9BUFApICYmIHBhdGNoIC1OcDAgLWkgJChESVJfU1JDKS9zcmMvcGF0Y2hlcy9zcXVpZC9z cXVpZC0KPiAzLjUtMTQwNjkucGF0Y2gKPiDCoAljZCAkKERJUl9BUFApICYmIHBhdGNoIC1OcDAg LWkgJChESVJfU1JDKS9zcmMvcGF0Y2hlcy9zcXVpZC0zLjUuMTctCj4gZml4LW1heC1maWxlLWRl c2NyaXB0b3JzLnBhdGNoCj4gwqAKPiDCoAljZCAkKERJUl9BUFApICYmIGF1dG9yZWNvbmYgLXZm aQo+IGRpZmYgLS1naXQgYS9zcmMvcGF0Y2hlcy9zcXVpZC9zcXVpZC0zLjUtMTQwNjcucGF0Y2gK PiBiL3NyYy9wYXRjaGVzL3NxdWlkL3NxdWlkLTMuNS0xNDA2Ny5wYXRjaAo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uOGQ5Y2IyMQo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9zcmMvcGF0Y2hlcy9zcXVpZC9zcXVpZC0zLjUtMTQwNjcucGF0Y2gKPiBAQCAtMCwwICsxLDM4 MSBAQAo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiArcmV2bm86IDE0MDY3Cj4gK3JldmlzaW9uLWlkOiBzcXVpZDMoYSl0cmVl bmV0LmNvLm56LTIwMTYwNzIzMDcxNjIwLTF3enFwYnlpMXJrNXc2dmcKPiArcGFyZW50OiBzcXVp ZDMoYSl0cmVlbmV0LmNvLm56LTIwMTYwNzAxMTEzNjE2LXZwamFrMXBxNHVlY2FkZDIKPiArZml4 ZXMgYnVnOiBodHRwOi8vYnVncy5zcXVpZC1jYWNoZS5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MzQK PiArY29tbWl0dGVyOiBBbW9zIEplZmZyaWVzIDxzcXVpZDMoYSl0cmVlbmV0LmNvLm56Pgo+ICti cmFuY2ggbmljazogMy41Cj4gK3RpbWVzdGFtcDogU2F0IDIwMTYtMDctMjMgMTk6MTY6MjAgKzEy MDAKPiArbWVzc2FnZToKPiArwqDCoEJ1ZyA0NTM0OiBhc3NlcnRpb24gZmFpbHVyZSBpbiB4Y2Fs bG9jIHdoZW4gdXNpbmcgbWFueSBjYWNoZV9kaXIKPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyMgQmF6YWFyIG1lcmdlIGRp cmVjdGl2ZSBmb3JtYXQgMiAoQmF6YWFyIDAuOTApCj4gKyMgcmV2aXNpb25faWQ6IHNxdWlkMyhh KXRyZWVuZXQuY28ubnotMjAxNjA3MjMwNzE2MjAtMXd6cXBieWkxcms1dzZ2Zwo+ICsjIHRhcmdl dF9icmFuY2g6IGh0dHA6Ly9ienIuc3F1aWQtY2FjaGUub3JnL2J6ci9zcXVpZDMvMy41Cj4gKyMg dGVzdGFtZW50X3NoYTE6IGZjZDY2M2YwZmQ0YTI0ZDUwNWY4MWViOTRlZjk1ZDYyN2E0Y2EzNjMK PiArIyB0aW1lc3RhbXA6IDIwMTYtMDctMjMgMDc6MjQ6MDEgKzAwMDAKPiArIyBzb3VyY2VfYnJh bmNoOiBodHRwOi8vYnpyLnNxdWlkLWNhY2hlLm9yZy9ienIvc3F1aWQzLzMuNQo+ICsjIGJhc2Vf cmV2aXNpb25faWQ6IHNxdWlkMyhhKXRyZWVuZXQuY28ubnotMjAxNjA3MDExMTM2MTYtXAo+ICsj wqDCoMKgdnBqYWsxcHE0dWVjYWRkMgo+ICsjwqAKPiArIyBCZWdpbiBwYXRjaAo+ICs9PT0gbW9k aWZpZWQgZmlsZSAnc3JjL0NhY2hlRGlnZXN0LmNjJwo+ICstLS0gc3JjL0NhY2hlRGlnZXN0LmNj CTIwMTYtMDEtMDEgMDA6MTQ6MjcgKzAwMDAKPiArKysrIHNyYy9DYWNoZURpZ2VzdC5jYwkyMDE2 LTA3LTIzIDA3OjE2OjIwICswMDAwCj4gK0BAIC0zNSwxMiArMzUsMTIgQEAKPiArIHN0YXRpYyB1 aW50MzJfdCBoYXNoZWRfa2V5c1s0XTsKPiArwqAKPiArIHN0YXRpYyB2b2lkCj4gKy1jYWNoZURp Z2VzdEluaXQoQ2FjaGVEaWdlc3QgKiBjZCwgaW50IGNhcGFjaXR5LCBpbnQgYnBlKQo+ICsrY2Fj aGVEaWdlc3RJbml0KENhY2hlRGlnZXN0ICogY2QsIHVpbnQ2NF90IGNhcGFjaXR5LCB1aW50OF90 IGJwZSkKPiArIHsKPiArLcKgwqDCoMKgY29uc3Qgc2l6ZV90IG1hc2tfc2l6ZSA9IGNhY2hlRGln ZXN0Q2FsY01hc2tTaXplKGNhcGFjaXR5LCBicGUpOwo+ICsrwqDCoMKgwqBjb25zdCB1aW50MzJf dCBtYXNrX3NpemUgPSBjYWNoZURpZ2VzdENhbGNNYXNrU2l6ZShjYXBhY2l0eSwgYnBlKTsKPiAr wqDCoMKgwqDCoGFzc2VydChjZCk7Cj4gK8KgwqDCoMKgwqBhc3NlcnQoY2FwYWNpdHkgPiAwICYm IGJwZSA+IDApOwo+ICstwqDCoMKgwqBhc3NlcnQobWFza19zaXplID4gMCk7Cj4gKyvCoMKgwqDC oGFzc2VydChtYXNrX3NpemUgIT0gMCk7Cj4gK8KgwqDCoMKgwqBjZC0+Y2FwYWNpdHkgPSBjYXBh Y2l0eTsKPiArwqDCoMKgwqDCoGNkLT5iaXRzX3Blcl9lbnRyeSA9IGJwZTsKPiArwqDCoMKgwqDC oGNkLT5tYXNrX3NpemUgPSBtYXNrX3NpemU7Cj4gK0BAIC01MCw3ICs1MCw3IEBACj4gKyB9Cj4g K8KgCj4gKyBDYWNoZURpZ2VzdCAqCj4gKy1jYWNoZURpZ2VzdENyZWF0ZShpbnQgY2FwYWNpdHks IGludCBicGUpCj4gKytjYWNoZURpZ2VzdENyZWF0ZSh1aW50NjRfdCBjYXBhY2l0eSwgdWludDhf dCBicGUpCj4gKyB7Cj4gK8KgwqDCoMKgwqBDYWNoZURpZ2VzdCAqY2QgPSAoQ2FjaGVEaWdlc3Qg KiltZW1BbGxvY2F0ZShNRU1fQ0FDSEVfRElHRVNUKTsKPiArwqDCoMKgwqDCoGFzc2VydChTUVVJ RF9NRDVfRElHRVNUX0xFTkdUSCA9PSAxNik7wqDCoC8qIG91ciBoYXNoIGZ1bmN0aW9ucyByZWx5 IG9uIDE2Cj4gYnl0ZSBrZXlzICovCj4gK0BAIC05Nyw3ICs5Nyw3IEBACj4gK8KgCj4gKyAvKiBj aGFuZ2VzIG1hc2sgc2l6ZSwgcmVzZXRzIGJpdHMgdG8gMCwgcHJlc2VydmVzICJjZCIgcG9pbnRl ciAqLwo+ICsgdm9pZAo+ICstY2FjaGVEaWdlc3RDaGFuZ2VDYXAoQ2FjaGVEaWdlc3QgKiBjZCwg aW50IG5ld19jYXApCj4gKytjYWNoZURpZ2VzdENoYW5nZUNhcChDYWNoZURpZ2VzdCAqIGNkLCB1 aW50NjRfdCBuZXdfY2FwKQo+ICsgewo+ICvCoMKgwqDCoMKgYXNzZXJ0KGNkKTsKPiArwqDCoMKg wqDCoGNhY2hlRGlnZXN0Q2xlYW4oY2QpOwo+ICtAQCAtMjc4LDEyICsyNzgsMTIgQEAKPiArwqDC oMKgwqDCoHN0b3JlQXBwZW5kUHJpbnRmKGUsICIlcyBkaWdlc3Q6IHNpemU6ICVkIGJ5dGVzXG4i LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGFiZWwg PyBsYWJlbCA6ICIiLCBzdGF0cy5iaXRfY291bnQgLyA4Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKTsKPiArLcKgwqDCoMKgc3RvcmVBcHBlbmRQcmludGYo ZSwgIlx0IGVudHJpZXM6IGNvdW50OiAlZCBjYXBhY2l0eTogJWQgdXRpbDogJWQlJVxuIiwKPiAr K8KgwqDCoMKgc3RvcmVBcHBlbmRQcmludGYoZSwgIlx0IGVudHJpZXM6IGNvdW50OiAlIiBQUkl1 NjQgIiBjYXBhY2l0eTogJSIgUFJJdTY0Cj4gIiB1dGlsOiAlZCUlXG4iLAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2QtPmNvdW50LAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2QtPmNhcGFjaXR5LAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeHBlcmNlbnRJbnQo Y2QtPmNvdW50LCBjZC0+Y2FwYWNpdHkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgKTsKPiArLcKgwqDCoMKgc3RvcmVBcHBlbmRQcmludGYoZSwgIlx0IGRl bGV0aW9uIGF0dGVtcHRzOiAlZFxuIiwKPiArK8KgwqDCoMKgc3RvcmVBcHBlbmRQcmludGYoZSwg Ilx0IGRlbGV0aW9uIGF0dGVtcHRzOiAlIiBQUkl1NjQgIlxuIiwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNkLT5kZWxfY291bnQKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqApOwo+ICvCoMKgwqDCoMKgc3RvcmVB cHBlbmRQcmludGYoZSwgIlx0IGJpdHM6IHBlciBlbnRyeTogJWQgb246ICVkIGNhcGFjaXR5OiAl ZCB1dGlsOgo+ICVkJSVcbiIsCj4gK0BAIC0yOTcsMTYgKzI5NywxOCBAQAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCk7Cj4gKyB9Cj4gK8KgCj4gKy1zaXpl X3QKPiArLWNhY2hlRGlnZXN0Q2FsY01hc2tTaXplKGludCBjYXAsIGludCBicGUpCj4gKyt1aW50 MzJfdAo+ICsrY2FjaGVEaWdlc3RDYWxjTWFza1NpemUodWludDY0X3QgY2FwLCB1aW50OF90IGJw ZSkKPiArIHsKPiArLcKgwqDCoMKgcmV0dXJuIChzaXplX3QpIChjYXAgKiBicGUgKyA3KSAvIDg7 Cj4gKyvCoMKgwqDCoHVpbnQ2NF90IGJpdENvdW50ID0gKGNhcCAqIGJwZSkgKyA3Owo+ICsrwqDC oMKgwqBhc3NlcnQoYml0Q291bnQgPCBJTlRfTUFYKTsgLy8gZG9udCAzMS1iaXQgb3ZlcmZsb3cg bGF0ZXIKPiArK8KgwqDCoMKgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90PihiaXRDb3VudCAv IDgpOwo+ICsgfQo+ICvCoAo+ICsgc3RhdGljIHZvaWQKPiArIGNhY2hlRGlnZXN0SGFzaEtleShj b25zdCBDYWNoZURpZ2VzdCAqIGNkLCBjb25zdCBjYWNoZV9rZXkgKiBrZXkpCj4gKyB7Cj4gKy3C oMKgwqDCoGNvbnN0IHVuc2lnbmVkIGludCBiaXRfY291bnQgPSBjZC0+bWFza19zaXplICogODsK PiArK8KgwqDCoMKgY29uc3QgdWludDMyX3QgYml0X2NvdW50ID0gY2QtPm1hc2tfc2l6ZSAqIDg7 Cj4gK8KgwqDCoMKgwqB1bnNpZ25lZCBpbnQgdG1wX2tleXNbNF07Cj4gK8KgwqDCoMKgwqAvKiB3 ZSBtdXN0IG1lbWNweSB0byBlbnN1cmUgYWxpZ25tZW50ICovCj4gK8KgwqDCoMKgwqBtZW1jcHko dG1wX2tleXMsIGtleSwgc2l6ZW9mKHRtcF9rZXlzKSk7Cj4gKwo+ICs9PT0gbW9kaWZpZWQgZmls ZSAnc3JjL0NhY2hlRGlnZXN0LmgnCj4gKy0tLSBzcmMvQ2FjaGVEaWdlc3QuaAkyMDE2LTAxLTAx IDAwOjE0OjI3ICswMDAwCj4gKysrKyBzcmMvQ2FjaGVEaWdlc3QuaAkyMDE2LTA3LTIzIDA3OjE2 OjIwICswMDAwCj4gK0BAIC0yMiwyMyArMjIsMjMgQEAKPiArIHsKPiArIHB1YmxpYzoKPiArwqDC oMKgwqDCoC8qIHB1YmxpYywgcmVhZC1vbmx5ICovCj4gKy3CoMKgwqDCoGNoYXIgKm1hc2s7wqDC oMKgwqDCoMKgwqDCoMKgLyogYml0IG1hc2sgKi8KPiArLcKgwqDCoMKgaW50IG1hc2tfc2l6ZTvC oMKgwqDCoMKgwqAvKiBtYXNrIHNpemUgaW4gYnl0ZXMgKi8KPiArLcKgwqDCoMKgaW50IGNhcGFj aXR5O8KgwqDCoMKgwqDCoMKgLyogZXhwZWN0ZWQgbWF4aW11bSBmb3IgLmNvdW50LCBub3QgYSBo YXJkIGxpbWl0ICovCj4gKy3CoMKgwqDCoGludCBiaXRzX3Blcl9lbnRyeTvCoMKgwqDCoMKgLyog bnVtYmVyIG9mIGJpdHMgYWxsb2NhdGVkIGZvciBlYWNoIGVudHJ5IGZyb20KPiBjYXBhY2l0eSAq Lwo+ICstwqDCoMKgwqBpbnQgY291bnQ7wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBudW1iZXIgb2Yg ZGlnZXN0ZWQgZW50cmllcyAqLwo+ICstwqDCoMKgwqBpbnQgZGVsX2NvdW50O8KgwqDCoMKgwqDC oC8qIG51bWJlciBvZiBkZWxldGlvbnMgcGVyZm9ybWVkIHNvIGZhciAqLwo+ICsrwqDCoMKgwqB1 aW50NjRfdCBjb3VudDvCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIG51bWJlciBvZiBkaWdlc3RlZCBl bnRyaWVzICovCj4gKyvCoMKgwqDCoHVpbnQ2NF90IGRlbF9jb3VudDvCoMKgwqDCoMKgwqAvKiBu dW1iZXIgb2YgZGVsZXRpb25zIHBlcmZvcm1lZCBzbyBmYXIgKi8KPiArK8KgwqDCoMKgdWludDY0 X3QgY2FwYWNpdHk7wqDCoMKgwqDCoMKgwqAvKiBleHBlY3RlZCBtYXhpbXVtIGZvciAuY291bnQs IG5vdCBhIGhhcmQKPiBsaW1pdCAqLwo+ICsrwqDCoMKgwqBjaGFyICptYXNrO8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAvKiBiaXQgbWFzayAqLwo+ICsrwqDCoMKgwqB1aW50MzJfdCBtYXNr X3NpemU7wqDCoMKgwqDCoMKgLyogbWFzayBzaXplIGluIGJ5dGVzICovCj4gKyvCoMKgwqDCoGlu dDhfdCBiaXRzX3Blcl9lbnRyeTvCoMKgwqAvKiBudW1iZXIgb2YgYml0cyBhbGxvY2F0ZWQgZm9y IGVhY2ggZW50cnkgZnJvbQo+IGNhcGFjaXR5ICovCj4gKyB9Owo+ICvCoAo+ICstQ2FjaGVEaWdl c3QgKmNhY2hlRGlnZXN0Q3JlYXRlKGludCBjYXBhY2l0eSwgaW50IGJwZSk7Cj4gKytDYWNoZURp Z2VzdCAqY2FjaGVEaWdlc3RDcmVhdGUodWludDY0X3QgY2FwYWNpdHksIHVpbnQ4X3QgYnBlKTsK PiArIHZvaWQgY2FjaGVEaWdlc3REZXN0cm95KENhY2hlRGlnZXN0ICogY2QpOwo+ICsgQ2FjaGVE aWdlc3QgKmNhY2hlRGlnZXN0Q2xvbmUoY29uc3QgQ2FjaGVEaWdlc3QgKiBjZCk7Cj4gKyB2b2lk IGNhY2hlRGlnZXN0Q2xlYXIoQ2FjaGVEaWdlc3QgKiBjZCk7Cj4gKy12b2lkIGNhY2hlRGlnZXN0 Q2hhbmdlQ2FwKENhY2hlRGlnZXN0ICogY2QsIGludCBuZXdfY2FwKTsKPiArK3ZvaWQgY2FjaGVE aWdlc3RDaGFuZ2VDYXAoQ2FjaGVEaWdlc3QgKiBjZCwgdWludDY0X3QgbmV3X2NhcCk7Cj4gKyBp bnQgY2FjaGVEaWdlc3RUZXN0KGNvbnN0IENhY2hlRGlnZXN0ICogY2QsIGNvbnN0IGNhY2hlX2tl eSAqIGtleSk7Cj4gKyB2b2lkIGNhY2hlRGlnZXN0QWRkKENhY2hlRGlnZXN0ICogY2QsIGNvbnN0 IGNhY2hlX2tleSAqIGtleSk7Cj4gKyB2b2lkIGNhY2hlRGlnZXN0RGVsKENhY2hlRGlnZXN0ICog Y2QsIGNvbnN0IGNhY2hlX2tleSAqIGtleSk7Cj4gKy1zaXplX3QgY2FjaGVEaWdlc3RDYWxjTWFz a1NpemUoaW50IGNhcCwgaW50IGJwZSk7Cj4gKyt1aW50MzJfdCBjYWNoZURpZ2VzdENhbGNNYXNr U2l6ZSh1aW50NjRfdCBjYXAsIHVpbnQ4X3QgYnBlKTsKPiArIGludCBjYWNoZURpZ2VzdEJpdFV0 aWwoY29uc3QgQ2FjaGVEaWdlc3QgKiBjZCk7Cj4gKyB2b2lkIGNhY2hlRGlnZXN0R3Vlc3NTdGF0 c1VwZGF0ZShDYWNoZURpZ2VzdEd1ZXNzU3RhdHMgKiBzdGF0cywgaW50Cj4gcmVhbF9oaXQsIGlu dCBndWVzc19oaXQpOwo+ICsgdm9pZCBjYWNoZURpZ2VzdEd1ZXNzU3RhdHNSZXBvcnQoY29uc3Qg Q2FjaGVEaWdlc3RHdWVzc1N0YXRzICogc3RhdHMsCj4gU3RvcmVFbnRyeSAqIHNlbnRyeSwgY29u c3QgY2hhciAqbGFiZWwpOwo+ICsKPiArPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9QZWVyRGlnZXN0 LmgnCj4gKy0tLSBzcmMvUGVlckRpZ2VzdC5oCTIwMTYtMDEtMDEgMDA6MTQ6MjcgKzAwMDAKPiAr KysrIHNyYy9QZWVyRGlnZXN0LmgJMjAxNi0wNy0yMyAwNzoxNjoyMCArMDAwMAo+ICtAQCAtNTIs NyArNTIsNyBAQAo+ICvCoMKgwqDCoMKgc3RvcmVfY2xpZW50ICpvbGRfc2M7Cj4gK8KgwqDCoMKg wqBIdHRwUmVxdWVzdCAqcmVxdWVzdDsKPiArwqDCoMKgwqDCoGludCBvZmZzZXQ7Cj4gKy3CoMKg wqDCoGludCBtYXNrX29mZnNldDsKPiArK8KgwqDCoMKgdWludDMyX3QgbWFza19vZmZzZXQ7Cj4g K8KgwqDCoMKgwqB0aW1lX3Qgc3RhcnRfdGltZTsKPiArwqDCoMKgwqDCoHRpbWVfdCByZXNwX3Rp bWU7Cj4gK8KgwqDCoMKgwqB0aW1lX3QgZXhwaXJlczsKPiArCj4gKz09PSBtb2RpZmllZCBmaWxl ICdzcmMvcGVlcl9kaWdlc3QuY2MnCj4gKy0tLSBzcmMvcGVlcl9kaWdlc3QuY2MJMjAxNi0wMS0w MSAwMDoxNDoyNyArMDAwMAo+ICsrKysgc3JjL3BlZXJfZGlnZXN0LmNjCTIwMTYtMDctMjMgMDc6 MTY6MjAgKzAwMDAKPiArQEAgLTc1NCw3ICs3NTQsNyBAQAo+ICvCoMKgwqDCoMKgaWYgKCFyZWFz b24gJiYgIXNpemUpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFwZC0+Y2QpCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVhc29uID0gIm51bGwgZGlnZXN0PyEiOwo+ICstwqDCoMKg wqDCoMKgwqDCoGVsc2UgaWYgKGZldGNoLT5tYXNrX29mZnNldCAhPSAoaW50KXBkLT5jZC0+bWFz a19zaXplKQo+ICsrwqDCoMKgwqDCoMKgwqDCoGVsc2UgaWYgKGZldGNoLT5tYXNrX29mZnNldCAh PSBwZC0+Y2QtPm1hc2tfc2l6ZSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWFzb24g PSAicHJlbWF0dXJlIGVuZCBvZiBkaWdlc3Q/ISI7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoGVsc2Ug aWYgKCFwZWVyRGlnZXN0VXNlZnVsKHBkKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBy ZWFzb24gPSAidXNlbGVzcyBkaWdlc3QiOwo+ICsKPiArPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9z dG9yZV9kaWdlc3QuY2MnCj4gKy0tLSBzcmMvc3RvcmVfZGlnZXN0LmNjCTIwMTYtMDEtMDEgMDA6 MTQ6MjcgKzAwMDAKPiArKysrIHNyYy9zdG9yZV9kaWdlc3QuY2MJMjAxNi0wNy0yMyAwNzoxNjoy MCArMDAwMAo+ICtAQCAtNzYsMzYgKzc2LDYzIEBACj4gKyBzdGF0aWMgdm9pZCBzdG9yZURpZ2Vz dFJld3JpdGVGaW5pc2goU3RvcmVFbnRyeSAqIGUpOwo+ICsgc3RhdGljIEVWSCBzdG9yZURpZ2Vz dFN3YXBPdXRTdGVwOwo+ICsgc3RhdGljIHZvaWQgc3RvcmVEaWdlc3RDQmxvY2tTd2FwT3V0KFN0 b3JlRW50cnkgKiBlKTsKPiArLXN0YXRpYyBpbnQgc3RvcmVEaWdlc3RDYWxjQ2FwKHZvaWQpOwo+ ICstc3RhdGljIGludCBzdG9yZURpZ2VzdFJlc2l6ZSh2b2lkKTsKPiArIHN0YXRpYyB2b2lkIHN0 b3JlRGlnZXN0QWRkKGNvbnN0IFN0b3JlRW50cnkgKik7Cj4gK8KgCj4gKysvLy8gY2FsY3VsYXRl cyBkaWdlc3QgY2FwYWNpdHkKPiArK3N0YXRpYyB1aW50NjRfdAo+ICsrc3RvcmVEaWdlc3RDYWxj Q2FwKCkKPiArK3sKPiArK8KgwqDCoMKgLyoKPiArK8KgwqDCoMKgwqAqIFRvLURvOiBCbG9vbSBw cm92ZWQgdGhhdCB0aGUgb3B0aW1hbCBmaWx0ZXIgdXRpbGl6YXRpb24gaXMgNTAlIChoYWxmCj4g b2YKPiArK8KgwqDCoMKgwqAqIHRoZSBiaXRzIGFyZSBvZmYpLiBIb3dldmVyLCB3ZSBkbyBub3Qg aGF2ZSBhIGZvcm11bGEgdG8gY2FsY3VsYXRlIHRoZQo+ICsrwqDCoMKgwqDCoCogbnVtYmVyIG9m IF9lbnRyaWVzXyB3ZSB3YW50IHRvIHByZS1hbGxvY2F0ZSBmb3IuCj4gKyvCoMKgwqDCoMKgKi8K PiArK8KgwqDCoMKgY29uc3QgdWludDY0X3QgaGlfY2FwID0gU3RvcmU6OlJvb3QoKS5tYXhTaXpl KCkgLwo+IENvbmZpZy5TdG9yZS5hdmdPYmplY3RTaXplOwo+ICsrwqDCoMKgwqBjb25zdCB1aW50 NjRfdCBsb19jYXAgPSAxICsgU3RvcmU6OlJvb3QoKS5jdXJyZW50U2l6ZSgpIC8KPiBDb25maWcu U3RvcmUuYXZnT2JqZWN0U2l6ZTsKPiArK8KgwqDCoMKgY29uc3QgdWludDY0X3QgZV9jb3VudCA9 IFN0b3JlRW50cnk6OmluVXNlQ291bnQoKTsKPiArK8KgwqDCoMKgdWludDY0X3QgY2FwID0gZV9j b3VudCA/IGVfY291bnQgOiBoaV9jYXA7Cj4gKyvCoMKgwqDCoGRlYnVncyg3MSwgMiwgImhhdmU6 ICIgPDwgZV9jb3VudCA8PCAiLCB3YW50ICIgPDwgY2FwIDw8Cj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIiBlbnRyaWVzOyBsaW1pdHM6IFsiIDw8IGxvX2NhcCA8PCAiLCAiIDw8IGhpX2NhcCA8 PCAiXSIpOwo+ICsrCj4gKyvCoMKgwqDCoGlmIChjYXAgPCBsb19jYXApCj4gKyvCoMKgwqDCoMKg wqDCoMKgY2FwID0gbG9fY2FwOwo+ICsrCj4gKyvCoMKgwqDCoC8qIGRvIG5vdCBlbmZvcmNlIGhp X2NhcCBsaW1pdCwgYXZlcmFnZS1iYXNlZCBlc3RpbWF0aW9uIG1heSBiZSB3cm9uZwo+ICsrwqDC oMKgwqDCoCppZiAoY2FwID4gaGlfY2FwKQo+ICsrwqDCoMKgwqDCoCrCoMKgY2FwID0gaGlfY2Fw Owo+ICsrwqDCoMKgwqDCoCovCj4gKysKPiArK8KgwqDCoMKgLy8gQnVnIDQ1MzQ6IHdlIHN0aWxs IGhhdmUgdG8gc2V0IGFuIHVwcGVyLWxpbWl0IGF0IHNvbWUgcmVhc29uYWJsZQo+IHZhbHVlIHRo b3VnaC4KPiArK8KgwqDCoMKgLy8gdGhpcyBtYXRjaGVzIGNhY2hlRGlnZXN0Q2FsY01hc2tTaXpl IGRvaW5nIChjYXAqYnBlKSs3IDwgSU5UX01BWAo+ICsrwqDCoMKgwqBjb25zdCB1aW50NjRfdCBh YnNvbHV0ZV9tYXggPSAoSU5UX01BWCAtOCkgLwo+IENvbmZpZy5kaWdlc3QuYml0c19wZXJfZW50 cnk7Cj4gKyvCoMKgwqDCoGlmIChjYXAgPiBhYnNvbHV0ZV9tYXgpIHsKPiArK8KgwqDCoMKgwqDC oMKgwqBzdGF0aWMgdGltZV90IGxhc3RfbG91ZCA9IDA7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgaWYg KGxhc3RfbG91ZCA8IHNxdWlkX2N1cnRpbWUgLSA4NjQwMCkgewo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGVidWdzKDcxLCBEQkdfSU1QT1JUQU5ULCAiV0FSTklORzogQ2FjaGUgRGlnZXN0 IGNhbm5vdCBzdG9yZSAiCj4gPDwgY2FwIDw8ICIgZW50cmllcy4gTGltaXRpbmcgdG8gIiA8PCBh YnNvbHV0ZV9tYXgpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGFzdF9sb3VkID0gc3F1 aWRfY3VydGltZTsKPiArK8KgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGVidWdzKDcxLCAzLCAiV0FSTklORzogQ2FjaGUgRGlnZXN0IGNhbm5vdCBz dG9yZSAiIDw8IGNhcCA8PCAiCj4gZW50cmllcy4gTGltaXRpbmcgdG8gIiA8PCBhYnNvbHV0ZV9t YXgpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoH0KPiArK8KgwqDCoMKgwqDCoMKgwqBjYXAgPSBhYnNv bHV0ZV9tYXg7Cj4gKyvCoMKgwqDCoH0KPiArKwo+ICsrwqDCoMKgwqByZXR1cm4gY2FwOwo+ICsr fQo+ICsgI2VuZGlmIC8qIFVTRV9DQUNIRV9ESUdFU1RTICovCj4gK8KgCj4gKy1zdGF0aWMgdm9p ZAo+ICstc3RvcmVEaWdlc3RSZWdpc3RlcldpdGhDYWNoZU1hbmFnZXIodm9pZCkKPiArK3ZvaWQK PiArK3N0b3JlRGlnZXN0SW5pdCh2b2lkKQo+ICsgewo+ICvCoMKgwqDCoMKgTWdyOjpSZWdpc3Rl ckFjdGlvbigic3RvcmVfZGlnZXN0IiwgIlN0b3JlIERpZ2VzdCIsIHN0b3JlRGlnZXN0UmVwb3J0 LAo+IDAsIDEpOwo+ICstfQo+ICstCj4gKy0vKgo+ICstICogUFVCTElDIEZVTkNUSU9OUwo+ICst ICovCj4gKy0KPiArLXZvaWQKPiArLXN0b3JlRGlnZXN0SW5pdCh2b2lkKQo+ICstewo+ICstwqDC oMKgwqBzdG9yZURpZ2VzdFJlZ2lzdGVyV2l0aENhY2hlTWFuYWdlcigpOwo+ICvCoAo+ICsgI2lm IFVTRV9DQUNIRV9ESUdFU1RTCj4gKy3CoMKgwqDCoGNvbnN0IGludCBjYXAgPSBzdG9yZURpZ2Vz dENhbGNDYXAoKTsKPiArLQo+ICvCoMKgwqDCoMKgaWYgKCFDb25maWcub25vZmYuZGlnZXN0X2dl bmVyYXRpb24pIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgc3RvcmVfZGlnZXN0ID0gTlVMTDsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgZGVidWdzKDcxLCAzLCAiTG9jYWwgY2FjaGUgZGlnZXN0IGdlbmVy YXRpb24gZGlzYWJsZWQiKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+ICvCoMKgwqDC oMKgfQo+ICvCoAo+ICsrwqDCoMKgwqBjb25zdCB1aW50NjRfdCBjYXAgPSBzdG9yZURpZ2VzdENh bGNDYXAoKTsKPiArwqDCoMKgwqDCoHN0b3JlX2RpZ2VzdCA9IGNhY2hlRGlnZXN0Q3JlYXRlKGNh cCwgQ29uZmlnLmRpZ2VzdC5iaXRzX3Blcl9lbnRyeSk7Cj4gK8KgwqDCoMKgwqBkZWJ1Z3MoNzEs IERCR19JTVBPUlRBTlQsICJMb2NhbCBjYWNoZSBkaWdlc3QgZW5hYmxlZDsgcmVidWlsZC9yZXdy aXRlCj4gZXZlcnkgIiA8PAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoaW50KSBDb25maWcu ZGlnZXN0LnJlYnVpbGRfcGVyaW9kIDw8ICIvIiA8PAo+ICtAQCAtMjkwLDYgKzMxNywzMSBAQAo+ ICvCoMKgwqDCoMKgc3RvcmVEaWdlc3RSZWJ1aWxkUmVzdW1lKCk7Cj4gKyB9Cj4gK8KgCj4gKysv Ly8gXHJldHVybnMgdHJ1ZSBpZiB3ZSBhY3R1YWxseSByZXNpemVkIHRoZSBkaWdlc3QKPiArK3N0 YXRpYyBib29sCj4gKytzdG9yZURpZ2VzdFJlc2l6ZSgpCj4gKyt7Cj4gKyvCoMKgwqDCoGNvbnN0 IHVpbnQ2NF90IGNhcCA9IHN0b3JlRGlnZXN0Q2FsY0NhcCgpOwo+ICsrwqDCoMKgwqBhc3NlcnQo c3RvcmVfZGlnZXN0KTsKPiArK8KgwqDCoMKgdWludDY0X3QgZGlmZjsKPiArK8KgwqDCoMKgaWYg KGNhcCA+IHN0b3JlX2RpZ2VzdC0+Y2FwYWNpdHkpCj4gKyvCoMKgwqDCoMKgwqDCoMKgZGlmZiA9 IGNhcCAtIHN0b3JlX2RpZ2VzdC0+Y2FwYWNpdHk7Cj4gKyvCoMKgwqDCoGVsc2UKPiArK8KgwqDC oMKgwqDCoMKgwqBkaWZmID0gc3RvcmVfZGlnZXN0LT5jYXBhY2l0eSAtIGNhcDsKPiArK8KgwqDC oMKgZGVidWdzKDcxLCAyLCBzdG9yZV9kaWdlc3QtPmNhcGFjaXR5IDw8ICIgLT4gIiA8PCBjYXAg PDwgIjsgY2hhbmdlOiAiIDw8Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGlmZiA8PCAiICgi IDw8IHhwZXJjZW50SW50KGRpZmYsIHN0b3JlX2RpZ2VzdC0+Y2FwYWNpdHkpIDw8ICIlKSIKPiAp Owo+ICsrwqDCoMKgwqAvKiBhdm9pZCBtaW5vciBhZGp1c3RtZW50cyAqLwo+ICsrCj4gKyvCoMKg wqDCoGlmIChkaWZmIDw9IHN0b3JlX2RpZ2VzdC0+Y2FwYWNpdHkgLyAxMCkgewo+ICsrwqDCoMKg wqDCoMKgwqDCoGRlYnVncyg3MSwgMiwgInNtYWxsIGNoYW5nZSwgd2lsbCBub3QgcmVzaXplLiIp Owo+ICsrwqDCoMKgwqDCoMKgwqDCoHJldHVybiBmYWxzZTsKPiArK8KgwqDCoMKgfSBlbHNlIHsK PiArK8KgwqDCoMKgwqDCoMKgwqBkZWJ1Z3MoNzEsIDIsICJiaWcgY2hhbmdlLCByZXNpemluZy4i KTsKPiArK8KgwqDCoMKgwqDCoMKgwqBjYWNoZURpZ2VzdENoYW5nZUNhcChzdG9yZV9kaWdlc3Qs IGNhcCk7Cj4gKyvCoMKgwqDCoH0KPiArK8KgwqDCoMKgcmV0dXJuIHRydWU7Cj4gKyt9Cj4gKysK PiArIC8qIGNhbGxlZCBiZSBSZXdyaXRlIHRvIHB1c2ggUmVidWlsZCBmb3J3YXJkICovCj4gKyBz dGF0aWMgdm9pZAo+ICsgc3RvcmVEaWdlc3RSZWJ1aWxkUmVzdW1lKHZvaWQpCj4gK0BAIC00Mzks NyArNDkxLDcgQEAKPiArwqDCoMKgwqDCoGFzc2VydChlKTsKPiArwqDCoMKgwqDCoC8qIF9hZGRf IGNoZWNrIHRoYXQgbm90aGluZyBiYWQgaGFwcGVuZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nIEA/ QCBAP0AKPiAqLwo+ICvCoAo+ICstwqDCoMKgwqBpZiAoc2Rfc3RhdGUucmV3cml0ZV9vZmZzZXQg KyBjaHVua19zaXplID4gc3RvcmVfZGlnZXN0LT5tYXNrX3NpemUpCj4gKyvCoMKgwqDCoGlmIChz dGF0aWNfY2FzdDx1aW50MzJfdD4oc2Rfc3RhdGUucmV3cml0ZV9vZmZzZXQgKyBjaHVua19zaXpl KSA+Cj4gc3RvcmVfZGlnZXN0LT5tYXNrX3NpemUpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoGNodW5r X3NpemUgPSBzdG9yZV9kaWdlc3QtPm1hc2tfc2l6ZSAtIHNkX3N0YXRlLnJld3JpdGVfb2Zmc2V0 Owo+ICvCoAo+ICvCoMKgwqDCoMKgZS0+YXBwZW5kKHN0b3JlX2RpZ2VzdC0+bWFzayArIHNkX3N0 YXRlLnJld3JpdGVfb2Zmc2V0LCBjaHVua19zaXplKTsKPiArQEAgLTQ1MSw3ICs1MDMsNyBAQAo+ ICvCoMKgwqDCoMKgc2Rfc3RhdGUucmV3cml0ZV9vZmZzZXQgKz0gY2h1bmtfc2l6ZTsKPiArwqAK PiArwqDCoMKgwqDCoC8qIGFyZSB3ZSBkb25lID8gKi8KPiArLcKgwqDCoMKgaWYgKHNkX3N0YXRl LnJld3JpdGVfb2Zmc2V0ID49IHN0b3JlX2RpZ2VzdC0+bWFza19zaXplKQo+ICsrwqDCoMKgwqBp ZiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNkX3N0YXRlLnJld3JpdGVfb2Zmc2V0KSA+PSBzdG9y ZV9kaWdlc3QtCj4gPm1hc2tfc2l6ZSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgc3RvcmVEaWdlc3RS ZXdyaXRlRmluaXNoKGUpOwo+ICvCoMKgwqDCoMKgZWxzZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqBl dmVudEFkZCgic3RvcmVEaWdlc3RTd2FwT3V0U3RlcCIsIHN0b3JlRGlnZXN0U3dhcE91dFN0ZXAs IGRhdGEsCj4gMC4wLCAxLCBmYWxzZSk7Cj4gK0BAIC00NjcsNjAgKzUxOSwxMCBAQAo+ICvCoMKg wqDCoMKgc2Rfc3RhdGUuY2Jsb2NrLmNvdW50ID0gaHRvbmwoc3RvcmVfZGlnZXN0LT5jb3VudCk7 Cj4gK8KgwqDCoMKgwqBzZF9zdGF0ZS5jYmxvY2suZGVsX2NvdW50ID0gaHRvbmwoc3RvcmVfZGln ZXN0LT5kZWxfY291bnQpOwo+ICvCoMKgwqDCoMKgc2Rfc3RhdGUuY2Jsb2NrLm1hc2tfc2l6ZSA9 IGh0b25sKHN0b3JlX2RpZ2VzdC0+bWFza19zaXplKTsKPiArLcKgwqDCoMKgc2Rfc3RhdGUuY2Js b2NrLmJpdHNfcGVyX2VudHJ5ID0gKHVuc2lnbmVkIGNoYXIpCj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oENvbmZpZy5kaWdlc3QuYml0c19wZXJfZW50cnk7Cj4gKyvCoMKgwqDCoHNkX3N0YXRlLmNibG9j ay5iaXRzX3Blcl9lbnRyeSA9IENvbmZpZy5kaWdlc3QuYml0c19wZXJfZW50cnk7Cj4gK8KgwqDC oMKgwqBzZF9zdGF0ZS5jYmxvY2suaGFzaF9mdW5jX2NvdW50ID0gKHVuc2lnbmVkIGNoYXIpCj4g Q2FjaGVEaWdlc3RIYXNoRnVuY0NvdW50Owo+ICvCoMKgwqDCoMKgZS0+YXBwZW5kKChjaGFyICop ICZzZF9zdGF0ZS5jYmxvY2ssIHNpemVvZihzZF9zdGF0ZS5jYmxvY2spKTsKPiArIH0KPiArwqAK PiArLS8qIGNhbGN1bGF0ZXMgZGlnZXN0IGNhcGFjaXR5ICovCj4gKy1zdGF0aWMgaW50Cj4gKy1z dG9yZURpZ2VzdENhbGNDYXAodm9pZCkKPiArLXsKPiArLcKgwqDCoMKgLyoKPiArLcKgwqDCoMKg wqAqIFRvLURvOiBCbG9vbSBwcm92ZWQgdGhhdCB0aGUgb3B0aW1hbCBmaWx0ZXIgdXRpbGl6YXRp b24gaXMgNTAlIChoYWxmCj4gb2YKPiArLcKgwqDCoMKgwqAqIHRoZSBiaXRzIGFyZSBvZmYpLiBI b3dldmVyLCB3ZSBkbyBub3QgaGF2ZSBhIGZvcm11bGEgdG8gY2FsY3VsYXRlIHRoZQo+ICstwqDC oMKgwqDCoCogbnVtYmVyIG9mIF9lbnRyaWVzXyB3ZSB3YW50IHRvIHByZS1hbGxvY2F0ZSBmb3Iu Cj4gKy3CoMKgwqDCoMKgKi8KPiArLcKgwqDCoMKgY29uc3QgaW50IGhpX2NhcCA9IFN0b3JlOjpS b290KCkubWF4U2l6ZSgpIC8gQ29uZmlnLlN0b3JlLmF2Z09iamVjdFNpemU7Cj4gKy3CoMKgwqDC oGNvbnN0IGludCBsb19jYXAgPSAxICsgU3RvcmU6OlJvb3QoKS5jdXJyZW50U2l6ZSgpIC8KPiBD b25maWcuU3RvcmUuYXZnT2JqZWN0U2l6ZTsKPiArLcKgwqDCoMKgY29uc3QgaW50IGVfY291bnQg PSBTdG9yZUVudHJ5OjppblVzZUNvdW50KCk7Cj4gKy3CoMKgwqDCoGludCBjYXAgPSBlX2NvdW50 ID8gZV9jb3VudCA6aGlfY2FwOwo+ICstwqDCoMKgwqBkZWJ1Z3MoNzEsIDIsICJzdG9yZURpZ2Vz dENhbGNDYXA6IGhhdmU6ICIgPDwgZV9jb3VudCA8PCAiLCB3YW50ICIgPDwKPiBjYXAgPDwKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAiIGVudHJpZXM7IGxpbWl0czogWyIgPDwgbG9fY2FwIDw8 ICIsICIgPDwgaGlfY2FwIDw8ICJdIik7Cj4gKy0KPiArLcKgwqDCoMKgaWYgKGNhcCA8IGxvX2Nh cCkKPiArLcKgwqDCoMKgwqDCoMKgwqBjYXAgPSBsb19jYXA7Cj4gKy0KPiArLcKgwqDCoMKgLyog ZG8gbm90IGVuZm9yY2UgaGlfY2FwIGxpbWl0LCBhdmVyYWdlLWJhc2VkIGVzdGltYXRpb24gbWF5 IGJlIHdyb25nCj4gKy3CoMKgwqDCoMKgKmlmIChjYXAgPiBoaV9jYXApCj4gKy3CoMKgwqDCoMKg KsKgwqBjYXAgPSBoaV9jYXA7Cj4gKy3CoMKgwqDCoMKgKi8KPiArLcKgwqDCoMKgcmV0dXJuIGNh cDsKPiArLX0KPiArLQo+ICstLyogcmV0dXJucyB0cnVlIGlmIHdlIGFjdHVhbGx5IHJlc2l6ZWQg dGhlIGRpZ2VzdCAqLwo+ICstc3RhdGljIGludAo+ICstc3RvcmVEaWdlc3RSZXNpemUodm9pZCkK PiArLXsKPiArLcKgwqDCoMKgY29uc3QgaW50IGNhcCA9IHN0b3JlRGlnZXN0Q2FsY0NhcCgpOwo+ ICstwqDCoMKgwqBpbnQgZGlmZjsKPiArLcKgwqDCoMKgYXNzZXJ0KHN0b3JlX2RpZ2VzdCk7Cj4g Ky3CoMKgwqDCoGRpZmYgPSBhYnMoY2FwIC0gc3RvcmVfZGlnZXN0LT5jYXBhY2l0eSk7Cj4gKy3C oMKgwqDCoGRlYnVncyg3MSwgMiwgInN0b3JlRGlnZXN0UmVzaXplOiAiIDw8Cj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgc3RvcmVfZGlnZXN0LT5jYXBhY2l0eSA8PCAiIC0+ICIgPDwgY2FwIDw8 ICI7IGNoYW5nZTogIiA8PAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRpZmYgPDwgIiAoIiA8 PCB4cGVyY2VudEludChkaWZmLCBzdG9yZV9kaWdlc3QtPmNhcGFjaXR5KSA8PCAiJSkiCj4gKTsK PiArLcKgwqDCoMKgLyogYXZvaWQgbWlub3IgYWRqdXN0bWVudHMgKi8KPiArLQo+ICstwqDCoMKg wqBpZiAoZGlmZiA8PSBzdG9yZV9kaWdlc3QtPmNhcGFjaXR5IC8gMTApIHsKPiArLcKgwqDCoMKg wqDCoMKgwqBkZWJ1Z3MoNzEsIDIsICJzdG9yZURpZ2VzdFJlc2l6ZTogc21hbGwgY2hhbmdlLCB3 aWxsIG5vdCByZXNpemUuIik7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gKy3CoMKg wqDCoH0gZWxzZSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgZGVidWdzKDcxLCAyLCAic3RvcmVEaWdl c3RSZXNpemU6IGJpZyBjaGFuZ2UsIHJlc2l6aW5nLiIpOwo+ICstwqDCoMKgwqDCoMKgwqDCoGNh Y2hlRGlnZXN0Q2hhbmdlQ2FwKHN0b3JlX2RpZ2VzdCwgY2FwKTsKPiArLcKgwqDCoMKgwqDCoMKg wqByZXR1cm4gMTsKPiArLcKgwqDCoMKgfQo+ICstfQo+ICstCj4gKyAjZW5kaWYgLyogVVNFX0NB Q0hFX0RJR0VTVFMgKi8KPiArwqAKPiArCj4gKz09PSBtb2RpZmllZCBmaWxlICdzcmMvdGVzdHMv c3R1Yl9DYWNoZURpZ2VzdC5jYycKPiArLS0tIHNyYy90ZXN0cy9zdHViX0NhY2hlRGlnZXN0LmNj CTIwMTYtMDEtMDEgMDA6MTQ6MjcgKzAwMDAKPiArKysrIHNyYy90ZXN0cy9zdHViX0NhY2hlRGln ZXN0LmNjCTIwMTYtMDctMjMgMDc6MTY6MjAgKzAwMDAKPiArQEAgLTE2LDExICsxNiwxMSBAQAo+ ICsgY2xhc3MgQ2FjaGVEaWdlc3RHdWVzc1N0YXRzOwo+ICsgY2xhc3MgU3RvcmVFbnRyeTsKPiAr wqAKPiArLUNhY2hlRGlnZXN0ICogY2FjaGVEaWdlc3RDcmVhdGUoaW50LCBpbnQpIFNUVUJfUkVU VkFMKE5VTEwpCj4gKytDYWNoZURpZ2VzdCAqIGNhY2hlRGlnZXN0Q3JlYXRlKHVpbnQ2NF90LCB1 aW50OF90KSBTVFVCX1JFVFZBTChOVUxMKQo+ICsgdm9pZCBjYWNoZURpZ2VzdERlc3Ryb3koQ2Fj aGVEaWdlc3QgKikgU1RVQgo+ICsgQ2FjaGVEaWdlc3QgKiBjYWNoZURpZ2VzdENsb25lKGNvbnN0 IENhY2hlRGlnZXN0ICopIFNUVUJfUkVUVkFMKE5VTEwpCj4gKyB2b2lkIGNhY2hlRGlnZXN0Q2xl YXIoQ2FjaGVEaWdlc3QgKiApIFNUVUIKPiArLXZvaWQgY2FjaGVEaWdlc3RDaGFuZ2VDYXAoQ2Fj aGVEaWdlc3QgKixpbnQpIFNUVUIKPiArK3ZvaWQgY2FjaGVEaWdlc3RDaGFuZ2VDYXAoQ2FjaGVE aWdlc3QgKix1aW50NjRfdCkgU1RVQgo+ICsgaW50IGNhY2hlRGlnZXN0VGVzdChjb25zdCBDYWNo ZURpZ2VzdCAqLCBjb25zdCBjYWNoZV9rZXkgKikgU1RVQl9SRVRWQUwoMSkKPiArIHZvaWQgY2Fj aGVEaWdlc3RBZGQoQ2FjaGVEaWdlc3QgKiwgY29uc3QgY2FjaGVfa2V5ICopIFNUVUIKPiArIHZv aWQgY2FjaGVEaWdlc3REZWwoQ2FjaGVEaWdlc3QgKiwgY29uc3QgY2FjaGVfa2V5ICopIFNUVUIK PiArQEAgLTI4LDUgKzI4LDQgQEAKPiArIHZvaWQgY2FjaGVEaWdlc3RHdWVzc1N0YXRzVXBkYXRl KENhY2hlRGlnZXN0R3Vlc3NTdGF0cyAqLCBpbnQsIGludCkgU1RVQgo+ICsgdm9pZCBjYWNoZURp Z2VzdEd1ZXNzU3RhdHNSZXBvcnQoY29uc3QgQ2FjaGVEaWdlc3RHdWVzc1N0YXRzICosIFN0b3Jl RW50cnkKPiAqLCBjb25zdCBjaGFyICopIFNUVUIKPiArIHZvaWQgY2FjaGVEaWdlc3RSZXBvcnQo Q2FjaGVEaWdlc3QgKiwgY29uc3QgY2hhciAqLCBTdG9yZUVudHJ5ICopIFNUVUIKPiArLXNpemVf dCBjYWNoZURpZ2VzdENhbGNNYXNrU2l6ZShpbnQsIGludCkgU1RVQl9SRVRWQUwoMSkKPiArLQo+ ICsrdWludDMyX3QgY2FjaGVEaWdlc3RDYWxjTWFza1NpemUodWludDY0X3QsIHVpbnQ4X3QpIFNU VUJfUkVUVkFMKDEpCj4gKwo+IGRpZmYgLS1naXQgYS9zcmMvcGF0Y2hlcy9zcXVpZC9zcXVpZC0z LjUtMTQwNjgucGF0Y2gKPiBiL3NyYy9wYXRjaGVzL3NxdWlkL3NxdWlkLTMuNS0xNDA2OC5wYXRj aAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNDc2NmUwMAo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9zcmMvcGF0Y2hlcy9zcXVpZC9zcXVpZC0zLjUtMTQwNjgucGF0Y2gK PiBAQCAtMCwwICsxLDM1IEBACj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICtyZXZubzogMTQwNjgKPiArcmV2aXNpb24taWQ6 IHNxdWlkMyhhKXRyZWVuZXQuY28ubnotMjAxNjA3MjMwNzE5MzAtY2VtbGVkY2x0Zzhwa2MyOAo+ ICtwYXJlbnQ6IHNxdWlkMyhhKXRyZWVuZXQuY28ubnotMjAxNjA3MjMwNzE2MjAtMXd6cXBieWkx cms1dzZ2Zwo+ICtmaXhlcyBidWc6IGh0dHA6Ly9idWdzLnNxdWlkLWNhY2hlLm9yZy9zaG93X2J1 Zy5jZ2k/aWQ9NDU0Mgo+ICthdXRob3I6IEFub255bW91cyA8YmlncGFycm90KGEpcGlyYXRlcGVy ZmVjdGlvbi5jb20+Cj4gK2NvbW1pdHRlcjogQW1vcyBKZWZmcmllcyA8c3F1aWQzKGEpdHJlZW5l dC5jby5uej4KPiArYnJhbmNoIG5pY2s6IDMuNQo+ICt0aW1lc3RhbXA6IFNhdCAyMDE2LTA3LTIz IDE5OjE5OjMwICsxMjAwCj4gK21lc3NhZ2U6Cj4gK8KgwqBCdWcgIzQ1NDI6IGF1dGhlbnRpY2F0 aW9uIGNyZWRlbnRpYWxzIElQIFRUTCB1cGRhdGVkIGluY29ycmVjdGx5Cj4gKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsjIEJh emFhciBtZXJnZSBkaXJlY3RpdmUgZm9ybWF0IDIgKEJhemFhciAwLjkwKQo+ICsjIHJldmlzaW9u X2lkOiBzcXVpZDMoYSl0cmVlbmV0LmNvLm56LTIwMTYwNzIzMDcxOTMwLWNlbWxlZGNsdGc4cGtj MjgKPiArIyB0YXJnZXRfYnJhbmNoOiBodHRwOi8vYnpyLnNxdWlkLWNhY2hlLm9yZy9ienIvc3F1 aWQzLzMuNQo+ICsjIHRlc3RhbWVudF9zaGExOiBlZTBjNmFhYjU0MTQ1MzJkOTU1NGVmMzM4Y2Nl MDQ5MjYzOTAyZmQ4Cj4gKyMgdGltZXN0YW1wOiAyMDE2LTA3LTIzIDA3OjI0OjA1ICswMDAwCj4g KyMgc291cmNlX2JyYW5jaDogaHR0cDovL2J6ci5zcXVpZC1jYWNoZS5vcmcvYnpyL3NxdWlkMy8z LjUKPiArIyBiYXNlX3JldmlzaW9uX2lkOiBzcXVpZDMoYSl0cmVlbmV0LmNvLm56LTIwMTYwNzIz MDcxNjIwLVwKPiArI8KgwqDCoDF3enFwYnlpMXJrNXc2dmcKPiArI8KgCj4gKyMgQmVnaW4gcGF0 Y2gKPiArPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9hdXRoL1VzZXIuY2MnCj4gKy0tLSBzcmMvYXV0 aC9Vc2VyLmNjCTIwMTYtMDEtMDEgMDA6MTQ6MjcgKzAwMDAKPiArKysrIHNyYy9hdXRoL1VzZXIu Y2MJMjAxNi0wNy0yMyAwNzoxOTozMCArMDAwMAo+ICtAQCAtMjg0LDcgKzI4NCw3IEBACj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogVGhpcyBpcCBoYXMgYWxyZWFkeSBiZWVuIHNlZW4u ICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm91bmQgPSAxOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qIHVwZGF0ZSBJUCB0dGwgKi8KPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlwZGF0YS0+aXBfZXhwaXJldGltZSA9IHNxdWlkX2N1cnRpbWU7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpcGRhdGEtPmlwX2V4cGlyZXRpbWUgPSBzcXVpZF9jdXJ0aW1lICsK PiA6OkNvbmZpZy5hdXRoZW50aWNhdGVJcFRUTDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNl IGlmIChpcGRhdGEtPmlwX2V4cGlyZXRpbWUgPD0gc3F1aWRfY3VydGltZSkgewo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qIFRoaXMgSVAgaGFzIGV4cGlyZWQgLSByZW1vdmUgZnJvbSB0 aGUgc2VlbiBsaXN0ICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGxpbmtEZWxldGUo JmlwZGF0YS0+bm9kZSwgJmlwX2xpc3QpOwo+ICsKPiBkaWZmIC0tZ2l0IGEvc3JjL3BhdGNoZXMv c3F1aWQvc3F1aWQtMy41LTE0MDY5LnBhdGNoCj4gYi9zcmMvcGF0Y2hlcy9zcXVpZC9zcXVpZC0z LjUtMTQwNjkucGF0Y2gKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjE1 Y2EzN2EKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvc3JjL3BhdGNoZXMvc3F1aWQvc3F1aWQtMy41 LTE0MDY5LnBhdGNoCj4gQEAgLTAsMCArMSwzMCBAQAo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArcmV2bm86IDE0MDY5Cj4g K3JldmlzaW9uLWlkOiBzcXVpZGFkbShhKXNxdWlkLWNhY2hlLm9yZy0yMDE2MDcyMzEyMTM1MS1p dWM4aHdzdHJxZDBsMWR2Cj4gK3BhcmVudDogc3F1aWQzKGEpdHJlZW5ldC5jby5uei0yMDE2MDcy MzA3MTkzMC1jZW1sZWRjbHRnOHBrYzI4Cj4gK2NvbW1pdHRlcjogU291cmNlIE1haW50ZW5hbmNl IDxzcXVpZGFkbShhKXNxdWlkLWNhY2hlLm9yZz4KPiArYnJhbmNoIG5pY2s6IDMuNQo+ICt0aW1l c3RhbXA6IFNhdCAyMDE2LTA3LTIzIDEyOjEzOjUxICswMDAwCj4gK21lc3NhZ2U6Cj4gK8KgwqBT b3VyY2VGb3JtYXQgRW5mb3JjZW1lbnQKPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyMgQmF6YWFyIG1lcmdlIGRpcmVjdGl2 ZSBmb3JtYXQgMiAoQmF6YWFyIDAuOTApCj4gKyMgcmV2aXNpb25faWQ6IHNxdWlkYWRtKGEpc3F1 aWQtY2FjaGUub3JnLTIwMTYwNzIzMTIxMzUxLVwKPiArI8KgwqDCoGl1Yzhod3N0cnFkMGwxZHYK PiArIyB0YXJnZXRfYnJhbmNoOiBodHRwOi8vYnpyLnNxdWlkLWNhY2hlLm9yZy9ienIvc3F1aWQz LzMuNQo+ICsjIHRlc3RhbWVudF9zaGExOiBjOWUzN2E3MjM2ODZhZTJlZTQ4OWJhN2VjMmU5ODFh ZTE1M2JkYTI4Cj4gKyMgdGltZXN0YW1wOiAyMDE2LTA3LTIzIDEyOjUwOjU2ICswMDAwCj4gKyMg c291cmNlX2JyYW5jaDogaHR0cDovL2J6ci5zcXVpZC1jYWNoZS5vcmcvYnpyL3NxdWlkMy8zLjUK PiArIyBiYXNlX3JldmlzaW9uX2lkOiBzcXVpZDMoYSl0cmVlbmV0LmNvLm56LTIwMTYwNzIzMDcx OTMwLVwKPiArI8KgwqDCoGNlbWxlZGNsdGc4cGtjMjgKPiArI8KgCj4gKyMgQmVnaW4gcGF0Y2gK PiArPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy90ZXN0cy9zdHViX0NhY2hlRGlnZXN0LmNjJwo+ICst LS0gc3JjL3Rlc3RzL3N0dWJfQ2FjaGVEaWdlc3QuY2MJMjAxNi0wNy0yMyAwNzoxNjoyMCArMDAw MAo+ICsrKysgc3JjL3Rlc3RzL3N0dWJfQ2FjaGVEaWdlc3QuY2MJMjAxNi0wNy0yMyAxMjoxMzo1 MSArMDAwMAo+ICtAQCAtMjksMyArMjksNCBAQAo+ICsgdm9pZCBjYWNoZURpZ2VzdEd1ZXNzU3Rh dHNSZXBvcnQoY29uc3QgQ2FjaGVEaWdlc3RHdWVzc1N0YXRzICosIFN0b3JlRW50cnkKPiAqLCBj b25zdCBjaGFyICopIFNUVUIKPiArIHZvaWQgY2FjaGVEaWdlc3RSZXBvcnQoQ2FjaGVEaWdlc3Qg KiwgY29uc3QgY2hhciAqLCBTdG9yZUVudHJ5ICopIFNUVUIKPiArIHVpbnQzMl90IGNhY2hlRGln ZXN0Q2FsY01hc2tTaXplKHVpbnQ2NF90LCB1aW50OF90KSBTVFVCX1JFVFZBTCgxKQo+ICsrCj4g Kwo= --===============5882895262401611461== Content-Type: application/pgp-signature Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="signature.asc" MIME-Version: 1.0 LS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KVmVyc2lvbjogR251UEcgdjIKCmlRSWNCQUFC Q2dBR0JRSlhvTGpwQUFvSkVJQjU4UDl2a0FrSFJuUVAvaThZejR4b05WS2JFQkhwQ09JRlNWaEkK SXFXNXpzdmI5bkNYK2ZiUWdndHNSM3JYYzJvVlQzaHV6MVB2MGdOektPcWJtaC9LZUpLUzJuN3Bs S0dZVDI0SgprUy9nZVdsSU1IUk56dHM0bTM2Q1RoY3Z3WjlCa1BnY0lSM3I2T0srSVM1eXNZQVZK RUdCUDE5VHNkbzNENXJCCkhVZVdIakZuWFVjMC9va3hIUjNqVCtnR2RmREhnT3JTMTBLSEZlTExm Y3I2bEF0emFIUWhCOSszRUxwbVM5SE8KbU40K3BxNG1qUldpS2RRanNnLy90T3lNMFcza013SlhO T2wyS3htMnNJYmU2K2JGUThlTEY0djBidmtxRjhvTgo1NFdEemdoNVJjZHRQZElsQXAxN3JhRVFt eU5xQzhlV0FaRHBDUzVXQ3dNVmRYZnk3bTU3Zi8vOFB4WUh4N1MrCjZscmR5am9EdzFnamNTWGhR Q1huNU9kOW16QVFTcXZXMWNEeFM0aVRtZW1XVVFJbmhDMEE4K2ttYXk4UG8vZVIKemltbnMyclFk RnFtTllXa0JZN0MybExkbDU0cGYwRzJWaG9QUWpTNDM4MjF3ZElCYjF2cnlST3pOVFBoamg5aQp1 WS9QZ1hnMlpFUkc2eVhYeFViY3dkd2FDamliMWxkdUczeG5ZZ25ESVJqMG5rQThFTFpPaDA5YWFD THY5UW5ZCmF3c1JqUGpxeXVpRDE0UUd6VUlWOGVrQlNJam0zOEt4VXptY0hwWTZLY2l1Z1dUY2Za MUVHQms3bHhSNHBOa1IKTUN4VlZ1dDhzSDZUTlgyNmJHUzhNUGRZSFMyUTUzRHZqdTV2Njg4a04w UlE5Z3N3ajlNTFRJbmgrOHU1cFFqbgpmSXVoMXB3UVJwZjlXRndyWHhkdAo9c2Y0egotLS0tLUVO RCBQR1AgU0lHTkFUVVJFLS0tLS0K --===============5882895262401611461==--