Name: series-workflowhmjkd Phase: Succeeded StartedAt: 2026-08-22 00:42:46 +0000 UTC FinishedAt: 2026-08-22 05:22:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[0] Phase: Succeeded StartedAt: 2026-08-22 00:42:46 +0000 UTC FinishedAt: 2026-08-22 01:41:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[0].run-triage Phase: Succeeded StartedAt: 2026-08-22 00:42:46 +0000 UTC FinishedAt: 2026-08-22 01:41:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "669e4fa766000ae4137bb02eb22ce75ba78ad32d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "XDP_SOCKETS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "669e4fa766000ae4137bb02eb22ce75ba78ad32d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "XDP_SOCKETS" ], "series_id": "94c3e993-94a3-442e-87fb-3f9288e11fe4" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_check" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciYjMzk7cyBgY2hlY2tfY29uZF9qbXBfb3BgIGZ1bmN0aW9uIHdoZXJlIGl0IGluY29ycmVjdGx5IGluZmVycmVkIHRoYXQgYSBwb2ludGVyIHdhcyBub3QgbnVsbCB3aGVuIGNvbXBhcmVkIHRvIGFub3RoZXIgcG9pbnRlciB0aGF0IGNvdWxkIGFsc28gYmUgbnVsbCAob3IgdW50cnVzdGVkKS4gVGhpcyBidWcgY291bGQgYWxsb3cgYSBCUEYgcHJvZ3JhbSB0byBieXBhc3MgbnVsbCBjaGVja3MsIGxlYWRpbmcgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGludmFsaWQgYWNjZXNzIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MsIHdoaWNoIGFyZSB0aGUgc3BlY2lmaWMgdGFyZ2V0cyBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBhIHJlZ2lzdGVyIGNvdWxkIGJlIGluY29ycmVjdGx5IGluZmVycmVkIGFzIG5vdCBudWxsIGFmdGVyIGEgY29uZGl0aW9uYWwganVtcC4gVGhpcyBpcyBhIGNvcmUgdmVyaWZpZXIgbG9naWMgY2hhbmdlIHRoYXQgYWZmZWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdmVyaWZpY2F0aW9uLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTQ1NDk2MWUzMDM4N2Y4ZmM5NzkxZDhhNTYwNjdkYjVmYTNhMjFiY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDIyIDAxOjMzOjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggZTAzNmFlMjBiZjZiOS4uODk3ZWM0YjM4ZGVhYiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMzU1LDYgJiM0MzszNTUsOCBAQCBzdGF0aWMgYm9vbCByZWdfbm90X251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdFxuIFx0dHlwZSA9IGJhc2VfdHlwZSh0eXBlKTtcbiBcdHJldHVybiB0eXBlID09IFBUUl9UT19TT0NLRVQgfHxcbiBcdFx0dHlwZSA9PSBQVFJfVE9fVENQX1NPQ0sgfHxcbiYjNDM7XHRcdHR5cGUgPT0gUFRSX1RPX1hEUF9TT0NLIHx8XG4mIzQzO1x0XHR0eXBlID09IFBUUl9UT19CVUYgfHxcbiBcdFx0dHlwZSA9PSBQVFJfVE9fTUFQX1ZBTFVFIHx8XG4gXHRcdHR5cGUgPT0gUFRSX1RPX01BUF9LRVkgfHxcbiBcdFx0dHlwZSA9PSBQVFJfVE9fU09DS19DT01NT04gfHxcbkBAIC0xNzA4NSw3ICYjNDM7MTcwODcsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHQgKi9cbiBcdGlmICghaXNfam1wMzIgXHUwMDI2XHUwMDI2IEJQRl9TUkMoaW5zbi1cdTAwM2Vjb2RlKSA9PSBCUEZfWCBcdTAwMjZcdTAwMjZcbiBcdCAgICBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIHNyY19yZWcpIFx1MDAyNlx1MDAyNiBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIGRzdF9yZWcpIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cdTAwM2V0eXBlKSAhPSB0eXBlX21heV9iZV9udWxsKGRzdF9yZWctXHUwMDNldHlwZSkgXHUwMDI2XHUwMDI2XG4gXHQgICAgYmFzZV90eXBlKHNyY19yZWctXHUwMDNldHlwZSkgIT0gUFRSX1RPX0JURl9JRCBcdTAwMjZcdTAwMjZcbiBcdCAgICBiYXNlX3R5cGUoZHN0X3JlZy1cdTAwM2V0eXBlKSAhPSBQVFJfVE9fQlRGX0lEKSB7XG4gXHRcdGVxX2JyYW5jaF9yZWdzID0gTlVMTDtcbkBAIC0xNzEwMSw5ICYjNDM7MTcxMDIsMTEgQEAgc3RhdGljIGludCBjaGVja19jb25kX2ptcF9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHRcdGlmIChlcV9icmFuY2hfcmVncykge1xuLVx0XHRcdGlmICh0eXBlX21heV9iZV9udWxsKHNyY19yZWctXHUwMDNldHlwZSkpXG4mIzQzO1x0XHRcdC8qIHNyYyA9PSBkc3QgXHUwMDI2XHUwMDI2IGRzdCAhPSBOVUxMID1cdTAwM2Ugc3JjICE9IE5VTEwgKi9cbiYjNDM7XHRcdFx0aWYgKHJlZ19ub3RfbnVsbChlbnYsIGRzdF9yZWcpIFx1MDAyNlx1MDAyNiB0eXBlX21heV9iZV9udWxsKHNyY19yZWctXHUwMDNldHlwZSkpXG4gXHRcdFx0XHRtYXJrX3B0cl9ub3RfbnVsbF9yZWcoXHUwMDI2ZXFfYnJhbmNoX3JlZ3NbaW5zbi1cdTAwM2VzcmNfcmVnXSk7XG4tXHRcdFx0ZWxzZVxuJiM0MztcdFx0XHQvKiBzcmMgPT0gZHN0IFx1MDAyNlx1MDAyNiBzcmMgIT0gTlVMTCA9XHUwMDNlIGRzdCAhPSBOVUxMICovXG4mIzQzO1x0XHRcdGlmIChyZWdfbm90X251bGwoZW52LCBzcmNfcmVnKSBcdTAwMjZcdTAwMjYgdHlwZV9tYXlfYmVfbnVsbChkc3RfcmVnLVx1MDAzZXR5cGUpKVxuIFx0XHRcdFx0bWFya19wdHJfbm90X251bGxfcmVnKFx1MDAyNmVxX2JyYW5jaF9yZWdzW2luc24tXHUwMDNlZHN0X3JlZ10pO1xuIFx0XHR9XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jXG5pbmRleCAzZDFlOGRlNDM5MGMyLi4wODVkMTE0Njg5NmMxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLmNcbkBAIC0zLDcgJiM0MzszLDkgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9icGYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGJvb2wuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O2JwZl9taXNjLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YnBmX2tmdW5jcy5oXCYjMzQ7XG4gXG4gc3RydWN0IHtcbiBcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfWFNLTUFQKTtcbkBAIC0yNjQsNCAmIzQzOzI2Niw0NiBAQCBfX25ha2VkIHZvaWQgam5lX3JlZ19yZWdfbnVsbF9jaGVjayh2b2lkKVxuICAgICAgICAgOiBfX2Nsb2JiZXJfYWxsKTtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIEEgY29tcGFyaXNvbiBiZXR3ZWVuIFBUUl9UT19NRU0gfCBNRU1fUkRPTkxZIHwgUFRSX1VOVFJVU1RFRCBhbmRcbiYjNDM7ICogUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMIHNob3VsZCBub3QgaW5mZXIgdGhhdCBtYXAgcG9pbnRlciBpcyBub3QgbnVsbC5cbiYjNDM7ICogQSBidWcgaW4gY2hlY2tfY29uZF9qbXBfb3AoKSBtYWRlIHN1Y2ggaW5mZXJlbmNlIHBvc3NpYmxlLlxuJiM0MzsgKi9cbiYjNDM7U0VDKFwmIzM0O3Jhd190cFwmIzM0OylcbiYjNDM7X19mYWlsdXJlXG4mIzQzO19fbXNnKFwmIzM0O2Vycm9yOiBpbnZhbGlkIGRlcmVmZXJlbmNlIG9mIFIwICh4ZHBfc29ja19vcl9udWxsKVwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7XHUwMDNlXHUwMDNlXHUwMDNlIDEwIHwgKDYxKSByMCA9ICoodTMyICopKHIwICYjNDM7MClcJiMzNDspXG4mIzQzO19fbmFrZWQgdm9pZCB1bnRydXN0ZWRfbWVtX2RvZXNfbm90X2luZmVyX21hcF92YWx1ZV9ub25fbnVsbCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcJiMzNDtcdFx0XHRcdFx0XFxcbiYjNDM7XHQvKiByOCA9IGJwZl9yZG9ubHlfY2FzdCgwLCAwKTsgKi9cdFx0XFxcbiYjNDM7XHRyMiA9IDA7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRjYWxsICVbYnBmX3Jkb25seV9jYXN0XTtcdFx0XHRcXFxuJiM0MztcdHI2ID0gcjA7XHRcdFx0XHRcdFxcXG4mIzQzO1x0LyogcjAgPSBicGZfbWFwX2xvb2t1cF9lbGVtKG1hcF9oYXNoLCBcdTAwMjZrZXkpOyAqL1x0XFxcbiYjNDM7XHQqKHU2NCAqKShyMTAgLSA4KSA9IDA7XHRcdFx0XHRcXFxuJiM0MztcdHIxID0gJVttYXBfeHNrbWFwXSBsbDtcdFx0XHRcdFxcXG4mIzQzO1x0cjIgPSByMTA7XHRcdFx0XHRcdFxcXG4mIzQzO1x0cjIgJiM0Mzs9IC04O1x0XHRcdFx0XHRcXFxuJiM0MztcdGNhbGwgJVticGZfbWFwX2xvb2t1cF9lbGVtXTtcdFx0XHRcXFxuJiM0MztcdC8qXHRcdFx0XHRcdFx0XFxcbiYjNDM7XHQgKiBidWdneSB2ZXJpZmllciBhc3N1bWVkIHRoYXQgcjYgY2FuJiMzOTt0IGJlIG51bGxcdFxcXG4mIzQzO1x0ICogYW5kIG1hcmtlZCByMCBub24tbnVsbCBhcyB3ZWxsLlx0XHRcXFxuJiM0MztcdCAqL1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0aWYgcjYgIT0gcjAgZ290byAxZjtcdFx0XHRcdFxcXG4mIzQzO1x0cjAgPSAqKHUzMiAqKShyMCAmIzQzOyAwKTtcdFx0XHRcdFxcXG4mIzQzOzE6XHRyMCA9IDA7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRleGl0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1wmIzM0O1x0OlxuJiM0MztcdDogX19pbW0oYnBmX3Jkb25seV9jYXN0KSxcbiYjNDM7XHQgIF9faW1tKGJwZl9tYXBfbG9va3VwX2VsZW0pLFxuJiM0MztcdCAgX19pbW1fYWRkcihtYXBfeHNrbWFwKVxuJiM0MztcdDogX19jbG9iYmVyX2FsbCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQga2Z1bmNfcm9vdCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YnBmX3Jkb25seV9jYXN0KDAsIDApO1xuJiM0Mzt9XG4mIzQzO1xuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXCYjMzQ7bGljZW5zZVwmIzM0OykgPSBcJiMzNDtHUExcJiMzNDs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgYSByZWdpc3RlciBjb3VsZCBiZSBpbmNvcnJlY3RseSBpbmZlcnJlZCBhcyBub3QgbnVsbCBhZnRlciBhIGNvbmRpdGlvbmFsIGp1bXAuIFRoaXMgaXMgYSBjb3JlIHZlcmlmaWVyIGxvZ2ljIGNoYW5nZSB0aGF0IGFmZmVjdHMgcHJvZ3JhbSBzYWZldHkgYW5kIHZlcmlmaWNhdGlvbiwgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU0NTQ5NjFlMzAzODdmOGZjOTc5MWQ4YTU2MDY3ZGI1ZmEzYTIxYmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAyMiAwMTozMzoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCBlMDM2YWUyMGJmNmI5Li44OTdlYzRiMzhkZWFiIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC0zNTUsNiAmIzQzOzM1NSw4IEBAIHN0YXRpYyBib29sIHJlZ19ub3RfbnVsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0CiAJdHlwZSA9IGJhc2VfdHlwZSh0eXBlKTsKIAlyZXR1cm4gdHlwZSA9PSBQVFJfVE9fU09DS0VUIHx8CiAJCXR5cGUgPT0gUFRSX1RPX1RDUF9TT0NLIHx8CiYjNDM7CQl0eXBlID09IFBUUl9UT19YRFBfU09DSyB8fAomIzQzOwkJdHlwZSA9PSBQVFJfVE9fQlVGIHx8CiAJCXR5cGUgPT0gUFRSX1RPX01BUF9WQUxVRSB8fAogCQl0eXBlID09IFBUUl9UT19NQVBfS0VZIHx8CiAJCXR5cGUgPT0gUFRSX1RPX1NPQ0tfQ09NTU9OIHx8CkBAIC0xNzA4NSw3ICYjNDM7MTcwODcsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJICovCiAJaWYgKCFpc19qbXAzMiAmYW1wOyZhbXA7IEJQRl9TUkMoaW5zbi0mZ3Q7Y29kZSkgPT0gQlBGX1ggJmFtcDsmYW1wOwogCSAgICBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIHNyY19yZWcpICZhbXA7JmFtcDsgX19pc19wb2ludGVyX3ZhbHVlKGZhbHNlLCBkc3RfcmVnKSAmYW1wOyZhbXA7Ci0JICAgIHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy0mZ3Q7dHlwZSkgIT0gdHlwZV9tYXlfYmVfbnVsbChkc3RfcmVnLSZndDt0eXBlKSAmYW1wOyZhbXA7CiAJICAgIGJhc2VfdHlwZShzcmNfcmVnLSZndDt0eXBlKSAhPSBQVFJfVE9fQlRGX0lEICZhbXA7JmFtcDsKIAkgICAgYmFzZV90eXBlKGRzdF9yZWctJmd0O3R5cGUpICE9IFBUUl9UT19CVEZfSUQpIHsKIAkJZXFfYnJhbmNoX3JlZ3MgPSBOVUxMOwpAQCAtMTcxMDEsOSAmIzQzOzE3MTAyLDExIEBAIHN0YXRpYyBpbnQgY2hlY2tfY29uZF9qbXBfb3Aoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJCWJyZWFrOwogCQl9CiAJCWlmIChlcV9icmFuY2hfcmVncykgewotCQkJaWYgKHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy0mZ3Q7dHlwZSkpCiYjNDM7CQkJLyogc3JjID09IGRzdCAmYW1wOyZhbXA7IGRzdCAhPSBOVUxMID0mZ3Q7IHNyYyAhPSBOVUxMICovCiYjNDM7CQkJaWYgKHJlZ19ub3RfbnVsbChlbnYsIGRzdF9yZWcpICZhbXA7JmFtcDsgdHlwZV9tYXlfYmVfbnVsbChzcmNfcmVnLSZndDt0eXBlKSkKIAkJCQltYXJrX3B0cl9ub3RfbnVsbF9yZWcoJmFtcDtlcV9icmFuY2hfcmVnc1tpbnNuLSZndDtzcmNfcmVnXSk7Ci0JCQllbHNlCiYjNDM7CQkJLyogc3JjID09IGRzdCAmYW1wOyZhbXA7IHNyYyAhPSBOVUxMID0mZ3Q7IGRzdCAhPSBOVUxMICovCiYjNDM7CQkJaWYgKHJlZ19ub3RfbnVsbChlbnYsIHNyY19yZWcpICZhbXA7JmFtcDsgdHlwZV9tYXlfYmVfbnVsbChkc3RfcmVnLSZndDt0eXBlKSkKIAkJCQltYXJrX3B0cl9ub3RfbnVsbF9yZWcoJmFtcDtlcV9icmFuY2hfcmVnc1tpbnNuLSZndDtkc3RfcmVnXSk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLmMKaW5kZXggM2QxZThkZTQzOTBjMi4uMDg1ZDExNDY4OTZjMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuYwpAQCAtMyw3ICYjNDM7Myw5IEBACiAKICNpbmNsdWRlICZsdDtsaW51eC9icGYuaCZndDsKICNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3RkYm9vbC5oJmd0OwogI2luY2x1ZGUgJiMzNDticGZfbWlzYy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2JwZl9rZnVuY3MuaCYjMzQ7CiAKIHN0cnVjdCB7CiAJX191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9YU0tNQVApOwpAQCAtMjY0LDQgJiM0MzsyNjYsNDYgQEAgX19uYWtlZCB2b2lkIGpuZV9yZWdfcmVnX251bGxfY2hlY2sodm9pZCkKICAgICAgICAgOiBfX2Nsb2JiZXJfYWxsKTsKIH0KIAomIzQzOy8qCiYjNDM7ICogQSBjb21wYXJpc29uIGJldHdlZW4gUFRSX1RPX01FTSB8IE1FTV9SRE9OTFkgfCBQVFJfVU5UUlVTVEVEIGFuZAomIzQzOyAqIFBUUl9UT19NQVBfVkFMVUVfT1JfTlVMTCBzaG91bGQgbm90IGluZmVyIHRoYXQgbWFwIHBvaW50ZXIgaXMgbm90IG51bGwuCiYjNDM7ICogQSBidWcgaW4gY2hlY2tfY29uZF9qbXBfb3AoKSBtYWRlIHN1Y2ggaW5mZXJlbmNlIHBvc3NpYmxlLgomIzQzOyAqLwomIzQzO1NFQygmIzM0O3Jhd190cCYjMzQ7KQomIzQzO19fZmFpbHVyZQomIzQzO19fbXNnKCYjMzQ7ZXJyb3I6IGludmFsaWQgZGVyZWZlcmVuY2Ugb2YgUjAgKHhkcF9zb2NrX29yX251bGwpJiMzNDspCiYjNDM7X19tc2coJiMzNDsmZ3Q7Jmd0OyZndDsgMTAgfCAoNjEpIHIwID0gKih1MzIgKikocjAgJiM0MzswKSYjMzQ7KQomIzQzO19fbmFrZWQgdm9pZCB1bnRydXN0ZWRfbWVtX2RvZXNfbm90X2luZmVyX21hcF92YWx1ZV9ub25fbnVsbCh2b2lkKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlICgmIzM0OwkJCQkJXAomIzQzOwkvKiByOCA9IGJwZl9yZG9ubHlfY2FzdCgwLCAwKTsgKi8JCVwKJiM0MzsJcjIgPSAwOwkJCQkJCVwKJiM0MzsJY2FsbCAlW2JwZl9yZG9ubHlfY2FzdF07CQkJXAomIzQzOwlyNiA9IHIwOwkJCQkJXAomIzQzOwkvKiByMCA9IGJwZl9tYXBfbG9va3VwX2VsZW0obWFwX2hhc2gsICZhbXA7a2V5KTsgKi8JXAomIzQzOwkqKHU2NCAqKShyMTAgLSA4KSA9IDA7CQkJCVwKJiM0MzsJcjEgPSAlW21hcF94c2ttYXBdIGxsOwkJCQlcCiYjNDM7CXIyID0gcjEwOwkJCQkJXAomIzQzOwlyMiAmIzQzOz0gLTg7CQkJCQlcCiYjNDM7CWNhbGwgJVticGZfbWFwX2xvb2t1cF9lbGVtXTsJCQlcCiYjNDM7CS8qCQkJCQkJXAomIzQzOwkgKiBidWdneSB2ZXJpZmllciBhc3N1bWVkIHRoYXQgcjYgY2FuJiMzOTt0IGJlIG51bGwJXAomIzQzOwkgKiBhbmQgbWFya2VkIHIwIG5vbi1udWxsIGFzIHdlbGwuCQlcCiYjNDM7CSAqLwkJCQkJCVwKJiM0MzsJaWYgcjYgIT0gcjAgZ290byAxZjsJCQkJXAomIzQzOwlyMCA9ICoodTMyICopKHIwICYjNDM7IDApOwkJCQlcCiYjNDM7MToJcjAgPSAwOwkJCQkJCVwKJiM0MzsJZXhpdDsJCQkJCQlcCiYjNDM7JiMzNDsJOgomIzQzOwk6IF9faW1tKGJwZl9yZG9ubHlfY2FzdCksCiYjNDM7CSAgX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksCiYjNDM7CSAgX19pbW1fYWRkcihtYXBfeHNrbWFwKQomIzQzOwk6IF9fY2xvYmJlcl9hbGwpOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIGtmdW5jX3Jvb3Qodm9pZCkKJiM0Mzt7CiYjNDM7CWJwZl9yZG9ubHlfY2FzdCgwLCAwKTsKJiM0Mzt9CiYjNDM7CiBjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNzgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBCUEYgdmVyaWZpZXIsIHNwZWNpZmljYWxseSBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhleSYjMzk7dmUgbWFkZSBhIHRhcmdldGVkIGNoYW5nZSB0byB0aGUgYGNoZWNrX2NvbmRfam1wX29wYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBkaXJlY3QgY29tcGFyaXNvbiBgdHlwZV9tYXlfYmVfbnVsbChzcmNfcmVnLSZndDt0eXBlKSAhPSB0eXBlX21heV9iZV9udWxsKGRzdF9yZWctJmd0O3R5cGUpYC4gSW5zdGVhZCwgdGhleSYjMzk7cmUgbm93IGludHJvZHVjaW5nIGNoZWNrcyB1c2luZyBgcmVnX25vdF9udWxsKGVudiwgZHN0X3JlZylgIGFuZCBgcmVnX25vdF9udWxsKGVudiwgc3JjX3JlZylgIGJlZm9yZSBhc3NlcnRpbmcgdGhlIG5vbi1udWxsIHN0YXR1cyBvZiB0aGUgcmVnaXN0ZXJzLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBpdCBzZWVtcyB0aGV5JiMzOTtyZSByZWZpbmluZyB0aGUgbG9naWMgYXJvdW5kIG51bGwgcG9pbnRlciBzYWZldHkgY2hlY2tzIGluIGNvbmRpdGlvbmFsIGp1bXBzLgoKV2hhdCBjYXVnaHQgbXkgZXllIGltbWVkaWF0ZWx5IGlzIHRoZSBhZGRpdGlvbiBvZiBgUFRSX1RPX1hEUF9TT0NLYCBhbmQgYFBUUl9UT19CVUZgIHRvIGByZWdfbm90X251bGxgLiBUaGlzIGluZGljYXRlcyBhbiBpbnRlbnQgdG8gYnJvYWRlbiB0aGUgc2NvcGUgb2Ygd2hhdCB0aGUgdmVyaWZpZXIgY29uc2lkZXJzICYjMzQ7bm90IG51bGwmIzM0OyBpbiB0aGUgY29udGV4dCBvZiB0aGVzZSBzcGVjaWZpYyBwb2ludGVyIHR5cGVzLiBUaGlzIGxpa2VseSBtZWFucyB0aGV5JiMzOTtyZSBpbXByb3ZpbmcgdGhlIHZlcmlmaWNhdGlvbiBvZiBjb2RlIHRoYXQgZGVhbHMgd2l0aCBYRFAgc29ja2V0cyBhbmQgYnVmZmVyIHBvaW50ZXJzLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gc2VlLgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IGByZWdfbm90X251bGxgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiB0aGUgc2FtZSBmaWxlLiBZZXAsIGl0IGlzLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgYWxsIHNlbGYtY29udGFpbmVkIHdpdGhpbiB0aGUgYHZlcmlmaWVyLmNgIG1vZHVsZSwgc28gdGhhdCBoZWxwcyBuYXJyb3cgZG93biBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwYXRjaCYjMzk7cyBpbW1lZGlhdGUgaW1wYWN0LiBMZXQgbWUgcXVpY2tseSBmaW5kIHRoZSBgY2hlY2tfY29uZF9qbXBfb3BgIGluIHRoZSBzYW1lIGZpbGUgdG8gcXVpY2tseSByZWZlcmVuY2UgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hlY2tfY29uZF9qbXBfb3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTU4PXN0YXRpYyBib29sIGJwZl9nbG9iYWxfcGVyY3B1X21hX3NldDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTYwLSAqIFBUUl9UT19NQVBfVkFMVUUgYW5kIHRoZSBzYW1lIHJlZ2lzdGVyIGNoYW5nZXMgc3RhdGUgdG8gQ09OU1RfSU1NIGluIHRoZSBmYWxzZVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE2MTogKiBicmFuY2guIFNlZSBjaGVja19jb25kX2ptcF9vcCgpLlxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2Mi0gKlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNjg0OT1zdGF0aWMgdm9pZCBzeW5jX2xpbmtlZF9yZWdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfdmVyaWZpZXJfc3RhdGUgKnZzdGF0ZSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTY5MDMtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTY5MDQ6c3RhdGljIGludCBjaGVja19jb25kX2ptcF9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2OTA1LVx0XHRcdCAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuLCBpbnQgKmluc25faWR4KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODIxMj1zdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4Mjk4LVx0XHR9XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTgyOTk6XHRcdHJldHVybiBjaGVja19jb25kX2ptcF9vcChlbnYsIGluc24sIFx1MDAyNmVudi1cdTAwM2VpbnNuX2lkeCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTgzMDAtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI0MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRpdmVzIHJpZ2h0IGludG8gdGhlIGhlYXJ0IG9mIHRoaW5ncywgdHdlYWtpbmcgYGNoZWNrX2NvbmRfam1wX29wYCwgd2hpY2ggZ2V0cyBjYWxsZWQgYnkgYGRvX2NoZWNrX2luc25gLiBDb25zaWRlcmluZyBgZG9fY2hlY2tfaW5zbmAgaXMgd2hlcmUgdGhlIEJQRiB2ZXJpZmllciBsb2dpYyByZWFsbHkgdGFrZXMgcGxhY2UsIHRoaXMgY2hhbmdlIGlzIGRlZmluaXRlbHkgZ29pbmcgdG8gaGF2ZSBmdW5jdGlvbmFsIGNvbnNlcXVlbmNlcy4gSXQmIzM5O3Mgc2NyZWFtaW5nIGZvciBhIGZ1enppbmcgY2FtcGFpZ24gdG8gc2VlIHdoYXQgYnJlYWtzLgoKTXkgcHJpbWFyeSBmb2N1cyBoZXJlIG5lZWRzIHRvIGJlIG9uIGVpdGhlciBgZG9fY2hlY2tfaW5zbmAsIGBicGZfY2hlY2tgLCBvciBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgLiBJJiMzOTtsbCB3YW50IHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiBhbGwgb2YgdGhlbSwgYnV0IGxldCYjMzk7cyBzZWUsIGBkb19jaGVja19pbnNuYCBpcyBzdGF0aWMgc28gaXQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3Mgc2VlIHdoYXQgYGJwZl9jaGVja2AgaGFzIHRvIG9mZmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9jaGVjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTg9c3RhdGljIGJvb2wgYnBmX2dsb2JhbF9wZXJjcHVfbWFfc2V0O1xua2VybmVsL2JwZi92ZXJpZmllci5jLTU5LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjYwOi8qIGJwZl9jaGVjaygpIGlzIGEgc3RhdGljIGNvZGUgYW5hbHl6ZXIgdGhhdCB3YWxrcyBlQlBGIHByb2dyYW1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MS0gKiBpbnN0cnVjdGlvbiBieSBpbnN0cnVjdGlvbiBhbmQgdXBkYXRlcyByZWdpc3Rlci9zdGFjayBzdGF0ZS5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI2NDI9c3RhdGljIGludCBwcm9jZXNzX2tmX2FyZ19wdHJfdG9fcmJ0cmVlX25vZGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI2NTMtICogTFNNIGhvb2tzIGFuZCBpdGVycyAoYm90aCBzbGVlcGFibGUgYW5kIG5vbi1zbGVlcGFibGUpIGFyZSBzYWZlLlxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNjU0OiAqIEFueSBzbGVlcGFibGUgcHJvZ3MgYXJlIGFsc28gc2FmZSBzaW5jZSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCgpIGVuZm9yY2Vcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjY1NS0gKiB0aGVtIGNhbiBvbmx5IGJlIGF0dGFjaGVkIHRvIHNvbWUgc3BlY2lmaWMgaG9vayBwb2ludHMuXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwMDA4PXN0YXRpYyBib29sIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMDIxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMDIyOmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMDIzLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwNDQ1PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDQ3NS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDQ3NjpcdHJldCA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KFx1MDAyNmVudi1cdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFx1MDAyNnRndF9pbmZvKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDQ3Ny1cdGlmIChyZXQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwNTQ0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwNTQ1OmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDU0Ni1cdFx0XHRcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yMDk3OD1zdGF0aWMgZW51bSBicGZfc2lnX2tleXJpbmcgYnBmX2NsYXNzaWZ5X2tleXJpbmcoczMyIGtleXJpbmdfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwOTkyLS8qXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjA5OTM6ICogVmVyaWZ5IHRoZSBQS0NTIzcgc2lnbmF0dXJlIG9mIGEgbG9hZGVkIHByb2dyYW0uIENhbGxlZCBmcm9tIGJwZl9jaGVjaygpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjA5OTQtICogb25jZSB0aGUgcHJvZ3JhbSYjMzk7cyBtZXRhZGF0YSBtYXBzIGhhdmUgYmVlbiByZXNvbHZlZCBpbnRvIHVzZWRfbWFwcywgc29cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjEwMDE9c3RhdGljIGludCBicGZfcHJvZ192ZXJpZnlfc2lnbmF0dXJlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTE3LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjIxMTE4OmludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTE5LVx0ICAgICAgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTMyLVx0LyogJiMzOTtzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiYjMzk7IGNhbiBiZSBnbG9iYWwsIGJ1dCBzaW5jZSBpdCYjMzk7cyBub3Qgc21hbGwsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjExMzM6XHQgKiBhbGxvY2F0ZS9mcmVlIGl0IGV2ZXJ5IHRpbWUgYnBmX2NoZWNrKCkgaXMgY2FsbGVkXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExMzQtXHQgKi9cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjEyNDMtXHQvKiBWYWxpZGF0ZSBCVEYgYWdhaW5zdCB0aGUgY29tcGxldGUgc3VicHJvZ3JhbSBsYXlvdXQgYW5kIGFwcGx5IENPLVJFLiAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjIxMjQ0Olx0cmV0ID0gYnBmX2NoZWNrX2J0Zl9pbmZvKGVudiwgYXR0ciwgdWF0dHIpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMjQ1LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjEyNjMtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjEyNjQ6XHRyZXQgPSBicGZfY2hlY2tfY2ZnKGVudik7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjEyNjUtXHRpZiAocmV0IFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2ODgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBFbnRyeSBQb2ludCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBCUEYgdmVyaWZpZXIuIGBicGZfY2hlY2tgIGlzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50OyBpdCYjMzk7cyB0aGUgbWFpbiBlbnRyeS4gVGhhdCYjMzk7cyB3aGVyZSBldmVyeXRoaW5nIGtpY2tzIG9mZi4gRmlyc3QgdGhpbmcmIzM5O3MgZmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBvYnZpb3VzIG9uZSwgc28gSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk2OAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGFyZWE6CgoqKkNoZWNraW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYSBOZXcgWERQIFNvY2tldCBGZWF0dXJlKioKCkFscmlnaHQsIHNvIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBQVFJfVE9fWERQX1NPQ0tgIHRvIGByZWdfbm90X251bGxgLiBJbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byB0aGUgZGVwZW5kZW5jaWVzLiBUaGlzIGNoYW5nZSBsaWtlbHkgaGluZ2VzIG9uIGBDT05GSUdfWERQX1NPQ0tFVFNgLiBJIGNhbiYjMzk7dCBiZSBzdXJlIHdpdGhvdXQgZGlnZ2luZyBkZWVwZXIsIGJ1dCB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIGxpbmssIGlzbiYjMzk7dCBpdD8gQWRkaW5nIHRoYXQgY2hlY2sgaXMgdGhlICpmaXJzdCogdGhpbmcgSSBoYXZlIHRvIGRvLiBMZXQmIzM5O3Mgc2VlIGlmIG15IHN1c3BpY2lvbnMgYXJlIGNvcnJlY3QuIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50LiBJZiBpdCBpcywgdGhpcyBpcyBhIGNsZWFuIGFuZCByZWFzb25hYmxlIGNoYW5nZS4gQnV0IEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY29uZmlybSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UFRSX1RPX1hEUF9TT0NLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmLmg9MTA0OD1lbnVtIGJwZl9yZWdfdHlwZSB7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0xMDYzLVx0UFRSX1RPX1RQX0JVRkZFUixcdCAvKiByZWcgcG9pbnRzIHRvIGEgd3JpdGFibGUgcmF3IHRwJiMzOTtzIGJ1ZmZlciAqL1xuaW5jbHVkZS9saW51eC9icGYuaDoxMDY0Olx0UFRSX1RPX1hEUF9TT0NLLFx0IC8qIHJlZyBwb2ludHMgdG8gc3RydWN0IHhkcF9zb2NrICovXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEwNjUtXHQvKiBQVFJfVE9fQlRGX0lEIHBvaW50cyB0byBhIGtlcm5lbCBzdHJ1Y3QgdGhhdCBkb2VzIG5vdCBuZWVkXG4tLVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaD0xNDA2PXN0YXRpYyBpbmxpbmUgYm9vbCB0eXBlX2lzX3NrX3BvaW50ZXIoZW51bSBicGZfcmVnX3R5cGUgdHlwZSlcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0MTAtXHRcdHR5cGUgPT0gUFRSX1RPX1RDUF9TT0NLIHx8XG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oOjE0MTE6XHRcdHR5cGUgPT0gUFRSX1RPX1hEUF9TT0NLO1xuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDEyLX1cbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jPTc0MT1pbnQgYnBmX2NvbnZlcnRfY3R4X2FjY2Vzc2VzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy05MjEtXHRcdFx0YnJlYWs7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjkyMjpcdFx0Y2FzZSBQVFJfVE9fWERQX1NPQ0s6XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTkyMy1cdFx0XHRjb252ZXJ0X2N0eF9hY2Nlc3MgPSBicGZfeGRwX3NvY2tfY29udmVydF9jdHhfYWNjZXNzO1xuLS1cbmtlcm5lbC9icGYvbG9nLmM9Mzk5PWNvbnN0IGNoYXIgKnJlZ190eXBlX3N0cihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBlbnVtIGJwZl9yZWdfdHlwZSB0eXBlKVxuLS1cbmtlcm5lbC9icGYvbG9nLmMtNDE2LVx0XHRbUFRSX1RPX1RQX0JVRkZFUl1cdD0gXCYjMzQ7dHBfYnVmZmVyXCYjMzQ7LFxua2VybmVsL2JwZi9sb2cuYzo0MTc6XHRcdFtQVFJfVE9fWERQX1NPQ0tdXHQ9IFwmIzM0O3hkcF9zb2NrXCYjMzQ7LFxua2VybmVsL2JwZi9sb2cuYy00MTgtXHRcdFtQVFJfVE9fQlRGX0lEXVx0XHQ9IFwmIzM0O3B0cl9cJiMzNDssXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTM0Nz1zdGF0aWMgYm9vbCByZWdfbm90X251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzU3LVx0XHR0eXBlID09IFBUUl9UT19UQ1BfU09DSyB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjM1ODpcdFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0sgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0zNTktXHRcdHR5cGUgPT0gUFRSX1RPX0JVRiB8fFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTU1PXN0YXRpYyB2b2lkIHJlZmluZV9tYXBfbG9va3VwX3ZhbHVlKHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjktXHR9IGVsc2UgaWYgKG1hcC1cdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfWFNLTUFQKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3MDpcdFx0cmVnLVx1MDAzZXR5cGUgPSBQVFJfVE9fWERQX1NPQ0sgfCBtYXliZV9udWxsO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzEtXHR9IGVsc2UgaWYgKG1hcC1cdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfU09DS01BUCB8fFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01MDAwPXN0YXRpYyBpbnQgY2hlY2tfc29ja19hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MDIyLVx0XHRicmVhaztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MDIzOlx0Y2FzZSBQVFJfVE9fWERQX1NPQ0s6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTAyNC1cdFx0dmFsaWQgPSBicGZfeGRwX3NvY2tfaXNfdmFsaWRfYWNjZXNzKG9mZiwgc2l6ZSwgdCwgXHUwMDI2aW5mbyk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTUyMzQ9c3RhdGljIGludCBjaGVja19wdHJfYWxpZ25tZW50KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTUyNzgtXHRcdGJyZWFrO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjUyNzk6XHRjYXNlIFBUUl9UT19YRFBfU09DSzpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MjgwLVx0XHRwb2ludGVyX2Rlc2MgPSBcJiMzNDt4ZHBfc29jayBcJiMzNDs7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTgxNjI9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfcmVnX3R5cGVzIHNvY2tfdHlwZXMgPSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjYtXHRcdFBUUl9UT19UQ1BfU09DSyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MTY3Olx0XHRQVFJfVE9fWERQX1NPQ0ssXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2OC1cdH0sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTgxNzI9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfcmVnX3R5cGVzIGJ0Zl9pZF9zb2NrX2NvbW1vbl90eXBlcyA9IHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE3Ni1cdFx0UFRSX1RPX1RDUF9TT0NLLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjgxNzc6XHRcdFBUUl9UT19YRFBfU09DSyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MTc4LVx0XHRQVFJfVE9fQlRGX0lELFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzk2MT1zdGF0aWMgYm9vbCByZWdfdHlwZV9taXNtYXRjaF9vayhlbnVtIGJwZl9yZWdfdHlwZSB0eXBlKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzk2Ny1cdGNhc2UgUFRSX1RPX1RDUF9TT0NLOlxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3OTY4Olx0Y2FzZSBQVFJfVE9fWERQX1NPQ0s6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc5NjktXHRjYXNlIFBUUl9UT19CVEZfSUQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NTIKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBidWcgd2l0aGluIHRoZSBgY2hlY2tfY29uZF9qbXBfb3BgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGUgdmVyaWZpZXIgd2FzIG1ha2luZyBhIGZhdWx0eSBhc3N1bXB0aW9uIGFib3V0IGEgcmVnaXN0ZXIgbm90IGJlaW5nIG51bGwsIGxlYWRpbmcgdG8gcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGNydXggb2YgdGhlIGZpeCBpcyB0byBpbmNvcnBvcmF0ZSBhIGNoZWNrIGZvciBgcmVnX25vdF9udWxsYCAqYmVmb3JlKiBhc3N1bWluZyB0aGUgb3RoZXIgcmVnaXN0ZXIgaXMgYWxzbyBub3QgbnVsbC4gVGhpcyBtYWtlcyBsb2dpY2FsIHNlbnNlOyB5b3UgaGF2ZSB0byBlbnN1cmUgdGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBtZXQgYmVmb3JlIHVzaW5nIGl0IHRvIGRlcml2ZSBhIHNlY29uZC4KClRoZSBhZGRpdGlvbiBvZiBgUFRSX1RPX1hEUF9TT0NLYCBhbmQgYFBUUl9UT19CVUZgIHRvIGByZWdfbm90X251bGxgIGlzIGludGVyZXN0aW5nLiBFeHBhbmRpbmcgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggd2UgY29uc2lkZXIgYSByZWdpc3RlciBub24tbnVsbCBpcyBhIHNpZ25pZmljYW50IG1vZGlmaWNhdGlvbiB0byB0aGUgY29yZSB2ZXJpZmllciBsb2dpYy4gR2l2ZW4gdGhlIHBvdGVudGlhbCBpbXBhY3QsIHRob3JvdWdoIGZ1enppbmcgaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQgaGVyZS4gV2UgbmVlZCB0byBiZSBjb25maWRlbnQgdGhhdCB0aGVzZSBjaGFuZ2VzIGRvbiYjMzk7dCBpbnRyb2R1Y2UgbmV3IHZ1bG5lcmFiaWxpdGllcyBvciByZWdyZXNzaW9ucy4KCkZvciBmdXp6aW5nLCBJJiMzOTtsbCB3YW50IHRvIGZvY3VzIG9uIHRoZSBgYnBmX2NoZWNrYCBzeW1ib2wuIFRoYXQmIzM5O3MgdGhlIGtleSBmdW5jdGlvbiB3ZSBuZWVkIHRvIHRhcmdldCB0byBleHBvc2UgcG90ZW50aWFsIGlzc3Vlcy4gQW5kIG9mIGNvdXJzZSwgd2UmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBgQlBGX1NZU0NBTExgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBmdXp6aW5nIHJ1bnMuCgpOb3csIGEgcXVpY2sgc2lkZSB0aG91Z2h04oCmIGxldCYjMzk7cyBzZWUsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhhdCBgUFRSX1RPX1hEUF9TT0NLYCByZXF1aXJlcyBgQ09ORklHX1hEUF9TT0NLRVRTYC4gV2UgbmVlZCB0byBiZSBhd2FyZSBvZiBkZXBlbmRlbmNpZXMgbGlrZSB0aGF0LCBvciB3ZSYjMzk7bGwgZ2V0IGZhbHNlIG5lZ2F0aXZlcy4gR290dGEgZW5zdXJlIG91ciB0ZXN0IGNvdmVyYWdlIGlzIGFjY3VyYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWERQX1NPQ0tFVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hkcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQveGRwL0tjb25maWc6Mjpjb25maWcgWERQX1NPQ0tFVFNcbm5ldC94ZHAvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtYRFAgc29ja2V0c1wmIzM0O1xuLS1cbm5ldC94ZHAvS2NvbmZpZy05LVxubmV0L3hkcC9LY29uZmlnOjEwOmNvbmZpZyBYRFBfU09DS0VUU19ESUFHXG5uZXQveGRwL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE4NQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipRdWljayBYRFAgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCB5ZXAsIGBYRFBfU09DS0VUU2AgaXMgYSBzb2xpZCBhZGRpdGlvbiBoZXJlIOKAkyBkZWZpbml0ZWx5IHRoZSByaWdodCBhcHByb2FjaCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZS4gTm93LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byBpbXBsZW1lbnRhdGlvbiwgSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHNvbWV0aGluZy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB3ZSYjMzk7cmUgZ29pbmcgdG8gbmVlZCB0byBleHBsaWNpdGx5IGNvbmZpZ3VyZSBhbnl0aGluZyBhcm91bmQgYFBUUl9UT19CVUZgLiBJIHZhZ3VlbHkgcmVjYWxsIHRoZXJlIGJlaW5nIGEgZmV3IGVkZ2UgY2FzZXMgb3Igc3VidGxlIGRlcGVuZGVuY2llcyB0aGVyZSB0aGF0IG1pZ2h0IHRyaXAgdXMgdXAgbGF0ZXIgaWYgd2UgYXJlbiYjMzk7dCBjYXJlZnVsLiBCZXR0ZXIgdG8gYmUgcHJvYWN0aXZlIGFuZCBlbnN1cmUgZXZlcnl0aGluZyYjMzk7cyBrb3NoZXIgd2l0aCB0aGF0IHBhcmFtZXRlciB1cGZyb250LiBObyBwb2ludCBpbiBoaXR0aW5nIGEgc25hZyBkb3duIHRoZSBsaW5lIGR1ZSB0byBhIG1pc3NpbmcgZmxhZyBvciBpbmNvbXBhdGlibGUgc2V0dGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UFRSX1RPX0JVRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oPTEwNDg9ZW51bSBicGZfcmVnX3R5cGUge1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMTA3Ny1cdFBUUl9UT19BUkVOQSxcbmluY2x1ZGUvbGludXgvYnBmLmg6MTA3ODpcdFBUUl9UT19CVUYsXHRcdCAvKiByZWcgcG9pbnRzIHRvIGEgcmVhZC93cml0ZSBidWZmZXIgKi9cbmluY2x1ZGUvbGludXgvYnBmLmgtMTA3OS1cdFBUUl9UT19GVU5DLFx0XHQgLyogcmVnIHBvaW50cyB0byBhIGJwZiBwcm9ncmFtIGZ1bmN0aW9uICovXG4tLVxua2VybmVsL2JwZi9idGYuYz02ODQyPWJvb2wgYnRmX2N0eF9hY2Nlc3MoaW50IG9mZiwgaW50IHNpemUsIGVudW0gYnBmX2FjY2Vzc190eXBlIHR5cGUsXG4tLVxua2VybmVsL2JwZi9idGYuYy02OTY5LVx0XHQgICAgKHR5cGUgPT0gUFRSX1RPX0FSRU5BIHx8XG5rZXJuZWwvYnBmL2J0Zi5jOjY5NzA6XHRcdCAgICAgKHR5cGUgPT0gUFRSX1RPX0JVRiBcdTAwMjZcdTAwMjYgKGZsYWcgXHUwMDI2IFBUUl9NQVlCRV9OVUxMKSkpKSB7XG5rZXJuZWwvYnBmL2J0Zi5jLTY5NzEtXHRcdFx0aW5mby1cdTAwM2VyZWdfdHlwZSA9IGN0eF9hcmdfaW5mby1cdTAwM2VyZWdfdHlwZTtcbi0tXG5rZXJuZWwvYnBmL2xvZy5jPTM5OT1jb25zdCBjaGFyICpyZWdfdHlwZV9zdHIoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgZW51bSBicGZfcmVnX3R5cGUgdHlwZSlcbi0tXG5rZXJuZWwvYnBmL2xvZy5jLTQyMC1cdFx0W1BUUl9UT19BUkVOQV1cdFx0PSBcJiMzNDthcmVuYVwmIzM0Oyxcbmtlcm5lbC9icGYvbG9nLmM6NDIxOlx0XHRbUFRSX1RPX0JVRl1cdFx0PSBcJiMzNDtidWZcJiMzNDssXG5rZXJuZWwvYnBmL2xvZy5jLTQyMi1cdFx0W1BUUl9UT19GVU5DXVx0XHQ9IFwmIzM0O2Z1bmNcJiMzNDssXG4tLVxua2VybmVsL2JwZi9tYXBfaXRlci5jPTE3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9pdGVyX3JlZyBicGZfbWFwX2VsZW1fcmVnX2luZm8gPSB7XG4tLVxua2VybmVsL2JwZi9tYXBfaXRlci5jLTE4MC1cdFx0eyBvZmZzZXRvZihzdHJ1Y3QgYnBmX2l0ZXJfX2JwZl9tYXBfZWxlbSwga2V5KSxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYzoxODE6XHRcdCAgUFRSX1RPX0JVRiB8IFBUUl9NQVlCRV9OVUxMIHwgTUVNX1JET05MWSB9LFxua2VybmVsL2JwZi9tYXBfaXRlci5jLTE4Mi1cdFx0eyBvZmZzZXRvZihzdHJ1Y3QgYnBmX2l0ZXJfX2JwZl9tYXBfZWxlbSwgdmFsdWUpLFxua2VybmVsL2JwZi9tYXBfaXRlci5jOjE4MzpcdFx0ICBQVFJfVE9fQlVGIHwgUFRSX01BWUJFX05VTEwgfSxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYy0xODQtXHR9LFxuLS1cbmtlcm5lbC9icGYvc3RhdGVzLmM9NTA3PXN0YXRpYyBib29sIHJlZ3NhZmUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJvbGQsXG4tLVxua2VybmVsL2JwZi9zdGF0ZXMuYy02MTItXHRjYXNlIFBUUl9UT19NRU06XG5rZXJuZWwvYnBmL3N0YXRlcy5jOjYxMzpcdGNhc2UgUFRSX1RPX0JVRjpcbmtlcm5lbC9icGYvc3RhdGVzLmMtNjE0LVx0Y2FzZSBQVFJfVE9fVFBfQlVGRkVSOlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0zNDc9c3RhdGljIGJvb2wgcmVnX25vdF9udWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTM1OC1cdFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0sgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzozNTk6XHRcdHR5cGUgPT0gUFRSX1RPX0JVRiB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jLTM2MC1cdFx0dHlwZSA9PSBQVFJfVE9fTUFQX1ZBTFVFIHx8XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTY0MTY9c3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjYwMC1cdFx0XHRcdFx0ICAgICAgdmFsdWVfcmVnbm8pO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjY2MDE6XHR9IGVsc2UgaWYgKGJhc2VfdHlwZShyZWctXHUwMDNldHlwZSkgPT0gUFRSX1RPX0JVRiBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NjAyLVx0XHQgICAhdHlwZV9tYXlfYmVfbnVsbChyZWctXHUwMDNldHlwZSkpIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzAzNj1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTcwNzUtXHRcdFx0XHRcdCAgICAgICB6ZXJvX3NpemVfYWxsb3dlZCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NzA3NjpcdGNhc2UgUFRSX1RPX0JVRjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03MDc3LVx0XHRpZiAodHlwZV9pc19yZG9ubHlfbWVtKHJlZy1cdTAwM2V0eXBlKSkge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04MTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3JlZ190eXBlcyBtZW1fdHlwZXMgPSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxOTMtXHRcdFBUUl9UT19NRU0gfCBNRU1fUklOR0JVRixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MTk0Olx0XHRQVFJfVE9fQlVGLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxOTUtXHRcdFBUUl9UT19CVEZfSUQgfCBQVFJfVFJVU1RFRCxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODUxMj1zdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTU1LVx0Y2FzZSBQVFJfVE9fTUVNIHwgTUVNX1JJTkdCVUY6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODU1NjpcdGNhc2UgUFRSX1RPX0JVRjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NTU3Olx0Y2FzZSBQVFJfVE9fQlVGIHwgTUVNX1JET05MWTpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTU4LVx0Y2FzZSBQVFJfVE9fQVJFTkE6XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE0NTYwPXN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDYyNy1cdGNhc2UgUFRSX1RPX01FTTpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDYyODpcdGNhc2UgUFRSX1RPX0JVRjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDYyOS1cdGNhc2UgUFRSX1RPX0ZVTkM6XG4tLVxubmV0L2NvcmUvYnBmX3NrX3N0b3JhZ2UuYz04OTg9c3RhdGljIHN0cnVjdCBicGZfaXRlcl9yZWcgYnBmX3NrX3N0b3JhZ2VfbWFwX3JlZ19pbmZvID0ge1xuLS1cbm5ldC9jb3JlL2JwZl9za19zdG9yYWdlLmMtOTA4LVx0XHR7IG9mZnNldG9mKHN0cnVjdCBicGZfaXRlcl9fYnBmX3NrX3N0b3JhZ2VfbWFwLCB2YWx1ZSksXG5uZXQvY29yZS9icGZfc2tfc3RvcmFnZS5jOjkwOTpcdFx0ICBQVFJfVE9fQlVGIHwgUFRSX01BWUJFX05VTEwgfSxcbm5ldC9jb3JlL2JwZl9za19zdG9yYWdlLmMtOTEwLVx0fSxcbi0tXG5uZXQvY29yZS9zb2NrX21hcC5jPTE5NzE9c3RhdGljIHN0cnVjdCBicGZfaXRlcl9yZWcgc29ja19tYXBfaXRlcl9yZWcgPSB7XG4tLVxubmV0L2NvcmUvc29ja19tYXAuYy0xOTc5LVx0XHR7IG9mZnNldG9mKHN0cnVjdCBicGZfaXRlcl9fc29ja21hcCwga2V5KSxcbm5ldC9jb3JlL3NvY2tfbWFwLmM6MTk4MDpcdFx0ICBQVFJfVE9fQlVGIHwgUFRSX01BWUJFX05VTEwgfCBNRU1fUkRPTkxZIH0sXG5uZXQvY29yZS9zb2NrX21hcC5jLTE5ODEtXHRcdHsgb2Zmc2V0b2Yoc3RydWN0IGJwZl9pdGVyX19zb2NrbWFwLCBzayksXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJfYnVmX251bGxfZmFpbC5jPTg9Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYy05LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJfYnVmX251bGxfZmFpbC5jOjEwOi8qIFZlcmlmeSB0aGF0IHRoZSB2ZXJpZmllciByZWplY3RzIGRpcmVjdCBhY2Nlc3MgdG8gbnVsbGFibGUgUFRSX1RPX0JVRi4gKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYy0xMS1TRUMoXCYjMzQ7aXRlci9icGZfbWFwX2VsZW1cJiMzNDspXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJfYnVmX251bGxfZmFpbC5jPTEzPWludCBpdGVyX2J1Zl9udWxsX2RlcmVmKHN0cnVjdCBicGZfaXRlcl9fYnBmX21hcF9lbGVtICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJfYnVmX251bGxfZmFpbC5jLTE1LVx0LypcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYzoxNjpcdCAqIGN0eC1cdTAwM2VrZXkgaXMgUFRSX1RPX0JVRiB8IFBUUl9NQVlCRV9OVUxMIHwgTUVNX1JET05MWS5cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYy0xNy1cdCAqIERpcmVjdCBhY2Nlc3Mgd2l0aG91dCBudWxsIGNoZWNrIG11c3QgYmUgcmVqZWN0ZWQuXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3B0cl90b19idWYuYz03PVNFQyhcJiMzNDtpdGVyL2JwZl9tYXBfZWxlbVwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wdHJfdG9fYnVmLmM6ODpfX2Rlc2NyaXB0aW9uKFwmIzM0O1BUUl9UT19CVUY6IHJlamVjdCBuZWdhdGl2ZSBjb25zdCBvZmZzZXRcJiMzNDspXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHRyX3RvX2J1Zi5jLTktX19mYWlsdXJlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTk5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBGaXgqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwcmV0dHkgZnVuZGFtZW50YWwgaXNzdWUgaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWJvdXQgYSByZWdpc3RlciBiZWluZyBpbmNvcnJlY3RseSBhc3Nlc3NlZCBhcyBub24tbnVsbCBhZnRlciBhIGNvbmRpdGlvbmFsIGp1bXAuIFRoaXMga2luZCBvZiB2ZXJpZmllciBsb2dpYyBjaGFuZ2UgaXMgc2VyaW91czsgaXQgaW1wYWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdGhlIHJlbGlhYmlsaXR5IG9mIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBpdHNlbGYuIFNvLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcuCgpNeSB0aGlua2luZyBpcyB0aGF0IGBCUEZfU1lTQ0FMTGAgc2VlbXMgbGlrZSBhIHN1ZmZpY2llbnQgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIGZvciB0ZXN0aW5nLiBJdCBhcHBlYXJzIHRoYXQgYFBUUl9UT19CVUZgIGlzIHJlbGV2YW50IGJlY2F1c2Ugb2YgaXRzIHVzZSBpbiBpdGVyYXRvcnMuCgpOb3csIHJlZ2FyZGluZyB0aGUgZm9jdXMgc3ltYm9scywgSSBpbml0aWFsbHkgaGFkIGBicGZfY2hlY2tgIGluIG1pbmQuIEJ1dCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBgYnBmX2NoZWNrYCBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIHZlcmlmaWVyLCBzbyBpdCBtYWtlcyBzZW5zZSBhcyBhIHN0YXJ0aW5nIHBvaW50LiBgY2hlY2tfY29uZF9qbXBfb3BgIGFuZCBgZG9fY2hlY2tfaW5zbmAgYXJlIGJvdGggc3RhdGljIGZ1bmN0aW9ucywgc28gSSBjYW4mIzM5O3QgZGlyZWN0bHkgdGFyZ2V0IHRoZW0uIEhvd2V2ZXIsIGBicGZfY2hlY2tgIGlzIGV4cG9ydGVkIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgbm9uLXN0YXRpYy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgYnBmX2NoZWNrYCBpc24mIzM5O3Qgc3RhdGljLiBJdCYjMzk7cyB0aGUgbW9zdCBhcHByb3ByaWF0ZSB0YXJnZXQgaWYgaXQgaXNuJiMzOTt0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgYnBmX2NoZWNrXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0yMTAwMT1zdGF0aWMgaW50IGJwZl9wcm9nX3ZlcmlmeV9zaWduYXR1cmUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExMTctXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjExMTg6aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExMTktXHQgICAgICBzdHJ1Y3QgYnBmX2xvZ19hdHRyICphdHRyX2xvZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNjgKCQkJCQkJCW91dHB1dDogMTAyCgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQ2hlY2tpbmcgQlBGIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIGBicGZfY2hlY2tgIGlzIGNvbmZpcm1lZCBhcyBub24tc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIE5vdywgbGV0IG1lIHRoaW5rIHRocm91Z2ggdGhlIHJlbGF0ZWQga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgYmlnIG9uZSwgdGhlIGNvcmUsIHRoZSBmb3VuZGF0aW9uYWwgc2V0dGluZyB0aGF0JiMzOTtzIGFsbW9zdCBhbHdheXMgbmVjZXNzYXJ5LiBCZXlvbmQgdGhhdCwgSSBuZWVkIHRvIGNvbnNpZGVyIG90aGVycy4gQWggeWVzLCBgQ09ORklHX1hEUF9TT0NLRVRTYCAtIHRoYXQmIzM5O3MgcmVsZXZhbnQsIGVzcGVjaWFsbHkgaWYgSSYjMzk7bSBkZWFsaW5nIHdpdGggYFBUUl9UT19YRFBfU09DS2AuIFRoYXQmIzM5O3MgYSBrZXkgY29uc2lkZXJhdGlvbi4gVGhlbiB0aGVyZSYjMzk7cyBgQ09ORklHX0JQRl9KSVRgLiBJdCYjMzk7cyBwb3RlbnRpYWxseSB1c2VmdWwsIGJ1dCBub3QgYXMgY3JpdGljYWwgYXMgdGhlIG1haW4gYEJQRl9TWVNDQUxMYC4gVWx0aW1hdGVseSwgSSB0aGluayBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgZXNzZW50aWFsIG9uZSB0byBmb2N1cyBvbi4gT2theSwgbGV0JiMzOTtzIG1vdmUgZm9yd2FyZCBieSBjYWxsaW5nIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7WERQX1NPQ0tFVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBhIHJlZ2lzdGVyIGNvdWxkIGJlIGluY29ycmVjdGx5IGluZmVycmVkIGFzIG5vdCBudWxsIGFmdGVyIGEgY29uZGl0aW9uYWwganVtcC4gVGhpcyBpcyBhIGNvcmUgdmVyaWZpZXIgbG9naWMgY2hhbmdlIHRoYXQgYWZmZWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdmVyaWZpY2F0aW9uLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIGEgcmVnaXN0ZXIgY291bGQgYmUgaW5jb3JyZWN0bHkgaW5mZXJyZWQgYXMgbm90IG51bGwgYWZ0ZXIgYSBjb25kaXRpb25hbCBqdW1wLiBUaGlzIGlzIGEgY29yZSB2ZXJpZmllciBsb2dpYyBjaGFuZ2UgdGhhdCBhZmZlY3RzIHByb2dyYW0gc2FmZXR5IGFuZCB2ZXJpZmljYXRpb24sIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciYjMzk7cyBgY2hlY2tfY29uZF9qbXBfb3BgIGZ1bmN0aW9uIHdoZXJlIGl0IGluY29ycmVjdGx5IGluZmVycmVkIHRoYXQgYSBwb2ludGVyIHdhcyBub3QgbnVsbCB3aGVuIGNvbXBhcmVkIHRvIGFub3RoZXIgcG9pbnRlciB0aGF0IGNvdWxkIGFsc28gYmUgbnVsbCAob3IgdW50cnVzdGVkKS4gVGhpcyBidWcgY291bGQgYWxsb3cgYSBCUEYgcHJvZ3JhbSB0byBieXBhc3MgbnVsbCBjaGVja3MsIGxlYWRpbmcgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGludmFsaWQgYWNjZXNzIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MsIHdoaWNoIGFyZSB0aGUgc3BlY2lmaWMgdGFyZ2V0cyBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTQ1NDk2MWUzMDM4N2Y4ZmM5NzkxZDhhNTYwNjdkYjVmYTNhMjFiYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDIyIDAxOjMzOjEyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IGUwMzZhZTIwYmY2YjkuLjg5N2VjNGIzOGRlYWIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTM1NSw2ICYjNDM7MzU1LDggQEAgc3RhdGljIGJvb2wgcmVnX25vdF9udWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXQKIAl0eXBlID0gYmFzZV90eXBlKHR5cGUpOwogCXJldHVybiB0eXBlID09IFBUUl9UT19TT0NLRVQgfHwKIAkJdHlwZSA9PSBQVFJfVE9fVENQX1NPQ0sgfHwKJiM0MzsJCXR5cGUgPT0gUFRSX1RPX1hEUF9TT0NLIHx8CiYjNDM7CQl0eXBlID09IFBUUl9UT19CVUYgfHwKIAkJdHlwZSA9PSBQVFJfVE9fTUFQX1ZBTFVFIHx8CiAJCXR5cGUgPT0gUFRSX1RPX01BUF9LRVkgfHwKIAkJdHlwZSA9PSBQVFJfVE9fU09DS19DT01NT04gfHwKQEAgLTE3MDg1LDcgJiM0MzsxNzA4Nyw2IEBAIHN0YXRpYyBpbnQgY2hlY2tfY29uZF9qbXBfb3Aoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkgKi8KIAlpZiAoIWlzX2ptcDMyICZhbXA7JmFtcDsgQlBGX1NSQyhpbnNuLSZndDtjb2RlKSA9PSBCUEZfWCAmYW1wOyZhbXA7CiAJICAgIF9faXNfcG9pbnRlcl92YWx1ZShmYWxzZSwgc3JjX3JlZykgJmFtcDsmYW1wOyBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIGRzdF9yZWcpICZhbXA7JmFtcDsKLQkgICAgdHlwZV9tYXlfYmVfbnVsbChzcmNfcmVnLSZndDt0eXBlKSAhPSB0eXBlX21heV9iZV9udWxsKGRzdF9yZWctJmd0O3R5cGUpICZhbXA7JmFtcDsKIAkgICAgYmFzZV90eXBlKHNyY19yZWctJmd0O3R5cGUpICE9IFBUUl9UT19CVEZfSUQgJmFtcDsmYW1wOwogCSAgICBiYXNlX3R5cGUoZHN0X3JlZy0mZ3Q7dHlwZSkgIT0gUFRSX1RPX0JURl9JRCkgewogCQllcV9icmFuY2hfcmVncyA9IE5VTEw7CkBAIC0xNzEwMSw5ICYjNDM7MTcxMDIsMTEgQEAgc3RhdGljIGludCBjaGVja19jb25kX2ptcF9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQkJYnJlYWs7CiAJCX0KIAkJaWYgKGVxX2JyYW5jaF9yZWdzKSB7Ci0JCQlpZiAodHlwZV9tYXlfYmVfbnVsbChzcmNfcmVnLSZndDt0eXBlKSkKJiM0MzsJCQkvKiBzcmMgPT0gZHN0ICZhbXA7JmFtcDsgZHN0ICE9IE5VTEwgPSZndDsgc3JjICE9IE5VTEwgKi8KJiM0MzsJCQlpZiAocmVnX25vdF9udWxsKGVudiwgZHN0X3JlZykgJmFtcDsmYW1wOyB0eXBlX21heV9iZV9udWxsKHNyY19yZWctJmd0O3R5cGUpKQogCQkJCW1hcmtfcHRyX25vdF9udWxsX3JlZygmYW1wO2VxX2JyYW5jaF9yZWdzW2luc24tJmd0O3NyY19yZWddKTsKLQkJCWVsc2UKJiM0MzsJCQkvKiBzcmMgPT0gZHN0ICZhbXA7JmFtcDsgc3JjICE9IE5VTEwgPSZndDsgZHN0ICE9IE5VTEwgKi8KJiM0MzsJCQlpZiAocmVnX25vdF9udWxsKGVudiwgc3JjX3JlZykgJmFtcDsmYW1wOyB0eXBlX21heV9iZV9udWxsKGRzdF9yZWctJmd0O3R5cGUpKQogCQkJCW1hcmtfcHRyX25vdF9udWxsX3JlZygmYW1wO2VxX2JyYW5jaF9yZWdzW2luc24tJmd0O2RzdF9yZWddKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuYwppbmRleCAzZDFlOGRlNDM5MGMyLi4wODVkMTE0Njg5NmMxIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jCkBAIC0zLDcgJiM0MzszLDkgQEAKIAogI2luY2x1ZGUgJmx0O2xpbnV4L2JwZi5oJmd0OwogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdGRib29sLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7YnBmX2tmdW5jcy5oJiMzNDsKIAogc3RydWN0IHsKIAlfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1hTS01BUCk7CkBAIC0yNjQsNCAmIzQzOzI2Niw0NiBAQCBfX25ha2VkIHZvaWQgam5lX3JlZ19yZWdfbnVsbF9jaGVjayh2b2lkKQogICAgICAgICA6IF9fY2xvYmJlcl9hbGwpOwogfQogCiYjNDM7LyoKJiM0MzsgKiBBIGNvbXBhcmlzb24gYmV0d2VlbiBQVFJfVE9fTUVNIHwgTUVNX1JET05MWSB8IFBUUl9VTlRSVVNURUQgYW5kCiYjNDM7ICogUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMIHNob3VsZCBub3QgaW5mZXIgdGhhdCBtYXAgcG9pbnRlciBpcyBub3QgbnVsbC4KJiM0MzsgKiBBIGJ1ZyBpbiBjaGVja19jb25kX2ptcF9vcCgpIG1hZGUgc3VjaCBpbmZlcmVuY2UgcG9zc2libGUuCiYjNDM7ICovCiYjNDM7U0VDKCYjMzQ7cmF3X3RwJiMzNDspCiYjNDM7X19mYWlsdXJlCiYjNDM7X19tc2coJiMzNDtlcnJvcjogaW52YWxpZCBkZXJlZmVyZW5jZSBvZiBSMCAoeGRwX3NvY2tfb3JfbnVsbCkmIzM0OykKJiM0MztfX21zZygmIzM0OyZndDsmZ3Q7Jmd0OyAxMCB8ICg2MSkgcjAgPSAqKHUzMiAqKShyMCAmIzQzOzApJiMzNDspCiYjNDM7X19uYWtlZCB2b2lkIHVudHJ1c3RlZF9tZW1fZG9lc19ub3RfaW5mZXJfbWFwX3ZhbHVlX25vbl9udWxsKHZvaWQpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUgKCYjMzQ7CQkJCQlcCiYjNDM7CS8qIHI4ID0gYnBmX3Jkb25seV9jYXN0KDAsIDApOyAqLwkJXAomIzQzOwlyMiA9IDA7CQkJCQkJXAomIzQzOwljYWxsICVbYnBmX3Jkb25seV9jYXN0XTsJCQlcCiYjNDM7CXI2ID0gcjA7CQkJCQlcCiYjNDM7CS8qIHIwID0gYnBmX21hcF9sb29rdXBfZWxlbShtYXBfaGFzaCwgJmFtcDtrZXkpOyAqLwlcCiYjNDM7CSoodTY0ICopKHIxMCAtIDgpID0gMDsJCQkJXAomIzQzOwlyMSA9ICVbbWFwX3hza21hcF0gbGw7CQkJCVwKJiM0MzsJcjIgPSByMTA7CQkJCQlcCiYjNDM7CXIyICYjNDM7PSAtODsJCQkJCVwKJiM0MzsJY2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dOwkJCVwKJiM0MzsJLyoJCQkJCQlcCiYjNDM7CSAqIGJ1Z2d5IHZlcmlmaWVyIGFzc3VtZWQgdGhhdCByNiBjYW4mIzM5O3QgYmUgbnVsbAlcCiYjNDM7CSAqIGFuZCBtYXJrZWQgcjAgbm9uLW51bGwgYXMgd2VsbC4JCVwKJiM0MzsJICovCQkJCQkJXAomIzQzOwlpZiByNiAhPSByMCBnb3RvIDFmOwkJCQlcCiYjNDM7CXIwID0gKih1MzIgKikocjAgJiM0MzsgMCk7CQkJCVwKJiM0MzsxOglyMCA9IDA7CQkJCQkJXAomIzQzOwlleGl0OwkJCQkJCVwKJiM0MzsmIzM0Owk6CiYjNDM7CTogX19pbW0oYnBmX3Jkb25seV9jYXN0KSwKJiM0MzsJICBfX2ltbShicGZfbWFwX2xvb2t1cF9lbGVtKSwKJiM0MzsJICBfX2ltbV9hZGRyKG1hcF94c2ttYXApCiYjNDM7CTogX19jbG9iYmVyX2FsbCk7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQga2Z1bmNfcm9vdCh2b2lkKQomIzQzO3sKJiM0MzsJYnBmX3Jkb25seV9jYXN0KDAsIDApOwomIzQzO30KJiM0MzsKIGNoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNzUKCQkJCQkJCW91dHB1dDogMTczCgkJCQkJCQl0aG91Z2h0czogNTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggZm9yIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCBhbmQgaXQmIzM5O3MgZml4aW5nIGEgc3VidGxlIGJ1dCBjcml0aWNhbCBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciYjMzk7cyBwb2ludGVyIGFuYWx5c2lzLiBFc3NlbnRpYWxseSwgdGhlIHZlcmlmaWVyIHdhc24mIzM5O3QgY29ycmVjdGx5IGhhbmRsaW5nIGNvbmRpdGlvbmFsIGp1bXBzIGFuZCBpbmZlcnJpbmcgbm9uLW51bGwgcG9pbnRlcnMuIFRoZSBmaXggaW52b2x2ZXMgYWRkaW5nIGBQVFJfVE9fWERQX1NPQ0tgIGFuZCBgUFRSX1RPX0JVRmAgdG8gYHJlZ19ub3RfbnVsbCgpYCwgd2hpY2ggc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpMb29raW5nIGF0IHRoZSBjb2RlIGNoYW5nZXMsIGl0IGFwcGVhcnMgdGhlIGJ1ZyBtYW5pZmVzdGVkIHdoZW4gY29tcGFyaW5nIGFuIHVudHJ1c3RlZCBwb2ludGVyICh3aGljaCBjb3VsZCBiZSBhbnl0aGluZywgaW5jbHVkaW5nIE5VTEwpIHdpdGggYSBtYXAgdmFsdWUgcG9pbnRlciAod2hpY2ggY291bGQgYWxzbyBiZSBOVUxMKS4gVGhlIHZlcmlmaWVyIHdhcyBpbmNvcnJlY3RseSBhc3N1bWluZyB0aGUgbWFwIHZhbHVlIHBvaW50ZXIgd2FzIG5vbi1udWxsIGFmdGVyIGFuIGVxdWFsaXR5IGNoZWNrLCAqZXZlbiogaWYgdGhlIHVudHJ1c3RlZCBwb2ludGVyICpjb3VsZCogaGF2ZSBiZWVuIE5VTEwuIFRoaXMgbWVhbnMgdGhhdCBhIGNvbmRpdGlvbmFsIGp1bXAsIGlmIHRydWUsIHdvdWxkIHRoZW4gYWxsb3cgYSBzdWJzZXF1ZW50IGRlcmVmZXJlbmNlIG9mIHRoYXQgJiMzNDt2ZXJpZmllZCBub24tbnVsbCYjMzQ7IG1hcCB2YWx1ZSBwb2ludGVyICp3aXRob3V0KiBhIHByb3BlciBudWxsIGNoZWNrLCBhbmQgdGhlIHJlc3VsdHMgY291bGQgYmUgY2F0YXN0cm9waGljLgoKVGhlIHNwZWNpZmljIGNoYW5nZXMgdG8gYGNoZWNrX2NvbmRfam1wX29wKClgIGFuZCB0aGUgcG9pbnRlciBtYXJraW5nIGxvZ2ljIGFyZSB0YXJnZXRlZCBhdCBhZGRyZXNzaW5nIHRoaXMgZmxhd2VkIGluZmVyZW5jZS4gVGhlIG9sZCBsb2dpYyB3YXMgdG9vIHNpbXBsaXN0aWMsIGFuZCB0aGUgbmV3IGxvZ2ljIHNlZW1zIHRvIGNvcnJlY3QgZm9yIHRoZSBlcnJvbmVvdXMgYXNzdW1wdGlvbiB0aGF0IG9uZSBzaWRlIG9mIGFuIGVxdWFsaXR5IGNvbXBhcmlzb24gYmVpbmcgbm9uLW51bGwgaW1wbGllZCB0aGUgb3RoZXIgc2lkZSB3YXMuIFRoZSB1cGRhdGVkIGxvZ2ljIGNvbnNpZGVycyBib3RoIHBvc3NpYmlsaXRpZXM6IHRoZSBzcmMgcG9pbnRlciBub3QgYmVpbmcgbnVsbCBpbXBsaWVzIHRoZSBkZXN0IHBvaW50ZXIgaXMgYWxzbyBub3QgbnVsbCwgYW5kIHZpY2UgdmVyc2EuCgpUaGlzIGlzIGEgY2xlYXIgY2FzZSBvZiBhIHR5cGUgY29uZnVzaW9uIHZ1bG5lcmFiaWxpdHk7IGl0JiMzOTtzIGEgbWlzc2luZyBudWxsIGNoZWNrIGludHJvZHVjZWQgYnkgYW4gaW5jb3JyZWN0IHZlcmlmaWVyIGFzc3VtcHRpb24uIFRoZSBjb25zZXF1ZW5jZT8gUG90ZW50aWFsbHkgaW52YWxpZCBtZW1vcnkgYWNjZXNzLCBlaXRoZXIgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UsIG9yIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSBpZiBhbiBhdHRhY2tlciB3ZXJlIGFibGUgdG8gY29udHJvbCB0aGUgdW50cnVzdGVkIHBvaW50ZXIsIGFuZCBJIG5lZWQgdG8ga2VlcCB0aGlzIGluIG1pbmQuIFRoaXMgKmlzbiYjMzk7dCogYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIEtBU0FOIG9yIHN0YW5kYXJkIGZhdWx0IGhhbmRsZXJzIHdvdWxkIGxpa2VseSBjYXRjaCB0aGUgcmVzdWx0YW50IGludmFsaWQgbWVtb3J5IGFjY2VzcywgYW5kIEtNU0FOIGlzICppcnJlbGV2YW50KiBoZXJlLiBTbyBJIGhhdmUgdG8gYmUgc3VyZSB0aGlzIGlzIG5vdCBhbiBpc3N1ZSB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LgoKUmlnaHQsIGxldCYjMzk7cyBqdXN0IG1ha2UgY2VydGFpbiBJIGhhdmUgdGhpcyBjb3JyZWN0Li4uIFRoZSB2ZXJpZmllciBtYWRlIHRoZSAqd3JvbmcqIGFzc3VtcHRpb24uIEEgcmVnaXN0ZXIgd2FzIGluY29ycmVjdGx5IG1hcmtlZCBhcyBub3QgbnVsbC4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIG15IHJlYXNvbmluZyBpcyBvbiB0cmFjay4gVGhpcyBjb3VsZCBsZWFkIHRvIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBvciB3b3JzZS4gVGhpcyBpc24mIzM5O3QgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYE5lZWRzS01TQU5gIGlzIGRlZmluaXRpdmVseSBgZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIGBjaGVja19jb25kX2ptcF9vcGAgZnVuY3Rpb24gd2hlcmUgaXQgaW5jb3JyZWN0bHkgaW5mZXJyZWQgdGhhdCBhIHBvaW50ZXIgd2FzIG5vdCBudWxsIHdoZW4gY29tcGFyZWQgdG8gYW5vdGhlciBwb2ludGVyIHRoYXQgY291bGQgYWxzbyBiZSBudWxsIChvciB1bnRydXN0ZWQpLiBUaGlzIGJ1ZyBjb3VsZCBhbGxvdyBhIEJQRiBwcm9ncmFtIHRvIGJ5cGFzcyBudWxsIGNoZWNrcywgbGVhZGluZyB0byBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLiBUaGVzZSB0eXBlcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBhbmQgaW52YWxpZCBhY2Nlc3MgYnVncyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgcGFnZSBmYXVsdCBoYW5kbGluZy4gVGhlIHBhdGNoIGRvZXMgbm90IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcywgd2hpY2ggYXJlIHRoZSBzcGVjaWZpYyB0YXJnZXRzIG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciYjMzk7cyBgY2hlY2tfY29uZF9qbXBfb3BgIGZ1bmN0aW9uIHdoZXJlIGl0IGluY29ycmVjdGx5IGluZmVycmVkIHRoYXQgYSBwb2ludGVyIHdhcyBub3QgbnVsbCB3aGVuIGNvbXBhcmVkIHRvIGFub3RoZXIgcG9pbnRlciB0aGF0IGNvdWxkIGFsc28gYmUgbnVsbCAob3IgdW50cnVzdGVkKS4gVGhpcyBidWcgY291bGQgYWxsb3cgYSBCUEYgcHJvZ3JhbSB0byBieXBhc3MgbnVsbCBjaGVja3MsIGxlYWRpbmcgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGludmFsaWQgYWNjZXNzIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MsIHdoaWNoIGFyZSB0aGUgc3BlY2lmaWMgdGFyZ2V0cyBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDE6MzM6MTQuNTgzNDk3MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQ3MTAyNjc5MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlhEUF9TT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyJ3MgYGNoZWNrX2NvbmRfam1wX29wYCBmdW5jdGlvbiB3aGVyZSBpdCBpbmNvcnJlY3RseSBpbmZlcnJlZCB0aGF0IGEgcG9pbnRlciB3YXMgbm90IG51bGwgd2hlbiBjb21wYXJlZCB0byBhbm90aGVyIHBvaW50ZXIgdGhhdCBjb3VsZCBhbHNvIGJlIG51bGwgKG9yIHVudHJ1c3RlZCkuIFRoaXMgYnVnIGNvdWxkIGFsbG93IGEgQlBGIHByb2dyYW0gdG8gYnlwYXNzIG51bGwgY2hlY2tzLCBsZWFkaW5nIHRvIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBpbnZhbGlkIGFjY2VzcyBidWdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBwYWdlIGZhdWx0IGhhbmRsaW5nLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLCB3aGljaCBhcmUgdGhlIHNwZWNpZmljIHRhcmdldHMgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBhIHJlZ2lzdGVyIGNvdWxkIGJlIGluY29ycmVjdGx5IGluZmVycmVkIGFzIG5vdCBudWxsIGFmdGVyIGEgY29uZGl0aW9uYWwganVtcC4gVGhpcyBpcyBhIGNvcmUgdmVyaWZpZXIgbG9naWMgY2hhbmdlIHRoYXQgYWZmZWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdmVyaWZpY2F0aW9uLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozMzoxNC41ODM1MDI1NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ1OTU1NjA0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU0NTQ5NjFlMzAzODdmOGZjOTc5MWQ4YTU2MDY3ZGI1ZmEzYTIxYmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMjIgMDE6MzM6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggZTAzNmFlMjBiZjZiOS4uODk3ZWM0YjM4ZGVhYiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtMzU1LDYgKzM1NSw4IEBAIHN0YXRpYyBib29sIHJlZ19ub3RfbnVsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0XFxuIFxcdHR5cGUgPSBiYXNlX3R5cGUodHlwZSk7XFxuIFxcdHJldHVybiB0eXBlID09IFBUUl9UT19TT0NLRVQgfHxcXG4gXFx0XFx0dHlwZSA9PSBQVFJfVE9fVENQX1NPQ0sgfHxcXG4rXFx0XFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0sgfHxcXG4rXFx0XFx0dHlwZSA9PSBQVFJfVE9fQlVGIHx8XFxuIFxcdFxcdHR5cGUgPT0gUFRSX1RPX01BUF9WQUxVRSB8fFxcbiBcXHRcXHR0eXBlID09IFBUUl9UT19NQVBfS0VZIHx8XFxuIFxcdFxcdHR5cGUgPT0gUFRSX1RPX1NPQ0tfQ09NTU9OIHx8XFxuQEAgLTE3MDg1LDcgKzE3MDg3LDYgQEAgc3RhdGljIGludCBjaGVja19jb25kX2ptcF9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHQgKi9cXG4gXFx0aWYgKCFpc19qbXAzMiBcXHUwMDI2XFx1MDAyNiBCUEZfU1JDKGluc24tXFx1MDAzZWNvZGUpID09IEJQRl9YIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIHNyY19yZWcpIFxcdTAwMjZcXHUwMDI2IF9faXNfcG9pbnRlcl92YWx1ZShmYWxzZSwgZHN0X3JlZykgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cXHUwMDNldHlwZSkgIT0gdHlwZV9tYXlfYmVfbnVsbChkc3RfcmVnLVxcdTAwM2V0eXBlKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgYmFzZV90eXBlKHNyY19yZWctXFx1MDAzZXR5cGUpICE9IFBUUl9UT19CVEZfSUQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIGJhc2VfdHlwZShkc3RfcmVnLVxcdTAwM2V0eXBlKSAhPSBQVFJfVE9fQlRGX0lEKSB7XFxuIFxcdFxcdGVxX2JyYW5jaF9yZWdzID0gTlVMTDtcXG5AQCAtMTcxMDEsOSArMTcxMDIsMTEgQEAgc3RhdGljIGludCBjaGVja19jb25kX2ptcF9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcbiBcXHRcXHRpZiAoZXFfYnJhbmNoX3JlZ3MpIHtcXG4tXFx0XFx0XFx0aWYgKHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cXHUwMDNldHlwZSkpXFxuK1xcdFxcdFxcdC8qIHNyYyA9PSBkc3QgXFx1MDAyNlxcdTAwMjYgZHN0ICE9IE5VTEwgPVxcdTAwM2Ugc3JjICE9IE5VTEwgKi9cXG4rXFx0XFx0XFx0aWYgKHJlZ19ub3RfbnVsbChlbnYsIGRzdF9yZWcpIFxcdTAwMjZcXHUwMDI2IHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cXHUwMDNldHlwZSkpXFxuIFxcdFxcdFxcdFxcdG1hcmtfcHRyX25vdF9udWxsX3JlZyhcXHUwMDI2ZXFfYnJhbmNoX3JlZ3NbaW5zbi1cXHUwMDNlc3JjX3JlZ10pO1xcbi1cXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdC8qIHNyYyA9PSBkc3QgXFx1MDAyNlxcdTAwMjYgc3JjICE9IE5VTEwgPVxcdTAwM2UgZHN0ICE9IE5VTEwgKi9cXG4rXFx0XFx0XFx0aWYgKHJlZ19ub3RfbnVsbChlbnYsIHNyY19yZWcpIFxcdTAwMjZcXHUwMDI2IHR5cGVfbWF5X2JlX251bGwoZHN0X3JlZy1cXHUwMDNldHlwZSkpXFxuIFxcdFxcdFxcdFxcdG1hcmtfcHRyX25vdF9udWxsX3JlZyhcXHUwMDI2ZXFfYnJhbmNoX3JlZ3NbaW5zbi1cXHUwMDNlZHN0X3JlZ10pO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jXFxuaW5kZXggM2QxZThkZTQzOTBjMi4uMDg1ZDExNDY4OTZjMSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLmNcXG5AQCAtMyw3ICszLDkgQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9icGYuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RkYm9vbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4rI2luY2x1ZGUgXFxcImJwZl9rZnVuY3MuaFxcXCJcXG4gXFxuIHN0cnVjdCB7XFxuIFxcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfWFNLTUFQKTtcXG5AQCAtMjY0LDQgKzI2Niw0NiBAQCBfX25ha2VkIHZvaWQgam5lX3JlZ19yZWdfbnVsbF9jaGVjayh2b2lkKVxcbiAgICAgICAgIDogX19jbG9iYmVyX2FsbCk7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIEEgY29tcGFyaXNvbiBiZXR3ZWVuIFBUUl9UT19NRU0gfCBNRU1fUkRPTkxZIHwgUFRSX1VOVFJVU1RFRCBhbmRcXG4rICogUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMIHNob3VsZCBub3QgaW5mZXIgdGhhdCBtYXAgcG9pbnRlciBpcyBub3QgbnVsbC5cXG4rICogQSBidWcgaW4gY2hlY2tfY29uZF9qbXBfb3AoKSBtYWRlIHN1Y2ggaW5mZXJlbmNlIHBvc3NpYmxlLlxcbisgKi9cXG4rU0VDKFxcXCJyYXdfdHBcXFwiKVxcbitfX2ZhaWx1cmVcXG4rX19tc2coXFxcImVycm9yOiBpbnZhbGlkIGRlcmVmZXJlbmNlIG9mIFIwICh4ZHBfc29ja19vcl9udWxsKVxcXCIpXFxuK19fbXNnKFxcXCJcXHUwMDNlXFx1MDAzZVxcdTAwM2UgMTAgfCAoNjEpIHIwID0gKih1MzIgKikocjAgKzApXFxcIilcXG4rX19uYWtlZCB2b2lkIHVudHJ1c3RlZF9tZW1fZG9lc19ub3RfaW5mZXJfbWFwX3ZhbHVlX25vbl9udWxsKHZvaWQpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXFwiXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHQvKiByOCA9IGJwZl9yZG9ubHlfY2FzdCgwLCAwKTsgKi9cXHRcXHRcXFxcXFxuK1xcdHIyID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGNhbGwgJVticGZfcmRvbmx5X2Nhc3RdO1xcdFxcdFxcdFxcXFxcXG4rXFx0cjYgPSByMDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdC8qIHIwID0gYnBmX21hcF9sb29rdXBfZWxlbShtYXBfaGFzaCwgXFx1MDAyNmtleSk7ICovXFx0XFxcXFxcbitcXHQqKHU2NCAqKShyMTAgLSA4KSA9IDA7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyMSA9ICVbbWFwX3hza21hcF0gbGw7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyMiA9IHIxMDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHIyICs9IC04O1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0Y2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dO1xcdFxcdFxcdFxcXFxcXG4rXFx0LypcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAqIGJ1Z2d5IHZlcmlmaWVyIGFzc3VtZWQgdGhhdCByNiBjYW4ndCBiZSBudWxsXFx0XFxcXFxcbitcXHQgKiBhbmQgbWFya2VkIHIwIG5vbi1udWxsIGFzIHdlbGwuXFx0XFx0XFxcXFxcbitcXHQgKi9cXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGlmIHI2ICE9IHIwIGdvdG8gMWY7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyMCA9ICoodTMyICopKHIwICsgMCk7XFx0XFx0XFx0XFx0XFxcXFxcbisxOlxcdHIwID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGV4aXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXFwiXFx0OlxcbitcXHQ6IF9faW1tKGJwZl9yZG9ubHlfY2FzdCksXFxuK1xcdCAgX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksXFxuK1xcdCAgX19pbW1fYWRkcihtYXBfeHNrbWFwKVxcbitcXHQ6IF9fY2xvYmJlcl9hbGwpO1xcbit9XFxuK1xcbit2b2lkIGtmdW5jX3Jvb3Qodm9pZClcXG4re1xcbitcXHRicGZfcmRvbmx5X2Nhc3QoMCwgMCk7XFxuK31cXG4rXFxuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozMzoxNi4wNDM3Nzc4MjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNjYwNTc0NzM1OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlhEUF9TT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBhIHJlZ2lzdGVyIGNvdWxkIGJlIGluY29ycmVjdGx5IGluZmVycmVkIGFzIG5vdCBudWxsIGFmdGVyIGEgY29uZGl0aW9uYWwganVtcC4gVGhpcyBpcyBhIGNvcmUgdmVyaWZpZXIgbG9naWMgY2hhbmdlIHRoYXQgYWZmZWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdmVyaWZpY2F0aW9uLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1NDU0OTYxZTMwMzg3ZjhmYzk3OTFkOGE1NjA2N2RiNWZhM2EyMWJjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjIgMDE6MzM6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IGUwMzZhZTIwYmY2YjkuLjg5N2VjNGIzOGRlYWIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTM1NSw2ICszNTUsOCBAQCBzdGF0aWMgYm9vbCByZWdfbm90X251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdFxuIFx0dHlwZSA9IGJhc2VfdHlwZSh0eXBlKTtcbiBcdHJldHVybiB0eXBlID09IFBUUl9UT19TT0NLRVQgfHxcbiBcdFx0dHlwZSA9PSBQVFJfVE9fVENQX1NPQ0sgfHxcbitcdFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0sgfHxcbitcdFx0dHlwZSA9PSBQVFJfVE9fQlVGIHx8XG4gXHRcdHR5cGUgPT0gUFRSX1RPX01BUF9WQUxVRSB8fFxuIFx0XHR0eXBlID09IFBUUl9UT19NQVBfS0VZIHx8XG4gXHRcdHR5cGUgPT0gUFRSX1RPX1NPQ0tfQ09NTU9OIHx8XG5AQCAtMTcwODUsNyArMTcwODcsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHQgKi9cbiBcdGlmICghaXNfam1wMzIgXHUwMDI2XHUwMDI2IEJQRl9TUkMoaW5zbi1cdTAwM2Vjb2RlKSA9PSBCUEZfWCBcdTAwMjZcdTAwMjZcbiBcdCAgICBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIHNyY19yZWcpIFx1MDAyNlx1MDAyNiBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIGRzdF9yZWcpIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cdTAwM2V0eXBlKSAhPSB0eXBlX21heV9iZV9udWxsKGRzdF9yZWctXHUwMDNldHlwZSkgXHUwMDI2XHUwMDI2XG4gXHQgICAgYmFzZV90eXBlKHNyY19yZWctXHUwMDNldHlwZSkgIT0gUFRSX1RPX0JURl9JRCBcdTAwMjZcdTAwMjZcbiBcdCAgICBiYXNlX3R5cGUoZHN0X3JlZy1cdTAwM2V0eXBlKSAhPSBQVFJfVE9fQlRGX0lEKSB7XG4gXHRcdGVxX2JyYW5jaF9yZWdzID0gTlVMTDtcbkBAIC0xNzEwMSw5ICsxNzEwMiwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdFx0aWYgKGVxX2JyYW5jaF9yZWdzKSB7XG4tXHRcdFx0aWYgKHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cdTAwM2V0eXBlKSlcbitcdFx0XHQvKiBzcmMgPT0gZHN0IFx1MDAyNlx1MDAyNiBkc3QgIT0gTlVMTCA9XHUwMDNlIHNyYyAhPSBOVUxMICovXG4rXHRcdFx0aWYgKHJlZ19ub3RfbnVsbChlbnYsIGRzdF9yZWcpIFx1MDAyNlx1MDAyNiB0eXBlX21heV9iZV9udWxsKHNyY19yZWctXHUwMDNldHlwZSkpXG4gXHRcdFx0XHRtYXJrX3B0cl9ub3RfbnVsbF9yZWcoXHUwMDI2ZXFfYnJhbmNoX3JlZ3NbaW5zbi1cdTAwM2VzcmNfcmVnXSk7XG4tXHRcdFx0ZWxzZVxuK1x0XHRcdC8qIHNyYyA9PSBkc3QgXHUwMDI2XHUwMDI2IHNyYyAhPSBOVUxMID1cdTAwM2UgZHN0ICE9IE5VTEwgKi9cbitcdFx0XHRpZiAocmVnX25vdF9udWxsKGVudiwgc3JjX3JlZykgXHUwMDI2XHUwMDI2IHR5cGVfbWF5X2JlX251bGwoZHN0X3JlZy1cdTAwM2V0eXBlKSlcbiBcdFx0XHRcdG1hcmtfcHRyX25vdF9udWxsX3JlZyhcdTAwMjZlcV9icmFuY2hfcmVnc1tpbnNuLVx1MDAzZWRzdF9yZWddKTtcbiBcdFx0fVxuIFx0fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuY1xuaW5kZXggM2QxZThkZTQzOTBjMi4uMDg1ZDExNDY4OTZjMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jXG5AQCAtMyw3ICszLDkgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9icGYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkYm9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbisjaW5jbHVkZSBcImJwZl9rZnVuY3MuaFwiXG4gXG4gc3RydWN0IHtcbiBcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfWFNLTUFQKTtcbkBAIC0yNjQsNCArMjY2LDQ2IEBAIF9fbmFrZWQgdm9pZCBqbmVfcmVnX3JlZ19udWxsX2NoZWNrKHZvaWQpXG4gICAgICAgICA6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbisvKlxuKyAqIEEgY29tcGFyaXNvbiBiZXR3ZWVuIFBUUl9UT19NRU0gfCBNRU1fUkRPTkxZIHwgUFRSX1VOVFJVU1RFRCBhbmRcbisgKiBQVFJfVE9fTUFQX1ZBTFVFX09SX05VTEwgc2hvdWxkIG5vdCBpbmZlciB0aGF0IG1hcCBwb2ludGVyIGlzIG5vdCBudWxsLlxuKyAqIEEgYnVnIGluIGNoZWNrX2NvbmRfam1wX29wKCkgbWFkZSBzdWNoIGluZmVyZW5jZSBwb3NzaWJsZS5cbisgKi9cbitTRUMoXCJyYXdfdHBcIilcbitfX2ZhaWx1cmVcbitfX21zZyhcImVycm9yOiBpbnZhbGlkIGRlcmVmZXJlbmNlIG9mIFIwICh4ZHBfc29ja19vcl9udWxsKVwiKVxuK19fbXNnKFwiXHUwMDNlXHUwMDNlXHUwMDNlIDEwIHwgKDYxKSByMCA9ICoodTMyICopKHIwICswKVwiKVxuK19fbmFrZWQgdm9pZCB1bnRydXN0ZWRfbWVtX2RvZXNfbm90X2luZmVyX21hcF92YWx1ZV9ub25fbnVsbCh2b2lkKVxuK3tcbitcdGFzbSB2b2xhdGlsZSAoXCJcdFx0XHRcdFx0XFxcbitcdC8qIHI4ID0gYnBmX3Jkb25seV9jYXN0KDAsIDApOyAqL1x0XHRcXFxuK1x0cjIgPSAwO1x0XHRcdFx0XHRcdFxcXG4rXHRjYWxsICVbYnBmX3Jkb25seV9jYXN0XTtcdFx0XHRcXFxuK1x0cjYgPSByMDtcdFx0XHRcdFx0XFxcbitcdC8qIHIwID0gYnBmX21hcF9sb29rdXBfZWxlbShtYXBfaGFzaCwgXHUwMDI2a2V5KTsgKi9cdFxcXG4rXHQqKHU2NCAqKShyMTAgLSA4KSA9IDA7XHRcdFx0XHRcXFxuK1x0cjEgPSAlW21hcF94c2ttYXBdIGxsO1x0XHRcdFx0XFxcbitcdHIyID0gcjEwO1x0XHRcdFx0XHRcXFxuK1x0cjIgKz0gLTg7XHRcdFx0XHRcdFxcXG4rXHRjYWxsICVbYnBmX21hcF9sb29rdXBfZWxlbV07XHRcdFx0XFxcbitcdC8qXHRcdFx0XHRcdFx0XFxcbitcdCAqIGJ1Z2d5IHZlcmlmaWVyIGFzc3VtZWQgdGhhdCByNiBjYW4ndCBiZSBudWxsXHRcXFxuK1x0ICogYW5kIG1hcmtlZCByMCBub24tbnVsbCBhcyB3ZWxsLlx0XHRcXFxuK1x0ICovXHRcdFx0XHRcdFx0XFxcbitcdGlmIHI2ICE9IHIwIGdvdG8gMWY7XHRcdFx0XHRcXFxuK1x0cjAgPSAqKHUzMiAqKShyMCArIDApO1x0XHRcdFx0XFxcbisxOlx0cjAgPSAwO1x0XHRcdFx0XHRcdFxcXG4rXHRleGl0O1x0XHRcdFx0XHRcdFxcXG4rXCJcdDpcbitcdDogX19pbW0oYnBmX3Jkb25seV9jYXN0KSxcbitcdCAgX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksXG4rXHQgIF9faW1tX2FkZHIobWFwX3hza21hcClcbitcdDogX19jbG9iYmVyX2FsbCk7XG4rfVxuK1xuK3ZvaWQga2Z1bmNfcm9vdCh2b2lkKVxuK3tcbitcdGJwZl9yZG9ubHlfY2FzdCgwLCAwKTtcbit9XG4rXG4gY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDE6MzM6MTYuMDQzNzc5MTY5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ3MDMxOTQxNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRoZXkndmUgbWFkZSBhIHRhcmdldGVkIGNoYW5nZSB0byB0aGUgYGNoZWNrX2NvbmRfam1wX29wYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBkaXJlY3QgY29tcGFyaXNvbiBgdHlwZV9tYXlfYmVfbnVsbChzcmNfcmVnLVx1MDAzZXR5cGUpICE9IHR5cGVfbWF5X2JlX251bGwoZHN0X3JlZy1cdTAwM2V0eXBlKWAuIEluc3RlYWQsIHRoZXkncmUgbm93IGludHJvZHVjaW5nIGNoZWNrcyB1c2luZyBgcmVnX25vdF9udWxsKGVudiwgZHN0X3JlZylgIGFuZCBgcmVnX25vdF9udWxsKGVudiwgc3JjX3JlZylgIGJlZm9yZSBhc3NlcnRpbmcgdGhlIG5vbi1udWxsIHN0YXR1cyBvZiB0aGUgcmVnaXN0ZXJzLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGl0IHNlZW1zIHRoZXkncmUgcmVmaW5pbmcgdGhlIGxvZ2ljIGFyb3VuZCBudWxsIHBvaW50ZXIgc2FmZXR5IGNoZWNrcyBpbiBjb25kaXRpb25hbCBqdW1wcy5cblxuV2hhdCBjYXVnaHQgbXkgZXllIGltbWVkaWF0ZWx5IGlzIHRoZSBhZGRpdGlvbiBvZiBgUFRSX1RPX1hEUF9TT0NLYCBhbmQgYFBUUl9UT19CVUZgIHRvIGByZWdfbm90X251bGxgLiBUaGlzIGluZGljYXRlcyBhbiBpbnRlbnQgdG8gYnJvYWRlbiB0aGUgc2NvcGUgb2Ygd2hhdCB0aGUgdmVyaWZpZXIgY29uc2lkZXJzIFwibm90IG51bGxcIiBpbiB0aGUgY29udGV4dCBvZiB0aGVzZSBzcGVjaWZpYyBwb2ludGVyIHR5cGVzLiBUaGlzIGxpa2VseSBtZWFucyB0aGV5J3JlIGltcHJvdmluZyB0aGUgdmVyaWZpY2F0aW9uIG9mIGNvZGUgdGhhdCBkZWFscyB3aXRoIFhEUCBzb2NrZXRzIGFuZCBidWZmZXIgcG9pbnRlcnMsIHdoaWNoIGlzIGEgZ29vZCB0aGluZyB0byBzZWUuXG5cbk5vdywgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IGByZWdfbm90X251bGxgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiB0aGUgc2FtZSBmaWxlLiBZZXAsIGl0IGlzLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgYWxsIHNlbGYtY29udGFpbmVkIHdpdGhpbiB0aGUgYHZlcmlmaWVyLmNgIG1vZHVsZSwgc28gdGhhdCBoZWxwcyBuYXJyb3cgZG93biBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwYXRjaCdzIGltbWVkaWF0ZSBpbXBhY3QuIExldCBtZSBxdWlja2x5IGZpbmQgdGhlIGBjaGVja19jb25kX2ptcF9vcGAgaW4gdGhlIHNhbWUgZmlsZSB0byBxdWlja2x5IHJlZmVyZW5jZSBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI3OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjM0OjMwLjc0Njk3NjExOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcyMzY2NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX2NvbmRfam1wX29wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTg9c3RhdGljIGJvb2wgYnBmX2dsb2JhbF9wZXJjcHVfbWFfc2V0O1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2MC0gKiBQVFJfVE9fTUFQX1ZBTFVFIGFuZCB0aGUgc2FtZSByZWdpc3RlciBjaGFuZ2VzIHN0YXRlIHRvIENPTlNUX0lNTSBpbiB0aGUgZmFsc2VcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTYxOiAqIGJyYW5jaC4gU2VlIGNoZWNrX2NvbmRfam1wX29wKCkuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2Mi0gKlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE2ODQ5PXN0YXRpYyB2b2lkIHN5bmNfbGlua2VkX3JlZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl92ZXJpZmllcl9zdGF0ZSAqdnN0YXRlLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2OTAzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNjkwNDpzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2OTA1LVxcdFxcdFxcdCAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuLCBpbnQgKmluc25faWR4KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4MjEyPXN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODI5OC1cXHRcXHR9XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4Mjk5OlxcdFxcdHJldHVybiBjaGVja19jb25kX2ptcF9vcChlbnYsIGluc24sIFxcdTAwMjZlbnYtXFx1MDAzZWluc25faWR4KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTgzMDAtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNDozMi4yMTkzNDc0NjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjUyMDE2Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBkaXZlcyByaWdodCBpbnRvIHRoZSBoZWFydCBvZiB0aGluZ3MsIHR3ZWFraW5nIGBjaGVja19jb25kX2ptcF9vcGAsIHdoaWNoIGdldHMgY2FsbGVkIGJ5IGBkb19jaGVja19pbnNuYC4gQ29uc2lkZXJpbmcgYGRvX2NoZWNrX2luc25gIGlzIHdoZXJlIHRoZSBCUEYgdmVyaWZpZXIgbG9naWMgcmVhbGx5IHRha2VzIHBsYWNlLCB0aGlzIGNoYW5nZSBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGhhdmUgZnVuY3Rpb25hbCBjb25zZXF1ZW5jZXMuIEl0J3Mgc2NyZWFtaW5nIGZvciBhIGZ1enppbmcgY2FtcGFpZ24gdG8gc2VlIHdoYXQgYnJlYWtzLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGhlcmUgbmVlZHMgdG8gYmUgb24gZWl0aGVyIGBkb19jaGVja19pbnNuYCwgYGJwZl9jaGVja2AsIG9yIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAuIEknbGwgd2FudCB0byBnZXQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgYWxsIG9mIHRoZW0sIGJ1dCBsZXQncyBzZWUsIGBkb19jaGVja19pbnNuYCBpcyBzdGF0aWMgc28gaXQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBzZWUgd2hhdCBgYnBmX2NoZWNrYCBoYXMgdG8gb2ZmZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNDEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDE6MzQ6MzguODcxMzY2MzEzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTYxOTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9jaGVja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTU4PXN0YXRpYyBib29sIGJwZl9nbG9iYWxfcGVyY3B1X21hX3NldDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTktXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjYwOi8qIGJwZl9jaGVjaygpIGlzIGEgc3RhdGljIGNvZGUgYW5hbHl6ZXIgdGhhdCB3YWxrcyBlQlBGIHByb2dyYW1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjEtICogaW5zdHJ1Y3Rpb24gYnkgaW5zdHJ1Y3Rpb24gYW5kIHVwZGF0ZXMgcmVnaXN0ZXIvc3RhY2sgc3RhdGUuXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI2NDI9c3RhdGljIGludCBwcm9jZXNzX2tmX2FyZ19wdHJfdG9fcmJ0cmVlX25vZGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjY1My0gKiBMU00gaG9va3MgYW5kIGl0ZXJzIChib3RoIHNsZWVwYWJsZSBhbmQgbm9uLXNsZWVwYWJsZSkgYXJlIHNhZmUuXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNjU0OiAqIEFueSBzbGVlcGFibGUgcHJvZ3MgYXJlIGFsc28gc2FmZSBzaW5jZSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCgpIGVuZm9yY2VcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI2NTUtICogdGhlbSBjYW4gb25seSBiZSBhdHRhY2hlZCB0byBzb21lIHNwZWNpZmljIGhvb2sgcG9pbnRzLlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwMDA4PXN0YXRpYyBib29sIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAwMjEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMDIyOmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDAyMy1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwNDQ1PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwNDc1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDQ3NjpcXHRyZXQgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFxcdTAwMjZ0Z3RfaW5mbyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwNDc3LVxcdGlmIChyZXQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjA1NDQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwNTQ1OmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjA1NDYtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjA5Nzg9c3RhdGljIGVudW0gYnBmX3NpZ19rZXlyaW5nIGJwZl9jbGFzc2lmeV9rZXlyaW5nKHMzMiBrZXlyaW5nX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwOTkyLS8qXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwOTkzOiAqIFZlcmlmeSB0aGUgUEtDUyM3IHNpZ25hdHVyZSBvZiBhIGxvYWRlZCBwcm9ncmFtLiBDYWxsZWQgZnJvbSBicGZfY2hlY2soKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDk5NC0gKiBvbmNlIHRoZSBwcm9ncmFtJ3MgbWV0YWRhdGEgbWFwcyBoYXZlIGJlZW4gcmVzb2x2ZWQgaW50byB1c2VkX21hcHMsIHNvXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjEwMDE9c3RhdGljIGludCBicGZfcHJvZ192ZXJpZnlfc2lnbmF0dXJlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExMTctXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIxMTE4OmludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTExOS1cXHQgICAgICBzdHJ1Y3QgYnBmX2xvZ19hdHRyICphdHRyX2xvZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTEzMi1cXHQvKiAnc3RydWN0IGJwZl92ZXJpZmllcl9lbnYnIGNhbiBiZSBnbG9iYWwsIGJ1dCBzaW5jZSBpdCdzIG5vdCBzbWFsbCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjExMzM6XFx0ICogYWxsb2NhdGUvZnJlZSBpdCBldmVyeSB0aW1lIGJwZl9jaGVjaygpIGlzIGNhbGxlZFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTEzNC1cXHQgKi9cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTI0My1cXHQvKiBWYWxpZGF0ZSBCVEYgYWdhaW5zdCB0aGUgY29tcGxldGUgc3VicHJvZ3JhbSBsYXlvdXQgYW5kIGFwcGx5IENPLVJFLiAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMTI0NDpcXHRyZXQgPSBicGZfY2hlY2tfYnRmX2luZm8oZW52LCBhdHRyLCB1YXR0cik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMjQ1LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMjYzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMTI2NDpcXHRyZXQgPSBicGZfY2hlY2tfY2ZnKGVudik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMjY1LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNDozOC45MTg5MzEwMzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzYwNzQxNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBFbnRyeSBQb2ludCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgQlBGIHZlcmlmaWVyLiBgYnBmX2NoZWNrYCBpcyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludDsgaXQncyB0aGUgbWFpbiBlbnRyeS4gVGhhdCdzIHdoZXJlIGV2ZXJ5dGhpbmcga2lja3Mgb2ZmLiBGaXJzdCB0aGluZydzIGZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgb2J2aW91cyBvbmUsIHNvIEknbGwgZG91YmxlIGNoZWNrIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2ODgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNDo0Mi42Nzk2NzUwMDhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0MTYxNzgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDE6MzQ6NDQuMjIxMjk5MTY2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwMDc0Mjk1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhpcyBhcmVhOlxuXG4qKkNoZWNraW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYSBOZXcgWERQIFNvY2tldCBGZWF0dXJlKipcblxuQWxyaWdodCwgc28gdGhlIHBhdGNoIGludHJvZHVjZXMgYFBUUl9UT19YRFBfU09DS2AgdG8gYHJlZ19ub3RfbnVsbGAuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBkZXBlbmRlbmNpZXMuIFRoaXMgY2hhbmdlIGxpa2VseSBoaW5nZXMgb24gYENPTkZJR19YRFBfU09DS0VUU2AuIEkgY2FuJ3QgYmUgc3VyZSB3aXRob3V0IGRpZ2dpbmcgZGVlcGVyLCBidXQgdGhhdCdzIHRoZSBvYnZpb3VzIGxpbmssIGlzbid0IGl0PyBBZGRpbmcgdGhhdCBjaGVjayBpcyB0aGUgKmZpcnN0KiB0aGluZyBJIGhhdmUgdG8gZG8uIExldCdzIHNlZSBpZiBteSBzdXNwaWNpb25zIGFyZSBjb3JyZWN0LiBJIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudC4gSWYgaXQgaXMsIHRoaXMgaXMgYSBjbGVhbiBhbmQgcmVhc29uYWJsZSBjaGFuZ2UuIEJ1dCBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY29uZmlybSBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk2OCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjM0OjU1LjIyODczMjM1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4NjE4NDUzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQVFJfVE9fWERQX1NPQ0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9MTA0OD1lbnVtIGJwZl9yZWdfdHlwZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEwNjMtXFx0UFRSX1RPX1RQX0JVRkZFUixcXHQgLyogcmVnIHBvaW50cyB0byBhIHdyaXRhYmxlIHJhdyB0cCdzIGJ1ZmZlciAqL1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MTA2NDpcXHRQVFJfVE9fWERQX1NPQ0ssXFx0IC8qIHJlZyBwb2ludHMgdG8gc3RydWN0IHhkcF9zb2NrICovXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMDY1LVxcdC8qIFBUUl9UT19CVEZfSUQgcG9pbnRzIHRvIGEga2VybmVsIHN0cnVjdCB0aGF0IGRvZXMgbm90IG5lZWRcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTQwNj1zdGF0aWMgaW5saW5lIGJvb2wgdHlwZV9pc19za19wb2ludGVyKGVudW0gYnBmX3JlZ190eXBlIHR5cGUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0MTAtXFx0XFx0dHlwZSA9PSBQVFJfVE9fVENQX1NPQ0sgfHxcXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oOjE0MTE6XFx0XFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0s7XFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDEyLX1cXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9NzQxPWludCBicGZfY29udmVydF9jdHhfYWNjZXNzZXMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmMtOTIxLVxcdFxcdFxcdGJyZWFrO1xcbmtlcm5lbC9icGYvZml4dXBzLmM6OTIyOlxcdFxcdGNhc2UgUFRSX1RPX1hEUF9TT0NLOlxcbmtlcm5lbC9icGYvZml4dXBzLmMtOTIzLVxcdFxcdFxcdGNvbnZlcnRfY3R4X2FjY2VzcyA9IGJwZl94ZHBfc29ja19jb252ZXJ0X2N0eF9hY2Nlc3M7XFxuLS1cXG5rZXJuZWwvYnBmL2xvZy5jPTM5OT1jb25zdCBjaGFyICpyZWdfdHlwZV9zdHIoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgZW51bSBicGZfcmVnX3R5cGUgdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvbG9nLmMtNDE2LVxcdFxcdFtQVFJfVE9fVFBfQlVGRkVSXVxcdD0gXFxcInRwX2J1ZmZlclxcXCIsXFxua2VybmVsL2JwZi9sb2cuYzo0MTc6XFx0XFx0W1BUUl9UT19YRFBfU09DS11cXHQ9IFxcXCJ4ZHBfc29ja1xcXCIsXFxua2VybmVsL2JwZi9sb2cuYy00MTgtXFx0XFx0W1BUUl9UT19CVEZfSURdXFx0XFx0PSBcXFwicHRyX1xcXCIsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MzQ3PXN0YXRpYyBib29sIHJlZ19ub3RfbnVsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTM1Ny1cXHRcXHR0eXBlID09IFBUUl9UT19UQ1BfU09DSyB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzozNTg6XFx0XFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0sgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzU5LVxcdFxcdHR5cGUgPT0gUFRSX1RPX0JVRiB8fFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTU9c3RhdGljIHZvaWQgcmVmaW5lX21hcF9sb29rdXBfdmFsdWUoc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTY5LVxcdH0gZWxzZSBpZiAobWFwLVxcdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfWFNLTUFQKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzA6XFx0XFx0cmVnLVxcdTAwM2V0eXBlID0gUFRSX1RPX1hEUF9TT0NLIHwgbWF5YmVfbnVsbDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3MS1cXHR9IGVsc2UgaWYgKG1hcC1cXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX1NPQ0tNQVAgfHxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01MDAwPXN0YXRpYyBpbnQgY2hlY2tfc29ja19hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUwMjItXFx0XFx0YnJlYWs7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUwMjM6XFx0Y2FzZSBQVFJfVE9fWERQX1NPQ0s6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUwMjQtXFx0XFx0dmFsaWQgPSBicGZfeGRwX3NvY2tfaXNfdmFsaWRfYWNjZXNzKG9mZiwgc2l6ZSwgdCwgXFx1MDAyNmluZm8pO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTUyMzQ9c3RhdGljIGludCBjaGVja19wdHJfYWxpZ25tZW50KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTI3OC1cXHRcXHRicmVhaztcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTI3OTpcXHRjYXNlIFBUUl9UT19YRFBfU09DSzpcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTI4MC1cXHRcXHRwb2ludGVyX2Rlc2MgPSBcXFwieGRwX3NvY2sgXFxcIjtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04MTYyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3JlZ190eXBlcyBzb2NrX3R5cGVzID0ge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjYtXFx0XFx0UFRSX1RPX1RDUF9TT0NLLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MTY3OlxcdFxcdFBUUl9UT19YRFBfU09DSyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2OC1cXHR9LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTgxNzI9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfcmVnX3R5cGVzIGJ0Zl9pZF9zb2NrX2NvbW1vbl90eXBlcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MTc2LVxcdFxcdFBUUl9UT19UQ1BfU09DSyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODE3NzpcXHRcXHRQVFJfVE9fWERQX1NPQ0ssXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNzgtXFx0XFx0UFRSX1RPX0JURl9JRCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzk2MT1zdGF0aWMgYm9vbCByZWdfdHlwZV9taXNtYXRjaF9vayhlbnVtIGJwZl9yZWdfdHlwZSB0eXBlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3OTY3LVxcdGNhc2UgUFRSX1RPX1RDUF9TT0NLOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzk2ODpcXHRjYXNlIFBUUl9UT19YRFBfU09DSzpcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc5NjktXFx0Y2FzZSBQVFJfVE9fQlRGX0lEOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNDo1Ni44MTQ5MjU0NThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyMzk2MDUxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVGhpcyBWZXJpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGJ1ZyB3aXRoaW4gdGhlIGBjaGVja19jb25kX2ptcF9vcGAgZnVuY3Rpb24uIEl0IHNlZW1zIHRoZSB2ZXJpZmllciB3YXMgbWFraW5nIGEgZmF1bHR5IGFzc3VtcHRpb24gYWJvdXQgYSByZWdpc3RlciBub3QgYmVpbmcgbnVsbCwgbGVhZGluZyB0byBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgY3J1eCBvZiB0aGUgZml4IGlzIHRvIGluY29ycG9yYXRlIGEgY2hlY2sgZm9yIGByZWdfbm90X251bGxgICpiZWZvcmUqIGFzc3VtaW5nIHRoZSBvdGhlciByZWdpc3RlciBpcyBhbHNvIG5vdCBudWxsLiBUaGlzIG1ha2VzIGxvZ2ljYWwgc2Vuc2U7IHlvdSBoYXZlIHRvIGVuc3VyZSB0aGUgZmlyc3QgY29uZGl0aW9uIGlzIG1ldCBiZWZvcmUgdXNpbmcgaXQgdG8gZGVyaXZlIGEgc2Vjb25kLlxuXG5UaGUgYWRkaXRpb24gb2YgYFBUUl9UT19YRFBfU09DS2AgYW5kIGBQVFJfVE9fQlVGYCB0byBgcmVnX25vdF9udWxsYCBpcyBpbnRlcmVzdGluZy4gRXhwYW5kaW5nIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHdlIGNvbnNpZGVyIGEgcmVnaXN0ZXIgbm9uLW51bGwgaXMgYSBzaWduaWZpY2FudCBtb2RpZmljYXRpb24gdG8gdGhlIGNvcmUgdmVyaWZpZXIgbG9naWMuIEdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCB0aG9yb3VnaCBmdXp6aW5nIGlzIGRlZmluaXRlbHkgd2FycmFudGVkIGhlcmUuIFdlIG5lZWQgdG8gYmUgY29uZmlkZW50IHRoYXQgdGhlc2UgY2hhbmdlcyBkb24ndCBpbnRyb2R1Y2UgbmV3IHZ1bG5lcmFiaWxpdGllcyBvciByZWdyZXNzaW9ucy5cblxuRm9yIGZ1enppbmcsIEknbGwgd2FudCB0byBmb2N1cyBvbiB0aGUgYGJwZl9jaGVja2Agc3ltYm9sLiBUaGF0J3MgdGhlIGtleSBmdW5jdGlvbiB3ZSBuZWVkIHRvIHRhcmdldCB0byBleHBvc2UgcG90ZW50aWFsIGlzc3Vlcy4gQW5kIG9mIGNvdXJzZSwgd2UnbGwgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZW5hYmxlZCBmb3IgdGhlIGZ1enppbmcgcnVucy5cblxuTm93LCBhIHF1aWNrIHNpZGUgdGhvdWdodOKApiBsZXQncyBzZWUsIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGF0IGBQVFJfVE9fWERQX1NPQ0tgIHJlcXVpcmVzIGBDT05GSUdfWERQX1NPQ0tFVFNgLiBXZSBuZWVkIHRvIGJlIGF3YXJlIG9mIGRlcGVuZGVuY2llcyBsaWtlIHRoYXQsIG9yIHdlJ2xsIGdldCBmYWxzZSBuZWdhdGl2ZXMuIEdvdHRhIGVuc3VyZSBvdXIgdGVzdCBjb3ZlcmFnZSBpcyBhY2N1cmF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU1MiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNTozOS4wNTQ1MzMyMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0MDg1NDgxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWERQX1NPQ0tFVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC94ZHAvS2NvbmZpZzoyOmNvbmZpZyBYRFBfU09DS0VUU1xcbm5ldC94ZHAvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIlhEUCBzb2NrZXRzXFxcIlxcbi0tXFxubmV0L3hkcC9LY29uZmlnLTktXFxubmV0L3hkcC9LY29uZmlnOjEwOmNvbmZpZyBYRFBfU09DS0VUU19ESUFHXFxubmV0L3hkcC9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjM1OjQxLjc5NTM5MzcxOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTUyMzgxMTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipRdWljayBYRFAgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIHllcCwgYFhEUF9TT0NLRVRTYCBpcyBhIHNvbGlkIGFkZGl0aW9uIGhlcmUg4oCTIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGFwcHJvYWNoIGZvciB0aGlzIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlLiBOb3csIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIGltcGxlbWVudGF0aW9uLCBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgc29tZXRoaW5nLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgd2UncmUgZ29pbmcgdG8gbmVlZCB0byBleHBsaWNpdGx5IGNvbmZpZ3VyZSBhbnl0aGluZyBhcm91bmQgYFBUUl9UT19CVUZgLiBJIHZhZ3VlbHkgcmVjYWxsIHRoZXJlIGJlaW5nIGEgZmV3IGVkZ2UgY2FzZXMgb3Igc3VidGxlIGRlcGVuZGVuY2llcyB0aGVyZSB0aGF0IG1pZ2h0IHRyaXAgdXMgdXAgbGF0ZXIgaWYgd2UgYXJlbid0IGNhcmVmdWwuIEJldHRlciB0byBiZSBwcm9hY3RpdmUgYW5kIGVuc3VyZSBldmVyeXRoaW5nJ3Mga29zaGVyIHdpdGggdGhhdCBwYXJhbWV0ZXIgdXBmcm9udC4gTm8gcG9pbnQgaW4gaGl0dGluZyBhIHNuYWcgZG93biB0aGUgbGluZSBkdWUgdG8gYSBtaXNzaW5nIGZsYWcgb3IgaW5jb21wYXRpYmxlIHNldHRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxODUsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNTo1MS4zNDc3Nzg4N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxMTkyOTYwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQVFJfVE9fQlVGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2JwZi5oPTEwNDg9ZW51bSBicGZfcmVnX3R5cGUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMDc3LVxcdFBUUl9UT19BUkVOQSxcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjEwNzg6XFx0UFRSX1RPX0JVRixcXHRcXHQgLyogcmVnIHBvaW50cyB0byBhIHJlYWQvd3JpdGUgYnVmZmVyICovXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMDc5LVxcdFBUUl9UT19GVU5DLFxcdFxcdCAvKiByZWcgcG9pbnRzIHRvIGEgYnBmIHByb2dyYW0gZnVuY3Rpb24gKi9cXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9Njg0Mj1ib29sIGJ0Zl9jdHhfYWNjZXNzKGludCBvZmYsIGludCBzaXplLCBlbnVtIGJwZl9hY2Nlc3NfdHlwZSB0eXBlLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02OTY5LVxcdFxcdCAgICAodHlwZSA9PSBQVFJfVE9fQVJFTkEgfHxcXG5rZXJuZWwvYnBmL2J0Zi5jOjY5NzA6XFx0XFx0ICAgICAodHlwZSA9PSBQVFJfVE9fQlVGIFxcdTAwMjZcXHUwMDI2IChmbGFnIFxcdTAwMjYgUFRSX01BWUJFX05VTEwpKSkpIHtcXG5rZXJuZWwvYnBmL2J0Zi5jLTY5NzEtXFx0XFx0XFx0aW5mby1cXHUwMDNlcmVnX3R5cGUgPSBjdHhfYXJnX2luZm8tXFx1MDAzZXJlZ190eXBlO1xcbi0tXFxua2VybmVsL2JwZi9sb2cuYz0zOTk9Y29uc3QgY2hhciAqcmVnX3R5cGVfc3RyKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGVudW0gYnBmX3JlZ190eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvYnBmL2xvZy5jLTQyMC1cXHRcXHRbUFRSX1RPX0FSRU5BXVxcdFxcdD0gXFxcImFyZW5hXFxcIixcXG5rZXJuZWwvYnBmL2xvZy5jOjQyMTpcXHRcXHRbUFRSX1RPX0JVRl1cXHRcXHQ9IFxcXCJidWZcXFwiLFxcbmtlcm5lbC9icGYvbG9nLmMtNDIyLVxcdFxcdFtQVFJfVE9fRlVOQ11cXHRcXHQ9IFxcXCJmdW5jXFxcIixcXG4tLVxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYz0xNzI9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfaXRlcl9yZWcgYnBmX21hcF9lbGVtX3JlZ19pbmZvID0ge1xcbi0tXFxua2VybmVsL2JwZi9tYXBfaXRlci5jLTE4MC1cXHRcXHR7IG9mZnNldG9mKHN0cnVjdCBicGZfaXRlcl9fYnBmX21hcF9lbGVtLCBrZXkpLFxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYzoxODE6XFx0XFx0ICBQVFJfVE9fQlVGIHwgUFRSX01BWUJFX05VTEwgfCBNRU1fUkRPTkxZIH0sXFxua2VybmVsL2JwZi9tYXBfaXRlci5jLTE4Mi1cXHRcXHR7IG9mZnNldG9mKHN0cnVjdCBicGZfaXRlcl9fYnBmX21hcF9lbGVtLCB2YWx1ZSksXFxua2VybmVsL2JwZi9tYXBfaXRlci5jOjE4MzpcXHRcXHQgIFBUUl9UT19CVUYgfCBQVFJfTUFZQkVfTlVMTCB9LFxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYy0xODQtXFx0fSxcXG4tLVxcbmtlcm5lbC9icGYvc3RhdGVzLmM9NTA3PXN0YXRpYyBib29sIHJlZ3NhZmUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJvbGQsXFxuLS1cXG5rZXJuZWwvYnBmL3N0YXRlcy5jLTYxMi1cXHRjYXNlIFBUUl9UT19NRU06XFxua2VybmVsL2JwZi9zdGF0ZXMuYzo2MTM6XFx0Y2FzZSBQVFJfVE9fQlVGOlxcbmtlcm5lbC9icGYvc3RhdGVzLmMtNjE0LVxcdGNhc2UgUFRSX1RPX1RQX0JVRkZFUjpcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0zNDc9c3RhdGljIGJvb2wgcmVnX25vdF9udWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzU4LVxcdFxcdHR5cGUgPT0gUFRSX1RPX1hEUF9TT0NLIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjM1OTpcXHRcXHR0eXBlID09IFBUUl9UT19CVUYgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzYwLVxcdFxcdHR5cGUgPT0gUFRSX1RPX01BUF9WQUxVRSB8fFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTY0MTY9c3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NjAwLVxcdFxcdFxcdFxcdFxcdCAgICAgIHZhbHVlX3JlZ25vKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjYwMTpcXHR9IGVsc2UgaWYgKGJhc2VfdHlwZShyZWctXFx1MDAzZXR5cGUpID09IFBUUl9UT19CVUYgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjYwMi1cXHRcXHQgICAhdHlwZV9tYXlfYmVfbnVsbChyZWctXFx1MDAzZXR5cGUpKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzAzNj1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzA3NS1cXHRcXHRcXHRcXHRcXHQgICAgICAgemVyb19zaXplX2FsbG93ZWQpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo3MDc2OlxcdGNhc2UgUFRSX1RPX0JVRjpcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzA3Ny1cXHRcXHRpZiAodHlwZV9pc19yZG9ubHlfbWVtKHJlZy1cXHUwMDNldHlwZSkpIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04MTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3JlZ190eXBlcyBtZW1fdHlwZXMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE5My1cXHRcXHRQVFJfVE9fTUVNIHwgTUVNX1JJTkdCVUYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjgxOTQ6XFx0XFx0UFRSX1RPX0JVRixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE5NS1cXHRcXHRQVFJfVE9fQlRGX0lEIHwgUFRSX1RSVVNURUQsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODUxMj1zdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1NTUtXFx0Y2FzZSBQVFJfVE9fTUVNIHwgTUVNX1JJTkdCVUY6XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjg1NTY6XFx0Y2FzZSBQVFJfVE9fQlVGOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NTU3OlxcdGNhc2UgUFRSX1RPX0JVRiB8IE1FTV9SRE9OTFk6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1NTgtXFx0Y2FzZSBQVFJfVE9fQVJFTkE6XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQ1NjA9c3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ2MjctXFx0Y2FzZSBQVFJfVE9fTUVNOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDYyODpcXHRjYXNlIFBUUl9UT19CVUY6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NjI5LVxcdGNhc2UgUFRSX1RPX0ZVTkM6XFxuLS1cXG5uZXQvY29yZS9icGZfc2tfc3RvcmFnZS5jPTg5OD1zdGF0aWMgc3RydWN0IGJwZl9pdGVyX3JlZyBicGZfc2tfc3RvcmFnZV9tYXBfcmVnX2luZm8gPSB7XFxuLS1cXG5uZXQvY29yZS9icGZfc2tfc3RvcmFnZS5jLTkwOC1cXHRcXHR7IG9mZnNldG9mKHN0cnVjdCBicGZfaXRlcl9fYnBmX3NrX3N0b3JhZ2VfbWFwLCB2YWx1ZSksXFxubmV0L2NvcmUvYnBmX3NrX3N0b3JhZ2UuYzo5MDk6XFx0XFx0ICBQVFJfVE9fQlVGIHwgUFRSX01BWUJFX05VTEwgfSxcXG5uZXQvY29yZS9icGZfc2tfc3RvcmFnZS5jLTkxMC1cXHR9LFxcbi0tXFxubmV0L2NvcmUvc29ja19tYXAuYz0xOTcxPXN0YXRpYyBzdHJ1Y3QgYnBmX2l0ZXJfcmVnIHNvY2tfbWFwX2l0ZXJfcmVnID0ge1xcbi0tXFxubmV0L2NvcmUvc29ja19tYXAuYy0xOTc5LVxcdFxcdHsgb2Zmc2V0b2Yoc3RydWN0IGJwZl9pdGVyX19zb2NrbWFwLCBrZXkpLFxcbm5ldC9jb3JlL3NvY2tfbWFwLmM6MTk4MDpcXHRcXHQgIFBUUl9UT19CVUYgfCBQVFJfTUFZQkVfTlVMTCB8IE1FTV9SRE9OTFkgfSxcXG5uZXQvY29yZS9zb2NrX21hcC5jLTE5ODEtXFx0XFx0eyBvZmZzZXRvZihzdHJ1Y3QgYnBmX2l0ZXJfX3NvY2ttYXAsIHNrKSxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYz04PWNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYy05LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYzoxMDovKiBWZXJpZnkgdGhhdCB0aGUgdmVyaWZpZXIgcmVqZWN0cyBkaXJlY3QgYWNjZXNzIHRvIG51bGxhYmxlIFBUUl9UT19CVUYuICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJfYnVmX251bGxfZmFpbC5jLTExLVNFQyhcXFwiaXRlci9icGZfbWFwX2VsZW1cXFwiKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJfYnVmX251bGxfZmFpbC5jPTEzPWludCBpdGVyX2J1Zl9udWxsX2RlcmVmKHN0cnVjdCBicGZfaXRlcl9fYnBmX21hcF9lbGVtICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcl9idWZfbnVsbF9mYWlsLmMtMTUtXFx0LypcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcl9idWZfbnVsbF9mYWlsLmM6MTY6XFx0ICogY3R4LVxcdTAwM2VrZXkgaXMgUFRSX1RPX0JVRiB8IFBUUl9NQVlCRV9OVUxMIHwgTUVNX1JET05MWS5cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcl9idWZfbnVsbF9mYWlsLmMtMTctXFx0ICogRGlyZWN0IGFjY2VzcyB3aXRob3V0IG51bGwgY2hlY2sgbXVzdCBiZSByZWplY3RlZC5cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wdHJfdG9fYnVmLmM9Nz1TRUMoXFxcIml0ZXIvYnBmX21hcF9lbGVtXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHRyX3RvX2J1Zi5jOjg6X19kZXNjcmlwdGlvbihcXFwiUFRSX1RPX0JVRjogcmVqZWN0IG5lZ2F0aXZlIGNvbnN0IG9mZnNldFxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3B0cl90b19idWYuYy05LV9fZmFpbHVyZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNTo1Mi43NTk3MTMyNTNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI0NzY5NjA3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgRml4KipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwcmV0dHkgZnVuZGFtZW50YWwgaXNzdWUgaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWJvdXQgYSByZWdpc3RlciBiZWluZyBpbmNvcnJlY3RseSBhc3Nlc3NlZCBhcyBub24tbnVsbCBhZnRlciBhIGNvbmRpdGlvbmFsIGp1bXAuIFRoaXMga2luZCBvZiB2ZXJpZmllciBsb2dpYyBjaGFuZ2UgaXMgc2VyaW91czsgaXQgaW1wYWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdGhlIHJlbGlhYmlsaXR5IG9mIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBpdHNlbGYuIFNvLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcuXG5cbk15IHRoaW5raW5nIGlzIHRoYXQgYEJQRl9TWVNDQUxMYCBzZWVtcyBsaWtlIGEgc3VmZmljaWVudCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBlbmFibGUgZm9yIHRlc3RpbmcuIEl0IGFwcGVhcnMgdGhhdCBgUFRSX1RPX0JVRmAgaXMgcmVsZXZhbnQgYmVjYXVzZSBvZiBpdHMgdXNlIGluIGl0ZXJhdG9ycy5cblxuTm93LCByZWdhcmRpbmcgdGhlIGZvY3VzIHN5bWJvbHMsIEkgaW5pdGlhbGx5IGhhZCBgYnBmX2NoZWNrYCBpbiBtaW5kLiBCdXQsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gYGJwZl9jaGVja2AgaXMgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIHRoZSB2ZXJpZmllciwgc28gaXQgbWFrZXMgc2Vuc2UgYXMgYSBzdGFydGluZyBwb2ludC4gYGNoZWNrX2NvbmRfam1wX29wYCBhbmQgYGRvX2NoZWNrX2luc25gIGFyZSBib3RoIHN0YXRpYyBmdW5jdGlvbnMsIHNvIEkgY2FuJ3QgZGlyZWN0bHkgdGFyZ2V0IHRoZW0uIEhvd2V2ZXIsIGBicGZfY2hlY2tgIGlzIGV4cG9ydGVkIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgbm9uLXN0YXRpYy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgYnBmX2NoZWNrYCBpc24ndCBzdGF0aWMuIEl0J3MgdGhlIG1vc3QgYXBwcm9wcmlhdGUgdGFyZ2V0IGlmIGl0IGlzbid0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU5OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNTo1OC4wMDc0MTE5NDVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTAxODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBicGZfY2hlY2tcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTIxMDAxPXN0YXRpYyBpbnQgYnBmX3Byb2dfdmVyaWZ5X3NpZ25hdHVyZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTE3LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMTExODppbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExMTktXFx0ICAgICAgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjM1OjU4LjA1MzkxODczWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzYyNzcxNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkNoZWNraW5nIEJQRiBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGBicGZfY2hlY2tgIGlzIGNvbmZpcm1lZCBhcyBub24tc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIE5vdywgbGV0IG1lIHRoaW5rIHRocm91Z2ggdGhlIHJlbGF0ZWQga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgYmlnIG9uZSwgdGhlIGNvcmUsIHRoZSBmb3VuZGF0aW9uYWwgc2V0dGluZyB0aGF0J3MgYWxtb3N0IGFsd2F5cyBuZWNlc3NhcnkuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gY29uc2lkZXIgb3RoZXJzLiBBaCB5ZXMsIGBDT05GSUdfWERQX1NPQ0tFVFNgIC0gdGhhdCdzIHJlbGV2YW50LCBlc3BlY2lhbGx5IGlmIEknbSBkZWFsaW5nIHdpdGggYFBUUl9UT19YRFBfU09DS2AuIFRoYXQncyBhIGtleSBjb25zaWRlcmF0aW9uLiBUaGVuIHRoZXJlJ3MgYENPTkZJR19CUEZfSklUYC4gSXQncyBwb3RlbnRpYWxseSB1c2VmdWwsIGJ1dCBub3QgYXMgY3JpdGljYWwgYXMgdGhlIG1haW4gYEJQRl9TWVNDQUxMYC4gVWx0aW1hdGVseSwgSSB0aGluayBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgZXNzZW50aWFsIG9uZSB0byBmb2N1cyBvbi4gT2theSwgbGV0J3MgbW92ZSBmb3J3YXJkIGJ5IGNhbGxpbmcgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjY4LCJPdXRwdXRUb2tlbnMiOjEwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjM2OjAyLjAzMDE5OTAyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMDQ5NTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiWERQX1NPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIGEgcmVnaXN0ZXIgY291bGQgYmUgaW5jb3JyZWN0bHkgaW5mZXJyZWQgYXMgbm90IG51bGwgYWZ0ZXIgYSBjb25kaXRpb25hbCBqdW1wLiBUaGlzIGlzIGEgY29yZSB2ZXJpZmllciBsb2dpYyBjaGFuZ2UgdGhhdCBhZmZlY3RzIHByb2dyYW0gc2FmZXR5IGFuZCB2ZXJpZmljYXRpb24sIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlhEUF9TT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBhIHJlZ2lzdGVyIGNvdWxkIGJlIGluY29ycmVjdGx5IGluZmVycmVkIGFzIG5vdCBudWxsIGFmdGVyIGEgY29uZGl0aW9uYWwganVtcC4gVGhpcyBpcyBhIGNvcmUgdmVyaWZpZXIgbG9naWMgY2hhbmdlIHRoYXQgYWZmZWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdmVyaWZpY2F0aW9uLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNjowMi4xMDEyNTUwMzFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NzE5MjQ5OTk4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjM2OjAyLjEwMTcwMjcyMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyODcxOTIwNDg2OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIncyBgY2hlY2tfY29uZF9qbXBfb3BgIGZ1bmN0aW9uIHdoZXJlIGl0IGluY29ycmVjdGx5IGluZmVycmVkIHRoYXQgYSBwb2ludGVyIHdhcyBub3QgbnVsbCB3aGVuIGNvbXBhcmVkIHRvIGFub3RoZXIgcG9pbnRlciB0aGF0IGNvdWxkIGFsc28gYmUgbnVsbCAob3IgdW50cnVzdGVkKS4gVGhpcyBidWcgY291bGQgYWxsb3cgYSBCUEYgcHJvZ3JhbSB0byBieXBhc3MgbnVsbCBjaGVja3MsIGxlYWRpbmcgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGludmFsaWQgYWNjZXNzIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MsIHdoaWNoIGFyZSB0aGUgc3BlY2lmaWMgdGFyZ2V0cyBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1NDU0OTYxZTMwMzg3ZjhmYzk3OTFkOGE1NjA2N2RiNWZhM2EyMWJjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjIgMDE6MzM6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IGUwMzZhZTIwYmY2YjkuLjg5N2VjNGIzOGRlYWIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTM1NSw2ICszNTUsOCBAQCBzdGF0aWMgYm9vbCByZWdfbm90X251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdFxuIFx0dHlwZSA9IGJhc2VfdHlwZSh0eXBlKTtcbiBcdHJldHVybiB0eXBlID09IFBUUl9UT19TT0NLRVQgfHxcbiBcdFx0dHlwZSA9PSBQVFJfVE9fVENQX1NPQ0sgfHxcbitcdFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0sgfHxcbitcdFx0dHlwZSA9PSBQVFJfVE9fQlVGIHx8XG4gXHRcdHR5cGUgPT0gUFRSX1RPX01BUF9WQUxVRSB8fFxuIFx0XHR0eXBlID09IFBUUl9UT19NQVBfS0VZIHx8XG4gXHRcdHR5cGUgPT0gUFRSX1RPX1NPQ0tfQ09NTU9OIHx8XG5AQCAtMTcwODUsNyArMTcwODcsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHQgKi9cbiBcdGlmICghaXNfam1wMzIgXHUwMDI2XHUwMDI2IEJQRl9TUkMoaW5zbi1cdTAwM2Vjb2RlKSA9PSBCUEZfWCBcdTAwMjZcdTAwMjZcbiBcdCAgICBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIHNyY19yZWcpIFx1MDAyNlx1MDAyNiBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIGRzdF9yZWcpIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cdTAwM2V0eXBlKSAhPSB0eXBlX21heV9iZV9udWxsKGRzdF9yZWctXHUwMDNldHlwZSkgXHUwMDI2XHUwMDI2XG4gXHQgICAgYmFzZV90eXBlKHNyY19yZWctXHUwMDNldHlwZSkgIT0gUFRSX1RPX0JURl9JRCBcdTAwMjZcdTAwMjZcbiBcdCAgICBiYXNlX3R5cGUoZHN0X3JlZy1cdTAwM2V0eXBlKSAhPSBQVFJfVE9fQlRGX0lEKSB7XG4gXHRcdGVxX2JyYW5jaF9yZWdzID0gTlVMTDtcbkBAIC0xNzEwMSw5ICsxNzEwMiwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdFx0aWYgKGVxX2JyYW5jaF9yZWdzKSB7XG4tXHRcdFx0aWYgKHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cdTAwM2V0eXBlKSlcbitcdFx0XHQvKiBzcmMgPT0gZHN0IFx1MDAyNlx1MDAyNiBkc3QgIT0gTlVMTCA9XHUwMDNlIHNyYyAhPSBOVUxMICovXG4rXHRcdFx0aWYgKHJlZ19ub3RfbnVsbChlbnYsIGRzdF9yZWcpIFx1MDAyNlx1MDAyNiB0eXBlX21heV9iZV9udWxsKHNyY19yZWctXHUwMDNldHlwZSkpXG4gXHRcdFx0XHRtYXJrX3B0cl9ub3RfbnVsbF9yZWcoXHUwMDI2ZXFfYnJhbmNoX3JlZ3NbaW5zbi1cdTAwM2VzcmNfcmVnXSk7XG4tXHRcdFx0ZWxzZVxuK1x0XHRcdC8qIHNyYyA9PSBkc3QgXHUwMDI2XHUwMDI2IHNyYyAhPSBOVUxMID1cdTAwM2UgZHN0ICE9IE5VTEwgKi9cbitcdFx0XHRpZiAocmVnX25vdF9udWxsKGVudiwgc3JjX3JlZykgXHUwMDI2XHUwMDI2IHR5cGVfbWF5X2JlX251bGwoZHN0X3JlZy1cdTAwM2V0eXBlKSlcbiBcdFx0XHRcdG1hcmtfcHRyX25vdF9udWxsX3JlZyhcdTAwMjZlcV9icmFuY2hfcmVnc1tpbnNuLVx1MDAzZWRzdF9yZWddKTtcbiBcdFx0fVxuIFx0fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuY1xuaW5kZXggM2QxZThkZTQzOTBjMi4uMDg1ZDExNDY4OTZjMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jXG5AQCAtMyw3ICszLDkgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9icGYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkYm9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbisjaW5jbHVkZSBcImJwZl9rZnVuY3MuaFwiXG4gXG4gc3RydWN0IHtcbiBcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfWFNLTUFQKTtcbkBAIC0yNjQsNCArMjY2LDQ2IEBAIF9fbmFrZWQgdm9pZCBqbmVfcmVnX3JlZ19udWxsX2NoZWNrKHZvaWQpXG4gICAgICAgICA6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbisvKlxuKyAqIEEgY29tcGFyaXNvbiBiZXR3ZWVuIFBUUl9UT19NRU0gfCBNRU1fUkRPTkxZIHwgUFRSX1VOVFJVU1RFRCBhbmRcbisgKiBQVFJfVE9fTUFQX1ZBTFVFX09SX05VTEwgc2hvdWxkIG5vdCBpbmZlciB0aGF0IG1hcCBwb2ludGVyIGlzIG5vdCBudWxsLlxuKyAqIEEgYnVnIGluIGNoZWNrX2NvbmRfam1wX29wKCkgbWFkZSBzdWNoIGluZmVyZW5jZSBwb3NzaWJsZS5cbisgKi9cbitTRUMoXCJyYXdfdHBcIilcbitfX2ZhaWx1cmVcbitfX21zZyhcImVycm9yOiBpbnZhbGlkIGRlcmVmZXJlbmNlIG9mIFIwICh4ZHBfc29ja19vcl9udWxsKVwiKVxuK19fbXNnKFwiXHUwMDNlXHUwMDNlXHUwMDNlIDEwIHwgKDYxKSByMCA9ICoodTMyICopKHIwICswKVwiKVxuK19fbmFrZWQgdm9pZCB1bnRydXN0ZWRfbWVtX2RvZXNfbm90X2luZmVyX21hcF92YWx1ZV9ub25fbnVsbCh2b2lkKVxuK3tcbitcdGFzbSB2b2xhdGlsZSAoXCJcdFx0XHRcdFx0XFxcbitcdC8qIHI4ID0gYnBmX3Jkb25seV9jYXN0KDAsIDApOyAqL1x0XHRcXFxuK1x0cjIgPSAwO1x0XHRcdFx0XHRcdFxcXG4rXHRjYWxsICVbYnBmX3Jkb25seV9jYXN0XTtcdFx0XHRcXFxuK1x0cjYgPSByMDtcdFx0XHRcdFx0XFxcbitcdC8qIHIwID0gYnBmX21hcF9sb29rdXBfZWxlbShtYXBfaGFzaCwgXHUwMDI2a2V5KTsgKi9cdFxcXG4rXHQqKHU2NCAqKShyMTAgLSA4KSA9IDA7XHRcdFx0XHRcXFxuK1x0cjEgPSAlW21hcF94c2ttYXBdIGxsO1x0XHRcdFx0XFxcbitcdHIyID0gcjEwO1x0XHRcdFx0XHRcXFxuK1x0cjIgKz0gLTg7XHRcdFx0XHRcdFxcXG4rXHRjYWxsICVbYnBmX21hcF9sb29rdXBfZWxlbV07XHRcdFx0XFxcbitcdC8qXHRcdFx0XHRcdFx0XFxcbitcdCAqIGJ1Z2d5IHZlcmlmaWVyIGFzc3VtZWQgdGhhdCByNiBjYW4ndCBiZSBudWxsXHRcXFxuK1x0ICogYW5kIG1hcmtlZCByMCBub24tbnVsbCBhcyB3ZWxsLlx0XHRcXFxuK1x0ICovXHRcdFx0XHRcdFx0XFxcbitcdGlmIHI2ICE9IHIwIGdvdG8gMWY7XHRcdFx0XHRcXFxuK1x0cjAgPSAqKHUzMiAqKShyMCArIDApO1x0XHRcdFx0XFxcbisxOlx0cjAgPSAwO1x0XHRcdFx0XHRcdFxcXG4rXHRleGl0O1x0XHRcdFx0XHRcdFxcXG4rXCJcdDpcbitcdDogX19pbW0oYnBmX3Jkb25seV9jYXN0KSxcbitcdCAgX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksXG4rXHQgIF9faW1tX2FkZHIobWFwX3hza21hcClcbitcdDogX19jbG9iYmVyX2FsbCk7XG4rfVxuK1xuK3ZvaWQga2Z1bmNfcm9vdCh2b2lkKVxuK3tcbitcdGJwZl9yZG9ubHlfY2FzdCgwLCAwKTtcbit9XG4rXG4gY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDE6MzY6MDIuMTAxNzAzNDcxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NzE5MjAyOTAxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AsIGFuZCBpdCdzIGZpeGluZyBhIHN1YnRsZSBidXQgY3JpdGljYWwgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIncyBwb2ludGVyIGFuYWx5c2lzLiBFc3NlbnRpYWxseSwgdGhlIHZlcmlmaWVyIHdhc24ndCBjb3JyZWN0bHkgaGFuZGxpbmcgY29uZGl0aW9uYWwganVtcHMgYW5kIGluZmVycmluZyBub24tbnVsbCBwb2ludGVycy4gVGhlIGZpeCBpbnZvbHZlcyBhZGRpbmcgYFBUUl9UT19YRFBfU09DS2AgYW5kIGBQVFJfVE9fQlVGYCB0byBgcmVnX25vdF9udWxsKClgLCB3aGljaCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTG9va2luZyBhdCB0aGUgY29kZSBjaGFuZ2VzLCBpdCBhcHBlYXJzIHRoZSBidWcgbWFuaWZlc3RlZCB3aGVuIGNvbXBhcmluZyBhbiB1bnRydXN0ZWQgcG9pbnRlciAod2hpY2ggY291bGQgYmUgYW55dGhpbmcsIGluY2x1ZGluZyBOVUxMKSB3aXRoIGEgbWFwIHZhbHVlIHBvaW50ZXIgKHdoaWNoIGNvdWxkIGFsc28gYmUgTlVMTCkuIFRoZSB2ZXJpZmllciB3YXMgaW5jb3JyZWN0bHkgYXNzdW1pbmcgdGhlIG1hcCB2YWx1ZSBwb2ludGVyIHdhcyBub24tbnVsbCBhZnRlciBhbiBlcXVhbGl0eSBjaGVjaywgKmV2ZW4qIGlmIHRoZSB1bnRydXN0ZWQgcG9pbnRlciAqY291bGQqIGhhdmUgYmVlbiBOVUxMLiBUaGlzIG1lYW5zIHRoYXQgYSBjb25kaXRpb25hbCBqdW1wLCBpZiB0cnVlLCB3b3VsZCB0aGVuIGFsbG93IGEgc3Vic2VxdWVudCBkZXJlZmVyZW5jZSBvZiB0aGF0IFwidmVyaWZpZWQgbm9uLW51bGxcIiBtYXAgdmFsdWUgcG9pbnRlciAqd2l0aG91dCogYSBwcm9wZXIgbnVsbCBjaGVjaywgYW5kIHRoZSByZXN1bHRzIGNvdWxkIGJlIGNhdGFzdHJvcGhpYy5cblxuVGhlIHNwZWNpZmljIGNoYW5nZXMgdG8gYGNoZWNrX2NvbmRfam1wX29wKClgIGFuZCB0aGUgcG9pbnRlciBtYXJraW5nIGxvZ2ljIGFyZSB0YXJnZXRlZCBhdCBhZGRyZXNzaW5nIHRoaXMgZmxhd2VkIGluZmVyZW5jZS4gVGhlIG9sZCBsb2dpYyB3YXMgdG9vIHNpbXBsaXN0aWMsIGFuZCB0aGUgbmV3IGxvZ2ljIHNlZW1zIHRvIGNvcnJlY3QgZm9yIHRoZSBlcnJvbmVvdXMgYXNzdW1wdGlvbiB0aGF0IG9uZSBzaWRlIG9mIGFuIGVxdWFsaXR5IGNvbXBhcmlzb24gYmVpbmcgbm9uLW51bGwgaW1wbGllZCB0aGUgb3RoZXIgc2lkZSB3YXMuIFRoZSB1cGRhdGVkIGxvZ2ljIGNvbnNpZGVycyBib3RoIHBvc3NpYmlsaXRpZXM6IHRoZSBzcmMgcG9pbnRlciBub3QgYmVpbmcgbnVsbCBpbXBsaWVzIHRoZSBkZXN0IHBvaW50ZXIgaXMgYWxzbyBub3QgbnVsbCwgYW5kIHZpY2UgdmVyc2EuXG5cblRoaXMgaXMgYSBjbGVhciBjYXNlIG9mIGEgdHlwZSBjb25mdXNpb24gdnVsbmVyYWJpbGl0eTsgaXQncyBhIG1pc3NpbmcgbnVsbCBjaGVjayBpbnRyb2R1Y2VkIGJ5IGFuIGluY29ycmVjdCB2ZXJpZmllciBhc3N1bXB0aW9uLiBUaGUgY29uc2VxdWVuY2U/IFBvdGVudGlhbGx5IGludmFsaWQgbWVtb3J5IGFjY2VzcywgZWl0aGVyIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBvciBvdXQtb2YtYm91bmRzIHJlYWQvd3JpdGUgaWYgYW4gYXR0YWNrZXIgd2VyZSBhYmxlIHRvIGNvbnRyb2wgdGhlIHVudHJ1c3RlZCBwb2ludGVyLCBhbmQgSSBuZWVkIHRvIGtlZXAgdGhpcyBpbiBtaW5kLiBUaGlzICppc24ndCogYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIEtBU0FOIG9yIHN0YW5kYXJkIGZhdWx0IGhhbmRsZXJzIHdvdWxkIGxpa2VseSBjYXRjaCB0aGUgcmVzdWx0YW50IGludmFsaWQgbWVtb3J5IGFjY2VzcywgYW5kIEtNU0FOIGlzICppcnJlbGV2YW50KiBoZXJlLiBTbyBJIGhhdmUgdG8gYmUgc3VyZSB0aGlzIGlzIG5vdCBhbiBpc3N1ZSB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LlxuXG5SaWdodCwgbGV0J3MganVzdCBtYWtlIGNlcnRhaW4gSSBoYXZlIHRoaXMgY29ycmVjdC4uLiBUaGUgdmVyaWZpZXIgbWFkZSB0aGUgKndyb25nKiBhc3N1bXB0aW9uLiBBIHJlZ2lzdGVyIHdhcyBpbmNvcnJlY3RseSBtYXJrZWQgYXMgbm90IG51bGwuIFRoaXMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSBteSByZWFzb25pbmcgaXMgb24gdHJhY2suIFRoaXMgY291bGQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgb3Igd29yc2UuIFRoaXMgaXNuJ3QgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYE5lZWRzS01TQU5gIGlzIGRlZmluaXRpdmVseSBgZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjc1LCJPdXRwdXRUb2tlbnMiOjE3MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjQwOjQ5LjI5MzczNTY5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyJ3MgYGNoZWNrX2NvbmRfam1wX29wYCBmdW5jdGlvbiB3aGVyZSBpdCBpbmNvcnJlY3RseSBpbmZlcnJlZCB0aGF0IGEgcG9pbnRlciB3YXMgbm90IG51bGwgd2hlbiBjb21wYXJlZCB0byBhbm90aGVyIHBvaW50ZXIgdGhhdCBjb3VsZCBhbHNvIGJlIG51bGwgKG9yIHVudHJ1c3RlZCkuIFRoaXMgYnVnIGNvdWxkIGFsbG93IGEgQlBGIHByb2dyYW0gdG8gYnlwYXNzIG51bGwgY2hlY2tzLCBsZWFkaW5nIHRvIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBpbnZhbGlkIGFjY2VzcyBidWdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBwYWdlIGZhdWx0IGhhbmRsaW5nLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLCB3aGljaCBhcmUgdGhlIHNwZWNpZmljIHRhcmdldHMgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllcidzIGBjaGVja19jb25kX2ptcF9vcGAgZnVuY3Rpb24gd2hlcmUgaXQgaW5jb3JyZWN0bHkgaW5mZXJyZWQgdGhhdCBhIHBvaW50ZXIgd2FzIG5vdCBudWxsIHdoZW4gY29tcGFyZWQgdG8gYW5vdGhlciBwb2ludGVyIHRoYXQgY291bGQgYWxzbyBiZSBudWxsIChvciB1bnRydXN0ZWQpLiBUaGlzIGJ1ZyBjb3VsZCBhbGxvdyBhIEJQRiBwcm9ncmFtIHRvIGJ5cGFzcyBudWxsIGNoZWNrcywgbGVhZGluZyB0byBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLiBUaGVzZSB0eXBlcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBhbmQgaW52YWxpZCBhY2Nlc3MgYnVncyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgcGFnZSBmYXVsdCBoYW5kbGluZy4gVGhlIHBhdGNoIGRvZXMgbm90IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcywgd2hpY2ggYXJlIHRoZSBzcGVjaWZpYyB0YXJnZXRzIG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowhmjkd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-22 00:42:46 +0000 UTC FinishedAt: 2026-08-22 01:40:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "669e4fa766000ae4137bb02eb22ce75ba78ad32d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "XDP_SOCKETS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "669e4fa766000ae4137bb02eb22ce75ba78ad32d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "XDP_SOCKETS" ], "series_id": "94c3e993-94a3-442e-87fb-3f9288e11fe4" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_check" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciYjMzk7cyBgY2hlY2tfY29uZF9qbXBfb3BgIGZ1bmN0aW9uIHdoZXJlIGl0IGluY29ycmVjdGx5IGluZmVycmVkIHRoYXQgYSBwb2ludGVyIHdhcyBub3QgbnVsbCB3aGVuIGNvbXBhcmVkIHRvIGFub3RoZXIgcG9pbnRlciB0aGF0IGNvdWxkIGFsc28gYmUgbnVsbCAob3IgdW50cnVzdGVkKS4gVGhpcyBidWcgY291bGQgYWxsb3cgYSBCUEYgcHJvZ3JhbSB0byBieXBhc3MgbnVsbCBjaGVja3MsIGxlYWRpbmcgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGludmFsaWQgYWNjZXNzIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MsIHdoaWNoIGFyZSB0aGUgc3BlY2lmaWMgdGFyZ2V0cyBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBhIHJlZ2lzdGVyIGNvdWxkIGJlIGluY29ycmVjdGx5IGluZmVycmVkIGFzIG5vdCBudWxsIGFmdGVyIGEgY29uZGl0aW9uYWwganVtcC4gVGhpcyBpcyBhIGNvcmUgdmVyaWZpZXIgbG9naWMgY2hhbmdlIHRoYXQgYWZmZWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdmVyaWZpY2F0aW9uLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTQ1NDk2MWUzMDM4N2Y4ZmM5NzkxZDhhNTYwNjdkYjVmYTNhMjFiY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDIyIDAxOjMzOjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggZTAzNmFlMjBiZjZiOS4uODk3ZWM0YjM4ZGVhYiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMzU1LDYgJiM0MzszNTUsOCBAQCBzdGF0aWMgYm9vbCByZWdfbm90X251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdFxuIFx0dHlwZSA9IGJhc2VfdHlwZSh0eXBlKTtcbiBcdHJldHVybiB0eXBlID09IFBUUl9UT19TT0NLRVQgfHxcbiBcdFx0dHlwZSA9PSBQVFJfVE9fVENQX1NPQ0sgfHxcbiYjNDM7XHRcdHR5cGUgPT0gUFRSX1RPX1hEUF9TT0NLIHx8XG4mIzQzO1x0XHR0eXBlID09IFBUUl9UT19CVUYgfHxcbiBcdFx0dHlwZSA9PSBQVFJfVE9fTUFQX1ZBTFVFIHx8XG4gXHRcdHR5cGUgPT0gUFRSX1RPX01BUF9LRVkgfHxcbiBcdFx0dHlwZSA9PSBQVFJfVE9fU09DS19DT01NT04gfHxcbkBAIC0xNzA4NSw3ICYjNDM7MTcwODcsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHQgKi9cbiBcdGlmICghaXNfam1wMzIgXHUwMDI2XHUwMDI2IEJQRl9TUkMoaW5zbi1cdTAwM2Vjb2RlKSA9PSBCUEZfWCBcdTAwMjZcdTAwMjZcbiBcdCAgICBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIHNyY19yZWcpIFx1MDAyNlx1MDAyNiBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIGRzdF9yZWcpIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cdTAwM2V0eXBlKSAhPSB0eXBlX21heV9iZV9udWxsKGRzdF9yZWctXHUwMDNldHlwZSkgXHUwMDI2XHUwMDI2XG4gXHQgICAgYmFzZV90eXBlKHNyY19yZWctXHUwMDNldHlwZSkgIT0gUFRSX1RPX0JURl9JRCBcdTAwMjZcdTAwMjZcbiBcdCAgICBiYXNlX3R5cGUoZHN0X3JlZy1cdTAwM2V0eXBlKSAhPSBQVFJfVE9fQlRGX0lEKSB7XG4gXHRcdGVxX2JyYW5jaF9yZWdzID0gTlVMTDtcbkBAIC0xNzEwMSw5ICYjNDM7MTcxMDIsMTEgQEAgc3RhdGljIGludCBjaGVja19jb25kX2ptcF9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHRcdGlmIChlcV9icmFuY2hfcmVncykge1xuLVx0XHRcdGlmICh0eXBlX21heV9iZV9udWxsKHNyY19yZWctXHUwMDNldHlwZSkpXG4mIzQzO1x0XHRcdC8qIHNyYyA9PSBkc3QgXHUwMDI2XHUwMDI2IGRzdCAhPSBOVUxMID1cdTAwM2Ugc3JjICE9IE5VTEwgKi9cbiYjNDM7XHRcdFx0aWYgKHJlZ19ub3RfbnVsbChlbnYsIGRzdF9yZWcpIFx1MDAyNlx1MDAyNiB0eXBlX21heV9iZV9udWxsKHNyY19yZWctXHUwMDNldHlwZSkpXG4gXHRcdFx0XHRtYXJrX3B0cl9ub3RfbnVsbF9yZWcoXHUwMDI2ZXFfYnJhbmNoX3JlZ3NbaW5zbi1cdTAwM2VzcmNfcmVnXSk7XG4tXHRcdFx0ZWxzZVxuJiM0MztcdFx0XHQvKiBzcmMgPT0gZHN0IFx1MDAyNlx1MDAyNiBzcmMgIT0gTlVMTCA9XHUwMDNlIGRzdCAhPSBOVUxMICovXG4mIzQzO1x0XHRcdGlmIChyZWdfbm90X251bGwoZW52LCBzcmNfcmVnKSBcdTAwMjZcdTAwMjYgdHlwZV9tYXlfYmVfbnVsbChkc3RfcmVnLVx1MDAzZXR5cGUpKVxuIFx0XHRcdFx0bWFya19wdHJfbm90X251bGxfcmVnKFx1MDAyNmVxX2JyYW5jaF9yZWdzW2luc24tXHUwMDNlZHN0X3JlZ10pO1xuIFx0XHR9XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jXG5pbmRleCAzZDFlOGRlNDM5MGMyLi4wODVkMTE0Njg5NmMxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLmNcbkBAIC0zLDcgJiM0MzszLDkgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9icGYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGJvb2wuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O2JwZl9taXNjLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YnBmX2tmdW5jcy5oXCYjMzQ7XG4gXG4gc3RydWN0IHtcbiBcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfWFNLTUFQKTtcbkBAIC0yNjQsNCAmIzQzOzI2Niw0NiBAQCBfX25ha2VkIHZvaWQgam5lX3JlZ19yZWdfbnVsbF9jaGVjayh2b2lkKVxuICAgICAgICAgOiBfX2Nsb2JiZXJfYWxsKTtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIEEgY29tcGFyaXNvbiBiZXR3ZWVuIFBUUl9UT19NRU0gfCBNRU1fUkRPTkxZIHwgUFRSX1VOVFJVU1RFRCBhbmRcbiYjNDM7ICogUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMIHNob3VsZCBub3QgaW5mZXIgdGhhdCBtYXAgcG9pbnRlciBpcyBub3QgbnVsbC5cbiYjNDM7ICogQSBidWcgaW4gY2hlY2tfY29uZF9qbXBfb3AoKSBtYWRlIHN1Y2ggaW5mZXJlbmNlIHBvc3NpYmxlLlxuJiM0MzsgKi9cbiYjNDM7U0VDKFwmIzM0O3Jhd190cFwmIzM0OylcbiYjNDM7X19mYWlsdXJlXG4mIzQzO19fbXNnKFwmIzM0O2Vycm9yOiBpbnZhbGlkIGRlcmVmZXJlbmNlIG9mIFIwICh4ZHBfc29ja19vcl9udWxsKVwmIzM0OylcbiYjNDM7X19tc2coXCYjMzQ7XHUwMDNlXHUwMDNlXHUwMDNlIDEwIHwgKDYxKSByMCA9ICoodTMyICopKHIwICYjNDM7MClcJiMzNDspXG4mIzQzO19fbmFrZWQgdm9pZCB1bnRydXN0ZWRfbWVtX2RvZXNfbm90X2luZmVyX21hcF92YWx1ZV9ub25fbnVsbCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcJiMzNDtcdFx0XHRcdFx0XFxcbiYjNDM7XHQvKiByOCA9IGJwZl9yZG9ubHlfY2FzdCgwLCAwKTsgKi9cdFx0XFxcbiYjNDM7XHRyMiA9IDA7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRjYWxsICVbYnBmX3Jkb25seV9jYXN0XTtcdFx0XHRcXFxuJiM0MztcdHI2ID0gcjA7XHRcdFx0XHRcdFxcXG4mIzQzO1x0LyogcjAgPSBicGZfbWFwX2xvb2t1cF9lbGVtKG1hcF9oYXNoLCBcdTAwMjZrZXkpOyAqL1x0XFxcbiYjNDM7XHQqKHU2NCAqKShyMTAgLSA4KSA9IDA7XHRcdFx0XHRcXFxuJiM0MztcdHIxID0gJVttYXBfeHNrbWFwXSBsbDtcdFx0XHRcdFxcXG4mIzQzO1x0cjIgPSByMTA7XHRcdFx0XHRcdFxcXG4mIzQzO1x0cjIgJiM0Mzs9IC04O1x0XHRcdFx0XHRcXFxuJiM0MztcdGNhbGwgJVticGZfbWFwX2xvb2t1cF9lbGVtXTtcdFx0XHRcXFxuJiM0MztcdC8qXHRcdFx0XHRcdFx0XFxcbiYjNDM7XHQgKiBidWdneSB2ZXJpZmllciBhc3N1bWVkIHRoYXQgcjYgY2FuJiMzOTt0IGJlIG51bGxcdFxcXG4mIzQzO1x0ICogYW5kIG1hcmtlZCByMCBub24tbnVsbCBhcyB3ZWxsLlx0XHRcXFxuJiM0MztcdCAqL1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0aWYgcjYgIT0gcjAgZ290byAxZjtcdFx0XHRcdFxcXG4mIzQzO1x0cjAgPSAqKHUzMiAqKShyMCAmIzQzOyAwKTtcdFx0XHRcdFxcXG4mIzQzOzE6XHRyMCA9IDA7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRleGl0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1wmIzM0O1x0OlxuJiM0MztcdDogX19pbW0oYnBmX3Jkb25seV9jYXN0KSxcbiYjNDM7XHQgIF9faW1tKGJwZl9tYXBfbG9va3VwX2VsZW0pLFxuJiM0MztcdCAgX19pbW1fYWRkcihtYXBfeHNrbWFwKVxuJiM0MztcdDogX19jbG9iYmVyX2FsbCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQga2Z1bmNfcm9vdCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YnBmX3Jkb25seV9jYXN0KDAsIDApO1xuJiM0Mzt9XG4mIzQzO1xuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXCYjMzQ7bGljZW5zZVwmIzM0OykgPSBcJiMzNDtHUExcJiMzNDs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgYSByZWdpc3RlciBjb3VsZCBiZSBpbmNvcnJlY3RseSBpbmZlcnJlZCBhcyBub3QgbnVsbCBhZnRlciBhIGNvbmRpdGlvbmFsIGp1bXAuIFRoaXMgaXMgYSBjb3JlIHZlcmlmaWVyIGxvZ2ljIGNoYW5nZSB0aGF0IGFmZmVjdHMgcHJvZ3JhbSBzYWZldHkgYW5kIHZlcmlmaWNhdGlvbiwgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU0NTQ5NjFlMzAzODdmOGZjOTc5MWQ4YTU2MDY3ZGI1ZmEzYTIxYmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAyMiAwMTozMzoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCBlMDM2YWUyMGJmNmI5Li44OTdlYzRiMzhkZWFiIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC0zNTUsNiAmIzQzOzM1NSw4IEBAIHN0YXRpYyBib29sIHJlZ19ub3RfbnVsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0CiAJdHlwZSA9IGJhc2VfdHlwZSh0eXBlKTsKIAlyZXR1cm4gdHlwZSA9PSBQVFJfVE9fU09DS0VUIHx8CiAJCXR5cGUgPT0gUFRSX1RPX1RDUF9TT0NLIHx8CiYjNDM7CQl0eXBlID09IFBUUl9UT19YRFBfU09DSyB8fAomIzQzOwkJdHlwZSA9PSBQVFJfVE9fQlVGIHx8CiAJCXR5cGUgPT0gUFRSX1RPX01BUF9WQUxVRSB8fAogCQl0eXBlID09IFBUUl9UT19NQVBfS0VZIHx8CiAJCXR5cGUgPT0gUFRSX1RPX1NPQ0tfQ09NTU9OIHx8CkBAIC0xNzA4NSw3ICYjNDM7MTcwODcsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJICovCiAJaWYgKCFpc19qbXAzMiAmYW1wOyZhbXA7IEJQRl9TUkMoaW5zbi0mZ3Q7Y29kZSkgPT0gQlBGX1ggJmFtcDsmYW1wOwogCSAgICBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIHNyY19yZWcpICZhbXA7JmFtcDsgX19pc19wb2ludGVyX3ZhbHVlKGZhbHNlLCBkc3RfcmVnKSAmYW1wOyZhbXA7Ci0JICAgIHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy0mZ3Q7dHlwZSkgIT0gdHlwZV9tYXlfYmVfbnVsbChkc3RfcmVnLSZndDt0eXBlKSAmYW1wOyZhbXA7CiAJICAgIGJhc2VfdHlwZShzcmNfcmVnLSZndDt0eXBlKSAhPSBQVFJfVE9fQlRGX0lEICZhbXA7JmFtcDsKIAkgICAgYmFzZV90eXBlKGRzdF9yZWctJmd0O3R5cGUpICE9IFBUUl9UT19CVEZfSUQpIHsKIAkJZXFfYnJhbmNoX3JlZ3MgPSBOVUxMOwpAQCAtMTcxMDEsOSAmIzQzOzE3MTAyLDExIEBAIHN0YXRpYyBpbnQgY2hlY2tfY29uZF9qbXBfb3Aoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJCWJyZWFrOwogCQl9CiAJCWlmIChlcV9icmFuY2hfcmVncykgewotCQkJaWYgKHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy0mZ3Q7dHlwZSkpCiYjNDM7CQkJLyogc3JjID09IGRzdCAmYW1wOyZhbXA7IGRzdCAhPSBOVUxMID0mZ3Q7IHNyYyAhPSBOVUxMICovCiYjNDM7CQkJaWYgKHJlZ19ub3RfbnVsbChlbnYsIGRzdF9yZWcpICZhbXA7JmFtcDsgdHlwZV9tYXlfYmVfbnVsbChzcmNfcmVnLSZndDt0eXBlKSkKIAkJCQltYXJrX3B0cl9ub3RfbnVsbF9yZWcoJmFtcDtlcV9icmFuY2hfcmVnc1tpbnNuLSZndDtzcmNfcmVnXSk7Ci0JCQllbHNlCiYjNDM7CQkJLyogc3JjID09IGRzdCAmYW1wOyZhbXA7IHNyYyAhPSBOVUxMID0mZ3Q7IGRzdCAhPSBOVUxMICovCiYjNDM7CQkJaWYgKHJlZ19ub3RfbnVsbChlbnYsIHNyY19yZWcpICZhbXA7JmFtcDsgdHlwZV9tYXlfYmVfbnVsbChkc3RfcmVnLSZndDt0eXBlKSkKIAkJCQltYXJrX3B0cl9ub3RfbnVsbF9yZWcoJmFtcDtlcV9icmFuY2hfcmVnc1tpbnNuLSZndDtkc3RfcmVnXSk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLmMKaW5kZXggM2QxZThkZTQzOTBjMi4uMDg1ZDExNDY4OTZjMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuYwpAQCAtMyw3ICYjNDM7Myw5IEBACiAKICNpbmNsdWRlICZsdDtsaW51eC9icGYuaCZndDsKICNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3RkYm9vbC5oJmd0OwogI2luY2x1ZGUgJiMzNDticGZfbWlzYy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2JwZl9rZnVuY3MuaCYjMzQ7CiAKIHN0cnVjdCB7CiAJX191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9YU0tNQVApOwpAQCAtMjY0LDQgJiM0MzsyNjYsNDYgQEAgX19uYWtlZCB2b2lkIGpuZV9yZWdfcmVnX251bGxfY2hlY2sodm9pZCkKICAgICAgICAgOiBfX2Nsb2JiZXJfYWxsKTsKIH0KIAomIzQzOy8qCiYjNDM7ICogQSBjb21wYXJpc29uIGJldHdlZW4gUFRSX1RPX01FTSB8IE1FTV9SRE9OTFkgfCBQVFJfVU5UUlVTVEVEIGFuZAomIzQzOyAqIFBUUl9UT19NQVBfVkFMVUVfT1JfTlVMTCBzaG91bGQgbm90IGluZmVyIHRoYXQgbWFwIHBvaW50ZXIgaXMgbm90IG51bGwuCiYjNDM7ICogQSBidWcgaW4gY2hlY2tfY29uZF9qbXBfb3AoKSBtYWRlIHN1Y2ggaW5mZXJlbmNlIHBvc3NpYmxlLgomIzQzOyAqLwomIzQzO1NFQygmIzM0O3Jhd190cCYjMzQ7KQomIzQzO19fZmFpbHVyZQomIzQzO19fbXNnKCYjMzQ7ZXJyb3I6IGludmFsaWQgZGVyZWZlcmVuY2Ugb2YgUjAgKHhkcF9zb2NrX29yX251bGwpJiMzNDspCiYjNDM7X19tc2coJiMzNDsmZ3Q7Jmd0OyZndDsgMTAgfCAoNjEpIHIwID0gKih1MzIgKikocjAgJiM0MzswKSYjMzQ7KQomIzQzO19fbmFrZWQgdm9pZCB1bnRydXN0ZWRfbWVtX2RvZXNfbm90X2luZmVyX21hcF92YWx1ZV9ub25fbnVsbCh2b2lkKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlICgmIzM0OwkJCQkJXAomIzQzOwkvKiByOCA9IGJwZl9yZG9ubHlfY2FzdCgwLCAwKTsgKi8JCVwKJiM0MzsJcjIgPSAwOwkJCQkJCVwKJiM0MzsJY2FsbCAlW2JwZl9yZG9ubHlfY2FzdF07CQkJXAomIzQzOwlyNiA9IHIwOwkJCQkJXAomIzQzOwkvKiByMCA9IGJwZl9tYXBfbG9va3VwX2VsZW0obWFwX2hhc2gsICZhbXA7a2V5KTsgKi8JXAomIzQzOwkqKHU2NCAqKShyMTAgLSA4KSA9IDA7CQkJCVwKJiM0MzsJcjEgPSAlW21hcF94c2ttYXBdIGxsOwkJCQlcCiYjNDM7CXIyID0gcjEwOwkJCQkJXAomIzQzOwlyMiAmIzQzOz0gLTg7CQkJCQlcCiYjNDM7CWNhbGwgJVticGZfbWFwX2xvb2t1cF9lbGVtXTsJCQlcCiYjNDM7CS8qCQkJCQkJXAomIzQzOwkgKiBidWdneSB2ZXJpZmllciBhc3N1bWVkIHRoYXQgcjYgY2FuJiMzOTt0IGJlIG51bGwJXAomIzQzOwkgKiBhbmQgbWFya2VkIHIwIG5vbi1udWxsIGFzIHdlbGwuCQlcCiYjNDM7CSAqLwkJCQkJCVwKJiM0MzsJaWYgcjYgIT0gcjAgZ290byAxZjsJCQkJXAomIzQzOwlyMCA9ICoodTMyICopKHIwICYjNDM7IDApOwkJCQlcCiYjNDM7MToJcjAgPSAwOwkJCQkJCVwKJiM0MzsJZXhpdDsJCQkJCQlcCiYjNDM7JiMzNDsJOgomIzQzOwk6IF9faW1tKGJwZl9yZG9ubHlfY2FzdCksCiYjNDM7CSAgX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksCiYjNDM7CSAgX19pbW1fYWRkcihtYXBfeHNrbWFwKQomIzQzOwk6IF9fY2xvYmJlcl9hbGwpOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIGtmdW5jX3Jvb3Qodm9pZCkKJiM0Mzt7CiYjNDM7CWJwZl9yZG9ubHlfY2FzdCgwLCAwKTsKJiM0Mzt9CiYjNDM7CiBjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNzgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBCUEYgdmVyaWZpZXIsIHNwZWNpZmljYWxseSBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhleSYjMzk7dmUgbWFkZSBhIHRhcmdldGVkIGNoYW5nZSB0byB0aGUgYGNoZWNrX2NvbmRfam1wX29wYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBkaXJlY3QgY29tcGFyaXNvbiBgdHlwZV9tYXlfYmVfbnVsbChzcmNfcmVnLSZndDt0eXBlKSAhPSB0eXBlX21heV9iZV9udWxsKGRzdF9yZWctJmd0O3R5cGUpYC4gSW5zdGVhZCwgdGhleSYjMzk7cmUgbm93IGludHJvZHVjaW5nIGNoZWNrcyB1c2luZyBgcmVnX25vdF9udWxsKGVudiwgZHN0X3JlZylgIGFuZCBgcmVnX25vdF9udWxsKGVudiwgc3JjX3JlZylgIGJlZm9yZSBhc3NlcnRpbmcgdGhlIG5vbi1udWxsIHN0YXR1cyBvZiB0aGUgcmVnaXN0ZXJzLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBpdCBzZWVtcyB0aGV5JiMzOTtyZSByZWZpbmluZyB0aGUgbG9naWMgYXJvdW5kIG51bGwgcG9pbnRlciBzYWZldHkgY2hlY2tzIGluIGNvbmRpdGlvbmFsIGp1bXBzLgoKV2hhdCBjYXVnaHQgbXkgZXllIGltbWVkaWF0ZWx5IGlzIHRoZSBhZGRpdGlvbiBvZiBgUFRSX1RPX1hEUF9TT0NLYCBhbmQgYFBUUl9UT19CVUZgIHRvIGByZWdfbm90X251bGxgLiBUaGlzIGluZGljYXRlcyBhbiBpbnRlbnQgdG8gYnJvYWRlbiB0aGUgc2NvcGUgb2Ygd2hhdCB0aGUgdmVyaWZpZXIgY29uc2lkZXJzICYjMzQ7bm90IG51bGwmIzM0OyBpbiB0aGUgY29udGV4dCBvZiB0aGVzZSBzcGVjaWZpYyBwb2ludGVyIHR5cGVzLiBUaGlzIGxpa2VseSBtZWFucyB0aGV5JiMzOTtyZSBpbXByb3ZpbmcgdGhlIHZlcmlmaWNhdGlvbiBvZiBjb2RlIHRoYXQgZGVhbHMgd2l0aCBYRFAgc29ja2V0cyBhbmQgYnVmZmVyIHBvaW50ZXJzLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gc2VlLgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IGByZWdfbm90X251bGxgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiB0aGUgc2FtZSBmaWxlLiBZZXAsIGl0IGlzLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgYWxsIHNlbGYtY29udGFpbmVkIHdpdGhpbiB0aGUgYHZlcmlmaWVyLmNgIG1vZHVsZSwgc28gdGhhdCBoZWxwcyBuYXJyb3cgZG93biBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwYXRjaCYjMzk7cyBpbW1lZGlhdGUgaW1wYWN0LiBMZXQgbWUgcXVpY2tseSBmaW5kIHRoZSBgY2hlY2tfY29uZF9qbXBfb3BgIGluIHRoZSBzYW1lIGZpbGUgdG8gcXVpY2tseSByZWZlcmVuY2UgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hlY2tfY29uZF9qbXBfb3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTU4PXN0YXRpYyBib29sIGJwZl9nbG9iYWxfcGVyY3B1X21hX3NldDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTYwLSAqIFBUUl9UT19NQVBfVkFMVUUgYW5kIHRoZSBzYW1lIHJlZ2lzdGVyIGNoYW5nZXMgc3RhdGUgdG8gQ09OU1RfSU1NIGluIHRoZSBmYWxzZVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE2MTogKiBicmFuY2guIFNlZSBjaGVja19jb25kX2ptcF9vcCgpLlxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2Mi0gKlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNjg0OT1zdGF0aWMgdm9pZCBzeW5jX2xpbmtlZF9yZWdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfdmVyaWZpZXJfc3RhdGUgKnZzdGF0ZSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTY5MDMtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTY5MDQ6c3RhdGljIGludCBjaGVja19jb25kX2ptcF9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2OTA1LVx0XHRcdCAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuLCBpbnQgKmluc25faWR4KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODIxMj1zdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4Mjk4LVx0XHR9XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTgyOTk6XHRcdHJldHVybiBjaGVja19jb25kX2ptcF9vcChlbnYsIGluc24sIFx1MDAyNmVudi1cdTAwM2VpbnNuX2lkeCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTgzMDAtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI0MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRpdmVzIHJpZ2h0IGludG8gdGhlIGhlYXJ0IG9mIHRoaW5ncywgdHdlYWtpbmcgYGNoZWNrX2NvbmRfam1wX29wYCwgd2hpY2ggZ2V0cyBjYWxsZWQgYnkgYGRvX2NoZWNrX2luc25gLiBDb25zaWRlcmluZyBgZG9fY2hlY2tfaW5zbmAgaXMgd2hlcmUgdGhlIEJQRiB2ZXJpZmllciBsb2dpYyByZWFsbHkgdGFrZXMgcGxhY2UsIHRoaXMgY2hhbmdlIGlzIGRlZmluaXRlbHkgZ29pbmcgdG8gaGF2ZSBmdW5jdGlvbmFsIGNvbnNlcXVlbmNlcy4gSXQmIzM5O3Mgc2NyZWFtaW5nIGZvciBhIGZ1enppbmcgY2FtcGFpZ24gdG8gc2VlIHdoYXQgYnJlYWtzLgoKTXkgcHJpbWFyeSBmb2N1cyBoZXJlIG5lZWRzIHRvIGJlIG9uIGVpdGhlciBgZG9fY2hlY2tfaW5zbmAsIGBicGZfY2hlY2tgLCBvciBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgLiBJJiMzOTtsbCB3YW50IHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiBhbGwgb2YgdGhlbSwgYnV0IGxldCYjMzk7cyBzZWUsIGBkb19jaGVja19pbnNuYCBpcyBzdGF0aWMgc28gaXQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3Mgc2VlIHdoYXQgYGJwZl9jaGVja2AgaGFzIHRvIG9mZmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9jaGVjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTg9c3RhdGljIGJvb2wgYnBmX2dsb2JhbF9wZXJjcHVfbWFfc2V0O1xua2VybmVsL2JwZi92ZXJpZmllci5jLTU5LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjYwOi8qIGJwZl9jaGVjaygpIGlzIGEgc3RhdGljIGNvZGUgYW5hbHl6ZXIgdGhhdCB3YWxrcyBlQlBGIHByb2dyYW1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MS0gKiBpbnN0cnVjdGlvbiBieSBpbnN0cnVjdGlvbiBhbmQgdXBkYXRlcyByZWdpc3Rlci9zdGFjayBzdGF0ZS5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI2NDI9c3RhdGljIGludCBwcm9jZXNzX2tmX2FyZ19wdHJfdG9fcmJ0cmVlX25vZGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI2NTMtICogTFNNIGhvb2tzIGFuZCBpdGVycyAoYm90aCBzbGVlcGFibGUgYW5kIG5vbi1zbGVlcGFibGUpIGFyZSBzYWZlLlxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNjU0OiAqIEFueSBzbGVlcGFibGUgcHJvZ3MgYXJlIGFsc28gc2FmZSBzaW5jZSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCgpIGVuZm9yY2Vcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjY1NS0gKiB0aGVtIGNhbiBvbmx5IGJlIGF0dGFjaGVkIHRvIHNvbWUgc3BlY2lmaWMgaG9vayBwb2ludHMuXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwMDA4PXN0YXRpYyBib29sIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMDIxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMDIyOmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMDIzLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwNDQ1PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDQ3NS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDQ3NjpcdHJldCA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KFx1MDAyNmVudi1cdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFx1MDAyNnRndF9pbmZvKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDQ3Ny1cdGlmIChyZXQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwNTQ0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwNTQ1OmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDU0Ni1cdFx0XHRcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yMDk3OD1zdGF0aWMgZW51bSBicGZfc2lnX2tleXJpbmcgYnBmX2NsYXNzaWZ5X2tleXJpbmcoczMyIGtleXJpbmdfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwOTkyLS8qXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjA5OTM6ICogVmVyaWZ5IHRoZSBQS0NTIzcgc2lnbmF0dXJlIG9mIGEgbG9hZGVkIHByb2dyYW0uIENhbGxlZCBmcm9tIGJwZl9jaGVjaygpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjA5OTQtICogb25jZSB0aGUgcHJvZ3JhbSYjMzk7cyBtZXRhZGF0YSBtYXBzIGhhdmUgYmVlbiByZXNvbHZlZCBpbnRvIHVzZWRfbWFwcywgc29cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjEwMDE9c3RhdGljIGludCBicGZfcHJvZ192ZXJpZnlfc2lnbmF0dXJlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTE3LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjIxMTE4OmludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTE5LVx0ICAgICAgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTMyLVx0LyogJiMzOTtzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiYjMzk7IGNhbiBiZSBnbG9iYWwsIGJ1dCBzaW5jZSBpdCYjMzk7cyBub3Qgc21hbGwsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjExMzM6XHQgKiBhbGxvY2F0ZS9mcmVlIGl0IGV2ZXJ5IHRpbWUgYnBmX2NoZWNrKCkgaXMgY2FsbGVkXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExMzQtXHQgKi9cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjEyNDMtXHQvKiBWYWxpZGF0ZSBCVEYgYWdhaW5zdCB0aGUgY29tcGxldGUgc3VicHJvZ3JhbSBsYXlvdXQgYW5kIGFwcGx5IENPLVJFLiAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjIxMjQ0Olx0cmV0ID0gYnBmX2NoZWNrX2J0Zl9pbmZvKGVudiwgYXR0ciwgdWF0dHIpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMjQ1LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjEyNjMtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjEyNjQ6XHRyZXQgPSBicGZfY2hlY2tfY2ZnKGVudik7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjEyNjUtXHRpZiAocmV0IFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2ODgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBFbnRyeSBQb2ludCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBCUEYgdmVyaWZpZXIuIGBicGZfY2hlY2tgIGlzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50OyBpdCYjMzk7cyB0aGUgbWFpbiBlbnRyeS4gVGhhdCYjMzk7cyB3aGVyZSBldmVyeXRoaW5nIGtpY2tzIG9mZi4gRmlyc3QgdGhpbmcmIzM5O3MgZmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBvYnZpb3VzIG9uZSwgc28gSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk2OAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGFyZWE6CgoqKkNoZWNraW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYSBOZXcgWERQIFNvY2tldCBGZWF0dXJlKioKCkFscmlnaHQsIHNvIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBQVFJfVE9fWERQX1NPQ0tgIHRvIGByZWdfbm90X251bGxgLiBJbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byB0aGUgZGVwZW5kZW5jaWVzLiBUaGlzIGNoYW5nZSBsaWtlbHkgaGluZ2VzIG9uIGBDT05GSUdfWERQX1NPQ0tFVFNgLiBJIGNhbiYjMzk7dCBiZSBzdXJlIHdpdGhvdXQgZGlnZ2luZyBkZWVwZXIsIGJ1dCB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIGxpbmssIGlzbiYjMzk7dCBpdD8gQWRkaW5nIHRoYXQgY2hlY2sgaXMgdGhlICpmaXJzdCogdGhpbmcgSSBoYXZlIHRvIGRvLiBMZXQmIzM5O3Mgc2VlIGlmIG15IHN1c3BpY2lvbnMgYXJlIGNvcnJlY3QuIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50LiBJZiBpdCBpcywgdGhpcyBpcyBhIGNsZWFuIGFuZCByZWFzb25hYmxlIGNoYW5nZS4gQnV0IEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY29uZmlybSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UFRSX1RPX1hEUF9TT0NLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmLmg9MTA0OD1lbnVtIGJwZl9yZWdfdHlwZSB7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0xMDYzLVx0UFRSX1RPX1RQX0JVRkZFUixcdCAvKiByZWcgcG9pbnRzIHRvIGEgd3JpdGFibGUgcmF3IHRwJiMzOTtzIGJ1ZmZlciAqL1xuaW5jbHVkZS9saW51eC9icGYuaDoxMDY0Olx0UFRSX1RPX1hEUF9TT0NLLFx0IC8qIHJlZyBwb2ludHMgdG8gc3RydWN0IHhkcF9zb2NrICovXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEwNjUtXHQvKiBQVFJfVE9fQlRGX0lEIHBvaW50cyB0byBhIGtlcm5lbCBzdHJ1Y3QgdGhhdCBkb2VzIG5vdCBuZWVkXG4tLVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaD0xNDA2PXN0YXRpYyBpbmxpbmUgYm9vbCB0eXBlX2lzX3NrX3BvaW50ZXIoZW51bSBicGZfcmVnX3R5cGUgdHlwZSlcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0MTAtXHRcdHR5cGUgPT0gUFRSX1RPX1RDUF9TT0NLIHx8XG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oOjE0MTE6XHRcdHR5cGUgPT0gUFRSX1RPX1hEUF9TT0NLO1xuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDEyLX1cbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jPTc0MT1pbnQgYnBmX2NvbnZlcnRfY3R4X2FjY2Vzc2VzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy05MjEtXHRcdFx0YnJlYWs7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjkyMjpcdFx0Y2FzZSBQVFJfVE9fWERQX1NPQ0s6XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTkyMy1cdFx0XHRjb252ZXJ0X2N0eF9hY2Nlc3MgPSBicGZfeGRwX3NvY2tfY29udmVydF9jdHhfYWNjZXNzO1xuLS1cbmtlcm5lbC9icGYvbG9nLmM9Mzk5PWNvbnN0IGNoYXIgKnJlZ190eXBlX3N0cihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBlbnVtIGJwZl9yZWdfdHlwZSB0eXBlKVxuLS1cbmtlcm5lbC9icGYvbG9nLmMtNDE2LVx0XHRbUFRSX1RPX1RQX0JVRkZFUl1cdD0gXCYjMzQ7dHBfYnVmZmVyXCYjMzQ7LFxua2VybmVsL2JwZi9sb2cuYzo0MTc6XHRcdFtQVFJfVE9fWERQX1NPQ0tdXHQ9IFwmIzM0O3hkcF9zb2NrXCYjMzQ7LFxua2VybmVsL2JwZi9sb2cuYy00MTgtXHRcdFtQVFJfVE9fQlRGX0lEXVx0XHQ9IFwmIzM0O3B0cl9cJiMzNDssXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTM0Nz1zdGF0aWMgYm9vbCByZWdfbm90X251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzU3LVx0XHR0eXBlID09IFBUUl9UT19UQ1BfU09DSyB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjM1ODpcdFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0sgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0zNTktXHRcdHR5cGUgPT0gUFRSX1RPX0JVRiB8fFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTU1PXN0YXRpYyB2b2lkIHJlZmluZV9tYXBfbG9va3VwX3ZhbHVlKHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjktXHR9IGVsc2UgaWYgKG1hcC1cdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfWFNLTUFQKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3MDpcdFx0cmVnLVx1MDAzZXR5cGUgPSBQVFJfVE9fWERQX1NPQ0sgfCBtYXliZV9udWxsO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzEtXHR9IGVsc2UgaWYgKG1hcC1cdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfU09DS01BUCB8fFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01MDAwPXN0YXRpYyBpbnQgY2hlY2tfc29ja19hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MDIyLVx0XHRicmVhaztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MDIzOlx0Y2FzZSBQVFJfVE9fWERQX1NPQ0s6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTAyNC1cdFx0dmFsaWQgPSBicGZfeGRwX3NvY2tfaXNfdmFsaWRfYWNjZXNzKG9mZiwgc2l6ZSwgdCwgXHUwMDI2aW5mbyk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTUyMzQ9c3RhdGljIGludCBjaGVja19wdHJfYWxpZ25tZW50KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTUyNzgtXHRcdGJyZWFrO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjUyNzk6XHRjYXNlIFBUUl9UT19YRFBfU09DSzpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MjgwLVx0XHRwb2ludGVyX2Rlc2MgPSBcJiMzNDt4ZHBfc29jayBcJiMzNDs7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTgxNjI9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfcmVnX3R5cGVzIHNvY2tfdHlwZXMgPSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjYtXHRcdFBUUl9UT19UQ1BfU09DSyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MTY3Olx0XHRQVFJfVE9fWERQX1NPQ0ssXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2OC1cdH0sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTgxNzI9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfcmVnX3R5cGVzIGJ0Zl9pZF9zb2NrX2NvbW1vbl90eXBlcyA9IHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE3Ni1cdFx0UFRSX1RPX1RDUF9TT0NLLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjgxNzc6XHRcdFBUUl9UT19YRFBfU09DSyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MTc4LVx0XHRQVFJfVE9fQlRGX0lELFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzk2MT1zdGF0aWMgYm9vbCByZWdfdHlwZV9taXNtYXRjaF9vayhlbnVtIGJwZl9yZWdfdHlwZSB0eXBlKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzk2Ny1cdGNhc2UgUFRSX1RPX1RDUF9TT0NLOlxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3OTY4Olx0Y2FzZSBQVFJfVE9fWERQX1NPQ0s6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc5NjktXHRjYXNlIFBUUl9UT19CVEZfSUQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NTIKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBidWcgd2l0aGluIHRoZSBgY2hlY2tfY29uZF9qbXBfb3BgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGUgdmVyaWZpZXIgd2FzIG1ha2luZyBhIGZhdWx0eSBhc3N1bXB0aW9uIGFib3V0IGEgcmVnaXN0ZXIgbm90IGJlaW5nIG51bGwsIGxlYWRpbmcgdG8gcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGNydXggb2YgdGhlIGZpeCBpcyB0byBpbmNvcnBvcmF0ZSBhIGNoZWNrIGZvciBgcmVnX25vdF9udWxsYCAqYmVmb3JlKiBhc3N1bWluZyB0aGUgb3RoZXIgcmVnaXN0ZXIgaXMgYWxzbyBub3QgbnVsbC4gVGhpcyBtYWtlcyBsb2dpY2FsIHNlbnNlOyB5b3UgaGF2ZSB0byBlbnN1cmUgdGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBtZXQgYmVmb3JlIHVzaW5nIGl0IHRvIGRlcml2ZSBhIHNlY29uZC4KClRoZSBhZGRpdGlvbiBvZiBgUFRSX1RPX1hEUF9TT0NLYCBhbmQgYFBUUl9UT19CVUZgIHRvIGByZWdfbm90X251bGxgIGlzIGludGVyZXN0aW5nLiBFeHBhbmRpbmcgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggd2UgY29uc2lkZXIgYSByZWdpc3RlciBub24tbnVsbCBpcyBhIHNpZ25pZmljYW50IG1vZGlmaWNhdGlvbiB0byB0aGUgY29yZSB2ZXJpZmllciBsb2dpYy4gR2l2ZW4gdGhlIHBvdGVudGlhbCBpbXBhY3QsIHRob3JvdWdoIGZ1enppbmcgaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQgaGVyZS4gV2UgbmVlZCB0byBiZSBjb25maWRlbnQgdGhhdCB0aGVzZSBjaGFuZ2VzIGRvbiYjMzk7dCBpbnRyb2R1Y2UgbmV3IHZ1bG5lcmFiaWxpdGllcyBvciByZWdyZXNzaW9ucy4KCkZvciBmdXp6aW5nLCBJJiMzOTtsbCB3YW50IHRvIGZvY3VzIG9uIHRoZSBgYnBmX2NoZWNrYCBzeW1ib2wuIFRoYXQmIzM5O3MgdGhlIGtleSBmdW5jdGlvbiB3ZSBuZWVkIHRvIHRhcmdldCB0byBleHBvc2UgcG90ZW50aWFsIGlzc3Vlcy4gQW5kIG9mIGNvdXJzZSwgd2UmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBgQlBGX1NZU0NBTExgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBmdXp6aW5nIHJ1bnMuCgpOb3csIGEgcXVpY2sgc2lkZSB0aG91Z2h04oCmIGxldCYjMzk7cyBzZWUsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhhdCBgUFRSX1RPX1hEUF9TT0NLYCByZXF1aXJlcyBgQ09ORklHX1hEUF9TT0NLRVRTYC4gV2UgbmVlZCB0byBiZSBhd2FyZSBvZiBkZXBlbmRlbmNpZXMgbGlrZSB0aGF0LCBvciB3ZSYjMzk7bGwgZ2V0IGZhbHNlIG5lZ2F0aXZlcy4gR290dGEgZW5zdXJlIG91ciB0ZXN0IGNvdmVyYWdlIGlzIGFjY3VyYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWERQX1NPQ0tFVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hkcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQveGRwL0tjb25maWc6Mjpjb25maWcgWERQX1NPQ0tFVFNcbm5ldC94ZHAvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtYRFAgc29ja2V0c1wmIzM0O1xuLS1cbm5ldC94ZHAvS2NvbmZpZy05LVxubmV0L3hkcC9LY29uZmlnOjEwOmNvbmZpZyBYRFBfU09DS0VUU19ESUFHXG5uZXQveGRwL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE4NQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipRdWljayBYRFAgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCB5ZXAsIGBYRFBfU09DS0VUU2AgaXMgYSBzb2xpZCBhZGRpdGlvbiBoZXJlIOKAkyBkZWZpbml0ZWx5IHRoZSByaWdodCBhcHByb2FjaCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZS4gTm93LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byBpbXBsZW1lbnRhdGlvbiwgSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHNvbWV0aGluZy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB3ZSYjMzk7cmUgZ29pbmcgdG8gbmVlZCB0byBleHBsaWNpdGx5IGNvbmZpZ3VyZSBhbnl0aGluZyBhcm91bmQgYFBUUl9UT19CVUZgLiBJIHZhZ3VlbHkgcmVjYWxsIHRoZXJlIGJlaW5nIGEgZmV3IGVkZ2UgY2FzZXMgb3Igc3VidGxlIGRlcGVuZGVuY2llcyB0aGVyZSB0aGF0IG1pZ2h0IHRyaXAgdXMgdXAgbGF0ZXIgaWYgd2UgYXJlbiYjMzk7dCBjYXJlZnVsLiBCZXR0ZXIgdG8gYmUgcHJvYWN0aXZlIGFuZCBlbnN1cmUgZXZlcnl0aGluZyYjMzk7cyBrb3NoZXIgd2l0aCB0aGF0IHBhcmFtZXRlciB1cGZyb250LiBObyBwb2ludCBpbiBoaXR0aW5nIGEgc25hZyBkb3duIHRoZSBsaW5lIGR1ZSB0byBhIG1pc3NpbmcgZmxhZyBvciBpbmNvbXBhdGlibGUgc2V0dGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UFRSX1RPX0JVRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oPTEwNDg9ZW51bSBicGZfcmVnX3R5cGUge1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMTA3Ny1cdFBUUl9UT19BUkVOQSxcbmluY2x1ZGUvbGludXgvYnBmLmg6MTA3ODpcdFBUUl9UT19CVUYsXHRcdCAvKiByZWcgcG9pbnRzIHRvIGEgcmVhZC93cml0ZSBidWZmZXIgKi9cbmluY2x1ZGUvbGludXgvYnBmLmgtMTA3OS1cdFBUUl9UT19GVU5DLFx0XHQgLyogcmVnIHBvaW50cyB0byBhIGJwZiBwcm9ncmFtIGZ1bmN0aW9uICovXG4tLVxua2VybmVsL2JwZi9idGYuYz02ODQyPWJvb2wgYnRmX2N0eF9hY2Nlc3MoaW50IG9mZiwgaW50IHNpemUsIGVudW0gYnBmX2FjY2Vzc190eXBlIHR5cGUsXG4tLVxua2VybmVsL2JwZi9idGYuYy02OTY5LVx0XHQgICAgKHR5cGUgPT0gUFRSX1RPX0FSRU5BIHx8XG5rZXJuZWwvYnBmL2J0Zi5jOjY5NzA6XHRcdCAgICAgKHR5cGUgPT0gUFRSX1RPX0JVRiBcdTAwMjZcdTAwMjYgKGZsYWcgXHUwMDI2IFBUUl9NQVlCRV9OVUxMKSkpKSB7XG5rZXJuZWwvYnBmL2J0Zi5jLTY5NzEtXHRcdFx0aW5mby1cdTAwM2VyZWdfdHlwZSA9IGN0eF9hcmdfaW5mby1cdTAwM2VyZWdfdHlwZTtcbi0tXG5rZXJuZWwvYnBmL2xvZy5jPTM5OT1jb25zdCBjaGFyICpyZWdfdHlwZV9zdHIoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgZW51bSBicGZfcmVnX3R5cGUgdHlwZSlcbi0tXG5rZXJuZWwvYnBmL2xvZy5jLTQyMC1cdFx0W1BUUl9UT19BUkVOQV1cdFx0PSBcJiMzNDthcmVuYVwmIzM0Oyxcbmtlcm5lbC9icGYvbG9nLmM6NDIxOlx0XHRbUFRSX1RPX0JVRl1cdFx0PSBcJiMzNDtidWZcJiMzNDssXG5rZXJuZWwvYnBmL2xvZy5jLTQyMi1cdFx0W1BUUl9UT19GVU5DXVx0XHQ9IFwmIzM0O2Z1bmNcJiMzNDssXG4tLVxua2VybmVsL2JwZi9tYXBfaXRlci5jPTE3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9pdGVyX3JlZyBicGZfbWFwX2VsZW1fcmVnX2luZm8gPSB7XG4tLVxua2VybmVsL2JwZi9tYXBfaXRlci5jLTE4MC1cdFx0eyBvZmZzZXRvZihzdHJ1Y3QgYnBmX2l0ZXJfX2JwZl9tYXBfZWxlbSwga2V5KSxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYzoxODE6XHRcdCAgUFRSX1RPX0JVRiB8IFBUUl9NQVlCRV9OVUxMIHwgTUVNX1JET05MWSB9LFxua2VybmVsL2JwZi9tYXBfaXRlci5jLTE4Mi1cdFx0eyBvZmZzZXRvZihzdHJ1Y3QgYnBmX2l0ZXJfX2JwZl9tYXBfZWxlbSwgdmFsdWUpLFxua2VybmVsL2JwZi9tYXBfaXRlci5jOjE4MzpcdFx0ICBQVFJfVE9fQlVGIHwgUFRSX01BWUJFX05VTEwgfSxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYy0xODQtXHR9LFxuLS1cbmtlcm5lbC9icGYvc3RhdGVzLmM9NTA3PXN0YXRpYyBib29sIHJlZ3NhZmUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJvbGQsXG4tLVxua2VybmVsL2JwZi9zdGF0ZXMuYy02MTItXHRjYXNlIFBUUl9UT19NRU06XG5rZXJuZWwvYnBmL3N0YXRlcy5jOjYxMzpcdGNhc2UgUFRSX1RPX0JVRjpcbmtlcm5lbC9icGYvc3RhdGVzLmMtNjE0LVx0Y2FzZSBQVFJfVE9fVFBfQlVGRkVSOlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0zNDc9c3RhdGljIGJvb2wgcmVnX25vdF9udWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTM1OC1cdFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0sgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzozNTk6XHRcdHR5cGUgPT0gUFRSX1RPX0JVRiB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jLTM2MC1cdFx0dHlwZSA9PSBQVFJfVE9fTUFQX1ZBTFVFIHx8XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTY0MTY9c3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjYwMC1cdFx0XHRcdFx0ICAgICAgdmFsdWVfcmVnbm8pO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjY2MDE6XHR9IGVsc2UgaWYgKGJhc2VfdHlwZShyZWctXHUwMDNldHlwZSkgPT0gUFRSX1RPX0JVRiBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NjAyLVx0XHQgICAhdHlwZV9tYXlfYmVfbnVsbChyZWctXHUwMDNldHlwZSkpIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzAzNj1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTcwNzUtXHRcdFx0XHRcdCAgICAgICB6ZXJvX3NpemVfYWxsb3dlZCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NzA3NjpcdGNhc2UgUFRSX1RPX0JVRjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03MDc3LVx0XHRpZiAodHlwZV9pc19yZG9ubHlfbWVtKHJlZy1cdTAwM2V0eXBlKSkge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04MTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3JlZ190eXBlcyBtZW1fdHlwZXMgPSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxOTMtXHRcdFBUUl9UT19NRU0gfCBNRU1fUklOR0JVRixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MTk0Olx0XHRQVFJfVE9fQlVGLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxOTUtXHRcdFBUUl9UT19CVEZfSUQgfCBQVFJfVFJVU1RFRCxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODUxMj1zdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTU1LVx0Y2FzZSBQVFJfVE9fTUVNIHwgTUVNX1JJTkdCVUY6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODU1NjpcdGNhc2UgUFRSX1RPX0JVRjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NTU3Olx0Y2FzZSBQVFJfVE9fQlVGIHwgTUVNX1JET05MWTpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTU4LVx0Y2FzZSBQVFJfVE9fQVJFTkE6XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE0NTYwPXN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDYyNy1cdGNhc2UgUFRSX1RPX01FTTpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDYyODpcdGNhc2UgUFRSX1RPX0JVRjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDYyOS1cdGNhc2UgUFRSX1RPX0ZVTkM6XG4tLVxubmV0L2NvcmUvYnBmX3NrX3N0b3JhZ2UuYz04OTg9c3RhdGljIHN0cnVjdCBicGZfaXRlcl9yZWcgYnBmX3NrX3N0b3JhZ2VfbWFwX3JlZ19pbmZvID0ge1xuLS1cbm5ldC9jb3JlL2JwZl9za19zdG9yYWdlLmMtOTA4LVx0XHR7IG9mZnNldG9mKHN0cnVjdCBicGZfaXRlcl9fYnBmX3NrX3N0b3JhZ2VfbWFwLCB2YWx1ZSksXG5uZXQvY29yZS9icGZfc2tfc3RvcmFnZS5jOjkwOTpcdFx0ICBQVFJfVE9fQlVGIHwgUFRSX01BWUJFX05VTEwgfSxcbm5ldC9jb3JlL2JwZl9za19zdG9yYWdlLmMtOTEwLVx0fSxcbi0tXG5uZXQvY29yZS9zb2NrX21hcC5jPTE5NzE9c3RhdGljIHN0cnVjdCBicGZfaXRlcl9yZWcgc29ja19tYXBfaXRlcl9yZWcgPSB7XG4tLVxubmV0L2NvcmUvc29ja19tYXAuYy0xOTc5LVx0XHR7IG9mZnNldG9mKHN0cnVjdCBicGZfaXRlcl9fc29ja21hcCwga2V5KSxcbm5ldC9jb3JlL3NvY2tfbWFwLmM6MTk4MDpcdFx0ICBQVFJfVE9fQlVGIHwgUFRSX01BWUJFX05VTEwgfCBNRU1fUkRPTkxZIH0sXG5uZXQvY29yZS9zb2NrX21hcC5jLTE5ODEtXHRcdHsgb2Zmc2V0b2Yoc3RydWN0IGJwZl9pdGVyX19zb2NrbWFwLCBzayksXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJfYnVmX251bGxfZmFpbC5jPTg9Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYy05LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJfYnVmX251bGxfZmFpbC5jOjEwOi8qIFZlcmlmeSB0aGF0IHRoZSB2ZXJpZmllciByZWplY3RzIGRpcmVjdCBhY2Nlc3MgdG8gbnVsbGFibGUgUFRSX1RPX0JVRi4gKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYy0xMS1TRUMoXCYjMzQ7aXRlci9icGZfbWFwX2VsZW1cJiMzNDspXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJfYnVmX251bGxfZmFpbC5jPTEzPWludCBpdGVyX2J1Zl9udWxsX2RlcmVmKHN0cnVjdCBicGZfaXRlcl9fYnBmX21hcF9lbGVtICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJfYnVmX251bGxfZmFpbC5jLTE1LVx0LypcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYzoxNjpcdCAqIGN0eC1cdTAwM2VrZXkgaXMgUFRSX1RPX0JVRiB8IFBUUl9NQVlCRV9OVUxMIHwgTUVNX1JET05MWS5cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYy0xNy1cdCAqIERpcmVjdCBhY2Nlc3Mgd2l0aG91dCBudWxsIGNoZWNrIG11c3QgYmUgcmVqZWN0ZWQuXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3B0cl90b19idWYuYz03PVNFQyhcJiMzNDtpdGVyL2JwZl9tYXBfZWxlbVwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wdHJfdG9fYnVmLmM6ODpfX2Rlc2NyaXB0aW9uKFwmIzM0O1BUUl9UT19CVUY6IHJlamVjdCBuZWdhdGl2ZSBjb25zdCBvZmZzZXRcJiMzNDspXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHRyX3RvX2J1Zi5jLTktX19mYWlsdXJlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTk5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBGaXgqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwcmV0dHkgZnVuZGFtZW50YWwgaXNzdWUgaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWJvdXQgYSByZWdpc3RlciBiZWluZyBpbmNvcnJlY3RseSBhc3Nlc3NlZCBhcyBub24tbnVsbCBhZnRlciBhIGNvbmRpdGlvbmFsIGp1bXAuIFRoaXMga2luZCBvZiB2ZXJpZmllciBsb2dpYyBjaGFuZ2UgaXMgc2VyaW91czsgaXQgaW1wYWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdGhlIHJlbGlhYmlsaXR5IG9mIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBpdHNlbGYuIFNvLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcuCgpNeSB0aGlua2luZyBpcyB0aGF0IGBCUEZfU1lTQ0FMTGAgc2VlbXMgbGlrZSBhIHN1ZmZpY2llbnQgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIGZvciB0ZXN0aW5nLiBJdCBhcHBlYXJzIHRoYXQgYFBUUl9UT19CVUZgIGlzIHJlbGV2YW50IGJlY2F1c2Ugb2YgaXRzIHVzZSBpbiBpdGVyYXRvcnMuCgpOb3csIHJlZ2FyZGluZyB0aGUgZm9jdXMgc3ltYm9scywgSSBpbml0aWFsbHkgaGFkIGBicGZfY2hlY2tgIGluIG1pbmQuIEJ1dCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBgYnBmX2NoZWNrYCBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIHZlcmlmaWVyLCBzbyBpdCBtYWtlcyBzZW5zZSBhcyBhIHN0YXJ0aW5nIHBvaW50LiBgY2hlY2tfY29uZF9qbXBfb3BgIGFuZCBgZG9fY2hlY2tfaW5zbmAgYXJlIGJvdGggc3RhdGljIGZ1bmN0aW9ucywgc28gSSBjYW4mIzM5O3QgZGlyZWN0bHkgdGFyZ2V0IHRoZW0uIEhvd2V2ZXIsIGBicGZfY2hlY2tgIGlzIGV4cG9ydGVkIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgbm9uLXN0YXRpYy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgYnBmX2NoZWNrYCBpc24mIzM5O3Qgc3RhdGljLiBJdCYjMzk7cyB0aGUgbW9zdCBhcHByb3ByaWF0ZSB0YXJnZXQgaWYgaXQgaXNuJiMzOTt0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgYnBmX2NoZWNrXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0yMTAwMT1zdGF0aWMgaW50IGJwZl9wcm9nX3ZlcmlmeV9zaWduYXR1cmUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExMTctXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjExMTg6aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExMTktXHQgICAgICBzdHJ1Y3QgYnBmX2xvZ19hdHRyICphdHRyX2xvZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNjgKCQkJCQkJCW91dHB1dDogMTAyCgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQ2hlY2tpbmcgQlBGIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIGBicGZfY2hlY2tgIGlzIGNvbmZpcm1lZCBhcyBub24tc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIE5vdywgbGV0IG1lIHRoaW5rIHRocm91Z2ggdGhlIHJlbGF0ZWQga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgYmlnIG9uZSwgdGhlIGNvcmUsIHRoZSBmb3VuZGF0aW9uYWwgc2V0dGluZyB0aGF0JiMzOTtzIGFsbW9zdCBhbHdheXMgbmVjZXNzYXJ5LiBCZXlvbmQgdGhhdCwgSSBuZWVkIHRvIGNvbnNpZGVyIG90aGVycy4gQWggeWVzLCBgQ09ORklHX1hEUF9TT0NLRVRTYCAtIHRoYXQmIzM5O3MgcmVsZXZhbnQsIGVzcGVjaWFsbHkgaWYgSSYjMzk7bSBkZWFsaW5nIHdpdGggYFBUUl9UT19YRFBfU09DS2AuIFRoYXQmIzM5O3MgYSBrZXkgY29uc2lkZXJhdGlvbi4gVGhlbiB0aGVyZSYjMzk7cyBgQ09ORklHX0JQRl9KSVRgLiBJdCYjMzk7cyBwb3RlbnRpYWxseSB1c2VmdWwsIGJ1dCBub3QgYXMgY3JpdGljYWwgYXMgdGhlIG1haW4gYEJQRl9TWVNDQUxMYC4gVWx0aW1hdGVseSwgSSB0aGluayBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgZXNzZW50aWFsIG9uZSB0byBmb2N1cyBvbi4gT2theSwgbGV0JiMzOTtzIG1vdmUgZm9yd2FyZCBieSBjYWxsaW5nIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7WERQX1NPQ0tFVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBhIHJlZ2lzdGVyIGNvdWxkIGJlIGluY29ycmVjdGx5IGluZmVycmVkIGFzIG5vdCBudWxsIGFmdGVyIGEgY29uZGl0aW9uYWwganVtcC4gVGhpcyBpcyBhIGNvcmUgdmVyaWZpZXIgbG9naWMgY2hhbmdlIHRoYXQgYWZmZWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdmVyaWZpY2F0aW9uLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIGEgcmVnaXN0ZXIgY291bGQgYmUgaW5jb3JyZWN0bHkgaW5mZXJyZWQgYXMgbm90IG51bGwgYWZ0ZXIgYSBjb25kaXRpb25hbCBqdW1wLiBUaGlzIGlzIGEgY29yZSB2ZXJpZmllciBsb2dpYyBjaGFuZ2UgdGhhdCBhZmZlY3RzIHByb2dyYW0gc2FmZXR5IGFuZCB2ZXJpZmljYXRpb24sIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDE6MzY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciYjMzk7cyBgY2hlY2tfY29uZF9qbXBfb3BgIGZ1bmN0aW9uIHdoZXJlIGl0IGluY29ycmVjdGx5IGluZmVycmVkIHRoYXQgYSBwb2ludGVyIHdhcyBub3QgbnVsbCB3aGVuIGNvbXBhcmVkIHRvIGFub3RoZXIgcG9pbnRlciB0aGF0IGNvdWxkIGFsc28gYmUgbnVsbCAob3IgdW50cnVzdGVkKS4gVGhpcyBidWcgY291bGQgYWxsb3cgYSBCUEYgcHJvZ3JhbSB0byBieXBhc3MgbnVsbCBjaGVja3MsIGxlYWRpbmcgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGludmFsaWQgYWNjZXNzIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MsIHdoaWNoIGFyZSB0aGUgc3BlY2lmaWMgdGFyZ2V0cyBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTQ1NDk2MWUzMDM4N2Y4ZmM5NzkxZDhhNTYwNjdkYjVmYTNhMjFiYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDIyIDAxOjMzOjEyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IGUwMzZhZTIwYmY2YjkuLjg5N2VjNGIzOGRlYWIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTM1NSw2ICYjNDM7MzU1LDggQEAgc3RhdGljIGJvb2wgcmVnX25vdF9udWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXQKIAl0eXBlID0gYmFzZV90eXBlKHR5cGUpOwogCXJldHVybiB0eXBlID09IFBUUl9UT19TT0NLRVQgfHwKIAkJdHlwZSA9PSBQVFJfVE9fVENQX1NPQ0sgfHwKJiM0MzsJCXR5cGUgPT0gUFRSX1RPX1hEUF9TT0NLIHx8CiYjNDM7CQl0eXBlID09IFBUUl9UT19CVUYgfHwKIAkJdHlwZSA9PSBQVFJfVE9fTUFQX1ZBTFVFIHx8CiAJCXR5cGUgPT0gUFRSX1RPX01BUF9LRVkgfHwKIAkJdHlwZSA9PSBQVFJfVE9fU09DS19DT01NT04gfHwKQEAgLTE3MDg1LDcgJiM0MzsxNzA4Nyw2IEBAIHN0YXRpYyBpbnQgY2hlY2tfY29uZF9qbXBfb3Aoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkgKi8KIAlpZiAoIWlzX2ptcDMyICZhbXA7JmFtcDsgQlBGX1NSQyhpbnNuLSZndDtjb2RlKSA9PSBCUEZfWCAmYW1wOyZhbXA7CiAJICAgIF9faXNfcG9pbnRlcl92YWx1ZShmYWxzZSwgc3JjX3JlZykgJmFtcDsmYW1wOyBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIGRzdF9yZWcpICZhbXA7JmFtcDsKLQkgICAgdHlwZV9tYXlfYmVfbnVsbChzcmNfcmVnLSZndDt0eXBlKSAhPSB0eXBlX21heV9iZV9udWxsKGRzdF9yZWctJmd0O3R5cGUpICZhbXA7JmFtcDsKIAkgICAgYmFzZV90eXBlKHNyY19yZWctJmd0O3R5cGUpICE9IFBUUl9UT19CVEZfSUQgJmFtcDsmYW1wOwogCSAgICBiYXNlX3R5cGUoZHN0X3JlZy0mZ3Q7dHlwZSkgIT0gUFRSX1RPX0JURl9JRCkgewogCQllcV9icmFuY2hfcmVncyA9IE5VTEw7CkBAIC0xNzEwMSw5ICYjNDM7MTcxMDIsMTEgQEAgc3RhdGljIGludCBjaGVja19jb25kX2ptcF9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQkJYnJlYWs7CiAJCX0KIAkJaWYgKGVxX2JyYW5jaF9yZWdzKSB7Ci0JCQlpZiAodHlwZV9tYXlfYmVfbnVsbChzcmNfcmVnLSZndDt0eXBlKSkKJiM0MzsJCQkvKiBzcmMgPT0gZHN0ICZhbXA7JmFtcDsgZHN0ICE9IE5VTEwgPSZndDsgc3JjICE9IE5VTEwgKi8KJiM0MzsJCQlpZiAocmVnX25vdF9udWxsKGVudiwgZHN0X3JlZykgJmFtcDsmYW1wOyB0eXBlX21heV9iZV9udWxsKHNyY19yZWctJmd0O3R5cGUpKQogCQkJCW1hcmtfcHRyX25vdF9udWxsX3JlZygmYW1wO2VxX2JyYW5jaF9yZWdzW2luc24tJmd0O3NyY19yZWddKTsKLQkJCWVsc2UKJiM0MzsJCQkvKiBzcmMgPT0gZHN0ICZhbXA7JmFtcDsgc3JjICE9IE5VTEwgPSZndDsgZHN0ICE9IE5VTEwgKi8KJiM0MzsJCQlpZiAocmVnX25vdF9udWxsKGVudiwgc3JjX3JlZykgJmFtcDsmYW1wOyB0eXBlX21heV9iZV9udWxsKGRzdF9yZWctJmd0O3R5cGUpKQogCQkJCW1hcmtfcHRyX25vdF9udWxsX3JlZygmYW1wO2VxX2JyYW5jaF9yZWdzW2luc24tJmd0O2RzdF9yZWddKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuYwppbmRleCAzZDFlOGRlNDM5MGMyLi4wODVkMTE0Njg5NmMxIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jCkBAIC0zLDcgJiM0MzszLDkgQEAKIAogI2luY2x1ZGUgJmx0O2xpbnV4L2JwZi5oJmd0OwogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdGRib29sLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7YnBmX2tmdW5jcy5oJiMzNDsKIAogc3RydWN0IHsKIAlfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1hTS01BUCk7CkBAIC0yNjQsNCAmIzQzOzI2Niw0NiBAQCBfX25ha2VkIHZvaWQgam5lX3JlZ19yZWdfbnVsbF9jaGVjayh2b2lkKQogICAgICAgICA6IF9fY2xvYmJlcl9hbGwpOwogfQogCiYjNDM7LyoKJiM0MzsgKiBBIGNvbXBhcmlzb24gYmV0d2VlbiBQVFJfVE9fTUVNIHwgTUVNX1JET05MWSB8IFBUUl9VTlRSVVNURUQgYW5kCiYjNDM7ICogUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMIHNob3VsZCBub3QgaW5mZXIgdGhhdCBtYXAgcG9pbnRlciBpcyBub3QgbnVsbC4KJiM0MzsgKiBBIGJ1ZyBpbiBjaGVja19jb25kX2ptcF9vcCgpIG1hZGUgc3VjaCBpbmZlcmVuY2UgcG9zc2libGUuCiYjNDM7ICovCiYjNDM7U0VDKCYjMzQ7cmF3X3RwJiMzNDspCiYjNDM7X19mYWlsdXJlCiYjNDM7X19tc2coJiMzNDtlcnJvcjogaW52YWxpZCBkZXJlZmVyZW5jZSBvZiBSMCAoeGRwX3NvY2tfb3JfbnVsbCkmIzM0OykKJiM0MztfX21zZygmIzM0OyZndDsmZ3Q7Jmd0OyAxMCB8ICg2MSkgcjAgPSAqKHUzMiAqKShyMCAmIzQzOzApJiMzNDspCiYjNDM7X19uYWtlZCB2b2lkIHVudHJ1c3RlZF9tZW1fZG9lc19ub3RfaW5mZXJfbWFwX3ZhbHVlX25vbl9udWxsKHZvaWQpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUgKCYjMzQ7CQkJCQlcCiYjNDM7CS8qIHI4ID0gYnBmX3Jkb25seV9jYXN0KDAsIDApOyAqLwkJXAomIzQzOwlyMiA9IDA7CQkJCQkJXAomIzQzOwljYWxsICVbYnBmX3Jkb25seV9jYXN0XTsJCQlcCiYjNDM7CXI2ID0gcjA7CQkJCQlcCiYjNDM7CS8qIHIwID0gYnBmX21hcF9sb29rdXBfZWxlbShtYXBfaGFzaCwgJmFtcDtrZXkpOyAqLwlcCiYjNDM7CSoodTY0ICopKHIxMCAtIDgpID0gMDsJCQkJXAomIzQzOwlyMSA9ICVbbWFwX3hza21hcF0gbGw7CQkJCVwKJiM0MzsJcjIgPSByMTA7CQkJCQlcCiYjNDM7CXIyICYjNDM7PSAtODsJCQkJCVwKJiM0MzsJY2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dOwkJCVwKJiM0MzsJLyoJCQkJCQlcCiYjNDM7CSAqIGJ1Z2d5IHZlcmlmaWVyIGFzc3VtZWQgdGhhdCByNiBjYW4mIzM5O3QgYmUgbnVsbAlcCiYjNDM7CSAqIGFuZCBtYXJrZWQgcjAgbm9uLW51bGwgYXMgd2VsbC4JCVwKJiM0MzsJICovCQkJCQkJXAomIzQzOwlpZiByNiAhPSByMCBnb3RvIDFmOwkJCQlcCiYjNDM7CXIwID0gKih1MzIgKikocjAgJiM0MzsgMCk7CQkJCVwKJiM0MzsxOglyMCA9IDA7CQkJCQkJXAomIzQzOwlleGl0OwkJCQkJCVwKJiM0MzsmIzM0Owk6CiYjNDM7CTogX19pbW0oYnBmX3Jkb25seV9jYXN0KSwKJiM0MzsJICBfX2ltbShicGZfbWFwX2xvb2t1cF9lbGVtKSwKJiM0MzsJICBfX2ltbV9hZGRyKG1hcF94c2ttYXApCiYjNDM7CTogX19jbG9iYmVyX2FsbCk7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQga2Z1bmNfcm9vdCh2b2lkKQomIzQzO3sKJiM0MzsJYnBmX3Jkb25seV9jYXN0KDAsIDApOwomIzQzO30KJiM0MzsKIGNoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDAxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNzUKCQkJCQkJCW91dHB1dDogMTczCgkJCQkJCQl0aG91Z2h0czogNTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggZm9yIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCBhbmQgaXQmIzM5O3MgZml4aW5nIGEgc3VidGxlIGJ1dCBjcml0aWNhbCBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciYjMzk7cyBwb2ludGVyIGFuYWx5c2lzLiBFc3NlbnRpYWxseSwgdGhlIHZlcmlmaWVyIHdhc24mIzM5O3QgY29ycmVjdGx5IGhhbmRsaW5nIGNvbmRpdGlvbmFsIGp1bXBzIGFuZCBpbmZlcnJpbmcgbm9uLW51bGwgcG9pbnRlcnMuIFRoZSBmaXggaW52b2x2ZXMgYWRkaW5nIGBQVFJfVE9fWERQX1NPQ0tgIGFuZCBgUFRSX1RPX0JVRmAgdG8gYHJlZ19ub3RfbnVsbCgpYCwgd2hpY2ggc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpMb29raW5nIGF0IHRoZSBjb2RlIGNoYW5nZXMsIGl0IGFwcGVhcnMgdGhlIGJ1ZyBtYW5pZmVzdGVkIHdoZW4gY29tcGFyaW5nIGFuIHVudHJ1c3RlZCBwb2ludGVyICh3aGljaCBjb3VsZCBiZSBhbnl0aGluZywgaW5jbHVkaW5nIE5VTEwpIHdpdGggYSBtYXAgdmFsdWUgcG9pbnRlciAod2hpY2ggY291bGQgYWxzbyBiZSBOVUxMKS4gVGhlIHZlcmlmaWVyIHdhcyBpbmNvcnJlY3RseSBhc3N1bWluZyB0aGUgbWFwIHZhbHVlIHBvaW50ZXIgd2FzIG5vbi1udWxsIGFmdGVyIGFuIGVxdWFsaXR5IGNoZWNrLCAqZXZlbiogaWYgdGhlIHVudHJ1c3RlZCBwb2ludGVyICpjb3VsZCogaGF2ZSBiZWVuIE5VTEwuIFRoaXMgbWVhbnMgdGhhdCBhIGNvbmRpdGlvbmFsIGp1bXAsIGlmIHRydWUsIHdvdWxkIHRoZW4gYWxsb3cgYSBzdWJzZXF1ZW50IGRlcmVmZXJlbmNlIG9mIHRoYXQgJiMzNDt2ZXJpZmllZCBub24tbnVsbCYjMzQ7IG1hcCB2YWx1ZSBwb2ludGVyICp3aXRob3V0KiBhIHByb3BlciBudWxsIGNoZWNrLCBhbmQgdGhlIHJlc3VsdHMgY291bGQgYmUgY2F0YXN0cm9waGljLgoKVGhlIHNwZWNpZmljIGNoYW5nZXMgdG8gYGNoZWNrX2NvbmRfam1wX29wKClgIGFuZCB0aGUgcG9pbnRlciBtYXJraW5nIGxvZ2ljIGFyZSB0YXJnZXRlZCBhdCBhZGRyZXNzaW5nIHRoaXMgZmxhd2VkIGluZmVyZW5jZS4gVGhlIG9sZCBsb2dpYyB3YXMgdG9vIHNpbXBsaXN0aWMsIGFuZCB0aGUgbmV3IGxvZ2ljIHNlZW1zIHRvIGNvcnJlY3QgZm9yIHRoZSBlcnJvbmVvdXMgYXNzdW1wdGlvbiB0aGF0IG9uZSBzaWRlIG9mIGFuIGVxdWFsaXR5IGNvbXBhcmlzb24gYmVpbmcgbm9uLW51bGwgaW1wbGllZCB0aGUgb3RoZXIgc2lkZSB3YXMuIFRoZSB1cGRhdGVkIGxvZ2ljIGNvbnNpZGVycyBib3RoIHBvc3NpYmlsaXRpZXM6IHRoZSBzcmMgcG9pbnRlciBub3QgYmVpbmcgbnVsbCBpbXBsaWVzIHRoZSBkZXN0IHBvaW50ZXIgaXMgYWxzbyBub3QgbnVsbCwgYW5kIHZpY2UgdmVyc2EuCgpUaGlzIGlzIGEgY2xlYXIgY2FzZSBvZiBhIHR5cGUgY29uZnVzaW9uIHZ1bG5lcmFiaWxpdHk7IGl0JiMzOTtzIGEgbWlzc2luZyBudWxsIGNoZWNrIGludHJvZHVjZWQgYnkgYW4gaW5jb3JyZWN0IHZlcmlmaWVyIGFzc3VtcHRpb24uIFRoZSBjb25zZXF1ZW5jZT8gUG90ZW50aWFsbHkgaW52YWxpZCBtZW1vcnkgYWNjZXNzLCBlaXRoZXIgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UsIG9yIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSBpZiBhbiBhdHRhY2tlciB3ZXJlIGFibGUgdG8gY29udHJvbCB0aGUgdW50cnVzdGVkIHBvaW50ZXIsIGFuZCBJIG5lZWQgdG8ga2VlcCB0aGlzIGluIG1pbmQuIFRoaXMgKmlzbiYjMzk7dCogYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIEtBU0FOIG9yIHN0YW5kYXJkIGZhdWx0IGhhbmRsZXJzIHdvdWxkIGxpa2VseSBjYXRjaCB0aGUgcmVzdWx0YW50IGludmFsaWQgbWVtb3J5IGFjY2VzcywgYW5kIEtNU0FOIGlzICppcnJlbGV2YW50KiBoZXJlLiBTbyBJIGhhdmUgdG8gYmUgc3VyZSB0aGlzIGlzIG5vdCBhbiBpc3N1ZSB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LgoKUmlnaHQsIGxldCYjMzk7cyBqdXN0IG1ha2UgY2VydGFpbiBJIGhhdmUgdGhpcyBjb3JyZWN0Li4uIFRoZSB2ZXJpZmllciBtYWRlIHRoZSAqd3JvbmcqIGFzc3VtcHRpb24uIEEgcmVnaXN0ZXIgd2FzIGluY29ycmVjdGx5IG1hcmtlZCBhcyBub3QgbnVsbC4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIG15IHJlYXNvbmluZyBpcyBvbiB0cmFjay4gVGhpcyBjb3VsZCBsZWFkIHRvIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBvciB3b3JzZS4gVGhpcyBpc24mIzM5O3QgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYE5lZWRzS01TQU5gIGlzIGRlZmluaXRpdmVseSBgZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIGBjaGVja19jb25kX2ptcF9vcGAgZnVuY3Rpb24gd2hlcmUgaXQgaW5jb3JyZWN0bHkgaW5mZXJyZWQgdGhhdCBhIHBvaW50ZXIgd2FzIG5vdCBudWxsIHdoZW4gY29tcGFyZWQgdG8gYW5vdGhlciBwb2ludGVyIHRoYXQgY291bGQgYWxzbyBiZSBudWxsIChvciB1bnRydXN0ZWQpLiBUaGlzIGJ1ZyBjb3VsZCBhbGxvdyBhIEJQRiBwcm9ncmFtIHRvIGJ5cGFzcyBudWxsIGNoZWNrcywgbGVhZGluZyB0byBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLiBUaGVzZSB0eXBlcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBhbmQgaW52YWxpZCBhY2Nlc3MgYnVncyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgcGFnZSBmYXVsdCBoYW5kbGluZy4gVGhlIHBhdGNoIGRvZXMgbm90IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcywgd2hpY2ggYXJlIHRoZSBzcGVjaWZpYyB0YXJnZXRzIG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciYjMzk7cyBgY2hlY2tfY29uZF9qbXBfb3BgIGZ1bmN0aW9uIHdoZXJlIGl0IGluY29ycmVjdGx5IGluZmVycmVkIHRoYXQgYSBwb2ludGVyIHdhcyBub3QgbnVsbCB3aGVuIGNvbXBhcmVkIHRvIGFub3RoZXIgcG9pbnRlciB0aGF0IGNvdWxkIGFsc28gYmUgbnVsbCAob3IgdW50cnVzdGVkKS4gVGhpcyBidWcgY291bGQgYWxsb3cgYSBCUEYgcHJvZ3JhbSB0byBieXBhc3MgbnVsbCBjaGVja3MsIGxlYWRpbmcgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGludmFsaWQgYWNjZXNzIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MsIHdoaWNoIGFyZSB0aGUgc3BlY2lmaWMgdGFyZ2V0cyBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDE6MzM6MTQuNTgzNDk3MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQ3MTAyNjc5MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlhEUF9TT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyJ3MgYGNoZWNrX2NvbmRfam1wX29wYCBmdW5jdGlvbiB3aGVyZSBpdCBpbmNvcnJlY3RseSBpbmZlcnJlZCB0aGF0IGEgcG9pbnRlciB3YXMgbm90IG51bGwgd2hlbiBjb21wYXJlZCB0byBhbm90aGVyIHBvaW50ZXIgdGhhdCBjb3VsZCBhbHNvIGJlIG51bGwgKG9yIHVudHJ1c3RlZCkuIFRoaXMgYnVnIGNvdWxkIGFsbG93IGEgQlBGIHByb2dyYW0gdG8gYnlwYXNzIG51bGwgY2hlY2tzLCBsZWFkaW5nIHRvIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBpbnZhbGlkIGFjY2VzcyBidWdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBwYWdlIGZhdWx0IGhhbmRsaW5nLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLCB3aGljaCBhcmUgdGhlIHNwZWNpZmljIHRhcmdldHMgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBhIHJlZ2lzdGVyIGNvdWxkIGJlIGluY29ycmVjdGx5IGluZmVycmVkIGFzIG5vdCBudWxsIGFmdGVyIGEgY29uZGl0aW9uYWwganVtcC4gVGhpcyBpcyBhIGNvcmUgdmVyaWZpZXIgbG9naWMgY2hhbmdlIHRoYXQgYWZmZWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdmVyaWZpY2F0aW9uLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozMzoxNC41ODM1MDI1NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ1OTU1NjA0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU0NTQ5NjFlMzAzODdmOGZjOTc5MWQ4YTU2MDY3ZGI1ZmEzYTIxYmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMjIgMDE6MzM6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggZTAzNmFlMjBiZjZiOS4uODk3ZWM0YjM4ZGVhYiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtMzU1LDYgKzM1NSw4IEBAIHN0YXRpYyBib29sIHJlZ19ub3RfbnVsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0XFxuIFxcdHR5cGUgPSBiYXNlX3R5cGUodHlwZSk7XFxuIFxcdHJldHVybiB0eXBlID09IFBUUl9UT19TT0NLRVQgfHxcXG4gXFx0XFx0dHlwZSA9PSBQVFJfVE9fVENQX1NPQ0sgfHxcXG4rXFx0XFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0sgfHxcXG4rXFx0XFx0dHlwZSA9PSBQVFJfVE9fQlVGIHx8XFxuIFxcdFxcdHR5cGUgPT0gUFRSX1RPX01BUF9WQUxVRSB8fFxcbiBcXHRcXHR0eXBlID09IFBUUl9UT19NQVBfS0VZIHx8XFxuIFxcdFxcdHR5cGUgPT0gUFRSX1RPX1NPQ0tfQ09NTU9OIHx8XFxuQEAgLTE3MDg1LDcgKzE3MDg3LDYgQEAgc3RhdGljIGludCBjaGVja19jb25kX2ptcF9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHQgKi9cXG4gXFx0aWYgKCFpc19qbXAzMiBcXHUwMDI2XFx1MDAyNiBCUEZfU1JDKGluc24tXFx1MDAzZWNvZGUpID09IEJQRl9YIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIHNyY19yZWcpIFxcdTAwMjZcXHUwMDI2IF9faXNfcG9pbnRlcl92YWx1ZShmYWxzZSwgZHN0X3JlZykgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cXHUwMDNldHlwZSkgIT0gdHlwZV9tYXlfYmVfbnVsbChkc3RfcmVnLVxcdTAwM2V0eXBlKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgYmFzZV90eXBlKHNyY19yZWctXFx1MDAzZXR5cGUpICE9IFBUUl9UT19CVEZfSUQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIGJhc2VfdHlwZShkc3RfcmVnLVxcdTAwM2V0eXBlKSAhPSBQVFJfVE9fQlRGX0lEKSB7XFxuIFxcdFxcdGVxX2JyYW5jaF9yZWdzID0gTlVMTDtcXG5AQCAtMTcxMDEsOSArMTcxMDIsMTEgQEAgc3RhdGljIGludCBjaGVja19jb25kX2ptcF9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcbiBcXHRcXHRpZiAoZXFfYnJhbmNoX3JlZ3MpIHtcXG4tXFx0XFx0XFx0aWYgKHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cXHUwMDNldHlwZSkpXFxuK1xcdFxcdFxcdC8qIHNyYyA9PSBkc3QgXFx1MDAyNlxcdTAwMjYgZHN0ICE9IE5VTEwgPVxcdTAwM2Ugc3JjICE9IE5VTEwgKi9cXG4rXFx0XFx0XFx0aWYgKHJlZ19ub3RfbnVsbChlbnYsIGRzdF9yZWcpIFxcdTAwMjZcXHUwMDI2IHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cXHUwMDNldHlwZSkpXFxuIFxcdFxcdFxcdFxcdG1hcmtfcHRyX25vdF9udWxsX3JlZyhcXHUwMDI2ZXFfYnJhbmNoX3JlZ3NbaW5zbi1cXHUwMDNlc3JjX3JlZ10pO1xcbi1cXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdC8qIHNyYyA9PSBkc3QgXFx1MDAyNlxcdTAwMjYgc3JjICE9IE5VTEwgPVxcdTAwM2UgZHN0ICE9IE5VTEwgKi9cXG4rXFx0XFx0XFx0aWYgKHJlZ19ub3RfbnVsbChlbnYsIHNyY19yZWcpIFxcdTAwMjZcXHUwMDI2IHR5cGVfbWF5X2JlX251bGwoZHN0X3JlZy1cXHUwMDNldHlwZSkpXFxuIFxcdFxcdFxcdFxcdG1hcmtfcHRyX25vdF9udWxsX3JlZyhcXHUwMDI2ZXFfYnJhbmNoX3JlZ3NbaW5zbi1cXHUwMDNlZHN0X3JlZ10pO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jXFxuaW5kZXggM2QxZThkZTQzOTBjMi4uMDg1ZDExNDY4OTZjMSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLmNcXG5AQCAtMyw3ICszLDkgQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9icGYuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RkYm9vbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4rI2luY2x1ZGUgXFxcImJwZl9rZnVuY3MuaFxcXCJcXG4gXFxuIHN0cnVjdCB7XFxuIFxcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfWFNLTUFQKTtcXG5AQCAtMjY0LDQgKzI2Niw0NiBAQCBfX25ha2VkIHZvaWQgam5lX3JlZ19yZWdfbnVsbF9jaGVjayh2b2lkKVxcbiAgICAgICAgIDogX19jbG9iYmVyX2FsbCk7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIEEgY29tcGFyaXNvbiBiZXR3ZWVuIFBUUl9UT19NRU0gfCBNRU1fUkRPTkxZIHwgUFRSX1VOVFJVU1RFRCBhbmRcXG4rICogUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMIHNob3VsZCBub3QgaW5mZXIgdGhhdCBtYXAgcG9pbnRlciBpcyBub3QgbnVsbC5cXG4rICogQSBidWcgaW4gY2hlY2tfY29uZF9qbXBfb3AoKSBtYWRlIHN1Y2ggaW5mZXJlbmNlIHBvc3NpYmxlLlxcbisgKi9cXG4rU0VDKFxcXCJyYXdfdHBcXFwiKVxcbitfX2ZhaWx1cmVcXG4rX19tc2coXFxcImVycm9yOiBpbnZhbGlkIGRlcmVmZXJlbmNlIG9mIFIwICh4ZHBfc29ja19vcl9udWxsKVxcXCIpXFxuK19fbXNnKFxcXCJcXHUwMDNlXFx1MDAzZVxcdTAwM2UgMTAgfCAoNjEpIHIwID0gKih1MzIgKikocjAgKzApXFxcIilcXG4rX19uYWtlZCB2b2lkIHVudHJ1c3RlZF9tZW1fZG9lc19ub3RfaW5mZXJfbWFwX3ZhbHVlX25vbl9udWxsKHZvaWQpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXFwiXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHQvKiByOCA9IGJwZl9yZG9ubHlfY2FzdCgwLCAwKTsgKi9cXHRcXHRcXFxcXFxuK1xcdHIyID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGNhbGwgJVticGZfcmRvbmx5X2Nhc3RdO1xcdFxcdFxcdFxcXFxcXG4rXFx0cjYgPSByMDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdC8qIHIwID0gYnBmX21hcF9sb29rdXBfZWxlbShtYXBfaGFzaCwgXFx1MDAyNmtleSk7ICovXFx0XFxcXFxcbitcXHQqKHU2NCAqKShyMTAgLSA4KSA9IDA7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyMSA9ICVbbWFwX3hza21hcF0gbGw7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyMiA9IHIxMDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHIyICs9IC04O1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0Y2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dO1xcdFxcdFxcdFxcXFxcXG4rXFx0LypcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAqIGJ1Z2d5IHZlcmlmaWVyIGFzc3VtZWQgdGhhdCByNiBjYW4ndCBiZSBudWxsXFx0XFxcXFxcbitcXHQgKiBhbmQgbWFya2VkIHIwIG5vbi1udWxsIGFzIHdlbGwuXFx0XFx0XFxcXFxcbitcXHQgKi9cXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGlmIHI2ICE9IHIwIGdvdG8gMWY7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyMCA9ICoodTMyICopKHIwICsgMCk7XFx0XFx0XFx0XFx0XFxcXFxcbisxOlxcdHIwID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGV4aXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXFwiXFx0OlxcbitcXHQ6IF9faW1tKGJwZl9yZG9ubHlfY2FzdCksXFxuK1xcdCAgX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksXFxuK1xcdCAgX19pbW1fYWRkcihtYXBfeHNrbWFwKVxcbitcXHQ6IF9fY2xvYmJlcl9hbGwpO1xcbit9XFxuK1xcbit2b2lkIGtmdW5jX3Jvb3Qodm9pZClcXG4re1xcbitcXHRicGZfcmRvbmx5X2Nhc3QoMCwgMCk7XFxuK31cXG4rXFxuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozMzoxNi4wNDM3Nzc4MjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNjYwNTc0NzM1OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlhEUF9TT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBhIHJlZ2lzdGVyIGNvdWxkIGJlIGluY29ycmVjdGx5IGluZmVycmVkIGFzIG5vdCBudWxsIGFmdGVyIGEgY29uZGl0aW9uYWwganVtcC4gVGhpcyBpcyBhIGNvcmUgdmVyaWZpZXIgbG9naWMgY2hhbmdlIHRoYXQgYWZmZWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdmVyaWZpY2F0aW9uLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1NDU0OTYxZTMwMzg3ZjhmYzk3OTFkOGE1NjA2N2RiNWZhM2EyMWJjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjIgMDE6MzM6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IGUwMzZhZTIwYmY2YjkuLjg5N2VjNGIzOGRlYWIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTM1NSw2ICszNTUsOCBAQCBzdGF0aWMgYm9vbCByZWdfbm90X251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdFxuIFx0dHlwZSA9IGJhc2VfdHlwZSh0eXBlKTtcbiBcdHJldHVybiB0eXBlID09IFBUUl9UT19TT0NLRVQgfHxcbiBcdFx0dHlwZSA9PSBQVFJfVE9fVENQX1NPQ0sgfHxcbitcdFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0sgfHxcbitcdFx0dHlwZSA9PSBQVFJfVE9fQlVGIHx8XG4gXHRcdHR5cGUgPT0gUFRSX1RPX01BUF9WQUxVRSB8fFxuIFx0XHR0eXBlID09IFBUUl9UT19NQVBfS0VZIHx8XG4gXHRcdHR5cGUgPT0gUFRSX1RPX1NPQ0tfQ09NTU9OIHx8XG5AQCAtMTcwODUsNyArMTcwODcsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHQgKi9cbiBcdGlmICghaXNfam1wMzIgXHUwMDI2XHUwMDI2IEJQRl9TUkMoaW5zbi1cdTAwM2Vjb2RlKSA9PSBCUEZfWCBcdTAwMjZcdTAwMjZcbiBcdCAgICBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIHNyY19yZWcpIFx1MDAyNlx1MDAyNiBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIGRzdF9yZWcpIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cdTAwM2V0eXBlKSAhPSB0eXBlX21heV9iZV9udWxsKGRzdF9yZWctXHUwMDNldHlwZSkgXHUwMDI2XHUwMDI2XG4gXHQgICAgYmFzZV90eXBlKHNyY19yZWctXHUwMDNldHlwZSkgIT0gUFRSX1RPX0JURl9JRCBcdTAwMjZcdTAwMjZcbiBcdCAgICBiYXNlX3R5cGUoZHN0X3JlZy1cdTAwM2V0eXBlKSAhPSBQVFJfVE9fQlRGX0lEKSB7XG4gXHRcdGVxX2JyYW5jaF9yZWdzID0gTlVMTDtcbkBAIC0xNzEwMSw5ICsxNzEwMiwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdFx0aWYgKGVxX2JyYW5jaF9yZWdzKSB7XG4tXHRcdFx0aWYgKHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cdTAwM2V0eXBlKSlcbitcdFx0XHQvKiBzcmMgPT0gZHN0IFx1MDAyNlx1MDAyNiBkc3QgIT0gTlVMTCA9XHUwMDNlIHNyYyAhPSBOVUxMICovXG4rXHRcdFx0aWYgKHJlZ19ub3RfbnVsbChlbnYsIGRzdF9yZWcpIFx1MDAyNlx1MDAyNiB0eXBlX21heV9iZV9udWxsKHNyY19yZWctXHUwMDNldHlwZSkpXG4gXHRcdFx0XHRtYXJrX3B0cl9ub3RfbnVsbF9yZWcoXHUwMDI2ZXFfYnJhbmNoX3JlZ3NbaW5zbi1cdTAwM2VzcmNfcmVnXSk7XG4tXHRcdFx0ZWxzZVxuK1x0XHRcdC8qIHNyYyA9PSBkc3QgXHUwMDI2XHUwMDI2IHNyYyAhPSBOVUxMID1cdTAwM2UgZHN0ICE9IE5VTEwgKi9cbitcdFx0XHRpZiAocmVnX25vdF9udWxsKGVudiwgc3JjX3JlZykgXHUwMDI2XHUwMDI2IHR5cGVfbWF5X2JlX251bGwoZHN0X3JlZy1cdTAwM2V0eXBlKSlcbiBcdFx0XHRcdG1hcmtfcHRyX25vdF9udWxsX3JlZyhcdTAwMjZlcV9icmFuY2hfcmVnc1tpbnNuLVx1MDAzZWRzdF9yZWddKTtcbiBcdFx0fVxuIFx0fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuY1xuaW5kZXggM2QxZThkZTQzOTBjMi4uMDg1ZDExNDY4OTZjMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jXG5AQCAtMyw3ICszLDkgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9icGYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkYm9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbisjaW5jbHVkZSBcImJwZl9rZnVuY3MuaFwiXG4gXG4gc3RydWN0IHtcbiBcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfWFNLTUFQKTtcbkBAIC0yNjQsNCArMjY2LDQ2IEBAIF9fbmFrZWQgdm9pZCBqbmVfcmVnX3JlZ19udWxsX2NoZWNrKHZvaWQpXG4gICAgICAgICA6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbisvKlxuKyAqIEEgY29tcGFyaXNvbiBiZXR3ZWVuIFBUUl9UT19NRU0gfCBNRU1fUkRPTkxZIHwgUFRSX1VOVFJVU1RFRCBhbmRcbisgKiBQVFJfVE9fTUFQX1ZBTFVFX09SX05VTEwgc2hvdWxkIG5vdCBpbmZlciB0aGF0IG1hcCBwb2ludGVyIGlzIG5vdCBudWxsLlxuKyAqIEEgYnVnIGluIGNoZWNrX2NvbmRfam1wX29wKCkgbWFkZSBzdWNoIGluZmVyZW5jZSBwb3NzaWJsZS5cbisgKi9cbitTRUMoXCJyYXdfdHBcIilcbitfX2ZhaWx1cmVcbitfX21zZyhcImVycm9yOiBpbnZhbGlkIGRlcmVmZXJlbmNlIG9mIFIwICh4ZHBfc29ja19vcl9udWxsKVwiKVxuK19fbXNnKFwiXHUwMDNlXHUwMDNlXHUwMDNlIDEwIHwgKDYxKSByMCA9ICoodTMyICopKHIwICswKVwiKVxuK19fbmFrZWQgdm9pZCB1bnRydXN0ZWRfbWVtX2RvZXNfbm90X2luZmVyX21hcF92YWx1ZV9ub25fbnVsbCh2b2lkKVxuK3tcbitcdGFzbSB2b2xhdGlsZSAoXCJcdFx0XHRcdFx0XFxcbitcdC8qIHI4ID0gYnBmX3Jkb25seV9jYXN0KDAsIDApOyAqL1x0XHRcXFxuK1x0cjIgPSAwO1x0XHRcdFx0XHRcdFxcXG4rXHRjYWxsICVbYnBmX3Jkb25seV9jYXN0XTtcdFx0XHRcXFxuK1x0cjYgPSByMDtcdFx0XHRcdFx0XFxcbitcdC8qIHIwID0gYnBmX21hcF9sb29rdXBfZWxlbShtYXBfaGFzaCwgXHUwMDI2a2V5KTsgKi9cdFxcXG4rXHQqKHU2NCAqKShyMTAgLSA4KSA9IDA7XHRcdFx0XHRcXFxuK1x0cjEgPSAlW21hcF94c2ttYXBdIGxsO1x0XHRcdFx0XFxcbitcdHIyID0gcjEwO1x0XHRcdFx0XHRcXFxuK1x0cjIgKz0gLTg7XHRcdFx0XHRcdFxcXG4rXHRjYWxsICVbYnBmX21hcF9sb29rdXBfZWxlbV07XHRcdFx0XFxcbitcdC8qXHRcdFx0XHRcdFx0XFxcbitcdCAqIGJ1Z2d5IHZlcmlmaWVyIGFzc3VtZWQgdGhhdCByNiBjYW4ndCBiZSBudWxsXHRcXFxuK1x0ICogYW5kIG1hcmtlZCByMCBub24tbnVsbCBhcyB3ZWxsLlx0XHRcXFxuK1x0ICovXHRcdFx0XHRcdFx0XFxcbitcdGlmIHI2ICE9IHIwIGdvdG8gMWY7XHRcdFx0XHRcXFxuK1x0cjAgPSAqKHUzMiAqKShyMCArIDApO1x0XHRcdFx0XFxcbisxOlx0cjAgPSAwO1x0XHRcdFx0XHRcdFxcXG4rXHRleGl0O1x0XHRcdFx0XHRcdFxcXG4rXCJcdDpcbitcdDogX19pbW0oYnBmX3Jkb25seV9jYXN0KSxcbitcdCAgX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksXG4rXHQgIF9faW1tX2FkZHIobWFwX3hza21hcClcbitcdDogX19jbG9iYmVyX2FsbCk7XG4rfVxuK1xuK3ZvaWQga2Z1bmNfcm9vdCh2b2lkKVxuK3tcbitcdGJwZl9yZG9ubHlfY2FzdCgwLCAwKTtcbit9XG4rXG4gY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDE6MzM6MTYuMDQzNzc5MTY5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ3MDMxOTQxNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRoZXkndmUgbWFkZSBhIHRhcmdldGVkIGNoYW5nZSB0byB0aGUgYGNoZWNrX2NvbmRfam1wX29wYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBkaXJlY3QgY29tcGFyaXNvbiBgdHlwZV9tYXlfYmVfbnVsbChzcmNfcmVnLVx1MDAzZXR5cGUpICE9IHR5cGVfbWF5X2JlX251bGwoZHN0X3JlZy1cdTAwM2V0eXBlKWAuIEluc3RlYWQsIHRoZXkncmUgbm93IGludHJvZHVjaW5nIGNoZWNrcyB1c2luZyBgcmVnX25vdF9udWxsKGVudiwgZHN0X3JlZylgIGFuZCBgcmVnX25vdF9udWxsKGVudiwgc3JjX3JlZylgIGJlZm9yZSBhc3NlcnRpbmcgdGhlIG5vbi1udWxsIHN0YXR1cyBvZiB0aGUgcmVnaXN0ZXJzLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGl0IHNlZW1zIHRoZXkncmUgcmVmaW5pbmcgdGhlIGxvZ2ljIGFyb3VuZCBudWxsIHBvaW50ZXIgc2FmZXR5IGNoZWNrcyBpbiBjb25kaXRpb25hbCBqdW1wcy5cblxuV2hhdCBjYXVnaHQgbXkgZXllIGltbWVkaWF0ZWx5IGlzIHRoZSBhZGRpdGlvbiBvZiBgUFRSX1RPX1hEUF9TT0NLYCBhbmQgYFBUUl9UT19CVUZgIHRvIGByZWdfbm90X251bGxgLiBUaGlzIGluZGljYXRlcyBhbiBpbnRlbnQgdG8gYnJvYWRlbiB0aGUgc2NvcGUgb2Ygd2hhdCB0aGUgdmVyaWZpZXIgY29uc2lkZXJzIFwibm90IG51bGxcIiBpbiB0aGUgY29udGV4dCBvZiB0aGVzZSBzcGVjaWZpYyBwb2ludGVyIHR5cGVzLiBUaGlzIGxpa2VseSBtZWFucyB0aGV5J3JlIGltcHJvdmluZyB0aGUgdmVyaWZpY2F0aW9uIG9mIGNvZGUgdGhhdCBkZWFscyB3aXRoIFhEUCBzb2NrZXRzIGFuZCBidWZmZXIgcG9pbnRlcnMsIHdoaWNoIGlzIGEgZ29vZCB0aGluZyB0byBzZWUuXG5cbk5vdywgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IGByZWdfbm90X251bGxgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiB0aGUgc2FtZSBmaWxlLiBZZXAsIGl0IGlzLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgYWxsIHNlbGYtY29udGFpbmVkIHdpdGhpbiB0aGUgYHZlcmlmaWVyLmNgIG1vZHVsZSwgc28gdGhhdCBoZWxwcyBuYXJyb3cgZG93biBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwYXRjaCdzIGltbWVkaWF0ZSBpbXBhY3QuIExldCBtZSBxdWlja2x5IGZpbmQgdGhlIGBjaGVja19jb25kX2ptcF9vcGAgaW4gdGhlIHNhbWUgZmlsZSB0byBxdWlja2x5IHJlZmVyZW5jZSBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI3OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjM0OjMwLjc0Njk3NjExOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcyMzY2NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX2NvbmRfam1wX29wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTg9c3RhdGljIGJvb2wgYnBmX2dsb2JhbF9wZXJjcHVfbWFfc2V0O1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2MC0gKiBQVFJfVE9fTUFQX1ZBTFVFIGFuZCB0aGUgc2FtZSByZWdpc3RlciBjaGFuZ2VzIHN0YXRlIHRvIENPTlNUX0lNTSBpbiB0aGUgZmFsc2VcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTYxOiAqIGJyYW5jaC4gU2VlIGNoZWNrX2NvbmRfam1wX29wKCkuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2Mi0gKlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE2ODQ5PXN0YXRpYyB2b2lkIHN5bmNfbGlua2VkX3JlZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl92ZXJpZmllcl9zdGF0ZSAqdnN0YXRlLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2OTAzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNjkwNDpzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2OTA1LVxcdFxcdFxcdCAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuLCBpbnQgKmluc25faWR4KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4MjEyPXN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODI5OC1cXHRcXHR9XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4Mjk5OlxcdFxcdHJldHVybiBjaGVja19jb25kX2ptcF9vcChlbnYsIGluc24sIFxcdTAwMjZlbnYtXFx1MDAzZWluc25faWR4KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTgzMDAtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNDozMi4yMTkzNDc0NjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjUyMDE2Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBkaXZlcyByaWdodCBpbnRvIHRoZSBoZWFydCBvZiB0aGluZ3MsIHR3ZWFraW5nIGBjaGVja19jb25kX2ptcF9vcGAsIHdoaWNoIGdldHMgY2FsbGVkIGJ5IGBkb19jaGVja19pbnNuYC4gQ29uc2lkZXJpbmcgYGRvX2NoZWNrX2luc25gIGlzIHdoZXJlIHRoZSBCUEYgdmVyaWZpZXIgbG9naWMgcmVhbGx5IHRha2VzIHBsYWNlLCB0aGlzIGNoYW5nZSBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGhhdmUgZnVuY3Rpb25hbCBjb25zZXF1ZW5jZXMuIEl0J3Mgc2NyZWFtaW5nIGZvciBhIGZ1enppbmcgY2FtcGFpZ24gdG8gc2VlIHdoYXQgYnJlYWtzLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGhlcmUgbmVlZHMgdG8gYmUgb24gZWl0aGVyIGBkb19jaGVja19pbnNuYCwgYGJwZl9jaGVja2AsIG9yIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAuIEknbGwgd2FudCB0byBnZXQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgYWxsIG9mIHRoZW0sIGJ1dCBsZXQncyBzZWUsIGBkb19jaGVja19pbnNuYCBpcyBzdGF0aWMgc28gaXQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBzZWUgd2hhdCBgYnBmX2NoZWNrYCBoYXMgdG8gb2ZmZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNDEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDE6MzQ6MzguODcxMzY2MzEzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTYxOTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9jaGVja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTU4PXN0YXRpYyBib29sIGJwZl9nbG9iYWxfcGVyY3B1X21hX3NldDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTktXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjYwOi8qIGJwZl9jaGVjaygpIGlzIGEgc3RhdGljIGNvZGUgYW5hbHl6ZXIgdGhhdCB3YWxrcyBlQlBGIHByb2dyYW1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjEtICogaW5zdHJ1Y3Rpb24gYnkgaW5zdHJ1Y3Rpb24gYW5kIHVwZGF0ZXMgcmVnaXN0ZXIvc3RhY2sgc3RhdGUuXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI2NDI9c3RhdGljIGludCBwcm9jZXNzX2tmX2FyZ19wdHJfdG9fcmJ0cmVlX25vZGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjY1My0gKiBMU00gaG9va3MgYW5kIGl0ZXJzIChib3RoIHNsZWVwYWJsZSBhbmQgbm9uLXNsZWVwYWJsZSkgYXJlIHNhZmUuXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNjU0OiAqIEFueSBzbGVlcGFibGUgcHJvZ3MgYXJlIGFsc28gc2FmZSBzaW5jZSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCgpIGVuZm9yY2VcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI2NTUtICogdGhlbSBjYW4gb25seSBiZSBhdHRhY2hlZCB0byBzb21lIHNwZWNpZmljIGhvb2sgcG9pbnRzLlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwMDA4PXN0YXRpYyBib29sIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAwMjEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMDIyOmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDAyMy1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwNDQ1PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwNDc1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDQ3NjpcXHRyZXQgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFxcdTAwMjZ0Z3RfaW5mbyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwNDc3LVxcdGlmIChyZXQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjA1NDQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwNTQ1OmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjA1NDYtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjA5Nzg9c3RhdGljIGVudW0gYnBmX3NpZ19rZXlyaW5nIGJwZl9jbGFzc2lmeV9rZXlyaW5nKHMzMiBrZXlyaW5nX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwOTkyLS8qXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwOTkzOiAqIFZlcmlmeSB0aGUgUEtDUyM3IHNpZ25hdHVyZSBvZiBhIGxvYWRlZCBwcm9ncmFtLiBDYWxsZWQgZnJvbSBicGZfY2hlY2soKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDk5NC0gKiBvbmNlIHRoZSBwcm9ncmFtJ3MgbWV0YWRhdGEgbWFwcyBoYXZlIGJlZW4gcmVzb2x2ZWQgaW50byB1c2VkX21hcHMsIHNvXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjEwMDE9c3RhdGljIGludCBicGZfcHJvZ192ZXJpZnlfc2lnbmF0dXJlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExMTctXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIxMTE4OmludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTExOS1cXHQgICAgICBzdHJ1Y3QgYnBmX2xvZ19hdHRyICphdHRyX2xvZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTEzMi1cXHQvKiAnc3RydWN0IGJwZl92ZXJpZmllcl9lbnYnIGNhbiBiZSBnbG9iYWwsIGJ1dCBzaW5jZSBpdCdzIG5vdCBzbWFsbCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjExMzM6XFx0ICogYWxsb2NhdGUvZnJlZSBpdCBldmVyeSB0aW1lIGJwZl9jaGVjaygpIGlzIGNhbGxlZFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTEzNC1cXHQgKi9cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTI0My1cXHQvKiBWYWxpZGF0ZSBCVEYgYWdhaW5zdCB0aGUgY29tcGxldGUgc3VicHJvZ3JhbSBsYXlvdXQgYW5kIGFwcGx5IENPLVJFLiAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMTI0NDpcXHRyZXQgPSBicGZfY2hlY2tfYnRmX2luZm8oZW52LCBhdHRyLCB1YXR0cik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMjQ1LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMjYzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMTI2NDpcXHRyZXQgPSBicGZfY2hlY2tfY2ZnKGVudik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMjY1LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNDozOC45MTg5MzEwMzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzYwNzQxNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBFbnRyeSBQb2ludCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgQlBGIHZlcmlmaWVyLiBgYnBmX2NoZWNrYCBpcyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludDsgaXQncyB0aGUgbWFpbiBlbnRyeS4gVGhhdCdzIHdoZXJlIGV2ZXJ5dGhpbmcga2lja3Mgb2ZmLiBGaXJzdCB0aGluZydzIGZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgb2J2aW91cyBvbmUsIHNvIEknbGwgZG91YmxlIGNoZWNrIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2ODgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNDo0Mi42Nzk2NzUwMDhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0MTYxNzgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDE6MzQ6NDQuMjIxMjk5MTY2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwMDc0Mjk1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhpcyBhcmVhOlxuXG4qKkNoZWNraW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYSBOZXcgWERQIFNvY2tldCBGZWF0dXJlKipcblxuQWxyaWdodCwgc28gdGhlIHBhdGNoIGludHJvZHVjZXMgYFBUUl9UT19YRFBfU09DS2AgdG8gYHJlZ19ub3RfbnVsbGAuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBkZXBlbmRlbmNpZXMuIFRoaXMgY2hhbmdlIGxpa2VseSBoaW5nZXMgb24gYENPTkZJR19YRFBfU09DS0VUU2AuIEkgY2FuJ3QgYmUgc3VyZSB3aXRob3V0IGRpZ2dpbmcgZGVlcGVyLCBidXQgdGhhdCdzIHRoZSBvYnZpb3VzIGxpbmssIGlzbid0IGl0PyBBZGRpbmcgdGhhdCBjaGVjayBpcyB0aGUgKmZpcnN0KiB0aGluZyBJIGhhdmUgdG8gZG8uIExldCdzIHNlZSBpZiBteSBzdXNwaWNpb25zIGFyZSBjb3JyZWN0LiBJIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudC4gSWYgaXQgaXMsIHRoaXMgaXMgYSBjbGVhbiBhbmQgcmVhc29uYWJsZSBjaGFuZ2UuIEJ1dCBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY29uZmlybSBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk2OCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjM0OjU1LjIyODczMjM1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4NjE4NDUzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQVFJfVE9fWERQX1NPQ0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9MTA0OD1lbnVtIGJwZl9yZWdfdHlwZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEwNjMtXFx0UFRSX1RPX1RQX0JVRkZFUixcXHQgLyogcmVnIHBvaW50cyB0byBhIHdyaXRhYmxlIHJhdyB0cCdzIGJ1ZmZlciAqL1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MTA2NDpcXHRQVFJfVE9fWERQX1NPQ0ssXFx0IC8qIHJlZyBwb2ludHMgdG8gc3RydWN0IHhkcF9zb2NrICovXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMDY1LVxcdC8qIFBUUl9UT19CVEZfSUQgcG9pbnRzIHRvIGEga2VybmVsIHN0cnVjdCB0aGF0IGRvZXMgbm90IG5lZWRcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTQwNj1zdGF0aWMgaW5saW5lIGJvb2wgdHlwZV9pc19za19wb2ludGVyKGVudW0gYnBmX3JlZ190eXBlIHR5cGUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0MTAtXFx0XFx0dHlwZSA9PSBQVFJfVE9fVENQX1NPQ0sgfHxcXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oOjE0MTE6XFx0XFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0s7XFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDEyLX1cXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9NzQxPWludCBicGZfY29udmVydF9jdHhfYWNjZXNzZXMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmMtOTIxLVxcdFxcdFxcdGJyZWFrO1xcbmtlcm5lbC9icGYvZml4dXBzLmM6OTIyOlxcdFxcdGNhc2UgUFRSX1RPX1hEUF9TT0NLOlxcbmtlcm5lbC9icGYvZml4dXBzLmMtOTIzLVxcdFxcdFxcdGNvbnZlcnRfY3R4X2FjY2VzcyA9IGJwZl94ZHBfc29ja19jb252ZXJ0X2N0eF9hY2Nlc3M7XFxuLS1cXG5rZXJuZWwvYnBmL2xvZy5jPTM5OT1jb25zdCBjaGFyICpyZWdfdHlwZV9zdHIoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgZW51bSBicGZfcmVnX3R5cGUgdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvbG9nLmMtNDE2LVxcdFxcdFtQVFJfVE9fVFBfQlVGRkVSXVxcdD0gXFxcInRwX2J1ZmZlclxcXCIsXFxua2VybmVsL2JwZi9sb2cuYzo0MTc6XFx0XFx0W1BUUl9UT19YRFBfU09DS11cXHQ9IFxcXCJ4ZHBfc29ja1xcXCIsXFxua2VybmVsL2JwZi9sb2cuYy00MTgtXFx0XFx0W1BUUl9UT19CVEZfSURdXFx0XFx0PSBcXFwicHRyX1xcXCIsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MzQ3PXN0YXRpYyBib29sIHJlZ19ub3RfbnVsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTM1Ny1cXHRcXHR0eXBlID09IFBUUl9UT19UQ1BfU09DSyB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzozNTg6XFx0XFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0sgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzU5LVxcdFxcdHR5cGUgPT0gUFRSX1RPX0JVRiB8fFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTU9c3RhdGljIHZvaWQgcmVmaW5lX21hcF9sb29rdXBfdmFsdWUoc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTY5LVxcdH0gZWxzZSBpZiAobWFwLVxcdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfWFNLTUFQKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzA6XFx0XFx0cmVnLVxcdTAwM2V0eXBlID0gUFRSX1RPX1hEUF9TT0NLIHwgbWF5YmVfbnVsbDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3MS1cXHR9IGVsc2UgaWYgKG1hcC1cXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX1NPQ0tNQVAgfHxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01MDAwPXN0YXRpYyBpbnQgY2hlY2tfc29ja19hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUwMjItXFx0XFx0YnJlYWs7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUwMjM6XFx0Y2FzZSBQVFJfVE9fWERQX1NPQ0s6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUwMjQtXFx0XFx0dmFsaWQgPSBicGZfeGRwX3NvY2tfaXNfdmFsaWRfYWNjZXNzKG9mZiwgc2l6ZSwgdCwgXFx1MDAyNmluZm8pO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTUyMzQ9c3RhdGljIGludCBjaGVja19wdHJfYWxpZ25tZW50KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTI3OC1cXHRcXHRicmVhaztcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTI3OTpcXHRjYXNlIFBUUl9UT19YRFBfU09DSzpcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTI4MC1cXHRcXHRwb2ludGVyX2Rlc2MgPSBcXFwieGRwX3NvY2sgXFxcIjtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04MTYyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3JlZ190eXBlcyBzb2NrX3R5cGVzID0ge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjYtXFx0XFx0UFRSX1RPX1RDUF9TT0NLLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MTY3OlxcdFxcdFBUUl9UT19YRFBfU09DSyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2OC1cXHR9LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTgxNzI9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfcmVnX3R5cGVzIGJ0Zl9pZF9zb2NrX2NvbW1vbl90eXBlcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MTc2LVxcdFxcdFBUUl9UT19UQ1BfU09DSyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODE3NzpcXHRcXHRQVFJfVE9fWERQX1NPQ0ssXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNzgtXFx0XFx0UFRSX1RPX0JURl9JRCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzk2MT1zdGF0aWMgYm9vbCByZWdfdHlwZV9taXNtYXRjaF9vayhlbnVtIGJwZl9yZWdfdHlwZSB0eXBlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3OTY3LVxcdGNhc2UgUFRSX1RPX1RDUF9TT0NLOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzk2ODpcXHRjYXNlIFBUUl9UT19YRFBfU09DSzpcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc5NjktXFx0Y2FzZSBQVFJfVE9fQlRGX0lEOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNDo1Ni44MTQ5MjU0NThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyMzk2MDUxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVGhpcyBWZXJpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGJ1ZyB3aXRoaW4gdGhlIGBjaGVja19jb25kX2ptcF9vcGAgZnVuY3Rpb24uIEl0IHNlZW1zIHRoZSB2ZXJpZmllciB3YXMgbWFraW5nIGEgZmF1bHR5IGFzc3VtcHRpb24gYWJvdXQgYSByZWdpc3RlciBub3QgYmVpbmcgbnVsbCwgbGVhZGluZyB0byBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgY3J1eCBvZiB0aGUgZml4IGlzIHRvIGluY29ycG9yYXRlIGEgY2hlY2sgZm9yIGByZWdfbm90X251bGxgICpiZWZvcmUqIGFzc3VtaW5nIHRoZSBvdGhlciByZWdpc3RlciBpcyBhbHNvIG5vdCBudWxsLiBUaGlzIG1ha2VzIGxvZ2ljYWwgc2Vuc2U7IHlvdSBoYXZlIHRvIGVuc3VyZSB0aGUgZmlyc3QgY29uZGl0aW9uIGlzIG1ldCBiZWZvcmUgdXNpbmcgaXQgdG8gZGVyaXZlIGEgc2Vjb25kLlxuXG5UaGUgYWRkaXRpb24gb2YgYFBUUl9UT19YRFBfU09DS2AgYW5kIGBQVFJfVE9fQlVGYCB0byBgcmVnX25vdF9udWxsYCBpcyBpbnRlcmVzdGluZy4gRXhwYW5kaW5nIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHdlIGNvbnNpZGVyIGEgcmVnaXN0ZXIgbm9uLW51bGwgaXMgYSBzaWduaWZpY2FudCBtb2RpZmljYXRpb24gdG8gdGhlIGNvcmUgdmVyaWZpZXIgbG9naWMuIEdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCB0aG9yb3VnaCBmdXp6aW5nIGlzIGRlZmluaXRlbHkgd2FycmFudGVkIGhlcmUuIFdlIG5lZWQgdG8gYmUgY29uZmlkZW50IHRoYXQgdGhlc2UgY2hhbmdlcyBkb24ndCBpbnRyb2R1Y2UgbmV3IHZ1bG5lcmFiaWxpdGllcyBvciByZWdyZXNzaW9ucy5cblxuRm9yIGZ1enppbmcsIEknbGwgd2FudCB0byBmb2N1cyBvbiB0aGUgYGJwZl9jaGVja2Agc3ltYm9sLiBUaGF0J3MgdGhlIGtleSBmdW5jdGlvbiB3ZSBuZWVkIHRvIHRhcmdldCB0byBleHBvc2UgcG90ZW50aWFsIGlzc3Vlcy4gQW5kIG9mIGNvdXJzZSwgd2UnbGwgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZW5hYmxlZCBmb3IgdGhlIGZ1enppbmcgcnVucy5cblxuTm93LCBhIHF1aWNrIHNpZGUgdGhvdWdodOKApiBsZXQncyBzZWUsIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGF0IGBQVFJfVE9fWERQX1NPQ0tgIHJlcXVpcmVzIGBDT05GSUdfWERQX1NPQ0tFVFNgLiBXZSBuZWVkIHRvIGJlIGF3YXJlIG9mIGRlcGVuZGVuY2llcyBsaWtlIHRoYXQsIG9yIHdlJ2xsIGdldCBmYWxzZSBuZWdhdGl2ZXMuIEdvdHRhIGVuc3VyZSBvdXIgdGVzdCBjb3ZlcmFnZSBpcyBhY2N1cmF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU1MiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNTozOS4wNTQ1MzMyMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0MDg1NDgxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWERQX1NPQ0tFVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC94ZHAvS2NvbmZpZzoyOmNvbmZpZyBYRFBfU09DS0VUU1xcbm5ldC94ZHAvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIlhEUCBzb2NrZXRzXFxcIlxcbi0tXFxubmV0L3hkcC9LY29uZmlnLTktXFxubmV0L3hkcC9LY29uZmlnOjEwOmNvbmZpZyBYRFBfU09DS0VUU19ESUFHXFxubmV0L3hkcC9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjM1OjQxLjc5NTM5MzcxOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTUyMzgxMTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipRdWljayBYRFAgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIHllcCwgYFhEUF9TT0NLRVRTYCBpcyBhIHNvbGlkIGFkZGl0aW9uIGhlcmUg4oCTIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGFwcHJvYWNoIGZvciB0aGlzIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlLiBOb3csIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIGltcGxlbWVudGF0aW9uLCBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgc29tZXRoaW5nLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgd2UncmUgZ29pbmcgdG8gbmVlZCB0byBleHBsaWNpdGx5IGNvbmZpZ3VyZSBhbnl0aGluZyBhcm91bmQgYFBUUl9UT19CVUZgLiBJIHZhZ3VlbHkgcmVjYWxsIHRoZXJlIGJlaW5nIGEgZmV3IGVkZ2UgY2FzZXMgb3Igc3VidGxlIGRlcGVuZGVuY2llcyB0aGVyZSB0aGF0IG1pZ2h0IHRyaXAgdXMgdXAgbGF0ZXIgaWYgd2UgYXJlbid0IGNhcmVmdWwuIEJldHRlciB0byBiZSBwcm9hY3RpdmUgYW5kIGVuc3VyZSBldmVyeXRoaW5nJ3Mga29zaGVyIHdpdGggdGhhdCBwYXJhbWV0ZXIgdXBmcm9udC4gTm8gcG9pbnQgaW4gaGl0dGluZyBhIHNuYWcgZG93biB0aGUgbGluZSBkdWUgdG8gYSBtaXNzaW5nIGZsYWcgb3IgaW5jb21wYXRpYmxlIHNldHRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxODUsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNTo1MS4zNDc3Nzg4N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxMTkyOTYwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQVFJfVE9fQlVGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2JwZi5oPTEwNDg9ZW51bSBicGZfcmVnX3R5cGUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMDc3LVxcdFBUUl9UT19BUkVOQSxcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjEwNzg6XFx0UFRSX1RPX0JVRixcXHRcXHQgLyogcmVnIHBvaW50cyB0byBhIHJlYWQvd3JpdGUgYnVmZmVyICovXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMDc5LVxcdFBUUl9UT19GVU5DLFxcdFxcdCAvKiByZWcgcG9pbnRzIHRvIGEgYnBmIHByb2dyYW0gZnVuY3Rpb24gKi9cXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9Njg0Mj1ib29sIGJ0Zl9jdHhfYWNjZXNzKGludCBvZmYsIGludCBzaXplLCBlbnVtIGJwZl9hY2Nlc3NfdHlwZSB0eXBlLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02OTY5LVxcdFxcdCAgICAodHlwZSA9PSBQVFJfVE9fQVJFTkEgfHxcXG5rZXJuZWwvYnBmL2J0Zi5jOjY5NzA6XFx0XFx0ICAgICAodHlwZSA9PSBQVFJfVE9fQlVGIFxcdTAwMjZcXHUwMDI2IChmbGFnIFxcdTAwMjYgUFRSX01BWUJFX05VTEwpKSkpIHtcXG5rZXJuZWwvYnBmL2J0Zi5jLTY5NzEtXFx0XFx0XFx0aW5mby1cXHUwMDNlcmVnX3R5cGUgPSBjdHhfYXJnX2luZm8tXFx1MDAzZXJlZ190eXBlO1xcbi0tXFxua2VybmVsL2JwZi9sb2cuYz0zOTk9Y29uc3QgY2hhciAqcmVnX3R5cGVfc3RyKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGVudW0gYnBmX3JlZ190eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvYnBmL2xvZy5jLTQyMC1cXHRcXHRbUFRSX1RPX0FSRU5BXVxcdFxcdD0gXFxcImFyZW5hXFxcIixcXG5rZXJuZWwvYnBmL2xvZy5jOjQyMTpcXHRcXHRbUFRSX1RPX0JVRl1cXHRcXHQ9IFxcXCJidWZcXFwiLFxcbmtlcm5lbC9icGYvbG9nLmMtNDIyLVxcdFxcdFtQVFJfVE9fRlVOQ11cXHRcXHQ9IFxcXCJmdW5jXFxcIixcXG4tLVxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYz0xNzI9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfaXRlcl9yZWcgYnBmX21hcF9lbGVtX3JlZ19pbmZvID0ge1xcbi0tXFxua2VybmVsL2JwZi9tYXBfaXRlci5jLTE4MC1cXHRcXHR7IG9mZnNldG9mKHN0cnVjdCBicGZfaXRlcl9fYnBmX21hcF9lbGVtLCBrZXkpLFxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYzoxODE6XFx0XFx0ICBQVFJfVE9fQlVGIHwgUFRSX01BWUJFX05VTEwgfCBNRU1fUkRPTkxZIH0sXFxua2VybmVsL2JwZi9tYXBfaXRlci5jLTE4Mi1cXHRcXHR7IG9mZnNldG9mKHN0cnVjdCBicGZfaXRlcl9fYnBmX21hcF9lbGVtLCB2YWx1ZSksXFxua2VybmVsL2JwZi9tYXBfaXRlci5jOjE4MzpcXHRcXHQgIFBUUl9UT19CVUYgfCBQVFJfTUFZQkVfTlVMTCB9LFxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYy0xODQtXFx0fSxcXG4tLVxcbmtlcm5lbC9icGYvc3RhdGVzLmM9NTA3PXN0YXRpYyBib29sIHJlZ3NhZmUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJvbGQsXFxuLS1cXG5rZXJuZWwvYnBmL3N0YXRlcy5jLTYxMi1cXHRjYXNlIFBUUl9UT19NRU06XFxua2VybmVsL2JwZi9zdGF0ZXMuYzo2MTM6XFx0Y2FzZSBQVFJfVE9fQlVGOlxcbmtlcm5lbC9icGYvc3RhdGVzLmMtNjE0LVxcdGNhc2UgUFRSX1RPX1RQX0JVRkZFUjpcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0zNDc9c3RhdGljIGJvb2wgcmVnX25vdF9udWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzU4LVxcdFxcdHR5cGUgPT0gUFRSX1RPX1hEUF9TT0NLIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjM1OTpcXHRcXHR0eXBlID09IFBUUl9UT19CVUYgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzYwLVxcdFxcdHR5cGUgPT0gUFRSX1RPX01BUF9WQUxVRSB8fFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTY0MTY9c3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NjAwLVxcdFxcdFxcdFxcdFxcdCAgICAgIHZhbHVlX3JlZ25vKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjYwMTpcXHR9IGVsc2UgaWYgKGJhc2VfdHlwZShyZWctXFx1MDAzZXR5cGUpID09IFBUUl9UT19CVUYgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjYwMi1cXHRcXHQgICAhdHlwZV9tYXlfYmVfbnVsbChyZWctXFx1MDAzZXR5cGUpKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzAzNj1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzA3NS1cXHRcXHRcXHRcXHRcXHQgICAgICAgemVyb19zaXplX2FsbG93ZWQpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo3MDc2OlxcdGNhc2UgUFRSX1RPX0JVRjpcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzA3Ny1cXHRcXHRpZiAodHlwZV9pc19yZG9ubHlfbWVtKHJlZy1cXHUwMDNldHlwZSkpIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04MTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3JlZ190eXBlcyBtZW1fdHlwZXMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE5My1cXHRcXHRQVFJfVE9fTUVNIHwgTUVNX1JJTkdCVUYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjgxOTQ6XFx0XFx0UFRSX1RPX0JVRixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE5NS1cXHRcXHRQVFJfVE9fQlRGX0lEIHwgUFRSX1RSVVNURUQsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODUxMj1zdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1NTUtXFx0Y2FzZSBQVFJfVE9fTUVNIHwgTUVNX1JJTkdCVUY6XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjg1NTY6XFx0Y2FzZSBQVFJfVE9fQlVGOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NTU3OlxcdGNhc2UgUFRSX1RPX0JVRiB8IE1FTV9SRE9OTFk6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1NTgtXFx0Y2FzZSBQVFJfVE9fQVJFTkE6XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQ1NjA9c3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ2MjctXFx0Y2FzZSBQVFJfVE9fTUVNOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDYyODpcXHRjYXNlIFBUUl9UT19CVUY6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NjI5LVxcdGNhc2UgUFRSX1RPX0ZVTkM6XFxuLS1cXG5uZXQvY29yZS9icGZfc2tfc3RvcmFnZS5jPTg5OD1zdGF0aWMgc3RydWN0IGJwZl9pdGVyX3JlZyBicGZfc2tfc3RvcmFnZV9tYXBfcmVnX2luZm8gPSB7XFxuLS1cXG5uZXQvY29yZS9icGZfc2tfc3RvcmFnZS5jLTkwOC1cXHRcXHR7IG9mZnNldG9mKHN0cnVjdCBicGZfaXRlcl9fYnBmX3NrX3N0b3JhZ2VfbWFwLCB2YWx1ZSksXFxubmV0L2NvcmUvYnBmX3NrX3N0b3JhZ2UuYzo5MDk6XFx0XFx0ICBQVFJfVE9fQlVGIHwgUFRSX01BWUJFX05VTEwgfSxcXG5uZXQvY29yZS9icGZfc2tfc3RvcmFnZS5jLTkxMC1cXHR9LFxcbi0tXFxubmV0L2NvcmUvc29ja19tYXAuYz0xOTcxPXN0YXRpYyBzdHJ1Y3QgYnBmX2l0ZXJfcmVnIHNvY2tfbWFwX2l0ZXJfcmVnID0ge1xcbi0tXFxubmV0L2NvcmUvc29ja19tYXAuYy0xOTc5LVxcdFxcdHsgb2Zmc2V0b2Yoc3RydWN0IGJwZl9pdGVyX19zb2NrbWFwLCBrZXkpLFxcbm5ldC9jb3JlL3NvY2tfbWFwLmM6MTk4MDpcXHRcXHQgIFBUUl9UT19CVUYgfCBQVFJfTUFZQkVfTlVMTCB8IE1FTV9SRE9OTFkgfSxcXG5uZXQvY29yZS9zb2NrX21hcC5jLTE5ODEtXFx0XFx0eyBvZmZzZXRvZihzdHJ1Y3QgYnBmX2l0ZXJfX3NvY2ttYXAsIHNrKSxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYz04PWNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYy05LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVyX2J1Zl9udWxsX2ZhaWwuYzoxMDovKiBWZXJpZnkgdGhhdCB0aGUgdmVyaWZpZXIgcmVqZWN0cyBkaXJlY3QgYWNjZXNzIHRvIG51bGxhYmxlIFBUUl9UT19CVUYuICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJfYnVmX251bGxfZmFpbC5jLTExLVNFQyhcXFwiaXRlci9icGZfbWFwX2VsZW1cXFwiKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJfYnVmX251bGxfZmFpbC5jPTEzPWludCBpdGVyX2J1Zl9udWxsX2RlcmVmKHN0cnVjdCBicGZfaXRlcl9fYnBmX21hcF9lbGVtICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcl9idWZfbnVsbF9mYWlsLmMtMTUtXFx0LypcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcl9idWZfbnVsbF9mYWlsLmM6MTY6XFx0ICogY3R4LVxcdTAwM2VrZXkgaXMgUFRSX1RPX0JVRiB8IFBUUl9NQVlCRV9OVUxMIHwgTUVNX1JET05MWS5cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcl9idWZfbnVsbF9mYWlsLmMtMTctXFx0ICogRGlyZWN0IGFjY2VzcyB3aXRob3V0IG51bGwgY2hlY2sgbXVzdCBiZSByZWplY3RlZC5cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wdHJfdG9fYnVmLmM9Nz1TRUMoXFxcIml0ZXIvYnBmX21hcF9lbGVtXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHRyX3RvX2J1Zi5jOjg6X19kZXNjcmlwdGlvbihcXFwiUFRSX1RPX0JVRjogcmVqZWN0IG5lZ2F0aXZlIGNvbnN0IG9mZnNldFxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3B0cl90b19idWYuYy05LV9fZmFpbHVyZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNTo1Mi43NTk3MTMyNTNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI0NzY5NjA3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgRml4KipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwcmV0dHkgZnVuZGFtZW50YWwgaXNzdWUgaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWJvdXQgYSByZWdpc3RlciBiZWluZyBpbmNvcnJlY3RseSBhc3Nlc3NlZCBhcyBub24tbnVsbCBhZnRlciBhIGNvbmRpdGlvbmFsIGp1bXAuIFRoaXMga2luZCBvZiB2ZXJpZmllciBsb2dpYyBjaGFuZ2UgaXMgc2VyaW91czsgaXQgaW1wYWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdGhlIHJlbGlhYmlsaXR5IG9mIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBpdHNlbGYuIFNvLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcuXG5cbk15IHRoaW5raW5nIGlzIHRoYXQgYEJQRl9TWVNDQUxMYCBzZWVtcyBsaWtlIGEgc3VmZmljaWVudCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBlbmFibGUgZm9yIHRlc3RpbmcuIEl0IGFwcGVhcnMgdGhhdCBgUFRSX1RPX0JVRmAgaXMgcmVsZXZhbnQgYmVjYXVzZSBvZiBpdHMgdXNlIGluIGl0ZXJhdG9ycy5cblxuTm93LCByZWdhcmRpbmcgdGhlIGZvY3VzIHN5bWJvbHMsIEkgaW5pdGlhbGx5IGhhZCBgYnBmX2NoZWNrYCBpbiBtaW5kLiBCdXQsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gYGJwZl9jaGVja2AgaXMgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIHRoZSB2ZXJpZmllciwgc28gaXQgbWFrZXMgc2Vuc2UgYXMgYSBzdGFydGluZyBwb2ludC4gYGNoZWNrX2NvbmRfam1wX29wYCBhbmQgYGRvX2NoZWNrX2luc25gIGFyZSBib3RoIHN0YXRpYyBmdW5jdGlvbnMsIHNvIEkgY2FuJ3QgZGlyZWN0bHkgdGFyZ2V0IHRoZW0uIEhvd2V2ZXIsIGBicGZfY2hlY2tgIGlzIGV4cG9ydGVkIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgbm9uLXN0YXRpYy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgYnBmX2NoZWNrYCBpc24ndCBzdGF0aWMuIEl0J3MgdGhlIG1vc3QgYXBwcm9wcmlhdGUgdGFyZ2V0IGlmIGl0IGlzbid0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU5OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNTo1OC4wMDc0MTE5NDVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTAxODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBicGZfY2hlY2tcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTIxMDAxPXN0YXRpYyBpbnQgYnBmX3Byb2dfdmVyaWZ5X3NpZ25hdHVyZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTE3LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMTExODppbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExMTktXFx0ICAgICAgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjM1OjU4LjA1MzkxODczWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzYyNzcxNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkNoZWNraW5nIEJQRiBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGBicGZfY2hlY2tgIGlzIGNvbmZpcm1lZCBhcyBub24tc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIE5vdywgbGV0IG1lIHRoaW5rIHRocm91Z2ggdGhlIHJlbGF0ZWQga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgYmlnIG9uZSwgdGhlIGNvcmUsIHRoZSBmb3VuZGF0aW9uYWwgc2V0dGluZyB0aGF0J3MgYWxtb3N0IGFsd2F5cyBuZWNlc3NhcnkuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gY29uc2lkZXIgb3RoZXJzLiBBaCB5ZXMsIGBDT05GSUdfWERQX1NPQ0tFVFNgIC0gdGhhdCdzIHJlbGV2YW50LCBlc3BlY2lhbGx5IGlmIEknbSBkZWFsaW5nIHdpdGggYFBUUl9UT19YRFBfU09DS2AuIFRoYXQncyBhIGtleSBjb25zaWRlcmF0aW9uLiBUaGVuIHRoZXJlJ3MgYENPTkZJR19CUEZfSklUYC4gSXQncyBwb3RlbnRpYWxseSB1c2VmdWwsIGJ1dCBub3QgYXMgY3JpdGljYWwgYXMgdGhlIG1haW4gYEJQRl9TWVNDQUxMYC4gVWx0aW1hdGVseSwgSSB0aGluayBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgZXNzZW50aWFsIG9uZSB0byBmb2N1cyBvbi4gT2theSwgbGV0J3MgbW92ZSBmb3J3YXJkIGJ5IGNhbGxpbmcgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjY4LCJPdXRwdXRUb2tlbnMiOjEwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjM2OjAyLjAzMDE5OTAyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMDQ5NTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiWERQX1NPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIGEgcmVnaXN0ZXIgY291bGQgYmUgaW5jb3JyZWN0bHkgaW5mZXJyZWQgYXMgbm90IG51bGwgYWZ0ZXIgYSBjb25kaXRpb25hbCBqdW1wLiBUaGlzIGlzIGEgY29yZSB2ZXJpZmllciBsb2dpYyBjaGFuZ2UgdGhhdCBhZmZlY3RzIHByb2dyYW0gc2FmZXR5IGFuZCB2ZXJpZmljYXRpb24sIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlhEUF9TT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBhIHJlZ2lzdGVyIGNvdWxkIGJlIGluY29ycmVjdGx5IGluZmVycmVkIGFzIG5vdCBudWxsIGFmdGVyIGEgY29uZGl0aW9uYWwganVtcC4gVGhpcyBpcyBhIGNvcmUgdmVyaWZpZXIgbG9naWMgY2hhbmdlIHRoYXQgYWZmZWN0cyBwcm9ncmFtIHNhZmV0eSBhbmQgdmVyaWZpY2F0aW9uLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwMTozNjowMi4xMDEyNTUwMzFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NzE5MjQ5OTk4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjM2OjAyLjEwMTcwMjcyMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyODcxOTIwNDg2OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIncyBgY2hlY2tfY29uZF9qbXBfb3BgIGZ1bmN0aW9uIHdoZXJlIGl0IGluY29ycmVjdGx5IGluZmVycmVkIHRoYXQgYSBwb2ludGVyIHdhcyBub3QgbnVsbCB3aGVuIGNvbXBhcmVkIHRvIGFub3RoZXIgcG9pbnRlciB0aGF0IGNvdWxkIGFsc28gYmUgbnVsbCAob3IgdW50cnVzdGVkKS4gVGhpcyBidWcgY291bGQgYWxsb3cgYSBCUEYgcHJvZ3JhbSB0byBieXBhc3MgbnVsbCBjaGVja3MsIGxlYWRpbmcgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGludmFsaWQgYWNjZXNzIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MsIHdoaWNoIGFyZSB0aGUgc3BlY2lmaWMgdGFyZ2V0cyBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1NDU0OTYxZTMwMzg3ZjhmYzk3OTFkOGE1NjA2N2RiNWZhM2EyMWJjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjIgMDE6MzM6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IGUwMzZhZTIwYmY2YjkuLjg5N2VjNGIzOGRlYWIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTM1NSw2ICszNTUsOCBAQCBzdGF0aWMgYm9vbCByZWdfbm90X251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdFxuIFx0dHlwZSA9IGJhc2VfdHlwZSh0eXBlKTtcbiBcdHJldHVybiB0eXBlID09IFBUUl9UT19TT0NLRVQgfHxcbiBcdFx0dHlwZSA9PSBQVFJfVE9fVENQX1NPQ0sgfHxcbitcdFx0dHlwZSA9PSBQVFJfVE9fWERQX1NPQ0sgfHxcbitcdFx0dHlwZSA9PSBQVFJfVE9fQlVGIHx8XG4gXHRcdHR5cGUgPT0gUFRSX1RPX01BUF9WQUxVRSB8fFxuIFx0XHR0eXBlID09IFBUUl9UT19NQVBfS0VZIHx8XG4gXHRcdHR5cGUgPT0gUFRSX1RPX1NPQ0tfQ09NTU9OIHx8XG5AQCAtMTcwODUsNyArMTcwODcsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHQgKi9cbiBcdGlmICghaXNfam1wMzIgXHUwMDI2XHUwMDI2IEJQRl9TUkMoaW5zbi1cdTAwM2Vjb2RlKSA9PSBCUEZfWCBcdTAwMjZcdTAwMjZcbiBcdCAgICBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIHNyY19yZWcpIFx1MDAyNlx1MDAyNiBfX2lzX3BvaW50ZXJfdmFsdWUoZmFsc2UsIGRzdF9yZWcpIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cdTAwM2V0eXBlKSAhPSB0eXBlX21heV9iZV9udWxsKGRzdF9yZWctXHUwMDNldHlwZSkgXHUwMDI2XHUwMDI2XG4gXHQgICAgYmFzZV90eXBlKHNyY19yZWctXHUwMDNldHlwZSkgIT0gUFRSX1RPX0JURl9JRCBcdTAwMjZcdTAwMjZcbiBcdCAgICBiYXNlX3R5cGUoZHN0X3JlZy1cdTAwM2V0eXBlKSAhPSBQVFJfVE9fQlRGX0lEKSB7XG4gXHRcdGVxX2JyYW5jaF9yZWdzID0gTlVMTDtcbkBAIC0xNzEwMSw5ICsxNzEwMiwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdFx0aWYgKGVxX2JyYW5jaF9yZWdzKSB7XG4tXHRcdFx0aWYgKHR5cGVfbWF5X2JlX251bGwoc3JjX3JlZy1cdTAwM2V0eXBlKSlcbitcdFx0XHQvKiBzcmMgPT0gZHN0IFx1MDAyNlx1MDAyNiBkc3QgIT0gTlVMTCA9XHUwMDNlIHNyYyAhPSBOVUxMICovXG4rXHRcdFx0aWYgKHJlZ19ub3RfbnVsbChlbnYsIGRzdF9yZWcpIFx1MDAyNlx1MDAyNiB0eXBlX21heV9iZV9udWxsKHNyY19yZWctXHUwMDNldHlwZSkpXG4gXHRcdFx0XHRtYXJrX3B0cl9ub3RfbnVsbF9yZWcoXHUwMDI2ZXFfYnJhbmNoX3JlZ3NbaW5zbi1cdTAwM2VzcmNfcmVnXSk7XG4tXHRcdFx0ZWxzZVxuK1x0XHRcdC8qIHNyYyA9PSBkc3QgXHUwMDI2XHUwMDI2IHNyYyAhPSBOVUxMID1cdTAwM2UgZHN0ICE9IE5VTEwgKi9cbitcdFx0XHRpZiAocmVnX25vdF9udWxsKGVudiwgc3JjX3JlZykgXHUwMDI2XHUwMDI2IHR5cGVfbWF5X2JlX251bGwoZHN0X3JlZy1cdTAwM2V0eXBlKSlcbiBcdFx0XHRcdG1hcmtfcHRyX25vdF9udWxsX3JlZyhcdTAwMjZlcV9icmFuY2hfcmVnc1tpbnNuLVx1MDAzZWRzdF9yZWddKTtcbiBcdFx0fVxuIFx0fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuY1xuaW5kZXggM2QxZThkZTQzOTBjMi4uMDg1ZDExNDY4OTZjMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5jXG5AQCAtMyw3ICszLDkgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9icGYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkYm9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbisjaW5jbHVkZSBcImJwZl9rZnVuY3MuaFwiXG4gXG4gc3RydWN0IHtcbiBcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfWFNLTUFQKTtcbkBAIC0yNjQsNCArMjY2LDQ2IEBAIF9fbmFrZWQgdm9pZCBqbmVfcmVnX3JlZ19udWxsX2NoZWNrKHZvaWQpXG4gICAgICAgICA6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbisvKlxuKyAqIEEgY29tcGFyaXNvbiBiZXR3ZWVuIFBUUl9UT19NRU0gfCBNRU1fUkRPTkxZIHwgUFRSX1VOVFJVU1RFRCBhbmRcbisgKiBQVFJfVE9fTUFQX1ZBTFVFX09SX05VTEwgc2hvdWxkIG5vdCBpbmZlciB0aGF0IG1hcCBwb2ludGVyIGlzIG5vdCBudWxsLlxuKyAqIEEgYnVnIGluIGNoZWNrX2NvbmRfam1wX29wKCkgbWFkZSBzdWNoIGluZmVyZW5jZSBwb3NzaWJsZS5cbisgKi9cbitTRUMoXCJyYXdfdHBcIilcbitfX2ZhaWx1cmVcbitfX21zZyhcImVycm9yOiBpbnZhbGlkIGRlcmVmZXJlbmNlIG9mIFIwICh4ZHBfc29ja19vcl9udWxsKVwiKVxuK19fbXNnKFwiXHUwMDNlXHUwMDNlXHUwMDNlIDEwIHwgKDYxKSByMCA9ICoodTMyICopKHIwICswKVwiKVxuK19fbmFrZWQgdm9pZCB1bnRydXN0ZWRfbWVtX2RvZXNfbm90X2luZmVyX21hcF92YWx1ZV9ub25fbnVsbCh2b2lkKVxuK3tcbitcdGFzbSB2b2xhdGlsZSAoXCJcdFx0XHRcdFx0XFxcbitcdC8qIHI4ID0gYnBmX3Jkb25seV9jYXN0KDAsIDApOyAqL1x0XHRcXFxuK1x0cjIgPSAwO1x0XHRcdFx0XHRcdFxcXG4rXHRjYWxsICVbYnBmX3Jkb25seV9jYXN0XTtcdFx0XHRcXFxuK1x0cjYgPSByMDtcdFx0XHRcdFx0XFxcbitcdC8qIHIwID0gYnBmX21hcF9sb29rdXBfZWxlbShtYXBfaGFzaCwgXHUwMDI2a2V5KTsgKi9cdFxcXG4rXHQqKHU2NCAqKShyMTAgLSA4KSA9IDA7XHRcdFx0XHRcXFxuK1x0cjEgPSAlW21hcF94c2ttYXBdIGxsO1x0XHRcdFx0XFxcbitcdHIyID0gcjEwO1x0XHRcdFx0XHRcXFxuK1x0cjIgKz0gLTg7XHRcdFx0XHRcdFxcXG4rXHRjYWxsICVbYnBmX21hcF9sb29rdXBfZWxlbV07XHRcdFx0XFxcbitcdC8qXHRcdFx0XHRcdFx0XFxcbitcdCAqIGJ1Z2d5IHZlcmlmaWVyIGFzc3VtZWQgdGhhdCByNiBjYW4ndCBiZSBudWxsXHRcXFxuK1x0ICogYW5kIG1hcmtlZCByMCBub24tbnVsbCBhcyB3ZWxsLlx0XHRcXFxuK1x0ICovXHRcdFx0XHRcdFx0XFxcbitcdGlmIHI2ICE9IHIwIGdvdG8gMWY7XHRcdFx0XHRcXFxuK1x0cjAgPSAqKHUzMiAqKShyMCArIDApO1x0XHRcdFx0XFxcbisxOlx0cjAgPSAwO1x0XHRcdFx0XHRcdFxcXG4rXHRleGl0O1x0XHRcdFx0XHRcdFxcXG4rXCJcdDpcbitcdDogX19pbW0oYnBmX3Jkb25seV9jYXN0KSxcbitcdCAgX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksXG4rXHQgIF9faW1tX2FkZHIobWFwX3hza21hcClcbitcdDogX19jbG9iYmVyX2FsbCk7XG4rfVxuK1xuK3ZvaWQga2Z1bmNfcm9vdCh2b2lkKVxuK3tcbitcdGJwZl9yZG9ubHlfY2FzdCgwLCAwKTtcbit9XG4rXG4gY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDE6MzY6MDIuMTAxNzAzNDcxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NzE5MjAyOTAxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AsIGFuZCBpdCdzIGZpeGluZyBhIHN1YnRsZSBidXQgY3JpdGljYWwgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIncyBwb2ludGVyIGFuYWx5c2lzLiBFc3NlbnRpYWxseSwgdGhlIHZlcmlmaWVyIHdhc24ndCBjb3JyZWN0bHkgaGFuZGxpbmcgY29uZGl0aW9uYWwganVtcHMgYW5kIGluZmVycmluZyBub24tbnVsbCBwb2ludGVycy4gVGhlIGZpeCBpbnZvbHZlcyBhZGRpbmcgYFBUUl9UT19YRFBfU09DS2AgYW5kIGBQVFJfVE9fQlVGYCB0byBgcmVnX25vdF9udWxsKClgLCB3aGljaCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTG9va2luZyBhdCB0aGUgY29kZSBjaGFuZ2VzLCBpdCBhcHBlYXJzIHRoZSBidWcgbWFuaWZlc3RlZCB3aGVuIGNvbXBhcmluZyBhbiB1bnRydXN0ZWQgcG9pbnRlciAod2hpY2ggY291bGQgYmUgYW55dGhpbmcsIGluY2x1ZGluZyBOVUxMKSB3aXRoIGEgbWFwIHZhbHVlIHBvaW50ZXIgKHdoaWNoIGNvdWxkIGFsc28gYmUgTlVMTCkuIFRoZSB2ZXJpZmllciB3YXMgaW5jb3JyZWN0bHkgYXNzdW1pbmcgdGhlIG1hcCB2YWx1ZSBwb2ludGVyIHdhcyBub24tbnVsbCBhZnRlciBhbiBlcXVhbGl0eSBjaGVjaywgKmV2ZW4qIGlmIHRoZSB1bnRydXN0ZWQgcG9pbnRlciAqY291bGQqIGhhdmUgYmVlbiBOVUxMLiBUaGlzIG1lYW5zIHRoYXQgYSBjb25kaXRpb25hbCBqdW1wLCBpZiB0cnVlLCB3b3VsZCB0aGVuIGFsbG93IGEgc3Vic2VxdWVudCBkZXJlZmVyZW5jZSBvZiB0aGF0IFwidmVyaWZpZWQgbm9uLW51bGxcIiBtYXAgdmFsdWUgcG9pbnRlciAqd2l0aG91dCogYSBwcm9wZXIgbnVsbCBjaGVjaywgYW5kIHRoZSByZXN1bHRzIGNvdWxkIGJlIGNhdGFzdHJvcGhpYy5cblxuVGhlIHNwZWNpZmljIGNoYW5nZXMgdG8gYGNoZWNrX2NvbmRfam1wX29wKClgIGFuZCB0aGUgcG9pbnRlciBtYXJraW5nIGxvZ2ljIGFyZSB0YXJnZXRlZCBhdCBhZGRyZXNzaW5nIHRoaXMgZmxhd2VkIGluZmVyZW5jZS4gVGhlIG9sZCBsb2dpYyB3YXMgdG9vIHNpbXBsaXN0aWMsIGFuZCB0aGUgbmV3IGxvZ2ljIHNlZW1zIHRvIGNvcnJlY3QgZm9yIHRoZSBlcnJvbmVvdXMgYXNzdW1wdGlvbiB0aGF0IG9uZSBzaWRlIG9mIGFuIGVxdWFsaXR5IGNvbXBhcmlzb24gYmVpbmcgbm9uLW51bGwgaW1wbGllZCB0aGUgb3RoZXIgc2lkZSB3YXMuIFRoZSB1cGRhdGVkIGxvZ2ljIGNvbnNpZGVycyBib3RoIHBvc3NpYmlsaXRpZXM6IHRoZSBzcmMgcG9pbnRlciBub3QgYmVpbmcgbnVsbCBpbXBsaWVzIHRoZSBkZXN0IHBvaW50ZXIgaXMgYWxzbyBub3QgbnVsbCwgYW5kIHZpY2UgdmVyc2EuXG5cblRoaXMgaXMgYSBjbGVhciBjYXNlIG9mIGEgdHlwZSBjb25mdXNpb24gdnVsbmVyYWJpbGl0eTsgaXQncyBhIG1pc3NpbmcgbnVsbCBjaGVjayBpbnRyb2R1Y2VkIGJ5IGFuIGluY29ycmVjdCB2ZXJpZmllciBhc3N1bXB0aW9uLiBUaGUgY29uc2VxdWVuY2U/IFBvdGVudGlhbGx5IGludmFsaWQgbWVtb3J5IGFjY2VzcywgZWl0aGVyIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBvciBvdXQtb2YtYm91bmRzIHJlYWQvd3JpdGUgaWYgYW4gYXR0YWNrZXIgd2VyZSBhYmxlIHRvIGNvbnRyb2wgdGhlIHVudHJ1c3RlZCBwb2ludGVyLCBhbmQgSSBuZWVkIHRvIGtlZXAgdGhpcyBpbiBtaW5kLiBUaGlzICppc24ndCogYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIEtBU0FOIG9yIHN0YW5kYXJkIGZhdWx0IGhhbmRsZXJzIHdvdWxkIGxpa2VseSBjYXRjaCB0aGUgcmVzdWx0YW50IGludmFsaWQgbWVtb3J5IGFjY2VzcywgYW5kIEtNU0FOIGlzICppcnJlbGV2YW50KiBoZXJlLiBTbyBJIGhhdmUgdG8gYmUgc3VyZSB0aGlzIGlzIG5vdCBhbiBpc3N1ZSB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LlxuXG5SaWdodCwgbGV0J3MganVzdCBtYWtlIGNlcnRhaW4gSSBoYXZlIHRoaXMgY29ycmVjdC4uLiBUaGUgdmVyaWZpZXIgbWFkZSB0aGUgKndyb25nKiBhc3N1bXB0aW9uLiBBIHJlZ2lzdGVyIHdhcyBpbmNvcnJlY3RseSBtYXJrZWQgYXMgbm90IG51bGwuIFRoaXMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSBteSByZWFzb25pbmcgaXMgb24gdHJhY2suIFRoaXMgY291bGQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgb3Igd29yc2UuIFRoaXMgaXNuJ3QgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYE5lZWRzS01TQU5gIGlzIGRlZmluaXRpdmVseSBgZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjc1LCJPdXRwdXRUb2tlbnMiOjE3MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDAxOjQwOjQ5LjI5MzczNTY5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyJ3MgYGNoZWNrX2NvbmRfam1wX29wYCBmdW5jdGlvbiB3aGVyZSBpdCBpbmNvcnJlY3RseSBpbmZlcnJlZCB0aGF0IGEgcG9pbnRlciB3YXMgbm90IG51bGwgd2hlbiBjb21wYXJlZCB0byBhbm90aGVyIHBvaW50ZXIgdGhhdCBjb3VsZCBhbHNvIGJlIG51bGwgKG9yIHVudHJ1c3RlZCkuIFRoaXMgYnVnIGNvdWxkIGFsbG93IGEgQlBGIHByb2dyYW0gdG8gYnlwYXNzIG51bGwgY2hlY2tzLCBsZWFkaW5nIHRvIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBpbnZhbGlkIGFjY2VzcyBidWdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBwYWdlIGZhdWx0IGhhbmRsaW5nLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLCB3aGljaCBhcmUgdGhlIHNwZWNpZmljIHRhcmdldHMgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllcidzIGBjaGVja19jb25kX2ptcF9vcGAgZnVuY3Rpb24gd2hlcmUgaXQgaW5jb3JyZWN0bHkgaW5mZXJyZWQgdGhhdCBhIHBvaW50ZXIgd2FzIG5vdCBudWxsIHdoZW4gY29tcGFyZWQgdG8gYW5vdGhlciBwb2ludGVyIHRoYXQgY291bGQgYWxzbyBiZSBudWxsIChvciB1bnRydXN0ZWQpLiBUaGlzIGJ1ZyBjb3VsZCBhbGxvdyBhIEJQRiBwcm9ncmFtIHRvIGJ5cGFzcyBudWxsIGNoZWNrcywgbGVhZGluZyB0byBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLiBUaGVzZSB0eXBlcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBhbmQgaW52YWxpZCBhY2Nlc3MgYnVncyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgcGFnZSBmYXVsdCBoYW5kbGluZy4gVGhlIHBhdGNoIGRvZXMgbm90IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcywgd2hpY2ggYXJlIHRoZSBzcGVjaWZpYyB0YXJnZXRzIG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowhmjkd[1] Phase: Succeeded StartedAt: 2026-08-22 01:41:00 +0000 UTC FinishedAt: 2026-08-22 01:41:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-22 01:41:00 +0000 UTC FinishedAt: 2026-08-22 01:41:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2] Phase: Succeeded StartedAt: 2026-08-22 01:41:00 +0000 UTC FinishedAt: 2026-08-22 05:22:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-22 01:41:00 +0000 UTC FinishedAt: 2026-08-22 05:22:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-22 01:41:00 +0000 UTC FinishedAt: 2026-08-22 01:41:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-22 01:41:00 +0000 UTC FinishedAt: 2026-08-22 01:41:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflowhmjkd/series-workflowhmjkd-convert-artifact-917625488/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-22 01:41:10 +0000 UTC FinishedAt: 2026-08-22 01:57:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-22 01:41:10 +0000 UTC FinishedAt: 2026-08-22 01:57:52 +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:*d9b1ecf5-2def-4630-b1a5-311477cf14fb,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-workflowhmjkd/series-workflowhmjkd-convert-artifact-917625488/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": "80434fdd-55a9-4f12-be48-13b856e2341e", "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-workflowhmjkd/series-workflowhmjkd-build-action-760936214/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-22 01:41:10 +0000 UTC FinishedAt: 2026-08-22 01:57:42 +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:*d9b1ecf5-2def-4630-b1a5-311477cf14fb,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-workflowhmjkd/series-workflowhmjkd-convert-artifact-917625488/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": "80434fdd-55a9-4f12-be48-13b856e2341e", "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-workflowhmjkd/series-workflowhmjkd-build-action-760936214/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-22 01:57:52 +0000 UTC FinishedAt: 2026-08-22 01:57:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-22 01:57:52 +0000 UTC FinishedAt: 2026-08-22 01:57:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-22 01:57:52 +0000 UTC FinishedAt: 2026-08-22 01:58:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-22 01:57:52 +0000 UTC FinishedAt: 2026-08-22 01:57:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflowhmjkd/series-workflowhmjkd-convert-artifact-326971383/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-22 01:58:02 +0000 UTC FinishedAt: 2026-08-22 02:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-22 01:58:02 +0000 UTC FinishedAt: 2026-08-22 02:00:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*80434fdd-55a9-4f12-be48-13b856e2341e,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-workflowhmjkd/series-workflowhmjkd-build-action-760936214/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-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-22 02:00:30 +0000 UTC FinishedAt: 2026-08-22 02:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-22 02:00:30 +0000 UTC FinishedAt: 2026-08-22 02:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-22 02:00:30 +0000 UTC FinishedAt: 2026-08-22 02:17:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-22 02:00:30 +0000 UTC FinishedAt: 2026-08-22 02:17:21 +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:*d9b1ecf5-2def-4630-b1a5-311477cf14fb,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-workflowhmjkd/series-workflowhmjkd-convert-artifact-326971383/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": "671885e1-d316-41dd-bb7b-f8e03b581bd2", "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-workflowhmjkd/series-workflowhmjkd-build-action-3808821947/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-22 02:00:30 +0000 UTC FinishedAt: 2026-08-22 02:17:11 +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:*d9b1ecf5-2def-4630-b1a5-311477cf14fb,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-workflowhmjkd/series-workflowhmjkd-convert-artifact-326971383/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": "671885e1-d316-41dd-bb7b-f8e03b581bd2", "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-workflowhmjkd/series-workflowhmjkd-build-action-3808821947/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-22 02:17:21 +0000 UTC FinishedAt: 2026-08-22 02:17:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-22 02:17:21 +0000 UTC FinishedAt: 2026-08-22 02:17:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-22 02:17:21 +0000 UTC FinishedAt: 2026-08-22 02:19:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-22 02:17:21 +0000 UTC FinishedAt: 2026-08-22 02:19:29 +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:*671885e1-d316-41dd-bb7b-f8e03b581bd2,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-workflowhmjkd/series-workflowhmjkd-build-action-3808821947/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-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-22 02:19:39 +0000 UTC FinishedAt: 2026-08-22 05:22:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-22 02:19:39 +0000 UTC FinishedAt: 2026-08-22 05:22:20 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*80434fdd-55a9-4f12-be48-13b856e2341e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*671885e1-d316-41dd-bb7b-f8e03b581bd2,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-workflowhmjkd/series-workflowhmjkd-build-action-760936214/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-workflowhmjkd/series-workflowhmjkd-build-action-3808821947/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-22 02:19:39 +0000 UTC FinishedAt: 2026-08-22 02:19:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-22 02:19:39 +0000 UTC FinishedAt: 2026-08-22 02:19:43 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhmjkd/series-workflowhmjkd-convert-artifact-589220400/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-22 02:19:39 +0000 UTC FinishedAt: 2026-08-22 02:19:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-22 02:19:39 +0000 UTC FinishedAt: 2026-08-22 02:19:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-22 02:19:39 +0000 UTC FinishedAt: 2026-08-22 02:19:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-22 02:19:49 +0000 UTC FinishedAt: 2026-08-22 05:22:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmjkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"669e4fa766000ae4137bb02eb22ce75ba78ad32d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","XDP_SOCKETS"],"series_id":"94c3e993-94a3-442e-87fb-3f9288e11fe4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-22 02:19:49 +0000 UTC FinishedAt: 2026-08-22 05:22:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*80434fdd-55a9-4f12-be48-13b856e2341e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*671885e1-d316-41dd-bb7b-f8e03b581bd2,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-workflowhmjkd/series-workflowhmjkd-build-action-760936214/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-workflowhmjkd/series-workflowhmjkd-build-action-3808821947/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-workflowhmjkd/series-workflowhmjkd-convert-artifact-589220400/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}