Name: series-workflowbjsgf Phase: Succeeded StartedAt: 2026-07-04 18:16:54 +0000 UTC FinishedAt: 2026-07-04 22:37:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[0] Phase: Succeeded StartedAt: 2026-07-04 18:16:54 +0000 UTC FinishedAt: 2026-07-04 18:27:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[0].run-triage Phase: Succeeded StartedAt: 2026-07-04 18:16:54 +0000 UTC FinishedAt: 2026-07-04 18:27:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e031e55776cf9193b4720a253e92539ca536d224", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT", "SAMPLE_DAMON_WSSE", "SAMPLE_DAMON_PRCL", "SAMPLE_DAMON_MTIER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e031e55776cf9193b4720a253e92539ca536d224", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT", "SAMPLE_DAMON_WSSE", "SAMPLE_DAMON_PRCL", "SAMPLE_DAMON_MTIER" ], "series_id": "d7f04137-ccc1-4bf3-a567-37b838e6758e" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_start", "damon_stop", "damon_call", "damon_lru_sort_turn", "damon_reclaim_turn", "damon_sysfs_turn_damon_off", "damon_sample_mtier_start", "damon_sample_mtier_stop", "damon_sample_prcl_start", "damon_sample_wsse_start" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1dTU0UmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1BSQ0wmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jYWxsJiMzNDssCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X3R1cm4mIzM0OywKICAgICYjMzQ7ZGFtb25fcmVjbGFpbV90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmJiMzNDssCiAgICAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfcHJjbF9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFNT04gc3Vic3lzdGVtJiMzOTtzIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyAoZGFtb25fc3RhcnQsIGRhbW9uX3N0b3AsIGRhbW9uX2NhbGwpIGFuZCB1cGRhdGVzIHRoZWlyIGNhbGxlcnMgYWNyb3NzIG1tL2RhbW9uLyBhbmQgc2FtcGxlcy9kYW1vbi8uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDk3ZDEyZDkzYzdhMDI2MmZmNjUyOTNhOTViYjIxMTJmZDUwNWU2N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDQgMTg6MjY6NTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5pbmRleCA4MDVlMDg5ZmY0ZjJmNi4uMWQxMGYyOTFiMTZlZjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuQEAgLTEwNjcsNyAmIzQzOzEwNjcsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBkYW1vbl9tYXhfbnJfYWNjZXNzZXMoY29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRyc1xuIFxuIGJvb2wgZGFtb25faW5pdGlhbGl6ZWQodm9pZCk7XG4gaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpO1xuLWludCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cyk7XG4mIzQzO3ZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpO1xuIGJvb2wgZGFtb25faXNfcnVubmluZyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuIFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggYzZmYzM1YmU2MzNiM2EuLjljMTVkNDQwODRhZjQ0IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0xODM2LDggJiM0MzsxODM2LDEwIEBAIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3R4czsgaSYjNDM7JiM0MzspIHtcbiBcdFx0ZXJyID0gX19kYW1vbl9zdGFydChjdHhzW2ldKTtcbi1cdFx0aWYgKGVycilcbiYjNDM7XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0ZGFtb25fc3RvcChjdHhzLCBpKTtcbiBcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdFx0bnJfcnVubmluZ19jdHhzJiM0MzsmIzQzOztcbiBcdH1cbiBcdGlmIChleGNsdXNpdmUgXHUwMDI2XHUwMDI2IG5yX3J1bm5pbmdfY3R4cylcbkBAIC0xODUwLDEwICYjNDM7MTg1Miw4IEBAIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxuIC8qXG4gICogX19kYW1vbl9zdG9wKCkgLSBTdG9wcyBtb25pdG9yaW5nIG9mIGEgZ2l2ZW4gY29udGV4dC5cbiAgKiBAY3R4Olx0bW9uaXRvcmluZyBjb250ZXh0XG4tICpcbi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4gICovXG4tc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuJiM0MztzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHtcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrO1xuIFxuQEAgLTE4NjMsMzEgJiM0MzsxODYzLDIzIEBAIHN0YXRpYyBpbnQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiBcdFx0Z2V0X3Rhc2tfc3RydWN0KHRzayk7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNla2RhbW9uZF9sb2NrKTtcbiBcdFx0a3RocmVhZF9zdG9wX3B1dCh0c2spO1xuLVx0XHRyZXR1cm4gMDtcbiYjNDM7XHRcdHJldHVybjtcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNla2RhbW9uZF9sb2NrKTtcbi1cbi1cdHJldHVybiAtRVBFUk07XG4gfVxuIFxuIC8qKlxuICAqIGRhbW9uX3N0b3AoKSAtIFN0b3BzIHRoZSBtb25pdG9yaW5ncyBmb3IgYSBnaXZlbiBncm91cCBvZiBjb250ZXh0cy5cbiAgKiBAY3R4czpcdGFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RvcCBtb25pdG9yaW5nXG4gICogQG5yX2N0eHM6XHRzaXplIG9mIEBjdHhzXG4tICpcbi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4gICovXG4taW50IGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxuJiM0Mzt2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxuIHtcbi1cdGludCBpLCBlcnIgPSAwO1xuJiM0MztcdGludCBpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3R4czsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9jdHhzOyBpJiM0MzsmIzQzOylcbiBcdFx0LyogbnJfcnVubmluZ19jdHhzIGlzIGRlY3JlbWVudGVkIGluIGtkYW1vbmRfZm4gKi9cbi1cdFx0ZXJyID0gX19kYW1vbl9zdG9wKGN0eHNbaV0pO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGJyZWFrO1xuLVx0fVxuLVx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdF9fZGFtb25fc3RvcChjdHhzW2ldKTtcbiB9XG4gXG4gLyoqXG5AQCAtMTk0NCw2ICYjNDM7MTkzNiw4IEBAIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4gICogQGN0eCBoYXMgc3VjY2VlZGVkLiAgT3RoZXJ3aXNlLCB0aGlzIGZ1bmN0aW9uIGNvdWxkIGZhbGwgaW50byBhbiBpbmRlZmluaXRlXG4gICogd2FpdC5cbiAgKlxuJiM0MzsgKiBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZmFpbGVkLCB0aGUgQGN0eCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0b3BwZWQuXG4mIzQzOyAqXG4gICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuICAqL1xuIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbkBAIC0xOTU2LDcgJiM0MzsxOTUwLDcgQEAgaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZjdHgtXHUwMDNlY2FsbF9jb250cm9sc19sb2NrKTtcbiBcdGlmIChjdHgtXHUwMDNlY2FsbF9jb250cm9sc19vYnNvbGV0ZSkge1xuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG4tXHRcdHJldHVybiAtRUNBTkNFTEVEO1xuJiM0MztcdFx0Z290byBjYW5jZWxlZDtcbiBcdH1cbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y29udHJvbC1cdTAwM2VsaXN0LCBcdTAwMjZjdHgtXHUwMDNlY2FsbF9jb250cm9scyk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG5AQCAtMTk2NCw4ICYjNDM7MTk1OCwxMyBAQCBpbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpXG4gXHRcdHJldHVybiAwO1xuIFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZjb250cm9sLVx1MDAzZWNvbXBsZXRpb24pO1xuIFx0aWYgKGNvbnRyb2wtXHUwMDNlY2FuY2VsZWQpXG4tXHRcdHJldHVybiAtRUNBTkNFTEVEO1xuJiM0MztcdFx0Z290byBjYW5jZWxlZDtcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7Y2FuY2VsZWQ6XG4mIzQzO1x0X19kYW1vbl9zdG9wKGN0eCk7XG4mIzQzO1x0cmV0dXJuIC1FQ0FOQ0VMRUQ7XG4mIzQzO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuaW5kZXggMzJmNDE0OTFiNzI2YjIuLmRiZDA4ZjY5MWQ4YTU5IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuQEAgLTQxNCw4ICYjNDM7NDE0LDEwIEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfdHVybihib29sIG9uKVxuIHtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAoIW9uKVxuLVx0XHRyZXR1cm4gZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuJiM0MztcdGlmICghb24pIHtcbiYjNDM7XHRcdGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiBcbiBcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcbiBcdGlmIChlcnIpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXG5pbmRleCAxMWI3MGQwYTlhNmYwYS4uNGYwMTQzMDM4NzUwNGQgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9yZWNsYWltLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3JlY2xhaW0uY1xuQEAgLTMzNyw4ICYjNDM7MzM3LDEwIEBAIHN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV90dXJuKGJvb2wgb24pXG4ge1xuIFx0aW50IGVycjtcbiBcbi1cdGlmICghb24pXG4tXHRcdHJldHVybiBkYW1vbl9zdG9wKFx1MDAyNmN0eCwgMSk7XG4mIzQzO1x0aWYgKCFvbikge1xuJiM0MztcdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuIFxuIFx0ZXJyID0gZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKCk7XG4gXHRpZiAoZXJyKVxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLmMgYi9tbS9kYW1vbi9zeXNmcy5jXG5pbmRleCA2NzEwYjZkMDE5YmY1My4uNjliOTc1ZGU1MDhlNzIgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9zeXNmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy5jXG5AQCAtMjI5NSwxMiAmIzQzOzIyOTUsMTMgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcbiB7XG4gXHRpZiAoIWtkYW1vbmQtXHUwMDNlZGFtb25fY3R4KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdHJldHVybiBkYW1vbl9zdG9wKFx1MDAyNmtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCAxKTtcbiYjNDM7XHRkYW1vbl9zdG9wKFx1MDAyNmtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCAxKTtcbiBcdC8qXG4gXHQgKiBUbyBhbGxvdyB1c2VycyBzaG93IGZpbmFsIG1vbml0b3JpbmcgcmVzdWx0cyBvZiBhbHJlYWR5IHR1cm5lZC1vZmZcbiBcdCAqIERBTU9OLCB3ZSBmcmVlIGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4IGluIG5leHRcbiBcdCAqIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oKSwgb3Iga2RhbW9uZHNfbnJfc3RvcmUoKVxuIFx0ICovXG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfZGFtb25fY2FsbChpbnQgKCpmbikodm9pZCAqZGF0YSksXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9tdGllci5jIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5pbmRleCBlNTY3ZjRlZGQ4MGVhNy4uYWM5YzI0YjkyZWFkODQgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL210aWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuQEAgLTE5Myw4ICYjNDM7MTkzLDYgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcbiBcdGlmICghZXJyKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGlmIChkYW1vbl9pc19ydW5uaW5nKGN0eHNbMF0pKVxuLVx0XHRkYW1vbl9zdG9wKGN0eHMsIDEpO1xuIFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1swXSk7XG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzFdKTtcbiBcdHJldHVybiBlcnI7XG5AQCAtMjAyLDggJiM0MzsyMDAsNyBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKVxuIFxuIHN0YXRpYyB2b2lkIGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wKHZvaWQpXG4ge1xuLVx0ZGFtb25fc3RvcChjdHhzLCAxKTtcbi1cdGRhbW9uX3N0b3AoXHUwMDI2Y3R4c1sxXSwgMSk7XG4mIzQzO1x0ZGFtb25fc3RvcChjdHhzLCAyKTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMF0pO1xuIFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1sxXSk7XG4gfVxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vcHJjbC5jIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbmluZGV4IGVkZWFlMTQ1YzRhOGFmLi44NDIwOTliZDYyMjg2MSAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vcHJjbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL2RhbW9uL3ByY2wuY1xuQEAgLTExMywxMCAmIzQzOzExMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQodm9pZClcbiBcbiBcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcbiBcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuJiM0MztcdGlmIChlcnIpXG4gXHRcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XG4tXHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3dzc2UuYyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXG5pbmRleCBmZjVlOGE4OTBmNDQ4Yy4uMzdmZDVkYTIwMTU4ODUgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3dzc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi93c3NlLmNcbkBAIC05MywxMCAmIzQzOzkzLDggQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCh2b2lkKVxuIFx0fVxuIFx0cmVwZWF0X2NhbGxfY29udHJvbC5kYXRhID0gY3R4O1xuIFx0ZXJyID0gZGFtb25fY2FsbChjdHgsIFx1MDAyNnJlcGVhdF9jYWxsX2NvbnRyb2wpO1xuLVx0aWYgKGVycikge1xuLVx0XHRkYW1vbl9zdG9wKFx1MDAyNmN0eCwgMSk7XG4mIzQzO1x0aWYgKGVycilcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbi1cdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1dTU0UmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1BSQ0wmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jYWxsJiMzNDssCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X3R1cm4mIzM0OywKICAgICYjMzQ7ZGFtb25fcmVjbGFpbV90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmJiMzNDssCiAgICAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfcHJjbF9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFNT04gc3Vic3lzdGVtJiMzOTtzIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyAoZGFtb25fc3RhcnQsIGRhbW9uX3N0b3AsIGRhbW9uX2NhbGwpIGFuZCB1cGRhdGVzIHRoZWlyIGNhbGxlcnMgYWNyb3NzIG1tL2RhbW9uLyBhbmQgc2FtcGxlcy9kYW1vbi8uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwOTdkMTJkOTNjN2EwMjYyZmY2NTI5M2E5NWJiMjExMmZkNTA1ZTY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgNCAxODoyNjo1MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaAppbmRleCA4MDVlMDg5ZmY0ZjJmNi4uMWQxMGYyOTFiMTZlZjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmgKQEAgLTEwNjcsNyAmIzQzOzEwNjcsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBkYW1vbl9tYXhfbnJfYWNjZXNzZXMoY29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycwogCiBib29sIGRhbW9uX2luaXRpYWxpemVkKHZvaWQpOwogaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpOwotaW50IGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKTsKJiM0Mzt2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKTsKIGJvb2wgZGFtb25faXNfcnVubmluZyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpOwogaW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7CiAKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCBjNmZjMzViZTYzM2IzYS4uOWMxNWQ0NDA4NGFmNDQgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTE4MzYsOCAmIzQzOzE4MzYsMTAgQEAgaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpCiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgbnJfY3R4czsgaSYjNDM7JiM0MzspIHsKIAkJZXJyID0gX19kYW1vbl9zdGFydChjdHhzW2ldKTsKLQkJaWYgKGVycikKJiM0MzsJCWlmIChlcnIpIHsKJiM0MzsJCQlkYW1vbl9zdG9wKGN0eHMsIGkpOwogCQkJYnJlYWs7CiYjNDM7CQl9CiAJCW5yX3J1bm5pbmdfY3R4cyYjNDM7JiM0Mzs7CiAJfQogCWlmIChleGNsdXNpdmUgJmFtcDsmYW1wOyBucl9ydW5uaW5nX2N0eHMpCkBAIC0xODUwLDEwICYjNDM7MTg1Miw4IEBAIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKQogLyoKICAqIF9fZGFtb25fc3RvcCgpIC0gU3RvcHMgbW9uaXRvcmluZyBvZiBhIGdpdmVuIGNvbnRleHQuCiAgKiBAY3R4Ogltb25pdG9yaW5nIGNvbnRleHQKLSAqCi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCiAgKi8KLXN0YXRpYyBpbnQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eCkKJiM0MztzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KQogewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrOwogCkBAIC0xODYzLDMxICYjNDM7MTg2MywyMyBAQCBzdGF0aWMgaW50IF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpCiAJCWdldF90YXNrX3N0cnVjdCh0c2spOwogCQltdXRleF91bmxvY2soJmFtcDtjdHgtJmd0O2tkYW1vbmRfbG9jayk7CiAJCWt0aHJlYWRfc3RvcF9wdXQodHNrKTsKLQkJcmV0dXJuIDA7CiYjNDM7CQlyZXR1cm47CiAJfQogCW11dGV4X3VubG9jaygmYW1wO2N0eC0mZ3Q7a2RhbW9uZF9sb2NrKTsKLQotCXJldHVybiAtRVBFUk07CiB9CiAKIC8qKgogICogZGFtb25fc3RvcCgpIC0gU3RvcHMgdGhlIG1vbml0b3JpbmdzIGZvciBhIGdpdmVuIGdyb3VwIG9mIGNvbnRleHRzLgogICogQGN0eHM6CWFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RvcCBtb25pdG9yaW5nCiAgKiBAbnJfY3R4czoJc2l6ZSBvZiBAY3R4cwotICoKLSAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4KICAqLwotaW50IGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKQomIzQzO3ZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpCiB7Ci0JaW50IGksIGVyciA9IDA7CiYjNDM7CWludCBpOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IG5yX2N0eHM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBucl9jdHhzOyBpJiM0MzsmIzQzOykKIAkJLyogbnJfcnVubmluZ19jdHhzIGlzIGRlY3JlbWVudGVkIGluIGtkYW1vbmRfZm4gKi8KLQkJZXJyID0gX19kYW1vbl9zdG9wKGN0eHNbaV0pOwotCQlpZiAoZXJyKQotCQkJYnJlYWs7Ci0JfQotCXJldHVybiBlcnI7CiYjNDM7CQlfX2RhbW9uX3N0b3AoY3R4c1tpXSk7CiB9CiAKIC8qKgpAQCAtMTk0NCw2ICYjNDM7MTkzNiw4IEBAIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpCiAgKiBAY3R4IGhhcyBzdWNjZWVkZWQuICBPdGhlcndpc2UsIHRoaXMgZnVuY3Rpb24gY291bGQgZmFsbCBpbnRvIGFuIGluZGVmaW5pdGUKICAqIHdhaXQuCiAgKgomIzQzOyAqIFdoZW4gdGhpcyBmdW5jdGlvbiBpcyBmYWlsZWQsIHRoZSBAY3R4IGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RvcHBlZC4KJiM0MzsgKgogICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgogICovCiBpbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpCkBAIC0xOTU2LDcgJiM0MzsxOTUwLDcgQEAgaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKQogCW11dGV4X2xvY2soJmFtcDtjdHgtJmd0O2NhbGxfY29udHJvbHNfbG9jayk7CiAJaWYgKGN0eC0mZ3Q7Y2FsbF9jb250cm9sc19vYnNvbGV0ZSkgewogCQltdXRleF91bmxvY2soJmFtcDtjdHgtJmd0O2NhbGxfY29udHJvbHNfbG9jayk7Ci0JCXJldHVybiAtRUNBTkNFTEVEOwomIzQzOwkJZ290byBjYW5jZWxlZDsKIAl9CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2NvbnRyb2wtJmd0O2xpc3QsICZhbXA7Y3R4LSZndDtjYWxsX2NvbnRyb2xzKTsKIAltdXRleF91bmxvY2soJmFtcDtjdHgtJmd0O2NhbGxfY29udHJvbHNfbG9jayk7CkBAIC0xOTY0LDggJiM0MzsxOTU4LDEzIEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbCkKIAkJcmV0dXJuIDA7CiAJd2FpdF9mb3JfY29tcGxldGlvbigmYW1wO2NvbnRyb2wtJmd0O2NvbXBsZXRpb24pOwogCWlmIChjb250cm9sLSZndDtjYW5jZWxlZCkKLQkJcmV0dXJuIC1FQ0FOQ0VMRUQ7CiYjNDM7CQlnb3RvIGNhbmNlbGVkOwogCXJldHVybiAwOwomIzQzOwomIzQzO2NhbmNlbGVkOgomIzQzOwlfX2RhbW9uX3N0b3AoY3R4KTsKJiM0MzsJcmV0dXJuIC1FQ0FOQ0VMRUQ7CiYjNDM7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmMKaW5kZXggMzJmNDE0OTFiNzI2YjIuLmRiZDA4ZjY5MWQ4YTU5IDEwMDY0NAotLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2xydV9zb3J0LmMKQEAgLTQxNCw4ICYjNDM7NDE0LDEwIEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfdHVybihib29sIG9uKQogewogCWludCBlcnI7CiAKLQlpZiAoIW9uKQotCQlyZXR1cm4gZGFtb25fc3RvcCgmYW1wO2N0eCwgMSk7CiYjNDM7CWlmICghb24pIHsKJiM0MzsJCWRhbW9uX3N0b3AoJmFtcDtjdHgsIDEpOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KIAogCWVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTsKIAlpZiAoZXJyKQpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jCmluZGV4IDExYjcwZDBhOWE2ZjBhLi40ZjAxNDMwMzg3NTA0ZCAxMDA2NDQKLS0tIGEvbW0vZGFtb24vcmVjbGFpbS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3JlY2xhaW0uYwpAQCAtMzM3LDggJiM0MzszMzcsMTAgQEAgc3RhdGljIGludCBkYW1vbl9yZWNsYWltX3R1cm4oYm9vbCBvbikKIHsKIAlpbnQgZXJyOwogCi0JaWYgKCFvbikKLQkJcmV0dXJuIGRhbW9uX3N0b3AoJmFtcDtjdHgsIDEpOwomIzQzOwlpZiAoIW9uKSB7CiYjNDM7CQlkYW1vbl9zdG9wKCZhbXA7Y3R4LCAxKTsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiAKIAllcnIgPSBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnMoKTsKIAlpZiAoZXJyKQpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmMKaW5kZXggNjcxMGI2ZDAxOWJmNTMuLjY5Yjk3NWRlNTA4ZTcyIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9zeXNmcy5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3N5c2ZzLmMKQEAgLTIyOTUsMTIgJiM0MzsyMjk1LDEzIEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmYoc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpCiB7CiAJaWYgKCFrZGFtb25kLSZndDtkYW1vbl9jdHgpCiAJCXJldHVybiAtRUlOVkFMOwotCXJldHVybiBkYW1vbl9zdG9wKCZhbXA7a2RhbW9uZC0mZ3Q7ZGFtb25fY3R4LCAxKTsKJiM0MzsJZGFtb25fc3RvcCgmYW1wO2tkYW1vbmQtJmd0O2RhbW9uX2N0eCwgMSk7CiAJLyoKIAkgKiBUbyBhbGxvdyB1c2VycyBzaG93IGZpbmFsIG1vbml0b3JpbmcgcmVzdWx0cyBvZiBhbHJlYWR5IHR1cm5lZC1vZmYKIAkgKiBEQU1PTiwgd2UgZnJlZSBrZGFtb25kLSZndDtkYW1vbl9jdHggaW4gbmV4dAogCSAqIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oKSwgb3Iga2RhbW9uZHNfbnJfc3RvcmUoKQogCSAqLwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKGludCAoKmZuKSh2b2lkICpkYXRhKSwKZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuYwppbmRleCBlNTY3ZjRlZGQ4MGVhNy4uYWM5YzI0YjkyZWFkODQgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL2RhbW9uL210aWVyLmMKQEAgLTE5Myw4ICYjNDM7MTkzLDYgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZCkKIAlpZiAoIWVycikKIAkJcmV0dXJuIDA7CiAKLQlpZiAoZGFtb25faXNfcnVubmluZyhjdHhzWzBdKSkKLQkJZGFtb25fc3RvcChjdHhzLCAxKTsKIAlkYW1vbl9kZXN0cm95X2N0eChjdHhzWzBdKTsKIAlkYW1vbl9kZXN0cm95X2N0eChjdHhzWzFdKTsKIAlyZXR1cm4gZXJyOwpAQCAtMjAyLDggJiM0MzsyMDAsNyBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKQogCiBzdGF0aWMgdm9pZCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCh2b2lkKQogewotCWRhbW9uX3N0b3AoY3R4cywgMSk7Ci0JZGFtb25fc3RvcCgmYW1wO2N0eHNbMV0sIDEpOwomIzQzOwlkYW1vbl9zdG9wKGN0eHMsIDIpOwogCWRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMF0pOwogCWRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMV0pOwogfQpkaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9wcmNsLmMgYi9zYW1wbGVzL2RhbW9uL3ByY2wuYwppbmRleCBlZGVhZTE0NWM0YThhZi4uODQyMDk5YmQ2MjI4NjEgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvZGFtb24vcHJjbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jCkBAIC0xMTMsMTAgJiM0MzsxMTMsOCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0KHZvaWQpCiAKIAlyZXBlYXRfY2FsbF9jb250cm9sLmRhdGEgPSBjdHg7CiAJZXJyID0gZGFtb25fY2FsbChjdHgsICZhbXA7cmVwZWF0X2NhbGxfY29udHJvbCk7Ci0JaWYgKGVycikgewotCQlkYW1vbl9zdG9wKCZhbXA7Y3R4LCAxKTsKJiM0MzsJaWYgKGVycikKIAkJZGFtb25fZGVzdHJveV9jdHgoY3R4KTsKLQl9CiAJcmV0dXJuIGVycjsKIH0KIApkaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi93c3NlLmMgYi9zYW1wbGVzL2RhbW9uL3dzc2UuYwppbmRleCBmZjVlOGE4OTBmNDQ4Yy4uMzdmZDVkYTIwMTU4ODUgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvZGFtb24vd3NzZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jCkBAIC05MywxMCAmIzQzOzkzLDggQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCh2b2lkKQogCX0KIAlyZXBlYXRfY2FsbF9jb250cm9sLmRhdGEgPSBjdHg7CiAJZXJyID0gZGFtb25fY2FsbChjdHgsICZhbXA7cmVwZWF0X2NhbGxfY29udHJvbCk7Ci0JaWYgKGVycikgewotCQlkYW1vbl9zdG9wKCZhbXA7Y3R4LCAxKTsKJiM0MzsJaWYgKGVycikKIAkJZGFtb25fZGVzdHJveV9jdHgoY3R4KTsKLQl9CiAJcmV0dXJuIGVycjsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAxODoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDY2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIFN1YnN5c3RlbSBQYXRjaCBSZXZpZXcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgZmxvdyB3aXRoaW4gREFNT04uIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGNoYW5nZXMgdGhlIHJldHVybiB0eXBlIG9mIGJvdGggYGRhbW9uX3N0b3BgIGFuZCBgX19kYW1vbl9zdG9wYCBmcm9tIGBpbnRgIHRvIGB2b2lkYC4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2UgYmVjYXVzZSBpdCByZW1vdmVzIHRoZSBkaXJlY3QgYWJpbGl0eSBmb3IgdGhlc2UgZnVuY3Rpb25zIHRvIHNpZ25hbCBhbiBlcnJvciBzdGF0dXMgdmlhIGEgcmV0dXJuIHZhbHVlLiBJbnN0ZWFkLCBlcnJvciBoYW5kbGluZyBsaWtlbHkgcmVsaWVzIG9uIG90aGVyIG1lY2hhbmlzbXMsIHBvdGVudGlhbGx5IGdsb2JhbCB2YXJpYWJsZXMsIG9yIHBvc3NpYmx5IHVzaW5nIHRoZSBjb250ZXh0IGBjdHhgIGl0c2VsZi4KCkkgc2VlIHRoYXQgYF9fZGFtb25fc3RvcChjdHgpYCBpcyBub3cgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGRhbW9uX2NhbGxgIHdoZW4gYSBjYWxsIGlzIGNhbmNlbGxlZC4gQWxzbywgaW4gYGRhbW9uX3N0YXJ0YCwgdGhlIHBhdGNoIGlzIHVwZGF0ZWQgdG8gY2FsbCBgZGFtb25fc3RvcChjdHhzLCBpKWAgYW5kIGJyZWFrIGlmIGBfX2RhbW9uX3N0YXJ0YCBmYWlscy4gSXQmIzM5O3MgYSBjYXNjYWRpbmcgY2hhbmdlLCBpbXBhY3Rpbmcgc2V2ZXJhbCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhlIGVycm9yIGhhbmRsaW5nIGluIGBkYW1vbl9zdGFydGAgaXMgc3RpbGwgaW50YWN0LCBjYWxsaW5nIGBkYW1vbl9zdG9wYCB3aGVuIGBfX2RhbW9uX3N0YXJ0YCBmYWlscy4KClRoZSBwYXRjaCBpbmNsdWRlcyB1cGRhdGVzIHRvIGNhbGxlcnMgaW4gdmFyaW91cyBhcmVhcywgaW5jbHVkaW5nIGBscnVfc29ydC5jYCwgYHJlY2xhaW0uY2AsIGBzeXNmcy5jYCwgYW5kIHNldmVyYWwgc2FtcGxlIG1vZHVsZXMuIFRoaXMgd2lkZXNwcmVhZCBpbXBhY3QgaXMgaW1wb3J0YW50IHRvIG5vdGUgYW5kIHJlcXVpcmVzIHRob3JvdWdoIHJldmlldyB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3Igc3VidGxlIGJ1Z3MgYXJlIGludHJvZHVjZWQuCgpBcyBhIGNvcmUga2VybmVsIGZlYXR1cmUsIERBTU9OIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBJdCYjMzk7cyBjb21tb25seSBjb25maWd1cmVkIChgQ09ORklHX0RBTU9OYCwgYENPTkZJR19EQU1PTl9TWVNGU2AsIGBDT05GSUdfREFNT05fUkVDTEFJTWAsIGBDT05GSUdfREFNT05fTFJVX1NPUlRgKSBhbmQgdXRpbGl6ZWQgYnkgbW9kdWxlcyBhbmQgZXhwb3NlZCB0aHJvdWdoIGludGVyZmFjZXMgbGlrZSBzeXNmcyBhbmQgZGVidWdmcywgdGhlcmVmb3JlLCBhIGNoYW5nZSBvZiB0aGlzIG5hdHVyZSBjb3VsZCBwb3RlbnRpYWxseSBoYXZlIHdpZGVyIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGlzIGNoYW5nZSBpcyBzYWZlLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHZhbGlkaXR5IG9mIHRoaXMgY2hhbmdlLiBJJiMzOTtsbCBuZWVkIHRvIHJ1biBzb21lIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGlzIG9rYXksIGFuZCBJIHdpbGwgcHJvYmFibHkgYWxzbyB3YW50IHRvIHVzZSB0b29scyB0byB2ZXJpZnkgdGhlIGNoYW5nZS4gSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhlIGVycm9yIGNvZGVzIGFyZSBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTg6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEYXRhIEFjY2VzcyBNb25pdG9yaW5nXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnLTQtXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTQtXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL0tjb25maWctMTYtXHRib29sIFwmIzM0O0NoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0yNS1cbm1tL2RhbW9uL0tjb25maWc6MjY6Y29uZmlnIERBTU9OX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctMjctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcbm1tL2RhbW9uL0tjb25maWctNjktXHRib29sIFwmIzM0O0RBTU9OIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNzUtXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctODctXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXG5tbS9kYW1vbi9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMDctXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMDktXHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxubW0vZGFtb24vS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAxODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTc5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2ggZm9yIENvcmUgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgbWFraW5nIHNvbWUgc2lnbmlmaWNhbnQgY2hhbmdlcyB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbS4gTXkgaW5pdGlhbCBmb2N1cyBoYXMgdG8gYmUgb24gdGhlIGNvcmUgY29udHJvbCBmdW5jdGlvbnM6IGBkYW1vbl9zdG9wYCwgYGRhbW9uX3N0YXJ0YCwgYW5kIGBkYW1vbl9jYWxsYCB3aXRoaW4gYG1tL2RhbW9uL2NvcmUuY2AuIFRoZXNlIGFyZSB0aGUgYmVkcm9jayBvZiB0aGUgd2hvbGUgZHluYW1pYyBhZGRyZXNzIG1vbml0b3Jpbmcgc2V0dXAsIHRoZSBlbnRyeSBwb2ludHMgYW5kIGNvbnRyb2wgbWVjaGFuaXNtcy4KCkJleW9uZCB0aG9zZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBwYXRjaCBhZmZlY3RzIHRoZSB2YXJpb3VzIG1vbml0b3Jpbmcgc3RyYXRlZ2llcywgdGhlIHR1cm5pbmcgb2YgdGhlc2Ugc3RyYXRlZ2llcyBvbiBvciBvZmYuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGRpZyBpbnRvIGBkYW1vbl9scnVfc29ydF90dXJuYCAoaW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgKSwgYGRhbW9uX3JlY2xhaW1fdHVybmAgKGluIGBtbS9kYW1vbi9yZWNsYWltLmNgKSwgYW5kIHRoZSBzeXNmcyBjb250cm9sIGZ1bmN0aW9uIGBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZmAgKGluIGBtbS9kYW1vbi9zeXNmcy5jYCkuIFRoZXNlIGFyZSBjcml0aWNhbCB0byB0dW5pbmcgREFNT04mIzM5O3MgYmVoYXZpb3IgaW4gcmVzcG9uc2UgdG8gc3lzdGVtIGNoYW5nZXMuCgpJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgYmVpbmcgc2V0LiBUaGUgb2J2aW91cyBvbmVzIGFyZSBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGFuZCBgREFNT05fTFJVX1NPUlRgLiBUaGlzIHNldCBvZiBzZXR0aW5ncyBnaXZlcyBtZSBhbiBpbW1lZGlhdGUgY2x1ZSBhcyB0byBob3cgdGhlIHBhdGNoIGlzIGludGVuZGVkIHRvIG9wZXJhdGUgb24gZGlmZmVyZW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlIHRoZSBjb2RlIHBhdGhzIHRoaXMgcGF0Y2ggbW9kaWZpZXMuCgpGaW5hbGx5LCBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHN1cHBvcnRpbmcgY29uZmlndXJhdGlvbnMuIFRoZSBgc2FtcGxlcy9kYW1vbi9gIGRpcmVjdG9yeSBpcyBhbHdheXMgYSBnb29kIHBsYWNlIHRvIGNoZWNrIGZvciBleGFtcGxlcyBvZiBEQU1PTiB1c2FnZS4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2Ugc2FtcGxlcyBhcmUgYnVpbHQgYW5kIGlmIHRoZXkgcmVxdWlyZSBhbnkgYWRkaXRpb25hbCBjb25maWdzIHRvIGVuYWJsZSB0aGVtLiBUaGVpciBidWlsZCBwcm9jZXNzIG1pZ2h0IGdpdmUgbWUgaW5zaWdodHMgaW50byBob3cgdGhlIHBhdGNoIGFsdGVycyBEQU1PTiYjMzk7cyBkZXBsb3ltZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNBTVBMRV9EQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTg6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY1OQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgREFNT04mIzM5O3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIERBTU9OLiBNeSBmaXJzdCBpbnN0aW5jdCwgYW5kIGEgY29tbW9uIHByYWN0aWNlLCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIGNhbmRpZGF0ZXM6IGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGFuZCBgc2FtcGxlcy9LY29uZmlnYC4gVGhlc2UgYXJlIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgZGVmaW5pdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dCB0aGF0IGdvdmVybiB3aGV0aGVyIERBTU9OIGNhbiBiZSBidWlsdCBhbmQgaG93IGl0IGJlaGF2ZXMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHRoZSBgQ09ORklHX0RBTU9OYCBzeW1ib2wsIGFueSBhc3NvY2lhdGVkIHN1Yi1vcHRpb25zLCBhbmQgdGhlaXIgZGVmYXVsdCB2YWx1ZXMuIFRoZSBzYW1wbGVzIGRpcmVjdG9yaWVzIGFyZSB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBxdWlja2x5IGFzc2VzcyBhdmFpbGFibGUgb3B0aW9ucyBhbmQgZmluZCB1c2FnZSBleGFtcGxlcy4gSWYgdGhhdCBkb2VzbiYjMzk7dCBwcm92aWRlIGVub3VnaCBpbmZvcm1hdGlvbiwgSSB3b3VsZCBiZWdpbiBzZWFyY2hpbmcgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBjb2RlIGZvciB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTg6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTg6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkyNwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKk1ha2VmaWxlIEV4cGxvcmF0aW9uIGZvciBDb250ZXh0KioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaGVyZSBpcyB0byBxdWlja2x5IGdhaW4gY29udGV4dCBvbiBob3cgdGhpcyBwcm9qZWN0LCBvciBwZXJoYXBzIGEgcmVsYXRlZCBleGFtcGxlLCBpcyBzdHJ1Y3R1cmVkIGZyb20gYSBidWlsZCBwZXJzcGVjdGl2ZS4gSSYjMzk7bSBpbW1lZGlhdGVseSByZWFjaGluZyBmb3IgdGhlIGBNYWtlZmlsZWBzIOKAkyBzcGVjaWZpY2FsbHksIGVpdGhlciBpbiB0aGUgYHNhbXBsZXNgIGRpcmVjdG9yeSBkaXJlY3RseSwgb3IsIGlmIHRoZXJlJiMzOTtzIGEgc3BlY2lhbGl6ZWQgZGVtbyBvciBEYW1vbi1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgdGhlIGBzYW1wbGVzL2RhbW9uL01ha2VmaWxlYC4gVGhpcyBwb2ludHMgdG93YXJkcyBhIGRlc2lyZSB0byBzZWUgdGhlIGJ1aWxkIHN5c3RlbSBhbmQgZGVwZW5kZW5jaWVzIGluIGFjdGlvbi4gSSYjMzk7bSBsaWtlbHkgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgY29tcGlsZXIgZmxhZ3MsIGxpbmtpbmcgb3B0aW9ucywgaW5jbHVkZWQgaGVhZGVycywgYW5kIHRoZSBvdmVyYWxsIGNvbXBpbGF0aW9uIGZsb3cuIEV4YW1pbmluZyB0aGUgTWFrZWZpbGUgd2lsbCBnaXZlIGEgc3Ryb25nIHVuZGVyc3RhbmRpbmcgb2YgdGhlICYjMzQ7d2hhdCBhbmQgaG93JiMzNDsgb2YgdGhlIHByb2plY3Qgd2l0aG91dCBoYXZpbmcgdG8gZGVlcCBkaXZlIGludG8gY29kZS4gVGhpcyBpcyBhIGNvbW1vbiBhbmQgZWZmaWNpZW50IHdheSB0byBxdWlja2x5IGdldCBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RBTU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c2FtcGxlcy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL01ha2VmaWxlPTQyPW9iai0kKENPTkZJR19TQU1QTEVTX1JVU1QpXHRcdCYjNDM7PSBydXN0L1xuc2FtcGxlcy9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfU0FNUExFX0RBTU9OX1dTU0UpXHRcdCYjNDM7PSBkYW1vbi9cbnNhbXBsZXMvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9QUkNMKVx0XHQmIzQzOz0gZGFtb24vXG5zYW1wbGVzL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19TQU1QTEVfREFNT05fTVRJRVIpXHQmIzQzOz0gZGFtb24vXG5zYW1wbGVzL01ha2VmaWxlLTQ2LW9iai0kKENPTkZJR19TQU1QTEVfSFVOR19UQVNLKVx0XHQmIzQzOz0gaHVuZ190YXNrL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAxODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mjk4CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWcgc3ltYm9sczoKCioqRGVjb25zdHJ1Y3RpbmcgRGFtb24gU2FtcGxlIENvbmZpZ3VyYXRpb25zKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgQ09ORklHX1NBTVBMRV9EQU1PTl9XU1NFYCwgYENPTkZJR19TQU1QTEVfREFNT05fUFJDTGAsIGFuZCBgQ09ORklHX1NBTVBMRV9EQU1PTl9NVElFUmAuIE15IGZpcnN0IHRob3VnaHQgaXMsIHRoZXNlIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gdGhlIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yKSBmcmFtZXdvcmssIGFuZCB0aGV5JiMzOTtyZSBsaWtlbHkgc2FtcGxlIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZXNlIHNhbXBsZXMgYXJlIGRvaW5nLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGxvY2F0ZSB3aGVyZSB0aGVzZSBjb25maWd1cmF0aW9uIHN5bWJvbHMgYXJlIGFjdHVhbGx5IGRlZmluZWQuIFRoYXQmIzM5O2xsIHByb3ZpZGUgdGhlIGNydWNpYWwgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgYCNpZmRlZmAgY29uZGl0aW9ucyBvciB0aGUgZGVmYXVsdCB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZW0gd2lsbCBiZSBrZXkgdG8gZGVjaXBoZXJpbmcgdGhlaXIgcHVycG9zZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIGFuZCB0aGUgb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggZWFjaCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQU1QTEVfREFNT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEQU1PTiBTYW1wbGVzXCYjMzQ7XG5zYW1wbGVzL2RhbW9uL0tjb25maWctNC1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZzo1OmNvbmZpZyBTQU1QTEVfREFNT05fV1NTRVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIHdvcmtpbmcgc2V0IHNpemUgZXN0aW1hdGlvblwmIzM0O1xuLS1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0xNi1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZzoxNzpjb25maWcgU0FNUExFX0RBTU9OX1BSQ0xcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3IgYWNjZXNzLWF3YXJlIHByb2FjdGl2ZSByZWNsYW1hdGlvblwmIzM0O1xuLS1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0yOS1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMDpjb25maWcgU0FNUExFX0RBTU9OX01USUVSXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMzEtXHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MzEKCQkJCQkJCW91dHB1dDogMjU3CgkJCQkJCQl0aG91Z2h0czogMzc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIG5haWwgZG93biB0aGlzIGZ1enppbmcgdGFyZ2V0LiBGaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBpbiBtaW5kLiBJJiMzOTtsbCBhZGQgdGhlc2UgdG8gdGhlIGxpc3Q6IGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9SRUNMQUlNYCwgYERBTU9OX0xSVV9TT1JUYCwgYFNBTVBMRV9EQU1PTl9XU1NFYCwgYFNBTVBMRV9EQU1PTl9QUkNMYCwgYW5kIGBTQU1QTEVfREFNT05fTVRJRVJgLiBHb3R0YSBiZSBjb21wcmVoZW5zaXZlLgoKTm93LCBsZXQmIzM5O3MgcXVpY2tseSByZXZpZXcgdGhlIGNvcmUgREFNT04gZnVuY3Rpb25zIHRoZW1zZWx2ZXMuIEkmIzM5O20gdGhpbmtpbmc6IGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYGRhbW9uX2NhbGxgLCBgZGFtb25fbHJ1X3NvcnRfdHVybmAsIGBkYW1vbl9yZWNsYWltX3R1cm5gLCBgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZgLCBgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0YCwgYGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wYCwgYGRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0YCwgYW5kIGBkYW1vbl9zYW1wbGVfd3NzZV9zdGFydGAuIFl1cCwgdGhvc2UgYWxsIGxvb2sgbGlrZSBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcuIFRoZXNlIGFyZSB0aGUgbGlmZWN5Y2xlIGhvb2tzLgoKQWxyaWdodCwgdGltZSBmb3IgYSBzYW5pdHkgY2hlY2sgb24gdGhpcyBwYXJ0aWN1bGFyIHBhdGNoIGFuZCB3aGV0aGVyIGl0JiMzOTtzIHRydWx5IGBXb3J0aEZ1enppbmdgLiBUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGNvcmUgREFNT04gbG9naWMsIHNwZWNpZmljYWxseSBob3cgYGRhbW9uX3N0b3BgIGlzIGhhbmRsZWQgKGluY2x1ZGluZyBpdHMgcmV0dXJuIHR5cGUpIGFuZCBhbHNvIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBlcnJvciBoYW5kbGluZyB3aXRoaW4gYGRhbW9uX3N0YXJ0YCBhbmQgYGRhbW9uX2NhbGxgLiBDcnVjaWFsbHksIHRoaXMgYWZmZWN0cyAqZnVuY3Rpb25hbCogbG9naWMuIFRoaXMgaXMgY29kZSB0aGF0JiMzOTtzIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdGhyb3VnaCBzeXNmcyBvciBieSBsb2FkaW5nIG1vZHVsZXMuIFNvLCB5ZWFoLCB0aGlzIGlzIGRlZmluaXRlbHkgYSBnb29kIHRhcmdldC4gYFdvcnRoRnV6emluZz10cnVlYC4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhlIHBhdGNoIHVwZGF0ZXMgdGhlIERBTU9OIHN1YnN5c3RlbSYjMzk7cyBjb3JlIGxpZmVjeWNsZSBmdW5jdGlvbnMgKGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYW5kIGBkYW1vbl9jYWxsYCkgYW5kIHRoZW4gY2FzY2FkZXMgdGhyb3VnaCB0aGVpciByZXNwZWN0aXZlIGNhbGwgc2l0ZXMgd2l0aGluIGBtbS9kYW1vbi9gIGFuZCBgc2FtcGxlcy9kYW1vbi9gLiBUaGVzZSBhcmUgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgcmVhY2gga2VybmVsIGNvZGUsIHNvIGZ1enppbmcgaXMgd2FycmFudGVkLiBSaWdodCwgSSB0aGluayBJIGhhdmUgZXZlcnl0aGluZy4gVGltZSB0byBwcmVwYXJlIHRoZSBmaW5hbCByZXNwb25zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTg6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1dTU0UmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1BSQ0wmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jYWxsJiMzNDssCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X3R1cm4mIzM0OywKICAgICYjMzQ7ZGFtb25fcmVjbGFpbV90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmJiMzNDssCiAgICAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfcHJjbF9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFNT04gc3Vic3lzdGVtJiMzOTtzIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyAoZGFtb25fc3RhcnQsIGRhbW9uX3N0b3AsIGRhbW9uX2NhbGwpIGFuZCB1cGRhdGVzIHRoZWlyIGNhbGxlcnMgYWNyb3NzIG1tL2RhbW9uLyBhbmQgc2FtcGxlcy9kYW1vbi8uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9SRUNMQUlNJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9XU1NFJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9QUkNMJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX3N0b3AmIzM0OywKICAgICYjMzQ7ZGFtb25fY2FsbCYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3JlY2xhaW1fdHVybiYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZiYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fc2FtcGxlX210aWVyX3N0b3AmIzM0OywKICAgICYjMzQ7ZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIHN1YnN5c3RlbSYjMzk7cyBjb3JlIGxpZmVjeWNsZSBmdW5jdGlvbnMgKGRhbW9uX3N0YXJ0LCBkYW1vbl9zdG9wLCBkYW1vbl9jYWxsKSBhbmQgdXBkYXRlcyB0aGVpciBjYWxsZXJzIGFjcm9zcyBtbS9kYW1vbi8gYW5kIHNhbXBsZXMvZGFtb24vLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDE4OjI2OjUzLjk4MDkzOTQyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MDYyMDQ5MDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9XU1NFXCIsXG4gICAgXCJTQU1QTEVfREFNT05fUFJDTFwiLFxuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX3N0b3BcIixcbiAgICBcImRhbW9uX2NhbGxcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X3R1cm5cIixcbiAgICBcImRhbW9uX3JlY2xhaW1fdHVyblwiLFxuICAgIFwiZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZcIixcbiAgICBcImRhbW9uX3NhbXBsZV9tdGllcl9zdGFydFwiLFxuICAgIFwiZGFtb25fc2FtcGxlX210aWVyX3N0b3BcIixcbiAgICBcImRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfd3NzZV9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEQU1PTiBzdWJzeXN0ZW0ncyBjb3JlIGxpZmVjeWNsZSBmdW5jdGlvbnMgKGRhbW9uX3N0YXJ0LCBkYW1vbl9zdG9wLCBkYW1vbl9jYWxsKSBhbmQgdXBkYXRlcyB0aGVpciBjYWxsZXJzIGFjcm9zcyBtbS9kYW1vbi8gYW5kIHNhbXBsZXMvZGFtb24vLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTg6MjY6NTMuOTgwOTQ1MDE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDk0MDc0MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwOTdkMTJkOTNjN2EwMjYyZmY2NTI5M2E5NWJiMjExMmZkNTA1ZTY3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDQgMTg6MjY6NTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXFxuaW5kZXggODA1ZTA4OWZmNGYyZjYuLjFkMTBmMjkxYjE2ZWYzIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBkYW1vbl9tYXhfbnJfYWNjZXNzZXMoY29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRyc1xcbiBcXG4gYm9vbCBkYW1vbl9pbml0aWFsaXplZCh2b2lkKTtcXG4gaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpO1xcbi1pbnQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpO1xcbit2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKTtcXG4gYm9vbCBkYW1vbl9pc19ydW5uaW5nKHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XFxuIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXFxuaW5kZXggYzZmYzM1YmU2MzNiM2EuLjljMTVkNDQwODRhZjQ0IDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xcbkBAIC0xODM2LDggKzE4MzYsMTAgQEAgaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfY3R4czsgaSsrKSB7XFxuIFxcdFxcdGVyciA9IF9fZGFtb25fc3RhcnQoY3R4c1tpXSk7XFxuLVxcdFxcdGlmIChlcnIpXFxuK1xcdFxcdGlmIChlcnIpIHtcXG4rXFx0XFx0XFx0ZGFtb25fc3RvcChjdHhzLCBpKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0XFx0bnJfcnVubmluZ19jdHhzKys7XFxuIFxcdH1cXG4gXFx0aWYgKGV4Y2x1c2l2ZSBcXHUwMDI2XFx1MDAyNiBucl9ydW5uaW5nX2N0eHMpXFxuQEAgLTE4NTAsMTAgKzE4NTIsOCBAQCBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcXG4gLypcXG4gICogX19kYW1vbl9zdG9wKCkgLSBTdG9wcyBtb25pdG9yaW5nIG9mIGEgZ2l2ZW4gY29udGV4dC5cXG4gICogQGN0eDpcXHRtb25pdG9yaW5nIGNvbnRleHRcXG4tICpcXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxcbiAgKi9cXG4tc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbitzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbiB7XFxuIFxcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrO1xcbiBcXG5AQCAtMTg2MywzMSArMTg2MywyMyBAQCBzdGF0aWMgaW50IF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuIFxcdFxcdGdldF90YXNrX3N0cnVjdCh0c2spO1xcbiBcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmN0eC1cXHUwMDNla2RhbW9uZF9sb2NrKTtcXG4gXFx0XFx0a3RocmVhZF9zdG9wX3B1dCh0c2spO1xcbi1cXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y3R4LVxcdTAwM2VrZGFtb25kX2xvY2spO1xcbi1cXG4tXFx0cmV0dXJuIC1FUEVSTTtcXG4gfVxcbiBcXG4gLyoqXFxuICAqIGRhbW9uX3N0b3AoKSAtIFN0b3BzIHRoZSBtb25pdG9yaW5ncyBmb3IgYSBnaXZlbiBncm91cCBvZiBjb250ZXh0cy5cXG4gICogQGN0eHM6XFx0YW4gYXJyYXkgb2YgdGhlIHBvaW50ZXJzIGZvciBjb250ZXh0cyB0byBzdG9wIG1vbml0b3JpbmdcXG4gICogQG5yX2N0eHM6XFx0c2l6ZSBvZiBAY3R4c1xcbi0gKlxcbi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXFxuICAqL1xcbi1pbnQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpXFxuK3ZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpXFxuIHtcXG4tXFx0aW50IGksIGVyciA9IDA7XFxuK1xcdGludCBpO1xcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX2N0eHM7IGkrKykge1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfY3R4czsgaSsrKVxcbiBcXHRcXHQvKiBucl9ydW5uaW5nX2N0eHMgaXMgZGVjcmVtZW50ZWQgaW4ga2RhbW9uZF9mbiAqL1xcbi1cXHRcXHRlcnIgPSBfX2RhbW9uX3N0b3AoY3R4c1tpXSk7XFxuLVxcdFxcdGlmIChlcnIpXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHR9XFxuLVxcdHJldHVybiBlcnI7XFxuK1xcdFxcdF9fZGFtb25fc3RvcChjdHhzW2ldKTtcXG4gfVxcbiBcXG4gLyoqXFxuQEAgLTE5NDQsNiArMTkzNiw4IEBAIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuICAqIEBjdHggaGFzIHN1Y2NlZWRlZC4gIE90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiBjb3VsZCBmYWxsIGludG8gYW4gaW5kZWZpbml0ZVxcbiAgKiB3YWl0LlxcbiAgKlxcbisgKiBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZmFpbGVkLCB0aGUgQGN0eCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0b3BwZWQuXFxuKyAqXFxuICAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS5cXG4gICovXFxuIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcXG5AQCAtMTk1Niw3ICsxOTUwLDcgQEAgaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XFxuIFxcdGlmIChjdHgtXFx1MDAzZWNhbGxfY29udHJvbHNfb2Jzb2xldGUpIHtcXG4gXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XFxuLVxcdFxcdHJldHVybiAtRUNBTkNFTEVEO1xcbitcXHRcXHRnb3RvIGNhbmNlbGVkO1xcbiBcXHR9XFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmNvbnRyb2wtXFx1MDAzZWxpc3QsIFxcdTAwMjZjdHgtXFx1MDAzZWNhbGxfY29udHJvbHMpO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmN0eC1cXHUwMDNlY2FsbF9jb250cm9sc19sb2NrKTtcXG5AQCAtMTk2NCw4ICsxOTU4LDEzIEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdHdhaXRfZm9yX2NvbXBsZXRpb24oXFx1MDAyNmNvbnRyb2wtXFx1MDAzZWNvbXBsZXRpb24pO1xcbiBcXHRpZiAoY29udHJvbC1cXHUwMDNlY2FuY2VsZWQpXFxuLVxcdFxcdHJldHVybiAtRUNBTkNFTEVEO1xcbitcXHRcXHRnb3RvIGNhbmNlbGVkO1xcbiBcXHRyZXR1cm4gMDtcXG4rXFxuK2NhbmNlbGVkOlxcbitcXHRfX2RhbW9uX3N0b3AoY3R4KTtcXG4rXFx0cmV0dXJuIC1FQ0FOQ0VMRUQ7XFxuK1xcbiB9XFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmNcXG5pbmRleCAzMmY0MTQ5MWI3MjZiMi4uZGJkMDhmNjkxZDhhNTkgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbisrKyBiL21tL2RhbW9uL2xydV9zb3J0LmNcXG5AQCAtNDE0LDggKzQxNCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcXG4ge1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0aWYgKCFvbilcXG4tXFx0XFx0cmV0dXJuIGRhbW9uX3N0b3AoXFx1MDAyNmN0eCwgMSk7XFxuK1xcdGlmICghb24pIHtcXG4rXFx0XFx0ZGFtb25fc3RvcChcXHUwMDI2Y3R4LCAxKTtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4gXFxuIFxcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcXG4gXFx0aWYgKGVycilcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXFxuaW5kZXggMTFiNzBkMGE5YTZmMGEuLjRmMDE0MzAzODc1MDRkIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL3JlY2xhaW0uY1xcbisrKyBiL21tL2RhbW9uL3JlY2xhaW0uY1xcbkBAIC0zMzcsOCArMzM3LDEwIEBAIHN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV90dXJuKGJvb2wgb24pXFxuIHtcXG4gXFx0aW50IGVycjtcXG4gXFxuLVxcdGlmICghb24pXFxuLVxcdFxcdHJldHVybiBkYW1vbl9zdG9wKFxcdTAwMjZjdHgsIDEpO1xcbitcXHRpZiAoIW9uKSB7XFxuK1xcdFxcdGRhbW9uX3N0b3AoXFx1MDAyNmN0eCwgMSk7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuIFxcbiBcXHRlcnIgPSBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnMoKTtcXG4gXFx0aWYgKGVycilcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmNcXG5pbmRleCA2NzEwYjZkMDE5YmY1My4uNjliOTc1ZGU1MDhlNzIgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vc3lzZnMuY1xcbisrKyBiL21tL2RhbW9uL3N5c2ZzLmNcXG5AQCAtMjI5NSwxMiArMjI5NSwxMyBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmKHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxcbiB7XFxuIFxcdGlmICgha2RhbW9uZC1cXHUwMDNlZGFtb25fY3R4KVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFx0cmV0dXJuIGRhbW9uX3N0b3AoXFx1MDAyNmtkYW1vbmQtXFx1MDAzZWRhbW9uX2N0eCwgMSk7XFxuK1xcdGRhbW9uX3N0b3AoXFx1MDAyNmtkYW1vbmQtXFx1MDAzZWRhbW9uX2N0eCwgMSk7XFxuIFxcdC8qXFxuIFxcdCAqIFRvIGFsbG93IHVzZXJzIHNob3cgZmluYWwgbW9uaXRvcmluZyByZXN1bHRzIG9mIGFscmVhZHkgdHVybmVkLW9mZlxcbiBcXHQgKiBEQU1PTiwgd2UgZnJlZSBrZGFtb25kLVxcdTAwM2VkYW1vbl9jdHggaW4gbmV4dFxcbiBcXHQgKiBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29uKCksIG9yIGtkYW1vbmRzX25yX3N0b3JlKClcXG4gXFx0ICovXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLFxcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcXG5pbmRleCBlNTY3ZjRlZGQ4MGVhNy4uYWM5YzI0YjkyZWFkODQgMTAwNjQ0XFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuKysrIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuQEAgLTE5Myw4ICsxOTMsNiBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKVxcbiBcXHRpZiAoIWVycilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRpZiAoZGFtb25faXNfcnVubmluZyhjdHhzWzBdKSlcXG4tXFx0XFx0ZGFtb25fc3RvcChjdHhzLCAxKTtcXG4gXFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1swXSk7XFxuIFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMV0pO1xcbiBcXHRyZXR1cm4gZXJyO1xcbkBAIC0yMDIsOCArMjAwLDcgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcXG4gXFxuIHN0YXRpYyB2b2lkIGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wKHZvaWQpXFxuIHtcXG4tXFx0ZGFtb25fc3RvcChjdHhzLCAxKTtcXG4tXFx0ZGFtb25fc3RvcChcXHUwMDI2Y3R4c1sxXSwgMSk7XFxuK1xcdGRhbW9uX3N0b3AoY3R4cywgMik7XFxuIFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMF0pO1xcbiBcXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzFdKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3ByY2wuYyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jXFxuaW5kZXggZWRlYWUxNDVjNGE4YWYuLjg0MjA5OWJkNjIyODYxIDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvZGFtb24vcHJjbC5jXFxuKysrIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcXG5AQCAtMTEzLDEwICsxMTMsOCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0KHZvaWQpXFxuIFxcbiBcXHRyZXBlYXRfY2FsbF9jb250cm9sLmRhdGEgPSBjdHg7XFxuIFxcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcXHUwMDI2cmVwZWF0X2NhbGxfY29udHJvbCk7XFxuLVxcdGlmIChlcnIpIHtcXG4tXFx0XFx0ZGFtb25fc3RvcChcXHUwMDI2Y3R4LCAxKTtcXG4rXFx0aWYgKGVycilcXG4gXFx0XFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcXG4tXFx0fVxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3dzc2UuYyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXFxuaW5kZXggZmY1ZThhODkwZjQ0OGMuLjM3ZmQ1ZGEyMDE1ODg1IDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvZGFtb24vd3NzZS5jXFxuKysrIGIvc2FtcGxlcy9kYW1vbi93c3NlLmNcXG5AQCAtOTMsMTAgKzkzLDggQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCh2b2lkKVxcbiBcXHR9XFxuIFxcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcXG4gXFx0ZXJyID0gZGFtb25fY2FsbChjdHgsIFxcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcXG4tXFx0aWYgKGVycikge1xcbi1cXHRcXHRkYW1vbl9zdG9wKFxcdTAwMjZjdHgsIDEpO1xcbitcXHRpZiAoZXJyKVxcbiBcXHRcXHRkYW1vbl9kZXN0cm95X2N0eChjdHgpO1xcbi1cXHR9XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDE4OjI2OjU0LjczMTM5NTczN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzMTE1Nzg2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9SRUNMQUlNXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiLFxuICAgIFwiU0FNUExFX0RBTU9OX1dTU0VcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9QUkNMXCIsXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9zdGFydFwiLFxuICAgIFwiZGFtb25fc3RvcFwiLFxuICAgIFwiZGFtb25fY2FsbFwiLFxuICAgIFwiZGFtb25fbHJ1X3NvcnRfdHVyblwiLFxuICAgIFwiZGFtb25fcmVjbGFpbV90dXJuXCIsXG4gICAgXCJkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZlwiLFxuICAgIFwiZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcFwiLFxuICAgIFwiZGFtb25fc2FtcGxlX3ByY2xfc3RhcnRcIixcbiAgICBcImRhbW9uX3NhbXBsZV93c3NlX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIHN1YnN5c3RlbSdzIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyAoZGFtb25fc3RhcnQsIGRhbW9uX3N0b3AsIGRhbW9uX2NhbGwpIGFuZCB1cGRhdGVzIHRoZWlyIGNhbGxlcnMgYWNyb3NzIG1tL2RhbW9uLyBhbmQgc2FtcGxlcy9kYW1vbi8uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA5N2QxMmQ5M2M3YTAyNjJmZjY1MjkzYTk1YmIyMTEyZmQ1MDVlNjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCA0IDE4OjI2OjUyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5pbmRleCA4MDVlMDg5ZmY0ZjJmNi4uMWQxMGYyOTFiMTZlZjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuQEAgLTEwNjcsNyArMTA2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRhbW9uX21heF9ucl9hY2Nlc3Nlcyhjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzXG4gXG4gYm9vbCBkYW1vbl9pbml0aWFsaXplZCh2b2lkKTtcbiBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSk7XG4taW50IGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKTtcbit2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKTtcbiBib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbiBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbiBcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IGM2ZmMzNWJlNjMzYjNhLi45YzE1ZDQ0MDg0YWY0NCAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuKysrIGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMTgzNiw4ICsxODM2LDEwIEBAIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3R4czsgaSsrKSB7XG4gXHRcdGVyciA9IF9fZGFtb25fc3RhcnQoY3R4c1tpXSk7XG4tXHRcdGlmIChlcnIpXG4rXHRcdGlmIChlcnIpIHtcbitcdFx0XHRkYW1vbl9zdG9wKGN0eHMsIGkpO1xuIFx0XHRcdGJyZWFrO1xuK1x0XHR9XG4gXHRcdG5yX3J1bm5pbmdfY3R4cysrO1xuIFx0fVxuIFx0aWYgKGV4Y2x1c2l2ZSBcdTAwMjZcdTAwMjYgbnJfcnVubmluZ19jdHhzKVxuQEAgLTE4NTAsMTAgKzE4NTIsOCBAQCBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcbiAvKlxuICAqIF9fZGFtb25fc3RvcCgpIC0gU3RvcHMgbW9uaXRvcmluZyBvZiBhIGdpdmVuIGNvbnRleHQuXG4gICogQGN0eDpcdG1vbml0b3JpbmcgY29udGV4dFxuLSAqXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuICAqL1xuLXN0YXRpYyBpbnQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbitzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHtcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrO1xuIFxuQEAgLTE4NjMsMzEgKzE4NjMsMjMgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIFx0XHRnZXRfdGFza19zdHJ1Y3QodHNrKTtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmN0eC1cdTAwM2VrZGFtb25kX2xvY2spO1xuIFx0XHRrdGhyZWFkX3N0b3BfcHV0KHRzayk7XG4tXHRcdHJldHVybiAwO1xuK1x0XHRyZXR1cm47XG4gXHR9XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWtkYW1vbmRfbG9jayk7XG4tXG4tXHRyZXR1cm4gLUVQRVJNO1xuIH1cbiBcbiAvKipcbiAgKiBkYW1vbl9zdG9wKCkgLSBTdG9wcyB0aGUgbW9uaXRvcmluZ3MgZm9yIGEgZ2l2ZW4gZ3JvdXAgb2YgY29udGV4dHMuXG4gICogQGN0eHM6XHRhbiBhcnJheSBvZiB0aGUgcG9pbnRlcnMgZm9yIGNvbnRleHRzIHRvIHN0b3AgbW9uaXRvcmluZ1xuICAqIEBucl9jdHhzOlx0c2l6ZSBvZiBAY3R4c1xuLSAqXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuICAqL1xuLWludCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcbit2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxuIHtcbi1cdGludCBpLCBlcnIgPSAwO1xuK1x0aW50IGk7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9jdHhzOyBpKyspIHtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2N0eHM7IGkrKylcbiBcdFx0LyogbnJfcnVubmluZ19jdHhzIGlzIGRlY3JlbWVudGVkIGluIGtkYW1vbmRfZm4gKi9cbi1cdFx0ZXJyID0gX19kYW1vbl9zdG9wKGN0eHNbaV0pO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGJyZWFrO1xuLVx0fVxuLVx0cmV0dXJuIGVycjtcbitcdFx0X19kYW1vbl9zdG9wKGN0eHNbaV0pO1xuIH1cbiBcbiAvKipcbkBAIC0xOTQ0LDYgKzE5MzYsOCBAQCBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuICAqIEBjdHggaGFzIHN1Y2NlZWRlZC4gIE90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiBjb3VsZCBmYWxsIGludG8gYW4gaW5kZWZpbml0ZVxuICAqIHdhaXQuXG4gICpcbisgKiBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZmFpbGVkLCB0aGUgQGN0eCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0b3BwZWQuXG4rICpcbiAgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4gICovXG4gaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxuQEAgLTE5NTYsNyArMTk1MCw3IEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbiBcdG11dGV4X2xvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG4gXHRpZiAoY3R4LVx1MDAzZWNhbGxfY29udHJvbHNfb2Jzb2xldGUpIHtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmN0eC1cdTAwM2VjYWxsX2NvbnRyb2xzX2xvY2spO1xuLVx0XHRyZXR1cm4gLUVDQU5DRUxFRDtcbitcdFx0Z290byBjYW5jZWxlZDtcbiBcdH1cbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y29udHJvbC1cdTAwM2VsaXN0LCBcdTAwMjZjdHgtXHUwMDNlY2FsbF9jb250cm9scyk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG5AQCAtMTk2NCw4ICsxOTU4LDEzIEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbiBcdFx0cmV0dXJuIDA7XG4gXHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmNvbnRyb2wtXHUwMDNlY29tcGxldGlvbik7XG4gXHRpZiAoY29udHJvbC1cdTAwM2VjYW5jZWxlZClcbi1cdFx0cmV0dXJuIC1FQ0FOQ0VMRUQ7XG4rXHRcdGdvdG8gY2FuY2VsZWQ7XG4gXHRyZXR1cm4gMDtcbitcbitjYW5jZWxlZDpcbitcdF9fZGFtb25fc3RvcChjdHgpO1xuK1x0cmV0dXJuIC1FQ0FOQ0VMRUQ7XG4rXG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5pbmRleCAzMmY0MTQ5MWI3MjZiMi4uZGJkMDhmNjkxZDhhNTkgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXG4rKysgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5AQCAtNDE0LDggKzQxNCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFvbilcbi1cdFx0cmV0dXJuIGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbitcdGlmICghb24pIHtcbitcdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbiBcbiBcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcbiBcdGlmIChlcnIpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXG5pbmRleCAxMWI3MGQwYTlhNmYwYS4uNGYwMTQzMDM4NzUwNGQgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9yZWNsYWltLmNcbisrKyBiL21tL2RhbW9uL3JlY2xhaW0uY1xuQEAgLTMzNyw4ICszMzcsMTAgQEAgc3RhdGljIGludCBkYW1vbl9yZWNsYWltX3R1cm4oYm9vbCBvbilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFvbilcbi1cdFx0cmV0dXJuIGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbitcdGlmICghb24pIHtcbitcdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbiBcbiBcdGVyciA9IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycygpO1xuIFx0aWYgKGVycilcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuY1xuaW5kZXggNjcxMGI2ZDAxOWJmNTMuLjY5Yjk3NWRlNTA4ZTcyIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vc3lzZnMuY1xuKysrIGIvbW0vZGFtb24vc3lzZnMuY1xuQEAgLTIyOTUsMTIgKzIyOTUsMTMgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcbiB7XG4gXHRpZiAoIWtkYW1vbmQtXHUwMDNlZGFtb25fY3R4KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdHJldHVybiBkYW1vbl9zdG9wKFx1MDAyNmtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCAxKTtcbitcdGRhbW9uX3N0b3AoXHUwMDI2a2RhbW9uZC1cdTAwM2VkYW1vbl9jdHgsIDEpO1xuIFx0LypcbiBcdCAqIFRvIGFsbG93IHVzZXJzIHNob3cgZmluYWwgbW9uaXRvcmluZyByZXN1bHRzIG9mIGFscmVhZHkgdHVybmVkLW9mZlxuIFx0ICogREFNT04sIHdlIGZyZWUga2RhbW9uZC1cdTAwM2VkYW1vbl9jdHggaW4gbmV4dFxuIFx0ICogZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbigpLCBvciBrZGFtb25kc19ucl9zdG9yZSgpXG4gXHQgKi9cbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuaW5kZXggZTU2N2Y0ZWRkODBlYTcuLmFjOWMyNGI5MmVhZDg0IDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXG4rKysgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcbkBAIC0xOTMsOCArMTkzLDYgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcbiBcdGlmICghZXJyKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGlmIChkYW1vbl9pc19ydW5uaW5nKGN0eHNbMF0pKVxuLVx0XHRkYW1vbl9zdG9wKGN0eHMsIDEpO1xuIFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1swXSk7XG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzFdKTtcbiBcdHJldHVybiBlcnI7XG5AQCAtMjAyLDggKzIwMCw3IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXG4gXG4gc3RhdGljIHZvaWQgZGFtb25fc2FtcGxlX210aWVyX3N0b3Aodm9pZClcbiB7XG4tXHRkYW1vbl9zdG9wKGN0eHMsIDEpO1xuLVx0ZGFtb25fc3RvcChcdTAwMjZjdHhzWzFdLCAxKTtcbitcdGRhbW9uX3N0b3AoY3R4cywgMik7XG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzBdKTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMV0pO1xuIH1cbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3ByY2wuYyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jXG5pbmRleCBlZGVhZTE0NWM0YThhZi4uODQyMDk5YmQ2MjI4NjEgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3ByY2wuY1xuKysrIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbkBAIC0xMTMsMTAgKzExMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQodm9pZClcbiBcbiBcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcbiBcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0aWYgKGVycilcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbi1cdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vd3NzZS5jIGIvc2FtcGxlcy9kYW1vbi93c3NlLmNcbmluZGV4IGZmNWU4YTg5MGY0NDhjLi4zN2ZkNWRhMjAxNTg4NSAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vd3NzZS5jXG4rKysgYi9zYW1wbGVzL2RhbW9uL3dzc2UuY1xuQEAgLTkzLDEwICs5Myw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnQodm9pZClcbiBcdH1cbiBcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcbiBcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0aWYgKGVycilcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbi1cdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTg6MjY6NTQuNzMxMzk5MDM3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg1MDY2ODI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEQU1PTiBTdWJzeXN0ZW0gUGF0Y2ggUmV2aWV3KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGZ1bmRhbWVudGFsbHkgYWx0ZXJzIHRoZSBlcnJvciBoYW5kbGluZyBmbG93IHdpdGhpbiBEQU1PTi4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggY2hhbmdlcyB0aGUgcmV0dXJuIHR5cGUgb2YgYm90aCBgZGFtb25fc3RvcGAgYW5kIGBfX2RhbW9uX3N0b3BgIGZyb20gYGludGAgdG8gYHZvaWRgLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZSBiZWNhdXNlIGl0IHJlbW92ZXMgdGhlIGRpcmVjdCBhYmlsaXR5IGZvciB0aGVzZSBmdW5jdGlvbnMgdG8gc2lnbmFsIGFuIGVycm9yIHN0YXR1cyB2aWEgYSByZXR1cm4gdmFsdWUuIEluc3RlYWQsIGVycm9yIGhhbmRsaW5nIGxpa2VseSByZWxpZXMgb24gb3RoZXIgbWVjaGFuaXNtcywgcG90ZW50aWFsbHkgZ2xvYmFsIHZhcmlhYmxlcywgb3IgcG9zc2libHkgdXNpbmcgdGhlIGNvbnRleHQgYGN0eGAgaXRzZWxmLlxuXG5JIHNlZSB0aGF0IGBfX2RhbW9uX3N0b3AoY3R4KWAgaXMgbm93IGNhbGxlZCBkaXJlY3RseSBmcm9tIGBkYW1vbl9jYWxsYCB3aGVuIGEgY2FsbCBpcyBjYW5jZWxsZWQuIEFsc28sIGluIGBkYW1vbl9zdGFydGAsIHRoZSBwYXRjaCBpcyB1cGRhdGVkIHRvIGNhbGwgYGRhbW9uX3N0b3AoY3R4cywgaSlgIGFuZCBicmVhayBpZiBgX19kYW1vbl9zdGFydGAgZmFpbHMuIEl0J3MgYSBjYXNjYWRpbmcgY2hhbmdlLCBpbXBhY3Rpbmcgc2V2ZXJhbCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhlIGVycm9yIGhhbmRsaW5nIGluIGBkYW1vbl9zdGFydGAgaXMgc3RpbGwgaW50YWN0LCBjYWxsaW5nIGBkYW1vbl9zdG9wYCB3aGVuIGBfX2RhbW9uX3N0YXJ0YCBmYWlscy5cblxuVGhlIHBhdGNoIGluY2x1ZGVzIHVwZGF0ZXMgdG8gY2FsbGVycyBpbiB2YXJpb3VzIGFyZWFzLCBpbmNsdWRpbmcgYGxydV9zb3J0LmNgLCBgcmVjbGFpbS5jYCwgYHN5c2ZzLmNgLCBhbmQgc2V2ZXJhbCBzYW1wbGUgbW9kdWxlcy4gVGhpcyB3aWRlc3ByZWFkIGltcGFjdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSBhbmQgcmVxdWlyZXMgdGhvcm91Z2ggcmV2aWV3IHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBzdWJ0bGUgYnVncyBhcmUgaW50cm9kdWNlZC5cblxuQXMgYSBjb3JlIGtlcm5lbCBmZWF0dXJlLCBEQU1PTiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gSXQncyBjb21tb25seSBjb25maWd1cmVkIChgQ09ORklHX0RBTU9OYCwgYENPTkZJR19EQU1PTl9TWVNGU2AsIGBDT05GSUdfREFNT05fUkVDTEFJTWAsIGBDT05GSUdfREFNT05fTFJVX1NPUlRgKSBhbmQgdXRpbGl6ZWQgYnkgbW9kdWxlcyBhbmQgZXhwb3NlZCB0aHJvdWdoIGludGVyZmFjZXMgbGlrZSBzeXNmcyBhbmQgZGVidWdmcywgdGhlcmVmb3JlLCBhIGNoYW5nZSBvZiB0aGlzIG5hdHVyZSBjb3VsZCBwb3RlbnRpYWxseSBoYXZlIHdpZGVyIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGlzIGNoYW5nZSBpcyBzYWZlLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGUgdmFsaWRpdHkgb2YgdGhpcyBjaGFuZ2UuIEknbGwgbmVlZCB0byBydW4gc29tZSBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBpcyBva2F5LCBhbmQgSSB3aWxsIHByb2JhYmx5IGFsc28gd2FudCB0byB1c2UgdG9vbHMgdG8gdmVyaWZ5IHRoZSBjaGFuZ2UuIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoZSBlcnJvciBjb2RlcyBhcmUgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDY2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTg6Mjc6MDAuNTgyMDY5MDA4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5MzQ4NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL0tjb25maWc9Mz1tZW51IFxcXCJEYXRhIEFjY2VzcyBNb25pdG9yaW5nXFxcIlxcbm1tL2RhbW9uL0tjb25maWctNC1cXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXFxubW0vZGFtb24vS2NvbmZpZy02LVxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMTQtXFxubW0vZGFtb24vS2NvbmZpZzoxNTpjb25maWcgREFNT05fREVCVUdfU0FOSVRZXFxubW0vZGFtb24vS2NvbmZpZy0xNi1cXHRib29sIFxcXCJDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMjUtXFxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctMjctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb25cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMzctXFxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTM5LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1xcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNDYtXFxubW0vZGFtb24vS2NvbmZpZzo0Nzpjb25maWcgREFNT05fUEFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxcbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNjctXFxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcXG5tbS9kYW1vbi9LY29uZmlnLTY5LVxcdGJvb2wgXFxcIkRBTU9OIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNzUtXFxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNzctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxcbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG5tbS9kYW1vbi9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy05OS1cXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMDctXFxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMTUtXFxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXFxubW0vZGFtb24vS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTg6Mjc6MDAuNjgxNDIyNDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDU5MjQxODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2ggZm9yIENvcmUgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBtYWtpbmcgc29tZSBzaWduaWZpY2FudCBjaGFuZ2VzIHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLiBNeSBpbml0aWFsIGZvY3VzIGhhcyB0byBiZSBvbiB0aGUgY29yZSBjb250cm9sIGZ1bmN0aW9uczogYGRhbW9uX3N0b3BgLCBgZGFtb25fc3RhcnRgLCBhbmQgYGRhbW9uX2NhbGxgIHdpdGhpbiBgbW0vZGFtb24vY29yZS5jYC4gVGhlc2UgYXJlIHRoZSBiZWRyb2NrIG9mIHRoZSB3aG9sZSBkeW5hbWljIGFkZHJlc3MgbW9uaXRvcmluZyBzZXR1cCwgdGhlIGVudHJ5IHBvaW50cyBhbmQgY29udHJvbCBtZWNoYW5pc21zLlxuXG5CZXlvbmQgdGhvc2UsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcGF0Y2ggYWZmZWN0cyB0aGUgdmFyaW91cyBtb25pdG9yaW5nIHN0cmF0ZWdpZXMsIHRoZSB0dXJuaW5nIG9mIHRoZXNlIHN0cmF0ZWdpZXMgb24gb3Igb2ZmLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBkaWcgaW50byBgZGFtb25fbHJ1X3NvcnRfdHVybmAgKGluIGBtbS9kYW1vbi9scnVfc29ydC5jYCksIGBkYW1vbl9yZWNsYWltX3R1cm5gIChpbiBgbW0vZGFtb24vcmVjbGFpbS5jYCksIGFuZCB0aGUgc3lzZnMgY29udHJvbCBmdW5jdGlvbiBgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZgIChpbiBgbW0vZGFtb24vc3lzZnMuY2ApLiBUaGVzZSBhcmUgY3JpdGljYWwgdG8gdHVuaW5nIERBTU9OJ3MgYmVoYXZpb3IgaW4gcmVzcG9uc2UgdG8gc3lzdGVtIGNoYW5nZXMuXG5cbkknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGJlaW5nIHNldC4gVGhlIG9idmlvdXMgb25lcyBhcmUgYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1JFQ0xBSU1gLCBhbmQgYERBTU9OX0xSVV9TT1JUYC4gVGhpcyBzZXQgb2Ygc2V0dGluZ3MgZ2l2ZXMgbWUgYW4gaW1tZWRpYXRlIGNsdWUgYXMgdG8gaG93IHRoZSBwYXRjaCBpcyBpbnRlbmRlZCB0byBvcGVyYXRlIG9uIGRpZmZlcmVudCBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlIHRoZSBjb2RlIHBhdGhzIHRoaXMgcGF0Y2ggbW9kaWZpZXMuXG5cbkZpbmFsbHksIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3VwcG9ydGluZyBjb25maWd1cmF0aW9ucy4gVGhlIGBzYW1wbGVzL2RhbW9uL2AgZGlyZWN0b3J5IGlzIGFsd2F5cyBhIGdvb2QgcGxhY2UgdG8gY2hlY2sgZm9yIGV4YW1wbGVzIG9mIERBTU9OIHVzYWdlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBzYW1wbGVzIGFyZSBidWlsdCBhbmQgaWYgdGhleSByZXF1aXJlIGFueSBhZGRpdGlvbmFsIGNvbmZpZ3MgdG8gZW5hYmxlIHRoZW0uIFRoZWlyIGJ1aWxkIHByb2Nlc3MgbWlnaHQgZ2l2ZSBtZSBpbnNpZ2h0cyBpbnRvIGhvdyB0aGUgcGF0Y2ggYWx0ZXJzIERBTU9OJ3MgZGVwbG95bWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk3OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxODoyNzowNS43NDA2NjcwNjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ3MjExMzIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQU1QTEVfREFNT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxODoyNzowNS44MzUzOTg3MjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDU5Njc4MzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIERBTU9OJ3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBEQU1PTi4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCBhIGNvbW1vbiBwcmFjdGljZSwgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZXMuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIGNhbmRpZGF0ZXM6IGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGFuZCBgc2FtcGxlcy9LY29uZmlnYC4gVGhlc2UgYXJlIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgZGVmaW5pdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dCB0aGF0IGdvdmVybiB3aGV0aGVyIERBTU9OIGNhbiBiZSBidWlsdCBhbmQgaG93IGl0IGJlaGF2ZXMuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgdGhlIGBDT05GSUdfREFNT05gIHN5bWJvbCwgYW55IGFzc29jaWF0ZWQgc3ViLW9wdGlvbnMsIGFuZCB0aGVpciBkZWZhdWx0IHZhbHVlcy4gVGhlIHNhbXBsZXMgZGlyZWN0b3JpZXMgYXJlIHVzdWFsbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIHF1aWNrbHkgYXNzZXNzIGF2YWlsYWJsZSBvcHRpb25zIGFuZCBmaW5kIHVzYWdlIGV4YW1wbGVzLiBJZiB0aGF0IGRvZXNuJ3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24sIEkgd291bGQgYmVnaW4gc2VhcmNoaW5nIHRocm91Z2ggdGhlIGtlcm5lbCBzb3VyY2UgY29kZSBmb3IgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjU5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTg6Mjc6MTAuMjk1MDc5ODUyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDI4NjY4MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREFNT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxODoyNzoxMC43NzkzNzI0ODVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU5MTIyODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipNYWtlZmlsZSBFeHBsb3JhdGlvbiBmb3IgQ29udGV4dCoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBoZXJlIGlzIHRvIHF1aWNrbHkgZ2FpbiBjb250ZXh0IG9uIGhvdyB0aGlzIHByb2plY3QsIG9yIHBlcmhhcHMgYSByZWxhdGVkIGV4YW1wbGUsIGlzIHN0cnVjdHVyZWQgZnJvbSBhIGJ1aWxkIHBlcnNwZWN0aXZlLiBJJ20gaW1tZWRpYXRlbHkgcmVhY2hpbmcgZm9yIHRoZSBgTWFrZWZpbGVgcyDigJMgc3BlY2lmaWNhbGx5LCBlaXRoZXIgaW4gdGhlIGBzYW1wbGVzYCBkaXJlY3RvcnkgZGlyZWN0bHksIG9yLCBpZiB0aGVyZSdzIGEgc3BlY2lhbGl6ZWQgZGVtbyBvciBEYW1vbi1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgdGhlIGBzYW1wbGVzL2RhbW9uL01ha2VmaWxlYC4gVGhpcyBwb2ludHMgdG93YXJkcyBhIGRlc2lyZSB0byBzZWUgdGhlIGJ1aWxkIHN5c3RlbSBhbmQgZGVwZW5kZW5jaWVzIGluIGFjdGlvbi4gSSdtIGxpa2VseSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBjb21waWxlciBmbGFncywgbGlua2luZyBvcHRpb25zLCBpbmNsdWRlZCBoZWFkZXJzLCBhbmQgdGhlIG92ZXJhbGwgY29tcGlsYXRpb24gZmxvdy4gRXhhbWluaW5nIHRoZSBNYWtlZmlsZSB3aWxsIGdpdmUgYSBzdHJvbmcgdW5kZXJzdGFuZGluZyBvZiB0aGUgXCJ3aGF0IGFuZCBob3dcIiBvZiB0aGUgcHJvamVjdCB3aXRob3V0IGhhdmluZyB0byBkZWVwIGRpdmUgaW50byBjb2RlLiBUaGlzIGlzIGEgY29tbW9uIGFuZCBlZmZpY2llbnQgd2F5IHRvIHF1aWNrbHkgZ2V0IGEgaGlnaC1sZXZlbCBvdmVydmlldy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkyNywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDE4OjI3OjEzLjgzODQ5NzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjQ3OTg1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEQU1PTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzYW1wbGVzL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX1NBTVBMRVNfUlVTVClcXHRcXHQrPSBydXN0L1xcbnNhbXBsZXMvTWFrZWZpbGU6NDM6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9XU1NFKVxcdFxcdCs9IGRhbW9uL1xcbnNhbXBsZXMvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9QUkNMKVxcdFxcdCs9IGRhbW9uL1xcbnNhbXBsZXMvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9NVElFUilcXHQrPSBkYW1vbi9cXG5zYW1wbGVzL01ha2VmaWxlLTQ2LW9iai0kKENPTkZJR19TQU1QTEVfSFVOR19UQVNLKVxcdFxcdCs9IGh1bmdfdGFzay9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTg6Mjc6MTMuOTc0OTg1OTE5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzAyNDczOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZyBzeW1ib2xzOlxuXG4qKkRlY29uc3RydWN0aW5nIERhbW9uIFNhbXBsZSBDb25maWd1cmF0aW9ucyoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBDT05GSUdfU0FNUExFX0RBTU9OX1dTU0VgLCBgQ09ORklHX1NBTVBMRV9EQU1PTl9QUkNMYCwgYW5kIGBDT05GSUdfU0FNUExFX0RBTU9OX01USUVSYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgdGhlc2UgYXJlIGNsZWFybHkgcmVsYXRlZCB0byB0aGUgREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3IpIGZyYW1ld29yaywgYW5kIHRoZXkncmUgbGlrZWx5IHNhbXBsZSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGVzZSBzYW1wbGVzIGFyZSBkb2luZy4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBsb2NhdGUgd2hlcmUgdGhlc2UgY29uZmlndXJhdGlvbiBzeW1ib2xzIGFyZSBhY3R1YWxseSBkZWZpbmVkLiBUaGF0J2xsIHByb3ZpZGUgdGhlIGNydWNpYWwgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgYCNpZmRlZmAgY29uZGl0aW9ucyBvciB0aGUgZGVmYXVsdCB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZW0gd2lsbCBiZSBrZXkgdG8gZGVjaXBoZXJpbmcgdGhlaXIgcHVycG9zZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIGFuZCB0aGUgb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggZWFjaCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyOTgsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxODoyNzoxNy4yNDUyMzY0NDhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MjI3MjE3NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNBTVBMRV9EQU1PTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnPTM9bWVudSBcXFwiREFNT04gU2FtcGxlc1xcXCJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctNC1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6NTpjb25maWcgU0FNUExFX0RBTU9OX1dTU0VcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctNi1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciB3b3JraW5nIHNldCBzaXplIGVzdGltYXRpb25cXFwiXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMTYtXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjE3OmNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0xOC1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlIHJlY2xhbWF0aW9uXFxcIlxcbi0tXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTI5LVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMDpjb25maWcgU0FNUExFX0RBTU9OX01USUVSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxODoyNzoyMC4xNjc5NjM5NTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY5OTc3OTIzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgbmFpbCBkb3duIHRoaXMgZnV6emluZyB0YXJnZXQuIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGluIG1pbmQuIEknbGwgYWRkIHRoZXNlIHRvIHRoZSBsaXN0OiBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGBEQU1PTl9MUlVfU09SVGAsIGBTQU1QTEVfREFNT05fV1NTRWAsIGBTQU1QTEVfREFNT05fUFJDTGAsIGFuZCBgU0FNUExFX0RBTU9OX01USUVSYC4gR290dGEgYmUgY29tcHJlaGVuc2l2ZS5cblxuTm93LCBsZXQncyBxdWlja2x5IHJldmlldyB0aGUgY29yZSBEQU1PTiBmdW5jdGlvbnMgdGhlbXNlbHZlcy4gSSdtIHRoaW5raW5nOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fc3RvcGAsIGBkYW1vbl9jYWxsYCwgYGRhbW9uX2xydV9zb3J0X3R1cm5gLCBgZGFtb25fcmVjbGFpbV90dXJuYCwgYGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmYCwgYGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydGAsIGBkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcGAsIGBkYW1vbl9zYW1wbGVfcHJjbF9zdGFydGAsIGFuZCBgZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnRgLiBZdXAsIHRob3NlIGFsbCBsb29rIGxpa2UgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiBUaGVzZSBhcmUgdGhlIGxpZmVjeWNsZSBob29rcy5cblxuQWxyaWdodCwgdGltZSBmb3IgYSBzYW5pdHkgY2hlY2sgb24gdGhpcyBwYXJ0aWN1bGFyIHBhdGNoIGFuZCB3aGV0aGVyIGl0J3MgdHJ1bHkgYFdvcnRoRnV6emluZ2AuIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgY29yZSBEQU1PTiBsb2dpYywgc3BlY2lmaWNhbGx5IGhvdyBgZGFtb25fc3RvcGAgaXMgaGFuZGxlZCAoaW5jbHVkaW5nIGl0cyByZXR1cm4gdHlwZSkgYW5kIGFsc28gbWFraW5nIGNoYW5nZXMgdG8gdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiBgZGFtb25fc3RhcnRgIGFuZCBgZGFtb25fY2FsbGAuIENydWNpYWxseSwgdGhpcyBhZmZlY3RzICpmdW5jdGlvbmFsKiBsb2dpYy4gVGhpcyBpcyBjb2RlIHRoYXQncyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHRocm91Z2ggc3lzZnMgb3IgYnkgbG9hZGluZyBtb2R1bGVzLiBTbywgeWVhaCwgdGhpcyBpcyBkZWZpbml0ZWx5IGEgZ29vZCB0YXJnZXQuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cblRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhlIHBhdGNoIHVwZGF0ZXMgdGhlIERBTU9OIHN1YnN5c3RlbSdzIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyAoYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX3N0b3BgLCBhbmQgYGRhbW9uX2NhbGxgKSBhbmQgdGhlbiBjYXNjYWRlcyB0aHJvdWdoIHRoZWlyIHJlc3BlY3RpdmUgY2FsbCBzaXRlcyB3aXRoaW4gYG1tL2RhbW9uL2AgYW5kIGBzYW1wbGVzL2RhbW9uL2AuIFRoZXNlIGFyZSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCByZWFjaCBrZXJuZWwgY29kZSwgc28gZnV6emluZyBpcyB3YXJyYW50ZWQuIFJpZ2h0LCBJIHRoaW5rIEkgaGF2ZSBldmVyeXRoaW5nLiBUaW1lIHRvIHByZXBhcmUgdGhlIGZpbmFsIHJlc3BvbnNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzMxLCJPdXRwdXRUb2tlbnMiOjI1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxODoyNzoyNy44Njc3NDc0MDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzUyMTk0NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9XU1NFXCIsXG4gICAgXCJTQU1QTEVfREFNT05fUFJDTFwiLFxuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX3N0b3BcIixcbiAgICBcImRhbW9uX2NhbGxcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X3R1cm5cIixcbiAgICBcImRhbW9uX3JlY2xhaW1fdHVyblwiLFxuICAgIFwiZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZcIixcbiAgICBcImRhbW9uX3NhbXBsZV9tdGllcl9zdGFydFwiLFxuICAgIFwiZGFtb25fc2FtcGxlX210aWVyX3N0b3BcIixcbiAgICBcImRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfd3NzZV9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEQU1PTiBzdWJzeXN0ZW0ncyBjb3JlIGxpZmVjeWNsZSBmdW5jdGlvbnMgKGRhbW9uX3N0YXJ0LCBkYW1vbl9zdG9wLCBkYW1vbl9jYWxsKSBhbmQgdXBkYXRlcyB0aGVpciBjYWxsZXJzIGFjcm9zcyBtbS9kYW1vbi8gYW5kIHNhbXBsZXMvZGFtb24vLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1JFQ0xBSU1cIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVfREFNT05fV1NTRVwiLFxuICAgIFwiU0FNUExFX0RBTU9OX1BSQ0xcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9NVElFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zdG9wXCIsXG4gICAgXCJkYW1vbl9jYWxsXCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF90dXJuXCIsXG4gICAgXCJkYW1vbl9yZWNsYWltX3R1cm5cIixcbiAgICBcImRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmXCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnRcIixcbiAgICBcImRhbW9uX3NhbXBsZV9tdGllcl9zdG9wXCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfcHJjbF9zdGFydFwiLFxuICAgIFwiZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFNT04gc3Vic3lzdGVtJ3MgY29yZSBsaWZlY3ljbGUgZnVuY3Rpb25zIChkYW1vbl9zdGFydCwgZGFtb25fc3RvcCwgZGFtb25fY2FsbCkgYW5kIHVwZGF0ZXMgdGhlaXIgY2FsbGVycyBhY3Jvc3MgbW0vZGFtb24vIGFuZCBzYW1wbGVzL2RhbW9uLy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUga2VybmVsIGNvZGUsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbjsgf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-04 18:16:54 +0000 UTC FinishedAt: 2026-07-04 18:27:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e031e55776cf9193b4720a253e92539ca536d224", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT", "SAMPLE_DAMON_WSSE", "SAMPLE_DAMON_PRCL", "SAMPLE_DAMON_MTIER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e031e55776cf9193b4720a253e92539ca536d224", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT", "SAMPLE_DAMON_WSSE", "SAMPLE_DAMON_PRCL", "SAMPLE_DAMON_MTIER" ], "series_id": "d7f04137-ccc1-4bf3-a567-37b838e6758e" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_start", "damon_stop", "damon_call", "damon_lru_sort_turn", "damon_reclaim_turn", "damon_sysfs_turn_damon_off", "damon_sample_mtier_start", "damon_sample_mtier_stop", "damon_sample_prcl_start", "damon_sample_wsse_start" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1dTU0UmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1BSQ0wmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jYWxsJiMzNDssCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X3R1cm4mIzM0OywKICAgICYjMzQ7ZGFtb25fcmVjbGFpbV90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmJiMzNDssCiAgICAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfcHJjbF9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFNT04gc3Vic3lzdGVtJiMzOTtzIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyAoZGFtb25fc3RhcnQsIGRhbW9uX3N0b3AsIGRhbW9uX2NhbGwpIGFuZCB1cGRhdGVzIHRoZWlyIGNhbGxlcnMgYWNyb3NzIG1tL2RhbW9uLyBhbmQgc2FtcGxlcy9kYW1vbi8uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDk3ZDEyZDkzYzdhMDI2MmZmNjUyOTNhOTViYjIxMTJmZDUwNWU2N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDQgMTg6MjY6NTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5pbmRleCA4MDVlMDg5ZmY0ZjJmNi4uMWQxMGYyOTFiMTZlZjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuQEAgLTEwNjcsNyAmIzQzOzEwNjcsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBkYW1vbl9tYXhfbnJfYWNjZXNzZXMoY29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRyc1xuIFxuIGJvb2wgZGFtb25faW5pdGlhbGl6ZWQodm9pZCk7XG4gaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpO1xuLWludCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cyk7XG4mIzQzO3ZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpO1xuIGJvb2wgZGFtb25faXNfcnVubmluZyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuIFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggYzZmYzM1YmU2MzNiM2EuLjljMTVkNDQwODRhZjQ0IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0xODM2LDggJiM0MzsxODM2LDEwIEBAIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3R4czsgaSYjNDM7JiM0MzspIHtcbiBcdFx0ZXJyID0gX19kYW1vbl9zdGFydChjdHhzW2ldKTtcbi1cdFx0aWYgKGVycilcbiYjNDM7XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0ZGFtb25fc3RvcChjdHhzLCBpKTtcbiBcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdFx0bnJfcnVubmluZ19jdHhzJiM0MzsmIzQzOztcbiBcdH1cbiBcdGlmIChleGNsdXNpdmUgXHUwMDI2XHUwMDI2IG5yX3J1bm5pbmdfY3R4cylcbkBAIC0xODUwLDEwICYjNDM7MTg1Miw4IEBAIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxuIC8qXG4gICogX19kYW1vbl9zdG9wKCkgLSBTdG9wcyBtb25pdG9yaW5nIG9mIGEgZ2l2ZW4gY29udGV4dC5cbiAgKiBAY3R4Olx0bW9uaXRvcmluZyBjb250ZXh0XG4tICpcbi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4gICovXG4tc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuJiM0MztzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHtcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrO1xuIFxuQEAgLTE4NjMsMzEgJiM0MzsxODYzLDIzIEBAIHN0YXRpYyBpbnQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiBcdFx0Z2V0X3Rhc2tfc3RydWN0KHRzayk7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNla2RhbW9uZF9sb2NrKTtcbiBcdFx0a3RocmVhZF9zdG9wX3B1dCh0c2spO1xuLVx0XHRyZXR1cm4gMDtcbiYjNDM7XHRcdHJldHVybjtcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNla2RhbW9uZF9sb2NrKTtcbi1cbi1cdHJldHVybiAtRVBFUk07XG4gfVxuIFxuIC8qKlxuICAqIGRhbW9uX3N0b3AoKSAtIFN0b3BzIHRoZSBtb25pdG9yaW5ncyBmb3IgYSBnaXZlbiBncm91cCBvZiBjb250ZXh0cy5cbiAgKiBAY3R4czpcdGFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RvcCBtb25pdG9yaW5nXG4gICogQG5yX2N0eHM6XHRzaXplIG9mIEBjdHhzXG4tICpcbi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4gICovXG4taW50IGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxuJiM0Mzt2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxuIHtcbi1cdGludCBpLCBlcnIgPSAwO1xuJiM0MztcdGludCBpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3R4czsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9jdHhzOyBpJiM0MzsmIzQzOylcbiBcdFx0LyogbnJfcnVubmluZ19jdHhzIGlzIGRlY3JlbWVudGVkIGluIGtkYW1vbmRfZm4gKi9cbi1cdFx0ZXJyID0gX19kYW1vbl9zdG9wKGN0eHNbaV0pO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGJyZWFrO1xuLVx0fVxuLVx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdF9fZGFtb25fc3RvcChjdHhzW2ldKTtcbiB9XG4gXG4gLyoqXG5AQCAtMTk0NCw2ICYjNDM7MTkzNiw4IEBAIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4gICogQGN0eCBoYXMgc3VjY2VlZGVkLiAgT3RoZXJ3aXNlLCB0aGlzIGZ1bmN0aW9uIGNvdWxkIGZhbGwgaW50byBhbiBpbmRlZmluaXRlXG4gICogd2FpdC5cbiAgKlxuJiM0MzsgKiBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZmFpbGVkLCB0aGUgQGN0eCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0b3BwZWQuXG4mIzQzOyAqXG4gICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuICAqL1xuIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbkBAIC0xOTU2LDcgJiM0MzsxOTUwLDcgQEAgaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZjdHgtXHUwMDNlY2FsbF9jb250cm9sc19sb2NrKTtcbiBcdGlmIChjdHgtXHUwMDNlY2FsbF9jb250cm9sc19vYnNvbGV0ZSkge1xuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG4tXHRcdHJldHVybiAtRUNBTkNFTEVEO1xuJiM0MztcdFx0Z290byBjYW5jZWxlZDtcbiBcdH1cbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y29udHJvbC1cdTAwM2VsaXN0LCBcdTAwMjZjdHgtXHUwMDNlY2FsbF9jb250cm9scyk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG5AQCAtMTk2NCw4ICYjNDM7MTk1OCwxMyBAQCBpbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpXG4gXHRcdHJldHVybiAwO1xuIFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZjb250cm9sLVx1MDAzZWNvbXBsZXRpb24pO1xuIFx0aWYgKGNvbnRyb2wtXHUwMDNlY2FuY2VsZWQpXG4tXHRcdHJldHVybiAtRUNBTkNFTEVEO1xuJiM0MztcdFx0Z290byBjYW5jZWxlZDtcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7Y2FuY2VsZWQ6XG4mIzQzO1x0X19kYW1vbl9zdG9wKGN0eCk7XG4mIzQzO1x0cmV0dXJuIC1FQ0FOQ0VMRUQ7XG4mIzQzO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuaW5kZXggMzJmNDE0OTFiNzI2YjIuLmRiZDA4ZjY5MWQ4YTU5IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuQEAgLTQxNCw4ICYjNDM7NDE0LDEwIEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfdHVybihib29sIG9uKVxuIHtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAoIW9uKVxuLVx0XHRyZXR1cm4gZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuJiM0MztcdGlmICghb24pIHtcbiYjNDM7XHRcdGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiBcbiBcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcbiBcdGlmIChlcnIpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXG5pbmRleCAxMWI3MGQwYTlhNmYwYS4uNGYwMTQzMDM4NzUwNGQgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9yZWNsYWltLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3JlY2xhaW0uY1xuQEAgLTMzNyw4ICYjNDM7MzM3LDEwIEBAIHN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV90dXJuKGJvb2wgb24pXG4ge1xuIFx0aW50IGVycjtcbiBcbi1cdGlmICghb24pXG4tXHRcdHJldHVybiBkYW1vbl9zdG9wKFx1MDAyNmN0eCwgMSk7XG4mIzQzO1x0aWYgKCFvbikge1xuJiM0MztcdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuIFxuIFx0ZXJyID0gZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKCk7XG4gXHRpZiAoZXJyKVxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLmMgYi9tbS9kYW1vbi9zeXNmcy5jXG5pbmRleCA2NzEwYjZkMDE5YmY1My4uNjliOTc1ZGU1MDhlNzIgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9zeXNmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy5jXG5AQCAtMjI5NSwxMiAmIzQzOzIyOTUsMTMgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcbiB7XG4gXHRpZiAoIWtkYW1vbmQtXHUwMDNlZGFtb25fY3R4KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdHJldHVybiBkYW1vbl9zdG9wKFx1MDAyNmtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCAxKTtcbiYjNDM7XHRkYW1vbl9zdG9wKFx1MDAyNmtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCAxKTtcbiBcdC8qXG4gXHQgKiBUbyBhbGxvdyB1c2VycyBzaG93IGZpbmFsIG1vbml0b3JpbmcgcmVzdWx0cyBvZiBhbHJlYWR5IHR1cm5lZC1vZmZcbiBcdCAqIERBTU9OLCB3ZSBmcmVlIGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4IGluIG5leHRcbiBcdCAqIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oKSwgb3Iga2RhbW9uZHNfbnJfc3RvcmUoKVxuIFx0ICovXG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfZGFtb25fY2FsbChpbnQgKCpmbikodm9pZCAqZGF0YSksXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9tdGllci5jIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5pbmRleCBlNTY3ZjRlZGQ4MGVhNy4uYWM5YzI0YjkyZWFkODQgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL210aWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuQEAgLTE5Myw4ICYjNDM7MTkzLDYgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcbiBcdGlmICghZXJyKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGlmIChkYW1vbl9pc19ydW5uaW5nKGN0eHNbMF0pKVxuLVx0XHRkYW1vbl9zdG9wKGN0eHMsIDEpO1xuIFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1swXSk7XG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzFdKTtcbiBcdHJldHVybiBlcnI7XG5AQCAtMjAyLDggJiM0MzsyMDAsNyBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKVxuIFxuIHN0YXRpYyB2b2lkIGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wKHZvaWQpXG4ge1xuLVx0ZGFtb25fc3RvcChjdHhzLCAxKTtcbi1cdGRhbW9uX3N0b3AoXHUwMDI2Y3R4c1sxXSwgMSk7XG4mIzQzO1x0ZGFtb25fc3RvcChjdHhzLCAyKTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMF0pO1xuIFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1sxXSk7XG4gfVxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vcHJjbC5jIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbmluZGV4IGVkZWFlMTQ1YzRhOGFmLi44NDIwOTliZDYyMjg2MSAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vcHJjbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL2RhbW9uL3ByY2wuY1xuQEAgLTExMywxMCAmIzQzOzExMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQodm9pZClcbiBcbiBcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcbiBcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuJiM0MztcdGlmIChlcnIpXG4gXHRcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XG4tXHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3dzc2UuYyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXG5pbmRleCBmZjVlOGE4OTBmNDQ4Yy4uMzdmZDVkYTIwMTU4ODUgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3dzc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi93c3NlLmNcbkBAIC05MywxMCAmIzQzOzkzLDggQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCh2b2lkKVxuIFx0fVxuIFx0cmVwZWF0X2NhbGxfY29udHJvbC5kYXRhID0gY3R4O1xuIFx0ZXJyID0gZGFtb25fY2FsbChjdHgsIFx1MDAyNnJlcGVhdF9jYWxsX2NvbnRyb2wpO1xuLVx0aWYgKGVycikge1xuLVx0XHRkYW1vbl9zdG9wKFx1MDAyNmN0eCwgMSk7XG4mIzQzO1x0aWYgKGVycilcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbi1cdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1dTU0UmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1BSQ0wmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jYWxsJiMzNDssCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X3R1cm4mIzM0OywKICAgICYjMzQ7ZGFtb25fcmVjbGFpbV90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmJiMzNDssCiAgICAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfcHJjbF9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFNT04gc3Vic3lzdGVtJiMzOTtzIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyAoZGFtb25fc3RhcnQsIGRhbW9uX3N0b3AsIGRhbW9uX2NhbGwpIGFuZCB1cGRhdGVzIHRoZWlyIGNhbGxlcnMgYWNyb3NzIG1tL2RhbW9uLyBhbmQgc2FtcGxlcy9kYW1vbi8uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwOTdkMTJkOTNjN2EwMjYyZmY2NTI5M2E5NWJiMjExMmZkNTA1ZTY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgNCAxODoyNjo1MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaAppbmRleCA4MDVlMDg5ZmY0ZjJmNi4uMWQxMGYyOTFiMTZlZjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmgKQEAgLTEwNjcsNyAmIzQzOzEwNjcsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBkYW1vbl9tYXhfbnJfYWNjZXNzZXMoY29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycwogCiBib29sIGRhbW9uX2luaXRpYWxpemVkKHZvaWQpOwogaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpOwotaW50IGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKTsKJiM0Mzt2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKTsKIGJvb2wgZGFtb25faXNfcnVubmluZyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpOwogaW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7CiAKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCBjNmZjMzViZTYzM2IzYS4uOWMxNWQ0NDA4NGFmNDQgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTE4MzYsOCAmIzQzOzE4MzYsMTAgQEAgaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpCiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgbnJfY3R4czsgaSYjNDM7JiM0MzspIHsKIAkJZXJyID0gX19kYW1vbl9zdGFydChjdHhzW2ldKTsKLQkJaWYgKGVycikKJiM0MzsJCWlmIChlcnIpIHsKJiM0MzsJCQlkYW1vbl9zdG9wKGN0eHMsIGkpOwogCQkJYnJlYWs7CiYjNDM7CQl9CiAJCW5yX3J1bm5pbmdfY3R4cyYjNDM7JiM0Mzs7CiAJfQogCWlmIChleGNsdXNpdmUgJmFtcDsmYW1wOyBucl9ydW5uaW5nX2N0eHMpCkBAIC0xODUwLDEwICYjNDM7MTg1Miw4IEBAIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKQogLyoKICAqIF9fZGFtb25fc3RvcCgpIC0gU3RvcHMgbW9uaXRvcmluZyBvZiBhIGdpdmVuIGNvbnRleHQuCiAgKiBAY3R4Ogltb25pdG9yaW5nIGNvbnRleHQKLSAqCi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCiAgKi8KLXN0YXRpYyBpbnQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eCkKJiM0MztzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KQogewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrOwogCkBAIC0xODYzLDMxICYjNDM7MTg2MywyMyBAQCBzdGF0aWMgaW50IF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpCiAJCWdldF90YXNrX3N0cnVjdCh0c2spOwogCQltdXRleF91bmxvY2soJmFtcDtjdHgtJmd0O2tkYW1vbmRfbG9jayk7CiAJCWt0aHJlYWRfc3RvcF9wdXQodHNrKTsKLQkJcmV0dXJuIDA7CiYjNDM7CQlyZXR1cm47CiAJfQogCW11dGV4X3VubG9jaygmYW1wO2N0eC0mZ3Q7a2RhbW9uZF9sb2NrKTsKLQotCXJldHVybiAtRVBFUk07CiB9CiAKIC8qKgogICogZGFtb25fc3RvcCgpIC0gU3RvcHMgdGhlIG1vbml0b3JpbmdzIGZvciBhIGdpdmVuIGdyb3VwIG9mIGNvbnRleHRzLgogICogQGN0eHM6CWFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RvcCBtb25pdG9yaW5nCiAgKiBAbnJfY3R4czoJc2l6ZSBvZiBAY3R4cwotICoKLSAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4KICAqLwotaW50IGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKQomIzQzO3ZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpCiB7Ci0JaW50IGksIGVyciA9IDA7CiYjNDM7CWludCBpOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IG5yX2N0eHM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBucl9jdHhzOyBpJiM0MzsmIzQzOykKIAkJLyogbnJfcnVubmluZ19jdHhzIGlzIGRlY3JlbWVudGVkIGluIGtkYW1vbmRfZm4gKi8KLQkJZXJyID0gX19kYW1vbl9zdG9wKGN0eHNbaV0pOwotCQlpZiAoZXJyKQotCQkJYnJlYWs7Ci0JfQotCXJldHVybiBlcnI7CiYjNDM7CQlfX2RhbW9uX3N0b3AoY3R4c1tpXSk7CiB9CiAKIC8qKgpAQCAtMTk0NCw2ICYjNDM7MTkzNiw4IEBAIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpCiAgKiBAY3R4IGhhcyBzdWNjZWVkZWQuICBPdGhlcndpc2UsIHRoaXMgZnVuY3Rpb24gY291bGQgZmFsbCBpbnRvIGFuIGluZGVmaW5pdGUKICAqIHdhaXQuCiAgKgomIzQzOyAqIFdoZW4gdGhpcyBmdW5jdGlvbiBpcyBmYWlsZWQsIHRoZSBAY3R4IGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RvcHBlZC4KJiM0MzsgKgogICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgogICovCiBpbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpCkBAIC0xOTU2LDcgJiM0MzsxOTUwLDcgQEAgaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKQogCW11dGV4X2xvY2soJmFtcDtjdHgtJmd0O2NhbGxfY29udHJvbHNfbG9jayk7CiAJaWYgKGN0eC0mZ3Q7Y2FsbF9jb250cm9sc19vYnNvbGV0ZSkgewogCQltdXRleF91bmxvY2soJmFtcDtjdHgtJmd0O2NhbGxfY29udHJvbHNfbG9jayk7Ci0JCXJldHVybiAtRUNBTkNFTEVEOwomIzQzOwkJZ290byBjYW5jZWxlZDsKIAl9CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2NvbnRyb2wtJmd0O2xpc3QsICZhbXA7Y3R4LSZndDtjYWxsX2NvbnRyb2xzKTsKIAltdXRleF91bmxvY2soJmFtcDtjdHgtJmd0O2NhbGxfY29udHJvbHNfbG9jayk7CkBAIC0xOTY0LDggJiM0MzsxOTU4LDEzIEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbCkKIAkJcmV0dXJuIDA7CiAJd2FpdF9mb3JfY29tcGxldGlvbigmYW1wO2NvbnRyb2wtJmd0O2NvbXBsZXRpb24pOwogCWlmIChjb250cm9sLSZndDtjYW5jZWxlZCkKLQkJcmV0dXJuIC1FQ0FOQ0VMRUQ7CiYjNDM7CQlnb3RvIGNhbmNlbGVkOwogCXJldHVybiAwOwomIzQzOwomIzQzO2NhbmNlbGVkOgomIzQzOwlfX2RhbW9uX3N0b3AoY3R4KTsKJiM0MzsJcmV0dXJuIC1FQ0FOQ0VMRUQ7CiYjNDM7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmMKaW5kZXggMzJmNDE0OTFiNzI2YjIuLmRiZDA4ZjY5MWQ4YTU5IDEwMDY0NAotLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2xydV9zb3J0LmMKQEAgLTQxNCw4ICYjNDM7NDE0LDEwIEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfdHVybihib29sIG9uKQogewogCWludCBlcnI7CiAKLQlpZiAoIW9uKQotCQlyZXR1cm4gZGFtb25fc3RvcCgmYW1wO2N0eCwgMSk7CiYjNDM7CWlmICghb24pIHsKJiM0MzsJCWRhbW9uX3N0b3AoJmFtcDtjdHgsIDEpOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KIAogCWVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTsKIAlpZiAoZXJyKQpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jCmluZGV4IDExYjcwZDBhOWE2ZjBhLi40ZjAxNDMwMzg3NTA0ZCAxMDA2NDQKLS0tIGEvbW0vZGFtb24vcmVjbGFpbS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3JlY2xhaW0uYwpAQCAtMzM3LDggJiM0MzszMzcsMTAgQEAgc3RhdGljIGludCBkYW1vbl9yZWNsYWltX3R1cm4oYm9vbCBvbikKIHsKIAlpbnQgZXJyOwogCi0JaWYgKCFvbikKLQkJcmV0dXJuIGRhbW9uX3N0b3AoJmFtcDtjdHgsIDEpOwomIzQzOwlpZiAoIW9uKSB7CiYjNDM7CQlkYW1vbl9zdG9wKCZhbXA7Y3R4LCAxKTsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiAKIAllcnIgPSBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnMoKTsKIAlpZiAoZXJyKQpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmMKaW5kZXggNjcxMGI2ZDAxOWJmNTMuLjY5Yjk3NWRlNTA4ZTcyIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9zeXNmcy5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3N5c2ZzLmMKQEAgLTIyOTUsMTIgJiM0MzsyMjk1LDEzIEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmYoc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpCiB7CiAJaWYgKCFrZGFtb25kLSZndDtkYW1vbl9jdHgpCiAJCXJldHVybiAtRUlOVkFMOwotCXJldHVybiBkYW1vbl9zdG9wKCZhbXA7a2RhbW9uZC0mZ3Q7ZGFtb25fY3R4LCAxKTsKJiM0MzsJZGFtb25fc3RvcCgmYW1wO2tkYW1vbmQtJmd0O2RhbW9uX2N0eCwgMSk7CiAJLyoKIAkgKiBUbyBhbGxvdyB1c2VycyBzaG93IGZpbmFsIG1vbml0b3JpbmcgcmVzdWx0cyBvZiBhbHJlYWR5IHR1cm5lZC1vZmYKIAkgKiBEQU1PTiwgd2UgZnJlZSBrZGFtb25kLSZndDtkYW1vbl9jdHggaW4gbmV4dAogCSAqIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oKSwgb3Iga2RhbW9uZHNfbnJfc3RvcmUoKQogCSAqLwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKGludCAoKmZuKSh2b2lkICpkYXRhKSwKZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuYwppbmRleCBlNTY3ZjRlZGQ4MGVhNy4uYWM5YzI0YjkyZWFkODQgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL2RhbW9uL210aWVyLmMKQEAgLTE5Myw4ICYjNDM7MTkzLDYgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZCkKIAlpZiAoIWVycikKIAkJcmV0dXJuIDA7CiAKLQlpZiAoZGFtb25faXNfcnVubmluZyhjdHhzWzBdKSkKLQkJZGFtb25fc3RvcChjdHhzLCAxKTsKIAlkYW1vbl9kZXN0cm95X2N0eChjdHhzWzBdKTsKIAlkYW1vbl9kZXN0cm95X2N0eChjdHhzWzFdKTsKIAlyZXR1cm4gZXJyOwpAQCAtMjAyLDggJiM0MzsyMDAsNyBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKQogCiBzdGF0aWMgdm9pZCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCh2b2lkKQogewotCWRhbW9uX3N0b3AoY3R4cywgMSk7Ci0JZGFtb25fc3RvcCgmYW1wO2N0eHNbMV0sIDEpOwomIzQzOwlkYW1vbl9zdG9wKGN0eHMsIDIpOwogCWRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMF0pOwogCWRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMV0pOwogfQpkaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9wcmNsLmMgYi9zYW1wbGVzL2RhbW9uL3ByY2wuYwppbmRleCBlZGVhZTE0NWM0YThhZi4uODQyMDk5YmQ2MjI4NjEgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvZGFtb24vcHJjbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jCkBAIC0xMTMsMTAgJiM0MzsxMTMsOCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0KHZvaWQpCiAKIAlyZXBlYXRfY2FsbF9jb250cm9sLmRhdGEgPSBjdHg7CiAJZXJyID0gZGFtb25fY2FsbChjdHgsICZhbXA7cmVwZWF0X2NhbGxfY29udHJvbCk7Ci0JaWYgKGVycikgewotCQlkYW1vbl9zdG9wKCZhbXA7Y3R4LCAxKTsKJiM0MzsJaWYgKGVycikKIAkJZGFtb25fZGVzdHJveV9jdHgoY3R4KTsKLQl9CiAJcmV0dXJuIGVycjsKIH0KIApkaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi93c3NlLmMgYi9zYW1wbGVzL2RhbW9uL3dzc2UuYwppbmRleCBmZjVlOGE4OTBmNDQ4Yy4uMzdmZDVkYTIwMTU4ODUgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvZGFtb24vd3NzZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jCkBAIC05MywxMCAmIzQzOzkzLDggQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCh2b2lkKQogCX0KIAlyZXBlYXRfY2FsbF9jb250cm9sLmRhdGEgPSBjdHg7CiAJZXJyID0gZGFtb25fY2FsbChjdHgsICZhbXA7cmVwZWF0X2NhbGxfY29udHJvbCk7Ci0JaWYgKGVycikgewotCQlkYW1vbl9zdG9wKCZhbXA7Y3R4LCAxKTsKJiM0MzsJaWYgKGVycikKIAkJZGFtb25fZGVzdHJveV9jdHgoY3R4KTsKLQl9CiAJcmV0dXJuIGVycjsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAxODoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDY2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIFN1YnN5c3RlbSBQYXRjaCBSZXZpZXcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgZmxvdyB3aXRoaW4gREFNT04uIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGNoYW5nZXMgdGhlIHJldHVybiB0eXBlIG9mIGJvdGggYGRhbW9uX3N0b3BgIGFuZCBgX19kYW1vbl9zdG9wYCBmcm9tIGBpbnRgIHRvIGB2b2lkYC4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2UgYmVjYXVzZSBpdCByZW1vdmVzIHRoZSBkaXJlY3QgYWJpbGl0eSBmb3IgdGhlc2UgZnVuY3Rpb25zIHRvIHNpZ25hbCBhbiBlcnJvciBzdGF0dXMgdmlhIGEgcmV0dXJuIHZhbHVlLiBJbnN0ZWFkLCBlcnJvciBoYW5kbGluZyBsaWtlbHkgcmVsaWVzIG9uIG90aGVyIG1lY2hhbmlzbXMsIHBvdGVudGlhbGx5IGdsb2JhbCB2YXJpYWJsZXMsIG9yIHBvc3NpYmx5IHVzaW5nIHRoZSBjb250ZXh0IGBjdHhgIGl0c2VsZi4KCkkgc2VlIHRoYXQgYF9fZGFtb25fc3RvcChjdHgpYCBpcyBub3cgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGRhbW9uX2NhbGxgIHdoZW4gYSBjYWxsIGlzIGNhbmNlbGxlZC4gQWxzbywgaW4gYGRhbW9uX3N0YXJ0YCwgdGhlIHBhdGNoIGlzIHVwZGF0ZWQgdG8gY2FsbCBgZGFtb25fc3RvcChjdHhzLCBpKWAgYW5kIGJyZWFrIGlmIGBfX2RhbW9uX3N0YXJ0YCBmYWlscy4gSXQmIzM5O3MgYSBjYXNjYWRpbmcgY2hhbmdlLCBpbXBhY3Rpbmcgc2V2ZXJhbCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhlIGVycm9yIGhhbmRsaW5nIGluIGBkYW1vbl9zdGFydGAgaXMgc3RpbGwgaW50YWN0LCBjYWxsaW5nIGBkYW1vbl9zdG9wYCB3aGVuIGBfX2RhbW9uX3N0YXJ0YCBmYWlscy4KClRoZSBwYXRjaCBpbmNsdWRlcyB1cGRhdGVzIHRvIGNhbGxlcnMgaW4gdmFyaW91cyBhcmVhcywgaW5jbHVkaW5nIGBscnVfc29ydC5jYCwgYHJlY2xhaW0uY2AsIGBzeXNmcy5jYCwgYW5kIHNldmVyYWwgc2FtcGxlIG1vZHVsZXMuIFRoaXMgd2lkZXNwcmVhZCBpbXBhY3QgaXMgaW1wb3J0YW50IHRvIG5vdGUgYW5kIHJlcXVpcmVzIHRob3JvdWdoIHJldmlldyB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3Igc3VidGxlIGJ1Z3MgYXJlIGludHJvZHVjZWQuCgpBcyBhIGNvcmUga2VybmVsIGZlYXR1cmUsIERBTU9OIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBJdCYjMzk7cyBjb21tb25seSBjb25maWd1cmVkIChgQ09ORklHX0RBTU9OYCwgYENPTkZJR19EQU1PTl9TWVNGU2AsIGBDT05GSUdfREFNT05fUkVDTEFJTWAsIGBDT05GSUdfREFNT05fTFJVX1NPUlRgKSBhbmQgdXRpbGl6ZWQgYnkgbW9kdWxlcyBhbmQgZXhwb3NlZCB0aHJvdWdoIGludGVyZmFjZXMgbGlrZSBzeXNmcyBhbmQgZGVidWdmcywgdGhlcmVmb3JlLCBhIGNoYW5nZSBvZiB0aGlzIG5hdHVyZSBjb3VsZCBwb3RlbnRpYWxseSBoYXZlIHdpZGVyIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGlzIGNoYW5nZSBpcyBzYWZlLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHZhbGlkaXR5IG9mIHRoaXMgY2hhbmdlLiBJJiMzOTtsbCBuZWVkIHRvIHJ1biBzb21lIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGlzIG9rYXksIGFuZCBJIHdpbGwgcHJvYmFibHkgYWxzbyB3YW50IHRvIHVzZSB0b29scyB0byB2ZXJpZnkgdGhlIGNoYW5nZS4gSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhlIGVycm9yIGNvZGVzIGFyZSBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTg6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEYXRhIEFjY2VzcyBNb25pdG9yaW5nXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnLTQtXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTQtXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL0tjb25maWctMTYtXHRib29sIFwmIzM0O0NoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0yNS1cbm1tL2RhbW9uL0tjb25maWc6MjY6Y29uZmlnIERBTU9OX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctMjctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcbm1tL2RhbW9uL0tjb25maWctNjktXHRib29sIFwmIzM0O0RBTU9OIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNzUtXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctODctXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXG5tbS9kYW1vbi9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMDctXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMDktXHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxubW0vZGFtb24vS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAxODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTc5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2ggZm9yIENvcmUgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgbWFraW5nIHNvbWUgc2lnbmlmaWNhbnQgY2hhbmdlcyB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbS4gTXkgaW5pdGlhbCBmb2N1cyBoYXMgdG8gYmUgb24gdGhlIGNvcmUgY29udHJvbCBmdW5jdGlvbnM6IGBkYW1vbl9zdG9wYCwgYGRhbW9uX3N0YXJ0YCwgYW5kIGBkYW1vbl9jYWxsYCB3aXRoaW4gYG1tL2RhbW9uL2NvcmUuY2AuIFRoZXNlIGFyZSB0aGUgYmVkcm9jayBvZiB0aGUgd2hvbGUgZHluYW1pYyBhZGRyZXNzIG1vbml0b3Jpbmcgc2V0dXAsIHRoZSBlbnRyeSBwb2ludHMgYW5kIGNvbnRyb2wgbWVjaGFuaXNtcy4KCkJleW9uZCB0aG9zZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBwYXRjaCBhZmZlY3RzIHRoZSB2YXJpb3VzIG1vbml0b3Jpbmcgc3RyYXRlZ2llcywgdGhlIHR1cm5pbmcgb2YgdGhlc2Ugc3RyYXRlZ2llcyBvbiBvciBvZmYuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGRpZyBpbnRvIGBkYW1vbl9scnVfc29ydF90dXJuYCAoaW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgKSwgYGRhbW9uX3JlY2xhaW1fdHVybmAgKGluIGBtbS9kYW1vbi9yZWNsYWltLmNgKSwgYW5kIHRoZSBzeXNmcyBjb250cm9sIGZ1bmN0aW9uIGBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZmAgKGluIGBtbS9kYW1vbi9zeXNmcy5jYCkuIFRoZXNlIGFyZSBjcml0aWNhbCB0byB0dW5pbmcgREFNT04mIzM5O3MgYmVoYXZpb3IgaW4gcmVzcG9uc2UgdG8gc3lzdGVtIGNoYW5nZXMuCgpJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgYmVpbmcgc2V0LiBUaGUgb2J2aW91cyBvbmVzIGFyZSBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGFuZCBgREFNT05fTFJVX1NPUlRgLiBUaGlzIHNldCBvZiBzZXR0aW5ncyBnaXZlcyBtZSBhbiBpbW1lZGlhdGUgY2x1ZSBhcyB0byBob3cgdGhlIHBhdGNoIGlzIGludGVuZGVkIHRvIG9wZXJhdGUgb24gZGlmZmVyZW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlIHRoZSBjb2RlIHBhdGhzIHRoaXMgcGF0Y2ggbW9kaWZpZXMuCgpGaW5hbGx5LCBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHN1cHBvcnRpbmcgY29uZmlndXJhdGlvbnMuIFRoZSBgc2FtcGxlcy9kYW1vbi9gIGRpcmVjdG9yeSBpcyBhbHdheXMgYSBnb29kIHBsYWNlIHRvIGNoZWNrIGZvciBleGFtcGxlcyBvZiBEQU1PTiB1c2FnZS4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2Ugc2FtcGxlcyBhcmUgYnVpbHQgYW5kIGlmIHRoZXkgcmVxdWlyZSBhbnkgYWRkaXRpb25hbCBjb25maWdzIHRvIGVuYWJsZSB0aGVtLiBUaGVpciBidWlsZCBwcm9jZXNzIG1pZ2h0IGdpdmUgbWUgaW5zaWdodHMgaW50byBob3cgdGhlIHBhdGNoIGFsdGVycyBEQU1PTiYjMzk7cyBkZXBsb3ltZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNBTVBMRV9EQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTg6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY1OQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgREFNT04mIzM5O3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIERBTU9OLiBNeSBmaXJzdCBpbnN0aW5jdCwgYW5kIGEgY29tbW9uIHByYWN0aWNlLCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIGNhbmRpZGF0ZXM6IGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGFuZCBgc2FtcGxlcy9LY29uZmlnYC4gVGhlc2UgYXJlIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgZGVmaW5pdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dCB0aGF0IGdvdmVybiB3aGV0aGVyIERBTU9OIGNhbiBiZSBidWlsdCBhbmQgaG93IGl0IGJlaGF2ZXMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHRoZSBgQ09ORklHX0RBTU9OYCBzeW1ib2wsIGFueSBhc3NvY2lhdGVkIHN1Yi1vcHRpb25zLCBhbmQgdGhlaXIgZGVmYXVsdCB2YWx1ZXMuIFRoZSBzYW1wbGVzIGRpcmVjdG9yaWVzIGFyZSB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBxdWlja2x5IGFzc2VzcyBhdmFpbGFibGUgb3B0aW9ucyBhbmQgZmluZCB1c2FnZSBleGFtcGxlcy4gSWYgdGhhdCBkb2VzbiYjMzk7dCBwcm92aWRlIGVub3VnaCBpbmZvcm1hdGlvbiwgSSB3b3VsZCBiZWdpbiBzZWFyY2hpbmcgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBjb2RlIGZvciB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTg6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTg6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkyNwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKk1ha2VmaWxlIEV4cGxvcmF0aW9uIGZvciBDb250ZXh0KioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaGVyZSBpcyB0byBxdWlja2x5IGdhaW4gY29udGV4dCBvbiBob3cgdGhpcyBwcm9qZWN0LCBvciBwZXJoYXBzIGEgcmVsYXRlZCBleGFtcGxlLCBpcyBzdHJ1Y3R1cmVkIGZyb20gYSBidWlsZCBwZXJzcGVjdGl2ZS4gSSYjMzk7bSBpbW1lZGlhdGVseSByZWFjaGluZyBmb3IgdGhlIGBNYWtlZmlsZWBzIOKAkyBzcGVjaWZpY2FsbHksIGVpdGhlciBpbiB0aGUgYHNhbXBsZXNgIGRpcmVjdG9yeSBkaXJlY3RseSwgb3IsIGlmIHRoZXJlJiMzOTtzIGEgc3BlY2lhbGl6ZWQgZGVtbyBvciBEYW1vbi1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgdGhlIGBzYW1wbGVzL2RhbW9uL01ha2VmaWxlYC4gVGhpcyBwb2ludHMgdG93YXJkcyBhIGRlc2lyZSB0byBzZWUgdGhlIGJ1aWxkIHN5c3RlbSBhbmQgZGVwZW5kZW5jaWVzIGluIGFjdGlvbi4gSSYjMzk7bSBsaWtlbHkgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgY29tcGlsZXIgZmxhZ3MsIGxpbmtpbmcgb3B0aW9ucywgaW5jbHVkZWQgaGVhZGVycywgYW5kIHRoZSBvdmVyYWxsIGNvbXBpbGF0aW9uIGZsb3cuIEV4YW1pbmluZyB0aGUgTWFrZWZpbGUgd2lsbCBnaXZlIGEgc3Ryb25nIHVuZGVyc3RhbmRpbmcgb2YgdGhlICYjMzQ7d2hhdCBhbmQgaG93JiMzNDsgb2YgdGhlIHByb2plY3Qgd2l0aG91dCBoYXZpbmcgdG8gZGVlcCBkaXZlIGludG8gY29kZS4gVGhpcyBpcyBhIGNvbW1vbiBhbmQgZWZmaWNpZW50IHdheSB0byBxdWlja2x5IGdldCBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RBTU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c2FtcGxlcy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL01ha2VmaWxlPTQyPW9iai0kKENPTkZJR19TQU1QTEVTX1JVU1QpXHRcdCYjNDM7PSBydXN0L1xuc2FtcGxlcy9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfU0FNUExFX0RBTU9OX1dTU0UpXHRcdCYjNDM7PSBkYW1vbi9cbnNhbXBsZXMvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9QUkNMKVx0XHQmIzQzOz0gZGFtb24vXG5zYW1wbGVzL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19TQU1QTEVfREFNT05fTVRJRVIpXHQmIzQzOz0gZGFtb24vXG5zYW1wbGVzL01ha2VmaWxlLTQ2LW9iai0kKENPTkZJR19TQU1QTEVfSFVOR19UQVNLKVx0XHQmIzQzOz0gaHVuZ190YXNrL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAxODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mjk4CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWcgc3ltYm9sczoKCioqRGVjb25zdHJ1Y3RpbmcgRGFtb24gU2FtcGxlIENvbmZpZ3VyYXRpb25zKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgQ09ORklHX1NBTVBMRV9EQU1PTl9XU1NFYCwgYENPTkZJR19TQU1QTEVfREFNT05fUFJDTGAsIGFuZCBgQ09ORklHX1NBTVBMRV9EQU1PTl9NVElFUmAuIE15IGZpcnN0IHRob3VnaHQgaXMsIHRoZXNlIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gdGhlIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yKSBmcmFtZXdvcmssIGFuZCB0aGV5JiMzOTtyZSBsaWtlbHkgc2FtcGxlIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZXNlIHNhbXBsZXMgYXJlIGRvaW5nLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGxvY2F0ZSB3aGVyZSB0aGVzZSBjb25maWd1cmF0aW9uIHN5bWJvbHMgYXJlIGFjdHVhbGx5IGRlZmluZWQuIFRoYXQmIzM5O2xsIHByb3ZpZGUgdGhlIGNydWNpYWwgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgYCNpZmRlZmAgY29uZGl0aW9ucyBvciB0aGUgZGVmYXVsdCB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZW0gd2lsbCBiZSBrZXkgdG8gZGVjaXBoZXJpbmcgdGhlaXIgcHVycG9zZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIGFuZCB0aGUgb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggZWFjaCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQU1QTEVfREFNT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEQU1PTiBTYW1wbGVzXCYjMzQ7XG5zYW1wbGVzL2RhbW9uL0tjb25maWctNC1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZzo1OmNvbmZpZyBTQU1QTEVfREFNT05fV1NTRVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIHdvcmtpbmcgc2V0IHNpemUgZXN0aW1hdGlvblwmIzM0O1xuLS1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0xNi1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZzoxNzpjb25maWcgU0FNUExFX0RBTU9OX1BSQ0xcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3IgYWNjZXNzLWF3YXJlIHByb2FjdGl2ZSByZWNsYW1hdGlvblwmIzM0O1xuLS1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0yOS1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMDpjb25maWcgU0FNUExFX0RBTU9OX01USUVSXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMzEtXHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDE4OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MzEKCQkJCQkJCW91dHB1dDogMjU3CgkJCQkJCQl0aG91Z2h0czogMzc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIG5haWwgZG93biB0aGlzIGZ1enppbmcgdGFyZ2V0LiBGaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBpbiBtaW5kLiBJJiMzOTtsbCBhZGQgdGhlc2UgdG8gdGhlIGxpc3Q6IGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9SRUNMQUlNYCwgYERBTU9OX0xSVV9TT1JUYCwgYFNBTVBMRV9EQU1PTl9XU1NFYCwgYFNBTVBMRV9EQU1PTl9QUkNMYCwgYW5kIGBTQU1QTEVfREFNT05fTVRJRVJgLiBHb3R0YSBiZSBjb21wcmVoZW5zaXZlLgoKTm93LCBsZXQmIzM5O3MgcXVpY2tseSByZXZpZXcgdGhlIGNvcmUgREFNT04gZnVuY3Rpb25zIHRoZW1zZWx2ZXMuIEkmIzM5O20gdGhpbmtpbmc6IGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYGRhbW9uX2NhbGxgLCBgZGFtb25fbHJ1X3NvcnRfdHVybmAsIGBkYW1vbl9yZWNsYWltX3R1cm5gLCBgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZgLCBgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0YCwgYGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wYCwgYGRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0YCwgYW5kIGBkYW1vbl9zYW1wbGVfd3NzZV9zdGFydGAuIFl1cCwgdGhvc2UgYWxsIGxvb2sgbGlrZSBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcuIFRoZXNlIGFyZSB0aGUgbGlmZWN5Y2xlIGhvb2tzLgoKQWxyaWdodCwgdGltZSBmb3IgYSBzYW5pdHkgY2hlY2sgb24gdGhpcyBwYXJ0aWN1bGFyIHBhdGNoIGFuZCB3aGV0aGVyIGl0JiMzOTtzIHRydWx5IGBXb3J0aEZ1enppbmdgLiBUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGNvcmUgREFNT04gbG9naWMsIHNwZWNpZmljYWxseSBob3cgYGRhbW9uX3N0b3BgIGlzIGhhbmRsZWQgKGluY2x1ZGluZyBpdHMgcmV0dXJuIHR5cGUpIGFuZCBhbHNvIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBlcnJvciBoYW5kbGluZyB3aXRoaW4gYGRhbW9uX3N0YXJ0YCBhbmQgYGRhbW9uX2NhbGxgLiBDcnVjaWFsbHksIHRoaXMgYWZmZWN0cyAqZnVuY3Rpb25hbCogbG9naWMuIFRoaXMgaXMgY29kZSB0aGF0JiMzOTtzIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdGhyb3VnaCBzeXNmcyBvciBieSBsb2FkaW5nIG1vZHVsZXMuIFNvLCB5ZWFoLCB0aGlzIGlzIGRlZmluaXRlbHkgYSBnb29kIHRhcmdldC4gYFdvcnRoRnV6emluZz10cnVlYC4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhlIHBhdGNoIHVwZGF0ZXMgdGhlIERBTU9OIHN1YnN5c3RlbSYjMzk7cyBjb3JlIGxpZmVjeWNsZSBmdW5jdGlvbnMgKGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYW5kIGBkYW1vbl9jYWxsYCkgYW5kIHRoZW4gY2FzY2FkZXMgdGhyb3VnaCB0aGVpciByZXNwZWN0aXZlIGNhbGwgc2l0ZXMgd2l0aGluIGBtbS9kYW1vbi9gIGFuZCBgc2FtcGxlcy9kYW1vbi9gLiBUaGVzZSBhcmUgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgcmVhY2gga2VybmVsIGNvZGUsIHNvIGZ1enppbmcgaXMgd2FycmFudGVkLiBSaWdodCwgSSB0aGluayBJIGhhdmUgZXZlcnl0aGluZy4gVGltZSB0byBwcmVwYXJlIHRoZSBmaW5hbCByZXNwb25zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTg6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1dTU0UmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1BSQ0wmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jYWxsJiMzNDssCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X3R1cm4mIzM0OywKICAgICYjMzQ7ZGFtb25fcmVjbGFpbV90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmJiMzNDssCiAgICAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfcHJjbF9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFNT04gc3Vic3lzdGVtJiMzOTtzIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyAoZGFtb25fc3RhcnQsIGRhbW9uX3N0b3AsIGRhbW9uX2NhbGwpIGFuZCB1cGRhdGVzIHRoZWlyIGNhbGxlcnMgYWNyb3NzIG1tL2RhbW9uLyBhbmQgc2FtcGxlcy9kYW1vbi8uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9SRUNMQUlNJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9XU1NFJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9QUkNMJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX3N0b3AmIzM0OywKICAgICYjMzQ7ZGFtb25fY2FsbCYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3JlY2xhaW1fdHVybiYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZiYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fc2FtcGxlX210aWVyX3N0b3AmIzM0OywKICAgICYjMzQ7ZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIHN1YnN5c3RlbSYjMzk7cyBjb3JlIGxpZmVjeWNsZSBmdW5jdGlvbnMgKGRhbW9uX3N0YXJ0LCBkYW1vbl9zdG9wLCBkYW1vbl9jYWxsKSBhbmQgdXBkYXRlcyB0aGVpciBjYWxsZXJzIGFjcm9zcyBtbS9kYW1vbi8gYW5kIHNhbXBsZXMvZGFtb24vLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDE4OjI2OjUzLjk4MDkzOTQyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MDYyMDQ5MDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9XU1NFXCIsXG4gICAgXCJTQU1QTEVfREFNT05fUFJDTFwiLFxuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX3N0b3BcIixcbiAgICBcImRhbW9uX2NhbGxcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X3R1cm5cIixcbiAgICBcImRhbW9uX3JlY2xhaW1fdHVyblwiLFxuICAgIFwiZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZcIixcbiAgICBcImRhbW9uX3NhbXBsZV9tdGllcl9zdGFydFwiLFxuICAgIFwiZGFtb25fc2FtcGxlX210aWVyX3N0b3BcIixcbiAgICBcImRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfd3NzZV9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEQU1PTiBzdWJzeXN0ZW0ncyBjb3JlIGxpZmVjeWNsZSBmdW5jdGlvbnMgKGRhbW9uX3N0YXJ0LCBkYW1vbl9zdG9wLCBkYW1vbl9jYWxsKSBhbmQgdXBkYXRlcyB0aGVpciBjYWxsZXJzIGFjcm9zcyBtbS9kYW1vbi8gYW5kIHNhbXBsZXMvZGFtb24vLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTg6MjY6NTMuOTgwOTQ1MDE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDk0MDc0MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwOTdkMTJkOTNjN2EwMjYyZmY2NTI5M2E5NWJiMjExMmZkNTA1ZTY3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDQgMTg6MjY6NTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXFxuaW5kZXggODA1ZTA4OWZmNGYyZjYuLjFkMTBmMjkxYjE2ZWYzIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBkYW1vbl9tYXhfbnJfYWNjZXNzZXMoY29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRyc1xcbiBcXG4gYm9vbCBkYW1vbl9pbml0aWFsaXplZCh2b2lkKTtcXG4gaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpO1xcbi1pbnQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpO1xcbit2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKTtcXG4gYm9vbCBkYW1vbl9pc19ydW5uaW5nKHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XFxuIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXFxuaW5kZXggYzZmYzM1YmU2MzNiM2EuLjljMTVkNDQwODRhZjQ0IDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xcbkBAIC0xODM2LDggKzE4MzYsMTAgQEAgaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfY3R4czsgaSsrKSB7XFxuIFxcdFxcdGVyciA9IF9fZGFtb25fc3RhcnQoY3R4c1tpXSk7XFxuLVxcdFxcdGlmIChlcnIpXFxuK1xcdFxcdGlmIChlcnIpIHtcXG4rXFx0XFx0XFx0ZGFtb25fc3RvcChjdHhzLCBpKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0XFx0bnJfcnVubmluZ19jdHhzKys7XFxuIFxcdH1cXG4gXFx0aWYgKGV4Y2x1c2l2ZSBcXHUwMDI2XFx1MDAyNiBucl9ydW5uaW5nX2N0eHMpXFxuQEAgLTE4NTAsMTAgKzE4NTIsOCBAQCBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcXG4gLypcXG4gICogX19kYW1vbl9zdG9wKCkgLSBTdG9wcyBtb25pdG9yaW5nIG9mIGEgZ2l2ZW4gY29udGV4dC5cXG4gICogQGN0eDpcXHRtb25pdG9yaW5nIGNvbnRleHRcXG4tICpcXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxcbiAgKi9cXG4tc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbitzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbiB7XFxuIFxcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrO1xcbiBcXG5AQCAtMTg2MywzMSArMTg2MywyMyBAQCBzdGF0aWMgaW50IF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuIFxcdFxcdGdldF90YXNrX3N0cnVjdCh0c2spO1xcbiBcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmN0eC1cXHUwMDNla2RhbW9uZF9sb2NrKTtcXG4gXFx0XFx0a3RocmVhZF9zdG9wX3B1dCh0c2spO1xcbi1cXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y3R4LVxcdTAwM2VrZGFtb25kX2xvY2spO1xcbi1cXG4tXFx0cmV0dXJuIC1FUEVSTTtcXG4gfVxcbiBcXG4gLyoqXFxuICAqIGRhbW9uX3N0b3AoKSAtIFN0b3BzIHRoZSBtb25pdG9yaW5ncyBmb3IgYSBnaXZlbiBncm91cCBvZiBjb250ZXh0cy5cXG4gICogQGN0eHM6XFx0YW4gYXJyYXkgb2YgdGhlIHBvaW50ZXJzIGZvciBjb250ZXh0cyB0byBzdG9wIG1vbml0b3JpbmdcXG4gICogQG5yX2N0eHM6XFx0c2l6ZSBvZiBAY3R4c1xcbi0gKlxcbi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXFxuICAqL1xcbi1pbnQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpXFxuK3ZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpXFxuIHtcXG4tXFx0aW50IGksIGVyciA9IDA7XFxuK1xcdGludCBpO1xcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX2N0eHM7IGkrKykge1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfY3R4czsgaSsrKVxcbiBcXHRcXHQvKiBucl9ydW5uaW5nX2N0eHMgaXMgZGVjcmVtZW50ZWQgaW4ga2RhbW9uZF9mbiAqL1xcbi1cXHRcXHRlcnIgPSBfX2RhbW9uX3N0b3AoY3R4c1tpXSk7XFxuLVxcdFxcdGlmIChlcnIpXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHR9XFxuLVxcdHJldHVybiBlcnI7XFxuK1xcdFxcdF9fZGFtb25fc3RvcChjdHhzW2ldKTtcXG4gfVxcbiBcXG4gLyoqXFxuQEAgLTE5NDQsNiArMTkzNiw4IEBAIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuICAqIEBjdHggaGFzIHN1Y2NlZWRlZC4gIE90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiBjb3VsZCBmYWxsIGludG8gYW4gaW5kZWZpbml0ZVxcbiAgKiB3YWl0LlxcbiAgKlxcbisgKiBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZmFpbGVkLCB0aGUgQGN0eCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0b3BwZWQuXFxuKyAqXFxuICAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS5cXG4gICovXFxuIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcXG5AQCAtMTk1Niw3ICsxOTUwLDcgQEAgaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XFxuIFxcdGlmIChjdHgtXFx1MDAzZWNhbGxfY29udHJvbHNfb2Jzb2xldGUpIHtcXG4gXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XFxuLVxcdFxcdHJldHVybiAtRUNBTkNFTEVEO1xcbitcXHRcXHRnb3RvIGNhbmNlbGVkO1xcbiBcXHR9XFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmNvbnRyb2wtXFx1MDAzZWxpc3QsIFxcdTAwMjZjdHgtXFx1MDAzZWNhbGxfY29udHJvbHMpO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmN0eC1cXHUwMDNlY2FsbF9jb250cm9sc19sb2NrKTtcXG5AQCAtMTk2NCw4ICsxOTU4LDEzIEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdHdhaXRfZm9yX2NvbXBsZXRpb24oXFx1MDAyNmNvbnRyb2wtXFx1MDAzZWNvbXBsZXRpb24pO1xcbiBcXHRpZiAoY29udHJvbC1cXHUwMDNlY2FuY2VsZWQpXFxuLVxcdFxcdHJldHVybiAtRUNBTkNFTEVEO1xcbitcXHRcXHRnb3RvIGNhbmNlbGVkO1xcbiBcXHRyZXR1cm4gMDtcXG4rXFxuK2NhbmNlbGVkOlxcbitcXHRfX2RhbW9uX3N0b3AoY3R4KTtcXG4rXFx0cmV0dXJuIC1FQ0FOQ0VMRUQ7XFxuK1xcbiB9XFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmNcXG5pbmRleCAzMmY0MTQ5MWI3MjZiMi4uZGJkMDhmNjkxZDhhNTkgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbisrKyBiL21tL2RhbW9uL2xydV9zb3J0LmNcXG5AQCAtNDE0LDggKzQxNCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcXG4ge1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0aWYgKCFvbilcXG4tXFx0XFx0cmV0dXJuIGRhbW9uX3N0b3AoXFx1MDAyNmN0eCwgMSk7XFxuK1xcdGlmICghb24pIHtcXG4rXFx0XFx0ZGFtb25fc3RvcChcXHUwMDI2Y3R4LCAxKTtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4gXFxuIFxcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcXG4gXFx0aWYgKGVycilcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXFxuaW5kZXggMTFiNzBkMGE5YTZmMGEuLjRmMDE0MzAzODc1MDRkIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL3JlY2xhaW0uY1xcbisrKyBiL21tL2RhbW9uL3JlY2xhaW0uY1xcbkBAIC0zMzcsOCArMzM3LDEwIEBAIHN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV90dXJuKGJvb2wgb24pXFxuIHtcXG4gXFx0aW50IGVycjtcXG4gXFxuLVxcdGlmICghb24pXFxuLVxcdFxcdHJldHVybiBkYW1vbl9zdG9wKFxcdTAwMjZjdHgsIDEpO1xcbitcXHRpZiAoIW9uKSB7XFxuK1xcdFxcdGRhbW9uX3N0b3AoXFx1MDAyNmN0eCwgMSk7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuIFxcbiBcXHRlcnIgPSBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnMoKTtcXG4gXFx0aWYgKGVycilcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmNcXG5pbmRleCA2NzEwYjZkMDE5YmY1My4uNjliOTc1ZGU1MDhlNzIgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vc3lzZnMuY1xcbisrKyBiL21tL2RhbW9uL3N5c2ZzLmNcXG5AQCAtMjI5NSwxMiArMjI5NSwxMyBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmKHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxcbiB7XFxuIFxcdGlmICgha2RhbW9uZC1cXHUwMDNlZGFtb25fY3R4KVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFx0cmV0dXJuIGRhbW9uX3N0b3AoXFx1MDAyNmtkYW1vbmQtXFx1MDAzZWRhbW9uX2N0eCwgMSk7XFxuK1xcdGRhbW9uX3N0b3AoXFx1MDAyNmtkYW1vbmQtXFx1MDAzZWRhbW9uX2N0eCwgMSk7XFxuIFxcdC8qXFxuIFxcdCAqIFRvIGFsbG93IHVzZXJzIHNob3cgZmluYWwgbW9uaXRvcmluZyByZXN1bHRzIG9mIGFscmVhZHkgdHVybmVkLW9mZlxcbiBcXHQgKiBEQU1PTiwgd2UgZnJlZSBrZGFtb25kLVxcdTAwM2VkYW1vbl9jdHggaW4gbmV4dFxcbiBcXHQgKiBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29uKCksIG9yIGtkYW1vbmRzX25yX3N0b3JlKClcXG4gXFx0ICovXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLFxcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcXG5pbmRleCBlNTY3ZjRlZGQ4MGVhNy4uYWM5YzI0YjkyZWFkODQgMTAwNjQ0XFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuKysrIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuQEAgLTE5Myw4ICsxOTMsNiBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKVxcbiBcXHRpZiAoIWVycilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRpZiAoZGFtb25faXNfcnVubmluZyhjdHhzWzBdKSlcXG4tXFx0XFx0ZGFtb25fc3RvcChjdHhzLCAxKTtcXG4gXFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1swXSk7XFxuIFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMV0pO1xcbiBcXHRyZXR1cm4gZXJyO1xcbkBAIC0yMDIsOCArMjAwLDcgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcXG4gXFxuIHN0YXRpYyB2b2lkIGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wKHZvaWQpXFxuIHtcXG4tXFx0ZGFtb25fc3RvcChjdHhzLCAxKTtcXG4tXFx0ZGFtb25fc3RvcChcXHUwMDI2Y3R4c1sxXSwgMSk7XFxuK1xcdGRhbW9uX3N0b3AoY3R4cywgMik7XFxuIFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMF0pO1xcbiBcXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzFdKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3ByY2wuYyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jXFxuaW5kZXggZWRlYWUxNDVjNGE4YWYuLjg0MjA5OWJkNjIyODYxIDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvZGFtb24vcHJjbC5jXFxuKysrIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcXG5AQCAtMTEzLDEwICsxMTMsOCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0KHZvaWQpXFxuIFxcbiBcXHRyZXBlYXRfY2FsbF9jb250cm9sLmRhdGEgPSBjdHg7XFxuIFxcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcXHUwMDI2cmVwZWF0X2NhbGxfY29udHJvbCk7XFxuLVxcdGlmIChlcnIpIHtcXG4tXFx0XFx0ZGFtb25fc3RvcChcXHUwMDI2Y3R4LCAxKTtcXG4rXFx0aWYgKGVycilcXG4gXFx0XFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcXG4tXFx0fVxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3dzc2UuYyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXFxuaW5kZXggZmY1ZThhODkwZjQ0OGMuLjM3ZmQ1ZGEyMDE1ODg1IDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvZGFtb24vd3NzZS5jXFxuKysrIGIvc2FtcGxlcy9kYW1vbi93c3NlLmNcXG5AQCAtOTMsMTAgKzkzLDggQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCh2b2lkKVxcbiBcXHR9XFxuIFxcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcXG4gXFx0ZXJyID0gZGFtb25fY2FsbChjdHgsIFxcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcXG4tXFx0aWYgKGVycikge1xcbi1cXHRcXHRkYW1vbl9zdG9wKFxcdTAwMjZjdHgsIDEpO1xcbitcXHRpZiAoZXJyKVxcbiBcXHRcXHRkYW1vbl9kZXN0cm95X2N0eChjdHgpO1xcbi1cXHR9XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDE4OjI2OjU0LjczMTM5NTczN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzMTE1Nzg2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9SRUNMQUlNXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiLFxuICAgIFwiU0FNUExFX0RBTU9OX1dTU0VcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9QUkNMXCIsXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9zdGFydFwiLFxuICAgIFwiZGFtb25fc3RvcFwiLFxuICAgIFwiZGFtb25fY2FsbFwiLFxuICAgIFwiZGFtb25fbHJ1X3NvcnRfdHVyblwiLFxuICAgIFwiZGFtb25fcmVjbGFpbV90dXJuXCIsXG4gICAgXCJkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZlwiLFxuICAgIFwiZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcFwiLFxuICAgIFwiZGFtb25fc2FtcGxlX3ByY2xfc3RhcnRcIixcbiAgICBcImRhbW9uX3NhbXBsZV93c3NlX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIHN1YnN5c3RlbSdzIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyAoZGFtb25fc3RhcnQsIGRhbW9uX3N0b3AsIGRhbW9uX2NhbGwpIGFuZCB1cGRhdGVzIHRoZWlyIGNhbGxlcnMgYWNyb3NzIG1tL2RhbW9uLyBhbmQgc2FtcGxlcy9kYW1vbi8uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA5N2QxMmQ5M2M3YTAyNjJmZjY1MjkzYTk1YmIyMTEyZmQ1MDVlNjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCA0IDE4OjI2OjUyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5pbmRleCA4MDVlMDg5ZmY0ZjJmNi4uMWQxMGYyOTFiMTZlZjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuQEAgLTEwNjcsNyArMTA2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRhbW9uX21heF9ucl9hY2Nlc3Nlcyhjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzXG4gXG4gYm9vbCBkYW1vbl9pbml0aWFsaXplZCh2b2lkKTtcbiBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSk7XG4taW50IGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKTtcbit2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKTtcbiBib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbiBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbiBcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IGM2ZmMzNWJlNjMzYjNhLi45YzE1ZDQ0MDg0YWY0NCAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuKysrIGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMTgzNiw4ICsxODM2LDEwIEBAIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3R4czsgaSsrKSB7XG4gXHRcdGVyciA9IF9fZGFtb25fc3RhcnQoY3R4c1tpXSk7XG4tXHRcdGlmIChlcnIpXG4rXHRcdGlmIChlcnIpIHtcbitcdFx0XHRkYW1vbl9zdG9wKGN0eHMsIGkpO1xuIFx0XHRcdGJyZWFrO1xuK1x0XHR9XG4gXHRcdG5yX3J1bm5pbmdfY3R4cysrO1xuIFx0fVxuIFx0aWYgKGV4Y2x1c2l2ZSBcdTAwMjZcdTAwMjYgbnJfcnVubmluZ19jdHhzKVxuQEAgLTE4NTAsMTAgKzE4NTIsOCBAQCBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcbiAvKlxuICAqIF9fZGFtb25fc3RvcCgpIC0gU3RvcHMgbW9uaXRvcmluZyBvZiBhIGdpdmVuIGNvbnRleHQuXG4gICogQGN0eDpcdG1vbml0b3JpbmcgY29udGV4dFxuLSAqXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuICAqL1xuLXN0YXRpYyBpbnQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbitzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHtcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrO1xuIFxuQEAgLTE4NjMsMzEgKzE4NjMsMjMgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIFx0XHRnZXRfdGFza19zdHJ1Y3QodHNrKTtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmN0eC1cdTAwM2VrZGFtb25kX2xvY2spO1xuIFx0XHRrdGhyZWFkX3N0b3BfcHV0KHRzayk7XG4tXHRcdHJldHVybiAwO1xuK1x0XHRyZXR1cm47XG4gXHR9XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWtkYW1vbmRfbG9jayk7XG4tXG4tXHRyZXR1cm4gLUVQRVJNO1xuIH1cbiBcbiAvKipcbiAgKiBkYW1vbl9zdG9wKCkgLSBTdG9wcyB0aGUgbW9uaXRvcmluZ3MgZm9yIGEgZ2l2ZW4gZ3JvdXAgb2YgY29udGV4dHMuXG4gICogQGN0eHM6XHRhbiBhcnJheSBvZiB0aGUgcG9pbnRlcnMgZm9yIGNvbnRleHRzIHRvIHN0b3AgbW9uaXRvcmluZ1xuICAqIEBucl9jdHhzOlx0c2l6ZSBvZiBAY3R4c1xuLSAqXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuICAqL1xuLWludCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcbit2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxuIHtcbi1cdGludCBpLCBlcnIgPSAwO1xuK1x0aW50IGk7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9jdHhzOyBpKyspIHtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2N0eHM7IGkrKylcbiBcdFx0LyogbnJfcnVubmluZ19jdHhzIGlzIGRlY3JlbWVudGVkIGluIGtkYW1vbmRfZm4gKi9cbi1cdFx0ZXJyID0gX19kYW1vbl9zdG9wKGN0eHNbaV0pO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGJyZWFrO1xuLVx0fVxuLVx0cmV0dXJuIGVycjtcbitcdFx0X19kYW1vbl9zdG9wKGN0eHNbaV0pO1xuIH1cbiBcbiAvKipcbkBAIC0xOTQ0LDYgKzE5MzYsOCBAQCBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuICAqIEBjdHggaGFzIHN1Y2NlZWRlZC4gIE90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiBjb3VsZCBmYWxsIGludG8gYW4gaW5kZWZpbml0ZVxuICAqIHdhaXQuXG4gICpcbisgKiBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZmFpbGVkLCB0aGUgQGN0eCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0b3BwZWQuXG4rICpcbiAgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4gICovXG4gaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxuQEAgLTE5NTYsNyArMTk1MCw3IEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbiBcdG11dGV4X2xvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG4gXHRpZiAoY3R4LVx1MDAzZWNhbGxfY29udHJvbHNfb2Jzb2xldGUpIHtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmN0eC1cdTAwM2VjYWxsX2NvbnRyb2xzX2xvY2spO1xuLVx0XHRyZXR1cm4gLUVDQU5DRUxFRDtcbitcdFx0Z290byBjYW5jZWxlZDtcbiBcdH1cbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y29udHJvbC1cdTAwM2VsaXN0LCBcdTAwMjZjdHgtXHUwMDNlY2FsbF9jb250cm9scyk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG5AQCAtMTk2NCw4ICsxOTU4LDEzIEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbiBcdFx0cmV0dXJuIDA7XG4gXHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmNvbnRyb2wtXHUwMDNlY29tcGxldGlvbik7XG4gXHRpZiAoY29udHJvbC1cdTAwM2VjYW5jZWxlZClcbi1cdFx0cmV0dXJuIC1FQ0FOQ0VMRUQ7XG4rXHRcdGdvdG8gY2FuY2VsZWQ7XG4gXHRyZXR1cm4gMDtcbitcbitjYW5jZWxlZDpcbitcdF9fZGFtb25fc3RvcChjdHgpO1xuK1x0cmV0dXJuIC1FQ0FOQ0VMRUQ7XG4rXG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5pbmRleCAzMmY0MTQ5MWI3MjZiMi4uZGJkMDhmNjkxZDhhNTkgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXG4rKysgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5AQCAtNDE0LDggKzQxNCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFvbilcbi1cdFx0cmV0dXJuIGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbitcdGlmICghb24pIHtcbitcdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbiBcbiBcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcbiBcdGlmIChlcnIpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXG5pbmRleCAxMWI3MGQwYTlhNmYwYS4uNGYwMTQzMDM4NzUwNGQgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9yZWNsYWltLmNcbisrKyBiL21tL2RhbW9uL3JlY2xhaW0uY1xuQEAgLTMzNyw4ICszMzcsMTAgQEAgc3RhdGljIGludCBkYW1vbl9yZWNsYWltX3R1cm4oYm9vbCBvbilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFvbilcbi1cdFx0cmV0dXJuIGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbitcdGlmICghb24pIHtcbitcdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbiBcbiBcdGVyciA9IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycygpO1xuIFx0aWYgKGVycilcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuY1xuaW5kZXggNjcxMGI2ZDAxOWJmNTMuLjY5Yjk3NWRlNTA4ZTcyIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vc3lzZnMuY1xuKysrIGIvbW0vZGFtb24vc3lzZnMuY1xuQEAgLTIyOTUsMTIgKzIyOTUsMTMgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcbiB7XG4gXHRpZiAoIWtkYW1vbmQtXHUwMDNlZGFtb25fY3R4KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdHJldHVybiBkYW1vbl9zdG9wKFx1MDAyNmtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCAxKTtcbitcdGRhbW9uX3N0b3AoXHUwMDI2a2RhbW9uZC1cdTAwM2VkYW1vbl9jdHgsIDEpO1xuIFx0LypcbiBcdCAqIFRvIGFsbG93IHVzZXJzIHNob3cgZmluYWwgbW9uaXRvcmluZyByZXN1bHRzIG9mIGFscmVhZHkgdHVybmVkLW9mZlxuIFx0ICogREFNT04sIHdlIGZyZWUga2RhbW9uZC1cdTAwM2VkYW1vbl9jdHggaW4gbmV4dFxuIFx0ICogZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbigpLCBvciBrZGFtb25kc19ucl9zdG9yZSgpXG4gXHQgKi9cbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuaW5kZXggZTU2N2Y0ZWRkODBlYTcuLmFjOWMyNGI5MmVhZDg0IDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXG4rKysgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcbkBAIC0xOTMsOCArMTkzLDYgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcbiBcdGlmICghZXJyKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGlmIChkYW1vbl9pc19ydW5uaW5nKGN0eHNbMF0pKVxuLVx0XHRkYW1vbl9zdG9wKGN0eHMsIDEpO1xuIFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1swXSk7XG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzFdKTtcbiBcdHJldHVybiBlcnI7XG5AQCAtMjAyLDggKzIwMCw3IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXG4gXG4gc3RhdGljIHZvaWQgZGFtb25fc2FtcGxlX210aWVyX3N0b3Aodm9pZClcbiB7XG4tXHRkYW1vbl9zdG9wKGN0eHMsIDEpO1xuLVx0ZGFtb25fc3RvcChcdTAwMjZjdHhzWzFdLCAxKTtcbitcdGRhbW9uX3N0b3AoY3R4cywgMik7XG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzBdKTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMV0pO1xuIH1cbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3ByY2wuYyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jXG5pbmRleCBlZGVhZTE0NWM0YThhZi4uODQyMDk5YmQ2MjI4NjEgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3ByY2wuY1xuKysrIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbkBAIC0xMTMsMTAgKzExMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQodm9pZClcbiBcbiBcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcbiBcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0aWYgKGVycilcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbi1cdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vd3NzZS5jIGIvc2FtcGxlcy9kYW1vbi93c3NlLmNcbmluZGV4IGZmNWU4YTg5MGY0NDhjLi4zN2ZkNWRhMjAxNTg4NSAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vd3NzZS5jXG4rKysgYi9zYW1wbGVzL2RhbW9uL3dzc2UuY1xuQEAgLTkzLDEwICs5Myw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnQodm9pZClcbiBcdH1cbiBcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcbiBcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0aWYgKGVycilcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbi1cdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTg6MjY6NTQuNzMxMzk5MDM3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg1MDY2ODI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEQU1PTiBTdWJzeXN0ZW0gUGF0Y2ggUmV2aWV3KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGZ1bmRhbWVudGFsbHkgYWx0ZXJzIHRoZSBlcnJvciBoYW5kbGluZyBmbG93IHdpdGhpbiBEQU1PTi4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggY2hhbmdlcyB0aGUgcmV0dXJuIHR5cGUgb2YgYm90aCBgZGFtb25fc3RvcGAgYW5kIGBfX2RhbW9uX3N0b3BgIGZyb20gYGludGAgdG8gYHZvaWRgLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZSBiZWNhdXNlIGl0IHJlbW92ZXMgdGhlIGRpcmVjdCBhYmlsaXR5IGZvciB0aGVzZSBmdW5jdGlvbnMgdG8gc2lnbmFsIGFuIGVycm9yIHN0YXR1cyB2aWEgYSByZXR1cm4gdmFsdWUuIEluc3RlYWQsIGVycm9yIGhhbmRsaW5nIGxpa2VseSByZWxpZXMgb24gb3RoZXIgbWVjaGFuaXNtcywgcG90ZW50aWFsbHkgZ2xvYmFsIHZhcmlhYmxlcywgb3IgcG9zc2libHkgdXNpbmcgdGhlIGNvbnRleHQgYGN0eGAgaXRzZWxmLlxuXG5JIHNlZSB0aGF0IGBfX2RhbW9uX3N0b3AoY3R4KWAgaXMgbm93IGNhbGxlZCBkaXJlY3RseSBmcm9tIGBkYW1vbl9jYWxsYCB3aGVuIGEgY2FsbCBpcyBjYW5jZWxsZWQuIEFsc28sIGluIGBkYW1vbl9zdGFydGAsIHRoZSBwYXRjaCBpcyB1cGRhdGVkIHRvIGNhbGwgYGRhbW9uX3N0b3AoY3R4cywgaSlgIGFuZCBicmVhayBpZiBgX19kYW1vbl9zdGFydGAgZmFpbHMuIEl0J3MgYSBjYXNjYWRpbmcgY2hhbmdlLCBpbXBhY3Rpbmcgc2V2ZXJhbCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhlIGVycm9yIGhhbmRsaW5nIGluIGBkYW1vbl9zdGFydGAgaXMgc3RpbGwgaW50YWN0LCBjYWxsaW5nIGBkYW1vbl9zdG9wYCB3aGVuIGBfX2RhbW9uX3N0YXJ0YCBmYWlscy5cblxuVGhlIHBhdGNoIGluY2x1ZGVzIHVwZGF0ZXMgdG8gY2FsbGVycyBpbiB2YXJpb3VzIGFyZWFzLCBpbmNsdWRpbmcgYGxydV9zb3J0LmNgLCBgcmVjbGFpbS5jYCwgYHN5c2ZzLmNgLCBhbmQgc2V2ZXJhbCBzYW1wbGUgbW9kdWxlcy4gVGhpcyB3aWRlc3ByZWFkIGltcGFjdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSBhbmQgcmVxdWlyZXMgdGhvcm91Z2ggcmV2aWV3IHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBzdWJ0bGUgYnVncyBhcmUgaW50cm9kdWNlZC5cblxuQXMgYSBjb3JlIGtlcm5lbCBmZWF0dXJlLCBEQU1PTiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gSXQncyBjb21tb25seSBjb25maWd1cmVkIChgQ09ORklHX0RBTU9OYCwgYENPTkZJR19EQU1PTl9TWVNGU2AsIGBDT05GSUdfREFNT05fUkVDTEFJTWAsIGBDT05GSUdfREFNT05fTFJVX1NPUlRgKSBhbmQgdXRpbGl6ZWQgYnkgbW9kdWxlcyBhbmQgZXhwb3NlZCB0aHJvdWdoIGludGVyZmFjZXMgbGlrZSBzeXNmcyBhbmQgZGVidWdmcywgdGhlcmVmb3JlLCBhIGNoYW5nZSBvZiB0aGlzIG5hdHVyZSBjb3VsZCBwb3RlbnRpYWxseSBoYXZlIHdpZGVyIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGlzIGNoYW5nZSBpcyBzYWZlLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGUgdmFsaWRpdHkgb2YgdGhpcyBjaGFuZ2UuIEknbGwgbmVlZCB0byBydW4gc29tZSBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBpcyBva2F5LCBhbmQgSSB3aWxsIHByb2JhYmx5IGFsc28gd2FudCB0byB1c2UgdG9vbHMgdG8gdmVyaWZ5IHRoZSBjaGFuZ2UuIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoZSBlcnJvciBjb2RlcyBhcmUgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDY2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTg6Mjc6MDAuNTgyMDY5MDA4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5MzQ4NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL0tjb25maWc9Mz1tZW51IFxcXCJEYXRhIEFjY2VzcyBNb25pdG9yaW5nXFxcIlxcbm1tL2RhbW9uL0tjb25maWctNC1cXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXFxubW0vZGFtb24vS2NvbmZpZy02LVxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMTQtXFxubW0vZGFtb24vS2NvbmZpZzoxNTpjb25maWcgREFNT05fREVCVUdfU0FOSVRZXFxubW0vZGFtb24vS2NvbmZpZy0xNi1cXHRib29sIFxcXCJDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMjUtXFxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctMjctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb25cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMzctXFxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTM5LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1xcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNDYtXFxubW0vZGFtb24vS2NvbmZpZzo0Nzpjb25maWcgREFNT05fUEFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxcbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNjctXFxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcXG5tbS9kYW1vbi9LY29uZmlnLTY5LVxcdGJvb2wgXFxcIkRBTU9OIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNzUtXFxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNzctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxcbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG5tbS9kYW1vbi9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy05OS1cXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMDctXFxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMTUtXFxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXFxubW0vZGFtb24vS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTg6Mjc6MDAuNjgxNDIyNDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDU5MjQxODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2ggZm9yIENvcmUgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBtYWtpbmcgc29tZSBzaWduaWZpY2FudCBjaGFuZ2VzIHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLiBNeSBpbml0aWFsIGZvY3VzIGhhcyB0byBiZSBvbiB0aGUgY29yZSBjb250cm9sIGZ1bmN0aW9uczogYGRhbW9uX3N0b3BgLCBgZGFtb25fc3RhcnRgLCBhbmQgYGRhbW9uX2NhbGxgIHdpdGhpbiBgbW0vZGFtb24vY29yZS5jYC4gVGhlc2UgYXJlIHRoZSBiZWRyb2NrIG9mIHRoZSB3aG9sZSBkeW5hbWljIGFkZHJlc3MgbW9uaXRvcmluZyBzZXR1cCwgdGhlIGVudHJ5IHBvaW50cyBhbmQgY29udHJvbCBtZWNoYW5pc21zLlxuXG5CZXlvbmQgdGhvc2UsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcGF0Y2ggYWZmZWN0cyB0aGUgdmFyaW91cyBtb25pdG9yaW5nIHN0cmF0ZWdpZXMsIHRoZSB0dXJuaW5nIG9mIHRoZXNlIHN0cmF0ZWdpZXMgb24gb3Igb2ZmLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBkaWcgaW50byBgZGFtb25fbHJ1X3NvcnRfdHVybmAgKGluIGBtbS9kYW1vbi9scnVfc29ydC5jYCksIGBkYW1vbl9yZWNsYWltX3R1cm5gIChpbiBgbW0vZGFtb24vcmVjbGFpbS5jYCksIGFuZCB0aGUgc3lzZnMgY29udHJvbCBmdW5jdGlvbiBgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZgIChpbiBgbW0vZGFtb24vc3lzZnMuY2ApLiBUaGVzZSBhcmUgY3JpdGljYWwgdG8gdHVuaW5nIERBTU9OJ3MgYmVoYXZpb3IgaW4gcmVzcG9uc2UgdG8gc3lzdGVtIGNoYW5nZXMuXG5cbkknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGJlaW5nIHNldC4gVGhlIG9idmlvdXMgb25lcyBhcmUgYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1JFQ0xBSU1gLCBhbmQgYERBTU9OX0xSVV9TT1JUYC4gVGhpcyBzZXQgb2Ygc2V0dGluZ3MgZ2l2ZXMgbWUgYW4gaW1tZWRpYXRlIGNsdWUgYXMgdG8gaG93IHRoZSBwYXRjaCBpcyBpbnRlbmRlZCB0byBvcGVyYXRlIG9uIGRpZmZlcmVudCBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlIHRoZSBjb2RlIHBhdGhzIHRoaXMgcGF0Y2ggbW9kaWZpZXMuXG5cbkZpbmFsbHksIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3VwcG9ydGluZyBjb25maWd1cmF0aW9ucy4gVGhlIGBzYW1wbGVzL2RhbW9uL2AgZGlyZWN0b3J5IGlzIGFsd2F5cyBhIGdvb2QgcGxhY2UgdG8gY2hlY2sgZm9yIGV4YW1wbGVzIG9mIERBTU9OIHVzYWdlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBzYW1wbGVzIGFyZSBidWlsdCBhbmQgaWYgdGhleSByZXF1aXJlIGFueSBhZGRpdGlvbmFsIGNvbmZpZ3MgdG8gZW5hYmxlIHRoZW0uIFRoZWlyIGJ1aWxkIHByb2Nlc3MgbWlnaHQgZ2l2ZSBtZSBpbnNpZ2h0cyBpbnRvIGhvdyB0aGUgcGF0Y2ggYWx0ZXJzIERBTU9OJ3MgZGVwbG95bWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk3OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxODoyNzowNS43NDA2NjcwNjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ3MjExMzIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQU1QTEVfREFNT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxODoyNzowNS44MzUzOTg3MjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDU5Njc4MzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIERBTU9OJ3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBEQU1PTi4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCBhIGNvbW1vbiBwcmFjdGljZSwgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZXMuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIGNhbmRpZGF0ZXM6IGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGFuZCBgc2FtcGxlcy9LY29uZmlnYC4gVGhlc2UgYXJlIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgZGVmaW5pdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dCB0aGF0IGdvdmVybiB3aGV0aGVyIERBTU9OIGNhbiBiZSBidWlsdCBhbmQgaG93IGl0IGJlaGF2ZXMuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgdGhlIGBDT05GSUdfREFNT05gIHN5bWJvbCwgYW55IGFzc29jaWF0ZWQgc3ViLW9wdGlvbnMsIGFuZCB0aGVpciBkZWZhdWx0IHZhbHVlcy4gVGhlIHNhbXBsZXMgZGlyZWN0b3JpZXMgYXJlIHVzdWFsbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIHF1aWNrbHkgYXNzZXNzIGF2YWlsYWJsZSBvcHRpb25zIGFuZCBmaW5kIHVzYWdlIGV4YW1wbGVzLiBJZiB0aGF0IGRvZXNuJ3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24sIEkgd291bGQgYmVnaW4gc2VhcmNoaW5nIHRocm91Z2ggdGhlIGtlcm5lbCBzb3VyY2UgY29kZSBmb3IgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjU5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTg6Mjc6MTAuMjk1MDc5ODUyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDI4NjY4MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREFNT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxODoyNzoxMC43NzkzNzI0ODVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU5MTIyODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipNYWtlZmlsZSBFeHBsb3JhdGlvbiBmb3IgQ29udGV4dCoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBoZXJlIGlzIHRvIHF1aWNrbHkgZ2FpbiBjb250ZXh0IG9uIGhvdyB0aGlzIHByb2plY3QsIG9yIHBlcmhhcHMgYSByZWxhdGVkIGV4YW1wbGUsIGlzIHN0cnVjdHVyZWQgZnJvbSBhIGJ1aWxkIHBlcnNwZWN0aXZlLiBJJ20gaW1tZWRpYXRlbHkgcmVhY2hpbmcgZm9yIHRoZSBgTWFrZWZpbGVgcyDigJMgc3BlY2lmaWNhbGx5LCBlaXRoZXIgaW4gdGhlIGBzYW1wbGVzYCBkaXJlY3RvcnkgZGlyZWN0bHksIG9yLCBpZiB0aGVyZSdzIGEgc3BlY2lhbGl6ZWQgZGVtbyBvciBEYW1vbi1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgdGhlIGBzYW1wbGVzL2RhbW9uL01ha2VmaWxlYC4gVGhpcyBwb2ludHMgdG93YXJkcyBhIGRlc2lyZSB0byBzZWUgdGhlIGJ1aWxkIHN5c3RlbSBhbmQgZGVwZW5kZW5jaWVzIGluIGFjdGlvbi4gSSdtIGxpa2VseSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBjb21waWxlciBmbGFncywgbGlua2luZyBvcHRpb25zLCBpbmNsdWRlZCBoZWFkZXJzLCBhbmQgdGhlIG92ZXJhbGwgY29tcGlsYXRpb24gZmxvdy4gRXhhbWluaW5nIHRoZSBNYWtlZmlsZSB3aWxsIGdpdmUgYSBzdHJvbmcgdW5kZXJzdGFuZGluZyBvZiB0aGUgXCJ3aGF0IGFuZCBob3dcIiBvZiB0aGUgcHJvamVjdCB3aXRob3V0IGhhdmluZyB0byBkZWVwIGRpdmUgaW50byBjb2RlLiBUaGlzIGlzIGEgY29tbW9uIGFuZCBlZmZpY2llbnQgd2F5IHRvIHF1aWNrbHkgZ2V0IGEgaGlnaC1sZXZlbCBvdmVydmlldy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkyNywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDE4OjI3OjEzLjgzODQ5NzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjQ3OTg1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEQU1PTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzYW1wbGVzL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX1NBTVBMRVNfUlVTVClcXHRcXHQrPSBydXN0L1xcbnNhbXBsZXMvTWFrZWZpbGU6NDM6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9XU1NFKVxcdFxcdCs9IGRhbW9uL1xcbnNhbXBsZXMvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9QUkNMKVxcdFxcdCs9IGRhbW9uL1xcbnNhbXBsZXMvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9NVElFUilcXHQrPSBkYW1vbi9cXG5zYW1wbGVzL01ha2VmaWxlLTQ2LW9iai0kKENPTkZJR19TQU1QTEVfSFVOR19UQVNLKVxcdFxcdCs9IGh1bmdfdGFzay9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTg6Mjc6MTMuOTc0OTg1OTE5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzAyNDczOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZyBzeW1ib2xzOlxuXG4qKkRlY29uc3RydWN0aW5nIERhbW9uIFNhbXBsZSBDb25maWd1cmF0aW9ucyoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBDT05GSUdfU0FNUExFX0RBTU9OX1dTU0VgLCBgQ09ORklHX1NBTVBMRV9EQU1PTl9QUkNMYCwgYW5kIGBDT05GSUdfU0FNUExFX0RBTU9OX01USUVSYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgdGhlc2UgYXJlIGNsZWFybHkgcmVsYXRlZCB0byB0aGUgREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3IpIGZyYW1ld29yaywgYW5kIHRoZXkncmUgbGlrZWx5IHNhbXBsZSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGVzZSBzYW1wbGVzIGFyZSBkb2luZy4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBsb2NhdGUgd2hlcmUgdGhlc2UgY29uZmlndXJhdGlvbiBzeW1ib2xzIGFyZSBhY3R1YWxseSBkZWZpbmVkLiBUaGF0J2xsIHByb3ZpZGUgdGhlIGNydWNpYWwgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgYCNpZmRlZmAgY29uZGl0aW9ucyBvciB0aGUgZGVmYXVsdCB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZW0gd2lsbCBiZSBrZXkgdG8gZGVjaXBoZXJpbmcgdGhlaXIgcHVycG9zZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIGFuZCB0aGUgb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggZWFjaCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyOTgsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxODoyNzoxNy4yNDUyMzY0NDhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MjI3MjE3NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNBTVBMRV9EQU1PTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnPTM9bWVudSBcXFwiREFNT04gU2FtcGxlc1xcXCJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctNC1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6NTpjb25maWcgU0FNUExFX0RBTU9OX1dTU0VcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctNi1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciB3b3JraW5nIHNldCBzaXplIGVzdGltYXRpb25cXFwiXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMTYtXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjE3OmNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0xOC1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlIHJlY2xhbWF0aW9uXFxcIlxcbi0tXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTI5LVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMDpjb25maWcgU0FNUExFX0RBTU9OX01USUVSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxODoyNzoyMC4xNjc5NjM5NTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY5OTc3OTIzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgbmFpbCBkb3duIHRoaXMgZnV6emluZyB0YXJnZXQuIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGluIG1pbmQuIEknbGwgYWRkIHRoZXNlIHRvIHRoZSBsaXN0OiBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGBEQU1PTl9MUlVfU09SVGAsIGBTQU1QTEVfREFNT05fV1NTRWAsIGBTQU1QTEVfREFNT05fUFJDTGAsIGFuZCBgU0FNUExFX0RBTU9OX01USUVSYC4gR290dGEgYmUgY29tcHJlaGVuc2l2ZS5cblxuTm93LCBsZXQncyBxdWlja2x5IHJldmlldyB0aGUgY29yZSBEQU1PTiBmdW5jdGlvbnMgdGhlbXNlbHZlcy4gSSdtIHRoaW5raW5nOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fc3RvcGAsIGBkYW1vbl9jYWxsYCwgYGRhbW9uX2xydV9zb3J0X3R1cm5gLCBgZGFtb25fcmVjbGFpbV90dXJuYCwgYGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmYCwgYGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydGAsIGBkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcGAsIGBkYW1vbl9zYW1wbGVfcHJjbF9zdGFydGAsIGFuZCBgZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnRgLiBZdXAsIHRob3NlIGFsbCBsb29rIGxpa2UgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiBUaGVzZSBhcmUgdGhlIGxpZmVjeWNsZSBob29rcy5cblxuQWxyaWdodCwgdGltZSBmb3IgYSBzYW5pdHkgY2hlY2sgb24gdGhpcyBwYXJ0aWN1bGFyIHBhdGNoIGFuZCB3aGV0aGVyIGl0J3MgdHJ1bHkgYFdvcnRoRnV6emluZ2AuIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgY29yZSBEQU1PTiBsb2dpYywgc3BlY2lmaWNhbGx5IGhvdyBgZGFtb25fc3RvcGAgaXMgaGFuZGxlZCAoaW5jbHVkaW5nIGl0cyByZXR1cm4gdHlwZSkgYW5kIGFsc28gbWFraW5nIGNoYW5nZXMgdG8gdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiBgZGFtb25fc3RhcnRgIGFuZCBgZGFtb25fY2FsbGAuIENydWNpYWxseSwgdGhpcyBhZmZlY3RzICpmdW5jdGlvbmFsKiBsb2dpYy4gVGhpcyBpcyBjb2RlIHRoYXQncyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHRocm91Z2ggc3lzZnMgb3IgYnkgbG9hZGluZyBtb2R1bGVzLiBTbywgeWVhaCwgdGhpcyBpcyBkZWZpbml0ZWx5IGEgZ29vZCB0YXJnZXQuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cblRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhlIHBhdGNoIHVwZGF0ZXMgdGhlIERBTU9OIHN1YnN5c3RlbSdzIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyAoYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX3N0b3BgLCBhbmQgYGRhbW9uX2NhbGxgKSBhbmQgdGhlbiBjYXNjYWRlcyB0aHJvdWdoIHRoZWlyIHJlc3BlY3RpdmUgY2FsbCBzaXRlcyB3aXRoaW4gYG1tL2RhbW9uL2AgYW5kIGBzYW1wbGVzL2RhbW9uL2AuIFRoZXNlIGFyZSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCByZWFjaCBrZXJuZWwgY29kZSwgc28gZnV6emluZyBpcyB3YXJyYW50ZWQuIFJpZ2h0LCBJIHRoaW5rIEkgaGF2ZSBldmVyeXRoaW5nLiBUaW1lIHRvIHByZXBhcmUgdGhlIGZpbmFsIHJlc3BvbnNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzMxLCJPdXRwdXRUb2tlbnMiOjI1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxODoyNzoyNy44Njc3NDc0MDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzUyMTk0NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9XU1NFXCIsXG4gICAgXCJTQU1QTEVfREFNT05fUFJDTFwiLFxuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX3N0b3BcIixcbiAgICBcImRhbW9uX2NhbGxcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X3R1cm5cIixcbiAgICBcImRhbW9uX3JlY2xhaW1fdHVyblwiLFxuICAgIFwiZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZcIixcbiAgICBcImRhbW9uX3NhbXBsZV9tdGllcl9zdGFydFwiLFxuICAgIFwiZGFtb25fc2FtcGxlX210aWVyX3N0b3BcIixcbiAgICBcImRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfd3NzZV9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEQU1PTiBzdWJzeXN0ZW0ncyBjb3JlIGxpZmVjeWNsZSBmdW5jdGlvbnMgKGRhbW9uX3N0YXJ0LCBkYW1vbl9zdG9wLCBkYW1vbl9jYWxsKSBhbmQgdXBkYXRlcyB0aGVpciBjYWxsZXJzIGFjcm9zcyBtbS9kYW1vbi8gYW5kIHNhbXBsZXMvZGFtb24vLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1JFQ0xBSU1cIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVfREFNT05fV1NTRVwiLFxuICAgIFwiU0FNUExFX0RBTU9OX1BSQ0xcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9NVElFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zdG9wXCIsXG4gICAgXCJkYW1vbl9jYWxsXCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF90dXJuXCIsXG4gICAgXCJkYW1vbl9yZWNsYWltX3R1cm5cIixcbiAgICBcImRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmXCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnRcIixcbiAgICBcImRhbW9uX3NhbXBsZV9tdGllcl9zdG9wXCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfcHJjbF9zdGFydFwiLFxuICAgIFwiZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFNT04gc3Vic3lzdGVtJ3MgY29yZSBsaWZlY3ljbGUgZnVuY3Rpb25zIChkYW1vbl9zdGFydCwgZGFtb25fc3RvcCwgZGFtb25fY2FsbCkgYW5kIHVwZGF0ZXMgdGhlaXIgY2FsbGVycyBhY3Jvc3MgbW0vZGFtb24vIGFuZCBzYW1wbGVzL2RhbW9uLy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUga2VybmVsIGNvZGUsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbjsgf[1] Phase: Succeeded StartedAt: 2026-07-04 18:27:40 +0000 UTC FinishedAt: 2026-07-04 18:27:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-04 18:27:40 +0000 UTC FinishedAt: 2026-07-04 18:27:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2] Phase: Succeeded StartedAt: 2026-07-04 18:27:40 +0000 UTC FinishedAt: 2026-07-04 22:37:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-04 18:27:40 +0000 UTC FinishedAt: 2026-07-04 22:37:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-04 18:27:40 +0000 UTC FinishedAt: 2026-07-04 18:28:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-04 18:27:40 +0000 UTC FinishedAt: 2026-07-04 18:27:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-convert-artifact-4259865104/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-04 18:28:00 +0000 UTC FinishedAt: 2026-07-04 18:55:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-04 18:28:00 +0000 UTC FinishedAt: 2026-07-04 18:55:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*406f40fb-4bf7-403e-930d-d799faf38760,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-convert-artifact-4259865104/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "127a01bf-f2fc-46e6-9bda-ce194391bcd5", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-build-action-4103175830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-04 18:28:00 +0000 UTC FinishedAt: 2026-07-04 18:54:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*406f40fb-4bf7-403e-930d-d799faf38760,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-convert-artifact-4259865104/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "127a01bf-f2fc-46e6-9bda-ce194391bcd5", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-build-action-4103175830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-04 18:55:55 +0000 UTC FinishedAt: 2026-07-04 18:55:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-04 18:55:55 +0000 UTC FinishedAt: 2026-07-04 18:55:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-04 18:55:55 +0000 UTC FinishedAt: 2026-07-04 18:56:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-04 18:55:55 +0000 UTC FinishedAt: 2026-07-04 18:56:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-convert-artifact-1312121463/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-04 18:56:16 +0000 UTC FinishedAt: 2026-07-04 18:58:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-04 18:56:16 +0000 UTC FinishedAt: 2026-07-04 18:58:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*127a01bf-f2fc-46e6-9bda-ce194391bcd5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-build-action-4103175830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-04 18:58:34 +0000 UTC FinishedAt: 2026-07-04 18:58:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-04 18:58:34 +0000 UTC FinishedAt: 2026-07-04 18:58:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-04 18:58:34 +0000 UTC FinishedAt: 2026-07-04 19:30:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-04 18:58:34 +0000 UTC FinishedAt: 2026-07-04 19:30:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*406f40fb-4bf7-403e-930d-d799faf38760,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-convert-artifact-1312121463/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "149e0bf2-94a7-4acb-a314-9f08e222fbe9", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-build-action-499004731/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-04 18:58:34 +0000 UTC FinishedAt: 2026-07-04 19:30:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*406f40fb-4bf7-403e-930d-d799faf38760,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-convert-artifact-1312121463/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "149e0bf2-94a7-4acb-a314-9f08e222fbe9", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-build-action-499004731/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-04 19:30:50 +0000 UTC FinishedAt: 2026-07-04 19:30:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-04 19:30:50 +0000 UTC FinishedAt: 2026-07-04 19:30:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-04 19:30:50 +0000 UTC FinishedAt: 2026-07-04 19:33:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-04 19:30:50 +0000 UTC FinishedAt: 2026-07-04 19:33:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*149e0bf2-94a7-4acb-a314-9f08e222fbe9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-build-action-499004731/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-04 19:33:16 +0000 UTC FinishedAt: 2026-07-04 22:37:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-04 19:33:16 +0000 UTC FinishedAt: 2026-07-04 22:37:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*127a01bf-f2fc-46e6-9bda-ce194391bcd5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*149e0bf2-94a7-4acb-a314-9f08e222fbe9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-build-action-4103175830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-build-action-499004731/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-04 19:33:16 +0000 UTC FinishedAt: 2026-07-04 19:33:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-04 19:33:16 +0000 UTC FinishedAt: 2026-07-04 19:33:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-convert-artifact-2470850992/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-04 19:33:16 +0000 UTC FinishedAt: 2026-07-04 19:33:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-04 19:33:16 +0000 UTC FinishedAt: 2026-07-04 19:33:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-04 19:33:16 +0000 UTC FinishedAt: 2026-07-04 19:33:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-04 19:33:42 +0000 UTC FinishedAt: 2026-07-04 22:37:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjsgf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off","damon_sample_mtier_start","damon_sample_mtier_stop","damon_sample_prcl_start","damon_sample_wsse_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"d7f04137-ccc1-4bf3-a567-37b838e6758e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-04 19:33:42 +0000 UTC FinishedAt: 2026-07-04 22:37:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*127a01bf-f2fc-46e6-9bda-ce194391bcd5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*149e0bf2-94a7-4acb-a314-9f08e222fbe9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-build-action-4103175830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-build-action-499004731/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbjsgf/series-workflowbjsgf-convert-artifact-2470850992/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}