Name: series-workflowm94fg Phase: Succeeded StartedAt: 2026-08-18 14:50:46 +0000 UTC FinishedAt: 2026-08-18 19:32:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[0] Phase: Succeeded StartedAt: 2026-08-18 14:50:46 +0000 UTC FinishedAt: 2026-08-18 15:42:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[0].run-triage Phase: Succeeded StartedAt: 2026-08-18 14:50:46 +0000 UTC FinishedAt: 2026-08-18 15:42:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "4f0a1e9019ea7a4d5a4c14d1ee954360838ef938", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "4f0a1e9019ea7a4d5a4c14d1ee954360838ef938", "config_name": "upstream-apparmor-kasan.config", "series_id": "bd96ea23-7f7a-4256-98ba-3c2bf4ac707e" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "d_make_discardable" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDE1OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZF9tYWtlX2Rpc2NhcmRhYmxlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgYnVnIGluIGBkX21ha2VfZGlzY2FyZGFibGVgIGJ5IHByZXZlbnRpbmcgYSBkZWNyZW1lbnQgb2YgYGRfbG9ja3JlZi5jb3VudGAgd2hlbiB0aGUgYERDQUNIRV9QRVJTSVNURU5UYCBmbGFnIGlzIG5vdCBzZXQuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgdW5kZXJmbG93IGFuZCBzdWJzZXF1ZW50IHVzZS1hZnRlci1mcmVlIG9mIHRoZSBgZGVudHJ5YCBzdHJ1Y3R1cmUuIFVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGRfbWFrZV9kaXNjYXJkYWJsZWAgdG8gcHJldmVudCBhbiB1bmRlcmZsb3cgb2YgYGRfbG9ja3JlZi5jb3VudGAgYW5kIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHdoZW4gYERDQUNIRV9QRVJTSVNURU5UYCBpcyBub3Qgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVkZTIGxheWVyIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdmFyaW91cyBmaWxlc3lzdGVtcyAoYXV0b2ZzLCBkZXZwdHMsIGxpYmZzLCB0cmFjZWZzKSBhbmQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxNTozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMwODljNDY4NmQ5MTI3ZTMzM2FjY2ZiZTA3M2I4YmMyYzI3N2ExZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAxNTozNzoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9kY2FjaGUuYyBiL2ZzL2RjYWNoZS5jXG5pbmRleCAzZTlhZjlkZTcwNzQ2Li44OTdhMTAwZTcyNzg0IDEwMDY0NFxuLS0tIGEvZnMvZGNhY2hlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2RjYWNoZS5jXG5AQCAtMTA0Niw3ICYjNDM7MTA0NiwxNiBAQCBFWFBPUlRfU1lNQk9MKGRwdXQpO1xuIHZvaWQgZF9tYWtlX2Rpc2NhcmRhYmxlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiB7XG4gXHRzcGluX2xvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4tXHRXQVJOX09OKCEoZGVudHJ5LVx1MDAzZWRfZmxhZ3MgXHUwMDI2IERDQUNIRV9QRVJTSVNURU5UKSk7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBEQ0FDSEVfUEVSU0lTVEVOVCByZWNvcmRzIHRoYXQgZF9tYWtlX3BlcnNpc3RlbnQoKSB0b29rIGEgcmVmZXJlbmNlLlxuJiM0MztcdCAqIElmIGl0IGlzIGNsZWFyIHRoZXJlIGlzIG5vIHN1Y2ggcmVmZXJlbmNlIHRvIHJldHVybiwgYW5kIGRyb3BwaW5nIG9uZVxuJiM0MztcdCAqIGFueXdheSB1bmRlcmZsb3dzIGRfbG9ja3JlZiBhbmQgZnJlZXMgYSBkZW50cnkgc29tZW9uZSBlbHNlIHN0aWxsXG4mIzQzO1x0ICogaG9sZHMuIFJlZnVzZSBpbnN0ZWFkLCBhcyBzZWxlY3RfY29sbGVjdF91bW91bnQoKSBhbHJlYWR5IGRvZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKFdBUk5fT04oIShkZW50cnktXHUwMDNlZF9mbGFncyBcdTAwMjYgRENBQ0hFX1BFUlNJU1RFTlQpKSkge1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFx0ZGVudHJ5LVx1MDAzZWRfZmxhZ3MgXHUwMDI2PSB+RENBQ0hFX1BFUlNJU1RFTlQ7XG4gXHRkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50LS07XG4gXHRmaW5pc2hfZHB1dChkZW50cnkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDE1OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RfbWFrZV9kaXNjYXJkYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGRfbWFrZV9kaXNjYXJkYWJsZWAgdG8gcHJldmVudCBhbiB1bmRlcmZsb3cgb2YgYGRfbG9ja3JlZi5jb3VudGAgYW5kIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHdoZW4gYERDQUNIRV9QRVJTSVNURU5UYCBpcyBub3Qgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVkZTIGxheWVyIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdmFyaW91cyBmaWxlc3lzdGVtcyAoYXV0b2ZzLCBkZXZwdHMsIGxpYmZzLCB0cmFjZWZzKSBhbmQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMwODljNDY4NmQ5MTI3ZTMzM2FjY2ZiZTA3M2I4YmMyYzI3N2ExZjcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAxNTozNzoxNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2RjYWNoZS5jIGIvZnMvZGNhY2hlLmMKaW5kZXggM2U5YWY5ZGU3MDc0Ni4uODk3YTEwMGU3Mjc4NCAxMDA2NDQKLS0tIGEvZnMvZGNhY2hlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZGNhY2hlLmMKQEAgLTEwNDYsNyAmIzQzOzEwNDYsMTYgQEAgRVhQT1JUX1NZTUJPTChkcHV0KTsKIHZvaWQgZF9tYWtlX2Rpc2NhcmRhYmxlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIHsKIAlzcGluX2xvY2soJmFtcDtkZW50cnktJmd0O2RfbG9jayk7Ci0JV0FSTl9PTighKGRlbnRyeS0mZ3Q7ZF9mbGFncyAmYW1wOyBEQ0FDSEVfUEVSU0lTVEVOVCkpOwomIzQzOwkvKgomIzQzOwkgKiBEQ0FDSEVfUEVSU0lTVEVOVCByZWNvcmRzIHRoYXQgZF9tYWtlX3BlcnNpc3RlbnQoKSB0b29rIGEgcmVmZXJlbmNlLgomIzQzOwkgKiBJZiBpdCBpcyBjbGVhciB0aGVyZSBpcyBubyBzdWNoIHJlZmVyZW5jZSB0byByZXR1cm4sIGFuZCBkcm9wcGluZyBvbmUKJiM0MzsJICogYW55d2F5IHVuZGVyZmxvd3MgZF9sb2NrcmVmIGFuZCBmcmVlcyBhIGRlbnRyeSBzb21lb25lIGVsc2Ugc3RpbGwKJiM0MzsJICogaG9sZHMuIFJlZnVzZSBpbnN0ZWFkLCBhcyBzZWxlY3RfY29sbGVjdF91bW91bnQoKSBhbHJlYWR5IGRvZXMuCiYjNDM7CSAqLwomIzQzOwlpZiAoV0FSTl9PTighKGRlbnRyeS0mZ3Q7ZF9mbGFncyAmYW1wOyBEQ0FDSEVfUEVSU0lTVEVOVCkpKSB7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCWRlbnRyeS0mZ3Q7ZF9mbGFncyAmYW1wOz0gfkRDQUNIRV9QRVJTSVNURU5UOwogCWRlbnRyeS0mZ3Q7ZF9sb2NrcmVmLmNvdW50LS07CiAJZmluaXNoX2RwdXQoZGVudHJ5KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTU6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExMgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDb3JlIFZGUyBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZF9tYWtlX2Rpc2NhcmRhYmxlYCB3aXRoaW4gYGZzL2RjYWNoZS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGEgcXVpY2sgY2hlY2sgb2YgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb25hbCBpbXBhY3QuIEl0IHNlZW1zIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYFdBUk5fT05gIGNoZWNrLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgdGhlIGBEQ0FDSEVfUEVSU0lTVEVOVGAgZmxhZy4gSWYgdGhhdCBmbGFnIGlzbiYjMzk7dCBzZXQsIGl0IGJhaWxzIG91dCBlYXJseSwgcHJldmVudGluZyBhIGRlY3JlbWVudCBvbiBgZF9sb2NrcmVmLmNvdW50YCB0aGF0IGNvdWxkIGxlYWQgdG8gYW4gdW5kZXJmbG93IGFuZCwgdWx0aW1hdGVseSwgYSB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb24uIENsYXNzaWMgbWVtb3J5IHNhZmV0eSBpc3N1ZS4KClRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgaW4gdGhlIFZGUyBsYXllciBpcyBub3Rld29ydGh5LiBXZSYjMzk7cmUgaW4gY29yZSBmaWxlIHN5c3RlbSB0ZXJyaXRvcnkgaGVyZSwgc28gYW55IGJ1ZyBpbiB0aGlzIGFyZWEgY291bGQgaGF2ZSBwcmV0dHkgc2VyaW91cyByZXBlcmN1c3Npb25zLiBJ4oCZbSB0aGlua2luZyBmdXp6aW5nIHRoaXMgZnVuY3Rpb24gbWlnaHQgYmUgd29ydGggbXkgdGltZS4gSXQmIzM5O3MgYW4gZXhwb3J0ZWQgZnVuY3Rpb24sIHNvIHRoYXQgaW5jcmVhc2VzIHRoZSBjaGFuY2VzIGl0JiMzOTtzIGFjY2Vzc2libGUgdGhyb3VnaCBtYW55IGNvZGVwYXRocyBhbmQgdGhlcmVmb3JlIGdvb2QgZnV6emluZyBzdXJmYWNlIGFyZWEuIEhvbGQgb24uLi4gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgcGxhY2VzIGBkX21ha2VfZGlzY2FyZGFibGVgIGlzIGNhbGxlZC4gVGhhdOKAmXMgdGhlIGtleSBoZXJlIOKAkyB1bmRlcnN0YW5kIHRoZSBjYWxsIHNpdGVzIHRvIHNlZSB3aGF0IHRoZSBpbnB1dHMgYXJlIGFuZCB3aGF0IGtpbmQgb2YgZnV6emluZyB0YXJnZXRzIG1ha2Ugc2Vuc2UuIEdvdHRhIGxvb2sgdXAgdGhlIGNhbGwgY2hhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZF9tYWtlX2Rpc2NhcmRhYmxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2F1dG9mcy9yb290LmM9NjI4PXN0YXRpYyBpbnQgYXV0b2ZzX2Rpcl91bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbi0tXG5mcy9hdXRvZnMvcm9vdC5jLTYzNC1cdHBfaW5vLVx1MDAzZWNvdW50LS07XG5mcy9hdXRvZnMvcm9vdC5jOjYzNTpcdGRfbWFrZV9kaXNjYXJkYWJsZShkZW50cnkpO1xuZnMvYXV0b2ZzL3Jvb3QuYy02MzYtXG4tLVxuZnMvYXV0b2ZzL3Jvb3QuYz02OTY9c3RhdGljIGludCBhdXRvZnNfZGlyX3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4tLVxuZnMvYXV0b2ZzL3Jvb3QuYy03MTYtXHRwX2luby1cdTAwM2Vjb3VudC0tO1xuZnMvYXV0b2ZzL3Jvb3QuYzo3MTc6XHRkX21ha2VfZGlzY2FyZGFibGUoZGVudHJ5KTtcbmZzL2F1dG9mcy9yb290LmMtNzE4LVx0ZF9pbm9kZShkZW50cnkpLVx1MDAzZWlfc2l6ZSA9IDA7XG4tLVxuZnMvZGNhY2hlLmM9MTA0ND1FWFBPUlRfU1lNQk9MKGRwdXQpO1xuZnMvZGNhY2hlLmMtMTA0NS1cbmZzL2RjYWNoZS5jOjEwNDY6dm9pZCBkX21ha2VfZGlzY2FyZGFibGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuZnMvZGNhY2hlLmMtMTA0Ny17XG4tLVxuZnMvZGNhY2hlLmMtMTA2Mi19XG5mcy9kY2FjaGUuYzoxMDYzOkVYUE9SVF9TWU1CT0woZF9tYWtlX2Rpc2NhcmRhYmxlKTtcbmZzL2RjYWNoZS5jLTEwNjQtXG4tLVxuZnMvZGV2cHRzL2lub2RlLmM9NTUzPXZvaWQgZGV2cHRzX3B0eV9raWxsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbi0tXG5mcy9kZXZwdHMvaW5vZGUuYy01NjAtXHRmc25vdGlmeV91bmxpbmsoZF9pbm9kZShkZW50cnktXHUwMDNlZF9wYXJlbnQpLCBkZW50cnkpO1xuZnMvZGV2cHRzL2lub2RlLmM6NTYxOlx0ZF9tYWtlX2Rpc2NhcmRhYmxlKGRlbnRyeSk7XG5mcy9kZXZwdHMvaW5vZGUuYy01NjItfVxuLS1cbmZzL2xpYmZzLmM9NTk3PXN0YXRpYyB2b2lkIF9fc2ltcGxlX3JlY3Vyc2l2ZV9yZW1vdmFsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9saWJmcy5jLTYyNC1cdFx0XHRcdGZzbm90aWZ5X2RlbGV0ZShpbm9kZSwgZF9pbm9kZSh2aWN0aW0pLCB2aWN0aW0pO1xuZnMvbGliZnMuYzo2MjU6XHRcdFx0XHRkX21ha2VfZGlzY2FyZGFibGUodmljdGltKTtcbmZzL2xpYmZzLmMtNjI2LVx0XHRcdH1cbi0tXG5mcy9saWJmcy5jPTgwNT1pbnQgc2ltcGxlX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuLS1cbmZzL2xpYmZzLmMtODA3LVx0X19zaW1wbGVfdW5saW5rKGRpciwgZGVudHJ5KTtcbmZzL2xpYmZzLmM6ODA4Olx0ZF9tYWtlX2Rpc2NhcmRhYmxlKGRlbnRyeSk7XG5mcy9saWJmcy5jLTgwOS1cdHJldHVybiAwO1xuLS1cbmZzL2xpYmZzLmM9ODEzPWludCBzaW1wbGVfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbi0tXG5mcy9saWJmcy5jLTgxOC1cdF9fc2ltcGxlX3JtZGlyKGRpciwgZGVudHJ5KTtcbmZzL2xpYmZzLmM6ODE5Olx0ZF9tYWtlX2Rpc2NhcmRhYmxlKGRlbnRyeSk7XG5mcy9saWJmcy5jLTgyMC1cdHJldHVybiAwO1xuLS1cbmZzL3RyYWNlZnMvZXZlbnRfaW5vZGUuYz04OTA9dm9pZCBldmVudGZzX3JlbW92ZV9ldmVudHNfZGlyKHN0cnVjdCBldmVudGZzX2lub2RlICplaSlcbi0tXG5mcy90cmFjZWZzL2V2ZW50X2lub2RlLmMtOTEwLVx0ZF9pbnZhbGlkYXRlKGRlbnRyeSk7XG5mcy90cmFjZWZzL2V2ZW50X2lub2RlLmM6OTExOlx0ZF9tYWtlX2Rpc2NhcmRhYmxlKGRlbnRyeSk7XG5mcy90cmFjZWZzL2V2ZW50X2lub2RlLmMtOTEyLX1cbi0tXG5pbmNsdWRlL2xpbnV4L2RjYWNoZS5oPTY0NT1zdHJ1Y3QgZGVudHJ5ICpkX21ha2VfcGVyc2lzdGVudChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTtcbmluY2x1ZGUvbGludXgvZGNhY2hlLmg6NjQ2OnZvaWQgZF9tYWtlX2Rpc2NhcmRhYmxlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7XG5pbmNsdWRlL2xpbnV4L2RjYWNoZS5oLTY0Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDk3CgkJCQkJCQlvdXRwdXQ6IDEyNQoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5OiBgZF9tYWtlX2Rpc2NhcmRhYmxlYCAmYW1wOyBSZWxhdGVkIEZ1bmN0aW9ucyoqCgpPa2F5LCB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEl0IGFkZHJlc3NlcyBhIHZ1bG5lcmFiaWxpdHkgaW4gYGRfbWFrZV9kaXNjYXJkYWJsZWAsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgYWNyb3NzIHNldmVyYWwgZmlsZXN5c3RlbXM6IGBhdXRvZnNgLCBgZGV2cHRzYCwgYGxpYmZzYCwgYW5kIGB0cmFjZWZzYC4gVGhhdCYjMzk7cyBhIGRlY2VudCBzcHJlYWQgYW5kIGluZGljYXRlcyBhIHBvdGVudGlhbGx5IGltcGFjdGZ1bCBpc3N1ZS4gRm9jdXNpbmcgb24gYGRfbWFrZV9kaXNjYXJkYWJsZWAgaXMgZGVmaW5pdGVseSB0aGUgcmlnaHQgYXBwcm9hY2guCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBmb3IgYW55IHVudXN1YWwgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuLi4gTm9wZSwgYGRfbWFrZV9kaXNjYXJkYWJsZWAgaXMgYmFrZWQgaW50byBgZnMvZGNhY2hlLmNgLCBzbyB3ZSBkb24mIzM5O3QgbmVlZCB0byB3b3JyeSBhYm91dCBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MuIFNvLCBgZF9tYWtlX2Rpc2NhcmRhYmxlYCBpcyB0aGUgcHJpbWFyeSBmb2N1cyBzeW1ib2wuIEkmIzM5O2xsIGFkZCB0aGF0IHRvIHRoZSBsaXN0LgoKQWgsIGFuZCBpdCYjMzk7cyBleHBvcnRlZCEgRXZlbiBiZXR0ZXIhIFRoaXMgbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZSBhbmQgbW9yZSBlYXNpbHkgdGFyZ2V0ZWQuCgpIbW0sIHRoaXMgYnVnIGlzIGFsc28gcmVsYXRlZCB0byBgRENBQ0hFX1BFUlNJU1RFTlRgLCB3aGljaCBnaXZlcyBtZSBwYXVzZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIsIHJlbGF0ZWQgZnVuY3Rpb25zIHdlIHNob3VsZCBjb25zaWRlci4gUmlnaHQsIGBkX21ha2VfcGVyc2lzdGVudGAuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvby4gSSYjMzk7bGwgYWRkIHRoYXQgdG8gdGhlIGxpc3Qgb2YgZm9jdXMgc3ltYm9scy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxNTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZF9tYWtlX2Rpc2NhcmRhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgZF9tYWtlX2Rpc2NhcmRhYmxlYCB0byBwcmV2ZW50IGFuIHVuZGVyZmxvdyBvZiBgZF9sb2NrcmVmLmNvdW50YCBhbmQgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgd2hlbiBgRENBQ0hFX1BFUlNJU1RFTlRgIGlzIG5vdCBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBWRlMgbGF5ZXIgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB2YXJpb3VzIGZpbGVzeXN0ZW1zIChhdXRvZnMsIGRldnB0cywgbGliZnMsIHRyYWNlZnMpIGFuZCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RfbWFrZV9kaXNjYXJkYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGRfbWFrZV9kaXNjYXJkYWJsZWAgdG8gcHJldmVudCBhbiB1bmRlcmZsb3cgb2YgYGRfbG9ja3JlZi5jb3VudGAgYW5kIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHdoZW4gYERDQUNIRV9QRVJTSVNURU5UYCBpcyBub3Qgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVkZTIGxheWVyIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdmFyaW91cyBmaWxlc3lzdGVtcyAoYXV0b2ZzLCBkZXZwdHMsIGxpYmZzLCB0cmFjZWZzKSBhbmQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxNTo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTU6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgYnVnIGluIGBkX21ha2VfZGlzY2FyZGFibGVgIGJ5IHByZXZlbnRpbmcgYSBkZWNyZW1lbnQgb2YgYGRfbG9ja3JlZi5jb3VudGAgd2hlbiB0aGUgYERDQUNIRV9QRVJTSVNURU5UYCBmbGFnIGlzIG5vdCBzZXQuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgdW5kZXJmbG93IGFuZCBzdWJzZXF1ZW50IHVzZS1hZnRlci1mcmVlIG9mIHRoZSBgZGVudHJ5YCBzdHJ1Y3R1cmUuIFVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMDg5YzQ2ODZkOTEyN2UzMzNhY2NmYmUwNzNiOGJjMmMyNzdhMWY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMTggMTU6Mzc6MTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9kY2FjaGUuYyBiL2ZzL2RjYWNoZS5jCmluZGV4IDNlOWFmOWRlNzA3NDYuLjg5N2ExMDBlNzI3ODQgMTAwNjQ0Ci0tLSBhL2ZzL2RjYWNoZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2RjYWNoZS5jCkBAIC0xMDQ2LDcgJiM0MzsxMDQ2LDE2IEBAIEVYUE9SVF9TWU1CT0woZHB1dCk7CiB2b2lkIGRfbWFrZV9kaXNjYXJkYWJsZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCiB7CiAJc3Bpbl9sb2NrKCZhbXA7ZGVudHJ5LSZndDtkX2xvY2spOwotCVdBUk5fT04oIShkZW50cnktJmd0O2RfZmxhZ3MgJmFtcDsgRENBQ0hFX1BFUlNJU1RFTlQpKTsKJiM0MzsJLyoKJiM0MzsJICogRENBQ0hFX1BFUlNJU1RFTlQgcmVjb3JkcyB0aGF0IGRfbWFrZV9wZXJzaXN0ZW50KCkgdG9vayBhIHJlZmVyZW5jZS4KJiM0MzsJICogSWYgaXQgaXMgY2xlYXIgdGhlcmUgaXMgbm8gc3VjaCByZWZlcmVuY2UgdG8gcmV0dXJuLCBhbmQgZHJvcHBpbmcgb25lCiYjNDM7CSAqIGFueXdheSB1bmRlcmZsb3dzIGRfbG9ja3JlZiBhbmQgZnJlZXMgYSBkZW50cnkgc29tZW9uZSBlbHNlIHN0aWxsCiYjNDM7CSAqIGhvbGRzLiBSZWZ1c2UgaW5zdGVhZCwgYXMgc2VsZWN0X2NvbGxlY3RfdW1vdW50KCkgYWxyZWFkeSBkb2VzLgomIzQzOwkgKi8KJiM0MzsJaWYgKFdBUk5fT04oIShkZW50cnktJmd0O2RfZmxhZ3MgJmFtcDsgRENBQ0hFX1BFUlNJU1RFTlQpKSkgewomIzQzOwkJc3Bpbl91bmxvY2soJmFtcDtkZW50cnktJmd0O2RfbG9jayk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KIAlkZW50cnktJmd0O2RfZmxhZ3MgJmFtcDs9IH5EQ0FDSEVfUEVSU0lTVEVOVDsKIAlkZW50cnktJmd0O2RfbG9ja3JlZi5jb3VudC0tOwogCWZpbmlzaF9kcHV0KGRlbnRyeSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDE1OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDkKCQkJCQkJCW91dHB1dDogMTYxCgkJCQkJCQl0aG91Z2h0czogNDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGVudHJ5IFJlZmVyZW5jZSBDb3VudGluZyBGaXgqKgoKT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZF9tYWtlX2Rpc2NhcmRhYmxlYCBpbiBgZnMvZGNhY2hlLmNgLiBUaGUgY29yZSBjaGFuZ2UgaXMgYSBjaGVjayBmb3IgYERDQUNIRV9QRVJTSVNURU5UYCBiZWZvcmUgZGVjcmVtZW50aW5nIGBkZW50cnktJmd0O2RfbG9ja3JlZi5jb3VudGAgYW5kIGNhbGxpbmcgYGZpbmlzaF9kcHV0KGRlbnRyeSlgLiBSaWdodCwgdGhpcyBpcyBhIGRlZmVuc2l2ZSBjaGVjayB0byBwcmV2ZW50IGEgcG90ZW50aWFsIHVuZGVyZmxvdyBpbiB0aGUgcmVmZXJlbmNlIGNvdW50LiBUaGUgY29kZSBjb21tZW50cyBleHBsYWluIHRoYXQgYERDQUNIRV9QRVJTSVNURU5UYCBpbmRpY2F0ZXMgYSBwZXJzaXN0ZW50IHJlZmVyZW5jZSB0YWtlbiBieSBgZF9tYWtlX3BlcnNpc3RlbnQoKWAuIElmIHRoYXQgZmxhZyBpc24mIzM5O3Qgc2V0LCB3ZSBzaG91bGRuJiMzOTt0IGJlIHJlbGVhc2luZyB0aGF0IHJlZmVyZW5jZS4KClRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZpeCBmb3IgYSBjbGFzc2ljYWwgcmVmZXJlbmNlIGNvdW50aW5nIGJ1ZywgbGVhZGluZyB0byBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhlIGBXQVJOX09OYCBpcyBnb29kOyBpdCYjMzk7bGwgaGVscCBjYXRjaCB0aGlzIGR1cmluZyBkZXZlbG9wbWVudC4gV2UgYXJlIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2VzcyBoZXJlOyB0aGUgcHJvYmxlbSBpcyBhYm91dCByZWxlYXNpbmcgbWVtb3J5IHByZW1hdHVyZWx5IGFuZCB1c2luZyBpdCBhZnRlcndhcmQuIEtBU0FOIGlzIHRoZSByZWxldmFudCB0b29sIHRvIGRldGVjdCBhbmQgZGlhZ25vc2UgdXNlLWFmdGVyLWZyZWUgYnVncy4KClNpbmNlIHRoaXMgcGF0Y2ggaXMgKmNvcnJlY3RpbmcqIGEgcmVmZXJlbmNlIGNvdW50IGlzc3VlIGFuZCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgdGhlcmUmIzM5O3Mgbm8gbmVlZCBmb3IgS01TQU4gYW5hbHlzaXMuIFRoZXJlZm9yZSwgSSB3aWxsIHNldCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gTGV0JiMzOTtzIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBwYXRjaCBvbmUgbW9yZSB0aW1lLCBtYWtpbmcgc3VyZSBJIGRpZCBub3QgbWlzcyBhbnl0aGluZzoKYGBgYwp2b2lkIGRfbWFrZV9kaXNjYXJkYWJsZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKIAlzcGluX2xvY2soJmFtcDtkZW50cnktJmd0O2RfbG9jayk7Ci0JV0FSTl9PTighKGRlbnRyeS0mZ3Q7ZF9mbGFncyAmYW1wOyBEQ0FDSEVfUEVSU0lTVEVOVCkpOwomIzQzOwkvKgomIzQzOwkgKiBEQ0FDSEVfUEVSU0lTVEVOVCByZWNvcmRzIHRoYXQgZF9tYWtlX3BlcnNpc3RlbnQoKSB0b29rIGEgcmVmZXJlbmNlLgomIzQzOwkgKiBJZiBpdCBpcyBjbGVhciB0aGVyZSBpcyBubyBzdWNoIHJlZmVyZW5jZSB0byByZXR1cm4sIGFuZCBkcm9wcGluZyBvbmUKJiM0MzsJICogYW55d2F5IHVuZGVyZmxvd3MgZF9sb2NrcmVmIGFuZCBmcmVlcyBhIGRlbnRyeSBzb21lb25lIGVsc2Ugc3RpbGwKJiM0MzsJICogaG9sZHMuIFJlZnVzZSBpbnN0ZWFkLCBhcyBzZWxlY3RfY29sbGVjdF91bW91bnQoKSBhbHJlYWR5IGRvZXMuCiYjNDM7CSAqLwomIzQzOwlpZiAoV0FSTl9PTighKGRlbnRyeS0mZ3Q7ZF9mbGFncyAmYW1wOyBEQ0FDSEVfUEVSU0lTVEVOVCkpKSB7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCWRlbnRyeS0mZ3Q7ZF9mbGFncyAmYW1wOz0gfkRDQUNIRV9QRVJTSVNURU5UOwogCWRlbnRyeS0mZ3Q7ZF9sb2NrcmVmLmNvdW50LS07CiAJZmluaXNoX2RwdXQoZGVudHJ5KTsKYGBgClllYWgsIHRoYXQgaXMgcmlnaHQuIEkgd2lsbCBzZXQgYE5lZWRzS01TQU4gPSBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDE1OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGNvdW50aW5nIGJ1ZyBpbiBgZF9tYWtlX2Rpc2NhcmRhYmxlYCBieSBwcmV2ZW50aW5nIGEgZGVjcmVtZW50IG9mIGBkX2xvY2tyZWYuY291bnRgIHdoZW4gdGhlIGBEQ0FDSEVfUEVSU0lTVEVOVGAgZmxhZyBpcyBub3Qgc2V0LiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIHVuZGVyZmxvdyBhbmQgc3Vic2VxdWVudCB1c2UtYWZ0ZXItZnJlZSBvZiB0aGUgYGRlbnRyeWAgc3RydWN0dXJlLiBVc2UtYWZ0ZXItZnJlZSBidWdzIGFuZCByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGlvbnMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGNvdW50aW5nIGJ1ZyBpbiBgZF9tYWtlX2Rpc2NhcmRhYmxlYCBieSBwcmV2ZW50aW5nIGEgZGVjcmVtZW50IG9mIGBkX2xvY2tyZWYuY291bnRgIHdoZW4gdGhlIGBEQ0FDSEVfUEVSU0lTVEVOVGAgZmxhZyBpcyBub3Qgc2V0LiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIHVuZGVyZmxvdyBhbmQgc3Vic2VxdWVudCB1c2UtYWZ0ZXItZnJlZSBvZiB0aGUgYGRlbnRyeWAgc3RydWN0dXJlLiBVc2UtYWZ0ZXItZnJlZSBidWdzIGFuZCByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGlvbnMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMThUMTU6Mzc6MTkuOTcxMDkyOTYyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzExOTc4NjE5NzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRfbWFrZV9kaXNjYXJkYWJsZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgYnVnIGluIGBkX21ha2VfZGlzY2FyZGFibGVgIGJ5IHByZXZlbnRpbmcgYSBkZWNyZW1lbnQgb2YgYGRfbG9ja3JlZi5jb3VudGAgd2hlbiB0aGUgYERDQUNIRV9QRVJTSVNURU5UYCBmbGFnIGlzIG5vdCBzZXQuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgdW5kZXJmbG93IGFuZCBzdWJzZXF1ZW50IHVzZS1hZnRlci1mcmVlIG9mIHRoZSBgZGVudHJ5YCBzdHJ1Y3R1cmUuIFVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgZF9tYWtlX2Rpc2NhcmRhYmxlYCB0byBwcmV2ZW50IGFuIHVuZGVyZmxvdyBvZiBgZF9sb2NrcmVmLmNvdW50YCBhbmQgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgd2hlbiBgRENBQ0hFX1BFUlNJU1RFTlRgIGlzIG5vdCBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBWRlMgbGF5ZXIgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB2YXJpb3VzIGZpbGVzeXN0ZW1zIChhdXRvZnMsIGRldnB0cywgbGliZnMsIHRyYWNlZnMpIGFuZCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxNTozNzoxOS45NzEwOTk0MTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTkyNjk3ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzMDg5YzQ2ODZkOTEyN2UzMzNhY2NmYmUwNzNiOGJjMmMyNzdhMWY3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDE4IDE1OjM3OjE3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2RjYWNoZS5jIGIvZnMvZGNhY2hlLmNcXG5pbmRleCAzZTlhZjlkZTcwNzQ2Li44OTdhMTAwZTcyNzg0IDEwMDY0NFxcbi0tLSBhL2ZzL2RjYWNoZS5jXFxuKysrIGIvZnMvZGNhY2hlLmNcXG5AQCAtMTA0Niw3ICsxMDQ2LDE2IEBAIEVYUE9SVF9TWU1CT0woZHB1dCk7XFxuIHZvaWQgZF9tYWtlX2Rpc2NhcmRhYmxlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4ge1xcbiBcXHRzcGluX2xvY2soXFx1MDAyNmRlbnRyeS1cXHUwMDNlZF9sb2NrKTtcXG4tXFx0V0FSTl9PTighKGRlbnRyeS1cXHUwMDNlZF9mbGFncyBcXHUwMDI2IERDQUNIRV9QRVJTSVNURU5UKSk7XFxuK1xcdC8qXFxuK1xcdCAqIERDQUNIRV9QRVJTSVNURU5UIHJlY29yZHMgdGhhdCBkX21ha2VfcGVyc2lzdGVudCgpIHRvb2sgYSByZWZlcmVuY2UuXFxuK1xcdCAqIElmIGl0IGlzIGNsZWFyIHRoZXJlIGlzIG5vIHN1Y2ggcmVmZXJlbmNlIHRvIHJldHVybiwgYW5kIGRyb3BwaW5nIG9uZVxcbitcXHQgKiBhbnl3YXkgdW5kZXJmbG93cyBkX2xvY2tyZWYgYW5kIGZyZWVzIGEgZGVudHJ5IHNvbWVvbmUgZWxzZSBzdGlsbFxcbitcXHQgKiBob2xkcy4gUmVmdXNlIGluc3RlYWQsIGFzIHNlbGVjdF9jb2xsZWN0X3Vtb3VudCgpIGFscmVhZHkgZG9lcy5cXG4rXFx0ICovXFxuK1xcdGlmIChXQVJOX09OKCEoZGVudHJ5LVxcdTAwM2VkX2ZsYWdzIFxcdTAwMjYgRENBQ0hFX1BFUlNJU1RFTlQpKSkge1xcbitcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2spO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4gXFx0ZGVudHJ5LVxcdTAwM2VkX2ZsYWdzIFxcdTAwMjY9IH5EQ0FDSEVfUEVSU0lTVEVOVDtcXG4gXFx0ZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYuY291bnQtLTtcXG4gXFx0ZmluaXNoX2RwdXQoZGVudHJ5KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTU6Mzc6MjEuNjkwOTExODQ4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzAxOTgwNzY3OTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRfbWFrZV9kaXNjYXJkYWJsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgZF9tYWtlX2Rpc2NhcmRhYmxlYCB0byBwcmV2ZW50IGFuIHVuZGVyZmxvdyBvZiBgZF9sb2NrcmVmLmNvdW50YCBhbmQgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgd2hlbiBgRENBQ0hFX1BFUlNJU1RFTlRgIGlzIG5vdCBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBWRlMgbGF5ZXIgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB2YXJpb3VzIGZpbGVzeXN0ZW1zIChhdXRvZnMsIGRldnB0cywgbGliZnMsIHRyYWNlZnMpIGFuZCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMDg5YzQ2ODZkOTEyN2UzMzNhY2NmYmUwNzNiOGJjMmMyNzdhMWY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTU6Mzc6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9kY2FjaGUuYyBiL2ZzL2RjYWNoZS5jXG5pbmRleCAzZTlhZjlkZTcwNzQ2Li44OTdhMTAwZTcyNzg0IDEwMDY0NFxuLS0tIGEvZnMvZGNhY2hlLmNcbisrKyBiL2ZzL2RjYWNoZS5jXG5AQCAtMTA0Niw3ICsxMDQ2LDE2IEBAIEVYUE9SVF9TWU1CT0woZHB1dCk7XG4gdm9pZCBkX21ha2VfZGlzY2FyZGFibGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIHtcbiBcdHNwaW5fbG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbi1cdFdBUk5fT04oIShkZW50cnktXHUwMDNlZF9mbGFncyBcdTAwMjYgRENBQ0hFX1BFUlNJU1RFTlQpKTtcbitcdC8qXG4rXHQgKiBEQ0FDSEVfUEVSU0lTVEVOVCByZWNvcmRzIHRoYXQgZF9tYWtlX3BlcnNpc3RlbnQoKSB0b29rIGEgcmVmZXJlbmNlLlxuK1x0ICogSWYgaXQgaXMgY2xlYXIgdGhlcmUgaXMgbm8gc3VjaCByZWZlcmVuY2UgdG8gcmV0dXJuLCBhbmQgZHJvcHBpbmcgb25lXG4rXHQgKiBhbnl3YXkgdW5kZXJmbG93cyBkX2xvY2tyZWYgYW5kIGZyZWVzIGEgZGVudHJ5IHNvbWVvbmUgZWxzZSBzdGlsbFxuK1x0ICogaG9sZHMuIFJlZnVzZSBpbnN0ZWFkLCBhcyBzZWxlY3RfY29sbGVjdF91bW91bnQoKSBhbHJlYWR5IGRvZXMuXG4rXHQgKi9cbitcdGlmIChXQVJOX09OKCEoZGVudHJ5LVx1MDAzZWRfZmxhZ3MgXHUwMDI2IERDQUNIRV9QRVJTSVNURU5UKSkpIHtcbitcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4rXHRcdHJldHVybjtcbitcdH1cbiBcdGRlbnRyeS1cdTAwM2VkX2ZsYWdzIFx1MDAyNj0gfkRDQUNIRV9QRVJTSVNURU5UO1xuIFx0ZGVudHJ5LVx1MDAzZWRfbG9ja3JlZi5jb3VudC0tO1xuIFx0ZmluaXNoX2RwdXQoZGVudHJ5KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDE1OjM3OjIxLjY5MDkxMzIxOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NDYxMzgyNDAxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb3JlIFZGUyBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkX21ha2VfZGlzY2FyZGFibGVgIHdpdGhpbiBgZnMvZGNhY2hlLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYSBxdWljayBjaGVjayBvZiB0aGUgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbmFsIGltcGFjdC4gSXQgc2VlbXMgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBgV0FSTl9PTmAgY2hlY2ssIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB0aGUgYERDQUNIRV9QRVJTSVNURU5UYCBmbGFnLiBJZiB0aGF0IGZsYWcgaXNuJ3Qgc2V0LCBpdCBiYWlscyBvdXQgZWFybHksIHByZXZlbnRpbmcgYSBkZWNyZW1lbnQgb24gYGRfbG9ja3JlZi5jb3VudGAgdGhhdCBjb3VsZCBsZWFkIHRvIGFuIHVuZGVyZmxvdyBhbmQsIHVsdGltYXRlbHksIGEgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9uLiBDbGFzc2ljIG1lbW9yeSBzYWZldHkgaXNzdWUuXG5cblRoZSBmYWN0IHRoYXQgaXQncyBpbiB0aGUgVkZTIGxheWVyIGlzIG5vdGV3b3J0aHkuIFdlJ3JlIGluIGNvcmUgZmlsZSBzeXN0ZW0gdGVycml0b3J5IGhlcmUsIHNvIGFueSBidWcgaW4gdGhpcyBhcmVhIGNvdWxkIGhhdmUgcHJldHR5IHNlcmlvdXMgcmVwZXJjdXNzaW9ucy4gSeKAmW0gdGhpbmtpbmcgZnV6emluZyB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIHdvcnRoIG15IHRpbWUuIEl0J3MgYW4gZXhwb3J0ZWQgZnVuY3Rpb24sIHNvIHRoYXQgaW5jcmVhc2VzIHRoZSBjaGFuY2VzIGl0J3MgYWNjZXNzaWJsZSB0aHJvdWdoIG1hbnkgY29kZXBhdGhzIGFuZCB0aGVyZWZvcmUgZ29vZCBmdXp6aW5nIHN1cmZhY2UgYXJlYS4gSG9sZCBvbi4uLiBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBwbGFjZXMgYGRfbWFrZV9kaXNjYXJkYWJsZWAgaXMgY2FsbGVkLiBUaGF04oCZcyB0aGUga2V5IGhlcmUg4oCTIHVuZGVyc3RhbmQgdGhlIGNhbGwgc2l0ZXMgdG8gc2VlIHdoYXQgdGhlIGlucHV0cyBhcmUgYW5kIHdoYXQga2luZCBvZiBmdXp6aW5nIHRhcmdldHMgbWFrZSBzZW5zZS4gR290dGEgbG9vayB1cCB0aGUgY2FsbCBjaGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExMiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDE1OjM5OjU2LjMwNDc0MTIyNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAzNzMyODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRfbWFrZV9kaXNjYXJkYWJsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hdXRvZnMvcm9vdC5jPTYyOD1zdGF0aWMgaW50IGF1dG9mc19kaXJfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuLS1cXG5mcy9hdXRvZnMvcm9vdC5jLTYzNC1cXHRwX2luby1cXHUwMDNlY291bnQtLTtcXG5mcy9hdXRvZnMvcm9vdC5jOjYzNTpcXHRkX21ha2VfZGlzY2FyZGFibGUoZGVudHJ5KTtcXG5mcy9hdXRvZnMvcm9vdC5jLTYzNi1cXG4tLVxcbmZzL2F1dG9mcy9yb290LmM9Njk2PXN0YXRpYyBpbnQgYXV0b2ZzX2Rpcl9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbi0tXFxuZnMvYXV0b2ZzL3Jvb3QuYy03MTYtXFx0cF9pbm8tXFx1MDAzZWNvdW50LS07XFxuZnMvYXV0b2ZzL3Jvb3QuYzo3MTc6XFx0ZF9tYWtlX2Rpc2NhcmRhYmxlKGRlbnRyeSk7XFxuZnMvYXV0b2ZzL3Jvb3QuYy03MTgtXFx0ZF9pbm9kZShkZW50cnkpLVxcdTAwM2VpX3NpemUgPSAwO1xcbi0tXFxuZnMvZGNhY2hlLmM9MTA0ND1FWFBPUlRfU1lNQk9MKGRwdXQpO1xcbmZzL2RjYWNoZS5jLTEwNDUtXFxuZnMvZGNhY2hlLmM6MTA0Njp2b2lkIGRfbWFrZV9kaXNjYXJkYWJsZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuZnMvZGNhY2hlLmMtMTA0Ny17XFxuLS1cXG5mcy9kY2FjaGUuYy0xMDYyLX1cXG5mcy9kY2FjaGUuYzoxMDYzOkVYUE9SVF9TWU1CT0woZF9tYWtlX2Rpc2NhcmRhYmxlKTtcXG5mcy9kY2FjaGUuYy0xMDY0LVxcbi0tXFxuZnMvZGV2cHRzL2lub2RlLmM9NTUzPXZvaWQgZGV2cHRzX3B0eV9raWxsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4tLVxcbmZzL2RldnB0cy9pbm9kZS5jLTU2MC1cXHRmc25vdGlmeV91bmxpbmsoZF9pbm9kZShkZW50cnktXFx1MDAzZWRfcGFyZW50KSwgZGVudHJ5KTtcXG5mcy9kZXZwdHMvaW5vZGUuYzo1NjE6XFx0ZF9tYWtlX2Rpc2NhcmRhYmxlKGRlbnRyeSk7XFxuZnMvZGV2cHRzL2lub2RlLmMtNTYyLX1cXG4tLVxcbmZzL2xpYmZzLmM9NTk3PXN0YXRpYyB2b2lkIF9fc2ltcGxlX3JlY3Vyc2l2ZV9yZW1vdmFsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4tLVxcbmZzL2xpYmZzLmMtNjI0LVxcdFxcdFxcdFxcdGZzbm90aWZ5X2RlbGV0ZShpbm9kZSwgZF9pbm9kZSh2aWN0aW0pLCB2aWN0aW0pO1xcbmZzL2xpYmZzLmM6NjI1OlxcdFxcdFxcdFxcdGRfbWFrZV9kaXNjYXJkYWJsZSh2aWN0aW0pO1xcbmZzL2xpYmZzLmMtNjI2LVxcdFxcdFxcdH1cXG4tLVxcbmZzL2xpYmZzLmM9ODA1PWludCBzaW1wbGVfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuLS1cXG5mcy9saWJmcy5jLTgwNy1cXHRfX3NpbXBsZV91bmxpbmsoZGlyLCBkZW50cnkpO1xcbmZzL2xpYmZzLmM6ODA4OlxcdGRfbWFrZV9kaXNjYXJkYWJsZShkZW50cnkpO1xcbmZzL2xpYmZzLmMtODA5LVxcdHJldHVybiAwO1xcbi0tXFxuZnMvbGliZnMuYz04MTM9aW50IHNpbXBsZV9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbi0tXFxuZnMvbGliZnMuYy04MTgtXFx0X19zaW1wbGVfcm1kaXIoZGlyLCBkZW50cnkpO1xcbmZzL2xpYmZzLmM6ODE5OlxcdGRfbWFrZV9kaXNjYXJkYWJsZShkZW50cnkpO1xcbmZzL2xpYmZzLmMtODIwLVxcdHJldHVybiAwO1xcbi0tXFxuZnMvdHJhY2Vmcy9ldmVudF9pbm9kZS5jPTg5MD12b2lkIGV2ZW50ZnNfcmVtb3ZlX2V2ZW50c19kaXIoc3RydWN0IGV2ZW50ZnNfaW5vZGUgKmVpKVxcbi0tXFxuZnMvdHJhY2Vmcy9ldmVudF9pbm9kZS5jLTkxMC1cXHRkX2ludmFsaWRhdGUoZGVudHJ5KTtcXG5mcy90cmFjZWZzL2V2ZW50X2lub2RlLmM6OTExOlxcdGRfbWFrZV9kaXNjYXJkYWJsZShkZW50cnkpO1xcbmZzL3RyYWNlZnMvZXZlbnRfaW5vZGUuYy05MTItfVxcbi0tXFxuaW5jbHVkZS9saW51eC9kY2FjaGUuaD02NDU9c3RydWN0IGRlbnRyeSAqZF9tYWtlX3BlcnNpc3RlbnQoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7XFxuaW5jbHVkZS9saW51eC9kY2FjaGUuaDo2NDY6dm9pZCBkX21ha2VfZGlzY2FyZGFibGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KTtcXG5pbmNsdWRlL2xpbnV4L2RjYWNoZS5oLTY0Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTU6Mzk6NTguMDA4NDc5ODcxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ1NjYzMTcxOTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3k6IGBkX21ha2VfZGlzY2FyZGFibGVgIFx1MDAyNiBSZWxhdGVkIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHRoaXMgcGF0Y2ggbG9va3MgbGlrZSBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSXQgYWRkcmVzc2VzIGEgdnVsbmVyYWJpbGl0eSBpbiBgZF9tYWtlX2Rpc2NhcmRhYmxlYCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgdXNlZCBhY3Jvc3Mgc2V2ZXJhbCBmaWxlc3lzdGVtczogYGF1dG9mc2AsIGBkZXZwdHNgLCBgbGliZnNgLCBhbmQgYHRyYWNlZnNgLiBUaGF0J3MgYSBkZWNlbnQgc3ByZWFkIGFuZCBpbmRpY2F0ZXMgYSBwb3RlbnRpYWxseSBpbXBhY3RmdWwgaXNzdWUuIEZvY3VzaW5nIG9uIGBkX21ha2VfZGlzY2FyZGFibGVgIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGFwcHJvYWNoLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIGZvciBhbnkgdW51c3VhbCBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4uLiBOb3BlLCBgZF9tYWtlX2Rpc2NhcmRhYmxlYCBpcyBiYWtlZCBpbnRvIGBmcy9kY2FjaGUuY2AsIHNvIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLiBTbywgYGRfbWFrZV9kaXNjYXJkYWJsZWAgaXMgdGhlIHByaW1hcnkgZm9jdXMgc3ltYm9sLiBJJ2xsIGFkZCB0aGF0IHRvIHRoZSBsaXN0LlxuXG5BaCwgYW5kIGl0J3MgZXhwb3J0ZWQhIEV2ZW4gYmV0dGVyISBUaGlzIG1lYW5zIGl0J3MgYWNjZXNzaWJsZSBhbmQgbW9yZSBlYXNpbHkgdGFyZ2V0ZWQuXG5cbkhtbSwgdGhpcyBidWcgaXMgYWxzbyByZWxhdGVkIHRvIGBEQ0FDSEVfUEVSU0lTVEVOVGAsIHdoaWNoIGdpdmVzIG1lIHBhdXNlLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIG90aGVyLCByZWxhdGVkIGZ1bmN0aW9ucyB3ZSBzaG91bGQgY29uc2lkZXIuIFJpZ2h0LCBgZF9tYWtlX3BlcnNpc3RlbnRgLiBUaGF0J3MgaW1wb3J0YW50IHRvby4gSSdsbCBhZGQgdGhhdCB0byB0aGUgbGlzdCBvZiBmb2N1cyBzeW1ib2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDk3LCJPdXRwdXRUb2tlbnMiOjEyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxNTo0MjoyMy42NzE2NTQ3ODJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZF9tYWtlX2Rpc2NhcmRhYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBkX21ha2VfZGlzY2FyZGFibGVgIHRvIHByZXZlbnQgYW4gdW5kZXJmbG93IG9mIGBkX2xvY2tyZWYuY291bnRgIGFuZCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSB3aGVuIGBEQ0FDSEVfUEVSU0lTVEVOVGAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFZGUyBsYXllciB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHZhcmlvdXMgZmlsZXN5c3RlbXMgKGF1dG9mcywgZGV2cHRzLCBsaWJmcywgdHJhY2VmcykgYW5kIGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZF9tYWtlX2Rpc2NhcmRhYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBkX21ha2VfZGlzY2FyZGFibGVgIHRvIHByZXZlbnQgYW4gdW5kZXJmbG93IG9mIGBkX2xvY2tyZWYuY291bnRgIGFuZCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSB3aGVuIGBEQ0FDSEVfUEVSU0lTVEVOVGAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFZGUyBsYXllciB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHZhcmlvdXMgZmlsZXN5c3RlbXMgKGF1dG9mcywgZGV2cHRzLCBsaWJmcywgdHJhY2VmcykgYW5kIGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDE1OjQyOjIzLjY3MTY4MTU4MloiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mjc4MDIyNTczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTU6NDI6MjMuNjcyMTAzNTYyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODI3NzU5NjY1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgYnVnIGluIGBkX21ha2VfZGlzY2FyZGFibGVgIGJ5IHByZXZlbnRpbmcgYSBkZWNyZW1lbnQgb2YgYGRfbG9ja3JlZi5jb3VudGAgd2hlbiB0aGUgYERDQUNIRV9QRVJTSVNURU5UYCBmbGFnIGlzIG5vdCBzZXQuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgdW5kZXJmbG93IGFuZCBzdWJzZXF1ZW50IHVzZS1hZnRlci1mcmVlIG9mIHRoZSBgZGVudHJ5YCBzdHJ1Y3R1cmUuIFVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDMwODljNDY4NmQ5MTI3ZTMzM2FjY2ZiZTA3M2I4YmMyYzI3N2ExZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAxNTozNzoxNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2RjYWNoZS5jIGIvZnMvZGNhY2hlLmNcbmluZGV4IDNlOWFmOWRlNzA3NDYuLjg5N2ExMDBlNzI3ODQgMTAwNjQ0XG4tLS0gYS9mcy9kY2FjaGUuY1xuKysrIGIvZnMvZGNhY2hlLmNcbkBAIC0xMDQ2LDcgKzEwNDYsMTYgQEAgRVhQT1JUX1NZTUJPTChkcHV0KTtcbiB2b2lkIGRfbWFrZV9kaXNjYXJkYWJsZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4ge1xuIFx0c3Bpbl9sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuLVx0V0FSTl9PTighKGRlbnRyeS1cdTAwM2VkX2ZsYWdzIFx1MDAyNiBEQ0FDSEVfUEVSU0lTVEVOVCkpO1xuK1x0LypcbitcdCAqIERDQUNIRV9QRVJTSVNURU5UIHJlY29yZHMgdGhhdCBkX21ha2VfcGVyc2lzdGVudCgpIHRvb2sgYSByZWZlcmVuY2UuXG4rXHQgKiBJZiBpdCBpcyBjbGVhciB0aGVyZSBpcyBubyBzdWNoIHJlZmVyZW5jZSB0byByZXR1cm4sIGFuZCBkcm9wcGluZyBvbmVcbitcdCAqIGFueXdheSB1bmRlcmZsb3dzIGRfbG9ja3JlZiBhbmQgZnJlZXMgYSBkZW50cnkgc29tZW9uZSBlbHNlIHN0aWxsXG4rXHQgKiBob2xkcy4gUmVmdXNlIGluc3RlYWQsIGFzIHNlbGVjdF9jb2xsZWN0X3Vtb3VudCgpIGFscmVhZHkgZG9lcy5cbitcdCAqL1xuK1x0aWYgKFdBUk5fT04oIShkZW50cnktXHUwMDNlZF9mbGFncyBcdTAwMjYgRENBQ0hFX1BFUlNJU1RFTlQpKSkge1xuK1x0XHRzcGluX3VubG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuIFx0ZGVudHJ5LVx1MDAzZWRfZmxhZ3MgXHUwMDI2PSB+RENBQ0hFX1BFUlNJU1RFTlQ7XG4gXHRkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50LS07XG4gXHRmaW5pc2hfZHB1dChkZW50cnkpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTU6NDI6MjMuNjcyMTA1OTcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI3NzU3NDM5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERlbnRyeSBSZWZlcmVuY2UgQ291bnRpbmcgRml4KipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZF9tYWtlX2Rpc2NhcmRhYmxlYCBpbiBgZnMvZGNhY2hlLmNgLiBUaGUgY29yZSBjaGFuZ2UgaXMgYSBjaGVjayBmb3IgYERDQUNIRV9QRVJTSVNURU5UYCBiZWZvcmUgZGVjcmVtZW50aW5nIGBkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50YCBhbmQgY2FsbGluZyBgZmluaXNoX2RwdXQoZGVudHJ5KWAuIFJpZ2h0LCB0aGlzIGlzIGEgZGVmZW5zaXZlIGNoZWNrIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgdW5kZXJmbG93IGluIHRoZSByZWZlcmVuY2UgY291bnQuIFRoZSBjb2RlIGNvbW1lbnRzIGV4cGxhaW4gdGhhdCBgRENBQ0hFX1BFUlNJU1RFTlRgIGluZGljYXRlcyBhIHBlcnNpc3RlbnQgcmVmZXJlbmNlIHRha2VuIGJ5IGBkX21ha2VfcGVyc2lzdGVudCgpYC4gSWYgdGhhdCBmbGFnIGlzbid0IHNldCwgd2Ugc2hvdWxkbid0IGJlIHJlbGVhc2luZyB0aGF0IHJlZmVyZW5jZS5cblxuVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZml4IGZvciBhIGNsYXNzaWNhbCByZWZlcmVuY2UgY291bnRpbmcgYnVnLCBsZWFkaW5nIHRvIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBUaGUgYFdBUk5fT05gIGlzIGdvb2Q7IGl0J2xsIGhlbHAgY2F0Y2ggdGhpcyBkdXJpbmcgZGV2ZWxvcG1lbnQuIFdlIGFyZSBub3QgaW50cm9kdWNpbmcgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MgaGVyZTsgdGhlIHByb2JsZW0gaXMgYWJvdXQgcmVsZWFzaW5nIG1lbW9yeSBwcmVtYXR1cmVseSBhbmQgdXNpbmcgaXQgYWZ0ZXJ3YXJkLiBLQVNBTiBpcyB0aGUgcmVsZXZhbnQgdG9vbCB0byBkZXRlY3QgYW5kIGRpYWdub3NlIHVzZS1hZnRlci1mcmVlIGJ1Z3MuXG5cblNpbmNlIHRoaXMgcGF0Y2ggaXMgKmNvcnJlY3RpbmcqIGEgcmVmZXJlbmNlIGNvdW50IGlzc3VlIGFuZCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgdGhlcmUncyBubyBuZWVkIGZvciBLTVNBTiBhbmFseXNpcy4gVGhlcmVmb3JlLCBJIHdpbGwgc2V0IGBOZWVkc0tNU0FOID0gZmFsc2VgLiBMZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aGUgcGF0Y2ggb25lIG1vcmUgdGltZSwgbWFraW5nIHN1cmUgSSBkaWQgbm90IG1pc3MgYW55dGhpbmc6XG5gYGBjXG52b2lkIGRfbWFrZV9kaXNjYXJkYWJsZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG57XG4gXHRzcGluX2xvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4tXHRXQVJOX09OKCEoZGVudHJ5LVx1MDAzZWRfZmxhZ3MgXHUwMDI2IERDQUNIRV9QRVJTSVNURU5UKSk7XG4rXHQvKlxuK1x0ICogRENBQ0hFX1BFUlNJU1RFTlQgcmVjb3JkcyB0aGF0IGRfbWFrZV9wZXJzaXN0ZW50KCkgdG9vayBhIHJlZmVyZW5jZS5cbitcdCAqIElmIGl0IGlzIGNsZWFyIHRoZXJlIGlzIG5vIHN1Y2ggcmVmZXJlbmNlIHRvIHJldHVybiwgYW5kIGRyb3BwaW5nIG9uZVxuK1x0ICogYW55d2F5IHVuZGVyZmxvd3MgZF9sb2NrcmVmIGFuZCBmcmVlcyBhIGRlbnRyeSBzb21lb25lIGVsc2Ugc3RpbGxcbitcdCAqIGhvbGRzLiBSZWZ1c2UgaW5zdGVhZCwgYXMgc2VsZWN0X2NvbGxlY3RfdW1vdW50KCkgYWxyZWFkeSBkb2VzLlxuK1x0ICovXG4rXHRpZiAoV0FSTl9PTighKGRlbnRyeS1cdTAwM2VkX2ZsYWdzIFx1MDAyNiBEQ0FDSEVfUEVSU0lTVEVOVCkpKSB7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4gXHRkZW50cnktXHUwMDNlZF9mbGFncyBcdTAwMjY9IH5EQ0FDSEVfUEVSU0lTVEVOVDtcbiBcdGRlbnRyeS1cdTAwM2VkX2xvY2tyZWYuY291bnQtLTtcbiBcdGZpbmlzaF9kcHV0KGRlbnRyeSk7XG5gYGBcblllYWgsIHRoYXQgaXMgcmlnaHQuIEkgd2lsbCBzZXQgYE5lZWRzS01TQU4gPSBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDksIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTU6NDI6MzEuOTQ5Njg0ODQ0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlZmVyZW5jZSBjb3VudGluZyBidWcgaW4gYGRfbWFrZV9kaXNjYXJkYWJsZWAgYnkgcHJldmVudGluZyBhIGRlY3JlbWVudCBvZiBgZF9sb2NrcmVmLmNvdW50YCB3aGVuIHRoZSBgRENBQ0hFX1BFUlNJU1RFTlRgIGZsYWcgaXMgbm90IHNldC4gVGhpcyBwcmV2ZW50cyBhIHBvdGVudGlhbCB1bmRlcmZsb3cgYW5kIHN1YnNlcXVlbnQgdXNlLWFmdGVyLWZyZWUgb2YgdGhlIGBkZW50cnlgIHN0cnVjdHVyZS4gVXNlLWFmdGVyLWZyZWUgYnVncyBhbmQgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb25zIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgYnVnIGluIGBkX21ha2VfZGlzY2FyZGFibGVgIGJ5IHByZXZlbnRpbmcgYSBkZWNyZW1lbnQgb2YgYGRfbG9ja3JlZi5jb3VudGAgd2hlbiB0aGUgYERDQUNIRV9QRVJTSVNURU5UYCBmbGFnIGlzIG5vdCBzZXQuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgdW5kZXJmbG93IGFuZCBzdWJzZXF1ZW50IHVzZS1hZnRlci1mcmVlIG9mIHRoZSBgZGVudHJ5YCBzdHJ1Y3R1cmUuIFVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowm94fg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-18 14:50:46 +0000 UTC FinishedAt: 2026-08-18 15:42:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "4f0a1e9019ea7a4d5a4c14d1ee954360838ef938", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "4f0a1e9019ea7a4d5a4c14d1ee954360838ef938", "config_name": "upstream-apparmor-kasan.config", "series_id": "bd96ea23-7f7a-4256-98ba-3c2bf4ac707e" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "d_make_discardable" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDE1OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZF9tYWtlX2Rpc2NhcmRhYmxlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgYnVnIGluIGBkX21ha2VfZGlzY2FyZGFibGVgIGJ5IHByZXZlbnRpbmcgYSBkZWNyZW1lbnQgb2YgYGRfbG9ja3JlZi5jb3VudGAgd2hlbiB0aGUgYERDQUNIRV9QRVJTSVNURU5UYCBmbGFnIGlzIG5vdCBzZXQuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgdW5kZXJmbG93IGFuZCBzdWJzZXF1ZW50IHVzZS1hZnRlci1mcmVlIG9mIHRoZSBgZGVudHJ5YCBzdHJ1Y3R1cmUuIFVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGRfbWFrZV9kaXNjYXJkYWJsZWAgdG8gcHJldmVudCBhbiB1bmRlcmZsb3cgb2YgYGRfbG9ja3JlZi5jb3VudGAgYW5kIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHdoZW4gYERDQUNIRV9QRVJTSVNURU5UYCBpcyBub3Qgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVkZTIGxheWVyIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdmFyaW91cyBmaWxlc3lzdGVtcyAoYXV0b2ZzLCBkZXZwdHMsIGxpYmZzLCB0cmFjZWZzKSBhbmQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxNTozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMwODljNDY4NmQ5MTI3ZTMzM2FjY2ZiZTA3M2I4YmMyYzI3N2ExZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAxNTozNzoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9kY2FjaGUuYyBiL2ZzL2RjYWNoZS5jXG5pbmRleCAzZTlhZjlkZTcwNzQ2Li44OTdhMTAwZTcyNzg0IDEwMDY0NFxuLS0tIGEvZnMvZGNhY2hlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2RjYWNoZS5jXG5AQCAtMTA0Niw3ICYjNDM7MTA0NiwxNiBAQCBFWFBPUlRfU1lNQk9MKGRwdXQpO1xuIHZvaWQgZF9tYWtlX2Rpc2NhcmRhYmxlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiB7XG4gXHRzcGluX2xvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4tXHRXQVJOX09OKCEoZGVudHJ5LVx1MDAzZWRfZmxhZ3MgXHUwMDI2IERDQUNIRV9QRVJTSVNURU5UKSk7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBEQ0FDSEVfUEVSU0lTVEVOVCByZWNvcmRzIHRoYXQgZF9tYWtlX3BlcnNpc3RlbnQoKSB0b29rIGEgcmVmZXJlbmNlLlxuJiM0MztcdCAqIElmIGl0IGlzIGNsZWFyIHRoZXJlIGlzIG5vIHN1Y2ggcmVmZXJlbmNlIHRvIHJldHVybiwgYW5kIGRyb3BwaW5nIG9uZVxuJiM0MztcdCAqIGFueXdheSB1bmRlcmZsb3dzIGRfbG9ja3JlZiBhbmQgZnJlZXMgYSBkZW50cnkgc29tZW9uZSBlbHNlIHN0aWxsXG4mIzQzO1x0ICogaG9sZHMuIFJlZnVzZSBpbnN0ZWFkLCBhcyBzZWxlY3RfY29sbGVjdF91bW91bnQoKSBhbHJlYWR5IGRvZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKFdBUk5fT04oIShkZW50cnktXHUwMDNlZF9mbGFncyBcdTAwMjYgRENBQ0hFX1BFUlNJU1RFTlQpKSkge1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFx0ZGVudHJ5LVx1MDAzZWRfZmxhZ3MgXHUwMDI2PSB+RENBQ0hFX1BFUlNJU1RFTlQ7XG4gXHRkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50LS07XG4gXHRmaW5pc2hfZHB1dChkZW50cnkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDE1OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RfbWFrZV9kaXNjYXJkYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGRfbWFrZV9kaXNjYXJkYWJsZWAgdG8gcHJldmVudCBhbiB1bmRlcmZsb3cgb2YgYGRfbG9ja3JlZi5jb3VudGAgYW5kIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHdoZW4gYERDQUNIRV9QRVJTSVNURU5UYCBpcyBub3Qgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVkZTIGxheWVyIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdmFyaW91cyBmaWxlc3lzdGVtcyAoYXV0b2ZzLCBkZXZwdHMsIGxpYmZzLCB0cmFjZWZzKSBhbmQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMwODljNDY4NmQ5MTI3ZTMzM2FjY2ZiZTA3M2I4YmMyYzI3N2ExZjcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAxNTozNzoxNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2RjYWNoZS5jIGIvZnMvZGNhY2hlLmMKaW5kZXggM2U5YWY5ZGU3MDc0Ni4uODk3YTEwMGU3Mjc4NCAxMDA2NDQKLS0tIGEvZnMvZGNhY2hlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZGNhY2hlLmMKQEAgLTEwNDYsNyAmIzQzOzEwNDYsMTYgQEAgRVhQT1JUX1NZTUJPTChkcHV0KTsKIHZvaWQgZF9tYWtlX2Rpc2NhcmRhYmxlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIHsKIAlzcGluX2xvY2soJmFtcDtkZW50cnktJmd0O2RfbG9jayk7Ci0JV0FSTl9PTighKGRlbnRyeS0mZ3Q7ZF9mbGFncyAmYW1wOyBEQ0FDSEVfUEVSU0lTVEVOVCkpOwomIzQzOwkvKgomIzQzOwkgKiBEQ0FDSEVfUEVSU0lTVEVOVCByZWNvcmRzIHRoYXQgZF9tYWtlX3BlcnNpc3RlbnQoKSB0b29rIGEgcmVmZXJlbmNlLgomIzQzOwkgKiBJZiBpdCBpcyBjbGVhciB0aGVyZSBpcyBubyBzdWNoIHJlZmVyZW5jZSB0byByZXR1cm4sIGFuZCBkcm9wcGluZyBvbmUKJiM0MzsJICogYW55d2F5IHVuZGVyZmxvd3MgZF9sb2NrcmVmIGFuZCBmcmVlcyBhIGRlbnRyeSBzb21lb25lIGVsc2Ugc3RpbGwKJiM0MzsJICogaG9sZHMuIFJlZnVzZSBpbnN0ZWFkLCBhcyBzZWxlY3RfY29sbGVjdF91bW91bnQoKSBhbHJlYWR5IGRvZXMuCiYjNDM7CSAqLwomIzQzOwlpZiAoV0FSTl9PTighKGRlbnRyeS0mZ3Q7ZF9mbGFncyAmYW1wOyBEQ0FDSEVfUEVSU0lTVEVOVCkpKSB7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCWRlbnRyeS0mZ3Q7ZF9mbGFncyAmYW1wOz0gfkRDQUNIRV9QRVJTSVNURU5UOwogCWRlbnRyeS0mZ3Q7ZF9sb2NrcmVmLmNvdW50LS07CiAJZmluaXNoX2RwdXQoZGVudHJ5KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTU6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExMgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDb3JlIFZGUyBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZF9tYWtlX2Rpc2NhcmRhYmxlYCB3aXRoaW4gYGZzL2RjYWNoZS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGEgcXVpY2sgY2hlY2sgb2YgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb25hbCBpbXBhY3QuIEl0IHNlZW1zIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYFdBUk5fT05gIGNoZWNrLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgdGhlIGBEQ0FDSEVfUEVSU0lTVEVOVGAgZmxhZy4gSWYgdGhhdCBmbGFnIGlzbiYjMzk7dCBzZXQsIGl0IGJhaWxzIG91dCBlYXJseSwgcHJldmVudGluZyBhIGRlY3JlbWVudCBvbiBgZF9sb2NrcmVmLmNvdW50YCB0aGF0IGNvdWxkIGxlYWQgdG8gYW4gdW5kZXJmbG93IGFuZCwgdWx0aW1hdGVseSwgYSB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb24uIENsYXNzaWMgbWVtb3J5IHNhZmV0eSBpc3N1ZS4KClRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgaW4gdGhlIFZGUyBsYXllciBpcyBub3Rld29ydGh5LiBXZSYjMzk7cmUgaW4gY29yZSBmaWxlIHN5c3RlbSB0ZXJyaXRvcnkgaGVyZSwgc28gYW55IGJ1ZyBpbiB0aGlzIGFyZWEgY291bGQgaGF2ZSBwcmV0dHkgc2VyaW91cyByZXBlcmN1c3Npb25zLiBJ4oCZbSB0aGlua2luZyBmdXp6aW5nIHRoaXMgZnVuY3Rpb24gbWlnaHQgYmUgd29ydGggbXkgdGltZS4gSXQmIzM5O3MgYW4gZXhwb3J0ZWQgZnVuY3Rpb24sIHNvIHRoYXQgaW5jcmVhc2VzIHRoZSBjaGFuY2VzIGl0JiMzOTtzIGFjY2Vzc2libGUgdGhyb3VnaCBtYW55IGNvZGVwYXRocyBhbmQgdGhlcmVmb3JlIGdvb2QgZnV6emluZyBzdXJmYWNlIGFyZWEuIEhvbGQgb24uLi4gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgcGxhY2VzIGBkX21ha2VfZGlzY2FyZGFibGVgIGlzIGNhbGxlZC4gVGhhdOKAmXMgdGhlIGtleSBoZXJlIOKAkyB1bmRlcnN0YW5kIHRoZSBjYWxsIHNpdGVzIHRvIHNlZSB3aGF0IHRoZSBpbnB1dHMgYXJlIGFuZCB3aGF0IGtpbmQgb2YgZnV6emluZyB0YXJnZXRzIG1ha2Ugc2Vuc2UuIEdvdHRhIGxvb2sgdXAgdGhlIGNhbGwgY2hhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZF9tYWtlX2Rpc2NhcmRhYmxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2F1dG9mcy9yb290LmM9NjI4PXN0YXRpYyBpbnQgYXV0b2ZzX2Rpcl91bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbi0tXG5mcy9hdXRvZnMvcm9vdC5jLTYzNC1cdHBfaW5vLVx1MDAzZWNvdW50LS07XG5mcy9hdXRvZnMvcm9vdC5jOjYzNTpcdGRfbWFrZV9kaXNjYXJkYWJsZShkZW50cnkpO1xuZnMvYXV0b2ZzL3Jvb3QuYy02MzYtXG4tLVxuZnMvYXV0b2ZzL3Jvb3QuYz02OTY9c3RhdGljIGludCBhdXRvZnNfZGlyX3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4tLVxuZnMvYXV0b2ZzL3Jvb3QuYy03MTYtXHRwX2luby1cdTAwM2Vjb3VudC0tO1xuZnMvYXV0b2ZzL3Jvb3QuYzo3MTc6XHRkX21ha2VfZGlzY2FyZGFibGUoZGVudHJ5KTtcbmZzL2F1dG9mcy9yb290LmMtNzE4LVx0ZF9pbm9kZShkZW50cnkpLVx1MDAzZWlfc2l6ZSA9IDA7XG4tLVxuZnMvZGNhY2hlLmM9MTA0ND1FWFBPUlRfU1lNQk9MKGRwdXQpO1xuZnMvZGNhY2hlLmMtMTA0NS1cbmZzL2RjYWNoZS5jOjEwNDY6dm9pZCBkX21ha2VfZGlzY2FyZGFibGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuZnMvZGNhY2hlLmMtMTA0Ny17XG4tLVxuZnMvZGNhY2hlLmMtMTA2Mi19XG5mcy9kY2FjaGUuYzoxMDYzOkVYUE9SVF9TWU1CT0woZF9tYWtlX2Rpc2NhcmRhYmxlKTtcbmZzL2RjYWNoZS5jLTEwNjQtXG4tLVxuZnMvZGV2cHRzL2lub2RlLmM9NTUzPXZvaWQgZGV2cHRzX3B0eV9raWxsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbi0tXG5mcy9kZXZwdHMvaW5vZGUuYy01NjAtXHRmc25vdGlmeV91bmxpbmsoZF9pbm9kZShkZW50cnktXHUwMDNlZF9wYXJlbnQpLCBkZW50cnkpO1xuZnMvZGV2cHRzL2lub2RlLmM6NTYxOlx0ZF9tYWtlX2Rpc2NhcmRhYmxlKGRlbnRyeSk7XG5mcy9kZXZwdHMvaW5vZGUuYy01NjItfVxuLS1cbmZzL2xpYmZzLmM9NTk3PXN0YXRpYyB2b2lkIF9fc2ltcGxlX3JlY3Vyc2l2ZV9yZW1vdmFsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9saWJmcy5jLTYyNC1cdFx0XHRcdGZzbm90aWZ5X2RlbGV0ZShpbm9kZSwgZF9pbm9kZSh2aWN0aW0pLCB2aWN0aW0pO1xuZnMvbGliZnMuYzo2MjU6XHRcdFx0XHRkX21ha2VfZGlzY2FyZGFibGUodmljdGltKTtcbmZzL2xpYmZzLmMtNjI2LVx0XHRcdH1cbi0tXG5mcy9saWJmcy5jPTgwNT1pbnQgc2ltcGxlX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuLS1cbmZzL2xpYmZzLmMtODA3LVx0X19zaW1wbGVfdW5saW5rKGRpciwgZGVudHJ5KTtcbmZzL2xpYmZzLmM6ODA4Olx0ZF9tYWtlX2Rpc2NhcmRhYmxlKGRlbnRyeSk7XG5mcy9saWJmcy5jLTgwOS1cdHJldHVybiAwO1xuLS1cbmZzL2xpYmZzLmM9ODEzPWludCBzaW1wbGVfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbi0tXG5mcy9saWJmcy5jLTgxOC1cdF9fc2ltcGxlX3JtZGlyKGRpciwgZGVudHJ5KTtcbmZzL2xpYmZzLmM6ODE5Olx0ZF9tYWtlX2Rpc2NhcmRhYmxlKGRlbnRyeSk7XG5mcy9saWJmcy5jLTgyMC1cdHJldHVybiAwO1xuLS1cbmZzL3RyYWNlZnMvZXZlbnRfaW5vZGUuYz04OTA9dm9pZCBldmVudGZzX3JlbW92ZV9ldmVudHNfZGlyKHN0cnVjdCBldmVudGZzX2lub2RlICplaSlcbi0tXG5mcy90cmFjZWZzL2V2ZW50X2lub2RlLmMtOTEwLVx0ZF9pbnZhbGlkYXRlKGRlbnRyeSk7XG5mcy90cmFjZWZzL2V2ZW50X2lub2RlLmM6OTExOlx0ZF9tYWtlX2Rpc2NhcmRhYmxlKGRlbnRyeSk7XG5mcy90cmFjZWZzL2V2ZW50X2lub2RlLmMtOTEyLX1cbi0tXG5pbmNsdWRlL2xpbnV4L2RjYWNoZS5oPTY0NT1zdHJ1Y3QgZGVudHJ5ICpkX21ha2VfcGVyc2lzdGVudChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTtcbmluY2x1ZGUvbGludXgvZGNhY2hlLmg6NjQ2OnZvaWQgZF9tYWtlX2Rpc2NhcmRhYmxlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7XG5pbmNsdWRlL2xpbnV4L2RjYWNoZS5oLTY0Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDk3CgkJCQkJCQlvdXRwdXQ6IDEyNQoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5OiBgZF9tYWtlX2Rpc2NhcmRhYmxlYCAmYW1wOyBSZWxhdGVkIEZ1bmN0aW9ucyoqCgpPa2F5LCB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEl0IGFkZHJlc3NlcyBhIHZ1bG5lcmFiaWxpdHkgaW4gYGRfbWFrZV9kaXNjYXJkYWJsZWAsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgYWNyb3NzIHNldmVyYWwgZmlsZXN5c3RlbXM6IGBhdXRvZnNgLCBgZGV2cHRzYCwgYGxpYmZzYCwgYW5kIGB0cmFjZWZzYC4gVGhhdCYjMzk7cyBhIGRlY2VudCBzcHJlYWQgYW5kIGluZGljYXRlcyBhIHBvdGVudGlhbGx5IGltcGFjdGZ1bCBpc3N1ZS4gRm9jdXNpbmcgb24gYGRfbWFrZV9kaXNjYXJkYWJsZWAgaXMgZGVmaW5pdGVseSB0aGUgcmlnaHQgYXBwcm9hY2guCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBmb3IgYW55IHVudXN1YWwgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuLi4gTm9wZSwgYGRfbWFrZV9kaXNjYXJkYWJsZWAgaXMgYmFrZWQgaW50byBgZnMvZGNhY2hlLmNgLCBzbyB3ZSBkb24mIzM5O3QgbmVlZCB0byB3b3JyeSBhYm91dCBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MuIFNvLCBgZF9tYWtlX2Rpc2NhcmRhYmxlYCBpcyB0aGUgcHJpbWFyeSBmb2N1cyBzeW1ib2wuIEkmIzM5O2xsIGFkZCB0aGF0IHRvIHRoZSBsaXN0LgoKQWgsIGFuZCBpdCYjMzk7cyBleHBvcnRlZCEgRXZlbiBiZXR0ZXIhIFRoaXMgbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZSBhbmQgbW9yZSBlYXNpbHkgdGFyZ2V0ZWQuCgpIbW0sIHRoaXMgYnVnIGlzIGFsc28gcmVsYXRlZCB0byBgRENBQ0hFX1BFUlNJU1RFTlRgLCB3aGljaCBnaXZlcyBtZSBwYXVzZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIsIHJlbGF0ZWQgZnVuY3Rpb25zIHdlIHNob3VsZCBjb25zaWRlci4gUmlnaHQsIGBkX21ha2VfcGVyc2lzdGVudGAuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvby4gSSYjMzk7bGwgYWRkIHRoYXQgdG8gdGhlIGxpc3Qgb2YgZm9jdXMgc3ltYm9scy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxNTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZF9tYWtlX2Rpc2NhcmRhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgZF9tYWtlX2Rpc2NhcmRhYmxlYCB0byBwcmV2ZW50IGFuIHVuZGVyZmxvdyBvZiBgZF9sb2NrcmVmLmNvdW50YCBhbmQgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgd2hlbiBgRENBQ0hFX1BFUlNJU1RFTlRgIGlzIG5vdCBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBWRlMgbGF5ZXIgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB2YXJpb3VzIGZpbGVzeXN0ZW1zIChhdXRvZnMsIGRldnB0cywgbGliZnMsIHRyYWNlZnMpIGFuZCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RfbWFrZV9kaXNjYXJkYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGRfbWFrZV9kaXNjYXJkYWJsZWAgdG8gcHJldmVudCBhbiB1bmRlcmZsb3cgb2YgYGRfbG9ja3JlZi5jb3VudGAgYW5kIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHdoZW4gYERDQUNIRV9QRVJTSVNURU5UYCBpcyBub3Qgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVkZTIGxheWVyIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdmFyaW91cyBmaWxlc3lzdGVtcyAoYXV0b2ZzLCBkZXZwdHMsIGxpYmZzLCB0cmFjZWZzKSBhbmQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxNTo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTU6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgYnVnIGluIGBkX21ha2VfZGlzY2FyZGFibGVgIGJ5IHByZXZlbnRpbmcgYSBkZWNyZW1lbnQgb2YgYGRfbG9ja3JlZi5jb3VudGAgd2hlbiB0aGUgYERDQUNIRV9QRVJTSVNURU5UYCBmbGFnIGlzIG5vdCBzZXQuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgdW5kZXJmbG93IGFuZCBzdWJzZXF1ZW50IHVzZS1hZnRlci1mcmVlIG9mIHRoZSBgZGVudHJ5YCBzdHJ1Y3R1cmUuIFVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMDg5YzQ2ODZkOTEyN2UzMzNhY2NmYmUwNzNiOGJjMmMyNzdhMWY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMTggMTU6Mzc6MTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9kY2FjaGUuYyBiL2ZzL2RjYWNoZS5jCmluZGV4IDNlOWFmOWRlNzA3NDYuLjg5N2ExMDBlNzI3ODQgMTAwNjQ0Ci0tLSBhL2ZzL2RjYWNoZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2RjYWNoZS5jCkBAIC0xMDQ2LDcgJiM0MzsxMDQ2LDE2IEBAIEVYUE9SVF9TWU1CT0woZHB1dCk7CiB2b2lkIGRfbWFrZV9kaXNjYXJkYWJsZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCiB7CiAJc3Bpbl9sb2NrKCZhbXA7ZGVudHJ5LSZndDtkX2xvY2spOwotCVdBUk5fT04oIShkZW50cnktJmd0O2RfZmxhZ3MgJmFtcDsgRENBQ0hFX1BFUlNJU1RFTlQpKTsKJiM0MzsJLyoKJiM0MzsJICogRENBQ0hFX1BFUlNJU1RFTlQgcmVjb3JkcyB0aGF0IGRfbWFrZV9wZXJzaXN0ZW50KCkgdG9vayBhIHJlZmVyZW5jZS4KJiM0MzsJICogSWYgaXQgaXMgY2xlYXIgdGhlcmUgaXMgbm8gc3VjaCByZWZlcmVuY2UgdG8gcmV0dXJuLCBhbmQgZHJvcHBpbmcgb25lCiYjNDM7CSAqIGFueXdheSB1bmRlcmZsb3dzIGRfbG9ja3JlZiBhbmQgZnJlZXMgYSBkZW50cnkgc29tZW9uZSBlbHNlIHN0aWxsCiYjNDM7CSAqIGhvbGRzLiBSZWZ1c2UgaW5zdGVhZCwgYXMgc2VsZWN0X2NvbGxlY3RfdW1vdW50KCkgYWxyZWFkeSBkb2VzLgomIzQzOwkgKi8KJiM0MzsJaWYgKFdBUk5fT04oIShkZW50cnktJmd0O2RfZmxhZ3MgJmFtcDsgRENBQ0hFX1BFUlNJU1RFTlQpKSkgewomIzQzOwkJc3Bpbl91bmxvY2soJmFtcDtkZW50cnktJmd0O2RfbG9jayk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KIAlkZW50cnktJmd0O2RfZmxhZ3MgJmFtcDs9IH5EQ0FDSEVfUEVSU0lTVEVOVDsKIAlkZW50cnktJmd0O2RfbG9ja3JlZi5jb3VudC0tOwogCWZpbmlzaF9kcHV0KGRlbnRyeSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDE1OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDkKCQkJCQkJCW91dHB1dDogMTYxCgkJCQkJCQl0aG91Z2h0czogNDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGVudHJ5IFJlZmVyZW5jZSBDb3VudGluZyBGaXgqKgoKT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZF9tYWtlX2Rpc2NhcmRhYmxlYCBpbiBgZnMvZGNhY2hlLmNgLiBUaGUgY29yZSBjaGFuZ2UgaXMgYSBjaGVjayBmb3IgYERDQUNIRV9QRVJTSVNURU5UYCBiZWZvcmUgZGVjcmVtZW50aW5nIGBkZW50cnktJmd0O2RfbG9ja3JlZi5jb3VudGAgYW5kIGNhbGxpbmcgYGZpbmlzaF9kcHV0KGRlbnRyeSlgLiBSaWdodCwgdGhpcyBpcyBhIGRlZmVuc2l2ZSBjaGVjayB0byBwcmV2ZW50IGEgcG90ZW50aWFsIHVuZGVyZmxvdyBpbiB0aGUgcmVmZXJlbmNlIGNvdW50LiBUaGUgY29kZSBjb21tZW50cyBleHBsYWluIHRoYXQgYERDQUNIRV9QRVJTSVNURU5UYCBpbmRpY2F0ZXMgYSBwZXJzaXN0ZW50IHJlZmVyZW5jZSB0YWtlbiBieSBgZF9tYWtlX3BlcnNpc3RlbnQoKWAuIElmIHRoYXQgZmxhZyBpc24mIzM5O3Qgc2V0LCB3ZSBzaG91bGRuJiMzOTt0IGJlIHJlbGVhc2luZyB0aGF0IHJlZmVyZW5jZS4KClRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZpeCBmb3IgYSBjbGFzc2ljYWwgcmVmZXJlbmNlIGNvdW50aW5nIGJ1ZywgbGVhZGluZyB0byBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhlIGBXQVJOX09OYCBpcyBnb29kOyBpdCYjMzk7bGwgaGVscCBjYXRjaCB0aGlzIGR1cmluZyBkZXZlbG9wbWVudC4gV2UgYXJlIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2VzcyBoZXJlOyB0aGUgcHJvYmxlbSBpcyBhYm91dCByZWxlYXNpbmcgbWVtb3J5IHByZW1hdHVyZWx5IGFuZCB1c2luZyBpdCBhZnRlcndhcmQuIEtBU0FOIGlzIHRoZSByZWxldmFudCB0b29sIHRvIGRldGVjdCBhbmQgZGlhZ25vc2UgdXNlLWFmdGVyLWZyZWUgYnVncy4KClNpbmNlIHRoaXMgcGF0Y2ggaXMgKmNvcnJlY3RpbmcqIGEgcmVmZXJlbmNlIGNvdW50IGlzc3VlIGFuZCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgdGhlcmUmIzM5O3Mgbm8gbmVlZCBmb3IgS01TQU4gYW5hbHlzaXMuIFRoZXJlZm9yZSwgSSB3aWxsIHNldCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gTGV0JiMzOTtzIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBwYXRjaCBvbmUgbW9yZSB0aW1lLCBtYWtpbmcgc3VyZSBJIGRpZCBub3QgbWlzcyBhbnl0aGluZzoKYGBgYwp2b2lkIGRfbWFrZV9kaXNjYXJkYWJsZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKIAlzcGluX2xvY2soJmFtcDtkZW50cnktJmd0O2RfbG9jayk7Ci0JV0FSTl9PTighKGRlbnRyeS0mZ3Q7ZF9mbGFncyAmYW1wOyBEQ0FDSEVfUEVSU0lTVEVOVCkpOwomIzQzOwkvKgomIzQzOwkgKiBEQ0FDSEVfUEVSU0lTVEVOVCByZWNvcmRzIHRoYXQgZF9tYWtlX3BlcnNpc3RlbnQoKSB0b29rIGEgcmVmZXJlbmNlLgomIzQzOwkgKiBJZiBpdCBpcyBjbGVhciB0aGVyZSBpcyBubyBzdWNoIHJlZmVyZW5jZSB0byByZXR1cm4sIGFuZCBkcm9wcGluZyBvbmUKJiM0MzsJICogYW55d2F5IHVuZGVyZmxvd3MgZF9sb2NrcmVmIGFuZCBmcmVlcyBhIGRlbnRyeSBzb21lb25lIGVsc2Ugc3RpbGwKJiM0MzsJICogaG9sZHMuIFJlZnVzZSBpbnN0ZWFkLCBhcyBzZWxlY3RfY29sbGVjdF91bW91bnQoKSBhbHJlYWR5IGRvZXMuCiYjNDM7CSAqLwomIzQzOwlpZiAoV0FSTl9PTighKGRlbnRyeS0mZ3Q7ZF9mbGFncyAmYW1wOyBEQ0FDSEVfUEVSU0lTVEVOVCkpKSB7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCWRlbnRyeS0mZ3Q7ZF9mbGFncyAmYW1wOz0gfkRDQUNIRV9QRVJTSVNURU5UOwogCWRlbnRyeS0mZ3Q7ZF9sb2NrcmVmLmNvdW50LS07CiAJZmluaXNoX2RwdXQoZGVudHJ5KTsKYGBgClllYWgsIHRoYXQgaXMgcmlnaHQuIEkgd2lsbCBzZXQgYE5lZWRzS01TQU4gPSBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDE1OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGNvdW50aW5nIGJ1ZyBpbiBgZF9tYWtlX2Rpc2NhcmRhYmxlYCBieSBwcmV2ZW50aW5nIGEgZGVjcmVtZW50IG9mIGBkX2xvY2tyZWYuY291bnRgIHdoZW4gdGhlIGBEQ0FDSEVfUEVSU0lTVEVOVGAgZmxhZyBpcyBub3Qgc2V0LiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIHVuZGVyZmxvdyBhbmQgc3Vic2VxdWVudCB1c2UtYWZ0ZXItZnJlZSBvZiB0aGUgYGRlbnRyeWAgc3RydWN0dXJlLiBVc2UtYWZ0ZXItZnJlZSBidWdzIGFuZCByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGlvbnMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGNvdW50aW5nIGJ1ZyBpbiBgZF9tYWtlX2Rpc2NhcmRhYmxlYCBieSBwcmV2ZW50aW5nIGEgZGVjcmVtZW50IG9mIGBkX2xvY2tyZWYuY291bnRgIHdoZW4gdGhlIGBEQ0FDSEVfUEVSU0lTVEVOVGAgZmxhZyBpcyBub3Qgc2V0LiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIHVuZGVyZmxvdyBhbmQgc3Vic2VxdWVudCB1c2UtYWZ0ZXItZnJlZSBvZiB0aGUgYGRlbnRyeWAgc3RydWN0dXJlLiBVc2UtYWZ0ZXItZnJlZSBidWdzIGFuZCByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGlvbnMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMThUMTU6Mzc6MTkuOTcxMDkyOTYyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzExOTc4NjE5NzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRfbWFrZV9kaXNjYXJkYWJsZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgYnVnIGluIGBkX21ha2VfZGlzY2FyZGFibGVgIGJ5IHByZXZlbnRpbmcgYSBkZWNyZW1lbnQgb2YgYGRfbG9ja3JlZi5jb3VudGAgd2hlbiB0aGUgYERDQUNIRV9QRVJTSVNURU5UYCBmbGFnIGlzIG5vdCBzZXQuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgdW5kZXJmbG93IGFuZCBzdWJzZXF1ZW50IHVzZS1hZnRlci1mcmVlIG9mIHRoZSBgZGVudHJ5YCBzdHJ1Y3R1cmUuIFVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgZF9tYWtlX2Rpc2NhcmRhYmxlYCB0byBwcmV2ZW50IGFuIHVuZGVyZmxvdyBvZiBgZF9sb2NrcmVmLmNvdW50YCBhbmQgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgd2hlbiBgRENBQ0hFX1BFUlNJU1RFTlRgIGlzIG5vdCBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBWRlMgbGF5ZXIgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB2YXJpb3VzIGZpbGVzeXN0ZW1zIChhdXRvZnMsIGRldnB0cywgbGliZnMsIHRyYWNlZnMpIGFuZCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxNTozNzoxOS45NzEwOTk0MTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTkyNjk3ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzMDg5YzQ2ODZkOTEyN2UzMzNhY2NmYmUwNzNiOGJjMmMyNzdhMWY3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDE4IDE1OjM3OjE3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2RjYWNoZS5jIGIvZnMvZGNhY2hlLmNcXG5pbmRleCAzZTlhZjlkZTcwNzQ2Li44OTdhMTAwZTcyNzg0IDEwMDY0NFxcbi0tLSBhL2ZzL2RjYWNoZS5jXFxuKysrIGIvZnMvZGNhY2hlLmNcXG5AQCAtMTA0Niw3ICsxMDQ2LDE2IEBAIEVYUE9SVF9TWU1CT0woZHB1dCk7XFxuIHZvaWQgZF9tYWtlX2Rpc2NhcmRhYmxlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4ge1xcbiBcXHRzcGluX2xvY2soXFx1MDAyNmRlbnRyeS1cXHUwMDNlZF9sb2NrKTtcXG4tXFx0V0FSTl9PTighKGRlbnRyeS1cXHUwMDNlZF9mbGFncyBcXHUwMDI2IERDQUNIRV9QRVJTSVNURU5UKSk7XFxuK1xcdC8qXFxuK1xcdCAqIERDQUNIRV9QRVJTSVNURU5UIHJlY29yZHMgdGhhdCBkX21ha2VfcGVyc2lzdGVudCgpIHRvb2sgYSByZWZlcmVuY2UuXFxuK1xcdCAqIElmIGl0IGlzIGNsZWFyIHRoZXJlIGlzIG5vIHN1Y2ggcmVmZXJlbmNlIHRvIHJldHVybiwgYW5kIGRyb3BwaW5nIG9uZVxcbitcXHQgKiBhbnl3YXkgdW5kZXJmbG93cyBkX2xvY2tyZWYgYW5kIGZyZWVzIGEgZGVudHJ5IHNvbWVvbmUgZWxzZSBzdGlsbFxcbitcXHQgKiBob2xkcy4gUmVmdXNlIGluc3RlYWQsIGFzIHNlbGVjdF9jb2xsZWN0X3Vtb3VudCgpIGFscmVhZHkgZG9lcy5cXG4rXFx0ICovXFxuK1xcdGlmIChXQVJOX09OKCEoZGVudHJ5LVxcdTAwM2VkX2ZsYWdzIFxcdTAwMjYgRENBQ0hFX1BFUlNJU1RFTlQpKSkge1xcbitcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2spO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4gXFx0ZGVudHJ5LVxcdTAwM2VkX2ZsYWdzIFxcdTAwMjY9IH5EQ0FDSEVfUEVSU0lTVEVOVDtcXG4gXFx0ZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYuY291bnQtLTtcXG4gXFx0ZmluaXNoX2RwdXQoZGVudHJ5KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTU6Mzc6MjEuNjkwOTExODQ4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzAxOTgwNzY3OTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRfbWFrZV9kaXNjYXJkYWJsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgZF9tYWtlX2Rpc2NhcmRhYmxlYCB0byBwcmV2ZW50IGFuIHVuZGVyZmxvdyBvZiBgZF9sb2NrcmVmLmNvdW50YCBhbmQgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgd2hlbiBgRENBQ0hFX1BFUlNJU1RFTlRgIGlzIG5vdCBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBWRlMgbGF5ZXIgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB2YXJpb3VzIGZpbGVzeXN0ZW1zIChhdXRvZnMsIGRldnB0cywgbGliZnMsIHRyYWNlZnMpIGFuZCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMDg5YzQ2ODZkOTEyN2UzMzNhY2NmYmUwNzNiOGJjMmMyNzdhMWY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTU6Mzc6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9kY2FjaGUuYyBiL2ZzL2RjYWNoZS5jXG5pbmRleCAzZTlhZjlkZTcwNzQ2Li44OTdhMTAwZTcyNzg0IDEwMDY0NFxuLS0tIGEvZnMvZGNhY2hlLmNcbisrKyBiL2ZzL2RjYWNoZS5jXG5AQCAtMTA0Niw3ICsxMDQ2LDE2IEBAIEVYUE9SVF9TWU1CT0woZHB1dCk7XG4gdm9pZCBkX21ha2VfZGlzY2FyZGFibGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIHtcbiBcdHNwaW5fbG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbi1cdFdBUk5fT04oIShkZW50cnktXHUwMDNlZF9mbGFncyBcdTAwMjYgRENBQ0hFX1BFUlNJU1RFTlQpKTtcbitcdC8qXG4rXHQgKiBEQ0FDSEVfUEVSU0lTVEVOVCByZWNvcmRzIHRoYXQgZF9tYWtlX3BlcnNpc3RlbnQoKSB0b29rIGEgcmVmZXJlbmNlLlxuK1x0ICogSWYgaXQgaXMgY2xlYXIgdGhlcmUgaXMgbm8gc3VjaCByZWZlcmVuY2UgdG8gcmV0dXJuLCBhbmQgZHJvcHBpbmcgb25lXG4rXHQgKiBhbnl3YXkgdW5kZXJmbG93cyBkX2xvY2tyZWYgYW5kIGZyZWVzIGEgZGVudHJ5IHNvbWVvbmUgZWxzZSBzdGlsbFxuK1x0ICogaG9sZHMuIFJlZnVzZSBpbnN0ZWFkLCBhcyBzZWxlY3RfY29sbGVjdF91bW91bnQoKSBhbHJlYWR5IGRvZXMuXG4rXHQgKi9cbitcdGlmIChXQVJOX09OKCEoZGVudHJ5LVx1MDAzZWRfZmxhZ3MgXHUwMDI2IERDQUNIRV9QRVJTSVNURU5UKSkpIHtcbitcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4rXHRcdHJldHVybjtcbitcdH1cbiBcdGRlbnRyeS1cdTAwM2VkX2ZsYWdzIFx1MDAyNj0gfkRDQUNIRV9QRVJTSVNURU5UO1xuIFx0ZGVudHJ5LVx1MDAzZWRfbG9ja3JlZi5jb3VudC0tO1xuIFx0ZmluaXNoX2RwdXQoZGVudHJ5KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDE1OjM3OjIxLjY5MDkxMzIxOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NDYxMzgyNDAxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb3JlIFZGUyBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkX21ha2VfZGlzY2FyZGFibGVgIHdpdGhpbiBgZnMvZGNhY2hlLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYSBxdWljayBjaGVjayBvZiB0aGUgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbmFsIGltcGFjdC4gSXQgc2VlbXMgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBgV0FSTl9PTmAgY2hlY2ssIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB0aGUgYERDQUNIRV9QRVJTSVNURU5UYCBmbGFnLiBJZiB0aGF0IGZsYWcgaXNuJ3Qgc2V0LCBpdCBiYWlscyBvdXQgZWFybHksIHByZXZlbnRpbmcgYSBkZWNyZW1lbnQgb24gYGRfbG9ja3JlZi5jb3VudGAgdGhhdCBjb3VsZCBsZWFkIHRvIGFuIHVuZGVyZmxvdyBhbmQsIHVsdGltYXRlbHksIGEgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9uLiBDbGFzc2ljIG1lbW9yeSBzYWZldHkgaXNzdWUuXG5cblRoZSBmYWN0IHRoYXQgaXQncyBpbiB0aGUgVkZTIGxheWVyIGlzIG5vdGV3b3J0aHkuIFdlJ3JlIGluIGNvcmUgZmlsZSBzeXN0ZW0gdGVycml0b3J5IGhlcmUsIHNvIGFueSBidWcgaW4gdGhpcyBhcmVhIGNvdWxkIGhhdmUgcHJldHR5IHNlcmlvdXMgcmVwZXJjdXNzaW9ucy4gSeKAmW0gdGhpbmtpbmcgZnV6emluZyB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIHdvcnRoIG15IHRpbWUuIEl0J3MgYW4gZXhwb3J0ZWQgZnVuY3Rpb24sIHNvIHRoYXQgaW5jcmVhc2VzIHRoZSBjaGFuY2VzIGl0J3MgYWNjZXNzaWJsZSB0aHJvdWdoIG1hbnkgY29kZXBhdGhzIGFuZCB0aGVyZWZvcmUgZ29vZCBmdXp6aW5nIHN1cmZhY2UgYXJlYS4gSG9sZCBvbi4uLiBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBwbGFjZXMgYGRfbWFrZV9kaXNjYXJkYWJsZWAgaXMgY2FsbGVkLiBUaGF04oCZcyB0aGUga2V5IGhlcmUg4oCTIHVuZGVyc3RhbmQgdGhlIGNhbGwgc2l0ZXMgdG8gc2VlIHdoYXQgdGhlIGlucHV0cyBhcmUgYW5kIHdoYXQga2luZCBvZiBmdXp6aW5nIHRhcmdldHMgbWFrZSBzZW5zZS4gR290dGEgbG9vayB1cCB0aGUgY2FsbCBjaGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExMiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDE1OjM5OjU2LjMwNDc0MTIyNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAzNzMyODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRfbWFrZV9kaXNjYXJkYWJsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hdXRvZnMvcm9vdC5jPTYyOD1zdGF0aWMgaW50IGF1dG9mc19kaXJfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuLS1cXG5mcy9hdXRvZnMvcm9vdC5jLTYzNC1cXHRwX2luby1cXHUwMDNlY291bnQtLTtcXG5mcy9hdXRvZnMvcm9vdC5jOjYzNTpcXHRkX21ha2VfZGlzY2FyZGFibGUoZGVudHJ5KTtcXG5mcy9hdXRvZnMvcm9vdC5jLTYzNi1cXG4tLVxcbmZzL2F1dG9mcy9yb290LmM9Njk2PXN0YXRpYyBpbnQgYXV0b2ZzX2Rpcl9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbi0tXFxuZnMvYXV0b2ZzL3Jvb3QuYy03MTYtXFx0cF9pbm8tXFx1MDAzZWNvdW50LS07XFxuZnMvYXV0b2ZzL3Jvb3QuYzo3MTc6XFx0ZF9tYWtlX2Rpc2NhcmRhYmxlKGRlbnRyeSk7XFxuZnMvYXV0b2ZzL3Jvb3QuYy03MTgtXFx0ZF9pbm9kZShkZW50cnkpLVxcdTAwM2VpX3NpemUgPSAwO1xcbi0tXFxuZnMvZGNhY2hlLmM9MTA0ND1FWFBPUlRfU1lNQk9MKGRwdXQpO1xcbmZzL2RjYWNoZS5jLTEwNDUtXFxuZnMvZGNhY2hlLmM6MTA0Njp2b2lkIGRfbWFrZV9kaXNjYXJkYWJsZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuZnMvZGNhY2hlLmMtMTA0Ny17XFxuLS1cXG5mcy9kY2FjaGUuYy0xMDYyLX1cXG5mcy9kY2FjaGUuYzoxMDYzOkVYUE9SVF9TWU1CT0woZF9tYWtlX2Rpc2NhcmRhYmxlKTtcXG5mcy9kY2FjaGUuYy0xMDY0LVxcbi0tXFxuZnMvZGV2cHRzL2lub2RlLmM9NTUzPXZvaWQgZGV2cHRzX3B0eV9raWxsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4tLVxcbmZzL2RldnB0cy9pbm9kZS5jLTU2MC1cXHRmc25vdGlmeV91bmxpbmsoZF9pbm9kZShkZW50cnktXFx1MDAzZWRfcGFyZW50KSwgZGVudHJ5KTtcXG5mcy9kZXZwdHMvaW5vZGUuYzo1NjE6XFx0ZF9tYWtlX2Rpc2NhcmRhYmxlKGRlbnRyeSk7XFxuZnMvZGV2cHRzL2lub2RlLmMtNTYyLX1cXG4tLVxcbmZzL2xpYmZzLmM9NTk3PXN0YXRpYyB2b2lkIF9fc2ltcGxlX3JlY3Vyc2l2ZV9yZW1vdmFsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4tLVxcbmZzL2xpYmZzLmMtNjI0LVxcdFxcdFxcdFxcdGZzbm90aWZ5X2RlbGV0ZShpbm9kZSwgZF9pbm9kZSh2aWN0aW0pLCB2aWN0aW0pO1xcbmZzL2xpYmZzLmM6NjI1OlxcdFxcdFxcdFxcdGRfbWFrZV9kaXNjYXJkYWJsZSh2aWN0aW0pO1xcbmZzL2xpYmZzLmMtNjI2LVxcdFxcdFxcdH1cXG4tLVxcbmZzL2xpYmZzLmM9ODA1PWludCBzaW1wbGVfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuLS1cXG5mcy9saWJmcy5jLTgwNy1cXHRfX3NpbXBsZV91bmxpbmsoZGlyLCBkZW50cnkpO1xcbmZzL2xpYmZzLmM6ODA4OlxcdGRfbWFrZV9kaXNjYXJkYWJsZShkZW50cnkpO1xcbmZzL2xpYmZzLmMtODA5LVxcdHJldHVybiAwO1xcbi0tXFxuZnMvbGliZnMuYz04MTM9aW50IHNpbXBsZV9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbi0tXFxuZnMvbGliZnMuYy04MTgtXFx0X19zaW1wbGVfcm1kaXIoZGlyLCBkZW50cnkpO1xcbmZzL2xpYmZzLmM6ODE5OlxcdGRfbWFrZV9kaXNjYXJkYWJsZShkZW50cnkpO1xcbmZzL2xpYmZzLmMtODIwLVxcdHJldHVybiAwO1xcbi0tXFxuZnMvdHJhY2Vmcy9ldmVudF9pbm9kZS5jPTg5MD12b2lkIGV2ZW50ZnNfcmVtb3ZlX2V2ZW50c19kaXIoc3RydWN0IGV2ZW50ZnNfaW5vZGUgKmVpKVxcbi0tXFxuZnMvdHJhY2Vmcy9ldmVudF9pbm9kZS5jLTkxMC1cXHRkX2ludmFsaWRhdGUoZGVudHJ5KTtcXG5mcy90cmFjZWZzL2V2ZW50X2lub2RlLmM6OTExOlxcdGRfbWFrZV9kaXNjYXJkYWJsZShkZW50cnkpO1xcbmZzL3RyYWNlZnMvZXZlbnRfaW5vZGUuYy05MTItfVxcbi0tXFxuaW5jbHVkZS9saW51eC9kY2FjaGUuaD02NDU9c3RydWN0IGRlbnRyeSAqZF9tYWtlX3BlcnNpc3RlbnQoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7XFxuaW5jbHVkZS9saW51eC9kY2FjaGUuaDo2NDY6dm9pZCBkX21ha2VfZGlzY2FyZGFibGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KTtcXG5pbmNsdWRlL2xpbnV4L2RjYWNoZS5oLTY0Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTU6Mzk6NTguMDA4NDc5ODcxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ1NjYzMTcxOTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3k6IGBkX21ha2VfZGlzY2FyZGFibGVgIFx1MDAyNiBSZWxhdGVkIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHRoaXMgcGF0Y2ggbG9va3MgbGlrZSBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSXQgYWRkcmVzc2VzIGEgdnVsbmVyYWJpbGl0eSBpbiBgZF9tYWtlX2Rpc2NhcmRhYmxlYCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgdXNlZCBhY3Jvc3Mgc2V2ZXJhbCBmaWxlc3lzdGVtczogYGF1dG9mc2AsIGBkZXZwdHNgLCBgbGliZnNgLCBhbmQgYHRyYWNlZnNgLiBUaGF0J3MgYSBkZWNlbnQgc3ByZWFkIGFuZCBpbmRpY2F0ZXMgYSBwb3RlbnRpYWxseSBpbXBhY3RmdWwgaXNzdWUuIEZvY3VzaW5nIG9uIGBkX21ha2VfZGlzY2FyZGFibGVgIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGFwcHJvYWNoLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIGZvciBhbnkgdW51c3VhbCBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4uLiBOb3BlLCBgZF9tYWtlX2Rpc2NhcmRhYmxlYCBpcyBiYWtlZCBpbnRvIGBmcy9kY2FjaGUuY2AsIHNvIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLiBTbywgYGRfbWFrZV9kaXNjYXJkYWJsZWAgaXMgdGhlIHByaW1hcnkgZm9jdXMgc3ltYm9sLiBJJ2xsIGFkZCB0aGF0IHRvIHRoZSBsaXN0LlxuXG5BaCwgYW5kIGl0J3MgZXhwb3J0ZWQhIEV2ZW4gYmV0dGVyISBUaGlzIG1lYW5zIGl0J3MgYWNjZXNzaWJsZSBhbmQgbW9yZSBlYXNpbHkgdGFyZ2V0ZWQuXG5cbkhtbSwgdGhpcyBidWcgaXMgYWxzbyByZWxhdGVkIHRvIGBEQ0FDSEVfUEVSU0lTVEVOVGAsIHdoaWNoIGdpdmVzIG1lIHBhdXNlLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIG90aGVyLCByZWxhdGVkIGZ1bmN0aW9ucyB3ZSBzaG91bGQgY29uc2lkZXIuIFJpZ2h0LCBgZF9tYWtlX3BlcnNpc3RlbnRgLiBUaGF0J3MgaW1wb3J0YW50IHRvby4gSSdsbCBhZGQgdGhhdCB0byB0aGUgbGlzdCBvZiBmb2N1cyBzeW1ib2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDk3LCJPdXRwdXRUb2tlbnMiOjEyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxNTo0MjoyMy42NzE2NTQ3ODJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZF9tYWtlX2Rpc2NhcmRhYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBkX21ha2VfZGlzY2FyZGFibGVgIHRvIHByZXZlbnQgYW4gdW5kZXJmbG93IG9mIGBkX2xvY2tyZWYuY291bnRgIGFuZCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSB3aGVuIGBEQ0FDSEVfUEVSU0lTVEVOVGAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFZGUyBsYXllciB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHZhcmlvdXMgZmlsZXN5c3RlbXMgKGF1dG9mcywgZGV2cHRzLCBsaWJmcywgdHJhY2VmcykgYW5kIGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZF9tYWtlX2Rpc2NhcmRhYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBkX21ha2VfZGlzY2FyZGFibGVgIHRvIHByZXZlbnQgYW4gdW5kZXJmbG93IG9mIGBkX2xvY2tyZWYuY291bnRgIGFuZCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSB3aGVuIGBEQ0FDSEVfUEVSU0lTVEVOVGAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFZGUyBsYXllciB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHZhcmlvdXMgZmlsZXN5c3RlbXMgKGF1dG9mcywgZGV2cHRzLCBsaWJmcywgdHJhY2VmcykgYW5kIGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDE1OjQyOjIzLjY3MTY4MTU4MloiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mjc4MDIyNTczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTU6NDI6MjMuNjcyMTAzNTYyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODI3NzU5NjY1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgYnVnIGluIGBkX21ha2VfZGlzY2FyZGFibGVgIGJ5IHByZXZlbnRpbmcgYSBkZWNyZW1lbnQgb2YgYGRfbG9ja3JlZi5jb3VudGAgd2hlbiB0aGUgYERDQUNIRV9QRVJTSVNURU5UYCBmbGFnIGlzIG5vdCBzZXQuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgdW5kZXJmbG93IGFuZCBzdWJzZXF1ZW50IHVzZS1hZnRlci1mcmVlIG9mIHRoZSBgZGVudHJ5YCBzdHJ1Y3R1cmUuIFVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDMwODljNDY4NmQ5MTI3ZTMzM2FjY2ZiZTA3M2I4YmMyYzI3N2ExZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAxNTozNzoxNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2RjYWNoZS5jIGIvZnMvZGNhY2hlLmNcbmluZGV4IDNlOWFmOWRlNzA3NDYuLjg5N2ExMDBlNzI3ODQgMTAwNjQ0XG4tLS0gYS9mcy9kY2FjaGUuY1xuKysrIGIvZnMvZGNhY2hlLmNcbkBAIC0xMDQ2LDcgKzEwNDYsMTYgQEAgRVhQT1JUX1NZTUJPTChkcHV0KTtcbiB2b2lkIGRfbWFrZV9kaXNjYXJkYWJsZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4ge1xuIFx0c3Bpbl9sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuLVx0V0FSTl9PTighKGRlbnRyeS1cdTAwM2VkX2ZsYWdzIFx1MDAyNiBEQ0FDSEVfUEVSU0lTVEVOVCkpO1xuK1x0LypcbitcdCAqIERDQUNIRV9QRVJTSVNURU5UIHJlY29yZHMgdGhhdCBkX21ha2VfcGVyc2lzdGVudCgpIHRvb2sgYSByZWZlcmVuY2UuXG4rXHQgKiBJZiBpdCBpcyBjbGVhciB0aGVyZSBpcyBubyBzdWNoIHJlZmVyZW5jZSB0byByZXR1cm4sIGFuZCBkcm9wcGluZyBvbmVcbitcdCAqIGFueXdheSB1bmRlcmZsb3dzIGRfbG9ja3JlZiBhbmQgZnJlZXMgYSBkZW50cnkgc29tZW9uZSBlbHNlIHN0aWxsXG4rXHQgKiBob2xkcy4gUmVmdXNlIGluc3RlYWQsIGFzIHNlbGVjdF9jb2xsZWN0X3Vtb3VudCgpIGFscmVhZHkgZG9lcy5cbitcdCAqL1xuK1x0aWYgKFdBUk5fT04oIShkZW50cnktXHUwMDNlZF9mbGFncyBcdTAwMjYgRENBQ0hFX1BFUlNJU1RFTlQpKSkge1xuK1x0XHRzcGluX3VubG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuIFx0ZGVudHJ5LVx1MDAzZWRfZmxhZ3MgXHUwMDI2PSB+RENBQ0hFX1BFUlNJU1RFTlQ7XG4gXHRkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50LS07XG4gXHRmaW5pc2hfZHB1dChkZW50cnkpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTU6NDI6MjMuNjcyMTA1OTcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI3NzU3NDM5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERlbnRyeSBSZWZlcmVuY2UgQ291bnRpbmcgRml4KipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZF9tYWtlX2Rpc2NhcmRhYmxlYCBpbiBgZnMvZGNhY2hlLmNgLiBUaGUgY29yZSBjaGFuZ2UgaXMgYSBjaGVjayBmb3IgYERDQUNIRV9QRVJTSVNURU5UYCBiZWZvcmUgZGVjcmVtZW50aW5nIGBkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50YCBhbmQgY2FsbGluZyBgZmluaXNoX2RwdXQoZGVudHJ5KWAuIFJpZ2h0LCB0aGlzIGlzIGEgZGVmZW5zaXZlIGNoZWNrIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgdW5kZXJmbG93IGluIHRoZSByZWZlcmVuY2UgY291bnQuIFRoZSBjb2RlIGNvbW1lbnRzIGV4cGxhaW4gdGhhdCBgRENBQ0hFX1BFUlNJU1RFTlRgIGluZGljYXRlcyBhIHBlcnNpc3RlbnQgcmVmZXJlbmNlIHRha2VuIGJ5IGBkX21ha2VfcGVyc2lzdGVudCgpYC4gSWYgdGhhdCBmbGFnIGlzbid0IHNldCwgd2Ugc2hvdWxkbid0IGJlIHJlbGVhc2luZyB0aGF0IHJlZmVyZW5jZS5cblxuVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZml4IGZvciBhIGNsYXNzaWNhbCByZWZlcmVuY2UgY291bnRpbmcgYnVnLCBsZWFkaW5nIHRvIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBUaGUgYFdBUk5fT05gIGlzIGdvb2Q7IGl0J2xsIGhlbHAgY2F0Y2ggdGhpcyBkdXJpbmcgZGV2ZWxvcG1lbnQuIFdlIGFyZSBub3QgaW50cm9kdWNpbmcgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MgaGVyZTsgdGhlIHByb2JsZW0gaXMgYWJvdXQgcmVsZWFzaW5nIG1lbW9yeSBwcmVtYXR1cmVseSBhbmQgdXNpbmcgaXQgYWZ0ZXJ3YXJkLiBLQVNBTiBpcyB0aGUgcmVsZXZhbnQgdG9vbCB0byBkZXRlY3QgYW5kIGRpYWdub3NlIHVzZS1hZnRlci1mcmVlIGJ1Z3MuXG5cblNpbmNlIHRoaXMgcGF0Y2ggaXMgKmNvcnJlY3RpbmcqIGEgcmVmZXJlbmNlIGNvdW50IGlzc3VlIGFuZCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgdGhlcmUncyBubyBuZWVkIGZvciBLTVNBTiBhbmFseXNpcy4gVGhlcmVmb3JlLCBJIHdpbGwgc2V0IGBOZWVkc0tNU0FOID0gZmFsc2VgLiBMZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aGUgcGF0Y2ggb25lIG1vcmUgdGltZSwgbWFraW5nIHN1cmUgSSBkaWQgbm90IG1pc3MgYW55dGhpbmc6XG5gYGBjXG52b2lkIGRfbWFrZV9kaXNjYXJkYWJsZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG57XG4gXHRzcGluX2xvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4tXHRXQVJOX09OKCEoZGVudHJ5LVx1MDAzZWRfZmxhZ3MgXHUwMDI2IERDQUNIRV9QRVJTSVNURU5UKSk7XG4rXHQvKlxuK1x0ICogRENBQ0hFX1BFUlNJU1RFTlQgcmVjb3JkcyB0aGF0IGRfbWFrZV9wZXJzaXN0ZW50KCkgdG9vayBhIHJlZmVyZW5jZS5cbitcdCAqIElmIGl0IGlzIGNsZWFyIHRoZXJlIGlzIG5vIHN1Y2ggcmVmZXJlbmNlIHRvIHJldHVybiwgYW5kIGRyb3BwaW5nIG9uZVxuK1x0ICogYW55d2F5IHVuZGVyZmxvd3MgZF9sb2NrcmVmIGFuZCBmcmVlcyBhIGRlbnRyeSBzb21lb25lIGVsc2Ugc3RpbGxcbitcdCAqIGhvbGRzLiBSZWZ1c2UgaW5zdGVhZCwgYXMgc2VsZWN0X2NvbGxlY3RfdW1vdW50KCkgYWxyZWFkeSBkb2VzLlxuK1x0ICovXG4rXHRpZiAoV0FSTl9PTighKGRlbnRyeS1cdTAwM2VkX2ZsYWdzIFx1MDAyNiBEQ0FDSEVfUEVSU0lTVEVOVCkpKSB7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4gXHRkZW50cnktXHUwMDNlZF9mbGFncyBcdTAwMjY9IH5EQ0FDSEVfUEVSU0lTVEVOVDtcbiBcdGRlbnRyeS1cdTAwM2VkX2xvY2tyZWYuY291bnQtLTtcbiBcdGZpbmlzaF9kcHV0KGRlbnRyeSk7XG5gYGBcblllYWgsIHRoYXQgaXMgcmlnaHQuIEkgd2lsbCBzZXQgYE5lZWRzS01TQU4gPSBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDksIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTU6NDI6MzEuOTQ5Njg0ODQ0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlZmVyZW5jZSBjb3VudGluZyBidWcgaW4gYGRfbWFrZV9kaXNjYXJkYWJsZWAgYnkgcHJldmVudGluZyBhIGRlY3JlbWVudCBvZiBgZF9sb2NrcmVmLmNvdW50YCB3aGVuIHRoZSBgRENBQ0hFX1BFUlNJU1RFTlRgIGZsYWcgaXMgbm90IHNldC4gVGhpcyBwcmV2ZW50cyBhIHBvdGVudGlhbCB1bmRlcmZsb3cgYW5kIHN1YnNlcXVlbnQgdXNlLWFmdGVyLWZyZWUgb2YgdGhlIGBkZW50cnlgIHN0cnVjdHVyZS4gVXNlLWFmdGVyLWZyZWUgYnVncyBhbmQgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb25zIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgYnVnIGluIGBkX21ha2VfZGlzY2FyZGFibGVgIGJ5IHByZXZlbnRpbmcgYSBkZWNyZW1lbnQgb2YgYGRfbG9ja3JlZi5jb3VudGAgd2hlbiB0aGUgYERDQUNIRV9QRVJTSVNURU5UYCBmbGFnIGlzIG5vdCBzZXQuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgdW5kZXJmbG93IGFuZCBzdWJzZXF1ZW50IHVzZS1hZnRlci1mcmVlIG9mIHRoZSBgZGVudHJ5YCBzdHJ1Y3R1cmUuIFVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowm94fg[1] Phase: Succeeded StartedAt: 2026-08-18 15:42:43 +0000 UTC FinishedAt: 2026-08-18 15:42:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-18 15:42:43 +0000 UTC FinishedAt: 2026-08-18 15:42:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2] Phase: Succeeded StartedAt: 2026-08-18 15:42:43 +0000 UTC FinishedAt: 2026-08-18 19:32:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-18 15:42:43 +0000 UTC FinishedAt: 2026-08-18 19:32:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-18 15:42:43 +0000 UTC FinishedAt: 2026-08-18 15:42:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-18 15:42:43 +0000 UTC FinishedAt: 2026-08-18 15:42:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.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-workflowm94fg/series-workflowm94fg-convert-artifact-3006841346/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-18 15:42:53 +0000 UTC FinishedAt: 2026-08-18 16:03:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-18 15:42:53 +0000 UTC FinishedAt: 2026-08-18 16:03:53 +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:*4683a541-9a8e-405d-a333-b8c7ebec969e,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-workflowm94fg/series-workflowm94fg-convert-artifact-3006841346/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": "d7f1f022-08c2-4451-90cb-17b2c8ad2e07", "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-workflowm94fg/series-workflowm94fg-build-action-387469504/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-18 15:42:53 +0000 UTC FinishedAt: 2026-08-18 16:03:33 +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:*4683a541-9a8e-405d-a333-b8c7ebec969e,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-workflowm94fg/series-workflowm94fg-convert-artifact-3006841346/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": "d7f1f022-08c2-4451-90cb-17b2c8ad2e07", "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-workflowm94fg/series-workflowm94fg-build-action-387469504/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-18 16:03:53 +0000 UTC FinishedAt: 2026-08-18 16:03:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-18 16:03:53 +0000 UTC FinishedAt: 2026-08-18 16:03:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-18 16:03:53 +0000 UTC FinishedAt: 2026-08-18 16:04:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-18 16:03:53 +0000 UTC FinishedAt: 2026-08-18 16:03:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.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-workflowm94fg/series-workflowm94fg-convert-artifact-3065822813/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-18 16:04:03 +0000 UTC FinishedAt: 2026-08-18 16:06:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-18 16:04:03 +0000 UTC FinishedAt: 2026-08-18 16:06:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d7f1f022-08c2-4451-90cb-17b2c8ad2e07,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-workflowm94fg/series-workflowm94fg-build-action-387469504/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-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-18 16:06:20 +0000 UTC FinishedAt: 2026-08-18 16:06:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-18 16:06:20 +0000 UTC FinishedAt: 2026-08-18 16:06:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-18 16:06:20 +0000 UTC FinishedAt: 2026-08-18 16:27:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-18 16:06:20 +0000 UTC FinishedAt: 2026-08-18 16:27: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:*4683a541-9a8e-405d-a333-b8c7ebec969e,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-workflowm94fg/series-workflowm94fg-convert-artifact-3065822813/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": "37808f93-4567-4be2-84be-c3e1ac8c0379", "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-workflowm94fg/series-workflowm94fg-build-action-3792830265/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-18 16:06:20 +0000 UTC FinishedAt: 2026-08-18 16:26:49 +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:*4683a541-9a8e-405d-a333-b8c7ebec969e,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-workflowm94fg/series-workflowm94fg-convert-artifact-3065822813/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": "37808f93-4567-4be2-84be-c3e1ac8c0379", "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-workflowm94fg/series-workflowm94fg-build-action-3792830265/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-18 16:27:11 +0000 UTC FinishedAt: 2026-08-18 16:27:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-18 16:27:11 +0000 UTC FinishedAt: 2026-08-18 16:27:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-18 16:27:11 +0000 UTC FinishedAt: 2026-08-18 16:29:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-18 16:27:11 +0000 UTC FinishedAt: 2026-08-18 16:29:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*37808f93-4567-4be2-84be-c3e1ac8c0379,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-workflowm94fg/series-workflowm94fg-build-action-3792830265/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-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-18 16:29:15 +0000 UTC FinishedAt: 2026-08-18 19:32:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-18 16:29:15 +0000 UTC FinishedAt: 2026-08-18 19:32:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"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:*d7f1f022-08c2-4451-90cb-17b2c8ad2e07,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*37808f93-4567-4be2-84be-c3e1ac8c0379,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-workflowm94fg/series-workflowm94fg-build-action-387469504/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-workflowm94fg/series-workflowm94fg-build-action-3792830265/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-18 16:29:15 +0000 UTC FinishedAt: 2026-08-18 16:29:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-18 16:29:15 +0000 UTC FinishedAt: 2026-08-18 16:29:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"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-workflowm94fg/series-workflowm94fg-convert-artifact-3110312162/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-18 16:29:15 +0000 UTC FinishedAt: 2026-08-18 16:29:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-18 16:29:15 +0000 UTC FinishedAt: 2026-08-18 16:29:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-18 16:29:15 +0000 UTC FinishedAt: 2026-08-18 16:29:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-18 16:29:25 +0000 UTC FinishedAt: 2026-08-18 19:32:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm94fg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["d_make_discardable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f0a1e9019ea7a4d5a4c14d1ee954360838ef938","config_name":"upstream-apparmor-kasan.config","series_id":"bd96ea23-7f7a-4256-98ba-3c2bf4ac707e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-18 16:29:25 +0000 UTC FinishedAt: 2026-08-18 19:32:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d7f1f022-08c2-4451-90cb-17b2c8ad2e07,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*37808f93-4567-4be2-84be-c3e1ac8c0379,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-workflowm94fg/series-workflowm94fg-build-action-387469504/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-workflowm94fg/series-workflowm94fg-build-action-3792830265/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-workflowm94fg/series-workflowm94fg-convert-artifact-3110312162/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,}