Name: series-workflowncfx2 Phase: Failed StartedAt: 2026-08-12 22:36:09 +0000 UTC FinishedAt: 2026-08-12 22:38:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncfx2[0] Phase: Succeeded StartedAt: 2026-08-12 22:36:09 +0000 UTC FinishedAt: 2026-08-12 22:38:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncfx2[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 22:36:09 +0000 UTC FinishedAt: 2026-08-12 22:38:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIyOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHN0YXRpc3RpY3MgdHJhY2tpbmcgZm9yIHRoZSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIHByb2Nlc3NlZCBwZXIgc3VicHJvZ3JhbSBkdXJpbmcgQlBGIHZlcmlmaWNhdGlvbiBhbmQgb3V0cHV0cyB0aGVtIGluIHRoZSB2ZXJpZmllciBsb2cuIEl0IGRvZXMgbm90IGFsdGVyIHRoZSB2ZXJpZmljYXRpb24gbG9naWMsIGV4ZWN1dGlvbiBmbG93LCBvciB0aGUgZ2VuZXJhdGVkIEJQRiBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMjozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI3NjIxOTk4ZTc3YTc5OGZmOTgyOTY1OTNlNzI5MmRlYzU3Mjg0MTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAyMjozODoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oIGIvaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaFxuaW5kZXggOTNmN2MyMDc1ZWVhYS4uN2MzNzY0NTFkYjgyNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmhcbkBAIC0zODAsNiAmIzQzOzM4MCw4IEBAIHN0cnVjdCBicGZfZnVuY19zdGF0ZSB7XG4gXHQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbnVtYmVyIG9mIHNpbXVsYXRpb25zIGlzIHRyYWNrZWQgaW4gZnJhbWUgTlxuIFx0ICovXG4gXHR1MzIgY2FsbGJhY2tfZGVwdGg7XG4mIzQzO1x0LyogSW5zdHJ1Y3Rpb25zIHByb2Nlc3NlZCBpbiB0aGlzIGZyYW1lIGFuZCBjYWxsZWVzIG9uIHRoZSBjdXJyZW50IHBhdGguICovXG4mIzQzO1x0dTMyIGluc25zX3N1YnRvdGFsO1xuIFxuIFx0LyogVGhlIGZvbGxvd2luZyBmaWVsZHMgc2hvdWxkIGJlIGxhc3QuIFNlZSBjb3B5X2Z1bmNfc3RhdGUoKSAqL1xuIFx0LyogVGhlIHN0YXRlIG9mIHRoZSBzdGFjay4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBkZXNjcmliZXMgQlBGX1JFR19TSVpFXG5AQCAtNzk4LDcgJiM0Mzs4MDAsOCBAQCBzdHJ1Y3QgYnBmX3N1YnByb2dfaW5mbyB7XG4gXHR1MzIgZXhpdF9pZHg7IC8qIEluZGV4IG9mIG9uZSBvZiB0aGUgQlBGX0VYSVQgaW5zdHJ1Y3Rpb25zIGluIHRoaXMgc3VicHJvZ3JhbSAqL1xuIFx0dTE2IHN0YWNrX2RlcHRoOyAvKiBtYXguIHN0YWNrIGRlcHRoIHVzZWQgYnkgdGhpcyBmdW5jdGlvbiAqL1xuIFx0dTE2IHN0YWNrX2V4dHJhO1xuLVx0dTMyIGluc25fcHJvY2Vzc2VkO1xuJiM0MztcdHUzMiBpbnNuc190b3RhbDtcbiYjNDM7XHR1MzIgaW5zbnNfc2VsZjtcbiBcdC8qIG9mZnNldHMgaW4gcmFuZ2UgW3N0YWNrX2RlcHRoIC4uIGZhc3RjYWxsX3N0YWNrX29mZilcbiBcdCAqIGFyZSB1c2VkIGZvciBicGZfZmFzdGNhbGwgc3BpbGxzIGFuZCBmaWxscy5cbiBcdCAqL1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggYWRkM2FmZmM1NzAzNS4uODIwZDI4MzFmMzQwMyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTU5Myw2ICYjNDM7MTU5Myw4IEBAIHN0YXRpYyBpbnQgY29weV9mdW5jX3N0YXRlKHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqZHN0LFxuIFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqc3JjKVxuIHtcbiBcdG1lbWNweShkc3QsIHNyYywgb2Zmc2V0b2Yoc3RydWN0IGJwZl9mdW5jX3N0YXRlLCBzdGFjaykpO1xuJiM0MztcdC8qIEluc3RydWN0aW9uIGFjY291bnRpbmcgaXMgcGF0aC1sb2NhbCwgbm90IHBhcnQgb2YgdmVyaWZpZXIgc3RhdGUuICovXG4mIzQzO1x0ZHN0LVx1MDAzZWluc25zX3N1YnRvdGFsID0gMDtcbiBcdHJldHVybiBjb3B5X3N0YWNrX3N0YXRlKGRzdCwgc3JjKTtcbiB9XG4gXG5AQCAtOTcxNyw2ICYjNDM7OTcxOSw0MiBAQCBzdGF0aWMgaW50IHNldF90YXNrX3dvcmtfc2NoZWR1bGVfY2FsbGJhY2tfc3RhdGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcbiBzdGF0aWMgYm9vbCBpc19yYnRyZWVfbG9ja19yZXF1aXJlZF9rZnVuYyh1MzIgYnRmX2lkKTtcbiBcbiYjNDM7c3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJwZl9mdW5jX3N0YXRlICpmcmFtZSA9IGN1cl9mdW5jKGVudik7XG4mIzQzO1xuJiM0MztcdGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCYjNDM7JiM0Mzs7XG4mIzQzO1x0ZnJhbWUtXHUwMDNlaW5zbnNfc3VidG90YWwmIzQzOyYjNDM7O1xuJiM0MztcdGVudi1cdTAwM2VzdWJwcm9nX2luZm9bZnJhbWUtXHUwMDNlc3VicHJvZ25vXS5pbnNuc19zZWxmJiM0MzsmIzQzOztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IGJwZl9mdW5jX3N0YXRlICpjYWxsZWUsXG4mIzQzO1x0XHRcdFx0ICAgIHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqY2FsbGVyKVxuJiM0Mzt7XG4mIzQzO1x0dTMyIGluc25zO1xuJiM0MztcbiYjNDM7XHRpZiAoIWNhbGxlZSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aW5zbnMgPSBjYWxsZWUtXHUwMDNlaW5zbnNfc3VidG90YWw7XG4mIzQzO1xuJiM0MztcdGVudi1cdTAwM2VzdWJwcm9nX2luZm9bY2FsbGVlLVx1MDAzZXN1YnByb2dub10uaW5zbnNfdG90YWwgJiM0Mzs9IGluc25zO1xuJiM0MztcdGlmIChjYWxsZXIpXG4mIzQzO1x0XHRjYWxsZXItXHUwMDNlaW5zbnNfc3VidG90YWwgJiM0Mzs9IGluc25zO1xuJiM0MztcdGNhbGxlZS1cdTAwM2VpbnNuc19zdWJ0b3RhbCA9IDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGFjY291bnRfY3VycmVudF9wYXRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYnBmX3ZlcmlmaWVyX3N0YXRlICpzdGF0ZSA9IGVudi1cdTAwM2VjdXJfc3RhdGU7XG4mIzQzO1x0aW50IGZyYW1lO1xuJiM0MztcbiYjNDM7XHRmb3IgKGZyYW1lID0gc3RhdGUtXHUwMDNlY3VyZnJhbWU7IGZyYW1lIFx1MDAzZT0gMDsgZnJhbWUtLSlcbiYjNDM7XHRcdGFjY291bnRfcHJvY2Vzc2VkX2luc25zKGVudiwgc3RhdGUtXHUwMDNlZnJhbWVbZnJhbWVdLFxuJiM0MztcdFx0XHRcdFx0ZnJhbWUgPyBzdGF0ZS1cdTAwM2VmcmFtZVtmcmFtZSAtIDFdIDogTlVMTCk7XG4mIzQzO31cbiYjNDM7XG4gLyogQXJlIHdlIGN1cnJlbnRseSB2ZXJpZnlpbmcgdGhlIGNhbGxiYWNrIGZvciBhIHJidHJlZSBoZWxwZXIgdGhhdCBtdXN0XG4gICogYmUgY2FsbGVkIHdpdGggbG9jayBoZWxkPyBJZiBzbywgbm8gbmVlZCB0byBjb21wbGFpbiBhYm91dCB1bnJlbGVhc2VkXG4gICogbG9ja1xuQEAgLTk4MTMsNiAmIzQzOzk4NTEsNyBAQCBzdGF0aWMgaW50IHByZXBhcmVfZnVuY19leGl0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCAqaW5zbl9pZHgpXG4gXHRcdHZlcmJvc2UoZW52LCBcJiMzNDt0byBjYWxsZXIgYXQgJWQ6XFxuXCYjMzQ7LCAqaW5zbl9pZHgpO1xuIFx0XHRwcmludF92ZXJpZmllcl9zdGF0ZShlbnYsIHN0YXRlLCBjYWxsZXItXHUwMDNlZnJhbWVubywgdHJ1ZSk7XG4gXHR9XG4mIzQzO1x0YWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoZW52LCBjYWxsZWUsIGNhbGxlcik7XG4gXHQvKiBjbGVhciBldmVyeXRoaW5nIGluIHRoZSBjYWxsZWUuIEluIGNhc2Ugb2YgZXhjZXB0aW9uYWwgZXhpdHMgdXNpbmdcbiBcdCAqIGJwZl90aHJvdywgdGhpcyB3aWxsIGJlIGRvbmUgYnkgY29weV92ZXJpZmllcl9zdGF0ZSBmb3IgZXh0cmEgZnJhbWVzLiAqL1xuIFx0ZnJlZV9mdW5jX3N0YXRlKGNhbGxlZSk7XG5AQCAtMTczNjgsNyAmIzQzOzE3NDA3LDkgQEAgc3RhdGljIGludCBkb19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0XHRpbnNuID0gXHUwMDI2aW5zbnNbZW52LVx1MDAzZWluc25faWR4XTtcbiBcdFx0aW5zbl9hdXggPSBcdTAwMjZlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtlbnYtXHUwMDNlaW5zbl9pZHhdO1xuIFxuLVx0XHRpZiAoJiM0MzsmIzQzO2Vudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCBcdTAwM2UgQlBGX0NPTVBMRVhJVFlfTElNSVRfSU5TTlMpIHtcbiYjNDM7XHRcdGFjY291bnRfcHJvY2Vzc2VkX2luc24oZW52KTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkIFx1MDAzZSBCUEZfQ09NUExFWElUWV9MSU1JVF9JTlNOUykge1xuIFx0XHRcdHZlcmJvc2UoZW52LFxuIFx0XHRcdFx0XCYjMzQ7QlBGIHByb2dyYW0gaXMgdG9vIGxhcmdlLiBQcm9jZXNzZWQgJWQgaW5zblxcblwmIzM0OyxcbiBcdFx0XHRcdGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCk7XG5AQCAtMTc1MDksNiAmIzQzOzE3NTUwLDcgQEAgc3RhdGljIGludCBkb19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0XHRcdFx0XHQgICAgXCYjMzQ7c3BlY3VsYXRpb24gYmFycmllciBhZnRlciBqdW1wIGluc3RydWN0aW9uIG1heSBub3QgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3RcJiMzNDspKVxuIFx0XHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gcHJvY2Vzc19icGZfZXhpdDpcbiYjNDM7XHRcdFx0YWNjb3VudF9jdXJyZW50X3BhdGgoZW52KTtcbiBcdFx0XHRtYXJrX3ZlcmlmaWVyX3N0YXRlX3NjcmF0Y2hlZChlbnYpO1xuIFx0XHRcdGVyciA9IGJwZl91cGRhdGVfYnJhbmNoX2NvdW50cyhlbnYsIGVudi1cdTAwM2VjdXJfc3RhdGUpO1xuIFx0XHRcdGlmIChlcnIpXG5AQCAtMTg0MTUsNiAmIzQzOzE4NDU3LDcgQEAgc3RhdGljIGludCBkb19jaGVja19jb21tb24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2cpXG4gXHRzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXggPSBlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXg7XG4gXHRzdHJ1Y3QgYnBmX3ZlcmlmaWVyX3N0YXRlICpzdGF0ZTtcbiBcdHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzO1xuJiM0MztcdHUzMiBpbnNuX3Byb2Nlc3NlZCA9IGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZDtcbiBcdGludCByZXQsIGk7XG4gXG4gXHRlbnYtXHUwMDNlcHJldl9saW5mbyA9IE5VTEw7XG5AQCAtMTg1NTMsOSAmIzQzOzE4NTk2LDE5IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfY29tbW9uKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nKVxuIFxuIFx0cmV0ID0gZG9fY2hlY2soZW52KTtcbiBvdXQ6XG4mIzQzO1x0YWNjb3VudF9jdXJyZW50X3BhdGgoZW52KTtcbiBcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBwb3BfbG9nKVxuIFx0XHRicGZfdmxvZ19yZXNldChcdTAwMjZlbnYtXHUwMDNlbG9nLCAwKTtcbiBcdGZyZWVfc3RhdGVzKGVudik7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIG92ZXJyaWRlIGlzIG5lZWRlZCB0byBhY2NvdW50IGZvciBhc3luYyBzdWJwcm9ncmFtcywgd2hpY2hcbiYjNDM7XHQgKiBhcmUgdmVyaWZpZWQgd2l0aCB0aGVpciBvd24gc2V0IG9mIHN0YWNrIGZyYW1lcyBhbmQgdGh1cyBhcmVcbiYjNDM7XHQgKiBub3QgYWNjb3VudGVkIGFzIGNhbGxlZXMgYnkgYWNjb3VudF9jdXJyZW50X3BhdGgoKS5cbiYjNDM7XHQgKiBBY2N1bXVsYXRlIHRoZWlyIHRvdGFsIGNvdW50cyBhcyB0b3RhbCBjb3VudHMgb2YgdGhlIG1haW4gb3JcbiYjNDM7XHQgKiBnbG9iYWwgc3VicHJvZyBob3N0aW5nIHRoZSBhc3luYyBjYWxsLlxuJiM0MztcdCAqL1xuJiM0MztcdGVudi1cdTAwM2VzdWJwcm9nX2luZm9bc3VicHJvZ10uaW5zbnNfdG90YWwgPSBlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTE4NTg0LDcgJiM0MzsxODYzNyw2IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eCA9IGVudi1cdTAwM2Vwcm9nLVx1MDAzZWF1eDtcbiBcdHN0cnVjdCBicGZfZnVuY19pbmZvX2F1eCAqc3ViX2F1eDtcbiBcdGludCBpLCByZXQsIG5ld19jbnQ7XG4tXHR1MzIgaW5zbl9wcm9jZXNzZWQ7XG4gXG4gXHRpZiAoIWF1eC1cdTAwM2VmdW5jX2luZm8pXG4gXHRcdHJldHVybiAwO1xuQEAgLTE4NTk5LDggJiM0MzsxODY1MSw2IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdFx0aWYgKCFicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0aW5zbl9wcm9jZXNzZWQgPSBlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQ7XG4tXG4gXHRcdHN1Yl9hdXggPSBzdWJwcm9nX2F1eChlbnYsIGkpO1xuIFx0XHRpZiAoIXN1Yl9hdXgtXHUwMDNlY2FsbGVkIHx8IHN1Yl9hdXgtXHUwMDNldmVyaWZpZWQpXG4gXHRcdFx0Y29udGludWU7XG5AQCAtMTg2MDgsNyAmIzQzOzE4NjU4LDYgQEAgc3RhdGljIGludCBkb19jaGVja19zdWJwcm9ncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0XHRlbnYtXHUwMDNlaW5zbl9pZHggPSBlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLnN0YXJ0O1xuIFx0XHRXQVJOX09OX09OQ0UoZW52LVx1MDAzZWluc25faWR4ID09IDApO1xuIFx0XHRyZXQgPSBkb19jaGVja19jb21tb24oZW52LCBpKTtcbi1cdFx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tpXS5pbnNuX3Byb2Nlc3NlZCA9IGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCAtIGluc25fcHJvY2Vzc2VkO1xuIFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fSBlbHNlIGlmIChlbnYtXHUwMDNlbG9nLmxldmVsIFx1MDAyNiBCUEZfTE9HX0xFVkVMKSB7XG5AQCAtMTg2MzUsMTIgJiM0MzsxODY4NCwxMCBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXG4gc3RhdGljIGludCBkb19jaGVja19tYWluKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4ge1xuLVx0dTMyIGluc25fcHJvY2Vzc2VkID0gZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkO1xuIFx0aW50IHJldDtcbiBcbiBcdGVudi1cdTAwM2VpbnNuX2lkeCA9IDA7XG4gXHRyZXQgPSBkb19jaGVja19jb21tb24oZW52LCAwKTtcbi1cdGVudi1cdTAwM2VzdWJwcm9nX2luZm9bMF0uaW5zbl9wcm9jZXNzZWQgPSBlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDtcbiBcdGlmICghcmV0KVxuIFx0XHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlc3RhY2tfZGVwdGggPSBlbnYtXHUwMDNlc3VicHJvZ19pbmZvWzBdLnN0YWNrX2RlcHRoO1xuIFx0cmV0dXJuIHJldDtcbkBAIC0xODY1NSwxNSAmIzQzOzE4NzAyLDIwIEBAIHN0YXRpYyB2b2lkIHByaW50X3ZlcmlmaWNhdGlvbl9zdGF0cyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0aWYgKGVudi1cdTAwM2Vsb2cubGV2ZWwgXHUwMDI2IEJQRl9MT0dfU1RBVFMpIHtcbiBcdFx0dmVyYm9zZShlbnYsIFwmIzM0O3ZlcmlmaWNhdGlvbiB0aW1lICVsbGQgdXNlY1xcblwmIzM0OyxcbiBcdFx0XHRkaXZfdTY0KGVudi1cdTAwM2V2ZXJpZmljYXRpb25fdGltZSwgMTAwMCkpO1xuLVx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7c3RhY2sgZGVwdGggJWRcJiMzNDssIGVudi1cdTAwM2VzdWJwcm9nX2luZm9bMF0uc3RhY2tfZGVwdGgpO1xuLVx0XHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBzdWJwcm9nX2NudDsgaSYjNDM7JiM0MzspXG4tXHRcdFx0dmVyYm9zZShlbnYsIFwmIzM0OyYjNDM7JWRcJiMzNDssIGVudi1cdTAwM2VzdWJwcm9nX2luZm9baV0uc3RhY2tfZGVwdGgpO1xuLVx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7IG1heCAlZFxcblwmIzM0OywgZW52LVx1MDAzZW1heF9zdGFja19kZXB0aCk7XG4tXHRcdHZlcmJvc2UoZW52LCBcJiMzNDtpbnNucyBwcm9jZXNzZWQgJWRcJiMzNDssIGVudi1cdTAwM2VzdWJwcm9nX2luZm9bMF0uaW5zbl9wcm9jZXNzZWQpO1xuLVx0XHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBzdWJwcm9nX2NudDsgaSYjNDM7JiM0MzspXG4tXHRcdFx0aWYgKGJwZl9zdWJwcm9nX2lzX2dsb2JhbChlbnYsIGkpKVxuLVx0XHRcdFx0dmVyYm9zZShlbnYsIFwmIzM0OyYjNDM7JWRcJiMzNDssIGVudi1cdTAwM2VzdWJwcm9nX2luZm9baV0uaW5zbl9wcm9jZXNzZWQpO1xuLVx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHZlcmJvc2UoZW52LCBcJiMzNDtzdGFjayBkZXB0aCBtYXggJWRcXG5cJiMzNDssIGVudi1cdTAwM2VtYXhfc3RhY2tfZGVwdGgpO1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc3VicHJvZ19jbnQ7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdGNvbnN0IGNoYXIgKm5hbWUgPSBlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLm5hbWU7XG4mIzQzO1x0XHRcdGNvbnN0IGNoYXIgKmtpbmQ7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoIW5hbWUgfHwgIW5hbWVbMF0pXG4mIzQzO1x0XHRcdFx0bmFtZSA9IFwmIzM0O1x1MDAzY3Vua25vd25cdTAwM2VcJiMzNDs7XG4mIzQzO1x0XHRcdGtpbmQgPSBpID09IDAgPyBcJiMzNDttYWluXCYjMzQ7IDpcbiYjNDM7XHRcdFx0ICAgICAgIGJwZl9zdWJwcm9nX2lzX2dsb2JhbChlbnYsIGkpID8gXCYjMzQ7Z2xvYmFsXCYjMzQ7IDogXCYjMzQ7c3RhdGljXCYjMzQ7O1xuJiM0MztcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7c3VicHJvZyAlZCAoJXMpICVzIGluc25zX3NlbGYgJWQgaW5zbnNfdG90YWwgJWQgc3RhY2sgJWRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0aSwgbmFtZSwga2luZCwgZW52LVx1MDAzZXN1YnByb2dfaW5mb1tpXS5pbnNuc19zZWxmLFxuJiM0MztcdFx0XHRcdGVudi1cdTAwM2VzdWJwcm9nX2luZm9baV0uaW5zbnNfdG90YWwsXG4mIzQzO1x0XHRcdFx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tpXS5zdGFja19kZXB0aCk7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXHR2ZXJib3NlKGVudiwgXCYjMzQ7cHJvY2Vzc2VkICVkIGluc25zIChsaW1pdCAlZCkgbWF4X3N0YXRlc19wZXJfaW5zbiAlZCBcJiMzNDtcbiBcdFx0XCYjMzQ7dG90YWxfc3RhdGVzICVkIHBlYWtfc3RhdGVzICVkIG1hcmtfcmVhZCAlZFxcblwmIzM0OyxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xuaW5kZXggNWIyNjVhZjNiMWQ1Ny4uODExM2ZlYTdiYTg2YyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbkBAIC0xMDIsNiAmIzQzOzEwMiw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7dmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3ZlcmlmaWVyX3N0YWNrX3B0ci5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt2ZXJpZmllcl9zdG9yZV9yZWxlYXNlLnNrZWwuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDt2ZXJpZmllcl9zdWJwcm9nX2luc25fc3RhdHMuc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dmVyaWZpZXJfc3VicHJvZ19wcmVjaXNpb24uc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dmVyaWZpZXJfc3VicHJvZ190b3BvLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3ZlcmlmaWVyX3N1YnJlZy5za2VsLmhcJiMzNDtcbkBAIC0yNjIsNiAmIzQzOzI2Myw3IEBAIHZvaWQgdGVzdF92ZXJpZmllcl9zdGFja19hcmcodm9pZCkgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9zdGFja19hcmcpOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlcih2b2lkKSAgICAgIHsgUlVOKHZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlcik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfc3RhY2tfcHRyKHZvaWQpICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfc3RhY2tfcHRyKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdG9yZV9yZWxlYXNlKHZvaWQpICAgICAgICB7IFJVTih2ZXJpZmllcl9zdG9yZV9yZWxlYXNlKTsgfVxuJiM0Mzt2b2lkIHRlc3RfdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzKHZvaWQpICAgeyBSVU4odmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbih2b2lkKSAgICB7IFJVTih2ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfc3VicHJvZ190b3BvKHZvaWQpICAgICAgICB7IFJVTih2ZXJpZmllcl9zdWJwcm9nX3RvcG8pOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX3N1YnJlZyh2b2lkKSAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N1YnJlZyk7IH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXG5pbmRleCBkM2RmN2E5ZjFkOGM4Li4wZWI0OTVjZTg1YzFjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXG5AQCAtMjcsNyAmIzQzOzI3LDggQEAgX19uYWtlZCB2b2lkIHN0YWNrX291dF9vZl9ib3VuZHModm9pZClcbiBcbiBTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVxuIF9fZGVzY3JpcHRpb24oXCYjMzQ7dW5pbml0aWFsaXplZCBzdGFjazFcJiMzNDspXG4tX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDhcJiMzNDspXG4mIzQzO19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKHVuaW5pdGlhbGl6ZWRfc3RhY2sxKSBtYWluIHt7Lip9fSBzdGFjayA4XCYjMzQ7KVxuIF9fZmFpbHVyZV91bnByaXYgX19tc2dfdW5wcml2KFwmIzM0O2ludmFsaWQgcmVhZCBmcm9tIHN0YWNrXCYjMzQ7KVxuIF9fbmFrZWQgdm9pZCB1bmluaXRpYWxpemVkX3N0YWNrMSh2b2lkKVxuIHtcbkBAIC00NSw3ICYjNDM7NDYsOCBAQCBfX25ha2VkIHZvaWQgdW5pbml0aWFsaXplZF9zdGFjazEodm9pZClcbiBcbiBTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVxuIF9fZGVzY3JpcHRpb24oXCYjMzQ7dW5pbml0aWFsaXplZCBzdGFjazJcJiMzNDspXG4tX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDhcJiMzNDspXG4mIzQzO19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKHVuaW5pdGlhbGl6ZWRfc3RhY2syKSBtYWluIGluc25zX3NlbGYge3tbMC05XSYjNDM7fX0gaW5zbnNfdG90YWwge3tbMC05XSYjNDM7fX0gc3RhY2sgOFwmIzM0OylcbiBfX2ZhaWx1cmVfdW5wcml2IF9fbXNnX3VucHJpdihcJiMzNDtpbnZhbGlkIHJlYWQgZnJvbSBzdGFja1wmIzM0OylcbiBfX25ha2VkIHZvaWQgdW5pbml0aWFsaXplZF9zdGFjazIodm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXG5pbmRleCA4MzcwN2ZhZWEwNDk5Li40Y2ZhYTZiNGFiNDA1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbkBAIC0xMCw3ICYjNDM7MTAsOCBAQFxuIFxuIFNFQyhcJiMzNDtyYXdfdHBcJiMzNDspXG4gX19hcmNoX3g4Nl82NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDhcJiMzNDspXG4mIzQzO19fbG9nX2xldmVsKDQpXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoc2ltcGxlKSBtYWluIGluc25zX3NlbGYge3tbMC05XSYjNDM7fX0gaW5zbnNfdG90YWwge3tbMC05XSYjNDM7fX0gc3RhY2sgOFwmIzM0OylcbiBfX3hsYXRlZChcJiMzNDs0OiByNSA9IDVcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7NTogcjAgPSBcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7NjogcjAgPSBcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcJiMzNDspXG5AQCAtOTYsNyAmIzQzOzk3LDggQEAgX19uYWtlZCB2b2lkIGNhbmFyeV96ZXJvX3NwaWxscyh2b2lkKVxuIFxuIFNFQyhcJiMzNDtyYXdfdHBcJiMzNDspXG4gX19hcmNoX3g4Nl82NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDE2XCYjMzQ7KVxuJiM0MztfX2xvZ19sZXZlbCg0KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKHdyb25nX3JlZ19pbl9wYXR0ZXJuMSkgbWFpbiB7ey4qfX0gc3RhY2sgMTZcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MTogKih1NjQgKikocjEwIC0xNikgPSByMVwmIzM0OylcbiBfX3hsYXRlZChcJiMzNDsuLi5cJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MzogcjAgPSBcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcJiMzNDspXG5AQCAtNTk4LDcgJiM0Mzs2MDAsOCBAQCBfX25ha2VkIHN0YXRpYyB2b2lkIHN1YnByb2dzX3VzZV9pbmRlcGVuZGVudF9vZmZzZXRzX2F1eCh2b2lkKVxuIFxuIFNFQyhcJiMzNDtyYXdfdHBcJiMzNDspXG4gX19hcmNoX3g4Nl82NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDhcJiMzNDspXG4mIzQzO19fbG9nX2xldmVsKDQpXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoaGVscGVyX2NhbGxfZG9lc19ub3RfcHJldmVudF9icGZfZmFzdGNhbGwpIG1haW4ge3suKn19IHN0YWNrIDhcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MjogcjAgPSBcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcJiMzNDspXG4gX19zdWNjZXNzXG4gX19uYWtlZCB2b2lkIGhlbHBlcl9jYWxsX2RvZXNfbm90X3ByZXZlbnRfYnBmX2Zhc3RjYWxsKHZvaWQpXG5AQCAtNjIwLDcgJiM0Mzs2MjMsOCBAQCBfX25ha2VkIHZvaWQgaGVscGVyX2NhbGxfZG9lc19ub3RfcHJldmVudF9icGZfZmFzdGNhbGwodm9pZClcbiBcbiBTRUMoXCYjMzQ7cmF3X3RwXCYjMzQ7KVxuIF9fYXJjaF94ODZfNjRcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcJiMzNDtzdGFjayBkZXB0aCAyNFwmIzM0OylcbiYjNDM7X19sb2dfbGV2ZWwoNClcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAwIChtYXlfZ290b19pbnRlcmFjdGlvbl94ODZfNjQpIG1haW4ge3suKn19IHN0YWNrIDI0XCYjMzQ7KVxuIC8qIG1heV9nb3RvIGNvdW50ZXIgYXQgLTI0ICovXG4gX194bGF0ZWQoXCYjMzQ7MDogKih1NjQgKikocjEwIC0yNCkgPVwmIzM0OylcbiAvKiBtYXlfZ290byB0aW1lc3RhbXAgYXQgLTE2ICovXG5AQCAtNjYxLDcgJiM0Mzs2NjUsOCBAQCBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb25feDg2XzY0KHZvaWQpXG4gU0VDKFwmIzM0O3Jhd190cFwmIzM0OylcbiBfX2FyY2hfYXJtNjRcbiBfX2FyY2hfcmlzY3Y2NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDI0XCYjMzQ7KVxuJiM0MztfX2xvZ19sZXZlbCg0KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKG1heV9nb3RvX2ludGVyYWN0aW9uKSBtYWluIHt7Lip9fSBzdGFjayAyNFwmIzM0OylcbiAvKiBtYXlfZ290byBjb3VudGVyIGF0IC0yNCAqL1xuIF9feGxhdGVkKFwmIzM0OzA6ICoodTY0ICopKHIxMCAtMjQpID1cJiMzNDspXG4gLyogbWF5X2dvdG8gdGltZXN0YW1wIGF0IC0xNiAqL1xuQEAgLTcwOCw3ICYjNDM7NzEzLDkgQEAgX19uYWtlZCBzdGF0aWMgdm9pZCBkdW1teV9sb29wX2NhbGxiYWNrKHZvaWQpXG4gXG4gU0VDKFwmIzM0O3Jhd190cFwmIzM0OylcbiBfX2FyY2hfeDg2XzY0XG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCYjMzQ7c3RhY2sgZGVwdGggMzImIzQzOzBcJiMzNDspXG4mIzQzO19fbG9nX2xldmVsKDQpXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoYnBmX2xvb3BfaW50ZXJhY3Rpb24xKSBtYWluIHt7Lip9fSBzdGFjayAzMlwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAxIChkdW1teV9sb29wX2NhbGxiYWNrKSBzdGF0aWMge3suKn19IHN0YWNrIDBcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MjogcjEgPSAxXCYjMzQ7KVxuIF9feGxhdGVkKFwmIzM0OzM6IHIwID1cJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7NDogcjAgPSBcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcJiMzNDspXG5AQCAtNzU2LDcgJiM0Mzs3NjMsOSBAQCBfX25ha2VkIGludCBicGZfbG9vcF9pbnRlcmFjdGlvbjEodm9pZClcbiBcbiBTRUMoXCYjMzQ7cmF3X3RwXCYjMzQ7KVxuIF9fYXJjaF94ODZfNjRcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcJiMzNDtzdGFjayBkZXB0aCA0MCYjNDM7MFwmIzM0OylcbiYjNDM7X19sb2dfbGV2ZWwoNClcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAwIChicGZfbG9vcF9pbnRlcmFjdGlvbjIpIG1haW4ge3suKn19IHN0YWNrIDQwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDEgKGR1bW15X2xvb3BfY2FsbGJhY2spIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFwmIzM0OylcbiAvKiBjYWxsIGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZCAqL1xuIF9feGxhdGVkKFwmIzM0OzI6IHIxID0gNDJcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MzogcjAgPVwmIzM0OylcbkBAIC04MDAsNyAmIzQzOzgwOSwxMCBAQCBfX25ha2VkIGludCBicGZfbG9vcF9pbnRlcmFjdGlvbjIodm9pZClcbiBcbiBTRUMoXCYjMzQ7cmF3X3RwXCYjMzQ7KVxuIF9fYXJjaF94ODZfNjRcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcJiMzNDtzdGFjayBkZXB0aCA1MTImIzQzOzAgbWF4IDUxMlwmIzM0OylcbiYjNDM7X19sb2dfbGV2ZWwoNClcbiYjNDM7X19tc2coXCYjMzQ7c3RhY2sgZGVwdGggbWF4IDUxMlwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAwIChjdW11bGF0aXZlX3N0YWNrX2RlcHRoKSBtYWluIHt7Lip9fSBzdGFjayA1MTJcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMSAoY3VtdWxhdGl2ZV9zdGFja19kZXB0aF9zdWJwcm9nKSBzdGF0aWMge3suKn19IHN0YWNrIDBcJiMzNDspXG4gLyoganVzdCB0byBwcmludCB4bGF0ZWQgdmVyc2lvbiB3aGVuIGRlYnVnZ2luZyAqL1xuIF9feGxhdGVkKFwmIzM0O3IwID0gXHUwMDI2KHZvaWQgX19wZXJjcHUgKikocjApXCYjMzQ7KVxuIF9fc3VjY2Vzc1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuY1xuaW5kZXggNjdkYzM1MmFkZGZkNy4uN2I2NWVlYTk3ZWJjMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2dsb2JhbF9zdWJwcm9ncy5jXG5AQCAtNTIsNyAmIzQzOzUyLDEwIEBAIF9fbXNnKFwmIzM0OygmIzM5O2dsb2JhbF9jYWxsc19nb29kX29ubHkmIzM5OykgaXMgZ2xvYmFsIGFuZCBhc3N1bWVkIHZhbGlkLlwmIzM0OylcbiAvKiBldmVudHVhbGx5IGdsb2JhbF9nb29kKCkgaXMgdHJhbnNpdGl2ZWx5IHZhbGlkYXRlZCBhcyB3ZWxsICovXG4gX19tc2coXCYjMzQ7VmFsaWRhdGluZyBnbG9iYWxfZ29vZCgpIGZ1bmNcJiMzNDspXG4gX19tc2coXCYjMzQ7KCYjMzk7Z2xvYmFsX2dvb2QmIzM5OykgaXMgc2FmZSBmb3IgYW55IGFyZ3MgdGhhdCBtYXRjaCBpdHMgcHJvdG90eXBlXCYjMzQ7KVxuLV9fbXNnKFwmIzM0O2luc25zIHByb2Nlc3NlZCB7e1swLTldJiM0MztcXFxcJiM0MztbMC05XSYjNDM7XFxcXCYjNDM7WzAtOV0mIzQzOyR9fVwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAwIChjaGFpbmVkX2dsb2JhbF9mdW5jX2NhbGxzX3N1Y2Nlc3MpIG1haW4gaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2tcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKGdsb2JhbF9jYWxsc19nb29kX29ubHkpIGdsb2JhbCBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgMiBzdGFja1wmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyB7e1swLTldJiM0Mzt9fSAoZ2xvYmFsX2dvb2QpIGdsb2JhbCBpbnNuc19zZWxmIDUgaW5zbnNfdG90YWwgNSBzdGFja1wmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7cHJvY2Vzc2VkIDE0IGluc25zXCYjMzQ7KVxuIGludCBjaGFpbmVkX2dsb2JhbF9mdW5jX2NhbGxzX3N1Y2Nlc3Modm9pZClcbiB7XG4gXHRpbnQgc3VtID0gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suY1xuaW5kZXggYmI4MjA2ZTEwODgwYy4uZWEwYTdlNzMzMzFkYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcbkBAIC04Niw3ICYjNDM7ODYsOSBAQCBfX25ha2VkIHN0YXRpYyB2b2lkIGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZyh2b2lkKVxuIFNFQyhcJiMzNDtrcHJvYmVcJiMzNDspXG4gX19kZXNjcmlwdGlvbihcJiMzNDtQcml2YXRlIHN0YWNrLCBzdWJ0cmVlIFx1MDAzZSBNQVhfQlBGX1NUQUNLXCYjMzQ7KVxuIF9fc3VjY2Vzc1xuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDUxMiYjNDM7MzIgbWF4IDUxMlwmIzM0OylcbiYjNDM7X19sb2dfbGV2ZWwoNCkgX19tc2coXCYjMzQ7c3RhY2sgZGVwdGggbWF4IDUxMlwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAwIChwcml2YXRlX3N0YWNrX25lc3RlZF8xKSBtYWluIHt7Lip9fSBzdGFjayA1MTJcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMSAoY3VtdWxhdGl2ZV9zdGFja19kZXB0aF9zdWJwcm9nKSBzdGF0aWMge3suKn19IHN0YWNrIDMyXCYjMzQ7KVxuIF9fYXJjaF94ODZfNjRcbiAvKiBwcml2YXRlIHN0YWNrIGZwIGZvciB0aGUgbWFpbiBwcm9nICovXG4gX19qaXRlZChcJiMzNDtcdG1vdmFic3FcdCQweHt7Lip9fSwgJXI5XCYjMzQ7KVxuQEAgLTMzMSw3ICYjNDM7MzMzLDExIEBAIFNFQyhcJiMzNDtmZW50cnkvYnBmX2ZlbnRyeV90ZXN0OVwmIzM0OylcbiBfX2Rlc2NyaXB0aW9uKFwmIzM0O1ByaXZhdGUgc3RhY2ssIGFzeW5jIGNhbGxiYWNrLCBwb3RlbnRpYWwgbmVzdGluZ1wmIzM0OylcbiBfX3N1Y2Nlc3MgX19yZXR2YWwoMClcbiBfX2xvYWRfaWZfSklUZWQoKVxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDgmIzQzOzAmIzQzOzI1NiYjNDM7MCBtYXggMjcyXCYjMzQ7KVxuJiM0MztfX2xvZ19sZXZlbCg0KSBfX21zZyhcJiMzNDtzdGFjayBkZXB0aCBtYXggMjcyXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKHByaXZhdGVfc3RhY2tfYXN5bmNfY2FsbGJhY2tfMikgbWFpbiB7ey4qfX0gc3RhY2sgOFwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAxICh0aW1lcl9jYjEpIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAyIChzdWJwcm9nMSkgc3RhdGljIHt7Lip9fSBzdGFjayAyNTZcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMyAoc3VicHJvZzIpIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFwmIzM0OylcbiBfX2FyY2hfeDg2XzY0XG4gX19qaXRlZChcJiMzNDtcdHN1YnFcdCQweDEwMCwgJXJzcFwmIzM0OylcbiBfX2FyY2hfYXJtNjRcbkBAIC0zNTUsNyAmIzQzOzM2MSwxMCBAQCBpbnQgcHJpdmF0ZV9zdGFja19hc3luY19jYWxsYmFja18yKHZvaWQpXG4gU0VDKFwmIzM0O2ZlbnRyeS9icGZfZmVudHJ5X3Rlc3Q5XCYjMzQ7KVxuIF9fZGVzY3JpcHRpb24oXCYjMzQ7cHJpdmF0ZSBzdGFjaywgbWF4IHN0YWNrIGRlcHRoIGlzIHByaXZhdGUgc3RhY2tcJiMzNDspXG4gX19zdWNjZXNzXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCYjMzQ7c3RhY2sgZGVwdGggOCYjNDM7MjU2JiM0MzswIG1heCAyNTZcJiMzNDspXG4mIzQzO19fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIG1heCAyNTZcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAocHJpdmF0ZV9zdGFja19tYXhfZGVwdGgpIG1haW4ge3suKn19IHN0YWNrIDhcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMSAoc3VicHJvZzEpIHN0YXRpYyBpbnNuc19zZWxmIHt7WzAtOV0mIzQzO319IGluc25zX3RvdGFsIHt7WzAtOV0mIzQzO319IHN0YWNrIDI1NlwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAyIChzdWJwcm9nMikgc3RhdGljIGluc25zX3NlbGYge3tbMC05XSYjNDM7fX0gaW5zbnNfdG90YWwge3tbMC05XSYjNDM7fX0gc3RhY2sgMFwmIzM0OylcbiBpbnQgcHJpdmF0ZV9zdGFja19tYXhfZGVwdGgodm9pZClcbiB7XG4gXHRpbnQgeCA9IDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uOGY2MDgyZmRiNWM4NFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cy5jXG5AQCAtMCwwICYjNDM7MSwyMjMgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY3ZtbGludXguaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgdGltZXJfdmFsdWUge1xuJiM0MztcdHN0cnVjdCBicGZfdGltZXIgdGltZXI7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3Qge1xuJiM0MztcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfQVJSQVkpO1xuJiM0MztcdF9fdWludChtYXhfZW50cmllcywgMSk7XG4mIzQzO1x0X190eXBlKGtleSwgX191MzIpO1xuJiM0MztcdF9fdHlwZSh2YWx1ZSwgc3RydWN0IHRpbWVyX3ZhbHVlKTtcbiYjNDM7fSB0aW1lcl9tYXAgU0VDKFwmIzM0Oy5tYXBzXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDs/cmF3X3RwXCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAwIChzdGF0c19tYWluX29ubHkpIG1haW4gaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMFwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7cHJvY2Vzc2VkIDIgaW5zbnNcJiMzNDspXG4mIzQzO19fbmFrZWQgaW50IHN0YXRzX21haW5fb25seSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcbiYjNDM7XHRcdFwmIzM0O3IwID0gMDtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O2V4aXQ7XCYjMzQ7XG4mIzQzO1x0KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7X19uYWtlZCBfX25vaW5saW5lIF9fdXNlZFxuJiM0MztzdGF0aWMgaW50IHN0YXRzX2NoYWluX2xlYWYodm9pZClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZSAoXG4mIzQzO1x0XHRcJiMzNDtyMCA9IDA7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtleGl0O1wmIzM0O1xuJiM0MztcdCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fbmFrZWQgX19ub2lubGluZSBfX3VzZWRcbiYjNDM7c3RhdGljIGludCBzdGF0c19jaGFpbl9wYXJlbnQodm9pZClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZSAoXG4mIzQzO1x0XHRcJiMzNDtjYWxsIHN0YXRzX2NoYWluX2xlYWY7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtleGl0O1wmIzM0O1xuJiM0MztcdCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDs/cmF3X3RwXCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcbiYjNDM7LypcbiYjNDM7ICogc2VsZjogMiAmIzQzOyAyICYjNDM7IDIgPSA2XG4mIzQzOyAqIHRvdGFsczogbGVhZiAyLCBwYXJlbnQgMiAmIzQzOyAyID0gNCwgbWFpbiAyICYjNDM7IDQgPSA2XG4mIzQzOyAqL1xuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKHN0YXRzX3N0YXRpY19jaGFpbikgbWFpbiBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgNiBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19jaGFpbl9wYXJlbnQpIHN0YXRpYyBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgNCBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19jaGFpbl9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMFwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7cHJvY2Vzc2VkIDYgaW5zbnNcJiMzNDspXG4mIzQzO19fbmFrZWQgaW50IHN0YXRzX3N0YXRpY19jaGFpbih2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcbiYjNDM7XHRcdFwmIzM0O2NhbGwgc3RhdHNfY2hhaW5fcGFyZW50O1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7ZXhpdDtcJiMzNDtcbiYjNDM7XHQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkXG4mIzQzO3N0YXRpYyBpbnQgc3RhdHNfc2hhcmVkX2xlYWYodm9pZClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZSAoXG4mIzQzO1x0XHRcJiMzNDtyMCA9IDA7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtleGl0O1wmIzM0O1xuJiM0MztcdCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fbmFrZWQgX19ub2lubGluZSBfX3VzZWRcbiYjNDM7aW50IHN0YXRzX2dsb2JhbF9yb290KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRhc20gdm9sYXRpbGUgKFxuJiM0MztcdFx0XCYjMzQ7Y2FsbCBzdGF0c19zaGFyZWRfbGVhZjtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O2V4aXQ7XCYjMzQ7XG4mIzQzO1x0KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0Oz9yYXdfdHBcJiMzNDspXG4mIzQzO19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KVxuJiM0MzsvKlxuJiM0MzsgKiBzdGF0c19zaGFyZWRfbGVhZiBpcyBleHBsb3JlZCBvbmNlIHVuZGVyIGVhY2ggaW5kZXBlbmRlbnQgcm9vdC5cbiYjNDM7ICogc2VsZjogbWFpbiAzICYjNDM7IGxlYWYgNCAmIzQzOyBnbG9iYWwgMiA9IDlcbiYjNDM7ICogcm9vdCB0b3RhbHM6IG1haW4gNSAmIzQzOyBnbG9iYWwgNCA9IDlcbiYjNDM7ICovXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoc3RhdHNfc2hhcmVkX3Jvb3RzKSBtYWluIGluc25zX3NlbGYgMyBpbnNuc190b3RhbCA1IHN0YWNrIDBcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX3NoYXJlZF9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiA0IGluc25zX3RvdGFsIDQgc3RhY2sgMFwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyB7e1swLTldJiM0Mzt9fSAoc3RhdHNfZ2xvYmFsX3Jvb3QpIGdsb2JhbCBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgNCBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtwcm9jZXNzZWQgOSBpbnNuc1wmIzM0OylcbiYjNDM7X19uYWtlZCBpbnQgc3RhdHNfc2hhcmVkX3Jvb3RzKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRhc20gdm9sYXRpbGUgKFxuJiM0MztcdFx0XCYjMzQ7Y2FsbCBzdGF0c19zaGFyZWRfbGVhZjtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O2NhbGwgc3RhdHNfZ2xvYmFsX3Jvb3Q7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtleGl0O1wmIzM0O1xuJiM0MztcdCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fbm9pbmxpbmUgX191c2VkXG4mIzQzO3N0YXRpYyBpbnQgc3RhdHNfYXN5bmNfbGVhZih2b2lkICptYXAsIF9fdTMyICprZXksIHN0cnVjdCBicGZfdGltZXIgKnRpbWVyKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fbm9pbmxpbmUgX191c2VkXG4mIzQzO3N0YXRpYyBfX3U2NCBzdGF0c19hc3luY19zY2hlZHVsZShzdHJ1Y3QgYnBmX21hcCAqbWFwLCBfX3UzMiAqa2V5LFxuJiM0MztcdFx0XHRcdCAgc3RydWN0IHRpbWVyX3ZhbHVlICp2YWx1ZSwgdm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcbiYjNDM7XHRcdFwmIzM0O3IxID0gJVt0aW1lcl07XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtyMiA9ICVbc3RhdHNfYXN5bmNfbGVhZl07XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107XCYjMzQ7XG4mIzQzO1x0XHQ6XG4mIzQzO1x0XHQ6IFt0aW1lcl0gXCYjMzQ7clwmIzM0OyAodmFsdWUpLFxuJiM0MztcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfbGVhZiksXG4mIzQzO1x0XHQgIF9faW1tKGJwZl90aW1lcl9zZXRfY2FsbGJhY2spXG4mIzQzO1x0XHQ6IF9fY2xvYmJlcl9jb21tb25cbiYjNDM7XHQpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7P3Jhd190cFwmIzM0OylcbiYjNDM7X19zdWNjZXNzIF9fbG9nX2xldmVsKDQpXG4mIzQzOy8qXG4mIzQzOyAqIHNlbGY6IDkgJiM0MzsgNyAmIzQzOyAyID0gMThcbiYjNDM7ICogdG90YWxzOiBsZWFmIDIsIHNjaGVkdWxlciA3LCBtYWluIHJvb3QgMThcbiYjNDM7ICovXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoc3RhdHNfYXN5bmNfZGlyZWN0KSBtYWluIGluc25zX3NlbGYgOSBpbnNuc190b3RhbCAxOCBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19hc3luY19zY2hlZHVsZSkgc3RhdGljIGluc25zX3NlbGYgNyBpbnNuc190b3RhbCA3IHN0YWNrIDBcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX2FzeW5jX2xlYWYpIHN0YXRpYyBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgMiBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtwcm9jZXNzZWQgMTggaW5zbnNcJiMzNDspXG4mIzQzO19fbmFrZWQgaW50IHN0YXRzX2FzeW5jX2RpcmVjdCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcbiYjNDM7XHRcdFwmIzM0O3IxID0gJVt0aW1lcl9tYXBdIGxsO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjIgPSAlW3N0YXRzX2FzeW5jX3NjaGVkdWxlXTtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O3IzID0gMDtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O3I0ID0gMDtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O2NhbGwgJVticGZfZm9yX2VhY2hfbWFwX2VsZW1dO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjAgPSAwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7ZXhpdDtcJiMzNDtcbiYjNDM7XHRcdDpcbiYjNDM7XHRcdDogX19pbW1fYWRkcih0aW1lcl9tYXApLFxuJiM0MztcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfc2NoZWR1bGUpLFxuJiM0MztcdFx0ICBfX2ltbShicGZfZm9yX2VhY2hfbWFwX2VsZW0pXG4mIzQzO1x0XHQ6IF9fY2xvYmJlcl9jb21tb25cbiYjNDM7XHQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztfX25vaW5saW5lIF9fdXNlZFxuJiM0MztzdGF0aWMgaW50IHN0YXRzX2FzeW5jX25lc3RlZF9sZWFmKHZvaWQgKm1hcCwgX191MzIgKmtleSwgc3RydWN0IGJwZl90aW1lciAqdGltZXIpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7X19ub2lubGluZSBfX3VzZWRcbiYjNDM7c3RhdGljIGludCBzdGF0c19hc3luY19vdXRlcih2b2lkICptYXAsIF9fdTMyICprZXksIHN0cnVjdCBicGZfdGltZXIgKnRpbWVyKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcbiYjNDM7XHRcdFwmIzM0O3IxID0gJVt0aW1lcl07XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtyMiA9ICVbc3RhdHNfYXN5bmNfbmVzdGVkX2xlYWZdO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7Y2FsbCAlW2JwZl90aW1lcl9zZXRfY2FsbGJhY2tdO1wmIzM0O1xuJiM0MztcdFx0OlxuJiM0MztcdFx0OiBbdGltZXJdIFwmIzM0O3JcJiMzNDsgKHRpbWVyKSxcbiYjNDM7XHRcdCAgX19pbW1fcHRyKHN0YXRzX2FzeW5jX25lc3RlZF9sZWFmKSxcbiYjNDM7XHRcdCAgX19pbW0oYnBmX3RpbWVyX3NldF9jYWxsYmFjaylcbiYjNDM7XHRcdDogX19jbG9iYmVyX2NvbW1vblxuJiM0MztcdCk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fbm9pbmxpbmUgX191c2VkXG4mIzQzO3N0YXRpYyBfX3U2NCBzdGF0c19hc3luY19uZXN0ZWRfc2NoZWR1bGUoc3RydWN0IGJwZl9tYXAgKm1hcCwgX191MzIgKmtleSxcbiYjNDM7XHRcdFx0XHRcdCBzdHJ1Y3QgdGltZXJfdmFsdWUgKnZhbHVlLCB2b2lkICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRhc20gdm9sYXRpbGUgKFxuJiM0MztcdFx0XCYjMzQ7cjEgPSAlW3RpbWVyXTtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O3IyID0gJVtzdGF0c19hc3luY19vdXRlcl07XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107XCYjMzQ7XG4mIzQzO1x0XHQ6XG4mIzQzO1x0XHQ6IFt0aW1lcl0gXCYjMzQ7clwmIzM0OyAodmFsdWUpLFxuJiM0MztcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfb3V0ZXIpLFxuJiM0MztcdFx0ICBfX2ltbShicGZfdGltZXJfc2V0X2NhbGxiYWNrKVxuJiM0MztcdFx0OiBfX2Nsb2JiZXJfY29tbW9uXG4mIzQzO1x0KTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0Oz9yYXdfdHBcJiMzNDspXG4mIzQzO19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KVxuJiM0MzsvKlxuJiM0MzsgKiBzZWxmOiA5ICYjNDM7IDcgJiM0MzsgNyAmIzQzOyAyID0gMjVcbiYjNDM7ICogdG90YWxzOiBsZWFmIDIsIG91dGVyIDcsIHNjaGVkdWxlciA3LCBtYWluIHJvb3QgMjVcbiYjNDM7ICovXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoc3RhdHNfYXN5bmNfbmVzdGVkKSBtYWluIGluc25zX3NlbGYgOSBpbnNuc190b3RhbCAyNSBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19hc3luY19uZXN0ZWRfc2NoZWR1bGUpIHN0YXRpYyBpbnNuc19zZWxmIDcgaW5zbnNfdG90YWwgNyBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19hc3luY19vdXRlcikgc3RhdGljIGluc25zX3NlbGYgNyBpbnNuc190b3RhbCA3IHN0YWNrIDBcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX2FzeW5jX25lc3RlZF9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMFwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7cHJvY2Vzc2VkIDI1IGluc25zXCYjMzQ7KVxuJiM0MztfX25ha2VkIGludCBzdGF0c19hc3luY19uZXN0ZWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZSAoXG4mIzQzO1x0XHRcJiMzNDtyMSA9ICVbdGltZXJfbWFwXSBsbDtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O3IyID0gJVtzdGF0c19hc3luY19uZXN0ZWRfc2NoZWR1bGVdO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjMgPSAwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjQgPSAwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7Y2FsbCAlW2JwZl9mb3JfZWFjaF9tYXBfZWxlbV07XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtyMCA9IDA7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtleGl0O1wmIzM0O1xuJiM0MztcdFx0OlxuJiM0MztcdFx0OiBfX2ltbV9hZGRyKHRpbWVyX21hcCksXG4mIzQzO1x0XHQgIF9faW1tX3B0cihzdGF0c19hc3luY19uZXN0ZWRfc2NoZWR1bGUpLFxuJiM0MztcdFx0ICBfX2ltbShicGZfZm9yX2VhY2hfbWFwX2VsZW0pXG4mIzQzO1x0XHQ6IF9fY2xvYmJlcl9jb21tb25cbiYjNDM7XHQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXG5pbmRleCAyNGNkMGE3NjM2NzMwLi5hNjNlMzM2NzUwOTE4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuQEAgLTE5OCw3ICYjNDM7MTk4LDggQEAgX19zdWNjZXNzXG4gLyogQ2hlY2sgdGhhdCB0aGUgbWF4aW11bSBzdGFjayBkZXB0aCBpcyBjb3JyZWN0bHkgbWFpbnRhaW5lZCBhY2NvcmRpbmcgdG8gdGhlXG4gICogbWF4aW11bSBwb3NzaWJsZSB2YXJpYWJsZSBvZmZzZXQuXG4gICovXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCYjMzQ7c3RhY2sgZGVwdGggMTZcJiMzNDspXG4mIzQzO19fbG9nX2xldmVsKDQpXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoc3RhY2tfd3JpdGVfcHJpdl92c191bnByaXYpIG1haW4ge3suKn19IHN0YWNrIDE2XCYjMzQ7KVxuIF9fZmFpbHVyZV91bnByaXZcbiAvKiBWYXJpYWJsZSBzdGFjayBhY2Nlc3MgaXMgcmVqZWN0ZWQgZm9yIHVucHJpdmlsZWdlZC5cbiAgKi9cbkBAIC0yMzgsNyAmIzQzOzIzOSw4IEBAIF9fc3VjY2Vzc1xuIC8qIENoZWNrIHRoYXQgdGhlIG1heGltdW0gc3RhY2sgZGVwdGggaXMgY29ycmVjdGx5IG1haW50YWluZWQgYWNjb3JkaW5nIHRvIHRoZVxuICAqIG1heGltdW0gcG9zc2libGUgdmFyaWFibGUgb2Zmc2V0LlxuICAqL1xuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDE2XCYjMzQ7KVxuJiM0MztfX2xvZ19sZXZlbCg0KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKHN0YWNrX3dyaXRlX2ZvbGxvd2VkX2J5X3JlYWQpIG1haW4ge3suKn19IHN0YWNrIDE2XCYjMzQ7KVxuIF9fZmFpbHVyZV91bnByaXZcbiBfX21zZ191bnByaXYoXCYjMzQ7UjIgdmFyaWFibGUgc3RhY2sgYWNjZXNzIHByb2hpYml0ZWQgZm9yICFyb290XCYjMzQ7KVxuIF9fcmV0dmFsKDApXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfdmVyaWZpZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3ZlcmlmaWVyLmNcbmluZGV4IGE4YWUwM2M1N2JiYWUuLmJmZmI3MzYwNDM0YzUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jXG5AQCAtMTU2MCw3ICYjNDM7MTU2MCw3IEBAIHN0YXRpYyB2b2lkIGRvX3Rlc3Rfc2luZ2xlKHN0cnVjdCBicGZfdGVzdCAqdGVzdCwgYm9vbCB1bnByaXYsXG4gXG4gXHRvcHRzLmV4cGVjdGVkX2F0dGFjaF90eXBlID0gdGVzdC1cdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZTtcbiBcdGlmIChleHBlY3RlZF9yZXQgPT0gVkVSQk9TRV9BQ0NFUFQpXG4tXHRcdG9wdHMubG9nX2xldmVsID0gMjtcbiYjNDM7XHRcdG9wdHMubG9nX2xldmVsID0gMiB8IDQ7XG4gXHRlbHNlIGlmICh2ZXJib3NlKVxuIFx0XHRvcHRzLmxvZ19sZXZlbCA9IHZlcmlmX2xvZ19sZXZlbCB8IDQ7IC8qIGZvcmNlIHN0YXRzICovXG4gXHRlbHNlXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL2NhbGxzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvY2FsbHMuY1xuaW5kZXggOGNkNjI2ZTA0NTUxNS4uZWI2ZTNiYWVmNDEyYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9jYWxscy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvY2FsbHMuY1xuQEAgLTEwOTEsNyAmIzQzOzEwOTEsMTcgQEBcbiBcdC8qIHN0YWNrX21haW49MzIsIHN0YWNrX0E9MjU2LCBzdGFja19CPTY0XG4gXHQgKiBhbmQgbWF4KG1haW4mIzQzO0EsIG1haW4mIzQzO0EmIzQzO0IpIFx1MDAzYyA1MTJcbiBcdCAqL1xuLVx0LnJlc3VsdCA9IEFDQ0VQVCxcbiYjNDM7XHQucmVzdWx0ID0gVkVSQk9TRV9BQ0NFUFQsXG4mIzQzO1x0LmVycnN0ciA9IFwmIzM0O3N0YWNrIGRlcHRoIG1heCAzNTJcXHRcJiMzNDtcbiYjNDM7XHRcdCAgXCYjMzQ7c3VicHJvZyAwIChcdTAwM2N1bmtub3duXHUwMDNlKSBtYWluIGluc25zX3NlbGYgXFx0XCYjMzQ7XG4mIzQzO1x0XHQgIFwmIzM0OyBpbnNuc190b3RhbCBcXHRcJiMzNDtcbiYjNDM7XHRcdCAgXCYjMzQ7IHN0YWNrIDMyXFx0XCYjMzQ7XG4mIzQzO1x0XHQgIFwmIzM0O3N1YnByb2cgMSAoXHUwMDNjdW5rbm93blx1MDAzZSkgc3RhdGljIGluc25zX3NlbGYgXFx0XCYjMzQ7XG4mIzQzO1x0XHQgIFwmIzM0OyBpbnNuc190b3RhbCBcXHRcJiMzNDtcbiYjNDM7XHRcdCAgXCYjMzQ7IHN0YWNrIDI1NlxcdFwmIzM0O1xuJiM0MztcdFx0ICBcJiMzNDtzdWJwcm9nIDIgKFx1MDAzY3Vua25vd25cdTAwM2UpIHN0YXRpYyBpbnNuc19zZWxmIFxcdFwmIzM0O1xuJiM0MztcdFx0ICBcJiMzNDsgaW5zbnNfdG90YWwgXFx0XCYjMzQ7XG4mIzQzO1x0XHQgIFwmIzM0OyBzdGFjayA2NFwmIzM0OyxcbiB9LFxuIHtcbiBcdFwmIzM0O2NhbGxzOiBzdGFjayBkZXB0aCBjaGVjayB1c2luZyB0aHJlZSBmcmFtZXMuIHRlc3QyXCYjMzQ7LFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbmluZGV4IGM5YzI1Nzc4NGVlM2QuLjVjMGVjM2VkY2U3MjAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbkBAIC05OTMsMTMgJiM0Mzs5OTMsMTUgQEAgc3RhdGljIHZvaWQgZnJlZV92ZXJpZl9zdGF0cyhzdHJ1Y3QgdmVyaWZfc3RhdHMgKnN0YXRzLCBzaXplX3Qgc3RhdF9jbnQpXG4gXG4gc3RhdGljIGNoYXIgdmVyaWZfbG9nX2J1Zls2NCAqIDEwMjRdO1xuIFxuLSNkZWZpbmUgTUFYX1BBUlNFRF9MT0dfTElORVMgMTAwXG4mIzQzOy8qIEtlZXAgcm9vbSBmb3IgYWxsIDI1NiBzdWJwcm9ncmFtIHJlY29yZHMgYW5kIHRyYWlsaW5nIHN0YXRpc3RpY3MuICovXG4mIzQzOyNkZWZpbmUgTUFYX1BBUlNFRF9MT0dfTElORVMgMzAwXG4gXG4gc3RhdGljIGludCBwYXJzZV92ZXJpZl9sb2coY2hhciAqIGNvbnN0IGJ1Ziwgc2l6ZV90IGJ1Zl9zeiwgc3RydWN0IHZlcmlmX3N0YXRzICpzKVxuIHtcbiBcdGNvbnN0IGNoYXIgKmN1cjtcbi1cdGludCBwb3MsIGxpbmVzLCBzdWJfc3RhY2ssIGNudCA9IDA7XG4tXHRjaGFyICpzdGF0ZSA9IE5VTEwsICp0b2tlbiwgc3RhY2tbNTEyXTtcbiYjNDM7XHRsb25nIHN1Yl9zdGFjaztcbiYjNDM7XHRpbnQgcG9zLCBsaW5lcywgY250ID0gMDtcbiYjNDM7XHRjaGFyICpzdGF0ZSA9IE5VTEwsICp0b2tlbiwgc3RhY2tbNTEyXSA9IHt9O1xuIFxuIFx0YnVmW2J1Zl9zeiAtIDFdID0gJiMzOTtcXDAmIzM5OztcbiBcbkBAIC0xMDI1LDExICYjNDM7MTAyNywyNCBAQCBzdGF0aWMgaW50IHBhcnNlX3ZlcmlmX2xvZyhjaGFyICogY29uc3QgYnVmLCBzaXplX3QgYnVmX3N6LCBzdHJ1Y3QgdmVyaWZfc3RhdHMgKlxuIFx0XHRcdFx0XHUwMDI2cy1cdTAwM2VzdGF0c1tNQVJLX1JFQURfTUFYX0xFTl0pKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIE5ldyBrZXJuZWxzIGVtaXQgb25lIFwmIzM0O3N1YnByb2cgXHUwMDNjaWRcdTAwM2UgKFx1MDAzY25hbWVcdTAwM2UpIFx1MDAzY2tpbmRcdTAwM2VcJiMzNDsgcmVjb3JkXG4mIzQzO1x0XHQgKiBwZXIgc3VicHJvZ3JhbSB3aXRoIHRoZSBzdGFjayBkZXB0aCBhdCB0aGUgZW5kLCB3aGlsZSBvbGRcbiYjNDM7XHRcdCAqIGtlcm5lbHMgZW1pdCBhIHNpbmdsZSBcJiMzNDtzdGFjayBkZXB0aCBcdTAwM2NhJiM0MzsuLi4mIzQzO25cdTAwM2UgbWF4IFx1MDAzY21heFx1MDAzZVwmIzM0O1xuJiM0MztcdFx0ICogbGluZS4gTWF0Y2ggYm90aCBmb3JtYXRzIHNvIHZlcmlzdGF0IHdvcmtzIGFnYWluc3QgZWl0aGVyXG4mIzQzO1x0XHQgKiBrZXJuZWwuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChzc2NhbmYoY3VyLCBcJiMzNDtzdGFjayBkZXB0aCBtYXggJWxkXCYjMzQ7LCBcdTAwMjZzLVx1MDAzZXN0YXRzW01BWF9TVEFDS10pID09IDEpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0aWYgKHNzY2FuZihjdXIsIFwmIzM0O3N1YnByb2cgJSpkICUqcyAlKnMgaW5zbnNfc2VsZiAlKmQgaW5zbnNfdG90YWwgJSpkIHN0YWNrICVsZFwmIzM0OywgXHUwMDI2c3ViX3N0YWNrKSA9PSAxKSB7XG4mIzQzO1x0XHRcdHMtXHUwMDNlc3RhdHNbU1RBQ0tdICYjNDM7PSBzdWJfc3RhY2s7XG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fVxuIFx0XHRpZiAoMiA9PSBzc2NhbmYoY3VyLCBcJiMzNDtzdGFjayBkZXB0aCAlNTExcyBtYXggJWxkXCYjMzQ7LCBzdGFjaywgXHUwMDI2cy1cdTAwM2VzdGF0c1tNQVhfU1RBQ0tdKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcdH1cbiBcdHdoaWxlICgodG9rZW4gPSBzdHJ0b2tfcihjbnQmIzQzOyYjNDM7ID8gTlVMTCA6IHN0YWNrLCBcJiMzNDsmIzQzO1wmIzM0OywgXHUwMDI2c3RhdGUpKSkge1xuLVx0XHRpZiAoc3NjYW5mKHRva2VuLCBcJiMzNDslZFwmIzM0OywgXHUwMDI2c3ViX3N0YWNrKSA9PSAwKVxuJiM0MztcdFx0aWYgKHNzY2FuZih0b2tlbiwgXCYjMzQ7JWxkXCYjMzQ7LCBcdTAwMjZzdWJfc3RhY2spID09IDApXG4gXHRcdFx0YnJlYWs7XG4gXHRcdHMtXHUwMDNlc3RhdHNbU1RBQ0tdICYjNDM7PSBzdWJfc3RhY2s7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjI6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBzdGF0aXN0aWNzIHRyYWNraW5nIGZvciB0aGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBwcm9jZXNzZWQgcGVyIHN1YnByb2dyYW0gZHVyaW5nIEJQRiB2ZXJpZmljYXRpb24gYW5kIG91dHB1dHMgdGhlbSBpbiB0aGUgdmVyaWZpZXIgbG9nLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgdmVyaWZpY2F0aW9uIGxvZ2ljLCBleGVjdXRpb24gZmxvdywgb3IgdGhlIGdlbmVyYXRlZCBCUEYgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyNzYyMTk5OGU3N2E3OThmZjk4Mjk2NTkzZTcyOTJkZWM1NzI4NDEwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTIgMjI6Mzg6MTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oIGIvaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaAppbmRleCA5M2Y3YzIwNzVlZWFhLi43YzM3NjQ1MWRiODI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgKQEAgLTM4MCw2ICYjNDM7MzgwLDggQEAgc3RydWN0IGJwZl9mdW5jX3N0YXRlIHsKIAkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbnVtYmVyIG9mIHNpbXVsYXRpb25zIGlzIHRyYWNrZWQgaW4gZnJhbWUgTgogCSAqLwogCXUzMiBjYWxsYmFja19kZXB0aDsKJiM0MzsJLyogSW5zdHJ1Y3Rpb25zIHByb2Nlc3NlZCBpbiB0aGlzIGZyYW1lIGFuZCBjYWxsZWVzIG9uIHRoZSBjdXJyZW50IHBhdGguICovCiYjNDM7CXUzMiBpbnNuc19zdWJ0b3RhbDsKIAogCS8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIHNob3VsZCBiZSBsYXN0LiBTZWUgY29weV9mdW5jX3N0YXRlKCkgKi8KIAkvKiBUaGUgc3RhdGUgb2YgdGhlIHN0YWNrLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGRlc2NyaWJlcyBCUEZfUkVHX1NJWkUKQEAgLTc5OCw3ICYjNDM7ODAwLDggQEAgc3RydWN0IGJwZl9zdWJwcm9nX2luZm8gewogCXUzMiBleGl0X2lkeDsgLyogSW5kZXggb2Ygb25lIG9mIHRoZSBCUEZfRVhJVCBpbnN0cnVjdGlvbnMgaW4gdGhpcyBzdWJwcm9ncmFtICovCiAJdTE2IHN0YWNrX2RlcHRoOyAvKiBtYXguIHN0YWNrIGRlcHRoIHVzZWQgYnkgdGhpcyBmdW5jdGlvbiAqLwogCXUxNiBzdGFja19leHRyYTsKLQl1MzIgaW5zbl9wcm9jZXNzZWQ7CiYjNDM7CXUzMiBpbnNuc190b3RhbDsKJiM0MzsJdTMyIGluc25zX3NlbGY7CiAJLyogb2Zmc2V0cyBpbiByYW5nZSBbc3RhY2tfZGVwdGggLi4gZmFzdGNhbGxfc3RhY2tfb2ZmKQogCSAqIGFyZSB1c2VkIGZvciBicGZfZmFzdGNhbGwgc3BpbGxzIGFuZCBmaWxscy4KIAkgKi8KZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCBhZGQzYWZmYzU3MDM1Li44MjBkMjgzMWYzNDAzIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC0xNTkzLDYgJiM0MzsxNTkzLDggQEAgc3RhdGljIGludCBjb3B5X2Z1bmNfc3RhdGUoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpkc3QsCiAJCQkgICBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKnNyYykKIHsKIAltZW1jcHkoZHN0LCBzcmMsIG9mZnNldG9mKHN0cnVjdCBicGZfZnVuY19zdGF0ZSwgc3RhY2spKTsKJiM0MzsJLyogSW5zdHJ1Y3Rpb24gYWNjb3VudGluZyBpcyBwYXRoLWxvY2FsLCBub3QgcGFydCBvZiB2ZXJpZmllciBzdGF0ZS4gKi8KJiM0MzsJZHN0LSZndDtpbnNuc19zdWJ0b3RhbCA9IDA7CiAJcmV0dXJuIGNvcHlfc3RhY2tfc3RhdGUoZHN0LCBzcmMpOwogfQogCkBAIC05NzE3LDYgJiM0Mzs5NzE5LDQyIEBAIHN0YXRpYyBpbnQgc2V0X3Rhc2tfd29ya19zY2hlZHVsZV9jYWxsYmFja19zdGF0ZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCiBzdGF0aWMgYm9vbCBpc19yYnRyZWVfbG9ja19yZXF1aXJlZF9rZnVuYyh1MzIgYnRmX2lkKTsKIAomIzQzO3N0YXRpYyB2b2lkIGFjY291bnRfcHJvY2Vzc2VkX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfZnVuY19zdGF0ZSAqZnJhbWUgPSBjdXJfZnVuYyhlbnYpOwomIzQzOwomIzQzOwllbnYtJmd0O2luc25fcHJvY2Vzc2VkJiM0MzsmIzQzOzsKJiM0MzsJZnJhbWUtJmd0O2luc25zX3N1YnRvdGFsJiM0MzsmIzQzOzsKJiM0MzsJZW52LSZndDtzdWJwcm9nX2luZm9bZnJhbWUtJmd0O3N1YnByb2dub10uaW5zbnNfc2VsZiYjNDM7JiM0Mzs7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGFjY291bnRfcHJvY2Vzc2VkX2luc25zKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiYjNDM7CQkJCSAgICBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmNhbGxlZSwKJiM0MzsJCQkJICAgIHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqY2FsbGVyKQomIzQzO3sKJiM0MzsJdTMyIGluc25zOwomIzQzOwomIzQzOwlpZiAoIWNhbGxlZSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaW5zbnMgPSBjYWxsZWUtJmd0O2luc25zX3N1YnRvdGFsOwomIzQzOwomIzQzOwllbnYtJmd0O3N1YnByb2dfaW5mb1tjYWxsZWUtJmd0O3N1YnByb2dub10uaW5zbnNfdG90YWwgJiM0Mzs9IGluc25zOwomIzQzOwlpZiAoY2FsbGVyKQomIzQzOwkJY2FsbGVyLSZndDtpbnNuc19zdWJ0b3RhbCAmIzQzOz0gaW5zbnM7CiYjNDM7CWNhbGxlZS0mZ3Q7aW5zbnNfc3VidG90YWwgPSAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBhY2NvdW50X2N1cnJlbnRfcGF0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl92ZXJpZmllcl9zdGF0ZSAqc3RhdGUgPSBlbnYtJmd0O2N1cl9zdGF0ZTsKJiM0MzsJaW50IGZyYW1lOwomIzQzOwomIzQzOwlmb3IgKGZyYW1lID0gc3RhdGUtJmd0O2N1cmZyYW1lOyBmcmFtZSAmZ3Q7PSAwOyBmcmFtZS0tKQomIzQzOwkJYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoZW52LCBzdGF0ZS0mZ3Q7ZnJhbWVbZnJhbWVdLAomIzQzOwkJCQkJZnJhbWUgPyBzdGF0ZS0mZ3Q7ZnJhbWVbZnJhbWUgLSAxXSA6IE5VTEwpOwomIzQzO30KJiM0MzsKIC8qIEFyZSB3ZSBjdXJyZW50bHkgdmVyaWZ5aW5nIHRoZSBjYWxsYmFjayBmb3IgYSByYnRyZWUgaGVscGVyIHRoYXQgbXVzdAogICogYmUgY2FsbGVkIHdpdGggbG9jayBoZWxkPyBJZiBzbywgbm8gbmVlZCB0byBjb21wbGFpbiBhYm91dCB1bnJlbGVhc2VkCiAgKiBsb2NrCkBAIC05ODEzLDYgJiM0Mzs5ODUxLDcgQEAgc3RhdGljIGludCBwcmVwYXJlX2Z1bmNfZXhpdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgKmluc25faWR4KQogCQl2ZXJib3NlKGVudiwgJiMzNDt0byBjYWxsZXIgYXQgJWQ6XG4mIzM0OywgKmluc25faWR4KTsKIAkJcHJpbnRfdmVyaWZpZXJfc3RhdGUoZW52LCBzdGF0ZSwgY2FsbGVyLSZndDtmcmFtZW5vLCB0cnVlKTsKIAl9CiYjNDM7CWFjY291bnRfcHJvY2Vzc2VkX2luc25zKGVudiwgY2FsbGVlLCBjYWxsZXIpOwogCS8qIGNsZWFyIGV2ZXJ5dGhpbmcgaW4gdGhlIGNhbGxlZS4gSW4gY2FzZSBvZiBleGNlcHRpb25hbCBleGl0cyB1c2luZwogCSAqIGJwZl90aHJvdywgdGhpcyB3aWxsIGJlIGRvbmUgYnkgY29weV92ZXJpZmllcl9zdGF0ZSBmb3IgZXh0cmEgZnJhbWVzLiAqLwogCWZyZWVfZnVuY19zdGF0ZShjYWxsZWUpOwpAQCAtMTczNjgsNyAmIzQzOzE3NDA3LDkgQEAgc3RhdGljIGludCBkb19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KQogCQlpbnNuID0gJmFtcDtpbnNuc1tlbnYtJmd0O2luc25faWR4XTsKIAkJaW5zbl9hdXggPSAmYW1wO2Vudi0mZ3Q7aW5zbl9hdXhfZGF0YVtlbnYtJmd0O2luc25faWR4XTsKIAotCQlpZiAoJiM0MzsmIzQzO2Vudi0mZ3Q7aW5zbl9wcm9jZXNzZWQgJmd0OyBCUEZfQ09NUExFWElUWV9MSU1JVF9JTlNOUykgewomIzQzOwkJYWNjb3VudF9wcm9jZXNzZWRfaW5zbihlbnYpOwomIzQzOwomIzQzOwkJaWYgKGVudi0mZ3Q7aW5zbl9wcm9jZXNzZWQgJmd0OyBCUEZfQ09NUExFWElUWV9MSU1JVF9JTlNOUykgewogCQkJdmVyYm9zZShlbnYsCiAJCQkJJiMzNDtCUEYgcHJvZ3JhbSBpcyB0b28gbGFyZ2UuIFByb2Nlc3NlZCAlZCBpbnNuXG4mIzM0OywKIAkJCQllbnYtJmd0O2luc25fcHJvY2Vzc2VkKTsKQEAgLTE3NTA5LDYgJiM0MzsxNzU1MCw3IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2soc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudikKIAkJCQkJICAgICYjMzQ7c3BlY3VsYXRpb24gYmFycmllciBhZnRlciBqdW1wIGluc3RydWN0aW9uIG1heSBub3QgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3QmIzM0OykpCiAJCQkJcmV0dXJuIC1FRkFVTFQ7CiBwcm9jZXNzX2JwZl9leGl0OgomIzQzOwkJCWFjY291bnRfY3VycmVudF9wYXRoKGVudik7CiAJCQltYXJrX3ZlcmlmaWVyX3N0YXRlX3NjcmF0Y2hlZChlbnYpOwogCQkJZXJyID0gYnBmX3VwZGF0ZV9icmFuY2hfY291bnRzKGVudiwgZW52LSZndDtjdXJfc3RhdGUpOwogCQkJaWYgKGVycikKQEAgLTE4NDE1LDYgJiM0MzsxODQ1Nyw3IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfY29tbW9uKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nKQogCXN0cnVjdCBicGZfcHJvZ19hdXggKmF1eCA9IGVudi0mZ3Q7cHJvZy0mZ3Q7YXV4OwogCXN0cnVjdCBicGZfdmVyaWZpZXJfc3RhdGUgKnN0YXRlOwogCXN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzOwomIzQzOwl1MzIgaW5zbl9wcm9jZXNzZWQgPSBlbnYtJmd0O2luc25fcHJvY2Vzc2VkOwogCWludCByZXQsIGk7CiAKIAllbnYtJmd0O3ByZXZfbGluZm8gPSBOVUxMOwpAQCAtMTg1NTMsOSAmIzQzOzE4NTk2LDE5IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfY29tbW9uKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nKQogCiAJcmV0ID0gZG9fY2hlY2soZW52KTsKIG91dDoKJiM0MzsJYWNjb3VudF9jdXJyZW50X3BhdGgoZW52KTsKIAlpZiAoIXJldCAmYW1wOyZhbXA7IHBvcF9sb2cpCiAJCWJwZl92bG9nX3Jlc2V0KCZhbXA7ZW52LSZndDtsb2csIDApOwogCWZyZWVfc3RhdGVzKGVudik7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFRoZSBvdmVycmlkZSBpcyBuZWVkZWQgdG8gYWNjb3VudCBmb3IgYXN5bmMgc3VicHJvZ3JhbXMsIHdoaWNoCiYjNDM7CSAqIGFyZSB2ZXJpZmllZCB3aXRoIHRoZWlyIG93biBzZXQgb2Ygc3RhY2sgZnJhbWVzIGFuZCB0aHVzIGFyZQomIzQzOwkgKiBub3QgYWNjb3VudGVkIGFzIGNhbGxlZXMgYnkgYWNjb3VudF9jdXJyZW50X3BhdGgoKS4KJiM0MzsJICogQWNjdW11bGF0ZSB0aGVpciB0b3RhbCBjb3VudHMgYXMgdG90YWwgY291bnRzIG9mIHRoZSBtYWluIG9yCiYjNDM7CSAqIGdsb2JhbCBzdWJwcm9nIGhvc3RpbmcgdGhlIGFzeW5jIGNhbGwuCiYjNDM7CSAqLwomIzQzOwllbnYtJmd0O3N1YnByb2dfaW5mb1tzdWJwcm9nXS5pbnNuc190b3RhbCA9IGVudi0mZ3Q7aW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xODU4NCw3ICYjNDM7MTg2MzcsNiBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiAJc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4ID0gZW52LSZndDtwcm9nLSZndDthdXg7CiAJc3RydWN0IGJwZl9mdW5jX2luZm9fYXV4ICpzdWJfYXV4OwogCWludCBpLCByZXQsIG5ld19jbnQ7Ci0JdTMyIGluc25fcHJvY2Vzc2VkOwogCiAJaWYgKCFhdXgtJmd0O2Z1bmNfaW5mbykKIAkJcmV0dXJuIDA7CkBAIC0xODU5OSw4ICYjNDM7MTg2NTEsNiBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiAJCWlmICghYnBmX3N1YnByb2dfaXNfZ2xvYmFsKGVudiwgaSkpCiAJCQljb250aW51ZTsKIAotCQlpbnNuX3Byb2Nlc3NlZCA9IGVudi0mZ3Q7aW5zbl9wcm9jZXNzZWQ7Ci0KIAkJc3ViX2F1eCA9IHN1YnByb2dfYXV4KGVudiwgaSk7CiAJCWlmICghc3ViX2F1eC0mZ3Q7Y2FsbGVkIHx8IHN1Yl9hdXgtJmd0O3ZlcmlmaWVkKQogCQkJY29udGludWU7CkBAIC0xODYwOCw3ICYjNDM7MTg2NTgsNiBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiAJCWVudi0mZ3Q7aW5zbl9pZHggPSBlbnYtJmd0O3N1YnByb2dfaW5mb1tpXS5zdGFydDsKIAkJV0FSTl9PTl9PTkNFKGVudi0mZ3Q7aW5zbl9pZHggPT0gMCk7CiAJCXJldCA9IGRvX2NoZWNrX2NvbW1vbihlbnYsIGkpOwotCQllbnYtJmd0O3N1YnByb2dfaW5mb1tpXS5pbnNuX3Byb2Nlc3NlZCA9IGVudi0mZ3Q7aW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDsKIAkJaWYgKHJldCkgewogCQkJcmV0dXJuIHJldDsKIAkJfSBlbHNlIGlmIChlbnYtJmd0O2xvZy5sZXZlbCAmYW1wOyBCUEZfTE9HX0xFVkVMKSB7CkBAIC0xODYzNSwxMiAmIzQzOzE4Njg0LDEwIEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudikKIAogc3RhdGljIGludCBkb19jaGVja19tYWluKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiB7Ci0JdTMyIGluc25fcHJvY2Vzc2VkID0gZW52LSZndDtpbnNuX3Byb2Nlc3NlZDsKIAlpbnQgcmV0OwogCiAJZW52LSZndDtpbnNuX2lkeCA9IDA7CiAJcmV0ID0gZG9fY2hlY2tfY29tbW9uKGVudiwgMCk7Ci0JZW52LSZndDtzdWJwcm9nX2luZm9bMF0uaW5zbl9wcm9jZXNzZWQgPSBlbnYtJmd0O2luc25fcHJvY2Vzc2VkIC0gaW5zbl9wcm9jZXNzZWQ7CiAJaWYgKCFyZXQpCiAJCWVudi0mZ3Q7cHJvZy0mZ3Q7YXV4LSZndDtzdGFja19kZXB0aCA9IGVudi0mZ3Q7c3VicHJvZ19pbmZvWzBdLnN0YWNrX2RlcHRoOwogCXJldHVybiByZXQ7CkBAIC0xODY1NSwxNSAmIzQzOzE4NzAyLDIwIEBAIHN0YXRpYyB2b2lkIHByaW50X3ZlcmlmaWNhdGlvbl9zdGF0cyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KQogCWlmIChlbnYtJmd0O2xvZy5sZXZlbCAmYW1wOyBCUEZfTE9HX1NUQVRTKSB7CiAJCXZlcmJvc2UoZW52LCAmIzM0O3ZlcmlmaWNhdGlvbiB0aW1lICVsbGQgdXNlY1xuJiMzNDssCiAJCQlkaXZfdTY0KGVudi0mZ3Q7dmVyaWZpY2F0aW9uX3RpbWUsIDEwMDApKTsKLQkJdmVyYm9zZShlbnYsICYjMzQ7c3RhY2sgZGVwdGggJWQmIzM0OywgZW52LSZndDtzdWJwcm9nX2luZm9bMF0uc3RhY2tfZGVwdGgpOwotCQlmb3IgKGkgPSAxOyBpICZsdDsgc3VicHJvZ19jbnQ7IGkmIzQzOyYjNDM7KQotCQkJdmVyYm9zZShlbnYsICYjMzQ7JiM0MzslZCYjMzQ7LCBlbnYtJmd0O3N1YnByb2dfaW5mb1tpXS5zdGFja19kZXB0aCk7Ci0JCXZlcmJvc2UoZW52LCAmIzM0OyBtYXggJWRcbiYjMzQ7LCBlbnYtJmd0O21heF9zdGFja19kZXB0aCk7Ci0JCXZlcmJvc2UoZW52LCAmIzM0O2luc25zIHByb2Nlc3NlZCAlZCYjMzQ7LCBlbnYtJmd0O3N1YnByb2dfaW5mb1swXS5pbnNuX3Byb2Nlc3NlZCk7Ci0JCWZvciAoaSA9IDE7IGkgJmx0OyBzdWJwcm9nX2NudDsgaSYjNDM7JiM0MzspCi0JCQlpZiAoYnBmX3N1YnByb2dfaXNfZ2xvYmFsKGVudiwgaSkpCi0JCQkJdmVyYm9zZShlbnYsICYjMzQ7JiM0MzslZCYjMzQ7LCBlbnYtJmd0O3N1YnByb2dfaW5mb1tpXS5pbnNuX3Byb2Nlc3NlZCk7Ci0JCXZlcmJvc2UoZW52LCAmIzM0O1xuJiMzNDspOwomIzQzOwkJdmVyYm9zZShlbnYsICYjMzQ7c3RhY2sgZGVwdGggbWF4ICVkXG4mIzM0OywgZW52LSZndDttYXhfc3RhY2tfZGVwdGgpOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IHN1YnByb2dfY250OyBpJiM0MzsmIzQzOykgewomIzQzOwkJCWNvbnN0IGNoYXIgKm5hbWUgPSBlbnYtJmd0O3N1YnByb2dfaW5mb1tpXS5uYW1lOwomIzQzOwkJCWNvbnN0IGNoYXIgKmtpbmQ7CiYjNDM7CiYjNDM7CQkJaWYgKCFuYW1lIHx8ICFuYW1lWzBdKQomIzQzOwkJCQluYW1lID0gJiMzNDsmbHQ7dW5rbm93biZndDsmIzM0OzsKJiM0MzsJCQlraW5kID0gaSA9PSAwID8gJiMzNDttYWluJiMzNDsgOgomIzQzOwkJCSAgICAgICBicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSA/ICYjMzQ7Z2xvYmFsJiMzNDsgOiAmIzM0O3N0YXRpYyYjMzQ7OwomIzQzOwkJCXZlcmJvc2UoZW52LCAmIzM0O3N1YnByb2cgJWQgKCVzKSAlcyBpbnNuc19zZWxmICVkIGluc25zX3RvdGFsICVkIHN0YWNrICVkXG4mIzM0OywKJiM0MzsJCQkJaSwgbmFtZSwga2luZCwgZW52LSZndDtzdWJwcm9nX2luZm9baV0uaW5zbnNfc2VsZiwKJiM0MzsJCQkJZW52LSZndDtzdWJwcm9nX2luZm9baV0uaW5zbnNfdG90YWwsCiYjNDM7CQkJCWVudi0mZ3Q7c3VicHJvZ19pbmZvW2ldLnN0YWNrX2RlcHRoKTsKJiM0MzsJCX0KIAl9CiAJdmVyYm9zZShlbnYsICYjMzQ7cHJvY2Vzc2VkICVkIGluc25zIChsaW1pdCAlZCkgbWF4X3N0YXRlc19wZXJfaW5zbiAlZCAmIzM0OwogCQkmIzM0O3RvdGFsX3N0YXRlcyAlZCBwZWFrX3N0YXRlcyAlZCBtYXJrX3JlYWQgJWRcbiYjMzQ7LApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmMKaW5kZXggNWIyNjVhZjNiMWQ1Ny4uODExM2ZlYTdiYTg2YyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jCkBAIC0xMDIsNiAmIzQzOzEwMiw3IEBACiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt2ZXJpZmllcl9zdGFja19wdHIuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfc3RvcmVfcmVsZWFzZS5za2VsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX3N1YnByb2dfcHJlY2lzaW9uLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX3N1YnByb2dfdG9wby5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt2ZXJpZmllcl9zdWJyZWcuc2tlbC5oJiMzNDsKQEAgLTI2Miw2ICYjNDM7MjYzLDcgQEAgdm9pZCB0ZXN0X3ZlcmlmaWVyX3N0YWNrX2FyZyh2b2lkKSAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N0YWNrX2FyZyk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIodm9pZCkgICAgICB7IFJVTih2ZXJpZmllcl9zdGFja19hcmdfb3JkZXIpOyB9CiB2b2lkIHRlc3RfdmVyaWZpZXJfc3RhY2tfcHRyKHZvaWQpICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfc3RhY2tfcHRyKTsgfQogdm9pZCB0ZXN0X3ZlcmlmaWVyX3N0b3JlX3JlbGVhc2Uodm9pZCkgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N0b3JlX3JlbGVhc2UpOyB9CiYjNDM7dm9pZCB0ZXN0X3ZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cyh2b2lkKSAgIHsgUlVOKHZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cyk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbih2b2lkKSAgICB7IFJVTih2ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbik7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9zdWJwcm9nX3RvcG8odm9pZCkgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N1YnByb2dfdG9wbyk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9zdWJyZWcodm9pZCkgICAgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9zdWJyZWcpOyB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jCmluZGV4IGQzZGY3YTlmMWQ4YzguLjBlYjQ5NWNlODVjMWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jCkBAIC0yNyw3ICYjNDM7MjcsOCBAQCBfX25ha2VkIHZvaWQgc3RhY2tfb3V0X29mX2JvdW5kcyh2b2lkKQogCiBTRUMoJiMzNDtzb2NrZXQmIzM0OykKIF9fZGVzY3JpcHRpb24oJiMzNDt1bmluaXRpYWxpemVkIHN0YWNrMSYjMzQ7KQotX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpIF9fbXNnKCYjMzQ7c3RhY2sgZGVwdGggOCYjMzQ7KQomIzQzO19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwICh1bmluaXRpYWxpemVkX3N0YWNrMSkgbWFpbiB7ey4qfX0gc3RhY2sgOCYjMzQ7KQogX19mYWlsdXJlX3VucHJpdiBfX21zZ191bnByaXYoJiMzNDtpbnZhbGlkIHJlYWQgZnJvbSBzdGFjayYjMzQ7KQogX19uYWtlZCB2b2lkIHVuaW5pdGlhbGl6ZWRfc3RhY2sxKHZvaWQpCiB7CkBAIC00NSw3ICYjNDM7NDYsOCBAQCBfX25ha2VkIHZvaWQgdW5pbml0aWFsaXplZF9zdGFjazEodm9pZCkKIAogU0VDKCYjMzQ7c29ja2V0JiMzNDspCiBfX2Rlc2NyaXB0aW9uKCYjMzQ7dW5pbml0aWFsaXplZCBzdGFjazImIzM0OykKLV9fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KSBfX21zZygmIzM0O3N0YWNrIGRlcHRoIDgmIzM0OykKJiM0MztfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNCkKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAodW5pbml0aWFsaXplZF9zdGFjazIpIG1haW4gaW5zbnNfc2VsZiB7e1swLTldJiM0Mzt9fSBpbnNuc190b3RhbCB7e1swLTldJiM0Mzt9fSBzdGFjayA4JiMzNDspCiBfX2ZhaWx1cmVfdW5wcml2IF9fbXNnX3VucHJpdigmIzM0O2ludmFsaWQgcmVhZCBmcm9tIHN0YWNrJiMzNDspCiBfX25ha2VkIHZvaWQgdW5pbml0aWFsaXplZF9zdGFjazIodm9pZCkKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuYwppbmRleCA4MzcwN2ZhZWEwNDk5Li40Y2ZhYTZiNGFiNDA1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jCkBAIC0xMCw3ICYjNDM7MTAsOCBAQAogCiBTRUMoJiMzNDtyYXdfdHAmIzM0OykKIF9fYXJjaF94ODZfNjQKLV9fbG9nX2xldmVsKDQpIF9fbXNnKCYjMzQ7c3RhY2sgZGVwdGggOCYjMzQ7KQomIzQzO19fbG9nX2xldmVsKDQpCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDAgKHNpbXBsZSkgbWFpbiBpbnNuc19zZWxmIHt7WzAtOV0mIzQzO319IGluc25zX3RvdGFsIHt7WzAtOV0mIzQzO319IHN0YWNrIDgmIzM0OykKIF9feGxhdGVkKCYjMzQ7NDogcjUgPSA1JiMzNDspCiBfX3hsYXRlZCgmIzM0OzU6IHIwID0gJiMzNDspCiBfX3hsYXRlZCgmIzM0OzY6IHIwID0gJmFtcDsodm9pZCBfX3BlcmNwdSAqKShyMCkmIzM0OykKQEAgLTk2LDcgJiM0Mzs5Nyw4IEBAIF9fbmFrZWQgdm9pZCBjYW5hcnlfemVyb19zcGlsbHModm9pZCkKIAogU0VDKCYjMzQ7cmF3X3RwJiMzNDspCiBfX2FyY2hfeDg2XzY0Ci1fX2xvZ19sZXZlbCg0KSBfX21zZygmIzM0O3N0YWNrIGRlcHRoIDE2JiMzNDspCiYjNDM7X19sb2dfbGV2ZWwoNCkKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAod3JvbmdfcmVnX2luX3BhdHRlcm4xKSBtYWluIHt7Lip9fSBzdGFjayAxNiYjMzQ7KQogX194bGF0ZWQoJiMzNDsxOiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxJiMzNDspCiBfX3hsYXRlZCgmIzM0Oy4uLiYjMzQ7KQogX194bGF0ZWQoJiMzNDszOiByMCA9ICZhbXA7KHZvaWQgX19wZXJjcHUgKikocjApJiMzNDspCkBAIC01OTgsNyAmIzQzOzYwMCw4IEBAIF9fbmFrZWQgc3RhdGljIHZvaWQgc3VicHJvZ3NfdXNlX2luZGVwZW5kZW50X29mZnNldHNfYXV4KHZvaWQpCiAKIFNFQygmIzM0O3Jhd190cCYjMzQ7KQogX19hcmNoX3g4Nl82NAotX19sb2dfbGV2ZWwoNCkgX19tc2coJiMzNDtzdGFjayBkZXB0aCA4JiMzNDspCiYjNDM7X19sb2dfbGV2ZWwoNCkKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAoaGVscGVyX2NhbGxfZG9lc19ub3RfcHJldmVudF9icGZfZmFzdGNhbGwpIG1haW4ge3suKn19IHN0YWNrIDgmIzM0OykKIF9feGxhdGVkKCYjMzQ7MjogcjAgPSAmYW1wOyh2b2lkIF9fcGVyY3B1ICopKHIwKSYjMzQ7KQogX19zdWNjZXNzCiBfX25ha2VkIHZvaWQgaGVscGVyX2NhbGxfZG9lc19ub3RfcHJldmVudF9icGZfZmFzdGNhbGwodm9pZCkKQEAgLTYyMCw3ICYjNDM7NjIzLDggQEAgX19uYWtlZCB2b2lkIGhlbHBlcl9jYWxsX2RvZXNfbm90X3ByZXZlbnRfYnBmX2Zhc3RjYWxsKHZvaWQpCiAKIFNFQygmIzM0O3Jhd190cCYjMzQ7KQogX19hcmNoX3g4Nl82NAotX19sb2dfbGV2ZWwoNCkgX19tc2coJiMzNDtzdGFjayBkZXB0aCAyNCYjMzQ7KQomIzQzO19fbG9nX2xldmVsKDQpCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDAgKG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCkgbWFpbiB7ey4qfX0gc3RhY2sgMjQmIzM0OykKIC8qIG1heV9nb3RvIGNvdW50ZXIgYXQgLTI0ICovCiBfX3hsYXRlZCgmIzM0OzA6ICoodTY0ICopKHIxMCAtMjQpID0mIzM0OykKIC8qIG1heV9nb3RvIHRpbWVzdGFtcCBhdCAtMTYgKi8KQEAgLTY2MSw3ICYjNDM7NjY1LDggQEAgX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCh2b2lkKQogU0VDKCYjMzQ7cmF3X3RwJiMzNDspCiBfX2FyY2hfYXJtNjQKIF9fYXJjaF9yaXNjdjY0Ci1fX2xvZ19sZXZlbCg0KSBfX21zZygmIzM0O3N0YWNrIGRlcHRoIDI0JiMzNDspCiYjNDM7X19sb2dfbGV2ZWwoNCkKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAobWF5X2dvdG9faW50ZXJhY3Rpb24pIG1haW4ge3suKn19IHN0YWNrIDI0JiMzNDspCiAvKiBtYXlfZ290byBjb3VudGVyIGF0IC0yNCAqLwogX194bGF0ZWQoJiMzNDswOiAqKHU2NCAqKShyMTAgLTI0KSA9JiMzNDspCiAvKiBtYXlfZ290byB0aW1lc3RhbXAgYXQgLTE2ICovCkBAIC03MDgsNyAmIzQzOzcxMyw5IEBAIF9fbmFrZWQgc3RhdGljIHZvaWQgZHVtbXlfbG9vcF9jYWxsYmFjayh2b2lkKQogCiBTRUMoJiMzNDtyYXdfdHAmIzM0OykKIF9fYXJjaF94ODZfNjQKLV9fbG9nX2xldmVsKDQpIF9fbXNnKCYjMzQ7c3RhY2sgZGVwdGggMzImIzQzOzAmIzM0OykKJiM0MztfX2xvZ19sZXZlbCg0KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwIChicGZfbG9vcF9pbnRlcmFjdGlvbjEpIG1haW4ge3suKn19IHN0YWNrIDMyJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDEgKGR1bW15X2xvb3BfY2FsbGJhY2spIHN0YXRpYyB7ey4qfX0gc3RhY2sgMCYjMzQ7KQogX194bGF0ZWQoJiMzNDsyOiByMSA9IDEmIzM0OykKIF9feGxhdGVkKCYjMzQ7MzogcjAgPSYjMzQ7KQogX194bGF0ZWQoJiMzNDs0OiByMCA9ICZhbXA7KHZvaWQgX19wZXJjcHUgKikocjApJiMzNDspCkBAIC03NTYsNyAmIzQzOzc2Myw5IEBAIF9fbmFrZWQgaW50IGJwZl9sb29wX2ludGVyYWN0aW9uMSh2b2lkKQogCiBTRUMoJiMzNDtyYXdfdHAmIzM0OykKIF9fYXJjaF94ODZfNjQKLV9fbG9nX2xldmVsKDQpIF9fbXNnKCYjMzQ7c3RhY2sgZGVwdGggNDAmIzQzOzAmIzM0OykKJiM0MztfX2xvZ19sZXZlbCg0KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwIChicGZfbG9vcF9pbnRlcmFjdGlvbjIpIG1haW4ge3suKn19IHN0YWNrIDQwJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDEgKGR1bW15X2xvb3BfY2FsbGJhY2spIHN0YXRpYyB7ey4qfX0gc3RhY2sgMCYjMzQ7KQogLyogY2FsbCBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQgKi8KIF9feGxhdGVkKCYjMzQ7MjogcjEgPSA0MiYjMzQ7KQogX194bGF0ZWQoJiMzNDszOiByMCA9JiMzNDspCkBAIC04MDAsNyAmIzQzOzgwOSwxMCBAQCBfX25ha2VkIGludCBicGZfbG9vcF9pbnRlcmFjdGlvbjIodm9pZCkKIAogU0VDKCYjMzQ7cmF3X3RwJiMzNDspCiBfX2FyY2hfeDg2XzY0Ci1fX2xvZ19sZXZlbCg0KSBfX21zZygmIzM0O3N0YWNrIGRlcHRoIDUxMiYjNDM7MCBtYXggNTEyJiMzNDspCiYjNDM7X19sb2dfbGV2ZWwoNCkKJiM0MztfX21zZygmIzM0O3N0YWNrIGRlcHRoIG1heCA1MTImIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAoY3VtdWxhdGl2ZV9zdGFja19kZXB0aCkgbWFpbiB7ey4qfX0gc3RhY2sgNTEyJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDEgKGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZykgc3RhdGljIHt7Lip9fSBzdGFjayAwJiMzNDspCiAvKiBqdXN0IHRvIHByaW50IHhsYXRlZCB2ZXJzaW9uIHdoZW4gZGVidWdnaW5nICovCiBfX3hsYXRlZCgmIzM0O3IwID0gJmFtcDsodm9pZCBfX3BlcmNwdSAqKShyMCkmIzM0OykKIF9fc3VjY2VzcwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2dsb2JhbF9zdWJwcm9ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2dsb2JhbF9zdWJwcm9ncy5jCmluZGV4IDY3ZGMzNTJhZGRmZDcuLjdiNjVlZWE5N2ViYzIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfZ2xvYmFsX3N1YnByb2dzLmMKQEAgLTUyLDcgJiM0Mzs1MiwxMCBAQCBfX21zZygmIzM0OygmIzM5O2dsb2JhbF9jYWxsc19nb29kX29ubHkmIzM5OykgaXMgZ2xvYmFsIGFuZCBhc3N1bWVkIHZhbGlkLiYjMzQ7KQogLyogZXZlbnR1YWxseSBnbG9iYWxfZ29vZCgpIGlzIHRyYW5zaXRpdmVseSB2YWxpZGF0ZWQgYXMgd2VsbCAqLwogX19tc2coJiMzNDtWYWxpZGF0aW5nIGdsb2JhbF9nb29kKCkgZnVuYyYjMzQ7KQogX19tc2coJiMzNDsoJiMzOTtnbG9iYWxfZ29vZCYjMzk7KSBpcyBzYWZlIGZvciBhbnkgYXJncyB0aGF0IG1hdGNoIGl0cyBwcm90b3R5cGUmIzM0OykKLV9fbXNnKCYjMzQ7aW5zbnMgcHJvY2Vzc2VkIHt7WzAtOV0mIzQzO1xcJiM0MztbMC05XSYjNDM7XFwmIzQzO1swLTldJiM0MzskfX0mIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAoY2hhaW5lZF9nbG9iYWxfZnVuY19jYWxsc19zdWNjZXNzKSBtYWluIGluc25zX3NlbGYgNyBpbnNuc190b3RhbCA3IHN0YWNrJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChnbG9iYWxfY2FsbHNfZ29vZF9vbmx5KSBnbG9iYWwgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2smIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKGdsb2JhbF9nb29kKSBnbG9iYWwgaW5zbnNfc2VsZiA1IGluc25zX3RvdGFsIDUgc3RhY2smIzM0OykKJiM0MztfX21zZygmIzM0O3Byb2Nlc3NlZCAxNCBpbnNucyYjMzQ7KQogaW50IGNoYWluZWRfZ2xvYmFsX2Z1bmNfY2FsbHNfc3VjY2Vzcyh2b2lkKQogewogCWludCBzdW0gPSAwOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmMKaW5kZXggYmI4MjA2ZTEwODgwYy4uZWEwYTdlNzMzMzFkYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jCkBAIC04Niw3ICYjNDM7ODYsOSBAQCBfX25ha2VkIHN0YXRpYyB2b2lkIGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZyh2b2lkKQogU0VDKCYjMzQ7a3Byb2JlJiMzNDspCiBfX2Rlc2NyaXB0aW9uKCYjMzQ7UHJpdmF0ZSBzdGFjaywgc3VidHJlZSAmZ3Q7IE1BWF9CUEZfU1RBQ0smIzM0OykKIF9fc3VjY2VzcwotX19sb2dfbGV2ZWwoNCkgX19tc2coJiMzNDtzdGFjayBkZXB0aCA1MTImIzQzOzMyIG1heCA1MTImIzM0OykKJiM0MztfX2xvZ19sZXZlbCg0KSBfX21zZygmIzM0O3N0YWNrIGRlcHRoIG1heCA1MTImIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAocHJpdmF0ZV9zdGFja19uZXN0ZWRfMSkgbWFpbiB7ey4qfX0gc3RhY2sgNTEyJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDEgKGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZykgc3RhdGljIHt7Lip9fSBzdGFjayAzMiYjMzQ7KQogX19hcmNoX3g4Nl82NAogLyogcHJpdmF0ZSBzdGFjayBmcCBmb3IgdGhlIG1haW4gcHJvZyAqLwogX19qaXRlZCgmIzM0Owltb3ZhYnNxCSQweHt7Lip9fSwgJXI5JiMzNDspCkBAIC0zMzEsNyAmIzQzOzMzMywxMSBAQCBTRUMoJiMzNDtmZW50cnkvYnBmX2ZlbnRyeV90ZXN0OSYjMzQ7KQogX19kZXNjcmlwdGlvbigmIzM0O1ByaXZhdGUgc3RhY2ssIGFzeW5jIGNhbGxiYWNrLCBwb3RlbnRpYWwgbmVzdGluZyYjMzQ7KQogX19zdWNjZXNzIF9fcmV0dmFsKDApCiBfX2xvYWRfaWZfSklUZWQoKQotX19sb2dfbGV2ZWwoNCkgX19tc2coJiMzNDtzdGFjayBkZXB0aCA4JiM0MzswJiM0MzsyNTYmIzQzOzAgbWF4IDI3MiYjMzQ7KQomIzQzO19fbG9nX2xldmVsKDQpIF9fbXNnKCYjMzQ7c3RhY2sgZGVwdGggbWF4IDI3MiYjMzQ7KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwIChwcml2YXRlX3N0YWNrX2FzeW5jX2NhbGxiYWNrXzIpIG1haW4ge3suKn19IHN0YWNrIDgmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMSAodGltZXJfY2IxKSBzdGF0aWMge3suKn19IHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMiAoc3VicHJvZzEpIHN0YXRpYyB7ey4qfX0gc3RhY2sgMjU2JiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDMgKHN1YnByb2cyKSBzdGF0aWMge3suKn19IHN0YWNrIDAmIzM0OykKIF9fYXJjaF94ODZfNjQKIF9faml0ZWQoJiMzNDsJc3VicQkkMHgxMDAsICVyc3AmIzM0OykKIF9fYXJjaF9hcm02NApAQCAtMzU1LDcgJiM0MzszNjEsMTAgQEAgaW50IHByaXZhdGVfc3RhY2tfYXN5bmNfY2FsbGJhY2tfMih2b2lkKQogU0VDKCYjMzQ7ZmVudHJ5L2JwZl9mZW50cnlfdGVzdDkmIzM0OykKIF9fZGVzY3JpcHRpb24oJiMzNDtwcml2YXRlIHN0YWNrLCBtYXggc3RhY2sgZGVwdGggaXMgcHJpdmF0ZSBzdGFjayYjMzQ7KQogX19zdWNjZXNzCi1fX2xvZ19sZXZlbCg0KSBfX21zZygmIzM0O3N0YWNrIGRlcHRoIDgmIzQzOzI1NiYjNDM7MCBtYXggMjU2JiMzNDspCiYjNDM7X19sb2dfbGV2ZWwoNCkgX19tc2coJiMzNDtzdGFjayBkZXB0aCBtYXggMjU2JiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDAgKHByaXZhdGVfc3RhY2tfbWF4X2RlcHRoKSBtYWluIHt7Lip9fSBzdGFjayA4JiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDEgKHN1YnByb2cxKSBzdGF0aWMgaW5zbnNfc2VsZiB7e1swLTldJiM0Mzt9fSBpbnNuc190b3RhbCB7e1swLTldJiM0Mzt9fSBzdGFjayAyNTYmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMiAoc3VicHJvZzIpIHN0YXRpYyBpbnNuc19zZWxmIHt7WzAtOV0mIzQzO319IGluc25zX3RvdGFsIHt7WzAtOV0mIzQzO319IHN0YWNrIDAmIzM0OykKIGludCBwcml2YXRlX3N0YWNrX21heF9kZXB0aCh2b2lkKQogewogCWludCB4ID0gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdWJwcm9nX2luc25fc3RhdHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdWJwcm9nX2luc25fc3RhdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi44ZjYwODJmZGI1Yzg0Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cy5jCkBAIC0wLDAgJiM0MzsxLDIyMyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3ZtbGludXguaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDticGZfbWlzYy5oJiMzNDsKJiM0MzsKJiM0MztzdHJ1Y3QgdGltZXJfdmFsdWUgewomIzQzOwlzdHJ1Y3QgYnBmX3RpbWVyIHRpbWVyOwomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IHsKJiM0MzsJX191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUlJBWSk7CiYjNDM7CV9fdWludChtYXhfZW50cmllcywgMSk7CiYjNDM7CV9fdHlwZShrZXksIF9fdTMyKTsKJiM0MzsJX190eXBlKHZhbHVlLCBzdHJ1Y3QgdGltZXJfdmFsdWUpOwomIzQzO30gdGltZXJfbWFwIFNFQygmIzM0Oy5tYXBzJiMzNDspOwomIzQzOwomIzQzO1NFQygmIzM0Oz9yYXdfdHAmIzM0OykKJiM0MztfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNCkKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAoc3RhdHNfbWFpbl9vbmx5KSBtYWluIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCAyIHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3Byb2Nlc3NlZCAyIGluc25zJiMzNDspCiYjNDM7X19uYWtlZCBpbnQgc3RhdHNfbWFpbl9vbmx5KHZvaWQpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUgKAomIzQzOwkJJiMzNDtyMCA9IDA7JiMzNDsKJiM0MzsJCSYjMzQ7ZXhpdDsmIzM0OwomIzQzOwkpOwomIzQzO30KJiM0MzsKJiM0MztfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkCiYjNDM7c3RhdGljIGludCBzdGF0c19jaGFpbl9sZWFmKHZvaWQpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUgKAomIzQzOwkJJiMzNDtyMCA9IDA7JiMzNDsKJiM0MzsJCSYjMzQ7ZXhpdDsmIzM0OwomIzQzOwkpOwomIzQzO30KJiM0MzsKJiM0MztfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkCiYjNDM7c3RhdGljIGludCBzdGF0c19jaGFpbl9wYXJlbnQodm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O2NhbGwgc3RhdHNfY2hhaW5fbGVhZjsmIzM0OwomIzQzOwkJJiMzNDtleGl0OyYjMzQ7CiYjNDM7CSk7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0Oz9yYXdfdHAmIzM0OykKJiM0MztfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNCkKJiM0MzsvKgomIzQzOyAqIHNlbGY6IDIgJiM0MzsgMiAmIzQzOyAyID0gNgomIzQzOyAqIHRvdGFsczogbGVhZiAyLCBwYXJlbnQgMiAmIzQzOyAyID0gNCwgbWFpbiAyICYjNDM7IDQgPSA2CiYjNDM7ICovCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDAgKHN0YXRzX3N0YXRpY19jaGFpbikgbWFpbiBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgNiBzdGFjayAwJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19jaGFpbl9wYXJlbnQpIHN0YXRpYyBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgNCBzdGFjayAwJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19jaGFpbl9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMCYjMzQ7KQomIzQzO19fbXNnKCYjMzQ7cHJvY2Vzc2VkIDYgaW5zbnMmIzM0OykKJiM0MztfX25ha2VkIGludCBzdGF0c19zdGF0aWNfY2hhaW4odm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O2NhbGwgc3RhdHNfY2hhaW5fcGFyZW50OyYjMzQ7CiYjNDM7CQkmIzM0O2V4aXQ7JiMzNDsKJiM0MzsJKTsKJiM0Mzt9CiYjNDM7CiYjNDM7X19uYWtlZCBfX25vaW5saW5lIF9fdXNlZAomIzQzO3N0YXRpYyBpbnQgc3RhdHNfc2hhcmVkX2xlYWYodm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O3IwID0gMDsmIzM0OwomIzQzOwkJJiMzNDtleGl0OyYjMzQ7CiYjNDM7CSk7CiYjNDM7fQomIzQzOwomIzQzO19fbmFrZWQgX19ub2lubGluZSBfX3VzZWQKJiM0MztpbnQgc3RhdHNfZ2xvYmFsX3Jvb3Qodm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O2NhbGwgc3RhdHNfc2hhcmVkX2xlYWY7JiMzNDsKJiM0MzsJCSYjMzQ7ZXhpdDsmIzM0OwomIzQzOwkpOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDs/cmF3X3RwJiMzNDspCiYjNDM7X19zdWNjZXNzIF9fbG9nX2xldmVsKDQpCiYjNDM7LyoKJiM0MzsgKiBzdGF0c19zaGFyZWRfbGVhZiBpcyBleHBsb3JlZCBvbmNlIHVuZGVyIGVhY2ggaW5kZXBlbmRlbnQgcm9vdC4KJiM0MzsgKiBzZWxmOiBtYWluIDMgJiM0MzsgbGVhZiA0ICYjNDM7IGdsb2JhbCAyID0gOQomIzQzOyAqIHJvb3QgdG90YWxzOiBtYWluIDUgJiM0MzsgZ2xvYmFsIDQgPSA5CiYjNDM7ICovCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDAgKHN0YXRzX3NoYXJlZF9yb290cykgbWFpbiBpbnNuc19zZWxmIDMgaW5zbnNfdG90YWwgNSBzdGFjayAwJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19zaGFyZWRfbGVhZikgc3RhdGljIGluc25zX3NlbGYgNCBpbnNuc190b3RhbCA0IHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX2dsb2JhbF9yb290KSBnbG9iYWwgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDQgc3RhY2sgMCYjMzQ7KQomIzQzO19fbXNnKCYjMzQ7cHJvY2Vzc2VkIDkgaW5zbnMmIzM0OykKJiM0MztfX25ha2VkIGludCBzdGF0c19zaGFyZWRfcm9vdHModm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O2NhbGwgc3RhdHNfc2hhcmVkX2xlYWY7JiMzNDsKJiM0MzsJCSYjMzQ7Y2FsbCBzdGF0c19nbG9iYWxfcm9vdDsmIzM0OwomIzQzOwkJJiMzNDtleGl0OyYjMzQ7CiYjNDM7CSk7CiYjNDM7fQomIzQzOwomIzQzO19fbm9pbmxpbmUgX191c2VkCiYjNDM7c3RhdGljIGludCBzdGF0c19hc3luY19sZWFmKHZvaWQgKm1hcCwgX191MzIgKmtleSwgc3RydWN0IGJwZl90aW1lciAqdGltZXIpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7X19ub2lubGluZSBfX3VzZWQKJiM0MztzdGF0aWMgX191NjQgc3RhdHNfYXN5bmNfc2NoZWR1bGUoc3RydWN0IGJwZl9tYXAgKm1hcCwgX191MzIgKmtleSwKJiM0MzsJCQkJICBzdHJ1Y3QgdGltZXJfdmFsdWUgKnZhbHVlLCB2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUgKAomIzQzOwkJJiMzNDtyMSA9ICVbdGltZXJdOyYjMzQ7CiYjNDM7CQkmIzM0O3IyID0gJVtzdGF0c19hc3luY19sZWFmXTsmIzM0OwomIzQzOwkJJiMzNDtjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107JiMzNDsKJiM0MzsJCToKJiM0MzsJCTogW3RpbWVyXSAmIzM0O3ImIzM0OyAodmFsdWUpLAomIzQzOwkJICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfbGVhZiksCiYjNDM7CQkgIF9faW1tKGJwZl90aW1lcl9zZXRfY2FsbGJhY2spCiYjNDM7CQk6IF9fY2xvYmJlcl9jb21tb24KJiM0MzsJKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0Oz9yYXdfdHAmIzM0OykKJiM0MztfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNCkKJiM0MzsvKgomIzQzOyAqIHNlbGY6IDkgJiM0MzsgNyAmIzQzOyAyID0gMTgKJiM0MzsgKiB0b3RhbHM6IGxlYWYgMiwgc2NoZWR1bGVyIDcsIG1haW4gcm9vdCAxOAomIzQzOyAqLwomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwIChzdGF0c19hc3luY19kaXJlY3QpIG1haW4gaW5zbnNfc2VsZiA5IGluc25zX3RvdGFsIDE4IHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX2FzeW5jX3NjaGVkdWxlKSBzdGF0aWMgaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2sgMCYjMzQ7KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyB7e1swLTldJiM0Mzt9fSAoc3RhdHNfYXN5bmNfbGVhZikgc3RhdGljIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCAyIHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3Byb2Nlc3NlZCAxOCBpbnNucyYjMzQ7KQomIzQzO19fbmFrZWQgaW50IHN0YXRzX2FzeW5jX2RpcmVjdCh2b2lkKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlICgKJiM0MzsJCSYjMzQ7cjEgPSAlW3RpbWVyX21hcF0gbGw7JiMzNDsKJiM0MzsJCSYjMzQ7cjIgPSAlW3N0YXRzX2FzeW5jX3NjaGVkdWxlXTsmIzM0OwomIzQzOwkJJiMzNDtyMyA9IDA7JiMzNDsKJiM0MzsJCSYjMzQ7cjQgPSAwOyYjMzQ7CiYjNDM7CQkmIzM0O2NhbGwgJVticGZfZm9yX2VhY2hfbWFwX2VsZW1dOyYjMzQ7CiYjNDM7CQkmIzM0O3IwID0gMDsmIzM0OwomIzQzOwkJJiMzNDtleGl0OyYjMzQ7CiYjNDM7CQk6CiYjNDM7CQk6IF9faW1tX2FkZHIodGltZXJfbWFwKSwKJiM0MzsJCSAgX19pbW1fcHRyKHN0YXRzX2FzeW5jX3NjaGVkdWxlKSwKJiM0MzsJCSAgX19pbW0oYnBmX2Zvcl9lYWNoX21hcF9lbGVtKQomIzQzOwkJOiBfX2Nsb2JiZXJfY29tbW9uCiYjNDM7CSk7CiYjNDM7fQomIzQzOwomIzQzO19fbm9pbmxpbmUgX191c2VkCiYjNDM7c3RhdGljIGludCBzdGF0c19hc3luY19uZXN0ZWRfbGVhZih2b2lkICptYXAsIF9fdTMyICprZXksIHN0cnVjdCBicGZfdGltZXIgKnRpbWVyKQomIzQzO3sKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO19fbm9pbmxpbmUgX191c2VkCiYjNDM7c3RhdGljIGludCBzdGF0c19hc3luY19vdXRlcih2b2lkICptYXAsIF9fdTMyICprZXksIHN0cnVjdCBicGZfdGltZXIgKnRpbWVyKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlICgKJiM0MzsJCSYjMzQ7cjEgPSAlW3RpbWVyXTsmIzM0OwomIzQzOwkJJiMzNDtyMiA9ICVbc3RhdHNfYXN5bmNfbmVzdGVkX2xlYWZdOyYjMzQ7CiYjNDM7CQkmIzM0O2NhbGwgJVticGZfdGltZXJfc2V0X2NhbGxiYWNrXTsmIzM0OwomIzQzOwkJOgomIzQzOwkJOiBbdGltZXJdICYjMzQ7ciYjMzQ7ICh0aW1lciksCiYjNDM7CQkgIF9faW1tX3B0cihzdGF0c19hc3luY19uZXN0ZWRfbGVhZiksCiYjNDM7CQkgIF9faW1tKGJwZl90aW1lcl9zZXRfY2FsbGJhY2spCiYjNDM7CQk6IF9fY2xvYmJlcl9jb21tb24KJiM0MzsJKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO19fbm9pbmxpbmUgX191c2VkCiYjNDM7c3RhdGljIF9fdTY0IHN0YXRzX2FzeW5jX25lc3RlZF9zY2hlZHVsZShzdHJ1Y3QgYnBmX21hcCAqbWFwLCBfX3UzMiAqa2V5LAomIzQzOwkJCQkJIHN0cnVjdCB0aW1lcl92YWx1ZSAqdmFsdWUsIHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O3IxID0gJVt0aW1lcl07JiMzNDsKJiM0MzsJCSYjMzQ7cjIgPSAlW3N0YXRzX2FzeW5jX291dGVyXTsmIzM0OwomIzQzOwkJJiMzNDtjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107JiMzNDsKJiM0MzsJCToKJiM0MzsJCTogW3RpbWVyXSAmIzM0O3ImIzM0OyAodmFsdWUpLAomIzQzOwkJICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfb3V0ZXIpLAomIzQzOwkJICBfX2ltbShicGZfdGltZXJfc2V0X2NhbGxiYWNrKQomIzQzOwkJOiBfX2Nsb2JiZXJfY29tbW9uCiYjNDM7CSk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDs/cmF3X3RwJiMzNDspCiYjNDM7X19zdWNjZXNzIF9fbG9nX2xldmVsKDQpCiYjNDM7LyoKJiM0MzsgKiBzZWxmOiA5ICYjNDM7IDcgJiM0MzsgNyAmIzQzOyAyID0gMjUKJiM0MzsgKiB0b3RhbHM6IGxlYWYgMiwgb3V0ZXIgNywgc2NoZWR1bGVyIDcsIG1haW4gcm9vdCAyNQomIzQzOyAqLwomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwIChzdGF0c19hc3luY19uZXN0ZWQpIG1haW4gaW5zbnNfc2VsZiA5IGluc25zX3RvdGFsIDI1IHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX2FzeW5jX25lc3RlZF9zY2hlZHVsZSkgc3RhdGljIGluc25zX3NlbGYgNyBpbnNuc190b3RhbCA3IHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX2FzeW5jX291dGVyKSBzdGF0aWMgaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2sgMCYjMzQ7KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyB7e1swLTldJiM0Mzt9fSAoc3RhdHNfYXN5bmNfbmVzdGVkX2xlYWYpIHN0YXRpYyBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgMiBzdGFjayAwJiMzNDspCiYjNDM7X19tc2coJiMzNDtwcm9jZXNzZWQgMjUgaW5zbnMmIzM0OykKJiM0MztfX25ha2VkIGludCBzdGF0c19hc3luY19uZXN0ZWQodm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O3IxID0gJVt0aW1lcl9tYXBdIGxsOyYjMzQ7CiYjNDM7CQkmIzM0O3IyID0gJVtzdGF0c19hc3luY19uZXN0ZWRfc2NoZWR1bGVdOyYjMzQ7CiYjNDM7CQkmIzM0O3IzID0gMDsmIzM0OwomIzQzOwkJJiMzNDtyNCA9IDA7JiMzNDsKJiM0MzsJCSYjMzQ7Y2FsbCAlW2JwZl9mb3JfZWFjaF9tYXBfZWxlbV07JiMzNDsKJiM0MzsJCSYjMzQ7cjAgPSAwOyYjMzQ7CiYjNDM7CQkmIzM0O2V4aXQ7JiMzNDsKJiM0MzsJCToKJiM0MzsJCTogX19pbW1fYWRkcih0aW1lcl9tYXApLAomIzQzOwkJICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfbmVzdGVkX3NjaGVkdWxlKSwKJiM0MzsJCSAgX19pbW0oYnBmX2Zvcl9lYWNoX21hcF9lbGVtKQomIzQzOwkJOiBfX2Nsb2JiZXJfY29tbW9uCiYjNDM7CSk7CiYjNDM7fQomIzQzOwomIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jCmluZGV4IDI0Y2QwYTc2MzY3MzAuLmE2M2UzMzY3NTA5MTggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuYwpAQCAtMTk4LDcgJiM0MzsxOTgsOCBAQCBfX3N1Y2Nlc3MKIC8qIENoZWNrIHRoYXQgdGhlIG1heGltdW0gc3RhY2sgZGVwdGggaXMgY29ycmVjdGx5IG1haW50YWluZWQgYWNjb3JkaW5nIHRvIHRoZQogICogbWF4aW11bSBwb3NzaWJsZSB2YXJpYWJsZSBvZmZzZXQuCiAgKi8KLV9fbG9nX2xldmVsKDQpIF9fbXNnKCYjMzQ7c3RhY2sgZGVwdGggMTYmIzM0OykKJiM0MztfX2xvZ19sZXZlbCg0KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwIChzdGFja193cml0ZV9wcml2X3ZzX3VucHJpdikgbWFpbiB7ey4qfX0gc3RhY2sgMTYmIzM0OykKIF9fZmFpbHVyZV91bnByaXYKIC8qIFZhcmlhYmxlIHN0YWNrIGFjY2VzcyBpcyByZWplY3RlZCBmb3IgdW5wcml2aWxlZ2VkLgogICovCkBAIC0yMzgsNyAmIzQzOzIzOSw4IEBAIF9fc3VjY2VzcwogLyogQ2hlY2sgdGhhdCB0aGUgbWF4aW11bSBzdGFjayBkZXB0aCBpcyBjb3JyZWN0bHkgbWFpbnRhaW5lZCBhY2NvcmRpbmcgdG8gdGhlCiAgKiBtYXhpbXVtIHBvc3NpYmxlIHZhcmlhYmxlIG9mZnNldC4KICAqLwotX19sb2dfbGV2ZWwoNCkgX19tc2coJiMzNDtzdGFjayBkZXB0aCAxNiYjMzQ7KQomIzQzO19fbG9nX2xldmVsKDQpCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDAgKHN0YWNrX3dyaXRlX2ZvbGxvd2VkX2J5X3JlYWQpIG1haW4ge3suKn19IHN0YWNrIDE2JiMzNDspCiBfX2ZhaWx1cmVfdW5wcml2CiBfX21zZ191bnByaXYoJiMzNDtSMiB2YXJpYWJsZSBzdGFjayBhY2Nlc3MgcHJvaGliaXRlZCBmb3IgIXJvb3QmIzM0OykKIF9fcmV0dmFsKDApCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfdmVyaWZpZXIuYwppbmRleCBhOGFlMDNjNTdiYmFlLi5iZmZiNzM2MDQzNGM1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3ZlcmlmaWVyLmMKQEAgLTE1NjAsNyAmIzQzOzE1NjAsNyBAQCBzdGF0aWMgdm9pZCBkb190ZXN0X3NpbmdsZShzdHJ1Y3QgYnBmX3Rlc3QgKnRlc3QsIGJvb2wgdW5wcml2LAogCiAJb3B0cy5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IHRlc3QtJmd0O2V4cGVjdGVkX2F0dGFjaF90eXBlOwogCWlmIChleHBlY3RlZF9yZXQgPT0gVkVSQk9TRV9BQ0NFUFQpCi0JCW9wdHMubG9nX2xldmVsID0gMjsKJiM0MzsJCW9wdHMubG9nX2xldmVsID0gMiB8IDQ7CiAJZWxzZSBpZiAodmVyYm9zZSkKIAkJb3B0cy5sb2dfbGV2ZWwgPSB2ZXJpZl9sb2dfbGV2ZWwgfCA0OyAvKiBmb3JjZSBzdGF0cyAqLwogCWVsc2UKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9jYWxscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL2NhbGxzLmMKaW5kZXggOGNkNjI2ZTA0NTUxNS4uZWI2ZTNiYWVmNDEyYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL2NhbGxzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL2NhbGxzLmMKQEAgLTEwOTEsNyAmIzQzOzEwOTEsMTcgQEAKIAkvKiBzdGFja19tYWluPTMyLCBzdGFja19BPTI1Niwgc3RhY2tfQj02NAogCSAqIGFuZCBtYXgobWFpbiYjNDM7QSwgbWFpbiYjNDM7QSYjNDM7QikgJmx0OyA1MTIKIAkgKi8KLQkucmVzdWx0ID0gQUNDRVBULAomIzQzOwkucmVzdWx0ID0gVkVSQk9TRV9BQ0NFUFQsCiYjNDM7CS5lcnJzdHIgPSAmIzM0O3N0YWNrIGRlcHRoIG1heCAzNTJcdCYjMzQ7CiYjNDM7CQkgICYjMzQ7c3VicHJvZyAwICgmbHQ7dW5rbm93biZndDspIG1haW4gaW5zbnNfc2VsZiBcdCYjMzQ7CiYjNDM7CQkgICYjMzQ7IGluc25zX3RvdGFsIFx0JiMzNDsKJiM0MzsJCSAgJiMzNDsgc3RhY2sgMzJcdCYjMzQ7CiYjNDM7CQkgICYjMzQ7c3VicHJvZyAxICgmbHQ7dW5rbm93biZndDspIHN0YXRpYyBpbnNuc19zZWxmIFx0JiMzNDsKJiM0MzsJCSAgJiMzNDsgaW5zbnNfdG90YWwgXHQmIzM0OwomIzQzOwkJICAmIzM0OyBzdGFjayAyNTZcdCYjMzQ7CiYjNDM7CQkgICYjMzQ7c3VicHJvZyAyICgmbHQ7dW5rbm93biZndDspIHN0YXRpYyBpbnNuc19zZWxmIFx0JiMzNDsKJiM0MzsJCSAgJiMzNDsgaW5zbnNfdG90YWwgXHQmIzM0OwomIzQzOwkJICAmIzM0OyBzdGFjayA2NCYjMzQ7LAogfSwKIHsKIAkmIzM0O2NhbGxzOiBzdGFjayBkZXB0aCBjaGVjayB1c2luZyB0aHJlZSBmcmFtZXMuIHRlc3QyJiMzNDssCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCmluZGV4IGM5YzI1Nzc4NGVlM2QuLjVjMGVjM2VkY2U3MjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCkBAIC05OTMsMTMgJiM0Mzs5OTMsMTUgQEAgc3RhdGljIHZvaWQgZnJlZV92ZXJpZl9zdGF0cyhzdHJ1Y3QgdmVyaWZfc3RhdHMgKnN0YXRzLCBzaXplX3Qgc3RhdF9jbnQpCiAKIHN0YXRpYyBjaGFyIHZlcmlmX2xvZ19idWZbNjQgKiAxMDI0XTsKIAotI2RlZmluZSBNQVhfUEFSU0VEX0xPR19MSU5FUyAxMDAKJiM0MzsvKiBLZWVwIHJvb20gZm9yIGFsbCAyNTYgc3VicHJvZ3JhbSByZWNvcmRzIGFuZCB0cmFpbGluZyBzdGF0aXN0aWNzLiAqLwomIzQzOyNkZWZpbmUgTUFYX1BBUlNFRF9MT0dfTElORVMgMzAwCiAKIHN0YXRpYyBpbnQgcGFyc2VfdmVyaWZfbG9nKGNoYXIgKiBjb25zdCBidWYsIHNpemVfdCBidWZfc3osIHN0cnVjdCB2ZXJpZl9zdGF0cyAqcykKIHsKIAljb25zdCBjaGFyICpjdXI7Ci0JaW50IHBvcywgbGluZXMsIHN1Yl9zdGFjaywgY250ID0gMDsKLQljaGFyICpzdGF0ZSA9IE5VTEwsICp0b2tlbiwgc3RhY2tbNTEyXTsKJiM0MzsJbG9uZyBzdWJfc3RhY2s7CiYjNDM7CWludCBwb3MsIGxpbmVzLCBjbnQgPSAwOwomIzQzOwljaGFyICpzdGF0ZSA9IE5VTEwsICp0b2tlbiwgc3RhY2tbNTEyXSA9IHt9OwogCiAJYnVmW2J1Zl9zeiAtIDFdID0gJiMzOTtcMCYjMzk7OwogCkBAIC0xMDI1LDExICYjNDM7MTAyNywyNCBAQCBzdGF0aWMgaW50IHBhcnNlX3ZlcmlmX2xvZyhjaGFyICogY29uc3QgYnVmLCBzaXplX3QgYnVmX3N6LCBzdHJ1Y3QgdmVyaWZfc3RhdHMgKgogCQkJCSZhbXA7cy0mZ3Q7c3RhdHNbTUFSS19SRUFEX01BWF9MRU5dKSkKIAkJCWNvbnRpbnVlOwogCiYjNDM7CQkvKgomIzQzOwkJICogTmV3IGtlcm5lbHMgZW1pdCBvbmUgJiMzNDtzdWJwcm9nICZsdDtpZCZndDsgKCZsdDtuYW1lJmd0OykgJmx0O2tpbmQmZ3Q7JiMzNDsgcmVjb3JkCiYjNDM7CQkgKiBwZXIgc3VicHJvZ3JhbSB3aXRoIHRoZSBzdGFjayBkZXB0aCBhdCB0aGUgZW5kLCB3aGlsZSBvbGQKJiM0MzsJCSAqIGtlcm5lbHMgZW1pdCBhIHNpbmdsZSAmIzM0O3N0YWNrIGRlcHRoICZsdDthJiM0MzsuLi4mIzQzO24mZ3Q7IG1heCAmbHQ7bWF4Jmd0OyYjMzQ7CiYjNDM7CQkgKiBsaW5lLiBNYXRjaCBib3RoIGZvcm1hdHMgc28gdmVyaXN0YXQgd29ya3MgYWdhaW5zdCBlaXRoZXIKJiM0MzsJCSAqIGtlcm5lbC4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKHNzY2FuZihjdXIsICYjMzQ7c3RhY2sgZGVwdGggbWF4ICVsZCYjMzQ7LCAmYW1wO3MtJmd0O3N0YXRzW01BWF9TVEFDS10pID09IDEpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CQlpZiAoc3NjYW5mKGN1ciwgJiMzNDtzdWJwcm9nICUqZCAlKnMgJSpzIGluc25zX3NlbGYgJSpkIGluc25zX3RvdGFsICUqZCBzdGFjayAlbGQmIzM0OywgJmFtcDtzdWJfc3RhY2spID09IDEpIHsKJiM0MzsJCQlzLSZndDtzdGF0c1tTVEFDS10gJiM0Mzs9IHN1Yl9zdGFjazsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KIAkJaWYgKDIgPT0gc3NjYW5mKGN1ciwgJiMzNDtzdGFjayBkZXB0aCAlNTExcyBtYXggJWxkJiMzNDssIHN0YWNrLCAmYW1wO3MtJmd0O3N0YXRzW01BWF9TVEFDS10pKQogCQkJY29udGludWU7CiAJfQogCXdoaWxlICgodG9rZW4gPSBzdHJ0b2tfcihjbnQmIzQzOyYjNDM7ID8gTlVMTCA6IHN0YWNrLCAmIzM0OyYjNDM7JiMzNDssICZhbXA7c3RhdGUpKSkgewotCQlpZiAoc3NjYW5mKHRva2VuLCAmIzM0OyVkJiMzNDssICZhbXA7c3ViX3N0YWNrKSA9PSAwKQomIzQzOwkJaWYgKHNzY2FuZih0b2tlbiwgJiMzNDslbGQmIzM0OywgJmFtcDtzdWJfc3RhY2spID09IDApCiAJCQlicmVhazsKIAkJcy0mZ3Q7c3RhdHNbU1RBQ0tdICYjNDM7PSBzdWJfc3RhY2s7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQ5NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDUwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipCUEYgVmVyaWZpZXIgSW5zdHJ1Y3Rpb24gQ291bnQgVHJhY2tpbmcqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSB2aXNpYmlsaXR5IGludG8gQlBGIHZlcmlmaWNhdGlvbiwgc3BlY2lmaWNhbGx5IGJ5IHRyYWNraW5nIGluc3RydWN0aW9uIGNvdW50cyBvbiBhIHBlci1zdWJwcm9ncmFtIGJhc2lzLiBUaGUgY2hhbmdlcyBhcmUgY29uY2VudHJhdGVkIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCB0aGUgYXNzb2NpYXRlZCBoZWFkZXIgZmlsZS4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBhZGRpbmcgbmV3IGZpZWxkczogYGluc25zX3N1YnRvdGFsYCB3aXRoaW4gYHN0cnVjdCBicGZfZnVuY19zdGF0ZWAsIGFuZCBgaW5zbnNfdG90YWxgIGFuZCBgaW5zbnNfc2VsZmAgdG8gYHN0cnVjdCBicGZfc3VicHJvZ19pbmZvYC4gVGhlIGNvZGUgdXBkYXRlcyBleGlzdGluZyBhY2NvdW50aW5nIGZ1bmN0aW9ucyBsaWtlIGBhY2NvdW50X3Byb2Nlc3NlZF9pbnNuYCwgYGFjY291bnRfcHJvY2Vzc2VkX2luc25zYCwgYW5kIGBhY2NvdW50X2N1cnJlbnRfcGF0aGAgdG8ga2VlcCB0aGVzZSBjb3VudHMgYWNjdXJhdGUuIEFuZCBuYXR1cmFsbHksIGBwcmludF92ZXJpZmljYXRpb25fc3RhdHNgIGlzIGJlaW5nIG1vZGlmaWVkIHRvIHJlcG9ydCB0aGlzIG5ldywgbW9yZSBncmFudWxhciBkYXRhLiBUaGF0JiMzOTtzIGEgc29saWQgaW1wcm92ZW1lbnQgZm9yIGRlYnVnZ2luZyBhbmQgcGVyZm9ybWFuY2UgYW5hbHlzaXMuCgpCdXQsIHRoZSBxdWVzdGlvbiBpcywgKmRvZXMgdGhpcyBhZmZlY3QgdmVyaWZpY2F0aW9uIGxvZ2ljIGl0c2VsZj8qIEl0JiMzOTtzIGNyaXRpY2FsIHRvIG1ha2Ugc3VyZSB0aGUgY29yZSBiZWhhdmlvciByZW1haW5zIHVuY2hhbmdlZC4gTGV0IG1lIHNlZS4uLiB5ZXMsIEkgd2FzIHJpZ2h0IHRvIGNoZWNrIHRoYXQhIE9rYXksIGxldCYjMzk7cyBzZWUgaG93IHRoZSBpbnN0cnVjdGlvbiBjb21wbGV4aXR5IGxpbWl0IGlzIGhhbmRsZWQuIEFoLCBoZXJlIHdlIGdvLi4uCgpgYGBjCi0JCWlmICgmIzQzOyYjNDM7ZW52LSZndDtpbnNuX3Byb2Nlc3NlZCAmZ3Q7IEJQRl9DT01QTEVYSVRZX0xJTUlUX0lOU05TKSB7CiYjNDM7CQlhY2NvdW50X3Byb2Nlc3NlZF9pbnNuKGVudik7CiYjNDM7CiYjNDM7CQlpZiAoZW52LSZndDtpbnNuX3Byb2Nlc3NlZCAmZ3Q7IEJQRl9DT01QTEVYSVRZX0xJTUlUX0lOU05TKSB7CmBgYAoKT2theSwgYGFjY291bnRfcHJvY2Vzc2VkX2luc25gIGlzIGNhbGxlZCBmaXJzdCwgd2hpY2ggc3RpbGwgaW5jcmVtZW50cyBgZW52LSZndDtpbnNuX3Byb2Nlc3NlZGAgYmVmb3JlIHRoZSBjaGVjayBhZ2FpbnN0IGBCUEZfQ09NUExFWElUWV9MSU1JVF9JTlNOU2AuIFNvIHRoZSBsaW1pdCAqaXRzZWxmKiByZW1haW5zIHVuY2hhbmdlZC4gVGhlIG5ldyBmaWVsZHMsIGBpbnNuc19zdWJ0b3RhbGAsIGBpbnNuc190b3RhbGAsIGFuZCBgaW5zbnNfc2VsZmAsIGFwcGVhciB0byBiZSBwdXJlbHkgZm9yIHN0YXRpc3RpY3MgaW4gYHByaW50X3ZlcmlmaWNhdGlvbl9zdGF0c2AuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtLiBMZXQmIzM5O3MgbG9vayBhdCBgYWNjb3VudF9wcm9jZXNzZWRfaW5zbmAgZnVuY3Rpb24gZGVmaW5pdGlvbi4KCmBgYGMKc3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KQp7CglzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmZyYW1lID0gY3VyX2Z1bmMoZW52KTsKCgllbnYtJmd0O2luc25fcHJvY2Vzc2VkJiM0MzsmIzQzOzsKCWZyYW1lLSZndDtpbnNuc19zdWJ0b3RhbCYjNDM7JiM0Mzs7CgllbnYtJmd0O3N1YnByb2dfaW5mb1tmcmFtZS0mZ3Q7c3VicHJvZ25vXS5pbnNuc19zZWxmJiM0MzsmIzQzOzsKfQpgYGAKCll1cCwgaXQgaW5jcmVtZW50cyBgZW52LSZndDtpbnNuX3Byb2Nlc3NlZGAgYW5kIHRoZW4gdXBkYXRlcyBhbGwgdGhlIHRyYWNraW5nIHZhcmlhYmxlcy4gQW5kIGBhY2NvdW50X3Byb2Nlc3NlZF9pbnNuc2AgaW5jcmVtZW50cyB0aGUgYGluc25zX3RvdGFsYC4gSSBuZWVkIHRvIGJlIDEwMCUgc3VyZSB0aGlzIGlzbiYjMzk7dCB1c2VkIHRvIHJlamVjdCBwcm9ncmFtcy4gUXVpY2sgc2VhcmNoIGZvciBgaW5zbnNfdG90YWxgIGFuZCBgaW5zbnNfc2VsZmAgaW4gdGhlIHZlcmlmaWVyIGNvZGUgaXMgbmVjZXNzYXJ5LiBKdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW5zbnNfdG90YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTk3MzE9c3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTc0MS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5NzQyOlx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tjYWxsZWUtXHUwMDNlc3VicHJvZ25vXS5pbnNuc190b3RhbCAmIzQzOz0gaW5zbnM7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTc0My1cdGlmIChjYWxsZXIpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4NDUzPXN0YXRpYyBpbnQgZG9fY2hlY2tfY29tbW9uKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODYxMC1cdCAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE4NjExOlx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tzdWJwcm9nXS5pbnNuc190b3RhbCA9IGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCAtIGluc25fcHJvY2Vzc2VkO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE4NjEyLVx0cmV0dXJuIHJldDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg2OTc9c3RhdGljIHZvaWQgcHJpbnRfdmVyaWZpY2F0aW9uX3N0YXRzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4NzEzLVx0XHRcdCAgICAgICBicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSA/IFwmIzM0O2dsb2JhbFwmIzM0OyA6IFwmIzM0O3N0YXRpY1wmIzM0Oztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODcxNDpcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7c3VicHJvZyAlZCAoJXMpICVzIGluc25zX3NlbGYgJWQgaW5zbnNfdG90YWwgJWQgc3RhY2sgJWRcXG5cJiMzNDssXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg3MTUtXHRcdFx0XHRpLCBuYW1lLCBraW5kLCBlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLmluc25zX3NlbGYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTg3MTY6XHRcdFx0XHRlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLmluc25zX3RvdGFsLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4NzE3LVx0XHRcdFx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tpXS5zdGFja19kZXB0aCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjI6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQxMDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhpcyBjb2RlOgoKKipBbmFseXppbmcgSW5zdHJ1Y3Rpb24gQ291bnRpbmcgTWV0cmljcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBUaGUgY29kZSBJJiMzOTttIGxvb2tpbmcgYXQgb25seSBzZWVtcyB0byBiZSB1c2luZyBgaW5zbnNfdG90YWxgIGFuZCBgaW5zbnNfc2VsZmAgZm9yIGxvZ2dpbmcgcHVycG9zZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gYHByaW50X3ZlcmlmaWNhdGlvbl9zdGF0c2AuICBUaGF0JiMzOTtzIGEgYml0IGxpbWl0aW5nLCBhbmQgaXQgZG9lc24mIzM5O3QgZ2l2ZSBtZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIEkmIzM5O20gdXN1YWxseSBhZnRlci4gQmVmb3JlIEkgZGlnIGRlZXBlciwgSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIGBpbnNuc19zdWJ0b3RhbGAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBmaWVsZCBtaWdodCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlZXBlciBzdHJ1Y3R1cmUuIEhvcGVmdWxseSBpdCYjMzk7cyBjYWxjdWxhdGVkIGluIGEgd2F5IHRoYXQgZ2l2ZXMgYSBtb3JlIHVzZWZ1bCBicmVha2Rvd24gdGhhbiB3aGF0IEkmIzM5O20gc2VlaW5nIGZyb20gdGhlIG90aGVyIHR3by4gSSYjMzk7bSBnb2luZyB0byB0cmFjayBkb3duIHRoZSB1c2FnZSBvZiB0aGlzIHZhcmlhYmxlIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW5zbnNfc3VidG90YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE1OTI9c3RhdGljIGludCBjb3B5X2Z1bmNfc3RhdGUoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpkc3QsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE1OTYtXHQvKiBJbnN0cnVjdGlvbiBhY2NvdW50aW5nIGlzIHBhdGgtbG9jYWwsIG5vdCBwYXJ0IG9mIHZlcmlmaWVyIHN0YXRlLiAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE1OTc6XHRkc3QtXHUwMDNlaW5zbnNfc3VidG90YWwgPSAwO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE1OTgtXHRyZXR1cm4gY29weV9zdGFja19zdGF0ZShkc3QsIHNyYyk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTk3MjI9c3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05NzI2LVx0ZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkJiM0MzsmIzQzOztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5NzI3Olx0ZnJhbWUtXHUwMDNlaW5zbnNfc3VidG90YWwmIzQzOyYjNDM7O1xua2VybmVsL2JwZi92ZXJpZmllci5jLTk3MjgtXHRlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ZyYW1lLVx1MDAzZXN1YnByb2dub10uaW5zbnNfc2VsZiYjNDM7JiM0Mzs7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTk3MzE9c3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTczOS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5NzQwOlx0aW5zbnMgPSBjYWxsZWUtXHUwMDNlaW5zbnNfc3VidG90YWw7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTc0MS1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTc0My1cdGlmIChjYWxsZXIpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTc0NDpcdFx0Y2FsbGVyLVx1MDAzZWluc25zX3N1YnRvdGFsICYjNDM7PSBpbnNucztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5NzQ1Olx0Y2FsbGVlLVx1MDAzZWluc25zX3N1YnRvdGFsID0gMDtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05NzQ2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDgwMQoJCQkJCQkJb3V0cHV0OiA3NwoJCQkJCQkJdGhvdWdodHM6IDU3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgcHJpbWFyeSBwdXJwb3NlIG9mIHRoZXNlIGNoYW5nZXMgaXMgcHVyZWx5IGZvciBzdGF0aXN0aWNhbCB0cmFja2luZyB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllci4gSXQgYXBwZWFycyB0aGF0IHRoZSBuZXcgZmllbGRzIGFyZSBiZWluZyBpbnRyb2R1Y2VkIHRvIGVuaGFuY2UgbG9nZ2luZywgc3BlY2lmaWNhbGx5IHdoZW4gYEJQRl9MT0dfU1RBVFNgIGlzIGVuYWJsZWQuIFRoZSBjb3JlIG9mIHRoZSB2ZXJpZmljYXRpb24gbG9naWMgaXRzZWxmIGlzbiYjMzk7dCBiZWluZyBhbHRlcmVkIGluIGEgd2F5IHRoYXQgd291bGQgY2hhbmdlIGhvdyBwcm9ncmFtcyBhcmUgYWNjZXB0ZWQgb3IgcmVqZWN0ZWQsIG5vciBpcyB0aGVyZSBhbnkgbW9kaWZpY2F0aW9uIHRvIHRoZSBnZW5lcmF0ZWQgY29kZS4KClRoZSBhZGRpdGlvbiBvZiBgYWNjb3VudF9wcm9jZXNzZWRfaW5zbmAgYW5kIHRoZSBhc3NvY2lhdGVkIGZpZWxkcywgc3VjaCBhcyBgaW5zbnNfc3VidG90YWxgIGFuZCBgaW5zbnNfc2VsZmAsIGFyZSBzaW1wbHkgaW5jcmVtZW50aW5nIGFuZCB0cmFja2luZyBzcGVjaWZpYyBjb3VudHM7IGZ1bmN0aW9uYWxseSwgYGVudi0mZ3Q7aW5zbl9wcm9jZXNzZWRgIGlzIGJlaW5nIHVwZGF0ZWQgaW4gdGhlIHNhbWUgbWFubmVyLiBUaGlzIHBhdGNoIGp1c3QgcHJvdmlkZXMgbW9yZSBkZXRhaWxlZCBpbnNpZ2h0cyBpbnRvIHRoZSB2ZXJpZmljYXRpb24gcHJvY2Vzcy4KCkkmIzM5O3ZlIGFsc28gcXVpY2tseSBzY2FubmVkIHRoZSBgcHJpbnRfdmVyaWZpY2F0aW9uX3N0YXRzYCBmdW5jdGlvbiB0byBlbnN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIG1lbW9yeSBhY2Nlc3Mgb3IgbG9nZ2luZyB0aGF0IGNvdWxkIGNhdXNlIGEgY3Jhc2guIEl0IGFwcGVhcnMgdG8gYmUgYSBzYWZlIGB2ZXJib3NlKClgIGNhbGwsIG1lcmVseSBvdXRwdXR0aW5nIHRoZSBjb2xsZWN0ZWQgc3RhdGlzdGljcy4KCkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIHdoaWNoIGlzIGxpbWl0ZWQgdG8gbG9nZ2luZyBhbmQgc3RhdGlzdGljYWwgYWNjdW11bGF0aW9uLCBJIGNhbiBjb25maWRlbnRseSBjb25jbHVkZSB0aGF0IGZ1enppbmcgdGhpcyBzcGVjaWZpYyBwYXRjaCB3b3VsZCBub3QgYmUgYmVuZWZpY2lhbC4gSXQgd29uJiMzOTt0IHJldmVhbCBhbnkgbmV3IHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgcHJvZ3JhbSB2ZXJpZmljYXRpb24uIFRoZXJlZm9yZSwgbXkgYXNzZXNzbWVudCBpcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBzdGF0aXN0aWNzIHRyYWNraW5nIGZvciB0aGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBwcm9jZXNzZWQgcGVyIHN1YnByb2dyYW0gZHVyaW5nIEJQRiB2ZXJpZmljYXRpb24gYW5kIG91dHB1dHMgdGhlbSBpbiB0aGUgdmVyaWZpZXIgbG9nLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgdmVyaWZpY2F0aW9uIGxvZ2ljLCBleGVjdXRpb24gZmxvdywgb3IgdGhlIGdlbmVyYXRlZCBCUEYgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBzdGF0aXN0aWNzIHRyYWNraW5nIGZvciB0aGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBwcm9jZXNzZWQgcGVyIHN1YnByb2dyYW0gZHVyaW5nIEJQRiB2ZXJpZmljYXRpb24gYW5kIG91dHB1dHMgdGhlbSBpbiB0aGUgdmVyaWZpZXIgbG9nLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgdmVyaWZpY2F0aW9uIGxvZ2ljLCBleGVjdXRpb24gZmxvdywgb3IgdGhlIGdlbmVyYXRlZCBCUEYgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjI6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIyOjM4OjE1Ljk1MjA2NjA1M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTA5MDk4MTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIHN0YXRpc3RpY3MgdHJhY2tpbmcgZm9yIHRoZSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIHByb2Nlc3NlZCBwZXIgc3VicHJvZ3JhbSBkdXJpbmcgQlBGIHZlcmlmaWNhdGlvbiBhbmQgb3V0cHV0cyB0aGVtIGluIHRoZSB2ZXJpZmllciBsb2cuIEl0IGRvZXMgbm90IGFsdGVyIHRoZSB2ZXJpZmljYXRpb24gbG9naWMsIGV4ZWN1dGlvbiBmbG93LCBvciB0aGUgZ2VuZXJhdGVkIEJQRiBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjI6Mzg6MTUuOTUyMDcxNzkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc1NDMzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyNzYyMTk5OGU3N2E3OThmZjk4Mjk2NTkzZTcyOTJkZWM1NzI4NDEwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDEyIDIyOjM4OjE1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oXFxuaW5kZXggOTNmN2MyMDc1ZWVhYS4uN2MzNzY0NTFkYjgyNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaFxcbkBAIC0zODAsNiArMzgwLDggQEAgc3RydWN0IGJwZl9mdW5jX3N0YXRlIHtcXG4gXFx0ICogICAgICAgICAgICAgICAgICAgICAgICAgICB8IG51bWJlciBvZiBzaW11bGF0aW9ucyBpcyB0cmFja2VkIGluIGZyYW1lIE5cXG4gXFx0ICovXFxuIFxcdHUzMiBjYWxsYmFja19kZXB0aDtcXG4rXFx0LyogSW5zdHJ1Y3Rpb25zIHByb2Nlc3NlZCBpbiB0aGlzIGZyYW1lIGFuZCBjYWxsZWVzIG9uIHRoZSBjdXJyZW50IHBhdGguICovXFxuK1xcdHUzMiBpbnNuc19zdWJ0b3RhbDtcXG4gXFxuIFxcdC8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIHNob3VsZCBiZSBsYXN0LiBTZWUgY29weV9mdW5jX3N0YXRlKCkgKi9cXG4gXFx0LyogVGhlIHN0YXRlIG9mIHRoZSBzdGFjay4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBkZXNjcmliZXMgQlBGX1JFR19TSVpFXFxuQEAgLTc5OCw3ICs4MDAsOCBAQCBzdHJ1Y3QgYnBmX3N1YnByb2dfaW5mbyB7XFxuIFxcdHUzMiBleGl0X2lkeDsgLyogSW5kZXggb2Ygb25lIG9mIHRoZSBCUEZfRVhJVCBpbnN0cnVjdGlvbnMgaW4gdGhpcyBzdWJwcm9ncmFtICovXFxuIFxcdHUxNiBzdGFja19kZXB0aDsgLyogbWF4LiBzdGFjayBkZXB0aCB1c2VkIGJ5IHRoaXMgZnVuY3Rpb24gKi9cXG4gXFx0dTE2IHN0YWNrX2V4dHJhO1xcbi1cXHR1MzIgaW5zbl9wcm9jZXNzZWQ7XFxuK1xcdHUzMiBpbnNuc190b3RhbDtcXG4rXFx0dTMyIGluc25zX3NlbGY7XFxuIFxcdC8qIG9mZnNldHMgaW4gcmFuZ2UgW3N0YWNrX2RlcHRoIC4uIGZhc3RjYWxsX3N0YWNrX29mZilcXG4gXFx0ICogYXJlIHVzZWQgZm9yIGJwZl9mYXN0Y2FsbCBzcGlsbHMgYW5kIGZpbGxzLlxcbiBcXHQgKi9cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggYWRkM2FmZmM1NzAzNS4uODIwZDI4MzFmMzQwMyAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtMTU5Myw2ICsxNTkzLDggQEAgc3RhdGljIGludCBjb3B5X2Z1bmNfc3RhdGUoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpkc3QsXFxuIFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqc3JjKVxcbiB7XFxuIFxcdG1lbWNweShkc3QsIHNyYywgb2Zmc2V0b2Yoc3RydWN0IGJwZl9mdW5jX3N0YXRlLCBzdGFjaykpO1xcbitcXHQvKiBJbnN0cnVjdGlvbiBhY2NvdW50aW5nIGlzIHBhdGgtbG9jYWwsIG5vdCBwYXJ0IG9mIHZlcmlmaWVyIHN0YXRlLiAqL1xcbitcXHRkc3QtXFx1MDAzZWluc25zX3N1YnRvdGFsID0gMDtcXG4gXFx0cmV0dXJuIGNvcHlfc3RhY2tfc3RhdGUoZHN0LCBzcmMpO1xcbiB9XFxuIFxcbkBAIC05NzE3LDYgKzk3MTksNDIgQEAgc3RhdGljIGludCBzZXRfdGFza193b3JrX3NjaGVkdWxlX2NhbGxiYWNrX3N0YXRlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcbiBzdGF0aWMgYm9vbCBpc19yYnRyZWVfbG9ja19yZXF1aXJlZF9rZnVuYyh1MzIgYnRmX2lkKTtcXG4gXFxuK3N0YXRpYyB2b2lkIGFjY291bnRfcHJvY2Vzc2VkX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4re1xcbitcXHRzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmZyYW1lID0gY3VyX2Z1bmMoZW52KTtcXG4rXFxuK1xcdGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQrKztcXG4rXFx0ZnJhbWUtXFx1MDAzZWluc25zX3N1YnRvdGFsKys7XFxuK1xcdGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2ZyYW1lLVxcdTAwM2VzdWJwcm9nbm9dLmluc25zX3NlbGYrKztcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4rXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqY2FsbGVlLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IGJwZl9mdW5jX3N0YXRlICpjYWxsZXIpXFxuK3tcXG4rXFx0dTMyIGluc25zO1xcbitcXG4rXFx0aWYgKCFjYWxsZWUpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGluc25zID0gY2FsbGVlLVxcdTAwM2VpbnNuc19zdWJ0b3RhbDtcXG4rXFxuK1xcdGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2NhbGxlZS1cXHUwMDNlc3VicHJvZ25vXS5pbnNuc190b3RhbCArPSBpbnNucztcXG4rXFx0aWYgKGNhbGxlcilcXG4rXFx0XFx0Y2FsbGVyLVxcdTAwM2VpbnNuc19zdWJ0b3RhbCArPSBpbnNucztcXG4rXFx0Y2FsbGVlLVxcdTAwM2VpbnNuc19zdWJ0b3RhbCA9IDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGFjY291bnRfY3VycmVudF9wYXRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuK3tcXG4rXFx0c3RydWN0IGJwZl92ZXJpZmllcl9zdGF0ZSAqc3RhdGUgPSBlbnYtXFx1MDAzZWN1cl9zdGF0ZTtcXG4rXFx0aW50IGZyYW1lO1xcbitcXG4rXFx0Zm9yIChmcmFtZSA9IHN0YXRlLVxcdTAwM2VjdXJmcmFtZTsgZnJhbWUgXFx1MDAzZT0gMDsgZnJhbWUtLSlcXG4rXFx0XFx0YWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoZW52LCBzdGF0ZS1cXHUwMDNlZnJhbWVbZnJhbWVdLFxcbitcXHRcXHRcXHRcXHRcXHRmcmFtZSA/IHN0YXRlLVxcdTAwM2VmcmFtZVtmcmFtZSAtIDFdIDogTlVMTCk7XFxuK31cXG4rXFxuIC8qIEFyZSB3ZSBjdXJyZW50bHkgdmVyaWZ5aW5nIHRoZSBjYWxsYmFjayBmb3IgYSByYnRyZWUgaGVscGVyIHRoYXQgbXVzdFxcbiAgKiBiZSBjYWxsZWQgd2l0aCBsb2NrIGhlbGQ/IElmIHNvLCBubyBuZWVkIHRvIGNvbXBsYWluIGFib3V0IHVucmVsZWFzZWRcXG4gICogbG9ja1xcbkBAIC05ODEzLDYgKzk4NTEsNyBAQCBzdGF0aWMgaW50IHByZXBhcmVfZnVuY19leGl0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCAqaW5zbl9pZHgpXFxuIFxcdFxcdHZlcmJvc2UoZW52LCBcXFwidG8gY2FsbGVyIGF0ICVkOlxcXFxuXFxcIiwgKmluc25faWR4KTtcXG4gXFx0XFx0cHJpbnRfdmVyaWZpZXJfc3RhdGUoZW52LCBzdGF0ZSwgY2FsbGVyLVxcdTAwM2VmcmFtZW5vLCB0cnVlKTtcXG4gXFx0fVxcbitcXHRhY2NvdW50X3Byb2Nlc3NlZF9pbnNucyhlbnYsIGNhbGxlZSwgY2FsbGVyKTtcXG4gXFx0LyogY2xlYXIgZXZlcnl0aGluZyBpbiB0aGUgY2FsbGVlLiBJbiBjYXNlIG9mIGV4Y2VwdGlvbmFsIGV4aXRzIHVzaW5nXFxuIFxcdCAqIGJwZl90aHJvdywgdGhpcyB3aWxsIGJlIGRvbmUgYnkgY29weV92ZXJpZmllcl9zdGF0ZSBmb3IgZXh0cmEgZnJhbWVzLiAqL1xcbiBcXHRmcmVlX2Z1bmNfc3RhdGUoY2FsbGVlKTtcXG5AQCAtMTczNjgsNyArMTc0MDcsOSBAQCBzdGF0aWMgaW50IGRvX2NoZWNrKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuIFxcdFxcdGluc24gPSBcXHUwMDI2aW5zbnNbZW52LVxcdTAwM2VpbnNuX2lkeF07XFxuIFxcdFxcdGluc25fYXV4ID0gXFx1MDAyNmVudi1cXHUwMDNlaW5zbl9hdXhfZGF0YVtlbnYtXFx1MDAzZWluc25faWR4XTtcXG4gXFxuLVxcdFxcdGlmICgrK2Vudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQgXFx1MDAzZSBCUEZfQ09NUExFWElUWV9MSU1JVF9JTlNOUykge1xcbitcXHRcXHRhY2NvdW50X3Byb2Nlc3NlZF9pbnNuKGVudik7XFxuK1xcbitcXHRcXHRpZiAoZW52LVxcdTAwM2VpbnNuX3Byb2Nlc3NlZCBcXHUwMDNlIEJQRl9DT01QTEVYSVRZX0xJTUlUX0lOU05TKSB7XFxuIFxcdFxcdFxcdHZlcmJvc2UoZW52LFxcbiBcXHRcXHRcXHRcXHRcXFwiQlBGIHByb2dyYW0gaXMgdG9vIGxhcmdlLiBQcm9jZXNzZWQgJWQgaW5zblxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0ZW52LVxcdTAwM2VpbnNuX3Byb2Nlc3NlZCk7XFxuQEAgLTE3NTA5LDYgKzE3NTUwLDcgQEAgc3RhdGljIGludCBkb19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbiBcXHRcXHRcXHRcXHRcXHQgICAgXFxcInNwZWN1bGF0aW9uIGJhcnJpZXIgYWZ0ZXIganVtcCBpbnN0cnVjdGlvbiBtYXkgbm90IGhhdmUgdGhlIGRlc2lyZWQgZWZmZWN0XFxcIikpXFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiBwcm9jZXNzX2JwZl9leGl0OlxcbitcXHRcXHRcXHRhY2NvdW50X2N1cnJlbnRfcGF0aChlbnYpO1xcbiBcXHRcXHRcXHRtYXJrX3ZlcmlmaWVyX3N0YXRlX3NjcmF0Y2hlZChlbnYpO1xcbiBcXHRcXHRcXHRlcnIgPSBicGZfdXBkYXRlX2JyYW5jaF9jb3VudHMoZW52LCBlbnYtXFx1MDAzZWN1cl9zdGF0ZSk7XFxuIFxcdFxcdFxcdGlmIChlcnIpXFxuQEAgLTE4NDE1LDYgKzE4NDU3LDcgQEAgc3RhdGljIGludCBkb19jaGVja19jb21tb24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2cpXFxuIFxcdHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eCA9IGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlYXV4O1xcbiBcXHRzdHJ1Y3QgYnBmX3ZlcmlmaWVyX3N0YXRlICpzdGF0ZTtcXG4gXFx0c3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZ3M7XFxuK1xcdHUzMiBpbnNuX3Byb2Nlc3NlZCA9IGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQ7XFxuIFxcdGludCByZXQsIGk7XFxuIFxcbiBcXHRlbnYtXFx1MDAzZXByZXZfbGluZm8gPSBOVUxMO1xcbkBAIC0xODU1Myw5ICsxODU5NiwxOSBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX2NvbW1vbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgc3VicHJvZylcXG4gXFxuIFxcdHJldCA9IGRvX2NoZWNrKGVudik7XFxuIG91dDpcXG4rXFx0YWNjb3VudF9jdXJyZW50X3BhdGgoZW52KTtcXG4gXFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgcG9wX2xvZylcXG4gXFx0XFx0YnBmX3Zsb2dfcmVzZXQoXFx1MDAyNmVudi1cXHUwMDNlbG9nLCAwKTtcXG4gXFx0ZnJlZV9zdGF0ZXMoZW52KTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFRoZSBvdmVycmlkZSBpcyBuZWVkZWQgdG8gYWNjb3VudCBmb3IgYXN5bmMgc3VicHJvZ3JhbXMsIHdoaWNoXFxuK1xcdCAqIGFyZSB2ZXJpZmllZCB3aXRoIHRoZWlyIG93biBzZXQgb2Ygc3RhY2sgZnJhbWVzIGFuZCB0aHVzIGFyZVxcbitcXHQgKiBub3QgYWNjb3VudGVkIGFzIGNhbGxlZXMgYnkgYWNjb3VudF9jdXJyZW50X3BhdGgoKS5cXG4rXFx0ICogQWNjdW11bGF0ZSB0aGVpciB0b3RhbCBjb3VudHMgYXMgdG90YWwgY291bnRzIG9mIHRoZSBtYWluIG9yXFxuK1xcdCAqIGdsb2JhbCBzdWJwcm9nIGhvc3RpbmcgdGhlIGFzeW5jIGNhbGwuXFxuK1xcdCAqL1xcbitcXHRlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tzdWJwcm9nXS5pbnNuc190b3RhbCA9IGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtMTg1ODQsNyArMTg2MzcsNiBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuIFxcdHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eCA9IGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlYXV4O1xcbiBcXHRzdHJ1Y3QgYnBmX2Z1bmNfaW5mb19hdXggKnN1Yl9hdXg7XFxuIFxcdGludCBpLCByZXQsIG5ld19jbnQ7XFxuLVxcdHUzMiBpbnNuX3Byb2Nlc3NlZDtcXG4gXFxuIFxcdGlmICghYXV4LVxcdTAwM2VmdW5jX2luZm8pXFxuIFxcdFxcdHJldHVybiAwO1xcbkBAIC0xODU5OSw4ICsxODY1MSw2IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4gXFx0XFx0aWYgKCFicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbi1cXHRcXHRpbnNuX3Byb2Nlc3NlZCA9IGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQ7XFxuLVxcbiBcXHRcXHRzdWJfYXV4ID0gc3VicHJvZ19hdXgoZW52LCBpKTtcXG4gXFx0XFx0aWYgKCFzdWJfYXV4LVxcdTAwM2VjYWxsZWQgfHwgc3ViX2F1eC1cXHUwMDNldmVyaWZpZWQpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbkBAIC0xODYwOCw3ICsxODY1OCw2IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4gXFx0XFx0ZW52LVxcdTAwM2VpbnNuX2lkeCA9IGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2ldLnN0YXJ0O1xcbiBcXHRcXHRXQVJOX09OX09OQ0UoZW52LVxcdTAwM2VpbnNuX2lkeCA9PSAwKTtcXG4gXFx0XFx0cmV0ID0gZG9fY2hlY2tfY29tbW9uKGVudiwgaSk7XFxuLVxcdFxcdGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2ldLmluc25fcHJvY2Vzc2VkID0gZW52LVxcdTAwM2VpbnNuX3Byb2Nlc3NlZCAtIGluc25fcHJvY2Vzc2VkO1xcbiBcXHRcXHRpZiAocmV0KSB7XFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdFxcdH0gZWxzZSBpZiAoZW52LVxcdTAwM2Vsb2cubGV2ZWwgXFx1MDAyNiBCUEZfTE9HX0xFVkVMKSB7XFxuQEAgLTE4NjM1LDEyICsxODY4NCwxMCBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuIFxcbiBzdGF0aWMgaW50IGRvX2NoZWNrX21haW4oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4ge1xcbi1cXHR1MzIgaW5zbl9wcm9jZXNzZWQgPSBlbnYtXFx1MDAzZWluc25fcHJvY2Vzc2VkO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0ZW52LVxcdTAwM2VpbnNuX2lkeCA9IDA7XFxuIFxcdHJldCA9IGRvX2NoZWNrX2NvbW1vbihlbnYsIDApO1xcbi1cXHRlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1swXS5pbnNuX3Byb2Nlc3NlZCA9IGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDtcXG4gXFx0aWYgKCFyZXQpXFxuIFxcdFxcdGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VzdGFja19kZXB0aCA9IGVudi1cXHUwMDNlc3VicHJvZ19pbmZvWzBdLnN0YWNrX2RlcHRoO1xcbiBcXHRyZXR1cm4gcmV0O1xcbkBAIC0xODY1NSwxNSArMTg3MDIsMjAgQEAgc3RhdGljIHZvaWQgcHJpbnRfdmVyaWZpY2F0aW9uX3N0YXRzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuIFxcdGlmIChlbnYtXFx1MDAzZWxvZy5sZXZlbCBcXHUwMDI2IEJQRl9MT0dfU1RBVFMpIHtcXG4gXFx0XFx0dmVyYm9zZShlbnYsIFxcXCJ2ZXJpZmljYXRpb24gdGltZSAlbGxkIHVzZWNcXFxcblxcXCIsXFxuIFxcdFxcdFxcdGRpdl91NjQoZW52LVxcdTAwM2V2ZXJpZmljYXRpb25fdGltZSwgMTAwMCkpO1xcbi1cXHRcXHR2ZXJib3NlKGVudiwgXFxcInN0YWNrIGRlcHRoICVkXFxcIiwgZW52LVxcdTAwM2VzdWJwcm9nX2luZm9bMF0uc3RhY2tfZGVwdGgpO1xcbi1cXHRcXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2Mgc3VicHJvZ19jbnQ7IGkrKylcXG4tXFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCIrJWRcXFwiLCBlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tpXS5zdGFja19kZXB0aCk7XFxuLVxcdFxcdHZlcmJvc2UoZW52LCBcXFwiIG1heCAlZFxcXFxuXFxcIiwgZW52LVxcdTAwM2VtYXhfc3RhY2tfZGVwdGgpO1xcbi1cXHRcXHR2ZXJib3NlKGVudiwgXFxcImluc25zIHByb2Nlc3NlZCAlZFxcXCIsIGVudi1cXHUwMDNlc3VicHJvZ19pbmZvWzBdLmluc25fcHJvY2Vzc2VkKTtcXG4tXFx0XFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIHN1YnByb2dfY250OyBpKyspXFxuLVxcdFxcdFxcdGlmIChicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSlcXG4tXFx0XFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCIrJWRcXFwiLCBlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tpXS5pbnNuX3Byb2Nlc3NlZCk7XFxuLVxcdFxcdHZlcmJvc2UoZW52LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0dmVyYm9zZShlbnYsIFxcXCJzdGFjayBkZXB0aCBtYXggJWRcXFxcblxcXCIsIGVudi1cXHUwMDNlbWF4X3N0YWNrX2RlcHRoKTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHN1YnByb2dfY250OyBpKyspIHtcXG4rXFx0XFx0XFx0Y29uc3QgY2hhciAqbmFtZSA9IGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2ldLm5hbWU7XFxuK1xcdFxcdFxcdGNvbnN0IGNoYXIgKmtpbmQ7XFxuK1xcbitcXHRcXHRcXHRpZiAoIW5hbWUgfHwgIW5hbWVbMF0pXFxuK1xcdFxcdFxcdFxcdG5hbWUgPSBcXFwiXFx1MDAzY3Vua25vd25cXHUwMDNlXFxcIjtcXG4rXFx0XFx0XFx0a2luZCA9IGkgPT0gMCA/IFxcXCJtYWluXFxcIiA6XFxuK1xcdFxcdFxcdCAgICAgICBicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSA/IFxcXCJnbG9iYWxcXFwiIDogXFxcInN0YXRpY1xcXCI7XFxuK1xcdFxcdFxcdHZlcmJvc2UoZW52LCBcXFwic3VicHJvZyAlZCAoJXMpICVzIGluc25zX3NlbGYgJWQgaW5zbnNfdG90YWwgJWQgc3RhY2sgJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdGksIG5hbWUsIGtpbmQsIGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2ldLmluc25zX3NlbGYsXFxuK1xcdFxcdFxcdFxcdGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2ldLmluc25zX3RvdGFsLFxcbitcXHRcXHRcXHRcXHRlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tpXS5zdGFja19kZXB0aCk7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXHR2ZXJib3NlKGVudiwgXFxcInByb2Nlc3NlZCAlZCBpbnNucyAobGltaXQgJWQpIG1heF9zdGF0ZXNfcGVyX2luc24gJWQgXFxcIlxcbiBcXHRcXHRcXFwidG90YWxfc3RhdGVzICVkIHBlYWtfc3RhdGVzICVkIG1hcmtfcmVhZCAlZFxcXFxuXFxcIixcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcXG5pbmRleCA1YjI2NWFmM2IxZDU3Li44MTEzZmVhN2JhODZjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jXFxuQEAgLTEwMiw2ICsxMDIsNyBAQFxcbiAjaW5jbHVkZSBcXFwidmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInZlcmlmaWVyX3N0YWNrX3B0ci5za2VsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ2ZXJpZmllcl9zdG9yZV9yZWxlYXNlLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cy5za2VsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ2ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbi5za2VsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ2ZXJpZmllcl9zdWJwcm9nX3RvcG8uc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidmVyaWZpZXJfc3VicmVnLnNrZWwuaFxcXCJcXG5AQCAtMjYyLDYgKzI2Myw3IEBAIHZvaWQgdGVzdF92ZXJpZmllcl9zdGFja19hcmcodm9pZCkgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9zdGFja19hcmcpOyB9XFxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIodm9pZCkgICAgICB7IFJVTih2ZXJpZmllcl9zdGFja19hcmdfb3JkZXIpOyB9XFxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdGFja19wdHIodm9pZCkgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9zdGFja19wdHIpOyB9XFxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdG9yZV9yZWxlYXNlKHZvaWQpICAgICAgICB7IFJVTih2ZXJpZmllcl9zdG9yZV9yZWxlYXNlKTsgfVxcbit2b2lkIHRlc3RfdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzKHZvaWQpICAgeyBSVU4odmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzKTsgfVxcbiB2b2lkIHRlc3RfdmVyaWZpZXJfc3VicHJvZ19wcmVjaXNpb24odm9pZCkgICAgeyBSVU4odmVyaWZpZXJfc3VicHJvZ19wcmVjaXNpb24pOyB9XFxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdWJwcm9nX3RvcG8odm9pZCkgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N1YnByb2dfdG9wbyk7IH1cXG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX3N1YnJlZyh2b2lkKSAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N1YnJlZyk7IH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suY1xcbmluZGV4IGQzZGY3YTlmMWQ4YzguLjBlYjQ5NWNlODVjMWMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suY1xcbkBAIC0yNyw3ICsyNyw4IEBAIF9fbmFrZWQgdm9pZCBzdGFja19vdXRfb2ZfYm91bmRzKHZvaWQpXFxuIFxcbiBTRUMoXFxcInNvY2tldFxcXCIpXFxuIF9fZGVzY3JpcHRpb24oXFxcInVuaW5pdGlhbGl6ZWQgc3RhY2sxXFxcIilcXG4tX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpIF9fbXNnKFxcXCJzdGFjayBkZXB0aCA4XFxcIilcXG4rX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKHVuaW5pdGlhbGl6ZWRfc3RhY2sxKSBtYWluIHt7Lip9fSBzdGFjayA4XFxcIilcXG4gX19mYWlsdXJlX3VucHJpdiBfX21zZ191bnByaXYoXFxcImludmFsaWQgcmVhZCBmcm9tIHN0YWNrXFxcIilcXG4gX19uYWtlZCB2b2lkIHVuaW5pdGlhbGl6ZWRfc3RhY2sxKHZvaWQpXFxuIHtcXG5AQCAtNDUsNyArNDYsOCBAQCBfX25ha2VkIHZvaWQgdW5pbml0aWFsaXplZF9zdGFjazEodm9pZClcXG4gXFxuIFNFQyhcXFwic29ja2V0XFxcIilcXG4gX19kZXNjcmlwdGlvbihcXFwidW5pbml0aWFsaXplZCBzdGFjazJcXFwiKVxcbi1fX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIDhcXFwiKVxcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcXG4rX19tc2coXFxcInN1YnByb2cgMCAodW5pbml0aWFsaXplZF9zdGFjazIpIG1haW4gaW5zbnNfc2VsZiB7e1swLTldK319IGluc25zX3RvdGFsIHt7WzAtOV0rfX0gc3RhY2sgOFxcXCIpXFxuIF9fZmFpbHVyZV91bnByaXYgX19tc2dfdW5wcml2KFxcXCJpbnZhbGlkIHJlYWQgZnJvbSBzdGFja1xcXCIpXFxuIF9fbmFrZWQgdm9pZCB1bmluaXRpYWxpemVkX3N0YWNrMih2b2lkKVxcbiB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuY1xcbmluZGV4IDgzNzA3ZmFlYTA0OTkuLjRjZmFhNmI0YWI0MDUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXFxuQEAgLTEwLDcgKzEwLDggQEBcXG4gXFxuIFNFQyhcXFwicmF3X3RwXFxcIilcXG4gX19hcmNoX3g4Nl82NFxcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcXFwic3RhY2sgZGVwdGggOFxcXCIpXFxuK19fbG9nX2xldmVsKDQpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKHNpbXBsZSkgbWFpbiBpbnNuc19zZWxmIHt7WzAtOV0rfX0gaW5zbnNfdG90YWwge3tbMC05XSt9fSBzdGFjayA4XFxcIilcXG4gX194bGF0ZWQoXFxcIjQ6IHI1ID0gNVxcXCIpXFxuIF9feGxhdGVkKFxcXCI1OiByMCA9IFxcXCIpXFxuIF9feGxhdGVkKFxcXCI2OiByMCA9IFxcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcXFwiKVxcbkBAIC05Niw3ICs5Nyw4IEBAIF9fbmFrZWQgdm9pZCBjYW5hcnlfemVyb19zcGlsbHModm9pZClcXG4gXFxuIFNFQyhcXFwicmF3X3RwXFxcIilcXG4gX19hcmNoX3g4Nl82NFxcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcXFwic3RhY2sgZGVwdGggMTZcXFwiKVxcbitfX2xvZ19sZXZlbCg0KVxcbitfX21zZyhcXFwic3VicHJvZyAwICh3cm9uZ19yZWdfaW5fcGF0dGVybjEpIG1haW4ge3suKn19IHN0YWNrIDE2XFxcIilcXG4gX194bGF0ZWQoXFxcIjE6ICoodTY0ICopKHIxMCAtMTYpID0gcjFcXFwiKVxcbiBfX3hsYXRlZChcXFwiLi4uXFxcIilcXG4gX194bGF0ZWQoXFxcIjM6IHIwID0gXFx1MDAyNih2b2lkIF9fcGVyY3B1ICopKHIwKVxcXCIpXFxuQEAgLTU5OCw3ICs2MDAsOCBAQCBfX25ha2VkIHN0YXRpYyB2b2lkIHN1YnByb2dzX3VzZV9pbmRlcGVuZGVudF9vZmZzZXRzX2F1eCh2b2lkKVxcbiBcXG4gU0VDKFxcXCJyYXdfdHBcXFwiKVxcbiBfX2FyY2hfeDg2XzY0XFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFxcXCJzdGFjayBkZXB0aCA4XFxcIilcXG4rX19sb2dfbGV2ZWwoNClcXG4rX19tc2coXFxcInN1YnByb2cgMCAoaGVscGVyX2NhbGxfZG9lc19ub3RfcHJldmVudF9icGZfZmFzdGNhbGwpIG1haW4ge3suKn19IHN0YWNrIDhcXFwiKVxcbiBfX3hsYXRlZChcXFwiMjogcjAgPSBcXHUwMDI2KHZvaWQgX19wZXJjcHUgKikocjApXFxcIilcXG4gX19zdWNjZXNzXFxuIF9fbmFrZWQgdm9pZCBoZWxwZXJfY2FsbF9kb2VzX25vdF9wcmV2ZW50X2JwZl9mYXN0Y2FsbCh2b2lkKVxcbkBAIC02MjAsNyArNjIzLDggQEAgX19uYWtlZCB2b2lkIGhlbHBlcl9jYWxsX2RvZXNfbm90X3ByZXZlbnRfYnBmX2Zhc3RjYWxsKHZvaWQpXFxuIFxcbiBTRUMoXFxcInJhd190cFxcXCIpXFxuIF9fYXJjaF94ODZfNjRcXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIDI0XFxcIilcXG4rX19sb2dfbGV2ZWwoNClcXG4rX19tc2coXFxcInN1YnByb2cgMCAobWF5X2dvdG9faW50ZXJhY3Rpb25feDg2XzY0KSBtYWluIHt7Lip9fSBzdGFjayAyNFxcXCIpXFxuIC8qIG1heV9nb3RvIGNvdW50ZXIgYXQgLTI0ICovXFxuIF9feGxhdGVkKFxcXCIwOiAqKHU2NCAqKShyMTAgLTI0KSA9XFxcIilcXG4gLyogbWF5X2dvdG8gdGltZXN0YW1wIGF0IC0xNiAqL1xcbkBAIC02NjEsNyArNjY1LDggQEAgX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCh2b2lkKVxcbiBTRUMoXFxcInJhd190cFxcXCIpXFxuIF9fYXJjaF9hcm02NFxcbiBfX2FyY2hfcmlzY3Y2NFxcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcXFwic3RhY2sgZGVwdGggMjRcXFwiKVxcbitfX2xvZ19sZXZlbCg0KVxcbitfX21zZyhcXFwic3VicHJvZyAwIChtYXlfZ290b19pbnRlcmFjdGlvbikgbWFpbiB7ey4qfX0gc3RhY2sgMjRcXFwiKVxcbiAvKiBtYXlfZ290byBjb3VudGVyIGF0IC0yNCAqL1xcbiBfX3hsYXRlZChcXFwiMDogKih1NjQgKikocjEwIC0yNCkgPVxcXCIpXFxuIC8qIG1heV9nb3RvIHRpbWVzdGFtcCBhdCAtMTYgKi9cXG5AQCAtNzA4LDcgKzcxMyw5IEBAIF9fbmFrZWQgc3RhdGljIHZvaWQgZHVtbXlfbG9vcF9jYWxsYmFjayh2b2lkKVxcbiBcXG4gU0VDKFxcXCJyYXdfdHBcXFwiKVxcbiBfX2FyY2hfeDg2XzY0XFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFxcXCJzdGFjayBkZXB0aCAzMiswXFxcIilcXG4rX19sb2dfbGV2ZWwoNClcXG4rX19tc2coXFxcInN1YnByb2cgMCAoYnBmX2xvb3BfaW50ZXJhY3Rpb24xKSBtYWluIHt7Lip9fSBzdGFjayAzMlxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDEgKGR1bW15X2xvb3BfY2FsbGJhY2spIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFxcXCIpXFxuIF9feGxhdGVkKFxcXCIyOiByMSA9IDFcXFwiKVxcbiBfX3hsYXRlZChcXFwiMzogcjAgPVxcXCIpXFxuIF9feGxhdGVkKFxcXCI0OiByMCA9IFxcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcXFwiKVxcbkBAIC03NTYsNyArNzYzLDkgQEAgX19uYWtlZCBpbnQgYnBmX2xvb3BfaW50ZXJhY3Rpb24xKHZvaWQpXFxuIFxcbiBTRUMoXFxcInJhd190cFxcXCIpXFxuIF9fYXJjaF94ODZfNjRcXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIDQwKzBcXFwiKVxcbitfX2xvZ19sZXZlbCg0KVxcbitfX21zZyhcXFwic3VicHJvZyAwIChicGZfbG9vcF9pbnRlcmFjdGlvbjIpIG1haW4ge3suKn19IHN0YWNrIDQwXFxcIilcXG4rX19tc2coXFxcInN1YnByb2cgMSAoZHVtbXlfbG9vcF9jYWxsYmFjaykgc3RhdGljIHt7Lip9fSBzdGFjayAwXFxcIilcXG4gLyogY2FsbCBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQgKi9cXG4gX194bGF0ZWQoXFxcIjI6IHIxID0gNDJcXFwiKVxcbiBfX3hsYXRlZChcXFwiMzogcjAgPVxcXCIpXFxuQEAgLTgwMCw3ICs4MDksMTAgQEAgX19uYWtlZCBpbnQgYnBmX2xvb3BfaW50ZXJhY3Rpb24yKHZvaWQpXFxuIFxcbiBTRUMoXFxcInJhd190cFxcXCIpXFxuIF9fYXJjaF94ODZfNjRcXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIDUxMiswIG1heCA1MTJcXFwiKVxcbitfX2xvZ19sZXZlbCg0KVxcbitfX21zZyhcXFwic3RhY2sgZGVwdGggbWF4IDUxMlxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKGN1bXVsYXRpdmVfc3RhY2tfZGVwdGgpIG1haW4ge3suKn19IHN0YWNrIDUxMlxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDEgKGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZykgc3RhdGljIHt7Lip9fSBzdGFjayAwXFxcIilcXG4gLyoganVzdCB0byBwcmludCB4bGF0ZWQgdmVyc2lvbiB3aGVuIGRlYnVnZ2luZyAqL1xcbiBfX3hsYXRlZChcXFwicjAgPSBcXHUwMDI2KHZvaWQgX19wZXJjcHUgKikocjApXFxcIilcXG4gX19zdWNjZXNzXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuY1xcbmluZGV4IDY3ZGMzNTJhZGRmZDcuLjdiNjVlZWE5N2ViYzIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2dsb2JhbF9zdWJwcm9ncy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2dsb2JhbF9zdWJwcm9ncy5jXFxuQEAgLTUyLDcgKzUyLDEwIEBAIF9fbXNnKFxcXCIoJ2dsb2JhbF9jYWxsc19nb29kX29ubHknKSBpcyBnbG9iYWwgYW5kIGFzc3VtZWQgdmFsaWQuXFxcIilcXG4gLyogZXZlbnR1YWxseSBnbG9iYWxfZ29vZCgpIGlzIHRyYW5zaXRpdmVseSB2YWxpZGF0ZWQgYXMgd2VsbCAqL1xcbiBfX21zZyhcXFwiVmFsaWRhdGluZyBnbG9iYWxfZ29vZCgpIGZ1bmNcXFwiKVxcbiBfX21zZyhcXFwiKCdnbG9iYWxfZ29vZCcpIGlzIHNhZmUgZm9yIGFueSBhcmdzIHRoYXQgbWF0Y2ggaXRzIHByb3RvdHlwZVxcXCIpXFxuLV9fbXNnKFxcXCJpbnNucyBwcm9jZXNzZWQge3tbMC05XStcXFxcXFxcXCtbMC05XStcXFxcXFxcXCtbMC05XSskfX1cXFwiKVxcbitfX21zZyhcXFwic3VicHJvZyAwIChjaGFpbmVkX2dsb2JhbF9mdW5jX2NhbGxzX3N1Y2Nlc3MpIG1haW4gaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2tcXFwiKVxcbitfX21zZyhcXFwic3VicHJvZyB7e1swLTldK319IChnbG9iYWxfY2FsbHNfZ29vZF9vbmx5KSBnbG9iYWwgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2tcXFwiKVxcbitfX21zZyhcXFwic3VicHJvZyB7e1swLTldK319IChnbG9iYWxfZ29vZCkgZ2xvYmFsIGluc25zX3NlbGYgNSBpbnNuc190b3RhbCA1IHN0YWNrXFxcIilcXG4rX19tc2coXFxcInByb2Nlc3NlZCAxNCBpbnNuc1xcXCIpXFxuIGludCBjaGFpbmVkX2dsb2JhbF9mdW5jX2NhbGxzX3N1Y2Nlc3Modm9pZClcXG4ge1xcbiBcXHRpbnQgc3VtID0gMDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcXG5pbmRleCBiYjgyMDZlMTA4ODBjLi5lYTBhN2U3MzMzMWRhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXFxuQEAgLTg2LDcgKzg2LDkgQEAgX19uYWtlZCBzdGF0aWMgdm9pZCBjdW11bGF0aXZlX3N0YWNrX2RlcHRoX3N1YnByb2codm9pZClcXG4gU0VDKFxcXCJrcHJvYmVcXFwiKVxcbiBfX2Rlc2NyaXB0aW9uKFxcXCJQcml2YXRlIHN0YWNrLCBzdWJ0cmVlIFxcdTAwM2UgTUFYX0JQRl9TVEFDS1xcXCIpXFxuIF9fc3VjY2Vzc1xcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcXFwic3RhY2sgZGVwdGggNTEyKzMyIG1heCA1MTJcXFwiKVxcbitfX2xvZ19sZXZlbCg0KSBfX21zZyhcXFwic3RhY2sgZGVwdGggbWF4IDUxMlxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKHByaXZhdGVfc3RhY2tfbmVzdGVkXzEpIG1haW4ge3suKn19IHN0YWNrIDUxMlxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDEgKGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZykgc3RhdGljIHt7Lip9fSBzdGFjayAzMlxcXCIpXFxuIF9fYXJjaF94ODZfNjRcXG4gLyogcHJpdmF0ZSBzdGFjayBmcCBmb3IgdGhlIG1haW4gcHJvZyAqL1xcbiBfX2ppdGVkKFxcXCJcXHRtb3ZhYnNxXFx0JDB4e3suKn19LCAlcjlcXFwiKVxcbkBAIC0zMzEsNyArMzMzLDExIEBAIFNFQyhcXFwiZmVudHJ5L2JwZl9mZW50cnlfdGVzdDlcXFwiKVxcbiBfX2Rlc2NyaXB0aW9uKFxcXCJQcml2YXRlIHN0YWNrLCBhc3luYyBjYWxsYmFjaywgcG90ZW50aWFsIG5lc3RpbmdcXFwiKVxcbiBfX3N1Y2Nlc3MgX19yZXR2YWwoMClcXG4gX19sb2FkX2lmX0pJVGVkKClcXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIDgrMCsyNTYrMCBtYXggMjcyXFxcIilcXG4rX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIG1heCAyNzJcXFwiKVxcbitfX21zZyhcXFwic3VicHJvZyAwIChwcml2YXRlX3N0YWNrX2FzeW5jX2NhbGxiYWNrXzIpIG1haW4ge3suKn19IHN0YWNrIDhcXFwiKVxcbitfX21zZyhcXFwic3VicHJvZyAxICh0aW1lcl9jYjEpIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDIgKHN1YnByb2cxKSBzdGF0aWMge3suKn19IHN0YWNrIDI1NlxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDMgKHN1YnByb2cyKSBzdGF0aWMge3suKn19IHN0YWNrIDBcXFwiKVxcbiBfX2FyY2hfeDg2XzY0XFxuIF9faml0ZWQoXFxcIlxcdHN1YnFcXHQkMHgxMDAsICVyc3BcXFwiKVxcbiBfX2FyY2hfYXJtNjRcXG5AQCAtMzU1LDcgKzM2MSwxMCBAQCBpbnQgcHJpdmF0ZV9zdGFja19hc3luY19jYWxsYmFja18yKHZvaWQpXFxuIFNFQyhcXFwiZmVudHJ5L2JwZl9mZW50cnlfdGVzdDlcXFwiKVxcbiBfX2Rlc2NyaXB0aW9uKFxcXCJwcml2YXRlIHN0YWNrLCBtYXggc3RhY2sgZGVwdGggaXMgcHJpdmF0ZSBzdGFja1xcXCIpXFxuIF9fc3VjY2Vzc1xcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcXFwic3RhY2sgZGVwdGggOCsyNTYrMCBtYXggMjU2XFxcIilcXG4rX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIG1heCAyNTZcXFwiKVxcbitfX21zZyhcXFwic3VicHJvZyAwIChwcml2YXRlX3N0YWNrX21heF9kZXB0aCkgbWFpbiB7ey4qfX0gc3RhY2sgOFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDEgKHN1YnByb2cxKSBzdGF0aWMgaW5zbnNfc2VsZiB7e1swLTldK319IGluc25zX3RvdGFsIHt7WzAtOV0rfX0gc3RhY2sgMjU2XFxcIilcXG4rX19tc2coXFxcInN1YnByb2cgMiAoc3VicHJvZzIpIHN0YXRpYyBpbnNuc19zZWxmIHt7WzAtOV0rfX0gaW5zbnNfdG90YWwge3tbMC05XSt9fSBzdGFjayAwXFxcIilcXG4gaW50IHByaXZhdGVfc3RhY2tfbWF4X2RlcHRoKHZvaWQpXFxuIHtcXG4gXFx0aW50IHggPSAwO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjhmNjA4MmZkYjVjODRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cy5jXFxuQEAgLTAsMCArMSwyMjMgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2N2bWxpbnV4LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcImJwZl9taXNjLmhcXFwiXFxuK1xcbitzdHJ1Y3QgdGltZXJfdmFsdWUge1xcbitcXHRzdHJ1Y3QgYnBmX3RpbWVyIHRpbWVyO1xcbit9O1xcbitcXG4rc3RydWN0IHtcXG4rXFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUlJBWSk7XFxuK1xcdF9fdWludChtYXhfZW50cmllcywgMSk7XFxuK1xcdF9fdHlwZShrZXksIF9fdTMyKTtcXG4rXFx0X190eXBlKHZhbHVlLCBzdHJ1Y3QgdGltZXJfdmFsdWUpO1xcbit9IHRpbWVyX21hcCBTRUMoXFxcIi5tYXBzXFxcIik7XFxuK1xcbitTRUMoXFxcIj9yYXdfdHBcXFwiKVxcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcXG4rX19tc2coXFxcInN1YnByb2cgMCAoc3RhdHNfbWFpbl9vbmx5KSBtYWluIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCAyIHN0YWNrIDBcXFwiKVxcbitfX21zZyhcXFwicHJvY2Vzc2VkIDIgaW5zbnNcXFwiKVxcbitfX25ha2VkIGludCBzdGF0c19tYWluX29ubHkodm9pZClcXG4re1xcbitcXHRhc20gdm9sYXRpbGUgKFxcbitcXHRcXHRcXFwicjAgPSAwO1xcXCJcXG4rXFx0XFx0XFxcImV4aXQ7XFxcIlxcbitcXHQpO1xcbit9XFxuK1xcbitfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkXFxuK3N0YXRpYyBpbnQgc3RhdHNfY2hhaW5fbGVhZih2b2lkKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZSAoXFxuK1xcdFxcdFxcXCJyMCA9IDA7XFxcIlxcbitcXHRcXHRcXFwiZXhpdDtcXFwiXFxuK1xcdCk7XFxuK31cXG4rXFxuK19fbmFrZWQgX19ub2lubGluZSBfX3VzZWRcXG4rc3RhdGljIGludCBzdGF0c19jaGFpbl9wYXJlbnQodm9pZClcXG4re1xcbitcXHRhc20gdm9sYXRpbGUgKFxcbitcXHRcXHRcXFwiY2FsbCBzdGF0c19jaGFpbl9sZWFmO1xcXCJcXG4rXFx0XFx0XFxcImV4aXQ7XFxcIlxcbitcXHQpO1xcbit9XFxuK1xcbitTRUMoXFxcIj9yYXdfdHBcXFwiKVxcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcXG4rLypcXG4rICogc2VsZjogMiArIDIgKyAyID0gNlxcbisgKiB0b3RhbHM6IGxlYWYgMiwgcGFyZW50IDIgKyAyID0gNCwgbWFpbiAyICsgNCA9IDZcXG4rICovXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKHN0YXRzX3N0YXRpY19jaGFpbikgbWFpbiBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgNiBzdGFjayAwXFxcIilcXG4rX19tc2coXFxcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfY2hhaW5fcGFyZW50KSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDQgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX2NoYWluX2xlYWYpIHN0YXRpYyBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgMiBzdGFjayAwXFxcIilcXG4rX19tc2coXFxcInByb2Nlc3NlZCA2IGluc25zXFxcIilcXG4rX19uYWtlZCBpbnQgc3RhdHNfc3RhdGljX2NoYWluKHZvaWQpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXG4rXFx0XFx0XFxcImNhbGwgc3RhdHNfY2hhaW5fcGFyZW50O1xcXCJcXG4rXFx0XFx0XFxcImV4aXQ7XFxcIlxcbitcXHQpO1xcbit9XFxuK1xcbitfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkXFxuK3N0YXRpYyBpbnQgc3RhdHNfc2hhcmVkX2xlYWYodm9pZClcXG4re1xcbitcXHRhc20gdm9sYXRpbGUgKFxcbitcXHRcXHRcXFwicjAgPSAwO1xcXCJcXG4rXFx0XFx0XFxcImV4aXQ7XFxcIlxcbitcXHQpO1xcbit9XFxuK1xcbitfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkXFxuK2ludCBzdGF0c19nbG9iYWxfcm9vdCh2b2lkKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZSAoXFxuK1xcdFxcdFxcXCJjYWxsIHN0YXRzX3NoYXJlZF9sZWFmO1xcXCJcXG4rXFx0XFx0XFxcImV4aXQ7XFxcIlxcbitcXHQpO1xcbit9XFxuK1xcbitTRUMoXFxcIj9yYXdfdHBcXFwiKVxcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcXG4rLypcXG4rICogc3RhdHNfc2hhcmVkX2xlYWYgaXMgZXhwbG9yZWQgb25jZSB1bmRlciBlYWNoIGluZGVwZW5kZW50IHJvb3QuXFxuKyAqIHNlbGY6IG1haW4gMyArIGxlYWYgNCArIGdsb2JhbCAyID0gOVxcbisgKiByb290IHRvdGFsczogbWFpbiA1ICsgZ2xvYmFsIDQgPSA5XFxuKyAqL1xcbitfX21zZyhcXFwic3VicHJvZyAwIChzdGF0c19zaGFyZWRfcm9vdHMpIG1haW4gaW5zbnNfc2VsZiAzIGluc25zX3RvdGFsIDUgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX3NoYXJlZF9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiA0IGluc25zX3RvdGFsIDQgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX2dsb2JhbF9yb290KSBnbG9iYWwgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDQgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJwcm9jZXNzZWQgOSBpbnNuc1xcXCIpXFxuK19fbmFrZWQgaW50IHN0YXRzX3NoYXJlZF9yb290cyh2b2lkKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZSAoXFxuK1xcdFxcdFxcXCJjYWxsIHN0YXRzX3NoYXJlZF9sZWFmO1xcXCJcXG4rXFx0XFx0XFxcImNhbGwgc3RhdHNfZ2xvYmFsX3Jvb3Q7XFxcIlxcbitcXHRcXHRcXFwiZXhpdDtcXFwiXFxuK1xcdCk7XFxuK31cXG4rXFxuK19fbm9pbmxpbmUgX191c2VkXFxuK3N0YXRpYyBpbnQgc3RhdHNfYXN5bmNfbGVhZih2b2lkICptYXAsIF9fdTMyICprZXksIHN0cnVjdCBicGZfdGltZXIgKnRpbWVyKVxcbit7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitfX25vaW5saW5lIF9fdXNlZFxcbitzdGF0aWMgX191NjQgc3RhdHNfYXN5bmNfc2NoZWR1bGUoc3RydWN0IGJwZl9tYXAgKm1hcCwgX191MzIgKmtleSxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdGltZXJfdmFsdWUgKnZhbHVlLCB2b2lkICpjdHgpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXG4rXFx0XFx0XFxcInIxID0gJVt0aW1lcl07XFxcIlxcbitcXHRcXHRcXFwicjIgPSAlW3N0YXRzX2FzeW5jX2xlYWZdO1xcXCJcXG4rXFx0XFx0XFxcImNhbGwgJVticGZfdGltZXJfc2V0X2NhbGxiYWNrXTtcXFwiXFxuK1xcdFxcdDpcXG4rXFx0XFx0OiBbdGltZXJdIFxcXCJyXFxcIiAodmFsdWUpLFxcbitcXHRcXHQgIF9faW1tX3B0cihzdGF0c19hc3luY19sZWFmKSxcXG4rXFx0XFx0ICBfX2ltbShicGZfdGltZXJfc2V0X2NhbGxiYWNrKVxcbitcXHRcXHQ6IF9fY2xvYmJlcl9jb21tb25cXG4rXFx0KTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwiP3Jhd190cFxcXCIpXFxuK19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KVxcbisvKlxcbisgKiBzZWxmOiA5ICsgNyArIDIgPSAxOFxcbisgKiB0b3RhbHM6IGxlYWYgMiwgc2NoZWR1bGVyIDcsIG1haW4gcm9vdCAxOFxcbisgKi9cXG4rX19tc2coXFxcInN1YnByb2cgMCAoc3RhdHNfYXN5bmNfZGlyZWN0KSBtYWluIGluc25zX3NlbGYgOSBpbnNuc190b3RhbCAxOCBzdGFjayAwXFxcIilcXG4rX19tc2coXFxcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfYXN5bmNfc2NoZWR1bGUpIHN0YXRpYyBpbnNuc19zZWxmIDcgaW5zbnNfdG90YWwgNyBzdGFjayAwXFxcIilcXG4rX19tc2coXFxcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfYXN5bmNfbGVhZikgc3RhdGljIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCAyIHN0YWNrIDBcXFwiKVxcbitfX21zZyhcXFwicHJvY2Vzc2VkIDE4IGluc25zXFxcIilcXG4rX19uYWtlZCBpbnQgc3RhdHNfYXN5bmNfZGlyZWN0KHZvaWQpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXG4rXFx0XFx0XFxcInIxID0gJVt0aW1lcl9tYXBdIGxsO1xcXCJcXG4rXFx0XFx0XFxcInIyID0gJVtzdGF0c19hc3luY19zY2hlZHVsZV07XFxcIlxcbitcXHRcXHRcXFwicjMgPSAwO1xcXCJcXG4rXFx0XFx0XFxcInI0ID0gMDtcXFwiXFxuK1xcdFxcdFxcXCJjYWxsICVbYnBmX2Zvcl9lYWNoX21hcF9lbGVtXTtcXFwiXFxuK1xcdFxcdFxcXCJyMCA9IDA7XFxcIlxcbitcXHRcXHRcXFwiZXhpdDtcXFwiXFxuK1xcdFxcdDpcXG4rXFx0XFx0OiBfX2ltbV9hZGRyKHRpbWVyX21hcCksXFxuK1xcdFxcdCAgX19pbW1fcHRyKHN0YXRzX2FzeW5jX3NjaGVkdWxlKSxcXG4rXFx0XFx0ICBfX2ltbShicGZfZm9yX2VhY2hfbWFwX2VsZW0pXFxuK1xcdFxcdDogX19jbG9iYmVyX2NvbW1vblxcbitcXHQpO1xcbit9XFxuK1xcbitfX25vaW5saW5lIF9fdXNlZFxcbitzdGF0aWMgaW50IHN0YXRzX2FzeW5jX25lc3RlZF9sZWFmKHZvaWQgKm1hcCwgX191MzIgKmtleSwgc3RydWN0IGJwZl90aW1lciAqdGltZXIpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK19fbm9pbmxpbmUgX191c2VkXFxuK3N0YXRpYyBpbnQgc3RhdHNfYXN5bmNfb3V0ZXIodm9pZCAqbWFwLCBfX3UzMiAqa2V5LCBzdHJ1Y3QgYnBmX3RpbWVyICp0aW1lcilcXG4re1xcbitcXHRhc20gdm9sYXRpbGUgKFxcbitcXHRcXHRcXFwicjEgPSAlW3RpbWVyXTtcXFwiXFxuK1xcdFxcdFxcXCJyMiA9ICVbc3RhdHNfYXN5bmNfbmVzdGVkX2xlYWZdO1xcXCJcXG4rXFx0XFx0XFxcImNhbGwgJVticGZfdGltZXJfc2V0X2NhbGxiYWNrXTtcXFwiXFxuK1xcdFxcdDpcXG4rXFx0XFx0OiBbdGltZXJdIFxcXCJyXFxcIiAodGltZXIpLFxcbitcXHRcXHQgIF9faW1tX3B0cihzdGF0c19hc3luY19uZXN0ZWRfbGVhZiksXFxuK1xcdFxcdCAgX19pbW0oYnBmX3RpbWVyX3NldF9jYWxsYmFjaylcXG4rXFx0XFx0OiBfX2Nsb2JiZXJfY29tbW9uXFxuK1xcdCk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitfX25vaW5saW5lIF9fdXNlZFxcbitzdGF0aWMgX191NjQgc3RhdHNfYXN5bmNfbmVzdGVkX3NjaGVkdWxlKHN0cnVjdCBicGZfbWFwICptYXAsIF9fdTMyICprZXksXFxuK1xcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgdGltZXJfdmFsdWUgKnZhbHVlLCB2b2lkICpjdHgpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXG4rXFx0XFx0XFxcInIxID0gJVt0aW1lcl07XFxcIlxcbitcXHRcXHRcXFwicjIgPSAlW3N0YXRzX2FzeW5jX291dGVyXTtcXFwiXFxuK1xcdFxcdFxcXCJjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107XFxcIlxcbitcXHRcXHQ6XFxuK1xcdFxcdDogW3RpbWVyXSBcXFwiclxcXCIgKHZhbHVlKSxcXG4rXFx0XFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfb3V0ZXIpLFxcbitcXHRcXHQgIF9faW1tKGJwZl90aW1lcl9zZXRfY2FsbGJhY2spXFxuK1xcdFxcdDogX19jbG9iYmVyX2NvbW1vblxcbitcXHQpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCI/cmF3X3RwXFxcIilcXG4rX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpXFxuKy8qXFxuKyAqIHNlbGY6IDkgKyA3ICsgNyArIDIgPSAyNVxcbisgKiB0b3RhbHM6IGxlYWYgMiwgb3V0ZXIgNywgc2NoZWR1bGVyIDcsIG1haW4gcm9vdCAyNVxcbisgKi9cXG4rX19tc2coXFxcInN1YnByb2cgMCAoc3RhdHNfYXN5bmNfbmVzdGVkKSBtYWluIGluc25zX3NlbGYgOSBpbnNuc190b3RhbCAyNSBzdGFjayAwXFxcIilcXG4rX19tc2coXFxcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfYXN5bmNfbmVzdGVkX3NjaGVkdWxlKSBzdGF0aWMgaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX2FzeW5jX291dGVyKSBzdGF0aWMgaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX2FzeW5jX25lc3RlZF9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJwcm9jZXNzZWQgMjUgaW5zbnNcXFwiKVxcbitfX25ha2VkIGludCBzdGF0c19hc3luY19uZXN0ZWQodm9pZClcXG4re1xcbitcXHRhc20gdm9sYXRpbGUgKFxcbitcXHRcXHRcXFwicjEgPSAlW3RpbWVyX21hcF0gbGw7XFxcIlxcbitcXHRcXHRcXFwicjIgPSAlW3N0YXRzX2FzeW5jX25lc3RlZF9zY2hlZHVsZV07XFxcIlxcbitcXHRcXHRcXFwicjMgPSAwO1xcXCJcXG4rXFx0XFx0XFxcInI0ID0gMDtcXFwiXFxuK1xcdFxcdFxcXCJjYWxsICVbYnBmX2Zvcl9lYWNoX21hcF9lbGVtXTtcXFwiXFxuK1xcdFxcdFxcXCJyMCA9IDA7XFxcIlxcbitcXHRcXHRcXFwiZXhpdDtcXFwiXFxuK1xcdFxcdDpcXG4rXFx0XFx0OiBfX2ltbV9hZGRyKHRpbWVyX21hcCksXFxuK1xcdFxcdCAgX19pbW1fcHRyKHN0YXRzX2FzeW5jX25lc3RlZF9zY2hlZHVsZSksXFxuK1xcdFxcdCAgX19pbW0oYnBmX2Zvcl9lYWNoX21hcF9lbGVtKVxcbitcXHRcXHQ6IF9fY2xvYmJlcl9jb21tb25cXG4rXFx0KTtcXG4rfVxcbitcXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcXFwibGljZW5zZVxcXCIpID0gXFxcIkdQTFxcXCI7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXFxuaW5kZXggMjRjZDBhNzYzNjczMC4uYTYzZTMzNjc1MDkxOCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xcbkBAIC0xOTgsNyArMTk4LDggQEAgX19zdWNjZXNzXFxuIC8qIENoZWNrIHRoYXQgdGhlIG1heGltdW0gc3RhY2sgZGVwdGggaXMgY29ycmVjdGx5IG1haW50YWluZWQgYWNjb3JkaW5nIHRvIHRoZVxcbiAgKiBtYXhpbXVtIHBvc3NpYmxlIHZhcmlhYmxlIG9mZnNldC5cXG4gICovXFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFxcXCJzdGFjayBkZXB0aCAxNlxcXCIpXFxuK19fbG9nX2xldmVsKDQpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKHN0YWNrX3dyaXRlX3ByaXZfdnNfdW5wcml2KSBtYWluIHt7Lip9fSBzdGFjayAxNlxcXCIpXFxuIF9fZmFpbHVyZV91bnByaXZcXG4gLyogVmFyaWFibGUgc3RhY2sgYWNjZXNzIGlzIHJlamVjdGVkIGZvciB1bnByaXZpbGVnZWQuXFxuICAqL1xcbkBAIC0yMzgsNyArMjM5LDggQEAgX19zdWNjZXNzXFxuIC8qIENoZWNrIHRoYXQgdGhlIG1heGltdW0gc3RhY2sgZGVwdGggaXMgY29ycmVjdGx5IG1haW50YWluZWQgYWNjb3JkaW5nIHRvIHRoZVxcbiAgKiBtYXhpbXVtIHBvc3NpYmxlIHZhcmlhYmxlIG9mZnNldC5cXG4gICovXFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFxcXCJzdGFjayBkZXB0aCAxNlxcXCIpXFxuK19fbG9nX2xldmVsKDQpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKHN0YWNrX3dyaXRlX2ZvbGxvd2VkX2J5X3JlYWQpIG1haW4ge3suKn19IHN0YWNrIDE2XFxcIilcXG4gX19mYWlsdXJlX3VucHJpdlxcbiBfX21zZ191bnByaXYoXFxcIlIyIHZhcmlhYmxlIHN0YWNrIGFjY2VzcyBwcm9oaWJpdGVkIGZvciAhcm9vdFxcXCIpXFxuIF9fcmV0dmFsKDApXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3ZlcmlmaWVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jXFxuaW5kZXggYThhZTAzYzU3YmJhZS4uYmZmYjczNjA0MzRjNSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfdmVyaWZpZXIuY1xcbkBAIC0xNTYwLDcgKzE1NjAsNyBAQCBzdGF0aWMgdm9pZCBkb190ZXN0X3NpbmdsZShzdHJ1Y3QgYnBmX3Rlc3QgKnRlc3QsIGJvb2wgdW5wcml2LFxcbiBcXG4gXFx0b3B0cy5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IHRlc3QtXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlO1xcbiBcXHRpZiAoZXhwZWN0ZWRfcmV0ID09IFZFUkJPU0VfQUNDRVBUKVxcbi1cXHRcXHRvcHRzLmxvZ19sZXZlbCA9IDI7XFxuK1xcdFxcdG9wdHMubG9nX2xldmVsID0gMiB8IDQ7XFxuIFxcdGVsc2UgaWYgKHZlcmJvc2UpXFxuIFxcdFxcdG9wdHMubG9nX2xldmVsID0gdmVyaWZfbG9nX2xldmVsIHwgNDsgLyogZm9yY2Ugc3RhdHMgKi9cXG4gXFx0ZWxzZVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvY2FsbHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9jYWxscy5jXFxuaW5kZXggOGNkNjI2ZTA0NTUxNS4uZWI2ZTNiYWVmNDEyYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvY2FsbHMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9jYWxscy5jXFxuQEAgLTEwOTEsNyArMTA5MSwxNyBAQFxcbiBcXHQvKiBzdGFja19tYWluPTMyLCBzdGFja19BPTI1Niwgc3RhY2tfQj02NFxcbiBcXHQgKiBhbmQgbWF4KG1haW4rQSwgbWFpbitBK0IpIFxcdTAwM2MgNTEyXFxuIFxcdCAqL1xcbi1cXHQucmVzdWx0ID0gQUNDRVBULFxcbitcXHQucmVzdWx0ID0gVkVSQk9TRV9BQ0NFUFQsXFxuK1xcdC5lcnJzdHIgPSBcXFwic3RhY2sgZGVwdGggbWF4IDM1MlxcXFx0XFxcIlxcbitcXHRcXHQgIFxcXCJzdWJwcm9nIDAgKFxcdTAwM2N1bmtub3duXFx1MDAzZSkgbWFpbiBpbnNuc19zZWxmIFxcXFx0XFxcIlxcbitcXHRcXHQgIFxcXCIgaW5zbnNfdG90YWwgXFxcXHRcXFwiXFxuK1xcdFxcdCAgXFxcIiBzdGFjayAzMlxcXFx0XFxcIlxcbitcXHRcXHQgIFxcXCJzdWJwcm9nIDEgKFxcdTAwM2N1bmtub3duXFx1MDAzZSkgc3RhdGljIGluc25zX3NlbGYgXFxcXHRcXFwiXFxuK1xcdFxcdCAgXFxcIiBpbnNuc190b3RhbCBcXFxcdFxcXCJcXG4rXFx0XFx0ICBcXFwiIHN0YWNrIDI1NlxcXFx0XFxcIlxcbitcXHRcXHQgIFxcXCJzdWJwcm9nIDIgKFxcdTAwM2N1bmtub3duXFx1MDAzZSkgc3RhdGljIGluc25zX3NlbGYgXFxcXHRcXFwiXFxuK1xcdFxcdCAgXFxcIiBpbnNuc190b3RhbCBcXFxcdFxcXCJcXG4rXFx0XFx0ICBcXFwiIHN0YWNrIDY0XFxcIixcXG4gfSxcXG4ge1xcbiBcXHRcXFwiY2FsbHM6IHN0YWNrIGRlcHRoIGNoZWNrIHVzaW5nIHRocmVlIGZyYW1lcy4gdGVzdDJcXFwiLFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXFxuaW5kZXggYzljMjU3Nzg0ZWUzZC4uNWMwZWMzZWRjZTcyMCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXFxuQEAgLTk5MywxMyArOTkzLDE1IEBAIHN0YXRpYyB2b2lkIGZyZWVfdmVyaWZfc3RhdHMoc3RydWN0IHZlcmlmX3N0YXRzICpzdGF0cywgc2l6ZV90IHN0YXRfY250KVxcbiBcXG4gc3RhdGljIGNoYXIgdmVyaWZfbG9nX2J1Zls2NCAqIDEwMjRdO1xcbiBcXG4tI2RlZmluZSBNQVhfUEFSU0VEX0xPR19MSU5FUyAxMDBcXG4rLyogS2VlcCByb29tIGZvciBhbGwgMjU2IHN1YnByb2dyYW0gcmVjb3JkcyBhbmQgdHJhaWxpbmcgc3RhdGlzdGljcy4gKi9cXG4rI2RlZmluZSBNQVhfUEFSU0VEX0xPR19MSU5FUyAzMDBcXG4gXFxuIHN0YXRpYyBpbnQgcGFyc2VfdmVyaWZfbG9nKGNoYXIgKiBjb25zdCBidWYsIHNpemVfdCBidWZfc3osIHN0cnVjdCB2ZXJpZl9zdGF0cyAqcylcXG4ge1xcbiBcXHRjb25zdCBjaGFyICpjdXI7XFxuLVxcdGludCBwb3MsIGxpbmVzLCBzdWJfc3RhY2ssIGNudCA9IDA7XFxuLVxcdGNoYXIgKnN0YXRlID0gTlVMTCwgKnRva2VuLCBzdGFja1s1MTJdO1xcbitcXHRsb25nIHN1Yl9zdGFjaztcXG4rXFx0aW50IHBvcywgbGluZXMsIGNudCA9IDA7XFxuK1xcdGNoYXIgKnN0YXRlID0gTlVMTCwgKnRva2VuLCBzdGFja1s1MTJdID0ge307XFxuIFxcbiBcXHRidWZbYnVmX3N6IC0gMV0gPSAnXFxcXDAnO1xcbiBcXG5AQCAtMTAyNSwxMSArMTAyNywyNCBAQCBzdGF0aWMgaW50IHBhcnNlX3ZlcmlmX2xvZyhjaGFyICogY29uc3QgYnVmLCBzaXplX3QgYnVmX3N6LCBzdHJ1Y3QgdmVyaWZfc3RhdHMgKlxcbiBcXHRcXHRcXHRcXHRcXHUwMDI2cy1cXHUwMDNlc3RhdHNbTUFSS19SRUFEX01BWF9MRU5dKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBOZXcga2VybmVscyBlbWl0IG9uZSBcXFwic3VicHJvZyBcXHUwMDNjaWRcXHUwMDNlIChcXHUwMDNjbmFtZVxcdTAwM2UpIFxcdTAwM2NraW5kXFx1MDAzZVxcXCIgcmVjb3JkXFxuK1xcdFxcdCAqIHBlciBzdWJwcm9ncmFtIHdpdGggdGhlIHN0YWNrIGRlcHRoIGF0IHRoZSBlbmQsIHdoaWxlIG9sZFxcbitcXHRcXHQgKiBrZXJuZWxzIGVtaXQgYSBzaW5nbGUgXFxcInN0YWNrIGRlcHRoIFxcdTAwM2NhKy4uLituXFx1MDAzZSBtYXggXFx1MDAzY21heFxcdTAwM2VcXFwiXFxuK1xcdFxcdCAqIGxpbmUuIE1hdGNoIGJvdGggZm9ybWF0cyBzbyB2ZXJpc3RhdCB3b3JrcyBhZ2FpbnN0IGVpdGhlclxcbitcXHRcXHQgKiBrZXJuZWwuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoc3NjYW5mKGN1ciwgXFxcInN0YWNrIGRlcHRoIG1heCAlbGRcXFwiLCBcXHUwMDI2cy1cXHUwMDNlc3RhdHNbTUFYX1NUQUNLXSkgPT0gMSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdGlmIChzc2NhbmYoY3VyLCBcXFwic3VicHJvZyAlKmQgJSpzICUqcyBpbnNuc19zZWxmICUqZCBpbnNuc190b3RhbCAlKmQgc3RhY2sgJWxkXFxcIiwgXFx1MDAyNnN1Yl9zdGFjaykgPT0gMSkge1xcbitcXHRcXHRcXHRzLVxcdTAwM2VzdGF0c1tTVEFDS10gKz0gc3ViX3N0YWNrO1xcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRpZiAoMiA9PSBzc2NhbmYoY3VyLCBcXFwic3RhY2sgZGVwdGggJTUxMXMgbWF4ICVsZFxcXCIsIHN0YWNrLCBcXHUwMDI2cy1cXHUwMDNlc3RhdHNbTUFYX1NUQUNLXSkpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHR9XFxuIFxcdHdoaWxlICgodG9rZW4gPSBzdHJ0b2tfcihjbnQrKyA/IE5VTEwgOiBzdGFjaywgXFxcIitcXFwiLCBcXHUwMDI2c3RhdGUpKSkge1xcbi1cXHRcXHRpZiAoc3NjYW5mKHRva2VuLCBcXFwiJWRcXFwiLCBcXHUwMDI2c3ViX3N0YWNrKSA9PSAwKVxcbitcXHRcXHRpZiAoc3NjYW5mKHRva2VuLCBcXFwiJWxkXFxcIiwgXFx1MDAyNnN1Yl9zdGFjaykgPT0gMClcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdHMtXFx1MDAzZXN0YXRzW1NUQUNLXSArPSBzdWJfc3RhY2s7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjI6Mzg6MTYuNTIwMjE1NTQyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjA1NDA5MzY0MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBzdGF0aXN0aWNzIHRyYWNraW5nIGZvciB0aGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBwcm9jZXNzZWQgcGVyIHN1YnByb2dyYW0gZHVyaW5nIEJQRiB2ZXJpZmljYXRpb24gYW5kIG91dHB1dHMgdGhlbSBpbiB0aGUgdmVyaWZpZXIgbG9nLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgdmVyaWZpY2F0aW9uIGxvZ2ljLCBleGVjdXRpb24gZmxvdywgb3IgdGhlIGdlbmVyYXRlZCBCUEYgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI3NjIxOTk4ZTc3YTc5OGZmOTgyOTY1OTNlNzI5MmRlYzU3Mjg0MTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAyMjozODoxNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oXG5pbmRleCA5M2Y3YzIwNzVlZWFhLi43YzM3NjQ1MWRiODI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaFxuKysrIGIvaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaFxuQEAgLTM4MCw2ICszODAsOCBAQCBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUge1xuIFx0ICogICAgICAgICAgICAgICAgICAgICAgICAgICB8IG51bWJlciBvZiBzaW11bGF0aW9ucyBpcyB0cmFja2VkIGluIGZyYW1lIE5cbiBcdCAqL1xuIFx0dTMyIGNhbGxiYWNrX2RlcHRoO1xuK1x0LyogSW5zdHJ1Y3Rpb25zIHByb2Nlc3NlZCBpbiB0aGlzIGZyYW1lIGFuZCBjYWxsZWVzIG9uIHRoZSBjdXJyZW50IHBhdGguICovXG4rXHR1MzIgaW5zbnNfc3VidG90YWw7XG4gXG4gXHQvKiBUaGUgZm9sbG93aW5nIGZpZWxkcyBzaG91bGQgYmUgbGFzdC4gU2VlIGNvcHlfZnVuY19zdGF0ZSgpICovXG4gXHQvKiBUaGUgc3RhdGUgb2YgdGhlIHN0YWNrLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGRlc2NyaWJlcyBCUEZfUkVHX1NJWkVcbkBAIC03OTgsNyArODAwLDggQEAgc3RydWN0IGJwZl9zdWJwcm9nX2luZm8ge1xuIFx0dTMyIGV4aXRfaWR4OyAvKiBJbmRleCBvZiBvbmUgb2YgdGhlIEJQRl9FWElUIGluc3RydWN0aW9ucyBpbiB0aGlzIHN1YnByb2dyYW0gKi9cbiBcdHUxNiBzdGFja19kZXB0aDsgLyogbWF4LiBzdGFjayBkZXB0aCB1c2VkIGJ5IHRoaXMgZnVuY3Rpb24gKi9cbiBcdHUxNiBzdGFja19leHRyYTtcbi1cdHUzMiBpbnNuX3Byb2Nlc3NlZDtcbitcdHUzMiBpbnNuc190b3RhbDtcbitcdHUzMiBpbnNuc19zZWxmO1xuIFx0Lyogb2Zmc2V0cyBpbiByYW5nZSBbc3RhY2tfZGVwdGggLi4gZmFzdGNhbGxfc3RhY2tfb2ZmKVxuIFx0ICogYXJlIHVzZWQgZm9yIGJwZl9mYXN0Y2FsbCBzcGlsbHMgYW5kIGZpbGxzLlxuIFx0ICovXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCBhZGQzYWZmYzU3MDM1Li44MjBkMjgzMWYzNDAzIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC0xNTkzLDYgKzE1OTMsOCBAQCBzdGF0aWMgaW50IGNvcHlfZnVuY19zdGF0ZShzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmRzdCxcbiBcdFx0XHQgICBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKnNyYylcbiB7XG4gXHRtZW1jcHkoZHN0LCBzcmMsIG9mZnNldG9mKHN0cnVjdCBicGZfZnVuY19zdGF0ZSwgc3RhY2spKTtcbitcdC8qIEluc3RydWN0aW9uIGFjY291bnRpbmcgaXMgcGF0aC1sb2NhbCwgbm90IHBhcnQgb2YgdmVyaWZpZXIgc3RhdGUuICovXG4rXHRkc3QtXHUwMDNlaW5zbnNfc3VidG90YWwgPSAwO1xuIFx0cmV0dXJuIGNvcHlfc3RhY2tfc3RhdGUoZHN0LCBzcmMpO1xuIH1cbiBcbkBAIC05NzE3LDYgKzk3MTksNDIgQEAgc3RhdGljIGludCBzZXRfdGFza193b3JrX3NjaGVkdWxlX2NhbGxiYWNrX3N0YXRlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXG4gc3RhdGljIGJvb2wgaXNfcmJ0cmVlX2xvY2tfcmVxdWlyZWRfa2Z1bmModTMyIGJ0Zl9pZCk7XG4gXG4rc3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuK3tcbitcdHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqZnJhbWUgPSBjdXJfZnVuYyhlbnYpO1xuK1xuK1x0ZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkKys7XG4rXHRmcmFtZS1cdTAwM2VpbnNuc19zdWJ0b3RhbCsrO1xuK1x0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tmcmFtZS1cdTAwM2VzdWJwcm9nbm9dLmluc25zX3NlbGYrKztcbit9XG4rXG4rc3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbitcdFx0XHRcdCAgICBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmNhbGxlZSxcbitcdFx0XHRcdCAgICBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmNhbGxlcilcbit7XG4rXHR1MzIgaW5zbnM7XG4rXG4rXHRpZiAoIWNhbGxlZSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0aW5zbnMgPSBjYWxsZWUtXHUwMDNlaW5zbnNfc3VidG90YWw7XG4rXG4rXHRlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2NhbGxlZS1cdTAwM2VzdWJwcm9nbm9dLmluc25zX3RvdGFsICs9IGluc25zO1xuK1x0aWYgKGNhbGxlcilcbitcdFx0Y2FsbGVyLVx1MDAzZWluc25zX3N1YnRvdGFsICs9IGluc25zO1xuK1x0Y2FsbGVlLVx1MDAzZWluc25zX3N1YnRvdGFsID0gMDtcbit9XG4rXG4rc3RhdGljIHZvaWQgYWNjb3VudF9jdXJyZW50X3BhdGgoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbit7XG4rXHRzdHJ1Y3QgYnBmX3ZlcmlmaWVyX3N0YXRlICpzdGF0ZSA9IGVudi1cdTAwM2VjdXJfc3RhdGU7XG4rXHRpbnQgZnJhbWU7XG4rXG4rXHRmb3IgKGZyYW1lID0gc3RhdGUtXHUwMDNlY3VyZnJhbWU7IGZyYW1lIFx1MDAzZT0gMDsgZnJhbWUtLSlcbitcdFx0YWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoZW52LCBzdGF0ZS1cdTAwM2VmcmFtZVtmcmFtZV0sXG4rXHRcdFx0XHRcdGZyYW1lID8gc3RhdGUtXHUwMDNlZnJhbWVbZnJhbWUgLSAxXSA6IE5VTEwpO1xuK31cbitcbiAvKiBBcmUgd2UgY3VycmVudGx5IHZlcmlmeWluZyB0aGUgY2FsbGJhY2sgZm9yIGEgcmJ0cmVlIGhlbHBlciB0aGF0IG11c3RcbiAgKiBiZSBjYWxsZWQgd2l0aCBsb2NrIGhlbGQ/IElmIHNvLCBubyBuZWVkIHRvIGNvbXBsYWluIGFib3V0IHVucmVsZWFzZWRcbiAgKiBsb2NrXG5AQCAtOTgxMyw2ICs5ODUxLDcgQEAgc3RhdGljIGludCBwcmVwYXJlX2Z1bmNfZXhpdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgKmluc25faWR4KVxuIFx0XHR2ZXJib3NlKGVudiwgXCJ0byBjYWxsZXIgYXQgJWQ6XFxuXCIsICppbnNuX2lkeCk7XG4gXHRcdHByaW50X3ZlcmlmaWVyX3N0YXRlKGVudiwgc3RhdGUsIGNhbGxlci1cdTAwM2VmcmFtZW5vLCB0cnVlKTtcbiBcdH1cbitcdGFjY291bnRfcHJvY2Vzc2VkX2luc25zKGVudiwgY2FsbGVlLCBjYWxsZXIpO1xuIFx0LyogY2xlYXIgZXZlcnl0aGluZyBpbiB0aGUgY2FsbGVlLiBJbiBjYXNlIG9mIGV4Y2VwdGlvbmFsIGV4aXRzIHVzaW5nXG4gXHQgKiBicGZfdGhyb3csIHRoaXMgd2lsbCBiZSBkb25lIGJ5IGNvcHlfdmVyaWZpZXJfc3RhdGUgZm9yIGV4dHJhIGZyYW1lcy4gKi9cbiBcdGZyZWVfZnVuY19zdGF0ZShjYWxsZWUpO1xuQEAgLTE3MzY4LDcgKzE3NDA3LDkgQEAgc3RhdGljIGludCBkb19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0XHRpbnNuID0gXHUwMDI2aW5zbnNbZW52LVx1MDAzZWluc25faWR4XTtcbiBcdFx0aW5zbl9hdXggPSBcdTAwMjZlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtlbnYtXHUwMDNlaW5zbl9pZHhdO1xuIFxuLVx0XHRpZiAoKytlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQgXHUwMDNlIEJQRl9DT01QTEVYSVRZX0xJTUlUX0lOU05TKSB7XG4rXHRcdGFjY291bnRfcHJvY2Vzc2VkX2luc24oZW52KTtcbitcbitcdFx0aWYgKGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCBcdTAwM2UgQlBGX0NPTVBMRVhJVFlfTElNSVRfSU5TTlMpIHtcbiBcdFx0XHR2ZXJib3NlKGVudixcbiBcdFx0XHRcdFwiQlBGIHByb2dyYW0gaXMgdG9vIGxhcmdlLiBQcm9jZXNzZWQgJWQgaW5zblxcblwiLFxuIFx0XHRcdFx0ZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkKTtcbkBAIC0xNzUwOSw2ICsxNzU1MCw3IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2soc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdFx0XHRcdFx0ICAgIFwic3BlY3VsYXRpb24gYmFycmllciBhZnRlciBqdW1wIGluc3RydWN0aW9uIG1heSBub3QgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3RcIikpXG4gXHRcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBwcm9jZXNzX2JwZl9leGl0OlxuK1x0XHRcdGFjY291bnRfY3VycmVudF9wYXRoKGVudik7XG4gXHRcdFx0bWFya192ZXJpZmllcl9zdGF0ZV9zY3JhdGNoZWQoZW52KTtcbiBcdFx0XHRlcnIgPSBicGZfdXBkYXRlX2JyYW5jaF9jb3VudHMoZW52LCBlbnYtXHUwMDNlY3VyX3N0YXRlKTtcbiBcdFx0XHRpZiAoZXJyKVxuQEAgLTE4NDE1LDYgKzE4NDU3LDcgQEAgc3RhdGljIGludCBkb19jaGVja19jb21tb24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2cpXG4gXHRzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXggPSBlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXg7XG4gXHRzdHJ1Y3QgYnBmX3ZlcmlmaWVyX3N0YXRlICpzdGF0ZTtcbiBcdHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzO1xuK1x0dTMyIGluc25fcHJvY2Vzc2VkID0gZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkO1xuIFx0aW50IHJldCwgaTtcbiBcbiBcdGVudi1cdTAwM2VwcmV2X2xpbmZvID0gTlVMTDtcbkBAIC0xODU1Myw5ICsxODU5NiwxOSBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX2NvbW1vbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgc3VicHJvZylcbiBcbiBcdHJldCA9IGRvX2NoZWNrKGVudik7XG4gb3V0OlxuK1x0YWNjb3VudF9jdXJyZW50X3BhdGgoZW52KTtcbiBcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBwb3BfbG9nKVxuIFx0XHRicGZfdmxvZ19yZXNldChcdTAwMjZlbnYtXHUwMDNlbG9nLCAwKTtcbiBcdGZyZWVfc3RhdGVzKGVudik7XG4rXG4rXHQvKlxuK1x0ICogVGhlIG92ZXJyaWRlIGlzIG5lZWRlZCB0byBhY2NvdW50IGZvciBhc3luYyBzdWJwcm9ncmFtcywgd2hpY2hcbitcdCAqIGFyZSB2ZXJpZmllZCB3aXRoIHRoZWlyIG93biBzZXQgb2Ygc3RhY2sgZnJhbWVzIGFuZCB0aHVzIGFyZVxuK1x0ICogbm90IGFjY291bnRlZCBhcyBjYWxsZWVzIGJ5IGFjY291bnRfY3VycmVudF9wYXRoKCkuXG4rXHQgKiBBY2N1bXVsYXRlIHRoZWlyIHRvdGFsIGNvdW50cyBhcyB0b3RhbCBjb3VudHMgb2YgdGhlIG1haW4gb3JcbitcdCAqIGdsb2JhbCBzdWJwcm9nIGhvc3RpbmcgdGhlIGFzeW5jIGNhbGwuXG4rXHQgKi9cbitcdGVudi1cdTAwM2VzdWJwcm9nX2luZm9bc3VicHJvZ10uaW5zbnNfdG90YWwgPSBlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTE4NTg0LDcgKzE4NjM3LDYgQEAgc3RhdGljIGludCBkb19jaGVja19zdWJwcm9ncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0c3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4ID0gZW52LVx1MDAzZXByb2ctXHUwMDNlYXV4O1xuIFx0c3RydWN0IGJwZl9mdW5jX2luZm9fYXV4ICpzdWJfYXV4O1xuIFx0aW50IGksIHJldCwgbmV3X2NudDtcbi1cdHUzMiBpbnNuX3Byb2Nlc3NlZDtcbiBcbiBcdGlmICghYXV4LVx1MDAzZWZ1bmNfaW5mbylcbiBcdFx0cmV0dXJuIDA7XG5AQCAtMTg1OTksOCArMTg2NTEsNiBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXHRcdGlmICghYnBmX3N1YnByb2dfaXNfZ2xvYmFsKGVudiwgaSkpXG4gXHRcdFx0Y29udGludWU7XG4gXG4tXHRcdGluc25fcHJvY2Vzc2VkID0gZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkO1xuLVxuIFx0XHRzdWJfYXV4ID0gc3VicHJvZ19hdXgoZW52LCBpKTtcbiBcdFx0aWYgKCFzdWJfYXV4LVx1MDAzZWNhbGxlZCB8fCBzdWJfYXV4LVx1MDAzZXZlcmlmaWVkKVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTE4NjA4LDcgKzE4NjU4LDYgQEAgc3RhdGljIGludCBkb19jaGVja19zdWJwcm9ncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0XHRlbnYtXHUwMDNlaW5zbl9pZHggPSBlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLnN0YXJ0O1xuIFx0XHRXQVJOX09OX09OQ0UoZW52LVx1MDAzZWluc25faWR4ID09IDApO1xuIFx0XHRyZXQgPSBkb19jaGVja19jb21tb24oZW52LCBpKTtcbi1cdFx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tpXS5pbnNuX3Byb2Nlc3NlZCA9IGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCAtIGluc25fcHJvY2Vzc2VkO1xuIFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fSBlbHNlIGlmIChlbnYtXHUwMDNlbG9nLmxldmVsIFx1MDAyNiBCUEZfTE9HX0xFVkVMKSB7XG5AQCAtMTg2MzUsMTIgKzE4Njg0LDEwIEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcbiBzdGF0aWMgaW50IGRvX2NoZWNrX21haW4oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiB7XG4tXHR1MzIgaW5zbl9wcm9jZXNzZWQgPSBlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQ7XG4gXHRpbnQgcmV0O1xuIFxuIFx0ZW52LVx1MDAzZWluc25faWR4ID0gMDtcbiBcdHJldCA9IGRvX2NoZWNrX2NvbW1vbihlbnYsIDApO1xuLVx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1swXS5pbnNuX3Byb2Nlc3NlZCA9IGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCAtIGluc25fcHJvY2Vzc2VkO1xuIFx0aWYgKCFyZXQpXG4gXHRcdGVudi1cdTAwM2Vwcm9nLVx1MDAzZWF1eC1cdTAwM2VzdGFja19kZXB0aCA9IGVudi1cdTAwM2VzdWJwcm9nX2luZm9bMF0uc3RhY2tfZGVwdGg7XG4gXHRyZXR1cm4gcmV0O1xuQEAgLTE4NjU1LDE1ICsxODcwMiwyMCBAQCBzdGF0aWMgdm9pZCBwcmludF92ZXJpZmljYXRpb25fc3RhdHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdGlmIChlbnYtXHUwMDNlbG9nLmxldmVsIFx1MDAyNiBCUEZfTE9HX1NUQVRTKSB7XG4gXHRcdHZlcmJvc2UoZW52LCBcInZlcmlmaWNhdGlvbiB0aW1lICVsbGQgdXNlY1xcblwiLFxuIFx0XHRcdGRpdl91NjQoZW52LVx1MDAzZXZlcmlmaWNhdGlvbl90aW1lLCAxMDAwKSk7XG4tXHRcdHZlcmJvc2UoZW52LCBcInN0YWNrIGRlcHRoICVkXCIsIGVudi1cdTAwM2VzdWJwcm9nX2luZm9bMF0uc3RhY2tfZGVwdGgpO1xuLVx0XHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBzdWJwcm9nX2NudDsgaSsrKVxuLVx0XHRcdHZlcmJvc2UoZW52LCBcIislZFwiLCBlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLnN0YWNrX2RlcHRoKTtcbi1cdFx0dmVyYm9zZShlbnYsIFwiIG1heCAlZFxcblwiLCBlbnYtXHUwMDNlbWF4X3N0YWNrX2RlcHRoKTtcbi1cdFx0dmVyYm9zZShlbnYsIFwiaW5zbnMgcHJvY2Vzc2VkICVkXCIsIGVudi1cdTAwM2VzdWJwcm9nX2luZm9bMF0uaW5zbl9wcm9jZXNzZWQpO1xuLVx0XHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBzdWJwcm9nX2NudDsgaSsrKVxuLVx0XHRcdGlmIChicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSlcbi1cdFx0XHRcdHZlcmJvc2UoZW52LCBcIislZFwiLCBlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLmluc25fcHJvY2Vzc2VkKTtcbi1cdFx0dmVyYm9zZShlbnYsIFwiXFxuXCIpO1xuK1x0XHR2ZXJib3NlKGVudiwgXCJzdGFjayBkZXB0aCBtYXggJWRcXG5cIiwgZW52LVx1MDAzZW1heF9zdGFja19kZXB0aCk7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHN1YnByb2dfY250OyBpKyspIHtcbitcdFx0XHRjb25zdCBjaGFyICpuYW1lID0gZW52LVx1MDAzZXN1YnByb2dfaW5mb1tpXS5uYW1lO1xuK1x0XHRcdGNvbnN0IGNoYXIgKmtpbmQ7XG4rXG4rXHRcdFx0aWYgKCFuYW1lIHx8ICFuYW1lWzBdKVxuK1x0XHRcdFx0bmFtZSA9IFwiXHUwMDNjdW5rbm93blx1MDAzZVwiO1xuK1x0XHRcdGtpbmQgPSBpID09IDAgPyBcIm1haW5cIiA6XG4rXHRcdFx0ICAgICAgIGJwZl9zdWJwcm9nX2lzX2dsb2JhbChlbnYsIGkpID8gXCJnbG9iYWxcIiA6IFwic3RhdGljXCI7XG4rXHRcdFx0dmVyYm9zZShlbnYsIFwic3VicHJvZyAlZCAoJXMpICVzIGluc25zX3NlbGYgJWQgaW5zbnNfdG90YWwgJWQgc3RhY2sgJWRcXG5cIixcbitcdFx0XHRcdGksIG5hbWUsIGtpbmQsIGVudi1cdTAwM2VzdWJwcm9nX2luZm9baV0uaW5zbnNfc2VsZixcbitcdFx0XHRcdGVudi1cdTAwM2VzdWJwcm9nX2luZm9baV0uaW5zbnNfdG90YWwsXG4rXHRcdFx0XHRlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLnN0YWNrX2RlcHRoKTtcbitcdFx0fVxuIFx0fVxuIFx0dmVyYm9zZShlbnYsIFwicHJvY2Vzc2VkICVkIGluc25zIChsaW1pdCAlZCkgbWF4X3N0YXRlc19wZXJfaW5zbiAlZCBcIlxuIFx0XHRcInRvdGFsX3N0YXRlcyAlZCBwZWFrX3N0YXRlcyAlZCBtYXJrX3JlYWQgJWRcXG5cIixcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xuaW5kZXggNWIyNjVhZjNiMWQ1Ny4uODExM2ZlYTdiYTg2YyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbkBAIC0xMDIsNiArMTAyLDcgQEBcbiAjaW5jbHVkZSBcInZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5za2VsLmhcIlxuICNpbmNsdWRlIFwidmVyaWZpZXJfc3RhY2tfcHRyLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9zdG9yZV9yZWxlYXNlLnNrZWwuaFwiXG4rI2luY2x1ZGUgXCJ2ZXJpZmllcl9zdWJwcm9nX2luc25fc3RhdHMuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInZlcmlmaWVyX3N1YnByb2dfcHJlY2lzaW9uLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9zdWJwcm9nX3RvcG8uc2tlbC5oXCJcbiAjaW5jbHVkZSBcInZlcmlmaWVyX3N1YnJlZy5za2VsLmhcIlxuQEAgLTI2Miw2ICsyNjMsNyBAQCB2b2lkIHRlc3RfdmVyaWZpZXJfc3RhY2tfYXJnKHZvaWQpICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfc3RhY2tfYXJnKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIodm9pZCkgICAgICB7IFJVTih2ZXJpZmllcl9zdGFja19hcmdfb3JkZXIpOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX3N0YWNrX3B0cih2b2lkKSAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N0YWNrX3B0cik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfc3RvcmVfcmVsZWFzZSh2b2lkKSAgICAgICAgeyBSVU4odmVyaWZpZXJfc3RvcmVfcmVsZWFzZSk7IH1cbit2b2lkIHRlc3RfdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzKHZvaWQpICAgeyBSVU4odmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbih2b2lkKSAgICB7IFJVTih2ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfc3VicHJvZ190b3BvKHZvaWQpICAgICAgICB7IFJVTih2ZXJpZmllcl9zdWJwcm9nX3RvcG8pOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX3N1YnJlZyh2b2lkKSAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N1YnJlZyk7IH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXG5pbmRleCBkM2RmN2E5ZjFkOGM4Li4wZWI0OTVjZTg1YzFjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXG5AQCAtMjcsNyArMjcsOCBAQCBfX25ha2VkIHZvaWQgc3RhY2tfb3V0X29mX2JvdW5kcyh2b2lkKVxuIFxuIFNFQyhcInNvY2tldFwiKVxuIF9fZGVzY3JpcHRpb24oXCJ1bmluaXRpYWxpemVkIHN0YWNrMVwiKVxuLV9fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KSBfX21zZyhcInN0YWNrIGRlcHRoIDhcIilcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcbitfX21zZyhcInN1YnByb2cgMCAodW5pbml0aWFsaXplZF9zdGFjazEpIG1haW4ge3suKn19IHN0YWNrIDhcIilcbiBfX2ZhaWx1cmVfdW5wcml2IF9fbXNnX3VucHJpdihcImludmFsaWQgcmVhZCBmcm9tIHN0YWNrXCIpXG4gX19uYWtlZCB2b2lkIHVuaW5pdGlhbGl6ZWRfc3RhY2sxKHZvaWQpXG4ge1xuQEAgLTQ1LDcgKzQ2LDggQEAgX19uYWtlZCB2b2lkIHVuaW5pdGlhbGl6ZWRfc3RhY2sxKHZvaWQpXG4gXG4gU0VDKFwic29ja2V0XCIpXG4gX19kZXNjcmlwdGlvbihcInVuaW5pdGlhbGl6ZWQgc3RhY2syXCIpXG4tX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpIF9fbXNnKFwic3RhY2sgZGVwdGggOFwiKVxuK19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KVxuK19fbXNnKFwic3VicHJvZyAwICh1bmluaXRpYWxpemVkX3N0YWNrMikgbWFpbiBpbnNuc19zZWxmIHt7WzAtOV0rfX0gaW5zbnNfdG90YWwge3tbMC05XSt9fSBzdGFjayA4XCIpXG4gX19mYWlsdXJlX3VucHJpdiBfX21zZ191bnByaXYoXCJpbnZhbGlkIHJlYWQgZnJvbSBzdGFja1wiKVxuIF9fbmFrZWQgdm9pZCB1bmluaXRpYWxpemVkX3N0YWNrMih2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbmluZGV4IDgzNzA3ZmFlYTA0OTkuLjRjZmFhNmI0YWI0MDUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuY1xuQEAgLTEwLDcgKzEwLDggQEBcbiBcbiBTRUMoXCJyYXdfdHBcIilcbiBfX2FyY2hfeDg2XzY0XG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCA4XCIpXG4rX19sb2dfbGV2ZWwoNClcbitfX21zZyhcInN1YnByb2cgMCAoc2ltcGxlKSBtYWluIGluc25zX3NlbGYge3tbMC05XSt9fSBpbnNuc190b3RhbCB7e1swLTldK319IHN0YWNrIDhcIilcbiBfX3hsYXRlZChcIjQ6IHI1ID0gNVwiKVxuIF9feGxhdGVkKFwiNTogcjAgPSBcIilcbiBfX3hsYXRlZChcIjY6IHIwID0gXHUwMDI2KHZvaWQgX19wZXJjcHUgKikocjApXCIpXG5AQCAtOTYsNyArOTcsOCBAQCBfX25ha2VkIHZvaWQgY2FuYXJ5X3plcm9fc3BpbGxzKHZvaWQpXG4gXG4gU0VDKFwicmF3X3RwXCIpXG4gX19hcmNoX3g4Nl82NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwic3RhY2sgZGVwdGggMTZcIilcbitfX2xvZ19sZXZlbCg0KVxuK19fbXNnKFwic3VicHJvZyAwICh3cm9uZ19yZWdfaW5fcGF0dGVybjEpIG1haW4ge3suKn19IHN0YWNrIDE2XCIpXG4gX194bGF0ZWQoXCIxOiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxXCIpXG4gX194bGF0ZWQoXCIuLi5cIilcbiBfX3hsYXRlZChcIjM6IHIwID0gXHUwMDI2KHZvaWQgX19wZXJjcHUgKikocjApXCIpXG5AQCAtNTk4LDcgKzYwMCw4IEBAIF9fbmFrZWQgc3RhdGljIHZvaWQgc3VicHJvZ3NfdXNlX2luZGVwZW5kZW50X29mZnNldHNfYXV4KHZvaWQpXG4gXG4gU0VDKFwicmF3X3RwXCIpXG4gX19hcmNoX3g4Nl82NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwic3RhY2sgZGVwdGggOFwiKVxuK19fbG9nX2xldmVsKDQpXG4rX19tc2coXCJzdWJwcm9nIDAgKGhlbHBlcl9jYWxsX2RvZXNfbm90X3ByZXZlbnRfYnBmX2Zhc3RjYWxsKSBtYWluIHt7Lip9fSBzdGFjayA4XCIpXG4gX194bGF0ZWQoXCIyOiByMCA9IFx1MDAyNih2b2lkIF9fcGVyY3B1ICopKHIwKVwiKVxuIF9fc3VjY2Vzc1xuIF9fbmFrZWQgdm9pZCBoZWxwZXJfY2FsbF9kb2VzX25vdF9wcmV2ZW50X2JwZl9mYXN0Y2FsbCh2b2lkKVxuQEAgLTYyMCw3ICs2MjMsOCBAQCBfX25ha2VkIHZvaWQgaGVscGVyX2NhbGxfZG9lc19ub3RfcHJldmVudF9icGZfZmFzdGNhbGwodm9pZClcbiBcbiBTRUMoXCJyYXdfdHBcIilcbiBfX2FyY2hfeDg2XzY0XG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCAyNFwiKVxuK19fbG9nX2xldmVsKDQpXG4rX19tc2coXCJzdWJwcm9nIDAgKG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCkgbWFpbiB7ey4qfX0gc3RhY2sgMjRcIilcbiAvKiBtYXlfZ290byBjb3VudGVyIGF0IC0yNCAqL1xuIF9feGxhdGVkKFwiMDogKih1NjQgKikocjEwIC0yNCkgPVwiKVxuIC8qIG1heV9nb3RvIHRpbWVzdGFtcCBhdCAtMTYgKi9cbkBAIC02NjEsNyArNjY1LDggQEAgX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCh2b2lkKVxuIFNFQyhcInJhd190cFwiKVxuIF9fYXJjaF9hcm02NFxuIF9fYXJjaF9yaXNjdjY0XG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCAyNFwiKVxuK19fbG9nX2xldmVsKDQpXG4rX19tc2coXCJzdWJwcm9nIDAgKG1heV9nb3RvX2ludGVyYWN0aW9uKSBtYWluIHt7Lip9fSBzdGFjayAyNFwiKVxuIC8qIG1heV9nb3RvIGNvdW50ZXIgYXQgLTI0ICovXG4gX194bGF0ZWQoXCIwOiAqKHU2NCAqKShyMTAgLTI0KSA9XCIpXG4gLyogbWF5X2dvdG8gdGltZXN0YW1wIGF0IC0xNiAqL1xuQEAgLTcwOCw3ICs3MTMsOSBAQCBfX25ha2VkIHN0YXRpYyB2b2lkIGR1bW15X2xvb3BfY2FsbGJhY2sodm9pZClcbiBcbiBTRUMoXCJyYXdfdHBcIilcbiBfX2FyY2hfeDg2XzY0XG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCAzMiswXCIpXG4rX19sb2dfbGV2ZWwoNClcbitfX21zZyhcInN1YnByb2cgMCAoYnBmX2xvb3BfaW50ZXJhY3Rpb24xKSBtYWluIHt7Lip9fSBzdGFjayAzMlwiKVxuK19fbXNnKFwic3VicHJvZyAxIChkdW1teV9sb29wX2NhbGxiYWNrKSBzdGF0aWMge3suKn19IHN0YWNrIDBcIilcbiBfX3hsYXRlZChcIjI6IHIxID0gMVwiKVxuIF9feGxhdGVkKFwiMzogcjAgPVwiKVxuIF9feGxhdGVkKFwiNDogcjAgPSBcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcIilcbkBAIC03NTYsNyArNzYzLDkgQEAgX19uYWtlZCBpbnQgYnBmX2xvb3BfaW50ZXJhY3Rpb24xKHZvaWQpXG4gXG4gU0VDKFwicmF3X3RwXCIpXG4gX19hcmNoX3g4Nl82NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwic3RhY2sgZGVwdGggNDArMFwiKVxuK19fbG9nX2xldmVsKDQpXG4rX19tc2coXCJzdWJwcm9nIDAgKGJwZl9sb29wX2ludGVyYWN0aW9uMikgbWFpbiB7ey4qfX0gc3RhY2sgNDBcIilcbitfX21zZyhcInN1YnByb2cgMSAoZHVtbXlfbG9vcF9jYWxsYmFjaykgc3RhdGljIHt7Lip9fSBzdGFjayAwXCIpXG4gLyogY2FsbCBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQgKi9cbiBfX3hsYXRlZChcIjI6IHIxID0gNDJcIilcbiBfX3hsYXRlZChcIjM6IHIwID1cIilcbkBAIC04MDAsNyArODA5LDEwIEBAIF9fbmFrZWQgaW50IGJwZl9sb29wX2ludGVyYWN0aW9uMih2b2lkKVxuIFxuIFNFQyhcInJhd190cFwiKVxuIF9fYXJjaF94ODZfNjRcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcInN0YWNrIGRlcHRoIDUxMiswIG1heCA1MTJcIilcbitfX2xvZ19sZXZlbCg0KVxuK19fbXNnKFwic3RhY2sgZGVwdGggbWF4IDUxMlwiKVxuK19fbXNnKFwic3VicHJvZyAwIChjdW11bGF0aXZlX3N0YWNrX2RlcHRoKSBtYWluIHt7Lip9fSBzdGFjayA1MTJcIilcbitfX21zZyhcInN1YnByb2cgMSAoY3VtdWxhdGl2ZV9zdGFja19kZXB0aF9zdWJwcm9nKSBzdGF0aWMge3suKn19IHN0YWNrIDBcIilcbiAvKiBqdXN0IHRvIHByaW50IHhsYXRlZCB2ZXJzaW9uIHdoZW4gZGVidWdnaW5nICovXG4gX194bGF0ZWQoXCJyMCA9IFx1MDAyNih2b2lkIF9fcGVyY3B1ICopKHIwKVwiKVxuIF9fc3VjY2Vzc1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuY1xuaW5kZXggNjdkYzM1MmFkZGZkNy4uN2I2NWVlYTk3ZWJjMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2dsb2JhbF9zdWJwcm9ncy5jXG5AQCAtNTIsNyArNTIsMTAgQEAgX19tc2coXCIoJ2dsb2JhbF9jYWxsc19nb29kX29ubHknKSBpcyBnbG9iYWwgYW5kIGFzc3VtZWQgdmFsaWQuXCIpXG4gLyogZXZlbnR1YWxseSBnbG9iYWxfZ29vZCgpIGlzIHRyYW5zaXRpdmVseSB2YWxpZGF0ZWQgYXMgd2VsbCAqL1xuIF9fbXNnKFwiVmFsaWRhdGluZyBnbG9iYWxfZ29vZCgpIGZ1bmNcIilcbiBfX21zZyhcIignZ2xvYmFsX2dvb2QnKSBpcyBzYWZlIGZvciBhbnkgYXJncyB0aGF0IG1hdGNoIGl0cyBwcm90b3R5cGVcIilcbi1fX21zZyhcImluc25zIHByb2Nlc3NlZCB7e1swLTldK1xcXFwrWzAtOV0rXFxcXCtbMC05XSskfX1cIilcbitfX21zZyhcInN1YnByb2cgMCAoY2hhaW5lZF9nbG9iYWxfZnVuY19jYWxsc19zdWNjZXNzKSBtYWluIGluc25zX3NlbGYgNyBpbnNuc190b3RhbCA3IHN0YWNrXCIpXG4rX19tc2coXCJzdWJwcm9nIHt7WzAtOV0rfX0gKGdsb2JhbF9jYWxsc19nb29kX29ubHkpIGdsb2JhbCBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgMiBzdGFja1wiKVxuK19fbXNnKFwic3VicHJvZyB7e1swLTldK319IChnbG9iYWxfZ29vZCkgZ2xvYmFsIGluc25zX3NlbGYgNSBpbnNuc190b3RhbCA1IHN0YWNrXCIpXG4rX19tc2coXCJwcm9jZXNzZWQgMTQgaW5zbnNcIilcbiBpbnQgY2hhaW5lZF9nbG9iYWxfZnVuY19jYWxsc19zdWNjZXNzKHZvaWQpXG4ge1xuIFx0aW50IHN1bSA9IDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcbmluZGV4IGJiODIwNmUxMDg4MGMuLmVhMGE3ZTczMzMxZGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXG5AQCAtODYsNyArODYsOSBAQCBfX25ha2VkIHN0YXRpYyB2b2lkIGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZyh2b2lkKVxuIFNFQyhcImtwcm9iZVwiKVxuIF9fZGVzY3JpcHRpb24oXCJQcml2YXRlIHN0YWNrLCBzdWJ0cmVlIFx1MDAzZSBNQVhfQlBGX1NUQUNLXCIpXG4gX19zdWNjZXNzXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCA1MTIrMzIgbWF4IDUxMlwiKVxuK19fbG9nX2xldmVsKDQpIF9fbXNnKFwic3RhY2sgZGVwdGggbWF4IDUxMlwiKVxuK19fbXNnKFwic3VicHJvZyAwIChwcml2YXRlX3N0YWNrX25lc3RlZF8xKSBtYWluIHt7Lip9fSBzdGFjayA1MTJcIilcbitfX21zZyhcInN1YnByb2cgMSAoY3VtdWxhdGl2ZV9zdGFja19kZXB0aF9zdWJwcm9nKSBzdGF0aWMge3suKn19IHN0YWNrIDMyXCIpXG4gX19hcmNoX3g4Nl82NFxuIC8qIHByaXZhdGUgc3RhY2sgZnAgZm9yIHRoZSBtYWluIHByb2cgKi9cbiBfX2ppdGVkKFwiXHRtb3ZhYnNxXHQkMHh7ey4qfX0sICVyOVwiKVxuQEAgLTMzMSw3ICszMzMsMTEgQEAgU0VDKFwiZmVudHJ5L2JwZl9mZW50cnlfdGVzdDlcIilcbiBfX2Rlc2NyaXB0aW9uKFwiUHJpdmF0ZSBzdGFjaywgYXN5bmMgY2FsbGJhY2ssIHBvdGVudGlhbCBuZXN0aW5nXCIpXG4gX19zdWNjZXNzIF9fcmV0dmFsKDApXG4gX19sb2FkX2lmX0pJVGVkKClcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcInN0YWNrIGRlcHRoIDgrMCsyNTYrMCBtYXggMjcyXCIpXG4rX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCBtYXggMjcyXCIpXG4rX19tc2coXCJzdWJwcm9nIDAgKHByaXZhdGVfc3RhY2tfYXN5bmNfY2FsbGJhY2tfMikgbWFpbiB7ey4qfX0gc3RhY2sgOFwiKVxuK19fbXNnKFwic3VicHJvZyAxICh0aW1lcl9jYjEpIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFwiKVxuK19fbXNnKFwic3VicHJvZyAyIChzdWJwcm9nMSkgc3RhdGljIHt7Lip9fSBzdGFjayAyNTZcIilcbitfX21zZyhcInN1YnByb2cgMyAoc3VicHJvZzIpIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFwiKVxuIF9fYXJjaF94ODZfNjRcbiBfX2ppdGVkKFwiXHRzdWJxXHQkMHgxMDAsICVyc3BcIilcbiBfX2FyY2hfYXJtNjRcbkBAIC0zNTUsNyArMzYxLDEwIEBAIGludCBwcml2YXRlX3N0YWNrX2FzeW5jX2NhbGxiYWNrXzIodm9pZClcbiBTRUMoXCJmZW50cnkvYnBmX2ZlbnRyeV90ZXN0OVwiKVxuIF9fZGVzY3JpcHRpb24oXCJwcml2YXRlIHN0YWNrLCBtYXggc3RhY2sgZGVwdGggaXMgcHJpdmF0ZSBzdGFja1wiKVxuIF9fc3VjY2Vzc1xuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwic3RhY2sgZGVwdGggOCsyNTYrMCBtYXggMjU2XCIpXG4rX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCBtYXggMjU2XCIpXG4rX19tc2coXCJzdWJwcm9nIDAgKHByaXZhdGVfc3RhY2tfbWF4X2RlcHRoKSBtYWluIHt7Lip9fSBzdGFjayA4XCIpXG4rX19tc2coXCJzdWJwcm9nIDEgKHN1YnByb2cxKSBzdGF0aWMgaW5zbnNfc2VsZiB7e1swLTldK319IGluc25zX3RvdGFsIHt7WzAtOV0rfX0gc3RhY2sgMjU2XCIpXG4rX19tc2coXCJzdWJwcm9nIDIgKHN1YnByb2cyKSBzdGF0aWMgaW5zbnNfc2VsZiB7e1swLTldK319IGluc25zX3RvdGFsIHt7WzAtOV0rfX0gc3RhY2sgMFwiKVxuIGludCBwcml2YXRlX3N0YWNrX21heF9kZXB0aCh2b2lkKVxuIHtcbiBcdGludCB4ID0gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44ZjYwODJmZGI1Yzg0XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzLmNcbkBAIC0wLDAgKzEsMjIzIEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitcbisjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuKyNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4rXG4rc3RydWN0IHRpbWVyX3ZhbHVlIHtcbitcdHN0cnVjdCBicGZfdGltZXIgdGltZXI7XG4rfTtcbitcbitzdHJ1Y3Qge1xuK1x0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUlJBWSk7XG4rXHRfX3VpbnQobWF4X2VudHJpZXMsIDEpO1xuK1x0X190eXBlKGtleSwgX191MzIpO1xuK1x0X190eXBlKHZhbHVlLCBzdHJ1Y3QgdGltZXJfdmFsdWUpO1xuK30gdGltZXJfbWFwIFNFQyhcIi5tYXBzXCIpO1xuK1xuK1NFQyhcIj9yYXdfdHBcIilcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcbitfX21zZyhcInN1YnByb2cgMCAoc3RhdHNfbWFpbl9vbmx5KSBtYWluIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCAyIHN0YWNrIDBcIilcbitfX21zZyhcInByb2Nlc3NlZCAyIGluc25zXCIpXG4rX19uYWtlZCBpbnQgc3RhdHNfbWFpbl9vbmx5KHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcbitcdFx0XCJyMCA9IDA7XCJcbitcdFx0XCJleGl0O1wiXG4rXHQpO1xuK31cbitcbitfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkXG4rc3RhdGljIGludCBzdGF0c19jaGFpbl9sZWFmKHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcbitcdFx0XCJyMCA9IDA7XCJcbitcdFx0XCJleGl0O1wiXG4rXHQpO1xuK31cbitcbitfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkXG4rc3RhdGljIGludCBzdGF0c19jaGFpbl9wYXJlbnQodm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFxuK1x0XHRcImNhbGwgc3RhdHNfY2hhaW5fbGVhZjtcIlxuK1x0XHRcImV4aXQ7XCJcbitcdCk7XG4rfVxuK1xuK1NFQyhcIj9yYXdfdHBcIilcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcbisvKlxuKyAqIHNlbGY6IDIgKyAyICsgMiA9IDZcbisgKiB0b3RhbHM6IGxlYWYgMiwgcGFyZW50IDIgKyAyID0gNCwgbWFpbiAyICsgNCA9IDZcbisgKi9cbitfX21zZyhcInN1YnByb2cgMCAoc3RhdHNfc3RhdGljX2NoYWluKSBtYWluIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCA2IHN0YWNrIDBcIilcbitfX21zZyhcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfY2hhaW5fcGFyZW50KSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDQgc3RhY2sgMFwiKVxuK19fbXNnKFwic3VicHJvZyB7e1swLTldK319IChzdGF0c19jaGFpbl9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMFwiKVxuK19fbXNnKFwicHJvY2Vzc2VkIDYgaW5zbnNcIilcbitfX25ha2VkIGludCBzdGF0c19zdGF0aWNfY2hhaW4odm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFxuK1x0XHRcImNhbGwgc3RhdHNfY2hhaW5fcGFyZW50O1wiXG4rXHRcdFwiZXhpdDtcIlxuK1x0KTtcbit9XG4rXG4rX19uYWtlZCBfX25vaW5saW5lIF9fdXNlZFxuK3N0YXRpYyBpbnQgc3RhdHNfc2hhcmVkX2xlYWYodm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFxuK1x0XHRcInIwID0gMDtcIlxuK1x0XHRcImV4aXQ7XCJcbitcdCk7XG4rfVxuK1xuK19fbmFrZWQgX19ub2lubGluZSBfX3VzZWRcbitpbnQgc3RhdHNfZ2xvYmFsX3Jvb3Qodm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFxuK1x0XHRcImNhbGwgc3RhdHNfc2hhcmVkX2xlYWY7XCJcbitcdFx0XCJleGl0O1wiXG4rXHQpO1xuK31cbitcbitTRUMoXCI/cmF3X3RwXCIpXG4rX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpXG4rLypcbisgKiBzdGF0c19zaGFyZWRfbGVhZiBpcyBleHBsb3JlZCBvbmNlIHVuZGVyIGVhY2ggaW5kZXBlbmRlbnQgcm9vdC5cbisgKiBzZWxmOiBtYWluIDMgKyBsZWFmIDQgKyBnbG9iYWwgMiA9IDlcbisgKiByb290IHRvdGFsczogbWFpbiA1ICsgZ2xvYmFsIDQgPSA5XG4rICovXG4rX19tc2coXCJzdWJwcm9nIDAgKHN0YXRzX3NoYXJlZF9yb290cykgbWFpbiBpbnNuc19zZWxmIDMgaW5zbnNfdG90YWwgNSBzdGFjayAwXCIpXG4rX19tc2coXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX3NoYXJlZF9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiA0IGluc25zX3RvdGFsIDQgc3RhY2sgMFwiKVxuK19fbXNnKFwic3VicHJvZyB7e1swLTldK319IChzdGF0c19nbG9iYWxfcm9vdCkgZ2xvYmFsIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCA0IHN0YWNrIDBcIilcbitfX21zZyhcInByb2Nlc3NlZCA5IGluc25zXCIpXG4rX19uYWtlZCBpbnQgc3RhdHNfc2hhcmVkX3Jvb3RzKHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcbitcdFx0XCJjYWxsIHN0YXRzX3NoYXJlZF9sZWFmO1wiXG4rXHRcdFwiY2FsbCBzdGF0c19nbG9iYWxfcm9vdDtcIlxuK1x0XHRcImV4aXQ7XCJcbitcdCk7XG4rfVxuK1xuK19fbm9pbmxpbmUgX191c2VkXG4rc3RhdGljIGludCBzdGF0c19hc3luY19sZWFmKHZvaWQgKm1hcCwgX191MzIgKmtleSwgc3RydWN0IGJwZl90aW1lciAqdGltZXIpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK19fbm9pbmxpbmUgX191c2VkXG4rc3RhdGljIF9fdTY0IHN0YXRzX2FzeW5jX3NjaGVkdWxlKHN0cnVjdCBicGZfbWFwICptYXAsIF9fdTMyICprZXksXG4rXHRcdFx0XHQgIHN0cnVjdCB0aW1lcl92YWx1ZSAqdmFsdWUsIHZvaWQgKmN0eClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFxuK1x0XHRcInIxID0gJVt0aW1lcl07XCJcbitcdFx0XCJyMiA9ICVbc3RhdHNfYXN5bmNfbGVhZl07XCJcbitcdFx0XCJjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107XCJcbitcdFx0OlxuK1x0XHQ6IFt0aW1lcl0gXCJyXCIgKHZhbHVlKSxcbitcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfbGVhZiksXG4rXHRcdCAgX19pbW0oYnBmX3RpbWVyX3NldF9jYWxsYmFjaylcbitcdFx0OiBfX2Nsb2JiZXJfY29tbW9uXG4rXHQpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcIj9yYXdfdHBcIilcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcbisvKlxuKyAqIHNlbGY6IDkgKyA3ICsgMiA9IDE4XG4rICogdG90YWxzOiBsZWFmIDIsIHNjaGVkdWxlciA3LCBtYWluIHJvb3QgMThcbisgKi9cbitfX21zZyhcInN1YnByb2cgMCAoc3RhdHNfYXN5bmNfZGlyZWN0KSBtYWluIGluc25zX3NlbGYgOSBpbnNuc190b3RhbCAxOCBzdGFjayAwXCIpXG4rX19tc2coXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX2FzeW5jX3NjaGVkdWxlKSBzdGF0aWMgaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2sgMFwiKVxuK19fbXNnKFwic3VicHJvZyB7e1swLTldK319IChzdGF0c19hc3luY19sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMFwiKVxuK19fbXNnKFwicHJvY2Vzc2VkIDE4IGluc25zXCIpXG4rX19uYWtlZCBpbnQgc3RhdHNfYXN5bmNfZGlyZWN0KHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcbitcdFx0XCJyMSA9ICVbdGltZXJfbWFwXSBsbDtcIlxuK1x0XHRcInIyID0gJVtzdGF0c19hc3luY19zY2hlZHVsZV07XCJcbitcdFx0XCJyMyA9IDA7XCJcbitcdFx0XCJyNCA9IDA7XCJcbitcdFx0XCJjYWxsICVbYnBmX2Zvcl9lYWNoX21hcF9lbGVtXTtcIlxuK1x0XHRcInIwID0gMDtcIlxuK1x0XHRcImV4aXQ7XCJcbitcdFx0OlxuK1x0XHQ6IF9faW1tX2FkZHIodGltZXJfbWFwKSxcbitcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfc2NoZWR1bGUpLFxuK1x0XHQgIF9faW1tKGJwZl9mb3JfZWFjaF9tYXBfZWxlbSlcbitcdFx0OiBfX2Nsb2JiZXJfY29tbW9uXG4rXHQpO1xuK31cbitcbitfX25vaW5saW5lIF9fdXNlZFxuK3N0YXRpYyBpbnQgc3RhdHNfYXN5bmNfbmVzdGVkX2xlYWYodm9pZCAqbWFwLCBfX3UzMiAqa2V5LCBzdHJ1Y3QgYnBmX3RpbWVyICp0aW1lcilcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rX19ub2lubGluZSBfX3VzZWRcbitzdGF0aWMgaW50IHN0YXRzX2FzeW5jX291dGVyKHZvaWQgKm1hcCwgX191MzIgKmtleSwgc3RydWN0IGJwZl90aW1lciAqdGltZXIpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcbitcdFx0XCJyMSA9ICVbdGltZXJdO1wiXG4rXHRcdFwicjIgPSAlW3N0YXRzX2FzeW5jX25lc3RlZF9sZWFmXTtcIlxuK1x0XHRcImNhbGwgJVticGZfdGltZXJfc2V0X2NhbGxiYWNrXTtcIlxuK1x0XHQ6XG4rXHRcdDogW3RpbWVyXSBcInJcIiAodGltZXIpLFxuK1x0XHQgIF9faW1tX3B0cihzdGF0c19hc3luY19uZXN0ZWRfbGVhZiksXG4rXHRcdCAgX19pbW0oYnBmX3RpbWVyX3NldF9jYWxsYmFjaylcbitcdFx0OiBfX2Nsb2JiZXJfY29tbW9uXG4rXHQpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK19fbm9pbmxpbmUgX191c2VkXG4rc3RhdGljIF9fdTY0IHN0YXRzX2FzeW5jX25lc3RlZF9zY2hlZHVsZShzdHJ1Y3QgYnBmX21hcCAqbWFwLCBfX3UzMiAqa2V5LFxuK1x0XHRcdFx0XHQgc3RydWN0IHRpbWVyX3ZhbHVlICp2YWx1ZSwgdm9pZCAqY3R4KVxuK3tcbitcdGFzbSB2b2xhdGlsZSAoXG4rXHRcdFwicjEgPSAlW3RpbWVyXTtcIlxuK1x0XHRcInIyID0gJVtzdGF0c19hc3luY19vdXRlcl07XCJcbitcdFx0XCJjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107XCJcbitcdFx0OlxuK1x0XHQ6IFt0aW1lcl0gXCJyXCIgKHZhbHVlKSxcbitcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfb3V0ZXIpLFxuK1x0XHQgIF9faW1tKGJwZl90aW1lcl9zZXRfY2FsbGJhY2spXG4rXHRcdDogX19jbG9iYmVyX2NvbW1vblxuK1x0KTtcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCI/cmF3X3RwXCIpXG4rX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpXG4rLypcbisgKiBzZWxmOiA5ICsgNyArIDcgKyAyID0gMjVcbisgKiB0b3RhbHM6IGxlYWYgMiwgb3V0ZXIgNywgc2NoZWR1bGVyIDcsIG1haW4gcm9vdCAyNVxuKyAqL1xuK19fbXNnKFwic3VicHJvZyAwIChzdGF0c19hc3luY19uZXN0ZWQpIG1haW4gaW5zbnNfc2VsZiA5IGluc25zX3RvdGFsIDI1IHN0YWNrIDBcIilcbitfX21zZyhcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfYXN5bmNfbmVzdGVkX3NjaGVkdWxlKSBzdGF0aWMgaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2sgMFwiKVxuK19fbXNnKFwic3VicHJvZyB7e1swLTldK319IChzdGF0c19hc3luY19vdXRlcikgc3RhdGljIGluc25zX3NlbGYgNyBpbnNuc190b3RhbCA3IHN0YWNrIDBcIilcbitfX21zZyhcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfYXN5bmNfbmVzdGVkX2xlYWYpIHN0YXRpYyBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgMiBzdGFjayAwXCIpXG4rX19tc2coXCJwcm9jZXNzZWQgMjUgaW5zbnNcIilcbitfX25ha2VkIGludCBzdGF0c19hc3luY19uZXN0ZWQodm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFxuK1x0XHRcInIxID0gJVt0aW1lcl9tYXBdIGxsO1wiXG4rXHRcdFwicjIgPSAlW3N0YXRzX2FzeW5jX25lc3RlZF9zY2hlZHVsZV07XCJcbitcdFx0XCJyMyA9IDA7XCJcbitcdFx0XCJyNCA9IDA7XCJcbitcdFx0XCJjYWxsICVbYnBmX2Zvcl9lYWNoX21hcF9lbGVtXTtcIlxuK1x0XHRcInIwID0gMDtcIlxuK1x0XHRcImV4aXQ7XCJcbitcdFx0OlxuK1x0XHQ6IF9faW1tX2FkZHIodGltZXJfbWFwKSxcbitcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfbmVzdGVkX3NjaGVkdWxlKSxcbitcdFx0ICBfX2ltbShicGZfZm9yX2VhY2hfbWFwX2VsZW0pXG4rXHRcdDogX19jbG9iYmVyX2NvbW1vblxuK1x0KTtcbit9XG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXG5pbmRleCAyNGNkMGE3NjM2NzMwLi5hNjNlMzM2NzUwOTE4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuQEAgLTE5OCw3ICsxOTgsOCBAQCBfX3N1Y2Nlc3NcbiAvKiBDaGVjayB0aGF0IHRoZSBtYXhpbXVtIHN0YWNrIGRlcHRoIGlzIGNvcnJlY3RseSBtYWludGFpbmVkIGFjY29yZGluZyB0byB0aGVcbiAgKiBtYXhpbXVtIHBvc3NpYmxlIHZhcmlhYmxlIG9mZnNldC5cbiAgKi9cbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcInN0YWNrIGRlcHRoIDE2XCIpXG4rX19sb2dfbGV2ZWwoNClcbitfX21zZyhcInN1YnByb2cgMCAoc3RhY2tfd3JpdGVfcHJpdl92c191bnByaXYpIG1haW4ge3suKn19IHN0YWNrIDE2XCIpXG4gX19mYWlsdXJlX3VucHJpdlxuIC8qIFZhcmlhYmxlIHN0YWNrIGFjY2VzcyBpcyByZWplY3RlZCBmb3IgdW5wcml2aWxlZ2VkLlxuICAqL1xuQEAgLTIzOCw3ICsyMzksOCBAQCBfX3N1Y2Nlc3NcbiAvKiBDaGVjayB0aGF0IHRoZSBtYXhpbXVtIHN0YWNrIGRlcHRoIGlzIGNvcnJlY3RseSBtYWludGFpbmVkIGFjY29yZGluZyB0byB0aGVcbiAgKiBtYXhpbXVtIHBvc3NpYmxlIHZhcmlhYmxlIG9mZnNldC5cbiAgKi9cbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcInN0YWNrIGRlcHRoIDE2XCIpXG4rX19sb2dfbGV2ZWwoNClcbitfX21zZyhcInN1YnByb2cgMCAoc3RhY2tfd3JpdGVfZm9sbG93ZWRfYnlfcmVhZCkgbWFpbiB7ey4qfX0gc3RhY2sgMTZcIilcbiBfX2ZhaWx1cmVfdW5wcml2XG4gX19tc2dfdW5wcml2KFwiUjIgdmFyaWFibGUgc3RhY2sgYWNjZXNzIHByb2hpYml0ZWQgZm9yICFyb290XCIpXG4gX19yZXR2YWwoMClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfdmVyaWZpZXIuY1xuaW5kZXggYThhZTAzYzU3YmJhZS4uYmZmYjczNjA0MzRjNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3ZlcmlmaWVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3ZlcmlmaWVyLmNcbkBAIC0xNTYwLDcgKzE1NjAsNyBAQCBzdGF0aWMgdm9pZCBkb190ZXN0X3NpbmdsZShzdHJ1Y3QgYnBmX3Rlc3QgKnRlc3QsIGJvb2wgdW5wcml2LFxuIFxuIFx0b3B0cy5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IHRlc3QtXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGU7XG4gXHRpZiAoZXhwZWN0ZWRfcmV0ID09IFZFUkJPU0VfQUNDRVBUKVxuLVx0XHRvcHRzLmxvZ19sZXZlbCA9IDI7XG4rXHRcdG9wdHMubG9nX2xldmVsID0gMiB8IDQ7XG4gXHRlbHNlIGlmICh2ZXJib3NlKVxuIFx0XHRvcHRzLmxvZ19sZXZlbCA9IHZlcmlmX2xvZ19sZXZlbCB8IDQ7IC8qIGZvcmNlIHN0YXRzICovXG4gXHRlbHNlXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL2NhbGxzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvY2FsbHMuY1xuaW5kZXggOGNkNjI2ZTA0NTUxNS4uZWI2ZTNiYWVmNDEyYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9jYWxscy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvY2FsbHMuY1xuQEAgLTEwOTEsNyArMTA5MSwxNyBAQFxuIFx0Lyogc3RhY2tfbWFpbj0zMiwgc3RhY2tfQT0yNTYsIHN0YWNrX0I9NjRcbiBcdCAqIGFuZCBtYXgobWFpbitBLCBtYWluK0ErQikgXHUwMDNjIDUxMlxuIFx0ICovXG4tXHQucmVzdWx0ID0gQUNDRVBULFxuK1x0LnJlc3VsdCA9IFZFUkJPU0VfQUNDRVBULFxuK1x0LmVycnN0ciA9IFwic3RhY2sgZGVwdGggbWF4IDM1MlxcdFwiXG4rXHRcdCAgXCJzdWJwcm9nIDAgKFx1MDAzY3Vua25vd25cdTAwM2UpIG1haW4gaW5zbnNfc2VsZiBcXHRcIlxuK1x0XHQgIFwiIGluc25zX3RvdGFsIFxcdFwiXG4rXHRcdCAgXCIgc3RhY2sgMzJcXHRcIlxuK1x0XHQgIFwic3VicHJvZyAxIChcdTAwM2N1bmtub3duXHUwMDNlKSBzdGF0aWMgaW5zbnNfc2VsZiBcXHRcIlxuK1x0XHQgIFwiIGluc25zX3RvdGFsIFxcdFwiXG4rXHRcdCAgXCIgc3RhY2sgMjU2XFx0XCJcbitcdFx0ICBcInN1YnByb2cgMiAoXHUwMDNjdW5rbm93blx1MDAzZSkgc3RhdGljIGluc25zX3NlbGYgXFx0XCJcbitcdFx0ICBcIiBpbnNuc190b3RhbCBcXHRcIlxuK1x0XHQgIFwiIHN0YWNrIDY0XCIsXG4gfSxcbiB7XG4gXHRcImNhbGxzOiBzdGFjayBkZXB0aCBjaGVjayB1c2luZyB0aHJlZSBmcmFtZXMuIHRlc3QyXCIsXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuaW5kZXggYzljMjU3Nzg0ZWUzZC4uNWMwZWMzZWRjZTcyMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuQEAgLTk5MywxMyArOTkzLDE1IEBAIHN0YXRpYyB2b2lkIGZyZWVfdmVyaWZfc3RhdHMoc3RydWN0IHZlcmlmX3N0YXRzICpzdGF0cywgc2l6ZV90IHN0YXRfY250KVxuIFxuIHN0YXRpYyBjaGFyIHZlcmlmX2xvZ19idWZbNjQgKiAxMDI0XTtcbiBcbi0jZGVmaW5lIE1BWF9QQVJTRURfTE9HX0xJTkVTIDEwMFxuKy8qIEtlZXAgcm9vbSBmb3IgYWxsIDI1NiBzdWJwcm9ncmFtIHJlY29yZHMgYW5kIHRyYWlsaW5nIHN0YXRpc3RpY3MuICovXG4rI2RlZmluZSBNQVhfUEFSU0VEX0xPR19MSU5FUyAzMDBcbiBcbiBzdGF0aWMgaW50IHBhcnNlX3ZlcmlmX2xvZyhjaGFyICogY29uc3QgYnVmLCBzaXplX3QgYnVmX3N6LCBzdHJ1Y3QgdmVyaWZfc3RhdHMgKnMpXG4ge1xuIFx0Y29uc3QgY2hhciAqY3VyO1xuLVx0aW50IHBvcywgbGluZXMsIHN1Yl9zdGFjaywgY250ID0gMDtcbi1cdGNoYXIgKnN0YXRlID0gTlVMTCwgKnRva2VuLCBzdGFja1s1MTJdO1xuK1x0bG9uZyBzdWJfc3RhY2s7XG4rXHRpbnQgcG9zLCBsaW5lcywgY250ID0gMDtcbitcdGNoYXIgKnN0YXRlID0gTlVMTCwgKnRva2VuLCBzdGFja1s1MTJdID0ge307XG4gXG4gXHRidWZbYnVmX3N6IC0gMV0gPSAnXFwwJztcbiBcbkBAIC0xMDI1LDExICsxMDI3LDI0IEBAIHN0YXRpYyBpbnQgcGFyc2VfdmVyaWZfbG9nKGNoYXIgKiBjb25zdCBidWYsIHNpemVfdCBidWZfc3osIHN0cnVjdCB2ZXJpZl9zdGF0cyAqXG4gXHRcdFx0XHRcdTAwMjZzLVx1MDAzZXN0YXRzW01BUktfUkVBRF9NQVhfTEVOXSkpXG4gXHRcdFx0Y29udGludWU7XG4gXG4rXHRcdC8qXG4rXHRcdCAqIE5ldyBrZXJuZWxzIGVtaXQgb25lIFwic3VicHJvZyBcdTAwM2NpZFx1MDAzZSAoXHUwMDNjbmFtZVx1MDAzZSkgXHUwMDNja2luZFx1MDAzZVwiIHJlY29yZFxuK1x0XHQgKiBwZXIgc3VicHJvZ3JhbSB3aXRoIHRoZSBzdGFjayBkZXB0aCBhdCB0aGUgZW5kLCB3aGlsZSBvbGRcbitcdFx0ICoga2VybmVscyBlbWl0IGEgc2luZ2xlIFwic3RhY2sgZGVwdGggXHUwMDNjYSsuLi4rblx1MDAzZSBtYXggXHUwMDNjbWF4XHUwMDNlXCJcbitcdFx0ICogbGluZS4gTWF0Y2ggYm90aCBmb3JtYXRzIHNvIHZlcmlzdGF0IHdvcmtzIGFnYWluc3QgZWl0aGVyXG4rXHRcdCAqIGtlcm5lbC5cbitcdFx0ICovXG4rXHRcdGlmIChzc2NhbmYoY3VyLCBcInN0YWNrIGRlcHRoIG1heCAlbGRcIiwgXHUwMDI2cy1cdTAwM2VzdGF0c1tNQVhfU1RBQ0tdKSA9PSAxKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRpZiAoc3NjYW5mKGN1ciwgXCJzdWJwcm9nICUqZCAlKnMgJSpzIGluc25zX3NlbGYgJSpkIGluc25zX3RvdGFsICUqZCBzdGFjayAlbGRcIiwgXHUwMDI2c3ViX3N0YWNrKSA9PSAxKSB7XG4rXHRcdFx0cy1cdTAwM2VzdGF0c1tTVEFDS10gKz0gc3ViX3N0YWNrO1xuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4gXHRcdGlmICgyID09IHNzY2FuZihjdXIsIFwic3RhY2sgZGVwdGggJTUxMXMgbWF4ICVsZFwiLCBzdGFjaywgXHUwMDI2cy1cdTAwM2VzdGF0c1tNQVhfU1RBQ0tdKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcdH1cbiBcdHdoaWxlICgodG9rZW4gPSBzdHJ0b2tfcihjbnQrKyA/IE5VTEwgOiBzdGFjaywgXCIrXCIsIFx1MDAyNnN0YXRlKSkpIHtcbi1cdFx0aWYgKHNzY2FuZih0b2tlbiwgXCIlZFwiLCBcdTAwMjZzdWJfc3RhY2spID09IDApXG4rXHRcdGlmIChzc2NhbmYodG9rZW4sIFwiJWxkXCIsIFx1MDAyNnN1Yl9zdGFjaykgPT0gMClcbiBcdFx0XHRicmVhaztcbiBcdFx0cy1cdTAwM2VzdGF0c1tTVEFDS10gKz0gc3ViX3N0YWNrO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjI6Mzg6MTYuNTIwMjE3MjQyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU4MTk0ODE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipCUEYgVmVyaWZpZXIgSW5zdHJ1Y3Rpb24gQ291bnQgVHJhY2tpbmcqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgZm9jdXNlZCBvbiBpbXByb3ZpbmcgdGhlIHZpc2liaWxpdHkgaW50byBCUEYgdmVyaWZpY2F0aW9uLCBzcGVjaWZpY2FsbHkgYnkgdHJhY2tpbmcgaW5zdHJ1Y3Rpb24gY291bnRzIG9uIGEgcGVyLXN1YnByb2dyYW0gYmFzaXMuIFRoZSBjaGFuZ2VzIGFyZSBjb25jZW50cmF0ZWQgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIHRoZSBhc3NvY2lhdGVkIGhlYWRlciBmaWxlLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgYWRkaW5nIG5ldyBmaWVsZHM6IGBpbnNuc19zdWJ0b3RhbGAgd2l0aGluIGBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGVgLCBhbmQgYGluc25zX3RvdGFsYCBhbmQgYGluc25zX3NlbGZgIHRvIGBzdHJ1Y3QgYnBmX3N1YnByb2dfaW5mb2AuIFRoZSBjb2RlIHVwZGF0ZXMgZXhpc3RpbmcgYWNjb3VudGluZyBmdW5jdGlvbnMgbGlrZSBgYWNjb3VudF9wcm9jZXNzZWRfaW5zbmAsIGBhY2NvdW50X3Byb2Nlc3NlZF9pbnNuc2AsIGFuZCBgYWNjb3VudF9jdXJyZW50X3BhdGhgIHRvIGtlZXAgdGhlc2UgY291bnRzIGFjY3VyYXRlLiBBbmQgbmF0dXJhbGx5LCBgcHJpbnRfdmVyaWZpY2F0aW9uX3N0YXRzYCBpcyBiZWluZyBtb2RpZmllZCB0byByZXBvcnQgdGhpcyBuZXcsIG1vcmUgZ3JhbnVsYXIgZGF0YS4gVGhhdCdzIGEgc29saWQgaW1wcm92ZW1lbnQgZm9yIGRlYnVnZ2luZyBhbmQgcGVyZm9ybWFuY2UgYW5hbHlzaXMuXG5cbkJ1dCwgdGhlIHF1ZXN0aW9uIGlzLCAqZG9lcyB0aGlzIGFmZmVjdCB2ZXJpZmljYXRpb24gbG9naWMgaXRzZWxmPyogSXQncyBjcml0aWNhbCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgYmVoYXZpb3IgcmVtYWlucyB1bmNoYW5nZWQuIExldCBtZSBzZWUuLi4geWVzLCBJIHdhcyByaWdodCB0byBjaGVjayB0aGF0ISBPa2F5LCBsZXQncyBzZWUgaG93IHRoZSBpbnN0cnVjdGlvbiBjb21wbGV4aXR5IGxpbWl0IGlzIGhhbmRsZWQuIEFoLCBoZXJlIHdlIGdvLi4uXG5cbmBgYGNcbi1cdFx0aWYgKCsrZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkIFx1MDAzZSBCUEZfQ09NUExFWElUWV9MSU1JVF9JTlNOUykge1xuK1x0XHRhY2NvdW50X3Byb2Nlc3NlZF9pbnNuKGVudik7XG4rXG4rXHRcdGlmIChlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQgXHUwMDNlIEJQRl9DT01QTEVYSVRZX0xJTUlUX0lOU05TKSB7XG5gYGBcblxuT2theSwgYGFjY291bnRfcHJvY2Vzc2VkX2luc25gIGlzIGNhbGxlZCBmaXJzdCwgd2hpY2ggc3RpbGwgaW5jcmVtZW50cyBgZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkYCBiZWZvcmUgdGhlIGNoZWNrIGFnYWluc3QgYEJQRl9DT01QTEVYSVRZX0xJTUlUX0lOU05TYC4gU28gdGhlIGxpbWl0ICppdHNlbGYqIHJlbWFpbnMgdW5jaGFuZ2VkLiBUaGUgbmV3IGZpZWxkcywgYGluc25zX3N1YnRvdGFsYCwgYGluc25zX3RvdGFsYCwgYW5kIGBpbnNuc19zZWxmYCwgYXBwZWFyIHRvIGJlIHB1cmVseSBmb3Igc3RhdGlzdGljcyBpbiBgcHJpbnRfdmVyaWZpY2F0aW9uX3N0YXRzYC5cblxuTGV0J3MgcXVpY2tseSBjb25maXJtLiBMZXQncyBsb29rIGF0IGBhY2NvdW50X3Byb2Nlc3NlZF9pbnNuYCBmdW5jdGlvbiBkZWZpbml0aW9uLlxuXG5gYGBjXG5zdGF0aWMgdm9pZCBhY2NvdW50X3Byb2Nlc3NlZF9pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG57XG5cdHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqZnJhbWUgPSBjdXJfZnVuYyhlbnYpO1xuXG5cdGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCsrO1xuXHRmcmFtZS1cdTAwM2VpbnNuc19zdWJ0b3RhbCsrO1xuXHRlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ZyYW1lLVx1MDAzZXN1YnByb2dub10uaW5zbnNfc2VsZisrO1xufVxuYGBgXG5cbll1cCwgaXQgaW5jcmVtZW50cyBgZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkYCBhbmQgdGhlbiB1cGRhdGVzIGFsbCB0aGUgdHJhY2tpbmcgdmFyaWFibGVzLiBBbmQgYGFjY291bnRfcHJvY2Vzc2VkX2luc25zYCBpbmNyZW1lbnRzIHRoZSBgaW5zbnNfdG90YWxgLiBJIG5lZWQgdG8gYmUgMTAwJSBzdXJlIHRoaXMgaXNuJ3QgdXNlZCB0byByZWplY3QgcHJvZ3JhbXMuIFF1aWNrIHNlYXJjaCBmb3IgYGluc25zX3RvdGFsYCBhbmQgYGluc25zX3NlbGZgIGluIHRoZSB2ZXJpZmllciBjb2RlIGlzIG5lY2Vzc2FyeS4gSnVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ5NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIyOjM4OjI1LjEwMjE3MDAwN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODgwMTUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnNuc190b3RhbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTk3MzE9c3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05NzQxLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5NzQyOlxcdGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2NhbGxlZS1cXHUwMDNlc3VicHJvZ25vXS5pbnNuc190b3RhbCArPSBpbnNucztcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTc0My1cXHRpZiAoY2FsbGVyKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4NDUzPXN0YXRpYyBpbnQgZG9fY2hlY2tfY29tbW9uKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4NjEwLVxcdCAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODYxMTpcXHRlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tzdWJwcm9nXS5pbnNuc190b3RhbCA9IGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg2MTItXFx0cmV0dXJuIHJldDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODY5Nz1zdGF0aWMgdm9pZCBwcmludF92ZXJpZmljYXRpb25fc3RhdHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODcxMy1cXHRcXHRcXHQgICAgICAgYnBmX3N1YnByb2dfaXNfZ2xvYmFsKGVudiwgaSkgPyBcXFwiZ2xvYmFsXFxcIiA6IFxcXCJzdGF0aWNcXFwiO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODcxNDpcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcInN1YnByb2cgJWQgKCVzKSAlcyBpbnNuc19zZWxmICVkIGluc25zX3RvdGFsICVkIHN0YWNrICVkXFxcXG5cXFwiLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODcxNS1cXHRcXHRcXHRcXHRpLCBuYW1lLCBraW5kLCBlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tpXS5pbnNuc19zZWxmLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODcxNjpcXHRcXHRcXHRcXHRlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tpXS5pbnNuc190b3RhbCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg3MTctXFx0XFx0XFx0XFx0ZW52LVxcdTAwM2VzdWJwcm9nX2luZm9baV0uc3RhY2tfZGVwdGgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMjozODoyNS4xNTA5NzU4NjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTU0MTE1NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgSW5zdHJ1Y3Rpb24gQ291bnRpbmcgTWV0cmljcyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gVGhlIGNvZGUgSSdtIGxvb2tpbmcgYXQgb25seSBzZWVtcyB0byBiZSB1c2luZyBgaW5zbnNfdG90YWxgIGFuZCBgaW5zbnNfc2VsZmAgZm9yIGxvZ2dpbmcgcHVycG9zZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gYHByaW50X3ZlcmlmaWNhdGlvbl9zdGF0c2AuICBUaGF0J3MgYSBiaXQgbGltaXRpbmcsIGFuZCBpdCBkb2Vzbid0IGdpdmUgbWUgdGhlIGxldmVsIG9mIGRldGFpbCBJJ20gdXN1YWxseSBhZnRlci4gQmVmb3JlIEkgZGlnIGRlZXBlciwgSSBuZWVkIHRvIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHdpdGggYGluc25zX3N1YnRvdGFsYC4gSSdtIGd1ZXNzaW5nIHRoaXMgZmllbGQgbWlnaHQgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZWVwZXIgc3RydWN0dXJlLiBIb3BlZnVsbHkgaXQncyBjYWxjdWxhdGVkIGluIGEgd2F5IHRoYXQgZ2l2ZXMgYSBtb3JlIHVzZWZ1bCBicmVha2Rvd24gdGhhbiB3aGF0IEknbSBzZWVpbmcgZnJvbSB0aGUgb3RoZXIgdHdvLiBJJ20gZ29pbmcgdG8gdHJhY2sgZG93biB0aGUgdXNhZ2Ugb2YgdGhpcyB2YXJpYWJsZSBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDEwOSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIyOjM4OjI4LjMwNTA5MzMxNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njg5ODA2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnNuc19zdWJ0b3RhbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTE1OTI9c3RhdGljIGludCBjb3B5X2Z1bmNfc3RhdGUoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpkc3QsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTU5Ni1cXHQvKiBJbnN0cnVjdGlvbiBhY2NvdW50aW5nIGlzIHBhdGgtbG9jYWwsIG5vdCBwYXJ0IG9mIHZlcmlmaWVyIHN0YXRlLiAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNTk3OlxcdGRzdC1cXHUwMDNlaW5zbnNfc3VidG90YWwgPSAwO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNTk4LVxcdHJldHVybiBjb3B5X3N0YWNrX3N0YXRlKGRzdCwgc3JjKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz05NzIyPXN0YXRpYyB2b2lkIGFjY291bnRfcHJvY2Vzc2VkX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05NzI2LVxcdGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQrKztcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTcyNzpcXHRmcmFtZS1cXHUwMDNlaW5zbnNfc3VidG90YWwrKztcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTcyOC1cXHRlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tmcmFtZS1cXHUwMDNlc3VicHJvZ25vXS5pbnNuc19zZWxmKys7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9OTczMT1zdGF0aWMgdm9pZCBhY2NvdW50X3Byb2Nlc3NlZF9pbnNucyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTk3MzktXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjk3NDA6XFx0aW5zbnMgPSBjYWxsZWUtXFx1MDAzZWluc25zX3N1YnRvdGFsO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05NzQxLVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTk3NDMtXFx0aWYgKGNhbGxlcilcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTc0NDpcXHRcXHRjYWxsZXItXFx1MDAzZWluc25zX3N1YnRvdGFsICs9IGluc25zO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5NzQ1OlxcdGNhbGxlZS1cXHUwMDNlaW5zbnNfc3VidG90YWwgPSAwO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05NzQ2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjI6Mzg6MjguMzUxOTk4NDYxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcwOTExMjQ3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlKipcblxuT2theSwgc28gSSd2ZSBleGFtaW5lZCB0aGlzIHBhdGNoIGFuZCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgcHJpbWFyeSBwdXJwb3NlIG9mIHRoZXNlIGNoYW5nZXMgaXMgcHVyZWx5IGZvciBzdGF0aXN0aWNhbCB0cmFja2luZyB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllci4gSXQgYXBwZWFycyB0aGF0IHRoZSBuZXcgZmllbGRzIGFyZSBiZWluZyBpbnRyb2R1Y2VkIHRvIGVuaGFuY2UgbG9nZ2luZywgc3BlY2lmaWNhbGx5IHdoZW4gYEJQRl9MT0dfU1RBVFNgIGlzIGVuYWJsZWQuIFRoZSBjb3JlIG9mIHRoZSB2ZXJpZmljYXRpb24gbG9naWMgaXRzZWxmIGlzbid0IGJlaW5nIGFsdGVyZWQgaW4gYSB3YXkgdGhhdCB3b3VsZCBjaGFuZ2UgaG93IHByb2dyYW1zIGFyZSBhY2NlcHRlZCBvciByZWplY3RlZCwgbm9yIGlzIHRoZXJlIGFueSBtb2RpZmljYXRpb24gdG8gdGhlIGdlbmVyYXRlZCBjb2RlLlxuXG5UaGUgYWRkaXRpb24gb2YgYGFjY291bnRfcHJvY2Vzc2VkX2luc25gIGFuZCB0aGUgYXNzb2NpYXRlZCBmaWVsZHMsIHN1Y2ggYXMgYGluc25zX3N1YnRvdGFsYCBhbmQgYGluc25zX3NlbGZgLCBhcmUgc2ltcGx5IGluY3JlbWVudGluZyBhbmQgdHJhY2tpbmcgc3BlY2lmaWMgY291bnRzOyBmdW5jdGlvbmFsbHksIGBlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWRgIGlzIGJlaW5nIHVwZGF0ZWQgaW4gdGhlIHNhbWUgbWFubmVyLiBUaGlzIHBhdGNoIGp1c3QgcHJvdmlkZXMgbW9yZSBkZXRhaWxlZCBpbnNpZ2h0cyBpbnRvIHRoZSB2ZXJpZmljYXRpb24gcHJvY2Vzcy5cblxuSSd2ZSBhbHNvIHF1aWNrbHkgc2Nhbm5lZCB0aGUgYHByaW50X3ZlcmlmaWNhdGlvbl9zdGF0c2AgZnVuY3Rpb24gdG8gZW5zdXJlIHRoZXJlIGFyZW4ndCBhbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIG1lbW9yeSBhY2Nlc3Mgb3IgbG9nZ2luZyB0aGF0IGNvdWxkIGNhdXNlIGEgY3Jhc2guIEl0IGFwcGVhcnMgdG8gYmUgYSBzYWZlIGB2ZXJib3NlKClgIGNhbGwsIG1lcmVseSBvdXRwdXR0aW5nIHRoZSBjb2xsZWN0ZWQgc3RhdGlzdGljcy5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgd2hpY2ggaXMgbGltaXRlZCB0byBsb2dnaW5nIGFuZCBzdGF0aXN0aWNhbCBhY2N1bXVsYXRpb24sIEkgY2FuIGNvbmZpZGVudGx5IGNvbmNsdWRlIHRoYXQgZnV6emluZyB0aGlzIHNwZWNpZmljIHBhdGNoIHdvdWxkIG5vdCBiZSBiZW5lZmljaWFsLiBJdCB3b24ndCByZXZlYWwgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIHByb2dyYW0gdmVyaWZpY2F0aW9uLiBUaGVyZWZvcmUsIG15IGFzc2Vzc21lbnQgaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0ODAxLCJPdXRwdXRUb2tlbnMiOjc3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIyOjM4OjM3LjA2MTExMzIxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgc3RhdGlzdGljcyB0cmFja2luZyBmb3IgdGhlIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgcHJvY2Vzc2VkIHBlciBzdWJwcm9ncmFtIGR1cmluZyBCUEYgdmVyaWZpY2F0aW9uIGFuZCBvdXRwdXRzIHRoZW0gaW4gdGhlIHZlcmlmaWVyIGxvZy4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIHZlcmlmaWNhdGlvbiBsb2dpYywgZXhlY3V0aW9uIGZsb3csIG9yIHRoZSBnZW5lcmF0ZWQgQlBGIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgc3RhdGlzdGljcyB0cmFja2luZyBmb3IgdGhlIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgcHJvY2Vzc2VkIHBlciBzdWJwcm9ncmFtIGR1cmluZyBCUEYgdmVyaWZpY2F0aW9uIGFuZCBvdXRwdXRzIHRoZW0gaW4gdGhlIHZlcmlmaWVyIGxvZy4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIHZlcmlmaWNhdGlvbiBsb2dpYywgZXhlY3V0aW9uIGZsb3csIG9yIHRoZSBnZW5lcmF0ZWQgQlBGIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMjozODozNy4wNjExNTQwNVoiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowncfx2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 22:36:09 +0000 UTC FinishedAt: 2026-08-12 22:38:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIyOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHN0YXRpc3RpY3MgdHJhY2tpbmcgZm9yIHRoZSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIHByb2Nlc3NlZCBwZXIgc3VicHJvZ3JhbSBkdXJpbmcgQlBGIHZlcmlmaWNhdGlvbiBhbmQgb3V0cHV0cyB0aGVtIGluIHRoZSB2ZXJpZmllciBsb2cuIEl0IGRvZXMgbm90IGFsdGVyIHRoZSB2ZXJpZmljYXRpb24gbG9naWMsIGV4ZWN1dGlvbiBmbG93LCBvciB0aGUgZ2VuZXJhdGVkIEJQRiBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMjozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI3NjIxOTk4ZTc3YTc5OGZmOTgyOTY1OTNlNzI5MmRlYzU3Mjg0MTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAyMjozODoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oIGIvaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaFxuaW5kZXggOTNmN2MyMDc1ZWVhYS4uN2MzNzY0NTFkYjgyNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmhcbkBAIC0zODAsNiAmIzQzOzM4MCw4IEBAIHN0cnVjdCBicGZfZnVuY19zdGF0ZSB7XG4gXHQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbnVtYmVyIG9mIHNpbXVsYXRpb25zIGlzIHRyYWNrZWQgaW4gZnJhbWUgTlxuIFx0ICovXG4gXHR1MzIgY2FsbGJhY2tfZGVwdGg7XG4mIzQzO1x0LyogSW5zdHJ1Y3Rpb25zIHByb2Nlc3NlZCBpbiB0aGlzIGZyYW1lIGFuZCBjYWxsZWVzIG9uIHRoZSBjdXJyZW50IHBhdGguICovXG4mIzQzO1x0dTMyIGluc25zX3N1YnRvdGFsO1xuIFxuIFx0LyogVGhlIGZvbGxvd2luZyBmaWVsZHMgc2hvdWxkIGJlIGxhc3QuIFNlZSBjb3B5X2Z1bmNfc3RhdGUoKSAqL1xuIFx0LyogVGhlIHN0YXRlIG9mIHRoZSBzdGFjay4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBkZXNjcmliZXMgQlBGX1JFR19TSVpFXG5AQCAtNzk4LDcgJiM0Mzs4MDAsOCBAQCBzdHJ1Y3QgYnBmX3N1YnByb2dfaW5mbyB7XG4gXHR1MzIgZXhpdF9pZHg7IC8qIEluZGV4IG9mIG9uZSBvZiB0aGUgQlBGX0VYSVQgaW5zdHJ1Y3Rpb25zIGluIHRoaXMgc3VicHJvZ3JhbSAqL1xuIFx0dTE2IHN0YWNrX2RlcHRoOyAvKiBtYXguIHN0YWNrIGRlcHRoIHVzZWQgYnkgdGhpcyBmdW5jdGlvbiAqL1xuIFx0dTE2IHN0YWNrX2V4dHJhO1xuLVx0dTMyIGluc25fcHJvY2Vzc2VkO1xuJiM0MztcdHUzMiBpbnNuc190b3RhbDtcbiYjNDM7XHR1MzIgaW5zbnNfc2VsZjtcbiBcdC8qIG9mZnNldHMgaW4gcmFuZ2UgW3N0YWNrX2RlcHRoIC4uIGZhc3RjYWxsX3N0YWNrX29mZilcbiBcdCAqIGFyZSB1c2VkIGZvciBicGZfZmFzdGNhbGwgc3BpbGxzIGFuZCBmaWxscy5cbiBcdCAqL1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggYWRkM2FmZmM1NzAzNS4uODIwZDI4MzFmMzQwMyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTU5Myw2ICYjNDM7MTU5Myw4IEBAIHN0YXRpYyBpbnQgY29weV9mdW5jX3N0YXRlKHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqZHN0LFxuIFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqc3JjKVxuIHtcbiBcdG1lbWNweShkc3QsIHNyYywgb2Zmc2V0b2Yoc3RydWN0IGJwZl9mdW5jX3N0YXRlLCBzdGFjaykpO1xuJiM0MztcdC8qIEluc3RydWN0aW9uIGFjY291bnRpbmcgaXMgcGF0aC1sb2NhbCwgbm90IHBhcnQgb2YgdmVyaWZpZXIgc3RhdGUuICovXG4mIzQzO1x0ZHN0LVx1MDAzZWluc25zX3N1YnRvdGFsID0gMDtcbiBcdHJldHVybiBjb3B5X3N0YWNrX3N0YXRlKGRzdCwgc3JjKTtcbiB9XG4gXG5AQCAtOTcxNyw2ICYjNDM7OTcxOSw0MiBAQCBzdGF0aWMgaW50IHNldF90YXNrX3dvcmtfc2NoZWR1bGVfY2FsbGJhY2tfc3RhdGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcbiBzdGF0aWMgYm9vbCBpc19yYnRyZWVfbG9ja19yZXF1aXJlZF9rZnVuYyh1MzIgYnRmX2lkKTtcbiBcbiYjNDM7c3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJwZl9mdW5jX3N0YXRlICpmcmFtZSA9IGN1cl9mdW5jKGVudik7XG4mIzQzO1xuJiM0MztcdGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCYjNDM7JiM0Mzs7XG4mIzQzO1x0ZnJhbWUtXHUwMDNlaW5zbnNfc3VidG90YWwmIzQzOyYjNDM7O1xuJiM0MztcdGVudi1cdTAwM2VzdWJwcm9nX2luZm9bZnJhbWUtXHUwMDNlc3VicHJvZ25vXS5pbnNuc19zZWxmJiM0MzsmIzQzOztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IGJwZl9mdW5jX3N0YXRlICpjYWxsZWUsXG4mIzQzO1x0XHRcdFx0ICAgIHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqY2FsbGVyKVxuJiM0Mzt7XG4mIzQzO1x0dTMyIGluc25zO1xuJiM0MztcbiYjNDM7XHRpZiAoIWNhbGxlZSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aW5zbnMgPSBjYWxsZWUtXHUwMDNlaW5zbnNfc3VidG90YWw7XG4mIzQzO1xuJiM0MztcdGVudi1cdTAwM2VzdWJwcm9nX2luZm9bY2FsbGVlLVx1MDAzZXN1YnByb2dub10uaW5zbnNfdG90YWwgJiM0Mzs9IGluc25zO1xuJiM0MztcdGlmIChjYWxsZXIpXG4mIzQzO1x0XHRjYWxsZXItXHUwMDNlaW5zbnNfc3VidG90YWwgJiM0Mzs9IGluc25zO1xuJiM0MztcdGNhbGxlZS1cdTAwM2VpbnNuc19zdWJ0b3RhbCA9IDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGFjY291bnRfY3VycmVudF9wYXRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYnBmX3ZlcmlmaWVyX3N0YXRlICpzdGF0ZSA9IGVudi1cdTAwM2VjdXJfc3RhdGU7XG4mIzQzO1x0aW50IGZyYW1lO1xuJiM0MztcbiYjNDM7XHRmb3IgKGZyYW1lID0gc3RhdGUtXHUwMDNlY3VyZnJhbWU7IGZyYW1lIFx1MDAzZT0gMDsgZnJhbWUtLSlcbiYjNDM7XHRcdGFjY291bnRfcHJvY2Vzc2VkX2luc25zKGVudiwgc3RhdGUtXHUwMDNlZnJhbWVbZnJhbWVdLFxuJiM0MztcdFx0XHRcdFx0ZnJhbWUgPyBzdGF0ZS1cdTAwM2VmcmFtZVtmcmFtZSAtIDFdIDogTlVMTCk7XG4mIzQzO31cbiYjNDM7XG4gLyogQXJlIHdlIGN1cnJlbnRseSB2ZXJpZnlpbmcgdGhlIGNhbGxiYWNrIGZvciBhIHJidHJlZSBoZWxwZXIgdGhhdCBtdXN0XG4gICogYmUgY2FsbGVkIHdpdGggbG9jayBoZWxkPyBJZiBzbywgbm8gbmVlZCB0byBjb21wbGFpbiBhYm91dCB1bnJlbGVhc2VkXG4gICogbG9ja1xuQEAgLTk4MTMsNiAmIzQzOzk4NTEsNyBAQCBzdGF0aWMgaW50IHByZXBhcmVfZnVuY19leGl0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCAqaW5zbl9pZHgpXG4gXHRcdHZlcmJvc2UoZW52LCBcJiMzNDt0byBjYWxsZXIgYXQgJWQ6XFxuXCYjMzQ7LCAqaW5zbl9pZHgpO1xuIFx0XHRwcmludF92ZXJpZmllcl9zdGF0ZShlbnYsIHN0YXRlLCBjYWxsZXItXHUwMDNlZnJhbWVubywgdHJ1ZSk7XG4gXHR9XG4mIzQzO1x0YWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoZW52LCBjYWxsZWUsIGNhbGxlcik7XG4gXHQvKiBjbGVhciBldmVyeXRoaW5nIGluIHRoZSBjYWxsZWUuIEluIGNhc2Ugb2YgZXhjZXB0aW9uYWwgZXhpdHMgdXNpbmdcbiBcdCAqIGJwZl90aHJvdywgdGhpcyB3aWxsIGJlIGRvbmUgYnkgY29weV92ZXJpZmllcl9zdGF0ZSBmb3IgZXh0cmEgZnJhbWVzLiAqL1xuIFx0ZnJlZV9mdW5jX3N0YXRlKGNhbGxlZSk7XG5AQCAtMTczNjgsNyAmIzQzOzE3NDA3LDkgQEAgc3RhdGljIGludCBkb19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0XHRpbnNuID0gXHUwMDI2aW5zbnNbZW52LVx1MDAzZWluc25faWR4XTtcbiBcdFx0aW5zbl9hdXggPSBcdTAwMjZlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtlbnYtXHUwMDNlaW5zbl9pZHhdO1xuIFxuLVx0XHRpZiAoJiM0MzsmIzQzO2Vudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCBcdTAwM2UgQlBGX0NPTVBMRVhJVFlfTElNSVRfSU5TTlMpIHtcbiYjNDM7XHRcdGFjY291bnRfcHJvY2Vzc2VkX2luc24oZW52KTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkIFx1MDAzZSBCUEZfQ09NUExFWElUWV9MSU1JVF9JTlNOUykge1xuIFx0XHRcdHZlcmJvc2UoZW52LFxuIFx0XHRcdFx0XCYjMzQ7QlBGIHByb2dyYW0gaXMgdG9vIGxhcmdlLiBQcm9jZXNzZWQgJWQgaW5zblxcblwmIzM0OyxcbiBcdFx0XHRcdGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCk7XG5AQCAtMTc1MDksNiAmIzQzOzE3NTUwLDcgQEAgc3RhdGljIGludCBkb19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0XHRcdFx0XHQgICAgXCYjMzQ7c3BlY3VsYXRpb24gYmFycmllciBhZnRlciBqdW1wIGluc3RydWN0aW9uIG1heSBub3QgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3RcJiMzNDspKVxuIFx0XHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gcHJvY2Vzc19icGZfZXhpdDpcbiYjNDM7XHRcdFx0YWNjb3VudF9jdXJyZW50X3BhdGgoZW52KTtcbiBcdFx0XHRtYXJrX3ZlcmlmaWVyX3N0YXRlX3NjcmF0Y2hlZChlbnYpO1xuIFx0XHRcdGVyciA9IGJwZl91cGRhdGVfYnJhbmNoX2NvdW50cyhlbnYsIGVudi1cdTAwM2VjdXJfc3RhdGUpO1xuIFx0XHRcdGlmIChlcnIpXG5AQCAtMTg0MTUsNiAmIzQzOzE4NDU3LDcgQEAgc3RhdGljIGludCBkb19jaGVja19jb21tb24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2cpXG4gXHRzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXggPSBlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXg7XG4gXHRzdHJ1Y3QgYnBmX3ZlcmlmaWVyX3N0YXRlICpzdGF0ZTtcbiBcdHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzO1xuJiM0MztcdHUzMiBpbnNuX3Byb2Nlc3NlZCA9IGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZDtcbiBcdGludCByZXQsIGk7XG4gXG4gXHRlbnYtXHUwMDNlcHJldl9saW5mbyA9IE5VTEw7XG5AQCAtMTg1NTMsOSAmIzQzOzE4NTk2LDE5IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfY29tbW9uKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nKVxuIFxuIFx0cmV0ID0gZG9fY2hlY2soZW52KTtcbiBvdXQ6XG4mIzQzO1x0YWNjb3VudF9jdXJyZW50X3BhdGgoZW52KTtcbiBcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBwb3BfbG9nKVxuIFx0XHRicGZfdmxvZ19yZXNldChcdTAwMjZlbnYtXHUwMDNlbG9nLCAwKTtcbiBcdGZyZWVfc3RhdGVzKGVudik7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIG92ZXJyaWRlIGlzIG5lZWRlZCB0byBhY2NvdW50IGZvciBhc3luYyBzdWJwcm9ncmFtcywgd2hpY2hcbiYjNDM7XHQgKiBhcmUgdmVyaWZpZWQgd2l0aCB0aGVpciBvd24gc2V0IG9mIHN0YWNrIGZyYW1lcyBhbmQgdGh1cyBhcmVcbiYjNDM7XHQgKiBub3QgYWNjb3VudGVkIGFzIGNhbGxlZXMgYnkgYWNjb3VudF9jdXJyZW50X3BhdGgoKS5cbiYjNDM7XHQgKiBBY2N1bXVsYXRlIHRoZWlyIHRvdGFsIGNvdW50cyBhcyB0b3RhbCBjb3VudHMgb2YgdGhlIG1haW4gb3JcbiYjNDM7XHQgKiBnbG9iYWwgc3VicHJvZyBob3N0aW5nIHRoZSBhc3luYyBjYWxsLlxuJiM0MztcdCAqL1xuJiM0MztcdGVudi1cdTAwM2VzdWJwcm9nX2luZm9bc3VicHJvZ10uaW5zbnNfdG90YWwgPSBlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTE4NTg0LDcgJiM0MzsxODYzNyw2IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eCA9IGVudi1cdTAwM2Vwcm9nLVx1MDAzZWF1eDtcbiBcdHN0cnVjdCBicGZfZnVuY19pbmZvX2F1eCAqc3ViX2F1eDtcbiBcdGludCBpLCByZXQsIG5ld19jbnQ7XG4tXHR1MzIgaW5zbl9wcm9jZXNzZWQ7XG4gXG4gXHRpZiAoIWF1eC1cdTAwM2VmdW5jX2luZm8pXG4gXHRcdHJldHVybiAwO1xuQEAgLTE4NTk5LDggJiM0MzsxODY1MSw2IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdFx0aWYgKCFicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0aW5zbl9wcm9jZXNzZWQgPSBlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQ7XG4tXG4gXHRcdHN1Yl9hdXggPSBzdWJwcm9nX2F1eChlbnYsIGkpO1xuIFx0XHRpZiAoIXN1Yl9hdXgtXHUwMDNlY2FsbGVkIHx8IHN1Yl9hdXgtXHUwMDNldmVyaWZpZWQpXG4gXHRcdFx0Y29udGludWU7XG5AQCAtMTg2MDgsNyAmIzQzOzE4NjU4LDYgQEAgc3RhdGljIGludCBkb19jaGVja19zdWJwcm9ncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0XHRlbnYtXHUwMDNlaW5zbl9pZHggPSBlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLnN0YXJ0O1xuIFx0XHRXQVJOX09OX09OQ0UoZW52LVx1MDAzZWluc25faWR4ID09IDApO1xuIFx0XHRyZXQgPSBkb19jaGVja19jb21tb24oZW52LCBpKTtcbi1cdFx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tpXS5pbnNuX3Byb2Nlc3NlZCA9IGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCAtIGluc25fcHJvY2Vzc2VkO1xuIFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fSBlbHNlIGlmIChlbnYtXHUwMDNlbG9nLmxldmVsIFx1MDAyNiBCUEZfTE9HX0xFVkVMKSB7XG5AQCAtMTg2MzUsMTIgJiM0MzsxODY4NCwxMCBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXG4gc3RhdGljIGludCBkb19jaGVja19tYWluKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4ge1xuLVx0dTMyIGluc25fcHJvY2Vzc2VkID0gZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkO1xuIFx0aW50IHJldDtcbiBcbiBcdGVudi1cdTAwM2VpbnNuX2lkeCA9IDA7XG4gXHRyZXQgPSBkb19jaGVja19jb21tb24oZW52LCAwKTtcbi1cdGVudi1cdTAwM2VzdWJwcm9nX2luZm9bMF0uaW5zbl9wcm9jZXNzZWQgPSBlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDtcbiBcdGlmICghcmV0KVxuIFx0XHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlc3RhY2tfZGVwdGggPSBlbnYtXHUwMDNlc3VicHJvZ19pbmZvWzBdLnN0YWNrX2RlcHRoO1xuIFx0cmV0dXJuIHJldDtcbkBAIC0xODY1NSwxNSAmIzQzOzE4NzAyLDIwIEBAIHN0YXRpYyB2b2lkIHByaW50X3ZlcmlmaWNhdGlvbl9zdGF0cyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0aWYgKGVudi1cdTAwM2Vsb2cubGV2ZWwgXHUwMDI2IEJQRl9MT0dfU1RBVFMpIHtcbiBcdFx0dmVyYm9zZShlbnYsIFwmIzM0O3ZlcmlmaWNhdGlvbiB0aW1lICVsbGQgdXNlY1xcblwmIzM0OyxcbiBcdFx0XHRkaXZfdTY0KGVudi1cdTAwM2V2ZXJpZmljYXRpb25fdGltZSwgMTAwMCkpO1xuLVx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7c3RhY2sgZGVwdGggJWRcJiMzNDssIGVudi1cdTAwM2VzdWJwcm9nX2luZm9bMF0uc3RhY2tfZGVwdGgpO1xuLVx0XHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBzdWJwcm9nX2NudDsgaSYjNDM7JiM0MzspXG4tXHRcdFx0dmVyYm9zZShlbnYsIFwmIzM0OyYjNDM7JWRcJiMzNDssIGVudi1cdTAwM2VzdWJwcm9nX2luZm9baV0uc3RhY2tfZGVwdGgpO1xuLVx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7IG1heCAlZFxcblwmIzM0OywgZW52LVx1MDAzZW1heF9zdGFja19kZXB0aCk7XG4tXHRcdHZlcmJvc2UoZW52LCBcJiMzNDtpbnNucyBwcm9jZXNzZWQgJWRcJiMzNDssIGVudi1cdTAwM2VzdWJwcm9nX2luZm9bMF0uaW5zbl9wcm9jZXNzZWQpO1xuLVx0XHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBzdWJwcm9nX2NudDsgaSYjNDM7JiM0MzspXG4tXHRcdFx0aWYgKGJwZl9zdWJwcm9nX2lzX2dsb2JhbChlbnYsIGkpKVxuLVx0XHRcdFx0dmVyYm9zZShlbnYsIFwmIzM0OyYjNDM7JWRcJiMzNDssIGVudi1cdTAwM2VzdWJwcm9nX2luZm9baV0uaW5zbl9wcm9jZXNzZWQpO1xuLVx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHZlcmJvc2UoZW52LCBcJiMzNDtzdGFjayBkZXB0aCBtYXggJWRcXG5cJiMzNDssIGVudi1cdTAwM2VtYXhfc3RhY2tfZGVwdGgpO1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc3VicHJvZ19jbnQ7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdGNvbnN0IGNoYXIgKm5hbWUgPSBlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLm5hbWU7XG4mIzQzO1x0XHRcdGNvbnN0IGNoYXIgKmtpbmQ7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoIW5hbWUgfHwgIW5hbWVbMF0pXG4mIzQzO1x0XHRcdFx0bmFtZSA9IFwmIzM0O1x1MDAzY3Vua25vd25cdTAwM2VcJiMzNDs7XG4mIzQzO1x0XHRcdGtpbmQgPSBpID09IDAgPyBcJiMzNDttYWluXCYjMzQ7IDpcbiYjNDM7XHRcdFx0ICAgICAgIGJwZl9zdWJwcm9nX2lzX2dsb2JhbChlbnYsIGkpID8gXCYjMzQ7Z2xvYmFsXCYjMzQ7IDogXCYjMzQ7c3RhdGljXCYjMzQ7O1xuJiM0MztcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7c3VicHJvZyAlZCAoJXMpICVzIGluc25zX3NlbGYgJWQgaW5zbnNfdG90YWwgJWQgc3RhY2sgJWRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0aSwgbmFtZSwga2luZCwgZW52LVx1MDAzZXN1YnByb2dfaW5mb1tpXS5pbnNuc19zZWxmLFxuJiM0MztcdFx0XHRcdGVudi1cdTAwM2VzdWJwcm9nX2luZm9baV0uaW5zbnNfdG90YWwsXG4mIzQzO1x0XHRcdFx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tpXS5zdGFja19kZXB0aCk7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXHR2ZXJib3NlKGVudiwgXCYjMzQ7cHJvY2Vzc2VkICVkIGluc25zIChsaW1pdCAlZCkgbWF4X3N0YXRlc19wZXJfaW5zbiAlZCBcJiMzNDtcbiBcdFx0XCYjMzQ7dG90YWxfc3RhdGVzICVkIHBlYWtfc3RhdGVzICVkIG1hcmtfcmVhZCAlZFxcblwmIzM0OyxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xuaW5kZXggNWIyNjVhZjNiMWQ1Ny4uODExM2ZlYTdiYTg2YyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbkBAIC0xMDIsNiAmIzQzOzEwMiw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7dmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3ZlcmlmaWVyX3N0YWNrX3B0ci5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt2ZXJpZmllcl9zdG9yZV9yZWxlYXNlLnNrZWwuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDt2ZXJpZmllcl9zdWJwcm9nX2luc25fc3RhdHMuc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dmVyaWZpZXJfc3VicHJvZ19wcmVjaXNpb24uc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dmVyaWZpZXJfc3VicHJvZ190b3BvLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3ZlcmlmaWVyX3N1YnJlZy5za2VsLmhcJiMzNDtcbkBAIC0yNjIsNiAmIzQzOzI2Myw3IEBAIHZvaWQgdGVzdF92ZXJpZmllcl9zdGFja19hcmcodm9pZCkgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9zdGFja19hcmcpOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlcih2b2lkKSAgICAgIHsgUlVOKHZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlcik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfc3RhY2tfcHRyKHZvaWQpICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfc3RhY2tfcHRyKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdG9yZV9yZWxlYXNlKHZvaWQpICAgICAgICB7IFJVTih2ZXJpZmllcl9zdG9yZV9yZWxlYXNlKTsgfVxuJiM0Mzt2b2lkIHRlc3RfdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzKHZvaWQpICAgeyBSVU4odmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbih2b2lkKSAgICB7IFJVTih2ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfc3VicHJvZ190b3BvKHZvaWQpICAgICAgICB7IFJVTih2ZXJpZmllcl9zdWJwcm9nX3RvcG8pOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX3N1YnJlZyh2b2lkKSAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N1YnJlZyk7IH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXG5pbmRleCBkM2RmN2E5ZjFkOGM4Li4wZWI0OTVjZTg1YzFjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXG5AQCAtMjcsNyAmIzQzOzI3LDggQEAgX19uYWtlZCB2b2lkIHN0YWNrX291dF9vZl9ib3VuZHModm9pZClcbiBcbiBTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVxuIF9fZGVzY3JpcHRpb24oXCYjMzQ7dW5pbml0aWFsaXplZCBzdGFjazFcJiMzNDspXG4tX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDhcJiMzNDspXG4mIzQzO19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKHVuaW5pdGlhbGl6ZWRfc3RhY2sxKSBtYWluIHt7Lip9fSBzdGFjayA4XCYjMzQ7KVxuIF9fZmFpbHVyZV91bnByaXYgX19tc2dfdW5wcml2KFwmIzM0O2ludmFsaWQgcmVhZCBmcm9tIHN0YWNrXCYjMzQ7KVxuIF9fbmFrZWQgdm9pZCB1bmluaXRpYWxpemVkX3N0YWNrMSh2b2lkKVxuIHtcbkBAIC00NSw3ICYjNDM7NDYsOCBAQCBfX25ha2VkIHZvaWQgdW5pbml0aWFsaXplZF9zdGFjazEodm9pZClcbiBcbiBTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVxuIF9fZGVzY3JpcHRpb24oXCYjMzQ7dW5pbml0aWFsaXplZCBzdGFjazJcJiMzNDspXG4tX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDhcJiMzNDspXG4mIzQzO19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKHVuaW5pdGlhbGl6ZWRfc3RhY2syKSBtYWluIGluc25zX3NlbGYge3tbMC05XSYjNDM7fX0gaW5zbnNfdG90YWwge3tbMC05XSYjNDM7fX0gc3RhY2sgOFwmIzM0OylcbiBfX2ZhaWx1cmVfdW5wcml2IF9fbXNnX3VucHJpdihcJiMzNDtpbnZhbGlkIHJlYWQgZnJvbSBzdGFja1wmIzM0OylcbiBfX25ha2VkIHZvaWQgdW5pbml0aWFsaXplZF9zdGFjazIodm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXG5pbmRleCA4MzcwN2ZhZWEwNDk5Li40Y2ZhYTZiNGFiNDA1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbkBAIC0xMCw3ICYjNDM7MTAsOCBAQFxuIFxuIFNFQyhcJiMzNDtyYXdfdHBcJiMzNDspXG4gX19hcmNoX3g4Nl82NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDhcJiMzNDspXG4mIzQzO19fbG9nX2xldmVsKDQpXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoc2ltcGxlKSBtYWluIGluc25zX3NlbGYge3tbMC05XSYjNDM7fX0gaW5zbnNfdG90YWwge3tbMC05XSYjNDM7fX0gc3RhY2sgOFwmIzM0OylcbiBfX3hsYXRlZChcJiMzNDs0OiByNSA9IDVcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7NTogcjAgPSBcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7NjogcjAgPSBcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcJiMzNDspXG5AQCAtOTYsNyAmIzQzOzk3LDggQEAgX19uYWtlZCB2b2lkIGNhbmFyeV96ZXJvX3NwaWxscyh2b2lkKVxuIFxuIFNFQyhcJiMzNDtyYXdfdHBcJiMzNDspXG4gX19hcmNoX3g4Nl82NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDE2XCYjMzQ7KVxuJiM0MztfX2xvZ19sZXZlbCg0KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKHdyb25nX3JlZ19pbl9wYXR0ZXJuMSkgbWFpbiB7ey4qfX0gc3RhY2sgMTZcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MTogKih1NjQgKikocjEwIC0xNikgPSByMVwmIzM0OylcbiBfX3hsYXRlZChcJiMzNDsuLi5cJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MzogcjAgPSBcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcJiMzNDspXG5AQCAtNTk4LDcgJiM0Mzs2MDAsOCBAQCBfX25ha2VkIHN0YXRpYyB2b2lkIHN1YnByb2dzX3VzZV9pbmRlcGVuZGVudF9vZmZzZXRzX2F1eCh2b2lkKVxuIFxuIFNFQyhcJiMzNDtyYXdfdHBcJiMzNDspXG4gX19hcmNoX3g4Nl82NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDhcJiMzNDspXG4mIzQzO19fbG9nX2xldmVsKDQpXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoaGVscGVyX2NhbGxfZG9lc19ub3RfcHJldmVudF9icGZfZmFzdGNhbGwpIG1haW4ge3suKn19IHN0YWNrIDhcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MjogcjAgPSBcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcJiMzNDspXG4gX19zdWNjZXNzXG4gX19uYWtlZCB2b2lkIGhlbHBlcl9jYWxsX2RvZXNfbm90X3ByZXZlbnRfYnBmX2Zhc3RjYWxsKHZvaWQpXG5AQCAtNjIwLDcgJiM0Mzs2MjMsOCBAQCBfX25ha2VkIHZvaWQgaGVscGVyX2NhbGxfZG9lc19ub3RfcHJldmVudF9icGZfZmFzdGNhbGwodm9pZClcbiBcbiBTRUMoXCYjMzQ7cmF3X3RwXCYjMzQ7KVxuIF9fYXJjaF94ODZfNjRcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcJiMzNDtzdGFjayBkZXB0aCAyNFwmIzM0OylcbiYjNDM7X19sb2dfbGV2ZWwoNClcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAwIChtYXlfZ290b19pbnRlcmFjdGlvbl94ODZfNjQpIG1haW4ge3suKn19IHN0YWNrIDI0XCYjMzQ7KVxuIC8qIG1heV9nb3RvIGNvdW50ZXIgYXQgLTI0ICovXG4gX194bGF0ZWQoXCYjMzQ7MDogKih1NjQgKikocjEwIC0yNCkgPVwmIzM0OylcbiAvKiBtYXlfZ290byB0aW1lc3RhbXAgYXQgLTE2ICovXG5AQCAtNjYxLDcgJiM0Mzs2NjUsOCBAQCBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb25feDg2XzY0KHZvaWQpXG4gU0VDKFwmIzM0O3Jhd190cFwmIzM0OylcbiBfX2FyY2hfYXJtNjRcbiBfX2FyY2hfcmlzY3Y2NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDI0XCYjMzQ7KVxuJiM0MztfX2xvZ19sZXZlbCg0KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKG1heV9nb3RvX2ludGVyYWN0aW9uKSBtYWluIHt7Lip9fSBzdGFjayAyNFwmIzM0OylcbiAvKiBtYXlfZ290byBjb3VudGVyIGF0IC0yNCAqL1xuIF9feGxhdGVkKFwmIzM0OzA6ICoodTY0ICopKHIxMCAtMjQpID1cJiMzNDspXG4gLyogbWF5X2dvdG8gdGltZXN0YW1wIGF0IC0xNiAqL1xuQEAgLTcwOCw3ICYjNDM7NzEzLDkgQEAgX19uYWtlZCBzdGF0aWMgdm9pZCBkdW1teV9sb29wX2NhbGxiYWNrKHZvaWQpXG4gXG4gU0VDKFwmIzM0O3Jhd190cFwmIzM0OylcbiBfX2FyY2hfeDg2XzY0XG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCYjMzQ7c3RhY2sgZGVwdGggMzImIzQzOzBcJiMzNDspXG4mIzQzO19fbG9nX2xldmVsKDQpXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoYnBmX2xvb3BfaW50ZXJhY3Rpb24xKSBtYWluIHt7Lip9fSBzdGFjayAzMlwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAxIChkdW1teV9sb29wX2NhbGxiYWNrKSBzdGF0aWMge3suKn19IHN0YWNrIDBcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MjogcjEgPSAxXCYjMzQ7KVxuIF9feGxhdGVkKFwmIzM0OzM6IHIwID1cJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7NDogcjAgPSBcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcJiMzNDspXG5AQCAtNzU2LDcgJiM0Mzs3NjMsOSBAQCBfX25ha2VkIGludCBicGZfbG9vcF9pbnRlcmFjdGlvbjEodm9pZClcbiBcbiBTRUMoXCYjMzQ7cmF3X3RwXCYjMzQ7KVxuIF9fYXJjaF94ODZfNjRcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcJiMzNDtzdGFjayBkZXB0aCA0MCYjNDM7MFwmIzM0OylcbiYjNDM7X19sb2dfbGV2ZWwoNClcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAwIChicGZfbG9vcF9pbnRlcmFjdGlvbjIpIG1haW4ge3suKn19IHN0YWNrIDQwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDEgKGR1bW15X2xvb3BfY2FsbGJhY2spIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFwmIzM0OylcbiAvKiBjYWxsIGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZCAqL1xuIF9feGxhdGVkKFwmIzM0OzI6IHIxID0gNDJcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MzogcjAgPVwmIzM0OylcbkBAIC04MDAsNyAmIzQzOzgwOSwxMCBAQCBfX25ha2VkIGludCBicGZfbG9vcF9pbnRlcmFjdGlvbjIodm9pZClcbiBcbiBTRUMoXCYjMzQ7cmF3X3RwXCYjMzQ7KVxuIF9fYXJjaF94ODZfNjRcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcJiMzNDtzdGFjayBkZXB0aCA1MTImIzQzOzAgbWF4IDUxMlwmIzM0OylcbiYjNDM7X19sb2dfbGV2ZWwoNClcbiYjNDM7X19tc2coXCYjMzQ7c3RhY2sgZGVwdGggbWF4IDUxMlwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAwIChjdW11bGF0aXZlX3N0YWNrX2RlcHRoKSBtYWluIHt7Lip9fSBzdGFjayA1MTJcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMSAoY3VtdWxhdGl2ZV9zdGFja19kZXB0aF9zdWJwcm9nKSBzdGF0aWMge3suKn19IHN0YWNrIDBcJiMzNDspXG4gLyoganVzdCB0byBwcmludCB4bGF0ZWQgdmVyc2lvbiB3aGVuIGRlYnVnZ2luZyAqL1xuIF9feGxhdGVkKFwmIzM0O3IwID0gXHUwMDI2KHZvaWQgX19wZXJjcHUgKikocjApXCYjMzQ7KVxuIF9fc3VjY2Vzc1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuY1xuaW5kZXggNjdkYzM1MmFkZGZkNy4uN2I2NWVlYTk3ZWJjMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2dsb2JhbF9zdWJwcm9ncy5jXG5AQCAtNTIsNyAmIzQzOzUyLDEwIEBAIF9fbXNnKFwmIzM0OygmIzM5O2dsb2JhbF9jYWxsc19nb29kX29ubHkmIzM5OykgaXMgZ2xvYmFsIGFuZCBhc3N1bWVkIHZhbGlkLlwmIzM0OylcbiAvKiBldmVudHVhbGx5IGdsb2JhbF9nb29kKCkgaXMgdHJhbnNpdGl2ZWx5IHZhbGlkYXRlZCBhcyB3ZWxsICovXG4gX19tc2coXCYjMzQ7VmFsaWRhdGluZyBnbG9iYWxfZ29vZCgpIGZ1bmNcJiMzNDspXG4gX19tc2coXCYjMzQ7KCYjMzk7Z2xvYmFsX2dvb2QmIzM5OykgaXMgc2FmZSBmb3IgYW55IGFyZ3MgdGhhdCBtYXRjaCBpdHMgcHJvdG90eXBlXCYjMzQ7KVxuLV9fbXNnKFwmIzM0O2luc25zIHByb2Nlc3NlZCB7e1swLTldJiM0MztcXFxcJiM0MztbMC05XSYjNDM7XFxcXCYjNDM7WzAtOV0mIzQzOyR9fVwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAwIChjaGFpbmVkX2dsb2JhbF9mdW5jX2NhbGxzX3N1Y2Nlc3MpIG1haW4gaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2tcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKGdsb2JhbF9jYWxsc19nb29kX29ubHkpIGdsb2JhbCBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgMiBzdGFja1wmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyB7e1swLTldJiM0Mzt9fSAoZ2xvYmFsX2dvb2QpIGdsb2JhbCBpbnNuc19zZWxmIDUgaW5zbnNfdG90YWwgNSBzdGFja1wmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7cHJvY2Vzc2VkIDE0IGluc25zXCYjMzQ7KVxuIGludCBjaGFpbmVkX2dsb2JhbF9mdW5jX2NhbGxzX3N1Y2Nlc3Modm9pZClcbiB7XG4gXHRpbnQgc3VtID0gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suY1xuaW5kZXggYmI4MjA2ZTEwODgwYy4uZWEwYTdlNzMzMzFkYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcbkBAIC04Niw3ICYjNDM7ODYsOSBAQCBfX25ha2VkIHN0YXRpYyB2b2lkIGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZyh2b2lkKVxuIFNFQyhcJiMzNDtrcHJvYmVcJiMzNDspXG4gX19kZXNjcmlwdGlvbihcJiMzNDtQcml2YXRlIHN0YWNrLCBzdWJ0cmVlIFx1MDAzZSBNQVhfQlBGX1NUQUNLXCYjMzQ7KVxuIF9fc3VjY2Vzc1xuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDUxMiYjNDM7MzIgbWF4IDUxMlwmIzM0OylcbiYjNDM7X19sb2dfbGV2ZWwoNCkgX19tc2coXCYjMzQ7c3RhY2sgZGVwdGggbWF4IDUxMlwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAwIChwcml2YXRlX3N0YWNrX25lc3RlZF8xKSBtYWluIHt7Lip9fSBzdGFjayA1MTJcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMSAoY3VtdWxhdGl2ZV9zdGFja19kZXB0aF9zdWJwcm9nKSBzdGF0aWMge3suKn19IHN0YWNrIDMyXCYjMzQ7KVxuIF9fYXJjaF94ODZfNjRcbiAvKiBwcml2YXRlIHN0YWNrIGZwIGZvciB0aGUgbWFpbiBwcm9nICovXG4gX19qaXRlZChcJiMzNDtcdG1vdmFic3FcdCQweHt7Lip9fSwgJXI5XCYjMzQ7KVxuQEAgLTMzMSw3ICYjNDM7MzMzLDExIEBAIFNFQyhcJiMzNDtmZW50cnkvYnBmX2ZlbnRyeV90ZXN0OVwmIzM0OylcbiBfX2Rlc2NyaXB0aW9uKFwmIzM0O1ByaXZhdGUgc3RhY2ssIGFzeW5jIGNhbGxiYWNrLCBwb3RlbnRpYWwgbmVzdGluZ1wmIzM0OylcbiBfX3N1Y2Nlc3MgX19yZXR2YWwoMClcbiBfX2xvYWRfaWZfSklUZWQoKVxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDgmIzQzOzAmIzQzOzI1NiYjNDM7MCBtYXggMjcyXCYjMzQ7KVxuJiM0MztfX2xvZ19sZXZlbCg0KSBfX21zZyhcJiMzNDtzdGFjayBkZXB0aCBtYXggMjcyXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKHByaXZhdGVfc3RhY2tfYXN5bmNfY2FsbGJhY2tfMikgbWFpbiB7ey4qfX0gc3RhY2sgOFwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAxICh0aW1lcl9jYjEpIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAyIChzdWJwcm9nMSkgc3RhdGljIHt7Lip9fSBzdGFjayAyNTZcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMyAoc3VicHJvZzIpIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFwmIzM0OylcbiBfX2FyY2hfeDg2XzY0XG4gX19qaXRlZChcJiMzNDtcdHN1YnFcdCQweDEwMCwgJXJzcFwmIzM0OylcbiBfX2FyY2hfYXJtNjRcbkBAIC0zNTUsNyAmIzQzOzM2MSwxMCBAQCBpbnQgcHJpdmF0ZV9zdGFja19hc3luY19jYWxsYmFja18yKHZvaWQpXG4gU0VDKFwmIzM0O2ZlbnRyeS9icGZfZmVudHJ5X3Rlc3Q5XCYjMzQ7KVxuIF9fZGVzY3JpcHRpb24oXCYjMzQ7cHJpdmF0ZSBzdGFjaywgbWF4IHN0YWNrIGRlcHRoIGlzIHByaXZhdGUgc3RhY2tcJiMzNDspXG4gX19zdWNjZXNzXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCYjMzQ7c3RhY2sgZGVwdGggOCYjNDM7MjU2JiM0MzswIG1heCAyNTZcJiMzNDspXG4mIzQzO19fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIG1heCAyNTZcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAocHJpdmF0ZV9zdGFja19tYXhfZGVwdGgpIG1haW4ge3suKn19IHN0YWNrIDhcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMSAoc3VicHJvZzEpIHN0YXRpYyBpbnNuc19zZWxmIHt7WzAtOV0mIzQzO319IGluc25zX3RvdGFsIHt7WzAtOV0mIzQzO319IHN0YWNrIDI1NlwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAyIChzdWJwcm9nMikgc3RhdGljIGluc25zX3NlbGYge3tbMC05XSYjNDM7fX0gaW5zbnNfdG90YWwge3tbMC05XSYjNDM7fX0gc3RhY2sgMFwmIzM0OylcbiBpbnQgcHJpdmF0ZV9zdGFja19tYXhfZGVwdGgodm9pZClcbiB7XG4gXHRpbnQgeCA9IDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uOGY2MDgyZmRiNWM4NFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cy5jXG5AQCAtMCwwICYjNDM7MSwyMjMgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY3ZtbGludXguaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgdGltZXJfdmFsdWUge1xuJiM0MztcdHN0cnVjdCBicGZfdGltZXIgdGltZXI7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3Qge1xuJiM0MztcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfQVJSQVkpO1xuJiM0MztcdF9fdWludChtYXhfZW50cmllcywgMSk7XG4mIzQzO1x0X190eXBlKGtleSwgX191MzIpO1xuJiM0MztcdF9fdHlwZSh2YWx1ZSwgc3RydWN0IHRpbWVyX3ZhbHVlKTtcbiYjNDM7fSB0aW1lcl9tYXAgU0VDKFwmIzM0Oy5tYXBzXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDs/cmF3X3RwXCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyAwIChzdGF0c19tYWluX29ubHkpIG1haW4gaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMFwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7cHJvY2Vzc2VkIDIgaW5zbnNcJiMzNDspXG4mIzQzO19fbmFrZWQgaW50IHN0YXRzX21haW5fb25seSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcbiYjNDM7XHRcdFwmIzM0O3IwID0gMDtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O2V4aXQ7XCYjMzQ7XG4mIzQzO1x0KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7X19uYWtlZCBfX25vaW5saW5lIF9fdXNlZFxuJiM0MztzdGF0aWMgaW50IHN0YXRzX2NoYWluX2xlYWYodm9pZClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZSAoXG4mIzQzO1x0XHRcJiMzNDtyMCA9IDA7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtleGl0O1wmIzM0O1xuJiM0MztcdCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fbmFrZWQgX19ub2lubGluZSBfX3VzZWRcbiYjNDM7c3RhdGljIGludCBzdGF0c19jaGFpbl9wYXJlbnQodm9pZClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZSAoXG4mIzQzO1x0XHRcJiMzNDtjYWxsIHN0YXRzX2NoYWluX2xlYWY7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtleGl0O1wmIzM0O1xuJiM0MztcdCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDs/cmF3X3RwXCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcbiYjNDM7LypcbiYjNDM7ICogc2VsZjogMiAmIzQzOyAyICYjNDM7IDIgPSA2XG4mIzQzOyAqIHRvdGFsczogbGVhZiAyLCBwYXJlbnQgMiAmIzQzOyAyID0gNCwgbWFpbiAyICYjNDM7IDQgPSA2XG4mIzQzOyAqL1xuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKHN0YXRzX3N0YXRpY19jaGFpbikgbWFpbiBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgNiBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19jaGFpbl9wYXJlbnQpIHN0YXRpYyBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgNCBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19jaGFpbl9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMFwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7cHJvY2Vzc2VkIDYgaW5zbnNcJiMzNDspXG4mIzQzO19fbmFrZWQgaW50IHN0YXRzX3N0YXRpY19jaGFpbih2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcbiYjNDM7XHRcdFwmIzM0O2NhbGwgc3RhdHNfY2hhaW5fcGFyZW50O1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7ZXhpdDtcJiMzNDtcbiYjNDM7XHQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkXG4mIzQzO3N0YXRpYyBpbnQgc3RhdHNfc2hhcmVkX2xlYWYodm9pZClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZSAoXG4mIzQzO1x0XHRcJiMzNDtyMCA9IDA7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtleGl0O1wmIzM0O1xuJiM0MztcdCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fbmFrZWQgX19ub2lubGluZSBfX3VzZWRcbiYjNDM7aW50IHN0YXRzX2dsb2JhbF9yb290KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRhc20gdm9sYXRpbGUgKFxuJiM0MztcdFx0XCYjMzQ7Y2FsbCBzdGF0c19zaGFyZWRfbGVhZjtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O2V4aXQ7XCYjMzQ7XG4mIzQzO1x0KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0Oz9yYXdfdHBcJiMzNDspXG4mIzQzO19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KVxuJiM0MzsvKlxuJiM0MzsgKiBzdGF0c19zaGFyZWRfbGVhZiBpcyBleHBsb3JlZCBvbmNlIHVuZGVyIGVhY2ggaW5kZXBlbmRlbnQgcm9vdC5cbiYjNDM7ICogc2VsZjogbWFpbiAzICYjNDM7IGxlYWYgNCAmIzQzOyBnbG9iYWwgMiA9IDlcbiYjNDM7ICogcm9vdCB0b3RhbHM6IG1haW4gNSAmIzQzOyBnbG9iYWwgNCA9IDlcbiYjNDM7ICovXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoc3RhdHNfc2hhcmVkX3Jvb3RzKSBtYWluIGluc25zX3NlbGYgMyBpbnNuc190b3RhbCA1IHN0YWNrIDBcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX3NoYXJlZF9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiA0IGluc25zX3RvdGFsIDQgc3RhY2sgMFwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7c3VicHJvZyB7e1swLTldJiM0Mzt9fSAoc3RhdHNfZ2xvYmFsX3Jvb3QpIGdsb2JhbCBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgNCBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtwcm9jZXNzZWQgOSBpbnNuc1wmIzM0OylcbiYjNDM7X19uYWtlZCBpbnQgc3RhdHNfc2hhcmVkX3Jvb3RzKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRhc20gdm9sYXRpbGUgKFxuJiM0MztcdFx0XCYjMzQ7Y2FsbCBzdGF0c19zaGFyZWRfbGVhZjtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O2NhbGwgc3RhdHNfZ2xvYmFsX3Jvb3Q7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtleGl0O1wmIzM0O1xuJiM0MztcdCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fbm9pbmxpbmUgX191c2VkXG4mIzQzO3N0YXRpYyBpbnQgc3RhdHNfYXN5bmNfbGVhZih2b2lkICptYXAsIF9fdTMyICprZXksIHN0cnVjdCBicGZfdGltZXIgKnRpbWVyKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fbm9pbmxpbmUgX191c2VkXG4mIzQzO3N0YXRpYyBfX3U2NCBzdGF0c19hc3luY19zY2hlZHVsZShzdHJ1Y3QgYnBmX21hcCAqbWFwLCBfX3UzMiAqa2V5LFxuJiM0MztcdFx0XHRcdCAgc3RydWN0IHRpbWVyX3ZhbHVlICp2YWx1ZSwgdm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcbiYjNDM7XHRcdFwmIzM0O3IxID0gJVt0aW1lcl07XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtyMiA9ICVbc3RhdHNfYXN5bmNfbGVhZl07XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107XCYjMzQ7XG4mIzQzO1x0XHQ6XG4mIzQzO1x0XHQ6IFt0aW1lcl0gXCYjMzQ7clwmIzM0OyAodmFsdWUpLFxuJiM0MztcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfbGVhZiksXG4mIzQzO1x0XHQgIF9faW1tKGJwZl90aW1lcl9zZXRfY2FsbGJhY2spXG4mIzQzO1x0XHQ6IF9fY2xvYmJlcl9jb21tb25cbiYjNDM7XHQpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7P3Jhd190cFwmIzM0OylcbiYjNDM7X19zdWNjZXNzIF9fbG9nX2xldmVsKDQpXG4mIzQzOy8qXG4mIzQzOyAqIHNlbGY6IDkgJiM0MzsgNyAmIzQzOyAyID0gMThcbiYjNDM7ICogdG90YWxzOiBsZWFmIDIsIHNjaGVkdWxlciA3LCBtYWluIHJvb3QgMThcbiYjNDM7ICovXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoc3RhdHNfYXN5bmNfZGlyZWN0KSBtYWluIGluc25zX3NlbGYgOSBpbnNuc190b3RhbCAxOCBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19hc3luY19zY2hlZHVsZSkgc3RhdGljIGluc25zX3NlbGYgNyBpbnNuc190b3RhbCA3IHN0YWNrIDBcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX2FzeW5jX2xlYWYpIHN0YXRpYyBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgMiBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtwcm9jZXNzZWQgMTggaW5zbnNcJiMzNDspXG4mIzQzO19fbmFrZWQgaW50IHN0YXRzX2FzeW5jX2RpcmVjdCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcbiYjNDM7XHRcdFwmIzM0O3IxID0gJVt0aW1lcl9tYXBdIGxsO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjIgPSAlW3N0YXRzX2FzeW5jX3NjaGVkdWxlXTtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O3IzID0gMDtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O3I0ID0gMDtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O2NhbGwgJVticGZfZm9yX2VhY2hfbWFwX2VsZW1dO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjAgPSAwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7ZXhpdDtcJiMzNDtcbiYjNDM7XHRcdDpcbiYjNDM7XHRcdDogX19pbW1fYWRkcih0aW1lcl9tYXApLFxuJiM0MztcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfc2NoZWR1bGUpLFxuJiM0MztcdFx0ICBfX2ltbShicGZfZm9yX2VhY2hfbWFwX2VsZW0pXG4mIzQzO1x0XHQ6IF9fY2xvYmJlcl9jb21tb25cbiYjNDM7XHQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztfX25vaW5saW5lIF9fdXNlZFxuJiM0MztzdGF0aWMgaW50IHN0YXRzX2FzeW5jX25lc3RlZF9sZWFmKHZvaWQgKm1hcCwgX191MzIgKmtleSwgc3RydWN0IGJwZl90aW1lciAqdGltZXIpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7X19ub2lubGluZSBfX3VzZWRcbiYjNDM7c3RhdGljIGludCBzdGF0c19hc3luY19vdXRlcih2b2lkICptYXAsIF9fdTMyICprZXksIHN0cnVjdCBicGZfdGltZXIgKnRpbWVyKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcbiYjNDM7XHRcdFwmIzM0O3IxID0gJVt0aW1lcl07XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtyMiA9ICVbc3RhdHNfYXN5bmNfbmVzdGVkX2xlYWZdO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7Y2FsbCAlW2JwZl90aW1lcl9zZXRfY2FsbGJhY2tdO1wmIzM0O1xuJiM0MztcdFx0OlxuJiM0MztcdFx0OiBbdGltZXJdIFwmIzM0O3JcJiMzNDsgKHRpbWVyKSxcbiYjNDM7XHRcdCAgX19pbW1fcHRyKHN0YXRzX2FzeW5jX25lc3RlZF9sZWFmKSxcbiYjNDM7XHRcdCAgX19pbW0oYnBmX3RpbWVyX3NldF9jYWxsYmFjaylcbiYjNDM7XHRcdDogX19jbG9iYmVyX2NvbW1vblxuJiM0MztcdCk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fbm9pbmxpbmUgX191c2VkXG4mIzQzO3N0YXRpYyBfX3U2NCBzdGF0c19hc3luY19uZXN0ZWRfc2NoZWR1bGUoc3RydWN0IGJwZl9tYXAgKm1hcCwgX191MzIgKmtleSxcbiYjNDM7XHRcdFx0XHRcdCBzdHJ1Y3QgdGltZXJfdmFsdWUgKnZhbHVlLCB2b2lkICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRhc20gdm9sYXRpbGUgKFxuJiM0MztcdFx0XCYjMzQ7cjEgPSAlW3RpbWVyXTtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O3IyID0gJVtzdGF0c19hc3luY19vdXRlcl07XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107XCYjMzQ7XG4mIzQzO1x0XHQ6XG4mIzQzO1x0XHQ6IFt0aW1lcl0gXCYjMzQ7clwmIzM0OyAodmFsdWUpLFxuJiM0MztcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfb3V0ZXIpLFxuJiM0MztcdFx0ICBfX2ltbShicGZfdGltZXJfc2V0X2NhbGxiYWNrKVxuJiM0MztcdFx0OiBfX2Nsb2JiZXJfY29tbW9uXG4mIzQzO1x0KTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0Oz9yYXdfdHBcJiMzNDspXG4mIzQzO19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KVxuJiM0MzsvKlxuJiM0MzsgKiBzZWxmOiA5ICYjNDM7IDcgJiM0MzsgNyAmIzQzOyAyID0gMjVcbiYjNDM7ICogdG90YWxzOiBsZWFmIDIsIG91dGVyIDcsIHNjaGVkdWxlciA3LCBtYWluIHJvb3QgMjVcbiYjNDM7ICovXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoc3RhdHNfYXN5bmNfbmVzdGVkKSBtYWluIGluc25zX3NlbGYgOSBpbnNuc190b3RhbCAyNSBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19hc3luY19uZXN0ZWRfc2NoZWR1bGUpIHN0YXRpYyBpbnNuc19zZWxmIDcgaW5zbnNfdG90YWwgNyBzdGFjayAwXCYjMzQ7KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19hc3luY19vdXRlcikgc3RhdGljIGluc25zX3NlbGYgNyBpbnNuc190b3RhbCA3IHN0YWNrIDBcJiMzNDspXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX2FzeW5jX25lc3RlZF9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMFwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7cHJvY2Vzc2VkIDI1IGluc25zXCYjMzQ7KVxuJiM0MztfX25ha2VkIGludCBzdGF0c19hc3luY19uZXN0ZWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZSAoXG4mIzQzO1x0XHRcJiMzNDtyMSA9ICVbdGltZXJfbWFwXSBsbDtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O3IyID0gJVtzdGF0c19hc3luY19uZXN0ZWRfc2NoZWR1bGVdO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjMgPSAwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjQgPSAwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7Y2FsbCAlW2JwZl9mb3JfZWFjaF9tYXBfZWxlbV07XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtyMCA9IDA7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtleGl0O1wmIzM0O1xuJiM0MztcdFx0OlxuJiM0MztcdFx0OiBfX2ltbV9hZGRyKHRpbWVyX21hcCksXG4mIzQzO1x0XHQgIF9faW1tX3B0cihzdGF0c19hc3luY19uZXN0ZWRfc2NoZWR1bGUpLFxuJiM0MztcdFx0ICBfX2ltbShicGZfZm9yX2VhY2hfbWFwX2VsZW0pXG4mIzQzO1x0XHQ6IF9fY2xvYmJlcl9jb21tb25cbiYjNDM7XHQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXG5pbmRleCAyNGNkMGE3NjM2NzMwLi5hNjNlMzM2NzUwOTE4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuQEAgLTE5OCw3ICYjNDM7MTk4LDggQEAgX19zdWNjZXNzXG4gLyogQ2hlY2sgdGhhdCB0aGUgbWF4aW11bSBzdGFjayBkZXB0aCBpcyBjb3JyZWN0bHkgbWFpbnRhaW5lZCBhY2NvcmRpbmcgdG8gdGhlXG4gICogbWF4aW11bSBwb3NzaWJsZSB2YXJpYWJsZSBvZmZzZXQuXG4gICovXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCYjMzQ7c3RhY2sgZGVwdGggMTZcJiMzNDspXG4mIzQzO19fbG9nX2xldmVsKDQpXG4mIzQzO19fbXNnKFwmIzM0O3N1YnByb2cgMCAoc3RhY2tfd3JpdGVfcHJpdl92c191bnByaXYpIG1haW4ge3suKn19IHN0YWNrIDE2XCYjMzQ7KVxuIF9fZmFpbHVyZV91bnByaXZcbiAvKiBWYXJpYWJsZSBzdGFjayBhY2Nlc3MgaXMgcmVqZWN0ZWQgZm9yIHVucHJpdmlsZWdlZC5cbiAgKi9cbkBAIC0yMzgsNyAmIzQzOzIzOSw4IEBAIF9fc3VjY2Vzc1xuIC8qIENoZWNrIHRoYXQgdGhlIG1heGltdW0gc3RhY2sgZGVwdGggaXMgY29ycmVjdGx5IG1haW50YWluZWQgYWNjb3JkaW5nIHRvIHRoZVxuICAqIG1heGltdW0gcG9zc2libGUgdmFyaWFibGUgb2Zmc2V0LlxuICAqL1xuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwmIzM0O3N0YWNrIGRlcHRoIDE2XCYjMzQ7KVxuJiM0MztfX2xvZ19sZXZlbCg0KVxuJiM0MztfX21zZyhcJiMzNDtzdWJwcm9nIDAgKHN0YWNrX3dyaXRlX2ZvbGxvd2VkX2J5X3JlYWQpIG1haW4ge3suKn19IHN0YWNrIDE2XCYjMzQ7KVxuIF9fZmFpbHVyZV91bnByaXZcbiBfX21zZ191bnByaXYoXCYjMzQ7UjIgdmFyaWFibGUgc3RhY2sgYWNjZXNzIHByb2hpYml0ZWQgZm9yICFyb290XCYjMzQ7KVxuIF9fcmV0dmFsKDApXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfdmVyaWZpZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3ZlcmlmaWVyLmNcbmluZGV4IGE4YWUwM2M1N2JiYWUuLmJmZmI3MzYwNDM0YzUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jXG5AQCAtMTU2MCw3ICYjNDM7MTU2MCw3IEBAIHN0YXRpYyB2b2lkIGRvX3Rlc3Rfc2luZ2xlKHN0cnVjdCBicGZfdGVzdCAqdGVzdCwgYm9vbCB1bnByaXYsXG4gXG4gXHRvcHRzLmV4cGVjdGVkX2F0dGFjaF90eXBlID0gdGVzdC1cdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZTtcbiBcdGlmIChleHBlY3RlZF9yZXQgPT0gVkVSQk9TRV9BQ0NFUFQpXG4tXHRcdG9wdHMubG9nX2xldmVsID0gMjtcbiYjNDM7XHRcdG9wdHMubG9nX2xldmVsID0gMiB8IDQ7XG4gXHRlbHNlIGlmICh2ZXJib3NlKVxuIFx0XHRvcHRzLmxvZ19sZXZlbCA9IHZlcmlmX2xvZ19sZXZlbCB8IDQ7IC8qIGZvcmNlIHN0YXRzICovXG4gXHRlbHNlXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL2NhbGxzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvY2FsbHMuY1xuaW5kZXggOGNkNjI2ZTA0NTUxNS4uZWI2ZTNiYWVmNDEyYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9jYWxscy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvY2FsbHMuY1xuQEAgLTEwOTEsNyAmIzQzOzEwOTEsMTcgQEBcbiBcdC8qIHN0YWNrX21haW49MzIsIHN0YWNrX0E9MjU2LCBzdGFja19CPTY0XG4gXHQgKiBhbmQgbWF4KG1haW4mIzQzO0EsIG1haW4mIzQzO0EmIzQzO0IpIFx1MDAzYyA1MTJcbiBcdCAqL1xuLVx0LnJlc3VsdCA9IEFDQ0VQVCxcbiYjNDM7XHQucmVzdWx0ID0gVkVSQk9TRV9BQ0NFUFQsXG4mIzQzO1x0LmVycnN0ciA9IFwmIzM0O3N0YWNrIGRlcHRoIG1heCAzNTJcXHRcJiMzNDtcbiYjNDM7XHRcdCAgXCYjMzQ7c3VicHJvZyAwIChcdTAwM2N1bmtub3duXHUwMDNlKSBtYWluIGluc25zX3NlbGYgXFx0XCYjMzQ7XG4mIzQzO1x0XHQgIFwmIzM0OyBpbnNuc190b3RhbCBcXHRcJiMzNDtcbiYjNDM7XHRcdCAgXCYjMzQ7IHN0YWNrIDMyXFx0XCYjMzQ7XG4mIzQzO1x0XHQgIFwmIzM0O3N1YnByb2cgMSAoXHUwMDNjdW5rbm93blx1MDAzZSkgc3RhdGljIGluc25zX3NlbGYgXFx0XCYjMzQ7XG4mIzQzO1x0XHQgIFwmIzM0OyBpbnNuc190b3RhbCBcXHRcJiMzNDtcbiYjNDM7XHRcdCAgXCYjMzQ7IHN0YWNrIDI1NlxcdFwmIzM0O1xuJiM0MztcdFx0ICBcJiMzNDtzdWJwcm9nIDIgKFx1MDAzY3Vua25vd25cdTAwM2UpIHN0YXRpYyBpbnNuc19zZWxmIFxcdFwmIzM0O1xuJiM0MztcdFx0ICBcJiMzNDsgaW5zbnNfdG90YWwgXFx0XCYjMzQ7XG4mIzQzO1x0XHQgIFwmIzM0OyBzdGFjayA2NFwmIzM0OyxcbiB9LFxuIHtcbiBcdFwmIzM0O2NhbGxzOiBzdGFjayBkZXB0aCBjaGVjayB1c2luZyB0aHJlZSBmcmFtZXMuIHRlc3QyXCYjMzQ7LFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbmluZGV4IGM5YzI1Nzc4NGVlM2QuLjVjMGVjM2VkY2U3MjAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbkBAIC05OTMsMTMgJiM0Mzs5OTMsMTUgQEAgc3RhdGljIHZvaWQgZnJlZV92ZXJpZl9zdGF0cyhzdHJ1Y3QgdmVyaWZfc3RhdHMgKnN0YXRzLCBzaXplX3Qgc3RhdF9jbnQpXG4gXG4gc3RhdGljIGNoYXIgdmVyaWZfbG9nX2J1Zls2NCAqIDEwMjRdO1xuIFxuLSNkZWZpbmUgTUFYX1BBUlNFRF9MT0dfTElORVMgMTAwXG4mIzQzOy8qIEtlZXAgcm9vbSBmb3IgYWxsIDI1NiBzdWJwcm9ncmFtIHJlY29yZHMgYW5kIHRyYWlsaW5nIHN0YXRpc3RpY3MuICovXG4mIzQzOyNkZWZpbmUgTUFYX1BBUlNFRF9MT0dfTElORVMgMzAwXG4gXG4gc3RhdGljIGludCBwYXJzZV92ZXJpZl9sb2coY2hhciAqIGNvbnN0IGJ1Ziwgc2l6ZV90IGJ1Zl9zeiwgc3RydWN0IHZlcmlmX3N0YXRzICpzKVxuIHtcbiBcdGNvbnN0IGNoYXIgKmN1cjtcbi1cdGludCBwb3MsIGxpbmVzLCBzdWJfc3RhY2ssIGNudCA9IDA7XG4tXHRjaGFyICpzdGF0ZSA9IE5VTEwsICp0b2tlbiwgc3RhY2tbNTEyXTtcbiYjNDM7XHRsb25nIHN1Yl9zdGFjaztcbiYjNDM7XHRpbnQgcG9zLCBsaW5lcywgY250ID0gMDtcbiYjNDM7XHRjaGFyICpzdGF0ZSA9IE5VTEwsICp0b2tlbiwgc3RhY2tbNTEyXSA9IHt9O1xuIFxuIFx0YnVmW2J1Zl9zeiAtIDFdID0gJiMzOTtcXDAmIzM5OztcbiBcbkBAIC0xMDI1LDExICYjNDM7MTAyNywyNCBAQCBzdGF0aWMgaW50IHBhcnNlX3ZlcmlmX2xvZyhjaGFyICogY29uc3QgYnVmLCBzaXplX3QgYnVmX3N6LCBzdHJ1Y3QgdmVyaWZfc3RhdHMgKlxuIFx0XHRcdFx0XHUwMDI2cy1cdTAwM2VzdGF0c1tNQVJLX1JFQURfTUFYX0xFTl0pKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIE5ldyBrZXJuZWxzIGVtaXQgb25lIFwmIzM0O3N1YnByb2cgXHUwMDNjaWRcdTAwM2UgKFx1MDAzY25hbWVcdTAwM2UpIFx1MDAzY2tpbmRcdTAwM2VcJiMzNDsgcmVjb3JkXG4mIzQzO1x0XHQgKiBwZXIgc3VicHJvZ3JhbSB3aXRoIHRoZSBzdGFjayBkZXB0aCBhdCB0aGUgZW5kLCB3aGlsZSBvbGRcbiYjNDM7XHRcdCAqIGtlcm5lbHMgZW1pdCBhIHNpbmdsZSBcJiMzNDtzdGFjayBkZXB0aCBcdTAwM2NhJiM0MzsuLi4mIzQzO25cdTAwM2UgbWF4IFx1MDAzY21heFx1MDAzZVwmIzM0O1xuJiM0MztcdFx0ICogbGluZS4gTWF0Y2ggYm90aCBmb3JtYXRzIHNvIHZlcmlzdGF0IHdvcmtzIGFnYWluc3QgZWl0aGVyXG4mIzQzO1x0XHQgKiBrZXJuZWwuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChzc2NhbmYoY3VyLCBcJiMzNDtzdGFjayBkZXB0aCBtYXggJWxkXCYjMzQ7LCBcdTAwMjZzLVx1MDAzZXN0YXRzW01BWF9TVEFDS10pID09IDEpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0aWYgKHNzY2FuZihjdXIsIFwmIzM0O3N1YnByb2cgJSpkICUqcyAlKnMgaW5zbnNfc2VsZiAlKmQgaW5zbnNfdG90YWwgJSpkIHN0YWNrICVsZFwmIzM0OywgXHUwMDI2c3ViX3N0YWNrKSA9PSAxKSB7XG4mIzQzO1x0XHRcdHMtXHUwMDNlc3RhdHNbU1RBQ0tdICYjNDM7PSBzdWJfc3RhY2s7XG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fVxuIFx0XHRpZiAoMiA9PSBzc2NhbmYoY3VyLCBcJiMzNDtzdGFjayBkZXB0aCAlNTExcyBtYXggJWxkXCYjMzQ7LCBzdGFjaywgXHUwMDI2cy1cdTAwM2VzdGF0c1tNQVhfU1RBQ0tdKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcdH1cbiBcdHdoaWxlICgodG9rZW4gPSBzdHJ0b2tfcihjbnQmIzQzOyYjNDM7ID8gTlVMTCA6IHN0YWNrLCBcJiMzNDsmIzQzO1wmIzM0OywgXHUwMDI2c3RhdGUpKSkge1xuLVx0XHRpZiAoc3NjYW5mKHRva2VuLCBcJiMzNDslZFwmIzM0OywgXHUwMDI2c3ViX3N0YWNrKSA9PSAwKVxuJiM0MztcdFx0aWYgKHNzY2FuZih0b2tlbiwgXCYjMzQ7JWxkXCYjMzQ7LCBcdTAwMjZzdWJfc3RhY2spID09IDApXG4gXHRcdFx0YnJlYWs7XG4gXHRcdHMtXHUwMDNlc3RhdHNbU1RBQ0tdICYjNDM7PSBzdWJfc3RhY2s7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjI6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBzdGF0aXN0aWNzIHRyYWNraW5nIGZvciB0aGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBwcm9jZXNzZWQgcGVyIHN1YnByb2dyYW0gZHVyaW5nIEJQRiB2ZXJpZmljYXRpb24gYW5kIG91dHB1dHMgdGhlbSBpbiB0aGUgdmVyaWZpZXIgbG9nLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgdmVyaWZpY2F0aW9uIGxvZ2ljLCBleGVjdXRpb24gZmxvdywgb3IgdGhlIGdlbmVyYXRlZCBCUEYgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyNzYyMTk5OGU3N2E3OThmZjk4Mjk2NTkzZTcyOTJkZWM1NzI4NDEwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTIgMjI6Mzg6MTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oIGIvaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaAppbmRleCA5M2Y3YzIwNzVlZWFhLi43YzM3NjQ1MWRiODI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgKQEAgLTM4MCw2ICYjNDM7MzgwLDggQEAgc3RydWN0IGJwZl9mdW5jX3N0YXRlIHsKIAkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbnVtYmVyIG9mIHNpbXVsYXRpb25zIGlzIHRyYWNrZWQgaW4gZnJhbWUgTgogCSAqLwogCXUzMiBjYWxsYmFja19kZXB0aDsKJiM0MzsJLyogSW5zdHJ1Y3Rpb25zIHByb2Nlc3NlZCBpbiB0aGlzIGZyYW1lIGFuZCBjYWxsZWVzIG9uIHRoZSBjdXJyZW50IHBhdGguICovCiYjNDM7CXUzMiBpbnNuc19zdWJ0b3RhbDsKIAogCS8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIHNob3VsZCBiZSBsYXN0LiBTZWUgY29weV9mdW5jX3N0YXRlKCkgKi8KIAkvKiBUaGUgc3RhdGUgb2YgdGhlIHN0YWNrLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGRlc2NyaWJlcyBCUEZfUkVHX1NJWkUKQEAgLTc5OCw3ICYjNDM7ODAwLDggQEAgc3RydWN0IGJwZl9zdWJwcm9nX2luZm8gewogCXUzMiBleGl0X2lkeDsgLyogSW5kZXggb2Ygb25lIG9mIHRoZSBCUEZfRVhJVCBpbnN0cnVjdGlvbnMgaW4gdGhpcyBzdWJwcm9ncmFtICovCiAJdTE2IHN0YWNrX2RlcHRoOyAvKiBtYXguIHN0YWNrIGRlcHRoIHVzZWQgYnkgdGhpcyBmdW5jdGlvbiAqLwogCXUxNiBzdGFja19leHRyYTsKLQl1MzIgaW5zbl9wcm9jZXNzZWQ7CiYjNDM7CXUzMiBpbnNuc190b3RhbDsKJiM0MzsJdTMyIGluc25zX3NlbGY7CiAJLyogb2Zmc2V0cyBpbiByYW5nZSBbc3RhY2tfZGVwdGggLi4gZmFzdGNhbGxfc3RhY2tfb2ZmKQogCSAqIGFyZSB1c2VkIGZvciBicGZfZmFzdGNhbGwgc3BpbGxzIGFuZCBmaWxscy4KIAkgKi8KZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCBhZGQzYWZmYzU3MDM1Li44MjBkMjgzMWYzNDAzIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC0xNTkzLDYgJiM0MzsxNTkzLDggQEAgc3RhdGljIGludCBjb3B5X2Z1bmNfc3RhdGUoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpkc3QsCiAJCQkgICBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKnNyYykKIHsKIAltZW1jcHkoZHN0LCBzcmMsIG9mZnNldG9mKHN0cnVjdCBicGZfZnVuY19zdGF0ZSwgc3RhY2spKTsKJiM0MzsJLyogSW5zdHJ1Y3Rpb24gYWNjb3VudGluZyBpcyBwYXRoLWxvY2FsLCBub3QgcGFydCBvZiB2ZXJpZmllciBzdGF0ZS4gKi8KJiM0MzsJZHN0LSZndDtpbnNuc19zdWJ0b3RhbCA9IDA7CiAJcmV0dXJuIGNvcHlfc3RhY2tfc3RhdGUoZHN0LCBzcmMpOwogfQogCkBAIC05NzE3LDYgJiM0Mzs5NzE5LDQyIEBAIHN0YXRpYyBpbnQgc2V0X3Rhc2tfd29ya19zY2hlZHVsZV9jYWxsYmFja19zdGF0ZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCiBzdGF0aWMgYm9vbCBpc19yYnRyZWVfbG9ja19yZXF1aXJlZF9rZnVuYyh1MzIgYnRmX2lkKTsKIAomIzQzO3N0YXRpYyB2b2lkIGFjY291bnRfcHJvY2Vzc2VkX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfZnVuY19zdGF0ZSAqZnJhbWUgPSBjdXJfZnVuYyhlbnYpOwomIzQzOwomIzQzOwllbnYtJmd0O2luc25fcHJvY2Vzc2VkJiM0MzsmIzQzOzsKJiM0MzsJZnJhbWUtJmd0O2luc25zX3N1YnRvdGFsJiM0MzsmIzQzOzsKJiM0MzsJZW52LSZndDtzdWJwcm9nX2luZm9bZnJhbWUtJmd0O3N1YnByb2dub10uaW5zbnNfc2VsZiYjNDM7JiM0Mzs7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGFjY291bnRfcHJvY2Vzc2VkX2luc25zKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiYjNDM7CQkJCSAgICBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmNhbGxlZSwKJiM0MzsJCQkJICAgIHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqY2FsbGVyKQomIzQzO3sKJiM0MzsJdTMyIGluc25zOwomIzQzOwomIzQzOwlpZiAoIWNhbGxlZSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaW5zbnMgPSBjYWxsZWUtJmd0O2luc25zX3N1YnRvdGFsOwomIzQzOwomIzQzOwllbnYtJmd0O3N1YnByb2dfaW5mb1tjYWxsZWUtJmd0O3N1YnByb2dub10uaW5zbnNfdG90YWwgJiM0Mzs9IGluc25zOwomIzQzOwlpZiAoY2FsbGVyKQomIzQzOwkJY2FsbGVyLSZndDtpbnNuc19zdWJ0b3RhbCAmIzQzOz0gaW5zbnM7CiYjNDM7CWNhbGxlZS0mZ3Q7aW5zbnNfc3VidG90YWwgPSAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBhY2NvdW50X2N1cnJlbnRfcGF0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl92ZXJpZmllcl9zdGF0ZSAqc3RhdGUgPSBlbnYtJmd0O2N1cl9zdGF0ZTsKJiM0MzsJaW50IGZyYW1lOwomIzQzOwomIzQzOwlmb3IgKGZyYW1lID0gc3RhdGUtJmd0O2N1cmZyYW1lOyBmcmFtZSAmZ3Q7PSAwOyBmcmFtZS0tKQomIzQzOwkJYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoZW52LCBzdGF0ZS0mZ3Q7ZnJhbWVbZnJhbWVdLAomIzQzOwkJCQkJZnJhbWUgPyBzdGF0ZS0mZ3Q7ZnJhbWVbZnJhbWUgLSAxXSA6IE5VTEwpOwomIzQzO30KJiM0MzsKIC8qIEFyZSB3ZSBjdXJyZW50bHkgdmVyaWZ5aW5nIHRoZSBjYWxsYmFjayBmb3IgYSByYnRyZWUgaGVscGVyIHRoYXQgbXVzdAogICogYmUgY2FsbGVkIHdpdGggbG9jayBoZWxkPyBJZiBzbywgbm8gbmVlZCB0byBjb21wbGFpbiBhYm91dCB1bnJlbGVhc2VkCiAgKiBsb2NrCkBAIC05ODEzLDYgJiM0Mzs5ODUxLDcgQEAgc3RhdGljIGludCBwcmVwYXJlX2Z1bmNfZXhpdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgKmluc25faWR4KQogCQl2ZXJib3NlKGVudiwgJiMzNDt0byBjYWxsZXIgYXQgJWQ6XG4mIzM0OywgKmluc25faWR4KTsKIAkJcHJpbnRfdmVyaWZpZXJfc3RhdGUoZW52LCBzdGF0ZSwgY2FsbGVyLSZndDtmcmFtZW5vLCB0cnVlKTsKIAl9CiYjNDM7CWFjY291bnRfcHJvY2Vzc2VkX2luc25zKGVudiwgY2FsbGVlLCBjYWxsZXIpOwogCS8qIGNsZWFyIGV2ZXJ5dGhpbmcgaW4gdGhlIGNhbGxlZS4gSW4gY2FzZSBvZiBleGNlcHRpb25hbCBleGl0cyB1c2luZwogCSAqIGJwZl90aHJvdywgdGhpcyB3aWxsIGJlIGRvbmUgYnkgY29weV92ZXJpZmllcl9zdGF0ZSBmb3IgZXh0cmEgZnJhbWVzLiAqLwogCWZyZWVfZnVuY19zdGF0ZShjYWxsZWUpOwpAQCAtMTczNjgsNyAmIzQzOzE3NDA3LDkgQEAgc3RhdGljIGludCBkb19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KQogCQlpbnNuID0gJmFtcDtpbnNuc1tlbnYtJmd0O2luc25faWR4XTsKIAkJaW5zbl9hdXggPSAmYW1wO2Vudi0mZ3Q7aW5zbl9hdXhfZGF0YVtlbnYtJmd0O2luc25faWR4XTsKIAotCQlpZiAoJiM0MzsmIzQzO2Vudi0mZ3Q7aW5zbl9wcm9jZXNzZWQgJmd0OyBCUEZfQ09NUExFWElUWV9MSU1JVF9JTlNOUykgewomIzQzOwkJYWNjb3VudF9wcm9jZXNzZWRfaW5zbihlbnYpOwomIzQzOwomIzQzOwkJaWYgKGVudi0mZ3Q7aW5zbl9wcm9jZXNzZWQgJmd0OyBCUEZfQ09NUExFWElUWV9MSU1JVF9JTlNOUykgewogCQkJdmVyYm9zZShlbnYsCiAJCQkJJiMzNDtCUEYgcHJvZ3JhbSBpcyB0b28gbGFyZ2UuIFByb2Nlc3NlZCAlZCBpbnNuXG4mIzM0OywKIAkJCQllbnYtJmd0O2luc25fcHJvY2Vzc2VkKTsKQEAgLTE3NTA5LDYgJiM0MzsxNzU1MCw3IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2soc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudikKIAkJCQkJICAgICYjMzQ7c3BlY3VsYXRpb24gYmFycmllciBhZnRlciBqdW1wIGluc3RydWN0aW9uIG1heSBub3QgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3QmIzM0OykpCiAJCQkJcmV0dXJuIC1FRkFVTFQ7CiBwcm9jZXNzX2JwZl9leGl0OgomIzQzOwkJCWFjY291bnRfY3VycmVudF9wYXRoKGVudik7CiAJCQltYXJrX3ZlcmlmaWVyX3N0YXRlX3NjcmF0Y2hlZChlbnYpOwogCQkJZXJyID0gYnBmX3VwZGF0ZV9icmFuY2hfY291bnRzKGVudiwgZW52LSZndDtjdXJfc3RhdGUpOwogCQkJaWYgKGVycikKQEAgLTE4NDE1LDYgJiM0MzsxODQ1Nyw3IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfY29tbW9uKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nKQogCXN0cnVjdCBicGZfcHJvZ19hdXggKmF1eCA9IGVudi0mZ3Q7cHJvZy0mZ3Q7YXV4OwogCXN0cnVjdCBicGZfdmVyaWZpZXJfc3RhdGUgKnN0YXRlOwogCXN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzOwomIzQzOwl1MzIgaW5zbl9wcm9jZXNzZWQgPSBlbnYtJmd0O2luc25fcHJvY2Vzc2VkOwogCWludCByZXQsIGk7CiAKIAllbnYtJmd0O3ByZXZfbGluZm8gPSBOVUxMOwpAQCAtMTg1NTMsOSAmIzQzOzE4NTk2LDE5IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfY29tbW9uKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nKQogCiAJcmV0ID0gZG9fY2hlY2soZW52KTsKIG91dDoKJiM0MzsJYWNjb3VudF9jdXJyZW50X3BhdGgoZW52KTsKIAlpZiAoIXJldCAmYW1wOyZhbXA7IHBvcF9sb2cpCiAJCWJwZl92bG9nX3Jlc2V0KCZhbXA7ZW52LSZndDtsb2csIDApOwogCWZyZWVfc3RhdGVzKGVudik7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFRoZSBvdmVycmlkZSBpcyBuZWVkZWQgdG8gYWNjb3VudCBmb3IgYXN5bmMgc3VicHJvZ3JhbXMsIHdoaWNoCiYjNDM7CSAqIGFyZSB2ZXJpZmllZCB3aXRoIHRoZWlyIG93biBzZXQgb2Ygc3RhY2sgZnJhbWVzIGFuZCB0aHVzIGFyZQomIzQzOwkgKiBub3QgYWNjb3VudGVkIGFzIGNhbGxlZXMgYnkgYWNjb3VudF9jdXJyZW50X3BhdGgoKS4KJiM0MzsJICogQWNjdW11bGF0ZSB0aGVpciB0b3RhbCBjb3VudHMgYXMgdG90YWwgY291bnRzIG9mIHRoZSBtYWluIG9yCiYjNDM7CSAqIGdsb2JhbCBzdWJwcm9nIGhvc3RpbmcgdGhlIGFzeW5jIGNhbGwuCiYjNDM7CSAqLwomIzQzOwllbnYtJmd0O3N1YnByb2dfaW5mb1tzdWJwcm9nXS5pbnNuc190b3RhbCA9IGVudi0mZ3Q7aW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xODU4NCw3ICYjNDM7MTg2MzcsNiBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiAJc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4ID0gZW52LSZndDtwcm9nLSZndDthdXg7CiAJc3RydWN0IGJwZl9mdW5jX2luZm9fYXV4ICpzdWJfYXV4OwogCWludCBpLCByZXQsIG5ld19jbnQ7Ci0JdTMyIGluc25fcHJvY2Vzc2VkOwogCiAJaWYgKCFhdXgtJmd0O2Z1bmNfaW5mbykKIAkJcmV0dXJuIDA7CkBAIC0xODU5OSw4ICYjNDM7MTg2NTEsNiBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiAJCWlmICghYnBmX3N1YnByb2dfaXNfZ2xvYmFsKGVudiwgaSkpCiAJCQljb250aW51ZTsKIAotCQlpbnNuX3Byb2Nlc3NlZCA9IGVudi0mZ3Q7aW5zbl9wcm9jZXNzZWQ7Ci0KIAkJc3ViX2F1eCA9IHN1YnByb2dfYXV4KGVudiwgaSk7CiAJCWlmICghc3ViX2F1eC0mZ3Q7Y2FsbGVkIHx8IHN1Yl9hdXgtJmd0O3ZlcmlmaWVkKQogCQkJY29udGludWU7CkBAIC0xODYwOCw3ICYjNDM7MTg2NTgsNiBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiAJCWVudi0mZ3Q7aW5zbl9pZHggPSBlbnYtJmd0O3N1YnByb2dfaW5mb1tpXS5zdGFydDsKIAkJV0FSTl9PTl9PTkNFKGVudi0mZ3Q7aW5zbl9pZHggPT0gMCk7CiAJCXJldCA9IGRvX2NoZWNrX2NvbW1vbihlbnYsIGkpOwotCQllbnYtJmd0O3N1YnByb2dfaW5mb1tpXS5pbnNuX3Byb2Nlc3NlZCA9IGVudi0mZ3Q7aW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDsKIAkJaWYgKHJldCkgewogCQkJcmV0dXJuIHJldDsKIAkJfSBlbHNlIGlmIChlbnYtJmd0O2xvZy5sZXZlbCAmYW1wOyBCUEZfTE9HX0xFVkVMKSB7CkBAIC0xODYzNSwxMiAmIzQzOzE4Njg0LDEwIEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudikKIAogc3RhdGljIGludCBkb19jaGVja19tYWluKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiB7Ci0JdTMyIGluc25fcHJvY2Vzc2VkID0gZW52LSZndDtpbnNuX3Byb2Nlc3NlZDsKIAlpbnQgcmV0OwogCiAJZW52LSZndDtpbnNuX2lkeCA9IDA7CiAJcmV0ID0gZG9fY2hlY2tfY29tbW9uKGVudiwgMCk7Ci0JZW52LSZndDtzdWJwcm9nX2luZm9bMF0uaW5zbl9wcm9jZXNzZWQgPSBlbnYtJmd0O2luc25fcHJvY2Vzc2VkIC0gaW5zbl9wcm9jZXNzZWQ7CiAJaWYgKCFyZXQpCiAJCWVudi0mZ3Q7cHJvZy0mZ3Q7YXV4LSZndDtzdGFja19kZXB0aCA9IGVudi0mZ3Q7c3VicHJvZ19pbmZvWzBdLnN0YWNrX2RlcHRoOwogCXJldHVybiByZXQ7CkBAIC0xODY1NSwxNSAmIzQzOzE4NzAyLDIwIEBAIHN0YXRpYyB2b2lkIHByaW50X3ZlcmlmaWNhdGlvbl9zdGF0cyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KQogCWlmIChlbnYtJmd0O2xvZy5sZXZlbCAmYW1wOyBCUEZfTE9HX1NUQVRTKSB7CiAJCXZlcmJvc2UoZW52LCAmIzM0O3ZlcmlmaWNhdGlvbiB0aW1lICVsbGQgdXNlY1xuJiMzNDssCiAJCQlkaXZfdTY0KGVudi0mZ3Q7dmVyaWZpY2F0aW9uX3RpbWUsIDEwMDApKTsKLQkJdmVyYm9zZShlbnYsICYjMzQ7c3RhY2sgZGVwdGggJWQmIzM0OywgZW52LSZndDtzdWJwcm9nX2luZm9bMF0uc3RhY2tfZGVwdGgpOwotCQlmb3IgKGkgPSAxOyBpICZsdDsgc3VicHJvZ19jbnQ7IGkmIzQzOyYjNDM7KQotCQkJdmVyYm9zZShlbnYsICYjMzQ7JiM0MzslZCYjMzQ7LCBlbnYtJmd0O3N1YnByb2dfaW5mb1tpXS5zdGFja19kZXB0aCk7Ci0JCXZlcmJvc2UoZW52LCAmIzM0OyBtYXggJWRcbiYjMzQ7LCBlbnYtJmd0O21heF9zdGFja19kZXB0aCk7Ci0JCXZlcmJvc2UoZW52LCAmIzM0O2luc25zIHByb2Nlc3NlZCAlZCYjMzQ7LCBlbnYtJmd0O3N1YnByb2dfaW5mb1swXS5pbnNuX3Byb2Nlc3NlZCk7Ci0JCWZvciAoaSA9IDE7IGkgJmx0OyBzdWJwcm9nX2NudDsgaSYjNDM7JiM0MzspCi0JCQlpZiAoYnBmX3N1YnByb2dfaXNfZ2xvYmFsKGVudiwgaSkpCi0JCQkJdmVyYm9zZShlbnYsICYjMzQ7JiM0MzslZCYjMzQ7LCBlbnYtJmd0O3N1YnByb2dfaW5mb1tpXS5pbnNuX3Byb2Nlc3NlZCk7Ci0JCXZlcmJvc2UoZW52LCAmIzM0O1xuJiMzNDspOwomIzQzOwkJdmVyYm9zZShlbnYsICYjMzQ7c3RhY2sgZGVwdGggbWF4ICVkXG4mIzM0OywgZW52LSZndDttYXhfc3RhY2tfZGVwdGgpOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IHN1YnByb2dfY250OyBpJiM0MzsmIzQzOykgewomIzQzOwkJCWNvbnN0IGNoYXIgKm5hbWUgPSBlbnYtJmd0O3N1YnByb2dfaW5mb1tpXS5uYW1lOwomIzQzOwkJCWNvbnN0IGNoYXIgKmtpbmQ7CiYjNDM7CiYjNDM7CQkJaWYgKCFuYW1lIHx8ICFuYW1lWzBdKQomIzQzOwkJCQluYW1lID0gJiMzNDsmbHQ7dW5rbm93biZndDsmIzM0OzsKJiM0MzsJCQlraW5kID0gaSA9PSAwID8gJiMzNDttYWluJiMzNDsgOgomIzQzOwkJCSAgICAgICBicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSA/ICYjMzQ7Z2xvYmFsJiMzNDsgOiAmIzM0O3N0YXRpYyYjMzQ7OwomIzQzOwkJCXZlcmJvc2UoZW52LCAmIzM0O3N1YnByb2cgJWQgKCVzKSAlcyBpbnNuc19zZWxmICVkIGluc25zX3RvdGFsICVkIHN0YWNrICVkXG4mIzM0OywKJiM0MzsJCQkJaSwgbmFtZSwga2luZCwgZW52LSZndDtzdWJwcm9nX2luZm9baV0uaW5zbnNfc2VsZiwKJiM0MzsJCQkJZW52LSZndDtzdWJwcm9nX2luZm9baV0uaW5zbnNfdG90YWwsCiYjNDM7CQkJCWVudi0mZ3Q7c3VicHJvZ19pbmZvW2ldLnN0YWNrX2RlcHRoKTsKJiM0MzsJCX0KIAl9CiAJdmVyYm9zZShlbnYsICYjMzQ7cHJvY2Vzc2VkICVkIGluc25zIChsaW1pdCAlZCkgbWF4X3N0YXRlc19wZXJfaW5zbiAlZCAmIzM0OwogCQkmIzM0O3RvdGFsX3N0YXRlcyAlZCBwZWFrX3N0YXRlcyAlZCBtYXJrX3JlYWQgJWRcbiYjMzQ7LApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmMKaW5kZXggNWIyNjVhZjNiMWQ1Ny4uODExM2ZlYTdiYTg2YyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jCkBAIC0xMDIsNiAmIzQzOzEwMiw3IEBACiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt2ZXJpZmllcl9zdGFja19wdHIuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfc3RvcmVfcmVsZWFzZS5za2VsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX3N1YnByb2dfcHJlY2lzaW9uLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX3N1YnByb2dfdG9wby5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt2ZXJpZmllcl9zdWJyZWcuc2tlbC5oJiMzNDsKQEAgLTI2Miw2ICYjNDM7MjYzLDcgQEAgdm9pZCB0ZXN0X3ZlcmlmaWVyX3N0YWNrX2FyZyh2b2lkKSAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N0YWNrX2FyZyk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIodm9pZCkgICAgICB7IFJVTih2ZXJpZmllcl9zdGFja19hcmdfb3JkZXIpOyB9CiB2b2lkIHRlc3RfdmVyaWZpZXJfc3RhY2tfcHRyKHZvaWQpICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfc3RhY2tfcHRyKTsgfQogdm9pZCB0ZXN0X3ZlcmlmaWVyX3N0b3JlX3JlbGVhc2Uodm9pZCkgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N0b3JlX3JlbGVhc2UpOyB9CiYjNDM7dm9pZCB0ZXN0X3ZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cyh2b2lkKSAgIHsgUlVOKHZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cyk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbih2b2lkKSAgICB7IFJVTih2ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbik7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9zdWJwcm9nX3RvcG8odm9pZCkgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N1YnByb2dfdG9wbyk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9zdWJyZWcodm9pZCkgICAgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9zdWJyZWcpOyB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jCmluZGV4IGQzZGY3YTlmMWQ4YzguLjBlYjQ5NWNlODVjMWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jCkBAIC0yNyw3ICYjNDM7MjcsOCBAQCBfX25ha2VkIHZvaWQgc3RhY2tfb3V0X29mX2JvdW5kcyh2b2lkKQogCiBTRUMoJiMzNDtzb2NrZXQmIzM0OykKIF9fZGVzY3JpcHRpb24oJiMzNDt1bmluaXRpYWxpemVkIHN0YWNrMSYjMzQ7KQotX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpIF9fbXNnKCYjMzQ7c3RhY2sgZGVwdGggOCYjMzQ7KQomIzQzO19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwICh1bmluaXRpYWxpemVkX3N0YWNrMSkgbWFpbiB7ey4qfX0gc3RhY2sgOCYjMzQ7KQogX19mYWlsdXJlX3VucHJpdiBfX21zZ191bnByaXYoJiMzNDtpbnZhbGlkIHJlYWQgZnJvbSBzdGFjayYjMzQ7KQogX19uYWtlZCB2b2lkIHVuaW5pdGlhbGl6ZWRfc3RhY2sxKHZvaWQpCiB7CkBAIC00NSw3ICYjNDM7NDYsOCBAQCBfX25ha2VkIHZvaWQgdW5pbml0aWFsaXplZF9zdGFjazEodm9pZCkKIAogU0VDKCYjMzQ7c29ja2V0JiMzNDspCiBfX2Rlc2NyaXB0aW9uKCYjMzQ7dW5pbml0aWFsaXplZCBzdGFjazImIzM0OykKLV9fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KSBfX21zZygmIzM0O3N0YWNrIGRlcHRoIDgmIzM0OykKJiM0MztfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNCkKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAodW5pbml0aWFsaXplZF9zdGFjazIpIG1haW4gaW5zbnNfc2VsZiB7e1swLTldJiM0Mzt9fSBpbnNuc190b3RhbCB7e1swLTldJiM0Mzt9fSBzdGFjayA4JiMzNDspCiBfX2ZhaWx1cmVfdW5wcml2IF9fbXNnX3VucHJpdigmIzM0O2ludmFsaWQgcmVhZCBmcm9tIHN0YWNrJiMzNDspCiBfX25ha2VkIHZvaWQgdW5pbml0aWFsaXplZF9zdGFjazIodm9pZCkKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuYwppbmRleCA4MzcwN2ZhZWEwNDk5Li40Y2ZhYTZiNGFiNDA1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jCkBAIC0xMCw3ICYjNDM7MTAsOCBAQAogCiBTRUMoJiMzNDtyYXdfdHAmIzM0OykKIF9fYXJjaF94ODZfNjQKLV9fbG9nX2xldmVsKDQpIF9fbXNnKCYjMzQ7c3RhY2sgZGVwdGggOCYjMzQ7KQomIzQzO19fbG9nX2xldmVsKDQpCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDAgKHNpbXBsZSkgbWFpbiBpbnNuc19zZWxmIHt7WzAtOV0mIzQzO319IGluc25zX3RvdGFsIHt7WzAtOV0mIzQzO319IHN0YWNrIDgmIzM0OykKIF9feGxhdGVkKCYjMzQ7NDogcjUgPSA1JiMzNDspCiBfX3hsYXRlZCgmIzM0OzU6IHIwID0gJiMzNDspCiBfX3hsYXRlZCgmIzM0OzY6IHIwID0gJmFtcDsodm9pZCBfX3BlcmNwdSAqKShyMCkmIzM0OykKQEAgLTk2LDcgJiM0Mzs5Nyw4IEBAIF9fbmFrZWQgdm9pZCBjYW5hcnlfemVyb19zcGlsbHModm9pZCkKIAogU0VDKCYjMzQ7cmF3X3RwJiMzNDspCiBfX2FyY2hfeDg2XzY0Ci1fX2xvZ19sZXZlbCg0KSBfX21zZygmIzM0O3N0YWNrIGRlcHRoIDE2JiMzNDspCiYjNDM7X19sb2dfbGV2ZWwoNCkKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAod3JvbmdfcmVnX2luX3BhdHRlcm4xKSBtYWluIHt7Lip9fSBzdGFjayAxNiYjMzQ7KQogX194bGF0ZWQoJiMzNDsxOiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxJiMzNDspCiBfX3hsYXRlZCgmIzM0Oy4uLiYjMzQ7KQogX194bGF0ZWQoJiMzNDszOiByMCA9ICZhbXA7KHZvaWQgX19wZXJjcHUgKikocjApJiMzNDspCkBAIC01OTgsNyAmIzQzOzYwMCw4IEBAIF9fbmFrZWQgc3RhdGljIHZvaWQgc3VicHJvZ3NfdXNlX2luZGVwZW5kZW50X29mZnNldHNfYXV4KHZvaWQpCiAKIFNFQygmIzM0O3Jhd190cCYjMzQ7KQogX19hcmNoX3g4Nl82NAotX19sb2dfbGV2ZWwoNCkgX19tc2coJiMzNDtzdGFjayBkZXB0aCA4JiMzNDspCiYjNDM7X19sb2dfbGV2ZWwoNCkKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAoaGVscGVyX2NhbGxfZG9lc19ub3RfcHJldmVudF9icGZfZmFzdGNhbGwpIG1haW4ge3suKn19IHN0YWNrIDgmIzM0OykKIF9feGxhdGVkKCYjMzQ7MjogcjAgPSAmYW1wOyh2b2lkIF9fcGVyY3B1ICopKHIwKSYjMzQ7KQogX19zdWNjZXNzCiBfX25ha2VkIHZvaWQgaGVscGVyX2NhbGxfZG9lc19ub3RfcHJldmVudF9icGZfZmFzdGNhbGwodm9pZCkKQEAgLTYyMCw3ICYjNDM7NjIzLDggQEAgX19uYWtlZCB2b2lkIGhlbHBlcl9jYWxsX2RvZXNfbm90X3ByZXZlbnRfYnBmX2Zhc3RjYWxsKHZvaWQpCiAKIFNFQygmIzM0O3Jhd190cCYjMzQ7KQogX19hcmNoX3g4Nl82NAotX19sb2dfbGV2ZWwoNCkgX19tc2coJiMzNDtzdGFjayBkZXB0aCAyNCYjMzQ7KQomIzQzO19fbG9nX2xldmVsKDQpCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDAgKG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCkgbWFpbiB7ey4qfX0gc3RhY2sgMjQmIzM0OykKIC8qIG1heV9nb3RvIGNvdW50ZXIgYXQgLTI0ICovCiBfX3hsYXRlZCgmIzM0OzA6ICoodTY0ICopKHIxMCAtMjQpID0mIzM0OykKIC8qIG1heV9nb3RvIHRpbWVzdGFtcCBhdCAtMTYgKi8KQEAgLTY2MSw3ICYjNDM7NjY1LDggQEAgX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCh2b2lkKQogU0VDKCYjMzQ7cmF3X3RwJiMzNDspCiBfX2FyY2hfYXJtNjQKIF9fYXJjaF9yaXNjdjY0Ci1fX2xvZ19sZXZlbCg0KSBfX21zZygmIzM0O3N0YWNrIGRlcHRoIDI0JiMzNDspCiYjNDM7X19sb2dfbGV2ZWwoNCkKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAobWF5X2dvdG9faW50ZXJhY3Rpb24pIG1haW4ge3suKn19IHN0YWNrIDI0JiMzNDspCiAvKiBtYXlfZ290byBjb3VudGVyIGF0IC0yNCAqLwogX194bGF0ZWQoJiMzNDswOiAqKHU2NCAqKShyMTAgLTI0KSA9JiMzNDspCiAvKiBtYXlfZ290byB0aW1lc3RhbXAgYXQgLTE2ICovCkBAIC03MDgsNyAmIzQzOzcxMyw5IEBAIF9fbmFrZWQgc3RhdGljIHZvaWQgZHVtbXlfbG9vcF9jYWxsYmFjayh2b2lkKQogCiBTRUMoJiMzNDtyYXdfdHAmIzM0OykKIF9fYXJjaF94ODZfNjQKLV9fbG9nX2xldmVsKDQpIF9fbXNnKCYjMzQ7c3RhY2sgZGVwdGggMzImIzQzOzAmIzM0OykKJiM0MztfX2xvZ19sZXZlbCg0KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwIChicGZfbG9vcF9pbnRlcmFjdGlvbjEpIG1haW4ge3suKn19IHN0YWNrIDMyJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDEgKGR1bW15X2xvb3BfY2FsbGJhY2spIHN0YXRpYyB7ey4qfX0gc3RhY2sgMCYjMzQ7KQogX194bGF0ZWQoJiMzNDsyOiByMSA9IDEmIzM0OykKIF9feGxhdGVkKCYjMzQ7MzogcjAgPSYjMzQ7KQogX194bGF0ZWQoJiMzNDs0OiByMCA9ICZhbXA7KHZvaWQgX19wZXJjcHUgKikocjApJiMzNDspCkBAIC03NTYsNyAmIzQzOzc2Myw5IEBAIF9fbmFrZWQgaW50IGJwZl9sb29wX2ludGVyYWN0aW9uMSh2b2lkKQogCiBTRUMoJiMzNDtyYXdfdHAmIzM0OykKIF9fYXJjaF94ODZfNjQKLV9fbG9nX2xldmVsKDQpIF9fbXNnKCYjMzQ7c3RhY2sgZGVwdGggNDAmIzQzOzAmIzM0OykKJiM0MztfX2xvZ19sZXZlbCg0KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwIChicGZfbG9vcF9pbnRlcmFjdGlvbjIpIG1haW4ge3suKn19IHN0YWNrIDQwJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDEgKGR1bW15X2xvb3BfY2FsbGJhY2spIHN0YXRpYyB7ey4qfX0gc3RhY2sgMCYjMzQ7KQogLyogY2FsbCBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQgKi8KIF9feGxhdGVkKCYjMzQ7MjogcjEgPSA0MiYjMzQ7KQogX194bGF0ZWQoJiMzNDszOiByMCA9JiMzNDspCkBAIC04MDAsNyAmIzQzOzgwOSwxMCBAQCBfX25ha2VkIGludCBicGZfbG9vcF9pbnRlcmFjdGlvbjIodm9pZCkKIAogU0VDKCYjMzQ7cmF3X3RwJiMzNDspCiBfX2FyY2hfeDg2XzY0Ci1fX2xvZ19sZXZlbCg0KSBfX21zZygmIzM0O3N0YWNrIGRlcHRoIDUxMiYjNDM7MCBtYXggNTEyJiMzNDspCiYjNDM7X19sb2dfbGV2ZWwoNCkKJiM0MztfX21zZygmIzM0O3N0YWNrIGRlcHRoIG1heCA1MTImIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAoY3VtdWxhdGl2ZV9zdGFja19kZXB0aCkgbWFpbiB7ey4qfX0gc3RhY2sgNTEyJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDEgKGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZykgc3RhdGljIHt7Lip9fSBzdGFjayAwJiMzNDspCiAvKiBqdXN0IHRvIHByaW50IHhsYXRlZCB2ZXJzaW9uIHdoZW4gZGVidWdnaW5nICovCiBfX3hsYXRlZCgmIzM0O3IwID0gJmFtcDsodm9pZCBfX3BlcmNwdSAqKShyMCkmIzM0OykKIF9fc3VjY2VzcwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2dsb2JhbF9zdWJwcm9ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2dsb2JhbF9zdWJwcm9ncy5jCmluZGV4IDY3ZGMzNTJhZGRmZDcuLjdiNjVlZWE5N2ViYzIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfZ2xvYmFsX3N1YnByb2dzLmMKQEAgLTUyLDcgJiM0Mzs1MiwxMCBAQCBfX21zZygmIzM0OygmIzM5O2dsb2JhbF9jYWxsc19nb29kX29ubHkmIzM5OykgaXMgZ2xvYmFsIGFuZCBhc3N1bWVkIHZhbGlkLiYjMzQ7KQogLyogZXZlbnR1YWxseSBnbG9iYWxfZ29vZCgpIGlzIHRyYW5zaXRpdmVseSB2YWxpZGF0ZWQgYXMgd2VsbCAqLwogX19tc2coJiMzNDtWYWxpZGF0aW5nIGdsb2JhbF9nb29kKCkgZnVuYyYjMzQ7KQogX19tc2coJiMzNDsoJiMzOTtnbG9iYWxfZ29vZCYjMzk7KSBpcyBzYWZlIGZvciBhbnkgYXJncyB0aGF0IG1hdGNoIGl0cyBwcm90b3R5cGUmIzM0OykKLV9fbXNnKCYjMzQ7aW5zbnMgcHJvY2Vzc2VkIHt7WzAtOV0mIzQzO1xcJiM0MztbMC05XSYjNDM7XFwmIzQzO1swLTldJiM0MzskfX0mIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAoY2hhaW5lZF9nbG9iYWxfZnVuY19jYWxsc19zdWNjZXNzKSBtYWluIGluc25zX3NlbGYgNyBpbnNuc190b3RhbCA3IHN0YWNrJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChnbG9iYWxfY2FsbHNfZ29vZF9vbmx5KSBnbG9iYWwgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2smIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKGdsb2JhbF9nb29kKSBnbG9iYWwgaW5zbnNfc2VsZiA1IGluc25zX3RvdGFsIDUgc3RhY2smIzM0OykKJiM0MztfX21zZygmIzM0O3Byb2Nlc3NlZCAxNCBpbnNucyYjMzQ7KQogaW50IGNoYWluZWRfZ2xvYmFsX2Z1bmNfY2FsbHNfc3VjY2Vzcyh2b2lkKQogewogCWludCBzdW0gPSAwOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmMKaW5kZXggYmI4MjA2ZTEwODgwYy4uZWEwYTdlNzMzMzFkYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jCkBAIC04Niw3ICYjNDM7ODYsOSBAQCBfX25ha2VkIHN0YXRpYyB2b2lkIGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZyh2b2lkKQogU0VDKCYjMzQ7a3Byb2JlJiMzNDspCiBfX2Rlc2NyaXB0aW9uKCYjMzQ7UHJpdmF0ZSBzdGFjaywgc3VidHJlZSAmZ3Q7IE1BWF9CUEZfU1RBQ0smIzM0OykKIF9fc3VjY2VzcwotX19sb2dfbGV2ZWwoNCkgX19tc2coJiMzNDtzdGFjayBkZXB0aCA1MTImIzQzOzMyIG1heCA1MTImIzM0OykKJiM0MztfX2xvZ19sZXZlbCg0KSBfX21zZygmIzM0O3N0YWNrIGRlcHRoIG1heCA1MTImIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAocHJpdmF0ZV9zdGFja19uZXN0ZWRfMSkgbWFpbiB7ey4qfX0gc3RhY2sgNTEyJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDEgKGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZykgc3RhdGljIHt7Lip9fSBzdGFjayAzMiYjMzQ7KQogX19hcmNoX3g4Nl82NAogLyogcHJpdmF0ZSBzdGFjayBmcCBmb3IgdGhlIG1haW4gcHJvZyAqLwogX19qaXRlZCgmIzM0Owltb3ZhYnNxCSQweHt7Lip9fSwgJXI5JiMzNDspCkBAIC0zMzEsNyAmIzQzOzMzMywxMSBAQCBTRUMoJiMzNDtmZW50cnkvYnBmX2ZlbnRyeV90ZXN0OSYjMzQ7KQogX19kZXNjcmlwdGlvbigmIzM0O1ByaXZhdGUgc3RhY2ssIGFzeW5jIGNhbGxiYWNrLCBwb3RlbnRpYWwgbmVzdGluZyYjMzQ7KQogX19zdWNjZXNzIF9fcmV0dmFsKDApCiBfX2xvYWRfaWZfSklUZWQoKQotX19sb2dfbGV2ZWwoNCkgX19tc2coJiMzNDtzdGFjayBkZXB0aCA4JiM0MzswJiM0MzsyNTYmIzQzOzAgbWF4IDI3MiYjMzQ7KQomIzQzO19fbG9nX2xldmVsKDQpIF9fbXNnKCYjMzQ7c3RhY2sgZGVwdGggbWF4IDI3MiYjMzQ7KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwIChwcml2YXRlX3N0YWNrX2FzeW5jX2NhbGxiYWNrXzIpIG1haW4ge3suKn19IHN0YWNrIDgmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMSAodGltZXJfY2IxKSBzdGF0aWMge3suKn19IHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMiAoc3VicHJvZzEpIHN0YXRpYyB7ey4qfX0gc3RhY2sgMjU2JiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDMgKHN1YnByb2cyKSBzdGF0aWMge3suKn19IHN0YWNrIDAmIzM0OykKIF9fYXJjaF94ODZfNjQKIF9faml0ZWQoJiMzNDsJc3VicQkkMHgxMDAsICVyc3AmIzM0OykKIF9fYXJjaF9hcm02NApAQCAtMzU1LDcgJiM0MzszNjEsMTAgQEAgaW50IHByaXZhdGVfc3RhY2tfYXN5bmNfY2FsbGJhY2tfMih2b2lkKQogU0VDKCYjMzQ7ZmVudHJ5L2JwZl9mZW50cnlfdGVzdDkmIzM0OykKIF9fZGVzY3JpcHRpb24oJiMzNDtwcml2YXRlIHN0YWNrLCBtYXggc3RhY2sgZGVwdGggaXMgcHJpdmF0ZSBzdGFjayYjMzQ7KQogX19zdWNjZXNzCi1fX2xvZ19sZXZlbCg0KSBfX21zZygmIzM0O3N0YWNrIGRlcHRoIDgmIzQzOzI1NiYjNDM7MCBtYXggMjU2JiMzNDspCiYjNDM7X19sb2dfbGV2ZWwoNCkgX19tc2coJiMzNDtzdGFjayBkZXB0aCBtYXggMjU2JiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDAgKHByaXZhdGVfc3RhY2tfbWF4X2RlcHRoKSBtYWluIHt7Lip9fSBzdGFjayA4JiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDEgKHN1YnByb2cxKSBzdGF0aWMgaW5zbnNfc2VsZiB7e1swLTldJiM0Mzt9fSBpbnNuc190b3RhbCB7e1swLTldJiM0Mzt9fSBzdGFjayAyNTYmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMiAoc3VicHJvZzIpIHN0YXRpYyBpbnNuc19zZWxmIHt7WzAtOV0mIzQzO319IGluc25zX3RvdGFsIHt7WzAtOV0mIzQzO319IHN0YWNrIDAmIzM0OykKIGludCBwcml2YXRlX3N0YWNrX21heF9kZXB0aCh2b2lkKQogewogCWludCB4ID0gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdWJwcm9nX2luc25fc3RhdHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdWJwcm9nX2luc25fc3RhdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi44ZjYwODJmZGI1Yzg0Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cy5jCkBAIC0wLDAgJiM0MzsxLDIyMyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3ZtbGludXguaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDticGZfbWlzYy5oJiMzNDsKJiM0MzsKJiM0MztzdHJ1Y3QgdGltZXJfdmFsdWUgewomIzQzOwlzdHJ1Y3QgYnBmX3RpbWVyIHRpbWVyOwomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IHsKJiM0MzsJX191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUlJBWSk7CiYjNDM7CV9fdWludChtYXhfZW50cmllcywgMSk7CiYjNDM7CV9fdHlwZShrZXksIF9fdTMyKTsKJiM0MzsJX190eXBlKHZhbHVlLCBzdHJ1Y3QgdGltZXJfdmFsdWUpOwomIzQzO30gdGltZXJfbWFwIFNFQygmIzM0Oy5tYXBzJiMzNDspOwomIzQzOwomIzQzO1NFQygmIzM0Oz9yYXdfdHAmIzM0OykKJiM0MztfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNCkKJiM0MztfX21zZygmIzM0O3N1YnByb2cgMCAoc3RhdHNfbWFpbl9vbmx5KSBtYWluIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCAyIHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3Byb2Nlc3NlZCAyIGluc25zJiMzNDspCiYjNDM7X19uYWtlZCBpbnQgc3RhdHNfbWFpbl9vbmx5KHZvaWQpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUgKAomIzQzOwkJJiMzNDtyMCA9IDA7JiMzNDsKJiM0MzsJCSYjMzQ7ZXhpdDsmIzM0OwomIzQzOwkpOwomIzQzO30KJiM0MzsKJiM0MztfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkCiYjNDM7c3RhdGljIGludCBzdGF0c19jaGFpbl9sZWFmKHZvaWQpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUgKAomIzQzOwkJJiMzNDtyMCA9IDA7JiMzNDsKJiM0MzsJCSYjMzQ7ZXhpdDsmIzM0OwomIzQzOwkpOwomIzQzO30KJiM0MzsKJiM0MztfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkCiYjNDM7c3RhdGljIGludCBzdGF0c19jaGFpbl9wYXJlbnQodm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O2NhbGwgc3RhdHNfY2hhaW5fbGVhZjsmIzM0OwomIzQzOwkJJiMzNDtleGl0OyYjMzQ7CiYjNDM7CSk7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0Oz9yYXdfdHAmIzM0OykKJiM0MztfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNCkKJiM0MzsvKgomIzQzOyAqIHNlbGY6IDIgJiM0MzsgMiAmIzQzOyAyID0gNgomIzQzOyAqIHRvdGFsczogbGVhZiAyLCBwYXJlbnQgMiAmIzQzOyAyID0gNCwgbWFpbiAyICYjNDM7IDQgPSA2CiYjNDM7ICovCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDAgKHN0YXRzX3N0YXRpY19jaGFpbikgbWFpbiBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgNiBzdGFjayAwJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19jaGFpbl9wYXJlbnQpIHN0YXRpYyBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgNCBzdGFjayAwJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19jaGFpbl9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMCYjMzQ7KQomIzQzO19fbXNnKCYjMzQ7cHJvY2Vzc2VkIDYgaW5zbnMmIzM0OykKJiM0MztfX25ha2VkIGludCBzdGF0c19zdGF0aWNfY2hhaW4odm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O2NhbGwgc3RhdHNfY2hhaW5fcGFyZW50OyYjMzQ7CiYjNDM7CQkmIzM0O2V4aXQ7JiMzNDsKJiM0MzsJKTsKJiM0Mzt9CiYjNDM7CiYjNDM7X19uYWtlZCBfX25vaW5saW5lIF9fdXNlZAomIzQzO3N0YXRpYyBpbnQgc3RhdHNfc2hhcmVkX2xlYWYodm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O3IwID0gMDsmIzM0OwomIzQzOwkJJiMzNDtleGl0OyYjMzQ7CiYjNDM7CSk7CiYjNDM7fQomIzQzOwomIzQzO19fbmFrZWQgX19ub2lubGluZSBfX3VzZWQKJiM0MztpbnQgc3RhdHNfZ2xvYmFsX3Jvb3Qodm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O2NhbGwgc3RhdHNfc2hhcmVkX2xlYWY7JiMzNDsKJiM0MzsJCSYjMzQ7ZXhpdDsmIzM0OwomIzQzOwkpOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDs/cmF3X3RwJiMzNDspCiYjNDM7X19zdWNjZXNzIF9fbG9nX2xldmVsKDQpCiYjNDM7LyoKJiM0MzsgKiBzdGF0c19zaGFyZWRfbGVhZiBpcyBleHBsb3JlZCBvbmNlIHVuZGVyIGVhY2ggaW5kZXBlbmRlbnQgcm9vdC4KJiM0MzsgKiBzZWxmOiBtYWluIDMgJiM0MzsgbGVhZiA0ICYjNDM7IGdsb2JhbCAyID0gOQomIzQzOyAqIHJvb3QgdG90YWxzOiBtYWluIDUgJiM0MzsgZ2xvYmFsIDQgPSA5CiYjNDM7ICovCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDAgKHN0YXRzX3NoYXJlZF9yb290cykgbWFpbiBpbnNuc19zZWxmIDMgaW5zbnNfdG90YWwgNSBzdGFjayAwJiMzNDspCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIHt7WzAtOV0mIzQzO319IChzdGF0c19zaGFyZWRfbGVhZikgc3RhdGljIGluc25zX3NlbGYgNCBpbnNuc190b3RhbCA0IHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX2dsb2JhbF9yb290KSBnbG9iYWwgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDQgc3RhY2sgMCYjMzQ7KQomIzQzO19fbXNnKCYjMzQ7cHJvY2Vzc2VkIDkgaW5zbnMmIzM0OykKJiM0MztfX25ha2VkIGludCBzdGF0c19zaGFyZWRfcm9vdHModm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O2NhbGwgc3RhdHNfc2hhcmVkX2xlYWY7JiMzNDsKJiM0MzsJCSYjMzQ7Y2FsbCBzdGF0c19nbG9iYWxfcm9vdDsmIzM0OwomIzQzOwkJJiMzNDtleGl0OyYjMzQ7CiYjNDM7CSk7CiYjNDM7fQomIzQzOwomIzQzO19fbm9pbmxpbmUgX191c2VkCiYjNDM7c3RhdGljIGludCBzdGF0c19hc3luY19sZWFmKHZvaWQgKm1hcCwgX191MzIgKmtleSwgc3RydWN0IGJwZl90aW1lciAqdGltZXIpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7X19ub2lubGluZSBfX3VzZWQKJiM0MztzdGF0aWMgX191NjQgc3RhdHNfYXN5bmNfc2NoZWR1bGUoc3RydWN0IGJwZl9tYXAgKm1hcCwgX191MzIgKmtleSwKJiM0MzsJCQkJICBzdHJ1Y3QgdGltZXJfdmFsdWUgKnZhbHVlLCB2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUgKAomIzQzOwkJJiMzNDtyMSA9ICVbdGltZXJdOyYjMzQ7CiYjNDM7CQkmIzM0O3IyID0gJVtzdGF0c19hc3luY19sZWFmXTsmIzM0OwomIzQzOwkJJiMzNDtjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107JiMzNDsKJiM0MzsJCToKJiM0MzsJCTogW3RpbWVyXSAmIzM0O3ImIzM0OyAodmFsdWUpLAomIzQzOwkJICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfbGVhZiksCiYjNDM7CQkgIF9faW1tKGJwZl90aW1lcl9zZXRfY2FsbGJhY2spCiYjNDM7CQk6IF9fY2xvYmJlcl9jb21tb24KJiM0MzsJKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0Oz9yYXdfdHAmIzM0OykKJiM0MztfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNCkKJiM0MzsvKgomIzQzOyAqIHNlbGY6IDkgJiM0MzsgNyAmIzQzOyAyID0gMTgKJiM0MzsgKiB0b3RhbHM6IGxlYWYgMiwgc2NoZWR1bGVyIDcsIG1haW4gcm9vdCAxOAomIzQzOyAqLwomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwIChzdGF0c19hc3luY19kaXJlY3QpIG1haW4gaW5zbnNfc2VsZiA5IGluc25zX3RvdGFsIDE4IHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX2FzeW5jX3NjaGVkdWxlKSBzdGF0aWMgaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2sgMCYjMzQ7KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyB7e1swLTldJiM0Mzt9fSAoc3RhdHNfYXN5bmNfbGVhZikgc3RhdGljIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCAyIHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3Byb2Nlc3NlZCAxOCBpbnNucyYjMzQ7KQomIzQzO19fbmFrZWQgaW50IHN0YXRzX2FzeW5jX2RpcmVjdCh2b2lkKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlICgKJiM0MzsJCSYjMzQ7cjEgPSAlW3RpbWVyX21hcF0gbGw7JiMzNDsKJiM0MzsJCSYjMzQ7cjIgPSAlW3N0YXRzX2FzeW5jX3NjaGVkdWxlXTsmIzM0OwomIzQzOwkJJiMzNDtyMyA9IDA7JiMzNDsKJiM0MzsJCSYjMzQ7cjQgPSAwOyYjMzQ7CiYjNDM7CQkmIzM0O2NhbGwgJVticGZfZm9yX2VhY2hfbWFwX2VsZW1dOyYjMzQ7CiYjNDM7CQkmIzM0O3IwID0gMDsmIzM0OwomIzQzOwkJJiMzNDtleGl0OyYjMzQ7CiYjNDM7CQk6CiYjNDM7CQk6IF9faW1tX2FkZHIodGltZXJfbWFwKSwKJiM0MzsJCSAgX19pbW1fcHRyKHN0YXRzX2FzeW5jX3NjaGVkdWxlKSwKJiM0MzsJCSAgX19pbW0oYnBmX2Zvcl9lYWNoX21hcF9lbGVtKQomIzQzOwkJOiBfX2Nsb2JiZXJfY29tbW9uCiYjNDM7CSk7CiYjNDM7fQomIzQzOwomIzQzO19fbm9pbmxpbmUgX191c2VkCiYjNDM7c3RhdGljIGludCBzdGF0c19hc3luY19uZXN0ZWRfbGVhZih2b2lkICptYXAsIF9fdTMyICprZXksIHN0cnVjdCBicGZfdGltZXIgKnRpbWVyKQomIzQzO3sKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO19fbm9pbmxpbmUgX191c2VkCiYjNDM7c3RhdGljIGludCBzdGF0c19hc3luY19vdXRlcih2b2lkICptYXAsIF9fdTMyICprZXksIHN0cnVjdCBicGZfdGltZXIgKnRpbWVyKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlICgKJiM0MzsJCSYjMzQ7cjEgPSAlW3RpbWVyXTsmIzM0OwomIzQzOwkJJiMzNDtyMiA9ICVbc3RhdHNfYXN5bmNfbmVzdGVkX2xlYWZdOyYjMzQ7CiYjNDM7CQkmIzM0O2NhbGwgJVticGZfdGltZXJfc2V0X2NhbGxiYWNrXTsmIzM0OwomIzQzOwkJOgomIzQzOwkJOiBbdGltZXJdICYjMzQ7ciYjMzQ7ICh0aW1lciksCiYjNDM7CQkgIF9faW1tX3B0cihzdGF0c19hc3luY19uZXN0ZWRfbGVhZiksCiYjNDM7CQkgIF9faW1tKGJwZl90aW1lcl9zZXRfY2FsbGJhY2spCiYjNDM7CQk6IF9fY2xvYmJlcl9jb21tb24KJiM0MzsJKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO19fbm9pbmxpbmUgX191c2VkCiYjNDM7c3RhdGljIF9fdTY0IHN0YXRzX2FzeW5jX25lc3RlZF9zY2hlZHVsZShzdHJ1Y3QgYnBmX21hcCAqbWFwLCBfX3UzMiAqa2V5LAomIzQzOwkJCQkJIHN0cnVjdCB0aW1lcl92YWx1ZSAqdmFsdWUsIHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O3IxID0gJVt0aW1lcl07JiMzNDsKJiM0MzsJCSYjMzQ7cjIgPSAlW3N0YXRzX2FzeW5jX291dGVyXTsmIzM0OwomIzQzOwkJJiMzNDtjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107JiMzNDsKJiM0MzsJCToKJiM0MzsJCTogW3RpbWVyXSAmIzM0O3ImIzM0OyAodmFsdWUpLAomIzQzOwkJICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfb3V0ZXIpLAomIzQzOwkJICBfX2ltbShicGZfdGltZXJfc2V0X2NhbGxiYWNrKQomIzQzOwkJOiBfX2Nsb2JiZXJfY29tbW9uCiYjNDM7CSk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDs/cmF3X3RwJiMzNDspCiYjNDM7X19zdWNjZXNzIF9fbG9nX2xldmVsKDQpCiYjNDM7LyoKJiM0MzsgKiBzZWxmOiA5ICYjNDM7IDcgJiM0MzsgNyAmIzQzOyAyID0gMjUKJiM0MzsgKiB0b3RhbHM6IGxlYWYgMiwgb3V0ZXIgNywgc2NoZWR1bGVyIDcsIG1haW4gcm9vdCAyNQomIzQzOyAqLwomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwIChzdGF0c19hc3luY19uZXN0ZWQpIG1haW4gaW5zbnNfc2VsZiA5IGluc25zX3RvdGFsIDI1IHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX2FzeW5jX25lc3RlZF9zY2hlZHVsZSkgc3RhdGljIGluc25zX3NlbGYgNyBpbnNuc190b3RhbCA3IHN0YWNrIDAmIzM0OykKJiM0MztfX21zZygmIzM0O3N1YnByb2cge3tbMC05XSYjNDM7fX0gKHN0YXRzX2FzeW5jX291dGVyKSBzdGF0aWMgaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2sgMCYjMzQ7KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyB7e1swLTldJiM0Mzt9fSAoc3RhdHNfYXN5bmNfbmVzdGVkX2xlYWYpIHN0YXRpYyBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgMiBzdGFjayAwJiMzNDspCiYjNDM7X19tc2coJiMzNDtwcm9jZXNzZWQgMjUgaW5zbnMmIzM0OykKJiM0MztfX25ha2VkIGludCBzdGF0c19hc3luY19uZXN0ZWQodm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkmIzM0O3IxID0gJVt0aW1lcl9tYXBdIGxsOyYjMzQ7CiYjNDM7CQkmIzM0O3IyID0gJVtzdGF0c19hc3luY19uZXN0ZWRfc2NoZWR1bGVdOyYjMzQ7CiYjNDM7CQkmIzM0O3IzID0gMDsmIzM0OwomIzQzOwkJJiMzNDtyNCA9IDA7JiMzNDsKJiM0MzsJCSYjMzQ7Y2FsbCAlW2JwZl9mb3JfZWFjaF9tYXBfZWxlbV07JiMzNDsKJiM0MzsJCSYjMzQ7cjAgPSAwOyYjMzQ7CiYjNDM7CQkmIzM0O2V4aXQ7JiMzNDsKJiM0MzsJCToKJiM0MzsJCTogX19pbW1fYWRkcih0aW1lcl9tYXApLAomIzQzOwkJICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfbmVzdGVkX3NjaGVkdWxlKSwKJiM0MzsJCSAgX19pbW0oYnBmX2Zvcl9lYWNoX21hcF9lbGVtKQomIzQzOwkJOiBfX2Nsb2JiZXJfY29tbW9uCiYjNDM7CSk7CiYjNDM7fQomIzQzOwomIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jCmluZGV4IDI0Y2QwYTc2MzY3MzAuLmE2M2UzMzY3NTA5MTggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuYwpAQCAtMTk4LDcgJiM0MzsxOTgsOCBAQCBfX3N1Y2Nlc3MKIC8qIENoZWNrIHRoYXQgdGhlIG1heGltdW0gc3RhY2sgZGVwdGggaXMgY29ycmVjdGx5IG1haW50YWluZWQgYWNjb3JkaW5nIHRvIHRoZQogICogbWF4aW11bSBwb3NzaWJsZSB2YXJpYWJsZSBvZmZzZXQuCiAgKi8KLV9fbG9nX2xldmVsKDQpIF9fbXNnKCYjMzQ7c3RhY2sgZGVwdGggMTYmIzM0OykKJiM0MztfX2xvZ19sZXZlbCg0KQomIzQzO19fbXNnKCYjMzQ7c3VicHJvZyAwIChzdGFja193cml0ZV9wcml2X3ZzX3VucHJpdikgbWFpbiB7ey4qfX0gc3RhY2sgMTYmIzM0OykKIF9fZmFpbHVyZV91bnByaXYKIC8qIFZhcmlhYmxlIHN0YWNrIGFjY2VzcyBpcyByZWplY3RlZCBmb3IgdW5wcml2aWxlZ2VkLgogICovCkBAIC0yMzgsNyAmIzQzOzIzOSw4IEBAIF9fc3VjY2VzcwogLyogQ2hlY2sgdGhhdCB0aGUgbWF4aW11bSBzdGFjayBkZXB0aCBpcyBjb3JyZWN0bHkgbWFpbnRhaW5lZCBhY2NvcmRpbmcgdG8gdGhlCiAgKiBtYXhpbXVtIHBvc3NpYmxlIHZhcmlhYmxlIG9mZnNldC4KICAqLwotX19sb2dfbGV2ZWwoNCkgX19tc2coJiMzNDtzdGFjayBkZXB0aCAxNiYjMzQ7KQomIzQzO19fbG9nX2xldmVsKDQpCiYjNDM7X19tc2coJiMzNDtzdWJwcm9nIDAgKHN0YWNrX3dyaXRlX2ZvbGxvd2VkX2J5X3JlYWQpIG1haW4ge3suKn19IHN0YWNrIDE2JiMzNDspCiBfX2ZhaWx1cmVfdW5wcml2CiBfX21zZ191bnByaXYoJiMzNDtSMiB2YXJpYWJsZSBzdGFjayBhY2Nlc3MgcHJvaGliaXRlZCBmb3IgIXJvb3QmIzM0OykKIF9fcmV0dmFsKDApCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfdmVyaWZpZXIuYwppbmRleCBhOGFlMDNjNTdiYmFlLi5iZmZiNzM2MDQzNGM1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3ZlcmlmaWVyLmMKQEAgLTE1NjAsNyAmIzQzOzE1NjAsNyBAQCBzdGF0aWMgdm9pZCBkb190ZXN0X3NpbmdsZShzdHJ1Y3QgYnBmX3Rlc3QgKnRlc3QsIGJvb2wgdW5wcml2LAogCiAJb3B0cy5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IHRlc3QtJmd0O2V4cGVjdGVkX2F0dGFjaF90eXBlOwogCWlmIChleHBlY3RlZF9yZXQgPT0gVkVSQk9TRV9BQ0NFUFQpCi0JCW9wdHMubG9nX2xldmVsID0gMjsKJiM0MzsJCW9wdHMubG9nX2xldmVsID0gMiB8IDQ7CiAJZWxzZSBpZiAodmVyYm9zZSkKIAkJb3B0cy5sb2dfbGV2ZWwgPSB2ZXJpZl9sb2dfbGV2ZWwgfCA0OyAvKiBmb3JjZSBzdGF0cyAqLwogCWVsc2UKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9jYWxscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL2NhbGxzLmMKaW5kZXggOGNkNjI2ZTA0NTUxNS4uZWI2ZTNiYWVmNDEyYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL2NhbGxzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL2NhbGxzLmMKQEAgLTEwOTEsNyAmIzQzOzEwOTEsMTcgQEAKIAkvKiBzdGFja19tYWluPTMyLCBzdGFja19BPTI1Niwgc3RhY2tfQj02NAogCSAqIGFuZCBtYXgobWFpbiYjNDM7QSwgbWFpbiYjNDM7QSYjNDM7QikgJmx0OyA1MTIKIAkgKi8KLQkucmVzdWx0ID0gQUNDRVBULAomIzQzOwkucmVzdWx0ID0gVkVSQk9TRV9BQ0NFUFQsCiYjNDM7CS5lcnJzdHIgPSAmIzM0O3N0YWNrIGRlcHRoIG1heCAzNTJcdCYjMzQ7CiYjNDM7CQkgICYjMzQ7c3VicHJvZyAwICgmbHQ7dW5rbm93biZndDspIG1haW4gaW5zbnNfc2VsZiBcdCYjMzQ7CiYjNDM7CQkgICYjMzQ7IGluc25zX3RvdGFsIFx0JiMzNDsKJiM0MzsJCSAgJiMzNDsgc3RhY2sgMzJcdCYjMzQ7CiYjNDM7CQkgICYjMzQ7c3VicHJvZyAxICgmbHQ7dW5rbm93biZndDspIHN0YXRpYyBpbnNuc19zZWxmIFx0JiMzNDsKJiM0MzsJCSAgJiMzNDsgaW5zbnNfdG90YWwgXHQmIzM0OwomIzQzOwkJICAmIzM0OyBzdGFjayAyNTZcdCYjMzQ7CiYjNDM7CQkgICYjMzQ7c3VicHJvZyAyICgmbHQ7dW5rbm93biZndDspIHN0YXRpYyBpbnNuc19zZWxmIFx0JiMzNDsKJiM0MzsJCSAgJiMzNDsgaW5zbnNfdG90YWwgXHQmIzM0OwomIzQzOwkJICAmIzM0OyBzdGFjayA2NCYjMzQ7LAogfSwKIHsKIAkmIzM0O2NhbGxzOiBzdGFjayBkZXB0aCBjaGVjayB1c2luZyB0aHJlZSBmcmFtZXMuIHRlc3QyJiMzNDssCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCmluZGV4IGM5YzI1Nzc4NGVlM2QuLjVjMGVjM2VkY2U3MjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCkBAIC05OTMsMTMgJiM0Mzs5OTMsMTUgQEAgc3RhdGljIHZvaWQgZnJlZV92ZXJpZl9zdGF0cyhzdHJ1Y3QgdmVyaWZfc3RhdHMgKnN0YXRzLCBzaXplX3Qgc3RhdF9jbnQpCiAKIHN0YXRpYyBjaGFyIHZlcmlmX2xvZ19idWZbNjQgKiAxMDI0XTsKIAotI2RlZmluZSBNQVhfUEFSU0VEX0xPR19MSU5FUyAxMDAKJiM0MzsvKiBLZWVwIHJvb20gZm9yIGFsbCAyNTYgc3VicHJvZ3JhbSByZWNvcmRzIGFuZCB0cmFpbGluZyBzdGF0aXN0aWNzLiAqLwomIzQzOyNkZWZpbmUgTUFYX1BBUlNFRF9MT0dfTElORVMgMzAwCiAKIHN0YXRpYyBpbnQgcGFyc2VfdmVyaWZfbG9nKGNoYXIgKiBjb25zdCBidWYsIHNpemVfdCBidWZfc3osIHN0cnVjdCB2ZXJpZl9zdGF0cyAqcykKIHsKIAljb25zdCBjaGFyICpjdXI7Ci0JaW50IHBvcywgbGluZXMsIHN1Yl9zdGFjaywgY250ID0gMDsKLQljaGFyICpzdGF0ZSA9IE5VTEwsICp0b2tlbiwgc3RhY2tbNTEyXTsKJiM0MzsJbG9uZyBzdWJfc3RhY2s7CiYjNDM7CWludCBwb3MsIGxpbmVzLCBjbnQgPSAwOwomIzQzOwljaGFyICpzdGF0ZSA9IE5VTEwsICp0b2tlbiwgc3RhY2tbNTEyXSA9IHt9OwogCiAJYnVmW2J1Zl9zeiAtIDFdID0gJiMzOTtcMCYjMzk7OwogCkBAIC0xMDI1LDExICYjNDM7MTAyNywyNCBAQCBzdGF0aWMgaW50IHBhcnNlX3ZlcmlmX2xvZyhjaGFyICogY29uc3QgYnVmLCBzaXplX3QgYnVmX3N6LCBzdHJ1Y3QgdmVyaWZfc3RhdHMgKgogCQkJCSZhbXA7cy0mZ3Q7c3RhdHNbTUFSS19SRUFEX01BWF9MRU5dKSkKIAkJCWNvbnRpbnVlOwogCiYjNDM7CQkvKgomIzQzOwkJICogTmV3IGtlcm5lbHMgZW1pdCBvbmUgJiMzNDtzdWJwcm9nICZsdDtpZCZndDsgKCZsdDtuYW1lJmd0OykgJmx0O2tpbmQmZ3Q7JiMzNDsgcmVjb3JkCiYjNDM7CQkgKiBwZXIgc3VicHJvZ3JhbSB3aXRoIHRoZSBzdGFjayBkZXB0aCBhdCB0aGUgZW5kLCB3aGlsZSBvbGQKJiM0MzsJCSAqIGtlcm5lbHMgZW1pdCBhIHNpbmdsZSAmIzM0O3N0YWNrIGRlcHRoICZsdDthJiM0MzsuLi4mIzQzO24mZ3Q7IG1heCAmbHQ7bWF4Jmd0OyYjMzQ7CiYjNDM7CQkgKiBsaW5lLiBNYXRjaCBib3RoIGZvcm1hdHMgc28gdmVyaXN0YXQgd29ya3MgYWdhaW5zdCBlaXRoZXIKJiM0MzsJCSAqIGtlcm5lbC4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKHNzY2FuZihjdXIsICYjMzQ7c3RhY2sgZGVwdGggbWF4ICVsZCYjMzQ7LCAmYW1wO3MtJmd0O3N0YXRzW01BWF9TVEFDS10pID09IDEpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CQlpZiAoc3NjYW5mKGN1ciwgJiMzNDtzdWJwcm9nICUqZCAlKnMgJSpzIGluc25zX3NlbGYgJSpkIGluc25zX3RvdGFsICUqZCBzdGFjayAlbGQmIzM0OywgJmFtcDtzdWJfc3RhY2spID09IDEpIHsKJiM0MzsJCQlzLSZndDtzdGF0c1tTVEFDS10gJiM0Mzs9IHN1Yl9zdGFjazsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KIAkJaWYgKDIgPT0gc3NjYW5mKGN1ciwgJiMzNDtzdGFjayBkZXB0aCAlNTExcyBtYXggJWxkJiMzNDssIHN0YWNrLCAmYW1wO3MtJmd0O3N0YXRzW01BWF9TVEFDS10pKQogCQkJY29udGludWU7CiAJfQogCXdoaWxlICgodG9rZW4gPSBzdHJ0b2tfcihjbnQmIzQzOyYjNDM7ID8gTlVMTCA6IHN0YWNrLCAmIzM0OyYjNDM7JiMzNDssICZhbXA7c3RhdGUpKSkgewotCQlpZiAoc3NjYW5mKHRva2VuLCAmIzM0OyVkJiMzNDssICZhbXA7c3ViX3N0YWNrKSA9PSAwKQomIzQzOwkJaWYgKHNzY2FuZih0b2tlbiwgJiMzNDslbGQmIzM0OywgJmFtcDtzdWJfc3RhY2spID09IDApCiAJCQlicmVhazsKIAkJcy0mZ3Q7c3RhdHNbU1RBQ0tdICYjNDM7PSBzdWJfc3RhY2s7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQ5NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDUwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipCUEYgVmVyaWZpZXIgSW5zdHJ1Y3Rpb24gQ291bnQgVHJhY2tpbmcqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSB2aXNpYmlsaXR5IGludG8gQlBGIHZlcmlmaWNhdGlvbiwgc3BlY2lmaWNhbGx5IGJ5IHRyYWNraW5nIGluc3RydWN0aW9uIGNvdW50cyBvbiBhIHBlci1zdWJwcm9ncmFtIGJhc2lzLiBUaGUgY2hhbmdlcyBhcmUgY29uY2VudHJhdGVkIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCB0aGUgYXNzb2NpYXRlZCBoZWFkZXIgZmlsZS4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBhZGRpbmcgbmV3IGZpZWxkczogYGluc25zX3N1YnRvdGFsYCB3aXRoaW4gYHN0cnVjdCBicGZfZnVuY19zdGF0ZWAsIGFuZCBgaW5zbnNfdG90YWxgIGFuZCBgaW5zbnNfc2VsZmAgdG8gYHN0cnVjdCBicGZfc3VicHJvZ19pbmZvYC4gVGhlIGNvZGUgdXBkYXRlcyBleGlzdGluZyBhY2NvdW50aW5nIGZ1bmN0aW9ucyBsaWtlIGBhY2NvdW50X3Byb2Nlc3NlZF9pbnNuYCwgYGFjY291bnRfcHJvY2Vzc2VkX2luc25zYCwgYW5kIGBhY2NvdW50X2N1cnJlbnRfcGF0aGAgdG8ga2VlcCB0aGVzZSBjb3VudHMgYWNjdXJhdGUuIEFuZCBuYXR1cmFsbHksIGBwcmludF92ZXJpZmljYXRpb25fc3RhdHNgIGlzIGJlaW5nIG1vZGlmaWVkIHRvIHJlcG9ydCB0aGlzIG5ldywgbW9yZSBncmFudWxhciBkYXRhLiBUaGF0JiMzOTtzIGEgc29saWQgaW1wcm92ZW1lbnQgZm9yIGRlYnVnZ2luZyBhbmQgcGVyZm9ybWFuY2UgYW5hbHlzaXMuCgpCdXQsIHRoZSBxdWVzdGlvbiBpcywgKmRvZXMgdGhpcyBhZmZlY3QgdmVyaWZpY2F0aW9uIGxvZ2ljIGl0c2VsZj8qIEl0JiMzOTtzIGNyaXRpY2FsIHRvIG1ha2Ugc3VyZSB0aGUgY29yZSBiZWhhdmlvciByZW1haW5zIHVuY2hhbmdlZC4gTGV0IG1lIHNlZS4uLiB5ZXMsIEkgd2FzIHJpZ2h0IHRvIGNoZWNrIHRoYXQhIE9rYXksIGxldCYjMzk7cyBzZWUgaG93IHRoZSBpbnN0cnVjdGlvbiBjb21wbGV4aXR5IGxpbWl0IGlzIGhhbmRsZWQuIEFoLCBoZXJlIHdlIGdvLi4uCgpgYGBjCi0JCWlmICgmIzQzOyYjNDM7ZW52LSZndDtpbnNuX3Byb2Nlc3NlZCAmZ3Q7IEJQRl9DT01QTEVYSVRZX0xJTUlUX0lOU05TKSB7CiYjNDM7CQlhY2NvdW50X3Byb2Nlc3NlZF9pbnNuKGVudik7CiYjNDM7CiYjNDM7CQlpZiAoZW52LSZndDtpbnNuX3Byb2Nlc3NlZCAmZ3Q7IEJQRl9DT01QTEVYSVRZX0xJTUlUX0lOU05TKSB7CmBgYAoKT2theSwgYGFjY291bnRfcHJvY2Vzc2VkX2luc25gIGlzIGNhbGxlZCBmaXJzdCwgd2hpY2ggc3RpbGwgaW5jcmVtZW50cyBgZW52LSZndDtpbnNuX3Byb2Nlc3NlZGAgYmVmb3JlIHRoZSBjaGVjayBhZ2FpbnN0IGBCUEZfQ09NUExFWElUWV9MSU1JVF9JTlNOU2AuIFNvIHRoZSBsaW1pdCAqaXRzZWxmKiByZW1haW5zIHVuY2hhbmdlZC4gVGhlIG5ldyBmaWVsZHMsIGBpbnNuc19zdWJ0b3RhbGAsIGBpbnNuc190b3RhbGAsIGFuZCBgaW5zbnNfc2VsZmAsIGFwcGVhciB0byBiZSBwdXJlbHkgZm9yIHN0YXRpc3RpY3MgaW4gYHByaW50X3ZlcmlmaWNhdGlvbl9zdGF0c2AuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtLiBMZXQmIzM5O3MgbG9vayBhdCBgYWNjb3VudF9wcm9jZXNzZWRfaW5zbmAgZnVuY3Rpb24gZGVmaW5pdGlvbi4KCmBgYGMKc3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KQp7CglzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmZyYW1lID0gY3VyX2Z1bmMoZW52KTsKCgllbnYtJmd0O2luc25fcHJvY2Vzc2VkJiM0MzsmIzQzOzsKCWZyYW1lLSZndDtpbnNuc19zdWJ0b3RhbCYjNDM7JiM0Mzs7CgllbnYtJmd0O3N1YnByb2dfaW5mb1tmcmFtZS0mZ3Q7c3VicHJvZ25vXS5pbnNuc19zZWxmJiM0MzsmIzQzOzsKfQpgYGAKCll1cCwgaXQgaW5jcmVtZW50cyBgZW52LSZndDtpbnNuX3Byb2Nlc3NlZGAgYW5kIHRoZW4gdXBkYXRlcyBhbGwgdGhlIHRyYWNraW5nIHZhcmlhYmxlcy4gQW5kIGBhY2NvdW50X3Byb2Nlc3NlZF9pbnNuc2AgaW5jcmVtZW50cyB0aGUgYGluc25zX3RvdGFsYC4gSSBuZWVkIHRvIGJlIDEwMCUgc3VyZSB0aGlzIGlzbiYjMzk7dCB1c2VkIHRvIHJlamVjdCBwcm9ncmFtcy4gUXVpY2sgc2VhcmNoIGZvciBgaW5zbnNfdG90YWxgIGFuZCBgaW5zbnNfc2VsZmAgaW4gdGhlIHZlcmlmaWVyIGNvZGUgaXMgbmVjZXNzYXJ5LiBKdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW5zbnNfdG90YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTk3MzE9c3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTc0MS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5NzQyOlx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tjYWxsZWUtXHUwMDNlc3VicHJvZ25vXS5pbnNuc190b3RhbCAmIzQzOz0gaW5zbnM7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTc0My1cdGlmIChjYWxsZXIpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4NDUzPXN0YXRpYyBpbnQgZG9fY2hlY2tfY29tbW9uKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODYxMC1cdCAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE4NjExOlx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tzdWJwcm9nXS5pbnNuc190b3RhbCA9IGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCAtIGluc25fcHJvY2Vzc2VkO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE4NjEyLVx0cmV0dXJuIHJldDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg2OTc9c3RhdGljIHZvaWQgcHJpbnRfdmVyaWZpY2F0aW9uX3N0YXRzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4NzEzLVx0XHRcdCAgICAgICBicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSA/IFwmIzM0O2dsb2JhbFwmIzM0OyA6IFwmIzM0O3N0YXRpY1wmIzM0Oztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODcxNDpcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7c3VicHJvZyAlZCAoJXMpICVzIGluc25zX3NlbGYgJWQgaW5zbnNfdG90YWwgJWQgc3RhY2sgJWRcXG5cJiMzNDssXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg3MTUtXHRcdFx0XHRpLCBuYW1lLCBraW5kLCBlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLmluc25zX3NlbGYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTg3MTY6XHRcdFx0XHRlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLmluc25zX3RvdGFsLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4NzE3LVx0XHRcdFx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tpXS5zdGFja19kZXB0aCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjI6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQxMDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhpcyBjb2RlOgoKKipBbmFseXppbmcgSW5zdHJ1Y3Rpb24gQ291bnRpbmcgTWV0cmljcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBUaGUgY29kZSBJJiMzOTttIGxvb2tpbmcgYXQgb25seSBzZWVtcyB0byBiZSB1c2luZyBgaW5zbnNfdG90YWxgIGFuZCBgaW5zbnNfc2VsZmAgZm9yIGxvZ2dpbmcgcHVycG9zZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gYHByaW50X3ZlcmlmaWNhdGlvbl9zdGF0c2AuICBUaGF0JiMzOTtzIGEgYml0IGxpbWl0aW5nLCBhbmQgaXQgZG9lc24mIzM5O3QgZ2l2ZSBtZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIEkmIzM5O20gdXN1YWxseSBhZnRlci4gQmVmb3JlIEkgZGlnIGRlZXBlciwgSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIGBpbnNuc19zdWJ0b3RhbGAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBmaWVsZCBtaWdodCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlZXBlciBzdHJ1Y3R1cmUuIEhvcGVmdWxseSBpdCYjMzk7cyBjYWxjdWxhdGVkIGluIGEgd2F5IHRoYXQgZ2l2ZXMgYSBtb3JlIHVzZWZ1bCBicmVha2Rvd24gdGhhbiB3aGF0IEkmIzM5O20gc2VlaW5nIGZyb20gdGhlIG90aGVyIHR3by4gSSYjMzk7bSBnb2luZyB0byB0cmFjayBkb3duIHRoZSB1c2FnZSBvZiB0aGlzIHZhcmlhYmxlIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW5zbnNfc3VidG90YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE1OTI9c3RhdGljIGludCBjb3B5X2Z1bmNfc3RhdGUoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpkc3QsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE1OTYtXHQvKiBJbnN0cnVjdGlvbiBhY2NvdW50aW5nIGlzIHBhdGgtbG9jYWwsIG5vdCBwYXJ0IG9mIHZlcmlmaWVyIHN0YXRlLiAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE1OTc6XHRkc3QtXHUwMDNlaW5zbnNfc3VidG90YWwgPSAwO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE1OTgtXHRyZXR1cm4gY29weV9zdGFja19zdGF0ZShkc3QsIHNyYyk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTk3MjI9c3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05NzI2LVx0ZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkJiM0MzsmIzQzOztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5NzI3Olx0ZnJhbWUtXHUwMDNlaW5zbnNfc3VidG90YWwmIzQzOyYjNDM7O1xua2VybmVsL2JwZi92ZXJpZmllci5jLTk3MjgtXHRlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ZyYW1lLVx1MDAzZXN1YnByb2dub10uaW5zbnNfc2VsZiYjNDM7JiM0Mzs7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTk3MzE9c3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTczOS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5NzQwOlx0aW5zbnMgPSBjYWxsZWUtXHUwMDNlaW5zbnNfc3VidG90YWw7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTc0MS1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTc0My1cdGlmIChjYWxsZXIpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTc0NDpcdFx0Y2FsbGVyLVx1MDAzZWluc25zX3N1YnRvdGFsICYjNDM7PSBpbnNucztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5NzQ1Olx0Y2FsbGVlLVx1MDAzZWluc25zX3N1YnRvdGFsID0gMDtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05NzQ2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDgwMQoJCQkJCQkJb3V0cHV0OiA3NwoJCQkJCQkJdGhvdWdodHM6IDU3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgcHJpbWFyeSBwdXJwb3NlIG9mIHRoZXNlIGNoYW5nZXMgaXMgcHVyZWx5IGZvciBzdGF0aXN0aWNhbCB0cmFja2luZyB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllci4gSXQgYXBwZWFycyB0aGF0IHRoZSBuZXcgZmllbGRzIGFyZSBiZWluZyBpbnRyb2R1Y2VkIHRvIGVuaGFuY2UgbG9nZ2luZywgc3BlY2lmaWNhbGx5IHdoZW4gYEJQRl9MT0dfU1RBVFNgIGlzIGVuYWJsZWQuIFRoZSBjb3JlIG9mIHRoZSB2ZXJpZmljYXRpb24gbG9naWMgaXRzZWxmIGlzbiYjMzk7dCBiZWluZyBhbHRlcmVkIGluIGEgd2F5IHRoYXQgd291bGQgY2hhbmdlIGhvdyBwcm9ncmFtcyBhcmUgYWNjZXB0ZWQgb3IgcmVqZWN0ZWQsIG5vciBpcyB0aGVyZSBhbnkgbW9kaWZpY2F0aW9uIHRvIHRoZSBnZW5lcmF0ZWQgY29kZS4KClRoZSBhZGRpdGlvbiBvZiBgYWNjb3VudF9wcm9jZXNzZWRfaW5zbmAgYW5kIHRoZSBhc3NvY2lhdGVkIGZpZWxkcywgc3VjaCBhcyBgaW5zbnNfc3VidG90YWxgIGFuZCBgaW5zbnNfc2VsZmAsIGFyZSBzaW1wbHkgaW5jcmVtZW50aW5nIGFuZCB0cmFja2luZyBzcGVjaWZpYyBjb3VudHM7IGZ1bmN0aW9uYWxseSwgYGVudi0mZ3Q7aW5zbl9wcm9jZXNzZWRgIGlzIGJlaW5nIHVwZGF0ZWQgaW4gdGhlIHNhbWUgbWFubmVyLiBUaGlzIHBhdGNoIGp1c3QgcHJvdmlkZXMgbW9yZSBkZXRhaWxlZCBpbnNpZ2h0cyBpbnRvIHRoZSB2ZXJpZmljYXRpb24gcHJvY2Vzcy4KCkkmIzM5O3ZlIGFsc28gcXVpY2tseSBzY2FubmVkIHRoZSBgcHJpbnRfdmVyaWZpY2F0aW9uX3N0YXRzYCBmdW5jdGlvbiB0byBlbnN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIG1lbW9yeSBhY2Nlc3Mgb3IgbG9nZ2luZyB0aGF0IGNvdWxkIGNhdXNlIGEgY3Jhc2guIEl0IGFwcGVhcnMgdG8gYmUgYSBzYWZlIGB2ZXJib3NlKClgIGNhbGwsIG1lcmVseSBvdXRwdXR0aW5nIHRoZSBjb2xsZWN0ZWQgc3RhdGlzdGljcy4KCkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIHdoaWNoIGlzIGxpbWl0ZWQgdG8gbG9nZ2luZyBhbmQgc3RhdGlzdGljYWwgYWNjdW11bGF0aW9uLCBJIGNhbiBjb25maWRlbnRseSBjb25jbHVkZSB0aGF0IGZ1enppbmcgdGhpcyBzcGVjaWZpYyBwYXRjaCB3b3VsZCBub3QgYmUgYmVuZWZpY2lhbC4gSXQgd29uJiMzOTt0IHJldmVhbCBhbnkgbmV3IHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgcHJvZ3JhbSB2ZXJpZmljYXRpb24uIFRoZXJlZm9yZSwgbXkgYXNzZXNzbWVudCBpcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBzdGF0aXN0aWNzIHRyYWNraW5nIGZvciB0aGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBwcm9jZXNzZWQgcGVyIHN1YnByb2dyYW0gZHVyaW5nIEJQRiB2ZXJpZmljYXRpb24gYW5kIG91dHB1dHMgdGhlbSBpbiB0aGUgdmVyaWZpZXIgbG9nLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgdmVyaWZpY2F0aW9uIGxvZ2ljLCBleGVjdXRpb24gZmxvdywgb3IgdGhlIGdlbmVyYXRlZCBCUEYgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBzdGF0aXN0aWNzIHRyYWNraW5nIGZvciB0aGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBwcm9jZXNzZWQgcGVyIHN1YnByb2dyYW0gZHVyaW5nIEJQRiB2ZXJpZmljYXRpb24gYW5kIG91dHB1dHMgdGhlbSBpbiB0aGUgdmVyaWZpZXIgbG9nLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgdmVyaWZpY2F0aW9uIGxvZ2ljLCBleGVjdXRpb24gZmxvdywgb3IgdGhlIGdlbmVyYXRlZCBCUEYgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjI6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIyOjM4OjE1Ljk1MjA2NjA1M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTA5MDk4MTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIHN0YXRpc3RpY3MgdHJhY2tpbmcgZm9yIHRoZSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIHByb2Nlc3NlZCBwZXIgc3VicHJvZ3JhbSBkdXJpbmcgQlBGIHZlcmlmaWNhdGlvbiBhbmQgb3V0cHV0cyB0aGVtIGluIHRoZSB2ZXJpZmllciBsb2cuIEl0IGRvZXMgbm90IGFsdGVyIHRoZSB2ZXJpZmljYXRpb24gbG9naWMsIGV4ZWN1dGlvbiBmbG93LCBvciB0aGUgZ2VuZXJhdGVkIEJQRiBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjI6Mzg6MTUuOTUyMDcxNzkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc1NDMzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyNzYyMTk5OGU3N2E3OThmZjk4Mjk2NTkzZTcyOTJkZWM1NzI4NDEwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDEyIDIyOjM4OjE1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oXFxuaW5kZXggOTNmN2MyMDc1ZWVhYS4uN2MzNzY0NTFkYjgyNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaFxcbkBAIC0zODAsNiArMzgwLDggQEAgc3RydWN0IGJwZl9mdW5jX3N0YXRlIHtcXG4gXFx0ICogICAgICAgICAgICAgICAgICAgICAgICAgICB8IG51bWJlciBvZiBzaW11bGF0aW9ucyBpcyB0cmFja2VkIGluIGZyYW1lIE5cXG4gXFx0ICovXFxuIFxcdHUzMiBjYWxsYmFja19kZXB0aDtcXG4rXFx0LyogSW5zdHJ1Y3Rpb25zIHByb2Nlc3NlZCBpbiB0aGlzIGZyYW1lIGFuZCBjYWxsZWVzIG9uIHRoZSBjdXJyZW50IHBhdGguICovXFxuK1xcdHUzMiBpbnNuc19zdWJ0b3RhbDtcXG4gXFxuIFxcdC8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIHNob3VsZCBiZSBsYXN0LiBTZWUgY29weV9mdW5jX3N0YXRlKCkgKi9cXG4gXFx0LyogVGhlIHN0YXRlIG9mIHRoZSBzdGFjay4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBkZXNjcmliZXMgQlBGX1JFR19TSVpFXFxuQEAgLTc5OCw3ICs4MDAsOCBAQCBzdHJ1Y3QgYnBmX3N1YnByb2dfaW5mbyB7XFxuIFxcdHUzMiBleGl0X2lkeDsgLyogSW5kZXggb2Ygb25lIG9mIHRoZSBCUEZfRVhJVCBpbnN0cnVjdGlvbnMgaW4gdGhpcyBzdWJwcm9ncmFtICovXFxuIFxcdHUxNiBzdGFja19kZXB0aDsgLyogbWF4LiBzdGFjayBkZXB0aCB1c2VkIGJ5IHRoaXMgZnVuY3Rpb24gKi9cXG4gXFx0dTE2IHN0YWNrX2V4dHJhO1xcbi1cXHR1MzIgaW5zbl9wcm9jZXNzZWQ7XFxuK1xcdHUzMiBpbnNuc190b3RhbDtcXG4rXFx0dTMyIGluc25zX3NlbGY7XFxuIFxcdC8qIG9mZnNldHMgaW4gcmFuZ2UgW3N0YWNrX2RlcHRoIC4uIGZhc3RjYWxsX3N0YWNrX29mZilcXG4gXFx0ICogYXJlIHVzZWQgZm9yIGJwZl9mYXN0Y2FsbCBzcGlsbHMgYW5kIGZpbGxzLlxcbiBcXHQgKi9cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggYWRkM2FmZmM1NzAzNS4uODIwZDI4MzFmMzQwMyAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtMTU5Myw2ICsxNTkzLDggQEAgc3RhdGljIGludCBjb3B5X2Z1bmNfc3RhdGUoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpkc3QsXFxuIFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqc3JjKVxcbiB7XFxuIFxcdG1lbWNweShkc3QsIHNyYywgb2Zmc2V0b2Yoc3RydWN0IGJwZl9mdW5jX3N0YXRlLCBzdGFjaykpO1xcbitcXHQvKiBJbnN0cnVjdGlvbiBhY2NvdW50aW5nIGlzIHBhdGgtbG9jYWwsIG5vdCBwYXJ0IG9mIHZlcmlmaWVyIHN0YXRlLiAqL1xcbitcXHRkc3QtXFx1MDAzZWluc25zX3N1YnRvdGFsID0gMDtcXG4gXFx0cmV0dXJuIGNvcHlfc3RhY2tfc3RhdGUoZHN0LCBzcmMpO1xcbiB9XFxuIFxcbkBAIC05NzE3LDYgKzk3MTksNDIgQEAgc3RhdGljIGludCBzZXRfdGFza193b3JrX3NjaGVkdWxlX2NhbGxiYWNrX3N0YXRlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcbiBzdGF0aWMgYm9vbCBpc19yYnRyZWVfbG9ja19yZXF1aXJlZF9rZnVuYyh1MzIgYnRmX2lkKTtcXG4gXFxuK3N0YXRpYyB2b2lkIGFjY291bnRfcHJvY2Vzc2VkX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4re1xcbitcXHRzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmZyYW1lID0gY3VyX2Z1bmMoZW52KTtcXG4rXFxuK1xcdGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQrKztcXG4rXFx0ZnJhbWUtXFx1MDAzZWluc25zX3N1YnRvdGFsKys7XFxuK1xcdGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2ZyYW1lLVxcdTAwM2VzdWJwcm9nbm9dLmluc25zX3NlbGYrKztcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4rXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqY2FsbGVlLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IGJwZl9mdW5jX3N0YXRlICpjYWxsZXIpXFxuK3tcXG4rXFx0dTMyIGluc25zO1xcbitcXG4rXFx0aWYgKCFjYWxsZWUpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGluc25zID0gY2FsbGVlLVxcdTAwM2VpbnNuc19zdWJ0b3RhbDtcXG4rXFxuK1xcdGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2NhbGxlZS1cXHUwMDNlc3VicHJvZ25vXS5pbnNuc190b3RhbCArPSBpbnNucztcXG4rXFx0aWYgKGNhbGxlcilcXG4rXFx0XFx0Y2FsbGVyLVxcdTAwM2VpbnNuc19zdWJ0b3RhbCArPSBpbnNucztcXG4rXFx0Y2FsbGVlLVxcdTAwM2VpbnNuc19zdWJ0b3RhbCA9IDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGFjY291bnRfY3VycmVudF9wYXRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuK3tcXG4rXFx0c3RydWN0IGJwZl92ZXJpZmllcl9zdGF0ZSAqc3RhdGUgPSBlbnYtXFx1MDAzZWN1cl9zdGF0ZTtcXG4rXFx0aW50IGZyYW1lO1xcbitcXG4rXFx0Zm9yIChmcmFtZSA9IHN0YXRlLVxcdTAwM2VjdXJmcmFtZTsgZnJhbWUgXFx1MDAzZT0gMDsgZnJhbWUtLSlcXG4rXFx0XFx0YWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoZW52LCBzdGF0ZS1cXHUwMDNlZnJhbWVbZnJhbWVdLFxcbitcXHRcXHRcXHRcXHRcXHRmcmFtZSA/IHN0YXRlLVxcdTAwM2VmcmFtZVtmcmFtZSAtIDFdIDogTlVMTCk7XFxuK31cXG4rXFxuIC8qIEFyZSB3ZSBjdXJyZW50bHkgdmVyaWZ5aW5nIHRoZSBjYWxsYmFjayBmb3IgYSByYnRyZWUgaGVscGVyIHRoYXQgbXVzdFxcbiAgKiBiZSBjYWxsZWQgd2l0aCBsb2NrIGhlbGQ/IElmIHNvLCBubyBuZWVkIHRvIGNvbXBsYWluIGFib3V0IHVucmVsZWFzZWRcXG4gICogbG9ja1xcbkBAIC05ODEzLDYgKzk4NTEsNyBAQCBzdGF0aWMgaW50IHByZXBhcmVfZnVuY19leGl0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCAqaW5zbl9pZHgpXFxuIFxcdFxcdHZlcmJvc2UoZW52LCBcXFwidG8gY2FsbGVyIGF0ICVkOlxcXFxuXFxcIiwgKmluc25faWR4KTtcXG4gXFx0XFx0cHJpbnRfdmVyaWZpZXJfc3RhdGUoZW52LCBzdGF0ZSwgY2FsbGVyLVxcdTAwM2VmcmFtZW5vLCB0cnVlKTtcXG4gXFx0fVxcbitcXHRhY2NvdW50X3Byb2Nlc3NlZF9pbnNucyhlbnYsIGNhbGxlZSwgY2FsbGVyKTtcXG4gXFx0LyogY2xlYXIgZXZlcnl0aGluZyBpbiB0aGUgY2FsbGVlLiBJbiBjYXNlIG9mIGV4Y2VwdGlvbmFsIGV4aXRzIHVzaW5nXFxuIFxcdCAqIGJwZl90aHJvdywgdGhpcyB3aWxsIGJlIGRvbmUgYnkgY29weV92ZXJpZmllcl9zdGF0ZSBmb3IgZXh0cmEgZnJhbWVzLiAqL1xcbiBcXHRmcmVlX2Z1bmNfc3RhdGUoY2FsbGVlKTtcXG5AQCAtMTczNjgsNyArMTc0MDcsOSBAQCBzdGF0aWMgaW50IGRvX2NoZWNrKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuIFxcdFxcdGluc24gPSBcXHUwMDI2aW5zbnNbZW52LVxcdTAwM2VpbnNuX2lkeF07XFxuIFxcdFxcdGluc25fYXV4ID0gXFx1MDAyNmVudi1cXHUwMDNlaW5zbl9hdXhfZGF0YVtlbnYtXFx1MDAzZWluc25faWR4XTtcXG4gXFxuLVxcdFxcdGlmICgrK2Vudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQgXFx1MDAzZSBCUEZfQ09NUExFWElUWV9MSU1JVF9JTlNOUykge1xcbitcXHRcXHRhY2NvdW50X3Byb2Nlc3NlZF9pbnNuKGVudik7XFxuK1xcbitcXHRcXHRpZiAoZW52LVxcdTAwM2VpbnNuX3Byb2Nlc3NlZCBcXHUwMDNlIEJQRl9DT01QTEVYSVRZX0xJTUlUX0lOU05TKSB7XFxuIFxcdFxcdFxcdHZlcmJvc2UoZW52LFxcbiBcXHRcXHRcXHRcXHRcXFwiQlBGIHByb2dyYW0gaXMgdG9vIGxhcmdlLiBQcm9jZXNzZWQgJWQgaW5zblxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0ZW52LVxcdTAwM2VpbnNuX3Byb2Nlc3NlZCk7XFxuQEAgLTE3NTA5LDYgKzE3NTUwLDcgQEAgc3RhdGljIGludCBkb19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbiBcXHRcXHRcXHRcXHRcXHQgICAgXFxcInNwZWN1bGF0aW9uIGJhcnJpZXIgYWZ0ZXIganVtcCBpbnN0cnVjdGlvbiBtYXkgbm90IGhhdmUgdGhlIGRlc2lyZWQgZWZmZWN0XFxcIikpXFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiBwcm9jZXNzX2JwZl9leGl0OlxcbitcXHRcXHRcXHRhY2NvdW50X2N1cnJlbnRfcGF0aChlbnYpO1xcbiBcXHRcXHRcXHRtYXJrX3ZlcmlmaWVyX3N0YXRlX3NjcmF0Y2hlZChlbnYpO1xcbiBcXHRcXHRcXHRlcnIgPSBicGZfdXBkYXRlX2JyYW5jaF9jb3VudHMoZW52LCBlbnYtXFx1MDAzZWN1cl9zdGF0ZSk7XFxuIFxcdFxcdFxcdGlmIChlcnIpXFxuQEAgLTE4NDE1LDYgKzE4NDU3LDcgQEAgc3RhdGljIGludCBkb19jaGVja19jb21tb24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2cpXFxuIFxcdHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eCA9IGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlYXV4O1xcbiBcXHRzdHJ1Y3QgYnBmX3ZlcmlmaWVyX3N0YXRlICpzdGF0ZTtcXG4gXFx0c3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZ3M7XFxuK1xcdHUzMiBpbnNuX3Byb2Nlc3NlZCA9IGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQ7XFxuIFxcdGludCByZXQsIGk7XFxuIFxcbiBcXHRlbnYtXFx1MDAzZXByZXZfbGluZm8gPSBOVUxMO1xcbkBAIC0xODU1Myw5ICsxODU5NiwxOSBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX2NvbW1vbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgc3VicHJvZylcXG4gXFxuIFxcdHJldCA9IGRvX2NoZWNrKGVudik7XFxuIG91dDpcXG4rXFx0YWNjb3VudF9jdXJyZW50X3BhdGgoZW52KTtcXG4gXFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgcG9wX2xvZylcXG4gXFx0XFx0YnBmX3Zsb2dfcmVzZXQoXFx1MDAyNmVudi1cXHUwMDNlbG9nLCAwKTtcXG4gXFx0ZnJlZV9zdGF0ZXMoZW52KTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFRoZSBvdmVycmlkZSBpcyBuZWVkZWQgdG8gYWNjb3VudCBmb3IgYXN5bmMgc3VicHJvZ3JhbXMsIHdoaWNoXFxuK1xcdCAqIGFyZSB2ZXJpZmllZCB3aXRoIHRoZWlyIG93biBzZXQgb2Ygc3RhY2sgZnJhbWVzIGFuZCB0aHVzIGFyZVxcbitcXHQgKiBub3QgYWNjb3VudGVkIGFzIGNhbGxlZXMgYnkgYWNjb3VudF9jdXJyZW50X3BhdGgoKS5cXG4rXFx0ICogQWNjdW11bGF0ZSB0aGVpciB0b3RhbCBjb3VudHMgYXMgdG90YWwgY291bnRzIG9mIHRoZSBtYWluIG9yXFxuK1xcdCAqIGdsb2JhbCBzdWJwcm9nIGhvc3RpbmcgdGhlIGFzeW5jIGNhbGwuXFxuK1xcdCAqL1xcbitcXHRlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tzdWJwcm9nXS5pbnNuc190b3RhbCA9IGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtMTg1ODQsNyArMTg2MzcsNiBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuIFxcdHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eCA9IGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlYXV4O1xcbiBcXHRzdHJ1Y3QgYnBmX2Z1bmNfaW5mb19hdXggKnN1Yl9hdXg7XFxuIFxcdGludCBpLCByZXQsIG5ld19jbnQ7XFxuLVxcdHUzMiBpbnNuX3Byb2Nlc3NlZDtcXG4gXFxuIFxcdGlmICghYXV4LVxcdTAwM2VmdW5jX2luZm8pXFxuIFxcdFxcdHJldHVybiAwO1xcbkBAIC0xODU5OSw4ICsxODY1MSw2IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4gXFx0XFx0aWYgKCFicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbi1cXHRcXHRpbnNuX3Byb2Nlc3NlZCA9IGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQ7XFxuLVxcbiBcXHRcXHRzdWJfYXV4ID0gc3VicHJvZ19hdXgoZW52LCBpKTtcXG4gXFx0XFx0aWYgKCFzdWJfYXV4LVxcdTAwM2VjYWxsZWQgfHwgc3ViX2F1eC1cXHUwMDNldmVyaWZpZWQpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbkBAIC0xODYwOCw3ICsxODY1OCw2IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4gXFx0XFx0ZW52LVxcdTAwM2VpbnNuX2lkeCA9IGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2ldLnN0YXJ0O1xcbiBcXHRcXHRXQVJOX09OX09OQ0UoZW52LVxcdTAwM2VpbnNuX2lkeCA9PSAwKTtcXG4gXFx0XFx0cmV0ID0gZG9fY2hlY2tfY29tbW9uKGVudiwgaSk7XFxuLVxcdFxcdGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2ldLmluc25fcHJvY2Vzc2VkID0gZW52LVxcdTAwM2VpbnNuX3Byb2Nlc3NlZCAtIGluc25fcHJvY2Vzc2VkO1xcbiBcXHRcXHRpZiAocmV0KSB7XFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdFxcdH0gZWxzZSBpZiAoZW52LVxcdTAwM2Vsb2cubGV2ZWwgXFx1MDAyNiBCUEZfTE9HX0xFVkVMKSB7XFxuQEAgLTE4NjM1LDEyICsxODY4NCwxMCBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuIFxcbiBzdGF0aWMgaW50IGRvX2NoZWNrX21haW4oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4ge1xcbi1cXHR1MzIgaW5zbl9wcm9jZXNzZWQgPSBlbnYtXFx1MDAzZWluc25fcHJvY2Vzc2VkO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0ZW52LVxcdTAwM2VpbnNuX2lkeCA9IDA7XFxuIFxcdHJldCA9IGRvX2NoZWNrX2NvbW1vbihlbnYsIDApO1xcbi1cXHRlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1swXS5pbnNuX3Byb2Nlc3NlZCA9IGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDtcXG4gXFx0aWYgKCFyZXQpXFxuIFxcdFxcdGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VzdGFja19kZXB0aCA9IGVudi1cXHUwMDNlc3VicHJvZ19pbmZvWzBdLnN0YWNrX2RlcHRoO1xcbiBcXHRyZXR1cm4gcmV0O1xcbkBAIC0xODY1NSwxNSArMTg3MDIsMjAgQEAgc3RhdGljIHZvaWQgcHJpbnRfdmVyaWZpY2F0aW9uX3N0YXRzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuIFxcdGlmIChlbnYtXFx1MDAzZWxvZy5sZXZlbCBcXHUwMDI2IEJQRl9MT0dfU1RBVFMpIHtcXG4gXFx0XFx0dmVyYm9zZShlbnYsIFxcXCJ2ZXJpZmljYXRpb24gdGltZSAlbGxkIHVzZWNcXFxcblxcXCIsXFxuIFxcdFxcdFxcdGRpdl91NjQoZW52LVxcdTAwM2V2ZXJpZmljYXRpb25fdGltZSwgMTAwMCkpO1xcbi1cXHRcXHR2ZXJib3NlKGVudiwgXFxcInN0YWNrIGRlcHRoICVkXFxcIiwgZW52LVxcdTAwM2VzdWJwcm9nX2luZm9bMF0uc3RhY2tfZGVwdGgpO1xcbi1cXHRcXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2Mgc3VicHJvZ19jbnQ7IGkrKylcXG4tXFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCIrJWRcXFwiLCBlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tpXS5zdGFja19kZXB0aCk7XFxuLVxcdFxcdHZlcmJvc2UoZW52LCBcXFwiIG1heCAlZFxcXFxuXFxcIiwgZW52LVxcdTAwM2VtYXhfc3RhY2tfZGVwdGgpO1xcbi1cXHRcXHR2ZXJib3NlKGVudiwgXFxcImluc25zIHByb2Nlc3NlZCAlZFxcXCIsIGVudi1cXHUwMDNlc3VicHJvZ19pbmZvWzBdLmluc25fcHJvY2Vzc2VkKTtcXG4tXFx0XFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIHN1YnByb2dfY250OyBpKyspXFxuLVxcdFxcdFxcdGlmIChicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSlcXG4tXFx0XFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCIrJWRcXFwiLCBlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tpXS5pbnNuX3Byb2Nlc3NlZCk7XFxuLVxcdFxcdHZlcmJvc2UoZW52LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0dmVyYm9zZShlbnYsIFxcXCJzdGFjayBkZXB0aCBtYXggJWRcXFxcblxcXCIsIGVudi1cXHUwMDNlbWF4X3N0YWNrX2RlcHRoKTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHN1YnByb2dfY250OyBpKyspIHtcXG4rXFx0XFx0XFx0Y29uc3QgY2hhciAqbmFtZSA9IGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2ldLm5hbWU7XFxuK1xcdFxcdFxcdGNvbnN0IGNoYXIgKmtpbmQ7XFxuK1xcbitcXHRcXHRcXHRpZiAoIW5hbWUgfHwgIW5hbWVbMF0pXFxuK1xcdFxcdFxcdFxcdG5hbWUgPSBcXFwiXFx1MDAzY3Vua25vd25cXHUwMDNlXFxcIjtcXG4rXFx0XFx0XFx0a2luZCA9IGkgPT0gMCA/IFxcXCJtYWluXFxcIiA6XFxuK1xcdFxcdFxcdCAgICAgICBicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSA/IFxcXCJnbG9iYWxcXFwiIDogXFxcInN0YXRpY1xcXCI7XFxuK1xcdFxcdFxcdHZlcmJvc2UoZW52LCBcXFwic3VicHJvZyAlZCAoJXMpICVzIGluc25zX3NlbGYgJWQgaW5zbnNfdG90YWwgJWQgc3RhY2sgJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdGksIG5hbWUsIGtpbmQsIGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2ldLmluc25zX3NlbGYsXFxuK1xcdFxcdFxcdFxcdGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2ldLmluc25zX3RvdGFsLFxcbitcXHRcXHRcXHRcXHRlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tpXS5zdGFja19kZXB0aCk7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXHR2ZXJib3NlKGVudiwgXFxcInByb2Nlc3NlZCAlZCBpbnNucyAobGltaXQgJWQpIG1heF9zdGF0ZXNfcGVyX2luc24gJWQgXFxcIlxcbiBcXHRcXHRcXFwidG90YWxfc3RhdGVzICVkIHBlYWtfc3RhdGVzICVkIG1hcmtfcmVhZCAlZFxcXFxuXFxcIixcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcXG5pbmRleCA1YjI2NWFmM2IxZDU3Li44MTEzZmVhN2JhODZjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jXFxuQEAgLTEwMiw2ICsxMDIsNyBAQFxcbiAjaW5jbHVkZSBcXFwidmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInZlcmlmaWVyX3N0YWNrX3B0ci5za2VsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ2ZXJpZmllcl9zdG9yZV9yZWxlYXNlLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cy5za2VsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ2ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbi5za2VsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ2ZXJpZmllcl9zdWJwcm9nX3RvcG8uc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidmVyaWZpZXJfc3VicmVnLnNrZWwuaFxcXCJcXG5AQCAtMjYyLDYgKzI2Myw3IEBAIHZvaWQgdGVzdF92ZXJpZmllcl9zdGFja19hcmcodm9pZCkgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9zdGFja19hcmcpOyB9XFxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIodm9pZCkgICAgICB7IFJVTih2ZXJpZmllcl9zdGFja19hcmdfb3JkZXIpOyB9XFxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdGFja19wdHIodm9pZCkgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9zdGFja19wdHIpOyB9XFxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdG9yZV9yZWxlYXNlKHZvaWQpICAgICAgICB7IFJVTih2ZXJpZmllcl9zdG9yZV9yZWxlYXNlKTsgfVxcbit2b2lkIHRlc3RfdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzKHZvaWQpICAgeyBSVU4odmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzKTsgfVxcbiB2b2lkIHRlc3RfdmVyaWZpZXJfc3VicHJvZ19wcmVjaXNpb24odm9pZCkgICAgeyBSVU4odmVyaWZpZXJfc3VicHJvZ19wcmVjaXNpb24pOyB9XFxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdWJwcm9nX3RvcG8odm9pZCkgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N1YnByb2dfdG9wbyk7IH1cXG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX3N1YnJlZyh2b2lkKSAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N1YnJlZyk7IH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suY1xcbmluZGV4IGQzZGY3YTlmMWQ4YzguLjBlYjQ5NWNlODVjMWMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suY1xcbkBAIC0yNyw3ICsyNyw4IEBAIF9fbmFrZWQgdm9pZCBzdGFja19vdXRfb2ZfYm91bmRzKHZvaWQpXFxuIFxcbiBTRUMoXFxcInNvY2tldFxcXCIpXFxuIF9fZGVzY3JpcHRpb24oXFxcInVuaW5pdGlhbGl6ZWQgc3RhY2sxXFxcIilcXG4tX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpIF9fbXNnKFxcXCJzdGFjayBkZXB0aCA4XFxcIilcXG4rX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKHVuaW5pdGlhbGl6ZWRfc3RhY2sxKSBtYWluIHt7Lip9fSBzdGFjayA4XFxcIilcXG4gX19mYWlsdXJlX3VucHJpdiBfX21zZ191bnByaXYoXFxcImludmFsaWQgcmVhZCBmcm9tIHN0YWNrXFxcIilcXG4gX19uYWtlZCB2b2lkIHVuaW5pdGlhbGl6ZWRfc3RhY2sxKHZvaWQpXFxuIHtcXG5AQCAtNDUsNyArNDYsOCBAQCBfX25ha2VkIHZvaWQgdW5pbml0aWFsaXplZF9zdGFjazEodm9pZClcXG4gXFxuIFNFQyhcXFwic29ja2V0XFxcIilcXG4gX19kZXNjcmlwdGlvbihcXFwidW5pbml0aWFsaXplZCBzdGFjazJcXFwiKVxcbi1fX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIDhcXFwiKVxcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcXG4rX19tc2coXFxcInN1YnByb2cgMCAodW5pbml0aWFsaXplZF9zdGFjazIpIG1haW4gaW5zbnNfc2VsZiB7e1swLTldK319IGluc25zX3RvdGFsIHt7WzAtOV0rfX0gc3RhY2sgOFxcXCIpXFxuIF9fZmFpbHVyZV91bnByaXYgX19tc2dfdW5wcml2KFxcXCJpbnZhbGlkIHJlYWQgZnJvbSBzdGFja1xcXCIpXFxuIF9fbmFrZWQgdm9pZCB1bmluaXRpYWxpemVkX3N0YWNrMih2b2lkKVxcbiB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuY1xcbmluZGV4IDgzNzA3ZmFlYTA0OTkuLjRjZmFhNmI0YWI0MDUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXFxuQEAgLTEwLDcgKzEwLDggQEBcXG4gXFxuIFNFQyhcXFwicmF3X3RwXFxcIilcXG4gX19hcmNoX3g4Nl82NFxcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcXFwic3RhY2sgZGVwdGggOFxcXCIpXFxuK19fbG9nX2xldmVsKDQpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKHNpbXBsZSkgbWFpbiBpbnNuc19zZWxmIHt7WzAtOV0rfX0gaW5zbnNfdG90YWwge3tbMC05XSt9fSBzdGFjayA4XFxcIilcXG4gX194bGF0ZWQoXFxcIjQ6IHI1ID0gNVxcXCIpXFxuIF9feGxhdGVkKFxcXCI1OiByMCA9IFxcXCIpXFxuIF9feGxhdGVkKFxcXCI2OiByMCA9IFxcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcXFwiKVxcbkBAIC05Niw3ICs5Nyw4IEBAIF9fbmFrZWQgdm9pZCBjYW5hcnlfemVyb19zcGlsbHModm9pZClcXG4gXFxuIFNFQyhcXFwicmF3X3RwXFxcIilcXG4gX19hcmNoX3g4Nl82NFxcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcXFwic3RhY2sgZGVwdGggMTZcXFwiKVxcbitfX2xvZ19sZXZlbCg0KVxcbitfX21zZyhcXFwic3VicHJvZyAwICh3cm9uZ19yZWdfaW5fcGF0dGVybjEpIG1haW4ge3suKn19IHN0YWNrIDE2XFxcIilcXG4gX194bGF0ZWQoXFxcIjE6ICoodTY0ICopKHIxMCAtMTYpID0gcjFcXFwiKVxcbiBfX3hsYXRlZChcXFwiLi4uXFxcIilcXG4gX194bGF0ZWQoXFxcIjM6IHIwID0gXFx1MDAyNih2b2lkIF9fcGVyY3B1ICopKHIwKVxcXCIpXFxuQEAgLTU5OCw3ICs2MDAsOCBAQCBfX25ha2VkIHN0YXRpYyB2b2lkIHN1YnByb2dzX3VzZV9pbmRlcGVuZGVudF9vZmZzZXRzX2F1eCh2b2lkKVxcbiBcXG4gU0VDKFxcXCJyYXdfdHBcXFwiKVxcbiBfX2FyY2hfeDg2XzY0XFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFxcXCJzdGFjayBkZXB0aCA4XFxcIilcXG4rX19sb2dfbGV2ZWwoNClcXG4rX19tc2coXFxcInN1YnByb2cgMCAoaGVscGVyX2NhbGxfZG9lc19ub3RfcHJldmVudF9icGZfZmFzdGNhbGwpIG1haW4ge3suKn19IHN0YWNrIDhcXFwiKVxcbiBfX3hsYXRlZChcXFwiMjogcjAgPSBcXHUwMDI2KHZvaWQgX19wZXJjcHUgKikocjApXFxcIilcXG4gX19zdWNjZXNzXFxuIF9fbmFrZWQgdm9pZCBoZWxwZXJfY2FsbF9kb2VzX25vdF9wcmV2ZW50X2JwZl9mYXN0Y2FsbCh2b2lkKVxcbkBAIC02MjAsNyArNjIzLDggQEAgX19uYWtlZCB2b2lkIGhlbHBlcl9jYWxsX2RvZXNfbm90X3ByZXZlbnRfYnBmX2Zhc3RjYWxsKHZvaWQpXFxuIFxcbiBTRUMoXFxcInJhd190cFxcXCIpXFxuIF9fYXJjaF94ODZfNjRcXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIDI0XFxcIilcXG4rX19sb2dfbGV2ZWwoNClcXG4rX19tc2coXFxcInN1YnByb2cgMCAobWF5X2dvdG9faW50ZXJhY3Rpb25feDg2XzY0KSBtYWluIHt7Lip9fSBzdGFjayAyNFxcXCIpXFxuIC8qIG1heV9nb3RvIGNvdW50ZXIgYXQgLTI0ICovXFxuIF9feGxhdGVkKFxcXCIwOiAqKHU2NCAqKShyMTAgLTI0KSA9XFxcIilcXG4gLyogbWF5X2dvdG8gdGltZXN0YW1wIGF0IC0xNiAqL1xcbkBAIC02NjEsNyArNjY1LDggQEAgX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCh2b2lkKVxcbiBTRUMoXFxcInJhd190cFxcXCIpXFxuIF9fYXJjaF9hcm02NFxcbiBfX2FyY2hfcmlzY3Y2NFxcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcXFwic3RhY2sgZGVwdGggMjRcXFwiKVxcbitfX2xvZ19sZXZlbCg0KVxcbitfX21zZyhcXFwic3VicHJvZyAwIChtYXlfZ290b19pbnRlcmFjdGlvbikgbWFpbiB7ey4qfX0gc3RhY2sgMjRcXFwiKVxcbiAvKiBtYXlfZ290byBjb3VudGVyIGF0IC0yNCAqL1xcbiBfX3hsYXRlZChcXFwiMDogKih1NjQgKikocjEwIC0yNCkgPVxcXCIpXFxuIC8qIG1heV9nb3RvIHRpbWVzdGFtcCBhdCAtMTYgKi9cXG5AQCAtNzA4LDcgKzcxMyw5IEBAIF9fbmFrZWQgc3RhdGljIHZvaWQgZHVtbXlfbG9vcF9jYWxsYmFjayh2b2lkKVxcbiBcXG4gU0VDKFxcXCJyYXdfdHBcXFwiKVxcbiBfX2FyY2hfeDg2XzY0XFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFxcXCJzdGFjayBkZXB0aCAzMiswXFxcIilcXG4rX19sb2dfbGV2ZWwoNClcXG4rX19tc2coXFxcInN1YnByb2cgMCAoYnBmX2xvb3BfaW50ZXJhY3Rpb24xKSBtYWluIHt7Lip9fSBzdGFjayAzMlxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDEgKGR1bW15X2xvb3BfY2FsbGJhY2spIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFxcXCIpXFxuIF9feGxhdGVkKFxcXCIyOiByMSA9IDFcXFwiKVxcbiBfX3hsYXRlZChcXFwiMzogcjAgPVxcXCIpXFxuIF9feGxhdGVkKFxcXCI0OiByMCA9IFxcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcXFwiKVxcbkBAIC03NTYsNyArNzYzLDkgQEAgX19uYWtlZCBpbnQgYnBmX2xvb3BfaW50ZXJhY3Rpb24xKHZvaWQpXFxuIFxcbiBTRUMoXFxcInJhd190cFxcXCIpXFxuIF9fYXJjaF94ODZfNjRcXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIDQwKzBcXFwiKVxcbitfX2xvZ19sZXZlbCg0KVxcbitfX21zZyhcXFwic3VicHJvZyAwIChicGZfbG9vcF9pbnRlcmFjdGlvbjIpIG1haW4ge3suKn19IHN0YWNrIDQwXFxcIilcXG4rX19tc2coXFxcInN1YnByb2cgMSAoZHVtbXlfbG9vcF9jYWxsYmFjaykgc3RhdGljIHt7Lip9fSBzdGFjayAwXFxcIilcXG4gLyogY2FsbCBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQgKi9cXG4gX194bGF0ZWQoXFxcIjI6IHIxID0gNDJcXFwiKVxcbiBfX3hsYXRlZChcXFwiMzogcjAgPVxcXCIpXFxuQEAgLTgwMCw3ICs4MDksMTAgQEAgX19uYWtlZCBpbnQgYnBmX2xvb3BfaW50ZXJhY3Rpb24yKHZvaWQpXFxuIFxcbiBTRUMoXFxcInJhd190cFxcXCIpXFxuIF9fYXJjaF94ODZfNjRcXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIDUxMiswIG1heCA1MTJcXFwiKVxcbitfX2xvZ19sZXZlbCg0KVxcbitfX21zZyhcXFwic3RhY2sgZGVwdGggbWF4IDUxMlxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKGN1bXVsYXRpdmVfc3RhY2tfZGVwdGgpIG1haW4ge3suKn19IHN0YWNrIDUxMlxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDEgKGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZykgc3RhdGljIHt7Lip9fSBzdGFjayAwXFxcIilcXG4gLyoganVzdCB0byBwcmludCB4bGF0ZWQgdmVyc2lvbiB3aGVuIGRlYnVnZ2luZyAqL1xcbiBfX3hsYXRlZChcXFwicjAgPSBcXHUwMDI2KHZvaWQgX19wZXJjcHUgKikocjApXFxcIilcXG4gX19zdWNjZXNzXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuY1xcbmluZGV4IDY3ZGMzNTJhZGRmZDcuLjdiNjVlZWE5N2ViYzIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2dsb2JhbF9zdWJwcm9ncy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2dsb2JhbF9zdWJwcm9ncy5jXFxuQEAgLTUyLDcgKzUyLDEwIEBAIF9fbXNnKFxcXCIoJ2dsb2JhbF9jYWxsc19nb29kX29ubHknKSBpcyBnbG9iYWwgYW5kIGFzc3VtZWQgdmFsaWQuXFxcIilcXG4gLyogZXZlbnR1YWxseSBnbG9iYWxfZ29vZCgpIGlzIHRyYW5zaXRpdmVseSB2YWxpZGF0ZWQgYXMgd2VsbCAqL1xcbiBfX21zZyhcXFwiVmFsaWRhdGluZyBnbG9iYWxfZ29vZCgpIGZ1bmNcXFwiKVxcbiBfX21zZyhcXFwiKCdnbG9iYWxfZ29vZCcpIGlzIHNhZmUgZm9yIGFueSBhcmdzIHRoYXQgbWF0Y2ggaXRzIHByb3RvdHlwZVxcXCIpXFxuLV9fbXNnKFxcXCJpbnNucyBwcm9jZXNzZWQge3tbMC05XStcXFxcXFxcXCtbMC05XStcXFxcXFxcXCtbMC05XSskfX1cXFwiKVxcbitfX21zZyhcXFwic3VicHJvZyAwIChjaGFpbmVkX2dsb2JhbF9mdW5jX2NhbGxzX3N1Y2Nlc3MpIG1haW4gaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2tcXFwiKVxcbitfX21zZyhcXFwic3VicHJvZyB7e1swLTldK319IChnbG9iYWxfY2FsbHNfZ29vZF9vbmx5KSBnbG9iYWwgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2tcXFwiKVxcbitfX21zZyhcXFwic3VicHJvZyB7e1swLTldK319IChnbG9iYWxfZ29vZCkgZ2xvYmFsIGluc25zX3NlbGYgNSBpbnNuc190b3RhbCA1IHN0YWNrXFxcIilcXG4rX19tc2coXFxcInByb2Nlc3NlZCAxNCBpbnNuc1xcXCIpXFxuIGludCBjaGFpbmVkX2dsb2JhbF9mdW5jX2NhbGxzX3N1Y2Nlc3Modm9pZClcXG4ge1xcbiBcXHRpbnQgc3VtID0gMDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcXG5pbmRleCBiYjgyMDZlMTA4ODBjLi5lYTBhN2U3MzMzMWRhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXFxuQEAgLTg2LDcgKzg2LDkgQEAgX19uYWtlZCBzdGF0aWMgdm9pZCBjdW11bGF0aXZlX3N0YWNrX2RlcHRoX3N1YnByb2codm9pZClcXG4gU0VDKFxcXCJrcHJvYmVcXFwiKVxcbiBfX2Rlc2NyaXB0aW9uKFxcXCJQcml2YXRlIHN0YWNrLCBzdWJ0cmVlIFxcdTAwM2UgTUFYX0JQRl9TVEFDS1xcXCIpXFxuIF9fc3VjY2Vzc1xcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcXFwic3RhY2sgZGVwdGggNTEyKzMyIG1heCA1MTJcXFwiKVxcbitfX2xvZ19sZXZlbCg0KSBfX21zZyhcXFwic3RhY2sgZGVwdGggbWF4IDUxMlxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKHByaXZhdGVfc3RhY2tfbmVzdGVkXzEpIG1haW4ge3suKn19IHN0YWNrIDUxMlxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDEgKGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZykgc3RhdGljIHt7Lip9fSBzdGFjayAzMlxcXCIpXFxuIF9fYXJjaF94ODZfNjRcXG4gLyogcHJpdmF0ZSBzdGFjayBmcCBmb3IgdGhlIG1haW4gcHJvZyAqL1xcbiBfX2ppdGVkKFxcXCJcXHRtb3ZhYnNxXFx0JDB4e3suKn19LCAlcjlcXFwiKVxcbkBAIC0zMzEsNyArMzMzLDExIEBAIFNFQyhcXFwiZmVudHJ5L2JwZl9mZW50cnlfdGVzdDlcXFwiKVxcbiBfX2Rlc2NyaXB0aW9uKFxcXCJQcml2YXRlIHN0YWNrLCBhc3luYyBjYWxsYmFjaywgcG90ZW50aWFsIG5lc3RpbmdcXFwiKVxcbiBfX3N1Y2Nlc3MgX19yZXR2YWwoMClcXG4gX19sb2FkX2lmX0pJVGVkKClcXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIDgrMCsyNTYrMCBtYXggMjcyXFxcIilcXG4rX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIG1heCAyNzJcXFwiKVxcbitfX21zZyhcXFwic3VicHJvZyAwIChwcml2YXRlX3N0YWNrX2FzeW5jX2NhbGxiYWNrXzIpIG1haW4ge3suKn19IHN0YWNrIDhcXFwiKVxcbitfX21zZyhcXFwic3VicHJvZyAxICh0aW1lcl9jYjEpIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDIgKHN1YnByb2cxKSBzdGF0aWMge3suKn19IHN0YWNrIDI1NlxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDMgKHN1YnByb2cyKSBzdGF0aWMge3suKn19IHN0YWNrIDBcXFwiKVxcbiBfX2FyY2hfeDg2XzY0XFxuIF9faml0ZWQoXFxcIlxcdHN1YnFcXHQkMHgxMDAsICVyc3BcXFwiKVxcbiBfX2FyY2hfYXJtNjRcXG5AQCAtMzU1LDcgKzM2MSwxMCBAQCBpbnQgcHJpdmF0ZV9zdGFja19hc3luY19jYWxsYmFja18yKHZvaWQpXFxuIFNFQyhcXFwiZmVudHJ5L2JwZl9mZW50cnlfdGVzdDlcXFwiKVxcbiBfX2Rlc2NyaXB0aW9uKFxcXCJwcml2YXRlIHN0YWNrLCBtYXggc3RhY2sgZGVwdGggaXMgcHJpdmF0ZSBzdGFja1xcXCIpXFxuIF9fc3VjY2Vzc1xcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcXFwic3RhY2sgZGVwdGggOCsyNTYrMCBtYXggMjU2XFxcIilcXG4rX19sb2dfbGV2ZWwoNCkgX19tc2coXFxcInN0YWNrIGRlcHRoIG1heCAyNTZcXFwiKVxcbitfX21zZyhcXFwic3VicHJvZyAwIChwcml2YXRlX3N0YWNrX21heF9kZXB0aCkgbWFpbiB7ey4qfX0gc3RhY2sgOFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDEgKHN1YnByb2cxKSBzdGF0aWMgaW5zbnNfc2VsZiB7e1swLTldK319IGluc25zX3RvdGFsIHt7WzAtOV0rfX0gc3RhY2sgMjU2XFxcIilcXG4rX19tc2coXFxcInN1YnByb2cgMiAoc3VicHJvZzIpIHN0YXRpYyBpbnNuc19zZWxmIHt7WzAtOV0rfX0gaW5zbnNfdG90YWwge3tbMC05XSt9fSBzdGFjayAwXFxcIilcXG4gaW50IHByaXZhdGVfc3RhY2tfbWF4X2RlcHRoKHZvaWQpXFxuIHtcXG4gXFx0aW50IHggPSAwO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjhmNjA4MmZkYjVjODRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N1YnByb2dfaW5zbl9zdGF0cy5jXFxuQEAgLTAsMCArMSwyMjMgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2N2bWxpbnV4LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcImJwZl9taXNjLmhcXFwiXFxuK1xcbitzdHJ1Y3QgdGltZXJfdmFsdWUge1xcbitcXHRzdHJ1Y3QgYnBmX3RpbWVyIHRpbWVyO1xcbit9O1xcbitcXG4rc3RydWN0IHtcXG4rXFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUlJBWSk7XFxuK1xcdF9fdWludChtYXhfZW50cmllcywgMSk7XFxuK1xcdF9fdHlwZShrZXksIF9fdTMyKTtcXG4rXFx0X190eXBlKHZhbHVlLCBzdHJ1Y3QgdGltZXJfdmFsdWUpO1xcbit9IHRpbWVyX21hcCBTRUMoXFxcIi5tYXBzXFxcIik7XFxuK1xcbitTRUMoXFxcIj9yYXdfdHBcXFwiKVxcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcXG4rX19tc2coXFxcInN1YnByb2cgMCAoc3RhdHNfbWFpbl9vbmx5KSBtYWluIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCAyIHN0YWNrIDBcXFwiKVxcbitfX21zZyhcXFwicHJvY2Vzc2VkIDIgaW5zbnNcXFwiKVxcbitfX25ha2VkIGludCBzdGF0c19tYWluX29ubHkodm9pZClcXG4re1xcbitcXHRhc20gdm9sYXRpbGUgKFxcbitcXHRcXHRcXFwicjAgPSAwO1xcXCJcXG4rXFx0XFx0XFxcImV4aXQ7XFxcIlxcbitcXHQpO1xcbit9XFxuK1xcbitfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkXFxuK3N0YXRpYyBpbnQgc3RhdHNfY2hhaW5fbGVhZih2b2lkKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZSAoXFxuK1xcdFxcdFxcXCJyMCA9IDA7XFxcIlxcbitcXHRcXHRcXFwiZXhpdDtcXFwiXFxuK1xcdCk7XFxuK31cXG4rXFxuK19fbmFrZWQgX19ub2lubGluZSBfX3VzZWRcXG4rc3RhdGljIGludCBzdGF0c19jaGFpbl9wYXJlbnQodm9pZClcXG4re1xcbitcXHRhc20gdm9sYXRpbGUgKFxcbitcXHRcXHRcXFwiY2FsbCBzdGF0c19jaGFpbl9sZWFmO1xcXCJcXG4rXFx0XFx0XFxcImV4aXQ7XFxcIlxcbitcXHQpO1xcbit9XFxuK1xcbitTRUMoXFxcIj9yYXdfdHBcXFwiKVxcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcXG4rLypcXG4rICogc2VsZjogMiArIDIgKyAyID0gNlxcbisgKiB0b3RhbHM6IGxlYWYgMiwgcGFyZW50IDIgKyAyID0gNCwgbWFpbiAyICsgNCA9IDZcXG4rICovXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKHN0YXRzX3N0YXRpY19jaGFpbikgbWFpbiBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgNiBzdGFjayAwXFxcIilcXG4rX19tc2coXFxcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfY2hhaW5fcGFyZW50KSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDQgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX2NoYWluX2xlYWYpIHN0YXRpYyBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgMiBzdGFjayAwXFxcIilcXG4rX19tc2coXFxcInByb2Nlc3NlZCA2IGluc25zXFxcIilcXG4rX19uYWtlZCBpbnQgc3RhdHNfc3RhdGljX2NoYWluKHZvaWQpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXG4rXFx0XFx0XFxcImNhbGwgc3RhdHNfY2hhaW5fcGFyZW50O1xcXCJcXG4rXFx0XFx0XFxcImV4aXQ7XFxcIlxcbitcXHQpO1xcbit9XFxuK1xcbitfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkXFxuK3N0YXRpYyBpbnQgc3RhdHNfc2hhcmVkX2xlYWYodm9pZClcXG4re1xcbitcXHRhc20gdm9sYXRpbGUgKFxcbitcXHRcXHRcXFwicjAgPSAwO1xcXCJcXG4rXFx0XFx0XFxcImV4aXQ7XFxcIlxcbitcXHQpO1xcbit9XFxuK1xcbitfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkXFxuK2ludCBzdGF0c19nbG9iYWxfcm9vdCh2b2lkKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZSAoXFxuK1xcdFxcdFxcXCJjYWxsIHN0YXRzX3NoYXJlZF9sZWFmO1xcXCJcXG4rXFx0XFx0XFxcImV4aXQ7XFxcIlxcbitcXHQpO1xcbit9XFxuK1xcbitTRUMoXFxcIj9yYXdfdHBcXFwiKVxcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcXG4rLypcXG4rICogc3RhdHNfc2hhcmVkX2xlYWYgaXMgZXhwbG9yZWQgb25jZSB1bmRlciBlYWNoIGluZGVwZW5kZW50IHJvb3QuXFxuKyAqIHNlbGY6IG1haW4gMyArIGxlYWYgNCArIGdsb2JhbCAyID0gOVxcbisgKiByb290IHRvdGFsczogbWFpbiA1ICsgZ2xvYmFsIDQgPSA5XFxuKyAqL1xcbitfX21zZyhcXFwic3VicHJvZyAwIChzdGF0c19zaGFyZWRfcm9vdHMpIG1haW4gaW5zbnNfc2VsZiAzIGluc25zX3RvdGFsIDUgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX3NoYXJlZF9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiA0IGluc25zX3RvdGFsIDQgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX2dsb2JhbF9yb290KSBnbG9iYWwgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDQgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJwcm9jZXNzZWQgOSBpbnNuc1xcXCIpXFxuK19fbmFrZWQgaW50IHN0YXRzX3NoYXJlZF9yb290cyh2b2lkKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZSAoXFxuK1xcdFxcdFxcXCJjYWxsIHN0YXRzX3NoYXJlZF9sZWFmO1xcXCJcXG4rXFx0XFx0XFxcImNhbGwgc3RhdHNfZ2xvYmFsX3Jvb3Q7XFxcIlxcbitcXHRcXHRcXFwiZXhpdDtcXFwiXFxuK1xcdCk7XFxuK31cXG4rXFxuK19fbm9pbmxpbmUgX191c2VkXFxuK3N0YXRpYyBpbnQgc3RhdHNfYXN5bmNfbGVhZih2b2lkICptYXAsIF9fdTMyICprZXksIHN0cnVjdCBicGZfdGltZXIgKnRpbWVyKVxcbit7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitfX25vaW5saW5lIF9fdXNlZFxcbitzdGF0aWMgX191NjQgc3RhdHNfYXN5bmNfc2NoZWR1bGUoc3RydWN0IGJwZl9tYXAgKm1hcCwgX191MzIgKmtleSxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdGltZXJfdmFsdWUgKnZhbHVlLCB2b2lkICpjdHgpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXG4rXFx0XFx0XFxcInIxID0gJVt0aW1lcl07XFxcIlxcbitcXHRcXHRcXFwicjIgPSAlW3N0YXRzX2FzeW5jX2xlYWZdO1xcXCJcXG4rXFx0XFx0XFxcImNhbGwgJVticGZfdGltZXJfc2V0X2NhbGxiYWNrXTtcXFwiXFxuK1xcdFxcdDpcXG4rXFx0XFx0OiBbdGltZXJdIFxcXCJyXFxcIiAodmFsdWUpLFxcbitcXHRcXHQgIF9faW1tX3B0cihzdGF0c19hc3luY19sZWFmKSxcXG4rXFx0XFx0ICBfX2ltbShicGZfdGltZXJfc2V0X2NhbGxiYWNrKVxcbitcXHRcXHQ6IF9fY2xvYmJlcl9jb21tb25cXG4rXFx0KTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwiP3Jhd190cFxcXCIpXFxuK19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KVxcbisvKlxcbisgKiBzZWxmOiA5ICsgNyArIDIgPSAxOFxcbisgKiB0b3RhbHM6IGxlYWYgMiwgc2NoZWR1bGVyIDcsIG1haW4gcm9vdCAxOFxcbisgKi9cXG4rX19tc2coXFxcInN1YnByb2cgMCAoc3RhdHNfYXN5bmNfZGlyZWN0KSBtYWluIGluc25zX3NlbGYgOSBpbnNuc190b3RhbCAxOCBzdGFjayAwXFxcIilcXG4rX19tc2coXFxcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfYXN5bmNfc2NoZWR1bGUpIHN0YXRpYyBpbnNuc19zZWxmIDcgaW5zbnNfdG90YWwgNyBzdGFjayAwXFxcIilcXG4rX19tc2coXFxcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfYXN5bmNfbGVhZikgc3RhdGljIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCAyIHN0YWNrIDBcXFwiKVxcbitfX21zZyhcXFwicHJvY2Vzc2VkIDE4IGluc25zXFxcIilcXG4rX19uYWtlZCBpbnQgc3RhdHNfYXN5bmNfZGlyZWN0KHZvaWQpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXG4rXFx0XFx0XFxcInIxID0gJVt0aW1lcl9tYXBdIGxsO1xcXCJcXG4rXFx0XFx0XFxcInIyID0gJVtzdGF0c19hc3luY19zY2hlZHVsZV07XFxcIlxcbitcXHRcXHRcXFwicjMgPSAwO1xcXCJcXG4rXFx0XFx0XFxcInI0ID0gMDtcXFwiXFxuK1xcdFxcdFxcXCJjYWxsICVbYnBmX2Zvcl9lYWNoX21hcF9lbGVtXTtcXFwiXFxuK1xcdFxcdFxcXCJyMCA9IDA7XFxcIlxcbitcXHRcXHRcXFwiZXhpdDtcXFwiXFxuK1xcdFxcdDpcXG4rXFx0XFx0OiBfX2ltbV9hZGRyKHRpbWVyX21hcCksXFxuK1xcdFxcdCAgX19pbW1fcHRyKHN0YXRzX2FzeW5jX3NjaGVkdWxlKSxcXG4rXFx0XFx0ICBfX2ltbShicGZfZm9yX2VhY2hfbWFwX2VsZW0pXFxuK1xcdFxcdDogX19jbG9iYmVyX2NvbW1vblxcbitcXHQpO1xcbit9XFxuK1xcbitfX25vaW5saW5lIF9fdXNlZFxcbitzdGF0aWMgaW50IHN0YXRzX2FzeW5jX25lc3RlZF9sZWFmKHZvaWQgKm1hcCwgX191MzIgKmtleSwgc3RydWN0IGJwZl90aW1lciAqdGltZXIpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK19fbm9pbmxpbmUgX191c2VkXFxuK3N0YXRpYyBpbnQgc3RhdHNfYXN5bmNfb3V0ZXIodm9pZCAqbWFwLCBfX3UzMiAqa2V5LCBzdHJ1Y3QgYnBmX3RpbWVyICp0aW1lcilcXG4re1xcbitcXHRhc20gdm9sYXRpbGUgKFxcbitcXHRcXHRcXFwicjEgPSAlW3RpbWVyXTtcXFwiXFxuK1xcdFxcdFxcXCJyMiA9ICVbc3RhdHNfYXN5bmNfbmVzdGVkX2xlYWZdO1xcXCJcXG4rXFx0XFx0XFxcImNhbGwgJVticGZfdGltZXJfc2V0X2NhbGxiYWNrXTtcXFwiXFxuK1xcdFxcdDpcXG4rXFx0XFx0OiBbdGltZXJdIFxcXCJyXFxcIiAodGltZXIpLFxcbitcXHRcXHQgIF9faW1tX3B0cihzdGF0c19hc3luY19uZXN0ZWRfbGVhZiksXFxuK1xcdFxcdCAgX19pbW0oYnBmX3RpbWVyX3NldF9jYWxsYmFjaylcXG4rXFx0XFx0OiBfX2Nsb2JiZXJfY29tbW9uXFxuK1xcdCk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitfX25vaW5saW5lIF9fdXNlZFxcbitzdGF0aWMgX191NjQgc3RhdHNfYXN5bmNfbmVzdGVkX3NjaGVkdWxlKHN0cnVjdCBicGZfbWFwICptYXAsIF9fdTMyICprZXksXFxuK1xcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgdGltZXJfdmFsdWUgKnZhbHVlLCB2b2lkICpjdHgpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXG4rXFx0XFx0XFxcInIxID0gJVt0aW1lcl07XFxcIlxcbitcXHRcXHRcXFwicjIgPSAlW3N0YXRzX2FzeW5jX291dGVyXTtcXFwiXFxuK1xcdFxcdFxcXCJjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107XFxcIlxcbitcXHRcXHQ6XFxuK1xcdFxcdDogW3RpbWVyXSBcXFwiclxcXCIgKHZhbHVlKSxcXG4rXFx0XFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfb3V0ZXIpLFxcbitcXHRcXHQgIF9faW1tKGJwZl90aW1lcl9zZXRfY2FsbGJhY2spXFxuK1xcdFxcdDogX19jbG9iYmVyX2NvbW1vblxcbitcXHQpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCI/cmF3X3RwXFxcIilcXG4rX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpXFxuKy8qXFxuKyAqIHNlbGY6IDkgKyA3ICsgNyArIDIgPSAyNVxcbisgKiB0b3RhbHM6IGxlYWYgMiwgb3V0ZXIgNywgc2NoZWR1bGVyIDcsIG1haW4gcm9vdCAyNVxcbisgKi9cXG4rX19tc2coXFxcInN1YnByb2cgMCAoc3RhdHNfYXN5bmNfbmVzdGVkKSBtYWluIGluc25zX3NlbGYgOSBpbnNuc190b3RhbCAyNSBzdGFjayAwXFxcIilcXG4rX19tc2coXFxcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfYXN5bmNfbmVzdGVkX3NjaGVkdWxlKSBzdGF0aWMgaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX2FzeW5jX291dGVyKSBzdGF0aWMgaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX2FzeW5jX25lc3RlZF9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMFxcXCIpXFxuK19fbXNnKFxcXCJwcm9jZXNzZWQgMjUgaW5zbnNcXFwiKVxcbitfX25ha2VkIGludCBzdGF0c19hc3luY19uZXN0ZWQodm9pZClcXG4re1xcbitcXHRhc20gdm9sYXRpbGUgKFxcbitcXHRcXHRcXFwicjEgPSAlW3RpbWVyX21hcF0gbGw7XFxcIlxcbitcXHRcXHRcXFwicjIgPSAlW3N0YXRzX2FzeW5jX25lc3RlZF9zY2hlZHVsZV07XFxcIlxcbitcXHRcXHRcXFwicjMgPSAwO1xcXCJcXG4rXFx0XFx0XFxcInI0ID0gMDtcXFwiXFxuK1xcdFxcdFxcXCJjYWxsICVbYnBmX2Zvcl9lYWNoX21hcF9lbGVtXTtcXFwiXFxuK1xcdFxcdFxcXCJyMCA9IDA7XFxcIlxcbitcXHRcXHRcXFwiZXhpdDtcXFwiXFxuK1xcdFxcdDpcXG4rXFx0XFx0OiBfX2ltbV9hZGRyKHRpbWVyX21hcCksXFxuK1xcdFxcdCAgX19pbW1fcHRyKHN0YXRzX2FzeW5jX25lc3RlZF9zY2hlZHVsZSksXFxuK1xcdFxcdCAgX19pbW0oYnBmX2Zvcl9lYWNoX21hcF9lbGVtKVxcbitcXHRcXHQ6IF9fY2xvYmJlcl9jb21tb25cXG4rXFx0KTtcXG4rfVxcbitcXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcXFwibGljZW5zZVxcXCIpID0gXFxcIkdQTFxcXCI7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXFxuaW5kZXggMjRjZDBhNzYzNjczMC4uYTYzZTMzNjc1MDkxOCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xcbkBAIC0xOTgsNyArMTk4LDggQEAgX19zdWNjZXNzXFxuIC8qIENoZWNrIHRoYXQgdGhlIG1heGltdW0gc3RhY2sgZGVwdGggaXMgY29ycmVjdGx5IG1haW50YWluZWQgYWNjb3JkaW5nIHRvIHRoZVxcbiAgKiBtYXhpbXVtIHBvc3NpYmxlIHZhcmlhYmxlIG9mZnNldC5cXG4gICovXFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFxcXCJzdGFjayBkZXB0aCAxNlxcXCIpXFxuK19fbG9nX2xldmVsKDQpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKHN0YWNrX3dyaXRlX3ByaXZfdnNfdW5wcml2KSBtYWluIHt7Lip9fSBzdGFjayAxNlxcXCIpXFxuIF9fZmFpbHVyZV91bnByaXZcXG4gLyogVmFyaWFibGUgc3RhY2sgYWNjZXNzIGlzIHJlamVjdGVkIGZvciB1bnByaXZpbGVnZWQuXFxuICAqL1xcbkBAIC0yMzgsNyArMjM5LDggQEAgX19zdWNjZXNzXFxuIC8qIENoZWNrIHRoYXQgdGhlIG1heGltdW0gc3RhY2sgZGVwdGggaXMgY29ycmVjdGx5IG1haW50YWluZWQgYWNjb3JkaW5nIHRvIHRoZVxcbiAgKiBtYXhpbXVtIHBvc3NpYmxlIHZhcmlhYmxlIG9mZnNldC5cXG4gICovXFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFxcXCJzdGFjayBkZXB0aCAxNlxcXCIpXFxuK19fbG9nX2xldmVsKDQpXFxuK19fbXNnKFxcXCJzdWJwcm9nIDAgKHN0YWNrX3dyaXRlX2ZvbGxvd2VkX2J5X3JlYWQpIG1haW4ge3suKn19IHN0YWNrIDE2XFxcIilcXG4gX19mYWlsdXJlX3VucHJpdlxcbiBfX21zZ191bnByaXYoXFxcIlIyIHZhcmlhYmxlIHN0YWNrIGFjY2VzcyBwcm9oaWJpdGVkIGZvciAhcm9vdFxcXCIpXFxuIF9fcmV0dmFsKDApXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3ZlcmlmaWVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jXFxuaW5kZXggYThhZTAzYzU3YmJhZS4uYmZmYjczNjA0MzRjNSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfdmVyaWZpZXIuY1xcbkBAIC0xNTYwLDcgKzE1NjAsNyBAQCBzdGF0aWMgdm9pZCBkb190ZXN0X3NpbmdsZShzdHJ1Y3QgYnBmX3Rlc3QgKnRlc3QsIGJvb2wgdW5wcml2LFxcbiBcXG4gXFx0b3B0cy5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IHRlc3QtXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlO1xcbiBcXHRpZiAoZXhwZWN0ZWRfcmV0ID09IFZFUkJPU0VfQUNDRVBUKVxcbi1cXHRcXHRvcHRzLmxvZ19sZXZlbCA9IDI7XFxuK1xcdFxcdG9wdHMubG9nX2xldmVsID0gMiB8IDQ7XFxuIFxcdGVsc2UgaWYgKHZlcmJvc2UpXFxuIFxcdFxcdG9wdHMubG9nX2xldmVsID0gdmVyaWZfbG9nX2xldmVsIHwgNDsgLyogZm9yY2Ugc3RhdHMgKi9cXG4gXFx0ZWxzZVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvY2FsbHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9jYWxscy5jXFxuaW5kZXggOGNkNjI2ZTA0NTUxNS4uZWI2ZTNiYWVmNDEyYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvY2FsbHMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9jYWxscy5jXFxuQEAgLTEwOTEsNyArMTA5MSwxNyBAQFxcbiBcXHQvKiBzdGFja19tYWluPTMyLCBzdGFja19BPTI1Niwgc3RhY2tfQj02NFxcbiBcXHQgKiBhbmQgbWF4KG1haW4rQSwgbWFpbitBK0IpIFxcdTAwM2MgNTEyXFxuIFxcdCAqL1xcbi1cXHQucmVzdWx0ID0gQUNDRVBULFxcbitcXHQucmVzdWx0ID0gVkVSQk9TRV9BQ0NFUFQsXFxuK1xcdC5lcnJzdHIgPSBcXFwic3RhY2sgZGVwdGggbWF4IDM1MlxcXFx0XFxcIlxcbitcXHRcXHQgIFxcXCJzdWJwcm9nIDAgKFxcdTAwM2N1bmtub3duXFx1MDAzZSkgbWFpbiBpbnNuc19zZWxmIFxcXFx0XFxcIlxcbitcXHRcXHQgIFxcXCIgaW5zbnNfdG90YWwgXFxcXHRcXFwiXFxuK1xcdFxcdCAgXFxcIiBzdGFjayAzMlxcXFx0XFxcIlxcbitcXHRcXHQgIFxcXCJzdWJwcm9nIDEgKFxcdTAwM2N1bmtub3duXFx1MDAzZSkgc3RhdGljIGluc25zX3NlbGYgXFxcXHRcXFwiXFxuK1xcdFxcdCAgXFxcIiBpbnNuc190b3RhbCBcXFxcdFxcXCJcXG4rXFx0XFx0ICBcXFwiIHN0YWNrIDI1NlxcXFx0XFxcIlxcbitcXHRcXHQgIFxcXCJzdWJwcm9nIDIgKFxcdTAwM2N1bmtub3duXFx1MDAzZSkgc3RhdGljIGluc25zX3NlbGYgXFxcXHRcXFwiXFxuK1xcdFxcdCAgXFxcIiBpbnNuc190b3RhbCBcXFxcdFxcXCJcXG4rXFx0XFx0ICBcXFwiIHN0YWNrIDY0XFxcIixcXG4gfSxcXG4ge1xcbiBcXHRcXFwiY2FsbHM6IHN0YWNrIGRlcHRoIGNoZWNrIHVzaW5nIHRocmVlIGZyYW1lcy4gdGVzdDJcXFwiLFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXFxuaW5kZXggYzljMjU3Nzg0ZWUzZC4uNWMwZWMzZWRjZTcyMCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXFxuQEAgLTk5MywxMyArOTkzLDE1IEBAIHN0YXRpYyB2b2lkIGZyZWVfdmVyaWZfc3RhdHMoc3RydWN0IHZlcmlmX3N0YXRzICpzdGF0cywgc2l6ZV90IHN0YXRfY250KVxcbiBcXG4gc3RhdGljIGNoYXIgdmVyaWZfbG9nX2J1Zls2NCAqIDEwMjRdO1xcbiBcXG4tI2RlZmluZSBNQVhfUEFSU0VEX0xPR19MSU5FUyAxMDBcXG4rLyogS2VlcCByb29tIGZvciBhbGwgMjU2IHN1YnByb2dyYW0gcmVjb3JkcyBhbmQgdHJhaWxpbmcgc3RhdGlzdGljcy4gKi9cXG4rI2RlZmluZSBNQVhfUEFSU0VEX0xPR19MSU5FUyAzMDBcXG4gXFxuIHN0YXRpYyBpbnQgcGFyc2VfdmVyaWZfbG9nKGNoYXIgKiBjb25zdCBidWYsIHNpemVfdCBidWZfc3osIHN0cnVjdCB2ZXJpZl9zdGF0cyAqcylcXG4ge1xcbiBcXHRjb25zdCBjaGFyICpjdXI7XFxuLVxcdGludCBwb3MsIGxpbmVzLCBzdWJfc3RhY2ssIGNudCA9IDA7XFxuLVxcdGNoYXIgKnN0YXRlID0gTlVMTCwgKnRva2VuLCBzdGFja1s1MTJdO1xcbitcXHRsb25nIHN1Yl9zdGFjaztcXG4rXFx0aW50IHBvcywgbGluZXMsIGNudCA9IDA7XFxuK1xcdGNoYXIgKnN0YXRlID0gTlVMTCwgKnRva2VuLCBzdGFja1s1MTJdID0ge307XFxuIFxcbiBcXHRidWZbYnVmX3N6IC0gMV0gPSAnXFxcXDAnO1xcbiBcXG5AQCAtMTAyNSwxMSArMTAyNywyNCBAQCBzdGF0aWMgaW50IHBhcnNlX3ZlcmlmX2xvZyhjaGFyICogY29uc3QgYnVmLCBzaXplX3QgYnVmX3N6LCBzdHJ1Y3QgdmVyaWZfc3RhdHMgKlxcbiBcXHRcXHRcXHRcXHRcXHUwMDI2cy1cXHUwMDNlc3RhdHNbTUFSS19SRUFEX01BWF9MRU5dKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBOZXcga2VybmVscyBlbWl0IG9uZSBcXFwic3VicHJvZyBcXHUwMDNjaWRcXHUwMDNlIChcXHUwMDNjbmFtZVxcdTAwM2UpIFxcdTAwM2NraW5kXFx1MDAzZVxcXCIgcmVjb3JkXFxuK1xcdFxcdCAqIHBlciBzdWJwcm9ncmFtIHdpdGggdGhlIHN0YWNrIGRlcHRoIGF0IHRoZSBlbmQsIHdoaWxlIG9sZFxcbitcXHRcXHQgKiBrZXJuZWxzIGVtaXQgYSBzaW5nbGUgXFxcInN0YWNrIGRlcHRoIFxcdTAwM2NhKy4uLituXFx1MDAzZSBtYXggXFx1MDAzY21heFxcdTAwM2VcXFwiXFxuK1xcdFxcdCAqIGxpbmUuIE1hdGNoIGJvdGggZm9ybWF0cyBzbyB2ZXJpc3RhdCB3b3JrcyBhZ2FpbnN0IGVpdGhlclxcbitcXHRcXHQgKiBrZXJuZWwuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoc3NjYW5mKGN1ciwgXFxcInN0YWNrIGRlcHRoIG1heCAlbGRcXFwiLCBcXHUwMDI2cy1cXHUwMDNlc3RhdHNbTUFYX1NUQUNLXSkgPT0gMSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdGlmIChzc2NhbmYoY3VyLCBcXFwic3VicHJvZyAlKmQgJSpzICUqcyBpbnNuc19zZWxmICUqZCBpbnNuc190b3RhbCAlKmQgc3RhY2sgJWxkXFxcIiwgXFx1MDAyNnN1Yl9zdGFjaykgPT0gMSkge1xcbitcXHRcXHRcXHRzLVxcdTAwM2VzdGF0c1tTVEFDS10gKz0gc3ViX3N0YWNrO1xcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRpZiAoMiA9PSBzc2NhbmYoY3VyLCBcXFwic3RhY2sgZGVwdGggJTUxMXMgbWF4ICVsZFxcXCIsIHN0YWNrLCBcXHUwMDI2cy1cXHUwMDNlc3RhdHNbTUFYX1NUQUNLXSkpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHR9XFxuIFxcdHdoaWxlICgodG9rZW4gPSBzdHJ0b2tfcihjbnQrKyA/IE5VTEwgOiBzdGFjaywgXFxcIitcXFwiLCBcXHUwMDI2c3RhdGUpKSkge1xcbi1cXHRcXHRpZiAoc3NjYW5mKHRva2VuLCBcXFwiJWRcXFwiLCBcXHUwMDI2c3ViX3N0YWNrKSA9PSAwKVxcbitcXHRcXHRpZiAoc3NjYW5mKHRva2VuLCBcXFwiJWxkXFxcIiwgXFx1MDAyNnN1Yl9zdGFjaykgPT0gMClcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdHMtXFx1MDAzZXN0YXRzW1NUQUNLXSArPSBzdWJfc3RhY2s7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjI6Mzg6MTYuNTIwMjE1NTQyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjA1NDA5MzY0MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBzdGF0aXN0aWNzIHRyYWNraW5nIGZvciB0aGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBwcm9jZXNzZWQgcGVyIHN1YnByb2dyYW0gZHVyaW5nIEJQRiB2ZXJpZmljYXRpb24gYW5kIG91dHB1dHMgdGhlbSBpbiB0aGUgdmVyaWZpZXIgbG9nLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgdmVyaWZpY2F0aW9uIGxvZ2ljLCBleGVjdXRpb24gZmxvdywgb3IgdGhlIGdlbmVyYXRlZCBCUEYgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI3NjIxOTk4ZTc3YTc5OGZmOTgyOTY1OTNlNzI5MmRlYzU3Mjg0MTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAyMjozODoxNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oXG5pbmRleCA5M2Y3YzIwNzVlZWFhLi43YzM3NjQ1MWRiODI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaFxuKysrIGIvaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaFxuQEAgLTM4MCw2ICszODAsOCBAQCBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUge1xuIFx0ICogICAgICAgICAgICAgICAgICAgICAgICAgICB8IG51bWJlciBvZiBzaW11bGF0aW9ucyBpcyB0cmFja2VkIGluIGZyYW1lIE5cbiBcdCAqL1xuIFx0dTMyIGNhbGxiYWNrX2RlcHRoO1xuK1x0LyogSW5zdHJ1Y3Rpb25zIHByb2Nlc3NlZCBpbiB0aGlzIGZyYW1lIGFuZCBjYWxsZWVzIG9uIHRoZSBjdXJyZW50IHBhdGguICovXG4rXHR1MzIgaW5zbnNfc3VidG90YWw7XG4gXG4gXHQvKiBUaGUgZm9sbG93aW5nIGZpZWxkcyBzaG91bGQgYmUgbGFzdC4gU2VlIGNvcHlfZnVuY19zdGF0ZSgpICovXG4gXHQvKiBUaGUgc3RhdGUgb2YgdGhlIHN0YWNrLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGRlc2NyaWJlcyBCUEZfUkVHX1NJWkVcbkBAIC03OTgsNyArODAwLDggQEAgc3RydWN0IGJwZl9zdWJwcm9nX2luZm8ge1xuIFx0dTMyIGV4aXRfaWR4OyAvKiBJbmRleCBvZiBvbmUgb2YgdGhlIEJQRl9FWElUIGluc3RydWN0aW9ucyBpbiB0aGlzIHN1YnByb2dyYW0gKi9cbiBcdHUxNiBzdGFja19kZXB0aDsgLyogbWF4LiBzdGFjayBkZXB0aCB1c2VkIGJ5IHRoaXMgZnVuY3Rpb24gKi9cbiBcdHUxNiBzdGFja19leHRyYTtcbi1cdHUzMiBpbnNuX3Byb2Nlc3NlZDtcbitcdHUzMiBpbnNuc190b3RhbDtcbitcdHUzMiBpbnNuc19zZWxmO1xuIFx0Lyogb2Zmc2V0cyBpbiByYW5nZSBbc3RhY2tfZGVwdGggLi4gZmFzdGNhbGxfc3RhY2tfb2ZmKVxuIFx0ICogYXJlIHVzZWQgZm9yIGJwZl9mYXN0Y2FsbCBzcGlsbHMgYW5kIGZpbGxzLlxuIFx0ICovXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCBhZGQzYWZmYzU3MDM1Li44MjBkMjgzMWYzNDAzIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC0xNTkzLDYgKzE1OTMsOCBAQCBzdGF0aWMgaW50IGNvcHlfZnVuY19zdGF0ZShzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmRzdCxcbiBcdFx0XHQgICBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKnNyYylcbiB7XG4gXHRtZW1jcHkoZHN0LCBzcmMsIG9mZnNldG9mKHN0cnVjdCBicGZfZnVuY19zdGF0ZSwgc3RhY2spKTtcbitcdC8qIEluc3RydWN0aW9uIGFjY291bnRpbmcgaXMgcGF0aC1sb2NhbCwgbm90IHBhcnQgb2YgdmVyaWZpZXIgc3RhdGUuICovXG4rXHRkc3QtXHUwMDNlaW5zbnNfc3VidG90YWwgPSAwO1xuIFx0cmV0dXJuIGNvcHlfc3RhY2tfc3RhdGUoZHN0LCBzcmMpO1xuIH1cbiBcbkBAIC05NzE3LDYgKzk3MTksNDIgQEAgc3RhdGljIGludCBzZXRfdGFza193b3JrX3NjaGVkdWxlX2NhbGxiYWNrX3N0YXRlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXG4gc3RhdGljIGJvb2wgaXNfcmJ0cmVlX2xvY2tfcmVxdWlyZWRfa2Z1bmModTMyIGJ0Zl9pZCk7XG4gXG4rc3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuK3tcbitcdHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqZnJhbWUgPSBjdXJfZnVuYyhlbnYpO1xuK1xuK1x0ZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkKys7XG4rXHRmcmFtZS1cdTAwM2VpbnNuc19zdWJ0b3RhbCsrO1xuK1x0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tmcmFtZS1cdTAwM2VzdWJwcm9nbm9dLmluc25zX3NlbGYrKztcbit9XG4rXG4rc3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbitcdFx0XHRcdCAgICBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmNhbGxlZSxcbitcdFx0XHRcdCAgICBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmNhbGxlcilcbit7XG4rXHR1MzIgaW5zbnM7XG4rXG4rXHRpZiAoIWNhbGxlZSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0aW5zbnMgPSBjYWxsZWUtXHUwMDNlaW5zbnNfc3VidG90YWw7XG4rXG4rXHRlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2NhbGxlZS1cdTAwM2VzdWJwcm9nbm9dLmluc25zX3RvdGFsICs9IGluc25zO1xuK1x0aWYgKGNhbGxlcilcbitcdFx0Y2FsbGVyLVx1MDAzZWluc25zX3N1YnRvdGFsICs9IGluc25zO1xuK1x0Y2FsbGVlLVx1MDAzZWluc25zX3N1YnRvdGFsID0gMDtcbit9XG4rXG4rc3RhdGljIHZvaWQgYWNjb3VudF9jdXJyZW50X3BhdGgoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbit7XG4rXHRzdHJ1Y3QgYnBmX3ZlcmlmaWVyX3N0YXRlICpzdGF0ZSA9IGVudi1cdTAwM2VjdXJfc3RhdGU7XG4rXHRpbnQgZnJhbWU7XG4rXG4rXHRmb3IgKGZyYW1lID0gc3RhdGUtXHUwMDNlY3VyZnJhbWU7IGZyYW1lIFx1MDAzZT0gMDsgZnJhbWUtLSlcbitcdFx0YWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoZW52LCBzdGF0ZS1cdTAwM2VmcmFtZVtmcmFtZV0sXG4rXHRcdFx0XHRcdGZyYW1lID8gc3RhdGUtXHUwMDNlZnJhbWVbZnJhbWUgLSAxXSA6IE5VTEwpO1xuK31cbitcbiAvKiBBcmUgd2UgY3VycmVudGx5IHZlcmlmeWluZyB0aGUgY2FsbGJhY2sgZm9yIGEgcmJ0cmVlIGhlbHBlciB0aGF0IG11c3RcbiAgKiBiZSBjYWxsZWQgd2l0aCBsb2NrIGhlbGQ/IElmIHNvLCBubyBuZWVkIHRvIGNvbXBsYWluIGFib3V0IHVucmVsZWFzZWRcbiAgKiBsb2NrXG5AQCAtOTgxMyw2ICs5ODUxLDcgQEAgc3RhdGljIGludCBwcmVwYXJlX2Z1bmNfZXhpdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgKmluc25faWR4KVxuIFx0XHR2ZXJib3NlKGVudiwgXCJ0byBjYWxsZXIgYXQgJWQ6XFxuXCIsICppbnNuX2lkeCk7XG4gXHRcdHByaW50X3ZlcmlmaWVyX3N0YXRlKGVudiwgc3RhdGUsIGNhbGxlci1cdTAwM2VmcmFtZW5vLCB0cnVlKTtcbiBcdH1cbitcdGFjY291bnRfcHJvY2Vzc2VkX2luc25zKGVudiwgY2FsbGVlLCBjYWxsZXIpO1xuIFx0LyogY2xlYXIgZXZlcnl0aGluZyBpbiB0aGUgY2FsbGVlLiBJbiBjYXNlIG9mIGV4Y2VwdGlvbmFsIGV4aXRzIHVzaW5nXG4gXHQgKiBicGZfdGhyb3csIHRoaXMgd2lsbCBiZSBkb25lIGJ5IGNvcHlfdmVyaWZpZXJfc3RhdGUgZm9yIGV4dHJhIGZyYW1lcy4gKi9cbiBcdGZyZWVfZnVuY19zdGF0ZShjYWxsZWUpO1xuQEAgLTE3MzY4LDcgKzE3NDA3LDkgQEAgc3RhdGljIGludCBkb19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0XHRpbnNuID0gXHUwMDI2aW5zbnNbZW52LVx1MDAzZWluc25faWR4XTtcbiBcdFx0aW5zbl9hdXggPSBcdTAwMjZlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtlbnYtXHUwMDNlaW5zbl9pZHhdO1xuIFxuLVx0XHRpZiAoKytlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQgXHUwMDNlIEJQRl9DT01QTEVYSVRZX0xJTUlUX0lOU05TKSB7XG4rXHRcdGFjY291bnRfcHJvY2Vzc2VkX2luc24oZW52KTtcbitcbitcdFx0aWYgKGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCBcdTAwM2UgQlBGX0NPTVBMRVhJVFlfTElNSVRfSU5TTlMpIHtcbiBcdFx0XHR2ZXJib3NlKGVudixcbiBcdFx0XHRcdFwiQlBGIHByb2dyYW0gaXMgdG9vIGxhcmdlLiBQcm9jZXNzZWQgJWQgaW5zblxcblwiLFxuIFx0XHRcdFx0ZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkKTtcbkBAIC0xNzUwOSw2ICsxNzU1MCw3IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2soc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdFx0XHRcdFx0ICAgIFwic3BlY3VsYXRpb24gYmFycmllciBhZnRlciBqdW1wIGluc3RydWN0aW9uIG1heSBub3QgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3RcIikpXG4gXHRcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBwcm9jZXNzX2JwZl9leGl0OlxuK1x0XHRcdGFjY291bnRfY3VycmVudF9wYXRoKGVudik7XG4gXHRcdFx0bWFya192ZXJpZmllcl9zdGF0ZV9zY3JhdGNoZWQoZW52KTtcbiBcdFx0XHRlcnIgPSBicGZfdXBkYXRlX2JyYW5jaF9jb3VudHMoZW52LCBlbnYtXHUwMDNlY3VyX3N0YXRlKTtcbiBcdFx0XHRpZiAoZXJyKVxuQEAgLTE4NDE1LDYgKzE4NDU3LDcgQEAgc3RhdGljIGludCBkb19jaGVja19jb21tb24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2cpXG4gXHRzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXggPSBlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXg7XG4gXHRzdHJ1Y3QgYnBmX3ZlcmlmaWVyX3N0YXRlICpzdGF0ZTtcbiBcdHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzO1xuK1x0dTMyIGluc25fcHJvY2Vzc2VkID0gZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkO1xuIFx0aW50IHJldCwgaTtcbiBcbiBcdGVudi1cdTAwM2VwcmV2X2xpbmZvID0gTlVMTDtcbkBAIC0xODU1Myw5ICsxODU5NiwxOSBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX2NvbW1vbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgc3VicHJvZylcbiBcbiBcdHJldCA9IGRvX2NoZWNrKGVudik7XG4gb3V0OlxuK1x0YWNjb3VudF9jdXJyZW50X3BhdGgoZW52KTtcbiBcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBwb3BfbG9nKVxuIFx0XHRicGZfdmxvZ19yZXNldChcdTAwMjZlbnYtXHUwMDNlbG9nLCAwKTtcbiBcdGZyZWVfc3RhdGVzKGVudik7XG4rXG4rXHQvKlxuK1x0ICogVGhlIG92ZXJyaWRlIGlzIG5lZWRlZCB0byBhY2NvdW50IGZvciBhc3luYyBzdWJwcm9ncmFtcywgd2hpY2hcbitcdCAqIGFyZSB2ZXJpZmllZCB3aXRoIHRoZWlyIG93biBzZXQgb2Ygc3RhY2sgZnJhbWVzIGFuZCB0aHVzIGFyZVxuK1x0ICogbm90IGFjY291bnRlZCBhcyBjYWxsZWVzIGJ5IGFjY291bnRfY3VycmVudF9wYXRoKCkuXG4rXHQgKiBBY2N1bXVsYXRlIHRoZWlyIHRvdGFsIGNvdW50cyBhcyB0b3RhbCBjb3VudHMgb2YgdGhlIG1haW4gb3JcbitcdCAqIGdsb2JhbCBzdWJwcm9nIGhvc3RpbmcgdGhlIGFzeW5jIGNhbGwuXG4rXHQgKi9cbitcdGVudi1cdTAwM2VzdWJwcm9nX2luZm9bc3VicHJvZ10uaW5zbnNfdG90YWwgPSBlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTE4NTg0LDcgKzE4NjM3LDYgQEAgc3RhdGljIGludCBkb19jaGVja19zdWJwcm9ncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0c3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4ID0gZW52LVx1MDAzZXByb2ctXHUwMDNlYXV4O1xuIFx0c3RydWN0IGJwZl9mdW5jX2luZm9fYXV4ICpzdWJfYXV4O1xuIFx0aW50IGksIHJldCwgbmV3X2NudDtcbi1cdHUzMiBpbnNuX3Byb2Nlc3NlZDtcbiBcbiBcdGlmICghYXV4LVx1MDAzZWZ1bmNfaW5mbylcbiBcdFx0cmV0dXJuIDA7XG5AQCAtMTg1OTksOCArMTg2NTEsNiBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXHRcdGlmICghYnBmX3N1YnByb2dfaXNfZ2xvYmFsKGVudiwgaSkpXG4gXHRcdFx0Y29udGludWU7XG4gXG4tXHRcdGluc25fcHJvY2Vzc2VkID0gZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkO1xuLVxuIFx0XHRzdWJfYXV4ID0gc3VicHJvZ19hdXgoZW52LCBpKTtcbiBcdFx0aWYgKCFzdWJfYXV4LVx1MDAzZWNhbGxlZCB8fCBzdWJfYXV4LVx1MDAzZXZlcmlmaWVkKVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTE4NjA4LDcgKzE4NjU4LDYgQEAgc3RhdGljIGludCBkb19jaGVja19zdWJwcm9ncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuIFx0XHRlbnYtXHUwMDNlaW5zbl9pZHggPSBlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLnN0YXJ0O1xuIFx0XHRXQVJOX09OX09OQ0UoZW52LVx1MDAzZWluc25faWR4ID09IDApO1xuIFx0XHRyZXQgPSBkb19jaGVja19jb21tb24oZW52LCBpKTtcbi1cdFx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1tpXS5pbnNuX3Byb2Nlc3NlZCA9IGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCAtIGluc25fcHJvY2Vzc2VkO1xuIFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fSBlbHNlIGlmIChlbnYtXHUwMDNlbG9nLmxldmVsIFx1MDAyNiBCUEZfTE9HX0xFVkVMKSB7XG5AQCAtMTg2MzUsMTIgKzE4Njg0LDEwIEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcbiBzdGF0aWMgaW50IGRvX2NoZWNrX21haW4oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiB7XG4tXHR1MzIgaW5zbl9wcm9jZXNzZWQgPSBlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQ7XG4gXHRpbnQgcmV0O1xuIFxuIFx0ZW52LVx1MDAzZWluc25faWR4ID0gMDtcbiBcdHJldCA9IGRvX2NoZWNrX2NvbW1vbihlbnYsIDApO1xuLVx0ZW52LVx1MDAzZXN1YnByb2dfaW5mb1swXS5pbnNuX3Byb2Nlc3NlZCA9IGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCAtIGluc25fcHJvY2Vzc2VkO1xuIFx0aWYgKCFyZXQpXG4gXHRcdGVudi1cdTAwM2Vwcm9nLVx1MDAzZWF1eC1cdTAwM2VzdGFja19kZXB0aCA9IGVudi1cdTAwM2VzdWJwcm9nX2luZm9bMF0uc3RhY2tfZGVwdGg7XG4gXHRyZXR1cm4gcmV0O1xuQEAgLTE4NjU1LDE1ICsxODcwMiwyMCBAQCBzdGF0aWMgdm9pZCBwcmludF92ZXJpZmljYXRpb25fc3RhdHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdGlmIChlbnYtXHUwMDNlbG9nLmxldmVsIFx1MDAyNiBCUEZfTE9HX1NUQVRTKSB7XG4gXHRcdHZlcmJvc2UoZW52LCBcInZlcmlmaWNhdGlvbiB0aW1lICVsbGQgdXNlY1xcblwiLFxuIFx0XHRcdGRpdl91NjQoZW52LVx1MDAzZXZlcmlmaWNhdGlvbl90aW1lLCAxMDAwKSk7XG4tXHRcdHZlcmJvc2UoZW52LCBcInN0YWNrIGRlcHRoICVkXCIsIGVudi1cdTAwM2VzdWJwcm9nX2luZm9bMF0uc3RhY2tfZGVwdGgpO1xuLVx0XHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBzdWJwcm9nX2NudDsgaSsrKVxuLVx0XHRcdHZlcmJvc2UoZW52LCBcIislZFwiLCBlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLnN0YWNrX2RlcHRoKTtcbi1cdFx0dmVyYm9zZShlbnYsIFwiIG1heCAlZFxcblwiLCBlbnYtXHUwMDNlbWF4X3N0YWNrX2RlcHRoKTtcbi1cdFx0dmVyYm9zZShlbnYsIFwiaW5zbnMgcHJvY2Vzc2VkICVkXCIsIGVudi1cdTAwM2VzdWJwcm9nX2luZm9bMF0uaW5zbl9wcm9jZXNzZWQpO1xuLVx0XHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBzdWJwcm9nX2NudDsgaSsrKVxuLVx0XHRcdGlmIChicGZfc3VicHJvZ19pc19nbG9iYWwoZW52LCBpKSlcbi1cdFx0XHRcdHZlcmJvc2UoZW52LCBcIislZFwiLCBlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLmluc25fcHJvY2Vzc2VkKTtcbi1cdFx0dmVyYm9zZShlbnYsIFwiXFxuXCIpO1xuK1x0XHR2ZXJib3NlKGVudiwgXCJzdGFjayBkZXB0aCBtYXggJWRcXG5cIiwgZW52LVx1MDAzZW1heF9zdGFja19kZXB0aCk7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHN1YnByb2dfY250OyBpKyspIHtcbitcdFx0XHRjb25zdCBjaGFyICpuYW1lID0gZW52LVx1MDAzZXN1YnByb2dfaW5mb1tpXS5uYW1lO1xuK1x0XHRcdGNvbnN0IGNoYXIgKmtpbmQ7XG4rXG4rXHRcdFx0aWYgKCFuYW1lIHx8ICFuYW1lWzBdKVxuK1x0XHRcdFx0bmFtZSA9IFwiXHUwMDNjdW5rbm93blx1MDAzZVwiO1xuK1x0XHRcdGtpbmQgPSBpID09IDAgPyBcIm1haW5cIiA6XG4rXHRcdFx0ICAgICAgIGJwZl9zdWJwcm9nX2lzX2dsb2JhbChlbnYsIGkpID8gXCJnbG9iYWxcIiA6IFwic3RhdGljXCI7XG4rXHRcdFx0dmVyYm9zZShlbnYsIFwic3VicHJvZyAlZCAoJXMpICVzIGluc25zX3NlbGYgJWQgaW5zbnNfdG90YWwgJWQgc3RhY2sgJWRcXG5cIixcbitcdFx0XHRcdGksIG5hbWUsIGtpbmQsIGVudi1cdTAwM2VzdWJwcm9nX2luZm9baV0uaW5zbnNfc2VsZixcbitcdFx0XHRcdGVudi1cdTAwM2VzdWJwcm9nX2luZm9baV0uaW5zbnNfdG90YWwsXG4rXHRcdFx0XHRlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ldLnN0YWNrX2RlcHRoKTtcbitcdFx0fVxuIFx0fVxuIFx0dmVyYm9zZShlbnYsIFwicHJvY2Vzc2VkICVkIGluc25zIChsaW1pdCAlZCkgbWF4X3N0YXRlc19wZXJfaW5zbiAlZCBcIlxuIFx0XHRcInRvdGFsX3N0YXRlcyAlZCBwZWFrX3N0YXRlcyAlZCBtYXJrX3JlYWQgJWRcXG5cIixcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xuaW5kZXggNWIyNjVhZjNiMWQ1Ny4uODExM2ZlYTdiYTg2YyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbkBAIC0xMDIsNiArMTAyLDcgQEBcbiAjaW5jbHVkZSBcInZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5za2VsLmhcIlxuICNpbmNsdWRlIFwidmVyaWZpZXJfc3RhY2tfcHRyLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9zdG9yZV9yZWxlYXNlLnNrZWwuaFwiXG4rI2luY2x1ZGUgXCJ2ZXJpZmllcl9zdWJwcm9nX2luc25fc3RhdHMuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInZlcmlmaWVyX3N1YnByb2dfcHJlY2lzaW9uLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9zdWJwcm9nX3RvcG8uc2tlbC5oXCJcbiAjaW5jbHVkZSBcInZlcmlmaWVyX3N1YnJlZy5za2VsLmhcIlxuQEAgLTI2Miw2ICsyNjMsNyBAQCB2b2lkIHRlc3RfdmVyaWZpZXJfc3RhY2tfYXJnKHZvaWQpICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfc3RhY2tfYXJnKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIodm9pZCkgICAgICB7IFJVTih2ZXJpZmllcl9zdGFja19hcmdfb3JkZXIpOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX3N0YWNrX3B0cih2b2lkKSAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N0YWNrX3B0cik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfc3RvcmVfcmVsZWFzZSh2b2lkKSAgICAgICAgeyBSVU4odmVyaWZpZXJfc3RvcmVfcmVsZWFzZSk7IH1cbit2b2lkIHRlc3RfdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzKHZvaWQpICAgeyBSVU4odmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbih2b2lkKSAgICB7IFJVTih2ZXJpZmllcl9zdWJwcm9nX3ByZWNpc2lvbik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfc3VicHJvZ190b3BvKHZvaWQpICAgICAgICB7IFJVTih2ZXJpZmllcl9zdWJwcm9nX3RvcG8pOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX3N1YnJlZyh2b2lkKSAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX3N1YnJlZyk7IH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXG5pbmRleCBkM2RmN2E5ZjFkOGM4Li4wZWI0OTVjZTg1YzFjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXG5AQCAtMjcsNyArMjcsOCBAQCBfX25ha2VkIHZvaWQgc3RhY2tfb3V0X29mX2JvdW5kcyh2b2lkKVxuIFxuIFNFQyhcInNvY2tldFwiKVxuIF9fZGVzY3JpcHRpb24oXCJ1bmluaXRpYWxpemVkIHN0YWNrMVwiKVxuLV9fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KSBfX21zZyhcInN0YWNrIGRlcHRoIDhcIilcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcbitfX21zZyhcInN1YnByb2cgMCAodW5pbml0aWFsaXplZF9zdGFjazEpIG1haW4ge3suKn19IHN0YWNrIDhcIilcbiBfX2ZhaWx1cmVfdW5wcml2IF9fbXNnX3VucHJpdihcImludmFsaWQgcmVhZCBmcm9tIHN0YWNrXCIpXG4gX19uYWtlZCB2b2lkIHVuaW5pdGlhbGl6ZWRfc3RhY2sxKHZvaWQpXG4ge1xuQEAgLTQ1LDcgKzQ2LDggQEAgX19uYWtlZCB2b2lkIHVuaW5pdGlhbGl6ZWRfc3RhY2sxKHZvaWQpXG4gXG4gU0VDKFwic29ja2V0XCIpXG4gX19kZXNjcmlwdGlvbihcInVuaW5pdGlhbGl6ZWQgc3RhY2syXCIpXG4tX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpIF9fbXNnKFwic3RhY2sgZGVwdGggOFwiKVxuK19fc3VjY2VzcyBfX2xvZ19sZXZlbCg0KVxuK19fbXNnKFwic3VicHJvZyAwICh1bmluaXRpYWxpemVkX3N0YWNrMikgbWFpbiBpbnNuc19zZWxmIHt7WzAtOV0rfX0gaW5zbnNfdG90YWwge3tbMC05XSt9fSBzdGFjayA4XCIpXG4gX19mYWlsdXJlX3VucHJpdiBfX21zZ191bnByaXYoXCJpbnZhbGlkIHJlYWQgZnJvbSBzdGFja1wiKVxuIF9fbmFrZWQgdm9pZCB1bmluaXRpYWxpemVkX3N0YWNrMih2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbmluZGV4IDgzNzA3ZmFlYTA0OTkuLjRjZmFhNmI0YWI0MDUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuY1xuQEAgLTEwLDcgKzEwLDggQEBcbiBcbiBTRUMoXCJyYXdfdHBcIilcbiBfX2FyY2hfeDg2XzY0XG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCA4XCIpXG4rX19sb2dfbGV2ZWwoNClcbitfX21zZyhcInN1YnByb2cgMCAoc2ltcGxlKSBtYWluIGluc25zX3NlbGYge3tbMC05XSt9fSBpbnNuc190b3RhbCB7e1swLTldK319IHN0YWNrIDhcIilcbiBfX3hsYXRlZChcIjQ6IHI1ID0gNVwiKVxuIF9feGxhdGVkKFwiNTogcjAgPSBcIilcbiBfX3hsYXRlZChcIjY6IHIwID0gXHUwMDI2KHZvaWQgX19wZXJjcHUgKikocjApXCIpXG5AQCAtOTYsNyArOTcsOCBAQCBfX25ha2VkIHZvaWQgY2FuYXJ5X3plcm9fc3BpbGxzKHZvaWQpXG4gXG4gU0VDKFwicmF3X3RwXCIpXG4gX19hcmNoX3g4Nl82NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwic3RhY2sgZGVwdGggMTZcIilcbitfX2xvZ19sZXZlbCg0KVxuK19fbXNnKFwic3VicHJvZyAwICh3cm9uZ19yZWdfaW5fcGF0dGVybjEpIG1haW4ge3suKn19IHN0YWNrIDE2XCIpXG4gX194bGF0ZWQoXCIxOiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxXCIpXG4gX194bGF0ZWQoXCIuLi5cIilcbiBfX3hsYXRlZChcIjM6IHIwID0gXHUwMDI2KHZvaWQgX19wZXJjcHUgKikocjApXCIpXG5AQCAtNTk4LDcgKzYwMCw4IEBAIF9fbmFrZWQgc3RhdGljIHZvaWQgc3VicHJvZ3NfdXNlX2luZGVwZW5kZW50X29mZnNldHNfYXV4KHZvaWQpXG4gXG4gU0VDKFwicmF3X3RwXCIpXG4gX19hcmNoX3g4Nl82NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwic3RhY2sgZGVwdGggOFwiKVxuK19fbG9nX2xldmVsKDQpXG4rX19tc2coXCJzdWJwcm9nIDAgKGhlbHBlcl9jYWxsX2RvZXNfbm90X3ByZXZlbnRfYnBmX2Zhc3RjYWxsKSBtYWluIHt7Lip9fSBzdGFjayA4XCIpXG4gX194bGF0ZWQoXCIyOiByMCA9IFx1MDAyNih2b2lkIF9fcGVyY3B1ICopKHIwKVwiKVxuIF9fc3VjY2Vzc1xuIF9fbmFrZWQgdm9pZCBoZWxwZXJfY2FsbF9kb2VzX25vdF9wcmV2ZW50X2JwZl9mYXN0Y2FsbCh2b2lkKVxuQEAgLTYyMCw3ICs2MjMsOCBAQCBfX25ha2VkIHZvaWQgaGVscGVyX2NhbGxfZG9lc19ub3RfcHJldmVudF9icGZfZmFzdGNhbGwodm9pZClcbiBcbiBTRUMoXCJyYXdfdHBcIilcbiBfX2FyY2hfeDg2XzY0XG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCAyNFwiKVxuK19fbG9nX2xldmVsKDQpXG4rX19tc2coXCJzdWJwcm9nIDAgKG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCkgbWFpbiB7ey4qfX0gc3RhY2sgMjRcIilcbiAvKiBtYXlfZ290byBjb3VudGVyIGF0IC0yNCAqL1xuIF9feGxhdGVkKFwiMDogKih1NjQgKikocjEwIC0yNCkgPVwiKVxuIC8qIG1heV9nb3RvIHRpbWVzdGFtcCBhdCAtMTYgKi9cbkBAIC02NjEsNyArNjY1LDggQEAgX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCh2b2lkKVxuIFNFQyhcInJhd190cFwiKVxuIF9fYXJjaF9hcm02NFxuIF9fYXJjaF9yaXNjdjY0XG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCAyNFwiKVxuK19fbG9nX2xldmVsKDQpXG4rX19tc2coXCJzdWJwcm9nIDAgKG1heV9nb3RvX2ludGVyYWN0aW9uKSBtYWluIHt7Lip9fSBzdGFjayAyNFwiKVxuIC8qIG1heV9nb3RvIGNvdW50ZXIgYXQgLTI0ICovXG4gX194bGF0ZWQoXCIwOiAqKHU2NCAqKShyMTAgLTI0KSA9XCIpXG4gLyogbWF5X2dvdG8gdGltZXN0YW1wIGF0IC0xNiAqL1xuQEAgLTcwOCw3ICs3MTMsOSBAQCBfX25ha2VkIHN0YXRpYyB2b2lkIGR1bW15X2xvb3BfY2FsbGJhY2sodm9pZClcbiBcbiBTRUMoXCJyYXdfdHBcIilcbiBfX2FyY2hfeDg2XzY0XG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCAzMiswXCIpXG4rX19sb2dfbGV2ZWwoNClcbitfX21zZyhcInN1YnByb2cgMCAoYnBmX2xvb3BfaW50ZXJhY3Rpb24xKSBtYWluIHt7Lip9fSBzdGFjayAzMlwiKVxuK19fbXNnKFwic3VicHJvZyAxIChkdW1teV9sb29wX2NhbGxiYWNrKSBzdGF0aWMge3suKn19IHN0YWNrIDBcIilcbiBfX3hsYXRlZChcIjI6IHIxID0gMVwiKVxuIF9feGxhdGVkKFwiMzogcjAgPVwiKVxuIF9feGxhdGVkKFwiNDogcjAgPSBcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcIilcbkBAIC03NTYsNyArNzYzLDkgQEAgX19uYWtlZCBpbnQgYnBmX2xvb3BfaW50ZXJhY3Rpb24xKHZvaWQpXG4gXG4gU0VDKFwicmF3X3RwXCIpXG4gX19hcmNoX3g4Nl82NFxuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwic3RhY2sgZGVwdGggNDArMFwiKVxuK19fbG9nX2xldmVsKDQpXG4rX19tc2coXCJzdWJwcm9nIDAgKGJwZl9sb29wX2ludGVyYWN0aW9uMikgbWFpbiB7ey4qfX0gc3RhY2sgNDBcIilcbitfX21zZyhcInN1YnByb2cgMSAoZHVtbXlfbG9vcF9jYWxsYmFjaykgc3RhdGljIHt7Lip9fSBzdGFjayAwXCIpXG4gLyogY2FsbCBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQgKi9cbiBfX3hsYXRlZChcIjI6IHIxID0gNDJcIilcbiBfX3hsYXRlZChcIjM6IHIwID1cIilcbkBAIC04MDAsNyArODA5LDEwIEBAIF9fbmFrZWQgaW50IGJwZl9sb29wX2ludGVyYWN0aW9uMih2b2lkKVxuIFxuIFNFQyhcInJhd190cFwiKVxuIF9fYXJjaF94ODZfNjRcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcInN0YWNrIGRlcHRoIDUxMiswIG1heCA1MTJcIilcbitfX2xvZ19sZXZlbCg0KVxuK19fbXNnKFwic3RhY2sgZGVwdGggbWF4IDUxMlwiKVxuK19fbXNnKFwic3VicHJvZyAwIChjdW11bGF0aXZlX3N0YWNrX2RlcHRoKSBtYWluIHt7Lip9fSBzdGFjayA1MTJcIilcbitfX21zZyhcInN1YnByb2cgMSAoY3VtdWxhdGl2ZV9zdGFja19kZXB0aF9zdWJwcm9nKSBzdGF0aWMge3suKn19IHN0YWNrIDBcIilcbiAvKiBqdXN0IHRvIHByaW50IHhsYXRlZCB2ZXJzaW9uIHdoZW4gZGVidWdnaW5nICovXG4gX194bGF0ZWQoXCJyMCA9IFx1MDAyNih2b2lkIF9fcGVyY3B1ICopKHIwKVwiKVxuIF9fc3VjY2Vzc1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuY1xuaW5kZXggNjdkYzM1MmFkZGZkNy4uN2I2NWVlYTk3ZWJjMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9nbG9iYWxfc3VicHJvZ3MuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2dsb2JhbF9zdWJwcm9ncy5jXG5AQCAtNTIsNyArNTIsMTAgQEAgX19tc2coXCIoJ2dsb2JhbF9jYWxsc19nb29kX29ubHknKSBpcyBnbG9iYWwgYW5kIGFzc3VtZWQgdmFsaWQuXCIpXG4gLyogZXZlbnR1YWxseSBnbG9iYWxfZ29vZCgpIGlzIHRyYW5zaXRpdmVseSB2YWxpZGF0ZWQgYXMgd2VsbCAqL1xuIF9fbXNnKFwiVmFsaWRhdGluZyBnbG9iYWxfZ29vZCgpIGZ1bmNcIilcbiBfX21zZyhcIignZ2xvYmFsX2dvb2QnKSBpcyBzYWZlIGZvciBhbnkgYXJncyB0aGF0IG1hdGNoIGl0cyBwcm90b3R5cGVcIilcbi1fX21zZyhcImluc25zIHByb2Nlc3NlZCB7e1swLTldK1xcXFwrWzAtOV0rXFxcXCtbMC05XSskfX1cIilcbitfX21zZyhcInN1YnByb2cgMCAoY2hhaW5lZF9nbG9iYWxfZnVuY19jYWxsc19zdWNjZXNzKSBtYWluIGluc25zX3NlbGYgNyBpbnNuc190b3RhbCA3IHN0YWNrXCIpXG4rX19tc2coXCJzdWJwcm9nIHt7WzAtOV0rfX0gKGdsb2JhbF9jYWxsc19nb29kX29ubHkpIGdsb2JhbCBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgMiBzdGFja1wiKVxuK19fbXNnKFwic3VicHJvZyB7e1swLTldK319IChnbG9iYWxfZ29vZCkgZ2xvYmFsIGluc25zX3NlbGYgNSBpbnNuc190b3RhbCA1IHN0YWNrXCIpXG4rX19tc2coXCJwcm9jZXNzZWQgMTQgaW5zbnNcIilcbiBpbnQgY2hhaW5lZF9nbG9iYWxfZnVuY19jYWxsc19zdWNjZXNzKHZvaWQpXG4ge1xuIFx0aW50IHN1bSA9IDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcbmluZGV4IGJiODIwNmUxMDg4MGMuLmVhMGE3ZTczMzMxZGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXG5AQCAtODYsNyArODYsOSBAQCBfX25ha2VkIHN0YXRpYyB2b2lkIGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZyh2b2lkKVxuIFNFQyhcImtwcm9iZVwiKVxuIF9fZGVzY3JpcHRpb24oXCJQcml2YXRlIHN0YWNrLCBzdWJ0cmVlIFx1MDAzZSBNQVhfQlBGX1NUQUNLXCIpXG4gX19zdWNjZXNzXG4tX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCA1MTIrMzIgbWF4IDUxMlwiKVxuK19fbG9nX2xldmVsKDQpIF9fbXNnKFwic3RhY2sgZGVwdGggbWF4IDUxMlwiKVxuK19fbXNnKFwic3VicHJvZyAwIChwcml2YXRlX3N0YWNrX25lc3RlZF8xKSBtYWluIHt7Lip9fSBzdGFjayA1MTJcIilcbitfX21zZyhcInN1YnByb2cgMSAoY3VtdWxhdGl2ZV9zdGFja19kZXB0aF9zdWJwcm9nKSBzdGF0aWMge3suKn19IHN0YWNrIDMyXCIpXG4gX19hcmNoX3g4Nl82NFxuIC8qIHByaXZhdGUgc3RhY2sgZnAgZm9yIHRoZSBtYWluIHByb2cgKi9cbiBfX2ppdGVkKFwiXHRtb3ZhYnNxXHQkMHh7ey4qfX0sICVyOVwiKVxuQEAgLTMzMSw3ICszMzMsMTEgQEAgU0VDKFwiZmVudHJ5L2JwZl9mZW50cnlfdGVzdDlcIilcbiBfX2Rlc2NyaXB0aW9uKFwiUHJpdmF0ZSBzdGFjaywgYXN5bmMgY2FsbGJhY2ssIHBvdGVudGlhbCBuZXN0aW5nXCIpXG4gX19zdWNjZXNzIF9fcmV0dmFsKDApXG4gX19sb2FkX2lmX0pJVGVkKClcbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcInN0YWNrIGRlcHRoIDgrMCsyNTYrMCBtYXggMjcyXCIpXG4rX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCBtYXggMjcyXCIpXG4rX19tc2coXCJzdWJwcm9nIDAgKHByaXZhdGVfc3RhY2tfYXN5bmNfY2FsbGJhY2tfMikgbWFpbiB7ey4qfX0gc3RhY2sgOFwiKVxuK19fbXNnKFwic3VicHJvZyAxICh0aW1lcl9jYjEpIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFwiKVxuK19fbXNnKFwic3VicHJvZyAyIChzdWJwcm9nMSkgc3RhdGljIHt7Lip9fSBzdGFjayAyNTZcIilcbitfX21zZyhcInN1YnByb2cgMyAoc3VicHJvZzIpIHN0YXRpYyB7ey4qfX0gc3RhY2sgMFwiKVxuIF9fYXJjaF94ODZfNjRcbiBfX2ppdGVkKFwiXHRzdWJxXHQkMHgxMDAsICVyc3BcIilcbiBfX2FyY2hfYXJtNjRcbkBAIC0zNTUsNyArMzYxLDEwIEBAIGludCBwcml2YXRlX3N0YWNrX2FzeW5jX2NhbGxiYWNrXzIodm9pZClcbiBTRUMoXCJmZW50cnkvYnBmX2ZlbnRyeV90ZXN0OVwiKVxuIF9fZGVzY3JpcHRpb24oXCJwcml2YXRlIHN0YWNrLCBtYXggc3RhY2sgZGVwdGggaXMgcHJpdmF0ZSBzdGFja1wiKVxuIF9fc3VjY2Vzc1xuLV9fbG9nX2xldmVsKDQpIF9fbXNnKFwic3RhY2sgZGVwdGggOCsyNTYrMCBtYXggMjU2XCIpXG4rX19sb2dfbGV2ZWwoNCkgX19tc2coXCJzdGFjayBkZXB0aCBtYXggMjU2XCIpXG4rX19tc2coXCJzdWJwcm9nIDAgKHByaXZhdGVfc3RhY2tfbWF4X2RlcHRoKSBtYWluIHt7Lip9fSBzdGFjayA4XCIpXG4rX19tc2coXCJzdWJwcm9nIDEgKHN1YnByb2cxKSBzdGF0aWMgaW5zbnNfc2VsZiB7e1swLTldK319IGluc25zX3RvdGFsIHt7WzAtOV0rfX0gc3RhY2sgMjU2XCIpXG4rX19tc2coXCJzdWJwcm9nIDIgKHN1YnByb2cyKSBzdGF0aWMgaW5zbnNfc2VsZiB7e1swLTldK319IGluc25zX3RvdGFsIHt7WzAtOV0rfX0gc3RhY2sgMFwiKVxuIGludCBwcml2YXRlX3N0YWNrX21heF9kZXB0aCh2b2lkKVxuIHtcbiBcdGludCB4ID0gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44ZjYwODJmZGI1Yzg0XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3VicHJvZ19pbnNuX3N0YXRzLmNcbkBAIC0wLDAgKzEsMjIzIEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitcbisjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuKyNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4rXG4rc3RydWN0IHRpbWVyX3ZhbHVlIHtcbitcdHN0cnVjdCBicGZfdGltZXIgdGltZXI7XG4rfTtcbitcbitzdHJ1Y3Qge1xuK1x0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUlJBWSk7XG4rXHRfX3VpbnQobWF4X2VudHJpZXMsIDEpO1xuK1x0X190eXBlKGtleSwgX191MzIpO1xuK1x0X190eXBlKHZhbHVlLCBzdHJ1Y3QgdGltZXJfdmFsdWUpO1xuK30gdGltZXJfbWFwIFNFQyhcIi5tYXBzXCIpO1xuK1xuK1NFQyhcIj9yYXdfdHBcIilcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcbitfX21zZyhcInN1YnByb2cgMCAoc3RhdHNfbWFpbl9vbmx5KSBtYWluIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCAyIHN0YWNrIDBcIilcbitfX21zZyhcInByb2Nlc3NlZCAyIGluc25zXCIpXG4rX19uYWtlZCBpbnQgc3RhdHNfbWFpbl9vbmx5KHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcbitcdFx0XCJyMCA9IDA7XCJcbitcdFx0XCJleGl0O1wiXG4rXHQpO1xuK31cbitcbitfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkXG4rc3RhdGljIGludCBzdGF0c19jaGFpbl9sZWFmKHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcbitcdFx0XCJyMCA9IDA7XCJcbitcdFx0XCJleGl0O1wiXG4rXHQpO1xuK31cbitcbitfX25ha2VkIF9fbm9pbmxpbmUgX191c2VkXG4rc3RhdGljIGludCBzdGF0c19jaGFpbl9wYXJlbnQodm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFxuK1x0XHRcImNhbGwgc3RhdHNfY2hhaW5fbGVhZjtcIlxuK1x0XHRcImV4aXQ7XCJcbitcdCk7XG4rfVxuK1xuK1NFQyhcIj9yYXdfdHBcIilcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcbisvKlxuKyAqIHNlbGY6IDIgKyAyICsgMiA9IDZcbisgKiB0b3RhbHM6IGxlYWYgMiwgcGFyZW50IDIgKyAyID0gNCwgbWFpbiAyICsgNCA9IDZcbisgKi9cbitfX21zZyhcInN1YnByb2cgMCAoc3RhdHNfc3RhdGljX2NoYWluKSBtYWluIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCA2IHN0YWNrIDBcIilcbitfX21zZyhcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfY2hhaW5fcGFyZW50KSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDQgc3RhY2sgMFwiKVxuK19fbXNnKFwic3VicHJvZyB7e1swLTldK319IChzdGF0c19jaGFpbl9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMFwiKVxuK19fbXNnKFwicHJvY2Vzc2VkIDYgaW5zbnNcIilcbitfX25ha2VkIGludCBzdGF0c19zdGF0aWNfY2hhaW4odm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFxuK1x0XHRcImNhbGwgc3RhdHNfY2hhaW5fcGFyZW50O1wiXG4rXHRcdFwiZXhpdDtcIlxuK1x0KTtcbit9XG4rXG4rX19uYWtlZCBfX25vaW5saW5lIF9fdXNlZFxuK3N0YXRpYyBpbnQgc3RhdHNfc2hhcmVkX2xlYWYodm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFxuK1x0XHRcInIwID0gMDtcIlxuK1x0XHRcImV4aXQ7XCJcbitcdCk7XG4rfVxuK1xuK19fbmFrZWQgX19ub2lubGluZSBfX3VzZWRcbitpbnQgc3RhdHNfZ2xvYmFsX3Jvb3Qodm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFxuK1x0XHRcImNhbGwgc3RhdHNfc2hhcmVkX2xlYWY7XCJcbitcdFx0XCJleGl0O1wiXG4rXHQpO1xuK31cbitcbitTRUMoXCI/cmF3X3RwXCIpXG4rX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpXG4rLypcbisgKiBzdGF0c19zaGFyZWRfbGVhZiBpcyBleHBsb3JlZCBvbmNlIHVuZGVyIGVhY2ggaW5kZXBlbmRlbnQgcm9vdC5cbisgKiBzZWxmOiBtYWluIDMgKyBsZWFmIDQgKyBnbG9iYWwgMiA9IDlcbisgKiByb290IHRvdGFsczogbWFpbiA1ICsgZ2xvYmFsIDQgPSA5XG4rICovXG4rX19tc2coXCJzdWJwcm9nIDAgKHN0YXRzX3NoYXJlZF9yb290cykgbWFpbiBpbnNuc19zZWxmIDMgaW5zbnNfdG90YWwgNSBzdGFjayAwXCIpXG4rX19tc2coXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX3NoYXJlZF9sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiA0IGluc25zX3RvdGFsIDQgc3RhY2sgMFwiKVxuK19fbXNnKFwic3VicHJvZyB7e1swLTldK319IChzdGF0c19nbG9iYWxfcm9vdCkgZ2xvYmFsIGluc25zX3NlbGYgMiBpbnNuc190b3RhbCA0IHN0YWNrIDBcIilcbitfX21zZyhcInByb2Nlc3NlZCA5IGluc25zXCIpXG4rX19uYWtlZCBpbnQgc3RhdHNfc2hhcmVkX3Jvb3RzKHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcbitcdFx0XCJjYWxsIHN0YXRzX3NoYXJlZF9sZWFmO1wiXG4rXHRcdFwiY2FsbCBzdGF0c19nbG9iYWxfcm9vdDtcIlxuK1x0XHRcImV4aXQ7XCJcbitcdCk7XG4rfVxuK1xuK19fbm9pbmxpbmUgX191c2VkXG4rc3RhdGljIGludCBzdGF0c19hc3luY19sZWFmKHZvaWQgKm1hcCwgX191MzIgKmtleSwgc3RydWN0IGJwZl90aW1lciAqdGltZXIpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK19fbm9pbmxpbmUgX191c2VkXG4rc3RhdGljIF9fdTY0IHN0YXRzX2FzeW5jX3NjaGVkdWxlKHN0cnVjdCBicGZfbWFwICptYXAsIF9fdTMyICprZXksXG4rXHRcdFx0XHQgIHN0cnVjdCB0aW1lcl92YWx1ZSAqdmFsdWUsIHZvaWQgKmN0eClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFxuK1x0XHRcInIxID0gJVt0aW1lcl07XCJcbitcdFx0XCJyMiA9ICVbc3RhdHNfYXN5bmNfbGVhZl07XCJcbitcdFx0XCJjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107XCJcbitcdFx0OlxuK1x0XHQ6IFt0aW1lcl0gXCJyXCIgKHZhbHVlKSxcbitcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfbGVhZiksXG4rXHRcdCAgX19pbW0oYnBmX3RpbWVyX3NldF9jYWxsYmFjaylcbitcdFx0OiBfX2Nsb2JiZXJfY29tbW9uXG4rXHQpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcIj9yYXdfdHBcIilcbitfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoNClcbisvKlxuKyAqIHNlbGY6IDkgKyA3ICsgMiA9IDE4XG4rICogdG90YWxzOiBsZWFmIDIsIHNjaGVkdWxlciA3LCBtYWluIHJvb3QgMThcbisgKi9cbitfX21zZyhcInN1YnByb2cgMCAoc3RhdHNfYXN5bmNfZGlyZWN0KSBtYWluIGluc25zX3NlbGYgOSBpbnNuc190b3RhbCAxOCBzdGFjayAwXCIpXG4rX19tc2coXCJzdWJwcm9nIHt7WzAtOV0rfX0gKHN0YXRzX2FzeW5jX3NjaGVkdWxlKSBzdGF0aWMgaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2sgMFwiKVxuK19fbXNnKFwic3VicHJvZyB7e1swLTldK319IChzdGF0c19hc3luY19sZWFmKSBzdGF0aWMgaW5zbnNfc2VsZiAyIGluc25zX3RvdGFsIDIgc3RhY2sgMFwiKVxuK19fbXNnKFwicHJvY2Vzc2VkIDE4IGluc25zXCIpXG4rX19uYWtlZCBpbnQgc3RhdHNfYXN5bmNfZGlyZWN0KHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcbitcdFx0XCJyMSA9ICVbdGltZXJfbWFwXSBsbDtcIlxuK1x0XHRcInIyID0gJVtzdGF0c19hc3luY19zY2hlZHVsZV07XCJcbitcdFx0XCJyMyA9IDA7XCJcbitcdFx0XCJyNCA9IDA7XCJcbitcdFx0XCJjYWxsICVbYnBmX2Zvcl9lYWNoX21hcF9lbGVtXTtcIlxuK1x0XHRcInIwID0gMDtcIlxuK1x0XHRcImV4aXQ7XCJcbitcdFx0OlxuK1x0XHQ6IF9faW1tX2FkZHIodGltZXJfbWFwKSxcbitcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfc2NoZWR1bGUpLFxuK1x0XHQgIF9faW1tKGJwZl9mb3JfZWFjaF9tYXBfZWxlbSlcbitcdFx0OiBfX2Nsb2JiZXJfY29tbW9uXG4rXHQpO1xuK31cbitcbitfX25vaW5saW5lIF9fdXNlZFxuK3N0YXRpYyBpbnQgc3RhdHNfYXN5bmNfbmVzdGVkX2xlYWYodm9pZCAqbWFwLCBfX3UzMiAqa2V5LCBzdHJ1Y3QgYnBmX3RpbWVyICp0aW1lcilcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rX19ub2lubGluZSBfX3VzZWRcbitzdGF0aWMgaW50IHN0YXRzX2FzeW5jX291dGVyKHZvaWQgKm1hcCwgX191MzIgKmtleSwgc3RydWN0IGJwZl90aW1lciAqdGltZXIpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcbitcdFx0XCJyMSA9ICVbdGltZXJdO1wiXG4rXHRcdFwicjIgPSAlW3N0YXRzX2FzeW5jX25lc3RlZF9sZWFmXTtcIlxuK1x0XHRcImNhbGwgJVticGZfdGltZXJfc2V0X2NhbGxiYWNrXTtcIlxuK1x0XHQ6XG4rXHRcdDogW3RpbWVyXSBcInJcIiAodGltZXIpLFxuK1x0XHQgIF9faW1tX3B0cihzdGF0c19hc3luY19uZXN0ZWRfbGVhZiksXG4rXHRcdCAgX19pbW0oYnBmX3RpbWVyX3NldF9jYWxsYmFjaylcbitcdFx0OiBfX2Nsb2JiZXJfY29tbW9uXG4rXHQpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK19fbm9pbmxpbmUgX191c2VkXG4rc3RhdGljIF9fdTY0IHN0YXRzX2FzeW5jX25lc3RlZF9zY2hlZHVsZShzdHJ1Y3QgYnBmX21hcCAqbWFwLCBfX3UzMiAqa2V5LFxuK1x0XHRcdFx0XHQgc3RydWN0IHRpbWVyX3ZhbHVlICp2YWx1ZSwgdm9pZCAqY3R4KVxuK3tcbitcdGFzbSB2b2xhdGlsZSAoXG4rXHRcdFwicjEgPSAlW3RpbWVyXTtcIlxuK1x0XHRcInIyID0gJVtzdGF0c19hc3luY19vdXRlcl07XCJcbitcdFx0XCJjYWxsICVbYnBmX3RpbWVyX3NldF9jYWxsYmFja107XCJcbitcdFx0OlxuK1x0XHQ6IFt0aW1lcl0gXCJyXCIgKHZhbHVlKSxcbitcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfb3V0ZXIpLFxuK1x0XHQgIF9faW1tKGJwZl90aW1lcl9zZXRfY2FsbGJhY2spXG4rXHRcdDogX19jbG9iYmVyX2NvbW1vblxuK1x0KTtcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCI/cmF3X3RwXCIpXG4rX19zdWNjZXNzIF9fbG9nX2xldmVsKDQpXG4rLypcbisgKiBzZWxmOiA5ICsgNyArIDcgKyAyID0gMjVcbisgKiB0b3RhbHM6IGxlYWYgMiwgb3V0ZXIgNywgc2NoZWR1bGVyIDcsIG1haW4gcm9vdCAyNVxuKyAqL1xuK19fbXNnKFwic3VicHJvZyAwIChzdGF0c19hc3luY19uZXN0ZWQpIG1haW4gaW5zbnNfc2VsZiA5IGluc25zX3RvdGFsIDI1IHN0YWNrIDBcIilcbitfX21zZyhcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfYXN5bmNfbmVzdGVkX3NjaGVkdWxlKSBzdGF0aWMgaW5zbnNfc2VsZiA3IGluc25zX3RvdGFsIDcgc3RhY2sgMFwiKVxuK19fbXNnKFwic3VicHJvZyB7e1swLTldK319IChzdGF0c19hc3luY19vdXRlcikgc3RhdGljIGluc25zX3NlbGYgNyBpbnNuc190b3RhbCA3IHN0YWNrIDBcIilcbitfX21zZyhcInN1YnByb2cge3tbMC05XSt9fSAoc3RhdHNfYXN5bmNfbmVzdGVkX2xlYWYpIHN0YXRpYyBpbnNuc19zZWxmIDIgaW5zbnNfdG90YWwgMiBzdGFjayAwXCIpXG4rX19tc2coXCJwcm9jZXNzZWQgMjUgaW5zbnNcIilcbitfX25ha2VkIGludCBzdGF0c19hc3luY19uZXN0ZWQodm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFxuK1x0XHRcInIxID0gJVt0aW1lcl9tYXBdIGxsO1wiXG4rXHRcdFwicjIgPSAlW3N0YXRzX2FzeW5jX25lc3RlZF9zY2hlZHVsZV07XCJcbitcdFx0XCJyMyA9IDA7XCJcbitcdFx0XCJyNCA9IDA7XCJcbitcdFx0XCJjYWxsICVbYnBmX2Zvcl9lYWNoX21hcF9lbGVtXTtcIlxuK1x0XHRcInIwID0gMDtcIlxuK1x0XHRcImV4aXQ7XCJcbitcdFx0OlxuK1x0XHQ6IF9faW1tX2FkZHIodGltZXJfbWFwKSxcbitcdFx0ICBfX2ltbV9wdHIoc3RhdHNfYXN5bmNfbmVzdGVkX3NjaGVkdWxlKSxcbitcdFx0ICBfX2ltbShicGZfZm9yX2VhY2hfbWFwX2VsZW0pXG4rXHRcdDogX19jbG9iYmVyX2NvbW1vblxuK1x0KTtcbit9XG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXG5pbmRleCAyNGNkMGE3NjM2NzMwLi5hNjNlMzM2NzUwOTE4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuQEAgLTE5OCw3ICsxOTgsOCBAQCBfX3N1Y2Nlc3NcbiAvKiBDaGVjayB0aGF0IHRoZSBtYXhpbXVtIHN0YWNrIGRlcHRoIGlzIGNvcnJlY3RseSBtYWludGFpbmVkIGFjY29yZGluZyB0byB0aGVcbiAgKiBtYXhpbXVtIHBvc3NpYmxlIHZhcmlhYmxlIG9mZnNldC5cbiAgKi9cbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcInN0YWNrIGRlcHRoIDE2XCIpXG4rX19sb2dfbGV2ZWwoNClcbitfX21zZyhcInN1YnByb2cgMCAoc3RhY2tfd3JpdGVfcHJpdl92c191bnByaXYpIG1haW4ge3suKn19IHN0YWNrIDE2XCIpXG4gX19mYWlsdXJlX3VucHJpdlxuIC8qIFZhcmlhYmxlIHN0YWNrIGFjY2VzcyBpcyByZWplY3RlZCBmb3IgdW5wcml2aWxlZ2VkLlxuICAqL1xuQEAgLTIzOCw3ICsyMzksOCBAQCBfX3N1Y2Nlc3NcbiAvKiBDaGVjayB0aGF0IHRoZSBtYXhpbXVtIHN0YWNrIGRlcHRoIGlzIGNvcnJlY3RseSBtYWludGFpbmVkIGFjY29yZGluZyB0byB0aGVcbiAgKiBtYXhpbXVtIHBvc3NpYmxlIHZhcmlhYmxlIG9mZnNldC5cbiAgKi9cbi1fX2xvZ19sZXZlbCg0KSBfX21zZyhcInN0YWNrIGRlcHRoIDE2XCIpXG4rX19sb2dfbGV2ZWwoNClcbitfX21zZyhcInN1YnByb2cgMCAoc3RhY2tfd3JpdGVfZm9sbG93ZWRfYnlfcmVhZCkgbWFpbiB7ey4qfX0gc3RhY2sgMTZcIilcbiBfX2ZhaWx1cmVfdW5wcml2XG4gX19tc2dfdW5wcml2KFwiUjIgdmFyaWFibGUgc3RhY2sgYWNjZXNzIHByb2hpYml0ZWQgZm9yICFyb290XCIpXG4gX19yZXR2YWwoMClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfdmVyaWZpZXIuY1xuaW5kZXggYThhZTAzYzU3YmJhZS4uYmZmYjczNjA0MzRjNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3ZlcmlmaWVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3ZlcmlmaWVyLmNcbkBAIC0xNTYwLDcgKzE1NjAsNyBAQCBzdGF0aWMgdm9pZCBkb190ZXN0X3NpbmdsZShzdHJ1Y3QgYnBmX3Rlc3QgKnRlc3QsIGJvb2wgdW5wcml2LFxuIFxuIFx0b3B0cy5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IHRlc3QtXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGU7XG4gXHRpZiAoZXhwZWN0ZWRfcmV0ID09IFZFUkJPU0VfQUNDRVBUKVxuLVx0XHRvcHRzLmxvZ19sZXZlbCA9IDI7XG4rXHRcdG9wdHMubG9nX2xldmVsID0gMiB8IDQ7XG4gXHRlbHNlIGlmICh2ZXJib3NlKVxuIFx0XHRvcHRzLmxvZ19sZXZlbCA9IHZlcmlmX2xvZ19sZXZlbCB8IDQ7IC8qIGZvcmNlIHN0YXRzICovXG4gXHRlbHNlXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL2NhbGxzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvY2FsbHMuY1xuaW5kZXggOGNkNjI2ZTA0NTUxNS4uZWI2ZTNiYWVmNDEyYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9jYWxscy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvY2FsbHMuY1xuQEAgLTEwOTEsNyArMTA5MSwxNyBAQFxuIFx0Lyogc3RhY2tfbWFpbj0zMiwgc3RhY2tfQT0yNTYsIHN0YWNrX0I9NjRcbiBcdCAqIGFuZCBtYXgobWFpbitBLCBtYWluK0ErQikgXHUwMDNjIDUxMlxuIFx0ICovXG4tXHQucmVzdWx0ID0gQUNDRVBULFxuK1x0LnJlc3VsdCA9IFZFUkJPU0VfQUNDRVBULFxuK1x0LmVycnN0ciA9IFwic3RhY2sgZGVwdGggbWF4IDM1MlxcdFwiXG4rXHRcdCAgXCJzdWJwcm9nIDAgKFx1MDAzY3Vua25vd25cdTAwM2UpIG1haW4gaW5zbnNfc2VsZiBcXHRcIlxuK1x0XHQgIFwiIGluc25zX3RvdGFsIFxcdFwiXG4rXHRcdCAgXCIgc3RhY2sgMzJcXHRcIlxuK1x0XHQgIFwic3VicHJvZyAxIChcdTAwM2N1bmtub3duXHUwMDNlKSBzdGF0aWMgaW5zbnNfc2VsZiBcXHRcIlxuK1x0XHQgIFwiIGluc25zX3RvdGFsIFxcdFwiXG4rXHRcdCAgXCIgc3RhY2sgMjU2XFx0XCJcbitcdFx0ICBcInN1YnByb2cgMiAoXHUwMDNjdW5rbm93blx1MDAzZSkgc3RhdGljIGluc25zX3NlbGYgXFx0XCJcbitcdFx0ICBcIiBpbnNuc190b3RhbCBcXHRcIlxuK1x0XHQgIFwiIHN0YWNrIDY0XCIsXG4gfSxcbiB7XG4gXHRcImNhbGxzOiBzdGFjayBkZXB0aCBjaGVjayB1c2luZyB0aHJlZSBmcmFtZXMuIHRlc3QyXCIsXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuaW5kZXggYzljMjU3Nzg0ZWUzZC4uNWMwZWMzZWRjZTcyMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuQEAgLTk5MywxMyArOTkzLDE1IEBAIHN0YXRpYyB2b2lkIGZyZWVfdmVyaWZfc3RhdHMoc3RydWN0IHZlcmlmX3N0YXRzICpzdGF0cywgc2l6ZV90IHN0YXRfY250KVxuIFxuIHN0YXRpYyBjaGFyIHZlcmlmX2xvZ19idWZbNjQgKiAxMDI0XTtcbiBcbi0jZGVmaW5lIE1BWF9QQVJTRURfTE9HX0xJTkVTIDEwMFxuKy8qIEtlZXAgcm9vbSBmb3IgYWxsIDI1NiBzdWJwcm9ncmFtIHJlY29yZHMgYW5kIHRyYWlsaW5nIHN0YXRpc3RpY3MuICovXG4rI2RlZmluZSBNQVhfUEFSU0VEX0xPR19MSU5FUyAzMDBcbiBcbiBzdGF0aWMgaW50IHBhcnNlX3ZlcmlmX2xvZyhjaGFyICogY29uc3QgYnVmLCBzaXplX3QgYnVmX3N6LCBzdHJ1Y3QgdmVyaWZfc3RhdHMgKnMpXG4ge1xuIFx0Y29uc3QgY2hhciAqY3VyO1xuLVx0aW50IHBvcywgbGluZXMsIHN1Yl9zdGFjaywgY250ID0gMDtcbi1cdGNoYXIgKnN0YXRlID0gTlVMTCwgKnRva2VuLCBzdGFja1s1MTJdO1xuK1x0bG9uZyBzdWJfc3RhY2s7XG4rXHRpbnQgcG9zLCBsaW5lcywgY250ID0gMDtcbitcdGNoYXIgKnN0YXRlID0gTlVMTCwgKnRva2VuLCBzdGFja1s1MTJdID0ge307XG4gXG4gXHRidWZbYnVmX3N6IC0gMV0gPSAnXFwwJztcbiBcbkBAIC0xMDI1LDExICsxMDI3LDI0IEBAIHN0YXRpYyBpbnQgcGFyc2VfdmVyaWZfbG9nKGNoYXIgKiBjb25zdCBidWYsIHNpemVfdCBidWZfc3osIHN0cnVjdCB2ZXJpZl9zdGF0cyAqXG4gXHRcdFx0XHRcdTAwMjZzLVx1MDAzZXN0YXRzW01BUktfUkVBRF9NQVhfTEVOXSkpXG4gXHRcdFx0Y29udGludWU7XG4gXG4rXHRcdC8qXG4rXHRcdCAqIE5ldyBrZXJuZWxzIGVtaXQgb25lIFwic3VicHJvZyBcdTAwM2NpZFx1MDAzZSAoXHUwMDNjbmFtZVx1MDAzZSkgXHUwMDNja2luZFx1MDAzZVwiIHJlY29yZFxuK1x0XHQgKiBwZXIgc3VicHJvZ3JhbSB3aXRoIHRoZSBzdGFjayBkZXB0aCBhdCB0aGUgZW5kLCB3aGlsZSBvbGRcbitcdFx0ICoga2VybmVscyBlbWl0IGEgc2luZ2xlIFwic3RhY2sgZGVwdGggXHUwMDNjYSsuLi4rblx1MDAzZSBtYXggXHUwMDNjbWF4XHUwMDNlXCJcbitcdFx0ICogbGluZS4gTWF0Y2ggYm90aCBmb3JtYXRzIHNvIHZlcmlzdGF0IHdvcmtzIGFnYWluc3QgZWl0aGVyXG4rXHRcdCAqIGtlcm5lbC5cbitcdFx0ICovXG4rXHRcdGlmIChzc2NhbmYoY3VyLCBcInN0YWNrIGRlcHRoIG1heCAlbGRcIiwgXHUwMDI2cy1cdTAwM2VzdGF0c1tNQVhfU1RBQ0tdKSA9PSAxKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRpZiAoc3NjYW5mKGN1ciwgXCJzdWJwcm9nICUqZCAlKnMgJSpzIGluc25zX3NlbGYgJSpkIGluc25zX3RvdGFsICUqZCBzdGFjayAlbGRcIiwgXHUwMDI2c3ViX3N0YWNrKSA9PSAxKSB7XG4rXHRcdFx0cy1cdTAwM2VzdGF0c1tTVEFDS10gKz0gc3ViX3N0YWNrO1xuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4gXHRcdGlmICgyID09IHNzY2FuZihjdXIsIFwic3RhY2sgZGVwdGggJTUxMXMgbWF4ICVsZFwiLCBzdGFjaywgXHUwMDI2cy1cdTAwM2VzdGF0c1tNQVhfU1RBQ0tdKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcdH1cbiBcdHdoaWxlICgodG9rZW4gPSBzdHJ0b2tfcihjbnQrKyA/IE5VTEwgOiBzdGFjaywgXCIrXCIsIFx1MDAyNnN0YXRlKSkpIHtcbi1cdFx0aWYgKHNzY2FuZih0b2tlbiwgXCIlZFwiLCBcdTAwMjZzdWJfc3RhY2spID09IDApXG4rXHRcdGlmIChzc2NhbmYodG9rZW4sIFwiJWxkXCIsIFx1MDAyNnN1Yl9zdGFjaykgPT0gMClcbiBcdFx0XHRicmVhaztcbiBcdFx0cy1cdTAwM2VzdGF0c1tTVEFDS10gKz0gc3ViX3N0YWNrO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjI6Mzg6MTYuNTIwMjE3MjQyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU4MTk0ODE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipCUEYgVmVyaWZpZXIgSW5zdHJ1Y3Rpb24gQ291bnQgVHJhY2tpbmcqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgZm9jdXNlZCBvbiBpbXByb3ZpbmcgdGhlIHZpc2liaWxpdHkgaW50byBCUEYgdmVyaWZpY2F0aW9uLCBzcGVjaWZpY2FsbHkgYnkgdHJhY2tpbmcgaW5zdHJ1Y3Rpb24gY291bnRzIG9uIGEgcGVyLXN1YnByb2dyYW0gYmFzaXMuIFRoZSBjaGFuZ2VzIGFyZSBjb25jZW50cmF0ZWQgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIHRoZSBhc3NvY2lhdGVkIGhlYWRlciBmaWxlLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgYWRkaW5nIG5ldyBmaWVsZHM6IGBpbnNuc19zdWJ0b3RhbGAgd2l0aGluIGBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGVgLCBhbmQgYGluc25zX3RvdGFsYCBhbmQgYGluc25zX3NlbGZgIHRvIGBzdHJ1Y3QgYnBmX3N1YnByb2dfaW5mb2AuIFRoZSBjb2RlIHVwZGF0ZXMgZXhpc3RpbmcgYWNjb3VudGluZyBmdW5jdGlvbnMgbGlrZSBgYWNjb3VudF9wcm9jZXNzZWRfaW5zbmAsIGBhY2NvdW50X3Byb2Nlc3NlZF9pbnNuc2AsIGFuZCBgYWNjb3VudF9jdXJyZW50X3BhdGhgIHRvIGtlZXAgdGhlc2UgY291bnRzIGFjY3VyYXRlLiBBbmQgbmF0dXJhbGx5LCBgcHJpbnRfdmVyaWZpY2F0aW9uX3N0YXRzYCBpcyBiZWluZyBtb2RpZmllZCB0byByZXBvcnQgdGhpcyBuZXcsIG1vcmUgZ3JhbnVsYXIgZGF0YS4gVGhhdCdzIGEgc29saWQgaW1wcm92ZW1lbnQgZm9yIGRlYnVnZ2luZyBhbmQgcGVyZm9ybWFuY2UgYW5hbHlzaXMuXG5cbkJ1dCwgdGhlIHF1ZXN0aW9uIGlzLCAqZG9lcyB0aGlzIGFmZmVjdCB2ZXJpZmljYXRpb24gbG9naWMgaXRzZWxmPyogSXQncyBjcml0aWNhbCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgYmVoYXZpb3IgcmVtYWlucyB1bmNoYW5nZWQuIExldCBtZSBzZWUuLi4geWVzLCBJIHdhcyByaWdodCB0byBjaGVjayB0aGF0ISBPa2F5LCBsZXQncyBzZWUgaG93IHRoZSBpbnN0cnVjdGlvbiBjb21wbGV4aXR5IGxpbWl0IGlzIGhhbmRsZWQuIEFoLCBoZXJlIHdlIGdvLi4uXG5cbmBgYGNcbi1cdFx0aWYgKCsrZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkIFx1MDAzZSBCUEZfQ09NUExFWElUWV9MSU1JVF9JTlNOUykge1xuK1x0XHRhY2NvdW50X3Byb2Nlc3NlZF9pbnNuKGVudik7XG4rXG4rXHRcdGlmIChlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWQgXHUwMDNlIEJQRl9DT01QTEVYSVRZX0xJTUlUX0lOU05TKSB7XG5gYGBcblxuT2theSwgYGFjY291bnRfcHJvY2Vzc2VkX2luc25gIGlzIGNhbGxlZCBmaXJzdCwgd2hpY2ggc3RpbGwgaW5jcmVtZW50cyBgZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkYCBiZWZvcmUgdGhlIGNoZWNrIGFnYWluc3QgYEJQRl9DT01QTEVYSVRZX0xJTUlUX0lOU05TYC4gU28gdGhlIGxpbWl0ICppdHNlbGYqIHJlbWFpbnMgdW5jaGFuZ2VkLiBUaGUgbmV3IGZpZWxkcywgYGluc25zX3N1YnRvdGFsYCwgYGluc25zX3RvdGFsYCwgYW5kIGBpbnNuc19zZWxmYCwgYXBwZWFyIHRvIGJlIHB1cmVseSBmb3Igc3RhdGlzdGljcyBpbiBgcHJpbnRfdmVyaWZpY2F0aW9uX3N0YXRzYC5cblxuTGV0J3MgcXVpY2tseSBjb25maXJtLiBMZXQncyBsb29rIGF0IGBhY2NvdW50X3Byb2Nlc3NlZF9pbnNuYCBmdW5jdGlvbiBkZWZpbml0aW9uLlxuXG5gYGBjXG5zdGF0aWMgdm9pZCBhY2NvdW50X3Byb2Nlc3NlZF9pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG57XG5cdHN0cnVjdCBicGZfZnVuY19zdGF0ZSAqZnJhbWUgPSBjdXJfZnVuYyhlbnYpO1xuXG5cdGVudi1cdTAwM2VpbnNuX3Byb2Nlc3NlZCsrO1xuXHRmcmFtZS1cdTAwM2VpbnNuc19zdWJ0b3RhbCsrO1xuXHRlbnYtXHUwMDNlc3VicHJvZ19pbmZvW2ZyYW1lLVx1MDAzZXN1YnByb2dub10uaW5zbnNfc2VsZisrO1xufVxuYGBgXG5cbll1cCwgaXQgaW5jcmVtZW50cyBgZW52LVx1MDAzZWluc25fcHJvY2Vzc2VkYCBhbmQgdGhlbiB1cGRhdGVzIGFsbCB0aGUgdHJhY2tpbmcgdmFyaWFibGVzLiBBbmQgYGFjY291bnRfcHJvY2Vzc2VkX2luc25zYCBpbmNyZW1lbnRzIHRoZSBgaW5zbnNfdG90YWxgLiBJIG5lZWQgdG8gYmUgMTAwJSBzdXJlIHRoaXMgaXNuJ3QgdXNlZCB0byByZWplY3QgcHJvZ3JhbXMuIFF1aWNrIHNlYXJjaCBmb3IgYGluc25zX3RvdGFsYCBhbmQgYGluc25zX3NlbGZgIGluIHRoZSB2ZXJpZmllciBjb2RlIGlzIG5lY2Vzc2FyeS4gSnVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ5NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIyOjM4OjI1LjEwMjE3MDAwN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODgwMTUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnNuc190b3RhbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTk3MzE9c3RhdGljIHZvaWQgYWNjb3VudF9wcm9jZXNzZWRfaW5zbnMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05NzQxLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5NzQyOlxcdGVudi1cXHUwMDNlc3VicHJvZ19pbmZvW2NhbGxlZS1cXHUwMDNlc3VicHJvZ25vXS5pbnNuc190b3RhbCArPSBpbnNucztcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTc0My1cXHRpZiAoY2FsbGVyKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4NDUzPXN0YXRpYyBpbnQgZG9fY2hlY2tfY29tbW9uKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4NjEwLVxcdCAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODYxMTpcXHRlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tzdWJwcm9nXS5pbnNuc190b3RhbCA9IGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQgLSBpbnNuX3Byb2Nlc3NlZDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg2MTItXFx0cmV0dXJuIHJldDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODY5Nz1zdGF0aWMgdm9pZCBwcmludF92ZXJpZmljYXRpb25fc3RhdHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODcxMy1cXHRcXHRcXHQgICAgICAgYnBmX3N1YnByb2dfaXNfZ2xvYmFsKGVudiwgaSkgPyBcXFwiZ2xvYmFsXFxcIiA6IFxcXCJzdGF0aWNcXFwiO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODcxNDpcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcInN1YnByb2cgJWQgKCVzKSAlcyBpbnNuc19zZWxmICVkIGluc25zX3RvdGFsICVkIHN0YWNrICVkXFxcXG5cXFwiLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODcxNS1cXHRcXHRcXHRcXHRpLCBuYW1lLCBraW5kLCBlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tpXS5pbnNuc19zZWxmLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODcxNjpcXHRcXHRcXHRcXHRlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tpXS5pbnNuc190b3RhbCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg3MTctXFx0XFx0XFx0XFx0ZW52LVxcdTAwM2VzdWJwcm9nX2luZm9baV0uc3RhY2tfZGVwdGgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMjozODoyNS4xNTA5NzU4NjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTU0MTE1NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgSW5zdHJ1Y3Rpb24gQ291bnRpbmcgTWV0cmljcyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gVGhlIGNvZGUgSSdtIGxvb2tpbmcgYXQgb25seSBzZWVtcyB0byBiZSB1c2luZyBgaW5zbnNfdG90YWxgIGFuZCBgaW5zbnNfc2VsZmAgZm9yIGxvZ2dpbmcgcHVycG9zZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gYHByaW50X3ZlcmlmaWNhdGlvbl9zdGF0c2AuICBUaGF0J3MgYSBiaXQgbGltaXRpbmcsIGFuZCBpdCBkb2Vzbid0IGdpdmUgbWUgdGhlIGxldmVsIG9mIGRldGFpbCBJJ20gdXN1YWxseSBhZnRlci4gQmVmb3JlIEkgZGlnIGRlZXBlciwgSSBuZWVkIHRvIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHdpdGggYGluc25zX3N1YnRvdGFsYC4gSSdtIGd1ZXNzaW5nIHRoaXMgZmllbGQgbWlnaHQgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZWVwZXIgc3RydWN0dXJlLiBIb3BlZnVsbHkgaXQncyBjYWxjdWxhdGVkIGluIGEgd2F5IHRoYXQgZ2l2ZXMgYSBtb3JlIHVzZWZ1bCBicmVha2Rvd24gdGhhbiB3aGF0IEknbSBzZWVpbmcgZnJvbSB0aGUgb3RoZXIgdHdvLiBJJ20gZ29pbmcgdG8gdHJhY2sgZG93biB0aGUgdXNhZ2Ugb2YgdGhpcyB2YXJpYWJsZSBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDEwOSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIyOjM4OjI4LjMwNTA5MzMxNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njg5ODA2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnNuc19zdWJ0b3RhbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTE1OTI9c3RhdGljIGludCBjb3B5X2Z1bmNfc3RhdGUoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpkc3QsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTU5Ni1cXHQvKiBJbnN0cnVjdGlvbiBhY2NvdW50aW5nIGlzIHBhdGgtbG9jYWwsIG5vdCBwYXJ0IG9mIHZlcmlmaWVyIHN0YXRlLiAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNTk3OlxcdGRzdC1cXHUwMDNlaW5zbnNfc3VidG90YWwgPSAwO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNTk4LVxcdHJldHVybiBjb3B5X3N0YWNrX3N0YXRlKGRzdCwgc3JjKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz05NzIyPXN0YXRpYyB2b2lkIGFjY291bnRfcHJvY2Vzc2VkX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05NzI2LVxcdGVudi1cXHUwMDNlaW5zbl9wcm9jZXNzZWQrKztcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTcyNzpcXHRmcmFtZS1cXHUwMDNlaW5zbnNfc3VidG90YWwrKztcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTcyOC1cXHRlbnYtXFx1MDAzZXN1YnByb2dfaW5mb1tmcmFtZS1cXHUwMDNlc3VicHJvZ25vXS5pbnNuc19zZWxmKys7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9OTczMT1zdGF0aWMgdm9pZCBhY2NvdW50X3Byb2Nlc3NlZF9pbnNucyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTk3MzktXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjk3NDA6XFx0aW5zbnMgPSBjYWxsZWUtXFx1MDAzZWluc25zX3N1YnRvdGFsO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05NzQxLVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTk3NDMtXFx0aWYgKGNhbGxlcilcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTc0NDpcXHRcXHRjYWxsZXItXFx1MDAzZWluc25zX3N1YnRvdGFsICs9IGluc25zO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5NzQ1OlxcdGNhbGxlZS1cXHUwMDNlaW5zbnNfc3VidG90YWwgPSAwO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05NzQ2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjI6Mzg6MjguMzUxOTk4NDYxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcwOTExMjQ3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlKipcblxuT2theSwgc28gSSd2ZSBleGFtaW5lZCB0aGlzIHBhdGNoIGFuZCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgcHJpbWFyeSBwdXJwb3NlIG9mIHRoZXNlIGNoYW5nZXMgaXMgcHVyZWx5IGZvciBzdGF0aXN0aWNhbCB0cmFja2luZyB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllci4gSXQgYXBwZWFycyB0aGF0IHRoZSBuZXcgZmllbGRzIGFyZSBiZWluZyBpbnRyb2R1Y2VkIHRvIGVuaGFuY2UgbG9nZ2luZywgc3BlY2lmaWNhbGx5IHdoZW4gYEJQRl9MT0dfU1RBVFNgIGlzIGVuYWJsZWQuIFRoZSBjb3JlIG9mIHRoZSB2ZXJpZmljYXRpb24gbG9naWMgaXRzZWxmIGlzbid0IGJlaW5nIGFsdGVyZWQgaW4gYSB3YXkgdGhhdCB3b3VsZCBjaGFuZ2UgaG93IHByb2dyYW1zIGFyZSBhY2NlcHRlZCBvciByZWplY3RlZCwgbm9yIGlzIHRoZXJlIGFueSBtb2RpZmljYXRpb24gdG8gdGhlIGdlbmVyYXRlZCBjb2RlLlxuXG5UaGUgYWRkaXRpb24gb2YgYGFjY291bnRfcHJvY2Vzc2VkX2luc25gIGFuZCB0aGUgYXNzb2NpYXRlZCBmaWVsZHMsIHN1Y2ggYXMgYGluc25zX3N1YnRvdGFsYCBhbmQgYGluc25zX3NlbGZgLCBhcmUgc2ltcGx5IGluY3JlbWVudGluZyBhbmQgdHJhY2tpbmcgc3BlY2lmaWMgY291bnRzOyBmdW5jdGlvbmFsbHksIGBlbnYtXHUwMDNlaW5zbl9wcm9jZXNzZWRgIGlzIGJlaW5nIHVwZGF0ZWQgaW4gdGhlIHNhbWUgbWFubmVyLiBUaGlzIHBhdGNoIGp1c3QgcHJvdmlkZXMgbW9yZSBkZXRhaWxlZCBpbnNpZ2h0cyBpbnRvIHRoZSB2ZXJpZmljYXRpb24gcHJvY2Vzcy5cblxuSSd2ZSBhbHNvIHF1aWNrbHkgc2Nhbm5lZCB0aGUgYHByaW50X3ZlcmlmaWNhdGlvbl9zdGF0c2AgZnVuY3Rpb24gdG8gZW5zdXJlIHRoZXJlIGFyZW4ndCBhbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIG1lbW9yeSBhY2Nlc3Mgb3IgbG9nZ2luZyB0aGF0IGNvdWxkIGNhdXNlIGEgY3Jhc2guIEl0IGFwcGVhcnMgdG8gYmUgYSBzYWZlIGB2ZXJib3NlKClgIGNhbGwsIG1lcmVseSBvdXRwdXR0aW5nIHRoZSBjb2xsZWN0ZWQgc3RhdGlzdGljcy5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgd2hpY2ggaXMgbGltaXRlZCB0byBsb2dnaW5nIGFuZCBzdGF0aXN0aWNhbCBhY2N1bXVsYXRpb24sIEkgY2FuIGNvbmZpZGVudGx5IGNvbmNsdWRlIHRoYXQgZnV6emluZyB0aGlzIHNwZWNpZmljIHBhdGNoIHdvdWxkIG5vdCBiZSBiZW5lZmljaWFsLiBJdCB3b24ndCByZXZlYWwgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIHByb2dyYW0gdmVyaWZpY2F0aW9uLiBUaGVyZWZvcmUsIG15IGFzc2Vzc21lbnQgaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0ODAxLCJPdXRwdXRUb2tlbnMiOjc3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIyOjM4OjM3LjA2MTExMzIxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgc3RhdGlzdGljcyB0cmFja2luZyBmb3IgdGhlIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgcHJvY2Vzc2VkIHBlciBzdWJwcm9ncmFtIGR1cmluZyBCUEYgdmVyaWZpY2F0aW9uIGFuZCBvdXRwdXRzIHRoZW0gaW4gdGhlIHZlcmlmaWVyIGxvZy4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIHZlcmlmaWNhdGlvbiBsb2dpYywgZXhlY3V0aW9uIGZsb3csIG9yIHRoZSBnZW5lcmF0ZWQgQlBGIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgc3RhdGlzdGljcyB0cmFja2luZyBmb3IgdGhlIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgcHJvY2Vzc2VkIHBlciBzdWJwcm9ncmFtIGR1cmluZyBCUEYgdmVyaWZpY2F0aW9uIGFuZCBvdXRwdXRzIHRoZW0gaW4gdGhlIHZlcmlmaWVyIGxvZy4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIHZlcmlmaWNhdGlvbiBsb2dpYywgZXhlY3V0aW9uIGZsb3csIG9yIHRoZSBnZW5lcmF0ZWQgQlBGIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMjozODozNy4wNjExNTQwNVoiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowncfx2[1] Phase: Running StartedAt: 2026-08-12 22:38:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncfx2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-12 22:38:48 +0000 UTC FinishedAt: 2026-08-12 22:38:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}