Name: series-workflow98mw4 Phase: Succeeded StartedAt: 2026-08-06 09:08:10 +0000 UTC FinishedAt: 2026-08-06 13:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[0] Phase: Succeeded StartedAt: 2026-08-06 09:08:10 +0000 UTC FinishedAt: 2026-08-06 09:47:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 09:08:10 +0000 UTC FinishedAt: 2026-08-06 09:47:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "2d2338c93da79b3bfe4b6099a931d9468d539952", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BTRFS_FS", "IO_URING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "2d2338c93da79b3bfe4b6099a931d9468d539952", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BTRFS_FS", "IO_URING" ], "series_id": "5a85df1c-48af-4f4a-87dc-64ef3baf0bd1" }, "track": "KASAN", "fuzz": { "focus": [ "fs", "io_uring" ], "focus_symbols": [ "btrfs_uring_cmd", "btrfs_encoded_read_regular_fill_pages" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JUUkZTX0ZTJiMzNDssCiAgICAmIzM0O0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnRyZnNfdXJpbmdfY21kJiMzNDssCiAgICAmIzM0O2J0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbWVtb3J5IGxlYWtzLCBsb2NraW5nIGlzc3VlcywgYW5kIGlvX3VyaW5nIHJldHJ5IGxvZ2ljIGluIGJ0cmZzIGlvX3VyaW5nIGVuY29kZWQgcmVhZC93cml0ZSBvcGVyYXRpb25zLiBJdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgaW4gdGhlIGJ0cmZzIGZpbGVzeXN0ZW0gYW5kIGlvX3VyaW5nIGludGVncmF0aW9uLCB3aGljaCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDI2NTJmM2JjNGJkY2VjYWRkMDIzOTQ2MDRmNmE1NGJjMDQ0YzFmZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMDk6NDY6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW5vZGUuYyBiL2ZzL2J0cmZzL2lub2RlLmNcbmluZGV4IGI0NDZjMzAxNGIyNDAuLjhlM2NlZTM4NDVlNmYgMTAwNjQ0XG4tLS0gYS9mcy9idHJmcy9pbm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9idHJmcy9pbm9kZS5jXG5AQCAtOTQxMSw3ICYjNDM7OTQxMSw2IEBAIGludCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsXG4gXHRzdHJ1Y3QgY29tcGxldGlvbiBzeW5jX3JlYWRzO1xuIFx0dW5zaWduZWQgbG9uZyBpID0gMDtcbiBcdHN0cnVjdCBidHJmc19iaW8gKmJiaW87XG4tXHRpbnQgcmV0O1xuIFxuIFx0LypcbiBcdCAqIEZhc3QgcGF0aCBmb3Igc3luY2hyb25vdXMgcmVhZHMgd2hpY2ggY29tcGxldGVzIGluIHRoaXMgY2FsbCwgaW9fdXJpbmdcbkBAIC05NDU4LDEwICYjNDM7OTQ1NywxMCBAQCBpbnQgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLFxuIFxuIFx0aWYgKHVyaW5nX2N0eCkge1xuIFx0XHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNnByaXYtXHUwMDNlcGVuZGluZ19yZWZzKSkge1xuLVx0XHRcdHJldCA9IGJsa19zdGF0dXNfdG9fZXJybm8oUkVBRF9PTkNFKHByaXYtXHUwMDNlc3RhdHVzKSk7XG4tXHRcdFx0YnRyZnNfdXJpbmdfcmVhZF9leHRlbnRfZW5kaW8odXJpbmdfY3R4LCByZXQpO1xuJiM0MztcdFx0XHRpbnQgZXJyID0gYmxrX3N0YXR1c190b19lcnJubyhSRUFEX09OQ0UocHJpdi1cdTAwM2VzdGF0dXMpKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50X2VuZGlvKHVyaW5nX2N0eCwgZXJyKTtcbiBcdFx0XHRrZnJlZShwcml2KTtcbi1cdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXG4gXHRcdHJldHVybiAtRUlPQ0JRVUVVRUQ7XG5kaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmNcbmluZGV4IGJhYTY0NWU5ODgxMjYuLjEwNjU0MTZiY2IxZGQgMTAwNjQ0XG4tLS0gYS9mcy9idHJmcy9pb2N0bC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9idHJmcy9pb2N0bC5jXG5AQCAtNDU1Miw3ICYjNDM7NDU1Miw3IEBAIHN0YXRpYyB2b2lkIGJ0cmZzX3VyaW5nX3JlYWRfZmluaXNoZWQoc3RydWN0IGlvX3R3X3JlcSB0d19yZXEsIGlvX3R3X3Rva2VuX3QgdHcpXG4gXHRzaXplX3QgcGFnZV9vZmZzZXQ7XG4gXHRzc2l6ZV90IHJldDtcbiBcbi1cdC8qIFRoZSBpbm9kZSBsb2NrIGhhcyBhbHJlYWR5IGJlZW4gYWNxdWlyZWQgaW4gYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQuICAqL1xuJiM0MztcdC8qIFRoZSBpbm9kZSBsb2NrIGhhcyBhbHJlYWR5IGJlZW4gYWNxdWlyZWQgaW4gYnRyZnNfZW5jb2RlZF9yZWFkKCkuICovXG4gXHRidHJmc19sb2NrZGVwX2lub2RlX2FjcXVpcmUoaW5vZGUsIGlfcndzZW0pO1xuIFxuIFx0aWYgKHByaXYtXHUwMDNlZXJyKSB7XG5AQCAtNDYxOCw3ICYjNDM7NDYxOCw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgaW92ZWMgKmlvdiwgc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kKVxuIHtcbiBcdHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUgPSBCVFJGU19JKGZpbGVfaW5vZGUoaW9jYi1cdTAwM2VraV9maWxwKSk7XG4tXHRzdHJ1Y3QgZXh0ZW50X2lvX3RyZWUgKmlvX3RyZWUgPSBcdTAwMjZpbm9kZS1cdTAwM2Vpb190cmVlO1xuIFx0c3RydWN0IHBhZ2UgKipwYWdlcyA9IE5VTEw7XG4gXHRzdHJ1Y3QgYnRyZnNfdXJpbmdfcHJpdiAqcHJpdiA9IE5VTEw7XG4gXHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzO1xuQEAgLTQ2MjYsOCAmIzQzOzQ2MjUsMTAgQEAgc3RhdGljIGludCBidHJmc191cmluZ19yZWFkX2V4dGVudChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbiBcbiBcdG5yX3BhZ2VzID0gRElWX1JPVU5EX1VQKGRpc2tfaW9fc2l6ZSwgUEFHRV9TSVpFKTtcbiBcdHBhZ2VzID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIG5yX3BhZ2VzLCBHRlBfTk9GUyk7XG4tXHRpZiAoIXBhZ2VzKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHRpZiAoIXBhZ2VzKSB7XG4mIzQzO1x0XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcdFx0Z290byBvdXRfZmFpbDtcbiYjNDM7XHR9XG4gXHRyZXQgPSBidHJmc19hbGxvY19wYWdlX2FycmF5KG5yX3BhZ2VzLCBwYWdlcywgR0ZQX05PRlMpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuQEAgLTQ2NzQsMTIgJiM0Mzs0Njc1LDEyIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4gXHRyZXR1cm4gLUVJT0NCUVVFVUVEO1xuIFxuIG91dF9mYWlsOlxuLVx0YnRyZnNfdW5sb2NrX2V4dGVudChpb190cmVlLCBzdGFydCwgbG9ja2VuZCwgXHUwMDI2Y2FjaGVkX3N0YXRlKTtcbi1cdGJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgQlRSRlNfSUxPQ0tfU0hBUkVEKTtcbiBcdGtmcmVlKHByaXYpO1xuLVx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIG5yX3BhZ2VzOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAocGFnZXNbaV0pXG4tXHRcdFx0X19mcmVlX3BhZ2UocGFnZXNbaV0pO1xuJiM0MztcdGlmIChwYWdlcykge1xuJiM0MztcdFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIG5yX3BhZ2VzOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRpZiAocGFnZXNbaV0pXG4mIzQzO1x0XHRcdFx0X19mcmVlX3BhZ2UocGFnZXNbaV0pO1xuJiM0MztcdFx0fVxuIFx0fVxuIFx0a2ZyZWUocGFnZXMpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC00NzAzLDkgJiM0Mzs0NzA0LDYgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3JlYWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWVcbiBcdHN0cnVjdCBpb19idHJmc19jbWQgKmJjID0gaW9fdXJpbmdfY21kX3RvX3BkdShjbWQsIHN0cnVjdCBpb19idHJmc19jbWQpO1xuIFx0c3RydWN0IGJ0cmZzX3VyaW5nX2VuY29kZWRfZGF0YSAqZGF0YSA9IE5VTEw7XG4gXG4tXHRpZiAoY21kLVx1MDAzZWZsYWdzIFx1MDAyNiBJT1JJTkdfVVJJTkdfQ01EX1JFSVNTVUUpXG4tXHRcdGRhdGEgPSBiYy1cdTAwM2VkYXRhO1xuLVxuIFx0aWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKSB7XG4gXHRcdHJldCA9IC1FUEVSTTtcbiBcdFx0Z290byBvdXRfYWNjdDtcbkBAIC00NzU5LDkgJiM0Mzs0NzU3LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlXG4gXHRcdH1cbiBcbiBcdFx0ZGF0YS1cdTAwM2Vpb3YgPSBkYXRhLVx1MDAzZWlvdnN0YWNrO1xuLVx0XHRyZXQgPSBpbXBvcnRfaW92ZWMoSVRFUl9ERVNULCBkYXRhLVx1MDAzZWFyZ3MuaW92LCBkYXRhLVx1MDAzZWFyZ3MuaW92Y250LFxuLVx0XHRcdFx0ICAgQVJSQVlfU0laRShkYXRhLVx1MDAzZWlvdnN0YWNrKSwgXHUwMDI2ZGF0YS1cdTAwM2Vpb3YsXG4tXHRcdFx0XHQgICBcdTAwMjZkYXRhLVx1MDAzZWl0ZXIpO1xuJiM0MztcdFx0cmV0ID0gX19pbXBvcnRfaW92ZWMoSVRFUl9ERVNULCBkYXRhLVx1MDAzZWFyZ3MuaW92LCBkYXRhLVx1MDAzZWFyZ3MuaW92Y250LFxuJiM0MztcdFx0XHRcdCAgICAgQVJSQVlfU0laRShkYXRhLVx1MDAzZWlvdnN0YWNrKSwgXHUwMDI2ZGF0YS1cdTAwM2Vpb3YsXG4mIzQzO1x0XHRcdFx0ICAgICBcdTAwMjZkYXRhLVx1MDAzZWl0ZXIsXG4mIzQzO1x0XHRcdFx0ICAgICAhIShpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9DT01QQVQpKTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIG91dF9hY2N0O1xuIFxuQEAgLTQ3ODcsOCAmIzQzOzQ3ODYsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxuIFxuIFx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkKFx1MDAyNmtpb2NiLCBcdTAwMjZkYXRhLVx1MDAzZWl0ZXIsIFx1MDAyNmRhdGEtXHUwMDNlYXJncywgXHUwMDI2Y2FjaGVkX3N0YXRlLFxuIFx0XHRcdFx0IFx1MDAyNmRpc2tfYnl0ZW5yLCBcdTAwMjZkaXNrX2lvX3NpemUpO1xuLVx0aWYgKHJldCA9PSAtRUFHQUlOKVxuLVx0XHRnb3RvIG91dF9hY2N0O1xuIFx0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FSU9DQlFVRVVFRClcbiBcdFx0Z290byBvdXRfZnJlZTtcbiBcbkBAIC00ODE2LDggJiM0Mzs0ODEzLDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlXG4gXHRcdFx0XHRcdCAgICAgIGNhY2hlZF9zdGF0ZSwgZGlza19ieXRlbnIsIGRpc2tfaW9fc2l6ZSxcbiBcdFx0XHRcdFx0ICAgICAgY291bnQsIGRhdGEtXHUwMDNlYXJncy5jb21wcmVzc2lvbixcbiBcdFx0XHRcdFx0ICAgICAgZGF0YS1cdTAwM2Vpb3YsIGNtZCk7XG4tXG4tXHRcdGdvdG8gb3V0X2FjY3Q7XG4mIzQzO1x0XHRpZiAocmV0ID09IC1FSU9DQlFVRVVFRClcbiYjNDM7XHRcdFx0Z290byBvdXRfYWNjdDtcbiYjNDM7XHRcdGJ0cmZzX3VubG9ja19leHRlbnQoaW9fdHJlZSwgc3RhcnQsIGxvY2tlbmQsIFx1MDAyNmNhY2hlZF9zdGF0ZSk7XG4mIzQzO1x0XHRidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIEJUUkZTX0lMT0NLX1NIQVJFRCk7XG4gXHR9XG4gXG4gb3V0X2ZyZWU6XG5AQCAtNDgyOCw4ICYjNDM7NDgyNywxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxuIFx0XHRhZGRfcmNoYXIoY3VycmVudCwgcmV0KTtcbiBcdGluY19zeXNjcihjdXJyZW50KTtcbiBcbi1cdGlmIChyZXQgIT0gLUVJT0NCUVVFVUVEIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVBR0FJTilcbiYjNDM7XHRpZiAocmV0ICE9IC1FSU9DQlFVRVVFRCkge1xuIFx0XHRrZnJlZShkYXRhKTtcbiYjNDM7XHRcdGJjLVx1MDAzZWRhdGEgPSBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTQ4NDEsMTIgJiM0Mzs0ODQyLDggQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VcbiBcdHN0cnVjdCBraW9jYiBraW9jYjtcbiBcdHNzaXplX3QgcmV0O1xuIFx0dm9pZCBfX3VzZXIgKnNxZV9hZGRyO1xuLVx0c3RydWN0IGlvX2J0cmZzX2NtZCAqYmMgPSBpb191cmluZ19jbWRfdG9fcGR1KGNtZCwgc3RydWN0IGlvX2J0cmZzX2NtZCk7XG4gXHRzdHJ1Y3QgYnRyZnNfdXJpbmdfZW5jb2RlZF9kYXRhICpkYXRhID0gTlVMTDtcbiBcbi1cdGlmIChjbWQtXHUwMDNlZmxhZ3MgXHUwMDI2IElPUklOR19VUklOR19DTURfUkVJU1NVRSlcbi1cdFx0ZGF0YSA9IGJjLVx1MDAzZWRhdGE7XG4tXG4gXHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpIHtcbiBcdFx0cmV0ID0gLUVQRVJNO1xuIFx0XHRnb3RvIG91dF9hY2N0O1xuQEAgLTQ4NTgsNiAmIzQzOzQ4NTUsMTEgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VcbiBcdFx0Z290byBvdXRfYWNjdDtcbiBcdH1cbiBcbiYjNDM7XHRpZiAoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spIHtcbiYjNDM7XHRcdHJldCA9IC1FQUdBSU47XG4mIzQzO1x0XHRnb3RvIG91dF9hY2N0O1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoIWRhdGEpIHtcbiBcdFx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhLCBHRlBfTk9GUyk7XG4gXHRcdGlmICghZGF0YSkge1xuQEAgLTQ4NjUsOCAmIzQzOzQ4NjcsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxuIFx0XHRcdGdvdG8gb3V0X2FjY3Q7XG4gXHRcdH1cbiBcbi1cdFx0YmMtXHUwMDNlZGF0YSA9IGRhdGE7XG4tXG4gXHRcdGlmIChpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9DT01QQVQpIHtcbiAjaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19DT01QQVQpXG4gXHRcdFx0c3RydWN0IGJ0cmZzX2lvY3RsX2VuY29kZWRfaW9fYXJnc18zMiBhcmdzMzI7XG5AQCAtNDkxNCw5ICYjNDM7NDkxNCwxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxuIFx0XHRcdGdvdG8gb3V0X2FjY3Q7XG4gXG4gXHRcdGRhdGEtXHUwMDNlaW92ID0gZGF0YS1cdTAwM2Vpb3ZzdGFjaztcbi1cdFx0cmV0ID0gaW1wb3J0X2lvdmVjKElURVJfU09VUkNFLCBkYXRhLVx1MDAzZWFyZ3MuaW92LCBkYXRhLVx1MDAzZWFyZ3MuaW92Y250LFxuLVx0XHRcdFx0ICAgQVJSQVlfU0laRShkYXRhLVx1MDAzZWlvdnN0YWNrKSwgXHUwMDI2ZGF0YS1cdTAwM2Vpb3YsXG4tXHRcdFx0XHQgICBcdTAwMjZkYXRhLVx1MDAzZWl0ZXIpO1xuJiM0MztcdFx0cmV0ID0gX19pbXBvcnRfaW92ZWMoSVRFUl9TT1VSQ0UsIGRhdGEtXHUwMDNlYXJncy5pb3YsIGRhdGEtXHUwMDNlYXJncy5pb3ZjbnQsXG4mIzQzO1x0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGRhdGEtXHUwMDNlaW92c3RhY2spLCBcdTAwMjZkYXRhLVx1MDAzZWlvdixcbiYjNDM7XHRcdFx0XHQgICAgIFx1MDAyNmRhdGEtXHUwMDNlaXRlcixcbiYjNDM7XHRcdFx0XHQgICAgICEhKGlzc3VlX2ZsYWdzIFx1MDAyNiBJT19VUklOR19GX0NPTVBBVCkpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdGdvdG8gb3V0X2FjY3Q7XG4gXG5AQCAtNDkyNiwxMSAmIzQzOzQ5MjcsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spIHtcbi1cdFx0cmV0ID0gLUVBR0FJTjtcbi1cdFx0Z290byBvdXRfYWNjdDtcbi1cdH1cbi1cbiBcdHBvcyA9IGRhdGEtXHUwMDNlYXJncy5vZmZzZXQ7XG4gXHRyZXQgPSByd192ZXJpZnlfYXJlYShXUklURSwgZmlsZSwgXHUwMDI2cG9zLCBkYXRhLVx1MDAzZWFyZ3MubGVuKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG5AQCAtNDk1Niw4ICYjNDM7NDk1Miw3IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1XG4gXHRcdGFkZF93Y2hhcihjdXJyZW50LCByZXQpO1xuIFx0aW5jX3N5c2N3KGN1cnJlbnQpO1xuIFxuLVx0aWYgKHJldCAhPSAtRUFHQUlOKVxuLVx0XHRrZnJlZShkYXRhKTtcbiYjNDM7XHRrZnJlZShkYXRhKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2xpYi9pb3ZfaXRlci5jIGIvbGliL2lvdl9pdGVyLmNcbmluZGV4IGMyNDg0NTUxYTRlODYuLjljMjE1OGQ1Y2NkZDMgMTAwNjQ0XG4tLS0gYS9saWIvaW92X2l0ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL2lvdl9pdGVyLmNcbkBAIC0xNDEwLDYgJiM0MzsxNDEwLDcgQEAgc3NpemVfdCBfX2ltcG9ydF9pb3ZlYyhpbnQgdHlwZSwgY29uc3Qgc3RydWN0IGlvdmVjIF9fdXNlciAqdXZlYyxcbiBcdFx0KmlvdnAgPSBpb3Y7XG4gXHRyZXR1cm4gdG90YWxfbGVuO1xuIH1cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoX19pbXBvcnRfaW92ZWMpO1xuIFxuIC8qKlxuICAqIGltcG9ydF9pb3ZlYygpIC0gQ29weSBhbiBhcnJheSBvZiBcdTAwMjZzdHJ1Y3QgaW92ZWMgZnJvbSB1c2Vyc3BhY2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwOTo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlRSRlNfRlMmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidHJmc191cmluZ19jbWQmIzM0OywKICAgICYjMzQ7YnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtZW1vcnkgbGVha3MsIGxvY2tpbmcgaXNzdWVzLCBhbmQgaW9fdXJpbmcgcmV0cnkgbG9naWMgaW4gYnRyZnMgaW9fdXJpbmcgZW5jb2RlZCByZWFkL3dyaXRlIG9wZXJhdGlvbnMuIEl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgYnRyZnMgZmlsZXN5c3RlbSBhbmQgaW9fdXJpbmcgaW50ZWdyYXRpb24sIHdoaWNoIGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMjY1MmYzYmM0YmRjZWNhZGQwMjM5NDYwNGY2YTU0YmMwNDRjMWZmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAwOTo0NjowMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lub2RlLmMgYi9mcy9idHJmcy9pbm9kZS5jCmluZGV4IGI0NDZjMzAxNGIyNDAuLjhlM2NlZTM4NDVlNmYgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvYnRyZnMvaW5vZGUuYwpAQCAtOTQxMSw3ICYjNDM7OTQxMSw2IEBAIGludCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsCiAJc3RydWN0IGNvbXBsZXRpb24gc3luY19yZWFkczsKIAl1bnNpZ25lZCBsb25nIGkgPSAwOwogCXN0cnVjdCBidHJmc19iaW8gKmJiaW87Ci0JaW50IHJldDsKIAogCS8qCiAJICogRmFzdCBwYXRoIGZvciBzeW5jaHJvbm91cyByZWFkcyB3aGljaCBjb21wbGV0ZXMgaW4gdGhpcyBjYWxsLCBpb191cmluZwpAQCAtOTQ1OCwxMCAmIzQzOzk0NTcsMTAgQEAgaW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSwKIAogCWlmICh1cmluZ19jdHgpIHsKIAkJaWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO3ByaXYtJmd0O3BlbmRpbmdfcmVmcykpIHsKLQkJCXJldCA9IGJsa19zdGF0dXNfdG9fZXJybm8oUkVBRF9PTkNFKHByaXYtJmd0O3N0YXR1cykpOwotCQkJYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRfZW5kaW8odXJpbmdfY3R4LCByZXQpOwomIzQzOwkJCWludCBlcnIgPSBibGtfc3RhdHVzX3RvX2Vycm5vKFJFQURfT05DRShwcml2LSZndDtzdGF0dXMpKTsKJiM0MzsKJiM0MzsJCQlidHJmc191cmluZ19yZWFkX2V4dGVudF9lbmRpbyh1cmluZ19jdHgsIGVycik7CiAJCQlrZnJlZShwcml2KTsKLQkJCXJldHVybiByZXQ7CiAJCX0KIAogCQlyZXR1cm4gLUVJT0NCUVVFVUVEOwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmMKaW5kZXggYmFhNjQ1ZTk4ODEyNi4uMTA2NTQxNmJjYjFkZCAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvaW9jdGwuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9idHJmcy9pb2N0bC5jCkBAIC00NTUyLDcgJiM0Mzs0NTUyLDcgQEAgc3RhdGljIHZvaWQgYnRyZnNfdXJpbmdfcmVhZF9maW5pc2hlZChzdHJ1Y3QgaW9fdHdfcmVxIHR3X3JlcSwgaW9fdHdfdG9rZW5fdCB0dykKIAlzaXplX3QgcGFnZV9vZmZzZXQ7CiAJc3NpemVfdCByZXQ7CiAKLQkvKiBUaGUgaW5vZGUgbG9jayBoYXMgYWxyZWFkeSBiZWVuIGFjcXVpcmVkIGluIGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50LiAgKi8KJiM0MzsJLyogVGhlIGlub2RlIGxvY2sgaGFzIGFscmVhZHkgYmVlbiBhY3F1aXJlZCBpbiBidHJmc19lbmNvZGVkX3JlYWQoKS4gKi8KIAlidHJmc19sb2NrZGVwX2lub2RlX2FjcXVpcmUoaW5vZGUsIGlfcndzZW0pOwogCiAJaWYgKHByaXYtJmd0O2VycikgewpAQCAtNDYxOCw3ICYjNDM7NDYxOCw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsCiAJCQkJICAgc3RydWN0IGlvdmVjICppb3YsIHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCkKIHsKIAlzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlID0gQlRSRlNfSShmaWxlX2lub2RlKGlvY2ItJmd0O2tpX2ZpbHApKTsKLQlzdHJ1Y3QgZXh0ZW50X2lvX3RyZWUgKmlvX3RyZWUgPSAmYW1wO2lub2RlLSZndDtpb190cmVlOwogCXN0cnVjdCBwYWdlICoqcGFnZXMgPSBOVUxMOwogCXN0cnVjdCBidHJmc191cmluZ19wcml2ICpwcml2ID0gTlVMTDsKIAl1bnNpZ25lZCBsb25nIG5yX3BhZ2VzOwpAQCAtNDYyNiw4ICYjNDM7NDYyNSwxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50KHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLAogCiAJbnJfcGFnZXMgPSBESVZfUk9VTkRfVVAoZGlza19pb19zaXplLCBQQUdFX1NJWkUpOwogCXBhZ2VzID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIG5yX3BhZ2VzLCBHRlBfTk9GUyk7Ci0JaWYgKCFwYWdlcykKLQkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CWlmICghcGFnZXMpIHsKJiM0MzsJCXJldCA9IC1FTk9NRU07CiYjNDM7CQlnb3RvIG91dF9mYWlsOwomIzQzOwl9CiAJcmV0ID0gYnRyZnNfYWxsb2NfcGFnZV9hcnJheShucl9wYWdlcywgcGFnZXMsIEdGUF9OT0ZTKTsKIAlpZiAocmV0KSB7CiAJCXJldCA9IC1FTk9NRU07CkBAIC00Njc0LDEyICYjNDM7NDY3NSwxMiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50KHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLAogCXJldHVybiAtRUlPQ0JRVUVVRUQ7CiAKIG91dF9mYWlsOgotCWJ0cmZzX3VubG9ja19leHRlbnQoaW9fdHJlZSwgc3RhcnQsIGxvY2tlbmQsICZhbXA7Y2FjaGVkX3N0YXRlKTsKLQlidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIEJUUkZTX0lMT0NLX1NIQVJFRCk7CiAJa2ZyZWUocHJpdik7Ci0JZm9yIChpbnQgaSA9IDA7IGkgJmx0OyBucl9wYWdlczsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKHBhZ2VzW2ldKQotCQkJX19mcmVlX3BhZ2UocGFnZXNbaV0pOwomIzQzOwlpZiAocGFnZXMpIHsKJiM0MzsJCWZvciAoaW50IGkgPSAwOyBpICZsdDsgbnJfcGFnZXM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkJaWYgKHBhZ2VzW2ldKQomIzQzOwkJCQlfX2ZyZWVfcGFnZShwYWdlc1tpXSk7CiYjNDM7CQl9CiAJfQogCWtmcmVlKHBhZ2VzKTsKIAlyZXR1cm4gcmV0OwpAQCAtNDcwMyw5ICYjNDM7NDcwNCw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlCiAJc3RydWN0IGlvX2J0cmZzX2NtZCAqYmMgPSBpb191cmluZ19jbWRfdG9fcGR1KGNtZCwgc3RydWN0IGlvX2J0cmZzX2NtZCk7CiAJc3RydWN0IGJ0cmZzX3VyaW5nX2VuY29kZWRfZGF0YSAqZGF0YSA9IE5VTEw7CiAKLQlpZiAoY21kLSZndDtmbGFncyAmYW1wOyBJT1JJTkdfVVJJTkdfQ01EX1JFSVNTVUUpCi0JCWRhdGEgPSBiYy0mZ3Q7ZGF0YTsKLQogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkgewogCQlyZXQgPSAtRVBFUk07CiAJCWdvdG8gb3V0X2FjY3Q7CkBAIC00NzU5LDkgJiM0Mzs0NzU3LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlCiAJCX0KIAogCQlkYXRhLSZndDtpb3YgPSBkYXRhLSZndDtpb3ZzdGFjazsKLQkJcmV0ID0gaW1wb3J0X2lvdmVjKElURVJfREVTVCwgZGF0YS0mZ3Q7YXJncy5pb3YsIGRhdGEtJmd0O2FyZ3MuaW92Y250LAotCQkJCSAgIEFSUkFZX1NJWkUoZGF0YS0mZ3Q7aW92c3RhY2spLCAmYW1wO2RhdGEtJmd0O2lvdiwKLQkJCQkgICAmYW1wO2RhdGEtJmd0O2l0ZXIpOwomIzQzOwkJcmV0ID0gX19pbXBvcnRfaW92ZWMoSVRFUl9ERVNULCBkYXRhLSZndDthcmdzLmlvdiwgZGF0YS0mZ3Q7YXJncy5pb3ZjbnQsCiYjNDM7CQkJCSAgICAgQVJSQVlfU0laRShkYXRhLSZndDtpb3ZzdGFjayksICZhbXA7ZGF0YS0mZ3Q7aW92LAomIzQzOwkJCQkgICAgICZhbXA7ZGF0YS0mZ3Q7aXRlciwKJiM0MzsJCQkJICAgICAhIShpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX0NPTVBBVCkpOwogCQlpZiAocmV0ICZsdDsgMCkKIAkJCWdvdG8gb3V0X2FjY3Q7CiAKQEAgLTQ3ODcsOCAmIzQzOzQ3ODYsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZQogCiAJcmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkKCZhbXA7a2lvY2IsICZhbXA7ZGF0YS0mZ3Q7aXRlciwgJmFtcDtkYXRhLSZndDthcmdzLCAmYW1wO2NhY2hlZF9zdGF0ZSwKIAkJCQkgJmFtcDtkaXNrX2J5dGVuciwgJmFtcDtkaXNrX2lvX3NpemUpOwotCWlmIChyZXQgPT0gLUVBR0FJTikKLQkJZ290byBvdXRfYWNjdDsKIAlpZiAocmV0ICZsdDsgMCAmYW1wOyZhbXA7IHJldCAhPSAtRUlPQ0JRVUVVRUQpCiAJCWdvdG8gb3V0X2ZyZWU7CiAKQEAgLTQ4MTYsOCAmIzQzOzQ4MTMsMTAgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3JlYWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWUKIAkJCQkJICAgICAgY2FjaGVkX3N0YXRlLCBkaXNrX2J5dGVuciwgZGlza19pb19zaXplLAogCQkJCQkgICAgICBjb3VudCwgZGF0YS0mZ3Q7YXJncy5jb21wcmVzc2lvbiwKIAkJCQkJICAgICAgZGF0YS0mZ3Q7aW92LCBjbWQpOwotCi0JCWdvdG8gb3V0X2FjY3Q7CiYjNDM7CQlpZiAocmV0ID09IC1FSU9DQlFVRVVFRCkKJiM0MzsJCQlnb3RvIG91dF9hY2N0OwomIzQzOwkJYnRyZnNfdW5sb2NrX2V4dGVudChpb190cmVlLCBzdGFydCwgbG9ja2VuZCwgJmFtcDtjYWNoZWRfc3RhdGUpOwomIzQzOwkJYnRyZnNfaW5vZGVfdW5sb2NrKGlub2RlLCBCVFJGU19JTE9DS19TSEFSRUQpOwogCX0KIAogb3V0X2ZyZWU6CkBAIC00ODI4LDggJiM0Mzs0ODI3LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlCiAJCWFkZF9yY2hhcihjdXJyZW50LCByZXQpOwogCWluY19zeXNjcihjdXJyZW50KTsKIAotCWlmIChyZXQgIT0gLUVJT0NCUVVFVUVEICZhbXA7JmFtcDsgcmV0ICE9IC1FQUdBSU4pCiYjNDM7CWlmIChyZXQgIT0gLUVJT0NCUVVFVUVEKSB7CiAJCWtmcmVlKGRhdGEpOwomIzQzOwkJYmMtJmd0O2RhdGEgPSBOVUxMOwomIzQzOwl9CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtNDg0MSwxMiAmIzQzOzQ4NDIsOCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdQogCXN0cnVjdCBraW9jYiBraW9jYjsKIAlzc2l6ZV90IHJldDsKIAl2b2lkIF9fdXNlciAqc3FlX2FkZHI7Ci0Jc3RydWN0IGlvX2J0cmZzX2NtZCAqYmMgPSBpb191cmluZ19jbWRfdG9fcGR1KGNtZCwgc3RydWN0IGlvX2J0cmZzX2NtZCk7CiAJc3RydWN0IGJ0cmZzX3VyaW5nX2VuY29kZWRfZGF0YSAqZGF0YSA9IE5VTEw7CiAKLQlpZiAoY21kLSZndDtmbGFncyAmYW1wOyBJT1JJTkdfVVJJTkdfQ01EX1JFSVNTVUUpCi0JCWRhdGEgPSBiYy0mZ3Q7ZGF0YTsKLQogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkgewogCQlyZXQgPSAtRVBFUk07CiAJCWdvdG8gb3V0X2FjY3Q7CkBAIC00ODU4LDYgJiM0Mzs0ODU1LDExIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1CiAJCWdvdG8gb3V0X2FjY3Q7CiAJfQogCiYjNDM7CWlmIChpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX05PTkJMT0NLKSB7CiYjNDM7CQlyZXQgPSAtRUFHQUlOOwomIzQzOwkJZ290byBvdXRfYWNjdDsKJiM0MzsJfQomIzQzOwogCWlmICghZGF0YSkgewogCQlkYXRhID0ga3phbGxvY19vYmooKmRhdGEsIEdGUF9OT0ZTKTsKIAkJaWYgKCFkYXRhKSB7CkBAIC00ODY1LDggJiM0Mzs0ODY3LDYgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3UKIAkJCWdvdG8gb3V0X2FjY3Q7CiAJCX0KIAotCQliYy0mZ3Q7ZGF0YSA9IGRhdGE7Ci0KIAkJaWYgKGlzc3VlX2ZsYWdzICZhbXA7IElPX1VSSU5HX0ZfQ09NUEFUKSB7CiAjaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpICZhbXA7JmFtcDsgZGVmaW5lZChDT05GSUdfQ09NUEFUKQogCQkJc3RydWN0IGJ0cmZzX2lvY3RsX2VuY29kZWRfaW9fYXJnc18zMiBhcmdzMzI7CkBAIC00OTE0LDkgJiM0Mzs0OTE0LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1CiAJCQlnb3RvIG91dF9hY2N0OwogCiAJCWRhdGEtJmd0O2lvdiA9IGRhdGEtJmd0O2lvdnN0YWNrOwotCQlyZXQgPSBpbXBvcnRfaW92ZWMoSVRFUl9TT1VSQ0UsIGRhdGEtJmd0O2FyZ3MuaW92LCBkYXRhLSZndDthcmdzLmlvdmNudCwKLQkJCQkgICBBUlJBWV9TSVpFKGRhdGEtJmd0O2lvdnN0YWNrKSwgJmFtcDtkYXRhLSZndDtpb3YsCi0JCQkJICAgJmFtcDtkYXRhLSZndDtpdGVyKTsKJiM0MzsJCXJldCA9IF9faW1wb3J0X2lvdmVjKElURVJfU09VUkNFLCBkYXRhLSZndDthcmdzLmlvdiwgZGF0YS0mZ3Q7YXJncy5pb3ZjbnQsCiYjNDM7CQkJCSAgICAgQVJSQVlfU0laRShkYXRhLSZndDtpb3ZzdGFjayksICZhbXA7ZGF0YS0mZ3Q7aW92LAomIzQzOwkJCQkgICAgICZhbXA7ZGF0YS0mZ3Q7aXRlciwKJiM0MzsJCQkJICAgICAhIShpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX0NPTVBBVCkpOwogCQlpZiAocmV0ICZsdDsgMCkKIAkJCWdvdG8gb3V0X2FjY3Q7CiAKQEAgLTQ5MjYsMTEgJiM0Mzs0OTI3LDYgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3UKIAkJfQogCX0KIAotCWlmIChpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX05PTkJMT0NLKSB7Ci0JCXJldCA9IC1FQUdBSU47Ci0JCWdvdG8gb3V0X2FjY3Q7Ci0JfQotCiAJcG9zID0gZGF0YS0mZ3Q7YXJncy5vZmZzZXQ7CiAJcmV0ID0gcndfdmVyaWZ5X2FyZWEoV1JJVEUsIGZpbGUsICZhbXA7cG9zLCBkYXRhLSZndDthcmdzLmxlbik7CiAJaWYgKHJldCAmbHQ7IDApCkBAIC00OTU2LDggJiM0Mzs0OTUyLDcgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3UKIAkJYWRkX3djaGFyKGN1cnJlbnQsIHJldCk7CiAJaW5jX3N5c2N3KGN1cnJlbnQpOwogCi0JaWYgKHJldCAhPSAtRUFHQUlOKQotCQlrZnJlZShkYXRhKTsKJiM0MzsJa2ZyZWUoZGF0YSk7CiAJcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvbGliL2lvdl9pdGVyLmMgYi9saWIvaW92X2l0ZXIuYwppbmRleCBjMjQ4NDU1MWE0ZTg2Li45YzIxNThkNWNjZGQzIDEwMDY0NAotLS0gYS9saWIvaW92X2l0ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9saWIvaW92X2l0ZXIuYwpAQCAtMTQxMCw2ICYjNDM7MTQxMCw3IEBAIHNzaXplX3QgX19pbXBvcnRfaW92ZWMoaW50IHR5cGUsIGNvbnN0IHN0cnVjdCBpb3ZlYyBfX3VzZXIgKnV2ZWMsCiAJCSppb3ZwID0gaW92OwogCXJldHVybiB0b3RhbF9sZW47CiB9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoX19pbXBvcnRfaW92ZWMpOwogCiAvKioKICAqIGltcG9ydF9pb3ZlYygpIC0gQ29weSBhbiBhcnJheSBvZiAmYW1wO3N0cnVjdCBpb3ZlYyBmcm9tIHVzZXJzcGFjZQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwOTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTM1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTQzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyBhbmQgRnV6emluZyBTdHJhdGVneSBmb3IgQnRyZnMgaW9fdXJpbmcgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgc2VlbXMgdG8gYmUgdHdlYWtpbmcgQnRyZnMmIzM5OyBpb191cmluZyBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgYXJvdW5kIGVuY29kZWQgcmVhZC93cml0ZSBvcGVyYXRpb25zLiBUaGUgZmlsZXMgaW52b2x2ZWQg4oCTIGBmcy9idHJmcy9pbm9kZS5jYCwgYGZzL2J0cmZzL2lvY3RsLmNgLCBhbmQgYGxpYi9pb3ZfaXRlci5jYCDigJMgaW1tZWRpYXRlbHkgdGVsbCBtZSBpdCYjMzk7cyB0b3VjaGluZyBjb3JlIGlvIHBhdGhzLCBzbyB0aGlzIGRlc2VydmVzIGEgY2xvc2VyIGxvb2suCgpMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgY29kZSBjaGFuZ2VzLiBJJiMzOTttIHNlZWluZyBmaXhlcyBmb3IgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBpbiBgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRgLCBwYXJ0aWN1bGFybHkgYXJvdW5kIHBhZ2UgYWxsb2NhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmcsIHdoaWNoIGlzIGdvb2QuICBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgaGFzIGEgbWlub3IgY2hhbmdlIHRoYXQgbWlnaHQgaGFuZGxlIGVycm9yIGNvZGVzIGJldHRlci4gVGhlIGNoYW5nZXMgaW4gYGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZGAgYW5kIGBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlYCBhcmUgbG9va2luZyB0byB0aWdodGVuIHVwIGxvY2tpbmcgYW5kIGlvX3VyaW5nIHJldHJ5IGxvZ2ljIGFuZCBjb21wYXQgZmxhZ3MuIE5vdGFibHksIHRoZXJlIGFyZSBjaGFuZ2VzIHRvIGhvdyB0aGUgaW8gdmVjdG9yIGlzIGltcG9ydGVkIHdpdGggYF9faW1wb3J0X2lvdmVjYCwgYW5kIGFkZGl0aW9uYWwgbG9naWMgYWRkZWQgdG8gdGhlIGZsb3cuCgpPdmVyYWxsLCBpdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBtZW1vcnkgbGVha3MsIGFuZCBpbXByb3ZpbmcgdGhlIHN0YWJpbGl0eSBvZiBpb191cmluZyBvcGVyYXRpb25zIGluIEJ0cmZzLiBUaGlzIGtpbmQgb2YgcGF0Y2ggc2NyZWFtcyBmb3IgZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGNvbmNlbnRyYXRlZCwgd2hpY2ggZ2l2ZXMgdXMgYSBtYW5hZ2VhYmxlIHNjb3BlIGZvciBhIGZ1enppbmcgY2FtcGFpZ24uCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy4gIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlc2Ugc3ltYm9sczogYGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZGAsIGBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlYCwgYGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50YCwgYW5kIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgaW9fdXJpbmcgb3BlcmF0aW9ucyBhbmQgYXJlIHRoZXJlZm9yZSBsaWtlbHkgdGFyZ2V0cy4gCgpRdWljayBjaGVjayBvbiB0aGUgc3ltYm9scyB0byBkZXRlcm1pbmUgYWNjZXNzaWJpbGl0eS4gVGhlIGZ1bmN0aW9ucyBhcmUgc3RhdGljIGluIGBmcy9idHJmcy9pb2N0bC5jYCwgd2hpY2ggbWFrZXMgdGhlbSByZWxhdGVkIHRvIGlvY3Rscy4gVGhlcmVmb3JlIHRoZXkgYXJlIGFjY2Vzc2libGUgdG8gdXMuCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvaW9jdGwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9idHJmcy9pb2N0bC5jPTQ2MTM9c3RhdGljIGludCBidHJmc191cmluZ19yZWFkX2V4dGVudChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTQ2ODgtXG5mcy9idHJmcy9pb2N0bC5jOjQ2ODk6c3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3JlYWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXG5mcy9idHJmcy9pb2N0bC5jLTQ2OTAte1xuLS1cbmZzL2J0cmZzL2lvY3RsLmM9NDk1OT1pbnQgYnRyZnNfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtNDk2OC0jZW5kaWZcbmZzL2J0cmZzL2lvY3RsLmM6NDk2OTpcdFx0cmV0dXJuIGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChjbWQsIGlzc3VlX2ZsYWdzKTtcbmZzL2J0cmZzL2lvY3RsLmMtNDk3MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwOTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTAyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBCdHJmcyBVcmluZyBSZWFkIFByb2Nlc3MqKgoKUmlnaHQsIHNvIGBidHJmc191cmluZ19lbmNvZGVkX3JlYWRgIGlzIGEgYHN0YXRpY2AgZnVuY3Rpb24uIEludGVyZXN0aW5nLiBNZWFucyBpdCYjMzk7cyBsaWtlbHkgb25seSB1c2VkIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgY29tcGlsYXRpb24gdW5pdC4gT2theSwgdGhlIGV4dGVybmFsIGVudHJ5IHBvaW50LCB0aGVuLCBoYXMgdG8gYmUgYGJ0cmZzX3VyaW5nX2NtZGAuIE1ha2VzIHNlbnNlLiBOb3csIG15IG5leHQgc3RlcCBpcyBjbGVhciDigJMgSSBuZWVkIHRvIGRpdmUgaW50byBgYnRyZnNfdXJpbmdfY21kYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgb3JjaGVzdHJhdGlvbiBiZWdpbnMsIGFuZCB1bmRlcnN0YW5kaW5nIGl0IHdpbGwgaWxsdW1pbmF0ZSBob3cgdGhpcyByZWFkIHBhdGggaXMgYWN0dWFsbHkgaW52b2tlZCBhbmQgaGFuZGxlZC4gSXTigJlzIHRoZSBjb25kdWN0b3IsIHRoZSBzdGFydGluZyBndW4uIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgYW5kIGZpZ3VyZSBvdXQgaG93IGBidHJmc191cmluZ19lbmNvZGVkX3JlYWRgIGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0cmZzX3VyaW5nX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2lvY3RsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvaW9jdGwuYz00ODM4PXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTQ5NTgtXG5mcy9idHJmcy9pb2N0bC5jOjQ5NTk6aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbmZzL2J0cmZzL2lvY3RsLmMtNDk2MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ4NQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBidHJmc191cmluZ19jbWQgRW50cnkgUG9pbnQqKgoKUmlnaHQsIHNvIGBidHJmc191cmluZ19jbWRgLCB0aGF0JiMzOTtzIG91ciBzdGFydGluZyBwb2ludC4gR2l2ZW4gdGhlIGNvbnRleHQgb2YgZXhwbG9yaW5nIHRoZSBidHJmcyBpbXBsZW1lbnRhdGlvbiB3aXRoIGlvX3VyaW5nLCBpdCYjMzk7cyB0aGUgb2J2aW91cyBwbGFjZSB0byBiZWdpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB1c2VyLXNwYWNlIHJlcXVlc3RzIGZ1bm5lbCBpbnRvIHRoZSBrZXJuZWwsIGFuZCB0aGlzIGlzIHdoZXJlIGl0IGFsbCBraWNrcyBvZmYuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBjb250cm9sIGZsb3cgZm9yIHRoZSBjb21tb24gb3BlcmF0aW9ucy4KCk5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AuIFRoaXMgc3VnZ2VzdHMgYSBmb2N1cyBvbiB0aGUgbWVjaGFuaWNzIG9mIHJlYWRpbmcgZGF0YSwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBlbmNvZGVkIG9yIGNvbXByZXNzZWQgYmxvY2tzLCBhcyB3ZWxsIGFzIHRoZSBwcm9jZXNzIG9mIG1hcHBpbmcgdGhlc2UgdG8gdXNlciBwYWdlcy4gSSBhbnRpY2lwYXRlIHNvbWUgaW50ZXJlc3Rpbmcgb3B0aW1pemF0aW9ucyBvciBwb3RlbnRpYWxseSBzdWJ0bGUgaXNzdWVzIHJlbGF0ZWQgdG8gcGFnZSBwaW5uaW5nLCBkaXJlY3QgSS9PLCBhbmQgdGhlIGdlbmVyYWwgaGFuZGxpbmcgb2YgYXN5bmNocm9ub3VzIHJlYWRzLiBJIGV4cGVjdCB0byBmaW5kIGRldGFpbHMgY29uY2VybmluZyBlbmNyeXB0aW9uLCBjaGVja3N1bSB2YWxpZGF0aW9uLCBhbmQgdGhlIGhhbmRsaW5nIG9mIHZhcmlvdXMgZXh0ZW50cyBhbmQgYmxvY2sgZ3JvdXBzLCBhbGwgaW4gdGhlIGNvbnRleHQgb2YgYGlvX3VyaW5nYCYjMzk7cyBhc3luYyBjYXBhYmlsaXRpZXMuIExldCYjMzk7cyBzZWUgaG93IHRoZXkmIzM5O3ZlIGhhbmRsZWQgcG90ZW50aWFsIGRhdGEgY29ycnVwdGlvbiBvciBkYXRhIHJlY292ZXJ5IHByb2Nlc3Nlcy4gTGV0JiMzOTtzIGZpbmQgb3V0IGhvdyB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIHJldHJ5IGxvZ2ljIHBsYXkgb3V0LiBJJiMzOTttIGdvaW5nIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9idHJmcy9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2lub2RlLmM9OTM3OT1zdGF0aWMgdm9pZCBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8oc3RydWN0IGJ0cmZzX2JpbyAqYmJpbylcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTkzODYtXHRcdCAqIHBhaXJzIHdpdGggdGhlIG1lbW9yeSBiYXJyaWVyIGltcGxpZWQgYnkgdGhlIHJlZmNvdW50X2RlY19hbmRfdGVzdCgpXG5mcy9idHJmcy9pbm9kZS5jOjkzODc6XHRcdCAqIGluIGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoKSB0byBlbnN1cmUgdGhhdFxuZnMvYnRyZnMvaW5vZGUuYy05Mzg4LVx0XHQgKiB0aGlzIHdyaXRlIGlzIG9ic2VydmVkIGJlZm9yZSB0aGUgbG9hZCBvZiBzdGF0dXMgaW5cbmZzL2J0cmZzL2lub2RlLmM6OTM4OTpcdFx0ICogYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcygpLlxuZnMvYnRyZnMvaW5vZGUuYy05MzkwLVx0XHQgKi9cbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0MDUtXG5mcy9idHJmcy9pbm9kZS5jOjk0MDY6aW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSxcbmZzL2J0cmZzL2lub2RlLmMtOTQwNy1cdFx0XHRcdFx0ICB1NjQgZGlza19ieXRlbnIsIHU2NCBkaXNrX2lvX3NpemUsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYz05NDc1PXNzaXplX3QgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05NDk4LVxuZnMvYnRyZnMvaW5vZGUuYzo5NDk5Olx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhpbm9kZSwgZGlza19ieXRlbnIsXG5mcy9idHJmcy9pbm9kZS5jLTk1MDAtXHRcdFx0XHRcdFx0ICAgIGRpc2tfaW9fc2l6ZSwgcGFnZXMsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNjYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AqKgoKSG1tLCBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgaXNuJiMzOTt0IHN0YXRpYy4gVGhhdCYjMzk7cyBhIGtleSBvYnNlcnZhdGlvbi4gTm93LCB3aGVyZSBkb2VzIHRoYXQgbGVhZCBtZT8gSXQgbWVhbnMgdGhlIGZ1bmN0aW9uJiMzOTtzIGJlaGF2aW9yIGNhbiBjaGFuZ2UsIHdoaWNoIGlzIHNpZ25pZmljYW50IHdoZW4gZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IGNvbXBsZXggZGF0YSByZWFkcyBpbiBCdHJmcy4gQWxyaWdodCwgaWYgaXQmIzM5O3Mgbm90IHN0YXRpYywgdGhlIGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY2FsbGluZyBmdW5jdGlvbi4gTGV0JiMzOTtzIGRlbHZlIGludG8gYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyYCBhbmQgZmlndXJlIG91dCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbm9uLXN0YXRpYyBjaGFyYWN0ZXJpc3RpYy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBvZiB0aGUgaXNzdWUgbGlrZWx5IHJlc2lkZXMsIGFzIHRoZSBuYXR1cmUgb2YgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgIGltcGFjdHMgdGhlIHJlYWQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9idHJmcy9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2lub2RlLmM9OTM3OT1zdGF0aWMgdm9pZCBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8oc3RydWN0IGJ0cmZzX2JpbyAqYmJpbylcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTkzODYtXHRcdCAqIHBhaXJzIHdpdGggdGhlIG1lbW9yeSBiYXJyaWVyIGltcGxpZWQgYnkgdGhlIHJlZmNvdW50X2RlY19hbmRfdGVzdCgpXG5mcy9idHJmcy9pbm9kZS5jOjkzODc6XHRcdCAqIGluIGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoKSB0byBlbnN1cmUgdGhhdFxuZnMvYnRyZnMvaW5vZGUuYy05Mzg4LVx0XHQgKiB0aGlzIHdyaXRlIGlzIG9ic2VydmVkIGJlZm9yZSB0aGUgbG9hZCBvZiBzdGF0dXMgaW5cbmZzL2J0cmZzL2lub2RlLmM6OTM4OTpcdFx0ICogYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcygpLlxuZnMvYnRyZnMvaW5vZGUuYy05MzkwLVx0XHQgKi9cbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0MDUtXG5mcy9idHJmcy9pbm9kZS5jOjk0MDY6aW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSxcbmZzL2J0cmZzL2lub2RlLmMtOTQwNy1cdFx0XHRcdFx0ICB1NjQgZGlza19ieXRlbnIsIHU2NCBkaXNrX2lvX3NpemUsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05NDc0LVxuZnMvYnRyZnMvaW5vZGUuYzo5NDc1OnNzaXplX3QgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG5mcy9idHJmcy9pbm9kZS5jLTk0NzYtXHRcdFx0XHQgICB1NjQgc3RhcnQsIHU2NCBsb2NrZW5kLFxuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQ5OC1cbmZzL2J0cmZzL2lub2RlLmM6OTQ5OTpcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoaW5vZGUsIGRpc2tfYnl0ZW5yLFxuZnMvYnRyZnMvaW5vZGUuYy05NTAwLVx0XHRcdFx0XHRcdCAgICBkaXNrX2lvX3NpemUsIHBhZ2VzLCBOVUxMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAxMAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgRGVlcGVyIGludG8gYnRyZnMgUmVhZCBPcGVyYXRpb25zKioKCk9rYXksIHNvIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcmAgaXNuJiMzOTt0IHN0YXRpYyBlaXRoZXIuIEludGVyZXN0aW5nLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBicm9hZGVuIG15IHNjb3BlIGEgYml0LiBUaW1lIHRvIG1vdmUgdXAgdGhlIGNhbGwgc3RhY2suIExldCYjMzk7cyBkaWcgaW50byBgYnRyZnNfZW5jb2RlZF9yZWFkYCBhbmQgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgaWYgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyYCBpc24mIzM5O3Qgc3RhdGljLCB3aGF0IG1ha2VzIHRoZSBwYXJlbnQgZnVuY3Rpb24gZGlmZmVyZW50PyBJdCBtYXkgcmV2ZWFsIG1vcmUgYWJvdXQgaG93IHRoaXMgcmVhZCBwcm9jZXNzIGlzIGJlaW5nIGhhbmRsZWQgYW5kIHdoZXJlIHRoZSB2YXJpYWJpbGl0eSBsaWVzLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRyZnNfZW5jb2RlZF9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9idHJmcy9pbm9kZS5jPTkyNjI9aW50IGJ0cmZzX2VuY29kZWRfaW9fY29tcHJlc3Npb25fZnJvbV9leHRlbnQoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05Mjg1LVxuZnMvYnRyZnMvaW5vZGUuYzo5Mjg2OnN0YXRpYyBzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZF9pbmxpbmUoXG5mcy9idHJmcy9pbm9kZS5jLTkyODctXHRcdFx0XHRzdHJ1Y3Qga2lvY2IgKmlvY2IsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05MzcxLVxuZnMvYnRyZnMvaW5vZGUuYzo5MzcyOnN0cnVjdCBidHJmc19lbmNvZGVkX3JlYWRfcHJpdmF0ZSB7XG5mcy9idHJmcy9pbm9kZS5jLTkzNzMtXHRzdHJ1Y3QgY29tcGxldGlvbiAqc3luY19yZWFkcztcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTkzNzgtXG5mcy9idHJmcy9pbm9kZS5jOjkzNzk6c3RhdGljIHZvaWQgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvKHN0cnVjdCBidHJmc19iaW8gKmJiaW8pXG5mcy9idHJmcy9pbm9kZS5jLTkzODAte1xuZnMvYnRyZnMvaW5vZGUuYzo5MzgxOlx0c3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlICpwcml2ID0gYmJpby1cdTAwM2Vwcml2YXRlO1xuZnMvYnRyZnMvaW5vZGUuYy05MzgyLVxuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTM4Ni1cdFx0ICogcGFpcnMgd2l0aCB0aGUgbWVtb3J5IGJhcnJpZXIgaW1wbGllZCBieSB0aGUgcmVmY291bnRfZGVjX2FuZF90ZXN0KClcbmZzL2J0cmZzL2lub2RlLmM6OTM4NzpcdFx0ICogaW4gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcygpIHRvIGVuc3VyZSB0aGF0XG5mcy9idHJmcy9pbm9kZS5jLTkzODgtXHRcdCAqIHRoaXMgd3JpdGUgaXMgb2JzZXJ2ZWQgYmVmb3JlIHRoZSBsb2FkIG9mIHN0YXR1cyBpblxuZnMvYnRyZnMvaW5vZGUuYzo5Mzg5Olx0XHQgKiBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKCkuXG5mcy9idHJmcy9pbm9kZS5jLTkzOTAtXHRcdCAqL1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQwNS1cbmZzL2J0cmZzL2lub2RlLmM6OTQwNjppbnQgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLFxuZnMvYnRyZnMvaW5vZGUuYy05NDA3LVx0XHRcdFx0XHQgIHU2NCBkaXNrX2J5dGVuciwgdTY0IGRpc2tfaW9fc2l6ZSxcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0MDkte1xuZnMvYnRyZnMvaW5vZGUuYzo5NDEwOlx0c3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlICpwcml2LCBzeW5jX3ByaXY7XG5mcy9idHJmcy9pbm9kZS5jLTk0MTEtXHRzdHJ1Y3QgY29tcGxldGlvbiBzeW5jX3JlYWRzO1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQxOS1cdGlmICh1cmluZ19jdHgpIHtcbmZzL2J0cmZzL2lub2RlLmM6OTQyMDpcdFx0cHJpdiA9IGttYWxsb2Nfb2JqKHN0cnVjdCBidHJmc19lbmNvZGVkX3JlYWRfcHJpdmF0ZSwgR0ZQX05PRlMpO1xuZnMvYnRyZnMvaW5vZGUuYy05NDIxLVx0XHRpZiAoIXByaXYpXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05NDMzLVx0YmJpbyA9IGJ0cmZzX2Jpb19hbGxvYyhCSU9fTUFYX1ZFQ1MsIFJFUV9PUF9SRUFELCBpbm9kZSwgMCxcbmZzL2J0cmZzL2lub2RlLmM6OTQzNDpcdFx0XHQgICAgICAgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvLCBwcml2KTtcbmZzL2J0cmZzL2lub2RlLmMtOTQzNS1cdGJiaW8tXHUwMDNlYmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gZGlza19ieXRlbnIgXHUwMDNlXHUwMDNlIFNFQ1RPUl9TSElGVDtcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0NDQtXHRcdFx0YmJpbyA9IGJ0cmZzX2Jpb19hbGxvYyhCSU9fTUFYX1ZFQ1MsIFJFUV9PUF9SRUFELCBpbm9kZSwgMCxcbmZzL2J0cmZzL2lub2RlLmM6OTQ0NTpcdFx0XHRcdFx0ICAgICAgIGJ0cmZzX2VuY29kZWRfcmVhZF9lbmRpbywgcHJpdik7XG5mcy9idHJmcy9pbm9kZS5jLTk0NDYtXHRcdFx0YmJpby1cdTAwM2ViaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBkaXNrX2J5dGVuciBcdTAwM2VcdTAwM2UgU0VDVE9SX1NISUZUO1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQ2OS1cdFx0XHR3YWl0X2Zvcl9jb21wbGV0aW9uX2lvKFx1MDAyNnN5bmNfcmVhZHMpO1xuZnMvYnRyZnMvaW5vZGUuYzo5NDcwOlx0XHQvKiBTZWUgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvKCkgZm9yIG9yZGVyaW5nLiAqL1xuZnMvYnRyZnMvaW5vZGUuYy05NDcxLVx0XHRyZXR1cm4gYmxrX3N0YXR1c190b19lcnJubyhSRUFEX09OQ0UocHJpdi1cdTAwM2VzdGF0dXMpKTtcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0NzQtXG5mcy9idHJmcy9pbm9kZS5jOjk0NzU6c3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmZzL2J0cmZzL2lub2RlLmMtOTQ3Ni1cdFx0XHRcdCAgIHU2NCBzdGFydCwgdTY0IGxvY2tlbmQsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05NDk4LVxuZnMvYnRyZnMvaW5vZGUuYzo5NDk5Olx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhpbm9kZSwgZGlza19ieXRlbnIsXG5mcy9idHJmcy9pbm9kZS5jLTk1MDAtXHRcdFx0XHRcdFx0ICAgIGRpc2tfaW9fc2l6ZSwgcGFnZXMsIE5VTEwpO1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTUzOC1cbmZzL2J0cmZzL2lub2RlLmM6OTUzOTpzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmZzL2J0cmZzL2lub2RlLmMtOTU0MC1cdFx0XHQgICBzdHJ1Y3QgYnRyZnNfaW9jdGxfZW5jb2RlZF9pb19hcmdzICplbmNvZGVkLFxuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTYyOC1cdFx0ZW0gPSBOVUxMO1xuZnMvYnRyZnMvaW5vZGUuYzo5NjI5Olx0XHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfaW5saW5lKGlvY2IsIGl0ZXIsIHN0YXJ0LCBsb2NrZW5kLFxuZnMvYnRyZnMvaW5vZGUuYy05NjMwLVx0XHRcdFx0XHRcdGNhY2hlZF9zdGF0ZSwgZXh0ZW50X3N0YXJ0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwOTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY1OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqRGl2aW5nIGludG8gdGhlIEJ0cmZzIElPX1VyaW5nIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgaW9fdXJpbmcgaW50ZWdyYXRpb24gd29ya3Mgd2l0aGluIEJ0cmZzLiBMb29raW5nIGF0IHRoZSBjb2RlLCBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgZmVlbHMgbGlrZSBhIHNvbGlkIGZ1bmN0aW9uIHRvIGtleSBpbiBvbi4gSXQmIzM5O3MgYSBrZXkgcGFydCBvZiB0aGUgcmVndWxhciByZWFkIHBhdGgsIHNvIGl0IHNob3VsZCBnaXZlIG1lIHNvbWUgaW5zaWdodC4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIGFub3RoZXIgYW5nbGUuIEhvdyBkb2VzIGBidHJmc191cmluZ19jbWRgIGZpdCBpbnRvIHRoaXM/IEFoLCB5ZXMsIGl0JiMzOTtzIHRoZSBzcGVjaWZpYyBoYW5kbGVyIGZvciBpb191cmluZyBjb21tYW5kcyB3aXRoaW4gdGhlIEJ0cmZzIGZpbGVzeXN0ZW0uIFRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IhIE5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiB0byBhc2sgaXM6IHdoZXJlIGlzIGBidHJmc191cmluZ19jbWRgICp1c2VkKj8gU3BlY2lmaWNhbGx5LCBpcyBpdCBwYXJ0IG9mIHRoZSBleHBvc2VkIGBmaWxlX29wZXJhdGlvbnNgIHN0cnVjdHVyZT8gVGhhdCB3b3VsZCBtZWFuIGl0JiMzOTtzIGRpcmVjdGx5IHdpcmVkIGludG8gdGhlIGZpbGVzeXN0ZW0mIzM5O3Mgc3RhbmRhcmQgaW50ZXJmYWNlcy4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBwYXRoIHRvIHVuZGVyc3RhbmQgaG93IGlvX3VyaW5nIGlzIGludGVncmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0cmZzX3VyaW5nX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2J0cmZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9idHJmcy9maWxlLmM9Mzg0Mz1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJ0cmZzX2ZpbGVfb3BlcmF0aW9ucyA9IHtcbi0tXG5mcy9idHJmcy9maWxlLmMtMzg1OS1cdC5yZW1hcF9maWxlX3JhbmdlID0gYnRyZnNfcmVtYXBfZmlsZV9yYW5nZSxcbmZzL2J0cmZzL2ZpbGUuYzozODYwOlx0LnVyaW5nX2NtZFx0PSBidHJmc191cmluZ19jbWQsXG5mcy9idHJmcy9maWxlLmMtMzg2MS1cdC5mb3BfZmxhZ3NcdD0gRk9QX0JVRkZFUl9SQVNZTkMgfCBGT1BfQlVGRkVSX1dBU1lOQyxcbi0tXG5mcy9idHJmcy9pb2N0bC5jPTQ4Mzg9c3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtNDk1OC1cbmZzL2J0cmZzL2lvY3RsLmM6NDk1OTppbnQgYnRyZnNfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuZnMvYnRyZnMvaW9jdGwuYy00OTYwLXtcbi0tXG5mcy9idHJmcy9pb2N0bC5oPTI0PXZvaWQgYnRyZnNfdXBkYXRlX2lvY3RsX2JhbGFuY2VfYXJncyhzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbyxcbmZzL2J0cmZzL2lvY3RsLmgtMjUtXHRcdFx0XHQgICAgIHN0cnVjdCBidHJmc19pb2N0bF9iYWxhbmNlX2FyZ3MgKmJhcmdzKTtcbmZzL2J0cmZzL2lvY3RsLmg6MjY6aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XG5mcy9idHJmcy9pb2N0bC5oLTI3LXZvaWQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRfZW5kaW8odm9pZCAqY3R4LCBpbnQgZXJyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0MTQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gYnRyZnMgYW5kIGlvX3VyaW5nKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIHRoZSBgYnRyZnNfdXJpbmdfY21kYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBjZW50cmFsIGhhbmRsZXIgZm9yIGB1cmluZ19jbWRgIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBidHJmcyBmaWxlc3lzdGVtLCBzbyBpdCYjMzk7cyBhIGdvb2Qgc3ltYm9sIHRvIGNvbmNlbnRyYXRlIG9uLiBOb3csIGEgcmVsYXRlZCBmdW5jdGlvbiBrZWVwcyBwb3BwaW5nIGludG8gbXkgaGVhZDogYGJ0cmZzX2VuY29kZWRfcmVhZGAuIElzIGl0IGFsc28gZXhwb3J0ZWQ/IE5vLCB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueXRoaW5nIHRoYXQgaXMgcmVsYXRlZC4gTGV0JiMzOTtzIHRyYWNlIHRocm91Z2ggdGhlIGZpbGUgbG9jYXRpb25zOyBpdCBsb29rcyBsaWtlIGl0IHJlc2lkZXMgd2l0aGluIGBmcy9idHJmcy9pbm9kZS5jYCwgYW5kIGlzIGFsc28gdXNlZCBpbiBgZnMvYnRyZnMvaW9jdGwuY2AuIEFscmlnaHQsIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgYGJ0cmZzX2VuY29kZWRfcmVhZGAgYWN0dWFsbHkgZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRyZnNfZW5jb2RlZF9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2J0cmZzX2lub2RlLmg9NjAzPWludCBidHJmc19lbmNvZGVkX2lvX2NvbXByZXNzaW9uX2Zyb21fZXh0ZW50KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLFxuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaC02MDQtXHRcdFx0XHRcdCAgICAgaW50IGNvbXByZXNzX3R5cGUpO1xuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaDo2MDU6aW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSxcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmgtNjA2LVx0XHRcdFx0XHQgIHU2NCBkaXNrX2J5dGVuciwgdTY0IGRpc2tfaW9fc2l6ZSxcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmgtNjA3LVx0XHRcdFx0XHQgIHN0cnVjdCBwYWdlICoqcGFnZXMsIHZvaWQgKnVyaW5nX2N0eCk7XG5mcy9idHJmcy9idHJmc19pbm9kZS5oOjYwODpzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmgtNjA5LVx0XHRcdCAgIHN0cnVjdCBidHJmc19pb2N0bF9lbmNvZGVkX2lvX2FyZ3MgKmVuY29kZWQsXG4tLVxuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaC02MTEtXHRcdFx0ICAgdTY0ICpkaXNrX2J5dGVuciwgdTY0ICpkaXNrX2lvX3NpemUpO1xuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaDo2MTI6c3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmgtNjEzLVx0XHRcdFx0ICAgdTY0IHN0YXJ0LCB1NjQgbG9ja2VuZCxcbi0tXG5mcy9idHJmcy9pbm9kZS5jPTkyNjI9aW50IGJ0cmZzX2VuY29kZWRfaW9fY29tcHJlc3Npb25fZnJvbV9leHRlbnQoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05Mjg1LVxuZnMvYnRyZnMvaW5vZGUuYzo5Mjg2OnN0YXRpYyBzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZF9pbmxpbmUoXG5mcy9idHJmcy9pbm9kZS5jLTkyODctXHRcdFx0XHRzdHJ1Y3Qga2lvY2IgKmlvY2IsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05MzcxLVxuZnMvYnRyZnMvaW5vZGUuYzo5MzcyOnN0cnVjdCBidHJmc19lbmNvZGVkX3JlYWRfcHJpdmF0ZSB7XG5mcy9idHJmcy9pbm9kZS5jLTkzNzMtXHRzdHJ1Y3QgY29tcGxldGlvbiAqc3luY19yZWFkcztcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTkzNzgtXG5mcy9idHJmcy9pbm9kZS5jOjkzNzk6c3RhdGljIHZvaWQgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvKHN0cnVjdCBidHJmc19iaW8gKmJiaW8pXG5mcy9idHJmcy9pbm9kZS5jLTkzODAte1xuZnMvYnRyZnMvaW5vZGUuYzo5MzgxOlx0c3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlICpwcml2ID0gYmJpby1cdTAwM2Vwcml2YXRlO1xuZnMvYnRyZnMvaW5vZGUuYy05MzgyLVxuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTM4Ni1cdFx0ICogcGFpcnMgd2l0aCB0aGUgbWVtb3J5IGJhcnJpZXIgaW1wbGllZCBieSB0aGUgcmVmY291bnRfZGVjX2FuZF90ZXN0KClcbmZzL2J0cmZzL2lub2RlLmM6OTM4NzpcdFx0ICogaW4gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcygpIHRvIGVuc3VyZSB0aGF0XG5mcy9idHJmcy9pbm9kZS5jLTkzODgtXHRcdCAqIHRoaXMgd3JpdGUgaXMgb2JzZXJ2ZWQgYmVmb3JlIHRoZSBsb2FkIG9mIHN0YXR1cyBpblxuZnMvYnRyZnMvaW5vZGUuYzo5Mzg5Olx0XHQgKiBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKCkuXG5mcy9idHJmcy9pbm9kZS5jLTkzOTAtXHRcdCAqL1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQwNS1cbmZzL2J0cmZzL2lub2RlLmM6OTQwNjppbnQgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLFxuZnMvYnRyZnMvaW5vZGUuYy05NDA3LVx0XHRcdFx0XHQgIHU2NCBkaXNrX2J5dGVuciwgdTY0IGRpc2tfaW9fc2l6ZSxcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0MDkte1xuZnMvYnRyZnMvaW5vZGUuYzo5NDEwOlx0c3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlICpwcml2LCBzeW5jX3ByaXY7XG5mcy9idHJmcy9pbm9kZS5jLTk0MTEtXHRzdHJ1Y3QgY29tcGxldGlvbiBzeW5jX3JlYWRzO1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQxOS1cdGlmICh1cmluZ19jdHgpIHtcbmZzL2J0cmZzL2lub2RlLmM6OTQyMDpcdFx0cHJpdiA9IGttYWxsb2Nfb2JqKHN0cnVjdCBidHJmc19lbmNvZGVkX3JlYWRfcHJpdmF0ZSwgR0ZQX05PRlMpO1xuZnMvYnRyZnMvaW5vZGUuYy05NDIxLVx0XHRpZiAoIXByaXYpXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05NDMzLVx0YmJpbyA9IGJ0cmZzX2Jpb19hbGxvYyhCSU9fTUFYX1ZFQ1MsIFJFUV9PUF9SRUFELCBpbm9kZSwgMCxcbmZzL2J0cmZzL2lub2RlLmM6OTQzNDpcdFx0XHQgICAgICAgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvLCBwcml2KTtcbmZzL2J0cmZzL2lub2RlLmMtOTQzNS1cdGJiaW8tXHUwMDNlYmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gZGlza19ieXRlbnIgXHUwMDNlXHUwMDNlIFNFQ1RPUl9TSElGVDtcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0NDQtXHRcdFx0YmJpbyA9IGJ0cmZzX2Jpb19hbGxvYyhCSU9fTUFYX1ZFQ1MsIFJFUV9PUF9SRUFELCBpbm9kZSwgMCxcbmZzL2J0cmZzL2lub2RlLmM6OTQ0NTpcdFx0XHRcdFx0ICAgICAgIGJ0cmZzX2VuY29kZWRfcmVhZF9lbmRpbywgcHJpdik7XG5mcy9idHJmcy9pbm9kZS5jLTk0NDYtXHRcdFx0YmJpby1cdTAwM2ViaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBkaXNrX2J5dGVuciBcdTAwM2VcdTAwM2UgU0VDVE9SX1NISUZUO1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQ2OS1cdFx0XHR3YWl0X2Zvcl9jb21wbGV0aW9uX2lvKFx1MDAyNnN5bmNfcmVhZHMpO1xuZnMvYnRyZnMvaW5vZGUuYzo5NDcwOlx0XHQvKiBTZWUgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvKCkgZm9yIG9yZGVyaW5nLiAqL1xuZnMvYnRyZnMvaW5vZGUuYy05NDcxLVx0XHRyZXR1cm4gYmxrX3N0YXR1c190b19lcnJubyhSRUFEX09OQ0UocHJpdi1cdTAwM2VzdGF0dXMpKTtcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0NzQtXG5mcy9idHJmcy9pbm9kZS5jOjk0NzU6c3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmZzL2J0cmZzL2lub2RlLmMtOTQ3Ni1cdFx0XHRcdCAgIHU2NCBzdGFydCwgdTY0IGxvY2tlbmQsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05NDk4LVxuZnMvYnRyZnMvaW5vZGUuYzo5NDk5Olx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhpbm9kZSwgZGlza19ieXRlbnIsXG5mcy9idHJmcy9pbm9kZS5jLTk1MDAtXHRcdFx0XHRcdFx0ICAgIGRpc2tfaW9fc2l6ZSwgcGFnZXMsIE5VTEwpO1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTUzOC1cbmZzL2J0cmZzL2lub2RlLmM6OTUzOTpzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmZzL2J0cmZzL2lub2RlLmMtOTU0MC1cdFx0XHQgICBzdHJ1Y3QgYnRyZnNfaW9jdGxfZW5jb2RlZF9pb19hcmdzICplbmNvZGVkLFxuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTYyOC1cdFx0ZW0gPSBOVUxMO1xuZnMvYnRyZnMvaW5vZGUuYzo5NjI5Olx0XHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfaW5saW5lKGlvY2IsIGl0ZXIsIHN0YXJ0LCBsb2NrZW5kLFxuZnMvYnRyZnMvaW5vZGUuYy05NjMwLVx0XHRcdFx0XHRcdGNhY2hlZF9zdGF0ZSwgZXh0ZW50X3N0YXJ0LFxuLS1cbmZzL2J0cmZzL2lvY3RsLmM9NDI5OD1zdGF0aWMgaW50IGJ0cmZzX2lvY3RsX2VuY29kZWRfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3AsXG4tLVxuZnMvYnRyZnMvaW9jdGwuYy00MzY3LVxuZnMvYnRyZnMvaW9jdGwuYzo0MzY4Olx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkKFx1MDAyNmtpb2NiLCBcdTAwMjZpdGVyLCBcdTAwMjZhcmdzLCBcdTAwMjZjYWNoZWRfc3RhdGUsXG5mcy9idHJmcy9pb2N0bC5jLTQzNjktXHRcdFx0XHQgXHUwMDI2ZGlza19ieXRlbnIsIFx1MDAyNmRpc2tfaW9fc2l6ZSk7XG4tLVxuZnMvYnRyZnMvaW9jdGwuYy00MzgyLVxuZnMvYnRyZnMvaW9jdGwuYzo0MzgzOlx0XHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcihcdTAwMjZraW9jYiwgXHUwMDI2aXRlciwgc3RhcnQsIGxvY2tlbmQsXG5mcy9idHJmcy9pb2N0bC5jLTQzODQtXHRcdFx0XHRcdFx0IFx1MDAyNmNhY2hlZF9zdGF0ZSwgZGlza19ieXRlbnIsXG4tLVxuZnMvYnRyZnMvaW9jdGwuYz00NTQzPXN0YXRpYyB2b2lkIGJ0cmZzX3VyaW5nX3JlYWRfZmluaXNoZWQoc3RydWN0IGlvX3R3X3JlcSB0d19yZXEsIGlvX3R3X3Rva2VuX3QgdHcpXG4tLVxuZnMvYnRyZnMvaW9jdGwuYy00NTU0LVxuZnMvYnRyZnMvaW9jdGwuYzo0NTU1Olx0LyogVGhlIGlub2RlIGxvY2sgaGFzIGFscmVhZHkgYmVlbiBhY3F1aXJlZCBpbiBidHJmc19lbmNvZGVkX3JlYWQoKS4gKi9cbmZzL2J0cmZzL2lvY3RsLmMtNDU1Ni1cdGJ0cmZzX2xvY2tkZXBfaW5vZGVfYWNxdWlyZShpbm9kZSwgaV9yd3NlbSk7XG4tLVxuZnMvYnRyZnMvaW9jdGwuYz00NjEzPXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuZnMvYnRyZnMvaW9jdGwuYy00NjU2LVxuZnMvYnRyZnMvaW9jdGwuYzo0NjU3Olx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhpbm9kZSwgZGlza19ieXRlbnIsXG5mcy9idHJmcy9pb2N0bC5jLTQ2NTgtXHRcdFx0XHRcdFx0ICAgIGRpc2tfaW9fc2l6ZSwgcGFnZXMsIHByaXYpO1xuLS1cbmZzL2J0cmZzL2lvY3RsLmM9NDY4OT1zdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTQ3ODYtXG5mcy9idHJmcy9pb2N0bC5jOjQ3ODc6XHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWQoXHUwMDI2a2lvY2IsIFx1MDAyNmRhdGEtXHUwMDNlaXRlciwgXHUwMDI2ZGF0YS1cdTAwM2VhcmdzLCBcdTAwMjZjYWNoZWRfc3RhdGUsXG5mcy9idHJmcy9pb2N0bC5jLTQ3ODgtXHRcdFx0XHQgXHUwMDI2ZGlza19ieXRlbnIsIFx1MDAyNmRpc2tfaW9fc2l6ZSk7XG4tLVxuZnMvYnRyZnMvc2VuZC5jPTU1MDA9c3RhdGljIGludCBzZW5kX2VuY29kZWRfZXh0ZW50KHN0cnVjdCBzZW5kX2N0eCAqc2N0eCwgc3RydWN0IGJ0cmZzX3BhdGggKnBhdGgsXG4tLVxuZnMvYnRyZnMvc2VuZC5jLTU1NzAtXHQgKi9cbmZzL2J0cmZzL3NlbmQuYzo1NTcxOlx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhpbm9kZSxcbmZzL2J0cmZzL3NlbmQuYy01NTcyLVx0XHRcdFx0XHRcdCAgICBkaXNrX2J5dGVuciwgZGlza19udW1fYnl0ZXMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzEzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEJ0cmZzIGZvciBGdXp6aW5nIEZvY3VzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gbG9vayBhdCBgYnRyZnNfZW5jb2RlZF9yZWFkYCwgd2hpY2ggaXMgZXhwb3J0ZWQgaW4gYGZzL2J0cmZzL2J0cmZzX2lub2RlLmhgIGFuZCBpcyB1dGlsaXplZCBpbiBgZnMvYnRyZnMvaW9jdGwuY2AuIEJ1dCBob2xkIG9uLCBpdCBpc24mIzM5O3QgZGVjbGFyZWQgc3RhdGljLCBzbyB0aGF0JiMzOTtzIHNvbWV0aGluZyB0byBub3RlIGZvciBsYXRlci4KClRoaW5raW5nIG1vcmUgYnJvYWRseSBhYm91dCBwb3RlbnRpYWwgdGFyZ2V0cywgSSBjb25zaWRlcmVkIGBfX2ltcG9ydF9pb3ZlY2AgZnJvbSBgbGliL2lvdl9pdGVyLmNgLiBIb3dldmVyLCB0aGF0JiMzOTtzIGEgcHJldHR5IGdlbmVyaWMgZnVuY3Rpb24uIFdoaWxlIEkmIzM5O2xsIGtlZXAgaXQgaW4gbWluZCBhcyBhIHBvdGVudGlhbCBwYXRoIGZvciBleHBsb3JhdGlvbiwgaXQgbWlnaHQgbm90IGJlIHRoZSBtb3N0IGVmZmVjdGl2ZSBzeW1ib2wgdG8gKmZvY3VzKiBvdXIgZnV6emluZyBlZmZvcnRzIG9uLiBUaGUgYnRyZnMgaW9fdXJpbmcgY29tbWFuZHMgYXJlIG15IHByaW1hcnkgZ29hbCBoZXJlLCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiB0aGVtLgoKVGhhdCBicmluZ3MgbWUgdG8gYGJ0cmZzX3VyaW5nX2NtZGAsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIHByaW1lIGNhbmRpZGF0ZS4gQW5kIEkmIzM5O2xsIGFkZCBgYnRyZnNfZW5jb2RlZF9yZWFkYCBhbmQgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgIHRvIHRoZSBsaXN0IG9mIGtleSBzeW1ib2xzIGZvciB0aGUgZnV6emVyIHRvIGV4cGxvcmUuCgpOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgdGhlIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHVwIHByb3Blcmx5LiBXZSYjMzk7bGwgbmVlZCBgQ09ORklHX0JUUkZTX0ZTYCwgb2YgY291cnNlLiBJJiMzOTtsbCB0YWtlIGEgbG9vayBhdCBgZnMvYnRyZnMvS2NvbmZpZ2AgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBpb191cmluZy1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gYnRyZnMgdG8gYmUgYXdhcmUgb2YuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW9fdXJpbmcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9idHJmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ5MDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgcmVmbGVjdGluZyB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipJbnZlc3RpZ2F0aW5nIGlvX3VyaW5nIEludGVncmF0aW9uIChvciBMYWNrIFRoZXJlb2YpIHdpdGhpbiB0aGUgQnRyZnMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byB0aGUgQnRyZnMgS2NvbmZpZywgc3BlY2lmaWNhbGx5IGl0cyBpbnRlcmFjdGlvbiB3aXRoIGBpb191cmluZ2AuIFNlZW1zIGxpa2UgdGhlcmUmIzM5O3Mgbm8gZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gZW50cnkgZm9yIGBpb191cmluZ2AgaXRzZWxmIHdpdGhpbiB0aGUgQnRyZnMgc2VjdGlvbi4gVGhhdCYjMzk7cyBhIGJpdCB1bmV4cGVjdGVkOyBvZnRlbiwgd2hlbiBhIHN1YnN5c3RlbSBsZXZlcmFnZXMgYW5vdGhlciwgdGhlcmUmIzM5O3MgYXQgbGVhc3QgYSBmbGFnIHRvIGVuYWJsZSBpdCwgb3IgYSBkZXBlbmRlbmN5IGxpc3RlZC4gT2theSwgc28gbm8gZXhwbGljaXQgYENPTkZJR19CVFJGU19JT19VUklOR2Agb3IgYW55dGhpbmcgbGlrZSB0aGF0LiBUaGF0IG5hcnJvd3MgaXQgZG93bi4gTGV0IG1lIGp1c3QgcXVpY2tseSBzY2FuIHRoZSBLY29uZmlnIGZpbGUgZm9yIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3MsIGV2ZW4gaW5kaXJlY3RseS4gUGVyaGFwcyBpdOKAmXMgYSBkZXBlbmRlbmN5IG9mIHNvbWV0aGluZyBlbHNlLiBJIGFtIGdvaW5nIHRvIHNlZSBpZiBhbnkgZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZXhpc3QgdGhhdCB3b3VsZCBpbmRpcmVjdGx5IHN1Z2dlc3Qgc29tZSBzb3J0IG9mIGBpb191cmluZ2Agc3VwcG9ydCwgZXZlbiBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBtZW50aW9uZWQuIExldCYjMzk7cyBzZWUgd2hhdCB0dXJucyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlRSRlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9idHJmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL0tjb25maWctMi1cbmZzL2J0cmZzL0tjb25maWc6Mzpjb25maWcgQlRSRlNfRlNcbmZzL2J0cmZzL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O0J0cmZzIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2J0cmZzL0tjb25maWctMzgtXG5mcy9idHJmcy9LY29uZmlnOjM5OmNvbmZpZyBCVFJGU19GU19QT1NJWF9BQ0xcbmZzL2J0cmZzL0tjb25maWctNDAtXHRib29sIFwmIzM0O0J0cmZzIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG5mcy9idHJmcy9LY29uZmlnOjQxOlx0ZGVwZW5kcyBvbiBCVFJGU19GU1xuZnMvYnRyZnMvS2NvbmZpZy00Mi1cdHNlbGVjdCBGU19QT1NJWF9BQ0xcbi0tXG5mcy9idHJmcy9LY29uZmlnLTQ4LVxuZnMvYnRyZnMvS2NvbmZpZzo0OTpjb25maWcgQlRSRlNfRlNfUlVOX1NBTklUWV9URVNUU1xuZnMvYnRyZnMvS2NvbmZpZy01MC1cdGJvb2wgXCYjMzQ7QnRyZnMgd2lsbCBydW4gc2FuaXR5IHRlc3RzIHVwb24gbG9hZGluZ1wmIzM0O1xuZnMvYnRyZnMvS2NvbmZpZzo1MTpcdGRlcGVuZHMgb24gQlRSRlNfRlNcbmZzL2J0cmZzL0tjb25maWctNTItXHRoZWxwXG4tLVxuZnMvYnRyZnMvS2NvbmZpZz02MD1jb25maWcgQlRSRlNfREVCVUdcbmZzL2J0cmZzL0tjb25maWctNjEtXHRib29sIFwmIzM0O0J0cmZzIGRlYnVnZ2luZyBzdXBwb3J0XCYjMzQ7XG5mcy9idHJmcy9LY29uZmlnOjYyOlx0ZGVwZW5kcyBvbiBCVFJGU19GU1xuZnMvYnRyZnMvS2NvbmZpZy02My1cdHNlbGVjdCBSRUZfVFJBQ0tFUiBpZiBTVEFDS1RSQUNFX1NVUFBPUlRcbi0tXG5mcy9idHJmcy9LY29uZmlnPTc0PWNvbmZpZyBCVFJGU19BU1NFUlRcbmZzL2J0cmZzL0tjb25maWctNzUtXHRib29sIFwmIzM0O0J0cmZzIGFzc2VydCBzdXBwb3J0XCYjMzQ7XG5mcy9idHJmcy9LY29uZmlnOjc2Olx0ZGVwZW5kcyBvbiBCVFJGU19GU1xuZnMvYnRyZnMvS2NvbmZpZy03Ny1cdGhlbHBcbi0tXG5mcy9idHJmcy9LY29uZmlnPTg1PWNvbmZpZyBCVFJGU19FWFBFUklNRU5UQUxcbmZzL2J0cmZzL0tjb25maWctODYtXHRib29sIFwmIzM0O0J0cmZzIGV4cGVyaW1lbnRhbCBmZWF0dXJlc1wmIzM0O1xuZnMvYnRyZnMvS2NvbmZpZzo4NzpcdGRlcGVuZHMgb24gQlRSRlNfRlNcbmZzL2J0cmZzL0tjb25maWctODgtXHRkZWZhdWx0IG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3MTAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBUaG91Z2h0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZS4gVGhlIGJpZyBvbmUgZm9yIEJ0cmZzIGlzLCBvYnZpb3VzbHksIGBDT05GSUdfQlRSRlNfRlNgLiBUaGF0JiMzOTtzIHRoZSBjb3JlLiBCdXQgSSYjMzk7bSBhbHNvIHRoaW5raW5nIGFib3V0IGlvX3VyaW5nLCBzaW5jZSBpdCBzZWVtcyB0byBiZSByZWxldmFudC4gSG1tLCByaWdodCwgdGhhdCYjMzk7cyBlbmFibGVkIGJ5IGBDT05GSUdfSU9fVVJJTkdgLgoKTm93LCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBgQ09ORklHX0lPX1VSSU5HYCBpcyAqcmVxdWlyZWQqIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgY2xlYXJseS4gT2theSwgeWVzLiBDbGVhcmx5LCB0byBhY3R1YWxseSAqdXNlKiBpb191cmluZyBjb21tYW5kcyB3aXRoIHRoZSBmaWxlc3lzdGVtLCBgQ09ORklHX0lPX1VSSU5HYCBpdHNlbGYgaXMgYSBwcmVyZXF1aXNpdGUuCgpTbywgbGV0JiMzOTtzIG5haWwgdGhpcyBkb3duLiBJdCBzZWVtcyBJJiMzOTtsbCBuZWVkIGJvdGggYEJUUkZTX0ZTYCBhbmQgYElPX1VSSU5HYCBlbmFibGVkIHRvIG1ha2UgdGhlIGFwcHJvcHJpYXRlIGNhbGxzIHRvIHRoZSBpb191cmluZyBzdWJzeXN0ZW0gd2l0aGluIEJ0cmZzLgoKQWxyaWdodCwgYmVmb3JlIEkgY29tcGxldGVseSBjb21taXQgdG8gdGhhdCwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZyBieSBsb29raW5nIHNwZWNpZmljYWxseSBhdCBgYnRyZnNfdXJpbmdfY21kYCB3aXRoaW4gYGZzL2J0cmZzL2lvY3RsLmNgLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIG51YW5jZS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGlvX3VyaW5nIGludGVncmF0aW9uIGhhcHBlbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0cmZzX3VyaW5nX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2lvY3RsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvaW9jdGwuYz00ODM4PXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTQ5NTgtXG5mcy9idHJmcy9pb2N0bC5jOjQ5NTk6aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbmZzL2J0cmZzL2lvY3RsLmMtNDk2MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MjQ0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIHRoZSBDb25kaXRpb25hbCBDb21waWxhdGlvbiBvZiBgYnRyZnNfdXJpbmdfY21kYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gdGhlIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBidHJmc191cmluZ19jbWRgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIGZ1bmN0aW9uIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQ/IFNwZWNpZmljYWxseSwgaXMgaXQgd3JhcHBlZCBpbiBhbnkgYCNpZmRlZmAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXM/IEkgbmVlZCB0byBrbm93IGlmIGl0JiMzOTtzIG9ubHkgYWN0aXZlIHVuZGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMgb3Iga2VybmVsIGJ1aWxkcy4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwb3J0YWJpbGl0eSBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgQnRyZnMgZmlsZXN5c3RlbS4gSXQgY291bGQgYmUgdGllZCB0byBhIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9uLCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBmbGFnLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseS4gSWYgaXQgKmlzKiBjb25kaXRpb25hbCwgZmlndXJpbmcgb3V0IHRoZSBzcGVjaWZpYyBjb25kaXRpb24gaXMgdGhlIG5leHQgb3JkZXIgb2YgYnVzaW5lc3MuIEtub3dpbmcgdGhlIGNvbmRpdGlvbnMgb2YgaXRzIGV4aXN0ZW5jZSBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcGxhY2UgaW4gdGhlIEJ0cmZzIGVjb3N5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2lmZGVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvaW9jdGwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9idHJmcy9pb2N0bC5jLTYyLVxuZnMvYnRyZnMvaW9jdGwuYzo2MzojaWZkZWYgQ09ORklHXzY0QklUXG5mcy9idHJmcy9pb2N0bC5jLTY0LS8qIElmIHdlIGhhdmUgYSAzMi1iaXQgdXNlcnNwYWNlIGFuZCA2NC1iaXQga2VybmVsLCB0aGVuIHRoZSBVQVBJXG4tLVxuZnMvYnRyZnMvaW9jdGwuYz0xOTU3PXN0YXRpYyBpbnQgX2J0cmZzX2lvY3RsX2dldF9zdWJ2b2xfaW5mbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtMjA2MC1cbmZzL2J0cmZzL2lvY3RsLmM6MjA2MTojaWZkZWYgQ09ORklHXzY0QklUXG5mcy9idHJmcy9pb2N0bC5jLTIwNjItc3RhdGljIGludCBidHJmc19pb2N0bF9nZXRfc3Vidm9sX2luZm9fMzIoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuZnMvYnRyZnMvaW9jdGwuYz0zODU0PXN0YXRpYyBsb25nIF9idHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtMzk2MS1cbmZzL2J0cmZzL2lvY3RsLmM6Mzk2MjojaWZkZWYgQ09ORklHXzY0QklUXG5mcy9idHJmcy9pb2N0bC5jLTM5NjMtc3RhdGljIGxvbmcgYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbF8zMihzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9idHJmcy9pb2N0bC5jPTU0ODI9bG9uZyBidHJmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50XG4tLVxuZnMvYnRyZnMvaW9jdGwuYy01NTc4LVx0XHRyZXR1cm4gYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbChmaWxlLCBhcmdwKTtcbmZzL2J0cmZzL2lvY3RsLmM6NTU3OTojaWZkZWYgQ09ORklHXzY0QklUXG5mcy9idHJmcy9pb2N0bC5jLTU1ODAtXHRjYXNlIEJUUkZTX0lPQ19TRVRfUkVDRUlWRURfU1VCVk9MXzMyOlxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtNTYxNC1cdFx0cmV0dXJuIGJ0cmZzX2lvY3RsX2dldF9zdWJ2b2xfaW5mbyhpbm9kZSwgYXJncCk7XG5mcy9idHJmcy9pb2N0bC5jOjU2MTU6I2lmZGVmIENPTkZJR182NEJJVFxuZnMvYnRyZnMvaW9jdGwuYy01NjE2LVx0Y2FzZSBCVFJGU19JT0NfR0VUX1NVQlZPTF9JTkZPXzMyOlxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtNTY0OS1cbmZzL2J0cmZzL2lvY3RsLmM6NTY1MDojaWZkZWYgQ09ORklHX0NPTVBBVFxuZnMvYnRyZnMvaW9jdGwuYy01NjUxLWxvbmcgYnRyZnNfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcwOTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJ0cmZzIElPX1VSaW5nIENvbmZpZ3VyYXRpb24gYW5kIEtleSBTeW1ib2xzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIHRoZXJlJiMzOTtzIG5vIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGd1YXJkLCBgI2lmZGVmIENPTkZJR19JT19VUklOR2AsIHN1cnJvdW5kaW5nIGBidHJmc191cmluZ19jbWRgLiBUaGlzIG1lYW5zIHRoYXQgaWYgQlRSRlMgaXMgZW5hYmxlZCwgdGhlIGNvZGUgZm9yIGBidHJmc191cmluZ19jbWRgICp3aWxsKiBiZSBjb21waWxlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGlvX3VyaW5nIGlzLiBIb3dldmVyLCB0byAqYWN0dWFsbHkqIGhhdmUgaXQgZnVuY3Rpb24sIHdlIGFic29sdXRlbHkgbmVlZCBgQ09ORklHX0lPX1VSSU5HYCBlbmFibGVkIGluIHRoZSBrZXJuZWwgdG8gYWxsb3cgaW9fdXJpbmcgdG8gY2FsbCBpdC4gU28sIGVuYWJsaW5nIGJvdGggYEJUUkZTX0ZTYCBhbmQgYElPX1VSSU5HYCBpcyB0aGUgcmlnaHQgbW92ZSBmb3IgdXNpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LgoKTm93LCBmb3IgdGhlIGZvY3VzIHN5bWJvbHMuIEkgbmVlZCB0byBpZGVudGlmeSB3aGF0JiMzOTtzIGNydWNpYWwuIEkmIzM5O3ZlIGdvdDogYGJ0cmZzX3VyaW5nX2NtZGAsIGBidHJmc19lbmNvZGVkX3JlYWRgLCBhbmQgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgLiBJIHdhcyBpbml0aWFsbHkgY29uc2lkZXJpbmcgYF9faW1wb3J0X2lvdmVjYCwgYnV0LCBvbiBzZWNvbmQgdGhvdWdodCwgaXQmIzM5O3MgcHJvYmFibHkgdG9vIGdlbmVyaWMgYW5kIGEgaG90LXBhdGggZnVuY3Rpb24gdXNlZCB3aWRlbHkuIFdlIHdhbnQgdG8gYXZvaWQgYmlhc2luZyB0aGUgdGVzdCBkaXN0cmlidXRpb24uCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgaG90LXBhdGggc3RhdHVzIGZvciBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgYW5kIGBidHJmc19lbmNvZGVkX3JlYWRgLiBUaGV5JiMzOTtyZSBzcGVjaWZpYyB0byAmIzM0O2VuY29kZWQgcmVhZHMmIzM0Oywgd2hpY2ggaXMgYSByZWxhdGl2ZWx5IHNwZWNpYWxpemVkIGZlYXR1cmUuIFRoaXMgaW5jbHVkZXMgdGhpbmdzIGxpa2UgYnRyZnMgc2VuZC9yZWNlaXZlIG9yIGNlcnRhaW4gaW9jdGxzLiBUaGV5JiMzOTtyZSBub3QgcGFydCBvZiB0aGUgc3RhbmRhcmQgcmVhZCBwYXRoLCB3aGljaCBpcyBnb29kLiBgYnRyZnNfdXJpbmdfY21kYCBpdHNlbGYgaXMgdGhlIGlvX3VyaW5nIGVudHJ5IHBvaW50IGZvciBidHJmcy4gUmlnaHQgbm93LCBpdCBoYW5kbGVzIGVuY29kZWQgcmVhZC93cml0ZSBvcGVyYXRpb25zLiBTbywgaXQgaXMgbm90IGEgZ2VuZXJpYyBob3QgcGF0aCBlaXRoZXIuCgpUaGVyZWZvcmUsIGFmdGVyIHRoaXMgcmV2aWV3LCBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgcmVtYWluczoKLSBgYnRyZnNfdXJpbmdfY21kYAotIGBidHJmc19lbmNvZGVkX3JlYWRgCi0gYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgCgpOZXh0IHN0ZXAsIGNoZWNrIGlmIGBidHJmc19lbmNvZGVkX3JlYWRgIGlzIGV4cG9ydGVkIG9yIGp1c3QgZ2xvYmFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwOTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmJ0cmZzX2VuY29kZWRfcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2J0cmZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTgxCgkJCQkJCQlvdXRwdXQ6IDEyNQoJCQkJCQkJdGhvdWdodHM6IDg5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIGJ0cmZzIGlvX3VyaW5nIFRhcmdldHMgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZyB3aXRoIHN5emthbGxlci4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIGdsb2JhbCB3aXRoaW4gYnRyZnMsIHdoaWNoIGlzIGZpbmUsIGFzIHN5emthbGxlciBjYW4gdGFyZ2V0IGl0IGdpdmVuIHRoZSBzeW1ib2wgbmFtZS4KCkluaXRpYWxseSwgSSBpZGVudGlmaWVkIGBidHJmc191cmluZ19jbWRgIGFzIGEgcG90ZW50aWFsIGNhbmRpZGF0ZSwgYXMgaXQgaXMgZ2xvYmFsLiBUaGVuIEkgY2hlY2tlZCBgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkYCBhbmQgYGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGVgLCBidXQgdGhleSYjMzk7cmUgc3RhdGljIGFuZCBsaWtlbHkgdG8gYmUgaW5saW5lZCwgZWxpbWluYXRpbmcgdGhlbSBhcyBnb29kIGNob2ljZXMuIFRoZSBwcm9tcHQgZG9lcyBzYXkgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBTbyBgYnRyZnNfdXJpbmdfY21kYCBzZWVtcyBsaWtlIHRoZSBpbml0aWFsIHJpZ2h0IGNob2ljZS4KCkkmIzM5O2xsIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEkgc2VlIGBidHJmc191cmluZ19yZWFkX2ZpbmlzaGVkYCBhbmQgYGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50YCwgd2hpY2ggYXJlIGFsc28gc3RhdGljLiBUaGVuIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGBidHJmc191cmluZ19lbmNvZGVkX3JlYWRgLCBhbmQgYGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGVgLiBMYXN0bHksIGBfX2ltcG9ydF9pb3ZlY2Agd2hpY2ggaXMgZXhwb3J0ZWQsIGJ1dCBpcyBhIGdlbmVyaWMgaG90LXBhdGguCgpTbywgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0IHN5bWJvbHMgYXJlIGltcGFjdGVkLiBCYXNlZCBvbiBteSByZXZpZXcsIHNvIGZhciBJJiMzOTt2ZSBub3RlZDoKKiAgIGBidHJmc191cmluZ19jbWRgCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIG1vZGlmaWNhdGlvbnMgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGlzbiYjMzk7dCBtb3JlIHRvIGNvbnNpZGVyLgoKSSBzZWUgdGhhdCBgYnRyZnNfZW5jb2RlZF9yZWFkYCBpc24mIzM5O3QgbW9kaWZpZWQuIE9rLiBCdXQgd2hhdCBhYm91dCBjYWxsZXJzPyBMZXQmIzM5O3MgY2hlY2sgdGhlIGRpZmYgYWdhaW4uIEkgc2VlIG5vdyB0aGF0IHRoZSBkaWZmIG1vZGlmaWVzOgoKKiAgIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzYAoqICAgYGJ0cmZzX3VyaW5nX3JlYWRfZmluaXNoZWRgCiogICBgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRgCiogICBgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkYAoqICAgYGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGVgCiogICBgX19pbXBvcnRfaW92ZWNgCgpPa2F5LCBnb29kLiBTbyBgYnRyZnNfZW5jb2RlZF9yZWFkYCAqaXMqIG5vdCBtb2RpZmllZC4gT25seSB0aGUgY2FsbGVycy4gVGhlcmVmb3JlLCBgYnRyZnNfZW5jb2RlZF9yZWFkYCBpc24mIzM5O3QgaW4gc2NvcGUuCgpOb3csIGxldCBtZSBjaGVjayB0aGUgZGlmZiBmb3IgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgIHRvIGNvbmZpcm0uIFllcCwgdGhlIGNvZGUgbW9kaWZpZXMgdGhlIGNvbXBsZXRpb24gbG9naWMsIHNvIGl0IGlzIGRlZmluaXRlbHkgbW9kaWZpZWQgYW5kIGEgZm9jdXMgc3ltYm9sLgoKVGhlcmVmb3JlLCB0aGUgZmluYWwgZm9jdXMgc3ltYm9scyBhcmU6CgoqICAgYGJ0cmZzX3VyaW5nX2NtZGAKKiAgIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzYAoKR2l2ZW4gd2hhdCBJJiMzOTttIHNlZWluZywgdGhpcyBpcyBmdW5jdGlvbmFsLCBhbmQgdGhlIGZpeGVzIGNvdmVyIG1lbW9yeSBsZWFrcywgbG9ja2luZyBpc3N1ZXMsIGFuZCBpb191cmluZyByZXRyeSBsb2dpYyB3aXRoaW4gYnRyZnMuIFRoZXNlIG1vZGlmaWNhdGlvbnMgYXJlIGhpdHRpbmcgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHdpdGhpbiB0aGUgYnRyZnMgZmlsZXN5c3RlbSBhbmQgaXRzIGludGVncmF0aW9uIHdpdGggaW9fdXJpbmcuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBmdXp6aW5nLiBUaGUgcmVxdWlyZWQgY29uZmlncyB3b3VsZCBiZSBgQlRSRlNfRlNgIGFuZCBgSU9fVVJJTkdgLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCVFJGU19GUyYjMzQ7LAogICAgJiMzNDtJT19VUklORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2J0cmZzX3VyaW5nX2NtZCYjMzQ7LAogICAgJiMzNDtidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG1lbW9yeSBsZWFrcywgbG9ja2luZyBpc3N1ZXMsIGFuZCBpb191cmluZyByZXRyeSBsb2dpYyBpbiBidHJmcyBpb191cmluZyBlbmNvZGVkIHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4gSXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGluIHRoZSBidHJmcyBmaWxlc3lzdGVtIGFuZCBpb191cmluZyBpbnRlZ3JhdGlvbiwgd2hpY2ggaXMgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlRSRlNfRlMmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidHJmc191cmluZ19jbWQmIzM0OywKICAgICYjMzQ7YnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtZW1vcnkgbGVha3MsIGxvY2tpbmcgaXNzdWVzLCBhbmQgaW9fdXJpbmcgcmV0cnkgbG9naWMgaW4gYnRyZnMgaW9fdXJpbmcgZW5jb2RlZCByZWFkL3dyaXRlIG9wZXJhdGlvbnMuIEl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgYnRyZnMgZmlsZXN5c3RlbSBhbmQgaW9fdXJpbmcgaW50ZWdyYXRpb24sIHdoaWNoIGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NjowNS40NzEzNjI3MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDA1Mjk3NTQxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCVFJGU19GU1wiLFxuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidHJmc191cmluZ19jbWRcIixcbiAgICBcImJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBtZW1vcnkgbGVha3MsIGxvY2tpbmcgaXNzdWVzLCBhbmQgaW9fdXJpbmcgcmV0cnkgbG9naWMgaW4gYnRyZnMgaW9fdXJpbmcgZW5jb2RlZCByZWFkL3dyaXRlIG9wZXJhdGlvbnMuIEl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgYnRyZnMgZmlsZXN5c3RlbSBhbmQgaW9fdXJpbmcgaW50ZWdyYXRpb24sIHdoaWNoIGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjA1LjQ3MTM3MDIzN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NDA5NzkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQyNjUyZjNiYzRiZGNlY2FkZDAyMzk0NjA0ZjZhNTRiYzA0NGMxZmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAwOTo0NjowMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9idHJmcy9pbm9kZS5jIGIvZnMvYnRyZnMvaW5vZGUuY1xcbmluZGV4IGI0NDZjMzAxNGIyNDAuLjhlM2NlZTM4NDVlNmYgMTAwNjQ0XFxuLS0tIGEvZnMvYnRyZnMvaW5vZGUuY1xcbisrKyBiL2ZzL2J0cmZzL2lub2RlLmNcXG5AQCAtOTQxMSw3ICs5NDExLDYgQEAgaW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSxcXG4gXFx0c3RydWN0IGNvbXBsZXRpb24gc3luY19yZWFkcztcXG4gXFx0dW5zaWduZWQgbG9uZyBpID0gMDtcXG4gXFx0c3RydWN0IGJ0cmZzX2JpbyAqYmJpbztcXG4tXFx0aW50IHJldDtcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIEZhc3QgcGF0aCBmb3Igc3luY2hyb25vdXMgcmVhZHMgd2hpY2ggY29tcGxldGVzIGluIHRoaXMgY2FsbCwgaW9fdXJpbmdcXG5AQCAtOTQ1OCwxMCArOTQ1NywxMCBAQCBpbnQgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLFxcbiBcXG4gXFx0aWYgKHVyaW5nX2N0eCkge1xcbiBcXHRcXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZwcml2LVxcdTAwM2VwZW5kaW5nX3JlZnMpKSB7XFxuLVxcdFxcdFxcdHJldCA9IGJsa19zdGF0dXNfdG9fZXJybm8oUkVBRF9PTkNFKHByaXYtXFx1MDAzZXN0YXR1cykpO1xcbi1cXHRcXHRcXHRidHJmc191cmluZ19yZWFkX2V4dGVudF9lbmRpbyh1cmluZ19jdHgsIHJldCk7XFxuK1xcdFxcdFxcdGludCBlcnIgPSBibGtfc3RhdHVzX3RvX2Vycm5vKFJFQURfT05DRShwcml2LVxcdTAwM2VzdGF0dXMpKTtcXG4rXFxuK1xcdFxcdFxcdGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50X2VuZGlvKHVyaW5nX2N0eCwgZXJyKTtcXG4gXFx0XFx0XFx0a2ZyZWUocHJpdik7XFxuLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHJldHVybiAtRUlPQ0JRVUVVRUQ7XFxuZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lvY3RsLmMgYi9mcy9idHJmcy9pb2N0bC5jXFxuaW5kZXggYmFhNjQ1ZTk4ODEyNi4uMTA2NTQxNmJjYjFkZCAxMDA2NDRcXG4tLS0gYS9mcy9idHJmcy9pb2N0bC5jXFxuKysrIGIvZnMvYnRyZnMvaW9jdGwuY1xcbkBAIC00NTUyLDcgKzQ1NTIsNyBAQCBzdGF0aWMgdm9pZCBidHJmc191cmluZ19yZWFkX2ZpbmlzaGVkKHN0cnVjdCBpb190d19yZXEgdHdfcmVxLCBpb190d190b2tlbl90IHR3KVxcbiBcXHRzaXplX3QgcGFnZV9vZmZzZXQ7XFxuIFxcdHNzaXplX3QgcmV0O1xcbiBcXG4tXFx0LyogVGhlIGlub2RlIGxvY2sgaGFzIGFscmVhZHkgYmVlbiBhY3F1aXJlZCBpbiBidHJmc191cmluZ19yZWFkX2V4dGVudC4gICovXFxuK1xcdC8qIFRoZSBpbm9kZSBsb2NrIGhhcyBhbHJlYWR5IGJlZW4gYWNxdWlyZWQgaW4gYnRyZnNfZW5jb2RlZF9yZWFkKCkuICovXFxuIFxcdGJ0cmZzX2xvY2tkZXBfaW5vZGVfYWNxdWlyZShpbm9kZSwgaV9yd3NlbSk7XFxuIFxcbiBcXHRpZiAocHJpdi1cXHUwMDNlZXJyKSB7XFxuQEAgLTQ2MTgsNyArNDYxOCw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpb3ZlYyAqaW92LCBzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQpXFxuIHtcXG4gXFx0c3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSA9IEJUUkZTX0koZmlsZV9pbm9kZShpb2NiLVxcdTAwM2VraV9maWxwKSk7XFxuLVxcdHN0cnVjdCBleHRlbnRfaW9fdHJlZSAqaW9fdHJlZSA9IFxcdTAwMjZpbm9kZS1cXHUwMDNlaW9fdHJlZTtcXG4gXFx0c3RydWN0IHBhZ2UgKipwYWdlcyA9IE5VTEw7XFxuIFxcdHN0cnVjdCBidHJmc191cmluZ19wcml2ICpwcml2ID0gTlVMTDtcXG4gXFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcztcXG5AQCAtNDYyNiw4ICs0NjI1LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuIFxcbiBcXHRucl9wYWdlcyA9IERJVl9ST1VORF9VUChkaXNrX2lvX3NpemUsIFBBR0VfU0laRSk7XFxuIFxcdHBhZ2VzID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIG5yX3BhZ2VzLCBHRlBfTk9GUyk7XFxuLVxcdGlmICghcGFnZXMpXFxuLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRpZiAoIXBhZ2VzKSB7XFxuK1xcdFxcdHJldCA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gb3V0X2ZhaWw7XFxuK1xcdH1cXG4gXFx0cmV0ID0gYnRyZnNfYWxsb2NfcGFnZV9hcnJheShucl9wYWdlcywgcGFnZXMsIEdGUF9OT0ZTKTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbkBAIC00Njc0LDEyICs0Njc1LDEyIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuIFxcdHJldHVybiAtRUlPQ0JRVUVVRUQ7XFxuIFxcbiBvdXRfZmFpbDpcXG4tXFx0YnRyZnNfdW5sb2NrX2V4dGVudChpb190cmVlLCBzdGFydCwgbG9ja2VuZCwgXFx1MDAyNmNhY2hlZF9zdGF0ZSk7XFxuLVxcdGJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgQlRSRlNfSUxPQ0tfU0hBUkVEKTtcXG4gXFx0a2ZyZWUocHJpdik7XFxuLVxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgbnJfcGFnZXM7IGkrKykge1xcbi1cXHRcXHRpZiAocGFnZXNbaV0pXFxuLVxcdFxcdFxcdF9fZnJlZV9wYWdlKHBhZ2VzW2ldKTtcXG4rXFx0aWYgKHBhZ2VzKSB7XFxuK1xcdFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgbnJfcGFnZXM7IGkrKykge1xcbitcXHRcXHRcXHRpZiAocGFnZXNbaV0pXFxuK1xcdFxcdFxcdFxcdF9fZnJlZV9wYWdlKHBhZ2VzW2ldKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcdGtmcmVlKHBhZ2VzKTtcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtNDcwMyw5ICs0NzA0LDYgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3JlYWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWVcXG4gXFx0c3RydWN0IGlvX2J0cmZzX2NtZCAqYmMgPSBpb191cmluZ19jbWRfdG9fcGR1KGNtZCwgc3RydWN0IGlvX2J0cmZzX2NtZCk7XFxuIFxcdHN0cnVjdCBidHJmc191cmluZ19lbmNvZGVkX2RhdGEgKmRhdGEgPSBOVUxMO1xcbiBcXG4tXFx0aWYgKGNtZC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJT1JJTkdfVVJJTkdfQ01EX1JFSVNTVUUpXFxuLVxcdFxcdGRhdGEgPSBiYy1cXHUwMDNlZGF0YTtcXG4tXFxuIFxcdGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkge1xcbiBcXHRcXHRyZXQgPSAtRVBFUk07XFxuIFxcdFxcdGdvdG8gb3V0X2FjY3Q7XFxuQEAgLTQ3NTksOSArNDc1NywxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRkYXRhLVxcdTAwM2Vpb3YgPSBkYXRhLVxcdTAwM2Vpb3ZzdGFjaztcXG4tXFx0XFx0cmV0ID0gaW1wb3J0X2lvdmVjKElURVJfREVTVCwgZGF0YS1cXHUwMDNlYXJncy5pb3YsIGRhdGEtXFx1MDAzZWFyZ3MuaW92Y250LFxcbi1cXHRcXHRcXHRcXHQgICBBUlJBWV9TSVpFKGRhdGEtXFx1MDAzZWlvdnN0YWNrKSwgXFx1MDAyNmRhdGEtXFx1MDAzZWlvdixcXG4tXFx0XFx0XFx0XFx0ICAgXFx1MDAyNmRhdGEtXFx1MDAzZWl0ZXIpO1xcbitcXHRcXHRyZXQgPSBfX2ltcG9ydF9pb3ZlYyhJVEVSX0RFU1QsIGRhdGEtXFx1MDAzZWFyZ3MuaW92LCBkYXRhLVxcdTAwM2VhcmdzLmlvdmNudCxcXG4rXFx0XFx0XFx0XFx0ICAgICBBUlJBWV9TSVpFKGRhdGEtXFx1MDAzZWlvdnN0YWNrKSwgXFx1MDAyNmRhdGEtXFx1MDAzZWlvdixcXG4rXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2ZGF0YS1cXHUwMDNlaXRlcixcXG4rXFx0XFx0XFx0XFx0ICAgICAhIShpc3N1ZV9mbGFncyBcXHUwMDI2IElPX1VSSU5HX0ZfQ09NUEFUKSk7XFxuIFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRcXHRnb3RvIG91dF9hY2N0O1xcbiBcXG5AQCAtNDc4Nyw4ICs0Nzg2LDYgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3JlYWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWVcXG4gXFxuIFxcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZChcXHUwMDI2a2lvY2IsIFxcdTAwMjZkYXRhLVxcdTAwM2VpdGVyLCBcXHUwMDI2ZGF0YS1cXHUwMDNlYXJncywgXFx1MDAyNmNhY2hlZF9zdGF0ZSxcXG4gXFx0XFx0XFx0XFx0IFxcdTAwMjZkaXNrX2J5dGVuciwgXFx1MDAyNmRpc2tfaW9fc2l6ZSk7XFxuLVxcdGlmIChyZXQgPT0gLUVBR0FJTilcXG4tXFx0XFx0Z290byBvdXRfYWNjdDtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FSU9DQlFVRVVFRClcXG4gXFx0XFx0Z290byBvdXRfZnJlZTtcXG4gXFxuQEAgLTQ4MTYsOCArNDgxMywxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBjYWNoZWRfc3RhdGUsIGRpc2tfYnl0ZW5yLCBkaXNrX2lvX3NpemUsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgIGNvdW50LCBkYXRhLVxcdTAwM2VhcmdzLmNvbXByZXNzaW9uLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBkYXRhLVxcdTAwM2Vpb3YsIGNtZCk7XFxuLVxcbi1cXHRcXHRnb3RvIG91dF9hY2N0O1xcbitcXHRcXHRpZiAocmV0ID09IC1FSU9DQlFVRVVFRClcXG4rXFx0XFx0XFx0Z290byBvdXRfYWNjdDtcXG4rXFx0XFx0YnRyZnNfdW5sb2NrX2V4dGVudChpb190cmVlLCBzdGFydCwgbG9ja2VuZCwgXFx1MDAyNmNhY2hlZF9zdGF0ZSk7XFxuK1xcdFxcdGJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgQlRSRlNfSUxPQ0tfU0hBUkVEKTtcXG4gXFx0fVxcbiBcXG4gb3V0X2ZyZWU6XFxuQEAgLTQ4MjgsOCArNDgyNywxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxcbiBcXHRcXHRhZGRfcmNoYXIoY3VycmVudCwgcmV0KTtcXG4gXFx0aW5jX3N5c2NyKGN1cnJlbnQpO1xcbiBcXG4tXFx0aWYgKHJldCAhPSAtRUlPQ0JRVUVVRUQgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FQUdBSU4pXFxuK1xcdGlmIChyZXQgIT0gLUVJT0NCUVVFVUVEKSB7XFxuIFxcdFxcdGtmcmVlKGRhdGEpO1xcbitcXHRcXHRiYy1cXHUwMDNlZGF0YSA9IE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtNDg0MSwxMiArNDg0Miw4IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1XFxuIFxcdHN0cnVjdCBraW9jYiBraW9jYjtcXG4gXFx0c3NpemVfdCByZXQ7XFxuIFxcdHZvaWQgX191c2VyICpzcWVfYWRkcjtcXG4tXFx0c3RydWN0IGlvX2J0cmZzX2NtZCAqYmMgPSBpb191cmluZ19jbWRfdG9fcGR1KGNtZCwgc3RydWN0IGlvX2J0cmZzX2NtZCk7XFxuIFxcdHN0cnVjdCBidHJmc191cmluZ19lbmNvZGVkX2RhdGEgKmRhdGEgPSBOVUxMO1xcbiBcXG4tXFx0aWYgKGNtZC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJT1JJTkdfVVJJTkdfQ01EX1JFSVNTVUUpXFxuLVxcdFxcdGRhdGEgPSBiYy1cXHUwMDNlZGF0YTtcXG4tXFxuIFxcdGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkge1xcbiBcXHRcXHRyZXQgPSAtRVBFUk07XFxuIFxcdFxcdGdvdG8gb3V0X2FjY3Q7XFxuQEAgLTQ4NTgsNiArNDg1NSwxMSBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxcbiBcXHRcXHRnb3RvIG91dF9hY2N0O1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoaXNzdWVfZmxhZ3MgXFx1MDAyNiBJT19VUklOR19GX05PTkJMT0NLKSB7XFxuK1xcdFxcdHJldCA9IC1FQUdBSU47XFxuK1xcdFxcdGdvdG8gb3V0X2FjY3Q7XFxuK1xcdH1cXG4rXFxuIFxcdGlmICghZGF0YSkge1xcbiBcXHRcXHRkYXRhID0ga3phbGxvY19vYmooKmRhdGEsIEdGUF9OT0ZTKTtcXG4gXFx0XFx0aWYgKCFkYXRhKSB7XFxuQEAgLTQ4NjUsOCArNDg2Nyw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1XFxuIFxcdFxcdFxcdGdvdG8gb3V0X2FjY3Q7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdGJjLVxcdTAwM2VkYXRhID0gZGF0YTtcXG4tXFxuIFxcdFxcdGlmIChpc3N1ZV9mbGFncyBcXHUwMDI2IElPX1VSSU5HX0ZfQ09NUEFUKSB7XFxuICNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQ09NUEFUKVxcbiBcXHRcXHRcXHRzdHJ1Y3QgYnRyZnNfaW9jdGxfZW5jb2RlZF9pb19hcmdzXzMyIGFyZ3MzMjtcXG5AQCAtNDkxNCw5ICs0OTE0LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1XFxuIFxcdFxcdFxcdGdvdG8gb3V0X2FjY3Q7XFxuIFxcbiBcXHRcXHRkYXRhLVxcdTAwM2Vpb3YgPSBkYXRhLVxcdTAwM2Vpb3ZzdGFjaztcXG4tXFx0XFx0cmV0ID0gaW1wb3J0X2lvdmVjKElURVJfU09VUkNFLCBkYXRhLVxcdTAwM2VhcmdzLmlvdiwgZGF0YS1cXHUwMDNlYXJncy5pb3ZjbnQsXFxuLVxcdFxcdFxcdFxcdCAgIEFSUkFZX1NJWkUoZGF0YS1cXHUwMDNlaW92c3RhY2spLCBcXHUwMDI2ZGF0YS1cXHUwMDNlaW92LFxcbi1cXHRcXHRcXHRcXHQgICBcXHUwMDI2ZGF0YS1cXHUwMDNlaXRlcik7XFxuK1xcdFxcdHJldCA9IF9faW1wb3J0X2lvdmVjKElURVJfU09VUkNFLCBkYXRhLVxcdTAwM2VhcmdzLmlvdiwgZGF0YS1cXHUwMDNlYXJncy5pb3ZjbnQsXFxuK1xcdFxcdFxcdFxcdCAgICAgQVJSQVlfU0laRShkYXRhLVxcdTAwM2Vpb3ZzdGFjayksIFxcdTAwMjZkYXRhLVxcdTAwM2Vpb3YsXFxuK1xcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmRhdGEtXFx1MDAzZWl0ZXIsXFxuK1xcdFxcdFxcdFxcdCAgICAgISEoaXNzdWVfZmxhZ3MgXFx1MDAyNiBJT19VUklOR19GX0NPTVBBVCkpO1xcbiBcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0Z290byBvdXRfYWNjdDtcXG4gXFxuQEAgLTQ5MjYsMTEgKzQ5MjcsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChpc3N1ZV9mbGFncyBcXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spIHtcXG4tXFx0XFx0cmV0ID0gLUVBR0FJTjtcXG4tXFx0XFx0Z290byBvdXRfYWNjdDtcXG4tXFx0fVxcbi1cXG4gXFx0cG9zID0gZGF0YS1cXHUwMDNlYXJncy5vZmZzZXQ7XFxuIFxcdHJldCA9IHJ3X3ZlcmlmeV9hcmVhKFdSSVRFLCBmaWxlLCBcXHUwMDI2cG9zLCBkYXRhLVxcdTAwM2VhcmdzLmxlbik7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbkBAIC00OTU2LDggKzQ5NTIsNyBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxcbiBcXHRcXHRhZGRfd2NoYXIoY3VycmVudCwgcmV0KTtcXG4gXFx0aW5jX3N5c2N3KGN1cnJlbnQpO1xcbiBcXG4tXFx0aWYgKHJldCAhPSAtRUFHQUlOKVxcbi1cXHRcXHRrZnJlZShkYXRhKTtcXG4rXFx0a2ZyZWUoZGF0YSk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2xpYi9pb3ZfaXRlci5jIGIvbGliL2lvdl9pdGVyLmNcXG5pbmRleCBjMjQ4NDU1MWE0ZTg2Li45YzIxNThkNWNjZGQzIDEwMDY0NFxcbi0tLSBhL2xpYi9pb3ZfaXRlci5jXFxuKysrIGIvbGliL2lvdl9pdGVyLmNcXG5AQCAtMTQxMCw2ICsxNDEwLDcgQEAgc3NpemVfdCBfX2ltcG9ydF9pb3ZlYyhpbnQgdHlwZSwgY29uc3Qgc3RydWN0IGlvdmVjIF9fdXNlciAqdXZlYyxcXG4gXFx0XFx0KmlvdnAgPSBpb3Y7XFxuIFxcdHJldHVybiB0b3RhbF9sZW47XFxuIH1cXG4rRVhQT1JUX1NZTUJPTF9HUEwoX19pbXBvcnRfaW92ZWMpO1xcbiBcXG4gLyoqXFxuICAqIGltcG9ydF9pb3ZlYygpIC0gQ29weSBhbiBhcnJheSBvZiBcXHUwMDI2c3RydWN0IGlvdmVjIGZyb20gdXNlcnNwYWNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjA2LjkzNjAyOTE4NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc4NTg4MzAwMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJUUkZTX0ZTXCIsXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJ0cmZzX3VyaW5nX2NtZFwiLFxuICAgIFwiYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG1lbW9yeSBsZWFrcywgbG9ja2luZyBpc3N1ZXMsIGFuZCBpb191cmluZyByZXRyeSBsb2dpYyBpbiBidHJmcyBpb191cmluZyBlbmNvZGVkIHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4gSXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGluIHRoZSBidHJmcyBmaWxlc3lzdGVtIGFuZCBpb191cmluZyBpbnRlZ3JhdGlvbiwgd2hpY2ggaXMgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDI2NTJmM2JjNGJkY2VjYWRkMDIzOTQ2MDRmNmE1NGJjMDQ0YzFmZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMDk6NDY6MDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9idHJmcy9pbm9kZS5jIGIvZnMvYnRyZnMvaW5vZGUuY1xuaW5kZXggYjQ0NmMzMDE0YjI0MC4uOGUzY2VlMzg0NWU2ZiAxMDA2NDRcbi0tLSBhL2ZzL2J0cmZzL2lub2RlLmNcbisrKyBiL2ZzL2J0cmZzL2lub2RlLmNcbkBAIC05NDExLDcgKzk0MTEsNiBAQCBpbnQgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLFxuIFx0c3RydWN0IGNvbXBsZXRpb24gc3luY19yZWFkcztcbiBcdHVuc2lnbmVkIGxvbmcgaSA9IDA7XG4gXHRzdHJ1Y3QgYnRyZnNfYmlvICpiYmlvO1xuLVx0aW50IHJldDtcbiBcbiBcdC8qXG4gXHQgKiBGYXN0IHBhdGggZm9yIHN5bmNocm9ub3VzIHJlYWRzIHdoaWNoIGNvbXBsZXRlcyBpbiB0aGlzIGNhbGwsIGlvX3VyaW5nXG5AQCAtOTQ1OCwxMCArOTQ1NywxMCBAQCBpbnQgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLFxuIFxuIFx0aWYgKHVyaW5nX2N0eCkge1xuIFx0XHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNnByaXYtXHUwMDNlcGVuZGluZ19yZWZzKSkge1xuLVx0XHRcdHJldCA9IGJsa19zdGF0dXNfdG9fZXJybm8oUkVBRF9PTkNFKHByaXYtXHUwMDNlc3RhdHVzKSk7XG4tXHRcdFx0YnRyZnNfdXJpbmdfcmVhZF9leHRlbnRfZW5kaW8odXJpbmdfY3R4LCByZXQpO1xuK1x0XHRcdGludCBlcnIgPSBibGtfc3RhdHVzX3RvX2Vycm5vKFJFQURfT05DRShwcml2LVx1MDAzZXN0YXR1cykpO1xuK1xuK1x0XHRcdGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50X2VuZGlvKHVyaW5nX2N0eCwgZXJyKTtcbiBcdFx0XHRrZnJlZShwcml2KTtcbi1cdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXG4gXHRcdHJldHVybiAtRUlPQ0JRVUVVRUQ7XG5kaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmNcbmluZGV4IGJhYTY0NWU5ODgxMjYuLjEwNjU0MTZiY2IxZGQgMTAwNjQ0XG4tLS0gYS9mcy9idHJmcy9pb2N0bC5jXG4rKysgYi9mcy9idHJmcy9pb2N0bC5jXG5AQCAtNDU1Miw3ICs0NTUyLDcgQEAgc3RhdGljIHZvaWQgYnRyZnNfdXJpbmdfcmVhZF9maW5pc2hlZChzdHJ1Y3QgaW9fdHdfcmVxIHR3X3JlcSwgaW9fdHdfdG9rZW5fdCB0dylcbiBcdHNpemVfdCBwYWdlX29mZnNldDtcbiBcdHNzaXplX3QgcmV0O1xuIFxuLVx0LyogVGhlIGlub2RlIGxvY2sgaGFzIGFscmVhZHkgYmVlbiBhY3F1aXJlZCBpbiBidHJmc191cmluZ19yZWFkX2V4dGVudC4gICovXG4rXHQvKiBUaGUgaW5vZGUgbG9jayBoYXMgYWxyZWFkeSBiZWVuIGFjcXVpcmVkIGluIGJ0cmZzX2VuY29kZWRfcmVhZCgpLiAqL1xuIFx0YnRyZnNfbG9ja2RlcF9pbm9kZV9hY3F1aXJlKGlub2RlLCBpX3J3c2VtKTtcbiBcbiBcdGlmIChwcml2LVx1MDAzZWVycikge1xuQEAgLTQ2MTgsNyArNDYxOCw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgaW92ZWMgKmlvdiwgc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kKVxuIHtcbiBcdHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUgPSBCVFJGU19JKGZpbGVfaW5vZGUoaW9jYi1cdTAwM2VraV9maWxwKSk7XG4tXHRzdHJ1Y3QgZXh0ZW50X2lvX3RyZWUgKmlvX3RyZWUgPSBcdTAwMjZpbm9kZS1cdTAwM2Vpb190cmVlO1xuIFx0c3RydWN0IHBhZ2UgKipwYWdlcyA9IE5VTEw7XG4gXHRzdHJ1Y3QgYnRyZnNfdXJpbmdfcHJpdiAqcHJpdiA9IE5VTEw7XG4gXHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzO1xuQEAgLTQ2MjYsOCArNDYyNSwxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50KHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxuIFxuIFx0bnJfcGFnZXMgPSBESVZfUk9VTkRfVVAoZGlza19pb19zaXplLCBQQUdFX1NJWkUpO1xuIFx0cGFnZXMgPSBremFsbG9jX29ianMoc3RydWN0IHBhZ2UgKiwgbnJfcGFnZXMsIEdGUF9OT0ZTKTtcbi1cdGlmICghcGFnZXMpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0aWYgKCFwYWdlcykge1xuK1x0XHRyZXQgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIG91dF9mYWlsO1xuK1x0fVxuIFx0cmV0ID0gYnRyZnNfYWxsb2NfcGFnZV9hcnJheShucl9wYWdlcywgcGFnZXMsIEdGUF9OT0ZTKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbkBAIC00Njc0LDEyICs0Njc1LDEyIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4gXHRyZXR1cm4gLUVJT0NCUVVFVUVEO1xuIFxuIG91dF9mYWlsOlxuLVx0YnRyZnNfdW5sb2NrX2V4dGVudChpb190cmVlLCBzdGFydCwgbG9ja2VuZCwgXHUwMDI2Y2FjaGVkX3N0YXRlKTtcbi1cdGJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgQlRSRlNfSUxPQ0tfU0hBUkVEKTtcbiBcdGtmcmVlKHByaXYpO1xuLVx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIG5yX3BhZ2VzOyBpKyspIHtcbi1cdFx0aWYgKHBhZ2VzW2ldKVxuLVx0XHRcdF9fZnJlZV9wYWdlKHBhZ2VzW2ldKTtcbitcdGlmIChwYWdlcykge1xuK1x0XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgbnJfcGFnZXM7IGkrKykge1xuK1x0XHRcdGlmIChwYWdlc1tpXSlcbitcdFx0XHRcdF9fZnJlZV9wYWdlKHBhZ2VzW2ldKTtcbitcdFx0fVxuIFx0fVxuIFx0a2ZyZWUocGFnZXMpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC00NzAzLDkgKzQ3MDQsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxuIFx0c3RydWN0IGlvX2J0cmZzX2NtZCAqYmMgPSBpb191cmluZ19jbWRfdG9fcGR1KGNtZCwgc3RydWN0IGlvX2J0cmZzX2NtZCk7XG4gXHRzdHJ1Y3QgYnRyZnNfdXJpbmdfZW5jb2RlZF9kYXRhICpkYXRhID0gTlVMTDtcbiBcbi1cdGlmIChjbWQtXHUwMDNlZmxhZ3MgXHUwMDI2IElPUklOR19VUklOR19DTURfUkVJU1NVRSlcbi1cdFx0ZGF0YSA9IGJjLVx1MDAzZWRhdGE7XG4tXG4gXHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpIHtcbiBcdFx0cmV0ID0gLUVQRVJNO1xuIFx0XHRnb3RvIG91dF9hY2N0O1xuQEAgLTQ3NTksOSArNDc1NywxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxuIFx0XHR9XG4gXG4gXHRcdGRhdGEtXHUwMDNlaW92ID0gZGF0YS1cdTAwM2Vpb3ZzdGFjaztcbi1cdFx0cmV0ID0gaW1wb3J0X2lvdmVjKElURVJfREVTVCwgZGF0YS1cdTAwM2VhcmdzLmlvdiwgZGF0YS1cdTAwM2VhcmdzLmlvdmNudCxcbi1cdFx0XHRcdCAgIEFSUkFZX1NJWkUoZGF0YS1cdTAwM2Vpb3ZzdGFjayksIFx1MDAyNmRhdGEtXHUwMDNlaW92LFxuLVx0XHRcdFx0ICAgXHUwMDI2ZGF0YS1cdTAwM2VpdGVyKTtcbitcdFx0cmV0ID0gX19pbXBvcnRfaW92ZWMoSVRFUl9ERVNULCBkYXRhLVx1MDAzZWFyZ3MuaW92LCBkYXRhLVx1MDAzZWFyZ3MuaW92Y250LFxuK1x0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGRhdGEtXHUwMDNlaW92c3RhY2spLCBcdTAwMjZkYXRhLVx1MDAzZWlvdixcbitcdFx0XHRcdCAgICAgXHUwMDI2ZGF0YS1cdTAwM2VpdGVyLFxuK1x0XHRcdFx0ICAgICAhIShpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9DT01QQVQpKTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIG91dF9hY2N0O1xuIFxuQEAgLTQ3ODcsOCArNDc4Niw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlXG4gXG4gXHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWQoXHUwMDI2a2lvY2IsIFx1MDAyNmRhdGEtXHUwMDNlaXRlciwgXHUwMDI2ZGF0YS1cdTAwM2VhcmdzLCBcdTAwMjZjYWNoZWRfc3RhdGUsXG4gXHRcdFx0XHQgXHUwMDI2ZGlza19ieXRlbnIsIFx1MDAyNmRpc2tfaW9fc2l6ZSk7XG4tXHRpZiAocmV0ID09IC1FQUdBSU4pXG4tXHRcdGdvdG8gb3V0X2FjY3Q7XG4gXHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVJT0NCUVVFVUVEKVxuIFx0XHRnb3RvIG91dF9mcmVlO1xuIFxuQEAgLTQ4MTYsOCArNDgxMywxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxuIFx0XHRcdFx0XHQgICAgICBjYWNoZWRfc3RhdGUsIGRpc2tfYnl0ZW5yLCBkaXNrX2lvX3NpemUsXG4gXHRcdFx0XHRcdCAgICAgIGNvdW50LCBkYXRhLVx1MDAzZWFyZ3MuY29tcHJlc3Npb24sXG4gXHRcdFx0XHRcdCAgICAgIGRhdGEtXHUwMDNlaW92LCBjbWQpO1xuLVxuLVx0XHRnb3RvIG91dF9hY2N0O1xuK1x0XHRpZiAocmV0ID09IC1FSU9DQlFVRVVFRClcbitcdFx0XHRnb3RvIG91dF9hY2N0O1xuK1x0XHRidHJmc191bmxvY2tfZXh0ZW50KGlvX3RyZWUsIHN0YXJ0LCBsb2NrZW5kLCBcdTAwMjZjYWNoZWRfc3RhdGUpO1xuK1x0XHRidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIEJUUkZTX0lMT0NLX1NIQVJFRCk7XG4gXHR9XG4gXG4gb3V0X2ZyZWU6XG5AQCAtNDgyOCw4ICs0ODI3LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlXG4gXHRcdGFkZF9yY2hhcihjdXJyZW50LCByZXQpO1xuIFx0aW5jX3N5c2NyKGN1cnJlbnQpO1xuIFxuLVx0aWYgKHJldCAhPSAtRUlPQ0JRVUVVRUQgXHUwMDI2XHUwMDI2IHJldCAhPSAtRUFHQUlOKVxuK1x0aWYgKHJldCAhPSAtRUlPQ0JRVUVVRUQpIHtcbiBcdFx0a2ZyZWUoZGF0YSk7XG4rXHRcdGJjLVx1MDAzZWRhdGEgPSBOVUxMO1xuK1x0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtNDg0MSwxMiArNDg0Miw4IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1XG4gXHRzdHJ1Y3Qga2lvY2Iga2lvY2I7XG4gXHRzc2l6ZV90IHJldDtcbiBcdHZvaWQgX191c2VyICpzcWVfYWRkcjtcbi1cdHN0cnVjdCBpb19idHJmc19jbWQgKmJjID0gaW9fdXJpbmdfY21kX3RvX3BkdShjbWQsIHN0cnVjdCBpb19idHJmc19jbWQpO1xuIFx0c3RydWN0IGJ0cmZzX3VyaW5nX2VuY29kZWRfZGF0YSAqZGF0YSA9IE5VTEw7XG4gXG4tXHRpZiAoY21kLVx1MDAzZWZsYWdzIFx1MDAyNiBJT1JJTkdfVVJJTkdfQ01EX1JFSVNTVUUpXG4tXHRcdGRhdGEgPSBiYy1cdTAwM2VkYXRhO1xuLVxuIFx0aWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKSB7XG4gXHRcdHJldCA9IC1FUEVSTTtcbiBcdFx0Z290byBvdXRfYWNjdDtcbkBAIC00ODU4LDYgKzQ4NTUsMTEgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VcbiBcdFx0Z290byBvdXRfYWNjdDtcbiBcdH1cbiBcbitcdGlmIChpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9OT05CTE9DSykge1xuK1x0XHRyZXQgPSAtRUFHQUlOO1xuK1x0XHRnb3RvIG91dF9hY2N0O1xuK1x0fVxuK1xuIFx0aWYgKCFkYXRhKSB7XG4gXHRcdGRhdGEgPSBremFsbG9jX29iaigqZGF0YSwgR0ZQX05PRlMpO1xuIFx0XHRpZiAoIWRhdGEpIHtcbkBAIC00ODY1LDggKzQ4NjcsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxuIFx0XHRcdGdvdG8gb3V0X2FjY3Q7XG4gXHRcdH1cbiBcbi1cdFx0YmMtXHUwMDNlZGF0YSA9IGRhdGE7XG4tXG4gXHRcdGlmIChpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9DT01QQVQpIHtcbiAjaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19DT01QQVQpXG4gXHRcdFx0c3RydWN0IGJ0cmZzX2lvY3RsX2VuY29kZWRfaW9fYXJnc18zMiBhcmdzMzI7XG5AQCAtNDkxNCw5ICs0OTE0LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1XG4gXHRcdFx0Z290byBvdXRfYWNjdDtcbiBcbiBcdFx0ZGF0YS1cdTAwM2Vpb3YgPSBkYXRhLVx1MDAzZWlvdnN0YWNrO1xuLVx0XHRyZXQgPSBpbXBvcnRfaW92ZWMoSVRFUl9TT1VSQ0UsIGRhdGEtXHUwMDNlYXJncy5pb3YsIGRhdGEtXHUwMDNlYXJncy5pb3ZjbnQsXG4tXHRcdFx0XHQgICBBUlJBWV9TSVpFKGRhdGEtXHUwMDNlaW92c3RhY2spLCBcdTAwMjZkYXRhLVx1MDAzZWlvdixcbi1cdFx0XHRcdCAgIFx1MDAyNmRhdGEtXHUwMDNlaXRlcik7XG4rXHRcdHJldCA9IF9faW1wb3J0X2lvdmVjKElURVJfU09VUkNFLCBkYXRhLVx1MDAzZWFyZ3MuaW92LCBkYXRhLVx1MDAzZWFyZ3MuaW92Y250LFxuK1x0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGRhdGEtXHUwMDNlaW92c3RhY2spLCBcdTAwMjZkYXRhLVx1MDAzZWlvdixcbitcdFx0XHRcdCAgICAgXHUwMDI2ZGF0YS1cdTAwM2VpdGVyLFxuK1x0XHRcdFx0ICAgICAhIShpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9DT01QQVQpKTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIG91dF9hY2N0O1xuIFxuQEAgLTQ5MjYsMTEgKzQ5MjcsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spIHtcbi1cdFx0cmV0ID0gLUVBR0FJTjtcbi1cdFx0Z290byBvdXRfYWNjdDtcbi1cdH1cbi1cbiBcdHBvcyA9IGRhdGEtXHUwMDNlYXJncy5vZmZzZXQ7XG4gXHRyZXQgPSByd192ZXJpZnlfYXJlYShXUklURSwgZmlsZSwgXHUwMDI2cG9zLCBkYXRhLVx1MDAzZWFyZ3MubGVuKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG5AQCAtNDk1Niw4ICs0OTUyLDcgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VcbiBcdFx0YWRkX3djaGFyKGN1cnJlbnQsIHJldCk7XG4gXHRpbmNfc3lzY3coY3VycmVudCk7XG4gXG4tXHRpZiAocmV0ICE9IC1FQUdBSU4pXG4tXHRcdGtmcmVlKGRhdGEpO1xuK1x0a2ZyZWUoZGF0YSk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9saWIvaW92X2l0ZXIuYyBiL2xpYi9pb3ZfaXRlci5jXG5pbmRleCBjMjQ4NDU1MWE0ZTg2Li45YzIxNThkNWNjZGQzIDEwMDY0NFxuLS0tIGEvbGliL2lvdl9pdGVyLmNcbisrKyBiL2xpYi9pb3ZfaXRlci5jXG5AQCAtMTQxMCw2ICsxNDEwLDcgQEAgc3NpemVfdCBfX2ltcG9ydF9pb3ZlYyhpbnQgdHlwZSwgY29uc3Qgc3RydWN0IGlvdmVjIF9fdXNlciAqdXZlYyxcbiBcdFx0KmlvdnAgPSBpb3Y7XG4gXHRyZXR1cm4gdG90YWxfbGVuO1xuIH1cbitFWFBPUlRfU1lNQk9MX0dQTChfX2ltcG9ydF9pb3ZlYyk7XG4gXG4gLyoqXG4gICogaW1wb3J0X2lvdmVjKCkgLSBDb3B5IGFuIGFycmF5IG9mIFx1MDAyNnN0cnVjdCBpb3ZlYyBmcm9tIHVzZXJzcGFjZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDk6NDY6MDYuOTM2MDMwNjE2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0OTMwODM0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXMgYW5kIEZ1enppbmcgU3RyYXRlZ3kgZm9yIEJ0cmZzIGlvX3VyaW5nIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCBzZWVtcyB0byBiZSB0d2Vha2luZyBCdHJmcycgaW9fdXJpbmcgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBlbmNvZGVkIHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4gVGhlIGZpbGVzIGludm9sdmVkIOKAkyBgZnMvYnRyZnMvaW5vZGUuY2AsIGBmcy9idHJmcy9pb2N0bC5jYCwgYW5kIGBsaWIvaW92X2l0ZXIuY2Ag4oCTIGltbWVkaWF0ZWx5IHRlbGwgbWUgaXQncyB0b3VjaGluZyBjb3JlIGlvIHBhdGhzLCBzbyB0aGlzIGRlc2VydmVzIGEgY2xvc2VyIGxvb2suXG5cbkxldCdzIGJyZWFrIGRvd24gdGhlIGNvZGUgY2hhbmdlcy4gSSdtIHNlZWluZyBmaXhlcyBmb3IgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBpbiBgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRgLCBwYXJ0aWN1bGFybHkgYXJvdW5kIHBhZ2UgYWxsb2NhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmcsIHdoaWNoIGlzIGdvb2QuICBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgaGFzIGEgbWlub3IgY2hhbmdlIHRoYXQgbWlnaHQgaGFuZGxlIGVycm9yIGNvZGVzIGJldHRlci4gVGhlIGNoYW5nZXMgaW4gYGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZGAgYW5kIGBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlYCBhcmUgbG9va2luZyB0byB0aWdodGVuIHVwIGxvY2tpbmcgYW5kIGlvX3VyaW5nIHJldHJ5IGxvZ2ljIGFuZCBjb21wYXQgZmxhZ3MuIE5vdGFibHksIHRoZXJlIGFyZSBjaGFuZ2VzIHRvIGhvdyB0aGUgaW8gdmVjdG9yIGlzIGltcG9ydGVkIHdpdGggYF9faW1wb3J0X2lvdmVjYCwgYW5kIGFkZGl0aW9uYWwgbG9naWMgYWRkZWQgdG8gdGhlIGZsb3cuXG5cbk92ZXJhbGwsIGl0IGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIG1lbW9yeSBsZWFrcywgYW5kIGltcHJvdmluZyB0aGUgc3RhYmlsaXR5IG9mIGlvX3VyaW5nIG9wZXJhdGlvbnMgaW4gQnRyZnMuIFRoaXMga2luZCBvZiBwYXRjaCBzY3JlYW1zIGZvciBmdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgY29uY2VudHJhdGVkLCB3aGljaCBnaXZlcyB1cyBhIG1hbmFnZWFibGUgc2NvcGUgZm9yIGEgZnV6emluZyBjYW1wYWlnbi5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy4gIEknbSBmb2N1c2luZyBvbiB0aGVzZSBzeW1ib2xzOiBgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkYCwgYGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGVgLCBgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRgLCBhbmQgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBpb191cmluZyBvcGVyYXRpb25zIGFuZCBhcmUgdGhlcmVmb3JlIGxpa2VseSB0YXJnZXRzLiBcblxuUXVpY2sgY2hlY2sgb24gdGhlIHN5bWJvbHMgdG8gZGV0ZXJtaW5lIGFjY2Vzc2liaWxpdHkuIFRoZSBmdW5jdGlvbnMgYXJlIHN0YXRpYyBpbiBgZnMvYnRyZnMvaW9jdGwuY2AsIHdoaWNoIG1ha2VzIHRoZW0gcmVsYXRlZCB0byBpb2N0bHMuIFRoZXJlZm9yZSB0aGV5IGFyZSBhY2Nlc3NpYmxlIHRvIHVzLlxuXG5Pa2F5LCBsZXQncyBnZXQgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkzNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NjoyMS40MjkxMTY5NDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAyODU4MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J0cmZzL2lvY3RsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnRyZnMvaW9jdGwuYz00NjEzPXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTQ2ODgtXFxuZnMvYnRyZnMvaW9jdGwuYzo0Njg5OnN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxcbmZzL2J0cmZzL2lvY3RsLmMtNDY5MC17XFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jPTQ5NTk9aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNDk2OC0jZW5kaWZcXG5mcy9idHJmcy9pb2N0bC5jOjQ5Njk6XFx0XFx0cmV0dXJuIGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChjbWQsIGlzc3VlX2ZsYWdzKTtcXG5mcy9idHJmcy9pb2N0bC5jLTQ5NzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjIxLjUwOTQwOTg0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2ODcwNzk2MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgQnRyZnMgVXJpbmcgUmVhZCBQcm9jZXNzKipcblxuUmlnaHQsIHNvIGBidHJmc191cmluZ19lbmNvZGVkX3JlYWRgIGlzIGEgYHN0YXRpY2AgZnVuY3Rpb24uIEludGVyZXN0aW5nLiBNZWFucyBpdCdzIGxpa2VseSBvbmx5IHVzZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBjb21waWxhdGlvbiB1bml0LiBPa2F5LCB0aGUgZXh0ZXJuYWwgZW50cnkgcG9pbnQsIHRoZW4sIGhhcyB0byBiZSBgYnRyZnNfdXJpbmdfY21kYC4gTWFrZXMgc2Vuc2UuIE5vdywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyIOKAkyBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBidHJmc191cmluZ19jbWRgLiBUaGF0J3Mgd2hlcmUgdGhlIG9yY2hlc3RyYXRpb24gYmVnaW5zLCBhbmQgdW5kZXJzdGFuZGluZyBpdCB3aWxsIGlsbHVtaW5hdGUgaG93IHRoaXMgcmVhZCBwYXRoIGlzIGFjdHVhbGx5IGludm9rZWQgYW5kIGhhbmRsZWQuIEl04oCZcyB0aGUgY29uZHVjdG9yLCB0aGUgc3RhcnRpbmcgZ3VuLiBGcm9tIHRoZXJlLCBJIGNhbiB0cmFjZSB0aGUgY29udHJvbCBmbG93IGFuZCBmaWd1cmUgb3V0IGhvdyBgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzEwMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjI3LjE5NjQ5MTk3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAzNTQ3NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRyZnNfdXJpbmdfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J0cmZzL2lvY3RsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnRyZnMvaW9jdGwuYz00ODM4PXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNDk1OC1cXG5mcy9idHJmcy9pb2N0bC5jOjQ5NTk6aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG5mcy9idHJmcy9pb2N0bC5jLTQ5NjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NjoyNy4zMDY4NTk3NjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzA2ODI3OTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYnRyZnNfdXJpbmdfY21kIEVudHJ5IFBvaW50KipcblxuUmlnaHQsIHNvIGBidHJmc191cmluZ19jbWRgLCB0aGF0J3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBHaXZlbiB0aGUgY29udGV4dCBvZiBleHBsb3JpbmcgdGhlIGJ0cmZzIGltcGxlbWVudGF0aW9uIHdpdGggaW9fdXJpbmcsIGl0J3MgdGhlIG9idmlvdXMgcGxhY2UgdG8gYmVnaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgdXNlci1zcGFjZSByZXF1ZXN0cyBmdW5uZWwgaW50byB0aGUga2VybmVsLCBhbmQgdGhpcyBpcyB3aGVyZSBpdCBhbGwga2lja3Mgb2ZmLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBjb250cm9sIGZsb3cgZm9yIHRoZSBjb21tb24gb3BlcmF0aW9ucy5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duIGludG8gYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgLiBUaGlzIHN1Z2dlc3RzIGEgZm9jdXMgb24gdGhlIG1lY2hhbmljcyBvZiByZWFkaW5nIGRhdGEsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgZW5jb2RlZCBvciBjb21wcmVzc2VkIGJsb2NrcywgYXMgd2VsbCBhcyB0aGUgcHJvY2VzcyBvZiBtYXBwaW5nIHRoZXNlIHRvIHVzZXIgcGFnZXMuIEkgYW50aWNpcGF0ZSBzb21lIGludGVyZXN0aW5nIG9wdGltaXphdGlvbnMgb3IgcG90ZW50aWFsbHkgc3VidGxlIGlzc3VlcyByZWxhdGVkIHRvIHBhZ2UgcGlubmluZywgZGlyZWN0IEkvTywgYW5kIHRoZSBnZW5lcmFsIGhhbmRsaW5nIG9mIGFzeW5jaHJvbm91cyByZWFkcy4gSSBleHBlY3QgdG8gZmluZCBkZXRhaWxzIGNvbmNlcm5pbmcgZW5jcnlwdGlvbiwgY2hlY2tzdW0gdmFsaWRhdGlvbiwgYW5kIHRoZSBoYW5kbGluZyBvZiB2YXJpb3VzIGV4dGVudHMgYW5kIGJsb2NrIGdyb3VwcywgYWxsIGluIHRoZSBjb250ZXh0IG9mIGBpb191cmluZ2AncyBhc3luYyBjYXBhYmlsaXRpZXMuIExldCdzIHNlZSBob3cgdGhleSd2ZSBoYW5kbGVkIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gb3IgZGF0YSByZWNvdmVyeSBwcm9jZXNzZXMuIExldCdzIGZpbmQgb3V0IGhvdyB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIHJldHJ5IGxvZ2ljIHBsYXkgb3V0LiBJJ20gZ29pbmcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0ODUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NjozMS4wMTM2ODk1MzlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQyODM5NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9idHJmcy9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2J0cmZzL2lub2RlLmM9OTM3OT1zdGF0aWMgdm9pZCBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8oc3RydWN0IGJ0cmZzX2JpbyAqYmJpbylcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTM4Ni1cXHRcXHQgKiBwYWlycyB3aXRoIHRoZSBtZW1vcnkgYmFycmllciBpbXBsaWVkIGJ5IHRoZSByZWZjb3VudF9kZWNfYW5kX3Rlc3QoKVxcbmZzL2J0cmZzL2lub2RlLmM6OTM4NzpcXHRcXHQgKiBpbiBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKCkgdG8gZW5zdXJlIHRoYXRcXG5mcy9idHJmcy9pbm9kZS5jLTkzODgtXFx0XFx0ICogdGhpcyB3cml0ZSBpcyBvYnNlcnZlZCBiZWZvcmUgdGhlIGxvYWQgb2Ygc3RhdHVzIGluXFxuZnMvYnRyZnMvaW5vZGUuYzo5Mzg5OlxcdFxcdCAqIGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoKS5cXG5mcy9idHJmcy9pbm9kZS5jLTkzOTAtXFx0XFx0ICovXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0MDUtXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDA2OmludCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsXFxuZnMvYnRyZnMvaW5vZGUuYy05NDA3LVxcdFxcdFxcdFxcdFxcdCAgdTY0IGRpc2tfYnl0ZW5yLCB1NjQgZGlza19pb19zaXplLFxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYz05NDc1PXNzaXplX3QgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0OTgtXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDk5OlxcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoaW5vZGUsIGRpc2tfYnl0ZW5yLFxcbmZzL2J0cmZzL2lub2RlLmMtOTUwMC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgZGlza19pb19zaXplLCBwYWdlcywgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjMxLjA5Nzk4MDQ3NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5OTQwOTk3OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW5uZXIgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgKipcblxuSG1tLCBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgaXNuJ3Qgc3RhdGljLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgd2hlcmUgZG9lcyB0aGF0IGxlYWQgbWU/IEl0IG1lYW5zIHRoZSBmdW5jdGlvbidzIGJlaGF2aW9yIGNhbiBjaGFuZ2UsIHdoaWNoIGlzIHNpZ25pZmljYW50IHdoZW4gZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IGNvbXBsZXggZGF0YSByZWFkcyBpbiBCdHJmcy4gQWxyaWdodCwgaWYgaXQncyBub3Qgc3RhdGljLCB0aGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiBMZXQncyBkZWx2ZSBpbnRvIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcmAgYW5kIGZpZ3VyZSBvdXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5vbi1zdGF0aWMgY2hhcmFjdGVyaXN0aWMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgb2YgdGhlIGlzc3VlIGxpa2VseSByZXNpZGVzLCBhcyB0aGUgbmF0dXJlIG9mIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzYCBpbXBhY3RzIHRoZSByZWFkIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNjYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NjozNS4wOTIwODMyMzdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwODgxMDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J0cmZzL2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnRyZnMvaW5vZGUuYz05Mzc5PXN0YXRpYyB2b2lkIGJ0cmZzX2VuY29kZWRfcmVhZF9lbmRpbyhzdHJ1Y3QgYnRyZnNfYmlvICpiYmlvKVxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05Mzg2LVxcdFxcdCAqIHBhaXJzIHdpdGggdGhlIG1lbW9yeSBiYXJyaWVyIGltcGxpZWQgYnkgdGhlIHJlZmNvdW50X2RlY19hbmRfdGVzdCgpXFxuZnMvYnRyZnMvaW5vZGUuYzo5Mzg3OlxcdFxcdCAqIGluIGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoKSB0byBlbnN1cmUgdGhhdFxcbmZzL2J0cmZzL2lub2RlLmMtOTM4OC1cXHRcXHQgKiB0aGlzIHdyaXRlIGlzIG9ic2VydmVkIGJlZm9yZSB0aGUgbG9hZCBvZiBzdGF0dXMgaW5cXG5mcy9idHJmcy9pbm9kZS5jOjkzODk6XFx0XFx0ICogYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcygpLlxcbmZzL2J0cmZzL2lub2RlLmMtOTM5MC1cXHRcXHQgKi9cXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQwNS1cXG5mcy9idHJmcy9pbm9kZS5jOjk0MDY6aW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSxcXG5mcy9idHJmcy9pbm9kZS5jLTk0MDctXFx0XFx0XFx0XFx0XFx0ICB1NjQgZGlza19ieXRlbnIsIHU2NCBkaXNrX2lvX3NpemUsXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0NzQtXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDc1OnNzaXplX3QgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuZnMvYnRyZnMvaW5vZGUuYy05NDc2LVxcdFxcdFxcdFxcdCAgIHU2NCBzdGFydCwgdTY0IGxvY2tlbmQsXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0OTgtXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDk5OlxcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoaW5vZGUsIGRpc2tfYnl0ZW5yLFxcbmZzL2J0cmZzL2lub2RlLmMtOTUwMC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgZGlza19pb19zaXplLCBwYWdlcywgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjM1LjE2Mjk3MDYwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzkxODQyNzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gYnRyZnMgUmVhZCBPcGVyYXRpb25zKipcblxuT2theSwgc28gYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyYCBpc24ndCBzdGF0aWMgZWl0aGVyLiBJbnRlcmVzdGluZy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gYnJvYWRlbiBteSBzY29wZSBhIGJpdC4gVGltZSB0byBtb3ZlIHVwIHRoZSBjYWxsIHN0YWNrLiBMZXQncyBkaWcgaW50byBgYnRyZnNfZW5jb2RlZF9yZWFkYCBhbmQgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgaWYgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyYCBpc24ndCBzdGF0aWMsIHdoYXQgbWFrZXMgdGhlIHBhcmVudCBmdW5jdGlvbiBkaWZmZXJlbnQ/IEl0IG1heSByZXZlYWwgbW9yZSBhYm91dCBob3cgdGhpcyByZWFkIHByb2Nlc3MgaXMgYmVpbmcgaGFuZGxlZCBhbmQgd2hlcmUgdGhlIHZhcmlhYmlsaXR5IGxpZXMuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDEwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDk6NDY6MzguNTU0ODE2MTU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTA5MzM1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidHJmc19lbmNvZGVkX3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYnRyZnMvaW5vZGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9idHJmcy9pbm9kZS5jPTkyNjI9aW50IGJ0cmZzX2VuY29kZWRfaW9fY29tcHJlc3Npb25fZnJvbV9leHRlbnQoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTkyODUtXFxuZnMvYnRyZnMvaW5vZGUuYzo5Mjg2OnN0YXRpYyBzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZF9pbmxpbmUoXFxuZnMvYnRyZnMvaW5vZGUuYy05Mjg3LVxcdFxcdFxcdFxcdHN0cnVjdCBraW9jYiAqaW9jYixcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTM3MS1cXG5mcy9idHJmcy9pbm9kZS5jOjkzNzI6c3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlIHtcXG5mcy9idHJmcy9pbm9kZS5jLTkzNzMtXFx0c3RydWN0IGNvbXBsZXRpb24gKnN5bmNfcmVhZHM7XFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTkzNzgtXFxuZnMvYnRyZnMvaW5vZGUuYzo5Mzc5OnN0YXRpYyB2b2lkIGJ0cmZzX2VuY29kZWRfcmVhZF9lbmRpbyhzdHJ1Y3QgYnRyZnNfYmlvICpiYmlvKVxcbmZzL2J0cmZzL2lub2RlLmMtOTM4MC17XFxuZnMvYnRyZnMvaW5vZGUuYzo5MzgxOlxcdHN0cnVjdCBidHJmc19lbmNvZGVkX3JlYWRfcHJpdmF0ZSAqcHJpdiA9IGJiaW8tXFx1MDAzZXByaXZhdGU7XFxuZnMvYnRyZnMvaW5vZGUuYy05MzgyLVxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05Mzg2LVxcdFxcdCAqIHBhaXJzIHdpdGggdGhlIG1lbW9yeSBiYXJyaWVyIGltcGxpZWQgYnkgdGhlIHJlZmNvdW50X2RlY19hbmRfdGVzdCgpXFxuZnMvYnRyZnMvaW5vZGUuYzo5Mzg3OlxcdFxcdCAqIGluIGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoKSB0byBlbnN1cmUgdGhhdFxcbmZzL2J0cmZzL2lub2RlLmMtOTM4OC1cXHRcXHQgKiB0aGlzIHdyaXRlIGlzIG9ic2VydmVkIGJlZm9yZSB0aGUgbG9hZCBvZiBzdGF0dXMgaW5cXG5mcy9idHJmcy9pbm9kZS5jOjkzODk6XFx0XFx0ICogYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcygpLlxcbmZzL2J0cmZzL2lub2RlLmMtOTM5MC1cXHRcXHQgKi9cXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQwNS1cXG5mcy9idHJmcy9pbm9kZS5jOjk0MDY6aW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSxcXG5mcy9idHJmcy9pbm9kZS5jLTk0MDctXFx0XFx0XFx0XFx0XFx0ICB1NjQgZGlza19ieXRlbnIsIHU2NCBkaXNrX2lvX3NpemUsXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0MDkte1xcbmZzL2J0cmZzL2lub2RlLmM6OTQxMDpcXHRzdHJ1Y3QgYnRyZnNfZW5jb2RlZF9yZWFkX3ByaXZhdGUgKnByaXYsIHN5bmNfcHJpdjtcXG5mcy9idHJmcy9pbm9kZS5jLTk0MTEtXFx0c3RydWN0IGNvbXBsZXRpb24gc3luY19yZWFkcztcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQxOS1cXHRpZiAodXJpbmdfY3R4KSB7XFxuZnMvYnRyZnMvaW5vZGUuYzo5NDIwOlxcdFxcdHByaXYgPSBrbWFsbG9jX29iaihzdHJ1Y3QgYnRyZnNfZW5jb2RlZF9yZWFkX3ByaXZhdGUsIEdGUF9OT0ZTKTtcXG5mcy9idHJmcy9pbm9kZS5jLTk0MjEtXFx0XFx0aWYgKCFwcml2KVxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05NDMzLVxcdGJiaW8gPSBidHJmc19iaW9fYWxsb2MoQklPX01BWF9WRUNTLCBSRVFfT1BfUkVBRCwgaW5vZGUsIDAsXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDM0OlxcdFxcdFxcdCAgICAgICBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8sIHByaXYpO1xcbmZzL2J0cmZzL2lub2RlLmMtOTQzNS1cXHRiYmlvLVxcdTAwM2ViaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBkaXNrX2J5dGVuciBcXHUwMDNlXFx1MDAzZSBTRUNUT1JfU0hJRlQ7XFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0NDQtXFx0XFx0XFx0YmJpbyA9IGJ0cmZzX2Jpb19hbGxvYyhCSU9fTUFYX1ZFQ1MsIFJFUV9PUF9SRUFELCBpbm9kZSwgMCxcXG5mcy9idHJmcy9pbm9kZS5jOjk0NDU6XFx0XFx0XFx0XFx0XFx0ICAgICAgIGJ0cmZzX2VuY29kZWRfcmVhZF9lbmRpbywgcHJpdik7XFxuZnMvYnRyZnMvaW5vZGUuYy05NDQ2LVxcdFxcdFxcdGJiaW8tXFx1MDAzZWJpby5iaV9pdGVyLmJpX3NlY3RvciA9IGRpc2tfYnl0ZW5yIFxcdTAwM2VcXHUwMDNlIFNFQ1RPUl9TSElGVDtcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQ2OS1cXHRcXHRcXHR3YWl0X2Zvcl9jb21wbGV0aW9uX2lvKFxcdTAwMjZzeW5jX3JlYWRzKTtcXG5mcy9idHJmcy9pbm9kZS5jOjk0NzA6XFx0XFx0LyogU2VlIGJ0cmZzX2VuY29kZWRfcmVhZF9lbmRpbygpIGZvciBvcmRlcmluZy4gKi9cXG5mcy9idHJmcy9pbm9kZS5jLTk0NzEtXFx0XFx0cmV0dXJuIGJsa19zdGF0dXNfdG9fZXJybm8oUkVBRF9PTkNFKHByaXYtXFx1MDAzZXN0YXR1cykpO1xcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05NDc0LVxcbmZzL2J0cmZzL2lub2RlLmM6OTQ3NTpzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxcbmZzL2J0cmZzL2lub2RlLmMtOTQ3Ni1cXHRcXHRcXHRcXHQgICB1NjQgc3RhcnQsIHU2NCBsb2NrZW5kLFxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05NDk4LVxcbmZzL2J0cmZzL2lub2RlLmM6OTQ5OTpcXHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKGlub2RlLCBkaXNrX2J5dGVucixcXG5mcy9idHJmcy9pbm9kZS5jLTk1MDAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRpc2tfaW9fc2l6ZSwgcGFnZXMsIE5VTEwpO1xcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05NTM4LVxcbmZzL2J0cmZzL2lub2RlLmM6OTUzOTpzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG5mcy9idHJmcy9pbm9kZS5jLTk1NDAtXFx0XFx0XFx0ICAgc3RydWN0IGJ0cmZzX2lvY3RsX2VuY29kZWRfaW9fYXJncyAqZW5jb2RlZCxcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTYyOC1cXHRcXHRlbSA9IE5VTEw7XFxuZnMvYnRyZnMvaW5vZGUuYzo5NjI5OlxcdFxcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZF9pbmxpbmUoaW9jYiwgaXRlciwgc3RhcnQsIGxvY2tlbmQsXFxuZnMvYnRyZnMvaW5vZGUuYy05NjMwLVxcdFxcdFxcdFxcdFxcdFxcdGNhY2hlZF9zdGF0ZSwgZXh0ZW50X3N0YXJ0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NjozOC42MjM5MTQ3MjJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3MTQzMTg1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipEaXZpbmcgaW50byB0aGUgQnRyZnMgSU9fVXJpbmcgSW1wbGVtZW50YXRpb24qKlxuXG5SaWdodCwgc28gSSBuZWVkIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGlvX3VyaW5nIGludGVncmF0aW9uIHdvcmtzIHdpdGhpbiBCdHJmcy4gTG9va2luZyBhdCB0aGUgY29kZSwgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgIGZlZWxzIGxpa2UgYSBzb2xpZCBmdW5jdGlvbiB0byBrZXkgaW4gb24uIEl0J3MgYSBrZXkgcGFydCBvZiB0aGUgcmVndWxhciByZWFkIHBhdGgsIHNvIGl0IHNob3VsZCBnaXZlIG1lIHNvbWUgaW5zaWdodC5cblxuTm93LCBsZXQncyBjb25zaWRlciBhbm90aGVyIGFuZ2xlLiBIb3cgZG9lcyBgYnRyZnNfdXJpbmdfY21kYCBmaXQgaW50byB0aGlzPyBBaCwgeWVzLCBpdCdzIHRoZSBzcGVjaWZpYyBoYW5kbGVyIGZvciBpb191cmluZyBjb21tYW5kcyB3aXRoaW4gdGhlIEJ0cmZzIGZpbGVzeXN0ZW0uIFRoYXQncyBleGFjdGx5IHdoYXQgSSdtIGxvb2tpbmcgZm9yISBOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gdG8gYXNrIGlzOiB3aGVyZSBpcyBgYnRyZnNfdXJpbmdfY21kYCAqdXNlZCo/IFNwZWNpZmljYWxseSwgaXMgaXQgcGFydCBvZiB0aGUgZXhwb3NlZCBgZmlsZV9vcGVyYXRpb25zYCBzdHJ1Y3R1cmU/IFRoYXQgd291bGQgbWVhbiBpdCdzIGRpcmVjdGx5IHdpcmVkIGludG8gdGhlIGZpbGVzeXN0ZW0ncyBzdGFuZGFyZCBpbnRlcmZhY2VzLiBUaGF0IHNlZW1zIGxpa2UgdGhlIHJpZ2h0IHBhdGggdG8gdW5kZXJzdGFuZCBob3cgaW9fdXJpbmcgaXMgaW50ZWdyYXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0Njo0Mi4yOTUzNDkyNzhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjYwODcyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidHJmc191cmluZ19jbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYnRyZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2J0cmZzL2ZpbGUuYz0zODQzPWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgYnRyZnNfZmlsZV9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvYnRyZnMvZmlsZS5jLTM4NTktXFx0LnJlbWFwX2ZpbGVfcmFuZ2UgPSBidHJmc19yZW1hcF9maWxlX3JhbmdlLFxcbmZzL2J0cmZzL2ZpbGUuYzozODYwOlxcdC51cmluZ19jbWRcXHQ9IGJ0cmZzX3VyaW5nX2NtZCxcXG5mcy9idHJmcy9maWxlLmMtMzg2MS1cXHQuZm9wX2ZsYWdzXFx0PSBGT1BfQlVGRkVSX1JBU1lOQyB8IEZPUF9CVUZGRVJfV0FTWU5DLFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYz00ODM4PXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNDk1OC1cXG5mcy9idHJmcy9pb2N0bC5jOjQ5NTk6aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG5mcy9idHJmcy9pb2N0bC5jLTQ5NjAte1xcbi0tXFxuZnMvYnRyZnMvaW9jdGwuaD0yND12b2lkIGJ0cmZzX3VwZGF0ZV9pb2N0bF9iYWxhbmNlX2FyZ3Moc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sXFxuZnMvYnRyZnMvaW9jdGwuaC0yNS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBidHJmc19pb2N0bF9iYWxhbmNlX2FyZ3MgKmJhcmdzKTtcXG5mcy9idHJmcy9pb2N0bC5oOjI2OmludCBidHJmc191cmluZ19jbWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xcbmZzL2J0cmZzL2lvY3RsLmgtMjctdm9pZCBidHJmc191cmluZ19yZWFkX2V4dGVudF9lbmRpbyh2b2lkICpjdHgsIGludCBlcnIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0Njo0Mi4zOTc5NjMwODFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0ODEyMjI5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBidHJmcyBhbmQgaW9fdXJpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gaG9uaW5nIGluIG9uIHRoZSBgYnRyZnNfdXJpbmdfY21kYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBjZW50cmFsIGhhbmRsZXIgZm9yIGB1cmluZ19jbWRgIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBidHJmcyBmaWxlc3lzdGVtLCBzbyBpdCdzIGEgZ29vZCBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24uIE5vdywgYSByZWxhdGVkIGZ1bmN0aW9uIGtlZXBzIHBvcHBpbmcgaW50byBteSBoZWFkOiBgYnRyZnNfZW5jb2RlZF9yZWFkYC4gSXMgaXQgYWxzbyBleHBvcnRlZD8gTm8sIHRoYXQncyBub3QgdGhlIGNhc2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnl0aGluZyB0aGF0IGlzIHJlbGF0ZWQuIExldCdzIHRyYWNlIHRocm91Z2ggdGhlIGZpbGUgbG9jYXRpb25zOyBpdCBsb29rcyBsaWtlIGl0IHJlc2lkZXMgd2l0aGluIGBmcy9idHJmcy9pbm9kZS5jYCwgYW5kIGlzIGFsc28gdXNlZCBpbiBgZnMvYnRyZnMvaW9jdGwuY2AuIEFscmlnaHQsIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgYGJ0cmZzX2VuY29kZWRfcmVhZGAgYWN0dWFsbHkgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0MTQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDk6NDY6NDYuMDQ2MDg4NDc4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mzk0MDU2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidHJmc19lbmNvZGVkX3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYnRyZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2J0cmZzL2J0cmZzX2lub2RlLmg9NjAzPWludCBidHJmc19lbmNvZGVkX2lvX2NvbXByZXNzaW9uX2Zyb21fZXh0ZW50KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLFxcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmgtNjA0LVxcdFxcdFxcdFxcdFxcdCAgICAgaW50IGNvbXByZXNzX3R5cGUpO1xcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmg6NjA1OmludCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsXFxuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaC02MDYtXFx0XFx0XFx0XFx0XFx0ICB1NjQgZGlza19ieXRlbnIsIHU2NCBkaXNrX2lvX3NpemUsXFxuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaC02MDctXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCB2b2lkICp1cmluZ19jdHgpO1xcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmg6NjA4OnNzaXplX3QgYnRyZnNfZW5jb2RlZF9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmgtNjA5LVxcdFxcdFxcdCAgIHN0cnVjdCBidHJmc19pb2N0bF9lbmNvZGVkX2lvX2FyZ3MgKmVuY29kZWQsXFxuLS1cXG5mcy9idHJmcy9idHJmc19pbm9kZS5oLTYxMS1cXHRcXHRcXHQgICB1NjQgKmRpc2tfYnl0ZW5yLCB1NjQgKmRpc2tfaW9fc2l6ZSk7XFxuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaDo2MTI6c3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG5mcy9idHJmcy9idHJmc19pbm9kZS5oLTYxMy1cXHRcXHRcXHRcXHQgICB1NjQgc3RhcnQsIHU2NCBsb2NrZW5kLFxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYz05MjYyPWludCBidHJmc19lbmNvZGVkX2lvX2NvbXByZXNzaW9uX2Zyb21fZXh0ZW50KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLFxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05Mjg1LVxcbmZzL2J0cmZzL2lub2RlLmM6OTI4NjpzdGF0aWMgc3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfaW5saW5lKFxcbmZzL2J0cmZzL2lub2RlLmMtOTI4Ny1cXHRcXHRcXHRcXHRzdHJ1Y3Qga2lvY2IgKmlvY2IsXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTkzNzEtXFxuZnMvYnRyZnMvaW5vZGUuYzo5MzcyOnN0cnVjdCBidHJmc19lbmNvZGVkX3JlYWRfcHJpdmF0ZSB7XFxuZnMvYnRyZnMvaW5vZGUuYy05MzczLVxcdHN0cnVjdCBjb21wbGV0aW9uICpzeW5jX3JlYWRzO1xcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05Mzc4LVxcbmZzL2J0cmZzL2lub2RlLmM6OTM3OTpzdGF0aWMgdm9pZCBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8oc3RydWN0IGJ0cmZzX2JpbyAqYmJpbylcXG5mcy9idHJmcy9pbm9kZS5jLTkzODAte1xcbmZzL2J0cmZzL2lub2RlLmM6OTM4MTpcXHRzdHJ1Y3QgYnRyZnNfZW5jb2RlZF9yZWFkX3ByaXZhdGUgKnByaXYgPSBiYmlvLVxcdTAwM2Vwcml2YXRlO1xcbmZzL2J0cmZzL2lub2RlLmMtOTM4Mi1cXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTM4Ni1cXHRcXHQgKiBwYWlycyB3aXRoIHRoZSBtZW1vcnkgYmFycmllciBpbXBsaWVkIGJ5IHRoZSByZWZjb3VudF9kZWNfYW5kX3Rlc3QoKVxcbmZzL2J0cmZzL2lub2RlLmM6OTM4NzpcXHRcXHQgKiBpbiBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKCkgdG8gZW5zdXJlIHRoYXRcXG5mcy9idHJmcy9pbm9kZS5jLTkzODgtXFx0XFx0ICogdGhpcyB3cml0ZSBpcyBvYnNlcnZlZCBiZWZvcmUgdGhlIGxvYWQgb2Ygc3RhdHVzIGluXFxuZnMvYnRyZnMvaW5vZGUuYzo5Mzg5OlxcdFxcdCAqIGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoKS5cXG5mcy9idHJmcy9pbm9kZS5jLTkzOTAtXFx0XFx0ICovXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0MDUtXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDA2OmludCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsXFxuZnMvYnRyZnMvaW5vZGUuYy05NDA3LVxcdFxcdFxcdFxcdFxcdCAgdTY0IGRpc2tfYnl0ZW5yLCB1NjQgZGlza19pb19zaXplLFxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05NDA5LXtcXG5mcy9idHJmcy9pbm9kZS5jOjk0MTA6XFx0c3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlICpwcml2LCBzeW5jX3ByaXY7XFxuZnMvYnRyZnMvaW5vZGUuYy05NDExLVxcdHN0cnVjdCBjb21wbGV0aW9uIHN5bmNfcmVhZHM7XFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0MTktXFx0aWYgKHVyaW5nX2N0eCkge1xcbmZzL2J0cmZzL2lub2RlLmM6OTQyMDpcXHRcXHRwcml2ID0ga21hbGxvY19vYmooc3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlLCBHRlBfTk9GUyk7XFxuZnMvYnRyZnMvaW5vZGUuYy05NDIxLVxcdFxcdGlmICghcHJpdilcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQzMy1cXHRiYmlvID0gYnRyZnNfYmlvX2FsbG9jKEJJT19NQVhfVkVDUywgUkVRX09QX1JFQUQsIGlub2RlLCAwLFxcbmZzL2J0cmZzL2lub2RlLmM6OTQzNDpcXHRcXHRcXHQgICAgICAgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvLCBwcml2KTtcXG5mcy9idHJmcy9pbm9kZS5jLTk0MzUtXFx0YmJpby1cXHUwMDNlYmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gZGlza19ieXRlbnIgXFx1MDAzZVxcdTAwM2UgU0VDVE9SX1NISUZUO1xcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05NDQ0LVxcdFxcdFxcdGJiaW8gPSBidHJmc19iaW9fYWxsb2MoQklPX01BWF9WRUNTLCBSRVFfT1BfUkVBRCwgaW5vZGUsIDAsXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDQ1OlxcdFxcdFxcdFxcdFxcdCAgICAgICBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8sIHByaXYpO1xcbmZzL2J0cmZzL2lub2RlLmMtOTQ0Ni1cXHRcXHRcXHRiYmlvLVxcdTAwM2ViaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBkaXNrX2J5dGVuciBcXHUwMDNlXFx1MDAzZSBTRUNUT1JfU0hJRlQ7XFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0NjktXFx0XFx0XFx0d2FpdF9mb3JfY29tcGxldGlvbl9pbyhcXHUwMDI2c3luY19yZWFkcyk7XFxuZnMvYnRyZnMvaW5vZGUuYzo5NDcwOlxcdFxcdC8qIFNlZSBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8oKSBmb3Igb3JkZXJpbmcuICovXFxuZnMvYnRyZnMvaW5vZGUuYy05NDcxLVxcdFxcdHJldHVybiBibGtfc3RhdHVzX3RvX2Vycm5vKFJFQURfT05DRShwcml2LVxcdTAwM2VzdGF0dXMpKTtcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQ3NC1cXG5mcy9idHJmcy9pbm9kZS5jOjk0NzU6c3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG5mcy9idHJmcy9pbm9kZS5jLTk0NzYtXFx0XFx0XFx0XFx0ICAgdTY0IHN0YXJ0LCB1NjQgbG9ja2VuZCxcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQ5OC1cXG5mcy9idHJmcy9pbm9kZS5jOjk0OTk6XFx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhpbm9kZSwgZGlza19ieXRlbnIsXFxuZnMvYnRyZnMvaW5vZGUuYy05NTAwLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBkaXNrX2lvX3NpemUsIHBhZ2VzLCBOVUxMKTtcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTUzOC1cXG5mcy9idHJmcy9pbm9kZS5jOjk1Mzk6c3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuZnMvYnRyZnMvaW5vZGUuYy05NTQwLVxcdFxcdFxcdCAgIHN0cnVjdCBidHJmc19pb2N0bF9lbmNvZGVkX2lvX2FyZ3MgKmVuY29kZWQsXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk2MjgtXFx0XFx0ZW0gPSBOVUxMO1xcbmZzL2J0cmZzL2lub2RlLmM6OTYyOTpcXHRcXHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfaW5saW5lKGlvY2IsIGl0ZXIsIHN0YXJ0LCBsb2NrZW5kLFxcbmZzL2J0cmZzL2lub2RlLmMtOTYzMC1cXHRcXHRcXHRcXHRcXHRcXHRjYWNoZWRfc3RhdGUsIGV4dGVudF9zdGFydCxcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9NDI5OD1zdGF0aWMgaW50IGJ0cmZzX2lvY3RsX2VuY29kZWRfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3AsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTQzNjctXFxuZnMvYnRyZnMvaW9jdGwuYzo0MzY4OlxcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZChcXHUwMDI2a2lvY2IsIFxcdTAwMjZpdGVyLCBcXHUwMDI2YXJncywgXFx1MDAyNmNhY2hlZF9zdGF0ZSxcXG5mcy9idHJmcy9pb2N0bC5jLTQzNjktXFx0XFx0XFx0XFx0IFxcdTAwMjZkaXNrX2J5dGVuciwgXFx1MDAyNmRpc2tfaW9fc2l6ZSk7XFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTQzODItXFxuZnMvYnRyZnMvaW9jdGwuYzo0MzgzOlxcdFxcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyKFxcdTAwMjZraW9jYiwgXFx1MDAyNml0ZXIsIHN0YXJ0LCBsb2NrZW5kLFxcbmZzL2J0cmZzL2lvY3RsLmMtNDM4NC1cXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmNhY2hlZF9zdGF0ZSwgZGlza19ieXRlbnIsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jPTQ1NDM9c3RhdGljIHZvaWQgYnRyZnNfdXJpbmdfcmVhZF9maW5pc2hlZChzdHJ1Y3QgaW9fdHdfcmVxIHR3X3JlcSwgaW9fdHdfdG9rZW5fdCB0dylcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNDU1NC1cXG5mcy9idHJmcy9pb2N0bC5jOjQ1NTU6XFx0LyogVGhlIGlub2RlIGxvY2sgaGFzIGFscmVhZHkgYmVlbiBhY3F1aXJlZCBpbiBidHJmc19lbmNvZGVkX3JlYWQoKS4gKi9cXG5mcy9idHJmcy9pb2N0bC5jLTQ1NTYtXFx0YnRyZnNfbG9ja2RlcF9pbm9kZV9hY3F1aXJlKGlub2RlLCBpX3J3c2VtKTtcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9NDYxMz1zdGF0aWMgaW50IGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50KHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy00NjU2LVxcbmZzL2J0cmZzL2lvY3RsLmM6NDY1NzpcXHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKGlub2RlLCBkaXNrX2J5dGVucixcXG5mcy9idHJmcy9pb2N0bC5jLTQ2NTgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRpc2tfaW9fc2l6ZSwgcGFnZXMsIHByaXYpO1xcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYz00Njg5PXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy00Nzg2LVxcbmZzL2J0cmZzL2lvY3RsLmM6NDc4NzpcXHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWQoXFx1MDAyNmtpb2NiLCBcXHUwMDI2ZGF0YS1cXHUwMDNlaXRlciwgXFx1MDAyNmRhdGEtXFx1MDAzZWFyZ3MsIFxcdTAwMjZjYWNoZWRfc3RhdGUsXFxuZnMvYnRyZnMvaW9jdGwuYy00Nzg4LVxcdFxcdFxcdFxcdCBcXHUwMDI2ZGlza19ieXRlbnIsIFxcdTAwMjZkaXNrX2lvX3NpemUpO1xcbi0tXFxuZnMvYnRyZnMvc2VuZC5jPTU1MDA9c3RhdGljIGludCBzZW5kX2VuY29kZWRfZXh0ZW50KHN0cnVjdCBzZW5kX2N0eCAqc2N0eCwgc3RydWN0IGJ0cmZzX3BhdGggKnBhdGgsXFxuLS1cXG5mcy9idHJmcy9zZW5kLmMtNTU3MC1cXHQgKi9cXG5mcy9idHJmcy9zZW5kLmM6NTU3MTpcXHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKGlub2RlLFxcbmZzL2J0cmZzL3NlbmQuYy01NTcyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBkaXNrX2J5dGVuciwgZGlza19udW1fYnl0ZXMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjQ2LjEzMDAzNTY5M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDAyMTk1MDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEJ0cmZzIGZvciBGdXp6aW5nIEZvY3VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGxvb2sgYXQgYGJ0cmZzX2VuY29kZWRfcmVhZGAsIHdoaWNoIGlzIGV4cG9ydGVkIGluIGBmcy9idHJmcy9idHJmc19pbm9kZS5oYCBhbmQgaXMgdXRpbGl6ZWQgaW4gYGZzL2J0cmZzL2lvY3RsLmNgLiBCdXQgaG9sZCBvbiwgaXQgaXNuJ3QgZGVjbGFyZWQgc3RhdGljLCBzbyB0aGF0J3Mgc29tZXRoaW5nIHRvIG5vdGUgZm9yIGxhdGVyLlxuXG5UaGlua2luZyBtb3JlIGJyb2FkbHkgYWJvdXQgcG90ZW50aWFsIHRhcmdldHMsIEkgY29uc2lkZXJlZCBgX19pbXBvcnRfaW92ZWNgIGZyb20gYGxpYi9pb3ZfaXRlci5jYC4gSG93ZXZlciwgdGhhdCdzIGEgcHJldHR5IGdlbmVyaWMgZnVuY3Rpb24uIFdoaWxlIEknbGwga2VlcCBpdCBpbiBtaW5kIGFzIGEgcG90ZW50aWFsIHBhdGggZm9yIGV4cGxvcmF0aW9uLCBpdCBtaWdodCBub3QgYmUgdGhlIG1vc3QgZWZmZWN0aXZlIHN5bWJvbCB0byAqZm9jdXMqIG91ciBmdXp6aW5nIGVmZm9ydHMgb24uIFRoZSBidHJmcyBpb191cmluZyBjb21tYW5kcyBhcmUgbXkgcHJpbWFyeSBnb2FsIGhlcmUsIHNvIEknbSBob25pbmcgaW4gb24gdGhlbS5cblxuVGhhdCBicmluZ3MgbWUgdG8gYGJ0cmZzX3VyaW5nX2NtZGAsIHRoYXQncyBkZWZpbml0ZWx5IGEgcHJpbWUgY2FuZGlkYXRlLiBBbmQgSSdsbCBhZGQgYGJ0cmZzX2VuY29kZWRfcmVhZGAgYW5kIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzYCB0byB0aGUgbGlzdCBvZiBrZXkgc3ltYm9scyBmb3IgdGhlIGZ1enplciB0byBleHBsb3JlLlxuXG5Ob3csIGxldCdzIG1ha2Ugc3VyZSB0aGUgY29uZmlndXJhdGlvbiBpcyBzZXQgdXAgcHJvcGVybHkuIFdlJ2xsIG5lZWQgYENPTkZJR19CVFJGU19GU2AsIG9mIGNvdXJzZS4gSSdsbCB0YWtlIGEgbG9vayBhdCBgZnMvYnRyZnMvS2NvbmZpZ2AgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBpb191cmluZy1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gYnRyZnMgdG8gYmUgYXdhcmUgb2YuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MzEzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjUxLjEzMjIzNTI5NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgxNzc5MDUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX3VyaW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J0cmZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjUxLjIxMDQyMDEyMVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTMwMDg3MjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGluIHRoZSBmaXJzdCBwZXJzb24sIHJlZmxlY3RpbmcgdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIGlvX3VyaW5nIEludGVncmF0aW9uIChvciBMYWNrIFRoZXJlb2YpIHdpdGhpbiB0aGUgQnRyZnMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGludG8gdGhlIEJ0cmZzIEtjb25maWcsIHNwZWNpZmljYWxseSBpdHMgaW50ZXJhY3Rpb24gd2l0aCBgaW9fdXJpbmdgLiBTZWVtcyBsaWtlIHRoZXJlJ3Mgbm8gZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gZW50cnkgZm9yIGBpb191cmluZ2AgaXRzZWxmIHdpdGhpbiB0aGUgQnRyZnMgc2VjdGlvbi4gVGhhdCdzIGEgYml0IHVuZXhwZWN0ZWQ7IG9mdGVuLCB3aGVuIGEgc3Vic3lzdGVtIGxldmVyYWdlcyBhbm90aGVyLCB0aGVyZSdzIGF0IGxlYXN0IGEgZmxhZyB0byBlbmFibGUgaXQsIG9yIGEgZGVwZW5kZW5jeSBsaXN0ZWQuIE9rYXksIHNvIG5vIGV4cGxpY2l0IGBDT05GSUdfQlRSRlNfSU9fVVJJTkdgIG9yIGFueXRoaW5nIGxpa2UgdGhhdC4gVGhhdCBuYXJyb3dzIGl0IGRvd24uIExldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiB0aGUgS2NvbmZpZyBmaWxlIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzLCBldmVuIGluZGlyZWN0bHkuIFBlcmhhcHMgaXTigJlzIGEgZGVwZW5kZW5jeSBvZiBzb21ldGhpbmcgZWxzZS4gSSBhbSBnb2luZyB0byBzZWUgaWYgYW55IGdlbmVyYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGV4aXN0IHRoYXQgd291bGQgaW5kaXJlY3RseSBzdWdnZXN0IHNvbWUgc29ydCBvZiBgaW9fdXJpbmdgIHN1cHBvcnQsIGV2ZW4gaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgbWVudGlvbmVkLiBMZXQncyBzZWUgd2hhdCB0dXJucyB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5MDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0Njo1NS4xNDA1MTA2MTlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NDg2MzcwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCVFJGU19GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9idHJmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2J0cmZzL0tjb25maWctMi1cXG5mcy9idHJmcy9LY29uZmlnOjM6Y29uZmlnIEJUUkZTX0ZTXFxuZnMvYnRyZnMvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJCdHJmcyBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9idHJmcy9LY29uZmlnLTM4LVxcbmZzL2J0cmZzL0tjb25maWc6Mzk6Y29uZmlnIEJUUkZTX0ZTX1BPU0lYX0FDTFxcbmZzL2J0cmZzL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiQnRyZnMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuZnMvYnRyZnMvS2NvbmZpZzo0MTpcXHRkZXBlbmRzIG9uIEJUUkZTX0ZTXFxuZnMvYnRyZnMvS2NvbmZpZy00Mi1cXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuLS1cXG5mcy9idHJmcy9LY29uZmlnLTQ4LVxcbmZzL2J0cmZzL0tjb25maWc6NDk6Y29uZmlnIEJUUkZTX0ZTX1JVTl9TQU5JVFlfVEVTVFNcXG5mcy9idHJmcy9LY29uZmlnLTUwLVxcdGJvb2wgXFxcIkJ0cmZzIHdpbGwgcnVuIHNhbml0eSB0ZXN0cyB1cG9uIGxvYWRpbmdcXFwiXFxuZnMvYnRyZnMvS2NvbmZpZzo1MTpcXHRkZXBlbmRzIG9uIEJUUkZTX0ZTXFxuZnMvYnRyZnMvS2NvbmZpZy01Mi1cXHRoZWxwXFxuLS1cXG5mcy9idHJmcy9LY29uZmlnPTYwPWNvbmZpZyBCVFJGU19ERUJVR1xcbmZzL2J0cmZzL0tjb25maWctNjEtXFx0Ym9vbCBcXFwiQnRyZnMgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuZnMvYnRyZnMvS2NvbmZpZzo2MjpcXHRkZXBlbmRzIG9uIEJUUkZTX0ZTXFxuZnMvYnRyZnMvS2NvbmZpZy02My1cXHRzZWxlY3QgUkVGX1RSQUNLRVIgaWYgU1RBQ0tUUkFDRV9TVVBQT1JUXFxuLS1cXG5mcy9idHJmcy9LY29uZmlnPTc0PWNvbmZpZyBCVFJGU19BU1NFUlRcXG5mcy9idHJmcy9LY29uZmlnLTc1LVxcdGJvb2wgXFxcIkJ0cmZzIGFzc2VydCBzdXBwb3J0XFxcIlxcbmZzL2J0cmZzL0tjb25maWc6NzY6XFx0ZGVwZW5kcyBvbiBCVFJGU19GU1xcbmZzL2J0cmZzL0tjb25maWctNzctXFx0aGVscFxcbi0tXFxuZnMvYnRyZnMvS2NvbmZpZz04NT1jb25maWcgQlRSRlNfRVhQRVJJTUVOVEFMXFxuZnMvYnRyZnMvS2NvbmZpZy04Ni1cXHRib29sIFxcXCJCdHJmcyBleHBlcmltZW50YWwgZmVhdHVyZXNcXFwiXFxuZnMvYnRyZnMvS2NvbmZpZzo4NzpcXHRkZXBlbmRzIG9uIEJUUkZTX0ZTXFxuZnMvYnRyZnMvS2NvbmZpZy04OC1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDk6NDY6NTUuNDA1MzgwMTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0MDcwODA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFRob3VnaHRzKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZS4gVGhlIGJpZyBvbmUgZm9yIEJ0cmZzIGlzLCBvYnZpb3VzbHksIGBDT05GSUdfQlRSRlNfRlNgLiBUaGF0J3MgdGhlIGNvcmUuIEJ1dCBJJ20gYWxzbyB0aGlua2luZyBhYm91dCBpb191cmluZywgc2luY2UgaXQgc2VlbXMgdG8gYmUgcmVsZXZhbnQuIEhtbSwgcmlnaHQsIHRoYXQncyBlbmFibGVkIGJ5IGBDT05GSUdfSU9fVVJJTkdgLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGBDT05GSUdfSU9fVVJJTkdgIGlzICpyZXF1aXJlZCogaGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBjbGVhcmx5LiBPa2F5LCB5ZXMuIENsZWFybHksIHRvIGFjdHVhbGx5ICp1c2UqIGlvX3VyaW5nIGNvbW1hbmRzIHdpdGggdGhlIGZpbGVzeXN0ZW0sIGBDT05GSUdfSU9fVVJJTkdgIGl0c2VsZiBpcyBhIHByZXJlcXVpc2l0ZS5cblxuU28sIGxldCdzIG5haWwgdGhpcyBkb3duLiBJdCBzZWVtcyBJJ2xsIG5lZWQgYm90aCBgQlRSRlNfRlNgIGFuZCBgSU9fVVJJTkdgIGVuYWJsZWQgdG8gbWFrZSB0aGUgYXBwcm9wcmlhdGUgY2FsbHMgdG8gdGhlIGlvX3VyaW5nIHN1YnN5c3RlbSB3aXRoaW4gQnRyZnMuXG5cbkFscmlnaHQsIGJlZm9yZSBJIGNvbXBsZXRlbHkgY29tbWl0IHRvIHRoYXQsIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZyBieSBsb29raW5nIHNwZWNpZmljYWxseSBhdCBgYnRyZnNfdXJpbmdfY21kYCB3aXRoaW4gYGZzL2J0cmZzL2lvY3RsLmNgLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJ3QgbWlzc2VkIGEgbnVhbmNlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0J3Mgd2hlcmUgdGhlIGlvX3VyaW5nIGludGVncmF0aW9uIGhhcHBlbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NzEwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjU5LjQ0NjA5MTE3MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkwMDg5NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRyZnNfdXJpbmdfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J0cmZzL2lvY3RsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnRyZnMvaW9jdGwuYz00ODM4PXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNDk1OC1cXG5mcy9idHJmcy9pb2N0bC5jOjQ5NTk6aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG5mcy9idHJmcy9pb2N0bC5jLTQ5NjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0Njo1OS41MTUxMDQ5MTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkzNTk0OTQzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNoZWNraW5nIHRoZSBDb25kaXRpb25hbCBDb21waWxhdGlvbiBvZiBgYnRyZnNfdXJpbmdfY21kYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIHRoZSBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgYnRyZnNfdXJpbmdfY21kYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBxdWVzdGlvbiBpczogSXMgdGhpcyBmdW5jdGlvbiBjb25kaXRpb25hbGx5IGNvbXBpbGVkPyBTcGVjaWZpY2FsbHksIGlzIGl0IHdyYXBwZWQgaW4gYW55IGAjaWZkZWZgIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzPyBJIG5lZWQgdG8ga25vdyBpZiBpdCdzIG9ubHkgYWN0aXZlIHVuZGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMgb3Iga2VybmVsIGJ1aWxkcy4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwb3J0YWJpbGl0eSBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgQnRyZnMgZmlsZXN5c3RlbS4gSXQgY291bGQgYmUgdGllZCB0byBhIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9uLCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBmbGFnLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseS4gSWYgaXQgKmlzKiBjb25kaXRpb25hbCwgZmlndXJpbmcgb3V0IHRoZSBzcGVjaWZpYyBjb25kaXRpb24gaXMgdGhlIG5leHQgb3JkZXIgb2YgYnVzaW5lc3MuIEtub3dpbmcgdGhlIGNvbmRpdGlvbnMgb2YgaXRzIGV4aXN0ZW5jZSBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcGxhY2UgaW4gdGhlIEJ0cmZzIGVjb3N5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyNDQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NzowNS40NTEwNTcyMDVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MTg3NTE2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaWZkZWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYnRyZnMvaW9jdGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9idHJmcy9pb2N0bC5jLTYyLVxcbmZzL2J0cmZzL2lvY3RsLmM6NjM6I2lmZGVmIENPTkZJR182NEJJVFxcbmZzL2J0cmZzL2lvY3RsLmMtNjQtLyogSWYgd2UgaGF2ZSBhIDMyLWJpdCB1c2Vyc3BhY2UgYW5kIDY0LWJpdCBrZXJuZWwsIHRoZW4gdGhlIFVBUElcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9MTk1Nz1zdGF0aWMgaW50IF9idHJmc19pb2N0bF9nZXRfc3Vidm9sX2luZm8oc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtMjA2MC1cXG5mcy9idHJmcy9pb2N0bC5jOjIwNjE6I2lmZGVmIENPTkZJR182NEJJVFxcbmZzL2J0cmZzL2lvY3RsLmMtMjA2Mi1zdGF0aWMgaW50IGJ0cmZzX2lvY3RsX2dldF9zdWJ2b2xfaW5mb18zMihzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkIF9fdXNlciAqYXJncClcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9Mzg1ND1zdGF0aWMgbG9uZyBfYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtMzk2MS1cXG5mcy9idHJmcy9pb2N0bC5jOjM5NjI6I2lmZGVmIENPTkZJR182NEJJVFxcbmZzL2J0cmZzL2lvY3RsLmMtMzk2My1zdGF0aWMgbG9uZyBidHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sXzMyKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYz01NDgyPWxvbmcgYnRyZnNfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy01NTc4LVxcdFxcdHJldHVybiBidHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sKGZpbGUsIGFyZ3ApO1xcbmZzL2J0cmZzL2lvY3RsLmM6NTU3OTojaWZkZWYgQ09ORklHXzY0QklUXFxuZnMvYnRyZnMvaW9jdGwuYy01NTgwLVxcdGNhc2UgQlRSRlNfSU9DX1NFVF9SRUNFSVZFRF9TVUJWT0xfMzI6XFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTU2MTQtXFx0XFx0cmV0dXJuIGJ0cmZzX2lvY3RsX2dldF9zdWJ2b2xfaW5mbyhpbm9kZSwgYXJncCk7XFxuZnMvYnRyZnMvaW9jdGwuYzo1NjE1OiNpZmRlZiBDT05GSUdfNjRCSVRcXG5mcy9idHJmcy9pb2N0bC5jLTU2MTYtXFx0Y2FzZSBCVFJGU19JT0NfR0VUX1NVQlZPTF9JTkZPXzMyOlxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy01NjQ5LVxcbmZzL2J0cmZzL2lvY3RsLmM6NTY1MDojaWZkZWYgQ09ORklHX0NPTVBBVFxcbmZzL2J0cmZzL2lvY3RsLmMtNTY1MS1sb25nIGJ0cmZzX2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ3OjA1LjgyMjkzNjE3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMzYxMDU4NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJ0cmZzIElPX1VSaW5nIENvbmZpZ3VyYXRpb24gYW5kIEtleSBTeW1ib2xzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB0aGVyZSdzIG5vIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGd1YXJkLCBgI2lmZGVmIENPTkZJR19JT19VUklOR2AsIHN1cnJvdW5kaW5nIGBidHJmc191cmluZ19jbWRgLiBUaGlzIG1lYW5zIHRoYXQgaWYgQlRSRlMgaXMgZW5hYmxlZCwgdGhlIGNvZGUgZm9yIGBidHJmc191cmluZ19jbWRgICp3aWxsKiBiZSBjb21waWxlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGlvX3VyaW5nIGlzLiBIb3dldmVyLCB0byAqYWN0dWFsbHkqIGhhdmUgaXQgZnVuY3Rpb24sIHdlIGFic29sdXRlbHkgbmVlZCBgQ09ORklHX0lPX1VSSU5HYCBlbmFibGVkIGluIHRoZSBrZXJuZWwgdG8gYWxsb3cgaW9fdXJpbmcgdG8gY2FsbCBpdC4gU28sIGVuYWJsaW5nIGJvdGggYEJUUkZTX0ZTYCBhbmQgYElPX1VSSU5HYCBpcyB0aGUgcmlnaHQgbW92ZSBmb3IgdXNpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LlxuXG5Ob3csIGZvciB0aGUgZm9jdXMgc3ltYm9scy4gSSBuZWVkIHRvIGlkZW50aWZ5IHdoYXQncyBjcnVjaWFsLiBJJ3ZlIGdvdDogYGJ0cmZzX3VyaW5nX2NtZGAsIGBidHJmc19lbmNvZGVkX3JlYWRgLCBhbmQgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgLiBJIHdhcyBpbml0aWFsbHkgY29uc2lkZXJpbmcgYF9faW1wb3J0X2lvdmVjYCwgYnV0LCBvbiBzZWNvbmQgdGhvdWdodCwgaXQncyBwcm9iYWJseSB0b28gZ2VuZXJpYyBhbmQgYSBob3QtcGF0aCBmdW5jdGlvbiB1c2VkIHdpZGVseS4gV2Ugd2FudCB0byBhdm9pZCBiaWFzaW5nIHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbi5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgaG90LXBhdGggc3RhdHVzIGZvciBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgYW5kIGBidHJmc19lbmNvZGVkX3JlYWRgLiBUaGV5J3JlIHNwZWNpZmljIHRvIFwiZW5jb2RlZCByZWFkc1wiLCB3aGljaCBpcyBhIHJlbGF0aXZlbHkgc3BlY2lhbGl6ZWQgZmVhdHVyZS4gVGhpcyBpbmNsdWRlcyB0aGluZ3MgbGlrZSBidHJmcyBzZW5kL3JlY2VpdmUgb3IgY2VydGFpbiBpb2N0bHMuIFRoZXkncmUgbm90IHBhcnQgb2YgdGhlIHN0YW5kYXJkIHJlYWQgcGF0aCwgd2hpY2ggaXMgZ29vZC4gYGJ0cmZzX3VyaW5nX2NtZGAgaXRzZWxmIGlzIHRoZSBpb191cmluZyBlbnRyeSBwb2ludCBmb3IgYnRyZnMuIFJpZ2h0IG5vdywgaXQgaGFuZGxlcyBlbmNvZGVkIHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4gU28sIGl0IGlzIG5vdCBhIGdlbmVyaWMgaG90IHBhdGggZWl0aGVyLlxuXG5UaGVyZWZvcmUsIGFmdGVyIHRoaXMgcmV2aWV3LCBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgcmVtYWluczpcbi0gYGJ0cmZzX3VyaW5nX2NtZGBcbi0gYGJ0cmZzX2VuY29kZWRfcmVhZGBcbi0gYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgXG5cbk5leHQgc3RlcCwgY2hlY2sgaWYgYGJ0cmZzX2VuY29kZWRfcmVhZGAgaXMgZXhwb3J0ZWQgb3IganVzdCBnbG9iYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MDk1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ3OjEzLjg1OTA0NDY4M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU2ODkyNjYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmJ0cmZzX2VuY29kZWRfcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9idHJmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ3OjEzLjkyNDczOTQxOVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTQ2OTk3OTkxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIGJ0cmZzIGlvX3VyaW5nIFRhcmdldHMgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIGdsb2JhbCB3aXRoaW4gYnRyZnMsIHdoaWNoIGlzIGZpbmUsIGFzIHN5emthbGxlciBjYW4gdGFyZ2V0IGl0IGdpdmVuIHRoZSBzeW1ib2wgbmFtZS5cblxuSW5pdGlhbGx5LCBJIGlkZW50aWZpZWQgYGJ0cmZzX3VyaW5nX2NtZGAgYXMgYSBwb3RlbnRpYWwgY2FuZGlkYXRlLCBhcyBpdCBpcyBnbG9iYWwuIFRoZW4gSSBjaGVja2VkIGBidHJmc191cmluZ19lbmNvZGVkX3JlYWRgIGFuZCBgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZWAsIGJ1dCB0aGV5J3JlIHN0YXRpYyBhbmQgbGlrZWx5IHRvIGJlIGlubGluZWQsIGVsaW1pbmF0aW5nIHRoZW0gYXMgZ29vZCBjaG9pY2VzLiBUaGUgcHJvbXB0IGRvZXMgc2F5IHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28gYGJ0cmZzX3VyaW5nX2NtZGAgc2VlbXMgbGlrZSB0aGUgaW5pdGlhbCByaWdodCBjaG9pY2UuXG5cbkknbGwgZG91YmxlLWNoZWNrIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJIHNlZSBgYnRyZnNfdXJpbmdfcmVhZF9maW5pc2hlZGAgYW5kIGBidHJmc191cmluZ19yZWFkX2V4dGVudGAsIHdoaWNoIGFyZSBhbHNvIHN0YXRpYy4gVGhlbiB0aGUgc3RhdGljIGZ1bmN0aW9ucyBgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkYCwgYW5kIGBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlYC4gTGFzdGx5LCBgX19pbXBvcnRfaW92ZWNgIHdoaWNoIGlzIGV4cG9ydGVkLCBidXQgaXMgYSBnZW5lcmljIGhvdC1wYXRoLlxuXG5TbywgbGV0J3MgbmFpbCBkb3duIHdoYXQgc3ltYm9scyBhcmUgaW1wYWN0ZWQuIEJhc2VkIG9uIG15IHJldmlldywgc28gZmFyIEkndmUgbm90ZWQ6XG4qICAgYGJ0cmZzX3VyaW5nX2NtZGBcblxuTm93LCBsZXQncyByZXZpZXcgdGhlIG1vZGlmaWNhdGlvbnMgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGlzbid0IG1vcmUgdG8gY29uc2lkZXIuXG5cbkkgc2VlIHRoYXQgYGJ0cmZzX2VuY29kZWRfcmVhZGAgaXNuJ3QgbW9kaWZpZWQuIE9rLiBCdXQgd2hhdCBhYm91dCBjYWxsZXJzPyBMZXQncyBjaGVjayB0aGUgZGlmZiBhZ2Fpbi4gSSBzZWUgbm93IHRoYXQgdGhlIGRpZmYgbW9kaWZpZXM6XG5cbiogICBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2BcbiogICBgYnRyZnNfdXJpbmdfcmVhZF9maW5pc2hlZGBcbiogICBgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRgXG4qICAgYGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZGBcbiogICBgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZWBcbiogICBgX19pbXBvcnRfaW92ZWNgXG5cbk9rYXksIGdvb2QuIFNvIGBidHJmc19lbmNvZGVkX3JlYWRgICppcyogbm90IG1vZGlmaWVkLiBPbmx5IHRoZSBjYWxsZXJzLiBUaGVyZWZvcmUsIGBidHJmc19lbmNvZGVkX3JlYWRgIGlzbid0IGluIHNjb3BlLlxuXG5Ob3csIGxldCBtZSBjaGVjayB0aGUgZGlmZiBmb3IgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgIHRvIGNvbmZpcm0uIFllcCwgdGhlIGNvZGUgbW9kaWZpZXMgdGhlIGNvbXBsZXRpb24gbG9naWMsIHNvIGl0IGlzIGRlZmluaXRlbHkgbW9kaWZpZWQgYW5kIGEgZm9jdXMgc3ltYm9sLlxuXG5UaGVyZWZvcmUsIHRoZSBmaW5hbCBmb2N1cyBzeW1ib2xzIGFyZTpcblxuKiAgIGBidHJmc191cmluZ19jbWRgXG4qICAgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgXG5cbkdpdmVuIHdoYXQgSSdtIHNlZWluZywgdGhpcyBpcyBmdW5jdGlvbmFsLCBhbmQgdGhlIGZpeGVzIGNvdmVyIG1lbW9yeSBsZWFrcywgbG9ja2luZyBpc3N1ZXMsIGFuZCBpb191cmluZyByZXRyeSBsb2dpYyB3aXRoaW4gYnRyZnMuIFRoZXNlIG1vZGlmaWNhdGlvbnMgYXJlIGhpdHRpbmcgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHdpdGhpbiB0aGUgYnRyZnMgZmlsZXN5c3RlbSBhbmQgaXRzIGludGVncmF0aW9uIHdpdGggaW9fdXJpbmcuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBmdXp6aW5nLiBUaGUgcmVxdWlyZWQgY29uZmlncyB3b3VsZCBiZSBgQlRSRlNfRlNgIGFuZCBgSU9fVVJJTkdgLlxuXG5BbHJpZ2h0LCBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk4MSwiT3V0cHV0VG9rZW5zIjoxMjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDk6NDc6MjUuMzk0NzMwNDE1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5NTk2MDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCVFJGU19GU1wiLFxuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidHJmc191cmluZ19jbWRcIixcbiAgICBcImJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBtZW1vcnkgbGVha3MsIGxvY2tpbmcgaXNzdWVzLCBhbmQgaW9fdXJpbmcgcmV0cnkgbG9naWMgaW4gYnRyZnMgaW9fdXJpbmcgZW5jb2RlZCByZWFkL3dyaXRlIG9wZXJhdGlvbnMuIEl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgYnRyZnMgZmlsZXN5c3RlbSBhbmQgaW9fdXJpbmcgaW50ZWdyYXRpb24sIHdoaWNoIGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlRSRlNfRlNcIixcbiAgICBcIklPX1VSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRyZnNfdXJpbmdfY21kXCIsXG4gICAgXCJidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbWVtb3J5IGxlYWtzLCBsb2NraW5nIGlzc3VlcywgYW5kIGlvX3VyaW5nIHJldHJ5IGxvZ2ljIGluIGJ0cmZzIGlvX3VyaW5nIGVuY29kZWQgcmVhZC93cml0ZSBvcGVyYXRpb25zLiBJdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgaW4gdGhlIGJ0cmZzIGZpbGVzeXN0ZW0gYW5kIGlvX3VyaW5nIGludGVncmF0aW9uLCB3aGljaCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow98mw4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 09:08:10 +0000 UTC FinishedAt: 2026-08-06 09:47:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "2d2338c93da79b3bfe4b6099a931d9468d539952", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BTRFS_FS", "IO_URING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "2d2338c93da79b3bfe4b6099a931d9468d539952", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BTRFS_FS", "IO_URING" ], "series_id": "5a85df1c-48af-4f4a-87dc-64ef3baf0bd1" }, "track": "KASAN", "fuzz": { "focus": [ "fs", "io_uring" ], "focus_symbols": [ "btrfs_uring_cmd", "btrfs_encoded_read_regular_fill_pages" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JUUkZTX0ZTJiMzNDssCiAgICAmIzM0O0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnRyZnNfdXJpbmdfY21kJiMzNDssCiAgICAmIzM0O2J0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbWVtb3J5IGxlYWtzLCBsb2NraW5nIGlzc3VlcywgYW5kIGlvX3VyaW5nIHJldHJ5IGxvZ2ljIGluIGJ0cmZzIGlvX3VyaW5nIGVuY29kZWQgcmVhZC93cml0ZSBvcGVyYXRpb25zLiBJdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgaW4gdGhlIGJ0cmZzIGZpbGVzeXN0ZW0gYW5kIGlvX3VyaW5nIGludGVncmF0aW9uLCB3aGljaCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDI2NTJmM2JjNGJkY2VjYWRkMDIzOTQ2MDRmNmE1NGJjMDQ0YzFmZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMDk6NDY6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW5vZGUuYyBiL2ZzL2J0cmZzL2lub2RlLmNcbmluZGV4IGI0NDZjMzAxNGIyNDAuLjhlM2NlZTM4NDVlNmYgMTAwNjQ0XG4tLS0gYS9mcy9idHJmcy9pbm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9idHJmcy9pbm9kZS5jXG5AQCAtOTQxMSw3ICYjNDM7OTQxMSw2IEBAIGludCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsXG4gXHRzdHJ1Y3QgY29tcGxldGlvbiBzeW5jX3JlYWRzO1xuIFx0dW5zaWduZWQgbG9uZyBpID0gMDtcbiBcdHN0cnVjdCBidHJmc19iaW8gKmJiaW87XG4tXHRpbnQgcmV0O1xuIFxuIFx0LypcbiBcdCAqIEZhc3QgcGF0aCBmb3Igc3luY2hyb25vdXMgcmVhZHMgd2hpY2ggY29tcGxldGVzIGluIHRoaXMgY2FsbCwgaW9fdXJpbmdcbkBAIC05NDU4LDEwICYjNDM7OTQ1NywxMCBAQCBpbnQgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLFxuIFxuIFx0aWYgKHVyaW5nX2N0eCkge1xuIFx0XHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNnByaXYtXHUwMDNlcGVuZGluZ19yZWZzKSkge1xuLVx0XHRcdHJldCA9IGJsa19zdGF0dXNfdG9fZXJybm8oUkVBRF9PTkNFKHByaXYtXHUwMDNlc3RhdHVzKSk7XG4tXHRcdFx0YnRyZnNfdXJpbmdfcmVhZF9leHRlbnRfZW5kaW8odXJpbmdfY3R4LCByZXQpO1xuJiM0MztcdFx0XHRpbnQgZXJyID0gYmxrX3N0YXR1c190b19lcnJubyhSRUFEX09OQ0UocHJpdi1cdTAwM2VzdGF0dXMpKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50X2VuZGlvKHVyaW5nX2N0eCwgZXJyKTtcbiBcdFx0XHRrZnJlZShwcml2KTtcbi1cdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXG4gXHRcdHJldHVybiAtRUlPQ0JRVUVVRUQ7XG5kaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmNcbmluZGV4IGJhYTY0NWU5ODgxMjYuLjEwNjU0MTZiY2IxZGQgMTAwNjQ0XG4tLS0gYS9mcy9idHJmcy9pb2N0bC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9idHJmcy9pb2N0bC5jXG5AQCAtNDU1Miw3ICYjNDM7NDU1Miw3IEBAIHN0YXRpYyB2b2lkIGJ0cmZzX3VyaW5nX3JlYWRfZmluaXNoZWQoc3RydWN0IGlvX3R3X3JlcSB0d19yZXEsIGlvX3R3X3Rva2VuX3QgdHcpXG4gXHRzaXplX3QgcGFnZV9vZmZzZXQ7XG4gXHRzc2l6ZV90IHJldDtcbiBcbi1cdC8qIFRoZSBpbm9kZSBsb2NrIGhhcyBhbHJlYWR5IGJlZW4gYWNxdWlyZWQgaW4gYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQuICAqL1xuJiM0MztcdC8qIFRoZSBpbm9kZSBsb2NrIGhhcyBhbHJlYWR5IGJlZW4gYWNxdWlyZWQgaW4gYnRyZnNfZW5jb2RlZF9yZWFkKCkuICovXG4gXHRidHJmc19sb2NrZGVwX2lub2RlX2FjcXVpcmUoaW5vZGUsIGlfcndzZW0pO1xuIFxuIFx0aWYgKHByaXYtXHUwMDNlZXJyKSB7XG5AQCAtNDYxOCw3ICYjNDM7NDYxOCw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgaW92ZWMgKmlvdiwgc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kKVxuIHtcbiBcdHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUgPSBCVFJGU19JKGZpbGVfaW5vZGUoaW9jYi1cdTAwM2VraV9maWxwKSk7XG4tXHRzdHJ1Y3QgZXh0ZW50X2lvX3RyZWUgKmlvX3RyZWUgPSBcdTAwMjZpbm9kZS1cdTAwM2Vpb190cmVlO1xuIFx0c3RydWN0IHBhZ2UgKipwYWdlcyA9IE5VTEw7XG4gXHRzdHJ1Y3QgYnRyZnNfdXJpbmdfcHJpdiAqcHJpdiA9IE5VTEw7XG4gXHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzO1xuQEAgLTQ2MjYsOCAmIzQzOzQ2MjUsMTAgQEAgc3RhdGljIGludCBidHJmc191cmluZ19yZWFkX2V4dGVudChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbiBcbiBcdG5yX3BhZ2VzID0gRElWX1JPVU5EX1VQKGRpc2tfaW9fc2l6ZSwgUEFHRV9TSVpFKTtcbiBcdHBhZ2VzID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIG5yX3BhZ2VzLCBHRlBfTk9GUyk7XG4tXHRpZiAoIXBhZ2VzKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHRpZiAoIXBhZ2VzKSB7XG4mIzQzO1x0XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcdFx0Z290byBvdXRfZmFpbDtcbiYjNDM7XHR9XG4gXHRyZXQgPSBidHJmc19hbGxvY19wYWdlX2FycmF5KG5yX3BhZ2VzLCBwYWdlcywgR0ZQX05PRlMpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuQEAgLTQ2NzQsMTIgJiM0Mzs0Njc1LDEyIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4gXHRyZXR1cm4gLUVJT0NCUVVFVUVEO1xuIFxuIG91dF9mYWlsOlxuLVx0YnRyZnNfdW5sb2NrX2V4dGVudChpb190cmVlLCBzdGFydCwgbG9ja2VuZCwgXHUwMDI2Y2FjaGVkX3N0YXRlKTtcbi1cdGJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgQlRSRlNfSUxPQ0tfU0hBUkVEKTtcbiBcdGtmcmVlKHByaXYpO1xuLVx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIG5yX3BhZ2VzOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAocGFnZXNbaV0pXG4tXHRcdFx0X19mcmVlX3BhZ2UocGFnZXNbaV0pO1xuJiM0MztcdGlmIChwYWdlcykge1xuJiM0MztcdFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIG5yX3BhZ2VzOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRpZiAocGFnZXNbaV0pXG4mIzQzO1x0XHRcdFx0X19mcmVlX3BhZ2UocGFnZXNbaV0pO1xuJiM0MztcdFx0fVxuIFx0fVxuIFx0a2ZyZWUocGFnZXMpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC00NzAzLDkgJiM0Mzs0NzA0LDYgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3JlYWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWVcbiBcdHN0cnVjdCBpb19idHJmc19jbWQgKmJjID0gaW9fdXJpbmdfY21kX3RvX3BkdShjbWQsIHN0cnVjdCBpb19idHJmc19jbWQpO1xuIFx0c3RydWN0IGJ0cmZzX3VyaW5nX2VuY29kZWRfZGF0YSAqZGF0YSA9IE5VTEw7XG4gXG4tXHRpZiAoY21kLVx1MDAzZWZsYWdzIFx1MDAyNiBJT1JJTkdfVVJJTkdfQ01EX1JFSVNTVUUpXG4tXHRcdGRhdGEgPSBiYy1cdTAwM2VkYXRhO1xuLVxuIFx0aWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKSB7XG4gXHRcdHJldCA9IC1FUEVSTTtcbiBcdFx0Z290byBvdXRfYWNjdDtcbkBAIC00NzU5LDkgJiM0Mzs0NzU3LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlXG4gXHRcdH1cbiBcbiBcdFx0ZGF0YS1cdTAwM2Vpb3YgPSBkYXRhLVx1MDAzZWlvdnN0YWNrO1xuLVx0XHRyZXQgPSBpbXBvcnRfaW92ZWMoSVRFUl9ERVNULCBkYXRhLVx1MDAzZWFyZ3MuaW92LCBkYXRhLVx1MDAzZWFyZ3MuaW92Y250LFxuLVx0XHRcdFx0ICAgQVJSQVlfU0laRShkYXRhLVx1MDAzZWlvdnN0YWNrKSwgXHUwMDI2ZGF0YS1cdTAwM2Vpb3YsXG4tXHRcdFx0XHQgICBcdTAwMjZkYXRhLVx1MDAzZWl0ZXIpO1xuJiM0MztcdFx0cmV0ID0gX19pbXBvcnRfaW92ZWMoSVRFUl9ERVNULCBkYXRhLVx1MDAzZWFyZ3MuaW92LCBkYXRhLVx1MDAzZWFyZ3MuaW92Y250LFxuJiM0MztcdFx0XHRcdCAgICAgQVJSQVlfU0laRShkYXRhLVx1MDAzZWlvdnN0YWNrKSwgXHUwMDI2ZGF0YS1cdTAwM2Vpb3YsXG4mIzQzO1x0XHRcdFx0ICAgICBcdTAwMjZkYXRhLVx1MDAzZWl0ZXIsXG4mIzQzO1x0XHRcdFx0ICAgICAhIShpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9DT01QQVQpKTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIG91dF9hY2N0O1xuIFxuQEAgLTQ3ODcsOCAmIzQzOzQ3ODYsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxuIFxuIFx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkKFx1MDAyNmtpb2NiLCBcdTAwMjZkYXRhLVx1MDAzZWl0ZXIsIFx1MDAyNmRhdGEtXHUwMDNlYXJncywgXHUwMDI2Y2FjaGVkX3N0YXRlLFxuIFx0XHRcdFx0IFx1MDAyNmRpc2tfYnl0ZW5yLCBcdTAwMjZkaXNrX2lvX3NpemUpO1xuLVx0aWYgKHJldCA9PSAtRUFHQUlOKVxuLVx0XHRnb3RvIG91dF9hY2N0O1xuIFx0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FSU9DQlFVRVVFRClcbiBcdFx0Z290byBvdXRfZnJlZTtcbiBcbkBAIC00ODE2LDggJiM0Mzs0ODEzLDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlXG4gXHRcdFx0XHRcdCAgICAgIGNhY2hlZF9zdGF0ZSwgZGlza19ieXRlbnIsIGRpc2tfaW9fc2l6ZSxcbiBcdFx0XHRcdFx0ICAgICAgY291bnQsIGRhdGEtXHUwMDNlYXJncy5jb21wcmVzc2lvbixcbiBcdFx0XHRcdFx0ICAgICAgZGF0YS1cdTAwM2Vpb3YsIGNtZCk7XG4tXG4tXHRcdGdvdG8gb3V0X2FjY3Q7XG4mIzQzO1x0XHRpZiAocmV0ID09IC1FSU9DQlFVRVVFRClcbiYjNDM7XHRcdFx0Z290byBvdXRfYWNjdDtcbiYjNDM7XHRcdGJ0cmZzX3VubG9ja19leHRlbnQoaW9fdHJlZSwgc3RhcnQsIGxvY2tlbmQsIFx1MDAyNmNhY2hlZF9zdGF0ZSk7XG4mIzQzO1x0XHRidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIEJUUkZTX0lMT0NLX1NIQVJFRCk7XG4gXHR9XG4gXG4gb3V0X2ZyZWU6XG5AQCAtNDgyOCw4ICYjNDM7NDgyNywxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxuIFx0XHRhZGRfcmNoYXIoY3VycmVudCwgcmV0KTtcbiBcdGluY19zeXNjcihjdXJyZW50KTtcbiBcbi1cdGlmIChyZXQgIT0gLUVJT0NCUVVFVUVEIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVBR0FJTilcbiYjNDM7XHRpZiAocmV0ICE9IC1FSU9DQlFVRVVFRCkge1xuIFx0XHRrZnJlZShkYXRhKTtcbiYjNDM7XHRcdGJjLVx1MDAzZWRhdGEgPSBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTQ4NDEsMTIgJiM0Mzs0ODQyLDggQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VcbiBcdHN0cnVjdCBraW9jYiBraW9jYjtcbiBcdHNzaXplX3QgcmV0O1xuIFx0dm9pZCBfX3VzZXIgKnNxZV9hZGRyO1xuLVx0c3RydWN0IGlvX2J0cmZzX2NtZCAqYmMgPSBpb191cmluZ19jbWRfdG9fcGR1KGNtZCwgc3RydWN0IGlvX2J0cmZzX2NtZCk7XG4gXHRzdHJ1Y3QgYnRyZnNfdXJpbmdfZW5jb2RlZF9kYXRhICpkYXRhID0gTlVMTDtcbiBcbi1cdGlmIChjbWQtXHUwMDNlZmxhZ3MgXHUwMDI2IElPUklOR19VUklOR19DTURfUkVJU1NVRSlcbi1cdFx0ZGF0YSA9IGJjLVx1MDAzZWRhdGE7XG4tXG4gXHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpIHtcbiBcdFx0cmV0ID0gLUVQRVJNO1xuIFx0XHRnb3RvIG91dF9hY2N0O1xuQEAgLTQ4NTgsNiAmIzQzOzQ4NTUsMTEgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VcbiBcdFx0Z290byBvdXRfYWNjdDtcbiBcdH1cbiBcbiYjNDM7XHRpZiAoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spIHtcbiYjNDM7XHRcdHJldCA9IC1FQUdBSU47XG4mIzQzO1x0XHRnb3RvIG91dF9hY2N0O1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoIWRhdGEpIHtcbiBcdFx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhLCBHRlBfTk9GUyk7XG4gXHRcdGlmICghZGF0YSkge1xuQEAgLTQ4NjUsOCAmIzQzOzQ4NjcsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxuIFx0XHRcdGdvdG8gb3V0X2FjY3Q7XG4gXHRcdH1cbiBcbi1cdFx0YmMtXHUwMDNlZGF0YSA9IGRhdGE7XG4tXG4gXHRcdGlmIChpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9DT01QQVQpIHtcbiAjaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19DT01QQVQpXG4gXHRcdFx0c3RydWN0IGJ0cmZzX2lvY3RsX2VuY29kZWRfaW9fYXJnc18zMiBhcmdzMzI7XG5AQCAtNDkxNCw5ICYjNDM7NDkxNCwxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxuIFx0XHRcdGdvdG8gb3V0X2FjY3Q7XG4gXG4gXHRcdGRhdGEtXHUwMDNlaW92ID0gZGF0YS1cdTAwM2Vpb3ZzdGFjaztcbi1cdFx0cmV0ID0gaW1wb3J0X2lvdmVjKElURVJfU09VUkNFLCBkYXRhLVx1MDAzZWFyZ3MuaW92LCBkYXRhLVx1MDAzZWFyZ3MuaW92Y250LFxuLVx0XHRcdFx0ICAgQVJSQVlfU0laRShkYXRhLVx1MDAzZWlvdnN0YWNrKSwgXHUwMDI2ZGF0YS1cdTAwM2Vpb3YsXG4tXHRcdFx0XHQgICBcdTAwMjZkYXRhLVx1MDAzZWl0ZXIpO1xuJiM0MztcdFx0cmV0ID0gX19pbXBvcnRfaW92ZWMoSVRFUl9TT1VSQ0UsIGRhdGEtXHUwMDNlYXJncy5pb3YsIGRhdGEtXHUwMDNlYXJncy5pb3ZjbnQsXG4mIzQzO1x0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGRhdGEtXHUwMDNlaW92c3RhY2spLCBcdTAwMjZkYXRhLVx1MDAzZWlvdixcbiYjNDM7XHRcdFx0XHQgICAgIFx1MDAyNmRhdGEtXHUwMDNlaXRlcixcbiYjNDM7XHRcdFx0XHQgICAgICEhKGlzc3VlX2ZsYWdzIFx1MDAyNiBJT19VUklOR19GX0NPTVBBVCkpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdGdvdG8gb3V0X2FjY3Q7XG4gXG5AQCAtNDkyNiwxMSAmIzQzOzQ5MjcsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spIHtcbi1cdFx0cmV0ID0gLUVBR0FJTjtcbi1cdFx0Z290byBvdXRfYWNjdDtcbi1cdH1cbi1cbiBcdHBvcyA9IGRhdGEtXHUwMDNlYXJncy5vZmZzZXQ7XG4gXHRyZXQgPSByd192ZXJpZnlfYXJlYShXUklURSwgZmlsZSwgXHUwMDI2cG9zLCBkYXRhLVx1MDAzZWFyZ3MubGVuKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG5AQCAtNDk1Niw4ICYjNDM7NDk1Miw3IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1XG4gXHRcdGFkZF93Y2hhcihjdXJyZW50LCByZXQpO1xuIFx0aW5jX3N5c2N3KGN1cnJlbnQpO1xuIFxuLVx0aWYgKHJldCAhPSAtRUFHQUlOKVxuLVx0XHRrZnJlZShkYXRhKTtcbiYjNDM7XHRrZnJlZShkYXRhKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2xpYi9pb3ZfaXRlci5jIGIvbGliL2lvdl9pdGVyLmNcbmluZGV4IGMyNDg0NTUxYTRlODYuLjljMjE1OGQ1Y2NkZDMgMTAwNjQ0XG4tLS0gYS9saWIvaW92X2l0ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL2lvdl9pdGVyLmNcbkBAIC0xNDEwLDYgJiM0MzsxNDEwLDcgQEAgc3NpemVfdCBfX2ltcG9ydF9pb3ZlYyhpbnQgdHlwZSwgY29uc3Qgc3RydWN0IGlvdmVjIF9fdXNlciAqdXZlYyxcbiBcdFx0KmlvdnAgPSBpb3Y7XG4gXHRyZXR1cm4gdG90YWxfbGVuO1xuIH1cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoX19pbXBvcnRfaW92ZWMpO1xuIFxuIC8qKlxuICAqIGltcG9ydF9pb3ZlYygpIC0gQ29weSBhbiBhcnJheSBvZiBcdTAwMjZzdHJ1Y3QgaW92ZWMgZnJvbSB1c2Vyc3BhY2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwOTo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlRSRlNfRlMmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidHJmc191cmluZ19jbWQmIzM0OywKICAgICYjMzQ7YnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtZW1vcnkgbGVha3MsIGxvY2tpbmcgaXNzdWVzLCBhbmQgaW9fdXJpbmcgcmV0cnkgbG9naWMgaW4gYnRyZnMgaW9fdXJpbmcgZW5jb2RlZCByZWFkL3dyaXRlIG9wZXJhdGlvbnMuIEl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgYnRyZnMgZmlsZXN5c3RlbSBhbmQgaW9fdXJpbmcgaW50ZWdyYXRpb24sIHdoaWNoIGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMjY1MmYzYmM0YmRjZWNhZGQwMjM5NDYwNGY2YTU0YmMwNDRjMWZmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAwOTo0NjowMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lub2RlLmMgYi9mcy9idHJmcy9pbm9kZS5jCmluZGV4IGI0NDZjMzAxNGIyNDAuLjhlM2NlZTM4NDVlNmYgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvYnRyZnMvaW5vZGUuYwpAQCAtOTQxMSw3ICYjNDM7OTQxMSw2IEBAIGludCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsCiAJc3RydWN0IGNvbXBsZXRpb24gc3luY19yZWFkczsKIAl1bnNpZ25lZCBsb25nIGkgPSAwOwogCXN0cnVjdCBidHJmc19iaW8gKmJiaW87Ci0JaW50IHJldDsKIAogCS8qCiAJICogRmFzdCBwYXRoIGZvciBzeW5jaHJvbm91cyByZWFkcyB3aGljaCBjb21wbGV0ZXMgaW4gdGhpcyBjYWxsLCBpb191cmluZwpAQCAtOTQ1OCwxMCAmIzQzOzk0NTcsMTAgQEAgaW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSwKIAogCWlmICh1cmluZ19jdHgpIHsKIAkJaWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO3ByaXYtJmd0O3BlbmRpbmdfcmVmcykpIHsKLQkJCXJldCA9IGJsa19zdGF0dXNfdG9fZXJybm8oUkVBRF9PTkNFKHByaXYtJmd0O3N0YXR1cykpOwotCQkJYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRfZW5kaW8odXJpbmdfY3R4LCByZXQpOwomIzQzOwkJCWludCBlcnIgPSBibGtfc3RhdHVzX3RvX2Vycm5vKFJFQURfT05DRShwcml2LSZndDtzdGF0dXMpKTsKJiM0MzsKJiM0MzsJCQlidHJmc191cmluZ19yZWFkX2V4dGVudF9lbmRpbyh1cmluZ19jdHgsIGVycik7CiAJCQlrZnJlZShwcml2KTsKLQkJCXJldHVybiByZXQ7CiAJCX0KIAogCQlyZXR1cm4gLUVJT0NCUVVFVUVEOwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmMKaW5kZXggYmFhNjQ1ZTk4ODEyNi4uMTA2NTQxNmJjYjFkZCAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvaW9jdGwuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9idHJmcy9pb2N0bC5jCkBAIC00NTUyLDcgJiM0Mzs0NTUyLDcgQEAgc3RhdGljIHZvaWQgYnRyZnNfdXJpbmdfcmVhZF9maW5pc2hlZChzdHJ1Y3QgaW9fdHdfcmVxIHR3X3JlcSwgaW9fdHdfdG9rZW5fdCB0dykKIAlzaXplX3QgcGFnZV9vZmZzZXQ7CiAJc3NpemVfdCByZXQ7CiAKLQkvKiBUaGUgaW5vZGUgbG9jayBoYXMgYWxyZWFkeSBiZWVuIGFjcXVpcmVkIGluIGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50LiAgKi8KJiM0MzsJLyogVGhlIGlub2RlIGxvY2sgaGFzIGFscmVhZHkgYmVlbiBhY3F1aXJlZCBpbiBidHJmc19lbmNvZGVkX3JlYWQoKS4gKi8KIAlidHJmc19sb2NrZGVwX2lub2RlX2FjcXVpcmUoaW5vZGUsIGlfcndzZW0pOwogCiAJaWYgKHByaXYtJmd0O2VycikgewpAQCAtNDYxOCw3ICYjNDM7NDYxOCw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsCiAJCQkJICAgc3RydWN0IGlvdmVjICppb3YsIHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCkKIHsKIAlzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlID0gQlRSRlNfSShmaWxlX2lub2RlKGlvY2ItJmd0O2tpX2ZpbHApKTsKLQlzdHJ1Y3QgZXh0ZW50X2lvX3RyZWUgKmlvX3RyZWUgPSAmYW1wO2lub2RlLSZndDtpb190cmVlOwogCXN0cnVjdCBwYWdlICoqcGFnZXMgPSBOVUxMOwogCXN0cnVjdCBidHJmc191cmluZ19wcml2ICpwcml2ID0gTlVMTDsKIAl1bnNpZ25lZCBsb25nIG5yX3BhZ2VzOwpAQCAtNDYyNiw4ICYjNDM7NDYyNSwxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50KHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLAogCiAJbnJfcGFnZXMgPSBESVZfUk9VTkRfVVAoZGlza19pb19zaXplLCBQQUdFX1NJWkUpOwogCXBhZ2VzID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIG5yX3BhZ2VzLCBHRlBfTk9GUyk7Ci0JaWYgKCFwYWdlcykKLQkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CWlmICghcGFnZXMpIHsKJiM0MzsJCXJldCA9IC1FTk9NRU07CiYjNDM7CQlnb3RvIG91dF9mYWlsOwomIzQzOwl9CiAJcmV0ID0gYnRyZnNfYWxsb2NfcGFnZV9hcnJheShucl9wYWdlcywgcGFnZXMsIEdGUF9OT0ZTKTsKIAlpZiAocmV0KSB7CiAJCXJldCA9IC1FTk9NRU07CkBAIC00Njc0LDEyICYjNDM7NDY3NSwxMiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50KHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLAogCXJldHVybiAtRUlPQ0JRVUVVRUQ7CiAKIG91dF9mYWlsOgotCWJ0cmZzX3VubG9ja19leHRlbnQoaW9fdHJlZSwgc3RhcnQsIGxvY2tlbmQsICZhbXA7Y2FjaGVkX3N0YXRlKTsKLQlidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIEJUUkZTX0lMT0NLX1NIQVJFRCk7CiAJa2ZyZWUocHJpdik7Ci0JZm9yIChpbnQgaSA9IDA7IGkgJmx0OyBucl9wYWdlczsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKHBhZ2VzW2ldKQotCQkJX19mcmVlX3BhZ2UocGFnZXNbaV0pOwomIzQzOwlpZiAocGFnZXMpIHsKJiM0MzsJCWZvciAoaW50IGkgPSAwOyBpICZsdDsgbnJfcGFnZXM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkJaWYgKHBhZ2VzW2ldKQomIzQzOwkJCQlfX2ZyZWVfcGFnZShwYWdlc1tpXSk7CiYjNDM7CQl9CiAJfQogCWtmcmVlKHBhZ2VzKTsKIAlyZXR1cm4gcmV0OwpAQCAtNDcwMyw5ICYjNDM7NDcwNCw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlCiAJc3RydWN0IGlvX2J0cmZzX2NtZCAqYmMgPSBpb191cmluZ19jbWRfdG9fcGR1KGNtZCwgc3RydWN0IGlvX2J0cmZzX2NtZCk7CiAJc3RydWN0IGJ0cmZzX3VyaW5nX2VuY29kZWRfZGF0YSAqZGF0YSA9IE5VTEw7CiAKLQlpZiAoY21kLSZndDtmbGFncyAmYW1wOyBJT1JJTkdfVVJJTkdfQ01EX1JFSVNTVUUpCi0JCWRhdGEgPSBiYy0mZ3Q7ZGF0YTsKLQogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkgewogCQlyZXQgPSAtRVBFUk07CiAJCWdvdG8gb3V0X2FjY3Q7CkBAIC00NzU5LDkgJiM0Mzs0NzU3LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlCiAJCX0KIAogCQlkYXRhLSZndDtpb3YgPSBkYXRhLSZndDtpb3ZzdGFjazsKLQkJcmV0ID0gaW1wb3J0X2lvdmVjKElURVJfREVTVCwgZGF0YS0mZ3Q7YXJncy5pb3YsIGRhdGEtJmd0O2FyZ3MuaW92Y250LAotCQkJCSAgIEFSUkFZX1NJWkUoZGF0YS0mZ3Q7aW92c3RhY2spLCAmYW1wO2RhdGEtJmd0O2lvdiwKLQkJCQkgICAmYW1wO2RhdGEtJmd0O2l0ZXIpOwomIzQzOwkJcmV0ID0gX19pbXBvcnRfaW92ZWMoSVRFUl9ERVNULCBkYXRhLSZndDthcmdzLmlvdiwgZGF0YS0mZ3Q7YXJncy5pb3ZjbnQsCiYjNDM7CQkJCSAgICAgQVJSQVlfU0laRShkYXRhLSZndDtpb3ZzdGFjayksICZhbXA7ZGF0YS0mZ3Q7aW92LAomIzQzOwkJCQkgICAgICZhbXA7ZGF0YS0mZ3Q7aXRlciwKJiM0MzsJCQkJICAgICAhIShpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX0NPTVBBVCkpOwogCQlpZiAocmV0ICZsdDsgMCkKIAkJCWdvdG8gb3V0X2FjY3Q7CiAKQEAgLTQ3ODcsOCAmIzQzOzQ3ODYsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZQogCiAJcmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkKCZhbXA7a2lvY2IsICZhbXA7ZGF0YS0mZ3Q7aXRlciwgJmFtcDtkYXRhLSZndDthcmdzLCAmYW1wO2NhY2hlZF9zdGF0ZSwKIAkJCQkgJmFtcDtkaXNrX2J5dGVuciwgJmFtcDtkaXNrX2lvX3NpemUpOwotCWlmIChyZXQgPT0gLUVBR0FJTikKLQkJZ290byBvdXRfYWNjdDsKIAlpZiAocmV0ICZsdDsgMCAmYW1wOyZhbXA7IHJldCAhPSAtRUlPQ0JRVUVVRUQpCiAJCWdvdG8gb3V0X2ZyZWU7CiAKQEAgLTQ4MTYsOCAmIzQzOzQ4MTMsMTAgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3JlYWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWUKIAkJCQkJICAgICAgY2FjaGVkX3N0YXRlLCBkaXNrX2J5dGVuciwgZGlza19pb19zaXplLAogCQkJCQkgICAgICBjb3VudCwgZGF0YS0mZ3Q7YXJncy5jb21wcmVzc2lvbiwKIAkJCQkJICAgICAgZGF0YS0mZ3Q7aW92LCBjbWQpOwotCi0JCWdvdG8gb3V0X2FjY3Q7CiYjNDM7CQlpZiAocmV0ID09IC1FSU9DQlFVRVVFRCkKJiM0MzsJCQlnb3RvIG91dF9hY2N0OwomIzQzOwkJYnRyZnNfdW5sb2NrX2V4dGVudChpb190cmVlLCBzdGFydCwgbG9ja2VuZCwgJmFtcDtjYWNoZWRfc3RhdGUpOwomIzQzOwkJYnRyZnNfaW5vZGVfdW5sb2NrKGlub2RlLCBCVFJGU19JTE9DS19TSEFSRUQpOwogCX0KIAogb3V0X2ZyZWU6CkBAIC00ODI4LDggJiM0Mzs0ODI3LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlCiAJCWFkZF9yY2hhcihjdXJyZW50LCByZXQpOwogCWluY19zeXNjcihjdXJyZW50KTsKIAotCWlmIChyZXQgIT0gLUVJT0NCUVVFVUVEICZhbXA7JmFtcDsgcmV0ICE9IC1FQUdBSU4pCiYjNDM7CWlmIChyZXQgIT0gLUVJT0NCUVVFVUVEKSB7CiAJCWtmcmVlKGRhdGEpOwomIzQzOwkJYmMtJmd0O2RhdGEgPSBOVUxMOwomIzQzOwl9CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtNDg0MSwxMiAmIzQzOzQ4NDIsOCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdQogCXN0cnVjdCBraW9jYiBraW9jYjsKIAlzc2l6ZV90IHJldDsKIAl2b2lkIF9fdXNlciAqc3FlX2FkZHI7Ci0Jc3RydWN0IGlvX2J0cmZzX2NtZCAqYmMgPSBpb191cmluZ19jbWRfdG9fcGR1KGNtZCwgc3RydWN0IGlvX2J0cmZzX2NtZCk7CiAJc3RydWN0IGJ0cmZzX3VyaW5nX2VuY29kZWRfZGF0YSAqZGF0YSA9IE5VTEw7CiAKLQlpZiAoY21kLSZndDtmbGFncyAmYW1wOyBJT1JJTkdfVVJJTkdfQ01EX1JFSVNTVUUpCi0JCWRhdGEgPSBiYy0mZ3Q7ZGF0YTsKLQogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkgewogCQlyZXQgPSAtRVBFUk07CiAJCWdvdG8gb3V0X2FjY3Q7CkBAIC00ODU4LDYgJiM0Mzs0ODU1LDExIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1CiAJCWdvdG8gb3V0X2FjY3Q7CiAJfQogCiYjNDM7CWlmIChpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX05PTkJMT0NLKSB7CiYjNDM7CQlyZXQgPSAtRUFHQUlOOwomIzQzOwkJZ290byBvdXRfYWNjdDsKJiM0MzsJfQomIzQzOwogCWlmICghZGF0YSkgewogCQlkYXRhID0ga3phbGxvY19vYmooKmRhdGEsIEdGUF9OT0ZTKTsKIAkJaWYgKCFkYXRhKSB7CkBAIC00ODY1LDggJiM0Mzs0ODY3LDYgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3UKIAkJCWdvdG8gb3V0X2FjY3Q7CiAJCX0KIAotCQliYy0mZ3Q7ZGF0YSA9IGRhdGE7Ci0KIAkJaWYgKGlzc3VlX2ZsYWdzICZhbXA7IElPX1VSSU5HX0ZfQ09NUEFUKSB7CiAjaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpICZhbXA7JmFtcDsgZGVmaW5lZChDT05GSUdfQ09NUEFUKQogCQkJc3RydWN0IGJ0cmZzX2lvY3RsX2VuY29kZWRfaW9fYXJnc18zMiBhcmdzMzI7CkBAIC00OTE0LDkgJiM0Mzs0OTE0LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1CiAJCQlnb3RvIG91dF9hY2N0OwogCiAJCWRhdGEtJmd0O2lvdiA9IGRhdGEtJmd0O2lvdnN0YWNrOwotCQlyZXQgPSBpbXBvcnRfaW92ZWMoSVRFUl9TT1VSQ0UsIGRhdGEtJmd0O2FyZ3MuaW92LCBkYXRhLSZndDthcmdzLmlvdmNudCwKLQkJCQkgICBBUlJBWV9TSVpFKGRhdGEtJmd0O2lvdnN0YWNrKSwgJmFtcDtkYXRhLSZndDtpb3YsCi0JCQkJICAgJmFtcDtkYXRhLSZndDtpdGVyKTsKJiM0MzsJCXJldCA9IF9faW1wb3J0X2lvdmVjKElURVJfU09VUkNFLCBkYXRhLSZndDthcmdzLmlvdiwgZGF0YS0mZ3Q7YXJncy5pb3ZjbnQsCiYjNDM7CQkJCSAgICAgQVJSQVlfU0laRShkYXRhLSZndDtpb3ZzdGFjayksICZhbXA7ZGF0YS0mZ3Q7aW92LAomIzQzOwkJCQkgICAgICZhbXA7ZGF0YS0mZ3Q7aXRlciwKJiM0MzsJCQkJICAgICAhIShpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX0NPTVBBVCkpOwogCQlpZiAocmV0ICZsdDsgMCkKIAkJCWdvdG8gb3V0X2FjY3Q7CiAKQEAgLTQ5MjYsMTEgJiM0Mzs0OTI3LDYgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3UKIAkJfQogCX0KIAotCWlmIChpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX05PTkJMT0NLKSB7Ci0JCXJldCA9IC1FQUdBSU47Ci0JCWdvdG8gb3V0X2FjY3Q7Ci0JfQotCiAJcG9zID0gZGF0YS0mZ3Q7YXJncy5vZmZzZXQ7CiAJcmV0ID0gcndfdmVyaWZ5X2FyZWEoV1JJVEUsIGZpbGUsICZhbXA7cG9zLCBkYXRhLSZndDthcmdzLmxlbik7CiAJaWYgKHJldCAmbHQ7IDApCkBAIC00OTU2LDggJiM0Mzs0OTUyLDcgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3UKIAkJYWRkX3djaGFyKGN1cnJlbnQsIHJldCk7CiAJaW5jX3N5c2N3KGN1cnJlbnQpOwogCi0JaWYgKHJldCAhPSAtRUFHQUlOKQotCQlrZnJlZShkYXRhKTsKJiM0MzsJa2ZyZWUoZGF0YSk7CiAJcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvbGliL2lvdl9pdGVyLmMgYi9saWIvaW92X2l0ZXIuYwppbmRleCBjMjQ4NDU1MWE0ZTg2Li45YzIxNThkNWNjZGQzIDEwMDY0NAotLS0gYS9saWIvaW92X2l0ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9saWIvaW92X2l0ZXIuYwpAQCAtMTQxMCw2ICYjNDM7MTQxMCw3IEBAIHNzaXplX3QgX19pbXBvcnRfaW92ZWMoaW50IHR5cGUsIGNvbnN0IHN0cnVjdCBpb3ZlYyBfX3VzZXIgKnV2ZWMsCiAJCSppb3ZwID0gaW92OwogCXJldHVybiB0b3RhbF9sZW47CiB9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoX19pbXBvcnRfaW92ZWMpOwogCiAvKioKICAqIGltcG9ydF9pb3ZlYygpIC0gQ29weSBhbiBhcnJheSBvZiAmYW1wO3N0cnVjdCBpb3ZlYyBmcm9tIHVzZXJzcGFjZQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwOTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTM1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTQzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyBhbmQgRnV6emluZyBTdHJhdGVneSBmb3IgQnRyZnMgaW9fdXJpbmcgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgc2VlbXMgdG8gYmUgdHdlYWtpbmcgQnRyZnMmIzM5OyBpb191cmluZyBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgYXJvdW5kIGVuY29kZWQgcmVhZC93cml0ZSBvcGVyYXRpb25zLiBUaGUgZmlsZXMgaW52b2x2ZWQg4oCTIGBmcy9idHJmcy9pbm9kZS5jYCwgYGZzL2J0cmZzL2lvY3RsLmNgLCBhbmQgYGxpYi9pb3ZfaXRlci5jYCDigJMgaW1tZWRpYXRlbHkgdGVsbCBtZSBpdCYjMzk7cyB0b3VjaGluZyBjb3JlIGlvIHBhdGhzLCBzbyB0aGlzIGRlc2VydmVzIGEgY2xvc2VyIGxvb2suCgpMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgY29kZSBjaGFuZ2VzLiBJJiMzOTttIHNlZWluZyBmaXhlcyBmb3IgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBpbiBgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRgLCBwYXJ0aWN1bGFybHkgYXJvdW5kIHBhZ2UgYWxsb2NhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmcsIHdoaWNoIGlzIGdvb2QuICBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgaGFzIGEgbWlub3IgY2hhbmdlIHRoYXQgbWlnaHQgaGFuZGxlIGVycm9yIGNvZGVzIGJldHRlci4gVGhlIGNoYW5nZXMgaW4gYGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZGAgYW5kIGBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlYCBhcmUgbG9va2luZyB0byB0aWdodGVuIHVwIGxvY2tpbmcgYW5kIGlvX3VyaW5nIHJldHJ5IGxvZ2ljIGFuZCBjb21wYXQgZmxhZ3MuIE5vdGFibHksIHRoZXJlIGFyZSBjaGFuZ2VzIHRvIGhvdyB0aGUgaW8gdmVjdG9yIGlzIGltcG9ydGVkIHdpdGggYF9faW1wb3J0X2lvdmVjYCwgYW5kIGFkZGl0aW9uYWwgbG9naWMgYWRkZWQgdG8gdGhlIGZsb3cuCgpPdmVyYWxsLCBpdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBtZW1vcnkgbGVha3MsIGFuZCBpbXByb3ZpbmcgdGhlIHN0YWJpbGl0eSBvZiBpb191cmluZyBvcGVyYXRpb25zIGluIEJ0cmZzLiBUaGlzIGtpbmQgb2YgcGF0Y2ggc2NyZWFtcyBmb3IgZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGNvbmNlbnRyYXRlZCwgd2hpY2ggZ2l2ZXMgdXMgYSBtYW5hZ2VhYmxlIHNjb3BlIGZvciBhIGZ1enppbmcgY2FtcGFpZ24uCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy4gIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlc2Ugc3ltYm9sczogYGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZGAsIGBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlYCwgYGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50YCwgYW5kIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgaW9fdXJpbmcgb3BlcmF0aW9ucyBhbmQgYXJlIHRoZXJlZm9yZSBsaWtlbHkgdGFyZ2V0cy4gCgpRdWljayBjaGVjayBvbiB0aGUgc3ltYm9scyB0byBkZXRlcm1pbmUgYWNjZXNzaWJpbGl0eS4gVGhlIGZ1bmN0aW9ucyBhcmUgc3RhdGljIGluIGBmcy9idHJmcy9pb2N0bC5jYCwgd2hpY2ggbWFrZXMgdGhlbSByZWxhdGVkIHRvIGlvY3Rscy4gVGhlcmVmb3JlIHRoZXkgYXJlIGFjY2Vzc2libGUgdG8gdXMuCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvaW9jdGwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9idHJmcy9pb2N0bC5jPTQ2MTM9c3RhdGljIGludCBidHJmc191cmluZ19yZWFkX2V4dGVudChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTQ2ODgtXG5mcy9idHJmcy9pb2N0bC5jOjQ2ODk6c3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3JlYWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXG5mcy9idHJmcy9pb2N0bC5jLTQ2OTAte1xuLS1cbmZzL2J0cmZzL2lvY3RsLmM9NDk1OT1pbnQgYnRyZnNfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtNDk2OC0jZW5kaWZcbmZzL2J0cmZzL2lvY3RsLmM6NDk2OTpcdFx0cmV0dXJuIGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChjbWQsIGlzc3VlX2ZsYWdzKTtcbmZzL2J0cmZzL2lvY3RsLmMtNDk3MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwOTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTAyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBCdHJmcyBVcmluZyBSZWFkIFByb2Nlc3MqKgoKUmlnaHQsIHNvIGBidHJmc191cmluZ19lbmNvZGVkX3JlYWRgIGlzIGEgYHN0YXRpY2AgZnVuY3Rpb24uIEludGVyZXN0aW5nLiBNZWFucyBpdCYjMzk7cyBsaWtlbHkgb25seSB1c2VkIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgY29tcGlsYXRpb24gdW5pdC4gT2theSwgdGhlIGV4dGVybmFsIGVudHJ5IHBvaW50LCB0aGVuLCBoYXMgdG8gYmUgYGJ0cmZzX3VyaW5nX2NtZGAuIE1ha2VzIHNlbnNlLiBOb3csIG15IG5leHQgc3RlcCBpcyBjbGVhciDigJMgSSBuZWVkIHRvIGRpdmUgaW50byBgYnRyZnNfdXJpbmdfY21kYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgb3JjaGVzdHJhdGlvbiBiZWdpbnMsIGFuZCB1bmRlcnN0YW5kaW5nIGl0IHdpbGwgaWxsdW1pbmF0ZSBob3cgdGhpcyByZWFkIHBhdGggaXMgYWN0dWFsbHkgaW52b2tlZCBhbmQgaGFuZGxlZC4gSXTigJlzIHRoZSBjb25kdWN0b3IsIHRoZSBzdGFydGluZyBndW4uIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgYW5kIGZpZ3VyZSBvdXQgaG93IGBidHJmc191cmluZ19lbmNvZGVkX3JlYWRgIGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0cmZzX3VyaW5nX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2lvY3RsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvaW9jdGwuYz00ODM4PXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTQ5NTgtXG5mcy9idHJmcy9pb2N0bC5jOjQ5NTk6aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbmZzL2J0cmZzL2lvY3RsLmMtNDk2MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ4NQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBidHJmc191cmluZ19jbWQgRW50cnkgUG9pbnQqKgoKUmlnaHQsIHNvIGBidHJmc191cmluZ19jbWRgLCB0aGF0JiMzOTtzIG91ciBzdGFydGluZyBwb2ludC4gR2l2ZW4gdGhlIGNvbnRleHQgb2YgZXhwbG9yaW5nIHRoZSBidHJmcyBpbXBsZW1lbnRhdGlvbiB3aXRoIGlvX3VyaW5nLCBpdCYjMzk7cyB0aGUgb2J2aW91cyBwbGFjZSB0byBiZWdpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB1c2VyLXNwYWNlIHJlcXVlc3RzIGZ1bm5lbCBpbnRvIHRoZSBrZXJuZWwsIGFuZCB0aGlzIGlzIHdoZXJlIGl0IGFsbCBraWNrcyBvZmYuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBjb250cm9sIGZsb3cgZm9yIHRoZSBjb21tb24gb3BlcmF0aW9ucy4KCk5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AuIFRoaXMgc3VnZ2VzdHMgYSBmb2N1cyBvbiB0aGUgbWVjaGFuaWNzIG9mIHJlYWRpbmcgZGF0YSwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBlbmNvZGVkIG9yIGNvbXByZXNzZWQgYmxvY2tzLCBhcyB3ZWxsIGFzIHRoZSBwcm9jZXNzIG9mIG1hcHBpbmcgdGhlc2UgdG8gdXNlciBwYWdlcy4gSSBhbnRpY2lwYXRlIHNvbWUgaW50ZXJlc3Rpbmcgb3B0aW1pemF0aW9ucyBvciBwb3RlbnRpYWxseSBzdWJ0bGUgaXNzdWVzIHJlbGF0ZWQgdG8gcGFnZSBwaW5uaW5nLCBkaXJlY3QgSS9PLCBhbmQgdGhlIGdlbmVyYWwgaGFuZGxpbmcgb2YgYXN5bmNocm9ub3VzIHJlYWRzLiBJIGV4cGVjdCB0byBmaW5kIGRldGFpbHMgY29uY2VybmluZyBlbmNyeXB0aW9uLCBjaGVja3N1bSB2YWxpZGF0aW9uLCBhbmQgdGhlIGhhbmRsaW5nIG9mIHZhcmlvdXMgZXh0ZW50cyBhbmQgYmxvY2sgZ3JvdXBzLCBhbGwgaW4gdGhlIGNvbnRleHQgb2YgYGlvX3VyaW5nYCYjMzk7cyBhc3luYyBjYXBhYmlsaXRpZXMuIExldCYjMzk7cyBzZWUgaG93IHRoZXkmIzM5O3ZlIGhhbmRsZWQgcG90ZW50aWFsIGRhdGEgY29ycnVwdGlvbiBvciBkYXRhIHJlY292ZXJ5IHByb2Nlc3Nlcy4gTGV0JiMzOTtzIGZpbmQgb3V0IGhvdyB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIHJldHJ5IGxvZ2ljIHBsYXkgb3V0LiBJJiMzOTttIGdvaW5nIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9idHJmcy9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2lub2RlLmM9OTM3OT1zdGF0aWMgdm9pZCBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8oc3RydWN0IGJ0cmZzX2JpbyAqYmJpbylcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTkzODYtXHRcdCAqIHBhaXJzIHdpdGggdGhlIG1lbW9yeSBiYXJyaWVyIGltcGxpZWQgYnkgdGhlIHJlZmNvdW50X2RlY19hbmRfdGVzdCgpXG5mcy9idHJmcy9pbm9kZS5jOjkzODc6XHRcdCAqIGluIGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoKSB0byBlbnN1cmUgdGhhdFxuZnMvYnRyZnMvaW5vZGUuYy05Mzg4LVx0XHQgKiB0aGlzIHdyaXRlIGlzIG9ic2VydmVkIGJlZm9yZSB0aGUgbG9hZCBvZiBzdGF0dXMgaW5cbmZzL2J0cmZzL2lub2RlLmM6OTM4OTpcdFx0ICogYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcygpLlxuZnMvYnRyZnMvaW5vZGUuYy05MzkwLVx0XHQgKi9cbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0MDUtXG5mcy9idHJmcy9pbm9kZS5jOjk0MDY6aW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSxcbmZzL2J0cmZzL2lub2RlLmMtOTQwNy1cdFx0XHRcdFx0ICB1NjQgZGlza19ieXRlbnIsIHU2NCBkaXNrX2lvX3NpemUsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYz05NDc1PXNzaXplX3QgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05NDk4LVxuZnMvYnRyZnMvaW5vZGUuYzo5NDk5Olx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhpbm9kZSwgZGlza19ieXRlbnIsXG5mcy9idHJmcy9pbm9kZS5jLTk1MDAtXHRcdFx0XHRcdFx0ICAgIGRpc2tfaW9fc2l6ZSwgcGFnZXMsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNjYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AqKgoKSG1tLCBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgaXNuJiMzOTt0IHN0YXRpYy4gVGhhdCYjMzk7cyBhIGtleSBvYnNlcnZhdGlvbi4gTm93LCB3aGVyZSBkb2VzIHRoYXQgbGVhZCBtZT8gSXQgbWVhbnMgdGhlIGZ1bmN0aW9uJiMzOTtzIGJlaGF2aW9yIGNhbiBjaGFuZ2UsIHdoaWNoIGlzIHNpZ25pZmljYW50IHdoZW4gZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IGNvbXBsZXggZGF0YSByZWFkcyBpbiBCdHJmcy4gQWxyaWdodCwgaWYgaXQmIzM5O3Mgbm90IHN0YXRpYywgdGhlIGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY2FsbGluZyBmdW5jdGlvbi4gTGV0JiMzOTtzIGRlbHZlIGludG8gYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyYCBhbmQgZmlndXJlIG91dCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbm9uLXN0YXRpYyBjaGFyYWN0ZXJpc3RpYy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBvZiB0aGUgaXNzdWUgbGlrZWx5IHJlc2lkZXMsIGFzIHRoZSBuYXR1cmUgb2YgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgIGltcGFjdHMgdGhlIHJlYWQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9idHJmcy9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2lub2RlLmM9OTM3OT1zdGF0aWMgdm9pZCBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8oc3RydWN0IGJ0cmZzX2JpbyAqYmJpbylcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTkzODYtXHRcdCAqIHBhaXJzIHdpdGggdGhlIG1lbW9yeSBiYXJyaWVyIGltcGxpZWQgYnkgdGhlIHJlZmNvdW50X2RlY19hbmRfdGVzdCgpXG5mcy9idHJmcy9pbm9kZS5jOjkzODc6XHRcdCAqIGluIGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoKSB0byBlbnN1cmUgdGhhdFxuZnMvYnRyZnMvaW5vZGUuYy05Mzg4LVx0XHQgKiB0aGlzIHdyaXRlIGlzIG9ic2VydmVkIGJlZm9yZSB0aGUgbG9hZCBvZiBzdGF0dXMgaW5cbmZzL2J0cmZzL2lub2RlLmM6OTM4OTpcdFx0ICogYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcygpLlxuZnMvYnRyZnMvaW5vZGUuYy05MzkwLVx0XHQgKi9cbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0MDUtXG5mcy9idHJmcy9pbm9kZS5jOjk0MDY6aW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSxcbmZzL2J0cmZzL2lub2RlLmMtOTQwNy1cdFx0XHRcdFx0ICB1NjQgZGlza19ieXRlbnIsIHU2NCBkaXNrX2lvX3NpemUsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05NDc0LVxuZnMvYnRyZnMvaW5vZGUuYzo5NDc1OnNzaXplX3QgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG5mcy9idHJmcy9pbm9kZS5jLTk0NzYtXHRcdFx0XHQgICB1NjQgc3RhcnQsIHU2NCBsb2NrZW5kLFxuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQ5OC1cbmZzL2J0cmZzL2lub2RlLmM6OTQ5OTpcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoaW5vZGUsIGRpc2tfYnl0ZW5yLFxuZnMvYnRyZnMvaW5vZGUuYy05NTAwLVx0XHRcdFx0XHRcdCAgICBkaXNrX2lvX3NpemUsIHBhZ2VzLCBOVUxMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAxMAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgRGVlcGVyIGludG8gYnRyZnMgUmVhZCBPcGVyYXRpb25zKioKCk9rYXksIHNvIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcmAgaXNuJiMzOTt0IHN0YXRpYyBlaXRoZXIuIEludGVyZXN0aW5nLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBicm9hZGVuIG15IHNjb3BlIGEgYml0LiBUaW1lIHRvIG1vdmUgdXAgdGhlIGNhbGwgc3RhY2suIExldCYjMzk7cyBkaWcgaW50byBgYnRyZnNfZW5jb2RlZF9yZWFkYCBhbmQgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgaWYgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyYCBpc24mIzM5O3Qgc3RhdGljLCB3aGF0IG1ha2VzIHRoZSBwYXJlbnQgZnVuY3Rpb24gZGlmZmVyZW50PyBJdCBtYXkgcmV2ZWFsIG1vcmUgYWJvdXQgaG93IHRoaXMgcmVhZCBwcm9jZXNzIGlzIGJlaW5nIGhhbmRsZWQgYW5kIHdoZXJlIHRoZSB2YXJpYWJpbGl0eSBsaWVzLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRyZnNfZW5jb2RlZF9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9idHJmcy9pbm9kZS5jPTkyNjI9aW50IGJ0cmZzX2VuY29kZWRfaW9fY29tcHJlc3Npb25fZnJvbV9leHRlbnQoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05Mjg1LVxuZnMvYnRyZnMvaW5vZGUuYzo5Mjg2OnN0YXRpYyBzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZF9pbmxpbmUoXG5mcy9idHJmcy9pbm9kZS5jLTkyODctXHRcdFx0XHRzdHJ1Y3Qga2lvY2IgKmlvY2IsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05MzcxLVxuZnMvYnRyZnMvaW5vZGUuYzo5MzcyOnN0cnVjdCBidHJmc19lbmNvZGVkX3JlYWRfcHJpdmF0ZSB7XG5mcy9idHJmcy9pbm9kZS5jLTkzNzMtXHRzdHJ1Y3QgY29tcGxldGlvbiAqc3luY19yZWFkcztcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTkzNzgtXG5mcy9idHJmcy9pbm9kZS5jOjkzNzk6c3RhdGljIHZvaWQgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvKHN0cnVjdCBidHJmc19iaW8gKmJiaW8pXG5mcy9idHJmcy9pbm9kZS5jLTkzODAte1xuZnMvYnRyZnMvaW5vZGUuYzo5MzgxOlx0c3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlICpwcml2ID0gYmJpby1cdTAwM2Vwcml2YXRlO1xuZnMvYnRyZnMvaW5vZGUuYy05MzgyLVxuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTM4Ni1cdFx0ICogcGFpcnMgd2l0aCB0aGUgbWVtb3J5IGJhcnJpZXIgaW1wbGllZCBieSB0aGUgcmVmY291bnRfZGVjX2FuZF90ZXN0KClcbmZzL2J0cmZzL2lub2RlLmM6OTM4NzpcdFx0ICogaW4gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcygpIHRvIGVuc3VyZSB0aGF0XG5mcy9idHJmcy9pbm9kZS5jLTkzODgtXHRcdCAqIHRoaXMgd3JpdGUgaXMgb2JzZXJ2ZWQgYmVmb3JlIHRoZSBsb2FkIG9mIHN0YXR1cyBpblxuZnMvYnRyZnMvaW5vZGUuYzo5Mzg5Olx0XHQgKiBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKCkuXG5mcy9idHJmcy9pbm9kZS5jLTkzOTAtXHRcdCAqL1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQwNS1cbmZzL2J0cmZzL2lub2RlLmM6OTQwNjppbnQgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLFxuZnMvYnRyZnMvaW5vZGUuYy05NDA3LVx0XHRcdFx0XHQgIHU2NCBkaXNrX2J5dGVuciwgdTY0IGRpc2tfaW9fc2l6ZSxcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0MDkte1xuZnMvYnRyZnMvaW5vZGUuYzo5NDEwOlx0c3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlICpwcml2LCBzeW5jX3ByaXY7XG5mcy9idHJmcy9pbm9kZS5jLTk0MTEtXHRzdHJ1Y3QgY29tcGxldGlvbiBzeW5jX3JlYWRzO1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQxOS1cdGlmICh1cmluZ19jdHgpIHtcbmZzL2J0cmZzL2lub2RlLmM6OTQyMDpcdFx0cHJpdiA9IGttYWxsb2Nfb2JqKHN0cnVjdCBidHJmc19lbmNvZGVkX3JlYWRfcHJpdmF0ZSwgR0ZQX05PRlMpO1xuZnMvYnRyZnMvaW5vZGUuYy05NDIxLVx0XHRpZiAoIXByaXYpXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05NDMzLVx0YmJpbyA9IGJ0cmZzX2Jpb19hbGxvYyhCSU9fTUFYX1ZFQ1MsIFJFUV9PUF9SRUFELCBpbm9kZSwgMCxcbmZzL2J0cmZzL2lub2RlLmM6OTQzNDpcdFx0XHQgICAgICAgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvLCBwcml2KTtcbmZzL2J0cmZzL2lub2RlLmMtOTQzNS1cdGJiaW8tXHUwMDNlYmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gZGlza19ieXRlbnIgXHUwMDNlXHUwMDNlIFNFQ1RPUl9TSElGVDtcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0NDQtXHRcdFx0YmJpbyA9IGJ0cmZzX2Jpb19hbGxvYyhCSU9fTUFYX1ZFQ1MsIFJFUV9PUF9SRUFELCBpbm9kZSwgMCxcbmZzL2J0cmZzL2lub2RlLmM6OTQ0NTpcdFx0XHRcdFx0ICAgICAgIGJ0cmZzX2VuY29kZWRfcmVhZF9lbmRpbywgcHJpdik7XG5mcy9idHJmcy9pbm9kZS5jLTk0NDYtXHRcdFx0YmJpby1cdTAwM2ViaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBkaXNrX2J5dGVuciBcdTAwM2VcdTAwM2UgU0VDVE9SX1NISUZUO1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQ2OS1cdFx0XHR3YWl0X2Zvcl9jb21wbGV0aW9uX2lvKFx1MDAyNnN5bmNfcmVhZHMpO1xuZnMvYnRyZnMvaW5vZGUuYzo5NDcwOlx0XHQvKiBTZWUgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvKCkgZm9yIG9yZGVyaW5nLiAqL1xuZnMvYnRyZnMvaW5vZGUuYy05NDcxLVx0XHRyZXR1cm4gYmxrX3N0YXR1c190b19lcnJubyhSRUFEX09OQ0UocHJpdi1cdTAwM2VzdGF0dXMpKTtcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0NzQtXG5mcy9idHJmcy9pbm9kZS5jOjk0NzU6c3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmZzL2J0cmZzL2lub2RlLmMtOTQ3Ni1cdFx0XHRcdCAgIHU2NCBzdGFydCwgdTY0IGxvY2tlbmQsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05NDk4LVxuZnMvYnRyZnMvaW5vZGUuYzo5NDk5Olx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhpbm9kZSwgZGlza19ieXRlbnIsXG5mcy9idHJmcy9pbm9kZS5jLTk1MDAtXHRcdFx0XHRcdFx0ICAgIGRpc2tfaW9fc2l6ZSwgcGFnZXMsIE5VTEwpO1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTUzOC1cbmZzL2J0cmZzL2lub2RlLmM6OTUzOTpzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmZzL2J0cmZzL2lub2RlLmMtOTU0MC1cdFx0XHQgICBzdHJ1Y3QgYnRyZnNfaW9jdGxfZW5jb2RlZF9pb19hcmdzICplbmNvZGVkLFxuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTYyOC1cdFx0ZW0gPSBOVUxMO1xuZnMvYnRyZnMvaW5vZGUuYzo5NjI5Olx0XHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfaW5saW5lKGlvY2IsIGl0ZXIsIHN0YXJ0LCBsb2NrZW5kLFxuZnMvYnRyZnMvaW5vZGUuYy05NjMwLVx0XHRcdFx0XHRcdGNhY2hlZF9zdGF0ZSwgZXh0ZW50X3N0YXJ0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwOTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY1OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqRGl2aW5nIGludG8gdGhlIEJ0cmZzIElPX1VyaW5nIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgaW9fdXJpbmcgaW50ZWdyYXRpb24gd29ya3Mgd2l0aGluIEJ0cmZzLiBMb29raW5nIGF0IHRoZSBjb2RlLCBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgZmVlbHMgbGlrZSBhIHNvbGlkIGZ1bmN0aW9uIHRvIGtleSBpbiBvbi4gSXQmIzM5O3MgYSBrZXkgcGFydCBvZiB0aGUgcmVndWxhciByZWFkIHBhdGgsIHNvIGl0IHNob3VsZCBnaXZlIG1lIHNvbWUgaW5zaWdodC4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIGFub3RoZXIgYW5nbGUuIEhvdyBkb2VzIGBidHJmc191cmluZ19jbWRgIGZpdCBpbnRvIHRoaXM/IEFoLCB5ZXMsIGl0JiMzOTtzIHRoZSBzcGVjaWZpYyBoYW5kbGVyIGZvciBpb191cmluZyBjb21tYW5kcyB3aXRoaW4gdGhlIEJ0cmZzIGZpbGVzeXN0ZW0uIFRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IhIE5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiB0byBhc2sgaXM6IHdoZXJlIGlzIGBidHJmc191cmluZ19jbWRgICp1c2VkKj8gU3BlY2lmaWNhbGx5LCBpcyBpdCBwYXJ0IG9mIHRoZSBleHBvc2VkIGBmaWxlX29wZXJhdGlvbnNgIHN0cnVjdHVyZT8gVGhhdCB3b3VsZCBtZWFuIGl0JiMzOTtzIGRpcmVjdGx5IHdpcmVkIGludG8gdGhlIGZpbGVzeXN0ZW0mIzM5O3Mgc3RhbmRhcmQgaW50ZXJmYWNlcy4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBwYXRoIHRvIHVuZGVyc3RhbmQgaG93IGlvX3VyaW5nIGlzIGludGVncmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0cmZzX3VyaW5nX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2J0cmZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9idHJmcy9maWxlLmM9Mzg0Mz1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJ0cmZzX2ZpbGVfb3BlcmF0aW9ucyA9IHtcbi0tXG5mcy9idHJmcy9maWxlLmMtMzg1OS1cdC5yZW1hcF9maWxlX3JhbmdlID0gYnRyZnNfcmVtYXBfZmlsZV9yYW5nZSxcbmZzL2J0cmZzL2ZpbGUuYzozODYwOlx0LnVyaW5nX2NtZFx0PSBidHJmc191cmluZ19jbWQsXG5mcy9idHJmcy9maWxlLmMtMzg2MS1cdC5mb3BfZmxhZ3NcdD0gRk9QX0JVRkZFUl9SQVNZTkMgfCBGT1BfQlVGRkVSX1dBU1lOQyxcbi0tXG5mcy9idHJmcy9pb2N0bC5jPTQ4Mzg9c3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtNDk1OC1cbmZzL2J0cmZzL2lvY3RsLmM6NDk1OTppbnQgYnRyZnNfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuZnMvYnRyZnMvaW9jdGwuYy00OTYwLXtcbi0tXG5mcy9idHJmcy9pb2N0bC5oPTI0PXZvaWQgYnRyZnNfdXBkYXRlX2lvY3RsX2JhbGFuY2VfYXJncyhzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbyxcbmZzL2J0cmZzL2lvY3RsLmgtMjUtXHRcdFx0XHQgICAgIHN0cnVjdCBidHJmc19pb2N0bF9iYWxhbmNlX2FyZ3MgKmJhcmdzKTtcbmZzL2J0cmZzL2lvY3RsLmg6MjY6aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XG5mcy9idHJmcy9pb2N0bC5oLTI3LXZvaWQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRfZW5kaW8odm9pZCAqY3R4LCBpbnQgZXJyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0MTQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gYnRyZnMgYW5kIGlvX3VyaW5nKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIHRoZSBgYnRyZnNfdXJpbmdfY21kYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBjZW50cmFsIGhhbmRsZXIgZm9yIGB1cmluZ19jbWRgIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBidHJmcyBmaWxlc3lzdGVtLCBzbyBpdCYjMzk7cyBhIGdvb2Qgc3ltYm9sIHRvIGNvbmNlbnRyYXRlIG9uLiBOb3csIGEgcmVsYXRlZCBmdW5jdGlvbiBrZWVwcyBwb3BwaW5nIGludG8gbXkgaGVhZDogYGJ0cmZzX2VuY29kZWRfcmVhZGAuIElzIGl0IGFsc28gZXhwb3J0ZWQ/IE5vLCB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueXRoaW5nIHRoYXQgaXMgcmVsYXRlZC4gTGV0JiMzOTtzIHRyYWNlIHRocm91Z2ggdGhlIGZpbGUgbG9jYXRpb25zOyBpdCBsb29rcyBsaWtlIGl0IHJlc2lkZXMgd2l0aGluIGBmcy9idHJmcy9pbm9kZS5jYCwgYW5kIGlzIGFsc28gdXNlZCBpbiBgZnMvYnRyZnMvaW9jdGwuY2AuIEFscmlnaHQsIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgYGJ0cmZzX2VuY29kZWRfcmVhZGAgYWN0dWFsbHkgZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRyZnNfZW5jb2RlZF9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2J0cmZzX2lub2RlLmg9NjAzPWludCBidHJmc19lbmNvZGVkX2lvX2NvbXByZXNzaW9uX2Zyb21fZXh0ZW50KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLFxuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaC02MDQtXHRcdFx0XHRcdCAgICAgaW50IGNvbXByZXNzX3R5cGUpO1xuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaDo2MDU6aW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSxcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmgtNjA2LVx0XHRcdFx0XHQgIHU2NCBkaXNrX2J5dGVuciwgdTY0IGRpc2tfaW9fc2l6ZSxcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmgtNjA3LVx0XHRcdFx0XHQgIHN0cnVjdCBwYWdlICoqcGFnZXMsIHZvaWQgKnVyaW5nX2N0eCk7XG5mcy9idHJmcy9idHJmc19pbm9kZS5oOjYwODpzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmgtNjA5LVx0XHRcdCAgIHN0cnVjdCBidHJmc19pb2N0bF9lbmNvZGVkX2lvX2FyZ3MgKmVuY29kZWQsXG4tLVxuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaC02MTEtXHRcdFx0ICAgdTY0ICpkaXNrX2J5dGVuciwgdTY0ICpkaXNrX2lvX3NpemUpO1xuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaDo2MTI6c3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmgtNjEzLVx0XHRcdFx0ICAgdTY0IHN0YXJ0LCB1NjQgbG9ja2VuZCxcbi0tXG5mcy9idHJmcy9pbm9kZS5jPTkyNjI9aW50IGJ0cmZzX2VuY29kZWRfaW9fY29tcHJlc3Npb25fZnJvbV9leHRlbnQoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05Mjg1LVxuZnMvYnRyZnMvaW5vZGUuYzo5Mjg2OnN0YXRpYyBzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZF9pbmxpbmUoXG5mcy9idHJmcy9pbm9kZS5jLTkyODctXHRcdFx0XHRzdHJ1Y3Qga2lvY2IgKmlvY2IsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05MzcxLVxuZnMvYnRyZnMvaW5vZGUuYzo5MzcyOnN0cnVjdCBidHJmc19lbmNvZGVkX3JlYWRfcHJpdmF0ZSB7XG5mcy9idHJmcy9pbm9kZS5jLTkzNzMtXHRzdHJ1Y3QgY29tcGxldGlvbiAqc3luY19yZWFkcztcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTkzNzgtXG5mcy9idHJmcy9pbm9kZS5jOjkzNzk6c3RhdGljIHZvaWQgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvKHN0cnVjdCBidHJmc19iaW8gKmJiaW8pXG5mcy9idHJmcy9pbm9kZS5jLTkzODAte1xuZnMvYnRyZnMvaW5vZGUuYzo5MzgxOlx0c3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlICpwcml2ID0gYmJpby1cdTAwM2Vwcml2YXRlO1xuZnMvYnRyZnMvaW5vZGUuYy05MzgyLVxuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTM4Ni1cdFx0ICogcGFpcnMgd2l0aCB0aGUgbWVtb3J5IGJhcnJpZXIgaW1wbGllZCBieSB0aGUgcmVmY291bnRfZGVjX2FuZF90ZXN0KClcbmZzL2J0cmZzL2lub2RlLmM6OTM4NzpcdFx0ICogaW4gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcygpIHRvIGVuc3VyZSB0aGF0XG5mcy9idHJmcy9pbm9kZS5jLTkzODgtXHRcdCAqIHRoaXMgd3JpdGUgaXMgb2JzZXJ2ZWQgYmVmb3JlIHRoZSBsb2FkIG9mIHN0YXR1cyBpblxuZnMvYnRyZnMvaW5vZGUuYzo5Mzg5Olx0XHQgKiBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKCkuXG5mcy9idHJmcy9pbm9kZS5jLTkzOTAtXHRcdCAqL1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQwNS1cbmZzL2J0cmZzL2lub2RlLmM6OTQwNjppbnQgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLFxuZnMvYnRyZnMvaW5vZGUuYy05NDA3LVx0XHRcdFx0XHQgIHU2NCBkaXNrX2J5dGVuciwgdTY0IGRpc2tfaW9fc2l6ZSxcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0MDkte1xuZnMvYnRyZnMvaW5vZGUuYzo5NDEwOlx0c3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlICpwcml2LCBzeW5jX3ByaXY7XG5mcy9idHJmcy9pbm9kZS5jLTk0MTEtXHRzdHJ1Y3QgY29tcGxldGlvbiBzeW5jX3JlYWRzO1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQxOS1cdGlmICh1cmluZ19jdHgpIHtcbmZzL2J0cmZzL2lub2RlLmM6OTQyMDpcdFx0cHJpdiA9IGttYWxsb2Nfb2JqKHN0cnVjdCBidHJmc19lbmNvZGVkX3JlYWRfcHJpdmF0ZSwgR0ZQX05PRlMpO1xuZnMvYnRyZnMvaW5vZGUuYy05NDIxLVx0XHRpZiAoIXByaXYpXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05NDMzLVx0YmJpbyA9IGJ0cmZzX2Jpb19hbGxvYyhCSU9fTUFYX1ZFQ1MsIFJFUV9PUF9SRUFELCBpbm9kZSwgMCxcbmZzL2J0cmZzL2lub2RlLmM6OTQzNDpcdFx0XHQgICAgICAgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvLCBwcml2KTtcbmZzL2J0cmZzL2lub2RlLmMtOTQzNS1cdGJiaW8tXHUwMDNlYmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gZGlza19ieXRlbnIgXHUwMDNlXHUwMDNlIFNFQ1RPUl9TSElGVDtcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0NDQtXHRcdFx0YmJpbyA9IGJ0cmZzX2Jpb19hbGxvYyhCSU9fTUFYX1ZFQ1MsIFJFUV9PUF9SRUFELCBpbm9kZSwgMCxcbmZzL2J0cmZzL2lub2RlLmM6OTQ0NTpcdFx0XHRcdFx0ICAgICAgIGJ0cmZzX2VuY29kZWRfcmVhZF9lbmRpbywgcHJpdik7XG5mcy9idHJmcy9pbm9kZS5jLTk0NDYtXHRcdFx0YmJpby1cdTAwM2ViaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBkaXNrX2J5dGVuciBcdTAwM2VcdTAwM2UgU0VDVE9SX1NISUZUO1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTQ2OS1cdFx0XHR3YWl0X2Zvcl9jb21wbGV0aW9uX2lvKFx1MDAyNnN5bmNfcmVhZHMpO1xuZnMvYnRyZnMvaW5vZGUuYzo5NDcwOlx0XHQvKiBTZWUgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvKCkgZm9yIG9yZGVyaW5nLiAqL1xuZnMvYnRyZnMvaW5vZGUuYy05NDcxLVx0XHRyZXR1cm4gYmxrX3N0YXR1c190b19lcnJubyhSRUFEX09OQ0UocHJpdi1cdTAwM2VzdGF0dXMpKTtcbi0tXG5mcy9idHJmcy9pbm9kZS5jLTk0NzQtXG5mcy9idHJmcy9pbm9kZS5jOjk0NzU6c3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmZzL2J0cmZzL2lub2RlLmMtOTQ3Ni1cdFx0XHRcdCAgIHU2NCBzdGFydCwgdTY0IGxvY2tlbmQsXG4tLVxuZnMvYnRyZnMvaW5vZGUuYy05NDk4LVxuZnMvYnRyZnMvaW5vZGUuYzo5NDk5Olx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhpbm9kZSwgZGlza19ieXRlbnIsXG5mcy9idHJmcy9pbm9kZS5jLTk1MDAtXHRcdFx0XHRcdFx0ICAgIGRpc2tfaW9fc2l6ZSwgcGFnZXMsIE5VTEwpO1xuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTUzOC1cbmZzL2J0cmZzL2lub2RlLmM6OTUzOTpzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmZzL2J0cmZzL2lub2RlLmMtOTU0MC1cdFx0XHQgICBzdHJ1Y3QgYnRyZnNfaW9jdGxfZW5jb2RlZF9pb19hcmdzICplbmNvZGVkLFxuLS1cbmZzL2J0cmZzL2lub2RlLmMtOTYyOC1cdFx0ZW0gPSBOVUxMO1xuZnMvYnRyZnMvaW5vZGUuYzo5NjI5Olx0XHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfaW5saW5lKGlvY2IsIGl0ZXIsIHN0YXJ0LCBsb2NrZW5kLFxuZnMvYnRyZnMvaW5vZGUuYy05NjMwLVx0XHRcdFx0XHRcdGNhY2hlZF9zdGF0ZSwgZXh0ZW50X3N0YXJ0LFxuLS1cbmZzL2J0cmZzL2lvY3RsLmM9NDI5OD1zdGF0aWMgaW50IGJ0cmZzX2lvY3RsX2VuY29kZWRfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3AsXG4tLVxuZnMvYnRyZnMvaW9jdGwuYy00MzY3LVxuZnMvYnRyZnMvaW9jdGwuYzo0MzY4Olx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkKFx1MDAyNmtpb2NiLCBcdTAwMjZpdGVyLCBcdTAwMjZhcmdzLCBcdTAwMjZjYWNoZWRfc3RhdGUsXG5mcy9idHJmcy9pb2N0bC5jLTQzNjktXHRcdFx0XHQgXHUwMDI2ZGlza19ieXRlbnIsIFx1MDAyNmRpc2tfaW9fc2l6ZSk7XG4tLVxuZnMvYnRyZnMvaW9jdGwuYy00MzgyLVxuZnMvYnRyZnMvaW9jdGwuYzo0MzgzOlx0XHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcihcdTAwMjZraW9jYiwgXHUwMDI2aXRlciwgc3RhcnQsIGxvY2tlbmQsXG5mcy9idHJmcy9pb2N0bC5jLTQzODQtXHRcdFx0XHRcdFx0IFx1MDAyNmNhY2hlZF9zdGF0ZSwgZGlza19ieXRlbnIsXG4tLVxuZnMvYnRyZnMvaW9jdGwuYz00NTQzPXN0YXRpYyB2b2lkIGJ0cmZzX3VyaW5nX3JlYWRfZmluaXNoZWQoc3RydWN0IGlvX3R3X3JlcSB0d19yZXEsIGlvX3R3X3Rva2VuX3QgdHcpXG4tLVxuZnMvYnRyZnMvaW9jdGwuYy00NTU0LVxuZnMvYnRyZnMvaW9jdGwuYzo0NTU1Olx0LyogVGhlIGlub2RlIGxvY2sgaGFzIGFscmVhZHkgYmVlbiBhY3F1aXJlZCBpbiBidHJmc19lbmNvZGVkX3JlYWQoKS4gKi9cbmZzL2J0cmZzL2lvY3RsLmMtNDU1Ni1cdGJ0cmZzX2xvY2tkZXBfaW5vZGVfYWNxdWlyZShpbm9kZSwgaV9yd3NlbSk7XG4tLVxuZnMvYnRyZnMvaW9jdGwuYz00NjEzPXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuZnMvYnRyZnMvaW9jdGwuYy00NjU2LVxuZnMvYnRyZnMvaW9jdGwuYzo0NjU3Olx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhpbm9kZSwgZGlza19ieXRlbnIsXG5mcy9idHJmcy9pb2N0bC5jLTQ2NTgtXHRcdFx0XHRcdFx0ICAgIGRpc2tfaW9fc2l6ZSwgcGFnZXMsIHByaXYpO1xuLS1cbmZzL2J0cmZzL2lvY3RsLmM9NDY4OT1zdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTQ3ODYtXG5mcy9idHJmcy9pb2N0bC5jOjQ3ODc6XHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWQoXHUwMDI2a2lvY2IsIFx1MDAyNmRhdGEtXHUwMDNlaXRlciwgXHUwMDI2ZGF0YS1cdTAwM2VhcmdzLCBcdTAwMjZjYWNoZWRfc3RhdGUsXG5mcy9idHJmcy9pb2N0bC5jLTQ3ODgtXHRcdFx0XHQgXHUwMDI2ZGlza19ieXRlbnIsIFx1MDAyNmRpc2tfaW9fc2l6ZSk7XG4tLVxuZnMvYnRyZnMvc2VuZC5jPTU1MDA9c3RhdGljIGludCBzZW5kX2VuY29kZWRfZXh0ZW50KHN0cnVjdCBzZW5kX2N0eCAqc2N0eCwgc3RydWN0IGJ0cmZzX3BhdGggKnBhdGgsXG4tLVxuZnMvYnRyZnMvc2VuZC5jLTU1NzAtXHQgKi9cbmZzL2J0cmZzL3NlbmQuYzo1NTcxOlx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhpbm9kZSxcbmZzL2J0cmZzL3NlbmQuYy01NTcyLVx0XHRcdFx0XHRcdCAgICBkaXNrX2J5dGVuciwgZGlza19udW1fYnl0ZXMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzEzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEJ0cmZzIGZvciBGdXp6aW5nIEZvY3VzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gbG9vayBhdCBgYnRyZnNfZW5jb2RlZF9yZWFkYCwgd2hpY2ggaXMgZXhwb3J0ZWQgaW4gYGZzL2J0cmZzL2J0cmZzX2lub2RlLmhgIGFuZCBpcyB1dGlsaXplZCBpbiBgZnMvYnRyZnMvaW9jdGwuY2AuIEJ1dCBob2xkIG9uLCBpdCBpc24mIzM5O3QgZGVjbGFyZWQgc3RhdGljLCBzbyB0aGF0JiMzOTtzIHNvbWV0aGluZyB0byBub3RlIGZvciBsYXRlci4KClRoaW5raW5nIG1vcmUgYnJvYWRseSBhYm91dCBwb3RlbnRpYWwgdGFyZ2V0cywgSSBjb25zaWRlcmVkIGBfX2ltcG9ydF9pb3ZlY2AgZnJvbSBgbGliL2lvdl9pdGVyLmNgLiBIb3dldmVyLCB0aGF0JiMzOTtzIGEgcHJldHR5IGdlbmVyaWMgZnVuY3Rpb24uIFdoaWxlIEkmIzM5O2xsIGtlZXAgaXQgaW4gbWluZCBhcyBhIHBvdGVudGlhbCBwYXRoIGZvciBleHBsb3JhdGlvbiwgaXQgbWlnaHQgbm90IGJlIHRoZSBtb3N0IGVmZmVjdGl2ZSBzeW1ib2wgdG8gKmZvY3VzKiBvdXIgZnV6emluZyBlZmZvcnRzIG9uLiBUaGUgYnRyZnMgaW9fdXJpbmcgY29tbWFuZHMgYXJlIG15IHByaW1hcnkgZ29hbCBoZXJlLCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiB0aGVtLgoKVGhhdCBicmluZ3MgbWUgdG8gYGJ0cmZzX3VyaW5nX2NtZGAsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIHByaW1lIGNhbmRpZGF0ZS4gQW5kIEkmIzM5O2xsIGFkZCBgYnRyZnNfZW5jb2RlZF9yZWFkYCBhbmQgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgIHRvIHRoZSBsaXN0IG9mIGtleSBzeW1ib2xzIGZvciB0aGUgZnV6emVyIHRvIGV4cGxvcmUuCgpOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgdGhlIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHVwIHByb3Blcmx5LiBXZSYjMzk7bGwgbmVlZCBgQ09ORklHX0JUUkZTX0ZTYCwgb2YgY291cnNlLiBJJiMzOTtsbCB0YWtlIGEgbG9vayBhdCBgZnMvYnRyZnMvS2NvbmZpZ2AgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBpb191cmluZy1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gYnRyZnMgdG8gYmUgYXdhcmUgb2YuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW9fdXJpbmcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9idHJmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ5MDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgcmVmbGVjdGluZyB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipJbnZlc3RpZ2F0aW5nIGlvX3VyaW5nIEludGVncmF0aW9uIChvciBMYWNrIFRoZXJlb2YpIHdpdGhpbiB0aGUgQnRyZnMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byB0aGUgQnRyZnMgS2NvbmZpZywgc3BlY2lmaWNhbGx5IGl0cyBpbnRlcmFjdGlvbiB3aXRoIGBpb191cmluZ2AuIFNlZW1zIGxpa2UgdGhlcmUmIzM5O3Mgbm8gZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gZW50cnkgZm9yIGBpb191cmluZ2AgaXRzZWxmIHdpdGhpbiB0aGUgQnRyZnMgc2VjdGlvbi4gVGhhdCYjMzk7cyBhIGJpdCB1bmV4cGVjdGVkOyBvZnRlbiwgd2hlbiBhIHN1YnN5c3RlbSBsZXZlcmFnZXMgYW5vdGhlciwgdGhlcmUmIzM5O3MgYXQgbGVhc3QgYSBmbGFnIHRvIGVuYWJsZSBpdCwgb3IgYSBkZXBlbmRlbmN5IGxpc3RlZC4gT2theSwgc28gbm8gZXhwbGljaXQgYENPTkZJR19CVFJGU19JT19VUklOR2Agb3IgYW55dGhpbmcgbGlrZSB0aGF0LiBUaGF0IG5hcnJvd3MgaXQgZG93bi4gTGV0IG1lIGp1c3QgcXVpY2tseSBzY2FuIHRoZSBLY29uZmlnIGZpbGUgZm9yIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3MsIGV2ZW4gaW5kaXJlY3RseS4gUGVyaGFwcyBpdOKAmXMgYSBkZXBlbmRlbmN5IG9mIHNvbWV0aGluZyBlbHNlLiBJIGFtIGdvaW5nIHRvIHNlZSBpZiBhbnkgZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZXhpc3QgdGhhdCB3b3VsZCBpbmRpcmVjdGx5IHN1Z2dlc3Qgc29tZSBzb3J0IG9mIGBpb191cmluZ2Agc3VwcG9ydCwgZXZlbiBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBtZW50aW9uZWQuIExldCYjMzk7cyBzZWUgd2hhdCB0dXJucyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlRSRlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9idHJmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL0tjb25maWctMi1cbmZzL2J0cmZzL0tjb25maWc6Mzpjb25maWcgQlRSRlNfRlNcbmZzL2J0cmZzL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O0J0cmZzIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2J0cmZzL0tjb25maWctMzgtXG5mcy9idHJmcy9LY29uZmlnOjM5OmNvbmZpZyBCVFJGU19GU19QT1NJWF9BQ0xcbmZzL2J0cmZzL0tjb25maWctNDAtXHRib29sIFwmIzM0O0J0cmZzIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG5mcy9idHJmcy9LY29uZmlnOjQxOlx0ZGVwZW5kcyBvbiBCVFJGU19GU1xuZnMvYnRyZnMvS2NvbmZpZy00Mi1cdHNlbGVjdCBGU19QT1NJWF9BQ0xcbi0tXG5mcy9idHJmcy9LY29uZmlnLTQ4LVxuZnMvYnRyZnMvS2NvbmZpZzo0OTpjb25maWcgQlRSRlNfRlNfUlVOX1NBTklUWV9URVNUU1xuZnMvYnRyZnMvS2NvbmZpZy01MC1cdGJvb2wgXCYjMzQ7QnRyZnMgd2lsbCBydW4gc2FuaXR5IHRlc3RzIHVwb24gbG9hZGluZ1wmIzM0O1xuZnMvYnRyZnMvS2NvbmZpZzo1MTpcdGRlcGVuZHMgb24gQlRSRlNfRlNcbmZzL2J0cmZzL0tjb25maWctNTItXHRoZWxwXG4tLVxuZnMvYnRyZnMvS2NvbmZpZz02MD1jb25maWcgQlRSRlNfREVCVUdcbmZzL2J0cmZzL0tjb25maWctNjEtXHRib29sIFwmIzM0O0J0cmZzIGRlYnVnZ2luZyBzdXBwb3J0XCYjMzQ7XG5mcy9idHJmcy9LY29uZmlnOjYyOlx0ZGVwZW5kcyBvbiBCVFJGU19GU1xuZnMvYnRyZnMvS2NvbmZpZy02My1cdHNlbGVjdCBSRUZfVFJBQ0tFUiBpZiBTVEFDS1RSQUNFX1NVUFBPUlRcbi0tXG5mcy9idHJmcy9LY29uZmlnPTc0PWNvbmZpZyBCVFJGU19BU1NFUlRcbmZzL2J0cmZzL0tjb25maWctNzUtXHRib29sIFwmIzM0O0J0cmZzIGFzc2VydCBzdXBwb3J0XCYjMzQ7XG5mcy9idHJmcy9LY29uZmlnOjc2Olx0ZGVwZW5kcyBvbiBCVFJGU19GU1xuZnMvYnRyZnMvS2NvbmZpZy03Ny1cdGhlbHBcbi0tXG5mcy9idHJmcy9LY29uZmlnPTg1PWNvbmZpZyBCVFJGU19FWFBFUklNRU5UQUxcbmZzL2J0cmZzL0tjb25maWctODYtXHRib29sIFwmIzM0O0J0cmZzIGV4cGVyaW1lbnRhbCBmZWF0dXJlc1wmIzM0O1xuZnMvYnRyZnMvS2NvbmZpZzo4NzpcdGRlcGVuZHMgb24gQlRSRlNfRlNcbmZzL2J0cmZzL0tjb25maWctODgtXHRkZWZhdWx0IG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3MTAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBUaG91Z2h0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZS4gVGhlIGJpZyBvbmUgZm9yIEJ0cmZzIGlzLCBvYnZpb3VzbHksIGBDT05GSUdfQlRSRlNfRlNgLiBUaGF0JiMzOTtzIHRoZSBjb3JlLiBCdXQgSSYjMzk7bSBhbHNvIHRoaW5raW5nIGFib3V0IGlvX3VyaW5nLCBzaW5jZSBpdCBzZWVtcyB0byBiZSByZWxldmFudC4gSG1tLCByaWdodCwgdGhhdCYjMzk7cyBlbmFibGVkIGJ5IGBDT05GSUdfSU9fVVJJTkdgLgoKTm93LCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBgQ09ORklHX0lPX1VSSU5HYCBpcyAqcmVxdWlyZWQqIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgY2xlYXJseS4gT2theSwgeWVzLiBDbGVhcmx5LCB0byBhY3R1YWxseSAqdXNlKiBpb191cmluZyBjb21tYW5kcyB3aXRoIHRoZSBmaWxlc3lzdGVtLCBgQ09ORklHX0lPX1VSSU5HYCBpdHNlbGYgaXMgYSBwcmVyZXF1aXNpdGUuCgpTbywgbGV0JiMzOTtzIG5haWwgdGhpcyBkb3duLiBJdCBzZWVtcyBJJiMzOTtsbCBuZWVkIGJvdGggYEJUUkZTX0ZTYCBhbmQgYElPX1VSSU5HYCBlbmFibGVkIHRvIG1ha2UgdGhlIGFwcHJvcHJpYXRlIGNhbGxzIHRvIHRoZSBpb191cmluZyBzdWJzeXN0ZW0gd2l0aGluIEJ0cmZzLgoKQWxyaWdodCwgYmVmb3JlIEkgY29tcGxldGVseSBjb21taXQgdG8gdGhhdCwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZyBieSBsb29raW5nIHNwZWNpZmljYWxseSBhdCBgYnRyZnNfdXJpbmdfY21kYCB3aXRoaW4gYGZzL2J0cmZzL2lvY3RsLmNgLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIG51YW5jZS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGlvX3VyaW5nIGludGVncmF0aW9uIGhhcHBlbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0cmZzX3VyaW5nX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2lvY3RsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvaW9jdGwuYz00ODM4PXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTQ5NTgtXG5mcy9idHJmcy9pb2N0bC5jOjQ5NTk6aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbmZzL2J0cmZzL2lvY3RsLmMtNDk2MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MjQ0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIHRoZSBDb25kaXRpb25hbCBDb21waWxhdGlvbiBvZiBgYnRyZnNfdXJpbmdfY21kYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gdGhlIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBidHJmc191cmluZ19jbWRgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIGZ1bmN0aW9uIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQ/IFNwZWNpZmljYWxseSwgaXMgaXQgd3JhcHBlZCBpbiBhbnkgYCNpZmRlZmAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXM/IEkgbmVlZCB0byBrbm93IGlmIGl0JiMzOTtzIG9ubHkgYWN0aXZlIHVuZGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMgb3Iga2VybmVsIGJ1aWxkcy4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwb3J0YWJpbGl0eSBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgQnRyZnMgZmlsZXN5c3RlbS4gSXQgY291bGQgYmUgdGllZCB0byBhIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9uLCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBmbGFnLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseS4gSWYgaXQgKmlzKiBjb25kaXRpb25hbCwgZmlndXJpbmcgb3V0IHRoZSBzcGVjaWZpYyBjb25kaXRpb24gaXMgdGhlIG5leHQgb3JkZXIgb2YgYnVzaW5lc3MuIEtub3dpbmcgdGhlIGNvbmRpdGlvbnMgb2YgaXRzIGV4aXN0ZW5jZSBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcGxhY2UgaW4gdGhlIEJ0cmZzIGVjb3N5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2lmZGVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvaW9jdGwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9idHJmcy9pb2N0bC5jLTYyLVxuZnMvYnRyZnMvaW9jdGwuYzo2MzojaWZkZWYgQ09ORklHXzY0QklUXG5mcy9idHJmcy9pb2N0bC5jLTY0LS8qIElmIHdlIGhhdmUgYSAzMi1iaXQgdXNlcnNwYWNlIGFuZCA2NC1iaXQga2VybmVsLCB0aGVuIHRoZSBVQVBJXG4tLVxuZnMvYnRyZnMvaW9jdGwuYz0xOTU3PXN0YXRpYyBpbnQgX2J0cmZzX2lvY3RsX2dldF9zdWJ2b2xfaW5mbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtMjA2MC1cbmZzL2J0cmZzL2lvY3RsLmM6MjA2MTojaWZkZWYgQ09ORklHXzY0QklUXG5mcy9idHJmcy9pb2N0bC5jLTIwNjItc3RhdGljIGludCBidHJmc19pb2N0bF9nZXRfc3Vidm9sX2luZm9fMzIoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuZnMvYnRyZnMvaW9jdGwuYz0zODU0PXN0YXRpYyBsb25nIF9idHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtMzk2MS1cbmZzL2J0cmZzL2lvY3RsLmM6Mzk2MjojaWZkZWYgQ09ORklHXzY0QklUXG5mcy9idHJmcy9pb2N0bC5jLTM5NjMtc3RhdGljIGxvbmcgYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbF8zMihzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9idHJmcy9pb2N0bC5jPTU0ODI9bG9uZyBidHJmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50XG4tLVxuZnMvYnRyZnMvaW9jdGwuYy01NTc4LVx0XHRyZXR1cm4gYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbChmaWxlLCBhcmdwKTtcbmZzL2J0cmZzL2lvY3RsLmM6NTU3OTojaWZkZWYgQ09ORklHXzY0QklUXG5mcy9idHJmcy9pb2N0bC5jLTU1ODAtXHRjYXNlIEJUUkZTX0lPQ19TRVRfUkVDRUlWRURfU1VCVk9MXzMyOlxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtNTYxNC1cdFx0cmV0dXJuIGJ0cmZzX2lvY3RsX2dldF9zdWJ2b2xfaW5mbyhpbm9kZSwgYXJncCk7XG5mcy9idHJmcy9pb2N0bC5jOjU2MTU6I2lmZGVmIENPTkZJR182NEJJVFxuZnMvYnRyZnMvaW9jdGwuYy01NjE2LVx0Y2FzZSBCVFJGU19JT0NfR0VUX1NVQlZPTF9JTkZPXzMyOlxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtNTY0OS1cbmZzL2J0cmZzL2lvY3RsLmM6NTY1MDojaWZkZWYgQ09ORklHX0NPTVBBVFxuZnMvYnRyZnMvaW9jdGwuYy01NjUxLWxvbmcgYnRyZnNfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDk6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcwOTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJ0cmZzIElPX1VSaW5nIENvbmZpZ3VyYXRpb24gYW5kIEtleSBTeW1ib2xzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIHRoZXJlJiMzOTtzIG5vIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGd1YXJkLCBgI2lmZGVmIENPTkZJR19JT19VUklOR2AsIHN1cnJvdW5kaW5nIGBidHJmc191cmluZ19jbWRgLiBUaGlzIG1lYW5zIHRoYXQgaWYgQlRSRlMgaXMgZW5hYmxlZCwgdGhlIGNvZGUgZm9yIGBidHJmc191cmluZ19jbWRgICp3aWxsKiBiZSBjb21waWxlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGlvX3VyaW5nIGlzLiBIb3dldmVyLCB0byAqYWN0dWFsbHkqIGhhdmUgaXQgZnVuY3Rpb24sIHdlIGFic29sdXRlbHkgbmVlZCBgQ09ORklHX0lPX1VSSU5HYCBlbmFibGVkIGluIHRoZSBrZXJuZWwgdG8gYWxsb3cgaW9fdXJpbmcgdG8gY2FsbCBpdC4gU28sIGVuYWJsaW5nIGJvdGggYEJUUkZTX0ZTYCBhbmQgYElPX1VSSU5HYCBpcyB0aGUgcmlnaHQgbW92ZSBmb3IgdXNpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LgoKTm93LCBmb3IgdGhlIGZvY3VzIHN5bWJvbHMuIEkgbmVlZCB0byBpZGVudGlmeSB3aGF0JiMzOTtzIGNydWNpYWwuIEkmIzM5O3ZlIGdvdDogYGJ0cmZzX3VyaW5nX2NtZGAsIGBidHJmc19lbmNvZGVkX3JlYWRgLCBhbmQgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgLiBJIHdhcyBpbml0aWFsbHkgY29uc2lkZXJpbmcgYF9faW1wb3J0X2lvdmVjYCwgYnV0LCBvbiBzZWNvbmQgdGhvdWdodCwgaXQmIzM5O3MgcHJvYmFibHkgdG9vIGdlbmVyaWMgYW5kIGEgaG90LXBhdGggZnVuY3Rpb24gdXNlZCB3aWRlbHkuIFdlIHdhbnQgdG8gYXZvaWQgYmlhc2luZyB0aGUgdGVzdCBkaXN0cmlidXRpb24uCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgaG90LXBhdGggc3RhdHVzIGZvciBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgYW5kIGBidHJmc19lbmNvZGVkX3JlYWRgLiBUaGV5JiMzOTtyZSBzcGVjaWZpYyB0byAmIzM0O2VuY29kZWQgcmVhZHMmIzM0Oywgd2hpY2ggaXMgYSByZWxhdGl2ZWx5IHNwZWNpYWxpemVkIGZlYXR1cmUuIFRoaXMgaW5jbHVkZXMgdGhpbmdzIGxpa2UgYnRyZnMgc2VuZC9yZWNlaXZlIG9yIGNlcnRhaW4gaW9jdGxzLiBUaGV5JiMzOTtyZSBub3QgcGFydCBvZiB0aGUgc3RhbmRhcmQgcmVhZCBwYXRoLCB3aGljaCBpcyBnb29kLiBgYnRyZnNfdXJpbmdfY21kYCBpdHNlbGYgaXMgdGhlIGlvX3VyaW5nIGVudHJ5IHBvaW50IGZvciBidHJmcy4gUmlnaHQgbm93LCBpdCBoYW5kbGVzIGVuY29kZWQgcmVhZC93cml0ZSBvcGVyYXRpb25zLiBTbywgaXQgaXMgbm90IGEgZ2VuZXJpYyBob3QgcGF0aCBlaXRoZXIuCgpUaGVyZWZvcmUsIGFmdGVyIHRoaXMgcmV2aWV3LCBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgcmVtYWluczoKLSBgYnRyZnNfdXJpbmdfY21kYAotIGBidHJmc19lbmNvZGVkX3JlYWRgCi0gYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgCgpOZXh0IHN0ZXAsIGNoZWNrIGlmIGBidHJmc19lbmNvZGVkX3JlYWRgIGlzIGV4cG9ydGVkIG9yIGp1c3QgZ2xvYmFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwOTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmJ0cmZzX2VuY29kZWRfcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2J0cmZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTgxCgkJCQkJCQlvdXRwdXQ6IDEyNQoJCQkJCQkJdGhvdWdodHM6IDg5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIGJ0cmZzIGlvX3VyaW5nIFRhcmdldHMgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZyB3aXRoIHN5emthbGxlci4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIGdsb2JhbCB3aXRoaW4gYnRyZnMsIHdoaWNoIGlzIGZpbmUsIGFzIHN5emthbGxlciBjYW4gdGFyZ2V0IGl0IGdpdmVuIHRoZSBzeW1ib2wgbmFtZS4KCkluaXRpYWxseSwgSSBpZGVudGlmaWVkIGBidHJmc191cmluZ19jbWRgIGFzIGEgcG90ZW50aWFsIGNhbmRpZGF0ZSwgYXMgaXQgaXMgZ2xvYmFsLiBUaGVuIEkgY2hlY2tlZCBgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkYCBhbmQgYGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGVgLCBidXQgdGhleSYjMzk7cmUgc3RhdGljIGFuZCBsaWtlbHkgdG8gYmUgaW5saW5lZCwgZWxpbWluYXRpbmcgdGhlbSBhcyBnb29kIGNob2ljZXMuIFRoZSBwcm9tcHQgZG9lcyBzYXkgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBTbyBgYnRyZnNfdXJpbmdfY21kYCBzZWVtcyBsaWtlIHRoZSBpbml0aWFsIHJpZ2h0IGNob2ljZS4KCkkmIzM5O2xsIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEkgc2VlIGBidHJmc191cmluZ19yZWFkX2ZpbmlzaGVkYCBhbmQgYGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50YCwgd2hpY2ggYXJlIGFsc28gc3RhdGljLiBUaGVuIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGBidHJmc191cmluZ19lbmNvZGVkX3JlYWRgLCBhbmQgYGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGVgLiBMYXN0bHksIGBfX2ltcG9ydF9pb3ZlY2Agd2hpY2ggaXMgZXhwb3J0ZWQsIGJ1dCBpcyBhIGdlbmVyaWMgaG90LXBhdGguCgpTbywgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0IHN5bWJvbHMgYXJlIGltcGFjdGVkLiBCYXNlZCBvbiBteSByZXZpZXcsIHNvIGZhciBJJiMzOTt2ZSBub3RlZDoKKiAgIGBidHJmc191cmluZ19jbWRgCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIG1vZGlmaWNhdGlvbnMgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGlzbiYjMzk7dCBtb3JlIHRvIGNvbnNpZGVyLgoKSSBzZWUgdGhhdCBgYnRyZnNfZW5jb2RlZF9yZWFkYCBpc24mIzM5O3QgbW9kaWZpZWQuIE9rLiBCdXQgd2hhdCBhYm91dCBjYWxsZXJzPyBMZXQmIzM5O3MgY2hlY2sgdGhlIGRpZmYgYWdhaW4uIEkgc2VlIG5vdyB0aGF0IHRoZSBkaWZmIG1vZGlmaWVzOgoKKiAgIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzYAoqICAgYGJ0cmZzX3VyaW5nX3JlYWRfZmluaXNoZWRgCiogICBgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRgCiogICBgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkYAoqICAgYGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGVgCiogICBgX19pbXBvcnRfaW92ZWNgCgpPa2F5LCBnb29kLiBTbyBgYnRyZnNfZW5jb2RlZF9yZWFkYCAqaXMqIG5vdCBtb2RpZmllZC4gT25seSB0aGUgY2FsbGVycy4gVGhlcmVmb3JlLCBgYnRyZnNfZW5jb2RlZF9yZWFkYCBpc24mIzM5O3QgaW4gc2NvcGUuCgpOb3csIGxldCBtZSBjaGVjayB0aGUgZGlmZiBmb3IgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgIHRvIGNvbmZpcm0uIFllcCwgdGhlIGNvZGUgbW9kaWZpZXMgdGhlIGNvbXBsZXRpb24gbG9naWMsIHNvIGl0IGlzIGRlZmluaXRlbHkgbW9kaWZpZWQgYW5kIGEgZm9jdXMgc3ltYm9sLgoKVGhlcmVmb3JlLCB0aGUgZmluYWwgZm9jdXMgc3ltYm9scyBhcmU6CgoqICAgYGJ0cmZzX3VyaW5nX2NtZGAKKiAgIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzYAoKR2l2ZW4gd2hhdCBJJiMzOTttIHNlZWluZywgdGhpcyBpcyBmdW5jdGlvbmFsLCBhbmQgdGhlIGZpeGVzIGNvdmVyIG1lbW9yeSBsZWFrcywgbG9ja2luZyBpc3N1ZXMsIGFuZCBpb191cmluZyByZXRyeSBsb2dpYyB3aXRoaW4gYnRyZnMuIFRoZXNlIG1vZGlmaWNhdGlvbnMgYXJlIGhpdHRpbmcgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHdpdGhpbiB0aGUgYnRyZnMgZmlsZXN5c3RlbSBhbmQgaXRzIGludGVncmF0aW9uIHdpdGggaW9fdXJpbmcuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBmdXp6aW5nLiBUaGUgcmVxdWlyZWQgY29uZmlncyB3b3VsZCBiZSBgQlRSRlNfRlNgIGFuZCBgSU9fVVJJTkdgLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA5OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCVFJGU19GUyYjMzQ7LAogICAgJiMzNDtJT19VUklORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2J0cmZzX3VyaW5nX2NtZCYjMzQ7LAogICAgJiMzNDtidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG1lbW9yeSBsZWFrcywgbG9ja2luZyBpc3N1ZXMsIGFuZCBpb191cmluZyByZXRyeSBsb2dpYyBpbiBidHJmcyBpb191cmluZyBlbmNvZGVkIHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4gSXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGluIHRoZSBidHJmcyBmaWxlc3lzdGVtIGFuZCBpb191cmluZyBpbnRlZ3JhdGlvbiwgd2hpY2ggaXMgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlRSRlNfRlMmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidHJmc191cmluZ19jbWQmIzM0OywKICAgICYjMzQ7YnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtZW1vcnkgbGVha3MsIGxvY2tpbmcgaXNzdWVzLCBhbmQgaW9fdXJpbmcgcmV0cnkgbG9naWMgaW4gYnRyZnMgaW9fdXJpbmcgZW5jb2RlZCByZWFkL3dyaXRlIG9wZXJhdGlvbnMuIEl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgYnRyZnMgZmlsZXN5c3RlbSBhbmQgaW9fdXJpbmcgaW50ZWdyYXRpb24sIHdoaWNoIGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NjowNS40NzEzNjI3MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDA1Mjk3NTQxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCVFJGU19GU1wiLFxuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidHJmc191cmluZ19jbWRcIixcbiAgICBcImJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBtZW1vcnkgbGVha3MsIGxvY2tpbmcgaXNzdWVzLCBhbmQgaW9fdXJpbmcgcmV0cnkgbG9naWMgaW4gYnRyZnMgaW9fdXJpbmcgZW5jb2RlZCByZWFkL3dyaXRlIG9wZXJhdGlvbnMuIEl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgYnRyZnMgZmlsZXN5c3RlbSBhbmQgaW9fdXJpbmcgaW50ZWdyYXRpb24sIHdoaWNoIGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjA1LjQ3MTM3MDIzN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NDA5NzkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQyNjUyZjNiYzRiZGNlY2FkZDAyMzk0NjA0ZjZhNTRiYzA0NGMxZmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAwOTo0NjowMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9idHJmcy9pbm9kZS5jIGIvZnMvYnRyZnMvaW5vZGUuY1xcbmluZGV4IGI0NDZjMzAxNGIyNDAuLjhlM2NlZTM4NDVlNmYgMTAwNjQ0XFxuLS0tIGEvZnMvYnRyZnMvaW5vZGUuY1xcbisrKyBiL2ZzL2J0cmZzL2lub2RlLmNcXG5AQCAtOTQxMSw3ICs5NDExLDYgQEAgaW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSxcXG4gXFx0c3RydWN0IGNvbXBsZXRpb24gc3luY19yZWFkcztcXG4gXFx0dW5zaWduZWQgbG9uZyBpID0gMDtcXG4gXFx0c3RydWN0IGJ0cmZzX2JpbyAqYmJpbztcXG4tXFx0aW50IHJldDtcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIEZhc3QgcGF0aCBmb3Igc3luY2hyb25vdXMgcmVhZHMgd2hpY2ggY29tcGxldGVzIGluIHRoaXMgY2FsbCwgaW9fdXJpbmdcXG5AQCAtOTQ1OCwxMCArOTQ1NywxMCBAQCBpbnQgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLFxcbiBcXG4gXFx0aWYgKHVyaW5nX2N0eCkge1xcbiBcXHRcXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZwcml2LVxcdTAwM2VwZW5kaW5nX3JlZnMpKSB7XFxuLVxcdFxcdFxcdHJldCA9IGJsa19zdGF0dXNfdG9fZXJybm8oUkVBRF9PTkNFKHByaXYtXFx1MDAzZXN0YXR1cykpO1xcbi1cXHRcXHRcXHRidHJmc191cmluZ19yZWFkX2V4dGVudF9lbmRpbyh1cmluZ19jdHgsIHJldCk7XFxuK1xcdFxcdFxcdGludCBlcnIgPSBibGtfc3RhdHVzX3RvX2Vycm5vKFJFQURfT05DRShwcml2LVxcdTAwM2VzdGF0dXMpKTtcXG4rXFxuK1xcdFxcdFxcdGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50X2VuZGlvKHVyaW5nX2N0eCwgZXJyKTtcXG4gXFx0XFx0XFx0a2ZyZWUocHJpdik7XFxuLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHJldHVybiAtRUlPQ0JRVUVVRUQ7XFxuZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lvY3RsLmMgYi9mcy9idHJmcy9pb2N0bC5jXFxuaW5kZXggYmFhNjQ1ZTk4ODEyNi4uMTA2NTQxNmJjYjFkZCAxMDA2NDRcXG4tLS0gYS9mcy9idHJmcy9pb2N0bC5jXFxuKysrIGIvZnMvYnRyZnMvaW9jdGwuY1xcbkBAIC00NTUyLDcgKzQ1NTIsNyBAQCBzdGF0aWMgdm9pZCBidHJmc191cmluZ19yZWFkX2ZpbmlzaGVkKHN0cnVjdCBpb190d19yZXEgdHdfcmVxLCBpb190d190b2tlbl90IHR3KVxcbiBcXHRzaXplX3QgcGFnZV9vZmZzZXQ7XFxuIFxcdHNzaXplX3QgcmV0O1xcbiBcXG4tXFx0LyogVGhlIGlub2RlIGxvY2sgaGFzIGFscmVhZHkgYmVlbiBhY3F1aXJlZCBpbiBidHJmc191cmluZ19yZWFkX2V4dGVudC4gICovXFxuK1xcdC8qIFRoZSBpbm9kZSBsb2NrIGhhcyBhbHJlYWR5IGJlZW4gYWNxdWlyZWQgaW4gYnRyZnNfZW5jb2RlZF9yZWFkKCkuICovXFxuIFxcdGJ0cmZzX2xvY2tkZXBfaW5vZGVfYWNxdWlyZShpbm9kZSwgaV9yd3NlbSk7XFxuIFxcbiBcXHRpZiAocHJpdi1cXHUwMDNlZXJyKSB7XFxuQEAgLTQ2MTgsNyArNDYxOCw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpb3ZlYyAqaW92LCBzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQpXFxuIHtcXG4gXFx0c3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSA9IEJUUkZTX0koZmlsZV9pbm9kZShpb2NiLVxcdTAwM2VraV9maWxwKSk7XFxuLVxcdHN0cnVjdCBleHRlbnRfaW9fdHJlZSAqaW9fdHJlZSA9IFxcdTAwMjZpbm9kZS1cXHUwMDNlaW9fdHJlZTtcXG4gXFx0c3RydWN0IHBhZ2UgKipwYWdlcyA9IE5VTEw7XFxuIFxcdHN0cnVjdCBidHJmc191cmluZ19wcml2ICpwcml2ID0gTlVMTDtcXG4gXFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcztcXG5AQCAtNDYyNiw4ICs0NjI1LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuIFxcbiBcXHRucl9wYWdlcyA9IERJVl9ST1VORF9VUChkaXNrX2lvX3NpemUsIFBBR0VfU0laRSk7XFxuIFxcdHBhZ2VzID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIG5yX3BhZ2VzLCBHRlBfTk9GUyk7XFxuLVxcdGlmICghcGFnZXMpXFxuLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRpZiAoIXBhZ2VzKSB7XFxuK1xcdFxcdHJldCA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gb3V0X2ZhaWw7XFxuK1xcdH1cXG4gXFx0cmV0ID0gYnRyZnNfYWxsb2NfcGFnZV9hcnJheShucl9wYWdlcywgcGFnZXMsIEdGUF9OT0ZTKTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbkBAIC00Njc0LDEyICs0Njc1LDEyIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuIFxcdHJldHVybiAtRUlPQ0JRVUVVRUQ7XFxuIFxcbiBvdXRfZmFpbDpcXG4tXFx0YnRyZnNfdW5sb2NrX2V4dGVudChpb190cmVlLCBzdGFydCwgbG9ja2VuZCwgXFx1MDAyNmNhY2hlZF9zdGF0ZSk7XFxuLVxcdGJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgQlRSRlNfSUxPQ0tfU0hBUkVEKTtcXG4gXFx0a2ZyZWUocHJpdik7XFxuLVxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgbnJfcGFnZXM7IGkrKykge1xcbi1cXHRcXHRpZiAocGFnZXNbaV0pXFxuLVxcdFxcdFxcdF9fZnJlZV9wYWdlKHBhZ2VzW2ldKTtcXG4rXFx0aWYgKHBhZ2VzKSB7XFxuK1xcdFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgbnJfcGFnZXM7IGkrKykge1xcbitcXHRcXHRcXHRpZiAocGFnZXNbaV0pXFxuK1xcdFxcdFxcdFxcdF9fZnJlZV9wYWdlKHBhZ2VzW2ldKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcdGtmcmVlKHBhZ2VzKTtcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtNDcwMyw5ICs0NzA0LDYgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3JlYWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWVcXG4gXFx0c3RydWN0IGlvX2J0cmZzX2NtZCAqYmMgPSBpb191cmluZ19jbWRfdG9fcGR1KGNtZCwgc3RydWN0IGlvX2J0cmZzX2NtZCk7XFxuIFxcdHN0cnVjdCBidHJmc191cmluZ19lbmNvZGVkX2RhdGEgKmRhdGEgPSBOVUxMO1xcbiBcXG4tXFx0aWYgKGNtZC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJT1JJTkdfVVJJTkdfQ01EX1JFSVNTVUUpXFxuLVxcdFxcdGRhdGEgPSBiYy1cXHUwMDNlZGF0YTtcXG4tXFxuIFxcdGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkge1xcbiBcXHRcXHRyZXQgPSAtRVBFUk07XFxuIFxcdFxcdGdvdG8gb3V0X2FjY3Q7XFxuQEAgLTQ3NTksOSArNDc1NywxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRkYXRhLVxcdTAwM2Vpb3YgPSBkYXRhLVxcdTAwM2Vpb3ZzdGFjaztcXG4tXFx0XFx0cmV0ID0gaW1wb3J0X2lvdmVjKElURVJfREVTVCwgZGF0YS1cXHUwMDNlYXJncy5pb3YsIGRhdGEtXFx1MDAzZWFyZ3MuaW92Y250LFxcbi1cXHRcXHRcXHRcXHQgICBBUlJBWV9TSVpFKGRhdGEtXFx1MDAzZWlvdnN0YWNrKSwgXFx1MDAyNmRhdGEtXFx1MDAzZWlvdixcXG4tXFx0XFx0XFx0XFx0ICAgXFx1MDAyNmRhdGEtXFx1MDAzZWl0ZXIpO1xcbitcXHRcXHRyZXQgPSBfX2ltcG9ydF9pb3ZlYyhJVEVSX0RFU1QsIGRhdGEtXFx1MDAzZWFyZ3MuaW92LCBkYXRhLVxcdTAwM2VhcmdzLmlvdmNudCxcXG4rXFx0XFx0XFx0XFx0ICAgICBBUlJBWV9TSVpFKGRhdGEtXFx1MDAzZWlvdnN0YWNrKSwgXFx1MDAyNmRhdGEtXFx1MDAzZWlvdixcXG4rXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2ZGF0YS1cXHUwMDNlaXRlcixcXG4rXFx0XFx0XFx0XFx0ICAgICAhIShpc3N1ZV9mbGFncyBcXHUwMDI2IElPX1VSSU5HX0ZfQ09NUEFUKSk7XFxuIFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRcXHRnb3RvIG91dF9hY2N0O1xcbiBcXG5AQCAtNDc4Nyw4ICs0Nzg2LDYgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3JlYWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWVcXG4gXFxuIFxcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZChcXHUwMDI2a2lvY2IsIFxcdTAwMjZkYXRhLVxcdTAwM2VpdGVyLCBcXHUwMDI2ZGF0YS1cXHUwMDNlYXJncywgXFx1MDAyNmNhY2hlZF9zdGF0ZSxcXG4gXFx0XFx0XFx0XFx0IFxcdTAwMjZkaXNrX2J5dGVuciwgXFx1MDAyNmRpc2tfaW9fc2l6ZSk7XFxuLVxcdGlmIChyZXQgPT0gLUVBR0FJTilcXG4tXFx0XFx0Z290byBvdXRfYWNjdDtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FSU9DQlFVRVVFRClcXG4gXFx0XFx0Z290byBvdXRfZnJlZTtcXG4gXFxuQEAgLTQ4MTYsOCArNDgxMywxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBjYWNoZWRfc3RhdGUsIGRpc2tfYnl0ZW5yLCBkaXNrX2lvX3NpemUsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgIGNvdW50LCBkYXRhLVxcdTAwM2VhcmdzLmNvbXByZXNzaW9uLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBkYXRhLVxcdTAwM2Vpb3YsIGNtZCk7XFxuLVxcbi1cXHRcXHRnb3RvIG91dF9hY2N0O1xcbitcXHRcXHRpZiAocmV0ID09IC1FSU9DQlFVRVVFRClcXG4rXFx0XFx0XFx0Z290byBvdXRfYWNjdDtcXG4rXFx0XFx0YnRyZnNfdW5sb2NrX2V4dGVudChpb190cmVlLCBzdGFydCwgbG9ja2VuZCwgXFx1MDAyNmNhY2hlZF9zdGF0ZSk7XFxuK1xcdFxcdGJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgQlRSRlNfSUxPQ0tfU0hBUkVEKTtcXG4gXFx0fVxcbiBcXG4gb3V0X2ZyZWU6XFxuQEAgLTQ4MjgsOCArNDgyNywxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxcbiBcXHRcXHRhZGRfcmNoYXIoY3VycmVudCwgcmV0KTtcXG4gXFx0aW5jX3N5c2NyKGN1cnJlbnQpO1xcbiBcXG4tXFx0aWYgKHJldCAhPSAtRUlPQ0JRVUVVRUQgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FQUdBSU4pXFxuK1xcdGlmIChyZXQgIT0gLUVJT0NCUVVFVUVEKSB7XFxuIFxcdFxcdGtmcmVlKGRhdGEpO1xcbitcXHRcXHRiYy1cXHUwMDNlZGF0YSA9IE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtNDg0MSwxMiArNDg0Miw4IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1XFxuIFxcdHN0cnVjdCBraW9jYiBraW9jYjtcXG4gXFx0c3NpemVfdCByZXQ7XFxuIFxcdHZvaWQgX191c2VyICpzcWVfYWRkcjtcXG4tXFx0c3RydWN0IGlvX2J0cmZzX2NtZCAqYmMgPSBpb191cmluZ19jbWRfdG9fcGR1KGNtZCwgc3RydWN0IGlvX2J0cmZzX2NtZCk7XFxuIFxcdHN0cnVjdCBidHJmc191cmluZ19lbmNvZGVkX2RhdGEgKmRhdGEgPSBOVUxMO1xcbiBcXG4tXFx0aWYgKGNtZC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJT1JJTkdfVVJJTkdfQ01EX1JFSVNTVUUpXFxuLVxcdFxcdGRhdGEgPSBiYy1cXHUwMDNlZGF0YTtcXG4tXFxuIFxcdGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkge1xcbiBcXHRcXHRyZXQgPSAtRVBFUk07XFxuIFxcdFxcdGdvdG8gb3V0X2FjY3Q7XFxuQEAgLTQ4NTgsNiArNDg1NSwxMSBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxcbiBcXHRcXHRnb3RvIG91dF9hY2N0O1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoaXNzdWVfZmxhZ3MgXFx1MDAyNiBJT19VUklOR19GX05PTkJMT0NLKSB7XFxuK1xcdFxcdHJldCA9IC1FQUdBSU47XFxuK1xcdFxcdGdvdG8gb3V0X2FjY3Q7XFxuK1xcdH1cXG4rXFxuIFxcdGlmICghZGF0YSkge1xcbiBcXHRcXHRkYXRhID0ga3phbGxvY19vYmooKmRhdGEsIEdGUF9OT0ZTKTtcXG4gXFx0XFx0aWYgKCFkYXRhKSB7XFxuQEAgLTQ4NjUsOCArNDg2Nyw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1XFxuIFxcdFxcdFxcdGdvdG8gb3V0X2FjY3Q7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdGJjLVxcdTAwM2VkYXRhID0gZGF0YTtcXG4tXFxuIFxcdFxcdGlmIChpc3N1ZV9mbGFncyBcXHUwMDI2IElPX1VSSU5HX0ZfQ09NUEFUKSB7XFxuICNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQ09NUEFUKVxcbiBcXHRcXHRcXHRzdHJ1Y3QgYnRyZnNfaW9jdGxfZW5jb2RlZF9pb19hcmdzXzMyIGFyZ3MzMjtcXG5AQCAtNDkxNCw5ICs0OTE0LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1XFxuIFxcdFxcdFxcdGdvdG8gb3V0X2FjY3Q7XFxuIFxcbiBcXHRcXHRkYXRhLVxcdTAwM2Vpb3YgPSBkYXRhLVxcdTAwM2Vpb3ZzdGFjaztcXG4tXFx0XFx0cmV0ID0gaW1wb3J0X2lvdmVjKElURVJfU09VUkNFLCBkYXRhLVxcdTAwM2VhcmdzLmlvdiwgZGF0YS1cXHUwMDNlYXJncy5pb3ZjbnQsXFxuLVxcdFxcdFxcdFxcdCAgIEFSUkFZX1NJWkUoZGF0YS1cXHUwMDNlaW92c3RhY2spLCBcXHUwMDI2ZGF0YS1cXHUwMDNlaW92LFxcbi1cXHRcXHRcXHRcXHQgICBcXHUwMDI2ZGF0YS1cXHUwMDNlaXRlcik7XFxuK1xcdFxcdHJldCA9IF9faW1wb3J0X2lvdmVjKElURVJfU09VUkNFLCBkYXRhLVxcdTAwM2VhcmdzLmlvdiwgZGF0YS1cXHUwMDNlYXJncy5pb3ZjbnQsXFxuK1xcdFxcdFxcdFxcdCAgICAgQVJSQVlfU0laRShkYXRhLVxcdTAwM2Vpb3ZzdGFjayksIFxcdTAwMjZkYXRhLVxcdTAwM2Vpb3YsXFxuK1xcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmRhdGEtXFx1MDAzZWl0ZXIsXFxuK1xcdFxcdFxcdFxcdCAgICAgISEoaXNzdWVfZmxhZ3MgXFx1MDAyNiBJT19VUklOR19GX0NPTVBBVCkpO1xcbiBcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0Z290byBvdXRfYWNjdDtcXG4gXFxuQEAgLTQ5MjYsMTEgKzQ5MjcsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChpc3N1ZV9mbGFncyBcXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spIHtcXG4tXFx0XFx0cmV0ID0gLUVBR0FJTjtcXG4tXFx0XFx0Z290byBvdXRfYWNjdDtcXG4tXFx0fVxcbi1cXG4gXFx0cG9zID0gZGF0YS1cXHUwMDNlYXJncy5vZmZzZXQ7XFxuIFxcdHJldCA9IHJ3X3ZlcmlmeV9hcmVhKFdSSVRFLCBmaWxlLCBcXHUwMDI2cG9zLCBkYXRhLVxcdTAwM2VhcmdzLmxlbik7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbkBAIC00OTU2LDggKzQ5NTIsNyBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxcbiBcXHRcXHRhZGRfd2NoYXIoY3VycmVudCwgcmV0KTtcXG4gXFx0aW5jX3N5c2N3KGN1cnJlbnQpO1xcbiBcXG4tXFx0aWYgKHJldCAhPSAtRUFHQUlOKVxcbi1cXHRcXHRrZnJlZShkYXRhKTtcXG4rXFx0a2ZyZWUoZGF0YSk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2xpYi9pb3ZfaXRlci5jIGIvbGliL2lvdl9pdGVyLmNcXG5pbmRleCBjMjQ4NDU1MWE0ZTg2Li45YzIxNThkNWNjZGQzIDEwMDY0NFxcbi0tLSBhL2xpYi9pb3ZfaXRlci5jXFxuKysrIGIvbGliL2lvdl9pdGVyLmNcXG5AQCAtMTQxMCw2ICsxNDEwLDcgQEAgc3NpemVfdCBfX2ltcG9ydF9pb3ZlYyhpbnQgdHlwZSwgY29uc3Qgc3RydWN0IGlvdmVjIF9fdXNlciAqdXZlYyxcXG4gXFx0XFx0KmlvdnAgPSBpb3Y7XFxuIFxcdHJldHVybiB0b3RhbF9sZW47XFxuIH1cXG4rRVhQT1JUX1NZTUJPTF9HUEwoX19pbXBvcnRfaW92ZWMpO1xcbiBcXG4gLyoqXFxuICAqIGltcG9ydF9pb3ZlYygpIC0gQ29weSBhbiBhcnJheSBvZiBcXHUwMDI2c3RydWN0IGlvdmVjIGZyb20gdXNlcnNwYWNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjA2LjkzNjAyOTE4NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc4NTg4MzAwMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJUUkZTX0ZTXCIsXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJ0cmZzX3VyaW5nX2NtZFwiLFxuICAgIFwiYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG1lbW9yeSBsZWFrcywgbG9ja2luZyBpc3N1ZXMsIGFuZCBpb191cmluZyByZXRyeSBsb2dpYyBpbiBidHJmcyBpb191cmluZyBlbmNvZGVkIHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4gSXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGluIHRoZSBidHJmcyBmaWxlc3lzdGVtIGFuZCBpb191cmluZyBpbnRlZ3JhdGlvbiwgd2hpY2ggaXMgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDI2NTJmM2JjNGJkY2VjYWRkMDIzOTQ2MDRmNmE1NGJjMDQ0YzFmZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMDk6NDY6MDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9idHJmcy9pbm9kZS5jIGIvZnMvYnRyZnMvaW5vZGUuY1xuaW5kZXggYjQ0NmMzMDE0YjI0MC4uOGUzY2VlMzg0NWU2ZiAxMDA2NDRcbi0tLSBhL2ZzL2J0cmZzL2lub2RlLmNcbisrKyBiL2ZzL2J0cmZzL2lub2RlLmNcbkBAIC05NDExLDcgKzk0MTEsNiBAQCBpbnQgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLFxuIFx0c3RydWN0IGNvbXBsZXRpb24gc3luY19yZWFkcztcbiBcdHVuc2lnbmVkIGxvbmcgaSA9IDA7XG4gXHRzdHJ1Y3QgYnRyZnNfYmlvICpiYmlvO1xuLVx0aW50IHJldDtcbiBcbiBcdC8qXG4gXHQgKiBGYXN0IHBhdGggZm9yIHN5bmNocm9ub3VzIHJlYWRzIHdoaWNoIGNvbXBsZXRlcyBpbiB0aGlzIGNhbGwsIGlvX3VyaW5nXG5AQCAtOTQ1OCwxMCArOTQ1NywxMCBAQCBpbnQgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLFxuIFxuIFx0aWYgKHVyaW5nX2N0eCkge1xuIFx0XHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNnByaXYtXHUwMDNlcGVuZGluZ19yZWZzKSkge1xuLVx0XHRcdHJldCA9IGJsa19zdGF0dXNfdG9fZXJybm8oUkVBRF9PTkNFKHByaXYtXHUwMDNlc3RhdHVzKSk7XG4tXHRcdFx0YnRyZnNfdXJpbmdfcmVhZF9leHRlbnRfZW5kaW8odXJpbmdfY3R4LCByZXQpO1xuK1x0XHRcdGludCBlcnIgPSBibGtfc3RhdHVzX3RvX2Vycm5vKFJFQURfT05DRShwcml2LVx1MDAzZXN0YXR1cykpO1xuK1xuK1x0XHRcdGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50X2VuZGlvKHVyaW5nX2N0eCwgZXJyKTtcbiBcdFx0XHRrZnJlZShwcml2KTtcbi1cdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXG4gXHRcdHJldHVybiAtRUlPQ0JRVUVVRUQ7XG5kaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmNcbmluZGV4IGJhYTY0NWU5ODgxMjYuLjEwNjU0MTZiY2IxZGQgMTAwNjQ0XG4tLS0gYS9mcy9idHJmcy9pb2N0bC5jXG4rKysgYi9mcy9idHJmcy9pb2N0bC5jXG5AQCAtNDU1Miw3ICs0NTUyLDcgQEAgc3RhdGljIHZvaWQgYnRyZnNfdXJpbmdfcmVhZF9maW5pc2hlZChzdHJ1Y3QgaW9fdHdfcmVxIHR3X3JlcSwgaW9fdHdfdG9rZW5fdCB0dylcbiBcdHNpemVfdCBwYWdlX29mZnNldDtcbiBcdHNzaXplX3QgcmV0O1xuIFxuLVx0LyogVGhlIGlub2RlIGxvY2sgaGFzIGFscmVhZHkgYmVlbiBhY3F1aXJlZCBpbiBidHJmc191cmluZ19yZWFkX2V4dGVudC4gICovXG4rXHQvKiBUaGUgaW5vZGUgbG9jayBoYXMgYWxyZWFkeSBiZWVuIGFjcXVpcmVkIGluIGJ0cmZzX2VuY29kZWRfcmVhZCgpLiAqL1xuIFx0YnRyZnNfbG9ja2RlcF9pbm9kZV9hY3F1aXJlKGlub2RlLCBpX3J3c2VtKTtcbiBcbiBcdGlmIChwcml2LVx1MDAzZWVycikge1xuQEAgLTQ2MTgsNyArNDYxOCw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgaW92ZWMgKmlvdiwgc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kKVxuIHtcbiBcdHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUgPSBCVFJGU19JKGZpbGVfaW5vZGUoaW9jYi1cdTAwM2VraV9maWxwKSk7XG4tXHRzdHJ1Y3QgZXh0ZW50X2lvX3RyZWUgKmlvX3RyZWUgPSBcdTAwMjZpbm9kZS1cdTAwM2Vpb190cmVlO1xuIFx0c3RydWN0IHBhZ2UgKipwYWdlcyA9IE5VTEw7XG4gXHRzdHJ1Y3QgYnRyZnNfdXJpbmdfcHJpdiAqcHJpdiA9IE5VTEw7XG4gXHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzO1xuQEAgLTQ2MjYsOCArNDYyNSwxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50KHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxuIFxuIFx0bnJfcGFnZXMgPSBESVZfUk9VTkRfVVAoZGlza19pb19zaXplLCBQQUdFX1NJWkUpO1xuIFx0cGFnZXMgPSBremFsbG9jX29ianMoc3RydWN0IHBhZ2UgKiwgbnJfcGFnZXMsIEdGUF9OT0ZTKTtcbi1cdGlmICghcGFnZXMpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0aWYgKCFwYWdlcykge1xuK1x0XHRyZXQgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIG91dF9mYWlsO1xuK1x0fVxuIFx0cmV0ID0gYnRyZnNfYWxsb2NfcGFnZV9hcnJheShucl9wYWdlcywgcGFnZXMsIEdGUF9OT0ZTKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbkBAIC00Njc0LDEyICs0Njc1LDEyIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4gXHRyZXR1cm4gLUVJT0NCUVVFVUVEO1xuIFxuIG91dF9mYWlsOlxuLVx0YnRyZnNfdW5sb2NrX2V4dGVudChpb190cmVlLCBzdGFydCwgbG9ja2VuZCwgXHUwMDI2Y2FjaGVkX3N0YXRlKTtcbi1cdGJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgQlRSRlNfSUxPQ0tfU0hBUkVEKTtcbiBcdGtmcmVlKHByaXYpO1xuLVx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIG5yX3BhZ2VzOyBpKyspIHtcbi1cdFx0aWYgKHBhZ2VzW2ldKVxuLVx0XHRcdF9fZnJlZV9wYWdlKHBhZ2VzW2ldKTtcbitcdGlmIChwYWdlcykge1xuK1x0XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgbnJfcGFnZXM7IGkrKykge1xuK1x0XHRcdGlmIChwYWdlc1tpXSlcbitcdFx0XHRcdF9fZnJlZV9wYWdlKHBhZ2VzW2ldKTtcbitcdFx0fVxuIFx0fVxuIFx0a2ZyZWUocGFnZXMpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC00NzAzLDkgKzQ3MDQsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxuIFx0c3RydWN0IGlvX2J0cmZzX2NtZCAqYmMgPSBpb191cmluZ19jbWRfdG9fcGR1KGNtZCwgc3RydWN0IGlvX2J0cmZzX2NtZCk7XG4gXHRzdHJ1Y3QgYnRyZnNfdXJpbmdfZW5jb2RlZF9kYXRhICpkYXRhID0gTlVMTDtcbiBcbi1cdGlmIChjbWQtXHUwMDNlZmxhZ3MgXHUwMDI2IElPUklOR19VUklOR19DTURfUkVJU1NVRSlcbi1cdFx0ZGF0YSA9IGJjLVx1MDAzZWRhdGE7XG4tXG4gXHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpIHtcbiBcdFx0cmV0ID0gLUVQRVJNO1xuIFx0XHRnb3RvIG91dF9hY2N0O1xuQEAgLTQ3NTksOSArNDc1NywxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxuIFx0XHR9XG4gXG4gXHRcdGRhdGEtXHUwMDNlaW92ID0gZGF0YS1cdTAwM2Vpb3ZzdGFjaztcbi1cdFx0cmV0ID0gaW1wb3J0X2lvdmVjKElURVJfREVTVCwgZGF0YS1cdTAwM2VhcmdzLmlvdiwgZGF0YS1cdTAwM2VhcmdzLmlvdmNudCxcbi1cdFx0XHRcdCAgIEFSUkFZX1NJWkUoZGF0YS1cdTAwM2Vpb3ZzdGFjayksIFx1MDAyNmRhdGEtXHUwMDNlaW92LFxuLVx0XHRcdFx0ICAgXHUwMDI2ZGF0YS1cdTAwM2VpdGVyKTtcbitcdFx0cmV0ID0gX19pbXBvcnRfaW92ZWMoSVRFUl9ERVNULCBkYXRhLVx1MDAzZWFyZ3MuaW92LCBkYXRhLVx1MDAzZWFyZ3MuaW92Y250LFxuK1x0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGRhdGEtXHUwMDNlaW92c3RhY2spLCBcdTAwMjZkYXRhLVx1MDAzZWlvdixcbitcdFx0XHRcdCAgICAgXHUwMDI2ZGF0YS1cdTAwM2VpdGVyLFxuK1x0XHRcdFx0ICAgICAhIShpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9DT01QQVQpKTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIG91dF9hY2N0O1xuIFxuQEAgLTQ3ODcsOCArNDc4Niw2IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlXG4gXG4gXHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWQoXHUwMDI2a2lvY2IsIFx1MDAyNmRhdGEtXHUwMDNlaXRlciwgXHUwMDI2ZGF0YS1cdTAwM2VhcmdzLCBcdTAwMjZjYWNoZWRfc3RhdGUsXG4gXHRcdFx0XHQgXHUwMDI2ZGlza19ieXRlbnIsIFx1MDAyNmRpc2tfaW9fc2l6ZSk7XG4tXHRpZiAocmV0ID09IC1FQUdBSU4pXG4tXHRcdGdvdG8gb3V0X2FjY3Q7XG4gXHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVJT0NCUVVFVUVEKVxuIFx0XHRnb3RvIG91dF9mcmVlO1xuIFxuQEAgLTQ4MTYsOCArNDgxMywxMCBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZVxuIFx0XHRcdFx0XHQgICAgICBjYWNoZWRfc3RhdGUsIGRpc2tfYnl0ZW5yLCBkaXNrX2lvX3NpemUsXG4gXHRcdFx0XHRcdCAgICAgIGNvdW50LCBkYXRhLVx1MDAzZWFyZ3MuY29tcHJlc3Npb24sXG4gXHRcdFx0XHRcdCAgICAgIGRhdGEtXHUwMDNlaW92LCBjbWQpO1xuLVxuLVx0XHRnb3RvIG91dF9hY2N0O1xuK1x0XHRpZiAocmV0ID09IC1FSU9DQlFVRVVFRClcbitcdFx0XHRnb3RvIG91dF9hY2N0O1xuK1x0XHRidHJmc191bmxvY2tfZXh0ZW50KGlvX3RyZWUsIHN0YXJ0LCBsb2NrZW5kLCBcdTAwMjZjYWNoZWRfc3RhdGUpO1xuK1x0XHRidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIEJUUkZTX0lMT0NLX1NIQVJFRCk7XG4gXHR9XG4gXG4gb3V0X2ZyZWU6XG5AQCAtNDgyOCw4ICs0ODI3LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlXG4gXHRcdGFkZF9yY2hhcihjdXJyZW50LCByZXQpO1xuIFx0aW5jX3N5c2NyKGN1cnJlbnQpO1xuIFxuLVx0aWYgKHJldCAhPSAtRUlPQ0JRVUVVRUQgXHUwMDI2XHUwMDI2IHJldCAhPSAtRUFHQUlOKVxuK1x0aWYgKHJldCAhPSAtRUlPQ0JRVUVVRUQpIHtcbiBcdFx0a2ZyZWUoZGF0YSk7XG4rXHRcdGJjLVx1MDAzZWRhdGEgPSBOVUxMO1xuK1x0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtNDg0MSwxMiArNDg0Miw4IEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1XG4gXHRzdHJ1Y3Qga2lvY2Iga2lvY2I7XG4gXHRzc2l6ZV90IHJldDtcbiBcdHZvaWQgX191c2VyICpzcWVfYWRkcjtcbi1cdHN0cnVjdCBpb19idHJmc19jbWQgKmJjID0gaW9fdXJpbmdfY21kX3RvX3BkdShjbWQsIHN0cnVjdCBpb19idHJmc19jbWQpO1xuIFx0c3RydWN0IGJ0cmZzX3VyaW5nX2VuY29kZWRfZGF0YSAqZGF0YSA9IE5VTEw7XG4gXG4tXHRpZiAoY21kLVx1MDAzZWZsYWdzIFx1MDAyNiBJT1JJTkdfVVJJTkdfQ01EX1JFSVNTVUUpXG4tXHRcdGRhdGEgPSBiYy1cdTAwM2VkYXRhO1xuLVxuIFx0aWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKSB7XG4gXHRcdHJldCA9IC1FUEVSTTtcbiBcdFx0Z290byBvdXRfYWNjdDtcbkBAIC00ODU4LDYgKzQ4NTUsMTEgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VcbiBcdFx0Z290byBvdXRfYWNjdDtcbiBcdH1cbiBcbitcdGlmIChpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9OT05CTE9DSykge1xuK1x0XHRyZXQgPSAtRUFHQUlOO1xuK1x0XHRnb3RvIG91dF9hY2N0O1xuK1x0fVxuK1xuIFx0aWYgKCFkYXRhKSB7XG4gXHRcdGRhdGEgPSBremFsbG9jX29iaigqZGF0YSwgR0ZQX05PRlMpO1xuIFx0XHRpZiAoIWRhdGEpIHtcbkBAIC00ODY1LDggKzQ4NjcsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxuIFx0XHRcdGdvdG8gb3V0X2FjY3Q7XG4gXHRcdH1cbiBcbi1cdFx0YmMtXHUwMDNlZGF0YSA9IGRhdGE7XG4tXG4gXHRcdGlmIChpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9DT01QQVQpIHtcbiAjaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19DT01QQVQpXG4gXHRcdFx0c3RydWN0IGJ0cmZzX2lvY3RsX2VuY29kZWRfaW9fYXJnc18zMiBhcmdzMzI7XG5AQCAtNDkxNCw5ICs0OTE0LDEwIEBAIHN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1XG4gXHRcdFx0Z290byBvdXRfYWNjdDtcbiBcbiBcdFx0ZGF0YS1cdTAwM2Vpb3YgPSBkYXRhLVx1MDAzZWlvdnN0YWNrO1xuLVx0XHRyZXQgPSBpbXBvcnRfaW92ZWMoSVRFUl9TT1VSQ0UsIGRhdGEtXHUwMDNlYXJncy5pb3YsIGRhdGEtXHUwMDNlYXJncy5pb3ZjbnQsXG4tXHRcdFx0XHQgICBBUlJBWV9TSVpFKGRhdGEtXHUwMDNlaW92c3RhY2spLCBcdTAwMjZkYXRhLVx1MDAzZWlvdixcbi1cdFx0XHRcdCAgIFx1MDAyNmRhdGEtXHUwMDNlaXRlcik7XG4rXHRcdHJldCA9IF9faW1wb3J0X2lvdmVjKElURVJfU09VUkNFLCBkYXRhLVx1MDAzZWFyZ3MuaW92LCBkYXRhLVx1MDAzZWFyZ3MuaW92Y250LFxuK1x0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGRhdGEtXHUwMDNlaW92c3RhY2spLCBcdTAwMjZkYXRhLVx1MDAzZWlvdixcbitcdFx0XHRcdCAgICAgXHUwMDI2ZGF0YS1cdTAwM2VpdGVyLFxuK1x0XHRcdFx0ICAgICAhIShpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9DT01QQVQpKTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIG91dF9hY2N0O1xuIFxuQEAgLTQ5MjYsMTEgKzQ5MjcsNiBAQCBzdGF0aWMgaW50IGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGUoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spIHtcbi1cdFx0cmV0ID0gLUVBR0FJTjtcbi1cdFx0Z290byBvdXRfYWNjdDtcbi1cdH1cbi1cbiBcdHBvcyA9IGRhdGEtXHUwMDNlYXJncy5vZmZzZXQ7XG4gXHRyZXQgPSByd192ZXJpZnlfYXJlYShXUklURSwgZmlsZSwgXHUwMDI2cG9zLCBkYXRhLVx1MDAzZWFyZ3MubGVuKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG5AQCAtNDk1Niw4ICs0OTUyLDcgQEAgc3RhdGljIGludCBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VcbiBcdFx0YWRkX3djaGFyKGN1cnJlbnQsIHJldCk7XG4gXHRpbmNfc3lzY3coY3VycmVudCk7XG4gXG4tXHRpZiAocmV0ICE9IC1FQUdBSU4pXG4tXHRcdGtmcmVlKGRhdGEpO1xuK1x0a2ZyZWUoZGF0YSk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9saWIvaW92X2l0ZXIuYyBiL2xpYi9pb3ZfaXRlci5jXG5pbmRleCBjMjQ4NDU1MWE0ZTg2Li45YzIxNThkNWNjZGQzIDEwMDY0NFxuLS0tIGEvbGliL2lvdl9pdGVyLmNcbisrKyBiL2xpYi9pb3ZfaXRlci5jXG5AQCAtMTQxMCw2ICsxNDEwLDcgQEAgc3NpemVfdCBfX2ltcG9ydF9pb3ZlYyhpbnQgdHlwZSwgY29uc3Qgc3RydWN0IGlvdmVjIF9fdXNlciAqdXZlYyxcbiBcdFx0KmlvdnAgPSBpb3Y7XG4gXHRyZXR1cm4gdG90YWxfbGVuO1xuIH1cbitFWFBPUlRfU1lNQk9MX0dQTChfX2ltcG9ydF9pb3ZlYyk7XG4gXG4gLyoqXG4gICogaW1wb3J0X2lvdmVjKCkgLSBDb3B5IGFuIGFycmF5IG9mIFx1MDAyNnN0cnVjdCBpb3ZlYyBmcm9tIHVzZXJzcGFjZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDk6NDY6MDYuOTM2MDMwNjE2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0OTMwODM0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXMgYW5kIEZ1enppbmcgU3RyYXRlZ3kgZm9yIEJ0cmZzIGlvX3VyaW5nIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCBzZWVtcyB0byBiZSB0d2Vha2luZyBCdHJmcycgaW9fdXJpbmcgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBlbmNvZGVkIHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4gVGhlIGZpbGVzIGludm9sdmVkIOKAkyBgZnMvYnRyZnMvaW5vZGUuY2AsIGBmcy9idHJmcy9pb2N0bC5jYCwgYW5kIGBsaWIvaW92X2l0ZXIuY2Ag4oCTIGltbWVkaWF0ZWx5IHRlbGwgbWUgaXQncyB0b3VjaGluZyBjb3JlIGlvIHBhdGhzLCBzbyB0aGlzIGRlc2VydmVzIGEgY2xvc2VyIGxvb2suXG5cbkxldCdzIGJyZWFrIGRvd24gdGhlIGNvZGUgY2hhbmdlcy4gSSdtIHNlZWluZyBmaXhlcyBmb3IgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBpbiBgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRgLCBwYXJ0aWN1bGFybHkgYXJvdW5kIHBhZ2UgYWxsb2NhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmcsIHdoaWNoIGlzIGdvb2QuICBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgaGFzIGEgbWlub3IgY2hhbmdlIHRoYXQgbWlnaHQgaGFuZGxlIGVycm9yIGNvZGVzIGJldHRlci4gVGhlIGNoYW5nZXMgaW4gYGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZGAgYW5kIGBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlYCBhcmUgbG9va2luZyB0byB0aWdodGVuIHVwIGxvY2tpbmcgYW5kIGlvX3VyaW5nIHJldHJ5IGxvZ2ljIGFuZCBjb21wYXQgZmxhZ3MuIE5vdGFibHksIHRoZXJlIGFyZSBjaGFuZ2VzIHRvIGhvdyB0aGUgaW8gdmVjdG9yIGlzIGltcG9ydGVkIHdpdGggYF9faW1wb3J0X2lvdmVjYCwgYW5kIGFkZGl0aW9uYWwgbG9naWMgYWRkZWQgdG8gdGhlIGZsb3cuXG5cbk92ZXJhbGwsIGl0IGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIG1lbW9yeSBsZWFrcywgYW5kIGltcHJvdmluZyB0aGUgc3RhYmlsaXR5IG9mIGlvX3VyaW5nIG9wZXJhdGlvbnMgaW4gQnRyZnMuIFRoaXMga2luZCBvZiBwYXRjaCBzY3JlYW1zIGZvciBmdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgY29uY2VudHJhdGVkLCB3aGljaCBnaXZlcyB1cyBhIG1hbmFnZWFibGUgc2NvcGUgZm9yIGEgZnV6emluZyBjYW1wYWlnbi5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy4gIEknbSBmb2N1c2luZyBvbiB0aGVzZSBzeW1ib2xzOiBgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkYCwgYGJ0cmZzX3VyaW5nX2VuY29kZWRfd3JpdGVgLCBgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRgLCBhbmQgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBpb191cmluZyBvcGVyYXRpb25zIGFuZCBhcmUgdGhlcmVmb3JlIGxpa2VseSB0YXJnZXRzLiBcblxuUXVpY2sgY2hlY2sgb24gdGhlIHN5bWJvbHMgdG8gZGV0ZXJtaW5lIGFjY2Vzc2liaWxpdHkuIFRoZSBmdW5jdGlvbnMgYXJlIHN0YXRpYyBpbiBgZnMvYnRyZnMvaW9jdGwuY2AsIHdoaWNoIG1ha2VzIHRoZW0gcmVsYXRlZCB0byBpb2N0bHMuIFRoZXJlZm9yZSB0aGV5IGFyZSBhY2Nlc3NpYmxlIHRvIHVzLlxuXG5Pa2F5LCBsZXQncyBnZXQgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkzNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NjoyMS40MjkxMTY5NDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAyODU4MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J0cmZzL2lvY3RsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnRyZnMvaW9jdGwuYz00NjEzPXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTQ2ODgtXFxuZnMvYnRyZnMvaW9jdGwuYzo0Njg5OnN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxcbmZzL2J0cmZzL2lvY3RsLmMtNDY5MC17XFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jPTQ5NTk9aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNDk2OC0jZW5kaWZcXG5mcy9idHJmcy9pb2N0bC5jOjQ5Njk6XFx0XFx0cmV0dXJuIGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZChjbWQsIGlzc3VlX2ZsYWdzKTtcXG5mcy9idHJmcy9pb2N0bC5jLTQ5NzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjIxLjUwOTQwOTg0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2ODcwNzk2MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgQnRyZnMgVXJpbmcgUmVhZCBQcm9jZXNzKipcblxuUmlnaHQsIHNvIGBidHJmc191cmluZ19lbmNvZGVkX3JlYWRgIGlzIGEgYHN0YXRpY2AgZnVuY3Rpb24uIEludGVyZXN0aW5nLiBNZWFucyBpdCdzIGxpa2VseSBvbmx5IHVzZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBjb21waWxhdGlvbiB1bml0LiBPa2F5LCB0aGUgZXh0ZXJuYWwgZW50cnkgcG9pbnQsIHRoZW4sIGhhcyB0byBiZSBgYnRyZnNfdXJpbmdfY21kYC4gTWFrZXMgc2Vuc2UuIE5vdywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyIOKAkyBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBidHJmc191cmluZ19jbWRgLiBUaGF0J3Mgd2hlcmUgdGhlIG9yY2hlc3RyYXRpb24gYmVnaW5zLCBhbmQgdW5kZXJzdGFuZGluZyBpdCB3aWxsIGlsbHVtaW5hdGUgaG93IHRoaXMgcmVhZCBwYXRoIGlzIGFjdHVhbGx5IGludm9rZWQgYW5kIGhhbmRsZWQuIEl04oCZcyB0aGUgY29uZHVjdG9yLCB0aGUgc3RhcnRpbmcgZ3VuLiBGcm9tIHRoZXJlLCBJIGNhbiB0cmFjZSB0aGUgY29udHJvbCBmbG93IGFuZCBmaWd1cmUgb3V0IGhvdyBgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzEwMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjI3LjE5NjQ5MTk3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAzNTQ3NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRyZnNfdXJpbmdfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J0cmZzL2lvY3RsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnRyZnMvaW9jdGwuYz00ODM4PXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNDk1OC1cXG5mcy9idHJmcy9pb2N0bC5jOjQ5NTk6aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG5mcy9idHJmcy9pb2N0bC5jLTQ5NjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NjoyNy4zMDY4NTk3NjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzA2ODI3OTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYnRyZnNfdXJpbmdfY21kIEVudHJ5IFBvaW50KipcblxuUmlnaHQsIHNvIGBidHJmc191cmluZ19jbWRgLCB0aGF0J3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBHaXZlbiB0aGUgY29udGV4dCBvZiBleHBsb3JpbmcgdGhlIGJ0cmZzIGltcGxlbWVudGF0aW9uIHdpdGggaW9fdXJpbmcsIGl0J3MgdGhlIG9idmlvdXMgcGxhY2UgdG8gYmVnaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgdXNlci1zcGFjZSByZXF1ZXN0cyBmdW5uZWwgaW50byB0aGUga2VybmVsLCBhbmQgdGhpcyBpcyB3aGVyZSBpdCBhbGwga2lja3Mgb2ZmLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBjb250cm9sIGZsb3cgZm9yIHRoZSBjb21tb24gb3BlcmF0aW9ucy5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duIGludG8gYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgLiBUaGlzIHN1Z2dlc3RzIGEgZm9jdXMgb24gdGhlIG1lY2hhbmljcyBvZiByZWFkaW5nIGRhdGEsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgZW5jb2RlZCBvciBjb21wcmVzc2VkIGJsb2NrcywgYXMgd2VsbCBhcyB0aGUgcHJvY2VzcyBvZiBtYXBwaW5nIHRoZXNlIHRvIHVzZXIgcGFnZXMuIEkgYW50aWNpcGF0ZSBzb21lIGludGVyZXN0aW5nIG9wdGltaXphdGlvbnMgb3IgcG90ZW50aWFsbHkgc3VidGxlIGlzc3VlcyByZWxhdGVkIHRvIHBhZ2UgcGlubmluZywgZGlyZWN0IEkvTywgYW5kIHRoZSBnZW5lcmFsIGhhbmRsaW5nIG9mIGFzeW5jaHJvbm91cyByZWFkcy4gSSBleHBlY3QgdG8gZmluZCBkZXRhaWxzIGNvbmNlcm5pbmcgZW5jcnlwdGlvbiwgY2hlY2tzdW0gdmFsaWRhdGlvbiwgYW5kIHRoZSBoYW5kbGluZyBvZiB2YXJpb3VzIGV4dGVudHMgYW5kIGJsb2NrIGdyb3VwcywgYWxsIGluIHRoZSBjb250ZXh0IG9mIGBpb191cmluZ2AncyBhc3luYyBjYXBhYmlsaXRpZXMuIExldCdzIHNlZSBob3cgdGhleSd2ZSBoYW5kbGVkIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gb3IgZGF0YSByZWNvdmVyeSBwcm9jZXNzZXMuIExldCdzIGZpbmQgb3V0IGhvdyB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIHJldHJ5IGxvZ2ljIHBsYXkgb3V0LiBJJ20gZ29pbmcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0ODUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NjozMS4wMTM2ODk1MzlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQyODM5NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9idHJmcy9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2J0cmZzL2lub2RlLmM9OTM3OT1zdGF0aWMgdm9pZCBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8oc3RydWN0IGJ0cmZzX2JpbyAqYmJpbylcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTM4Ni1cXHRcXHQgKiBwYWlycyB3aXRoIHRoZSBtZW1vcnkgYmFycmllciBpbXBsaWVkIGJ5IHRoZSByZWZjb3VudF9kZWNfYW5kX3Rlc3QoKVxcbmZzL2J0cmZzL2lub2RlLmM6OTM4NzpcXHRcXHQgKiBpbiBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKCkgdG8gZW5zdXJlIHRoYXRcXG5mcy9idHJmcy9pbm9kZS5jLTkzODgtXFx0XFx0ICogdGhpcyB3cml0ZSBpcyBvYnNlcnZlZCBiZWZvcmUgdGhlIGxvYWQgb2Ygc3RhdHVzIGluXFxuZnMvYnRyZnMvaW5vZGUuYzo5Mzg5OlxcdFxcdCAqIGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoKS5cXG5mcy9idHJmcy9pbm9kZS5jLTkzOTAtXFx0XFx0ICovXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0MDUtXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDA2OmludCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsXFxuZnMvYnRyZnMvaW5vZGUuYy05NDA3LVxcdFxcdFxcdFxcdFxcdCAgdTY0IGRpc2tfYnl0ZW5yLCB1NjQgZGlza19pb19zaXplLFxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYz05NDc1PXNzaXplX3QgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0OTgtXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDk5OlxcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoaW5vZGUsIGRpc2tfYnl0ZW5yLFxcbmZzL2J0cmZzL2lub2RlLmMtOTUwMC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgZGlza19pb19zaXplLCBwYWdlcywgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjMxLjA5Nzk4MDQ3NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5OTQwOTk3OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW5uZXIgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgKipcblxuSG1tLCBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgaXNuJ3Qgc3RhdGljLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgd2hlcmUgZG9lcyB0aGF0IGxlYWQgbWU/IEl0IG1lYW5zIHRoZSBmdW5jdGlvbidzIGJlaGF2aW9yIGNhbiBjaGFuZ2UsIHdoaWNoIGlzIHNpZ25pZmljYW50IHdoZW4gZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IGNvbXBsZXggZGF0YSByZWFkcyBpbiBCdHJmcy4gQWxyaWdodCwgaWYgaXQncyBub3Qgc3RhdGljLCB0aGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiBMZXQncyBkZWx2ZSBpbnRvIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcmAgYW5kIGZpZ3VyZSBvdXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5vbi1zdGF0aWMgY2hhcmFjdGVyaXN0aWMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgb2YgdGhlIGlzc3VlIGxpa2VseSByZXNpZGVzLCBhcyB0aGUgbmF0dXJlIG9mIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzYCBpbXBhY3RzIHRoZSByZWFkIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNjYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NjozNS4wOTIwODMyMzdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwODgxMDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J0cmZzL2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnRyZnMvaW5vZGUuYz05Mzc5PXN0YXRpYyB2b2lkIGJ0cmZzX2VuY29kZWRfcmVhZF9lbmRpbyhzdHJ1Y3QgYnRyZnNfYmlvICpiYmlvKVxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05Mzg2LVxcdFxcdCAqIHBhaXJzIHdpdGggdGhlIG1lbW9yeSBiYXJyaWVyIGltcGxpZWQgYnkgdGhlIHJlZmNvdW50X2RlY19hbmRfdGVzdCgpXFxuZnMvYnRyZnMvaW5vZGUuYzo5Mzg3OlxcdFxcdCAqIGluIGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoKSB0byBlbnN1cmUgdGhhdFxcbmZzL2J0cmZzL2lub2RlLmMtOTM4OC1cXHRcXHQgKiB0aGlzIHdyaXRlIGlzIG9ic2VydmVkIGJlZm9yZSB0aGUgbG9hZCBvZiBzdGF0dXMgaW5cXG5mcy9idHJmcy9pbm9kZS5jOjkzODk6XFx0XFx0ICogYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcygpLlxcbmZzL2J0cmZzL2lub2RlLmMtOTM5MC1cXHRcXHQgKi9cXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQwNS1cXG5mcy9idHJmcy9pbm9kZS5jOjk0MDY6aW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSxcXG5mcy9idHJmcy9pbm9kZS5jLTk0MDctXFx0XFx0XFx0XFx0XFx0ICB1NjQgZGlza19ieXRlbnIsIHU2NCBkaXNrX2lvX3NpemUsXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0NzQtXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDc1OnNzaXplX3QgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuZnMvYnRyZnMvaW5vZGUuYy05NDc2LVxcdFxcdFxcdFxcdCAgIHU2NCBzdGFydCwgdTY0IGxvY2tlbmQsXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0OTgtXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDk5OlxcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoaW5vZGUsIGRpc2tfYnl0ZW5yLFxcbmZzL2J0cmZzL2lub2RlLmMtOTUwMC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgZGlza19pb19zaXplLCBwYWdlcywgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjM1LjE2Mjk3MDYwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzkxODQyNzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gYnRyZnMgUmVhZCBPcGVyYXRpb25zKipcblxuT2theSwgc28gYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyYCBpc24ndCBzdGF0aWMgZWl0aGVyLiBJbnRlcmVzdGluZy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gYnJvYWRlbiBteSBzY29wZSBhIGJpdC4gVGltZSB0byBtb3ZlIHVwIHRoZSBjYWxsIHN0YWNrLiBMZXQncyBkaWcgaW50byBgYnRyZnNfZW5jb2RlZF9yZWFkYCBhbmQgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgaWYgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyYCBpc24ndCBzdGF0aWMsIHdoYXQgbWFrZXMgdGhlIHBhcmVudCBmdW5jdGlvbiBkaWZmZXJlbnQ/IEl0IG1heSByZXZlYWwgbW9yZSBhYm91dCBob3cgdGhpcyByZWFkIHByb2Nlc3MgaXMgYmVpbmcgaGFuZGxlZCBhbmQgd2hlcmUgdGhlIHZhcmlhYmlsaXR5IGxpZXMuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDEwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDk6NDY6MzguNTU0ODE2MTU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTA5MzM1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidHJmc19lbmNvZGVkX3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYnRyZnMvaW5vZGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9idHJmcy9pbm9kZS5jPTkyNjI9aW50IGJ0cmZzX2VuY29kZWRfaW9fY29tcHJlc3Npb25fZnJvbV9leHRlbnQoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTkyODUtXFxuZnMvYnRyZnMvaW5vZGUuYzo5Mjg2OnN0YXRpYyBzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZF9pbmxpbmUoXFxuZnMvYnRyZnMvaW5vZGUuYy05Mjg3LVxcdFxcdFxcdFxcdHN0cnVjdCBraW9jYiAqaW9jYixcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTM3MS1cXG5mcy9idHJmcy9pbm9kZS5jOjkzNzI6c3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlIHtcXG5mcy9idHJmcy9pbm9kZS5jLTkzNzMtXFx0c3RydWN0IGNvbXBsZXRpb24gKnN5bmNfcmVhZHM7XFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTkzNzgtXFxuZnMvYnRyZnMvaW5vZGUuYzo5Mzc5OnN0YXRpYyB2b2lkIGJ0cmZzX2VuY29kZWRfcmVhZF9lbmRpbyhzdHJ1Y3QgYnRyZnNfYmlvICpiYmlvKVxcbmZzL2J0cmZzL2lub2RlLmMtOTM4MC17XFxuZnMvYnRyZnMvaW5vZGUuYzo5MzgxOlxcdHN0cnVjdCBidHJmc19lbmNvZGVkX3JlYWRfcHJpdmF0ZSAqcHJpdiA9IGJiaW8tXFx1MDAzZXByaXZhdGU7XFxuZnMvYnRyZnMvaW5vZGUuYy05MzgyLVxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05Mzg2LVxcdFxcdCAqIHBhaXJzIHdpdGggdGhlIG1lbW9yeSBiYXJyaWVyIGltcGxpZWQgYnkgdGhlIHJlZmNvdW50X2RlY19hbmRfdGVzdCgpXFxuZnMvYnRyZnMvaW5vZGUuYzo5Mzg3OlxcdFxcdCAqIGluIGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoKSB0byBlbnN1cmUgdGhhdFxcbmZzL2J0cmZzL2lub2RlLmMtOTM4OC1cXHRcXHQgKiB0aGlzIHdyaXRlIGlzIG9ic2VydmVkIGJlZm9yZSB0aGUgbG9hZCBvZiBzdGF0dXMgaW5cXG5mcy9idHJmcy9pbm9kZS5jOjkzODk6XFx0XFx0ICogYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcygpLlxcbmZzL2J0cmZzL2lub2RlLmMtOTM5MC1cXHRcXHQgKi9cXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQwNS1cXG5mcy9idHJmcy9pbm9kZS5jOjk0MDY6aW50IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSxcXG5mcy9idHJmcy9pbm9kZS5jLTk0MDctXFx0XFx0XFx0XFx0XFx0ICB1NjQgZGlza19ieXRlbnIsIHU2NCBkaXNrX2lvX3NpemUsXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0MDkte1xcbmZzL2J0cmZzL2lub2RlLmM6OTQxMDpcXHRzdHJ1Y3QgYnRyZnNfZW5jb2RlZF9yZWFkX3ByaXZhdGUgKnByaXYsIHN5bmNfcHJpdjtcXG5mcy9idHJmcy9pbm9kZS5jLTk0MTEtXFx0c3RydWN0IGNvbXBsZXRpb24gc3luY19yZWFkcztcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQxOS1cXHRpZiAodXJpbmdfY3R4KSB7XFxuZnMvYnRyZnMvaW5vZGUuYzo5NDIwOlxcdFxcdHByaXYgPSBrbWFsbG9jX29iaihzdHJ1Y3QgYnRyZnNfZW5jb2RlZF9yZWFkX3ByaXZhdGUsIEdGUF9OT0ZTKTtcXG5mcy9idHJmcy9pbm9kZS5jLTk0MjEtXFx0XFx0aWYgKCFwcml2KVxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05NDMzLVxcdGJiaW8gPSBidHJmc19iaW9fYWxsb2MoQklPX01BWF9WRUNTLCBSRVFfT1BfUkVBRCwgaW5vZGUsIDAsXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDM0OlxcdFxcdFxcdCAgICAgICBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8sIHByaXYpO1xcbmZzL2J0cmZzL2lub2RlLmMtOTQzNS1cXHRiYmlvLVxcdTAwM2ViaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBkaXNrX2J5dGVuciBcXHUwMDNlXFx1MDAzZSBTRUNUT1JfU0hJRlQ7XFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0NDQtXFx0XFx0XFx0YmJpbyA9IGJ0cmZzX2Jpb19hbGxvYyhCSU9fTUFYX1ZFQ1MsIFJFUV9PUF9SRUFELCBpbm9kZSwgMCxcXG5mcy9idHJmcy9pbm9kZS5jOjk0NDU6XFx0XFx0XFx0XFx0XFx0ICAgICAgIGJ0cmZzX2VuY29kZWRfcmVhZF9lbmRpbywgcHJpdik7XFxuZnMvYnRyZnMvaW5vZGUuYy05NDQ2LVxcdFxcdFxcdGJiaW8tXFx1MDAzZWJpby5iaV9pdGVyLmJpX3NlY3RvciA9IGRpc2tfYnl0ZW5yIFxcdTAwM2VcXHUwMDNlIFNFQ1RPUl9TSElGVDtcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQ2OS1cXHRcXHRcXHR3YWl0X2Zvcl9jb21wbGV0aW9uX2lvKFxcdTAwMjZzeW5jX3JlYWRzKTtcXG5mcy9idHJmcy9pbm9kZS5jOjk0NzA6XFx0XFx0LyogU2VlIGJ0cmZzX2VuY29kZWRfcmVhZF9lbmRpbygpIGZvciBvcmRlcmluZy4gKi9cXG5mcy9idHJmcy9pbm9kZS5jLTk0NzEtXFx0XFx0cmV0dXJuIGJsa19zdGF0dXNfdG9fZXJybm8oUkVBRF9PTkNFKHByaXYtXFx1MDAzZXN0YXR1cykpO1xcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05NDc0LVxcbmZzL2J0cmZzL2lub2RlLmM6OTQ3NTpzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxcbmZzL2J0cmZzL2lub2RlLmMtOTQ3Ni1cXHRcXHRcXHRcXHQgICB1NjQgc3RhcnQsIHU2NCBsb2NrZW5kLFxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05NDk4LVxcbmZzL2J0cmZzL2lub2RlLmM6OTQ5OTpcXHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKGlub2RlLCBkaXNrX2J5dGVucixcXG5mcy9idHJmcy9pbm9kZS5jLTk1MDAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRpc2tfaW9fc2l6ZSwgcGFnZXMsIE5VTEwpO1xcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05NTM4LVxcbmZzL2J0cmZzL2lub2RlLmM6OTUzOTpzc2l6ZV90IGJ0cmZzX2VuY29kZWRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG5mcy9idHJmcy9pbm9kZS5jLTk1NDAtXFx0XFx0XFx0ICAgc3RydWN0IGJ0cmZzX2lvY3RsX2VuY29kZWRfaW9fYXJncyAqZW5jb2RlZCxcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTYyOC1cXHRcXHRlbSA9IE5VTEw7XFxuZnMvYnRyZnMvaW5vZGUuYzo5NjI5OlxcdFxcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZF9pbmxpbmUoaW9jYiwgaXRlciwgc3RhcnQsIGxvY2tlbmQsXFxuZnMvYnRyZnMvaW5vZGUuYy05NjMwLVxcdFxcdFxcdFxcdFxcdFxcdGNhY2hlZF9zdGF0ZSwgZXh0ZW50X3N0YXJ0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NjozOC42MjM5MTQ3MjJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3MTQzMTg1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipEaXZpbmcgaW50byB0aGUgQnRyZnMgSU9fVXJpbmcgSW1wbGVtZW50YXRpb24qKlxuXG5SaWdodCwgc28gSSBuZWVkIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGlvX3VyaW5nIGludGVncmF0aW9uIHdvcmtzIHdpdGhpbiBCdHJmcy4gTG9va2luZyBhdCB0aGUgY29kZSwgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgIGZlZWxzIGxpa2UgYSBzb2xpZCBmdW5jdGlvbiB0byBrZXkgaW4gb24uIEl0J3MgYSBrZXkgcGFydCBvZiB0aGUgcmVndWxhciByZWFkIHBhdGgsIHNvIGl0IHNob3VsZCBnaXZlIG1lIHNvbWUgaW5zaWdodC5cblxuTm93LCBsZXQncyBjb25zaWRlciBhbm90aGVyIGFuZ2xlLiBIb3cgZG9lcyBgYnRyZnNfdXJpbmdfY21kYCBmaXQgaW50byB0aGlzPyBBaCwgeWVzLCBpdCdzIHRoZSBzcGVjaWZpYyBoYW5kbGVyIGZvciBpb191cmluZyBjb21tYW5kcyB3aXRoaW4gdGhlIEJ0cmZzIGZpbGVzeXN0ZW0uIFRoYXQncyBleGFjdGx5IHdoYXQgSSdtIGxvb2tpbmcgZm9yISBOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gdG8gYXNrIGlzOiB3aGVyZSBpcyBgYnRyZnNfdXJpbmdfY21kYCAqdXNlZCo/IFNwZWNpZmljYWxseSwgaXMgaXQgcGFydCBvZiB0aGUgZXhwb3NlZCBgZmlsZV9vcGVyYXRpb25zYCBzdHJ1Y3R1cmU/IFRoYXQgd291bGQgbWVhbiBpdCdzIGRpcmVjdGx5IHdpcmVkIGludG8gdGhlIGZpbGVzeXN0ZW0ncyBzdGFuZGFyZCBpbnRlcmZhY2VzLiBUaGF0IHNlZW1zIGxpa2UgdGhlIHJpZ2h0IHBhdGggdG8gdW5kZXJzdGFuZCBob3cgaW9fdXJpbmcgaXMgaW50ZWdyYXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0Njo0Mi4yOTUzNDkyNzhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjYwODcyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidHJmc191cmluZ19jbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYnRyZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2J0cmZzL2ZpbGUuYz0zODQzPWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgYnRyZnNfZmlsZV9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvYnRyZnMvZmlsZS5jLTM4NTktXFx0LnJlbWFwX2ZpbGVfcmFuZ2UgPSBidHJmc19yZW1hcF9maWxlX3JhbmdlLFxcbmZzL2J0cmZzL2ZpbGUuYzozODYwOlxcdC51cmluZ19jbWRcXHQ9IGJ0cmZzX3VyaW5nX2NtZCxcXG5mcy9idHJmcy9maWxlLmMtMzg2MS1cXHQuZm9wX2ZsYWdzXFx0PSBGT1BfQlVGRkVSX1JBU1lOQyB8IEZPUF9CVUZGRVJfV0FTWU5DLFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYz00ODM4PXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNDk1OC1cXG5mcy9idHJmcy9pb2N0bC5jOjQ5NTk6aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG5mcy9idHJmcy9pb2N0bC5jLTQ5NjAte1xcbi0tXFxuZnMvYnRyZnMvaW9jdGwuaD0yND12b2lkIGJ0cmZzX3VwZGF0ZV9pb2N0bF9iYWxhbmNlX2FyZ3Moc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sXFxuZnMvYnRyZnMvaW9jdGwuaC0yNS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBidHJmc19pb2N0bF9iYWxhbmNlX2FyZ3MgKmJhcmdzKTtcXG5mcy9idHJmcy9pb2N0bC5oOjI2OmludCBidHJmc191cmluZ19jbWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xcbmZzL2J0cmZzL2lvY3RsLmgtMjctdm9pZCBidHJmc191cmluZ19yZWFkX2V4dGVudF9lbmRpbyh2b2lkICpjdHgsIGludCBlcnIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0Njo0Mi4zOTc5NjMwODFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0ODEyMjI5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBidHJmcyBhbmQgaW9fdXJpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gaG9uaW5nIGluIG9uIHRoZSBgYnRyZnNfdXJpbmdfY21kYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBjZW50cmFsIGhhbmRsZXIgZm9yIGB1cmluZ19jbWRgIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBidHJmcyBmaWxlc3lzdGVtLCBzbyBpdCdzIGEgZ29vZCBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24uIE5vdywgYSByZWxhdGVkIGZ1bmN0aW9uIGtlZXBzIHBvcHBpbmcgaW50byBteSBoZWFkOiBgYnRyZnNfZW5jb2RlZF9yZWFkYC4gSXMgaXQgYWxzbyBleHBvcnRlZD8gTm8sIHRoYXQncyBub3QgdGhlIGNhc2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnl0aGluZyB0aGF0IGlzIHJlbGF0ZWQuIExldCdzIHRyYWNlIHRocm91Z2ggdGhlIGZpbGUgbG9jYXRpb25zOyBpdCBsb29rcyBsaWtlIGl0IHJlc2lkZXMgd2l0aGluIGBmcy9idHJmcy9pbm9kZS5jYCwgYW5kIGlzIGFsc28gdXNlZCBpbiBgZnMvYnRyZnMvaW9jdGwuY2AuIEFscmlnaHQsIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgYGJ0cmZzX2VuY29kZWRfcmVhZGAgYWN0dWFsbHkgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0MTQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDk6NDY6NDYuMDQ2MDg4NDc4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mzk0MDU2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidHJmc19lbmNvZGVkX3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYnRyZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2J0cmZzL2J0cmZzX2lub2RlLmg9NjAzPWludCBidHJmc19lbmNvZGVkX2lvX2NvbXByZXNzaW9uX2Zyb21fZXh0ZW50KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLFxcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmgtNjA0LVxcdFxcdFxcdFxcdFxcdCAgICAgaW50IGNvbXByZXNzX3R5cGUpO1xcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmg6NjA1OmludCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsXFxuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaC02MDYtXFx0XFx0XFx0XFx0XFx0ICB1NjQgZGlza19ieXRlbnIsIHU2NCBkaXNrX2lvX3NpemUsXFxuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaC02MDctXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCB2b2lkICp1cmluZ19jdHgpO1xcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmg6NjA4OnNzaXplX3QgYnRyZnNfZW5jb2RlZF9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxcbmZzL2J0cmZzL2J0cmZzX2lub2RlLmgtNjA5LVxcdFxcdFxcdCAgIHN0cnVjdCBidHJmc19pb2N0bF9lbmNvZGVkX2lvX2FyZ3MgKmVuY29kZWQsXFxuLS1cXG5mcy9idHJmcy9idHJmc19pbm9kZS5oLTYxMS1cXHRcXHRcXHQgICB1NjQgKmRpc2tfYnl0ZW5yLCB1NjQgKmRpc2tfaW9fc2l6ZSk7XFxuZnMvYnRyZnMvYnRyZnNfaW5vZGUuaDo2MTI6c3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG5mcy9idHJmcy9idHJmc19pbm9kZS5oLTYxMy1cXHRcXHRcXHRcXHQgICB1NjQgc3RhcnQsIHU2NCBsb2NrZW5kLFxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYz05MjYyPWludCBidHJmc19lbmNvZGVkX2lvX2NvbXByZXNzaW9uX2Zyb21fZXh0ZW50KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLFxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05Mjg1LVxcbmZzL2J0cmZzL2lub2RlLmM6OTI4NjpzdGF0aWMgc3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfaW5saW5lKFxcbmZzL2J0cmZzL2lub2RlLmMtOTI4Ny1cXHRcXHRcXHRcXHRzdHJ1Y3Qga2lvY2IgKmlvY2IsXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTkzNzEtXFxuZnMvYnRyZnMvaW5vZGUuYzo5MzcyOnN0cnVjdCBidHJmc19lbmNvZGVkX3JlYWRfcHJpdmF0ZSB7XFxuZnMvYnRyZnMvaW5vZGUuYy05MzczLVxcdHN0cnVjdCBjb21wbGV0aW9uICpzeW5jX3JlYWRzO1xcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05Mzc4LVxcbmZzL2J0cmZzL2lub2RlLmM6OTM3OTpzdGF0aWMgdm9pZCBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8oc3RydWN0IGJ0cmZzX2JpbyAqYmJpbylcXG5mcy9idHJmcy9pbm9kZS5jLTkzODAte1xcbmZzL2J0cmZzL2lub2RlLmM6OTM4MTpcXHRzdHJ1Y3QgYnRyZnNfZW5jb2RlZF9yZWFkX3ByaXZhdGUgKnByaXYgPSBiYmlvLVxcdTAwM2Vwcml2YXRlO1xcbmZzL2J0cmZzL2lub2RlLmMtOTM4Mi1cXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTM4Ni1cXHRcXHQgKiBwYWlycyB3aXRoIHRoZSBtZW1vcnkgYmFycmllciBpbXBsaWVkIGJ5IHRoZSByZWZjb3VudF9kZWNfYW5kX3Rlc3QoKVxcbmZzL2J0cmZzL2lub2RlLmM6OTM4NzpcXHRcXHQgKiBpbiBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKCkgdG8gZW5zdXJlIHRoYXRcXG5mcy9idHJmcy9pbm9kZS5jLTkzODgtXFx0XFx0ICogdGhpcyB3cml0ZSBpcyBvYnNlcnZlZCBiZWZvcmUgdGhlIGxvYWQgb2Ygc3RhdHVzIGluXFxuZnMvYnRyZnMvaW5vZGUuYzo5Mzg5OlxcdFxcdCAqIGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXMoKS5cXG5mcy9idHJmcy9pbm9kZS5jLTkzOTAtXFx0XFx0ICovXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0MDUtXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDA2OmludCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsXFxuZnMvYnRyZnMvaW5vZGUuYy05NDA3LVxcdFxcdFxcdFxcdFxcdCAgdTY0IGRpc2tfYnl0ZW5yLCB1NjQgZGlza19pb19zaXplLFxcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05NDA5LXtcXG5mcy9idHJmcy9pbm9kZS5jOjk0MTA6XFx0c3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlICpwcml2LCBzeW5jX3ByaXY7XFxuZnMvYnRyZnMvaW5vZGUuYy05NDExLVxcdHN0cnVjdCBjb21wbGV0aW9uIHN5bmNfcmVhZHM7XFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0MTktXFx0aWYgKHVyaW5nX2N0eCkge1xcbmZzL2J0cmZzL2lub2RlLmM6OTQyMDpcXHRcXHRwcml2ID0ga21hbGxvY19vYmooc3RydWN0IGJ0cmZzX2VuY29kZWRfcmVhZF9wcml2YXRlLCBHRlBfTk9GUyk7XFxuZnMvYnRyZnMvaW5vZGUuYy05NDIxLVxcdFxcdGlmICghcHJpdilcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQzMy1cXHRiYmlvID0gYnRyZnNfYmlvX2FsbG9jKEJJT19NQVhfVkVDUywgUkVRX09QX1JFQUQsIGlub2RlLCAwLFxcbmZzL2J0cmZzL2lub2RlLmM6OTQzNDpcXHRcXHRcXHQgICAgICAgYnRyZnNfZW5jb2RlZF9yZWFkX2VuZGlvLCBwcml2KTtcXG5mcy9idHJmcy9pbm9kZS5jLTk0MzUtXFx0YmJpby1cXHUwMDNlYmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gZGlza19ieXRlbnIgXFx1MDAzZVxcdTAwM2UgU0VDVE9SX1NISUZUO1xcbi0tXFxuZnMvYnRyZnMvaW5vZGUuYy05NDQ0LVxcdFxcdFxcdGJiaW8gPSBidHJmc19iaW9fYWxsb2MoQklPX01BWF9WRUNTLCBSRVFfT1BfUkVBRCwgaW5vZGUsIDAsXFxuZnMvYnRyZnMvaW5vZGUuYzo5NDQ1OlxcdFxcdFxcdFxcdFxcdCAgICAgICBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8sIHByaXYpO1xcbmZzL2J0cmZzL2lub2RlLmMtOTQ0Ni1cXHRcXHRcXHRiYmlvLVxcdTAwM2ViaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBkaXNrX2J5dGVuciBcXHUwMDNlXFx1MDAzZSBTRUNUT1JfU0hJRlQ7XFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk0NjktXFx0XFx0XFx0d2FpdF9mb3JfY29tcGxldGlvbl9pbyhcXHUwMDI2c3luY19yZWFkcyk7XFxuZnMvYnRyZnMvaW5vZGUuYzo5NDcwOlxcdFxcdC8qIFNlZSBidHJmc19lbmNvZGVkX3JlYWRfZW5kaW8oKSBmb3Igb3JkZXJpbmcuICovXFxuZnMvYnRyZnMvaW5vZGUuYy05NDcxLVxcdFxcdHJldHVybiBibGtfc3RhdHVzX3RvX2Vycm5vKFJFQURfT05DRShwcml2LVxcdTAwM2VzdGF0dXMpKTtcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQ3NC1cXG5mcy9idHJmcy9pbm9kZS5jOjk0NzU6c3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG5mcy9idHJmcy9pbm9kZS5jLTk0NzYtXFx0XFx0XFx0XFx0ICAgdTY0IHN0YXJ0LCB1NjQgbG9ja2VuZCxcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTQ5OC1cXG5mcy9idHJmcy9pbm9kZS5jOjk0OTk6XFx0cmV0ID0gYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlcyhpbm9kZSwgZGlza19ieXRlbnIsXFxuZnMvYnRyZnMvaW5vZGUuYy05NTAwLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBkaXNrX2lvX3NpemUsIHBhZ2VzLCBOVUxMKTtcXG4tLVxcbmZzL2J0cmZzL2lub2RlLmMtOTUzOC1cXG5mcy9idHJmcy9pbm9kZS5jOjk1Mzk6c3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuZnMvYnRyZnMvaW5vZGUuYy05NTQwLVxcdFxcdFxcdCAgIHN0cnVjdCBidHJmc19pb2N0bF9lbmNvZGVkX2lvX2FyZ3MgKmVuY29kZWQsXFxuLS1cXG5mcy9idHJmcy9pbm9kZS5jLTk2MjgtXFx0XFx0ZW0gPSBOVUxMO1xcbmZzL2J0cmZzL2lub2RlLmM6OTYyOTpcXHRcXHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfaW5saW5lKGlvY2IsIGl0ZXIsIHN0YXJ0LCBsb2NrZW5kLFxcbmZzL2J0cmZzL2lub2RlLmMtOTYzMC1cXHRcXHRcXHRcXHRcXHRcXHRjYWNoZWRfc3RhdGUsIGV4dGVudF9zdGFydCxcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9NDI5OD1zdGF0aWMgaW50IGJ0cmZzX2lvY3RsX2VuY29kZWRfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3AsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTQzNjctXFxuZnMvYnRyZnMvaW9jdGwuYzo0MzY4OlxcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZChcXHUwMDI2a2lvY2IsIFxcdTAwMjZpdGVyLCBcXHUwMDI2YXJncywgXFx1MDAyNmNhY2hlZF9zdGF0ZSxcXG5mcy9idHJmcy9pb2N0bC5jLTQzNjktXFx0XFx0XFx0XFx0IFxcdTAwMjZkaXNrX2J5dGVuciwgXFx1MDAyNmRpc2tfaW9fc2l6ZSk7XFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTQzODItXFxuZnMvYnRyZnMvaW9jdGwuYzo0MzgzOlxcdFxcdHJldCA9IGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyKFxcdTAwMjZraW9jYiwgXFx1MDAyNml0ZXIsIHN0YXJ0LCBsb2NrZW5kLFxcbmZzL2J0cmZzL2lvY3RsLmMtNDM4NC1cXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmNhY2hlZF9zdGF0ZSwgZGlza19ieXRlbnIsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jPTQ1NDM9c3RhdGljIHZvaWQgYnRyZnNfdXJpbmdfcmVhZF9maW5pc2hlZChzdHJ1Y3QgaW9fdHdfcmVxIHR3X3JlcSwgaW9fdHdfdG9rZW5fdCB0dylcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNDU1NC1cXG5mcy9idHJmcy9pb2N0bC5jOjQ1NTU6XFx0LyogVGhlIGlub2RlIGxvY2sgaGFzIGFscmVhZHkgYmVlbiBhY3F1aXJlZCBpbiBidHJmc19lbmNvZGVkX3JlYWQoKS4gKi9cXG5mcy9idHJmcy9pb2N0bC5jLTQ1NTYtXFx0YnRyZnNfbG9ja2RlcF9pbm9kZV9hY3F1aXJlKGlub2RlLCBpX3J3c2VtKTtcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9NDYxMz1zdGF0aWMgaW50IGJ0cmZzX3VyaW5nX3JlYWRfZXh0ZW50KHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy00NjU2LVxcbmZzL2J0cmZzL2lvY3RsLmM6NDY1NzpcXHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKGlub2RlLCBkaXNrX2J5dGVucixcXG5mcy9idHJmcy9pb2N0bC5jLTQ2NTgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRpc2tfaW9fc2l6ZSwgcGFnZXMsIHByaXYpO1xcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYz00Njg5PXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy00Nzg2LVxcbmZzL2J0cmZzL2lvY3RsLmM6NDc4NzpcXHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWQoXFx1MDAyNmtpb2NiLCBcXHUwMDI2ZGF0YS1cXHUwMDNlaXRlciwgXFx1MDAyNmRhdGEtXFx1MDAzZWFyZ3MsIFxcdTAwMjZjYWNoZWRfc3RhdGUsXFxuZnMvYnRyZnMvaW9jdGwuYy00Nzg4LVxcdFxcdFxcdFxcdCBcXHUwMDI2ZGlza19ieXRlbnIsIFxcdTAwMjZkaXNrX2lvX3NpemUpO1xcbi0tXFxuZnMvYnRyZnMvc2VuZC5jPTU1MDA9c3RhdGljIGludCBzZW5kX2VuY29kZWRfZXh0ZW50KHN0cnVjdCBzZW5kX2N0eCAqc2N0eCwgc3RydWN0IGJ0cmZzX3BhdGggKnBhdGgsXFxuLS1cXG5mcy9idHJmcy9zZW5kLmMtNTU3MC1cXHQgKi9cXG5mcy9idHJmcy9zZW5kLmM6NTU3MTpcXHRyZXQgPSBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzKGlub2RlLFxcbmZzL2J0cmZzL3NlbmQuYy01NTcyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBkaXNrX2J5dGVuciwgZGlza19udW1fYnl0ZXMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjQ2LjEzMDAzNTY5M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDAyMTk1MDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEJ0cmZzIGZvciBGdXp6aW5nIEZvY3VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGxvb2sgYXQgYGJ0cmZzX2VuY29kZWRfcmVhZGAsIHdoaWNoIGlzIGV4cG9ydGVkIGluIGBmcy9idHJmcy9idHJmc19pbm9kZS5oYCBhbmQgaXMgdXRpbGl6ZWQgaW4gYGZzL2J0cmZzL2lvY3RsLmNgLiBCdXQgaG9sZCBvbiwgaXQgaXNuJ3QgZGVjbGFyZWQgc3RhdGljLCBzbyB0aGF0J3Mgc29tZXRoaW5nIHRvIG5vdGUgZm9yIGxhdGVyLlxuXG5UaGlua2luZyBtb3JlIGJyb2FkbHkgYWJvdXQgcG90ZW50aWFsIHRhcmdldHMsIEkgY29uc2lkZXJlZCBgX19pbXBvcnRfaW92ZWNgIGZyb20gYGxpYi9pb3ZfaXRlci5jYC4gSG93ZXZlciwgdGhhdCdzIGEgcHJldHR5IGdlbmVyaWMgZnVuY3Rpb24uIFdoaWxlIEknbGwga2VlcCBpdCBpbiBtaW5kIGFzIGEgcG90ZW50aWFsIHBhdGggZm9yIGV4cGxvcmF0aW9uLCBpdCBtaWdodCBub3QgYmUgdGhlIG1vc3QgZWZmZWN0aXZlIHN5bWJvbCB0byAqZm9jdXMqIG91ciBmdXp6aW5nIGVmZm9ydHMgb24uIFRoZSBidHJmcyBpb191cmluZyBjb21tYW5kcyBhcmUgbXkgcHJpbWFyeSBnb2FsIGhlcmUsIHNvIEknbSBob25pbmcgaW4gb24gdGhlbS5cblxuVGhhdCBicmluZ3MgbWUgdG8gYGJ0cmZzX3VyaW5nX2NtZGAsIHRoYXQncyBkZWZpbml0ZWx5IGEgcHJpbWUgY2FuZGlkYXRlLiBBbmQgSSdsbCBhZGQgYGJ0cmZzX2VuY29kZWRfcmVhZGAgYW5kIGBidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzYCB0byB0aGUgbGlzdCBvZiBrZXkgc3ltYm9scyBmb3IgdGhlIGZ1enplciB0byBleHBsb3JlLlxuXG5Ob3csIGxldCdzIG1ha2Ugc3VyZSB0aGUgY29uZmlndXJhdGlvbiBpcyBzZXQgdXAgcHJvcGVybHkuIFdlJ2xsIG5lZWQgYENPTkZJR19CVFJGU19GU2AsIG9mIGNvdXJzZS4gSSdsbCB0YWtlIGEgbG9vayBhdCBgZnMvYnRyZnMvS2NvbmZpZ2AgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBpb191cmluZy1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gYnRyZnMgdG8gYmUgYXdhcmUgb2YuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MzEzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjUxLjEzMjIzNTI5NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgxNzc5MDUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX3VyaW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J0cmZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjUxLjIxMDQyMDEyMVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTMwMDg3MjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGluIHRoZSBmaXJzdCBwZXJzb24sIHJlZmxlY3RpbmcgdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIGlvX3VyaW5nIEludGVncmF0aW9uIChvciBMYWNrIFRoZXJlb2YpIHdpdGhpbiB0aGUgQnRyZnMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGludG8gdGhlIEJ0cmZzIEtjb25maWcsIHNwZWNpZmljYWxseSBpdHMgaW50ZXJhY3Rpb24gd2l0aCBgaW9fdXJpbmdgLiBTZWVtcyBsaWtlIHRoZXJlJ3Mgbm8gZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gZW50cnkgZm9yIGBpb191cmluZ2AgaXRzZWxmIHdpdGhpbiB0aGUgQnRyZnMgc2VjdGlvbi4gVGhhdCdzIGEgYml0IHVuZXhwZWN0ZWQ7IG9mdGVuLCB3aGVuIGEgc3Vic3lzdGVtIGxldmVyYWdlcyBhbm90aGVyLCB0aGVyZSdzIGF0IGxlYXN0IGEgZmxhZyB0byBlbmFibGUgaXQsIG9yIGEgZGVwZW5kZW5jeSBsaXN0ZWQuIE9rYXksIHNvIG5vIGV4cGxpY2l0IGBDT05GSUdfQlRSRlNfSU9fVVJJTkdgIG9yIGFueXRoaW5nIGxpa2UgdGhhdC4gVGhhdCBuYXJyb3dzIGl0IGRvd24uIExldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiB0aGUgS2NvbmZpZyBmaWxlIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzLCBldmVuIGluZGlyZWN0bHkuIFBlcmhhcHMgaXTigJlzIGEgZGVwZW5kZW5jeSBvZiBzb21ldGhpbmcgZWxzZS4gSSBhbSBnb2luZyB0byBzZWUgaWYgYW55IGdlbmVyYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGV4aXN0IHRoYXQgd291bGQgaW5kaXJlY3RseSBzdWdnZXN0IHNvbWUgc29ydCBvZiBgaW9fdXJpbmdgIHN1cHBvcnQsIGV2ZW4gaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgbWVudGlvbmVkLiBMZXQncyBzZWUgd2hhdCB0dXJucyB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5MDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0Njo1NS4xNDA1MTA2MTlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NDg2MzcwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCVFJGU19GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9idHJmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2J0cmZzL0tjb25maWctMi1cXG5mcy9idHJmcy9LY29uZmlnOjM6Y29uZmlnIEJUUkZTX0ZTXFxuZnMvYnRyZnMvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJCdHJmcyBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9idHJmcy9LY29uZmlnLTM4LVxcbmZzL2J0cmZzL0tjb25maWc6Mzk6Y29uZmlnIEJUUkZTX0ZTX1BPU0lYX0FDTFxcbmZzL2J0cmZzL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiQnRyZnMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuZnMvYnRyZnMvS2NvbmZpZzo0MTpcXHRkZXBlbmRzIG9uIEJUUkZTX0ZTXFxuZnMvYnRyZnMvS2NvbmZpZy00Mi1cXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuLS1cXG5mcy9idHJmcy9LY29uZmlnLTQ4LVxcbmZzL2J0cmZzL0tjb25maWc6NDk6Y29uZmlnIEJUUkZTX0ZTX1JVTl9TQU5JVFlfVEVTVFNcXG5mcy9idHJmcy9LY29uZmlnLTUwLVxcdGJvb2wgXFxcIkJ0cmZzIHdpbGwgcnVuIHNhbml0eSB0ZXN0cyB1cG9uIGxvYWRpbmdcXFwiXFxuZnMvYnRyZnMvS2NvbmZpZzo1MTpcXHRkZXBlbmRzIG9uIEJUUkZTX0ZTXFxuZnMvYnRyZnMvS2NvbmZpZy01Mi1cXHRoZWxwXFxuLS1cXG5mcy9idHJmcy9LY29uZmlnPTYwPWNvbmZpZyBCVFJGU19ERUJVR1xcbmZzL2J0cmZzL0tjb25maWctNjEtXFx0Ym9vbCBcXFwiQnRyZnMgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuZnMvYnRyZnMvS2NvbmZpZzo2MjpcXHRkZXBlbmRzIG9uIEJUUkZTX0ZTXFxuZnMvYnRyZnMvS2NvbmZpZy02My1cXHRzZWxlY3QgUkVGX1RSQUNLRVIgaWYgU1RBQ0tUUkFDRV9TVVBQT1JUXFxuLS1cXG5mcy9idHJmcy9LY29uZmlnPTc0PWNvbmZpZyBCVFJGU19BU1NFUlRcXG5mcy9idHJmcy9LY29uZmlnLTc1LVxcdGJvb2wgXFxcIkJ0cmZzIGFzc2VydCBzdXBwb3J0XFxcIlxcbmZzL2J0cmZzL0tjb25maWc6NzY6XFx0ZGVwZW5kcyBvbiBCVFJGU19GU1xcbmZzL2J0cmZzL0tjb25maWctNzctXFx0aGVscFxcbi0tXFxuZnMvYnRyZnMvS2NvbmZpZz04NT1jb25maWcgQlRSRlNfRVhQRVJJTUVOVEFMXFxuZnMvYnRyZnMvS2NvbmZpZy04Ni1cXHRib29sIFxcXCJCdHJmcyBleHBlcmltZW50YWwgZmVhdHVyZXNcXFwiXFxuZnMvYnRyZnMvS2NvbmZpZzo4NzpcXHRkZXBlbmRzIG9uIEJUUkZTX0ZTXFxuZnMvYnRyZnMvS2NvbmZpZy04OC1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDk6NDY6NTUuNDA1MzgwMTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0MDcwODA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFRob3VnaHRzKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZS4gVGhlIGJpZyBvbmUgZm9yIEJ0cmZzIGlzLCBvYnZpb3VzbHksIGBDT05GSUdfQlRSRlNfRlNgLiBUaGF0J3MgdGhlIGNvcmUuIEJ1dCBJJ20gYWxzbyB0aGlua2luZyBhYm91dCBpb191cmluZywgc2luY2UgaXQgc2VlbXMgdG8gYmUgcmVsZXZhbnQuIEhtbSwgcmlnaHQsIHRoYXQncyBlbmFibGVkIGJ5IGBDT05GSUdfSU9fVVJJTkdgLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGBDT05GSUdfSU9fVVJJTkdgIGlzICpyZXF1aXJlZCogaGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBjbGVhcmx5LiBPa2F5LCB5ZXMuIENsZWFybHksIHRvIGFjdHVhbGx5ICp1c2UqIGlvX3VyaW5nIGNvbW1hbmRzIHdpdGggdGhlIGZpbGVzeXN0ZW0sIGBDT05GSUdfSU9fVVJJTkdgIGl0c2VsZiBpcyBhIHByZXJlcXVpc2l0ZS5cblxuU28sIGxldCdzIG5haWwgdGhpcyBkb3duLiBJdCBzZWVtcyBJJ2xsIG5lZWQgYm90aCBgQlRSRlNfRlNgIGFuZCBgSU9fVVJJTkdgIGVuYWJsZWQgdG8gbWFrZSB0aGUgYXBwcm9wcmlhdGUgY2FsbHMgdG8gdGhlIGlvX3VyaW5nIHN1YnN5c3RlbSB3aXRoaW4gQnRyZnMuXG5cbkFscmlnaHQsIGJlZm9yZSBJIGNvbXBsZXRlbHkgY29tbWl0IHRvIHRoYXQsIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZyBieSBsb29raW5nIHNwZWNpZmljYWxseSBhdCBgYnRyZnNfdXJpbmdfY21kYCB3aXRoaW4gYGZzL2J0cmZzL2lvY3RsLmNgLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJ3QgbWlzc2VkIGEgbnVhbmNlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0J3Mgd2hlcmUgdGhlIGlvX3VyaW5nIGludGVncmF0aW9uIGhhcHBlbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NzEwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ2OjU5LjQ0NjA5MTE3MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkwMDg5NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRyZnNfdXJpbmdfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J0cmZzL2lvY3RsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnRyZnMvaW9jdGwuYz00ODM4PXN0YXRpYyBpbnQgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZShzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNDk1OC1cXG5mcy9idHJmcy9pb2N0bC5jOjQ5NTk6aW50IGJ0cmZzX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG5mcy9idHJmcy9pb2N0bC5jLTQ5NjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0Njo1OS41MTUxMDQ5MTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkzNTk0OTQzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNoZWNraW5nIHRoZSBDb25kaXRpb25hbCBDb21waWxhdGlvbiBvZiBgYnRyZnNfdXJpbmdfY21kYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIHRoZSBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgYnRyZnNfdXJpbmdfY21kYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBxdWVzdGlvbiBpczogSXMgdGhpcyBmdW5jdGlvbiBjb25kaXRpb25hbGx5IGNvbXBpbGVkPyBTcGVjaWZpY2FsbHksIGlzIGl0IHdyYXBwZWQgaW4gYW55IGAjaWZkZWZgIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzPyBJIG5lZWQgdG8ga25vdyBpZiBpdCdzIG9ubHkgYWN0aXZlIHVuZGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMgb3Iga2VybmVsIGJ1aWxkcy4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwb3J0YWJpbGl0eSBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgQnRyZnMgZmlsZXN5c3RlbS4gSXQgY291bGQgYmUgdGllZCB0byBhIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9uLCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBmbGFnLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseS4gSWYgaXQgKmlzKiBjb25kaXRpb25hbCwgZmlndXJpbmcgb3V0IHRoZSBzcGVjaWZpYyBjb25kaXRpb24gaXMgdGhlIG5leHQgb3JkZXIgb2YgYnVzaW5lc3MuIEtub3dpbmcgdGhlIGNvbmRpdGlvbnMgb2YgaXRzIGV4aXN0ZW5jZSBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcGxhY2UgaW4gdGhlIEJ0cmZzIGVjb3N5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyNDQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwOTo0NzowNS40NTEwNTcyMDVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MTg3NTE2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaWZkZWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYnRyZnMvaW9jdGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9idHJmcy9pb2N0bC5jLTYyLVxcbmZzL2J0cmZzL2lvY3RsLmM6NjM6I2lmZGVmIENPTkZJR182NEJJVFxcbmZzL2J0cmZzL2lvY3RsLmMtNjQtLyogSWYgd2UgaGF2ZSBhIDMyLWJpdCB1c2Vyc3BhY2UgYW5kIDY0LWJpdCBrZXJuZWwsIHRoZW4gdGhlIFVBUElcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9MTk1Nz1zdGF0aWMgaW50IF9idHJmc19pb2N0bF9nZXRfc3Vidm9sX2luZm8oc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtMjA2MC1cXG5mcy9idHJmcy9pb2N0bC5jOjIwNjE6I2lmZGVmIENPTkZJR182NEJJVFxcbmZzL2J0cmZzL2lvY3RsLmMtMjA2Mi1zdGF0aWMgaW50IGJ0cmZzX2lvY3RsX2dldF9zdWJ2b2xfaW5mb18zMihzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkIF9fdXNlciAqYXJncClcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9Mzg1ND1zdGF0aWMgbG9uZyBfYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtMzk2MS1cXG5mcy9idHJmcy9pb2N0bC5jOjM5NjI6I2lmZGVmIENPTkZJR182NEJJVFxcbmZzL2J0cmZzL2lvY3RsLmMtMzk2My1zdGF0aWMgbG9uZyBidHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sXzMyKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYz01NDgyPWxvbmcgYnRyZnNfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy01NTc4LVxcdFxcdHJldHVybiBidHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sKGZpbGUsIGFyZ3ApO1xcbmZzL2J0cmZzL2lvY3RsLmM6NTU3OTojaWZkZWYgQ09ORklHXzY0QklUXFxuZnMvYnRyZnMvaW9jdGwuYy01NTgwLVxcdGNhc2UgQlRSRlNfSU9DX1NFVF9SRUNFSVZFRF9TVUJWT0xfMzI6XFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTU2MTQtXFx0XFx0cmV0dXJuIGJ0cmZzX2lvY3RsX2dldF9zdWJ2b2xfaW5mbyhpbm9kZSwgYXJncCk7XFxuZnMvYnRyZnMvaW9jdGwuYzo1NjE1OiNpZmRlZiBDT05GSUdfNjRCSVRcXG5mcy9idHJmcy9pb2N0bC5jLTU2MTYtXFx0Y2FzZSBCVFJGU19JT0NfR0VUX1NVQlZPTF9JTkZPXzMyOlxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy01NjQ5LVxcbmZzL2J0cmZzL2lvY3RsLmM6NTY1MDojaWZkZWYgQ09ORklHX0NPTVBBVFxcbmZzL2J0cmZzL2lvY3RsLmMtNTY1MS1sb25nIGJ0cmZzX2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ3OjA1LjgyMjkzNjE3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMzYxMDU4NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJ0cmZzIElPX1VSaW5nIENvbmZpZ3VyYXRpb24gYW5kIEtleSBTeW1ib2xzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB0aGVyZSdzIG5vIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGd1YXJkLCBgI2lmZGVmIENPTkZJR19JT19VUklOR2AsIHN1cnJvdW5kaW5nIGBidHJmc191cmluZ19jbWRgLiBUaGlzIG1lYW5zIHRoYXQgaWYgQlRSRlMgaXMgZW5hYmxlZCwgdGhlIGNvZGUgZm9yIGBidHJmc191cmluZ19jbWRgICp3aWxsKiBiZSBjb21waWxlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGlvX3VyaW5nIGlzLiBIb3dldmVyLCB0byAqYWN0dWFsbHkqIGhhdmUgaXQgZnVuY3Rpb24sIHdlIGFic29sdXRlbHkgbmVlZCBgQ09ORklHX0lPX1VSSU5HYCBlbmFibGVkIGluIHRoZSBrZXJuZWwgdG8gYWxsb3cgaW9fdXJpbmcgdG8gY2FsbCBpdC4gU28sIGVuYWJsaW5nIGJvdGggYEJUUkZTX0ZTYCBhbmQgYElPX1VSSU5HYCBpcyB0aGUgcmlnaHQgbW92ZSBmb3IgdXNpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LlxuXG5Ob3csIGZvciB0aGUgZm9jdXMgc3ltYm9scy4gSSBuZWVkIHRvIGlkZW50aWZ5IHdoYXQncyBjcnVjaWFsLiBJJ3ZlIGdvdDogYGJ0cmZzX3VyaW5nX2NtZGAsIGBidHJmc19lbmNvZGVkX3JlYWRgLCBhbmQgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgLiBJIHdhcyBpbml0aWFsbHkgY29uc2lkZXJpbmcgYF9faW1wb3J0X2lvdmVjYCwgYnV0LCBvbiBzZWNvbmQgdGhvdWdodCwgaXQncyBwcm9iYWJseSB0b28gZ2VuZXJpYyBhbmQgYSBob3QtcGF0aCBmdW5jdGlvbiB1c2VkIHdpZGVseS4gV2Ugd2FudCB0byBhdm9pZCBiaWFzaW5nIHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbi5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgaG90LXBhdGggc3RhdHVzIGZvciBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2AgYW5kIGBidHJmc19lbmNvZGVkX3JlYWRgLiBUaGV5J3JlIHNwZWNpZmljIHRvIFwiZW5jb2RlZCByZWFkc1wiLCB3aGljaCBpcyBhIHJlbGF0aXZlbHkgc3BlY2lhbGl6ZWQgZmVhdHVyZS4gVGhpcyBpbmNsdWRlcyB0aGluZ3MgbGlrZSBidHJmcyBzZW5kL3JlY2VpdmUgb3IgY2VydGFpbiBpb2N0bHMuIFRoZXkncmUgbm90IHBhcnQgb2YgdGhlIHN0YW5kYXJkIHJlYWQgcGF0aCwgd2hpY2ggaXMgZ29vZC4gYGJ0cmZzX3VyaW5nX2NtZGAgaXRzZWxmIGlzIHRoZSBpb191cmluZyBlbnRyeSBwb2ludCBmb3IgYnRyZnMuIFJpZ2h0IG5vdywgaXQgaGFuZGxlcyBlbmNvZGVkIHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4gU28sIGl0IGlzIG5vdCBhIGdlbmVyaWMgaG90IHBhdGggZWl0aGVyLlxuXG5UaGVyZWZvcmUsIGFmdGVyIHRoaXMgcmV2aWV3LCBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgcmVtYWluczpcbi0gYGJ0cmZzX3VyaW5nX2NtZGBcbi0gYGJ0cmZzX2VuY29kZWRfcmVhZGBcbi0gYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgXG5cbk5leHQgc3RlcCwgY2hlY2sgaWYgYGJ0cmZzX2VuY29kZWRfcmVhZGAgaXMgZXhwb3J0ZWQgb3IganVzdCBnbG9iYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MDk1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ3OjEzLjg1OTA0NDY4M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU2ODkyNjYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmJ0cmZzX2VuY29kZWRfcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9idHJmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA5OjQ3OjEzLjkyNDczOTQxOVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTQ2OTk3OTkxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIGJ0cmZzIGlvX3VyaW5nIFRhcmdldHMgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIGdsb2JhbCB3aXRoaW4gYnRyZnMsIHdoaWNoIGlzIGZpbmUsIGFzIHN5emthbGxlciBjYW4gdGFyZ2V0IGl0IGdpdmVuIHRoZSBzeW1ib2wgbmFtZS5cblxuSW5pdGlhbGx5LCBJIGlkZW50aWZpZWQgYGJ0cmZzX3VyaW5nX2NtZGAgYXMgYSBwb3RlbnRpYWwgY2FuZGlkYXRlLCBhcyBpdCBpcyBnbG9iYWwuIFRoZW4gSSBjaGVja2VkIGBidHJmc191cmluZ19lbmNvZGVkX3JlYWRgIGFuZCBgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZWAsIGJ1dCB0aGV5J3JlIHN0YXRpYyBhbmQgbGlrZWx5IHRvIGJlIGlubGluZWQsIGVsaW1pbmF0aW5nIHRoZW0gYXMgZ29vZCBjaG9pY2VzLiBUaGUgcHJvbXB0IGRvZXMgc2F5IHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28gYGJ0cmZzX3VyaW5nX2NtZGAgc2VlbXMgbGlrZSB0aGUgaW5pdGlhbCByaWdodCBjaG9pY2UuXG5cbkknbGwgZG91YmxlLWNoZWNrIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJIHNlZSBgYnRyZnNfdXJpbmdfcmVhZF9maW5pc2hlZGAgYW5kIGBidHJmc191cmluZ19yZWFkX2V4dGVudGAsIHdoaWNoIGFyZSBhbHNvIHN0YXRpYy4gVGhlbiB0aGUgc3RhdGljIGZ1bmN0aW9ucyBgYnRyZnNfdXJpbmdfZW5jb2RlZF9yZWFkYCwgYW5kIGBidHJmc191cmluZ19lbmNvZGVkX3dyaXRlYC4gTGFzdGx5LCBgX19pbXBvcnRfaW92ZWNgIHdoaWNoIGlzIGV4cG9ydGVkLCBidXQgaXMgYSBnZW5lcmljIGhvdC1wYXRoLlxuXG5TbywgbGV0J3MgbmFpbCBkb3duIHdoYXQgc3ltYm9scyBhcmUgaW1wYWN0ZWQuIEJhc2VkIG9uIG15IHJldmlldywgc28gZmFyIEkndmUgbm90ZWQ6XG4qICAgYGJ0cmZzX3VyaW5nX2NtZGBcblxuTm93LCBsZXQncyByZXZpZXcgdGhlIG1vZGlmaWNhdGlvbnMgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGlzbid0IG1vcmUgdG8gY29uc2lkZXIuXG5cbkkgc2VlIHRoYXQgYGJ0cmZzX2VuY29kZWRfcmVhZGAgaXNuJ3QgbW9kaWZpZWQuIE9rLiBCdXQgd2hhdCBhYm91dCBjYWxsZXJzPyBMZXQncyBjaGVjayB0aGUgZGlmZiBhZ2Fpbi4gSSBzZWUgbm93IHRoYXQgdGhlIGRpZmYgbW9kaWZpZXM6XG5cbiogICBgYnRyZnNfZW5jb2RlZF9yZWFkX3JlZ3VsYXJfZmlsbF9wYWdlc2BcbiogICBgYnRyZnNfdXJpbmdfcmVhZF9maW5pc2hlZGBcbiogICBgYnRyZnNfdXJpbmdfcmVhZF9leHRlbnRgXG4qICAgYGJ0cmZzX3VyaW5nX2VuY29kZWRfcmVhZGBcbiogICBgYnRyZnNfdXJpbmdfZW5jb2RlZF93cml0ZWBcbiogICBgX19pbXBvcnRfaW92ZWNgXG5cbk9rYXksIGdvb2QuIFNvIGBidHJmc19lbmNvZGVkX3JlYWRgICppcyogbm90IG1vZGlmaWVkLiBPbmx5IHRoZSBjYWxsZXJzLiBUaGVyZWZvcmUsIGBidHJmc19lbmNvZGVkX3JlYWRgIGlzbid0IGluIHNjb3BlLlxuXG5Ob3csIGxldCBtZSBjaGVjayB0aGUgZGlmZiBmb3IgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgIHRvIGNvbmZpcm0uIFllcCwgdGhlIGNvZGUgbW9kaWZpZXMgdGhlIGNvbXBsZXRpb24gbG9naWMsIHNvIGl0IGlzIGRlZmluaXRlbHkgbW9kaWZpZWQgYW5kIGEgZm9jdXMgc3ltYm9sLlxuXG5UaGVyZWZvcmUsIHRoZSBmaW5hbCBmb2N1cyBzeW1ib2xzIGFyZTpcblxuKiAgIGBidHJmc191cmluZ19jbWRgXG4qICAgYGJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNgXG5cbkdpdmVuIHdoYXQgSSdtIHNlZWluZywgdGhpcyBpcyBmdW5jdGlvbmFsLCBhbmQgdGhlIGZpeGVzIGNvdmVyIG1lbW9yeSBsZWFrcywgbG9ja2luZyBpc3N1ZXMsIGFuZCBpb191cmluZyByZXRyeSBsb2dpYyB3aXRoaW4gYnRyZnMuIFRoZXNlIG1vZGlmaWNhdGlvbnMgYXJlIGhpdHRpbmcgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHdpdGhpbiB0aGUgYnRyZnMgZmlsZXN5c3RlbSBhbmQgaXRzIGludGVncmF0aW9uIHdpdGggaW9fdXJpbmcuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBmdXp6aW5nLiBUaGUgcmVxdWlyZWQgY29uZmlncyB3b3VsZCBiZSBgQlRSRlNfRlNgIGFuZCBgSU9fVVJJTkdgLlxuXG5BbHJpZ2h0LCBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk4MSwiT3V0cHV0VG9rZW5zIjoxMjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDk6NDc6MjUuMzk0NzMwNDE1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5NTk2MDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCVFJGU19GU1wiLFxuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidHJmc191cmluZ19jbWRcIixcbiAgICBcImJ0cmZzX2VuY29kZWRfcmVhZF9yZWd1bGFyX2ZpbGxfcGFnZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBtZW1vcnkgbGVha3MsIGxvY2tpbmcgaXNzdWVzLCBhbmQgaW9fdXJpbmcgcmV0cnkgbG9naWMgaW4gYnRyZnMgaW9fdXJpbmcgZW5jb2RlZCByZWFkL3dyaXRlIG9wZXJhdGlvbnMuIEl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgYnRyZnMgZmlsZXN5c3RlbSBhbmQgaW9fdXJpbmcgaW50ZWdyYXRpb24sIHdoaWNoIGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlRSRlNfRlNcIixcbiAgICBcIklPX1VSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRyZnNfdXJpbmdfY21kXCIsXG4gICAgXCJidHJmc19lbmNvZGVkX3JlYWRfcmVndWxhcl9maWxsX3BhZ2VzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbWVtb3J5IGxlYWtzLCBsb2NraW5nIGlzc3VlcywgYW5kIGlvX3VyaW5nIHJldHJ5IGxvZ2ljIGluIGJ0cmZzIGlvX3VyaW5nIGVuY29kZWQgcmVhZC93cml0ZSBvcGVyYXRpb25zLiBJdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgaW4gdGhlIGJ0cmZzIGZpbGVzeXN0ZW0gYW5kIGlvX3VyaW5nIGludGVncmF0aW9uLCB3aGljaCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow98mw4[1] Phase: Succeeded StartedAt: 2026-08-06 09:47:36 +0000 UTC FinishedAt: 2026-08-06 09:47:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 09:47:36 +0000 UTC FinishedAt: 2026-08-06 09:47:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2] Phase: Succeeded StartedAt: 2026-08-06 09:47:36 +0000 UTC FinishedAt: 2026-08-06 13:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-06 09:47:36 +0000 UTC FinishedAt: 2026-08-06 13:33:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-06 09:47:36 +0000 UTC FinishedAt: 2026-08-06 09:47:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-06 09:47:36 +0000 UTC FinishedAt: 2026-08-06 09:47:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow98mw4/series-workflow98mw4-convert-artifact-3925651645/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-06 09:47:46 +0000 UTC FinishedAt: 2026-08-06 10:03:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-06 09:47:46 +0000 UTC FinishedAt: 2026-08-06 10:03:50 +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:*f0659f33-4be2-44e1-ba63-eb8a1f7d88b4,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-workflow98mw4/series-workflow98mw4-convert-artifact-3925651645/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": "6e774924-c301-4c1c-9b08-7f5cd45d2d78", "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-workflow98mw4/series-workflow98mw4-build-action-206952947/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-06 09:47:46 +0000 UTC FinishedAt: 2026-08-06 10:03:40 +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:*f0659f33-4be2-44e1-ba63-eb8a1f7d88b4,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-workflow98mw4/series-workflow98mw4-convert-artifact-3925651645/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": "6e774924-c301-4c1c-9b08-7f5cd45d2d78", "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-workflow98mw4/series-workflow98mw4-build-action-206952947/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-06 10:03:50 +0000 UTC FinishedAt: 2026-08-06 10:03:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-06 10:03:50 +0000 UTC FinishedAt: 2026-08-06 10:03:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-06 10:03:50 +0000 UTC FinishedAt: 2026-08-06 10:04:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-06 10:03:50 +0000 UTC FinishedAt: 2026-08-06 10:03:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow98mw4/series-workflow98mw4-convert-artifact-3401572632/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-06 10:04:00 +0000 UTC FinishedAt: 2026-08-06 10:05:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-06 10:04:00 +0000 UTC FinishedAt: 2026-08-06 10:05:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6e774924-c301-4c1c-9b08-7f5cd45d2d78,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-workflow98mw4/series-workflow98mw4-build-action-206952947/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-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-06 10:05:50 +0000 UTC FinishedAt: 2026-08-06 10:05:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-06 10:05:50 +0000 UTC FinishedAt: 2026-08-06 10:05:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-06 10:05:50 +0000 UTC FinishedAt: 2026-08-06 10:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-06 10:05:50 +0000 UTC FinishedAt: 2026-08-06 10:23:42 +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:*f0659f33-4be2-44e1-ba63-eb8a1f7d88b4,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-workflow98mw4/series-workflow98mw4-convert-artifact-3401572632/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": "34e8d8c0-c832-4f38-a6cc-55f19f3ff9e8", "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-workflow98mw4/series-workflow98mw4-build-action-1664301444/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-06 10:05:50 +0000 UTC FinishedAt: 2026-08-06 10:23:32 +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:*f0659f33-4be2-44e1-ba63-eb8a1f7d88b4,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-workflow98mw4/series-workflow98mw4-convert-artifact-3401572632/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": "34e8d8c0-c832-4f38-a6cc-55f19f3ff9e8", "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-workflow98mw4/series-workflow98mw4-build-action-1664301444/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-06 10:23:42 +0000 UTC FinishedAt: 2026-08-06 10:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-06 10:23:42 +0000 UTC FinishedAt: 2026-08-06 10:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-06 10:23:42 +0000 UTC FinishedAt: 2026-08-06 10:25:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-06 10:23:42 +0000 UTC FinishedAt: 2026-08-06 10:25:38 +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:*34e8d8c0-c832-4f38-a6cc-55f19f3ff9e8,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-workflow98mw4/series-workflow98mw4-build-action-1664301444/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-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-06 10:25:48 +0000 UTC FinishedAt: 2026-08-06 13:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-06 10:25:48 +0000 UTC FinishedAt: 2026-08-06 13:33:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"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:*6e774924-c301-4c1c-9b08-7f5cd45d2d78,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*34e8d8c0-c832-4f38-a6cc-55f19f3ff9e8,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-workflow98mw4/series-workflow98mw4-build-action-206952947/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-workflow98mw4/series-workflow98mw4-build-action-1664301444/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-06 10:25:48 +0000 UTC FinishedAt: 2026-08-06 10:26:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-06 10:25:48 +0000 UTC FinishedAt: 2026-08-06 10:25:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"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-workflow98mw4/series-workflow98mw4-convert-artifact-2470812401/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-06 10:25:48 +0000 UTC FinishedAt: 2026-08-06 10:25:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-06 10:25:48 +0000 UTC FinishedAt: 2026-08-06 10:25:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-06 10:25:48 +0000 UTC FinishedAt: 2026-08-06 10:25:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-06 10:26:08 +0000 UTC FinishedAt: 2026-08-06 13:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98mw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["btrfs_uring_cmd","btrfs_encoded_read_regular_fill_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2d2338c93da79b3bfe4b6099a931d9468d539952","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS","IO_URING"],"series_id":"5a85df1c-48af-4f4a-87dc-64ef3baf0bd1","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-06 10:26:08 +0000 UTC FinishedAt: 2026-08-06 13:33:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6e774924-c301-4c1c-9b08-7f5cd45d2d78,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*34e8d8c0-c832-4f38-a6cc-55f19f3ff9e8,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-workflow98mw4/series-workflow98mw4-build-action-206952947/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-workflow98mw4/series-workflow98mw4-build-action-1664301444/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-workflow98mw4/series-workflow98mw4-convert-artifact-2470812401/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,}