Name: series-workflow5jxp6 Phase: Succeeded StartedAt: 2026-07-14 13:48:09 +0000 UTC FinishedAt: 2026-07-14 18:13:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[0] Phase: Succeeded StartedAt: 2026-07-14 13:48:09 +0000 UTC FinishedAt: 2026-07-14 14:00:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 13:48:09 +0000 UTC FinishedAt: 2026-07-14 14:00:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "b77ef8d9-c680-4985-b924-a9b9a5be0f2b" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "hfs_btree_open", "hfs_bmap_test_bit", "hfs_bmap_get_map_page" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19idHJlZV9vcGVuJiMzNDssCiAgICAmIzM0O2hmc19ibWFwX3Rlc3RfYml0JiMzNDssCiAgICAmIzM0O2hmc19ibWFwX2dldF9tYXBfcGFnZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG5ldyBsb2dpYyB0byBjaGVjayBmb3IgYml0bWFwIGNvcnJ1cHRpb24gZHVyaW5nIEItdHJlZSBvcGVuIGluIHRoZSBIRlMgZmlsZXN5c3RlbSwgZm9yY2luZyB0aGUgZmlsZXN5c3RlbSB0byByZWFkLW9ubHkgaWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZC4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjU5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2Y0MzU0YzQyMDdiODMxZWU4NjQ4YzRkMjE2M2YwMDJkNTE3NTlmNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDEzOjU5OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9ibm9kZS5jIGIvZnMvaGZzL2Jub2RlLmNcbmluZGV4IGRhOGU1MzQyYzkxY2MyLi4xYjMzMTEwOGQ5YzAxYiAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9ibm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvYm5vZGUuY1xuQEAgLTE1LDQ4ICYjNDM7MTUsNiBAQFxuIFxuICNpbmNsdWRlIFwmIzM0O2J0cmVlLmhcJiMzNDtcbiBcbi1zdGF0aWMgaW5saW5lXG4tYm9vbCBpc19ibm9kZV9vZmZzZXRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZilcbi17XG4tXHRib29sIGlzX3ZhbGlkID0gb2ZmIFx1MDAzYyBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplO1xuLVxuLVx0aWYgKCFpc192YWxpZCkge1xuLVx0XHRwcl9lcnIoXCYjMzQ7cmVxdWVzdGVkIGludmFsaWQgb2Zmc2V0OiBcJiMzNDtcbi1cdFx0ICAgICAgIFwmIzM0O05PREU6IGlkICV1LCB0eXBlICUjeCwgaGVpZ2h0ICV1LCBcJiMzNDtcbi1cdFx0ICAgICAgIFwmIzM0O25vZGVfc2l6ZSAldSwgb2Zmc2V0ICV1XFxuXCYjMzQ7LFxuLVx0XHQgICAgICAgbm9kZS1cdTAwM2V0aGlzLCBub2RlLVx1MDAzZXR5cGUsIG5vZGUtXHUwMDNlaGVpZ2h0LFxuLVx0XHQgICAgICAgbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSwgb2ZmKTtcbi1cdH1cbi1cbi1cdHJldHVybiBpc192YWxpZDtcbi19XG4tXG4tc3RhdGljIGlubGluZVxuLXUzMiBjaGVja19hbmRfY29ycmVjdF9yZXF1ZXN0ZWRfbGVuZ3RoKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYsIHUzMiBsZW4pXG4te1xuLVx0dW5zaWduZWQgaW50IG5vZGVfc2l6ZTtcbi1cbi1cdGlmICghaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKG5vZGUsIG9mZikpXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0bm9kZV9zaXplID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZTtcbi1cbi1cdGlmICgodTY0KW9mZiAmIzQzOyBsZW4gXHUwMDNlIG5vZGVfc2l6ZSkge1xuLVx0XHR1MzIgbmV3X2xlbiA9IG5vZGVfc2l6ZSAtIG9mZjtcbi1cbi1cdFx0cHJfZXJyKFwmIzM0O3JlcXVlc3RlZCBsZW5ndGggaGFzIGJlZW4gY29ycmVjdGVkOiBcJiMzNDtcbi1cdFx0ICAgICAgIFwmIzM0O05PREU6IGlkICV1LCB0eXBlICUjeCwgaGVpZ2h0ICV1LCBcJiMzNDtcbi1cdFx0ICAgICAgIFwmIzM0O25vZGVfc2l6ZSAldSwgb2Zmc2V0ICV1LCBcJiMzNDtcbi1cdFx0ICAgICAgIFwmIzM0O3JlcXVlc3RlZF9sZW4gJXUsIGNvcnJlY3RlZF9sZW4gJXVcXG5cJiMzNDssXG4tXHRcdCAgICAgICBub2RlLVx1MDAzZXRoaXMsIG5vZGUtXHUwMDNldHlwZSwgbm9kZS1cdTAwM2VoZWlnaHQsXG4tXHRcdCAgICAgICBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplLCBvZmYsIGxlbiwgbmV3X2xlbik7XG4tXG4tXHRcdHJldHVybiBuZXdfbGVuO1xuLVx0fVxuLVxuLVx0cmV0dXJuIGxlbjtcbi19XG4tXG4gdm9pZCBoZnNfYm5vZGVfcmVhZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB2b2lkICpidWYsIHUzMiBvZmYsIHUzMiBsZW4pXG4ge1xuIFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2J0cmVlLmMgYi9mcy9oZnMvYnRyZWUuY1xuaW5kZXggMmViMzdhMmY2NGU4NjYuLjJjODQxMjIxYzQ1Y2VkIDEwMDY0NFxuLS0tIGEvZnMvaGZzL2J0cmVlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmcy9idHJlZS5jXG5AQCAtMTUsNiAmIzQzOzE1LDggQEBcbiBcbiAjaW5jbHVkZSBcJiMzNDtidHJlZS5oXCYjMzQ7XG4gXG4mIzQzO3N0YXRpYyBib29sIGhmc19ibWFwX3Rlc3RfYml0KHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBub2RlX2JpdF9pZHgpO1xuJiM0MztcbiAvKiBHZXQgYSByZWZlcmVuY2UgdG8gYSBCKlRyZWUgYW5kIGRvIHNvbWUgaW5pdGlhbCBjaGVja3MgKi9cbiBzdHJ1Y3QgaGZzX2J0cmVlICpoZnNfYnRyZWVfb3BlbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgaWQsIGJ0cmVlX2tleWNtcCBrZXljbXApXG4ge1xuQEAgLTIzLDYgJiM0MzsyNSw3IEBAIHN0cnVjdCBoZnNfYnRyZWUgKmhmc19idHJlZV9vcGVuKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpZCwgYnRyZWVfa2V5Y21wIGtlXG4gXHRzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZztcbiBcdHN0cnVjdCBmb2xpbyAqZm9saW87XG4gXHRzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoO1xuJiM0MztcdHN0cnVjdCBoZnNfYm5vZGUgKm5vZGU7XG4gXHR1bnNpZ25lZCBpbnQgc2l6ZTtcbiBcdHUxNiBkYmxvY2s7XG4gXHRzZWN0b3JfdCBzdGFydF9ibG9jaztcbkBAIC0xNTUsNiAmIzQzOzE1OCwyMCBAQCBzdHJ1Y3QgaGZzX2J0cmVlICpoZnNfYnRyZWVfb3BlbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgaWQsIGJ0cmVlX2tleWNtcCBrZVxuIFx0a3VubWFwX2xvY2FsKGhlYWQpO1xuIFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiBcdGZvbGlvX3B1dChmb2xpbyk7XG4mIzQzO1xuJiM0MztcdG5vZGUgPSBoZnNfYm5vZGVfZmluZCh0cmVlLCBIRlNfVFJFRV9IRUFEKTtcbiYjNDM7XHRpZiAoSVNfRVJSKG5vZGUpKVxuJiM0MztcdFx0Z290byBmcmVlX2lub2RlO1xuJiM0MztcbiYjNDM7XHRpZiAoIWhmc19ibWFwX3Rlc3RfYml0KG5vZGUsIEhGU19UUkVFX0hFQUQpKSB7XG4mIzQzO1x0XHRwcl93YXJuKFwmIzM0Oyglcyk6ICVzIChjbmlkIDB4JXgpIGJpdG1hcCBjb3JydXB0ZWQsIGZvcmNpbmcgcmRvbmx5XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRzYi1cdTAwM2VzX2lkLCBpZCA9PSBIRlNfRVhUX0NOSUQgPyBcJiMzNDtleHRlbnRzXCYjMzQ7IDogXCYjMzQ7Y2F0YWxvZ1wmIzM0OywgaWQpO1xuJiM0MztcdFx0cHJfd2FybihcJiMzNDtSdW4gZnNjay5oZnMgdG8gcmVwYWlyLlxcblwmIzM0Oyk7XG4mIzQzO1x0XHRzYi1cdTAwM2VzX2ZsYWdzIHw9IFNCX1JET05MWTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGhmc19ibm9kZV9wdXQobm9kZSk7XG4mIzQzO1xuIFx0cmV0dXJuIHRyZWU7XG4gXG4gZmFpbF9mb2xpbzpcbkBAIC0zNTYsNiAmIzQzOzM3Myw3NSBAQCBzdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm1hcF9hbGxvYyhzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlKVxuIFx0fVxuIH1cbiBcbiYjNDM7LyogQ29udGV4dCBmb3IgaXRlcmF0aW5nIGItdHJlZSBtYXAgcGFnZXNcbiYjNDM7ICogQHBhZ2VfaWR4OiBUaGUgaW5kZXggb2YgdGhlIHBhZ2Ugd2l0aGluIHRoZSBiLW5vZGUmIzM5O3MgcGFnZSBhcnJheVxuJiM0MzsgKiBAb2ZmOiBUaGUgYnl0ZSBvZmZzZXQgd2l0aGluIHRoZSBtYXBwZWQgcGFnZVxuJiM0MzsgKiBAbGVuOiBUaGUgcmVtYWluaW5nIGxlbmd0aCBvZiB0aGUgbWFwIHJlY29yZFxuJiM0MzsgKi9cbiYjNDM7c3RydWN0IGhmc19ibWFwX2N0eCB7XG4mIzQzO1x0dW5zaWduZWQgaW50IHBhZ2VfaWR4O1xuJiM0MztcdHVuc2lnbmVkIGludCBvZmY7XG4mIzQzO1x0dTE2IGxlbjtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcGFnZSAqaGZzX2JtYXBfZ2V0X21hcF9wYWdlKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsXG4mIzQzO1x0XHRcdFx0XHQgIHN0cnVjdCBoZnNfYm1hcF9jdHggKmN0eCxcbiYjNDM7XHRcdFx0XHRcdCAgdTMyIGJ5dGVfb2Zmc2V0KVxuJiM0Mzt7XG4mIzQzO1x0dTE2IHJlY19pZHgsIG9mZjE2O1xuJiM0MztcdHVuc2lnbmVkIGludCBwYWdlX29mZjtcbiYjNDM7XG4mIzQzO1x0aWYgKG5vZGUtXHUwMDNldGhpcyA9PSBIRlNfVFJFRV9IRUFEKSB7XG4mIzQzO1x0XHRpZiAobm9kZS1cdTAwM2V0eXBlICE9IEhGU19OT0RFX0hFQURFUikge1xuJiM0MztcdFx0XHRwcl9lcnIoXCYjMzQ7aGZzOiBpbnZhbGlkIGJ0cmVlIGhlYWRlciBub2RlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRyZWNfaWR4ID0gSEZTX0JUUkVFX0hEUl9NQVBfUkVDX0lOREVYO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpZiAobm9kZS1cdTAwM2V0eXBlICE9IEhGU19OT0RFX01BUCkge1xuJiM0MztcdFx0XHRwcl9lcnIoXCYjMzQ7aGZzOiBpbnZhbGlkIGJ0cmVlIG1hcCBub2RlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRyZWNfaWR4ID0gSEZTX0JUUkVFX01BUF9OT0RFX1JFQ19JTkRFWDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGN0eC1cdTAwM2VsZW4gPSBoZnNfYnJlY19sZW5vZmYobm9kZSwgcmVjX2lkeCwgXHUwMDI2b2ZmMTYpO1xuJiM0MztcdGlmICghY3R4LVx1MDAzZWxlbilcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xuJiM0MztcbiYjNDM7XHRpZiAoIWlzX2Jub2RlX29mZnNldF92YWxpZChub2RlLCBvZmYxNikpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRUlPKTtcbiYjNDM7XG4mIzQzO1x0Y3R4LVx1MDAzZWxlbiA9IGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgobm9kZSwgb2ZmMTYsIGN0eC1cdTAwM2VsZW4pO1xuJiM0MztcbiYjNDM7XHRpZiAoYnl0ZV9vZmZzZXQgXHUwMDNlPSBjdHgtXHUwMDNlbGVuKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4mIzQzO1xuJiM0MztcdHBhZ2Vfb2ZmID0gKHUzMilvZmYxNiAmIzQzOyBub2RlLVx1MDAzZXBhZ2Vfb2Zmc2V0ICYjNDM7IGJ5dGVfb2Zmc2V0O1xuJiM0MztcdGN0eC1cdTAwM2VwYWdlX2lkeCA9IHBhZ2Vfb2ZmIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuJiM0MztcdGN0eC1cdTAwM2VvZmYgPSBwYWdlX29mZiBcdTAwMjYgflBBR0VfTUFTSztcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG5vZGUtXHUwMDNlcGFnZVtjdHgtXHUwMDNlcGFnZV9pZHhdO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGhmc19ibWFwX2N0eCBjdHg7XG4mIzQzO1x0c3RydWN0IHBhZ2UgKnBhZ2U7XG4mIzQzO1x0dTggKmJtYXAsIGJ5dGUsIG1hc2s7XG4mIzQzO1xuJiM0MztcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXHUwMDI2Y3R4LCBub2RlX2JpdF9pZHggLyBCSVRTX1BFUl9CWVRFKTtcbiYjNDM7XHRpZiAoSVNfRVJSKHBhZ2UpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRibWFwID0ga21hcF9sb2NhbF9wYWdlKHBhZ2UpO1xuJiM0MztcdGJ5dGUgPSBibWFwW2N0eC5vZmZdO1xuJiM0MztcdGt1bm1hcF9sb2NhbChibWFwKTtcbiYjNDM7XG4mIzQzO1x0bWFzayA9IDEgXHUwMDNjXHUwMDNjICg3IC0gKG5vZGVfYml0X2lkeCAlIEJJVFNfUEVSX0JZVEUpKTtcbiYjNDM7XHRyZXR1cm4gKGJ5dGUgXHUwMDI2IG1hc2spICE9IDA7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCBoZnNfYm1hcF9mcmVlKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUpXG4ge1xuIFx0c3RydWN0IGhmc19idHJlZSAqdHJlZTtcbmRpZmYgLS1naXQgYS9mcy9oZnMvYnRyZWUuaCBiL2ZzL2hmcy9idHJlZS5oXG5pbmRleCA5OWJlODU4YjI0NDY1MC4uZjhhZmEzM2Y3MDlhZDIgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvYnRyZWUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2J0cmVlLmhcbkBAIC0xMjksMyAmIzQzOzEyOSw0MyBAQCBleHRlcm4gaW50IF9faGZzX2JyZWNfZmluZChzdHJ1Y3QgaGZzX2Jub2RlICpibm9kZSwgc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKTtcbiBleHRlcm4gaW50IGhmc19icmVjX2ZpbmQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKTtcbiBleHRlcm4gaW50IGhmc19icmVjX3JlYWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB2b2lkICpyZWMsIHUzMiByZWNfbGVuKTtcbiBleHRlcm4gaW50IGhmc19icmVjX2dvdG8oc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCBpbnQgY250KTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19ibm9kZV9vZmZzZXRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZilcbiYjNDM7e1xuJiM0MztcdGJvb2wgaXNfdmFsaWQ7XG4mIzQzO1xuJiM0MztcdGlmICghbm9kZSB8fCAhbm9kZS1cdTAwM2V0cmVlKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRpc192YWxpZCA9IG9mZiBcdTAwM2Mgbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFpc192YWxpZCkge1xuJiM0MztcdFx0cHJfZXJyKFwmIzM0O2ludmFsaWQgb2Zmc2V0OiBpZCAldSwgdHlwZSAleCwgaCAldSwgc3ogJXUsIG9mZiAldVxcblwmIzM0OyxcbiYjNDM7XHRcdCAgICAgICBub2RlLVx1MDAzZXRoaXMsIG5vZGUtXHUwMDNldHlwZSwgbm9kZS1cdTAwM2VoZWlnaHQsXG4mIzQzO1x0XHQgICAgICAgbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSwgb2ZmKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBpc192YWxpZDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSB1MzIgY2hlY2tfYW5kX2NvcnJlY3RfcmVxdWVzdGVkX2xlbmd0aChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgb2ZmLCB1MzIgbGVuKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgaW50IG5vZGVfc2l6ZTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFpc19ibm9kZV9vZmZzZXRfdmFsaWQobm9kZSwgb2ZmKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRub2RlX3NpemUgPSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplO1xuJiM0MztcbiYjNDM7XHRpZiAoKHU2NClvZmYgJiM0MzsgbGVuIFx1MDAzZSBub2RlX3NpemUpIHtcbiYjNDM7XHRcdHUzMiBuZXdfbGVuID0gbm9kZV9zaXplIC0gb2ZmO1xuJiM0MztcbiYjNDM7XHRcdHByX2VycihcJiMzNDtjb3JyZWN0ZWQgbGVuOiBpZCAldSwgdHlwZSAleCwgaCAldSwgc3ogJXUsIG9mZiAldSwgbGVuICV1LVx1MDAzZSV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgICAgIG5vZGUtXHUwMDNldGhpcywgbm9kZS1cdTAwM2V0eXBlLCBub2RlLVx1MDAzZWhlaWdodCxcbiYjNDM7XHRcdCAgICAgICBub2RlX3NpemUsIG9mZiwgbGVuLCBuZXdfbGVuKTtcbiYjNDM7XG4mIzQzO1x0XHRyZXR1cm4gbmV3X2xlbjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBsZW47XG4mIzQzO31cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaCBiL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oXG5pbmRleCA0NWZiNGM5ZmY5ZjVlZS4uOGRjMTBlMGJmYTdlOWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcbkBAIC01MTAsNiAmIzQzOzUxMCwxMSBAQCBzdHJ1Y3QgaGZzX2J0cmVlX2hlYWRlcl9yZWMge1xuIFx0XHRcdFx0XHRcdCAgIGItdHJlZSBidXQgbm90IGluIGV4dGVudHNcbiBcdFx0XHRcdFx0XHQgICBiLXRyZWUgKGhmc3BsdXMpLiAqL1xuIFxuJiM0MzsvKiBIRlMgQlRyZWUgbWlzYyBpbmZvICovXG4mIzQzOyNkZWZpbmUgSEZTX1RSRUVfSEVBRFx0XHRcdFx0MFxuJiM0MzsjZGVmaW5lIEhGU19CVFJFRV9IRFJfTUFQX1JFQ19JTkRFWFx0XHQyXHQvKiBNYXAgKGJpdG1hcCkgcmVjb3JkIGluIEhlYWRlciBub2RlICovXG4mIzQzOyNkZWZpbmUgSEZTX0JUUkVFX01BUF9OT0RFX1JFQ19JTkRFWFx0XHQwXHQvKiBNYXAgcmVjb3JkIGluIE1hcCBOb2RlICovXG4mIzQzO1xuIC8qIEhGUyYjNDM7IEJUcmVlIG1pc2MgaW5mbyAqL1xuICNkZWZpbmUgSEZTUExVU19UUkVFX0hFQURcdFx0XHQwXG4gI2RlZmluZSBIRlNQTFVTX05PREVfTVhTWlx0XHRcdDMyNzY4XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGZzX2J0cmVlX29wZW4mIzM0OywKICAgICYjMzQ7aGZzX2JtYXBfdGVzdF9iaXQmIzM0OywKICAgICYjMzQ7aGZzX2JtYXBfZ2V0X21hcF9wYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IGxvZ2ljIHRvIGNoZWNrIGZvciBiaXRtYXAgY29ycnVwdGlvbiBkdXJpbmcgQi10cmVlIG9wZW4gaW4gdGhlIEhGUyBmaWxlc3lzdGVtLCBmb3JjaW5nIHRoZSBmaWxlc3lzdGVtIHRvIHJlYWQtb25seSBpZiBjb3JydXB0aW9uIGlzIGRldGVjdGVkLiBUaGlzIGlzIHJlYWNoYWJsZSBmdW5jdGlvbmFsIGNvZGUgZHVyaW5nIGZpbGVzeXN0ZW0gbW91bnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNmNDM1NGM0MjA3YjgzMWVlODY0OGM0ZDIxNjNmMDAyZDUxNzU5ZjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAxNCAxMzo1OToyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2hmcy9ibm9kZS5jIGIvZnMvaGZzL2Jub2RlLmMKaW5kZXggZGE4ZTUzNDJjOTFjYzIuLjFiMzMxMTA4ZDljMDFiIDEwMDY0NAotLS0gYS9mcy9oZnMvYm5vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvYm5vZGUuYwpAQCAtMTUsNDggJiM0MzsxNSw2IEBACiAKICNpbmNsdWRlICYjMzQ7YnRyZWUuaCYjMzQ7CiAKLXN0YXRpYyBpbmxpbmUKLWJvb2wgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYpCi17Ci0JYm9vbCBpc192YWxpZCA9IG9mZiAmbHQ7IG5vZGUtJmd0O3RyZWUtJmd0O25vZGVfc2l6ZTsKLQotCWlmICghaXNfdmFsaWQpIHsKLQkJcHJfZXJyKCYjMzQ7cmVxdWVzdGVkIGludmFsaWQgb2Zmc2V0OiAmIzM0OwotCQkgICAgICAgJiMzNDtOT0RFOiBpZCAldSwgdHlwZSAlI3gsIGhlaWdodCAldSwgJiMzNDsKLQkJICAgICAgICYjMzQ7bm9kZV9zaXplICV1LCBvZmZzZXQgJXVcbiYjMzQ7LAotCQkgICAgICAgbm9kZS0mZ3Q7dGhpcywgbm9kZS0mZ3Q7dHlwZSwgbm9kZS0mZ3Q7aGVpZ2h0LAotCQkgICAgICAgbm9kZS0mZ3Q7dHJlZS0mZ3Q7bm9kZV9zaXplLCBvZmYpOwotCX0KLQotCXJldHVybiBpc192YWxpZDsKLX0KLQotc3RhdGljIGlubGluZQotdTMyIGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZiwgdTMyIGxlbikKLXsKLQl1bnNpZ25lZCBpbnQgbm9kZV9zaXplOwotCi0JaWYgKCFpc19ibm9kZV9vZmZzZXRfdmFsaWQobm9kZSwgb2ZmKSkKLQkJcmV0dXJuIDA7Ci0KLQlub2RlX3NpemUgPSBub2RlLSZndDt0cmVlLSZndDtub2RlX3NpemU7Ci0KLQlpZiAoKHU2NClvZmYgJiM0MzsgbGVuICZndDsgbm9kZV9zaXplKSB7Ci0JCXUzMiBuZXdfbGVuID0gbm9kZV9zaXplIC0gb2ZmOwotCi0JCXByX2VycigmIzM0O3JlcXVlc3RlZCBsZW5ndGggaGFzIGJlZW4gY29ycmVjdGVkOiAmIzM0OwotCQkgICAgICAgJiMzNDtOT0RFOiBpZCAldSwgdHlwZSAlI3gsIGhlaWdodCAldSwgJiMzNDsKLQkJICAgICAgICYjMzQ7bm9kZV9zaXplICV1LCBvZmZzZXQgJXUsICYjMzQ7Ci0JCSAgICAgICAmIzM0O3JlcXVlc3RlZF9sZW4gJXUsIGNvcnJlY3RlZF9sZW4gJXVcbiYjMzQ7LAotCQkgICAgICAgbm9kZS0mZ3Q7dGhpcywgbm9kZS0mZ3Q7dHlwZSwgbm9kZS0mZ3Q7aGVpZ2h0LAotCQkgICAgICAgbm9kZS0mZ3Q7dHJlZS0mZ3Q7bm9kZV9zaXplLCBvZmYsIGxlbiwgbmV3X2xlbik7Ci0KLQkJcmV0dXJuIG5ld19sZW47Ci0JfQotCi0JcmV0dXJuIGxlbjsKLX0KLQogdm9pZCBoZnNfYm5vZGVfcmVhZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB2b2lkICpidWYsIHUzMiBvZmYsIHUzMiBsZW4pCiB7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CmRpZmYgLS1naXQgYS9mcy9oZnMvYnRyZWUuYyBiL2ZzL2hmcy9idHJlZS5jCmluZGV4IDJlYjM3YTJmNjRlODY2Li4yYzg0MTIyMWM0NWNlZCAxMDA2NDQKLS0tIGEvZnMvaGZzL2J0cmVlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2J0cmVlLmMKQEAgLTE1LDYgJiM0MzsxNSw4IEBACiAKICNpbmNsdWRlICYjMzQ7YnRyZWUuaCYjMzQ7CiAKJiM0MztzdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KTsKJiM0MzsKIC8qIEdldCBhIHJlZmVyZW5jZSB0byBhIEIqVHJlZSBhbmQgZG8gc29tZSBpbml0aWFsIGNoZWNrcyAqLwogc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2V5Y21wKQogewpAQCAtMjMsNiAmIzQzOzI1LDcgQEAgc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2UKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKIAlzdHJ1Y3QgZm9saW8gKmZvbGlvOwogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CiYjNDM7CXN0cnVjdCBoZnNfYm5vZGUgKm5vZGU7CiAJdW5zaWduZWQgaW50IHNpemU7CiAJdTE2IGRibG9jazsKIAlzZWN0b3JfdCBzdGFydF9ibG9jazsKQEAgLTE1NSw2ICYjNDM7MTU4LDIwIEBAIHN0cnVjdCBoZnNfYnRyZWUgKmhmc19idHJlZV9vcGVuKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpZCwgYnRyZWVfa2V5Y21wIGtlCiAJa3VubWFwX2xvY2FsKGhlYWQpOwogCWZvbGlvX3VubG9jayhmb2xpbyk7CiAJZm9saW9fcHV0KGZvbGlvKTsKJiM0MzsKJiM0MzsJbm9kZSA9IGhmc19ibm9kZV9maW5kKHRyZWUsIEhGU19UUkVFX0hFQUQpOwomIzQzOwlpZiAoSVNfRVJSKG5vZGUpKQomIzQzOwkJZ290byBmcmVlX2lub2RlOwomIzQzOwomIzQzOwlpZiAoIWhmc19ibWFwX3Rlc3RfYml0KG5vZGUsIEhGU19UUkVFX0hFQUQpKSB7CiYjNDM7CQlwcl93YXJuKCYjMzQ7KCVzKTogJXMgKGNuaWQgMHgleCkgYml0bWFwIGNvcnJ1cHRlZCwgZm9yY2luZyByZG9ubHlcbiYjMzQ7LAomIzQzOwkJCXNiLSZndDtzX2lkLCBpZCA9PSBIRlNfRVhUX0NOSUQgPyAmIzM0O2V4dGVudHMmIzM0OyA6ICYjMzQ7Y2F0YWxvZyYjMzQ7LCBpZCk7CiYjNDM7CQlwcl93YXJuKCYjMzQ7UnVuIGZzY2suaGZzIHRvIHJlcGFpci5cbiYjMzQ7KTsKJiM0MzsJCXNiLSZndDtzX2ZsYWdzIHw9IFNCX1JET05MWTsKJiM0MzsJfQomIzQzOwomIzQzOwloZnNfYm5vZGVfcHV0KG5vZGUpOwomIzQzOwogCXJldHVybiB0cmVlOwogCiBmYWlsX2ZvbGlvOgpAQCAtMzU2LDYgJiM0MzszNzMsNzUgQEAgc3RydWN0IGhmc19ibm9kZSAqaGZzX2JtYXBfYWxsb2Moc3RydWN0IGhmc19idHJlZSAqdHJlZSkKIAl9CiB9CiAKJiM0MzsvKiBDb250ZXh0IGZvciBpdGVyYXRpbmcgYi10cmVlIG1hcCBwYWdlcwomIzQzOyAqIEBwYWdlX2lkeDogVGhlIGluZGV4IG9mIHRoZSBwYWdlIHdpdGhpbiB0aGUgYi1ub2RlJiMzOTtzIHBhZ2UgYXJyYXkKJiM0MzsgKiBAb2ZmOiBUaGUgYnl0ZSBvZmZzZXQgd2l0aGluIHRoZSBtYXBwZWQgcGFnZQomIzQzOyAqIEBsZW46IFRoZSByZW1haW5pbmcgbGVuZ3RoIG9mIHRoZSBtYXAgcmVjb3JkCiYjNDM7ICovCiYjNDM7c3RydWN0IGhmc19ibWFwX2N0eCB7CiYjNDM7CXVuc2lnbmVkIGludCBwYWdlX2lkeDsKJiM0MzsJdW5zaWduZWQgaW50IG9mZjsKJiM0MzsJdTE2IGxlbjsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcGFnZSAqaGZzX2JtYXBfZ2V0X21hcF9wYWdlKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsCiYjNDM7CQkJCQkgIHN0cnVjdCBoZnNfYm1hcF9jdHggKmN0eCwKJiM0MzsJCQkJCSAgdTMyIGJ5dGVfb2Zmc2V0KQomIzQzO3sKJiM0MzsJdTE2IHJlY19pZHgsIG9mZjE2OwomIzQzOwl1bnNpZ25lZCBpbnQgcGFnZV9vZmY7CiYjNDM7CiYjNDM7CWlmIChub2RlLSZndDt0aGlzID09IEhGU19UUkVFX0hFQUQpIHsKJiM0MzsJCWlmIChub2RlLSZndDt0eXBlICE9IEhGU19OT0RFX0hFQURFUikgewomIzQzOwkJCXByX2VycigmIzM0O2hmczogaW52YWxpZCBidHJlZSBoZWFkZXIgbm9kZVxuJiMzNDspOwomIzQzOwkJCXJldHVybiBFUlJfUFRSKC1FSU8pOwomIzQzOwkJfQomIzQzOwkJcmVjX2lkeCA9IEhGU19CVFJFRV9IRFJfTUFQX1JFQ19JTkRFWDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmIChub2RlLSZndDt0eXBlICE9IEhGU19OT0RFX01BUCkgewomIzQzOwkJCXByX2VycigmIzM0O2hmczogaW52YWxpZCBidHJlZSBtYXAgbm9kZVxuJiMzNDspOwomIzQzOwkJCXJldHVybiBFUlJfUFRSKC1FSU8pOwomIzQzOwkJfQomIzQzOwkJcmVjX2lkeCA9IEhGU19CVFJFRV9NQVBfTk9ERV9SRUNfSU5ERVg7CiYjNDM7CX0KJiM0MzsKJiM0MzsJY3R4LSZndDtsZW4gPSBoZnNfYnJlY19sZW5vZmYobm9kZSwgcmVjX2lkeCwgJmFtcDtvZmYxNik7CiYjNDM7CWlmICghY3R4LSZndDtsZW4pCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsKJiM0MzsKJiM0MzsJaWYgKCFpc19ibm9kZV9vZmZzZXRfdmFsaWQobm9kZSwgb2ZmMTYpKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVJTyk7CiYjNDM7CiYjNDM7CWN0eC0mZ3Q7bGVuID0gY2hlY2tfYW5kX2NvcnJlY3RfcmVxdWVzdGVkX2xlbmd0aChub2RlLCBvZmYxNiwgY3R4LSZndDtsZW4pOwomIzQzOwomIzQzOwlpZiAoYnl0ZV9vZmZzZXQgJmd0Oz0gY3R4LSZndDtsZW4pCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKJiM0MzsKJiM0MzsJcGFnZV9vZmYgPSAodTMyKW9mZjE2ICYjNDM7IG5vZGUtJmd0O3BhZ2Vfb2Zmc2V0ICYjNDM7IGJ5dGVfb2Zmc2V0OwomIzQzOwljdHgtJmd0O3BhZ2VfaWR4ID0gcGFnZV9vZmYgJmd0OyZndDsgUEFHRV9TSElGVDsKJiM0MzsJY3R4LSZndDtvZmYgPSBwYWdlX29mZiAmYW1wOyB+UEFHRV9NQVNLOwomIzQzOwomIzQzOwlyZXR1cm4gbm9kZS0mZ3Q7cGFnZVtjdHgtJmd0O3BhZ2VfaWR4XTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBoZnNfYm1hcF9jdHggY3R4OwomIzQzOwlzdHJ1Y3QgcGFnZSAqcGFnZTsKJiM0MzsJdTggKmJtYXAsIGJ5dGUsIG1hc2s7CiYjNDM7CiYjNDM7CXBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgJmFtcDtjdHgsIG5vZGVfYml0X2lkeCAvIEJJVFNfUEVSX0JZVEUpOwomIzQzOwlpZiAoSVNfRVJSKHBhZ2UpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlibWFwID0ga21hcF9sb2NhbF9wYWdlKHBhZ2UpOwomIzQzOwlieXRlID0gYm1hcFtjdHgub2ZmXTsKJiM0MzsJa3VubWFwX2xvY2FsKGJtYXApOwomIzQzOwomIzQzOwltYXNrID0gMSAmbHQ7Jmx0OyAoNyAtIChub2RlX2JpdF9pZHggJSBCSVRTX1BFUl9CWVRFKSk7CiYjNDM7CXJldHVybiAoYnl0ZSAmYW1wOyBtYXNrKSAhPSAwOwomIzQzO30KJiM0MzsKIHZvaWQgaGZzX2JtYXBfZnJlZShzdHJ1Y3QgaGZzX2Jub2RlICpub2RlKQogewogCXN0cnVjdCBoZnNfYnRyZWUgKnRyZWU7CmRpZmYgLS1naXQgYS9mcy9oZnMvYnRyZWUuaCBiL2ZzL2hmcy9idHJlZS5oCmluZGV4IDk5YmU4NThiMjQ0NjUwLi5mOGFmYTMzZjcwOWFkMiAxMDA2NDQKLS0tIGEvZnMvaGZzL2J0cmVlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2J0cmVlLmgKQEAgLTEyOSwzICYjNDM7MTI5LDQzIEBAIGV4dGVybiBpbnQgX19oZnNfYnJlY19maW5kKHN0cnVjdCBoZnNfYm5vZGUgKmJub2RlLCBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpOwogZXh0ZXJuIGludCBoZnNfYnJlY19maW5kKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCk7CiBleHRlcm4gaW50IGhmc19icmVjX3JlYWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB2b2lkICpyZWMsIHUzMiByZWNfbGVuKTsKIGV4dGVybiBpbnQgaGZzX2JyZWNfZ290byhzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIGludCBjbnQpOwomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19ibm9kZV9vZmZzZXRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZikKJiM0Mzt7CiYjNDM7CWJvb2wgaXNfdmFsaWQ7CiYjNDM7CiYjNDM7CWlmICghbm9kZSB8fCAhbm9kZS0mZ3Q7dHJlZSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaXNfdmFsaWQgPSBvZmYgJmx0OyBub2RlLSZndDt0cmVlLSZndDtub2RlX3NpemU7CiYjNDM7CiYjNDM7CWlmICghaXNfdmFsaWQpIHsKJiM0MzsJCXByX2VycigmIzM0O2ludmFsaWQgb2Zmc2V0OiBpZCAldSwgdHlwZSAleCwgaCAldSwgc3ogJXUsIG9mZiAldVxuJiMzNDssCiYjNDM7CQkgICAgICAgbm9kZS0mZ3Q7dGhpcywgbm9kZS0mZ3Q7dHlwZSwgbm9kZS0mZ3Q7aGVpZ2h0LAomIzQzOwkJICAgICAgIG5vZGUtJmd0O3RyZWUtJmd0O25vZGVfc2l6ZSwgb2ZmKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gaXNfdmFsaWQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgdTMyIGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZiwgdTMyIGxlbikKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBub2RlX3NpemU7CiYjNDM7CiYjNDM7CWlmICghaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKG5vZGUsIG9mZikpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJbm9kZV9zaXplID0gbm9kZS0mZ3Q7dHJlZS0mZ3Q7bm9kZV9zaXplOwomIzQzOwomIzQzOwlpZiAoKHU2NClvZmYgJiM0MzsgbGVuICZndDsgbm9kZV9zaXplKSB7CiYjNDM7CQl1MzIgbmV3X2xlbiA9IG5vZGVfc2l6ZSAtIG9mZjsKJiM0MzsKJiM0MzsJCXByX2VycigmIzM0O2NvcnJlY3RlZCBsZW46IGlkICV1LCB0eXBlICV4LCBoICV1LCBzeiAldSwgb2ZmICV1LCBsZW4gJXUtJmd0OyV1XG4mIzM0OywKJiM0MzsJCSAgICAgICBub2RlLSZndDt0aGlzLCBub2RlLSZndDt0eXBlLCBub2RlLSZndDtoZWlnaHQsCiYjNDM7CQkgICAgICAgbm9kZV9zaXplLCBvZmYsIGxlbiwgbmV3X2xlbik7CiYjNDM7CiYjNDM7CQlyZXR1cm4gbmV3X2xlbjsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gbGVuOwomIzQzO30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oIGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmgKaW5kZXggNDVmYjRjOWZmOWY1ZWUuLjhkYzEwZTBiZmE3ZTljIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaApAQCAtNTEwLDYgJiM0Mzs1MTAsMTEgQEAgc3RydWN0IGhmc19idHJlZV9oZWFkZXJfcmVjIHsKIAkJCQkJCSAgIGItdHJlZSBidXQgbm90IGluIGV4dGVudHMKIAkJCQkJCSAgIGItdHJlZSAoaGZzcGx1cykuICovCiAKJiM0MzsvKiBIRlMgQlRyZWUgbWlzYyBpbmZvICovCiYjNDM7I2RlZmluZSBIRlNfVFJFRV9IRUFECQkJCTAKJiM0MzsjZGVmaW5lIEhGU19CVFJFRV9IRFJfTUFQX1JFQ19JTkRFWAkJMgkvKiBNYXAgKGJpdG1hcCkgcmVjb3JkIGluIEhlYWRlciBub2RlICovCiYjNDM7I2RlZmluZSBIRlNfQlRSRUVfTUFQX05PREVfUkVDX0lOREVYCQkwCS8qIE1hcCByZWNvcmQgaW4gTWFwIE5vZGUgKi8KJiM0MzsKIC8qIEhGUyYjNDM7IEJUcmVlIG1pc2MgaW5mbyAqLwogI2RlZmluZSBIRlNQTFVTX1RSRUVfSEVBRAkJCTAKICNkZWZpbmUgSEZTUExVU19OT0RFX01YU1oJCQkzMjc2OAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSEZTIEZpbGVzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF04oCZcyBtYWtpbmcgc29tZSBpbnRlcmVzdGluZyBjaGFuZ2VzIHRvIHRoZSBIRlMgZmlsZXN5c3RlbSBjb2RlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGItdHJlZXMuIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGBmcy9oZnMvYm5vZGUuY2AsIGBmcy9oZnMvYnRyZWUuY2AsIGBmcy9oZnMvYnRyZWUuaGAsIGFuZCBgaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhgLiBMb29rcyBsaWtlIHRoZXkmIzM5O3JlIHNoaWZ0aW5nIGFyb3VuZCBzb21lIHZhbGlkYXRpb24gZnVuY3Rpb25zIOKAkyBgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkYCBhbmQgYGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGhgIOKAkyBmcm9tIGBibm9kZS5jYCB0byBgYnRyZWUuaGAsIG1ha2luZyB0aGVtIHN0YXRpYyBpbmxpbmUuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIG9wdGltaXphdGlvbiB0ZWNobmlxdWUgZm9yIHJlZHVjaW5nIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIHNvIEkgYXNzdW1lIHRoZXkgYXJlIGZyZXF1ZW50bHkgY2FsbGVkLgoKVGhlIGJpZyBmdW5jdGlvbmFsIGNoYW5nZSwgYXMgSSB1bmRlcnN0YW5kIGl0LCBzZWVtcyB0byBiZSB0aGUgaW50cm9kdWN0aW9uIG9mIGEgbmV3IGZ1bmN0aW9uLCBgaGZzX2JtYXBfdGVzdF9iaXRgLCBpbiBgYnRyZWUuY2AsIGFuZCBpdHMgc3Vic2VxdWVudCB1c2Ugd2l0aGluIGBoZnNfYnRyZWVfb3BlbmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhhdCBgaGZzX2JtYXBfdGVzdF9iaXRgIGNhbGwgd2l0aGluIHRoZSBgaGZzX2J0cmVlX29wZW5gIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIHRvIGJlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuIFdoeSBpcyB0aGUgYEhGU19UUkVFX0hFQURgIGJpdCBiZWluZyB0ZXN0ZWQ/IEFuZCwgaWYgaXQmIzM5O3Mgbm90IHNldCwgaXQmIzM5O3MgbWFya2luZyB0aGUgc3VwZXJibG9jayBhcyByZWFkLW9ubHkgKGBzYi0mZ3Q7c19mbGFncyB8PSBTQl9SRE9OTFlgKS4gVGhhdCBoYXMgaW1wbGljYXRpb25zIGZvciBob3cgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBhbmQgdXNlZC4gVGhpcyBzdWdnZXN0cyBpdCBtaWdodCBiZSBkZXRlY3Rpbmcgc29tZSBraW5kIG9mIGZpbGVzeXN0ZW0gY29ycnVwdGlvbiBvciBpbnRlZ3JpdHkgaXNzdWUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgbWFrZSBzdXJlIHRoaXMgSEZTIGNvZGUgcGF0aCBpcyBldmVuIHJlbGV2YW50LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgSEZTIGlzIGJ1aWx0IGFuZCBhY2Nlc3NpYmxlIGluIHRoZSB0YXJnZXQgc3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBgQ09ORklHX0hGU19GU2AgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoYXQmIzM5O3MgdGhlIGJhc2ljIHByZXJlcXVpc2l0ZS4KCkkgbmVlZCB0byBkaXZlIGludG8gYGZzL2hmcy9idHJlZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGxvb2sgYXQgYGhmc19idHJlZV9vcGVuYCB0byBzZWUgaG93IGl0IHdvcmtzIGFuZCB3aGVyZSB0aGF0IGBoZnNfYm1hcF90ZXN0X2JpdGAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBJIHdhbnQgdG8ga25vdyB3aGVuIGBoZnNfYnRyZWVfb3BlbmAgaXMgY2FsbGVkIGJlY2F1c2UgdGhhdCB3aWxsIGlsbHVtaW5hdGUgd2hlbiB0aGlzIGNvcnJ1cHRpb24gY2hlY2sgaGFwcGVucy4gSXQmIzM5O3MgbGlrZWx5IGR1cmluZyBtb3VudCBvciB3aGVuIG9wZW5pbmcgYnRyZWVzLCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbXBsaWVzLgoKVG8gbWFrZSB0aGlzIHF1aWNrZXIsIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgdG8gbG9jYXRlIHRoZSBvY2N1cnJlbmNlcyBvZiBib3RoIGBoZnNfYnRyZWVfb3BlbmAgYW5kIGBoZnNfYm1hcF90ZXN0X2JpdGAgd2l0aGluIHRoZSBjb2RlYmFzZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgaW1tZWRpYXRlIGNvbnRleHQgSSBuZWVkIHRvIHByb3Blcmx5IHVuZGVyc3RhbmQgdGhpcyBwYXRjaCBhbmQgYXNzZXNzIGl0cyBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGZzX2J0cmVlX29wZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmcy9idHJlZS5jPTE4PXN0YXRpYyBib29sIGhmc19ibWFwX3Rlc3RfYml0KHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBub2RlX2JpdF9pZHgpO1xuLS1cbmZzL2hmcy9idHJlZS5jLTIwLS8qIEdldCBhIHJlZmVyZW5jZSB0byBhIEIqVHJlZSBhbmQgZG8gc29tZSBpbml0aWFsIGNoZWNrcyAqL1xuZnMvaGZzL2J0cmVlLmM6MjE6c3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2V5Y21wKVxuZnMvaGZzL2J0cmVlLmMtMjIte1xuLS1cbmZzL2hmcy9idHJlZS5oPTc3PXN0cnVjdCBoZnNfZmluZF9kYXRhIHtcbi0tXG5mcy9oZnMvYnRyZWUuaC04OC0vKiBidHJlZS5jICovXG5mcy9oZnMvYnRyZWUuaDo4OTpleHRlcm4gc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLFxuZnMvaGZzL2J0cmVlLmgtOTAtXHRcdFx0XHRcdGJ0cmVlX2tleWNtcCBrZXljbXApO1xuLS1cbmZzL2hmcy9tZGIuYz05ND1pbnQgaGZzX21kYl9nZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9oZnMvbWRiLmMtMjI3LVxuZnMvaGZzL21kYi5jOjIyODpcdEhGU19TQihzYiktXHUwMDNlZXh0X3RyZWUgPSBoZnNfYnRyZWVfb3BlbihzYiwgSEZTX0VYVF9DTklELCBoZnNfZXh0X2tleWNtcCk7XG5mcy9oZnMvbWRiLmMtMjI5LVx0aWYgKCFIRlNfU0Ioc2IpLVx1MDAzZWV4dF90cmVlKSB7XG4tLVxuZnMvaGZzL21kYi5jLTIzMi1cdH1cbmZzL2hmcy9tZGIuYzoyMzM6XHRIRlNfU0Ioc2IpLVx1MDAzZWNhdF90cmVlID0gaGZzX2J0cmVlX29wZW4oc2IsIEhGU19DQVRfQ05JRCwgaGZzX2NhdF9rZXljbXApO1xuZnMvaGZzL21kYi5jLTIzNC1cdGlmICghSEZTX1NCKHNiKS1cdTAwM2VjYXRfdHJlZSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NTEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBIRlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYGhmc19ibWFwX3Rlc3RfYml0YCB3aXRoaW4gYGZzL2hmcy9idHJlZS5jYCBhbmQgc3Vic2VxdWVudGx5IGVtcGxveXMgaXQgd2l0aGluIGBoZnNfYnRyZWVfb3BlbmAuIFRoaXMgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQmIzM5O3MgZnVuY3Rpb25hbCwgZXNzZW50aWFsbHkgYWRkaW5nIGEgY2hlY2sgZm9yIGJpdG1hcCBjb3JydXB0aW9uLiBJZiBjb3JydXB0aW9uIGlzIGRldGVjdGVkLCBpdCBmb3JjZXMgdGhlIGZpbGVzeXN0ZW0gaW50byByZWFkLW9ubHkgbW9kZSwgd2hpY2ggaXMgYSBzZW5zaWJsZSBzYWZldHkgcHJlY2F1dGlvbi4KClRoZSBjYWxsIHBhdGggYXBwZWFycyB0byBiZSBgaGZzX21kYl9nZXRgIHdoaWNoIHRoZW4gbGVhZHMgZGlyZWN0bHkgdG8gYGhmc19idHJlZV9vcGVuYC4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBgaGZzX2J0cmVlX29wZW5gIGlzIGV4ZWN1dGVkIGR1cmluZyB0aGUgbW91bnQgcHJvY2Vzcy4gVGhlcmVmb3JlLCB0aGlzIGNvcnJ1cHRpb24gY2hlY2sgaXMgYWN0aXZlIGR1cmluZyB0aGUgaW5pdGlhbCBtb3VudGluZyBvZiB0aGUgSEZTIGZpbGVzeXN0ZW0uCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciBIRlMuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhbGlnbiB3aXRoIGhvdyB0aGlzIHBhdGNoIGlzIGludGVuZGVkIHRvIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBIRlMgaW1wbGVtZW50YXRpb24uIFRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBhbiBvcHRpb25hbCBmZWF0dXJlLCBvciBjb3JlIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEhGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2hmcy9LY29uZmlnOjI6Y29uZmlnIEhGU19GU1xuZnMvaGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIE1hY2ludG9zaCBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI3NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgSEZTX0ZTYCBjb25maWd1cmF0aW9uLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgdGhpcyBhc3BlY3Qgb2YgdGhlIGZpbGVzeXN0ZW0uIExldCYjMzk7cyBzZWUuLi4gYGhmc19idHJlZV9vcGVuYCBkZWZpbml0ZWx5IHN0YW5kcyBvdXQuIEkgc2hvdWxkIGFsc28gY2hlY2sgYGhmc19ibWFwX3Rlc3RfYml0YCBhbmQgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAsIHRob3NlIGNvdWxkIGJlIGltcG9ydGFudC4KClJpZ2h0LCB0aW1lIHRvIHNlZSBpZiB0aG9zZSBsYXN0IHR3bywgYGhmc19ibWFwX3Rlc3RfYml0YCBhbmQgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAsIGFyZSBzdGF0aWMgb3IgZXhwb3J0ZWQuIEFoLCB0aGV5IGFyZSBzdGF0aWMgd2l0aGluIGBmcy9oZnMvYnRyZWUuY2AuIE9rYXksIHRoYXQmIzM5O3MgdXNlZnVsIGNvbnRleHQuIEF0IGxlYXN0IGBoZnNfYnRyZWVfb3BlbmAgaXMgZ2xvYmFsIGFuZCBhY2Nlc3NpYmxlLgoKTm93LCBsZXQgbWUgZGl2ZSBpbnRvIGBmcy9oZnMvYnRyZWUuY2AgaXRzZWxmLiBJIHdhbnQgdG8gc2NhbiB0aGF0IGZpbGUgdGhvcm91Z2hseSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBJIG5lZWQgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hmc19ibWFwX3Rlc3RfYml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnMvYnRyZWUuYy0xNy1cbmZzL2hmcy9idHJlZS5jOjE4OnN0YXRpYyBib29sIGhmc19ibWFwX3Rlc3RfYml0KHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBub2RlX2JpdF9pZHgpO1xuZnMvaGZzL2J0cmVlLmMtMTktXG4tLVxuZnMvaGZzL2J0cmVlLmM9MjE9c3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2V5Y21wKVxuLS1cbmZzL2hmcy9idHJlZS5jLTE2NS1cbmZzL2hmcy9idHJlZS5jOjE2NjpcdGlmICghaGZzX2JtYXBfdGVzdF9iaXQobm9kZSwgSEZTX1RSRUVfSEVBRCkpIHtcbmZzL2hmcy9idHJlZS5jLTE2Ny1cdFx0cHJfd2FybihcJiMzNDsoJXMpOiAlcyAoY25pZCAweCV4KSBiaXRtYXAgY29ycnVwdGVkLCBmb3JjaW5nIHJkb25seVxcblwmIzM0Oyxcbi0tXG5mcy9oZnMvYnRyZWUuYz0zODc9c3RhdGljIHN0cnVjdCBwYWdlICpoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uoc3RydWN0IGhmc19ibm9kZSAqbm9kZSxcbi0tXG5mcy9oZnMvYnRyZWUuYy00MjYtXG5mcy9oZnMvYnRyZWUuYzo0Mjc6c3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeClcbmZzL2hmcy9idHJlZS5jLTQyOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAxOQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhGUyBGaWxlc3lzdGVtIEZ1bmN0aW9ucyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgbmV3IGZ1bmN0aW9ucyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhcmUgYGhmc19ibWFwX3Rlc3RfYml0YCBhbmQgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAuIFNpbmNlIHRoZXkmIzM5O3JlIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCBteSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIG5hcnJvdyB0aGUgZm9jdXMgdG8gYGhmc19idHJlZV9vcGVuYC4gQnV0IHRoZW4gSSByZW1lbWJlcmVkIHRoYXQgc3l6a2FsbGVyICpjYW4qIHRhcmdldCBzdGF0aWMgZnVuY3Rpb25zLCBwcm92aWRlZCB0aGV5JiMzOTtyZSByZXByZXNlbnRlZCBpbiB0aGUgZGVidWcgaW5mb3JtYXRpb24uIFRoYXQmIzM5O3MgZ29vZCBuZXdzLCBleHBhbmRzIHRoZSBwb3NzaWJpbGl0aWVzLgoKQWxyaWdodCwgbGV0JiMzOTtzIGluY2x1ZGUgYWxsIHRocmVlIGluIHRoZSBmdXp6aW5nIHNjb3BlOiBgaGZzX2J0cmVlX29wZW5gLCBgaGZzX2JtYXBfdGVzdF9iaXRgLCBhbmQgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAuIEdvdHRhIG1ha2Ugc3VyZSB3ZSBjb3ZlciB0aGUgZ3JvdW5kIHRob3JvdWdobHkuCgpOb3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrOiBgaGZzX2JtYXBfdGVzdF9iaXRgIGlzIGRlZmluaXRlbHkgdGhlIGNvcnJlY3QgbmFtZSwgYW5kIHRoZSBzYW1lIGdvZXMgZm9yIGBoZnNfYm1hcF9nZXRfbWFwX3BhZ2VgLiBDb25maXJtZWQuCgpOZXh0IHVwLCBjb25maWd1cmF0aW9ucy4gQXJlIHRoZXJlIGFueSBvdGhlciBmbGFncyBvciBkZXBlbmRlbmNpZXMgdG8gY29uc2lkZXI/IE5vcGUsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MganVzdCBgSEZTX0ZTYC4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhhdCBgSEZTX0ZTYCBpcyB0aGUgKm9ubHkqIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBDYW4mIzM5O3QgYmUgdG9vIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHVwIGEgZnV6emluZyBjYW1wYWlnbiwgeW91IGtub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnMvS2NvbmZpZz0yPWNvbmZpZyBIRlNfRlNcbmZzL2hmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBNYWNpbnRvc2ggZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuZnMvaGZzL0tjb25maWc6NDpcdGRlcGVuZHMgb24gQkxPQ0tcbmZzL2hmcy9LY29uZmlnLTUtXHRzZWxlY3QgQlVGRkVSX0hFQURcbi0tXG5mcy9oZnMvS2NvbmZpZz0xNz1jb25maWcgSEZTX0tVTklUX1RFU1RcbmZzL2hmcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIEhGUyBmaWxlc3lzdGVtXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbmZzL2hmcy9LY29uZmlnOjE5Olx0ZGVwZW5kcyBvbiBIRlNfRlMgXHUwMDI2XHUwMDI2IEtVTklUXG5mcy9oZnMvS2NvbmZpZy0yMC1cdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MDUKCQkJCQkJCW91dHB1dDogMTEzCgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhGUyBGaWxlc3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIGFmdGVyIHJldmlld2luZyB0aGUgcGF0Y2gsIGl0IHNlZW1zIGBIRlNfRlNgIGlzIHRoZSBuZWNlc3NhcnkgYW5kIHN1ZmZpY2llbnQgY29uZmlndXJhdGlvbiBvcHRpb24uIExldCBtZSBzeW50aGVzaXplIHdoYXQgSSYjMzk7dmUgZ2F0aGVyZWQuIE15IGFzc2Vzc21lbnQgaXMgYXMgZm9sbG93czoKCiogICAqKldvcnRoRnV6emluZyoqOiAqVHJ1ZSog4oCTIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLgoqICAgKipGb2N1c1N5bWJvbHMqKjogYGhmc19idHJlZV9vcGVuYCwgYGhmc19ibWFwX3Rlc3RfYml0YCwgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAg4oCTIHRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gdGFyZ2V0IGluIG15IGZ1enppbmcgZWZmb3J0cy4KKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgSEZTX0ZTYCDigJMgdGhpcyBpcyB0aGUgY3J1Y2lhbCBjb25maWd1cmF0aW9uIGZsYWcgdGhhdCBlbmFibGVzIHRoZSByZWxldmFudCBjb2RlIHBhdGguCiogICAqKlJlYXNvbmluZyoqOiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY2hlY2tzIGZvciBwb3RlbnRpYWwgYml0bWFwIGNvcnJ1cHRpb24gd2l0aGluIHRoZSBIRlMgQi10cmVlIHN0cnVjdHVyZSBzcGVjaWZpY2FsbHkgZHVyaW5nIHRoZSBgbW91bnRgIGZ1bmN0aW9uLiBDcnVjaWFsbHksIGlmIGNvcnJ1cHRpb24gaXMgZGV0ZWN0ZWQsIGl0IGZvcmNlcyB0aGUgZmlsZXN5c3RlbSBpbnRvIHJlYWQtb25seSBtb2RlIHRvIHByZXZlbnQgZGF0YSBsb3NzLiBUaGlzIGlzICpyZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlKiBhbmQgcmVwcmVzZW50cyBhIGNyaXRpY2FsIHBvaW50IGluIHRoZSBmaWxlc3lzdGVtIGxpZmVjeWNsZSwgdGhlcmVmb3JlIGEgaGlnaC12YWx1ZSBmdXp6aW5nIHRhcmdldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19idHJlZV9vcGVuJiMzNDssCiAgICAmIzM0O2hmc19ibWFwX3Rlc3RfYml0JiMzNDssCiAgICAmIzM0O2hmc19ibWFwX2dldF9tYXBfcGFnZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG5ldyBsb2dpYyB0byBjaGVjayBmb3IgYml0bWFwIGNvcnJ1cHRpb24gZHVyaW5nIEItdHJlZSBvcGVuIGluIHRoZSBIRlMgZmlsZXN5c3RlbSwgZm9yY2luZyB0aGUgZmlsZXN5c3RlbSB0byByZWFkLW9ubHkgaWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZC4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNfYnRyZWVfb3BlbiYjMzQ7LAogICAgJiMzNDtoZnNfYm1hcF90ZXN0X2JpdCYjMzQ7LAogICAgJiMzNDtoZnNfYm1hcF9nZXRfbWFwX3BhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgbG9naWMgdG8gY2hlY2sgZm9yIGJpdG1hcCBjb3JydXB0aW9uIGR1cmluZyBCLXRyZWUgb3BlbiBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0sIGZvcmNpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gcmVhZC1vbmx5IGlmIGNvcnJ1cHRpb24gaXMgZGV0ZWN0ZWQuIFRoaXMgaXMgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY29kZSBkdXJpbmcgZmlsZXN5c3RlbSBtb3VudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjI1LjEyNTA5MzUxOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4Mzk1NDI5MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhmc19idHJlZV9vcGVuXCIsXG4gICAgXCJoZnNfYm1hcF90ZXN0X2JpdFwiLFxuICAgIFwiaGZzX2JtYXBfZ2V0X21hcF9wYWdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgbG9naWMgdG8gY2hlY2sgZm9yIGJpdG1hcCBjb3JydXB0aW9uIGR1cmluZyBCLXRyZWUgb3BlbiBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0sIGZvcmNpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gcmVhZC1vbmx5IGlmIGNvcnJ1cHRpb24gaXMgZGV0ZWN0ZWQuIFRoaXMgaXMgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY29kZSBkdXJpbmcgZmlsZXN5c3RlbSBtb3VudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6NTk6MjUuMTI1MDk4NDU4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTkyMzQxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzZjQzNTRjNDIwN2I4MzFlZTg2NDhjNGQyMTYzZjAwMmQ1MTc1OWY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDE0IDEzOjU5OjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9ibm9kZS5jIGIvZnMvaGZzL2Jub2RlLmNcXG5pbmRleCBkYThlNTM0MmM5MWNjMi4uMWIzMzExMDhkOWMwMWIgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzL2Jub2RlLmNcXG4rKysgYi9mcy9oZnMvYm5vZGUuY1xcbkBAIC0xNSw0OCArMTUsNiBAQFxcbiBcXG4gI2luY2x1ZGUgXFxcImJ0cmVlLmhcXFwiXFxuIFxcbi1zdGF0aWMgaW5saW5lXFxuLWJvb2wgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYpXFxuLXtcXG4tXFx0Ym9vbCBpc192YWxpZCA9IG9mZiBcXHUwMDNjIG5vZGUtXFx1MDAzZXRyZWUtXFx1MDAzZW5vZGVfc2l6ZTtcXG4tXFxuLVxcdGlmICghaXNfdmFsaWQpIHtcXG4tXFx0XFx0cHJfZXJyKFxcXCJyZXF1ZXN0ZWQgaW52YWxpZCBvZmZzZXQ6IFxcXCJcXG4tXFx0XFx0ICAgICAgIFxcXCJOT0RFOiBpZCAldSwgdHlwZSAlI3gsIGhlaWdodCAldSwgXFxcIlxcbi1cXHRcXHQgICAgICAgXFxcIm5vZGVfc2l6ZSAldSwgb2Zmc2V0ICV1XFxcXG5cXFwiLFxcbi1cXHRcXHQgICAgICAgbm9kZS1cXHUwMDNldGhpcywgbm9kZS1cXHUwMDNldHlwZSwgbm9kZS1cXHUwMDNlaGVpZ2h0LFxcbi1cXHRcXHQgICAgICAgbm9kZS1cXHUwMDNldHJlZS1cXHUwMDNlbm9kZV9zaXplLCBvZmYpO1xcbi1cXHR9XFxuLVxcbi1cXHRyZXR1cm4gaXNfdmFsaWQ7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbmxpbmVcXG4tdTMyIGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZiwgdTMyIGxlbilcXG4te1xcbi1cXHR1bnNpZ25lZCBpbnQgbm9kZV9zaXplO1xcbi1cXG4tXFx0aWYgKCFpc19ibm9kZV9vZmZzZXRfdmFsaWQobm9kZSwgb2ZmKSlcXG4tXFx0XFx0cmV0dXJuIDA7XFxuLVxcbi1cXHRub2RlX3NpemUgPSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemU7XFxuLVxcbi1cXHRpZiAoKHU2NClvZmYgKyBsZW4gXFx1MDAzZSBub2RlX3NpemUpIHtcXG4tXFx0XFx0dTMyIG5ld19sZW4gPSBub2RlX3NpemUgLSBvZmY7XFxuLVxcbi1cXHRcXHRwcl9lcnIoXFxcInJlcXVlc3RlZCBsZW5ndGggaGFzIGJlZW4gY29ycmVjdGVkOiBcXFwiXFxuLVxcdFxcdCAgICAgICBcXFwiTk9ERTogaWQgJXUsIHR5cGUgJSN4LCBoZWlnaHQgJXUsIFxcXCJcXG4tXFx0XFx0ICAgICAgIFxcXCJub2RlX3NpemUgJXUsIG9mZnNldCAldSwgXFxcIlxcbi1cXHRcXHQgICAgICAgXFxcInJlcXVlc3RlZF9sZW4gJXUsIGNvcnJlY3RlZF9sZW4gJXVcXFxcblxcXCIsXFxuLVxcdFxcdCAgICAgICBub2RlLVxcdTAwM2V0aGlzLCBub2RlLVxcdTAwM2V0eXBlLCBub2RlLVxcdTAwM2VoZWlnaHQsXFxuLVxcdFxcdCAgICAgICBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemUsIG9mZiwgbGVuLCBuZXdfbGVuKTtcXG4tXFxuLVxcdFxcdHJldHVybiBuZXdfbGVuO1xcbi1cXHR9XFxuLVxcbi1cXHRyZXR1cm4gbGVuO1xcbi19XFxuLVxcbiB2b2lkIGhmc19ibm9kZV9yZWFkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHZvaWQgKmJ1ZiwgdTMyIG9mZiwgdTMyIGxlbilcXG4ge1xcbiBcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2J0cmVlLmMgYi9mcy9oZnMvYnRyZWUuY1xcbmluZGV4IDJlYjM3YTJmNjRlODY2Li4yYzg0MTIyMWM0NWNlZCAxMDA2NDRcXG4tLS0gYS9mcy9oZnMvYnRyZWUuY1xcbisrKyBiL2ZzL2hmcy9idHJlZS5jXFxuQEAgLTE1LDYgKzE1LDggQEBcXG4gXFxuICNpbmNsdWRlIFxcXCJidHJlZS5oXFxcIlxcbiBcXG4rc3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeCk7XFxuK1xcbiAvKiBHZXQgYSByZWZlcmVuY2UgdG8gYSBCKlRyZWUgYW5kIGRvIHNvbWUgaW5pdGlhbCBjaGVja3MgKi9cXG4gc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2V5Y21wKVxcbiB7XFxuQEAgLTIzLDYgKzI1LDcgQEAgc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2VcXG4gXFx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7XFxuIFxcdHN0cnVjdCBmb2xpbyAqZm9saW87XFxuIFxcdHN0cnVjdCBidWZmZXJfaGVhZCAqYmg7XFxuK1xcdHN0cnVjdCBoZnNfYm5vZGUgKm5vZGU7XFxuIFxcdHVuc2lnbmVkIGludCBzaXplO1xcbiBcXHR1MTYgZGJsb2NrO1xcbiBcXHRzZWN0b3JfdCBzdGFydF9ibG9jaztcXG5AQCAtMTU1LDYgKzE1OCwyMCBAQCBzdHJ1Y3QgaGZzX2J0cmVlICpoZnNfYnRyZWVfb3BlbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgaWQsIGJ0cmVlX2tleWNtcCBrZVxcbiBcXHRrdW5tYXBfbG9jYWwoaGVhZCk7XFxuIFxcdGZvbGlvX3VubG9jayhmb2xpbyk7XFxuIFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuK1xcbitcXHRub2RlID0gaGZzX2Jub2RlX2ZpbmQodHJlZSwgSEZTX1RSRUVfSEVBRCk7XFxuK1xcdGlmIChJU19FUlIobm9kZSkpXFxuK1xcdFxcdGdvdG8gZnJlZV9pbm9kZTtcXG4rXFxuK1xcdGlmICghaGZzX2JtYXBfdGVzdF9iaXQobm9kZSwgSEZTX1RSRUVfSEVBRCkpIHtcXG4rXFx0XFx0cHJfd2FybihcXFwiKCVzKTogJXMgKGNuaWQgMHgleCkgYml0bWFwIGNvcnJ1cHRlZCwgZm9yY2luZyByZG9ubHlcXFxcblxcXCIsXFxuK1xcdFxcdFxcdHNiLVxcdTAwM2VzX2lkLCBpZCA9PSBIRlNfRVhUX0NOSUQgPyBcXFwiZXh0ZW50c1xcXCIgOiBcXFwiY2F0YWxvZ1xcXCIsIGlkKTtcXG4rXFx0XFx0cHJfd2FybihcXFwiUnVuIGZzY2suaGZzIHRvIHJlcGFpci5cXFxcblxcXCIpO1xcbitcXHRcXHRzYi1cXHUwMDNlc19mbGFncyB8PSBTQl9SRE9OTFk7XFxuK1xcdH1cXG4rXFxuK1xcdGhmc19ibm9kZV9wdXQobm9kZSk7XFxuK1xcbiBcXHRyZXR1cm4gdHJlZTtcXG4gXFxuIGZhaWxfZm9saW86XFxuQEAgLTM1Niw2ICszNzMsNzUgQEAgc3RydWN0IGhmc19ibm9kZSAqaGZzX2JtYXBfYWxsb2Moc3RydWN0IGhmc19idHJlZSAqdHJlZSlcXG4gXFx0fVxcbiB9XFxuIFxcbisvKiBDb250ZXh0IGZvciBpdGVyYXRpbmcgYi10cmVlIG1hcCBwYWdlc1xcbisgKiBAcGFnZV9pZHg6IFRoZSBpbmRleCBvZiB0aGUgcGFnZSB3aXRoaW4gdGhlIGItbm9kZSdzIHBhZ2UgYXJyYXlcXG4rICogQG9mZjogVGhlIGJ5dGUgb2Zmc2V0IHdpdGhpbiB0aGUgbWFwcGVkIHBhZ2VcXG4rICogQGxlbjogVGhlIHJlbWFpbmluZyBsZW5ndGggb2YgdGhlIG1hcCByZWNvcmRcXG4rICovXFxuK3N0cnVjdCBoZnNfYm1hcF9jdHgge1xcbitcXHR1bnNpZ25lZCBpbnQgcGFnZV9pZHg7XFxuK1xcdHVuc2lnbmVkIGludCBvZmY7XFxuK1xcdHUxNiBsZW47XFxuK307XFxuK1xcbitzdGF0aWMgc3RydWN0IHBhZ2UgKmhmc19ibWFwX2dldF9tYXBfcGFnZShzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLFxcbitcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBoZnNfYm1hcF9jdHggKmN0eCxcXG4rXFx0XFx0XFx0XFx0XFx0ICB1MzIgYnl0ZV9vZmZzZXQpXFxuK3tcXG4rXFx0dTE2IHJlY19pZHgsIG9mZjE2O1xcbitcXHR1bnNpZ25lZCBpbnQgcGFnZV9vZmY7XFxuK1xcbitcXHRpZiAobm9kZS1cXHUwMDNldGhpcyA9PSBIRlNfVFJFRV9IRUFEKSB7XFxuK1xcdFxcdGlmIChub2RlLVxcdTAwM2V0eXBlICE9IEhGU19OT0RFX0hFQURFUikge1xcbitcXHRcXHRcXHRwcl9lcnIoXFxcImhmczogaW52YWxpZCBidHJlZSBoZWFkZXIgbm9kZVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xcbitcXHRcXHR9XFxuK1xcdFxcdHJlY19pZHggPSBIRlNfQlRSRUVfSERSX01BUF9SRUNfSU5ERVg7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChub2RlLVxcdTAwM2V0eXBlICE9IEhGU19OT0RFX01BUCkge1xcbitcXHRcXHRcXHRwcl9lcnIoXFxcImhmczogaW52YWxpZCBidHJlZSBtYXAgbm9kZVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xcbitcXHRcXHR9XFxuK1xcdFxcdHJlY19pZHggPSBIRlNfQlRSRUVfTUFQX05PREVfUkVDX0lOREVYO1xcbitcXHR9XFxuK1xcbitcXHRjdHgtXFx1MDAzZWxlbiA9IGhmc19icmVjX2xlbm9mZihub2RlLCByZWNfaWR4LCBcXHUwMDI2b2ZmMTYpO1xcbitcXHRpZiAoIWN0eC1cXHUwMDNlbGVuKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTtcXG4rXFxuK1xcdGlmICghaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKG5vZGUsIG9mZjE2KSlcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XFxuK1xcbitcXHRjdHgtXFx1MDAzZWxlbiA9IGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgobm9kZSwgb2ZmMTYsIGN0eC1cXHUwMDNlbGVuKTtcXG4rXFxuK1xcdGlmIChieXRlX29mZnNldCBcXHUwMDNlPSBjdHgtXFx1MDAzZWxlbilcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuK1xcbitcXHRwYWdlX29mZiA9ICh1MzIpb2ZmMTYgKyBub2RlLVxcdTAwM2VwYWdlX29mZnNldCArIGJ5dGVfb2Zmc2V0O1xcbitcXHRjdHgtXFx1MDAzZXBhZ2VfaWR4ID0gcGFnZV9vZmYgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVDtcXG4rXFx0Y3R4LVxcdTAwM2VvZmYgPSBwYWdlX29mZiBcXHUwMDI2IH5QQUdFX01BU0s7XFxuK1xcbitcXHRyZXR1cm4gbm9kZS1cXHUwMDNlcGFnZVtjdHgtXFx1MDAzZXBhZ2VfaWR4XTtcXG4rfVxcbitcXG4rc3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeClcXG4re1xcbitcXHRzdHJ1Y3QgaGZzX2JtYXBfY3R4IGN0eDtcXG4rXFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuK1xcdHU4ICpibWFwLCBieXRlLCBtYXNrO1xcbitcXG4rXFx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcXHUwMDI2Y3R4LCBub2RlX2JpdF9pZHggLyBCSVRTX1BFUl9CWVRFKTtcXG4rXFx0aWYgKElTX0VSUihwYWdlKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0Ym1hcCA9IGttYXBfbG9jYWxfcGFnZShwYWdlKTtcXG4rXFx0Ynl0ZSA9IGJtYXBbY3R4Lm9mZl07XFxuK1xcdGt1bm1hcF9sb2NhbChibWFwKTtcXG4rXFxuK1xcdG1hc2sgPSAxIFxcdTAwM2NcXHUwMDNjICg3IC0gKG5vZGVfYml0X2lkeCAlIEJJVFNfUEVSX0JZVEUpKTtcXG4rXFx0cmV0dXJuIChieXRlIFxcdTAwMjYgbWFzaykgIT0gMDtcXG4rfVxcbitcXG4gdm9pZCBoZnNfYm1hcF9mcmVlKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUpXFxuIHtcXG4gXFx0c3RydWN0IGhmc19idHJlZSAqdHJlZTtcXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2J0cmVlLmggYi9mcy9oZnMvYnRyZWUuaFxcbmluZGV4IDk5YmU4NThiMjQ0NjUwLi5mOGFmYTMzZjcwOWFkMiAxMDA2NDRcXG4tLS0gYS9mcy9oZnMvYnRyZWUuaFxcbisrKyBiL2ZzL2hmcy9idHJlZS5oXFxuQEAgLTEyOSwzICsxMjksNDMgQEAgZXh0ZXJuIGludCBfX2hmc19icmVjX2ZpbmQoc3RydWN0IGhmc19ibm9kZSAqYm5vZGUsIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCk7XFxuIGV4dGVybiBpbnQgaGZzX2JyZWNfZmluZChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpO1xcbiBleHRlcm4gaW50IGhmc19icmVjX3JlYWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB2b2lkICpyZWMsIHUzMiByZWNfbGVuKTtcXG4gZXh0ZXJuIGludCBoZnNfYnJlY19nb3RvKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaW50IGNudCk7XFxuK1xcbitzdGF0aWMgaW5saW5lIGJvb2wgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYpXFxuK3tcXG4rXFx0Ym9vbCBpc192YWxpZDtcXG4rXFxuK1xcdGlmICghbm9kZSB8fCAhbm9kZS1cXHUwMDNldHJlZSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aXNfdmFsaWQgPSBvZmYgXFx1MDAzYyBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemU7XFxuK1xcbitcXHRpZiAoIWlzX3ZhbGlkKSB7XFxuK1xcdFxcdHByX2VycihcXFwiaW52YWxpZCBvZmZzZXQ6IGlkICV1LCB0eXBlICV4LCBoICV1LCBzeiAldSwgb2ZmICV1XFxcXG5cXFwiLFxcbitcXHRcXHQgICAgICAgbm9kZS1cXHUwMDNldGhpcywgbm9kZS1cXHUwMDNldHlwZSwgbm9kZS1cXHUwMDNlaGVpZ2h0LFxcbitcXHRcXHQgICAgICAgbm9kZS1cXHUwMDNldHJlZS1cXHUwMDNlbm9kZV9zaXplLCBvZmYpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gaXNfdmFsaWQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgdTMyIGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZiwgdTMyIGxlbilcXG4re1xcbitcXHR1bnNpZ25lZCBpbnQgbm9kZV9zaXplO1xcbitcXG4rXFx0aWYgKCFpc19ibm9kZV9vZmZzZXRfdmFsaWQobm9kZSwgb2ZmKSlcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRub2RlX3NpemUgPSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemU7XFxuK1xcbitcXHRpZiAoKHU2NClvZmYgKyBsZW4gXFx1MDAzZSBub2RlX3NpemUpIHtcXG4rXFx0XFx0dTMyIG5ld19sZW4gPSBub2RlX3NpemUgLSBvZmY7XFxuK1xcbitcXHRcXHRwcl9lcnIoXFxcImNvcnJlY3RlZCBsZW46IGlkICV1LCB0eXBlICV4LCBoICV1LCBzeiAldSwgb2ZmICV1LCBsZW4gJXUtXFx1MDAzZSV1XFxcXG5cXFwiLFxcbitcXHRcXHQgICAgICAgbm9kZS1cXHUwMDNldGhpcywgbm9kZS1cXHUwMDNldHlwZSwgbm9kZS1cXHUwMDNlaGVpZ2h0LFxcbitcXHRcXHQgICAgICAgbm9kZV9zaXplLCBvZmYsIGxlbiwgbmV3X2xlbik7XFxuK1xcbitcXHRcXHRyZXR1cm4gbmV3X2xlbjtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIGxlbjtcXG4rfVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaCBiL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oXFxuaW5kZXggNDVmYjRjOWZmOWY1ZWUuLjhkYzEwZTBiZmE3ZTljIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcXG5AQCAtNTEwLDYgKzUxMCwxMSBAQCBzdHJ1Y3QgaGZzX2J0cmVlX2hlYWRlcl9yZWMge1xcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICBiLXRyZWUgYnV0IG5vdCBpbiBleHRlbnRzXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgIGItdHJlZSAoaGZzcGx1cykuICovXFxuIFxcbisvKiBIRlMgQlRyZWUgbWlzYyBpbmZvICovXFxuKyNkZWZpbmUgSEZTX1RSRUVfSEVBRFxcdFxcdFxcdFxcdDBcXG4rI2RlZmluZSBIRlNfQlRSRUVfSERSX01BUF9SRUNfSU5ERVhcXHRcXHQyXFx0LyogTWFwIChiaXRtYXApIHJlY29yZCBpbiBIZWFkZXIgbm9kZSAqL1xcbisjZGVmaW5lIEhGU19CVFJFRV9NQVBfTk9ERV9SRUNfSU5ERVhcXHRcXHQwXFx0LyogTWFwIHJlY29yZCBpbiBNYXAgTm9kZSAqL1xcbitcXG4gLyogSEZTKyBCVHJlZSBtaXNjIGluZm8gKi9cXG4gI2RlZmluZSBIRlNQTFVTX1RSRUVfSEVBRFxcdFxcdFxcdDBcXG4gI2RlZmluZSBIRlNQTFVTX05PREVfTVhTWlxcdFxcdFxcdDMyNzY4XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjI1LjQ4NTA5NjA3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwMzU0MTY3MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGZzX2J0cmVlX29wZW5cIixcbiAgICBcImhmc19ibWFwX3Rlc3RfYml0XCIsXG4gICAgXCJoZnNfYm1hcF9nZXRfbWFwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG5ldyBsb2dpYyB0byBjaGVjayBmb3IgYml0bWFwIGNvcnJ1cHRpb24gZHVyaW5nIEItdHJlZSBvcGVuIGluIHRoZSBIRlMgZmlsZXN5c3RlbSwgZm9yY2luZyB0aGUgZmlsZXN5c3RlbSB0byByZWFkLW9ubHkgaWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZC4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNmNDM1NGM0MjA3YjgzMWVlODY0OGM0ZDIxNjNmMDAyZDUxNzU5ZjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAxMzo1OToyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9ibm9kZS5jIGIvZnMvaGZzL2Jub2RlLmNcbmluZGV4IGRhOGU1MzQyYzkxY2MyLi4xYjMzMTEwOGQ5YzAxYiAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9ibm9kZS5jXG4rKysgYi9mcy9oZnMvYm5vZGUuY1xuQEAgLTE1LDQ4ICsxNSw2IEBAXG4gXG4gI2luY2x1ZGUgXCJidHJlZS5oXCJcbiBcbi1zdGF0aWMgaW5saW5lXG4tYm9vbCBpc19ibm9kZV9vZmZzZXRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZilcbi17XG4tXHRib29sIGlzX3ZhbGlkID0gb2ZmIFx1MDAzYyBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplO1xuLVxuLVx0aWYgKCFpc192YWxpZCkge1xuLVx0XHRwcl9lcnIoXCJyZXF1ZXN0ZWQgaW52YWxpZCBvZmZzZXQ6IFwiXG4tXHRcdCAgICAgICBcIk5PREU6IGlkICV1LCB0eXBlICUjeCwgaGVpZ2h0ICV1LCBcIlxuLVx0XHQgICAgICAgXCJub2RlX3NpemUgJXUsIG9mZnNldCAldVxcblwiLFxuLVx0XHQgICAgICAgbm9kZS1cdTAwM2V0aGlzLCBub2RlLVx1MDAzZXR5cGUsIG5vZGUtXHUwMDNlaGVpZ2h0LFxuLVx0XHQgICAgICAgbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSwgb2ZmKTtcbi1cdH1cbi1cbi1cdHJldHVybiBpc192YWxpZDtcbi19XG4tXG4tc3RhdGljIGlubGluZVxuLXUzMiBjaGVja19hbmRfY29ycmVjdF9yZXF1ZXN0ZWRfbGVuZ3RoKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYsIHUzMiBsZW4pXG4te1xuLVx0dW5zaWduZWQgaW50IG5vZGVfc2l6ZTtcbi1cbi1cdGlmICghaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKG5vZGUsIG9mZikpXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0bm9kZV9zaXplID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZTtcbi1cbi1cdGlmICgodTY0KW9mZiArIGxlbiBcdTAwM2Ugbm9kZV9zaXplKSB7XG4tXHRcdHUzMiBuZXdfbGVuID0gbm9kZV9zaXplIC0gb2ZmO1xuLVxuLVx0XHRwcl9lcnIoXCJyZXF1ZXN0ZWQgbGVuZ3RoIGhhcyBiZWVuIGNvcnJlY3RlZDogXCJcbi1cdFx0ICAgICAgIFwiTk9ERTogaWQgJXUsIHR5cGUgJSN4LCBoZWlnaHQgJXUsIFwiXG4tXHRcdCAgICAgICBcIm5vZGVfc2l6ZSAldSwgb2Zmc2V0ICV1LCBcIlxuLVx0XHQgICAgICAgXCJyZXF1ZXN0ZWRfbGVuICV1LCBjb3JyZWN0ZWRfbGVuICV1XFxuXCIsXG4tXHRcdCAgICAgICBub2RlLVx1MDAzZXRoaXMsIG5vZGUtXHUwMDNldHlwZSwgbm9kZS1cdTAwM2VoZWlnaHQsXG4tXHRcdCAgICAgICBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplLCBvZmYsIGxlbiwgbmV3X2xlbik7XG4tXG4tXHRcdHJldHVybiBuZXdfbGVuO1xuLVx0fVxuLVxuLVx0cmV0dXJuIGxlbjtcbi19XG4tXG4gdm9pZCBoZnNfYm5vZGVfcmVhZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB2b2lkICpidWYsIHUzMiBvZmYsIHUzMiBsZW4pXG4ge1xuIFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2J0cmVlLmMgYi9mcy9oZnMvYnRyZWUuY1xuaW5kZXggMmViMzdhMmY2NGU4NjYuLjJjODQxMjIxYzQ1Y2VkIDEwMDY0NFxuLS0tIGEvZnMvaGZzL2J0cmVlLmNcbisrKyBiL2ZzL2hmcy9idHJlZS5jXG5AQCAtMTUsNiArMTUsOCBAQFxuIFxuICNpbmNsdWRlIFwiYnRyZWUuaFwiXG4gXG4rc3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeCk7XG4rXG4gLyogR2V0IGEgcmVmZXJlbmNlIHRvIGEgQipUcmVlIGFuZCBkbyBzb21lIGluaXRpYWwgY2hlY2tzICovXG4gc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2V5Y21wKVxuIHtcbkBAIC0yMyw2ICsyNSw3IEBAIHN0cnVjdCBoZnNfYnRyZWUgKmhmc19idHJlZV9vcGVuKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpZCwgYnRyZWVfa2V5Y21wIGtlXG4gXHRzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZztcbiBcdHN0cnVjdCBmb2xpbyAqZm9saW87XG4gXHRzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoO1xuK1x0c3RydWN0IGhmc19ibm9kZSAqbm9kZTtcbiBcdHVuc2lnbmVkIGludCBzaXplO1xuIFx0dTE2IGRibG9jaztcbiBcdHNlY3Rvcl90IHN0YXJ0X2Jsb2NrO1xuQEAgLTE1NSw2ICsxNTgsMjAgQEAgc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2VcbiBcdGt1bm1hcF9sb2NhbChoZWFkKTtcbiBcdGZvbGlvX3VubG9jayhmb2xpbyk7XG4gXHRmb2xpb19wdXQoZm9saW8pO1xuK1xuK1x0bm9kZSA9IGhmc19ibm9kZV9maW5kKHRyZWUsIEhGU19UUkVFX0hFQUQpO1xuK1x0aWYgKElTX0VSUihub2RlKSlcbitcdFx0Z290byBmcmVlX2lub2RlO1xuK1xuK1x0aWYgKCFoZnNfYm1hcF90ZXN0X2JpdChub2RlLCBIRlNfVFJFRV9IRUFEKSkge1xuK1x0XHRwcl93YXJuKFwiKCVzKTogJXMgKGNuaWQgMHgleCkgYml0bWFwIGNvcnJ1cHRlZCwgZm9yY2luZyByZG9ubHlcXG5cIixcbitcdFx0XHRzYi1cdTAwM2VzX2lkLCBpZCA9PSBIRlNfRVhUX0NOSUQgPyBcImV4dGVudHNcIiA6IFwiY2F0YWxvZ1wiLCBpZCk7XG4rXHRcdHByX3dhcm4oXCJSdW4gZnNjay5oZnMgdG8gcmVwYWlyLlxcblwiKTtcbitcdFx0c2ItXHUwMDNlc19mbGFncyB8PSBTQl9SRE9OTFk7XG4rXHR9XG4rXG4rXHRoZnNfYm5vZGVfcHV0KG5vZGUpO1xuK1xuIFx0cmV0dXJuIHRyZWU7XG4gXG4gZmFpbF9mb2xpbzpcbkBAIC0zNTYsNiArMzczLDc1IEBAIHN0cnVjdCBoZnNfYm5vZGUgKmhmc19ibWFwX2FsbG9jKHN0cnVjdCBoZnNfYnRyZWUgKnRyZWUpXG4gXHR9XG4gfVxuIFxuKy8qIENvbnRleHQgZm9yIGl0ZXJhdGluZyBiLXRyZWUgbWFwIHBhZ2VzXG4rICogQHBhZ2VfaWR4OiBUaGUgaW5kZXggb2YgdGhlIHBhZ2Ugd2l0aGluIHRoZSBiLW5vZGUncyBwYWdlIGFycmF5XG4rICogQG9mZjogVGhlIGJ5dGUgb2Zmc2V0IHdpdGhpbiB0aGUgbWFwcGVkIHBhZ2VcbisgKiBAbGVuOiBUaGUgcmVtYWluaW5nIGxlbmd0aCBvZiB0aGUgbWFwIHJlY29yZFxuKyAqL1xuK3N0cnVjdCBoZnNfYm1hcF9jdHgge1xuK1x0dW5zaWduZWQgaW50IHBhZ2VfaWR4O1xuK1x0dW5zaWduZWQgaW50IG9mZjtcbitcdHUxNiBsZW47XG4rfTtcbitcbitzdGF0aWMgc3RydWN0IHBhZ2UgKmhmc19ibWFwX2dldF9tYXBfcGFnZShzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLFxuK1x0XHRcdFx0XHQgIHN0cnVjdCBoZnNfYm1hcF9jdHggKmN0eCxcbitcdFx0XHRcdFx0ICB1MzIgYnl0ZV9vZmZzZXQpXG4re1xuK1x0dTE2IHJlY19pZHgsIG9mZjE2O1xuK1x0dW5zaWduZWQgaW50IHBhZ2Vfb2ZmO1xuK1xuK1x0aWYgKG5vZGUtXHUwMDNldGhpcyA9PSBIRlNfVFJFRV9IRUFEKSB7XG4rXHRcdGlmIChub2RlLVx1MDAzZXR5cGUgIT0gSEZTX05PREVfSEVBREVSKSB7XG4rXHRcdFx0cHJfZXJyKFwiaGZzOiBpbnZhbGlkIGJ0cmVlIGhlYWRlciBub2RlXFxuXCIpO1xuK1x0XHRcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xuK1x0XHR9XG4rXHRcdHJlY19pZHggPSBIRlNfQlRSRUVfSERSX01BUF9SRUNfSU5ERVg7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAobm9kZS1cdTAwM2V0eXBlICE9IEhGU19OT0RFX01BUCkge1xuK1x0XHRcdHByX2VycihcImhmczogaW52YWxpZCBidHJlZSBtYXAgbm9kZVxcblwiKTtcbitcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlPKTtcbitcdFx0fVxuK1x0XHRyZWNfaWR4ID0gSEZTX0JUUkVFX01BUF9OT0RFX1JFQ19JTkRFWDtcbitcdH1cbitcbitcdGN0eC1cdTAwM2VsZW4gPSBoZnNfYnJlY19sZW5vZmYobm9kZSwgcmVjX2lkeCwgXHUwMDI2b2ZmMTYpO1xuK1x0aWYgKCFjdHgtXHUwMDNlbGVuKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTtcbitcbitcdGlmICghaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKG5vZGUsIG9mZjE2KSlcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4rXG4rXHRjdHgtXHUwMDNlbGVuID0gY2hlY2tfYW5kX2NvcnJlY3RfcmVxdWVzdGVkX2xlbmd0aChub2RlLCBvZmYxNiwgY3R4LVx1MDAzZWxlbik7XG4rXG4rXHRpZiAoYnl0ZV9vZmZzZXQgXHUwMDNlPSBjdHgtXHUwMDNlbGVuKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbitcbitcdHBhZ2Vfb2ZmID0gKHUzMilvZmYxNiArIG5vZGUtXHUwMDNlcGFnZV9vZmZzZXQgKyBieXRlX29mZnNldDtcbitcdGN0eC1cdTAwM2VwYWdlX2lkeCA9IHBhZ2Vfb2ZmIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuK1x0Y3R4LVx1MDAzZW9mZiA9IHBhZ2Vfb2ZmIFx1MDAyNiB+UEFHRV9NQVNLO1xuK1xuK1x0cmV0dXJuIG5vZGUtXHUwMDNlcGFnZVtjdHgtXHUwMDNlcGFnZV9pZHhdO1xuK31cbitcbitzdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxuK3tcbitcdHN0cnVjdCBoZnNfYm1hcF9jdHggY3R4O1xuK1x0c3RydWN0IHBhZ2UgKnBhZ2U7XG4rXHR1OCAqYm1hcCwgYnl0ZSwgbWFzaztcbitcbitcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXHUwMDI2Y3R4LCBub2RlX2JpdF9pZHggLyBCSVRTX1BFUl9CWVRFKTtcbitcdGlmIChJU19FUlIocGFnZSkpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGJtYXAgPSBrbWFwX2xvY2FsX3BhZ2UocGFnZSk7XG4rXHRieXRlID0gYm1hcFtjdHgub2ZmXTtcbitcdGt1bm1hcF9sb2NhbChibWFwKTtcbitcbitcdG1hc2sgPSAxIFx1MDAzY1x1MDAzYyAoNyAtIChub2RlX2JpdF9pZHggJSBCSVRTX1BFUl9CWVRFKSk7XG4rXHRyZXR1cm4gKGJ5dGUgXHUwMDI2IG1hc2spICE9IDA7XG4rfVxuK1xuIHZvaWQgaGZzX2JtYXBfZnJlZShzdHJ1Y3QgaGZzX2Jub2RlICpub2RlKVxuIHtcbiBcdHN0cnVjdCBoZnNfYnRyZWUgKnRyZWU7XG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2J0cmVlLmggYi9mcy9oZnMvYnRyZWUuaFxuaW5kZXggOTliZTg1OGIyNDQ2NTAuLmY4YWZhMzNmNzA5YWQyIDEwMDY0NFxuLS0tIGEvZnMvaGZzL2J0cmVlLmhcbisrKyBiL2ZzL2hmcy9idHJlZS5oXG5AQCAtMTI5LDMgKzEyOSw0MyBAQCBleHRlcm4gaW50IF9faGZzX2JyZWNfZmluZChzdHJ1Y3QgaGZzX2Jub2RlICpibm9kZSwgc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKTtcbiBleHRlcm4gaW50IGhmc19icmVjX2ZpbmQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKTtcbiBleHRlcm4gaW50IGhmc19icmVjX3JlYWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB2b2lkICpyZWMsIHUzMiByZWNfbGVuKTtcbiBleHRlcm4gaW50IGhmc19icmVjX2dvdG8oc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCBpbnQgY250KTtcbitcbitzdGF0aWMgaW5saW5lIGJvb2wgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYpXG4re1xuK1x0Ym9vbCBpc192YWxpZDtcbitcbitcdGlmICghbm9kZSB8fCAhbm9kZS1cdTAwM2V0cmVlKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRpc192YWxpZCA9IG9mZiBcdTAwM2Mgbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZTtcbitcbitcdGlmICghaXNfdmFsaWQpIHtcbitcdFx0cHJfZXJyKFwiaW52YWxpZCBvZmZzZXQ6IGlkICV1LCB0eXBlICV4LCBoICV1LCBzeiAldSwgb2ZmICV1XFxuXCIsXG4rXHRcdCAgICAgICBub2RlLVx1MDAzZXRoaXMsIG5vZGUtXHUwMDNldHlwZSwgbm9kZS1cdTAwM2VoZWlnaHQsXG4rXHRcdCAgICAgICBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplLCBvZmYpO1xuK1x0fVxuK1xuK1x0cmV0dXJuIGlzX3ZhbGlkO1xuK31cbitcbitzdGF0aWMgaW5saW5lIHUzMiBjaGVja19hbmRfY29ycmVjdF9yZXF1ZXN0ZWRfbGVuZ3RoKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYsIHUzMiBsZW4pXG4re1xuK1x0dW5zaWduZWQgaW50IG5vZGVfc2l6ZTtcbitcbitcdGlmICghaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKG5vZGUsIG9mZikpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0bm9kZV9zaXplID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZTtcbitcbitcdGlmICgodTY0KW9mZiArIGxlbiBcdTAwM2Ugbm9kZV9zaXplKSB7XG4rXHRcdHUzMiBuZXdfbGVuID0gbm9kZV9zaXplIC0gb2ZmO1xuK1xuK1x0XHRwcl9lcnIoXCJjb3JyZWN0ZWQgbGVuOiBpZCAldSwgdHlwZSAleCwgaCAldSwgc3ogJXUsIG9mZiAldSwgbGVuICV1LVx1MDAzZSV1XFxuXCIsXG4rXHRcdCAgICAgICBub2RlLVx1MDAzZXRoaXMsIG5vZGUtXHUwMDNldHlwZSwgbm9kZS1cdTAwM2VoZWlnaHQsXG4rXHRcdCAgICAgICBub2RlX3NpemUsIG9mZiwgbGVuLCBuZXdfbGVuKTtcbitcbitcdFx0cmV0dXJuIG5ld19sZW47XG4rXHR9XG4rXG4rXHRyZXR1cm4gbGVuO1xuK31cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaCBiL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oXG5pbmRleCA0NWZiNGM5ZmY5ZjVlZS4uOGRjMTBlMGJmYTdlOWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaFxuKysrIGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcbkBAIC01MTAsNiArNTEwLDExIEBAIHN0cnVjdCBoZnNfYnRyZWVfaGVhZGVyX3JlYyB7XG4gXHRcdFx0XHRcdFx0ICAgYi10cmVlIGJ1dCBub3QgaW4gZXh0ZW50c1xuIFx0XHRcdFx0XHRcdCAgIGItdHJlZSAoaGZzcGx1cykuICovXG4gXG4rLyogSEZTIEJUcmVlIG1pc2MgaW5mbyAqL1xuKyNkZWZpbmUgSEZTX1RSRUVfSEVBRFx0XHRcdFx0MFxuKyNkZWZpbmUgSEZTX0JUUkVFX0hEUl9NQVBfUkVDX0lOREVYXHRcdDJcdC8qIE1hcCAoYml0bWFwKSByZWNvcmQgaW4gSGVhZGVyIG5vZGUgKi9cbisjZGVmaW5lIEhGU19CVFJFRV9NQVBfTk9ERV9SRUNfSU5ERVhcdFx0MFx0LyogTWFwIHJlY29yZCBpbiBNYXAgTm9kZSAqL1xuK1xuIC8qIEhGUysgQlRyZWUgbWlzYyBpbmZvICovXG4gI2RlZmluZSBIRlNQTFVTX1RSRUVfSEVBRFx0XHRcdDBcbiAjZGVmaW5lIEhGU1BMVVNfTk9ERV9NWFNaXHRcdFx0MzI3NjhcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjI1LjQ4NTA5NzI4MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3MDc0OTg1NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIRlMgRmlsZXN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF04oCZcyBtYWtpbmcgc29tZSBpbnRlcmVzdGluZyBjaGFuZ2VzIHRvIHRoZSBIRlMgZmlsZXN5c3RlbSBjb2RlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGItdHJlZXMuIEkgc2VlIGl0J3MgdG91Y2hpbmcgYGZzL2hmcy9ibm9kZS5jYCwgYGZzL2hmcy9idHJlZS5jYCwgYGZzL2hmcy9idHJlZS5oYCwgYW5kIGBpbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaGAuIExvb2tzIGxpa2UgdGhleSdyZSBzaGlmdGluZyBhcm91bmQgc29tZSB2YWxpZGF0aW9uIGZ1bmN0aW9ucyDigJMgYGlzX2Jub2RlX29mZnNldF92YWxpZGAgYW5kIGBjaGVja19hbmRfY29ycmVjdF9yZXF1ZXN0ZWRfbGVuZ3RoYCDigJMgZnJvbSBgYm5vZGUuY2AgdG8gYGJ0cmVlLmhgLCBtYWtpbmcgdGhlbSBzdGF0aWMgaW5saW5lLiBUaGF0J3MgYSBjbGFzc2ljIG9wdGltaXphdGlvbiB0ZWNobmlxdWUgZm9yIHJlZHVjaW5nIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIHNvIEkgYXNzdW1lIHRoZXkgYXJlIGZyZXF1ZW50bHkgY2FsbGVkLlxuXG5UaGUgYmlnIGZ1bmN0aW9uYWwgY2hhbmdlLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHNlZW1zIHRvIGJlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYSBuZXcgZnVuY3Rpb24sIGBoZnNfYm1hcF90ZXN0X2JpdGAsIGluIGBidHJlZS5jYCwgYW5kIGl0cyBzdWJzZXF1ZW50IHVzZSB3aXRoaW4gYGhmc19idHJlZV9vcGVuYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGF0IGBoZnNfYm1hcF90ZXN0X2JpdGAgY2FsbCB3aXRoaW4gdGhlIGBoZnNfYnRyZWVfb3BlbmAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgdG8gYmUgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4gV2h5IGlzIHRoZSBgSEZTX1RSRUVfSEVBRGAgYml0IGJlaW5nIHRlc3RlZD8gQW5kLCBpZiBpdCdzIG5vdCBzZXQsIGl0J3MgbWFya2luZyB0aGUgc3VwZXJibG9jayBhcyByZWFkLW9ubHkgKGBzYi1cdTAwM2VzX2ZsYWdzIHw9IFNCX1JET05MWWApLiBUaGF0IGhhcyBpbXBsaWNhdGlvbnMgZm9yIGhvdyB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIGFuZCB1c2VkLiBUaGlzIHN1Z2dlc3RzIGl0IG1pZ2h0IGJlIGRldGVjdGluZyBzb21lIGtpbmQgb2YgZmlsZXN5c3RlbSBjb3JydXB0aW9uIG9yIGludGVncml0eSBpc3N1ZS5cblxuQWxyaWdodCwgbGV0J3MgbWFrZSBzdXJlIHRoaXMgSEZTIGNvZGUgcGF0aCBpcyBldmVuIHJlbGV2YW50LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgSEZTIGlzIGJ1aWx0IGFuZCBhY2Nlc3NpYmxlIGluIHRoZSB0YXJnZXQgc3lzdGVtLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBDT05GSUdfSEZTX0ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCdzIHRoZSBiYXNpYyBwcmVyZXF1aXNpdGUuXG5cbkkgbmVlZCB0byBkaXZlIGludG8gYGZzL2hmcy9idHJlZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGxvb2sgYXQgYGhmc19idHJlZV9vcGVuYCB0byBzZWUgaG93IGl0IHdvcmtzIGFuZCB3aGVyZSB0aGF0IGBoZnNfYm1hcF90ZXN0X2JpdGAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBJIHdhbnQgdG8ga25vdyB3aGVuIGBoZnNfYnRyZWVfb3BlbmAgaXMgY2FsbGVkIGJlY2F1c2UgdGhhdCB3aWxsIGlsbHVtaW5hdGUgd2hlbiB0aGlzIGNvcnJ1cHRpb24gY2hlY2sgaGFwcGVucy4gSXQncyBsaWtlbHkgZHVyaW5nIG1vdW50IG9yIHdoZW4gb3BlbmluZyBidHJlZXMsIGFzIHRoZSBkb2N1bWVudGF0aW9uIGltcGxpZXMuXG5cblRvIG1ha2UgdGhpcyBxdWlja2VyLCBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gbG9jYXRlIHRoZSBvY2N1cnJlbmNlcyBvZiBib3RoIGBoZnNfYnRyZWVfb3BlbmAgYW5kIGBoZnNfYm1hcF90ZXN0X2JpdGAgd2l0aGluIHRoZSBjb2RlYmFzZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgaW1tZWRpYXRlIGNvbnRleHQgSSBuZWVkIHRvIHByb3Blcmx5IHVuZGVyc3RhbmQgdGhpcyBwYXRjaCBhbmQgYXNzZXNzIGl0cyBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0OTYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzo1OTozNC4xOTI1OTc4MTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcxMDM2NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGZzX2J0cmVlX29wZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnMvYnRyZWUuYz0xOD1zdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KTtcXG4tLVxcbmZzL2hmcy9idHJlZS5jLTIwLS8qIEdldCBhIHJlZmVyZW5jZSB0byBhIEIqVHJlZSBhbmQgZG8gc29tZSBpbml0aWFsIGNoZWNrcyAqL1xcbmZzL2hmcy9idHJlZS5jOjIxOnN0cnVjdCBoZnNfYnRyZWUgKmhmc19idHJlZV9vcGVuKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpZCwgYnRyZWVfa2V5Y21wIGtleWNtcClcXG5mcy9oZnMvYnRyZWUuYy0yMi17XFxuLS1cXG5mcy9oZnMvYnRyZWUuaD03Nz1zdHJ1Y3QgaGZzX2ZpbmRfZGF0YSB7XFxuLS1cXG5mcy9oZnMvYnRyZWUuaC04OC0vKiBidHJlZS5jICovXFxuZnMvaGZzL2J0cmVlLmg6ODk6ZXh0ZXJuIHN0cnVjdCBoZnNfYnRyZWUgKmhmc19idHJlZV9vcGVuKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpZCxcXG5mcy9oZnMvYnRyZWUuaC05MC1cXHRcXHRcXHRcXHRcXHRidHJlZV9rZXljbXAga2V5Y21wKTtcXG4tLVxcbmZzL2hmcy9tZGIuYz05ND1pbnQgaGZzX21kYl9nZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2hmcy9tZGIuYy0yMjctXFxuZnMvaGZzL21kYi5jOjIyODpcXHRIRlNfU0Ioc2IpLVxcdTAwM2VleHRfdHJlZSA9IGhmc19idHJlZV9vcGVuKHNiLCBIRlNfRVhUX0NOSUQsIGhmc19leHRfa2V5Y21wKTtcXG5mcy9oZnMvbWRiLmMtMjI5LVxcdGlmICghSEZTX1NCKHNiKS1cXHUwMDNlZXh0X3RyZWUpIHtcXG4tLVxcbmZzL2hmcy9tZGIuYy0yMzItXFx0fVxcbmZzL2hmcy9tZGIuYzoyMzM6XFx0SEZTX1NCKHNiKS1cXHUwMDNlY2F0X3RyZWUgPSBoZnNfYnRyZWVfb3BlbihzYiwgSEZTX0NBVF9DTklELCBoZnNfY2F0X2tleWNtcCk7XFxuZnMvaGZzL21kYi5jLTIzNC1cXHRpZiAoIUhGU19TQihzYiktXFx1MDAzZWNhdF90cmVlKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjM0LjI0OTcwNjkyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNDkxOTc4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIRlMgRmlsZXN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgaGZzX2JtYXBfdGVzdF9iaXRgIHdpdGhpbiBgZnMvaGZzL2J0cmVlLmNgIGFuZCBzdWJzZXF1ZW50bHkgZW1wbG95cyBpdCB3aXRoaW4gYGhmc19idHJlZV9vcGVuYC4gVGhpcyBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCdzIGZ1bmN0aW9uYWwsIGVzc2VudGlhbGx5IGFkZGluZyBhIGNoZWNrIGZvciBiaXRtYXAgY29ycnVwdGlvbi4gSWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZCwgaXQgZm9yY2VzIHRoZSBmaWxlc3lzdGVtIGludG8gcmVhZC1vbmx5IG1vZGUsIHdoaWNoIGlzIGEgc2Vuc2libGUgc2FmZXR5IHByZWNhdXRpb24uXG5cblRoZSBjYWxsIHBhdGggYXBwZWFycyB0byBiZSBgaGZzX21kYl9nZXRgIHdoaWNoIHRoZW4gbGVhZHMgZGlyZWN0bHkgdG8gYGhmc19idHJlZV9vcGVuYC4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBgaGZzX2J0cmVlX29wZW5gIGlzIGV4ZWN1dGVkIGR1cmluZyB0aGUgbW91bnQgcHJvY2Vzcy4gVGhlcmVmb3JlLCB0aGlzIGNvcnJ1cHRpb24gY2hlY2sgaXMgYWN0aXZlIGR1cmluZyB0aGUgaW5pdGlhbCBtb3VudGluZyBvZiB0aGUgSEZTIGZpbGVzeXN0ZW0uXG5cbk5vdywgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgSEZTLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYWxpZ24gd2l0aCBob3cgdGhpcyBwYXRjaCBpcyBpbnRlbmRlZCB0byBmdW5jdGlvbiB3aXRoaW4gdGhlIGJyb2FkZXIgSEZTIGltcGxlbWVudGF0aW9uLiBUaGlzIHdpbGwgaGVscCB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSwgb3IgY29yZSBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODUxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjM4LjI5ODkwNjI5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjM0NTQxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9oZnMvS2NvbmZpZzoyOmNvbmZpZyBIRlNfRlNcXG5mcy9oZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBNYWNpbnRvc2ggZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6NTk6MzguMzU1MjU4NTgyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ2MDkxNDE5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYEhGU19GU2AgY29uZmlndXJhdGlvbi4gTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgZm9yIHRoaXMgYXNwZWN0IG9mIHRoZSBmaWxlc3lzdGVtLiBMZXQncyBzZWUuLi4gYGhmc19idHJlZV9vcGVuYCBkZWZpbml0ZWx5IHN0YW5kcyBvdXQuIEkgc2hvdWxkIGFsc28gY2hlY2sgYGhmc19ibWFwX3Rlc3RfYml0YCBhbmQgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAsIHRob3NlIGNvdWxkIGJlIGltcG9ydGFudC5cblxuUmlnaHQsIHRpbWUgdG8gc2VlIGlmIHRob3NlIGxhc3QgdHdvLCBgaGZzX2JtYXBfdGVzdF9iaXRgIGFuZCBgaGZzX2JtYXBfZ2V0X21hcF9wYWdlYCwgYXJlIHN0YXRpYyBvciBleHBvcnRlZC4gQWgsIHRoZXkgYXJlIHN0YXRpYyB3aXRoaW4gYGZzL2hmcy9idHJlZS5jYC4gT2theSwgdGhhdCdzIHVzZWZ1bCBjb250ZXh0LiBBdCBsZWFzdCBgaGZzX2J0cmVlX29wZW5gIGlzIGdsb2JhbCBhbmQgYWNjZXNzaWJsZS5cblxuTm93LCBsZXQgbWUgZGl2ZSBpbnRvIGBmcy9oZnMvYnRyZWUuY2AgaXRzZWxmLiBJIHdhbnQgdG8gc2NhbiB0aGF0IGZpbGUgdGhvcm91Z2hseSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBJIG5lZWQgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mjc1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjQyLjgxNjE3NDg0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTQwNzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc19ibWFwX3Rlc3RfYml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzL2J0cmVlLmMtMTctXFxuZnMvaGZzL2J0cmVlLmM6MTg6c3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeCk7XFxuZnMvaGZzL2J0cmVlLmMtMTktXFxuLS1cXG5mcy9oZnMvYnRyZWUuYz0yMT1zdHJ1Y3QgaGZzX2J0cmVlICpoZnNfYnRyZWVfb3BlbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgaWQsIGJ0cmVlX2tleWNtcCBrZXljbXApXFxuLS1cXG5mcy9oZnMvYnRyZWUuYy0xNjUtXFxuZnMvaGZzL2J0cmVlLmM6MTY2OlxcdGlmICghaGZzX2JtYXBfdGVzdF9iaXQobm9kZSwgSEZTX1RSRUVfSEVBRCkpIHtcXG5mcy9oZnMvYnRyZWUuYy0xNjctXFx0XFx0cHJfd2FybihcXFwiKCVzKTogJXMgKGNuaWQgMHgleCkgYml0bWFwIGNvcnJ1cHRlZCwgZm9yY2luZyByZG9ubHlcXFxcblxcXCIsXFxuLS1cXG5mcy9oZnMvYnRyZWUuYz0zODc9c3RhdGljIHN0cnVjdCBwYWdlICpoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uoc3RydWN0IGhmc19ibm9kZSAqbm9kZSxcXG4tLVxcbmZzL2hmcy9idHJlZS5jLTQyNi1cXG5mcy9oZnMvYnRyZWUuYzo0Mjc6c3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeClcXG5mcy9oZnMvYnRyZWUuYy00Mjgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzo1OTo0Mi44NzMxMjM4MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTM5ODI0NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSEZTIEZpbGVzeXN0ZW0gRnVuY3Rpb25zIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIG5ldyBmdW5jdGlvbnMgd2UncmUgbG9va2luZyBhdCBhcmUgYGhmc19ibWFwX3Rlc3RfYml0YCBhbmQgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAuIFNpbmNlIHRoZXkncmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIG15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gbmFycm93IHRoZSBmb2N1cyB0byBgaGZzX2J0cmVlX29wZW5gLiBCdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhhdCBzeXprYWxsZXIgKmNhbiogdGFyZ2V0IHN0YXRpYyBmdW5jdGlvbnMsIHByb3ZpZGVkIHRoZXkncmUgcmVwcmVzZW50ZWQgaW4gdGhlIGRlYnVnIGluZm9ybWF0aW9uLiBUaGF0J3MgZ29vZCBuZXdzLCBleHBhbmRzIHRoZSBwb3NzaWJpbGl0aWVzLlxuXG5BbHJpZ2h0LCBsZXQncyBpbmNsdWRlIGFsbCB0aHJlZSBpbiB0aGUgZnV6emluZyBzY29wZTogYGhmc19idHJlZV9vcGVuYCwgYGhmc19ibWFwX3Rlc3RfYml0YCwgYW5kIGBoZnNfYm1hcF9nZXRfbWFwX3BhZ2VgLiBHb3R0YSBtYWtlIHN1cmUgd2UgY292ZXIgdGhlIGdyb3VuZCB0aG9yb3VnaGx5LlxuXG5Ob3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrOiBgaGZzX2JtYXBfdGVzdF9iaXRgIGlzIGRlZmluaXRlbHkgdGhlIGNvcnJlY3QgbmFtZSwgYW5kIHRoZSBzYW1lIGdvZXMgZm9yIGBoZnNfYm1hcF9nZXRfbWFwX3BhZ2VgLiBDb25maXJtZWQuXG5cbk5leHQgdXAsIGNvbmZpZ3VyYXRpb25zLiBBcmUgdGhlcmUgYW55IG90aGVyIGZsYWdzIG9yIGRlcGVuZGVuY2llcyB0byBjb25zaWRlcj8gTm9wZSwgaXQgbG9va3MgbGlrZSBpdCdzIGp1c3QgYEhGU19GU2AuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIGRvdWJsZS1jaGVjayB0aGF0IGBIRlNfRlNgIGlzIHRoZSAqb25seSogcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24uIENhbid0IGJlIHRvbyBjYXJlZnVsIHdoZW4gc2V0dGluZyB1cCBhIGZ1enppbmcgY2FtcGFpZ24sIHlvdSBrbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDE5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjQ3LjgxMjk0OTk4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc3OTA1MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9oZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnMvS2NvbmZpZz0yPWNvbmZpZyBIRlNfRlNcXG5mcy9oZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBNYWNpbnRvc2ggZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy9oZnMvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gQkxPQ0tcXG5mcy9oZnMvS2NvbmZpZy01LVxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbi0tXFxuZnMvaGZzL0tjb25maWc9MTc9Y29uZmlnIEhGU19LVU5JVF9URVNUXFxuZnMvaGZzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBIRlMgZmlsZXN5c3RlbVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbmZzL2hmcy9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gSEZTX0ZTIFxcdTAwMjZcXHUwMDI2IEtVTklUXFxuZnMvaGZzL0tjb25maWctMjAtXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6NTk6NDcuODcwNzQ2MDYzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NjY5MzQwODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSEZTIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBhZnRlciByZXZpZXdpbmcgdGhlIHBhdGNoLCBpdCBzZWVtcyBgSEZTX0ZTYCBpcyB0aGUgbmVjZXNzYXJ5IGFuZCBzdWZmaWNpZW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBMZXQgbWUgc3ludGhlc2l6ZSB3aGF0IEkndmUgZ2F0aGVyZWQuIE15IGFzc2Vzc21lbnQgaXMgYXMgZm9sbG93czpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6ICpUcnVlKiDigJMgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1enppbmcuXG4qICAgKipGb2N1c1N5bWJvbHMqKjogYGhmc19idHJlZV9vcGVuYCwgYGhmc19ibWFwX3Rlc3RfYml0YCwgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAg4oCTIHRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gdGFyZ2V0IGluIG15IGZ1enppbmcgZWZmb3J0cy5cbiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYEhGU19GU2Ag4oCTIHRoaXMgaXMgdGhlIGNydWNpYWwgY29uZmlndXJhdGlvbiBmbGFnIHRoYXQgZW5hYmxlcyB0aGUgcmVsZXZhbnQgY29kZSBwYXRoLlxuKiAgICoqUmVhc29uaW5nKio6IFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBjaGVja3MgZm9yIHBvdGVudGlhbCBiaXRtYXAgY29ycnVwdGlvbiB3aXRoaW4gdGhlIEhGUyBCLXRyZWUgc3RydWN0dXJlIHNwZWNpZmljYWxseSBkdXJpbmcgdGhlIGBtb3VudGAgZnVuY3Rpb24uIENydWNpYWxseSwgaWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZCwgaXQgZm9yY2VzIHRoZSBmaWxlc3lzdGVtIGludG8gcmVhZC1vbmx5IG1vZGUgdG8gcHJldmVudCBkYXRhIGxvc3MuIFRoaXMgaXMgKnJlYWNoYWJsZSBmdW5jdGlvbmFsIGNvZGUqIGFuZCByZXByZXNlbnRzIGEgY3JpdGljYWwgcG9pbnQgaW4gdGhlIGZpbGVzeXN0ZW0gbGlmZWN5Y2xlLCB0aGVyZWZvcmUgYSBoaWdoLXZhbHVlIGZ1enppbmcgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzA1LCJPdXRwdXRUb2tlbnMiOjExMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzo1OTo1My40Mzc2ODE5MjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjgyNjc0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGZzX2J0cmVlX29wZW5cIixcbiAgICBcImhmc19ibWFwX3Rlc3RfYml0XCIsXG4gICAgXCJoZnNfYm1hcF9nZXRfbWFwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG5ldyBsb2dpYyB0byBjaGVjayBmb3IgYml0bWFwIGNvcnJ1cHRpb24gZHVyaW5nIEItdHJlZSBvcGVuIGluIHRoZSBIRlMgZmlsZXN5c3RlbSwgZm9yY2luZyB0aGUgZmlsZXN5c3RlbSB0byByZWFkLW9ubHkgaWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZC4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhmc19idHJlZV9vcGVuXCIsXG4gICAgXCJoZnNfYm1hcF90ZXN0X2JpdFwiLFxuICAgIFwiaGZzX2JtYXBfZ2V0X21hcF9wYWdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgbG9naWMgdG8gY2hlY2sgZm9yIGJpdG1hcCBjb3JydXB0aW9uIGR1cmluZyBCLXRyZWUgb3BlbiBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0sIGZvcmNpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gcmVhZC1vbmx5IGlmIGNvcnJ1cHRpb24gaXMgZGV0ZWN0ZWQuIFRoaXMgaXMgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY29kZSBkdXJpbmcgZmlsZXN5c3RlbSBtb3VudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow5jxp6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 13:48:09 +0000 UTC FinishedAt: 2026-07-14 13:59:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "b77ef8d9-c680-4985-b924-a9b9a5be0f2b" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "hfs_btree_open", "hfs_bmap_test_bit", "hfs_bmap_get_map_page" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19idHJlZV9vcGVuJiMzNDssCiAgICAmIzM0O2hmc19ibWFwX3Rlc3RfYml0JiMzNDssCiAgICAmIzM0O2hmc19ibWFwX2dldF9tYXBfcGFnZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG5ldyBsb2dpYyB0byBjaGVjayBmb3IgYml0bWFwIGNvcnJ1cHRpb24gZHVyaW5nIEItdHJlZSBvcGVuIGluIHRoZSBIRlMgZmlsZXN5c3RlbSwgZm9yY2luZyB0aGUgZmlsZXN5c3RlbSB0byByZWFkLW9ubHkgaWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZC4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjU5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2Y0MzU0YzQyMDdiODMxZWU4NjQ4YzRkMjE2M2YwMDJkNTE3NTlmNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDEzOjU5OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9ibm9kZS5jIGIvZnMvaGZzL2Jub2RlLmNcbmluZGV4IGRhOGU1MzQyYzkxY2MyLi4xYjMzMTEwOGQ5YzAxYiAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9ibm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvYm5vZGUuY1xuQEAgLTE1LDQ4ICYjNDM7MTUsNiBAQFxuIFxuICNpbmNsdWRlIFwmIzM0O2J0cmVlLmhcJiMzNDtcbiBcbi1zdGF0aWMgaW5saW5lXG4tYm9vbCBpc19ibm9kZV9vZmZzZXRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZilcbi17XG4tXHRib29sIGlzX3ZhbGlkID0gb2ZmIFx1MDAzYyBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplO1xuLVxuLVx0aWYgKCFpc192YWxpZCkge1xuLVx0XHRwcl9lcnIoXCYjMzQ7cmVxdWVzdGVkIGludmFsaWQgb2Zmc2V0OiBcJiMzNDtcbi1cdFx0ICAgICAgIFwmIzM0O05PREU6IGlkICV1LCB0eXBlICUjeCwgaGVpZ2h0ICV1LCBcJiMzNDtcbi1cdFx0ICAgICAgIFwmIzM0O25vZGVfc2l6ZSAldSwgb2Zmc2V0ICV1XFxuXCYjMzQ7LFxuLVx0XHQgICAgICAgbm9kZS1cdTAwM2V0aGlzLCBub2RlLVx1MDAzZXR5cGUsIG5vZGUtXHUwMDNlaGVpZ2h0LFxuLVx0XHQgICAgICAgbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSwgb2ZmKTtcbi1cdH1cbi1cbi1cdHJldHVybiBpc192YWxpZDtcbi19XG4tXG4tc3RhdGljIGlubGluZVxuLXUzMiBjaGVja19hbmRfY29ycmVjdF9yZXF1ZXN0ZWRfbGVuZ3RoKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYsIHUzMiBsZW4pXG4te1xuLVx0dW5zaWduZWQgaW50IG5vZGVfc2l6ZTtcbi1cbi1cdGlmICghaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKG5vZGUsIG9mZikpXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0bm9kZV9zaXplID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZTtcbi1cbi1cdGlmICgodTY0KW9mZiAmIzQzOyBsZW4gXHUwMDNlIG5vZGVfc2l6ZSkge1xuLVx0XHR1MzIgbmV3X2xlbiA9IG5vZGVfc2l6ZSAtIG9mZjtcbi1cbi1cdFx0cHJfZXJyKFwmIzM0O3JlcXVlc3RlZCBsZW5ndGggaGFzIGJlZW4gY29ycmVjdGVkOiBcJiMzNDtcbi1cdFx0ICAgICAgIFwmIzM0O05PREU6IGlkICV1LCB0eXBlICUjeCwgaGVpZ2h0ICV1LCBcJiMzNDtcbi1cdFx0ICAgICAgIFwmIzM0O25vZGVfc2l6ZSAldSwgb2Zmc2V0ICV1LCBcJiMzNDtcbi1cdFx0ICAgICAgIFwmIzM0O3JlcXVlc3RlZF9sZW4gJXUsIGNvcnJlY3RlZF9sZW4gJXVcXG5cJiMzNDssXG4tXHRcdCAgICAgICBub2RlLVx1MDAzZXRoaXMsIG5vZGUtXHUwMDNldHlwZSwgbm9kZS1cdTAwM2VoZWlnaHQsXG4tXHRcdCAgICAgICBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplLCBvZmYsIGxlbiwgbmV3X2xlbik7XG4tXG4tXHRcdHJldHVybiBuZXdfbGVuO1xuLVx0fVxuLVxuLVx0cmV0dXJuIGxlbjtcbi19XG4tXG4gdm9pZCBoZnNfYm5vZGVfcmVhZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB2b2lkICpidWYsIHUzMiBvZmYsIHUzMiBsZW4pXG4ge1xuIFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2J0cmVlLmMgYi9mcy9oZnMvYnRyZWUuY1xuaW5kZXggMmViMzdhMmY2NGU4NjYuLjJjODQxMjIxYzQ1Y2VkIDEwMDY0NFxuLS0tIGEvZnMvaGZzL2J0cmVlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmcy9idHJlZS5jXG5AQCAtMTUsNiAmIzQzOzE1LDggQEBcbiBcbiAjaW5jbHVkZSBcJiMzNDtidHJlZS5oXCYjMzQ7XG4gXG4mIzQzO3N0YXRpYyBib29sIGhmc19ibWFwX3Rlc3RfYml0KHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBub2RlX2JpdF9pZHgpO1xuJiM0MztcbiAvKiBHZXQgYSByZWZlcmVuY2UgdG8gYSBCKlRyZWUgYW5kIGRvIHNvbWUgaW5pdGlhbCBjaGVja3MgKi9cbiBzdHJ1Y3QgaGZzX2J0cmVlICpoZnNfYnRyZWVfb3BlbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgaWQsIGJ0cmVlX2tleWNtcCBrZXljbXApXG4ge1xuQEAgLTIzLDYgJiM0MzsyNSw3IEBAIHN0cnVjdCBoZnNfYnRyZWUgKmhmc19idHJlZV9vcGVuKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpZCwgYnRyZWVfa2V5Y21wIGtlXG4gXHRzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZztcbiBcdHN0cnVjdCBmb2xpbyAqZm9saW87XG4gXHRzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoO1xuJiM0MztcdHN0cnVjdCBoZnNfYm5vZGUgKm5vZGU7XG4gXHR1bnNpZ25lZCBpbnQgc2l6ZTtcbiBcdHUxNiBkYmxvY2s7XG4gXHRzZWN0b3JfdCBzdGFydF9ibG9jaztcbkBAIC0xNTUsNiAmIzQzOzE1OCwyMCBAQCBzdHJ1Y3QgaGZzX2J0cmVlICpoZnNfYnRyZWVfb3BlbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgaWQsIGJ0cmVlX2tleWNtcCBrZVxuIFx0a3VubWFwX2xvY2FsKGhlYWQpO1xuIFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiBcdGZvbGlvX3B1dChmb2xpbyk7XG4mIzQzO1xuJiM0MztcdG5vZGUgPSBoZnNfYm5vZGVfZmluZCh0cmVlLCBIRlNfVFJFRV9IRUFEKTtcbiYjNDM7XHRpZiAoSVNfRVJSKG5vZGUpKVxuJiM0MztcdFx0Z290byBmcmVlX2lub2RlO1xuJiM0MztcbiYjNDM7XHRpZiAoIWhmc19ibWFwX3Rlc3RfYml0KG5vZGUsIEhGU19UUkVFX0hFQUQpKSB7XG4mIzQzO1x0XHRwcl93YXJuKFwmIzM0Oyglcyk6ICVzIChjbmlkIDB4JXgpIGJpdG1hcCBjb3JydXB0ZWQsIGZvcmNpbmcgcmRvbmx5XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRzYi1cdTAwM2VzX2lkLCBpZCA9PSBIRlNfRVhUX0NOSUQgPyBcJiMzNDtleHRlbnRzXCYjMzQ7IDogXCYjMzQ7Y2F0YWxvZ1wmIzM0OywgaWQpO1xuJiM0MztcdFx0cHJfd2FybihcJiMzNDtSdW4gZnNjay5oZnMgdG8gcmVwYWlyLlxcblwmIzM0Oyk7XG4mIzQzO1x0XHRzYi1cdTAwM2VzX2ZsYWdzIHw9IFNCX1JET05MWTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGhmc19ibm9kZV9wdXQobm9kZSk7XG4mIzQzO1xuIFx0cmV0dXJuIHRyZWU7XG4gXG4gZmFpbF9mb2xpbzpcbkBAIC0zNTYsNiAmIzQzOzM3Myw3NSBAQCBzdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm1hcF9hbGxvYyhzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlKVxuIFx0fVxuIH1cbiBcbiYjNDM7LyogQ29udGV4dCBmb3IgaXRlcmF0aW5nIGItdHJlZSBtYXAgcGFnZXNcbiYjNDM7ICogQHBhZ2VfaWR4OiBUaGUgaW5kZXggb2YgdGhlIHBhZ2Ugd2l0aGluIHRoZSBiLW5vZGUmIzM5O3MgcGFnZSBhcnJheVxuJiM0MzsgKiBAb2ZmOiBUaGUgYnl0ZSBvZmZzZXQgd2l0aGluIHRoZSBtYXBwZWQgcGFnZVxuJiM0MzsgKiBAbGVuOiBUaGUgcmVtYWluaW5nIGxlbmd0aCBvZiB0aGUgbWFwIHJlY29yZFxuJiM0MzsgKi9cbiYjNDM7c3RydWN0IGhmc19ibWFwX2N0eCB7XG4mIzQzO1x0dW5zaWduZWQgaW50IHBhZ2VfaWR4O1xuJiM0MztcdHVuc2lnbmVkIGludCBvZmY7XG4mIzQzO1x0dTE2IGxlbjtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcGFnZSAqaGZzX2JtYXBfZ2V0X21hcF9wYWdlKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsXG4mIzQzO1x0XHRcdFx0XHQgIHN0cnVjdCBoZnNfYm1hcF9jdHggKmN0eCxcbiYjNDM7XHRcdFx0XHRcdCAgdTMyIGJ5dGVfb2Zmc2V0KVxuJiM0Mzt7XG4mIzQzO1x0dTE2IHJlY19pZHgsIG9mZjE2O1xuJiM0MztcdHVuc2lnbmVkIGludCBwYWdlX29mZjtcbiYjNDM7XG4mIzQzO1x0aWYgKG5vZGUtXHUwMDNldGhpcyA9PSBIRlNfVFJFRV9IRUFEKSB7XG4mIzQzO1x0XHRpZiAobm9kZS1cdTAwM2V0eXBlICE9IEhGU19OT0RFX0hFQURFUikge1xuJiM0MztcdFx0XHRwcl9lcnIoXCYjMzQ7aGZzOiBpbnZhbGlkIGJ0cmVlIGhlYWRlciBub2RlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRyZWNfaWR4ID0gSEZTX0JUUkVFX0hEUl9NQVBfUkVDX0lOREVYO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpZiAobm9kZS1cdTAwM2V0eXBlICE9IEhGU19OT0RFX01BUCkge1xuJiM0MztcdFx0XHRwcl9lcnIoXCYjMzQ7aGZzOiBpbnZhbGlkIGJ0cmVlIG1hcCBub2RlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRyZWNfaWR4ID0gSEZTX0JUUkVFX01BUF9OT0RFX1JFQ19JTkRFWDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGN0eC1cdTAwM2VsZW4gPSBoZnNfYnJlY19sZW5vZmYobm9kZSwgcmVjX2lkeCwgXHUwMDI2b2ZmMTYpO1xuJiM0MztcdGlmICghY3R4LVx1MDAzZWxlbilcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xuJiM0MztcbiYjNDM7XHRpZiAoIWlzX2Jub2RlX29mZnNldF92YWxpZChub2RlLCBvZmYxNikpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRUlPKTtcbiYjNDM7XG4mIzQzO1x0Y3R4LVx1MDAzZWxlbiA9IGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgobm9kZSwgb2ZmMTYsIGN0eC1cdTAwM2VsZW4pO1xuJiM0MztcbiYjNDM7XHRpZiAoYnl0ZV9vZmZzZXQgXHUwMDNlPSBjdHgtXHUwMDNlbGVuKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4mIzQzO1xuJiM0MztcdHBhZ2Vfb2ZmID0gKHUzMilvZmYxNiAmIzQzOyBub2RlLVx1MDAzZXBhZ2Vfb2Zmc2V0ICYjNDM7IGJ5dGVfb2Zmc2V0O1xuJiM0MztcdGN0eC1cdTAwM2VwYWdlX2lkeCA9IHBhZ2Vfb2ZmIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuJiM0MztcdGN0eC1cdTAwM2VvZmYgPSBwYWdlX29mZiBcdTAwMjYgflBBR0VfTUFTSztcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG5vZGUtXHUwMDNlcGFnZVtjdHgtXHUwMDNlcGFnZV9pZHhdO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGhmc19ibWFwX2N0eCBjdHg7XG4mIzQzO1x0c3RydWN0IHBhZ2UgKnBhZ2U7XG4mIzQzO1x0dTggKmJtYXAsIGJ5dGUsIG1hc2s7XG4mIzQzO1xuJiM0MztcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXHUwMDI2Y3R4LCBub2RlX2JpdF9pZHggLyBCSVRTX1BFUl9CWVRFKTtcbiYjNDM7XHRpZiAoSVNfRVJSKHBhZ2UpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRibWFwID0ga21hcF9sb2NhbF9wYWdlKHBhZ2UpO1xuJiM0MztcdGJ5dGUgPSBibWFwW2N0eC5vZmZdO1xuJiM0MztcdGt1bm1hcF9sb2NhbChibWFwKTtcbiYjNDM7XG4mIzQzO1x0bWFzayA9IDEgXHUwMDNjXHUwMDNjICg3IC0gKG5vZGVfYml0X2lkeCAlIEJJVFNfUEVSX0JZVEUpKTtcbiYjNDM7XHRyZXR1cm4gKGJ5dGUgXHUwMDI2IG1hc2spICE9IDA7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCBoZnNfYm1hcF9mcmVlKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUpXG4ge1xuIFx0c3RydWN0IGhmc19idHJlZSAqdHJlZTtcbmRpZmYgLS1naXQgYS9mcy9oZnMvYnRyZWUuaCBiL2ZzL2hmcy9idHJlZS5oXG5pbmRleCA5OWJlODU4YjI0NDY1MC4uZjhhZmEzM2Y3MDlhZDIgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvYnRyZWUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2J0cmVlLmhcbkBAIC0xMjksMyAmIzQzOzEyOSw0MyBAQCBleHRlcm4gaW50IF9faGZzX2JyZWNfZmluZChzdHJ1Y3QgaGZzX2Jub2RlICpibm9kZSwgc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKTtcbiBleHRlcm4gaW50IGhmc19icmVjX2ZpbmQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKTtcbiBleHRlcm4gaW50IGhmc19icmVjX3JlYWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB2b2lkICpyZWMsIHUzMiByZWNfbGVuKTtcbiBleHRlcm4gaW50IGhmc19icmVjX2dvdG8oc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCBpbnQgY250KTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19ibm9kZV9vZmZzZXRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZilcbiYjNDM7e1xuJiM0MztcdGJvb2wgaXNfdmFsaWQ7XG4mIzQzO1xuJiM0MztcdGlmICghbm9kZSB8fCAhbm9kZS1cdTAwM2V0cmVlKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRpc192YWxpZCA9IG9mZiBcdTAwM2Mgbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFpc192YWxpZCkge1xuJiM0MztcdFx0cHJfZXJyKFwmIzM0O2ludmFsaWQgb2Zmc2V0OiBpZCAldSwgdHlwZSAleCwgaCAldSwgc3ogJXUsIG9mZiAldVxcblwmIzM0OyxcbiYjNDM7XHRcdCAgICAgICBub2RlLVx1MDAzZXRoaXMsIG5vZGUtXHUwMDNldHlwZSwgbm9kZS1cdTAwM2VoZWlnaHQsXG4mIzQzO1x0XHQgICAgICAgbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSwgb2ZmKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBpc192YWxpZDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSB1MzIgY2hlY2tfYW5kX2NvcnJlY3RfcmVxdWVzdGVkX2xlbmd0aChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgb2ZmLCB1MzIgbGVuKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgaW50IG5vZGVfc2l6ZTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFpc19ibm9kZV9vZmZzZXRfdmFsaWQobm9kZSwgb2ZmKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRub2RlX3NpemUgPSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplO1xuJiM0MztcbiYjNDM7XHRpZiAoKHU2NClvZmYgJiM0MzsgbGVuIFx1MDAzZSBub2RlX3NpemUpIHtcbiYjNDM7XHRcdHUzMiBuZXdfbGVuID0gbm9kZV9zaXplIC0gb2ZmO1xuJiM0MztcbiYjNDM7XHRcdHByX2VycihcJiMzNDtjb3JyZWN0ZWQgbGVuOiBpZCAldSwgdHlwZSAleCwgaCAldSwgc3ogJXUsIG9mZiAldSwgbGVuICV1LVx1MDAzZSV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgICAgIG5vZGUtXHUwMDNldGhpcywgbm9kZS1cdTAwM2V0eXBlLCBub2RlLVx1MDAzZWhlaWdodCxcbiYjNDM7XHRcdCAgICAgICBub2RlX3NpemUsIG9mZiwgbGVuLCBuZXdfbGVuKTtcbiYjNDM7XG4mIzQzO1x0XHRyZXR1cm4gbmV3X2xlbjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBsZW47XG4mIzQzO31cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaCBiL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oXG5pbmRleCA0NWZiNGM5ZmY5ZjVlZS4uOGRjMTBlMGJmYTdlOWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcbkBAIC01MTAsNiAmIzQzOzUxMCwxMSBAQCBzdHJ1Y3QgaGZzX2J0cmVlX2hlYWRlcl9yZWMge1xuIFx0XHRcdFx0XHRcdCAgIGItdHJlZSBidXQgbm90IGluIGV4dGVudHNcbiBcdFx0XHRcdFx0XHQgICBiLXRyZWUgKGhmc3BsdXMpLiAqL1xuIFxuJiM0MzsvKiBIRlMgQlRyZWUgbWlzYyBpbmZvICovXG4mIzQzOyNkZWZpbmUgSEZTX1RSRUVfSEVBRFx0XHRcdFx0MFxuJiM0MzsjZGVmaW5lIEhGU19CVFJFRV9IRFJfTUFQX1JFQ19JTkRFWFx0XHQyXHQvKiBNYXAgKGJpdG1hcCkgcmVjb3JkIGluIEhlYWRlciBub2RlICovXG4mIzQzOyNkZWZpbmUgSEZTX0JUUkVFX01BUF9OT0RFX1JFQ19JTkRFWFx0XHQwXHQvKiBNYXAgcmVjb3JkIGluIE1hcCBOb2RlICovXG4mIzQzO1xuIC8qIEhGUyYjNDM7IEJUcmVlIG1pc2MgaW5mbyAqL1xuICNkZWZpbmUgSEZTUExVU19UUkVFX0hFQURcdFx0XHQwXG4gI2RlZmluZSBIRlNQTFVTX05PREVfTVhTWlx0XHRcdDMyNzY4XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGZzX2J0cmVlX29wZW4mIzM0OywKICAgICYjMzQ7aGZzX2JtYXBfdGVzdF9iaXQmIzM0OywKICAgICYjMzQ7aGZzX2JtYXBfZ2V0X21hcF9wYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IGxvZ2ljIHRvIGNoZWNrIGZvciBiaXRtYXAgY29ycnVwdGlvbiBkdXJpbmcgQi10cmVlIG9wZW4gaW4gdGhlIEhGUyBmaWxlc3lzdGVtLCBmb3JjaW5nIHRoZSBmaWxlc3lzdGVtIHRvIHJlYWQtb25seSBpZiBjb3JydXB0aW9uIGlzIGRldGVjdGVkLiBUaGlzIGlzIHJlYWNoYWJsZSBmdW5jdGlvbmFsIGNvZGUgZHVyaW5nIGZpbGVzeXN0ZW0gbW91bnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNmNDM1NGM0MjA3YjgzMWVlODY0OGM0ZDIxNjNmMDAyZDUxNzU5ZjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAxNCAxMzo1OToyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2hmcy9ibm9kZS5jIGIvZnMvaGZzL2Jub2RlLmMKaW5kZXggZGE4ZTUzNDJjOTFjYzIuLjFiMzMxMTA4ZDljMDFiIDEwMDY0NAotLS0gYS9mcy9oZnMvYm5vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvYm5vZGUuYwpAQCAtMTUsNDggJiM0MzsxNSw2IEBACiAKICNpbmNsdWRlICYjMzQ7YnRyZWUuaCYjMzQ7CiAKLXN0YXRpYyBpbmxpbmUKLWJvb2wgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYpCi17Ci0JYm9vbCBpc192YWxpZCA9IG9mZiAmbHQ7IG5vZGUtJmd0O3RyZWUtJmd0O25vZGVfc2l6ZTsKLQotCWlmICghaXNfdmFsaWQpIHsKLQkJcHJfZXJyKCYjMzQ7cmVxdWVzdGVkIGludmFsaWQgb2Zmc2V0OiAmIzM0OwotCQkgICAgICAgJiMzNDtOT0RFOiBpZCAldSwgdHlwZSAlI3gsIGhlaWdodCAldSwgJiMzNDsKLQkJICAgICAgICYjMzQ7bm9kZV9zaXplICV1LCBvZmZzZXQgJXVcbiYjMzQ7LAotCQkgICAgICAgbm9kZS0mZ3Q7dGhpcywgbm9kZS0mZ3Q7dHlwZSwgbm9kZS0mZ3Q7aGVpZ2h0LAotCQkgICAgICAgbm9kZS0mZ3Q7dHJlZS0mZ3Q7bm9kZV9zaXplLCBvZmYpOwotCX0KLQotCXJldHVybiBpc192YWxpZDsKLX0KLQotc3RhdGljIGlubGluZQotdTMyIGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZiwgdTMyIGxlbikKLXsKLQl1bnNpZ25lZCBpbnQgbm9kZV9zaXplOwotCi0JaWYgKCFpc19ibm9kZV9vZmZzZXRfdmFsaWQobm9kZSwgb2ZmKSkKLQkJcmV0dXJuIDA7Ci0KLQlub2RlX3NpemUgPSBub2RlLSZndDt0cmVlLSZndDtub2RlX3NpemU7Ci0KLQlpZiAoKHU2NClvZmYgJiM0MzsgbGVuICZndDsgbm9kZV9zaXplKSB7Ci0JCXUzMiBuZXdfbGVuID0gbm9kZV9zaXplIC0gb2ZmOwotCi0JCXByX2VycigmIzM0O3JlcXVlc3RlZCBsZW5ndGggaGFzIGJlZW4gY29ycmVjdGVkOiAmIzM0OwotCQkgICAgICAgJiMzNDtOT0RFOiBpZCAldSwgdHlwZSAlI3gsIGhlaWdodCAldSwgJiMzNDsKLQkJICAgICAgICYjMzQ7bm9kZV9zaXplICV1LCBvZmZzZXQgJXUsICYjMzQ7Ci0JCSAgICAgICAmIzM0O3JlcXVlc3RlZF9sZW4gJXUsIGNvcnJlY3RlZF9sZW4gJXVcbiYjMzQ7LAotCQkgICAgICAgbm9kZS0mZ3Q7dGhpcywgbm9kZS0mZ3Q7dHlwZSwgbm9kZS0mZ3Q7aGVpZ2h0LAotCQkgICAgICAgbm9kZS0mZ3Q7dHJlZS0mZ3Q7bm9kZV9zaXplLCBvZmYsIGxlbiwgbmV3X2xlbik7Ci0KLQkJcmV0dXJuIG5ld19sZW47Ci0JfQotCi0JcmV0dXJuIGxlbjsKLX0KLQogdm9pZCBoZnNfYm5vZGVfcmVhZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB2b2lkICpidWYsIHUzMiBvZmYsIHUzMiBsZW4pCiB7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CmRpZmYgLS1naXQgYS9mcy9oZnMvYnRyZWUuYyBiL2ZzL2hmcy9idHJlZS5jCmluZGV4IDJlYjM3YTJmNjRlODY2Li4yYzg0MTIyMWM0NWNlZCAxMDA2NDQKLS0tIGEvZnMvaGZzL2J0cmVlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2J0cmVlLmMKQEAgLTE1LDYgJiM0MzsxNSw4IEBACiAKICNpbmNsdWRlICYjMzQ7YnRyZWUuaCYjMzQ7CiAKJiM0MztzdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KTsKJiM0MzsKIC8qIEdldCBhIHJlZmVyZW5jZSB0byBhIEIqVHJlZSBhbmQgZG8gc29tZSBpbml0aWFsIGNoZWNrcyAqLwogc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2V5Y21wKQogewpAQCAtMjMsNiAmIzQzOzI1LDcgQEAgc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2UKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKIAlzdHJ1Y3QgZm9saW8gKmZvbGlvOwogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CiYjNDM7CXN0cnVjdCBoZnNfYm5vZGUgKm5vZGU7CiAJdW5zaWduZWQgaW50IHNpemU7CiAJdTE2IGRibG9jazsKIAlzZWN0b3JfdCBzdGFydF9ibG9jazsKQEAgLTE1NSw2ICYjNDM7MTU4LDIwIEBAIHN0cnVjdCBoZnNfYnRyZWUgKmhmc19idHJlZV9vcGVuKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpZCwgYnRyZWVfa2V5Y21wIGtlCiAJa3VubWFwX2xvY2FsKGhlYWQpOwogCWZvbGlvX3VubG9jayhmb2xpbyk7CiAJZm9saW9fcHV0KGZvbGlvKTsKJiM0MzsKJiM0MzsJbm9kZSA9IGhmc19ibm9kZV9maW5kKHRyZWUsIEhGU19UUkVFX0hFQUQpOwomIzQzOwlpZiAoSVNfRVJSKG5vZGUpKQomIzQzOwkJZ290byBmcmVlX2lub2RlOwomIzQzOwomIzQzOwlpZiAoIWhmc19ibWFwX3Rlc3RfYml0KG5vZGUsIEhGU19UUkVFX0hFQUQpKSB7CiYjNDM7CQlwcl93YXJuKCYjMzQ7KCVzKTogJXMgKGNuaWQgMHgleCkgYml0bWFwIGNvcnJ1cHRlZCwgZm9yY2luZyByZG9ubHlcbiYjMzQ7LAomIzQzOwkJCXNiLSZndDtzX2lkLCBpZCA9PSBIRlNfRVhUX0NOSUQgPyAmIzM0O2V4dGVudHMmIzM0OyA6ICYjMzQ7Y2F0YWxvZyYjMzQ7LCBpZCk7CiYjNDM7CQlwcl93YXJuKCYjMzQ7UnVuIGZzY2suaGZzIHRvIHJlcGFpci5cbiYjMzQ7KTsKJiM0MzsJCXNiLSZndDtzX2ZsYWdzIHw9IFNCX1JET05MWTsKJiM0MzsJfQomIzQzOwomIzQzOwloZnNfYm5vZGVfcHV0KG5vZGUpOwomIzQzOwogCXJldHVybiB0cmVlOwogCiBmYWlsX2ZvbGlvOgpAQCAtMzU2LDYgJiM0MzszNzMsNzUgQEAgc3RydWN0IGhmc19ibm9kZSAqaGZzX2JtYXBfYWxsb2Moc3RydWN0IGhmc19idHJlZSAqdHJlZSkKIAl9CiB9CiAKJiM0MzsvKiBDb250ZXh0IGZvciBpdGVyYXRpbmcgYi10cmVlIG1hcCBwYWdlcwomIzQzOyAqIEBwYWdlX2lkeDogVGhlIGluZGV4IG9mIHRoZSBwYWdlIHdpdGhpbiB0aGUgYi1ub2RlJiMzOTtzIHBhZ2UgYXJyYXkKJiM0MzsgKiBAb2ZmOiBUaGUgYnl0ZSBvZmZzZXQgd2l0aGluIHRoZSBtYXBwZWQgcGFnZQomIzQzOyAqIEBsZW46IFRoZSByZW1haW5pbmcgbGVuZ3RoIG9mIHRoZSBtYXAgcmVjb3JkCiYjNDM7ICovCiYjNDM7c3RydWN0IGhmc19ibWFwX2N0eCB7CiYjNDM7CXVuc2lnbmVkIGludCBwYWdlX2lkeDsKJiM0MzsJdW5zaWduZWQgaW50IG9mZjsKJiM0MzsJdTE2IGxlbjsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcGFnZSAqaGZzX2JtYXBfZ2V0X21hcF9wYWdlKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsCiYjNDM7CQkJCQkgIHN0cnVjdCBoZnNfYm1hcF9jdHggKmN0eCwKJiM0MzsJCQkJCSAgdTMyIGJ5dGVfb2Zmc2V0KQomIzQzO3sKJiM0MzsJdTE2IHJlY19pZHgsIG9mZjE2OwomIzQzOwl1bnNpZ25lZCBpbnQgcGFnZV9vZmY7CiYjNDM7CiYjNDM7CWlmIChub2RlLSZndDt0aGlzID09IEhGU19UUkVFX0hFQUQpIHsKJiM0MzsJCWlmIChub2RlLSZndDt0eXBlICE9IEhGU19OT0RFX0hFQURFUikgewomIzQzOwkJCXByX2VycigmIzM0O2hmczogaW52YWxpZCBidHJlZSBoZWFkZXIgbm9kZVxuJiMzNDspOwomIzQzOwkJCXJldHVybiBFUlJfUFRSKC1FSU8pOwomIzQzOwkJfQomIzQzOwkJcmVjX2lkeCA9IEhGU19CVFJFRV9IRFJfTUFQX1JFQ19JTkRFWDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmIChub2RlLSZndDt0eXBlICE9IEhGU19OT0RFX01BUCkgewomIzQzOwkJCXByX2VycigmIzM0O2hmczogaW52YWxpZCBidHJlZSBtYXAgbm9kZVxuJiMzNDspOwomIzQzOwkJCXJldHVybiBFUlJfUFRSKC1FSU8pOwomIzQzOwkJfQomIzQzOwkJcmVjX2lkeCA9IEhGU19CVFJFRV9NQVBfTk9ERV9SRUNfSU5ERVg7CiYjNDM7CX0KJiM0MzsKJiM0MzsJY3R4LSZndDtsZW4gPSBoZnNfYnJlY19sZW5vZmYobm9kZSwgcmVjX2lkeCwgJmFtcDtvZmYxNik7CiYjNDM7CWlmICghY3R4LSZndDtsZW4pCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsKJiM0MzsKJiM0MzsJaWYgKCFpc19ibm9kZV9vZmZzZXRfdmFsaWQobm9kZSwgb2ZmMTYpKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVJTyk7CiYjNDM7CiYjNDM7CWN0eC0mZ3Q7bGVuID0gY2hlY2tfYW5kX2NvcnJlY3RfcmVxdWVzdGVkX2xlbmd0aChub2RlLCBvZmYxNiwgY3R4LSZndDtsZW4pOwomIzQzOwomIzQzOwlpZiAoYnl0ZV9vZmZzZXQgJmd0Oz0gY3R4LSZndDtsZW4pCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKJiM0MzsKJiM0MzsJcGFnZV9vZmYgPSAodTMyKW9mZjE2ICYjNDM7IG5vZGUtJmd0O3BhZ2Vfb2Zmc2V0ICYjNDM7IGJ5dGVfb2Zmc2V0OwomIzQzOwljdHgtJmd0O3BhZ2VfaWR4ID0gcGFnZV9vZmYgJmd0OyZndDsgUEFHRV9TSElGVDsKJiM0MzsJY3R4LSZndDtvZmYgPSBwYWdlX29mZiAmYW1wOyB+UEFHRV9NQVNLOwomIzQzOwomIzQzOwlyZXR1cm4gbm9kZS0mZ3Q7cGFnZVtjdHgtJmd0O3BhZ2VfaWR4XTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBoZnNfYm1hcF9jdHggY3R4OwomIzQzOwlzdHJ1Y3QgcGFnZSAqcGFnZTsKJiM0MzsJdTggKmJtYXAsIGJ5dGUsIG1hc2s7CiYjNDM7CiYjNDM7CXBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgJmFtcDtjdHgsIG5vZGVfYml0X2lkeCAvIEJJVFNfUEVSX0JZVEUpOwomIzQzOwlpZiAoSVNfRVJSKHBhZ2UpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlibWFwID0ga21hcF9sb2NhbF9wYWdlKHBhZ2UpOwomIzQzOwlieXRlID0gYm1hcFtjdHgub2ZmXTsKJiM0MzsJa3VubWFwX2xvY2FsKGJtYXApOwomIzQzOwomIzQzOwltYXNrID0gMSAmbHQ7Jmx0OyAoNyAtIChub2RlX2JpdF9pZHggJSBCSVRTX1BFUl9CWVRFKSk7CiYjNDM7CXJldHVybiAoYnl0ZSAmYW1wOyBtYXNrKSAhPSAwOwomIzQzO30KJiM0MzsKIHZvaWQgaGZzX2JtYXBfZnJlZShzdHJ1Y3QgaGZzX2Jub2RlICpub2RlKQogewogCXN0cnVjdCBoZnNfYnRyZWUgKnRyZWU7CmRpZmYgLS1naXQgYS9mcy9oZnMvYnRyZWUuaCBiL2ZzL2hmcy9idHJlZS5oCmluZGV4IDk5YmU4NThiMjQ0NjUwLi5mOGFmYTMzZjcwOWFkMiAxMDA2NDQKLS0tIGEvZnMvaGZzL2J0cmVlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2J0cmVlLmgKQEAgLTEyOSwzICYjNDM7MTI5LDQzIEBAIGV4dGVybiBpbnQgX19oZnNfYnJlY19maW5kKHN0cnVjdCBoZnNfYm5vZGUgKmJub2RlLCBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpOwogZXh0ZXJuIGludCBoZnNfYnJlY19maW5kKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCk7CiBleHRlcm4gaW50IGhmc19icmVjX3JlYWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB2b2lkICpyZWMsIHUzMiByZWNfbGVuKTsKIGV4dGVybiBpbnQgaGZzX2JyZWNfZ290byhzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIGludCBjbnQpOwomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19ibm9kZV9vZmZzZXRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZikKJiM0Mzt7CiYjNDM7CWJvb2wgaXNfdmFsaWQ7CiYjNDM7CiYjNDM7CWlmICghbm9kZSB8fCAhbm9kZS0mZ3Q7dHJlZSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaXNfdmFsaWQgPSBvZmYgJmx0OyBub2RlLSZndDt0cmVlLSZndDtub2RlX3NpemU7CiYjNDM7CiYjNDM7CWlmICghaXNfdmFsaWQpIHsKJiM0MzsJCXByX2VycigmIzM0O2ludmFsaWQgb2Zmc2V0OiBpZCAldSwgdHlwZSAleCwgaCAldSwgc3ogJXUsIG9mZiAldVxuJiMzNDssCiYjNDM7CQkgICAgICAgbm9kZS0mZ3Q7dGhpcywgbm9kZS0mZ3Q7dHlwZSwgbm9kZS0mZ3Q7aGVpZ2h0LAomIzQzOwkJICAgICAgIG5vZGUtJmd0O3RyZWUtJmd0O25vZGVfc2l6ZSwgb2ZmKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gaXNfdmFsaWQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgdTMyIGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZiwgdTMyIGxlbikKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBub2RlX3NpemU7CiYjNDM7CiYjNDM7CWlmICghaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKG5vZGUsIG9mZikpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJbm9kZV9zaXplID0gbm9kZS0mZ3Q7dHJlZS0mZ3Q7bm9kZV9zaXplOwomIzQzOwomIzQzOwlpZiAoKHU2NClvZmYgJiM0MzsgbGVuICZndDsgbm9kZV9zaXplKSB7CiYjNDM7CQl1MzIgbmV3X2xlbiA9IG5vZGVfc2l6ZSAtIG9mZjsKJiM0MzsKJiM0MzsJCXByX2VycigmIzM0O2NvcnJlY3RlZCBsZW46IGlkICV1LCB0eXBlICV4LCBoICV1LCBzeiAldSwgb2ZmICV1LCBsZW4gJXUtJmd0OyV1XG4mIzM0OywKJiM0MzsJCSAgICAgICBub2RlLSZndDt0aGlzLCBub2RlLSZndDt0eXBlLCBub2RlLSZndDtoZWlnaHQsCiYjNDM7CQkgICAgICAgbm9kZV9zaXplLCBvZmYsIGxlbiwgbmV3X2xlbik7CiYjNDM7CiYjNDM7CQlyZXR1cm4gbmV3X2xlbjsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gbGVuOwomIzQzO30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oIGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmgKaW5kZXggNDVmYjRjOWZmOWY1ZWUuLjhkYzEwZTBiZmE3ZTljIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaApAQCAtNTEwLDYgJiM0Mzs1MTAsMTEgQEAgc3RydWN0IGhmc19idHJlZV9oZWFkZXJfcmVjIHsKIAkJCQkJCSAgIGItdHJlZSBidXQgbm90IGluIGV4dGVudHMKIAkJCQkJCSAgIGItdHJlZSAoaGZzcGx1cykuICovCiAKJiM0MzsvKiBIRlMgQlRyZWUgbWlzYyBpbmZvICovCiYjNDM7I2RlZmluZSBIRlNfVFJFRV9IRUFECQkJCTAKJiM0MzsjZGVmaW5lIEhGU19CVFJFRV9IRFJfTUFQX1JFQ19JTkRFWAkJMgkvKiBNYXAgKGJpdG1hcCkgcmVjb3JkIGluIEhlYWRlciBub2RlICovCiYjNDM7I2RlZmluZSBIRlNfQlRSRUVfTUFQX05PREVfUkVDX0lOREVYCQkwCS8qIE1hcCByZWNvcmQgaW4gTWFwIE5vZGUgKi8KJiM0MzsKIC8qIEhGUyYjNDM7IEJUcmVlIG1pc2MgaW5mbyAqLwogI2RlZmluZSBIRlNQTFVTX1RSRUVfSEVBRAkJCTAKICNkZWZpbmUgSEZTUExVU19OT0RFX01YU1oJCQkzMjc2OAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSEZTIEZpbGVzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF04oCZcyBtYWtpbmcgc29tZSBpbnRlcmVzdGluZyBjaGFuZ2VzIHRvIHRoZSBIRlMgZmlsZXN5c3RlbSBjb2RlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGItdHJlZXMuIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGBmcy9oZnMvYm5vZGUuY2AsIGBmcy9oZnMvYnRyZWUuY2AsIGBmcy9oZnMvYnRyZWUuaGAsIGFuZCBgaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhgLiBMb29rcyBsaWtlIHRoZXkmIzM5O3JlIHNoaWZ0aW5nIGFyb3VuZCBzb21lIHZhbGlkYXRpb24gZnVuY3Rpb25zIOKAkyBgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkYCBhbmQgYGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGhgIOKAkyBmcm9tIGBibm9kZS5jYCB0byBgYnRyZWUuaGAsIG1ha2luZyB0aGVtIHN0YXRpYyBpbmxpbmUuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIG9wdGltaXphdGlvbiB0ZWNobmlxdWUgZm9yIHJlZHVjaW5nIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIHNvIEkgYXNzdW1lIHRoZXkgYXJlIGZyZXF1ZW50bHkgY2FsbGVkLgoKVGhlIGJpZyBmdW5jdGlvbmFsIGNoYW5nZSwgYXMgSSB1bmRlcnN0YW5kIGl0LCBzZWVtcyB0byBiZSB0aGUgaW50cm9kdWN0aW9uIG9mIGEgbmV3IGZ1bmN0aW9uLCBgaGZzX2JtYXBfdGVzdF9iaXRgLCBpbiBgYnRyZWUuY2AsIGFuZCBpdHMgc3Vic2VxdWVudCB1c2Ugd2l0aGluIGBoZnNfYnRyZWVfb3BlbmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhhdCBgaGZzX2JtYXBfdGVzdF9iaXRgIGNhbGwgd2l0aGluIHRoZSBgaGZzX2J0cmVlX29wZW5gIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIHRvIGJlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuIFdoeSBpcyB0aGUgYEhGU19UUkVFX0hFQURgIGJpdCBiZWluZyB0ZXN0ZWQ/IEFuZCwgaWYgaXQmIzM5O3Mgbm90IHNldCwgaXQmIzM5O3MgbWFya2luZyB0aGUgc3VwZXJibG9jayBhcyByZWFkLW9ubHkgKGBzYi0mZ3Q7c19mbGFncyB8PSBTQl9SRE9OTFlgKS4gVGhhdCBoYXMgaW1wbGljYXRpb25zIGZvciBob3cgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBhbmQgdXNlZC4gVGhpcyBzdWdnZXN0cyBpdCBtaWdodCBiZSBkZXRlY3Rpbmcgc29tZSBraW5kIG9mIGZpbGVzeXN0ZW0gY29ycnVwdGlvbiBvciBpbnRlZ3JpdHkgaXNzdWUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgbWFrZSBzdXJlIHRoaXMgSEZTIGNvZGUgcGF0aCBpcyBldmVuIHJlbGV2YW50LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgSEZTIGlzIGJ1aWx0IGFuZCBhY2Nlc3NpYmxlIGluIHRoZSB0YXJnZXQgc3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBgQ09ORklHX0hGU19GU2AgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoYXQmIzM5O3MgdGhlIGJhc2ljIHByZXJlcXVpc2l0ZS4KCkkgbmVlZCB0byBkaXZlIGludG8gYGZzL2hmcy9idHJlZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGxvb2sgYXQgYGhmc19idHJlZV9vcGVuYCB0byBzZWUgaG93IGl0IHdvcmtzIGFuZCB3aGVyZSB0aGF0IGBoZnNfYm1hcF90ZXN0X2JpdGAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBJIHdhbnQgdG8ga25vdyB3aGVuIGBoZnNfYnRyZWVfb3BlbmAgaXMgY2FsbGVkIGJlY2F1c2UgdGhhdCB3aWxsIGlsbHVtaW5hdGUgd2hlbiB0aGlzIGNvcnJ1cHRpb24gY2hlY2sgaGFwcGVucy4gSXQmIzM5O3MgbGlrZWx5IGR1cmluZyBtb3VudCBvciB3aGVuIG9wZW5pbmcgYnRyZWVzLCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbXBsaWVzLgoKVG8gbWFrZSB0aGlzIHF1aWNrZXIsIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgdG8gbG9jYXRlIHRoZSBvY2N1cnJlbmNlcyBvZiBib3RoIGBoZnNfYnRyZWVfb3BlbmAgYW5kIGBoZnNfYm1hcF90ZXN0X2JpdGAgd2l0aGluIHRoZSBjb2RlYmFzZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgaW1tZWRpYXRlIGNvbnRleHQgSSBuZWVkIHRvIHByb3Blcmx5IHVuZGVyc3RhbmQgdGhpcyBwYXRjaCBhbmQgYXNzZXNzIGl0cyBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGZzX2J0cmVlX29wZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmcy9idHJlZS5jPTE4PXN0YXRpYyBib29sIGhmc19ibWFwX3Rlc3RfYml0KHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBub2RlX2JpdF9pZHgpO1xuLS1cbmZzL2hmcy9idHJlZS5jLTIwLS8qIEdldCBhIHJlZmVyZW5jZSB0byBhIEIqVHJlZSBhbmQgZG8gc29tZSBpbml0aWFsIGNoZWNrcyAqL1xuZnMvaGZzL2J0cmVlLmM6MjE6c3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2V5Y21wKVxuZnMvaGZzL2J0cmVlLmMtMjIte1xuLS1cbmZzL2hmcy9idHJlZS5oPTc3PXN0cnVjdCBoZnNfZmluZF9kYXRhIHtcbi0tXG5mcy9oZnMvYnRyZWUuaC04OC0vKiBidHJlZS5jICovXG5mcy9oZnMvYnRyZWUuaDo4OTpleHRlcm4gc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLFxuZnMvaGZzL2J0cmVlLmgtOTAtXHRcdFx0XHRcdGJ0cmVlX2tleWNtcCBrZXljbXApO1xuLS1cbmZzL2hmcy9tZGIuYz05ND1pbnQgaGZzX21kYl9nZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9oZnMvbWRiLmMtMjI3LVxuZnMvaGZzL21kYi5jOjIyODpcdEhGU19TQihzYiktXHUwMDNlZXh0X3RyZWUgPSBoZnNfYnRyZWVfb3BlbihzYiwgSEZTX0VYVF9DTklELCBoZnNfZXh0X2tleWNtcCk7XG5mcy9oZnMvbWRiLmMtMjI5LVx0aWYgKCFIRlNfU0Ioc2IpLVx1MDAzZWV4dF90cmVlKSB7XG4tLVxuZnMvaGZzL21kYi5jLTIzMi1cdH1cbmZzL2hmcy9tZGIuYzoyMzM6XHRIRlNfU0Ioc2IpLVx1MDAzZWNhdF90cmVlID0gaGZzX2J0cmVlX29wZW4oc2IsIEhGU19DQVRfQ05JRCwgaGZzX2NhdF9rZXljbXApO1xuZnMvaGZzL21kYi5jLTIzNC1cdGlmICghSEZTX1NCKHNiKS1cdTAwM2VjYXRfdHJlZSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NTEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBIRlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYGhmc19ibWFwX3Rlc3RfYml0YCB3aXRoaW4gYGZzL2hmcy9idHJlZS5jYCBhbmQgc3Vic2VxdWVudGx5IGVtcGxveXMgaXQgd2l0aGluIGBoZnNfYnRyZWVfb3BlbmAuIFRoaXMgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQmIzM5O3MgZnVuY3Rpb25hbCwgZXNzZW50aWFsbHkgYWRkaW5nIGEgY2hlY2sgZm9yIGJpdG1hcCBjb3JydXB0aW9uLiBJZiBjb3JydXB0aW9uIGlzIGRldGVjdGVkLCBpdCBmb3JjZXMgdGhlIGZpbGVzeXN0ZW0gaW50byByZWFkLW9ubHkgbW9kZSwgd2hpY2ggaXMgYSBzZW5zaWJsZSBzYWZldHkgcHJlY2F1dGlvbi4KClRoZSBjYWxsIHBhdGggYXBwZWFycyB0byBiZSBgaGZzX21kYl9nZXRgIHdoaWNoIHRoZW4gbGVhZHMgZGlyZWN0bHkgdG8gYGhmc19idHJlZV9vcGVuYC4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBgaGZzX2J0cmVlX29wZW5gIGlzIGV4ZWN1dGVkIGR1cmluZyB0aGUgbW91bnQgcHJvY2Vzcy4gVGhlcmVmb3JlLCB0aGlzIGNvcnJ1cHRpb24gY2hlY2sgaXMgYWN0aXZlIGR1cmluZyB0aGUgaW5pdGlhbCBtb3VudGluZyBvZiB0aGUgSEZTIGZpbGVzeXN0ZW0uCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciBIRlMuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhbGlnbiB3aXRoIGhvdyB0aGlzIHBhdGNoIGlzIGludGVuZGVkIHRvIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBIRlMgaW1wbGVtZW50YXRpb24uIFRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBhbiBvcHRpb25hbCBmZWF0dXJlLCBvciBjb3JlIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEhGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2hmcy9LY29uZmlnOjI6Y29uZmlnIEhGU19GU1xuZnMvaGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIE1hY2ludG9zaCBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI3NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgSEZTX0ZTYCBjb25maWd1cmF0aW9uLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgdGhpcyBhc3BlY3Qgb2YgdGhlIGZpbGVzeXN0ZW0uIExldCYjMzk7cyBzZWUuLi4gYGhmc19idHJlZV9vcGVuYCBkZWZpbml0ZWx5IHN0YW5kcyBvdXQuIEkgc2hvdWxkIGFsc28gY2hlY2sgYGhmc19ibWFwX3Rlc3RfYml0YCBhbmQgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAsIHRob3NlIGNvdWxkIGJlIGltcG9ydGFudC4KClJpZ2h0LCB0aW1lIHRvIHNlZSBpZiB0aG9zZSBsYXN0IHR3bywgYGhmc19ibWFwX3Rlc3RfYml0YCBhbmQgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAsIGFyZSBzdGF0aWMgb3IgZXhwb3J0ZWQuIEFoLCB0aGV5IGFyZSBzdGF0aWMgd2l0aGluIGBmcy9oZnMvYnRyZWUuY2AuIE9rYXksIHRoYXQmIzM5O3MgdXNlZnVsIGNvbnRleHQuIEF0IGxlYXN0IGBoZnNfYnRyZWVfb3BlbmAgaXMgZ2xvYmFsIGFuZCBhY2Nlc3NpYmxlLgoKTm93LCBsZXQgbWUgZGl2ZSBpbnRvIGBmcy9oZnMvYnRyZWUuY2AgaXRzZWxmLiBJIHdhbnQgdG8gc2NhbiB0aGF0IGZpbGUgdGhvcm91Z2hseSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBJIG5lZWQgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hmc19ibWFwX3Rlc3RfYml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnMvYnRyZWUuYy0xNy1cbmZzL2hmcy9idHJlZS5jOjE4OnN0YXRpYyBib29sIGhmc19ibWFwX3Rlc3RfYml0KHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBub2RlX2JpdF9pZHgpO1xuZnMvaGZzL2J0cmVlLmMtMTktXG4tLVxuZnMvaGZzL2J0cmVlLmM9MjE9c3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2V5Y21wKVxuLS1cbmZzL2hmcy9idHJlZS5jLTE2NS1cbmZzL2hmcy9idHJlZS5jOjE2NjpcdGlmICghaGZzX2JtYXBfdGVzdF9iaXQobm9kZSwgSEZTX1RSRUVfSEVBRCkpIHtcbmZzL2hmcy9idHJlZS5jLTE2Ny1cdFx0cHJfd2FybihcJiMzNDsoJXMpOiAlcyAoY25pZCAweCV4KSBiaXRtYXAgY29ycnVwdGVkLCBmb3JjaW5nIHJkb25seVxcblwmIzM0Oyxcbi0tXG5mcy9oZnMvYnRyZWUuYz0zODc9c3RhdGljIHN0cnVjdCBwYWdlICpoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uoc3RydWN0IGhmc19ibm9kZSAqbm9kZSxcbi0tXG5mcy9oZnMvYnRyZWUuYy00MjYtXG5mcy9oZnMvYnRyZWUuYzo0Mjc6c3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeClcbmZzL2hmcy9idHJlZS5jLTQyOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAxOQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhGUyBGaWxlc3lzdGVtIEZ1bmN0aW9ucyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgbmV3IGZ1bmN0aW9ucyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhcmUgYGhmc19ibWFwX3Rlc3RfYml0YCBhbmQgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAuIFNpbmNlIHRoZXkmIzM5O3JlIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCBteSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIG5hcnJvdyB0aGUgZm9jdXMgdG8gYGhmc19idHJlZV9vcGVuYC4gQnV0IHRoZW4gSSByZW1lbWJlcmVkIHRoYXQgc3l6a2FsbGVyICpjYW4qIHRhcmdldCBzdGF0aWMgZnVuY3Rpb25zLCBwcm92aWRlZCB0aGV5JiMzOTtyZSByZXByZXNlbnRlZCBpbiB0aGUgZGVidWcgaW5mb3JtYXRpb24uIFRoYXQmIzM5O3MgZ29vZCBuZXdzLCBleHBhbmRzIHRoZSBwb3NzaWJpbGl0aWVzLgoKQWxyaWdodCwgbGV0JiMzOTtzIGluY2x1ZGUgYWxsIHRocmVlIGluIHRoZSBmdXp6aW5nIHNjb3BlOiBgaGZzX2J0cmVlX29wZW5gLCBgaGZzX2JtYXBfdGVzdF9iaXRgLCBhbmQgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAuIEdvdHRhIG1ha2Ugc3VyZSB3ZSBjb3ZlciB0aGUgZ3JvdW5kIHRob3JvdWdobHkuCgpOb3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrOiBgaGZzX2JtYXBfdGVzdF9iaXRgIGlzIGRlZmluaXRlbHkgdGhlIGNvcnJlY3QgbmFtZSwgYW5kIHRoZSBzYW1lIGdvZXMgZm9yIGBoZnNfYm1hcF9nZXRfbWFwX3BhZ2VgLiBDb25maXJtZWQuCgpOZXh0IHVwLCBjb25maWd1cmF0aW9ucy4gQXJlIHRoZXJlIGFueSBvdGhlciBmbGFncyBvciBkZXBlbmRlbmNpZXMgdG8gY29uc2lkZXI/IE5vcGUsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MganVzdCBgSEZTX0ZTYC4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhhdCBgSEZTX0ZTYCBpcyB0aGUgKm9ubHkqIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBDYW4mIzM5O3QgYmUgdG9vIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHVwIGEgZnV6emluZyBjYW1wYWlnbiwgeW91IGtub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnMvS2NvbmZpZz0yPWNvbmZpZyBIRlNfRlNcbmZzL2hmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBNYWNpbnRvc2ggZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuZnMvaGZzL0tjb25maWc6NDpcdGRlcGVuZHMgb24gQkxPQ0tcbmZzL2hmcy9LY29uZmlnLTUtXHRzZWxlY3QgQlVGRkVSX0hFQURcbi0tXG5mcy9oZnMvS2NvbmZpZz0xNz1jb25maWcgSEZTX0tVTklUX1RFU1RcbmZzL2hmcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIEhGUyBmaWxlc3lzdGVtXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbmZzL2hmcy9LY29uZmlnOjE5Olx0ZGVwZW5kcyBvbiBIRlNfRlMgXHUwMDI2XHUwMDI2IEtVTklUXG5mcy9oZnMvS2NvbmZpZy0yMC1cdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MDUKCQkJCQkJCW91dHB1dDogMTEzCgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhGUyBGaWxlc3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIGFmdGVyIHJldmlld2luZyB0aGUgcGF0Y2gsIGl0IHNlZW1zIGBIRlNfRlNgIGlzIHRoZSBuZWNlc3NhcnkgYW5kIHN1ZmZpY2llbnQgY29uZmlndXJhdGlvbiBvcHRpb24uIExldCBtZSBzeW50aGVzaXplIHdoYXQgSSYjMzk7dmUgZ2F0aGVyZWQuIE15IGFzc2Vzc21lbnQgaXMgYXMgZm9sbG93czoKCiogICAqKldvcnRoRnV6emluZyoqOiAqVHJ1ZSog4oCTIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLgoqICAgKipGb2N1c1N5bWJvbHMqKjogYGhmc19idHJlZV9vcGVuYCwgYGhmc19ibWFwX3Rlc3RfYml0YCwgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAg4oCTIHRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gdGFyZ2V0IGluIG15IGZ1enppbmcgZWZmb3J0cy4KKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgSEZTX0ZTYCDigJMgdGhpcyBpcyB0aGUgY3J1Y2lhbCBjb25maWd1cmF0aW9uIGZsYWcgdGhhdCBlbmFibGVzIHRoZSByZWxldmFudCBjb2RlIHBhdGguCiogICAqKlJlYXNvbmluZyoqOiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY2hlY2tzIGZvciBwb3RlbnRpYWwgYml0bWFwIGNvcnJ1cHRpb24gd2l0aGluIHRoZSBIRlMgQi10cmVlIHN0cnVjdHVyZSBzcGVjaWZpY2FsbHkgZHVyaW5nIHRoZSBgbW91bnRgIGZ1bmN0aW9uLiBDcnVjaWFsbHksIGlmIGNvcnJ1cHRpb24gaXMgZGV0ZWN0ZWQsIGl0IGZvcmNlcyB0aGUgZmlsZXN5c3RlbSBpbnRvIHJlYWQtb25seSBtb2RlIHRvIHByZXZlbnQgZGF0YSBsb3NzLiBUaGlzIGlzICpyZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlKiBhbmQgcmVwcmVzZW50cyBhIGNyaXRpY2FsIHBvaW50IGluIHRoZSBmaWxlc3lzdGVtIGxpZmVjeWNsZSwgdGhlcmVmb3JlIGEgaGlnaC12YWx1ZSBmdXp6aW5nIHRhcmdldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19idHJlZV9vcGVuJiMzNDssCiAgICAmIzM0O2hmc19ibWFwX3Rlc3RfYml0JiMzNDssCiAgICAmIzM0O2hmc19ibWFwX2dldF9tYXBfcGFnZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG5ldyBsb2dpYyB0byBjaGVjayBmb3IgYml0bWFwIGNvcnJ1cHRpb24gZHVyaW5nIEItdHJlZSBvcGVuIGluIHRoZSBIRlMgZmlsZXN5c3RlbSwgZm9yY2luZyB0aGUgZmlsZXN5c3RlbSB0byByZWFkLW9ubHkgaWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZC4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNfYnRyZWVfb3BlbiYjMzQ7LAogICAgJiMzNDtoZnNfYm1hcF90ZXN0X2JpdCYjMzQ7LAogICAgJiMzNDtoZnNfYm1hcF9nZXRfbWFwX3BhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgbG9naWMgdG8gY2hlY2sgZm9yIGJpdG1hcCBjb3JydXB0aW9uIGR1cmluZyBCLXRyZWUgb3BlbiBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0sIGZvcmNpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gcmVhZC1vbmx5IGlmIGNvcnJ1cHRpb24gaXMgZGV0ZWN0ZWQuIFRoaXMgaXMgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY29kZSBkdXJpbmcgZmlsZXN5c3RlbSBtb3VudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjI1LjEyNTA5MzUxOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4Mzk1NDI5MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhmc19idHJlZV9vcGVuXCIsXG4gICAgXCJoZnNfYm1hcF90ZXN0X2JpdFwiLFxuICAgIFwiaGZzX2JtYXBfZ2V0X21hcF9wYWdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgbG9naWMgdG8gY2hlY2sgZm9yIGJpdG1hcCBjb3JydXB0aW9uIGR1cmluZyBCLXRyZWUgb3BlbiBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0sIGZvcmNpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gcmVhZC1vbmx5IGlmIGNvcnJ1cHRpb24gaXMgZGV0ZWN0ZWQuIFRoaXMgaXMgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY29kZSBkdXJpbmcgZmlsZXN5c3RlbSBtb3VudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6NTk6MjUuMTI1MDk4NDU4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTkyMzQxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzZjQzNTRjNDIwN2I4MzFlZTg2NDhjNGQyMTYzZjAwMmQ1MTc1OWY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDE0IDEzOjU5OjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9ibm9kZS5jIGIvZnMvaGZzL2Jub2RlLmNcXG5pbmRleCBkYThlNTM0MmM5MWNjMi4uMWIzMzExMDhkOWMwMWIgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzL2Jub2RlLmNcXG4rKysgYi9mcy9oZnMvYm5vZGUuY1xcbkBAIC0xNSw0OCArMTUsNiBAQFxcbiBcXG4gI2luY2x1ZGUgXFxcImJ0cmVlLmhcXFwiXFxuIFxcbi1zdGF0aWMgaW5saW5lXFxuLWJvb2wgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYpXFxuLXtcXG4tXFx0Ym9vbCBpc192YWxpZCA9IG9mZiBcXHUwMDNjIG5vZGUtXFx1MDAzZXRyZWUtXFx1MDAzZW5vZGVfc2l6ZTtcXG4tXFxuLVxcdGlmICghaXNfdmFsaWQpIHtcXG4tXFx0XFx0cHJfZXJyKFxcXCJyZXF1ZXN0ZWQgaW52YWxpZCBvZmZzZXQ6IFxcXCJcXG4tXFx0XFx0ICAgICAgIFxcXCJOT0RFOiBpZCAldSwgdHlwZSAlI3gsIGhlaWdodCAldSwgXFxcIlxcbi1cXHRcXHQgICAgICAgXFxcIm5vZGVfc2l6ZSAldSwgb2Zmc2V0ICV1XFxcXG5cXFwiLFxcbi1cXHRcXHQgICAgICAgbm9kZS1cXHUwMDNldGhpcywgbm9kZS1cXHUwMDNldHlwZSwgbm9kZS1cXHUwMDNlaGVpZ2h0LFxcbi1cXHRcXHQgICAgICAgbm9kZS1cXHUwMDNldHJlZS1cXHUwMDNlbm9kZV9zaXplLCBvZmYpO1xcbi1cXHR9XFxuLVxcbi1cXHRyZXR1cm4gaXNfdmFsaWQ7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbmxpbmVcXG4tdTMyIGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZiwgdTMyIGxlbilcXG4te1xcbi1cXHR1bnNpZ25lZCBpbnQgbm9kZV9zaXplO1xcbi1cXG4tXFx0aWYgKCFpc19ibm9kZV9vZmZzZXRfdmFsaWQobm9kZSwgb2ZmKSlcXG4tXFx0XFx0cmV0dXJuIDA7XFxuLVxcbi1cXHRub2RlX3NpemUgPSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemU7XFxuLVxcbi1cXHRpZiAoKHU2NClvZmYgKyBsZW4gXFx1MDAzZSBub2RlX3NpemUpIHtcXG4tXFx0XFx0dTMyIG5ld19sZW4gPSBub2RlX3NpemUgLSBvZmY7XFxuLVxcbi1cXHRcXHRwcl9lcnIoXFxcInJlcXVlc3RlZCBsZW5ndGggaGFzIGJlZW4gY29ycmVjdGVkOiBcXFwiXFxuLVxcdFxcdCAgICAgICBcXFwiTk9ERTogaWQgJXUsIHR5cGUgJSN4LCBoZWlnaHQgJXUsIFxcXCJcXG4tXFx0XFx0ICAgICAgIFxcXCJub2RlX3NpemUgJXUsIG9mZnNldCAldSwgXFxcIlxcbi1cXHRcXHQgICAgICAgXFxcInJlcXVlc3RlZF9sZW4gJXUsIGNvcnJlY3RlZF9sZW4gJXVcXFxcblxcXCIsXFxuLVxcdFxcdCAgICAgICBub2RlLVxcdTAwM2V0aGlzLCBub2RlLVxcdTAwM2V0eXBlLCBub2RlLVxcdTAwM2VoZWlnaHQsXFxuLVxcdFxcdCAgICAgICBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemUsIG9mZiwgbGVuLCBuZXdfbGVuKTtcXG4tXFxuLVxcdFxcdHJldHVybiBuZXdfbGVuO1xcbi1cXHR9XFxuLVxcbi1cXHRyZXR1cm4gbGVuO1xcbi19XFxuLVxcbiB2b2lkIGhmc19ibm9kZV9yZWFkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHZvaWQgKmJ1ZiwgdTMyIG9mZiwgdTMyIGxlbilcXG4ge1xcbiBcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2J0cmVlLmMgYi9mcy9oZnMvYnRyZWUuY1xcbmluZGV4IDJlYjM3YTJmNjRlODY2Li4yYzg0MTIyMWM0NWNlZCAxMDA2NDRcXG4tLS0gYS9mcy9oZnMvYnRyZWUuY1xcbisrKyBiL2ZzL2hmcy9idHJlZS5jXFxuQEAgLTE1LDYgKzE1LDggQEBcXG4gXFxuICNpbmNsdWRlIFxcXCJidHJlZS5oXFxcIlxcbiBcXG4rc3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeCk7XFxuK1xcbiAvKiBHZXQgYSByZWZlcmVuY2UgdG8gYSBCKlRyZWUgYW5kIGRvIHNvbWUgaW5pdGlhbCBjaGVja3MgKi9cXG4gc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2V5Y21wKVxcbiB7XFxuQEAgLTIzLDYgKzI1LDcgQEAgc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2VcXG4gXFx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7XFxuIFxcdHN0cnVjdCBmb2xpbyAqZm9saW87XFxuIFxcdHN0cnVjdCBidWZmZXJfaGVhZCAqYmg7XFxuK1xcdHN0cnVjdCBoZnNfYm5vZGUgKm5vZGU7XFxuIFxcdHVuc2lnbmVkIGludCBzaXplO1xcbiBcXHR1MTYgZGJsb2NrO1xcbiBcXHRzZWN0b3JfdCBzdGFydF9ibG9jaztcXG5AQCAtMTU1LDYgKzE1OCwyMCBAQCBzdHJ1Y3QgaGZzX2J0cmVlICpoZnNfYnRyZWVfb3BlbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgaWQsIGJ0cmVlX2tleWNtcCBrZVxcbiBcXHRrdW5tYXBfbG9jYWwoaGVhZCk7XFxuIFxcdGZvbGlvX3VubG9jayhmb2xpbyk7XFxuIFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuK1xcbitcXHRub2RlID0gaGZzX2Jub2RlX2ZpbmQodHJlZSwgSEZTX1RSRUVfSEVBRCk7XFxuK1xcdGlmIChJU19FUlIobm9kZSkpXFxuK1xcdFxcdGdvdG8gZnJlZV9pbm9kZTtcXG4rXFxuK1xcdGlmICghaGZzX2JtYXBfdGVzdF9iaXQobm9kZSwgSEZTX1RSRUVfSEVBRCkpIHtcXG4rXFx0XFx0cHJfd2FybihcXFwiKCVzKTogJXMgKGNuaWQgMHgleCkgYml0bWFwIGNvcnJ1cHRlZCwgZm9yY2luZyByZG9ubHlcXFxcblxcXCIsXFxuK1xcdFxcdFxcdHNiLVxcdTAwM2VzX2lkLCBpZCA9PSBIRlNfRVhUX0NOSUQgPyBcXFwiZXh0ZW50c1xcXCIgOiBcXFwiY2F0YWxvZ1xcXCIsIGlkKTtcXG4rXFx0XFx0cHJfd2FybihcXFwiUnVuIGZzY2suaGZzIHRvIHJlcGFpci5cXFxcblxcXCIpO1xcbitcXHRcXHRzYi1cXHUwMDNlc19mbGFncyB8PSBTQl9SRE9OTFk7XFxuK1xcdH1cXG4rXFxuK1xcdGhmc19ibm9kZV9wdXQobm9kZSk7XFxuK1xcbiBcXHRyZXR1cm4gdHJlZTtcXG4gXFxuIGZhaWxfZm9saW86XFxuQEAgLTM1Niw2ICszNzMsNzUgQEAgc3RydWN0IGhmc19ibm9kZSAqaGZzX2JtYXBfYWxsb2Moc3RydWN0IGhmc19idHJlZSAqdHJlZSlcXG4gXFx0fVxcbiB9XFxuIFxcbisvKiBDb250ZXh0IGZvciBpdGVyYXRpbmcgYi10cmVlIG1hcCBwYWdlc1xcbisgKiBAcGFnZV9pZHg6IFRoZSBpbmRleCBvZiB0aGUgcGFnZSB3aXRoaW4gdGhlIGItbm9kZSdzIHBhZ2UgYXJyYXlcXG4rICogQG9mZjogVGhlIGJ5dGUgb2Zmc2V0IHdpdGhpbiB0aGUgbWFwcGVkIHBhZ2VcXG4rICogQGxlbjogVGhlIHJlbWFpbmluZyBsZW5ndGggb2YgdGhlIG1hcCByZWNvcmRcXG4rICovXFxuK3N0cnVjdCBoZnNfYm1hcF9jdHgge1xcbitcXHR1bnNpZ25lZCBpbnQgcGFnZV9pZHg7XFxuK1xcdHVuc2lnbmVkIGludCBvZmY7XFxuK1xcdHUxNiBsZW47XFxuK307XFxuK1xcbitzdGF0aWMgc3RydWN0IHBhZ2UgKmhmc19ibWFwX2dldF9tYXBfcGFnZShzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLFxcbitcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBoZnNfYm1hcF9jdHggKmN0eCxcXG4rXFx0XFx0XFx0XFx0XFx0ICB1MzIgYnl0ZV9vZmZzZXQpXFxuK3tcXG4rXFx0dTE2IHJlY19pZHgsIG9mZjE2O1xcbitcXHR1bnNpZ25lZCBpbnQgcGFnZV9vZmY7XFxuK1xcbitcXHRpZiAobm9kZS1cXHUwMDNldGhpcyA9PSBIRlNfVFJFRV9IRUFEKSB7XFxuK1xcdFxcdGlmIChub2RlLVxcdTAwM2V0eXBlICE9IEhGU19OT0RFX0hFQURFUikge1xcbitcXHRcXHRcXHRwcl9lcnIoXFxcImhmczogaW52YWxpZCBidHJlZSBoZWFkZXIgbm9kZVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xcbitcXHRcXHR9XFxuK1xcdFxcdHJlY19pZHggPSBIRlNfQlRSRUVfSERSX01BUF9SRUNfSU5ERVg7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChub2RlLVxcdTAwM2V0eXBlICE9IEhGU19OT0RFX01BUCkge1xcbitcXHRcXHRcXHRwcl9lcnIoXFxcImhmczogaW52YWxpZCBidHJlZSBtYXAgbm9kZVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xcbitcXHRcXHR9XFxuK1xcdFxcdHJlY19pZHggPSBIRlNfQlRSRUVfTUFQX05PREVfUkVDX0lOREVYO1xcbitcXHR9XFxuK1xcbitcXHRjdHgtXFx1MDAzZWxlbiA9IGhmc19icmVjX2xlbm9mZihub2RlLCByZWNfaWR4LCBcXHUwMDI2b2ZmMTYpO1xcbitcXHRpZiAoIWN0eC1cXHUwMDNlbGVuKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTtcXG4rXFxuK1xcdGlmICghaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKG5vZGUsIG9mZjE2KSlcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XFxuK1xcbitcXHRjdHgtXFx1MDAzZWxlbiA9IGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgobm9kZSwgb2ZmMTYsIGN0eC1cXHUwMDNlbGVuKTtcXG4rXFxuK1xcdGlmIChieXRlX29mZnNldCBcXHUwMDNlPSBjdHgtXFx1MDAzZWxlbilcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuK1xcbitcXHRwYWdlX29mZiA9ICh1MzIpb2ZmMTYgKyBub2RlLVxcdTAwM2VwYWdlX29mZnNldCArIGJ5dGVfb2Zmc2V0O1xcbitcXHRjdHgtXFx1MDAzZXBhZ2VfaWR4ID0gcGFnZV9vZmYgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVDtcXG4rXFx0Y3R4LVxcdTAwM2VvZmYgPSBwYWdlX29mZiBcXHUwMDI2IH5QQUdFX01BU0s7XFxuK1xcbitcXHRyZXR1cm4gbm9kZS1cXHUwMDNlcGFnZVtjdHgtXFx1MDAzZXBhZ2VfaWR4XTtcXG4rfVxcbitcXG4rc3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeClcXG4re1xcbitcXHRzdHJ1Y3QgaGZzX2JtYXBfY3R4IGN0eDtcXG4rXFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuK1xcdHU4ICpibWFwLCBieXRlLCBtYXNrO1xcbitcXG4rXFx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcXHUwMDI2Y3R4LCBub2RlX2JpdF9pZHggLyBCSVRTX1BFUl9CWVRFKTtcXG4rXFx0aWYgKElTX0VSUihwYWdlKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0Ym1hcCA9IGttYXBfbG9jYWxfcGFnZShwYWdlKTtcXG4rXFx0Ynl0ZSA9IGJtYXBbY3R4Lm9mZl07XFxuK1xcdGt1bm1hcF9sb2NhbChibWFwKTtcXG4rXFxuK1xcdG1hc2sgPSAxIFxcdTAwM2NcXHUwMDNjICg3IC0gKG5vZGVfYml0X2lkeCAlIEJJVFNfUEVSX0JZVEUpKTtcXG4rXFx0cmV0dXJuIChieXRlIFxcdTAwMjYgbWFzaykgIT0gMDtcXG4rfVxcbitcXG4gdm9pZCBoZnNfYm1hcF9mcmVlKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUpXFxuIHtcXG4gXFx0c3RydWN0IGhmc19idHJlZSAqdHJlZTtcXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2J0cmVlLmggYi9mcy9oZnMvYnRyZWUuaFxcbmluZGV4IDk5YmU4NThiMjQ0NjUwLi5mOGFmYTMzZjcwOWFkMiAxMDA2NDRcXG4tLS0gYS9mcy9oZnMvYnRyZWUuaFxcbisrKyBiL2ZzL2hmcy9idHJlZS5oXFxuQEAgLTEyOSwzICsxMjksNDMgQEAgZXh0ZXJuIGludCBfX2hmc19icmVjX2ZpbmQoc3RydWN0IGhmc19ibm9kZSAqYm5vZGUsIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCk7XFxuIGV4dGVybiBpbnQgaGZzX2JyZWNfZmluZChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpO1xcbiBleHRlcm4gaW50IGhmc19icmVjX3JlYWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB2b2lkICpyZWMsIHUzMiByZWNfbGVuKTtcXG4gZXh0ZXJuIGludCBoZnNfYnJlY19nb3RvKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaW50IGNudCk7XFxuK1xcbitzdGF0aWMgaW5saW5lIGJvb2wgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYpXFxuK3tcXG4rXFx0Ym9vbCBpc192YWxpZDtcXG4rXFxuK1xcdGlmICghbm9kZSB8fCAhbm9kZS1cXHUwMDNldHJlZSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aXNfdmFsaWQgPSBvZmYgXFx1MDAzYyBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemU7XFxuK1xcbitcXHRpZiAoIWlzX3ZhbGlkKSB7XFxuK1xcdFxcdHByX2VycihcXFwiaW52YWxpZCBvZmZzZXQ6IGlkICV1LCB0eXBlICV4LCBoICV1LCBzeiAldSwgb2ZmICV1XFxcXG5cXFwiLFxcbitcXHRcXHQgICAgICAgbm9kZS1cXHUwMDNldGhpcywgbm9kZS1cXHUwMDNldHlwZSwgbm9kZS1cXHUwMDNlaGVpZ2h0LFxcbitcXHRcXHQgICAgICAgbm9kZS1cXHUwMDNldHJlZS1cXHUwMDNlbm9kZV9zaXplLCBvZmYpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gaXNfdmFsaWQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgdTMyIGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZiwgdTMyIGxlbilcXG4re1xcbitcXHR1bnNpZ25lZCBpbnQgbm9kZV9zaXplO1xcbitcXG4rXFx0aWYgKCFpc19ibm9kZV9vZmZzZXRfdmFsaWQobm9kZSwgb2ZmKSlcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRub2RlX3NpemUgPSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemU7XFxuK1xcbitcXHRpZiAoKHU2NClvZmYgKyBsZW4gXFx1MDAzZSBub2RlX3NpemUpIHtcXG4rXFx0XFx0dTMyIG5ld19sZW4gPSBub2RlX3NpemUgLSBvZmY7XFxuK1xcbitcXHRcXHRwcl9lcnIoXFxcImNvcnJlY3RlZCBsZW46IGlkICV1LCB0eXBlICV4LCBoICV1LCBzeiAldSwgb2ZmICV1LCBsZW4gJXUtXFx1MDAzZSV1XFxcXG5cXFwiLFxcbitcXHRcXHQgICAgICAgbm9kZS1cXHUwMDNldGhpcywgbm9kZS1cXHUwMDNldHlwZSwgbm9kZS1cXHUwMDNlaGVpZ2h0LFxcbitcXHRcXHQgICAgICAgbm9kZV9zaXplLCBvZmYsIGxlbiwgbmV3X2xlbik7XFxuK1xcbitcXHRcXHRyZXR1cm4gbmV3X2xlbjtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIGxlbjtcXG4rfVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaCBiL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oXFxuaW5kZXggNDVmYjRjOWZmOWY1ZWUuLjhkYzEwZTBiZmE3ZTljIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcXG5AQCAtNTEwLDYgKzUxMCwxMSBAQCBzdHJ1Y3QgaGZzX2J0cmVlX2hlYWRlcl9yZWMge1xcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICBiLXRyZWUgYnV0IG5vdCBpbiBleHRlbnRzXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgIGItdHJlZSAoaGZzcGx1cykuICovXFxuIFxcbisvKiBIRlMgQlRyZWUgbWlzYyBpbmZvICovXFxuKyNkZWZpbmUgSEZTX1RSRUVfSEVBRFxcdFxcdFxcdFxcdDBcXG4rI2RlZmluZSBIRlNfQlRSRUVfSERSX01BUF9SRUNfSU5ERVhcXHRcXHQyXFx0LyogTWFwIChiaXRtYXApIHJlY29yZCBpbiBIZWFkZXIgbm9kZSAqL1xcbisjZGVmaW5lIEhGU19CVFJFRV9NQVBfTk9ERV9SRUNfSU5ERVhcXHRcXHQwXFx0LyogTWFwIHJlY29yZCBpbiBNYXAgTm9kZSAqL1xcbitcXG4gLyogSEZTKyBCVHJlZSBtaXNjIGluZm8gKi9cXG4gI2RlZmluZSBIRlNQTFVTX1RSRUVfSEVBRFxcdFxcdFxcdDBcXG4gI2RlZmluZSBIRlNQTFVTX05PREVfTVhTWlxcdFxcdFxcdDMyNzY4XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjI1LjQ4NTA5NjA3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwMzU0MTY3MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGZzX2J0cmVlX29wZW5cIixcbiAgICBcImhmc19ibWFwX3Rlc3RfYml0XCIsXG4gICAgXCJoZnNfYm1hcF9nZXRfbWFwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG5ldyBsb2dpYyB0byBjaGVjayBmb3IgYml0bWFwIGNvcnJ1cHRpb24gZHVyaW5nIEItdHJlZSBvcGVuIGluIHRoZSBIRlMgZmlsZXN5c3RlbSwgZm9yY2luZyB0aGUgZmlsZXN5c3RlbSB0byByZWFkLW9ubHkgaWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZC4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNmNDM1NGM0MjA3YjgzMWVlODY0OGM0ZDIxNjNmMDAyZDUxNzU5ZjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAxMzo1OToyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9ibm9kZS5jIGIvZnMvaGZzL2Jub2RlLmNcbmluZGV4IGRhOGU1MzQyYzkxY2MyLi4xYjMzMTEwOGQ5YzAxYiAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9ibm9kZS5jXG4rKysgYi9mcy9oZnMvYm5vZGUuY1xuQEAgLTE1LDQ4ICsxNSw2IEBAXG4gXG4gI2luY2x1ZGUgXCJidHJlZS5oXCJcbiBcbi1zdGF0aWMgaW5saW5lXG4tYm9vbCBpc19ibm9kZV9vZmZzZXRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZilcbi17XG4tXHRib29sIGlzX3ZhbGlkID0gb2ZmIFx1MDAzYyBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplO1xuLVxuLVx0aWYgKCFpc192YWxpZCkge1xuLVx0XHRwcl9lcnIoXCJyZXF1ZXN0ZWQgaW52YWxpZCBvZmZzZXQ6IFwiXG4tXHRcdCAgICAgICBcIk5PREU6IGlkICV1LCB0eXBlICUjeCwgaGVpZ2h0ICV1LCBcIlxuLVx0XHQgICAgICAgXCJub2RlX3NpemUgJXUsIG9mZnNldCAldVxcblwiLFxuLVx0XHQgICAgICAgbm9kZS1cdTAwM2V0aGlzLCBub2RlLVx1MDAzZXR5cGUsIG5vZGUtXHUwMDNlaGVpZ2h0LFxuLVx0XHQgICAgICAgbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSwgb2ZmKTtcbi1cdH1cbi1cbi1cdHJldHVybiBpc192YWxpZDtcbi19XG4tXG4tc3RhdGljIGlubGluZVxuLXUzMiBjaGVja19hbmRfY29ycmVjdF9yZXF1ZXN0ZWRfbGVuZ3RoKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYsIHUzMiBsZW4pXG4te1xuLVx0dW5zaWduZWQgaW50IG5vZGVfc2l6ZTtcbi1cbi1cdGlmICghaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKG5vZGUsIG9mZikpXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0bm9kZV9zaXplID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZTtcbi1cbi1cdGlmICgodTY0KW9mZiArIGxlbiBcdTAwM2Ugbm9kZV9zaXplKSB7XG4tXHRcdHUzMiBuZXdfbGVuID0gbm9kZV9zaXplIC0gb2ZmO1xuLVxuLVx0XHRwcl9lcnIoXCJyZXF1ZXN0ZWQgbGVuZ3RoIGhhcyBiZWVuIGNvcnJlY3RlZDogXCJcbi1cdFx0ICAgICAgIFwiTk9ERTogaWQgJXUsIHR5cGUgJSN4LCBoZWlnaHQgJXUsIFwiXG4tXHRcdCAgICAgICBcIm5vZGVfc2l6ZSAldSwgb2Zmc2V0ICV1LCBcIlxuLVx0XHQgICAgICAgXCJyZXF1ZXN0ZWRfbGVuICV1LCBjb3JyZWN0ZWRfbGVuICV1XFxuXCIsXG4tXHRcdCAgICAgICBub2RlLVx1MDAzZXRoaXMsIG5vZGUtXHUwMDNldHlwZSwgbm9kZS1cdTAwM2VoZWlnaHQsXG4tXHRcdCAgICAgICBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplLCBvZmYsIGxlbiwgbmV3X2xlbik7XG4tXG4tXHRcdHJldHVybiBuZXdfbGVuO1xuLVx0fVxuLVxuLVx0cmV0dXJuIGxlbjtcbi19XG4tXG4gdm9pZCBoZnNfYm5vZGVfcmVhZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB2b2lkICpidWYsIHUzMiBvZmYsIHUzMiBsZW4pXG4ge1xuIFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2J0cmVlLmMgYi9mcy9oZnMvYnRyZWUuY1xuaW5kZXggMmViMzdhMmY2NGU4NjYuLjJjODQxMjIxYzQ1Y2VkIDEwMDY0NFxuLS0tIGEvZnMvaGZzL2J0cmVlLmNcbisrKyBiL2ZzL2hmcy9idHJlZS5jXG5AQCAtMTUsNiArMTUsOCBAQFxuIFxuICNpbmNsdWRlIFwiYnRyZWUuaFwiXG4gXG4rc3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeCk7XG4rXG4gLyogR2V0IGEgcmVmZXJlbmNlIHRvIGEgQipUcmVlIGFuZCBkbyBzb21lIGluaXRpYWwgY2hlY2tzICovXG4gc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2V5Y21wKVxuIHtcbkBAIC0yMyw2ICsyNSw3IEBAIHN0cnVjdCBoZnNfYnRyZWUgKmhmc19idHJlZV9vcGVuKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpZCwgYnRyZWVfa2V5Y21wIGtlXG4gXHRzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZztcbiBcdHN0cnVjdCBmb2xpbyAqZm9saW87XG4gXHRzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoO1xuK1x0c3RydWN0IGhmc19ibm9kZSAqbm9kZTtcbiBcdHVuc2lnbmVkIGludCBzaXplO1xuIFx0dTE2IGRibG9jaztcbiBcdHNlY3Rvcl90IHN0YXJ0X2Jsb2NrO1xuQEAgLTE1NSw2ICsxNTgsMjAgQEAgc3RydWN0IGhmc19idHJlZSAqaGZzX2J0cmVlX29wZW4oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGlkLCBidHJlZV9rZXljbXAga2VcbiBcdGt1bm1hcF9sb2NhbChoZWFkKTtcbiBcdGZvbGlvX3VubG9jayhmb2xpbyk7XG4gXHRmb2xpb19wdXQoZm9saW8pO1xuK1xuK1x0bm9kZSA9IGhmc19ibm9kZV9maW5kKHRyZWUsIEhGU19UUkVFX0hFQUQpO1xuK1x0aWYgKElTX0VSUihub2RlKSlcbitcdFx0Z290byBmcmVlX2lub2RlO1xuK1xuK1x0aWYgKCFoZnNfYm1hcF90ZXN0X2JpdChub2RlLCBIRlNfVFJFRV9IRUFEKSkge1xuK1x0XHRwcl93YXJuKFwiKCVzKTogJXMgKGNuaWQgMHgleCkgYml0bWFwIGNvcnJ1cHRlZCwgZm9yY2luZyByZG9ubHlcXG5cIixcbitcdFx0XHRzYi1cdTAwM2VzX2lkLCBpZCA9PSBIRlNfRVhUX0NOSUQgPyBcImV4dGVudHNcIiA6IFwiY2F0YWxvZ1wiLCBpZCk7XG4rXHRcdHByX3dhcm4oXCJSdW4gZnNjay5oZnMgdG8gcmVwYWlyLlxcblwiKTtcbitcdFx0c2ItXHUwMDNlc19mbGFncyB8PSBTQl9SRE9OTFk7XG4rXHR9XG4rXG4rXHRoZnNfYm5vZGVfcHV0KG5vZGUpO1xuK1xuIFx0cmV0dXJuIHRyZWU7XG4gXG4gZmFpbF9mb2xpbzpcbkBAIC0zNTYsNiArMzczLDc1IEBAIHN0cnVjdCBoZnNfYm5vZGUgKmhmc19ibWFwX2FsbG9jKHN0cnVjdCBoZnNfYnRyZWUgKnRyZWUpXG4gXHR9XG4gfVxuIFxuKy8qIENvbnRleHQgZm9yIGl0ZXJhdGluZyBiLXRyZWUgbWFwIHBhZ2VzXG4rICogQHBhZ2VfaWR4OiBUaGUgaW5kZXggb2YgdGhlIHBhZ2Ugd2l0aGluIHRoZSBiLW5vZGUncyBwYWdlIGFycmF5XG4rICogQG9mZjogVGhlIGJ5dGUgb2Zmc2V0IHdpdGhpbiB0aGUgbWFwcGVkIHBhZ2VcbisgKiBAbGVuOiBUaGUgcmVtYWluaW5nIGxlbmd0aCBvZiB0aGUgbWFwIHJlY29yZFxuKyAqL1xuK3N0cnVjdCBoZnNfYm1hcF9jdHgge1xuK1x0dW5zaWduZWQgaW50IHBhZ2VfaWR4O1xuK1x0dW5zaWduZWQgaW50IG9mZjtcbitcdHUxNiBsZW47XG4rfTtcbitcbitzdGF0aWMgc3RydWN0IHBhZ2UgKmhmc19ibWFwX2dldF9tYXBfcGFnZShzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLFxuK1x0XHRcdFx0XHQgIHN0cnVjdCBoZnNfYm1hcF9jdHggKmN0eCxcbitcdFx0XHRcdFx0ICB1MzIgYnl0ZV9vZmZzZXQpXG4re1xuK1x0dTE2IHJlY19pZHgsIG9mZjE2O1xuK1x0dW5zaWduZWQgaW50IHBhZ2Vfb2ZmO1xuK1xuK1x0aWYgKG5vZGUtXHUwMDNldGhpcyA9PSBIRlNfVFJFRV9IRUFEKSB7XG4rXHRcdGlmIChub2RlLVx1MDAzZXR5cGUgIT0gSEZTX05PREVfSEVBREVSKSB7XG4rXHRcdFx0cHJfZXJyKFwiaGZzOiBpbnZhbGlkIGJ0cmVlIGhlYWRlciBub2RlXFxuXCIpO1xuK1x0XHRcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xuK1x0XHR9XG4rXHRcdHJlY19pZHggPSBIRlNfQlRSRUVfSERSX01BUF9SRUNfSU5ERVg7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAobm9kZS1cdTAwM2V0eXBlICE9IEhGU19OT0RFX01BUCkge1xuK1x0XHRcdHByX2VycihcImhmczogaW52YWxpZCBidHJlZSBtYXAgbm9kZVxcblwiKTtcbitcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlPKTtcbitcdFx0fVxuK1x0XHRyZWNfaWR4ID0gSEZTX0JUUkVFX01BUF9OT0RFX1JFQ19JTkRFWDtcbitcdH1cbitcbitcdGN0eC1cdTAwM2VsZW4gPSBoZnNfYnJlY19sZW5vZmYobm9kZSwgcmVjX2lkeCwgXHUwMDI2b2ZmMTYpO1xuK1x0aWYgKCFjdHgtXHUwMDNlbGVuKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTtcbitcbitcdGlmICghaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKG5vZGUsIG9mZjE2KSlcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4rXG4rXHRjdHgtXHUwMDNlbGVuID0gY2hlY2tfYW5kX2NvcnJlY3RfcmVxdWVzdGVkX2xlbmd0aChub2RlLCBvZmYxNiwgY3R4LVx1MDAzZWxlbik7XG4rXG4rXHRpZiAoYnl0ZV9vZmZzZXQgXHUwMDNlPSBjdHgtXHUwMDNlbGVuKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbitcbitcdHBhZ2Vfb2ZmID0gKHUzMilvZmYxNiArIG5vZGUtXHUwMDNlcGFnZV9vZmZzZXQgKyBieXRlX29mZnNldDtcbitcdGN0eC1cdTAwM2VwYWdlX2lkeCA9IHBhZ2Vfb2ZmIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuK1x0Y3R4LVx1MDAzZW9mZiA9IHBhZ2Vfb2ZmIFx1MDAyNiB+UEFHRV9NQVNLO1xuK1xuK1x0cmV0dXJuIG5vZGUtXHUwMDNlcGFnZVtjdHgtXHUwMDNlcGFnZV9pZHhdO1xuK31cbitcbitzdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxuK3tcbitcdHN0cnVjdCBoZnNfYm1hcF9jdHggY3R4O1xuK1x0c3RydWN0IHBhZ2UgKnBhZ2U7XG4rXHR1OCAqYm1hcCwgYnl0ZSwgbWFzaztcbitcbitcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXHUwMDI2Y3R4LCBub2RlX2JpdF9pZHggLyBCSVRTX1BFUl9CWVRFKTtcbitcdGlmIChJU19FUlIocGFnZSkpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGJtYXAgPSBrbWFwX2xvY2FsX3BhZ2UocGFnZSk7XG4rXHRieXRlID0gYm1hcFtjdHgub2ZmXTtcbitcdGt1bm1hcF9sb2NhbChibWFwKTtcbitcbitcdG1hc2sgPSAxIFx1MDAzY1x1MDAzYyAoNyAtIChub2RlX2JpdF9pZHggJSBCSVRTX1BFUl9CWVRFKSk7XG4rXHRyZXR1cm4gKGJ5dGUgXHUwMDI2IG1hc2spICE9IDA7XG4rfVxuK1xuIHZvaWQgaGZzX2JtYXBfZnJlZShzdHJ1Y3QgaGZzX2Jub2RlICpub2RlKVxuIHtcbiBcdHN0cnVjdCBoZnNfYnRyZWUgKnRyZWU7XG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2J0cmVlLmggYi9mcy9oZnMvYnRyZWUuaFxuaW5kZXggOTliZTg1OGIyNDQ2NTAuLmY4YWZhMzNmNzA5YWQyIDEwMDY0NFxuLS0tIGEvZnMvaGZzL2J0cmVlLmhcbisrKyBiL2ZzL2hmcy9idHJlZS5oXG5AQCAtMTI5LDMgKzEyOSw0MyBAQCBleHRlcm4gaW50IF9faGZzX2JyZWNfZmluZChzdHJ1Y3QgaGZzX2Jub2RlICpibm9kZSwgc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKTtcbiBleHRlcm4gaW50IGhmc19icmVjX2ZpbmQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKTtcbiBleHRlcm4gaW50IGhmc19icmVjX3JlYWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB2b2lkICpyZWMsIHUzMiByZWNfbGVuKTtcbiBleHRlcm4gaW50IGhmc19icmVjX2dvdG8oc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCBpbnQgY250KTtcbitcbitzdGF0aWMgaW5saW5lIGJvb2wgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYpXG4re1xuK1x0Ym9vbCBpc192YWxpZDtcbitcbitcdGlmICghbm9kZSB8fCAhbm9kZS1cdTAwM2V0cmVlKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRpc192YWxpZCA9IG9mZiBcdTAwM2Mgbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZTtcbitcbitcdGlmICghaXNfdmFsaWQpIHtcbitcdFx0cHJfZXJyKFwiaW52YWxpZCBvZmZzZXQ6IGlkICV1LCB0eXBlICV4LCBoICV1LCBzeiAldSwgb2ZmICV1XFxuXCIsXG4rXHRcdCAgICAgICBub2RlLVx1MDAzZXRoaXMsIG5vZGUtXHUwMDNldHlwZSwgbm9kZS1cdTAwM2VoZWlnaHQsXG4rXHRcdCAgICAgICBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplLCBvZmYpO1xuK1x0fVxuK1xuK1x0cmV0dXJuIGlzX3ZhbGlkO1xuK31cbitcbitzdGF0aWMgaW5saW5lIHUzMiBjaGVja19hbmRfY29ycmVjdF9yZXF1ZXN0ZWRfbGVuZ3RoKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYsIHUzMiBsZW4pXG4re1xuK1x0dW5zaWduZWQgaW50IG5vZGVfc2l6ZTtcbitcbitcdGlmICghaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKG5vZGUsIG9mZikpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0bm9kZV9zaXplID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZTtcbitcbitcdGlmICgodTY0KW9mZiArIGxlbiBcdTAwM2Ugbm9kZV9zaXplKSB7XG4rXHRcdHUzMiBuZXdfbGVuID0gbm9kZV9zaXplIC0gb2ZmO1xuK1xuK1x0XHRwcl9lcnIoXCJjb3JyZWN0ZWQgbGVuOiBpZCAldSwgdHlwZSAleCwgaCAldSwgc3ogJXUsIG9mZiAldSwgbGVuICV1LVx1MDAzZSV1XFxuXCIsXG4rXHRcdCAgICAgICBub2RlLVx1MDAzZXRoaXMsIG5vZGUtXHUwMDNldHlwZSwgbm9kZS1cdTAwM2VoZWlnaHQsXG4rXHRcdCAgICAgICBub2RlX3NpemUsIG9mZiwgbGVuLCBuZXdfbGVuKTtcbitcbitcdFx0cmV0dXJuIG5ld19sZW47XG4rXHR9XG4rXG4rXHRyZXR1cm4gbGVuO1xuK31cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaCBiL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oXG5pbmRleCA0NWZiNGM5ZmY5ZjVlZS4uOGRjMTBlMGJmYTdlOWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaFxuKysrIGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcbkBAIC01MTAsNiArNTEwLDExIEBAIHN0cnVjdCBoZnNfYnRyZWVfaGVhZGVyX3JlYyB7XG4gXHRcdFx0XHRcdFx0ICAgYi10cmVlIGJ1dCBub3QgaW4gZXh0ZW50c1xuIFx0XHRcdFx0XHRcdCAgIGItdHJlZSAoaGZzcGx1cykuICovXG4gXG4rLyogSEZTIEJUcmVlIG1pc2MgaW5mbyAqL1xuKyNkZWZpbmUgSEZTX1RSRUVfSEVBRFx0XHRcdFx0MFxuKyNkZWZpbmUgSEZTX0JUUkVFX0hEUl9NQVBfUkVDX0lOREVYXHRcdDJcdC8qIE1hcCAoYml0bWFwKSByZWNvcmQgaW4gSGVhZGVyIG5vZGUgKi9cbisjZGVmaW5lIEhGU19CVFJFRV9NQVBfTk9ERV9SRUNfSU5ERVhcdFx0MFx0LyogTWFwIHJlY29yZCBpbiBNYXAgTm9kZSAqL1xuK1xuIC8qIEhGUysgQlRyZWUgbWlzYyBpbmZvICovXG4gI2RlZmluZSBIRlNQTFVTX1RSRUVfSEVBRFx0XHRcdDBcbiAjZGVmaW5lIEhGU1BMVVNfTk9ERV9NWFNaXHRcdFx0MzI3NjhcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjI1LjQ4NTA5NzI4MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3MDc0OTg1NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIRlMgRmlsZXN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF04oCZcyBtYWtpbmcgc29tZSBpbnRlcmVzdGluZyBjaGFuZ2VzIHRvIHRoZSBIRlMgZmlsZXN5c3RlbSBjb2RlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGItdHJlZXMuIEkgc2VlIGl0J3MgdG91Y2hpbmcgYGZzL2hmcy9ibm9kZS5jYCwgYGZzL2hmcy9idHJlZS5jYCwgYGZzL2hmcy9idHJlZS5oYCwgYW5kIGBpbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaGAuIExvb2tzIGxpa2UgdGhleSdyZSBzaGlmdGluZyBhcm91bmQgc29tZSB2YWxpZGF0aW9uIGZ1bmN0aW9ucyDigJMgYGlzX2Jub2RlX29mZnNldF92YWxpZGAgYW5kIGBjaGVja19hbmRfY29ycmVjdF9yZXF1ZXN0ZWRfbGVuZ3RoYCDigJMgZnJvbSBgYm5vZGUuY2AgdG8gYGJ0cmVlLmhgLCBtYWtpbmcgdGhlbSBzdGF0aWMgaW5saW5lLiBUaGF0J3MgYSBjbGFzc2ljIG9wdGltaXphdGlvbiB0ZWNobmlxdWUgZm9yIHJlZHVjaW5nIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIHNvIEkgYXNzdW1lIHRoZXkgYXJlIGZyZXF1ZW50bHkgY2FsbGVkLlxuXG5UaGUgYmlnIGZ1bmN0aW9uYWwgY2hhbmdlLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHNlZW1zIHRvIGJlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYSBuZXcgZnVuY3Rpb24sIGBoZnNfYm1hcF90ZXN0X2JpdGAsIGluIGBidHJlZS5jYCwgYW5kIGl0cyBzdWJzZXF1ZW50IHVzZSB3aXRoaW4gYGhmc19idHJlZV9vcGVuYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGF0IGBoZnNfYm1hcF90ZXN0X2JpdGAgY2FsbCB3aXRoaW4gdGhlIGBoZnNfYnRyZWVfb3BlbmAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgdG8gYmUgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4gV2h5IGlzIHRoZSBgSEZTX1RSRUVfSEVBRGAgYml0IGJlaW5nIHRlc3RlZD8gQW5kLCBpZiBpdCdzIG5vdCBzZXQsIGl0J3MgbWFya2luZyB0aGUgc3VwZXJibG9jayBhcyByZWFkLW9ubHkgKGBzYi1cdTAwM2VzX2ZsYWdzIHw9IFNCX1JET05MWWApLiBUaGF0IGhhcyBpbXBsaWNhdGlvbnMgZm9yIGhvdyB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIGFuZCB1c2VkLiBUaGlzIHN1Z2dlc3RzIGl0IG1pZ2h0IGJlIGRldGVjdGluZyBzb21lIGtpbmQgb2YgZmlsZXN5c3RlbSBjb3JydXB0aW9uIG9yIGludGVncml0eSBpc3N1ZS5cblxuQWxyaWdodCwgbGV0J3MgbWFrZSBzdXJlIHRoaXMgSEZTIGNvZGUgcGF0aCBpcyBldmVuIHJlbGV2YW50LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgSEZTIGlzIGJ1aWx0IGFuZCBhY2Nlc3NpYmxlIGluIHRoZSB0YXJnZXQgc3lzdGVtLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBDT05GSUdfSEZTX0ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCdzIHRoZSBiYXNpYyBwcmVyZXF1aXNpdGUuXG5cbkkgbmVlZCB0byBkaXZlIGludG8gYGZzL2hmcy9idHJlZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGxvb2sgYXQgYGhmc19idHJlZV9vcGVuYCB0byBzZWUgaG93IGl0IHdvcmtzIGFuZCB3aGVyZSB0aGF0IGBoZnNfYm1hcF90ZXN0X2JpdGAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBJIHdhbnQgdG8ga25vdyB3aGVuIGBoZnNfYnRyZWVfb3BlbmAgaXMgY2FsbGVkIGJlY2F1c2UgdGhhdCB3aWxsIGlsbHVtaW5hdGUgd2hlbiB0aGlzIGNvcnJ1cHRpb24gY2hlY2sgaGFwcGVucy4gSXQncyBsaWtlbHkgZHVyaW5nIG1vdW50IG9yIHdoZW4gb3BlbmluZyBidHJlZXMsIGFzIHRoZSBkb2N1bWVudGF0aW9uIGltcGxpZXMuXG5cblRvIG1ha2UgdGhpcyBxdWlja2VyLCBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gbG9jYXRlIHRoZSBvY2N1cnJlbmNlcyBvZiBib3RoIGBoZnNfYnRyZWVfb3BlbmAgYW5kIGBoZnNfYm1hcF90ZXN0X2JpdGAgd2l0aGluIHRoZSBjb2RlYmFzZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgaW1tZWRpYXRlIGNvbnRleHQgSSBuZWVkIHRvIHByb3Blcmx5IHVuZGVyc3RhbmQgdGhpcyBwYXRjaCBhbmQgYXNzZXNzIGl0cyBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0OTYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzo1OTozNC4xOTI1OTc4MTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcxMDM2NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGZzX2J0cmVlX29wZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnMvYnRyZWUuYz0xOD1zdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KTtcXG4tLVxcbmZzL2hmcy9idHJlZS5jLTIwLS8qIEdldCBhIHJlZmVyZW5jZSB0byBhIEIqVHJlZSBhbmQgZG8gc29tZSBpbml0aWFsIGNoZWNrcyAqL1xcbmZzL2hmcy9idHJlZS5jOjIxOnN0cnVjdCBoZnNfYnRyZWUgKmhmc19idHJlZV9vcGVuKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpZCwgYnRyZWVfa2V5Y21wIGtleWNtcClcXG5mcy9oZnMvYnRyZWUuYy0yMi17XFxuLS1cXG5mcy9oZnMvYnRyZWUuaD03Nz1zdHJ1Y3QgaGZzX2ZpbmRfZGF0YSB7XFxuLS1cXG5mcy9oZnMvYnRyZWUuaC04OC0vKiBidHJlZS5jICovXFxuZnMvaGZzL2J0cmVlLmg6ODk6ZXh0ZXJuIHN0cnVjdCBoZnNfYnRyZWUgKmhmc19idHJlZV9vcGVuKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpZCxcXG5mcy9oZnMvYnRyZWUuaC05MC1cXHRcXHRcXHRcXHRcXHRidHJlZV9rZXljbXAga2V5Y21wKTtcXG4tLVxcbmZzL2hmcy9tZGIuYz05ND1pbnQgaGZzX21kYl9nZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2hmcy9tZGIuYy0yMjctXFxuZnMvaGZzL21kYi5jOjIyODpcXHRIRlNfU0Ioc2IpLVxcdTAwM2VleHRfdHJlZSA9IGhmc19idHJlZV9vcGVuKHNiLCBIRlNfRVhUX0NOSUQsIGhmc19leHRfa2V5Y21wKTtcXG5mcy9oZnMvbWRiLmMtMjI5LVxcdGlmICghSEZTX1NCKHNiKS1cXHUwMDNlZXh0X3RyZWUpIHtcXG4tLVxcbmZzL2hmcy9tZGIuYy0yMzItXFx0fVxcbmZzL2hmcy9tZGIuYzoyMzM6XFx0SEZTX1NCKHNiKS1cXHUwMDNlY2F0X3RyZWUgPSBoZnNfYnRyZWVfb3BlbihzYiwgSEZTX0NBVF9DTklELCBoZnNfY2F0X2tleWNtcCk7XFxuZnMvaGZzL21kYi5jLTIzNC1cXHRpZiAoIUhGU19TQihzYiktXFx1MDAzZWNhdF90cmVlKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjM0LjI0OTcwNjkyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNDkxOTc4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIRlMgRmlsZXN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgaGZzX2JtYXBfdGVzdF9iaXRgIHdpdGhpbiBgZnMvaGZzL2J0cmVlLmNgIGFuZCBzdWJzZXF1ZW50bHkgZW1wbG95cyBpdCB3aXRoaW4gYGhmc19idHJlZV9vcGVuYC4gVGhpcyBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCdzIGZ1bmN0aW9uYWwsIGVzc2VudGlhbGx5IGFkZGluZyBhIGNoZWNrIGZvciBiaXRtYXAgY29ycnVwdGlvbi4gSWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZCwgaXQgZm9yY2VzIHRoZSBmaWxlc3lzdGVtIGludG8gcmVhZC1vbmx5IG1vZGUsIHdoaWNoIGlzIGEgc2Vuc2libGUgc2FmZXR5IHByZWNhdXRpb24uXG5cblRoZSBjYWxsIHBhdGggYXBwZWFycyB0byBiZSBgaGZzX21kYl9nZXRgIHdoaWNoIHRoZW4gbGVhZHMgZGlyZWN0bHkgdG8gYGhmc19idHJlZV9vcGVuYC4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBgaGZzX2J0cmVlX29wZW5gIGlzIGV4ZWN1dGVkIGR1cmluZyB0aGUgbW91bnQgcHJvY2Vzcy4gVGhlcmVmb3JlLCB0aGlzIGNvcnJ1cHRpb24gY2hlY2sgaXMgYWN0aXZlIGR1cmluZyB0aGUgaW5pdGlhbCBtb3VudGluZyBvZiB0aGUgSEZTIGZpbGVzeXN0ZW0uXG5cbk5vdywgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgSEZTLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYWxpZ24gd2l0aCBob3cgdGhpcyBwYXRjaCBpcyBpbnRlbmRlZCB0byBmdW5jdGlvbiB3aXRoaW4gdGhlIGJyb2FkZXIgSEZTIGltcGxlbWVudGF0aW9uLiBUaGlzIHdpbGwgaGVscCB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSwgb3IgY29yZSBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODUxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjM4LjI5ODkwNjI5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjM0NTQxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9oZnMvS2NvbmZpZzoyOmNvbmZpZyBIRlNfRlNcXG5mcy9oZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBNYWNpbnRvc2ggZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6NTk6MzguMzU1MjU4NTgyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ2MDkxNDE5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYEhGU19GU2AgY29uZmlndXJhdGlvbi4gTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgZm9yIHRoaXMgYXNwZWN0IG9mIHRoZSBmaWxlc3lzdGVtLiBMZXQncyBzZWUuLi4gYGhmc19idHJlZV9vcGVuYCBkZWZpbml0ZWx5IHN0YW5kcyBvdXQuIEkgc2hvdWxkIGFsc28gY2hlY2sgYGhmc19ibWFwX3Rlc3RfYml0YCBhbmQgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAsIHRob3NlIGNvdWxkIGJlIGltcG9ydGFudC5cblxuUmlnaHQsIHRpbWUgdG8gc2VlIGlmIHRob3NlIGxhc3QgdHdvLCBgaGZzX2JtYXBfdGVzdF9iaXRgIGFuZCBgaGZzX2JtYXBfZ2V0X21hcF9wYWdlYCwgYXJlIHN0YXRpYyBvciBleHBvcnRlZC4gQWgsIHRoZXkgYXJlIHN0YXRpYyB3aXRoaW4gYGZzL2hmcy9idHJlZS5jYC4gT2theSwgdGhhdCdzIHVzZWZ1bCBjb250ZXh0LiBBdCBsZWFzdCBgaGZzX2J0cmVlX29wZW5gIGlzIGdsb2JhbCBhbmQgYWNjZXNzaWJsZS5cblxuTm93LCBsZXQgbWUgZGl2ZSBpbnRvIGBmcy9oZnMvYnRyZWUuY2AgaXRzZWxmLiBJIHdhbnQgdG8gc2NhbiB0aGF0IGZpbGUgdGhvcm91Z2hseSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBJIG5lZWQgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mjc1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjQyLjgxNjE3NDg0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTQwNzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc19ibWFwX3Rlc3RfYml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzL2J0cmVlLmMtMTctXFxuZnMvaGZzL2J0cmVlLmM6MTg6c3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeCk7XFxuZnMvaGZzL2J0cmVlLmMtMTktXFxuLS1cXG5mcy9oZnMvYnRyZWUuYz0yMT1zdHJ1Y3QgaGZzX2J0cmVlICpoZnNfYnRyZWVfb3BlbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgaWQsIGJ0cmVlX2tleWNtcCBrZXljbXApXFxuLS1cXG5mcy9oZnMvYnRyZWUuYy0xNjUtXFxuZnMvaGZzL2J0cmVlLmM6MTY2OlxcdGlmICghaGZzX2JtYXBfdGVzdF9iaXQobm9kZSwgSEZTX1RSRUVfSEVBRCkpIHtcXG5mcy9oZnMvYnRyZWUuYy0xNjctXFx0XFx0cHJfd2FybihcXFwiKCVzKTogJXMgKGNuaWQgMHgleCkgYml0bWFwIGNvcnJ1cHRlZCwgZm9yY2luZyByZG9ubHlcXFxcblxcXCIsXFxuLS1cXG5mcy9oZnMvYnRyZWUuYz0zODc9c3RhdGljIHN0cnVjdCBwYWdlICpoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uoc3RydWN0IGhmc19ibm9kZSAqbm9kZSxcXG4tLVxcbmZzL2hmcy9idHJlZS5jLTQyNi1cXG5mcy9oZnMvYnRyZWUuYzo0Mjc6c3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeClcXG5mcy9oZnMvYnRyZWUuYy00Mjgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzo1OTo0Mi44NzMxMjM4MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTM5ODI0NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSEZTIEZpbGVzeXN0ZW0gRnVuY3Rpb25zIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIG5ldyBmdW5jdGlvbnMgd2UncmUgbG9va2luZyBhdCBhcmUgYGhmc19ibWFwX3Rlc3RfYml0YCBhbmQgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAuIFNpbmNlIHRoZXkncmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIG15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gbmFycm93IHRoZSBmb2N1cyB0byBgaGZzX2J0cmVlX29wZW5gLiBCdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhhdCBzeXprYWxsZXIgKmNhbiogdGFyZ2V0IHN0YXRpYyBmdW5jdGlvbnMsIHByb3ZpZGVkIHRoZXkncmUgcmVwcmVzZW50ZWQgaW4gdGhlIGRlYnVnIGluZm9ybWF0aW9uLiBUaGF0J3MgZ29vZCBuZXdzLCBleHBhbmRzIHRoZSBwb3NzaWJpbGl0aWVzLlxuXG5BbHJpZ2h0LCBsZXQncyBpbmNsdWRlIGFsbCB0aHJlZSBpbiB0aGUgZnV6emluZyBzY29wZTogYGhmc19idHJlZV9vcGVuYCwgYGhmc19ibWFwX3Rlc3RfYml0YCwgYW5kIGBoZnNfYm1hcF9nZXRfbWFwX3BhZ2VgLiBHb3R0YSBtYWtlIHN1cmUgd2UgY292ZXIgdGhlIGdyb3VuZCB0aG9yb3VnaGx5LlxuXG5Ob3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrOiBgaGZzX2JtYXBfdGVzdF9iaXRgIGlzIGRlZmluaXRlbHkgdGhlIGNvcnJlY3QgbmFtZSwgYW5kIHRoZSBzYW1lIGdvZXMgZm9yIGBoZnNfYm1hcF9nZXRfbWFwX3BhZ2VgLiBDb25maXJtZWQuXG5cbk5leHQgdXAsIGNvbmZpZ3VyYXRpb25zLiBBcmUgdGhlcmUgYW55IG90aGVyIGZsYWdzIG9yIGRlcGVuZGVuY2llcyB0byBjb25zaWRlcj8gTm9wZSwgaXQgbG9va3MgbGlrZSBpdCdzIGp1c3QgYEhGU19GU2AuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIGRvdWJsZS1jaGVjayB0aGF0IGBIRlNfRlNgIGlzIHRoZSAqb25seSogcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24uIENhbid0IGJlIHRvbyBjYXJlZnVsIHdoZW4gc2V0dGluZyB1cCBhIGZ1enppbmcgY2FtcGFpZ24sIHlvdSBrbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDE5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjU5OjQ3LjgxMjk0OTk4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc3OTA1MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9oZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnMvS2NvbmZpZz0yPWNvbmZpZyBIRlNfRlNcXG5mcy9oZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBNYWNpbnRvc2ggZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy9oZnMvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gQkxPQ0tcXG5mcy9oZnMvS2NvbmZpZy01LVxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbi0tXFxuZnMvaGZzL0tjb25maWc9MTc9Y29uZmlnIEhGU19LVU5JVF9URVNUXFxuZnMvaGZzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBIRlMgZmlsZXN5c3RlbVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbmZzL2hmcy9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gSEZTX0ZTIFxcdTAwMjZcXHUwMDI2IEtVTklUXFxuZnMvaGZzL0tjb25maWctMjAtXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6NTk6NDcuODcwNzQ2MDYzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NjY5MzQwODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSEZTIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBhZnRlciByZXZpZXdpbmcgdGhlIHBhdGNoLCBpdCBzZWVtcyBgSEZTX0ZTYCBpcyB0aGUgbmVjZXNzYXJ5IGFuZCBzdWZmaWNpZW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBMZXQgbWUgc3ludGhlc2l6ZSB3aGF0IEkndmUgZ2F0aGVyZWQuIE15IGFzc2Vzc21lbnQgaXMgYXMgZm9sbG93czpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6ICpUcnVlKiDigJMgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1enppbmcuXG4qICAgKipGb2N1c1N5bWJvbHMqKjogYGhmc19idHJlZV9vcGVuYCwgYGhmc19ibWFwX3Rlc3RfYml0YCwgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAg4oCTIHRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gdGFyZ2V0IGluIG15IGZ1enppbmcgZWZmb3J0cy5cbiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYEhGU19GU2Ag4oCTIHRoaXMgaXMgdGhlIGNydWNpYWwgY29uZmlndXJhdGlvbiBmbGFnIHRoYXQgZW5hYmxlcyB0aGUgcmVsZXZhbnQgY29kZSBwYXRoLlxuKiAgICoqUmVhc29uaW5nKio6IFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBjaGVja3MgZm9yIHBvdGVudGlhbCBiaXRtYXAgY29ycnVwdGlvbiB3aXRoaW4gdGhlIEhGUyBCLXRyZWUgc3RydWN0dXJlIHNwZWNpZmljYWxseSBkdXJpbmcgdGhlIGBtb3VudGAgZnVuY3Rpb24uIENydWNpYWxseSwgaWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZCwgaXQgZm9yY2VzIHRoZSBmaWxlc3lzdGVtIGludG8gcmVhZC1vbmx5IG1vZGUgdG8gcHJldmVudCBkYXRhIGxvc3MuIFRoaXMgaXMgKnJlYWNoYWJsZSBmdW5jdGlvbmFsIGNvZGUqIGFuZCByZXByZXNlbnRzIGEgY3JpdGljYWwgcG9pbnQgaW4gdGhlIGZpbGVzeXN0ZW0gbGlmZWN5Y2xlLCB0aGVyZWZvcmUgYSBoaWdoLXZhbHVlIGZ1enppbmcgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzA1LCJPdXRwdXRUb2tlbnMiOjExMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzo1OTo1My40Mzc2ODE5MjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjgyNjc0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGZzX2J0cmVlX29wZW5cIixcbiAgICBcImhmc19ibWFwX3Rlc3RfYml0XCIsXG4gICAgXCJoZnNfYm1hcF9nZXRfbWFwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG5ldyBsb2dpYyB0byBjaGVjayBmb3IgYml0bWFwIGNvcnJ1cHRpb24gZHVyaW5nIEItdHJlZSBvcGVuIGluIHRoZSBIRlMgZmlsZXN5c3RlbSwgZm9yY2luZyB0aGUgZmlsZXN5c3RlbSB0byByZWFkLW9ubHkgaWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZC4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhmc19idHJlZV9vcGVuXCIsXG4gICAgXCJoZnNfYm1hcF90ZXN0X2JpdFwiLFxuICAgIFwiaGZzX2JtYXBfZ2V0X21hcF9wYWdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgbG9naWMgdG8gY2hlY2sgZm9yIGJpdG1hcCBjb3JydXB0aW9uIGR1cmluZyBCLXRyZWUgb3BlbiBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0sIGZvcmNpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gcmVhZC1vbmx5IGlmIGNvcnJ1cHRpb24gaXMgZGV0ZWN0ZWQuIFRoaXMgaXMgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY29kZSBkdXJpbmcgZmlsZXN5c3RlbSBtb3VudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow5jxp6[1] Phase: Succeeded StartedAt: 2026-07-14 14:00:05 +0000 UTC FinishedAt: 2026-07-14 14:00:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 14:00:05 +0000 UTC FinishedAt: 2026-07-14 14:00:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2] Phase: Succeeded StartedAt: 2026-07-14 14:00:05 +0000 UTC FinishedAt: 2026-07-14 18:13:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 14:00:05 +0000 UTC FinishedAt: 2026-07-14 18:13:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 14:00:05 +0000 UTC FinishedAt: 2026-07-14 14:00:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 14:00:05 +0000 UTC FinishedAt: 2026-07-14 14:00:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow5jxp6/series-workflow5jxp6-convert-artifact-159711583/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 14:00:15 +0000 UTC FinishedAt: 2026-07-14 14:26:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 14:00:15 +0000 UTC FinishedAt: 2026-07-14 14:26:53 +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:*2547d7d0-739c-427f-b59c-2a48e8961d8f,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-workflow5jxp6/series-workflow5jxp6-convert-artifact-159711583/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": "426c98e6-90be-496f-b44a-126173520263", "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-workflow5jxp6/series-workflow5jxp6-build-action-2526537317/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 14:00:15 +0000 UTC FinishedAt: 2026-07-14 14:26:43 +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:*2547d7d0-739c-427f-b59c-2a48e8961d8f,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-workflow5jxp6/series-workflow5jxp6-convert-artifact-159711583/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": "426c98e6-90be-496f-b44a-126173520263", "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-workflow5jxp6/series-workflow5jxp6-build-action-2526537317/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 14:26:53 +0000 UTC FinishedAt: 2026-07-14 14:26:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 14:26:53 +0000 UTC FinishedAt: 2026-07-14 14:26:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 14:26:53 +0000 UTC FinishedAt: 2026-07-14 14:27:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 14:26:53 +0000 UTC FinishedAt: 2026-07-14 14:26:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow5jxp6/series-workflow5jxp6-convert-artifact-3381232622/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 14:27:03 +0000 UTC FinishedAt: 2026-07-14 14:29:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 14:27:03 +0000 UTC FinishedAt: 2026-07-14 14:29:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*426c98e6-90be-496f-b44a-126173520263,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-workflow5jxp6/series-workflow5jxp6-build-action-2526537317/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-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 14:29:13 +0000 UTC FinishedAt: 2026-07-14 14:29:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 14:29:13 +0000 UTC FinishedAt: 2026-07-14 14:29:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 14:29:13 +0000 UTC FinishedAt: 2026-07-14 15:10:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 14:29:13 +0000 UTC FinishedAt: 2026-07-14 15:10:29 +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:*2547d7d0-739c-427f-b59c-2a48e8961d8f,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-workflow5jxp6/series-workflow5jxp6-convert-artifact-3381232622/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": "33b2c3dc-a445-4adb-80d0-dc199880e0be", "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-workflow5jxp6/series-workflow5jxp6-build-action-3216200962/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 14:29:13 +0000 UTC FinishedAt: 2026-07-14 15:10:19 +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:*2547d7d0-739c-427f-b59c-2a48e8961d8f,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-workflow5jxp6/series-workflow5jxp6-convert-artifact-3381232622/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": "33b2c3dc-a445-4adb-80d0-dc199880e0be", "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-workflow5jxp6/series-workflow5jxp6-build-action-3216200962/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 15:10:29 +0000 UTC FinishedAt: 2026-07-14 15:10:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 15:10:29 +0000 UTC FinishedAt: 2026-07-14 15:10:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 15:10:29 +0000 UTC FinishedAt: 2026-07-14 15:12:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 15:10:29 +0000 UTC FinishedAt: 2026-07-14 15:12:08 +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:*33b2c3dc-a445-4adb-80d0-dc199880e0be,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-workflow5jxp6/series-workflow5jxp6-build-action-3216200962/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-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 15:12:18 +0000 UTC FinishedAt: 2026-07-14 18:13:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 15:12:18 +0000 UTC FinishedAt: 2026-07-14 18:13:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},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:*426c98e6-90be-496f-b44a-126173520263,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*33b2c3dc-a445-4adb-80d0-dc199880e0be,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-workflow5jxp6/series-workflow5jxp6-build-action-2526537317/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-workflow5jxp6/series-workflow5jxp6-build-action-3216200962/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 15:12:18 +0000 UTC FinishedAt: 2026-07-14 15:12:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 15:12:18 +0000 UTC FinishedAt: 2026-07-14 15:12:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},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-workflow5jxp6/series-workflow5jxp6-convert-artifact-802935443/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 15:12:18 +0000 UTC FinishedAt: 2026-07-14 15:12:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 15:12:18 +0000 UTC FinishedAt: 2026-07-14 15:12:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 15:12:18 +0000 UTC FinishedAt: 2026-07-14 15:12:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 15:12:28 +0000 UTC FinishedAt: 2026-07-14 18:13:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jxp6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_btree_open","hfs_bmap_test_bit","hfs_bmap_get_map_page"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"b77ef8d9-c680-4985-b924-a9b9a5be0f2b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 15:12:28 +0000 UTC FinishedAt: 2026-07-14 18:13:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*426c98e6-90be-496f-b44a-126173520263,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*33b2c3dc-a445-4adb-80d0-dc199880e0be,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-workflow5jxp6/series-workflow5jxp6-build-action-2526537317/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-workflow5jxp6/series-workflow5jxp6-build-action-3216200962/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-workflow5jxp6/series-workflow5jxp6-convert-artifact-802935443/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,}