Name: series-workflowtslqb Phase: Succeeded StartedAt: 2026-08-06 12:52:35 +0000 UTC FinishedAt: 2026-08-06 16:37:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[0] Phase: Succeeded StartedAt: 2026-08-06 12:52:35 +0000 UTC FinishedAt: 2026-08-06 12:54:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 12:52:35 +0000 UTC FinishedAt: 2026-08-06 12:54:58 +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": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXFAT_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXFAT_FS" ], "series_id": "ea3a3905-1ca5-48e6-bba5-a8fab97d4494" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "exfat_fallocate", "exfat_setattr", "exfat_file_write_iter", "exfat_page_mkwrite", "exfat_create", "exfat_unlink", "exfat_mkdir", "exfat_rmdir", "exfat_rename", "exfat_reconfigure" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDEyOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYRkFUX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXhmYXRfZmFsbG9jYXRlJiMzNDssCiAgICAmIzM0O2V4ZmF0X3NldGF0dHImIzM0OywKICAgICYjMzQ7ZXhmYXRfZmlsZV93cml0ZV9pdGVyJiMzNDssCiAgICAmIzM0O2V4ZmF0X3BhZ2VfbWt3cml0ZSYjMzQ7LAogICAgJiMzNDtleGZhdF9jcmVhdGUmIzM0OywKICAgICYjMzQ7ZXhmYXRfdW5saW5rJiMzNDssCiAgICAmIzM0O2V4ZmF0X21rZGlyJiMzNDssCiAgICAmIzM0O2V4ZmF0X3JtZGlyJiMzNDssCiAgICAmIzM0O2V4ZmF0X3JlbmFtZSYjMzQ7LAogICAgJiMzNDtleGZhdF9yZWNvbmZpZ3VyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGhvdyB0aGUgZXhGQVQgZmlsZXN5c3RlbSBoYW5kbGVzIGVycm9ycyB3aGVuIG1vdW50ZWQgd2l0aCBgZXJyb3JzPXJlbW91bnQtcm9gLiBJbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgVkZTLWxldmVsIGBzYi1cdTAwM2VzX2ZsYWdzYCBkaXJlY3RseSAod2hpY2ggY2FuIGNhdXNlIGxvY2tpbmcgaXNzdWVzKSwgaXQgaW50cm9kdWNlcyBhbiBpbnRlcm5hbCBmbGFnIGBFWEZBVF9GTEFHU19FUlJPUl9ST2AgYW5kIGNoZWNrcyBpdCBpbiBhbGwgd3JpdGUgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB3cml0ZSBvcGVyYXRpb25zIGNvcnJlY3RseSBhYm9ydCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIGluIGFuIGVycm9yIHN0YXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDEyOjUzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTAxNGExM2I1ZDU5NWUxNzUxNDljOTFhMzcxZTY3NzRmNjBlNzVjNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTI6NTM6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXhmYXQvZXhmYXRfZnMuaCBiL2ZzL2V4ZmF0L2V4ZmF0X2ZzLmhcbmluZGV4IDliZTUwOTQ5Y2UzNGYuLjUwODQ2NjMwZTFmM2UgMTAwNjQ0XG4tLS0gYS9mcy9leGZhdC9leGZhdF9mcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leGZhdC9leGZhdF9mcy5oXG5AQCAtMTIyLDYgJiM0MzsxMjIsNyBAQCBlbnVtIHtcbiBcbiAvKiBTdXBlcmJsb2NrIGZsYWdzICovXG4gI2RlZmluZSBFWEZBVF9GTEFHU19TSFVURE9XTlx0MVxuJiM0MzsjZGVmaW5lIEVYRkFUX0ZMQUdTX0VSUk9SX1JPXHQyXG4gXG4gc3RydWN0IGV4ZmF0X2RlbnRyeV9uYW1lYnVmIHtcbiBcdGNoYXIgKmxmbjtcbkBAIC0zMjAsNiAmIzQzOzMyMSwxNSBAQCBzdGF0aWMgaW5saW5lIGludCBleGZhdF9mb3JjZWRfc2h1dGRvd24oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiBcdHJldHVybiB0ZXN0X2JpdChFWEZBVF9GTEFHU19TSFVURE9XTiwgXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfZXhmYXRfZmxhZ3MpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgZXhmYXRfY2hlY2tfd3JpdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiYjNDM7e1xuJiM0MztcdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oc2IpKSlcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChFWEZBVF9GTEFHU19FUlJPUl9STywgXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfZXhmYXRfZmxhZ3MpKSlcbiYjNDM7XHRcdHJldHVybiAtRVJPRlM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gLypcbiAgKiBJZiAtXHUwMDNlaV9tb2RlIGNhbiYjMzk7dCBob2xkIDAyMjIgKGkuZS4gQVRUUl9STyksIHdlIHVzZSAtXHUwMDNlaV9hdHRycyB0b1xuICAqIHNhdmUgQVRUUl9STyBpbnN0ZWFkIG9mIC1cdTAwM2VpX21vZGUuXG5kaWZmIC0tZ2l0IGEvZnMvZXhmYXQvZmlsZS5jIGIvZnMvZXhmYXQvZmlsZS5jXG5pbmRleCA1ZmMxMzM3OGQzNWY3Li5iNmFmZWVkZTI0OTA0IDEwMDY0NFxuLS0tIGEvZnMvZXhmYXQvZmlsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leGZhdC9maWxlLmNcbkBAIC0xMjUsOCAmIzQzOzEyNSw5IEBAIHN0YXRpYyBsb25nIGV4ZmF0X2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsXG4gXHRpZiAoIVNfSVNSRUcoaW5vZGUtXHUwMDNlaV9tb2RlKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihpbm9kZS1cdTAwM2VpX3NiKSkpXG4tXHRcdHJldHVybiAtRUlPO1xuJiM0MztcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKGlub2RlLVx1MDAzZWlfc2IpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuIFxuIFx0aW5vZGVfbG9jayhpbm9kZSk7XG4gXG5AQCAtMzU0LDggJiM0MzszNTUsOSBAQCBpbnQgZXhmYXRfc2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuIFx0dW5zaWduZWQgaW50IGlhX3ZhbGlkO1xuIFx0aW50IGVycm9yO1xuIFxuLVx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihpbm9kZS1cdTAwM2VpX3NiKSkpXG4tXHRcdHJldHVybiAtRUlPO1xuJiM0MztcdGVycm9yID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoaW5vZGUtXHUwMDNlaV9zYik7XG4mIzQzO1x0aWYgKGVycm9yKVxuJiM0MztcdFx0cmV0dXJuIGVycm9yO1xuIFxuIFx0aWYgKChhdHRyLVx1MDAzZWlhX3ZhbGlkIFx1MDAyNiBBVFRSX1NJWkUpIFx1MDAyNlx1MDAyNlxuIFx0ICAgIGF0dHItXHUwMDNlaWFfc2l6ZSBcdTAwM2UgaV9zaXplX3JlYWQoaW5vZGUpKSB7XG5AQCAtNzM4LDggJiM0Mzs3NDAsOSBAQCBzdGF0aWMgc3NpemVfdCBleGZhdF9maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4gXHRsb2ZmX3QgdmFsaWRfc2l6ZTtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKGlub2RlLVx1MDAzZWlfc2IpKSlcbi1cdFx0cmV0dXJuIC1FSU87XG4mIzQzO1x0cmV0ID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoaW5vZGUtXHUwMDNlaV9zYik7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4gXG4gXHRpbm9kZV9sb2NrKGlub2RlKTtcbiBcbkBAIC04MjYsNiAmIzQzOzgyOSwxMSBAQCBzdGF0aWMgdm1fZmF1bHRfdCBleGZhdF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHRzdHJ1Y3QgZXhmYXRfaW5vZGVfaW5mbyAqZWkgPSBFWEZBVF9JKGlub2RlKTtcbiBcdHZtX2ZhdWx0X3QgcmV0O1xuIFx0bG9mZl90IG5ld192YWxpZF9zaXplLCBtbWFwX3ZhbGlkX3NpemU7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoaW5vZGUtXHUwMDNlaV9zYik7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiB2bWZfZnNfZXJyb3IoZXJyKTtcbiBcbiBcdGlmICghaW5vZGVfdHJ5bG9jayhpbm9kZSkpXG4gXHRcdHJldHVybiBWTV9GQVVMVF9SRVRSWTtcbkBAIC04MzUsOCAmIzQzOzg0Myw2IEBAIHN0YXRpYyB2bV9mYXVsdF90IGV4ZmF0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbiBcbiBcdGlmIChlaS1cdTAwM2V2YWxpZF9zaXplIFx1MDAzYyBuZXdfdmFsaWRfc2l6ZSkge1xuIFx0XHRpZiAoZWktXHUwMDNlemVyb2VkX3NpemUgXHUwMDNjIG1tYXBfdmFsaWRfc2l6ZSkge1xuLVx0XHRcdGludCBlcnI7XG4tXG4gXHRcdFx0LypcbiBcdFx0XHQgKiBPbmx5IHplcm8gdGhlIHJhbmdlIHRoYXQgaGFzbiYjMzk7dCBiZWVuIHplcm9lZCB5ZXQgZm9yXG4gXHRcdFx0ICogdGhpcyBtbWFwIHdyaXRlIHBhdGguIHplcm9lZF9zaXplIHRyYWNrcyB0aGUgbGFyZ2VzdFxuZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L21pc2MuYyBiL2ZzL2V4ZmF0L21pc2MuY1xuaW5kZXggNmYxMWE5NmE0ZmZhOC4uYWI4NzU0NzNmOTNhZSAxMDA2NDRcbi0tLSBhL2ZzL2V4ZmF0L21pc2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhmYXQvbWlzYy5jXG5AQCAtNDEsOCAmIzQzOzQxLDggQEAgdm9pZCBfX2V4ZmF0X2ZzX2Vycm9yKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCByZXBvcnQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxuIFx0XHRwYW5pYyhcJiMzNDtleEZBVC1mcyAoJXMpOiBmcyBwYW5pYyBmcm9tIHByZXZpb3VzIGVycm9yXFxuXCYjMzQ7LFxuIFx0XHRcdHNiLVx1MDAzZXNfaWQpO1xuIFx0fSBlbHNlIGlmIChvcHRzLVx1MDAzZWVycm9ycyA9PSBFWEZBVF9FUlJPUlNfUk8gXHUwMDI2XHUwMDI2ICFzYl9yZG9ubHkoc2IpKSB7XG4tXHRcdHNiLVx1MDAzZXNfZmxhZ3MgfD0gU0JfUkRPTkxZO1xuLVx0XHRleGZhdF9lcnIoc2IsIFwmIzM0O0ZpbGVzeXN0ZW0gaGFzIGJlZW4gc2V0IHJlYWQtb25seVwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAoIXRlc3RfYW5kX3NldF9iaXQoRVhGQVRfRkxBR1NfRVJST1JfUk8sIFx1MDAyNkVYRkFUX1NCKHNiKS1cdTAwM2VzX2V4ZmF0X2ZsYWdzKSlcbiYjNDM7XHRcdFx0ZXhmYXRfZXJyKHNiLCBcJiMzNDtGaWxlc3lzdGVtIGhhcyBiZWVuIHNldCByZWFkLW9ubHlcJiMzNDspO1xuIFx0fVxuIH1cbiBcbmRpZmYgLS1naXQgYS9mcy9leGZhdC9uYW1laS5jIGIvZnMvZXhmYXQvbmFtZWkuY1xuaW5kZXggYjdkNWU0NGFkMzhlZS4uZjA4MTcwZGU2M2IzMCAxMDA2NDRcbi0tLSBhL2ZzL2V4ZmF0L25hbWVpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4ZmF0L25hbWVpLmNcbkBAIC01NDcsOCAmIzQzOzU0Nyw5IEBAIHN0YXRpYyBpbnQgZXhmYXRfY3JlYXRlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbiBcdGludCBlcnI7XG4gXHRsb2ZmX3Qgc2l6ZSA9IGlfc2l6ZV9yZWFkKGRpcik7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4tXHRcdHJldHVybiAtRUlPO1xuJiM0MztcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfbG9jayk7XG4gXHRleGZhdF9zZXRfdm9sdW1lX2RpcnR5KHNiKTtcbkBAIC03NjUsMTAgJiM0Mzs3NjYsMTEgQEAgc3RhdGljIGludCBleGZhdF91bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktXHUwMDNlZF9pbm9kZTtcbiBcdHN0cnVjdCBleGZhdF9pbm9kZV9pbmZvICplaSA9IEVYRkFUX0koaW5vZGUpO1xuIFx0c3RydWN0IGV4ZmF0X2VudHJ5X3NldF9jYWNoZSBlcztcbi1cdGludCBlcnIgPSAwO1xuJiM0MztcdGludCBlcnI7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4tXHRcdHJldHVybiAtRUlPO1xuJiM0MztcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfbG9jayk7XG4gXHRpZiAoZWktXHUwMDNlZGlyLmRpciA9PSBESVJfREVMRVRFRCkge1xuQEAgLTgyMCw4ICYjNDM7ODIyLDkgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmV4ZmF0X21rZGlyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbiBcdGludCBlcnI7XG4gXHRsb2ZmX3Qgc2l6ZSA9IGlfc2l6ZV9yZWFkKGRpcik7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4tXHRcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xuJiM0MztcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfbG9jayk7XG4gXHRleGZhdF9zZXRfdm9sdW1lX2RpcnR5KHNiKTtcbkBAIC05MTEsOCAmIzQzOzkxNCw5IEBAIHN0YXRpYyBpbnQgZXhmYXRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdHN0cnVjdCBleGZhdF9lbnRyeV9zZXRfY2FjaGUgZXM7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKVxuLVx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRlcnIgPSBleGZhdF9jaGVja193cml0YWJsZShzYik7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNkVYRkFUX1NCKGlub2RlLVx1MDAzZWlfc2IpLVx1MDAzZXNfbG9jayk7XG4gXG5AQCAtOTk1LDkgJiM0Mzs5OTksNiBAQCBzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZV9maWxlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2lub2RlLFxuIFx0aW50IHN5bmMgPSBJU19ESVJTWU5DKHBhcmVudF9pbm9kZSk7XG4gXHR1bnNpZ25lZCBpbnQgbnVtX2V4dHJhX2VudHJpZXMsIG51bV90b3RhbF9lbnRyaWVzO1xuIFxuLVx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKVxuLVx0XHRyZXR1cm4gLUVJTztcbi1cbiBcdG51bV9uZXdfZW50cmllcyA9IGV4ZmF0X2NhbGNfbnVtX2VudHJpZXMocF91bmluYW1lKTtcbiBcdGlmIChudW1fbmV3X2VudHJpZXMgXHUwMDNjIDApXG4gXHRcdHJldHVybiBudW1fbmV3X2VudHJpZXM7XG5AQCAtMTI2Nyw2ICYjNDM7MTI2OCwxMCBAQCBzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbiBcdGlmIChmbGFncyBcdTAwMjYgflJFTkFNRV9OT1JFUExBQ0UpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4gXHRtdXRleF9sb2NrKFx1MDAyNkVYRkFUX1NCKHNiKS1cdTAwM2VzX2xvY2spO1xuIFx0b2xkX2lub2RlID0gb2xkX2RlbnRyeS1cdTAwM2VkX2lub2RlO1xuIFx0bmV3X2lub2RlID0gbmV3X2RlbnRyeS1cdTAwM2VkX2lub2RlO1xuZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L3N1cGVyLmMgYi9mcy9leGZhdC9zdXBlci5jXG5pbmRleCAzODhkYjI3MWM2YmY1Li5kY2I2ZTE1ZTRkN2Q0IDEwMDY0NFxuLS0tIGEvZnMvZXhmYXQvc3VwZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhmYXQvc3VwZXIuY1xuQEAgLTgwNyw2ICYjNDM7ODA3LDkgQEAgc3RhdGljIGludCBleGZhdF9yZWNvbmZpZ3VyZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXG4gXHRzd2FwKCpjdXJfb3B0cywgKm5ld19vcHRzKTtcbiBcbiYjNDM7XHRpZiAoIShmYy1cdTAwM2VzYl9mbGFncyBcdTAwMjYgU0JfUkRPTkxZKSlcbiYjNDM7XHRcdGNsZWFyX2JpdChFWEZBVF9GTEFHU19FUlJPUl9STywgXHUwMDI2c2JpLVx1MDAzZXNfZXhmYXRfZmxhZ3MpO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMjo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhGQVRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleGZhdF9mYWxsb2NhdGUmIzM0OywKICAgICYjMzQ7ZXhmYXRfc2V0YXR0ciYjMzQ7LAogICAgJiMzNDtleGZhdF9maWxlX3dyaXRlX2l0ZXImIzM0OywKICAgICYjMzQ7ZXhmYXRfcGFnZV9ta3dyaXRlJiMzNDssCiAgICAmIzM0O2V4ZmF0X2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtleGZhdF91bmxpbmsmIzM0OywKICAgICYjMzQ7ZXhmYXRfbWtkaXImIzM0OywKICAgICYjMzQ7ZXhmYXRfcm1kaXImIzM0OywKICAgICYjMzQ7ZXhmYXRfcmVuYW1lJiMzNDssCiAgICAmIzM0O2V4ZmF0X3JlY29uZmlndXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgaG93IHRoZSBleEZBVCBmaWxlc3lzdGVtIGhhbmRsZXMgZXJyb3JzIHdoZW4gbW91bnRlZCB3aXRoIGBlcnJvcnM9cmVtb3VudC1yb2AuIEluc3RlYWQgb2YgbW9kaWZ5aW5nIHRoZSBWRlMtbGV2ZWwgYHNiLVx1MDAzZXNfZmxhZ3NgIGRpcmVjdGx5ICh3aGljaCBjYW4gY2F1c2UgbG9ja2luZyBpc3N1ZXMpLCBpdCBpbnRyb2R1Y2VzIGFuIGludGVybmFsIGZsYWcgYEVYRkFUX0ZMQUdTX0VSUk9SX1JPYCBhbmQgY2hlY2tzIGl0IGluIGFsbCB3cml0ZSBwYXRocy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHdyaXRlIG9wZXJhdGlvbnMgY29ycmVjdGx5IGFib3J0IHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgaW4gYW4gZXJyb3Igc3RhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlMDE0YTEzYjVkNTk1ZTE3NTE0OWM5MWEzNzFlNjc3NGY2MGU3NWM2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAxMjo1Mzo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L2V4ZmF0X2ZzLmggYi9mcy9leGZhdC9leGZhdF9mcy5oCmluZGV4IDliZTUwOTQ5Y2UzNGYuLjUwODQ2NjMwZTFmM2UgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZmF0L2V4ZmF0X2ZzLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhmYXQvZXhmYXRfZnMuaApAQCAtMTIyLDYgJiM0MzsxMjIsNyBAQCBlbnVtIHsKIAogLyogU3VwZXJibG9jayBmbGFncyAqLwogI2RlZmluZSBFWEZBVF9GTEFHU19TSFVURE9XTgkxCiYjNDM7I2RlZmluZSBFWEZBVF9GTEFHU19FUlJPUl9STwkyCiAKIHN0cnVjdCBleGZhdF9kZW50cnlfbmFtZWJ1ZiB7CiAJY2hhciAqbGZuOwpAQCAtMzIwLDYgJiM0MzszMjEsMTUgQEAgc3RhdGljIGlubGluZSBpbnQgZXhmYXRfZm9yY2VkX3NodXRkb3duKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCiAJcmV0dXJuIHRlc3RfYml0KEVYRkFUX0ZMQUdTX1NIVVRET1dOLCAmYW1wO0VYRkFUX1NCKHNiKS0mZ3Q7c19leGZhdF9mbGFncyk7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIGludCBleGZhdF9jaGVja193cml0YWJsZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQomIzQzO3sKJiM0MzsJaWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKQomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CWlmICh1bmxpa2VseSh0ZXN0X2JpdChFWEZBVF9GTEFHU19FUlJPUl9STywgJmFtcDtFWEZBVF9TQihzYiktJmd0O3NfZXhmYXRfZmxhZ3MpKSkKJiM0MzsJCXJldHVybiAtRVJPRlM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIC8qCiAgKiBJZiAtJmd0O2lfbW9kZSBjYW4mIzM5O3QgaG9sZCAwMjIyIChpLmUuIEFUVFJfUk8pLCB3ZSB1c2UgLSZndDtpX2F0dHJzIHRvCiAgKiBzYXZlIEFUVFJfUk8gaW5zdGVhZCBvZiAtJmd0O2lfbW9kZS4KZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L2ZpbGUuYyBiL2ZzL2V4ZmF0L2ZpbGUuYwppbmRleCA1ZmMxMzM3OGQzNWY3Li5iNmFmZWVkZTI0OTA0IDEwMDY0NAotLS0gYS9mcy9leGZhdC9maWxlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhmYXQvZmlsZS5jCkBAIC0xMjUsOCAmIzQzOzEyNSw5IEBAIHN0YXRpYyBsb25nIGV4ZmF0X2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsCiAJaWYgKCFTX0lTUkVHKGlub2RlLSZndDtpX21vZGUpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKGlub2RlLSZndDtpX3NiKSkpCi0JCXJldHVybiAtRUlPOwomIzQzOwllcnIgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS0mZ3Q7aV9zYik7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwogCiAJaW5vZGVfbG9jayhpbm9kZSk7CiAKQEAgLTM1NCw4ICYjNDM7MzU1LDkgQEAgaW50IGV4ZmF0X3NldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKIAl1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7CiAJaW50IGVycm9yOwogCi0JaWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihpbm9kZS0mZ3Q7aV9zYikpKQotCQlyZXR1cm4gLUVJTzsKJiM0MzsJZXJyb3IgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS0mZ3Q7aV9zYik7CiYjNDM7CWlmIChlcnJvcikKJiM0MzsJCXJldHVybiBlcnJvcjsKIAogCWlmICgoYXR0ci0mZ3Q7aWFfdmFsaWQgJmFtcDsgQVRUUl9TSVpFKSAmYW1wOyZhbXA7CiAJICAgIGF0dHItJmd0O2lhX3NpemUgJmd0OyBpX3NpemVfcmVhZChpbm9kZSkpIHsKQEAgLTczOCw4ICYjNDM7NzQwLDkgQEAgc3RhdGljIHNzaXplX3QgZXhmYXRfZmlsZV93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyKQogCWxvZmZfdCB2YWxpZF9zaXplOwogCWludCBlcnI7CiAKLQlpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKGlub2RlLSZndDtpX3NiKSkpCi0JCXJldHVybiAtRUlPOwomIzQzOwlyZXQgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS0mZ3Q7aV9zYik7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHJldDsKIAogCWlub2RlX2xvY2soaW5vZGUpOwogCkBAIC04MjYsNiAmIzQzOzgyOSwxMSBAQCBzdGF0aWMgdm1fZmF1bHRfdCBleGZhdF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJc3RydWN0IGV4ZmF0X2lub2RlX2luZm8gKmVpID0gRVhGQVRfSShpbm9kZSk7CiAJdm1fZmF1bHRfdCByZXQ7CiAJbG9mZl90IG5ld192YWxpZF9zaXplLCBtbWFwX3ZhbGlkX3NpemU7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKGlub2RlLSZndDtpX3NiKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiB2bWZfZnNfZXJyb3IoZXJyKTsKIAogCWlmICghaW5vZGVfdHJ5bG9jayhpbm9kZSkpCiAJCXJldHVybiBWTV9GQVVMVF9SRVRSWTsKQEAgLTgzNSw4ICYjNDM7ODQzLDYgQEAgc3RhdGljIHZtX2ZhdWx0X3QgZXhmYXRfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCiAJaWYgKGVpLSZndDt2YWxpZF9zaXplICZsdDsgbmV3X3ZhbGlkX3NpemUpIHsKIAkJaWYgKGVpLSZndDt6ZXJvZWRfc2l6ZSAmbHQ7IG1tYXBfdmFsaWRfc2l6ZSkgewotCQkJaW50IGVycjsKLQogCQkJLyoKIAkJCSAqIE9ubHkgemVybyB0aGUgcmFuZ2UgdGhhdCBoYXNuJiMzOTt0IGJlZW4gemVyb2VkIHlldCBmb3IKIAkJCSAqIHRoaXMgbW1hcCB3cml0ZSBwYXRoLiB6ZXJvZWRfc2l6ZSB0cmFja3MgdGhlIGxhcmdlc3QKZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L21pc2MuYyBiL2ZzL2V4ZmF0L21pc2MuYwppbmRleCA2ZjExYTk2YTRmZmE4Li5hYjg3NTQ3M2Y5M2FlIDEwMDY0NAotLS0gYS9mcy9leGZhdC9taXNjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhmYXQvbWlzYy5jCkBAIC00MSw4ICYjNDM7NDEsOCBAQCB2b2lkIF9fZXhmYXRfZnNfZXJyb3Ioc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHJlcG9ydCwgY29uc3QgY2hhciAqZm10LCAuLi4pCiAJCXBhbmljKCYjMzQ7ZXhGQVQtZnMgKCVzKTogZnMgcGFuaWMgZnJvbSBwcmV2aW91cyBlcnJvclxuJiMzNDssCiAJCQlzYi0mZ3Q7c19pZCk7CiAJfSBlbHNlIGlmIChvcHRzLSZndDtlcnJvcnMgPT0gRVhGQVRfRVJST1JTX1JPICZhbXA7JmFtcDsgIXNiX3Jkb25seShzYikpIHsKLQkJc2ItJmd0O3NfZmxhZ3MgfD0gU0JfUkRPTkxZOwotCQlleGZhdF9lcnIoc2IsICYjMzQ7RmlsZXN5c3RlbSBoYXMgYmVlbiBzZXQgcmVhZC1vbmx5JiMzNDspOwomIzQzOwkJaWYgKCF0ZXN0X2FuZF9zZXRfYml0KEVYRkFUX0ZMQUdTX0VSUk9SX1JPLCAmYW1wO0VYRkFUX1NCKHNiKS0mZ3Q7c19leGZhdF9mbGFncykpCiYjNDM7CQkJZXhmYXRfZXJyKHNiLCAmIzM0O0ZpbGVzeXN0ZW0gaGFzIGJlZW4gc2V0IHJlYWQtb25seSYjMzQ7KTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L25hbWVpLmMgYi9mcy9leGZhdC9uYW1laS5jCmluZGV4IGI3ZDVlNDRhZDM4ZWUuLmYwODE3MGRlNjNiMzAgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZmF0L25hbWVpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhmYXQvbmFtZWkuYwpAQCAtNTQ3LDggJiM0Mzs1NDcsOSBAQCBzdGF0aWMgaW50IGV4ZmF0X2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpkaXIsCiAJaW50IGVycjsKIAlsb2ZmX3Qgc2l6ZSA9IGlfc2l6ZV9yZWFkKGRpcik7CiAKLQlpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpCi0JCXJldHVybiAtRUlPOwomIzQzOwllcnIgPSBleGZhdF9jaGVja193cml0YWJsZShzYik7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwogCiAJbXV0ZXhfbG9jaygmYW1wO0VYRkFUX1NCKHNiKS0mZ3Q7c19sb2NrKTsKIAlleGZhdF9zZXRfdm9sdW1lX2RpcnR5KHNiKTsKQEAgLTc2NSwxMCAmIzQzOzc2NiwxMSBAQCBzdGF0aWMgaW50IGV4ZmF0X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktJmd0O2RfaW5vZGU7CiAJc3RydWN0IGV4ZmF0X2lub2RlX2luZm8gKmVpID0gRVhGQVRfSShpbm9kZSk7CiAJc3RydWN0IGV4ZmF0X2VudHJ5X3NldF9jYWNoZSBlczsKLQlpbnQgZXJyID0gMDsKJiM0MzsJaW50IGVycjsKIAotCWlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oc2IpKSkKLQkJcmV0dXJuIC1FSU87CiYjNDM7CWVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiAKIAltdXRleF9sb2NrKCZhbXA7RVhGQVRfU0Ioc2IpLSZndDtzX2xvY2spOwogCWlmIChlaS0mZ3Q7ZGlyLmRpciA9PSBESVJfREVMRVRFRCkgewpAQCAtODIwLDggJiM0Mzs4MjIsOSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqZXhmYXRfbWtkaXIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLAogCWludCBlcnI7CiAJbG9mZl90IHNpemUgPSBpX3NpemVfcmVhZChkaXIpOwogCi0JaWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKQotCQlyZXR1cm4gRVJSX1BUUigtRUlPKTsKJiM0MzsJZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIAogCW11dGV4X2xvY2soJmFtcDtFWEZBVF9TQihzYiktJmd0O3NfbG9jayk7CiAJZXhmYXRfc2V0X3ZvbHVtZV9kaXJ0eShzYik7CkBAIC05MTEsOCAmIzQzOzkxNCw5IEBAIHN0YXRpYyBpbnQgZXhmYXRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAlzdHJ1Y3QgZXhmYXRfZW50cnlfc2V0X2NhY2hlIGVzOwogCWludCBlcnI7CiAKLQlpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpCi0JCXJldHVybiAtRUlPOwomIzQzOwllcnIgPSBleGZhdF9jaGVja193cml0YWJsZShzYik7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwogCiAJbXV0ZXhfbG9jaygmYW1wO0VYRkFUX1NCKGlub2RlLSZndDtpX3NiKS0mZ3Q7c19sb2NrKTsKIApAQCAtOTk1LDkgJiM0Mzs5OTksNiBAQCBzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZV9maWxlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2lub2RlLAogCWludCBzeW5jID0gSVNfRElSU1lOQyhwYXJlbnRfaW5vZGUpOwogCXVuc2lnbmVkIGludCBudW1fZXh0cmFfZW50cmllcywgbnVtX3RvdGFsX2VudHJpZXM7CiAKLQlpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpCi0JCXJldHVybiAtRUlPOwotCiAJbnVtX25ld19lbnRyaWVzID0gZXhmYXRfY2FsY19udW1fZW50cmllcyhwX3VuaW5hbWUpOwogCWlmIChudW1fbmV3X2VudHJpZXMgJmx0OyAwKQogCQlyZXR1cm4gbnVtX25ld19lbnRyaWVzOwpAQCAtMTI2Nyw2ICYjNDM7MTI2OCwxMCBAQCBzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwKIAlpZiAoZmxhZ3MgJmFtcDsgflJFTkFNRV9OT1JFUExBQ0UpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CWVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiAJbXV0ZXhfbG9jaygmYW1wO0VYRkFUX1NCKHNiKS0mZ3Q7c19sb2NrKTsKIAlvbGRfaW5vZGUgPSBvbGRfZGVudHJ5LSZndDtkX2lub2RlOwogCW5ld19pbm9kZSA9IG5ld19kZW50cnktJmd0O2RfaW5vZGU7CmRpZmYgLS1naXQgYS9mcy9leGZhdC9zdXBlci5jIGIvZnMvZXhmYXQvc3VwZXIuYwppbmRleCAzODhkYjI3MWM2YmY1Li5kY2I2ZTE1ZTRkN2Q0IDEwMDY0NAotLS0gYS9mcy9leGZhdC9zdXBlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4ZmF0L3N1cGVyLmMKQEAgLTgwNyw2ICYjNDM7ODA3LDkgQEAgc3RhdGljIGludCBleGZhdF9yZWNvbmZpZ3VyZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAKIAlzd2FwKCpjdXJfb3B0cywgKm5ld19vcHRzKTsKIAomIzQzOwlpZiAoIShmYy0mZ3Q7c2JfZmxhZ3MgJmFtcDsgU0JfUkRPTkxZKSkKJiM0MzsJCWNsZWFyX2JpdChFWEZBVF9GTEFHU19FUlJPUl9STywgJmFtcDtzYmktJmd0O3NfZXhmYXRfZmxhZ3MpOwomIzQzOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1MTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFeEZBVCBFcnJvciBIYW5kbGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgbWFraW5nIHNvbWUgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byB0aGUgZXhGQVQgZmlsZXN5c3RlbSwgc3BlY2lmaWNhbGx5IGhvdyBpdCBkZWFscyB3aXRoIHJlYWQtb25seSBlcnJvcnMuIExvb2tzIGxpa2UgdGhleSYjMzk7cmUgdG91Y2hpbmcgYGV4ZmF0X2ZzLmhgLCBgZmlsZS5jYCwgYG1pc2MuY2AsIGBuYW1laS5jYCwgYW5kIGBzdXBlci5jYC4gVGhhdCYjMzk7cyBhIGRlY2VudCBjaHVuayBvZiB0aGUgY29yZSBleEZBVCBsb2dpYywgd2hpY2ggZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rLgoKVGhlIGdpc3Qgb2YgaXQgaXMgdGhpczogdGhleSYjMzk7cmUgaW50cm9kdWNpbmcgYSBuZXcgaW50ZXJuYWwgZmxhZywgYEVYRkFUX0ZMQUdTX0VSUk9SX1JPYCwgYW5kIGEgaGVscGVyIGZ1bmN0aW9uLCBgZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpYC4gSW5zdGVhZCBvZiBkaXJlY3RseSBzZXR0aW5nIGBTQl9SRE9OTFlgIG9uIHRoZSBzdXBlcmJsb2NrJiMzOTtzIGZsYWdzIGluIGBfX2V4ZmF0X2ZzX2Vycm9yYCwgd2hpY2ggSSBrbm93IGNhbiBiZSBwcm9ibGVtYXRpYyBpbiB0aGUgVkZTIGNvbnRleHQgZHVlIHRvIGxvY2tpbmcgaXNzdWVzLCB0aGV5JiMzOTtyZSBzZXR0aW5nIHRoZSBpbnRlcm5hbCBgRVhGQVRfRkxBR1NfRVJST1JfUk9gIGZsYWcgb24gdGhlIGV4RkFUIHN1cGVyYmxvY2sgaW5mb3JtYXRpb24uIFRoZW4sICphbGwqIHRoZSB3cml0ZSBvcGVyYXRpb25zIOKAkyBgZmFsbG9jYXRlYCwgYHNldGF0dHJgLCBgd3JpdGVfaXRlcmAsIGBwYWdlX21rd3JpdGVgLCBgY3JlYXRlYCwgYHVubGlua2AsIGBta2RpcmAsIGBybWRpcmAsIGFuZCBgcmVuYW1lYCDigJMgYXJlIGJlaW5nIHVwZGF0ZWQgdG8gY2FsbCBgZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpYCBhbmQgcmV0dXJuIGAtRVJPRlNgIGlmIHRoYXQgZmxhZyBpcyBzZXQuIFRoYXQmIzM5O3MgYSBnb29kIGFwcHJvYWNoOyBrZWVwcyB0aGUgVkZTIGhhcHB5LiBBbmQsIG9mIGNvdXJzZSwgYGV4ZmF0X3JlY29uZmlndXJlYCBpcyBnb2luZyB0byBjbGVhciB0aGF0IGZsYWcgd2hlbiB3ZSByZW1vdW50IHJlYWQtd3JpdGUuCgpUaGlzIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIGNoYW5nZSB0byBob3cgZXhGQVQgaGFuZGxlcyBpdHMgZXJyb3Igc3RhdGVzIHdoZW4gbW91bnRlZCB3aXRoIGBlcnJvcnM9cmVtb3VudC1yb2AuIEl0JiMzOTtzIGEgY2xlYXIgaW1wcm92ZW1lbnQgaW4gdGVybXMgb2YgVkZTIGNvbXBhdGliaWxpdHksIG1vdmluZyBhd2F5IGZyb20gZGlyZWN0IG1vZGlmaWNhdGlvbiBvZiBgc2ItJmd0O3NfZmxhZ3NgLgoKKipGdXp6aW5nIEZvY3VzKioKCkdpdmVuIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcywgdGhpcyBpcyAqYWJzb2x1dGVseSogYSBwYXRjaCB0aGF0IG5lZWRzIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgdGhleSYjMzk7cmUgdG91Y2hpbmcgc28gbWFueSB3cml0ZSBwYXRocyBtYWtlcyBpdCBhIHByaW1lIHRhcmdldC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgaGVyZS4gV2Ugc2hvdWxkIGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIGZvbGxvd2luZyBzeW1ib2xzOgoKKiAgIGBleGZhdF9mYWxsb2NhdGVgCiogICBgZXhmYXRfc2V0YXR0cmAKKiAgIGBleGZhdF9maWxlX3dyaXRlX2l0ZXJgCiogICBgZXhmYXRfcGFnZV9ta3dyaXRlYAoqICAgYGV4ZmF0X2NyZWF0ZWAKKiAgIGBleGZhdF91bmxpbmtgCiogICBgZXhmYXRfbWtkaXJgCiogICBgZXhmYXRfcm1kaXJgCiogICBgZXhmYXRfcmVuYW1lYAoqICAgYGV4ZmF0X3JlY29uZmlndXJlYAoKKipEZXBlbmRlbmNpZXMqKgoKTGV0IG1lIHF1aWNrbHkgY2hlY2sgYGZzL2V4ZmF0L0tjb25maWdgIHRvIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgZ290IHRoZSBleEZBVCBmaWxlc3lzdGVtIGVuYWJsZWQgLSBZZXAsIGBDT05GSUdfRVhGQVRfRlNgIGlzIHRoZXJlLiBJJiMzOTtsbCBhbHNvIHJ1biBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gZG91YmxlLWNoZWNrIGZvciBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzLiBXZSBuZWVkIHRvIGtub3cgaWYgYW55IG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIGluZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEVYRkFUX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXhmYXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGZhdC9LY29uZmlnLTItXG5mcy9leGZhdC9LY29uZmlnOjM6Y29uZmlnIEVYRkFUX0ZTXG5mcy9leGZhdC9LY29uZmlnLTQtXHR0cmlzdGF0ZSBcJiMzNDtleEZBVCBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzA4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkV4YW1pbmluZyB0aGUgRXhGQVQgS2VybmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIEV4RkFUIGZpbGUgc3lzdGVtIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24uIFRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBmcy9leGZhdC9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciBFeEZBVCBhcmUgZGVmaW5lZC4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgcGxhY2UgdG8gZmlndXJlIG91dCB3aGF0IG90aGVyIGNvbXBvbmVudHMgb3Igc2V0dGluZ3MgbmVlZCB0byBiZSBpbiBwbGFjZSBmb3IgRXhGQVQgdG8gYmUgYnVpbHQgYW5kIHdvcmsgY29ycmVjdGx5LiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGxlYXJuIGFib3V0IHRoZXNlIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBpbmZvcm1hdGlvbiBhYm91dCB0aGluZ3MgbGlrZSBlbmFibGluZyBzcGVjaWZpYyBDUFUgZmVhdHVyZXMsIG90aGVyIGZpbGUgc3lzdGVtIHN1cHBvcnQsIG9yIG5lY2Vzc2FyeSBrZXJuZWwgbW9kdWxlcy4gRnJvbSBoZXJlLCBJIGNhbiBwbGFuIGhvdyBiZXN0IHRvIGVuYWJsZSBvciBidWlsZCB0aGlzIGNvbXBvbmVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4ZmF0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXG4gICAyOlx0XG4gICAzOlx0Y29uZmlnIEVYRkFUX0ZTXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtleEZBVCBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDU6XHRcdHNlbGVjdCBCVUZGRVJfSEVBRFxuICAgNjpcdFx0c2VsZWN0IE5MU1xuICAgNzpcdFx0c2VsZWN0IEZTX0lPTUFQXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFRoaXMgYWxsb3dzIHlvdSB0byBtb3VudCBkZXZpY2VzIGZvcm1hdHRlZCB3aXRoIHRoZSBleEZBVCBmaWxlIHN5c3RlbS5cbiAgMTA6XHRcdCAgZXhGQVQgaXMgdHlwaWNhbGx5IHVzZWQgb24gU0QtQ2FyZHMgb3IgVVNCIHN0aWNrcy5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXG4gIDEzOlx0XHQgIGV4ZmF0LlxuICAxNDpcdFxuICAxNTpcdGNvbmZpZyBFWEZBVF9ERUZBVUxUX0lPQ0hBUlNFVFxuICAxNjpcdFx0c3RyaW5nIFwmIzM0O0RlZmF1bHQgaW9jaGFyc2V0IGZvciBleEZBVFwmIzM0O1xuICAxNzpcdFx0ZGVmYXVsdCBcJiMzNDt1dGY4XCYjMzQ7XG4gIDE4Olx0XHRkZXBlbmRzIG9uIEVYRkFUX0ZTXG4gIDE5Olx0XHRoZWxwXG4gIDIwOlx0XHQgIFNldCB0aGlzIHRvIHRoZSBkZWZhdWx0IGlucHV0L291dHB1dCBjaGFyYWN0ZXIgc2V0IHRvIHVzZSBmb3JcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTgzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHF1aWNrIHJ1bmRvd24gb2YgdGhlc2UgdGhvdWdodHM6CgoqKkZvY3Vzc2luZyBvbiBFWEZBVCBGdXp6aW5nIEVudHJ5cG9pbnRzKioKClJpZ2h0LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBgRVhGQVRfRlNgIGFzIHRoZSBjb3JlIGNvbmZpZyBmb3IgdGhpcy4gSXQgc2VlbXMgd2UmIzM5O3JlIGxvb2tpbmcgdG8gZnV6eiBzb21lIG1vZGlmaWVkIEVYRkFUIGxvZ2ljLiBMZXQmIzM5O3Mgc2VlLCBJIG5lZWQgdG8gdmVyaWZ5IHdoaWNoIHN5bWJvbHMgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gZnVuY3Rpb25zIHRoYXQgaW50ZXJhY3Qgd2l0aCBmaWxlIHN5c3RlbSBvcGVyYXRpb25zLiBBbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSBydW4gdGhyb3VnaCB0aGVtOiBgZXhmYXRfZmFsbG9jYXRlYCwgYGV4ZmF0X3NldGF0dHJgLCBgZXhmYXRfZmlsZV93cml0ZV9pdGVyYCwgYGV4ZmF0X3BhZ2VfbWt3cml0ZWAsIGBleGZhdF9jcmVhdGVgLCBgZXhmYXRfdW5saW5rYCwgYGV4ZmF0X21rZGlyYCwgYGV4ZmF0X3JtZGlyYCwgYGV4ZmF0X3JlbmFtZWAsIGFuZCBgZXhmYXRfcmVjb25maWd1cmVgLiBUaG9zZSBzZWVtIGxpa2Ugc29saWQgY2hvaWNlcywgaGl0dGluZyBhIGdvb2QgcmFuZ2Ugb2YgZmlsZSBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucy4gV2FpdCBhIHNlY29uZC4uLiBpc24mIzM5O3QgYGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcmAgZGVjbGFyZWQgYXMgc3RhdGljPyBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgaW4gYGZzL2V4ZmF0L2ZpbGUuY2AgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGltcG9ydGFudCBvciBwb3RlbnRpYWxseSBtaXNpbnRlcnByZXRpbmcgdGhlIHN5bWJvbCB2aXNpYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDEyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4ZmF0X2ZpbGVfd3JpdGVfaXRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4ZmF0L2ZpbGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGZhdC9maWxlLmM9NzEwPXN0YXRpYyBzc2l6ZV90IGV4ZmF0X2Rpb193cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYy03MzItXG5mcy9leGZhdC9maWxlLmM6NzMzOnN0YXRpYyBzc2l6ZV90IGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcilcbmZzL2V4ZmF0L2ZpbGUuYy03MzQte1xuLS1cbmZzL2V4ZmF0L2ZpbGUuYz05NjQ9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBleGZhdF9maWxlX29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvZXhmYXQvZmlsZS5jLTk2Ny1cdC5yZWFkX2l0ZXJcdD0gZXhmYXRfZmlsZV9yZWFkX2l0ZXIsXG5mcy9leGZhdC9maWxlLmM6OTY4Olx0LndyaXRlX2l0ZXJcdD0gZXhmYXRfZmlsZV93cml0ZV9pdGVyLFxuZnMvZXhmYXQvZmlsZS5jLTk2OS1cdC51bmxvY2tlZF9pb2N0bCA9IGV4ZmF0X2lvY3RsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NTIKCQkJCQkJCW91dHB1dDogNzgKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBUEkgRW50cnlwb2ludCoqCgpPa2F5LCBzbyB0aGUgY29kZSBpbiBxdWVzdGlvbiAqaXMqIHN0YXRpYywgSSBzZWUgdGhhdC4gSG93ZXZlciwgYW5kIHRoaXMgaXMga2V5LCBpdCYjMzk7cyBhY3RpbmcgYXMgYW4gQVBJIGVudHJ5cG9pbnQsIHNwZWNpZmljYWxseSBgZmlsZV9vcGVyYXRpb25zLndyaXRlX2l0ZXJgLiBUaGUgaW5zdHJ1Y3Rpb25zIHdlcmUgdmVyeSBjbGVhcjogd2Ugc2hvdWxkIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gVGhlIGdvb2QgbmV3cyBoZXJlIGlzIHRoYXQgc2luY2UgaXQmIzM5O3MgYXNzaWduZWQgdG8gYSBzdHJ1Y3Qgb2YgZnVuY3Rpb24gcG9pbnRlcnMsIGl0IHdvbiYjMzk7dCBiZSBpbmxpbmVkIGFuZCAqd2lsbCogaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBlZmZlY3RpdmVseSBuZWdhdGluZyB0aGUgZG93bnNpZGVzLgoKQnV0LCBhcyBhIG1hdHRlciBvZiBwcmluY2lwbGUsIGl0JiMzOTtzIHN0aWxsIGJlc3QgdG8gdXNlIGEgbm9uLXN0YXRpYyBvcHRpb24gaWYgcG9zc2libGUuIEluIHRoaXMgc3BlY2lmaWMgaW5zdGFuY2UsIGBleGZhdF9maWxlX3dyaXRlX2l0ZXJgIGlzIGFjY2VwdGFibGUgZ2l2ZW4gaXRzIGZ1bmN0aW9uIGFzIGFuIGVudHJ5cG9pbnQuCgpOb3csIGxldCYjMzk7cyBrZWVwIG1vdmluZy4gVGltZSB0byBjaGVjayB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb25zIHRvIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGhlIGNvZGluZyBzdHlsZSBndWlkZWxpbmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsoZXhmYXRfZmFsbG9jYXRlfGV4ZmF0X3NldGF0dHJ8ZXhmYXRfcGFnZV9ta3dyaXRlfGV4ZmF0X2NyZWF0ZXxleGZhdF91bmxpbmt8ZXhmYXRfbWtkaXJ8ZXhmYXRfcm1kaXJ8ZXhmYXRfcmVuYW1lfGV4ZmF0X3JlY29uZmlndXJlKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4ZmF0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGZhdC9leGZhdF9mcy5oPTU2OT1pbnQgX19leGZhdF90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTtcbmZzL2V4ZmF0L2V4ZmF0X2ZzLmg6NTcwOmludCBleGZhdF9zZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5mcy9leGZhdC9leGZhdF9mcy5oLTU3MS1cdFx0ICBzdHJ1Y3QgaWF0dHIgKmF0dHIpO1xuLS1cbmZzL2V4ZmF0L2V4ZmF0X2ZzLmg9Njc3PWludCBleGZhdF9ubHNfdG9fdXRmMTYoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leGZhdC9leGZhdF9mcy5oLTY3OS1cdFx0c3RydWN0IGV4ZmF0X3VuaV9uYW1lICp1bmluYW1lLCBpbnQgKnBfbG9zc3kpO1xuZnMvZXhmYXQvZXhmYXRfZnMuaDo2ODA6aW50IGV4ZmF0X2NyZWF0ZV91cGNhc2VfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XG5mcy9leGZhdC9leGZhdF9mcy5oLTY4MS12b2lkIGV4ZmF0X2ZyZWVfdXBjYXNlX3RhYmxlKHN0cnVjdCBleGZhdF9zYl9pbmZvICpzYmkpO1xuLS1cbmZzL2V4ZmF0L2ZpbGUuYz0yND1zdGF0aWMgaW50IGV4ZmF0X2NvbnRfZXhwYW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBzaXplKVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYy0xMTItICovXG5mcy9leGZhdC9maWxlLmM6MTEzOnN0YXRpYyBsb25nIGV4ZmF0X2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsXG5mcy9leGZhdC9maWxlLmMtMTE0LVx0XHRcdCAgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcbi0tXG5mcy9leGZhdC9maWxlLmM9MzM4PWludCBleGZhdF9maWxlYXR0cl9nZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG4tLVxuZnMvZXhmYXQvZmlsZS5jLTM0OS1cbmZzL2V4ZmF0L2ZpbGUuYzozNTA6aW50IGV4ZmF0X3NldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbmZzL2V4ZmF0L2ZpbGUuYy0zNTEtXHRcdCAgc3RydWN0IGlhdHRyICphdHRyKVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYz00NDc9c3RhdGljIGludCBleGZhdF9pb2N0bF9zZXRfYXR0cmlidXRlcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdTMyIF9fdXNlciAqdXNlcl9hdHRyKVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYy01MDQtXHQvKiBUaGlzIE1VU1QgYmUgZG9uZSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgaXJyZXZlcnNpYmxlLi4uICovXG5mcy9leGZhdC9maWxlLmM6NTA1Olx0ZXJyID0gZXhmYXRfc2V0YXR0cihmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5LCBcdTAwMjZpYSk7XG5mcy9leGZhdC9maWxlLmMtNTA2LVx0aWYgKGVycilcbi0tXG5mcy9leGZhdC9maWxlLmM9ODAzPXN0YXRpYyBzc2l6ZV90IGV4ZmF0X2ZpbGVfcmVhZF9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyKVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYy04MjUtXG5mcy9leGZhdC9maWxlLmM6ODI2OnN0YXRpYyB2bV9mYXVsdF90IGV4ZmF0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbmZzL2V4ZmF0L2ZpbGUuYy04Mjcte1xuLS1cbmZzL2V4ZmF0L2ZpbGUuYz04ODM9c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBleGZhdF9maWxlX3ZtX29wcyA9IHtcbi0tXG5mcy9leGZhdC9maWxlLmMtODg1LVx0Lm1hcF9wYWdlc1x0PSBmaWxlbWFwX21hcF9wYWdlcyxcbmZzL2V4ZmF0L2ZpbGUuYzo4ODY6XHQucGFnZV9ta3dyaXRlXHQ9IGV4ZmF0X3BhZ2VfbWt3cml0ZSxcbmZzL2V4ZmF0L2ZpbGUuYy04ODctfTtcbi0tXG5mcy9leGZhdC9maWxlLmM9OTY0PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXhmYXRfZmlsZV9vcGVyYXRpb25zID0ge1xuLS1cbmZzL2V4ZmF0L2ZpbGUuYy05NzYtXHQuc3BsaWNlX3dyaXRlXHQ9IGl0ZXJfZmlsZV9zcGxpY2Vfd3JpdGUsXG5mcy9leGZhdC9maWxlLmM6OTc3Olx0LmZhbGxvY2F0ZVx0PSBleGZhdF9mYWxsb2NhdGUsXG5mcy9leGZhdC9maWxlLmMtOTc4LVx0LnNldGxlYXNlXHQ9IGdlbmVyaWNfc2V0bGVhc2UsXG4tLVxuZnMvZXhmYXQvZmlsZS5jPTk4MT1jb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBleGZhdF9maWxlX2lub2RlX29wZXJhdGlvbnMgPSB7XG5mcy9leGZhdC9maWxlLmM6OTgyOlx0LnNldGF0dHJcdD0gZXhmYXRfc2V0YXR0cixcbmZzL2V4ZmF0L2ZpbGUuYy05ODMtXHQuZ2V0YXR0clx0PSBleGZhdF9nZXRhdHRyLFxuLS1cbmZzL2V4ZmF0L25hbWVpLmM9NDYyPXN0YXRpYyBpbnQgZXhmYXRfYWRkX2VudHJ5KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKnBhdGgsXG4tLVxuZnMvZXhmYXQvbmFtZWkuYy01MzktXG5mcy9leGZhdC9uYW1laS5jOjU0MDpzdGF0aWMgaW50IGV4ZmF0X2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpkaXIsXG5mcy9leGZhdC9uYW1laS5jLTU0MS1cdFx0XHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVtb2RlX3QgbW9kZSwgYm9vbCBleGNsKVxuLS1cbmZzL2V4ZmF0L25hbWVpLmM9NzExPXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpleGZhdF9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9leGZhdC9uYW1laS5jLTc2Mi0vKiByZW1vdmUgYW4gZW50cnksIEJVVCBkb24mIzM5O3QgdHJ1bmNhdGUgKi9cbmZzL2V4ZmF0L25hbWVpLmM6NzYzOnN0YXRpYyBpbnQgZXhmYXRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG5mcy9leGZhdC9uYW1laS5jLTc2NC17XG4tLVxuZnMvZXhmYXQvbmFtZWkuYy04MTQtXG5mcy9leGZhdC9uYW1laS5jOjgxNTpzdGF0aWMgc3RydWN0IGRlbnRyeSAqZXhmYXRfbWtkaXIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxuZnMvZXhmYXQvbmFtZWkuYy04MTYtXHRcdFx0XHQgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlKVxuLS1cbmZzL2V4ZmF0L25hbWVpLmM9ODYyPXN0YXRpYyBpbnQgZXhmYXRfY2hlY2tfZGlyX2VtcHR5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXhmYXQvbmFtZWkuYy05MDYtXG5mcy9leGZhdC9uYW1laS5jOjkwNzpzdGF0aWMgaW50IGV4ZmF0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG5mcy9leGZhdC9uYW1laS5jLTkwOC17XG4tLVxuZnMvZXhmYXQvbmFtZWkuYz05Nzk9c3RhdGljIGludCBleGZhdF9jb3VudF9leHRyYV9lbnRyaWVzKHN0cnVjdCBleGZhdF9lbnRyeV9zZXRfY2FjaGUgKmVzKVxuLS1cbmZzL2V4ZmF0L25hbWVpLmMtOTkxLVxuZnMvZXhmYXQvbmFtZWkuYzo5OTI6c3RhdGljIGludCBleGZhdF9yZW5hbWVfZmlsZShzdHJ1Y3QgaW5vZGUgKnBhcmVudF9pbm9kZSxcbmZzL2V4ZmF0L25hbWVpLmMtOTkzLVx0XHRzdHJ1Y3QgZXhmYXRfdW5pX25hbWUgKnBfdW5pbmFtZSwgc3RydWN0IGV4ZmF0X2lub2RlX2luZm8gKmVpKVxuLS1cbmZzL2V4ZmF0L25hbWVpLmM9MTA3NT1zdGF0aWMgaW50IGV4ZmF0X21vdmVfZmlsZShzdHJ1Y3QgaW5vZGUgKnBhcmVudF9pbm9kZSxcbi0tXG5mcy9leGZhdC9uYW1laS5jLTExNDUtLyogcmVuYW1lIG9yIG1vdmUgYSBvbGQgZmlsZSBpbnRvIGEgbmV3IGZpbGUgKi9cbmZzL2V4ZmF0L25hbWVpLmM6MTE0NjpzdGF0aWMgaW50IF9fZXhmYXRfcmVuYW1lKHN0cnVjdCBpbm9kZSAqb2xkX3BhcmVudF9pbm9kZSxcbmZzL2V4ZmF0L25hbWVpLmMtMTE0Ny1cdFx0c3RydWN0IGV4ZmF0X2lub2RlX2luZm8gKmVpLCBzdHJ1Y3QgaW5vZGUgKm5ld19wYXJlbnRfaW5vZGUsXG4tLVxuZnMvZXhmYXQvbmFtZWkuYy0xMjAwLVx0aWYgKG5ld19wYXJlbnRfaW5vZGUgPT0gb2xkX3BhcmVudF9pbm9kZSlcbmZzL2V4ZmF0L25hbWVpLmM6MTIwMTpcdFx0cmV0ID0gZXhmYXRfcmVuYW1lX2ZpbGUobmV3X3BhcmVudF9pbm9kZSwgXHUwMDI2dW5pX25hbWUsIGVpKTtcbmZzL2V4ZmF0L25hbWVpLmMtMTIwMi1cdGVsc2Vcbi0tXG5mcy9leGZhdC9uYW1laS5jLTEyMjAtXG5mcy9leGZhdC9uYW1laS5jOjEyMjE6XHRcdC8qIEZyZWUgdGhlIGNsdXN0ZXJzIGlmIG5ld19pbm9kZSBpcyBhIGRpcihhcyBpZiBleGZhdF9ybWRpcikgKi9cbmZzL2V4ZmF0L25hbWVpLmMtMTIyMi1cdFx0aWYgKFNfSVNESVIobmV3X2lub2RlLVx1MDAzZWlfbW9kZSkgXHUwMDI2XHUwMDI2XG4tLVxuZnMvZXhmYXQvbmFtZWkuYy0xMjUxLVxuZnMvZXhmYXQvbmFtZWkuYzoxMjUyOnN0YXRpYyBpbnQgZXhmYXRfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxuZnMvZXhmYXQvbmFtZWkuYy0xMjUzLVx0XHRcdHN0cnVjdCBpbm9kZSAqb2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSxcbi0tXG5mcy9leGZhdC9uYW1laS5jLTEyNzgtXG5mcy9leGZhdC9uYW1laS5jOjEyNzk6XHRlcnIgPSBfX2V4ZmF0X3JlbmFtZShvbGRfZGlyLCBFWEZBVF9JKG9sZF9pbm9kZSksIG5ld19kaXIsIG5ld19kZW50cnkpO1xuZnMvZXhmYXQvbmFtZWkuYy0xMjgwLVx0aWYgKGVycilcbi0tXG5mcy9leGZhdC9uYW1laS5jPTEzMzE9Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgZXhmYXRfZGlyX2lub2RlX29wZXJhdGlvbnMgPSB7XG5mcy9leGZhdC9uYW1laS5jOjEzMzI6XHQuY3JlYXRlXHRcdD0gZXhmYXRfY3JlYXRlLFxuZnMvZXhmYXQvbmFtZWkuYy0xMzMzLVx0Lmxvb2t1cFx0XHQ9IGV4ZmF0X2xvb2t1cCxcbmZzL2V4ZmF0L25hbWVpLmM6MTMzNDpcdC51bmxpbmtcdFx0PSBleGZhdF91bmxpbmssXG5mcy9leGZhdC9uYW1laS5jOjEzMzU6XHQubWtkaXJcdFx0PSBleGZhdF9ta2RpcixcbmZzL2V4ZmF0L25hbWVpLmM6MTMzNjpcdC5ybWRpclx0XHQ9IGV4ZmF0X3JtZGlyLFxuZnMvZXhmYXQvbmFtZWkuYzoxMzM3Olx0LnJlbmFtZVx0XHQ9IGV4ZmF0X3JlbmFtZSxcbmZzL2V4ZmF0L25hbWVpLmM6MTMzODpcdC5zZXRhdHRyXHQ9IGV4ZmF0X3NldGF0dHIsXG5mcy9leGZhdC9uYW1laS5jLTEzMzktXHQuZ2V0YXR0clx0PSBleGZhdF9nZXRhdHRyLFxuLS1cbmZzL2V4ZmF0L25scy5jPTcwMj1zdGF0aWMgaW50IGV4ZmF0X2xvYWRfZGVmYXVsdF91cGNhc2VfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leGZhdC9ubHMuYy03MzctXG5mcy9leGZhdC9ubHMuYzo3Mzg6aW50IGV4ZmF0X2NyZWF0ZV91cGNhc2VfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmZzL2V4ZmF0L25scy5jLTczOS17XG4tLVxuZnMvZXhmYXQvc3VwZXIuYz01OTY9c3RhdGljIGludCBfX2V4ZmF0X2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leGZhdC9zdXBlci5jLTYyNS1cbmZzL2V4ZmF0L3N1cGVyLmM6NjI2Olx0cmV0ID0gZXhmYXRfY3JlYXRlX3VwY2FzZV90YWJsZShzYik7XG5mcy9leGZhdC9zdXBlci5jLTYyNy1cdGlmIChyZXQpIHtcbi0tXG5mcy9leGZhdC9zdXBlci5jPTc2MD1zdGF0aWMgdm9pZCBleGZhdF9mcmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5mcy9leGZhdC9zdXBlci5jLTc2Ny1cbmZzL2V4ZmF0L3N1cGVyLmM6NzY4OnN0YXRpYyBpbnQgZXhmYXRfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuZnMvZXhmYXQvc3VwZXIuYy03Njkte1xuLS1cbmZzL2V4ZmF0L3N1cGVyLmM9ODE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfY29udGV4dF9vcGVyYXRpb25zIGV4ZmF0X2NvbnRleHRfb3BzID0ge1xuLS1cbmZzL2V4ZmF0L3N1cGVyLmMtODE5LVx0LmZyZWVcdFx0PSBleGZhdF9mcmVlLFxuZnMvZXhmYXQvc3VwZXIuYzo4MjA6XHQucmVjb25maWd1cmVcdD0gZXhmYXRfcmVjb25maWd1cmUsXG5mcy9leGZhdC9zdXBlci5jLTgyMS19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTYyCgkJCQkJCQlvdXRwdXQ6IDIxNAoJCQkJCQkJdGhvdWdodHM6IDQ3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgZXhGQVQgRmlsZXN5c3RlbSBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSYjMzk7bSBzZWVpbmcsIHRoaXMgcGF0Y2ggaXMgcHJpbWFyaWx5IHRvdWNoaW5nIEFQSSBlbnRyeXBvaW50cyB3aXRoaW4gdGhlIGV4RkFUIGZpbGVzeXN0ZW0sIHNwZWNpZmljYWxseSBgaW5vZGVfb3BlcmF0aW9uc2AsIGBmaWxlX29wZXJhdGlvbnNgLCBgdm1fb3BlcmF0aW9uc19zdHJ1Y3RgLCBhbmQgYGZzX2NvbnRleHRfb3BlcmF0aW9uc2AuIFRoZSBjcml0aWNhbCBzeW1ib2xzIHRvIGhvbmUgaW4gb24gYXJlOiBgZXhmYXRfZmFsbG9jYXRlYCwgYGV4ZmF0X3NldGF0dHJgLCBgZXhmYXRfZmlsZV93cml0ZV9pdGVyYCwgYGV4ZmF0X3BhZ2VfbWt3cml0ZWAsIGBleGZhdF9jcmVhdGVgLCBgZXhmYXRfdW5saW5rYCwgYGV4ZmF0X21rZGlyYCwgYGV4ZmF0X3JtZGlyYCwgYGV4ZmF0X3JlbmFtZWAsIGFuZCBgZXhmYXRfcmVjb25maWd1cmVgLiBUaG9zZSBhcmUgb3VyIGZvY3VzLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIHdlIG5lZWQgdG8gY29uc2lkZXIgYmV5b25kIGp1c3QgdGhlIGNvcmUgYEVYRkFUX0ZTYCBzZXR0aW5nLiBBIHF1aWNrIGNoZWNrIHJldmVhbHMgdGhhdCBgRVhGQVRfRlNgIGlzIHRoZSBvbmx5IG9uZS4gVGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2UgbGllcyBpbiBhbHRlcmluZyBob3cgZXhGQVQgaGFuZGxlcyBlcnJvcnMgYW5kIHJlYWQtb25seSBzdGF0ZXMuIFRoZSBwYXRjaCByZXBsYWNlcyBkaXJlY3QgbWFuaXB1bGF0aW9uIG9mIGBzYi0mZ3Q7c19mbGFncyB8PSBTQl9SRE9OTFlgIHdpdGggYW4gaW50ZXJuYWwgZmxhZywgYEVYRkFUX0ZMQUdTX0VSUk9SX1JPYCwgd2hpY2ggaXMgdGhlbiBjaGVja2VkIGFjcm9zcyBhbGwgd3JpdGUgcGF0aHMuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiB0aGUgZmlsZXN5c3RlbSYjMzk7cyBlcnJvciBoYW5kbGluZyBhbmQgd3JpdGUgYmVoYXZpb3IsIHdoaWNoIGlzIHByZWNpc2VseSB0aGUga2luZCBvZiB0aGluZyB0aGF0ICpuZWVkcyogZnV6emluZy4KCkxldCYjMzk7cyBkbyBhIGRvdWJsZSBjaGVjayBvbiBkZXBlbmRlbmNpZXMuIEl0IGFwcGVhcnMgYEVYRkFUX0ZTYCBkb2VzbiYjMzk7dCBkZXBlbmQgb24gYW55dGhpbmcgZWxzZSwgaXQganVzdCBzZWxlY3RzIGBCVUZGRVJfSEVBRGAsIGBOTFNgLCBhbmQgYEZTX0lPTUFQYC4gUGVyZmVjdC4gU28gZW5hYmxpbmcgYEVYRkFUX0ZTYCBpcyBzdWZmaWNpZW50IHRvIGVuYWJsZSB0aGVzZSBjaGFuZ2VzLCBhbmQgd2UgYXJlIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4KCk5vdywgbGV0JiMzOTtzIGNvbnNvbGlkYXRlIHRoaXMgaW50byBhIGNsZWFyLCBjb25jaXNlIHJlc3BvbnNlLgoKKipGb2N1cyBTeW1ib2xzOioqCgoqICAgYGV4ZmF0X2ZhbGxvY2F0ZWAKKiAgIGBleGZhdF9zZXRhdHRyYAoqICAgYGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcmAKKiAgIGBleGZhdF9wYWdlX21rd3JpdGVgCiogICBgZXhmYXRfY3JlYXRlYAoqICAgYGV4ZmF0X3VubGlua2AKKiAgIGBleGZhdF9ta2RpcmAKKiAgIGBleGZhdF9ybWRpcmAKKiAgIGBleGZhdF9yZW5hbWVgCiogICBgZXhmYXRfcmVjb25maWd1cmVgCgoqKkVuYWJsZSBDb25maWdzOioqCgoqICAgYEVYRkFUX0ZTYAoKKipSZWFzb25pbmc6KioKClRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBleEZBVCYjMzk7cyBlcnJvciBoYW5kbGluZyB3aGVuIG1vdW50ZWQgd2l0aCBgZXJyb3JzPXJlbW91bnQtcm9gLiBJbnN0ZWFkIG9mIGRpcmVjdGx5IG1vZGlmeWluZyB0aGUgVkZTLWxldmVsIGBzYi0mZ3Q7c19mbGFnc2AsIGl0IG5vdyB1c2VzIGFuIGludGVybmFsIGZsYWcsIGBFWEZBVF9GTEFHU19FUlJPUl9ST2AuIFRoaXMgbmV3IGZsYWcgaXMgdGhlbiBjaGVja2VkIHdpdGhpbiBhbGwgd3JpdGUgb3BlcmF0aW9ucy4gVGhpcyByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBmaWxlc3lzdGVtIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaG93IHdyaXRlIG9wZXJhdGlvbnMgYXJlIGhhbmRsZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBlbmNvdW50ZXJzIGFuIGVycm9yLiBDb25zZXF1ZW50bHksIHdlIG11c3QgZnV6eiB0aGlzIHRvIGVuc3VyZSBwcm9wZXIgd3JpdGUgb3BlcmF0aW9uIGFib3J0aW5nIGluIGVycm9yIHN0YXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYRkFUX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXhmYXRfZmFsbG9jYXRlJiMzNDssCiAgICAmIzM0O2V4ZmF0X3NldGF0dHImIzM0OywKICAgICYjMzQ7ZXhmYXRfZmlsZV93cml0ZV9pdGVyJiMzNDssCiAgICAmIzM0O2V4ZmF0X3BhZ2VfbWt3cml0ZSYjMzQ7LAogICAgJiMzNDtleGZhdF9jcmVhdGUmIzM0OywKICAgICYjMzQ7ZXhmYXRfdW5saW5rJiMzNDssCiAgICAmIzM0O2V4ZmF0X21rZGlyJiMzNDssCiAgICAmIzM0O2V4ZmF0X3JtZGlyJiMzNDssCiAgICAmIzM0O2V4ZmF0X3JlbmFtZSYjMzQ7LAogICAgJiMzNDtleGZhdF9yZWNvbmZpZ3VyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGhvdyB0aGUgZXhGQVQgZmlsZXN5c3RlbSBoYW5kbGVzIGVycm9ycyB3aGVuIG1vdW50ZWQgd2l0aCBgZXJyb3JzPXJlbW91bnQtcm9gLiBJbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgVkZTLWxldmVsIGBzYi1cdTAwM2VzX2ZsYWdzYCBkaXJlY3RseSAod2hpY2ggY2FuIGNhdXNlIGxvY2tpbmcgaXNzdWVzKSwgaXQgaW50cm9kdWNlcyBhbiBpbnRlcm5hbCBmbGFnIGBFWEZBVF9GTEFHU19FUlJPUl9ST2AgYW5kIGNoZWNrcyBpdCBpbiBhbGwgd3JpdGUgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB3cml0ZSBvcGVyYXRpb25zIGNvcnJlY3RseSBhYm9ydCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIGluIGFuIGVycm9yIHN0YXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWEZBVF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4ZmF0X2ZhbGxvY2F0ZSYjMzQ7LAogICAgJiMzNDtleGZhdF9zZXRhdHRyJiMzNDssCiAgICAmIzM0O2V4ZmF0X2ZpbGVfd3JpdGVfaXRlciYjMzQ7LAogICAgJiMzNDtleGZhdF9wYWdlX21rd3JpdGUmIzM0OywKICAgICYjMzQ7ZXhmYXRfY3JlYXRlJiMzNDssCiAgICAmIzM0O2V4ZmF0X3VubGluayYjMzQ7LAogICAgJiMzNDtleGZhdF9ta2RpciYjMzQ7LAogICAgJiMzNDtleGZhdF9ybWRpciYjMzQ7LAogICAgJiMzNDtleGZhdF9yZW5hbWUmIzM0OywKICAgICYjMzQ7ZXhmYXRfcmVjb25maWd1cmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBob3cgdGhlIGV4RkFUIGZpbGVzeXN0ZW0gaGFuZGxlcyBlcnJvcnMgd2hlbiBtb3VudGVkIHdpdGggYGVycm9ycz1yZW1vdW50LXJvYC4gSW5zdGVhZCBvZiBtb2RpZnlpbmcgdGhlIFZGUy1sZXZlbCBgc2ItXHUwMDNlc19mbGFnc2AgZGlyZWN0bHkgKHdoaWNoIGNhbiBjYXVzZSBsb2NraW5nIGlzc3VlcyksIGl0IGludHJvZHVjZXMgYW4gaW50ZXJuYWwgZmxhZyBgRVhGQVRfRkxBR1NfRVJST1JfUk9gIGFuZCBjaGVja3MgaXQgaW4gYWxsIHdyaXRlIHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgd3JpdGUgb3BlcmF0aW9ucyBjb3JyZWN0bHkgYWJvcnQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyBpbiBhbiBlcnJvciBzdGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDEyOjUzOjU5Ljg3NDY1Mjg1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTQzNTg4MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYRkFUX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXhmYXRfZmFsbG9jYXRlXCIsXG4gICAgXCJleGZhdF9zZXRhdHRyXCIsXG4gICAgXCJleGZhdF9maWxlX3dyaXRlX2l0ZXJcIixcbiAgICBcImV4ZmF0X3BhZ2VfbWt3cml0ZVwiLFxuICAgIFwiZXhmYXRfY3JlYXRlXCIsXG4gICAgXCJleGZhdF91bmxpbmtcIixcbiAgICBcImV4ZmF0X21rZGlyXCIsXG4gICAgXCJleGZhdF9ybWRpclwiLFxuICAgIFwiZXhmYXRfcmVuYW1lXCIsXG4gICAgXCJleGZhdF9yZWNvbmZpZ3VyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgaG93IHRoZSBleEZBVCBmaWxlc3lzdGVtIGhhbmRsZXMgZXJyb3JzIHdoZW4gbW91bnRlZCB3aXRoIGBlcnJvcnM9cmVtb3VudC1yb2AuIEluc3RlYWQgb2YgbW9kaWZ5aW5nIHRoZSBWRlMtbGV2ZWwgYHNiLVxcdTAwM2VzX2ZsYWdzYCBkaXJlY3RseSAod2hpY2ggY2FuIGNhdXNlIGxvY2tpbmcgaXNzdWVzKSwgaXQgaW50cm9kdWNlcyBhbiBpbnRlcm5hbCBmbGFnIGBFWEZBVF9GTEFHU19FUlJPUl9ST2AgYW5kIGNoZWNrcyBpdCBpbiBhbGwgd3JpdGUgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB3cml0ZSBvcGVyYXRpb25zIGNvcnJlY3RseSBhYm9ydCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIGluIGFuIGVycm9yIHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1Mzo1OS44NzQ2NjAwNDJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDM0MzE3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGUwMTRhMTNiNWQ1OTVlMTc1MTQ5YzkxYTM3MWU2Nzc0ZjYwZTc1YzZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAxMjo1Mzo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leGZhdC9leGZhdF9mcy5oIGIvZnMvZXhmYXQvZXhmYXRfZnMuaFxcbmluZGV4IDliZTUwOTQ5Y2UzNGYuLjUwODQ2NjMwZTFmM2UgMTAwNjQ0XFxuLS0tIGEvZnMvZXhmYXQvZXhmYXRfZnMuaFxcbisrKyBiL2ZzL2V4ZmF0L2V4ZmF0X2ZzLmhcXG5AQCAtMTIyLDYgKzEyMiw3IEBAIGVudW0ge1xcbiBcXG4gLyogU3VwZXJibG9jayBmbGFncyAqL1xcbiAjZGVmaW5lIEVYRkFUX0ZMQUdTX1NIVVRET1dOXFx0MVxcbisjZGVmaW5lIEVYRkFUX0ZMQUdTX0VSUk9SX1JPXFx0MlxcbiBcXG4gc3RydWN0IGV4ZmF0X2RlbnRyeV9uYW1lYnVmIHtcXG4gXFx0Y2hhciAqbGZuO1xcbkBAIC0zMjAsNiArMzIxLDE1IEBAIHN0YXRpYyBpbmxpbmUgaW50IGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbiBcXHRyZXR1cm4gdGVzdF9iaXQoRVhGQVRfRkxBR1NfU0hVVERPV04sIFxcdTAwMjZFWEZBVF9TQihzYiktXFx1MDAzZXNfZXhmYXRfZmxhZ3MpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIGludCBleGZhdF9jaGVja193cml0YWJsZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbit7XFxuK1xcdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oc2IpKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChFWEZBVF9GTEFHU19FUlJPUl9STywgXFx1MDAyNkVYRkFUX1NCKHNiKS1cXHUwMDNlc19leGZhdF9mbGFncykpKVxcbitcXHRcXHRyZXR1cm4gLUVST0ZTO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gLypcXG4gICogSWYgLVxcdTAwM2VpX21vZGUgY2FuJ3QgaG9sZCAwMjIyIChpLmUuIEFUVFJfUk8pLCB3ZSB1c2UgLVxcdTAwM2VpX2F0dHJzIHRvXFxuICAqIHNhdmUgQVRUUl9STyBpbnN0ZWFkIG9mIC1cXHUwMDNlaV9tb2RlLlxcbmRpZmYgLS1naXQgYS9mcy9leGZhdC9maWxlLmMgYi9mcy9leGZhdC9maWxlLmNcXG5pbmRleCA1ZmMxMzM3OGQzNWY3Li5iNmFmZWVkZTI0OTA0IDEwMDY0NFxcbi0tLSBhL2ZzL2V4ZmF0L2ZpbGUuY1xcbisrKyBiL2ZzL2V4ZmF0L2ZpbGUuY1xcbkBAIC0xMjUsOCArMTI1LDkgQEAgc3RhdGljIGxvbmcgZXhmYXRfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSxcXG4gXFx0aWYgKCFTX0lTUkVHKGlub2RlLVxcdTAwM2VpX21vZGUpKVxcbiBcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKGlub2RlLVxcdTAwM2VpX3NiKSkpXFxuLVxcdFxcdHJldHVybiAtRUlPO1xcbitcXHRlcnIgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS1cXHUwMDNlaV9zYik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuIFxcbiBcXHRpbm9kZV9sb2NrKGlub2RlKTtcXG4gXFxuQEAgLTM1NCw4ICszNTUsOSBAQCBpbnQgZXhmYXRfc2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbiBcXHR1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7XFxuIFxcdGludCBlcnJvcjtcXG4gXFxuLVxcdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oaW5vZGUtXFx1MDAzZWlfc2IpKSlcXG4tXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdGVycm9yID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoaW5vZGUtXFx1MDAzZWlfc2IpO1xcbitcXHRpZiAoZXJyb3IpXFxuK1xcdFxcdHJldHVybiBlcnJvcjtcXG4gXFxuIFxcdGlmICgoYXR0ci1cXHUwMDNlaWFfdmFsaWQgXFx1MDAyNiBBVFRSX1NJWkUpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBhdHRyLVxcdTAwM2VpYV9zaXplIFxcdTAwM2UgaV9zaXplX3JlYWQoaW5vZGUpKSB7XFxuQEAgLTczOCw4ICs3NDAsOSBAQCBzdGF0aWMgc3NpemVfdCBleGZhdF9maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXFxuIFxcdGxvZmZfdCB2YWxpZF9zaXplO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihpbm9kZS1cXHUwMDNlaV9zYikpKVxcbi1cXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0cmV0ID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoaW5vZGUtXFx1MDAzZWlfc2IpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuIFxcdGlub2RlX2xvY2soaW5vZGUpO1xcbiBcXG5AQCAtODI2LDYgKzgyOSwxMSBAQCBzdGF0aWMgdm1fZmF1bHRfdCBleGZhdF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuIFxcdHN0cnVjdCBleGZhdF9pbm9kZV9pbmZvICplaSA9IEVYRkFUX0koaW5vZGUpO1xcbiBcXHR2bV9mYXVsdF90IHJldDtcXG4gXFx0bG9mZl90IG5ld192YWxpZF9zaXplLCBtbWFwX3ZhbGlkX3NpemU7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS1cXHUwMDNlaV9zYik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiB2bWZfZnNfZXJyb3IoZXJyKTtcXG4gXFxuIFxcdGlmICghaW5vZGVfdHJ5bG9jayhpbm9kZSkpXFxuIFxcdFxcdHJldHVybiBWTV9GQVVMVF9SRVRSWTtcXG5AQCAtODM1LDggKzg0Myw2IEBAIHN0YXRpYyB2bV9mYXVsdF90IGV4ZmF0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4gXFxuIFxcdGlmIChlaS1cXHUwMDNldmFsaWRfc2l6ZSBcXHUwMDNjIG5ld192YWxpZF9zaXplKSB7XFxuIFxcdFxcdGlmIChlaS1cXHUwMDNlemVyb2VkX3NpemUgXFx1MDAzYyBtbWFwX3ZhbGlkX3NpemUpIHtcXG4tXFx0XFx0XFx0aW50IGVycjtcXG4tXFxuIFxcdFxcdFxcdC8qXFxuIFxcdFxcdFxcdCAqIE9ubHkgemVybyB0aGUgcmFuZ2UgdGhhdCBoYXNuJ3QgYmVlbiB6ZXJvZWQgeWV0IGZvclxcbiBcXHRcXHRcXHQgKiB0aGlzIG1tYXAgd3JpdGUgcGF0aC4gemVyb2VkX3NpemUgdHJhY2tzIHRoZSBsYXJnZXN0XFxuZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L21pc2MuYyBiL2ZzL2V4ZmF0L21pc2MuY1xcbmluZGV4IDZmMTFhOTZhNGZmYTguLmFiODc1NDczZjkzYWUgMTAwNjQ0XFxuLS0tIGEvZnMvZXhmYXQvbWlzYy5jXFxuKysrIGIvZnMvZXhmYXQvbWlzYy5jXFxuQEAgLTQxLDggKzQxLDggQEAgdm9pZCBfX2V4ZmF0X2ZzX2Vycm9yKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCByZXBvcnQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxcbiBcXHRcXHRwYW5pYyhcXFwiZXhGQVQtZnMgKCVzKTogZnMgcGFuaWMgZnJvbSBwcmV2aW91cyBlcnJvclxcXFxuXFxcIixcXG4gXFx0XFx0XFx0c2ItXFx1MDAzZXNfaWQpO1xcbiBcXHR9IGVsc2UgaWYgKG9wdHMtXFx1MDAzZWVycm9ycyA9PSBFWEZBVF9FUlJPUlNfUk8gXFx1MDAyNlxcdTAwMjYgIXNiX3Jkb25seShzYikpIHtcXG4tXFx0XFx0c2ItXFx1MDAzZXNfZmxhZ3MgfD0gU0JfUkRPTkxZO1xcbi1cXHRcXHRleGZhdF9lcnIoc2IsIFxcXCJGaWxlc3lzdGVtIGhhcyBiZWVuIHNldCByZWFkLW9ubHlcXFwiKTtcXG4rXFx0XFx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0KEVYRkFUX0ZMQUdTX0VSUk9SX1JPLCBcXHUwMDI2RVhGQVRfU0Ioc2IpLVxcdTAwM2VzX2V4ZmF0X2ZsYWdzKSlcXG4rXFx0XFx0XFx0ZXhmYXRfZXJyKHNiLCBcXFwiRmlsZXN5c3RlbSBoYXMgYmVlbiBzZXQgcmVhZC1vbmx5XFxcIik7XFxuIFxcdH1cXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZnMvZXhmYXQvbmFtZWkuYyBiL2ZzL2V4ZmF0L25hbWVpLmNcXG5pbmRleCBiN2Q1ZTQ0YWQzOGVlLi5mMDgxNzBkZTYzYjMwIDEwMDY0NFxcbi0tLSBhL2ZzL2V4ZmF0L25hbWVpLmNcXG4rKysgYi9mcy9leGZhdC9uYW1laS5jXFxuQEAgLTU0Nyw4ICs1NDcsOSBAQCBzdGF0aWMgaW50IGV4ZmF0X2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpkaXIsXFxuIFxcdGludCBlcnI7XFxuIFxcdGxvZmZfdCBzaXplID0gaV9zaXplX3JlYWQoZGlyKTtcXG4gXFxuLVxcdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oc2IpKSlcXG4tXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNkVYRkFUX1NCKHNiKS1cXHUwMDNlc19sb2NrKTtcXG4gXFx0ZXhmYXRfc2V0X3ZvbHVtZV9kaXJ0eShzYik7XFxuQEAgLTc2NSwxMCArNzY2LDExIEBAIHN0YXRpYyBpbnQgZXhmYXRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuIFxcdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktXFx1MDAzZWRfaW5vZGU7XFxuIFxcdHN0cnVjdCBleGZhdF9pbm9kZV9pbmZvICplaSA9IEVYRkFUX0koaW5vZGUpO1xcbiBcXHRzdHJ1Y3QgZXhmYXRfZW50cnlfc2V0X2NhY2hlIGVzO1xcbi1cXHRpbnQgZXJyID0gMDtcXG4rXFx0aW50IGVycjtcXG4gXFxuLVxcdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oc2IpKSlcXG4tXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNkVYRkFUX1NCKHNiKS1cXHUwMDNlc19sb2NrKTtcXG4gXFx0aWYgKGVpLVxcdTAwM2VkaXIuZGlyID09IERJUl9ERUxFVEVEKSB7XFxuQEAgLTgyMCw4ICs4MjIsOSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqZXhmYXRfbWtkaXIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxcbiBcXHRpbnQgZXJyO1xcbiBcXHRsb2ZmX3Qgc2l6ZSA9IGlfc2l6ZV9yZWFkKGRpcik7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXFxuLVxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xcbitcXHRlcnIgPSBleGZhdF9jaGVja193cml0YWJsZShzYik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZFWEZBVF9TQihzYiktXFx1MDAzZXNfbG9jayk7XFxuIFxcdGV4ZmF0X3NldF92b2x1bWVfZGlydHkoc2IpO1xcbkBAIC05MTEsOCArOTE0LDkgQEAgc3RhdGljIGludCBleGZhdF9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbiBcXHRzdHJ1Y3QgZXhmYXRfZW50cnlfc2V0X2NhY2hlIGVzO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKVxcbi1cXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2RVhGQVRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX2xvY2spO1xcbiBcXG5AQCAtOTk1LDkgKzk5OSw2IEBAIHN0YXRpYyBpbnQgZXhmYXRfcmVuYW1lX2ZpbGUoc3RydWN0IGlub2RlICpwYXJlbnRfaW5vZGUsXFxuIFxcdGludCBzeW5jID0gSVNfRElSU1lOQyhwYXJlbnRfaW5vZGUpO1xcbiBcXHR1bnNpZ25lZCBpbnQgbnVtX2V4dHJhX2VudHJpZXMsIG51bV90b3RhbF9lbnRyaWVzO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKVxcbi1cXHRcXHRyZXR1cm4gLUVJTztcXG4tXFxuIFxcdG51bV9uZXdfZW50cmllcyA9IGV4ZmF0X2NhbGNfbnVtX2VudHJpZXMocF91bmluYW1lKTtcXG4gXFx0aWYgKG51bV9uZXdfZW50cmllcyBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBudW1fbmV3X2VudHJpZXM7XFxuQEAgLTEyNjcsNiArMTI2OCwxMCBAQCBzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcXG4gXFx0aWYgKGZsYWdzIFxcdTAwMjYgflJFTkFNRV9OT1JFUExBQ0UpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4rXFx0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2RVhGQVRfU0Ioc2IpLVxcdTAwM2VzX2xvY2spO1xcbiBcXHRvbGRfaW5vZGUgPSBvbGRfZGVudHJ5LVxcdTAwM2VkX2lub2RlO1xcbiBcXHRuZXdfaW5vZGUgPSBuZXdfZGVudHJ5LVxcdTAwM2VkX2lub2RlO1xcbmRpZmYgLS1naXQgYS9mcy9leGZhdC9zdXBlci5jIGIvZnMvZXhmYXQvc3VwZXIuY1xcbmluZGV4IDM4OGRiMjcxYzZiZjUuLmRjYjZlMTVlNGQ3ZDQgMTAwNjQ0XFxuLS0tIGEvZnMvZXhmYXQvc3VwZXIuY1xcbisrKyBiL2ZzL2V4ZmF0L3N1cGVyLmNcXG5AQCAtODA3LDYgKzgwNyw5IEBAIHN0YXRpYyBpbnQgZXhmYXRfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbiBcXG4gXFx0c3dhcCgqY3VyX29wdHMsICpuZXdfb3B0cyk7XFxuIFxcbitcXHRpZiAoIShmYy1cXHUwMDNlc2JfZmxhZ3MgXFx1MDAyNiBTQl9SRE9OTFkpKVxcbitcXHRcXHRjbGVhcl9iaXQoRVhGQVRfRkxBR1NfRVJST1JfUk8sIFxcdTAwMjZzYmktXFx1MDAzZXNfZXhmYXRfZmxhZ3MpO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDEyOjU0OjAwLjMzOTY2NTcxOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMyMDc4NTY3MjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYRkFUX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXhmYXRfZmFsbG9jYXRlXCIsXG4gICAgXCJleGZhdF9zZXRhdHRyXCIsXG4gICAgXCJleGZhdF9maWxlX3dyaXRlX2l0ZXJcIixcbiAgICBcImV4ZmF0X3BhZ2VfbWt3cml0ZVwiLFxuICAgIFwiZXhmYXRfY3JlYXRlXCIsXG4gICAgXCJleGZhdF91bmxpbmtcIixcbiAgICBcImV4ZmF0X21rZGlyXCIsXG4gICAgXCJleGZhdF9ybWRpclwiLFxuICAgIFwiZXhmYXRfcmVuYW1lXCIsXG4gICAgXCJleGZhdF9yZWNvbmZpZ3VyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgaG93IHRoZSBleEZBVCBmaWxlc3lzdGVtIGhhbmRsZXMgZXJyb3JzIHdoZW4gbW91bnRlZCB3aXRoIGBlcnJvcnM9cmVtb3VudC1yb2AuIEluc3RlYWQgb2YgbW9kaWZ5aW5nIHRoZSBWRlMtbGV2ZWwgYHNiLVxcdTAwM2VzX2ZsYWdzYCBkaXJlY3RseSAod2hpY2ggY2FuIGNhdXNlIGxvY2tpbmcgaXNzdWVzKSwgaXQgaW50cm9kdWNlcyBhbiBpbnRlcm5hbCBmbGFnIGBFWEZBVF9GTEFHU19FUlJPUl9ST2AgYW5kIGNoZWNrcyBpdCBpbiBhbGwgd3JpdGUgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB3cml0ZSBvcGVyYXRpb25zIGNvcnJlY3RseSBhYm9ydCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIGluIGFuIGVycm9yIHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMDE0YTEzYjVkNTk1ZTE3NTE0OWM5MWEzNzFlNjc3NGY2MGU3NWM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxMjo1Mzo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L2V4ZmF0X2ZzLmggYi9mcy9leGZhdC9leGZhdF9mcy5oXG5pbmRleCA5YmU1MDk0OWNlMzRmLi41MDg0NjYzMGUxZjNlIDEwMDY0NFxuLS0tIGEvZnMvZXhmYXQvZXhmYXRfZnMuaFxuKysrIGIvZnMvZXhmYXQvZXhmYXRfZnMuaFxuQEAgLTEyMiw2ICsxMjIsNyBAQCBlbnVtIHtcbiBcbiAvKiBTdXBlcmJsb2NrIGZsYWdzICovXG4gI2RlZmluZSBFWEZBVF9GTEFHU19TSFVURE9XTlx0MVxuKyNkZWZpbmUgRVhGQVRfRkxBR1NfRVJST1JfUk9cdDJcbiBcbiBzdHJ1Y3QgZXhmYXRfZGVudHJ5X25hbWVidWYge1xuIFx0Y2hhciAqbGZuO1xuQEAgLTMyMCw2ICszMjEsMTUgQEAgc3RhdGljIGlubGluZSBpbnQgZXhmYXRfZm9yY2VkX3NodXRkb3duKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXHRyZXR1cm4gdGVzdF9iaXQoRVhGQVRfRkxBR1NfU0hVVERPV04sIFx1MDAyNkVYRkFUX1NCKHNiKS1cdTAwM2VzX2V4ZmF0X2ZsYWdzKTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBpbnQgZXhmYXRfY2hlY2tfd3JpdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbit7XG4rXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4rXHRcdHJldHVybiAtRUlPO1xuK1x0aWYgKHVubGlrZWx5KHRlc3RfYml0KEVYRkFUX0ZMQUdTX0VSUk9SX1JPLCBcdTAwMjZFWEZBVF9TQihzYiktXHUwMDNlc19leGZhdF9mbGFncykpKVxuK1x0XHRyZXR1cm4gLUVST0ZTO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIC8qXG4gICogSWYgLVx1MDAzZWlfbW9kZSBjYW4ndCBob2xkIDAyMjIgKGkuZS4gQVRUUl9STyksIHdlIHVzZSAtXHUwMDNlaV9hdHRycyB0b1xuICAqIHNhdmUgQVRUUl9STyBpbnN0ZWFkIG9mIC1cdTAwM2VpX21vZGUuXG5kaWZmIC0tZ2l0IGEvZnMvZXhmYXQvZmlsZS5jIGIvZnMvZXhmYXQvZmlsZS5jXG5pbmRleCA1ZmMxMzM3OGQzNWY3Li5iNmFmZWVkZTI0OTA0IDEwMDY0NFxuLS0tIGEvZnMvZXhmYXQvZmlsZS5jXG4rKysgYi9mcy9leGZhdC9maWxlLmNcbkBAIC0xMjUsOCArMTI1LDkgQEAgc3RhdGljIGxvbmcgZXhmYXRfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSxcbiBcdGlmICghU19JU1JFRyhpbm9kZS1cdTAwM2VpX21vZGUpKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKGlub2RlLVx1MDAzZWlfc2IpKSlcbi1cdFx0cmV0dXJuIC1FSU87XG4rXHRlcnIgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS1cdTAwM2VpX3NiKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4gXG4gXHRpbm9kZV9sb2NrKGlub2RlKTtcbiBcbkBAIC0zNTQsOCArMzU1LDkgQEAgaW50IGV4ZmF0X3NldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbiBcdHVuc2lnbmVkIGludCBpYV92YWxpZDtcbiBcdGludCBlcnJvcjtcbiBcbi1cdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oaW5vZGUtXHUwMDNlaV9zYikpKVxuLVx0XHRyZXR1cm4gLUVJTztcbitcdGVycm9yID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoaW5vZGUtXHUwMDNlaV9zYik7XG4rXHRpZiAoZXJyb3IpXG4rXHRcdHJldHVybiBlcnJvcjtcbiBcbiBcdGlmICgoYXR0ci1cdTAwM2VpYV92YWxpZCBcdTAwMjYgQVRUUl9TSVpFKSBcdTAwMjZcdTAwMjZcbiBcdCAgICBhdHRyLVx1MDAzZWlhX3NpemUgXHUwMDNlIGlfc2l6ZV9yZWFkKGlub2RlKSkge1xuQEAgLTczOCw4ICs3NDAsOSBAQCBzdGF0aWMgc3NpemVfdCBleGZhdF9maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4gXHRsb2ZmX3QgdmFsaWRfc2l6ZTtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKGlub2RlLVx1MDAzZWlfc2IpKSlcbi1cdFx0cmV0dXJuIC1FSU87XG4rXHRyZXQgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS1cdTAwM2VpX3NiKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4gXG4gXHRpbm9kZV9sb2NrKGlub2RlKTtcbiBcbkBAIC04MjYsNiArODI5LDExIEBAIHN0YXRpYyB2bV9mYXVsdF90IGV4ZmF0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbiBcdHN0cnVjdCBleGZhdF9pbm9kZV9pbmZvICplaSA9IEVYRkFUX0koaW5vZGUpO1xuIFx0dm1fZmF1bHRfdCByZXQ7XG4gXHRsb2ZmX3QgbmV3X3ZhbGlkX3NpemUsIG1tYXBfdmFsaWRfc2l6ZTtcbitcdGludCBlcnI7XG4rXG4rXHRlcnIgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS1cdTAwM2VpX3NiKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiB2bWZfZnNfZXJyb3IoZXJyKTtcbiBcbiBcdGlmICghaW5vZGVfdHJ5bG9jayhpbm9kZSkpXG4gXHRcdHJldHVybiBWTV9GQVVMVF9SRVRSWTtcbkBAIC04MzUsOCArODQzLDYgQEAgc3RhdGljIHZtX2ZhdWx0X3QgZXhmYXRfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFxuIFx0aWYgKGVpLVx1MDAzZXZhbGlkX3NpemUgXHUwMDNjIG5ld192YWxpZF9zaXplKSB7XG4gXHRcdGlmIChlaS1cdTAwM2V6ZXJvZWRfc2l6ZSBcdTAwM2MgbW1hcF92YWxpZF9zaXplKSB7XG4tXHRcdFx0aW50IGVycjtcbi1cbiBcdFx0XHQvKlxuIFx0XHRcdCAqIE9ubHkgemVybyB0aGUgcmFuZ2UgdGhhdCBoYXNuJ3QgYmVlbiB6ZXJvZWQgeWV0IGZvclxuIFx0XHRcdCAqIHRoaXMgbW1hcCB3cml0ZSBwYXRoLiB6ZXJvZWRfc2l6ZSB0cmFja3MgdGhlIGxhcmdlc3RcbmRpZmYgLS1naXQgYS9mcy9leGZhdC9taXNjLmMgYi9mcy9leGZhdC9taXNjLmNcbmluZGV4IDZmMTFhOTZhNGZmYTguLmFiODc1NDczZjkzYWUgMTAwNjQ0XG4tLS0gYS9mcy9leGZhdC9taXNjLmNcbisrKyBiL2ZzL2V4ZmF0L21pc2MuY1xuQEAgLTQxLDggKzQxLDggQEAgdm9pZCBfX2V4ZmF0X2ZzX2Vycm9yKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCByZXBvcnQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxuIFx0XHRwYW5pYyhcImV4RkFULWZzICglcyk6IGZzIHBhbmljIGZyb20gcHJldmlvdXMgZXJyb3JcXG5cIixcbiBcdFx0XHRzYi1cdTAwM2VzX2lkKTtcbiBcdH0gZWxzZSBpZiAob3B0cy1cdTAwM2VlcnJvcnMgPT0gRVhGQVRfRVJST1JTX1JPIFx1MDAyNlx1MDAyNiAhc2JfcmRvbmx5KHNiKSkge1xuLVx0XHRzYi1cdTAwM2VzX2ZsYWdzIHw9IFNCX1JET05MWTtcbi1cdFx0ZXhmYXRfZXJyKHNiLCBcIkZpbGVzeXN0ZW0gaGFzIGJlZW4gc2V0IHJlYWQtb25seVwiKTtcbitcdFx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0KEVYRkFUX0ZMQUdTX0VSUk9SX1JPLCBcdTAwMjZFWEZBVF9TQihzYiktXHUwMDNlc19leGZhdF9mbGFncykpXG4rXHRcdFx0ZXhmYXRfZXJyKHNiLCBcIkZpbGVzeXN0ZW0gaGFzIGJlZW4gc2V0IHJlYWQtb25seVwiKTtcbiBcdH1cbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZnMvZXhmYXQvbmFtZWkuYyBiL2ZzL2V4ZmF0L25hbWVpLmNcbmluZGV4IGI3ZDVlNDRhZDM4ZWUuLmYwODE3MGRlNjNiMzAgMTAwNjQ0XG4tLS0gYS9mcy9leGZhdC9uYW1laS5jXG4rKysgYi9mcy9leGZhdC9uYW1laS5jXG5AQCAtNTQ3LDggKzU0Nyw5IEBAIHN0YXRpYyBpbnQgZXhmYXRfY3JlYXRlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbiBcdGludCBlcnI7XG4gXHRsb2ZmX3Qgc2l6ZSA9IGlfc2l6ZV9yZWFkKGRpcik7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4tXHRcdHJldHVybiAtRUlPO1xuK1x0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfbG9jayk7XG4gXHRleGZhdF9zZXRfdm9sdW1lX2RpcnR5KHNiKTtcbkBAIC03NjUsMTAgKzc2NiwxMSBAQCBzdGF0aWMgaW50IGV4ZmF0X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0c3RydWN0IGlub2RlICppbm9kZSA9IGRlbnRyeS1cdTAwM2VkX2lub2RlO1xuIFx0c3RydWN0IGV4ZmF0X2lub2RlX2luZm8gKmVpID0gRVhGQVRfSShpbm9kZSk7XG4gXHRzdHJ1Y3QgZXhmYXRfZW50cnlfc2V0X2NhY2hlIGVzO1xuLVx0aW50IGVyciA9IDA7XG4rXHRpbnQgZXJyO1xuIFxuLVx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKVxuLVx0XHRyZXR1cm4gLUVJTztcbitcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNkVYRkFUX1NCKHNiKS1cdTAwM2VzX2xvY2spO1xuIFx0aWYgKGVpLVx1MDAzZWRpci5kaXIgPT0gRElSX0RFTEVURUQpIHtcbkBAIC04MjAsOCArODIyLDkgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmV4ZmF0X21rZGlyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbiBcdGludCBlcnI7XG4gXHRsb2ZmX3Qgc2l6ZSA9IGlfc2l6ZV9yZWFkKGRpcik7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4tXHRcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xuK1x0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfbG9jayk7XG4gXHRleGZhdF9zZXRfdm9sdW1lX2RpcnR5KHNiKTtcbkBAIC05MTEsOCArOTE0LDkgQEAgc3RhdGljIGludCBleGZhdF9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0c3RydWN0IGV4ZmF0X2VudHJ5X3NldF9jYWNoZSBlcztcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4tXHRcdHJldHVybiAtRUlPO1xuK1x0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19sb2NrKTtcbiBcbkBAIC05OTUsOSArOTk5LDYgQEAgc3RhdGljIGludCBleGZhdF9yZW5hbWVfZmlsZShzdHJ1Y3QgaW5vZGUgKnBhcmVudF9pbm9kZSxcbiBcdGludCBzeW5jID0gSVNfRElSU1lOQyhwYXJlbnRfaW5vZGUpO1xuIFx0dW5zaWduZWQgaW50IG51bV9leHRyYV9lbnRyaWVzLCBudW1fdG90YWxfZW50cmllcztcbiBcbi1cdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oc2IpKSlcbi1cdFx0cmV0dXJuIC1FSU87XG4tXG4gXHRudW1fbmV3X2VudHJpZXMgPSBleGZhdF9jYWxjX251bV9lbnRyaWVzKHBfdW5pbmFtZSk7XG4gXHRpZiAobnVtX25ld19lbnRyaWVzIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gbnVtX25ld19lbnRyaWVzO1xuQEAgLTEyNjcsNiArMTI2OCwxMCBAQCBzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbiBcdGlmIChmbGFncyBcdTAwMjYgflJFTkFNRV9OT1JFUExBQ0UpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfbG9jayk7XG4gXHRvbGRfaW5vZGUgPSBvbGRfZGVudHJ5LVx1MDAzZWRfaW5vZGU7XG4gXHRuZXdfaW5vZGUgPSBuZXdfZGVudHJ5LVx1MDAzZWRfaW5vZGU7XG5kaWZmIC0tZ2l0IGEvZnMvZXhmYXQvc3VwZXIuYyBiL2ZzL2V4ZmF0L3N1cGVyLmNcbmluZGV4IDM4OGRiMjcxYzZiZjUuLmRjYjZlMTVlNGQ3ZDQgMTAwNjQ0XG4tLS0gYS9mcy9leGZhdC9zdXBlci5jXG4rKysgYi9mcy9leGZhdC9zdXBlci5jXG5AQCAtODA3LDYgKzgwNyw5IEBAIHN0YXRpYyBpbnQgZXhmYXRfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFxuIFx0c3dhcCgqY3VyX29wdHMsICpuZXdfb3B0cyk7XG4gXG4rXHRpZiAoIShmYy1cdTAwM2VzYl9mbGFncyBcdTAwMjYgU0JfUkRPTkxZKSlcbitcdFx0Y2xlYXJfYml0KEVYRkFUX0ZMQUdTX0VSUk9SX1JPLCBcdTAwMjZzYmktXHUwMDNlc19leGZhdF9mbGFncyk7XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1NDowMC4zMzk2NjcwNjhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDIwNDMwNTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRXhGQVQgRXJyb3IgSGFuZGxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBzb21lIHNpZ25pZmljYW50IGNoYW5nZXMgdG8gdGhlIGV4RkFUIGZpbGVzeXN0ZW0sIHNwZWNpZmljYWxseSBob3cgaXQgZGVhbHMgd2l0aCByZWFkLW9ubHkgZXJyb3JzLiBMb29rcyBsaWtlIHRoZXkncmUgdG91Y2hpbmcgYGV4ZmF0X2ZzLmhgLCBgZmlsZS5jYCwgYG1pc2MuY2AsIGBuYW1laS5jYCwgYW5kIGBzdXBlci5jYC4gVGhhdCdzIGEgZGVjZW50IGNodW5rIG9mIHRoZSBjb3JlIGV4RkFUIGxvZ2ljLCB3aGljaCBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suXG5cblRoZSBnaXN0IG9mIGl0IGlzIHRoaXM6IHRoZXkncmUgaW50cm9kdWNpbmcgYSBuZXcgaW50ZXJuYWwgZmxhZywgYEVYRkFUX0ZMQUdTX0VSUk9SX1JPYCwgYW5kIGEgaGVscGVyIGZ1bmN0aW9uLCBgZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpYC4gSW5zdGVhZCBvZiBkaXJlY3RseSBzZXR0aW5nIGBTQl9SRE9OTFlgIG9uIHRoZSBzdXBlcmJsb2NrJ3MgZmxhZ3MgaW4gYF9fZXhmYXRfZnNfZXJyb3JgLCB3aGljaCBJIGtub3cgY2FuIGJlIHByb2JsZW1hdGljIGluIHRoZSBWRlMgY29udGV4dCBkdWUgdG8gbG9ja2luZyBpc3N1ZXMsIHRoZXkncmUgc2V0dGluZyB0aGUgaW50ZXJuYWwgYEVYRkFUX0ZMQUdTX0VSUk9SX1JPYCBmbGFnIG9uIHRoZSBleEZBVCBzdXBlcmJsb2NrIGluZm9ybWF0aW9uLiBUaGVuLCAqYWxsKiB0aGUgd3JpdGUgb3BlcmF0aW9ucyDigJMgYGZhbGxvY2F0ZWAsIGBzZXRhdHRyYCwgYHdyaXRlX2l0ZXJgLCBgcGFnZV9ta3dyaXRlYCwgYGNyZWF0ZWAsIGB1bmxpbmtgLCBgbWtkaXJgLCBgcm1kaXJgLCBhbmQgYHJlbmFtZWAg4oCTIGFyZSBiZWluZyB1cGRhdGVkIHRvIGNhbGwgYGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKWAgYW5kIHJldHVybiBgLUVST0ZTYCBpZiB0aGF0IGZsYWcgaXMgc2V0LiBUaGF0J3MgYSBnb29kIGFwcHJvYWNoOyBrZWVwcyB0aGUgVkZTIGhhcHB5LiBBbmQsIG9mIGNvdXJzZSwgYGV4ZmF0X3JlY29uZmlndXJlYCBpcyBnb2luZyB0byBjbGVhciB0aGF0IGZsYWcgd2hlbiB3ZSByZW1vdW50IHJlYWQtd3JpdGUuXG5cblRoaXMgaXMgYSBwcmV0dHkgZnVuZGFtZW50YWwgY2hhbmdlIHRvIGhvdyBleEZBVCBoYW5kbGVzIGl0cyBlcnJvciBzdGF0ZXMgd2hlbiBtb3VudGVkIHdpdGggYGVycm9ycz1yZW1vdW50LXJvYC4gSXQncyBhIGNsZWFyIGltcHJvdmVtZW50IGluIHRlcm1zIG9mIFZGUyBjb21wYXRpYmlsaXR5LCBtb3ZpbmcgYXdheSBmcm9tIGRpcmVjdCBtb2RpZmljYXRpb24gb2YgYHNiLVx1MDAzZXNfZmxhZ3NgLlxuXG4qKkZ1enppbmcgRm9jdXMqKlxuXG5HaXZlbiB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZXMsIHRoaXMgaXMgKmFic29sdXRlbHkqIGEgcGF0Y2ggdGhhdCBuZWVkcyBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IHRoZXkncmUgdG91Y2hpbmcgc28gbWFueSB3cml0ZSBwYXRocyBtYWtlcyBpdCBhIHByaW1lIHRhcmdldC4gV2UncmUgdGFsa2luZyBhYm91dCBjb3JlIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBoZXJlLiBXZSBzaG91bGQgZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6XG5cbiogICBgZXhmYXRfZmFsbG9jYXRlYFxuKiAgIGBleGZhdF9zZXRhdHRyYFxuKiAgIGBleGZhdF9maWxlX3dyaXRlX2l0ZXJgXG4qICAgYGV4ZmF0X3BhZ2VfbWt3cml0ZWBcbiogICBgZXhmYXRfY3JlYXRlYFxuKiAgIGBleGZhdF91bmxpbmtgXG4qICAgYGV4ZmF0X21rZGlyYFxuKiAgIGBleGZhdF9ybWRpcmBcbiogICBgZXhmYXRfcmVuYW1lYFxuKiAgIGBleGZhdF9yZWNvbmZpZ3VyZWBcblxuKipEZXBlbmRlbmNpZXMqKlxuXG5MZXQgbWUgcXVpY2tseSBjaGVjayBgZnMvZXhmYXQvS2NvbmZpZ2AgdG8gbWFrZSBzdXJlIHdlJ3ZlIGdvdCB0aGUgZXhGQVQgZmlsZXN5c3RlbSBlbmFibGVkIC0gWWVwLCBgQ09ORklHX0VYRkFUX0ZTYCBpcyB0aGVyZS4gSSdsbCBhbHNvIHJ1biBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gZG91YmxlLWNoZWNrIGZvciBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzLiBXZSBuZWVkIHRvIGtub3cgaWYgYW55IG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIGluZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1NDowOS4zNjAwOTk2MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTAxMTE1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVhGQVRfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXhmYXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGZhdC9LY29uZmlnLTItXFxuZnMvZXhmYXQvS2NvbmZpZzozOmNvbmZpZyBFWEZBVF9GU1xcbmZzL2V4ZmF0L0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiZXhGQVQgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1NDowOS40MTExMTY5NjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTYyNTIzNDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqRXhhbWluaW5nIHRoZSBFeEZBVCBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBFeEZBVCBmaWxlIHN5c3RlbSB3aXRoaW4gdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24uIFRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBmcy9leGZhdC9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIEV4RkFUIGFyZSBkZWZpbmVkLiBJdCdzIHRoZSBjZW50cmFsIHBsYWNlIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBjb21wb25lbnRzIG9yIHNldHRpbmdzIG5lZWQgdG8gYmUgaW4gcGxhY2UgZm9yIEV4RkFUIHRvIGJlIGJ1aWx0IGFuZCB3b3JrIGNvcnJlY3RseS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGxlYXJuIGFib3V0IHRoZXNlIGRlcGVuZGVuY2llcy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHRoaW5ncyBsaWtlIGVuYWJsaW5nIHNwZWNpZmljIENQVSBmZWF0dXJlcywgb3RoZXIgZmlsZSBzeXN0ZW0gc3VwcG9ydCwgb3IgbmVjZXNzYXJ5IGtlcm5lbCBtb2R1bGVzLiBGcm9tIGhlcmUsIEkgY2FuIHBsYW4gaG93IGJlc3QgdG8gZW5hYmxlIG9yIGJ1aWxkIHRoaXMgY29tcG9uZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzA4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTI6NTQ6MTMuMzczNjQyNTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leGZhdC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxcbiAgIDI6XFx0XFxuICAgMzpcXHRjb25maWcgRVhGQVRfRlNcXG4gICA0OlxcdFxcdHRyaXN0YXRlIFxcXCJleEZBVCBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuICAgNTpcXHRcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG4gICA2OlxcdFxcdHNlbGVjdCBOTFNcXG4gICA3OlxcdFxcdHNlbGVjdCBGU19JT01BUFxcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gbW91bnQgZGV2aWNlcyBmb3JtYXR0ZWQgd2l0aCB0aGUgZXhGQVQgZmlsZSBzeXN0ZW0uXFxuICAxMDpcXHRcXHQgIGV4RkFUIGlzIHR5cGljYWxseSB1c2VkIG9uIFNELUNhcmRzIG9yIFVTQiBzdGlja3MuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXFxuICAxMzpcXHRcXHQgIGV4ZmF0LlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgRVhGQVRfREVGQVVMVF9JT0NIQVJTRVRcXG4gIDE2OlxcdFxcdHN0cmluZyBcXFwiRGVmYXVsdCBpb2NoYXJzZXQgZm9yIGV4RkFUXFxcIlxcbiAgMTc6XFx0XFx0ZGVmYXVsdCBcXFwidXRmOFxcXCJcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gRVhGQVRfRlNcXG4gIDE5OlxcdFxcdGhlbHBcXG4gIDIwOlxcdFxcdCAgU2V0IHRoaXMgdG8gdGhlIGRlZmF1bHQgaW5wdXQvb3V0cHV0IGNoYXJhY3RlciBzZXQgdG8gdXNlIGZvclxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1NDoxMy4zNzM3MDA5MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NjAwODkzNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBxdWljayBydW5kb3duIG9mIHRoZXNlIHRob3VnaHRzOlxuXG4qKkZvY3Vzc2luZyBvbiBFWEZBVCBGdXp6aW5nIEVudHJ5cG9pbnRzKipcblxuUmlnaHQsIHNvIEknbSBob25pbmcgaW4gb24gYEVYRkFUX0ZTYCBhcyB0aGUgY29yZSBjb25maWcgZm9yIHRoaXMuIEl0IHNlZW1zIHdlJ3JlIGxvb2tpbmcgdG8gZnV6eiBzb21lIG1vZGlmaWVkIEVYRkFUIGxvZ2ljLiBMZXQncyBzZWUsIEkgbmVlZCB0byB2ZXJpZnkgd2hpY2ggc3ltYm9scyBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBmdW5jdGlvbnMgdGhhdCBpbnRlcmFjdCB3aXRoIGZpbGUgc3lzdGVtIG9wZXJhdGlvbnMuIEFscmlnaHQsIGxldCBtZSBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZW06IGBleGZhdF9mYWxsb2NhdGVgLCBgZXhmYXRfc2V0YXR0cmAsIGBleGZhdF9maWxlX3dyaXRlX2l0ZXJgLCBgZXhmYXRfcGFnZV9ta3dyaXRlYCwgYGV4ZmF0X2NyZWF0ZWAsIGBleGZhdF91bmxpbmtgLCBgZXhmYXRfbWtkaXJgLCBgZXhmYXRfcm1kaXJgLCBgZXhmYXRfcmVuYW1lYCwgYW5kIGBleGZhdF9yZWNvbmZpZ3VyZWAuIFRob3NlIHNlZW0gbGlrZSBzb2xpZCBjaG9pY2VzLCBoaXR0aW5nIGEgZ29vZCByYW5nZSBvZiBmaWxlIG1hbmlwdWxhdGlvbiBvcGVyYXRpb25zLiBXYWl0IGEgc2Vjb25kLi4uIGlzbid0IGBleGZhdF9maWxlX3dyaXRlX2l0ZXJgIGRlY2xhcmVkIGFzIHN0YXRpYz8gSSdkIGJldHRlciBkb3VibGUtY2hlY2sgaW4gYGZzL2V4ZmF0L2ZpbGUuY2AgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgaW1wb3J0YW50IG9yIHBvdGVudGlhbGx5IG1pc2ludGVycHJldGluZyB0aGUgc3ltYm9sIHZpc2liaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxODMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1NDoxNy45MzM4MDk3MjVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3MzkwNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXhmYXRfZmlsZV93cml0ZV9pdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4ZmF0L2ZpbGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGZhdC9maWxlLmM9NzEwPXN0YXRpYyBzc2l6ZV90IGV4ZmF0X2Rpb193cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbi0tXFxuZnMvZXhmYXQvZmlsZS5jLTczMi1cXG5mcy9leGZhdC9maWxlLmM6NzMzOnN0YXRpYyBzc2l6ZV90IGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcilcXG5mcy9leGZhdC9maWxlLmMtNzM0LXtcXG4tLVxcbmZzL2V4ZmF0L2ZpbGUuYz05NjQ9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBleGZhdF9maWxlX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9leGZhdC9maWxlLmMtOTY3LVxcdC5yZWFkX2l0ZXJcXHQ9IGV4ZmF0X2ZpbGVfcmVhZF9pdGVyLFxcbmZzL2V4ZmF0L2ZpbGUuYzo5Njg6XFx0LndyaXRlX2l0ZXJcXHQ9IGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcixcXG5mcy9leGZhdC9maWxlLmMtOTY5LVxcdC51bmxvY2tlZF9pb2N0bCA9IGV4ZmF0X2lvY3RsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1NDoxNy45OTU1NjYxMTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODMzNDgwOTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQVBJIEVudHJ5cG9pbnQqKlxuXG5Pa2F5LCBzbyB0aGUgY29kZSBpbiBxdWVzdGlvbiAqaXMqIHN0YXRpYywgSSBzZWUgdGhhdC4gSG93ZXZlciwgYW5kIHRoaXMgaXMga2V5LCBpdCdzIGFjdGluZyBhcyBhbiBBUEkgZW50cnlwb2ludCwgc3BlY2lmaWNhbGx5IGBmaWxlX29wZXJhdGlvbnMud3JpdGVfaXRlcmAuIFRoZSBpbnN0cnVjdGlvbnMgd2VyZSB2ZXJ5IGNsZWFyOiB3ZSBzaG91bGQgcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGUgZ29vZCBuZXdzIGhlcmUgaXMgdGhhdCBzaW5jZSBpdCdzIGFzc2lnbmVkIHRvIGEgc3RydWN0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzLCBpdCB3b24ndCBiZSBpbmxpbmVkIGFuZCAqd2lsbCogaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBlZmZlY3RpdmVseSBuZWdhdGluZyB0aGUgZG93bnNpZGVzLlxuXG5CdXQsIGFzIGEgbWF0dGVyIG9mIHByaW5jaXBsZSwgaXQncyBzdGlsbCBiZXN0IHRvIHVzZSBhIG5vbi1zdGF0aWMgb3B0aW9uIGlmIHBvc3NpYmxlLiBJbiB0aGlzIHNwZWNpZmljIGluc3RhbmNlLCBgZXhmYXRfZmlsZV93cml0ZV9pdGVyYCBpcyBhY2NlcHRhYmxlIGdpdmVuIGl0cyBmdW5jdGlvbiBhcyBhbiBlbnRyeXBvaW50LlxuXG5Ob3csIGxldCdzIGtlZXAgbW92aW5nLiBUaW1lIHRvIGNoZWNrIHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbnMgdG8gZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0aGUgY29kaW5nIHN0eWxlIGd1aWRlbGluZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTIsIk91dHB1dFRva2VucyI6NzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTI6NTQ6MjIuODI5MDQ5ODQ5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDkyMDg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIoZXhmYXRfZmFsbG9jYXRlfGV4ZmF0X3NldGF0dHJ8ZXhmYXRfcGFnZV9ta3dyaXRlfGV4ZmF0X2NyZWF0ZXxleGZhdF91bmxpbmt8ZXhmYXRfbWtkaXJ8ZXhmYXRfcm1kaXJ8ZXhmYXRfcmVuYW1lfGV4ZmF0X3JlY29uZmlndXJlKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leGZhdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXhmYXQvZXhmYXRfZnMuaD01Njk9aW50IF9fZXhmYXRfdHJ1bmNhdGUoc3RydWN0IGlub2RlICppbm9kZSk7XFxuZnMvZXhmYXQvZXhmYXRfZnMuaDo1NzA6aW50IGV4ZmF0X3NldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5mcy9leGZhdC9leGZhdF9mcy5oLTU3MS1cXHRcXHQgIHN0cnVjdCBpYXR0ciAqYXR0cik7XFxuLS1cXG5mcy9leGZhdC9leGZhdF9mcy5oPTY3Nz1pbnQgZXhmYXRfbmxzX3RvX3V0ZjE2KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuLS1cXG5mcy9leGZhdC9leGZhdF9mcy5oLTY3OS1cXHRcXHRzdHJ1Y3QgZXhmYXRfdW5pX25hbWUgKnVuaW5hbWUsIGludCAqcF9sb3NzeSk7XFxuZnMvZXhmYXQvZXhmYXRfZnMuaDo2ODA6aW50IGV4ZmF0X2NyZWF0ZV91cGNhc2VfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XFxuZnMvZXhmYXQvZXhmYXRfZnMuaC02ODEtdm9pZCBleGZhdF9mcmVlX3VwY2FzZV90YWJsZShzdHJ1Y3QgZXhmYXRfc2JfaW5mbyAqc2JpKTtcXG4tLVxcbmZzL2V4ZmF0L2ZpbGUuYz0yND1zdGF0aWMgaW50IGV4ZmF0X2NvbnRfZXhwYW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBzaXplKVxcbi0tXFxuZnMvZXhmYXQvZmlsZS5jLTExMi0gKi9cXG5mcy9leGZhdC9maWxlLmM6MTEzOnN0YXRpYyBsb25nIGV4ZmF0X2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsXFxuZnMvZXhmYXQvZmlsZS5jLTExNC1cXHRcXHRcXHQgIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuLS1cXG5mcy9leGZhdC9maWxlLmM9MzM4PWludCBleGZhdF9maWxlYXR0cl9nZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuLS1cXG5mcy9leGZhdC9maWxlLmMtMzQ5LVxcbmZzL2V4ZmF0L2ZpbGUuYzozNTA6aW50IGV4ZmF0X3NldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5mcy9leGZhdC9maWxlLmMtMzUxLVxcdFxcdCAgc3RydWN0IGlhdHRyICphdHRyKVxcbi0tXFxuZnMvZXhmYXQvZmlsZS5jPTQ0Nz1zdGF0aWMgaW50IGV4ZmF0X2lvY3RsX3NldF9hdHRyaWJ1dGVzKHN0cnVjdCBmaWxlICpmaWxlLCB1MzIgX191c2VyICp1c2VyX2F0dHIpXFxuLS1cXG5mcy9leGZhdC9maWxlLmMtNTA0LVxcdC8qIFRoaXMgTVVTVCBiZSBkb25lIGJlZm9yZSBkb2luZyBhbnl0aGluZyBpcnJldmVyc2libGUuLi4gKi9cXG5mcy9leGZhdC9maWxlLmM6NTA1OlxcdGVyciA9IGV4ZmF0X3NldGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGUtXFx1MDAzZWZfcGF0aC5kZW50cnksIFxcdTAwMjZpYSk7XFxuZnMvZXhmYXQvZmlsZS5jLTUwNi1cXHRpZiAoZXJyKVxcbi0tXFxuZnMvZXhmYXQvZmlsZS5jPTgwMz1zdGF0aWMgc3NpemVfdCBleGZhdF9maWxlX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcilcXG4tLVxcbmZzL2V4ZmF0L2ZpbGUuYy04MjUtXFxuZnMvZXhmYXQvZmlsZS5jOjgyNjpzdGF0aWMgdm1fZmF1bHRfdCBleGZhdF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuZnMvZXhmYXQvZmlsZS5jLTgyNy17XFxuLS1cXG5mcy9leGZhdC9maWxlLmM9ODgzPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgZXhmYXRfZmlsZV92bV9vcHMgPSB7XFxuLS1cXG5mcy9leGZhdC9maWxlLmMtODg1LVxcdC5tYXBfcGFnZXNcXHQ9IGZpbGVtYXBfbWFwX3BhZ2VzLFxcbmZzL2V4ZmF0L2ZpbGUuYzo4ODY6XFx0LnBhZ2VfbWt3cml0ZVxcdD0gZXhmYXRfcGFnZV9ta3dyaXRlLFxcbmZzL2V4ZmF0L2ZpbGUuYy04ODctfTtcXG4tLVxcbmZzL2V4ZmF0L2ZpbGUuYz05NjQ9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBleGZhdF9maWxlX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9leGZhdC9maWxlLmMtOTc2LVxcdC5zcGxpY2Vfd3JpdGVcXHQ9IGl0ZXJfZmlsZV9zcGxpY2Vfd3JpdGUsXFxuZnMvZXhmYXQvZmlsZS5jOjk3NzpcXHQuZmFsbG9jYXRlXFx0PSBleGZhdF9mYWxsb2NhdGUsXFxuZnMvZXhmYXQvZmlsZS5jLTk3OC1cXHQuc2V0bGVhc2VcXHQ9IGdlbmVyaWNfc2V0bGVhc2UsXFxuLS1cXG5mcy9leGZhdC9maWxlLmM9OTgxPWNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGV4ZmF0X2ZpbGVfaW5vZGVfb3BlcmF0aW9ucyA9IHtcXG5mcy9leGZhdC9maWxlLmM6OTgyOlxcdC5zZXRhdHRyXFx0PSBleGZhdF9zZXRhdHRyLFxcbmZzL2V4ZmF0L2ZpbGUuYy05ODMtXFx0LmdldGF0dHJcXHQ9IGV4ZmF0X2dldGF0dHIsXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jPTQ2Mj1zdGF0aWMgaW50IGV4ZmF0X2FkZF9lbnRyeShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpwYXRoLFxcbi0tXFxuZnMvZXhmYXQvbmFtZWkuYy01MzktXFxuZnMvZXhmYXQvbmFtZWkuYzo1NDA6c3RhdGljIGludCBleGZhdF9jcmVhdGUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxcbmZzL2V4ZmF0L25hbWVpLmMtNTQxLVxcdFxcdFxcdHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlLCBib29sIGV4Y2wpXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jPTcxMT1zdGF0aWMgc3RydWN0IGRlbnRyeSAqZXhmYXRfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jLTc2Mi0vKiByZW1vdmUgYW4gZW50cnksIEJVVCBkb24ndCB0cnVuY2F0ZSAqL1xcbmZzL2V4ZmF0L25hbWVpLmM6NzYzOnN0YXRpYyBpbnQgZXhmYXRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuZnMvZXhmYXQvbmFtZWkuYy03NjQte1xcbi0tXFxuZnMvZXhmYXQvbmFtZWkuYy04MTQtXFxuZnMvZXhmYXQvbmFtZWkuYzo4MTU6c3RhdGljIHN0cnVjdCBkZW50cnkgKmV4ZmF0X21rZGlyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcXG5mcy9leGZhdC9uYW1laS5jLTgxNi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlKVxcbi0tXFxuZnMvZXhmYXQvbmFtZWkuYz04NjI9c3RhdGljIGludCBleGZhdF9jaGVja19kaXJfZW1wdHkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4ZmF0L25hbWVpLmMtOTA2LVxcbmZzL2V4ZmF0L25hbWVpLmM6OTA3OnN0YXRpYyBpbnQgZXhmYXRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG5mcy9leGZhdC9uYW1laS5jLTkwOC17XFxuLS1cXG5mcy9leGZhdC9uYW1laS5jPTk3OT1zdGF0aWMgaW50IGV4ZmF0X2NvdW50X2V4dHJhX2VudHJpZXMoc3RydWN0IGV4ZmF0X2VudHJ5X3NldF9jYWNoZSAqZXMpXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jLTk5MS1cXG5mcy9leGZhdC9uYW1laS5jOjk5MjpzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZV9maWxlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2lub2RlLFxcbmZzL2V4ZmF0L25hbWVpLmMtOTkzLVxcdFxcdHN0cnVjdCBleGZhdF91bmlfbmFtZSAqcF91bmluYW1lLCBzdHJ1Y3QgZXhmYXRfaW5vZGVfaW5mbyAqZWkpXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jPTEwNzU9c3RhdGljIGludCBleGZhdF9tb3ZlX2ZpbGUoc3RydWN0IGlub2RlICpwYXJlbnRfaW5vZGUsXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jLTExNDUtLyogcmVuYW1lIG9yIG1vdmUgYSBvbGQgZmlsZSBpbnRvIGEgbmV3IGZpbGUgKi9cXG5mcy9leGZhdC9uYW1laS5jOjExNDY6c3RhdGljIGludCBfX2V4ZmF0X3JlbmFtZShzdHJ1Y3QgaW5vZGUgKm9sZF9wYXJlbnRfaW5vZGUsXFxuZnMvZXhmYXQvbmFtZWkuYy0xMTQ3LVxcdFxcdHN0cnVjdCBleGZhdF9pbm9kZV9pbmZvICplaSwgc3RydWN0IGlub2RlICpuZXdfcGFyZW50X2lub2RlLFxcbi0tXFxuZnMvZXhmYXQvbmFtZWkuYy0xMjAwLVxcdGlmIChuZXdfcGFyZW50X2lub2RlID09IG9sZF9wYXJlbnRfaW5vZGUpXFxuZnMvZXhmYXQvbmFtZWkuYzoxMjAxOlxcdFxcdHJldCA9IGV4ZmF0X3JlbmFtZV9maWxlKG5ld19wYXJlbnRfaW5vZGUsIFxcdTAwMjZ1bmlfbmFtZSwgZWkpO1xcbmZzL2V4ZmF0L25hbWVpLmMtMTIwMi1cXHRlbHNlXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jLTEyMjAtXFxuZnMvZXhmYXQvbmFtZWkuYzoxMjIxOlxcdFxcdC8qIEZyZWUgdGhlIGNsdXN0ZXJzIGlmIG5ld19pbm9kZSBpcyBhIGRpcihhcyBpZiBleGZhdF9ybWRpcikgKi9cXG5mcy9leGZhdC9uYW1laS5jLTEyMjItXFx0XFx0aWYgKFNfSVNESVIobmV3X2lub2RlLVxcdTAwM2VpX21vZGUpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5mcy9leGZhdC9uYW1laS5jLTEyNTEtXFxuZnMvZXhmYXQvbmFtZWkuYzoxMjUyOnN0YXRpYyBpbnQgZXhmYXRfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbmZzL2V4ZmF0L25hbWVpLmMtMTI1My1cXHRcXHRcXHRzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jLTEyNzgtXFxuZnMvZXhmYXQvbmFtZWkuYzoxMjc5OlxcdGVyciA9IF9fZXhmYXRfcmVuYW1lKG9sZF9kaXIsIEVYRkFUX0kob2xkX2lub2RlKSwgbmV3X2RpciwgbmV3X2RlbnRyeSk7XFxuZnMvZXhmYXQvbmFtZWkuYy0xMjgwLVxcdGlmIChlcnIpXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jPTEzMzE9Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgZXhmYXRfZGlyX2lub2RlX29wZXJhdGlvbnMgPSB7XFxuZnMvZXhmYXQvbmFtZWkuYzoxMzMyOlxcdC5jcmVhdGVcXHRcXHQ9IGV4ZmF0X2NyZWF0ZSxcXG5mcy9leGZhdC9uYW1laS5jLTEzMzMtXFx0Lmxvb2t1cFxcdFxcdD0gZXhmYXRfbG9va3VwLFxcbmZzL2V4ZmF0L25hbWVpLmM6MTMzNDpcXHQudW5saW5rXFx0XFx0PSBleGZhdF91bmxpbmssXFxuZnMvZXhmYXQvbmFtZWkuYzoxMzM1OlxcdC5ta2RpclxcdFxcdD0gZXhmYXRfbWtkaXIsXFxuZnMvZXhmYXQvbmFtZWkuYzoxMzM2OlxcdC5ybWRpclxcdFxcdD0gZXhmYXRfcm1kaXIsXFxuZnMvZXhmYXQvbmFtZWkuYzoxMzM3OlxcdC5yZW5hbWVcXHRcXHQ9IGV4ZmF0X3JlbmFtZSxcXG5mcy9leGZhdC9uYW1laS5jOjEzMzg6XFx0LnNldGF0dHJcXHQ9IGV4ZmF0X3NldGF0dHIsXFxuZnMvZXhmYXQvbmFtZWkuYy0xMzM5LVxcdC5nZXRhdHRyXFx0PSBleGZhdF9nZXRhdHRyLFxcbi0tXFxuZnMvZXhmYXQvbmxzLmM9NzAyPXN0YXRpYyBpbnQgZXhmYXRfbG9hZF9kZWZhdWx0X3VwY2FzZV90YWJsZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbi0tXFxuZnMvZXhmYXQvbmxzLmMtNzM3LVxcbmZzL2V4ZmF0L25scy5jOjczODppbnQgZXhmYXRfY3JlYXRlX3VwY2FzZV90YWJsZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbmZzL2V4ZmF0L25scy5jLTczOS17XFxuLS1cXG5mcy9leGZhdC9zdXBlci5jPTU5Nj1zdGF0aWMgaW50IF9fZXhmYXRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXhmYXQvc3VwZXIuYy02MjUtXFxuZnMvZXhmYXQvc3VwZXIuYzo2MjY6XFx0cmV0ID0gZXhmYXRfY3JlYXRlX3VwY2FzZV90YWJsZShzYik7XFxuZnMvZXhmYXQvc3VwZXIuYy02MjctXFx0aWYgKHJldCkge1xcbi0tXFxuZnMvZXhmYXQvc3VwZXIuYz03NjA9c3RhdGljIHZvaWQgZXhmYXRfZnJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy9leGZhdC9zdXBlci5jLTc2Ny1cXG5mcy9leGZhdC9zdXBlci5jOjc2ODpzdGF0aWMgaW50IGV4ZmF0X3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9leGZhdC9zdXBlci5jLTc2OS17XFxuLS1cXG5mcy9leGZhdC9zdXBlci5jPTgxNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBleGZhdF9jb250ZXh0X29wcyA9IHtcXG4tLVxcbmZzL2V4ZmF0L3N1cGVyLmMtODE5LVxcdC5mcmVlXFx0XFx0PSBleGZhdF9mcmVlLFxcbmZzL2V4ZmF0L3N1cGVyLmM6ODIwOlxcdC5yZWNvbmZpZ3VyZVxcdD0gZXhmYXRfcmVjb25maWd1cmUsXFxuZnMvZXhmYXQvc3VwZXIuYy04MjEtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTI6NTQ6MjIuODc5OTc5NDU3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0NTg3MjE2MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGV4RkFUIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCB0aGlzIHBhdGNoIGlzIHByaW1hcmlseSB0b3VjaGluZyBBUEkgZW50cnlwb2ludHMgd2l0aGluIHRoZSBleEZBVCBmaWxlc3lzdGVtLCBzcGVjaWZpY2FsbHkgYGlub2RlX29wZXJhdGlvbnNgLCBgZmlsZV9vcGVyYXRpb25zYCwgYHZtX29wZXJhdGlvbnNfc3RydWN0YCwgYW5kIGBmc19jb250ZXh0X29wZXJhdGlvbnNgLiBUaGUgY3JpdGljYWwgc3ltYm9scyB0byBob25lIGluIG9uIGFyZTogYGV4ZmF0X2ZhbGxvY2F0ZWAsIGBleGZhdF9zZXRhdHRyYCwgYGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcmAsIGBleGZhdF9wYWdlX21rd3JpdGVgLCBgZXhmYXRfY3JlYXRlYCwgYGV4ZmF0X3VubGlua2AsIGBleGZhdF9ta2RpcmAsIGBleGZhdF9ybWRpcmAsIGBleGZhdF9yZW5hbWVgLCBhbmQgYGV4ZmF0X3JlY29uZmlndXJlYC4gVGhvc2UgYXJlIG91ciBmb2N1cy5cblxuTm93LCBsZXQncyBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgd2UgbmVlZCB0byBjb25zaWRlciBiZXlvbmQganVzdCB0aGUgY29yZSBgRVhGQVRfRlNgIHNldHRpbmcuIEEgcXVpY2sgY2hlY2sgcmV2ZWFscyB0aGF0IGBFWEZBVF9GU2AgaXMgdGhlIG9ubHkgb25lLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBsaWVzIGluIGFsdGVyaW5nIGhvdyBleEZBVCBoYW5kbGVzIGVycm9ycyBhbmQgcmVhZC1vbmx5IHN0YXRlcy4gVGhlIHBhdGNoIHJlcGxhY2VzIGRpcmVjdCBtYW5pcHVsYXRpb24gb2YgYHNiLVx1MDAzZXNfZmxhZ3MgfD0gU0JfUkRPTkxZYCB3aXRoIGFuIGludGVybmFsIGZsYWcsIGBFWEZBVF9GTEFHU19FUlJPUl9ST2AsIHdoaWNoIGlzIHRoZW4gY2hlY2tlZCBhY3Jvc3MgYWxsIHdyaXRlIHBhdGhzLiBUaGlzIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiB0aGUgZmlsZXN5c3RlbSdzIGVycm9yIGhhbmRsaW5nIGFuZCB3cml0ZSBiZWhhdmlvciwgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgKm5lZWRzKiBmdXp6aW5nLlxuXG5MZXQncyBkbyBhIGRvdWJsZSBjaGVjayBvbiBkZXBlbmRlbmNpZXMuIEl0IGFwcGVhcnMgYEVYRkFUX0ZTYCBkb2Vzbid0IGRlcGVuZCBvbiBhbnl0aGluZyBlbHNlLCBpdCBqdXN0IHNlbGVjdHMgYEJVRkZFUl9IRUFEYCwgYE5MU2AsIGFuZCBgRlNfSU9NQVBgLiBQZXJmZWN0LiBTbyBlbmFibGluZyBgRVhGQVRfRlNgIGlzIHN1ZmZpY2llbnQgdG8gZW5hYmxlIHRoZXNlIGNoYW5nZXMsIGFuZCB3ZSBhcmUgcmVhZHkgdG8gbW92ZSBmb3J3YXJkLlxuXG5Ob3csIGxldCdzIGNvbnNvbGlkYXRlIHRoaXMgaW50byBhIGNsZWFyLCBjb25jaXNlIHJlc3BvbnNlLlxuXG4qKkZvY3VzIFN5bWJvbHM6KipcblxuKiAgIGBleGZhdF9mYWxsb2NhdGVgXG4qICAgYGV4ZmF0X3NldGF0dHJgXG4qICAgYGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcmBcbiogICBgZXhmYXRfcGFnZV9ta3dyaXRlYFxuKiAgIGBleGZhdF9jcmVhdGVgXG4qICAgYGV4ZmF0X3VubGlua2BcbiogICBgZXhmYXRfbWtkaXJgXG4qICAgYGV4ZmF0X3JtZGlyYFxuKiAgIGBleGZhdF9yZW5hbWVgXG4qICAgYGV4ZmF0X3JlY29uZmlndXJlYFxuXG4qKkVuYWJsZSBDb25maWdzOioqXG5cbiogICBgRVhGQVRfRlNgXG5cbioqUmVhc29uaW5nOioqXG5cblRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBleEZBVCdzIGVycm9yIGhhbmRsaW5nIHdoZW4gbW91bnRlZCB3aXRoIGBlcnJvcnM9cmVtb3VudC1yb2AuIEluc3RlYWQgb2YgZGlyZWN0bHkgbW9kaWZ5aW5nIHRoZSBWRlMtbGV2ZWwgYHNiLVx1MDAzZXNfZmxhZ3NgLCBpdCBub3cgdXNlcyBhbiBpbnRlcm5hbCBmbGFnLCBgRVhGQVRfRkxBR1NfRVJST1JfUk9gLiBUaGlzIG5ldyBmbGFnIGlzIHRoZW4gY2hlY2tlZCB3aXRoaW4gYWxsIHdyaXRlIG9wZXJhdGlvbnMuIFRoaXMgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgZmlsZXN5c3RlbSBsb2dpYywgc3BlY2lmaWNhbGx5IGhvdyB3cml0ZSBvcGVyYXRpb25zIGFyZSBoYW5kbGVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gZW5jb3VudGVycyBhbiBlcnJvci4gQ29uc2VxdWVudGx5LCB3ZSBtdXN0IGZ1enogdGhpcyB0byBlbnN1cmUgcHJvcGVyIHdyaXRlIG9wZXJhdGlvbiBhYm9ydGluZyBpbiBlcnJvciBzdGF0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5NjIsIk91dHB1dFRva2VucyI6MjE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDEyOjU0OjMyLjMzODcwMzEyNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NTI3MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWEZBVF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4ZmF0X2ZhbGxvY2F0ZVwiLFxuICAgIFwiZXhmYXRfc2V0YXR0clwiLFxuICAgIFwiZXhmYXRfZmlsZV93cml0ZV9pdGVyXCIsXG4gICAgXCJleGZhdF9wYWdlX21rd3JpdGVcIixcbiAgICBcImV4ZmF0X2NyZWF0ZVwiLFxuICAgIFwiZXhmYXRfdW5saW5rXCIsXG4gICAgXCJleGZhdF9ta2RpclwiLFxuICAgIFwiZXhmYXRfcm1kaXJcIixcbiAgICBcImV4ZmF0X3JlbmFtZVwiLFxuICAgIFwiZXhmYXRfcmVjb25maWd1cmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGhvdyB0aGUgZXhGQVQgZmlsZXN5c3RlbSBoYW5kbGVzIGVycm9ycyB3aGVuIG1vdW50ZWQgd2l0aCBgZXJyb3JzPXJlbW91bnQtcm9gLiBJbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgVkZTLWxldmVsIGBzYi1cXHUwMDNlc19mbGFnc2AgZGlyZWN0bHkgKHdoaWNoIGNhbiBjYXVzZSBsb2NraW5nIGlzc3VlcyksIGl0IGludHJvZHVjZXMgYW4gaW50ZXJuYWwgZmxhZyBgRVhGQVRfRkxBR1NfRVJST1JfUk9gIGFuZCBjaGVja3MgaXQgaW4gYWxsIHdyaXRlIHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgd3JpdGUgb3BlcmF0aW9ucyBjb3JyZWN0bHkgYWJvcnQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyBpbiBhbiBlcnJvciBzdGF0ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWEZBVF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4ZmF0X2ZhbGxvY2F0ZVwiLFxuICAgIFwiZXhmYXRfc2V0YXR0clwiLFxuICAgIFwiZXhmYXRfZmlsZV93cml0ZV9pdGVyXCIsXG4gICAgXCJleGZhdF9wYWdlX21rd3JpdGVcIixcbiAgICBcImV4ZmF0X2NyZWF0ZVwiLFxuICAgIFwiZXhmYXRfdW5saW5rXCIsXG4gICAgXCJleGZhdF9ta2RpclwiLFxuICAgIFwiZXhmYXRfcm1kaXJcIixcbiAgICBcImV4ZmF0X3JlbmFtZVwiLFxuICAgIFwiZXhmYXRfcmVjb25maWd1cmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGhvdyB0aGUgZXhGQVQgZmlsZXN5c3RlbSBoYW5kbGVzIGVycm9ycyB3aGVuIG1vdW50ZWQgd2l0aCBgZXJyb3JzPXJlbW91bnQtcm9gLiBJbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgVkZTLWxldmVsIGBzYi1cXHUwMDNlc19mbGFnc2AgZGlyZWN0bHkgKHdoaWNoIGNhbiBjYXVzZSBsb2NraW5nIGlzc3VlcyksIGl0IGludHJvZHVjZXMgYW4gaW50ZXJuYWwgZmxhZyBgRVhGQVRfRkxBR1NfRVJST1JfUk9gIGFuZCBjaGVja3MgaXQgaW4gYWxsIHdyaXRlIHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgd3JpdGUgb3BlcmF0aW9ucyBjb3JyZWN0bHkgYWJvcnQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyBpbiBhbiBlcnJvciBzdGF0ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslqb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 12:52:35 +0000 UTC FinishedAt: 2026-08-06 12:54:34 +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": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXFAT_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXFAT_FS" ], "series_id": "ea3a3905-1ca5-48e6-bba5-a8fab97d4494" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "exfat_fallocate", "exfat_setattr", "exfat_file_write_iter", "exfat_page_mkwrite", "exfat_create", "exfat_unlink", "exfat_mkdir", "exfat_rmdir", "exfat_rename", "exfat_reconfigure" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDEyOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYRkFUX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXhmYXRfZmFsbG9jYXRlJiMzNDssCiAgICAmIzM0O2V4ZmF0X3NldGF0dHImIzM0OywKICAgICYjMzQ7ZXhmYXRfZmlsZV93cml0ZV9pdGVyJiMzNDssCiAgICAmIzM0O2V4ZmF0X3BhZ2VfbWt3cml0ZSYjMzQ7LAogICAgJiMzNDtleGZhdF9jcmVhdGUmIzM0OywKICAgICYjMzQ7ZXhmYXRfdW5saW5rJiMzNDssCiAgICAmIzM0O2V4ZmF0X21rZGlyJiMzNDssCiAgICAmIzM0O2V4ZmF0X3JtZGlyJiMzNDssCiAgICAmIzM0O2V4ZmF0X3JlbmFtZSYjMzQ7LAogICAgJiMzNDtleGZhdF9yZWNvbmZpZ3VyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGhvdyB0aGUgZXhGQVQgZmlsZXN5c3RlbSBoYW5kbGVzIGVycm9ycyB3aGVuIG1vdW50ZWQgd2l0aCBgZXJyb3JzPXJlbW91bnQtcm9gLiBJbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgVkZTLWxldmVsIGBzYi1cdTAwM2VzX2ZsYWdzYCBkaXJlY3RseSAod2hpY2ggY2FuIGNhdXNlIGxvY2tpbmcgaXNzdWVzKSwgaXQgaW50cm9kdWNlcyBhbiBpbnRlcm5hbCBmbGFnIGBFWEZBVF9GTEFHU19FUlJPUl9ST2AgYW5kIGNoZWNrcyBpdCBpbiBhbGwgd3JpdGUgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB3cml0ZSBvcGVyYXRpb25zIGNvcnJlY3RseSBhYm9ydCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIGluIGFuIGVycm9yIHN0YXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDEyOjUzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTAxNGExM2I1ZDU5NWUxNzUxNDljOTFhMzcxZTY3NzRmNjBlNzVjNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTI6NTM6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXhmYXQvZXhmYXRfZnMuaCBiL2ZzL2V4ZmF0L2V4ZmF0X2ZzLmhcbmluZGV4IDliZTUwOTQ5Y2UzNGYuLjUwODQ2NjMwZTFmM2UgMTAwNjQ0XG4tLS0gYS9mcy9leGZhdC9leGZhdF9mcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leGZhdC9leGZhdF9mcy5oXG5AQCAtMTIyLDYgJiM0MzsxMjIsNyBAQCBlbnVtIHtcbiBcbiAvKiBTdXBlcmJsb2NrIGZsYWdzICovXG4gI2RlZmluZSBFWEZBVF9GTEFHU19TSFVURE9XTlx0MVxuJiM0MzsjZGVmaW5lIEVYRkFUX0ZMQUdTX0VSUk9SX1JPXHQyXG4gXG4gc3RydWN0IGV4ZmF0X2RlbnRyeV9uYW1lYnVmIHtcbiBcdGNoYXIgKmxmbjtcbkBAIC0zMjAsNiAmIzQzOzMyMSwxNSBAQCBzdGF0aWMgaW5saW5lIGludCBleGZhdF9mb3JjZWRfc2h1dGRvd24oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiBcdHJldHVybiB0ZXN0X2JpdChFWEZBVF9GTEFHU19TSFVURE9XTiwgXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfZXhmYXRfZmxhZ3MpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgZXhmYXRfY2hlY2tfd3JpdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiYjNDM7e1xuJiM0MztcdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oc2IpKSlcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChFWEZBVF9GTEFHU19FUlJPUl9STywgXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfZXhmYXRfZmxhZ3MpKSlcbiYjNDM7XHRcdHJldHVybiAtRVJPRlM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gLypcbiAgKiBJZiAtXHUwMDNlaV9tb2RlIGNhbiYjMzk7dCBob2xkIDAyMjIgKGkuZS4gQVRUUl9STyksIHdlIHVzZSAtXHUwMDNlaV9hdHRycyB0b1xuICAqIHNhdmUgQVRUUl9STyBpbnN0ZWFkIG9mIC1cdTAwM2VpX21vZGUuXG5kaWZmIC0tZ2l0IGEvZnMvZXhmYXQvZmlsZS5jIGIvZnMvZXhmYXQvZmlsZS5jXG5pbmRleCA1ZmMxMzM3OGQzNWY3Li5iNmFmZWVkZTI0OTA0IDEwMDY0NFxuLS0tIGEvZnMvZXhmYXQvZmlsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leGZhdC9maWxlLmNcbkBAIC0xMjUsOCAmIzQzOzEyNSw5IEBAIHN0YXRpYyBsb25nIGV4ZmF0X2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsXG4gXHRpZiAoIVNfSVNSRUcoaW5vZGUtXHUwMDNlaV9tb2RlKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihpbm9kZS1cdTAwM2VpX3NiKSkpXG4tXHRcdHJldHVybiAtRUlPO1xuJiM0MztcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKGlub2RlLVx1MDAzZWlfc2IpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuIFxuIFx0aW5vZGVfbG9jayhpbm9kZSk7XG4gXG5AQCAtMzU0LDggJiM0MzszNTUsOSBAQCBpbnQgZXhmYXRfc2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuIFx0dW5zaWduZWQgaW50IGlhX3ZhbGlkO1xuIFx0aW50IGVycm9yO1xuIFxuLVx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihpbm9kZS1cdTAwM2VpX3NiKSkpXG4tXHRcdHJldHVybiAtRUlPO1xuJiM0MztcdGVycm9yID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoaW5vZGUtXHUwMDNlaV9zYik7XG4mIzQzO1x0aWYgKGVycm9yKVxuJiM0MztcdFx0cmV0dXJuIGVycm9yO1xuIFxuIFx0aWYgKChhdHRyLVx1MDAzZWlhX3ZhbGlkIFx1MDAyNiBBVFRSX1NJWkUpIFx1MDAyNlx1MDAyNlxuIFx0ICAgIGF0dHItXHUwMDNlaWFfc2l6ZSBcdTAwM2UgaV9zaXplX3JlYWQoaW5vZGUpKSB7XG5AQCAtNzM4LDggJiM0Mzs3NDAsOSBAQCBzdGF0aWMgc3NpemVfdCBleGZhdF9maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4gXHRsb2ZmX3QgdmFsaWRfc2l6ZTtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKGlub2RlLVx1MDAzZWlfc2IpKSlcbi1cdFx0cmV0dXJuIC1FSU87XG4mIzQzO1x0cmV0ID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoaW5vZGUtXHUwMDNlaV9zYik7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4gXG4gXHRpbm9kZV9sb2NrKGlub2RlKTtcbiBcbkBAIC04MjYsNiAmIzQzOzgyOSwxMSBAQCBzdGF0aWMgdm1fZmF1bHRfdCBleGZhdF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHRzdHJ1Y3QgZXhmYXRfaW5vZGVfaW5mbyAqZWkgPSBFWEZBVF9JKGlub2RlKTtcbiBcdHZtX2ZhdWx0X3QgcmV0O1xuIFx0bG9mZl90IG5ld192YWxpZF9zaXplLCBtbWFwX3ZhbGlkX3NpemU7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoaW5vZGUtXHUwMDNlaV9zYik7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiB2bWZfZnNfZXJyb3IoZXJyKTtcbiBcbiBcdGlmICghaW5vZGVfdHJ5bG9jayhpbm9kZSkpXG4gXHRcdHJldHVybiBWTV9GQVVMVF9SRVRSWTtcbkBAIC04MzUsOCAmIzQzOzg0Myw2IEBAIHN0YXRpYyB2bV9mYXVsdF90IGV4ZmF0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbiBcbiBcdGlmIChlaS1cdTAwM2V2YWxpZF9zaXplIFx1MDAzYyBuZXdfdmFsaWRfc2l6ZSkge1xuIFx0XHRpZiAoZWktXHUwMDNlemVyb2VkX3NpemUgXHUwMDNjIG1tYXBfdmFsaWRfc2l6ZSkge1xuLVx0XHRcdGludCBlcnI7XG4tXG4gXHRcdFx0LypcbiBcdFx0XHQgKiBPbmx5IHplcm8gdGhlIHJhbmdlIHRoYXQgaGFzbiYjMzk7dCBiZWVuIHplcm9lZCB5ZXQgZm9yXG4gXHRcdFx0ICogdGhpcyBtbWFwIHdyaXRlIHBhdGguIHplcm9lZF9zaXplIHRyYWNrcyB0aGUgbGFyZ2VzdFxuZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L21pc2MuYyBiL2ZzL2V4ZmF0L21pc2MuY1xuaW5kZXggNmYxMWE5NmE0ZmZhOC4uYWI4NzU0NzNmOTNhZSAxMDA2NDRcbi0tLSBhL2ZzL2V4ZmF0L21pc2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhmYXQvbWlzYy5jXG5AQCAtNDEsOCAmIzQzOzQxLDggQEAgdm9pZCBfX2V4ZmF0X2ZzX2Vycm9yKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCByZXBvcnQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxuIFx0XHRwYW5pYyhcJiMzNDtleEZBVC1mcyAoJXMpOiBmcyBwYW5pYyBmcm9tIHByZXZpb3VzIGVycm9yXFxuXCYjMzQ7LFxuIFx0XHRcdHNiLVx1MDAzZXNfaWQpO1xuIFx0fSBlbHNlIGlmIChvcHRzLVx1MDAzZWVycm9ycyA9PSBFWEZBVF9FUlJPUlNfUk8gXHUwMDI2XHUwMDI2ICFzYl9yZG9ubHkoc2IpKSB7XG4tXHRcdHNiLVx1MDAzZXNfZmxhZ3MgfD0gU0JfUkRPTkxZO1xuLVx0XHRleGZhdF9lcnIoc2IsIFwmIzM0O0ZpbGVzeXN0ZW0gaGFzIGJlZW4gc2V0IHJlYWQtb25seVwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAoIXRlc3RfYW5kX3NldF9iaXQoRVhGQVRfRkxBR1NfRVJST1JfUk8sIFx1MDAyNkVYRkFUX1NCKHNiKS1cdTAwM2VzX2V4ZmF0X2ZsYWdzKSlcbiYjNDM7XHRcdFx0ZXhmYXRfZXJyKHNiLCBcJiMzNDtGaWxlc3lzdGVtIGhhcyBiZWVuIHNldCByZWFkLW9ubHlcJiMzNDspO1xuIFx0fVxuIH1cbiBcbmRpZmYgLS1naXQgYS9mcy9leGZhdC9uYW1laS5jIGIvZnMvZXhmYXQvbmFtZWkuY1xuaW5kZXggYjdkNWU0NGFkMzhlZS4uZjA4MTcwZGU2M2IzMCAxMDA2NDRcbi0tLSBhL2ZzL2V4ZmF0L25hbWVpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4ZmF0L25hbWVpLmNcbkBAIC01NDcsOCAmIzQzOzU0Nyw5IEBAIHN0YXRpYyBpbnQgZXhmYXRfY3JlYXRlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbiBcdGludCBlcnI7XG4gXHRsb2ZmX3Qgc2l6ZSA9IGlfc2l6ZV9yZWFkKGRpcik7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4tXHRcdHJldHVybiAtRUlPO1xuJiM0MztcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfbG9jayk7XG4gXHRleGZhdF9zZXRfdm9sdW1lX2RpcnR5KHNiKTtcbkBAIC03NjUsMTAgJiM0Mzs3NjYsMTEgQEAgc3RhdGljIGludCBleGZhdF91bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktXHUwMDNlZF9pbm9kZTtcbiBcdHN0cnVjdCBleGZhdF9pbm9kZV9pbmZvICplaSA9IEVYRkFUX0koaW5vZGUpO1xuIFx0c3RydWN0IGV4ZmF0X2VudHJ5X3NldF9jYWNoZSBlcztcbi1cdGludCBlcnIgPSAwO1xuJiM0MztcdGludCBlcnI7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4tXHRcdHJldHVybiAtRUlPO1xuJiM0MztcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfbG9jayk7XG4gXHRpZiAoZWktXHUwMDNlZGlyLmRpciA9PSBESVJfREVMRVRFRCkge1xuQEAgLTgyMCw4ICYjNDM7ODIyLDkgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmV4ZmF0X21rZGlyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbiBcdGludCBlcnI7XG4gXHRsb2ZmX3Qgc2l6ZSA9IGlfc2l6ZV9yZWFkKGRpcik7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4tXHRcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xuJiM0MztcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfbG9jayk7XG4gXHRleGZhdF9zZXRfdm9sdW1lX2RpcnR5KHNiKTtcbkBAIC05MTEsOCAmIzQzOzkxNCw5IEBAIHN0YXRpYyBpbnQgZXhmYXRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdHN0cnVjdCBleGZhdF9lbnRyeV9zZXRfY2FjaGUgZXM7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKVxuLVx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRlcnIgPSBleGZhdF9jaGVja193cml0YWJsZShzYik7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNkVYRkFUX1NCKGlub2RlLVx1MDAzZWlfc2IpLVx1MDAzZXNfbG9jayk7XG4gXG5AQCAtOTk1LDkgJiM0Mzs5OTksNiBAQCBzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZV9maWxlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2lub2RlLFxuIFx0aW50IHN5bmMgPSBJU19ESVJTWU5DKHBhcmVudF9pbm9kZSk7XG4gXHR1bnNpZ25lZCBpbnQgbnVtX2V4dHJhX2VudHJpZXMsIG51bV90b3RhbF9lbnRyaWVzO1xuIFxuLVx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKVxuLVx0XHRyZXR1cm4gLUVJTztcbi1cbiBcdG51bV9uZXdfZW50cmllcyA9IGV4ZmF0X2NhbGNfbnVtX2VudHJpZXMocF91bmluYW1lKTtcbiBcdGlmIChudW1fbmV3X2VudHJpZXMgXHUwMDNjIDApXG4gXHRcdHJldHVybiBudW1fbmV3X2VudHJpZXM7XG5AQCAtMTI2Nyw2ICYjNDM7MTI2OCwxMCBAQCBzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbiBcdGlmIChmbGFncyBcdTAwMjYgflJFTkFNRV9OT1JFUExBQ0UpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4gXHRtdXRleF9sb2NrKFx1MDAyNkVYRkFUX1NCKHNiKS1cdTAwM2VzX2xvY2spO1xuIFx0b2xkX2lub2RlID0gb2xkX2RlbnRyeS1cdTAwM2VkX2lub2RlO1xuIFx0bmV3X2lub2RlID0gbmV3X2RlbnRyeS1cdTAwM2VkX2lub2RlO1xuZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L3N1cGVyLmMgYi9mcy9leGZhdC9zdXBlci5jXG5pbmRleCAzODhkYjI3MWM2YmY1Li5kY2I2ZTE1ZTRkN2Q0IDEwMDY0NFxuLS0tIGEvZnMvZXhmYXQvc3VwZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhmYXQvc3VwZXIuY1xuQEAgLTgwNyw2ICYjNDM7ODA3LDkgQEAgc3RhdGljIGludCBleGZhdF9yZWNvbmZpZ3VyZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXG4gXHRzd2FwKCpjdXJfb3B0cywgKm5ld19vcHRzKTtcbiBcbiYjNDM7XHRpZiAoIShmYy1cdTAwM2VzYl9mbGFncyBcdTAwMjYgU0JfUkRPTkxZKSlcbiYjNDM7XHRcdGNsZWFyX2JpdChFWEZBVF9GTEFHU19FUlJPUl9STywgXHUwMDI2c2JpLVx1MDAzZXNfZXhmYXRfZmxhZ3MpO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMjo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhGQVRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleGZhdF9mYWxsb2NhdGUmIzM0OywKICAgICYjMzQ7ZXhmYXRfc2V0YXR0ciYjMzQ7LAogICAgJiMzNDtleGZhdF9maWxlX3dyaXRlX2l0ZXImIzM0OywKICAgICYjMzQ7ZXhmYXRfcGFnZV9ta3dyaXRlJiMzNDssCiAgICAmIzM0O2V4ZmF0X2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtleGZhdF91bmxpbmsmIzM0OywKICAgICYjMzQ7ZXhmYXRfbWtkaXImIzM0OywKICAgICYjMzQ7ZXhmYXRfcm1kaXImIzM0OywKICAgICYjMzQ7ZXhmYXRfcmVuYW1lJiMzNDssCiAgICAmIzM0O2V4ZmF0X3JlY29uZmlndXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgaG93IHRoZSBleEZBVCBmaWxlc3lzdGVtIGhhbmRsZXMgZXJyb3JzIHdoZW4gbW91bnRlZCB3aXRoIGBlcnJvcnM9cmVtb3VudC1yb2AuIEluc3RlYWQgb2YgbW9kaWZ5aW5nIHRoZSBWRlMtbGV2ZWwgYHNiLVx1MDAzZXNfZmxhZ3NgIGRpcmVjdGx5ICh3aGljaCBjYW4gY2F1c2UgbG9ja2luZyBpc3N1ZXMpLCBpdCBpbnRyb2R1Y2VzIGFuIGludGVybmFsIGZsYWcgYEVYRkFUX0ZMQUdTX0VSUk9SX1JPYCBhbmQgY2hlY2tzIGl0IGluIGFsbCB3cml0ZSBwYXRocy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHdyaXRlIG9wZXJhdGlvbnMgY29ycmVjdGx5IGFib3J0IHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgaW4gYW4gZXJyb3Igc3RhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlMDE0YTEzYjVkNTk1ZTE3NTE0OWM5MWEzNzFlNjc3NGY2MGU3NWM2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAxMjo1Mzo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L2V4ZmF0X2ZzLmggYi9mcy9leGZhdC9leGZhdF9mcy5oCmluZGV4IDliZTUwOTQ5Y2UzNGYuLjUwODQ2NjMwZTFmM2UgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZmF0L2V4ZmF0X2ZzLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhmYXQvZXhmYXRfZnMuaApAQCAtMTIyLDYgJiM0MzsxMjIsNyBAQCBlbnVtIHsKIAogLyogU3VwZXJibG9jayBmbGFncyAqLwogI2RlZmluZSBFWEZBVF9GTEFHU19TSFVURE9XTgkxCiYjNDM7I2RlZmluZSBFWEZBVF9GTEFHU19FUlJPUl9STwkyCiAKIHN0cnVjdCBleGZhdF9kZW50cnlfbmFtZWJ1ZiB7CiAJY2hhciAqbGZuOwpAQCAtMzIwLDYgJiM0MzszMjEsMTUgQEAgc3RhdGljIGlubGluZSBpbnQgZXhmYXRfZm9yY2VkX3NodXRkb3duKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCiAJcmV0dXJuIHRlc3RfYml0KEVYRkFUX0ZMQUdTX1NIVVRET1dOLCAmYW1wO0VYRkFUX1NCKHNiKS0mZ3Q7c19leGZhdF9mbGFncyk7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIGludCBleGZhdF9jaGVja193cml0YWJsZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQomIzQzO3sKJiM0MzsJaWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKQomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CWlmICh1bmxpa2VseSh0ZXN0X2JpdChFWEZBVF9GTEFHU19FUlJPUl9STywgJmFtcDtFWEZBVF9TQihzYiktJmd0O3NfZXhmYXRfZmxhZ3MpKSkKJiM0MzsJCXJldHVybiAtRVJPRlM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIC8qCiAgKiBJZiAtJmd0O2lfbW9kZSBjYW4mIzM5O3QgaG9sZCAwMjIyIChpLmUuIEFUVFJfUk8pLCB3ZSB1c2UgLSZndDtpX2F0dHJzIHRvCiAgKiBzYXZlIEFUVFJfUk8gaW5zdGVhZCBvZiAtJmd0O2lfbW9kZS4KZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L2ZpbGUuYyBiL2ZzL2V4ZmF0L2ZpbGUuYwppbmRleCA1ZmMxMzM3OGQzNWY3Li5iNmFmZWVkZTI0OTA0IDEwMDY0NAotLS0gYS9mcy9leGZhdC9maWxlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhmYXQvZmlsZS5jCkBAIC0xMjUsOCAmIzQzOzEyNSw5IEBAIHN0YXRpYyBsb25nIGV4ZmF0X2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsCiAJaWYgKCFTX0lTUkVHKGlub2RlLSZndDtpX21vZGUpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKGlub2RlLSZndDtpX3NiKSkpCi0JCXJldHVybiAtRUlPOwomIzQzOwllcnIgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS0mZ3Q7aV9zYik7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwogCiAJaW5vZGVfbG9jayhpbm9kZSk7CiAKQEAgLTM1NCw4ICYjNDM7MzU1LDkgQEAgaW50IGV4ZmF0X3NldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKIAl1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7CiAJaW50IGVycm9yOwogCi0JaWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihpbm9kZS0mZ3Q7aV9zYikpKQotCQlyZXR1cm4gLUVJTzsKJiM0MzsJZXJyb3IgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS0mZ3Q7aV9zYik7CiYjNDM7CWlmIChlcnJvcikKJiM0MzsJCXJldHVybiBlcnJvcjsKIAogCWlmICgoYXR0ci0mZ3Q7aWFfdmFsaWQgJmFtcDsgQVRUUl9TSVpFKSAmYW1wOyZhbXA7CiAJICAgIGF0dHItJmd0O2lhX3NpemUgJmd0OyBpX3NpemVfcmVhZChpbm9kZSkpIHsKQEAgLTczOCw4ICYjNDM7NzQwLDkgQEAgc3RhdGljIHNzaXplX3QgZXhmYXRfZmlsZV93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyKQogCWxvZmZfdCB2YWxpZF9zaXplOwogCWludCBlcnI7CiAKLQlpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKGlub2RlLSZndDtpX3NiKSkpCi0JCXJldHVybiAtRUlPOwomIzQzOwlyZXQgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS0mZ3Q7aV9zYik7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHJldDsKIAogCWlub2RlX2xvY2soaW5vZGUpOwogCkBAIC04MjYsNiAmIzQzOzgyOSwxMSBAQCBzdGF0aWMgdm1fZmF1bHRfdCBleGZhdF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJc3RydWN0IGV4ZmF0X2lub2RlX2luZm8gKmVpID0gRVhGQVRfSShpbm9kZSk7CiAJdm1fZmF1bHRfdCByZXQ7CiAJbG9mZl90IG5ld192YWxpZF9zaXplLCBtbWFwX3ZhbGlkX3NpemU7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKGlub2RlLSZndDtpX3NiKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiB2bWZfZnNfZXJyb3IoZXJyKTsKIAogCWlmICghaW5vZGVfdHJ5bG9jayhpbm9kZSkpCiAJCXJldHVybiBWTV9GQVVMVF9SRVRSWTsKQEAgLTgzNSw4ICYjNDM7ODQzLDYgQEAgc3RhdGljIHZtX2ZhdWx0X3QgZXhmYXRfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCiAJaWYgKGVpLSZndDt2YWxpZF9zaXplICZsdDsgbmV3X3ZhbGlkX3NpemUpIHsKIAkJaWYgKGVpLSZndDt6ZXJvZWRfc2l6ZSAmbHQ7IG1tYXBfdmFsaWRfc2l6ZSkgewotCQkJaW50IGVycjsKLQogCQkJLyoKIAkJCSAqIE9ubHkgemVybyB0aGUgcmFuZ2UgdGhhdCBoYXNuJiMzOTt0IGJlZW4gemVyb2VkIHlldCBmb3IKIAkJCSAqIHRoaXMgbW1hcCB3cml0ZSBwYXRoLiB6ZXJvZWRfc2l6ZSB0cmFja3MgdGhlIGxhcmdlc3QKZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L21pc2MuYyBiL2ZzL2V4ZmF0L21pc2MuYwppbmRleCA2ZjExYTk2YTRmZmE4Li5hYjg3NTQ3M2Y5M2FlIDEwMDY0NAotLS0gYS9mcy9leGZhdC9taXNjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhmYXQvbWlzYy5jCkBAIC00MSw4ICYjNDM7NDEsOCBAQCB2b2lkIF9fZXhmYXRfZnNfZXJyb3Ioc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHJlcG9ydCwgY29uc3QgY2hhciAqZm10LCAuLi4pCiAJCXBhbmljKCYjMzQ7ZXhGQVQtZnMgKCVzKTogZnMgcGFuaWMgZnJvbSBwcmV2aW91cyBlcnJvclxuJiMzNDssCiAJCQlzYi0mZ3Q7c19pZCk7CiAJfSBlbHNlIGlmIChvcHRzLSZndDtlcnJvcnMgPT0gRVhGQVRfRVJST1JTX1JPICZhbXA7JmFtcDsgIXNiX3Jkb25seShzYikpIHsKLQkJc2ItJmd0O3NfZmxhZ3MgfD0gU0JfUkRPTkxZOwotCQlleGZhdF9lcnIoc2IsICYjMzQ7RmlsZXN5c3RlbSBoYXMgYmVlbiBzZXQgcmVhZC1vbmx5JiMzNDspOwomIzQzOwkJaWYgKCF0ZXN0X2FuZF9zZXRfYml0KEVYRkFUX0ZMQUdTX0VSUk9SX1JPLCAmYW1wO0VYRkFUX1NCKHNiKS0mZ3Q7c19leGZhdF9mbGFncykpCiYjNDM7CQkJZXhmYXRfZXJyKHNiLCAmIzM0O0ZpbGVzeXN0ZW0gaGFzIGJlZW4gc2V0IHJlYWQtb25seSYjMzQ7KTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L25hbWVpLmMgYi9mcy9leGZhdC9uYW1laS5jCmluZGV4IGI3ZDVlNDRhZDM4ZWUuLmYwODE3MGRlNjNiMzAgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZmF0L25hbWVpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhmYXQvbmFtZWkuYwpAQCAtNTQ3LDggJiM0Mzs1NDcsOSBAQCBzdGF0aWMgaW50IGV4ZmF0X2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpkaXIsCiAJaW50IGVycjsKIAlsb2ZmX3Qgc2l6ZSA9IGlfc2l6ZV9yZWFkKGRpcik7CiAKLQlpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpCi0JCXJldHVybiAtRUlPOwomIzQzOwllcnIgPSBleGZhdF9jaGVja193cml0YWJsZShzYik7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwogCiAJbXV0ZXhfbG9jaygmYW1wO0VYRkFUX1NCKHNiKS0mZ3Q7c19sb2NrKTsKIAlleGZhdF9zZXRfdm9sdW1lX2RpcnR5KHNiKTsKQEAgLTc2NSwxMCAmIzQzOzc2NiwxMSBAQCBzdGF0aWMgaW50IGV4ZmF0X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktJmd0O2RfaW5vZGU7CiAJc3RydWN0IGV4ZmF0X2lub2RlX2luZm8gKmVpID0gRVhGQVRfSShpbm9kZSk7CiAJc3RydWN0IGV4ZmF0X2VudHJ5X3NldF9jYWNoZSBlczsKLQlpbnQgZXJyID0gMDsKJiM0MzsJaW50IGVycjsKIAotCWlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oc2IpKSkKLQkJcmV0dXJuIC1FSU87CiYjNDM7CWVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiAKIAltdXRleF9sb2NrKCZhbXA7RVhGQVRfU0Ioc2IpLSZndDtzX2xvY2spOwogCWlmIChlaS0mZ3Q7ZGlyLmRpciA9PSBESVJfREVMRVRFRCkgewpAQCAtODIwLDggJiM0Mzs4MjIsOSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqZXhmYXRfbWtkaXIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLAogCWludCBlcnI7CiAJbG9mZl90IHNpemUgPSBpX3NpemVfcmVhZChkaXIpOwogCi0JaWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKQotCQlyZXR1cm4gRVJSX1BUUigtRUlPKTsKJiM0MzsJZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIAogCW11dGV4X2xvY2soJmFtcDtFWEZBVF9TQihzYiktJmd0O3NfbG9jayk7CiAJZXhmYXRfc2V0X3ZvbHVtZV9kaXJ0eShzYik7CkBAIC05MTEsOCAmIzQzOzkxNCw5IEBAIHN0YXRpYyBpbnQgZXhmYXRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAlzdHJ1Y3QgZXhmYXRfZW50cnlfc2V0X2NhY2hlIGVzOwogCWludCBlcnI7CiAKLQlpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpCi0JCXJldHVybiAtRUlPOwomIzQzOwllcnIgPSBleGZhdF9jaGVja193cml0YWJsZShzYik7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwogCiAJbXV0ZXhfbG9jaygmYW1wO0VYRkFUX1NCKGlub2RlLSZndDtpX3NiKS0mZ3Q7c19sb2NrKTsKIApAQCAtOTk1LDkgJiM0Mzs5OTksNiBAQCBzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZV9maWxlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2lub2RlLAogCWludCBzeW5jID0gSVNfRElSU1lOQyhwYXJlbnRfaW5vZGUpOwogCXVuc2lnbmVkIGludCBudW1fZXh0cmFfZW50cmllcywgbnVtX3RvdGFsX2VudHJpZXM7CiAKLQlpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpCi0JCXJldHVybiAtRUlPOwotCiAJbnVtX25ld19lbnRyaWVzID0gZXhmYXRfY2FsY19udW1fZW50cmllcyhwX3VuaW5hbWUpOwogCWlmIChudW1fbmV3X2VudHJpZXMgJmx0OyAwKQogCQlyZXR1cm4gbnVtX25ld19lbnRyaWVzOwpAQCAtMTI2Nyw2ICYjNDM7MTI2OCwxMCBAQCBzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwKIAlpZiAoZmxhZ3MgJmFtcDsgflJFTkFNRV9OT1JFUExBQ0UpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CWVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiAJbXV0ZXhfbG9jaygmYW1wO0VYRkFUX1NCKHNiKS0mZ3Q7c19sb2NrKTsKIAlvbGRfaW5vZGUgPSBvbGRfZGVudHJ5LSZndDtkX2lub2RlOwogCW5ld19pbm9kZSA9IG5ld19kZW50cnktJmd0O2RfaW5vZGU7CmRpZmYgLS1naXQgYS9mcy9leGZhdC9zdXBlci5jIGIvZnMvZXhmYXQvc3VwZXIuYwppbmRleCAzODhkYjI3MWM2YmY1Li5kY2I2ZTE1ZTRkN2Q0IDEwMDY0NAotLS0gYS9mcy9leGZhdC9zdXBlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4ZmF0L3N1cGVyLmMKQEAgLTgwNyw2ICYjNDM7ODA3LDkgQEAgc3RhdGljIGludCBleGZhdF9yZWNvbmZpZ3VyZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAKIAlzd2FwKCpjdXJfb3B0cywgKm5ld19vcHRzKTsKIAomIzQzOwlpZiAoIShmYy0mZ3Q7c2JfZmxhZ3MgJmFtcDsgU0JfUkRPTkxZKSkKJiM0MzsJCWNsZWFyX2JpdChFWEZBVF9GTEFHU19FUlJPUl9STywgJmFtcDtzYmktJmd0O3NfZXhmYXRfZmxhZ3MpOwomIzQzOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1MTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFeEZBVCBFcnJvciBIYW5kbGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgbWFraW5nIHNvbWUgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byB0aGUgZXhGQVQgZmlsZXN5c3RlbSwgc3BlY2lmaWNhbGx5IGhvdyBpdCBkZWFscyB3aXRoIHJlYWQtb25seSBlcnJvcnMuIExvb2tzIGxpa2UgdGhleSYjMzk7cmUgdG91Y2hpbmcgYGV4ZmF0X2ZzLmhgLCBgZmlsZS5jYCwgYG1pc2MuY2AsIGBuYW1laS5jYCwgYW5kIGBzdXBlci5jYC4gVGhhdCYjMzk7cyBhIGRlY2VudCBjaHVuayBvZiB0aGUgY29yZSBleEZBVCBsb2dpYywgd2hpY2ggZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rLgoKVGhlIGdpc3Qgb2YgaXQgaXMgdGhpczogdGhleSYjMzk7cmUgaW50cm9kdWNpbmcgYSBuZXcgaW50ZXJuYWwgZmxhZywgYEVYRkFUX0ZMQUdTX0VSUk9SX1JPYCwgYW5kIGEgaGVscGVyIGZ1bmN0aW9uLCBgZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpYC4gSW5zdGVhZCBvZiBkaXJlY3RseSBzZXR0aW5nIGBTQl9SRE9OTFlgIG9uIHRoZSBzdXBlcmJsb2NrJiMzOTtzIGZsYWdzIGluIGBfX2V4ZmF0X2ZzX2Vycm9yYCwgd2hpY2ggSSBrbm93IGNhbiBiZSBwcm9ibGVtYXRpYyBpbiB0aGUgVkZTIGNvbnRleHQgZHVlIHRvIGxvY2tpbmcgaXNzdWVzLCB0aGV5JiMzOTtyZSBzZXR0aW5nIHRoZSBpbnRlcm5hbCBgRVhGQVRfRkxBR1NfRVJST1JfUk9gIGZsYWcgb24gdGhlIGV4RkFUIHN1cGVyYmxvY2sgaW5mb3JtYXRpb24uIFRoZW4sICphbGwqIHRoZSB3cml0ZSBvcGVyYXRpb25zIOKAkyBgZmFsbG9jYXRlYCwgYHNldGF0dHJgLCBgd3JpdGVfaXRlcmAsIGBwYWdlX21rd3JpdGVgLCBgY3JlYXRlYCwgYHVubGlua2AsIGBta2RpcmAsIGBybWRpcmAsIGFuZCBgcmVuYW1lYCDigJMgYXJlIGJlaW5nIHVwZGF0ZWQgdG8gY2FsbCBgZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpYCBhbmQgcmV0dXJuIGAtRVJPRlNgIGlmIHRoYXQgZmxhZyBpcyBzZXQuIFRoYXQmIzM5O3MgYSBnb29kIGFwcHJvYWNoOyBrZWVwcyB0aGUgVkZTIGhhcHB5LiBBbmQsIG9mIGNvdXJzZSwgYGV4ZmF0X3JlY29uZmlndXJlYCBpcyBnb2luZyB0byBjbGVhciB0aGF0IGZsYWcgd2hlbiB3ZSByZW1vdW50IHJlYWQtd3JpdGUuCgpUaGlzIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIGNoYW5nZSB0byBob3cgZXhGQVQgaGFuZGxlcyBpdHMgZXJyb3Igc3RhdGVzIHdoZW4gbW91bnRlZCB3aXRoIGBlcnJvcnM9cmVtb3VudC1yb2AuIEl0JiMzOTtzIGEgY2xlYXIgaW1wcm92ZW1lbnQgaW4gdGVybXMgb2YgVkZTIGNvbXBhdGliaWxpdHksIG1vdmluZyBhd2F5IGZyb20gZGlyZWN0IG1vZGlmaWNhdGlvbiBvZiBgc2ItJmd0O3NfZmxhZ3NgLgoKKipGdXp6aW5nIEZvY3VzKioKCkdpdmVuIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcywgdGhpcyBpcyAqYWJzb2x1dGVseSogYSBwYXRjaCB0aGF0IG5lZWRzIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgdGhleSYjMzk7cmUgdG91Y2hpbmcgc28gbWFueSB3cml0ZSBwYXRocyBtYWtlcyBpdCBhIHByaW1lIHRhcmdldC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgaGVyZS4gV2Ugc2hvdWxkIGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIGZvbGxvd2luZyBzeW1ib2xzOgoKKiAgIGBleGZhdF9mYWxsb2NhdGVgCiogICBgZXhmYXRfc2V0YXR0cmAKKiAgIGBleGZhdF9maWxlX3dyaXRlX2l0ZXJgCiogICBgZXhmYXRfcGFnZV9ta3dyaXRlYAoqICAgYGV4ZmF0X2NyZWF0ZWAKKiAgIGBleGZhdF91bmxpbmtgCiogICBgZXhmYXRfbWtkaXJgCiogICBgZXhmYXRfcm1kaXJgCiogICBgZXhmYXRfcmVuYW1lYAoqICAgYGV4ZmF0X3JlY29uZmlndXJlYAoKKipEZXBlbmRlbmNpZXMqKgoKTGV0IG1lIHF1aWNrbHkgY2hlY2sgYGZzL2V4ZmF0L0tjb25maWdgIHRvIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgZ290IHRoZSBleEZBVCBmaWxlc3lzdGVtIGVuYWJsZWQgLSBZZXAsIGBDT05GSUdfRVhGQVRfRlNgIGlzIHRoZXJlLiBJJiMzOTtsbCBhbHNvIHJ1biBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gZG91YmxlLWNoZWNrIGZvciBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzLiBXZSBuZWVkIHRvIGtub3cgaWYgYW55IG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIGluZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEVYRkFUX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXhmYXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGZhdC9LY29uZmlnLTItXG5mcy9leGZhdC9LY29uZmlnOjM6Y29uZmlnIEVYRkFUX0ZTXG5mcy9leGZhdC9LY29uZmlnLTQtXHR0cmlzdGF0ZSBcJiMzNDtleEZBVCBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzA4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkV4YW1pbmluZyB0aGUgRXhGQVQgS2VybmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIEV4RkFUIGZpbGUgc3lzdGVtIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24uIFRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBmcy9leGZhdC9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciBFeEZBVCBhcmUgZGVmaW5lZC4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgcGxhY2UgdG8gZmlndXJlIG91dCB3aGF0IG90aGVyIGNvbXBvbmVudHMgb3Igc2V0dGluZ3MgbmVlZCB0byBiZSBpbiBwbGFjZSBmb3IgRXhGQVQgdG8gYmUgYnVpbHQgYW5kIHdvcmsgY29ycmVjdGx5LiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGxlYXJuIGFib3V0IHRoZXNlIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBpbmZvcm1hdGlvbiBhYm91dCB0aGluZ3MgbGlrZSBlbmFibGluZyBzcGVjaWZpYyBDUFUgZmVhdHVyZXMsIG90aGVyIGZpbGUgc3lzdGVtIHN1cHBvcnQsIG9yIG5lY2Vzc2FyeSBrZXJuZWwgbW9kdWxlcy4gRnJvbSBoZXJlLCBJIGNhbiBwbGFuIGhvdyBiZXN0IHRvIGVuYWJsZSBvciBidWlsZCB0aGlzIGNvbXBvbmVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4ZmF0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXG4gICAyOlx0XG4gICAzOlx0Y29uZmlnIEVYRkFUX0ZTXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtleEZBVCBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDU6XHRcdHNlbGVjdCBCVUZGRVJfSEVBRFxuICAgNjpcdFx0c2VsZWN0IE5MU1xuICAgNzpcdFx0c2VsZWN0IEZTX0lPTUFQXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFRoaXMgYWxsb3dzIHlvdSB0byBtb3VudCBkZXZpY2VzIGZvcm1hdHRlZCB3aXRoIHRoZSBleEZBVCBmaWxlIHN5c3RlbS5cbiAgMTA6XHRcdCAgZXhGQVQgaXMgdHlwaWNhbGx5IHVzZWQgb24gU0QtQ2FyZHMgb3IgVVNCIHN0aWNrcy5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXG4gIDEzOlx0XHQgIGV4ZmF0LlxuICAxNDpcdFxuICAxNTpcdGNvbmZpZyBFWEZBVF9ERUZBVUxUX0lPQ0hBUlNFVFxuICAxNjpcdFx0c3RyaW5nIFwmIzM0O0RlZmF1bHQgaW9jaGFyc2V0IGZvciBleEZBVFwmIzM0O1xuICAxNzpcdFx0ZGVmYXVsdCBcJiMzNDt1dGY4XCYjMzQ7XG4gIDE4Olx0XHRkZXBlbmRzIG9uIEVYRkFUX0ZTXG4gIDE5Olx0XHRoZWxwXG4gIDIwOlx0XHQgIFNldCB0aGlzIHRvIHRoZSBkZWZhdWx0IGlucHV0L291dHB1dCBjaGFyYWN0ZXIgc2V0IHRvIHVzZSBmb3JcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTgzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHF1aWNrIHJ1bmRvd24gb2YgdGhlc2UgdGhvdWdodHM6CgoqKkZvY3Vzc2luZyBvbiBFWEZBVCBGdXp6aW5nIEVudHJ5cG9pbnRzKioKClJpZ2h0LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBgRVhGQVRfRlNgIGFzIHRoZSBjb3JlIGNvbmZpZyBmb3IgdGhpcy4gSXQgc2VlbXMgd2UmIzM5O3JlIGxvb2tpbmcgdG8gZnV6eiBzb21lIG1vZGlmaWVkIEVYRkFUIGxvZ2ljLiBMZXQmIzM5O3Mgc2VlLCBJIG5lZWQgdG8gdmVyaWZ5IHdoaWNoIHN5bWJvbHMgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gZnVuY3Rpb25zIHRoYXQgaW50ZXJhY3Qgd2l0aCBmaWxlIHN5c3RlbSBvcGVyYXRpb25zLiBBbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSBydW4gdGhyb3VnaCB0aGVtOiBgZXhmYXRfZmFsbG9jYXRlYCwgYGV4ZmF0X3NldGF0dHJgLCBgZXhmYXRfZmlsZV93cml0ZV9pdGVyYCwgYGV4ZmF0X3BhZ2VfbWt3cml0ZWAsIGBleGZhdF9jcmVhdGVgLCBgZXhmYXRfdW5saW5rYCwgYGV4ZmF0X21rZGlyYCwgYGV4ZmF0X3JtZGlyYCwgYGV4ZmF0X3JlbmFtZWAsIGFuZCBgZXhmYXRfcmVjb25maWd1cmVgLiBUaG9zZSBzZWVtIGxpa2Ugc29saWQgY2hvaWNlcywgaGl0dGluZyBhIGdvb2QgcmFuZ2Ugb2YgZmlsZSBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucy4gV2FpdCBhIHNlY29uZC4uLiBpc24mIzM5O3QgYGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcmAgZGVjbGFyZWQgYXMgc3RhdGljPyBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgaW4gYGZzL2V4ZmF0L2ZpbGUuY2AgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGltcG9ydGFudCBvciBwb3RlbnRpYWxseSBtaXNpbnRlcnByZXRpbmcgdGhlIHN5bWJvbCB2aXNpYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDEyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4ZmF0X2ZpbGVfd3JpdGVfaXRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4ZmF0L2ZpbGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGZhdC9maWxlLmM9NzEwPXN0YXRpYyBzc2l6ZV90IGV4ZmF0X2Rpb193cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYy03MzItXG5mcy9leGZhdC9maWxlLmM6NzMzOnN0YXRpYyBzc2l6ZV90IGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcilcbmZzL2V4ZmF0L2ZpbGUuYy03MzQte1xuLS1cbmZzL2V4ZmF0L2ZpbGUuYz05NjQ9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBleGZhdF9maWxlX29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvZXhmYXQvZmlsZS5jLTk2Ny1cdC5yZWFkX2l0ZXJcdD0gZXhmYXRfZmlsZV9yZWFkX2l0ZXIsXG5mcy9leGZhdC9maWxlLmM6OTY4Olx0LndyaXRlX2l0ZXJcdD0gZXhmYXRfZmlsZV93cml0ZV9pdGVyLFxuZnMvZXhmYXQvZmlsZS5jLTk2OS1cdC51bmxvY2tlZF9pb2N0bCA9IGV4ZmF0X2lvY3RsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NTIKCQkJCQkJCW91dHB1dDogNzgKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBUEkgRW50cnlwb2ludCoqCgpPa2F5LCBzbyB0aGUgY29kZSBpbiBxdWVzdGlvbiAqaXMqIHN0YXRpYywgSSBzZWUgdGhhdC4gSG93ZXZlciwgYW5kIHRoaXMgaXMga2V5LCBpdCYjMzk7cyBhY3RpbmcgYXMgYW4gQVBJIGVudHJ5cG9pbnQsIHNwZWNpZmljYWxseSBgZmlsZV9vcGVyYXRpb25zLndyaXRlX2l0ZXJgLiBUaGUgaW5zdHJ1Y3Rpb25zIHdlcmUgdmVyeSBjbGVhcjogd2Ugc2hvdWxkIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gVGhlIGdvb2QgbmV3cyBoZXJlIGlzIHRoYXQgc2luY2UgaXQmIzM5O3MgYXNzaWduZWQgdG8gYSBzdHJ1Y3Qgb2YgZnVuY3Rpb24gcG9pbnRlcnMsIGl0IHdvbiYjMzk7dCBiZSBpbmxpbmVkIGFuZCAqd2lsbCogaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBlZmZlY3RpdmVseSBuZWdhdGluZyB0aGUgZG93bnNpZGVzLgoKQnV0LCBhcyBhIG1hdHRlciBvZiBwcmluY2lwbGUsIGl0JiMzOTtzIHN0aWxsIGJlc3QgdG8gdXNlIGEgbm9uLXN0YXRpYyBvcHRpb24gaWYgcG9zc2libGUuIEluIHRoaXMgc3BlY2lmaWMgaW5zdGFuY2UsIGBleGZhdF9maWxlX3dyaXRlX2l0ZXJgIGlzIGFjY2VwdGFibGUgZ2l2ZW4gaXRzIGZ1bmN0aW9uIGFzIGFuIGVudHJ5cG9pbnQuCgpOb3csIGxldCYjMzk7cyBrZWVwIG1vdmluZy4gVGltZSB0byBjaGVjayB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb25zIHRvIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGhlIGNvZGluZyBzdHlsZSBndWlkZWxpbmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsoZXhmYXRfZmFsbG9jYXRlfGV4ZmF0X3NldGF0dHJ8ZXhmYXRfcGFnZV9ta3dyaXRlfGV4ZmF0X2NyZWF0ZXxleGZhdF91bmxpbmt8ZXhmYXRfbWtkaXJ8ZXhmYXRfcm1kaXJ8ZXhmYXRfcmVuYW1lfGV4ZmF0X3JlY29uZmlndXJlKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4ZmF0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGZhdC9leGZhdF9mcy5oPTU2OT1pbnQgX19leGZhdF90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTtcbmZzL2V4ZmF0L2V4ZmF0X2ZzLmg6NTcwOmludCBleGZhdF9zZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5mcy9leGZhdC9leGZhdF9mcy5oLTU3MS1cdFx0ICBzdHJ1Y3QgaWF0dHIgKmF0dHIpO1xuLS1cbmZzL2V4ZmF0L2V4ZmF0X2ZzLmg9Njc3PWludCBleGZhdF9ubHNfdG9fdXRmMTYoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leGZhdC9leGZhdF9mcy5oLTY3OS1cdFx0c3RydWN0IGV4ZmF0X3VuaV9uYW1lICp1bmluYW1lLCBpbnQgKnBfbG9zc3kpO1xuZnMvZXhmYXQvZXhmYXRfZnMuaDo2ODA6aW50IGV4ZmF0X2NyZWF0ZV91cGNhc2VfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XG5mcy9leGZhdC9leGZhdF9mcy5oLTY4MS12b2lkIGV4ZmF0X2ZyZWVfdXBjYXNlX3RhYmxlKHN0cnVjdCBleGZhdF9zYl9pbmZvICpzYmkpO1xuLS1cbmZzL2V4ZmF0L2ZpbGUuYz0yND1zdGF0aWMgaW50IGV4ZmF0X2NvbnRfZXhwYW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBzaXplKVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYy0xMTItICovXG5mcy9leGZhdC9maWxlLmM6MTEzOnN0YXRpYyBsb25nIGV4ZmF0X2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsXG5mcy9leGZhdC9maWxlLmMtMTE0LVx0XHRcdCAgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcbi0tXG5mcy9leGZhdC9maWxlLmM9MzM4PWludCBleGZhdF9maWxlYXR0cl9nZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG4tLVxuZnMvZXhmYXQvZmlsZS5jLTM0OS1cbmZzL2V4ZmF0L2ZpbGUuYzozNTA6aW50IGV4ZmF0X3NldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbmZzL2V4ZmF0L2ZpbGUuYy0zNTEtXHRcdCAgc3RydWN0IGlhdHRyICphdHRyKVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYz00NDc9c3RhdGljIGludCBleGZhdF9pb2N0bF9zZXRfYXR0cmlidXRlcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdTMyIF9fdXNlciAqdXNlcl9hdHRyKVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYy01MDQtXHQvKiBUaGlzIE1VU1QgYmUgZG9uZSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgaXJyZXZlcnNpYmxlLi4uICovXG5mcy9leGZhdC9maWxlLmM6NTA1Olx0ZXJyID0gZXhmYXRfc2V0YXR0cihmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5LCBcdTAwMjZpYSk7XG5mcy9leGZhdC9maWxlLmMtNTA2LVx0aWYgKGVycilcbi0tXG5mcy9leGZhdC9maWxlLmM9ODAzPXN0YXRpYyBzc2l6ZV90IGV4ZmF0X2ZpbGVfcmVhZF9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyKVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYy04MjUtXG5mcy9leGZhdC9maWxlLmM6ODI2OnN0YXRpYyB2bV9mYXVsdF90IGV4ZmF0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbmZzL2V4ZmF0L2ZpbGUuYy04Mjcte1xuLS1cbmZzL2V4ZmF0L2ZpbGUuYz04ODM9c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBleGZhdF9maWxlX3ZtX29wcyA9IHtcbi0tXG5mcy9leGZhdC9maWxlLmMtODg1LVx0Lm1hcF9wYWdlc1x0PSBmaWxlbWFwX21hcF9wYWdlcyxcbmZzL2V4ZmF0L2ZpbGUuYzo4ODY6XHQucGFnZV9ta3dyaXRlXHQ9IGV4ZmF0X3BhZ2VfbWt3cml0ZSxcbmZzL2V4ZmF0L2ZpbGUuYy04ODctfTtcbi0tXG5mcy9leGZhdC9maWxlLmM9OTY0PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXhmYXRfZmlsZV9vcGVyYXRpb25zID0ge1xuLS1cbmZzL2V4ZmF0L2ZpbGUuYy05NzYtXHQuc3BsaWNlX3dyaXRlXHQ9IGl0ZXJfZmlsZV9zcGxpY2Vfd3JpdGUsXG5mcy9leGZhdC9maWxlLmM6OTc3Olx0LmZhbGxvY2F0ZVx0PSBleGZhdF9mYWxsb2NhdGUsXG5mcy9leGZhdC9maWxlLmMtOTc4LVx0LnNldGxlYXNlXHQ9IGdlbmVyaWNfc2V0bGVhc2UsXG4tLVxuZnMvZXhmYXQvZmlsZS5jPTk4MT1jb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBleGZhdF9maWxlX2lub2RlX29wZXJhdGlvbnMgPSB7XG5mcy9leGZhdC9maWxlLmM6OTgyOlx0LnNldGF0dHJcdD0gZXhmYXRfc2V0YXR0cixcbmZzL2V4ZmF0L2ZpbGUuYy05ODMtXHQuZ2V0YXR0clx0PSBleGZhdF9nZXRhdHRyLFxuLS1cbmZzL2V4ZmF0L25hbWVpLmM9NDYyPXN0YXRpYyBpbnQgZXhmYXRfYWRkX2VudHJ5KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKnBhdGgsXG4tLVxuZnMvZXhmYXQvbmFtZWkuYy01MzktXG5mcy9leGZhdC9uYW1laS5jOjU0MDpzdGF0aWMgaW50IGV4ZmF0X2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpkaXIsXG5mcy9leGZhdC9uYW1laS5jLTU0MS1cdFx0XHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVtb2RlX3QgbW9kZSwgYm9vbCBleGNsKVxuLS1cbmZzL2V4ZmF0L25hbWVpLmM9NzExPXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpleGZhdF9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9leGZhdC9uYW1laS5jLTc2Mi0vKiByZW1vdmUgYW4gZW50cnksIEJVVCBkb24mIzM5O3QgdHJ1bmNhdGUgKi9cbmZzL2V4ZmF0L25hbWVpLmM6NzYzOnN0YXRpYyBpbnQgZXhmYXRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG5mcy9leGZhdC9uYW1laS5jLTc2NC17XG4tLVxuZnMvZXhmYXQvbmFtZWkuYy04MTQtXG5mcy9leGZhdC9uYW1laS5jOjgxNTpzdGF0aWMgc3RydWN0IGRlbnRyeSAqZXhmYXRfbWtkaXIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxuZnMvZXhmYXQvbmFtZWkuYy04MTYtXHRcdFx0XHQgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlKVxuLS1cbmZzL2V4ZmF0L25hbWVpLmM9ODYyPXN0YXRpYyBpbnQgZXhmYXRfY2hlY2tfZGlyX2VtcHR5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXhmYXQvbmFtZWkuYy05MDYtXG5mcy9leGZhdC9uYW1laS5jOjkwNzpzdGF0aWMgaW50IGV4ZmF0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG5mcy9leGZhdC9uYW1laS5jLTkwOC17XG4tLVxuZnMvZXhmYXQvbmFtZWkuYz05Nzk9c3RhdGljIGludCBleGZhdF9jb3VudF9leHRyYV9lbnRyaWVzKHN0cnVjdCBleGZhdF9lbnRyeV9zZXRfY2FjaGUgKmVzKVxuLS1cbmZzL2V4ZmF0L25hbWVpLmMtOTkxLVxuZnMvZXhmYXQvbmFtZWkuYzo5OTI6c3RhdGljIGludCBleGZhdF9yZW5hbWVfZmlsZShzdHJ1Y3QgaW5vZGUgKnBhcmVudF9pbm9kZSxcbmZzL2V4ZmF0L25hbWVpLmMtOTkzLVx0XHRzdHJ1Y3QgZXhmYXRfdW5pX25hbWUgKnBfdW5pbmFtZSwgc3RydWN0IGV4ZmF0X2lub2RlX2luZm8gKmVpKVxuLS1cbmZzL2V4ZmF0L25hbWVpLmM9MTA3NT1zdGF0aWMgaW50IGV4ZmF0X21vdmVfZmlsZShzdHJ1Y3QgaW5vZGUgKnBhcmVudF9pbm9kZSxcbi0tXG5mcy9leGZhdC9uYW1laS5jLTExNDUtLyogcmVuYW1lIG9yIG1vdmUgYSBvbGQgZmlsZSBpbnRvIGEgbmV3IGZpbGUgKi9cbmZzL2V4ZmF0L25hbWVpLmM6MTE0NjpzdGF0aWMgaW50IF9fZXhmYXRfcmVuYW1lKHN0cnVjdCBpbm9kZSAqb2xkX3BhcmVudF9pbm9kZSxcbmZzL2V4ZmF0L25hbWVpLmMtMTE0Ny1cdFx0c3RydWN0IGV4ZmF0X2lub2RlX2luZm8gKmVpLCBzdHJ1Y3QgaW5vZGUgKm5ld19wYXJlbnRfaW5vZGUsXG4tLVxuZnMvZXhmYXQvbmFtZWkuYy0xMjAwLVx0aWYgKG5ld19wYXJlbnRfaW5vZGUgPT0gb2xkX3BhcmVudF9pbm9kZSlcbmZzL2V4ZmF0L25hbWVpLmM6MTIwMTpcdFx0cmV0ID0gZXhmYXRfcmVuYW1lX2ZpbGUobmV3X3BhcmVudF9pbm9kZSwgXHUwMDI2dW5pX25hbWUsIGVpKTtcbmZzL2V4ZmF0L25hbWVpLmMtMTIwMi1cdGVsc2Vcbi0tXG5mcy9leGZhdC9uYW1laS5jLTEyMjAtXG5mcy9leGZhdC9uYW1laS5jOjEyMjE6XHRcdC8qIEZyZWUgdGhlIGNsdXN0ZXJzIGlmIG5ld19pbm9kZSBpcyBhIGRpcihhcyBpZiBleGZhdF9ybWRpcikgKi9cbmZzL2V4ZmF0L25hbWVpLmMtMTIyMi1cdFx0aWYgKFNfSVNESVIobmV3X2lub2RlLVx1MDAzZWlfbW9kZSkgXHUwMDI2XHUwMDI2XG4tLVxuZnMvZXhmYXQvbmFtZWkuYy0xMjUxLVxuZnMvZXhmYXQvbmFtZWkuYzoxMjUyOnN0YXRpYyBpbnQgZXhmYXRfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxuZnMvZXhmYXQvbmFtZWkuYy0xMjUzLVx0XHRcdHN0cnVjdCBpbm9kZSAqb2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSxcbi0tXG5mcy9leGZhdC9uYW1laS5jLTEyNzgtXG5mcy9leGZhdC9uYW1laS5jOjEyNzk6XHRlcnIgPSBfX2V4ZmF0X3JlbmFtZShvbGRfZGlyLCBFWEZBVF9JKG9sZF9pbm9kZSksIG5ld19kaXIsIG5ld19kZW50cnkpO1xuZnMvZXhmYXQvbmFtZWkuYy0xMjgwLVx0aWYgKGVycilcbi0tXG5mcy9leGZhdC9uYW1laS5jPTEzMzE9Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgZXhmYXRfZGlyX2lub2RlX29wZXJhdGlvbnMgPSB7XG5mcy9leGZhdC9uYW1laS5jOjEzMzI6XHQuY3JlYXRlXHRcdD0gZXhmYXRfY3JlYXRlLFxuZnMvZXhmYXQvbmFtZWkuYy0xMzMzLVx0Lmxvb2t1cFx0XHQ9IGV4ZmF0X2xvb2t1cCxcbmZzL2V4ZmF0L25hbWVpLmM6MTMzNDpcdC51bmxpbmtcdFx0PSBleGZhdF91bmxpbmssXG5mcy9leGZhdC9uYW1laS5jOjEzMzU6XHQubWtkaXJcdFx0PSBleGZhdF9ta2RpcixcbmZzL2V4ZmF0L25hbWVpLmM6MTMzNjpcdC5ybWRpclx0XHQ9IGV4ZmF0X3JtZGlyLFxuZnMvZXhmYXQvbmFtZWkuYzoxMzM3Olx0LnJlbmFtZVx0XHQ9IGV4ZmF0X3JlbmFtZSxcbmZzL2V4ZmF0L25hbWVpLmM6MTMzODpcdC5zZXRhdHRyXHQ9IGV4ZmF0X3NldGF0dHIsXG5mcy9leGZhdC9uYW1laS5jLTEzMzktXHQuZ2V0YXR0clx0PSBleGZhdF9nZXRhdHRyLFxuLS1cbmZzL2V4ZmF0L25scy5jPTcwMj1zdGF0aWMgaW50IGV4ZmF0X2xvYWRfZGVmYXVsdF91cGNhc2VfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leGZhdC9ubHMuYy03MzctXG5mcy9leGZhdC9ubHMuYzo3Mzg6aW50IGV4ZmF0X2NyZWF0ZV91cGNhc2VfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmZzL2V4ZmF0L25scy5jLTczOS17XG4tLVxuZnMvZXhmYXQvc3VwZXIuYz01OTY9c3RhdGljIGludCBfX2V4ZmF0X2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leGZhdC9zdXBlci5jLTYyNS1cbmZzL2V4ZmF0L3N1cGVyLmM6NjI2Olx0cmV0ID0gZXhmYXRfY3JlYXRlX3VwY2FzZV90YWJsZShzYik7XG5mcy9leGZhdC9zdXBlci5jLTYyNy1cdGlmIChyZXQpIHtcbi0tXG5mcy9leGZhdC9zdXBlci5jPTc2MD1zdGF0aWMgdm9pZCBleGZhdF9mcmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5mcy9leGZhdC9zdXBlci5jLTc2Ny1cbmZzL2V4ZmF0L3N1cGVyLmM6NzY4OnN0YXRpYyBpbnQgZXhmYXRfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuZnMvZXhmYXQvc3VwZXIuYy03Njkte1xuLS1cbmZzL2V4ZmF0L3N1cGVyLmM9ODE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfY29udGV4dF9vcGVyYXRpb25zIGV4ZmF0X2NvbnRleHRfb3BzID0ge1xuLS1cbmZzL2V4ZmF0L3N1cGVyLmMtODE5LVx0LmZyZWVcdFx0PSBleGZhdF9mcmVlLFxuZnMvZXhmYXQvc3VwZXIuYzo4MjA6XHQucmVjb25maWd1cmVcdD0gZXhmYXRfcmVjb25maWd1cmUsXG5mcy9leGZhdC9zdXBlci5jLTgyMS19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTYyCgkJCQkJCQlvdXRwdXQ6IDIxNAoJCQkJCQkJdGhvdWdodHM6IDQ3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgZXhGQVQgRmlsZXN5c3RlbSBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSYjMzk7bSBzZWVpbmcsIHRoaXMgcGF0Y2ggaXMgcHJpbWFyaWx5IHRvdWNoaW5nIEFQSSBlbnRyeXBvaW50cyB3aXRoaW4gdGhlIGV4RkFUIGZpbGVzeXN0ZW0sIHNwZWNpZmljYWxseSBgaW5vZGVfb3BlcmF0aW9uc2AsIGBmaWxlX29wZXJhdGlvbnNgLCBgdm1fb3BlcmF0aW9uc19zdHJ1Y3RgLCBhbmQgYGZzX2NvbnRleHRfb3BlcmF0aW9uc2AuIFRoZSBjcml0aWNhbCBzeW1ib2xzIHRvIGhvbmUgaW4gb24gYXJlOiBgZXhmYXRfZmFsbG9jYXRlYCwgYGV4ZmF0X3NldGF0dHJgLCBgZXhmYXRfZmlsZV93cml0ZV9pdGVyYCwgYGV4ZmF0X3BhZ2VfbWt3cml0ZWAsIGBleGZhdF9jcmVhdGVgLCBgZXhmYXRfdW5saW5rYCwgYGV4ZmF0X21rZGlyYCwgYGV4ZmF0X3JtZGlyYCwgYGV4ZmF0X3JlbmFtZWAsIGFuZCBgZXhmYXRfcmVjb25maWd1cmVgLiBUaG9zZSBhcmUgb3VyIGZvY3VzLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIHdlIG5lZWQgdG8gY29uc2lkZXIgYmV5b25kIGp1c3QgdGhlIGNvcmUgYEVYRkFUX0ZTYCBzZXR0aW5nLiBBIHF1aWNrIGNoZWNrIHJldmVhbHMgdGhhdCBgRVhGQVRfRlNgIGlzIHRoZSBvbmx5IG9uZS4gVGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2UgbGllcyBpbiBhbHRlcmluZyBob3cgZXhGQVQgaGFuZGxlcyBlcnJvcnMgYW5kIHJlYWQtb25seSBzdGF0ZXMuIFRoZSBwYXRjaCByZXBsYWNlcyBkaXJlY3QgbWFuaXB1bGF0aW9uIG9mIGBzYi0mZ3Q7c19mbGFncyB8PSBTQl9SRE9OTFlgIHdpdGggYW4gaW50ZXJuYWwgZmxhZywgYEVYRkFUX0ZMQUdTX0VSUk9SX1JPYCwgd2hpY2ggaXMgdGhlbiBjaGVja2VkIGFjcm9zcyBhbGwgd3JpdGUgcGF0aHMuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiB0aGUgZmlsZXN5c3RlbSYjMzk7cyBlcnJvciBoYW5kbGluZyBhbmQgd3JpdGUgYmVoYXZpb3IsIHdoaWNoIGlzIHByZWNpc2VseSB0aGUga2luZCBvZiB0aGluZyB0aGF0ICpuZWVkcyogZnV6emluZy4KCkxldCYjMzk7cyBkbyBhIGRvdWJsZSBjaGVjayBvbiBkZXBlbmRlbmNpZXMuIEl0IGFwcGVhcnMgYEVYRkFUX0ZTYCBkb2VzbiYjMzk7dCBkZXBlbmQgb24gYW55dGhpbmcgZWxzZSwgaXQganVzdCBzZWxlY3RzIGBCVUZGRVJfSEVBRGAsIGBOTFNgLCBhbmQgYEZTX0lPTUFQYC4gUGVyZmVjdC4gU28gZW5hYmxpbmcgYEVYRkFUX0ZTYCBpcyBzdWZmaWNpZW50IHRvIGVuYWJsZSB0aGVzZSBjaGFuZ2VzLCBhbmQgd2UgYXJlIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4KCk5vdywgbGV0JiMzOTtzIGNvbnNvbGlkYXRlIHRoaXMgaW50byBhIGNsZWFyLCBjb25jaXNlIHJlc3BvbnNlLgoKKipGb2N1cyBTeW1ib2xzOioqCgoqICAgYGV4ZmF0X2ZhbGxvY2F0ZWAKKiAgIGBleGZhdF9zZXRhdHRyYAoqICAgYGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcmAKKiAgIGBleGZhdF9wYWdlX21rd3JpdGVgCiogICBgZXhmYXRfY3JlYXRlYAoqICAgYGV4ZmF0X3VubGlua2AKKiAgIGBleGZhdF9ta2RpcmAKKiAgIGBleGZhdF9ybWRpcmAKKiAgIGBleGZhdF9yZW5hbWVgCiogICBgZXhmYXRfcmVjb25maWd1cmVgCgoqKkVuYWJsZSBDb25maWdzOioqCgoqICAgYEVYRkFUX0ZTYAoKKipSZWFzb25pbmc6KioKClRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBleEZBVCYjMzk7cyBlcnJvciBoYW5kbGluZyB3aGVuIG1vdW50ZWQgd2l0aCBgZXJyb3JzPXJlbW91bnQtcm9gLiBJbnN0ZWFkIG9mIGRpcmVjdGx5IG1vZGlmeWluZyB0aGUgVkZTLWxldmVsIGBzYi0mZ3Q7c19mbGFnc2AsIGl0IG5vdyB1c2VzIGFuIGludGVybmFsIGZsYWcsIGBFWEZBVF9GTEFHU19FUlJPUl9ST2AuIFRoaXMgbmV3IGZsYWcgaXMgdGhlbiBjaGVja2VkIHdpdGhpbiBhbGwgd3JpdGUgb3BlcmF0aW9ucy4gVGhpcyByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBmaWxlc3lzdGVtIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaG93IHdyaXRlIG9wZXJhdGlvbnMgYXJlIGhhbmRsZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBlbmNvdW50ZXJzIGFuIGVycm9yLiBDb25zZXF1ZW50bHksIHdlIG11c3QgZnV6eiB0aGlzIHRvIGVuc3VyZSBwcm9wZXIgd3JpdGUgb3BlcmF0aW9uIGFib3J0aW5nIGluIGVycm9yIHN0YXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYRkFUX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXhmYXRfZmFsbG9jYXRlJiMzNDssCiAgICAmIzM0O2V4ZmF0X3NldGF0dHImIzM0OywKICAgICYjMzQ7ZXhmYXRfZmlsZV93cml0ZV9pdGVyJiMzNDssCiAgICAmIzM0O2V4ZmF0X3BhZ2VfbWt3cml0ZSYjMzQ7LAogICAgJiMzNDtleGZhdF9jcmVhdGUmIzM0OywKICAgICYjMzQ7ZXhmYXRfdW5saW5rJiMzNDssCiAgICAmIzM0O2V4ZmF0X21rZGlyJiMzNDssCiAgICAmIzM0O2V4ZmF0X3JtZGlyJiMzNDssCiAgICAmIzM0O2V4ZmF0X3JlbmFtZSYjMzQ7LAogICAgJiMzNDtleGZhdF9yZWNvbmZpZ3VyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGhvdyB0aGUgZXhGQVQgZmlsZXN5c3RlbSBoYW5kbGVzIGVycm9ycyB3aGVuIG1vdW50ZWQgd2l0aCBgZXJyb3JzPXJlbW91bnQtcm9gLiBJbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgVkZTLWxldmVsIGBzYi1cdTAwM2VzX2ZsYWdzYCBkaXJlY3RseSAod2hpY2ggY2FuIGNhdXNlIGxvY2tpbmcgaXNzdWVzKSwgaXQgaW50cm9kdWNlcyBhbiBpbnRlcm5hbCBmbGFnIGBFWEZBVF9GTEFHU19FUlJPUl9ST2AgYW5kIGNoZWNrcyBpdCBpbiBhbGwgd3JpdGUgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB3cml0ZSBvcGVyYXRpb25zIGNvcnJlY3RseSBhYm9ydCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIGluIGFuIGVycm9yIHN0YXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWEZBVF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4ZmF0X2ZhbGxvY2F0ZSYjMzQ7LAogICAgJiMzNDtleGZhdF9zZXRhdHRyJiMzNDssCiAgICAmIzM0O2V4ZmF0X2ZpbGVfd3JpdGVfaXRlciYjMzQ7LAogICAgJiMzNDtleGZhdF9wYWdlX21rd3JpdGUmIzM0OywKICAgICYjMzQ7ZXhmYXRfY3JlYXRlJiMzNDssCiAgICAmIzM0O2V4ZmF0X3VubGluayYjMzQ7LAogICAgJiMzNDtleGZhdF9ta2RpciYjMzQ7LAogICAgJiMzNDtleGZhdF9ybWRpciYjMzQ7LAogICAgJiMzNDtleGZhdF9yZW5hbWUmIzM0OywKICAgICYjMzQ7ZXhmYXRfcmVjb25maWd1cmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBob3cgdGhlIGV4RkFUIGZpbGVzeXN0ZW0gaGFuZGxlcyBlcnJvcnMgd2hlbiBtb3VudGVkIHdpdGggYGVycm9ycz1yZW1vdW50LXJvYC4gSW5zdGVhZCBvZiBtb2RpZnlpbmcgdGhlIFZGUy1sZXZlbCBgc2ItXHUwMDNlc19mbGFnc2AgZGlyZWN0bHkgKHdoaWNoIGNhbiBjYXVzZSBsb2NraW5nIGlzc3VlcyksIGl0IGludHJvZHVjZXMgYW4gaW50ZXJuYWwgZmxhZyBgRVhGQVRfRkxBR1NfRVJST1JfUk9gIGFuZCBjaGVja3MgaXQgaW4gYWxsIHdyaXRlIHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgd3JpdGUgb3BlcmF0aW9ucyBjb3JyZWN0bHkgYWJvcnQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyBpbiBhbiBlcnJvciBzdGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDEyOjUzOjU5Ljg3NDY1Mjg1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTQzNTg4MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYRkFUX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXhmYXRfZmFsbG9jYXRlXCIsXG4gICAgXCJleGZhdF9zZXRhdHRyXCIsXG4gICAgXCJleGZhdF9maWxlX3dyaXRlX2l0ZXJcIixcbiAgICBcImV4ZmF0X3BhZ2VfbWt3cml0ZVwiLFxuICAgIFwiZXhmYXRfY3JlYXRlXCIsXG4gICAgXCJleGZhdF91bmxpbmtcIixcbiAgICBcImV4ZmF0X21rZGlyXCIsXG4gICAgXCJleGZhdF9ybWRpclwiLFxuICAgIFwiZXhmYXRfcmVuYW1lXCIsXG4gICAgXCJleGZhdF9yZWNvbmZpZ3VyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgaG93IHRoZSBleEZBVCBmaWxlc3lzdGVtIGhhbmRsZXMgZXJyb3JzIHdoZW4gbW91bnRlZCB3aXRoIGBlcnJvcnM9cmVtb3VudC1yb2AuIEluc3RlYWQgb2YgbW9kaWZ5aW5nIHRoZSBWRlMtbGV2ZWwgYHNiLVxcdTAwM2VzX2ZsYWdzYCBkaXJlY3RseSAod2hpY2ggY2FuIGNhdXNlIGxvY2tpbmcgaXNzdWVzKSwgaXQgaW50cm9kdWNlcyBhbiBpbnRlcm5hbCBmbGFnIGBFWEZBVF9GTEFHU19FUlJPUl9ST2AgYW5kIGNoZWNrcyBpdCBpbiBhbGwgd3JpdGUgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB3cml0ZSBvcGVyYXRpb25zIGNvcnJlY3RseSBhYm9ydCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIGluIGFuIGVycm9yIHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1Mzo1OS44NzQ2NjAwNDJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDM0MzE3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGUwMTRhMTNiNWQ1OTVlMTc1MTQ5YzkxYTM3MWU2Nzc0ZjYwZTc1YzZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAxMjo1Mzo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leGZhdC9leGZhdF9mcy5oIGIvZnMvZXhmYXQvZXhmYXRfZnMuaFxcbmluZGV4IDliZTUwOTQ5Y2UzNGYuLjUwODQ2NjMwZTFmM2UgMTAwNjQ0XFxuLS0tIGEvZnMvZXhmYXQvZXhmYXRfZnMuaFxcbisrKyBiL2ZzL2V4ZmF0L2V4ZmF0X2ZzLmhcXG5AQCAtMTIyLDYgKzEyMiw3IEBAIGVudW0ge1xcbiBcXG4gLyogU3VwZXJibG9jayBmbGFncyAqL1xcbiAjZGVmaW5lIEVYRkFUX0ZMQUdTX1NIVVRET1dOXFx0MVxcbisjZGVmaW5lIEVYRkFUX0ZMQUdTX0VSUk9SX1JPXFx0MlxcbiBcXG4gc3RydWN0IGV4ZmF0X2RlbnRyeV9uYW1lYnVmIHtcXG4gXFx0Y2hhciAqbGZuO1xcbkBAIC0zMjAsNiArMzIxLDE1IEBAIHN0YXRpYyBpbmxpbmUgaW50IGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbiBcXHRyZXR1cm4gdGVzdF9iaXQoRVhGQVRfRkxBR1NfU0hVVERPV04sIFxcdTAwMjZFWEZBVF9TQihzYiktXFx1MDAzZXNfZXhmYXRfZmxhZ3MpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIGludCBleGZhdF9jaGVja193cml0YWJsZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbit7XFxuK1xcdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oc2IpKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChFWEZBVF9GTEFHU19FUlJPUl9STywgXFx1MDAyNkVYRkFUX1NCKHNiKS1cXHUwMDNlc19leGZhdF9mbGFncykpKVxcbitcXHRcXHRyZXR1cm4gLUVST0ZTO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gLypcXG4gICogSWYgLVxcdTAwM2VpX21vZGUgY2FuJ3QgaG9sZCAwMjIyIChpLmUuIEFUVFJfUk8pLCB3ZSB1c2UgLVxcdTAwM2VpX2F0dHJzIHRvXFxuICAqIHNhdmUgQVRUUl9STyBpbnN0ZWFkIG9mIC1cXHUwMDNlaV9tb2RlLlxcbmRpZmYgLS1naXQgYS9mcy9leGZhdC9maWxlLmMgYi9mcy9leGZhdC9maWxlLmNcXG5pbmRleCA1ZmMxMzM3OGQzNWY3Li5iNmFmZWVkZTI0OTA0IDEwMDY0NFxcbi0tLSBhL2ZzL2V4ZmF0L2ZpbGUuY1xcbisrKyBiL2ZzL2V4ZmF0L2ZpbGUuY1xcbkBAIC0xMjUsOCArMTI1LDkgQEAgc3RhdGljIGxvbmcgZXhmYXRfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSxcXG4gXFx0aWYgKCFTX0lTUkVHKGlub2RlLVxcdTAwM2VpX21vZGUpKVxcbiBcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKGlub2RlLVxcdTAwM2VpX3NiKSkpXFxuLVxcdFxcdHJldHVybiAtRUlPO1xcbitcXHRlcnIgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS1cXHUwMDNlaV9zYik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuIFxcbiBcXHRpbm9kZV9sb2NrKGlub2RlKTtcXG4gXFxuQEAgLTM1NCw4ICszNTUsOSBAQCBpbnQgZXhmYXRfc2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbiBcXHR1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7XFxuIFxcdGludCBlcnJvcjtcXG4gXFxuLVxcdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oaW5vZGUtXFx1MDAzZWlfc2IpKSlcXG4tXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdGVycm9yID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoaW5vZGUtXFx1MDAzZWlfc2IpO1xcbitcXHRpZiAoZXJyb3IpXFxuK1xcdFxcdHJldHVybiBlcnJvcjtcXG4gXFxuIFxcdGlmICgoYXR0ci1cXHUwMDNlaWFfdmFsaWQgXFx1MDAyNiBBVFRSX1NJWkUpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBhdHRyLVxcdTAwM2VpYV9zaXplIFxcdTAwM2UgaV9zaXplX3JlYWQoaW5vZGUpKSB7XFxuQEAgLTczOCw4ICs3NDAsOSBAQCBzdGF0aWMgc3NpemVfdCBleGZhdF9maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXFxuIFxcdGxvZmZfdCB2YWxpZF9zaXplO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihpbm9kZS1cXHUwMDNlaV9zYikpKVxcbi1cXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0cmV0ID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoaW5vZGUtXFx1MDAzZWlfc2IpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuIFxcdGlub2RlX2xvY2soaW5vZGUpO1xcbiBcXG5AQCAtODI2LDYgKzgyOSwxMSBAQCBzdGF0aWMgdm1fZmF1bHRfdCBleGZhdF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuIFxcdHN0cnVjdCBleGZhdF9pbm9kZV9pbmZvICplaSA9IEVYRkFUX0koaW5vZGUpO1xcbiBcXHR2bV9mYXVsdF90IHJldDtcXG4gXFx0bG9mZl90IG5ld192YWxpZF9zaXplLCBtbWFwX3ZhbGlkX3NpemU7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS1cXHUwMDNlaV9zYik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiB2bWZfZnNfZXJyb3IoZXJyKTtcXG4gXFxuIFxcdGlmICghaW5vZGVfdHJ5bG9jayhpbm9kZSkpXFxuIFxcdFxcdHJldHVybiBWTV9GQVVMVF9SRVRSWTtcXG5AQCAtODM1LDggKzg0Myw2IEBAIHN0YXRpYyB2bV9mYXVsdF90IGV4ZmF0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4gXFxuIFxcdGlmIChlaS1cXHUwMDNldmFsaWRfc2l6ZSBcXHUwMDNjIG5ld192YWxpZF9zaXplKSB7XFxuIFxcdFxcdGlmIChlaS1cXHUwMDNlemVyb2VkX3NpemUgXFx1MDAzYyBtbWFwX3ZhbGlkX3NpemUpIHtcXG4tXFx0XFx0XFx0aW50IGVycjtcXG4tXFxuIFxcdFxcdFxcdC8qXFxuIFxcdFxcdFxcdCAqIE9ubHkgemVybyB0aGUgcmFuZ2UgdGhhdCBoYXNuJ3QgYmVlbiB6ZXJvZWQgeWV0IGZvclxcbiBcXHRcXHRcXHQgKiB0aGlzIG1tYXAgd3JpdGUgcGF0aC4gemVyb2VkX3NpemUgdHJhY2tzIHRoZSBsYXJnZXN0XFxuZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L21pc2MuYyBiL2ZzL2V4ZmF0L21pc2MuY1xcbmluZGV4IDZmMTFhOTZhNGZmYTguLmFiODc1NDczZjkzYWUgMTAwNjQ0XFxuLS0tIGEvZnMvZXhmYXQvbWlzYy5jXFxuKysrIGIvZnMvZXhmYXQvbWlzYy5jXFxuQEAgLTQxLDggKzQxLDggQEAgdm9pZCBfX2V4ZmF0X2ZzX2Vycm9yKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCByZXBvcnQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxcbiBcXHRcXHRwYW5pYyhcXFwiZXhGQVQtZnMgKCVzKTogZnMgcGFuaWMgZnJvbSBwcmV2aW91cyBlcnJvclxcXFxuXFxcIixcXG4gXFx0XFx0XFx0c2ItXFx1MDAzZXNfaWQpO1xcbiBcXHR9IGVsc2UgaWYgKG9wdHMtXFx1MDAzZWVycm9ycyA9PSBFWEZBVF9FUlJPUlNfUk8gXFx1MDAyNlxcdTAwMjYgIXNiX3Jkb25seShzYikpIHtcXG4tXFx0XFx0c2ItXFx1MDAzZXNfZmxhZ3MgfD0gU0JfUkRPTkxZO1xcbi1cXHRcXHRleGZhdF9lcnIoc2IsIFxcXCJGaWxlc3lzdGVtIGhhcyBiZWVuIHNldCByZWFkLW9ubHlcXFwiKTtcXG4rXFx0XFx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0KEVYRkFUX0ZMQUdTX0VSUk9SX1JPLCBcXHUwMDI2RVhGQVRfU0Ioc2IpLVxcdTAwM2VzX2V4ZmF0X2ZsYWdzKSlcXG4rXFx0XFx0XFx0ZXhmYXRfZXJyKHNiLCBcXFwiRmlsZXN5c3RlbSBoYXMgYmVlbiBzZXQgcmVhZC1vbmx5XFxcIik7XFxuIFxcdH1cXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZnMvZXhmYXQvbmFtZWkuYyBiL2ZzL2V4ZmF0L25hbWVpLmNcXG5pbmRleCBiN2Q1ZTQ0YWQzOGVlLi5mMDgxNzBkZTYzYjMwIDEwMDY0NFxcbi0tLSBhL2ZzL2V4ZmF0L25hbWVpLmNcXG4rKysgYi9mcy9leGZhdC9uYW1laS5jXFxuQEAgLTU0Nyw4ICs1NDcsOSBAQCBzdGF0aWMgaW50IGV4ZmF0X2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpkaXIsXFxuIFxcdGludCBlcnI7XFxuIFxcdGxvZmZfdCBzaXplID0gaV9zaXplX3JlYWQoZGlyKTtcXG4gXFxuLVxcdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oc2IpKSlcXG4tXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNkVYRkFUX1NCKHNiKS1cXHUwMDNlc19sb2NrKTtcXG4gXFx0ZXhmYXRfc2V0X3ZvbHVtZV9kaXJ0eShzYik7XFxuQEAgLTc2NSwxMCArNzY2LDExIEBAIHN0YXRpYyBpbnQgZXhmYXRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuIFxcdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktXFx1MDAzZWRfaW5vZGU7XFxuIFxcdHN0cnVjdCBleGZhdF9pbm9kZV9pbmZvICplaSA9IEVYRkFUX0koaW5vZGUpO1xcbiBcXHRzdHJ1Y3QgZXhmYXRfZW50cnlfc2V0X2NhY2hlIGVzO1xcbi1cXHRpbnQgZXJyID0gMDtcXG4rXFx0aW50IGVycjtcXG4gXFxuLVxcdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oc2IpKSlcXG4tXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNkVYRkFUX1NCKHNiKS1cXHUwMDNlc19sb2NrKTtcXG4gXFx0aWYgKGVpLVxcdTAwM2VkaXIuZGlyID09IERJUl9ERUxFVEVEKSB7XFxuQEAgLTgyMCw4ICs4MjIsOSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqZXhmYXRfbWtkaXIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxcbiBcXHRpbnQgZXJyO1xcbiBcXHRsb2ZmX3Qgc2l6ZSA9IGlfc2l6ZV9yZWFkKGRpcik7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXFxuLVxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xcbitcXHRlcnIgPSBleGZhdF9jaGVja193cml0YWJsZShzYik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZFWEZBVF9TQihzYiktXFx1MDAzZXNfbG9jayk7XFxuIFxcdGV4ZmF0X3NldF92b2x1bWVfZGlydHkoc2IpO1xcbkBAIC05MTEsOCArOTE0LDkgQEAgc3RhdGljIGludCBleGZhdF9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbiBcXHRzdHJ1Y3QgZXhmYXRfZW50cnlfc2V0X2NhY2hlIGVzO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKVxcbi1cXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2RVhGQVRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX2xvY2spO1xcbiBcXG5AQCAtOTk1LDkgKzk5OSw2IEBAIHN0YXRpYyBpbnQgZXhmYXRfcmVuYW1lX2ZpbGUoc3RydWN0IGlub2RlICpwYXJlbnRfaW5vZGUsXFxuIFxcdGludCBzeW5jID0gSVNfRElSU1lOQyhwYXJlbnRfaW5vZGUpO1xcbiBcXHR1bnNpZ25lZCBpbnQgbnVtX2V4dHJhX2VudHJpZXMsIG51bV90b3RhbF9lbnRyaWVzO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKVxcbi1cXHRcXHRyZXR1cm4gLUVJTztcXG4tXFxuIFxcdG51bV9uZXdfZW50cmllcyA9IGV4ZmF0X2NhbGNfbnVtX2VudHJpZXMocF91bmluYW1lKTtcXG4gXFx0aWYgKG51bV9uZXdfZW50cmllcyBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBudW1fbmV3X2VudHJpZXM7XFxuQEAgLTEyNjcsNiArMTI2OCwxMCBAQCBzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcXG4gXFx0aWYgKGZsYWdzIFxcdTAwMjYgflJFTkFNRV9OT1JFUExBQ0UpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4rXFx0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2RVhGQVRfU0Ioc2IpLVxcdTAwM2VzX2xvY2spO1xcbiBcXHRvbGRfaW5vZGUgPSBvbGRfZGVudHJ5LVxcdTAwM2VkX2lub2RlO1xcbiBcXHRuZXdfaW5vZGUgPSBuZXdfZGVudHJ5LVxcdTAwM2VkX2lub2RlO1xcbmRpZmYgLS1naXQgYS9mcy9leGZhdC9zdXBlci5jIGIvZnMvZXhmYXQvc3VwZXIuY1xcbmluZGV4IDM4OGRiMjcxYzZiZjUuLmRjYjZlMTVlNGQ3ZDQgMTAwNjQ0XFxuLS0tIGEvZnMvZXhmYXQvc3VwZXIuY1xcbisrKyBiL2ZzL2V4ZmF0L3N1cGVyLmNcXG5AQCAtODA3LDYgKzgwNyw5IEBAIHN0YXRpYyBpbnQgZXhmYXRfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbiBcXG4gXFx0c3dhcCgqY3VyX29wdHMsICpuZXdfb3B0cyk7XFxuIFxcbitcXHRpZiAoIShmYy1cXHUwMDNlc2JfZmxhZ3MgXFx1MDAyNiBTQl9SRE9OTFkpKVxcbitcXHRcXHRjbGVhcl9iaXQoRVhGQVRfRkxBR1NfRVJST1JfUk8sIFxcdTAwMjZzYmktXFx1MDAzZXNfZXhmYXRfZmxhZ3MpO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDEyOjU0OjAwLjMzOTY2NTcxOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMyMDc4NTY3MjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYRkFUX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXhmYXRfZmFsbG9jYXRlXCIsXG4gICAgXCJleGZhdF9zZXRhdHRyXCIsXG4gICAgXCJleGZhdF9maWxlX3dyaXRlX2l0ZXJcIixcbiAgICBcImV4ZmF0X3BhZ2VfbWt3cml0ZVwiLFxuICAgIFwiZXhmYXRfY3JlYXRlXCIsXG4gICAgXCJleGZhdF91bmxpbmtcIixcbiAgICBcImV4ZmF0X21rZGlyXCIsXG4gICAgXCJleGZhdF9ybWRpclwiLFxuICAgIFwiZXhmYXRfcmVuYW1lXCIsXG4gICAgXCJleGZhdF9yZWNvbmZpZ3VyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgaG93IHRoZSBleEZBVCBmaWxlc3lzdGVtIGhhbmRsZXMgZXJyb3JzIHdoZW4gbW91bnRlZCB3aXRoIGBlcnJvcnM9cmVtb3VudC1yb2AuIEluc3RlYWQgb2YgbW9kaWZ5aW5nIHRoZSBWRlMtbGV2ZWwgYHNiLVxcdTAwM2VzX2ZsYWdzYCBkaXJlY3RseSAod2hpY2ggY2FuIGNhdXNlIGxvY2tpbmcgaXNzdWVzKSwgaXQgaW50cm9kdWNlcyBhbiBpbnRlcm5hbCBmbGFnIGBFWEZBVF9GTEFHU19FUlJPUl9ST2AgYW5kIGNoZWNrcyBpdCBpbiBhbGwgd3JpdGUgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB3cml0ZSBvcGVyYXRpb25zIGNvcnJlY3RseSBhYm9ydCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIGluIGFuIGVycm9yIHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMDE0YTEzYjVkNTk1ZTE3NTE0OWM5MWEzNzFlNjc3NGY2MGU3NWM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxMjo1Mzo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L2V4ZmF0X2ZzLmggYi9mcy9leGZhdC9leGZhdF9mcy5oXG5pbmRleCA5YmU1MDk0OWNlMzRmLi41MDg0NjYzMGUxZjNlIDEwMDY0NFxuLS0tIGEvZnMvZXhmYXQvZXhmYXRfZnMuaFxuKysrIGIvZnMvZXhmYXQvZXhmYXRfZnMuaFxuQEAgLTEyMiw2ICsxMjIsNyBAQCBlbnVtIHtcbiBcbiAvKiBTdXBlcmJsb2NrIGZsYWdzICovXG4gI2RlZmluZSBFWEZBVF9GTEFHU19TSFVURE9XTlx0MVxuKyNkZWZpbmUgRVhGQVRfRkxBR1NfRVJST1JfUk9cdDJcbiBcbiBzdHJ1Y3QgZXhmYXRfZGVudHJ5X25hbWVidWYge1xuIFx0Y2hhciAqbGZuO1xuQEAgLTMyMCw2ICszMjEsMTUgQEAgc3RhdGljIGlubGluZSBpbnQgZXhmYXRfZm9yY2VkX3NodXRkb3duKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXHRyZXR1cm4gdGVzdF9iaXQoRVhGQVRfRkxBR1NfU0hVVERPV04sIFx1MDAyNkVYRkFUX1NCKHNiKS1cdTAwM2VzX2V4ZmF0X2ZsYWdzKTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBpbnQgZXhmYXRfY2hlY2tfd3JpdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbit7XG4rXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4rXHRcdHJldHVybiAtRUlPO1xuK1x0aWYgKHVubGlrZWx5KHRlc3RfYml0KEVYRkFUX0ZMQUdTX0VSUk9SX1JPLCBcdTAwMjZFWEZBVF9TQihzYiktXHUwMDNlc19leGZhdF9mbGFncykpKVxuK1x0XHRyZXR1cm4gLUVST0ZTO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIC8qXG4gICogSWYgLVx1MDAzZWlfbW9kZSBjYW4ndCBob2xkIDAyMjIgKGkuZS4gQVRUUl9STyksIHdlIHVzZSAtXHUwMDNlaV9hdHRycyB0b1xuICAqIHNhdmUgQVRUUl9STyBpbnN0ZWFkIG9mIC1cdTAwM2VpX21vZGUuXG5kaWZmIC0tZ2l0IGEvZnMvZXhmYXQvZmlsZS5jIGIvZnMvZXhmYXQvZmlsZS5jXG5pbmRleCA1ZmMxMzM3OGQzNWY3Li5iNmFmZWVkZTI0OTA0IDEwMDY0NFxuLS0tIGEvZnMvZXhmYXQvZmlsZS5jXG4rKysgYi9mcy9leGZhdC9maWxlLmNcbkBAIC0xMjUsOCArMTI1LDkgQEAgc3RhdGljIGxvbmcgZXhmYXRfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSxcbiBcdGlmICghU19JU1JFRyhpbm9kZS1cdTAwM2VpX21vZGUpKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKGlub2RlLVx1MDAzZWlfc2IpKSlcbi1cdFx0cmV0dXJuIC1FSU87XG4rXHRlcnIgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS1cdTAwM2VpX3NiKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4gXG4gXHRpbm9kZV9sb2NrKGlub2RlKTtcbiBcbkBAIC0zNTQsOCArMzU1LDkgQEAgaW50IGV4ZmF0X3NldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbiBcdHVuc2lnbmVkIGludCBpYV92YWxpZDtcbiBcdGludCBlcnJvcjtcbiBcbi1cdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oaW5vZGUtXHUwMDNlaV9zYikpKVxuLVx0XHRyZXR1cm4gLUVJTztcbitcdGVycm9yID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoaW5vZGUtXHUwMDNlaV9zYik7XG4rXHRpZiAoZXJyb3IpXG4rXHRcdHJldHVybiBlcnJvcjtcbiBcbiBcdGlmICgoYXR0ci1cdTAwM2VpYV92YWxpZCBcdTAwMjYgQVRUUl9TSVpFKSBcdTAwMjZcdTAwMjZcbiBcdCAgICBhdHRyLVx1MDAzZWlhX3NpemUgXHUwMDNlIGlfc2l6ZV9yZWFkKGlub2RlKSkge1xuQEAgLTczOCw4ICs3NDAsOSBAQCBzdGF0aWMgc3NpemVfdCBleGZhdF9maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4gXHRsb2ZmX3QgdmFsaWRfc2l6ZTtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKGlub2RlLVx1MDAzZWlfc2IpKSlcbi1cdFx0cmV0dXJuIC1FSU87XG4rXHRyZXQgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS1cdTAwM2VpX3NiKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4gXG4gXHRpbm9kZV9sb2NrKGlub2RlKTtcbiBcbkBAIC04MjYsNiArODI5LDExIEBAIHN0YXRpYyB2bV9mYXVsdF90IGV4ZmF0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbiBcdHN0cnVjdCBleGZhdF9pbm9kZV9pbmZvICplaSA9IEVYRkFUX0koaW5vZGUpO1xuIFx0dm1fZmF1bHRfdCByZXQ7XG4gXHRsb2ZmX3QgbmV3X3ZhbGlkX3NpemUsIG1tYXBfdmFsaWRfc2l6ZTtcbitcdGludCBlcnI7XG4rXG4rXHRlcnIgPSBleGZhdF9jaGVja193cml0YWJsZShpbm9kZS1cdTAwM2VpX3NiKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiB2bWZfZnNfZXJyb3IoZXJyKTtcbiBcbiBcdGlmICghaW5vZGVfdHJ5bG9jayhpbm9kZSkpXG4gXHRcdHJldHVybiBWTV9GQVVMVF9SRVRSWTtcbkBAIC04MzUsOCArODQzLDYgQEAgc3RhdGljIHZtX2ZhdWx0X3QgZXhmYXRfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFxuIFx0aWYgKGVpLVx1MDAzZXZhbGlkX3NpemUgXHUwMDNjIG5ld192YWxpZF9zaXplKSB7XG4gXHRcdGlmIChlaS1cdTAwM2V6ZXJvZWRfc2l6ZSBcdTAwM2MgbW1hcF92YWxpZF9zaXplKSB7XG4tXHRcdFx0aW50IGVycjtcbi1cbiBcdFx0XHQvKlxuIFx0XHRcdCAqIE9ubHkgemVybyB0aGUgcmFuZ2UgdGhhdCBoYXNuJ3QgYmVlbiB6ZXJvZWQgeWV0IGZvclxuIFx0XHRcdCAqIHRoaXMgbW1hcCB3cml0ZSBwYXRoLiB6ZXJvZWRfc2l6ZSB0cmFja3MgdGhlIGxhcmdlc3RcbmRpZmYgLS1naXQgYS9mcy9leGZhdC9taXNjLmMgYi9mcy9leGZhdC9taXNjLmNcbmluZGV4IDZmMTFhOTZhNGZmYTguLmFiODc1NDczZjkzYWUgMTAwNjQ0XG4tLS0gYS9mcy9leGZhdC9taXNjLmNcbisrKyBiL2ZzL2V4ZmF0L21pc2MuY1xuQEAgLTQxLDggKzQxLDggQEAgdm9pZCBfX2V4ZmF0X2ZzX2Vycm9yKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCByZXBvcnQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxuIFx0XHRwYW5pYyhcImV4RkFULWZzICglcyk6IGZzIHBhbmljIGZyb20gcHJldmlvdXMgZXJyb3JcXG5cIixcbiBcdFx0XHRzYi1cdTAwM2VzX2lkKTtcbiBcdH0gZWxzZSBpZiAob3B0cy1cdTAwM2VlcnJvcnMgPT0gRVhGQVRfRVJST1JTX1JPIFx1MDAyNlx1MDAyNiAhc2JfcmRvbmx5KHNiKSkge1xuLVx0XHRzYi1cdTAwM2VzX2ZsYWdzIHw9IFNCX1JET05MWTtcbi1cdFx0ZXhmYXRfZXJyKHNiLCBcIkZpbGVzeXN0ZW0gaGFzIGJlZW4gc2V0IHJlYWQtb25seVwiKTtcbitcdFx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0KEVYRkFUX0ZMQUdTX0VSUk9SX1JPLCBcdTAwMjZFWEZBVF9TQihzYiktXHUwMDNlc19leGZhdF9mbGFncykpXG4rXHRcdFx0ZXhmYXRfZXJyKHNiLCBcIkZpbGVzeXN0ZW0gaGFzIGJlZW4gc2V0IHJlYWQtb25seVwiKTtcbiBcdH1cbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZnMvZXhmYXQvbmFtZWkuYyBiL2ZzL2V4ZmF0L25hbWVpLmNcbmluZGV4IGI3ZDVlNDRhZDM4ZWUuLmYwODE3MGRlNjNiMzAgMTAwNjQ0XG4tLS0gYS9mcy9leGZhdC9uYW1laS5jXG4rKysgYi9mcy9leGZhdC9uYW1laS5jXG5AQCAtNTQ3LDggKzU0Nyw5IEBAIHN0YXRpYyBpbnQgZXhmYXRfY3JlYXRlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbiBcdGludCBlcnI7XG4gXHRsb2ZmX3Qgc2l6ZSA9IGlfc2l6ZV9yZWFkKGRpcik7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4tXHRcdHJldHVybiAtRUlPO1xuK1x0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfbG9jayk7XG4gXHRleGZhdF9zZXRfdm9sdW1lX2RpcnR5KHNiKTtcbkBAIC03NjUsMTAgKzc2NiwxMSBAQCBzdGF0aWMgaW50IGV4ZmF0X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0c3RydWN0IGlub2RlICppbm9kZSA9IGRlbnRyeS1cdTAwM2VkX2lub2RlO1xuIFx0c3RydWN0IGV4ZmF0X2lub2RlX2luZm8gKmVpID0gRVhGQVRfSShpbm9kZSk7XG4gXHRzdHJ1Y3QgZXhmYXRfZW50cnlfc2V0X2NhY2hlIGVzO1xuLVx0aW50IGVyciA9IDA7XG4rXHRpbnQgZXJyO1xuIFxuLVx0aWYgKHVubGlrZWx5KGV4ZmF0X2ZvcmNlZF9zaHV0ZG93bihzYikpKVxuLVx0XHRyZXR1cm4gLUVJTztcbitcdGVyciA9IGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNkVYRkFUX1NCKHNiKS1cdTAwM2VzX2xvY2spO1xuIFx0aWYgKGVpLVx1MDAzZWRpci5kaXIgPT0gRElSX0RFTEVURUQpIHtcbkBAIC04MjAsOCArODIyLDkgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmV4ZmF0X21rZGlyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbiBcdGludCBlcnI7XG4gXHRsb2ZmX3Qgc2l6ZSA9IGlfc2l6ZV9yZWFkKGRpcik7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4tXHRcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xuK1x0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfbG9jayk7XG4gXHRleGZhdF9zZXRfdm9sdW1lX2RpcnR5KHNiKTtcbkBAIC05MTEsOCArOTE0LDkgQEAgc3RhdGljIGludCBleGZhdF9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0c3RydWN0IGV4ZmF0X2VudHJ5X3NldF9jYWNoZSBlcztcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAodW5saWtlbHkoZXhmYXRfZm9yY2VkX3NodXRkb3duKHNiKSkpXG4tXHRcdHJldHVybiAtRUlPO1xuK1x0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19sb2NrKTtcbiBcbkBAIC05OTUsOSArOTk5LDYgQEAgc3RhdGljIGludCBleGZhdF9yZW5hbWVfZmlsZShzdHJ1Y3QgaW5vZGUgKnBhcmVudF9pbm9kZSxcbiBcdGludCBzeW5jID0gSVNfRElSU1lOQyhwYXJlbnRfaW5vZGUpO1xuIFx0dW5zaWduZWQgaW50IG51bV9leHRyYV9lbnRyaWVzLCBudW1fdG90YWxfZW50cmllcztcbiBcbi1cdGlmICh1bmxpa2VseShleGZhdF9mb3JjZWRfc2h1dGRvd24oc2IpKSlcbi1cdFx0cmV0dXJuIC1FSU87XG4tXG4gXHRudW1fbmV3X2VudHJpZXMgPSBleGZhdF9jYWxjX251bV9lbnRyaWVzKHBfdW5pbmFtZSk7XG4gXHRpZiAobnVtX25ld19lbnRyaWVzIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gbnVtX25ld19lbnRyaWVzO1xuQEAgLTEyNjcsNiArMTI2OCwxMCBAQCBzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbiBcdGlmIChmbGFncyBcdTAwMjYgflJFTkFNRV9OT1JFUExBQ0UpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0ZXJyID0gZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbiBcdG11dGV4X2xvY2soXHUwMDI2RVhGQVRfU0Ioc2IpLVx1MDAzZXNfbG9jayk7XG4gXHRvbGRfaW5vZGUgPSBvbGRfZGVudHJ5LVx1MDAzZWRfaW5vZGU7XG4gXHRuZXdfaW5vZGUgPSBuZXdfZGVudHJ5LVx1MDAzZWRfaW5vZGU7XG5kaWZmIC0tZ2l0IGEvZnMvZXhmYXQvc3VwZXIuYyBiL2ZzL2V4ZmF0L3N1cGVyLmNcbmluZGV4IDM4OGRiMjcxYzZiZjUuLmRjYjZlMTVlNGQ3ZDQgMTAwNjQ0XG4tLS0gYS9mcy9leGZhdC9zdXBlci5jXG4rKysgYi9mcy9leGZhdC9zdXBlci5jXG5AQCAtODA3LDYgKzgwNyw5IEBAIHN0YXRpYyBpbnQgZXhmYXRfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFxuIFx0c3dhcCgqY3VyX29wdHMsICpuZXdfb3B0cyk7XG4gXG4rXHRpZiAoIShmYy1cdTAwM2VzYl9mbGFncyBcdTAwMjYgU0JfUkRPTkxZKSlcbitcdFx0Y2xlYXJfYml0KEVYRkFUX0ZMQUdTX0VSUk9SX1JPLCBcdTAwMjZzYmktXHUwMDNlc19leGZhdF9mbGFncyk7XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1NDowMC4zMzk2NjcwNjhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDIwNDMwNTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRXhGQVQgRXJyb3IgSGFuZGxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBzb21lIHNpZ25pZmljYW50IGNoYW5nZXMgdG8gdGhlIGV4RkFUIGZpbGVzeXN0ZW0sIHNwZWNpZmljYWxseSBob3cgaXQgZGVhbHMgd2l0aCByZWFkLW9ubHkgZXJyb3JzLiBMb29rcyBsaWtlIHRoZXkncmUgdG91Y2hpbmcgYGV4ZmF0X2ZzLmhgLCBgZmlsZS5jYCwgYG1pc2MuY2AsIGBuYW1laS5jYCwgYW5kIGBzdXBlci5jYC4gVGhhdCdzIGEgZGVjZW50IGNodW5rIG9mIHRoZSBjb3JlIGV4RkFUIGxvZ2ljLCB3aGljaCBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suXG5cblRoZSBnaXN0IG9mIGl0IGlzIHRoaXM6IHRoZXkncmUgaW50cm9kdWNpbmcgYSBuZXcgaW50ZXJuYWwgZmxhZywgYEVYRkFUX0ZMQUdTX0VSUk9SX1JPYCwgYW5kIGEgaGVscGVyIGZ1bmN0aW9uLCBgZXhmYXRfY2hlY2tfd3JpdGFibGUoc2IpYC4gSW5zdGVhZCBvZiBkaXJlY3RseSBzZXR0aW5nIGBTQl9SRE9OTFlgIG9uIHRoZSBzdXBlcmJsb2NrJ3MgZmxhZ3MgaW4gYF9fZXhmYXRfZnNfZXJyb3JgLCB3aGljaCBJIGtub3cgY2FuIGJlIHByb2JsZW1hdGljIGluIHRoZSBWRlMgY29udGV4dCBkdWUgdG8gbG9ja2luZyBpc3N1ZXMsIHRoZXkncmUgc2V0dGluZyB0aGUgaW50ZXJuYWwgYEVYRkFUX0ZMQUdTX0VSUk9SX1JPYCBmbGFnIG9uIHRoZSBleEZBVCBzdXBlcmJsb2NrIGluZm9ybWF0aW9uLiBUaGVuLCAqYWxsKiB0aGUgd3JpdGUgb3BlcmF0aW9ucyDigJMgYGZhbGxvY2F0ZWAsIGBzZXRhdHRyYCwgYHdyaXRlX2l0ZXJgLCBgcGFnZV9ta3dyaXRlYCwgYGNyZWF0ZWAsIGB1bmxpbmtgLCBgbWtkaXJgLCBgcm1kaXJgLCBhbmQgYHJlbmFtZWAg4oCTIGFyZSBiZWluZyB1cGRhdGVkIHRvIGNhbGwgYGV4ZmF0X2NoZWNrX3dyaXRhYmxlKHNiKWAgYW5kIHJldHVybiBgLUVST0ZTYCBpZiB0aGF0IGZsYWcgaXMgc2V0LiBUaGF0J3MgYSBnb29kIGFwcHJvYWNoOyBrZWVwcyB0aGUgVkZTIGhhcHB5LiBBbmQsIG9mIGNvdXJzZSwgYGV4ZmF0X3JlY29uZmlndXJlYCBpcyBnb2luZyB0byBjbGVhciB0aGF0IGZsYWcgd2hlbiB3ZSByZW1vdW50IHJlYWQtd3JpdGUuXG5cblRoaXMgaXMgYSBwcmV0dHkgZnVuZGFtZW50YWwgY2hhbmdlIHRvIGhvdyBleEZBVCBoYW5kbGVzIGl0cyBlcnJvciBzdGF0ZXMgd2hlbiBtb3VudGVkIHdpdGggYGVycm9ycz1yZW1vdW50LXJvYC4gSXQncyBhIGNsZWFyIGltcHJvdmVtZW50IGluIHRlcm1zIG9mIFZGUyBjb21wYXRpYmlsaXR5LCBtb3ZpbmcgYXdheSBmcm9tIGRpcmVjdCBtb2RpZmljYXRpb24gb2YgYHNiLVx1MDAzZXNfZmxhZ3NgLlxuXG4qKkZ1enppbmcgRm9jdXMqKlxuXG5HaXZlbiB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZXMsIHRoaXMgaXMgKmFic29sdXRlbHkqIGEgcGF0Y2ggdGhhdCBuZWVkcyBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IHRoZXkncmUgdG91Y2hpbmcgc28gbWFueSB3cml0ZSBwYXRocyBtYWtlcyBpdCBhIHByaW1lIHRhcmdldC4gV2UncmUgdGFsa2luZyBhYm91dCBjb3JlIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBoZXJlLiBXZSBzaG91bGQgZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6XG5cbiogICBgZXhmYXRfZmFsbG9jYXRlYFxuKiAgIGBleGZhdF9zZXRhdHRyYFxuKiAgIGBleGZhdF9maWxlX3dyaXRlX2l0ZXJgXG4qICAgYGV4ZmF0X3BhZ2VfbWt3cml0ZWBcbiogICBgZXhmYXRfY3JlYXRlYFxuKiAgIGBleGZhdF91bmxpbmtgXG4qICAgYGV4ZmF0X21rZGlyYFxuKiAgIGBleGZhdF9ybWRpcmBcbiogICBgZXhmYXRfcmVuYW1lYFxuKiAgIGBleGZhdF9yZWNvbmZpZ3VyZWBcblxuKipEZXBlbmRlbmNpZXMqKlxuXG5MZXQgbWUgcXVpY2tseSBjaGVjayBgZnMvZXhmYXQvS2NvbmZpZ2AgdG8gbWFrZSBzdXJlIHdlJ3ZlIGdvdCB0aGUgZXhGQVQgZmlsZXN5c3RlbSBlbmFibGVkIC0gWWVwLCBgQ09ORklHX0VYRkFUX0ZTYCBpcyB0aGVyZS4gSSdsbCBhbHNvIHJ1biBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gZG91YmxlLWNoZWNrIGZvciBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzLiBXZSBuZWVkIHRvIGtub3cgaWYgYW55IG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIGluZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1NDowOS4zNjAwOTk2MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTAxMTE1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVhGQVRfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXhmYXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGZhdC9LY29uZmlnLTItXFxuZnMvZXhmYXQvS2NvbmZpZzozOmNvbmZpZyBFWEZBVF9GU1xcbmZzL2V4ZmF0L0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiZXhGQVQgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1NDowOS40MTExMTY5NjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTYyNTIzNDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqRXhhbWluaW5nIHRoZSBFeEZBVCBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBFeEZBVCBmaWxlIHN5c3RlbSB3aXRoaW4gdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24uIFRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBmcy9leGZhdC9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIEV4RkFUIGFyZSBkZWZpbmVkLiBJdCdzIHRoZSBjZW50cmFsIHBsYWNlIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBjb21wb25lbnRzIG9yIHNldHRpbmdzIG5lZWQgdG8gYmUgaW4gcGxhY2UgZm9yIEV4RkFUIHRvIGJlIGJ1aWx0IGFuZCB3b3JrIGNvcnJlY3RseS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGxlYXJuIGFib3V0IHRoZXNlIGRlcGVuZGVuY2llcy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHRoaW5ncyBsaWtlIGVuYWJsaW5nIHNwZWNpZmljIENQVSBmZWF0dXJlcywgb3RoZXIgZmlsZSBzeXN0ZW0gc3VwcG9ydCwgb3IgbmVjZXNzYXJ5IGtlcm5lbCBtb2R1bGVzLiBGcm9tIGhlcmUsIEkgY2FuIHBsYW4gaG93IGJlc3QgdG8gZW5hYmxlIG9yIGJ1aWxkIHRoaXMgY29tcG9uZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzA4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTI6NTQ6MTMuMzczNjQyNTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leGZhdC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxcbiAgIDI6XFx0XFxuICAgMzpcXHRjb25maWcgRVhGQVRfRlNcXG4gICA0OlxcdFxcdHRyaXN0YXRlIFxcXCJleEZBVCBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuICAgNTpcXHRcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG4gICA2OlxcdFxcdHNlbGVjdCBOTFNcXG4gICA3OlxcdFxcdHNlbGVjdCBGU19JT01BUFxcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gbW91bnQgZGV2aWNlcyBmb3JtYXR0ZWQgd2l0aCB0aGUgZXhGQVQgZmlsZSBzeXN0ZW0uXFxuICAxMDpcXHRcXHQgIGV4RkFUIGlzIHR5cGljYWxseSB1c2VkIG9uIFNELUNhcmRzIG9yIFVTQiBzdGlja3MuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXFxuICAxMzpcXHRcXHQgIGV4ZmF0LlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgRVhGQVRfREVGQVVMVF9JT0NIQVJTRVRcXG4gIDE2OlxcdFxcdHN0cmluZyBcXFwiRGVmYXVsdCBpb2NoYXJzZXQgZm9yIGV4RkFUXFxcIlxcbiAgMTc6XFx0XFx0ZGVmYXVsdCBcXFwidXRmOFxcXCJcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gRVhGQVRfRlNcXG4gIDE5OlxcdFxcdGhlbHBcXG4gIDIwOlxcdFxcdCAgU2V0IHRoaXMgdG8gdGhlIGRlZmF1bHQgaW5wdXQvb3V0cHV0IGNoYXJhY3RlciBzZXQgdG8gdXNlIGZvclxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1NDoxMy4zNzM3MDA5MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NjAwODkzNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBxdWljayBydW5kb3duIG9mIHRoZXNlIHRob3VnaHRzOlxuXG4qKkZvY3Vzc2luZyBvbiBFWEZBVCBGdXp6aW5nIEVudHJ5cG9pbnRzKipcblxuUmlnaHQsIHNvIEknbSBob25pbmcgaW4gb24gYEVYRkFUX0ZTYCBhcyB0aGUgY29yZSBjb25maWcgZm9yIHRoaXMuIEl0IHNlZW1zIHdlJ3JlIGxvb2tpbmcgdG8gZnV6eiBzb21lIG1vZGlmaWVkIEVYRkFUIGxvZ2ljLiBMZXQncyBzZWUsIEkgbmVlZCB0byB2ZXJpZnkgd2hpY2ggc3ltYm9scyBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBmdW5jdGlvbnMgdGhhdCBpbnRlcmFjdCB3aXRoIGZpbGUgc3lzdGVtIG9wZXJhdGlvbnMuIEFscmlnaHQsIGxldCBtZSBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZW06IGBleGZhdF9mYWxsb2NhdGVgLCBgZXhmYXRfc2V0YXR0cmAsIGBleGZhdF9maWxlX3dyaXRlX2l0ZXJgLCBgZXhmYXRfcGFnZV9ta3dyaXRlYCwgYGV4ZmF0X2NyZWF0ZWAsIGBleGZhdF91bmxpbmtgLCBgZXhmYXRfbWtkaXJgLCBgZXhmYXRfcm1kaXJgLCBgZXhmYXRfcmVuYW1lYCwgYW5kIGBleGZhdF9yZWNvbmZpZ3VyZWAuIFRob3NlIHNlZW0gbGlrZSBzb2xpZCBjaG9pY2VzLCBoaXR0aW5nIGEgZ29vZCByYW5nZSBvZiBmaWxlIG1hbmlwdWxhdGlvbiBvcGVyYXRpb25zLiBXYWl0IGEgc2Vjb25kLi4uIGlzbid0IGBleGZhdF9maWxlX3dyaXRlX2l0ZXJgIGRlY2xhcmVkIGFzIHN0YXRpYz8gSSdkIGJldHRlciBkb3VibGUtY2hlY2sgaW4gYGZzL2V4ZmF0L2ZpbGUuY2AgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgaW1wb3J0YW50IG9yIHBvdGVudGlhbGx5IG1pc2ludGVycHJldGluZyB0aGUgc3ltYm9sIHZpc2liaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxODMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1NDoxNy45MzM4MDk3MjVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3MzkwNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXhmYXRfZmlsZV93cml0ZV9pdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4ZmF0L2ZpbGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGZhdC9maWxlLmM9NzEwPXN0YXRpYyBzc2l6ZV90IGV4ZmF0X2Rpb193cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbi0tXFxuZnMvZXhmYXQvZmlsZS5jLTczMi1cXG5mcy9leGZhdC9maWxlLmM6NzMzOnN0YXRpYyBzc2l6ZV90IGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcilcXG5mcy9leGZhdC9maWxlLmMtNzM0LXtcXG4tLVxcbmZzL2V4ZmF0L2ZpbGUuYz05NjQ9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBleGZhdF9maWxlX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9leGZhdC9maWxlLmMtOTY3LVxcdC5yZWFkX2l0ZXJcXHQ9IGV4ZmF0X2ZpbGVfcmVhZF9pdGVyLFxcbmZzL2V4ZmF0L2ZpbGUuYzo5Njg6XFx0LndyaXRlX2l0ZXJcXHQ9IGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcixcXG5mcy9leGZhdC9maWxlLmMtOTY5LVxcdC51bmxvY2tlZF9pb2N0bCA9IGV4ZmF0X2lvY3RsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMjo1NDoxNy45OTU1NjYxMTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODMzNDgwOTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQVBJIEVudHJ5cG9pbnQqKlxuXG5Pa2F5LCBzbyB0aGUgY29kZSBpbiBxdWVzdGlvbiAqaXMqIHN0YXRpYywgSSBzZWUgdGhhdC4gSG93ZXZlciwgYW5kIHRoaXMgaXMga2V5LCBpdCdzIGFjdGluZyBhcyBhbiBBUEkgZW50cnlwb2ludCwgc3BlY2lmaWNhbGx5IGBmaWxlX29wZXJhdGlvbnMud3JpdGVfaXRlcmAuIFRoZSBpbnN0cnVjdGlvbnMgd2VyZSB2ZXJ5IGNsZWFyOiB3ZSBzaG91bGQgcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGUgZ29vZCBuZXdzIGhlcmUgaXMgdGhhdCBzaW5jZSBpdCdzIGFzc2lnbmVkIHRvIGEgc3RydWN0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzLCBpdCB3b24ndCBiZSBpbmxpbmVkIGFuZCAqd2lsbCogaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBlZmZlY3RpdmVseSBuZWdhdGluZyB0aGUgZG93bnNpZGVzLlxuXG5CdXQsIGFzIGEgbWF0dGVyIG9mIHByaW5jaXBsZSwgaXQncyBzdGlsbCBiZXN0IHRvIHVzZSBhIG5vbi1zdGF0aWMgb3B0aW9uIGlmIHBvc3NpYmxlLiBJbiB0aGlzIHNwZWNpZmljIGluc3RhbmNlLCBgZXhmYXRfZmlsZV93cml0ZV9pdGVyYCBpcyBhY2NlcHRhYmxlIGdpdmVuIGl0cyBmdW5jdGlvbiBhcyBhbiBlbnRyeXBvaW50LlxuXG5Ob3csIGxldCdzIGtlZXAgbW92aW5nLiBUaW1lIHRvIGNoZWNrIHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbnMgdG8gZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0aGUgY29kaW5nIHN0eWxlIGd1aWRlbGluZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTIsIk91dHB1dFRva2VucyI6NzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTI6NTQ6MjIuODI5MDQ5ODQ5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDkyMDg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIoZXhmYXRfZmFsbG9jYXRlfGV4ZmF0X3NldGF0dHJ8ZXhmYXRfcGFnZV9ta3dyaXRlfGV4ZmF0X2NyZWF0ZXxleGZhdF91bmxpbmt8ZXhmYXRfbWtkaXJ8ZXhmYXRfcm1kaXJ8ZXhmYXRfcmVuYW1lfGV4ZmF0X3JlY29uZmlndXJlKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leGZhdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXhmYXQvZXhmYXRfZnMuaD01Njk9aW50IF9fZXhmYXRfdHJ1bmNhdGUoc3RydWN0IGlub2RlICppbm9kZSk7XFxuZnMvZXhmYXQvZXhmYXRfZnMuaDo1NzA6aW50IGV4ZmF0X3NldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5mcy9leGZhdC9leGZhdF9mcy5oLTU3MS1cXHRcXHQgIHN0cnVjdCBpYXR0ciAqYXR0cik7XFxuLS1cXG5mcy9leGZhdC9leGZhdF9mcy5oPTY3Nz1pbnQgZXhmYXRfbmxzX3RvX3V0ZjE2KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuLS1cXG5mcy9leGZhdC9leGZhdF9mcy5oLTY3OS1cXHRcXHRzdHJ1Y3QgZXhmYXRfdW5pX25hbWUgKnVuaW5hbWUsIGludCAqcF9sb3NzeSk7XFxuZnMvZXhmYXQvZXhmYXRfZnMuaDo2ODA6aW50IGV4ZmF0X2NyZWF0ZV91cGNhc2VfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XFxuZnMvZXhmYXQvZXhmYXRfZnMuaC02ODEtdm9pZCBleGZhdF9mcmVlX3VwY2FzZV90YWJsZShzdHJ1Y3QgZXhmYXRfc2JfaW5mbyAqc2JpKTtcXG4tLVxcbmZzL2V4ZmF0L2ZpbGUuYz0yND1zdGF0aWMgaW50IGV4ZmF0X2NvbnRfZXhwYW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBzaXplKVxcbi0tXFxuZnMvZXhmYXQvZmlsZS5jLTExMi0gKi9cXG5mcy9leGZhdC9maWxlLmM6MTEzOnN0YXRpYyBsb25nIGV4ZmF0X2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsXFxuZnMvZXhmYXQvZmlsZS5jLTExNC1cXHRcXHRcXHQgIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuLS1cXG5mcy9leGZhdC9maWxlLmM9MzM4PWludCBleGZhdF9maWxlYXR0cl9nZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuLS1cXG5mcy9leGZhdC9maWxlLmMtMzQ5LVxcbmZzL2V4ZmF0L2ZpbGUuYzozNTA6aW50IGV4ZmF0X3NldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5mcy9leGZhdC9maWxlLmMtMzUxLVxcdFxcdCAgc3RydWN0IGlhdHRyICphdHRyKVxcbi0tXFxuZnMvZXhmYXQvZmlsZS5jPTQ0Nz1zdGF0aWMgaW50IGV4ZmF0X2lvY3RsX3NldF9hdHRyaWJ1dGVzKHN0cnVjdCBmaWxlICpmaWxlLCB1MzIgX191c2VyICp1c2VyX2F0dHIpXFxuLS1cXG5mcy9leGZhdC9maWxlLmMtNTA0LVxcdC8qIFRoaXMgTVVTVCBiZSBkb25lIGJlZm9yZSBkb2luZyBhbnl0aGluZyBpcnJldmVyc2libGUuLi4gKi9cXG5mcy9leGZhdC9maWxlLmM6NTA1OlxcdGVyciA9IGV4ZmF0X3NldGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGUtXFx1MDAzZWZfcGF0aC5kZW50cnksIFxcdTAwMjZpYSk7XFxuZnMvZXhmYXQvZmlsZS5jLTUwNi1cXHRpZiAoZXJyKVxcbi0tXFxuZnMvZXhmYXQvZmlsZS5jPTgwMz1zdGF0aWMgc3NpemVfdCBleGZhdF9maWxlX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcilcXG4tLVxcbmZzL2V4ZmF0L2ZpbGUuYy04MjUtXFxuZnMvZXhmYXQvZmlsZS5jOjgyNjpzdGF0aWMgdm1fZmF1bHRfdCBleGZhdF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuZnMvZXhmYXQvZmlsZS5jLTgyNy17XFxuLS1cXG5mcy9leGZhdC9maWxlLmM9ODgzPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgZXhmYXRfZmlsZV92bV9vcHMgPSB7XFxuLS1cXG5mcy9leGZhdC9maWxlLmMtODg1LVxcdC5tYXBfcGFnZXNcXHQ9IGZpbGVtYXBfbWFwX3BhZ2VzLFxcbmZzL2V4ZmF0L2ZpbGUuYzo4ODY6XFx0LnBhZ2VfbWt3cml0ZVxcdD0gZXhmYXRfcGFnZV9ta3dyaXRlLFxcbmZzL2V4ZmF0L2ZpbGUuYy04ODctfTtcXG4tLVxcbmZzL2V4ZmF0L2ZpbGUuYz05NjQ9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBleGZhdF9maWxlX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9leGZhdC9maWxlLmMtOTc2LVxcdC5zcGxpY2Vfd3JpdGVcXHQ9IGl0ZXJfZmlsZV9zcGxpY2Vfd3JpdGUsXFxuZnMvZXhmYXQvZmlsZS5jOjk3NzpcXHQuZmFsbG9jYXRlXFx0PSBleGZhdF9mYWxsb2NhdGUsXFxuZnMvZXhmYXQvZmlsZS5jLTk3OC1cXHQuc2V0bGVhc2VcXHQ9IGdlbmVyaWNfc2V0bGVhc2UsXFxuLS1cXG5mcy9leGZhdC9maWxlLmM9OTgxPWNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGV4ZmF0X2ZpbGVfaW5vZGVfb3BlcmF0aW9ucyA9IHtcXG5mcy9leGZhdC9maWxlLmM6OTgyOlxcdC5zZXRhdHRyXFx0PSBleGZhdF9zZXRhdHRyLFxcbmZzL2V4ZmF0L2ZpbGUuYy05ODMtXFx0LmdldGF0dHJcXHQ9IGV4ZmF0X2dldGF0dHIsXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jPTQ2Mj1zdGF0aWMgaW50IGV4ZmF0X2FkZF9lbnRyeShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpwYXRoLFxcbi0tXFxuZnMvZXhmYXQvbmFtZWkuYy01MzktXFxuZnMvZXhmYXQvbmFtZWkuYzo1NDA6c3RhdGljIGludCBleGZhdF9jcmVhdGUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxcbmZzL2V4ZmF0L25hbWVpLmMtNTQxLVxcdFxcdFxcdHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlLCBib29sIGV4Y2wpXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jPTcxMT1zdGF0aWMgc3RydWN0IGRlbnRyeSAqZXhmYXRfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jLTc2Mi0vKiByZW1vdmUgYW4gZW50cnksIEJVVCBkb24ndCB0cnVuY2F0ZSAqL1xcbmZzL2V4ZmF0L25hbWVpLmM6NzYzOnN0YXRpYyBpbnQgZXhmYXRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuZnMvZXhmYXQvbmFtZWkuYy03NjQte1xcbi0tXFxuZnMvZXhmYXQvbmFtZWkuYy04MTQtXFxuZnMvZXhmYXQvbmFtZWkuYzo4MTU6c3RhdGljIHN0cnVjdCBkZW50cnkgKmV4ZmF0X21rZGlyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcXG5mcy9leGZhdC9uYW1laS5jLTgxNi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlKVxcbi0tXFxuZnMvZXhmYXQvbmFtZWkuYz04NjI9c3RhdGljIGludCBleGZhdF9jaGVja19kaXJfZW1wdHkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4ZmF0L25hbWVpLmMtOTA2LVxcbmZzL2V4ZmF0L25hbWVpLmM6OTA3OnN0YXRpYyBpbnQgZXhmYXRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG5mcy9leGZhdC9uYW1laS5jLTkwOC17XFxuLS1cXG5mcy9leGZhdC9uYW1laS5jPTk3OT1zdGF0aWMgaW50IGV4ZmF0X2NvdW50X2V4dHJhX2VudHJpZXMoc3RydWN0IGV4ZmF0X2VudHJ5X3NldF9jYWNoZSAqZXMpXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jLTk5MS1cXG5mcy9leGZhdC9uYW1laS5jOjk5MjpzdGF0aWMgaW50IGV4ZmF0X3JlbmFtZV9maWxlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2lub2RlLFxcbmZzL2V4ZmF0L25hbWVpLmMtOTkzLVxcdFxcdHN0cnVjdCBleGZhdF91bmlfbmFtZSAqcF91bmluYW1lLCBzdHJ1Y3QgZXhmYXRfaW5vZGVfaW5mbyAqZWkpXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jPTEwNzU9c3RhdGljIGludCBleGZhdF9tb3ZlX2ZpbGUoc3RydWN0IGlub2RlICpwYXJlbnRfaW5vZGUsXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jLTExNDUtLyogcmVuYW1lIG9yIG1vdmUgYSBvbGQgZmlsZSBpbnRvIGEgbmV3IGZpbGUgKi9cXG5mcy9leGZhdC9uYW1laS5jOjExNDY6c3RhdGljIGludCBfX2V4ZmF0X3JlbmFtZShzdHJ1Y3QgaW5vZGUgKm9sZF9wYXJlbnRfaW5vZGUsXFxuZnMvZXhmYXQvbmFtZWkuYy0xMTQ3LVxcdFxcdHN0cnVjdCBleGZhdF9pbm9kZV9pbmZvICplaSwgc3RydWN0IGlub2RlICpuZXdfcGFyZW50X2lub2RlLFxcbi0tXFxuZnMvZXhmYXQvbmFtZWkuYy0xMjAwLVxcdGlmIChuZXdfcGFyZW50X2lub2RlID09IG9sZF9wYXJlbnRfaW5vZGUpXFxuZnMvZXhmYXQvbmFtZWkuYzoxMjAxOlxcdFxcdHJldCA9IGV4ZmF0X3JlbmFtZV9maWxlKG5ld19wYXJlbnRfaW5vZGUsIFxcdTAwMjZ1bmlfbmFtZSwgZWkpO1xcbmZzL2V4ZmF0L25hbWVpLmMtMTIwMi1cXHRlbHNlXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jLTEyMjAtXFxuZnMvZXhmYXQvbmFtZWkuYzoxMjIxOlxcdFxcdC8qIEZyZWUgdGhlIGNsdXN0ZXJzIGlmIG5ld19pbm9kZSBpcyBhIGRpcihhcyBpZiBleGZhdF9ybWRpcikgKi9cXG5mcy9leGZhdC9uYW1laS5jLTEyMjItXFx0XFx0aWYgKFNfSVNESVIobmV3X2lub2RlLVxcdTAwM2VpX21vZGUpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5mcy9leGZhdC9uYW1laS5jLTEyNTEtXFxuZnMvZXhmYXQvbmFtZWkuYzoxMjUyOnN0YXRpYyBpbnQgZXhmYXRfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbmZzL2V4ZmF0L25hbWVpLmMtMTI1My1cXHRcXHRcXHRzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jLTEyNzgtXFxuZnMvZXhmYXQvbmFtZWkuYzoxMjc5OlxcdGVyciA9IF9fZXhmYXRfcmVuYW1lKG9sZF9kaXIsIEVYRkFUX0kob2xkX2lub2RlKSwgbmV3X2RpciwgbmV3X2RlbnRyeSk7XFxuZnMvZXhmYXQvbmFtZWkuYy0xMjgwLVxcdGlmIChlcnIpXFxuLS1cXG5mcy9leGZhdC9uYW1laS5jPTEzMzE9Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgZXhmYXRfZGlyX2lub2RlX29wZXJhdGlvbnMgPSB7XFxuZnMvZXhmYXQvbmFtZWkuYzoxMzMyOlxcdC5jcmVhdGVcXHRcXHQ9IGV4ZmF0X2NyZWF0ZSxcXG5mcy9leGZhdC9uYW1laS5jLTEzMzMtXFx0Lmxvb2t1cFxcdFxcdD0gZXhmYXRfbG9va3VwLFxcbmZzL2V4ZmF0L25hbWVpLmM6MTMzNDpcXHQudW5saW5rXFx0XFx0PSBleGZhdF91bmxpbmssXFxuZnMvZXhmYXQvbmFtZWkuYzoxMzM1OlxcdC5ta2RpclxcdFxcdD0gZXhmYXRfbWtkaXIsXFxuZnMvZXhmYXQvbmFtZWkuYzoxMzM2OlxcdC5ybWRpclxcdFxcdD0gZXhmYXRfcm1kaXIsXFxuZnMvZXhmYXQvbmFtZWkuYzoxMzM3OlxcdC5yZW5hbWVcXHRcXHQ9IGV4ZmF0X3JlbmFtZSxcXG5mcy9leGZhdC9uYW1laS5jOjEzMzg6XFx0LnNldGF0dHJcXHQ9IGV4ZmF0X3NldGF0dHIsXFxuZnMvZXhmYXQvbmFtZWkuYy0xMzM5LVxcdC5nZXRhdHRyXFx0PSBleGZhdF9nZXRhdHRyLFxcbi0tXFxuZnMvZXhmYXQvbmxzLmM9NzAyPXN0YXRpYyBpbnQgZXhmYXRfbG9hZF9kZWZhdWx0X3VwY2FzZV90YWJsZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbi0tXFxuZnMvZXhmYXQvbmxzLmMtNzM3LVxcbmZzL2V4ZmF0L25scy5jOjczODppbnQgZXhmYXRfY3JlYXRlX3VwY2FzZV90YWJsZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbmZzL2V4ZmF0L25scy5jLTczOS17XFxuLS1cXG5mcy9leGZhdC9zdXBlci5jPTU5Nj1zdGF0aWMgaW50IF9fZXhmYXRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXhmYXQvc3VwZXIuYy02MjUtXFxuZnMvZXhmYXQvc3VwZXIuYzo2MjY6XFx0cmV0ID0gZXhmYXRfY3JlYXRlX3VwY2FzZV90YWJsZShzYik7XFxuZnMvZXhmYXQvc3VwZXIuYy02MjctXFx0aWYgKHJldCkge1xcbi0tXFxuZnMvZXhmYXQvc3VwZXIuYz03NjA9c3RhdGljIHZvaWQgZXhmYXRfZnJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy9leGZhdC9zdXBlci5jLTc2Ny1cXG5mcy9leGZhdC9zdXBlci5jOjc2ODpzdGF0aWMgaW50IGV4ZmF0X3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9leGZhdC9zdXBlci5jLTc2OS17XFxuLS1cXG5mcy9leGZhdC9zdXBlci5jPTgxNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBleGZhdF9jb250ZXh0X29wcyA9IHtcXG4tLVxcbmZzL2V4ZmF0L3N1cGVyLmMtODE5LVxcdC5mcmVlXFx0XFx0PSBleGZhdF9mcmVlLFxcbmZzL2V4ZmF0L3N1cGVyLmM6ODIwOlxcdC5yZWNvbmZpZ3VyZVxcdD0gZXhmYXRfcmVjb25maWd1cmUsXFxuZnMvZXhmYXQvc3VwZXIuYy04MjEtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTI6NTQ6MjIuODc5OTc5NDU3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0NTg3MjE2MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGV4RkFUIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCB0aGlzIHBhdGNoIGlzIHByaW1hcmlseSB0b3VjaGluZyBBUEkgZW50cnlwb2ludHMgd2l0aGluIHRoZSBleEZBVCBmaWxlc3lzdGVtLCBzcGVjaWZpY2FsbHkgYGlub2RlX29wZXJhdGlvbnNgLCBgZmlsZV9vcGVyYXRpb25zYCwgYHZtX29wZXJhdGlvbnNfc3RydWN0YCwgYW5kIGBmc19jb250ZXh0X29wZXJhdGlvbnNgLiBUaGUgY3JpdGljYWwgc3ltYm9scyB0byBob25lIGluIG9uIGFyZTogYGV4ZmF0X2ZhbGxvY2F0ZWAsIGBleGZhdF9zZXRhdHRyYCwgYGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcmAsIGBleGZhdF9wYWdlX21rd3JpdGVgLCBgZXhmYXRfY3JlYXRlYCwgYGV4ZmF0X3VubGlua2AsIGBleGZhdF9ta2RpcmAsIGBleGZhdF9ybWRpcmAsIGBleGZhdF9yZW5hbWVgLCBhbmQgYGV4ZmF0X3JlY29uZmlndXJlYC4gVGhvc2UgYXJlIG91ciBmb2N1cy5cblxuTm93LCBsZXQncyBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgd2UgbmVlZCB0byBjb25zaWRlciBiZXlvbmQganVzdCB0aGUgY29yZSBgRVhGQVRfRlNgIHNldHRpbmcuIEEgcXVpY2sgY2hlY2sgcmV2ZWFscyB0aGF0IGBFWEZBVF9GU2AgaXMgdGhlIG9ubHkgb25lLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBsaWVzIGluIGFsdGVyaW5nIGhvdyBleEZBVCBoYW5kbGVzIGVycm9ycyBhbmQgcmVhZC1vbmx5IHN0YXRlcy4gVGhlIHBhdGNoIHJlcGxhY2VzIGRpcmVjdCBtYW5pcHVsYXRpb24gb2YgYHNiLVx1MDAzZXNfZmxhZ3MgfD0gU0JfUkRPTkxZYCB3aXRoIGFuIGludGVybmFsIGZsYWcsIGBFWEZBVF9GTEFHU19FUlJPUl9ST2AsIHdoaWNoIGlzIHRoZW4gY2hlY2tlZCBhY3Jvc3MgYWxsIHdyaXRlIHBhdGhzLiBUaGlzIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiB0aGUgZmlsZXN5c3RlbSdzIGVycm9yIGhhbmRsaW5nIGFuZCB3cml0ZSBiZWhhdmlvciwgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgKm5lZWRzKiBmdXp6aW5nLlxuXG5MZXQncyBkbyBhIGRvdWJsZSBjaGVjayBvbiBkZXBlbmRlbmNpZXMuIEl0IGFwcGVhcnMgYEVYRkFUX0ZTYCBkb2Vzbid0IGRlcGVuZCBvbiBhbnl0aGluZyBlbHNlLCBpdCBqdXN0IHNlbGVjdHMgYEJVRkZFUl9IRUFEYCwgYE5MU2AsIGFuZCBgRlNfSU9NQVBgLiBQZXJmZWN0LiBTbyBlbmFibGluZyBgRVhGQVRfRlNgIGlzIHN1ZmZpY2llbnQgdG8gZW5hYmxlIHRoZXNlIGNoYW5nZXMsIGFuZCB3ZSBhcmUgcmVhZHkgdG8gbW92ZSBmb3J3YXJkLlxuXG5Ob3csIGxldCdzIGNvbnNvbGlkYXRlIHRoaXMgaW50byBhIGNsZWFyLCBjb25jaXNlIHJlc3BvbnNlLlxuXG4qKkZvY3VzIFN5bWJvbHM6KipcblxuKiAgIGBleGZhdF9mYWxsb2NhdGVgXG4qICAgYGV4ZmF0X3NldGF0dHJgXG4qICAgYGV4ZmF0X2ZpbGVfd3JpdGVfaXRlcmBcbiogICBgZXhmYXRfcGFnZV9ta3dyaXRlYFxuKiAgIGBleGZhdF9jcmVhdGVgXG4qICAgYGV4ZmF0X3VubGlua2BcbiogICBgZXhmYXRfbWtkaXJgXG4qICAgYGV4ZmF0X3JtZGlyYFxuKiAgIGBleGZhdF9yZW5hbWVgXG4qICAgYGV4ZmF0X3JlY29uZmlndXJlYFxuXG4qKkVuYWJsZSBDb25maWdzOioqXG5cbiogICBgRVhGQVRfRlNgXG5cbioqUmVhc29uaW5nOioqXG5cblRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBleEZBVCdzIGVycm9yIGhhbmRsaW5nIHdoZW4gbW91bnRlZCB3aXRoIGBlcnJvcnM9cmVtb3VudC1yb2AuIEluc3RlYWQgb2YgZGlyZWN0bHkgbW9kaWZ5aW5nIHRoZSBWRlMtbGV2ZWwgYHNiLVx1MDAzZXNfZmxhZ3NgLCBpdCBub3cgdXNlcyBhbiBpbnRlcm5hbCBmbGFnLCBgRVhGQVRfRkxBR1NfRVJST1JfUk9gLiBUaGlzIG5ldyBmbGFnIGlzIHRoZW4gY2hlY2tlZCB3aXRoaW4gYWxsIHdyaXRlIG9wZXJhdGlvbnMuIFRoaXMgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgZmlsZXN5c3RlbSBsb2dpYywgc3BlY2lmaWNhbGx5IGhvdyB3cml0ZSBvcGVyYXRpb25zIGFyZSBoYW5kbGVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gZW5jb3VudGVycyBhbiBlcnJvci4gQ29uc2VxdWVudGx5LCB3ZSBtdXN0IGZ1enogdGhpcyB0byBlbnN1cmUgcHJvcGVyIHdyaXRlIG9wZXJhdGlvbiBhYm9ydGluZyBpbiBlcnJvciBzdGF0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5NjIsIk91dHB1dFRva2VucyI6MjE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDEyOjU0OjMyLjMzODcwMzEyNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NTI3MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWEZBVF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4ZmF0X2ZhbGxvY2F0ZVwiLFxuICAgIFwiZXhmYXRfc2V0YXR0clwiLFxuICAgIFwiZXhmYXRfZmlsZV93cml0ZV9pdGVyXCIsXG4gICAgXCJleGZhdF9wYWdlX21rd3JpdGVcIixcbiAgICBcImV4ZmF0X2NyZWF0ZVwiLFxuICAgIFwiZXhmYXRfdW5saW5rXCIsXG4gICAgXCJleGZhdF9ta2RpclwiLFxuICAgIFwiZXhmYXRfcm1kaXJcIixcbiAgICBcImV4ZmF0X3JlbmFtZVwiLFxuICAgIFwiZXhmYXRfcmVjb25maWd1cmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGhvdyB0aGUgZXhGQVQgZmlsZXN5c3RlbSBoYW5kbGVzIGVycm9ycyB3aGVuIG1vdW50ZWQgd2l0aCBgZXJyb3JzPXJlbW91bnQtcm9gLiBJbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgVkZTLWxldmVsIGBzYi1cXHUwMDNlc19mbGFnc2AgZGlyZWN0bHkgKHdoaWNoIGNhbiBjYXVzZSBsb2NraW5nIGlzc3VlcyksIGl0IGludHJvZHVjZXMgYW4gaW50ZXJuYWwgZmxhZyBgRVhGQVRfRkxBR1NfRVJST1JfUk9gIGFuZCBjaGVja3MgaXQgaW4gYWxsIHdyaXRlIHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgd3JpdGUgb3BlcmF0aW9ucyBjb3JyZWN0bHkgYWJvcnQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyBpbiBhbiBlcnJvciBzdGF0ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWEZBVF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4ZmF0X2ZhbGxvY2F0ZVwiLFxuICAgIFwiZXhmYXRfc2V0YXR0clwiLFxuICAgIFwiZXhmYXRfZmlsZV93cml0ZV9pdGVyXCIsXG4gICAgXCJleGZhdF9wYWdlX21rd3JpdGVcIixcbiAgICBcImV4ZmF0X2NyZWF0ZVwiLFxuICAgIFwiZXhmYXRfdW5saW5rXCIsXG4gICAgXCJleGZhdF9ta2RpclwiLFxuICAgIFwiZXhmYXRfcm1kaXJcIixcbiAgICBcImV4ZmF0X3JlbmFtZVwiLFxuICAgIFwiZXhmYXRfcmVjb25maWd1cmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGhvdyB0aGUgZXhGQVQgZmlsZXN5c3RlbSBoYW5kbGVzIGVycm9ycyB3aGVuIG1vdW50ZWQgd2l0aCBgZXJyb3JzPXJlbW91bnQtcm9gLiBJbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgVkZTLWxldmVsIGBzYi1cXHUwMDNlc19mbGFnc2AgZGlyZWN0bHkgKHdoaWNoIGNhbiBjYXVzZSBsb2NraW5nIGlzc3VlcyksIGl0IGludHJvZHVjZXMgYW4gaW50ZXJuYWwgZmxhZyBgRVhGQVRfRkxBR1NfRVJST1JfUk9gIGFuZCBjaGVja3MgaXQgaW4gYWxsIHdyaXRlIHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgd3JpdGUgb3BlcmF0aW9ucyBjb3JyZWN0bHkgYWJvcnQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyBpbiBhbiBlcnJvciBzdGF0ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslqb[1] Phase: Succeeded StartedAt: 2026-08-06 12:54:58 +0000 UTC FinishedAt: 2026-08-06 12:54:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 12:54:58 +0000 UTC FinishedAt: 2026-08-06 12:54:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2] Phase: Succeeded StartedAt: 2026-08-06 12:54:58 +0000 UTC FinishedAt: 2026-08-06 16:37:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 12:54:58 +0000 UTC FinishedAt: 2026-08-06 16:37:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 12:54:58 +0000 UTC FinishedAt: 2026-08-06 12:55:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 12:54:58 +0000 UTC FinishedAt: 2026-08-06 12:55:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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-workflowtslqb/series-workflowtslqb-convert-artifact-2637296710/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 12:55:09 +0000 UTC FinishedAt: 2026-08-06 13:12:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 12:55:09 +0000 UTC FinishedAt: 2026-08-06 13:12:23 +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:*e1a90ce7-a433-4751-ac75-ad845e753250,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-workflowtslqb/series-workflowtslqb-convert-artifact-2637296710/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": "60d36b1c-fbff-40e5-837f-7447ea38ef81", "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-workflowtslqb/series-workflowtslqb-build-action-3911107036/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 12:55:09 +0000 UTC FinishedAt: 2026-08-06 13:12:13 +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:*e1a90ce7-a433-4751-ac75-ad845e753250,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-workflowtslqb/series-workflowtslqb-convert-artifact-2637296710/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": "60d36b1c-fbff-40e5-837f-7447ea38ef81", "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-workflowtslqb/series-workflowtslqb-build-action-3911107036/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:12:23 +0000 UTC FinishedAt: 2026-08-06 13:12:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:12:23 +0000 UTC FinishedAt: 2026-08-06 13:12:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:12:23 +0000 UTC FinishedAt: 2026-08-06 13:12:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:12:23 +0000 UTC FinishedAt: 2026-08-06 13:12:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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-workflowtslqb/series-workflowtslqb-convert-artifact-2153162649/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:12:33 +0000 UTC FinishedAt: 2026-08-06 13:14:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:12:33 +0000 UTC FinishedAt: 2026-08-06 13:14:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*60d36b1c-fbff-40e5-837f-7447ea38ef81,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-workflowtslqb/series-workflowtslqb-build-action-3911107036/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-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:14:24 +0000 UTC FinishedAt: 2026-08-06 13:14:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:14:24 +0000 UTC FinishedAt: 2026-08-06 13:14:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:14:24 +0000 UTC FinishedAt: 2026-08-06 13:30:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:14:24 +0000 UTC FinishedAt: 2026-08-06 13:30: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:*e1a90ce7-a433-4751-ac75-ad845e753250,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-workflowtslqb/series-workflowtslqb-convert-artifact-2153162649/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": "dd57b70e-70bf-43e7-8b6f-03219334c259", "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-workflowtslqb/series-workflowtslqb-build-action-4097881845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:14:24 +0000 UTC FinishedAt: 2026-08-06 13:30:22 +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:*e1a90ce7-a433-4751-ac75-ad845e753250,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-workflowtslqb/series-workflowtslqb-convert-artifact-2153162649/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": "dd57b70e-70bf-43e7-8b6f-03219334c259", "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-workflowtslqb/series-workflowtslqb-build-action-4097881845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:30:32 +0000 UTC FinishedAt: 2026-08-06 13:30:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:30:32 +0000 UTC FinishedAt: 2026-08-06 13:30:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:30:32 +0000 UTC FinishedAt: 2026-08-06 13:32:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:30:32 +0000 UTC FinishedAt: 2026-08-06 13:32:15 +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:*dd57b70e-70bf-43e7-8b6f-03219334c259,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-workflowtslqb/series-workflowtslqb-build-action-4097881845/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-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:32:25 +0000 UTC FinishedAt: 2026-08-06 16:37:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:32:25 +0000 UTC FinishedAt: 2026-08-06 16:37:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"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:*60d36b1c-fbff-40e5-837f-7447ea38ef81,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dd57b70e-70bf-43e7-8b6f-03219334c259,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-workflowtslqb/series-workflowtslqb-build-action-3911107036/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-workflowtslqb/series-workflowtslqb-build-action-4097881845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:32:25 +0000 UTC FinishedAt: 2026-08-06 13:32:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:32:25 +0000 UTC FinishedAt: 2026-08-06 13:32:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"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-workflowtslqb/series-workflowtslqb-convert-artifact-4175705486/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:32:25 +0000 UTC FinishedAt: 2026-08-06 13:32:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:32:25 +0000 UTC FinishedAt: 2026-08-06 13:32:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:32:25 +0000 UTC FinishedAt: 2026-08-06 13:32:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:32:35 +0000 UTC FinishedAt: 2026-08-06 16:37:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"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"],"focus":null,"focus_symbols":["exfat_fallocate","exfat_setattr","exfat_file_write_iter","exfat_page_mkwrite","exfat_create","exfat_unlink","exfat_mkdir","exfat_rmdir","exfat_rename","exfat_reconfigure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXFAT_FS"],"series_id":"ea3a3905-1ca5-48e6-bba5-a8fab97d4494","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 13:32:35 +0000 UTC FinishedAt: 2026-08-06 16:37:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*60d36b1c-fbff-40e5-837f-7447ea38ef81,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dd57b70e-70bf-43e7-8b6f-03219334c259,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-workflowtslqb/series-workflowtslqb-build-action-3911107036/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-workflowtslqb/series-workflowtslqb-build-action-4097881845/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-workflowtslqb/series-workflowtslqb-convert-artifact-4175705486/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,}