Name: series-workflow65l68 Phase: Succeeded StartedAt: 2026-07-16 18:32:16 +0000 UTC FinishedAt: 2026-07-16 19:56:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[0] Phase: Succeeded StartedAt: 2026-07-16 18:32:16 +0000 UTC FinishedAt: 2026-07-16 18:48:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 18:32:16 +0000 UTC FinishedAt: 2026-07-16 18:48:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "25f744ffa0c8e799e06250ce2e618367b166b0d4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "25f744ffa0c8e799e06250ce2e618367b166b0d4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "820cd291-53df-4765-b17e-9645f26a7f4d" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "uv_alloc_stor_var", "uv_free_stor_var", "uv_alloc_range_cb", "uv_free_range_cb", "ex_handler_zeropad", "do_secure_storage_access", "kvm_s390_pv_alloc_vm", "kvm_s390_pv_dealloc_vm" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3V2X2FsbG9jX3N0b3JfdmFyJiMzNDssCiAgICAmIzM0O3V2X2ZyZWVfc3Rvcl92YXImIzM0OywKICAgICYjMzQ7dXZfYWxsb2NfcmFuZ2VfY2ImIzM0OywKICAgICYjMzQ7dXZfZnJlZV9yYW5nZV9jYiYjMzQ7LAogICAgJiMzNDtleF9oYW5kbGVyX3plcm9wYWQmIzM0OywKICAgICYjMzQ7ZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3B2X2FsbG9jX3ZtJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3B2X2RlYWxsb2Nfdm0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gczM5MCBhcmNoaXRlY3R1cmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9mIHVuYWxpZ25lZCB3b3JkIGxvYWRzIHdpdGggemVybyBwYWRkaW5nIChgbG9hZF91bmFsaWduZWRfemVyb3BhZGAsIGBleF9oYW5kbGVyX3plcm9wYWRgKSwgYW5kIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBLVk0gUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIChgdXZfYWxsb2Nfc3Rvcl92YXJgLCBgdXZfZnJlZV9zdG9yX3ZhcmApLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZywgd2hpY2ggc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IHNhZmV0eSBhbmQgY29ycmVjdG5lc3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YjY0NThmYjkzNjJhYmQ0N2M2M2QxNjg5MDVjNTAxMmM4NTg3NTg2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMTg6NDc6MTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL0tjb25maWcgYi9hcmNoL3MzOTAvS2NvbmZpZ1xuaW5kZXggODQ0MDRlNjc3OGQ1MDQuLmZlODFjNTM5ZWYyZmZjIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9LY29uZmlnXG5AQCAtMTYzLDYgJiM0MzsxNjMsNyBAQCBjb25maWcgUzM5MFxuIFx0c2VsZWN0IEFSQ0hfV0FOVFNfVEhQX1NXQVBcbiBcdHNlbGVjdCBCVUlMRFRJTUVfVEFCTEVfU09SVFxuIFx0c2VsZWN0IENMT05FX0JBQ0tXQVJEUzJcbiYjNDM7XHRzZWxlY3QgRENBQ0hFX1dPUkRfQUNDRVNTIGlmICFLTVNBTlxuIFx0c2VsZWN0IERZTkFNSUNfRlRSQUNFIGlmIEZVTkNUSU9OX1RSQUNFUlxuIFx0c2VsZWN0IEZVTkNUSU9OX0FMSUdOTUVOVF84QiBpZiBDQ19JU19HQ0NcbiBcdHNlbGVjdCBGVU5DVElPTl9BTElHTk1FTlRfMTZCIGlmICFDQ19JU19HQ0NcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXNtLWV4dGFibGUuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9hc20tZXh0YWJsZS5oXG5pbmRleCA5OTc0OGMyMGU3NjcxMy4uZDIzZWEwYzk0ZTRlYTYgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXNtLWV4dGFibGUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FzbS1leHRhYmxlLmhcbkBAIC0xMiw2ICYjNDM7MTIsNyBAQFxuICNkZWZpbmUgRVhfVFlQRV9VQV9GQVVMVFx0M1xuICNkZWZpbmUgRVhfVFlQRV9VQV9MT0FEX1JFR1x0NVxuICNkZWZpbmUgRVhfVFlQRV9VQV9MT0FEX1JFR1BBSVJcdDZcbiYjNDM7I2RlZmluZSBFWF9UWVBFX1pFUk9QQURcdFx0N1xuICNkZWZpbmUgRVhfVFlQRV9GUENcdFx0OFxuICNkZWZpbmUgRVhfVFlQRV9VQV9NVkNPU19UT1x0OVxuICNkZWZpbmUgRVhfVFlQRV9VQV9NVkNPU19GUk9NXHQxMFxuQEAgLTc5LDYgJiM0Mzs4MCw5IEBAXG4gI2RlZmluZSBFWF9UQUJMRV9VQV9MT0FEX1JFR1BBSVIoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZXJyLCBfcmVnemVybylcdFxcXG4gXHRfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9VQV9MT0FEX1JFR1BBSVIsIF9yZWdlcnIsIF9yZWd6ZXJvLCAwKVxuIFxuJiM0MzsjZGVmaW5lIEVYX1RBQkxFX1pFUk9QQUQoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZGF0YSwgX3JlZ2FkZHIpXHRcdFxcXG4mIzQzO1x0X19FWF9UQUJMRShfX2V4X3RhYmxlLCBfZmF1bHQsIF90YXJnZXQsIEVYX1RZUEVfWkVST1BBRCwgX3JlZ2RhdGEsIF9yZWdhZGRyLCAwKVxuJiM0MztcbiAjZGVmaW5lIEVYX1RBQkxFX0ZQQyhfZmF1bHQsIF90YXJnZXQpXHRcdFx0XHRcdFxcXG4gXHRfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9GUEMsIF9fc3RyaW5naWZ5KCUlcjApLCBfX3N0cmluZ2lmeSglJXIwKSwgMClcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdXYuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS91di5oXG5pbmRleCBkOTE5ZTY5NjYyZjU4NC4uMTUzZmVkNjNhZGRhM2MgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdXYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3V2LmhcbkBAIC02MzUsNiAmIzQzOzYzNSw4IEBAIGludCBzMzkwX3dpZ2dsZV9zcGxpdF9mb2xpbyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGZvbGlvICpmb2xpbyk7XG4gaW50IF9fbWFrZV9mb2xpb19zZWN1cmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHV2X2NiX2hlYWRlciAqdXZjYik7XG4gaW50IHV2X2NvbnZlcnRfZnJvbV9zZWN1cmUodW5zaWduZWQgbG9uZyBwYWRkcik7XG4gaW50IHV2X2NvbnZlcnRfZnJvbV9zZWN1cmVfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbyk7XG4mIzQzO3ZvaWQgKnV2X2FsbG9jX3N0b3JfdmFyKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG4mIzQzO3ZvaWQgdXZfZnJlZV9zdG9yX3Zhcih2b2lkICpzdG9yX3Zhcik7XG4gXG4gdm9pZCBzZXR1cF91dih2b2lkKTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS93b3JkLWF0LWEtdGltZS5oXG5pbmRleCBlOTI4NzAzNjM5MmQwOC4uZWFhMTlkZWU3Njk5NDEgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3dvcmQtYXQtYS10aW1lLmhcbkBAIC00LDYgJiM0Mzs0LDcgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRvcHMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dvcmRwYXJ0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYXNtL2FzbS1leHRhYmxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vYml0c3BlcmxvbmcuaFx1MDAzZVxuIFxuIHN0cnVjdCB3b3JkX2F0X2FfdGltZSB7XG5AQCAtNDAsNCAmIzQzOzQxLDI1IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB6ZXJvX2J5dGVtYXNrKHVuc2lnbmVkIGxvbmcgZGF0YSlcbiBcdHJldHVybiB+MVVMIFx1MDAzY1x1MDAzYyBkYXRhO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogTG9hZCBhbiB1bmFsaWduZWQgd29yZCBmcm9tIGtlcm5lbCBzcGFjZS5cbiYjNDM7ICpcbiYjNDM7ICogSW4gdGhlICh2ZXJ5IHVubGlrZWx5KSBjYXNlIG9mIHRoZSB3b3JkIGJlaW5nIGEgcGFnZS1jcm9zc2VyXG4mIzQzOyAqIGFuZCB0aGUgbmV4dCBwYWdlIG5vdCBiZWluZyBtYXBwZWQsIHRha2UgdGhlIGV4Y2VwdGlvbiBhbmRcbiYjNDM7ICogcmV0dXJuIHplcm9lcyBpbiB0aGUgbm9uLWV4aXN0aW5nIHBhcnQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbG9hZF91bmFsaWduZWRfemVyb3BhZChjb25zdCB2b2lkICphZGRyKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBkYXRhO1xuJiM0MztcbiYjNDM7XHRhc21faW5saW5lIHZvbGF0aWxlKFxuJiM0MztcdFx0XCYjMzQ7MDpcdGxnXHQlW2RhdGFdLDAoJVthZGRyXSlcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0OzE6XHRub3ByXHQlJXI3XFxuXCYjMzQ7XG4mIzQzO1x0XHRFWF9UQUJMRV9aRVJPUEFEKDBiLCAxYiwgJVtkYXRhXSwgJVthZGRyXSlcbiYjNDM7XHRcdEVYX1RBQkxFX1pFUk9QQUQoMWIsIDFiLCAlW2RhdGFdLCAlW2FkZHJdKVxuJiM0MztcdFx0OiBbZGF0YV0gXCYjMzQ7PWRcJiMzNDsgKGRhdGEpXG4mIzQzO1x0XHQ6IFthZGRyXSBcJiMzNDthXCYjMzQ7IChhZGRyKSwgXCYjMzQ7bVwmIzM0OyAoKih1bnNpZ25lZCBsb25nICopYWRkcikpO1xuJiM0MztcdHJldHVybiBkYXRhO1xuJiM0Mzt9XG4mIzQzO1xuICNlbmRpZiAvKiBfQVNNX1dPUkRfQVRfQV9USU1FX0ggKi9cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL3V2LmMgYi9hcmNoL3MzOTAva2VybmVsL3V2LmNcbmluZGV4IGEyODRmOThkOTcxNjgwLi45OGE3Zjk4OGZjNjkxZCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rZXJuZWwvdXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2tlcm5lbC91di5jXG5AQCAtMTYsNiAmIzQzOzE2LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zd2FwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wYWdld2Fsay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYmFja2luZy1kZXYuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vZmFjaWxpdHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9zZWN0aW9ucy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3V2LmhcdTAwM2VcbkBAIC0yMDksNiAmIzQzOzIxMCw2NCBAQCBpbnQgdXZfY29udmVydF9mcm9tX3NlY3VyZV9wdGUocHRlX3QgcHRlKVxuIFx0cmV0dXJuIHV2X2NvbnZlcnRfZnJvbV9zZWN1cmVfZm9saW8ocGZuX2ZvbGlvKHB0ZV9wZm4ocHRlKSkpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCB1dl9mcmVlX3JhbmdlX2NiKHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmRhdGEpXG4mIzQzO3tcbiYjNDM7XHRwdGVfdCBwdGUgPSBwdGVwX2dldChwdGVwKTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFwdGVfcHJlc2VudChwdGUpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0X19mcmVlX3BhZ2UocHRlX3BhZ2UocHRlKSk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgdXZfZnJlZV9zdG9yX3Zhcih2b2lkICpzdG9yX3ZhcilcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgYWRkciwgc2l6ZTtcbiYjNDM7XHRzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhO1xuJiM0MztcbiYjNDM7XHRpZiAoIXN0b3JfdmFyKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdGFyZWEgPSBmaW5kX3ZtX2FyZWEoc3Rvcl92YXIpO1xuJiM0MztcdGlmIChXQVJOX09OX09OQ0UoIWFyZWEgfHwgIShhcmVhLVx1MDAzZWZsYWdzIFx1MDAyNiBWTV9TUEFSU0UpKSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHRzaXplID0gZ2V0X3ZtX2FyZWFfc2l6ZShhcmVhKTtcbiYjNDM7XHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYXJlYS1cdTAwM2VhZGRyO1xuJiM0MztcdGFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2UoXHUwMDI2aW5pdF9tbSwgYWRkciwgc2l6ZSwgdXZfZnJlZV9yYW5nZV9jYiwgTlVMTCk7XG4mIzQzO1x0ZnJlZV92bV9hcmVhKGFyZWEpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVModXZfZnJlZV9zdG9yX3ZhciwgXCYjMzQ7a3ZtXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgdXZfYWxsb2NfcmFuZ2VfY2IocHRlX3QgKnB0ZXAsIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwYWdlICpwYWdlO1xuJiM0MztcdHB0ZV90IHB0ZTtcbiYjNDM7XG4mIzQzO1x0cGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyk7XG4mIzQzO1x0aWYgKCFwYWdlKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0cHRlID0gX19wdGUocGFnZV90b19waHlzKHBhZ2UpIHwgcGdwcm90X3ZhbChQQUdFX0tFUk5FTCkpO1xuJiM0MztcdHNldF9wdGUocHRlcCwgcHRlKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dm9pZCAqdXZfYWxsb2Nfc3Rvcl92YXIodW5zaWduZWQgbG9uZyBzaXplKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHZtX3N0cnVjdCAqYXJlYTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGFkZHI7XG4mIzQzO1xuJiM0MztcdGFyZWEgPSBnZXRfdm1fYXJlYShzaXplLCBWTV9TUEFSU0UpO1xuJiM0MztcdGlmICghYXJlYSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcdGFkZHIgPSAodW5zaWduZWQgbG9uZylhcmVhLVx1MDAzZWFkZHI7XG4mIzQzO1x0aWYgKGFwcGx5X3RvX3BhZ2VfcmFuZ2UoXHUwMDI2aW5pdF9tbSwgYWRkciwgc2l6ZSwgdXZfYWxsb2NfcmFuZ2VfY2IsIE5VTEwpKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0cmV0dXJuIGFyZWEtXHUwMDNlYWRkcjtcbiYjNDM7b3V0OlxuJiM0MztcdHV2X2ZyZWVfc3Rvcl92YXIoYXJlYS1cdTAwM2VhZGRyKTtcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKHV2X2FsbG9jX3N0b3JfdmFyLCBcJiMzNDtrdm1cJiMzNDspO1xuJiM0MztcbiAvKlxuICAqIENhbGN1bGF0ZSB0aGUgZXhwZWN0ZWQgcmVmX2NvdW50IGZvciBhIGZvbGlvIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgbm9cbiAgKiBmdXJ0aGVyIHBpbnMuIFRoaXMgd2FzIGNyaWJiZWQgZnJvbSBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBvdGhlciBwbGFjZXMgaW5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3B2LmMgYi9hcmNoL3MzOTAva3ZtL3B2LmNcbmluZGV4IDFiZWFjYzg0MWNhODUwLi5kYzVhYzI5YjRjMzExOCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vcHYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9wdi5jXG5AQCAtMzM3LDcgJiM0MzszMzcsNyBAQCBpbnQga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKVxuIC8qIG9ubHkgZnJlZSByZXNvdXJjZXMgd2hlbiB0aGUgZGVzdHJveSB3YXMgc3VjY2Vzc2Z1bCAqL1xuIHN0YXRpYyB2b2lkIGt2bV9zMzkwX3B2X2RlYWxsb2Nfdm0oc3RydWN0IGt2bSAqa3ZtKVxuIHtcbi1cdHZmcmVlKGt2bS1cdTAwM2VhcmNoLnB2LnN0b3JfdmFyKTtcbiYjNDM7XHR1dl9mcmVlX3N0b3JfdmFyKGt2bS1cdTAwM2VhcmNoLnB2LnN0b3JfdmFyKTtcbiBcdGZyZWVfcGFnZXMoa3ZtLVx1MDAzZWFyY2gucHYuc3Rvcl9iYXNlLFxuIFx0XHQgICBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9iYXNlX3N0b3JfbGVuKSk7XG4gXHRrdm1fczM5MF9jbGVhcl9wdl9zdGF0ZShrdm0pO1xuQEAgLTM2OSw3ICYjNDM7MzY5LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wdl9hbGxvY192bShzdHJ1Y3Qga3ZtICprdm0pXG4gXHQvKiBBbGxvY2F0ZSB2YXJpYWJsZSBzdG9yYWdlICovXG4gXHR2bGVuID0gQUxJR04odmlydCAqICgobnBhZ2VzICogUEFHRV9TSVpFKSAvIEhQQUdFX1NJWkUpLCBQQUdFX1NJWkUpO1xuIFx0dmxlbiAmIzQzOz0gdXZfaW5mby5ndWVzdF92aXJ0X2Jhc2Vfc3Rvcl9sZW47XG4tXHRrdm0tXHUwMDNlYXJjaC5wdi5zdG9yX3ZhciA9IHZ6YWxsb2Modmxlbik7XG4mIzQzO1x0a3ZtLVx1MDAzZWFyY2gucHYuc3Rvcl92YXIgPSB1dl9hbGxvY19zdG9yX3Zhcih2bGVuKTtcbiBcdGlmICgha3ZtLVx1MDAzZWFyY2gucHYuc3Rvcl92YXIpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcdHJldHVybiAwO1xuQEAgLTQxNCw3ICYjNDM7NDE0LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wdl9kaXNwb3NlX29uZV9sZWZ0b3ZlcihzdHJ1Y3Qga3ZtICprdm0sXG4gXHQgKi9cbiBcdGZyZWVfcGFnZXMobGVmdG92ZXItXHUwMDNlc3Rvcl9iYXNlLCBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9iYXNlX3N0b3JfbGVuKSk7XG4gXHRmcmVlX3BhZ2VzKGxlZnRvdmVyLVx1MDAzZW9sZF9nbWFwX3RhYmxlLCBDUlNUX0FMTE9DX09SREVSKTtcbi1cdHZmcmVlKGxlZnRvdmVyLVx1MDAzZXN0b3JfdmFyKTtcbiYjNDM7XHR1dl9mcmVlX3N0b3JfdmFyKGxlZnRvdmVyLVx1MDAzZXN0b3JfdmFyKTtcbiBkb25lX2Zhc3Q6XG4gXHRhdG9taWNfZGVjKFx1MDAyNmt2bS1cdTAwM2VtbS1cdTAwM2Vjb250ZXh0LnByb3RlY3RlZF9jb3VudCk7XG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jIGIvYXJjaC9zMzkwL21tL2V4dGFibGUuY1xuaW5kZXggMDYzYjQzNDY3NDJkOTYuLjc0OThlODU4YzQwMTk1IDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL21tL2V4dGFibGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL21tL2V4dGFibGUuY1xuQEAgLTUwLDYgJiM0Mzs1MCwyMiBAQCBzdGF0aWMgYm9vbCBleF9oYW5kbGVyX3VhX2xvYWRfcmVnKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBleF9oYW5kbGVyX3plcm9wYWQoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgaW50IHJlZ19hZGRyID0gRklFTERfR0VUKEVYX0RBVEFfUkVHX0FERFIsIGV4LVx1MDAzZWRhdGEpO1xuJiM0MztcdHVuc2lnbmVkIGludCByZWdfZGF0YSA9IEZJRUxEX0dFVChFWF9EQVRBX1JFR19FUlIsIGV4LVx1MDAzZWRhdGEpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgZGF0YSwgYWRkciwgb2Zmc2V0O1xuJiM0MztcbiYjNDM7XHRhZGRyID0gcmVncy1cdTAwM2VncHJzW3JlZ19hZGRyXTtcbiYjNDM7XHRvZmZzZXQgPSBhZGRyIFx1MDAyNiAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSk7XG4mIzQzO1x0YWRkciBcdTAwMjY9IH4oc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSk7XG4mIzQzO1x0ZGF0YSA9ICoodW5zaWduZWQgbG9uZyAqKWFkZHI7XG4mIzQzO1x0ZGF0YSBcdTAwM2NcdTAwM2M9IEJJVFNfUEVSX0JZVEUgKiBvZmZzZXQ7XG4mIzQzO1x0cmVncy1cdTAwM2VncHJzW3JlZ19kYXRhXSA9IGRhdGE7XG4mIzQzO1x0cmVncy1cdTAwM2Vwc3cuYWRkciA9IGV4dGFibGVfZml4dXAoZXgpO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBib29sIGV4X2hhbmRsZXJfZnBjKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncylcbiB7XG4gXHRmcHVfc2ZwYygwKTtcbkBAIC0xMTgsNiAmIzQzOzEzNCw4IEBAIGJvb2wgZml4dXBfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuIFx0XHRyZXR1cm4gZXhfaGFuZGxlcl91YV9sb2FkX3JlZyhleCwgZmFsc2UsIHJlZ3MpO1xuIFx0Y2FzZSBFWF9UWVBFX1VBX0xPQURfUkVHUEFJUjpcbiBcdFx0cmV0dXJuIGV4X2hhbmRsZXJfdWFfbG9hZF9yZWcoZXgsIHRydWUsIHJlZ3MpO1xuJiM0MztcdGNhc2UgRVhfVFlQRV9aRVJPUEFEOlxuJiM0MztcdFx0cmV0dXJuIGV4X2hhbmRsZXJfemVyb3BhZChleCwgcmVncyk7XG4gXHRjYXNlIEVYX1RZUEVfRlBDOlxuIFx0XHRyZXR1cm4gZXhfaGFuZGxlcl9mcGMoZXgsIHJlZ3MpO1xuIFx0Y2FzZSBFWF9UWVBFX1VBX01WQ09TX1RPOlxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9tbS9mYXVsdC5jIGIvYXJjaC9zMzkwL21tL2ZhdWx0LmNcbmluZGV4IDAyOGFlYjljNDhkNmZmLi5kYjc3YzhjMDAyM2VlNiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9tbS9mYXVsdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvbW0vZmF1bHQuY1xuQEAgLTQzOCwxMyAmIzQzOzQzOCw5IEBAIHZvaWQgZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuIFx0XHRwYW5pYyhcJiMzNDtVbmV4cGVjdGVkIFBHTSAweDNkIHdpdGggVEVJRCBiaXQgNjE9MFwmIzM0Oyk7XG4gXHR9XG4gXHRpZiAoaXNfa2VybmVsX2ZhdWx0KHJlZ3MpKSB7XG4tXHRcdGZvbGlvID0gdmlydF90b19mb2xpbygodm9pZCAqKWFkZHIpO1xuLVx0XHRpZiAodW5saWtlbHkoIWZvbGlvX3RyeV9nZXQoZm9saW8pKSlcbi1cdFx0XHRyZXR1cm47XG4tXHRcdHJjID0gdXZfY29udmVydF9mcm9tX3NlY3VyZShmb2xpb190b19waHlzKGZvbGlvKSk7XG4tXHRcdGlmICghcmMpXG4tXHRcdFx0Y2xlYXJfYml0KFBHX2FyY2hfMSwgXHUwMDI2Zm9saW8tXHUwMDNlZmxhZ3MuZik7XG4tXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4mIzQzO1x0XHRpZiAoaXNfdm1hbGxvY19hZGRyKCh2b2lkICopYWRkcikpXG4mIzQzO1x0XHRcdHJldHVybiBoYW5kbGVfZmF1bHRfZXJyb3Jfbm9sb2NrKHJlZ3MsIDApO1xuJiM0MztcdFx0cmMgPSB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlKF9fcGEoYWRkcikpO1xuIFx0XHQvKlxuIFx0XHQgKiBUaGVyZSBhcmUgc29tZSB2YWxpZCBmaXh1cCB0eXBlcyBmb3Iga2VybmVsXG4gXHRcdCAqIGFjY2Vzc2VzIHRvIGRvbmF0ZWQgc2VjdXJlIG1lbW9yeS4gemVyb3BhZCBpcyBvbmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxODo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1dl9hbGxvY19zdG9yX3ZhciYjMzQ7LAogICAgJiMzNDt1dl9mcmVlX3N0b3JfdmFyJiMzNDssCiAgICAmIzM0O3V2X2FsbG9jX3JhbmdlX2NiJiMzNDssCiAgICAmIzM0O3V2X2ZyZWVfcmFuZ2VfY2ImIzM0OywKICAgICYjMzQ7ZXhfaGFuZGxlcl96ZXJvcGFkJiMzNDssCiAgICAmIzM0O2RvX3NlY3VyZV9zdG9yYWdlX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wdl9hbGxvY192bSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wdl9kZWFsbG9jX3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHMzOTAgYXJjaGl0ZWN0dXJlIGNvZGUsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvZiB1bmFsaWduZWQgd29yZCBsb2FkcyB3aXRoIHplcm8gcGFkZGluZyAoYGxvYWRfdW5hbGlnbmVkX3plcm9wYWRgLCBgZXhfaGFuZGxlcl96ZXJvcGFkYCksIGFuZCBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgS1ZNIFByb3RlY3RlZCBWaXJ0dWFsaXphdGlvbiAoYHV2X2FsbG9jX3N0b3JfdmFyYCwgYHV2X2ZyZWVfc3Rvcl92YXJgKS4gVGhlc2UgY2hhbmdlcyBtb2RpZnkgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBleGNlcHRpb24gaGFuZGxpbmcsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG1lbW9yeSBzYWZldHkgYW5kIGNvcnJlY3RuZXNzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YjY0NThmYjkzNjJhYmQ0N2M2M2QxNjg5MDVjNTAxMmM4NTg3NTg2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMTYgMTg6NDc6MTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvS2NvbmZpZyBiL2FyY2gvczM5MC9LY29uZmlnCmluZGV4IDg0NDA0ZTY3NzhkNTA0Li5mZTgxYzUzOWVmMmZmYyAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL0tjb25maWcKQEAgLTE2Myw2ICYjNDM7MTYzLDcgQEAgY29uZmlnIFMzOTAKIAlzZWxlY3QgQVJDSF9XQU5UU19USFBfU1dBUAogCXNlbGVjdCBCVUlMRFRJTUVfVEFCTEVfU09SVAogCXNlbGVjdCBDTE9ORV9CQUNLV0FSRFMyCiYjNDM7CXNlbGVjdCBEQ0FDSEVfV09SRF9BQ0NFU1MgaWYgIUtNU0FOCiAJc2VsZWN0IERZTkFNSUNfRlRSQUNFIGlmIEZVTkNUSU9OX1RSQUNFUgogCXNlbGVjdCBGVU5DVElPTl9BTElHTk1FTlRfOEIgaWYgQ0NfSVNfR0NDCiAJc2VsZWN0IEZVTkNUSU9OX0FMSUdOTUVOVF8xNkIgaWYgIUNDX0lTX0dDQwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FzbS1leHRhYmxlLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXNtLWV4dGFibGUuaAppbmRleCA5OTc0OGMyMGU3NjcxMy4uZDIzZWEwYzk0ZTRlYTYgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9hc20tZXh0YWJsZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9hc20tZXh0YWJsZS5oCkBAIC0xMiw2ICYjNDM7MTIsNyBAQAogI2RlZmluZSBFWF9UWVBFX1VBX0ZBVUxUCTMKICNkZWZpbmUgRVhfVFlQRV9VQV9MT0FEX1JFRwk1CiAjZGVmaW5lIEVYX1RZUEVfVUFfTE9BRF9SRUdQQUlSCTYKJiM0MzsjZGVmaW5lIEVYX1RZUEVfWkVST1BBRAkJNwogI2RlZmluZSBFWF9UWVBFX0ZQQwkJOAogI2RlZmluZSBFWF9UWVBFX1VBX01WQ09TX1RPCTkKICNkZWZpbmUgRVhfVFlQRV9VQV9NVkNPU19GUk9NCTEwCkBAIC03OSw2ICYjNDM7ODAsOSBAQAogI2RlZmluZSBFWF9UQUJMRV9VQV9MT0FEX1JFR1BBSVIoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZXJyLCBfcmVnemVybykJXAogCV9fRVhfVEFCTEUoX19leF90YWJsZSwgX2ZhdWx0LCBfdGFyZ2V0LCBFWF9UWVBFX1VBX0xPQURfUkVHUEFJUiwgX3JlZ2VyciwgX3JlZ3plcm8sIDApCiAKJiM0MzsjZGVmaW5lIEVYX1RBQkxFX1pFUk9QQUQoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZGF0YSwgX3JlZ2FkZHIpCQlcCiYjNDM7CV9fRVhfVEFCTEUoX19leF90YWJsZSwgX2ZhdWx0LCBfdGFyZ2V0LCBFWF9UWVBFX1pFUk9QQUQsIF9yZWdkYXRhLCBfcmVnYWRkciwgMCkKJiM0MzsKICNkZWZpbmUgRVhfVEFCTEVfRlBDKF9mYXVsdCwgX3RhcmdldCkJCQkJCVwKIAlfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9GUEMsIF9fc3RyaW5naWZ5KCUlcjApLCBfX3N0cmluZ2lmeSglJXIwKSwgMCkKIApkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3V2LmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdXYuaAppbmRleCBkOTE5ZTY5NjYyZjU4NC4uMTUzZmVkNjNhZGRhM2MgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS91di5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS91di5oCkBAIC02MzUsNiAmIzQzOzYzNSw4IEBAIGludCBzMzkwX3dpZ2dsZV9zcGxpdF9mb2xpbyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGZvbGlvICpmb2xpbyk7CiBpbnQgX19tYWtlX2ZvbGlvX3NlY3VyZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3QgdXZfY2JfaGVhZGVyICp1dmNiKTsKIGludCB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlKHVuc2lnbmVkIGxvbmcgcGFkZHIpOwogaW50IHV2X2NvbnZlcnRfZnJvbV9zZWN1cmVfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbyk7CiYjNDM7dm9pZCAqdXZfYWxsb2Nfc3Rvcl92YXIodW5zaWduZWQgbG9uZyBzaXplKTsKJiM0Mzt2b2lkIHV2X2ZyZWVfc3Rvcl92YXIodm9pZCAqc3Rvcl92YXIpOwogCiB2b2lkIHNldHVwX3V2KHZvaWQpOwogCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS93b3JkLWF0LWEtdGltZS5oCmluZGV4IGU5Mjg3MDM2MzkyZDA4Li5lYWExOWRlZTc2OTk0MSAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3dvcmQtYXQtYS10aW1lLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3dvcmQtYXQtYS10aW1lLmgKQEAgLTQsNiAmIzQzOzQsNyBAQAogCiAjaW5jbHVkZSAmbHQ7bGludXgvYml0b3BzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvd29yZHBhcnQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YXNtL2FzbS1leHRhYmxlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2JpdHNwZXJsb25nLmgmZ3Q7CiAKIHN0cnVjdCB3b3JkX2F0X2FfdGltZSB7CkBAIC00MCw0ICYjNDM7NDEsMjUgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHplcm9fYnl0ZW1hc2sodW5zaWduZWQgbG9uZyBkYXRhKQogCXJldHVybiB+MVVMICZsdDsmbHQ7IGRhdGE7CiB9CiAKJiM0MzsvKgomIzQzOyAqIExvYWQgYW4gdW5hbGlnbmVkIHdvcmQgZnJvbSBrZXJuZWwgc3BhY2UuCiYjNDM7ICoKJiM0MzsgKiBJbiB0aGUgKHZlcnkgdW5saWtlbHkpIGNhc2Ugb2YgdGhlIHdvcmQgYmVpbmcgYSBwYWdlLWNyb3NzZXIKJiM0MzsgKiBhbmQgdGhlIG5leHQgcGFnZSBub3QgYmVpbmcgbWFwcGVkLCB0YWtlIHRoZSBleGNlcHRpb24gYW5kCiYjNDM7ICogcmV0dXJuIHplcm9lcyBpbiB0aGUgbm9uLWV4aXN0aW5nIHBhcnQuCiYjNDM7ICovCiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGxvYWRfdW5hbGlnbmVkX3plcm9wYWQoY29uc3Qgdm9pZCAqYWRkcikKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZGF0YTsKJiM0MzsKJiM0MzsJYXNtX2lubGluZSB2b2xhdGlsZSgKJiM0MzsJCSYjMzQ7MDoJbGcJJVtkYXRhXSwwKCVbYWRkcl0pXG4mIzM0OwomIzQzOwkJJiMzNDsxOglub3ByCSUlcjdcbiYjMzQ7CiYjNDM7CQlFWF9UQUJMRV9aRVJPUEFEKDBiLCAxYiwgJVtkYXRhXSwgJVthZGRyXSkKJiM0MzsJCUVYX1RBQkxFX1pFUk9QQUQoMWIsIDFiLCAlW2RhdGFdLCAlW2FkZHJdKQomIzQzOwkJOiBbZGF0YV0gJiMzNDs9ZCYjMzQ7IChkYXRhKQomIzQzOwkJOiBbYWRkcl0gJiMzNDthJiMzNDsgKGFkZHIpLCAmIzM0O20mIzM0OyAoKih1bnNpZ25lZCBsb25nICopYWRkcikpOwomIzQzOwlyZXR1cm4gZGF0YTsKJiM0Mzt9CiYjNDM7CiAjZW5kaWYgLyogX0FTTV9XT1JEX0FUX0FfVElNRV9IICovCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL3V2LmMgYi9hcmNoL3MzOTAva2VybmVsL3V2LmMKaW5kZXggYTI4NGY5OGQ5NzE2ODAuLjk4YTdmOTg4ZmM2OTFkIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva2VybmVsL3V2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2tlcm5lbC91di5jCkBAIC0xNiw2ICYjNDM7MTYsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3N3YXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wYWdld2Fsay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2JhY2tpbmctZGV2LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3ZtYWxsb2MuaCZndDsKICNpbmNsdWRlICZsdDthc20vZmFjaWxpdHkuaCZndDsKICNpbmNsdWRlICZsdDthc20vc2VjdGlvbnMuaCZndDsKICNpbmNsdWRlICZsdDthc20vdXYuaCZndDsKQEAgLTIwOSw2ICYjNDM7MjEwLDY0IEBAIGludCB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlX3B0ZShwdGVfdCBwdGUpCiAJcmV0dXJuIHV2X2NvbnZlcnRfZnJvbV9zZWN1cmVfZm9saW8ocGZuX2ZvbGlvKHB0ZV9wZm4ocHRlKSkpOwogfQogCiYjNDM7c3RhdGljIGludCB1dl9mcmVlX3JhbmdlX2NiKHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlwdGVfdCBwdGUgPSBwdGVwX2dldChwdGVwKTsKJiM0MzsKJiM0MzsJaWYgKCFwdGVfcHJlc2VudChwdGUpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CV9fZnJlZV9wYWdlKHB0ZV9wYWdlKHB0ZSkpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCB1dl9mcmVlX3N0b3JfdmFyKHZvaWQgKnN0b3JfdmFyKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgbG9uZyBhZGRyLCBzaXplOwomIzQzOwlzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhOwomIzQzOwomIzQzOwlpZiAoIXN0b3JfdmFyKQomIzQzOwkJcmV0dXJuOwomIzQzOwlhcmVhID0gZmluZF92bV9hcmVhKHN0b3JfdmFyKTsKJiM0MzsJaWYgKFdBUk5fT05fT05DRSghYXJlYSB8fCAhKGFyZWEtJmd0O2ZsYWdzICZhbXA7IFZNX1NQQVJTRSkpKQomIzQzOwkJcmV0dXJuOwomIzQzOwlzaXplID0gZ2V0X3ZtX2FyZWFfc2l6ZShhcmVhKTsKJiM0MzsJYWRkciA9ICh1bnNpZ25lZCBsb25nKWFyZWEtJmd0O2FkZHI7CiYjNDM7CWFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2UoJmFtcDtpbml0X21tLCBhZGRyLCBzaXplLCB1dl9mcmVlX3JhbmdlX2NiLCBOVUxMKTsKJiM0MzsJZnJlZV92bV9hcmVhKGFyZWEpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKHV2X2ZyZWVfc3Rvcl92YXIsICYjMzQ7a3ZtJiMzNDspOwomIzQzOwomIzQzO3N0YXRpYyBpbnQgdXZfYWxsb2NfcmFuZ2VfY2IocHRlX3QgKnB0ZXAsIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqZGF0YSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwYWdlICpwYWdlOwomIzQzOwlwdGVfdCBwdGU7CiYjNDM7CiYjNDM7CXBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCB8IF9fR0ZQX1pFUk8pOwomIzQzOwlpZiAoIXBhZ2UpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJcHRlID0gX19wdGUocGFnZV90b19waHlzKHBhZ2UpIHwgcGdwcm90X3ZhbChQQUdFX0tFUk5FTCkpOwomIzQzOwlzZXRfcHRlKHB0ZXAsIHB0ZSk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkICp1dl9hbGxvY19zdG9yX3Zhcih1bnNpZ25lZCBsb25nIHNpemUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhOwomIzQzOwl1bnNpZ25lZCBsb25nIGFkZHI7CiYjNDM7CiYjNDM7CWFyZWEgPSBnZXRfdm1fYXJlYShzaXplLCBWTV9TUEFSU0UpOwomIzQzOwlpZiAoIWFyZWEpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsJYWRkciA9ICh1bnNpZ25lZCBsb25nKWFyZWEtJmd0O2FkZHI7CiYjNDM7CWlmIChhcHBseV90b19wYWdlX3JhbmdlKCZhbXA7aW5pdF9tbSwgYWRkciwgc2l6ZSwgdXZfYWxsb2NfcmFuZ2VfY2IsIE5VTEwpKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CXJldHVybiBhcmVhLSZndDthZGRyOwomIzQzO291dDoKJiM0MzsJdXZfZnJlZV9zdG9yX3ZhcihhcmVhLSZndDthZGRyKTsKJiM0MzsJcmV0dXJuIE5VTEw7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVModXZfYWxsb2Nfc3Rvcl92YXIsICYjMzQ7a3ZtJiMzNDspOwomIzQzOwogLyoKICAqIENhbGN1bGF0ZSB0aGUgZXhwZWN0ZWQgcmVmX2NvdW50IGZvciBhIGZvbGlvIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgbm8KICAqIGZ1cnRoZXIgcGlucy4gVGhpcyB3YXMgY3JpYmJlZCBmcm9tIHNpbWlsYXIgZnVuY3Rpb25zIGluIG90aGVyIHBsYWNlcyBpbgpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9wdi5jIGIvYXJjaC9zMzkwL2t2bS9wdi5jCmluZGV4IDFiZWFjYzg0MWNhODUwLi5kYzVhYzI5YjRjMzExOCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9wdi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vcHYuYwpAQCAtMzM3LDcgJiM0MzszMzcsNyBAQCBpbnQga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKQogLyogb25seSBmcmVlIHJlc291cmNlcyB3aGVuIHRoZSBkZXN0cm95IHdhcyBzdWNjZXNzZnVsICovCiBzdGF0aWMgdm9pZCBrdm1fczM5MF9wdl9kZWFsbG9jX3ZtKHN0cnVjdCBrdm0gKmt2bSkKIHsKLQl2ZnJlZShrdm0tJmd0O2FyY2gucHYuc3Rvcl92YXIpOwomIzQzOwl1dl9mcmVlX3N0b3JfdmFyKGt2bS0mZ3Q7YXJjaC5wdi5zdG9yX3Zhcik7CiAJZnJlZV9wYWdlcyhrdm0tJmd0O2FyY2gucHYuc3Rvcl9iYXNlLAogCQkgICBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9iYXNlX3N0b3JfbGVuKSk7CiAJa3ZtX3MzOTBfY2xlYXJfcHZfc3RhdGUoa3ZtKTsKQEAgLTM2OSw3ICYjNDM7MzY5LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wdl9hbGxvY192bShzdHJ1Y3Qga3ZtICprdm0pCiAJLyogQWxsb2NhdGUgdmFyaWFibGUgc3RvcmFnZSAqLwogCXZsZW4gPSBBTElHTih2aXJ0ICogKChucGFnZXMgKiBQQUdFX1NJWkUpIC8gSFBBR0VfU0laRSksIFBBR0VfU0laRSk7CiAJdmxlbiAmIzQzOz0gdXZfaW5mby5ndWVzdF92aXJ0X2Jhc2Vfc3Rvcl9sZW47Ci0Ja3ZtLSZndDthcmNoLnB2LnN0b3JfdmFyID0gdnphbGxvYyh2bGVuKTsKJiM0MzsJa3ZtLSZndDthcmNoLnB2LnN0b3JfdmFyID0gdXZfYWxsb2Nfc3Rvcl92YXIodmxlbik7CiAJaWYgKCFrdm0tJmd0O2FyY2gucHYuc3Rvcl92YXIpCiAJCWdvdG8gb3V0X2VycjsKIAlyZXR1cm4gMDsKQEAgLTQxNCw3ICYjNDM7NDE0LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wdl9kaXNwb3NlX29uZV9sZWZ0b3ZlcihzdHJ1Y3Qga3ZtICprdm0sCiAJICovCiAJZnJlZV9wYWdlcyhsZWZ0b3Zlci0mZ3Q7c3Rvcl9iYXNlLCBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9iYXNlX3N0b3JfbGVuKSk7CiAJZnJlZV9wYWdlcyhsZWZ0b3Zlci0mZ3Q7b2xkX2dtYXBfdGFibGUsIENSU1RfQUxMT0NfT1JERVIpOwotCXZmcmVlKGxlZnRvdmVyLSZndDtzdG9yX3Zhcik7CiYjNDM7CXV2X2ZyZWVfc3Rvcl92YXIobGVmdG92ZXItJmd0O3N0b3JfdmFyKTsKIGRvbmVfZmFzdDoKIAlhdG9taWNfZGVjKCZhbXA7a3ZtLSZndDttbS0mZ3Q7Y29udGV4dC5wcm90ZWN0ZWRfY291bnQpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL21tL2V4dGFibGUuYyBiL2FyY2gvczM5MC9tbS9leHRhYmxlLmMKaW5kZXggMDYzYjQzNDY3NDJkOTYuLjc0OThlODU4YzQwMTk1IDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9tbS9leHRhYmxlLmMKQEAgLTUwLDYgJiM0Mzs1MCwyMiBAQCBzdGF0aWMgYm9vbCBleF9oYW5kbGVyX3VhX2xvYWRfcmVnKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LAogCXJldHVybiB0cnVlOwogfQogCiYjNDM7c3RhdGljIGJvb2wgZXhfaGFuZGxlcl96ZXJvcGFkKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCByZWdfYWRkciA9IEZJRUxEX0dFVChFWF9EQVRBX1JFR19BRERSLCBleC0mZ3Q7ZGF0YSk7CiYjNDM7CXVuc2lnbmVkIGludCByZWdfZGF0YSA9IEZJRUxEX0dFVChFWF9EQVRBX1JFR19FUlIsIGV4LSZndDtkYXRhKTsKJiM0MzsJdW5zaWduZWQgbG9uZyBkYXRhLCBhZGRyLCBvZmZzZXQ7CiYjNDM7CiYjNDM7CWFkZHIgPSByZWdzLSZndDtncHJzW3JlZ19hZGRyXTsKJiM0MzsJb2Zmc2V0ID0gYWRkciAmYW1wOyAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSk7CiYjNDM7CWFkZHIgJmFtcDs9IH4oc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSk7CiYjNDM7CWRhdGEgPSAqKHVuc2lnbmVkIGxvbmcgKilhZGRyOwomIzQzOwlkYXRhICZsdDsmbHQ7PSBCSVRTX1BFUl9CWVRFICogb2Zmc2V0OwomIzQzOwlyZWdzLSZndDtncHJzW3JlZ19kYXRhXSA9IGRhdGE7CiYjNDM7CXJlZ3MtJmd0O3Bzdy5hZGRyID0gZXh0YWJsZV9maXh1cChleCk7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKIHN0YXRpYyBib29sIGV4X2hhbmRsZXJfZnBjKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKIAlmcHVfc2ZwYygwKTsKQEAgLTExOCw2ICYjNDM7MTM0LDggQEAgYm9vbCBmaXh1cF9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAJCXJldHVybiBleF9oYW5kbGVyX3VhX2xvYWRfcmVnKGV4LCBmYWxzZSwgcmVncyk7CiAJY2FzZSBFWF9UWVBFX1VBX0xPQURfUkVHUEFJUjoKIAkJcmV0dXJuIGV4X2hhbmRsZXJfdWFfbG9hZF9yZWcoZXgsIHRydWUsIHJlZ3MpOwomIzQzOwljYXNlIEVYX1RZUEVfWkVST1BBRDoKJiM0MzsJCXJldHVybiBleF9oYW5kbGVyX3plcm9wYWQoZXgsIHJlZ3MpOwogCWNhc2UgRVhfVFlQRV9GUEM6CiAJCXJldHVybiBleF9oYW5kbGVyX2ZwYyhleCwgcmVncyk7CiAJY2FzZSBFWF9UWVBFX1VBX01WQ09TX1RPOgpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL21tL2ZhdWx0LmMgYi9hcmNoL3MzOTAvbW0vZmF1bHQuYwppbmRleCAwMjhhZWI5YzQ4ZDZmZi4uZGI3N2M4YzAwMjNlZTYgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9tbS9mYXVsdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9tbS9mYXVsdC5jCkBAIC00MzgsMTMgJiM0Mzs0MzgsOSBAQCB2b2lkIGRvX3NlY3VyZV9zdG9yYWdlX2FjY2VzcyhzdHJ1Y3QgcHRfcmVncyAqcmVncykKIAkJcGFuaWMoJiMzNDtVbmV4cGVjdGVkIFBHTSAweDNkIHdpdGggVEVJRCBiaXQgNjE9MCYjMzQ7KTsKIAl9CiAJaWYgKGlzX2tlcm5lbF9mYXVsdChyZWdzKSkgewotCQlmb2xpbyA9IHZpcnRfdG9fZm9saW8oKHZvaWQgKilhZGRyKTsKLQkJaWYgKHVubGlrZWx5KCFmb2xpb190cnlfZ2V0KGZvbGlvKSkpCi0JCQlyZXR1cm47Ci0JCXJjID0gdXZfY29udmVydF9mcm9tX3NlY3VyZShmb2xpb190b19waHlzKGZvbGlvKSk7Ci0JCWlmICghcmMpCi0JCQljbGVhcl9iaXQoUEdfYXJjaF8xLCAmYW1wO2ZvbGlvLSZndDtmbGFncy5mKTsKLQkJZm9saW9fcHV0KGZvbGlvKTsKJiM0MzsJCWlmIChpc192bWFsbG9jX2FkZHIoKHZvaWQgKilhZGRyKSkKJiM0MzsJCQlyZXR1cm4gaGFuZGxlX2ZhdWx0X2Vycm9yX25vbG9jayhyZWdzLCAwKTsKJiM0MzsJCXJjID0gdXZfY29udmVydF9mcm9tX3NlY3VyZShfX3BhKGFkZHIpKTsKIAkJLyoKIAkJICogVGhlcmUgYXJlIHNvbWUgdmFsaWQgZml4dXAgdHlwZXMgZm9yIGtlcm5lbAogCQkgKiBhY2Nlc3NlcyB0byBkb25hdGVkIHNlY3VyZSBtZW1vcnkuIHplcm9wYWQgaXMgb25lCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MjYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2OTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBzMzkwIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBzZXJpZXMgdGFyZ2V0aW5nIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gTG9va3MgbGlrZSBpdCB0b3VjaGVzIGEgc2lnbmlmaWNhbnQgY2h1bmsgb2YgdGhlIHMzOTAgY29kZSBiYXNlOiBgYXJjaC9zMzkwL0tjb25maWdgLCBzZXZlcmFsIGluY2x1ZGUgZmlsZXMsIGFuZCBhIGZldyBjb3JlIGtlcm5lbCBhcmVhcyBsaWtlIGB1di5jYCwgYGt2bS9wdi5jYCwgYGV4dGFibGUuY2AsIGFuZCBgZmF1bHQuY2AuIFRoZSBjaGFuZ2VzIGFyZSBzcGVjaWZpY2FsbHkgYXJvdW5kIGFkZGluZyBgRENBQ0hFX1dPUkRfQUNDRVNTYCAoY29uZGl0aW9uYWxseSwgaWYgbm90IEtNU0FOKSwgaW50cm9kdWNpbmcgbmV3IGV4Y2VwdGlvbiB0eXBlcywgaW1wbGVtZW50aW5nIGFuIGlubGluZSBgbG9hZF91bmFsaWduZWRfemVyb3BhZGAgZnVuY3Rpb24sIGFkZGluZyBzdG9yYWdlIHZhcmlhYmxlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIGluIGB1di5jYCBhbmQgdXNpbmcgdGhlbSBpbiBLVk0mIzM5O3MgUFYgY29kZSwgYW5kIHR3ZWFraW5nIGBkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3NgIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBmYXVsdCBoYW5kbGVyLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHRoaW5nICpmdW5jdGlvbmFsKiBhbmQgKnJlYWNoYWJsZSo/IFNpbmNlIHRoaXMgaXMgczM5MC1zcGVjaWZpYywgdGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBxdWVzdGlvbi4gSXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBQcm90ZWN0ZWQgVmlydHVhbGl6YXRpb24gaW4gS1ZNIGFuZCBleGNlcHRpb24gaGFuZGxpbmcgd2hlbiBkZWFsaW5nIHdpdGggdW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3Mgd2l0aCB6ZXJvLXBhZGRpbmcuIE5vcm1hbGx5LCBJIHdvdWxkIHRoaW5rIHR3aWNlIGFib3V0IGZ1enppbmcgY29kZSBwYXRocyB0aGF0IGFyZSBkaWZmaWN1bHQgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBidXQgd2FpdCwgc3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IHMzOTB4IFFFTVUsIHNvIHRoYXQgY2hhbmdlcyB0aGUgY2FsY3VsdXMuIFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBleHBsb3JpbmcgYmVjYXVzZSBpdCYjMzk7cyB0b3VjaGluZyBwcmV0dHkgY29yZSBrZXJuZWwgbG9naWMuCgpJIG5lZWQgdG8gbmFpbCBkb3duIGV4YWN0bHkgd2hpY2ggZnVuY3Rpb25zIGFyZSBtb3N0IHJlbGV2YW50IGZvciBmdXp6aW5nLCBzbyBJJiMzOTtsbCBiZSBmb2N1c2luZyBvbjogYGxvYWRfdW5hbGlnbmVkX3plcm9wYWRgICh0aGF0IGlubGluZSBmdW5jdGlvbiBpcyBhbHdheXMgYSBnb29kIHRhcmdldCksIGB1dl9hbGxvY19zdG9yX3ZhcmAsIGB1dl9mcmVlX3N0b3JfdmFyYCwgdGhlIGBrdm1fczM5MF9wdl8qYCBmdW5jdGlvbnMsIGBleF9oYW5kbGVyX3plcm9wYWRgLCBhbmQgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2AuCgpUaW1lIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIHRvIHNlZSB3aGF0JiMzOTtzIGVuYWJsaW5nIGBEQ0FDSEVfV09SRF9BQ0NFU1NgLiBJJiMzOTtsbCBzZWUgaWYgYFMzOTBgIGlzIHNlbGVjdGluZyBpdC4gQW5kIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgYHV2LmNgIGFuZCBga3ZtL3B2LmNgLCBqdXN0IHRvIGdldCBhIGZ1bGxlciBwaWN0dXJlIG9mIHRoZSBjb250ZXh0IGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1dlxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva2VybmVsL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGU9NDU9b2JqLXlcdCYjNDM7PSBub3NwZWMtYnJhbmNoLm8gaXBsX3ZtcGFybS5vIG1hY2hpbmVfa2V4ZWNfcmVsb2MubyB1bndpbmRfYmMub1xuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZTo0NjpvYmoteVx0JiM0Mzs9IHNtcC5vIHRleHRfYW1vZGUzMS5vIHN0YWNrdHJhY2UubyBhYnNfbG93Y29yZS5vIGZhY2lsaXR5Lm8gdXYubyB3dGkub1xuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS00Ny1vYmoteVx0JiM0Mzs9IGRpYWcvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc2MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkNvbnNpZGVyaW5nIHMzOTAgQnVpbGQgSGFiaXRzIGFuZCBLVk0vUFYuYyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgYnVpbGQgcHJvY2Vzcy4uLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gc2VlaW5nIHRoYXQgdGhlIGB1di5vYCBvYmplY3QgZmlsZSAqYWx3YXlzKiBzZWVtcyB0byBiZSBjb21waWxlZCBhbmQgYnVpbHQgc3BlY2lmaWNhbGx5IGZvciB0aGUgczM5MCBhcmNoaXRlY3R1cmUuIEl0JiMzOTtzIGEgYml0IG9mIGEgZ2l2ZW4gYXQgdGhpcyBwb2ludCwgYnV0IGl0IHRyaWdnZXJzIHNvbWV0aGluZyBpbiB0aGUgYmFjayBvZiBteSBtaW5kLgoKVGhlbiB0aGUgcXVlc3Rpb24gaGl0cyBtZTogd2hhdCBhYm91dCBga3ZtL3B2LmNgPyBJcyB0aGF0IGZpbGUgYWxzbyBjb25zaXN0ZW50bHkgYnVpbHQgd2l0aCBzMzkwIGluIG1pbmQsIG9yIGFyZSB0aGVyZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBlbGVtZW50cyBhdCBwbGF5PyBJZiBpdCYjMzk7cyAqbm90KiBhbHdheXMgYW4gczM5MC1zcGVjaWZpYyBidWlsZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBkcml2aW5nIHRoZSBkaWZmZXJlbmNlLiBBcmUgdGhlcmUgcGxhdGZvcm0tc3BlY2lmaWMgb3B0aW1pemF0aW9ucyBvciBhcmNoaXRlY3R1cmFsIGNvbnNpZGVyYXRpb25zIGluaGVyZW50IGluIGB1di5vYCB0aGF0ICphcmVuJiMzOTt0KiBhcyBzdHJvbmdseSBwcmVzZW50IGluIHRoZSBLVk0gcGFyYXZpcnR1YWxpemF0aW9uIGNvZGU/IE9yIHBlcmhhcHMgdGhlcmUgYXJlIHZlcnkgc3BlY2lmaWMgdXNlIGNhc2VzIGZvciBvbmUgb3IgdGhlIG90aGVyPyBUaGlzIGNvdWxkIGJlIGJlY2F1c2UgS1ZNL1BWIGlzIGV4cGVjdGVkIHRvIGJlIG1vcmUgcG9ydGFibGUsIGJ1dCBVViBtaWdodCBoYXZlIHZlcnkgc3BlY2lmaWMgZmVhdHVyZXMgZm9yIHMzOTAgd2hpY2ggaXQgbmVlZHMgdG8gbGV2ZXJhZ2UuCkVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoeSBvbmUgc2VlbXMgdG8gYmUgYW4gczM5MCBnaXZlbiwgYW5kIHRoZSBvdGhlciBkb2VzbiYjMzk7dCBhcHBlYXIgYXMgc3VjaCBhdCBmaXJzdCBnbGFuY2UuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyBhbmQgdGhlIGNvZGUgaXRzZWxmIHRvIHNlZSBpZiB0aGUgYXNzdW1wdGlvbnMgaG9sZCwgYW5kIHRoZSByZWFzb25zIHdoeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwdlxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTA9a3ZtLXkgJiM0Mzs9IGt2bS1zMzkwLm8gaW50ZXJjZXB0Lm8gaW50ZXJydXB0Lm8gcHJpdi5vIHNpZ3Aub1xuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZToxMTprdm0teSAmIzQzOz0gZGlhZy5vIGdhY2Nlc3MubyBndWVzdGRiZy5vIHZzaWUubyBwdi5vXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTEyLWt2bS15ICYjNDM7PSBkYXQubyBnbWFwLm8gZmF1bHRpbi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI3MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipLVk0gQ29uZmlndXJhdGlvbiBhbmQgU2VjdXJlIFN0b3JhZ2UgQWNjZXNzKioKClJpZ2h0LCBzbyBgcHYub2AgaXMgY29uc2lzdGVudGx5IGJ1aWx0IHdoZW5ldmVyIEtWTSBpcyBhY3RpdmUuIFRoYXTigJlzIGEgY2xlYXIgaW5kaWNhdGlvbiB0aGF0IEtWTSBpcyB0aGUgZGVjaWRpbmcgZmFjdG9yIGluIGl0cyBpbmNsdXNpb24uIEluIG90aGVyIHdvcmRzLCBgS1ZNYCBpcyB0aGUgY29uZmlnIG9wdGlvbiB0aGF0IHRyaWdnZXJzIGl0LiBXYWl0IGEgbW9tZW50LCBJIHRoaW5rIEkgcmVtZW1iZXIgdGhpczogZm9yIHMzOTAsIEtWTSBpcyBleHBsaWNpdGx5IGxhYmVsZWQgYXMgYENPTkZJR19LVk1gLiBUaGF0IGNvbmZpcm1zIG15IGluaXRpYWwgYXNzZXNzbWVudC4KCk5vdywgbGV0JiMzOTtzIHBpdm90IHRvIGludmVzdGlnYXRpbmcgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiB3aXRoaW4gYGFyY2gvczM5MC9tbS9mYXVsdC5jYC4gVGhhdCBzZWVtcyB0byBiZSB0aGUgcmlnaHQgcGxhY2UgdG8gZ2V0IGEgZGVlcGVyIGxvb2sgYXQgdGhlIHNlY3VyZSBzdG9yYWdlIGFjY2VzcyBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RvX3NlY3VyZV9zdG9yYWdlX2FjY2VzcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9tbS9mYXVsdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9tbS9mYXVsdC5jPTQwND1OT0tQUk9CRV9TWU1CT0woZG9fZGF0X2V4Y2VwdGlvbik7XG4tLVxuYXJjaC9zMzkwL21tL2ZhdWx0LmMtNDA3LVxuYXJjaC9zMzkwL21tL2ZhdWx0LmM6NDA4OnZvaWQgZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuYXJjaC9zMzkwL21tL2ZhdWx0LmMtNDA5LXtcbi0tXG5hcmNoL3MzOTAvbW0vZmF1bHQuYy00NzMtfVxuYXJjaC9zMzkwL21tL2ZhdWx0LmM6NDc0Ok5PS1BST0JFX1NZTUJPTChkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3MpO1xuYXJjaC9zMzkwL21tL2ZhdWx0LmMtNDc1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NTEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTdG9yYWdlIFZhcmlhYmxlIEFsbG9jYXRpb24gQ29kZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyByaWdodCBub3cgaXMgb24gdGhlc2UgY29yZSBmdW5jdGlvbnM6IGB1dl9hbGxvY19zdG9yX3ZhcmAsIGB1dl9mcmVlX3N0b3JfdmFyYCwgYGV4X2hhbmRsZXJfemVyb3BhZGAsIGFuZCBgZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzYC4gVGhlc2UgYXJlIHRoZSBrZXkgYXJlYXMgd2hlcmUgSSBzdXNwZWN0IG1vZGlmaWNhdGlvbnMgb3IgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aWxsIGJlIGNyaXRpY2FsLgoKTm93LCBmb3IgdGhlIGNvbmZpZ3MuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIG9ubHkgbGlzdCB0aG9zZSBjb25maWdzIHRoYXQgZGlyZWN0bHkgcmVsYXRlIHRvIHRoZSBjb2RlLCBhbmQgbm90IHRoZSBnZW5lcmljIHN0dWZmLiBgUzM5MGAgaXMgdGhlIGJhc2UgYXJjaGl0ZWN0dXJlLCBzbyB0aGF0JiMzOTtzIGltcGxpY2l0LiBCdXQgdGhlIHByZXNlbmNlIG9mIGBrdm1fczM5MF9wdl9hbGxvY192bWAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIHBvaW50cyBkaXJlY3RseSB0byBgS1ZNYC4gVGhlcmVmb3JlLCBgS1ZNYCBpcyB0aGUgY29uZmlnIEkmIzM5O20gbW9zdCBpbnRlcmVzdGVkIGluLCBnaXZlbiB0aGUgcHJlc2VuY2Ugb2YgdGhvc2Ugc3BlY2lmaWMgZnVuY3Rpb25zLgoKQSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0IGBhcmNoL3MzOTAva3ZtL01ha2VmaWxlYCBpcyB0aGUgcmVsZXZhbnQgZmlsZSwgc28gYEtWTWAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gZmxhZyB0byBjb25zaWRlciBoZXJlLiBUaGF0IHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29iai1cXCRcXChDT05GSUdfS1ZNXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL01ha2VmaWxlPTE0PWt2bS0kKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgJiM0Mzs9IHBjaS5vXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19LVk0pICYjNDM7PSBrdm0ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjgwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBjb25maWd1cmF0aW9uIHByb2Nlc3MsIGV4cHJlc3NlZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkNvbmZpZ3VyYXRpb24gQW5hbHlzaXM6IEtWTSBhbmQgSW1wbGljaXQgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZCB3aXRoIGBDT05GSUdfS1ZNYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUsIHRoZSBjb3JlIG9mIHRoZSBoeXBlcnZpc29yIHN1cHBvcnQuIE5vdywgdGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGNvbmZpZ3VyYXRpb25zIHRpZWQgaW4gb3IgYWZmZWN0ZWQgYnkgdGhpcy4KCkFoYSEgSXQgbG9va3MgbGlrZSBgRENBQ0hFX1dPUkRfQUNDRVNTYCBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIGJhc2VkIG9uIHRoZSBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGBTMzkwYCwgKnVubGVzcyogYEtNU0FOYCBpcyAqbm90KiBlbmFibGVkLiBTbywgaW4gdGhpcyBzY2VuYXJpbyBnaXZlbiB0aGF0IHdlIGtub3cgYENPTkZJR19LVk1gIGlzIGNvbmZpZ3VyZWQsIGBEQ0FDSEVfV09SRF9BQ0NFU1NgIGlzIGltcGxpY2l0bHkgZW5hYmxlZCBiZWNhdXNlIHdlIGRvbiYjMzk7dCBrbm93IHRoZSBzdGF0ZSBvZiBgS01TQU5gLgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIHNoaWZ0IGdlYXJzIHNsaWdodGx5IGFuZCBjaGVjayBvbiBgZXhfaGFuZGxlcl96ZXJvcGFkYCB3aXRoaW4gYGFyY2gvczM5MC9tbS9leHRhYmxlLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleF9oYW5kbGVyX3plcm9wYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAvbW0vZXh0YWJsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9tbS9leHRhYmxlLmM9Mzk9c3RhdGljIGJvb2wgZXhfaGFuZGxlcl91YV9sb2FkX3JlZyhjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCxcbi0tXG5hcmNoL3MzOTAvbW0vZXh0YWJsZS5jLTUyLVxuYXJjaC9zMzkwL21tL2V4dGFibGUuYzo1MzpzdGF0aWMgYm9vbCBleF9oYW5kbGVyX3plcm9wYWQoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuYXJjaC9zMzkwL21tL2V4dGFibGUuYy01NC17XG4tLVxuYXJjaC9zMzkwL21tL2V4dGFibGUuYz0xMTk9Ym9vbCBmaXh1cF9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9zMzkwL21tL2V4dGFibGUuYy0xMzctXHRjYXNlIEVYX1RZUEVfWkVST1BBRDpcbmFyY2gvczM5MC9tbS9leHRhYmxlLmM6MTM4Olx0XHRyZXR1cm4gZXhfaGFuZGxlcl96ZXJvcGFkKGV4LCByZWdzKTtcbmFyY2gvczM5MC9tbS9leHRhYmxlLmMtMTM5LVx0Y2FzZSBFWF9UWVBFX0ZQQzpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg3OQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipQcmlvcml0aXppbmcgQ29kZSBBbmFseXNpczogS2V5IEZ1bmN0aW9ucyBmb3IgRGVlcCBEaXZlKioKClJpZ2h0LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBzcGVjaWZpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgY29kZWJhc2UuIEl0JiMzOTtzIGNsZWFyIHRoYXQgdGhlc2UgYXJlIHRoZSBvbmVzIHRvIHNjcnV0aW5pemUgbW9zdCBjbG9zZWx5LiBNeSBwcmltYXJ5IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uOiBgdXZfYWxsb2Nfc3Rvcl92YXJgIGFuZCBgdXZfZnJlZV9zdG9yX3ZhcmAg4oCTIHRoZXNlIGFyZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBzdG9yYWdlIHZhcmlhYmxlcyBhcmUgYWxsb2NhdGVkIGFuZCBkZWFsbG9jYXRlZC4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYXJlYSBmb3IgbWVtb3J5IG1hbmFnZW1lbnQgYnVncyBvciBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIE5leHQgdXAsIGBleF9oYW5kbGVyX3plcm9wYWRgIGlzIGludGVyZXN0aW5nOyB6ZXJvLXBhZGRpbmcgZnVuY3Rpb25zIGFyZSBvZnRlbiBpbnZvbHZlZCBpbiBzZW5zaXRpdmUgZGF0YSBoYW5kbGluZywgYW5kIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgb25lIGlzIGltcGxlbWVudGVkIGNvcnJlY3RseSwgaW5jbHVkaW5nIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBwYWRkaW5nIG9yYWNsZSBhdHRhY2sgdmVjdG9ycy4gTW92aW5nIG9uIHRvIHNlY3VyZSBzdG9yYWdlIGFjY2VzcywgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2AgaXMgb2J2aW91c2x5IGNyaXRpY2FsOyBhbnkgZmxhdyBoZXJlIGNvdWxkIGNvbXByb21pc2UgdGhlIGVudGlyZSBzeXN0ZW0mIzM5O3Mgc2VjdXJpdHkgcG9zdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFjY2VzcyBjb250cm9sIG1lY2hhbmlzbXMsIGVuY3J5cHRpb24sIGFuZCBhdXRoZW50aWNhdGlvbiBpbnZvbHZlZC4gRmluYWxseSwgdGhlIEtWTS9zMzkwIHZpcnR1YWxpemF0aW9uIHNwZWNpZmljIGZ1bmN0aW9ucyBga3ZtX3MzOTBfcHZfYWxsb2Nfdm1gIGFuZCBga3ZtX3MzOTBfcHZfZGVhbGxvY192bWAgbG9vayBsaWtlIGtleSBwaWVjZXMgZm9yIG1hbmFnaW5nIHZpcnR1YWwgbWFjaGluZSByZXNvdXJjZXMuIEkmIzM5O2xsIG5lZWQgdG8gZXhwbG9yZSB0aGVzZSBpbiBjb250ZXh0IHRvIGNvbmZpcm0gd2hldGhlciB0aGVyZSBhcmUgaXNzdWVzIGhlcmUgcmVsYXRlZCB0byByZXNvdXJjZSBleGhhdXN0aW9uLCBvciBhbnkgc2VjdXJpdHkgY29uY2VybnMuCgpJJiMzOTt2ZSBhbHNvIG5vdGljZWQgYSBjb3VwbGUgb2YgYWRkaXRpb25hbCBmdW5jdGlvbnMgdGhhdCB3YXJyYW50IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbjogYHV2X2ZyZWVfcmFuZ2VfY2JgIGFuZCBgdXZfYWxsb2NfcmFuZ2VfY2JgLiBUaGVzZSAqY291bGQqIGJlIGludm9sdmVkIGluIHNpbWlsYXIgbWVtb3J5IG9yIHJlc291cmNlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIHRhc2tzIGFzIHRoZSBpbml0aWFsIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXZfZnJlZV9yYW5nZV9jYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rZXJuZWwvdXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva2VybmVsL3V2LmM9MjA3PWludCB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlX3B0ZShwdGVfdCBwdGUpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC91di5jLTIxMi1cbmFyY2gvczM5MC9rZXJuZWwvdXYuYzoyMTM6c3RhdGljIGludCB1dl9mcmVlX3JhbmdlX2NiKHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmRhdGEpXG5hcmNoL3MzOTAva2VybmVsL3V2LmMtMjE0LXtcbi0tXG5hcmNoL3MzOTAva2VybmVsL3V2LmM9MjIzPXZvaWQgdXZfZnJlZV9zdG9yX3Zhcih2b2lkICpzdG9yX3Zhcilcbi0tXG5hcmNoL3MzOTAva2VybmVsL3V2LmMtMjM0LVx0YWRkciA9ICh1bnNpZ25lZCBsb25nKWFyZWEtXHUwMDNlYWRkcjtcbmFyY2gvczM5MC9rZXJuZWwvdXYuYzoyMzU6XHRhcHBseV90b19leGlzdGluZ19wYWdlX3JhbmdlKFx1MDAyNmluaXRfbW0sIGFkZHIsIHNpemUsIHV2X2ZyZWVfcmFuZ2VfY2IsIE5VTEwpO1xuYXJjaC9zMzkwL2tlcm5lbC91di5jLTIzNi1cdGZyZWVfdm1fYXJlYShhcmVhKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY1NQoJCQkJCQkJb3V0cHV0OiAyMjAKCQkJCQkJCXRob3VnaHRzOiAyNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duLiBJIHNlZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgY2hhbmdlcyB0aGF0IGFyZSBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldCBhcmUgYHV2X2ZyZWVfcmFuZ2VfY2JgIGFuZCBgdXZfYWxsb2NfcmFuZ2VfY2JgIC0gdGhlIG1lbW9yeSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBjYWxsYmFja3MgYXJlIGFsd2F5cyBjcml0aWNhbCBhcmVhcyB0byBleHBsb3JlIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKTGV0JiMzOTtzIHN1bW1hcml6ZSBteSBhbmFseXNpczoKCiogICAqKldvcnRoRnV6emluZzoqKiBBYnNvbHV0ZWx5LgoqICAgKipGb2N1cyBTeW1ib2xzOioqIFdlIG5lZWQgdG8gcHJpb3JpdGl6ZSB0aGVzZSBzeW1ib2xzIHdoZW4gc2V0dGluZyB1cCB0aGUgZnV6emluZyBjYW1wYWlnbjoKICAgICogICBgdXZfYWxsb2Nfc3Rvcl92YXJgCiAgICAqICAgYHV2X2ZyZWVfc3Rvcl92YXJgCiAgICAqICAgYHV2X2FsbG9jX3JhbmdlX2NiYAogICAgKiAgIGB1dl9mcmVlX3JhbmdlX2NiYAogICAgKiAgIGBleF9oYW5kbGVyX3plcm9wYWRgCiAgICAqICAgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2AKICAgICogICBga3ZtX3MzOTBfcHZfYWxsb2Nfdm1gCiAgICAqICAgYGt2bV9zMzkwX3B2X2RlYWxsb2Nfdm1gCgoqICAgKipFbmFibGUgQ29uZmlndXJhdGlvbnM6KiogVGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24gbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBmdXp6aW5nIGNhbXBhaWduLCBhcyB0aGUgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byB0aGF0IHN1YnN5c3RlbS4KCiogICAqKlJlYXNvbmluZzoqKiBUaGlzIHBhdGNoIGRpZ3MgaW50byBzMzkwIGFyY2hpdGVjdHVyZSBzcGVjaWZpY3MsIHdoaWNoIGFsd2F5cyBwaXF1ZSBteSBpbnRlcmVzdC4gSSBzZWUgZnVuY3Rpb25hbGl0eSB0aGF0IHNwZWNpZmljYWxseSByZWxhdGVzIHRvIHVuYWxpZ25lZCB3b3JkIGxvYWRzIHdpdGggemVybyBwYWRkaW5nLCBhbmQgUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIG1lbW9yeSBtYW5hZ2VtZW50LCB3aGljaCwgZnJvbSBhbiBhdHRhY2sgc3VyZmFjZSBwb2ludCBvZiB2aWV3LCBpcyBhIGhpZ2gtdmFsdWUgdGFyZ2V0LiBUaGVzZSBtb2RpZmljYXRpb25zIHRvdWNoIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBleGNlcHRpb24gaGFuZGxpbmcsIGFuZCB0aG9zZSBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgdW5jb3ZlcmluZyBtZW1vcnkgc2FmZXR5IGJ1Z3Mgb3IgY29ycmVjdG5lc3MgaXNzdWVzIHRocm91Z2ggZnV6emluZy4gVGhlIGludGVycGxheSBvZiBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nIGlzIGEgY2xhc3NpYyByZWNpcGUgZm9yIHZ1bG5lcmFiaWxpdHkuIEl0JiMzOTtzIHRpbWUgdG8gc2V0IHVwIHRoZSBmdXp6ZXJzIGFuZCBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3V2X2FsbG9jX3N0b3JfdmFyJiMzNDssCiAgICAmIzM0O3V2X2ZyZWVfc3Rvcl92YXImIzM0OywKICAgICYjMzQ7dXZfYWxsb2NfcmFuZ2VfY2ImIzM0OywKICAgICYjMzQ7dXZfZnJlZV9yYW5nZV9jYiYjMzQ7LAogICAgJiMzNDtleF9oYW5kbGVyX3plcm9wYWQmIzM0OywKICAgICYjMzQ7ZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3B2X2FsbG9jX3ZtJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3B2X2RlYWxsb2Nfdm0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gczM5MCBhcmNoaXRlY3R1cmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9mIHVuYWxpZ25lZCB3b3JkIGxvYWRzIHdpdGggemVybyBwYWRkaW5nIChgbG9hZF91bmFsaWduZWRfemVyb3BhZGAsIGBleF9oYW5kbGVyX3plcm9wYWRgKSwgYW5kIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBLVk0gUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIChgdXZfYWxsb2Nfc3Rvcl92YXJgLCBgdXZfZnJlZV9zdG9yX3ZhcmApLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZywgd2hpY2ggc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IHNhZmV0eSBhbmQgY29ycmVjdG5lc3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3V2X2FsbG9jX3N0b3JfdmFyJiMzNDssCiAgICAmIzM0O3V2X2ZyZWVfc3Rvcl92YXImIzM0OywKICAgICYjMzQ7dXZfYWxsb2NfcmFuZ2VfY2ImIzM0OywKICAgICYjMzQ7dXZfZnJlZV9yYW5nZV9jYiYjMzQ7LAogICAgJiMzNDtleF9oYW5kbGVyX3plcm9wYWQmIzM0OywKICAgICYjMzQ7ZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3B2X2FsbG9jX3ZtJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3B2X2RlYWxsb2Nfdm0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gczM5MCBhcmNoaXRlY3R1cmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9mIHVuYWxpZ25lZCB3b3JkIGxvYWRzIHdpdGggemVybyBwYWRkaW5nIChgbG9hZF91bmFsaWduZWRfemVyb3BhZGAsIGBleF9oYW5kbGVyX3plcm9wYWRgKSwgYW5kIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBLVk0gUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIChgdXZfYWxsb2Nfc3Rvcl92YXJgLCBgdXZfZnJlZV9zdG9yX3ZhcmApLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZywgd2hpY2ggc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IHNhZmV0eSBhbmQgY29ycmVjdG5lc3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxODo0NzoxOC42MjcwODEwMjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTgyNDYxNTM0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1dl9hbGxvY19zdG9yX3ZhclwiLFxuICAgIFwidXZfZnJlZV9zdG9yX3ZhclwiLFxuICAgIFwidXZfYWxsb2NfcmFuZ2VfY2JcIixcbiAgICBcInV2X2ZyZWVfcmFuZ2VfY2JcIixcbiAgICBcImV4X2hhbmRsZXJfemVyb3BhZFwiLFxuICAgIFwiZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzXCIsXG4gICAgXCJrdm1fczM5MF9wdl9hbGxvY192bVwiLFxuICAgIFwia3ZtX3MzOTBfcHZfZGVhbGxvY192bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHMzOTAgYXJjaGl0ZWN0dXJlIGNvZGUsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvZiB1bmFsaWduZWQgd29yZCBsb2FkcyB3aXRoIHplcm8gcGFkZGluZyAoYGxvYWRfdW5hbGlnbmVkX3plcm9wYWRgLCBgZXhfaGFuZGxlcl96ZXJvcGFkYCksIGFuZCBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgS1ZNIFByb3RlY3RlZCBWaXJ0dWFsaXphdGlvbiAoYHV2X2FsbG9jX3N0b3JfdmFyYCwgYHV2X2ZyZWVfc3Rvcl92YXJgKS4gVGhlc2UgY2hhbmdlcyBtb2RpZnkgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBleGNlcHRpb24gaGFuZGxpbmcsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG1lbW9yeSBzYWZldHkgYW5kIGNvcnJlY3RuZXNzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxODo0NzoxOC42MjcwODU5NDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwMjk1MTE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDViNjQ1OGZiOTM2MmFiZDQ3YzYzZDE2ODkwNWM1MDEyYzg1ODc1ODZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMTYgMTg6NDc6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL0tjb25maWcgYi9hcmNoL3MzOTAvS2NvbmZpZ1xcbmluZGV4IDg0NDA0ZTY3NzhkNTA0Li5mZTgxYzUzOWVmMmZmYyAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvS2NvbmZpZ1xcbisrKyBiL2FyY2gvczM5MC9LY29uZmlnXFxuQEAgLTE2Myw2ICsxNjMsNyBAQCBjb25maWcgUzM5MFxcbiBcXHRzZWxlY3QgQVJDSF9XQU5UU19USFBfU1dBUFxcbiBcXHRzZWxlY3QgQlVJTERUSU1FX1RBQkxFX1NPUlRcXG4gXFx0c2VsZWN0IENMT05FX0JBQ0tXQVJEUzJcXG4rXFx0c2VsZWN0IERDQUNIRV9XT1JEX0FDQ0VTUyBpZiAhS01TQU5cXG4gXFx0c2VsZWN0IERZTkFNSUNfRlRSQUNFIGlmIEZVTkNUSU9OX1RSQUNFUlxcbiBcXHRzZWxlY3QgRlVOQ1RJT05fQUxJR05NRU5UXzhCIGlmIENDX0lTX0dDQ1xcbiBcXHRzZWxlY3QgRlVOQ1RJT05fQUxJR05NRU5UXzE2QiBpZiAhQ0NfSVNfR0NDXFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9hc20tZXh0YWJsZS5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FzbS1leHRhYmxlLmhcXG5pbmRleCA5OTc0OGMyMGU3NjcxMy4uZDIzZWEwYzk0ZTRlYTYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FzbS1leHRhYmxlLmhcXG4rKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXNtLWV4dGFibGUuaFxcbkBAIC0xMiw2ICsxMiw3IEBAXFxuICNkZWZpbmUgRVhfVFlQRV9VQV9GQVVMVFxcdDNcXG4gI2RlZmluZSBFWF9UWVBFX1VBX0xPQURfUkVHXFx0NVxcbiAjZGVmaW5lIEVYX1RZUEVfVUFfTE9BRF9SRUdQQUlSXFx0NlxcbisjZGVmaW5lIEVYX1RZUEVfWkVST1BBRFxcdFxcdDdcXG4gI2RlZmluZSBFWF9UWVBFX0ZQQ1xcdFxcdDhcXG4gI2RlZmluZSBFWF9UWVBFX1VBX01WQ09TX1RPXFx0OVxcbiAjZGVmaW5lIEVYX1RZUEVfVUFfTVZDT1NfRlJPTVxcdDEwXFxuQEAgLTc5LDYgKzgwLDkgQEBcXG4gI2RlZmluZSBFWF9UQUJMRV9VQV9MT0FEX1JFR1BBSVIoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZXJyLCBfcmVnemVybylcXHRcXFxcXFxuIFxcdF9fRVhfVEFCTEUoX19leF90YWJsZSwgX2ZhdWx0LCBfdGFyZ2V0LCBFWF9UWVBFX1VBX0xPQURfUkVHUEFJUiwgX3JlZ2VyciwgX3JlZ3plcm8sIDApXFxuIFxcbisjZGVmaW5lIEVYX1RBQkxFX1pFUk9QQUQoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZGF0YSwgX3JlZ2FkZHIpXFx0XFx0XFxcXFxcbitcXHRfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9aRVJPUEFELCBfcmVnZGF0YSwgX3JlZ2FkZHIsIDApXFxuK1xcbiAjZGVmaW5lIEVYX1RBQkxFX0ZQQyhfZmF1bHQsIF90YXJnZXQpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9GUEMsIF9fc3RyaW5naWZ5KCUlcjApLCBfX3N0cmluZ2lmeSglJXIwKSwgMClcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS91di5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3V2LmhcXG5pbmRleCBkOTE5ZTY5NjYyZjU4NC4uMTUzZmVkNjNhZGRhM2MgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3V2LmhcXG4rKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdXYuaFxcbkBAIC02MzUsNiArNjM1LDggQEAgaW50IHMzOTBfd2lnZ2xlX3NwbGl0X2ZvbGlvKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG4gaW50IF9fbWFrZV9mb2xpb19zZWN1cmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHV2X2NiX2hlYWRlciAqdXZjYik7XFxuIGludCB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlKHVuc2lnbmVkIGxvbmcgcGFkZHIpO1xcbiBpbnQgdXZfY29udmVydF9mcm9tX3NlY3VyZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG4rdm9pZCAqdXZfYWxsb2Nfc3Rvcl92YXIodW5zaWduZWQgbG9uZyBzaXplKTtcXG4rdm9pZCB1dl9mcmVlX3N0b3JfdmFyKHZvaWQgKnN0b3JfdmFyKTtcXG4gXFxuIHZvaWQgc2V0dXBfdXYodm9pZCk7XFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS93b3JkLWF0LWEtdGltZS5oXFxuaW5kZXggZTkyODcwMzYzOTJkMDguLmVhYTE5ZGVlNzY5OTQxIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS93b3JkLWF0LWEtdGltZS5oXFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3dvcmQtYXQtYS10aW1lLmhcXG5AQCAtNCw2ICs0LDcgQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRvcHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dvcmRwYXJ0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vYXNtLWV4dGFibGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9iaXRzcGVybG9uZy5oXFx1MDAzZVxcbiBcXG4gc3RydWN0IHdvcmRfYXRfYV90aW1lIHtcXG5AQCAtNDAsNCArNDEsMjUgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHplcm9fYnl0ZW1hc2sodW5zaWduZWQgbG9uZyBkYXRhKVxcbiBcXHRyZXR1cm4gfjFVTCBcXHUwMDNjXFx1MDAzYyBkYXRhO1xcbiB9XFxuIFxcbisvKlxcbisgKiBMb2FkIGFuIHVuYWxpZ25lZCB3b3JkIGZyb20ga2VybmVsIHNwYWNlLlxcbisgKlxcbisgKiBJbiB0aGUgKHZlcnkgdW5saWtlbHkpIGNhc2Ugb2YgdGhlIHdvcmQgYmVpbmcgYSBwYWdlLWNyb3NzZXJcXG4rICogYW5kIHRoZSBuZXh0IHBhZ2Ugbm90IGJlaW5nIG1hcHBlZCwgdGFrZSB0aGUgZXhjZXB0aW9uIGFuZFxcbisgKiByZXR1cm4gemVyb2VzIGluIHRoZSBub24tZXhpc3RpbmcgcGFydC5cXG4rICovXFxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBsb2FkX3VuYWxpZ25lZF96ZXJvcGFkKGNvbnN0IHZvaWQgKmFkZHIpXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBkYXRhO1xcbitcXG4rXFx0YXNtX2lubGluZSB2b2xhdGlsZShcXG4rXFx0XFx0XFxcIjA6XFx0bGdcXHQlW2RhdGFdLDAoJVthZGRyXSlcXFxcblxcXCJcXG4rXFx0XFx0XFxcIjE6XFx0bm9wclxcdCUlcjdcXFxcblxcXCJcXG4rXFx0XFx0RVhfVEFCTEVfWkVST1BBRCgwYiwgMWIsICVbZGF0YV0sICVbYWRkcl0pXFxuK1xcdFxcdEVYX1RBQkxFX1pFUk9QQUQoMWIsIDFiLCAlW2RhdGFdLCAlW2FkZHJdKVxcbitcXHRcXHQ6IFtkYXRhXSBcXFwiPWRcXFwiIChkYXRhKVxcbitcXHRcXHQ6IFthZGRyXSBcXFwiYVxcXCIgKGFkZHIpLCBcXFwibVxcXCIgKCoodW5zaWduZWQgbG9uZyAqKWFkZHIpKTtcXG4rXFx0cmV0dXJuIGRhdGE7XFxuK31cXG4rXFxuICNlbmRpZiAvKiBfQVNNX1dPUkRfQVRfQV9USU1FX0ggKi9cXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2tlcm5lbC91di5jIGIvYXJjaC9zMzkwL2tlcm5lbC91di5jXFxuaW5kZXggYTI4NGY5OGQ5NzE2ODAuLjk4YTdmOTg4ZmM2OTFkIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rZXJuZWwvdXYuY1xcbisrKyBiL2FyY2gvczM5MC9rZXJuZWwvdXYuY1xcbkBAIC0xNiw2ICsxNiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zd2FwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wYWdld2Fsay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvYmFja2luZy1kZXYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZtYWxsb2MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9mYWNpbGl0eS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3NlY3Rpb25zLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vdXYuaFxcdTAwM2VcXG5AQCAtMjA5LDYgKzIxMCw2NCBAQCBpbnQgdXZfY29udmVydF9mcm9tX3NlY3VyZV9wdGUocHRlX3QgcHRlKVxcbiBcXHRyZXR1cm4gdXZfY29udmVydF9mcm9tX3NlY3VyZV9mb2xpbyhwZm5fZm9saW8ocHRlX3BmbihwdGUpKSk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgdXZfZnJlZV9yYW5nZV9jYihwdGVfdCAqcHRlcCwgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdHB0ZV90IHB0ZSA9IHB0ZXBfZ2V0KHB0ZXApO1xcbitcXG4rXFx0aWYgKCFwdGVfcHJlc2VudChwdGUpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0X19mcmVlX3BhZ2UocHRlX3BhZ2UocHRlKSk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbit2b2lkIHV2X2ZyZWVfc3Rvcl92YXIodm9pZCAqc3Rvcl92YXIpXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBhZGRyLCBzaXplO1xcbitcXHRzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhO1xcbitcXG4rXFx0aWYgKCFzdG9yX3ZhcilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHRhcmVhID0gZmluZF92bV9hcmVhKHN0b3JfdmFyKTtcXG4rXFx0aWYgKFdBUk5fT05fT05DRSghYXJlYSB8fCAhKGFyZWEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgVk1fU1BBUlNFKSkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFx0c2l6ZSA9IGdldF92bV9hcmVhX3NpemUoYXJlYSk7XFxuK1xcdGFkZHIgPSAodW5zaWduZWQgbG9uZylhcmVhLVxcdTAwM2VhZGRyO1xcbitcXHRhcHBseV90b19leGlzdGluZ19wYWdlX3JhbmdlKFxcdTAwMjZpbml0X21tLCBhZGRyLCBzaXplLCB1dl9mcmVlX3JhbmdlX2NiLCBOVUxMKTtcXG4rXFx0ZnJlZV92bV9hcmVhKGFyZWEpO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVModXZfZnJlZV9zdG9yX3ZhciwgXFxcImt2bVxcXCIpO1xcbitcXG4rc3RhdGljIGludCB1dl9hbGxvY19yYW5nZV9jYihwdGVfdCAqcHRlcCwgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBwYWdlICpwYWdlO1xcbitcXHRwdGVfdCBwdGU7XFxuK1xcbitcXHRwYWdlID0gYWxsb2NfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQgfCBfX0dGUF9aRVJPKTtcXG4rXFx0aWYgKCFwYWdlKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0cHRlID0gX19wdGUocGFnZV90b19waHlzKHBhZ2UpIHwgcGdwcm90X3ZhbChQQUdFX0tFUk5FTCkpO1xcbitcXHRzZXRfcHRlKHB0ZXAsIHB0ZSk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbit2b2lkICp1dl9hbGxvY19zdG9yX3Zhcih1bnNpZ25lZCBsb25nIHNpemUpXFxuK3tcXG4rXFx0c3RydWN0IHZtX3N0cnVjdCAqYXJlYTtcXG4rXFx0dW5zaWduZWQgbG9uZyBhZGRyO1xcbitcXG4rXFx0YXJlYSA9IGdldF92bV9hcmVhKHNpemUsIFZNX1NQQVJTRSk7XFxuK1xcdGlmICghYXJlYSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdGFkZHIgPSAodW5zaWduZWQgbG9uZylhcmVhLVxcdTAwM2VhZGRyO1xcbitcXHRpZiAoYXBwbHlfdG9fcGFnZV9yYW5nZShcXHUwMDI2aW5pdF9tbSwgYWRkciwgc2l6ZSwgdXZfYWxsb2NfcmFuZ2VfY2IsIE5VTEwpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0cmV0dXJuIGFyZWEtXFx1MDAzZWFkZHI7XFxuK291dDpcXG4rXFx0dXZfZnJlZV9zdG9yX3ZhcihhcmVhLVxcdTAwM2VhZGRyKTtcXG4rXFx0cmV0dXJuIE5VTEw7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyh1dl9hbGxvY19zdG9yX3ZhciwgXFxcImt2bVxcXCIpO1xcbitcXG4gLypcXG4gICogQ2FsY3VsYXRlIHRoZSBleHBlY3RlZCByZWZfY291bnQgZm9yIGEgZm9saW8gdGhhdCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBub1xcbiAgKiBmdXJ0aGVyIHBpbnMuIFRoaXMgd2FzIGNyaWJiZWQgZnJvbSBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBvdGhlciBwbGFjZXMgaW5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9wdi5jIGIvYXJjaC9zMzkwL2t2bS9wdi5jXFxuaW5kZXggMWJlYWNjODQxY2E4NTAuLmRjNWFjMjliNGMzMTE4IDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rdm0vcHYuY1xcbisrKyBiL2FyY2gvczM5MC9rdm0vcHYuY1xcbkBAIC0zMzcsNyArMzM3LDcgQEAgaW50IGt2bV9zMzkwX3B2X2NyZWF0ZV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MTYgKnJjLCB1MTYgKnJyYylcXG4gLyogb25seSBmcmVlIHJlc291cmNlcyB3aGVuIHRoZSBkZXN0cm95IHdhcyBzdWNjZXNzZnVsICovXFxuIHN0YXRpYyB2b2lkIGt2bV9zMzkwX3B2X2RlYWxsb2Nfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbiB7XFxuLVxcdHZmcmVlKGt2bS1cXHUwMDNlYXJjaC5wdi5zdG9yX3Zhcik7XFxuK1xcdHV2X2ZyZWVfc3Rvcl92YXIoa3ZtLVxcdTAwM2VhcmNoLnB2LnN0b3JfdmFyKTtcXG4gXFx0ZnJlZV9wYWdlcyhrdm0tXFx1MDAzZWFyY2gucHYuc3Rvcl9iYXNlLFxcbiBcXHRcXHQgICBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9iYXNlX3N0b3JfbGVuKSk7XFxuIFxcdGt2bV9zMzkwX2NsZWFyX3B2X3N0YXRlKGt2bSk7XFxuQEAgLTM2OSw3ICszNjksNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3B2X2FsbG9jX3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4gXFx0LyogQWxsb2NhdGUgdmFyaWFibGUgc3RvcmFnZSAqL1xcbiBcXHR2bGVuID0gQUxJR04odmlydCAqICgobnBhZ2VzICogUEFHRV9TSVpFKSAvIEhQQUdFX1NJWkUpLCBQQUdFX1NJWkUpO1xcbiBcXHR2bGVuICs9IHV2X2luZm8uZ3Vlc3RfdmlydF9iYXNlX3N0b3JfbGVuO1xcbi1cXHRrdm0tXFx1MDAzZWFyY2gucHYuc3Rvcl92YXIgPSB2emFsbG9jKHZsZW4pO1xcbitcXHRrdm0tXFx1MDAzZWFyY2gucHYuc3Rvcl92YXIgPSB1dl9hbGxvY19zdG9yX3Zhcih2bGVuKTtcXG4gXFx0aWYgKCFrdm0tXFx1MDAzZWFyY2gucHYuc3Rvcl92YXIpXFxuIFxcdFxcdGdvdG8gb3V0X2VycjtcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3B2X2Rpc3Bvc2Vfb25lX2xlZnRvdmVyKHN0cnVjdCBrdm0gKmt2bSxcXG4gXFx0ICovXFxuIFxcdGZyZWVfcGFnZXMobGVmdG92ZXItXFx1MDAzZXN0b3JfYmFzZSwgZ2V0X29yZGVyKHV2X2luZm8uZ3Vlc3RfYmFzZV9zdG9yX2xlbikpO1xcbiBcXHRmcmVlX3BhZ2VzKGxlZnRvdmVyLVxcdTAwM2VvbGRfZ21hcF90YWJsZSwgQ1JTVF9BTExPQ19PUkRFUik7XFxuLVxcdHZmcmVlKGxlZnRvdmVyLVxcdTAwM2VzdG9yX3Zhcik7XFxuK1xcdHV2X2ZyZWVfc3Rvcl92YXIobGVmdG92ZXItXFx1MDAzZXN0b3JfdmFyKTtcXG4gZG9uZV9mYXN0OlxcbiBcXHRhdG9taWNfZGVjKFxcdTAwMjZrdm0tXFx1MDAzZW1tLVxcdTAwM2Vjb250ZXh0LnByb3RlY3RlZF9jb3VudCk7XFxuIFxcdHJldHVybiAwO1xcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jIGIvYXJjaC9zMzkwL21tL2V4dGFibGUuY1xcbmluZGV4IDA2M2I0MzQ2NzQyZDk2Li43NDk4ZTg1OGM0MDE5NSAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jXFxuKysrIGIvYXJjaC9zMzkwL21tL2V4dGFibGUuY1xcbkBAIC01MCw2ICs1MCwyMiBAQCBzdGF0aWMgYm9vbCBleF9oYW5kbGVyX3VhX2xvYWRfcmVnKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LFxcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgZXhfaGFuZGxlcl96ZXJvcGFkKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4re1xcbitcXHR1bnNpZ25lZCBpbnQgcmVnX2FkZHIgPSBGSUVMRF9HRVQoRVhfREFUQV9SRUdfQUREUiwgZXgtXFx1MDAzZWRhdGEpO1xcbitcXHR1bnNpZ25lZCBpbnQgcmVnX2RhdGEgPSBGSUVMRF9HRVQoRVhfREFUQV9SRUdfRVJSLCBleC1cXHUwMDNlZGF0YSk7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZGF0YSwgYWRkciwgb2Zmc2V0O1xcbitcXG4rXFx0YWRkciA9IHJlZ3MtXFx1MDAzZWdwcnNbcmVnX2FkZHJdO1xcbitcXHRvZmZzZXQgPSBhZGRyIFxcdTAwMjYgKHNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEpO1xcbitcXHRhZGRyIFxcdTAwMjY9IH4oc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSk7XFxuK1xcdGRhdGEgPSAqKHVuc2lnbmVkIGxvbmcgKilhZGRyO1xcbitcXHRkYXRhIFxcdTAwM2NcXHUwMDNjPSBCSVRTX1BFUl9CWVRFICogb2Zmc2V0O1xcbitcXHRyZWdzLVxcdTAwM2VncHJzW3JlZ19kYXRhXSA9IGRhdGE7XFxuK1xcdHJlZ3MtXFx1MDAzZXBzdy5hZGRyID0gZXh0YWJsZV9maXh1cChleCk7XFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbiBzdGF0aWMgYm9vbCBleF9oYW5kbGVyX2ZwYyhjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuIHtcXG4gXFx0ZnB1X3NmcGMoMCk7XFxuQEAgLTExOCw2ICsxMzQsOCBAQCBib29sIGZpeHVwX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4gXFx0XFx0cmV0dXJuIGV4X2hhbmRsZXJfdWFfbG9hZF9yZWcoZXgsIGZhbHNlLCByZWdzKTtcXG4gXFx0Y2FzZSBFWF9UWVBFX1VBX0xPQURfUkVHUEFJUjpcXG4gXFx0XFx0cmV0dXJuIGV4X2hhbmRsZXJfdWFfbG9hZF9yZWcoZXgsIHRydWUsIHJlZ3MpO1xcbitcXHRjYXNlIEVYX1RZUEVfWkVST1BBRDpcXG4rXFx0XFx0cmV0dXJuIGV4X2hhbmRsZXJfemVyb3BhZChleCwgcmVncyk7XFxuIFxcdGNhc2UgRVhfVFlQRV9GUEM6XFxuIFxcdFxcdHJldHVybiBleF9oYW5kbGVyX2ZwYyhleCwgcmVncyk7XFxuIFxcdGNhc2UgRVhfVFlQRV9VQV9NVkNPU19UTzpcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL21tL2ZhdWx0LmMgYi9hcmNoL3MzOTAvbW0vZmF1bHQuY1xcbmluZGV4IDAyOGFlYjljNDhkNmZmLi5kYjc3YzhjMDAyM2VlNiAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvbW0vZmF1bHQuY1xcbisrKyBiL2FyY2gvczM5MC9tbS9mYXVsdC5jXFxuQEAgLTQzOCwxMyArNDM4LDkgQEAgdm9pZCBkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3Moc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuIFxcdFxcdHBhbmljKFxcXCJVbmV4cGVjdGVkIFBHTSAweDNkIHdpdGggVEVJRCBiaXQgNjE9MFxcXCIpO1xcbiBcXHR9XFxuIFxcdGlmIChpc19rZXJuZWxfZmF1bHQocmVncykpIHtcXG4tXFx0XFx0Zm9saW8gPSB2aXJ0X3RvX2ZvbGlvKCh2b2lkICopYWRkcik7XFxuLVxcdFxcdGlmICh1bmxpa2VseSghZm9saW9fdHJ5X2dldChmb2xpbykpKVxcbi1cXHRcXHRcXHRyZXR1cm47XFxuLVxcdFxcdHJjID0gdXZfY29udmVydF9mcm9tX3NlY3VyZShmb2xpb190b19waHlzKGZvbGlvKSk7XFxuLVxcdFxcdGlmICghcmMpXFxuLVxcdFxcdFxcdGNsZWFyX2JpdChQR19hcmNoXzEsIFxcdTAwMjZmb2xpby1cXHUwMDNlZmxhZ3MuZik7XFxuLVxcdFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuK1xcdFxcdGlmIChpc192bWFsbG9jX2FkZHIoKHZvaWQgKilhZGRyKSlcXG4rXFx0XFx0XFx0cmV0dXJuIGhhbmRsZV9mYXVsdF9lcnJvcl9ub2xvY2socmVncywgMCk7XFxuK1xcdFxcdHJjID0gdXZfY29udmVydF9mcm9tX3NlY3VyZShfX3BhKGFkZHIpKTtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogVGhlcmUgYXJlIHNvbWUgdmFsaWQgZml4dXAgdHlwZXMgZm9yIGtlcm5lbFxcbiBcXHRcXHQgKiBhY2Nlc3NlcyB0byBkb25hdGVkIHNlY3VyZSBtZW1vcnkuIHplcm9wYWQgaXMgb25lXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjE5LjQzMDU4MzcyOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkwMjExMDQwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXZfYWxsb2Nfc3Rvcl92YXJcIixcbiAgICBcInV2X2ZyZWVfc3Rvcl92YXJcIixcbiAgICBcInV2X2FsbG9jX3JhbmdlX2NiXCIsXG4gICAgXCJ1dl9mcmVlX3JhbmdlX2NiXCIsXG4gICAgXCJleF9oYW5kbGVyX3plcm9wYWRcIixcbiAgICBcImRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc1wiLFxuICAgIFwia3ZtX3MzOTBfcHZfYWxsb2Nfdm1cIixcbiAgICBcImt2bV9zMzkwX3B2X2RlYWxsb2Nfdm1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBzMzkwIGFyY2hpdGVjdHVyZSBjb2RlLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgb2YgdW5hbGlnbmVkIHdvcmQgbG9hZHMgd2l0aCB6ZXJvIHBhZGRpbmcgKGBsb2FkX3VuYWxpZ25lZF96ZXJvcGFkYCwgYGV4X2hhbmRsZXJfemVyb3BhZGApLCBhbmQgbWVtb3J5IGFsbG9jYXRpb24gZm9yIEtWTSBQcm90ZWN0ZWQgVmlydHVhbGl6YXRpb24gKGB1dl9hbGxvY19zdG9yX3ZhcmAsIGB1dl9mcmVlX3N0b3JfdmFyYCkuIFRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLCB3aGljaCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0bmVzcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YjY0NThmYjkzNjJhYmQ0N2M2M2QxNjg5MDVjNTAxMmM4NTg3NTg2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMTg6NDc6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvS2NvbmZpZyBiL2FyY2gvczM5MC9LY29uZmlnXG5pbmRleCA4NDQwNGU2Nzc4ZDUwNC4uZmU4MWM1MzllZjJmZmMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvS2NvbmZpZ1xuKysrIGIvYXJjaC9zMzkwL0tjb25maWdcbkBAIC0xNjMsNiArMTYzLDcgQEAgY29uZmlnIFMzOTBcbiBcdHNlbGVjdCBBUkNIX1dBTlRTX1RIUF9TV0FQXG4gXHRzZWxlY3QgQlVJTERUSU1FX1RBQkxFX1NPUlRcbiBcdHNlbGVjdCBDTE9ORV9CQUNLV0FSRFMyXG4rXHRzZWxlY3QgRENBQ0hFX1dPUkRfQUNDRVNTIGlmICFLTVNBTlxuIFx0c2VsZWN0IERZTkFNSUNfRlRSQUNFIGlmIEZVTkNUSU9OX1RSQUNFUlxuIFx0c2VsZWN0IEZVTkNUSU9OX0FMSUdOTUVOVF84QiBpZiBDQ19JU19HQ0NcbiBcdHNlbGVjdCBGVU5DVElPTl9BTElHTk1FTlRfMTZCIGlmICFDQ19JU19HQ0NcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXNtLWV4dGFibGUuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9hc20tZXh0YWJsZS5oXG5pbmRleCA5OTc0OGMyMGU3NjcxMy4uZDIzZWEwYzk0ZTRlYTYgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXNtLWV4dGFibGUuaFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FzbS1leHRhYmxlLmhcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2RlZmluZSBFWF9UWVBFX1VBX0ZBVUxUXHQzXG4gI2RlZmluZSBFWF9UWVBFX1VBX0xPQURfUkVHXHQ1XG4gI2RlZmluZSBFWF9UWVBFX1VBX0xPQURfUkVHUEFJUlx0NlxuKyNkZWZpbmUgRVhfVFlQRV9aRVJPUEFEXHRcdDdcbiAjZGVmaW5lIEVYX1RZUEVfRlBDXHRcdDhcbiAjZGVmaW5lIEVYX1RZUEVfVUFfTVZDT1NfVE9cdDlcbiAjZGVmaW5lIEVYX1RZUEVfVUFfTVZDT1NfRlJPTVx0MTBcbkBAIC03OSw2ICs4MCw5IEBAXG4gI2RlZmluZSBFWF9UQUJMRV9VQV9MT0FEX1JFR1BBSVIoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZXJyLCBfcmVnemVybylcdFxcXG4gXHRfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9VQV9MT0FEX1JFR1BBSVIsIF9yZWdlcnIsIF9yZWd6ZXJvLCAwKVxuIFxuKyNkZWZpbmUgRVhfVEFCTEVfWkVST1BBRChfZmF1bHQsIF90YXJnZXQsIF9yZWdkYXRhLCBfcmVnYWRkcilcdFx0XFxcbitcdF9fRVhfVEFCTEUoX19leF90YWJsZSwgX2ZhdWx0LCBfdGFyZ2V0LCBFWF9UWVBFX1pFUk9QQUQsIF9yZWdkYXRhLCBfcmVnYWRkciwgMClcbitcbiAjZGVmaW5lIEVYX1RBQkxFX0ZQQyhfZmF1bHQsIF90YXJnZXQpXHRcdFx0XHRcdFxcXG4gXHRfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9GUEMsIF9fc3RyaW5naWZ5KCUlcjApLCBfX3N0cmluZ2lmeSglJXIwKSwgMClcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdXYuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS91di5oXG5pbmRleCBkOTE5ZTY5NjYyZjU4NC4uMTUzZmVkNjNhZGRhM2MgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdXYuaFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3V2LmhcbkBAIC02MzUsNiArNjM1LDggQEAgaW50IHMzOTBfd2lnZ2xlX3NwbGl0X2ZvbGlvKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbiBpbnQgX19tYWtlX2ZvbGlvX3NlY3VyZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3QgdXZfY2JfaGVhZGVyICp1dmNiKTtcbiBpbnQgdXZfY29udmVydF9mcm9tX3NlY3VyZSh1bnNpZ25lZCBsb25nIHBhZGRyKTtcbiBpbnQgdXZfY29udmVydF9mcm9tX3NlY3VyZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbit2b2lkICp1dl9hbGxvY19zdG9yX3Zhcih1bnNpZ25lZCBsb25nIHNpemUpO1xuK3ZvaWQgdXZfZnJlZV9zdG9yX3Zhcih2b2lkICpzdG9yX3Zhcik7XG4gXG4gdm9pZCBzZXR1cF91dih2b2lkKTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS93b3JkLWF0LWEtdGltZS5oXG5pbmRleCBlOTI4NzAzNjM5MmQwOC4uZWFhMTlkZWU3Njk5NDEgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3dvcmQtYXQtYS10aW1lLmhcbkBAIC00LDYgKzQsNyBAQFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd29yZHBhcnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2FzbS9hc20tZXh0YWJsZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2JpdHNwZXJsb25nLmhcdTAwM2VcbiBcbiBzdHJ1Y3Qgd29yZF9hdF9hX3RpbWUge1xuQEAgLTQwLDQgKzQxLDI1IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB6ZXJvX2J5dGVtYXNrKHVuc2lnbmVkIGxvbmcgZGF0YSlcbiBcdHJldHVybiB+MVVMIFx1MDAzY1x1MDAzYyBkYXRhO1xuIH1cbiBcbisvKlxuKyAqIExvYWQgYW4gdW5hbGlnbmVkIHdvcmQgZnJvbSBrZXJuZWwgc3BhY2UuXG4rICpcbisgKiBJbiB0aGUgKHZlcnkgdW5saWtlbHkpIGNhc2Ugb2YgdGhlIHdvcmQgYmVpbmcgYSBwYWdlLWNyb3NzZXJcbisgKiBhbmQgdGhlIG5leHQgcGFnZSBub3QgYmVpbmcgbWFwcGVkLCB0YWtlIHRoZSBleGNlcHRpb24gYW5kXG4rICogcmV0dXJuIHplcm9lcyBpbiB0aGUgbm9uLWV4aXN0aW5nIHBhcnQuXG4rICovXG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGxvYWRfdW5hbGlnbmVkX3plcm9wYWQoY29uc3Qgdm9pZCAqYWRkcilcbit7XG4rXHR1bnNpZ25lZCBsb25nIGRhdGE7XG4rXG4rXHRhc21faW5saW5lIHZvbGF0aWxlKFxuK1x0XHRcIjA6XHRsZ1x0JVtkYXRhXSwwKCVbYWRkcl0pXFxuXCJcbitcdFx0XCIxOlx0bm9wclx0JSVyN1xcblwiXG4rXHRcdEVYX1RBQkxFX1pFUk9QQUQoMGIsIDFiLCAlW2RhdGFdLCAlW2FkZHJdKVxuK1x0XHRFWF9UQUJMRV9aRVJPUEFEKDFiLCAxYiwgJVtkYXRhXSwgJVthZGRyXSlcbitcdFx0OiBbZGF0YV0gXCI9ZFwiIChkYXRhKVxuK1x0XHQ6IFthZGRyXSBcImFcIiAoYWRkciksIFwibVwiICgqKHVuc2lnbmVkIGxvbmcgKilhZGRyKSk7XG4rXHRyZXR1cm4gZGF0YTtcbit9XG4rXG4gI2VuZGlmIC8qIF9BU01fV09SRF9BVF9BX1RJTUVfSCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rZXJuZWwvdXYuYyBiL2FyY2gvczM5MC9rZXJuZWwvdXYuY1xuaW5kZXggYTI4NGY5OGQ5NzE2ODAuLjk4YTdmOTg4ZmM2OTFkIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2tlcm5lbC91di5jXG4rKysgYi9hcmNoL3MzOTAva2VybmVsL3V2LmNcbkBAIC0xNiw2ICsxNiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3dhcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGFnZXdhbGsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JhY2tpbmctZGV2LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vZmFjaWxpdHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9zZWN0aW9ucy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3V2LmhcdTAwM2VcbkBAIC0yMDksNiArMjEwLDY0IEBAIGludCB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlX3B0ZShwdGVfdCBwdGUpXG4gXHRyZXR1cm4gdXZfY29udmVydF9mcm9tX3NlY3VyZV9mb2xpbyhwZm5fZm9saW8ocHRlX3BmbihwdGUpKSk7XG4gfVxuIFxuK3N0YXRpYyBpbnQgdXZfZnJlZV9yYW5nZV9jYihwdGVfdCAqcHRlcCwgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpkYXRhKVxuK3tcbitcdHB0ZV90IHB0ZSA9IHB0ZXBfZ2V0KHB0ZXApO1xuK1xuK1x0aWYgKCFwdGVfcHJlc2VudChwdGUpKVxuK1x0XHRyZXR1cm4gMDtcbitcdF9fZnJlZV9wYWdlKHB0ZV9wYWdlKHB0ZSkpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3ZvaWQgdXZfZnJlZV9zdG9yX3Zhcih2b2lkICpzdG9yX3Zhcilcbit7XG4rXHR1bnNpZ25lZCBsb25nIGFkZHIsIHNpemU7XG4rXHRzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhO1xuK1xuK1x0aWYgKCFzdG9yX3ZhcilcbitcdFx0cmV0dXJuO1xuK1x0YXJlYSA9IGZpbmRfdm1fYXJlYShzdG9yX3Zhcik7XG4rXHRpZiAoV0FSTl9PTl9PTkNFKCFhcmVhIHx8ICEoYXJlYS1cdTAwM2VmbGFncyBcdTAwMjYgVk1fU1BBUlNFKSkpXG4rXHRcdHJldHVybjtcbitcdHNpemUgPSBnZXRfdm1fYXJlYV9zaXplKGFyZWEpO1xuK1x0YWRkciA9ICh1bnNpZ25lZCBsb25nKWFyZWEtXHUwMDNlYWRkcjtcbitcdGFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2UoXHUwMDI2aW5pdF9tbSwgYWRkciwgc2l6ZSwgdXZfZnJlZV9yYW5nZV9jYiwgTlVMTCk7XG4rXHRmcmVlX3ZtX2FyZWEoYXJlYSk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVModXZfZnJlZV9zdG9yX3ZhciwgXCJrdm1cIik7XG4rXG4rc3RhdGljIGludCB1dl9hbGxvY19yYW5nZV9jYihwdGVfdCAqcHRlcCwgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpkYXRhKVxuK3tcbitcdHN0cnVjdCBwYWdlICpwYWdlO1xuK1x0cHRlX3QgcHRlO1xuK1xuK1x0cGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyk7XG4rXHRpZiAoIXBhZ2UpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0cHRlID0gX19wdGUocGFnZV90b19waHlzKHBhZ2UpIHwgcGdwcm90X3ZhbChQQUdFX0tFUk5FTCkpO1xuK1x0c2V0X3B0ZShwdGVwLCBwdGUpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3ZvaWQgKnV2X2FsbG9jX3N0b3JfdmFyKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbit7XG4rXHRzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhO1xuK1x0dW5zaWduZWQgbG9uZyBhZGRyO1xuK1xuK1x0YXJlYSA9IGdldF92bV9hcmVhKHNpemUsIFZNX1NQQVJTRSk7XG4rXHRpZiAoIWFyZWEpXG4rXHRcdHJldHVybiBOVUxMO1xuK1x0YWRkciA9ICh1bnNpZ25lZCBsb25nKWFyZWEtXHUwMDNlYWRkcjtcbitcdGlmIChhcHBseV90b19wYWdlX3JhbmdlKFx1MDAyNmluaXRfbW0sIGFkZHIsIHNpemUsIHV2X2FsbG9jX3JhbmdlX2NiLCBOVUxMKSlcbitcdFx0Z290byBvdXQ7XG4rXHRyZXR1cm4gYXJlYS1cdTAwM2VhZGRyO1xuK291dDpcbitcdHV2X2ZyZWVfc3Rvcl92YXIoYXJlYS1cdTAwM2VhZGRyKTtcbitcdHJldHVybiBOVUxMO1xuK31cbitFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKHV2X2FsbG9jX3N0b3JfdmFyLCBcImt2bVwiKTtcbitcbiAvKlxuICAqIENhbGN1bGF0ZSB0aGUgZXhwZWN0ZWQgcmVmX2NvdW50IGZvciBhIGZvbGlvIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgbm9cbiAgKiBmdXJ0aGVyIHBpbnMuIFRoaXMgd2FzIGNyaWJiZWQgZnJvbSBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBvdGhlciBwbGFjZXMgaW5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3B2LmMgYi9hcmNoL3MzOTAva3ZtL3B2LmNcbmluZGV4IDFiZWFjYzg0MWNhODUwLi5kYzVhYzI5YjRjMzExOCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vcHYuY1xuKysrIGIvYXJjaC9zMzkwL2t2bS9wdi5jXG5AQCAtMzM3LDcgKzMzNyw3IEBAIGludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpXG4gLyogb25seSBmcmVlIHJlc291cmNlcyB3aGVuIHRoZSBkZXN0cm95IHdhcyBzdWNjZXNzZnVsICovXG4gc3RhdGljIHZvaWQga3ZtX3MzOTBfcHZfZGVhbGxvY192bShzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuLVx0dmZyZWUoa3ZtLVx1MDAzZWFyY2gucHYuc3Rvcl92YXIpO1xuK1x0dXZfZnJlZV9zdG9yX3Zhcihrdm0tXHUwMDNlYXJjaC5wdi5zdG9yX3Zhcik7XG4gXHRmcmVlX3BhZ2VzKGt2bS1cdTAwM2VhcmNoLnB2LnN0b3JfYmFzZSxcbiBcdFx0ICAgZ2V0X29yZGVyKHV2X2luZm8uZ3Vlc3RfYmFzZV9zdG9yX2xlbikpO1xuIFx0a3ZtX3MzOTBfY2xlYXJfcHZfc3RhdGUoa3ZtKTtcbkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wdl9hbGxvY192bShzdHJ1Y3Qga3ZtICprdm0pXG4gXHQvKiBBbGxvY2F0ZSB2YXJpYWJsZSBzdG9yYWdlICovXG4gXHR2bGVuID0gQUxJR04odmlydCAqICgobnBhZ2VzICogUEFHRV9TSVpFKSAvIEhQQUdFX1NJWkUpLCBQQUdFX1NJWkUpO1xuIFx0dmxlbiArPSB1dl9pbmZvLmd1ZXN0X3ZpcnRfYmFzZV9zdG9yX2xlbjtcbi1cdGt2bS1cdTAwM2VhcmNoLnB2LnN0b3JfdmFyID0gdnphbGxvYyh2bGVuKTtcbitcdGt2bS1cdTAwM2VhcmNoLnB2LnN0b3JfdmFyID0gdXZfYWxsb2Nfc3Rvcl92YXIodmxlbik7XG4gXHRpZiAoIWt2bS1cdTAwM2VhcmNoLnB2LnN0b3JfdmFyKVxuIFx0XHRnb3RvIG91dF9lcnI7XG4gXHRyZXR1cm4gMDtcbkBAIC00MTQsNyArNDE0LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wdl9kaXNwb3NlX29uZV9sZWZ0b3ZlcihzdHJ1Y3Qga3ZtICprdm0sXG4gXHQgKi9cbiBcdGZyZWVfcGFnZXMobGVmdG92ZXItXHUwMDNlc3Rvcl9iYXNlLCBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9iYXNlX3N0b3JfbGVuKSk7XG4gXHRmcmVlX3BhZ2VzKGxlZnRvdmVyLVx1MDAzZW9sZF9nbWFwX3RhYmxlLCBDUlNUX0FMTE9DX09SREVSKTtcbi1cdHZmcmVlKGxlZnRvdmVyLVx1MDAzZXN0b3JfdmFyKTtcbitcdHV2X2ZyZWVfc3Rvcl92YXIobGVmdG92ZXItXHUwMDNlc3Rvcl92YXIpO1xuIGRvbmVfZmFzdDpcbiBcdGF0b21pY19kZWMoXHUwMDI2a3ZtLVx1MDAzZW1tLVx1MDAzZWNvbnRleHQucHJvdGVjdGVkX2NvdW50KTtcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9tbS9leHRhYmxlLmMgYi9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jXG5pbmRleCAwNjNiNDM0Njc0MmQ5Ni4uNzQ5OGU4NThjNDAxOTUgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jXG4rKysgYi9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jXG5AQCAtNTAsNiArNTAsMjIgQEAgc3RhdGljIGJvb2wgZXhfaGFuZGxlcl91YV9sb2FkX3JlZyhjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCxcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBleF9oYW5kbGVyX3plcm9wYWQoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuK3tcbitcdHVuc2lnbmVkIGludCByZWdfYWRkciA9IEZJRUxEX0dFVChFWF9EQVRBX1JFR19BRERSLCBleC1cdTAwM2VkYXRhKTtcbitcdHVuc2lnbmVkIGludCByZWdfZGF0YSA9IEZJRUxEX0dFVChFWF9EQVRBX1JFR19FUlIsIGV4LVx1MDAzZWRhdGEpO1xuK1x0dW5zaWduZWQgbG9uZyBkYXRhLCBhZGRyLCBvZmZzZXQ7XG4rXG4rXHRhZGRyID0gcmVncy1cdTAwM2VncHJzW3JlZ19hZGRyXTtcbitcdG9mZnNldCA9IGFkZHIgXHUwMDI2IChzaXplb2YodW5zaWduZWQgbG9uZykgLSAxKTtcbitcdGFkZHIgXHUwMDI2PSB+KHNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEpO1xuK1x0ZGF0YSA9ICoodW5zaWduZWQgbG9uZyAqKWFkZHI7XG4rXHRkYXRhIFx1MDAzY1x1MDAzYz0gQklUU19QRVJfQllURSAqIG9mZnNldDtcbitcdHJlZ3MtXHUwMDNlZ3Byc1tyZWdfZGF0YV0gPSBkYXRhO1xuK1x0cmVncy1cdTAwM2Vwc3cuYWRkciA9IGV4dGFibGVfZml4dXAoZXgpO1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuK1xuIHN0YXRpYyBib29sIGV4X2hhbmRsZXJfZnBjKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncylcbiB7XG4gXHRmcHVfc2ZwYygwKTtcbkBAIC0xMTgsNiArMTM0LDggQEAgYm9vbCBmaXh1cF9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4gXHRcdHJldHVybiBleF9oYW5kbGVyX3VhX2xvYWRfcmVnKGV4LCBmYWxzZSwgcmVncyk7XG4gXHRjYXNlIEVYX1RZUEVfVUFfTE9BRF9SRUdQQUlSOlxuIFx0XHRyZXR1cm4gZXhfaGFuZGxlcl91YV9sb2FkX3JlZyhleCwgdHJ1ZSwgcmVncyk7XG4rXHRjYXNlIEVYX1RZUEVfWkVST1BBRDpcbitcdFx0cmV0dXJuIGV4X2hhbmRsZXJfemVyb3BhZChleCwgcmVncyk7XG4gXHRjYXNlIEVYX1RZUEVfRlBDOlxuIFx0XHRyZXR1cm4gZXhfaGFuZGxlcl9mcGMoZXgsIHJlZ3MpO1xuIFx0Y2FzZSBFWF9UWVBFX1VBX01WQ09TX1RPOlxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9tbS9mYXVsdC5jIGIvYXJjaC9zMzkwL21tL2ZhdWx0LmNcbmluZGV4IDAyOGFlYjljNDhkNmZmLi5kYjc3YzhjMDAyM2VlNiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9tbS9mYXVsdC5jXG4rKysgYi9hcmNoL3MzOTAvbW0vZmF1bHQuY1xuQEAgLTQzOCwxMyArNDM4LDkgQEAgdm9pZCBkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3Moc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4gXHRcdHBhbmljKFwiVW5leHBlY3RlZCBQR00gMHgzZCB3aXRoIFRFSUQgYml0IDYxPTBcIik7XG4gXHR9XG4gXHRpZiAoaXNfa2VybmVsX2ZhdWx0KHJlZ3MpKSB7XG4tXHRcdGZvbGlvID0gdmlydF90b19mb2xpbygodm9pZCAqKWFkZHIpO1xuLVx0XHRpZiAodW5saWtlbHkoIWZvbGlvX3RyeV9nZXQoZm9saW8pKSlcbi1cdFx0XHRyZXR1cm47XG4tXHRcdHJjID0gdXZfY29udmVydF9mcm9tX3NlY3VyZShmb2xpb190b19waHlzKGZvbGlvKSk7XG4tXHRcdGlmICghcmMpXG4tXHRcdFx0Y2xlYXJfYml0KFBHX2FyY2hfMSwgXHUwMDI2Zm9saW8tXHUwMDNlZmxhZ3MuZik7XG4tXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4rXHRcdGlmIChpc192bWFsbG9jX2FkZHIoKHZvaWQgKilhZGRyKSlcbitcdFx0XHRyZXR1cm4gaGFuZGxlX2ZhdWx0X2Vycm9yX25vbG9jayhyZWdzLCAwKTtcbitcdFx0cmMgPSB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlKF9fcGEoYWRkcikpO1xuIFx0XHQvKlxuIFx0XHQgKiBUaGVyZSBhcmUgc29tZSB2YWxpZCBmaXh1cCB0eXBlcyBmb3Iga2VybmVsXG4gXHRcdCAqIGFjY2Vzc2VzIHRvIGRvbmF0ZWQgc2VjdXJlIG1lbW9yeS4gemVyb3BhZCBpcyBvbmVcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjE5LjQzMDU4NDkzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NTgxMjMxNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBzMzkwIEtlcm5lbCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIHRhcmdldGluZyB0aGUgczM5MCBhcmNoaXRlY3R1cmUuIExvb2tzIGxpa2UgaXQgdG91Y2hlcyBhIHNpZ25pZmljYW50IGNodW5rIG9mIHRoZSBzMzkwIGNvZGUgYmFzZTogYGFyY2gvczM5MC9LY29uZmlnYCwgc2V2ZXJhbCBpbmNsdWRlIGZpbGVzLCBhbmQgYSBmZXcgY29yZSBrZXJuZWwgYXJlYXMgbGlrZSBgdXYuY2AsIGBrdm0vcHYuY2AsIGBleHRhYmxlLmNgLCBhbmQgYGZhdWx0LmNgLiBUaGUgY2hhbmdlcyBhcmUgc3BlY2lmaWNhbGx5IGFyb3VuZCBhZGRpbmcgYERDQUNIRV9XT1JEX0FDQ0VTU2AgKGNvbmRpdGlvbmFsbHksIGlmIG5vdCBLTVNBTiksIGludHJvZHVjaW5nIG5ldyBleGNlcHRpb24gdHlwZXMsIGltcGxlbWVudGluZyBhbiBpbmxpbmUgYGxvYWRfdW5hbGlnbmVkX3plcm9wYWRgIGZ1bmN0aW9uLCBhZGRpbmcgc3RvcmFnZSB2YXJpYWJsZSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBpbiBgdXYuY2AgYW5kIHVzaW5nIHRoZW0gaW4gS1ZNJ3MgUFYgY29kZSwgYW5kIHR3ZWFraW5nIGBkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3NgIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBmYXVsdCBoYW5kbGVyLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgdGhpbmcgKmZ1bmN0aW9uYWwqIGFuZCAqcmVhY2hhYmxlKj8gU2luY2UgdGhpcyBpcyBzMzkwLXNwZWNpZmljLCB0aGF0J3MgdGhlIGNydWNpYWwgcXVlc3Rpb24uIEl0IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIGluIEtWTSBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nIHdoZW4gZGVhbGluZyB3aXRoIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzIHdpdGggemVyby1wYWRkaW5nLiBOb3JtYWxseSwgSSB3b3VsZCB0aGluayB0d2ljZSBhYm91dCBmdXp6aW5nIGNvZGUgcGF0aHMgdGhhdCBhcmUgZGlmZmljdWx0IHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYnV0IHdhaXQsIHN5emthbGxlciAqZG9lcyogc3VwcG9ydCBzMzkweCBRRU1VLCBzbyB0aGF0IGNoYW5nZXMgdGhlIGNhbGN1bHVzLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZXhwbG9yaW5nIGJlY2F1c2UgaXQncyB0b3VjaGluZyBwcmV0dHkgY29yZSBrZXJuZWwgbG9naWMuXG5cbkkgbmVlZCB0byBuYWlsIGRvd24gZXhhY3RseSB3aGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgcmVsZXZhbnQgZm9yIGZ1enppbmcsIHNvIEknbGwgYmUgZm9jdXNpbmcgb246IGBsb2FkX3VuYWxpZ25lZF96ZXJvcGFkYCAodGhhdCBpbmxpbmUgZnVuY3Rpb24gaXMgYWx3YXlzIGEgZ29vZCB0YXJnZXQpLCBgdXZfYWxsb2Nfc3Rvcl92YXJgLCBgdXZfZnJlZV9zdG9yX3ZhcmAsIHRoZSBga3ZtX3MzOTBfcHZfKmAgZnVuY3Rpb25zLCBgZXhfaGFuZGxlcl96ZXJvcGFkYCwgYW5kIGBkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3NgLlxuXG5UaW1lIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIHRvIHNlZSB3aGF0J3MgZW5hYmxpbmcgYERDQUNIRV9XT1JEX0FDQ0VTU2AuIEknbGwgc2VlIGlmIGBTMzkwYCBpcyBzZWxlY3RpbmcgaXQuIEFuZCBJJ2xsIGRvdWJsZS1jaGVjayB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgYHV2LmNgIGFuZCBga3ZtL3B2LmNgLCBqdXN0IHRvIGdldCBhIGZ1bGxlciBwaWN0dXJlIG9mIHRoZSBjb250ZXh0IGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQyNiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjI4LjM4ODcxMDc2N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY2MjkwMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva2VybmVsL01ha2VmaWxlPTQ1PW9iai15XFx0Kz0gbm9zcGVjLWJyYW5jaC5vIGlwbF92bXBhcm0ubyBtYWNoaW5lX2tleGVjX3JlbG9jLm8gdW53aW5kX2JjLm9cXG5hcmNoL3MzOTAva2VybmVsL01ha2VmaWxlOjQ2Om9iai15XFx0Kz0gc21wLm8gdGV4dF9hbW9kZTMxLm8gc3RhY2t0cmFjZS5vIGFic19sb3djb3JlLm8gZmFjaWxpdHkubyB1di5vIHd0aS5vXFxuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS00Ny1vYmoteVxcdCs9IGRpYWcvXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjI4Ljg0NTM0NTI4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ3NjQzMzk4NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OlxuXG4qKkNvbnNpZGVyaW5nIHMzOTAgQnVpbGQgSGFiaXRzIGFuZCBLVk0vUFYuYyoqXG5cbkFscmlnaHQsIEknbSB0aGlua2luZyBhYm91dCB0aGlzIGJ1aWxkIHByb2Nlc3MuLi4gU3BlY2lmaWNhbGx5LCBJJ20gc2VlaW5nIHRoYXQgdGhlIGB1di5vYCBvYmplY3QgZmlsZSAqYWx3YXlzKiBzZWVtcyB0byBiZSBjb21waWxlZCBhbmQgYnVpbHQgc3BlY2lmaWNhbGx5IGZvciB0aGUgczM5MCBhcmNoaXRlY3R1cmUuIEl0J3MgYSBiaXQgb2YgYSBnaXZlbiBhdCB0aGlzIHBvaW50LCBidXQgaXQgdHJpZ2dlcnMgc29tZXRoaW5nIGluIHRoZSBiYWNrIG9mIG15IG1pbmQuXG5cblRoZW4gdGhlIHF1ZXN0aW9uIGhpdHMgbWU6IHdoYXQgYWJvdXQgYGt2bS9wdi5jYD8gSXMgdGhhdCBmaWxlIGFsc28gY29uc2lzdGVudGx5IGJ1aWx0IHdpdGggczM5MCBpbiBtaW5kLCBvciBhcmUgdGhlcmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZWxlbWVudHMgYXQgcGxheT8gSWYgaXQncyAqbm90KiBhbHdheXMgYW4gczM5MC1zcGVjaWZpYyBidWlsZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGRyaXZpbmcgdGhlIGRpZmZlcmVuY2UuIEFyZSB0aGVyZSBwbGF0Zm9ybS1zcGVjaWZpYyBvcHRpbWl6YXRpb25zIG9yIGFyY2hpdGVjdHVyYWwgY29uc2lkZXJhdGlvbnMgaW5oZXJlbnQgaW4gYHV2Lm9gIHRoYXQgKmFyZW4ndCogYXMgc3Ryb25nbHkgcHJlc2VudCBpbiB0aGUgS1ZNIHBhcmF2aXJ0dWFsaXphdGlvbiBjb2RlPyBPciBwZXJoYXBzIHRoZXJlIGFyZSB2ZXJ5IHNwZWNpZmljIHVzZSBjYXNlcyBmb3Igb25lIG9yIHRoZSBvdGhlcj8gVGhpcyBjb3VsZCBiZSBiZWNhdXNlIEtWTS9QViBpcyBleHBlY3RlZCB0byBiZSBtb3JlIHBvcnRhYmxlLCBidXQgVVYgbWlnaHQgaGF2ZSB2ZXJ5IHNwZWNpZmljIGZlYXR1cmVzIGZvciBzMzkwIHdoaWNoIGl0IG5lZWRzIHRvIGxldmVyYWdlLlxuRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aHkgb25lIHNlZW1zIHRvIGJlIGFuIHMzOTAgZ2l2ZW4sIGFuZCB0aGUgb3RoZXIgZG9lc24ndCBhcHBlYXIgYXMgc3VjaCBhdCBmaXJzdCBnbGFuY2UuIEl0J3MgdGltZSB0byBkaWcgZGVlcGVyIGludG8gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCB0aGUgY29kZSBpdHNlbGYgdG8gc2VlIGlmIHRoZSBhc3N1bXB0aW9ucyBob2xkLCBhbmQgdGhlIHJlYXNvbnMgd2h5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzYyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTg6NDc6NDMuNjA5Njg3MjEzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzAyOTk1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwdlxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTA9a3ZtLXkgKz0ga3ZtLXMzOTAubyBpbnRlcmNlcHQubyBpbnRlcnJ1cHQubyBwcml2Lm8gc2lncC5vXFxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZToxMTprdm0teSArPSBkaWFnLm8gZ2FjY2Vzcy5vIGd1ZXN0ZGJnLm8gdnNpZS5vIHB2Lm9cXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTEyLWt2bS15ICs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTg6NDc6NDQuMDQyNzIxMTY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyMjE4NDM4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKktWTSBDb25maWd1cmF0aW9uIGFuZCBTZWN1cmUgU3RvcmFnZSBBY2Nlc3MqKlxuXG5SaWdodCwgc28gYHB2Lm9gIGlzIGNvbnNpc3RlbnRseSBidWlsdCB3aGVuZXZlciBLVk0gaXMgYWN0aXZlLiBUaGF04oCZcyBhIGNsZWFyIGluZGljYXRpb24gdGhhdCBLVk0gaXMgdGhlIGRlY2lkaW5nIGZhY3RvciBpbiBpdHMgaW5jbHVzaW9uLiBJbiBvdGhlciB3b3JkcywgYEtWTWAgaXMgdGhlIGNvbmZpZyBvcHRpb24gdGhhdCB0cmlnZ2VycyBpdC4gV2FpdCBhIG1vbWVudCwgSSB0aGluayBJIHJlbWVtYmVyIHRoaXM6IGZvciBzMzkwLCBLVk0gaXMgZXhwbGljaXRseSBsYWJlbGVkIGFzIGBDT05GSUdfS1ZNYC4gVGhhdCBjb25maXJtcyBteSBpbml0aWFsIGFzc2Vzc21lbnQuXG5cbk5vdywgbGV0J3MgcGl2b3QgdG8gaW52ZXN0aWdhdGluZyBgZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzYC4gU3BlY2lmaWNhbGx5LCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gd2l0aGluIGBhcmNoL3MzOTAvbW0vZmF1bHQuY2AuIFRoYXQgc2VlbXMgdG8gYmUgdGhlIHJpZ2h0IHBsYWNlIHRvIGdldCBhIGRlZXBlciBsb29rIGF0IHRoZSBzZWN1cmUgc3RvcmFnZSBhY2Nlc3MgaW1wbGVtZW50YXRpb24gd2l0aGluIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI3MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjQ3Ljc2NDkwODI3N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIzODk5NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9tbS9mYXVsdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9tbS9mYXVsdC5jPTQwND1OT0tQUk9CRV9TWU1CT0woZG9fZGF0X2V4Y2VwdGlvbik7XFxuLS1cXG5hcmNoL3MzOTAvbW0vZmF1bHQuYy00MDctXFxuYXJjaC9zMzkwL21tL2ZhdWx0LmM6NDA4OnZvaWQgZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbmFyY2gvczM5MC9tbS9mYXVsdC5jLTQwOS17XFxuLS1cXG5hcmNoL3MzOTAvbW0vZmF1bHQuYy00NzMtfVxcbmFyY2gvczM5MC9tbS9mYXVsdC5jOjQ3NDpOT0tQUk9CRV9TWU1CT0woZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzKTtcXG5hcmNoL3MzOTAvbW0vZmF1bHQuYy00NzUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjQ3LjkwNzMwNzkzOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NjIzMjQxMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTdG9yYWdlIFZhcmlhYmxlIEFsbG9jYXRpb24gQ29kZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHRoZXNlIGNvcmUgZnVuY3Rpb25zOiBgdXZfYWxsb2Nfc3Rvcl92YXJgLCBgdXZfZnJlZV9zdG9yX3ZhcmAsIGBleF9oYW5kbGVyX3plcm9wYWRgLCBhbmQgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2AuIFRoZXNlIGFyZSB0aGUga2V5IGFyZWFzIHdoZXJlIEkgc3VzcGVjdCBtb2RpZmljYXRpb25zIG9yIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2lsbCBiZSBjcml0aWNhbC5cblxuTm93LCBmb3IgdGhlIGNvbmZpZ3MuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIG9ubHkgbGlzdCB0aG9zZSBjb25maWdzIHRoYXQgZGlyZWN0bHkgcmVsYXRlIHRvIHRoZSBjb2RlLCBhbmQgbm90IHRoZSBnZW5lcmljIHN0dWZmLiBgUzM5MGAgaXMgdGhlIGJhc2UgYXJjaGl0ZWN0dXJlLCBzbyB0aGF0J3MgaW1wbGljaXQuIEJ1dCB0aGUgcHJlc2VuY2Ugb2YgYGt2bV9zMzkwX3B2X2FsbG9jX3ZtYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgcG9pbnRzIGRpcmVjdGx5IHRvIGBLVk1gLiBUaGVyZWZvcmUsIGBLVk1gIGlzIHRoZSBjb25maWcgSSdtIG1vc3QgaW50ZXJlc3RlZCBpbiwgZ2l2ZW4gdGhlIHByZXNlbmNlIG9mIHRob3NlIHNwZWNpZmljIGZ1bmN0aW9ucy5cblxuQSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0IGBhcmNoL3MzOTAva3ZtL01ha2VmaWxlYCBpcyB0aGUgcmVsZXZhbnQgZmlsZSwgc28gYEtWTWAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gZmxhZyB0byBjb25zaWRlciBoZXJlLiBUaGF0IHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NTEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTg6NDc6NTIuNjY5NjM0NjI2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzEzNzgwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXFxcXCRcXFxcKENPTkZJR19LVk1cXFxcKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTQ9a3ZtLSQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSArPSBwY2kub1xcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX0tWTSkgKz0ga3ZtLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTg6NDc6NTIuNzUyNzc3MzMxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjExMzYzNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gcHJvY2VzcywgZXhwcmVzc2VkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczpcblxuKipDb25maWd1cmF0aW9uIEFuYWx5c2lzOiBLVk0gYW5kIEltcGxpY2l0IERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZCB3aXRoIGBDT05GSUdfS1ZNYC4gVGhhdCdzIHRoZSBiYXNlbGluZSwgdGhlIGNvcmUgb2YgdGhlIGh5cGVydmlzb3Igc3VwcG9ydC4gTm93LCB0aGUgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogY29uZmlndXJhdGlvbnMgdGllZCBpbiBvciBhZmZlY3RlZCBieSB0aGlzLlxuXG5BaGEhIEl0IGxvb2tzIGxpa2UgYERDQUNIRV9XT1JEX0FDQ0VTU2AgaXMgYXV0b21hdGljYWxseSBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgYXJjaGl0ZWN0dXJlLCB3aGljaCBpcyBgUzM5MGAsICp1bmxlc3MqIGBLTVNBTmAgaXMgKm5vdCogZW5hYmxlZC4gU28sIGluIHRoaXMgc2NlbmFyaW8gZ2l2ZW4gdGhhdCB3ZSBrbm93IGBDT05GSUdfS1ZNYCBpcyBjb25maWd1cmVkLCBgRENBQ0hFX1dPUkRfQUNDRVNTYCBpcyBpbXBsaWNpdGx5IGVuYWJsZWQgYmVjYXVzZSB3ZSBkb24ndCBrbm93IHRoZSBzdGF0ZSBvZiBgS01TQU5gLlxuXG5Ob3csIEknbSBnb2luZyB0byBzaGlmdCBnZWFycyBzbGlnaHRseSBhbmQgY2hlY2sgb24gYGV4X2hhbmRsZXJfemVyb3BhZGAgd2l0aGluIGBhcmNoL3MzOTAvbW0vZXh0YWJsZS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI4MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjU2Ljg3MzkxNzc4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ3NDUxNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXhfaGFuZGxlcl96ZXJvcGFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9tbS9leHRhYmxlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL21tL2V4dGFibGUuYz0zOT1zdGF0aWMgYm9vbCBleF9oYW5kbGVyX3VhX2xvYWRfcmVnKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LFxcbi0tXFxuYXJjaC9zMzkwL21tL2V4dGFibGUuYy01Mi1cXG5hcmNoL3MzOTAvbW0vZXh0YWJsZS5jOjUzOnN0YXRpYyBib29sIGV4X2hhbmRsZXJfemVyb3BhZChjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuYXJjaC9zMzkwL21tL2V4dGFibGUuYy01NC17XFxuLS1cXG5hcmNoL3MzOTAvbW0vZXh0YWJsZS5jPTExOT1ib29sIGZpeHVwX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmFyY2gvczM5MC9tbS9leHRhYmxlLmMtMTM3LVxcdGNhc2UgRVhfVFlQRV9aRVJPUEFEOlxcbmFyY2gvczM5MC9tbS9leHRhYmxlLmM6MTM4OlxcdFxcdHJldHVybiBleF9oYW5kbGVyX3plcm9wYWQoZXgsIHJlZ3MpO1xcbmFyY2gvczM5MC9tbS9leHRhYmxlLmMtMTM5LVxcdGNhc2UgRVhfVFlQRV9GUEM6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjU2Ljk1ODY2ODExMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODM4OTczODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQgSSdtIGxvb2tpbmcgYXQsIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKlByaW9yaXRpemluZyBDb2RlIEFuYWx5c2lzOiBLZXkgRnVuY3Rpb25zIGZvciBEZWVwIERpdmUqKlxuXG5SaWdodCwgc28gSSdtIGhvbmluZyBpbiBvbiBzcGVjaWZpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgY29kZWJhc2UuIEl0J3MgY2xlYXIgdGhhdCB0aGVzZSBhcmUgdGhlIG9uZXMgdG8gc2NydXRpbml6ZSBtb3N0IGNsb3NlbHkuIE15IHByaW1hcnkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb246IGB1dl9hbGxvY19zdG9yX3ZhcmAgYW5kIGB1dl9mcmVlX3N0b3JfdmFyYCDigJMgdGhlc2UgYXJlIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHN0b3JhZ2UgdmFyaWFibGVzIGFyZSBhbGxvY2F0ZWQgYW5kIGRlYWxsb2NhdGVkLiBUaGF0J3MgYSBjbGFzc2ljIGFyZWEgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3Mgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBOZXh0IHVwLCBgZXhfaGFuZGxlcl96ZXJvcGFkYCBpcyBpbnRlcmVzdGluZzsgemVyby1wYWRkaW5nIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gaW52b2x2ZWQgaW4gc2Vuc2l0aXZlIGRhdGEgaGFuZGxpbmcsIGFuZCBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgb25lIGlzIGltcGxlbWVudGVkIGNvcnJlY3RseSwgaW5jbHVkaW5nIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBwYWRkaW5nIG9yYWNsZSBhdHRhY2sgdmVjdG9ycy4gTW92aW5nIG9uIHRvIHNlY3VyZSBzdG9yYWdlIGFjY2VzcywgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2AgaXMgb2J2aW91c2x5IGNyaXRpY2FsOyBhbnkgZmxhdyBoZXJlIGNvdWxkIGNvbXByb21pc2UgdGhlIGVudGlyZSBzeXN0ZW0ncyBzZWN1cml0eSBwb3N0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYWNjZXNzIGNvbnRyb2wgbWVjaGFuaXNtcywgZW5jcnlwdGlvbiwgYW5kIGF1dGhlbnRpY2F0aW9uIGludm9sdmVkLiBGaW5hbGx5LCB0aGUgS1ZNL3MzOTAgdmlydHVhbGl6YXRpb24gc3BlY2lmaWMgZnVuY3Rpb25zIGBrdm1fczM5MF9wdl9hbGxvY192bWAgYW5kIGBrdm1fczM5MF9wdl9kZWFsbG9jX3ZtYCBsb29rIGxpa2Uga2V5IHBpZWNlcyBmb3IgbWFuYWdpbmcgdmlydHVhbCBtYWNoaW5lIHJlc291cmNlcy4gSSdsbCBuZWVkIHRvIGV4cGxvcmUgdGhlc2UgaW4gY29udGV4dCB0byBjb25maXJtIHdoZXRoZXIgdGhlcmUgYXJlIGlzc3VlcyBoZXJlIHJlbGF0ZWQgdG8gcmVzb3VyY2UgZXhoYXVzdGlvbiwgb3IgYW55IHNlY3VyaXR5IGNvbmNlcm5zLlxuXG5JJ3ZlIGFsc28gbm90aWNlZCBhIGNvdXBsZSBvZiBhZGRpdGlvbmFsIGZ1bmN0aW9ucyB0aGF0IHdhcnJhbnQgZnVydGhlciBpbnZlc3RpZ2F0aW9uOiBgdXZfZnJlZV9yYW5nZV9jYmAgYW5kIGB1dl9hbGxvY19yYW5nZV9jYmAuIFRoZXNlICpjb3VsZCogYmUgaW52b2x2ZWQgaW4gc2ltaWxhciBtZW1vcnkgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24gdGFza3MgYXMgdGhlIGluaXRpYWwgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODc5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ4OjAxLjc5NzY0NDQ0NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4NDU2NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInV2X2ZyZWVfcmFuZ2VfY2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2tlcm5lbC91di5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rZXJuZWwvdXYuYz0yMDc9aW50IHV2X2NvbnZlcnRfZnJvbV9zZWN1cmVfcHRlKHB0ZV90IHB0ZSlcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvdXYuYy0yMTItXFxuYXJjaC9zMzkwL2tlcm5lbC91di5jOjIxMzpzdGF0aWMgaW50IHV2X2ZyZWVfcmFuZ2VfY2IocHRlX3QgKnB0ZXAsIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqZGF0YSlcXG5hcmNoL3MzOTAva2VybmVsL3V2LmMtMjE0LXtcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvdXYuYz0yMjM9dm9pZCB1dl9mcmVlX3N0b3JfdmFyKHZvaWQgKnN0b3JfdmFyKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC91di5jLTIzNC1cXHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYXJlYS1cXHUwMDNlYWRkcjtcXG5hcmNoL3MzOTAva2VybmVsL3V2LmM6MjM1OlxcdGFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2UoXFx1MDAyNmluaXRfbW0sIGFkZHIsIHNpemUsIHV2X2ZyZWVfcmFuZ2VfY2IsIE5VTEwpO1xcbmFyY2gvczM5MC9rZXJuZWwvdXYuYy0yMzYtXFx0ZnJlZV92bV9hcmVhKGFyZWEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxODo0ODowMS45MjYxMDU5MDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM4OTgzOTQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgaGVyZSdzIHRoZSBicmVha2Rvd24uIEkgc2VlIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBjaGFuZ2VzIHRoYXQgYXJlIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4gVGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGFyZSBgdXZfZnJlZV9yYW5nZV9jYmAgYW5kIGB1dl9hbGxvY19yYW5nZV9jYmAgLSB0aGUgbWVtb3J5IGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIGNhbGxiYWNrcyBhcmUgYWx3YXlzIGNyaXRpY2FsIGFyZWFzIHRvIGV4cGxvcmUgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cbkxldCdzIHN1bW1hcml6ZSBteSBhbmFseXNpczpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIEFic29sdXRlbHkuXG4qICAgKipGb2N1cyBTeW1ib2xzOioqIFdlIG5lZWQgdG8gcHJpb3JpdGl6ZSB0aGVzZSBzeW1ib2xzIHdoZW4gc2V0dGluZyB1cCB0aGUgZnV6emluZyBjYW1wYWlnbjpcbiAgICAqICAgYHV2X2FsbG9jX3N0b3JfdmFyYFxuICAgICogICBgdXZfZnJlZV9zdG9yX3ZhcmBcbiAgICAqICAgYHV2X2FsbG9jX3JhbmdlX2NiYFxuICAgICogICBgdXZfZnJlZV9yYW5nZV9jYmBcbiAgICAqICAgYGV4X2hhbmRsZXJfemVyb3BhZGBcbiAgICAqICAgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2BcbiAgICAqICAgYGt2bV9zMzkwX3B2X2FsbG9jX3ZtYFxuICAgICogICBga3ZtX3MzOTBfcHZfZGVhbGxvY192bWBcblxuKiAgICoqRW5hYmxlIENvbmZpZ3VyYXRpb25zOioqIFRoZSBgS1ZNYCBjb25maWd1cmF0aW9uIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgZnV6emluZyBjYW1wYWlnbiwgYXMgdGhlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gdGhhdCBzdWJzeXN0ZW0uXG5cbiogICAqKlJlYXNvbmluZzoqKiBUaGlzIHBhdGNoIGRpZ3MgaW50byBzMzkwIGFyY2hpdGVjdHVyZSBzcGVjaWZpY3MsIHdoaWNoIGFsd2F5cyBwaXF1ZSBteSBpbnRlcmVzdC4gSSBzZWUgZnVuY3Rpb25hbGl0eSB0aGF0IHNwZWNpZmljYWxseSByZWxhdGVzIHRvIHVuYWxpZ25lZCB3b3JkIGxvYWRzIHdpdGggemVybyBwYWRkaW5nLCBhbmQgUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIG1lbW9yeSBtYW5hZ2VtZW50LCB3aGljaCwgZnJvbSBhbiBhdHRhY2sgc3VyZmFjZSBwb2ludCBvZiB2aWV3LCBpcyBhIGhpZ2gtdmFsdWUgdGFyZ2V0LiBUaGVzZSBtb2RpZmljYXRpb25zIHRvdWNoIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBleGNlcHRpb24gaGFuZGxpbmcsIGFuZCB0aG9zZSBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgdW5jb3ZlcmluZyBtZW1vcnkgc2FmZXR5IGJ1Z3Mgb3IgY29ycmVjdG5lc3MgaXNzdWVzIHRocm91Z2ggZnV6emluZy4gVGhlIGludGVycGxheSBvZiBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nIGlzIGEgY2xhc3NpYyByZWNpcGUgZm9yIHZ1bG5lcmFiaWxpdHkuIEl0J3MgdGltZSB0byBzZXQgdXAgdGhlIGZ1enplcnMgYW5kIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjU1LCJPdXRwdXRUb2tlbnMiOjIyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxODo0ODowOC4zMTU5NDc4ODhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU3MzQ2NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInV2X2FsbG9jX3N0b3JfdmFyXCIsXG4gICAgXCJ1dl9mcmVlX3N0b3JfdmFyXCIsXG4gICAgXCJ1dl9hbGxvY19yYW5nZV9jYlwiLFxuICAgIFwidXZfZnJlZV9yYW5nZV9jYlwiLFxuICAgIFwiZXhfaGFuZGxlcl96ZXJvcGFkXCIsXG4gICAgXCJkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3NcIixcbiAgICBcImt2bV9zMzkwX3B2X2FsbG9jX3ZtXCIsXG4gICAgXCJrdm1fczM5MF9wdl9kZWFsbG9jX3ZtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gczM5MCBhcmNoaXRlY3R1cmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9mIHVuYWxpZ25lZCB3b3JkIGxvYWRzIHdpdGggemVybyBwYWRkaW5nIChgbG9hZF91bmFsaWduZWRfemVyb3BhZGAsIGBleF9oYW5kbGVyX3plcm9wYWRgKSwgYW5kIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBLVk0gUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIChgdXZfYWxsb2Nfc3Rvcl92YXJgLCBgdXZfZnJlZV9zdG9yX3ZhcmApLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZywgd2hpY2ggc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IHNhZmV0eSBhbmQgY29ycmVjdG5lc3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXZfYWxsb2Nfc3Rvcl92YXJcIixcbiAgICBcInV2X2ZyZWVfc3Rvcl92YXJcIixcbiAgICBcInV2X2FsbG9jX3JhbmdlX2NiXCIsXG4gICAgXCJ1dl9mcmVlX3JhbmdlX2NiXCIsXG4gICAgXCJleF9oYW5kbGVyX3plcm9wYWRcIixcbiAgICBcImRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc1wiLFxuICAgIFwia3ZtX3MzOTBfcHZfYWxsb2Nfdm1cIixcbiAgICBcImt2bV9zMzkwX3B2X2RlYWxsb2Nfdm1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBzMzkwIGFyY2hpdGVjdHVyZSBjb2RlLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgb2YgdW5hbGlnbmVkIHdvcmQgbG9hZHMgd2l0aCB6ZXJvIHBhZGRpbmcgKGBsb2FkX3VuYWxpZ25lZF96ZXJvcGFkYCwgYGV4X2hhbmRsZXJfemVyb3BhZGApLCBhbmQgbWVtb3J5IGFsbG9jYXRpb24gZm9yIEtWTSBQcm90ZWN0ZWQgVmlydHVhbGl6YXRpb24gKGB1dl9hbGxvY19zdG9yX3ZhcmAsIGB1dl9mcmVlX3N0b3JfdmFyYCkuIFRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLCB3aGljaCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0bmVzcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow65l68[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 18:32:16 +0000 UTC FinishedAt: 2026-07-16 18:48:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "25f744ffa0c8e799e06250ce2e618367b166b0d4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "25f744ffa0c8e799e06250ce2e618367b166b0d4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "820cd291-53df-4765-b17e-9645f26a7f4d" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "uv_alloc_stor_var", "uv_free_stor_var", "uv_alloc_range_cb", "uv_free_range_cb", "ex_handler_zeropad", "do_secure_storage_access", "kvm_s390_pv_alloc_vm", "kvm_s390_pv_dealloc_vm" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3V2X2FsbG9jX3N0b3JfdmFyJiMzNDssCiAgICAmIzM0O3V2X2ZyZWVfc3Rvcl92YXImIzM0OywKICAgICYjMzQ7dXZfYWxsb2NfcmFuZ2VfY2ImIzM0OywKICAgICYjMzQ7dXZfZnJlZV9yYW5nZV9jYiYjMzQ7LAogICAgJiMzNDtleF9oYW5kbGVyX3plcm9wYWQmIzM0OywKICAgICYjMzQ7ZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3B2X2FsbG9jX3ZtJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3B2X2RlYWxsb2Nfdm0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gczM5MCBhcmNoaXRlY3R1cmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9mIHVuYWxpZ25lZCB3b3JkIGxvYWRzIHdpdGggemVybyBwYWRkaW5nIChgbG9hZF91bmFsaWduZWRfemVyb3BhZGAsIGBleF9oYW5kbGVyX3plcm9wYWRgKSwgYW5kIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBLVk0gUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIChgdXZfYWxsb2Nfc3Rvcl92YXJgLCBgdXZfZnJlZV9zdG9yX3ZhcmApLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZywgd2hpY2ggc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IHNhZmV0eSBhbmQgY29ycmVjdG5lc3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YjY0NThmYjkzNjJhYmQ0N2M2M2QxNjg5MDVjNTAxMmM4NTg3NTg2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMTg6NDc6MTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL0tjb25maWcgYi9hcmNoL3MzOTAvS2NvbmZpZ1xuaW5kZXggODQ0MDRlNjc3OGQ1MDQuLmZlODFjNTM5ZWYyZmZjIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9LY29uZmlnXG5AQCAtMTYzLDYgJiM0MzsxNjMsNyBAQCBjb25maWcgUzM5MFxuIFx0c2VsZWN0IEFSQ0hfV0FOVFNfVEhQX1NXQVBcbiBcdHNlbGVjdCBCVUlMRFRJTUVfVEFCTEVfU09SVFxuIFx0c2VsZWN0IENMT05FX0JBQ0tXQVJEUzJcbiYjNDM7XHRzZWxlY3QgRENBQ0hFX1dPUkRfQUNDRVNTIGlmICFLTVNBTlxuIFx0c2VsZWN0IERZTkFNSUNfRlRSQUNFIGlmIEZVTkNUSU9OX1RSQUNFUlxuIFx0c2VsZWN0IEZVTkNUSU9OX0FMSUdOTUVOVF84QiBpZiBDQ19JU19HQ0NcbiBcdHNlbGVjdCBGVU5DVElPTl9BTElHTk1FTlRfMTZCIGlmICFDQ19JU19HQ0NcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXNtLWV4dGFibGUuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9hc20tZXh0YWJsZS5oXG5pbmRleCA5OTc0OGMyMGU3NjcxMy4uZDIzZWEwYzk0ZTRlYTYgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXNtLWV4dGFibGUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FzbS1leHRhYmxlLmhcbkBAIC0xMiw2ICYjNDM7MTIsNyBAQFxuICNkZWZpbmUgRVhfVFlQRV9VQV9GQVVMVFx0M1xuICNkZWZpbmUgRVhfVFlQRV9VQV9MT0FEX1JFR1x0NVxuICNkZWZpbmUgRVhfVFlQRV9VQV9MT0FEX1JFR1BBSVJcdDZcbiYjNDM7I2RlZmluZSBFWF9UWVBFX1pFUk9QQURcdFx0N1xuICNkZWZpbmUgRVhfVFlQRV9GUENcdFx0OFxuICNkZWZpbmUgRVhfVFlQRV9VQV9NVkNPU19UT1x0OVxuICNkZWZpbmUgRVhfVFlQRV9VQV9NVkNPU19GUk9NXHQxMFxuQEAgLTc5LDYgJiM0Mzs4MCw5IEBAXG4gI2RlZmluZSBFWF9UQUJMRV9VQV9MT0FEX1JFR1BBSVIoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZXJyLCBfcmVnemVybylcdFxcXG4gXHRfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9VQV9MT0FEX1JFR1BBSVIsIF9yZWdlcnIsIF9yZWd6ZXJvLCAwKVxuIFxuJiM0MzsjZGVmaW5lIEVYX1RBQkxFX1pFUk9QQUQoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZGF0YSwgX3JlZ2FkZHIpXHRcdFxcXG4mIzQzO1x0X19FWF9UQUJMRShfX2V4X3RhYmxlLCBfZmF1bHQsIF90YXJnZXQsIEVYX1RZUEVfWkVST1BBRCwgX3JlZ2RhdGEsIF9yZWdhZGRyLCAwKVxuJiM0MztcbiAjZGVmaW5lIEVYX1RBQkxFX0ZQQyhfZmF1bHQsIF90YXJnZXQpXHRcdFx0XHRcdFxcXG4gXHRfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9GUEMsIF9fc3RyaW5naWZ5KCUlcjApLCBfX3N0cmluZ2lmeSglJXIwKSwgMClcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdXYuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS91di5oXG5pbmRleCBkOTE5ZTY5NjYyZjU4NC4uMTUzZmVkNjNhZGRhM2MgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdXYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3V2LmhcbkBAIC02MzUsNiAmIzQzOzYzNSw4IEBAIGludCBzMzkwX3dpZ2dsZV9zcGxpdF9mb2xpbyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGZvbGlvICpmb2xpbyk7XG4gaW50IF9fbWFrZV9mb2xpb19zZWN1cmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHV2X2NiX2hlYWRlciAqdXZjYik7XG4gaW50IHV2X2NvbnZlcnRfZnJvbV9zZWN1cmUodW5zaWduZWQgbG9uZyBwYWRkcik7XG4gaW50IHV2X2NvbnZlcnRfZnJvbV9zZWN1cmVfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbyk7XG4mIzQzO3ZvaWQgKnV2X2FsbG9jX3N0b3JfdmFyKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG4mIzQzO3ZvaWQgdXZfZnJlZV9zdG9yX3Zhcih2b2lkICpzdG9yX3Zhcik7XG4gXG4gdm9pZCBzZXR1cF91dih2b2lkKTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS93b3JkLWF0LWEtdGltZS5oXG5pbmRleCBlOTI4NzAzNjM5MmQwOC4uZWFhMTlkZWU3Njk5NDEgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3dvcmQtYXQtYS10aW1lLmhcbkBAIC00LDYgJiM0Mzs0LDcgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRvcHMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dvcmRwYXJ0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYXNtL2FzbS1leHRhYmxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vYml0c3BlcmxvbmcuaFx1MDAzZVxuIFxuIHN0cnVjdCB3b3JkX2F0X2FfdGltZSB7XG5AQCAtNDAsNCAmIzQzOzQxLDI1IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB6ZXJvX2J5dGVtYXNrKHVuc2lnbmVkIGxvbmcgZGF0YSlcbiBcdHJldHVybiB+MVVMIFx1MDAzY1x1MDAzYyBkYXRhO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogTG9hZCBhbiB1bmFsaWduZWQgd29yZCBmcm9tIGtlcm5lbCBzcGFjZS5cbiYjNDM7ICpcbiYjNDM7ICogSW4gdGhlICh2ZXJ5IHVubGlrZWx5KSBjYXNlIG9mIHRoZSB3b3JkIGJlaW5nIGEgcGFnZS1jcm9zc2VyXG4mIzQzOyAqIGFuZCB0aGUgbmV4dCBwYWdlIG5vdCBiZWluZyBtYXBwZWQsIHRha2UgdGhlIGV4Y2VwdGlvbiBhbmRcbiYjNDM7ICogcmV0dXJuIHplcm9lcyBpbiB0aGUgbm9uLWV4aXN0aW5nIHBhcnQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbG9hZF91bmFsaWduZWRfemVyb3BhZChjb25zdCB2b2lkICphZGRyKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBkYXRhO1xuJiM0MztcbiYjNDM7XHRhc21faW5saW5lIHZvbGF0aWxlKFxuJiM0MztcdFx0XCYjMzQ7MDpcdGxnXHQlW2RhdGFdLDAoJVthZGRyXSlcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0OzE6XHRub3ByXHQlJXI3XFxuXCYjMzQ7XG4mIzQzO1x0XHRFWF9UQUJMRV9aRVJPUEFEKDBiLCAxYiwgJVtkYXRhXSwgJVthZGRyXSlcbiYjNDM7XHRcdEVYX1RBQkxFX1pFUk9QQUQoMWIsIDFiLCAlW2RhdGFdLCAlW2FkZHJdKVxuJiM0MztcdFx0OiBbZGF0YV0gXCYjMzQ7PWRcJiMzNDsgKGRhdGEpXG4mIzQzO1x0XHQ6IFthZGRyXSBcJiMzNDthXCYjMzQ7IChhZGRyKSwgXCYjMzQ7bVwmIzM0OyAoKih1bnNpZ25lZCBsb25nICopYWRkcikpO1xuJiM0MztcdHJldHVybiBkYXRhO1xuJiM0Mzt9XG4mIzQzO1xuICNlbmRpZiAvKiBfQVNNX1dPUkRfQVRfQV9USU1FX0ggKi9cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL3V2LmMgYi9hcmNoL3MzOTAva2VybmVsL3V2LmNcbmluZGV4IGEyODRmOThkOTcxNjgwLi45OGE3Zjk4OGZjNjkxZCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rZXJuZWwvdXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2tlcm5lbC91di5jXG5AQCAtMTYsNiAmIzQzOzE2LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zd2FwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wYWdld2Fsay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYmFja2luZy1kZXYuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vZmFjaWxpdHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9zZWN0aW9ucy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3V2LmhcdTAwM2VcbkBAIC0yMDksNiAmIzQzOzIxMCw2NCBAQCBpbnQgdXZfY29udmVydF9mcm9tX3NlY3VyZV9wdGUocHRlX3QgcHRlKVxuIFx0cmV0dXJuIHV2X2NvbnZlcnRfZnJvbV9zZWN1cmVfZm9saW8ocGZuX2ZvbGlvKHB0ZV9wZm4ocHRlKSkpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCB1dl9mcmVlX3JhbmdlX2NiKHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmRhdGEpXG4mIzQzO3tcbiYjNDM7XHRwdGVfdCBwdGUgPSBwdGVwX2dldChwdGVwKTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFwdGVfcHJlc2VudChwdGUpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0X19mcmVlX3BhZ2UocHRlX3BhZ2UocHRlKSk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgdXZfZnJlZV9zdG9yX3Zhcih2b2lkICpzdG9yX3ZhcilcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgYWRkciwgc2l6ZTtcbiYjNDM7XHRzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhO1xuJiM0MztcbiYjNDM7XHRpZiAoIXN0b3JfdmFyKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdGFyZWEgPSBmaW5kX3ZtX2FyZWEoc3Rvcl92YXIpO1xuJiM0MztcdGlmIChXQVJOX09OX09OQ0UoIWFyZWEgfHwgIShhcmVhLVx1MDAzZWZsYWdzIFx1MDAyNiBWTV9TUEFSU0UpKSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHRzaXplID0gZ2V0X3ZtX2FyZWFfc2l6ZShhcmVhKTtcbiYjNDM7XHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYXJlYS1cdTAwM2VhZGRyO1xuJiM0MztcdGFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2UoXHUwMDI2aW5pdF9tbSwgYWRkciwgc2l6ZSwgdXZfZnJlZV9yYW5nZV9jYiwgTlVMTCk7XG4mIzQzO1x0ZnJlZV92bV9hcmVhKGFyZWEpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVModXZfZnJlZV9zdG9yX3ZhciwgXCYjMzQ7a3ZtXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgdXZfYWxsb2NfcmFuZ2VfY2IocHRlX3QgKnB0ZXAsIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwYWdlICpwYWdlO1xuJiM0MztcdHB0ZV90IHB0ZTtcbiYjNDM7XG4mIzQzO1x0cGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyk7XG4mIzQzO1x0aWYgKCFwYWdlKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0cHRlID0gX19wdGUocGFnZV90b19waHlzKHBhZ2UpIHwgcGdwcm90X3ZhbChQQUdFX0tFUk5FTCkpO1xuJiM0MztcdHNldF9wdGUocHRlcCwgcHRlKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dm9pZCAqdXZfYWxsb2Nfc3Rvcl92YXIodW5zaWduZWQgbG9uZyBzaXplKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHZtX3N0cnVjdCAqYXJlYTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGFkZHI7XG4mIzQzO1xuJiM0MztcdGFyZWEgPSBnZXRfdm1fYXJlYShzaXplLCBWTV9TUEFSU0UpO1xuJiM0MztcdGlmICghYXJlYSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcdGFkZHIgPSAodW5zaWduZWQgbG9uZylhcmVhLVx1MDAzZWFkZHI7XG4mIzQzO1x0aWYgKGFwcGx5X3RvX3BhZ2VfcmFuZ2UoXHUwMDI2aW5pdF9tbSwgYWRkciwgc2l6ZSwgdXZfYWxsb2NfcmFuZ2VfY2IsIE5VTEwpKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0cmV0dXJuIGFyZWEtXHUwMDNlYWRkcjtcbiYjNDM7b3V0OlxuJiM0MztcdHV2X2ZyZWVfc3Rvcl92YXIoYXJlYS1cdTAwM2VhZGRyKTtcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKHV2X2FsbG9jX3N0b3JfdmFyLCBcJiMzNDtrdm1cJiMzNDspO1xuJiM0MztcbiAvKlxuICAqIENhbGN1bGF0ZSB0aGUgZXhwZWN0ZWQgcmVmX2NvdW50IGZvciBhIGZvbGlvIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgbm9cbiAgKiBmdXJ0aGVyIHBpbnMuIFRoaXMgd2FzIGNyaWJiZWQgZnJvbSBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBvdGhlciBwbGFjZXMgaW5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3B2LmMgYi9hcmNoL3MzOTAva3ZtL3B2LmNcbmluZGV4IDFiZWFjYzg0MWNhODUwLi5kYzVhYzI5YjRjMzExOCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vcHYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9wdi5jXG5AQCAtMzM3LDcgJiM0MzszMzcsNyBAQCBpbnQga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKVxuIC8qIG9ubHkgZnJlZSByZXNvdXJjZXMgd2hlbiB0aGUgZGVzdHJveSB3YXMgc3VjY2Vzc2Z1bCAqL1xuIHN0YXRpYyB2b2lkIGt2bV9zMzkwX3B2X2RlYWxsb2Nfdm0oc3RydWN0IGt2bSAqa3ZtKVxuIHtcbi1cdHZmcmVlKGt2bS1cdTAwM2VhcmNoLnB2LnN0b3JfdmFyKTtcbiYjNDM7XHR1dl9mcmVlX3N0b3JfdmFyKGt2bS1cdTAwM2VhcmNoLnB2LnN0b3JfdmFyKTtcbiBcdGZyZWVfcGFnZXMoa3ZtLVx1MDAzZWFyY2gucHYuc3Rvcl9iYXNlLFxuIFx0XHQgICBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9iYXNlX3N0b3JfbGVuKSk7XG4gXHRrdm1fczM5MF9jbGVhcl9wdl9zdGF0ZShrdm0pO1xuQEAgLTM2OSw3ICYjNDM7MzY5LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wdl9hbGxvY192bShzdHJ1Y3Qga3ZtICprdm0pXG4gXHQvKiBBbGxvY2F0ZSB2YXJpYWJsZSBzdG9yYWdlICovXG4gXHR2bGVuID0gQUxJR04odmlydCAqICgobnBhZ2VzICogUEFHRV9TSVpFKSAvIEhQQUdFX1NJWkUpLCBQQUdFX1NJWkUpO1xuIFx0dmxlbiAmIzQzOz0gdXZfaW5mby5ndWVzdF92aXJ0X2Jhc2Vfc3Rvcl9sZW47XG4tXHRrdm0tXHUwMDNlYXJjaC5wdi5zdG9yX3ZhciA9IHZ6YWxsb2Modmxlbik7XG4mIzQzO1x0a3ZtLVx1MDAzZWFyY2gucHYuc3Rvcl92YXIgPSB1dl9hbGxvY19zdG9yX3Zhcih2bGVuKTtcbiBcdGlmICgha3ZtLVx1MDAzZWFyY2gucHYuc3Rvcl92YXIpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcdHJldHVybiAwO1xuQEAgLTQxNCw3ICYjNDM7NDE0LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wdl9kaXNwb3NlX29uZV9sZWZ0b3ZlcihzdHJ1Y3Qga3ZtICprdm0sXG4gXHQgKi9cbiBcdGZyZWVfcGFnZXMobGVmdG92ZXItXHUwMDNlc3Rvcl9iYXNlLCBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9iYXNlX3N0b3JfbGVuKSk7XG4gXHRmcmVlX3BhZ2VzKGxlZnRvdmVyLVx1MDAzZW9sZF9nbWFwX3RhYmxlLCBDUlNUX0FMTE9DX09SREVSKTtcbi1cdHZmcmVlKGxlZnRvdmVyLVx1MDAzZXN0b3JfdmFyKTtcbiYjNDM7XHR1dl9mcmVlX3N0b3JfdmFyKGxlZnRvdmVyLVx1MDAzZXN0b3JfdmFyKTtcbiBkb25lX2Zhc3Q6XG4gXHRhdG9taWNfZGVjKFx1MDAyNmt2bS1cdTAwM2VtbS1cdTAwM2Vjb250ZXh0LnByb3RlY3RlZF9jb3VudCk7XG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jIGIvYXJjaC9zMzkwL21tL2V4dGFibGUuY1xuaW5kZXggMDYzYjQzNDY3NDJkOTYuLjc0OThlODU4YzQwMTk1IDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL21tL2V4dGFibGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL21tL2V4dGFibGUuY1xuQEAgLTUwLDYgJiM0Mzs1MCwyMiBAQCBzdGF0aWMgYm9vbCBleF9oYW5kbGVyX3VhX2xvYWRfcmVnKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBleF9oYW5kbGVyX3plcm9wYWQoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgaW50IHJlZ19hZGRyID0gRklFTERfR0VUKEVYX0RBVEFfUkVHX0FERFIsIGV4LVx1MDAzZWRhdGEpO1xuJiM0MztcdHVuc2lnbmVkIGludCByZWdfZGF0YSA9IEZJRUxEX0dFVChFWF9EQVRBX1JFR19FUlIsIGV4LVx1MDAzZWRhdGEpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgZGF0YSwgYWRkciwgb2Zmc2V0O1xuJiM0MztcbiYjNDM7XHRhZGRyID0gcmVncy1cdTAwM2VncHJzW3JlZ19hZGRyXTtcbiYjNDM7XHRvZmZzZXQgPSBhZGRyIFx1MDAyNiAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSk7XG4mIzQzO1x0YWRkciBcdTAwMjY9IH4oc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSk7XG4mIzQzO1x0ZGF0YSA9ICoodW5zaWduZWQgbG9uZyAqKWFkZHI7XG4mIzQzO1x0ZGF0YSBcdTAwM2NcdTAwM2M9IEJJVFNfUEVSX0JZVEUgKiBvZmZzZXQ7XG4mIzQzO1x0cmVncy1cdTAwM2VncHJzW3JlZ19kYXRhXSA9IGRhdGE7XG4mIzQzO1x0cmVncy1cdTAwM2Vwc3cuYWRkciA9IGV4dGFibGVfZml4dXAoZXgpO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBib29sIGV4X2hhbmRsZXJfZnBjKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncylcbiB7XG4gXHRmcHVfc2ZwYygwKTtcbkBAIC0xMTgsNiAmIzQzOzEzNCw4IEBAIGJvb2wgZml4dXBfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuIFx0XHRyZXR1cm4gZXhfaGFuZGxlcl91YV9sb2FkX3JlZyhleCwgZmFsc2UsIHJlZ3MpO1xuIFx0Y2FzZSBFWF9UWVBFX1VBX0xPQURfUkVHUEFJUjpcbiBcdFx0cmV0dXJuIGV4X2hhbmRsZXJfdWFfbG9hZF9yZWcoZXgsIHRydWUsIHJlZ3MpO1xuJiM0MztcdGNhc2UgRVhfVFlQRV9aRVJPUEFEOlxuJiM0MztcdFx0cmV0dXJuIGV4X2hhbmRsZXJfemVyb3BhZChleCwgcmVncyk7XG4gXHRjYXNlIEVYX1RZUEVfRlBDOlxuIFx0XHRyZXR1cm4gZXhfaGFuZGxlcl9mcGMoZXgsIHJlZ3MpO1xuIFx0Y2FzZSBFWF9UWVBFX1VBX01WQ09TX1RPOlxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9tbS9mYXVsdC5jIGIvYXJjaC9zMzkwL21tL2ZhdWx0LmNcbmluZGV4IDAyOGFlYjljNDhkNmZmLi5kYjc3YzhjMDAyM2VlNiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9tbS9mYXVsdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvbW0vZmF1bHQuY1xuQEAgLTQzOCwxMyAmIzQzOzQzOCw5IEBAIHZvaWQgZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuIFx0XHRwYW5pYyhcJiMzNDtVbmV4cGVjdGVkIFBHTSAweDNkIHdpdGggVEVJRCBiaXQgNjE9MFwmIzM0Oyk7XG4gXHR9XG4gXHRpZiAoaXNfa2VybmVsX2ZhdWx0KHJlZ3MpKSB7XG4tXHRcdGZvbGlvID0gdmlydF90b19mb2xpbygodm9pZCAqKWFkZHIpO1xuLVx0XHRpZiAodW5saWtlbHkoIWZvbGlvX3RyeV9nZXQoZm9saW8pKSlcbi1cdFx0XHRyZXR1cm47XG4tXHRcdHJjID0gdXZfY29udmVydF9mcm9tX3NlY3VyZShmb2xpb190b19waHlzKGZvbGlvKSk7XG4tXHRcdGlmICghcmMpXG4tXHRcdFx0Y2xlYXJfYml0KFBHX2FyY2hfMSwgXHUwMDI2Zm9saW8tXHUwMDNlZmxhZ3MuZik7XG4tXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4mIzQzO1x0XHRpZiAoaXNfdm1hbGxvY19hZGRyKCh2b2lkICopYWRkcikpXG4mIzQzO1x0XHRcdHJldHVybiBoYW5kbGVfZmF1bHRfZXJyb3Jfbm9sb2NrKHJlZ3MsIDApO1xuJiM0MztcdFx0cmMgPSB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlKF9fcGEoYWRkcikpO1xuIFx0XHQvKlxuIFx0XHQgKiBUaGVyZSBhcmUgc29tZSB2YWxpZCBmaXh1cCB0eXBlcyBmb3Iga2VybmVsXG4gXHRcdCAqIGFjY2Vzc2VzIHRvIGRvbmF0ZWQgc2VjdXJlIG1lbW9yeS4gemVyb3BhZCBpcyBvbmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxODo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1dl9hbGxvY19zdG9yX3ZhciYjMzQ7LAogICAgJiMzNDt1dl9mcmVlX3N0b3JfdmFyJiMzNDssCiAgICAmIzM0O3V2X2FsbG9jX3JhbmdlX2NiJiMzNDssCiAgICAmIzM0O3V2X2ZyZWVfcmFuZ2VfY2ImIzM0OywKICAgICYjMzQ7ZXhfaGFuZGxlcl96ZXJvcGFkJiMzNDssCiAgICAmIzM0O2RvX3NlY3VyZV9zdG9yYWdlX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wdl9hbGxvY192bSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wdl9kZWFsbG9jX3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHMzOTAgYXJjaGl0ZWN0dXJlIGNvZGUsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvZiB1bmFsaWduZWQgd29yZCBsb2FkcyB3aXRoIHplcm8gcGFkZGluZyAoYGxvYWRfdW5hbGlnbmVkX3plcm9wYWRgLCBgZXhfaGFuZGxlcl96ZXJvcGFkYCksIGFuZCBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgS1ZNIFByb3RlY3RlZCBWaXJ0dWFsaXphdGlvbiAoYHV2X2FsbG9jX3N0b3JfdmFyYCwgYHV2X2ZyZWVfc3Rvcl92YXJgKS4gVGhlc2UgY2hhbmdlcyBtb2RpZnkgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBleGNlcHRpb24gaGFuZGxpbmcsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG1lbW9yeSBzYWZldHkgYW5kIGNvcnJlY3RuZXNzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YjY0NThmYjkzNjJhYmQ0N2M2M2QxNjg5MDVjNTAxMmM4NTg3NTg2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMTYgMTg6NDc6MTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvS2NvbmZpZyBiL2FyY2gvczM5MC9LY29uZmlnCmluZGV4IDg0NDA0ZTY3NzhkNTA0Li5mZTgxYzUzOWVmMmZmYyAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL0tjb25maWcKQEAgLTE2Myw2ICYjNDM7MTYzLDcgQEAgY29uZmlnIFMzOTAKIAlzZWxlY3QgQVJDSF9XQU5UU19USFBfU1dBUAogCXNlbGVjdCBCVUlMRFRJTUVfVEFCTEVfU09SVAogCXNlbGVjdCBDTE9ORV9CQUNLV0FSRFMyCiYjNDM7CXNlbGVjdCBEQ0FDSEVfV09SRF9BQ0NFU1MgaWYgIUtNU0FOCiAJc2VsZWN0IERZTkFNSUNfRlRSQUNFIGlmIEZVTkNUSU9OX1RSQUNFUgogCXNlbGVjdCBGVU5DVElPTl9BTElHTk1FTlRfOEIgaWYgQ0NfSVNfR0NDCiAJc2VsZWN0IEZVTkNUSU9OX0FMSUdOTUVOVF8xNkIgaWYgIUNDX0lTX0dDQwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FzbS1leHRhYmxlLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXNtLWV4dGFibGUuaAppbmRleCA5OTc0OGMyMGU3NjcxMy4uZDIzZWEwYzk0ZTRlYTYgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9hc20tZXh0YWJsZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9hc20tZXh0YWJsZS5oCkBAIC0xMiw2ICYjNDM7MTIsNyBAQAogI2RlZmluZSBFWF9UWVBFX1VBX0ZBVUxUCTMKICNkZWZpbmUgRVhfVFlQRV9VQV9MT0FEX1JFRwk1CiAjZGVmaW5lIEVYX1RZUEVfVUFfTE9BRF9SRUdQQUlSCTYKJiM0MzsjZGVmaW5lIEVYX1RZUEVfWkVST1BBRAkJNwogI2RlZmluZSBFWF9UWVBFX0ZQQwkJOAogI2RlZmluZSBFWF9UWVBFX1VBX01WQ09TX1RPCTkKICNkZWZpbmUgRVhfVFlQRV9VQV9NVkNPU19GUk9NCTEwCkBAIC03OSw2ICYjNDM7ODAsOSBAQAogI2RlZmluZSBFWF9UQUJMRV9VQV9MT0FEX1JFR1BBSVIoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZXJyLCBfcmVnemVybykJXAogCV9fRVhfVEFCTEUoX19leF90YWJsZSwgX2ZhdWx0LCBfdGFyZ2V0LCBFWF9UWVBFX1VBX0xPQURfUkVHUEFJUiwgX3JlZ2VyciwgX3JlZ3plcm8sIDApCiAKJiM0MzsjZGVmaW5lIEVYX1RBQkxFX1pFUk9QQUQoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZGF0YSwgX3JlZ2FkZHIpCQlcCiYjNDM7CV9fRVhfVEFCTEUoX19leF90YWJsZSwgX2ZhdWx0LCBfdGFyZ2V0LCBFWF9UWVBFX1pFUk9QQUQsIF9yZWdkYXRhLCBfcmVnYWRkciwgMCkKJiM0MzsKICNkZWZpbmUgRVhfVEFCTEVfRlBDKF9mYXVsdCwgX3RhcmdldCkJCQkJCVwKIAlfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9GUEMsIF9fc3RyaW5naWZ5KCUlcjApLCBfX3N0cmluZ2lmeSglJXIwKSwgMCkKIApkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3V2LmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdXYuaAppbmRleCBkOTE5ZTY5NjYyZjU4NC4uMTUzZmVkNjNhZGRhM2MgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS91di5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS91di5oCkBAIC02MzUsNiAmIzQzOzYzNSw4IEBAIGludCBzMzkwX3dpZ2dsZV9zcGxpdF9mb2xpbyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGZvbGlvICpmb2xpbyk7CiBpbnQgX19tYWtlX2ZvbGlvX3NlY3VyZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3QgdXZfY2JfaGVhZGVyICp1dmNiKTsKIGludCB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlKHVuc2lnbmVkIGxvbmcgcGFkZHIpOwogaW50IHV2X2NvbnZlcnRfZnJvbV9zZWN1cmVfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbyk7CiYjNDM7dm9pZCAqdXZfYWxsb2Nfc3Rvcl92YXIodW5zaWduZWQgbG9uZyBzaXplKTsKJiM0Mzt2b2lkIHV2X2ZyZWVfc3Rvcl92YXIodm9pZCAqc3Rvcl92YXIpOwogCiB2b2lkIHNldHVwX3V2KHZvaWQpOwogCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS93b3JkLWF0LWEtdGltZS5oCmluZGV4IGU5Mjg3MDM2MzkyZDA4Li5lYWExOWRlZTc2OTk0MSAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3dvcmQtYXQtYS10aW1lLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3dvcmQtYXQtYS10aW1lLmgKQEAgLTQsNiAmIzQzOzQsNyBAQAogCiAjaW5jbHVkZSAmbHQ7bGludXgvYml0b3BzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvd29yZHBhcnQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YXNtL2FzbS1leHRhYmxlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2JpdHNwZXJsb25nLmgmZ3Q7CiAKIHN0cnVjdCB3b3JkX2F0X2FfdGltZSB7CkBAIC00MCw0ICYjNDM7NDEsMjUgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHplcm9fYnl0ZW1hc2sodW5zaWduZWQgbG9uZyBkYXRhKQogCXJldHVybiB+MVVMICZsdDsmbHQ7IGRhdGE7CiB9CiAKJiM0MzsvKgomIzQzOyAqIExvYWQgYW4gdW5hbGlnbmVkIHdvcmQgZnJvbSBrZXJuZWwgc3BhY2UuCiYjNDM7ICoKJiM0MzsgKiBJbiB0aGUgKHZlcnkgdW5saWtlbHkpIGNhc2Ugb2YgdGhlIHdvcmQgYmVpbmcgYSBwYWdlLWNyb3NzZXIKJiM0MzsgKiBhbmQgdGhlIG5leHQgcGFnZSBub3QgYmVpbmcgbWFwcGVkLCB0YWtlIHRoZSBleGNlcHRpb24gYW5kCiYjNDM7ICogcmV0dXJuIHplcm9lcyBpbiB0aGUgbm9uLWV4aXN0aW5nIHBhcnQuCiYjNDM7ICovCiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGxvYWRfdW5hbGlnbmVkX3plcm9wYWQoY29uc3Qgdm9pZCAqYWRkcikKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZGF0YTsKJiM0MzsKJiM0MzsJYXNtX2lubGluZSB2b2xhdGlsZSgKJiM0MzsJCSYjMzQ7MDoJbGcJJVtkYXRhXSwwKCVbYWRkcl0pXG4mIzM0OwomIzQzOwkJJiMzNDsxOglub3ByCSUlcjdcbiYjMzQ7CiYjNDM7CQlFWF9UQUJMRV9aRVJPUEFEKDBiLCAxYiwgJVtkYXRhXSwgJVthZGRyXSkKJiM0MzsJCUVYX1RBQkxFX1pFUk9QQUQoMWIsIDFiLCAlW2RhdGFdLCAlW2FkZHJdKQomIzQzOwkJOiBbZGF0YV0gJiMzNDs9ZCYjMzQ7IChkYXRhKQomIzQzOwkJOiBbYWRkcl0gJiMzNDthJiMzNDsgKGFkZHIpLCAmIzM0O20mIzM0OyAoKih1bnNpZ25lZCBsb25nICopYWRkcikpOwomIzQzOwlyZXR1cm4gZGF0YTsKJiM0Mzt9CiYjNDM7CiAjZW5kaWYgLyogX0FTTV9XT1JEX0FUX0FfVElNRV9IICovCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL3V2LmMgYi9hcmNoL3MzOTAva2VybmVsL3V2LmMKaW5kZXggYTI4NGY5OGQ5NzE2ODAuLjk4YTdmOTg4ZmM2OTFkIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva2VybmVsL3V2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2tlcm5lbC91di5jCkBAIC0xNiw2ICYjNDM7MTYsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3N3YXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wYWdld2Fsay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2JhY2tpbmctZGV2LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3ZtYWxsb2MuaCZndDsKICNpbmNsdWRlICZsdDthc20vZmFjaWxpdHkuaCZndDsKICNpbmNsdWRlICZsdDthc20vc2VjdGlvbnMuaCZndDsKICNpbmNsdWRlICZsdDthc20vdXYuaCZndDsKQEAgLTIwOSw2ICYjNDM7MjEwLDY0IEBAIGludCB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlX3B0ZShwdGVfdCBwdGUpCiAJcmV0dXJuIHV2X2NvbnZlcnRfZnJvbV9zZWN1cmVfZm9saW8ocGZuX2ZvbGlvKHB0ZV9wZm4ocHRlKSkpOwogfQogCiYjNDM7c3RhdGljIGludCB1dl9mcmVlX3JhbmdlX2NiKHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlwdGVfdCBwdGUgPSBwdGVwX2dldChwdGVwKTsKJiM0MzsKJiM0MzsJaWYgKCFwdGVfcHJlc2VudChwdGUpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CV9fZnJlZV9wYWdlKHB0ZV9wYWdlKHB0ZSkpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCB1dl9mcmVlX3N0b3JfdmFyKHZvaWQgKnN0b3JfdmFyKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgbG9uZyBhZGRyLCBzaXplOwomIzQzOwlzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhOwomIzQzOwomIzQzOwlpZiAoIXN0b3JfdmFyKQomIzQzOwkJcmV0dXJuOwomIzQzOwlhcmVhID0gZmluZF92bV9hcmVhKHN0b3JfdmFyKTsKJiM0MzsJaWYgKFdBUk5fT05fT05DRSghYXJlYSB8fCAhKGFyZWEtJmd0O2ZsYWdzICZhbXA7IFZNX1NQQVJTRSkpKQomIzQzOwkJcmV0dXJuOwomIzQzOwlzaXplID0gZ2V0X3ZtX2FyZWFfc2l6ZShhcmVhKTsKJiM0MzsJYWRkciA9ICh1bnNpZ25lZCBsb25nKWFyZWEtJmd0O2FkZHI7CiYjNDM7CWFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2UoJmFtcDtpbml0X21tLCBhZGRyLCBzaXplLCB1dl9mcmVlX3JhbmdlX2NiLCBOVUxMKTsKJiM0MzsJZnJlZV92bV9hcmVhKGFyZWEpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKHV2X2ZyZWVfc3Rvcl92YXIsICYjMzQ7a3ZtJiMzNDspOwomIzQzOwomIzQzO3N0YXRpYyBpbnQgdXZfYWxsb2NfcmFuZ2VfY2IocHRlX3QgKnB0ZXAsIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqZGF0YSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwYWdlICpwYWdlOwomIzQzOwlwdGVfdCBwdGU7CiYjNDM7CiYjNDM7CXBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCB8IF9fR0ZQX1pFUk8pOwomIzQzOwlpZiAoIXBhZ2UpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJcHRlID0gX19wdGUocGFnZV90b19waHlzKHBhZ2UpIHwgcGdwcm90X3ZhbChQQUdFX0tFUk5FTCkpOwomIzQzOwlzZXRfcHRlKHB0ZXAsIHB0ZSk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkICp1dl9hbGxvY19zdG9yX3Zhcih1bnNpZ25lZCBsb25nIHNpemUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhOwomIzQzOwl1bnNpZ25lZCBsb25nIGFkZHI7CiYjNDM7CiYjNDM7CWFyZWEgPSBnZXRfdm1fYXJlYShzaXplLCBWTV9TUEFSU0UpOwomIzQzOwlpZiAoIWFyZWEpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsJYWRkciA9ICh1bnNpZ25lZCBsb25nKWFyZWEtJmd0O2FkZHI7CiYjNDM7CWlmIChhcHBseV90b19wYWdlX3JhbmdlKCZhbXA7aW5pdF9tbSwgYWRkciwgc2l6ZSwgdXZfYWxsb2NfcmFuZ2VfY2IsIE5VTEwpKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CXJldHVybiBhcmVhLSZndDthZGRyOwomIzQzO291dDoKJiM0MzsJdXZfZnJlZV9zdG9yX3ZhcihhcmVhLSZndDthZGRyKTsKJiM0MzsJcmV0dXJuIE5VTEw7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVModXZfYWxsb2Nfc3Rvcl92YXIsICYjMzQ7a3ZtJiMzNDspOwomIzQzOwogLyoKICAqIENhbGN1bGF0ZSB0aGUgZXhwZWN0ZWQgcmVmX2NvdW50IGZvciBhIGZvbGlvIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgbm8KICAqIGZ1cnRoZXIgcGlucy4gVGhpcyB3YXMgY3JpYmJlZCBmcm9tIHNpbWlsYXIgZnVuY3Rpb25zIGluIG90aGVyIHBsYWNlcyBpbgpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9wdi5jIGIvYXJjaC9zMzkwL2t2bS9wdi5jCmluZGV4IDFiZWFjYzg0MWNhODUwLi5kYzVhYzI5YjRjMzExOCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9wdi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vcHYuYwpAQCAtMzM3LDcgJiM0MzszMzcsNyBAQCBpbnQga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKQogLyogb25seSBmcmVlIHJlc291cmNlcyB3aGVuIHRoZSBkZXN0cm95IHdhcyBzdWNjZXNzZnVsICovCiBzdGF0aWMgdm9pZCBrdm1fczM5MF9wdl9kZWFsbG9jX3ZtKHN0cnVjdCBrdm0gKmt2bSkKIHsKLQl2ZnJlZShrdm0tJmd0O2FyY2gucHYuc3Rvcl92YXIpOwomIzQzOwl1dl9mcmVlX3N0b3JfdmFyKGt2bS0mZ3Q7YXJjaC5wdi5zdG9yX3Zhcik7CiAJZnJlZV9wYWdlcyhrdm0tJmd0O2FyY2gucHYuc3Rvcl9iYXNlLAogCQkgICBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9iYXNlX3N0b3JfbGVuKSk7CiAJa3ZtX3MzOTBfY2xlYXJfcHZfc3RhdGUoa3ZtKTsKQEAgLTM2OSw3ICYjNDM7MzY5LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wdl9hbGxvY192bShzdHJ1Y3Qga3ZtICprdm0pCiAJLyogQWxsb2NhdGUgdmFyaWFibGUgc3RvcmFnZSAqLwogCXZsZW4gPSBBTElHTih2aXJ0ICogKChucGFnZXMgKiBQQUdFX1NJWkUpIC8gSFBBR0VfU0laRSksIFBBR0VfU0laRSk7CiAJdmxlbiAmIzQzOz0gdXZfaW5mby5ndWVzdF92aXJ0X2Jhc2Vfc3Rvcl9sZW47Ci0Ja3ZtLSZndDthcmNoLnB2LnN0b3JfdmFyID0gdnphbGxvYyh2bGVuKTsKJiM0MzsJa3ZtLSZndDthcmNoLnB2LnN0b3JfdmFyID0gdXZfYWxsb2Nfc3Rvcl92YXIodmxlbik7CiAJaWYgKCFrdm0tJmd0O2FyY2gucHYuc3Rvcl92YXIpCiAJCWdvdG8gb3V0X2VycjsKIAlyZXR1cm4gMDsKQEAgLTQxNCw3ICYjNDM7NDE0LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wdl9kaXNwb3NlX29uZV9sZWZ0b3ZlcihzdHJ1Y3Qga3ZtICprdm0sCiAJICovCiAJZnJlZV9wYWdlcyhsZWZ0b3Zlci0mZ3Q7c3Rvcl9iYXNlLCBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9iYXNlX3N0b3JfbGVuKSk7CiAJZnJlZV9wYWdlcyhsZWZ0b3Zlci0mZ3Q7b2xkX2dtYXBfdGFibGUsIENSU1RfQUxMT0NfT1JERVIpOwotCXZmcmVlKGxlZnRvdmVyLSZndDtzdG9yX3Zhcik7CiYjNDM7CXV2X2ZyZWVfc3Rvcl92YXIobGVmdG92ZXItJmd0O3N0b3JfdmFyKTsKIGRvbmVfZmFzdDoKIAlhdG9taWNfZGVjKCZhbXA7a3ZtLSZndDttbS0mZ3Q7Y29udGV4dC5wcm90ZWN0ZWRfY291bnQpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL21tL2V4dGFibGUuYyBiL2FyY2gvczM5MC9tbS9leHRhYmxlLmMKaW5kZXggMDYzYjQzNDY3NDJkOTYuLjc0OThlODU4YzQwMTk1IDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9tbS9leHRhYmxlLmMKQEAgLTUwLDYgJiM0Mzs1MCwyMiBAQCBzdGF0aWMgYm9vbCBleF9oYW5kbGVyX3VhX2xvYWRfcmVnKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LAogCXJldHVybiB0cnVlOwogfQogCiYjNDM7c3RhdGljIGJvb2wgZXhfaGFuZGxlcl96ZXJvcGFkKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCByZWdfYWRkciA9IEZJRUxEX0dFVChFWF9EQVRBX1JFR19BRERSLCBleC0mZ3Q7ZGF0YSk7CiYjNDM7CXVuc2lnbmVkIGludCByZWdfZGF0YSA9IEZJRUxEX0dFVChFWF9EQVRBX1JFR19FUlIsIGV4LSZndDtkYXRhKTsKJiM0MzsJdW5zaWduZWQgbG9uZyBkYXRhLCBhZGRyLCBvZmZzZXQ7CiYjNDM7CiYjNDM7CWFkZHIgPSByZWdzLSZndDtncHJzW3JlZ19hZGRyXTsKJiM0MzsJb2Zmc2V0ID0gYWRkciAmYW1wOyAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSk7CiYjNDM7CWFkZHIgJmFtcDs9IH4oc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSk7CiYjNDM7CWRhdGEgPSAqKHVuc2lnbmVkIGxvbmcgKilhZGRyOwomIzQzOwlkYXRhICZsdDsmbHQ7PSBCSVRTX1BFUl9CWVRFICogb2Zmc2V0OwomIzQzOwlyZWdzLSZndDtncHJzW3JlZ19kYXRhXSA9IGRhdGE7CiYjNDM7CXJlZ3MtJmd0O3Bzdy5hZGRyID0gZXh0YWJsZV9maXh1cChleCk7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKIHN0YXRpYyBib29sIGV4X2hhbmRsZXJfZnBjKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKIAlmcHVfc2ZwYygwKTsKQEAgLTExOCw2ICYjNDM7MTM0LDggQEAgYm9vbCBmaXh1cF9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAJCXJldHVybiBleF9oYW5kbGVyX3VhX2xvYWRfcmVnKGV4LCBmYWxzZSwgcmVncyk7CiAJY2FzZSBFWF9UWVBFX1VBX0xPQURfUkVHUEFJUjoKIAkJcmV0dXJuIGV4X2hhbmRsZXJfdWFfbG9hZF9yZWcoZXgsIHRydWUsIHJlZ3MpOwomIzQzOwljYXNlIEVYX1RZUEVfWkVST1BBRDoKJiM0MzsJCXJldHVybiBleF9oYW5kbGVyX3plcm9wYWQoZXgsIHJlZ3MpOwogCWNhc2UgRVhfVFlQRV9GUEM6CiAJCXJldHVybiBleF9oYW5kbGVyX2ZwYyhleCwgcmVncyk7CiAJY2FzZSBFWF9UWVBFX1VBX01WQ09TX1RPOgpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL21tL2ZhdWx0LmMgYi9hcmNoL3MzOTAvbW0vZmF1bHQuYwppbmRleCAwMjhhZWI5YzQ4ZDZmZi4uZGI3N2M4YzAwMjNlZTYgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9tbS9mYXVsdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9tbS9mYXVsdC5jCkBAIC00MzgsMTMgJiM0Mzs0MzgsOSBAQCB2b2lkIGRvX3NlY3VyZV9zdG9yYWdlX2FjY2VzcyhzdHJ1Y3QgcHRfcmVncyAqcmVncykKIAkJcGFuaWMoJiMzNDtVbmV4cGVjdGVkIFBHTSAweDNkIHdpdGggVEVJRCBiaXQgNjE9MCYjMzQ7KTsKIAl9CiAJaWYgKGlzX2tlcm5lbF9mYXVsdChyZWdzKSkgewotCQlmb2xpbyA9IHZpcnRfdG9fZm9saW8oKHZvaWQgKilhZGRyKTsKLQkJaWYgKHVubGlrZWx5KCFmb2xpb190cnlfZ2V0KGZvbGlvKSkpCi0JCQlyZXR1cm47Ci0JCXJjID0gdXZfY29udmVydF9mcm9tX3NlY3VyZShmb2xpb190b19waHlzKGZvbGlvKSk7Ci0JCWlmICghcmMpCi0JCQljbGVhcl9iaXQoUEdfYXJjaF8xLCAmYW1wO2ZvbGlvLSZndDtmbGFncy5mKTsKLQkJZm9saW9fcHV0KGZvbGlvKTsKJiM0MzsJCWlmIChpc192bWFsbG9jX2FkZHIoKHZvaWQgKilhZGRyKSkKJiM0MzsJCQlyZXR1cm4gaGFuZGxlX2ZhdWx0X2Vycm9yX25vbG9jayhyZWdzLCAwKTsKJiM0MzsJCXJjID0gdXZfY29udmVydF9mcm9tX3NlY3VyZShfX3BhKGFkZHIpKTsKIAkJLyoKIAkJICogVGhlcmUgYXJlIHNvbWUgdmFsaWQgZml4dXAgdHlwZXMgZm9yIGtlcm5lbAogCQkgKiBhY2Nlc3NlcyB0byBkb25hdGVkIHNlY3VyZSBtZW1vcnkuIHplcm9wYWQgaXMgb25lCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MjYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2OTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBzMzkwIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBzZXJpZXMgdGFyZ2V0aW5nIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gTG9va3MgbGlrZSBpdCB0b3VjaGVzIGEgc2lnbmlmaWNhbnQgY2h1bmsgb2YgdGhlIHMzOTAgY29kZSBiYXNlOiBgYXJjaC9zMzkwL0tjb25maWdgLCBzZXZlcmFsIGluY2x1ZGUgZmlsZXMsIGFuZCBhIGZldyBjb3JlIGtlcm5lbCBhcmVhcyBsaWtlIGB1di5jYCwgYGt2bS9wdi5jYCwgYGV4dGFibGUuY2AsIGFuZCBgZmF1bHQuY2AuIFRoZSBjaGFuZ2VzIGFyZSBzcGVjaWZpY2FsbHkgYXJvdW5kIGFkZGluZyBgRENBQ0hFX1dPUkRfQUNDRVNTYCAoY29uZGl0aW9uYWxseSwgaWYgbm90IEtNU0FOKSwgaW50cm9kdWNpbmcgbmV3IGV4Y2VwdGlvbiB0eXBlcywgaW1wbGVtZW50aW5nIGFuIGlubGluZSBgbG9hZF91bmFsaWduZWRfemVyb3BhZGAgZnVuY3Rpb24sIGFkZGluZyBzdG9yYWdlIHZhcmlhYmxlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIGluIGB1di5jYCBhbmQgdXNpbmcgdGhlbSBpbiBLVk0mIzM5O3MgUFYgY29kZSwgYW5kIHR3ZWFraW5nIGBkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3NgIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBmYXVsdCBoYW5kbGVyLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHRoaW5nICpmdW5jdGlvbmFsKiBhbmQgKnJlYWNoYWJsZSo/IFNpbmNlIHRoaXMgaXMgczM5MC1zcGVjaWZpYywgdGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBxdWVzdGlvbi4gSXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBQcm90ZWN0ZWQgVmlydHVhbGl6YXRpb24gaW4gS1ZNIGFuZCBleGNlcHRpb24gaGFuZGxpbmcgd2hlbiBkZWFsaW5nIHdpdGggdW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3Mgd2l0aCB6ZXJvLXBhZGRpbmcuIE5vcm1hbGx5LCBJIHdvdWxkIHRoaW5rIHR3aWNlIGFib3V0IGZ1enppbmcgY29kZSBwYXRocyB0aGF0IGFyZSBkaWZmaWN1bHQgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBidXQgd2FpdCwgc3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IHMzOTB4IFFFTVUsIHNvIHRoYXQgY2hhbmdlcyB0aGUgY2FsY3VsdXMuIFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBleHBsb3JpbmcgYmVjYXVzZSBpdCYjMzk7cyB0b3VjaGluZyBwcmV0dHkgY29yZSBrZXJuZWwgbG9naWMuCgpJIG5lZWQgdG8gbmFpbCBkb3duIGV4YWN0bHkgd2hpY2ggZnVuY3Rpb25zIGFyZSBtb3N0IHJlbGV2YW50IGZvciBmdXp6aW5nLCBzbyBJJiMzOTtsbCBiZSBmb2N1c2luZyBvbjogYGxvYWRfdW5hbGlnbmVkX3plcm9wYWRgICh0aGF0IGlubGluZSBmdW5jdGlvbiBpcyBhbHdheXMgYSBnb29kIHRhcmdldCksIGB1dl9hbGxvY19zdG9yX3ZhcmAsIGB1dl9mcmVlX3N0b3JfdmFyYCwgdGhlIGBrdm1fczM5MF9wdl8qYCBmdW5jdGlvbnMsIGBleF9oYW5kbGVyX3plcm9wYWRgLCBhbmQgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2AuCgpUaW1lIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIHRvIHNlZSB3aGF0JiMzOTtzIGVuYWJsaW5nIGBEQ0FDSEVfV09SRF9BQ0NFU1NgLiBJJiMzOTtsbCBzZWUgaWYgYFMzOTBgIGlzIHNlbGVjdGluZyBpdC4gQW5kIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgYHV2LmNgIGFuZCBga3ZtL3B2LmNgLCBqdXN0IHRvIGdldCBhIGZ1bGxlciBwaWN0dXJlIG9mIHRoZSBjb250ZXh0IGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1dlxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva2VybmVsL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGU9NDU9b2JqLXlcdCYjNDM7PSBub3NwZWMtYnJhbmNoLm8gaXBsX3ZtcGFybS5vIG1hY2hpbmVfa2V4ZWNfcmVsb2MubyB1bndpbmRfYmMub1xuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZTo0NjpvYmoteVx0JiM0Mzs9IHNtcC5vIHRleHRfYW1vZGUzMS5vIHN0YWNrdHJhY2UubyBhYnNfbG93Y29yZS5vIGZhY2lsaXR5Lm8gdXYubyB3dGkub1xuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS00Ny1vYmoteVx0JiM0Mzs9IGRpYWcvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc2MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkNvbnNpZGVyaW5nIHMzOTAgQnVpbGQgSGFiaXRzIGFuZCBLVk0vUFYuYyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgYnVpbGQgcHJvY2Vzcy4uLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gc2VlaW5nIHRoYXQgdGhlIGB1di5vYCBvYmplY3QgZmlsZSAqYWx3YXlzKiBzZWVtcyB0byBiZSBjb21waWxlZCBhbmQgYnVpbHQgc3BlY2lmaWNhbGx5IGZvciB0aGUgczM5MCBhcmNoaXRlY3R1cmUuIEl0JiMzOTtzIGEgYml0IG9mIGEgZ2l2ZW4gYXQgdGhpcyBwb2ludCwgYnV0IGl0IHRyaWdnZXJzIHNvbWV0aGluZyBpbiB0aGUgYmFjayBvZiBteSBtaW5kLgoKVGhlbiB0aGUgcXVlc3Rpb24gaGl0cyBtZTogd2hhdCBhYm91dCBga3ZtL3B2LmNgPyBJcyB0aGF0IGZpbGUgYWxzbyBjb25zaXN0ZW50bHkgYnVpbHQgd2l0aCBzMzkwIGluIG1pbmQsIG9yIGFyZSB0aGVyZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBlbGVtZW50cyBhdCBwbGF5PyBJZiBpdCYjMzk7cyAqbm90KiBhbHdheXMgYW4gczM5MC1zcGVjaWZpYyBidWlsZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBkcml2aW5nIHRoZSBkaWZmZXJlbmNlLiBBcmUgdGhlcmUgcGxhdGZvcm0tc3BlY2lmaWMgb3B0aW1pemF0aW9ucyBvciBhcmNoaXRlY3R1cmFsIGNvbnNpZGVyYXRpb25zIGluaGVyZW50IGluIGB1di5vYCB0aGF0ICphcmVuJiMzOTt0KiBhcyBzdHJvbmdseSBwcmVzZW50IGluIHRoZSBLVk0gcGFyYXZpcnR1YWxpemF0aW9uIGNvZGU/IE9yIHBlcmhhcHMgdGhlcmUgYXJlIHZlcnkgc3BlY2lmaWMgdXNlIGNhc2VzIGZvciBvbmUgb3IgdGhlIG90aGVyPyBUaGlzIGNvdWxkIGJlIGJlY2F1c2UgS1ZNL1BWIGlzIGV4cGVjdGVkIHRvIGJlIG1vcmUgcG9ydGFibGUsIGJ1dCBVViBtaWdodCBoYXZlIHZlcnkgc3BlY2lmaWMgZmVhdHVyZXMgZm9yIHMzOTAgd2hpY2ggaXQgbmVlZHMgdG8gbGV2ZXJhZ2UuCkVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoeSBvbmUgc2VlbXMgdG8gYmUgYW4gczM5MCBnaXZlbiwgYW5kIHRoZSBvdGhlciBkb2VzbiYjMzk7dCBhcHBlYXIgYXMgc3VjaCBhdCBmaXJzdCBnbGFuY2UuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyBhbmQgdGhlIGNvZGUgaXRzZWxmIHRvIHNlZSBpZiB0aGUgYXNzdW1wdGlvbnMgaG9sZCwgYW5kIHRoZSByZWFzb25zIHdoeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwdlxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTA9a3ZtLXkgJiM0Mzs9IGt2bS1zMzkwLm8gaW50ZXJjZXB0Lm8gaW50ZXJydXB0Lm8gcHJpdi5vIHNpZ3Aub1xuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZToxMTprdm0teSAmIzQzOz0gZGlhZy5vIGdhY2Nlc3MubyBndWVzdGRiZy5vIHZzaWUubyBwdi5vXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTEyLWt2bS15ICYjNDM7PSBkYXQubyBnbWFwLm8gZmF1bHRpbi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI3MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipLVk0gQ29uZmlndXJhdGlvbiBhbmQgU2VjdXJlIFN0b3JhZ2UgQWNjZXNzKioKClJpZ2h0LCBzbyBgcHYub2AgaXMgY29uc2lzdGVudGx5IGJ1aWx0IHdoZW5ldmVyIEtWTSBpcyBhY3RpdmUuIFRoYXTigJlzIGEgY2xlYXIgaW5kaWNhdGlvbiB0aGF0IEtWTSBpcyB0aGUgZGVjaWRpbmcgZmFjdG9yIGluIGl0cyBpbmNsdXNpb24uIEluIG90aGVyIHdvcmRzLCBgS1ZNYCBpcyB0aGUgY29uZmlnIG9wdGlvbiB0aGF0IHRyaWdnZXJzIGl0LiBXYWl0IGEgbW9tZW50LCBJIHRoaW5rIEkgcmVtZW1iZXIgdGhpczogZm9yIHMzOTAsIEtWTSBpcyBleHBsaWNpdGx5IGxhYmVsZWQgYXMgYENPTkZJR19LVk1gLiBUaGF0IGNvbmZpcm1zIG15IGluaXRpYWwgYXNzZXNzbWVudC4KCk5vdywgbGV0JiMzOTtzIHBpdm90IHRvIGludmVzdGlnYXRpbmcgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiB3aXRoaW4gYGFyY2gvczM5MC9tbS9mYXVsdC5jYC4gVGhhdCBzZWVtcyB0byBiZSB0aGUgcmlnaHQgcGxhY2UgdG8gZ2V0IGEgZGVlcGVyIGxvb2sgYXQgdGhlIHNlY3VyZSBzdG9yYWdlIGFjY2VzcyBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RvX3NlY3VyZV9zdG9yYWdlX2FjY2VzcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9tbS9mYXVsdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9tbS9mYXVsdC5jPTQwND1OT0tQUk9CRV9TWU1CT0woZG9fZGF0X2V4Y2VwdGlvbik7XG4tLVxuYXJjaC9zMzkwL21tL2ZhdWx0LmMtNDA3LVxuYXJjaC9zMzkwL21tL2ZhdWx0LmM6NDA4OnZvaWQgZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuYXJjaC9zMzkwL21tL2ZhdWx0LmMtNDA5LXtcbi0tXG5hcmNoL3MzOTAvbW0vZmF1bHQuYy00NzMtfVxuYXJjaC9zMzkwL21tL2ZhdWx0LmM6NDc0Ok5PS1BST0JFX1NZTUJPTChkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3MpO1xuYXJjaC9zMzkwL21tL2ZhdWx0LmMtNDc1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NTEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTdG9yYWdlIFZhcmlhYmxlIEFsbG9jYXRpb24gQ29kZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyByaWdodCBub3cgaXMgb24gdGhlc2UgY29yZSBmdW5jdGlvbnM6IGB1dl9hbGxvY19zdG9yX3ZhcmAsIGB1dl9mcmVlX3N0b3JfdmFyYCwgYGV4X2hhbmRsZXJfemVyb3BhZGAsIGFuZCBgZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzYC4gVGhlc2UgYXJlIHRoZSBrZXkgYXJlYXMgd2hlcmUgSSBzdXNwZWN0IG1vZGlmaWNhdGlvbnMgb3IgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aWxsIGJlIGNyaXRpY2FsLgoKTm93LCBmb3IgdGhlIGNvbmZpZ3MuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIG9ubHkgbGlzdCB0aG9zZSBjb25maWdzIHRoYXQgZGlyZWN0bHkgcmVsYXRlIHRvIHRoZSBjb2RlLCBhbmQgbm90IHRoZSBnZW5lcmljIHN0dWZmLiBgUzM5MGAgaXMgdGhlIGJhc2UgYXJjaGl0ZWN0dXJlLCBzbyB0aGF0JiMzOTtzIGltcGxpY2l0LiBCdXQgdGhlIHByZXNlbmNlIG9mIGBrdm1fczM5MF9wdl9hbGxvY192bWAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIHBvaW50cyBkaXJlY3RseSB0byBgS1ZNYC4gVGhlcmVmb3JlLCBgS1ZNYCBpcyB0aGUgY29uZmlnIEkmIzM5O20gbW9zdCBpbnRlcmVzdGVkIGluLCBnaXZlbiB0aGUgcHJlc2VuY2Ugb2YgdGhvc2Ugc3BlY2lmaWMgZnVuY3Rpb25zLgoKQSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0IGBhcmNoL3MzOTAva3ZtL01ha2VmaWxlYCBpcyB0aGUgcmVsZXZhbnQgZmlsZSwgc28gYEtWTWAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gZmxhZyB0byBjb25zaWRlciBoZXJlLiBUaGF0IHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29iai1cXCRcXChDT05GSUdfS1ZNXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL01ha2VmaWxlPTE0PWt2bS0kKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgJiM0Mzs9IHBjaS5vXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19LVk0pICYjNDM7PSBrdm0ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjgwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBjb25maWd1cmF0aW9uIHByb2Nlc3MsIGV4cHJlc3NlZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkNvbmZpZ3VyYXRpb24gQW5hbHlzaXM6IEtWTSBhbmQgSW1wbGljaXQgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZCB3aXRoIGBDT05GSUdfS1ZNYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUsIHRoZSBjb3JlIG9mIHRoZSBoeXBlcnZpc29yIHN1cHBvcnQuIE5vdywgdGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGNvbmZpZ3VyYXRpb25zIHRpZWQgaW4gb3IgYWZmZWN0ZWQgYnkgdGhpcy4KCkFoYSEgSXQgbG9va3MgbGlrZSBgRENBQ0hFX1dPUkRfQUNDRVNTYCBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIGJhc2VkIG9uIHRoZSBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGBTMzkwYCwgKnVubGVzcyogYEtNU0FOYCBpcyAqbm90KiBlbmFibGVkLiBTbywgaW4gdGhpcyBzY2VuYXJpbyBnaXZlbiB0aGF0IHdlIGtub3cgYENPTkZJR19LVk1gIGlzIGNvbmZpZ3VyZWQsIGBEQ0FDSEVfV09SRF9BQ0NFU1NgIGlzIGltcGxpY2l0bHkgZW5hYmxlZCBiZWNhdXNlIHdlIGRvbiYjMzk7dCBrbm93IHRoZSBzdGF0ZSBvZiBgS01TQU5gLgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIHNoaWZ0IGdlYXJzIHNsaWdodGx5IGFuZCBjaGVjayBvbiBgZXhfaGFuZGxlcl96ZXJvcGFkYCB3aXRoaW4gYGFyY2gvczM5MC9tbS9leHRhYmxlLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleF9oYW5kbGVyX3plcm9wYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAvbW0vZXh0YWJsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9tbS9leHRhYmxlLmM9Mzk9c3RhdGljIGJvb2wgZXhfaGFuZGxlcl91YV9sb2FkX3JlZyhjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCxcbi0tXG5hcmNoL3MzOTAvbW0vZXh0YWJsZS5jLTUyLVxuYXJjaC9zMzkwL21tL2V4dGFibGUuYzo1MzpzdGF0aWMgYm9vbCBleF9oYW5kbGVyX3plcm9wYWQoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuYXJjaC9zMzkwL21tL2V4dGFibGUuYy01NC17XG4tLVxuYXJjaC9zMzkwL21tL2V4dGFibGUuYz0xMTk9Ym9vbCBmaXh1cF9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9zMzkwL21tL2V4dGFibGUuYy0xMzctXHRjYXNlIEVYX1RZUEVfWkVST1BBRDpcbmFyY2gvczM5MC9tbS9leHRhYmxlLmM6MTM4Olx0XHRyZXR1cm4gZXhfaGFuZGxlcl96ZXJvcGFkKGV4LCByZWdzKTtcbmFyY2gvczM5MC9tbS9leHRhYmxlLmMtMTM5LVx0Y2FzZSBFWF9UWVBFX0ZQQzpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg3OQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipQcmlvcml0aXppbmcgQ29kZSBBbmFseXNpczogS2V5IEZ1bmN0aW9ucyBmb3IgRGVlcCBEaXZlKioKClJpZ2h0LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBzcGVjaWZpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgY29kZWJhc2UuIEl0JiMzOTtzIGNsZWFyIHRoYXQgdGhlc2UgYXJlIHRoZSBvbmVzIHRvIHNjcnV0aW5pemUgbW9zdCBjbG9zZWx5LiBNeSBwcmltYXJ5IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uOiBgdXZfYWxsb2Nfc3Rvcl92YXJgIGFuZCBgdXZfZnJlZV9zdG9yX3ZhcmAg4oCTIHRoZXNlIGFyZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBzdG9yYWdlIHZhcmlhYmxlcyBhcmUgYWxsb2NhdGVkIGFuZCBkZWFsbG9jYXRlZC4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYXJlYSBmb3IgbWVtb3J5IG1hbmFnZW1lbnQgYnVncyBvciBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIE5leHQgdXAsIGBleF9oYW5kbGVyX3plcm9wYWRgIGlzIGludGVyZXN0aW5nOyB6ZXJvLXBhZGRpbmcgZnVuY3Rpb25zIGFyZSBvZnRlbiBpbnZvbHZlZCBpbiBzZW5zaXRpdmUgZGF0YSBoYW5kbGluZywgYW5kIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgb25lIGlzIGltcGxlbWVudGVkIGNvcnJlY3RseSwgaW5jbHVkaW5nIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBwYWRkaW5nIG9yYWNsZSBhdHRhY2sgdmVjdG9ycy4gTW92aW5nIG9uIHRvIHNlY3VyZSBzdG9yYWdlIGFjY2VzcywgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2AgaXMgb2J2aW91c2x5IGNyaXRpY2FsOyBhbnkgZmxhdyBoZXJlIGNvdWxkIGNvbXByb21pc2UgdGhlIGVudGlyZSBzeXN0ZW0mIzM5O3Mgc2VjdXJpdHkgcG9zdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFjY2VzcyBjb250cm9sIG1lY2hhbmlzbXMsIGVuY3J5cHRpb24sIGFuZCBhdXRoZW50aWNhdGlvbiBpbnZvbHZlZC4gRmluYWxseSwgdGhlIEtWTS9zMzkwIHZpcnR1YWxpemF0aW9uIHNwZWNpZmljIGZ1bmN0aW9ucyBga3ZtX3MzOTBfcHZfYWxsb2Nfdm1gIGFuZCBga3ZtX3MzOTBfcHZfZGVhbGxvY192bWAgbG9vayBsaWtlIGtleSBwaWVjZXMgZm9yIG1hbmFnaW5nIHZpcnR1YWwgbWFjaGluZSByZXNvdXJjZXMuIEkmIzM5O2xsIG5lZWQgdG8gZXhwbG9yZSB0aGVzZSBpbiBjb250ZXh0IHRvIGNvbmZpcm0gd2hldGhlciB0aGVyZSBhcmUgaXNzdWVzIGhlcmUgcmVsYXRlZCB0byByZXNvdXJjZSBleGhhdXN0aW9uLCBvciBhbnkgc2VjdXJpdHkgY29uY2VybnMuCgpJJiMzOTt2ZSBhbHNvIG5vdGljZWQgYSBjb3VwbGUgb2YgYWRkaXRpb25hbCBmdW5jdGlvbnMgdGhhdCB3YXJyYW50IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbjogYHV2X2ZyZWVfcmFuZ2VfY2JgIGFuZCBgdXZfYWxsb2NfcmFuZ2VfY2JgLiBUaGVzZSAqY291bGQqIGJlIGludm9sdmVkIGluIHNpbWlsYXIgbWVtb3J5IG9yIHJlc291cmNlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIHRhc2tzIGFzIHRoZSBpbml0aWFsIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXZfZnJlZV9yYW5nZV9jYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rZXJuZWwvdXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva2VybmVsL3V2LmM9MjA3PWludCB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlX3B0ZShwdGVfdCBwdGUpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC91di5jLTIxMi1cbmFyY2gvczM5MC9rZXJuZWwvdXYuYzoyMTM6c3RhdGljIGludCB1dl9mcmVlX3JhbmdlX2NiKHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmRhdGEpXG5hcmNoL3MzOTAva2VybmVsL3V2LmMtMjE0LXtcbi0tXG5hcmNoL3MzOTAva2VybmVsL3V2LmM9MjIzPXZvaWQgdXZfZnJlZV9zdG9yX3Zhcih2b2lkICpzdG9yX3Zhcilcbi0tXG5hcmNoL3MzOTAva2VybmVsL3V2LmMtMjM0LVx0YWRkciA9ICh1bnNpZ25lZCBsb25nKWFyZWEtXHUwMDNlYWRkcjtcbmFyY2gvczM5MC9rZXJuZWwvdXYuYzoyMzU6XHRhcHBseV90b19leGlzdGluZ19wYWdlX3JhbmdlKFx1MDAyNmluaXRfbW0sIGFkZHIsIHNpemUsIHV2X2ZyZWVfcmFuZ2VfY2IsIE5VTEwpO1xuYXJjaC9zMzkwL2tlcm5lbC91di5jLTIzNi1cdGZyZWVfdm1fYXJlYShhcmVhKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY1NQoJCQkJCQkJb3V0cHV0OiAyMjAKCQkJCQkJCXRob3VnaHRzOiAyNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duLiBJIHNlZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgY2hhbmdlcyB0aGF0IGFyZSBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldCBhcmUgYHV2X2ZyZWVfcmFuZ2VfY2JgIGFuZCBgdXZfYWxsb2NfcmFuZ2VfY2JgIC0gdGhlIG1lbW9yeSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBjYWxsYmFja3MgYXJlIGFsd2F5cyBjcml0aWNhbCBhcmVhcyB0byBleHBsb3JlIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKTGV0JiMzOTtzIHN1bW1hcml6ZSBteSBhbmFseXNpczoKCiogICAqKldvcnRoRnV6emluZzoqKiBBYnNvbHV0ZWx5LgoqICAgKipGb2N1cyBTeW1ib2xzOioqIFdlIG5lZWQgdG8gcHJpb3JpdGl6ZSB0aGVzZSBzeW1ib2xzIHdoZW4gc2V0dGluZyB1cCB0aGUgZnV6emluZyBjYW1wYWlnbjoKICAgICogICBgdXZfYWxsb2Nfc3Rvcl92YXJgCiAgICAqICAgYHV2X2ZyZWVfc3Rvcl92YXJgCiAgICAqICAgYHV2X2FsbG9jX3JhbmdlX2NiYAogICAgKiAgIGB1dl9mcmVlX3JhbmdlX2NiYAogICAgKiAgIGBleF9oYW5kbGVyX3plcm9wYWRgCiAgICAqICAgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2AKICAgICogICBga3ZtX3MzOTBfcHZfYWxsb2Nfdm1gCiAgICAqICAgYGt2bV9zMzkwX3B2X2RlYWxsb2Nfdm1gCgoqICAgKipFbmFibGUgQ29uZmlndXJhdGlvbnM6KiogVGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24gbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBmdXp6aW5nIGNhbXBhaWduLCBhcyB0aGUgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byB0aGF0IHN1YnN5c3RlbS4KCiogICAqKlJlYXNvbmluZzoqKiBUaGlzIHBhdGNoIGRpZ3MgaW50byBzMzkwIGFyY2hpdGVjdHVyZSBzcGVjaWZpY3MsIHdoaWNoIGFsd2F5cyBwaXF1ZSBteSBpbnRlcmVzdC4gSSBzZWUgZnVuY3Rpb25hbGl0eSB0aGF0IHNwZWNpZmljYWxseSByZWxhdGVzIHRvIHVuYWxpZ25lZCB3b3JkIGxvYWRzIHdpdGggemVybyBwYWRkaW5nLCBhbmQgUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIG1lbW9yeSBtYW5hZ2VtZW50LCB3aGljaCwgZnJvbSBhbiBhdHRhY2sgc3VyZmFjZSBwb2ludCBvZiB2aWV3LCBpcyBhIGhpZ2gtdmFsdWUgdGFyZ2V0LiBUaGVzZSBtb2RpZmljYXRpb25zIHRvdWNoIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBleGNlcHRpb24gaGFuZGxpbmcsIGFuZCB0aG9zZSBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgdW5jb3ZlcmluZyBtZW1vcnkgc2FmZXR5IGJ1Z3Mgb3IgY29ycmVjdG5lc3MgaXNzdWVzIHRocm91Z2ggZnV6emluZy4gVGhlIGludGVycGxheSBvZiBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nIGlzIGEgY2xhc3NpYyByZWNpcGUgZm9yIHZ1bG5lcmFiaWxpdHkuIEl0JiMzOTtzIHRpbWUgdG8gc2V0IHVwIHRoZSBmdXp6ZXJzIGFuZCBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3V2X2FsbG9jX3N0b3JfdmFyJiMzNDssCiAgICAmIzM0O3V2X2ZyZWVfc3Rvcl92YXImIzM0OywKICAgICYjMzQ7dXZfYWxsb2NfcmFuZ2VfY2ImIzM0OywKICAgICYjMzQ7dXZfZnJlZV9yYW5nZV9jYiYjMzQ7LAogICAgJiMzNDtleF9oYW5kbGVyX3plcm9wYWQmIzM0OywKICAgICYjMzQ7ZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3B2X2FsbG9jX3ZtJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3B2X2RlYWxsb2Nfdm0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gczM5MCBhcmNoaXRlY3R1cmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9mIHVuYWxpZ25lZCB3b3JkIGxvYWRzIHdpdGggemVybyBwYWRkaW5nIChgbG9hZF91bmFsaWduZWRfemVyb3BhZGAsIGBleF9oYW5kbGVyX3plcm9wYWRgKSwgYW5kIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBLVk0gUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIChgdXZfYWxsb2Nfc3Rvcl92YXJgLCBgdXZfZnJlZV9zdG9yX3ZhcmApLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZywgd2hpY2ggc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IHNhZmV0eSBhbmQgY29ycmVjdG5lc3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3V2X2FsbG9jX3N0b3JfdmFyJiMzNDssCiAgICAmIzM0O3V2X2ZyZWVfc3Rvcl92YXImIzM0OywKICAgICYjMzQ7dXZfYWxsb2NfcmFuZ2VfY2ImIzM0OywKICAgICYjMzQ7dXZfZnJlZV9yYW5nZV9jYiYjMzQ7LAogICAgJiMzNDtleF9oYW5kbGVyX3plcm9wYWQmIzM0OywKICAgICYjMzQ7ZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3B2X2FsbG9jX3ZtJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3B2X2RlYWxsb2Nfdm0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gczM5MCBhcmNoaXRlY3R1cmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9mIHVuYWxpZ25lZCB3b3JkIGxvYWRzIHdpdGggemVybyBwYWRkaW5nIChgbG9hZF91bmFsaWduZWRfemVyb3BhZGAsIGBleF9oYW5kbGVyX3plcm9wYWRgKSwgYW5kIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBLVk0gUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIChgdXZfYWxsb2Nfc3Rvcl92YXJgLCBgdXZfZnJlZV9zdG9yX3ZhcmApLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZywgd2hpY2ggc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IHNhZmV0eSBhbmQgY29ycmVjdG5lc3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxODo0NzoxOC42MjcwODEwMjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTgyNDYxNTM0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1dl9hbGxvY19zdG9yX3ZhclwiLFxuICAgIFwidXZfZnJlZV9zdG9yX3ZhclwiLFxuICAgIFwidXZfYWxsb2NfcmFuZ2VfY2JcIixcbiAgICBcInV2X2ZyZWVfcmFuZ2VfY2JcIixcbiAgICBcImV4X2hhbmRsZXJfemVyb3BhZFwiLFxuICAgIFwiZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzXCIsXG4gICAgXCJrdm1fczM5MF9wdl9hbGxvY192bVwiLFxuICAgIFwia3ZtX3MzOTBfcHZfZGVhbGxvY192bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHMzOTAgYXJjaGl0ZWN0dXJlIGNvZGUsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvZiB1bmFsaWduZWQgd29yZCBsb2FkcyB3aXRoIHplcm8gcGFkZGluZyAoYGxvYWRfdW5hbGlnbmVkX3plcm9wYWRgLCBgZXhfaGFuZGxlcl96ZXJvcGFkYCksIGFuZCBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgS1ZNIFByb3RlY3RlZCBWaXJ0dWFsaXphdGlvbiAoYHV2X2FsbG9jX3N0b3JfdmFyYCwgYHV2X2ZyZWVfc3Rvcl92YXJgKS4gVGhlc2UgY2hhbmdlcyBtb2RpZnkgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBleGNlcHRpb24gaGFuZGxpbmcsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG1lbW9yeSBzYWZldHkgYW5kIGNvcnJlY3RuZXNzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxODo0NzoxOC42MjcwODU5NDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwMjk1MTE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDViNjQ1OGZiOTM2MmFiZDQ3YzYzZDE2ODkwNWM1MDEyYzg1ODc1ODZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMTYgMTg6NDc6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL0tjb25maWcgYi9hcmNoL3MzOTAvS2NvbmZpZ1xcbmluZGV4IDg0NDA0ZTY3NzhkNTA0Li5mZTgxYzUzOWVmMmZmYyAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvS2NvbmZpZ1xcbisrKyBiL2FyY2gvczM5MC9LY29uZmlnXFxuQEAgLTE2Myw2ICsxNjMsNyBAQCBjb25maWcgUzM5MFxcbiBcXHRzZWxlY3QgQVJDSF9XQU5UU19USFBfU1dBUFxcbiBcXHRzZWxlY3QgQlVJTERUSU1FX1RBQkxFX1NPUlRcXG4gXFx0c2VsZWN0IENMT05FX0JBQ0tXQVJEUzJcXG4rXFx0c2VsZWN0IERDQUNIRV9XT1JEX0FDQ0VTUyBpZiAhS01TQU5cXG4gXFx0c2VsZWN0IERZTkFNSUNfRlRSQUNFIGlmIEZVTkNUSU9OX1RSQUNFUlxcbiBcXHRzZWxlY3QgRlVOQ1RJT05fQUxJR05NRU5UXzhCIGlmIENDX0lTX0dDQ1xcbiBcXHRzZWxlY3QgRlVOQ1RJT05fQUxJR05NRU5UXzE2QiBpZiAhQ0NfSVNfR0NDXFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9hc20tZXh0YWJsZS5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FzbS1leHRhYmxlLmhcXG5pbmRleCA5OTc0OGMyMGU3NjcxMy4uZDIzZWEwYzk0ZTRlYTYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FzbS1leHRhYmxlLmhcXG4rKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXNtLWV4dGFibGUuaFxcbkBAIC0xMiw2ICsxMiw3IEBAXFxuICNkZWZpbmUgRVhfVFlQRV9VQV9GQVVMVFxcdDNcXG4gI2RlZmluZSBFWF9UWVBFX1VBX0xPQURfUkVHXFx0NVxcbiAjZGVmaW5lIEVYX1RZUEVfVUFfTE9BRF9SRUdQQUlSXFx0NlxcbisjZGVmaW5lIEVYX1RZUEVfWkVST1BBRFxcdFxcdDdcXG4gI2RlZmluZSBFWF9UWVBFX0ZQQ1xcdFxcdDhcXG4gI2RlZmluZSBFWF9UWVBFX1VBX01WQ09TX1RPXFx0OVxcbiAjZGVmaW5lIEVYX1RZUEVfVUFfTVZDT1NfRlJPTVxcdDEwXFxuQEAgLTc5LDYgKzgwLDkgQEBcXG4gI2RlZmluZSBFWF9UQUJMRV9VQV9MT0FEX1JFR1BBSVIoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZXJyLCBfcmVnemVybylcXHRcXFxcXFxuIFxcdF9fRVhfVEFCTEUoX19leF90YWJsZSwgX2ZhdWx0LCBfdGFyZ2V0LCBFWF9UWVBFX1VBX0xPQURfUkVHUEFJUiwgX3JlZ2VyciwgX3JlZ3plcm8sIDApXFxuIFxcbisjZGVmaW5lIEVYX1RBQkxFX1pFUk9QQUQoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZGF0YSwgX3JlZ2FkZHIpXFx0XFx0XFxcXFxcbitcXHRfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9aRVJPUEFELCBfcmVnZGF0YSwgX3JlZ2FkZHIsIDApXFxuK1xcbiAjZGVmaW5lIEVYX1RBQkxFX0ZQQyhfZmF1bHQsIF90YXJnZXQpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9GUEMsIF9fc3RyaW5naWZ5KCUlcjApLCBfX3N0cmluZ2lmeSglJXIwKSwgMClcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS91di5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3V2LmhcXG5pbmRleCBkOTE5ZTY5NjYyZjU4NC4uMTUzZmVkNjNhZGRhM2MgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3V2LmhcXG4rKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdXYuaFxcbkBAIC02MzUsNiArNjM1LDggQEAgaW50IHMzOTBfd2lnZ2xlX3NwbGl0X2ZvbGlvKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG4gaW50IF9fbWFrZV9mb2xpb19zZWN1cmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHV2X2NiX2hlYWRlciAqdXZjYik7XFxuIGludCB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlKHVuc2lnbmVkIGxvbmcgcGFkZHIpO1xcbiBpbnQgdXZfY29udmVydF9mcm9tX3NlY3VyZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG4rdm9pZCAqdXZfYWxsb2Nfc3Rvcl92YXIodW5zaWduZWQgbG9uZyBzaXplKTtcXG4rdm9pZCB1dl9mcmVlX3N0b3JfdmFyKHZvaWQgKnN0b3JfdmFyKTtcXG4gXFxuIHZvaWQgc2V0dXBfdXYodm9pZCk7XFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS93b3JkLWF0LWEtdGltZS5oXFxuaW5kZXggZTkyODcwMzYzOTJkMDguLmVhYTE5ZGVlNzY5OTQxIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS93b3JkLWF0LWEtdGltZS5oXFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3dvcmQtYXQtYS10aW1lLmhcXG5AQCAtNCw2ICs0LDcgQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRvcHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dvcmRwYXJ0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vYXNtLWV4dGFibGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9iaXRzcGVybG9uZy5oXFx1MDAzZVxcbiBcXG4gc3RydWN0IHdvcmRfYXRfYV90aW1lIHtcXG5AQCAtNDAsNCArNDEsMjUgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHplcm9fYnl0ZW1hc2sodW5zaWduZWQgbG9uZyBkYXRhKVxcbiBcXHRyZXR1cm4gfjFVTCBcXHUwMDNjXFx1MDAzYyBkYXRhO1xcbiB9XFxuIFxcbisvKlxcbisgKiBMb2FkIGFuIHVuYWxpZ25lZCB3b3JkIGZyb20ga2VybmVsIHNwYWNlLlxcbisgKlxcbisgKiBJbiB0aGUgKHZlcnkgdW5saWtlbHkpIGNhc2Ugb2YgdGhlIHdvcmQgYmVpbmcgYSBwYWdlLWNyb3NzZXJcXG4rICogYW5kIHRoZSBuZXh0IHBhZ2Ugbm90IGJlaW5nIG1hcHBlZCwgdGFrZSB0aGUgZXhjZXB0aW9uIGFuZFxcbisgKiByZXR1cm4gemVyb2VzIGluIHRoZSBub24tZXhpc3RpbmcgcGFydC5cXG4rICovXFxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBsb2FkX3VuYWxpZ25lZF96ZXJvcGFkKGNvbnN0IHZvaWQgKmFkZHIpXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBkYXRhO1xcbitcXG4rXFx0YXNtX2lubGluZSB2b2xhdGlsZShcXG4rXFx0XFx0XFxcIjA6XFx0bGdcXHQlW2RhdGFdLDAoJVthZGRyXSlcXFxcblxcXCJcXG4rXFx0XFx0XFxcIjE6XFx0bm9wclxcdCUlcjdcXFxcblxcXCJcXG4rXFx0XFx0RVhfVEFCTEVfWkVST1BBRCgwYiwgMWIsICVbZGF0YV0sICVbYWRkcl0pXFxuK1xcdFxcdEVYX1RBQkxFX1pFUk9QQUQoMWIsIDFiLCAlW2RhdGFdLCAlW2FkZHJdKVxcbitcXHRcXHQ6IFtkYXRhXSBcXFwiPWRcXFwiIChkYXRhKVxcbitcXHRcXHQ6IFthZGRyXSBcXFwiYVxcXCIgKGFkZHIpLCBcXFwibVxcXCIgKCoodW5zaWduZWQgbG9uZyAqKWFkZHIpKTtcXG4rXFx0cmV0dXJuIGRhdGE7XFxuK31cXG4rXFxuICNlbmRpZiAvKiBfQVNNX1dPUkRfQVRfQV9USU1FX0ggKi9cXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2tlcm5lbC91di5jIGIvYXJjaC9zMzkwL2tlcm5lbC91di5jXFxuaW5kZXggYTI4NGY5OGQ5NzE2ODAuLjk4YTdmOTg4ZmM2OTFkIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rZXJuZWwvdXYuY1xcbisrKyBiL2FyY2gvczM5MC9rZXJuZWwvdXYuY1xcbkBAIC0xNiw2ICsxNiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zd2FwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wYWdld2Fsay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvYmFja2luZy1kZXYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZtYWxsb2MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9mYWNpbGl0eS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3NlY3Rpb25zLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vdXYuaFxcdTAwM2VcXG5AQCAtMjA5LDYgKzIxMCw2NCBAQCBpbnQgdXZfY29udmVydF9mcm9tX3NlY3VyZV9wdGUocHRlX3QgcHRlKVxcbiBcXHRyZXR1cm4gdXZfY29udmVydF9mcm9tX3NlY3VyZV9mb2xpbyhwZm5fZm9saW8ocHRlX3BmbihwdGUpKSk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgdXZfZnJlZV9yYW5nZV9jYihwdGVfdCAqcHRlcCwgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdHB0ZV90IHB0ZSA9IHB0ZXBfZ2V0KHB0ZXApO1xcbitcXG4rXFx0aWYgKCFwdGVfcHJlc2VudChwdGUpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0X19mcmVlX3BhZ2UocHRlX3BhZ2UocHRlKSk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbit2b2lkIHV2X2ZyZWVfc3Rvcl92YXIodm9pZCAqc3Rvcl92YXIpXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBhZGRyLCBzaXplO1xcbitcXHRzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhO1xcbitcXG4rXFx0aWYgKCFzdG9yX3ZhcilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHRhcmVhID0gZmluZF92bV9hcmVhKHN0b3JfdmFyKTtcXG4rXFx0aWYgKFdBUk5fT05fT05DRSghYXJlYSB8fCAhKGFyZWEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgVk1fU1BBUlNFKSkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFx0c2l6ZSA9IGdldF92bV9hcmVhX3NpemUoYXJlYSk7XFxuK1xcdGFkZHIgPSAodW5zaWduZWQgbG9uZylhcmVhLVxcdTAwM2VhZGRyO1xcbitcXHRhcHBseV90b19leGlzdGluZ19wYWdlX3JhbmdlKFxcdTAwMjZpbml0X21tLCBhZGRyLCBzaXplLCB1dl9mcmVlX3JhbmdlX2NiLCBOVUxMKTtcXG4rXFx0ZnJlZV92bV9hcmVhKGFyZWEpO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVModXZfZnJlZV9zdG9yX3ZhciwgXFxcImt2bVxcXCIpO1xcbitcXG4rc3RhdGljIGludCB1dl9hbGxvY19yYW5nZV9jYihwdGVfdCAqcHRlcCwgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBwYWdlICpwYWdlO1xcbitcXHRwdGVfdCBwdGU7XFxuK1xcbitcXHRwYWdlID0gYWxsb2NfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQgfCBfX0dGUF9aRVJPKTtcXG4rXFx0aWYgKCFwYWdlKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0cHRlID0gX19wdGUocGFnZV90b19waHlzKHBhZ2UpIHwgcGdwcm90X3ZhbChQQUdFX0tFUk5FTCkpO1xcbitcXHRzZXRfcHRlKHB0ZXAsIHB0ZSk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbit2b2lkICp1dl9hbGxvY19zdG9yX3Zhcih1bnNpZ25lZCBsb25nIHNpemUpXFxuK3tcXG4rXFx0c3RydWN0IHZtX3N0cnVjdCAqYXJlYTtcXG4rXFx0dW5zaWduZWQgbG9uZyBhZGRyO1xcbitcXG4rXFx0YXJlYSA9IGdldF92bV9hcmVhKHNpemUsIFZNX1NQQVJTRSk7XFxuK1xcdGlmICghYXJlYSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdGFkZHIgPSAodW5zaWduZWQgbG9uZylhcmVhLVxcdTAwM2VhZGRyO1xcbitcXHRpZiAoYXBwbHlfdG9fcGFnZV9yYW5nZShcXHUwMDI2aW5pdF9tbSwgYWRkciwgc2l6ZSwgdXZfYWxsb2NfcmFuZ2VfY2IsIE5VTEwpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0cmV0dXJuIGFyZWEtXFx1MDAzZWFkZHI7XFxuK291dDpcXG4rXFx0dXZfZnJlZV9zdG9yX3ZhcihhcmVhLVxcdTAwM2VhZGRyKTtcXG4rXFx0cmV0dXJuIE5VTEw7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyh1dl9hbGxvY19zdG9yX3ZhciwgXFxcImt2bVxcXCIpO1xcbitcXG4gLypcXG4gICogQ2FsY3VsYXRlIHRoZSBleHBlY3RlZCByZWZfY291bnQgZm9yIGEgZm9saW8gdGhhdCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBub1xcbiAgKiBmdXJ0aGVyIHBpbnMuIFRoaXMgd2FzIGNyaWJiZWQgZnJvbSBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBvdGhlciBwbGFjZXMgaW5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9wdi5jIGIvYXJjaC9zMzkwL2t2bS9wdi5jXFxuaW5kZXggMWJlYWNjODQxY2E4NTAuLmRjNWFjMjliNGMzMTE4IDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rdm0vcHYuY1xcbisrKyBiL2FyY2gvczM5MC9rdm0vcHYuY1xcbkBAIC0zMzcsNyArMzM3LDcgQEAgaW50IGt2bV9zMzkwX3B2X2NyZWF0ZV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MTYgKnJjLCB1MTYgKnJyYylcXG4gLyogb25seSBmcmVlIHJlc291cmNlcyB3aGVuIHRoZSBkZXN0cm95IHdhcyBzdWNjZXNzZnVsICovXFxuIHN0YXRpYyB2b2lkIGt2bV9zMzkwX3B2X2RlYWxsb2Nfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbiB7XFxuLVxcdHZmcmVlKGt2bS1cXHUwMDNlYXJjaC5wdi5zdG9yX3Zhcik7XFxuK1xcdHV2X2ZyZWVfc3Rvcl92YXIoa3ZtLVxcdTAwM2VhcmNoLnB2LnN0b3JfdmFyKTtcXG4gXFx0ZnJlZV9wYWdlcyhrdm0tXFx1MDAzZWFyY2gucHYuc3Rvcl9iYXNlLFxcbiBcXHRcXHQgICBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9iYXNlX3N0b3JfbGVuKSk7XFxuIFxcdGt2bV9zMzkwX2NsZWFyX3B2X3N0YXRlKGt2bSk7XFxuQEAgLTM2OSw3ICszNjksNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3B2X2FsbG9jX3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4gXFx0LyogQWxsb2NhdGUgdmFyaWFibGUgc3RvcmFnZSAqL1xcbiBcXHR2bGVuID0gQUxJR04odmlydCAqICgobnBhZ2VzICogUEFHRV9TSVpFKSAvIEhQQUdFX1NJWkUpLCBQQUdFX1NJWkUpO1xcbiBcXHR2bGVuICs9IHV2X2luZm8uZ3Vlc3RfdmlydF9iYXNlX3N0b3JfbGVuO1xcbi1cXHRrdm0tXFx1MDAzZWFyY2gucHYuc3Rvcl92YXIgPSB2emFsbG9jKHZsZW4pO1xcbitcXHRrdm0tXFx1MDAzZWFyY2gucHYuc3Rvcl92YXIgPSB1dl9hbGxvY19zdG9yX3Zhcih2bGVuKTtcXG4gXFx0aWYgKCFrdm0tXFx1MDAzZWFyY2gucHYuc3Rvcl92YXIpXFxuIFxcdFxcdGdvdG8gb3V0X2VycjtcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3B2X2Rpc3Bvc2Vfb25lX2xlZnRvdmVyKHN0cnVjdCBrdm0gKmt2bSxcXG4gXFx0ICovXFxuIFxcdGZyZWVfcGFnZXMobGVmdG92ZXItXFx1MDAzZXN0b3JfYmFzZSwgZ2V0X29yZGVyKHV2X2luZm8uZ3Vlc3RfYmFzZV9zdG9yX2xlbikpO1xcbiBcXHRmcmVlX3BhZ2VzKGxlZnRvdmVyLVxcdTAwM2VvbGRfZ21hcF90YWJsZSwgQ1JTVF9BTExPQ19PUkRFUik7XFxuLVxcdHZmcmVlKGxlZnRvdmVyLVxcdTAwM2VzdG9yX3Zhcik7XFxuK1xcdHV2X2ZyZWVfc3Rvcl92YXIobGVmdG92ZXItXFx1MDAzZXN0b3JfdmFyKTtcXG4gZG9uZV9mYXN0OlxcbiBcXHRhdG9taWNfZGVjKFxcdTAwMjZrdm0tXFx1MDAzZW1tLVxcdTAwM2Vjb250ZXh0LnByb3RlY3RlZF9jb3VudCk7XFxuIFxcdHJldHVybiAwO1xcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jIGIvYXJjaC9zMzkwL21tL2V4dGFibGUuY1xcbmluZGV4IDA2M2I0MzQ2NzQyZDk2Li43NDk4ZTg1OGM0MDE5NSAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jXFxuKysrIGIvYXJjaC9zMzkwL21tL2V4dGFibGUuY1xcbkBAIC01MCw2ICs1MCwyMiBAQCBzdGF0aWMgYm9vbCBleF9oYW5kbGVyX3VhX2xvYWRfcmVnKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LFxcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgZXhfaGFuZGxlcl96ZXJvcGFkKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4re1xcbitcXHR1bnNpZ25lZCBpbnQgcmVnX2FkZHIgPSBGSUVMRF9HRVQoRVhfREFUQV9SRUdfQUREUiwgZXgtXFx1MDAzZWRhdGEpO1xcbitcXHR1bnNpZ25lZCBpbnQgcmVnX2RhdGEgPSBGSUVMRF9HRVQoRVhfREFUQV9SRUdfRVJSLCBleC1cXHUwMDNlZGF0YSk7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZGF0YSwgYWRkciwgb2Zmc2V0O1xcbitcXG4rXFx0YWRkciA9IHJlZ3MtXFx1MDAzZWdwcnNbcmVnX2FkZHJdO1xcbitcXHRvZmZzZXQgPSBhZGRyIFxcdTAwMjYgKHNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEpO1xcbitcXHRhZGRyIFxcdTAwMjY9IH4oc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSk7XFxuK1xcdGRhdGEgPSAqKHVuc2lnbmVkIGxvbmcgKilhZGRyO1xcbitcXHRkYXRhIFxcdTAwM2NcXHUwMDNjPSBCSVRTX1BFUl9CWVRFICogb2Zmc2V0O1xcbitcXHRyZWdzLVxcdTAwM2VncHJzW3JlZ19kYXRhXSA9IGRhdGE7XFxuK1xcdHJlZ3MtXFx1MDAzZXBzdy5hZGRyID0gZXh0YWJsZV9maXh1cChleCk7XFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbiBzdGF0aWMgYm9vbCBleF9oYW5kbGVyX2ZwYyhjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuIHtcXG4gXFx0ZnB1X3NmcGMoMCk7XFxuQEAgLTExOCw2ICsxMzQsOCBAQCBib29sIGZpeHVwX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4gXFx0XFx0cmV0dXJuIGV4X2hhbmRsZXJfdWFfbG9hZF9yZWcoZXgsIGZhbHNlLCByZWdzKTtcXG4gXFx0Y2FzZSBFWF9UWVBFX1VBX0xPQURfUkVHUEFJUjpcXG4gXFx0XFx0cmV0dXJuIGV4X2hhbmRsZXJfdWFfbG9hZF9yZWcoZXgsIHRydWUsIHJlZ3MpO1xcbitcXHRjYXNlIEVYX1RZUEVfWkVST1BBRDpcXG4rXFx0XFx0cmV0dXJuIGV4X2hhbmRsZXJfemVyb3BhZChleCwgcmVncyk7XFxuIFxcdGNhc2UgRVhfVFlQRV9GUEM6XFxuIFxcdFxcdHJldHVybiBleF9oYW5kbGVyX2ZwYyhleCwgcmVncyk7XFxuIFxcdGNhc2UgRVhfVFlQRV9VQV9NVkNPU19UTzpcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL21tL2ZhdWx0LmMgYi9hcmNoL3MzOTAvbW0vZmF1bHQuY1xcbmluZGV4IDAyOGFlYjljNDhkNmZmLi5kYjc3YzhjMDAyM2VlNiAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvbW0vZmF1bHQuY1xcbisrKyBiL2FyY2gvczM5MC9tbS9mYXVsdC5jXFxuQEAgLTQzOCwxMyArNDM4LDkgQEAgdm9pZCBkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3Moc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuIFxcdFxcdHBhbmljKFxcXCJVbmV4cGVjdGVkIFBHTSAweDNkIHdpdGggVEVJRCBiaXQgNjE9MFxcXCIpO1xcbiBcXHR9XFxuIFxcdGlmIChpc19rZXJuZWxfZmF1bHQocmVncykpIHtcXG4tXFx0XFx0Zm9saW8gPSB2aXJ0X3RvX2ZvbGlvKCh2b2lkICopYWRkcik7XFxuLVxcdFxcdGlmICh1bmxpa2VseSghZm9saW9fdHJ5X2dldChmb2xpbykpKVxcbi1cXHRcXHRcXHRyZXR1cm47XFxuLVxcdFxcdHJjID0gdXZfY29udmVydF9mcm9tX3NlY3VyZShmb2xpb190b19waHlzKGZvbGlvKSk7XFxuLVxcdFxcdGlmICghcmMpXFxuLVxcdFxcdFxcdGNsZWFyX2JpdChQR19hcmNoXzEsIFxcdTAwMjZmb2xpby1cXHUwMDNlZmxhZ3MuZik7XFxuLVxcdFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuK1xcdFxcdGlmIChpc192bWFsbG9jX2FkZHIoKHZvaWQgKilhZGRyKSlcXG4rXFx0XFx0XFx0cmV0dXJuIGhhbmRsZV9mYXVsdF9lcnJvcl9ub2xvY2socmVncywgMCk7XFxuK1xcdFxcdHJjID0gdXZfY29udmVydF9mcm9tX3NlY3VyZShfX3BhKGFkZHIpKTtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogVGhlcmUgYXJlIHNvbWUgdmFsaWQgZml4dXAgdHlwZXMgZm9yIGtlcm5lbFxcbiBcXHRcXHQgKiBhY2Nlc3NlcyB0byBkb25hdGVkIHNlY3VyZSBtZW1vcnkuIHplcm9wYWQgaXMgb25lXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjE5LjQzMDU4MzcyOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkwMjExMDQwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXZfYWxsb2Nfc3Rvcl92YXJcIixcbiAgICBcInV2X2ZyZWVfc3Rvcl92YXJcIixcbiAgICBcInV2X2FsbG9jX3JhbmdlX2NiXCIsXG4gICAgXCJ1dl9mcmVlX3JhbmdlX2NiXCIsXG4gICAgXCJleF9oYW5kbGVyX3plcm9wYWRcIixcbiAgICBcImRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc1wiLFxuICAgIFwia3ZtX3MzOTBfcHZfYWxsb2Nfdm1cIixcbiAgICBcImt2bV9zMzkwX3B2X2RlYWxsb2Nfdm1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBzMzkwIGFyY2hpdGVjdHVyZSBjb2RlLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgb2YgdW5hbGlnbmVkIHdvcmQgbG9hZHMgd2l0aCB6ZXJvIHBhZGRpbmcgKGBsb2FkX3VuYWxpZ25lZF96ZXJvcGFkYCwgYGV4X2hhbmRsZXJfemVyb3BhZGApLCBhbmQgbWVtb3J5IGFsbG9jYXRpb24gZm9yIEtWTSBQcm90ZWN0ZWQgVmlydHVhbGl6YXRpb24gKGB1dl9hbGxvY19zdG9yX3ZhcmAsIGB1dl9mcmVlX3N0b3JfdmFyYCkuIFRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLCB3aGljaCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0bmVzcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YjY0NThmYjkzNjJhYmQ0N2M2M2QxNjg5MDVjNTAxMmM4NTg3NTg2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMTg6NDc6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvS2NvbmZpZyBiL2FyY2gvczM5MC9LY29uZmlnXG5pbmRleCA4NDQwNGU2Nzc4ZDUwNC4uZmU4MWM1MzllZjJmZmMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvS2NvbmZpZ1xuKysrIGIvYXJjaC9zMzkwL0tjb25maWdcbkBAIC0xNjMsNiArMTYzLDcgQEAgY29uZmlnIFMzOTBcbiBcdHNlbGVjdCBBUkNIX1dBTlRTX1RIUF9TV0FQXG4gXHRzZWxlY3QgQlVJTERUSU1FX1RBQkxFX1NPUlRcbiBcdHNlbGVjdCBDTE9ORV9CQUNLV0FSRFMyXG4rXHRzZWxlY3QgRENBQ0hFX1dPUkRfQUNDRVNTIGlmICFLTVNBTlxuIFx0c2VsZWN0IERZTkFNSUNfRlRSQUNFIGlmIEZVTkNUSU9OX1RSQUNFUlxuIFx0c2VsZWN0IEZVTkNUSU9OX0FMSUdOTUVOVF84QiBpZiBDQ19JU19HQ0NcbiBcdHNlbGVjdCBGVU5DVElPTl9BTElHTk1FTlRfMTZCIGlmICFDQ19JU19HQ0NcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXNtLWV4dGFibGUuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9hc20tZXh0YWJsZS5oXG5pbmRleCA5OTc0OGMyMGU3NjcxMy4uZDIzZWEwYzk0ZTRlYTYgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXNtLWV4dGFibGUuaFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FzbS1leHRhYmxlLmhcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2RlZmluZSBFWF9UWVBFX1VBX0ZBVUxUXHQzXG4gI2RlZmluZSBFWF9UWVBFX1VBX0xPQURfUkVHXHQ1XG4gI2RlZmluZSBFWF9UWVBFX1VBX0xPQURfUkVHUEFJUlx0NlxuKyNkZWZpbmUgRVhfVFlQRV9aRVJPUEFEXHRcdDdcbiAjZGVmaW5lIEVYX1RZUEVfRlBDXHRcdDhcbiAjZGVmaW5lIEVYX1RZUEVfVUFfTVZDT1NfVE9cdDlcbiAjZGVmaW5lIEVYX1RZUEVfVUFfTVZDT1NfRlJPTVx0MTBcbkBAIC03OSw2ICs4MCw5IEBAXG4gI2RlZmluZSBFWF9UQUJMRV9VQV9MT0FEX1JFR1BBSVIoX2ZhdWx0LCBfdGFyZ2V0LCBfcmVnZXJyLCBfcmVnemVybylcdFxcXG4gXHRfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9VQV9MT0FEX1JFR1BBSVIsIF9yZWdlcnIsIF9yZWd6ZXJvLCAwKVxuIFxuKyNkZWZpbmUgRVhfVEFCTEVfWkVST1BBRChfZmF1bHQsIF90YXJnZXQsIF9yZWdkYXRhLCBfcmVnYWRkcilcdFx0XFxcbitcdF9fRVhfVEFCTEUoX19leF90YWJsZSwgX2ZhdWx0LCBfdGFyZ2V0LCBFWF9UWVBFX1pFUk9QQUQsIF9yZWdkYXRhLCBfcmVnYWRkciwgMClcbitcbiAjZGVmaW5lIEVYX1RBQkxFX0ZQQyhfZmF1bHQsIF90YXJnZXQpXHRcdFx0XHRcdFxcXG4gXHRfX0VYX1RBQkxFKF9fZXhfdGFibGUsIF9mYXVsdCwgX3RhcmdldCwgRVhfVFlQRV9GUEMsIF9fc3RyaW5naWZ5KCUlcjApLCBfX3N0cmluZ2lmeSglJXIwKSwgMClcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdXYuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS91di5oXG5pbmRleCBkOTE5ZTY5NjYyZjU4NC4uMTUzZmVkNjNhZGRhM2MgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdXYuaFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3V2LmhcbkBAIC02MzUsNiArNjM1LDggQEAgaW50IHMzOTBfd2lnZ2xlX3NwbGl0X2ZvbGlvKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbiBpbnQgX19tYWtlX2ZvbGlvX3NlY3VyZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3QgdXZfY2JfaGVhZGVyICp1dmNiKTtcbiBpbnQgdXZfY29udmVydF9mcm9tX3NlY3VyZSh1bnNpZ25lZCBsb25nIHBhZGRyKTtcbiBpbnQgdXZfY29udmVydF9mcm9tX3NlY3VyZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbit2b2lkICp1dl9hbGxvY19zdG9yX3Zhcih1bnNpZ25lZCBsb25nIHNpemUpO1xuK3ZvaWQgdXZfZnJlZV9zdG9yX3Zhcih2b2lkICpzdG9yX3Zhcik7XG4gXG4gdm9pZCBzZXR1cF91dih2b2lkKTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS93b3JkLWF0LWEtdGltZS5oXG5pbmRleCBlOTI4NzAzNjM5MmQwOC4uZWFhMTlkZWU3Njk5NDEgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3dvcmQtYXQtYS10aW1lLmhcbkBAIC00LDYgKzQsNyBAQFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd29yZHBhcnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2FzbS9hc20tZXh0YWJsZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2JpdHNwZXJsb25nLmhcdTAwM2VcbiBcbiBzdHJ1Y3Qgd29yZF9hdF9hX3RpbWUge1xuQEAgLTQwLDQgKzQxLDI1IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB6ZXJvX2J5dGVtYXNrKHVuc2lnbmVkIGxvbmcgZGF0YSlcbiBcdHJldHVybiB+MVVMIFx1MDAzY1x1MDAzYyBkYXRhO1xuIH1cbiBcbisvKlxuKyAqIExvYWQgYW4gdW5hbGlnbmVkIHdvcmQgZnJvbSBrZXJuZWwgc3BhY2UuXG4rICpcbisgKiBJbiB0aGUgKHZlcnkgdW5saWtlbHkpIGNhc2Ugb2YgdGhlIHdvcmQgYmVpbmcgYSBwYWdlLWNyb3NzZXJcbisgKiBhbmQgdGhlIG5leHQgcGFnZSBub3QgYmVpbmcgbWFwcGVkLCB0YWtlIHRoZSBleGNlcHRpb24gYW5kXG4rICogcmV0dXJuIHplcm9lcyBpbiB0aGUgbm9uLWV4aXN0aW5nIHBhcnQuXG4rICovXG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGxvYWRfdW5hbGlnbmVkX3plcm9wYWQoY29uc3Qgdm9pZCAqYWRkcilcbit7XG4rXHR1bnNpZ25lZCBsb25nIGRhdGE7XG4rXG4rXHRhc21faW5saW5lIHZvbGF0aWxlKFxuK1x0XHRcIjA6XHRsZ1x0JVtkYXRhXSwwKCVbYWRkcl0pXFxuXCJcbitcdFx0XCIxOlx0bm9wclx0JSVyN1xcblwiXG4rXHRcdEVYX1RBQkxFX1pFUk9QQUQoMGIsIDFiLCAlW2RhdGFdLCAlW2FkZHJdKVxuK1x0XHRFWF9UQUJMRV9aRVJPUEFEKDFiLCAxYiwgJVtkYXRhXSwgJVthZGRyXSlcbitcdFx0OiBbZGF0YV0gXCI9ZFwiIChkYXRhKVxuK1x0XHQ6IFthZGRyXSBcImFcIiAoYWRkciksIFwibVwiICgqKHVuc2lnbmVkIGxvbmcgKilhZGRyKSk7XG4rXHRyZXR1cm4gZGF0YTtcbit9XG4rXG4gI2VuZGlmIC8qIF9BU01fV09SRF9BVF9BX1RJTUVfSCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rZXJuZWwvdXYuYyBiL2FyY2gvczM5MC9rZXJuZWwvdXYuY1xuaW5kZXggYTI4NGY5OGQ5NzE2ODAuLjk4YTdmOTg4ZmM2OTFkIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2tlcm5lbC91di5jXG4rKysgYi9hcmNoL3MzOTAva2VybmVsL3V2LmNcbkBAIC0xNiw2ICsxNiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3dhcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGFnZXdhbGsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JhY2tpbmctZGV2LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vZmFjaWxpdHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9zZWN0aW9ucy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3V2LmhcdTAwM2VcbkBAIC0yMDksNiArMjEwLDY0IEBAIGludCB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlX3B0ZShwdGVfdCBwdGUpXG4gXHRyZXR1cm4gdXZfY29udmVydF9mcm9tX3NlY3VyZV9mb2xpbyhwZm5fZm9saW8ocHRlX3BmbihwdGUpKSk7XG4gfVxuIFxuK3N0YXRpYyBpbnQgdXZfZnJlZV9yYW5nZV9jYihwdGVfdCAqcHRlcCwgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpkYXRhKVxuK3tcbitcdHB0ZV90IHB0ZSA9IHB0ZXBfZ2V0KHB0ZXApO1xuK1xuK1x0aWYgKCFwdGVfcHJlc2VudChwdGUpKVxuK1x0XHRyZXR1cm4gMDtcbitcdF9fZnJlZV9wYWdlKHB0ZV9wYWdlKHB0ZSkpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3ZvaWQgdXZfZnJlZV9zdG9yX3Zhcih2b2lkICpzdG9yX3Zhcilcbit7XG4rXHR1bnNpZ25lZCBsb25nIGFkZHIsIHNpemU7XG4rXHRzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhO1xuK1xuK1x0aWYgKCFzdG9yX3ZhcilcbitcdFx0cmV0dXJuO1xuK1x0YXJlYSA9IGZpbmRfdm1fYXJlYShzdG9yX3Zhcik7XG4rXHRpZiAoV0FSTl9PTl9PTkNFKCFhcmVhIHx8ICEoYXJlYS1cdTAwM2VmbGFncyBcdTAwMjYgVk1fU1BBUlNFKSkpXG4rXHRcdHJldHVybjtcbitcdHNpemUgPSBnZXRfdm1fYXJlYV9zaXplKGFyZWEpO1xuK1x0YWRkciA9ICh1bnNpZ25lZCBsb25nKWFyZWEtXHUwMDNlYWRkcjtcbitcdGFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2UoXHUwMDI2aW5pdF9tbSwgYWRkciwgc2l6ZSwgdXZfZnJlZV9yYW5nZV9jYiwgTlVMTCk7XG4rXHRmcmVlX3ZtX2FyZWEoYXJlYSk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVModXZfZnJlZV9zdG9yX3ZhciwgXCJrdm1cIik7XG4rXG4rc3RhdGljIGludCB1dl9hbGxvY19yYW5nZV9jYihwdGVfdCAqcHRlcCwgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpkYXRhKVxuK3tcbitcdHN0cnVjdCBwYWdlICpwYWdlO1xuK1x0cHRlX3QgcHRlO1xuK1xuK1x0cGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyk7XG4rXHRpZiAoIXBhZ2UpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0cHRlID0gX19wdGUocGFnZV90b19waHlzKHBhZ2UpIHwgcGdwcm90X3ZhbChQQUdFX0tFUk5FTCkpO1xuK1x0c2V0X3B0ZShwdGVwLCBwdGUpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3ZvaWQgKnV2X2FsbG9jX3N0b3JfdmFyKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbit7XG4rXHRzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhO1xuK1x0dW5zaWduZWQgbG9uZyBhZGRyO1xuK1xuK1x0YXJlYSA9IGdldF92bV9hcmVhKHNpemUsIFZNX1NQQVJTRSk7XG4rXHRpZiAoIWFyZWEpXG4rXHRcdHJldHVybiBOVUxMO1xuK1x0YWRkciA9ICh1bnNpZ25lZCBsb25nKWFyZWEtXHUwMDNlYWRkcjtcbitcdGlmIChhcHBseV90b19wYWdlX3JhbmdlKFx1MDAyNmluaXRfbW0sIGFkZHIsIHNpemUsIHV2X2FsbG9jX3JhbmdlX2NiLCBOVUxMKSlcbitcdFx0Z290byBvdXQ7XG4rXHRyZXR1cm4gYXJlYS1cdTAwM2VhZGRyO1xuK291dDpcbitcdHV2X2ZyZWVfc3Rvcl92YXIoYXJlYS1cdTAwM2VhZGRyKTtcbitcdHJldHVybiBOVUxMO1xuK31cbitFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKHV2X2FsbG9jX3N0b3JfdmFyLCBcImt2bVwiKTtcbitcbiAvKlxuICAqIENhbGN1bGF0ZSB0aGUgZXhwZWN0ZWQgcmVmX2NvdW50IGZvciBhIGZvbGlvIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgbm9cbiAgKiBmdXJ0aGVyIHBpbnMuIFRoaXMgd2FzIGNyaWJiZWQgZnJvbSBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBvdGhlciBwbGFjZXMgaW5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3B2LmMgYi9hcmNoL3MzOTAva3ZtL3B2LmNcbmluZGV4IDFiZWFjYzg0MWNhODUwLi5kYzVhYzI5YjRjMzExOCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vcHYuY1xuKysrIGIvYXJjaC9zMzkwL2t2bS9wdi5jXG5AQCAtMzM3LDcgKzMzNyw3IEBAIGludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpXG4gLyogb25seSBmcmVlIHJlc291cmNlcyB3aGVuIHRoZSBkZXN0cm95IHdhcyBzdWNjZXNzZnVsICovXG4gc3RhdGljIHZvaWQga3ZtX3MzOTBfcHZfZGVhbGxvY192bShzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuLVx0dmZyZWUoa3ZtLVx1MDAzZWFyY2gucHYuc3Rvcl92YXIpO1xuK1x0dXZfZnJlZV9zdG9yX3Zhcihrdm0tXHUwMDNlYXJjaC5wdi5zdG9yX3Zhcik7XG4gXHRmcmVlX3BhZ2VzKGt2bS1cdTAwM2VhcmNoLnB2LnN0b3JfYmFzZSxcbiBcdFx0ICAgZ2V0X29yZGVyKHV2X2luZm8uZ3Vlc3RfYmFzZV9zdG9yX2xlbikpO1xuIFx0a3ZtX3MzOTBfY2xlYXJfcHZfc3RhdGUoa3ZtKTtcbkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wdl9hbGxvY192bShzdHJ1Y3Qga3ZtICprdm0pXG4gXHQvKiBBbGxvY2F0ZSB2YXJpYWJsZSBzdG9yYWdlICovXG4gXHR2bGVuID0gQUxJR04odmlydCAqICgobnBhZ2VzICogUEFHRV9TSVpFKSAvIEhQQUdFX1NJWkUpLCBQQUdFX1NJWkUpO1xuIFx0dmxlbiArPSB1dl9pbmZvLmd1ZXN0X3ZpcnRfYmFzZV9zdG9yX2xlbjtcbi1cdGt2bS1cdTAwM2VhcmNoLnB2LnN0b3JfdmFyID0gdnphbGxvYyh2bGVuKTtcbitcdGt2bS1cdTAwM2VhcmNoLnB2LnN0b3JfdmFyID0gdXZfYWxsb2Nfc3Rvcl92YXIodmxlbik7XG4gXHRpZiAoIWt2bS1cdTAwM2VhcmNoLnB2LnN0b3JfdmFyKVxuIFx0XHRnb3RvIG91dF9lcnI7XG4gXHRyZXR1cm4gMDtcbkBAIC00MTQsNyArNDE0LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wdl9kaXNwb3NlX29uZV9sZWZ0b3ZlcihzdHJ1Y3Qga3ZtICprdm0sXG4gXHQgKi9cbiBcdGZyZWVfcGFnZXMobGVmdG92ZXItXHUwMDNlc3Rvcl9iYXNlLCBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9iYXNlX3N0b3JfbGVuKSk7XG4gXHRmcmVlX3BhZ2VzKGxlZnRvdmVyLVx1MDAzZW9sZF9nbWFwX3RhYmxlLCBDUlNUX0FMTE9DX09SREVSKTtcbi1cdHZmcmVlKGxlZnRvdmVyLVx1MDAzZXN0b3JfdmFyKTtcbitcdHV2X2ZyZWVfc3Rvcl92YXIobGVmdG92ZXItXHUwMDNlc3Rvcl92YXIpO1xuIGRvbmVfZmFzdDpcbiBcdGF0b21pY19kZWMoXHUwMDI2a3ZtLVx1MDAzZW1tLVx1MDAzZWNvbnRleHQucHJvdGVjdGVkX2NvdW50KTtcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9tbS9leHRhYmxlLmMgYi9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jXG5pbmRleCAwNjNiNDM0Njc0MmQ5Ni4uNzQ5OGU4NThjNDAxOTUgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jXG4rKysgYi9hcmNoL3MzOTAvbW0vZXh0YWJsZS5jXG5AQCAtNTAsNiArNTAsMjIgQEAgc3RhdGljIGJvb2wgZXhfaGFuZGxlcl91YV9sb2FkX3JlZyhjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCxcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBleF9oYW5kbGVyX3plcm9wYWQoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuK3tcbitcdHVuc2lnbmVkIGludCByZWdfYWRkciA9IEZJRUxEX0dFVChFWF9EQVRBX1JFR19BRERSLCBleC1cdTAwM2VkYXRhKTtcbitcdHVuc2lnbmVkIGludCByZWdfZGF0YSA9IEZJRUxEX0dFVChFWF9EQVRBX1JFR19FUlIsIGV4LVx1MDAzZWRhdGEpO1xuK1x0dW5zaWduZWQgbG9uZyBkYXRhLCBhZGRyLCBvZmZzZXQ7XG4rXG4rXHRhZGRyID0gcmVncy1cdTAwM2VncHJzW3JlZ19hZGRyXTtcbitcdG9mZnNldCA9IGFkZHIgXHUwMDI2IChzaXplb2YodW5zaWduZWQgbG9uZykgLSAxKTtcbitcdGFkZHIgXHUwMDI2PSB+KHNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEpO1xuK1x0ZGF0YSA9ICoodW5zaWduZWQgbG9uZyAqKWFkZHI7XG4rXHRkYXRhIFx1MDAzY1x1MDAzYz0gQklUU19QRVJfQllURSAqIG9mZnNldDtcbitcdHJlZ3MtXHUwMDNlZ3Byc1tyZWdfZGF0YV0gPSBkYXRhO1xuK1x0cmVncy1cdTAwM2Vwc3cuYWRkciA9IGV4dGFibGVfZml4dXAoZXgpO1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuK1xuIHN0YXRpYyBib29sIGV4X2hhbmRsZXJfZnBjKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncylcbiB7XG4gXHRmcHVfc2ZwYygwKTtcbkBAIC0xMTgsNiArMTM0LDggQEAgYm9vbCBmaXh1cF9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4gXHRcdHJldHVybiBleF9oYW5kbGVyX3VhX2xvYWRfcmVnKGV4LCBmYWxzZSwgcmVncyk7XG4gXHRjYXNlIEVYX1RZUEVfVUFfTE9BRF9SRUdQQUlSOlxuIFx0XHRyZXR1cm4gZXhfaGFuZGxlcl91YV9sb2FkX3JlZyhleCwgdHJ1ZSwgcmVncyk7XG4rXHRjYXNlIEVYX1RZUEVfWkVST1BBRDpcbitcdFx0cmV0dXJuIGV4X2hhbmRsZXJfemVyb3BhZChleCwgcmVncyk7XG4gXHRjYXNlIEVYX1RZUEVfRlBDOlxuIFx0XHRyZXR1cm4gZXhfaGFuZGxlcl9mcGMoZXgsIHJlZ3MpO1xuIFx0Y2FzZSBFWF9UWVBFX1VBX01WQ09TX1RPOlxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9tbS9mYXVsdC5jIGIvYXJjaC9zMzkwL21tL2ZhdWx0LmNcbmluZGV4IDAyOGFlYjljNDhkNmZmLi5kYjc3YzhjMDAyM2VlNiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9tbS9mYXVsdC5jXG4rKysgYi9hcmNoL3MzOTAvbW0vZmF1bHQuY1xuQEAgLTQzOCwxMyArNDM4LDkgQEAgdm9pZCBkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3Moc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4gXHRcdHBhbmljKFwiVW5leHBlY3RlZCBQR00gMHgzZCB3aXRoIFRFSUQgYml0IDYxPTBcIik7XG4gXHR9XG4gXHRpZiAoaXNfa2VybmVsX2ZhdWx0KHJlZ3MpKSB7XG4tXHRcdGZvbGlvID0gdmlydF90b19mb2xpbygodm9pZCAqKWFkZHIpO1xuLVx0XHRpZiAodW5saWtlbHkoIWZvbGlvX3RyeV9nZXQoZm9saW8pKSlcbi1cdFx0XHRyZXR1cm47XG4tXHRcdHJjID0gdXZfY29udmVydF9mcm9tX3NlY3VyZShmb2xpb190b19waHlzKGZvbGlvKSk7XG4tXHRcdGlmICghcmMpXG4tXHRcdFx0Y2xlYXJfYml0KFBHX2FyY2hfMSwgXHUwMDI2Zm9saW8tXHUwMDNlZmxhZ3MuZik7XG4tXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4rXHRcdGlmIChpc192bWFsbG9jX2FkZHIoKHZvaWQgKilhZGRyKSlcbitcdFx0XHRyZXR1cm4gaGFuZGxlX2ZhdWx0X2Vycm9yX25vbG9jayhyZWdzLCAwKTtcbitcdFx0cmMgPSB1dl9jb252ZXJ0X2Zyb21fc2VjdXJlKF9fcGEoYWRkcikpO1xuIFx0XHQvKlxuIFx0XHQgKiBUaGVyZSBhcmUgc29tZSB2YWxpZCBmaXh1cCB0eXBlcyBmb3Iga2VybmVsXG4gXHRcdCAqIGFjY2Vzc2VzIHRvIGRvbmF0ZWQgc2VjdXJlIG1lbW9yeS4gemVyb3BhZCBpcyBvbmVcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjE5LjQzMDU4NDkzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NTgxMjMxNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBzMzkwIEtlcm5lbCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIHRhcmdldGluZyB0aGUgczM5MCBhcmNoaXRlY3R1cmUuIExvb2tzIGxpa2UgaXQgdG91Y2hlcyBhIHNpZ25pZmljYW50IGNodW5rIG9mIHRoZSBzMzkwIGNvZGUgYmFzZTogYGFyY2gvczM5MC9LY29uZmlnYCwgc2V2ZXJhbCBpbmNsdWRlIGZpbGVzLCBhbmQgYSBmZXcgY29yZSBrZXJuZWwgYXJlYXMgbGlrZSBgdXYuY2AsIGBrdm0vcHYuY2AsIGBleHRhYmxlLmNgLCBhbmQgYGZhdWx0LmNgLiBUaGUgY2hhbmdlcyBhcmUgc3BlY2lmaWNhbGx5IGFyb3VuZCBhZGRpbmcgYERDQUNIRV9XT1JEX0FDQ0VTU2AgKGNvbmRpdGlvbmFsbHksIGlmIG5vdCBLTVNBTiksIGludHJvZHVjaW5nIG5ldyBleGNlcHRpb24gdHlwZXMsIGltcGxlbWVudGluZyBhbiBpbmxpbmUgYGxvYWRfdW5hbGlnbmVkX3plcm9wYWRgIGZ1bmN0aW9uLCBhZGRpbmcgc3RvcmFnZSB2YXJpYWJsZSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBpbiBgdXYuY2AgYW5kIHVzaW5nIHRoZW0gaW4gS1ZNJ3MgUFYgY29kZSwgYW5kIHR3ZWFraW5nIGBkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3NgIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBmYXVsdCBoYW5kbGVyLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgdGhpbmcgKmZ1bmN0aW9uYWwqIGFuZCAqcmVhY2hhYmxlKj8gU2luY2UgdGhpcyBpcyBzMzkwLXNwZWNpZmljLCB0aGF0J3MgdGhlIGNydWNpYWwgcXVlc3Rpb24uIEl0IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIGluIEtWTSBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nIHdoZW4gZGVhbGluZyB3aXRoIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzIHdpdGggemVyby1wYWRkaW5nLiBOb3JtYWxseSwgSSB3b3VsZCB0aGluayB0d2ljZSBhYm91dCBmdXp6aW5nIGNvZGUgcGF0aHMgdGhhdCBhcmUgZGlmZmljdWx0IHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYnV0IHdhaXQsIHN5emthbGxlciAqZG9lcyogc3VwcG9ydCBzMzkweCBRRU1VLCBzbyB0aGF0IGNoYW5nZXMgdGhlIGNhbGN1bHVzLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZXhwbG9yaW5nIGJlY2F1c2UgaXQncyB0b3VjaGluZyBwcmV0dHkgY29yZSBrZXJuZWwgbG9naWMuXG5cbkkgbmVlZCB0byBuYWlsIGRvd24gZXhhY3RseSB3aGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgcmVsZXZhbnQgZm9yIGZ1enppbmcsIHNvIEknbGwgYmUgZm9jdXNpbmcgb246IGBsb2FkX3VuYWxpZ25lZF96ZXJvcGFkYCAodGhhdCBpbmxpbmUgZnVuY3Rpb24gaXMgYWx3YXlzIGEgZ29vZCB0YXJnZXQpLCBgdXZfYWxsb2Nfc3Rvcl92YXJgLCBgdXZfZnJlZV9zdG9yX3ZhcmAsIHRoZSBga3ZtX3MzOTBfcHZfKmAgZnVuY3Rpb25zLCBgZXhfaGFuZGxlcl96ZXJvcGFkYCwgYW5kIGBkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3NgLlxuXG5UaW1lIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIHRvIHNlZSB3aGF0J3MgZW5hYmxpbmcgYERDQUNIRV9XT1JEX0FDQ0VTU2AuIEknbGwgc2VlIGlmIGBTMzkwYCBpcyBzZWxlY3RpbmcgaXQuIEFuZCBJJ2xsIGRvdWJsZS1jaGVjayB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgYHV2LmNgIGFuZCBga3ZtL3B2LmNgLCBqdXN0IHRvIGdldCBhIGZ1bGxlciBwaWN0dXJlIG9mIHRoZSBjb250ZXh0IGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQyNiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjI4LjM4ODcxMDc2N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY2MjkwMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva2VybmVsL01ha2VmaWxlPTQ1PW9iai15XFx0Kz0gbm9zcGVjLWJyYW5jaC5vIGlwbF92bXBhcm0ubyBtYWNoaW5lX2tleGVjX3JlbG9jLm8gdW53aW5kX2JjLm9cXG5hcmNoL3MzOTAva2VybmVsL01ha2VmaWxlOjQ2Om9iai15XFx0Kz0gc21wLm8gdGV4dF9hbW9kZTMxLm8gc3RhY2t0cmFjZS5vIGFic19sb3djb3JlLm8gZmFjaWxpdHkubyB1di5vIHd0aS5vXFxuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS00Ny1vYmoteVxcdCs9IGRpYWcvXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjI4Ljg0NTM0NTI4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ3NjQzMzk4NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OlxuXG4qKkNvbnNpZGVyaW5nIHMzOTAgQnVpbGQgSGFiaXRzIGFuZCBLVk0vUFYuYyoqXG5cbkFscmlnaHQsIEknbSB0aGlua2luZyBhYm91dCB0aGlzIGJ1aWxkIHByb2Nlc3MuLi4gU3BlY2lmaWNhbGx5LCBJJ20gc2VlaW5nIHRoYXQgdGhlIGB1di5vYCBvYmplY3QgZmlsZSAqYWx3YXlzKiBzZWVtcyB0byBiZSBjb21waWxlZCBhbmQgYnVpbHQgc3BlY2lmaWNhbGx5IGZvciB0aGUgczM5MCBhcmNoaXRlY3R1cmUuIEl0J3MgYSBiaXQgb2YgYSBnaXZlbiBhdCB0aGlzIHBvaW50LCBidXQgaXQgdHJpZ2dlcnMgc29tZXRoaW5nIGluIHRoZSBiYWNrIG9mIG15IG1pbmQuXG5cblRoZW4gdGhlIHF1ZXN0aW9uIGhpdHMgbWU6IHdoYXQgYWJvdXQgYGt2bS9wdi5jYD8gSXMgdGhhdCBmaWxlIGFsc28gY29uc2lzdGVudGx5IGJ1aWx0IHdpdGggczM5MCBpbiBtaW5kLCBvciBhcmUgdGhlcmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZWxlbWVudHMgYXQgcGxheT8gSWYgaXQncyAqbm90KiBhbHdheXMgYW4gczM5MC1zcGVjaWZpYyBidWlsZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGRyaXZpbmcgdGhlIGRpZmZlcmVuY2UuIEFyZSB0aGVyZSBwbGF0Zm9ybS1zcGVjaWZpYyBvcHRpbWl6YXRpb25zIG9yIGFyY2hpdGVjdHVyYWwgY29uc2lkZXJhdGlvbnMgaW5oZXJlbnQgaW4gYHV2Lm9gIHRoYXQgKmFyZW4ndCogYXMgc3Ryb25nbHkgcHJlc2VudCBpbiB0aGUgS1ZNIHBhcmF2aXJ0dWFsaXphdGlvbiBjb2RlPyBPciBwZXJoYXBzIHRoZXJlIGFyZSB2ZXJ5IHNwZWNpZmljIHVzZSBjYXNlcyBmb3Igb25lIG9yIHRoZSBvdGhlcj8gVGhpcyBjb3VsZCBiZSBiZWNhdXNlIEtWTS9QViBpcyBleHBlY3RlZCB0byBiZSBtb3JlIHBvcnRhYmxlLCBidXQgVVYgbWlnaHQgaGF2ZSB2ZXJ5IHNwZWNpZmljIGZlYXR1cmVzIGZvciBzMzkwIHdoaWNoIGl0IG5lZWRzIHRvIGxldmVyYWdlLlxuRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aHkgb25lIHNlZW1zIHRvIGJlIGFuIHMzOTAgZ2l2ZW4sIGFuZCB0aGUgb3RoZXIgZG9lc24ndCBhcHBlYXIgYXMgc3VjaCBhdCBmaXJzdCBnbGFuY2UuIEl0J3MgdGltZSB0byBkaWcgZGVlcGVyIGludG8gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCB0aGUgY29kZSBpdHNlbGYgdG8gc2VlIGlmIHRoZSBhc3N1bXB0aW9ucyBob2xkLCBhbmQgdGhlIHJlYXNvbnMgd2h5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzYyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTg6NDc6NDMuNjA5Njg3MjEzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzAyOTk1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwdlxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTA9a3ZtLXkgKz0ga3ZtLXMzOTAubyBpbnRlcmNlcHQubyBpbnRlcnJ1cHQubyBwcml2Lm8gc2lncC5vXFxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZToxMTprdm0teSArPSBkaWFnLm8gZ2FjY2Vzcy5vIGd1ZXN0ZGJnLm8gdnNpZS5vIHB2Lm9cXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTEyLWt2bS15ICs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTg6NDc6NDQuMDQyNzIxMTY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyMjE4NDM4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKktWTSBDb25maWd1cmF0aW9uIGFuZCBTZWN1cmUgU3RvcmFnZSBBY2Nlc3MqKlxuXG5SaWdodCwgc28gYHB2Lm9gIGlzIGNvbnNpc3RlbnRseSBidWlsdCB3aGVuZXZlciBLVk0gaXMgYWN0aXZlLiBUaGF04oCZcyBhIGNsZWFyIGluZGljYXRpb24gdGhhdCBLVk0gaXMgdGhlIGRlY2lkaW5nIGZhY3RvciBpbiBpdHMgaW5jbHVzaW9uLiBJbiBvdGhlciB3b3JkcywgYEtWTWAgaXMgdGhlIGNvbmZpZyBvcHRpb24gdGhhdCB0cmlnZ2VycyBpdC4gV2FpdCBhIG1vbWVudCwgSSB0aGluayBJIHJlbWVtYmVyIHRoaXM6IGZvciBzMzkwLCBLVk0gaXMgZXhwbGljaXRseSBsYWJlbGVkIGFzIGBDT05GSUdfS1ZNYC4gVGhhdCBjb25maXJtcyBteSBpbml0aWFsIGFzc2Vzc21lbnQuXG5cbk5vdywgbGV0J3MgcGl2b3QgdG8gaW52ZXN0aWdhdGluZyBgZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzYC4gU3BlY2lmaWNhbGx5LCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gd2l0aGluIGBhcmNoL3MzOTAvbW0vZmF1bHQuY2AuIFRoYXQgc2VlbXMgdG8gYmUgdGhlIHJpZ2h0IHBsYWNlIHRvIGdldCBhIGRlZXBlciBsb29rIGF0IHRoZSBzZWN1cmUgc3RvcmFnZSBhY2Nlc3MgaW1wbGVtZW50YXRpb24gd2l0aGluIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI3MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjQ3Ljc2NDkwODI3N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIzODk5NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9tbS9mYXVsdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9tbS9mYXVsdC5jPTQwND1OT0tQUk9CRV9TWU1CT0woZG9fZGF0X2V4Y2VwdGlvbik7XFxuLS1cXG5hcmNoL3MzOTAvbW0vZmF1bHQuYy00MDctXFxuYXJjaC9zMzkwL21tL2ZhdWx0LmM6NDA4OnZvaWQgZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbmFyY2gvczM5MC9tbS9mYXVsdC5jLTQwOS17XFxuLS1cXG5hcmNoL3MzOTAvbW0vZmF1bHQuYy00NzMtfVxcbmFyY2gvczM5MC9tbS9mYXVsdC5jOjQ3NDpOT0tQUk9CRV9TWU1CT0woZG9fc2VjdXJlX3N0b3JhZ2VfYWNjZXNzKTtcXG5hcmNoL3MzOTAvbW0vZmF1bHQuYy00NzUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjQ3LjkwNzMwNzkzOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NjIzMjQxMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTdG9yYWdlIFZhcmlhYmxlIEFsbG9jYXRpb24gQ29kZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHRoZXNlIGNvcmUgZnVuY3Rpb25zOiBgdXZfYWxsb2Nfc3Rvcl92YXJgLCBgdXZfZnJlZV9zdG9yX3ZhcmAsIGBleF9oYW5kbGVyX3plcm9wYWRgLCBhbmQgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2AuIFRoZXNlIGFyZSB0aGUga2V5IGFyZWFzIHdoZXJlIEkgc3VzcGVjdCBtb2RpZmljYXRpb25zIG9yIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2lsbCBiZSBjcml0aWNhbC5cblxuTm93LCBmb3IgdGhlIGNvbmZpZ3MuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIG9ubHkgbGlzdCB0aG9zZSBjb25maWdzIHRoYXQgZGlyZWN0bHkgcmVsYXRlIHRvIHRoZSBjb2RlLCBhbmQgbm90IHRoZSBnZW5lcmljIHN0dWZmLiBgUzM5MGAgaXMgdGhlIGJhc2UgYXJjaGl0ZWN0dXJlLCBzbyB0aGF0J3MgaW1wbGljaXQuIEJ1dCB0aGUgcHJlc2VuY2Ugb2YgYGt2bV9zMzkwX3B2X2FsbG9jX3ZtYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgcG9pbnRzIGRpcmVjdGx5IHRvIGBLVk1gLiBUaGVyZWZvcmUsIGBLVk1gIGlzIHRoZSBjb25maWcgSSdtIG1vc3QgaW50ZXJlc3RlZCBpbiwgZ2l2ZW4gdGhlIHByZXNlbmNlIG9mIHRob3NlIHNwZWNpZmljIGZ1bmN0aW9ucy5cblxuQSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0IGBhcmNoL3MzOTAva3ZtL01ha2VmaWxlYCBpcyB0aGUgcmVsZXZhbnQgZmlsZSwgc28gYEtWTWAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gZmxhZyB0byBjb25zaWRlciBoZXJlLiBUaGF0IHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NTEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTg6NDc6NTIuNjY5NjM0NjI2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzEzNzgwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXFxcXCRcXFxcKENPTkZJR19LVk1cXFxcKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTQ9a3ZtLSQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSArPSBwY2kub1xcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX0tWTSkgKz0ga3ZtLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTg6NDc6NTIuNzUyNzc3MzMxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjExMzYzNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gcHJvY2VzcywgZXhwcmVzc2VkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczpcblxuKipDb25maWd1cmF0aW9uIEFuYWx5c2lzOiBLVk0gYW5kIEltcGxpY2l0IERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZCB3aXRoIGBDT05GSUdfS1ZNYC4gVGhhdCdzIHRoZSBiYXNlbGluZSwgdGhlIGNvcmUgb2YgdGhlIGh5cGVydmlzb3Igc3VwcG9ydC4gTm93LCB0aGUgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogY29uZmlndXJhdGlvbnMgdGllZCBpbiBvciBhZmZlY3RlZCBieSB0aGlzLlxuXG5BaGEhIEl0IGxvb2tzIGxpa2UgYERDQUNIRV9XT1JEX0FDQ0VTU2AgaXMgYXV0b21hdGljYWxseSBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgYXJjaGl0ZWN0dXJlLCB3aGljaCBpcyBgUzM5MGAsICp1bmxlc3MqIGBLTVNBTmAgaXMgKm5vdCogZW5hYmxlZC4gU28sIGluIHRoaXMgc2NlbmFyaW8gZ2l2ZW4gdGhhdCB3ZSBrbm93IGBDT05GSUdfS1ZNYCBpcyBjb25maWd1cmVkLCBgRENBQ0hFX1dPUkRfQUNDRVNTYCBpcyBpbXBsaWNpdGx5IGVuYWJsZWQgYmVjYXVzZSB3ZSBkb24ndCBrbm93IHRoZSBzdGF0ZSBvZiBgS01TQU5gLlxuXG5Ob3csIEknbSBnb2luZyB0byBzaGlmdCBnZWFycyBzbGlnaHRseSBhbmQgY2hlY2sgb24gYGV4X2hhbmRsZXJfemVyb3BhZGAgd2l0aGluIGBhcmNoL3MzOTAvbW0vZXh0YWJsZS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI4MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjU2Ljg3MzkxNzc4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ3NDUxNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXhfaGFuZGxlcl96ZXJvcGFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9tbS9leHRhYmxlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL21tL2V4dGFibGUuYz0zOT1zdGF0aWMgYm9vbCBleF9oYW5kbGVyX3VhX2xvYWRfcmVnKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LFxcbi0tXFxuYXJjaC9zMzkwL21tL2V4dGFibGUuYy01Mi1cXG5hcmNoL3MzOTAvbW0vZXh0YWJsZS5jOjUzOnN0YXRpYyBib29sIGV4X2hhbmRsZXJfemVyb3BhZChjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuYXJjaC9zMzkwL21tL2V4dGFibGUuYy01NC17XFxuLS1cXG5hcmNoL3MzOTAvbW0vZXh0YWJsZS5jPTExOT1ib29sIGZpeHVwX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmFyY2gvczM5MC9tbS9leHRhYmxlLmMtMTM3LVxcdGNhc2UgRVhfVFlQRV9aRVJPUEFEOlxcbmFyY2gvczM5MC9tbS9leHRhYmxlLmM6MTM4OlxcdFxcdHJldHVybiBleF9oYW5kbGVyX3plcm9wYWQoZXgsIHJlZ3MpO1xcbmFyY2gvczM5MC9tbS9leHRhYmxlLmMtMTM5LVxcdGNhc2UgRVhfVFlQRV9GUEM6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ3OjU2Ljk1ODY2ODExMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODM4OTczODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQgSSdtIGxvb2tpbmcgYXQsIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKlByaW9yaXRpemluZyBDb2RlIEFuYWx5c2lzOiBLZXkgRnVuY3Rpb25zIGZvciBEZWVwIERpdmUqKlxuXG5SaWdodCwgc28gSSdtIGhvbmluZyBpbiBvbiBzcGVjaWZpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgY29kZWJhc2UuIEl0J3MgY2xlYXIgdGhhdCB0aGVzZSBhcmUgdGhlIG9uZXMgdG8gc2NydXRpbml6ZSBtb3N0IGNsb3NlbHkuIE15IHByaW1hcnkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb246IGB1dl9hbGxvY19zdG9yX3ZhcmAgYW5kIGB1dl9mcmVlX3N0b3JfdmFyYCDigJMgdGhlc2UgYXJlIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHN0b3JhZ2UgdmFyaWFibGVzIGFyZSBhbGxvY2F0ZWQgYW5kIGRlYWxsb2NhdGVkLiBUaGF0J3MgYSBjbGFzc2ljIGFyZWEgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3Mgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBOZXh0IHVwLCBgZXhfaGFuZGxlcl96ZXJvcGFkYCBpcyBpbnRlcmVzdGluZzsgemVyby1wYWRkaW5nIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gaW52b2x2ZWQgaW4gc2Vuc2l0aXZlIGRhdGEgaGFuZGxpbmcsIGFuZCBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgb25lIGlzIGltcGxlbWVudGVkIGNvcnJlY3RseSwgaW5jbHVkaW5nIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBwYWRkaW5nIG9yYWNsZSBhdHRhY2sgdmVjdG9ycy4gTW92aW5nIG9uIHRvIHNlY3VyZSBzdG9yYWdlIGFjY2VzcywgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2AgaXMgb2J2aW91c2x5IGNyaXRpY2FsOyBhbnkgZmxhdyBoZXJlIGNvdWxkIGNvbXByb21pc2UgdGhlIGVudGlyZSBzeXN0ZW0ncyBzZWN1cml0eSBwb3N0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYWNjZXNzIGNvbnRyb2wgbWVjaGFuaXNtcywgZW5jcnlwdGlvbiwgYW5kIGF1dGhlbnRpY2F0aW9uIGludm9sdmVkLiBGaW5hbGx5LCB0aGUgS1ZNL3MzOTAgdmlydHVhbGl6YXRpb24gc3BlY2lmaWMgZnVuY3Rpb25zIGBrdm1fczM5MF9wdl9hbGxvY192bWAgYW5kIGBrdm1fczM5MF9wdl9kZWFsbG9jX3ZtYCBsb29rIGxpa2Uga2V5IHBpZWNlcyBmb3IgbWFuYWdpbmcgdmlydHVhbCBtYWNoaW5lIHJlc291cmNlcy4gSSdsbCBuZWVkIHRvIGV4cGxvcmUgdGhlc2UgaW4gY29udGV4dCB0byBjb25maXJtIHdoZXRoZXIgdGhlcmUgYXJlIGlzc3VlcyBoZXJlIHJlbGF0ZWQgdG8gcmVzb3VyY2UgZXhoYXVzdGlvbiwgb3IgYW55IHNlY3VyaXR5IGNvbmNlcm5zLlxuXG5JJ3ZlIGFsc28gbm90aWNlZCBhIGNvdXBsZSBvZiBhZGRpdGlvbmFsIGZ1bmN0aW9ucyB0aGF0IHdhcnJhbnQgZnVydGhlciBpbnZlc3RpZ2F0aW9uOiBgdXZfZnJlZV9yYW5nZV9jYmAgYW5kIGB1dl9hbGxvY19yYW5nZV9jYmAuIFRoZXNlICpjb3VsZCogYmUgaW52b2x2ZWQgaW4gc2ltaWxhciBtZW1vcnkgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24gdGFza3MgYXMgdGhlIGluaXRpYWwgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODc5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjQ4OjAxLjc5NzY0NDQ0NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4NDU2NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInV2X2ZyZWVfcmFuZ2VfY2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2tlcm5lbC91di5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rZXJuZWwvdXYuYz0yMDc9aW50IHV2X2NvbnZlcnRfZnJvbV9zZWN1cmVfcHRlKHB0ZV90IHB0ZSlcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvdXYuYy0yMTItXFxuYXJjaC9zMzkwL2tlcm5lbC91di5jOjIxMzpzdGF0aWMgaW50IHV2X2ZyZWVfcmFuZ2VfY2IocHRlX3QgKnB0ZXAsIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqZGF0YSlcXG5hcmNoL3MzOTAva2VybmVsL3V2LmMtMjE0LXtcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvdXYuYz0yMjM9dm9pZCB1dl9mcmVlX3N0b3JfdmFyKHZvaWQgKnN0b3JfdmFyKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC91di5jLTIzNC1cXHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYXJlYS1cXHUwMDNlYWRkcjtcXG5hcmNoL3MzOTAva2VybmVsL3V2LmM6MjM1OlxcdGFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2UoXFx1MDAyNmluaXRfbW0sIGFkZHIsIHNpemUsIHV2X2ZyZWVfcmFuZ2VfY2IsIE5VTEwpO1xcbmFyY2gvczM5MC9rZXJuZWwvdXYuYy0yMzYtXFx0ZnJlZV92bV9hcmVhKGFyZWEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxODo0ODowMS45MjYxMDU5MDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM4OTgzOTQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgaGVyZSdzIHRoZSBicmVha2Rvd24uIEkgc2VlIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBjaGFuZ2VzIHRoYXQgYXJlIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4gVGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGFyZSBgdXZfZnJlZV9yYW5nZV9jYmAgYW5kIGB1dl9hbGxvY19yYW5nZV9jYmAgLSB0aGUgbWVtb3J5IGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIGNhbGxiYWNrcyBhcmUgYWx3YXlzIGNyaXRpY2FsIGFyZWFzIHRvIGV4cGxvcmUgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cbkxldCdzIHN1bW1hcml6ZSBteSBhbmFseXNpczpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIEFic29sdXRlbHkuXG4qICAgKipGb2N1cyBTeW1ib2xzOioqIFdlIG5lZWQgdG8gcHJpb3JpdGl6ZSB0aGVzZSBzeW1ib2xzIHdoZW4gc2V0dGluZyB1cCB0aGUgZnV6emluZyBjYW1wYWlnbjpcbiAgICAqICAgYHV2X2FsbG9jX3N0b3JfdmFyYFxuICAgICogICBgdXZfZnJlZV9zdG9yX3ZhcmBcbiAgICAqICAgYHV2X2FsbG9jX3JhbmdlX2NiYFxuICAgICogICBgdXZfZnJlZV9yYW5nZV9jYmBcbiAgICAqICAgYGV4X2hhbmRsZXJfemVyb3BhZGBcbiAgICAqICAgYGRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc2BcbiAgICAqICAgYGt2bV9zMzkwX3B2X2FsbG9jX3ZtYFxuICAgICogICBga3ZtX3MzOTBfcHZfZGVhbGxvY192bWBcblxuKiAgICoqRW5hYmxlIENvbmZpZ3VyYXRpb25zOioqIFRoZSBgS1ZNYCBjb25maWd1cmF0aW9uIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgZnV6emluZyBjYW1wYWlnbiwgYXMgdGhlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gdGhhdCBzdWJzeXN0ZW0uXG5cbiogICAqKlJlYXNvbmluZzoqKiBUaGlzIHBhdGNoIGRpZ3MgaW50byBzMzkwIGFyY2hpdGVjdHVyZSBzcGVjaWZpY3MsIHdoaWNoIGFsd2F5cyBwaXF1ZSBteSBpbnRlcmVzdC4gSSBzZWUgZnVuY3Rpb25hbGl0eSB0aGF0IHNwZWNpZmljYWxseSByZWxhdGVzIHRvIHVuYWxpZ25lZCB3b3JkIGxvYWRzIHdpdGggemVybyBwYWRkaW5nLCBhbmQgUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIG1lbW9yeSBtYW5hZ2VtZW50LCB3aGljaCwgZnJvbSBhbiBhdHRhY2sgc3VyZmFjZSBwb2ludCBvZiB2aWV3LCBpcyBhIGhpZ2gtdmFsdWUgdGFyZ2V0LiBUaGVzZSBtb2RpZmljYXRpb25zIHRvdWNoIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBleGNlcHRpb24gaGFuZGxpbmcsIGFuZCB0aG9zZSBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgdW5jb3ZlcmluZyBtZW1vcnkgc2FmZXR5IGJ1Z3Mgb3IgY29ycmVjdG5lc3MgaXNzdWVzIHRocm91Z2ggZnV6emluZy4gVGhlIGludGVycGxheSBvZiBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nIGlzIGEgY2xhc3NpYyByZWNpcGUgZm9yIHZ1bG5lcmFiaWxpdHkuIEl0J3MgdGltZSB0byBzZXQgdXAgdGhlIGZ1enplcnMgYW5kIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjU1LCJPdXRwdXRUb2tlbnMiOjIyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxODo0ODowOC4zMTU5NDc4ODhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU3MzQ2NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInV2X2FsbG9jX3N0b3JfdmFyXCIsXG4gICAgXCJ1dl9mcmVlX3N0b3JfdmFyXCIsXG4gICAgXCJ1dl9hbGxvY19yYW5nZV9jYlwiLFxuICAgIFwidXZfZnJlZV9yYW5nZV9jYlwiLFxuICAgIFwiZXhfaGFuZGxlcl96ZXJvcGFkXCIsXG4gICAgXCJkb19zZWN1cmVfc3RvcmFnZV9hY2Nlc3NcIixcbiAgICBcImt2bV9zMzkwX3B2X2FsbG9jX3ZtXCIsXG4gICAgXCJrdm1fczM5MF9wdl9kZWFsbG9jX3ZtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gczM5MCBhcmNoaXRlY3R1cmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9mIHVuYWxpZ25lZCB3b3JkIGxvYWRzIHdpdGggemVybyBwYWRkaW5nIChgbG9hZF91bmFsaWduZWRfemVyb3BhZGAsIGBleF9oYW5kbGVyX3plcm9wYWRgKSwgYW5kIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBLVk0gUHJvdGVjdGVkIFZpcnR1YWxpemF0aW9uIChgdXZfYWxsb2Nfc3Rvcl92YXJgLCBgdXZfZnJlZV9zdG9yX3ZhcmApLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZywgd2hpY2ggc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IHNhZmV0eSBhbmQgY29ycmVjdG5lc3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXZfYWxsb2Nfc3Rvcl92YXJcIixcbiAgICBcInV2X2ZyZWVfc3Rvcl92YXJcIixcbiAgICBcInV2X2FsbG9jX3JhbmdlX2NiXCIsXG4gICAgXCJ1dl9mcmVlX3JhbmdlX2NiXCIsXG4gICAgXCJleF9oYW5kbGVyX3plcm9wYWRcIixcbiAgICBcImRvX3NlY3VyZV9zdG9yYWdlX2FjY2Vzc1wiLFxuICAgIFwia3ZtX3MzOTBfcHZfYWxsb2Nfdm1cIixcbiAgICBcImt2bV9zMzkwX3B2X2RlYWxsb2Nfdm1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBzMzkwIGFyY2hpdGVjdHVyZSBjb2RlLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgb2YgdW5hbGlnbmVkIHdvcmQgbG9hZHMgd2l0aCB6ZXJvIHBhZGRpbmcgKGBsb2FkX3VuYWxpZ25lZF96ZXJvcGFkYCwgYGV4X2hhbmRsZXJfemVyb3BhZGApLCBhbmQgbWVtb3J5IGFsbG9jYXRpb24gZm9yIEtWTSBQcm90ZWN0ZWQgVmlydHVhbGl6YXRpb24gKGB1dl9hbGxvY19zdG9yX3ZhcmAsIGB1dl9mcmVlX3N0b3JfdmFyYCkuIFRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLCB3aGljaCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0bmVzcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow65l68[1] Phase: Succeeded StartedAt: 2026-07-16 18:48:20 +0000 UTC FinishedAt: 2026-07-16 18:48:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-16 18:48:20 +0000 UTC FinishedAt: 2026-07-16 18:48:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2] Phase: Succeeded StartedAt: 2026-07-16 18:48:20 +0000 UTC FinishedAt: 2026-07-16 19:56:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-16 18:48:20 +0000 UTC FinishedAt: 2026-07-16 19:56:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-16 18:48:20 +0000 UTC FinishedAt: 2026-07-16 18:48:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-16 18:48:20 +0000 UTC FinishedAt: 2026-07-16 18:48:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflow65l68/series-workflow65l68-convert-artifact-2029302699/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-16 18:48:41 +0000 UTC FinishedAt: 2026-07-16 19:19:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-16 18:48:41 +0000 UTC FinishedAt: 2026-07-16 19:19:51 +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:*9e7b2c7f-95f5-4ddc-a4d4-bdd205d55df0,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-workflow65l68/series-workflow65l68-convert-artifact-2029302699/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": "6ba1368f-7660-4050-8843-41c54302c3fc", "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-workflow65l68/series-workflow65l68-build-action-3108521129/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-16 18:48:41 +0000 UTC FinishedAt: 2026-07-16 19:19:41 +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:*9e7b2c7f-95f5-4ddc-a4d4-bdd205d55df0,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-workflow65l68/series-workflow65l68-convert-artifact-2029302699/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": "6ba1368f-7660-4050-8843-41c54302c3fc", "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-workflow65l68/series-workflow65l68-build-action-3108521129/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-16 19:19:51 +0000 UTC FinishedAt: 2026-07-16 19:19:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-16 19:19:51 +0000 UTC FinishedAt: 2026-07-16 19:19:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-16 19:19:51 +0000 UTC FinishedAt: 2026-07-16 19:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-16 19:19:51 +0000 UTC FinishedAt: 2026-07-16 19:19:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflow65l68/series-workflow65l68-convert-artifact-3739299458/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-16 19:20:01 +0000 UTC FinishedAt: 2026-07-16 19:22:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-16 19:20:01 +0000 UTC FinishedAt: 2026-07-16 19:21:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6ba1368f-7660-4050-8843-41c54302c3fc,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-workflow65l68/series-workflow65l68-build-action-3108521129/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-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-16 19:22:03 +0000 UTC FinishedAt: 2026-07-16 19:22:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-16 19:22:03 +0000 UTC FinishedAt: 2026-07-16 19:22:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-16 19:22:03 +0000 UTC FinishedAt: 2026-07-16 19:51:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-16 19:22:03 +0000 UTC FinishedAt: 2026-07-16 19:51:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9e7b2c7f-95f5-4ddc-a4d4-bdd205d55df0,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-workflow65l68/series-workflow65l68-convert-artifact-3739299458/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": "d4a3819b-b138-4f9f-850b-ac5140f002fd", "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-workflow65l68/series-workflow65l68-build-action-605362390/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-16 19:22:03 +0000 UTC FinishedAt: 2026-07-16 19:51:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9e7b2c7f-95f5-4ddc-a4d4-bdd205d55df0,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-workflow65l68/series-workflow65l68-convert-artifact-3739299458/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": "d4a3819b-b138-4f9f-850b-ac5140f002fd", "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-workflow65l68/series-workflow65l68-build-action-605362390/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-16 19:51:29 +0000 UTC FinishedAt: 2026-07-16 19:51:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-16 19:51:29 +0000 UTC FinishedAt: 2026-07-16 19:51:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-16 19:51:29 +0000 UTC FinishedAt: 2026-07-16 19:53:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-16 19:51:29 +0000 UTC FinishedAt: 2026-07-16 19:53:22 +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:*d4a3819b-b138-4f9f-850b-ac5140f002fd,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-workflow65l68/series-workflow65l68-build-action-605362390/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-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-16 19:53:32 +0000 UTC FinishedAt: 2026-07-16 19:56:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-16 19:53:32 +0000 UTC FinishedAt: 2026-07-16 19:56:26 +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":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"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:*6ba1368f-7660-4050-8843-41c54302c3fc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d4a3819b-b138-4f9f-850b-ac5140f002fd,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-workflow65l68/series-workflow65l68-build-action-3108521129/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-workflow65l68/series-workflow65l68-build-action-605362390/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-16 19:53:32 +0000 UTC FinishedAt: 2026-07-16 19:53:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-16 19:53:32 +0000 UTC FinishedAt: 2026-07-16 19:53:37 +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":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"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-workflow65l68/series-workflow65l68-convert-artifact-3597346743/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-16 19:53:32 +0000 UTC FinishedAt: 2026-07-16 19:53:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-16 19:53:32 +0000 UTC FinishedAt: 2026-07-16 19:53:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-16 19:53:32 +0000 UTC FinishedAt: 2026-07-16 19:53:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-16 19:53:42 +0000 UTC FinishedAt: 2026-07-16 19:56:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65l68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["uv_alloc_stor_var","uv_free_stor_var","uv_alloc_range_cb","uv_free_range_cb","ex_handler_zeropad","do_secure_storage_access","kvm_s390_pv_alloc_vm","kvm_s390_pv_dealloc_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"820cd291-53df-4765-b17e-9645f26a7f4d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-16 19:53:42 +0000 UTC FinishedAt: 2026-07-16 19:56:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6ba1368f-7660-4050-8843-41c54302c3fc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d4a3819b-b138-4f9f-850b-ac5140f002fd,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-workflow65l68/series-workflow65l68-build-action-3108521129/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-workflow65l68/series-workflow65l68-build-action-605362390/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-workflow65l68/series-workflow65l68-convert-artifact-3597346743/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,}