Name: series-workflowzrdfq Phase: Succeeded StartedAt: 2026-07-30 00:17:47 +0000 UTC FinishedAt: 2026-07-30 03:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[0] Phase: Succeeded StartedAt: 2026-07-30 00:17:47 +0000 UTC FinishedAt: 2026-07-30 00:22:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 00:17:47 +0000 UTC FinishedAt: 2026-07-30 00:22:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "ae98967f6e94c2239d81795f9f6c987add5518c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLB_PAGE", "MEMORY_FAILURE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "ae98967f6e94c2239d81795f9f6c987add5518c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLB_PAGE", "MEMORY_FAILURE" ], "series_id": "8fbdcfba-9b2b-4029-aa4e-29193d3aac67" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "remove_hugetlb_folio", "update_and_free_hugetlb_folio", "dissolve_free_hugetlb_folio", "alloc_and_dissolve_hugetlb_folio", "free_huge_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7LAogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlbW92ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2Rpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDtmcmVlX2h1Z2VfZm9saW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIGNsZWFyaW5nIHRoZSBodWdldGxiIGZsYWcgZnJvbSBhIGZvbGlvLiBJdCBpbnRyb2R1Y2VzIGBmb2xpb19jbGVhcl9odWdldGxiYCB3aGljaCBhbHNvIGNsZWFycyB0aGUgaHdwb2lzb24gZmxhZyBpZiBpdCYjMzk7cyBzZXQsIG1vdmluZyBpdCB0byB0aGUgZXJyb3IgcGFnZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGh1Z2V0bGIgcGFnZSBmcmVlaW5nIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4gSXQgYWZmZWN0cyBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3JgLiBUaGUgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBgSFVHRVRMQl9QQUdFYCBhbmQgYE1FTU9SWV9GQUlMVVJFYCBhcmUgcmVxdWlyZWQgdG8gdGVzdCB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDoyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU3OTg1N2Y0ODUwM2Q5YzRiZTY5Y2ZhMWY2MjNiZGVkNTZmMmJlM2FcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAzMCAwMDoyMToyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmNcbmluZGV4IGE3N2MzYzFjYjg5NDMuLjMxZWRiNzhmMDkzMDQgMTAwNjQ0XG4tLS0gYS9tbS9odWdldGxiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2V0bGIuY1xuQEAgLTEzNzAsNiAmIzQzOzEzNzAsMTggQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssIGludFxuIH1cbiAjZW5kaWZcbiBcbiYjNDM7c3RhdGljIHZvaWQgZm9saW9fY2xlYXJfaHVnZXRsYihzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuJiM0Mzt7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBNb3ZlIEhXUG9pc29uIGZsYWcgdG8gZWFjaCBlcnJvciBwYWdlXG4mIzQzO1x0ICogd2hpY2ggbWFrZXMgYW55IGhlYWx0aHkgcGFnZXMgcmV1c2FibGUuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHVubGlrZWx5KGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8pKSlcbiYjNDM7XHRcdGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pO1xuJiM0MztcbiYjNDM7XHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xuJiM0Mzt9XG4mIzQzO1xuIC8qXG4gICogUmVtb3ZlIGh1Z2V0bGIgZm9saW8gZnJvbSBsaXN0cy5cbiAgKiBJZiB2bWVtbWFwIGV4aXN0cyBmb3IgdGhlIGZvbGlvLCBjbGVhciB0aGUgaHVnZXRsYiBmbGFnIHNvIHRoYXQgdGhlXG5AQCAtMTQwOCw3ICYjNDM7MTQyMCw3IEBAIHZvaWQgcmVtb3ZlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdCAqIHRvIHRhaWwgc3RydWN0IHBhZ2VzLlxuIFx0ICovXG4gXHRpZiAoIWZvbGlvX3Rlc3RfaHVnZXRsYl92bWVtbWFwX29wdGltaXplZChmb2xpbykpXG4tXHRcdF9fZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4mIzQzO1x0XHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbiBcbiBcdGgtXHUwMDNlbnJfaHVnZV9wYWdlcy0tO1xuIFx0aC1cdTAwM2Vucl9odWdlX3BhZ2VzX25vZGVbbmlkXS0tO1xuQEAgLTE0ODIsMTcgJiM0MzsxNDk0LDEwIEBAIHN0YXRpYyB2b2lkIF9fdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbiBcdCAqL1xuIFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpIHtcbiBcdFx0c3Bpbl9sb2NrX2lycShcdTAwMjZodWdldGxiX2xvY2spO1xuLVx0XHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xuJiM0MztcdFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4gXHRcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZodWdldGxiX2xvY2spO1xuIFx0fVxuIFxuLVx0Lypcbi1cdCAqIE1vdmUgUGFnZUhXUG9pc29uIGZsYWcgZnJvbSBoZWFkIHBhZ2UgdG8gdGhlIHJhdyBlcnJvciBwYWdlcyxcbi1cdCAqIHdoaWNoIG1ha2VzIGFueSBoZWFsdGh5IHN1YnBhZ2VzIHJldXNhYmxlLlxuLVx0ICovXG4tXHRpZiAodW5saWtlbHkoZm9saW9fdGVzdF9od3BvaXNvbihmb2xpbykpKVxuLVx0XHRmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKGZvbGlvKTtcbi1cbiBcdFZNX0JVR19PTl9GT0xJTyhmb2xpb19yZWZfY291bnQoZm9saW8pLCBmb2xpbyk7XG4gXHRpZiAoZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpXG4gXHRcdGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKGZvbGlvKTtcbkBAIC0xNTg0LDcgJiM0MzsxNTg5LDcgQEAgc3RhdGljIHZvaWQgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCxcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGZvbGlvLCB0X2ZvbGlvLCBub25faHZvX2ZvbGlvcywgbHJ1KSB7XG4gXHRcdFx0bGlzdF9kZWwoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1KTtcbiBcdFx0XHRzcGluX2xvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4tXHRcdFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbiYjNDM7XHRcdFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4gXHRcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4gXHRcdFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGZhbHNlKTtcbiBcdFx0XHRjb25kX3Jlc2NoZWQoKTtcbkBAIC0xNjA5LDcgJiM0MzsxNjE0LDcgQEAgc3RhdGljIHZvaWQgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCxcbiBcdFx0XHR9IGVsc2Uge1xuIFx0XHRcdFx0bGlzdF9kZWwoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1KTtcbiBcdFx0XHRcdHNwaW5fbG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbi1cdFx0XHRcdF9fZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4mIzQzO1x0XHRcdFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4gXHRcdFx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbiBcdFx0XHRcdHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XG4gXHRcdFx0XHRjb25kX3Jlc2NoZWQoKTtcbkBAIC0xNjQyLDE0ICYjNDM7MTY0NywxNCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfYW5kX2ZyZWVfcGFnZXNfYnVsayhzdHJ1Y3QgaHN0YXRlICpoLFxuIFx0ICogc2hvdWxkIG9ubHkgYmUgcGFnZXMgb24gdGhlIG5vbl9odm9fZm9saW9zIGxpc3QuXG4gXHQgKiBEbyBub3RlIHRoYXQgdGhlIG5vbl9odm9fZm9saW9zIGxpc3QgY291bGQgYmUgZW1wdHkuXG4gXHQgKiBXaXRob3V0IEhWTyBlbmFibGVkLCByZXQgd2lsbCBiZSAwIGFuZCB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGxcbi1cdCAqIF9fZm9saW9fY2xlYXJfaHVnZXRsYiBhcyB0aGlzIHdhcyBkb25lIHByZXZpb3VzbHkuXG4mIzQzO1x0ICogZm9saW9fY2xlYXJfaHVnZXRsYiBhcyB0aGlzIHdhcyBkb25lIHByZXZpb3VzbHkuXG4gXHQgKi9cbiBcdFZNX1dBUk5fT04oIWxpc3RfZW1wdHkoZm9saW9fbGlzdCkpO1xuIFx0Vk1fV0FSTl9PTihyZXQgXHUwMDNjIDApO1xuIFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNm5vbl9odm9fZm9saW9zKSBcdTAwMjZcdTAwMjYgcmV0KSB7XG4gXHRcdHNwaW5fbG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShmb2xpbywgXHUwMDI2bm9uX2h2b19mb2xpb3MsIGxydSlcbi1cdFx0XHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xuJiM0MztcdFx0XHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbiBcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7LAogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlbW92ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2Rpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDtmcmVlX2h1Z2VfZm9saW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIGNsZWFyaW5nIHRoZSBodWdldGxiIGZsYWcgZnJvbSBhIGZvbGlvLiBJdCBpbnRyb2R1Y2VzIGBmb2xpb19jbGVhcl9odWdldGxiYCB3aGljaCBhbHNvIGNsZWFycyB0aGUgaHdwb2lzb24gZmxhZyBpZiBpdCYjMzk7cyBzZXQsIG1vdmluZyBpdCB0byB0aGUgZXJyb3IgcGFnZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGh1Z2V0bGIgcGFnZSBmcmVlaW5nIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4gSXQgYWZmZWN0cyBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3JgLiBUaGUgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBgSFVHRVRMQl9QQUdFYCBhbmQgYE1FTU9SWV9GQUlMVVJFYCBhcmUgcmVxdWlyZWQgdG8gdGVzdCB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU3OTg1N2Y0ODUwM2Q5YzRiZTY5Y2ZhMWY2MjNiZGVkNTZmMmJlM2EKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAzMCAwMDoyMToyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuYwppbmRleCBhNzdjM2MxY2I4OTQzLi4zMWVkYjc4ZjA5MzA0IDEwMDY0NAotLS0gYS9tbS9odWdldGxiLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZXRsYi5jCkBAIC0xMzcwLDYgJiM0MzsxMzcwLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLCBpbnQKIH0KICNlbmRpZgogCiYjNDM7c3RhdGljIHZvaWQgZm9saW9fY2xlYXJfaHVnZXRsYihzdHJ1Y3QgZm9saW8gKmZvbGlvKQomIzQzO3sKJiM0MzsJLyoKJiM0MzsJICogTW92ZSBIV1BvaXNvbiBmbGFnIHRvIGVhY2ggZXJyb3IgcGFnZQomIzQzOwkgKiB3aGljaCBtYWtlcyBhbnkgaGVhbHRoeSBwYWdlcyByZXVzYWJsZS4KJiM0MzsJICovCiYjNDM7CWlmICh1bmxpa2VseShmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSkpCiYjNDM7CQlmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKGZvbGlvKTsKJiM0MzsKJiM0MzsJX19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTsKJiM0Mzt9CiYjNDM7CiAvKgogICogUmVtb3ZlIGh1Z2V0bGIgZm9saW8gZnJvbSBsaXN0cy4KICAqIElmIHZtZW1tYXAgZXhpc3RzIGZvciB0aGUgZm9saW8sIGNsZWFyIHRoZSBodWdldGxiIGZsYWcgc28gdGhhdCB0aGUKQEAgLTE0MDgsNyAmIzQzOzE0MjAsNyBAQCB2b2lkIHJlbW92ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8sCiAJICogdG8gdGFpbCBzdHJ1Y3QgcGFnZXMuCiAJICovCiAJaWYgKCFmb2xpb190ZXN0X2h1Z2V0bGJfdm1lbW1hcF9vcHRpbWl6ZWQoZm9saW8pKQotCQlfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pOwomIzQzOwkJZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7CiAKIAloLSZndDtucl9odWdlX3BhZ2VzLS07CiAJaC0mZ3Q7bnJfaHVnZV9wYWdlc19ub2RlW25pZF0tLTsKQEAgLTE0ODIsMTcgJiM0MzsxNDk0LDEwIEBAIHN0YXRpYyB2b2lkIF9fdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCwKIAkgKi8KIAlpZiAoZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSkgewogCQlzcGluX2xvY2tfaXJxKCZhbXA7aHVnZXRsYl9sb2NrKTsKLQkJX19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTsKJiM0MzsJCWZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pOwogCQlzcGluX3VubG9ja19pcnEoJmFtcDtodWdldGxiX2xvY2spOwogCX0KIAotCS8qCi0JICogTW92ZSBQYWdlSFdQb2lzb24gZmxhZyBmcm9tIGhlYWQgcGFnZSB0byB0aGUgcmF3IGVycm9yIHBhZ2VzLAotCSAqIHdoaWNoIG1ha2VzIGFueSBoZWFsdGh5IHN1YnBhZ2VzIHJldXNhYmxlLgotCSAqLwotCWlmICh1bmxpa2VseShmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSkpCi0JCWZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pOwotCiAJVk1fQlVHX09OX0ZPTElPKGZvbGlvX3JlZl9jb3VudChmb2xpbyksIGZvbGlvKTsKIAlpZiAoZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpCiAJCWh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKGZvbGlvKTsKQEAgLTE1ODQsNyAmIzQzOzE1ODksNyBAQCBzdGF0aWMgdm9pZCBidWxrX3ZtZW1tYXBfcmVzdG9yZV9lcnJvcihzdHJ1Y3QgaHN0YXRlICpoLAogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZm9saW8sIHRfZm9saW8sIG5vbl9odm9fZm9saW9zLCBscnUpIHsKIAkJCWxpc3RfZGVsKCZhbXA7Zm9saW8tJmd0O2xydSk7CiAJCQlzcGluX2xvY2tfaXJxKCZhbXA7aHVnZXRsYl9sb2NrKTsKLQkJCV9fZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7CiYjNDM7CQkJZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7CiAJCQlzcGluX3VubG9ja19pcnEoJmFtcDtodWdldGxiX2xvY2spOwogCQkJdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGZhbHNlKTsKIAkJCWNvbmRfcmVzY2hlZCgpOwpAQCAtMTYwOSw3ICYjNDM7MTYxNCw3IEBAIHN0YXRpYyB2b2lkIGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yKHN0cnVjdCBoc3RhdGUgKmgsCiAJCQl9IGVsc2UgewogCQkJCWxpc3RfZGVsKCZhbXA7Zm9saW8tJmd0O2xydSk7CiAJCQkJc3Bpbl9sb2NrX2lycSgmYW1wO2h1Z2V0bGJfbG9jayk7Ci0JCQkJX19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTsKJiM0MzsJCQkJZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7CiAJCQkJc3Bpbl91bmxvY2tfaXJxKCZhbXA7aHVnZXRsYl9sb2NrKTsKIAkJCQl1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpOwogCQkJCWNvbmRfcmVzY2hlZCgpOwpAQCAtMTY0MiwxNCAmIzQzOzE2NDcsMTQgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2FuZF9mcmVlX3BhZ2VzX2J1bGsoc3RydWN0IGhzdGF0ZSAqaCwKIAkgKiBzaG91bGQgb25seSBiZSBwYWdlcyBvbiB0aGUgbm9uX2h2b19mb2xpb3MgbGlzdC4KIAkgKiBEbyBub3RlIHRoYXQgdGhlIG5vbl9odm9fZm9saW9zIGxpc3QgY291bGQgYmUgZW1wdHkuCiAJICogV2l0aG91dCBIVk8gZW5hYmxlZCwgcmV0IHdpbGwgYmUgMCBhbmQgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsCi0JICogX19mb2xpb19jbGVhcl9odWdldGxiIGFzIHRoaXMgd2FzIGRvbmUgcHJldmlvdXNseS4KJiM0MzsJICogZm9saW9fY2xlYXJfaHVnZXRsYiBhcyB0aGlzIHdhcyBkb25lIHByZXZpb3VzbHkuCiAJICovCiAJVk1fV0FSTl9PTighbGlzdF9lbXB0eShmb2xpb19saXN0KSk7CiAJVk1fV0FSTl9PTihyZXQgJmx0OyAwKTsKIAlpZiAoIWxpc3RfZW1wdHkoJmFtcDtub25faHZvX2ZvbGlvcykgJmFtcDsmYW1wOyByZXQpIHsKIAkJc3Bpbl9sb2NrX2lycSgmYW1wO2h1Z2V0bGJfbG9jayk7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoZm9saW8sICZhbXA7bm9uX2h2b19mb2xpb3MsIGxydSkKLQkJCV9fZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7CiYjNDM7CQkJZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7CiAJCXNwaW5fdW5sb2NrX2lycSgmYW1wO2h1Z2V0bGJfbG9jayk7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgSHVnZXRsYiBhbmQgSGFyZHdhcmUgUG9pc29uaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYG1tL2h1Z2V0bGIuY2AuIEl0IHNlZW1zIHRoZXkmIzM5O3JlIG1ha2luZyBhIHByZXR0eSB0YXJnZXRlZCBtb2RpZmljYXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgaGFuZGxpbmcgaGFyZHdhcmUgcG9pc29uaW5nIHdpdGhpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0uCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGlzIG5ldyBmdW5jdGlvbiwgYGZvbGlvX2NsZWFyX2h1Z2V0bGIoc3RydWN0IGZvbGlvICpmb2xpbylgLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBhIHdyYXBwZXIuIElmIGBmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKWAgcmV0dXJucyB0cnVlLCBpdCBjYWxscyBgZm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbihmb2xpbylgLiBBZnRlciB0aGF0IGl0IGNhbGxzIGBfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pYC4gVGhlIGltcG9ydGFudCB0aGluZyBpcyB0aGF0IHNldmVyYWwgZXhpc3RpbmcgY2FsbHMgdG8gYF9fZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbylgIGFyZSBiZWluZyAqcmVwbGFjZWQqIHdpdGggdGhpcyBuZXcgd3JhcHBlciwgYGZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pYC4KClRoZXkgYWxzbyBzZWVtIHRvIGJlIGNsZWFuaW5nIHRoaW5ncyB1cCBpbiBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIHJlbW92aW5nIGEgZHVwbGljYXRlIGNhbGwgdG8gYGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pYC4gTWFrZXMgc2Vuc2UsIGJlY2F1c2UgdGhlIG5ldyBmdW5jdGlvbiBjYWxsIGNvdmVycyB0aGF0IG5vdy4KClRoaXMgaXMgYWxsIGNsZWFybHkgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGh1Z2V0bGIgYW5kIGh3cG9pc29uLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtJcyB0aGlzIGZ1enphYmxlPyYjMzQ7IFRoZSBhbnN3ZXIgaXMgeWVzLCBnaXZlbiB0aGUgYXJlYSBvZiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgaHVnZXRsYi4gVGltZSB0byBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLgoKSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zIGluIHJlbGF0aW9uIHRvIGBodWdldGxiYC4gYENPTkZJR19IVUdFVExCX1BBR0VgIGlzIHRoZSBvYnZpb3VzIG9uZSwgYW5kIEkgc2hvdWxkIHNjYW4gYG1tL2h1Z2V0bGIuY2AgdG8gaWRlbnRpZnkgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz02OTI9Y29uZmlnIEFSQ0hfSEFTX1BNRF9TT0ZUTEVBVkVTXG4tLVxubW0vS2NvbmZpZy02OTQtXG5tbS9LY29uZmlnOjY5NTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEVcbm1tL0tjb25maWctNjk2LVx0ZGVmX2Jvb2wgblxuLS1cbm1tL0tjb25maWctNjk4LVx0ICBBbGxvd3MgdGhlIHBhZ2VibG9ja19vcmRlciB2YWx1ZSB0byBiZSBkeW5hbWljIGluc3RlYWQgb2YganVzdCBzdGFuZGFyZFxubW0vS2NvbmZpZzo2OTk6XHQgIEhVR0VUTEJfUEFHRV9PUkRFUiB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBIdWdlVExCIHBhZ2Ugc2l6ZXMgYXZhaWxhYmxlXG5tbS9LY29uZmlnLTcwMC1cdCAgb24gYSBwbGF0Zm9ybS5cbi0tXG5tbS9LY29uZmlnPTEwMDA9Y29uZmlnIFBHVEFCTEVfSEFTX0hVR0VfTEVBVkVTXG5tbS9LY29uZmlnOjEwMDE6XHRkZWZfYm9vbCBUUkFOU1BBUkVOVF9IVUdFUEFHRSB8fCBIVUdFVExCX1BBR0Vcbm1tL0tjb25maWctMTAwMi1cbi0tXG5tbS9LY29uZmlnPTEwMDY9Y29uZmlnIEhBVkVfR0lHQU5USUNfRk9MSU9TXG5tbS9LY29uZmlnOjEwMDc6XHRkZWZfYm9vbCAoSFVHRVRMQl9QQUdFIFx1MDAyNlx1MDAyNiBBUkNIX0hBU19HSUdBTlRJQ19QQUdFKSB8fCBcXFxubW0vS2NvbmZpZy0xMDA4LVx0XHQgKFpPTkVfREVWSUNFIFx1MDAyNlx1MDAyNiBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipDaGVja2luZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIEh1Z2VUTEJGUyBTdXBwb3J0KioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHN0YXR1cyBvZiBIdWdlVExCRlMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgY29uZmlndXJhdGlvbi4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyBgZnMvS2NvbmZpZ2AuIEkmIzM5O2xsIG5lZWQgdG8gb3BlbiB0aGF0IGZpbGUgYW5kIHNlYXJjaCB0aHJvdWdoIGl0LiBJdOKAmXMgdGhlIHVzdWFsIHN0YXJ0aW5nIHBvaW50IGZvciBmZWF0dXJlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MsIHNvIEkgZXhwZWN0IHRvIGZpbmQgdGhlIG5lY2Vzc2FyeSBkZWZpbml0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRoZXJlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2Ygd2hldGhlciBpdCYjMzk7cyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgYnVpbHQgYXMgYSBtb2R1bGUsIGFsb25nIHdpdGggYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0dXMgYW5kIHRha2UgYW55IG5lY2Vzc2FyeSBmdXJ0aGVyIHN0ZXBzLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZz0yNjI9aWYgSFVHRVRMQkZTXG5mcy9LY29uZmlnOjI2Mzpjb25maWcgSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBfREVGQVVMVF9PTlxuZnMvS2NvbmZpZy0yNjQtXHRib29sIFwmIzM0O0h1Z2VUTEIgVm1lbW1hcCBPcHRpbWl6YXRpb24gKEhWTykgZGVmYXVsdHMgdG8gb25cJiMzNDtcbmZzL0tjb25maWctMjY1LVx0ZGVmYXVsdCBuXG5mcy9LY29uZmlnOjI2NjpcdGRlcGVuZHMgb24gSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcbmZzL0tjb25maWctMjY3LVx0aGVscFxuLS1cbmZzL0tjb25maWc9MjcxPWVuZGlmICMgSFVHRVRMQkZTXG5mcy9LY29uZmlnLTI3Mi1cbmZzL0tjb25maWc6MjczOmNvbmZpZyBIVUdFVExCX1BBR0VcbmZzL0tjb25maWctMjc0LVx0ZGVmX2Jvb2wgSFVHRVRMQkZTXG4tLVxuZnMvS2NvbmZpZy0yNzYtXG5mcy9LY29uZmlnOjI3Nzpjb25maWcgSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcbmZzL0tjb25maWc6Mjc4Olx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXG5mcy9LY29uZmlnLTI3OS1cdGRlcGVuZHMgb24gQVJDSF9XQU5UX09QVElNSVpFX0hVR0VUTEJfVk1FTU1BUFxuLS1cbmZzL0tjb25maWc9MjgzPWNvbmZpZyBIVUdFVExCX1BNRF9QQUdFX1RBQkxFX1NIQVJJTkdcbmZzL0tjb25maWc6Mjg0Olx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXG5mcy9LY29uZmlnLTI4NS1cdGRlcGVuZHMgb24gQVJDSF9XQU5UX0hVR0VfUE1EX1NIQVJFIFx1MDAyNlx1MDAyNiBTUExJVF9QTURfUFRMT0NLU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MzkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipEaWdnaW5nIGludG8gSHVnZVRMQiBQb2lzb24gSGFuZGxpbmcqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IEh1Z2VUTEImIzM5O3MgaGVyZSwgYW5kIEkgbmVlZCB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIGhvdyBoYXJkd2FyZSBwb2lzb25pbmcgaXMgY2xlYXJlZCB1cC4gVGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBmb3IgdGhpcyB3aG9sZSBhcmVhIHNlZW1zIHRvIGJlIGBIVUdFVExCRlNgLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgZXhhY3QgbWVjaGFuaXNtIGZvciB0aGlzLCBzbyBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBieSBjaGVja2luZyBgZm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbmAuIEkmIzM5O2xsIGZpbmQgdGhpcyBmdW5jdGlvbiYjMzk7cyBkZWZpbml0aW9uIGluIGVpdGhlciBgbW0vaHVnZXRsYi5jYCBvciwgcG90ZW50aWFsbHksIGl0cyBkZWNsYXJhdGlvbiBpbiBgaW5jbHVkZS9saW51eC9odWdldGxiLmhgLiBUaGF0JiMzOTtsbCBiZSB0aGUgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgbG93LWxldmVsIGRldGFpbHMgb2YgaG93IHRoZXNlIHBvaXNvbmVkIHBhZ2VzIGFyZSBoYW5kbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdldGxiLmg9ODg1PWludCBkaXNzb2x2ZV9mcmVlX2h1Z2V0bGJfZm9saW9zKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLFxuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTg4OC0jaWZkZWYgQ09ORklHX01FTU9SWV9GQUlMVVJFXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaDo4ODk6ZXh0ZXJuIHZvaWQgZm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbihzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTg5MC0jZWxzZVxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6ODkxOnN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKHN0cnVjdCBmb2xpbyAqZm9saW8pXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC04OTIte1xuLS1cbm1tL2h1Z2V0bGIuYz0xMzczPXN0YXRpYyB2b2lkIGZvbGlvX2NsZWFyX2h1Z2V0bGIoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiLmMtMTM3OS1cdGlmICh1bmxpa2VseShmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSkpXG5tbS9odWdldGxiLmM6MTM4MDpcdFx0Zm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbihmb2xpbyk7XG5tbS9odWdldGxiLmMtMTM4MS1cbi0tXG5tbS9tZW1vcnktZmFpbHVyZS5jPTE5ODQ9c3RhdGljIHVuc2lnbmVkIGxvbmcgZm9saW9fZnJlZV9yYXdfaHdwKHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgbW92ZV9mbGFnKVxuLS1cbm1tL21lbW9yeS1mYWlsdXJlLmMtMjAwMi1cbm1tL21lbW9yeS1mYWlsdXJlLmM6MjAwMzp2b2lkIGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL21lbW9yeS1mYWlsdXJlLmMtMjAwNC17XG4tLVxubW0vbWVtb3J5LWZhaWx1cmUuYz0yMDgxPXN0YXRpYyBpbnQgdHJ5X21lbW9yeV9mYWlsdXJlX2h1Z2V0bGIodW5zaWduZWQgbG9uZyBwZm4sIGludCBmbGFncylcbi0tXG5tbS9tZW1vcnktZmFpbHVyZS5jLTIxMTgtXHRpZiAoaHdwb2lzb25fZmlsdGVyKHApKSB7XG5tbS9tZW1vcnktZmFpbHVyZS5jOjIxMTk6XHRcdGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pO1xubW0vbWVtb3J5LWZhaWx1cmUuYy0yMTIwLVx0XHRpZiAobWlncmF0YWJsZV9jbGVhcmVkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NjEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2MjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBIdWdlVExCIEZvbGlvIFBvaXNvbiBDbGVhcmluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBtbS9odWdldGxiLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBpbXBvcnRhbnQg4oCTIEh1Z2VUTEIgbWVtb3J5IG1hbmFnZW1lbnQgaXMgY3JpdGljYWwuIE15IGluaXRpYWwgc2NhbiBzaG93cyBhIHJlZmFjdG9yaW5nLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyBoYXJkd2FyZSBwb2lzb24gKGh3cG9pc29uKSBmbGFncyBhcmUgaGFuZGxlZCB3aGVuIGZyZWVpbmcgSHVnZVRMQiBmb2xpb3MuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgYSBuZXcgaGVscGVyIGZ1bmN0aW9uLCBgZm9saW9fY2xlYXJfaHVnZXRsYihzdHJ1Y3QgZm9saW8gKmZvbGlvKWAuIFRoaXMgZnVuY3Rpb24gY2VudHJhbGl6ZXMgdGhlIGxvZ2ljIGZvciBjbGVhcmluZyBIdWdlVExCLXNwZWNpZmljIG1ldGFkYXRhLCBjcnVjaWFsbHkgaW5jbHVkaW5nIGFueSBod3BvaXNvbiBmbGFncy4KClRoZSBwYXRjaCYjMzk7cyBpbnRlbnQgYXBwZWFycyBzdHJhaWdodGZvcndhcmQ6IHJlcGxhY2UgZGlyZWN0IGNhbGxzIHRvIGBfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pYCB3aXRoIHRoaXMgbmV3IGhlbHBlci4gSXQmIzM5O3MgaGFwcGVuaW5nIGluIHNldmVyYWwga2V5IHBsYWNlczogYHJlbW92ZV9odWdldGxiX2ZvbGlvYCwgYF9fdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9gLCBgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3JgLCBhbmQgYHVwZGF0ZV9hbmRfZnJlZV9wYWdlc19idWxrYC4gVGhhdCYjMzk7cyBhIGdvb2Qgc2lnbjsgY29uc29saWRhdGluZyB0aGlzIGxvZ2ljIG1ha2VzIHRoZSBjb2RlIGNsZWFuZXIgYW5kIGVhc2llciB0byBtYWludGFpbi4gUGx1cywgaXQgZWxpbWluYXRlcyBwb3RlbnRpYWwgaW5jb25zaXN0ZW5jaWVzIGluIGhvdyB0aGVzZSBmbGFncyBhcmUgY2xlYXJlZC4gVGhlcmUmIzM5O3MgYWxzbyBhIHJlbW92YWwgb2YgYSBjYWxsIHRvIGBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKGZvbGlvKWAgaW5zaWRlIG9mIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYCBiZWNhdXNlIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGhhbmRsZWQgYnkgYGZvbGlvX2NsZWFyX2h1Z2V0bGJgLgoKTm93LCB0aGUgdGhpbmcgdGhhdCBtYWtlcyBtZSBwYXVzZSBpcyB0aGUgY2hhbmdlIHdpdGhpbiBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AuIFByZXZpb3VzbHksIGBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uYCB3YXMgY2FsbGVkICpvdXRzaWRlKiB0aGUgYGh1Z2V0bGJfbG9ja2Agc3BpbmxvY2ssIGJ1dCBub3csIGl0JiMzOTtzIGNhbGxlZCAqaW5zaWRlKiBgZm9saW9fY2xlYXJfaHVnZXRsYmAgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBpbnNpZGUgdGhlIHNwaW5sb2NrLiBUaGlzIGlzIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBjaGFuZ2UgaW4gbG9ja2luZyBzZW1hbnRpY3MuIEl0IGltcGxpZXMgc29tZSBjaGFuZ2UgaW4gdGhlIG9yZGVyaW5nIG9mIG9wZXJhdGlvbnMgb3IgdGhlIHByb3RlY3Rpb24gb2YgY3JpdGljYWwgc2VjdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIHdhcyBkb25lLCBhbmQgaWYgdGhlcmUgYXJlIGFueSByYWNlIGNvbmRpdGlvbnMgdGhhdCBhcmUgaW50cm9kdWNlZCBvciByZW1vdmVkLgoKVGhpcyBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGZpeC4gVGhlIGNvbW1lbnRzIHN1Z2dlc3QgdGhhdCB0aGVyZSB3YXMgYW4gaXNzdWUgd2hlcmUgYF9fZm9saW9fY2xlYXJfaHVnZXRsYmAgbWlnaHQgYmUgY2FsbGVkIHdpdGhvdXQgY2xlYXJpbmcgdGhlIGh3cG9pc29uIGZsYWdzIGluIHNvbWUgcGF0aHMuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBtZW1vcnkgc2FmZXR5IGNvbmNlcm4uIFRoaXMgcmVmYWN0b3JpbmcgY2xlYXJseSBhaW1zIHRvIGFkZHJlc3MgaXQuIEFuZCwgc2luY2UgaXQgYWZmZWN0cyBjb3JlIEh1Z2VUTEIgYW5kIHBvdGVudGlhbGx5IGVycm9yIGhhbmRsaW5nIGl0IGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyByZWxhdGVkIHRvIGh3cG9pc29uIG9yIEh1Z2VUTEIgbWFuYWdlbWVudC4KCk5vdywgbGV0JiMzOTtzIHNlZSB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkLiBJIG5lZWQgYEhVR0VUTEJGU2AsIGBIVUdFVExCX1BBR0VgLCBhbmQgY3J1Y2lhbGx5LCBgTUVNT1JZX0ZBSUxVUkVgLiBUaGUgbGFzdCBvbmUgaXMgaW1wb3J0YW50LCBhcyBgZm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbmAgaXMgbGlrZWx5IGFuIGVtcHR5IGlubGluZSBmdW5jdGlvbiBpZiBgTUVNT1JZX0ZBSUxVUkVgIGlzbiYjMzk7dCBlbmFibGVkLiBMZXQmIzM5O3MgY29uZmlybSB0aGF0IHRoYXQgY29uZmlnIGlzIHNldCB0byBlbnN1cmUgdGhlIGZ1enplciBnZXRzIHRoZSBkZXNpcmVkIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVNT1JZX0ZBSUxVUkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NzYwPWNvbmZpZyBBUkNIX1NVUFBPUlRTX01FTU9SWV9GQUlMVVJFXG4tLVxubW0vS2NvbmZpZy03NjItXG5tbS9LY29uZmlnOjc2Mzpjb25maWcgTUVNT1JZX0ZBSUxVUkVcbm1tL0tjb25maWctNzY0LVx0ZGVwZW5kcyBvbiBNTVVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYyOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZW1vcnkgRmFpbHVyZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoaXMgYE1FTU9SWV9GQUlMVVJFYCBjb25maWd1cmF0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gTXkgZm9jdXMgaXMgb24gdGhlIHNwZWNpZmljIHN5bWJvbHMgcmVsYXRlZCB0byB0aGlzLgoKTGV0JiMzOTtzIHNlZeKApiBJIG5lZWQgdG8gY2hlY2sgYHJlbW92ZV9odWdldGxiX2ZvbGlvYCBhbmQgdGhhdCAqb3RoZXIqIHJlbGF0ZWQgZnVuY3Rpb24sIHdoaWNoIGlzIHRlY2huaWNhbGx5IG5hbWVkIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYC4gSG1tLCB0aGUgZG91YmxlIHVuZGVyc2NvcmUgc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IGEgc3RhdGljIGZ1bmN0aW9uLCBtYXliZSBpdCYjMzk7cyBleHBvc2VkIGV4dGVybmFsbHkgYXMgYHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYC4gVGhhdCYjMzk7cyBhIHN0cm9uZyBsZWFkLiBJIGFsc28gbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGBidWxrX3ZtZW1tYXBfcmVzdG9yZV9lcnJvcmAgYW5kIGB1cGRhdGVfYW5kX2ZyZWVfcGFnZXNfYnVsa2AuIFRoZXkgc2VlbSBjbG9zZWx5IGFsaWduZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIGZhaWx1cmUgc2NlbmFyaW8gYW5kIGl0JiMzOTtzIGFsc28gcHJvYmFibHkgc3RhdGljLgoKUmlnaHQsIEkmIzM5O2xsIHN0YXJ0IGJ5IGRpdmluZyBpbnRvIGBtbS9odWdldGxiLmNgIHRvIGV4YW1pbmUgYHJlbW92ZV9odWdldGxiX2ZvbGlvYCBhbmQgdGhlbiBgdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9gLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgaHVnZSBwYWdlIG1hbmFnZW1lbnQgaW50ZXJhY3RzIHdpdGggdGhpcyBtZW1vcnkgZmFpbHVyZS4gVGhpcyB3aWxsIHByb2JhYmx5IGxlYWQgbWUgdG8gdGhlIG90aGVyIGZ1bmN0aW9ucyBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2b2lkIHJlbW92ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vaHVnZXRsYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYz0xMzczPXN0YXRpYyB2b2lkIGZvbGlvX2NsZWFyX2h1Z2V0bGIoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiLmMtMTM5Mi0gKi9cbm1tL2h1Z2V0bGIuYzoxMzkzOnZvaWQgcmVtb3ZlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGZvbGlvICpmb2xpbyxcbm1tL2h1Z2V0bGIuYy0xMzk0LVx0XHRcdCAgYm9vbCBhZGp1c3Rfc3VycGx1cylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE2NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIGB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFzIGFuIGV4cGVydDoKCioqQW5hbHl6aW5nIHRoZSBgdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9gIEZ1bmN0aW9uKioKCkFscmlnaHQsIHRoZSBuYW1lIGl0c2VsZiBhbHJlYWR5IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4gYHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYC4gSG1tLCBzbyB0aGlzIGxpa2VseSBoYW5kbGVzIHVwZGF0aW5nIHNvbWUgbWV0YWRhdGEgb3Igc3RhdGUgcmVsYXRlZCB0byBhIEh1Z2VUTEIgZm9saW8gKGEgcGFnZS1zaXplZCBjaHVuayBtYW5hZ2VkIHdpdGhpbiB0aGUgSHVnZVRMQiBzeXN0ZW0pICpiZWZvcmUqIGZyZWVpbmcgaXQuIFRoaXMgaXMgYSBjcml0aWNhbCBwb2ludCwgYW5kIG9uZSBJIGtub3cgaXMgb2Z0ZW4gdHJpY2t5LiBIdWdlVExCIG1hbmFnZW1lbnQgaXMgYWxsIGFib3V0IHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLCBzbyBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciByZXNvdXJjZSBsZWFrcyBhcmUgc29tZXRoaW5nIHRvIGJlIGltbWVkaWF0ZWx5IGF3YXJlIG9mLiBJIGtub3cgaG93IGltcG9ydGFudCBpdCBpcyB0byBoYW5kbGUgYWxsIHRoZSBuZWNlc3NhcnkgaG91c2VrZWVwaW5nIGJlZm9yZSBkZWFsbG9jYXRpbmcgdGhlIG1lbW9yeS4gTGV0JiMzOTtzIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgJiMzOTt1cGRhdGUmIzM5OyBtZWFucyBpbiB0aGlzIGNvbnRleHQg4oCTIGlzIGl0IHJlZmVyZW5jZSBjb3VudGluZywgc3RhdHVzIGZsYWdzLCBzb21ldGhpbmcgZWxzZT8gSSBob3BlIGl0JiMzOTtzIHdlbGwtZG9jdW1lbnRlZCEgVGltZSB0byBsb29rIGF0IHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdldGxiLmM9MTQyOT12b2lkIGFkZF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vaHVnZXRsYi5jLTE0NTgtXG5tbS9odWdldGxiLmM6MTQ1OTpzdGF0aWMgdm9pZCBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG5tbS9odWdldGxiLmMtMTQ2MC1cdFx0XHRcdFx0XHRzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL2h1Z2V0bGIuYy0xNTA4LS8qXG5tbS9odWdldGxiLmM6MTUwOTogKiBBcyB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbygpIGNhbiBiZSBjYWxsZWQgdW5kZXIgYW55IGNvbnRleHQsIHNvIHdlIGNhbm5vdFxubW0vaHVnZXRsYi5jLTE1MTAtICogdXNlIEdGUF9LRVJORUwgdG8gYWxsb2NhdGUgdm1lbW1hcCBwYWdlcy4gSG93ZXZlciwgd2UgY2FuIGRlZmVyIHRoZVxuLS1cbm1tL2h1Z2V0bGIuYz0xNTIxPXN0YXRpYyB2b2lkIGZyZWVfaHBhZ2Vfd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5tbS9odWdldGxiLmMtMTU0Mi1cbm1tL2h1Z2V0bGIuYzoxNTQzOlx0XHRfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvKTtcbm1tL2h1Z2V0bGIuYy0xNTQ0LVxuLS1cbm1tL2h1Z2V0bGIuYz0xNTUwPXN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF9mcmVlX2hwYWdlX3dvcmsoc3RydWN0IGhzdGF0ZSAqaClcbi0tXG5tbS9odWdldGxiLmMtMTU1NS1cbm1tL2h1Z2V0bGIuYzoxNTU2OnN0YXRpYyB2b2lkIHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8sXG5tbS9odWdldGxiLmMtMTU1Ny1cdFx0XHRcdCBib29sIGF0b21pYylcbi0tXG5tbS9odWdldGxiLmMtMTU1OS1cdGlmICghZm9saW9fdGVzdF9odWdldGxiX3ZtZW1tYXBfb3B0aW1pemVkKGZvbGlvKSB8fCAhYXRvbWljKSB7XG5tbS9odWdldGxiLmM6MTU2MDpcdFx0X191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbyk7XG5tbS9odWdldGxiLmMtMTU2MS1cdFx0cmV0dXJuO1xuLS1cbm1tL2h1Z2V0bGIuYz0xNTc1PXN0YXRpYyB2b2lkIGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTE1OTMtXHRcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG5tbS9odWdldGxiLmM6MTU5NDpcdFx0XHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTE1OTUtXHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4tLVxubW0vaHVnZXRsYi5jLTE2MTgtXHRcdFx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbm1tL2h1Z2V0bGIuYzoxNjE5Olx0XHRcdFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy0xNjIwLVx0XHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4tLVxubW0vaHVnZXRsYi5jPTE2MjY9c3RhdGljIHZvaWQgdXBkYXRlX2FuZF9mcmVlX3BhZ2VzX2J1bGsoc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMTY2MS1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShmb2xpbywgdF9mb2xpbywgXHUwMDI2bm9uX2h2b19mb2xpb3MsIGxydSkge1xubW0vaHVnZXRsYi5jOjE2NjI6XHRcdHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtMTY2My1cdFx0Y29uZF9yZXNjaGVkKCk7XG4tLVxubW0vaHVnZXRsYi5jPTE2Nzg9dm9pZCBmcmVlX2h1Z2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiLmMtMTczMi1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZodWdldGxiX2xvY2ssIGZsYWdzKTtcbm1tL2h1Z2V0bGIuYzoxNzMzOlx0XHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgdHJ1ZSk7XG5tbS9odWdldGxiLmMtMTczNC1cdH0gZWxzZSBpZiAoaC1cdTAwM2VzdXJwbHVzX2h1Z2VfcGFnZXNfbm9kZVtuaWRdKSB7XG4tLVxubW0vaHVnZXRsYi5jLTE3MzctXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aHVnZXRsYl9sb2NrLCBmbGFncyk7XG5tbS9odWdldGxiLmM6MTczODpcdFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIHRydWUpO1xubW0vaHVnZXRsYi5jLTE3MzktXHR9IGVsc2Uge1xuLS1cbm1tL2h1Z2V0bGIuYz0xOTU2PWludCBkaXNzb2x2ZV9mcmVlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiLmMtMjAyNi1cbm1tL2h1Z2V0bGIuYzoyMDI3Olx0XHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTIwMjgtXHRcdHJldHVybiByYztcbi0tXG5tbS9odWdldGxiLmM9MjYzMj1zdGF0aWMgaW50IGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqb2xkX2ZvbGlvLFxuLS1cbm1tL2h1Z2V0bGIuYy0yNzA0LVx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbm1tL2h1Z2V0bGIuYzoyNzA1Olx0XHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBvbGRfZm9saW8sIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy0yNzA2LVx0fVxuLS1cbm1tL2h1Z2V0bGIuYy0yNzEyLVx0aWYgKG5ld19mb2xpbylcbm1tL2h1Z2V0bGIuYzoyNzEzOlx0XHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBuZXdfZm9saW8sIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy0yNzE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzgwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBIdWdlIFBhZ2UgRm9saW8gUmVtb3ZhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGEgZmV3IGtleSBmdW5jdGlvbnMgcmVsYXRlZCB0byBoYW5kbGluZyBodWdlIHBhZ2VzOiBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGBidWxrX3ZtZW1tYXBfcmVzdG9yZV9lcnJvcmAsIGFuZCBgdXBkYXRlX2FuZF9mcmVlX3BhZ2VzX2J1bGtgLiBJbnRlcmVzdGluZy4KCkZpcnN0IHRob3VnaHQgaXMgdGhhdCBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gIGlzbiYjMzk7dCBzdGF0aWMsIG1lYW5pbmcgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBmcm9tIG1vcmUgcGxhY2VzIHRoYW4ganVzdCB3aXRoaW4gdGhpcyBtb2R1bGUuIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYCBpcyBzdGF0aWMsIHdoaWNoIGxpbWl0cyBpdHMgc2NvcGUsIGJ1dCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgZnJlZV9odWdlX2ZvbGlvYCBhbmQgYGRpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpb2AgY2FsbCBpdC4gSSBrbm93IHRoZXNlIGZ1bmN0aW9ucyBsaWtlIHRoZSBiYWNrIG9mIG15IGhhbmQsIHNvIHRoYXQmIzM5O3Mgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZCBhcyBJIGRpdmUgZGVlcGVyLgoKQW5kLCBhcyBJIGV4cGVjdGVkLCBib3RoIGBmcmVlX2h1Z2VfZm9saW9gIGFuZCBgZGlzc29sdmVfZnJlZV9odWdldGxiX2ZvbGlvYCBhcmUgbm9uLXN0YXRpYy4gU28sIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IHRoaXMgcGF0Y2ggaW1wYWN0cyB0aGVpciBpbnRlcnBsYXkgd2l0aCB0aGUgc3RhdGljIGhlbHBlciBmdW5jdGlvbi4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgZ29pbmcgdG8gYmUgdG8gc2VlICp3aGVyZSogYHJlbW92ZV9odWdldGxiX2ZvbGlvYCBpcyBhY3R1YWxseSBiZWluZyBjYWxsZWQgZnJvbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgZ3JhcGggdG8gZnVsbHkgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlbW92ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYz0xMzczPXN0YXRpYyB2b2lkIGZvbGlvX2NsZWFyX2h1Z2V0bGIoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiLmMtMTM5Mi0gKi9cbm1tL2h1Z2V0bGIuYzoxMzkzOnZvaWQgcmVtb3ZlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGZvbGlvICpmb2xpbyxcbm1tL2h1Z2V0bGIuYy0xMzk0LVx0XHRcdCAgYm9vbCBhZGp1c3Rfc3VycGx1cylcbi0tXG5tbS9odWdldGxiLmM9MTUyMT1zdGF0aWMgdm9pZCBmcmVlX2hwYWdlX3dvcmtmbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubW0vaHVnZXRsYi5jLTE1MzctXHRcdCAqIGZvbGlvX2hzdGF0ZSgpIGlzIGdvaW5nIHRvIHRyaWdnZXIgYmVjYXVzZSBhIHByZXZpb3VzIGNhbGwgdG9cbm1tL2h1Z2V0bGIuYzoxNTM4Olx0XHQgKiByZW1vdmVfaHVnZXRsYl9mb2xpbygpIHdpbGwgY2xlYXIgdGhlIGh1Z2V0bGIgYml0LCBzbyBkb1xubW0vaHVnZXRsYi5jLTE1MzktXHRcdCAqIG5vdCB1c2UgZm9saW9faHN0YXRlKCkgZGlyZWN0bHkuXG4tLVxubW0vaHVnZXRsYi5jPTE2Nzg9dm9pZCBmcmVlX2h1Z2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiLmMtMTczMC1cdGlmIChmb2xpb190ZXN0X2h1Z2V0bGJfdGVtcG9yYXJ5KGZvbGlvKSkge1xubW0vaHVnZXRsYi5jOjE3MzE6XHRcdHJlbW92ZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtMTczMi1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZodWdldGxiX2xvY2ssIGZsYWdzKTtcbi0tXG5tbS9odWdldGxiLmMtMTczNS1cdFx0LyogcmVtb3ZlIHRoZSBwYWdlIGZyb20gYWN0aXZlIGxpc3QgKi9cbm1tL2h1Z2V0bGIuYzoxNzM2Olx0XHRyZW1vdmVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgdHJ1ZSk7XG5tbS9odWdldGxiLmMtMTczNy1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZodWdldGxiX2xvY2ssIGZsYWdzKTtcbi0tXG5tbS9odWdldGxiLmM9MTkxOD1zdGF0aWMgc3RydWN0IGZvbGlvICpyZW1vdmVfcG9vbF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTE5MzMtXHRcdFx0XHRcdCAgc3RydWN0IGZvbGlvLCBscnUpO1xubW0vaHVnZXRsYi5jOjE5MzQ6XHRcdFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGFjY3Rfc3VycGx1cyk7XG5tbS9odWdldGxiLmMtMTkzNS1cdFx0XHRicmVhaztcbi0tXG5tbS9odWdldGxiLmM9MTk1Nj1pbnQgZGlzc29sdmVfZnJlZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vaHVnZXRsYi5jLTE5OTgtXHRcdFx0YWRqdXN0X3N1cnBsdXMgPSB0cnVlO1xubW0vaHVnZXRsYi5jOjE5OTk6XHRcdHJlbW92ZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBhZGp1c3Rfc3VycGx1cyk7XG5tbS9odWdldGxiLmMtMjAwMC1cdFx0aC1cdTAwM2VtYXhfaHVnZV9wYWdlcy0tO1xuLS1cbm1tL2h1Z2V0bGIuYy0yMDExLVx0XHQgKiBUaGUgZm9saW9fdGVzdF9odWdldGxiIGNoZWNrIGhlcmUgaXMgYmVjYXVzZVxubW0vaHVnZXRsYi5jOjIwMTI6XHRcdCAqIHJlbW92ZV9odWdldGxiX2ZvbGlvIHdpbGwgY2xlYXIgaHVnZXRsYiBmb2xpbyBmbGFnIGZvclxubW0vaHVnZXRsYi5jLTIwMTMtXHRcdCAqIG5vbi12bWVtbWFwIG9wdGltaXplZCBodWdldGxiIGZvbGlvcy5cbi0tXG5tbS9odWdldGxiLmM9MjYzMj1zdGF0aWMgaW50IGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqb2xkX2ZvbGlvLFxuLS1cbm1tL2h1Z2V0bGIuYy0yNjkxLVx0XHQgKi9cbm1tL2h1Z2V0bGIuYzoyNjkyOlx0XHRyZW1vdmVfaHVnZXRsYl9mb2xpbyhoLCBvbGRfZm9saW8sIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy0yNjkzLVxuLS1cbm1tL2h1Z2V0bGIuYz0zNjk3PXN0YXRpYyB2b2lkIHRyeV90b19mcmVlX2xvdyhzdHJ1Y3QgaHN0YXRlICpoLCB1bnNpZ25lZCBsb25nIGNvdW50LFxuLS1cbm1tL2h1Z2V0bGIuYy0zNzE3LVx0XHRcdFx0Y29udGludWU7XG5tbS9odWdldGxiLmM6MzcxODpcdFx0XHRyZW1vdmVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTM3MTktXHRcdFx0bGlzdF9hZGQoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1LCBcdTAwMjZwYWdlX2xpc3QpO1xuLS1cbm1tL2h1Z2V0bGIuYz00MDE3PWxvbmcgZGVtb3RlX3Bvb2xfaHVnZV9wYWdlKHN0cnVjdCBoc3RhdGUgKnNyYywgbm9kZW1hc2tfdCAqbm9kZXNfYWxsb3dlZCxcbi0tXG5tbS9odWdldGxiLmMtNDA0Mi1cbm1tL2h1Z2V0bGIuYzo0MDQzOlx0XHRcdHJlbW92ZV9odWdldGxiX2ZvbGlvKHNyYywgZm9saW8sIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy00MDQ0LVx0XHRcdGxpc3RfYWRkKFx1MDAyNmZvbGlvLVx1MDAzZWxydSwgXHUwMDI2bGlzdCk7XG4tLVxubW0vaHVnZXRsYl9pbnRlcm5hbC5oPTcxPXN0YXRpYyBpbmxpbmUgaW50IGhzdGF0ZV9uZXh0X25vZGVfdG9fZnJlZShzdHJ1Y3QgaHN0YXRlICpoLCBub2RlbWFza190ICpub2Rlc19hbGxvd2VkKVxuLS1cbm1tL2h1Z2V0bGJfaW50ZXJuYWwuaC05NC1cbm1tL2h1Z2V0bGJfaW50ZXJuYWwuaDo5NTpleHRlcm4gdm9pZCByZW1vdmVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxubW0vaHVnZXRsYl9pbnRlcm5hbC5oLTk2LVx0XHRcdFx0IGJvb2wgYWRqdXN0X3N1cnBsdXMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjIyCgkJCQkJCQlvdXRwdXQ6IDIzNQoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIVUdFVExCX1BBR0UmIzM0OywKICAgICYjMzQ7TUVNT1JZX0ZBSUxVUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZW1vdmVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDt1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDtkaXNzb2x2ZV9mcmVlX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7YWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7ZnJlZV9odWdlX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBjbGVhcmluZyB0aGUgaHVnZXRsYiBmbGFnIGZyb20gYSBmb2xpby4gSXQgaW50cm9kdWNlcyBgZm9saW9fY2xlYXJfaHVnZXRsYmAgd2hpY2ggYWxzbyBjbGVhcnMgdGhlIGh3cG9pc29uIGZsYWcgaWYgaXQmIzM5O3Mgc2V0LCBtb3ZpbmcgaXQgdG8gdGhlIGVycm9yIHBhZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBodWdldGxiIHBhZ2UgZnJlZWluZyBhbmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuIEl0IGFmZmVjdHMgYHJlbW92ZV9odWdldGxiX2ZvbGlvYCwgYF9fdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9gLCBhbmQgYGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yYC4gVGhlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4gYEhVR0VUTEJfUEFHRWAgYW5kIGBNRU1PUllfRkFJTFVSRWAgYXJlIHJlcXVpcmVkIHRvIHRlc3QgdGhpcyBjb2RlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7LAogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlbW92ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2Rpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDtmcmVlX2h1Z2VfZm9saW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIGNsZWFyaW5nIHRoZSBodWdldGxiIGZsYWcgZnJvbSBhIGZvbGlvLiBJdCBpbnRyb2R1Y2VzIGBmb2xpb19jbGVhcl9odWdldGxiYCB3aGljaCBhbHNvIGNsZWFycyB0aGUgaHdwb2lzb24gZmxhZyBpZiBpdCYjMzk7cyBzZXQsIG1vdmluZyBpdCB0byB0aGUgZXJyb3IgcGFnZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGh1Z2V0bGIgcGFnZSBmcmVlaW5nIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4gSXQgYWZmZWN0cyBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3JgLiBUaGUgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBgSFVHRVRMQl9QQUdFYCBhbmQgYE1FTU9SWV9GQUlMVVJFYCBhcmUgcmVxdWlyZWQgdG8gdGVzdCB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjIxOjIzLjcwMjgxOTk1NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5ODYwMTc2MzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJfUEFHRVwiLFxuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZW1vdmVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwidXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImRpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImZyZWVfaHVnZV9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBjbGVhcmluZyB0aGUgaHVnZXRsYiBmbGFnIGZyb20gYSBmb2xpby4gSXQgaW50cm9kdWNlcyBgZm9saW9fY2xlYXJfaHVnZXRsYmAgd2hpY2ggYWxzbyBjbGVhcnMgdGhlIGh3cG9pc29uIGZsYWcgaWYgaXQncyBzZXQsIG1vdmluZyBpdCB0byB0aGUgZXJyb3IgcGFnZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGh1Z2V0bGIgcGFnZSBmcmVlaW5nIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4gSXQgYWZmZWN0cyBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3JgLiBUaGUgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBgSFVHRVRMQl9QQUdFYCBhbmQgYE1FTU9SWV9GQUlMVVJFYCBhcmUgcmVxdWlyZWQgdG8gdGVzdCB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjE6MjMuNzAyODI0Njk1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDA3MDMzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1Nzk4NTdmNDg1MDNkOWM0YmU2OWNmYTFmNjIzYmRlZDU2ZjJiZTNhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDMwIDAwOjIxOjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuY1xcbmluZGV4IGE3N2MzYzFjYjg5NDMuLjMxZWRiNzhmMDkzMDQgMTAwNjQ0XFxuLS0tIGEvbW0vaHVnZXRsYi5jXFxuKysrIGIvbW0vaHVnZXRsYi5jXFxuQEAgLTEzNzAsNiArMTM3MCwxOCBAQCBzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzaywgaW50XFxuIH1cXG4gI2VuZGlmXFxuIFxcbitzdGF0aWMgdm9pZCBmb2xpb19jbGVhcl9odWdldGxiKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuK3tcXG4rXFx0LypcXG4rXFx0ICogTW92ZSBIV1BvaXNvbiBmbGFnIHRvIGVhY2ggZXJyb3IgcGFnZVxcbitcXHQgKiB3aGljaCBtYWtlcyBhbnkgaGVhbHRoeSBwYWdlcyByZXVzYWJsZS5cXG4rXFx0ICovXFxuK1xcdGlmICh1bmxpa2VseShmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSkpXFxuK1xcdFxcdGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pO1xcbitcXG4rXFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcXG4rfVxcbitcXG4gLypcXG4gICogUmVtb3ZlIGh1Z2V0bGIgZm9saW8gZnJvbSBsaXN0cy5cXG4gICogSWYgdm1lbW1hcCBleGlzdHMgZm9yIHRoZSBmb2xpbywgY2xlYXIgdGhlIGh1Z2V0bGIgZmxhZyBzbyB0aGF0IHRoZVxcbkBAIC0xNDA4LDcgKzE0MjAsNyBAQCB2b2lkIHJlbW92ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuIFxcdCAqIHRvIHRhaWwgc3RydWN0IHBhZ2VzLlxcbiBcXHQgKi9cXG4gXFx0aWYgKCFmb2xpb190ZXN0X2h1Z2V0bGJfdm1lbW1hcF9vcHRpbWl6ZWQoZm9saW8pKVxcbi1cXHRcXHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xcbitcXHRcXHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcXG4gXFxuIFxcdGgtXFx1MDAzZW5yX2h1Z2VfcGFnZXMtLTtcXG4gXFx0aC1cXHUwMDNlbnJfaHVnZV9wYWdlc19ub2RlW25pZF0tLTtcXG5AQCAtMTQ4MiwxNyArMTQ5NCwxMCBAQCBzdGF0aWMgdm9pZCBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxuIFxcdCAqL1xcbiBcXHRpZiAoZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSkge1xcbiBcXHRcXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZodWdldGxiX2xvY2spO1xcbi1cXHRcXHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xcbitcXHRcXHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcXG4gXFx0XFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZodWdldGxiX2xvY2spO1xcbiBcXHR9XFxuIFxcbi1cXHQvKlxcbi1cXHQgKiBNb3ZlIFBhZ2VIV1BvaXNvbiBmbGFnIGZyb20gaGVhZCBwYWdlIHRvIHRoZSByYXcgZXJyb3IgcGFnZXMsXFxuLVxcdCAqIHdoaWNoIG1ha2VzIGFueSBoZWFsdGh5IHN1YnBhZ2VzIHJldXNhYmxlLlxcbi1cXHQgKi9cXG4tXFx0aWYgKHVubGlrZWx5KGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8pKSlcXG4tXFx0XFx0Zm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbihmb2xpbyk7XFxuLVxcbiBcXHRWTV9CVUdfT05fRk9MSU8oZm9saW9fcmVmX2NvdW50KGZvbGlvKSwgZm9saW8pO1xcbiBcXHRpZiAoZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpXFxuIFxcdFxcdGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKGZvbGlvKTtcXG5AQCAtMTU4NCw3ICsxNTg5LDcgQEAgc3RhdGljIHZvaWQgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCxcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGZvbGlvLCB0X2ZvbGlvLCBub25faHZvX2ZvbGlvcywgbHJ1KSB7XFxuIFxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1KTtcXG4gXFx0XFx0XFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2aHVnZXRsYl9sb2NrKTtcXG4tXFx0XFx0XFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcXG4rXFx0XFx0XFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XFxuIFxcdFxcdFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2aHVnZXRsYl9sb2NrKTtcXG4gXFx0XFx0XFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGZhbHNlKTtcXG4gXFx0XFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuQEAgLTE2MDksNyArMTYxNCw3IEBAIHN0YXRpYyB2b2lkIGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yKHN0cnVjdCBoc3RhdGUgKmgsXFxuIFxcdFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1KTtcXG4gXFx0XFx0XFx0XFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2aHVnZXRsYl9sb2NrKTtcXG4tXFx0XFx0XFx0XFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcXG4rXFx0XFx0XFx0XFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XFxuIFxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2aHVnZXRsYl9sb2NrKTtcXG4gXFx0XFx0XFx0XFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGZhbHNlKTtcXG4gXFx0XFx0XFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuQEAgLTE2NDIsMTQgKzE2NDcsMTQgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2FuZF9mcmVlX3BhZ2VzX2J1bGsoc3RydWN0IGhzdGF0ZSAqaCxcXG4gXFx0ICogc2hvdWxkIG9ubHkgYmUgcGFnZXMgb24gdGhlIG5vbl9odm9fZm9saW9zIGxpc3QuXFxuIFxcdCAqIERvIG5vdGUgdGhhdCB0aGUgbm9uX2h2b19mb2xpb3MgbGlzdCBjb3VsZCBiZSBlbXB0eS5cXG4gXFx0ICogV2l0aG91dCBIVk8gZW5hYmxlZCwgcmV0IHdpbGwgYmUgMCBhbmQgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsXFxuLVxcdCAqIF9fZm9saW9fY2xlYXJfaHVnZXRsYiBhcyB0aGlzIHdhcyBkb25lIHByZXZpb3VzbHkuXFxuK1xcdCAqIGZvbGlvX2NsZWFyX2h1Z2V0bGIgYXMgdGhpcyB3YXMgZG9uZSBwcmV2aW91c2x5LlxcbiBcXHQgKi9cXG4gXFx0Vk1fV0FSTl9PTighbGlzdF9lbXB0eShmb2xpb19saXN0KSk7XFxuIFxcdFZNX1dBUk5fT04ocmV0IFxcdTAwM2MgMCk7XFxuIFxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2bm9uX2h2b19mb2xpb3MpIFxcdTAwMjZcXHUwMDI2IHJldCkge1xcbiBcXHRcXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZodWdldGxiX2xvY2spO1xcbiBcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGZvbGlvLCBcXHUwMDI2bm9uX2h2b19mb2xpb3MsIGxydSlcXG4tXFx0XFx0XFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcXG4rXFx0XFx0XFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XFxuIFxcdFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2aHVnZXRsYl9sb2NrKTtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjE6MjQuMDQ0MjQxNDcxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Njk1MTg3NDQ3MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFVHRVRMQl9QQUdFXCIsXG4gICAgXCJNRU1PUllfRkFJTFVSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlbW92ZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJ1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiZGlzc29sdmVfZnJlZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiZnJlZV9odWdlX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIGNsZWFyaW5nIHRoZSBodWdldGxiIGZsYWcgZnJvbSBhIGZvbGlvLiBJdCBpbnRyb2R1Y2VzIGBmb2xpb19jbGVhcl9odWdldGxiYCB3aGljaCBhbHNvIGNsZWFycyB0aGUgaHdwb2lzb24gZmxhZyBpZiBpdCdzIHNldCwgbW92aW5nIGl0IHRvIHRoZSBlcnJvciBwYWdlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaHVnZXRsYiBwYWdlIGZyZWVpbmcgYW5kIG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nLiBJdCBhZmZlY3RzIGByZW1vdmVfaHVnZXRsYl9mb2xpb2AsIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYCwgYW5kIGBidWxrX3ZtZW1tYXBfcmVzdG9yZV9lcnJvcmAuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIGBIVUdFVExCX1BBR0VgIGFuZCBgTUVNT1JZX0ZBSUxVUkVgIGFyZSByZXF1aXJlZCB0byB0ZXN0IHRoaXMgY29kZSBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1Nzk4NTdmNDg1MDNkOWM0YmU2OWNmYTFmNjIzYmRlZDU2ZjJiZTNhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDA6MjE6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmNcbmluZGV4IGE3N2MzYzFjYjg5NDMuLjMxZWRiNzhmMDkzMDQgMTAwNjQ0XG4tLS0gYS9tbS9odWdldGxiLmNcbisrKyBiL21tL2h1Z2V0bGIuY1xuQEAgLTEzNzAsNiArMTM3MCwxOCBAQCBzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzaywgaW50XG4gfVxuICNlbmRpZlxuIFxuK3N0YXRpYyB2b2lkIGZvbGlvX2NsZWFyX2h1Z2V0bGIoc3RydWN0IGZvbGlvICpmb2xpbylcbit7XG4rXHQvKlxuK1x0ICogTW92ZSBIV1BvaXNvbiBmbGFnIHRvIGVhY2ggZXJyb3IgcGFnZVxuK1x0ICogd2hpY2ggbWFrZXMgYW55IGhlYWx0aHkgcGFnZXMgcmV1c2FibGUuXG4rXHQgKi9cbitcdGlmICh1bmxpa2VseShmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSkpXG4rXHRcdGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pO1xuK1xuK1x0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbit9XG4rXG4gLypcbiAgKiBSZW1vdmUgaHVnZXRsYiBmb2xpbyBmcm9tIGxpc3RzLlxuICAqIElmIHZtZW1tYXAgZXhpc3RzIGZvciB0aGUgZm9saW8sIGNsZWFyIHRoZSBodWdldGxiIGZsYWcgc28gdGhhdCB0aGVcbkBAIC0xNDA4LDcgKzE0MjAsNyBAQCB2b2lkIHJlbW92ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4gXHQgKiB0byB0YWlsIHN0cnVjdCBwYWdlcy5cbiBcdCAqL1xuIFx0aWYgKCFmb2xpb190ZXN0X2h1Z2V0bGJfdm1lbW1hcF9vcHRpbWl6ZWQoZm9saW8pKVxuLVx0XHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xuK1x0XHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbiBcbiBcdGgtXHUwMDNlbnJfaHVnZV9wYWdlcy0tO1xuIFx0aC1cdTAwM2Vucl9odWdlX3BhZ2VzX25vZGVbbmlkXS0tO1xuQEAgLTE0ODIsMTcgKzE0OTQsMTAgQEAgc3RhdGljIHZvaWQgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuIFx0ICovXG4gXHRpZiAoZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSkge1xuIFx0XHRzcGluX2xvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4tXHRcdF9fZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4rXHRcdGZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xuIFx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbiBcdH1cbiBcbi1cdC8qXG4tXHQgKiBNb3ZlIFBhZ2VIV1BvaXNvbiBmbGFnIGZyb20gaGVhZCBwYWdlIHRvIHRoZSByYXcgZXJyb3IgcGFnZXMsXG4tXHQgKiB3aGljaCBtYWtlcyBhbnkgaGVhbHRoeSBzdWJwYWdlcyByZXVzYWJsZS5cbi1cdCAqL1xuLVx0aWYgKHVubGlrZWx5KGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8pKSlcbi1cdFx0Zm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbihmb2xpbyk7XG4tXG4gXHRWTV9CVUdfT05fRk9MSU8oZm9saW9fcmVmX2NvdW50KGZvbGlvKSwgZm9saW8pO1xuIFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYl9jbWEoZm9saW8pKVxuIFx0XHRodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhmb2xpbyk7XG5AQCAtMTU4NCw3ICsxNTg5LDcgQEAgc3RhdGljIHZvaWQgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCxcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGZvbGlvLCB0X2ZvbGlvLCBub25faHZvX2ZvbGlvcywgbHJ1KSB7XG4gXHRcdFx0bGlzdF9kZWwoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1KTtcbiBcdFx0XHRzcGluX2xvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4tXHRcdFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbitcdFx0XHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbiBcdFx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbiBcdFx0XHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpO1xuIFx0XHRcdGNvbmRfcmVzY2hlZCgpO1xuQEAgLTE2MDksNyArMTYxNCw3IEBAIHN0YXRpYyB2b2lkIGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yKHN0cnVjdCBoc3RhdGUgKmgsXG4gXHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdGxpc3RfZGVsKFx1MDAyNmZvbGlvLVx1MDAzZWxydSk7XG4gXHRcdFx0XHRzcGluX2xvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4tXHRcdFx0XHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xuK1x0XHRcdFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4gXHRcdFx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbiBcdFx0XHRcdHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XG4gXHRcdFx0XHRjb25kX3Jlc2NoZWQoKTtcbkBAIC0xNjQyLDE0ICsxNjQ3LDE0IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9hbmRfZnJlZV9wYWdlc19idWxrKHN0cnVjdCBoc3RhdGUgKmgsXG4gXHQgKiBzaG91bGQgb25seSBiZSBwYWdlcyBvbiB0aGUgbm9uX2h2b19mb2xpb3MgbGlzdC5cbiBcdCAqIERvIG5vdGUgdGhhdCB0aGUgbm9uX2h2b19mb2xpb3MgbGlzdCBjb3VsZCBiZSBlbXB0eS5cbiBcdCAqIFdpdGhvdXQgSFZPIGVuYWJsZWQsIHJldCB3aWxsIGJlIDAgYW5kIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbFxuLVx0ICogX19mb2xpb19jbGVhcl9odWdldGxiIGFzIHRoaXMgd2FzIGRvbmUgcHJldmlvdXNseS5cbitcdCAqIGZvbGlvX2NsZWFyX2h1Z2V0bGIgYXMgdGhpcyB3YXMgZG9uZSBwcmV2aW91c2x5LlxuIFx0ICovXG4gXHRWTV9XQVJOX09OKCFsaXN0X2VtcHR5KGZvbGlvX2xpc3QpKTtcbiBcdFZNX1dBUk5fT04ocmV0IFx1MDAzYyAwKTtcbiBcdGlmICghbGlzdF9lbXB0eShcdTAwMjZub25faHZvX2ZvbGlvcykgXHUwMDI2XHUwMDI2IHJldCkge1xuIFx0XHRzcGluX2xvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoZm9saW8sIFx1MDAyNm5vbl9odm9fZm9saW9zLCBscnUpXG4tXHRcdFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbitcdFx0XHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbiBcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDoyMToyNC4wNDQyNDI3MzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzgxNTUxMzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEh1Z2V0bGIgYW5kIEhhcmR3YXJlIFBvaXNvbmluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGBtbS9odWdldGxiLmNgLiBJdCBzZWVtcyB0aGV5J3JlIG1ha2luZyBhIHByZXR0eSB0YXJnZXRlZCBtb2RpZmljYXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgaGFuZGxpbmcgaGFyZHdhcmUgcG9pc29uaW5nIHdpdGhpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0uXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoaXMgbmV3IGZ1bmN0aW9uLCBgZm9saW9fY2xlYXJfaHVnZXRsYihzdHJ1Y3QgZm9saW8gKmZvbGlvKWAuIEl0J3MgZXNzZW50aWFsbHkgYSB3cmFwcGVyLiBJZiBgZm9saW9fdGVzdF9od3BvaXNvbihmb2xpbylgIHJldHVybnMgdHJ1ZSwgaXQgY2FsbHMgYGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pYC4gQWZ0ZXIgdGhhdCBpdCBjYWxscyBgX19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKWAuIFRoZSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhhdCBzZXZlcmFsIGV4aXN0aW5nIGNhbGxzIHRvIGBfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pYCBhcmUgYmVpbmcgKnJlcGxhY2VkKiB3aXRoIHRoaXMgbmV3IHdyYXBwZXIsIGBmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKWAuXG5cblRoZXkgYWxzbyBzZWVtIHRvIGJlIGNsZWFuaW5nIHRoaW5ncyB1cCBpbiBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIHJlbW92aW5nIGEgZHVwbGljYXRlIGNhbGwgdG8gYGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pYC4gTWFrZXMgc2Vuc2UsIGJlY2F1c2UgdGhlIG5ldyBmdW5jdGlvbiBjYWxsIGNvdmVycyB0aGF0IG5vdy5cblxuVGhpcyBpcyBhbGwgY2xlYXJseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gaHVnZXRsYiBhbmQgaHdwb2lzb24uIEltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcsIFwiSXMgdGhpcyBmdXp6YWJsZT9cIiBUaGUgYW5zd2VyIGlzIHllcywgZ2l2ZW4gdGhlIGFyZWEgb2YgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGh1Z2V0bGIuIFRpbWUgdG8gc2VlIHdoYXQgd2UncmUgZGVhbGluZyB3aXRoLlxuXG5JIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMgaW4gcmVsYXRpb24gdG8gYGh1Z2V0bGJgLiBgQ09ORklHX0hVR0VUTEJfUEFHRWAgaXMgdGhlIG9idmlvdXMgb25lLCBhbmQgSSBzaG91bGQgc2NhbiBgbW0vaHVnZXRsYi5jYCB0byBpZGVudGlmeSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDoyMTozMy40MjU3OTY5NzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI4NzY4ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSFVHRVRMQl9QQUdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz02OTI9Y29uZmlnIEFSQ0hfSEFTX1BNRF9TT0ZUTEVBVkVTXFxuLS1cXG5tbS9LY29uZmlnLTY5NC1cXG5tbS9LY29uZmlnOjY5NTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEVcXG5tbS9LY29uZmlnLTY5Ni1cXHRkZWZfYm9vbCBuXFxuLS1cXG5tbS9LY29uZmlnLTY5OC1cXHQgIEFsbG93cyB0aGUgcGFnZWJsb2NrX29yZGVyIHZhbHVlIHRvIGJlIGR5bmFtaWMgaW5zdGVhZCBvZiBqdXN0IHN0YW5kYXJkXFxubW0vS2NvbmZpZzo2OTk6XFx0ICBIVUdFVExCX1BBR0VfT1JERVIgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgSHVnZVRMQiBwYWdlIHNpemVzIGF2YWlsYWJsZVxcbm1tL0tjb25maWctNzAwLVxcdCAgb24gYSBwbGF0Zm9ybS5cXG4tLVxcbm1tL0tjb25maWc9MTAwMD1jb25maWcgUEdUQUJMRV9IQVNfSFVHRV9MRUFWRVNcXG5tbS9LY29uZmlnOjEwMDE6XFx0ZGVmX2Jvb2wgVFJBTlNQQVJFTlRfSFVHRVBBR0UgfHwgSFVHRVRMQl9QQUdFXFxubW0vS2NvbmZpZy0xMDAyLVxcbi0tXFxubW0vS2NvbmZpZz0xMDA2PWNvbmZpZyBIQVZFX0dJR0FOVElDX0ZPTElPU1xcbm1tL0tjb25maWc6MTAwNzpcXHRkZWZfYm9vbCAoSFVHRVRMQl9QQUdFIFxcdTAwMjZcXHUwMDI2IEFSQ0hfSEFTX0dJR0FOVElDX1BBR0UpIHx8IFxcXFxcXG5tbS9LY29uZmlnLTEwMDgtXFx0XFx0IChaT05FX0RFVklDRSBcXHUwMDI2XFx1MDAyNiBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDoyMTozMy40ODg2NzkwNTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDA3OTc1MDI5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqQ2hlY2tpbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBIdWdlVExCRlMgU3VwcG9ydCoqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHN0YXR1cyBvZiBIdWdlVExCRlMgd2l0aGluIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIGBmcy9LY29uZmlnYC4gSSdsbCBuZWVkIHRvIG9wZW4gdGhhdCBmaWxlIGFuZCBzZWFyY2ggdGhyb3VnaCBpdC4gSXTigJlzIHRoZSB1c3VhbCBzdGFydGluZyBwb2ludCBmb3IgZmVhdHVyZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLCBzbyBJIGV4cGVjdCB0byBmaW5kIHRoZSBuZWNlc3NhcnkgZGVmaW5pdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB0aGVyZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHdoZXRoZXIgaXQncyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgYnVpbHQgYXMgYSBtb2R1bGUsIGFsb25nIHdpdGggYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0dXMgYW5kIHRha2UgYW55IG5lY2Vzc2FyeSBmdXJ0aGVyIHN0ZXBzLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5OTMsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDoyMTo0My41Njg0MzEwMzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5NzU3MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSFVHRVRMQl9QQUdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvS2NvbmZpZz0yNjI9aWYgSFVHRVRMQkZTXFxuZnMvS2NvbmZpZzoyNjM6Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQX0RFRkFVTFRfT05cXG5mcy9LY29uZmlnLTI2NC1cXHRib29sIFxcXCJIdWdlVExCIFZtZW1tYXAgT3B0aW1pemF0aW9uIChIVk8pIGRlZmF1bHRzIHRvIG9uXFxcIlxcbmZzL0tjb25maWctMjY1LVxcdGRlZmF1bHQgblxcbmZzL0tjb25maWc6MjY2OlxcdGRlcGVuZHMgb24gSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcXG5mcy9LY29uZmlnLTI2Ny1cXHRoZWxwXFxuLS1cXG5mcy9LY29uZmlnPTI3MT1lbmRpZiAjIEhVR0VUTEJGU1xcbmZzL0tjb25maWctMjcyLVxcbmZzL0tjb25maWc6MjczOmNvbmZpZyBIVUdFVExCX1BBR0VcXG5mcy9LY29uZmlnLTI3NC1cXHRkZWZfYm9vbCBIVUdFVExCRlNcXG4tLVxcbmZzL0tjb25maWctMjc2LVxcbmZzL0tjb25maWc6Mjc3OmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxcbmZzL0tjb25maWc6Mjc4OlxcdGRlZl9ib29sIEhVR0VUTEJfUEFHRVxcbmZzL0tjb25maWctMjc5LVxcdGRlcGVuZHMgb24gQVJDSF9XQU5UX09QVElNSVpFX0hVR0VUTEJfVk1FTU1BUFxcbi0tXFxuZnMvS2NvbmZpZz0yODM9Y29uZmlnIEhVR0VUTEJfUE1EX1BBR0VfVEFCTEVfU0hBUklOR1xcbmZzL0tjb25maWc6Mjg0OlxcdGRlZl9ib29sIEhVR0VUTEJfUEFHRVxcbmZzL0tjb25maWctMjg1LVxcdGRlcGVuZHMgb24gQVJDSF9XQU5UX0hVR0VfUE1EX1NIQVJFIFxcdTAwMjZcXHUwMDI2IFNQTElUX1BNRF9QVExPQ0tTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjIxOjQzLjYzNTQxNTk2NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTk1NTM2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkRpZ2dpbmcgaW50byBIdWdlVExCIFBvaXNvbiBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IEh1Z2VUTEIncyBoZXJlLCBhbmQgSSBuZWVkIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgaG93IGhhcmR3YXJlIHBvaXNvbmluZyBpcyBjbGVhcmVkIHVwLiBUaGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGZvciB0aGlzIHdob2xlIGFyZWEgc2VlbXMgdG8gYmUgYEhVR0VUTEJGU2AuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBleGFjdCBtZWNoYW5pc20gZm9yIHRoaXMsIHNvIEkgc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGJ5IGNoZWNraW5nIGBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uYC4gSSdsbCBmaW5kIHRoaXMgZnVuY3Rpb24ncyBkZWZpbml0aW9uIGluIGVpdGhlciBgbW0vaHVnZXRsYi5jYCBvciwgcG90ZW50aWFsbHksIGl0cyBkZWNsYXJhdGlvbiBpbiBgaW5jbHVkZS9saW51eC9odWdldGxiLmhgLiBUaGF0J2xsIGJlIHRoZSBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyBvZiBob3cgdGhlc2UgcG9pc29uZWQgcGFnZXMgYXJlIGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDoyMTo0Ny4xNTQ5NzI4MjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMTQ0MDc5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaD04ODU9aW50IGRpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpb3ModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC04ODgtI2lmZGVmIENPTkZJR19NRU1PUllfRkFJTFVSRVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjg4OTpleHRlcm4gdm9pZCBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTg5MC0jZWxzZVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjg5MTpzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbihzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTg5Mi17XFxuLS1cXG5tbS9odWdldGxiLmM9MTM3Mz1zdGF0aWMgdm9pZCBmb2xpb19jbGVhcl9odWdldGxiKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdldGxiLmMtMTM3OS1cXHRpZiAodW5saWtlbHkoZm9saW9fdGVzdF9od3BvaXNvbihmb2xpbykpKVxcbm1tL2h1Z2V0bGIuYzoxMzgwOlxcdFxcdGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pO1xcbm1tL2h1Z2V0bGIuYy0xMzgxLVxcbi0tXFxubW0vbWVtb3J5LWZhaWx1cmUuYz0xOTg0PXN0YXRpYyB1bnNpZ25lZCBsb25nIGZvbGlvX2ZyZWVfcmF3X2h3cChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBib29sIG1vdmVfZmxhZylcXG4tLVxcbm1tL21lbW9yeS1mYWlsdXJlLmMtMjAwMi1cXG5tbS9tZW1vcnktZmFpbHVyZS5jOjIwMDM6dm9pZCBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vbWVtb3J5LWZhaWx1cmUuYy0yMDA0LXtcXG4tLVxcbm1tL21lbW9yeS1mYWlsdXJlLmM9MjA4MT1zdGF0aWMgaW50IHRyeV9tZW1vcnlfZmFpbHVyZV9odWdldGxiKHVuc2lnbmVkIGxvbmcgcGZuLCBpbnQgZmxhZ3MpXFxuLS1cXG5tbS9tZW1vcnktZmFpbHVyZS5jLTIxMTgtXFx0aWYgKGh3cG9pc29uX2ZpbHRlcihwKSkge1xcbm1tL21lbW9yeS1mYWlsdXJlLmM6MjExOTpcXHRcXHRmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKGZvbGlvKTtcXG5tbS9tZW1vcnktZmFpbHVyZS5jLTIxMjAtXFx0XFx0aWYgKG1pZ3JhdGFibGVfY2xlYXJlZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjE6NDguODg2NDE4NjI1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzOTg3NTgzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIdWdlVExCIEZvbGlvIFBvaXNvbiBDbGVhcmluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG1tL2h1Z2V0bGIuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIGltcG9ydGFudCDigJMgSHVnZVRMQiBtZW1vcnkgbWFuYWdlbWVudCBpcyBjcml0aWNhbC4gTXkgaW5pdGlhbCBzY2FuIHNob3dzIGEgcmVmYWN0b3JpbmcsIHNwZWNpZmljYWxseSBhcm91bmQgaG93IGhhcmR3YXJlIHBvaXNvbiAoaHdwb2lzb24pIGZsYWdzIGFyZSBoYW5kbGVkIHdoZW4gZnJlZWluZyBIdWdlVExCIGZvbGlvcy4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBhIG5ldyBoZWxwZXIgZnVuY3Rpb24sIGBmb2xpb19jbGVhcl9odWdldGxiKHN0cnVjdCBmb2xpbyAqZm9saW8pYC4gVGhpcyBmdW5jdGlvbiBjZW50cmFsaXplcyB0aGUgbG9naWMgZm9yIGNsZWFyaW5nIEh1Z2VUTEItc3BlY2lmaWMgbWV0YWRhdGEsIGNydWNpYWxseSBpbmNsdWRpbmcgYW55IGh3cG9pc29uIGZsYWdzLlxuXG5UaGUgcGF0Y2gncyBpbnRlbnQgYXBwZWFycyBzdHJhaWdodGZvcndhcmQ6IHJlcGxhY2UgZGlyZWN0IGNhbGxzIHRvIGBfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pYCB3aXRoIHRoaXMgbmV3IGhlbHBlci4gSXQncyBoYXBwZW5pbmcgaW4gc2V2ZXJhbCBrZXkgcGxhY2VzOiBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGBidWxrX3ZtZW1tYXBfcmVzdG9yZV9lcnJvcmAsIGFuZCBgdXBkYXRlX2FuZF9mcmVlX3BhZ2VzX2J1bGtgLiBUaGF0J3MgYSBnb29kIHNpZ247IGNvbnNvbGlkYXRpbmcgdGhpcyBsb2dpYyBtYWtlcyB0aGUgY29kZSBjbGVhbmVyIGFuZCBlYXNpZXIgdG8gbWFpbnRhaW4uIFBsdXMsIGl0IGVsaW1pbmF0ZXMgcG90ZW50aWFsIGluY29uc2lzdGVuY2llcyBpbiBob3cgdGhlc2UgZmxhZ3MgYXJlIGNsZWFyZWQuIFRoZXJlJ3MgYWxzbyBhIHJlbW92YWwgb2YgYSBjYWxsIHRvIGBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKGZvbGlvKWAgaW5zaWRlIG9mIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYCBiZWNhdXNlIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGhhbmRsZWQgYnkgYGZvbGlvX2NsZWFyX2h1Z2V0bGJgLlxuXG5Ob3csIHRoZSB0aGluZyB0aGF0IG1ha2VzIG1lIHBhdXNlIGlzIHRoZSBjaGFuZ2Ugd2l0aGluIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYC4gUHJldmlvdXNseSwgYGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb25gIHdhcyBjYWxsZWQgKm91dHNpZGUqIHRoZSBgaHVnZXRsYl9sb2NrYCBzcGlubG9jaywgYnV0IG5vdywgaXQncyBjYWxsZWQgKmluc2lkZSogYGZvbGlvX2NsZWFyX2h1Z2V0bGJgIHdoaWNoIGlzLCBpbiB0dXJuLCBjYWxsZWQgaW5zaWRlIHRoZSBzcGlubG9jay4gVGhpcyBpcyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQgY2hhbmdlIGluIGxvY2tpbmcgc2VtYW50aWNzLiBJdCBpbXBsaWVzIHNvbWUgY2hhbmdlIGluIHRoZSBvcmRlcmluZyBvZiBvcGVyYXRpb25zIG9yIHRoZSBwcm90ZWN0aW9uIG9mIGNyaXRpY2FsIHNlY3Rpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyB3YXMgZG9uZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zIHRoYXQgYXJlIGludHJvZHVjZWQgb3IgcmVtb3ZlZC5cblxuVGhpcyBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGZpeC4gVGhlIGNvbW1lbnRzIHN1Z2dlc3QgdGhhdCB0aGVyZSB3YXMgYW4gaXNzdWUgd2hlcmUgYF9fZm9saW9fY2xlYXJfaHVnZXRsYmAgbWlnaHQgYmUgY2FsbGVkIHdpdGhvdXQgY2xlYXJpbmcgdGhlIGh3cG9pc29uIGZsYWdzIGluIHNvbWUgcGF0aHMuIFRoYXQncyBhIGNyaXRpY2FsIG1lbW9yeSBzYWZldHkgY29uY2Vybi4gVGhpcyByZWZhY3RvcmluZyBjbGVhcmx5IGFpbXMgdG8gYWRkcmVzcyBpdC4gQW5kLCBzaW5jZSBpdCBhZmZlY3RzIGNvcmUgSHVnZVRMQiBhbmQgcG90ZW50aWFsbHkgZXJyb3IgaGFuZGxpbmcgaXQgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgcmVsYXRlZCB0byBod3BvaXNvbiBvciBIdWdlVExCIG1hbmFnZW1lbnQuXG5cbk5vdywgbGV0J3Mgc2VlIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQuIEkgbmVlZCBgSFVHRVRMQkZTYCwgYEhVR0VUTEJfUEFHRWAsIGFuZCBjcnVjaWFsbHksIGBNRU1PUllfRkFJTFVSRWAuIFRoZSBsYXN0IG9uZSBpcyBpbXBvcnRhbnQsIGFzIGBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uYCBpcyBsaWtlbHkgYW4gZW1wdHkgaW5saW5lIGZ1bmN0aW9uIGlmIGBNRU1PUllfRkFJTFVSRWAgaXNuJ3QgZW5hYmxlZC4gTGV0J3MgY29uZmlybSB0aGF0IHRoYXQgY29uZmlnIGlzIHNldCB0byBlbnN1cmUgdGhlIGZ1enplciBnZXRzIHRoZSBkZXNpcmVkIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTYxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjIyOjAxLjI4NTE3OTk4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5MjIxMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRU1PUllfRkFJTFVSRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9NzYwPWNvbmZpZyBBUkNIX1NVUFBPUlRTX01FTU9SWV9GQUlMVVJFXFxuLS1cXG5tbS9LY29uZmlnLTc2Mi1cXG5tbS9LY29uZmlnOjc2Mzpjb25maWcgTUVNT1JZX0ZBSUxVUkVcXG5tbS9LY29uZmlnLTc2NC1cXHRkZXBlbmRzIG9uIE1NVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDoyMjowMS40OTQ0MDk1MzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTkxMjk0ODgzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgRmFpbHVyZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGlzIGBNRU1PUllfRkFJTFVSRWAgY29uZmlndXJhdGlvbiwgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuIE15IGZvY3VzIGlzIG9uIHRoZSBzcGVjaWZpYyBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhpcy5cblxuTGV0J3Mgc2Vl4oCmIEkgbmVlZCB0byBjaGVjayBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gIGFuZCB0aGF0ICpvdGhlciogcmVsYXRlZCBmdW5jdGlvbiwgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbmFtZWQgYF9fdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9gLiBIbW0sIHRoZSBkb3VibGUgdW5kZXJzY29yZSBzdWdnZXN0cyBpdCdzIGxpa2VseSBhIHN0YXRpYyBmdW5jdGlvbiwgbWF5YmUgaXQncyBleHBvc2VkIGV4dGVybmFsbHkgYXMgYHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYC4gVGhhdCdzIGEgc3Ryb25nIGxlYWQuIEkgYWxzbyBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yYCBhbmQgYHVwZGF0ZV9hbmRfZnJlZV9wYWdlc19idWxrYC4gVGhleSBzZWVtIGNsb3NlbHkgYWxpZ25lZCB0byB0aGlzIHBhcnRpY3VsYXIgZmFpbHVyZSBzY2VuYXJpbyBhbmQgaXQncyBhbHNvIHByb2JhYmx5IHN0YXRpYy5cblxuUmlnaHQsIEknbGwgc3RhcnQgYnkgZGl2aW5nIGludG8gYG1tL2h1Z2V0bGIuY2AgdG8gZXhhbWluZSBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gIGFuZCB0aGVuIGB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AuIFRoYXQgd2lsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaG93IHRoZSBodWdlIHBhZ2UgbWFuYWdlbWVudCBpbnRlcmFjdHMgd2l0aCB0aGlzIG1lbW9yeSBmYWlsdXJlLiBUaGlzIHdpbGwgcHJvYmFibHkgbGVhZCBtZSB0byB0aGUgb3RoZXIgZnVuY3Rpb25zIGFzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MjksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MTEuNDA3MzYxOTcyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU0MDg4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm9pZCByZW1vdmVfaHVnZXRsYl9mb2xpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9odWdldGxiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTEzNzM9c3RhdGljIHZvaWQgZm9saW9fY2xlYXJfaHVnZXRsYihzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jLTEzOTItICovXFxubW0vaHVnZXRsYi5jOjEzOTM6dm9pZCByZW1vdmVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbm1tL2h1Z2V0bGIuYy0xMzk0LVxcdFxcdFxcdCAgYm9vbCBhZGp1c3Rfc3VycGx1cylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MTEuNTQyNzc2OTkzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTcyMTAyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIGB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFzIGFuIGV4cGVydDpcblxuKipBbmFseXppbmcgdGhlIGB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCB0aGUgbmFtZSBpdHNlbGYgYWxyZWFkeSBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIGB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AuIEhtbSwgc28gdGhpcyBsaWtlbHkgaGFuZGxlcyB1cGRhdGluZyBzb21lIG1ldGFkYXRhIG9yIHN0YXRlIHJlbGF0ZWQgdG8gYSBIdWdlVExCIGZvbGlvIChhIHBhZ2Utc2l6ZWQgY2h1bmsgbWFuYWdlZCB3aXRoaW4gdGhlIEh1Z2VUTEIgc3lzdGVtKSAqYmVmb3JlKiBmcmVlaW5nIGl0LiBUaGlzIGlzIGEgY3JpdGljYWwgcG9pbnQsIGFuZCBvbmUgSSBrbm93IGlzIG9mdGVuIHRyaWNreS4gSHVnZVRMQiBtYW5hZ2VtZW50IGlzIGFsbCBhYm91dCBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbiwgc28gYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgcmVzb3VyY2UgbGVha3MgYXJlIHNvbWV0aGluZyB0byBiZSBpbW1lZGlhdGVseSBhd2FyZSBvZi4gSSBrbm93IGhvdyBpbXBvcnRhbnQgaXQgaXMgdG8gaGFuZGxlIGFsbCB0aGUgbmVjZXNzYXJ5IGhvdXNla2VlcGluZyBiZWZvcmUgZGVhbGxvY2F0aW5nIHRoZSBtZW1vcnkuIExldCdzIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgJ3VwZGF0ZScgbWVhbnMgaW4gdGhpcyBjb250ZXh0IOKAkyBpcyBpdCByZWZlcmVuY2UgY291bnRpbmcsIHN0YXR1cyBmbGFncywgc29tZXRoaW5nIGVsc2U/IEkgaG9wZSBpdCdzIHdlbGwtZG9jdW1lbnRlZCEgVGltZSB0byBsb29rIGF0IHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTY3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MTQuOTM5OTkwNDE3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQxNjY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9odWdldGxiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTE0Mjk9dm9pZCBhZGRfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE0NTgtXFxubW0vaHVnZXRsYi5jOjE0NTk6c3RhdGljIHZvaWQgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbm1tL2h1Z2V0bGIuYy0xNDYwLVxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdldGxiLmMtMTUwOC0vKlxcbm1tL2h1Z2V0bGIuYzoxNTA5OiAqIEFzIHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKCkgY2FuIGJlIGNhbGxlZCB1bmRlciBhbnkgY29udGV4dCwgc28gd2UgY2Fubm90XFxubW0vaHVnZXRsYi5jLTE1MTAtICogdXNlIEdGUF9LRVJORUwgdG8gYWxsb2NhdGUgdm1lbW1hcCBwYWdlcy4gSG93ZXZlciwgd2UgY2FuIGRlZmVyIHRoZVxcbi0tXFxubW0vaHVnZXRsYi5jPTE1MjE9c3RhdGljIHZvaWQgZnJlZV9ocGFnZV93b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubW0vaHVnZXRsYi5jLTE1NDItXFxubW0vaHVnZXRsYi5jOjE1NDM6XFx0XFx0X191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbyk7XFxubW0vaHVnZXRsYi5jLTE1NDQtXFxuLS1cXG5tbS9odWdldGxiLmM9MTU1MD1zdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfZnJlZV9ocGFnZV93b3JrKHN0cnVjdCBoc3RhdGUgKmgpXFxuLS1cXG5tbS9odWdldGxiLmMtMTU1NS1cXG5tbS9odWdldGxiLmM6MTU1NjpzdGF0aWMgdm9pZCB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbm1tL2h1Z2V0bGIuYy0xNTU3LVxcdFxcdFxcdFxcdCBib29sIGF0b21pYylcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xNTU5LVxcdGlmICghZm9saW9fdGVzdF9odWdldGxiX3ZtZW1tYXBfb3B0aW1pemVkKGZvbGlvKSB8fCAhYXRvbWljKSB7XFxubW0vaHVnZXRsYi5jOjE1NjA6XFx0XFx0X191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbyk7XFxubW0vaHVnZXRsYi5jLTE1NjEtXFx0XFx0cmV0dXJuO1xcbi0tXFxubW0vaHVnZXRsYi5jPTE1NzU9c3RhdGljIHZvaWQgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xNTkzLVxcdFxcdFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2aHVnZXRsYl9sb2NrKTtcXG5tbS9odWdldGxiLmM6MTU5NDpcXHRcXHRcXHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy0xNTk1LVxcdFxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbi0tXFxubW0vaHVnZXRsYi5jLTE2MTgtXFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZodWdldGxiX2xvY2spO1xcbm1tL2h1Z2V0bGIuYzoxNjE5OlxcdFxcdFxcdFxcdHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTE2MjAtXFx0XFx0XFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuLS1cXG5tbS9odWdldGxiLmM9MTYyNj1zdGF0aWMgdm9pZCB1cGRhdGVfYW5kX2ZyZWVfcGFnZXNfYnVsayhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE2NjEtXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGZvbGlvLCB0X2ZvbGlvLCBcXHUwMDI2bm9uX2h2b19mb2xpb3MsIGxydSkge1xcbm1tL2h1Z2V0bGIuYzoxNjYyOlxcdFxcdHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTE2NjMtXFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuLS1cXG5tbS9odWdldGxiLmM9MTY3OD12b2lkIGZyZWVfaHVnZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jLTE3MzItXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aHVnZXRsYl9sb2NrLCBmbGFncyk7XFxubW0vaHVnZXRsYi5jOjE3MzM6XFx0XFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIHRydWUpO1xcbm1tL2h1Z2V0bGIuYy0xNzM0LVxcdH0gZWxzZSBpZiAoaC1cXHUwMDNlc3VycGx1c19odWdlX3BhZ2VzX25vZGVbbmlkXSkge1xcbi0tXFxubW0vaHVnZXRsYi5jLTE3MzctXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aHVnZXRsYl9sb2NrLCBmbGFncyk7XFxubW0vaHVnZXRsYi5jOjE3Mzg6XFx0XFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIHRydWUpO1xcbm1tL2h1Z2V0bGIuYy0xNzM5LVxcdH0gZWxzZSB7XFxuLS1cXG5tbS9odWdldGxiLmM9MTk1Nj1pbnQgZGlzc29sdmVfZnJlZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdldGxiLmMtMjAyNi1cXG5tbS9odWdldGxiLmM6MjAyNzpcXHRcXHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy0yMDI4LVxcdFxcdHJldHVybiByYztcXG4tLVxcbm1tL2h1Z2V0bGIuYz0yNjMyPXN0YXRpYyBpbnQgYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGZvbGlvICpvbGRfZm9saW8sXFxuLS1cXG5tbS9odWdldGxiLmMtMjcwNC1cXHRcXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNmh1Z2V0bGJfbG9jayk7XFxubW0vaHVnZXRsYi5jOjI3MDU6XFx0XFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgb2xkX2ZvbGlvLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTI3MDYtXFx0fVxcbi0tXFxubW0vaHVnZXRsYi5jLTI3MTItXFx0aWYgKG5ld19mb2xpbylcXG5tbS9odWdldGxiLmM6MjcxMzpcXHRcXHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBuZXdfZm9saW8sIGZhbHNlKTtcXG5tbS9odWdldGxiLmMtMjcxNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MTQuOTg3NDEzMzM2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNzkxNzQzNzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBIdWdlIFBhZ2UgRm9saW8gUmVtb3ZhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHNlZSBpdCdzIHRvdWNoaW5nIGEgZmV3IGtleSBmdW5jdGlvbnMgcmVsYXRlZCB0byBoYW5kbGluZyBodWdlIHBhZ2VzOiBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGBidWxrX3ZtZW1tYXBfcmVzdG9yZV9lcnJvcmAsIGFuZCBgdXBkYXRlX2FuZF9mcmVlX3BhZ2VzX2J1bGtgLiBJbnRlcmVzdGluZy5cblxuRmlyc3QgdGhvdWdodCBpcyB0aGF0IGByZW1vdmVfaHVnZXRsYl9mb2xpb2AgaXNuJ3Qgc3RhdGljLCBtZWFuaW5nIGl0J3MgbGlrZWx5IGNhbGxlZCBmcm9tIG1vcmUgcGxhY2VzIHRoYW4ganVzdCB3aXRoaW4gdGhpcyBtb2R1bGUuIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYCBpcyBzdGF0aWMsIHdoaWNoIGxpbWl0cyBpdHMgc2NvcGUsIGJ1dCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgZnJlZV9odWdlX2ZvbGlvYCBhbmQgYGRpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpb2AgY2FsbCBpdC4gSSBrbm93IHRoZXNlIGZ1bmN0aW9ucyBsaWtlIHRoZSBiYWNrIG9mIG15IGhhbmQsIHNvIHRoYXQncyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIGFzIEkgZGl2ZSBkZWVwZXIuXG5cbkFuZCwgYXMgSSBleHBlY3RlZCwgYm90aCBgZnJlZV9odWdlX2ZvbGlvYCBhbmQgYGRpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpb2AgYXJlIG5vbi1zdGF0aWMuIFNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyB0aGlzIHBhdGNoIGltcGFjdHMgdGhlaXIgaW50ZXJwbGF5IHdpdGggdGhlIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb24uXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgZ29pbmcgdG8gYmUgdG8gc2VlICp3aGVyZSogYHJlbW92ZV9odWdldGxiX2ZvbGlvYCBpcyBhY3R1YWxseSBiZWluZyBjYWxsZWQgZnJvbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgZ3JhcGggdG8gZnVsbHkgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3ODAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MjUuNzc5MTU5OTU3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzE1MDcxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZW1vdmVfaHVnZXRsYl9mb2xpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTEzNzM9c3RhdGljIHZvaWQgZm9saW9fY2xlYXJfaHVnZXRsYihzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jLTEzOTItICovXFxubW0vaHVnZXRsYi5jOjEzOTM6dm9pZCByZW1vdmVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbm1tL2h1Z2V0bGIuYy0xMzk0LVxcdFxcdFxcdCAgYm9vbCBhZGp1c3Rfc3VycGx1cylcXG4tLVxcbm1tL2h1Z2V0bGIuYz0xNTIxPXN0YXRpYyB2b2lkIGZyZWVfaHBhZ2Vfd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xNTM3LVxcdFxcdCAqIGZvbGlvX2hzdGF0ZSgpIGlzIGdvaW5nIHRvIHRyaWdnZXIgYmVjYXVzZSBhIHByZXZpb3VzIGNhbGwgdG9cXG5tbS9odWdldGxiLmM6MTUzODpcXHRcXHQgKiByZW1vdmVfaHVnZXRsYl9mb2xpbygpIHdpbGwgY2xlYXIgdGhlIGh1Z2V0bGIgYml0LCBzbyBkb1xcbm1tL2h1Z2V0bGIuYy0xNTM5LVxcdFxcdCAqIG5vdCB1c2UgZm9saW9faHN0YXRlKCkgZGlyZWN0bHkuXFxuLS1cXG5tbS9odWdldGxiLmM9MTY3OD12b2lkIGZyZWVfaHVnZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jLTE3MzAtXFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYl90ZW1wb3JhcnkoZm9saW8pKSB7XFxubW0vaHVnZXRsYi5jOjE3MzE6XFx0XFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGZhbHNlKTtcXG5tbS9odWdldGxiLmMtMTczMi1cXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZodWdldGxiX2xvY2ssIGZsYWdzKTtcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xNzM1LVxcdFxcdC8qIHJlbW92ZSB0aGUgcGFnZSBmcm9tIGFjdGl2ZSBsaXN0ICovXFxubW0vaHVnZXRsYi5jOjE3MzY6XFx0XFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIHRydWUpO1xcbm1tL2h1Z2V0bGIuYy0xNzM3LVxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmh1Z2V0bGJfbG9jaywgZmxhZ3MpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTE5MTg9c3RhdGljIHN0cnVjdCBmb2xpbyAqcmVtb3ZlX3Bvb2xfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE5MzMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZm9saW8sIGxydSk7XFxubW0vaHVnZXRsYi5jOjE5MzQ6XFx0XFx0XFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGFjY3Rfc3VycGx1cyk7XFxubW0vaHVnZXRsYi5jLTE5MzUtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5tbS9odWdldGxiLmM9MTk1Nj1pbnQgZGlzc29sdmVfZnJlZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdldGxiLmMtMTk5OC1cXHRcXHRcXHRhZGp1c3Rfc3VycGx1cyA9IHRydWU7XFxubW0vaHVnZXRsYi5jOjE5OTk6XFx0XFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGFkanVzdF9zdXJwbHVzKTtcXG5tbS9odWdldGxiLmMtMjAwMC1cXHRcXHRoLVxcdTAwM2VtYXhfaHVnZV9wYWdlcy0tO1xcbi0tXFxubW0vaHVnZXRsYi5jLTIwMTEtXFx0XFx0ICogVGhlIGZvbGlvX3Rlc3RfaHVnZXRsYiBjaGVjayBoZXJlIGlzIGJlY2F1c2VcXG5tbS9odWdldGxiLmM6MjAxMjpcXHRcXHQgKiByZW1vdmVfaHVnZXRsYl9mb2xpbyB3aWxsIGNsZWFyIGh1Z2V0bGIgZm9saW8gZmxhZyBmb3JcXG5tbS9odWdldGxiLmMtMjAxMy1cXHRcXHQgKiBub24tdm1lbW1hcCBvcHRpbWl6ZWQgaHVnZXRsYiBmb2xpb3MuXFxuLS1cXG5tbS9odWdldGxiLmM9MjYzMj1zdGF0aWMgaW50IGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqb2xkX2ZvbGlvLFxcbi0tXFxubW0vaHVnZXRsYi5jLTI2OTEtXFx0XFx0ICovXFxubW0vaHVnZXRsYi5jOjI2OTI6XFx0XFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oaCwgb2xkX2ZvbGlvLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTI2OTMtXFxuLS1cXG5tbS9odWdldGxiLmM9MzY5Nz1zdGF0aWMgdm9pZCB0cnlfdG9fZnJlZV9sb3coc3RydWN0IGhzdGF0ZSAqaCwgdW5zaWduZWQgbG9uZyBjb3VudCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0zNzE3LVxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbm1tL2h1Z2V0bGIuYzozNzE4OlxcdFxcdFxcdHJlbW92ZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTM3MTktXFx0XFx0XFx0bGlzdF9hZGQoXFx1MDAyNmZvbGlvLVxcdTAwM2VscnUsIFxcdTAwMjZwYWdlX2xpc3QpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTQwMTc9bG9uZyBkZW1vdGVfcG9vbF9odWdlX3BhZ2Uoc3RydWN0IGhzdGF0ZSAqc3JjLCBub2RlbWFza190ICpub2Rlc19hbGxvd2VkLFxcbi0tXFxubW0vaHVnZXRsYi5jLTQwNDItXFxubW0vaHVnZXRsYi5jOjQwNDM6XFx0XFx0XFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oc3JjLCBmb2xpbywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy00MDQ0LVxcdFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1LCBcXHUwMDI2bGlzdCk7XFxuLS1cXG5tbS9odWdldGxiX2ludGVybmFsLmg9NzE9c3RhdGljIGlubGluZSBpbnQgaHN0YXRlX25leHRfbm9kZV90b19mcmVlKHN0cnVjdCBoc3RhdGUgKmgsIG5vZGVtYXNrX3QgKm5vZGVzX2FsbG93ZWQpXFxuLS1cXG5tbS9odWdldGxiX2ludGVybmFsLmgtOTQtXFxubW0vaHVnZXRsYl9pbnRlcm5hbC5oOjk1OmV4dGVybiB2b2lkIHJlbW92ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8sXFxubW0vaHVnZXRsYl9pbnRlcm5hbC5oLTk2LVxcdFxcdFxcdFxcdCBib29sIGFkanVzdF9zdXJwbHVzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MjUuODQyMzE3NjkzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MzA3NzgyNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjo5MjIyLCJPdXRwdXRUb2tlbnMiOjIzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MzMuNDczMDk4ODM5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk4ODQxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJfUEFHRVwiLFxuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZW1vdmVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwidXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImRpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImZyZWVfaHVnZV9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBjbGVhcmluZyB0aGUgaHVnZXRsYiBmbGFnIGZyb20gYSBmb2xpby4gSXQgaW50cm9kdWNlcyBgZm9saW9fY2xlYXJfaHVnZXRsYmAgd2hpY2ggYWxzbyBjbGVhcnMgdGhlIGh3cG9pc29uIGZsYWcgaWYgaXQncyBzZXQsIG1vdmluZyBpdCB0byB0aGUgZXJyb3IgcGFnZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGh1Z2V0bGIgcGFnZSBmcmVlaW5nIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4gSXQgYWZmZWN0cyBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3JgLiBUaGUgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBgSFVHRVRMQl9QQUdFYCBhbmQgYE1FTU9SWV9GQUlMVVJFYCBhcmUgcmVxdWlyZWQgdG8gdGVzdCB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCX1BBR0VcIixcbiAgICBcIk1FTU9SWV9GQUlMVVJFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVtb3ZlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcInVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJkaXNzb2x2ZV9mcmVlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJmcmVlX2h1Z2VfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgY2xlYXJpbmcgdGhlIGh1Z2V0bGIgZmxhZyBmcm9tIGEgZm9saW8uIEl0IGludHJvZHVjZXMgYGZvbGlvX2NsZWFyX2h1Z2V0bGJgIHdoaWNoIGFsc28gY2xlYXJzIHRoZSBod3BvaXNvbiBmbGFnIGlmIGl0J3Mgc2V0LCBtb3ZpbmcgaXQgdG8gdGhlIGVycm9yIHBhZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBodWdldGxiIHBhZ2UgZnJlZWluZyBhbmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuIEl0IGFmZmVjdHMgYHJlbW92ZV9odWdldGxiX2ZvbGlvYCwgYF9fdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9gLCBhbmQgYGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yYC4gVGhlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4gYEhVR0VUTEJfUEFHRWAgYW5kIGBNRU1PUllfRkFJTFVSRWAgYXJlIHJlcXVpcmVkIHRvIHRlc3QgdGhpcyBjb2RlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrdfq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 00:17:47 +0000 UTC FinishedAt: 2026-07-30 00:22:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "ae98967f6e94c2239d81795f9f6c987add5518c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLB_PAGE", "MEMORY_FAILURE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "ae98967f6e94c2239d81795f9f6c987add5518c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLB_PAGE", "MEMORY_FAILURE" ], "series_id": "8fbdcfba-9b2b-4029-aa4e-29193d3aac67" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "remove_hugetlb_folio", "update_and_free_hugetlb_folio", "dissolve_free_hugetlb_folio", "alloc_and_dissolve_hugetlb_folio", "free_huge_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7LAogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlbW92ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2Rpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDtmcmVlX2h1Z2VfZm9saW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIGNsZWFyaW5nIHRoZSBodWdldGxiIGZsYWcgZnJvbSBhIGZvbGlvLiBJdCBpbnRyb2R1Y2VzIGBmb2xpb19jbGVhcl9odWdldGxiYCB3aGljaCBhbHNvIGNsZWFycyB0aGUgaHdwb2lzb24gZmxhZyBpZiBpdCYjMzk7cyBzZXQsIG1vdmluZyBpdCB0byB0aGUgZXJyb3IgcGFnZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGh1Z2V0bGIgcGFnZSBmcmVlaW5nIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4gSXQgYWZmZWN0cyBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3JgLiBUaGUgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBgSFVHRVRMQl9QQUdFYCBhbmQgYE1FTU9SWV9GQUlMVVJFYCBhcmUgcmVxdWlyZWQgdG8gdGVzdCB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDoyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU3OTg1N2Y0ODUwM2Q5YzRiZTY5Y2ZhMWY2MjNiZGVkNTZmMmJlM2FcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAzMCAwMDoyMToyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmNcbmluZGV4IGE3N2MzYzFjYjg5NDMuLjMxZWRiNzhmMDkzMDQgMTAwNjQ0XG4tLS0gYS9tbS9odWdldGxiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2V0bGIuY1xuQEAgLTEzNzAsNiAmIzQzOzEzNzAsMTggQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssIGludFxuIH1cbiAjZW5kaWZcbiBcbiYjNDM7c3RhdGljIHZvaWQgZm9saW9fY2xlYXJfaHVnZXRsYihzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuJiM0Mzt7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBNb3ZlIEhXUG9pc29uIGZsYWcgdG8gZWFjaCBlcnJvciBwYWdlXG4mIzQzO1x0ICogd2hpY2ggbWFrZXMgYW55IGhlYWx0aHkgcGFnZXMgcmV1c2FibGUuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHVubGlrZWx5KGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8pKSlcbiYjNDM7XHRcdGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pO1xuJiM0MztcbiYjNDM7XHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xuJiM0Mzt9XG4mIzQzO1xuIC8qXG4gICogUmVtb3ZlIGh1Z2V0bGIgZm9saW8gZnJvbSBsaXN0cy5cbiAgKiBJZiB2bWVtbWFwIGV4aXN0cyBmb3IgdGhlIGZvbGlvLCBjbGVhciB0aGUgaHVnZXRsYiBmbGFnIHNvIHRoYXQgdGhlXG5AQCAtMTQwOCw3ICYjNDM7MTQyMCw3IEBAIHZvaWQgcmVtb3ZlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdCAqIHRvIHRhaWwgc3RydWN0IHBhZ2VzLlxuIFx0ICovXG4gXHRpZiAoIWZvbGlvX3Rlc3RfaHVnZXRsYl92bWVtbWFwX29wdGltaXplZChmb2xpbykpXG4tXHRcdF9fZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4mIzQzO1x0XHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbiBcbiBcdGgtXHUwMDNlbnJfaHVnZV9wYWdlcy0tO1xuIFx0aC1cdTAwM2Vucl9odWdlX3BhZ2VzX25vZGVbbmlkXS0tO1xuQEAgLTE0ODIsMTcgJiM0MzsxNDk0LDEwIEBAIHN0YXRpYyB2b2lkIF9fdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbiBcdCAqL1xuIFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpIHtcbiBcdFx0c3Bpbl9sb2NrX2lycShcdTAwMjZodWdldGxiX2xvY2spO1xuLVx0XHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xuJiM0MztcdFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4gXHRcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZodWdldGxiX2xvY2spO1xuIFx0fVxuIFxuLVx0Lypcbi1cdCAqIE1vdmUgUGFnZUhXUG9pc29uIGZsYWcgZnJvbSBoZWFkIHBhZ2UgdG8gdGhlIHJhdyBlcnJvciBwYWdlcyxcbi1cdCAqIHdoaWNoIG1ha2VzIGFueSBoZWFsdGh5IHN1YnBhZ2VzIHJldXNhYmxlLlxuLVx0ICovXG4tXHRpZiAodW5saWtlbHkoZm9saW9fdGVzdF9od3BvaXNvbihmb2xpbykpKVxuLVx0XHRmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKGZvbGlvKTtcbi1cbiBcdFZNX0JVR19PTl9GT0xJTyhmb2xpb19yZWZfY291bnQoZm9saW8pLCBmb2xpbyk7XG4gXHRpZiAoZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpXG4gXHRcdGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKGZvbGlvKTtcbkBAIC0xNTg0LDcgJiM0MzsxNTg5LDcgQEAgc3RhdGljIHZvaWQgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCxcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGZvbGlvLCB0X2ZvbGlvLCBub25faHZvX2ZvbGlvcywgbHJ1KSB7XG4gXHRcdFx0bGlzdF9kZWwoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1KTtcbiBcdFx0XHRzcGluX2xvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4tXHRcdFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbiYjNDM7XHRcdFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4gXHRcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4gXHRcdFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGZhbHNlKTtcbiBcdFx0XHRjb25kX3Jlc2NoZWQoKTtcbkBAIC0xNjA5LDcgJiM0MzsxNjE0LDcgQEAgc3RhdGljIHZvaWQgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCxcbiBcdFx0XHR9IGVsc2Uge1xuIFx0XHRcdFx0bGlzdF9kZWwoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1KTtcbiBcdFx0XHRcdHNwaW5fbG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbi1cdFx0XHRcdF9fZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4mIzQzO1x0XHRcdFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4gXHRcdFx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbiBcdFx0XHRcdHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XG4gXHRcdFx0XHRjb25kX3Jlc2NoZWQoKTtcbkBAIC0xNjQyLDE0ICYjNDM7MTY0NywxNCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfYW5kX2ZyZWVfcGFnZXNfYnVsayhzdHJ1Y3QgaHN0YXRlICpoLFxuIFx0ICogc2hvdWxkIG9ubHkgYmUgcGFnZXMgb24gdGhlIG5vbl9odm9fZm9saW9zIGxpc3QuXG4gXHQgKiBEbyBub3RlIHRoYXQgdGhlIG5vbl9odm9fZm9saW9zIGxpc3QgY291bGQgYmUgZW1wdHkuXG4gXHQgKiBXaXRob3V0IEhWTyBlbmFibGVkLCByZXQgd2lsbCBiZSAwIGFuZCB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGxcbi1cdCAqIF9fZm9saW9fY2xlYXJfaHVnZXRsYiBhcyB0aGlzIHdhcyBkb25lIHByZXZpb3VzbHkuXG4mIzQzO1x0ICogZm9saW9fY2xlYXJfaHVnZXRsYiBhcyB0aGlzIHdhcyBkb25lIHByZXZpb3VzbHkuXG4gXHQgKi9cbiBcdFZNX1dBUk5fT04oIWxpc3RfZW1wdHkoZm9saW9fbGlzdCkpO1xuIFx0Vk1fV0FSTl9PTihyZXQgXHUwMDNjIDApO1xuIFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNm5vbl9odm9fZm9saW9zKSBcdTAwMjZcdTAwMjYgcmV0KSB7XG4gXHRcdHNwaW5fbG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShmb2xpbywgXHUwMDI2bm9uX2h2b19mb2xpb3MsIGxydSlcbi1cdFx0XHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xuJiM0MztcdFx0XHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbiBcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7LAogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlbW92ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2Rpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDtmcmVlX2h1Z2VfZm9saW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIGNsZWFyaW5nIHRoZSBodWdldGxiIGZsYWcgZnJvbSBhIGZvbGlvLiBJdCBpbnRyb2R1Y2VzIGBmb2xpb19jbGVhcl9odWdldGxiYCB3aGljaCBhbHNvIGNsZWFycyB0aGUgaHdwb2lzb24gZmxhZyBpZiBpdCYjMzk7cyBzZXQsIG1vdmluZyBpdCB0byB0aGUgZXJyb3IgcGFnZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGh1Z2V0bGIgcGFnZSBmcmVlaW5nIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4gSXQgYWZmZWN0cyBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3JgLiBUaGUgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBgSFVHRVRMQl9QQUdFYCBhbmQgYE1FTU9SWV9GQUlMVVJFYCBhcmUgcmVxdWlyZWQgdG8gdGVzdCB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU3OTg1N2Y0ODUwM2Q5YzRiZTY5Y2ZhMWY2MjNiZGVkNTZmMmJlM2EKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAzMCAwMDoyMToyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuYwppbmRleCBhNzdjM2MxY2I4OTQzLi4zMWVkYjc4ZjA5MzA0IDEwMDY0NAotLS0gYS9tbS9odWdldGxiLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZXRsYi5jCkBAIC0xMzcwLDYgJiM0MzsxMzcwLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLCBpbnQKIH0KICNlbmRpZgogCiYjNDM7c3RhdGljIHZvaWQgZm9saW9fY2xlYXJfaHVnZXRsYihzdHJ1Y3QgZm9saW8gKmZvbGlvKQomIzQzO3sKJiM0MzsJLyoKJiM0MzsJICogTW92ZSBIV1BvaXNvbiBmbGFnIHRvIGVhY2ggZXJyb3IgcGFnZQomIzQzOwkgKiB3aGljaCBtYWtlcyBhbnkgaGVhbHRoeSBwYWdlcyByZXVzYWJsZS4KJiM0MzsJICovCiYjNDM7CWlmICh1bmxpa2VseShmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSkpCiYjNDM7CQlmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKGZvbGlvKTsKJiM0MzsKJiM0MzsJX19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTsKJiM0Mzt9CiYjNDM7CiAvKgogICogUmVtb3ZlIGh1Z2V0bGIgZm9saW8gZnJvbSBsaXN0cy4KICAqIElmIHZtZW1tYXAgZXhpc3RzIGZvciB0aGUgZm9saW8sIGNsZWFyIHRoZSBodWdldGxiIGZsYWcgc28gdGhhdCB0aGUKQEAgLTE0MDgsNyAmIzQzOzE0MjAsNyBAQCB2b2lkIHJlbW92ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8sCiAJICogdG8gdGFpbCBzdHJ1Y3QgcGFnZXMuCiAJICovCiAJaWYgKCFmb2xpb190ZXN0X2h1Z2V0bGJfdm1lbW1hcF9vcHRpbWl6ZWQoZm9saW8pKQotCQlfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pOwomIzQzOwkJZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7CiAKIAloLSZndDtucl9odWdlX3BhZ2VzLS07CiAJaC0mZ3Q7bnJfaHVnZV9wYWdlc19ub2RlW25pZF0tLTsKQEAgLTE0ODIsMTcgJiM0MzsxNDk0LDEwIEBAIHN0YXRpYyB2b2lkIF9fdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCwKIAkgKi8KIAlpZiAoZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSkgewogCQlzcGluX2xvY2tfaXJxKCZhbXA7aHVnZXRsYl9sb2NrKTsKLQkJX19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTsKJiM0MzsJCWZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pOwogCQlzcGluX3VubG9ja19pcnEoJmFtcDtodWdldGxiX2xvY2spOwogCX0KIAotCS8qCi0JICogTW92ZSBQYWdlSFdQb2lzb24gZmxhZyBmcm9tIGhlYWQgcGFnZSB0byB0aGUgcmF3IGVycm9yIHBhZ2VzLAotCSAqIHdoaWNoIG1ha2VzIGFueSBoZWFsdGh5IHN1YnBhZ2VzIHJldXNhYmxlLgotCSAqLwotCWlmICh1bmxpa2VseShmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSkpCi0JCWZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pOwotCiAJVk1fQlVHX09OX0ZPTElPKGZvbGlvX3JlZl9jb3VudChmb2xpbyksIGZvbGlvKTsKIAlpZiAoZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpCiAJCWh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKGZvbGlvKTsKQEAgLTE1ODQsNyAmIzQzOzE1ODksNyBAQCBzdGF0aWMgdm9pZCBidWxrX3ZtZW1tYXBfcmVzdG9yZV9lcnJvcihzdHJ1Y3QgaHN0YXRlICpoLAogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZm9saW8sIHRfZm9saW8sIG5vbl9odm9fZm9saW9zLCBscnUpIHsKIAkJCWxpc3RfZGVsKCZhbXA7Zm9saW8tJmd0O2xydSk7CiAJCQlzcGluX2xvY2tfaXJxKCZhbXA7aHVnZXRsYl9sb2NrKTsKLQkJCV9fZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7CiYjNDM7CQkJZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7CiAJCQlzcGluX3VubG9ja19pcnEoJmFtcDtodWdldGxiX2xvY2spOwogCQkJdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGZhbHNlKTsKIAkJCWNvbmRfcmVzY2hlZCgpOwpAQCAtMTYwOSw3ICYjNDM7MTYxNCw3IEBAIHN0YXRpYyB2b2lkIGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yKHN0cnVjdCBoc3RhdGUgKmgsCiAJCQl9IGVsc2UgewogCQkJCWxpc3RfZGVsKCZhbXA7Zm9saW8tJmd0O2xydSk7CiAJCQkJc3Bpbl9sb2NrX2lycSgmYW1wO2h1Z2V0bGJfbG9jayk7Ci0JCQkJX19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTsKJiM0MzsJCQkJZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7CiAJCQkJc3Bpbl91bmxvY2tfaXJxKCZhbXA7aHVnZXRsYl9sb2NrKTsKIAkJCQl1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpOwogCQkJCWNvbmRfcmVzY2hlZCgpOwpAQCAtMTY0MiwxNCAmIzQzOzE2NDcsMTQgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2FuZF9mcmVlX3BhZ2VzX2J1bGsoc3RydWN0IGhzdGF0ZSAqaCwKIAkgKiBzaG91bGQgb25seSBiZSBwYWdlcyBvbiB0aGUgbm9uX2h2b19mb2xpb3MgbGlzdC4KIAkgKiBEbyBub3RlIHRoYXQgdGhlIG5vbl9odm9fZm9saW9zIGxpc3QgY291bGQgYmUgZW1wdHkuCiAJICogV2l0aG91dCBIVk8gZW5hYmxlZCwgcmV0IHdpbGwgYmUgMCBhbmQgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsCi0JICogX19mb2xpb19jbGVhcl9odWdldGxiIGFzIHRoaXMgd2FzIGRvbmUgcHJldmlvdXNseS4KJiM0MzsJICogZm9saW9fY2xlYXJfaHVnZXRsYiBhcyB0aGlzIHdhcyBkb25lIHByZXZpb3VzbHkuCiAJICovCiAJVk1fV0FSTl9PTighbGlzdF9lbXB0eShmb2xpb19saXN0KSk7CiAJVk1fV0FSTl9PTihyZXQgJmx0OyAwKTsKIAlpZiAoIWxpc3RfZW1wdHkoJmFtcDtub25faHZvX2ZvbGlvcykgJmFtcDsmYW1wOyByZXQpIHsKIAkJc3Bpbl9sb2NrX2lycSgmYW1wO2h1Z2V0bGJfbG9jayk7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoZm9saW8sICZhbXA7bm9uX2h2b19mb2xpb3MsIGxydSkKLQkJCV9fZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7CiYjNDM7CQkJZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7CiAJCXNwaW5fdW5sb2NrX2lycSgmYW1wO2h1Z2V0bGJfbG9jayk7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgSHVnZXRsYiBhbmQgSGFyZHdhcmUgUG9pc29uaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYG1tL2h1Z2V0bGIuY2AuIEl0IHNlZW1zIHRoZXkmIzM5O3JlIG1ha2luZyBhIHByZXR0eSB0YXJnZXRlZCBtb2RpZmljYXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgaGFuZGxpbmcgaGFyZHdhcmUgcG9pc29uaW5nIHdpdGhpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0uCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGlzIG5ldyBmdW5jdGlvbiwgYGZvbGlvX2NsZWFyX2h1Z2V0bGIoc3RydWN0IGZvbGlvICpmb2xpbylgLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBhIHdyYXBwZXIuIElmIGBmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKWAgcmV0dXJucyB0cnVlLCBpdCBjYWxscyBgZm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbihmb2xpbylgLiBBZnRlciB0aGF0IGl0IGNhbGxzIGBfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pYC4gVGhlIGltcG9ydGFudCB0aGluZyBpcyB0aGF0IHNldmVyYWwgZXhpc3RpbmcgY2FsbHMgdG8gYF9fZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbylgIGFyZSBiZWluZyAqcmVwbGFjZWQqIHdpdGggdGhpcyBuZXcgd3JhcHBlciwgYGZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pYC4KClRoZXkgYWxzbyBzZWVtIHRvIGJlIGNsZWFuaW5nIHRoaW5ncyB1cCBpbiBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIHJlbW92aW5nIGEgZHVwbGljYXRlIGNhbGwgdG8gYGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pYC4gTWFrZXMgc2Vuc2UsIGJlY2F1c2UgdGhlIG5ldyBmdW5jdGlvbiBjYWxsIGNvdmVycyB0aGF0IG5vdy4KClRoaXMgaXMgYWxsIGNsZWFybHkgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGh1Z2V0bGIgYW5kIGh3cG9pc29uLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtJcyB0aGlzIGZ1enphYmxlPyYjMzQ7IFRoZSBhbnN3ZXIgaXMgeWVzLCBnaXZlbiB0aGUgYXJlYSBvZiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgaHVnZXRsYi4gVGltZSB0byBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLgoKSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zIGluIHJlbGF0aW9uIHRvIGBodWdldGxiYC4gYENPTkZJR19IVUdFVExCX1BBR0VgIGlzIHRoZSBvYnZpb3VzIG9uZSwgYW5kIEkgc2hvdWxkIHNjYW4gYG1tL2h1Z2V0bGIuY2AgdG8gaWRlbnRpZnkgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz02OTI9Y29uZmlnIEFSQ0hfSEFTX1BNRF9TT0ZUTEVBVkVTXG4tLVxubW0vS2NvbmZpZy02OTQtXG5tbS9LY29uZmlnOjY5NTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEVcbm1tL0tjb25maWctNjk2LVx0ZGVmX2Jvb2wgblxuLS1cbm1tL0tjb25maWctNjk4LVx0ICBBbGxvd3MgdGhlIHBhZ2VibG9ja19vcmRlciB2YWx1ZSB0byBiZSBkeW5hbWljIGluc3RlYWQgb2YganVzdCBzdGFuZGFyZFxubW0vS2NvbmZpZzo2OTk6XHQgIEhVR0VUTEJfUEFHRV9PUkRFUiB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBIdWdlVExCIHBhZ2Ugc2l6ZXMgYXZhaWxhYmxlXG5tbS9LY29uZmlnLTcwMC1cdCAgb24gYSBwbGF0Zm9ybS5cbi0tXG5tbS9LY29uZmlnPTEwMDA9Y29uZmlnIFBHVEFCTEVfSEFTX0hVR0VfTEVBVkVTXG5tbS9LY29uZmlnOjEwMDE6XHRkZWZfYm9vbCBUUkFOU1BBUkVOVF9IVUdFUEFHRSB8fCBIVUdFVExCX1BBR0Vcbm1tL0tjb25maWctMTAwMi1cbi0tXG5tbS9LY29uZmlnPTEwMDY9Y29uZmlnIEhBVkVfR0lHQU5USUNfRk9MSU9TXG5tbS9LY29uZmlnOjEwMDc6XHRkZWZfYm9vbCAoSFVHRVRMQl9QQUdFIFx1MDAyNlx1MDAyNiBBUkNIX0hBU19HSUdBTlRJQ19QQUdFKSB8fCBcXFxubW0vS2NvbmZpZy0xMDA4LVx0XHQgKFpPTkVfREVWSUNFIFx1MDAyNlx1MDAyNiBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipDaGVja2luZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIEh1Z2VUTEJGUyBTdXBwb3J0KioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHN0YXR1cyBvZiBIdWdlVExCRlMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgY29uZmlndXJhdGlvbi4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyBgZnMvS2NvbmZpZ2AuIEkmIzM5O2xsIG5lZWQgdG8gb3BlbiB0aGF0IGZpbGUgYW5kIHNlYXJjaCB0aHJvdWdoIGl0LiBJdOKAmXMgdGhlIHVzdWFsIHN0YXJ0aW5nIHBvaW50IGZvciBmZWF0dXJlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MsIHNvIEkgZXhwZWN0IHRvIGZpbmQgdGhlIG5lY2Vzc2FyeSBkZWZpbml0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRoZXJlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2Ygd2hldGhlciBpdCYjMzk7cyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgYnVpbHQgYXMgYSBtb2R1bGUsIGFsb25nIHdpdGggYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0dXMgYW5kIHRha2UgYW55IG5lY2Vzc2FyeSBmdXJ0aGVyIHN0ZXBzLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZz0yNjI9aWYgSFVHRVRMQkZTXG5mcy9LY29uZmlnOjI2Mzpjb25maWcgSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBfREVGQVVMVF9PTlxuZnMvS2NvbmZpZy0yNjQtXHRib29sIFwmIzM0O0h1Z2VUTEIgVm1lbW1hcCBPcHRpbWl6YXRpb24gKEhWTykgZGVmYXVsdHMgdG8gb25cJiMzNDtcbmZzL0tjb25maWctMjY1LVx0ZGVmYXVsdCBuXG5mcy9LY29uZmlnOjI2NjpcdGRlcGVuZHMgb24gSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcbmZzL0tjb25maWctMjY3LVx0aGVscFxuLS1cbmZzL0tjb25maWc9MjcxPWVuZGlmICMgSFVHRVRMQkZTXG5mcy9LY29uZmlnLTI3Mi1cbmZzL0tjb25maWc6MjczOmNvbmZpZyBIVUdFVExCX1BBR0VcbmZzL0tjb25maWctMjc0LVx0ZGVmX2Jvb2wgSFVHRVRMQkZTXG4tLVxuZnMvS2NvbmZpZy0yNzYtXG5mcy9LY29uZmlnOjI3Nzpjb25maWcgSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcbmZzL0tjb25maWc6Mjc4Olx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXG5mcy9LY29uZmlnLTI3OS1cdGRlcGVuZHMgb24gQVJDSF9XQU5UX09QVElNSVpFX0hVR0VUTEJfVk1FTU1BUFxuLS1cbmZzL0tjb25maWc9MjgzPWNvbmZpZyBIVUdFVExCX1BNRF9QQUdFX1RBQkxFX1NIQVJJTkdcbmZzL0tjb25maWc6Mjg0Olx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXG5mcy9LY29uZmlnLTI4NS1cdGRlcGVuZHMgb24gQVJDSF9XQU5UX0hVR0VfUE1EX1NIQVJFIFx1MDAyNlx1MDAyNiBTUExJVF9QTURfUFRMT0NLU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MzkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipEaWdnaW5nIGludG8gSHVnZVRMQiBQb2lzb24gSGFuZGxpbmcqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IEh1Z2VUTEImIzM5O3MgaGVyZSwgYW5kIEkgbmVlZCB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIGhvdyBoYXJkd2FyZSBwb2lzb25pbmcgaXMgY2xlYXJlZCB1cC4gVGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBmb3IgdGhpcyB3aG9sZSBhcmVhIHNlZW1zIHRvIGJlIGBIVUdFVExCRlNgLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgZXhhY3QgbWVjaGFuaXNtIGZvciB0aGlzLCBzbyBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBieSBjaGVja2luZyBgZm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbmAuIEkmIzM5O2xsIGZpbmQgdGhpcyBmdW5jdGlvbiYjMzk7cyBkZWZpbml0aW9uIGluIGVpdGhlciBgbW0vaHVnZXRsYi5jYCBvciwgcG90ZW50aWFsbHksIGl0cyBkZWNsYXJhdGlvbiBpbiBgaW5jbHVkZS9saW51eC9odWdldGxiLmhgLiBUaGF0JiMzOTtsbCBiZSB0aGUgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgbG93LWxldmVsIGRldGFpbHMgb2YgaG93IHRoZXNlIHBvaXNvbmVkIHBhZ2VzIGFyZSBoYW5kbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdldGxiLmg9ODg1PWludCBkaXNzb2x2ZV9mcmVlX2h1Z2V0bGJfZm9saW9zKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLFxuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTg4OC0jaWZkZWYgQ09ORklHX01FTU9SWV9GQUlMVVJFXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaDo4ODk6ZXh0ZXJuIHZvaWQgZm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbihzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTg5MC0jZWxzZVxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6ODkxOnN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKHN0cnVjdCBmb2xpbyAqZm9saW8pXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC04OTIte1xuLS1cbm1tL2h1Z2V0bGIuYz0xMzczPXN0YXRpYyB2b2lkIGZvbGlvX2NsZWFyX2h1Z2V0bGIoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiLmMtMTM3OS1cdGlmICh1bmxpa2VseShmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSkpXG5tbS9odWdldGxiLmM6MTM4MDpcdFx0Zm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbihmb2xpbyk7XG5tbS9odWdldGxiLmMtMTM4MS1cbi0tXG5tbS9tZW1vcnktZmFpbHVyZS5jPTE5ODQ9c3RhdGljIHVuc2lnbmVkIGxvbmcgZm9saW9fZnJlZV9yYXdfaHdwKHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgbW92ZV9mbGFnKVxuLS1cbm1tL21lbW9yeS1mYWlsdXJlLmMtMjAwMi1cbm1tL21lbW9yeS1mYWlsdXJlLmM6MjAwMzp2b2lkIGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL21lbW9yeS1mYWlsdXJlLmMtMjAwNC17XG4tLVxubW0vbWVtb3J5LWZhaWx1cmUuYz0yMDgxPXN0YXRpYyBpbnQgdHJ5X21lbW9yeV9mYWlsdXJlX2h1Z2V0bGIodW5zaWduZWQgbG9uZyBwZm4sIGludCBmbGFncylcbi0tXG5tbS9tZW1vcnktZmFpbHVyZS5jLTIxMTgtXHRpZiAoaHdwb2lzb25fZmlsdGVyKHApKSB7XG5tbS9tZW1vcnktZmFpbHVyZS5jOjIxMTk6XHRcdGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pO1xubW0vbWVtb3J5LWZhaWx1cmUuYy0yMTIwLVx0XHRpZiAobWlncmF0YWJsZV9jbGVhcmVkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NjEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2MjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBIdWdlVExCIEZvbGlvIFBvaXNvbiBDbGVhcmluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBtbS9odWdldGxiLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBpbXBvcnRhbnQg4oCTIEh1Z2VUTEIgbWVtb3J5IG1hbmFnZW1lbnQgaXMgY3JpdGljYWwuIE15IGluaXRpYWwgc2NhbiBzaG93cyBhIHJlZmFjdG9yaW5nLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyBoYXJkd2FyZSBwb2lzb24gKGh3cG9pc29uKSBmbGFncyBhcmUgaGFuZGxlZCB3aGVuIGZyZWVpbmcgSHVnZVRMQiBmb2xpb3MuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgYSBuZXcgaGVscGVyIGZ1bmN0aW9uLCBgZm9saW9fY2xlYXJfaHVnZXRsYihzdHJ1Y3QgZm9saW8gKmZvbGlvKWAuIFRoaXMgZnVuY3Rpb24gY2VudHJhbGl6ZXMgdGhlIGxvZ2ljIGZvciBjbGVhcmluZyBIdWdlVExCLXNwZWNpZmljIG1ldGFkYXRhLCBjcnVjaWFsbHkgaW5jbHVkaW5nIGFueSBod3BvaXNvbiBmbGFncy4KClRoZSBwYXRjaCYjMzk7cyBpbnRlbnQgYXBwZWFycyBzdHJhaWdodGZvcndhcmQ6IHJlcGxhY2UgZGlyZWN0IGNhbGxzIHRvIGBfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pYCB3aXRoIHRoaXMgbmV3IGhlbHBlci4gSXQmIzM5O3MgaGFwcGVuaW5nIGluIHNldmVyYWwga2V5IHBsYWNlczogYHJlbW92ZV9odWdldGxiX2ZvbGlvYCwgYF9fdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9gLCBgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3JgLCBhbmQgYHVwZGF0ZV9hbmRfZnJlZV9wYWdlc19idWxrYC4gVGhhdCYjMzk7cyBhIGdvb2Qgc2lnbjsgY29uc29saWRhdGluZyB0aGlzIGxvZ2ljIG1ha2VzIHRoZSBjb2RlIGNsZWFuZXIgYW5kIGVhc2llciB0byBtYWludGFpbi4gUGx1cywgaXQgZWxpbWluYXRlcyBwb3RlbnRpYWwgaW5jb25zaXN0ZW5jaWVzIGluIGhvdyB0aGVzZSBmbGFncyBhcmUgY2xlYXJlZC4gVGhlcmUmIzM5O3MgYWxzbyBhIHJlbW92YWwgb2YgYSBjYWxsIHRvIGBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKGZvbGlvKWAgaW5zaWRlIG9mIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYCBiZWNhdXNlIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGhhbmRsZWQgYnkgYGZvbGlvX2NsZWFyX2h1Z2V0bGJgLgoKTm93LCB0aGUgdGhpbmcgdGhhdCBtYWtlcyBtZSBwYXVzZSBpcyB0aGUgY2hhbmdlIHdpdGhpbiBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AuIFByZXZpb3VzbHksIGBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uYCB3YXMgY2FsbGVkICpvdXRzaWRlKiB0aGUgYGh1Z2V0bGJfbG9ja2Agc3BpbmxvY2ssIGJ1dCBub3csIGl0JiMzOTtzIGNhbGxlZCAqaW5zaWRlKiBgZm9saW9fY2xlYXJfaHVnZXRsYmAgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBpbnNpZGUgdGhlIHNwaW5sb2NrLiBUaGlzIGlzIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBjaGFuZ2UgaW4gbG9ja2luZyBzZW1hbnRpY3MuIEl0IGltcGxpZXMgc29tZSBjaGFuZ2UgaW4gdGhlIG9yZGVyaW5nIG9mIG9wZXJhdGlvbnMgb3IgdGhlIHByb3RlY3Rpb24gb2YgY3JpdGljYWwgc2VjdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIHdhcyBkb25lLCBhbmQgaWYgdGhlcmUgYXJlIGFueSByYWNlIGNvbmRpdGlvbnMgdGhhdCBhcmUgaW50cm9kdWNlZCBvciByZW1vdmVkLgoKVGhpcyBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGZpeC4gVGhlIGNvbW1lbnRzIHN1Z2dlc3QgdGhhdCB0aGVyZSB3YXMgYW4gaXNzdWUgd2hlcmUgYF9fZm9saW9fY2xlYXJfaHVnZXRsYmAgbWlnaHQgYmUgY2FsbGVkIHdpdGhvdXQgY2xlYXJpbmcgdGhlIGh3cG9pc29uIGZsYWdzIGluIHNvbWUgcGF0aHMuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBtZW1vcnkgc2FmZXR5IGNvbmNlcm4uIFRoaXMgcmVmYWN0b3JpbmcgY2xlYXJseSBhaW1zIHRvIGFkZHJlc3MgaXQuIEFuZCwgc2luY2UgaXQgYWZmZWN0cyBjb3JlIEh1Z2VUTEIgYW5kIHBvdGVudGlhbGx5IGVycm9yIGhhbmRsaW5nIGl0IGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyByZWxhdGVkIHRvIGh3cG9pc29uIG9yIEh1Z2VUTEIgbWFuYWdlbWVudC4KCk5vdywgbGV0JiMzOTtzIHNlZSB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkLiBJIG5lZWQgYEhVR0VUTEJGU2AsIGBIVUdFVExCX1BBR0VgLCBhbmQgY3J1Y2lhbGx5LCBgTUVNT1JZX0ZBSUxVUkVgLiBUaGUgbGFzdCBvbmUgaXMgaW1wb3J0YW50LCBhcyBgZm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbmAgaXMgbGlrZWx5IGFuIGVtcHR5IGlubGluZSBmdW5jdGlvbiBpZiBgTUVNT1JZX0ZBSUxVUkVgIGlzbiYjMzk7dCBlbmFibGVkLiBMZXQmIzM5O3MgY29uZmlybSB0aGF0IHRoYXQgY29uZmlnIGlzIHNldCB0byBlbnN1cmUgdGhlIGZ1enplciBnZXRzIHRoZSBkZXNpcmVkIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVNT1JZX0ZBSUxVUkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NzYwPWNvbmZpZyBBUkNIX1NVUFBPUlRTX01FTU9SWV9GQUlMVVJFXG4tLVxubW0vS2NvbmZpZy03NjItXG5tbS9LY29uZmlnOjc2Mzpjb25maWcgTUVNT1JZX0ZBSUxVUkVcbm1tL0tjb25maWctNzY0LVx0ZGVwZW5kcyBvbiBNTVVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYyOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZW1vcnkgRmFpbHVyZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoaXMgYE1FTU9SWV9GQUlMVVJFYCBjb25maWd1cmF0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gTXkgZm9jdXMgaXMgb24gdGhlIHNwZWNpZmljIHN5bWJvbHMgcmVsYXRlZCB0byB0aGlzLgoKTGV0JiMzOTtzIHNlZeKApiBJIG5lZWQgdG8gY2hlY2sgYHJlbW92ZV9odWdldGxiX2ZvbGlvYCBhbmQgdGhhdCAqb3RoZXIqIHJlbGF0ZWQgZnVuY3Rpb24sIHdoaWNoIGlzIHRlY2huaWNhbGx5IG5hbWVkIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYC4gSG1tLCB0aGUgZG91YmxlIHVuZGVyc2NvcmUgc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IGEgc3RhdGljIGZ1bmN0aW9uLCBtYXliZSBpdCYjMzk7cyBleHBvc2VkIGV4dGVybmFsbHkgYXMgYHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYC4gVGhhdCYjMzk7cyBhIHN0cm9uZyBsZWFkLiBJIGFsc28gbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGBidWxrX3ZtZW1tYXBfcmVzdG9yZV9lcnJvcmAgYW5kIGB1cGRhdGVfYW5kX2ZyZWVfcGFnZXNfYnVsa2AuIFRoZXkgc2VlbSBjbG9zZWx5IGFsaWduZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIGZhaWx1cmUgc2NlbmFyaW8gYW5kIGl0JiMzOTtzIGFsc28gcHJvYmFibHkgc3RhdGljLgoKUmlnaHQsIEkmIzM5O2xsIHN0YXJ0IGJ5IGRpdmluZyBpbnRvIGBtbS9odWdldGxiLmNgIHRvIGV4YW1pbmUgYHJlbW92ZV9odWdldGxiX2ZvbGlvYCBhbmQgdGhlbiBgdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9gLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgaHVnZSBwYWdlIG1hbmFnZW1lbnQgaW50ZXJhY3RzIHdpdGggdGhpcyBtZW1vcnkgZmFpbHVyZS4gVGhpcyB3aWxsIHByb2JhYmx5IGxlYWQgbWUgdG8gdGhlIG90aGVyIGZ1bmN0aW9ucyBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2b2lkIHJlbW92ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vaHVnZXRsYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYz0xMzczPXN0YXRpYyB2b2lkIGZvbGlvX2NsZWFyX2h1Z2V0bGIoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiLmMtMTM5Mi0gKi9cbm1tL2h1Z2V0bGIuYzoxMzkzOnZvaWQgcmVtb3ZlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGZvbGlvICpmb2xpbyxcbm1tL2h1Z2V0bGIuYy0xMzk0LVx0XHRcdCAgYm9vbCBhZGp1c3Rfc3VycGx1cylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE2NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIGB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFzIGFuIGV4cGVydDoKCioqQW5hbHl6aW5nIHRoZSBgdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9gIEZ1bmN0aW9uKioKCkFscmlnaHQsIHRoZSBuYW1lIGl0c2VsZiBhbHJlYWR5IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4gYHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYC4gSG1tLCBzbyB0aGlzIGxpa2VseSBoYW5kbGVzIHVwZGF0aW5nIHNvbWUgbWV0YWRhdGEgb3Igc3RhdGUgcmVsYXRlZCB0byBhIEh1Z2VUTEIgZm9saW8gKGEgcGFnZS1zaXplZCBjaHVuayBtYW5hZ2VkIHdpdGhpbiB0aGUgSHVnZVRMQiBzeXN0ZW0pICpiZWZvcmUqIGZyZWVpbmcgaXQuIFRoaXMgaXMgYSBjcml0aWNhbCBwb2ludCwgYW5kIG9uZSBJIGtub3cgaXMgb2Z0ZW4gdHJpY2t5LiBIdWdlVExCIG1hbmFnZW1lbnQgaXMgYWxsIGFib3V0IHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLCBzbyBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciByZXNvdXJjZSBsZWFrcyBhcmUgc29tZXRoaW5nIHRvIGJlIGltbWVkaWF0ZWx5IGF3YXJlIG9mLiBJIGtub3cgaG93IGltcG9ydGFudCBpdCBpcyB0byBoYW5kbGUgYWxsIHRoZSBuZWNlc3NhcnkgaG91c2VrZWVwaW5nIGJlZm9yZSBkZWFsbG9jYXRpbmcgdGhlIG1lbW9yeS4gTGV0JiMzOTtzIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgJiMzOTt1cGRhdGUmIzM5OyBtZWFucyBpbiB0aGlzIGNvbnRleHQg4oCTIGlzIGl0IHJlZmVyZW5jZSBjb3VudGluZywgc3RhdHVzIGZsYWdzLCBzb21ldGhpbmcgZWxzZT8gSSBob3BlIGl0JiMzOTtzIHdlbGwtZG9jdW1lbnRlZCEgVGltZSB0byBsb29rIGF0IHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdldGxiLmM9MTQyOT12b2lkIGFkZF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vaHVnZXRsYi5jLTE0NTgtXG5tbS9odWdldGxiLmM6MTQ1OTpzdGF0aWMgdm9pZCBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG5tbS9odWdldGxiLmMtMTQ2MC1cdFx0XHRcdFx0XHRzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL2h1Z2V0bGIuYy0xNTA4LS8qXG5tbS9odWdldGxiLmM6MTUwOTogKiBBcyB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbygpIGNhbiBiZSBjYWxsZWQgdW5kZXIgYW55IGNvbnRleHQsIHNvIHdlIGNhbm5vdFxubW0vaHVnZXRsYi5jLTE1MTAtICogdXNlIEdGUF9LRVJORUwgdG8gYWxsb2NhdGUgdm1lbW1hcCBwYWdlcy4gSG93ZXZlciwgd2UgY2FuIGRlZmVyIHRoZVxuLS1cbm1tL2h1Z2V0bGIuYz0xNTIxPXN0YXRpYyB2b2lkIGZyZWVfaHBhZ2Vfd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5tbS9odWdldGxiLmMtMTU0Mi1cbm1tL2h1Z2V0bGIuYzoxNTQzOlx0XHRfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvKTtcbm1tL2h1Z2V0bGIuYy0xNTQ0LVxuLS1cbm1tL2h1Z2V0bGIuYz0xNTUwPXN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF9mcmVlX2hwYWdlX3dvcmsoc3RydWN0IGhzdGF0ZSAqaClcbi0tXG5tbS9odWdldGxiLmMtMTU1NS1cbm1tL2h1Z2V0bGIuYzoxNTU2OnN0YXRpYyB2b2lkIHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8sXG5tbS9odWdldGxiLmMtMTU1Ny1cdFx0XHRcdCBib29sIGF0b21pYylcbi0tXG5tbS9odWdldGxiLmMtMTU1OS1cdGlmICghZm9saW9fdGVzdF9odWdldGxiX3ZtZW1tYXBfb3B0aW1pemVkKGZvbGlvKSB8fCAhYXRvbWljKSB7XG5tbS9odWdldGxiLmM6MTU2MDpcdFx0X191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbyk7XG5tbS9odWdldGxiLmMtMTU2MS1cdFx0cmV0dXJuO1xuLS1cbm1tL2h1Z2V0bGIuYz0xNTc1PXN0YXRpYyB2b2lkIGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTE1OTMtXHRcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG5tbS9odWdldGxiLmM6MTU5NDpcdFx0XHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTE1OTUtXHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4tLVxubW0vaHVnZXRsYi5jLTE2MTgtXHRcdFx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbm1tL2h1Z2V0bGIuYzoxNjE5Olx0XHRcdFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy0xNjIwLVx0XHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4tLVxubW0vaHVnZXRsYi5jPTE2MjY9c3RhdGljIHZvaWQgdXBkYXRlX2FuZF9mcmVlX3BhZ2VzX2J1bGsoc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMTY2MS1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShmb2xpbywgdF9mb2xpbywgXHUwMDI2bm9uX2h2b19mb2xpb3MsIGxydSkge1xubW0vaHVnZXRsYi5jOjE2NjI6XHRcdHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtMTY2My1cdFx0Y29uZF9yZXNjaGVkKCk7XG4tLVxubW0vaHVnZXRsYi5jPTE2Nzg9dm9pZCBmcmVlX2h1Z2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiLmMtMTczMi1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZodWdldGxiX2xvY2ssIGZsYWdzKTtcbm1tL2h1Z2V0bGIuYzoxNzMzOlx0XHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgdHJ1ZSk7XG5tbS9odWdldGxiLmMtMTczNC1cdH0gZWxzZSBpZiAoaC1cdTAwM2VzdXJwbHVzX2h1Z2VfcGFnZXNfbm9kZVtuaWRdKSB7XG4tLVxubW0vaHVnZXRsYi5jLTE3MzctXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aHVnZXRsYl9sb2NrLCBmbGFncyk7XG5tbS9odWdldGxiLmM6MTczODpcdFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIHRydWUpO1xubW0vaHVnZXRsYi5jLTE3MzktXHR9IGVsc2Uge1xuLS1cbm1tL2h1Z2V0bGIuYz0xOTU2PWludCBkaXNzb2x2ZV9mcmVlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiLmMtMjAyNi1cbm1tL2h1Z2V0bGIuYzoyMDI3Olx0XHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTIwMjgtXHRcdHJldHVybiByYztcbi0tXG5tbS9odWdldGxiLmM9MjYzMj1zdGF0aWMgaW50IGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqb2xkX2ZvbGlvLFxuLS1cbm1tL2h1Z2V0bGIuYy0yNzA0LVx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbm1tL2h1Z2V0bGIuYzoyNzA1Olx0XHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBvbGRfZm9saW8sIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy0yNzA2LVx0fVxuLS1cbm1tL2h1Z2V0bGIuYy0yNzEyLVx0aWYgKG5ld19mb2xpbylcbm1tL2h1Z2V0bGIuYzoyNzEzOlx0XHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBuZXdfZm9saW8sIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy0yNzE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzgwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBIdWdlIFBhZ2UgRm9saW8gUmVtb3ZhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGEgZmV3IGtleSBmdW5jdGlvbnMgcmVsYXRlZCB0byBoYW5kbGluZyBodWdlIHBhZ2VzOiBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGBidWxrX3ZtZW1tYXBfcmVzdG9yZV9lcnJvcmAsIGFuZCBgdXBkYXRlX2FuZF9mcmVlX3BhZ2VzX2J1bGtgLiBJbnRlcmVzdGluZy4KCkZpcnN0IHRob3VnaHQgaXMgdGhhdCBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gIGlzbiYjMzk7dCBzdGF0aWMsIG1lYW5pbmcgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBmcm9tIG1vcmUgcGxhY2VzIHRoYW4ganVzdCB3aXRoaW4gdGhpcyBtb2R1bGUuIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYCBpcyBzdGF0aWMsIHdoaWNoIGxpbWl0cyBpdHMgc2NvcGUsIGJ1dCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgZnJlZV9odWdlX2ZvbGlvYCBhbmQgYGRpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpb2AgY2FsbCBpdC4gSSBrbm93IHRoZXNlIGZ1bmN0aW9ucyBsaWtlIHRoZSBiYWNrIG9mIG15IGhhbmQsIHNvIHRoYXQmIzM5O3Mgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZCBhcyBJIGRpdmUgZGVlcGVyLgoKQW5kLCBhcyBJIGV4cGVjdGVkLCBib3RoIGBmcmVlX2h1Z2VfZm9saW9gIGFuZCBgZGlzc29sdmVfZnJlZV9odWdldGxiX2ZvbGlvYCBhcmUgbm9uLXN0YXRpYy4gU28sIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IHRoaXMgcGF0Y2ggaW1wYWN0cyB0aGVpciBpbnRlcnBsYXkgd2l0aCB0aGUgc3RhdGljIGhlbHBlciBmdW5jdGlvbi4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgZ29pbmcgdG8gYmUgdG8gc2VlICp3aGVyZSogYHJlbW92ZV9odWdldGxiX2ZvbGlvYCBpcyBhY3R1YWxseSBiZWluZyBjYWxsZWQgZnJvbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgZ3JhcGggdG8gZnVsbHkgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlbW92ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYz0xMzczPXN0YXRpYyB2b2lkIGZvbGlvX2NsZWFyX2h1Z2V0bGIoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiLmMtMTM5Mi0gKi9cbm1tL2h1Z2V0bGIuYzoxMzkzOnZvaWQgcmVtb3ZlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGZvbGlvICpmb2xpbyxcbm1tL2h1Z2V0bGIuYy0xMzk0LVx0XHRcdCAgYm9vbCBhZGp1c3Rfc3VycGx1cylcbi0tXG5tbS9odWdldGxiLmM9MTUyMT1zdGF0aWMgdm9pZCBmcmVlX2hwYWdlX3dvcmtmbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubW0vaHVnZXRsYi5jLTE1MzctXHRcdCAqIGZvbGlvX2hzdGF0ZSgpIGlzIGdvaW5nIHRvIHRyaWdnZXIgYmVjYXVzZSBhIHByZXZpb3VzIGNhbGwgdG9cbm1tL2h1Z2V0bGIuYzoxNTM4Olx0XHQgKiByZW1vdmVfaHVnZXRsYl9mb2xpbygpIHdpbGwgY2xlYXIgdGhlIGh1Z2V0bGIgYml0LCBzbyBkb1xubW0vaHVnZXRsYi5jLTE1MzktXHRcdCAqIG5vdCB1c2UgZm9saW9faHN0YXRlKCkgZGlyZWN0bHkuXG4tLVxubW0vaHVnZXRsYi5jPTE2Nzg9dm9pZCBmcmVlX2h1Z2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiLmMtMTczMC1cdGlmIChmb2xpb190ZXN0X2h1Z2V0bGJfdGVtcG9yYXJ5KGZvbGlvKSkge1xubW0vaHVnZXRsYi5jOjE3MzE6XHRcdHJlbW92ZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtMTczMi1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZodWdldGxiX2xvY2ssIGZsYWdzKTtcbi0tXG5tbS9odWdldGxiLmMtMTczNS1cdFx0LyogcmVtb3ZlIHRoZSBwYWdlIGZyb20gYWN0aXZlIGxpc3QgKi9cbm1tL2h1Z2V0bGIuYzoxNzM2Olx0XHRyZW1vdmVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgdHJ1ZSk7XG5tbS9odWdldGxiLmMtMTczNy1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZodWdldGxiX2xvY2ssIGZsYWdzKTtcbi0tXG5tbS9odWdldGxiLmM9MTkxOD1zdGF0aWMgc3RydWN0IGZvbGlvICpyZW1vdmVfcG9vbF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTE5MzMtXHRcdFx0XHRcdCAgc3RydWN0IGZvbGlvLCBscnUpO1xubW0vaHVnZXRsYi5jOjE5MzQ6XHRcdFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGFjY3Rfc3VycGx1cyk7XG5tbS9odWdldGxiLmMtMTkzNS1cdFx0XHRicmVhaztcbi0tXG5tbS9odWdldGxiLmM9MTk1Nj1pbnQgZGlzc29sdmVfZnJlZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vaHVnZXRsYi5jLTE5OTgtXHRcdFx0YWRqdXN0X3N1cnBsdXMgPSB0cnVlO1xubW0vaHVnZXRsYi5jOjE5OTk6XHRcdHJlbW92ZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBhZGp1c3Rfc3VycGx1cyk7XG5tbS9odWdldGxiLmMtMjAwMC1cdFx0aC1cdTAwM2VtYXhfaHVnZV9wYWdlcy0tO1xuLS1cbm1tL2h1Z2V0bGIuYy0yMDExLVx0XHQgKiBUaGUgZm9saW9fdGVzdF9odWdldGxiIGNoZWNrIGhlcmUgaXMgYmVjYXVzZVxubW0vaHVnZXRsYi5jOjIwMTI6XHRcdCAqIHJlbW92ZV9odWdldGxiX2ZvbGlvIHdpbGwgY2xlYXIgaHVnZXRsYiBmb2xpbyBmbGFnIGZvclxubW0vaHVnZXRsYi5jLTIwMTMtXHRcdCAqIG5vbi12bWVtbWFwIG9wdGltaXplZCBodWdldGxiIGZvbGlvcy5cbi0tXG5tbS9odWdldGxiLmM9MjYzMj1zdGF0aWMgaW50IGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqb2xkX2ZvbGlvLFxuLS1cbm1tL2h1Z2V0bGIuYy0yNjkxLVx0XHQgKi9cbm1tL2h1Z2V0bGIuYzoyNjkyOlx0XHRyZW1vdmVfaHVnZXRsYl9mb2xpbyhoLCBvbGRfZm9saW8sIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy0yNjkzLVxuLS1cbm1tL2h1Z2V0bGIuYz0zNjk3PXN0YXRpYyB2b2lkIHRyeV90b19mcmVlX2xvdyhzdHJ1Y3QgaHN0YXRlICpoLCB1bnNpZ25lZCBsb25nIGNvdW50LFxuLS1cbm1tL2h1Z2V0bGIuYy0zNzE3LVx0XHRcdFx0Y29udGludWU7XG5tbS9odWdldGxiLmM6MzcxODpcdFx0XHRyZW1vdmVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTM3MTktXHRcdFx0bGlzdF9hZGQoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1LCBcdTAwMjZwYWdlX2xpc3QpO1xuLS1cbm1tL2h1Z2V0bGIuYz00MDE3PWxvbmcgZGVtb3RlX3Bvb2xfaHVnZV9wYWdlKHN0cnVjdCBoc3RhdGUgKnNyYywgbm9kZW1hc2tfdCAqbm9kZXNfYWxsb3dlZCxcbi0tXG5tbS9odWdldGxiLmMtNDA0Mi1cbm1tL2h1Z2V0bGIuYzo0MDQzOlx0XHRcdHJlbW92ZV9odWdldGxiX2ZvbGlvKHNyYywgZm9saW8sIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy00MDQ0LVx0XHRcdGxpc3RfYWRkKFx1MDAyNmZvbGlvLVx1MDAzZWxydSwgXHUwMDI2bGlzdCk7XG4tLVxubW0vaHVnZXRsYl9pbnRlcm5hbC5oPTcxPXN0YXRpYyBpbmxpbmUgaW50IGhzdGF0ZV9uZXh0X25vZGVfdG9fZnJlZShzdHJ1Y3QgaHN0YXRlICpoLCBub2RlbWFza190ICpub2Rlc19hbGxvd2VkKVxuLS1cbm1tL2h1Z2V0bGJfaW50ZXJuYWwuaC05NC1cbm1tL2h1Z2V0bGJfaW50ZXJuYWwuaDo5NTpleHRlcm4gdm9pZCByZW1vdmVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxubW0vaHVnZXRsYl9pbnRlcm5hbC5oLTk2LVx0XHRcdFx0IGJvb2wgYWRqdXN0X3N1cnBsdXMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjIyCgkJCQkJCQlvdXRwdXQ6IDIzNQoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIVUdFVExCX1BBR0UmIzM0OywKICAgICYjMzQ7TUVNT1JZX0ZBSUxVUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZW1vdmVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDt1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDtkaXNzb2x2ZV9mcmVlX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7YWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7ZnJlZV9odWdlX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBjbGVhcmluZyB0aGUgaHVnZXRsYiBmbGFnIGZyb20gYSBmb2xpby4gSXQgaW50cm9kdWNlcyBgZm9saW9fY2xlYXJfaHVnZXRsYmAgd2hpY2ggYWxzbyBjbGVhcnMgdGhlIGh3cG9pc29uIGZsYWcgaWYgaXQmIzM5O3Mgc2V0LCBtb3ZpbmcgaXQgdG8gdGhlIGVycm9yIHBhZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBodWdldGxiIHBhZ2UgZnJlZWluZyBhbmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuIEl0IGFmZmVjdHMgYHJlbW92ZV9odWdldGxiX2ZvbGlvYCwgYF9fdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9gLCBhbmQgYGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yYC4gVGhlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4gYEhVR0VUTEJfUEFHRWAgYW5kIGBNRU1PUllfRkFJTFVSRWAgYXJlIHJlcXVpcmVkIHRvIHRlc3QgdGhpcyBjb2RlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7LAogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlbW92ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2Rpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDtmcmVlX2h1Z2VfZm9saW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIGNsZWFyaW5nIHRoZSBodWdldGxiIGZsYWcgZnJvbSBhIGZvbGlvLiBJdCBpbnRyb2R1Y2VzIGBmb2xpb19jbGVhcl9odWdldGxiYCB3aGljaCBhbHNvIGNsZWFycyB0aGUgaHdwb2lzb24gZmxhZyBpZiBpdCYjMzk7cyBzZXQsIG1vdmluZyBpdCB0byB0aGUgZXJyb3IgcGFnZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGh1Z2V0bGIgcGFnZSBmcmVlaW5nIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4gSXQgYWZmZWN0cyBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3JgLiBUaGUgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBgSFVHRVRMQl9QQUdFYCBhbmQgYE1FTU9SWV9GQUlMVVJFYCBhcmUgcmVxdWlyZWQgdG8gdGVzdCB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjIxOjIzLjcwMjgxOTk1NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5ODYwMTc2MzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJfUEFHRVwiLFxuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZW1vdmVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwidXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImRpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImZyZWVfaHVnZV9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBjbGVhcmluZyB0aGUgaHVnZXRsYiBmbGFnIGZyb20gYSBmb2xpby4gSXQgaW50cm9kdWNlcyBgZm9saW9fY2xlYXJfaHVnZXRsYmAgd2hpY2ggYWxzbyBjbGVhcnMgdGhlIGh3cG9pc29uIGZsYWcgaWYgaXQncyBzZXQsIG1vdmluZyBpdCB0byB0aGUgZXJyb3IgcGFnZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGh1Z2V0bGIgcGFnZSBmcmVlaW5nIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4gSXQgYWZmZWN0cyBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3JgLiBUaGUgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBgSFVHRVRMQl9QQUdFYCBhbmQgYE1FTU9SWV9GQUlMVVJFYCBhcmUgcmVxdWlyZWQgdG8gdGVzdCB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjE6MjMuNzAyODI0Njk1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDA3MDMzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1Nzk4NTdmNDg1MDNkOWM0YmU2OWNmYTFmNjIzYmRlZDU2ZjJiZTNhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDMwIDAwOjIxOjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuY1xcbmluZGV4IGE3N2MzYzFjYjg5NDMuLjMxZWRiNzhmMDkzMDQgMTAwNjQ0XFxuLS0tIGEvbW0vaHVnZXRsYi5jXFxuKysrIGIvbW0vaHVnZXRsYi5jXFxuQEAgLTEzNzAsNiArMTM3MCwxOCBAQCBzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzaywgaW50XFxuIH1cXG4gI2VuZGlmXFxuIFxcbitzdGF0aWMgdm9pZCBmb2xpb19jbGVhcl9odWdldGxiKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuK3tcXG4rXFx0LypcXG4rXFx0ICogTW92ZSBIV1BvaXNvbiBmbGFnIHRvIGVhY2ggZXJyb3IgcGFnZVxcbitcXHQgKiB3aGljaCBtYWtlcyBhbnkgaGVhbHRoeSBwYWdlcyByZXVzYWJsZS5cXG4rXFx0ICovXFxuK1xcdGlmICh1bmxpa2VseShmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSkpXFxuK1xcdFxcdGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pO1xcbitcXG4rXFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcXG4rfVxcbitcXG4gLypcXG4gICogUmVtb3ZlIGh1Z2V0bGIgZm9saW8gZnJvbSBsaXN0cy5cXG4gICogSWYgdm1lbW1hcCBleGlzdHMgZm9yIHRoZSBmb2xpbywgY2xlYXIgdGhlIGh1Z2V0bGIgZmxhZyBzbyB0aGF0IHRoZVxcbkBAIC0xNDA4LDcgKzE0MjAsNyBAQCB2b2lkIHJlbW92ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuIFxcdCAqIHRvIHRhaWwgc3RydWN0IHBhZ2VzLlxcbiBcXHQgKi9cXG4gXFx0aWYgKCFmb2xpb190ZXN0X2h1Z2V0bGJfdm1lbW1hcF9vcHRpbWl6ZWQoZm9saW8pKVxcbi1cXHRcXHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xcbitcXHRcXHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcXG4gXFxuIFxcdGgtXFx1MDAzZW5yX2h1Z2VfcGFnZXMtLTtcXG4gXFx0aC1cXHUwMDNlbnJfaHVnZV9wYWdlc19ub2RlW25pZF0tLTtcXG5AQCAtMTQ4MiwxNyArMTQ5NCwxMCBAQCBzdGF0aWMgdm9pZCBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxuIFxcdCAqL1xcbiBcXHRpZiAoZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSkge1xcbiBcXHRcXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZodWdldGxiX2xvY2spO1xcbi1cXHRcXHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xcbitcXHRcXHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcXG4gXFx0XFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZodWdldGxiX2xvY2spO1xcbiBcXHR9XFxuIFxcbi1cXHQvKlxcbi1cXHQgKiBNb3ZlIFBhZ2VIV1BvaXNvbiBmbGFnIGZyb20gaGVhZCBwYWdlIHRvIHRoZSByYXcgZXJyb3IgcGFnZXMsXFxuLVxcdCAqIHdoaWNoIG1ha2VzIGFueSBoZWFsdGh5IHN1YnBhZ2VzIHJldXNhYmxlLlxcbi1cXHQgKi9cXG4tXFx0aWYgKHVubGlrZWx5KGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8pKSlcXG4tXFx0XFx0Zm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbihmb2xpbyk7XFxuLVxcbiBcXHRWTV9CVUdfT05fRk9MSU8oZm9saW9fcmVmX2NvdW50KGZvbGlvKSwgZm9saW8pO1xcbiBcXHRpZiAoZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpXFxuIFxcdFxcdGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKGZvbGlvKTtcXG5AQCAtMTU4NCw3ICsxNTg5LDcgQEAgc3RhdGljIHZvaWQgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCxcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGZvbGlvLCB0X2ZvbGlvLCBub25faHZvX2ZvbGlvcywgbHJ1KSB7XFxuIFxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1KTtcXG4gXFx0XFx0XFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2aHVnZXRsYl9sb2NrKTtcXG4tXFx0XFx0XFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcXG4rXFx0XFx0XFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XFxuIFxcdFxcdFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2aHVnZXRsYl9sb2NrKTtcXG4gXFx0XFx0XFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGZhbHNlKTtcXG4gXFx0XFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuQEAgLTE2MDksNyArMTYxNCw3IEBAIHN0YXRpYyB2b2lkIGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yKHN0cnVjdCBoc3RhdGUgKmgsXFxuIFxcdFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1KTtcXG4gXFx0XFx0XFx0XFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2aHVnZXRsYl9sb2NrKTtcXG4tXFx0XFx0XFx0XFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcXG4rXFx0XFx0XFx0XFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XFxuIFxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2aHVnZXRsYl9sb2NrKTtcXG4gXFx0XFx0XFx0XFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGZhbHNlKTtcXG4gXFx0XFx0XFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuQEAgLTE2NDIsMTQgKzE2NDcsMTQgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2FuZF9mcmVlX3BhZ2VzX2J1bGsoc3RydWN0IGhzdGF0ZSAqaCxcXG4gXFx0ICogc2hvdWxkIG9ubHkgYmUgcGFnZXMgb24gdGhlIG5vbl9odm9fZm9saW9zIGxpc3QuXFxuIFxcdCAqIERvIG5vdGUgdGhhdCB0aGUgbm9uX2h2b19mb2xpb3MgbGlzdCBjb3VsZCBiZSBlbXB0eS5cXG4gXFx0ICogV2l0aG91dCBIVk8gZW5hYmxlZCwgcmV0IHdpbGwgYmUgMCBhbmQgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsXFxuLVxcdCAqIF9fZm9saW9fY2xlYXJfaHVnZXRsYiBhcyB0aGlzIHdhcyBkb25lIHByZXZpb3VzbHkuXFxuK1xcdCAqIGZvbGlvX2NsZWFyX2h1Z2V0bGIgYXMgdGhpcyB3YXMgZG9uZSBwcmV2aW91c2x5LlxcbiBcXHQgKi9cXG4gXFx0Vk1fV0FSTl9PTighbGlzdF9lbXB0eShmb2xpb19saXN0KSk7XFxuIFxcdFZNX1dBUk5fT04ocmV0IFxcdTAwM2MgMCk7XFxuIFxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2bm9uX2h2b19mb2xpb3MpIFxcdTAwMjZcXHUwMDI2IHJldCkge1xcbiBcXHRcXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZodWdldGxiX2xvY2spO1xcbiBcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGZvbGlvLCBcXHUwMDI2bm9uX2h2b19mb2xpb3MsIGxydSlcXG4tXFx0XFx0XFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcXG4rXFx0XFx0XFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XFxuIFxcdFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2aHVnZXRsYl9sb2NrKTtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjE6MjQuMDQ0MjQxNDcxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Njk1MTg3NDQ3MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFVHRVRMQl9QQUdFXCIsXG4gICAgXCJNRU1PUllfRkFJTFVSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlbW92ZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJ1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiZGlzc29sdmVfZnJlZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiZnJlZV9odWdlX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIGNsZWFyaW5nIHRoZSBodWdldGxiIGZsYWcgZnJvbSBhIGZvbGlvLiBJdCBpbnRyb2R1Y2VzIGBmb2xpb19jbGVhcl9odWdldGxiYCB3aGljaCBhbHNvIGNsZWFycyB0aGUgaHdwb2lzb24gZmxhZyBpZiBpdCdzIHNldCwgbW92aW5nIGl0IHRvIHRoZSBlcnJvciBwYWdlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaHVnZXRsYiBwYWdlIGZyZWVpbmcgYW5kIG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nLiBJdCBhZmZlY3RzIGByZW1vdmVfaHVnZXRsYl9mb2xpb2AsIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYCwgYW5kIGBidWxrX3ZtZW1tYXBfcmVzdG9yZV9lcnJvcmAuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIGBIVUdFVExCX1BBR0VgIGFuZCBgTUVNT1JZX0ZBSUxVUkVgIGFyZSByZXF1aXJlZCB0byB0ZXN0IHRoaXMgY29kZSBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1Nzk4NTdmNDg1MDNkOWM0YmU2OWNmYTFmNjIzYmRlZDU2ZjJiZTNhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDA6MjE6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmNcbmluZGV4IGE3N2MzYzFjYjg5NDMuLjMxZWRiNzhmMDkzMDQgMTAwNjQ0XG4tLS0gYS9tbS9odWdldGxiLmNcbisrKyBiL21tL2h1Z2V0bGIuY1xuQEAgLTEzNzAsNiArMTM3MCwxOCBAQCBzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzaywgaW50XG4gfVxuICNlbmRpZlxuIFxuK3N0YXRpYyB2b2lkIGZvbGlvX2NsZWFyX2h1Z2V0bGIoc3RydWN0IGZvbGlvICpmb2xpbylcbit7XG4rXHQvKlxuK1x0ICogTW92ZSBIV1BvaXNvbiBmbGFnIHRvIGVhY2ggZXJyb3IgcGFnZVxuK1x0ICogd2hpY2ggbWFrZXMgYW55IGhlYWx0aHkgcGFnZXMgcmV1c2FibGUuXG4rXHQgKi9cbitcdGlmICh1bmxpa2VseShmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSkpXG4rXHRcdGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pO1xuK1xuK1x0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbit9XG4rXG4gLypcbiAgKiBSZW1vdmUgaHVnZXRsYiBmb2xpbyBmcm9tIGxpc3RzLlxuICAqIElmIHZtZW1tYXAgZXhpc3RzIGZvciB0aGUgZm9saW8sIGNsZWFyIHRoZSBodWdldGxiIGZsYWcgc28gdGhhdCB0aGVcbkBAIC0xNDA4LDcgKzE0MjAsNyBAQCB2b2lkIHJlbW92ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4gXHQgKiB0byB0YWlsIHN0cnVjdCBwYWdlcy5cbiBcdCAqL1xuIFx0aWYgKCFmb2xpb190ZXN0X2h1Z2V0bGJfdm1lbW1hcF9vcHRpbWl6ZWQoZm9saW8pKVxuLVx0XHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xuK1x0XHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbiBcbiBcdGgtXHUwMDNlbnJfaHVnZV9wYWdlcy0tO1xuIFx0aC1cdTAwM2Vucl9odWdlX3BhZ2VzX25vZGVbbmlkXS0tO1xuQEAgLTE0ODIsMTcgKzE0OTQsMTAgQEAgc3RhdGljIHZvaWQgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuIFx0ICovXG4gXHRpZiAoZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSkge1xuIFx0XHRzcGluX2xvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4tXHRcdF9fZm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4rXHRcdGZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xuIFx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbiBcdH1cbiBcbi1cdC8qXG4tXHQgKiBNb3ZlIFBhZ2VIV1BvaXNvbiBmbGFnIGZyb20gaGVhZCBwYWdlIHRvIHRoZSByYXcgZXJyb3IgcGFnZXMsXG4tXHQgKiB3aGljaCBtYWtlcyBhbnkgaGVhbHRoeSBzdWJwYWdlcyByZXVzYWJsZS5cbi1cdCAqL1xuLVx0aWYgKHVubGlrZWx5KGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8pKSlcbi1cdFx0Zm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbihmb2xpbyk7XG4tXG4gXHRWTV9CVUdfT05fRk9MSU8oZm9saW9fcmVmX2NvdW50KGZvbGlvKSwgZm9saW8pO1xuIFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYl9jbWEoZm9saW8pKVxuIFx0XHRodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhmb2xpbyk7XG5AQCAtMTU4NCw3ICsxNTg5LDcgQEAgc3RhdGljIHZvaWQgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCxcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGZvbGlvLCB0X2ZvbGlvLCBub25faHZvX2ZvbGlvcywgbHJ1KSB7XG4gXHRcdFx0bGlzdF9kZWwoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1KTtcbiBcdFx0XHRzcGluX2xvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4tXHRcdFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbitcdFx0XHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbiBcdFx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbiBcdFx0XHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpO1xuIFx0XHRcdGNvbmRfcmVzY2hlZCgpO1xuQEAgLTE2MDksNyArMTYxNCw3IEBAIHN0YXRpYyB2b2lkIGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yKHN0cnVjdCBoc3RhdGUgKmgsXG4gXHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdGxpc3RfZGVsKFx1MDAyNmZvbGlvLVx1MDAzZWxydSk7XG4gXHRcdFx0XHRzcGluX2xvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4tXHRcdFx0XHRfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pO1xuK1x0XHRcdFx0Zm9saW9fY2xlYXJfaHVnZXRsYihmb2xpbyk7XG4gXHRcdFx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2aHVnZXRsYl9sb2NrKTtcbiBcdFx0XHRcdHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XG4gXHRcdFx0XHRjb25kX3Jlc2NoZWQoKTtcbkBAIC0xNjQyLDE0ICsxNjQ3LDE0IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9hbmRfZnJlZV9wYWdlc19idWxrKHN0cnVjdCBoc3RhdGUgKmgsXG4gXHQgKiBzaG91bGQgb25seSBiZSBwYWdlcyBvbiB0aGUgbm9uX2h2b19mb2xpb3MgbGlzdC5cbiBcdCAqIERvIG5vdGUgdGhhdCB0aGUgbm9uX2h2b19mb2xpb3MgbGlzdCBjb3VsZCBiZSBlbXB0eS5cbiBcdCAqIFdpdGhvdXQgSFZPIGVuYWJsZWQsIHJldCB3aWxsIGJlIDAgYW5kIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbFxuLVx0ICogX19mb2xpb19jbGVhcl9odWdldGxiIGFzIHRoaXMgd2FzIGRvbmUgcHJldmlvdXNseS5cbitcdCAqIGZvbGlvX2NsZWFyX2h1Z2V0bGIgYXMgdGhpcyB3YXMgZG9uZSBwcmV2aW91c2x5LlxuIFx0ICovXG4gXHRWTV9XQVJOX09OKCFsaXN0X2VtcHR5KGZvbGlvX2xpc3QpKTtcbiBcdFZNX1dBUk5fT04ocmV0IFx1MDAzYyAwKTtcbiBcdGlmICghbGlzdF9lbXB0eShcdTAwMjZub25faHZvX2ZvbGlvcykgXHUwMDI2XHUwMDI2IHJldCkge1xuIFx0XHRzcGluX2xvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoZm9saW8sIFx1MDAyNm5vbl9odm9fZm9saW9zLCBscnUpXG4tXHRcdFx0X19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbitcdFx0XHRmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKTtcbiBcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmh1Z2V0bGJfbG9jayk7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDoyMToyNC4wNDQyNDI3MzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzgxNTUxMzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEh1Z2V0bGIgYW5kIEhhcmR3YXJlIFBvaXNvbmluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGBtbS9odWdldGxiLmNgLiBJdCBzZWVtcyB0aGV5J3JlIG1ha2luZyBhIHByZXR0eSB0YXJnZXRlZCBtb2RpZmljYXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgaGFuZGxpbmcgaGFyZHdhcmUgcG9pc29uaW5nIHdpdGhpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0uXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoaXMgbmV3IGZ1bmN0aW9uLCBgZm9saW9fY2xlYXJfaHVnZXRsYihzdHJ1Y3QgZm9saW8gKmZvbGlvKWAuIEl0J3MgZXNzZW50aWFsbHkgYSB3cmFwcGVyLiBJZiBgZm9saW9fdGVzdF9od3BvaXNvbihmb2xpbylgIHJldHVybnMgdHJ1ZSwgaXQgY2FsbHMgYGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pYC4gQWZ0ZXIgdGhhdCBpdCBjYWxscyBgX19mb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKWAuIFRoZSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhhdCBzZXZlcmFsIGV4aXN0aW5nIGNhbGxzIHRvIGBfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pYCBhcmUgYmVpbmcgKnJlcGxhY2VkKiB3aXRoIHRoaXMgbmV3IHdyYXBwZXIsIGBmb2xpb19jbGVhcl9odWdldGxiKGZvbGlvKWAuXG5cblRoZXkgYWxzbyBzZWVtIHRvIGJlIGNsZWFuaW5nIHRoaW5ncyB1cCBpbiBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIHJlbW92aW5nIGEgZHVwbGljYXRlIGNhbGwgdG8gYGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pYC4gTWFrZXMgc2Vuc2UsIGJlY2F1c2UgdGhlIG5ldyBmdW5jdGlvbiBjYWxsIGNvdmVycyB0aGF0IG5vdy5cblxuVGhpcyBpcyBhbGwgY2xlYXJseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gaHVnZXRsYiBhbmQgaHdwb2lzb24uIEltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcsIFwiSXMgdGhpcyBmdXp6YWJsZT9cIiBUaGUgYW5zd2VyIGlzIHllcywgZ2l2ZW4gdGhlIGFyZWEgb2YgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGh1Z2V0bGIuIFRpbWUgdG8gc2VlIHdoYXQgd2UncmUgZGVhbGluZyB3aXRoLlxuXG5JIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMgaW4gcmVsYXRpb24gdG8gYGh1Z2V0bGJgLiBgQ09ORklHX0hVR0VUTEJfUEFHRWAgaXMgdGhlIG9idmlvdXMgb25lLCBhbmQgSSBzaG91bGQgc2NhbiBgbW0vaHVnZXRsYi5jYCB0byBpZGVudGlmeSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDoyMTozMy40MjU3OTY5NzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI4NzY4ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSFVHRVRMQl9QQUdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz02OTI9Y29uZmlnIEFSQ0hfSEFTX1BNRF9TT0ZUTEVBVkVTXFxuLS1cXG5tbS9LY29uZmlnLTY5NC1cXG5tbS9LY29uZmlnOjY5NTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEVcXG5tbS9LY29uZmlnLTY5Ni1cXHRkZWZfYm9vbCBuXFxuLS1cXG5tbS9LY29uZmlnLTY5OC1cXHQgIEFsbG93cyB0aGUgcGFnZWJsb2NrX29yZGVyIHZhbHVlIHRvIGJlIGR5bmFtaWMgaW5zdGVhZCBvZiBqdXN0IHN0YW5kYXJkXFxubW0vS2NvbmZpZzo2OTk6XFx0ICBIVUdFVExCX1BBR0VfT1JERVIgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgSHVnZVRMQiBwYWdlIHNpemVzIGF2YWlsYWJsZVxcbm1tL0tjb25maWctNzAwLVxcdCAgb24gYSBwbGF0Zm9ybS5cXG4tLVxcbm1tL0tjb25maWc9MTAwMD1jb25maWcgUEdUQUJMRV9IQVNfSFVHRV9MRUFWRVNcXG5tbS9LY29uZmlnOjEwMDE6XFx0ZGVmX2Jvb2wgVFJBTlNQQVJFTlRfSFVHRVBBR0UgfHwgSFVHRVRMQl9QQUdFXFxubW0vS2NvbmZpZy0xMDAyLVxcbi0tXFxubW0vS2NvbmZpZz0xMDA2PWNvbmZpZyBIQVZFX0dJR0FOVElDX0ZPTElPU1xcbm1tL0tjb25maWc6MTAwNzpcXHRkZWZfYm9vbCAoSFVHRVRMQl9QQUdFIFxcdTAwMjZcXHUwMDI2IEFSQ0hfSEFTX0dJR0FOVElDX1BBR0UpIHx8IFxcXFxcXG5tbS9LY29uZmlnLTEwMDgtXFx0XFx0IChaT05FX0RFVklDRSBcXHUwMDI2XFx1MDAyNiBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDoyMTozMy40ODg2NzkwNTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDA3OTc1MDI5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqQ2hlY2tpbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBIdWdlVExCRlMgU3VwcG9ydCoqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHN0YXR1cyBvZiBIdWdlVExCRlMgd2l0aGluIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIGBmcy9LY29uZmlnYC4gSSdsbCBuZWVkIHRvIG9wZW4gdGhhdCBmaWxlIGFuZCBzZWFyY2ggdGhyb3VnaCBpdC4gSXTigJlzIHRoZSB1c3VhbCBzdGFydGluZyBwb2ludCBmb3IgZmVhdHVyZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLCBzbyBJIGV4cGVjdCB0byBmaW5kIHRoZSBuZWNlc3NhcnkgZGVmaW5pdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB0aGVyZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHdoZXRoZXIgaXQncyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgYnVpbHQgYXMgYSBtb2R1bGUsIGFsb25nIHdpdGggYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0dXMgYW5kIHRha2UgYW55IG5lY2Vzc2FyeSBmdXJ0aGVyIHN0ZXBzLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5OTMsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDoyMTo0My41Njg0MzEwMzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5NzU3MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSFVHRVRMQl9QQUdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvS2NvbmZpZz0yNjI9aWYgSFVHRVRMQkZTXFxuZnMvS2NvbmZpZzoyNjM6Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQX0RFRkFVTFRfT05cXG5mcy9LY29uZmlnLTI2NC1cXHRib29sIFxcXCJIdWdlVExCIFZtZW1tYXAgT3B0aW1pemF0aW9uIChIVk8pIGRlZmF1bHRzIHRvIG9uXFxcIlxcbmZzL0tjb25maWctMjY1LVxcdGRlZmF1bHQgblxcbmZzL0tjb25maWc6MjY2OlxcdGRlcGVuZHMgb24gSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcXG5mcy9LY29uZmlnLTI2Ny1cXHRoZWxwXFxuLS1cXG5mcy9LY29uZmlnPTI3MT1lbmRpZiAjIEhVR0VUTEJGU1xcbmZzL0tjb25maWctMjcyLVxcbmZzL0tjb25maWc6MjczOmNvbmZpZyBIVUdFVExCX1BBR0VcXG5mcy9LY29uZmlnLTI3NC1cXHRkZWZfYm9vbCBIVUdFVExCRlNcXG4tLVxcbmZzL0tjb25maWctMjc2LVxcbmZzL0tjb25maWc6Mjc3OmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxcbmZzL0tjb25maWc6Mjc4OlxcdGRlZl9ib29sIEhVR0VUTEJfUEFHRVxcbmZzL0tjb25maWctMjc5LVxcdGRlcGVuZHMgb24gQVJDSF9XQU5UX09QVElNSVpFX0hVR0VUTEJfVk1FTU1BUFxcbi0tXFxuZnMvS2NvbmZpZz0yODM9Y29uZmlnIEhVR0VUTEJfUE1EX1BBR0VfVEFCTEVfU0hBUklOR1xcbmZzL0tjb25maWc6Mjg0OlxcdGRlZl9ib29sIEhVR0VUTEJfUEFHRVxcbmZzL0tjb25maWctMjg1LVxcdGRlcGVuZHMgb24gQVJDSF9XQU5UX0hVR0VfUE1EX1NIQVJFIFxcdTAwMjZcXHUwMDI2IFNQTElUX1BNRF9QVExPQ0tTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjIxOjQzLjYzNTQxNTk2NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTk1NTM2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkRpZ2dpbmcgaW50byBIdWdlVExCIFBvaXNvbiBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IEh1Z2VUTEIncyBoZXJlLCBhbmQgSSBuZWVkIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgaG93IGhhcmR3YXJlIHBvaXNvbmluZyBpcyBjbGVhcmVkIHVwLiBUaGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGZvciB0aGlzIHdob2xlIGFyZWEgc2VlbXMgdG8gYmUgYEhVR0VUTEJGU2AuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBleGFjdCBtZWNoYW5pc20gZm9yIHRoaXMsIHNvIEkgc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGJ5IGNoZWNraW5nIGBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uYC4gSSdsbCBmaW5kIHRoaXMgZnVuY3Rpb24ncyBkZWZpbml0aW9uIGluIGVpdGhlciBgbW0vaHVnZXRsYi5jYCBvciwgcG90ZW50aWFsbHksIGl0cyBkZWNsYXJhdGlvbiBpbiBgaW5jbHVkZS9saW51eC9odWdldGxiLmhgLiBUaGF0J2xsIGJlIHRoZSBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyBvZiBob3cgdGhlc2UgcG9pc29uZWQgcGFnZXMgYXJlIGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDoyMTo0Ny4xNTQ5NzI4MjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMTQ0MDc5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaD04ODU9aW50IGRpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpb3ModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC04ODgtI2lmZGVmIENPTkZJR19NRU1PUllfRkFJTFVSRVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjg4OTpleHRlcm4gdm9pZCBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTg5MC0jZWxzZVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjg5MTpzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fY2xlYXJfaHVnZXRsYl9od3BvaXNvbihzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTg5Mi17XFxuLS1cXG5tbS9odWdldGxiLmM9MTM3Mz1zdGF0aWMgdm9pZCBmb2xpb19jbGVhcl9odWdldGxiKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdldGxiLmMtMTM3OS1cXHRpZiAodW5saWtlbHkoZm9saW9fdGVzdF9od3BvaXNvbihmb2xpbykpKVxcbm1tL2h1Z2V0bGIuYzoxMzgwOlxcdFxcdGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb24oZm9saW8pO1xcbm1tL2h1Z2V0bGIuYy0xMzgxLVxcbi0tXFxubW0vbWVtb3J5LWZhaWx1cmUuYz0xOTg0PXN0YXRpYyB1bnNpZ25lZCBsb25nIGZvbGlvX2ZyZWVfcmF3X2h3cChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBib29sIG1vdmVfZmxhZylcXG4tLVxcbm1tL21lbW9yeS1mYWlsdXJlLmMtMjAwMi1cXG5tbS9tZW1vcnktZmFpbHVyZS5jOjIwMDM6dm9pZCBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vbWVtb3J5LWZhaWx1cmUuYy0yMDA0LXtcXG4tLVxcbm1tL21lbW9yeS1mYWlsdXJlLmM9MjA4MT1zdGF0aWMgaW50IHRyeV9tZW1vcnlfZmFpbHVyZV9odWdldGxiKHVuc2lnbmVkIGxvbmcgcGZuLCBpbnQgZmxhZ3MpXFxuLS1cXG5tbS9tZW1vcnktZmFpbHVyZS5jLTIxMTgtXFx0aWYgKGh3cG9pc29uX2ZpbHRlcihwKSkge1xcbm1tL21lbW9yeS1mYWlsdXJlLmM6MjExOTpcXHRcXHRmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKGZvbGlvKTtcXG5tbS9tZW1vcnktZmFpbHVyZS5jLTIxMjAtXFx0XFx0aWYgKG1pZ3JhdGFibGVfY2xlYXJlZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjE6NDguODg2NDE4NjI1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzOTg3NTgzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIdWdlVExCIEZvbGlvIFBvaXNvbiBDbGVhcmluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG1tL2h1Z2V0bGIuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIGltcG9ydGFudCDigJMgSHVnZVRMQiBtZW1vcnkgbWFuYWdlbWVudCBpcyBjcml0aWNhbC4gTXkgaW5pdGlhbCBzY2FuIHNob3dzIGEgcmVmYWN0b3JpbmcsIHNwZWNpZmljYWxseSBhcm91bmQgaG93IGhhcmR3YXJlIHBvaXNvbiAoaHdwb2lzb24pIGZsYWdzIGFyZSBoYW5kbGVkIHdoZW4gZnJlZWluZyBIdWdlVExCIGZvbGlvcy4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBhIG5ldyBoZWxwZXIgZnVuY3Rpb24sIGBmb2xpb19jbGVhcl9odWdldGxiKHN0cnVjdCBmb2xpbyAqZm9saW8pYC4gVGhpcyBmdW5jdGlvbiBjZW50cmFsaXplcyB0aGUgbG9naWMgZm9yIGNsZWFyaW5nIEh1Z2VUTEItc3BlY2lmaWMgbWV0YWRhdGEsIGNydWNpYWxseSBpbmNsdWRpbmcgYW55IGh3cG9pc29uIGZsYWdzLlxuXG5UaGUgcGF0Y2gncyBpbnRlbnQgYXBwZWFycyBzdHJhaWdodGZvcndhcmQ6IHJlcGxhY2UgZGlyZWN0IGNhbGxzIHRvIGBfX2ZvbGlvX2NsZWFyX2h1Z2V0bGIoZm9saW8pYCB3aXRoIHRoaXMgbmV3IGhlbHBlci4gSXQncyBoYXBwZW5pbmcgaW4gc2V2ZXJhbCBrZXkgcGxhY2VzOiBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGBidWxrX3ZtZW1tYXBfcmVzdG9yZV9lcnJvcmAsIGFuZCBgdXBkYXRlX2FuZF9mcmVlX3BhZ2VzX2J1bGtgLiBUaGF0J3MgYSBnb29kIHNpZ247IGNvbnNvbGlkYXRpbmcgdGhpcyBsb2dpYyBtYWtlcyB0aGUgY29kZSBjbGVhbmVyIGFuZCBlYXNpZXIgdG8gbWFpbnRhaW4uIFBsdXMsIGl0IGVsaW1pbmF0ZXMgcG90ZW50aWFsIGluY29uc2lzdGVuY2llcyBpbiBob3cgdGhlc2UgZmxhZ3MgYXJlIGNsZWFyZWQuIFRoZXJlJ3MgYWxzbyBhIHJlbW92YWwgb2YgYSBjYWxsIHRvIGBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uKGZvbGlvKWAgaW5zaWRlIG9mIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYCBiZWNhdXNlIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGhhbmRsZWQgYnkgYGZvbGlvX2NsZWFyX2h1Z2V0bGJgLlxuXG5Ob3csIHRoZSB0aGluZyB0aGF0IG1ha2VzIG1lIHBhdXNlIGlzIHRoZSBjaGFuZ2Ugd2l0aGluIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYC4gUHJldmlvdXNseSwgYGZvbGlvX2NsZWFyX2h1Z2V0bGJfaHdwb2lzb25gIHdhcyBjYWxsZWQgKm91dHNpZGUqIHRoZSBgaHVnZXRsYl9sb2NrYCBzcGlubG9jaywgYnV0IG5vdywgaXQncyBjYWxsZWQgKmluc2lkZSogYGZvbGlvX2NsZWFyX2h1Z2V0bGJgIHdoaWNoIGlzLCBpbiB0dXJuLCBjYWxsZWQgaW5zaWRlIHRoZSBzcGlubG9jay4gVGhpcyBpcyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQgY2hhbmdlIGluIGxvY2tpbmcgc2VtYW50aWNzLiBJdCBpbXBsaWVzIHNvbWUgY2hhbmdlIGluIHRoZSBvcmRlcmluZyBvZiBvcGVyYXRpb25zIG9yIHRoZSBwcm90ZWN0aW9uIG9mIGNyaXRpY2FsIHNlY3Rpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyB3YXMgZG9uZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zIHRoYXQgYXJlIGludHJvZHVjZWQgb3IgcmVtb3ZlZC5cblxuVGhpcyBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGZpeC4gVGhlIGNvbW1lbnRzIHN1Z2dlc3QgdGhhdCB0aGVyZSB3YXMgYW4gaXNzdWUgd2hlcmUgYF9fZm9saW9fY2xlYXJfaHVnZXRsYmAgbWlnaHQgYmUgY2FsbGVkIHdpdGhvdXQgY2xlYXJpbmcgdGhlIGh3cG9pc29uIGZsYWdzIGluIHNvbWUgcGF0aHMuIFRoYXQncyBhIGNyaXRpY2FsIG1lbW9yeSBzYWZldHkgY29uY2Vybi4gVGhpcyByZWZhY3RvcmluZyBjbGVhcmx5IGFpbXMgdG8gYWRkcmVzcyBpdC4gQW5kLCBzaW5jZSBpdCBhZmZlY3RzIGNvcmUgSHVnZVRMQiBhbmQgcG90ZW50aWFsbHkgZXJyb3IgaGFuZGxpbmcgaXQgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgcmVsYXRlZCB0byBod3BvaXNvbiBvciBIdWdlVExCIG1hbmFnZW1lbnQuXG5cbk5vdywgbGV0J3Mgc2VlIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQuIEkgbmVlZCBgSFVHRVRMQkZTYCwgYEhVR0VUTEJfUEFHRWAsIGFuZCBjcnVjaWFsbHksIGBNRU1PUllfRkFJTFVSRWAuIFRoZSBsYXN0IG9uZSBpcyBpbXBvcnRhbnQsIGFzIGBmb2xpb19jbGVhcl9odWdldGxiX2h3cG9pc29uYCBpcyBsaWtlbHkgYW4gZW1wdHkgaW5saW5lIGZ1bmN0aW9uIGlmIGBNRU1PUllfRkFJTFVSRWAgaXNuJ3QgZW5hYmxlZC4gTGV0J3MgY29uZmlybSB0aGF0IHRoYXQgY29uZmlnIGlzIHNldCB0byBlbnN1cmUgdGhlIGZ1enplciBnZXRzIHRoZSBkZXNpcmVkIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTYxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjIyOjAxLjI4NTE3OTk4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5MjIxMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRU1PUllfRkFJTFVSRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9NzYwPWNvbmZpZyBBUkNIX1NVUFBPUlRTX01FTU9SWV9GQUlMVVJFXFxuLS1cXG5tbS9LY29uZmlnLTc2Mi1cXG5tbS9LY29uZmlnOjc2Mzpjb25maWcgTUVNT1JZX0ZBSUxVUkVcXG5tbS9LY29uZmlnLTc2NC1cXHRkZXBlbmRzIG9uIE1NVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDoyMjowMS40OTQ0MDk1MzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTkxMjk0ODgzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgRmFpbHVyZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGlzIGBNRU1PUllfRkFJTFVSRWAgY29uZmlndXJhdGlvbiwgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuIE15IGZvY3VzIGlzIG9uIHRoZSBzcGVjaWZpYyBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhpcy5cblxuTGV0J3Mgc2Vl4oCmIEkgbmVlZCB0byBjaGVjayBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gIGFuZCB0aGF0ICpvdGhlciogcmVsYXRlZCBmdW5jdGlvbiwgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbmFtZWQgYF9fdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9gLiBIbW0sIHRoZSBkb3VibGUgdW5kZXJzY29yZSBzdWdnZXN0cyBpdCdzIGxpa2VseSBhIHN0YXRpYyBmdW5jdGlvbiwgbWF5YmUgaXQncyBleHBvc2VkIGV4dGVybmFsbHkgYXMgYHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYC4gVGhhdCdzIGEgc3Ryb25nIGxlYWQuIEkgYWxzbyBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yYCBhbmQgYHVwZGF0ZV9hbmRfZnJlZV9wYWdlc19idWxrYC4gVGhleSBzZWVtIGNsb3NlbHkgYWxpZ25lZCB0byB0aGlzIHBhcnRpY3VsYXIgZmFpbHVyZSBzY2VuYXJpbyBhbmQgaXQncyBhbHNvIHByb2JhYmx5IHN0YXRpYy5cblxuUmlnaHQsIEknbGwgc3RhcnQgYnkgZGl2aW5nIGludG8gYG1tL2h1Z2V0bGIuY2AgdG8gZXhhbWluZSBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gIGFuZCB0aGVuIGB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AuIFRoYXQgd2lsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaG93IHRoZSBodWdlIHBhZ2UgbWFuYWdlbWVudCBpbnRlcmFjdHMgd2l0aCB0aGlzIG1lbW9yeSBmYWlsdXJlLiBUaGlzIHdpbGwgcHJvYmFibHkgbGVhZCBtZSB0byB0aGUgb3RoZXIgZnVuY3Rpb25zIGFzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MjksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MTEuNDA3MzYxOTcyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU0MDg4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm9pZCByZW1vdmVfaHVnZXRsYl9mb2xpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9odWdldGxiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTEzNzM9c3RhdGljIHZvaWQgZm9saW9fY2xlYXJfaHVnZXRsYihzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jLTEzOTItICovXFxubW0vaHVnZXRsYi5jOjEzOTM6dm9pZCByZW1vdmVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbm1tL2h1Z2V0bGIuYy0xMzk0LVxcdFxcdFxcdCAgYm9vbCBhZGp1c3Rfc3VycGx1cylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MTEuNTQyNzc2OTkzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTcyMTAyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIGB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFzIGFuIGV4cGVydDpcblxuKipBbmFseXppbmcgdGhlIGB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCB0aGUgbmFtZSBpdHNlbGYgYWxyZWFkeSBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIGB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AuIEhtbSwgc28gdGhpcyBsaWtlbHkgaGFuZGxlcyB1cGRhdGluZyBzb21lIG1ldGFkYXRhIG9yIHN0YXRlIHJlbGF0ZWQgdG8gYSBIdWdlVExCIGZvbGlvIChhIHBhZ2Utc2l6ZWQgY2h1bmsgbWFuYWdlZCB3aXRoaW4gdGhlIEh1Z2VUTEIgc3lzdGVtKSAqYmVmb3JlKiBmcmVlaW5nIGl0LiBUaGlzIGlzIGEgY3JpdGljYWwgcG9pbnQsIGFuZCBvbmUgSSBrbm93IGlzIG9mdGVuIHRyaWNreS4gSHVnZVRMQiBtYW5hZ2VtZW50IGlzIGFsbCBhYm91dCBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbiwgc28gYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgcmVzb3VyY2UgbGVha3MgYXJlIHNvbWV0aGluZyB0byBiZSBpbW1lZGlhdGVseSBhd2FyZSBvZi4gSSBrbm93IGhvdyBpbXBvcnRhbnQgaXQgaXMgdG8gaGFuZGxlIGFsbCB0aGUgbmVjZXNzYXJ5IGhvdXNla2VlcGluZyBiZWZvcmUgZGVhbGxvY2F0aW5nIHRoZSBtZW1vcnkuIExldCdzIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgJ3VwZGF0ZScgbWVhbnMgaW4gdGhpcyBjb250ZXh0IOKAkyBpcyBpdCByZWZlcmVuY2UgY291bnRpbmcsIHN0YXR1cyBmbGFncywgc29tZXRoaW5nIGVsc2U/IEkgaG9wZSBpdCdzIHdlbGwtZG9jdW1lbnRlZCEgVGltZSB0byBsb29rIGF0IHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTY3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MTQuOTM5OTkwNDE3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQxNjY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9odWdldGxiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTE0Mjk9dm9pZCBhZGRfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE0NTgtXFxubW0vaHVnZXRsYi5jOjE0NTk6c3RhdGljIHZvaWQgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbm1tL2h1Z2V0bGIuYy0xNDYwLVxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdldGxiLmMtMTUwOC0vKlxcbm1tL2h1Z2V0bGIuYzoxNTA5OiAqIEFzIHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKCkgY2FuIGJlIGNhbGxlZCB1bmRlciBhbnkgY29udGV4dCwgc28gd2UgY2Fubm90XFxubW0vaHVnZXRsYi5jLTE1MTAtICogdXNlIEdGUF9LRVJORUwgdG8gYWxsb2NhdGUgdm1lbW1hcCBwYWdlcy4gSG93ZXZlciwgd2UgY2FuIGRlZmVyIHRoZVxcbi0tXFxubW0vaHVnZXRsYi5jPTE1MjE9c3RhdGljIHZvaWQgZnJlZV9ocGFnZV93b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubW0vaHVnZXRsYi5jLTE1NDItXFxubW0vaHVnZXRsYi5jOjE1NDM6XFx0XFx0X191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbyk7XFxubW0vaHVnZXRsYi5jLTE1NDQtXFxuLS1cXG5tbS9odWdldGxiLmM9MTU1MD1zdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfZnJlZV9ocGFnZV93b3JrKHN0cnVjdCBoc3RhdGUgKmgpXFxuLS1cXG5tbS9odWdldGxiLmMtMTU1NS1cXG5tbS9odWdldGxiLmM6MTU1NjpzdGF0aWMgdm9pZCB1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbm1tL2h1Z2V0bGIuYy0xNTU3LVxcdFxcdFxcdFxcdCBib29sIGF0b21pYylcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xNTU5LVxcdGlmICghZm9saW9fdGVzdF9odWdldGxiX3ZtZW1tYXBfb3B0aW1pemVkKGZvbGlvKSB8fCAhYXRvbWljKSB7XFxubW0vaHVnZXRsYi5jOjE1NjA6XFx0XFx0X191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbyk7XFxubW0vaHVnZXRsYi5jLTE1NjEtXFx0XFx0cmV0dXJuO1xcbi0tXFxubW0vaHVnZXRsYi5jPTE1NzU9c3RhdGljIHZvaWQgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xNTkzLVxcdFxcdFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2aHVnZXRsYl9sb2NrKTtcXG5tbS9odWdldGxiLmM6MTU5NDpcXHRcXHRcXHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy0xNTk1LVxcdFxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbi0tXFxubW0vaHVnZXRsYi5jLTE2MTgtXFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZodWdldGxiX2xvY2spO1xcbm1tL2h1Z2V0bGIuYzoxNjE5OlxcdFxcdFxcdFxcdHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTE2MjAtXFx0XFx0XFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuLS1cXG5tbS9odWdldGxiLmM9MTYyNj1zdGF0aWMgdm9pZCB1cGRhdGVfYW5kX2ZyZWVfcGFnZXNfYnVsayhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE2NjEtXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGZvbGlvLCB0X2ZvbGlvLCBcXHUwMDI2bm9uX2h2b19mb2xpb3MsIGxydSkge1xcbm1tL2h1Z2V0bGIuYzoxNjYyOlxcdFxcdHVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTE2NjMtXFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuLS1cXG5tbS9odWdldGxiLmM9MTY3OD12b2lkIGZyZWVfaHVnZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jLTE3MzItXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aHVnZXRsYl9sb2NrLCBmbGFncyk7XFxubW0vaHVnZXRsYi5jOjE3MzM6XFx0XFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIHRydWUpO1xcbm1tL2h1Z2V0bGIuYy0xNzM0LVxcdH0gZWxzZSBpZiAoaC1cXHUwMDNlc3VycGx1c19odWdlX3BhZ2VzX25vZGVbbmlkXSkge1xcbi0tXFxubW0vaHVnZXRsYi5jLTE3MzctXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aHVnZXRsYl9sb2NrLCBmbGFncyk7XFxubW0vaHVnZXRsYi5jOjE3Mzg6XFx0XFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIHRydWUpO1xcbm1tL2h1Z2V0bGIuYy0xNzM5LVxcdH0gZWxzZSB7XFxuLS1cXG5tbS9odWdldGxiLmM9MTk1Nj1pbnQgZGlzc29sdmVfZnJlZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdldGxiLmMtMjAyNi1cXG5tbS9odWdldGxiLmM6MjAyNzpcXHRcXHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBmb2xpbywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy0yMDI4LVxcdFxcdHJldHVybiByYztcXG4tLVxcbm1tL2h1Z2V0bGIuYz0yNjMyPXN0YXRpYyBpbnQgYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGZvbGlvICpvbGRfZm9saW8sXFxuLS1cXG5tbS9odWdldGxiLmMtMjcwNC1cXHRcXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNmh1Z2V0bGJfbG9jayk7XFxubW0vaHVnZXRsYi5jOjI3MDU6XFx0XFx0dXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW8oaCwgb2xkX2ZvbGlvLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTI3MDYtXFx0fVxcbi0tXFxubW0vaHVnZXRsYi5jLTI3MTItXFx0aWYgKG5ld19mb2xpbylcXG5tbS9odWdldGxiLmM6MjcxMzpcXHRcXHR1cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhoLCBuZXdfZm9saW8sIGZhbHNlKTtcXG5tbS9odWdldGxiLmMtMjcxNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MTQuOTg3NDEzMzM2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNzkxNzQzNzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBIdWdlIFBhZ2UgRm9saW8gUmVtb3ZhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHNlZSBpdCdzIHRvdWNoaW5nIGEgZmV3IGtleSBmdW5jdGlvbnMgcmVsYXRlZCB0byBoYW5kbGluZyBodWdlIHBhZ2VzOiBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGBidWxrX3ZtZW1tYXBfcmVzdG9yZV9lcnJvcmAsIGFuZCBgdXBkYXRlX2FuZF9mcmVlX3BhZ2VzX2J1bGtgLiBJbnRlcmVzdGluZy5cblxuRmlyc3QgdGhvdWdodCBpcyB0aGF0IGByZW1vdmVfaHVnZXRsYl9mb2xpb2AgaXNuJ3Qgc3RhdGljLCBtZWFuaW5nIGl0J3MgbGlrZWx5IGNhbGxlZCBmcm9tIG1vcmUgcGxhY2VzIHRoYW4ganVzdCB3aXRoaW4gdGhpcyBtb2R1bGUuIGBfX3VwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvYCBpcyBzdGF0aWMsIHdoaWNoIGxpbWl0cyBpdHMgc2NvcGUsIGJ1dCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgZnJlZV9odWdlX2ZvbGlvYCBhbmQgYGRpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpb2AgY2FsbCBpdC4gSSBrbm93IHRoZXNlIGZ1bmN0aW9ucyBsaWtlIHRoZSBiYWNrIG9mIG15IGhhbmQsIHNvIHRoYXQncyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIGFzIEkgZGl2ZSBkZWVwZXIuXG5cbkFuZCwgYXMgSSBleHBlY3RlZCwgYm90aCBgZnJlZV9odWdlX2ZvbGlvYCBhbmQgYGRpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpb2AgYXJlIG5vbi1zdGF0aWMuIFNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyB0aGlzIHBhdGNoIGltcGFjdHMgdGhlaXIgaW50ZXJwbGF5IHdpdGggdGhlIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb24uXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgZ29pbmcgdG8gYmUgdG8gc2VlICp3aGVyZSogYHJlbW92ZV9odWdldGxiX2ZvbGlvYCBpcyBhY3R1YWxseSBiZWluZyBjYWxsZWQgZnJvbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgZ3JhcGggdG8gZnVsbHkgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3ODAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MjUuNzc5MTU5OTU3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzE1MDcxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZW1vdmVfaHVnZXRsYl9mb2xpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTEzNzM9c3RhdGljIHZvaWQgZm9saW9fY2xlYXJfaHVnZXRsYihzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jLTEzOTItICovXFxubW0vaHVnZXRsYi5jOjEzOTM6dm9pZCByZW1vdmVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbm1tL2h1Z2V0bGIuYy0xMzk0LVxcdFxcdFxcdCAgYm9vbCBhZGp1c3Rfc3VycGx1cylcXG4tLVxcbm1tL2h1Z2V0bGIuYz0xNTIxPXN0YXRpYyB2b2lkIGZyZWVfaHBhZ2Vfd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xNTM3LVxcdFxcdCAqIGZvbGlvX2hzdGF0ZSgpIGlzIGdvaW5nIHRvIHRyaWdnZXIgYmVjYXVzZSBhIHByZXZpb3VzIGNhbGwgdG9cXG5tbS9odWdldGxiLmM6MTUzODpcXHRcXHQgKiByZW1vdmVfaHVnZXRsYl9mb2xpbygpIHdpbGwgY2xlYXIgdGhlIGh1Z2V0bGIgYml0LCBzbyBkb1xcbm1tL2h1Z2V0bGIuYy0xNTM5LVxcdFxcdCAqIG5vdCB1c2UgZm9saW9faHN0YXRlKCkgZGlyZWN0bHkuXFxuLS1cXG5tbS9odWdldGxiLmM9MTY3OD12b2lkIGZyZWVfaHVnZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jLTE3MzAtXFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYl90ZW1wb3JhcnkoZm9saW8pKSB7XFxubW0vaHVnZXRsYi5jOjE3MzE6XFx0XFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGZhbHNlKTtcXG5tbS9odWdldGxiLmMtMTczMi1cXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZodWdldGxiX2xvY2ssIGZsYWdzKTtcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xNzM1LVxcdFxcdC8qIHJlbW92ZSB0aGUgcGFnZSBmcm9tIGFjdGl2ZSBsaXN0ICovXFxubW0vaHVnZXRsYi5jOjE3MzY6XFx0XFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIHRydWUpO1xcbm1tL2h1Z2V0bGIuYy0xNzM3LVxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmh1Z2V0bGJfbG9jaywgZmxhZ3MpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTE5MTg9c3RhdGljIHN0cnVjdCBmb2xpbyAqcmVtb3ZlX3Bvb2xfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE5MzMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZm9saW8sIGxydSk7XFxubW0vaHVnZXRsYi5jOjE5MzQ6XFx0XFx0XFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGFjY3Rfc3VycGx1cyk7XFxubW0vaHVnZXRsYi5jLTE5MzUtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5tbS9odWdldGxiLmM9MTk1Nj1pbnQgZGlzc29sdmVfZnJlZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdldGxiLmMtMTk5OC1cXHRcXHRcXHRhZGp1c3Rfc3VycGx1cyA9IHRydWU7XFxubW0vaHVnZXRsYi5jOjE5OTk6XFx0XFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oaCwgZm9saW8sIGFkanVzdF9zdXJwbHVzKTtcXG5tbS9odWdldGxiLmMtMjAwMC1cXHRcXHRoLVxcdTAwM2VtYXhfaHVnZV9wYWdlcy0tO1xcbi0tXFxubW0vaHVnZXRsYi5jLTIwMTEtXFx0XFx0ICogVGhlIGZvbGlvX3Rlc3RfaHVnZXRsYiBjaGVjayBoZXJlIGlzIGJlY2F1c2VcXG5tbS9odWdldGxiLmM6MjAxMjpcXHRcXHQgKiByZW1vdmVfaHVnZXRsYl9mb2xpbyB3aWxsIGNsZWFyIGh1Z2V0bGIgZm9saW8gZmxhZyBmb3JcXG5tbS9odWdldGxiLmMtMjAxMy1cXHRcXHQgKiBub24tdm1lbW1hcCBvcHRpbWl6ZWQgaHVnZXRsYiBmb2xpb3MuXFxuLS1cXG5tbS9odWdldGxiLmM9MjYzMj1zdGF0aWMgaW50IGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqb2xkX2ZvbGlvLFxcbi0tXFxubW0vaHVnZXRsYi5jLTI2OTEtXFx0XFx0ICovXFxubW0vaHVnZXRsYi5jOjI2OTI6XFx0XFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oaCwgb2xkX2ZvbGlvLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTI2OTMtXFxuLS1cXG5tbS9odWdldGxiLmM9MzY5Nz1zdGF0aWMgdm9pZCB0cnlfdG9fZnJlZV9sb3coc3RydWN0IGhzdGF0ZSAqaCwgdW5zaWduZWQgbG9uZyBjb3VudCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0zNzE3LVxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbm1tL2h1Z2V0bGIuYzozNzE4OlxcdFxcdFxcdHJlbW92ZV9odWdldGxiX2ZvbGlvKGgsIGZvbGlvLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTM3MTktXFx0XFx0XFx0bGlzdF9hZGQoXFx1MDAyNmZvbGlvLVxcdTAwM2VscnUsIFxcdTAwMjZwYWdlX2xpc3QpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTQwMTc9bG9uZyBkZW1vdGVfcG9vbF9odWdlX3BhZ2Uoc3RydWN0IGhzdGF0ZSAqc3JjLCBub2RlbWFza190ICpub2Rlc19hbGxvd2VkLFxcbi0tXFxubW0vaHVnZXRsYi5jLTQwNDItXFxubW0vaHVnZXRsYi5jOjQwNDM6XFx0XFx0XFx0cmVtb3ZlX2h1Z2V0bGJfZm9saW8oc3JjLCBmb2xpbywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy00MDQ0LVxcdFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1LCBcXHUwMDI2bGlzdCk7XFxuLS1cXG5tbS9odWdldGxiX2ludGVybmFsLmg9NzE9c3RhdGljIGlubGluZSBpbnQgaHN0YXRlX25leHRfbm9kZV90b19mcmVlKHN0cnVjdCBoc3RhdGUgKmgsIG5vZGVtYXNrX3QgKm5vZGVzX2FsbG93ZWQpXFxuLS1cXG5tbS9odWdldGxiX2ludGVybmFsLmgtOTQtXFxubW0vaHVnZXRsYl9pbnRlcm5hbC5oOjk1OmV4dGVybiB2b2lkIHJlbW92ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8sXFxubW0vaHVnZXRsYl9pbnRlcm5hbC5oLTk2LVxcdFxcdFxcdFxcdCBib29sIGFkanVzdF9zdXJwbHVzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MjUuODQyMzE3NjkzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MzA3NzgyNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjo5MjIyLCJPdXRwdXRUb2tlbnMiOjIzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6MjI6MzMuNDczMDk4ODM5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk4ODQxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJfUEFHRVwiLFxuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZW1vdmVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwidXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImRpc3NvbHZlX2ZyZWVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImZyZWVfaHVnZV9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBjbGVhcmluZyB0aGUgaHVnZXRsYiBmbGFnIGZyb20gYSBmb2xpby4gSXQgaW50cm9kdWNlcyBgZm9saW9fY2xlYXJfaHVnZXRsYmAgd2hpY2ggYWxzbyBjbGVhcnMgdGhlIGh3cG9pc29uIGZsYWcgaWYgaXQncyBzZXQsIG1vdmluZyBpdCB0byB0aGUgZXJyb3IgcGFnZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGh1Z2V0bGIgcGFnZSBmcmVlaW5nIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4gSXQgYWZmZWN0cyBgcmVtb3ZlX2h1Z2V0bGJfZm9saW9gLCBgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYnVsa192bWVtbWFwX3Jlc3RvcmVfZXJyb3JgLiBUaGUgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBgSFVHRVRMQl9QQUdFYCBhbmQgYE1FTU9SWV9GQUlMVVJFYCBhcmUgcmVxdWlyZWQgdG8gdGVzdCB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCX1BBR0VcIixcbiAgICBcIk1FTU9SWV9GQUlMVVJFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVtb3ZlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcInVwZGF0ZV9hbmRfZnJlZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJkaXNzb2x2ZV9mcmVlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJmcmVlX2h1Z2VfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgY2xlYXJpbmcgdGhlIGh1Z2V0bGIgZmxhZyBmcm9tIGEgZm9saW8uIEl0IGludHJvZHVjZXMgYGZvbGlvX2NsZWFyX2h1Z2V0bGJgIHdoaWNoIGFsc28gY2xlYXJzIHRoZSBod3BvaXNvbiBmbGFnIGlmIGl0J3Mgc2V0LCBtb3ZpbmcgaXQgdG8gdGhlIGVycm9yIHBhZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBodWdldGxiIHBhZ2UgZnJlZWluZyBhbmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuIEl0IGFmZmVjdHMgYHJlbW92ZV9odWdldGxiX2ZvbGlvYCwgYF9fdXBkYXRlX2FuZF9mcmVlX2h1Z2V0bGJfZm9saW9gLCBhbmQgYGJ1bGtfdm1lbW1hcF9yZXN0b3JlX2Vycm9yYC4gVGhlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4gYEhVR0VUTEJfUEFHRWAgYW5kIGBNRU1PUllfRkFJTFVSRWAgYXJlIHJlcXVpcmVkIHRvIHRlc3QgdGhpcyBjb2RlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrdfq[1] Phase: Succeeded StartedAt: 2026-07-30 00:22:44 +0000 UTC FinishedAt: 2026-07-30 00:22:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-30 00:22:44 +0000 UTC FinishedAt: 2026-07-30 00:22:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2] Phase: Succeeded StartedAt: 2026-07-30 00:22:44 +0000 UTC FinishedAt: 2026-07-30 03:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-30 00:22:44 +0000 UTC FinishedAt: 2026-07-30 03:43:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-30 00:22:44 +0000 UTC FinishedAt: 2026-07-30 00:22:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-30 00:22:44 +0000 UTC FinishedAt: 2026-07-30 00:22:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzrdfq/series-workflowzrdfq-convert-artifact-637052789/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-30 00:22:54 +0000 UTC FinishedAt: 2026-07-30 00:44:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-30 00:22:54 +0000 UTC FinishedAt: 2026-07-30 00:44:35 +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:*2f6dda7f-e02a-4aef-8eaf-d118157e4a4b,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-workflowzrdfq/series-workflowzrdfq-convert-artifact-637052789/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": "e017d5eb-bbc8-4f6f-be1f-36fc535a4e60", "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-workflowzrdfq/series-workflowzrdfq-build-action-1780220251/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-30 00:22:54 +0000 UTC FinishedAt: 2026-07-30 00:44:25 +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:*2f6dda7f-e02a-4aef-8eaf-d118157e4a4b,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-workflowzrdfq/series-workflowzrdfq-convert-artifact-637052789/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": "e017d5eb-bbc8-4f6f-be1f-36fc535a4e60", "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-workflowzrdfq/series-workflowzrdfq-build-action-1780220251/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-30 00:44:35 +0000 UTC FinishedAt: 2026-07-30 00:44:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-30 00:44:35 +0000 UTC FinishedAt: 2026-07-30 00:44:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-30 00:44:35 +0000 UTC FinishedAt: 2026-07-30 00:44:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-30 00:44:35 +0000 UTC FinishedAt: 2026-07-30 00:44:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzrdfq/series-workflowzrdfq-convert-artifact-1944914896/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-30 00:44:45 +0000 UTC FinishedAt: 2026-07-30 00:46:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-30 00:44:45 +0000 UTC FinishedAt: 2026-07-30 00:46:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e017d5eb-bbc8-4f6f-be1f-36fc535a4e60,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-workflowzrdfq/series-workflowzrdfq-build-action-1780220251/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-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-30 00:46:32 +0000 UTC FinishedAt: 2026-07-30 00:46:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-30 00:46:32 +0000 UTC FinishedAt: 2026-07-30 00:46:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-30 00:46:32 +0000 UTC FinishedAt: 2026-07-30 01:06:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-30 00:46:32 +0000 UTC FinishedAt: 2026-07-30 01:06: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:*2f6dda7f-e02a-4aef-8eaf-d118157e4a4b,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-workflowzrdfq/series-workflowzrdfq-convert-artifact-1944914896/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": "0d5c657e-afc5-45c1-8005-d93943ddd35e", "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-workflowzrdfq/series-workflowzrdfq-build-action-3146893644/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-30 00:46:32 +0000 UTC FinishedAt: 2026-07-30 01:06:08 +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:*2f6dda7f-e02a-4aef-8eaf-d118157e4a4b,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-workflowzrdfq/series-workflowzrdfq-convert-artifact-1944914896/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": "0d5c657e-afc5-45c1-8005-d93943ddd35e", "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-workflowzrdfq/series-workflowzrdfq-build-action-3146893644/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-30 01:06:19 +0000 UTC FinishedAt: 2026-07-30 01:06:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-30 01:06:19 +0000 UTC FinishedAt: 2026-07-30 01:06:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-30 01:06:19 +0000 UTC FinishedAt: 2026-07-30 01:08:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-30 01:06:19 +0000 UTC FinishedAt: 2026-07-30 01:08:05 +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:*0d5c657e-afc5-45c1-8005-d93943ddd35e,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-workflowzrdfq/series-workflowzrdfq-build-action-3146893644/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-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Failed StartedAt: 2026-07-30 01:08:16 +0000 UTC FinishedAt: 2026-07-30 03:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Failed StartedAt: 2026-07-30 01:08:16 +0000 UTC FinishedAt: 2026-07-30 03:43:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*e017d5eb-bbc8-4f6f-be1f-36fc535a4e60,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0d5c657e-afc5-45c1-8005-d93943ddd35e,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-workflowzrdfq/series-workflowzrdfq-build-action-1780220251/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-workflowzrdfq/series-workflowzrdfq-build-action-3146893644/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-30 01:08:16 +0000 UTC FinishedAt: 2026-07-30 01:08:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-30 01:08:16 +0000 UTC FinishedAt: 2026-07-30 01:08:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzrdfq/series-workflowzrdfq-convert-artifact-2308593353/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-30 01:08:16 +0000 UTC FinishedAt: 2026-07-30 01:08:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-30 01:08:16 +0000 UTC FinishedAt: 2026-07-30 01:08:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-30 01:08:16 +0000 UTC FinishedAt: 2026-07-30 01:08:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Failed StartedAt: 2026-07-30 01:08:28 +0000 UTC FinishedAt: 2026-07-30 03:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrdfq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_hugetlb_folio","update_and_free_hugetlb_folio","dissolve_free_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","free_huge_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ae98967f6e94c2239d81795f9f6c987add5518c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLB_PAGE","MEMORY_FAILURE"],"series_id":"8fbdcfba-9b2b-4029-aa4e-29193d3aac67","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Error StartedAt: 2026-07-30 01:08:28 +0000 UTC FinishedAt: 2026-07-30 03:43:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e017d5eb-bbc8-4f6f-be1f-36fc535a4e60,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0d5c657e-afc5-45c1-8005-d93943ddd35e,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-workflowzrdfq/series-workflowzrdfq-build-action-1780220251/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-workflowzrdfq/series-workflowzrdfq-build-action-3146893644/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-workflowzrdfq/series-workflowzrdfq-convert-artifact-2308593353/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil