Name: series-workflowv9f5q Phase: Succeeded StartedAt: 2026-08-11 04:57:13 +0000 UTC FinishedAt: 2026-08-11 08:39:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[0] Phase: Succeeded StartedAt: 2026-08-11 04:57:13 +0000 UTC FinishedAt: 2026-08-11 04:59:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[0].run-triage Phase: Succeeded StartedAt: 2026-08-11 04:57:13 +0000 UTC FinishedAt: 2026-08-11 04:59:57 +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": "fe6568ca989d7625447625db8562bebbe5be054a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fe6568ca989d7625447625db8562bebbe5be054a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "6eba0032-ce29-4eb9-8e0c-58dff5787c1c" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "fuse_fill_super_common" ], "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+CgkJCTx0ZD4yMDI2LzA4LzExIDA0OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2ZpbGxfc3VwZXJfY29tbW9uJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBmdXNlX29wdF9mZGAgdG8gcHJldmVudCBtdWx0aXBsZSBmaWxlIGRlc2NyaXB0b3JzIGZyb20gYmVpbmcgc3BlY2lmaWVkIGR1cmluZyBGVVNFIG1vdW50LiBUaGlzIGZpeGVzIGEgbG9naWMgYnVnIHRoYXQgY291bGQgbGVhZCB0byBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzICh3aGljaCBhcmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtNRU1MRUFLKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiBgZnVzZV9vcHRfZmRgIHRvIHByZXZlbnQgc3BlY2lmeWluZyBtdWx0aXBsZSBgZmRgIG9wdGlvbnMgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbW91bnQgb3B0aW9uIHBhcnNpbmcgbG9naWMgb2YgdGhlIEZVU0UgZmlsZXN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbW91bnQgc3lzdGVtIGNhbGwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMDU4ZWRkNjgyNTU4N2NjMGY4NjNhOTZmMGQxNzYzN2VjODRjY2I1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDQ6NTk6MDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9pbm9kZS5jIGIvZnMvZnVzZS9pbm9kZS5jXG5pbmRleCBkOTc1MDczYzYwMjk2Li5jOTUxOGI3ZjU2MDVhIDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9pbm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2lub2RlLmNcbkBAIC03OTEsNiAmIzQzOzc5MSw5IEBAIHN0YXRpYyBpbnQgZnVzZV9vcHRfZmQoc3RydWN0IGZzX2NvbnRleHQgKmZzYywgc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZnNfY29udGV4dCAqY3R4ID0gZnNjLVx1MDAzZWZzX3ByaXZhdGU7XG4gXG4mIzQzO1x0aWYgKGN0eC1cdTAwM2VmdWQpXG4mIzQzO1x0XHRyZXR1cm4gaW52YWxmYyhmc2MsIFwmIzM0O011bHRpcGxlIGZkIHNwZWNpZmllZFwmIzM0Oyk7XG4mIzQzO1xuIFx0aWYgKGZpbGUtXHUwMDNlZl9vcCAhPSBcdTAwMjZmdXNlX2Rldl9vcGVyYXRpb25zKVxuIFx0XHRyZXR1cm4gaW52YWxmYyhmc2MsIFwmIzM0O2ZkIGlzIG5vdCBhIGZ1c2UgZGV2aWNlXCYjMzQ7KTtcbiBcdC8qXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2ZpbGxfc3VwZXJfY29tbW9uJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiBgZnVzZV9vcHRfZmRgIHRvIHByZXZlbnQgc3BlY2lmeWluZyBtdWx0aXBsZSBgZmRgIG9wdGlvbnMgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbW91bnQgb3B0aW9uIHBhcnNpbmcgbG9naWMgb2YgdGhlIEZVU0UgZmlsZXN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbW91bnQgc3lzdGVtIGNhbGwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlMDU4ZWRkNjgyNTU4N2NjMGY4NjNhOTZmMGQxNzYzN2VjODRjY2I1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMTEgMDQ6NTk6MDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9mdXNlL2lub2RlLmMgYi9mcy9mdXNlL2lub2RlLmMKaW5kZXggZDk3NTA3M2M2MDI5Ni4uYzk1MThiN2Y1NjA1YSAxMDA2NDQKLS0tIGEvZnMvZnVzZS9pbm9kZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvaW5vZGUuYwpAQCAtNzkxLDYgJiM0Mzs3OTEsOSBAQCBzdGF0aWMgaW50IGZ1c2Vfb3B0X2ZkKHN0cnVjdCBmc19jb250ZXh0ICpmc2MsIHN0cnVjdCBmaWxlICpmaWxlKQogewogCXN0cnVjdCBmdXNlX2ZzX2NvbnRleHQgKmN0eCA9IGZzYy0mZ3Q7ZnNfcHJpdmF0ZTsKIAomIzQzOwlpZiAoY3R4LSZndDtmdWQpCiYjNDM7CQlyZXR1cm4gaW52YWxmYyhmc2MsICYjMzQ7TXVsdGlwbGUgZmQgc3BlY2lmaWVkJiMzNDspOwomIzQzOwogCWlmIChmaWxlLSZndDtmX29wICE9ICZhbXA7ZnVzZV9kZXZfb3BlcmF0aW9ucykKIAkJcmV0dXJuIGludmFsZmMoZnNjLCAmIzM0O2ZkIGlzIG5vdCBhIGZ1c2UgZGV2aWNlJiMzNDspOwogCS8qCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIHVuZGVyc3RhbmQgaXQ6CgoqKkFuYWx5emluZyBhIEZVU0UgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGZzL2Z1c2UvaW5vZGUuY2AsIHJpZ2h0PyBUaGUga2V5IHBhcnQgc2VlbXMgdG8gYmUgYSBjaGFuZ2Ugd2l0aGluIGBmdXNlX29wdF9mZGAuIFRoaXMgZnVuY3Rpb24sIEkgZ2F0aGVyLCBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlICYjMzk7ZmQmIzM5OyBtb3VudCBvcHRpb24gd2l0aGluIHRoZSBGVVNFIGZpbGVzeXN0ZW0uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGl0JiMzOTtzIHJldHVybmluZyBhbiBlcnJvciBpZiBgY3R4LSZndDtmdWRgIGlzIGFscmVhZHkgYXNzaWduZWQgYSB2YWx1ZS4gRWZmZWN0aXZlbHksIHdlJiMzOTtyZSBtYWtpbmcgc3VyZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzbiYjMzk7dCBiZWluZyBvdmVyd3JpdHRlbiBvciByZWRlZmluZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRpdmUgaW50byBgZnMvZnVzZS9pbm9kZS5jYCBub3cgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgYGZ1c2Vfb3B0X2ZkYCBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuIEkgd2FudCB0byBzZWUgd2hhdCAmIzM5O2N0eCYjMzk7IGlzIGFuZCB1bmRlcnN0YW5kIHRoZSBsb2dpYyBhcm91bmQgYGN0eC0mZ3Q7ZnVkYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX29wdF9mZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmM9Nzc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfcGFyYW1ldGVyX3NwZWMgZnVzZV9mc19wYXJhbWV0ZXJzW10gPSB7XG4tLVxuZnMvZnVzZS9pbm9kZS5jLTc4OS1cbmZzL2Z1c2UvaW5vZGUuYzo3OTA6c3RhdGljIGludCBmdXNlX29wdF9mZChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvaW5vZGUuYy03OTEte1xuLS1cbmZzL2Z1c2UvaW5vZGUuYz04MTE9c3RhdGljIGludCBmdXNlX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmc2MsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYy04NTAtXHRcdGlmIChwYXJhbS1cdTAwM2V0eXBlID09IGZzX3ZhbHVlX2lzX2ZpbGUpIHtcbmZzL2Z1c2UvaW5vZGUuYzo4NTE6XHRcdFx0cmV0dXJuIGZ1c2Vfb3B0X2ZkKGZzYywgcGFyYW0tXHUwMDNlZmlsZSk7XG5mcy9mdXNlL2lub2RlLmMtODUyLVx0XHR9IGVsc2Uge1xuLS1cbmZzL2Z1c2UvaW5vZGUuYy04NTYtXG5mcy9mdXNlL2lub2RlLmM6ODU3Olx0XHRcdHJldHVybiBmdXNlX29wdF9mZChmc2MsIGZpbGUpO1xuZnMvZnVzZS9pbm9kZS5jLTg1OC1cdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NjAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGVVNFIE1vdW50IE9wdGlvbiBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjYXVzaW5nIGEgZnVuY3Rpb25hbCBzaGlmdCBpbiBob3cgRlVTRSBtb3VudCBvcHRpb25zIGFyZSBwYXJzZWQsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBgZmRgIG9wdGlvbi4gSXQgbG9va3MgbGlrZSBpdCBwcmV2ZW50cyB0aGUgdXNlIG9mIG11bHRpcGxlIGBmZGAgb3B0aW9ucyBkdXJpbmcgYSBGVVNFIG1vdW50LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgdGhlIGtpbmQgb2YgY2hhbmdlIHRoYXQgKmRlbWFuZHMqIGZ1enppbmcuIFdlIG5lZWQgdG8gZXhwbG9yZSB0aGUgcm9idXN0bmVzcyBvZiB0aGUgdXBkYXRlZCBwYXJzaW5nIGxvZ2ljLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBgZnVzZV9vcHRfZmRgIGFuZCBgZnVzZV9wYXJzZV9wYXJhbWAgc3ltYm9scyDigJMgdGhvc2UgYXJlIGNsZWFybHkgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0byBzY3J1dGluaXplLgoKQmVmb3JlIGRpdmluZyBpbnRvIGZ1enppbmcgc3RyYXRlZ2llcywgdGhvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2suIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYEZVU0VfRlNgIGlzIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuYWJsZSBpbiBteSB0ZXN0aW5nIGVudmlyb25tZW50IHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGV2ZW4gcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgYnVpbGQuIE1ha2luZyBzdXJlIHRoZSBjb3JyZWN0IGVudmlyb25tZW50IGlzIGluIHBsYWNlIGlzIGtleS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlVTRV9GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXG5mcy9mdXNlL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIEZVU0UgQ29uZmlndXJhdGlvbiBDaGFuZ2UqKgoKUmlnaHQsIGBGVVNFX0ZTYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBiZSBsb29raW5nIGF0LiBUaGUgY2hhbmdlIGlzIGluIGBmdXNlX29wdF9mZGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGltcGFjdGluZyB0aGUgc3lzdGVtLiBGaXJzdCwgaXMgYGZ1c2Vfb3B0X2ZkYCBzdGF0aWM/IFllcCwgaXQgaXMuIFRoYXQgbGltaXRzIHRoZSBzY29wZSBvZiB3aGVyZSBpdCBjb3VsZCBiZSBtb2RpZmllZC4gU28sIGlmIHRoZSBpc3N1ZSBpcyBkZWVwZXIsIHRoZSBmdW5jdGlvbiB0aGF0IG1hbmlwdWxhdGVzIGl0IGhhcyB0byBiZSB0aGUgY3VscHJpdC4gSSYjMzk7bSB0aGlua2luZyBJIG1pZ2h0IGdldCBtb3JlIGluZm9ybWF0aW9uIGZyb20gYGZ1c2VfcGFyc2VfcGFyYW1gIG9yIGBmdXNlX2ZpbGxfc3VwZXJgLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgYGZ1c2VfcGFyc2VfcGFyYW1gIGFuZCBzZWUgd2hhdCBpdCBpcyBkb2luZyB3aXRoIHRoaXMgZmlsZSBkZXNjcmlwdG9yLiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZV9wYXJzZV9wYXJhbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmM9NzkwPXN0YXRpYyBpbnQgZnVzZV9vcHRfZmQoc3RydWN0IGZzX2NvbnRleHQgKmZzYywgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9pbm9kZS5jLTgxMC1cbmZzL2Z1c2UvaW5vZGUuYzo4MTE6c3RhdGljIGludCBmdXNlX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmc2MsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxuZnMvZnVzZS9pbm9kZS5jLTgxMi17XG4tLVxuZnMvZnVzZS9pbm9kZS5jPTE5MTA9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZnVzZV9jb250ZXh0X29wcyA9IHtcbmZzL2Z1c2UvaW5vZGUuYy0xOTExLVx0LmZyZWVcdFx0PSBmdXNlX2ZyZWVfZnNjLFxuZnMvZnVzZS9pbm9kZS5jOjE5MTI6XHQucGFyc2VfcGFyYW1cdD0gZnVzZV9wYXJzZV9wYXJhbSxcbmZzL2Z1c2UvaW5vZGUuYy0xOTEzLVx0LnJlY29uZmlndXJlXHQ9IGZ1c2VfcmVjb25maWd1cmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQyNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3Mgc2VsZi1yZWZsZWN0aW9uOgoKKipDb25zaWRlcmluZyBTdGF0aWMgRnVuY3Rpb24gU2NvcGUgaW4gRlVTRSBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gbG9va2luZyBhdCBgZnVzZV9wYXJzZV9wYXJhbWAgYW5kIG5vdGljaW5nLCBhcyBhIG1hdHRlciBvZiBjb3Vyc2UsIHRoYXQgaXQmIzM5O3MgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgYSBicm9hZGVyIGNvbnNpZGVyYXRpb24uIE15IG1pbmQgbmF0dXJhbGx5IGp1bXBzIHRvIHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgRlVTRSBpbml0aWFsaXphdGlvbiBmbG93LgoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIG5vdyB3b25kZXJpbmcgYWJvdXQgYGZ1c2VfaW5pdF9mc19jb250ZXh0YC4gSXMgKnRoYXQqIGZ1bmN0aW9uIGFsc28gZGVjbGFyZWQgYHN0YXRpY2A/IElmIHNvLCB3aHk/IElmIG5vdCwgd2h5IG5vdD8gQXJlIHRoZXJlIGltcGxpY2F0aW9ucyBmb3IgbW9kdWxhcml0eSwgcmV1c2FiaWxpdHksIG9yIHBvdGVudGlhbCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMgdGhhdCB3YXJyYW50IHRoZSBzY29wZSBjaG9pY2UgaW4gZWFjaCBvZiB0aGVzZSBjYXNlcz8gRG9lcyBgZnVzZV9pbml0X2ZzX2NvbnRleHRgIG5lZWQgdG8gYmUgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgb3Igd291bGQgaXQgYmUgYmV0dGVyIHNlcnZlZCBhcyBpbnRlcm5hbD8gSSYjMzk7bGwgcHJvYmFibHkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhhdCB0byBlbnN1cmUgaXTigJlzIG5vdCBsZWFraW5nIHVubmVjZXNzYXJ5IGRldGFpbHMgb3IgY3JlYXRpbmcgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8ga2VlcCB0aGUgc2NvcGUgYXMgbGltaXRlZCBhcyBwb3NzaWJsZS4gSeKAmWxsIG1ha2Ugc3VyZSB0aGVyZSYjMzk7cyBhIHJhdGlvbmFsZSBmb3Igd2hhdGV2ZXIgdGhlIGltcGxlbWVudGF0aW9uIGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2luaXRfZnNfY29udGV4dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmM9MTcxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBmdXNlX2NvbnRleHRfc3VibW91bnRfb3BzID0ge1xuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xNzE1LVxuZnMvZnVzZS9pbm9kZS5jOjE3MTY6aW50IGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXG5mcy9mdXNlL2lub2RlLmMtMTcxNy17XG4tLVxuZnMvZnVzZS9pbm9kZS5jLTE3MjAtfVxuZnMvZnVzZS9pbm9kZS5jOjE3MjE6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQpO1xuZnMvZnVzZS9pbm9kZS5jLTE3MjItXG4tLVxuZnMvZnVzZS9pbm9kZS5jPTE5MTA9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZnVzZV9jb250ZXh0X29wcyA9IHtcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTkxOS0gKi9cbmZzL2Z1c2UvaW5vZGUuYzoxOTIwOnN0YXRpYyBpbnQgZnVzZV9pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbmZzL2Z1c2UvaW5vZGUuYy0xOTIxLXtcbi0tXG5mcy9mdXNlL2lub2RlLmM9MjAwND1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZnVzZV9mc190eXBlID0ge1xuLS1cbmZzL2Z1c2UvaW5vZGUuYy0yMDA3LVx0LmZzX2ZsYWdzXHQ9IEZTX0hBU19TVUJUWVBFIHwgRlNfVVNFUk5TX01PVU5UIHwgRlNfQUxMT1dfSURNQVAsXG5mcy9mdXNlL2lub2RlLmM6MjAwODpcdC5pbml0X2ZzX2NvbnRleHQgPSBmdXNlX2luaXRfZnNfY29udGV4dCxcbmZzL2Z1c2UvaW5vZGUuYy0yMDA5LVx0LnBhcmFtZXRlcnNcdD0gZnVzZV9mc19wYXJhbWV0ZXJzLFxuLS1cbmZzL2Z1c2UvaW5vZGUuYz0yMDIyPXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBmdXNlYmxrX2ZzX3R5cGUgPSB7XG4tLVxuZnMvZnVzZS9pbm9kZS5jLTIwMjQtXHQubmFtZVx0XHQ9IFwmIzM0O2Z1c2VibGtcJiMzNDssXG5mcy9mdXNlL2lub2RlLmM6MjAyNTpcdC5pbml0X2ZzX2NvbnRleHQgPSBmdXNlX2luaXRfZnNfY29udGV4dCxcbmZzL2Z1c2UvaW5vZGUuYy0yMDI2LVx0LnBhcmFtZXRlcnNcdD0gZnVzZV9mc19wYXJhbWV0ZXJzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjM0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRoaW5raW5nIHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYToKCioqSW5pdGlhbCBDb25jZXJucyBSZWdhcmRpbmcgRlVTRSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBGVVNFIGluaXRpYWxpemF0aW9uIGNvZGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aHkgaXMgYGZ1c2VfaW5pdF9mc19jb250ZXh0YCBhIHN0YXRpYyBmdW5jdGlvbj8gVGhhdCBjb3VsZCBjcmVhdGUgc29tZSBzY29wZSBsaW1pdGF0aW9ucyBvciBtYWtlIGl0IGhhcmRlciB0byByZXVzZSBpbiBzbGlnaHRseSBkaWZmZXJlbnQgY29udGV4dHMuIEl0JiMzOTtzIGEgZGVzaWduIGNob2ljZSBJJiMzOTtkIHdhbnQgdG8gdW5kZXJzdGFuZCBiZXR0ZXIuIElzIHRoZXJlIGEgc3BlY2lmaWMgcmVhc29uIHRvIGxpbWl0IGl0cyB2aXNpYmlsaXR5IGxpa2UgdGhhdD8KClRoZW4gbXkgbWluZCBqdW1wcyB0byBgZnVzZV9maWxsX3N1cGVyYC4gVGhhdCYjMzk7cyB0aGUgb3RoZXIgY3J1Y2lhbCBwaWVjZSBpbiB0aGUgZmlsZXN5c3RlbSBtb3VudCBzZXF1ZW5jZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGNvbnNpZGVyIGl0cyByZWxhdGlvbnNoaXAgdG8gYGZ1c2VfaW5pdF9mc19jb250ZXh0YCwgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBBcmUgdGhlcmUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQ/IEFyZSB0aGVzZSBmdW5jdGlvbnMgcHJvcGVybHkgc3luY2hyb25pemVkIHdpdGggdGhlIG1vdW50IHByb2Nlc3M/IFdoYXQgYWJvdXQgcG90ZW50aWFsIGVycm9yIGhhbmRsaW5nIHNjZW5hcmlvcz8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHksIHN0ZXAgYnkgc3RlcC4gSSB3YW50IHRvIGNoZWNrIGZvciBhbnkgaGlkZGVuIHByb2JsZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2ZpbGxfc3VwZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9pbm9kZS5jPTE2MDE9c3RhdGljIHZvaWQgZnVzZV9zYl9kZWZhdWx0cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xNjE2LVxuZnMvZnVzZS9pbm9kZS5jOjE2MTc6c3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbmZzL2Z1c2UvaW5vZGUuYy0xNjE4LVx0XHRcdFx0ICAgIHN0cnVjdCBmdXNlX2lub2RlICpwYXJlbnRfZmkpXG4tLVxuZnMvZnVzZS9pbm9kZS5jPTE2NzU9c3RhdGljIGludCBmdXNlX2dldF90cmVlX3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXG4tLVxuZnMvZnVzZS9pbm9kZS5jLTE2OTUtXHQvKiBJbml0aWFsaXplIHN1cGVyYmxvY2ssIG1ha2luZyBAbXBfZmkgaXRzIHJvb3QgKi9cbmZzL2Z1c2UvaW5vZGUuYzoxNjk2Olx0ZXJyID0gZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50KHNiLCBtcF9maSk7XG5mcy9mdXNlL2lub2RlLmMtMTY5Ny1cdGlmIChlcnIpIHtcbi0tXG5mcy9mdXNlL2lub2RlLmM9MTcyMT1FWFBPUlRfU1lNQk9MX0dQTChmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudCk7XG5mcy9mdXNlL2lub2RlLmMtMTcyMi1cbmZzL2Z1c2UvaW5vZGUuYzoxNzIzOmludCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmdXNlX2ZzX2NvbnRleHQgKmN0eClcbmZzL2Z1c2UvaW5vZGUuYy0xNzI0LXtcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTgxNi19XG5mcy9mdXNlL2lub2RlLmM6MTgxNzpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKTtcbmZzL2Z1c2UvaW5vZGUuYy0xODE4LVxuZnMvZnVzZS9pbm9kZS5jOjE4MTk6c3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbmZzL2Z1c2UvaW5vZGUuYy0xODIwLXtcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTgyOC1cbmZzL2Z1c2UvaW5vZGUuYzoxODI5Olx0ZXJyID0gZnVzZV9maWxsX3N1cGVyX2NvbW1vbihzYiwgY3R4KTtcbmZzL2Z1c2UvaW5vZGUuYy0xODMwLVx0aWYgKGVycilcbi0tXG5mcy9mdXNlL2lub2RlLmM9MTg1Mj1zdGF0aWMgaW50IGZ1c2VfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTg3OS1cdGlmIChJU19FTkFCTEVEKENPTkZJR19CTE9DSykgXHUwMDI2XHUwMDI2IGN0eC1cdTAwM2Vpc19iZGV2KSB7XG5mcy9mdXNlL2lub2RlLmM6MTg4MDpcdFx0ZXJyID0gZ2V0X3RyZWVfYmRldihmc2MsIGZ1c2VfZmlsbF9zdXBlcik7XG5mcy9mdXNlL2lub2RlLmMtMTg4MS1cdFx0Z290byBvdXQ7XG4tLVxuZnMvZnVzZS9pbm9kZS5jLTE5MDEtXHR9IGVsc2Uge1xuZnMvZnVzZS9pbm9kZS5jOjE5MDI6XHRcdGVyciA9IGdldF90cmVlX25vZGV2KGZzYywgZnVzZV9maWxsX3N1cGVyKTtcbmZzL2Z1c2UvaW5vZGUuYy0xOTAzLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTg5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBGdXNlIEZpbGVzeXN0ZW0gSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBGVVNFIGZpbGVzeXN0ZW1zIGFyZSBpbml0aWFsaXplZCwgc3BlY2lmaWNhbGx5IGhvdyBtb3VudCBvcHRpb25zIGFyZSBoYW5kbGVkLiBJIHNlZSB0aGF0IGBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uYCBpcyBleHBvcnRlZC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEJ1dCB3YWl0LCBgZnVzZV9vcHRfZmRgIGlzIGFjdHVhbGx5IGNhbGxlZCBkdXJpbmcgbW91bnQgb3B0aW9uIHBhcnNpbmcsIHdoaWNoIGlzIHRoZSBkb21haW4gb2YgYGZ1c2VfcGFyc2VfcGFyYW1gLiBUaGlzIGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyBzdGF0aWMsIHdoaWNoIGlzIGEgYml0IG9mIGEgcm9hZGJsb2NrLgoKU28sIHNpbmNlIGl0JiMzOTtzIHN0YXRpYywgY2FuIEkgYnlwYXNzIGl0IGVudGlyZWx5IGFuZCB1c2Ugc29tZXRoaW5nIGxpa2UgYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gIGRpcmVjdGx5LCBvciBwZXJoYXBzIGBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudGAgb3IgYGZ1c2VfZ2V0X3RyZWVgPyBIbW0sIG5vLCBob2xkIG9uLi4uIHRoZSBtb3VudCBvcHRpb24gcGFyc2luZyBpc24mIzM5O3QgaGFuZGxlZCBkaXJlY3RseSBieSBgZnVzZV9wYXJzZV9wYXJhbWAuIEl0JiMzOTtzIGRvbmUgdGhyb3VnaCBgdmZzX3BhcnNlX2ZzX3BhcmFtYCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2hpY2ggdGhlbiBjYWxscyBgZnNjLSZndDtvcHMtJmd0O3BhcnNlX3BhcmFtYC4gVGhhdCYjMzk7cyB0aGUga2V5LgoKTm93LCB3aGVyZSBpcyB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlc2Ugb3BlcmF0aW9ucz8gSXQgbG9va3MgbGlrZSBgZnVzZV9pbml0X2ZzX2NvbnRleHRgIGlzIHRoZSByZWxldmFudCBmdW5jdGlvbiwgYnV0IGl0JiMzOTtzICphbHNvKiBtYXJrZWQgc3RhdGljIGFuZCBpcyByZWdpc3RlcmVkIGluIGBmdXNlX2ZzX3R5cGVgLiBBbHJpZ2h0LCBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNvbm5lY3Rpb24gaXMuIElzIHRoZXJlIGFueXRoaW5nIGluIGBmcy9mdXNlL2lub2RlLmNgIHRoYXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHJlbGF0ZWQ/IExldCBtZSBjaGVjay4KCkkgc2VlIGBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uYCBpcyBleHBvcnRlZCwgdGhhdCYjMzk7cyBub3Qgd2hhdCBJIG5lZWQuIGBmdXNlX21vdW50YD8gTm8sIHRoYXQmIzM5O3Mgbm90IHdoYXQgSSYjMzk7bSBhZnRlciwgYGZ1c2VfZ2V0X3RyZWVgIGlzIGFsc28gc3RhdGljLiBMZXQmIzM5O3MgZGlnIGRlZXBlci4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRocm91Z2ggYGZzL2Z1c2UvaW5vZGUuY2AgZm9yIGFueSBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBjb3VsZCBiZSByZWxldmFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmM9OTU5PXZvaWQgZnVzZV9jb25uX2luaXQoc3RydWN0IGZ1c2VfY29ubiAqZmMsIHN0cnVjdCBmdXNlX21vdW50ICpmbSxcbi0tXG5mcy9mdXNlL2lub2RlLmMtOTg5LX1cbmZzL2Z1c2UvaW5vZGUuYzo5OTA6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9jb25uX2luaXQpO1xuZnMvZnVzZS9pbm9kZS5jLTk5MS1cbi0tXG5mcy9mdXNlL2lub2RlLmM9MTAwMz12b2lkIGZ1c2VfY29ubl9wdXQoc3RydWN0IGZ1c2VfY29ubiAqZmMpXG4tLVxuZnMvZnVzZS9pbm9kZS5jLTEwMjMtfVxuZnMvZnVzZS9pbm9kZS5jOjEwMjQ6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9jb25uX3B1dCk7XG5mcy9mdXNlL2lub2RlLmMtMTAyNS1cbmZzL2Z1c2UvaW5vZGUuYz0xMDI2PXN0cnVjdCBmdXNlX2Nvbm4gKmZ1c2VfY29ubl9nZXQoc3RydWN0IGZ1c2VfY29ubiAqZmMpXG4tLVxuZnMvZnVzZS9pbm9kZS5jLTEwMzAtfVxuZnMvZnVzZS9pbm9kZS5jOjEwMzE6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9jb25uX2dldCk7XG5mcy9mdXNlL2lub2RlLmMtMTAzMi1cbi0tXG5mcy9mdXNlL2lub2RlLmM9MTUwNz1pbnQgZnVzZV9zZW5kX2luaXQoc3RydWN0IGZ1c2VfbW91bnQgKmZtKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xNTI4LX1cbmZzL2Z1c2UvaW5vZGUuYzoxNTI5OkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2Vfc2VuZF9pbml0KTtcbmZzL2Z1c2UvaW5vZGUuYy0xNTMwLVxuZnMvZnVzZS9pbm9kZS5jPTE1MzE9dm9pZCBmdXNlX2ZyZWVfY29ubihzdHJ1Y3QgZnVzZV9jb25uICpmYylcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTUzNC19XG5mcy9mdXNlL2lub2RlLmM6MTUzNTpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2ZyZWVfY29ubik7XG5mcy9mdXNlL2lub2RlLmMtMTUzNi1cbi0tXG5mcy9mdXNlL2lub2RlLmM9MTcxNj1pbnQgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTcyMC19XG5mcy9mdXNlL2lub2RlLmM6MTcyMTpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudCk7XG5mcy9mdXNlL2lub2RlLmMtMTcyMi1cbmZzL2Z1c2UvaW5vZGUuYz0xNzIzPWludCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmdXNlX2ZzX2NvbnRleHQgKmN0eClcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTgxNi19XG5mcy9mdXNlL2lub2RlLmM6MTgxNzpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKTtcbmZzL2Z1c2UvaW5vZGUuYy0xODE4LVxuLS1cbmZzL2Z1c2UvaW5vZGUuYz0xOTQ0PWJvb2wgZnVzZV9tb3VudF9yZW1vdmUoc3RydWN0IGZ1c2VfbW91bnQgKmZtKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xOTU2LX1cbmZzL2Z1c2UvaW5vZGUuYzoxOTU3OkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfbW91bnRfcmVtb3ZlKTtcbmZzL2Z1c2UvaW5vZGUuYy0xOTU4LVxuZnMvZnVzZS9pbm9kZS5jPTE5NTk9dm9pZCBmdXNlX2Nvbm5fZGVzdHJveShzdHJ1Y3QgZnVzZV9tb3VudCAqZm0pXG4tLVxuZnMvZnVzZS9pbm9kZS5jLTE5NzUtfVxuZnMvZnVzZS9pbm9kZS5jOjE5NzY6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9jb25uX2Rlc3Ryb3kpO1xuZnMvZnVzZS9pbm9kZS5jLTE5NzctXG4tLVxuZnMvZnVzZS9pbm9kZS5jPTE5OTA9dm9pZCBmdXNlX21vdW50X2Rlc3Ryb3koc3RydWN0IGZ1c2VfbW91bnQgKmZtKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xOTk0LX1cbmZzL2Z1c2UvaW5vZGUuYzoxOTk1OkVYUE9SVF9TWU1CT0woZnVzZV9tb3VudF9kZXN0cm95KTtcbmZzL2Z1c2UvaW5vZGUuYy0xOTk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzM2CgkJCQkJCQlvdXRwdXQ6IDEwMQoJCQkJCQkJdGhvdWdodHM6IDE4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGVVNFIEtlcm5lbCBNb2R1bGUgQ29uZmlndXJhdGlvbiBPcHRpbWl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB3ZSBjYW4gYmVzdCBjb25maWd1cmUgdGhlIEZVU0Uga2VybmVsIG1vZHVsZSBmb3IgZnV6emluZy4gYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gIHNlZW1zIGxpa2UgYSBzdHJvbmcgY29udGVuZGVyIOKAkyBpdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGRlZmluaXRlbHkuIEkgd2FzIGluaXRpYWxseSBhbHNvIGNvbnNpZGVyaW5nIGBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudGAsIGFuZCBpdCBtYXkgc3RpbGwgYmUgcmVsZXZhbnQsIGJ1dCByaWdodCBub3cgSSB0aGluayB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBqdXN0IGZvY3VzaW5nIG9uIGBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uYC4KCkkgbmVlZGVkIHRvIHF1aWNrbHkgY2hlY2sgd2hlcmUgdGhlIG1vdW50IG9wdGlvbiBwYXJzaW5nIGhhcHBlbnMgcmVsYXRpdmUgdG8gYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gLiBIbW0sIHRoZSBwYXJzaW5nIGhhcHBlbnMgKmJlZm9yZSogdGhhdCBmdW5jdGlvbi4gT2theSwgc28gdGhhdCBjaGFuZ2VzIHRoaW5ncyBhIGxpdHRsZS4gV2FpdCwgSSYjMzk7bSBzZWNvbmQtZ3Vlc3NpbmcgbXlzZWxmOyBgZnVzZV9maWxsX3N1cGVyX2NvbW1vbmAgaXMgc3RpbGwgcHJvYmFibHkgdGhlIHByaW1hcnkgZnVuY3Rpb24gdG8gdGFyZ2V0LgoKVG8gYmUgc3VyZSwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgZnVzZV9vcHRfZmRgIGlzIHJlYWNoYWJsZSBmcm9tIGBmdXNlX3BhcnNlX3BhcmFtYCBzaW5jZSBJIGtub3cgdGhhdCBvcHRpb25zIHBhcnNpbmcgaW5mbHVlbmNlcyB0aGUgc3VwZXIgYmxvY2suIFllcywgSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgY29ubmVjdGlvbi4gR29vZC4gVGhlIGtleSBjaGFuZ2UgaXMgaW4gYGZ1c2Vfb3B0X2ZkYCB3aGljaCwgYXMgZXhwZWN0ZWQsIGlzIGNhbGxlZCBieSBgZnVzZV9wYXJzZV9wYXJhbWAuIEkmIzM5O3ZlIGNvbmZpcm1lZCBldmVyeXRoaW5nIHRvIHRoaXMgcG9pbnQuCgpUaGUgY29uZmlnIEkmIzM5O20gdGFyZ2V0aW5nIGlzIGBGVVNFX0ZTYC4gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAgYmVjYXVzZSB0aGlzIGxvb2tzIGxpa2UgYSBmcnVpdGZ1bCBhdmVudWUgZm9yIGZpbmRpbmcgaXNzdWVzLiBXZSYjMzk7cmUgZ29pbmcgdG8gZm9jdXMgb24gYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gIGFuZCB3ZSBhcmUgZW5hYmxpbmcgdGhlIGBGVVNFX0ZTYCBjb25maWcgb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2VfZmlsbF9zdXBlcl9jb21tb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBmdXNlX29wdF9mZGAgdG8gcHJldmVudCBzcGVjaWZ5aW5nIG11bHRpcGxlIGBmZGAgb3B0aW9ucyBkdXJpbmcgRlVTRSBtb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtb3VudCBvcHRpb24gcGFyc2luZyBsb2dpYyBvZiB0aGUgRlVTRSBmaWxlc3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBtb3VudCBzeXN0ZW0gY2FsbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2VfZmlsbF9zdXBlcl9jb21tb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBmdXNlX29wdF9mZGAgdG8gcHJldmVudCBzcGVjaWZ5aW5nIG11bHRpcGxlIGBmZGAgb3B0aW9ucyBkdXJpbmcgRlVTRSBtb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtb3VudCBvcHRpb24gcGFyc2luZyBsb2dpYyBvZiB0aGUgRlVTRSBmaWxlc3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBtb3VudCBzeXN0ZW0gY2FsbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IG11bHRpcGxlIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSBiZWluZyBzcGVjaWZpZWQgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgZml4ZXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBsZWFkIHRvIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgKHdoaWNoIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3IgS01FTUxFQUspLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTA1OGVkZDY4MjU1ODdjYzBmODYzYTk2ZjBkMTc2MzdlYzg0Y2NiNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDA0OjU5OjA5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9pbm9kZS5jIGIvZnMvZnVzZS9pbm9kZS5jCmluZGV4IGQ5NzUwNzNjNjAyOTYuLmM5NTE4YjdmNTYwNWEgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvaW5vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2lub2RlLmMKQEAgLTc5MSw2ICYjNDM7NzkxLDkgQEAgc3RhdGljIGludCBmdXNlX29wdF9mZChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZnVzZV9mc19jb250ZXh0ICpjdHggPSBmc2MtJmd0O2ZzX3ByaXZhdGU7CiAKJiM0MzsJaWYgKGN0eC0mZ3Q7ZnVkKQomIzQzOwkJcmV0dXJuIGludmFsZmMoZnNjLCAmIzM0O011bHRpcGxlIGZkIHNwZWNpZmllZCYjMzQ7KTsKJiM0MzsKIAlpZiAoZmlsZS0mZ3Q7Zl9vcCAhPSAmYW1wO2Z1c2VfZGV2X29wZXJhdGlvbnMpCiAJCXJldHVybiBpbnZhbGZjKGZzYywgJiMzNDtmZCBpcyBub3QgYSBmdXNlIGRldmljZSYjMzQ7KTsKIAkvKgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZVU0UgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgY2hlY2sgd2l0aGluIGBmdXNlX29wdF9mZGAsIHNwZWNpZmljYWxseSBpbiBgZnMvZnVzZS9pbm9kZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyB0aGlzIGxpbmU6IGBpZiAoY3R4LSZndDtmdWQpIHJldHVybiBpbnZhbGZjKGZzYywgJiMzNDtNdWx0aXBsZSBmZCBzcGVjaWZpZWQmIzM0Oyk7YC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgbG9naWMgYnVnIGZpeC4gSXQgc2VlbXMgbGlrZSB0aGUgaW50ZW50aW9uIGlzIHRvIHByZXZlbnQgdGhlIEZVU0UgbW91bnQgb3B0aW9ucyBmcm9tIGFjY2VwdGluZyBtdWx0aXBsZSBmaWxlIGRlc2NyaXB0b3JzIGJlaW5nIHNwZWNpZmllZCBzaW11bHRhbmVvdXNseS4gVGhpcyBwcm9iYWJseSBhdm9pZHMgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSDigJMgYSBtZW1vcnkgbGVhaywgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgb3Igc29tZSBzaW1pbGFyIGtpbmQgb2YgZXJyb3IgaWYgdGhlIGNvZGUgd2FzIGRlc2lnbmVkIHRvIGhhbmRsZSBvbmx5IGEgc2luZ2xlIGBmZGAgb3B0aW9uLiBJdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gYmUgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIHdoaWNoIGlzIGdvb2QuCgpJIG5lZWQgdG8gY29uZmlybSB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIGludGVuZGVkIGJlaGF2aW9yLiBJJiMzOTtsbCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGZ1c2Vfb3B0X2ZkYCB3aXRoaW4gYGZzL2Z1c2UvaW5vZGUuY2AgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZS4gSSYjMzk7bGwgcGF5IGF0dGVudGlvbiB0byBob3cgYGN0eC0mZ3Q7ZnVkYCBpcyB1c2VkIGFuZCBpbml0aWFsaXplZCB0byBnYWluIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZpeCBhbmQgaXRzIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZV9vcHRfZmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9pbm9kZS5jPTc3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX3BhcmFtZXRlcl9zcGVjIGZ1c2VfZnNfcGFyYW1ldGVyc1tdID0ge1xuLS1cbmZzL2Z1c2UvaW5vZGUuYy03ODktXG5mcy9mdXNlL2lub2RlLmM6NzkwOnN0YXRpYyBpbnQgZnVzZV9vcHRfZmQoc3RydWN0IGZzX2NvbnRleHQgKmZzYywgc3RydWN0IGZpbGUgKmZpbGUpXG5mcy9mdXNlL2lub2RlLmMtNzkxLXtcbi0tXG5mcy9mdXNlL2lub2RlLmM9ODExPXN0YXRpYyBpbnQgZnVzZV9wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSlcbi0tXG5mcy9mdXNlL2lub2RlLmMtODUwLVx0XHRpZiAocGFyYW0tXHUwMDNldHlwZSA9PSBmc192YWx1ZV9pc19maWxlKSB7XG5mcy9mdXNlL2lub2RlLmM6ODUxOlx0XHRcdHJldHVybiBmdXNlX29wdF9mZChmc2MsIHBhcmFtLVx1MDAzZWZpbGUpO1xuZnMvZnVzZS9pbm9kZS5jLTg1Mi1cdFx0fSBlbHNlIHtcbi0tXG5mcy9mdXNlL2lub2RlLmMtODU2LVxuZnMvZnVzZS9pbm9kZS5jOjg1NzpcdFx0XHRyZXR1cm4gZnVzZV9vcHRfZmQoZnNjLCBmaWxlKTtcbmZzL2Z1c2UvaW5vZGUuYy04NTgtXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1NwoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1c2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIG92ZXIgdGhpcyBwYXRjaC4gSXQgc2VlbXMgdGhlIGNvcmUgaXNzdWUgaXMgcHJldmVudGluZyBgZnVzZV9vcHRfZmRgIGZyb20gYmVpbmcgY2FsbGVkIHJlcGVhdGVkbHkuIFRoZSBjb25jZXJuIGlzIHRoYXQgbXVsdGlwbGUgY2FsbHMgd291bGQgY2xvYmJlciB0aGUgYGN0eC0mZ3Q7ZnVkYCBmaWVsZCBvciBzb21ldGhpbmcgc2ltaWxhci4gSXQmIzM5O3MgYSBjbGFzc2ljIGxvZ2ljIGVycm9yLCByZWFsbHksIG1vcmUgYWJvdXQgY29udHJvbCBmbG93IHRoYW4gYW55IHNvcnQgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvYmxlbS4KCkdpdmVuIG15IHVuZGVyc3RhbmRpbmcsIEkgZG9uJiMzOTt0IHNlZSBhbnkgcmlzayByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIHRoaXMgcGFydGljdWxhciBpbnN0YW5jZS4gRnJhbmtseSwgaWYgd2UgKndlcmUqIGRlYWxpbmcgd2l0aCBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGR1ZSB0byB0aGUgb3ZlcndyaXRlLCBLQVNBTiBvciBLTUVNTEVBSyB3b3VsZCBoYXZlIGZsYWdnZWQgdGhvc2UgaXNzdWVzIGltbWVkaWF0ZWx5LiBUaGlzIGZpeCBpcyBwcmV2ZW50aW5nIGEgcGVyZmVjdGx5IHZhbGlkIHZhcmlhYmxlIGZyb20gYmVpbmcgaW5jb3JyZWN0bHkgb3ZlcndyaXR0ZW4uIE5vIG5lZWQgdG8gYnJpbmcgS01TQU4gaW50byB0aGUgZXF1YXRpb24uIEl0JiMzOTtzIHNpbXBseSBub3QgYXBwbGljYWJsZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IG11bHRpcGxlIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSBiZWluZyBzcGVjaWZpZWQgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgZml4ZXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBsZWFkIHRvIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgKHdoaWNoIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3IgS01FTUxFQUspLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiBgZnVzZV9vcHRfZmRgIHRvIHByZXZlbnQgbXVsdGlwbGUgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIGJlaW5nIHNwZWNpZmllZCBkdXJpbmcgRlVTRSBtb3VudC4gVGhpcyBmaXhlcyBhIGxvZ2ljIGJ1ZyB0aGF0IGNvdWxkIGxlYWQgdG8gbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyAod2hpY2ggYXJlIGNhdWdodCBieSBLQVNBTiBvciBLTUVNTEVBSykuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OToxMC40MTc5NzI5NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1Mjc3MzUwODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX2ZpbGxfc3VwZXJfY29tbW9uXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IG11bHRpcGxlIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSBiZWluZyBzcGVjaWZpZWQgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgZml4ZXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBsZWFkIHRvIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgKHdoaWNoIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3IgS01FTUxFQUspLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IHNwZWNpZnlpbmcgbXVsdGlwbGUgYGZkYCBvcHRpb25zIGR1cmluZyBGVVNFIG1vdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1vdW50IG9wdGlvbiBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBGVVNFIGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIG1vdW50IHN5c3RlbSBjYWxsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OToxMC40MTc5Nzk0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc3Njk4Mjk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTA1OGVkZDY4MjU1ODdjYzBmODYzYTk2ZjBkMTc2MzdlYzg0Y2NiNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxMSAwNDo1OTowOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2lub2RlLmMgYi9mcy9mdXNlL2lub2RlLmNcXG5pbmRleCBkOTc1MDczYzYwMjk2Li5jOTUxOGI3ZjU2MDVhIDEwMDY0NFxcbi0tLSBhL2ZzL2Z1c2UvaW5vZGUuY1xcbisrKyBiL2ZzL2Z1c2UvaW5vZGUuY1xcbkBAIC03OTEsNiArNzkxLDkgQEAgc3RhdGljIGludCBmdXNlX29wdF9mZChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZnVzZV9mc19jb250ZXh0ICpjdHggPSBmc2MtXFx1MDAzZWZzX3ByaXZhdGU7XFxuIFxcbitcXHRpZiAoY3R4LVxcdTAwM2VmdWQpXFxuK1xcdFxcdHJldHVybiBpbnZhbGZjKGZzYywgXFxcIk11bHRpcGxlIGZkIHNwZWNpZmllZFxcXCIpO1xcbitcXG4gXFx0aWYgKGZpbGUtXFx1MDAzZWZfb3AgIT0gXFx1MDAyNmZ1c2VfZGV2X29wZXJhdGlvbnMpXFxuIFxcdFxcdHJldHVybiBpbnZhbGZjKGZzYywgXFxcImZkIGlzIG5vdCBhIGZ1c2UgZGV2aWNlXFxcIik7XFxuIFxcdC8qXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA0OjU5OjEwLjg5NjM3NDA5N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI2OTMzMzc4NDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX2ZpbGxfc3VwZXJfY29tbW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBmdXNlX29wdF9mZGAgdG8gcHJldmVudCBzcGVjaWZ5aW5nIG11bHRpcGxlIGBmZGAgb3B0aW9ucyBkdXJpbmcgRlVTRSBtb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtb3VudCBvcHRpb24gcGFyc2luZyBsb2dpYyBvZiB0aGUgRlVTRSBmaWxlc3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBtb3VudCBzeXN0ZW0gY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTA1OGVkZDY4MjU1ODdjYzBmODYzYTk2ZjBkMTc2MzdlYzg0Y2NiNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA0OjU5OjA5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9pbm9kZS5jIGIvZnMvZnVzZS9pbm9kZS5jXG5pbmRleCBkOTc1MDczYzYwMjk2Li5jOTUxOGI3ZjU2MDVhIDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9pbm9kZS5jXG4rKysgYi9mcy9mdXNlL2lub2RlLmNcbkBAIC03OTEsNiArNzkxLDkgQEAgc3RhdGljIGludCBmdXNlX29wdF9mZChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB7XG4gXHRzdHJ1Y3QgZnVzZV9mc19jb250ZXh0ICpjdHggPSBmc2MtXHUwMDNlZnNfcHJpdmF0ZTtcbiBcbitcdGlmIChjdHgtXHUwMDNlZnVkKVxuK1x0XHRyZXR1cm4gaW52YWxmYyhmc2MsIFwiTXVsdGlwbGUgZmQgc3BlY2lmaWVkXCIpO1xuK1xuIFx0aWYgKGZpbGUtXHUwMDNlZl9vcCAhPSBcdTAwMjZmdXNlX2Rldl9vcGVyYXRpb25zKVxuIFx0XHRyZXR1cm4gaW52YWxmYyhmc2MsIFwiZmQgaXMgbm90IGEgZnVzZSBkZXZpY2VcIik7XG4gXHQvKlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MTAuODk2Mzc2MzU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwOTc0NzQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgdW5kZXJzdGFuZCBpdDpcblxuKipBbmFseXppbmcgYSBGVVNFIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgZnMvZnVzZS9pbm9kZS5jYCwgcmlnaHQ/IFRoZSBrZXkgcGFydCBzZWVtcyB0byBiZSBhIGNoYW5nZSB3aXRoaW4gYGZ1c2Vfb3B0X2ZkYC4gVGhpcyBmdW5jdGlvbiwgSSBnYXRoZXIsIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgJ2ZkJyBtb3VudCBvcHRpb24gd2l0aGluIHRoZSBGVVNFIGZpbGVzeXN0ZW0uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGl0J3MgcmV0dXJuaW5nIGFuIGVycm9yIGlmIGBjdHgtXHUwMDNlZnVkYCBpcyBhbHJlYWR5IGFzc2lnbmVkIGEgdmFsdWUuIEVmZmVjdGl2ZWx5LCB3ZSdyZSBtYWtpbmcgc3VyZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzbid0IGJlaW5nIG92ZXJ3cml0dGVuIG9yIHJlZGVmaW5lZC4gSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBmcy9mdXNlL2lub2RlLmNgIG5vdyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBgZnVzZV9vcHRfZmRgIGZ1bmN0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGJldHRlci4gSSB3YW50IHRvIHNlZSB3aGF0ICdjdHgnIGlzIGFuZCB1bmRlcnN0YW5kIHRoZSBsb2dpYyBhcm91bmQgYGN0eC1cdTAwM2VmdWRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTg0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OToxNC4xMDYxMjU1NTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ3OTc2MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9vcHRfZmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvaW5vZGUuYz03NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19wYXJhbWV0ZXJfc3BlYyBmdXNlX2ZzX3BhcmFtZXRlcnNbXSA9IHtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy03ODktXFxuZnMvZnVzZS9pbm9kZS5jOjc5MDpzdGF0aWMgaW50IGZ1c2Vfb3B0X2ZkKHN0cnVjdCBmc19jb250ZXh0ICpmc2MsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Z1c2UvaW5vZGUuYy03OTEte1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jPTgxMT1zdGF0aWMgaW50IGZ1c2VfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZzYywgc3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtODUwLVxcdFxcdGlmIChwYXJhbS1cXHUwMDNldHlwZSA9PSBmc192YWx1ZV9pc19maWxlKSB7XFxuZnMvZnVzZS9pbm9kZS5jOjg1MTpcXHRcXHRcXHRyZXR1cm4gZnVzZV9vcHRfZmQoZnNjLCBwYXJhbS1cXHUwMDNlZmlsZSk7XFxuZnMvZnVzZS9pbm9kZS5jLTg1Mi1cXHRcXHR9IGVsc2Uge1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTg1Ni1cXG5mcy9mdXNlL2lub2RlLmM6ODU3OlxcdFxcdFxcdHJldHVybiBmdXNlX29wdF9mZChmc2MsIGZpbGUpO1xcbmZzL2Z1c2UvaW5vZGUuYy04NTgtXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OToxNC4xNTA5Mjg2MzVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjExMTMzMjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZVU0UgTW91bnQgT3B0aW9uIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2F1c2luZyBhIGZ1bmN0aW9uYWwgc2hpZnQgaW4gaG93IEZVU0UgbW91bnQgb3B0aW9ucyBhcmUgcGFyc2VkLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGUgYGZkYCBvcHRpb24uIEl0IGxvb2tzIGxpa2UgaXQgcHJldmVudHMgdGhlIHVzZSBvZiBtdWx0aXBsZSBgZmRgIG9wdGlvbnMgZHVyaW5nIGEgRlVTRSBtb3VudC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIHRoZSBraW5kIG9mIGNoYW5nZSB0aGF0ICpkZW1hbmRzKiBmdXp6aW5nLiBXZSBuZWVkIHRvIGV4cGxvcmUgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIHVwZGF0ZWQgcGFyc2luZyBsb2dpYy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBgZnVzZV9vcHRfZmRgIGFuZCBgZnVzZV9wYXJzZV9wYXJhbWAgc3ltYm9scyDigJMgdGhvc2UgYXJlIGNsZWFybHkgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0byBzY3J1dGluaXplLlxuXG5CZWZvcmUgZGl2aW5nIGludG8gZnV6emluZyBzdHJhdGVnaWVzLCB0aG91Z2gsIEkgc2hvdWxkIGRvdWJsZS1jaGVjay4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgRlVTRV9GU2AgaXMgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIGluIG15IHRlc3RpbmcgZW52aXJvbm1lbnQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgZXZlbiByZWxldmFudCB0byB0aGUgY3VycmVudCBidWlsZC4gTWFraW5nIHN1cmUgdGhlIGNvcnJlY3QgZW52aXJvbm1lbnQgaXMgaW4gcGxhY2UgaXMga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTYwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MTcuMzYyMDY0NjkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjczNDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGVVNFX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9mdXNlL0tjb25maWc6Mjpjb25maWcgRlVTRV9GU1xcbmZzL2Z1c2UvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MTcuNDA4MzUzOTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MDE1ODkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgRlVTRSBDb25maWd1cmF0aW9uIENoYW5nZSoqXG5cblJpZ2h0LCBgRlVTRV9GU2AgaXMgZGVmaW5pdGVseSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gYmUgbG9va2luZyBhdC4gVGhlIGNoYW5nZSBpcyBpbiBgZnVzZV9vcHRfZmRgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBpcyBpbXBhY3RpbmcgdGhlIHN5c3RlbS4gRmlyc3QsIGlzIGBmdXNlX29wdF9mZGAgc3RhdGljPyBZZXAsIGl0IGlzLiBUaGF0IGxpbWl0cyB0aGUgc2NvcGUgb2Ygd2hlcmUgaXQgY291bGQgYmUgbW9kaWZpZWQuIFNvLCBpZiB0aGUgaXNzdWUgaXMgZGVlcGVyLCB0aGUgZnVuY3Rpb24gdGhhdCBtYW5pcHVsYXRlcyBpdCBoYXMgdG8gYmUgdGhlIGN1bHByaXQuIEknbSB0aGlua2luZyBJIG1pZ2h0IGdldCBtb3JlIGluZm9ybWF0aW9uIGZyb20gYGZ1c2VfcGFyc2VfcGFyYW1gIG9yIGBmdXNlX2ZpbGxfc3VwZXJgLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgYGZ1c2VfcGFyc2VfcGFyYW1gIGFuZCBzZWUgd2hhdCBpdCBpcyBkb2luZyB3aXRoIHRoaXMgZmlsZSBkZXNjcmlwdG9yLiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OToyMC44NDg1MTU2MTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwNjc2MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9wYXJzZV9wYXJhbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9pbm9kZS5jPTc5MD1zdGF0aWMgaW50IGZ1c2Vfb3B0X2ZkKHN0cnVjdCBmc19jb250ZXh0ICpmc2MsIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTgxMC1cXG5mcy9mdXNlL2lub2RlLmM6ODExOnN0YXRpYyBpbnQgZnVzZV9wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSlcXG5mcy9mdXNlL2lub2RlLmMtODEyLXtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0xOTEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfY29udGV4dF9vcGVyYXRpb25zIGZ1c2VfY29udGV4dF9vcHMgPSB7XFxuZnMvZnVzZS9pbm9kZS5jLTE5MTEtXFx0LmZyZWVcXHRcXHQ9IGZ1c2VfZnJlZV9mc2MsXFxuZnMvZnVzZS9pbm9kZS5jOjE5MTI6XFx0LnBhcnNlX3BhcmFtXFx0PSBmdXNlX3BhcnNlX3BhcmFtLFxcbmZzL2Z1c2UvaW5vZGUuYy0xOTEzLVxcdC5yZWNvbmZpZ3VyZVxcdD0gZnVzZV9yZWNvbmZpZ3VyZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MjAuODk1NTg4NzMyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzMzc2ODc1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBzZWxmLXJlZmxlY3Rpb246XG5cbioqQ29uc2lkZXJpbmcgU3RhdGljIEZ1bmN0aW9uIFNjb3BlIGluIEZVU0UgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gSSdtIGxvb2tpbmcgYXQgYGZ1c2VfcGFyc2VfcGFyYW1gIGFuZCBub3RpY2luZywgYXMgYSBtYXR0ZXIgb2YgY291cnNlLCB0aGF0IGl0J3MgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgYSBicm9hZGVyIGNvbnNpZGVyYXRpb24uIE15IG1pbmQgbmF0dXJhbGx5IGp1bXBzIHRvIHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgRlVTRSBpbml0aWFsaXphdGlvbiBmbG93LlxuXG5TcGVjaWZpY2FsbHksIEknbSBub3cgd29uZGVyaW5nIGFib3V0IGBmdXNlX2luaXRfZnNfY29udGV4dGAuIElzICp0aGF0KiBmdW5jdGlvbiBhbHNvIGRlY2xhcmVkIGBzdGF0aWNgPyBJZiBzbywgd2h5PyBJZiBub3QsIHdoeSBub3Q/IEFyZSB0aGVyZSBpbXBsaWNhdGlvbnMgZm9yIG1vZHVsYXJpdHksIHJldXNhYmlsaXR5LCBvciBwb3RlbnRpYWwgZm9yIGZ1dHVyZSBleHRlbnNpb25zIHRoYXQgd2FycmFudCB0aGUgc2NvcGUgY2hvaWNlIGluIGVhY2ggb2YgdGhlc2UgY2FzZXM/IERvZXMgYGZ1c2VfaW5pdF9mc19jb250ZXh0YCBuZWVkIHRvIGJlIGFjY2Vzc2libGUgZnJvbSBvdXRzaWRlIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQsIG9yIHdvdWxkIGl0IGJlIGJldHRlciBzZXJ2ZWQgYXMgaW50ZXJuYWw/IEknbGwgcHJvYmFibHkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhhdCB0byBlbnN1cmUgaXTigJlzIG5vdCBsZWFraW5nIHVubmVjZXNzYXJ5IGRldGFpbHMgb3IgY3JlYXRpbmcgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBJdCdzIGltcG9ydGFudCB0byBrZWVwIHRoZSBzY29wZSBhcyBsaW1pdGVkIGFzIHBvc3NpYmxlLiBJ4oCZbGwgbWFrZSBzdXJlIHRoZXJlJ3MgYSByYXRpb25hbGUgZm9yIHdoYXRldmVyIHRoZSBpbXBsZW1lbnRhdGlvbiBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQyNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA0OjU5OjI0LjEyOTM1OTI5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc3Mjk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmdXNlX2luaXRfZnNfY29udGV4dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9pbm9kZS5jPTE3MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZnVzZV9jb250ZXh0X3N1Ym1vdW50X29wcyA9IHtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNzE1LVxcbmZzL2Z1c2UvaW5vZGUuYzoxNzE2OmludCBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjKVxcbmZzL2Z1c2UvaW5vZGUuYy0xNzE3LXtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNzIwLX1cXG5mcy9mdXNlL2lub2RlLmM6MTcyMTpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudCk7XFxuZnMvZnVzZS9pbm9kZS5jLTE3MjItXFxuLS1cXG5mcy9mdXNlL2lub2RlLmM9MTkxMD1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBmdXNlX2NvbnRleHRfb3BzID0ge1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTE5MTktICovXFxuZnMvZnVzZS9pbm9kZS5jOjE5MjA6c3RhdGljIGludCBmdXNlX2luaXRfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjKVxcbmZzL2Z1c2UvaW5vZGUuYy0xOTIxLXtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0yMDA0PXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBmdXNlX2ZzX3R5cGUgPSB7XFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMjAwNy1cXHQuZnNfZmxhZ3NcXHQ9IEZTX0hBU19TVUJUWVBFIHwgRlNfVVNFUk5TX01PVU5UIHwgRlNfQUxMT1dfSURNQVAsXFxuZnMvZnVzZS9pbm9kZS5jOjIwMDg6XFx0LmluaXRfZnNfY29udGV4dCA9IGZ1c2VfaW5pdF9mc19jb250ZXh0LFxcbmZzL2Z1c2UvaW5vZGUuYy0yMDA5LVxcdC5wYXJhbWV0ZXJzXFx0PSBmdXNlX2ZzX3BhcmFtZXRlcnMsXFxuLS1cXG5mcy9mdXNlL2lub2RlLmM9MjAyMj1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZnVzZWJsa19mc190eXBlID0ge1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTIwMjQtXFx0Lm5hbWVcXHRcXHQ9IFxcXCJmdXNlYmxrXFxcIixcXG5mcy9mdXNlL2lub2RlLmM6MjAyNTpcXHQuaW5pdF9mc19jb250ZXh0ID0gZnVzZV9pbml0X2ZzX2NvbnRleHQsXFxuZnMvZnVzZS9pbm9kZS5jLTIwMjYtXFx0LnBhcmFtZXRlcnNcXHQ9IGZ1c2VfZnNfcGFyYW1ldGVycyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MjQuMTc1MTM4NzM5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDM3MjI3MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6XG5cbioqSW5pdGlhbCBDb25jZXJucyBSZWdhcmRpbmcgRlVTRSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgRlVTRSBpbml0aWFsaXphdGlvbiBjb2RlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2h5IGlzIGBmdXNlX2luaXRfZnNfY29udGV4dGAgYSBzdGF0aWMgZnVuY3Rpb24/IFRoYXQgY291bGQgY3JlYXRlIHNvbWUgc2NvcGUgbGltaXRhdGlvbnMgb3IgbWFrZSBpdCBoYXJkZXIgdG8gcmV1c2UgaW4gc2xpZ2h0bHkgZGlmZmVyZW50IGNvbnRleHRzLiBJdCdzIGEgZGVzaWduIGNob2ljZSBJJ2Qgd2FudCB0byB1bmRlcnN0YW5kIGJldHRlci4gSXMgdGhlcmUgYSBzcGVjaWZpYyByZWFzb24gdG8gbGltaXQgaXRzIHZpc2liaWxpdHkgbGlrZSB0aGF0P1xuXG5UaGVuIG15IG1pbmQganVtcHMgdG8gYGZ1c2VfZmlsbF9zdXBlcmAuIFRoYXQncyB0aGUgb3RoZXIgY3J1Y2lhbCBwaWVjZSBpbiB0aGUgZmlsZXN5c3RlbSBtb3VudCBzZXF1ZW5jZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGNvbnNpZGVyIGl0cyByZWxhdGlvbnNoaXAgdG8gYGZ1c2VfaW5pdF9mc19jb250ZXh0YCwgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBBcmUgdGhlcmUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQ/IEFyZSB0aGVzZSBmdW5jdGlvbnMgcHJvcGVybHkgc3luY2hyb25pemVkIHdpdGggdGhlIG1vdW50IHByb2Nlc3M/IFdoYXQgYWJvdXQgcG90ZW50aWFsIGVycm9yIGhhbmRsaW5nIHNjZW5hcmlvcz8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHksIHN0ZXAgYnkgc3RlcC4gSSB3YW50IHRvIGNoZWNrIGZvciBhbnkgaGlkZGVuIHByb2JsZW1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MjcuMjE4ODYzMzQyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDczNDk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmdXNlX2ZpbGxfc3VwZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvaW5vZGUuYz0xNjAxPXN0YXRpYyB2b2lkIGZ1c2Vfc2JfZGVmYXVsdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNjE2LVxcbmZzL2Z1c2UvaW5vZGUuYzoxNjE3OnN0YXRpYyBpbnQgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuZnMvZnVzZS9pbm9kZS5jLTE2MTgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBmdXNlX2lub2RlICpwYXJlbnRfZmkpXFxuLS1cXG5mcy9mdXNlL2lub2RlLmM9MTY3NT1zdGF0aWMgaW50IGZ1c2VfZ2V0X3RyZWVfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNjk1LVxcdC8qIEluaXRpYWxpemUgc3VwZXJibG9jaywgbWFraW5nIEBtcF9maSBpdHMgcm9vdCAqL1xcbmZzL2Z1c2UvaW5vZGUuYzoxNjk2OlxcdGVyciA9IGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudChzYiwgbXBfZmkpO1xcbmZzL2Z1c2UvaW5vZGUuYy0xNjk3LVxcdGlmIChlcnIpIHtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0xNzIxPUVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50KTtcXG5mcy9mdXNlL2lub2RlLmMtMTcyMi1cXG5mcy9mdXNlL2lub2RlLmM6MTcyMzppbnQgZnVzZV9maWxsX3N1cGVyX2NvbW1vbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnVzZV9mc19jb250ZXh0ICpjdHgpXFxuZnMvZnVzZS9pbm9kZS5jLTE3MjQte1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTE4MTYtfVxcbmZzL2Z1c2UvaW5vZGUuYzoxODE3OkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfZmlsbF9zdXBlcl9jb21tb24pO1xcbmZzL2Z1c2UvaW5vZGUuYy0xODE4LVxcbmZzL2Z1c2UvaW5vZGUuYzoxODE5OnN0YXRpYyBpbnQgZnVzZV9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXFxuZnMvZnVzZS9pbm9kZS5jLTE4MjAte1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTE4MjgtXFxuZnMvZnVzZS9pbm9kZS5jOjE4Mjk6XFx0ZXJyID0gZnVzZV9maWxsX3N1cGVyX2NvbW1vbihzYiwgY3R4KTtcXG5mcy9mdXNlL2lub2RlLmMtMTgzMC1cXHRpZiAoZXJyKVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jPTE4NTI9c3RhdGljIGludCBmdXNlX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTg3OS1cXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQkxPQ0spIFxcdTAwMjZcXHUwMDI2IGN0eC1cXHUwMDNlaXNfYmRldikge1xcbmZzL2Z1c2UvaW5vZGUuYzoxODgwOlxcdFxcdGVyciA9IGdldF90cmVlX2JkZXYoZnNjLCBmdXNlX2ZpbGxfc3VwZXIpO1xcbmZzL2Z1c2UvaW5vZGUuYy0xODgxLVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTE5MDEtXFx0fSBlbHNlIHtcXG5mcy9mdXNlL2lub2RlLmM6MTkwMjpcXHRcXHRlcnIgPSBnZXRfdHJlZV9ub2Rldihmc2MsIGZ1c2VfZmlsbF9zdXBlcik7XFxuZnMvZnVzZS9pbm9kZS5jLTE5MDMtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OToyNy4yNjM2MDI1MzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA0NDU4MTUyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRnVzZSBGaWxlc3lzdGVtIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IEZVU0UgZmlsZXN5c3RlbXMgYXJlIGluaXRpYWxpemVkLCBzcGVjaWZpY2FsbHkgaG93IG1vdW50IG9wdGlvbnMgYXJlIGhhbmRsZWQuIEkgc2VlIHRoYXQgYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gIGlzIGV4cG9ydGVkLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBCdXQgd2FpdCwgYGZ1c2Vfb3B0X2ZkYCBpcyBhY3R1YWxseSBjYWxsZWQgZHVyaW5nIG1vdW50IG9wdGlvbiBwYXJzaW5nLCB3aGljaCBpcyB0aGUgZG9tYWluIG9mIGBmdXNlX3BhcnNlX3BhcmFtYC4gVGhpcyBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIHJvYWRibG9jay5cblxuU28sIHNpbmNlIGl0J3Mgc3RhdGljLCBjYW4gSSBieXBhc3MgaXQgZW50aXJlbHkgYW5kIHVzZSBzb21ldGhpbmcgbGlrZSBgZnVzZV9maWxsX3N1cGVyX2NvbW1vbmAgZGlyZWN0bHksIG9yIHBlcmhhcHMgYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCBvciBgZnVzZV9nZXRfdHJlZWA/IEhtbSwgbm8sIGhvbGQgb24uLi4gdGhlIG1vdW50IG9wdGlvbiBwYXJzaW5nIGlzbid0IGhhbmRsZWQgZGlyZWN0bHkgYnkgYGZ1c2VfcGFyc2VfcGFyYW1gLiBJdCdzIGRvbmUgdGhyb3VnaCBgdmZzX3BhcnNlX2ZzX3BhcmFtYCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2hpY2ggdGhlbiBjYWxscyBgZnNjLVx1MDAzZW9wcy1cdTAwM2VwYXJzZV9wYXJhbWAuIFRoYXQncyB0aGUga2V5LlxuXG5Ob3csIHdoZXJlIGlzIHRoZSBub24tc3RhdGljIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGVzZSBvcGVyYXRpb25zPyBJdCBsb29rcyBsaWtlIGBmdXNlX2luaXRfZnNfY29udGV4dGAgaXMgdGhlIHJlbGV2YW50IGZ1bmN0aW9uLCBidXQgaXQncyAqYWxzbyogbWFya2VkIHN0YXRpYyBhbmQgaXMgcmVnaXN0ZXJlZCBpbiBgZnVzZV9mc190eXBlYC4gQWxyaWdodCwgSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNvbm5lY3Rpb24gaXMuIElzIHRoZXJlIGFueXRoaW5nIGluIGBmcy9mdXNlL2lub2RlLmNgIHRoYXQncyBleHBvcnRlZCBhbmQgcmVsYXRlZD8gTGV0IG1lIGNoZWNrLlxuXG5JIHNlZSBgZnVzZV9maWxsX3N1cGVyX2NvbW1vbmAgaXMgZXhwb3J0ZWQsIHRoYXQncyBub3Qgd2hhdCBJIG5lZWQuIGBmdXNlX21vdW50YD8gTm8sIHRoYXQncyBub3Qgd2hhdCBJJ20gYWZ0ZXIsIGBmdXNlX2dldF90cmVlYCBpcyBhbHNvIHN0YXRpYy4gTGV0J3MgZGlnIGRlZXBlci4gSSdtIGdvaW5nIHRvIHNjYW4gdGhyb3VnaCBgZnMvZnVzZS9pbm9kZS5jYCBmb3IgYW55IGV4cG9ydGVkIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIGJlIHJlbGV2YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTg5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA0OjU5OjMyLjMwODE4NjkzOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0NDMyNTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvaW5vZGUuYz05NTk9dm9pZCBmdXNlX2Nvbm5faW5pdChzdHJ1Y3QgZnVzZV9jb25uICpmYywgc3RydWN0IGZ1c2VfbW91bnQgKmZtLFxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTk4OS19XFxuZnMvZnVzZS9pbm9kZS5jOjk5MDpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2Nvbm5faW5pdCk7XFxuZnMvZnVzZS9pbm9kZS5jLTk5MS1cXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0xMDAzPXZvaWQgZnVzZV9jb25uX3B1dChzdHJ1Y3QgZnVzZV9jb25uICpmYylcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xMDIzLX1cXG5mcy9mdXNlL2lub2RlLmM6MTAyNDpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2Nvbm5fcHV0KTtcXG5mcy9mdXNlL2lub2RlLmMtMTAyNS1cXG5mcy9mdXNlL2lub2RlLmM9MTAyNj1zdHJ1Y3QgZnVzZV9jb25uICpmdXNlX2Nvbm5fZ2V0KHN0cnVjdCBmdXNlX2Nvbm4gKmZjKVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTEwMzAtfVxcbmZzL2Z1c2UvaW5vZGUuYzoxMDMxOkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfY29ubl9nZXQpO1xcbmZzL2Z1c2UvaW5vZGUuYy0xMDMyLVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jPTE1MDc9aW50IGZ1c2Vfc2VuZF9pbml0KHN0cnVjdCBmdXNlX21vdW50ICpmbSlcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNTI4LX1cXG5mcy9mdXNlL2lub2RlLmM6MTUyOTpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX3NlbmRfaW5pdCk7XFxuZnMvZnVzZS9pbm9kZS5jLTE1MzAtXFxuZnMvZnVzZS9pbm9kZS5jPTE1MzE9dm9pZCBmdXNlX2ZyZWVfY29ubihzdHJ1Y3QgZnVzZV9jb25uICpmYylcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNTM0LX1cXG5mcy9mdXNlL2lub2RlLmM6MTUzNTpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2ZyZWVfY29ubik7XFxuZnMvZnVzZS9pbm9kZS5jLTE1MzYtXFxuLS1cXG5mcy9mdXNlL2lub2RlLmM9MTcxNj1pbnQgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNzIwLX1cXG5mcy9mdXNlL2lub2RlLmM6MTcyMTpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudCk7XFxuZnMvZnVzZS9pbm9kZS5jLTE3MjItXFxuZnMvZnVzZS9pbm9kZS5jPTE3MjM9aW50IGZ1c2VfZmlsbF9zdXBlcl9jb21tb24oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZ1c2VfZnNfY29udGV4dCAqY3R4KVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTE4MTYtfVxcbmZzL2Z1c2UvaW5vZGUuYzoxODE3OkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfZmlsbF9zdXBlcl9jb21tb24pO1xcbmZzL2Z1c2UvaW5vZGUuYy0xODE4LVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jPTE5NDQ9Ym9vbCBmdXNlX21vdW50X3JlbW92ZShzdHJ1Y3QgZnVzZV9tb3VudCAqZm0pXFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTk1Ni19XFxuZnMvZnVzZS9pbm9kZS5jOjE5NTc6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9tb3VudF9yZW1vdmUpO1xcbmZzL2Z1c2UvaW5vZGUuYy0xOTU4LVxcbmZzL2Z1c2UvaW5vZGUuYz0xOTU5PXZvaWQgZnVzZV9jb25uX2Rlc3Ryb3koc3RydWN0IGZ1c2VfbW91bnQgKmZtKVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTE5NzUtfVxcbmZzL2Z1c2UvaW5vZGUuYzoxOTc2OkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfY29ubl9kZXN0cm95KTtcXG5mcy9mdXNlL2lub2RlLmMtMTk3Ny1cXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0xOTkwPXZvaWQgZnVzZV9tb3VudF9kZXN0cm95KHN0cnVjdCBmdXNlX21vdW50ICpmbSlcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xOTk0LX1cXG5mcy9mdXNlL2lub2RlLmM6MTk5NTpFWFBPUlRfU1lNQk9MKGZ1c2VfbW91bnRfZGVzdHJveSk7XFxuZnMvZnVzZS9pbm9kZS5jLTE5OTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA0OjU5OjMyLjYwMjYyNTQwOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTQxMzQyNDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZVU0UgS2VybmVsIE1vZHVsZSBDb25maWd1cmF0aW9uIE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB3ZSBjYW4gYmVzdCBjb25maWd1cmUgdGhlIEZVU0Uga2VybmVsIG1vZHVsZSBmb3IgZnV6emluZy4gYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gIHNlZW1zIGxpa2UgYSBzdHJvbmcgY29udGVuZGVyIOKAkyBpdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgZGVmaW5pdGVseS4gSSB3YXMgaW5pdGlhbGx5IGFsc28gY29uc2lkZXJpbmcgYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCwgYW5kIGl0IG1heSBzdGlsbCBiZSByZWxldmFudCwgYnV0IHJpZ2h0IG5vdyBJIHRoaW5rIHdlIGNhbiBnZXQgYXdheSB3aXRoIGp1c3QgZm9jdXNpbmcgb24gYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gLlxuXG5JIG5lZWRlZCB0byBxdWlja2x5IGNoZWNrIHdoZXJlIHRoZSBtb3VudCBvcHRpb24gcGFyc2luZyBoYXBwZW5zIHJlbGF0aXZlIHRvIGBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uYC4gSG1tLCB0aGUgcGFyc2luZyBoYXBwZW5zICpiZWZvcmUqIHRoYXQgZnVuY3Rpb24uIE9rYXksIHNvIHRoYXQgY2hhbmdlcyB0aGluZ3MgYSBsaXR0bGUuIFdhaXQsIEknbSBzZWNvbmQtZ3Vlc3NpbmcgbXlzZWxmOyBgZnVzZV9maWxsX3N1cGVyX2NvbW1vbmAgaXMgc3RpbGwgcHJvYmFibHkgdGhlIHByaW1hcnkgZnVuY3Rpb24gdG8gdGFyZ2V0LlxuXG5UbyBiZSBzdXJlLCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBmdXNlX29wdF9mZGAgaXMgcmVhY2hhYmxlIGZyb20gYGZ1c2VfcGFyc2VfcGFyYW1gIHNpbmNlIEkga25vdyB0aGF0IG9wdGlvbnMgcGFyc2luZyBpbmZsdWVuY2VzIHRoZSBzdXBlciBibG9jay4gWWVzLCBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGNvbm5lY3Rpb24uIEdvb2QuIFRoZSBrZXkgY2hhbmdlIGlzIGluIGBmdXNlX29wdF9mZGAgd2hpY2gsIGFzIGV4cGVjdGVkLCBpcyBjYWxsZWQgYnkgYGZ1c2VfcGFyc2VfcGFyYW1gLiBJJ3ZlIGNvbmZpcm1lZCBldmVyeXRoaW5nIHRvIHRoaXMgcG9pbnQuXG5cblRoZSBjb25maWcgSSdtIHRhcmdldGluZyBpcyBgRlVTRV9GU2AuIEknbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAgYmVjYXVzZSB0aGlzIGxvb2tzIGxpa2UgYSBmcnVpdGZ1bCBhdmVudWUgZm9yIGZpbmRpbmcgaXNzdWVzLiBXZSdyZSBnb2luZyB0byBmb2N1cyBvbiBgZnVzZV9maWxsX3N1cGVyX2NvbW1vbmAgYW5kIHdlIGFyZSBlbmFibGluZyB0aGUgYEZVU0VfRlNgIGNvbmZpZyBvcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MzYsIk91dHB1dFRva2VucyI6MTAxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA0OjU5OjM3Ljc0Mzk3MDM5M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1Nzc5MjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9maWxsX3N1cGVyX2NvbW1vblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiBgZnVzZV9vcHRfZmRgIHRvIHByZXZlbnQgc3BlY2lmeWluZyBtdWx0aXBsZSBgZmRgIG9wdGlvbnMgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbW91bnQgb3B0aW9uIHBhcnNpbmcgbG9naWMgb2YgdGhlIEZVU0UgZmlsZXN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbW91bnQgc3lzdGVtIGNhbGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZmlsbF9zdXBlcl9jb21tb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IHNwZWNpZnlpbmcgbXVsdGlwbGUgYGZkYCBvcHRpb25zIGR1cmluZyBGVVNFIG1vdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1vdW50IG9wdGlvbiBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBGVVNFIGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIG1vdW50IHN5c3RlbSBjYWxsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OTozNy44Mjk3NTc1OTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NjU1NTY4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OTozNy44MzAyOTMwMTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Nzg2NTAxNjM2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBmdXNlX29wdF9mZGAgdG8gcHJldmVudCBtdWx0aXBsZSBmaWxlIGRlc2NyaXB0b3JzIGZyb20gYmVpbmcgc3BlY2lmaWVkIGR1cmluZyBGVVNFIG1vdW50LiBUaGlzIGZpeGVzIGEgbG9naWMgYnVnIHRoYXQgY291bGQgbGVhZCB0byBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzICh3aGljaCBhcmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtNRU1MRUFLKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTA1OGVkZDY4MjU1ODdjYzBmODYzYTk2ZjBkMTc2MzdlYzg0Y2NiNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA0OjU5OjA5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9pbm9kZS5jIGIvZnMvZnVzZS9pbm9kZS5jXG5pbmRleCBkOTc1MDczYzYwMjk2Li5jOTUxOGI3ZjU2MDVhIDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9pbm9kZS5jXG4rKysgYi9mcy9mdXNlL2lub2RlLmNcbkBAIC03OTEsNiArNzkxLDkgQEAgc3RhdGljIGludCBmdXNlX29wdF9mZChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB7XG4gXHRzdHJ1Y3QgZnVzZV9mc19jb250ZXh0ICpjdHggPSBmc2MtXHUwMDNlZnNfcHJpdmF0ZTtcbiBcbitcdGlmIChjdHgtXHUwMDNlZnVkKVxuK1x0XHRyZXR1cm4gaW52YWxmYyhmc2MsIFwiTXVsdGlwbGUgZmQgc3BlY2lmaWVkXCIpO1xuK1xuIFx0aWYgKGZpbGUtXHUwMDNlZl9vcCAhPSBcdTAwMjZmdXNlX2Rldl9vcGVyYXRpb25zKVxuIFx0XHRyZXR1cm4gaW52YWxmYyhmc2MsIFwiZmQgaXMgbm90IGEgZnVzZSBkZXZpY2VcIik7XG4gXHQvKlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MzcuODMwMjkzNzExWiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NjY1OTg5NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGVVNFIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBJdCBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gYGZ1c2Vfb3B0X2ZkYCwgc3BlY2lmaWNhbGx5IGluIGBmcy9mdXNlL2lub2RlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHRoaXMgbGluZTogYGlmIChjdHgtXHUwMDNlZnVkKSByZXR1cm4gaW52YWxmYyhmc2MsIFwiTXVsdGlwbGUgZmQgc3BlY2lmaWVkXCIpO2AuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgbG9naWMgYnVnIGZpeC4gSXQgc2VlbXMgbGlrZSB0aGUgaW50ZW50aW9uIGlzIHRvIHByZXZlbnQgdGhlIEZVU0UgbW91bnQgb3B0aW9ucyBmcm9tIGFjY2VwdGluZyBtdWx0aXBsZSBmaWxlIGRlc2NyaXB0b3JzIGJlaW5nIHNwZWNpZmllZCBzaW11bHRhbmVvdXNseS4gVGhpcyBwcm9iYWJseSBhdm9pZHMgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSDigJMgYSBtZW1vcnkgbGVhaywgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgb3Igc29tZSBzaW1pbGFyIGtpbmQgb2YgZXJyb3IgaWYgdGhlIGNvZGUgd2FzIGRlc2lnbmVkIHRvIGhhbmRsZSBvbmx5IGEgc2luZ2xlIGBmZGAgb3B0aW9uLiBJdCBkb2Vzbid0IGFwcGVhciB0byBiZSByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcywgd2hpY2ggaXMgZ29vZC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIHRoZSBpbnRlbmRlZCBiZWhhdmlvci4gSSdsbCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGZ1c2Vfb3B0X2ZkYCB3aXRoaW4gYGZzL2Z1c2UvaW5vZGUuY2AgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZS4gSSdsbCBwYXkgYXR0ZW50aW9uIHRvIGhvdyBgY3R4LVx1MDAzZWZ1ZGAgaXMgdXNlZCBhbmQgaW5pdGlhbGl6ZWQgdG8gZ2FpbiBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmaXggYW5kIGl0cyBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OTo0MS41OTY4OTY3NzZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzkwNjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1c2Vfb3B0X2ZkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvaW5vZGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2lub2RlLmM9Nzc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfcGFyYW1ldGVyX3NwZWMgZnVzZV9mc19wYXJhbWV0ZXJzW10gPSB7XFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtNzg5LVxcbmZzL2Z1c2UvaW5vZGUuYzo3OTA6c3RhdGljIGludCBmdXNlX29wdF9mZChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2lub2RlLmMtNzkxLXtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz04MTE9c3RhdGljIGludCBmdXNlX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmc2MsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTg1MC1cXHRcXHRpZiAocGFyYW0tXFx1MDAzZXR5cGUgPT0gZnNfdmFsdWVfaXNfZmlsZSkge1xcbmZzL2Z1c2UvaW5vZGUuYzo4NTE6XFx0XFx0XFx0cmV0dXJuIGZ1c2Vfb3B0X2ZkKGZzYywgcGFyYW0tXFx1MDAzZWZpbGUpO1xcbmZzL2Z1c2UvaW5vZGUuYy04NTItXFx0XFx0fSBlbHNlIHtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy04NTYtXFxuZnMvZnVzZS9pbm9kZS5jOjg1NzpcXHRcXHRcXHRyZXR1cm4gZnVzZV9vcHRfZmQoZnNjLCBmaWxlKTtcXG5mcy9mdXNlL2lub2RlLmMtODU4LVxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6NDEuNjQ0MjkyODc0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTA5ODk2MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXNlIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoLiBJdCBzZWVtcyB0aGUgY29yZSBpc3N1ZSBpcyBwcmV2ZW50aW5nIGBmdXNlX29wdF9mZGAgZnJvbSBiZWluZyBjYWxsZWQgcmVwZWF0ZWRseS4gVGhlIGNvbmNlcm4gaXMgdGhhdCBtdWx0aXBsZSBjYWxscyB3b3VsZCBjbG9iYmVyIHRoZSBgY3R4LVx1MDAzZWZ1ZGAgZmllbGQgb3Igc29tZXRoaW5nIHNpbWlsYXIuIEl0J3MgYSBjbGFzc2ljIGxvZ2ljIGVycm9yLCByZWFsbHksIG1vcmUgYWJvdXQgY29udHJvbCBmbG93IHRoYW4gYW55IHNvcnQgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvYmxlbS5cblxuR2l2ZW4gbXkgdW5kZXJzdGFuZGluZywgSSBkb24ndCBzZWUgYW55IHJpc2sgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGlzIHBhcnRpY3VsYXIgaW5zdGFuY2UuIEZyYW5rbHksIGlmIHdlICp3ZXJlKiBkZWFsaW5nIHdpdGggbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBkdWUgdG8gdGhlIG92ZXJ3cml0ZSwgS0FTQU4gb3IgS01FTUxFQUsgd291bGQgaGF2ZSBmbGFnZ2VkIHRob3NlIGlzc3VlcyBpbW1lZGlhdGVseS4gVGhpcyBmaXggaXMgcHJldmVudGluZyBhIHBlcmZlY3RseSB2YWxpZCB2YXJpYWJsZSBmcm9tIGJlaW5nIGluY29ycmVjdGx5IG92ZXJ3cml0dGVuLiBObyBuZWVkIHRvIGJyaW5nIEtNU0FOIGludG8gdGhlIGVxdWF0aW9uLiBJdCdzIHNpbXBseSBub3QgYXBwbGljYWJsZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjU3LCJPdXRwdXRUb2tlbnMiOjEwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA0OjU5OjQ1LjY5NTI4NTUzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IG11bHRpcGxlIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSBiZWluZyBzcGVjaWZpZWQgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgZml4ZXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBsZWFkIHRvIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgKHdoaWNoIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3IgS01FTUxFQUspLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IG11bHRpcGxlIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSBiZWluZyBzcGVjaWZpZWQgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgZml4ZXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBsZWFkIHRvIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgKHdoaWNoIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3IgS01FTUxFQUspLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowv9f5q[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-11 04:57:13 +0000 UTC FinishedAt: 2026-08-11 04:59:48 +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": "fe6568ca989d7625447625db8562bebbe5be054a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fe6568ca989d7625447625db8562bebbe5be054a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "6eba0032-ce29-4eb9-8e0c-58dff5787c1c" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "fuse_fill_super_common" ], "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+CgkJCTx0ZD4yMDI2LzA4LzExIDA0OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2ZpbGxfc3VwZXJfY29tbW9uJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBmdXNlX29wdF9mZGAgdG8gcHJldmVudCBtdWx0aXBsZSBmaWxlIGRlc2NyaXB0b3JzIGZyb20gYmVpbmcgc3BlY2lmaWVkIGR1cmluZyBGVVNFIG1vdW50LiBUaGlzIGZpeGVzIGEgbG9naWMgYnVnIHRoYXQgY291bGQgbGVhZCB0byBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzICh3aGljaCBhcmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtNRU1MRUFLKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiBgZnVzZV9vcHRfZmRgIHRvIHByZXZlbnQgc3BlY2lmeWluZyBtdWx0aXBsZSBgZmRgIG9wdGlvbnMgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbW91bnQgb3B0aW9uIHBhcnNpbmcgbG9naWMgb2YgdGhlIEZVU0UgZmlsZXN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbW91bnQgc3lzdGVtIGNhbGwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMDU4ZWRkNjgyNTU4N2NjMGY4NjNhOTZmMGQxNzYzN2VjODRjY2I1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDQ6NTk6MDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9pbm9kZS5jIGIvZnMvZnVzZS9pbm9kZS5jXG5pbmRleCBkOTc1MDczYzYwMjk2Li5jOTUxOGI3ZjU2MDVhIDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9pbm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2lub2RlLmNcbkBAIC03OTEsNiAmIzQzOzc5MSw5IEBAIHN0YXRpYyBpbnQgZnVzZV9vcHRfZmQoc3RydWN0IGZzX2NvbnRleHQgKmZzYywgc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZnNfY29udGV4dCAqY3R4ID0gZnNjLVx1MDAzZWZzX3ByaXZhdGU7XG4gXG4mIzQzO1x0aWYgKGN0eC1cdTAwM2VmdWQpXG4mIzQzO1x0XHRyZXR1cm4gaW52YWxmYyhmc2MsIFwmIzM0O011bHRpcGxlIGZkIHNwZWNpZmllZFwmIzM0Oyk7XG4mIzQzO1xuIFx0aWYgKGZpbGUtXHUwMDNlZl9vcCAhPSBcdTAwMjZmdXNlX2Rldl9vcGVyYXRpb25zKVxuIFx0XHRyZXR1cm4gaW52YWxmYyhmc2MsIFwmIzM0O2ZkIGlzIG5vdCBhIGZ1c2UgZGV2aWNlXCYjMzQ7KTtcbiBcdC8qXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2ZpbGxfc3VwZXJfY29tbW9uJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiBgZnVzZV9vcHRfZmRgIHRvIHByZXZlbnQgc3BlY2lmeWluZyBtdWx0aXBsZSBgZmRgIG9wdGlvbnMgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbW91bnQgb3B0aW9uIHBhcnNpbmcgbG9naWMgb2YgdGhlIEZVU0UgZmlsZXN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbW91bnQgc3lzdGVtIGNhbGwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlMDU4ZWRkNjgyNTU4N2NjMGY4NjNhOTZmMGQxNzYzN2VjODRjY2I1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMTEgMDQ6NTk6MDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9mdXNlL2lub2RlLmMgYi9mcy9mdXNlL2lub2RlLmMKaW5kZXggZDk3NTA3M2M2MDI5Ni4uYzk1MThiN2Y1NjA1YSAxMDA2NDQKLS0tIGEvZnMvZnVzZS9pbm9kZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvaW5vZGUuYwpAQCAtNzkxLDYgJiM0Mzs3OTEsOSBAQCBzdGF0aWMgaW50IGZ1c2Vfb3B0X2ZkKHN0cnVjdCBmc19jb250ZXh0ICpmc2MsIHN0cnVjdCBmaWxlICpmaWxlKQogewogCXN0cnVjdCBmdXNlX2ZzX2NvbnRleHQgKmN0eCA9IGZzYy0mZ3Q7ZnNfcHJpdmF0ZTsKIAomIzQzOwlpZiAoY3R4LSZndDtmdWQpCiYjNDM7CQlyZXR1cm4gaW52YWxmYyhmc2MsICYjMzQ7TXVsdGlwbGUgZmQgc3BlY2lmaWVkJiMzNDspOwomIzQzOwogCWlmIChmaWxlLSZndDtmX29wICE9ICZhbXA7ZnVzZV9kZXZfb3BlcmF0aW9ucykKIAkJcmV0dXJuIGludmFsZmMoZnNjLCAmIzM0O2ZkIGlzIG5vdCBhIGZ1c2UgZGV2aWNlJiMzNDspOwogCS8qCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIHVuZGVyc3RhbmQgaXQ6CgoqKkFuYWx5emluZyBhIEZVU0UgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGZzL2Z1c2UvaW5vZGUuY2AsIHJpZ2h0PyBUaGUga2V5IHBhcnQgc2VlbXMgdG8gYmUgYSBjaGFuZ2Ugd2l0aGluIGBmdXNlX29wdF9mZGAuIFRoaXMgZnVuY3Rpb24sIEkgZ2F0aGVyLCBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlICYjMzk7ZmQmIzM5OyBtb3VudCBvcHRpb24gd2l0aGluIHRoZSBGVVNFIGZpbGVzeXN0ZW0uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGl0JiMzOTtzIHJldHVybmluZyBhbiBlcnJvciBpZiBgY3R4LSZndDtmdWRgIGlzIGFscmVhZHkgYXNzaWduZWQgYSB2YWx1ZS4gRWZmZWN0aXZlbHksIHdlJiMzOTtyZSBtYWtpbmcgc3VyZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzbiYjMzk7dCBiZWluZyBvdmVyd3JpdHRlbiBvciByZWRlZmluZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRpdmUgaW50byBgZnMvZnVzZS9pbm9kZS5jYCBub3cgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgYGZ1c2Vfb3B0X2ZkYCBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuIEkgd2FudCB0byBzZWUgd2hhdCAmIzM5O2N0eCYjMzk7IGlzIGFuZCB1bmRlcnN0YW5kIHRoZSBsb2dpYyBhcm91bmQgYGN0eC0mZ3Q7ZnVkYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX29wdF9mZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmM9Nzc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfcGFyYW1ldGVyX3NwZWMgZnVzZV9mc19wYXJhbWV0ZXJzW10gPSB7XG4tLVxuZnMvZnVzZS9pbm9kZS5jLTc4OS1cbmZzL2Z1c2UvaW5vZGUuYzo3OTA6c3RhdGljIGludCBmdXNlX29wdF9mZChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvaW5vZGUuYy03OTEte1xuLS1cbmZzL2Z1c2UvaW5vZGUuYz04MTE9c3RhdGljIGludCBmdXNlX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmc2MsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYy04NTAtXHRcdGlmIChwYXJhbS1cdTAwM2V0eXBlID09IGZzX3ZhbHVlX2lzX2ZpbGUpIHtcbmZzL2Z1c2UvaW5vZGUuYzo4NTE6XHRcdFx0cmV0dXJuIGZ1c2Vfb3B0X2ZkKGZzYywgcGFyYW0tXHUwMDNlZmlsZSk7XG5mcy9mdXNlL2lub2RlLmMtODUyLVx0XHR9IGVsc2Uge1xuLS1cbmZzL2Z1c2UvaW5vZGUuYy04NTYtXG5mcy9mdXNlL2lub2RlLmM6ODU3Olx0XHRcdHJldHVybiBmdXNlX29wdF9mZChmc2MsIGZpbGUpO1xuZnMvZnVzZS9pbm9kZS5jLTg1OC1cdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NjAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGVVNFIE1vdW50IE9wdGlvbiBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjYXVzaW5nIGEgZnVuY3Rpb25hbCBzaGlmdCBpbiBob3cgRlVTRSBtb3VudCBvcHRpb25zIGFyZSBwYXJzZWQsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBgZmRgIG9wdGlvbi4gSXQgbG9va3MgbGlrZSBpdCBwcmV2ZW50cyB0aGUgdXNlIG9mIG11bHRpcGxlIGBmZGAgb3B0aW9ucyBkdXJpbmcgYSBGVVNFIG1vdW50LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgdGhlIGtpbmQgb2YgY2hhbmdlIHRoYXQgKmRlbWFuZHMqIGZ1enppbmcuIFdlIG5lZWQgdG8gZXhwbG9yZSB0aGUgcm9idXN0bmVzcyBvZiB0aGUgdXBkYXRlZCBwYXJzaW5nIGxvZ2ljLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBgZnVzZV9vcHRfZmRgIGFuZCBgZnVzZV9wYXJzZV9wYXJhbWAgc3ltYm9scyDigJMgdGhvc2UgYXJlIGNsZWFybHkgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0byBzY3J1dGluaXplLgoKQmVmb3JlIGRpdmluZyBpbnRvIGZ1enppbmcgc3RyYXRlZ2llcywgdGhvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2suIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYEZVU0VfRlNgIGlzIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuYWJsZSBpbiBteSB0ZXN0aW5nIGVudmlyb25tZW50IHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGV2ZW4gcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgYnVpbGQuIE1ha2luZyBzdXJlIHRoZSBjb3JyZWN0IGVudmlyb25tZW50IGlzIGluIHBsYWNlIGlzIGtleS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlVTRV9GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXG5mcy9mdXNlL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIEZVU0UgQ29uZmlndXJhdGlvbiBDaGFuZ2UqKgoKUmlnaHQsIGBGVVNFX0ZTYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBiZSBsb29raW5nIGF0LiBUaGUgY2hhbmdlIGlzIGluIGBmdXNlX29wdF9mZGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGltcGFjdGluZyB0aGUgc3lzdGVtLiBGaXJzdCwgaXMgYGZ1c2Vfb3B0X2ZkYCBzdGF0aWM/IFllcCwgaXQgaXMuIFRoYXQgbGltaXRzIHRoZSBzY29wZSBvZiB3aGVyZSBpdCBjb3VsZCBiZSBtb2RpZmllZC4gU28sIGlmIHRoZSBpc3N1ZSBpcyBkZWVwZXIsIHRoZSBmdW5jdGlvbiB0aGF0IG1hbmlwdWxhdGVzIGl0IGhhcyB0byBiZSB0aGUgY3VscHJpdC4gSSYjMzk7bSB0aGlua2luZyBJIG1pZ2h0IGdldCBtb3JlIGluZm9ybWF0aW9uIGZyb20gYGZ1c2VfcGFyc2VfcGFyYW1gIG9yIGBmdXNlX2ZpbGxfc3VwZXJgLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgYGZ1c2VfcGFyc2VfcGFyYW1gIGFuZCBzZWUgd2hhdCBpdCBpcyBkb2luZyB3aXRoIHRoaXMgZmlsZSBkZXNjcmlwdG9yLiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZV9wYXJzZV9wYXJhbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmM9NzkwPXN0YXRpYyBpbnQgZnVzZV9vcHRfZmQoc3RydWN0IGZzX2NvbnRleHQgKmZzYywgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9pbm9kZS5jLTgxMC1cbmZzL2Z1c2UvaW5vZGUuYzo4MTE6c3RhdGljIGludCBmdXNlX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmc2MsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxuZnMvZnVzZS9pbm9kZS5jLTgxMi17XG4tLVxuZnMvZnVzZS9pbm9kZS5jPTE5MTA9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZnVzZV9jb250ZXh0X29wcyA9IHtcbmZzL2Z1c2UvaW5vZGUuYy0xOTExLVx0LmZyZWVcdFx0PSBmdXNlX2ZyZWVfZnNjLFxuZnMvZnVzZS9pbm9kZS5jOjE5MTI6XHQucGFyc2VfcGFyYW1cdD0gZnVzZV9wYXJzZV9wYXJhbSxcbmZzL2Z1c2UvaW5vZGUuYy0xOTEzLVx0LnJlY29uZmlndXJlXHQ9IGZ1c2VfcmVjb25maWd1cmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQyNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3Mgc2VsZi1yZWZsZWN0aW9uOgoKKipDb25zaWRlcmluZyBTdGF0aWMgRnVuY3Rpb24gU2NvcGUgaW4gRlVTRSBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gbG9va2luZyBhdCBgZnVzZV9wYXJzZV9wYXJhbWAgYW5kIG5vdGljaW5nLCBhcyBhIG1hdHRlciBvZiBjb3Vyc2UsIHRoYXQgaXQmIzM5O3MgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgYSBicm9hZGVyIGNvbnNpZGVyYXRpb24uIE15IG1pbmQgbmF0dXJhbGx5IGp1bXBzIHRvIHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgRlVTRSBpbml0aWFsaXphdGlvbiBmbG93LgoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIG5vdyB3b25kZXJpbmcgYWJvdXQgYGZ1c2VfaW5pdF9mc19jb250ZXh0YC4gSXMgKnRoYXQqIGZ1bmN0aW9uIGFsc28gZGVjbGFyZWQgYHN0YXRpY2A/IElmIHNvLCB3aHk/IElmIG5vdCwgd2h5IG5vdD8gQXJlIHRoZXJlIGltcGxpY2F0aW9ucyBmb3IgbW9kdWxhcml0eSwgcmV1c2FiaWxpdHksIG9yIHBvdGVudGlhbCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMgdGhhdCB3YXJyYW50IHRoZSBzY29wZSBjaG9pY2UgaW4gZWFjaCBvZiB0aGVzZSBjYXNlcz8gRG9lcyBgZnVzZV9pbml0X2ZzX2NvbnRleHRgIG5lZWQgdG8gYmUgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgb3Igd291bGQgaXQgYmUgYmV0dGVyIHNlcnZlZCBhcyBpbnRlcm5hbD8gSSYjMzk7bGwgcHJvYmFibHkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhhdCB0byBlbnN1cmUgaXTigJlzIG5vdCBsZWFraW5nIHVubmVjZXNzYXJ5IGRldGFpbHMgb3IgY3JlYXRpbmcgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8ga2VlcCB0aGUgc2NvcGUgYXMgbGltaXRlZCBhcyBwb3NzaWJsZS4gSeKAmWxsIG1ha2Ugc3VyZSB0aGVyZSYjMzk7cyBhIHJhdGlvbmFsZSBmb3Igd2hhdGV2ZXIgdGhlIGltcGxlbWVudGF0aW9uIGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2luaXRfZnNfY29udGV4dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmM9MTcxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBmdXNlX2NvbnRleHRfc3VibW91bnRfb3BzID0ge1xuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xNzE1LVxuZnMvZnVzZS9pbm9kZS5jOjE3MTY6aW50IGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXG5mcy9mdXNlL2lub2RlLmMtMTcxNy17XG4tLVxuZnMvZnVzZS9pbm9kZS5jLTE3MjAtfVxuZnMvZnVzZS9pbm9kZS5jOjE3MjE6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQpO1xuZnMvZnVzZS9pbm9kZS5jLTE3MjItXG4tLVxuZnMvZnVzZS9pbm9kZS5jPTE5MTA9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZnVzZV9jb250ZXh0X29wcyA9IHtcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTkxOS0gKi9cbmZzL2Z1c2UvaW5vZGUuYzoxOTIwOnN0YXRpYyBpbnQgZnVzZV9pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbmZzL2Z1c2UvaW5vZGUuYy0xOTIxLXtcbi0tXG5mcy9mdXNlL2lub2RlLmM9MjAwND1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZnVzZV9mc190eXBlID0ge1xuLS1cbmZzL2Z1c2UvaW5vZGUuYy0yMDA3LVx0LmZzX2ZsYWdzXHQ9IEZTX0hBU19TVUJUWVBFIHwgRlNfVVNFUk5TX01PVU5UIHwgRlNfQUxMT1dfSURNQVAsXG5mcy9mdXNlL2lub2RlLmM6MjAwODpcdC5pbml0X2ZzX2NvbnRleHQgPSBmdXNlX2luaXRfZnNfY29udGV4dCxcbmZzL2Z1c2UvaW5vZGUuYy0yMDA5LVx0LnBhcmFtZXRlcnNcdD0gZnVzZV9mc19wYXJhbWV0ZXJzLFxuLS1cbmZzL2Z1c2UvaW5vZGUuYz0yMDIyPXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBmdXNlYmxrX2ZzX3R5cGUgPSB7XG4tLVxuZnMvZnVzZS9pbm9kZS5jLTIwMjQtXHQubmFtZVx0XHQ9IFwmIzM0O2Z1c2VibGtcJiMzNDssXG5mcy9mdXNlL2lub2RlLmM6MjAyNTpcdC5pbml0X2ZzX2NvbnRleHQgPSBmdXNlX2luaXRfZnNfY29udGV4dCxcbmZzL2Z1c2UvaW5vZGUuYy0yMDI2LVx0LnBhcmFtZXRlcnNcdD0gZnVzZV9mc19wYXJhbWV0ZXJzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjM0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRoaW5raW5nIHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYToKCioqSW5pdGlhbCBDb25jZXJucyBSZWdhcmRpbmcgRlVTRSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBGVVNFIGluaXRpYWxpemF0aW9uIGNvZGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aHkgaXMgYGZ1c2VfaW5pdF9mc19jb250ZXh0YCBhIHN0YXRpYyBmdW5jdGlvbj8gVGhhdCBjb3VsZCBjcmVhdGUgc29tZSBzY29wZSBsaW1pdGF0aW9ucyBvciBtYWtlIGl0IGhhcmRlciB0byByZXVzZSBpbiBzbGlnaHRseSBkaWZmZXJlbnQgY29udGV4dHMuIEl0JiMzOTtzIGEgZGVzaWduIGNob2ljZSBJJiMzOTtkIHdhbnQgdG8gdW5kZXJzdGFuZCBiZXR0ZXIuIElzIHRoZXJlIGEgc3BlY2lmaWMgcmVhc29uIHRvIGxpbWl0IGl0cyB2aXNpYmlsaXR5IGxpa2UgdGhhdD8KClRoZW4gbXkgbWluZCBqdW1wcyB0byBgZnVzZV9maWxsX3N1cGVyYC4gVGhhdCYjMzk7cyB0aGUgb3RoZXIgY3J1Y2lhbCBwaWVjZSBpbiB0aGUgZmlsZXN5c3RlbSBtb3VudCBzZXF1ZW5jZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGNvbnNpZGVyIGl0cyByZWxhdGlvbnNoaXAgdG8gYGZ1c2VfaW5pdF9mc19jb250ZXh0YCwgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBBcmUgdGhlcmUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQ/IEFyZSB0aGVzZSBmdW5jdGlvbnMgcHJvcGVybHkgc3luY2hyb25pemVkIHdpdGggdGhlIG1vdW50IHByb2Nlc3M/IFdoYXQgYWJvdXQgcG90ZW50aWFsIGVycm9yIGhhbmRsaW5nIHNjZW5hcmlvcz8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHksIHN0ZXAgYnkgc3RlcC4gSSB3YW50IHRvIGNoZWNrIGZvciBhbnkgaGlkZGVuIHByb2JsZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2ZpbGxfc3VwZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9pbm9kZS5jPTE2MDE9c3RhdGljIHZvaWQgZnVzZV9zYl9kZWZhdWx0cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xNjE2LVxuZnMvZnVzZS9pbm9kZS5jOjE2MTc6c3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbmZzL2Z1c2UvaW5vZGUuYy0xNjE4LVx0XHRcdFx0ICAgIHN0cnVjdCBmdXNlX2lub2RlICpwYXJlbnRfZmkpXG4tLVxuZnMvZnVzZS9pbm9kZS5jPTE2NzU9c3RhdGljIGludCBmdXNlX2dldF90cmVlX3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXG4tLVxuZnMvZnVzZS9pbm9kZS5jLTE2OTUtXHQvKiBJbml0aWFsaXplIHN1cGVyYmxvY2ssIG1ha2luZyBAbXBfZmkgaXRzIHJvb3QgKi9cbmZzL2Z1c2UvaW5vZGUuYzoxNjk2Olx0ZXJyID0gZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50KHNiLCBtcF9maSk7XG5mcy9mdXNlL2lub2RlLmMtMTY5Ny1cdGlmIChlcnIpIHtcbi0tXG5mcy9mdXNlL2lub2RlLmM9MTcyMT1FWFBPUlRfU1lNQk9MX0dQTChmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudCk7XG5mcy9mdXNlL2lub2RlLmMtMTcyMi1cbmZzL2Z1c2UvaW5vZGUuYzoxNzIzOmludCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmdXNlX2ZzX2NvbnRleHQgKmN0eClcbmZzL2Z1c2UvaW5vZGUuYy0xNzI0LXtcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTgxNi19XG5mcy9mdXNlL2lub2RlLmM6MTgxNzpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKTtcbmZzL2Z1c2UvaW5vZGUuYy0xODE4LVxuZnMvZnVzZS9pbm9kZS5jOjE4MTk6c3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbmZzL2Z1c2UvaW5vZGUuYy0xODIwLXtcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTgyOC1cbmZzL2Z1c2UvaW5vZGUuYzoxODI5Olx0ZXJyID0gZnVzZV9maWxsX3N1cGVyX2NvbW1vbihzYiwgY3R4KTtcbmZzL2Z1c2UvaW5vZGUuYy0xODMwLVx0aWYgKGVycilcbi0tXG5mcy9mdXNlL2lub2RlLmM9MTg1Mj1zdGF0aWMgaW50IGZ1c2VfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTg3OS1cdGlmIChJU19FTkFCTEVEKENPTkZJR19CTE9DSykgXHUwMDI2XHUwMDI2IGN0eC1cdTAwM2Vpc19iZGV2KSB7XG5mcy9mdXNlL2lub2RlLmM6MTg4MDpcdFx0ZXJyID0gZ2V0X3RyZWVfYmRldihmc2MsIGZ1c2VfZmlsbF9zdXBlcik7XG5mcy9mdXNlL2lub2RlLmMtMTg4MS1cdFx0Z290byBvdXQ7XG4tLVxuZnMvZnVzZS9pbm9kZS5jLTE5MDEtXHR9IGVsc2Uge1xuZnMvZnVzZS9pbm9kZS5jOjE5MDI6XHRcdGVyciA9IGdldF90cmVlX25vZGV2KGZzYywgZnVzZV9maWxsX3N1cGVyKTtcbmZzL2Z1c2UvaW5vZGUuYy0xOTAzLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTg5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBGdXNlIEZpbGVzeXN0ZW0gSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBGVVNFIGZpbGVzeXN0ZW1zIGFyZSBpbml0aWFsaXplZCwgc3BlY2lmaWNhbGx5IGhvdyBtb3VudCBvcHRpb25zIGFyZSBoYW5kbGVkLiBJIHNlZSB0aGF0IGBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uYCBpcyBleHBvcnRlZC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEJ1dCB3YWl0LCBgZnVzZV9vcHRfZmRgIGlzIGFjdHVhbGx5IGNhbGxlZCBkdXJpbmcgbW91bnQgb3B0aW9uIHBhcnNpbmcsIHdoaWNoIGlzIHRoZSBkb21haW4gb2YgYGZ1c2VfcGFyc2VfcGFyYW1gLiBUaGlzIGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyBzdGF0aWMsIHdoaWNoIGlzIGEgYml0IG9mIGEgcm9hZGJsb2NrLgoKU28sIHNpbmNlIGl0JiMzOTtzIHN0YXRpYywgY2FuIEkgYnlwYXNzIGl0IGVudGlyZWx5IGFuZCB1c2Ugc29tZXRoaW5nIGxpa2UgYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gIGRpcmVjdGx5LCBvciBwZXJoYXBzIGBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudGAgb3IgYGZ1c2VfZ2V0X3RyZWVgPyBIbW0sIG5vLCBob2xkIG9uLi4uIHRoZSBtb3VudCBvcHRpb24gcGFyc2luZyBpc24mIzM5O3QgaGFuZGxlZCBkaXJlY3RseSBieSBgZnVzZV9wYXJzZV9wYXJhbWAuIEl0JiMzOTtzIGRvbmUgdGhyb3VnaCBgdmZzX3BhcnNlX2ZzX3BhcmFtYCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2hpY2ggdGhlbiBjYWxscyBgZnNjLSZndDtvcHMtJmd0O3BhcnNlX3BhcmFtYC4gVGhhdCYjMzk7cyB0aGUga2V5LgoKTm93LCB3aGVyZSBpcyB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlc2Ugb3BlcmF0aW9ucz8gSXQgbG9va3MgbGlrZSBgZnVzZV9pbml0X2ZzX2NvbnRleHRgIGlzIHRoZSByZWxldmFudCBmdW5jdGlvbiwgYnV0IGl0JiMzOTtzICphbHNvKiBtYXJrZWQgc3RhdGljIGFuZCBpcyByZWdpc3RlcmVkIGluIGBmdXNlX2ZzX3R5cGVgLiBBbHJpZ2h0LCBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNvbm5lY3Rpb24gaXMuIElzIHRoZXJlIGFueXRoaW5nIGluIGBmcy9mdXNlL2lub2RlLmNgIHRoYXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHJlbGF0ZWQ/IExldCBtZSBjaGVjay4KCkkgc2VlIGBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uYCBpcyBleHBvcnRlZCwgdGhhdCYjMzk7cyBub3Qgd2hhdCBJIG5lZWQuIGBmdXNlX21vdW50YD8gTm8sIHRoYXQmIzM5O3Mgbm90IHdoYXQgSSYjMzk7bSBhZnRlciwgYGZ1c2VfZ2V0X3RyZWVgIGlzIGFsc28gc3RhdGljLiBMZXQmIzM5O3MgZGlnIGRlZXBlci4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRocm91Z2ggYGZzL2Z1c2UvaW5vZGUuY2AgZm9yIGFueSBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBjb3VsZCBiZSByZWxldmFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmM9OTU5PXZvaWQgZnVzZV9jb25uX2luaXQoc3RydWN0IGZ1c2VfY29ubiAqZmMsIHN0cnVjdCBmdXNlX21vdW50ICpmbSxcbi0tXG5mcy9mdXNlL2lub2RlLmMtOTg5LX1cbmZzL2Z1c2UvaW5vZGUuYzo5OTA6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9jb25uX2luaXQpO1xuZnMvZnVzZS9pbm9kZS5jLTk5MS1cbi0tXG5mcy9mdXNlL2lub2RlLmM9MTAwMz12b2lkIGZ1c2VfY29ubl9wdXQoc3RydWN0IGZ1c2VfY29ubiAqZmMpXG4tLVxuZnMvZnVzZS9pbm9kZS5jLTEwMjMtfVxuZnMvZnVzZS9pbm9kZS5jOjEwMjQ6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9jb25uX3B1dCk7XG5mcy9mdXNlL2lub2RlLmMtMTAyNS1cbmZzL2Z1c2UvaW5vZGUuYz0xMDI2PXN0cnVjdCBmdXNlX2Nvbm4gKmZ1c2VfY29ubl9nZXQoc3RydWN0IGZ1c2VfY29ubiAqZmMpXG4tLVxuZnMvZnVzZS9pbm9kZS5jLTEwMzAtfVxuZnMvZnVzZS9pbm9kZS5jOjEwMzE6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9jb25uX2dldCk7XG5mcy9mdXNlL2lub2RlLmMtMTAzMi1cbi0tXG5mcy9mdXNlL2lub2RlLmM9MTUwNz1pbnQgZnVzZV9zZW5kX2luaXQoc3RydWN0IGZ1c2VfbW91bnQgKmZtKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xNTI4LX1cbmZzL2Z1c2UvaW5vZGUuYzoxNTI5OkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2Vfc2VuZF9pbml0KTtcbmZzL2Z1c2UvaW5vZGUuYy0xNTMwLVxuZnMvZnVzZS9pbm9kZS5jPTE1MzE9dm9pZCBmdXNlX2ZyZWVfY29ubihzdHJ1Y3QgZnVzZV9jb25uICpmYylcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTUzNC19XG5mcy9mdXNlL2lub2RlLmM6MTUzNTpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2ZyZWVfY29ubik7XG5mcy9mdXNlL2lub2RlLmMtMTUzNi1cbi0tXG5mcy9mdXNlL2lub2RlLmM9MTcxNj1pbnQgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTcyMC19XG5mcy9mdXNlL2lub2RlLmM6MTcyMTpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudCk7XG5mcy9mdXNlL2lub2RlLmMtMTcyMi1cbmZzL2Z1c2UvaW5vZGUuYz0xNzIzPWludCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmdXNlX2ZzX2NvbnRleHQgKmN0eClcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTgxNi19XG5mcy9mdXNlL2lub2RlLmM6MTgxNzpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKTtcbmZzL2Z1c2UvaW5vZGUuYy0xODE4LVxuLS1cbmZzL2Z1c2UvaW5vZGUuYz0xOTQ0PWJvb2wgZnVzZV9tb3VudF9yZW1vdmUoc3RydWN0IGZ1c2VfbW91bnQgKmZtKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xOTU2LX1cbmZzL2Z1c2UvaW5vZGUuYzoxOTU3OkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfbW91bnRfcmVtb3ZlKTtcbmZzL2Z1c2UvaW5vZGUuYy0xOTU4LVxuZnMvZnVzZS9pbm9kZS5jPTE5NTk9dm9pZCBmdXNlX2Nvbm5fZGVzdHJveShzdHJ1Y3QgZnVzZV9tb3VudCAqZm0pXG4tLVxuZnMvZnVzZS9pbm9kZS5jLTE5NzUtfVxuZnMvZnVzZS9pbm9kZS5jOjE5NzY6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9jb25uX2Rlc3Ryb3kpO1xuZnMvZnVzZS9pbm9kZS5jLTE5NzctXG4tLVxuZnMvZnVzZS9pbm9kZS5jPTE5OTA9dm9pZCBmdXNlX21vdW50X2Rlc3Ryb3koc3RydWN0IGZ1c2VfbW91bnQgKmZtKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xOTk0LX1cbmZzL2Z1c2UvaW5vZGUuYzoxOTk1OkVYUE9SVF9TWU1CT0woZnVzZV9tb3VudF9kZXN0cm95KTtcbmZzL2Z1c2UvaW5vZGUuYy0xOTk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzM2CgkJCQkJCQlvdXRwdXQ6IDEwMQoJCQkJCQkJdGhvdWdodHM6IDE4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGVVNFIEtlcm5lbCBNb2R1bGUgQ29uZmlndXJhdGlvbiBPcHRpbWl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB3ZSBjYW4gYmVzdCBjb25maWd1cmUgdGhlIEZVU0Uga2VybmVsIG1vZHVsZSBmb3IgZnV6emluZy4gYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gIHNlZW1zIGxpa2UgYSBzdHJvbmcgY29udGVuZGVyIOKAkyBpdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGRlZmluaXRlbHkuIEkgd2FzIGluaXRpYWxseSBhbHNvIGNvbnNpZGVyaW5nIGBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudGAsIGFuZCBpdCBtYXkgc3RpbGwgYmUgcmVsZXZhbnQsIGJ1dCByaWdodCBub3cgSSB0aGluayB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBqdXN0IGZvY3VzaW5nIG9uIGBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uYC4KCkkgbmVlZGVkIHRvIHF1aWNrbHkgY2hlY2sgd2hlcmUgdGhlIG1vdW50IG9wdGlvbiBwYXJzaW5nIGhhcHBlbnMgcmVsYXRpdmUgdG8gYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gLiBIbW0sIHRoZSBwYXJzaW5nIGhhcHBlbnMgKmJlZm9yZSogdGhhdCBmdW5jdGlvbi4gT2theSwgc28gdGhhdCBjaGFuZ2VzIHRoaW5ncyBhIGxpdHRsZS4gV2FpdCwgSSYjMzk7bSBzZWNvbmQtZ3Vlc3NpbmcgbXlzZWxmOyBgZnVzZV9maWxsX3N1cGVyX2NvbW1vbmAgaXMgc3RpbGwgcHJvYmFibHkgdGhlIHByaW1hcnkgZnVuY3Rpb24gdG8gdGFyZ2V0LgoKVG8gYmUgc3VyZSwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgZnVzZV9vcHRfZmRgIGlzIHJlYWNoYWJsZSBmcm9tIGBmdXNlX3BhcnNlX3BhcmFtYCBzaW5jZSBJIGtub3cgdGhhdCBvcHRpb25zIHBhcnNpbmcgaW5mbHVlbmNlcyB0aGUgc3VwZXIgYmxvY2suIFllcywgSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgY29ubmVjdGlvbi4gR29vZC4gVGhlIGtleSBjaGFuZ2UgaXMgaW4gYGZ1c2Vfb3B0X2ZkYCB3aGljaCwgYXMgZXhwZWN0ZWQsIGlzIGNhbGxlZCBieSBgZnVzZV9wYXJzZV9wYXJhbWAuIEkmIzM5O3ZlIGNvbmZpcm1lZCBldmVyeXRoaW5nIHRvIHRoaXMgcG9pbnQuCgpUaGUgY29uZmlnIEkmIzM5O20gdGFyZ2V0aW5nIGlzIGBGVVNFX0ZTYC4gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAgYmVjYXVzZSB0aGlzIGxvb2tzIGxpa2UgYSBmcnVpdGZ1bCBhdmVudWUgZm9yIGZpbmRpbmcgaXNzdWVzLiBXZSYjMzk7cmUgZ29pbmcgdG8gZm9jdXMgb24gYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gIGFuZCB3ZSBhcmUgZW5hYmxpbmcgdGhlIGBGVVNFX0ZTYCBjb25maWcgb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2VfZmlsbF9zdXBlcl9jb21tb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBmdXNlX29wdF9mZGAgdG8gcHJldmVudCBzcGVjaWZ5aW5nIG11bHRpcGxlIGBmZGAgb3B0aW9ucyBkdXJpbmcgRlVTRSBtb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtb3VudCBvcHRpb24gcGFyc2luZyBsb2dpYyBvZiB0aGUgRlVTRSBmaWxlc3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBtb3VudCBzeXN0ZW0gY2FsbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2VfZmlsbF9zdXBlcl9jb21tb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBmdXNlX29wdF9mZGAgdG8gcHJldmVudCBzcGVjaWZ5aW5nIG11bHRpcGxlIGBmZGAgb3B0aW9ucyBkdXJpbmcgRlVTRSBtb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtb3VudCBvcHRpb24gcGFyc2luZyBsb2dpYyBvZiB0aGUgRlVTRSBmaWxlc3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBtb3VudCBzeXN0ZW0gY2FsbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IG11bHRpcGxlIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSBiZWluZyBzcGVjaWZpZWQgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgZml4ZXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBsZWFkIHRvIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgKHdoaWNoIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3IgS01FTUxFQUspLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTA1OGVkZDY4MjU1ODdjYzBmODYzYTk2ZjBkMTc2MzdlYzg0Y2NiNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDA0OjU5OjA5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9pbm9kZS5jIGIvZnMvZnVzZS9pbm9kZS5jCmluZGV4IGQ5NzUwNzNjNjAyOTYuLmM5NTE4YjdmNTYwNWEgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvaW5vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2lub2RlLmMKQEAgLTc5MSw2ICYjNDM7NzkxLDkgQEAgc3RhdGljIGludCBmdXNlX29wdF9mZChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZnVzZV9mc19jb250ZXh0ICpjdHggPSBmc2MtJmd0O2ZzX3ByaXZhdGU7CiAKJiM0MzsJaWYgKGN0eC0mZ3Q7ZnVkKQomIzQzOwkJcmV0dXJuIGludmFsZmMoZnNjLCAmIzM0O011bHRpcGxlIGZkIHNwZWNpZmllZCYjMzQ7KTsKJiM0MzsKIAlpZiAoZmlsZS0mZ3Q7Zl9vcCAhPSAmYW1wO2Z1c2VfZGV2X29wZXJhdGlvbnMpCiAJCXJldHVybiBpbnZhbGZjKGZzYywgJiMzNDtmZCBpcyBub3QgYSBmdXNlIGRldmljZSYjMzQ7KTsKIAkvKgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZVU0UgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgY2hlY2sgd2l0aGluIGBmdXNlX29wdF9mZGAsIHNwZWNpZmljYWxseSBpbiBgZnMvZnVzZS9pbm9kZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyB0aGlzIGxpbmU6IGBpZiAoY3R4LSZndDtmdWQpIHJldHVybiBpbnZhbGZjKGZzYywgJiMzNDtNdWx0aXBsZSBmZCBzcGVjaWZpZWQmIzM0Oyk7YC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgbG9naWMgYnVnIGZpeC4gSXQgc2VlbXMgbGlrZSB0aGUgaW50ZW50aW9uIGlzIHRvIHByZXZlbnQgdGhlIEZVU0UgbW91bnQgb3B0aW9ucyBmcm9tIGFjY2VwdGluZyBtdWx0aXBsZSBmaWxlIGRlc2NyaXB0b3JzIGJlaW5nIHNwZWNpZmllZCBzaW11bHRhbmVvdXNseS4gVGhpcyBwcm9iYWJseSBhdm9pZHMgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSDigJMgYSBtZW1vcnkgbGVhaywgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgb3Igc29tZSBzaW1pbGFyIGtpbmQgb2YgZXJyb3IgaWYgdGhlIGNvZGUgd2FzIGRlc2lnbmVkIHRvIGhhbmRsZSBvbmx5IGEgc2luZ2xlIGBmZGAgb3B0aW9uLiBJdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gYmUgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIHdoaWNoIGlzIGdvb2QuCgpJIG5lZWQgdG8gY29uZmlybSB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIGludGVuZGVkIGJlaGF2aW9yLiBJJiMzOTtsbCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGZ1c2Vfb3B0X2ZkYCB3aXRoaW4gYGZzL2Z1c2UvaW5vZGUuY2AgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZS4gSSYjMzk7bGwgcGF5IGF0dGVudGlvbiB0byBob3cgYGN0eC0mZ3Q7ZnVkYCBpcyB1c2VkIGFuZCBpbml0aWFsaXplZCB0byBnYWluIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZpeCBhbmQgaXRzIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZV9vcHRfZmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9pbm9kZS5jPTc3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX3BhcmFtZXRlcl9zcGVjIGZ1c2VfZnNfcGFyYW1ldGVyc1tdID0ge1xuLS1cbmZzL2Z1c2UvaW5vZGUuYy03ODktXG5mcy9mdXNlL2lub2RlLmM6NzkwOnN0YXRpYyBpbnQgZnVzZV9vcHRfZmQoc3RydWN0IGZzX2NvbnRleHQgKmZzYywgc3RydWN0IGZpbGUgKmZpbGUpXG5mcy9mdXNlL2lub2RlLmMtNzkxLXtcbi0tXG5mcy9mdXNlL2lub2RlLmM9ODExPXN0YXRpYyBpbnQgZnVzZV9wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSlcbi0tXG5mcy9mdXNlL2lub2RlLmMtODUwLVx0XHRpZiAocGFyYW0tXHUwMDNldHlwZSA9PSBmc192YWx1ZV9pc19maWxlKSB7XG5mcy9mdXNlL2lub2RlLmM6ODUxOlx0XHRcdHJldHVybiBmdXNlX29wdF9mZChmc2MsIHBhcmFtLVx1MDAzZWZpbGUpO1xuZnMvZnVzZS9pbm9kZS5jLTg1Mi1cdFx0fSBlbHNlIHtcbi0tXG5mcy9mdXNlL2lub2RlLmMtODU2LVxuZnMvZnVzZS9pbm9kZS5jOjg1NzpcdFx0XHRyZXR1cm4gZnVzZV9vcHRfZmQoZnNjLCBmaWxlKTtcbmZzL2Z1c2UvaW5vZGUuYy04NTgtXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1NwoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1c2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIG92ZXIgdGhpcyBwYXRjaC4gSXQgc2VlbXMgdGhlIGNvcmUgaXNzdWUgaXMgcHJldmVudGluZyBgZnVzZV9vcHRfZmRgIGZyb20gYmVpbmcgY2FsbGVkIHJlcGVhdGVkbHkuIFRoZSBjb25jZXJuIGlzIHRoYXQgbXVsdGlwbGUgY2FsbHMgd291bGQgY2xvYmJlciB0aGUgYGN0eC0mZ3Q7ZnVkYCBmaWVsZCBvciBzb21ldGhpbmcgc2ltaWxhci4gSXQmIzM5O3MgYSBjbGFzc2ljIGxvZ2ljIGVycm9yLCByZWFsbHksIG1vcmUgYWJvdXQgY29udHJvbCBmbG93IHRoYW4gYW55IHNvcnQgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvYmxlbS4KCkdpdmVuIG15IHVuZGVyc3RhbmRpbmcsIEkgZG9uJiMzOTt0IHNlZSBhbnkgcmlzayByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIHRoaXMgcGFydGljdWxhciBpbnN0YW5jZS4gRnJhbmtseSwgaWYgd2UgKndlcmUqIGRlYWxpbmcgd2l0aCBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGR1ZSB0byB0aGUgb3ZlcndyaXRlLCBLQVNBTiBvciBLTUVNTEVBSyB3b3VsZCBoYXZlIGZsYWdnZWQgdGhvc2UgaXNzdWVzIGltbWVkaWF0ZWx5LiBUaGlzIGZpeCBpcyBwcmV2ZW50aW5nIGEgcGVyZmVjdGx5IHZhbGlkIHZhcmlhYmxlIGZyb20gYmVpbmcgaW5jb3JyZWN0bHkgb3ZlcndyaXR0ZW4uIE5vIG5lZWQgdG8gYnJpbmcgS01TQU4gaW50byB0aGUgZXF1YXRpb24uIEl0JiMzOTtzIHNpbXBseSBub3QgYXBwbGljYWJsZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IG11bHRpcGxlIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSBiZWluZyBzcGVjaWZpZWQgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgZml4ZXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBsZWFkIHRvIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgKHdoaWNoIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3IgS01FTUxFQUspLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiBgZnVzZV9vcHRfZmRgIHRvIHByZXZlbnQgbXVsdGlwbGUgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIGJlaW5nIHNwZWNpZmllZCBkdXJpbmcgRlVTRSBtb3VudC4gVGhpcyBmaXhlcyBhIGxvZ2ljIGJ1ZyB0aGF0IGNvdWxkIGxlYWQgdG8gbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyAod2hpY2ggYXJlIGNhdWdodCBieSBLQVNBTiBvciBLTUVNTEVBSykuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OToxMC40MTc5NzI5NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1Mjc3MzUwODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX2ZpbGxfc3VwZXJfY29tbW9uXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IG11bHRpcGxlIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSBiZWluZyBzcGVjaWZpZWQgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgZml4ZXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBsZWFkIHRvIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgKHdoaWNoIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3IgS01FTUxFQUspLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IHNwZWNpZnlpbmcgbXVsdGlwbGUgYGZkYCBvcHRpb25zIGR1cmluZyBGVVNFIG1vdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1vdW50IG9wdGlvbiBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBGVVNFIGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIG1vdW50IHN5c3RlbSBjYWxsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OToxMC40MTc5Nzk0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc3Njk4Mjk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTA1OGVkZDY4MjU1ODdjYzBmODYzYTk2ZjBkMTc2MzdlYzg0Y2NiNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxMSAwNDo1OTowOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2lub2RlLmMgYi9mcy9mdXNlL2lub2RlLmNcXG5pbmRleCBkOTc1MDczYzYwMjk2Li5jOTUxOGI3ZjU2MDVhIDEwMDY0NFxcbi0tLSBhL2ZzL2Z1c2UvaW5vZGUuY1xcbisrKyBiL2ZzL2Z1c2UvaW5vZGUuY1xcbkBAIC03OTEsNiArNzkxLDkgQEAgc3RhdGljIGludCBmdXNlX29wdF9mZChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZnVzZV9mc19jb250ZXh0ICpjdHggPSBmc2MtXFx1MDAzZWZzX3ByaXZhdGU7XFxuIFxcbitcXHRpZiAoY3R4LVxcdTAwM2VmdWQpXFxuK1xcdFxcdHJldHVybiBpbnZhbGZjKGZzYywgXFxcIk11bHRpcGxlIGZkIHNwZWNpZmllZFxcXCIpO1xcbitcXG4gXFx0aWYgKGZpbGUtXFx1MDAzZWZfb3AgIT0gXFx1MDAyNmZ1c2VfZGV2X29wZXJhdGlvbnMpXFxuIFxcdFxcdHJldHVybiBpbnZhbGZjKGZzYywgXFxcImZkIGlzIG5vdCBhIGZ1c2UgZGV2aWNlXFxcIik7XFxuIFxcdC8qXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA0OjU5OjEwLjg5NjM3NDA5N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI2OTMzMzc4NDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX2ZpbGxfc3VwZXJfY29tbW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBmdXNlX29wdF9mZGAgdG8gcHJldmVudCBzcGVjaWZ5aW5nIG11bHRpcGxlIGBmZGAgb3B0aW9ucyBkdXJpbmcgRlVTRSBtb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtb3VudCBvcHRpb24gcGFyc2luZyBsb2dpYyBvZiB0aGUgRlVTRSBmaWxlc3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBtb3VudCBzeXN0ZW0gY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTA1OGVkZDY4MjU1ODdjYzBmODYzYTk2ZjBkMTc2MzdlYzg0Y2NiNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA0OjU5OjA5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9pbm9kZS5jIGIvZnMvZnVzZS9pbm9kZS5jXG5pbmRleCBkOTc1MDczYzYwMjk2Li5jOTUxOGI3ZjU2MDVhIDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9pbm9kZS5jXG4rKysgYi9mcy9mdXNlL2lub2RlLmNcbkBAIC03OTEsNiArNzkxLDkgQEAgc3RhdGljIGludCBmdXNlX29wdF9mZChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB7XG4gXHRzdHJ1Y3QgZnVzZV9mc19jb250ZXh0ICpjdHggPSBmc2MtXHUwMDNlZnNfcHJpdmF0ZTtcbiBcbitcdGlmIChjdHgtXHUwMDNlZnVkKVxuK1x0XHRyZXR1cm4gaW52YWxmYyhmc2MsIFwiTXVsdGlwbGUgZmQgc3BlY2lmaWVkXCIpO1xuK1xuIFx0aWYgKGZpbGUtXHUwMDNlZl9vcCAhPSBcdTAwMjZmdXNlX2Rldl9vcGVyYXRpb25zKVxuIFx0XHRyZXR1cm4gaW52YWxmYyhmc2MsIFwiZmQgaXMgbm90IGEgZnVzZSBkZXZpY2VcIik7XG4gXHQvKlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MTAuODk2Mzc2MzU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwOTc0NzQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgdW5kZXJzdGFuZCBpdDpcblxuKipBbmFseXppbmcgYSBGVVNFIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgZnMvZnVzZS9pbm9kZS5jYCwgcmlnaHQ/IFRoZSBrZXkgcGFydCBzZWVtcyB0byBiZSBhIGNoYW5nZSB3aXRoaW4gYGZ1c2Vfb3B0X2ZkYC4gVGhpcyBmdW5jdGlvbiwgSSBnYXRoZXIsIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgJ2ZkJyBtb3VudCBvcHRpb24gd2l0aGluIHRoZSBGVVNFIGZpbGVzeXN0ZW0uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGl0J3MgcmV0dXJuaW5nIGFuIGVycm9yIGlmIGBjdHgtXHUwMDNlZnVkYCBpcyBhbHJlYWR5IGFzc2lnbmVkIGEgdmFsdWUuIEVmZmVjdGl2ZWx5LCB3ZSdyZSBtYWtpbmcgc3VyZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzbid0IGJlaW5nIG92ZXJ3cml0dGVuIG9yIHJlZGVmaW5lZC4gSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBmcy9mdXNlL2lub2RlLmNgIG5vdyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBgZnVzZV9vcHRfZmRgIGZ1bmN0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGJldHRlci4gSSB3YW50IHRvIHNlZSB3aGF0ICdjdHgnIGlzIGFuZCB1bmRlcnN0YW5kIHRoZSBsb2dpYyBhcm91bmQgYGN0eC1cdTAwM2VmdWRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTg0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OToxNC4xMDYxMjU1NTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ3OTc2MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9vcHRfZmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvaW5vZGUuYz03NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19wYXJhbWV0ZXJfc3BlYyBmdXNlX2ZzX3BhcmFtZXRlcnNbXSA9IHtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy03ODktXFxuZnMvZnVzZS9pbm9kZS5jOjc5MDpzdGF0aWMgaW50IGZ1c2Vfb3B0X2ZkKHN0cnVjdCBmc19jb250ZXh0ICpmc2MsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Z1c2UvaW5vZGUuYy03OTEte1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jPTgxMT1zdGF0aWMgaW50IGZ1c2VfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZzYywgc3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtODUwLVxcdFxcdGlmIChwYXJhbS1cXHUwMDNldHlwZSA9PSBmc192YWx1ZV9pc19maWxlKSB7XFxuZnMvZnVzZS9pbm9kZS5jOjg1MTpcXHRcXHRcXHRyZXR1cm4gZnVzZV9vcHRfZmQoZnNjLCBwYXJhbS1cXHUwMDNlZmlsZSk7XFxuZnMvZnVzZS9pbm9kZS5jLTg1Mi1cXHRcXHR9IGVsc2Uge1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTg1Ni1cXG5mcy9mdXNlL2lub2RlLmM6ODU3OlxcdFxcdFxcdHJldHVybiBmdXNlX29wdF9mZChmc2MsIGZpbGUpO1xcbmZzL2Z1c2UvaW5vZGUuYy04NTgtXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OToxNC4xNTA5Mjg2MzVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjExMTMzMjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZVU0UgTW91bnQgT3B0aW9uIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2F1c2luZyBhIGZ1bmN0aW9uYWwgc2hpZnQgaW4gaG93IEZVU0UgbW91bnQgb3B0aW9ucyBhcmUgcGFyc2VkLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGUgYGZkYCBvcHRpb24uIEl0IGxvb2tzIGxpa2UgaXQgcHJldmVudHMgdGhlIHVzZSBvZiBtdWx0aXBsZSBgZmRgIG9wdGlvbnMgZHVyaW5nIGEgRlVTRSBtb3VudC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIHRoZSBraW5kIG9mIGNoYW5nZSB0aGF0ICpkZW1hbmRzKiBmdXp6aW5nLiBXZSBuZWVkIHRvIGV4cGxvcmUgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIHVwZGF0ZWQgcGFyc2luZyBsb2dpYy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBgZnVzZV9vcHRfZmRgIGFuZCBgZnVzZV9wYXJzZV9wYXJhbWAgc3ltYm9scyDigJMgdGhvc2UgYXJlIGNsZWFybHkgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0byBzY3J1dGluaXplLlxuXG5CZWZvcmUgZGl2aW5nIGludG8gZnV6emluZyBzdHJhdGVnaWVzLCB0aG91Z2gsIEkgc2hvdWxkIGRvdWJsZS1jaGVjay4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgRlVTRV9GU2AgaXMgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIGluIG15IHRlc3RpbmcgZW52aXJvbm1lbnQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgZXZlbiByZWxldmFudCB0byB0aGUgY3VycmVudCBidWlsZC4gTWFraW5nIHN1cmUgdGhlIGNvcnJlY3QgZW52aXJvbm1lbnQgaXMgaW4gcGxhY2UgaXMga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTYwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MTcuMzYyMDY0NjkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjczNDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGVVNFX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9mdXNlL0tjb25maWc6Mjpjb25maWcgRlVTRV9GU1xcbmZzL2Z1c2UvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MTcuNDA4MzUzOTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MDE1ODkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgRlVTRSBDb25maWd1cmF0aW9uIENoYW5nZSoqXG5cblJpZ2h0LCBgRlVTRV9GU2AgaXMgZGVmaW5pdGVseSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gYmUgbG9va2luZyBhdC4gVGhlIGNoYW5nZSBpcyBpbiBgZnVzZV9vcHRfZmRgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBpcyBpbXBhY3RpbmcgdGhlIHN5c3RlbS4gRmlyc3QsIGlzIGBmdXNlX29wdF9mZGAgc3RhdGljPyBZZXAsIGl0IGlzLiBUaGF0IGxpbWl0cyB0aGUgc2NvcGUgb2Ygd2hlcmUgaXQgY291bGQgYmUgbW9kaWZpZWQuIFNvLCBpZiB0aGUgaXNzdWUgaXMgZGVlcGVyLCB0aGUgZnVuY3Rpb24gdGhhdCBtYW5pcHVsYXRlcyBpdCBoYXMgdG8gYmUgdGhlIGN1bHByaXQuIEknbSB0aGlua2luZyBJIG1pZ2h0IGdldCBtb3JlIGluZm9ybWF0aW9uIGZyb20gYGZ1c2VfcGFyc2VfcGFyYW1gIG9yIGBmdXNlX2ZpbGxfc3VwZXJgLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgYGZ1c2VfcGFyc2VfcGFyYW1gIGFuZCBzZWUgd2hhdCBpdCBpcyBkb2luZyB3aXRoIHRoaXMgZmlsZSBkZXNjcmlwdG9yLiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OToyMC44NDg1MTU2MTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwNjc2MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9wYXJzZV9wYXJhbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9pbm9kZS5jPTc5MD1zdGF0aWMgaW50IGZ1c2Vfb3B0X2ZkKHN0cnVjdCBmc19jb250ZXh0ICpmc2MsIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTgxMC1cXG5mcy9mdXNlL2lub2RlLmM6ODExOnN0YXRpYyBpbnQgZnVzZV9wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSlcXG5mcy9mdXNlL2lub2RlLmMtODEyLXtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0xOTEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfY29udGV4dF9vcGVyYXRpb25zIGZ1c2VfY29udGV4dF9vcHMgPSB7XFxuZnMvZnVzZS9pbm9kZS5jLTE5MTEtXFx0LmZyZWVcXHRcXHQ9IGZ1c2VfZnJlZV9mc2MsXFxuZnMvZnVzZS9pbm9kZS5jOjE5MTI6XFx0LnBhcnNlX3BhcmFtXFx0PSBmdXNlX3BhcnNlX3BhcmFtLFxcbmZzL2Z1c2UvaW5vZGUuYy0xOTEzLVxcdC5yZWNvbmZpZ3VyZVxcdD0gZnVzZV9yZWNvbmZpZ3VyZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MjAuODk1NTg4NzMyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzMzc2ODc1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBzZWxmLXJlZmxlY3Rpb246XG5cbioqQ29uc2lkZXJpbmcgU3RhdGljIEZ1bmN0aW9uIFNjb3BlIGluIEZVU0UgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gSSdtIGxvb2tpbmcgYXQgYGZ1c2VfcGFyc2VfcGFyYW1gIGFuZCBub3RpY2luZywgYXMgYSBtYXR0ZXIgb2YgY291cnNlLCB0aGF0IGl0J3MgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgYSBicm9hZGVyIGNvbnNpZGVyYXRpb24uIE15IG1pbmQgbmF0dXJhbGx5IGp1bXBzIHRvIHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgRlVTRSBpbml0aWFsaXphdGlvbiBmbG93LlxuXG5TcGVjaWZpY2FsbHksIEknbSBub3cgd29uZGVyaW5nIGFib3V0IGBmdXNlX2luaXRfZnNfY29udGV4dGAuIElzICp0aGF0KiBmdW5jdGlvbiBhbHNvIGRlY2xhcmVkIGBzdGF0aWNgPyBJZiBzbywgd2h5PyBJZiBub3QsIHdoeSBub3Q/IEFyZSB0aGVyZSBpbXBsaWNhdGlvbnMgZm9yIG1vZHVsYXJpdHksIHJldXNhYmlsaXR5LCBvciBwb3RlbnRpYWwgZm9yIGZ1dHVyZSBleHRlbnNpb25zIHRoYXQgd2FycmFudCB0aGUgc2NvcGUgY2hvaWNlIGluIGVhY2ggb2YgdGhlc2UgY2FzZXM/IERvZXMgYGZ1c2VfaW5pdF9mc19jb250ZXh0YCBuZWVkIHRvIGJlIGFjY2Vzc2libGUgZnJvbSBvdXRzaWRlIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQsIG9yIHdvdWxkIGl0IGJlIGJldHRlciBzZXJ2ZWQgYXMgaW50ZXJuYWw/IEknbGwgcHJvYmFibHkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhhdCB0byBlbnN1cmUgaXTigJlzIG5vdCBsZWFraW5nIHVubmVjZXNzYXJ5IGRldGFpbHMgb3IgY3JlYXRpbmcgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBJdCdzIGltcG9ydGFudCB0byBrZWVwIHRoZSBzY29wZSBhcyBsaW1pdGVkIGFzIHBvc3NpYmxlLiBJ4oCZbGwgbWFrZSBzdXJlIHRoZXJlJ3MgYSByYXRpb25hbGUgZm9yIHdoYXRldmVyIHRoZSBpbXBsZW1lbnRhdGlvbiBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQyNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA0OjU5OjI0LjEyOTM1OTI5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc3Mjk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmdXNlX2luaXRfZnNfY29udGV4dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9pbm9kZS5jPTE3MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZnVzZV9jb250ZXh0X3N1Ym1vdW50X29wcyA9IHtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNzE1LVxcbmZzL2Z1c2UvaW5vZGUuYzoxNzE2OmludCBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjKVxcbmZzL2Z1c2UvaW5vZGUuYy0xNzE3LXtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNzIwLX1cXG5mcy9mdXNlL2lub2RlLmM6MTcyMTpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudCk7XFxuZnMvZnVzZS9pbm9kZS5jLTE3MjItXFxuLS1cXG5mcy9mdXNlL2lub2RlLmM9MTkxMD1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBmdXNlX2NvbnRleHRfb3BzID0ge1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTE5MTktICovXFxuZnMvZnVzZS9pbm9kZS5jOjE5MjA6c3RhdGljIGludCBmdXNlX2luaXRfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjKVxcbmZzL2Z1c2UvaW5vZGUuYy0xOTIxLXtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0yMDA0PXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBmdXNlX2ZzX3R5cGUgPSB7XFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMjAwNy1cXHQuZnNfZmxhZ3NcXHQ9IEZTX0hBU19TVUJUWVBFIHwgRlNfVVNFUk5TX01PVU5UIHwgRlNfQUxMT1dfSURNQVAsXFxuZnMvZnVzZS9pbm9kZS5jOjIwMDg6XFx0LmluaXRfZnNfY29udGV4dCA9IGZ1c2VfaW5pdF9mc19jb250ZXh0LFxcbmZzL2Z1c2UvaW5vZGUuYy0yMDA5LVxcdC5wYXJhbWV0ZXJzXFx0PSBmdXNlX2ZzX3BhcmFtZXRlcnMsXFxuLS1cXG5mcy9mdXNlL2lub2RlLmM9MjAyMj1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZnVzZWJsa19mc190eXBlID0ge1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTIwMjQtXFx0Lm5hbWVcXHRcXHQ9IFxcXCJmdXNlYmxrXFxcIixcXG5mcy9mdXNlL2lub2RlLmM6MjAyNTpcXHQuaW5pdF9mc19jb250ZXh0ID0gZnVzZV9pbml0X2ZzX2NvbnRleHQsXFxuZnMvZnVzZS9pbm9kZS5jLTIwMjYtXFx0LnBhcmFtZXRlcnNcXHQ9IGZ1c2VfZnNfcGFyYW1ldGVycyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MjQuMTc1MTM4NzM5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDM3MjI3MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6XG5cbioqSW5pdGlhbCBDb25jZXJucyBSZWdhcmRpbmcgRlVTRSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgRlVTRSBpbml0aWFsaXphdGlvbiBjb2RlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2h5IGlzIGBmdXNlX2luaXRfZnNfY29udGV4dGAgYSBzdGF0aWMgZnVuY3Rpb24/IFRoYXQgY291bGQgY3JlYXRlIHNvbWUgc2NvcGUgbGltaXRhdGlvbnMgb3IgbWFrZSBpdCBoYXJkZXIgdG8gcmV1c2UgaW4gc2xpZ2h0bHkgZGlmZmVyZW50IGNvbnRleHRzLiBJdCdzIGEgZGVzaWduIGNob2ljZSBJJ2Qgd2FudCB0byB1bmRlcnN0YW5kIGJldHRlci4gSXMgdGhlcmUgYSBzcGVjaWZpYyByZWFzb24gdG8gbGltaXQgaXRzIHZpc2liaWxpdHkgbGlrZSB0aGF0P1xuXG5UaGVuIG15IG1pbmQganVtcHMgdG8gYGZ1c2VfZmlsbF9zdXBlcmAuIFRoYXQncyB0aGUgb3RoZXIgY3J1Y2lhbCBwaWVjZSBpbiB0aGUgZmlsZXN5c3RlbSBtb3VudCBzZXF1ZW5jZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGNvbnNpZGVyIGl0cyByZWxhdGlvbnNoaXAgdG8gYGZ1c2VfaW5pdF9mc19jb250ZXh0YCwgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBBcmUgdGhlcmUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQ/IEFyZSB0aGVzZSBmdW5jdGlvbnMgcHJvcGVybHkgc3luY2hyb25pemVkIHdpdGggdGhlIG1vdW50IHByb2Nlc3M/IFdoYXQgYWJvdXQgcG90ZW50aWFsIGVycm9yIGhhbmRsaW5nIHNjZW5hcmlvcz8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHksIHN0ZXAgYnkgc3RlcC4gSSB3YW50IHRvIGNoZWNrIGZvciBhbnkgaGlkZGVuIHByb2JsZW1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MjcuMjE4ODYzMzQyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDczNDk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmdXNlX2ZpbGxfc3VwZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvaW5vZGUuYz0xNjAxPXN0YXRpYyB2b2lkIGZ1c2Vfc2JfZGVmYXVsdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNjE2LVxcbmZzL2Z1c2UvaW5vZGUuYzoxNjE3OnN0YXRpYyBpbnQgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuZnMvZnVzZS9pbm9kZS5jLTE2MTgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBmdXNlX2lub2RlICpwYXJlbnRfZmkpXFxuLS1cXG5mcy9mdXNlL2lub2RlLmM9MTY3NT1zdGF0aWMgaW50IGZ1c2VfZ2V0X3RyZWVfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNjk1LVxcdC8qIEluaXRpYWxpemUgc3VwZXJibG9jaywgbWFraW5nIEBtcF9maSBpdHMgcm9vdCAqL1xcbmZzL2Z1c2UvaW5vZGUuYzoxNjk2OlxcdGVyciA9IGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudChzYiwgbXBfZmkpO1xcbmZzL2Z1c2UvaW5vZGUuYy0xNjk3LVxcdGlmIChlcnIpIHtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0xNzIxPUVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50KTtcXG5mcy9mdXNlL2lub2RlLmMtMTcyMi1cXG5mcy9mdXNlL2lub2RlLmM6MTcyMzppbnQgZnVzZV9maWxsX3N1cGVyX2NvbW1vbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnVzZV9mc19jb250ZXh0ICpjdHgpXFxuZnMvZnVzZS9pbm9kZS5jLTE3MjQte1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTE4MTYtfVxcbmZzL2Z1c2UvaW5vZGUuYzoxODE3OkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfZmlsbF9zdXBlcl9jb21tb24pO1xcbmZzL2Z1c2UvaW5vZGUuYy0xODE4LVxcbmZzL2Z1c2UvaW5vZGUuYzoxODE5OnN0YXRpYyBpbnQgZnVzZV9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXFxuZnMvZnVzZS9pbm9kZS5jLTE4MjAte1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTE4MjgtXFxuZnMvZnVzZS9pbm9kZS5jOjE4Mjk6XFx0ZXJyID0gZnVzZV9maWxsX3N1cGVyX2NvbW1vbihzYiwgY3R4KTtcXG5mcy9mdXNlL2lub2RlLmMtMTgzMC1cXHRpZiAoZXJyKVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jPTE4NTI9c3RhdGljIGludCBmdXNlX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTg3OS1cXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQkxPQ0spIFxcdTAwMjZcXHUwMDI2IGN0eC1cXHUwMDNlaXNfYmRldikge1xcbmZzL2Z1c2UvaW5vZGUuYzoxODgwOlxcdFxcdGVyciA9IGdldF90cmVlX2JkZXYoZnNjLCBmdXNlX2ZpbGxfc3VwZXIpO1xcbmZzL2Z1c2UvaW5vZGUuYy0xODgxLVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTE5MDEtXFx0fSBlbHNlIHtcXG5mcy9mdXNlL2lub2RlLmM6MTkwMjpcXHRcXHRlcnIgPSBnZXRfdHJlZV9ub2Rldihmc2MsIGZ1c2VfZmlsbF9zdXBlcik7XFxuZnMvZnVzZS9pbm9kZS5jLTE5MDMtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OToyNy4yNjM2MDI1MzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA0NDU4MTUyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRnVzZSBGaWxlc3lzdGVtIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IEZVU0UgZmlsZXN5c3RlbXMgYXJlIGluaXRpYWxpemVkLCBzcGVjaWZpY2FsbHkgaG93IG1vdW50IG9wdGlvbnMgYXJlIGhhbmRsZWQuIEkgc2VlIHRoYXQgYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gIGlzIGV4cG9ydGVkLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBCdXQgd2FpdCwgYGZ1c2Vfb3B0X2ZkYCBpcyBhY3R1YWxseSBjYWxsZWQgZHVyaW5nIG1vdW50IG9wdGlvbiBwYXJzaW5nLCB3aGljaCBpcyB0aGUgZG9tYWluIG9mIGBmdXNlX3BhcnNlX3BhcmFtYC4gVGhpcyBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIHJvYWRibG9jay5cblxuU28sIHNpbmNlIGl0J3Mgc3RhdGljLCBjYW4gSSBieXBhc3MgaXQgZW50aXJlbHkgYW5kIHVzZSBzb21ldGhpbmcgbGlrZSBgZnVzZV9maWxsX3N1cGVyX2NvbW1vbmAgZGlyZWN0bHksIG9yIHBlcmhhcHMgYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCBvciBgZnVzZV9nZXRfdHJlZWA/IEhtbSwgbm8sIGhvbGQgb24uLi4gdGhlIG1vdW50IG9wdGlvbiBwYXJzaW5nIGlzbid0IGhhbmRsZWQgZGlyZWN0bHkgYnkgYGZ1c2VfcGFyc2VfcGFyYW1gLiBJdCdzIGRvbmUgdGhyb3VnaCBgdmZzX3BhcnNlX2ZzX3BhcmFtYCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2hpY2ggdGhlbiBjYWxscyBgZnNjLVx1MDAzZW9wcy1cdTAwM2VwYXJzZV9wYXJhbWAuIFRoYXQncyB0aGUga2V5LlxuXG5Ob3csIHdoZXJlIGlzIHRoZSBub24tc3RhdGljIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGVzZSBvcGVyYXRpb25zPyBJdCBsb29rcyBsaWtlIGBmdXNlX2luaXRfZnNfY29udGV4dGAgaXMgdGhlIHJlbGV2YW50IGZ1bmN0aW9uLCBidXQgaXQncyAqYWxzbyogbWFya2VkIHN0YXRpYyBhbmQgaXMgcmVnaXN0ZXJlZCBpbiBgZnVzZV9mc190eXBlYC4gQWxyaWdodCwgSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNvbm5lY3Rpb24gaXMuIElzIHRoZXJlIGFueXRoaW5nIGluIGBmcy9mdXNlL2lub2RlLmNgIHRoYXQncyBleHBvcnRlZCBhbmQgcmVsYXRlZD8gTGV0IG1lIGNoZWNrLlxuXG5JIHNlZSBgZnVzZV9maWxsX3N1cGVyX2NvbW1vbmAgaXMgZXhwb3J0ZWQsIHRoYXQncyBub3Qgd2hhdCBJIG5lZWQuIGBmdXNlX21vdW50YD8gTm8sIHRoYXQncyBub3Qgd2hhdCBJJ20gYWZ0ZXIsIGBmdXNlX2dldF90cmVlYCBpcyBhbHNvIHN0YXRpYy4gTGV0J3MgZGlnIGRlZXBlci4gSSdtIGdvaW5nIHRvIHNjYW4gdGhyb3VnaCBgZnMvZnVzZS9pbm9kZS5jYCBmb3IgYW55IGV4cG9ydGVkIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIGJlIHJlbGV2YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTg5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA0OjU5OjMyLjMwODE4NjkzOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0NDMyNTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvaW5vZGUuYz05NTk9dm9pZCBmdXNlX2Nvbm5faW5pdChzdHJ1Y3QgZnVzZV9jb25uICpmYywgc3RydWN0IGZ1c2VfbW91bnQgKmZtLFxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTk4OS19XFxuZnMvZnVzZS9pbm9kZS5jOjk5MDpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2Nvbm5faW5pdCk7XFxuZnMvZnVzZS9pbm9kZS5jLTk5MS1cXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0xMDAzPXZvaWQgZnVzZV9jb25uX3B1dChzdHJ1Y3QgZnVzZV9jb25uICpmYylcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xMDIzLX1cXG5mcy9mdXNlL2lub2RlLmM6MTAyNDpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2Nvbm5fcHV0KTtcXG5mcy9mdXNlL2lub2RlLmMtMTAyNS1cXG5mcy9mdXNlL2lub2RlLmM9MTAyNj1zdHJ1Y3QgZnVzZV9jb25uICpmdXNlX2Nvbm5fZ2V0KHN0cnVjdCBmdXNlX2Nvbm4gKmZjKVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTEwMzAtfVxcbmZzL2Z1c2UvaW5vZGUuYzoxMDMxOkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfY29ubl9nZXQpO1xcbmZzL2Z1c2UvaW5vZGUuYy0xMDMyLVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jPTE1MDc9aW50IGZ1c2Vfc2VuZF9pbml0KHN0cnVjdCBmdXNlX21vdW50ICpmbSlcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNTI4LX1cXG5mcy9mdXNlL2lub2RlLmM6MTUyOTpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX3NlbmRfaW5pdCk7XFxuZnMvZnVzZS9pbm9kZS5jLTE1MzAtXFxuZnMvZnVzZS9pbm9kZS5jPTE1MzE9dm9pZCBmdXNlX2ZyZWVfY29ubihzdHJ1Y3QgZnVzZV9jb25uICpmYylcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNTM0LX1cXG5mcy9mdXNlL2lub2RlLmM6MTUzNTpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2ZyZWVfY29ubik7XFxuZnMvZnVzZS9pbm9kZS5jLTE1MzYtXFxuLS1cXG5mcy9mdXNlL2lub2RlLmM9MTcxNj1pbnQgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNzIwLX1cXG5mcy9mdXNlL2lub2RlLmM6MTcyMTpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudCk7XFxuZnMvZnVzZS9pbm9kZS5jLTE3MjItXFxuZnMvZnVzZS9pbm9kZS5jPTE3MjM9aW50IGZ1c2VfZmlsbF9zdXBlcl9jb21tb24oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZ1c2VfZnNfY29udGV4dCAqY3R4KVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTE4MTYtfVxcbmZzL2Z1c2UvaW5vZGUuYzoxODE3OkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfZmlsbF9zdXBlcl9jb21tb24pO1xcbmZzL2Z1c2UvaW5vZGUuYy0xODE4LVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jPTE5NDQ9Ym9vbCBmdXNlX21vdW50X3JlbW92ZShzdHJ1Y3QgZnVzZV9tb3VudCAqZm0pXFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTk1Ni19XFxuZnMvZnVzZS9pbm9kZS5jOjE5NTc6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9tb3VudF9yZW1vdmUpO1xcbmZzL2Z1c2UvaW5vZGUuYy0xOTU4LVxcbmZzL2Z1c2UvaW5vZGUuYz0xOTU5PXZvaWQgZnVzZV9jb25uX2Rlc3Ryb3koc3RydWN0IGZ1c2VfbW91bnQgKmZtKVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTE5NzUtfVxcbmZzL2Z1c2UvaW5vZGUuYzoxOTc2OkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfY29ubl9kZXN0cm95KTtcXG5mcy9mdXNlL2lub2RlLmMtMTk3Ny1cXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0xOTkwPXZvaWQgZnVzZV9tb3VudF9kZXN0cm95KHN0cnVjdCBmdXNlX21vdW50ICpmbSlcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xOTk0LX1cXG5mcy9mdXNlL2lub2RlLmM6MTk5NTpFWFBPUlRfU1lNQk9MKGZ1c2VfbW91bnRfZGVzdHJveSk7XFxuZnMvZnVzZS9pbm9kZS5jLTE5OTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA0OjU5OjMyLjYwMjYyNTQwOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTQxMzQyNDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZVU0UgS2VybmVsIE1vZHVsZSBDb25maWd1cmF0aW9uIE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB3ZSBjYW4gYmVzdCBjb25maWd1cmUgdGhlIEZVU0Uga2VybmVsIG1vZHVsZSBmb3IgZnV6emluZy4gYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gIHNlZW1zIGxpa2UgYSBzdHJvbmcgY29udGVuZGVyIOKAkyBpdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgZGVmaW5pdGVseS4gSSB3YXMgaW5pdGlhbGx5IGFsc28gY29uc2lkZXJpbmcgYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCwgYW5kIGl0IG1heSBzdGlsbCBiZSByZWxldmFudCwgYnV0IHJpZ2h0IG5vdyBJIHRoaW5rIHdlIGNhbiBnZXQgYXdheSB3aXRoIGp1c3QgZm9jdXNpbmcgb24gYGZ1c2VfZmlsbF9zdXBlcl9jb21tb25gLlxuXG5JIG5lZWRlZCB0byBxdWlja2x5IGNoZWNrIHdoZXJlIHRoZSBtb3VudCBvcHRpb24gcGFyc2luZyBoYXBwZW5zIHJlbGF0aXZlIHRvIGBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uYC4gSG1tLCB0aGUgcGFyc2luZyBoYXBwZW5zICpiZWZvcmUqIHRoYXQgZnVuY3Rpb24uIE9rYXksIHNvIHRoYXQgY2hhbmdlcyB0aGluZ3MgYSBsaXR0bGUuIFdhaXQsIEknbSBzZWNvbmQtZ3Vlc3NpbmcgbXlzZWxmOyBgZnVzZV9maWxsX3N1cGVyX2NvbW1vbmAgaXMgc3RpbGwgcHJvYmFibHkgdGhlIHByaW1hcnkgZnVuY3Rpb24gdG8gdGFyZ2V0LlxuXG5UbyBiZSBzdXJlLCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBmdXNlX29wdF9mZGAgaXMgcmVhY2hhYmxlIGZyb20gYGZ1c2VfcGFyc2VfcGFyYW1gIHNpbmNlIEkga25vdyB0aGF0IG9wdGlvbnMgcGFyc2luZyBpbmZsdWVuY2VzIHRoZSBzdXBlciBibG9jay4gWWVzLCBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGNvbm5lY3Rpb24uIEdvb2QuIFRoZSBrZXkgY2hhbmdlIGlzIGluIGBmdXNlX29wdF9mZGAgd2hpY2gsIGFzIGV4cGVjdGVkLCBpcyBjYWxsZWQgYnkgYGZ1c2VfcGFyc2VfcGFyYW1gLiBJJ3ZlIGNvbmZpcm1lZCBldmVyeXRoaW5nIHRvIHRoaXMgcG9pbnQuXG5cblRoZSBjb25maWcgSSdtIHRhcmdldGluZyBpcyBgRlVTRV9GU2AuIEknbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAgYmVjYXVzZSB0aGlzIGxvb2tzIGxpa2UgYSBmcnVpdGZ1bCBhdmVudWUgZm9yIGZpbmRpbmcgaXNzdWVzLiBXZSdyZSBnb2luZyB0byBmb2N1cyBvbiBgZnVzZV9maWxsX3N1cGVyX2NvbW1vbmAgYW5kIHdlIGFyZSBlbmFibGluZyB0aGUgYEZVU0VfRlNgIGNvbmZpZyBvcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MzYsIk91dHB1dFRva2VucyI6MTAxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA0OjU5OjM3Ljc0Mzk3MDM5M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1Nzc5MjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9maWxsX3N1cGVyX2NvbW1vblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiBgZnVzZV9vcHRfZmRgIHRvIHByZXZlbnQgc3BlY2lmeWluZyBtdWx0aXBsZSBgZmRgIG9wdGlvbnMgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbW91bnQgb3B0aW9uIHBhcnNpbmcgbG9naWMgb2YgdGhlIEZVU0UgZmlsZXN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbW91bnQgc3lzdGVtIGNhbGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZmlsbF9zdXBlcl9jb21tb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IHNwZWNpZnlpbmcgbXVsdGlwbGUgYGZkYCBvcHRpb25zIGR1cmluZyBGVVNFIG1vdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1vdW50IG9wdGlvbiBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBGVVNFIGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIG1vdW50IHN5c3RlbSBjYWxsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OTozNy44Mjk3NTc1OTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NjU1NTY4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OTozNy44MzAyOTMwMTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Nzg2NTAxNjM2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBmdXNlX29wdF9mZGAgdG8gcHJldmVudCBtdWx0aXBsZSBmaWxlIGRlc2NyaXB0b3JzIGZyb20gYmVpbmcgc3BlY2lmaWVkIGR1cmluZyBGVVNFIG1vdW50LiBUaGlzIGZpeGVzIGEgbG9naWMgYnVnIHRoYXQgY291bGQgbGVhZCB0byBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzICh3aGljaCBhcmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtNRU1MRUFLKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTA1OGVkZDY4MjU1ODdjYzBmODYzYTk2ZjBkMTc2MzdlYzg0Y2NiNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA0OjU5OjA5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9pbm9kZS5jIGIvZnMvZnVzZS9pbm9kZS5jXG5pbmRleCBkOTc1MDczYzYwMjk2Li5jOTUxOGI3ZjU2MDVhIDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9pbm9kZS5jXG4rKysgYi9mcy9mdXNlL2lub2RlLmNcbkBAIC03OTEsNiArNzkxLDkgQEAgc3RhdGljIGludCBmdXNlX29wdF9mZChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB7XG4gXHRzdHJ1Y3QgZnVzZV9mc19jb250ZXh0ICpjdHggPSBmc2MtXHUwMDNlZnNfcHJpdmF0ZTtcbiBcbitcdGlmIChjdHgtXHUwMDNlZnVkKVxuK1x0XHRyZXR1cm4gaW52YWxmYyhmc2MsIFwiTXVsdGlwbGUgZmQgc3BlY2lmaWVkXCIpO1xuK1xuIFx0aWYgKGZpbGUtXHUwMDNlZl9vcCAhPSBcdTAwMjZmdXNlX2Rldl9vcGVyYXRpb25zKVxuIFx0XHRyZXR1cm4gaW52YWxmYyhmc2MsIFwiZmQgaXMgbm90IGEgZnVzZSBkZXZpY2VcIik7XG4gXHQvKlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6MzcuODMwMjkzNzExWiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NjY1OTg5NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGVVNFIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBJdCBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gYGZ1c2Vfb3B0X2ZkYCwgc3BlY2lmaWNhbGx5IGluIGBmcy9mdXNlL2lub2RlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHRoaXMgbGluZTogYGlmIChjdHgtXHUwMDNlZnVkKSByZXR1cm4gaW52YWxmYyhmc2MsIFwiTXVsdGlwbGUgZmQgc3BlY2lmaWVkXCIpO2AuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgbG9naWMgYnVnIGZpeC4gSXQgc2VlbXMgbGlrZSB0aGUgaW50ZW50aW9uIGlzIHRvIHByZXZlbnQgdGhlIEZVU0UgbW91bnQgb3B0aW9ucyBmcm9tIGFjY2VwdGluZyBtdWx0aXBsZSBmaWxlIGRlc2NyaXB0b3JzIGJlaW5nIHNwZWNpZmllZCBzaW11bHRhbmVvdXNseS4gVGhpcyBwcm9iYWJseSBhdm9pZHMgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSDigJMgYSBtZW1vcnkgbGVhaywgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgb3Igc29tZSBzaW1pbGFyIGtpbmQgb2YgZXJyb3IgaWYgdGhlIGNvZGUgd2FzIGRlc2lnbmVkIHRvIGhhbmRsZSBvbmx5IGEgc2luZ2xlIGBmZGAgb3B0aW9uLiBJdCBkb2Vzbid0IGFwcGVhciB0byBiZSByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcywgd2hpY2ggaXMgZ29vZC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIHRoZSBpbnRlbmRlZCBiZWhhdmlvci4gSSdsbCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGZ1c2Vfb3B0X2ZkYCB3aXRoaW4gYGZzL2Z1c2UvaW5vZGUuY2AgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZS4gSSdsbCBwYXkgYXR0ZW50aW9uIHRvIGhvdyBgY3R4LVx1MDAzZWZ1ZGAgaXMgdXNlZCBhbmQgaW5pdGlhbGl6ZWQgdG8gZ2FpbiBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmaXggYW5kIGl0cyBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNDo1OTo0MS41OTY4OTY3NzZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzkwNjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1c2Vfb3B0X2ZkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvaW5vZGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2lub2RlLmM9Nzc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfcGFyYW1ldGVyX3NwZWMgZnVzZV9mc19wYXJhbWV0ZXJzW10gPSB7XFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtNzg5LVxcbmZzL2Z1c2UvaW5vZGUuYzo3OTA6c3RhdGljIGludCBmdXNlX29wdF9mZChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2lub2RlLmMtNzkxLXtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz04MTE9c3RhdGljIGludCBmdXNlX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmc2MsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jLTg1MC1cXHRcXHRpZiAocGFyYW0tXFx1MDAzZXR5cGUgPT0gZnNfdmFsdWVfaXNfZmlsZSkge1xcbmZzL2Z1c2UvaW5vZGUuYzo4NTE6XFx0XFx0XFx0cmV0dXJuIGZ1c2Vfb3B0X2ZkKGZzYywgcGFyYW0tXFx1MDAzZWZpbGUpO1xcbmZzL2Z1c2UvaW5vZGUuYy04NTItXFx0XFx0fSBlbHNlIHtcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy04NTYtXFxuZnMvZnVzZS9pbm9kZS5jOjg1NzpcXHRcXHRcXHRyZXR1cm4gZnVzZV9vcHRfZmQoZnNjLCBmaWxlKTtcXG5mcy9mdXNlL2lub2RlLmMtODU4LVxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDQ6NTk6NDEuNjQ0MjkyODc0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTA5ODk2MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXNlIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoLiBJdCBzZWVtcyB0aGUgY29yZSBpc3N1ZSBpcyBwcmV2ZW50aW5nIGBmdXNlX29wdF9mZGAgZnJvbSBiZWluZyBjYWxsZWQgcmVwZWF0ZWRseS4gVGhlIGNvbmNlcm4gaXMgdGhhdCBtdWx0aXBsZSBjYWxscyB3b3VsZCBjbG9iYmVyIHRoZSBgY3R4LVx1MDAzZWZ1ZGAgZmllbGQgb3Igc29tZXRoaW5nIHNpbWlsYXIuIEl0J3MgYSBjbGFzc2ljIGxvZ2ljIGVycm9yLCByZWFsbHksIG1vcmUgYWJvdXQgY29udHJvbCBmbG93IHRoYW4gYW55IHNvcnQgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvYmxlbS5cblxuR2l2ZW4gbXkgdW5kZXJzdGFuZGluZywgSSBkb24ndCBzZWUgYW55IHJpc2sgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGlzIHBhcnRpY3VsYXIgaW5zdGFuY2UuIEZyYW5rbHksIGlmIHdlICp3ZXJlKiBkZWFsaW5nIHdpdGggbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBkdWUgdG8gdGhlIG92ZXJ3cml0ZSwgS0FTQU4gb3IgS01FTUxFQUsgd291bGQgaGF2ZSBmbGFnZ2VkIHRob3NlIGlzc3VlcyBpbW1lZGlhdGVseS4gVGhpcyBmaXggaXMgcHJldmVudGluZyBhIHBlcmZlY3RseSB2YWxpZCB2YXJpYWJsZSBmcm9tIGJlaW5nIGluY29ycmVjdGx5IG92ZXJ3cml0dGVuLiBObyBuZWVkIHRvIGJyaW5nIEtNU0FOIGludG8gdGhlIGVxdWF0aW9uLiBJdCdzIHNpbXBseSBub3QgYXBwbGljYWJsZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjU3LCJPdXRwdXRUb2tlbnMiOjEwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA0OjU5OjQ1LjY5NTI4NTUzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IG11bHRpcGxlIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSBiZWluZyBzcGVjaWZpZWQgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgZml4ZXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBsZWFkIHRvIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgKHdoaWNoIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3IgS01FTUxFQUspLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGZ1c2Vfb3B0X2ZkYCB0byBwcmV2ZW50IG11bHRpcGxlIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSBiZWluZyBzcGVjaWZpZWQgZHVyaW5nIEZVU0UgbW91bnQuIFRoaXMgZml4ZXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBsZWFkIHRvIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgKHdoaWNoIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3IgS01FTUxFQUspLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowv9f5q[1] Phase: Succeeded StartedAt: 2026-08-11 04:59:57 +0000 UTC FinishedAt: 2026-08-11 04:59:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-11 04:59:57 +0000 UTC FinishedAt: 2026-08-11 04:59:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2] Phase: Succeeded StartedAt: 2026-08-11 04:59:57 +0000 UTC FinishedAt: 2026-08-11 08:39:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 04:59:57 +0000 UTC FinishedAt: 2026-08-11 08:39:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 04:59:57 +0000 UTC FinishedAt: 2026-08-11 05:00:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 04:59:57 +0000 UTC FinishedAt: 2026-08-11 05:00:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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-workflowv9f5q/series-workflowv9f5q-convert-artifact-3926569051/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:00:07 +0000 UTC FinishedAt: 2026-08-11 05:16:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:00:07 +0000 UTC FinishedAt: 2026-08-11 05:16:32 +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:*10ae661d-4b64-4acf-8d53-29a07480041b,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-workflowv9f5q/series-workflowv9f5q-convert-artifact-3926569051/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": "5df99dd3-18c3-4f58-8c4e-5298b02a6d90", "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-workflowv9f5q/series-workflowv9f5q-build-action-804416921/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:00:07 +0000 UTC FinishedAt: 2026-08-11 05:16:22 +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:*10ae661d-4b64-4acf-8d53-29a07480041b,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-workflowv9f5q/series-workflowv9f5q-convert-artifact-3926569051/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": "5df99dd3-18c3-4f58-8c4e-5298b02a6d90", "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-workflowv9f5q/series-workflowv9f5q-build-action-804416921/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:16:32 +0000 UTC FinishedAt: 2026-08-11 05:16:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:16:32 +0000 UTC FinishedAt: 2026-08-11 05:16:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:16:32 +0000 UTC FinishedAt: 2026-08-11 05:16:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:16:32 +0000 UTC FinishedAt: 2026-08-11 05:16:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-workflowv9f5q/series-workflowv9f5q-convert-artifact-1686114482/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:16:42 +0000 UTC FinishedAt: 2026-08-11 05:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:16:42 +0000 UTC FinishedAt: 2026-08-11 05:18:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5df99dd3-18c3-4f58-8c4e-5298b02a6d90,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-workflowv9f5q/series-workflowv9f5q-build-action-804416921/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-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:18:41 +0000 UTC FinishedAt: 2026-08-11 05:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:18:41 +0000 UTC FinishedAt: 2026-08-11 05:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:18:41 +0000 UTC FinishedAt: 2026-08-11 05:34:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:18:41 +0000 UTC FinishedAt: 2026-08-11 05:34:45 +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:*10ae661d-4b64-4acf-8d53-29a07480041b,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-workflowv9f5q/series-workflowv9f5q-convert-artifact-1686114482/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": "905bd459-9165-4f02-a2bf-7bde2dc6aa01", "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-workflowv9f5q/series-workflowv9f5q-build-action-2327642694/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:18:41 +0000 UTC FinishedAt: 2026-08-11 05:34:35 +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:*10ae661d-4b64-4acf-8d53-29a07480041b,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-workflowv9f5q/series-workflowv9f5q-convert-artifact-1686114482/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": "905bd459-9165-4f02-a2bf-7bde2dc6aa01", "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-workflowv9f5q/series-workflowv9f5q-build-action-2327642694/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:34:45 +0000 UTC FinishedAt: 2026-08-11 05:34:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:34:45 +0000 UTC FinishedAt: 2026-08-11 05:34:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:34:45 +0000 UTC FinishedAt: 2026-08-11 05:36:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:34:45 +0000 UTC FinishedAt: 2026-08-11 05:36:34 +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:*905bd459-9165-4f02-a2bf-7bde2dc6aa01,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-workflowv9f5q/series-workflowv9f5q-build-action-2327642694/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-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:36:44 +0000 UTC FinishedAt: 2026-08-11 08:39:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:36:44 +0000 UTC FinishedAt: 2026-08-11 08:39:15 +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":["fuse_fill_super_common"],"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:*5df99dd3-18c3-4f58-8c4e-5298b02a6d90,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*905bd459-9165-4f02-a2bf-7bde2dc6aa01,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-workflowv9f5q/series-workflowv9f5q-build-action-804416921/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-workflowv9f5q/series-workflowv9f5q-build-action-2327642694/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:36:44 +0000 UTC FinishedAt: 2026-08-11 05:36:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:36:44 +0000 UTC FinishedAt: 2026-08-11 05:36:48 +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":["fuse_fill_super_common"],"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-workflowv9f5q/series-workflowv9f5q-convert-artifact-2787042823/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:36:44 +0000 UTC FinishedAt: 2026-08-11 05:36:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:36:44 +0000 UTC FinishedAt: 2026-08-11 05:36:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:36:44 +0000 UTC FinishedAt: 2026-08-11 05:36:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:36:54 +0000 UTC FinishedAt: 2026-08-11 08:39:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9f5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_fill_super_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"6eba0032-ce29-4eb9-8e0c-58dff5787c1c","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-11 05:36:54 +0000 UTC FinishedAt: 2026-08-11 08:39:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5df99dd3-18c3-4f58-8c4e-5298b02a6d90,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*905bd459-9165-4f02-a2bf-7bde2dc6aa01,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-workflowv9f5q/series-workflowv9f5q-build-action-804416921/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-workflowv9f5q/series-workflowv9f5q-build-action-2327642694/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-workflowv9f5q/series-workflowv9f5q-convert-artifact-2787042823/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,}